diff --git a/README.md b/README.md index 2da62d7278d..67ce1113885 100644 --- a/README.md +++ b/README.md @@ -45,3 +45,41 @@ The name of each rpc is `{CHAIN-NAME}_RPC`, and the name we use for each chain c ## Adapter rules - Never add extra npm packages, if you need a chain-level package for your chain, ask us, and we'll consider it, but we can't accept any npm package that is project-specific + +## Pegged Asset Adapters + +This repository contains example pegged asset adapters for reference. These adapters are meant for the separate [peggedassets-server](https://github.com/DefiLlama/peggedassets-server) repository. + +### chUSD Pegged Asset Adapter + +Example adapters for chUSD (Chateau's synthetic dollar) on Plasma chain are available: +- **Shorthand version**: [chusd-pegged-adapter-shorthand.ts](chusd-pegged-adapter-shorthand.ts) - Recommended, uses helper functions +- **Full version**: [chusd-pegged-adapter.ts](chusd-pegged-adapter.ts) - Vanilla implementation with explicit code + +**Contract Details:** +- Chain: Plasma (chainId: 9745) +- chUSD Contract: `0x22222215d4edc5510d23d0886133e7ece7f5fdc1` +- schUSD Contract: `0x888888bAb58a7Bd3068110749bC7b63B62Ce874d` +- Peg Type: `peggedUSD` +- Decimals: 18 + +**Pyth Oracle Price Feeds:** +- chUSD/USDT: `0x73303664bd3a81bf8ef7508a4b50ca2bc5839a9ce78e19ee6f076e12374c1e5f` (Crypto.NAV.CHUSD/USDT0) +- schUSD/chUSD: `0xdf8468e16ad185361f8841a80906984425a48e8fc3b2cd8750755f705119dc65` (Crypto.SCHUSD/CHUSD.RR) + +To use these adapters in peggedassets-server: +1. Create folder `src/adapters/peggedAssets/chusd/` +2. Copy adapter content to `src/adapters/peggedAssets/chusd/index.ts` +3. Import and export in `src/adapters/peggedAssets/index.ts` +4. Test with: `npx ts-node test chusd/index peggedUSD` + +### schUSD Yield Adapter + +Example yield adapter for schUSD (Chateau's ERC-4626 yield-bearing vault): [schusd-yield-adapter.js](schusd-yield-adapter.js) + +To use in yield-server: +1. Fork [yield-server](https://github.com/DefiLlama/yield-server) +2. Create `src/adaptors/chateau/index.js` +3. Copy adapter content +4. Test with: `npm run test --adapter=chateau` +5. Submit PR diff --git a/projects/01/index.js b/projects/01/index.js deleted file mode 100644 index d51a7e9052b..00000000000 --- a/projects/01/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require('../helper/solana') - -module.exports = { - hallmarks:[ - [1667865600, "FTX collapse"] - ], - timetravel: false, - solana: { - tvl: sumTokensExport({ owner: 'HjHSNe8hhvZ8hKCRrhKg1DGiGPd9NYQbUjT1SQRDo4kZ' }), - }, - methodology: `To obtain the tvl we're getting the vault accounts information where user deposited collateral is stored.`, -} diff --git a/projects/0vix/index.js b/projects/0vix/index.js deleted file mode 100644 index 454a8a3d50e..00000000000 --- a/projects/0vix/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const {compoundExports2} = require('../helper/compound') - -const master0vix = "0x8849f1a0cB6b5D6076aB150546EddEe193754F1C"; -const oMATIC = "0xE554E874c9c60E45F1Debd479389C76230ae25A8"; - -module.exports = { - hallmarks: [ - ['2023-04-28', 'Protocol was hacked!'], - ['2023-12-14', 'Protocol was migrated to Keom!'], - ], - polygon: compoundExports2({ comptroller: master0vix, cether: oMATIC, }), - polygon_zkevm: { - tvl: () => ({}), - borrowed: () => ({}), - }, - deadFrom: "2023-12-14", -}; - -module.exports.polygon.borrowed = () => ({}) \ No newline at end of file diff --git a/projects/0x0dex/index.js b/projects/0x0dex/index.js deleted file mode 100644 index 5bf23d2fa36..00000000000 --- a/projects/0x0dex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); -const ETH_POOL_ADDRESS = "0x3d18AD735f949fEbD59BBfcB5864ee0157607616"; - -module.exports = { - start: '2023-05-29', // 19/05/2023 @ 07:00pm UTC - ethereum: { tvl: sumTokensExport({ owner: ETH_POOL_ADDRESS, tokens: [nullAddress]}) }, -}; \ No newline at end of file diff --git a/projects/0xDAO/index.js b/projects/0xDAO/index.js deleted file mode 100644 index a68d6856b15..00000000000 --- a/projects/0xDAO/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const oxLensAbi = { - "oxPoolsAddresses": "address[]:oxPoolsAddresses", - "oxPoolsData": "function oxPoolsData(address[] _oxPoolsAddresses) view returns (tuple(address id, address stakingAddress, uint256 stakedTotalSupply, uint256 totalSupply, tuple(address id, string symbol, bool stable, address token0Address, address token1Address, address gaugeAddress, address bribeAddress, address[] bribeTokensAddresses, address fees, uint256 totalSupply) poolData)[])" -} - -const veAbi = { - "locked": "function locked(uint256) view returns (int128 amount, uint256 end)" -} - -const partnerRewardsPoolAddress = "0xDA006E87DB89e1C5213D4bfBa771e53c91D920aC"; -const oxdV1RewardsPoolAddress = "0xDA000779663501df3C9Bc308E7cEc70cE6F04211"; -const oxSolidRewardPoolAddress = "0xDA0067ec0925eBD6D583553139587522310Bec60"; -const solidAddress = "0x888EF71766ca594DED1F0FA3AE64eD2941740A20"; -const veAddress = "0xcBd8fEa77c2452255f59743f55A3Ea9d83b3c72b"; -const oxSolidAddress = "0xDA0053F0bEfCbcaC208A3f867BB243716734D809"; - -const { standardPoolInfoAbi } = require('../helper/masterchef') -const { sumTokens2 } = require("../helper/unwrapLPs.js"); - -async function tvl(api) { - const masterchef = "0xa7821c3e9fc1bf961e280510c471031120716c3d" - const oxd = "0xc165d941481e68696f43ee6e99bfb2b23e0e3114" - const tokens = (await api.fetchList({ lengthAbi: 'poolLength', itemAbi: standardPoolInfoAbi, target: masterchef })).map(i => i.lpToken) - await api.sumTokens({ owner: masterchef, tokens, blacklistedTokens: [oxd] }) - - // 0xDAO Core - const oxLensAddress = "0xDA00137c79B30bfE06d04733349d98Cf06320e69"; - - // Fetch pools addresses - const oxPoolsAddresses = await api.call({ target: oxLensAddress, abi: oxLensAbi.oxPoolsAddresses }) - const pageSize = 200; - let currentPage = 0; - - let addresses = [] - while (addresses) { - const start = currentPage * pageSize; - const end = start + pageSize; - addresses = oxPoolsAddresses.slice(start, end); - if (addresses.length === 0) { - break; - } - currentPage += 1; - - const poolsData = await api.call({ params: [addresses], target: oxLensAddress, abi: oxLensAbi.oxPoolsData }) - poolsData.forEach(pool => api.add(pool.poolData.id, pool.totalSupply)) - } - - // Add locked SOLID - const { amount: lockedSolidAmount } = await api.call({ target: veAddress, params: 2, abi: veAbi.locked }) - api.add(solidAddress, lockedSolidAmount); - - // Add staking pools TVL - const oxdV1RewardsPoolBalance = await api.call({ target: oxdV1RewardsPoolAddress, abi: 'erc20:totalSupply' }) - const oxSolidRewardsPoolBalance = await api.call({ target: oxSolidRewardPoolAddress, abi: 'erc20:totalSupply' }) - const partnerRewardsPoolBalance = await api.call({ target: partnerRewardsPoolAddress, abi: 'erc20:totalSupply' }) - - api.add(oxSolidAddress, oxdV1RewardsPoolBalance); - api.add(oxSolidAddress, partnerRewardsPoolBalance); - api.add(oxSolidAddress, oxSolidRewardsPoolBalance); - - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - fantom: { - tvl - } -} diff --git a/projects/0xLend/index.js b/projects/0xLend/index.js deleted file mode 100644 index 476433c6431..00000000000 --- a/projects/0xLend/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -const config = { - kcc: { comptroller: '0x337d8719f70D514367aBe780F7c1eAd1c0113Bc7', cether: '0x309f1639018e8b272126c4b99af442aa25dcd1f2' }, - era: { comptroller: '0x599bb9202EE2D2F95EDe9f88F622854f7ef2c371', cether: '0x9dae6c8c431ffc6d21b836e0d8d113e8365defb9' }, - blast: { comptroller: '0x1DD821C9E27fB2399DAb75AedB113c80C755DCa6', cether: '0xd9fcbd7b60966d013a28ff87925f75bb49e9b5ee' }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = compoundExports2(config[chain]) -}) - -module.exports.kcc.borrowed = () => ({}) \ No newline at end of file diff --git a/projects/0x_nodes/index.js b/projects/0x_nodes/index.js deleted file mode 100644 index 0b55c58ae2d..00000000000 --- a/projects/0x_nodes/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { staking } = require('../helper/staking') - -const CONFIG = { - ethereum: { - bios_token: '0xAACa86B876ca011844b5798ECA7a67591A9743C8', - kernel_addr: '0xcfcff4eb4799cda732e5b27c3a36a9ce82dbabe0' - }, - bsc: { - bios_token: '0xcf87d3d50a98a7832f5cfdf99ae1b88c7cfba4a7', - kernel_addr: '0x37c12de5367fa61ad05e2bf2d032d7ce5dd31793' - }, - polygon: { - bios_token: '0xe20d2df5041f8ed06976846470f727295cdd4d23', - kernel_addr: '0x267720b5d8dcbdb847fc333ccc68cb284648b816' - }, - fantom: { - bios_token: '0x75e0eb8e6d92ab832bb11e46c041d06a89ac5f0d', - kernel_addr: '0x9db0e84ea53c5a3c000a721bb4295a6053b3de78' - }, - avax: { - bios_token: '0xd7783a275e53fc6746dedfbad4a06059937502a4', - kernel_addr: '0x479ea3715682e6255234e788875bdbded6faae41' - }, - metis: { - bios_token: '0x3405a1bd46b85c5c029483fbecf2f3e611026e45', - kernel_addr: '0xa1DA47F6563e7B17075FcA61DeDC4622aE2F3912' - }, -} - -function stakingTvl(chain) { - const { [chain]:{ bios_token }} = CONFIG - const { [chain]:{ kernel_addr }} = CONFIG - return staking(kernel_addr, bios_token) -} - -function chainExports(chains){ - const chainTvls = chains.reduce((obj, chain) => ({ - ...obj, - [chain]: { - tvl: () => ({}), - staking: stakingTvl(chain) - } - }), {}) - return chainTvls -} -const tvlExports = chainExports(['ethereum', 'bsc', 'polygon', 'fantom', 'metis', 'avax']) -module.exports = { - hallmarks: [ - [1659527340, "Protocol declared insolvent"], - ], - methodology: ` Counts the number of wrapped native tokens in all yield strategies across all the chains the protocol is deployed on - + staking counts the number of BIOS tokens staked in the kernels across all the chains (PFA: Protocol Fee Accruals by staking assets)`, - start: '2021-10-01', // Friday 1. October 2021 00:00:00 GMT - ...tvlExports, - deadFrom: 1659527340, -} - diff --git a/projects/0xacid/index.js b/projects/0xacid/index.js deleted file mode 100644 index aa86e413ea4..00000000000 --- a/projects/0xacid/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { stakingUnknownPricedLP } = require("../helper/staking"); - -const ACID_STAKING = "0x00a842038a674616f6a97e62f80111a536778282"; -const ACID_TOKEN = "0x29C1EA5ED7af53094b1a79eF60d20641987c867e"; - -module.exports = { - start: '2023-03-10', - arbitrum: { - tvl: () => ({}), - staking: stakingUnknownPricedLP(ACID_STAKING, ACID_TOKEN, "arbitrum", "0x73474183a94956cd304c6c5a504923d8150bd9ce") - }, -} \ No newline at end of file diff --git a/projects/0xscans/index.js b/projects/0xscans/index.js deleted file mode 100644 index 9bb7d401285..00000000000 --- a/projects/0xscans/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') - -const zeroxscans = "0x10703cA5e253306e2ABABD68e963198be8887c81" -const stakingPool = "0x67a37e939A46eFFd65A91949eC7c8587BD82aAa7" - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: sumTokensExport({ owners: [stakingPool], tokens: [zeroxscans] }), - }, - methodology: - "Counts all 0xScans tokens in the staking pools", -}; diff --git a/projects/0xzebra/index.js b/projects/0xzebra/index.js deleted file mode 100644 index 7bfff220d33..00000000000 --- a/projects/0xzebra/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - zeta: { - tvl: sumTokensExport({ owner: '0x3aC3d90dc8cB1Cacf1Fd8bc07e4B76c5EA443279', tokens: [ADDRESSES.zeta.WZETA] }), - } -} \ No newline at end of file diff --git a/projects/10kdex/index.js b/projects/10kdex/index.js deleted file mode 100644 index 257a33f9545..00000000000 --- a/projects/10kdex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - scroll: { - tvl: gmxExports({ vault: '0x2C145157e59CfB69a4607643D178B015E6A3004a' }) - }, -}; diff --git a/projects/10kswap/abi.js b/projects/10kswap/abi.js deleted file mode 100644 index 4c59506a8a8..00000000000 --- a/projects/10kswap/abi.js +++ /dev/null @@ -1,91 +0,0 @@ -const fabis = [{ - "name": "allPairs", - "type": "function", - "inputs": [ - { - "name": "index", - "type": "felt" - } - ], - "outputs": [ - { - "name": "pair", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" -}, -{ - "name": "allPairsLength", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "length", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "Uint256" -} -] - -const pabis = [ - { - "name": "token0", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "token0", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" - }, - { - "name": "token1", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "token1", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" - }, - { - "name": "getReserves", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "_reserve0", - "type": "felt" - }, - { - "name": "_reserve1", - "type": "felt" - }, - { - "name": "blockTimestampLast", - "type": "felt" - } - ], - "stateMutability": "view" - }, -] - - -const factory = {} -const pair = {} -fabis.forEach(i => factory[i.name] = i) -pabis.forEach(i => pair[i.name] = i) - -module.exports = { - factory, pair, fabis, pabis, -} \ No newline at end of file diff --git a/projects/10kswap/api.js b/projects/10kswap/api.js deleted file mode 100644 index f8d1147dae5..00000000000 --- a/projects/10kswap/api.js +++ /dev/null @@ -1,10 +0,0 @@ - -const { dexExport } = require('../helper/chain/starknet') -const factory = '0x1c0a36e26a8f822e0d81f20a5a562b16a8f8a3dfd99801367dd2aea8f1a87a2' - -module.exports = { - timetravel: false, - starknet: { - tvl: dexExport({ factory, }), - } -} \ No newline at end of file diff --git a/projects/10kswap/index.js b/projects/10kswap/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/10kswap/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/1155Tech/index.js b/projects/1155Tech/index.js deleted file mode 100644 index 9fdf80684d0..00000000000 --- a/projects/1155Tech/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs'); -const MARKET_1155TECH_CONTRACT = '0x33b77fAf955Ed3eDAf939ae66C4D7a2D78bc30C6'; - -module.exports = { - methodology: 'Value of all Keys across all art markets is TVL in the protocol', - canto: { - tvl: sumTokensExport({ owner: MARKET_1155TECH_CONTRACT, tokens: [ADDRESSES.canto.NOTE] }) - } -}; \ No newline at end of file diff --git a/projects/1776meme/index.js b/projects/1776meme/index.js deleted file mode 100644 index f88d1684cbd..00000000000 --- a/projects/1776meme/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const config = { - ethereum: { contract: '0xDFcB2aB25b7978C112E9E08a2c70d52b035F1776', tokens: [nullAddress, ADDRESSES.ethereum.WETH, '0x8d0d000ee44948fc98c9b98a4fa4921476f08b0d'] } -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ owner: config[chain].contract, tokens: config[chain].tokens, }) - } -}) \ No newline at end of file diff --git a/projects/1bch/index.js b/projects/1bch/index.js deleted file mode 100644 index cdb18a6619b..00000000000 --- a/projects/1bch/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') - -const WBCH = ADDRESSES.smartbch.WBCH; -const rBCH = "0xb4602588E5F1F9653B6F234206c91552E457fAcB"; -const FACTORY = "0x3dC4e6aC26df957a908cfE1C0E6019545D08319b"; -const MASTERBREEDER = "0xeC0A7496e66a206181034F86B261DDDC1A2c406E"; -const rBCH_WBCH_LP = "0xb9659B524447F53FF1019952A6eeDBb99776Ab4A"; -const COREASSETNAME = "bitcoin-cash"; - -async function bchMasterChef(api) { - return api.sumTokens({ owner: MASTERBREEDER, tokens: [WBCH]}) -} - -const bchDexTvl = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (" + FACTORY + ") is used to find the LP pairs on smartBCH. TVL is equal to AMMs liquidity plus the extra staking balance and masterchef pools.", - smartbch: { - tvl: sdk.util.sumChainTvls([bchDexTvl, bchMasterChef]), - // masterchef: bchMasterChef, - staking: stakingPricedLP(MASTERBREEDER, rBCH, "smartbch", rBCH_WBCH_LP, COREASSETNAME), - }, -} diff --git a/projects/1beam/abi.json b/projects/1beam/abi.json deleted file mode 100644 index eacd8a1595e..00000000000 --- a/projects/1beam/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getTokenBalances": "uint256[]:getTokenBalances", - "getTokens": "address[]:getTokens" -} \ No newline at end of file diff --git a/projects/1beam/index.js b/projects/1beam/index.js deleted file mode 100644 index 9d1240d5c6d..00000000000 --- a/projects/1beam/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const Abis = require('./abi.json'); - -const Contracts = { - moonbeam: { - pools: { - 'ob3p': '0x04e274f709e1ae71aff4f994b4267143ec6a381a', - 'ob3pbusd': '0x7e758319d46E0A053220e3728B3eE47a1979316a', - }, - } -} - -const moonbeamTvl = async (api) => { - const pools = Object.values(Contracts.moonbeam.pools) - const tokens = await api.multiCall({ abi: Abis.getTokens, calls: pools }) - const bals = await api.multiCall({ abi: Abis.getTokenBalances, calls: pools }) - tokens.forEach((token, i) => { - api.addTokens(token, bals[i]) - }); - api.removeTokenBalance('0xe7a7dfb89f84a0cf850bcd399d0ec906ab232e9d') -}; - -module.exports = { - moonbeam: { - tvl: moonbeamTvl, - }, -}; diff --git a/projects/1dex/index.js b/projects/1dex/index.js deleted file mode 100644 index ddbbc144de6..00000000000 --- a/projects/1dex/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// 1DEX -// https://1dex.com -async function eos() { - const accounts = ["dex.velox"]; - const tokens = [ - ["eosio.token", "EOS", "eos"], - ["usdt.xsat", "USDT", "tether"], - ["btc.xsat", "BTC", "bitcoin"], - ["core.vaulta", "A", "vaulta"], - ["usdc.xsat", "USDC", "usd-coin"], - ]; - return await get_account_tvl(accounts, tokens, "eos"); -} - -module.exports = { - methodology: `1DEX TVL is achieved by querying token balances from swap smart contract.`, - eos: { - tvl: eos - }, -} diff --git a/projects/1inch.js b/projects/1inch.js deleted file mode 100644 index 180102e2113..00000000000 --- a/projects/1inch.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2, } = require('./helper/unwrapLPs') -const { getLogs } = require('./helper/cache/getLogs') - -const config = require("./1inch/config"); - -module.exports = {} - -const WETH = ADDRESSES.ethereum.WETH; -const ETH_PLACEHOLDER = ADDRESSES.GAS_TOKEN_2; - -function normalizeToken(address) { - return address.toLowerCase() === ETH_PLACEHOLDER ? WETH : address; -} - -Object.keys(config).forEach(chain => { - const { blacklistedTokens = [], factories } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - for (const { MooniswapFactory, fromBlock} of factories) { - const logs = await getLogs({ - api, - target: MooniswapFactory, - topic: 'Deployed(address,address,address)', - eventAbi: 'event Deployed(address indexed mooniswap, address indexed token1, address indexed token2)', - onlyArgs: true, - fromBlock, - }) - - logs.forEach(({ token1, token2, mooniswap }) => { - ownerTokens.push([[normalizeToken(token1), normalizeToken(token2)], mooniswap]); - }); - } - return sumTokens2({ api, ownerTokens, blacklistedTokens, sumChunkSize: 1000, sumChunkSleep: 2000 }) - } - } -}) \ No newline at end of file diff --git a/projects/1inch/api.js b/projects/1inch/api.js deleted file mode 100644 index cb3db3d5bab..00000000000 --- a/projects/1inch/api.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../1inch.js') \ No newline at end of file diff --git a/projects/1inch/apiCache.js b/projects/1inch/apiCache.js deleted file mode 100644 index cb3db3d5bab..00000000000 --- a/projects/1inch/apiCache.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../1inch.js') \ No newline at end of file diff --git a/projects/1inch/config.js b/projects/1inch/config.js deleted file mode 100644 index 6dc6ceee746..00000000000 --- a/projects/1inch/config.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ethereum: { - blacklistedTokens: ['0x58730ae0faa10d73b0cddb5e7b87c3594f7a20cb', '0x77777feddddffc19ff86db637967013e6c6a116c',], - factories: [{ - MooniswapFactory: '0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643', - fromBlock: 11607841, - }] - }, - // polygon: { - // factories: [{ - // MooniswapFactory: '0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643', - // fromBlock: 36040621, - // }] - // }, - bsc: { - factories: [{ - MooniswapFactory: '0xd41b24bba51fac0e4827b6f94c0d6ddeb183cd64', - fromBlock: 4994614, - }, { - MooniswapFactory: '0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643', - fromBlock: 10588911, - }], - blacklistedTokens: [ - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.WETH, - '0x220b71671b649c03714da9c621285943f3cbcdc6', - '0x875773784af8135ea0ef43b5a374aad105c5d39e', - '0x1b40183efb4dd766f11bda7a7c3ad8982e998421', - '0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f', - ADDRESSES.ethereum.USDT, - '0xaea46a60368a7bd060eec7df8cba43b7ef41ad85', - '0x888888888889c00c67689029d7856aac1065ec11', - '0xe796d6ca1ceb1b022ece5296226bf784110031cd', - ADDRESSES.ethereum.USDC, - '0xbb9284484cb9a2bc7950a1276edba2f6358ea677', - ADDRESSES.ethereum.AAVE, - '0x9dcae4a9e65bf7925eb7809142f848d3cf8e96ac', - '0x3fa729b4548becbad4eab6ef18413470e6d5324c', - '0xcd62b1c403fa761baadfc74c525ce2b51780b184', - '0x30dcf96a8a0c742aa1f534fac79e99d320c97901', - '0xfbc4f3f645c4003a2e4f4e9b51077d2daa9a9341', - '0x18acf236eb40c0d4824fb8f2582ebbecd325ef6a' - ] - }, -} \ No newline at end of file diff --git a/projects/1intro/idl.js b/projects/1intro/idl.js deleted file mode 100644 index 79ea8a36f53..00000000000 --- a/projects/1intro/idl.js +++ /dev/null @@ -1,83 +0,0 @@ -module.exports = { - "version": "0.1.0", - "name": "1dex", - "instructions": [], - "accounts": [ - { - name: 'PoolState', - type: { - kind: 'struct', - fields: [ - { - name: 'poolAuthPdaKey', - type: 'publicKey' - }, - { - name: 'poolAuthPdaBump', - type: 'u8' - }, - { - name: 'poolLpMintKey', - type: 'publicKey' - }, - { - name: 'poolLpVirtualSupply', - type: 'u64' - }, - { - name: 'poolTokenCount', - type: 'u64' - }, - { - name: 'poolTokenArray', - type: { - array: [ - { - defined: 'TokenRecord' - }, - 4 - ] - } - }, - { - name: 'poolTokenTotalWeight', - type: 'u64' - }, - { - name: 'poolSwapFeeRatio', - type: 'u64' - } - ] - } - } - ], - "types": [ - { - name: 'TokenRecord', - type: { - kind: 'struct', - fields: [ - { - name: 'mintKey', - type: 'publicKey' - }, - { - name: 'accountKey', - type: 'publicKey' - }, - { - name: 'balance', - type: 'u64' - }, - { - name: 'weight', - type: 'u64' - } - ] - } - }], - "errors": [], - "metadata": { - "address": "DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm" - } -} \ No newline at end of file diff --git a/projects/1intro/index.js b/projects/1intro/index.js deleted file mode 100644 index e9e2023eed2..00000000000 --- a/projects/1intro/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2 } = require("../helper/solana"); -const idl = require('./idl') - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, idl.metadata.address, provider) - - const pools = await program.account.poolState.all() - const tokenAccounts = pools.map(i => i.account.poolTokenArray).flat().filter(i => +i.balance > 0).map(i => i.accountKey) - return sumTokens2({ tokenAccounts }) -} - -module.exports = { - solana: { tvl, }, -} \ No newline at end of file diff --git a/projects/1pulse/index.js b/projects/1pulse/index.js deleted file mode 100644 index a05a8b1b1dc..00000000000 --- a/projects/1pulse/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - pulse: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: "0x17C335D22456c798D5A3D021583eDAcbD4Ef6444", - }), - }, -}; diff --git a/projects/1swap/abi-moonriver.json b/projects/1swap/abi-moonriver.json deleted file mode 100644 index aa187d1b953..00000000000 --- a/projects/1swap/abi-moonriver.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getTokenBalances": "uint256[]:getTokenBalances", - "getTokens": "address[]:getTokens" -} diff --git a/projects/1swap/index.js b/projects/1swap/index.js deleted file mode 100644 index 87f75048370..00000000000 --- a/projects/1swap/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const abiMoonriver = require('./abi-moonriver.json'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const Contracts = { - moonriver: { - pools: { - '1s3p': '0xb578a396e56388CbF398a12Dea9eb6B01b7c777f', - '1s3pbusd': '0x008db1Cef0958e7f87A107b58F0dede796ce7962', - '1s3pmim': '0x23A479A83e4FaC12C2096Ab1D79Ea7a788f4489E', - '1s3pfrax': '0xF223B776C86E1ADa8fD205dBb804D1Fd6C87E05E', - '1s3pavaxusd': '0x7179F2C31763f395082489588534F4abb3Dd4Be6', - '1s3pwanusd': '0x02A105939Dc0C47cb6bD04f320dAa77Bd9E3Bb0D', - }, - ignoredLps: ['0x17da5445f3cd02b3f1cd820e6de55983fe80cf85'], - } -}; - - -const tvl = async (api) => { - const ownerTokens = [] - const pools = Object.values(Contracts.moonriver.pools) - const tokens = await api.multiCall({ abi: abiMoonriver.getTokens, calls: pools}) - pools.forEach((pool, i) => ownerTokens.push([tokens[i], pool])) - return sumTokens2({ api, ownerTokens, blacklistedTokens: pools}) -}; - -module.exports = { - moonriver: { - tvl, - }, -}; diff --git a/projects/21-co/index.js b/projects/21-co/index.js deleted file mode 100644 index d5cc8a5fab1..00000000000 --- a/projects/21-co/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.twentyOneCo - }, - solana: { - owners: [ - 'FvLsZiM3g2ZnehkK42c4EoLASBdchKnqzxyAEmGhViZq' - ], - }, - ripple: { - owners: [ - 'rHTG5htCXSNtcXDhFkaSsvB1s1ah6WYrFW' - ], - }, - litecoin: { - owners: [ - 'LbgDyHCVc6UwsKuDzt5jKwFdG5TLsN5tbf' - ], - }, - polkadot: { - owners: [ - '161fEUkrGhhAog8QG1ik3sfch9UzPdvAJtUwRH6WZnsgqkuw' - ], - }, - cardano: { - owners: [ - 'addr1q976xcl3r2vt6he4q3rq6lyq8832v5mgpdds0e84z7vn0hma5d3lzx5ch40n2pzxp47gqw0z5efksz6mqlj029uexl0snqdsul' - ], - }, - doge: { - owners: [ - 'DMbNFKqJpr9B9XPfZL5zbgMTvzpN7h7sfz' - ], - }, - bep2: { - // owners: ['bnb1k3ulpgw4wzl0e8qx80u87aq9w7ekfygruzs4dg'], - }, - /* bitcoin_cash: { - owners: [ - 'qz68nu9p64ctalyuqcalslm5q4mmxey3qvr4y9mgt8' - ], - } */ -} - -module.exports = cexExports(config) diff --git a/projects/246Club/index.js b/projects/246Club/index.js deleted file mode 100644 index 5c771f4e37a..00000000000 --- a/projects/246Club/index.js +++ /dev/null @@ -1,257 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { keccak256, AbiCoder } = require('ethers'); - -const abis = { - createPair: 'event CreatePair(bytes32 indexed pairId, (address debt, address collateral) pairAssets, (uint256 cap, uint64 ltv, uint64 liquidationFee, uint64 liquidationThreshold1, uint64 liquidationThreshold2, uint64 closeFactor1, uint64 closeFactor2, uint64 liquidationBonus1, uint64 liquidationBonus2, uint64 baseBorrowRate1, uint64 baseBorrowRate2, uint64 slope1, uint64 slope2, address oracle) pairParams)', - supplyCollateral: 'event SupplyCollateral(bytes32 indexed id, uint256 amount, address indexed caller, address indexed onBehalf)', - withdrawCollateral: 'event WithdrawCollateral(bytes32 indexed id, uint256 amount, address caller, address indexed onBehalf, address indexed receiver)', - liquidate: 'event Liquidate(bytes32 indexed id, address indexed caller, address indexed borrower, uint256 repaidShares, uint256 repaidAmount, uint256 seizedAmount, uint256 fee)', - getPool: 'function getPool(address debtAsset) view returns ((uint128 lastUpdated, uint128 pendingInterest, uint128 totalDebt, uint128 feeAmount, uint64 feeRatio, uint64 optimalUsageRatio, bool paused, address[] assetList, bytes32[] pairIdList))', - restakings: 'function restakings(bytes32 delegationPairId) view returns (bool created, bool enabled, uint112 creditBufferRatio, uint128 accInterestPerScaledAmount, uint128 totalScaledUsage, uint128 totalScaledSupply)', - underlyingAsset: 'function UNDERLYING_ASSET_ADDRESS() view returns (address)', - getReserveNormalizedIncome: 'function getReserveNormalizedIncome(address asset) view returns (uint256)', -}; - -const config = { - plasma: { - diamond246: '0x2460a05cc7c9e0f1e20b9b98c6f54acaad221b98', - aavePool: '0x925a2A7214Ed92428B5b1B090F80b25700095e12', - fromBlock: 1520925, // Sep-21-2025 10:16:25 UTC - - }, -}; - -const fetchPairIdsMap = async (api) => { - const { diamond246, fromBlock } = config[api.chain]; - - const logs = await getLogs({ - api, - target: diamond246, - eventAbi: abis.createPair, - onlyArgs: true, - fromBlock, - extraKey: `246-createPair-${api.chain}`, - }); - - const pairIdsMap = {}; - - logs.forEach(({ pairId, pairAssets }) => { - pairIdsMap[pairId.toLowerCase()] = { - debt: pairAssets.debt.toLowerCase(), - collateral: pairAssets.collateral.toLowerCase(), - }; - }); - - return pairIdsMap; -}; - -const fetchCollateralBalances = async (api, pairIdsMap) => { - const { diamond246, fromBlock } = config[api.chain]; - const balances = {}; - - const applyLog = (pairId, amount, sign) => { - const token = pairIdsMap[pairId].collateral; - const delta = BigInt(amount) * sign; - balances[token] = (balances[token] ?? 0n) + delta; - }; - - const supplyLogs = await getLogs({ - api, - target: diamond246, - eventAbi: abis.supplyCollateral, - onlyArgs: true, - fromBlock, - extraKey: `246club-supplyCollateral-${api.chain}`, - }); - - const withdrawLogs = await getLogs({ - api, - target: diamond246, - eventAbi: abis.withdrawCollateral, - onlyArgs: true, - fromBlock, - extraKey: `246club-withdrawCollateral-${api.chain}`, - }); - - const liquidateLogs = await getLogs({ - api, - target: diamond246, - eventAbi: abis.liquidate, - onlyArgs: true, - fromBlock, - extraKey: `246club-liquidate-${api.chain}`, - }); - - supplyLogs.forEach(({ id, amount }) => applyLog(id.toLowerCase(), amount, 1n)); - withdrawLogs.forEach(({ id, amount }) => applyLog(id.toLowerCase(), amount, -1n)); - liquidateLogs.forEach(({ id, seizedAmount, fee }) => applyLog(id.toLowerCase(), seizedAmount + fee, -1n)); - - return balances; -}; - -const fetchRestakingBalances = async (api, pools, debtAssets) => { - const balances = {}; - const { diamond246, aavePool } = config[api.chain]; - const delegationEntries = []; - const abiCoder = AbiCoder.defaultAbiCoder(); - - pools.forEach((pool, idx) => { - if (!pool || pool.assetList.length === 0) return; - - pool.assetList.forEach((asset) => { - const delegationPairId = keccak256( - abiCoder.encode(['address', 'address'], [asset.toLowerCase(), debtAssets[idx]]) - ).toLowerCase(); - - delegationEntries.push({ - id: delegationPairId, - asset: asset.toLowerCase(), - }); - }); - }); - - if (!delegationEntries.length) return balances; - - const restakings = await api.multiCall({ - target: diamond246, - abi: abis.restakings, - calls: delegationEntries.map(({ id }) => id), - }); - - const underlyingAssets = await api.multiCall({ - abi: abis.underlyingAsset, - calls: delegationEntries.map(({ asset }) => ({ target: asset })), - }); - - const liquidityIndices = await api.multiCall({ - target: aavePool, - abi: abis.getReserveNormalizedIncome, - calls: underlyingAssets.map((underlying) => ({ params: [underlying] })), - }); - - restakings.forEach((restaking, idx) => { - const balance = (BigInt(restaking.totalScaledSupply) * BigInt(liquidityIndices[idx])) / 10n ** 27n; - const token = delegationEntries[idx].asset; - balances[token] = (balances[token] ?? 0n) + balance; - }); - - return balances; -}; - -const fetchInterestBalances = async (api, debtAssets) => { - const balances = {}; - - const interestBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: debtAssets.map((debtAsset) => ({ target: debtAsset, params: [config[api.chain].diamond246] })), - permitFailure: true, - }); - - interestBalances.forEach((balance, idx) => { - if (balance == null) return; - - balances[debtAssets[idx]] = BigInt(balance); - }); - - return balances; -}; - - -const unwrap4626ToUnderlying = async (api, tokensAndBalances) => { - let current = tokensAndBalances; - - while (Object.keys(current).length) { - const vaultTokens = Object.keys(current); - - const [underlyingAssets, underlyingBalances] = await Promise.all([ - api.multiCall({ - abi: 'function asset() view returns (address)', - calls: vaultTokens, - permitFailure: true, - }), - api.multiCall({ - abi: 'function convertToAssets(uint256) view returns (uint256)', - calls: vaultTokens.map((vaultToken) => ({ target: vaultToken, params: [current[vaultToken]] })), - permitFailure: true, - }), - ]); - - const nextTokensAndBalances = {}; - - vaultTokens.forEach((vaultToken, idx) => { - const underlyingAsset = underlyingAssets[idx]; - const shares = BigInt(current[vaultToken]); - const amount = underlyingBalances[idx]; - - // Add base assets - if (!underlyingAsset || amount == null) { - api.add(vaultToken, shares.toString()); - - return; - } - - const asset = underlyingAsset.toLowerCase(); - nextTokensAndBalances[asset] = (nextTokensAndBalances[asset] ?? 0n) + BigInt(amount); - }); - - current = nextTokensAndBalances; - } -}; - - -const tvl = async (api) => { - const pairIdsMap = await fetchPairIdsMap(api); - - if (Object.keys(pairIdsMap).length === 0) return; - - const collateralBalances = await fetchCollateralBalances(api, pairIdsMap); - - await unwrap4626ToUnderlying(api, collateralBalances); - - const debtAssets = [...new Set(Object.values(pairIdsMap).map(({ debt }) => debt))]; - - const pools = await api.multiCall({ - target: config[api.chain].diamond246, - abi: abis.getPool, - calls: debtAssets.map((debtAsset) => ({ params: [debtAsset] })), - }); - - if(pools.length===0) return; - - const restakingBalances = await fetchRestakingBalances(api, pools, debtAssets); - const interestBalances = await fetchInterestBalances(api, debtAssets); - - // calc restaking balance - Object.entries(restakingBalances).forEach(([token, amount]) => { - api.add(token, amount.toString()); - }); - - // calc interest balance - Object.entries(interestBalances).forEach(([token, amount]) => { - api.add(token, amount.toString()); - }); - - // calc debt balance - pools.forEach((pool, idx) => api.add(debtAssets[idx], (-pool.totalDebt).toString())); -}; - -const borrowed = async (api) => { - const pairIdsMap = await fetchPairIdsMap(api); - - if (Object.keys(pairIdsMap).length === 0) return; - - const debtAssets = [...new Set(Object.values(pairIdsMap).map(({ debt }) => debt))]; - - const pools = await api.multiCall({ - target: config[api.chain].diamond246, - abi: abis.getPool, - calls: debtAssets.map((debtAsset) => ({ params: [debtAsset] })), - permitFailure: true, - }); - - pools.forEach((pool, idx) => api.add(debtAssets[idx], pool.totalDebt.toString())) -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl, borrowed}; -}); \ No newline at end of file diff --git a/projects/2doge/index.js b/projects/2doge/index.js deleted file mode 100644 index f7a44b377ab..00000000000 --- a/projects/2doge/index.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - methodology: "Pool2 deposits consist of 2DOGE/FTM and 2SDOGE/FTM LP tokens deposits while the staking TVL consists of the 2SDOGES tokens locked within the Masonry contract(0xe8EA0828FF7BF03c868a2370b83Bc06F50d4eEd9).", - fantom: { - tvl: () => ({}), - staking: () => ({}), - pool2: () => ({}), - }, - hallmarks: [ - [1646179200, "Rug Pull"] - ], - deadFrom: 1646179200 -}; diff --git a/projects/2omb-finance/index.js b/projects/2omb-finance/index.js deleted file mode 100644 index 83a0d8003a6..00000000000 --- a/projects/2omb-finance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const shares = "0xc54a1684fd1bef1f077a336e6be4bd9a3096a6ca"; -const masonry = "0x627A83B6f8743c89d58F17F994D3F7f69c32F461"; -const rewardPool = "0x8D426Eb8C7E19b8F13817b07C0AB55d30d209A96"; -const ThreeOmbGenesisPoolsContract = "0xcB0b0419E6a1F46Be89C1c1eeeAf9172b7125b29"; -const pool2LPs = [ - "0xbdC7DFb7B88183e87f003ca6B5a2F81202343478", // 2OMB-FTM spLP - "0x6398ACBBAB2561553a9e458Ab67dCFbD58944e52", // 2SHARE-WFTM spLP -]; - -module.exports = { - fantom: { - tvl: () => ({}), - staking: staking(masonry, shares), - pool2: pool2([rewardPool, ThreeOmbGenesisPoolsContract], pool2LPs), - }, -}; diff --git a/projects/2pi/archimedes.json b/projects/2pi/archimedes.json deleted file mode 100644 index 2ead126b00a..00000000000 --- a/projects/2pi/archimedes.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 weighing, uint256 lastRewardBlock, uint256 accPiTokenPerShare, address controller)", - "poolLength": "uint256:poolLength", - "balance": "function balance(uint256 _pid) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/2pi/index.js b/projects/2pi/index.js deleted file mode 100644 index 4ce6d7fc0c0..00000000000 --- a/projects/2pi/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { getUniqueAddresses } = require('../helper/utils') -const { getConfig } = require('../helper/cache') -const archimedesAbi = require('./archimedes.json') - -const baseUrl = 'https://api.2pi.network/v1' -const chains = { - avax: 'avalanche', - bsc: 'bsc', - optimism: 'optimism', - polygon: 'polygon' -} - -const fetchChainAddresses = async chain => { - const { data: { archimedes } } = await getConfig(`archimedes/${chain}`, `${baseUrl}/addresses/${chain}`) - return getUniqueAddresses(archimedes) -} - -const tvl = async (api) => { - const addresses = await fetchChainAddresses(chains[api.chain]) - const res = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: archimedesAbi['poolInfo'], calls: addresses, groupedByInput: true }) - const calls = [] - const tokens = [] - for (let i = 0; i < res.length; i++) { - const pool = addresses[i] - for (let j = 0; j < res[i].length; j++) { - calls.push({ target: pool, params: j }) - tokens.push(res[i][j].want) - } - } - const bals = await api.multiCall({ abi: archimedesAbi.balance, calls}) - api.add(tokens, bals) -} - - -Object.keys(chains).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/3a-dao/index.js b/projects/3a-dao/index.js deleted file mode 100644 index c17b741cd69..00000000000 --- a/projects/3a-dao/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - polygon: { factory: '0x4760847023fa0833221ae76E01Db1E483A5D20e0', fromBlock: 49852705 }, - linea: { factory: '0x65c6FD9B3a2A892096881e28f07c732ed128893E', fromBlock: 3045954 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event NewVault(address indexed vault, string name, address indexed owner)', - onlyArgs: true, - fromBlock, - }) - const vaults = logs.map(log => log.vault) - const tokens = await api.multiCall({ abi: 'address[]:collaterals', calls: vaults }) - const ownerTokens = tokens.map((token, i) => [token, vaults[i]]) - return api.sumTokens({ ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/3fmutual/index.js b/projects/3fmutual/index.js deleted file mode 100644 index 1b18f0aaac7..00000000000 --- a/projects/3fmutual/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const tokens = require("../helper/coreAssets.json"); - -const TOKENS = [ - tokens.null, -]; - -const ethereumContract = [ - "0x66be1bc6C6aF47900BBD4F3711801bE6C2c6CB32", - ]; - -module.exports = { - ethereum: { tvl: sumTokensExport({ owners: ethereumContract, tokens: TOKENS }) } -}; diff --git a/projects/3jane-lending/index.js b/projects/3jane-lending/index.js deleted file mode 100644 index 5ed8df36c2f..00000000000 --- a/projects/3jane-lending/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const contract = "0xde6e08ac208088cc62812ba30608d852c6b0ecbc" - -async function tvl(api) { - return sumTokens2({ tokens: ["0xd4fa2d31b7968e448877f69a96de69f5de8cd23e"], owner: contract, api }) -} - -module.exports = { - methodology: `We count the tokens on ${contract}`, - ethereum: { - tvl - } -} diff --git a/projects/3jane/index.js b/projects/3jane/index.js deleted file mode 100644 index 8fdb9233fd6..00000000000 --- a/projects/3jane/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const abi = { - vaultParams: "function vaultParams() view returns (bool isPut, uint8 decimals, address asset, address underlying, uint56 minimumSupply, uint104 cap)" -} - -const config = { - ethereum: { - vaults: [ - "0xAcD147A5bbCB7166c5BB13A9354ad7a59b99fB4d", // weETH call vault - ] - } -} - -module.exports = { - methodology: "Sums the totalBalance of all 3Jane Theta Vaults", -}; - -Object.keys(config).forEach(chain => { - const { vaults } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = await api.multiCall({ abi: "uint256:totalBalance", calls: vaults }) - const data = await api.multiCall({ abi: abi.vaultParams, calls: vaults }) - const tokens = data.map(d => d.asset) - api.add(tokens, balances) - } - } -}) diff --git a/projects/3xcalibur/index.js b/projects/3xcalibur/index.js deleted file mode 100644 index 78332bee386..00000000000 --- a/projects/3xcalibur/index.js +++ /dev/null @@ -1,5 +0,0 @@ - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'arbitrum': '0xD158bd9E8b6efd3ca76830B66715Aa2b7Bad2218' -}, { hasStablePools: true, hallmarks: [[1668038400, "Emissions started"]], }) \ No newline at end of file diff --git a/projects/40acres/abi.js b/projects/40acres/abi.js deleted file mode 100644 index 868283fbe37..00000000000 --- a/projects/40acres/abi.js +++ /dev/null @@ -1,14 +0,0 @@ -const erc4626Abi = { - 'asset': 'function asset() external view returns (address)', -} - -const fortyAcresAbi = { - 'vault': 'function _vault() public view returns (address)', - 'activeAssets': 'function activeAssets() public view returns (uint256)' -} - - -module.exports = { - erc4626Abi, - fortyAcresAbi -} diff --git a/projects/40acres/helpers.js b/projects/40acres/helpers.js deleted file mode 100644 index d069f96bbd7..00000000000 --- a/projects/40acres/helpers.js +++ /dev/null @@ -1,59 +0,0 @@ -const { erc4626Abi, fortyAcresAbi } = require('./abi'); - -const vaultMapping = { - optimism: '0x08dCDBf7baDe91Ccd42CB2a4EA8e5D199d285957', - base: '0xB99B6dF96d4d5448cC0a5B3e0ef7896df9507Cf5', - avax: '0x124D00b1ce4453Ffc5a5F65cE83aF13A7709baC7' -} - -const fortyAcresMapping = { - optimism: '0xf132bD888897254521D13e2c401e109caABa06A7', - base: '0x87f18b377e625b62c708D5f6EA96EC193558EFD0', - avax: '0xf6A044c3b2a3373eF2909E2474f3229f23279B5F' -} - -const baseTokenMapping = { - optimism: '0x3c8B650257cFb5f272f799F5e2b4e65093a11a05', // VELO - base: '0x940181a94A35A4569E4529A3CDfB74e38FD98631', // AERO - avax: '0xaaab9d12a30504559b0c5a9a5977fee4a6081c6b' // PHAR -} - -const veNftMapping = { - optimism: '0xFAf8FD17D9840595845582fCB047DF13f006787d', // veVELO - base: '0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4', // veAERO - avax: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F' // vePHAR -} - -// get the underlying asset of each erc4626 vault -const get4626VaultToken = async (api, addresses) => { - return api.multiCall({ calls: addresses, abi: erc4626Abi.asset, }); -} - -async function getVaultBalance(api) { - const vaultToken = await api.call({ target: vaultMapping[api.chain], abi: erc4626Abi.asset, }); - const vaultBalance = await api.call({ abi: 'erc20:balanceOf', target: vaultToken, params: [vaultMapping[api.chain]] }) - api.addTokens([vaultToken], [vaultBalance]) - return -} - - -async function getBorrowed(api) { - const borrowed = await api.call({ - abi: fortyAcresAbi.activeAssets, - target: fortyAcresMapping[api.chain], - }); - - const vaultToken = await api.call({ target: vaultMapping[api.chain], abi: erc4626Abi.asset, }); - api.addTokens([vaultToken], [borrowed]) - return -} - -module.exports = { - get4626VaultToken, - getVaultBalance, - fortyAcresMapping, - baseTokenMapping, - vaultMapping, - veNftMapping, - getBorrowed -} diff --git a/projects/40acres/index.js b/projects/40acres/index.js deleted file mode 100644 index f5f9997f563..00000000000 --- a/projects/40acres/index.js +++ /dev/null @@ -1,32 +0,0 @@ - -const { getVaultBalance, fortyAcresMapping, baseTokenMapping, veNftMapping, getBorrowed } = require("./helpers"); -const { unwrapSolidlyVeNft } = require('../helper/unwrapLPs'); - - -async function getLockedVeNFTBalance(api) { - await unwrapSolidlyVeNft({ api, baseToken: baseTokenMapping[api.chain], veNft: veNftMapping[api.chain], owner: fortyAcresMapping[api.chain], isAltAbi: api.chain === 'avax' }); - await api.sumTokens({ owner: fortyAcresMapping[api.chain], tokens: [baseTokenMapping[api.chain]] },) -} - - -async function tvl(api) { - await getLockedVeNFTBalance(api, fortyAcresMapping[api.chain]); - await getVaultBalance(api) - return -} - - -async function borrowed(api) { - await getBorrowed(api) -} - - - -module.exports = { - timetravel: true, - start: '2025-01-31', - methodology: `TVL is comprised of tokens deposited to the protocol as collateral and tokens deposited to the vault for lending. Borrowed tokens are not counted towards TVL.`, - base: { tvl: tvl, borrowed: borrowed }, - optimism: { tvl: tvl, borrowed: borrowed }, - avax : { tvl: tvl, borrowed: borrowed } -} diff --git a/projects/5ire-dapp-staking/index.js b/projects/5ire-dapp-staking/index.js deleted file mode 100644 index 3dbc39717c9..00000000000 --- a/projects/5ire-dapp-staking/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const STAKING_CONTRACT_V1 = "0xaa137EC3474ab407f3Be37b16576227dfE75Eb8D" -const STAKING_CONTRACT_V2 = "0x83D1B4277454EDAcF54A14fc586326386648A959" -const TOKEN_5IRE_ETH = "0x3bd7d4F524D09F4e331577247A048D56e4b67a7F" -const { stakings } = require("../helper/staking") - - -module.exports = { - methodology: 'Total staked tokens in 5ire Dapp Staking', - ethereum: { - tvl: () => ({}), - staking: stakings([STAKING_CONTRACT_V1, STAKING_CONTRACT_V2], TOKEN_5IRE_ETH), - }, -} - - - diff --git a/projects/88mph/index.js b/projects/88mph/index.js deleted file mode 100644 index d77e5257b0f..00000000000 --- a/projects/88mph/index.js +++ /dev/null @@ -1,140 +0,0 @@ -const sdk = require('@defillama/sdk') - -const { staking } = require('../helper/staking') -const { getUniqueAddresses } = require('../helper/utils') - -const config = { - ethereum: { dpools: [ - "0x19e10132841616ce4790920d5f94b8571f9b9341", - "0x22e6b9a65163ce1225d1f65ef7942a979d093039", - "0x23fa6b36e870ca5753853538d17c3ca7f5269e84", - "0x2f3efd1a90a2336ab8fa1b9060380dc37361ca55", - "0x303cb7ede0c3ad99ce017cdc3abacd65164ff486", - "0x35966201a7724b952455b73a36c8846d8745218e", - "0x374226dbaa3e44bf3923afb63f5fd83928b7e148", - "0x3f5611f7762cc39fc11e10c864ae38526f650e9d", - "0x6712baab01fa2dc7be6635746ec2da6f8bd73e71", - "0x681aaa7cf3f7e1f110842f0149ba8a4af53ef2fd", - "0x904f81eff3c35877865810cca9a63f2d9cb7d4dd", - "0xb1abaac351e06d40441cf2cd97f6f0098e6473f2", - "0xd4837145c7e13d580904e8431cfd481f9794fc41", - "0xdc86ac6140026267e0873b27c8629efe748e7146", - "0xe615e59353f70ca2424aa0f24f49c639b8e924d3", - "0xe8c52367b81113ed32bb276184e521c2fbe9393a", - ], vPools: [ - "0x062214fbe3f15d217512deb14572eb01face0392", - "0x085d70ca0dade4683d0f59d5a5b7d3298011b4de", - "0x0f834c3601088d1b060c47737a2f5ce4ffa5ac1d", - "0x0fd585328666923a3a772dd5c37e2dc065c7b137", - "0x10e8bd414eee26d82e88d6e308fd81ef37d03155", - "0x11b1c87983f881b3686f8b1171628357faa30038", - "0x1821aadb9ac1b7e4d56c728afdadc7541a785cd2", - "0x24867f5665414d93f7b3d195f848917d57d5be27", - "0x2a74f09a8e4899115529ec8808c5fc1de62c2fe4", - "0x2d3141f4c9872d4f53b587c3fb8b22736feb54b0", - "0x3816579c8cb62500a45ae29a33040a3dea4160de", - "0x46603a1cca20e7ae18f1a069125369609d9d4153", - "0x4b4626c1265d22b71ded11920795a3c6127a0559", - "0x4d794db79c4a85dc763d08a7c440a92a2d153ffd", - "0x4f7ec502ca0be8ef1f984ab1f164022a15ff5561", - "0x572be575d1aa1ca84d8ac4274067f7bcb578a368", - "0x5b1a10aaf807d4297048297c30b2504b42c3395f", - "0x60f0f24b0fbf066e877c3a89014c2e4e98c33678", - "0x6d97ea6e14d35e10b50df9475e9efaad1982065e", - "0x6e6002a4bd704a3c8e24a70b0be670f1c2b4d35c", - "0x7dc14d047d6d8bb03539f92b9e2ca1f1648a5717", - "0x7f10134c32a4544e4cdc0fd57f5c820bff3070e9", - "0xa0e78812e9cd3e754a83bbd74a3f1579b50436e8", - "0xae5dde7ea5c44b38c0bccfb985c40006ed744ea6", - "0xb1b225402b5ec977af8c721f42f21db5518785dc", - "0xf61681b8cbf87615f30f96f491fa28a2ff39947a", - "0xbfdb51ec0adc6d5bf2ebba54248d40f81796e12b", - "0x5dda04b2bdbbc3fcfb9b60cd9ebfd1b27f1a4fe3", - "0xf50ef673ee810e6acb725f941a53bf92586a39ad", - "0x6bf909ce507e94608f0fcbab2cfdd499e0150a21", - "0xafdd82d73f5dae907f86ad37f346221081dc917b", - "0x8eb1b3ac29e0dcbd7f519c86f1eb76a3aea41b76", - "0xc1f147db2b6a9c9fbf322fac3d1fbf8b8aaeec10" - ] }, - avax: { dpools: [ - "0x2252185532317932b1883b3429407296a2c69244", - "0x336c38657837aa2b5fd21d41ea651b6d792291d9", - "0x4f28fc2be45682d1be1d0f155f4a52d4509db629", - "0x58e65f624c5ecf595824c96b3853ea8da2f9adf1", - "0x747cdec7d885ca961baec11481cda651bf4d1004", - "0xa78276c04d8d807feb8271fe123c1f94c08a414d", - "0xbcd1571761c2f3d8e0ae93651753aa968e357425", - "0xc7cbb403d1722ee3e4ae61f452dc36d71e8800de", - "0xd1fea1b2dc4e0be1f5f16bacf1dfeb7fc3434b5f", - "0xd9f46096801799f59f34c95e0b4df0f6a76bfcf3", - "0xeb706249f3b4640839e64211336b2063a3cdfbb9", - "0xf0ca068be757e61cdfa6314bf59f5243767f1bfd" - ] }, - fantom: { dpools: [ - "0x23fe5a2ba80ea2251843086ec000911cfc79c864", - "0x2744b79c985ae0c6b81f1da8eed1a4c67eb4b732", - "0x3cab1cb5a9b68350b39ddf7ce23518d609a8bc78", - "0x7e4697f650934ea6743b8b0619fc2454db02405a", - "0xa1857578cec558eaed9120739b0c533549bdcb61", - "0xa78276c04d8d807feb8271fe123c1f94c08a414d", - "0xbdf43e9c6cf68359deff9292098622643ede5ec3", - "0xc0710b3564fd4768f912150d39d519b66f2952d4", - "0xc7cbb403d1722ee3e4ae61f452dc36d71e8800de", - "0xc80cc61910c6f8f47aadc69e40ab8d1b2fa2c4df", - "0xc91c2255525e80630eee710e7c0637bce7d98978", - "0xcb29ce2526ff5f80ad1536c6a1b13238d615b4b9", - "0xd62f71937fca1c7c05da08cec4c451f12fc64964", - "0xf7fb7f095c8d0f4ee8ffbd142fe0b311491b45f3" - ], vPools: [ - "0x3cab1cb5a9b68350b39ddf7ce23518d609a8bc78", - "0xa1857578cec558eaed9120739b0c533549bdcb61", - "0xa78276c04d8d807feb8271fe123c1f94c08a414d", - "0xbdf43e9c6cf68359deff9292098622643ede5ec3", - "0xc0710b3564fd4768f912150d39d519b66f2952d4", - "0xc7cbb403d1722ee3e4ae61f452dc36d71e8800de", - "0xcb29ce2526ff5f80ad1536c6a1b13238d615b4b9", - "0xd62f71937fca1c7c05da08cec4c451f12fc64964", - "0xf7fb7f095c8d0f4ee8ffbd142fe0b311491b45f3", - "0x23fe5a2ba80ea2251843086ec000911cfc79c864", - "0xc80cc61910c6f8f47aadc69e40ab8d1b2fa2c4df", - "0x7e4697f650934ea6743b8b0619fc2454db02405a", - "0x2744b79c985ae0c6b81f1da8eed1a4c67eb4b732", - "0xc91c2255525e80630eee710e7c0637bce7d98978" - ] }, - polygon: { dpools: [ - "0x0e99145166e2982bb67054a1e5d3a902fc4d2b59", - "0x3933baac41f04d0ffa0977b0e879bc56482ad667", - "0x3b79eb9675ed29554f57b719dc66a461a4c84970", - "0x4f28fc2be45682d1be1d0f155f4a52d4509db629", - "0xa78276c04d8d807feb8271fe123c1f94c08a414d", - "0xf5ef24a27f35cbe8a2b0a954acf81d7064ce6b70" - ] }, -} - -const tvlExports = {}; - -Object.keys(config).forEach(chain => { - let { dpools: pools, vPools = [], } = config[chain] - tvlExports[chain] = { - tvl: async (api) => { - const balances = {} - - pools.push(...vPools) - pools = getUniqueAddresses(pools) - const tokens = await api.multiCall({ abi: 'address:stablecoin', calls: pools }) - const bals = await api.multiCall({ abi: 'uint256:totalDeposit', calls: pools }) - const bals2 = await api.multiCall({ abi: 'uint256:totalInterestOwed', calls: pools }) - bals.forEach((b, i) => sdk.util.sumSingleBalance(balances, tokens[i], b, api.chain)) - bals2.forEach((b, i) => sdk.util.sumSingleBalance(balances, tokens[i], b, api.chain)) - return balances - }, - } -}) - -tvlExports.ethereum.staking = staking("0x1702F18c1173b791900F81EbaE59B908Da8F689b", "0x8888801af4d980682e47f1a9036e589479e835c5") - -module.exports = { - methodology: `Using the addresses for the fixed interest rate bonds we are able to find the underlying tokens held in each address. Once we have the underlying token we then get the balances of each of the tokens. For the CRV tokens used "CRV:STETH" for example, the address is replaced with the address of one of the tokens. In the example at hand the address is replaced with the "WETH" address so that the price can be calculated.`, - start: '2020-11-23', // Monday, November 23, 2020 5:33:49 AM GMT - ...tvlExports -} diff --git a/projects/8lends/index.js b/projects/8lends/index.js deleted file mode 100644 index f404affb958..00000000000 --- a/projects/8lends/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") -const sdk = require('@defillama/sdk') - -const FUNDRAISING_CONTRACT = '0xf435A133D6cDCb81061F18a4763560f9931DB57D'; -const dataAbi = "function projects(uint256) view returns (uint256 hardCap, uint256 softCap, uint256 totalInvested, uint256 startAt, uint256 preFundDuration, uint256 investorInterestRate, uint256 openStageEndAt, (uint256 platformInterestRate, uint256 totalRepaid, address borrower, uint256 fundedTime, address loanToken, uint8 stage) innerStruct)" -const COMING_SOON_STAGE = 0; -const OPENED_STAGE = 1; -const CANCELED_STAGE = 2; -const PREFUNDED_STAGE = 3; -const FUNDED_STAGE = 4; -const REPAID_STAGE = 5; - -async function tvl(api) { - const projectsData = await api.fetchList({ lengthAbi: 'projectCount', itemAbi: dataAbi, target: FUNDRAISING_CONTRACT }) - const tokens = projectsData.map(project => project.innerStruct.loanToken) - return sumTokens2({ api, owner: FUNDRAISING_CONTRACT, tokens, }) -} - -async function borrowed(api) { - const projectsData = await api.fetchList({ lengthAbi: 'projectCount', itemAbi: dataAbi, target: FUNDRAISING_CONTRACT }) - const tokens = projectsData.map(project => project.innerStruct.loanToken) - const tvlApi = new sdk.ChainApi({ chain: api.chain, block: api.block, }) - // Filter only projects that are in OPENED, PREFUNDED, or FUNDED stages - // These are actively fundraising or have been funded - const filtered = projectsData.filter(project => { - const stage = Number(project.innerStruct.stage); - return stage === OPENED_STAGE || stage === PREFUNDED_STAGE || stage === FUNDED_STAGE; - }) - filtered.forEach(project => api.add(project.innerStruct.loanToken, project.totalInvested)) - await sumTokens2({ api: tvlApi, owner: FUNDRAISING_CONTRACT, tokens, }) - api.getBalancesV2().subtract(tvlApi.getBalancesV2()) -} - -module.exports = { - methodology: 'Funds in the contract not yet withdrawn by the borrower are counted as TVL, rest of the investment is considered borrowed.', - base: { tvl, borrowed, } -}; \ No newline at end of file diff --git a/projects/9inch-io-v3/index.js b/projects/9inch-io-v3/index.js deleted file mode 100644 index 1800421d176..00000000000 --- a/projects/9inch-io-v3/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ pulse: { factory: '0xCfd33C867C9F031AadfF7939Cb8086Ee5ae88c41', fromBlock: 20357155, } }) \ No newline at end of file diff --git a/projects/9inch-io/index.js b/projects/9inch-io/index.js deleted file mode 100644 index 72c5c7cf42d..00000000000 --- a/projects/9inch-io/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { sumTokensExport } = require('../helper/unwrapLPs') -const config = { - ethereum: '0xcBAE5C3f8259181EB7E2309BC4c72fDF02dD56D8', - pulse: '0x5b9f077a77db37f3be0a5b5d31baeff4bc5c0bd7', -} - -const staking = { - pulse: { - tokensAndOwners: [ - ['0x3ca80d83277e721171284667829c686527B8b3c5', '0x8878f27fD90922F4DeBb91dcf5B6E6301C23fE33'], - ['0x8b4cfb020aF9AcAd95AD80020cE8f67FBB2C700E', '0x0e173B11523feB064FD483209d0eD534831A2a86'], - ['0x9565c2036963697786705120Fc59310F747bCfD0', '0xFEF11BfA82A66e845Cb7EF815B83B2d22C324131'], - ['0x52Ada28F70BC8EBe5dd4381120d3CD76863919A8', '0x8A402a93469D5820079529CA093595e0d9AF62Ac'], - [ADDRESSES.pulse.PLSX, '0x0Ea7f06D7694058B82d46Fb5c9281e1843Aa8702'], - ['0xDe0220b69CE3e855a0124433A8E8D093f53A6bE4', '0xa1EAee97ee29e2C80ee9F1321E0132f19b45A26A'], - ] - }, - ethereum: { - tokensAndOwners: [ - ['0x9565c2036963697786705120Fc59310F747bCfD0', '0x3eFC853438e9c06130D104088d73647517617887'], - ['0x9565c2036963697786705120Fc59310F747bCfD0', '0xa1EAee97ee29e2C80ee9F1321E0132f19b45A26A'], - ['0xFD8b9Ba4845fB38c779317eC134b298C064937a2', '0x9b2B253D75DC61FC9ae512e04850e258bEbEf8C6'], - ['0x015628ce9150db1bce2fbb717a09e846f8a32436', '0x0e173B11523feB064FD483209d0eD534831A2a86'], - ['0x015628ce9150db1bce2fbb717a09e846f8a32436', '0x91c58Cf141ABBEB6aB8D83976103Bca70b69C24e'], - ['0x015628ce9150db1bce2fbb717a09e846f8a32436', '0xdf598bfe7b8eB5ABd217871317E31a48d9E4432F'], - ['0x52ada28f70bc8ebe5dd4381120d3cd76863919a8', '0xdBD90Fc90101Bdd5EE0e8b2C26A32c9E59047415'], - ['0x52ada28f70bc8ebe5dd4381120d3cd76863919a8', '0x0022E0C25BbA451b08942367b98e4B4a617538f2'], - ['0xDe0220b69CE3e855a0124433A8E8D093f53A6bE4', '0x664e78C17d64234440A26CA72a6946A270251059'], - ['0xDe0220b69CE3e855a0124433A8E8D093f53A6bE4', '0x211F7596Db264469c4114db5C41b86E173B0A29a'], - ['0x2de509bf0014ddf697b220be628213034d320ece', '0xB9BB00965AC5c8e8b261243C3C442E3F00B82C1F'], - ['0x2de509bf0014ddf697b220be628213034d320ece', '0xEA01a51a675170d4939C1439d558Eb3B896C29Ec'], - ] - } -} - -module.exports = { - misrepresentedTokens: true -} - -Object.keys(config).forEach(chain => { - const factory = config[chain] - const sConfig = staking[chain] - module.exports[chain] = { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), - staking: sConfig ? sumTokensExport(sConfig) : undefined - } -}) \ No newline at end of file diff --git a/projects/9mm-v2/index.js b/projects/9mm-v2/index.js deleted file mode 100644 index c56d3b888de..00000000000 --- a/projects/9mm-v2/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory addresses (0x3a0Fa7884dD93f3cd234bBE2A0958Ef04b05E13b for PulseChain) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - pulse: { - tvl: getUniTVL({ - factory: '0x3a0Fa7884dD93f3cd234bBE2A0958Ef04b05E13b', - useDefaultCoreAssets: true, - }), - }, - sonic: { - tvl: getUniTVL({ - factory: '0x0f7B3FcBa276A65dd6E41E400055dcb75BA66750', - useDefaultCoreAssets: true, - }), - }, - base: { - tvl: getUniTVL({ - factory: '0x4c1b8D4ae77A37b94e195CAB316391d3C687ebd1', - useDefaultCoreAssets: true, - }), - }, -} \ No newline at end of file diff --git a/projects/9mm-v3/index.js b/projects/9mm-v3/index.js deleted file mode 100644 index bf1ba782d9e..00000000000 --- a/projects/9mm-v3/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - pulse: { factory: '0xe50dbdc88e87a2c92984d794bcf3d1d76f619c68', fromBlock: 18942139, } , - base: { factory: '0x7b72C4002EA7c276dd717B96b20f4956c5C904E7', fromBlock: 15754625, }, - sonic: { factory: '0x924aee3929C8A45aC9c41e9e9Cdf3eA761ca75e5', fromBlock: 10079213 } -}) \ No newline at end of file diff --git a/projects/9summits/index.js b/projects/9summits/index.js deleted file mode 100644 index a6fc39b675e..00000000000 --- a/projects/9summits/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by 9Summits.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x23E6aecB76675462Ad8f2B31eC7C492060c2fAEF', - ], - morpho: [ - '0xb5e4576C2FAA16b0cC59D1A2f3366164844Ef9E0', // co-curator with tulip-capital - '0x1E2aAaDcF528b9cC08F43d4fd7db488cE89F5741', // co-curator with tulip-capital - '0x0bB2751a90fFF62e844b1521637DeD28F3f5046A', // co-curator with tulip-capital - ], - turtleclub: [ - '0xa853d8f5f253468495c5a92d54a3fe6cca2aa26b', - '0x7388d4b5c4cfc96c9105de913717ba7519178129', - '0xDe7CFf032D453Ce6B0a796043E75d380Df258812', - '0xAF87B90E8a3035905697E07Bb813d2d59D2b0951', - ], - }, - base: { - morphoVaultOwners: [ - '0x23E6aecB76675462Ad8f2B31eC7C492060c2fAEF', - ], - }, - unichain: { - morphoVaultOwners: [ - '0x59e608E4842162480591032f3c8b0aE55C98d104', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/ABCDEFX/index.js b/projects/ABCDEFX/index.js deleted file mode 100644 index 6e31454c9dd..00000000000 --- a/projects/ABCDEFX/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const chains = ['fantom', 'kcc', 'echelon', 'multivac', 'kava'] - -module.exports = { - misrepresentedTokens: true, - methodology: "Using DefiLlama's SDK for making on-chain calls to ABcDeFX Factory Contract to iterate over Liquidity Pools & count token balances therein.", -}; - -chains.forEach(chain => { - module.exports[chain] = { tvl: getUniTVL({ factory: '0x01F43D2A7F4554468f77e06757e707150e39130c', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'ABcDeFx.LP' }) } -}) -module.exports.echelon.tvl = () => ({}) \ No newline at end of file diff --git a/projects/AIDApp/index.js b/projects/AIDApp/index.js deleted file mode 100644 index f8379e232bb..00000000000 --- a/projects/AIDApp/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const CORE_POOL_ADDRESS = "0xC439be7A5623bA800E7450F2cb6eDBc5A1983685" - -module.exports = { - methodology: 'counts the number of NATIVE tokens in the Pool Bonding contract.', - core: { - tvl:sumTokensExport({ owner: CORE_POOL_ADDRESS, tokens: [nullAddress]}), - } -} \ No newline at end of file diff --git a/projects/AggreLend/idl.json b/projects/AggreLend/idl.json deleted file mode 100644 index 5434a8aacdf..00000000000 --- a/projects/AggreLend/idl.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": "0.1.0", - "name": "aggrelend", - "instructions": [], - "accounts": [ - { - "name": "PoolVault", - "type": { - "kind": "struct", - "fields": [ - {"name": "vault", "type": "publicKey"}, - {"name": "tokenMint", "type": "publicKey"}, - {"name": "depositTokens", "type": "u64"}, - {"name": "scaledShares", "type": "u128"}, - {"name": "lastAccruedTime", "type": "i64"}, - {"name": "cumulativeYieldIndex", "type": "u128"}, - {"name": "hasMarket", "type": {"array": ["bool", 45]}}, - {"name": "rewards", "type": "u64"}, - {"name": "boost", "type": "bool"}, - {"name": "bump", "type": "u8"} - ] - } - } - ], - "events": [], - "errors": [], - "types": [] -} \ No newline at end of file diff --git a/projects/AggreLend/index.js b/projects/AggreLend/index.js deleted file mode 100644 index 1842329a4ed..00000000000 --- a/projects/AggreLend/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getProvider } = require('../helper/solana') -const { Program } = require('@project-serum/anchor') -const idl = require('./idl.json') - -const PROGRAM_ID = 'AGGREbma2Gi9unS1mPptAcG4HmkMTLNmqcunYaSSf46b' - -const tvl = async (api) => { - const provider = getProvider() - const program = new Program(idl, PROGRAM_ID, provider) - - const vaults = await program.account.poolVault.all() - - for (const { account: pool } of vaults) - api.add(pool.tokenMint.toBase58(), pool.depositTokens.toString()) -} - -module.exports = { - methodology: 'Sum of all assets deposited into the AggreLend protocol for yield aggregation.', - doublecounted: true, - timetravel: false, - solana: { tvl }, -} diff --git a/projects/Akitaswap/index.js b/projects/Akitaswap/index.js deleted file mode 100644 index 1620a4a5e2e..00000000000 --- a/projects/Akitaswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - - blast: { - tvl: getUniTVL({ - factory: "0x27C429dfF0e6d3B43B2C404C35f58C2b36cef916", - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/AnonSocial/index.js b/projects/AnonSocial/index.js deleted file mode 100644 index 134fb8399f2..00000000000 --- a/projects/AnonSocial/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0x76192E7cD69bb6F7992E4d996790942653b9F704"; - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }); -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl, - }, -}; diff --git a/projects/ArbiTen/contracts.json b/projects/ArbiTen/contracts.json deleted file mode 100644 index 8d4c241388f..00000000000 --- a/projects/ArbiTen/contracts.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "weth": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - "_10SHARE": "0xc8a1c0D8255bc2eB5f6236e119E3428FD0c33A74", - "boardroom": "0xCa262a493aA4FBA5c6913c6FC3AD0bC724f37A2E", - "masterchef": "0xd3f9f6D52f46BF047388FA0EA19F9e671eaD080a", - "ironPool": "0x9388160a6f9F3B58Ac95A50A4B58Cd3034535790", - "arbiten": "0x3e6b3021Dab44dEbf93091030DbFCBdf52464Afe", - "WHEAT": "0x384f5698aB5B73470F8741b38aD4ABBC84F3fCC1" -} diff --git a/projects/ArbiTen/index.js b/projects/ArbiTen/index.js deleted file mode 100644 index bf1b5fa13cf..00000000000 --- a/projects/ArbiTen/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const contracts = require("./contracts.json"); - -const { masterchefExports, sumTokensExport } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - - -module.exports = mergeExports([ - masterchefExports({ chain: 'arbitrum', masterchef: contracts.masterchef, nativeTokens: [contracts.WHEAT, contracts.arbiten, contracts._10SHARE], useDefaultCoreAssets: true,}), - { - arbitrum: { - tvl: sumTokensExport({ owner: contracts.ironPool, tokens: [contracts.weth]}), - staking: sumTokensExport({ owner: contracts.boardroom, tokens: [ contracts.arbiten, contracts._10SHARE], lps: ['0x653c1b00eb6d6039d27e0d8a6d1f337f98156a04', '0xc76ccfcb48c423127672bdb9c1d6c80d3f945295'], useDefaultCoreAssets: true, }), - } - }, -]) \ No newline at end of file diff --git a/projects/ArbitrumExchange/index.js b/projects/ArbitrumExchange/index.js deleted file mode 100644 index 5c7454795d9..00000000000 --- a/projects/ArbitrumExchange/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') -const ARX = "0xD5954c3084a1cCd70B4dA011E67760B8e78aeE84"; - -const dexTVL = getUniTVL({ factory: '0x1C6E968f2E6c9DEC61DB874E28589fd5CE3E1f2c', useDefaultCoreAssets: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0x1C6E968f2E6c9DEC61DB874E28589fd5CE3E1f2c) address and whitelisted tokens address to find and price Liquidity Pool pairs. We also have our native token $ARX staking.`, - arbitrum: { - tvl: dexTVL, - staking: sumTokensExport({ - owners: ['0xd2bcFd6b84E778D2DE5Bb6A167EcBBef5D053A06', '0xee1D57aCE6350D70E8161632769d29D34B2FbfC8', '0x907E5d334F27a769EF779358089fE5fdAA6cf2Bb', '0x75Bca51be93E97FF7D3198506f368b472730265a', '0x466f4380327cD948572AE0C98f2E04930ce05767'], - tokens: [ARX], - }) - } -}; diff --git a/projects/ArchimedesFinance/archimedesVaultAbi.json b/projects/ArchimedesFinance/archimedesVaultAbi.json deleted file mode 100644 index 6970014587f..00000000000 --- a/projects/ArchimedesFinance/archimedesVaultAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalAssets": "function totalAssets() view returns (uint256)" -} \ No newline at end of file diff --git a/projects/ArchimedesFinance/curvePoolAbi.json b/projects/ArchimedesFinance/curvePoolAbi.json deleted file mode 100644 index 923224d48d6..00000000000 --- a/projects/ArchimedesFinance/curvePoolAbi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "balances": "function balances(uint256 arg0) view returns (uint256)" -} - \ No newline at end of file diff --git a/projects/ArchimedesFinance/index.js b/projects/ArchimedesFinance/index.js deleted file mode 100644 index 329e378caca..00000000000 --- a/projects/ArchimedesFinance/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const curvePoolAbi = require('./curvePoolAbi.json'); -const archimedesVaultAbi = require('./archimedesVaultAbi.json') -const ERC20_TOKEN_3CRV = "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490"; -const POOL_CONTRACT_LVUSD_3CRV = "0xe9123cbc5d1ea65301d417193c40a72ac8d53501"; -const POOL_INDEX_3CRV = 1; -const ARCHIMEDES_VAULT_OUSD = "0x4c12c57C37Ff008450A2597e810B51B2BbA0383A"; -const ERC20_TOKEN_OUSD = "0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86"; - -async function tvl(api) { - // 3CRV liquidity in LVUSD-3CRV curve pool - const poolLiquidity3CRV = await api.call({ target: POOL_CONTRACT_LVUSD_3CRV, abi: curvePoolAbi.balances, params: POOL_INDEX_3CRV }); - - // Total OUSD held in vault - const totalAssetsOUSD = await api.call({ target: ARCHIMEDES_VAULT_OUSD, abi: archimedesVaultAbi.totalAssets }); - - api.add(ERC20_TOKEN_3CRV, poolLiquidity3CRV) - api.add(ERC20_TOKEN_OUSD, totalAssetsOUSD) -} - -module.exports = { - methodology: 'total 3CRV liquidity in curve pool + total OUSD assets in protocol vault.', - ethereum: { - tvl: tvl, - } -}; \ No newline at end of file diff --git a/projects/Astra/index.js b/projects/Astra/index.js deleted file mode 100644 index 27d31e093f5..00000000000 --- a/projects/Astra/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORY = "0x2b6852CeDEF193ece9814Ee99BE4A4Df7F463557" // This factory is on AirDAO Mainnet (Chain Id: 16718) - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address to find and price Liquidity Pool pairs.`, - airdao: { - tvl: dexTVL - } -}; diff --git a/projects/AstroFi/index.js b/projects/AstroFi/index.js deleted file mode 100644 index b002b537346..00000000000 --- a/projects/AstroFi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') -const AFI = "0x360111d897d32614619F37f151061c8D431a47f9"; - -const dexTVL = getUniTVL({ factory: '0xd430999a8034cbc0eC84f7e5C6442470D20ef997', useDefaultCoreAssets: true, }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0xd430999a8034cbc0eC84f7e5C6442470D20ef997) address and whitelisted tokens address to find and price Liquidity Pool pairs. We also have our native token $AFI staking.`, - ethereum: { - tvl: dexTVL, - staking: sumTokensExport({ - owners: ['0x08d1199E3Be6e703644ac83C3159F6E169089996', '0xe8054a77fAb0ca0e1f7a750f34B9E064b366ebe6'], - tokens: [AFI], - }) - } -}; diff --git a/projects/Atlantis-algebra/index.js b/projects/Atlantis-algebra/index.js deleted file mode 100644 index 69e56f5eb8c..00000000000 --- a/projects/Atlantis-algebra/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -const ATLANTIS_ALGEBRA_FACTORY = "0x7C839669a12FAE0BFBE2F6a16516Dd2ADc2F1a1b" - -module.exports = uniV3Export({ - sonic: { - factory: ATLANTIS_ALGEBRA_FACTORY, - fromBlock: 33883713, - isAlgebra: true - } -}); \ No newline at end of file diff --git a/projects/Atrofarm/index.js b/projects/Atrofarm/index.js deleted file mode 100644 index 0b5c48bd180..00000000000 --- a/projects/Atrofarm/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { masterchefExports } = require("../helper/unknownTokens"); -const sdk = require('@defillama/sdk') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = masterchefExports({ - chain: 'pulse', - masterchef: '0x86dd9C95E9d504648d40732c925438C6984Fac4A', - nativeTokens: ['0x303f764A9c9511c12837cD2D1ECF13d4a6F99E17'], - useDefaultCoreAssets: true, -}) - -module.exports.pulse.tvl = sdk.util.sumChainTvls([module.exports.pulse.tvl, sumTokensExport({ - tokensAndOwners: [[ADDRESSES.pulse.DAI, '0x5726f36e62cf761332F5c655b68bc2E5D55ED083'], - [ADDRESSES.pulse.WPLS, '0xc4d4fb6cAD2931e65C0BF44b2A3fA9C598ADd37B'], - [ADDRESSES.pulse.PLSX, '0x8615545328F1F6c8cefe8b48ad48c231731433ea']], -})]) - diff --git a/projects/AvoLend/index.js b/projects/AvoLend/index.js deleted file mode 100644 index e4d354ef8ee..00000000000 --- a/projects/AvoLend/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - blast: compoundExports2({ - comptroller: '0xe20cE0Db739e4B6Afa9989c87bE7C8C25cbeB5Ea', - cether: '0x29e15766d6b203C35c2D51AAEc4Cf964129Af088', - }), -}; -module.exports.deadFrom='2024-04-03', -module.exports.blast.borrowed = () => ({}) // bad debt diff --git a/projects/AxiaProtocol/index.js b/projects/AxiaProtocol/index.js deleted file mode 100644 index d8e9eff8ffc..00000000000 --- a/projects/AxiaProtocol/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { unwrapBalancerToken } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const axiaPoly = '0x49690541e3f6e933a9aa3cffee6010a7bb5b72d7' -const lonePoolPoly = '0x6c43cd84f2199eef1e7fcf169357b6c7948efe03' -const swapPoolPoly = '0xabf1dafecc1d8b3949092bab9dff8da7d63c69b1' -const swapPoolLPoly = '0xfa447eec17206c4948cba28a229346af925c2b07' - -const axiaEth = '0x793786e2dd4cc492ed366a94b88a3ff9ba5e7546' -const lonelyPoolEth = '0x9dEd3b9d0bd9cc4DE698dcebeBb68b1f0033c0C8' -const swapPoolEth = '0xA5130fc368cAAd25450cB5aD1D3718BAB7e558dA' -const swapPoolLPEth = '0x1e0693f129D05E5857A642245185ee1fca6A5096' -const defiFundEth = '0x2b79d8dCbF26c5B690145130006Be06D1324C2b2' -const defiFundLPEth = '0x4833e8b56fc8e8a777fcc5e37cb6035c504c9478' -const oracleFundEth = '0x152959A2f50D716707fEa4897e72C554272dC584' -const oracleFundLPEth = '0xbf11db4e63c72c5dffde0f5831d667817c9e9ad5' - -async function tvl(api) { - const balances = {} - - await Promise.all([ - unwrapBalancerToken({ api, owner: defiFundEth, balancerToken: defiFundLPEth, balances, isBPool: true, isV2: false, }), - unwrapBalancerToken({ api, owner: oracleFundEth, balancerToken: oracleFundLPEth, balances, isBPool: true, isV2: false, }), - ]) - - return balances -} - -module.exports = { - doublecounted: true, - polygon: { - pool2: staking(swapPoolPoly, swapPoolLPoly), - staking: staking(lonePoolPoly, axiaPoly) - }, - - ethereum: { - tvl, - pool2: staking(swapPoolEth, swapPoolLPEth), - staking: staking(lonelyPoolEth, axiaEth), - } -} diff --git a/projects/BBQSwap/index.js b/projects/BBQSwap/index.js deleted file mode 100644 index 7db1599e9a6..00000000000 --- a/projects/BBQSwap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('ham', '0x7304e5751973113fA7c4FFf677871B926258f27e') diff --git a/projects/BagelFinance/index.js b/projects/BagelFinance/index.js deleted file mode 100644 index d66e8bdb5b9..00000000000 --- a/projects/BagelFinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -// Bagel Finance Vault Contract Addresses -const VAULT_ADDRESSES = [ -// Restore the original vault address - "UQCAE4qPVnHfpJ-iMF736utV1q8rruv2KRwi-wPw9Bx9ldAC" -]; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: 'Counts the total value of assets locked in all Bagel Finance vaults.', - ton: { - tvl: sumTokensExport({ owners: VAULT_ADDRESSES, tokens: [ADDRESSES.null] }), - } -} \ No newline at end of file diff --git a/projects/BagelFinance_/index.js b/projects/BagelFinance_/index.js deleted file mode 100644 index daf7e31983a..00000000000 --- a/projects/BagelFinance_/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -// Bagel Finance Vault Contract Addresses -const VAULT_ADDRESSES = [ - // TON DeFi Index - "EQAnERLO28c_3ikzJNvNoTVSXJSTKNi-KBWf4n_VJcZK_BnE", - // TON LSTs Index - "EQD-KyngZ3TD72CAcf8MyzceFNH_w1wWmeOZbbff9X-lWzQE", - // TON USDs Index - "EQC2MoinDLndsppOd-i0FhPlZby5SlL3l5txPNP_u-vSpO3P", - // TON OGs Index - "EQBYFBWkDvzqY88BZ9S2U-8F4k8Xay-rfxCgzv--FepcBKJW" -]; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: 'Counts the total value of assets locked in all Bagel Finance vaults.', - ton: { - tvl: sumTokensExport({ owners: VAULT_ADDRESSES, tokens: [ADDRESSES.null] }), - } -} \ No newline at end of file diff --git a/projects/BakedPotatoes/index.js b/projects/BakedPotatoes/index.js deleted file mode 100644 index 7575fda89b8..00000000000 --- a/projects/BakedPotatoes/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xD0A03C69a55b8915e587e5343dfD1A17e8FD83c2" - -async function tvl(time, ethBlock, { dogechain: block }) { - return sumTokens2({ tokens: [nullAddress], owner: contract, block, chain: 'dogechain', }) -} - -module.exports = { - methodology: `We count the WDOGE on ${contract}`, - dogechain: { - tvl - } -} \ No newline at end of file diff --git a/projects/BallExchange/index.js b/projects/BallExchange/index.js deleted file mode 100644 index 4fbaaa8879d..00000000000 --- a/projects/BallExchange/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shibarium', '0x6d17c4d4524de46e33a09deb37ad6e7e87780137', { }) diff --git a/projects/BankOfCronos/index.js b/projects/BankOfCronos/index.js deleted file mode 100644 index 368edeec234..00000000000 --- a/projects/BankOfCronos/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - cronos: { - tvl: () => 0 - }, - methodology: - "CDP collateral value + treasury mv", -}; - diff --git a/projects/BankofCronos-Loans/index.js b/projects/BankofCronos-Loans/index.js deleted file mode 100644 index 4aed7b4fbd0..00000000000 --- a/projects/BankofCronos-Loans/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// Active Pool holds total system collateral value(deposited collateral) -const ACTIVE_POOL_ADDRESS = "0xa86Ba8b60Aa4d943D15FF2894964da4C2A8F1B03"; - -async function tvl(api) { - const [tokens] = await api.call({ target: ACTIVE_POOL_ADDRESS, abi: 'function getAllCollateral() view returns (address[], uint256[])' }) - return sumTokens2({ api, owner: ACTIVE_POOL_ADDRESS, tokens }) -} - -module.exports = { - cronos: { - tvl, - }, - methodology: "Total CDP collateral value", -}; diff --git a/projects/BeetrootFinance/index.js b/projects/BeetrootFinance/index.js deleted file mode 100644 index e393bbdb962..00000000000 --- a/projects/BeetrootFinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -const { fetchURL } = require('../helper/utils'); -const ADDRESSES = require("../helper/coreAssets.json"); - -async function tvl(api) { - const response = await fetchURL('https://api.beetroot.finance/v1/metrics'); - api.add(ADDRESSES.ton.USDT, response.data.tvl * 1e6); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: `TVL calculation methodology consists of the delta between onchain USDT deposits and withdrawals`.trim(), - ton: { - tvl - } -} \ No newline at end of file diff --git a/projects/BetterSwap/index.js b/projects/BetterSwap/index.js deleted file mode 100644 index 3de73461f1f..00000000000 --- a/projects/BetterSwap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'vechain': '0x5970dcbebac33e75eff315c675f1d2654f7bf1f5' -}) \ No newline at end of file diff --git a/projects/BitbondLockers/config.json b/projects/BitbondLockers/config.json deleted file mode 100644 index c8db22e9d32..00000000000 --- a/projects/BitbondLockers/config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "chainMapping": { - "arbitrum": "arbitrum", - "avax": "avalanche", - "base": "base", - "bsc": "bsc", - "ethereum": "ethereum", - "optimism": "optimism", - "polygon": "polygon" - }, - "metisBaseUrl": "https://metis.bitbond.com/api/defillama", - "userAgents": [ - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36", - "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" - ] -} diff --git a/projects/BitbondLockers/index.js b/projects/BitbondLockers/index.js deleted file mode 100644 index 6341aac2bad..00000000000 --- a/projects/BitbondLockers/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { get } = require('../helper/http'); -const { sumUnknownTokens } = require('../helper/unknownTokens'); -const { isLP } = require("../helper/unwrapLPs"); - -const { chainMapping, userAgents, metisBaseUrl } = require("./config.json"); - -async function fetchLockers(networkName) { - let contracts = []; - let currentPage = 1; - let isLastPage = false; - - while (!isLastPage) { - const response = await get( - `${metisBaseUrl}/${networkName}/token-lockers?page=${currentPage}&perPage=100`, - { - headers: { - Accept: "application/json", - "User-Agent": getRandomUserAgent(), - } - } - ); - - contracts.push(...response.meta.contracts); - - const pagination = response.meta.pagination; - isLastPage = pagination ? pagination.isLastPage : true; - currentPage = pagination ? pagination.nextPage : currentPage; - } - - return contracts; -} - -function getRandomUserAgent() { - const randomIndex = Math.floor(Math.random() * userAgents.length); - return userAgents[randomIndex]; -} - -async function tvl(api) { - const networkName = chainMapping[api.chain]; - const lockers = await getConfig(`bitbond/locker/${networkName}`, undefined, { - fetcher: () => fetchLockers(networkName) - }); - const tokens = lockers.map((locker) => locker.tokenAddress); - const symbols = await api.multiCall({ abi: 'string:symbol', calls: tokens, permitFailure: true, }) - const tokensAndOwners = [] - tokens.forEach((token, i) => { - const symbol = symbols[i] - if (isLP(symbol, token, api.chain)) { - tokensAndOwners.push([token, lockers[i].address]) - } - }) - - return sumUnknownTokens({api, resolveLP: true, useDefaultCoreAssets: true, tokensAndOwners, }); -} - -Object.keys(chainMapping).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/BitbondSales/config.json b/projects/BitbondSales/config.json deleted file mode 100644 index c8db22e9d32..00000000000 --- a/projects/BitbondSales/config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "chainMapping": { - "arbitrum": "arbitrum", - "avax": "avalanche", - "base": "base", - "bsc": "bsc", - "ethereum": "ethereum", - "optimism": "optimism", - "polygon": "polygon" - }, - "metisBaseUrl": "https://metis.bitbond.com/api/defillama", - "userAgents": [ - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36", - "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" - ] -} diff --git a/projects/BitbondSales/index.js b/projects/BitbondSales/index.js deleted file mode 100644 index 114cc89cae2..00000000000 --- a/projects/BitbondSales/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { get } = require('../helper/http'); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const { chainMapping, userAgents, metisBaseUrl } = require("./config.json"); - -async function fetchSales(networkName) { - let contracts = []; - let currentPage = 1; - let isLastPage = false; - - while (!isLastPage) { - const response = await get( - `${metisBaseUrl}/${networkName}/token-sales?page=${currentPage}&perPage=100`, - { - headers: { - Accept: "application/json", - "User-Agent": getRandomUserAgent(), - } - } - ); - - contracts.push(...response.meta.contracts); - - const pagination = response.meta.pagination; - isLastPage = pagination ? pagination.isLastPage : true; - currentPage = pagination ? pagination.nextPage : currentPage; - } - - return contracts; -} - -function getRandomUserAgent() { - const randomIndex = Math.floor(Math.random() * userAgents.length); - return userAgents[randomIndex]; -} - -async function tvl(api) { - const networkName = chainMapping[api.chain]; - const sales = await getConfig(`bitbond/sales/${networkName}`, undefined, { - fetcher: () => fetchSales(networkName) - }); - const tokensAndOwners = sales.map((sale) => [sale.currencyAddress, sale.address]); - return sumTokens2({ api, tokensAndOwners }); -} - -Object.keys(chainMapping).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/BlastNYAN/index.js b/projects/BlastNYAN/index.js deleted file mode 100644 index f08da36369d..00000000000 --- a/projects/BlastNYAN/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens') -const WETH = ADDRESSES.blast.WETH -const BLNYAN = '0x9aAC39ca368D27bf03887CCe32f28b44F466072F' -const BLNYAN_WETH_SLP = '0x0E9309f32881899F6D4aC2711c6E21367A84CA26' - -const stakingBLNYANContract = '0xA76D6dc805d0EbEcb3787c781ce3A18feEF020cb' -const feeDistro = '0xBC8a7a845cC7A8246EB34856Afe6f1a3d62BD9C6' -const stakeLpEarnWeth = '0xF63Ef9F4320f9d16731a40ff1f58a966ee086806' -const button = '0x00066Ed6c2F7d6CC6e66c678BaEE2C8683B632e6' -const lockPoints = '0x46B3a66ef4fAC801B455884035eF2862F01e6158' -const opts = { useDefaultCoreAssets: true, lps: [BLNYAN_WETH_SLP] } - -module.exports = { - misrepresentedTokens: true, - blast: { - tvl: sumTokensExport({ - owners: [lockPoints, feeDistro, button], - tokens: [WETH], - ...opts, - }), - pool2: sumTokensExport({ - ...opts, - owners: [stakeLpEarnWeth], - tokens: [BLNYAN_WETH_SLP], - }), - staking: sumTokensExport({ - owners: [stakingBLNYANContract, lockPoints], - tokens: [BLNYAN], - ...opts, - }), - }, - methodology: - 'Counts as TVL the ETH only. blNYAN and LP assets deposited are counted as Pool2 and staking Respectively', -} diff --git a/projects/Blaster/index.js b/projects/Blaster/index.js deleted file mode 100644 index 0b143c53025..00000000000 --- a/projects/Blaster/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ blast: { factory: "0x9792FaeA53Af241bCE57C7C8D6622d5DaAD0D4Fc", fromBlock: 693561, }, }) - diff --git a/projects/Blinkswap/index.js b/projects/Blinkswap/index.js deleted file mode 100644 index a65ce1beb56..00000000000 --- a/projects/Blinkswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - blast: { - tvl: getUniTVL({ - factory: "0xFfbDb302f29B29ee45D650DF44889450d252d868", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/BombFinance/index.js b/projects/BombFinance/index.js deleted file mode 100644 index 9131b74ecab..00000000000 --- a/projects/BombFinance/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0xD9473A05b2edf4f614593bA5D1dBd3021d8e0Ebe' -}) \ No newline at end of file diff --git a/projects/BoneSwap/index.js b/projects/BoneSwap/index.js deleted file mode 100644 index 1f3782fd875..00000000000 --- a/projects/BoneSwap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - - -const chef = "0x7fB524301283BCc0dEf0FaECc19c490bCEeB67AC" -const bone = "0x16d0046597b0E3B136CDBB4edEb956D04232A711" -const bonewdogeLP = "0x552de336afae1cd17bf1df517403f686f550f21e" -const bonebusdLP = "0x5704d76389bfbde1ab2b642ed9ea720bace88cc9"; - -module.exports = masterchefExports({ chain: 'dogechain', nativeToken: bone, masterchef: chef, useDefaultCoreAssets: true, lps: [bonewdogeLP, bonebusdLP, ]}) \ No newline at end of file diff --git a/projects/BroSwap/index.js b/projects/BroSwap/index.js deleted file mode 100644 index 347f9bc1902..00000000000 --- a/projects/BroSwap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ factory: '0x8edF7B8411b2e5dB740dbbf949E011e59fc7980a', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/Caketomb/index.js b/projects/Caketomb/index.js deleted file mode 100644 index acb6f205c5a..00000000000 --- a/projects/Caketomb/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const {pool2} = require("../helper/pool2"); -const { staking } = require("../helper/staking"); - -const shares = "0x9f8349C33B942b6CBb15426E02b5Bbb77fAeB64f"; -const shareRewardPool = "0x02361bAd5b50AfDDea2d8c4359a8C9595445a90D"; -const boardroom = "0xcE2912101EF05034Eb2FA818dd6e57Ab09c8Ca73"; - -const pancakeLPs = [ - "0xdAaf38D37A055F3592f0c86f156Ee8Bff23c1248", // SHARE-WBNB - "0x252b69d00339D9aAdEEB324dcB6E04381B272340" // CAKETOMB-BNB -] - -module.exports = { - deadFrom: 1648765747, - bsc: { - tvl: async () => ({}), - staking: staking(boardroom, shares), - pool2: pool2(shareRewardPool, pancakeLPs, "bsc", addr=>`bsc:${addr}`) - } -} diff --git a/projects/CatFee/index.js b/projects/CatFee/index.js deleted file mode 100644 index 8f0e43ac376..00000000000 --- a/projects/CatFee/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { nullAddress, sumTokensExport } = require("../helper/unwrapLPs"); - - const addresses = [ - 'TPJtvpmtvBTydEfCtdaT9XAH5oTTkFNPXX', - 'TKoffapJgw2E586kp9taJvjqdfpiKrWKWG', - 'TN9EhKWtH4jvtx9xr8fFaA3qfuopdpvjhf', - 'TYEMUMKBmkTRMa1CNh7xkNYZ2mTVFw9f1a', - 'TTWkCVPbRdjzLHcrYaMYecuqpQSHQ37hWZ', - 'TELWKqZ2oCU8KwdMafysD7hDrmaMMo9nRc', - 'TAA5NR8zCfzFpDJDeQ4316uE1LAQfiiQpK', - 'THVmdJwcuXi3So9U3v6an4dTkXmQdNQ9BB', - 'TB8XwKU6agKskNUqFK3mcNc8eu4VVd31WV' - ] - - module.exports = { - tron: { - tvl: sumTokensExport({owners: addresses, tokens: [nullAddress] }), - }, - timetravel: false, - }; diff --git a/projects/ChewySwap/index.js b/projects/ChewySwap/index.js deleted file mode 100644 index a9fd234b1ab..00000000000 --- a/projects/ChewySwap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - shibarium: { - tvl: getUniTVL({ factory: "0xEDedDbde5ffA62545eDF97054edC11013ED72125", useDefaultCoreAssets: true,}) - }, - dogechain: { - tvl: getUniTVL({ factory: "0x7C10a3b7EcD42dd7D79C0b9d58dDB812f92B574A", useDefaultCoreAssets: true,}) - } -} \ No newline at end of file diff --git a/projects/ChirpFinance/index.js b/projects/ChirpFinance/index.js deleted file mode 100644 index 9b14b8cc4a2..00000000000 --- a/projects/ChirpFinance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "pulse", - masterchef: "0x8d1e3458dA9E8a685732322D435178E790486651", - nativeTokens: ["0xCa66B54a8A4AD9a231DD70d3605D1ff6aE95d427"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); diff --git a/projects/Chocoinu/index.js b/projects/Chocoinu/index.js deleted file mode 100644 index ee0967d634f..00000000000 --- a/projects/Chocoinu/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - avax: { tvl: getUniTVL({ factory: '0x49a5044268A54467a94905d1458A88413695afc1', useDefaultCoreAssets: true,}), }, -} diff --git a/projects/CirclePacific/index.js b/projects/CirclePacific/index.js deleted file mode 100644 index b27a255faca..00000000000 --- a/projects/CirclePacific/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - manta: { tvl: getUniTVL({ factory: '0xD8c3DBE9C3953Fda5e4573533e662C58A37E1455', useDefaultCoreAssets: true, }), }, -} diff --git a/projects/CofferCity/index.js b/projects/CofferCity/index.js deleted file mode 100644 index f69ddf12ef1..00000000000 --- a/projects/CofferCity/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const abi = { - "getSupportedTokens": "function getSupportedTokens() view returns (address[] supportedTokens)" -} - -const config = { - kava: { - CofferCityKAVA: '0x860880862Ee1B74D00E2F94B1C81A67C2c58117E' - } -} - -module.exports = { - methodology: 'Counts TVL of all the assets supported by the Coffer City smart contracts' -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const vaults = Object.values(config[chain]) - const tokens = await api.multiCall({ abi: abi.getSupportedTokens, calls: vaults }) - const ownerTokens = vaults.map((v, i) => [tokens[i], v]) - return api.sumTokens({ ownerTokens }) - } - } -}) diff --git a/projects/ColaFactory/index.js b/projects/ColaFactory/index.js deleted file mode 100644 index e34b1fc206d..00000000000 --- a/projects/ColaFactory/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "pulse", - masterchef: "0x5Fe423A22d4bFD1caFd6044042f4269Fc930F8dC", - nativeTokens: ["0x02Dff78fDeDaF86D9dfbe9B3132aA3Ea72Ed1680"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, - blacklistedTokens: ['0x9bd778df9b803a2df1fbe94ca9b5765cdb299a23'], -}); diff --git a/projects/CollectifDAO/index.js b/projects/CollectifDAO/index.js deleted file mode 100644 index dea3fd3db3d..00000000000 --- a/projects/CollectifDAO/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const {nullAddress} = require("../helper/tokenMapping"); -const {get} = require("../helper/http"); - -const COLLECTIF_LIQUID_STAKING_POOL_CONTRACT = "0xd0437765D1Dc0e2fA14E97d290F135eFdf1a8a9A"; // pool address -const COLLECTIF_SPS_COLLATERAL_CONTRACT = "0x3D52874772C66466c93E36cc3782946fd0FA7666"; - -const totalAssetsABI = "function totalAssets() public view returns (uint256)"; -const getCollateralABI = "function getCollateral(uint64 _ownerId) public view returns (uint256, uint256)"; - -const getMinersOwners = async () => { - try { - const data = await get('https://app.collectif.finance/data/owners.json'); - return data.owners; - } catch (e) { - return []; - } -} - - -module.exports = { - methodology: - "Collectif DAO is a non-custodial liquid staking protocol on Filecoin. It allows users stake FIL tokens to the pool and get back clFIL token, which is a native yield bearing liquid staking asset on Filecoin. This TVL calculation returns total amount of assets backing clFIL, that includes buffered capital in the pool, pledged capital to the Filecoin Storage Providers (miners) and liquid FIL collateral provided by Storage Providers to cover potential slashing risks", - filecoin: { - tvl: async (_, _1, _2, {api}) => { - const fetchCollateral = async (owner) => api.call({ - abi: getCollateralABI, - target: COLLECTIF_SPS_COLLATERAL_CONTRACT, - params: [owner.slice(2)] - }); - - const minersOwners = await getMinersOwners(); - const totalStaked = await api.call({abi: totalAssetsABI, target: COLLECTIF_LIQUID_STAKING_POOL_CONTRACT}); - - let totalCollateral = 0 - - if (minersOwners && minersOwners.length > 0) { - const collaterals = await Promise.all(minersOwners.map(fetchCollateral)); - totalCollateral = collaterals.reduce((acc, cur) => { - const [available, locked] = cur; - return acc + +available + +locked - }, 0); - } - - api.add(nullAddress, totalStaked) - api.add(nullAddress, totalCollateral) - }, - }, -}; diff --git a/projects/CreampanFinance/index.js b/projects/CreampanFinance/index.js deleted file mode 100644 index cc0a93c3925..00000000000 --- a/projects/CreampanFinance/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { queryV1Beta1 } = require("../helper/chain/cosmos"); - -const accounts = Object.values({ - account1: 'cro1l3weyh4fkneyeatdh6jwp0u0t4qha22ycpnq7r', - account2: 'cro1zqvl7yj0zcqe7p0qnpg0sk94gpa38hzwz8shjn', - account3: 'cro1pduq0ga2ans0sspph6r5hcf77cqypz6de7n64y', - account4: 'cro1fncg0fsr8vt30qaqmzqxunnrkxr6a7xxkfpr7y', - account5: 'cro1hhfh6xaflg8zwhwvrs7sgur2pyfunjqeu8wsd6', - account6: 'cro1a2vawclcntewtjd5jfjf44dr6mdfdyg8xzfe5t', - account7: 'cro1wc43z84u8keas3ffw4ynapwe0hzfen3xx03dpd', - account8: 'cro1ujkwlnfnl3mmka4twqx07azxk6djlplddcn48h', - account9: 'cro16wzuj3a9tdqk9z3edx587athz2kk75gj2l6etk', - account10: 'cro1hfx8t4nldtfk5w6h6eherfts4gtelvcn0dypc3', -}) - -async function tvl(api) { - const data = await Promise.all(accounts.map(account => queryV1Beta1({ chain: 'cronos', url: `/staking/v1beta1/delegations/${account}`, }))); - const data2 = await Promise.all(accounts.map(account => queryV1Beta1({ chain: 'cronos', url: `/staking/v1beta1/delegators/${account}/unbonding_delegations`, }))); - const factory_contract_address = '0x66f5997b7810723aceeeb8a880846fc117081bd0'; - const factoryV2_contract_address = '0xfd3300b2441072b35554f1043c3d3a413fd5c219'; - data.map(i => i.delegation_responses).flat().forEach(i => api.add(ADDRESSES.cronos.WCRO, i.balance.amount * 1e10)) - - for (let j = 0; j < accounts.length; j++) { - if (Number(data2[j].pagination.total) > 0) { - data2[j].unbonding_responses[0].entries.flat().forEach(i => api.add(ADDRESSES.cronos.WCRO, i.balance * 1e10)) - } - } - - return api.sumTokens({ owners: [factory_contract_address, factoryV2_contract_address], tokens: [ADDRESSES.cronos.WCRO_1] }) -} - -module.exports = { - timetravel: false, - methodology: `The TVL is counted as the total delegated CRO and the flexible pool CRO. We query the crypto.org api for the delegations and sum up the CRO being delegated. We query the balanceOf the flexible pool address from WCRO contract`, - cronos: { - tvl, - } -} diff --git a/projects/CryptooTech/index.js b/projects/CryptooTech/index.js deleted file mode 100644 index b1e00681f6f..00000000000 --- a/projects/CryptooTech/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x4a3720A09a90A82170779c972832eD04542deeAC" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - arbitrum: { - tvl - } -} diff --git a/projects/CthulhuFinance/index.js b/projects/CthulhuFinance/index.js deleted file mode 100644 index 506c8e7acba..00000000000 --- a/projects/CthulhuFinance/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumUnknownTokens } = require("../helper/unknownTokens") - -function vaultTvl(vaults) { - return async (api) => { - const [tokens, bals] = await Promise.all([ - api.multiCall({ abi: 'address:want', calls: vaults }), - api.multiCall({ abi: 'uint256:balance', calls: vaults }), - ]) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, tokensAndOwners: [], useDefaultCoreAssets: true, lps: ['0xb220503db292a4d01fdb1725b95c0bdd734a6ce3'], resolveLP: true, }) - } -} - -module.exports = { - hallmarks: [ - [1679788800, "Rug Pull"] - ], - deadFrom: 1679788800, - optimism: { - tvl: vaultTvl([ - "0xF6a6C4573099E6F6b9D8E1186a2C089B4d0fDf91", - "0x8296E2C3a78EdfEf9847F7Bcb6Cf57e09fDA5B83", - "0xabd80105bb547904e5B33A41e84FFFCF1623f5A9", - "0xeb2e04225D9a570eBd1C9577FfAF401ee076b7FD", - ]), - pool2: vaultTvl(['0xD61eE9E1991A22660FF10161926FF24B98Ad7918']), - staking: vaultTvl(['0xFca7B025449373fdDE24acCA662304b36cFd26a8']), - } -} - diff --git a/projects/DESK/index.js b/projects/DESK/index.js deleted file mode 100644 index d789b85ec4e..00000000000 --- a/projects/DESK/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -async function baseTvl(api) { - const tokensAndOwners = [ - [ADDRESSES.base.USDC, "0x395c7f20bc6f38dfc644aa1a4023dc47d6939481"], // Vault - [ADDRESSES.base.cbBTC, "0x395c7f20bc6f38dfc644aa1a4023dc47d6939481"], // Vault - [ADDRESSES.base.WETH, "0x395c7f20bc6f38dfc644aa1a4023dc47d6939481"], // Vault - [ADDRESSES.base.weETH, "0x395c7f20bc6f38dfc644aa1a4023dc47d6939481"], // Vault - ]; - return sumTokens2({ api, tokensAndOwners }); -} - -async function arbitrumTvl(api) { - const tokensAndOwners = [ - [ADDRESSES.arbitrum.USDC_CIRCLE, "0x255659CaC93868AAf7AFcfB3F862AC300E3697B4"], // Vault - [ADDRESSES.arbitrum.weETH, "0x255659CaC93868AAf7AFcfB3F862AC300E3697B4"], // Vault - ]; - return sumTokens2({ api, tokensAndOwners }); -} - -async function bscTvl(api) { - const tokensAndOwners = [ - [ADDRESSES.bsc.USDC, "0x6388E83ed0808F3bd0744bB38AA8ecf5dA4C0D8F"], // Vault - [ADDRESSES.bsc.weETH, "0x6388E83ed0808F3bd0744bB38AA8ecf5dA4C0D8F"], // Vault - ]; - return sumTokens2({ api, tokensAndOwners }); -} - -module.exports = { - start: '2025-02-18', - base: { tvl: baseTvl }, - arbitrum: { tvl: arbitrumTvl }, - bsc: { tvl: bscTvl }, -}; diff --git a/projects/DeNet/index.js b/projects/DeNet/index.js deleted file mode 100644 index d7887384a6c..00000000000 --- a/projects/DeNet/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const DE_TOKEN_ADDRESS = '0x081Ec4c0e30159C8259BAD8F4887f83010a681DC'; - -const owners = [ - '0x6261e1aac369cd694093455f9e2b65b31acedda1', // veDE - '0x1a9b54A3075119f1546C52cA0940551A6ce5d2D0', // Payments for DeNet storage -] - -module.exports = { - start: '2023-08-11', // Friday, 11-Aug-23 13:46:35 UTC - methodology: "Total amount of DE tokens used for DeNet storage payments", - - polygon: { - tvl: () => ({}), - staking: sumTokensExport({ - owners: owners, - tokens: [DE_TOKEN_ADDRESS] - }), - } -}; - - // LLAMA_DEBUG_MODE="true" node test.js projects/DeNet/index.js diff --git a/projects/DegenDex/index.js b/projects/DegenDex/index.js deleted file mode 100644 index 03afaec1d9e..00000000000 --- a/projects/DegenDex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const config = { - bsc: '0x858FdBfD94C298D511F5Fb839d1f59eb1d8840D2', - dogechain: '0xfc5F561aa36D4f85BfA9A89Dbf058932223d43dB', -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true,}) - } -}) diff --git a/projects/DegenHive-amm/index.js b/projects/DegenHive-amm/index.js deleted file mode 100644 index 76939e26147..00000000000 --- a/projects/DegenHive-amm/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const sui = require("../helper/chain/sui"); -const { cachedGraphQuery } = require('../helper/cache'); - -const graphQL_endpoint = "https://5lox8etck8.execute-api.eu-central-1.amazonaws.com/api/v1"; -const GET_SUI_POOLS = `query GetSuiPools { - getSuiPools { - pools { - poolId - } - } -}` - -async function tvl(api) { - const sui_pools = await cachedGraphQuery('degen-hive-sui-pools', graphQL_endpoint, GET_SUI_POOLS); - const poolIds = sui_pools.getSuiPools.pools.map(pool => pool.poolId); - const suiPoolsData = await sui.getObjects(poolIds); - - for (const { type, fields } of suiPoolsData) { - if (fields.coin_x_reserve == 0 && fields.coin_y_reserve == 0) continue; - let coin_x_type = type.split('<')[1].split(',')[0].trim(); - let coin_y_type = type.split('<')[1].split(',')[1].trim(); - - api.add(coin_x_type, fields.coin_x_reserve); - api.add(coin_y_type, fields.coin_y_reserve); - - if (fields.coin_z_reserve && fields.coin_z_reserve > 0) { - let coin_z_type = type.split('<')[1].split(',')[2].trim(); - api.add(coin_z_type, fields.coin_z_reserve); - } - } -} - -// Export first -module.exports = { - timetravel: false, - sui: { - tvl, - }, - methodology: "TVL consists of the liquidity in the DegenHive's AMM pools." -}; \ No newline at end of file diff --git a/projects/DegenHive-dsui/index.js b/projects/DegenHive-dsui/index.js deleted file mode 100644 index 68a819281ce..00000000000 --- a/projects/DegenHive-dsui/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); - -async function tvl(api) { - - // Add TVL from SUI liquid staking - const dsui_vault = await sui.getObject("0x85aaf87a770b4a09822e7ca3de7f9424a4f58688cfa120f55b294a98d599d402"); - let sui_staked = Number(Number(dsui_vault.fields.dsui_supply * dsui_vault.fields.sui_claimable_per_dsui / 1e9 + dsui_vault.fields.sui_to_stake).toFixed(0)); - api.add( ADDRESSES.sui.SUI, sui_staked) - -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, - methodology: "TVL consists of SUI staked with DegenHive's liquid staking protocol." -}; \ No newline at end of file diff --git a/projects/DegenHive-memepad/index.js b/projects/DegenHive-memepad/index.js deleted file mode 100644 index 3389e10f525..00000000000 --- a/projects/DegenHive-memepad/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); -const { cachedGraphQuery } = require('../helper/cache'); - -const graphQL_endpoint = "https://5lox8etck8.execute-api.eu-central-1.amazonaws.com/api/v1"; -const GET_SUI_MEME_POOLS = `query GetSuiMemePools { - getSuiMemePools { - pools { - meme_pool_addr - } - } -}` - - - -async function tvl(api) { - const sui_meme_pools = await cachedGraphQuery('degen-hive-sui-meme-pools', graphQL_endpoint, GET_SUI_MEME_POOLS); - - // Extract arrays of pool IDs - const poolIds = sui_meme_pools.getSuiMemePools.pools.map(pool => pool.meme_pool_addr); - const suiMemePoolsData = await sui.getObjects(poolIds) - - // Add TVL for MEME Pools - for (const { fields } of suiMemePoolsData) { - if ( fields.sui_available == 0) continue; - api.add( ADDRESSES.sui.SUI, fields.sui_available) - } -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, - methodology: "TVL consists of the liquidity in meme-coin launchpad pools." -}; \ No newline at end of file diff --git a/projects/Delea/index.js b/projects/Delea/index.js deleted file mode 100644 index bed1da0e6b4..00000000000 --- a/projects/Delea/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const ownersList = [ - "EQB6rkS8xt3Ey4XugdVqQDe1vt4KJDh813_k2ceoONTCBnyD", - "EQCwIIRKpuV9fQpQxdTMhLAO30MNHa6GOYd00TsySOOYtA9n", - "EQA2OzCuP8-d_lN2MYxLv5WCNfpLH1NUuugppOZBZgNYn-aa", - "EQCgGUMB_u1Gkrskw2o407Ig8ymQmfkxWuPW2d4INuQoPFJO", - "EQA6Xba1d30QeSTVW7-cIAq-WHD9ZBFg90dQ7CB8mQ2Cxx25", - "EQADnjMkZBCS7-zKAPGHwFXGdd8b85m3bRDm52AX__ORLey-" -]; - -module.exports = { - methodology: 'Counts Delea smartcontract balance as TVL.', - misrepresentedTokens: true, - ton: { - tvl: sumTokensExport({ owners: ownersList, tokens: [ADDRESSES.null]}), - } -} diff --git a/projects/DerpDEX/index.js b/projects/DerpDEX/index.js deleted file mode 100644 index 3d68d4fe60d..00000000000 --- a/projects/DerpDEX/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - era: { - factory: "0x52a1865eb6903bc777a02ae93159105015ca1517", - fromBlock: 7790768, - }, - base: { - factory: "0xeddef4273518b137cdbcb3a7fa1c6a688303dfe2", - fromBlock: 2753388 - }, - op_bnb: { - factory: "0xb91331Ea9539ee881e3A45191076c454E482dAc7", - fromBlock: 3521514 - } -}); diff --git a/projects/Dexland/index.js b/projects/Dexland/index.js deleted file mode 100644 index ac7e28d9f11..00000000000 --- a/projects/Dexland/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ factory: '0x3D6Cb82318f8c5DAAA9498a379D047a369c1E4aA', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/DigiFT/index.js b/projects/DigiFT/index.js deleted file mode 100644 index bedd643fa0d..00000000000 --- a/projects/DigiFT/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { getLogs2 } = require('../helper/cache/getLogs') -//Polygon FeedPrice contract address -const DFeedPriceAddress = "0x7d4d68f18d1be3410ab8d827fb7ebc690f938d2d" -const tokenListAbi = "function getAllTokenRecords() view returns (tuple(uint256 chainId, address tokenAddress, uint64 tokenType)[])" -const uMintAddress = '0xC06036793272219179F846eF6bfc3B16E820Df0B' -const ULTRAAddress = '0x50293dd8889b931eb3441d2664dce8396640b419' -const BurnAbi = "event Burn (address indexed from, uint256 value, string data)" -const MintAbi = "event Mint (address indexed to, uint256 amount)" -const SubRedManagement = '0x3797c46db697c24a983222c335f17ba28e8c5b69' -async function getTokenList(tokenAPI, chainId) { - return (await tokenAPI.call({ - target: DFeedPriceAddress, - abi: tokenListAbi - })).filter(item => item[0] == chainId && item[2] == '1').map(item => item[1]).filter(address => address.toLowerCase() !== uMintAddress.toLowerCase()); -} - -async function calculateTokenNetSupply(api, tokenAddress, managementAddress) { - const BurnAmount = (await getLogs2({ api, target: tokenAddress, eventAbi: BurnAbi, fromBlock: 21091537, extraKey: 'Burn-key' })) - .filter(log => log[0].toLowerCase() === managementAddress) - .reduce((sum, log) => sum + log[1], 0n); - - const MintAmount = (await getLogs2({ api, target: tokenAddress, eventAbi: MintAbi, fromBlock: 21091537, extraKey: 'Mint-key' })) - .filter(log => log[0].toLowerCase() === managementAddress) - .reduce((sum, log) => sum + log[1], 0n); - - return MintAmount - BurnAmount; -} - -module.exports = { - ethereum: { - tvl: async (api) => { - const tokenAPI = new sdk.ChainApi({ chain: 'polygon', timestamp: api.timestamp, }); - const tokens = await getTokenList(tokenAPI, api.chainId) - const tokenSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: tokens}) - await api.addTokens(tokens, tokenSupplies) - await api.removeTokenBalance(ULTRAAddress) - await api.removeTokenBalance(uMintAddress) - //uMint amount - const netUMintSupply = await calculateTokenNetSupply(api, uMintAddress, SubRedManagement) - await api.addToken(uMintAddress, netUMintSupply) - return api.getBalances() - } - }, - arbitrum: { - tvl: async (api) => { - const tokenAPI = new sdk.ChainApi({ chain: 'polygon', timestamp: api.timestamp, }); - const tokens = await getTokenList(tokenAPI, api.chainId) - const tokenSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: tokens }) - await api.addTokens(tokens, tokenSupplies) - return api.getBalances() - } - }, - plume_mainnet: { - tvl: async (api) => { - const tokenAPI = new sdk.ChainApi({ chain: 'polygon', timestamp: api.timestamp, }); - const tokens = await getTokenList(tokenAPI, api.chainId) - const tokenSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: tokens }) - await api.addTokens(tokens, tokenSupplies) - return api.getBalances() - } - } -}; diff --git a/projects/DogeShrek/index.js b/projects/DogeShrek/index.js deleted file mode 100644 index 9aa68a94ab8..00000000000 --- a/projects/DogeShrek/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - dogechain: { - /* tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x7C10a3b7EcD42dd7D79C0b9d58dDB812f92B574A', - }) */ - tvl: () => ({}), - }, - hallmarks: [ - ['2023-10-25', 'Rebranded as Chewyswap'], - ], -} \ No newline at end of file diff --git a/projects/Dopinprotocol/index.js b/projects/Dopinprotocol/index.js deleted file mode 100644 index 9de72e04d5f..00000000000 --- a/projects/Dopinprotocol/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - tara: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x6074dfbdCCA72e8CD69C97eE81873Ea5cd6d4E0f', - }), - }, - xp: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x1721ee881963EeA953108805fa8d435a864DDF6c', - }), - }, - deadFrom: '2025-07-01', -} \ No newline at end of file diff --git a/projects/DropCopy/index.js b/projects/DropCopy/index.js deleted file mode 100644 index 60407395971..00000000000 --- a/projects/DropCopy/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') - -const DROP = 'DropTpWcDmP7kVRUEoKSJaMVi62hGo9jp19Hz19JVsjh'; -const PARIMUTUEL_WALLET = 'DCa1Xir4zDEtz78beFcXCHUNXdeBnrxBiRuuapHrBE3F'; - -async function tvl() { - return sumTokens2({ owner: PARIMUTUEL_WALLET, solOwners: [PARIMUTUEL_WALLET], blacklistedTokens: [DROP]}) -} - -module.exports = { - timetravel: false, - methodology: 'Count the number of tokens that are currently deposited in all the live prediction games', - solana: { tvl, }, -} diff --git a/projects/Duality/index.js b/projects/Duality/index.js deleted file mode 100644 index 0e14068a0ad..00000000000 --- a/projects/Duality/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens } = require('../helper/chain/cosmos') - -const chain = 'neutron' - -async function tvl(api) { - return sumTokens({ - chain, - owner: 'neutron1n58mly6f7er0zs6swtetqgfqs36jaarqlplf59', - }) -} - -module.exports = { - timetravel: false, - methodology: 'TVL in Duality module.', - neutron: { - tvl - } -} \ No newline at end of file diff --git a/projects/DumpEX/index.js b/projects/DumpEX/index.js deleted file mode 100644 index 309164b2e35..00000000000 --- a/projects/DumpEX/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const DUMPEX_ARBITRUM = '0xa570f965681d15a2b760adda2693d624295221d4'; -const DUMPEX_AVALANCHE = '0xAB6aab4eb37fa4309cF22E6E65a16426fDd8E4C7'; -const DUMPEX_BASE = '0xab6aab4eb37fa4309cf22e6e65a16426fdd8e4c7'; -const DUMPEX_BLAST = '0x0297697af2c3616d78cb7a3ad8d15acf8f9b6711'; -const DUMPEX_BSC = '0xAB6aab4eb37fa4309cF22E6E65a16426fDd8E4C7'; -const DUMPEX_ETHEREUM = '0xbc06b693a1b6a02739ea7c6b3d3660bcea3fd186'; -const DUMPEX_FANTOM = '0xab6aab4eb37fa4309cf22e6e65a16426fdd8e4c7'; -const DUMPEX_GNOSIS = '0x35629b4749e0bf0396a11bd626ced54c6a4c2f55'; -const DUMPEX_LINEA = '0xffadfa2855513f353b10cbbaad23c7d8dba5a068'; -const DUMPEX_OPTIMISM = '0x404df8bc73d3632338c4e43c4971bf469a849d79'; -const DUMPEX_POLYVON = '0xab6aab4eb37fa4309cf22e6e65a16426fdd8e4c7'; - -module.exports = { - methodology: `Total gas token holdings in DumpEX. Does not account for tokens & NFTs in the contract.`, - arbitrum: { tvl: sumTokensExport({ owner: DUMPEX_ARBITRUM, tokens: [nullAddress]}), }, - avax: { tvl: sumTokensExport({ owner: DUMPEX_AVALANCHE, tokens: [nullAddress]}), }, - base: { tvl: sumTokensExport({ owner: DUMPEX_BASE, tokens: [nullAddress]}), }, - blast: { tvl: sumTokensExport({ owner: DUMPEX_BLAST, tokens: [nullAddress]}), }, - bsc: { tvl: sumTokensExport({ owner: DUMPEX_BSC, tokens: [nullAddress]}), }, - ethereum: { tvl: sumTokensExport({ owner: DUMPEX_ETHEREUM, tokens: [nullAddress]}), }, - fantom: { tvl: sumTokensExport({ owner: DUMPEX_FANTOM, tokens: [nullAddress]}), }, - xdai: { tvl: sumTokensExport({ owner: DUMPEX_GNOSIS, tokens: [nullAddress]}), }, - linea: { tvl: sumTokensExport({ owner: DUMPEX_LINEA, tokens: [nullAddress]}), }, - optimism: { tvl: sumTokensExport({ owner: DUMPEX_OPTIMISM, tokens: [nullAddress]}), }, - polygon: { tvl: sumTokensExport({ owner: DUMPEX_POLYVON, tokens: [nullAddress]}), }, - }; \ No newline at end of file diff --git a/projects/E3/index.js b/projects/E3/index.js deleted file mode 100644 index 96b3aa1e8b6..00000000000 --- a/projects/E3/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - fantom: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B', - arbitrum: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B', - base: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B' -}) \ No newline at end of file diff --git a/projects/Eden-finance/index.js b/projects/Eden-finance/index.js deleted file mode 100644 index 484de85b985..00000000000 --- a/projects/Eden-finance/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - }; - - const CONFIG = { - assetchain: ['0x1d0c5587b05D2FBE944c118d581C3102E06D1726'] - }; - - const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: abi.getAllReservesTokens }); - const calls = [] - - poolDatas.map((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => calls.push({ target: pool, params: tokenAddress })); - }); - const reserveData = await api.multiCall({ abi: isBorrowed ? abi.getReserveData : abi.getReserveTokensAddresses, calls, }) - const tokensAndOwners = [] - reserveData.forEach((data, i) => { - const token = calls[i].params - if (isBorrowed) { - api.add(token, data.totalVariableDebt) - api.add(token, data.totalStableDebt) - } else - tokensAndOwners.push([token, data.aTokenAddress]) - }) - - if (isBorrowed) return api.getBalances() - return api.sumTokens({ tokensAndOwners }) - } - - module.exports.methodology = "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending." - - Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - borrowed: (api) => fetchReserveData(api, poolDatas, true), - }; - }); \ No newline at end of file diff --git a/projects/El-Dorado-Exchange/index.js b/projects/El-Dorado-Exchange/index.js deleted file mode 100644 index bfe3136610c..00000000000 --- a/projects/El-Dorado-Exchange/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { gmxExports } = require("../helper/gmx"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -module.exports = { - bsc: { - tvl: sdk.util.sumChainTvls([ - gmxExports({ vault: '0x7f90C8De425e2E21F6d152e881713DE5Fe37dEAB', }), - gmxExports({ vault: '0x2c7077cF9bd07C3BC45B4E5b8C27f8B95c6550B3', }), - async (api) => { - const vault = '0xF1D7e3f06aF6EE68E22baFd37E6a67b1757c35a9' - const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) - return sumTokens2({ api, owner: vault, tokens, }) - } - ]) - }, - arbitrum: { - tvl: sdk.util.sumChainTvls([ - async (api) => { - const vault = '0xfc36be177868b05f966e57bfc01617501b1f6926' - const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) - return sumTokens2({ api, owner: vault, tokens, }) - }, - async (api) => { - const vault = '0x24b6137A5fe9d058baf654bb73aB857F57DF8BB4' - const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) - return sumTokens2({ api, owner: vault, tokens, }) - }, - ]) - }, - hallmarks: [ - ['2023-05-30', 'Protocol was hacked!'], - ], -} diff --git a/projects/ElonSwap/index.js b/projects/ElonSwap/index.js deleted file mode 100644 index 39ac9faf204..00000000000 --- a/projects/ElonSwap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const chain = "dogechain"; - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ - factory: "0x8B8CFD13ec09454E6440A4812ed306796a4Fb3eE", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/Equalizer/index.js b/projects/Equalizer/index.js deleted file mode 100644 index 4d837f3dea2..00000000000 --- a/projects/Equalizer/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0xc6366EFD0AF1d09171fe0EBF32c7943BB310832a', - 'sonic': '0xDDD9845Ba0D8f38d3045f804f67A1a8B9A528FcC', -}, { hasStablePools: true, stablePoolSymbol: 's-', staking: { fantom: ["0x8313f3551C4D3984FfbaDFb42f780D0c8763Ce94", "0x3Fd3A0c85B70754eFc07aC9Ac0cbBDCe664865A6"]} }) \ No newline at end of file diff --git a/projects/FeeFree/index.js b/projects/FeeFree/index.js deleted file mode 100644 index b77357c4717..00000000000 --- a/projects/FeeFree/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const EVENT_ABI_OLD = 'event Initialize(bytes32 id, address indexed currency0, address indexed currency1, uint24 fee, int24 tickSpacing, address hooks)' - -const configOLD = { - zora: { - pool: "0xB43287b2106BC044F07aE674794f5492E851d3dC", - router: "0x0Fee97363deEFBE4De038D437D805A98dbEbA400", - fromBlock: 13704184, - }, - base: { - pool: "0xc08304a5300D9a2310A603b8D7fB8470f752947F", - router: "0x0Fee76f15DE74A5211e5Bc2aBF95394d7f50C400", - fromBlock: 14089843, - } -} - -const EVENT_ABI = 'event Initialize(bytes32 indexed id, address indexed currency0, address indexed currency1, uint24 fee, int24 tickSpacing, address hooks, uint160 sqrtPriceX96, int24 tick)' - -const config = { - zora: { - pool: "0x2BB2DeAeF5D4E62D3798Ce67C3D623da09188AB9", - fromBlock: 23864003, - }, - base: { - pool: "0x60B393a76cEa4a3AFff00e1Fb08d0F63A8F4A314", - fromBlock: 23809396, - }, - scroll: { - pool: "0xA407e0637b22e1F64395D177C8EAD26C03dC3294", - fromBlock: 11975196, - } -} - - -module.exports = { - start: '2024-04-25', // Apr 26 2024 -} - -Object.keys(config).forEach(chain => { - const { pool, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - - if (configOLD[chain]) { - const { pool, fromBlock, } = configOLD[chain] - const logs = await getLogs2({ api, factory: pool, eventAbi: EVENT_ABI_OLD, fromBlock, }) - const tokens = logs.map(i => [i.currency0, i.currency1]).flat() - await sumTokens2({ api, owner: pool, tokens, }) - } - - const logs = await getLogs2({ api, factory: pool, eventAbi: EVENT_ABI, fromBlock, }) - const tokens = logs.map(i => [i.currency0, i.currency1]).flat() - return sumTokens2({ api, owner: pool, tokens, }) - } - } -}) \ No newline at end of file diff --git a/projects/FirepotSwap/index.js b/projects/FirepotSwap/index.js deleted file mode 100644 index 185f18a3c33..00000000000 --- a/projects/FirepotSwap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORY = "0xe63Cf585Dae8273A5e37AfF6da2f823FBf3Eb5BE" // This factory is on AirDAO Mainnet (Chain Id: 16718) - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address to find and price Liquidity Pool pairs.`, - airdao: { - tvl: dexTVL - } -}; diff --git a/projects/FlashLiquidity/index.js b/projects/FlashLiquidity/index.js deleted file mode 100644 index c2094aa2679..00000000000 --- a/projects/FlashLiquidity/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const factory = "0x6e553d5f028bD747a27E138FA3109570081A23aE" -const tvl = getUniTVL({ factory, useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - polygon: { tvl, }, - polygon_zkevm: { tvl, }, - avax: { tvl, }, - base: { tvl, }, - arbitrum: { tvl, }, - methodology: - "TVL comes from the DEX liquidity pools" -}; diff --git a/projects/Fliperino/index.js b/projects/Fliperino/index.js deleted file mode 100644 index b608fe9aaf0..00000000000 --- a/projects/Fliperino/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') - -const fliperinoContractETHW = "0x877929914e9854066FC4f1d4B1db2f8b029FeB79"; - -module.exports = { - ethpow: { - tvl: async ( _, _b,{ ethpow: block}) => { - return sumTokens2({ owner: fliperinoContractETHW, chain: 'ethpow', block, tokens: [nullAddress]}) - }, - }, -}; diff --git a/projects/FlitSwap/index.js b/projects/FlitSwap/index.js deleted file mode 100644 index dc0b84a2701..00000000000 --- a/projects/FlitSwap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - op_bnb: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x243f0218EF4cB8FC922ddd6d44e2DdE5b95DCa89', - }) - } -} \ No newline at end of file diff --git a/projects/FomoSwap-V4/index.js b/projects/FomoSwap-V4/index.js deleted file mode 100644 index 88a0f038cc6..00000000000 --- a/projects/FomoSwap-V4/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -const FOMOSWAP_ALGEBRA_FACTORY = "0x10253594A832f967994b44f33411940533302ACb" - -module.exports = uniV3Export({ - tara: { - factory: FOMOSWAP_ALGEBRA_FACTORY, - fromBlock: 20173658, - isAlgebra: true - } -}); \ No newline at end of file diff --git a/projects/FomoSwap/index.js b/projects/FomoSwap/index.js deleted file mode 100644 index e0ca7a58808..00000000000 --- a/projects/FomoSwap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const chain = 'tara' -const factory = '0x4a0Ff253BcE0CB539faC23517FFD968308220C5B' // v2 factory address - -module.exports = uniTvlExport(chain, factory) \ No newline at end of file diff --git a/projects/Fountain-Protocol/index.js b/projects/Fountain-Protocol/index.js deleted file mode 100644 index f951129a3e1..00000000000 --- a/projects/Fountain-Protocol/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const {compoundExports2} = require('../helper/compound'); -const { mergeExports } = require('../helper/utils'); - -const unitroller_classic_oasis = '0xA7684aE7e07Dac91113900342b3ef25B9Fd1D841'; -const unitroller_usd_oasis = '0x1C0C30795802Bf2B3232a824f41629BbBCF63127'; -const unitroller_lpt_oasis = '0x7c4d0c834701C6E7F57b8c1424d30aDC46eA0840'; - -module.exports= mergeExports([ - [unitroller_classic_oasis, '0xd7d588babfb99e82cd6dd0ca7677a5599aa678b5'], - [unitroller_usd_oasis], - [unitroller_lpt_oasis, '0x63f1fe2e1da490611fc16e4a5d92b7ec7d0911a9'], -].map( ([comptroller, cether]) => ({ - oasis: compoundExports2({ comptroller, cether, }), -}))) - -module.exports.deadFrom = '2023-06-22' -module.exports.oasis.borrowed= () => ({}) diff --git a/projects/FullSailFinance/index.js b/projects/FullSailFinance/index.js deleted file mode 100644 index 334c8233dd9..00000000000 --- a/projects/FullSailFinance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sui = require('../helper/chain/sui') - -async function suiTVL(api) { - const poolObjectID = '0x0efb954710df6648d090bdfa4a5e274843212d6eb3efe157ee465300086e3650' - const { fields: { list: { fields: listObject } } } = await sui.getObject(poolObjectID) - const items = (await sui.getDynamicFieldObjects({ parent: listObject.id.id })).map(i => i.fields.value.fields.value) - const poolInfo = await sui.getObjects(items.map(i => i.fields.pool_id)) - poolInfo.forEach(({ type: typeStr, fields }) => { - const [coinA, coinB] = typeStr.replace('>', '').split('<')[1].split(', ') - api.add(coinA, fields.coin_a) - api.add(coinB, fields.coin_b) - }) -} - -module.exports = { - sui: { - tvl: suiTVL, - } -} \ No newline at end of file diff --git a/projects/FuzioNetwork/index.js b/projects/FuzioNetwork/index.js deleted file mode 100644 index ab11ecd78cb..00000000000 --- a/projects/FuzioNetwork/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getSeiDexTvl } = require('../terraswap/factoryTvl') - -module.exports = { - timetravel: false, - methodology: "Liquidity on the DEX", - sei: { - tvl: getSeiDexTvl(86), - }, -} diff --git a/projects/GainzSwap/index.js b/projects/GainzSwap/index.js deleted file mode 100644 index 91cabbf8238..00000000000 --- a/projects/GainzSwap/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const ADDRESSES = require('../helper/coreAssets.json'); - -const ROUTER_CONTRACT = '0xd35C85FbA82587c15D2fa255180146A046B67237'; -const WEDU_CONTRACT = ADDRESSES.occ.WEDU; -const dEDU_CONTRACT = "0x597FFfA69e133Ee9b310bA13734782605C3549b7"; -const CHAIN = 'occ'; - -/** - * Fetch total supply of dEDU token and add to TVL - * @param {Object} api - API context - */ -async function addDEDUSupplyToTVL(api) { - const dEDUSupply = await api.call({ - target: dEDU_CONTRACT, - abi: 'erc20:totalSupply', - chain: CHAIN, - }); - - const dEDUValue = await getTokenPairsDEDU(api); - - api.add(WEDU_CONTRACT, BigInt(dEDUSupply) + BigInt(dEDUValue)); -} - -/** - * Get other tokens paired in liquidity pools dEDU value - * @param {Object} api - API context - * @returns {Promise>} - List of [token, owner] pairs - */ -async function getTokenPairsDEDU(api) { - const pairs = await api.call({ - target: ROUTER_CONTRACT, - abi: 'function pairs() external view returns (address[] memory)', - chain: CHAIN, - }); - - const reserves = await Promise.all( - pairs.map(async (pair) => { - const [token0, token1, [reserve0, reserve1]] = await Promise.all([ - api.call({ target: pair, abi: 'function token0() external view returns (address)', chain: CHAIN }), - api.call({ target: pair, abi: 'function token1() external view returns (address)', chain: CHAIN }), - api.call({ target: pair, abi: 'function getReserves() public view returns (uint112, uint112, uint32)', chain: CHAIN }), - ]); - - return token0.toLowerCase() === dEDU_CONTRACT.toLowerCase() ? reserve0: token1.toLowerCase() === dEDU_CONTRACT.toLowerCase() ? reserve1 : undefined; - }) - ); - - return reserves.filter((reserve) => reserve !== undefined).reduce((acc, reserve) => acc + BigInt(reserve), 0n); -} - -/** - * Main TVL function for occ chain - * @param {Object} api - API context - */ -async function tvl(api) { - await addDEDUSupplyToTVL(api); - return sumTokens2({ api, chain: CHAIN}); -} - -module.exports = { - methodology: 'TVL is calculated as the total value of dEDU in circulation and other token dEDU values in pair contracts.', - occ: { - tvl, - }, - start: 1736707071, -}; diff --git a/projects/GajFinance/index.js b/projects/GajFinance/index.js deleted file mode 100644 index d363c4c95c4..00000000000 --- a/projects/GajFinance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens } = require('../helper/unwrapLPs'); -const { masterChefExports } = require("../helper/masterchef"); - -const GAJ_TOKEN = '0xf4b0903774532aee5ee567c02aab681a81539e92' -const GAJ_AVAX_TOKEN = '0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8' -const MASTER_GAJ = '0xb03f95e649724df6ba575c2c6ef062766a7fdb51' -const NFTFARM_GAJ_AVAX = '0x65096f7dB56fC27C7646f0aBb6F9bC0CEA2d8765' - -async function stakingAvax(timestamp, ethBlock, chainBlocks) { - return sumTokens({}, [[GAJ_AVAX_TOKEN, NFTFARM_GAJ_AVAX]], chainBlocks.avax, 'avax') -} - -module.exports = { - methodology: "TVL comes from NFT Farming, Jungle Pools, MasterChef and Vaults", - avax:{ - staking: stakingAvax, - }, - ...masterChefExports(MASTER_GAJ, 'polygon', GAJ_TOKEN), -} diff --git a/projects/Gardens/index.js b/projects/Gardens/index.js deleted file mode 100644 index 59266176c91..00000000000 --- a/projects/Gardens/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const v2 = require("./v2.js"); -module.exports = v2; diff --git a/projects/Gardens/v1.js b/projects/Gardens/v1.js deleted file mode 100644 index af604b57d7e..00000000000 --- a/projects/Gardens/v1.js +++ /dev/null @@ -1,44 +0,0 @@ -const SUBGRAPH_GARDENS_XDAI = "G4EbcSW588SUy8CdprPPxCN69VN8mxvnwt4oyR6YpGza"; -const { cachedGraphQuery } = require('../helper/cache') - -const ALL_ORGS_GQL = ` - query allOrgs($lastId: ID) { - organizations(first: 1000, where: { id_gt: $lastId, active: true }) { - id - token { - name - id - } - config { - conviction { - requestToken { - id - name - } - fundsManager - } - } - proposalCount - active - } - } -` - -async function tvl(api) { - const orgs = await cachedGraphQuery('gardensdao', SUBGRAPH_GARDENS_XDAI, ALL_ORGS_GQL, { fetchById: true}) - const toa = [] - orgs.forEach(({config: { conviction } = {}} = {}) => { - const token = conviction?.requestToken.id - const owner = conviction?.fundsManager - if (token && owner) - toa.push([token, owner]) - }) - return api.sumTokens({ tokensAndOwners: toa }) - -} - -module.exports = { - xdai: { - tvl, - }, -}; diff --git a/projects/Gardens/v2.js b/projects/Gardens/v2.js deleted file mode 100644 index c7768da0f9d..00000000000 --- a/projects/Gardens/v2.js +++ /dev/null @@ -1,83 +0,0 @@ -const { getAddress } = require('ethers'); -const { gql } = require('graphql-request'); - -const subgraphs = { - polygon: 'https://api.studio.thegraph.com/query/102093/gardens-v2---polygon/version/latest/', - xdai: 'https://api.studio.thegraph.com/query/102093/gardens-v2---gnosis/version/latest/', - arbitrum: 'https://api.studio.thegraph.com/query/102093/gardens-v2---arbitrum/version/latest/', - base: 'https://api.studio.thegraph.com/query/102093/gardens-v2---base/version/latest/', - celo: 'https://api.studio.thegraph.com/query/102093/gardens-v2---celo/version/latest/', - optimism: 'https://api.studio.thegraph.com/query/102093/gardens-v2---optimism/version/latest/', -}; - - -const query = gql` -{ - cvstrategies(where: {config_:{ - proposalType_not: 0 - }}) { - id - token - } - - registryCommunities { - id - garden { - id - } - } -} -` - -async function fetchStrategiesAndCommunities(api) { - const subgraph = subgraphs[api.chain]; - if (!subgraph) throw new Error(`No subgraph for chain ${api.chain}`); - - const data = await fetch(subgraph, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query }) }) - .then(res => res.json()) - .then(res => res.data); - if (!data) throw new Error(`No data from subgraph for chain ${api.chain}`); - if (!data.cvstrategies || !data.registryCommunities) throw new Error(`Missing data from subgraph for chain ${api.chain}`); - const strategies = data.cvstrategies; - const communities = data.registryCommunities; - - return { strategies, communities }; -} - -async function tvl(api) { - const { strategies, communities } = await fetchStrategiesAndCommunities(api); - - // Multi calls - const calls = strategies.map(s => ({ target: s.token, params: [s.id] })); - communities.forEach(c => { - if (c.garden?.id) { - calls.push({ target: c.garden.id, params: [c.id] }); - } - }); - - // Multicall - const balances = await api.multiCall({ abi: 'erc20:balanceOf', calls, permitFailure: true }); - - // If not same length, something went wrong - if (balances.length !== calls.length) { - throw new Error(`Mismatched balances and calls length on ${api.chain}`); - } - - balances.forEach((balance, i) => { - if (BigInt(balance || 0) > 0n) { - const token = getAddress(calls[i].target); - api.add(token, balance); - } - }); -} - -module.exports = { - methodology: 'Uses ethers.getLogs with chunking to read CommunityCreated events from proxy factories.', - start: 1640995200, - xdai: { tvl }, - arbitrum: { tvl }, - base: { tvl }, - optimism: { tvl }, - polygon: { tvl }, - celo: { tvl }, -}; diff --git a/projects/Gas404Swap/index.js b/projects/Gas404Swap/index.js deleted file mode 100644 index 13b52fdfa62..00000000000 --- a/projects/Gas404Swap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - - bsc: { - tvl: getUniTVL({ - factory: "0xb6aC3914b53Cd3b39F11Fc9B380c3E605E994E20", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/GlyphExchange/index.js b/projects/GlyphExchange/index.js deleted file mode 100644 index 7144cdc1f29..00000000000 --- a/projects/GlyphExchange/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x3e723c7b6188e8ef638db9685af45c7cb66f77b9'}), - staking: staking("0x6bf16B2645b13db386ecE6038e1dEF76d95696fc", "0xb3A8F0f0da9ffC65318aA39E55079796093029AD"), - }, -} diff --git a/projects/GoSwap/index.js b/projects/GoSwap/index.js deleted file mode 100644 index b8310ccf855..00000000000 --- a/projects/GoSwap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0xe93c2cD333902d8dd65bF9420B68fC7B1be94bB3) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - gochain: { - tvl: getUniTVL({ factory: '0xe93c2cD333902d8dd65bF9420B68fC7B1be94bB3', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/GoldMiner/index.js b/projects/GoldMiner/index.js deleted file mode 100644 index 3fdfe77358b..00000000000 --- a/projects/GoldMiner/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x112ab27F55B30619AFc9Db89bEf89990627DeCd5" - -async function tvl(time, ethBlock, { sonic: block }) { - return sumTokens2({ tokens: [nullAddress], owner: contract, block, chain: 'sonic', }) -} - -module.exports = { - methodology: `We count the SONIC on ${contract}`, - sonic: { - tvl - } -} diff --git a/projects/GotchiVault/abi.json b/projects/GotchiVault/abi.json deleted file mode 100644 index 8fd52e8d066..00000000000 --- a/projects/GotchiVault/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalGHST": "function totalGHST(address _user) view returns (uint256 _totalGHST)", - "tokenIdsOfOwner": "function tokenIdsOfOwner(address _owner) view returns (uint32[] tokenIds_)" -} \ No newline at end of file diff --git a/projects/GotchiVault/index.js b/projects/GotchiVault/index.js deleted file mode 100644 index 2d74620efdf..00000000000 --- a/projects/GotchiVault/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const sdk = require('@defillama/sdk'); -const abi = require("./abi.json"); -const { request, gql } = require("graphql-request"); -const { getBlock } = require('../helper/http') - -const VGHST_CONTRACT = "0x51195e21BDaE8722B29919db56d95Ef51FaecA6C"; -const GHST_CONTRACT = "0x385Eeac5cB85A38A9a07A70c73e0a3271CfB54A7"; -const VAULT_CONTRACT = "0xDd564df884Fd4e217c9ee6F65B4BA6e5641eAC63"; - -const graphUrl = 'https://subgraph.satsuma-prod.com/tWYl5n5y04oz/aavegotchi/aavegotchi-core-matic/api' -const graphQuery = gql` -query GET_SUMMONED_GOTCHIS ($minGotchiId: Int, $block: Int) { - aavegotchis( - first: 1000 - skip: 0 - block: { number: $block } - where: { - status: "3" # summoned gotchis - gotchiId_gt: $minGotchiId - owner: "${VAULT_CONTRACT.toLowerCase()}" - } - orderBy: gotchiId - orderDirection: asc - ) { - gotchiId - collateral - stakedAmount - } -}` -async function getGotchisCollateral(timestamp, block) { - const allGotchis = []; - let minGotchiId = 0; - while (minGotchiId !== -1) { - const { aavegotchis } = await request( - graphUrl, - graphQuery, - {minGotchiId, block} - ); - if (aavegotchis && aavegotchis.length > 0) { - minGotchiId = parseInt(aavegotchis[aavegotchis.length - 1].gotchiId); - allGotchis.push(...aavegotchis); - } else { - minGotchiId = -1; - } - } - const gotchisBalances = { - output: allGotchis.map(g => ({ - input: {target: g.collateral}, - success: true, - output: g.stakedAmount - })) - }; - - const balances = {}; - sdk.util.sumMultiBalanceOf(balances, gotchisBalances, true, x => 'polygon:' + x); - return gotchisBalances; -} - -async function tvl(timestamp, _, chainBlocks) { - const balances = {}; - const block = await getBlock(timestamp, 'polygon', chainBlocks) - const transform = i => `polygon:${i}`; - - const collateralBalance = (await sdk.api.abi.call({ - abi: abi.totalGHST, - chain: 'polygon', - target: VGHST_CONTRACT, - params: [VGHST_CONTRACT], - block, - })).output; - - sdk.util.sumSingleBalance(balances, transform(GHST_CONTRACT), collateralBalance) - - const gotchisBalances = await getGotchisCollateral(timestamp, block-100); - sdk.util.sumMultiBalanceOf(balances, gotchisBalances, true, x => 'polygon:' + x); - - - return balances; -} - -module.exports = { - methodology: - "TVL counts the total GHST tokens that are staked by the Gotchi Vault vGHST contracts, as well as the collateral tokens that are locked in the Aavegotchis deposited in the Gotchi Vault contract", - polygon: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/Greenhouse-Finance/index.js b/projects/Greenhouse-Finance/index.js deleted file mode 100644 index 8dcc0a66ddc..00000000000 --- a/projects/Greenhouse-Finance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets deposited in Greenhouse curated vaults.', - blockchains: { - arbitrum: { - siloVaultOwners: [ - '0x1B35727072435BB97FBe8cC378eb6973c98FaAb3', - ], - }, - sonic: { - siloVaultOwners: [ - '0x1B35727072435BB97FBe8cC378eb6973c98FaAb3', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/Guru/index.js b/projects/Guru/index.js deleted file mode 100644 index 9da0237acdc..00000000000 --- a/projects/Guru/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ITVL = { - pool2: "uint256:pool2", - staking: "uint256:staking", - tvl: "uint256:tvl", -} - -// TvlGuru: On-Chain Universal TVL Finder -const tvlGuru = { - "fantom": "0x0786c3a78f5133F08C1c70953B8B10376bC6dCad", - "kcc": "0x426a4A4B73d4CD173C9aB78d18c0d79d1717eaA9", - "multivac": "0xe345A50C33e5c9D0284D6fF0b891c4Fc99a9C117", - "echelon": "0xa254bfd74c38b26145b980162fb1a49bc0a4f14b", - "metis": "0x50Dcc6cb1B2d6965c42d98a2b07629c57a6be895", - "bsc": "0xD600Ec98cf6418c50EE051ACE53219D95AeAa134", - "arbitrum": "0xFAB311FE3E3be4bB3fEd77257EE294Fb22Fa888b", - "avax": "0xFAB311FE3E3be4bB3fEd77257EE294Fb22Fa888b", - "polygon" : "0x18C7AD880A07D363f2d034a8523ae34b8068845a", - "sonic" : "0x52ce715Ca439A031fC3cc103f08A378BaD18546B" -} - -module.exports = { - misrepresentedTokens: true, - methodology: "USD-denominated value aggregation of most Locked assets held across Guru Network's smart contracts across multiple chains, powered by direct on-chain storage of quantity, pools and prices using ftm.guru's Universal TVL Finder Tool (tvlGuru.sol). More detailed documentation of TVL is available at https://ftm.guru/rawdata/tvl and https://ftm.guru/docs.", -} - -Object.entries(tvlGuru).forEach(([chain, target]) => { - module.exports[chain] = { - // pool2: async (api) => ({ tether: ((await api.call({ target, abi: ITVL.pool2 }))) / 1e18 }), - // staking: async (api) => ({ tether: ((await api.call({ target, abi: ITVL.staking}))) / 1e18 }), - tvl: async (api) => ({ tether: ((await api.call({ target, abi: ITVL.tvl }))) / 1e18 }), - } -}) - -module.exports.echelon.tvl = () => ({}) diff --git a/projects/HLScope/index.js b/projects/HLScope/index.js deleted file mode 100644 index b5427d23a02..00000000000 --- a/projects/HLScope/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const CONFIG = { - ethereum: [ - '0xda2ffa104356688e74d9340519b8c17f00d7752e' - ], - polygon: [ - '0x4c5ca366e26409845624e29b62c388a06961a792' - ], - optimism: [ - '0x720f86f4B5b5d5d0ea3E5718EC43071d4d05134b' - ] -} - -const tvl = async (api) => { - try { - const tokens = CONFIG[api.chain]; - const supplies = await api.multiCall({ calls: tokens, abi: 'erc20:totalSupply' }); - api.add(tokens, supplies); - } catch (error) { - console.error(`Error in ${api.chain}:`, error); - } -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/HoneyFarm/index.js b/projects/HoneyFarm/index.js deleted file mode 100644 index f0fe12fc76e..00000000000 --- a/projects/HoneyFarm/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'avax', - masterchef: '0x757490104fd4C80195D3C56bee4dc7B1279cCC51', - nativeToken: '0xB669c71431bc4372140bC35Aa1962C4B980bA507', - blacklistedTokens: ['0x1ce0c2827e2ef14d5c4f29a091d735a204794041'] - }), - masterchefExports({ - chain: 'bsc', - masterchef: '0x88E21dedEf04cf24AFe1847B0F6927a719AA8F35', - nativeToken: '0x1A8d7AC01d21991BF5249A3657C97b2B6d919222', - }) -]) \ No newline at end of file diff --git a/projects/Hono/index.js b/projects/Hono/index.js deleted file mode 100644 index 69b900baca1..00000000000 --- a/projects/Hono/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const HONO = '0x8F5ac7F3cfeFfB6EB638A8aDd2d32661F82C03FD' -const uniV3LP = '0xc4824156785be733d9b98ac4813da0c7bc1b7a44' - -async function tvl(api) { - await api.sumTokens({ owner: HONO, tokens: [nullAddress]}) - return sumTokens2({ api, owner: uniV3LP, resolveUniV3: true, blacklistedTokens: [HONO]}) - -} -module.exports = { - methodology: 'The combined value of two components: the total value of ETH supporting the HONO price and the amount of liquidity being managed by our income strategies.', - ethereum: { - tvl, - }, -}; diff --git a/projects/HyperBlast/index.js b/projects/HyperBlast/index.js deleted file mode 100644 index 0a8d4b16564..00000000000 --- a/projects/HyperBlast/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - blast: { - tvl: getUniTVL({ - factory: '0xD97fFc2041a8aB8f6bc4aeE7eE8ECA485381D088', - useDefaultCoreAssets: true, - }), - }, -} \ No newline at end of file diff --git a/projects/HyperBloom/index.js b/projects/HyperBloom/index.js deleted file mode 100644 index b0d78d36e40..00000000000 --- a/projects/HyperBloom/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { yieldHelperPair } = require('../helper/unknownTokens') - -const chain = "hyperliquid"; - -module.exports = { - misrepresentedTokens: true, -}; - -module.exports[chain] = { - tvl: async () => { - const pools = await getConfig('hyperbloom', 'https://raw.githubusercontent.com/hyperbloomxyz/vaults.config/refs/heads/master/hyperliquid.json'); - - const beefyPools = pools.filter(p => p.platformId === 'beefy'); - - const vaults = beefyPools.map(p => p.earnedTokenAddress).filter(Boolean); - - return yieldHelperPair({ vaults, chain, useDefaultCoreAssets: true }); - } -} \ No newline at end of file diff --git a/projects/Hyperionx/index.js b/projects/Hyperionx/index.js deleted file mode 100644 index e29a5b2c291..00000000000 --- a/projects/Hyperionx/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const wUSDC = '0xD33Db7EC50A98164cC865dfaa64666906d79319C' - -const USDX = '0xEE43369197F78CFDF0D8fc48D296964C50AC7B57' -module.exports = { - - zkfair: { - tvl: sumTokensExport({ - owner: USDX, - tokens: [ wUSDC ], - }), - }, - methodology: `wUSDC will be equivalently converted into USDX, becoming part of Hyperion Exchange's TVL.`, -} diff --git a/projects/ICDex/index.js b/projects/ICDex/index.js deleted file mode 100644 index 7165878f0c1..00000000000 --- a/projects/ICDex/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { get } = require("../helper/http"); -const { toUSDTBalances } = require("../helper/balances"); - -module.exports = { - misrepresentedTokens: true, - icp: { tvl } -}; - -async function tvl() { - let tvl = 0; - let tvls = await get("https://gwhbq-7aaaa-aaaar-qabya-cai.raw.icp0.io/v1/pools/tvls"); - if (tvls && tvls.pairs && tvls.pairs.length) { - tvl = tvls.pairs.reduce((a, item) => a + Number(item.tvl), 0); - } - return toUSDTBalances(tvl); -} diff --git a/projects/IPLR/index.js b/projects/IPLR/index.js deleted file mode 100644 index 55d022abd7d..00000000000 --- a/projects/IPLR/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getTokenBalance } = require('../helper/solana') - -const SOL_MINT = ADDRESSES.solana.SOL -const LP_ACCOUNT = 'GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL' -const REWARDS_WALLET = 'EftM2RPnZqLMc3UpE7Xjz41DdtAopYziCmB4r1wVAJ9C' - -async function pool2() { - const solBalance = await getTokenBalance(SOL_MINT, LP_ACCOUNT) - return { - ['solana:' + ADDRESSES.solana.SOL]: solBalance - } -} - -async function staking() { - const solBalance = await getTokenBalance(SOL_MINT, REWARDS_WALLET) - return { - ['solana:' + ADDRESSES.solana.SOL]: solBalance - } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: 'Tracks SOL in the IPLR/SOL LP vault (pool2) and in the rewards wallet (staking).', - solana: { - tvl: () => ({}), - pool2, - staking - } -} diff --git a/projects/IgnoreFUD/index.js b/projects/IgnoreFUD/index.js deleted file mode 100644 index 2c1e5236d4d..00000000000 --- a/projects/IgnoreFUD/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens'); - -const LpAddress = "0x5Ab9f0Ea4fD182a1edC89D379c1F1c5d6B6eF623"; -const IgnoreFUDToken = "0x98564E70c7fCC6d947fFE6d9EfeD5ba68b306F2E"; -const ERC20ContractWCoreAddress = ADDRESSES.core.WCORE; -const Pool_One = "0x2CaBc908c163f966fD9A1493211F91B0371A8575"; -const Pool_Two = "0xBA554Bd93BF6EE9E2F2f85F9448513F932E338Ad"; -const Pool_Three = "0x8b3cC46943243E260E201ADd16F2ed15253f6702" - -module.exports = { - core: { - tvl: () => ({}), - staking: sumTokensExport({ owners: [Pool_One,Pool_Two,Pool_Three], tokens: [IgnoreFUDToken], useDefaultCoreAssets: true, lps: [LpAddress], }), - } -}; - - diff --git a/projects/Incprinter/index.js b/projects/Incprinter/index.js deleted file mode 100644 index ce3841f0837..00000000000 --- a/projects/Incprinter/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { getLiquityTvl } = require("../helper/liquity.js"); -const { sumTokensExport } = require("../helper/unknownTokens.js"); - -// TroveManager holds total system collateral (deposited HEX) -const TROVE_MANAGER_ADDRESS = "0x248262ea52198643DD1512Ce7a2c93B32a03E45F"; -const INC_ADDRESS = "0x2fa878Ab3F87CC1C9737Fc071108F904c0B0C95d"; - -// Staking holds LQTY tokens and receive share of protocol revenue -const STAKING_ADDRESS = "0x35b99f29b3Ec3276A2b3Bb5863326B1c100aa160"; -const PRINT_ADDRESS = "0x6C203A555824ec90a215f37916cf8Db58EBe2fA3"; - -const INCD_FARMING_ADDRESS = "0x5A0D3cC13A523Dd7A9279C5Eb4f363593dA4198e"; -const LP_INCD_INC_ADDRESS = "0x2cb92b1e8B2fC53b5A9165E765488e17B38C26D3"; - -const PRINT_FARMING_ADDRESS = "0x857ab0cb7449Fb29429FC30596F08cfbf9F171F5"; -const LP_PRINT_INC_ADDRESS = "0xF35F8Db9B6760799DB76796340AAcc69deA0C644"; -const lps = [LP_INCD_INC_ADDRESS, LP_PRINT_INC_ADDRESS]; - -module.exports = { - start: "2024-05-01", - methodology: - "Total Value Locked includes all Troves, Stability Pool, Staking Pool and LP Farming Pools", - pulse: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS, { collateralToken: INC_ADDRESS }), - staking: sumTokensExport({ - owner: STAKING_ADDRESS, - tokens: [PRINT_ADDRESS], - lps, - useDefaultCoreAssets: true, - }), - pool2: sumTokensExport({ - owners: [INCD_FARMING_ADDRESS, PRINT_FARMING_ADDRESS], - tokens: lps, - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/Infernoswap/index.js b/projects/Infernoswap/index.js deleted file mode 100644 index e69e9d64095..00000000000 --- a/projects/Infernoswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports.hallmarks = [[1703808000, "Rug Pull"]] -module.exports.beam = { tvl: () => ({}) } -module.exports.deadFrom = 1703808000 \ No newline at end of file diff --git a/projects/Inufair/index.js b/projects/Inufair/index.js deleted file mode 100644 index 14c3745c5ca..00000000000 --- a/projects/Inufair/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports.hallmarks=[[1705708800,"Rug Pull"]]; -module.exports = uniTvlExport('zkfair', '0x3582Ccde3F786229CE6Dbd88c5aDb86bF64DAA31') -module.exports.deadFrom = '2024-01-20'; diff --git a/projects/JaceSwap/index.js b/projects/JaceSwap/index.js deleted file mode 100644 index b973a1faaea..00000000000 --- a/projects/JaceSwap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('xlayer', '0x40E9fC0A18ccfDc87C19A1bA5b7F84FC51879600', { hasStablePools: true }) diff --git a/projects/Jackson/index.js b/projects/Jackson/index.js deleted file mode 100644 index 18608fa65e6..00000000000 --- a/projects/Jackson/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const JACKSON_VAULT_ID = "0x488d6e1079a3a6d29e6ab536ee73117d80495a8871e49511daa67ff63747e92b"; - -async function tvl(api) { - const object = await sui.getObject(JACKSON_VAULT_ID) - for (const reserve of object.fields.reserves) { - const coinType = '0x' + reserve.fields.coin_type.fields.name; - api.add(coinType, reserve.fields.available_amount) - } -} - - -module.exports = { - sui: { - tvl: tvl, - }, -} diff --git a/projects/KibbleSwap/index.js b/projects/KibbleSwap/index.js deleted file mode 100644 index 83f00748788..00000000000 --- a/projects/KibbleSwap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getUniTVL, staking, } = require('../helper/unknownTokens') - -const chain = 'dogechain' -const KIB = '0x1e1026ba0810e6391b0F86AFa8A9305c12713B66' -const lps = ['0xC1C10b8BeeC82E840990A2c60A54ccdB39b2153F'] - - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ - chain, useDefaultCoreAssets: true, - factory: '0xF4bc79D32A7dEfd87c8A9C100FD83206bbF19Af5', - }), - staking: staking({ - chain, useDefaultCoreAssets: true, - owner: '0x8ffBD442F246964A0d2E87C9b2551095bdA6EEb3', - tokens: [KIB], - lps, - }) - } -} diff --git a/projects/KungFuu-Finance/index.js b/projects/KungFuu-Finance/index.js deleted file mode 100644 index ebeeaff9b6e..00000000000 --- a/projects/KungFuu-Finance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const wFTM = ADDRESSES.fantom.WFTM -const kngfuu_token = "0x89b61Ab033584918103698953870F07D6db412A3".toLowerCase() -const owners = ["0x29187b10a04B269Cf067AE013B3ab58d4affaC03", "0xaaef45e31e2d2865a4722c1591ba4cd8f6e83bad", "0xfeAFAF0610fe2c73bB6345080056066aE109B31F"] - -const treasuryTokens = [ - ADDRESSES.null, - wFTM, // WFTM - ADDRESSES.fantom.USDC, // USDC - "0xf704f5ac5edf152168e07e6f5f108366911250ac", // WFTM/KNGFUU, needs to account only half of it -] - -module.exports = { - fantom: { - tvl: sumTokensExport({ owners, tokens: treasuryTokens, }) - } -} \ No newline at end of file diff --git a/projects/Kwikswap/index.js b/projects/Kwikswap/index.js deleted file mode 100644 index db7a438e869..00000000000 --- a/projects/Kwikswap/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { staking } = require("../helper/staking.js"); - -// node test.js projects/kwikswap/index.js -const KWIK_TOKEN_ADDRESSES = { - ethereum: "0x286c0936c7eaf6651099ab5dab9ee5a6cb5d229d", - shiden: "0xd67de0e0a0fd7b15dc8348bb9be742f3c5850454", - polygon: "0x8df74088b3aecfd0cb97bcfd053b173782f01e3a", -}; - -const STAKING_CONTRACTS = { - ethereum: "0x57Caec63E87e1496E946181e3Fc59086e589D4c0", - shiden: "0x212CB413c48221cA6fE2100578a9ABED26840380", - polygon: "0x7965e5F759caB3d5a1b737b9Bb24e94ef6747FA7", -}; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: getUniTVL({ - factory: '0xdD9EFCbDf9f422e2fc159eFe77aDD3730d48056d', - useDefaultCoreAssets: true, - }), - staking: staking( - STAKING_CONTRACTS["ethereum"], - KWIK_TOKEN_ADDRESSES["ethereum"] - ), - }, - - polygon: { - tvl: getUniTVL({ - factory: '0x0B29D7a989D6647E4A56eE9899DaF7535FF9620c', - useDefaultCoreAssets: true, - }), - staking: staking( - STAKING_CONTRACTS["polygon"], - KWIK_TOKEN_ADDRESSES["polygon"], - "polygon" - ), - }, - shiden: { - tvl: getUniTVL({ - factory: '0xf5fC2D145381A2eBAFb93Cc2B60fB2b97FB405aa', - useDefaultCoreAssets: true, - }), - staking: staking( - STAKING_CONTRACTS["shiden"], - KWIK_TOKEN_ADDRESSES["shiden"], - "shiden", - KWIK_TOKEN_ADDRESSES["ethereum"] - ), - }, - bsc: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x64eBD6CaCece790e9C4DDeA1a24952Ddb2715279', - }), - }, -} diff --git a/projects/KyborgExchange/index.js b/projects/KyborgExchange/index.js deleted file mode 100644 index 63333c7f9fe..00000000000 --- a/projects/KyborgExchange/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - arbitrum: { factory: '0x25620d76654caC426229C85bE8eAEB010Ea25c8F', fromBlock: 89067435 }, -} - -module.exports = { - hallmarks: [ - [1684108800, "Rug Pull"] - ], - deadFrom: '2023-05-15', - methodology: `Counts the tokens balances of the KyborgHub contract`, -}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ api, target: factory, onlyArgs: true, eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, bytes32 indexed poolId)', topics: ['0xec5dc6309c83a50f60f4a1fae9422b2c406da78c579b9b12b92d033db37c7194'], fromBlock, }) - return sumTokens2({ api, owner: factory, tokens: logs.map(i => [i.token0, i.token1]).flat()}) - } - } -}) \ No newline at end of file diff --git a/projects/LFIswap/index.js b/projects/LFIswap/index.js deleted file mode 100644 index 4a406c70ccb..00000000000 --- a/projects/LFIswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory addresses (0xB702C2917f47012C331C6c65B74e07dA61260Bd4 for kava) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - kava: { - tvl: getUniTVL({ - factory: '0xB702C2917f47012C331C6c65B74e07dA61260Bd4', - useDefaultCoreAssets: true, - }), - } -} - -module.exports.deadFrom = '2023-04-09' \ No newline at end of file diff --git a/projects/LairFinance/index.js b/projects/LairFinance/index.js deleted file mode 100644 index 9ca6e168663..00000000000 --- a/projects/LairFinance/index.js +++ /dev/null @@ -1,111 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const contracts = { - KAIA : { - stKAIA: '0x42952B873ed6f7f0A7E4992E2a9818E3A9001995', - rstKAIA: '0xd05fCB2d4c427232C3b36a33E21a4F23810A298F', - LAIR: '0xD70C7D511560493C79DF607076fB863f5c8A50b0', - nodeController: '0x7949597f453592B782EC9036Af27d63Ed9774b2d', - restakingManager: '0x66611Ba2aa5deB46e6138aD21a202b40ecE5b6AB', - }, - BERA: { - WBERA: ADDRESSES.berachain.WBERA, - LAIR: '0xf3530788DEB3d21E8fA2c3CBBF93317FB38a0D3C', - LrBGT: '0x66611Ba2aa5deB46e6138aD21a202b40ecE5b6AB', - iBGT: '0xac03caba51e17c86c921e1f6cbfbdc91f8bb2e6b', - lairBGTManager: '0x381E9DC031D2667BB61d4Ab61e64D520Bbd7bFfC', - lairBGTManagerHelper: '0xfc3Da0822fE3127334B95Ea3661060B957379c82', - infraredIBGTVault: '0x75F3Be06b02E235f6d0E7EF2D462b29739168301', - infraredWBERALAIRVault: '0x6583e71778A3d275B8A27f1252A125f7a6F875D1', - kodiakBERALAIRLp: '0x9f6cf7aCb2F16f7d906EeeCB0a6020a5Cf91A41d' - } -} - -async function kaia_tvl(api) { - const tvl = await api.call({ target: contracts.KAIA.nodeController, abi: "uint256:getTotalClaimable" }) - api.addGasToken(tvl) -} - -async function kaia_staking(api) { - const rstKAIATotalSupply = await api.call({ target: contracts.KAIA.rstKAIA, abi: "erc20:totalSupply" }) - const lairPairRate = await api.call({ target: contracts.KAIA.restakingManager, abi: "uint256:pairRate" }) - const restakedLairAmount = rstKAIATotalSupply * lairPairRate / (10 ** 18) - api.add(contracts.KAIA.LAIR, restakedLairAmount) -} - -async function getBeraAssets(api) { - const lrBGTTotalSupply = await api.call({ target: contracts.BERA.LrBGT, abi: "erc20:totalSupply" }) - - const tokenContracts = [{ - token: contracts.BERA.LrBGT, - manager: contracts.BERA.lairBGTManager, - helper: contracts.BERA.lairBGTManagerHelper, - bgtVault: contracts.BERA.infraredIBGTVault, - lpVault: contracts.BERA.infraredWBERALAIRVault, - bgtToken: contracts.BERA.iBGT, - lpToken: contracts.BERA.kodiakBERALAIRLp, - token0: contracts.BERA.WBERA, - token1: contracts.BERA.LAIR, - }] - - const predicted = await api.multiCall({ - abi: 'function predictedUnStakeAmount(address,address,address,address,address,address,address,address,uint256) view returns (uint256,uint256)', - calls: tokenContracts.map(item => ({ - target: contracts.BERA.lairBGTManagerHelper, - params: [ - item.manager, - item.token, - item.bgtVault, - item.lpVault, - item.bgtToken, - item.lpToken, - item.token0, - item.token1, - lrBGTTotalSupply, - ] - })), - }) - const bgtAmounts = predicted.map(([bgtAmount]) => bgtAmount) - const lpAmounts = predicted.map(([, lpAmount]) => lpAmount) - - const pairAmounts = await api.multiCall({ - abi: "function lpPairTokenAmount(address,uint256) view returns (uint256,uint256)", - calls: tokenContracts.map((item, idx) => ({ - target: contracts.BERA.lairBGTManagerHelper, - params: [item.lpToken, lpAmounts[idx]], - })), - }) - - const results = tokenContracts.map((c, i) => { - const [token0Amount, token1Amount] = pairAmounts[i] - return { - bgtToken: c.bgtToken, - token0: c.token0, - token1: c.token1, - bgtAmount: bgtAmounts[i], - token0Amount, - token1Amount, - } - }) - - return results -} - -async function bera_tvl(api) { - const items = await getBeraAssets(api) - for (const item of items) { - api.add(item.bgtToken, item.bgtAmount) - api.add(item.token0, item.token0Amount) - } -} - -async function bera_staking(api) { - const items = await getBeraAssets(api) - for (const item of items) { - api.add(item.token1, item.token1Amount) - } -} - -module.exports = { - klaytn: { tvl: kaia_tvl, staking: kaia_staking }, - berachain:{ tvl: bera_tvl, staking: bera_staking }, -} \ No newline at end of file diff --git a/projects/LamaMiner/index.js b/projects/LamaMiner/index.js deleted file mode 100644 index 8df22f01761..00000000000 --- a/projects/LamaMiner/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens") -const LAMA_TOKEN_CONTRACT = '0x89A8633bcaD3af0951acC5137811ea21a17C37DC'; -const LAMA_MINER_CONTRACT = '0x1f4292Cf1C0fDa5Ef1C3e9d1e59C13bd1808DD10'; -const LP_LAMA_WAVAX = "0xf3336be3416916D26840f41780E0cBc861eF3B3C" -const LAMA_STAKING_CONTRACT = '0xc16ce7B683da825906c6CA8Df33986c6Ef9B287B'; -const LP_LQDX_LAMA = "0x3a74922803415Dfc43c0030d47707b20f4c1b05d" - - -module.exports = { - misrepresentedTokens: true, - methodology: 'counts the number of LAMA tokens in the Lama Miner contract.', - start: '2024-04-01', - avax: { - tvl: sumTokensExport({ owner: LAMA_MINER_CONTRACT, tokens: [LAMA_TOKEN_CONTRACT], lps: [LP_LAMA_WAVAX], useDefaultCoreAssets: true, }), - staking: sumTokensExport({ owner: LAMA_STAKING_CONTRACT, tokens: [LAMA_TOKEN_CONTRACT], lps: [LP_LAMA_WAVAX, LP_LQDX_LAMA], useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/LeadFi-leadBTC/index.js b/projects/LeadFi-leadBTC/index.js deleted file mode 100644 index da642ed6ed9..00000000000 --- a/projects/LeadFi-leadBTC/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') -const { sumTokensExport } = require("../helper/sumTokens"); - -module.exports = { - methodology: "leadBTC, Lead Wrapped Bitcoin", - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.leadbtc }) } -}; \ No newline at end of file diff --git a/projects/LeaperFinance/index.js b/projects/LeaperFinance/index.js deleted file mode 100644 index 8de450e5d42..00000000000 --- a/projects/LeaperFinance/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { compoundExports2, } = require('../helper/compound') -const { stakings } = require("../helper/staking") -const { mergeExports } = require("../helper/utils") -const { yieldHelper, } = require("../helper/yieldHelper") - -const lend = compoundExports2({ comptroller: '0xB37e4151603bD0A83329CDB3F7AB0Ba608D2b9e4' }) - -const stake = '0x94C84CdA39fc7099d745Fea787b2e42BAe51B5a5' -const contract = '0x8B0eB5bD61c790E2CC6FB61a08210736ae66B462' -const token = '0x49cD19636855C00Dd0408C0C40e0951a41c4512A' -const abis = { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, uint256 accSushiPerShare, uint256 amount, address strat)', -} - -const arbi_helper = yieldHelper({ - project: 'leaper-finance', - chain: 'blast', - masterchef: contract, - nativeToken: token, - abis, -}) - -module.exports = mergeExports([ - arbi_helper, - { blast: lend, }, - { blast: { staking: stakings([stake], token) }, } -]) - -module.exports.deadFrom = '2025-06-09' \ No newline at end of file diff --git a/projects/LemonBlast/index.js b/projects/LemonBlast/index.js deleted file mode 100644 index 937330fceea..00000000000 --- a/projects/LemonBlast/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - blast: { tvl: getUniTVL({ factory: '0x31329BcDC90faD4d65764ccf91f833ec1d5fB5A4', useDefaultCoreAssets: true,}), }, -} diff --git a/projects/LiquidOps/index.js b/projects/LiquidOps/index.js deleted file mode 100644 index 6b9c7c43d26..00000000000 --- a/projects/LiquidOps/index.js +++ /dev/null @@ -1,124 +0,0 @@ -const { post } = require("../helper/http.js") -const methodologies = require('../helper/methodologies'); - - -const endpoint = 'https://cu.ao-testnet.xyz' -const controllerId = 'SmmMv0rJwfIDVM3RvY2-P729JFYwhdGSeGo2deynbfY' -const geckoTickerTransformations = { - 'wAR': 'arweave', - 'wUSDC': 'usd-coin', - 'wUSDT': 'tether', - 'wETH': 'ethereum', - 'USDA': 'usd-coin', - 'vAR': 'arweave', - 'vUSDC': 'usd-coin', - 'vDAI': 'dai', - 'vETH': 'ethereum', -}; - - - -// Access AO on chain data via the node endpoint -async function DryRun(target, action) { - const response = await post(`${endpoint}/dry-run?process-id=${target}`, { - Id: "1234", Target: target, Owner: "1234", Anchor: "0", Data: "1234", - Tags: [ - ["Target", target], - ["Action", action], - ["Data-Protocol", "ao"], - ["Type", "Message"], - ["Variant", "ao.TN.1"] - ].map(([name, value]) => ({ name, value })) - }); - return response -} - - -function scaleBalance(amount, denomination) { - if (amount === "0") return 0; - const denominationVal = parseInt(denomination); - const len = amount.length; - - if (denominationVal >= len) { - return parseFloat("0." + "0".repeat(denominationVal - len) + amount.replace(/0+$/, "")); - } - - const integerPart = amount.substr(0, len - denominationVal); - const fractionalPart = amount.substr(len - denominationVal).replace(/0+$/, ""); - - if (fractionalPart === "") return parseInt(integerPart); - - return parseFloat(integerPart + "." + fractionalPart); -} - - -async function getTokenInfos(supportedTokens) { - - const tokenInfo = []; - - for (const balanceObject of supportedTokens) { - const infoRes = await DryRun(balanceObject.oToken, "Info"); - await new Promise(resolve => setTimeout(resolve, 1000)); // don't overload node - - const tagsObject = Object.fromEntries( - infoRes.Messages[0].Tags.map((tag) => [tag.name, tag.value]) - ); - const ticker = geckoTickerTransformations[balanceObject.ticker] || balanceObject.ticker; - - tokenInfo.push({ - ticker: `coingecko:${ticker}`, - cash: scaleBalance(tagsObject['Cash'], tagsObject['Denomination']), - totalBorrows: scaleBalance(tagsObject['Total-Borrows'], tagsObject['Denomination']) - }); - } - - return tokenInfo; -} - -async function tvl() { - const supportedTokensRes = await DryRun(controllerId, "Get-Tokens"); - await new Promise(resolve => setTimeout(resolve, 1000)); // don't overload node - const supportedTokens = JSON.parse(supportedTokensRes.Messages[0].Data); - const tokensInfo = await getTokenInfos(supportedTokens); - const combinedBalances = {}; - - // Check if we already have a balance for this ticker - tokensInfo.forEach(token => { - if (combinedBalances[token.ticker]) { - combinedBalances[token.ticker] += token.cash; - } else { - combinedBalances[token.ticker] = token.cash; - } - }); - - return combinedBalances; -} - - -async function borrowed() { - await new Promise(resolve => setTimeout(resolve, 5000)); // don't trigger both functions at the same time to not overload node - const supportedTokensRes = await DryRun(controllerId, "Get-Tokens"); - const supportedTokens = JSON.parse(supportedTokensRes.Messages[0].Data); - await new Promise(resolve => setTimeout(resolve, 1000)); // don't overload node - const tokensInfo = await getTokenInfos(supportedTokens); - const combinedBalances = {}; - - tokensInfo.forEach(token => { - // Check if we already have a balance for this ticker - if (combinedBalances[token.ticker]) { - combinedBalances[token.ticker] += token.totalBorrows; - } else { - combinedBalances[token.ticker] = token.totalBorrows; - } - }); - - return combinedBalances - -} - - -module.exports = { - methodology: methodologies.lendingMarket, - ao: { tvl, borrowed }, -}; -// node test.js projects/LiquidOps/index.js diff --git a/projects/Liquify-Manta/index.js b/projects/Liquify-Manta/index.js deleted file mode 100644 index 06fe0e5d44a..00000000000 --- a/projects/Liquify-Manta/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - manta:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0x951f08e103570C0385649B24bE892eefFb5Ce067', - }), - }, -} diff --git a/projects/Liquify/index.js b/projects/Liquify/index.js deleted file mode 100644 index fe7a6fbdc72..00000000000 --- a/projects/Liquify/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - core:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0x0Ed2a54c8fD6dcc3cF0f8fd97c748438f0f32eAD', - }), - }, -} diff --git a/projects/LizardExchange/index.js b/projects/LizardExchange/index.js deleted file mode 100644 index fa43be757d9..00000000000 --- a/projects/LizardExchange/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - oasis: { - tvl: getUniTVL({ factory: '0xefA6861931991CCE372c477a015619A21dfEBE8c', useDefaultCoreAssets: true }), - } -}; \ No newline at end of file diff --git a/projects/Lockless/index.js b/projects/Lockless/index.js deleted file mode 100644 index 7a20de3edfa..00000000000 --- a/projects/Lockless/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const swkava = '0x9d9682577CA889c882412056669bd936894663fd' -const swech = '0x86e4D91800c03e803d4c8FA3293d1C7d612A7300' - -async function tvl(api) { - - const pooledCoin = await api.call({ - target: api.chain === 'kava' ? swkava : swech, - abi: "uint256:totalSupply", - }) - return { - [api.chain === 'kava' ? 'kava' : 'echelon']: pooledCoin / 1e18, - } -} - -module.exports = { - kava: { tvl }, - echelon: { tvl: () => ({}), }, - methodology: "Any & Each 1 SW-Token can only ever be minted by permanent locking of 1 Native token. Hence, the totalSupply() method is used to aggregate the amounts of underlying assets, with their prices fed by the DefiLlama SDK.", -} diff --git a/projects/LuckyFuture/helpers.js b/projects/LuckyFuture/helpers.js deleted file mode 100644 index dc6d5ef5c7a..00000000000 --- a/projects/LuckyFuture/helpers.js +++ /dev/null @@ -1,112 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getMultipleAccounts } = require('../helper/solana') -const axios = require("axios"); - -function deserializeUserPositions(accountInfo) { - if (!accountInfo) { - throw new Error('User account not found'); - } - - const buffer = accountInfo.data; - - // Deserialize spot positions - const spotPositions = []; - let offset = 104; // Anchor discriminator (8) + Skip authority(32) + delegate(32) + name(32) - - for (let i = 0; i < 8; i++) { - const spotPosition = { - scaled_balance: buffer.readBigUInt64LE(offset), - market_index: buffer.readUInt16LE(offset + 32), - balance_type: buffer.readUInt8(offset + 34), - }; - - // Only push non-empty positions - if (spotPosition.scaled_balance > 0n) { - spotPositions.push(spotPosition); - } - offset += 40; // Size of SpotPosition struct - } - - // Deserialize perp positions - const perpPositions = []; - for (let i = 0; i < 8; i++) { - const lastCumulativeFundingRate = buffer.readBigInt64LE(offset); - const baseAssetAmount = buffer.readBigInt64LE(offset + 8); - const quoteAssetAmount = buffer.readBigInt64LE(offset + 16); - - // Skip empty positions - if (baseAssetAmount === 0n && quoteAssetAmount === 0n) { - offset += 96; - continue; - } - - const perpPosition = { - last_cumulative_funding_rate: lastCumulativeFundingRate, - base_asset_amount: baseAssetAmount, - quote_asset_amount: quoteAssetAmount, - market_index: buffer.readUInt16LE(offset + 92) - }; - - perpPositions.push(perpPosition); - offset += 96; // Size of PerpPosition struct - } - - return { - spotPositions, - perpPositions - }; -} - - -function readPublicKeyFromBuffer(buffer, offset) { - if (!buffer || buffer.length < offset + 32) { - throw new Error('Buffer is too small to contain a public key at the specified offset'); - } - const publicKeyBytes = buffer.slice(offset, offset + 32); - return new PublicKey(publicKeyBytes); -} - - -async function fetchVaultUserAddressesWithOffset(data, offset) { - const vaultUserAddresses = []; - const otherDataArray = []; - - const validData = data.filter(item => { - try { - new PublicKey(item.address); - return true; - } catch (error) { - return false; - } - }); - - const accounts = await getMultipleAccounts(validData.map(item => new PublicKey(item.address))); - - accounts.forEach((account, index) => { - try { - const userPublicKey = readPublicKeyFromBuffer(account.data, offset); - vaultUserAddresses.push(userPublicKey); - } catch (error) { - console.error(`Error processing address ${validData[index].address}:`, error); - } - }); - - return { vaultUserAddresses, otherDataArray }; -} - -async function fetchVaultAddresses() { - try { - const response = await axios.get('https://raw.githubusercontent.com/LuckyFutureAi/LuckyFuture-Assets/refs/heads/main/vaults-info.json'); - if (response.status !== 200) { - throw new Error(`HTTP error! status: ${response.status}`); - } - return response.data.vaults; - } catch (error) { - console.error('Error fetching vault addresses:', error); - throw error; - } -} - - -module.exports = { readPublicKeyFromBuffer, deserializeUserPositions, fetchVaultUserAddressesWithOffset, fetchVaultAddresses}; - diff --git a/projects/LuckyFuture/index.js b/projects/LuckyFuture/index.js deleted file mode 100644 index b69bd781842..00000000000 --- a/projects/LuckyFuture/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const { getTokenMintFromMarketIndex, processSpotPosition, processPerpPosition, getPerpTokenMintFromMarketIndex, getVaultPublicKey } = require("./spotMarkets"); -const { deserializeUserPositions, fetchVaultUserAddressesWithOffset, fetchVaultAddresses} = require("./helpers"); -const { getPerpMarketFundingRates } = require("./spotMarkets"); -const { getMultipleAccounts} = require('../helper/solana') - - - - module.exports = { - timetravel: false, - doublecounted: true, - methodology: "Calculate sum of spot positions in vaults with unrealized profit and loss", - solana: { - tvl, - }, -}; - -async function tvl(api) { - - const vaultAddresses = await fetchVaultAddresses(); - - const { vaultUserAddresses, } = await fetchVaultUserAddressesWithOffset(vaultAddresses, 168); - - // Get all vault accounts first - const accounts = await getMultipleAccounts(vaultUserAddresses) - const deserializedData = accounts.filter((accountInfo) => !!accountInfo).map(deserializeUserPositions) - - // Collect unique market indices upfront - const allSpotIndices = new Set() - const allPerpIndices = new Set() - - deserializedData.forEach(({ spotPositions, perpPositions }) => { - spotPositions?.forEach(pos => allSpotIndices.add(pos.market_index)) - perpPositions?.forEach(pos => allPerpIndices.add(pos.market_index)) - }) - - // Batch fetch - const allKeys = [ - ...[...allSpotIndices].map(index => getVaultPublicKey('spot_market', index)), - ...[...allPerpIndices].map(index => getVaultPublicKey('perp_market', index)), - ] - - const allAccounts = await getMultipleAccounts(allKeys) - - // Create lookup maps - const spotAccountMap = {} - const perpAccountMap = {} - - let offset = 0 - ;[...allSpotIndices].forEach((index, i) => { - spotAccountMap[index] = allAccounts[i] - offset = i + 1 - }) - ;[...allPerpIndices].forEach((index, i) => { - perpAccountMap[index] = allAccounts[i + offset] - }) - - // Process positions using the cached account data - for (const { spotPositions, perpPositions } of deserializedData) { - if (spotPositions?.length) { - spotPositions.forEach(position => { - const tokenMint = getTokenMintFromMarketIndex(position.market_index) - const adjustedBalance = processSpotPosition(position, spotAccountMap[position.market_index]) - api.add(tokenMint, adjustedBalance) - }) - } - - if (perpPositions?.length) { - perpPositions.map(position => { - const baseTokenMint = getPerpTokenMintFromMarketIndex(position.market_index) - const { baseBalance, quoteBalance } = processPerpPosition(position) - api.add(baseTokenMint, baseBalance) - - const quoteTokenMint = getTokenMintFromMarketIndex(0) - api.add(quoteTokenMint, quoteBalance) - - }) - } - } -} \ No newline at end of file diff --git a/projects/LuckyFuture/spotMarkets.js b/projects/LuckyFuture/spotMarkets.js deleted file mode 100644 index a2bf477aff8..00000000000 --- a/projects/LuckyFuture/spotMarkets.js +++ /dev/null @@ -1,162 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const anchor = require('@coral-xyz/anchor'); -const { PublicKey } = require("@solana/web3.js"); -const DRIFT_PROGRAM_ID = new PublicKey('dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH') -const CUSTOM_PROGRAM_ID = new PublicKey('EDnxACbdY1GeXnadh5gRuCJnivP7oQSAHGGAHCma4VzG') - -const SPOT_MARKETS = { - 0: { - name: 'USDC', - mint: ADDRESSES.solana.USDC, - decimals: 6 - }, - 1: { - name: 'SOL', - mint: ADDRESSES.solana.SOL, - decimals: 9 - }, - 17:{ - name:'dSOL', - mint:'Dso1bDeDjCQxTrWHqUUi63oBvV7Mdm6WaobLbQ7gnPQ', - decimals: 9 - }, - 19: { - name: 'JLP', - mint: '27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4', - decimals: 6 - } -}; - -const PERP_MARKETS = { - 0: { - name: 'SOL-PERP', - mint: ADDRESSES.solana.SOL, - baseDecimals: 9, - quoteDecimals: 6 - }, - 1: { - name: 'BTC-PERP', - mint: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh", - baseDecimals: 8, - quoteDecimals: 6 - }, - 2: { - name: 'ETH-PERP', - mint: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", - baseDecimals: 8, - quoteDecimals: 6 - }, -}; - -function getTokenMintFromMarketIndex(marketIndex) { - if (!SPOT_MARKETS[marketIndex]) { - throw new Error(`Market index ${marketIndex} not found`); - } - return SPOT_MARKETS[marketIndex].mint; -} - -function getPerpTokenMintFromMarketIndex(marketIndex) { - if (!PERP_MARKETS[marketIndex]) { - throw new Error(`Perp market index ${marketIndex} not found`); - } - return PERP_MARKETS[marketIndex].mint; -} - -function getDecimalsByMarketIndex(marketIndex, isPerp = false) { - if (isPerp) { - if (!PERP_MARKETS[marketIndex]) { - throw new Error(`Perp market index ${marketIndex} not found`); - } - return PERP_MARKETS[marketIndex].baseDecimals; - } - - if (!SPOT_MARKETS[marketIndex]) { - throw new Error(`Spot market index ${marketIndex} not found`); - } - return SPOT_MARKETS[marketIndex].decimals; -} - -function processSpotPosition(position, spotMarketAccountInfo) { - const decimals = getDecimalsByMarketIndex(position.market_index); - const decimalAdjustment = 9 - decimals; - let balance = position.scaled_balance; - - // Apply decimal adjustment - if (decimalAdjustment > 0) { - balance /= BigInt(10 ** decimalAdjustment); - } - - // For borrowed positions (balance_type === 1), apply interest rate - if (position.balance_type === 1) { - const cumulativeBorrowInterest = getSpotMarketCumulativeBorrowInterest(spotMarketAccountInfo); - // Apply interest rate to the balance - balance = (balance * cumulativeBorrowInterest) / BigInt(10 ** 10); - return -balance; // Return negative for borrows - } - - return balance; // Return positive for deposits -} - -function getSpotMarketCumulativeBorrowInterest(accountInfo) { - if (!accountInfo) { - throw new Error(`No account info found for market`); - } - - const CUMULATIVE_BORROW_INTEREST_OFFSET = 8 + 48 + 32 + 256 + (16 * 8) + 8; - - const lower64Bits = accountInfo.data.readBigInt64LE(CUMULATIVE_BORROW_INTEREST_OFFSET); - const upper64Bits = accountInfo.data.readBigInt64LE(CUMULATIVE_BORROW_INTEREST_OFFSET + 8); - - return (upper64Bits << 64n) + lower64Bits; - } - - -function processPerpPosition(position) { - - - let baseBalance = position.market_index === 0 ? position.base_asset_amount : position.base_asset_amount / BigInt(10); - - let quoteBalance = position.quote_asset_amount; - - return { baseBalance, quoteBalance }; -} - - -function getPerpMarketFundingRates(accountInfo) { - if (!accountInfo) { - throw new Error(`No account info found for market`); - } - let factorToPrecision = 1n; - - - const CUMULATIVE_FUNDING_OFFSET = 8 + 48 + 32 + 256 + (16 * 15) + 24; - - const cumulativeFundingRateLong = accountInfo.data.readBigInt64LE(CUMULATIVE_FUNDING_OFFSET); - const cumulativeFundingRateShort = accountInfo.data.readBigInt64LE(CUMULATIVE_FUNDING_OFFSET + 16); - - return { - cumulativeFundingRateLong, - cumulativeFundingRateShort, - factorToPrecision - }; -} - -module.exports = { - getTokenMintFromMarketIndex, - getDecimalsByMarketIndex, - processSpotPosition, - processPerpPosition, - SPOT_MARKETS, - PERP_MARKETS, - getPerpMarketFundingRates, - getPerpTokenMintFromMarketIndex, - getVaultPublicKey, -}; - -function getVaultPublicKey(seed, marketIndex) { - return PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode(seed)), - new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2), - ], DRIFT_PROGRAM_ID)[0] -} \ No newline at end of file diff --git a/projects/LuigiSwap/index.js b/projects/LuigiSwap/index.js deleted file mode 100644 index cbe4b40e00d..00000000000 --- a/projects/LuigiSwap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - op_bnb: { - tvl: getUniTVL({ - factory: "0x0dAe6d22182c20AB9150a4DCB3160591Dc41027a", - useDefaultCoreAssets: true, - }), - }, - scroll: { - tvl: getUniTVL({ - factory: "0x0dAe6d22182c20AB9150a4DCB3160591Dc41027a", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/MAYZ/index.js b/projects/MAYZ/index.js deleted file mode 100644 index 6aaf93b0c51..00000000000 --- a/projects/MAYZ/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require('../helper/chain/cardano'); - -const PROTOCOL_FUNDS_ADDRESS = "addr1wxlgzwu4vr5h75ndr523unyqrsq6g455uhudps02h403t4qkjud9l"; -const GOVERNANCE_STAKING_ADDRESS = "addr1wxn9kx9w0gjzfkyuejqtt834z04gd9yrans6hy0xt5vunpslcg4j7"; - -async function tvl() { - return sumTokens2({ owner: PROTOCOL_FUNDS_ADDRESS }); -} - -function stake() { - return sumTokens2({ owner: GOVERNANCE_STAKING_ADDRESS }); -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - staking: stake - }, -}; \ No newline at end of file diff --git a/projects/MFIL/index.js b/projects/MFIL/index.js deleted file mode 100644 index 2e22783e52b..00000000000 --- a/projects/MFIL/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const MFILPOOLCONTRACT = '0x8aF827CDa3b7Eee9720496A30595D7Ee89A27ee2'; -const MFILREGULARPOOLCONTRACT = '0xD4f7c1A09ed5f50a3eC2F1e9fcF8B1bc2d1d3d70' -const ADDRESSES = require('../helper/coreAssets.json') - -async function mfilTvl(api) { - const mfilPoolStakeMfil = await api.call({ - target: MFILPOOLCONTRACT, - abi: "erc20:totalSupply", - }) - - api.add(ADDRESSES.null, mfilPoolStakeMfil) -} - -module.exports = { - filecoin: { - tvl: mfilTvl - }, -} diff --git a/projects/Magic-Fi/index.js b/projects/Magic-Fi/index.js deleted file mode 100644 index 8731b5503f5..00000000000 --- a/projects/Magic-Fi/index.js +++ /dev/null @@ -1,202 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking, stakings } = require('../helper/staking') - -const magicPPConfig = { - fantom: [ - ADDRESSES.fantom.WFTM, // WFTM - '0x74b23882a30290451A17c44f4F05243b6b58C76d', // WETH - ADDRESSES.fantom.WBTC, // WBTC - '0x6626c47c00F1D87902fc13EECfaC3ed06D5E8D8a', // magic - ADDRESSES.fantom.USDC, // USDC - ADDRESSES.fantom.fUSDT, // fUSDT - ], - bsc: [ - ADDRESSES.bsc.WBNB, // WBNB - ADDRESSES.bsc.ETH, // ETH - ADDRESSES.bsc.BTCB, // BTCB - '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', // magic - ADDRESSES.bsc.USDT, // USDT - ADDRESSES.bsc.BUSD, // BUSD - '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', // CAKE - ], - avax: [ - ADDRESSES.avax.WAVAX, // WAVAX - ADDRESSES.avax.WETH_e, // WETH.e - ADDRESSES.avax.BTC_b, // BTC.b - '0xaBC9547B534519fF73921b1FBA6E672b5f58D083', // magic.e - ADDRESSES.avax.USDC, // USDC - ADDRESSES.avax.USDt, // USDt - ], - polygon: [ - ADDRESSES.polygon.WMATIC_2, // WMATIC - ADDRESSES.polygon.WETH_1, // WETH - ADDRESSES.polygon.WBTC, // WBTC - '0x1B815d120B3eF02039Ee11dC2d33DE7aA4a8C603', // magic - ADDRESSES.polygon.USDC, // USDC.e - ADDRESSES.polygon.USDC_CIRCLE, // native USDC - ADDRESSES.polygon.USDT, // USDT - ], - arbitrum: [ - ADDRESSES.arbitrum.WETH, // WETH - ADDRESSES.arbitrum.WBTC, // WBTC - '0xcAFcD85D8ca7Ad1e1C6F82F651fA15E33AEfD07b', // magic - ADDRESSES.arbitrum.ARB, // ARB - ADDRESSES.arbitrum.USDC, // USDC.e - ADDRESSES.arbitrum.USDC_CIRCLE, // native USDC - ADDRESSES.arbitrum.USDT, // USDT - ], - optimism: [ - ADDRESSES.optimism.WETH_1, // WETH - ADDRESSES.optimism.WBTC, // WBTC - ADDRESSES.optimism.OP, // OP - ADDRESSES.optimism.USDC, // USDC.e - ADDRESSES.optimism.USDC_CIRCLE, // native USDC - ADDRESSES.optimism.USDT, // USDT - '0x871f2F2ff935FD1eD867842FF2a7bfD051A5E527', // magic - ], - ethereum: [], - era: [ - ADDRESSES.era.WETH, // WETH - ADDRESSES.era.ZK, // ZK - ADDRESSES.era.USDC, // USDC.e - '0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4', // native USDC - ], - polygon_zkevm: [ - ADDRESSES.polygon_zkevm.WETH, // WETH - ADDRESSES.polygon_zkevm.USDC, // USDC - ], - linea: [ - ADDRESSES.linea.WETH, // WETH - '0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4', // WBTC - ADDRESSES.linea.USDC, // native USDC - ADDRESSES.linea.USDT, // USDT - ], - base: [ - ADDRESSES.base.WETH, // WETH - ADDRESSES.ethereum.cbBTC, // cbBTC - ADDRESSES.base.USDbC, // USDbC - ADDRESSES.base.USDC, // native USDC - ], - mantle: [ - ADDRESSES.mantle.WMNT, // WMNT - ADDRESSES.mantle.WETH, // WETH - ADDRESSES.mantle.mETH, // mETH - ADDRESSES.mantle.USDT, // USDT - ADDRESSES.mantle.USDC, // USDC - ADDRESSES.mantle.cmETH, // cmETH - ], - sonic: [ - ADDRESSES.sonic.wS, //wS - '0x50c42dEAcD8Fc9773493ED674b675bE577f2634b', // WETH - ADDRESSES.sonic.USDC_e, // USDC.e - ], -} - -const chainConfig = { - fantom: { - magicPPContract: '0x286ab107c5E9083dBed35A2B5fb0242538F4f9bf', - magic: '0x6626c47c00f1d87902fc13eecfac3ed06d5e8d8a', - stakingContract: '0x2Fe5E5D341cFFa606a5d9DA1B6B646a381B0f7ec', - stakingContractV2: '0x1416E1378682b5Ca53F76656549f7570ad0703d9', - }, - bsc: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: '0x4691937a7508860f876c9c0a2a617e7d9e945d4b', - stakingContract: '0x2AEab1a338bCB1758f71BD5aF40637cEE2085076', - stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', - }, - avax: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: '0xabc9547b534519ff73921b1fba6e672b5f58d083', - stakingContract: '0xcd1B9810872aeC66d450c761E93638FB9FE09DB0', - stakingContractV2: '0x3Bd96847C40De8b0F20dA32568BD15462C1386E3', - }, - polygon: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: '0x1b815d120b3ef02039ee11dc2d33de7aa4a8c603', - stakingContract: '0x9BCf8b0B62F220f3900e2dc42dEB85C3f79b405B', - stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', - }, - arbitrum: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: '0xcafcd85d8ca7ad1e1c6f82f651fa15e33aefd07b', - stakingContract: '0x9321785D257b3f0eF7Ff75436a87141C683DC99d', - stakingContractV2: '0x2CFa72E7f58dc82B990529450Ffa83791db7d8e2', - }, - optimism: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: '0x871f2f2ff935fd1ed867842ff2a7bfd051a5e527', - stakingContract: null, - stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', - }, - ethereum: { - magicPPContract: null, - magic: '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', - stakingContract: null, - stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', - }, - era: { - magicPPContract: '0xE656d70bc3550e3EEE9dE7dC79367A44Fd13d975', - magic: null, - stakingContract: null, - stakingContractV2: null, - }, - polygon_zkevm: { - magicPPContract: '0xF5d215d9C84778F85746D15762DaF39B9E83a2d6', - magic: null, - stakingContract: null, - stakingContractV2: null, - }, - linea: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: null, - stakingContract: null, - stakingContractV2: null, - }, - base: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: null, - stakingContract: null, - stakingContractV2: null, - }, - mantle: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: null, - stakingContract: null, - stakingContractV2: null, - }, - sonic: { - magicPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', - magic: null, - stakingContract: null, - stakingContractV2: null, - } -} - -Object.keys(chainConfig).forEach(chain => { - const magicPPTokens = magicPPConfig[chain] - const { magicPPContract, magic, stakingContract, stakingContractV2 } = chainConfig[chain] - - var tvl = 0 - if (magicPPContract != null) { - tvl = staking(magicPPContract, magicPPTokens, chain) - } - - var contracts = [] - if (stakingContract != null) { - contracts.push(stakingContract) - } - if (stakingContractV2 != null) { - contracts.push(stakingContractV2) - } - - var stakingAmount = 0 - if (magic != null) { - stakingAmount = stakings(contracts, magic, chain) - } - - module.exports[chain] = { - staking: stakingAmount, - tvl: tvl, - } -}) diff --git a/projects/Magnate/index.js b/projects/Magnate/index.js deleted file mode 100644 index cf34139b0d3..00000000000 --- a/projects/Magnate/index.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - base: { - tvl:() => ({}), - staking:() => ({}), - pool2:() => ({}), - borrowed:() => ({}), - }, - // hallmarks: [ - // ['2023-08-25', 'Project Rugged'], - // ], - deadFrom: '2023-08-25' -}; diff --git a/projects/ManaSwap/index.js b/projects/ManaSwap/index.js deleted file mode 100644 index 3bfbdf10b43..00000000000 --- a/projects/ManaSwap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const chain = 'hyperliquid' -const factory = '0x46BC787Bf21D9178f2dEbAD939e76c7E9Dd0A392' // v2 factory address - -module.exports = uniTvlExport(chain, factory) \ No newline at end of file diff --git a/projects/MantaTimeLockContract/index.js b/projects/MantaTimeLockContract/index.js deleted file mode 100644 index 73ee2d5e170..00000000000 --- a/projects/MantaTimeLockContract/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const MANTA = '0x95CeF13441Be50d20cA4558CC0a27B601aC544E5'; -const STONE = ADDRESSES.berachain.STONE; -const TIME_LOCK_CONTRACT = '0x8Bb6CaE3f1CADA07Dd14bA951e02886ea6bBA183'; - -module.exports = { - methodology: 'counts the number of (MANTA OR STONE) in the time lock contract.', - manta: { - tvl: sumTokensExport({ owner: TIME_LOCK_CONTRACT, tokens: [MANTA, STONE] }), - } -}; diff --git a/projects/MantisSwap/index.js b/projects/MantisSwap/index.js deleted file mode 100644 index 883b336126a..00000000000 --- a/projects/MantisSwap/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - polygon: { vaults: ['0x62Ba5e1AB1fa304687f132f67E35bFC5247166aD'] }, - polygon_zkevm: { vaults: ['0x12d41b6DF938C739F00c392575e3FD9292d98215'] }, - mode: { vaults: ['0x4af97f73343b226C5a5872dCd2d1c4944BDb3E77', '0xe8A1eAD2F4c454e319b76fA3325B754C47Ce1820'] }, -} - -const MAX_LP_TOKENS = 3 - -Object.keys(config).forEach(chain => { - const { vaults } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const calls = vaults.map(vault => { - let res = [] - for (let i = 0; i < MAX_LP_TOKENS; i++) - res.push({ target: vault, params: i }) - return res - }).flat() - let lpVaults = await api.multiCall({ abi: 'function lpList(uint256) view returns (address)', calls, permitFailure: true }) - lpVaults = lpVaults.filter(v => v) - const tokens = await api.multiCall({ abi: 'address:underlier', calls: lpVaults }) - return sumTokens2({ api, tokensAndOwners2: [tokens, lpVaults] }) - } - } -}) diff --git a/projects/MantraProtocol/index.js b/projects/MantraProtocol/index.js deleted file mode 100644 index eeb22b2b09c..00000000000 --- a/projects/MantraProtocol/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const MANTRA_CONTRACT_PER_CHAIN = { - shibarium: '0xf27B9704a15fFe47818fD48660D952235e9C39aF', - dogechain: '0xf27B9704a15fFe47818fD48660D952235e9C39aF', - cronos: '0xf27B9704a15fFe47818fD48660D952235e9C39aF', - smartbch: '0xA39F586a9F4f68e43F0443A6E966eFe096eb8C88' -} - -async function tvl(api) { - - const MANTRA_CONTRACT = MANTRA_CONTRACT_PER_CHAIN[api.chain] - - // Get all whitelisted tokens (includes native coin as 0x0000000000000000000000000000000000000000) - const whitelistedTokens = await api.call({ - abi: 'function getWhitelistedCurrencies() external view returns (address[] memory currencies)', - target: MANTRA_CONTRACT - }) - - return sumTokens2({ api, tokens: whitelistedTokens, owner: MANTRA_CONTRACT }) -} - -module.exports = { - methodology: 'Counts the balance of each of the whitelisted tokens in the Mantra contract', - shibarium: { - tvl, - }, - dogechain: { - tvl, - }, - cronos: { - tvl, - }, - smartbch: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/Match-Finance/index.js b/projects/Match-Finance/index.js deleted file mode 100644 index 38df1d80ed2..00000000000 --- a/projects/Match-Finance/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const ETH_LBR_LP = '0x3a0ef60e803aae8e94f741e7f61c7cbe9501e569'; -const MATCH_TOKEN = '0xe0dcb3e02798d1c6a9650fe1381015ec34705153'; -const LYBRA_STETH_VAULT = '0xa980d4c0C2E48d305b582AA439a3575e3de06f0E'; -const LYBRA_REWARD_VAULT = '0xec7c6cd15d9bd98fc9805e0509e3bb2033c5956d'; -const MATCH_FINANCE_CONTRACT = '0x04b9ce11da7323aEf03f6e6c16C0b93cFB44C55c'; -const VLMATCH_STAKING_CONTRACT = '0x7D027083e55724A1082b8cDC51eE90781f41Ff14'; - -const totalSuppliedAbi = 'function depositedAsset(address) external view returns (uint256)' - -async function tvl(api) { - const [ - totalSTETHSupplied, - lpStaked, - ] = await Promise.all([ - api.call({ abi: totalSuppliedAbi, params: MATCH_FINANCE_CONTRACT, target: LYBRA_STETH_VAULT }), - api.call({ abi: 'erc20:balanceOf', params: MATCH_FINANCE_CONTRACT, target: LYBRA_REWARD_VAULT }), - ]); - - api.add(ADDRESSES.ethereum.STETH, totalSTETHSupplied) - api.add(ETH_LBR_LP, lpStaked) - - return api.getBalances() -} - -async function staking(api) { - const vlMatchStaked = await api.call({ abi: 'uint256:totalStaked', target: VLMATCH_STAKING_CONTRACT }) - api.add(MATCH_TOKEN, vlMatchStaked) -} - -module.exports = { - doublecounted: true, - methodology: 'Get total amount of stETH supplied and ETH-LBR LP staked to Match Finance', - ethereum: { - tvl, staking, - } -}; diff --git a/projects/MellowProtocol/index.js b/projects/MellowProtocol/index.js deleted file mode 100644 index a8835409e51..00000000000 --- a/projects/MellowProtocol/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const sdk = require('@defillama/sdk') - -const config = { - ethereum: { - registry: '0xfd23f971696576331fcf96f80a20b4d3b31ca5b2', - fromBlock: 15237714, - }, - polygon: { - registry: '0xd3d0e85f225348a2006270daf624d8c46cae4e1f', - fromBlock: 31243728, - }, - polygon_zkevm: { - registry: '0xc02a7B4658861108f9837007b2DF2007d6977116', - fromBlock: 2665891, - }, - base: { - registry: '0xc02a7B4658861108f9837007b2DF2007d6977116', - fromBlock: 2785683, - } -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const { registry, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - - const vaults = await api.call({ abi: 'function vaults() view returns (address[])', target: registry }) - const tokens = await api.multiCall({ abi: 'function vaultTokens() view returns (address[])', calls: vaults }) - const bals = await api.multiCall({ abi: 'function tvl() view returns (uint256[] minTokenAmounts, uint256[] maxTokenAmounts)', calls: vaults, permitFailure: true }) - tokens.forEach((tokens, i) => { - if (!bals[i]) return; - let balsInner = bals[i].minTokenAmounts - tokens.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, balsInner[i], api.chain)) - }) - - return balances - } - } -}) \ No newline at end of file diff --git a/projects/MeowMiner/index.js b/projects/MeowMiner/index.js deleted file mode 100644 index e4a47d80269..00000000000 --- a/projects/MeowMiner/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens") -const MEOW_TOKEN_CONTRACT = '0x8aD25B0083C9879942A64f00F20a70D3278f6187'; -const MEOW_MINER_CONTRACT = '0xc0F9a97E46Fb0f80aE39981759eAB4a61eE36459'; -const LP_MEOW_WAVAX = "0xbbf8e4b9AD041edE1F5270CAf5b7B41F0e55f719" - -module.exports = { - methodology: 'counts the number of MEOW tokens in the Meow Miner contract.', - start: '2024-03-13', - avax: { - tvl: sumTokensExport({ owner: MEOW_MINER_CONTRACT, tokens: [MEOW_TOKEN_CONTRACT], lps: [LP_MEOW_WAVAX], useDefaultCoreAssets: true, }), - } -} \ No newline at end of file diff --git a/projects/MeowProtocol/index.js b/projects/MeowProtocol/index.js deleted file mode 100644 index 2a1fd286196..00000000000 --- a/projects/MeowProtocol/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: '0x9aE578d5ad69B051E6FbC7EBB18A12C2D459D914', - scroll: '0x4b71CAF14Cf8529101498976C44B8445797A5886' -} - -Object.keys(config).forEach(chain => { - const lendingPoolCore = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.call({ abi: 'address[]:getReserves', target: lendingPoolCore }) - return sumTokens2({api, tokens, owner: lendingPoolCore }) - }, - borrowed: async (api) => { - const tokens = await api.call({ abi: 'address[]:getReserves', target: lendingPoolCore }) - const bals = await api.multiCall({ abi: "function getReserveTotalBorrows(address _reserve) view returns (uint256)", target: lendingPoolCore, calls: tokens }) - api.add(tokens, bals) - return api.getBalances() - } - } -}) - - - module.exports.deadFrom = '2024-05-09' \ No newline at end of file diff --git a/projects/Metahub-Finance/index.js b/projects/Metahub-Finance/index.js deleted file mode 100644 index 9108edcd6ed..00000000000 --- a/projects/Metahub-Finance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') -const MEN_TOKEN_CONTRACT = '0x94b959c93761835f634B8d6E655070C58E2CAa12'; -const owners = [ - '0xF3Bc54A6b9615569194a203f852E64476f70d875', - '0x58e353BA88F22d6955b99Ee3a84826751F5B01be', - '0x126b40E61efAE1ef7b86ed3ffF4083369E3DaDF3', - '0x8Db60A7F9Ff1C92288C905fE780aE4D6f69Dd72e', - '0x0C6feFB39a0fe19054490F18C3Cb2412f407F650', - '0xf72d1642a6ce6e8b50597b6dca636488e14b666b', - '0xf416E1c9AdeCc1F8AF16E5fc26b06F69520A613b', - '0x1a0900f58ed4c558a0b35f184276ec9383ff29b0', - '0x56485038b32a24C7f5Ee1449eaC7f444ca4b21F2' -] - -module.exports = { - polygon: { - tvl: sumTokensExport({ owners, token: ADDRESSES.polygon.USDT, }), - staking: sumTokensExport({ owners, token: MEN_TOKEN_CONTRACT }), - pool2: sumTokensExport({ owners, token: '0xD12bA2A40289Ed8728682447DC77D001F03675F9', resolveLP: true, }), - }, -} \ No newline at end of file diff --git a/projects/Mezo/index.js b/projects/Mezo/index.js deleted file mode 100644 index 98fe454832f..00000000000 --- a/projects/Mezo/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -// https://mezo.org/docs/users/resources/contracts-reference - -const mezoTokens = [ - ADDRESSES.ethereum.tBTC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.CRVUSD, - ADDRESSES.ethereum.USDe, - ADDRESSES.mantle.FBTC, // fBTC - "0x7A56E1C57C7475CCf742a1832B028F0456652F97", // solvBTC - "0xd9D920AA40f578ab794426F5C90F6C731D159DEf", // solvBTC.bbn - "0x8DB2350D78aBc13f5673A411D4700BCF87864dDE", // swBTC - ADDRESSES.ethereum.cbBTC, // cbBTC - "0xCFC5bD99915aAa815401C5a41A927aB7a38d29cf", // thUSD - "0xCdF7028ceAB81fA0C6971208e83fa7872994beE5", // T - ADDRESSES.mezo.MUSD, -]; - -const mezoPreMainnetBridge = "0xAB13B8eecf5AA2460841d75da5d5D861fD5B8A39"; - -//https://github.com/mezo-org/mezod/blob/main/ethereum/bindings/portal/mainnet/gen/_address/MezoBridge -const mezoMainnetBridge = "0xF6680EA3b480cA2b72D96ea13cCAF2cFd8e6908c"; - -const getTvl = async (api, owners) => { - return api.sumTokens({ - api, - owner: [owners], - tokens: mezoTokens, - }); -}; - -async function tvl(api) { - const [preMigrationTvl, currentTvl] = await Promise.all([ - getTvl(api, mezoPreMainnetBridge), - getTvl(api, mezoMainnetBridge), - ]); - return { - ...preMigrationTvl, - ...currentTvl, - }; -} - -module.exports = { - hallmarks: [[1747987200, "Mezo Mainnet Migration"]], - ethereum: { tvl }, - // mezo: { tvl }, -}; \ No newline at end of file diff --git a/projects/MineFi/index.js b/projects/MineFi/index.js deleted file mode 100644 index fe0fb492c44..00000000000 --- a/projects/MineFi/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const sdk = require('@defillama/sdk'); -const ADDRESSES = require('../helper/coreAssets.json') -const MINEFI_CONTRACT = "0xeCa50369cb0cDBaE173C9c81c1B48212adc4b501"; - -async function tvl(api) { - - const collateralBalance = await api.call({ - abi: 'function getTvl() external view returns (uint256)', - target: MINEFI_CONTRACT, - }); - - api.add(ADDRESSES.null,collateralBalance) -} - - - -module.exports = { - timetravel: false, - methodology: 'counts the number of pledge filecoins in the minefi contract', - filecoin: { - tvl - } -}; \ No newline at end of file diff --git a/projects/MorFi/index.js b/projects/MorFi/index.js deleted file mode 100644 index c0ab9c3f66f..00000000000 --- a/projects/MorFi/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - morph: { - factory: "0x1be404c921ef85537233ef2be251a27583072861", - fromBlock: 166014, - isAlgebra: true, - }, -}); \ No newline at end of file diff --git a/projects/MorpheusAI/index.js b/projects/MorpheusAI/index.js deleted file mode 100644 index 3e63fb3c23f..00000000000 --- a/projects/MorpheusAI/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const PROJECT_CONTRACT = '0x47176B2Af9885dC6C4575d4eFd63895f7Aaa4790'; -const PROJECT_CONTRACT_V2 = '0xDf1AC1AC255d91F5f4B1E3B4Aef57c5350F64C7A'; - -async function tvl(api) { - const v2Deployment = +new Date('2025-09-17') / 1e3 - if (api.timestamp < v2Deployment) { - return api.sumTokens({ owner: PROJECT_CONTRACT, tokens: [ADDRESSES.ethereum.STETH] }) - } - - const aaveContract = await api.call({ abi: 'address:aavePoolDataProvider', target: PROJECT_CONTRACT_V2 }) - const aTokens = await api.call({ abi: abi.getAllATokens, target: aaveContract }) - const uTokens = await api.call({ abi: abi.getAllReservesTokens, target: aaveContract }) - const tokens = aTokens.map(i => i.tokenAddress).concat(uTokens.map(i => i.tokenAddress)) - - tokens.push(ADDRESSES.ethereum.STETH) - return api.sumTokens({ owners: [PROJECT_CONTRACT_V2, PROJECT_CONTRACT], tokens }) - -} - -const abi = { - "getAllATokens": "function getAllATokens() view returns ((string symbol, address tokenAddress)[])", - "getAllReservesTokens": "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Calculates TVL based on stETH deposits in the project contract.', - start: '2024-02-08', // Feb-08-2024 07:33:35 AM UTC in Unix timestamp - ethereum: { tvl }, - hallmarks: [ - [1712400000, "MOR token launch"], // May-08-2024 12:00:00 AM UTC in Unix timestamp - ], -}; diff --git a/projects/MultiSwap/index.js b/projects/MultiSwap/index.js deleted file mode 100755 index ff28a51b403..00000000000 --- a/projects/MultiSwap/index.js +++ /dev/null @@ -1,41 +0,0 @@ - -const token0ABI = 'address:token0' -const token1ABI = 'address:token1' - -const abis = { - poolsCount: "uint256:poolsCount", - poolsAddresses: "function poolsAddresses(uint256) view returns (address)", -} - -const config = { - kava: { - positionManager: '0x1Bf12f0650d8065fFCE3Cd9111feDEC21deF6825', - }, - aurora: { - positionManager: '0x649Da64F6d4F2079156e13b38E95ffBF8EBB1B14', - }, - polygon: { - positionManager: '0xc130807A61D5fE62F2cE3A38B14c61D658CE73F3', - }, - bsc: { - positionManager: '0x4eDeDaDFc96E44570b627bbB5c169d91304cF417', - }, - dchainmainnet: { - positionManager: '0x2f811854d65B8C0Cf6DC326F3b8E3A34B55DC1E2', - }, -} - -Object.keys(config).forEach(chain => { - const { positionManager } = config[chain] - module.exports[chain] = { - tvl: async function tvl(api) { - const pools = await api.fetchList({ lengthAbi: abis.poolsCount, itemAbi: abis.poolsAddresses, target: positionManager}) - const token0s = await api.multiCall({ abi: token0ABI, calls: pools}) - const token1s = await api.multiCall({ abi: token1ABI, calls: pools}) - const ownerTokens = [] - pools.forEach((pool, i) => ownerTokens.push([[token0s[i], token1s[i]], pool])) - return api.sumTokens({ ownerTokens }) - } - } -}) - diff --git a/projects/MyTrade/index.js b/projects/MyTrade/index.js deleted file mode 100644 index c58fc532e56..00000000000 --- a/projects/MyTrade/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") -const { getUniqueAddresses, } = require("../helper/utils") -const uniswapAbi = require("../helper/abis/uniswap") -const sdk = require('@defillama/sdk') - -const config = { - polygon: { orderBook: '0x5D36b36c53438C0fb70DCA5082EE5BDe25Bd888B', factory: '0x3ee4154c7f42d94e1092ad8ce5debb4b743ed0b2'}, - moonbeam: { orderBook: '0x75037b5D3B0bC1f28748918579BF35B68d01ebD3', factory: '0xdd760d04200c40e8dbBa158A860D4C872a6E3C35'}, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const {orderBook, factory } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const { chain, block} = api - const balances = {} - const calls = await api.fetchList({ lengthAbi: uniswapAbi.allPairsLength, itemAbi: uniswapAbi.allPairs, target: factory }) - const token0s = await api.multiCall({ abi: uniswapAbi.token0, calls }) - const token1s = await api.multiCall({ abi: uniswapAbi.token1, calls }) - const reserves = await api.multiCall({ abi: uniswapAbi.getReserves, calls }) - reserves.forEach(({ _reserve0, _reserve1}, i) => { - sdk.util.sumSingleBalance(balances,token0s[i],_reserve0, chain) - sdk.util.sumSingleBalance(balances,token1s[i],_reserve1, chain) - }) - const tokens = [...token0s, ...token1s] - - return sumTokens2({ - chain, block, owner: orderBook, tokens: getUniqueAddresses(tokens), balances, - }) - }, - } -}) diff --git a/projects/NEKO/index.js b/projects/NEKO/index.js deleted file mode 100644 index 6abfc0ce68b..00000000000 --- a/projects/NEKO/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { call } = require("../helper/chain/near") - -async function tvl(api) { - const NEKOStakedInFactory = await call("cookie.nekotoken.near", "get_total_staked", {}); - api.add('coingecko:neko', NEKOStakedInFactory / 1e24, { skipChain: true, }) -} - -module.exports = { - near: { - tvl: () => ({}), - staking: tvl, - }, - timetravel: false, - methodology: "Count the total value staked in the factory", -}; diff --git a/projects/OCP/index.js b/projects/OCP/index.js deleted file mode 100644 index 7a8d7817e6f..00000000000 --- a/projects/OCP/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { compoundExports } = require('../helper/compound') - -module.exports = { - bsc: compoundExports('0xc001c415b7e78ea4a3edf165d8f44b70391f8c3c', undefined, undefined, { blacklistedTokens: ['0x3c70260eee0a2bfc4b375feb810325801f289fbd', '0x5801d0e1c7d977d78e4890880b8e579eb4943276']}), - hallmarks: [ - ['2022-02-14', 'Project abandoned by the team'], - ], -}; diff --git a/projects/OCTOplace/index.js b/projects/OCTOplace/index.js deleted file mode 100644 index dd09f3c7b90..00000000000 --- a/projects/OCTOplace/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const contractKAVA = "0x61F91266F6abEA61447E00EB781A3c38a3D1b925"; -const contractTHETA = "0x6e4c614da85DD861e08f84706742239dBA892Df1"; -const KAVA_TFUEL = ADDRESSES.null; // Native coin -const USDC = ADDRESSES.telos.ETH; - -module.exports = { - kava: { tvl: sumTokensExport({ owner: contractKAVA, tokens: [KAVA_TFUEL, USDC] }) }, - theta: { tvl: sumTokensExport({ owner: contractTHETA, tokens: [KAVA_TFUEL] }) } -}; diff --git a/projects/OT/index.js b/projects/OT/index.js deleted file mode 100644 index ecb676193f0..00000000000 --- a/projects/OT/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const config = { - era: { - OT: '0xD0eA21ba66B67bE636De1EC4bd9696EB8C61e9AA', - OSD: '0x2F96F4397AdDdF9C2eeB5233a29556BE26eb9450', - OETH: '0x9D8A2817eb7137021E2F1A86316a7E3A3351b4e0', - swapContracts: ['0x84c18204c30da662562b7a2c79397C9E05f942f0', '0x2a98158166BE71D21Dd97e248ba670211Df9a73C'], - futureContracts: ['0x57D28e11Cb2f72812A9f9DA72F2Ff868cd4B43F2'], - }, - base: { - swapContracts: ['0xdDc8Bd03c1AB16a3E3dB0E89AA32C238FB9d63de'], - OSD: '0x139f18aC2a9FA34E0225FD2AAE983fc969b35540', - OETH: '0x2a86F14E762622Da8B7FB2A5BBdE50E16936279f', - futureContracts: [], - } -} - -Object.keys(config).forEach(chain => { - const { OSD, OETH, swapContracts, futureContracts } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = (await api.multiCall({ abi: 'address[]:getPoolTokenList', calls: swapContracts })).flat() - return api.sumTokens({ - tokensAndOwners: [[ADDRESSES.null, OETH]], - tokens, owners: [swapContracts, futureContracts].flat(), - blacklistedTokens: [OSD, OETH], - }) - } - } -}) \ No newline at end of file diff --git a/projects/OhMyCrypt/index.js b/projects/OhMyCrypt/index.js deleted file mode 100644 index 0bd9949ea55..00000000000 --- a/projects/OhMyCrypt/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const cbethBase = ADDRESSES.base.cbETH; -const agEURbase = "0xA61BeB4A3d02decb01039e378237032B351125B4"; -const tbtcbase = "0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b" - -const cbETHUSDCMarket = "0xc94f0d769b508406c9824d12527371CEc9d03A92"; -const WETHUSDCMarket = "0x9cdf2b3e2A048C04E828A35eAC51C8D05031cB8c"; -const BTCUSDCMarket = "0x5cD8298E6C862D429c51D44bED134bD0A40c3004"; -const agEURUSDCMarket = "0x4684C320C8768F4E49b52718f1247172f8Cb49A3"; -const USDCDAIMarket = "0xa7E34A5c1B06D2eBD9BdE7227b59119c46CaEdeF"; - -module.exports = { - base: { - tvl: sumTokensExport({ - ownerTokens: [ - [[ADDRESSES.base.USDC, cbethBase], cbETHUSDCMarket], - [[ADDRESSES.base.USDC, ADDRESSES.base.WETH], WETHUSDCMarket], - [[ADDRESSES.base.USDC, tbtcbase], BTCUSDCMarket], - [[ADDRESSES.base.USDC, agEURbase], agEURUSDCMarket], - [[ADDRESSES.base.USDC, ADDRESSES.base.DAI], USDCDAIMarket], - ] - }), - }, -}; \ No newline at end of file diff --git a/projects/Omnidrome/index.js b/projects/Omnidrome/index.js deleted file mode 100644 index 76a14a727de..00000000000 --- a/projects/Omnidrome/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'zeta': '0x769d1BcB5FDf30F5a9D19f1ab8A3cF8b60a6e855' -}, { - abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, hasStablePools: true, -}) \ No newline at end of file diff --git a/projects/OnRe/index.js b/projects/OnRe/index.js deleted file mode 100644 index 5602c1cd247..00000000000 --- a/projects/OnRe/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { - sumTokens2, - getTokenSupplies, - getAssociatedTokenAddress -} = require('../helper/solana'); -const ADDRESSES = require('../helper/coreAssets.json') -const {PublicKey} = require('@solana/web3.js') -const {default: axios} = require('axios') -const {getLowestOfferPrice, getOfferTokenAccounts} = require('./offerUtils'); - - -const MINT = '5Y8NV33Vv7WbnLfq3zBcKSdYPrk7g2KoiQoe7M2tcxp5'; -const BOSS = '45YnzauhsBM8CpUz96Djf8UG5vqq2Dua62wuW9H3jaJ5'; -const programId = new PublicKey('onreuGhHHgVzMWSkj2oQDLDtvvGvoepBPkqyaubFcwe'); -const onreOffchain = 'https://onre-api-prod.ew.r.appspot.com/offers'; - - -async function tvl(api) { - // --- Dynamic offers implementation --- - const offers = (await axios.get(onreOffchain)).data; - console.log(offers); - const lowestPrice = getLowestOfferPrice(offers, ADDRESSES.solana.USDC); - const allTokenAccounts = getOfferTokenAccounts(offers, MINT, programId); - const bossTokenAccount = getAssociatedTokenAddress(MINT, BOSS); - allTokenAccounts.push(bossTokenAccount); - - const bossAndOffers = await sumTokens2({ - tokenAccounts: allTokenAccounts, - }); - const tokenSupply = await getTokenSupplies([MINT]); - const circulatingSupply = +tokenSupply[MINT] - (+bossAndOffers[`solana:${MINT}`]); - api.add(ADDRESSES.solana.USDC, BigInt(circulatingSupply) * BigInt(lowestPrice) / BigInt(1e9)); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - solana: {tvl}, -} \ No newline at end of file diff --git a/projects/OnRe/offerUtils.js b/projects/OnRe/offerUtils.js deleted file mode 100644 index 715c059b572..00000000000 --- a/projects/OnRe/offerUtils.js +++ /dev/null @@ -1,79 +0,0 @@ -const { BN } = require('@coral-xyz/anchor'); -const { PublicKey } = require('@solana/web3.js'); -const { getAssociatedTokenAddress } = require('../helper/solana'); - -function calculateSellTokenPerBuyTokenNow(offer, now = new Date()) { - const start = new Date(offer.startDate).getTime() / 1000; - const end = new Date(offer.endDate).getTime() / 1000; - const current = BigInt(Math.floor(now.getTime() / 1000)); - if (current < BigInt(start) || current > BigInt(end)) { - throw new Error('Current time is outside offer bounds'); - } - const intervals = BigInt(end - start); - const currentInterval = current - BigInt(start); - const totalChange = offer.sellTokenEndAmount - offer.sellTokenStartAmount; - const changePerInterval = totalChange / intervals; - const currentSellAmount = offer.sellTokenStartAmount + changePerInterval * (currentInterval); - return currentSellAmount * BigInt(1e9) / offer.buyToken1Amount; -} - -function calculateBuyTokenPerSellTokenNow(offer, now = new Date()) { - const start = new Date(offer.startDate).getTime() / 1000; - const end = new Date(offer.endDate).getTime() / 1000; - const current = BigInt(Math.floor(now.getTime() / 1000)); - if (current < BigInt(start) || current > BigInt(end)) { - throw new Error('Current time is outside offer bounds'); - } - const intervals = BigInt(end - start); - const currentInterval = current - BigInt(start); - const totalChange = offer.sellTokenEndAmount - offer.sellTokenStartAmount; - const changePerInterval = totalChange / intervals; - const currentSellAmount = offer.sellTokenStartAmount + changePerInterval * (currentInterval + BigInt(1)); - return offer.buyToken1Amount * BigInt(1e9) / currentSellAmount; -} - -function getLowestOfferPrice(offers, usdcAddress) { - if (!Array.isArray(offers) || offers.length === 0) { - // Return 1 with 6 decimals as BigInt - return BigInt(1_000_000); - } - let lowestPrice = null; - for (const offer of offers) { - offer.sellTokenStartAmount = BigInt(offer.sellTokenStartAmount); - offer.sellTokenEndAmount = BigInt(offer.sellTokenEndAmount); - offer.buyToken1Amount = BigInt(offer.buyToken1Amount); - offer.startDate = new Date(offer.startDate); - offer.endDate = new Date(offer.endDate); - let price; - if (offer.sellToken === usdcAddress) { - price = calculateSellTokenPerBuyTokenNow(offer); - } else { - price = calculateBuyTokenPerSellTokenNow(offer); - } - if (lowestPrice === null || price < lowestPrice) { - lowestPrice = price; - } - } - if (lowestPrice === null) { - return BigInt(1_000_000); - } - return lowestPrice; -} - -function getOfferTokenAccounts(offers, mint, programId) { - return offers.map(offer => { - const offerId = new BN(offer.id); - const [offerAuthority] = PublicKey.findProgramAddressSync([ - Buffer.from('offer_authority'), - offerId.toArrayLike(Buffer, 'le', 8) - ], programId); - return getAssociatedTokenAddress(mint, offerAuthority.toBase58()); - }); -} - -module.exports = { - getLowestOfferPrice, - getOfferTokenAccounts, - calculateSellTokenPerBuyTokenNow, - calculateBuyTokenPerSellTokenNow, -}; \ No newline at end of file diff --git a/projects/OneDollarDCAE/index.js b/projects/OneDollarDCAE/index.js deleted file mode 100644 index 2732455a9db..00000000000 --- a/projects/OneDollarDCAE/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ONE_DOLLAR_DCAE_CONTRACT = '0xA87619dEFaa9b63F5D78eA69a4fBAdEa7341347e'; // OneDollarDCAE contract address -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - methodology: 'Counts the USDC and WETH held in the OneDollarDCAE contract.', - start: 305469991, // The actual block number when the contract was deployed - arbitrum: { - tvl: sumTokensExport({ owner: ONE_DOLLAR_DCAE_CONTRACT, tokens: [ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDC_CIRCLE] }), - } -}; diff --git a/projects/OpankeSwap/index.js b/projects/OpankeSwap/index.js deleted file mode 100644 index 5c73708b245..00000000000 --- a/projects/OpankeSwap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - op_bnb: { - tvl: getUniTVL({ - factory: "0x4523A7f5414bAc9BfbDfc6eF0932Bf580C3cf9f1", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/OreSwap/index.js b/projects/OreSwap/index.js deleted file mode 100644 index ddf01264a41..00000000000 --- a/projects/OreSwap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ factory: '0xbA862e0B955c612EEd514E722c84F1E70962457e', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/PBG/index.js b/projects/PBG/index.js deleted file mode 100644 index c2d3662dc74..00000000000 --- a/projects/PBG/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); - -const NON_CUSTODIAL_VAULT_ADDRESS = 'addr1wypmdhdv6cxvr67ea4qyr5xznrzvday2kc0qflddfkg4e7scahru0' -const CONTRACT_ADDRESSES = [NON_CUSTODIAL_VAULT_ADDRESS] - -async function tvl() { - const assetsLocked = await sumTokens2({ - owners: CONTRACT_ADDRESSES - }) - return assetsLocked -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - } -}; diff --git a/projects/PRINT3R/index.js b/projects/PRINT3R/index.js deleted file mode 100644 index 75d488ab4b3..00000000000 --- a/projects/PRINT3R/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); - -// Base -const baseVault = "0x102B73Ca761F5DFB59918f62604b54aeB2fB0b3E"; -const modeVault = "0x3901B2e6d966dA5772A634a632bccCc83DC5Cf4C"; - -module.exports = { - base: { - tvl: gmxExports({ vault: baseVault }), - }, - mode: { - tvl: gmxExports({ vault: modeVault }), - }, -}; diff --git a/projects/Paraluni/index.js b/projects/Paraluni/index.js deleted file mode 100644 index 62044b15127..00000000000 --- a/projects/Paraluni/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const paraChef = "0x77341bF31472E9c896f36F4a448fdf573A0D9B60"; -const prehackChef = '0x633fa755a83b015cccdc451f82c57ea0bd32b4b4' - -module.exports = { - bsc: { - tvl: sumTokensExport({ - owner: paraChef, - tokens: [ - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.ETH, - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.BUSD, - '0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd', - '0x965f527d9159dce6288a2219db51fc6eef120dd1', - '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', - ] - }), - }, - // hallmarks: [ - // ['2022-03-13', 'Masterchef was hacked'], - // ], -}; diff --git a/projects/PattieSwap/index.js b/projects/PattieSwap/index.js deleted file mode 100644 index 118acef1dd3..00000000000 --- a/projects/PattieSwap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { tvl: getUniTVL({ factory: '0x71f6a913b317d2BF0Bf51Fd48d90e4cC6e62C4Dd', useDefaultCoreAssets: true, }), }, -} diff --git a/projects/PinSwap/index.js b/projects/PinSwap/index.js deleted file mode 100644 index 10fc1049a5f..00000000000 --- a/projects/PinSwap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - iotex: { - tvl: getUniTVL({ - factory: "0x0A753dD1AFDE272a2d4bf55dF616568744201577", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/PlsPrint/index.js b/projects/PlsPrint/index.js deleted file mode 100644 index f703f28ade4..00000000000 --- a/projects/PlsPrint/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0x750684313510d680D172FD5734e49De3cE91925D"; - -async function tvl(time, ethBlock, { bsc: block }) { - return sumTokens2({ - tokens: [nullAddress], - owner: contract, - block, - chain: "pulse", - }); -} - -module.exports = { - pulse: { - tvl, - }, -}; diff --git a/projects/PoorExchange/index.js b/projects/PoorExchange/index.js deleted file mode 100644 index e9140ed1480..00000000000 --- a/projects/PoorExchange/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('arbitrum', '0x9fA0988D9e4b6362e0aaA02D1A09196a78c177e1') diff --git a/projects/PowSea/index.js b/projects/PowSea/index.js deleted file mode 100644 index 461fb2f69b8..00000000000 --- a/projects/PowSea/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x1Ee0fe7f80BeA6353b137B2E7DCA9e26F3c6F442', - }) - } -}; \ No newline at end of file diff --git a/projects/Produs/index.js b/projects/Produs/index.js deleted file mode 100644 index ab90dd59a9b..00000000000 --- a/projects/Produs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0x8ae5527706446943cBA8589313EC217a4a7288a4', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/PulseGun-farm/index.js b/projects/PulseGun-farm/index.js deleted file mode 100644 index 4b569352e8f..00000000000 --- a/projects/PulseGun-farm/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "pulse", - masterchef: "0x1b9DD75c79Ef7308bC9aD449A9171fC5406403D8", - nativeTokens: ["0xa39e7837B0c283e7ce07cfA7ca3DeEe58fbcbCd8"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); \ No newline at end of file diff --git a/projects/PulseGun/index.js b/projects/PulseGun/index.js deleted file mode 100644 index 2ba3883b6eb..00000000000 --- a/projects/PulseGun/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('pulse', '0x5c92d17f52987DED8D2c0Fa0d5fbfcD68A09B074') \ No newline at end of file diff --git a/projects/PyreSwap/index.js b/projects/PyreSwap/index.js deleted file mode 100644 index 3fb46e898ba..00000000000 --- a/projects/PyreSwap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - misrepresentedTokens: true, -}; - -['fantom', 'bsc', 'avax'].forEach(chain => { - module.exports[chain] = { - tvl: getUniTVL({ factory: '0x045d720873f0260e23da812501a7c5930e510aa4', useDefaultCoreAssets: true, }) - } -}) \ No newline at end of file diff --git a/projects/RandomReward/index.js b/projects/RandomReward/index.js deleted file mode 100644 index 1002d865038..00000000000 --- a/projects/RandomReward/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const RR_ETHEREUM = '0x5ec1e43163b303b13fea20a892cba7e5568d8a8f'; - -module.exports = { - methodology: `Total ETH held in the Random Reward contract, available for distribution.`, - ethereum: { tvl: sumTokensExport({ owner: RR_ETHEREUM, tokens: [nullAddress]}), }, - }; \ No newline at end of file diff --git a/projects/RavelinFinance/index.js b/projects/RavelinFinance/index.js deleted file mode 100644 index 3df3d674c2e..00000000000 --- a/projects/RavelinFinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { tombTvl } = require("../helper/tomb"); - -const ravTokenAddress = "0x9B7c74Aa737FE278795fAB2Ad62dEFDbBAedFBCA"; -const rshareTokenAddress = "0xD81E377E9cd5093CE752366758207Fc61317fC70"; -const rshareRewardPoolAddress = "0xa85B4e44A28B5F10b3d5751A68e03E44B53b7e89"; -const boardroomAddress = "0x618C166262282DcB6Cdc1bFAB3808e2fa4ADFEc2"; -const treasuryAddress = "0x351bDAC12449974e98C9bd2FBa572EdE21C1b7C4"; - -const mADALPs = [ - "0xd65005ef5964b035B3a2a1E79Ddb4522196532DE", // ravmADALpAddress - "0x73bc306Aa2D393ff5aEb49148b7B2C9a8E5d39c8", //rsharemADALpAddress -]; - -module.exports = { - ...tombTvl(ravTokenAddress, rshareTokenAddress, rshareRewardPoolAddress, boardroomAddress, mADALPs, "milkomeda", undefined, false, mADALPs[1]) -} diff --git a/projects/RealProtocol/index.js b/projects/RealProtocol/index.js deleted file mode 100644 index 9e09bbcc23c..00000000000 --- a/projects/RealProtocol/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sdk = require("@defillama/sdk"); - -// TroveManager holds total system collateral (deposited ETH) -const TROVE_MANAGER_ADDRESS = "0x25d27cbdfaFb1B7314AC5e409a1F24112e376829"; - -async function tvl(_, _b, {ethpow: block}) { - const troveEthTvl = ( - await sdk.api.abi.call({ - target: TROVE_MANAGER_ADDRESS, - chain: 'ethpow', - abi: "uint256:getEntireSystemColl", - block, - }) - ).output; - - return { - 'coingecko:ethereum-pow-iou': troveEthTvl/1e18 , - }; -} - -module.exports = { - ethpow: { - tvl, - } -}; diff --git a/projects/Revoluzion/index.js b/projects/Revoluzion/index.js deleted file mode 100644 index 19b3dd2365f..00000000000 --- a/projects/Revoluzion/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - bsc: { - tvl: () => 0, - } -} diff --git a/projects/Ringswap/index.js b/projects/Ringswap/index.js deleted file mode 100644 index 62f4f3beda7..00000000000 --- a/projects/Ringswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "sonic", - masterchef: "0x51cbd201913dEC2C9714b340fDCf6530399bb89a", - nativeTokens: ["0x4931CE8f4130a723cC6fF8A0B23B7F33550aB3a4"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); diff --git a/projects/SMARDEX-P2P-Lending/index.js b/projects/SMARDEX-P2P-Lending/index.js deleted file mode 100644 index f579a17ef52..00000000000 --- a/projects/SMARDEX-P2P-Lending/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { getEnv } = require("../helper/env"); -const { post } = require('../helper/http') - -const blacklistedTokenSet = new Set([ - '0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef', // project's own governance token - '0xfdc66a08b0d0dc44c17bbd471b88f49f50cdd20f', // project's own governance token -].map(t => t.toLowerCase())); - -const config = { - ethereum: { graphId: 'ethereum' }, - arbitrum: { graphId: 'arbitrum' }, - bsc: { graphId: 'bsc' }, - base: { graphId: 'base' }, - polygon: { graphId: 'polygon' }, -} - -Object.keys(config).forEach(chain => { - - async function getData() { - const { graphId, } = config[chain] - const subgraphUrl = `https://subgraph.smardex.io/${graphId}/spro` - const result = await post(subgraphUrl, { query: tokenMetricsQuery, }, { - headers: { - origin: "https://subgraph.smardex.io", - referer: "https://subgraph.smardex.io", - "x-api-key": getEnv('SMARDEX_SUBGRAPH_API_KEY'), - }, - }) - - return result.data.tokenMetrics_collection; - } - - module.exports[chain] = { - tvl: async (api) => { - const data = await getData() - data.forEach((token) => { - if (blacklistedTokenSet.has(token.id.toLowerCase())) return; - api.add(token.id, token.totalCollateralAmount); - }) - api.getBalancesV2().removeNegativeBalances() - }, - borrowed: async (api) => { - const data = await getData() - data.forEach((token) => { - api.add(token.id, token.totalBorrowedAmount); - }) - }, - } -}) - - -const tokenMetricsQuery = `{ - tokenMetrics_collection { - id - totalCollateralAmount - totalBorrowedAmount - } -}`; diff --git a/projects/SMARDEX-USDN/index.js b/projects/SMARDEX-USDN/index.js deleted file mode 100644 index 8e7db12bc48..00000000000 --- a/projects/SMARDEX-USDN/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const USDN_PROTOCOL_ADDRESS = "0x656cB8C6d154Aad29d8771384089be5B5141f01a"; -const WSTETH_TOKEN_ADDRESS = ADDRESSES.ethereum.WSTETH; -const REBALANCER_ADDRESS = "0xaebcc85a5594e687f6b302405e6e92d616826e03"; - -async function fetchUSDNData(api) { - - const balanceVault = await api.call({ target: USDN_PROTOCOL_ADDRESS, abi: "uint256:getBalanceVault", }); - const balanceLong = await api.call({ target: USDN_PROTOCOL_ADDRESS, abi: "uint256:getBalanceLong", }); - const rebalancerCurrentStateData = await api.call({ - target: REBALANCER_ADDRESS, - abi: "function getCurrentStateData() view returns (uint128 pendingAssets_, uint256 maxLeverage_, (int24 tick, uint256 tickVersion, uint256 index) currentPosId_)", - }); - - return { - getBalanceVault: balanceVault, - getBalanceLong: balanceLong, - rebalancerPendingAssets: rebalancerCurrentStateData.pendingAssets_, - }; -} - -const getEthereumTVL = async (api, block, chainBlocks) => { - const usdnData = await fetchUSDNData(api); - - api.add(WSTETH_TOKEN_ADDRESS, Object.values(usdnData)) - return api.getBalances(); -}; - -module.exports["ethereum"] = { - timetravel: true, - tvl: getEthereumTVL -}; diff --git a/projects/SRWAio/index.js b/projects/SRWAio/index.js deleted file mode 100644 index a1ed193b07c..00000000000 --- a/projects/SRWAio/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { queryAddresses, sumTokens } = require('../helper/chain/radixdlt'); - -const componentAddress = 'component_rdx1cps7jyr7vqrtm2uxj8d77a9fyjkv804nhqzvfn2u7m58tg3wdk2qky' - -const resources = [ - { - address: ADDRESSES.radixdlt.XRD, - }, - { - address: 'resource_rdx1t4upr78guuapv5ept7d7ptekk9mqhy605zgms33mcszen8l9fac8vf', - } -] - -async function tvl(api) { - return sumTokens({ api, owners: [componentAddress] }); -} - -async function borrowed(api) { - const componentData = await queryAddresses({ addresses: [componentAddress] }); - resources.forEach((resource) => { - const matchingEntry = componentData[0].details.state.fields[12]?.entries.find((entry) => entry.key.value === resource.address); - api.add(matchingEntry.key.value, Number(matchingEntry.value.value)); - }); -} - -module.exports = { - radixdlt: { tvl, borrowed }, - timetravel: false, -}; \ No newline at end of file diff --git a/projects/Scale/index.js b/projects/Scale/index.js deleted file mode 100644 index 0fd6b471cf9..00000000000 --- a/projects/Scale/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'base': '0xEd8db60aCc29e14bC867a497D94ca6e3CeB5eC04' -}, { hasStablePools: true, staking: { base: ['0x28c9c71c776a1203000b56c0cca48bef1cd51c53', '0x54016a4848a38f257b6e96331f7404073fd9c32c'] } }) diff --git a/projects/SecuredFinance/index.js b/projects/SecuredFinance/index.js deleted file mode 100644 index d8b7edaf73e..00000000000 --- a/projects/SecuredFinance/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const config = { - ethereum: {}, - arbitrum: {}, - avax: {}, - polygon_zkevm: { - tokenVault: '0x0896AC8B9e2DC3545392ff65061E5a8a3eD68824', - currencyController: '0x9E1254292195F241FA2DF1aA51af23796627A74B', - }, - filecoin: {} -}; - -Object.keys(config).forEach(chain => { - const { - tokenVault = '0xB74749b2213916b1dA3b869E41c7c57f1db69393', - currencyController = '0x7dca6b6BF30cd28ADe83e86e21e82e3F852bF2DC', - } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const bytes = await api.call({ - abi: 'function getCurrencies() view returns (bytes32[])', - target: currencyController, - }); - const tokens = await api.multiCall({ - abi: 'function getTokenAddress(bytes32) view returns (address)', - calls: bytes, - target: tokenVault, - }); - return api.sumTokens({ owner: tokenVault, tokens }); - }, - }; -}); diff --git a/projects/SharpeLabs/index.js b/projects/SharpeLabs/index.js deleted file mode 100644 index 696bc148859..00000000000 --- a/projects/SharpeLabs/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const StEthVaultContract = '0xfc85db895e070017ab9c84cb65b911d56b729ee9'; - -// function to return TVL of magnum -async function tvl(api) { - const balances = {}; - - // get balance of eth - const EthBalance = await api.call({ - abi: 'function getVaultsActualBalance() public view returns(uint amount)', - target: StEthVaultContract, - }); - - return { - ['ethereum:' + ADDRESSES.null]: EthBalance - }; -} - -module.exports = { - methodology: 'counts the Eth amount of by substracting Supplied stEth amount of vault by borrowed Weth of vault', - ethereum: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/Shibafantom/index.js b/projects/Shibafantom/index.js deleted file mode 100644 index 0d0995c824c..00000000000 --- a/projects/Shibafantom/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0xeAcC845E4db0aB59A326513347a37ed4E999aBD8' -}) \ No newline at end of file diff --git a/projects/SmarDex/index.js b/projects/SmarDex/index.js deleted file mode 100644 index 491aec5cb6e..00000000000 --- a/projects/SmarDex/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require("../helper/unknownTokens"); -const { stakings } = require("../helper/staking"); - -const config = { - bsc: "0xA8EF6FEa013034E62E2C4A9Ec1CDb059fE23Af33", - polygon: "0x9A1e1681f6D59Ca051776410465AfAda6384398f", - arbitrum: "0x41A00e3FbE7F479A99bA6822704d9c5dEB611F22", - base: "0xdd4536dD9636564D891c919416880a3e250f975A", -}; - -const ethereumFactory = "0xB878DC600550367e14220d4916Ff678fB284214F"; - -const getEthereumTVL = async (api, block, chainBlocks) => { - const uniTVL = await getUniTVL({ factory: ethereumFactory, fetchBalances: true, useDefaultCoreAssets: false })(api, block, chainBlocks); - - api.addBalances(uniTVL) - return api.getBalances(); -}; - -Object.keys(config).forEach((chain) => { - const factory = config[chain]; - module.exports[chain] = { - tvl: getUniTVL({ factory, fetchBalances: true, useDefaultCoreAssets: false }), - }; -}); - -module.exports["ethereum"] = { - timetravel: false, - tvl: getEthereumTVL, - staking: stakings( - ["0xB940D63c2deD1184BbdE059AcC7fEE93654F02bf", "0x80497049b005Fd236591c3CD431DBD6E06eB1A31"], - "0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef" - ), -}; diff --git a/projects/Solidpulse/index.js b/projects/Solidpulse/index.js deleted file mode 100644 index 71e2b63374f..00000000000 --- a/projects/Solidpulse/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - pulse:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0xEb60163cb688e4d605407025f761AA66B293d82D', - }), - }, -} diff --git a/projects/Solily/index.js b/projects/Solily/index.js deleted file mode 100644 index e5a764f2765..00000000000 --- a/projects/Solily/index.js +++ /dev/null @@ -1,13 +0,0 @@ - - -module.exports = { - hallmarks: [ - [1655251200, "Rug Pull"] - ], - timetravel: false, - deadFrom: 1655251200, - solana: { - tvl: () => 0, - }, - methodology: 'website unreachable, twitter deleted', -} diff --git a/projects/SquadSwap-Dynamo/index.js b/projects/SquadSwap-Dynamo/index.js deleted file mode 100644 index c5e3f229b39..00000000000 --- a/projects/SquadSwap-Dynamo/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') - - -const config = { - bsc: { factory: '0x918Adf1f2C03b244823Cd712E010B6e3CD653DbA', masterchefs: ['0x6316f6a2029532E7F088459987F50Ed4B122b82a', '0x87dd4bC5dbDdcB7734A5FE1e01359dCDa180200f'], token: '0x2d2567dec25c9795117228adc7fd58116d2e310c' } -} - - -module.exports = { - methodology: "TVL is calculated from total liquidity of SquadSwap's active pools", - misrepresentedTokens: true -} - -Object.keys(config).forEach(chain => { - const { factory, masterchefs, token, } = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), - staking: token && stakings(masterchefs, token) - } -}) \ No newline at end of file diff --git a/projects/SquadSwap-WOW/index.js b/projects/SquadSwap-WOW/index.js deleted file mode 100644 index 61c65318de9..00000000000 --- a/projects/SquadSwap-WOW/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - bsc: { factory: '0x10d8612D9D8269e322AB551C18a307cB4D6BC07B', fromBlock: 46190543 } -}) diff --git a/projects/SquadSwap-v3/index.js b/projects/SquadSwap-v3/index.js deleted file mode 100644 index 56b4d2953b7..00000000000 --- a/projects/SquadSwap-v3/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - bsc: { factory: '0x009c4ef7C0e0Dd6bd1ea28417c01Ea16341367c3', fromBlock: 34184408 }, - base: { factory: '0xa1288b64F2378276d0Cc56F08397F70BecF7c0EA', fromBlock: 19730499 }, - blast: { factory: '0x6Ea64BDCa26F69fdeF36C1137A0eAe5Bf434e8fd', fromBlock: 5644236 }, - arbitrum: { factory: '0x0558921f7C0f32274BB957D5e8BF873CE1c0c671', fromBlock: 253170358 }, - polygon: { factory: '0x633Faf3DAc3677b51ea7A53a81b79AEe944714dc', fromBlock: 61864971 }, - optimism: { factory: '0xa1288b64F2378276d0Cc56F08397F70BecF7c0EA', fromBlock: 125326692 }, -}) diff --git a/projects/SquadSwap/index.js b/projects/SquadSwap/index.js deleted file mode 100644 index eff4b963aab..00000000000 --- a/projects/SquadSwap/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') - - -const config = { - bsc: { factory: '0x1D9F43a6195054313ac1aE423B1f810f593b6ac1', masterchefs: ['0x2e881a10f682a3b2CBaaF8fc5A9a94E98D4879B4', '0x44eC8143EB368cAbB00c4EfF085AF276260202B5'], token: '0x2d2567dec25c9795117228adc7fd58116d2e310c' }, - base: { factory: '0xba34aA640b8Be02A439221BCbea1f48c1035EEF9', masterchefs: ['0xB6171582C75421A740dcC15E4D873a34Cb2Ebb48', '0x89c0619E7A798309193438b3Cff11f1F31266711'], token: '0x08Ccb86a31270Fd97D927A4e17934C6262A68b7E' }, - blast: { factory: '0x4B599f3425D54AfBf94bFD41EA9931fF92AD6551', masterchefs: ['0xdeE10310E729C36a560c72c0E8E3be0e46673063', '0xda3840837Df961A710C889e0D23295dF82cCfF8b'], token: '0x08Ccb86a31270Fd97D927A4e17934C6262A68b7E' }, - arbitrum: { factory: '0xba34aA640b8Be02A439221BCbea1f48c1035EEF9', masterchefs: ['0x6dAafc12F65801afb2F0B0212a8229F224Acf576', '0xA9E236aa88D3D9d5D4499D1b6ffA7ec170dA5DCA'], token: '0x08Ccb86a31270Fd97D927A4e17934C6262A68b7E' }, - polygon: { factory: '0xEE8F37D490CB7Ea1dae7d080c5738894731299f0', masterchefs: ['0x1D9F43a6195054313ac1aE423B1f810f593b6ac1', '0xb4286E807A8107cC3344d3094468DC44D73b49c2'], token: '0x5eBB1ff6dc0759f7A6253d0568A610650Dd0d050' }, - optimism: { factory: '0xba34aA640b8Be02A439221BCbea1f48c1035EEF9', masterchefs: ['0xB6171582C75421A740dcC15E4D873a34Cb2Ebb48', '0x89c0619E7A798309193438b3Cff11f1F31266711'], token: '0x08Ccb86a31270Fd97D927A4e17934C6262A68b7E' }, - -} - - -module.exports = { - methodology: "TVL is calculated from total liquidity of SquadSwap's active pools", - misrepresentedTokens: true -} - -Object.keys(config).forEach(chain => { - const { factory, masterchefs, token, } = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), - staking: token && stakings(masterchefs, token) - } -}) \ No newline at end of file diff --git a/projects/StellarisFinance/index.js b/projects/StellarisFinance/index.js deleted file mode 100644 index 30bbd517cb4..00000000000 --- a/projects/StellarisFinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { yieldHelper, } = require("../helper/yieldHelper") -const { staking } = require('../helper/staking'); -const vault = '0x1334843D688E54B37b7fC3a31F24d836ca31916B' -const STE = '0x6767f2f2D8C0A63A7a1B3Ad2Bb890FDc125Ccab7' -const abis ={ - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256, uint256, uint256, uint256, uint256, uint256, uint256 amount, uint256, address strat)', - getReservesABI: 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)', -} -module.exports = yieldHelper({ - project: 'stellaris-finance', - chain: 'scroll', - masterchef: vault, - nativeToken: STE, - abis, -}) -module.exports.scroll.staking = staking(["0x2AfbfC108f8da937e70601B0eD6710AE22f015e6", "0x2824408DeFaEC46548E8296Cf52a652E676f4af9"], STE) - diff --git a/projects/StrikeX.js b/projects/StrikeX.js deleted file mode 100644 index 89369372aaa..00000000000 --- a/projects/StrikeX.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterChefExports } = require("./helper/masterchef") - -const masterchef = "0x5867Cd4F7e105878AfbC903505c207eb7b130A50"; -const token = "0xd6fdde76b8c1c45b33790cc8751d5b88984c44ec" - -module.exports = masterChefExports(masterchef, "bsc", token) - diff --git a/projects/SubstanceX/index.js b/projects/SubstanceX/index.js deleted file mode 100644 index c9df8308421..00000000000 --- a/projects/SubstanceX/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const USDC = ADDRESSES.arbitrum.USDC_CIRCLE -const USDX = '0xEE43369197F78CFDF0D8fc48D296964C50AC7B57' -const liquidityPool = '0x20F6c269ACe844120de7AB84EeaD8359688670Bc' -const USDT = ADDRESSES.arbitrum.USDT -const USDCe = ADDRESSES.arbitrum.USDC -const DAI = ADDRESSES.optimism.DAI - -// zetaChain -const USDC_zeta = ADDRESSES.zeta.USDC -const USDT_zeta = ADDRESSES.zeta.USDT_1 -const dai_zeta = ADDRESSES.zeta.USDC_1 -const usdce_zeta = ADDRESSES.zeta.USDT -const USDX_zeta = '0x64663c58D42BA8b5Bb79aD924621e5742e2232D8' - -module.exports = { - arbitrum: { tvl: sumTokensExport({ owner: USDX, tokens: [USDC, USDT, USDCe, DAI], }), }, - zeta: { tvl: sumTokensExport({ owner: USDX_zeta, tokens: [USDC_zeta, USDT_zeta, dai_zeta, usdce_zeta], }),}, - methodology: `The TVL of SubstanceX is equal to the total value of underlying assets locked in the USDX contract.`, -}; diff --git a/projects/SuperHedge/index.js b/projects/SuperHedge/index.js deleted file mode 100644 index 65bde340485..00000000000 --- a/projects/SuperHedge/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -// Vault configs -const vaults = [ - // ETH Bullish Call-Spread USDe - { - currency: ADDRESSES.ethereum.USDe, - pt: '0xBC6736d346a5eBC0dEbc997397912CD9b8FAe10a', - vault: '0xD0407E1c58Ce32a7fE672f331Af120E0C30aD45b' - }, - // BTC Bullish Call-Spread lvlUSD - { - currency: '0x7c1156e515aa1a2e851674120074968c905aaf37', - pt: '0x207F7205fd6c4b602Fa792C8b2B60e6006D4a0b8', - vault: '0x93c318E595F58E4Ffc8779E35E574832D8d9a5Dc' - }, - // ETH Bearish Put-Spread USDe - { - currency: ADDRESSES.ethereum.USDe, - pt: '0xBC6736d346a5eBC0dEbc997397912CD9b8FAe10a', - vault: '0x9AbbA395c4db06467B5C19A69F7e320EE962f2CB' - }, - // BTC Bearish Put lvlUSD - { - currency: '0x7c1156e515aa1a2e851674120074968c905aaf37', - pt: '0x207F7205fd6c4b602Fa792C8b2B60e6006D4a0b8', - vault: '0x1fEcD2E54648476bD6AeA2f5B8BBD5155166816e' - } -] - -async function tvl(api) { - // Process all vaults in a loop - for (const { currency, pt, vault } of vaults) { - // Get currency balance - const currencyBalance = await api.call({ - abi: 'erc20:balanceOf', - target: currency, - params: [vault], - }); - api.add(currency, currencyBalance); - - // Get PT token balance - const ptBalance = await api.call({ - abi: 'erc20:balanceOf', - target: pt, - params: [vault], - }); - api.add(pt, ptBalance); - } -} - -module.exports = { - methodology: 'Counts the number of stablecoins and PT tokens in the SuperHedge Vault contracts.', - ethereum: { - tvl, - } -}; diff --git a/projects/Swap-io/index.js b/projects/Swap-io/index.js deleted file mode 100644 index c54c8706b6f..00000000000 --- a/projects/Swap-io/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getConnection, sumTokens2, decodeAccount } = require('../helper/solana') -const { PublicKey } = require('@solana/web3.js') - -const CLMM_PROGRAM_ID = 'SWPammPnp7L9qFgV436u3CSPmcxU6ZQm6ttawzDTRuw' - -async function tvl() { - const connection = getConnection() - const accounts = await connection.getProgramAccounts( - new PublicKey(CLMM_PROGRAM_ID), - { - filters: [{ - dataSize: 1544 - }] - } - ) - - const data = accounts.map(i => decodeAccount('raydiumCLMM', i.account)) - - const tokenAccounts = data - .map(i => [i.vaultA, i.vaultB]) - .flat() - .map(i => i.toString()) - - return sumTokens2({ tokenAccounts }) -} - -module.exports = { - timetravel: false, - methodology: "Counts all tokens locked in swap.io CLMM pool vaults", - solana: { - tvl - } -} diff --git a/projects/SwapMode/index.js b/projects/SwapMode/index.js deleted file mode 100644 index 542ab7986c2..00000000000 --- a/projects/SwapMode/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - mode: { - tvl: getUniTVL({ factory: "0xfb926356BAf861c93C3557D7327Dbe8734A71891", useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/SwapX-algebra/index.js b/projects/SwapX-algebra/index.js deleted file mode 100644 index 4cc6ff5bd00..00000000000 --- a/projects/SwapX-algebra/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -const SWAPX_ALGEBRA_FACTORY = "0x8121a3F8c4176E9765deEa0B95FA2BDfD3016794" - -module.exports = uniV3Export({ - sonic: { - factory: SWAPX_ALGEBRA_FACTORY, - fromBlock: 1440914, - isAlgebra: true - } -}); \ No newline at end of file diff --git a/projects/SwapX-v2/index.js b/projects/SwapX-v2/index.js deleted file mode 100644 index 80f2f1929f4..00000000000 --- a/projects/SwapX-v2/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'sonic': '0x05c1be79d3aC21Cc4B727eeD58C9B2fF757F5663' -}, { hasStablePools: true, }) - diff --git a/projects/SweetSwap/index.js b/projects/SweetSwap/index.js deleted file mode 100644 index db42172b92b..00000000000 --- a/projects/SweetSwap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - dogechain: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xf1036CA4762cD601BDc630cd32942f90d19ED970', - }), - }, -} diff --git a/projects/SypherFinance/index.js b/projects/SypherFinance/index.js deleted file mode 100644 index 90de07285a9..00000000000 --- a/projects/SypherFinance/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require('../helper/staking') - -const main_contract = '0xa77BaD7300d954BF9fad8d583ECd3E85a62b8CC0' - -const token = '0x5dd2750f18Da3e5933a20340B0fa10cef56A8B07' -const sToken = '0x5Fa631D20B685Aff98aCF4EaAACe28cDbd86f3D3' - -module.exports = { - base: { - tvl: async (api) => { - const pools = await api.call({ target: main_contract, abi: "function getAllPools() public view returns(address[] memory list)" }) - const tokens = await api.multiCall({ abi: "function getPoolTokens(address _pool) public view returns(address[] memory list)", target: main_contract, calls: pools }) - return sumTokens2({ api, ownerTokens: tokens.map((v, i) => [v, pools[i]]), }) - }, - staking: staking(sToken, token) - } -} diff --git a/projects/T-RIZE/abi.json b/projects/T-RIZE/abi.json deleted file mode 100644 index 5af8fdd944a..00000000000 --- a/projects/T-RIZE/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getOracle": "function getOracle(address token) external view returns (address)", - "latestAnswer": "function latestAnswer() external view override returns (int256)" -} diff --git a/projects/T-RIZE/index.js b/projects/T-RIZE/index.js deleted file mode 100644 index 6ac41dbf713..00000000000 --- a/projects/T-RIZE/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const abi = { - "getOracle": "function getOracle(address token) external view returns (address)", - "latestAnswer": "function latestAnswer() external view override returns (int256)" -} - -// TODO: instead of hardcoding the contract addresses, pull the list from the events -// of the factory contract that deploys them. Like this we won't need a new PR for each -// new project tokenized -const tokens = [ - "0x35b5129e86EBE5Fd00b7DbE99aa202BE5CF5FA04", // Champfleury Contract ( vision87.com ) -].map(i => i.toLowerCase()) - - -// `api` is an injected `sdk.ChainApi` object with which you can interact with -// a given chain through `call/multiCall/batchCall` method based on your need, -// also stores tvl balances -async function tvl(api) { - - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens }) - - supplies.forEach((supply, i) => { - api.add(tokens[i], supply) - }); - - return api.getBalances() -} - -const chains = ["base"] - -chains.forEach(chain => { - module.exports[chain] = { - tvl - } -}) - diff --git a/projects/T2T2/index.js b/projects/T2T2/index.js deleted file mode 100644 index ba6bf9531af..00000000000 --- a/projects/T2T2/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { nullAddress, sumTokensExport } = require("../helper/unwrapLPs"); - -const config = { - ethereum: '0xA875755b23a38E06B669219AFf9bb79845F43EFd', - base: '0xE173A25C522385BB117b3044C79F534cD0a895EC' -} - -const T2_T2 = '0x390e61f798267fe7aa9bbe61be8bb1776250d44c' - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: config.ethereum, fetchCoValentTokens: true, blacklistedTokens: [T2_T2] }) - }, - base: { - tvl: sumTokensExport({ owner: config.base, tokens: [nullAddress] }) - } -} diff --git a/projects/TAKOSWAP/index.js b/projects/TAKOSWAP/index.js deleted file mode 100644 index 8c26790172a..00000000000 --- a/projects/TAKOSWAP/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ogpu: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xEC03D5dc44143257F72B5a8e900bF2aAa0E702B0', - }) - } -} \ No newline at end of file diff --git a/projects/Thick/index.js b/projects/Thick/index.js deleted file mode 100644 index 837a0abe44f..00000000000 --- a/projects/Thick/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - fantom: { factory: '0xE6dA85feb3B4E0d6AEd95c41a125fba859bB9d24', fromBlock: 70309749 }, - arbitrum : { factory: '0xE6dA85feb3B4E0d6AEd95c41a125fba859bB9d24', fromBlock: 148243463 }, - base : { factory: '0xE6dA85feb3B4E0d6AEd95c41a125fba859bB9d24', fromBlock: 6314325 }, - sonic: { factory: '0xE6dA85feb3B4E0d6AEd95c41a125fba859bB9d24', fromBlock: 444927 }, -}) diff --git a/projects/TokenPocket/index.js b/projects/TokenPocket/index.js deleted file mode 100644 index bdae5679c49..00000000000 --- a/projects/TokenPocket/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { get } = require('../helper/http') -async function tvl() { - const tvlData = await get("https://preserver.mytokenpocket.vip/v1/pledge/global") - return { ethereum: tvlData.data.data.staking_total} -} - -module.exports = { - ethereum: { - tvl, - }, -}; diff --git a/projects/TonStable/index.js b/projects/TonStable/index.js deleted file mode 100644 index 6f0a12dad51..00000000000 --- a/projects/TonStable/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const tonStableAddr = "EQC2Bt4vwcSgCwABlOfgl75GbGuC0GpRU2GsZKqqMHu-T0gk"; - -module.exports = { - methodology: "TonStable's TVL includes all deposited supported assets", - ton: { - tvl: sumTokensExport({ owner: tonStableAddr, tokens: [ADDRESSES.null] }), - }, -}; diff --git a/projects/TopCut-Finance/index.js b/projects/TopCut-Finance/index.js deleted file mode 100644 index cc03e5f2903..00000000000 --- a/projects/TopCut-Finance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const TOPCUT_VAULT = "0x3cfc3CBA1B4aAF969057F590D23efe46848F4270"; -const ETH = ADDRESSES.null - - -async function tvl(api) { - return sumTokens2({ - owner: TOPCUT_VAULT, - tokens: [ETH], - api - }) -} - -module.exports = { - methodology: - "TVL is calculated based on the amount of ETH in the TopCut Vault.", - arbitrum: { tvl }, -}; diff --git a/projects/Torr-Finance/index.js b/projects/Torr-Finance/index.js deleted file mode 100644 index 82b8b08dd9f..00000000000 --- a/projects/Torr-Finance/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); -const chain = "bittorrent"; -const factory = "0xea34610f4373c8d75ed1810A6096197F297F2786"; // v2 factory address - -module.exports = uniTvlExport(chain, factory); diff --git a/projects/TowerDEX/factoryTvl.js b/projects/TowerDEX/factoryTvl.js deleted file mode 100644 index 51e0b04807c..00000000000 --- a/projects/TowerDEX/factoryTvl.js +++ /dev/null @@ -1,76 +0,0 @@ -const {queryContract, queryContractWithRetries} = require('../helper/chain/cosmos') -const {PromisePool} = require('@supercharge/promise-pool') -const {transformDexBalances} = require('../helper/portedTokens') - -function extractTokenInfo(asset) { - const {native_token, token, native} = asset.info - for (const tObject of [native_token, token, native]) { - if (!tObject) continue - if (typeof tObject === 'string') return tObject - const token = tObject.denom || tObject.contract_addr - if (token) return token - } -} - -function getAssetInfo(asset) { - return [extractTokenInfo(asset), Number(asset.amount)] -} - -async function getAllPairs(factory, chain, {blacklistedPairs = []} = {}) { - const blacklist = new Set(blacklistedPairs) - let allPairs = [] - let currentPairs; - const limit = 30 - do { - const queryStr = `{"pairs": { "limit": ${limit} ${allPairs.length ? `,"start_after":${JSON.stringify(allPairs[allPairs.length - 1].contract_addr)}` : ""} }}` - currentPairs = (await queryContract({contract: factory, chain, data: queryStr})) - allPairs.push(...currentPairs.filter(pair => !blacklist.has(pair.contract_addr))) - } while (currentPairs.length > 0) - const dtos = [] - const getPairPool = (async (pair) => { - const pairRes = await queryContractWithRetries({contract: pair.contract_addr, chain, data: {pool: {}}}) - const pairDto = {} - pairDto.assets = [] - pairDto.addr = pair.contract_addr - pairRes.assets.forEach((asset, idx) => { - const [addr, balance] = getAssetInfo(asset) - pairDto.assets.push({addr, balance}) - }) - pairDto.pair_type = pair.pair_type - dtos.push(pairDto) - }) - const {errors} = await PromisePool - .withConcurrency(10) - .for(allPairs) - .process(getPairPool) - if ((errors?.length ?? 0) > 50) { - throw new Error(`Too many errors: ${errors.length}/${allPairs.length} on ${chain}`) - } - return dtos -} - -const isNotXYK = (pair) => pair.pair_type && pair.pair_type.concentrated - -function getFactoryTvl(factory, {blacklistedPairs = []} = {}) { - return async (api) => { - const pairs = (await getAllPairs(factory, api.chain, {blacklistedPairs})).filter(pair => (pair.assets[0].balance && pair.assets[1].balance)) - - const otherPairs = pairs.filter(isNotXYK) - const xykPairs = pairs.filter(pair => !isNotXYK(pair)) - otherPairs.forEach(({assets}) => { - api.add(assets[0].addr, assets[0].balance) - api.add(assets[1].addr, assets[1].balance) - }) - const data = xykPairs.map(({assets}) => ({ - token0: assets[0].addr, - token0Bal: assets[0].balance, - token1: assets[1].addr, - token1Bal: assets[1].balance, - })) - return transformDexBalances({api, data}) - } -} - -module.exports = { - getFactoryTvl, -} diff --git a/projects/TowerDEX/index.js b/projects/TowerDEX/index.js deleted file mode 100644 index 9a61009178e..00000000000 --- a/projects/TowerDEX/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getFactoryTvl } = require('./factoryTvl') - -const deadPools = [ - "bbn1xt4ahzz2x8hpkc0tk6ekte9x6crw4w6u0r67cyt3kz9syh24pd7s4m2t0z", - "bbn1ma0g752dl0yujasnfs9yrk6uew7d0a2zrgvg62cfnlfftu2y0egqvustk6", - "bbn1w798gp0zqv3s9hjl3jlnwxtwhykga6rn93p46q2crsdqhaj3y4gsxallqs", - "bbn1xsmqvl8lqr2uwl50aetu0572rss9hrza5kddpfj9ky3jq80fv2tssfrw9q", -] - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the Tower DEX", - babylon: { - tvl: getFactoryTvl("bbn1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrs3tkuvr", { blacklistedPairs: deadPools }), - }, -} \ No newline at end of file diff --git a/projects/TradeOgre/index.js b/projects/TradeOgre/index.js deleted file mode 100644 index 268c93b68ab..00000000000 --- a/projects/TradeOgre/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { cexExports } = require('../helper/cex') - -const config = { - avax: { - owners: [ - '0x4648451b5f87ff8f0f7d622bd40574bb97e25980' - ] - }, - bsc: { - owners: [ - '0x4648451b5f87ff8f0f7d622bd40574bb97e25980' - ] - }, - ethereum: { - owners: [ - '0x4648451b5f87ff8f0f7d622bd40574bb97e25980' - ], - }, - polygon: { - owners: [ - '0x4648451b5f87ff8f0f7d622bd40574bb97e25980' - ] - }, - ripple: { - owners: [ - 'rhsZa1NR9GqA7NtQjDe5HtYWZxPAZ4oGrE' - ] - }, - tron: { - owners: [ - 'TBQc1xRWp2G6iUQTD51Lczrk7zbjTRoGRE' - ] - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'All reserves information can be found on block explorers.' diff --git a/projects/TronNRG/index.js b/projects/TronNRG/index.js deleted file mode 100644 index 37e34cc3c7e..00000000000 --- a/projects/TronNRG/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { - postURL -} = require('../helper/utils'); - -async function getCurrentStake() { - let postdata = { - "contract_address": "413346c747c65b7e53d79737dcf106c82cece27a92", - "owner_address": "417c97da66c8e3c48bbc6ed925fdd8596e50365925", - "function_selector": "readStaked()", - "parameter": "", - "call_value": 0 - }; - let result = await postURL('https://api.trongrid.io/wallet/triggerconstantcontract', postdata); - let trx = parseInt(result.data.constant_result[0], 16) / 10 ** 6; - return trx; -} - -async function tvl() { - return { - "tron": await getCurrentStake() - } -} - -module.exports = { - tron: { - tvl, - }, -} diff --git a/projects/TurtleClub/assets.js b/projects/TurtleClub/assets.js deleted file mode 100644 index a93f8afa6b3..00000000000 --- a/projects/TurtleClub/assets.js +++ /dev/null @@ -1,202 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { defaultTokens } = require('../helper/cex'); - -// Gnosis Safe multisigs -const treasuryMultisigs = [ - '0x5b38d8094e896FF29DB9889516bf053f5Cf59f60', // Outbound payments - '0xB6301976f04E6A58D6E57Ff04144A31D911D3a25', // Inbound payments - '0x58A916AD66584811C939AA844025036e5078E811', // DeFi Farming - '0x3F3Ac8C6e85c8659e0af4f4B6ed50f51A1A8e0B1', // Main Ethereum - '0x184BF40166092A213FA3fEee0ac91dAcd554E2E0', // Old Ethereum - '0xc033B96f8A66787420b780fF2C6af75E89F4464b', // Old Avalanche and Mantle - '0x1feE198A3D28B2419bf0Ab4BBbd6cC8f75368216', // Old Linea - '0x41FC0479A3E67Ac6d26760D1205dC523abee8b94', // Old Mode - '0x0EFeE436D77258217956Ea3fA0E639e306D74992', // Old Base - '0xa00991F9Aa65a54dBDE368385771C5613A024693', // Old Blast -]; - -const tokens = { - ethereum: { - USDC: ADDRESSES.ethereum.USDC, - USDT: ADDRESSES.ethereum.USDT, - ETH: ADDRESSES.null, - DRV: '0x4f3D0b8C2E5A7F1c6B9d4e8a2e5b8c3f3f3f3f3f', - SILO: '0x6f80310CA7F2C654691D1383149Fa1A57d8AB1f8', - IPOR: '0x1e4746dC744503b53b4A082cB3607B169a289090', - FXN: ADDRESSES.ethereum.FXN, - LVVA: '0x6243558a24CC6116aBE751f27E6d7Ede50ABFC76', - USDO: '0x375eA8da180EBb6F5adaA6090FA0aE31346E62bf', - sUSDS: ADDRESSES.ethereum.sUSDS, - rEUL: '0xf3e621395fc714B90dA337AA9108771597b4E696', - EUL: '0xd9Fcd98c322942075A5C3860693e9f4f03AAE07b', - ezREZ: '0x77B1183e730275f6A8024Ce53d54bcC12B368f60', - REZ: '0x3B50805453023a91a8bf641e279401a0b23FA6F9', - USUALX: '0x06B964d96f5dCF7Eae9d7C559B09EDCe244d4B8E', - USD0: ADDRESSES.ethereum.USD0, - ynETH: '0x09db87A538BD693E9d08544577d5cCfAA6373A48', - aEthUSDT: '0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a', - rsWETH: '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0', - SWELL: '0x0a6E7Ba5042B38349e437ec6Db6214AEC7B35676', - TERM: '0xC3d21f79C3120A4fFda7A535f8005a7c297799bF', - GEAR: '0xBa3335588D9403515223F109EdC4eB7269a9Ab5D', - Symbiotic: '0x21DbBA985eEA6ba7F27534a72CCB292eBA1D2c7c', // DC_ETHFI - wstETH: ADDRESSES.ethereum.WSTETH, - WETH: ADDRESSES.ethereum.WETH, - stETH: ADDRESSES.ethereum.STETH, - cbBTC: ADDRESSES.ethereum.cbBTC, - FBTC: ADDRESSES.mantle.FBTC, - tsSwellRswETH: '0xd4c9AA3FFDDc3EeE1d624849872EA3Eae2529972', // TODO not priced properly - aEthUSDC: '0x98c23e9d8f34fefb1b7bd6a91b7ff122f4e16f5c', - eUSDC_2: '0x797DD80692c3b2dAdabCe8e30C07fDE5307D48a9', - gtUSDC: '0xdd0f28e19C1780eb6396170735D45153D261490d', - }, - arbitrum: { - USDC: ADDRESSES.arbitrum.USDC, - USDT: ADDRESSES.arbitrum.USDT, - WETH: ADDRESSES.arbitrum.WETH, - RAM: '0xaaa6c1e32c55a7bfa8066a6fae9b42650f262418', - Silo: '0x0341C0C0ec423328621788d4854119B97f44E391', - SYO: '0x577Fd586c9E6BA7f2E85E025D5824DBE19896656', - WBTC: ADDRESSES.arbitrum.WBTC, - ARB: ADDRESSES.arbitrum.ARB, - 'USD₮0': ADDRESSES.arbitrum.USDT, - }, - avax: { - USDC: ADDRESSES.avax.USDC, - USDt: ADDRESSES.avax.USDt, - WETH_e: ADDRESSES.avax.WETH_e, - BTC_b: ADDRESSES.avax.BTC_b, - WAVAX: ADDRESSES.avax.WAVAX, - PHAR: '0xAAAB9D12A30504559b0C5a9A5977fEE4A6081c6b', - BLUB: '0x0f669808d88B2b0b3D23214DCD2a1cc6A8B1B5cd', - HEFE: '0x18E3605B13F10016901eAC609b9E188CF7c18973', - GoGoPool: '0xA25EaF2906FA1a3a13EdAc9B9657108Af7B703e3', - Benqi: ADDRESSES.avax.SAVAX, - }, - mantle: { - USDC: ADDRESSES.mantle.USDC, - USDT: ADDRESSES.mantle.USDT, - WETH: ADDRESSES.mantle.WETH, - mETH: ADDRESSES.mantle.mETH, - cmETH: ADDRESSES.mantle.cmETH, - WMNT: ADDRESSES.mantle.WMNT, - abcCLEO: '0xCffbE0E73c750731EdB38C14Bc81A39dAc91819d', - CLEO: '0xC1E0C8C30F251A07a894609616580ad2CEb547F2', - }, - linea: { - USDC: ADDRESSES.linea.USDC, - USDT: ADDRESSES.linea.USDT, - ETH: ADDRESSES.null, - WETH: ADDRESSES.linea.WETH, - ZERO: '0x78354f8DcCB269a615A7e0a24f9B0718FDC3C7A7', - oLYNX: '0x63349ba5e1f71252ecd56e8f950d1a518b400b60', - LYNX: '0x1a51b19CE03dbE0Cb44C1528E34a7EDD7771E9Af', - NILE: '0xAAAac83751090C6ea42379626435f805DDF54DC8', - CAKE: '0x0D1E753a25eBda689453309112904807625bEFBe', - WBTC: '0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4', - FOXY: '0x5FBDF89403270a1846F5ae7D113A989F850d1566', - CROAK: '0xaCb54d07cA167934F57F829BeE2cC665e1A5ebEF', - z0weETH: '0x77E305B4D4D3b9DA4e82Cefd564F5b948366A44b', // TODO all ZeroLend not priced properly - z0WETH: '0xB4FFEf15daf4C02787bC5332580b838cE39805f5', - z0ezETH: '0x0684FC172a0B8e6A65cF4684eDb2082272fe9050', - z0rsETH: '0x8d8b70a576113FEEdd7E3810cE61f5E243B01264', - z0USDT: '0x508C39Cd02736535d5cB85f3925218E5e0e8F07A', - }, - mode: { - ION: '0x18470019bF0E94611f15852F7e93cf5D65BC34CA', - MODE: '0xdfc7c877a950e49d2610114102175a06c2e3167a', - ICL: '0x95177295A394f2b9B04545FFf58f4aF0673E839d', - }, - base: { - WETH: ADDRESSES.base.WETH, - USDC: ADDRESSES.base.USDC, - AERO: '0x940181a94A35A4569E4529A3CDfB74e38FD98631', - USDT: ADDRESSES.base.USDT, - SKYA: '0x623cD3a3EdF080057892aaF8D773Bbb7A5C9b6e9', - ETH: ADDRESSES.null, - }, - scroll: { - USDT: ADDRESSES.scroll.USDT, - WETH: ADDRESSES.scroll.WETH, - NURI: '0xAAAE8378809bb8815c08D3C59Eb0c7D1529aD769', - SCR: '0xd29687c813D741E2F938F4aC377128810E217b1b', - }, - swellchain: { - SWELL: ADDRESSES.swellchain.SWELL, - tsSwellETH: '0x7fE118Bee84900fAED30dAb9ecFbeAD633392f05', // TODO not priced properly - }, - blast: { - HYPER: '0xEC73284E4EC9bcea1A7DDDf489eAA324C3F7dd31', - }, - polygon: { - DEFI: '0x18c3eb88c972390120Bb4AbD2F705c48f62E212C', - }, - berachain: { - rEUL: '0x56C44d2F484A61ce92Fa0BCc849feB37aBfeB59C', // TODO not priced properly, no balances either - EUL: '0xEb9b5f4EB023aE754fF59A04c9C038D58606DAC6', - } -}; - -const exceptions = { - ethereum: [ - { token: tokens.ethereum.rEUL, use: tokens.ethereum.EUL }, - { token: tokens.ethereum.ezREZ, use: tokens.ethereum.REZ }, // TODO ezREZ not priced properly - // { token: tokens.ethereum.tsSwellRswETH, use: ADDRESSES.null }, - { token: tokens.ethereum.eUSDC_2, use: tokens.ethereum.USDC }, - ], - linea: [ - { token: tokens.linea.oLYNX, use: tokens.linea.LYNX }, - // { token: tokens.linea.z0WETH, use: tokens.linea.ETH }, - // { token: tokens.linea.z0ezETH, use: tokens.linea.ETH }, - // { token: tokens.linea.z0rsETH, use: tokens.linea.ETH }, - // { token: tokens.linea.z0weETH, use: tokens.linea.ETH }, - // { token: tokens.linea.z0USDT, use: tokens.linea.USDT }, - ], - swellchain: [ - // { token: tokens.swellchain.tsSwellETH, use: ADDRESSES.null }, // TODO not priced properly - ], -}; - -const treasuryNFTs = { - avax: [ - { name: 'PHAR', veNft: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', baseToken: tokens.avax.PHAR, owner: '0x58A916AD66584811C939AA844025036e5078E811' }, // Pharaoh Exchange - vePHAR - { name: 'PHAR', veNft: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', baseToken: tokens.avax.PHAR, owner: '0xB6301976f04E6A58D6E57Ff04144A31D911D3a25' }, // Pharaoh Exchange - vePHAR - ], - linea: [ - { name: 'NILE', veNft: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', baseToken: tokens.linea.NILE, owner: '0x58A916AD66584811C939AA844025036e5078E811' }, // NILE - veNILE - { name: 'Lynex', veNft: '0x8D95f56b0Bac46e8ac1d3A3F12FB1E5BC39b4c0c', baseToken: tokens.linea.LYNX, owner: '0x58A916AD66584811C939AA844025036e5078E811', useLocked: false }, // veLYNX - { name: 'Lynex', veNft: '0x8D95f56b0Bac46e8ac1d3A3F12FB1E5BC39b4c0c', baseToken: tokens.linea.LYNX, owner: '0x1feE198A3D28B2419bf0Ab4BBbd6cC8f75368216', useLocked: false }, // veLYNX - // { name: '', veNft: '0x398f0a3e303Afd3cAe2b602D6bBe01b1C1AF4749', baseToken: '??', owner: '0x1feE198A3D28B2419bf0Ab4BBbd6cC8f75368216' }, // WIZ - ], - arbitrum: [ - { name: 'RAMSES', veNft: '0xAAA343032aA79eE9a6897Dab03bef967c3289a06', baseToken: tokens.arbitrum.RAM, owner: '0xB6301976f04E6A58D6E57Ff04144A31D911D3a25' }, // RAMSES - veNFT - { name: 'RAMSES', veNft: '0xAAA343032aA79eE9a6897Dab03bef967c3289a06', baseToken: tokens.arbitrum.RAM, owner: '0x58A916AD66584811C939AA844025036e5078E811' }, // RAMSES - veNFT - // { name: '', veNft: '0x33545b31c30dffe3164dadf8b10a80a72307ee36', baseToken: tokens.arbitrum.RAM, owner: '0x58A916AD66584811C939AA844025036e5078E811' }, // $ARB AIRDROP? - // { name: '', veNft: '0xf2a20438704a424b22bd6d71a87772ce9deec3be', baseToken: tokens.arbitrum.RAM, owner: '0x58A916AD66584811C939AA844025036e5078E811' }, // $ARB AIRDROP? - ], - mantle: [ - { name: 'Cleopatra', veNft: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', baseToken: tokens.mantle.CLEO, owner: '0x58A916AD66584811C939AA844025036e5078E811' }, // Cleopatra - veCLEO - { name: 'Cleopatra', veNft: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', baseToken: tokens.mantle.CLEO, owner: '0xB6301976f04E6A58D6E57Ff04144A31D911D3a25' }, // Cleopatra - veCLEO - ], - scroll: [ - { name: 'NURI', veNft: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', baseToken: tokens.scroll.NURI, owner: '0x58A916AD66584811C939AA844025036e5078E811' }, // NURI - veNURI - ], - mode: [ - // { name: 'MODE', veNft: '0x06ab1Dc3c330E9CeA4fDF0C7C6F6Fb6442A4273C', baseToken: tokens.mode.MODE, owner: '0x41FC0479A3E67Ac6d26760D1205dC523abee8b94', useLocked: false }, - ] -}; - -const vaultContracts = [ - '0x294eecec65A0142e84AEdfD8eB2FBEA8c9a9fbad', // tacETH - '0x6Bf340dB729d82af1F6443A0Ea0d79647b1c3DDf', // tacBTC - '0x699e04F98dE2Fc395a7dcBf36B48EC837A976490', // tacUSD -]; - -module.exports = { - defaultTokens, - tokens, - treasuryMultisigs, - exceptions, - treasuryNFTs, - vaultContracts, -}; diff --git a/projects/TurtleClub/index.js b/projects/TurtleClub/index.js deleted file mode 100644 index 7bad1b6f4e9..00000000000 --- a/projects/TurtleClub/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { tokens, vaultContracts } = require("./assets"); - -const plainTokens = Object.values(tokens).map(chain => Object.values(chain)).flat(1); - -module.exports = { - // All vaults currently ethereum - doublecounted: true, - ethereum: { - tvl: sumTokensExport({ - owners: vaultContracts, - tokens: plainTokens, - permitFailure: true, - tokenConfig: { onlyWhitelisted: false }, - }), - }, -}; \ No newline at end of file diff --git a/projects/VAX/index.js b/projects/VAX/index.js deleted file mode 100644 index fa6c232c3cb..00000000000 --- a/projects/VAX/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - multivac: { - tvl: getUniTVL({ - factory: '0xbaC576111e2BC5EfBbE7c5d765b9DC44083901fD', - useDefaultCoreAssets: true, - }) - } -}; \ No newline at end of file diff --git a/projects/Velocimeter/index.js b/projects/Velocimeter/index.js deleted file mode 100644 index acb9f6dfce6..00000000000 --- a/projects/Velocimeter/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - canto: { - tvl: getUniTVL({ - factory: '0xb12aF64E128A1D4489D13314eB4Df81cBCE126aC', - useDefaultCoreAssets: true, - hasStablePools: true, - }), - staking: staking( - '0x990efF367C6c4aece43c1E98099061c897730F27', - '0x2Baec546a92cA3469f71b7A091f7dF61e5569889', - 'canto' - ) - } -} diff --git a/projects/VersaGames/config.js b/projects/VersaGames/config.js deleted file mode 100644 index 87d17d73f3b..00000000000 --- a/projects/VersaGames/config.js +++ /dev/null @@ -1,30 +0,0 @@ -const config = { - tokens: { - versa: { - id: "versa", - symbol: "VERSA", - addresses: { - "0x19": "0x00d7699b71290094ccb1a5884cd835bd65a78c17", - }, - decimals: 18, - }, - xversa: { - id: "xversa", - symbol: "xVERSA", - addresses: { - "0x19": "0x8216E362d07741b562eBB02C61b1659B6B1258aD", - }, - decimals: 18, - }, - }, - chains: { - cronos: { - id: "0x19", - name: "cronos", - }, - }, -}; - -module.exports = { - config, -}; diff --git a/projects/VersaGames/index.js b/projects/VersaGames/index.js deleted file mode 100644 index a57d667f688..00000000000 --- a/projects/VersaGames/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); -const { config } = require("./config"); - -const chain = config.chains["cronos"]; -const versaAddress = config.tokens["versa"].addresses[chain.id]; -const xVersaAddress = config.tokens["xversa"].addresses[chain.id]; - -module.exports = { - cronos: { - staking: staking(xVersaAddress, versaAddress, chain.name), - tvl: () => ({}), - }, - methodology: "TVL is calculated as value of tokens in VERSA-xVERSA staking", -}; diff --git a/projects/VeryLongSwap/index.js b/projects/VeryLongSwap/index.js deleted file mode 100644 index 56c7c346116..00000000000 --- a/projects/VeryLongSwap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const factory = '0x287fAE8c400603029c27Af0451126b9581B6fcD4' - -module.exports = uniV3Export({ - astrzk: { factory: factory, fromBlock: 156301, }, -}); - -module.exports.deadFrom = '2025-03-31' // Astar ZK is shutting down on March 31, 2025: https://docs.astar.network/docs/learn/zkEVM diff --git a/projects/Vingt.io/index.js b/projects/Vingt.io/index.js deleted file mode 100644 index 97c7827e6f7..00000000000 --- a/projects/Vingt.io/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const CONFIG = { - arbitrum: { - leverageModule: "0x05f14ce2e01e3b261852ba225561d10197e1e35f", - sets: [ - "0xe30d89E3B71270691d62c014BD64C756Fe318777", // eth2x - "0x0E4DBc3f201f33876eC7b53495076eCA0fC26821", // eth3x - "0xd6f1093f474bA300ad378239d743cA33EfDd8457", // ieth1x - "0xddaaf04eE2c0ee8fb3Af961243b2912DD71825aD", // btc2x - "0x360e50B2aF3af585CF9A14021bD55BbeAa6e603b", // btc3x - "0x642db5e65287FCd25885D8fB68478F6e96933648", // ibtc1x - ] - }, - bsc: { - sets: [ - "0xaEE6C5823Fae8a25DcE797c0ade505983c1C08aE", // bsk - "0x318a5139e93F3d519D100Fe69e115f211c3C80Fe", // plt - "0xA2a078586DbC8bDf2BFB05C376c87695FFa6128F", // sit - ] - } -} - -const abis = { - getComponents: "address[]:getComponents", - getModules: "address[]:getModules", - getEnabledAssets: "function getEnabledAssets(address) view returns (address[] uToken, address[] vToken)", - underlyingToReserveTokens: "function underlyingToReserveTokens(address) view returns (address aToken, address variabeDebtToken)" -} - -const tvl = async (api) => { - const { sets, leverageModule } = CONFIG[api.chain] - const tokens = await api.multiCall({ abi: abis.getComponents, calls: sets }) - const modules = await api.multiCall({ abi: abis.getModules, calls: sets }) - - const toas = sets.flatMap((s, i) => tokens[i].map((t) => [t, s])); - const leverageSets = sets.filter((_, i) => modules[i].some(j => j.toLowerCase() === leverageModule)) - const auTokens = await api.multiCall({ abi: abis.getEnabledAssets, calls: leverageSets, target: leverageModule }) - const aaveReceiptTokens = await api.multiCall({ abi: abis.underlyingToReserveTokens, calls: auTokens.map(({ vToken }) => ({ target: leverageModule, params: vToken }))}) - aaveReceiptTokens.forEach((o, i) => toas.push([o.variabeDebtToken, leverageSets[i]])) - await sumTokens2({ api, tokensAndOwners: toas, blacklistedTokens: sets }) -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/Viridian/index.js b/projects/Viridian/index.js deleted file mode 100644 index 4f77bcec3fc..00000000000 --- a/projects/Viridian/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/cache/uniswap.js') -const { staking } = require('../helper/staking.js') - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL shows the sum of tokens deposited in our pools and Staking shows the number of $VIRI locked in the Voting Escrow contract.', - core: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xb54a83cfEc6052E05BB2925097FAff0EC22893F3', hasStablePools: true, }), - staking: staking("0x49360Bc1727113F56f5A256678AC27F93ee6D368", "0x189d2849AF2031e20c670E755Fa3F0121f2be409"), - }, -} \ No newline at end of file diff --git a/projects/VoltageSwap/index.js b/projects/VoltageSwap/index.js deleted file mode 100644 index daea9058d41..00000000000 --- a/projects/VoltageSwap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const chain = 'scroll' -const factory = '0x7328d0dcbCcDA2F5bBA6Ce866cC9478cc8c0F938' // v2 factory address - -module.exports = uniTvlExport(chain, factory) \ No newline at end of file diff --git a/projects/Votre/index.js b/projects/Votre/index.js deleted file mode 100644 index 99be70bc057..00000000000 --- a/projects/Votre/index.js +++ /dev/null @@ -1,100 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { request, gql } = require('graphql-request'); - -// Token addresses on Base -const cbBTC = ADDRESSES.ethereum.cbBTC; -const WETH = ADDRESSES.optimism.WETH_1; -const USDC = ADDRESSES.base.USDC; -// base mainnet subgraph url -const BASE_MAINNET_SUBGRAPH_URL = 'https://api.goldsky.com/api/public/project_cm3exke617zqh01074tulgtx0/subgraphs/collar-base-mainnet/0.1.2/gn' -// Contract addresses holding assets -const cbBTC_ESCROW = [ - "0xa6b0d40e218e29ba626ead3da4e8f146027a802d", - "0x87c127d4413e67d38c25b543cf8fc2c4a5f2fbc3", -]; - -const WETH_ESCROW = [ - "0xf2c42a0707927d6582072aeab7acb8a700455676", - "0x8d1081e8a6e5c29ec3e6bdfe4d09a622ef22c369", -]; - -const USDC_PROVIDER = [ - "0x179ef7d08416cbee440b50e63deebc0b40770df3", - "0x9180d9cf00b772ea4cab31e3b86886b561b3dd44", - "0xb560c3a66e0af8b08a4e5a290f8ea651bf9dda4b", - "0xdbc703f1df19ec3f0a43461c84a8c31db3c07b13", -]; - -const USDC_TAKER = [ - "0x674c357a26731874d3c1eaf2c00a1df4e0410121", - "0x3ec73f92afe1f1fa862fa2d877e730221df8065e", - "0x28aff0dd8bb96e6cf4551bb1159b70746e84c072", - "0x68c5a88111b4d300734dbaece7b16b809e712263", -]; - -// Helper to fetch all paginated results from a subgraph -async function fetchAllSubgraphResults({ url, query, field, variables = {} }) { - let skip = 0; - let allResults = []; - let hasMore = true; - while (hasMore) { - const data = await request(url, query, { ...variables, skip }); - const results = data[field]; - allResults = [...allResults, ...results]; - if (results.length < 1000) { - hasMore = false; - } else { - skip += 1000; - } - } - return allResults; -} - -async function tvl(_, _1, _2, { api }) { - const tokensAndOwners = [ - [cbBTC, cbBTC_ESCROW], - [WETH, WETH_ESCROW], - [USDC, USDC_PROVIDER], - [USDC, USDC_TAKER], - ].flatMap(([token, owners]) => - owners.map(owner => [token, owner]) - ); - - return api.sumTokens({ tokensAndOwners }); -} - -async function borrowed(_, _1, _2, { api }) { - const query = gql` - query FindLoans($skip: Int!) { - loans(skip: $skip, first: 1000, where: {status: Active}) { - underlyingAmount - loansNFT { - underlying - } - } - } - `; - const allLoans = await fetchAllSubgraphResults({ - url: BASE_MAINNET_SUBGRAPH_URL, - query, - field: "loans", - }); - - for (const loan of allLoans) { - const underlyingAddress = loan.loansNFT?.underlying; - if (!underlyingAddress) continue; - api.add(underlyingAddress, loan.underlyingAmount); - } - return api.getBalances(); -} - -module.exports = { - methodology: - "TVL includes cbBTC and WETH locked in escrow contracts, and USDC held in both provider and taker contracts. Balances are fetched via on-chain `balanceOf` calls.", - start: 1714608000, - timetravel: true, - base: { - tvl, - borrowed, - }, -}; diff --git a/projects/XDX/index.js b/projects/XDX/index.js deleted file mode 100644 index 5bcc175f7e4..00000000000 --- a/projects/XDX/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - blast: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xF55dE36072beCebF162d2d54C49964f3b0683711', - }) - } -} \ No newline at end of file diff --git a/projects/YieldPulseFinance/index.js b/projects/YieldPulseFinance/index.js deleted file mode 100644 index 98946809a2f..00000000000 --- a/projects/YieldPulseFinance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "pulse", - masterchef: "0xc9649cd27cFe8D74a47D711e04fEF3AbC4B56bae", - nativeTokens: ["0xDd40a166b43c0b95F1248c9A5AFFD7A166f1526a"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); diff --git a/projects/YogurtFinance/index.js b/projects/YogurtFinance/index.js deleted file mode 100644 index 6f2b74dba30..00000000000 --- a/projects/YogurtFinance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "pulse", - masterchef: "0xca3E704Bd09B979170D76d34880c7A72fda51B63", - nativeTokens: ["0xece11C704F38FF38520667AeCDd7f53eA82F60F5"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); diff --git a/projects/ZEROBASE/index.js b/projects/ZEROBASE/index.js deleted file mode 100644 index 663636dae38..00000000000 --- a/projects/ZEROBASE/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const CONFIG = { - ethereum: { - vault: '0x9eF52D8953d184840F2c69096B7b3A7dA7093685', - tokens: [ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC] - }, - bsc: { - vault: '0xCc5Df5C68d8c991035B6A437D4e00A99875228E4', - tokens: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC] - }, - polygon: { - vault: '0xCc5Df5C68d8c991035B6A437D4e00A99875228E4', - tokens: [ADDRESSES.polygon.USDT, ADDRESSES.polygon.USDC_CIRCLE] - }, - arbitrum: { - vault: '0xCc5Df5C68d8c991035B6A437D4e00A99875228E4', - tokens: [ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC_CIRCLE] - }, - optimism: { - vault: '0xCc5Df5C68d8c991035B6A437D4e00A99875228E4', - tokens: [ADDRESSES.optimism.USDT, ADDRESSES.optimism.USDC_CIRCLE] - }, - avax: { - vault: '0xC3e9006559cB209a987e99257986aA5Ce324F829', - tokens: [ADDRESSES.avax.USDt, ADDRESSES.avax.USDC] - }, - base: { - vault: '0xCc5Df5C68d8c991035B6A437D4e00A99875228E4', - tokens: [ADDRESSES.base.USDC] - } -} - -const abis = { - getTVL: "function getTVL(address _token) view returns (uint256)" -} - -module.exports = { - methodology: 'For each chain: call getTVL(token) on its vault and sum per-token amounts', -} - -const tvl = async (api) => { - const { vault, tokens } = CONFIG[api.chain] - const balances = await api.multiCall({ abi: abis.getTVL, calls: tokens.map((t) => ({ target: vault, params: [t]})) }) - tokens.forEach((t, i) => { api.add(t, balances[i]) }) -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/ZTLN/index.js b/projects/ZTLN/index.js deleted file mode 100644 index ec2b5e553f3..00000000000 --- a/projects/ZTLN/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { request } = require("graphql-request"); - -const endpoint = "https://api.studio.thegraph.com/query/77016/wallet-mainnet/version/latest"; - -const securityAddress = '0x917991d52Aa2fC1b5612A6aa5e4e81d580F97532'; -const query = ` -query MyQuery { - securities(where: {security: "${securityAddress}"}) { - secondaryInvestors { - amount - } - } -} -`; - -async function tvl(api) { - const data = await request(endpoint, query); - - const securities = data.securities || []; - - let tokens = 0; - const currencyDecimal = 10 ** 18; - - securities.forEach(security => { - security.secondaryInvestors.forEach(investor => { - const amt = parseFloat(investor.amount); - tokens += amt / currencyDecimal; - }); - }); - - const price = 100.5; - const tvl = tokens * price - api.addUSDValue(tvl); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "The value in RWA held by the protocol", - hallmarks: [ - ['2025-01-13', 'ZTLN is deprecated'], - ], - deadFrom: "2025-01-13", - ethereum: { - tvl: () => ({}), - }, -}; \ No newline at end of file diff --git a/projects/Zebra/index.js b/projects/Zebra/index.js deleted file mode 100644 index c2eb17186d6..00000000000 --- a/projects/Zebra/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - scroll: { - tvl: getUniTVL({ factory: '0xa63eb44c67813cad20A9aE654641ddc918412941', useDefaultCoreAssets: true, }) - } -}; \ No newline at end of file diff --git a/projects/ZebraDAO/index.js b/projects/ZebraDAO/index.js deleted file mode 100644 index 2ec1bed8226..00000000000 --- a/projects/ZebraDAO/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const { staking } = require('../helper/staking') -const { mergeExports } = require("../helper/utils") -const { yieldHelper } = require("../helper/yieldHelper") - -const token = '0xF0ce1d83b5FC9c67F157d8B97fD09E2cF8AF899E' - -const lend = compoundExports2({ comptroller: '0xBEA1D596Ae022fae90d84ffaF0907E38a25Ed6E7', cether: '0x4B20dBdd4d5a7A762f788796DF5e0487007C6B36', }) - -const stakings = staking( - ['0x0b42A3D7290a94DF04cf4193f62856950A5F5f89', '0x5346fa63509Ed9dEeF2795eD62f5cC84a5F2Ab00'], - token -) - -const contract = '0x3E17cbE7e8597995591088e13dDe7E25B2B34F1F' -const abis = { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, uint256 accSushiPerShare, uint256 amount, address strat)', -} -const zebra_vault = yieldHelper({ - project: 'ZebraDAO', - chain: 'base', - masterchef: contract, - nativeToken: token, - abis, -}) - -module.exports = mergeExports([ - { base: lend }, - { base: { staking: stakings } }, - zebra_vault, -]) \ No newline at end of file diff --git a/projects/Zenonswap/index.js b/projects/Zenonswap/index.js deleted file mode 100644 index 9e2291bc8a6..00000000000 --- a/projects/Zenonswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('degen', '0x97B162AD1443737B0500A5E726344D608eB9e255') \ No newline at end of file diff --git a/projects/Zolidly/index.js b/projects/Zolidly/index.js deleted file mode 100644 index 9336658c29b..00000000000 --- a/projects/Zolidly/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1684713600, "Rug Pull"] - ], - deadFrom: '2023-05-22', - era: { - tvl: () => ({}), - }, - methodology: "Counts liquidity in pools", -}; \ No newline at end of file diff --git a/projects/ZukeSwap/index.js b/projects/ZukeSwap/index.js deleted file mode 100644 index d6103ef7f1a..00000000000 --- a/projects/ZukeSwap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - hallmarks: [ - [1680307200, "Rug Pull"] - ], - deadFrom: '2023-04-01', - misrepresentedTokens: true, - loop: { - tvl: () => ({}), - } -} \ No newline at end of file diff --git a/projects/a51-finance-v3/index.js b/projects/a51-finance-v3/index.js deleted file mode 100644 index 5b18a09575f..00000000000 --- a/projects/a51-finance-v3/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs") -const { sumTokens2 } = require("../helper/unwrapLPs") -const { staking } = require("../helper/staking"); - -const A51_STAKING_CONTRACT = "0x10a62e0d8491751c40476d432f9e19ba8f699a61"; -const A51 = "0xe9e7c09e82328c3107d367f6c617cf9977e63ed0"; - - -const getStrategiesDetails = "function strategies(bytes32) view returns ( tuple(address pool, int24 tickLower, int24 tickUpper) key, address owner, bytes actions, bytes actionStatus, bool isCompound, bool isPrivate, uint256 managementFee, uint256 performanceFee, tuple(uint256 fee0, uint256 fee1, uint256 balance0, uint256 balance1, uint256 totalShares, uint128 uniswapLiquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128) account)" -const getStrategyReserves = "function getStrategyReserves(address, int24, int24, uint128) returns (uint256 reserves0, uint256 reserves1)" - -const DEFAULT_STRATEGY_CREATION_TOPIC = "StrategyCreated(bytes32)" - -const config = { - // uniswap - arbitrum: [{ target: "0x3e0aa2e17fe3e5e319f388c794fdbc3c64ef9da6", helper: "0x9d80597d9403bdb35b3d7d9f400377e790b01053", startBlock: 190945156 },], - // uniswap - blast: [{ target: "0x5a8e82c4b3Dbd7579fD198A3276cF75CEA2Df63D", helper: "0xbA13be69628d12963b28de8E7Ba04C3C4c1eaceA", startBlock: 1709947 },], - base: [ - // uniswap - { target: "0x3e0AA2e17FE3E5e319f388C794FdBC3c64Ef9da6", helper: "0xA1d8180F4482359CEb7Eb7437FCf4a2616830F81", startBlock: 12765695 }, - // BaseSwap - { target: "0xDFb179526ae303Eea49AC99DD360159C39105828", helper: "0x6e7e838E20ED6657Aaf1166f9B7a845565956F51", startBlock: 13890566 }, - ], - // uniswap - optimism: [{ target: "0x525c80e91efe9222de3eae86af69a480fbced416", helper: "0x965356eb2c208ce4130e267342ca720042cce7b2", startBlock: 118360616 },], - polygon: [ - // uniswap - { target: "0xD4798F142FDb87738eF4eBE82Bd56Eccde19A88C", helper: "0x9c225a02426e3229C073A6132E083561e95000b5", startBlock: 55506149 }, - // quickswap - { target: "0xED19D4A923930F6B0348fE06be694FeC56a70b86", helper: "0x6c8b11476475FA487e2bfa6fE00244160F80213e", startBlock: 56237007, }, - ], - // quickswap - polygon_zkevm: [{target: "0xBd7887e11A9356957680A34955a135cf465e7052",helper: "0x965356eb2C208Ce4130E267342cA720042Cce7b2",startBlock: 11928029,},], - // uniswap - bsc: [{ target: "0x6F2b186e9392042B1edE2D1D1706a3DC4a4725d8", helper: "0x9c225a02426e3229C073A6132E083561e95000b5", startBlock: 37623104 },], - // uniswap - scroll: [{ target: "0xA8Dc31c8C9F93dB2e42A5472F580689794639576", helper: "0x965356eb2C208Ce4130E267342cA720042Cce7b2", startBlock: 4846051 },], - // quickswap - manta: [{ target: "0x69317029384c3305fC04670c68a2b434e2D8C44C", helper: "0xa1d8180f4482359ceb7eb7437fcf4a2616830f81", startBlock: 1834975 },], - // lynex - linea: [{target: "0xA8Dc31c8C9F93dB2e42A5472F580689794639576",helper: "0x965356eb2C208Ce4130E267342cA720042Cce7b2",startBlock: 4518443,},], - // swapmode - mode: [{ target: "0x69317029384c3305fC04670c68a2b434e2D8C44C", helper: "0xFFD9acf25F2D930BE88D486D588ecBa7a418DE0B", startBlock: 11042629 },], -} - -module.exports = { - doublecounted: true, -} - -Object.keys(config).forEach(chain => { - const configs = config[chain] - module.exports[chain] = { - tvl: async (api) => { - await Promise.all(configs.map(addConfigTvl)) - - async function addConfigTvl({ target, helper, startBlock, topic = DEFAULT_STRATEGY_CREATION_TOPIC }) { - const strategyLogs = await getLogs({ target, topic, fromBlock: startBlock, api, }) - const strategies = strategyLogs.map(log => log.topics[1]) - - const pools = [] - const reservesCalls = [] - - const strategyDetails = await api.multiCall({ abi: getStrategiesDetails, target, calls: strategies, }) - - strategyDetails.forEach(({ key: { pool, tickLower, tickUpper }, account }) => { - pools.push(pool) - - reservesCalls.push({ params: [pool, Number(tickLower), Number(tickUpper), account.uniswapLiquidity,], }) - }) - - const [token0s, token1s, reserves] = await Promise.all([ - api.multiCall({ abi: 'address:token0', calls: pools, }), - api.multiCall({ abi: 'address:token1', calls: pools, }), - api.multiCall({ abi: getStrategyReserves, calls: reservesCalls, target: helper, }), - ]) - - reserves.forEach((reserve, index) => { - api.add(token0s[index], reserve.reserves0) - api.add(token1s[index], reserve.reserves1) - }) - - return sumTokens2({ owner: target, tokens: token0s.concat(token1s), api, }) - } - } - } -}) - -module.exports.polygon.staking = staking(A51_STAKING_CONTRACT, A51) \ No newline at end of file diff --git a/projects/aada/index.js b/projects/aada/index.js deleted file mode 100644 index 73780c8420d..00000000000 --- a/projects/aada/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/cardano"); - -const scriptAdresses = [ - "addr1zy9940grv28qxz9k82l9gmqd80vfd8a2734e35yzsz9cqktfjcnq9fczt4qkxgec2hz6x7f38vnj8xuxywk4x4qgzh9smq5w00", //request.hs -- Request created. Lender to fund - "addr1zykhtew0z93z6hmgu2ew7kl9puqz0wmafp0f3jypuejkwmrfjcnq9fczt4qkxgec2hz6x7f38vnj8xuxywk4x4qgzh9skq4p22", //collateral.hs -- Loan funded. Borrower to repay - "addr1zxfgvtfgp9476dhmq8fkm3x8wg20v33s6c9unyxmnpm0y5rfjcnq9fczt4qkxgec2hz6x7f38vnj8xuxywk4x4qgzh9st8q78h", //interest.hs -- Borrower repaid -- Lender to claim - "addr1zxcjtxuc7mj8w6v9l3dfxvm30kxf78nzw387mqjqvszxr4mfjcnq9fczt4qkxgec2hz6x7f38vnj8xuxywk4x4qgzh9sp92046", //liquidation.hs -- Funds were liquidated. Borrower to claim - "addr1zytwe3qhc0kf5k8yaur60cnhcxjg9zvfdnftp0rfu2czprtfjcnq9fczt4qkxgec2hz6x7f38vnj8xuxywk4x4qgzh9sgzwepc", //debt_request.hs -- Funds locked as liquidity deposits 'addr1z8tjrqy2dj5uk6her4ksltyxy2flzykktxkahzlahm9nwctfjcnq9fczt4qkxgec2hz6x7f38vnj8xuxywk4x4qgzh9st86ewu', //request.hs v2 -- Funds locked as liquidity deposits - "addr1zyc7w5n699ews00yujnhw59g4nuzykuzgl5x6nzqp49zv5tfjcnq9fczt4qkxgec2hz6x7f38vnj8xuxywk4x4qgzh9sdyxnxc", //collateral.hs v2-- Funds locked as liquidity deposits - "addr1zy6v8c7xdhftln7zk5uvt9h6jaknaxlx6hz5nkw63mpgwamfjcnq9fczt4qkxgec2hz6x7f38vnj8xuxywk4x4qgzh9sw9snf6", //debt_request.hs v2-- Funds locked as liquidity deposits - "script1xt5vpt33fm6tu3fvz65enpnlvmg6z7gle9evktmuwn3c6gjfc7p", // Pool contract - "script1nwvlaa0wnf43wzjp3xv738k6myam74dlrlh027mq20trg3ng772", // Collateral contract - "script1sqscxzh7mkzlmgf98k3tuadkds8xt3yzzj8t3jnfpypukld9xck", // Leftovers contract -]; - -module.exports = { - methodology: - "Calculates the total of idle tokens held in pool contracts or collateral tokens secured in the collateral contract.", - timetravel: false, - cardano: { - staking: sumTokensExport({ - owner: "addr1wyvej5rmcrhfpcwrwmnqsjtwvf8gv3dn64vwy3xzekp95wqqhdkwa", - tokens: [ - "8fef2d34078659493ce161a6c7fba4b56afefa8535296a5743f6958741414441", - ], - }), - tvl: sumTokensExport({ scripts: scriptAdresses }), - }, - hallmarks: [[1708560053, "V2 Launch"]], -}; diff --git a/projects/aark/index.js b/projects/aark/index.js deleted file mode 100644 index 8f2f4019219..00000000000 --- a/projects/aark/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(api) { - - const VAULT_CONTRACT_ADDRESS = '0x7A5df878e195D09F1C0bbba702Cfdf0ac9d0a835' - return api.sumTokens({ owner: VAULT_CONTRACT_ADDRESS, tokens: [ - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.FRAX, //FRAX - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.WSTETH, - ADDRESSES.arbitrum.DAI, - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.USDT, - '0x9C2433dFD71096C435Be9465220BB2B189375eA7', //gm - '0x6853EA96FF216fAb11D2d930CE3C508556A4bdc4', - '0x47c031236e19d024b42f8AE6780E44A573170703', - '0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407', - '0xD9535bB5f58A1a75032416F2dFe7880C30575a41', - '0xB686BcB112660343E6d15BDb65297e110C8311c4', - '0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8', - ADDRESSES.arbitrum.WBTC, - '0x9bEcd6b4Fb076348A455518aea23d3799361FE95' // weETH-25APR2024 - ] }) -} - -module.exports = { - arbitrum: { tvl }, -} \ No newline at end of file diff --git a/projects/aarna/index.js b/projects/aarna/index.js deleted file mode 100644 index 894292ba321..00000000000 --- a/projects/aarna/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { generateAtvExport } = require('../helper/atv-helper'); - -// Configuration for all Aarna ATV vaults across chains -const AARNA_CONFIG = { - methodology: 'TVL is calculated using direct on-chain storage contract queries via calculatePoolInUsd function for each âtv vault. This includes âtv802 (quant AI), âtv808 (asymmetric alpha), and âtv111 (multi layer yield) vaults deployed across Ethereum, Arbitrum, and Sonic chains.', - - // Vault addresses by chain and type - vaults: { - ethereum: { - 'ATV-802': "0xb68e430c56ed9e548e864a68a60f9d41f993b32c", - 'ATV-808': "0x60697825812ecC1Fff07f41E2d3f5cf314674Fa6", - 'ATV-111': "0x72ec8447074dc0bfbedfb516cc250b525f3a4aba" - }, - arbitrum: { - 'ATV-111': "0xe1a6bda42fbafae38607598386a1050613c1a64b" - }, - sonic: { - 'ATV-111': "0x1cb934e1f5acdb5b805c609a2c5a09aa8489f124" - } - }, - - // Storage contracts for direct TVL calculation (TO BE FILLED BY USER) - storageContracts: { - ethereum: { - 'ATV-802': "0x6a38305d86a032db1b677c975e6fe5863cf1edd2", - 'ATV-808': "0xE3cb06cB58E84F96AEde7D2d703F0B969bB69A81", - 'ATV-111': "0xceb202d3075be4abd24865fd8f307374923948ad" - }, - arbitrum: { - 'ATV-111': "0x4700bd9cc7232f243945b4a55834ab84563e4e9d" - }, - sonic: { - 'ATV-111': "0x13da4847c80732cab3341f459a094e042af98691" - } - }, - - // Chain-specific fallback tokens (only for ATV-111, ATV-802/808 use dynamic discovery) - fallbackTokens: { - ethereum: [ - "0x39aa39c021dfbae8fac545936693ac917d5e7563", // cUSDC - "0xc3d688B66703497DAA19211EEdff47f25384cdc3", // cUSDCv3 - "0x98c23e9d8f34fefb1b7bd6a91b7ff122f4e16f5c", // aETHUSDC - ], - arbitrum: [ - "0x625E7708f30cA75bfd92586e17077590C60eb4cD", // aave arb usdc - "0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf", // compound v3 arb usdc - ADDRESSES.arbitrum.USDC_CIRCLE, // USDC on Arbitrum - ADDRESSES.arbitrum.USDC, // USDC.e on Arbitrum - ], - sonic: [ - ADDRESSES.sonic.USDC_e, // usdc address on sonic - "0x3F5EA53d1160177445B1898afbB16da111182418", // pendle lp token on sonic - ] - }, - - // Multi-chain deployment - chains: ['ethereum', 'arbitrum', 'sonic'] -}; - -// Export the generated configuration -module.exports = generateAtvExport(AARNA_CONFIG); diff --git a/projects/aave-aptos/index.js b/projects/aave-aptos/index.js deleted file mode 100644 index 7fec9ce1ae1..00000000000 --- a/projects/aave-aptos/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { function_view } = require('../helper/chain/aptos'); - -async function getData() { - return function_view({ functionStr: `0x39ddcd9e1a39fa14f25e3f9ec8a86074d05cc0881cbf667df8a6ee70942016fb::ui_pool_data_provider_v3::get_reserves_data`, type_arguments: [], args: [] }) -} - -async function tvl(api) { - const [data] = await getData() - data.forEach(i => { - api.add(i.underlying_asset, i.available_liquidity) - }) - -} - -async function borrowed(api) { - const [data] = await getData() - data.forEach(i => { - api.add(i.underlying_asset, i.total_scaled_variable_debt) - }) -} - -module.exports = { - aptos: { - tvl, borrowed, - } -}; \ No newline at end of file diff --git a/projects/aave-arc/index.js b/projects/aave-arc/index.js deleted file mode 100644 index 2011ff72b32..00000000000 --- a/projects/aave-arc/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { aaveExports } = require('../helper/aave'); - -// start block: 13431423 -module.exports = { - ethereum: aaveExports("ethereum", "0x6FdfafB66d39cD72CFE7984D3Bbcc76632faAb00", id=>id, ["0x71B53fC437cCD988b1b89B1D4605c3c3d0C810ea"]), -}; \ No newline at end of file diff --git a/projects/aave-umbrella/index.js b/projects/aave-umbrella/index.js deleted file mode 100644 index c4deec1fece..00000000000 --- a/projects/aave-umbrella/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const config = { - ethereum: { factories: ['0xd400fc38ed4732893174325693a63c30ee3881a8'], } -} - -Object.keys(config).forEach(chain => { - const { factories, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const stkTokens = (await api.multiCall({ calls: factories, abi: 'address[]:getStkTokens' })).flat() - const tokens = await api.multiCall({ abi: 'address:asset', calls: stkTokens }) - return api.sumTokens({ tokensAndOwners2: [tokens, stkTokens], }) - } - } -}) - -module.exports.doublecounted = true \ No newline at end of file diff --git a/projects/aave-v1/index.js b/projects/aave-v1/index.js deleted file mode 100644 index 1731621d659..00000000000 --- a/projects/aave-v1/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { singleAssetV1Market,uniswapV1Market } = require('../aave/v1'); - -// v1 -const aaveLendingPoolCore = "0x3dfd23A6c5E8BbcFc9581d2E864a68feb6a076d3"; -const uniswapLendingPoolCore = "0x1012cfF81A1582ddD0616517eFB97D02c5c17E25"; - -function ethereum(borrowed) { - return async (timestamp, block)=> { - const balances = {} - - await singleAssetV1Market(balances, aaveLendingPoolCore, block, borrowed) - await uniswapV1Market(balances, uniswapLendingPoolCore, block, borrowed) - return balances - } -} - -module.exports = { - ethereum: { - tvl: ethereum(false), - borrowed: ethereum(true), - }, -}; \ No newline at end of file diff --git a/projects/aave-v3/index.js b/projects/aave-v3/index.js deleted file mode 100644 index ca6a61e61da..00000000000 --- a/projects/aave-v3/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", -}; - -// https://aave.com/docs/resources/addresses -const CONFIG = { - ethereum: ['0x41393e5e337606dc3821075Af65AeE84D7688CBD', '0x08795CFE08C7a81dCDFf482BbAAF474B240f31cD', '0xE7d490885A68f00d9886508DF281D67263ed5758', '0x53519c32f73fE1797d10210c4950fFeBa3b21504'], - polygon: ['0x7F23D86Ee20D869112572136221e173428DD740B'], - avax: ['0x7F23D86Ee20D869112572136221e173428DD740B'], - arbitrum: ['0x7F23D86Ee20D869112572136221e173428DD740B'], - optimism: ['0x7F23D86Ee20D869112572136221e173428DD740B'], - harmony: ['0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654'], - fantom: ['0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654'], - metis: ['0xC01372469A17b6716A38F00c277533917B6859c0'], - base: ['0xd82a47fdebB5bf5329b09441C3DaB4b5df2153Ad'], - xdai: ['0x57038C3e3Fe0a170BB72DE2fD56E98e4d1a69717'], - scroll: ['0xe2108b60623C6Dcf7bBd535bD15a451fd0811f7b'], - bsc: ['0x23dF2a19384231aFD114b036C14b6b03324D79BC'], - era: ['0x5F2A704cE47B373c908fE8A29514249469b52b99'], - linea: ['0x2D97F8FA96886Fd923c065F5457F9DDd494e3877'], - sonic: ['0x306c124fFba5f2Bc0BcAf40D249cf19D492440b9'], - celo: ['0x33b7d355613110b4E842f5f7057Ccd36fb4cee28'], - soneium: ['0xa0208CE8356ad6C5EC6dFb8996c9A6B828212022'], - plasma: ['0xf2D6E38B407e31E7E7e4a16E6769728b76c7419F'], -}; - -const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: abi.getAllReservesTokens }); - const calls = [] - - poolDatas.map((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => calls.push({ target: pool, params: tokenAddress })); - }); - const reserveData = await api.multiCall({ abi: isBorrowed ? abi.getReserveData : abi.getReserveTokensAddresses, calls, }) - const tokensAndOwners = [] - reserveData.forEach((data, i) => { - const token = calls[i].params - if (isBorrowed) { - api.add(token, data.totalVariableDebt) - api.add(token, data.totalStableDebt) - } else - tokensAndOwners.push([token, data.aTokenAddress]) - }) - - if (isBorrowed) return api.getBalances() - return api.sumTokens({ tokensAndOwners }) -} - -module.exports.methodology = "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending." - -Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - borrowed: (api) => fetchReserveData(api, poolDatas, true), - }; -}); - -module.exports.hallmarks = [ - [1659630089, "Start OP Rewards"], - [1650471689, "Start AVAX Rewards"] -] diff --git a/projects/aave/amm.js b/projects/aave/amm.js deleted file mode 100644 index 2eea6af906d..00000000000 --- a/projects/aave/amm.js +++ /dev/null @@ -1,39 +0,0 @@ -const abi = require('../helper/abis/aave.json'); - -async function ammMarket(api, borrowed) { - const lendingPool = "0x7937D4799803FbBe595ed57278Bc4cA21f3bFfCB" - const reservesList = (await api.call({ - target: lendingPool, - abi: abi.getReservesList, - })) - const reservesData = await api.multiCall({ - abi: abi.getAMMReserveData, - target: lendingPool, - calls: reservesList, - }) - const [balanceOfTokens, symbols] = await Promise.all([ - api.multiCall({ - abi: "erc20:balanceOf", - calls: reservesData.map((r, idx) => ({ target: reservesList[idx], params: r.aTokenAddress })), - }), - api.multiCall({ abi: "erc20:symbol", calls: reservesList, }), - ]); - - if (borrowed) { - const [supplyStabledebt, supplyVariableDebt] = await Promise.all(["stableDebtTokenAddress", "variableDebtTokenAddress"].map(prop => - api.multiCall({ - abi: "erc20:totalSupply", - calls: reservesData.map((r, idx) => r[prop]), - }) - )); - supplyStabledebt.map((ssd, i) => { - balanceOfTokens[i] = Number(BigInt(ssd) + BigInt(supplyVariableDebt[i])) - }) - } - - api.addTokens(reservesList, balanceOfTokens) -} - -module.exports = { - ammMarket -} \ No newline at end of file diff --git a/projects/aave/index.js b/projects/aave/index.js deleted file mode 100644 index db46d6acedc..00000000000 --- a/projects/aave/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { getV2Reserves, getTvl, getBorrowed, aaveChainTvl } = require('../helper/aave'); -const { staking } = require('../helper/staking'); -const { ammMarket } = require('./amm'); -const { unwrapBalancerToken } = require('../helper/unwrapLPs'); -const methodologies = require('../helper/methodologies'); - - -const addressesProviderRegistryETH = "0x52D306e36E3B6B02c153d0266ff0f85d18BCD413"; - -function ethereum(borrowed) { - return async (api)=> { - const balances = api.getBalances() - const { block } = api - - // V2 TVLs - if (block >= 11360925) { - const [v2Atokens, v2ReserveTokens, dataHelper] = await getV2Reserves(block, addressesProviderRegistryETH, 'ethereum') - if(borrowed){ - await getBorrowed(balances, block, "ethereum", v2ReserveTokens, dataHelper, id=>id); - } else { - await getTvl(balances, block, 'ethereum', v2Atokens, v2ReserveTokens, id => id); - } - } - if (block >= 11998773) { - await ammMarket(api, borrowed) - } - - return balances; - } -} - -const aaveTokenAddress = ADDRESSES.ethereum.AAVE; - -async function stakingBalancerTvl(api) { - return unwrapBalancerToken({ api, owner: '0xa1116930326d21fb917d5a27f1e9943a9595fb47', balancerToken: '0x41a08648c3766f9f9d85598ff102a08f4ef84f84', isV2: false, }) -} - -const aaveStakingContract = "0x4da27a545c0c5b758a6ba100e3a049001de870f5"; - -function v2(chain, v2Registry){ - const section = borrowed => sdk.util.sumChainTvls([ - aaveChainTvl(chain, v2Registry, undefined, undefined, borrowed), - ]) - return { - tvl: section(false), - borrowed: section(true) - } -} - -module.exports = { - methodology: methodologies.lendingMarket, - ethereum: { - staking: staking(aaveStakingContract, aaveTokenAddress), - pool2: stakingBalancerTvl, - tvl: ethereum(false), - borrowed: ethereum(true), - }, - avax: v2("avax", "0x4235E22d9C3f28DCDA82b58276cb6370B01265C2"), - polygon: v2("polygon", "0x3ac4e9aa29940770aeC38fe853a4bbabb2dA9C19"), - hallmarks:[ - //[1618419730, "Start MATIC V2 Rewards"], - [1619470313, "Start Ethereum V2 Rewards"], - [1633377983, "Start AVAX V2 Rewards"], - [1635339600, "Potential xSUSHI attack found"], - [1651881600, "UST depeg"], - [1654822801, "stETH depeg"], - ], -}; -// node test.js projects/aave/index.js diff --git a/projects/aave/v1.js b/projects/aave/v1.js deleted file mode 100644 index f8d50520b1c..00000000000 --- a/projects/aave/v1.js +++ /dev/null @@ -1,128 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const BigNumber = require("bignumber.js"); -const abi = require('../helper/abis/aave.json'); -const { nullAddress } = require('../helper/unwrapLPs'); - -async function getV1Assets(lendingPoolCore, block, chain) { - const reserves = ( - await sdk.api.abi.call({ - target: lendingPoolCore, - abi: abi["getReserves"], - block, - chain - }) - ).output; - - return reserves -} - -const ethReplacement = ADDRESSES.GAS_TOKEN_2 - -async function multiMarketV1TvlBorrowed(balances, lendingPoolCore, block, chain, eth) { - const reserves = await getV1Assets(lendingPoolCore, block, chain); - const totalBorrowed = await sdk.api.abi.multiCall({ - block, - calls: reserves.map((reserve) => ({ - target: lendingPoolCore, - params: reserve, - })), - abi: abi.getReserveTotalBorrows, - chain - }); - totalBorrowed.output.forEach(borrowed=>{ - const token = borrowed.input.params[0] - sdk.util.sumSingleBalance(balances, token === ethReplacement?eth:token, borrowed.output) - }) - - return balances; -} - -async function depositMultiMarketV1Tvl(balances, lendingPoolCore, block, chain, eth) { - const reserves = (await getV1Assets(lendingPoolCore, block, chain)).filter(reserve => reserve.toLowerCase() !== ethReplacement.toLowerCase()); - - sdk.util.sumSingleBalance(balances, eth, (await sdk.api.eth.getBalance({ target: lendingPoolCore, block, chain })).output) - - const balanceOfResults = await sdk.api.abi.multiCall({ - block, - calls: reserves.map((reserve) => ({ - target: reserve, - params: lendingPoolCore, - })), - abi: "erc20:balanceOf", - chain, - }); - - sdk.util.sumMultiBalanceOf(balances, balanceOfResults, true); - - return balances; -} - -function multiMarketV1Tvl(balances, lendingPoolCore, block, borrowed, chain="ethereum", eth = ADDRESSES.null) { - return (borrowed?multiMarketV1TvlBorrowed:depositMultiMarketV1Tvl)(balances, lendingPoolCore, block, chain, eth) -} - -async function singleAssetV1Market(balances, lendingPoolCore, block, borrowed, chain, eth) { - return multiMarketV1Tvl(balances, lendingPoolCore, block, borrowed, chain, eth); -} - -async function uniswapV1Market(balances, uniswapLendingPoolCore, block, borrowed, eth = ADDRESSES.null){ - const uniswapMarketTvlBalances = {} - await multiMarketV1Tvl( - uniswapMarketTvlBalances, - uniswapLendingPoolCore, - block, - borrowed - ); - - const uniswapv1Calls = Object.keys(uniswapMarketTvlBalances).map(t => ({ target: t })); - const [uniswapV1Tokens, uniswapV1EthBalance, uniswapV1Supplies] = await Promise.all([ - sdk.api.abi.multiCall({ - abi: "address:tokenAddress", - calls: uniswapv1Calls, - permitFailure: true, - block - }), - sdk.api.eth.getBalances({ - targets: Object.keys(uniswapMarketTvlBalances), - block - }), - sdk.api.abi.multiCall({ - abi: 'erc20:totalSupply', - calls: uniswapv1Calls, - permitFailure: true, - block - }), - ]) - - const uniswapV1TokenBalance = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - calls: uniswapV1Tokens.output.map(t => ({ - target: t.output, - params: t.input.target - })), - permitFailure: true, - block - }) - - // ...add v1 uniswap market TVL - Object.keys(uniswapMarketTvlBalances).forEach((address, idx) => { - const balance = uniswapMarketTvlBalances[address]; - if (uniswapV1Tokens.output[idx].success === false) { - sdk.util.sumSingleBalance(balances, address, balance) - } else { - const tokenBalance = BigNumber(uniswapV1TokenBalance.output[idx].output).times(balance).div(uniswapV1Supplies.output[idx].output) - const ethBalance = BigNumber(uniswapV1EthBalance.output[idx].balance).times(balance).div(uniswapV1Supplies.output[idx].output) - const token = uniswapV1Tokens.output[idx].output - sdk.util.sumSingleBalance(balances, token, tokenBalance.toFixed(0)) - sdk.util.sumSingleBalance(balances, eth, ethBalance.toFixed(0)) - } - }); - - return balances -} - -module.exports={ - singleAssetV1Market, - uniswapV1Market -} \ No newline at end of file diff --git a/projects/aavegotchi/index.js b/projects/aavegotchi/index.js deleted file mode 100644 index ba5ebf7e237..00000000000 --- a/projects/aavegotchi/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { request, gql } = require("graphql-request"); -const { getBlock } = require('../helper/http') - -const vaultContractETH = "0xFFE6280ae4E864D9aF836B562359FD828EcE8020"; -const tokensETH = [ - "0x3F382DbD960E3a9bbCeaE22651E88158d2791550", // GHST - ADDRESSES.ethereum.DAI, // DAI -]; - -const vaultContractsPolygon = [ - "0xb208f8BB431f580CC4b216826AFfB128cd1431aB", // vaultContract - "0x27DF5C6dcd360f372e23d5e63645eC0072D0C098", // rarityFarmingContract -]; - -const GHST_Polygon = "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7"; -const stkGHST_QUICKContract = "0xA02d547512Bb90002807499F05495Fe9C4C3943f"; -const GHST_pools2 = [ - "0xccb9d2100037f1253e6c1682adf7dc9944498aff", // WETH_GHST_UNIV2 - "0x8B1Fd78ad67c7da09B682c5392b65CA7CaA101B9", // GHST_QUICK_UNIV2 - "0x096C5CCb33cFc5732Bcd1f3195C13dBeFC4c82f4" // GHST_USDC_UNIV2 -] - -const ethTvl = async (api) => { - return api.sumTokens({ owner: vaultContractETH, tokens: tokensETH }) -} - - -const graphUrl = 'https://subgraph.satsuma-prod.com/tWYl5n5y04oz/aavegotchi/aavegotchi-core-matic/api' -const graphQuery = gql` -query GET_SUMMONED_GOTCHIS ($minGotchiId: Int, $block: Int) { - aavegotchis( - first: 1000 - skip: 0 - block: { number: $block } - where: { - status: "3" # summoned gotchis - gotchiId_gt: $minGotchiId - } - orderBy: gotchiId - orderDirection: asc - ) { - gotchiId - collateral - stakedAmount - } -}` -async function getGotchisCollateral(timestamp, block, api) { - const allGotchis = []; - let minGotchiId = 0; - while (minGotchiId !== -1) { - const { aavegotchis } = await request( - graphUrl, - graphQuery, - { minGotchiId, block } - ); - if (aavegotchis && aavegotchis.length > 0) { - minGotchiId = parseInt(aavegotchis[aavegotchis.length - 1].gotchiId); - allGotchis.push(...aavegotchis); - } else { - minGotchiId = -1; - } - } - allGotchis.map(i => api.add(i.collateral, i.stakedAmount)); -} - -const polygonTvl = async (api) => { - const block = await getBlock(api.timestamp, 'polygon', { polygon: api.block }) - 500 - - await api.sumTokens({ owners: vaultContractsPolygon, tokens: [GHST_Polygon] }) - await getGotchisCollateral(api.timestamp, block, api); -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - polygon: { - staking: staking(stkGHST_QUICKContract, GHST_Polygon), - tvl: polygonTvl, - pool2: staking([stkGHST_QUICKContract], GHST_pools2) - }, - methodology: - `We count liquidity on Vaults from ETHEREUM and Polygon chains through Vault Contracts; - On Rarity Farming, Staking and Pool2s parts on Polygon chain through their Contrats`, - hallmarks: [ - [1623769208, "Rarity Farming S1 Final Round"], - [1638885512, "Rarity Farming S2 Final Round"], - [1650549722, "Rarity Farming S3 Final Round"], - ], -}; diff --git a/projects/abacus/index.js b/projects/abacus/index.js deleted file mode 100644 index cd42e3ee9f0..00000000000 --- a/projects/abacus/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const wildCreditABI = require('../wildcredit/abi.json'); - -const config = { - arbitrum: { strategy: '0xB4E291f443f51D80186dd3EE0Af7F4a4E6e90804', veToken: '0xAAA343032aA79eE9a6897Dab03bef967c3289a06', token: '0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418' }, - avax: { strategy: '0xedEd6a22bf714d4B19b7e7bC1CA0BCF88956751c', veToken: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', token: '0xaaab9d12a30504559b0c5a9a5977fee4a6081c6b' }, - bsc: { strategy: '0x37e46C030e0d843b39F692c9108E54945F4CCCf7', veToken: '0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D', token: '0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11' }, - polygon: { strategy: '0x32dAc1B8AD93b53F549D6555e01c35dCC50b6229', veToken: '0xB419cE2ea99f356BaE0caC47282B9409E38200fa', token: '0xBFA35599c7AEbb0dAcE9b5aa3ca5f2a79624D8Eb' }, - mantle: { strategy: '0xCaAF554900E33ae5DBc66ae9f8ADc3049B7D31dB', veToken: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', token: '0xC1E0C8C30F251A07a894609616580ad2CEb547F2' }, - scroll: { strategy: '0xDDFc6B230656010f314F2F659eC8ff33FaB7A9Db', veToken: '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F', token: '0xAAAE8378809bb8815c08D3C59Eb0c7D1529aD769' }, -} - -Object.keys(config).forEach(chain => { - const { strategy, veToken, token, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const nftPositions = await api.call({ abi: 'erc20:balanceOf', target: veToken, params: strategy }) - const positionIds = await api.multiCall({ - abi: wildCreditABI.tokenOfOwnerByIndex, target: veToken, - calls: Array(Number(nftPositions)).fill(0).map((_, index) => ({ params: [strategy, index] })) - }) - const locked = await api.multiCall({ abi: 'function locked(uint256) view returns (uint256 amount, uint256 end)', calls: positionIds, target: veToken }) - locked.forEach(i => api.add(token, i.amount)) - } - } -}) \ No newline at end of file diff --git a/projects/abc-pool/index.js b/projects/abc-pool/index.js deleted file mode 100644 index 7f61095bd77..00000000000 --- a/projects/abc-pool/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const PoSPoolProxy1967_core = "cfx:type.contract:accpx9uxky39pg1hzav757vdej95w1kbcp13d0hvm7"; -const PoSPoolProxy1967_espace = "0xb6eb7aa86f3886b6edc0fc1c826221b1fb26e437"; -const core_rpc = "https://main.confluxrpc.com"; -const espace_rpc = "https://evm.confluxrpc.com"; - -const poolSummaryResponse = (rpc, method, contract, state) => { - return fetch(rpc, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - jsonrpc: '2.0', - method: method, - params: [{ - to: contract, - data: '0x7571fcf6' // poolSummary() in keccak256 - }, state], - id: 1 - }) - }) - .then(res => res.json()) - .then(res => res.result) -} - - -async function tvl(api) { - // this result has to be multiplied by 1000, - // as you can stake minimum 1000 tokens - const core_poolSummaryResponse = await poolSummaryResponse( - core_rpc, - 'cfx_call', - PoSPoolProxy1967_core, - 'latest_state' - ) - const espace_poolSummaryResponse = await poolSummaryResponse( - espace_rpc, - 'eth_call', - PoSPoolProxy1967_espace, - 'latest' - ) - // the result returns 3 values, we only need the first one - // every value is 32 bytes long, so we slice the first 32 bytes ("0x" + 64 characters) - const core_cfxTVL = parseInt(core_poolSummaryResponse.slice(2, 66), 16) - const espace_cfxTVL = parseInt(espace_poolSummaryResponse.slice(2, 66), 16) - - return { - 'conflux-token': (core_cfxTVL + espace_cfxTVL) * 1000 - } -} - -module.exports = { - methodology: 'Calls poolSummary() in the proxy contract. The result is multiplied by 1000, as you can stake minimum 1000 CFX.', - conflux: { - tvl - } -}; \ No newline at end of file diff --git a/projects/abelfinance/index.js b/projects/abelfinance/index.js deleted file mode 100644 index 77ca321e101..00000000000 --- a/projects/abelfinance/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { getResources, } = require("../helper/chain/aptos"); - -let resourcesCache - -async function _getResources() { - if (!resourcesCache) resourcesCache = getResources("0xc0188ad3f42e66b5bd3596e642b8f72749b67d84e6349ce325b27117a9406bdf") - return resourcesCache -} -const extractCoinAddress = (str) => str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); -const reserveContrainerFilter = (i) => i.type.includes("0xc0188ad3f42e66b5bd3596e642b8f72749b67d84e6349ce325b27117a9406bdf::acoin::ACoinInfo") - -module.exports = { - timetravel: false, - methodology: - "Counts the lamports in each coin container in the Aries contract account.", - aptos: { - tvl: async (api) => { - const data = await _getResources() - const coinContainers = data.filter(reserveContrainerFilter) - .map((i) => ({ - lamports: i.data.total_supply - i.data.total_borrows, - tokenAddress: extractCoinAddress(i.type), - })); - - coinContainers.forEach(({ lamports, tokenAddress }) => { - api.add(tokenAddress, lamports); - }); - }, - borrowed: async (api) => { - const data = await _getResources() - const coinContainers = data.filter(reserveContrainerFilter) - .map((i) => ({ - lamports: i.data.total_borrows, - tokenAddress: extractCoinAddress(i.type), - })); - - coinContainers.forEach(({ lamports, tokenAddress }) => { - api.add(tokenAddress, lamports); - }); - }, - }, -}; diff --git a/projects/abex-finance/index.js b/projects/abex-finance/index.js deleted file mode 100644 index 1552c03a435..00000000000 --- a/projects/abex-finance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const DEPOSIT_VAULT_REGISTRY = - "0x3c6595e543c4766dd63b5b2fa918516bac2920bc1944da068be031dced46a18d"; - -async function tvl(api) { - const depositVaultFields = await sui.getDynamicFieldObjects({ - parent: DEPOSIT_VAULT_REGISTRY, - }); - - const depositVaultIds = depositVaultFields.map((item) => item.fields.id.id); - - const depositVaults = await sui.getObjects(depositVaultIds); - - depositVaults.forEach(({ type, fields: { value: { fields }} }) => { - const splitPieces = type.split("<") - const coin = splitPieces[splitPieces.length - 1].replace(">>", "") - api.add(coin, fields.liquidity) - api.add(coin, fields.reserved_amount) - }); -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; diff --git a/projects/aboard-exchange/index.js b/projects/aboard-exchange/index.js deleted file mode 100644 index ea967bb16e2..00000000000 --- a/projects/aboard-exchange/index.js +++ /dev/null @@ -1,55 +0,0 @@ -//20230428 initial release: simple and clear -//20230606 update: add chain: zkSync Era -//20240321 update: add chain: scroll, base, mantle, manta, polygon_zkevm -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - methodology: "TVL is equal to users' deposits minus withdrawals", - start: '2022-01-08', // Jan-08-2022 07:00:00 AM +UTC -} - -const config = { - arbitrum: { owner: '0x7a08b29A7Ad4A19A5ECa0c82F5F082872488D135', tokens: [ - ADDRESSES.arbitrum.USDC, // USDC.e - ADDRESSES.arbitrum.USDC_CIRCLE, // USDC - ADDRESSES.null, // ETH - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.arbitrum.WBTC, // WBTC - ] }, - avax: { owner: '0xd8b0D18faE7eA29F2AD95d01FFb479E0021a9A5e', tokens: [ - ADDRESSES.avax.USDC, // USDC - ADDRESSES.null, // AVAX - ADDRESSES.avax.BTC_b, // BTC.b - ADDRESSES.avax.WETH_e, // WETH.e - ADDRESSES.avax.USDt, // USDt - ] }, - era: { owner: '0xa1795B95C543428AFf866dA613e43895457bf1C1', tokens: [ - ADDRESSES.era.USDC, // USDC - ADDRESSES.null, // ETH - ] }, - scroll: { owner: '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F', tokens: [ - ADDRESSES.scroll.USDC, // USDC - ADDRESSES.null, // ETH - ] }, - base: { owner: '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F', tokens: [ - ADDRESSES.base.USDC, // USDC - ADDRESSES.null, // ETH - ] }, - mantle: { owner: '0x8712FA9569658c27556d95C820f775939513faEf', tokens: [ - ADDRESSES.mantle.USDC, // USDC - ] }, - manta: { owner: '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F', tokens: [ - ADDRESSES.manta.USDC, // USDC - "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5", // MANTA - ADDRESSES.berachain.STONE, // STONE - ] }, - polygon_zkevm: { owner: '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F', tokens: [ - ADDRESSES.polygon_zkevm.USDC, // USDC - ADDRESSES.polygon_zkevm.USDC_CIRCLE, //USDC.E - ] }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: sumTokensExport(config[chain]) } -}) \ No newline at end of file diff --git a/projects/abracadabra/abi.json b/projects/abracadabra/abi.json deleted file mode 100644 index c6f7105d2f7..00000000000 --- a/projects/abracadabra/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "balanceOf": "function balanceOf(address, address) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/abracadabra/api.js b/projects/abracadabra/api.js deleted file mode 100644 index bd63efd5b30..00000000000 --- a/projects/abracadabra/api.js +++ /dev/null @@ -1,30 +0,0 @@ -const {fetchURL} = require('../helper/utils') - -const endpoint = "https://analytics.abracadabra.money/api/statistic/tvl" - -const chainIds = { - ethereum: 1, - //bsc: 56, - fantom: 250, - arbitrum: 42161, - avax: 43114 -} - -function chainTvl(chain){ - return async()=>{ - const data = await fetchURL(endpoint) - return data.data.networks[chainIds[chain]] - } -} - -module.exports.misrepresentedTokens = true; -module.exports.hallmarks = [ - [1651881600, "UST depeg"], - [1643245200, "0xSifu revealed as QuadrigaCX founder"], - [1667826000, "FTX collapse, Alameda repays FTT loans"], - ] - - -Object.keys(chainIds).forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } - }) \ No newline at end of file diff --git a/projects/abracadabra/index.js b/projects/abracadabra/index.js deleted file mode 100644 index 0ac6eaf5d6d..00000000000 --- a/projects/abracadabra/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const marketsJSON = require('./market.json'); -const abi = require('./abi.json'); - -// -------------------------- -// cvx3pool & yvcrvIB tokens -// are not being unwrapped -// on eth (~$169M tvl) -// -------------------------- -const bentoBoxAddresses = { - "arbitrum": ["0x74c764D41B77DBbb4fe771daB1939B00b146894A", "0x7c8fef8ea9b1fe46a7689bfb8149341c90431d38"], - "avax": ["0xf4F46382C2bE1603Dc817551Ff9A7b333Ed1D18f", "0x1fC83f75499b7620d53757f0b01E2ae626aAE530"], - "blast": ["0xC8f5Eb8A632f9600D1c7BC91e97dAD5f8B1e3748"], - "bsc": ["0x090185f2135308BaD17527004364eBcC2D37e5F6"], - "ethereum": ["0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", "0xd96f48665a1410C0cd669A88898ecA36B9Fc2cce"], - "fantom": ["0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", "0x74A0BcA2eeEdf8883cb91E37e9ff49430f20a616"], - "kava": ["0x630fc1758de85c566bdec1d75a894794e1819d7e"], - "optimism": ["0xa93c81f564579381116ee3e007c9fcfd2eba1723"], -}; - -const underlyingTokens = { - arbitrum: { - "0x3477Df28ce70Cecf61fFfa7a95be4BEC3B3c7e75": "0x5402B5F40310bDED796c7D0F3FF6683f5C0cFfdf", - }, - avax: {}, - blast: {}, - bsc: {}, - ethereum: { - "0x9447c1413DA928aF354A114954BFc9E6114c5646": "0x903C9974aAA431A765e60bC07aF45f0A1B3b61fb", - "0x4985cc58C9004772c225aEC9C36Cc9A56EcC8c20": "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - }, - fantom: {}, - kava: {}, - optimism: {}, -}; - -async function tvl(api) { - const { chain } = api - const marketsArray = []; - - for (const [marketContract, lockedToken] of Object.entries(marketsJSON[chain])) - marketsArray.push([lockedToken, marketContract]); - - - const calls = bentoBoxAddresses[chain].map(bentoBoxAddress => marketsArray.map((market) => ({ - target: bentoBoxAddress, - params: market - }))).flat() - const tokens = bentoBoxAddresses[chain].map(_ => - marketsArray.map(([lockedToken]) => underlyingTokens[chain][lockedToken] ?? lockedToken) - ).flat() - const bals = await api.multiCall({ calls, abi: abi.balanceOf, }) - api.addTokens(tokens, bals) -} - -const chains = ['arbitrum', 'avax', 'blast', 'bsc', 'ethereum', 'fantom', 'kava', 'optimism']; -chains.forEach(chain => module.exports[chain] = { tvl }) - -module.exports.hallmarks = [ - [1651881600, "UST depeg"], - [1643245200, "0xSifu revealed as QuadrigaCX founder"], - [1667826000, "FTX collapse, Alameda repays FTT loans"], -] diff --git a/projects/abracadabra/market.json b/projects/abracadabra/market.json deleted file mode 100644 index dd0f5d0a279..00000000000 --- a/projects/abracadabra/market.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "arbitrum": { - "0x5698135CA439f21a57bDdbe8b582C62f090406D5": "0x3477Df28ce70Cecf61fFfa7a95be4BEC3B3c7e75", - "0x726413d7402fF180609d0EBc79506df8633701B1": "0x85667409a723684Fe1e57Dd1ABDe8D88C2f54214", - "0xC89958B03A55B5de2221aCB25B58B89A000215E6": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - "0x4F9737E994da9811B8830775Fd73E2F1C8e40741": "0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407", - "0xD7659D913430945600dfe875434B6d80646d552A": "0x47c031236e19d024b42f8AE6780E44A573170703", - "0x2b02bBeAb8eCAb792d3F4DDA7a76f63Aa21934FA": "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", - "0x7962ACFcfc2ccEBC810045391D60040F635404fb": "0x09400D9DB990D5ed3f35D7be61DfAEB900Af03C9", - "0x66805F6e719d7e67D46e8b2501C1237980996C6a": "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", - "0x49De724D7125641F56312EBBcbf48Ef107c8FA57": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", - "0x780db9770dDc236fd659A39430A8a7cC07D0C320": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - "0x6B04C535C852AD19345571247ee12B5BF23dAcB6": "0x6985884C4392D348587B19cb9eAAf157F13271cd", - "0xFCE0b2fe7d7d5057C82A896e4D8EC0e4b813f71f": "0x58538e6A46E07434d7E7375Bc268D3cb839C0133", - "0x9fF8b4C842e4a95dAB5089781427c836DAE94831": "0x7C11F78Ce78768518D743E81Fdfa2F860C6b9A77", - "0x625Fe79547828b1B54467E5Ed822a9A8a074bD61": "0x450bb6774Dd8a756274E0ab4107953259d2ac541" - }, - "avax": { - "0x35fA7A723B3B39f15623Ff1Eb26D8701E7D6bB21": "0x0da67235dD5787D67955420C84ca1cEcd4E5Bb3b", - "0x3b63f81Ad1fc724E44330b4cf5b5B6e355AD964B": "0x57319d41F71E81F3c65F2a47CA4e001EbAFd4F33", - "0x0a1e6a80E93e62Bd0D3D3BFcF4c362C40FB1cF3D": "0xeD8CBD9F0cE3C6986b22002F03c6475CEb7a6256", - "0x95cCe62C3eCD9A33090bBf8a9eAC50b699B54210": "0xA389f9430876455C36478DeEa9769B7Ca4E3DDB1", - "0x3cfed0439ab822530b1ffbd19536d897ef30d2a2": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", - "0xAcc6821d0F368b02d223158F8aDA4824dA9f28E3": "0xcBb424fd93cDeC0EF330d8A8C985E8b147F62339", - "0x2450Bf8e625e98e14884355205af6F97E3E68d07": "0x781655d802670bbA3c89aeBaaEa59D3182fD755D", - "0x56984F04d2d04B2F63403f0EbeDD3487716bA49d": "0x0da67235dD5787D67955420C84ca1cEcd4E5Bb3b" - }, - "blast": { - "0x79e8CAd80E2aA49A246B789584C45aAB1CFe402e": "0x4300000000000000000000000000000000000004" - }, - "bsc": { - "0x692CF15F80415D83E8c0e139cAbcDA67fcc12C90": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - "0xF8049467F3A9D50176f4816b20cDdd9bB8a93319": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82" - }, - "ethereum": { - "0x53375adD9D2dFE19398eD65BAaEFfe622760A9A6": "0x5faF6a2D186448Dfa667c51CB3D695c7A6E52d8E", - "0x46f54d434063e5F1a2b2CC6d9AAa657b1B9ff82c": "0x9447c1413DA928aF354A114954BFc9E6114c5646", - "0x98a84eff6e008c5ed0289655ccdca899bcb6b99f": "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272", - "0x9617b633EF905860D919b88E1d9d9a6191795341": "0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9", - "0x289424aDD4A1A503870EB475FD8bF1D586b134ED": "0x4985cc58C9004772c225aEC9C36Cc9A56EcC8c20", - "0x207763511da879a900973A5E092382117C3c1588": "0xD533a949740bb3306d119CC777fa900bA034cd52", - "0x1062eB452f8C7A94276437ec1F4aAca9b1495B72": "0x38EA452219524Bb87e18dE1C24D3bB59510BD783", - "0x003d5a75d284824af736df51933be522de9eed0f": "0xCa76543Cf381ebBB277bE79574059e32108e3E65", - "0x7259e152103756e1616A77Ae982353c3751A6a90": "0x8078198Fc424986ae89Ce4a910Fc109587b6aBF3", - "0xc1879bf24917ebE531FbAA20b0D05Da027B592ce": "0x32353A6C91143bfd6C7d363B546e62a9A2489A20", - "0x252dCf1B621Cc53bc22C256255d2bE5C8c32EaE4": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", - "0x05500e2ee779329698df35760bedcaac046e7c27": "0x4E15361FD6b4BB609Fa63C81A2be19d873717870", - "0x0bca8ebcb26502b013493bf8fe53aa2b1ed401c1": "0xdCD90C7f6324cfa40d7169ef80b12031770B4325", - "0x390Db10e65b5ab920C19149C919D970ad9d18A41": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "0x7Ce7D9ED62B9A6c5aCe1c6Ec9aeb115FA3064757": "0xdA816459F1AB5631232FE5e97a05BBBb94970c95", - "0xce450a23378859fB5157F4C4cCCAf48faA30865B": "0x27b7b1ad7288079A66d12350c828D3C00A6F07d7", - "0x6Ff9061bB8f97d948942cEF376d98b51fA38B91f": "0xa9fE4601811213c340e850ea305481afF02f5b28", - "0xFFbF4892822e0d552CFF317F65e1eE7b5D3d9aE6": "0xE14d13d8B3b85aF791b2AADD661cDBd5E6097Db1", - "0xbc36FdE44A7FD8f545d459452EF9539d7A14dd63": "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD", - "0x8227965A7f42956549aFaEc319F4E444aa438Df5": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", - "0x40d95C4b34127CF43438a963e7C066156C5b87a3": "0x7Da96a3891Add058AdA2E826306D812C638D87a7", - "0xbb02A884621FB8F5BFd263A67F58B65df5b090f3": "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272", - "0xed510639E1b07c9145CD570F8Dd0CA885F760E09": "0xa258C4606Ca8206D8aA700cE2143D7db854D168c", - "0x6371EfE5CD6e3d2d7C477935b7669401143b7985": "0xd92494CB921E5C0d3A39eA88d0147bbd82E51008", - "0x7b7473a76d6ae86ce19f7352a1e89f6c9dc39020": "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", - "0xc6B2b3fE7c3D7a6f823D9106E22e66660709001e": "0x38EA452219524Bb87e18dE1C24D3bB59510BD783", - "0xd31E19A0574dBF09310c3B06f3416661B4Dc7324": "0xdf0770dF86a8034b3EFEf0A1Bb3c889B8332FF56", - "0xCfc571f3203756319c231d3Bc643Cee807E74636": "0x090185f2135308BaD17527004364eBcC2D37e5F6", - "0xc319eea1e792577c319723b5e60a15da3857e7da": "0x26FA3fFFB6EfE8c1E69103aCb4044C26B9A106a9", - "0xf179fe36a36B32a4644587B8cdee7A23af98ed37": "0x1635b506a88fBF428465Ad65d00e8d6B6E5846C3", - "0x5ec47EE69BEde0b6C2A2fC0D9d094dF16C192498": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x59E9082E068Ddb27FC5eF1690F9a9f22B32e573f": "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD", - "0xC6D3b82f9774Db8F92095b5e4352a8bB8B0dC20d": "0x26FA3fFFB6EfE8c1E69103aCb4044C26B9A106a9", - "0x6bcd99D6009ac1666b58CB68fB4A50385945CDA2": "0x5f18C75AbDAe578b483E5F43f12a39cF75b973a9", - "0x7d8dF3E4D06B0e19960c19Ee673c0823BEB90815": "0xD533a949740bb3306d119CC777fa900bA034cd52", - "0x1062eb452f8c7a94276437ec1f4aaca9b1495b72": "0x38EA452219524Bb87e18dE1C24D3bB59510BD783", - "0x692887E8877C6Dd31593cda44c382DB5b289B684": "0xf35b31B941D94B249EaDED041DB1b05b7097fEb6", - "0x406b89138782851d3a8C04C743b010CEb0374352": "0xdCD90C7f6324cfa40d7169ef80b12031770B4325", - "0x85f60D3ea4E86Af43c9D4E9CC9095281fC25c405": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x00380CB5858664078F2289180CC32F74440AC923": "0x5C5b196aBE0d54485975D1Ec29617D42D9198326", - "0x38E7D1e4E2dE5b06b6fc9A91C2c37828854A41bb": "0x5C5b196aBE0d54485975D1Ec29617D42D9198326", - "0xE8ed7455fa1b2a3D8959cD2D59c7f136a45BF341": "0x73075fD1522893D9dC922991542f98F08F2c1C99" - }, - "fantom": { - "0xed745b045f9495b8bfc7b58eea8e0d0597884e12": "0x0DEC85e74A92c52b7F708c4B10207D9560CEFaf0", - "0xd4357d43545F793101b592bACaB89943DC89d11b": "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", - "0x4fdfFa59bf8dda3F4d5b38F260EAb8BFaC6d7bC1": "0x6f86e65b255c9111109d2D2325ca2dFc82456efc", - "0xa3Fc1B4b7f06c2391f7AD7D4795C1cD28A59917e": "0xa48d959AE2E88f1dAA7D5F611E01908106dE7598", - "0x8E45Af6743422e488aFAcDad842cE75A09eaEd34": "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", - "0x7208d9F9398D7b02C5C22c334c2a7A3A98c0A45d": "0xB32b31DfAfbD53E310390F641C7119b5B9Ea0488" - }, - "kava": { - "0x895731a0C3836a5534561268F15EBA377218651D": "0xaad094f6a75a14417d39f04e690fc216f080a41a", - "0x3CFf6F628Ebc88e167640966E67314Cf6466E6A8": "0x729d8855a1d21ab5f84db80e00759e7149936e30" - }, - "optimism": { - "0x68f498C230015254AFF0E1EB6F85Da558dFf2362": "0x6eb1709e0b562097bf1cc48bc6a378446c297c04" - } -} diff --git a/projects/abstraDex/index.js b/projects/abstraDex/index.js deleted file mode 100644 index 75dcb1d9baa..00000000000 --- a/projects/abstraDex/index.js +++ /dev/null @@ -1,23 +0,0 @@ - - - -const { getUniTVL } = require("../helper/unknownTokens"); - -const config = { - xlayer: '0xa7afb6163c331ddb0845843889d6f9544328846f', - zkfair: '0x174c4C03DfeA09682728A5959A253bf1F7C7766F', - zeta: '0x174c4C03DfeA09682728A5959A253bf1F7C7766F', - blast: '0xA7afB6163c331DDb0845843889D6f9544328846F', - cyeth: '0x174c4c03dfea09682728a5959a253bf1f7c7766f', - cronos_zkevm: '0x76D1fC018676f8A973474C24F40A2e14e401b770', - morph: '0x174c4C03DfeA09682728A5959A253bf1F7C7766F', -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true, }), } -}) - diff --git a/projects/abstract/index.js b/projects/abstract/index.js deleted file mode 100644 index 0e5a0e5c544..00000000000 --- a/projects/abstract/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 2741, }), - }, -} diff --git a/projects/acala-dex/api.js b/projects/acala-dex/api.js deleted file mode 100644 index 9f8f76e56fe..00000000000 --- a/projects/acala-dex/api.js +++ /dev/null @@ -1,6 +0,0 @@ - -const { dex } = require('../helper/acala/dex') - -module.exports = { - acala: { tvl: async () => dex('acala') }, -}; \ No newline at end of file diff --git a/projects/acala-dex/index.js b/projects/acala-dex/index.js deleted file mode 100644 index 8338d9f4404..00000000000 --- a/projects/acala-dex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("acala-dex", ['acala']), -} \ No newline at end of file diff --git a/projects/acala-euphrates/index.js b/projects/acala-euphrates/index.js deleted file mode 100644 index 15c7bd079c6..00000000000 --- a/projects/acala-euphrates/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const euphrates = '0x7Fe92EC600F15cD25253b421bc151c51b0276b7D'; -const ldotAddr = ADDRESSES.acala.LDOT; -const wtdotAddr = '0xe1bD4306A178f86a9214c39ABCD53D021bEDb0f9'; - -async function tvl(api) { - const [rate, wdotBal, ldotBal] = await Promise.all([ - api.call({ abi: 'uint256:withdrawRate', target: wtdotAddr }), - api.call({ abi: 'erc20:balanceOf', target: wtdotAddr, params: euphrates }), - api.call({ abi: 'erc20:balanceOf', target: ldotAddr, params: euphrates }), - ]) - api.add('liquid-staking-dot', ldotBal / 1e10, { skipChain: true }) - api.add('polkadot', wdotBal * rate / 1e28, { skipChain: true }) - return api.getBalances() -} - -module.exports = { - misrepresentedTokens: true, - start: '2023-09-25', - methodology: 'total ldot and tdot locked in the euphrates contract', - acala: { - tvl, - } -} \ No newline at end of file diff --git a/projects/acala-lcdot/api.js b/projects/acala-lcdot/api.js deleted file mode 100644 index 5ab57aa372f..00000000000 --- a/projects/acala-lcdot/api.js +++ /dev/null @@ -1,6 +0,0 @@ - -const { staking } = require('../helper/acala/lcdot') - -module.exports = { - acala: { tvl: async () => staking('acala') }, -}; \ No newline at end of file diff --git a/projects/acala-lcdot/index.js b/projects/acala-lcdot/index.js deleted file mode 100644 index 87259c05ca6..00000000000 --- a/projects/acala-lcdot/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("acala-lcdot", ['acala']), -} \ No newline at end of file diff --git a/projects/acala-lending/api.js b/projects/acala-lending/api.js deleted file mode 100644 index 31cfadcb4b0..00000000000 --- a/projects/acala-lending/api.js +++ /dev/null @@ -1,6 +0,0 @@ - -const { lending } = require('../helper/acala/lending') - -module.exports = { - acala: { tvl: async () => lending('acala') }, -}; \ No newline at end of file diff --git a/projects/acala-lending/index.js b/projects/acala-lending/index.js deleted file mode 100644 index 5be675453ce..00000000000 --- a/projects/acala-lending/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {getExports} = require('../helper/heroku-api') - -module.exports = { - hallmarks: [ - [1660521600, "aUSD exploit"] - ], - timetravel: false, - misrepresentedTokens: true, - ...getExports("acala-lending", ['acala']) -} \ No newline at end of file diff --git a/projects/acala-staking/api.js b/projects/acala-staking/api.js deleted file mode 100644 index 59fe09f2cac..00000000000 --- a/projects/acala-staking/api.js +++ /dev/null @@ -1,6 +0,0 @@ - -const { staking } = require('../helper/acala/liquidStaking') - -module.exports = { - acala: { tvl: async () => staking('acala') }, -}; \ No newline at end of file diff --git a/projects/acala-staking/index.js b/projects/acala-staking/index.js deleted file mode 100644 index d0601cacc09..00000000000 --- a/projects/acala-staking/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const {getExports} = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("acala-staking", ['acala']) -} \ No newline at end of file diff --git a/projects/access-protocol/index.js b/projects/access-protocol/index.js deleted file mode 100644 index de1f60c5106..00000000000 --- a/projects/access-protocol/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getMultipleAccounts, decodeAccount } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); - -async function staking(api) { - const programId = new PublicKey('6HW8dXjtiTGkD4jzXs7igdFmZExPpmwUrRN5195xGup') - const accountKey = getKey(programId); - const [account] = await getMultipleAccounts([accountKey]); - const decoded = decodeAccount('access', account); - api.add(decoded.tokenMint.toBase58(), decoded.totalStaked); -} - -const getKey = (address) => { - return PublicKey.findProgramAddressSync([address.toBuffer()], address)[0].toBase58(); -} - -module.exports = { - timetravel: false, - methodology: - "Uses the Access Protocol SDK to fetch the total supply of staked ACS tokens", - solana: { - tvl: async () => ({}), - staking, - }, -}; diff --git a/projects/accumulated-finance-lending/index.js b/projects/accumulated-finance-lending/index.js deleted file mode 100644 index 49873ed37d0..00000000000 --- a/projects/accumulated-finance-lending/index.js +++ /dev/null @@ -1,153 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const BigNumber = require('bignumber.js').default; -const {sumTokens2} = require('../helper/unwrapLPs'); - -const config = { - velas: [ - { - "velas": { - address: "0x0acbfff708c9d30684f620b2be23930284af12c5", - collateralToken: "0x8f0ecda9679ad16e30be3d83d183c482821f5325" - } - } - ], - "zeta": [ - { - "zeta": { - address: '0x9b694d0ed151374989a4ec71d8a14764ae47f89d', - collateralToken: '0x7ac168c81f4f3820fa3f22603ce5864d6ab3c547' - } - } - ], - "oasis": [ - { - "sapphire": { - address: '0xaf597bd499ded0575d1469f92a0472b4715f2b7e', - collateralToken: '0x3cabbe76ea8b4e7a2c0a69812cbe671800379ec8' - } - } - ], - "bitkub": [{ - "bitkub": { - address: "0xf38feedb0c85c1e1d6864c7513ac646d28bb0cfc", - collateralToken: '0x7ac168c81f4f3820fa3f22603ce5864d6ab3c547' - } - }], - "coti": [ - { - "coti": { - address: '0xc1641194a8a7ea9c19db00cd568f428f3e331740', - collateralToken: '0x4781f0c82dc3ab55d79bd3956689d1b65fbd23ad' - } - } - ], -}; - -function transformConfig(config) { - const result = {}; - Object.values(config).forEach(chainArray => { - chainArray.forEach(chainConfig => { - Object.entries(chainConfig).forEach(([chain, item]) => { - if (!result[chain]) result[chain] = []; - result[chain].push(item); - }); - }); - }); - return result; -} - -module.exports = { - methodology: "We aggregated lending and borrowing tokens issued by Accumulated Finance", -}; - -const transformedConfig = transformConfig(config); - -// ABI - -const totalAssetsABI = { - type: "function", - name: "totalAssets", - stateMutability: "view", - inputs: [], - outputs: [{name: "", type: "uint256", internalType: "uint256"}] -}; - -const totalCollateralABI = { - type: "function", - name: "totalCollateral", - stateMutability: "view", - inputs: [], - outputs: [{name: "", type: "uint256", internalType: "uint256"}] -}; - -const pricePerShareABI = { - type: "function", - name: "pricePerShare", - inputs: [], - outputs: [{name: "", type: "uint256", internalType: "uint256"}], - stateMutability: "view" -}; - -const totalDebtSharesABI = { - type: "function", - name: "totalDebtShares", - inputs: [], - outputs: [{name: "", type: "uint256", internalType: "uint256"}], - stateMutability: "view" -}; - -const getPricePerShareDebtABI - - = { - type: "function", - name: "getPricePerShareDebt", - inputs: [], - outputs: [{name: "", type: "uint256", internalType: "uint256"}], - stateMutability: "view" -}; - -async function fetchDebtInfo(api, address) { - return Promise.all([ - api.call({abi: totalDebtSharesABI, target: address}), - api.call({abi: getPricePerShareDebtABI, target: address}), - ]); -} - -Object.entries(transformedConfig).forEach(([chain, configs]) => { - module.exports[chain] = { - tvl: async (api) => { - await Promise.all(configs.map(async ({address, baseToken, collateralToken}) => { - const [ - totalCollateralsRaw, - totalAssetsRaw, - pricePerShareRaw, - [totalDebtSharesRaw, pricePerShareDebtRaw] - ] = await Promise.all([ - api.call({abi: totalCollateralABI, target: address}), - api.call({abi: totalAssetsABI, target: address}), - api.call({abi: pricePerShareABI, target: collateralToken}), - fetchDebtInfo(api, address) - ]); - const totalAssets = new BigNumber(totalAssetsRaw); - const totalCollateral = new BigNumber(totalCollateralsRaw); - const pricePerShare = new BigNumber(pricePerShareRaw); - const totalDebtShares = new BigNumber(totalDebtSharesRaw); - const pricePerShareDebt = new BigNumber(pricePerShareDebtRaw); - const borrowed = (totalDebtShares.times(pricePerShareDebt)).div(1e18); - const result = totalAssets.minus(borrowed).plus(totalCollateral.times(pricePerShare).div(1e18)); - api.add(baseToken ?? ADDRESSES.null, result.toFixed(0)); - })); - return sumTokens2({ api }); - }, - borrowed: async (api) => { - await Promise.all(configs.map(async ({address, baseToken}) => { - const [totalDebtSharesRaw, pricePerShareDebtRaw] = await fetchDebtInfo(api, address); - const totalDebtShares = new BigNumber(totalDebtSharesRaw); - const pricePerShareDebt = new BigNumber(pricePerShareDebtRaw); - const result = (totalDebtShares.times(pricePerShareDebt)).div(1e18); - api.add(baseToken ?? ADDRESSES.null, result.toFixed(0)); - })); - return sumTokens2({api}); - } - } -}) diff --git a/projects/accumulated-finance/index.js b/projects/accumulated-finance/index.js deleted file mode 100644 index 3f2bd94258e..00000000000 --- a/projects/accumulated-finance/index.js +++ /dev/null @@ -1,142 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - "accumulate": [ - { - "ethereum": { - "baseToken": "0xdf4ef6ee483953fe3b84abd08c6a060445c01170", - "LST": "0x7AC168c81F4F3820Fa3F22603ce5864D6aB3C547" - } - }, - { - "arbitrum": { - "baseToken": "0xdf4ef6ee483953fe3b84abd08c6a060445c01170", - "LST": "0x7AC168c81F4F3820Fa3F22603ce5864D6aB3C547" - }, - } - ], - "velas": [ - { - "velas": { - "LST": "0x3557371afed82dd683de278924bd0e1a790a3c49" - } - }, - { - "bsc": { - "baseToken": "0x8c543aed163909142695f2d2acd0d55791a9edb9", - "LST": "0xcba2aeEc821b0B119857a9aB39E09b034249681A" - }, - } - ], - "manta": [ - { - "manta": { - token: '0x95cef13441be50d20ca4558cc0a27b601ac544e5', - "LST": "0xcba2aeec821b0b119857a9ab39e09b034249681a" - } - } - ], - "zeta": [ - { - "zeta": { - "baseToken": '0xf091867ec603a6628ed83d274e835539d82e9cc8', - "LST": '0xcba2aeec821b0b119857a9ab39e09b034249681a' - } - }, - { - "bsc": { - "baseToken": "0xf091867ec603a6628ed83d274e835539d82e9cc8", - "LST": "0xcf123d8638266629fb02fc415ad47bd47de01a6b" - }, - }, - { - "ethereum": { - "baseToken": "0xf091867ec603a6628ed83d274e835539d82e9cc8", - "LST": "0xf38feedb0c85c1e1d6864c7513ac646d28bb0cfc" - } - }, - ], - "sei": [ - { - "sei": { - "LST": "0xcba2aeec821b0b119857a9ab39e09b034249681a" - }, - } - ], - "oasis": [ - { - "sapphire": { - "LST": "0xed57966f1566de1a90042d07403021ea52ad4724" - } - } - ], - "artela": [ - { - "artela": { - "LST": "0xcba2aeec821b0b119857a9ab39e09b034249681a" - }, - } - ], - "bitkub": [{ - "bitkub": { - "LST": "0xcba2aeec821b0b119857a9ab39e09b034249681a" - } - }], - "coti": [ - { - "coti": { - "baseToken": "0xddb3422497e61e13543bea06989c0789117555c5", - "LST": "0xcf1a40eff1a4d4c56dc4042a1ae93013d13c3217", - } - } - ], - "stETH": [ - { - "ethereum": { - "baseToken": ADDRESSES.ethereum.STETH, - "LST": "0x684d7fd1067ed8e9686e6fd764d048b9bf92dfa9" - } - }, - ] -} - -function transformConfig(config) { - const result = {}; - Object.values(config).forEach(chainArray => { - chainArray.forEach(chainConfig => { - Object.entries(chainConfig).forEach(([chain, { baseToken, LST, token }]) => { - if (!result[chain]) { - result[chain] = []; - } - result[chain].push({ - ...(baseToken && { baseToken }), - ...(token && { token }), - LST - }); - }); - }); - }) - return result; -} - -module.exports = { - methodology: - "We aggregated liquid staking tokens issued by Accumulated Finance", -} - -const transformedConfig = transformConfig(config); - -Object.entries(transformedConfig).forEach(([chain, configs]) => { - module.exports[chain] = { - tvl: async (api) => { - let totalSupply = 0; - for (const { LST, baseToken, token } of configs) { - const supply = await api.call({ abi: 'uint256:totalSupply', target: LST }); - totalSupply += parseInt(supply, 10); - api.add(token ?? baseToken ?? ADDRESSES.null, supply, { skipChain: !!baseToken }) - } - return sumTokens2({ api }) - }, - } -}) \ No newline at end of file diff --git a/projects/accumulator/index.js b/projects/accumulator/index.js deleted file mode 100644 index 4f13448db26..00000000000 --- a/projects/accumulator/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumUnknownTokens } = require('../helper/unknownTokens') - -const config = { - shimmer_evm: 'shimmer' -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - const chainKey = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const data = await getConfig('potluck-protocol', 'https://newapi.potluckprotocol.com/vaults') - const vaults = data.filter(i => i.chain === chainKey).map(i => i.earnedTokenAddress) - const tokens = await api.multiCall({ calls: vaults, abi: 'address:want'}) - const bals = await api.multiCall({ calls: vaults, abi: 'uint256:balance'}) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, resolveLP: true, useDefaultCoreAssets: true, lps: tokens, }) - } - } -}) diff --git a/projects/aceofbase/index.js b/projects/aceofbase/index.js deleted file mode 100644 index e4b08704a3f..00000000000 --- a/projects/aceofbase/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const ACE = "0xb1a45A38b88b2183f7523Db2E5E5CEa55b050958"; -const FACTORY = "0x46C6706E81CAD3173773c1ffb5D84C9eb652d570" - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs. We also have our native token $ACE staking.`, - base: { - tvl: dexTVL, - } -}; diff --git a/projects/acet/index.js b/projects/acet/index.js deleted file mode 100644 index 68378f60052..00000000000 --- a/projects/acet/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const stakingAccounts = [ - "0x64D2C3a33F5bc09Dc045f9A20fA4cA4f42215c0b", - "0xfb62ea552eeba8b00cc5db56ba8d7c50429c0001", - "0x38506a479E8959150466cE9253c19089fd0907D7", -]; - -const token = "0x9F3BCBE48E8b754F331Dfc694A894e8E686aC31D"; - -module.exports = { - bsc: { - tvl: async () => ({}), - staking: async (api) => { - return api.sumTokens({ - tokensAndOwners: stakingAccounts.map((account) => [token, account]), - }); - }, - }, -}; - \ No newline at end of file diff --git a/projects/acoconut/index.js b/projects/acoconut/index.js deleted file mode 100644 index 6a534fb4b67..00000000000 --- a/projects/acoconut/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const tokensInacBTC = [ - ADDRESSES.ethereum.WBTC, - '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D' -] - -const acBTCTokenHolder = '0x73FddFb941c11d16C827169Bb94aCC227841C396' - -const bscSingleTokens = [ - '0xcf8D1D3Fce7C2138F85889068e50F0e7a18b5321', //vBTC+ - '0x73FddFb941c11d16C827169Bb94aCC227841C396', //fBTCB+ - '0xD7806143A4206aa9A816b964e4c994F533b830b0', //acsBTCB+ - '0x02827D495B2bBe37e1C021eB91BCdCc92cD3b604', //autoBTC+ -] - -const btcb = 'bsc:' + ADDRESSES.bsc.BTCB - -async function eth(api) { - return api.sumTokens({ owner: acBTCTokenHolder, tokens: tokensInacBTC}) -} - -async function bsc(api) { - const tokens = await api.multiCall({ abi: 'address:token', calls: bscSingleTokens}) - return api.sumTokens({ tokensAndOwners2: [tokens, bscSingleTokens]}) -} - -module.exports = { - ethereum:{ - tvl: eth, - }, - bsc:{ - tvl: bsc - }, - start: '2020-09-15', // 09/16/2020 @ 12:00am (UTC+8) -}; diff --git a/projects/acred/abi.json b/projects/acred/abi.json deleted file mode 100644 index dde73ba4f9b..00000000000 --- a/projects/acred/abi.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "totalSupply": "function totalSupply() view returns (uint256)", - "name": "function name() view returns (string)", - "symbol": "function symbol() view returns (string)", - "decimals": "function decimals() view returns (uint8)", - "cap": "function cap() view returns (uint256)", - "totalIssued": "function totalIssued() view returns (uint256)", - "isPaused": "function isPaused() view returns (bool)", - "latestAnswer": "function latestAnswer() view returns (int256)", - "latestRoundData": "function latestRoundData() view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)", - "description": "function description() view returns (string)", - "priceDecimals": "function decimals() view returns (uint8)" -} diff --git a/projects/acred/index.js b/projects/acred/index.js deleted file mode 100644 index ed8422c9e66..00000000000 --- a/projects/acred/index.js +++ /dev/null @@ -1,114 +0,0 @@ -const abi = require('./abi.json'); -const { getTokenSupplies } = require('../helper/solana'); -const { getResource } = require('../helper/chain/aptos'); - -// ACRED token addresses for different chains -const ACRED_ADDRESSES = { - ethereum: { - token: '0x17418038ecF73BA4026c4f428547BF099706F27B', - priceFeed: '0xD6BcbbC87bFb6c8964dDc73DC3EaE6d08865d51C' - }, - avax: { - token: '0x7C64925002BFA705834B118a923E9911BeE32875', - priceFeed: null // Add price feed address when available - }, - polygon: { - token: '0xFCe60bBc52a5705CeC5B445501FBAf3274Dc43D0', - priceFeed: null // Add price feed address when available - }, - aptos: { - token: '0xe528f4df568eb9fff6398adc514bc9585fab397f478972bcbebf1e75dee40a88', - priceFeed: null // Add price feed address when available - }, - ink: { - token: '0x53Ad50D3B6FCaCB8965d3A49cB722917C7DAE1F3', - priceFeed: null // Add price feed address when available - }, - solana: { - token: 'FubtUcvhSCr3VPXEcxouoQjKQ7NWTCzXyECe76B7L3f8', - priceFeed: null // Add price feed address when available - } -}; - -// Always fetch price from Ethereum, regardless of current chain -async function getEthPriceFeed() { - try { - const priceData = await global.api.call({ - abi: abi.latestRoundData, - target: ACRED_ADDRESSES.ethereum.priceFeed, - chain: 'ethereum', - }); - const priceDecimals = await global.api.call({ - abi: abi.priceDecimals, - target: ACRED_ADDRESSES.ethereum.priceFeed, - chain: 'ethereum', - }); - const description = await global.api.call({ - abi: abi.description, - target: ACRED_ADDRESSES.ethereum.priceFeed, - chain: 'ethereum', - }); - console.log(`ACRED Price Feed Description: ${description}`); - console.log(`ACRED Latest Price: ${priceData.answer} (decimals: ${priceDecimals})`); - return { price: priceData.answer, priceDecimals }; - } catch (error) { - console.log('Error getting price data from Ethereum:', error.message); - return { price: null, priceDecimals: null }; - } -} - -async function tvl(api) { - const { chain } = api; - const chainAddresses = ACRED_ADDRESSES[chain]; - global.api = api; // for getEthPriceFeed - - if (!chainAddresses) { - console.log(`No ACRED addresses configured for chain: ${chain}`); - return api.getBalances(); - } - - // Always get price from Ethereum - const { price, priceDecimals } = await getEthPriceFeed(); - - // Handle Solana differently using getTokenSupplies - if (chain === 'solana') { - await getTokenSupplies([chainAddresses.token], { api }); - return api.getBalances(); - } - - // Handle Aptos using getResource for fungible asset supply - if (chain === 'aptos') { - try { - const resource = await getResource(chainAddresses.token, '0x1::fungible_asset::ConcurrentSupply', 'aptos'); - const totalSupply = resource.current.value; - api.add(chainAddresses.token, totalSupply); - } catch (e) { - console.log(`Aptos: Could not fetch resource for ${chainAddresses.token}:`, e.message); - // Optionally: api.add(chainAddresses.token, 0); - } - return api.getBalances(); - } - - // Get the total supply of ACRED tokens for EVM chains - const totalSupply = await api.call({ - abi: abi.totalSupply, - target: chainAddresses.token, - }); - - console.log(`ACRED Total Supply on ${chain}: ${totalSupply}`); - - // Add the total supply to the balances - api.add(chainAddresses.token, totalSupply); - - return api.getBalances(); -} - -module.exports = { - methodology: 'TVL is calculated as the total supply of ACRED tokens across all supported chains. Price data is retrieved from the Ethereum price feed contract and applied to all chains. ACRED is a multi-chain RWA token with a shared price/token across chains.', - ethereum: { tvl }, - avax: { tvl }, - polygon: { tvl }, - aptos: { tvl }, - ink: { tvl }, - solana: { tvl } -}; diff --git a/projects/across/abi.json b/projects/across/abi.json deleted file mode 100644 index 0b2a10a0db2..00000000000 --- a/projects/across/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "l1Token": "address:l1Token", - "pooledTokens": "function pooledTokens(address) view returns (address lpToken, bool isEnabled, uint32 lastLpFeeUpdate, int256 utilizedReserves, uint256 liquidReserves, uint256 undistributedLpFees)" -} \ No newline at end of file diff --git a/projects/across/index.js b/projects/across/index.js deleted file mode 100644 index 80ef76095f6..00000000000 --- a/projects/across/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { getLogs } = require('../helper/cache/getLogs') - - -const hubPoolAddress = "0xc186fA914353c44b2E33eBE05f21846F1048bEda" - -let pools = [ - // bridge pools - [ADDRESSES.ethereum.USDC, "0x256c8919ce1ab0e33974cf6aa9c71561ef3017b6"], - [ADDRESSES.ethereum.WETH, "0x7355efc63ae731f584380a9838292c7046c1e433"], - ["0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", "0xdfe0ec39291e3b60aca122908f86809c9ee64e90"], - ["0x3472A5A71965499acd81997a54BBA8D852C6E53d", "0x43298f9f91a4545df64748e78a2c777c580573d6"], - [ADDRESSES.ethereum.WBTC, "0x02fbb64517e1c6ed69a6faa3abf37db0482f1152"], - ["0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc", "0x4841572daa1f8e4ce0f62570877c2d0cc18c9535"], - [ADDRESSES.ethereum.DAI, "0x43f133fe6fdfa17c417695c476447dc2a449ba5b"], -] - -async function tvl(api) { - const v2Logs = await getLogs({ - api, - target: hubPoolAddress, - topic: "L1TokenEnabledForLiquidityProvision(address,address)", - fromBlock: 14819537, - eventAbi: 'event L1TokenEnabledForLiquidityProvision (address l1Token, address lpToken)', - }); - pools = pools.map(i => i.map(j => j.toLowerCase())) - v2Logs.map((log) => log.args).forEach(i => { - const pool = i[1].toLowerCase() - if (pools.some(i => i[1] === pool)) return; - pools.push([i[0], pool]) - }) - const supplies = await api.multiCall({ - abi: 'erc20:totalSupply', - calls: pools.map(i => i[1]), - }) - - const balances = {} - supplies.forEach((output, i) => sdk.util.sumSingleBalance(balances, pools[i][0], output, 'ethereum')) - return balances -} - -module.exports = { - ethereum: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/acryptos/index.js b/projects/acryptos/index.js deleted file mode 100644 index d611082ee1e..00000000000 --- a/projects/acryptos/index.js +++ /dev/null @@ -1,80 +0,0 @@ -const utils = require('../helper/utils'); -const { toUSDTBalances } = require('../helper/balances'); -let _response - - -function fetchallchain(chainId) { - return async () => { - if (!_response) _response = utils.fetchURL('https://api.unrekt.net/api/v2/acryptos-asset') - const response = await _response; - - let tvl = 0; - const total_tvl = response.data.acryptos.total_tvl; - - tvl = total_tvl[chainId]; - return toUSDTBalances(tvl); - } -} - - - -module.exports = { - timetravel: false, - methodology: "Acryptos TVL is the USD value of token within the vault and farm contracts", - misrepresentedTokens: true, - ethereum: { - tvl: fetchallchain(1), - }, - optimism: { - tvl: fetchallchain(10), - }, - cronos: { - tvl: fetchallchain(25), - }, - bsc: { - tvl: fetchallchain(56), - }, - xdai: { - tvl: fetchallchain(100), - }, - polygon: { - tvl: fetchallchain(137), - }, - fantom: { - tvl: fetchallchain(250), - }, - astar: { - tvl: fetchallchain(592), - }, - moonbeam: { - tvl: fetchallchain(1284), - }, - moonriver: { - tvl: fetchallchain(1285), - }, - kava: { - tvl: fetchallchain(2222), - }, - canto: { - tvl: fetchallchain(7700), - }, - arbitrum:{ - tvl: fetchallchain(42161), - }, - avax:{ - tvl: fetchallchain(43114), - }, - base:{ - tvl: fetchallchain(8453), - }, - linea:{ - tvl: fetchallchain(59144), - }, - harmony: { - tvl: fetchallchain(1666600000), - } - - -} - - diff --git a/projects/acumen/index.js b/projects/acumen/index.js deleted file mode 100644 index 74b1ce4064c..00000000000 --- a/projects/acumen/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - timetravel: false, - solana: { tvl: () => ({}) }, - hallmarks: [ - ['2022-12-12', 'Product is deprecated'], - ], - deadFrom: '2022-12-12', - methodology: `Product is deprecated. More information: https://acumenofficial.medium.com/acumen-stable-dapp-update-7e96333e9318`, -} \ No newline at end of file diff --git a/projects/ad-astra/index.js b/projects/ad-astra/index.js deleted file mode 100644 index 5572fdfb0cf..00000000000 --- a/projects/ad-astra/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports={ - ethereum:{ - tvl: sumTokensExport({ - owner: '0x92a26975433a61cf1134802586aa669bab8b69f3', - tokens: [ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.BUSD, '0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c', ], - logCalls: true - }) - } -} \ No newline at end of file diff --git a/projects/adamantfinance/index.js b/projects/adamantfinance/index.js deleted file mode 100644 index d36fbf527dc..00000000000 --- a/projects/adamantfinance/index.js +++ /dev/null @@ -1,112 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require("../helper/staking"); -const { getConfig } = require('../helper/cache') -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { staking: stakingUnknown, } = require("../helper/unknownTokens"); - -const vaultsUrl = { - polygon: - "https://raw.githubusercontent.com/eepdev/vaults/main/current_vaults.json", - arbitrum: - "https://raw.githubusercontent.com/eepdev/vaults/main/arbitrum_vaults.json", - cronos: - "https://raw.githubusercontent.com/eepdev/vaults/main/cronos_vaults.json", - fraxtal: - "https://raw.githubusercontent.com/eepdev/vaults/main/current_vaults_all_chains.json" -}; - -const allVaultsUrl = "https://raw.githubusercontent.com/eepdev/vaults/main/current_vaults_all_chains.json"; - -/*** Polygon Addresses ***/ -const stakingContracts_polygon = [ - "0x920f22E1e5da04504b765F8110ab96A20E6408Bd", -]; - -const vaultAddresses_polygon = ["0xF7661EE874Ec599c2B450e0Df5c40CE823FEf9d3"]; //ADDY/WETH staking contract - -const lpAddresses_polygon = ["0xa5bf14bb945297447fe96f6cd1b31b40d31175cb"]; //ADDY/WETH - -const ADDY = "0xc3fdbadc7c795ef1d6ba111e06ff8f16a20ea539"; -const adMESH = "0x459dc0fB79653A48469F2C3c375d0A522750Dd40"; - -/*** Arbitrum Addresses ***/ -const stakingContracts_Arbitrum = [ - "0x097b15dC3Bcfa7D08ea246C09B6A9a778e5b007B", - "0xc5fFd083B983AAF823a9b485b207F898ed2f32DC", - "0x9d5d0cb1B1210d4bf0e0FdCC6aCA1583fA48f0fD", -]; - -const ARBY = ADDRESSES.arbitrum.ARBY - -/*** Cronos Addresses ***/ -const stakingContracts_cronos = [ - "0x3f04D6bD50A79c854EF42965471D34E389eB5CDd", - "0xD4bcCf04a7CA546D3cfC46205AA7C58EB98c7495", - "0x323663B759567BAf744C182634585F7164c3c442", -]; -const CADDY = ADDRESSES.arbitrum.ARBY; - -const lpAddresses_cronos = [ - "0x332937463df26f46a1a715a41205765774beef80", //CADDY-WCRO Cronos - "0x2a008ef8ec3ef6b03eff10811054e989aad1cf71", //CADDY-WCRO Cronos -]; - - -async function pool2Polygon(api) { - const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: vaultAddresses_polygon }) - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: vaultAddresses_polygon }) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true }) -} - -const blacklistedTokens = [ - ...lpAddresses_polygon, - ...lpAddresses_cronos, -] - -const blacklistedOwners = new Set([ - adMESH, - "0x01d2833e6d86D5Ad8380044DEb2cA520fc60D326", //adMESH related token/deposit - "0xbe6aa0AF32984fE3f65a73071DECC09Ab607e310", //adMESH related token/deposit -].map(i => i.toLowerCase())) - -const tvl = async (api) => { - let info = await getConfig('adamant-fi/allVaults', allVaultsUrl) - if (api.chain === 'arbitrum') { - info = await getConfig('adamant-fi/arbitrumVaults', vaultsUrl.arbitrum) - - info = info.filter((vault) => vault.platform !== "dodo" && !blacklistedOwners.has(vault.lpAddress.toLowerCase()) - ) - } else { - info = info - .filter((vault) => vault.platform !== "dodo" && vault.chainId == api.chainId && !blacklistedOwners.has(vault.lpAddress.toLowerCase())) - } - - - const tokens = info.map(i => i.lpAddress) - const vaults = info.map(i => i.vaultAddress) - const bals = await api.multiCall({ abi: "uint256:balance", calls: vaults, permitFailure: true, }) - api.addTokens(tokens, bals.map(i => i ?? 0)) - for (const token of blacklistedTokens) - api.removeTokenBalance(token) - return sumTokens2({ api, resolveLP: true }) -}; - -module.exports = { - polygon: { - staking: stakings(stakingContracts_polygon, ADDY), - pool2: pool2Polygon, - tvl, - }, - arbitrum: { - staking: stakings(stakingContracts_Arbitrum, ARBY), - tvl, - }, - cronos: { - staking: stakingUnknown({ owners: stakingContracts_cronos, tokens: [CADDY], chain: 'cronos', lps: lpAddresses_cronos, useDefaultCoreAssets: true }), - tvl, - }, - fraxtal: { tvl, }, - methodology: - "The current vaults on Adamant Finance are found on the Github. Once we have the vaults, we filter out the LP addresses of each vault and unwrap the LPs so that each token can be accounted for. Coingecko is used to price the tokens and the sum of all tokens is provided as the TVL", -}; diff --git a/projects/adao/index.js b/projects/adao/index.js deleted file mode 100644 index 80914fb6696..00000000000 --- a/projects/adao/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const ADAOStakingContract = "0x3BFcAE71e7d5ebC1e18313CeCEbCaD8239aA386c"; - -module.exports = { - methodology: - "A-DAO will be based on dApp staking of Astar Network. Users will get some of the developer rewards while participating and gaining basic rewards. At present, A-DAO divides the developer rewards into: Revenue Reward, On-chain Treasury, Incubation Fund, any rewards of which can be adjusted by DAO governance.", - astar: { - tvl: sumTokensExport({ owners: [ADAOStakingContract], tokens: [nullAddress] }), - }, - // deadFrom: '2023-04-13', -}; diff --git a/projects/adaswap/index.js b/projects/adaswap/index.js deleted file mode 100644 index 0edff47d152..00000000000 --- a/projects/adaswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xe07C22C184ca252A525511B798BB8Ce96abDCc5b) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - milkomeda: { - tvl: getUniTVL({ factory: '0xe07C22C184ca252A525511B798BB8Ce96abDCc5b', useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/adaxPro/index.js b/projects/adaxPro/index.js deleted file mode 100644 index 9f45a7461ab..00000000000 --- a/projects/adaxPro/index.js +++ /dev/null @@ -1,12 +0,0 @@ - -module.exports={ - methodology: "Data is retrieved from the api at https://amm-api.adax.pro/", - timetravel: false, // but there's historical data, this can be changed! - cardano: { - tvl: () => ({}), - }, - hallmarks: [ - ['2023-08-29', 'Website offline! Rug pull?'], - ], - deadFrom: '2023-08-29' -} \ No newline at end of file diff --git a/projects/adenafinance/index.js b/projects/adenafinance/index.js deleted file mode 100644 index a7080d65794..00000000000 --- a/projects/adenafinance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - harmony: { - tvl: getUniTVL({ factory: '0x44485473431fAF6EFA11D346d1057182d2A0A290', useDefaultCoreAssets: true }), - } -} diff --git a/projects/adex/index.js b/projects/adex/index.js deleted file mode 100644 index 72d49fdbbbf..00000000000 --- a/projects/adex/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// A-DEX -// https://a-dex.io -async function eos() { - const accounts = ["swap.adex"]; - const tokens = [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], - ]; - return await get_account_tvl(accounts, tokens); -} - -// A-DEX -// https://wax.a-dex.io -async function wax() { - const accounts = ["swap.adex"]; - const tokens = [ - ["eosio.token", "WAX", "wax"], - ["alien.worlds", "TLM", "alien-worlds"], - ["usdt.alcor", "USDT", "usdt-alcor"], - ["token.fusion", "LSWAX", "waxfusion-staked-wax"], - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `A-DEX TVL is achieved by querying token balances from swap smart contract.`, - eos: { - tvl: eos - }, - wax: { - tvl: wax - }, -} diff --git a/projects/adrastea-lrt/index.js b/projects/adrastea-lrt/index.js deleted file mode 100644 index 24c53d662b9..00000000000 --- a/projects/adrastea-lrt/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require('../helper/solana') -module.exports = { - doublecounted: true, - solana: { - tvl: sumTokensExport({ owners: ['wYPqKV6XuRBSBU1zYiYB1ZTPhkR8PsDRz5kKgmSyum1'] }) - } -} diff --git a/projects/adrastea-lst/index.js b/projects/adrastea-lst/index.js deleted file mode 100644 index 456dbe438d6..00000000000 --- a/projects/adrastea-lst/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('2XhsHdwf4ZDpp2JhpTqPovoVy3L2Atfp1XkLqFMwGP4Y', api) -} - -module.exports = { - timetravel: false, - solana: { tvl }, - methodology: "TVL represents the total amount of SOL staked in Adrastea's liquid staking pool" -}; diff --git a/projects/adrastea-restaking-operator/index.js b/projects/adrastea-restaking-operator/index.js deleted file mode 100644 index abb62f9e81c..00000000000 --- a/projects/adrastea-restaking-operator/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection, decodeAccount } = require("../helper/solana"); - -const VAULT_PROGRAM_ID = new PublicKey("Vau1t6sLNxnzB7ZDsef8TLbPLfyZMYXH8WTNqUdm9g8"); -const ADRASTEA_OPERATOR_ADDRESS = "574DmorRvpaYrSrBRUwAjG7bBmrZYiTW3Fc8mvQatFqo"; - -async function tvl(api) { - const connection = getConnection(); - - const vaults = [ - { - address: 'BmJvUzoiiNBRx3v2Gqsix9WvVtw8FaztrfBHQyqpMbTd', - token: 'jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL', - name: 'JTO' - }, - { - address: 'HR1ANmDHjaEhknvsTaK48M5xZtbBiwNdXM5NTiWhAb4S', - token: 'nSoLnkrvh2aY792pgCNT6hzx84vYtkviRzxvhf3ws8e', - name: 'nSOL' - } - ]; - - for (const vault of vaults) { - // Get Adrastea's delegation account for this vault - const delegationAccounts = await connection.getProgramAccounts( - VAULT_PROGRAM_ID, - { - filters: [ - { dataSize: 632 }, - { memcmp: { offset: 8, bytes: vault.address } }, - { memcmp: { offset: 40, bytes: ADRASTEA_OPERATOR_ADDRESS } }, - ] - } - ); - - if (delegationAccounts.length > 0) { - // Decode the delegation account using proper layout - const delegationData = decodeAccount('jitoVaultOperatorDelegation', delegationAccounts[0].account); - const stakedAmount = delegationData.delegationState.stakedAmount.toString(); - - if (BigInt(stakedAmount) > 0) { - if (vault.name === 'nSOL') { - // Convert nSOL to SOL for price feed - api.add('So11111111111111111111111111111111111111112', stakedAmount); - } else { - api.add(vault.token, stakedAmount); - } - } - } - } -} - -module.exports = { - methodology: "Tracks Adrastea operator's proportional share of delegated assets in Jito Restaking vaults based on VaultOperatorDelegation accounts", - start: 1738281600, // Jan 31, 2025 - when Adrastea joined according to Jito interface - timetravel: false, - solana: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/adrastea-validator/index.js b/projects/adrastea-validator/index.js deleted file mode 100644 index 9d9e93b862e..00000000000 --- a/projects/adrastea-validator/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConnection } = require("../helper/solana"); - -// Adrastea validator accounts -const VOTE_ACCOUNT = "adraBKLNY3DL3pg6SJRDYiMA8BsznaWpUdE42X41gbP"; - -async function tvl(api) { - const connection = getConnection(); - - // Get all vote accounts from the network - const voteAccounts = await connection.getVoteAccounts(); - - // Find Adrastea validator in current or delinquent validators - const adrasteaValidator = voteAccounts.current.find(va => va.votePubkey === VOTE_ACCOUNT) || - voteAccounts.delinquent.find(va => va.votePubkey === VOTE_ACCOUNT); - - api.add(ADDRESSES.solana.SOL, adrasteaValidator.activatedStake) -} - -module.exports = { - timetravel: false, - methodology: "Sums all SOL staked to Adrastea validator vote account: " + VOTE_ACCOUNT, - solana: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/adrastea/index.js b/projects/adrastea/index.js deleted file mode 100644 index ff48a691562..00000000000 --- a/projects/adrastea/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { sumTokensExport } = require('../helper/solana') -module.exports = { - solana: { - tvl: sumTokensExport({ owners: ['Ec5tJ1H24iVSM2L8Yd7SHf7bjtD7FUWDiYSeESpFYynM'] }) - } -} diff --git a/projects/adrena/index.js b/projects/adrena/index.js deleted file mode 100644 index 510b18bf1d1..00000000000 --- a/projects/adrena/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { sumTokens2, getConnection } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js") -const { decodeAccount } = require('../helper/utils/solana/layout') -const ADDRESSES = require('../helper/coreAssets.json') - -async function staking() { - return sumTokens2({ tokenAccounts: ['9nD5AenzdbhRqWo7JufdNBbC4VjZ5QH7jzLuvPZy2rhb']}) -} - -async function tvl(api) { - const connection = getConnection("solana"); - - await sumTokens2({ - owner: '4o3qAErcapJ6gRLh1m1x4saoLLieWDu7Rx3wpwLc7Zk9', - balances: api.getBalances(), - blacklistedTokens: [ - 'AuQaustGiaqxRvj2gtCdrd22PBzTn8kM3kEPEkZCtuDw', // ADX - '4yCLi5yWGzpTWMQ1iWHG5CrGYAdBkhyEdsuSugjDUqwj', // ALP - ], - }); - - const rewards = await connection.getAccountInfo(new PublicKey('5GAFPnocJ4GUDJJxtExBDsH5wXzJd3RYzG8goGGCneJi')); - - // Remove rewards from AUM - api.add(ADDRESSES.solana.USDC, +decodeAccount('tokenAccount', rewards).amount.toString() * -1) -} - -module.exports = { - timetravel: false, - methodology: "TVL counts tokens deposited in the Liquidity Pool.", - solana: { - tvl, - staking, - }, -}; diff --git a/projects/aegis-yusd/index.js b/projects/aegis-yusd/index.js deleted file mode 100644 index cd2bd76a93f..00000000000 --- a/projects/aegis-yusd/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const YUSDeth = '0x4274cD7277C7bb0806Bd5FE84b9aDAE466a8DA0a' -const YUSDbsc = '0xAB3dBcD9B096C3fF76275038bf58eAC10D22C61f' - -module.exports = { - ethereum: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: YUSDeth }) - api.add(YUSDeth, supply) - }, - }, - bsc: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: YUSDbsc }) - api.add(YUSDbsc, supply) - }, - }, -} diff --git a/projects/aelin/index.js b/projects/aelin/index.js deleted file mode 100644 index a9de9f942f4..00000000000 --- a/projects/aelin/index.js +++ /dev/null @@ -1,104 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') -const { sumTokens2, } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') -const { default: BigNumber } = require('bignumber.js') - -const aelin_data = { - 'ethereum': { - logConfig: [ - { target: '0x2c0979b0de5f99c2bde1e698aeca13b55695951e', fromBlock: 13996006 }, - { target: '0x5541da82549d732878c4104c9887c408790397af', fromBlock: 13846412 }, - ], - 'AELIN_ETH_LP': '0x974d51fafc9013e42cbbb9465ea03fe097824bcc', - 'AELIN_ETH_staking': '0x944cb90082fc1416d4b551a21cfe6d7cc5447c80', - 'AELIN': '0xa9c125bf4c8bb26f299c00969532b66732b1f758' - }, - 'optimism': { - logConfig: [ - { target: '0x9219f9f65b007fd3ba0b53762861f54062531a31', fromBlock: 2266169 }, - { target: '0x87525307974a312AF13a78041F88B0BAe23ebb10', fromBlock: 1487918 }, - { target: '0x914ffc8dc0678911aae77f51b8489d6e214da20f', fromBlock: 1971285 }, - ], - 'AELIN': '0x61BAADcF22d2565B0F471b291C475db5555e0b76', - 'AELIN_staking': '0xfe757a40f3eda520845b339c698b321663986a4d', - 'AELIN_ETH_LP': '0x665d8D87ac09Bdbc1222B8B9E72Ddcb82f76B54A', - 'AELIN_ETH_staking': '0x4aec980a0daef4905520a11b99971c7b9583f4f8', - 'vAELIN': '0x780f70882fF4929D1A658a4E8EC8D4316b24748A', - }, -} - -function tvl(chain) { - return async (api) => { - const { logConfig } = aelin_data[chain] - const logs = (await Promise.all(logConfig.map(({ target, fromBlock }) => getLogs({ - api, - target, - topics: ['0x2f9902ccfa1b25adff84fa12ff5b7cbcffcb5578f08631567f5173b39c3004fe'], - fromBlock, - eventAbi: 'event CreatePool(address indexed poolAddress, string name, string symbol, uint256 purchaseTokenCap, address indexed purchaseToken, uint256 duration, uint256 sponsorFee, address indexed sponsor, uint256 purchaseDuration, bool hasAllowList)', - onlyUseExistingCache: true, - }) - ))).flat() - - return sumTokens2({ api, tokensAndOwners: logs.map(i => ([i.args.purchaseToken, i.args.poolAddress])) }) - } -} - -function stakingTVL(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - if (chain === 'ethereum') { - return {} - } - - const staked = await staking( - aelin_data[chain]['AELIN_staking'], - aelin_data[chain]['AELIN'], - chain - )(timestamp, ethBlock, chainBlocks) - return staked - } -} - -function pool2TVL(chain) { - return async (api) => { - const stakingContract = aelin_data[chain]['AELIN_ETH_staking'] - const lpToken = aelin_data[chain]['AELIN_ETH_LP'] - - if (chain === 'ethereum') { - const staked = await pool2(stakingContract, lpToken, chain)(api) - const aelin_addr = `ethereum:${aelin_data[chain]['AELIN']}` - staked['AELIN'] = BigNumber(staked[aelin_addr]).div(1e18).toFixed(0) - staked[aelin_addr] = 0 - return staked - } - else if (chain === 'optimism') { - const bal = await api.call({ abi: 'erc20:balanceOf', target: lpToken, params: stakingContract, }) - const supply = await api.call({ abi: 'erc20:totalSupply', target: lpToken, }) - const token0 = await api.call({ abi: 'address:token0', target: lpToken, }) - const token1 = await api.call({ abi: 'address:token1', target: lpToken, }) - const { bal0, bal1 } = await api.call({ abi: 'function getUnderlyingBalances() view returns (uint256 bal0, uint256 bal1)', target: lpToken, }) - const ratio = bal/supply - api.add(token0, ratio*bal0) - api.add(token1, ratio*bal1) - - return api.getBalances() - } - } -} - -module.exports = { - hallmarks : [ - [1702598400, "Frontend was shut down"] - ], - ethereum: { - tvl: tvl('ethereum'), - pool2: pool2TVL('ethereum'), - }, - optimism: { - tvl: tvl('optimism'), - staking: stakingTVL('optimism'), - pool2: pool2TVL('optimism'), - }, - methodology: 'Aelin TVL consists of purchaseTokens held by pools, as well as AELIN token (staking) and LP (pool2) staked to receive a share of the revenue', -} diff --git a/projects/aequinox/index.js b/projects/aequinox/index.js deleted file mode 100644 index 47fa39eda05..00000000000 --- a/projects/aequinox/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { getUniqueAddresses } = require("../helper/utils"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const vault = '0xee1c8dbfbf958484c6a4571f5fb7b99b74a54aa7' - -async function tvl(api) { - const data = await getLogs({ - api, - target: vault, - topics: ['0xf5847d3f2197b16cdcd2098ec95d0905cd1abdaf415f07bb7cef2bba8ac5dec4'], - fromBlock: 20457369, - eventAbi: 'event TokensRegistered(bytes32 indexed poolId, address[] tokens, address[] assetManagers)' - }) - let tokens = [] - data.forEach(i => tokens.push(...i.args.tokens)) - tokens = getUniqueAddresses(tokens) - return sumTokens2({ api, tokens, owner: vault, }) -} - -module.exports = { - methodology: `TVL is computed by summing up all the tokens in the vault: ${vault}`, - bsc: { - tvl, - }, -}; diff --git a/projects/aera-v3/contracts.js b/projects/aera-v3/contracts.js deleted file mode 100644 index 1b99cbe5253..00000000000 --- a/projects/aera-v3/contracts.js +++ /dev/null @@ -1,43 +0,0 @@ -const { ethers } = require("ethers"); - -const topics = { - MultiDepositorVault_VaultCreated: ethers.id("VaultCreated(address,address,address,(string,string),(address,address,address),address,string)"), - SingleDepositorVault_VaultCreated: ethers.id("VaultCreated(address,address,address,(string,string),(address,address,address),address,string)"), -} -const eventAbis = { - MultiDepositorVault_VaultCreated: 'event VaultCreated(address indexed vault, address indexed owner, address hooks, (string name, string symbol) erc20Params, (address feeCalculator, address feeToken, address feeRecipient) feeVaultParams, address beforeTransferHook, string description)', - SingleDepositorVault_VaultCreated: 'event VaultCreated(address indexed vault, address indexed owner, address submitHooks, address feeToken, address feeCalculator, address feeRecipient, string description)', -} - -module.exports = { - ethereum: { - fromBlock: 22583788, - multiDepositorVaultFactory: { - address: '0x29722cC9a1cACff4a15914F9bC274B46F3b90B4F', - fromBlock: 22583788, - eventAbi: eventAbis.MultiDepositorVault_VaultCreated, - topics: [topics.MultiDepositorVault_VaultCreated] - }, - singleDepositorVaultFactory: { - address: '0x8f1FdB45160234d6E7e3653F5Af8e09A2Ce25AEb', - fromBlock: 22584116, - eventAbi: eventAbis.SingleDepositorVault_VaultCreated, - topics: [topics.SingleDepositorVault_VaultCreated] - }, - }, - base: { - fromBlock: 30834355, - multiDepositorVaultFactory: { - address: '0x29722cC9a1cACff4a15914F9bC274B46F3b90B4F', - fromBlock: 30834355, - eventAbi: eventAbis.MultiDepositorVault_VaultCreated, - topics: [topics.MultiDepositorVault_VaultCreated] - }, - singleDepositorVaultFactory: { - address: '0x8f1FdB45160234d6E7e3653F5Af8e09A2Ce25AEb', - fromBlock: 30834356, - eventAbi: eventAbis.SingleDepositorVault_VaultCreated, - topics: [topics.SingleDepositorVault_VaultCreated] - }, - }, - }; \ No newline at end of file diff --git a/projects/aera-v3/index.js b/projects/aera-v3/index.js deleted file mode 100644 index ab8ac33315f..00000000000 --- a/projects/aera-v3/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { getMultiDepositorVaults } = require('./utils'); - -async function tvl(api) { - const multiDepositorVaults = await getMultiDepositorVaults(api); - - // Compute TVL for multi depositor vaults - // TODO: Add single depositor vaults - await Promise.all(multiDepositorVaults.map(async (vault) => { - const [totalSupply, feeCalculator, decimals ] = await Promise.all([ - api.call({ - abi: 'function totalSupply() view returns (uint256)', - target: vault, - }), - api.call({ - abi: 'function feeCalculator() view returns (address)', - target: vault, - }), - api.call({ - abi: 'function decimals() view returns (uint8)', - target: vault, - }), - ]) - - const [numeraireToken, vaultState] = await Promise.all([ - api.call({ - abi: 'function NUMERAIRE() view returns (address)', - target: feeCalculator, - }), - api.call({ - abi: 'function getVaultState(address vault) external view returns ((bool paused, uint8 maxPriceAge, uint16 minUpdateIntervalMinutes, uint16 maxPriceToleranceRatio, uint16 minPriceToleranceRatio, uint8 maxUpdateDelayDays, uint32 timestamp, uint24 accrualLag, uint128 unitPrice, uint128 highestPrice, uint128 lastTotalSupply))', - target: feeCalculator, - params: [vault], - }), - ]) - - const unitPrice = vaultState[8]; - const numeraireBalance = totalSupply * unitPrice / 10 ** decimals; - console.log(numeraireBalance.toString()); - - api.add(numeraireToken, numeraireBalance); - })); -} - -module.exports = { - methodology: 'Counts tokens held directly in Aera vaults, as well as all managed DeFi positions.', - start: 1748414859, - base: { tvl }, - ethereum: { tvl }, -}; diff --git a/projects/aera-v3/utils.js b/projects/aera-v3/utils.js deleted file mode 100644 index 391fb607b1b..00000000000 --- a/projects/aera-v3/utils.js +++ /dev/null @@ -1,22 +0,0 @@ -const contracts = require('./contracts'); -const { getLogs } = require('../helper/cache/getLogs') - -async function getMultiDepositorVaults(api) { - const vaults = []; - const factory = contracts[api.chain].multiDepositorVaultFactory; - const logs = await getLogs({ - api, - target: factory.address, - topic: factory.topic, - topics: factory.topics, - eventAbi: factory.eventAbi, - fromBlock: factory.fromBlock, - onlyArgs: true, - }); - vaults.push(...logs.map(x => x.vault)) - return vaults; -} - -module.exports = { - getMultiDepositorVaults, -}; \ No newline at end of file diff --git a/projects/aera/index.js b/projects/aera/index.js deleted file mode 100644 index 558fc6c535d..00000000000 --- a/projects/aera/index.js +++ /dev/null @@ -1,576 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const COMPOUND_ORACLE_NAME = 'CompoundV3PositionOracle' -const AAVE_ORACLE_NAME = 'AaveV3PositionOracle' -const LLAMAPAY_ROUTER_ORACLE_NAME = 'LlamaPayRouterOracle' -const GEARBOX_TOKEN_PREFIX = 'Farming of' -const ARRAKIS_TOKEN_PREFIX = 'Arrakis Vault V2' -const ESXAI_POSITION_ORACLE_NAME = 'EsXai Position Oracle' -const SYMBIOTIC_TOKEN_PREFIX = 'Symbiotic Vault' -const MORPHO_BLUE_POSITION_ORACLE_NAME = 'MorphoBluePositionOracle' -const MORPHO_ERC4626_ASSETS = [ - '0xd9a442856c234a39a81a089c06451ebaa4306a72', - '0x9d60947d49911e3c262c108f97fe07cde209f9a7' -] - -const config = { - polygon: { - aavePool: '0x794a61358D6845594F94dc1DB02A252b5b4814aD', - aavePoolDataProvider: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654', - morphoBlue: '0x1bF0c2541F820E775182832f06c0B7Fc27A25f67', - comets: [ - { - address: '0xF25212E676D1F7F89Cd72fFEe66158f541246445', - baseToken: ADDRESSES.polygon.USDC - } - ], - cometReward: '0x45939657d1CA34A8FA39A924B71D28Fe8431e581', - arrakisHelper: '0x89E4bE1F999E3a58D16096FBe405Fc2a1d7F07D6', - vaultFactories: [ - { - address: "0xfa6295a04f99815e8fa65240ed2cf9ad383c50ba", - fromBlock: 42027977 - }, - { - address: "0x3c14801dc6402e0560d69083f2b238b4c4b4dafe", - fromBlock: 42835719 - }, - { - address: "0x49b428ea1cd536e7d103e9729ea14400785e30ec", - fromBlock: 54062542 - }, - { - address: "0xa1c908cf7371047649dfca9ece01327dc6db3094", - fromBlock: 48024333 - } - ] - }, - ethereum: { - aavePool: '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', - aavePoolDataProvider: '0x7B4EB56E7CD4b454BA8ff71E4518426369a138a3', - morphoBlue: '0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb', - comets: [ - { - address: '0xA17581A9E3356d9A858b789D68B4d866e593aE94', - baseToken: ADDRESSES.ethereum.WETH - }, - { - address: '0xc3d688B66703497DAA19211EEdff47f25384cdc3', - baseToken: ADDRESSES.ethereum.USDC - } - ], - cometReward: '0x1B0e765F6224C21223AeA2af16c1C46E38885a40', - arrakisHelper: '0x89E4bE1F999E3a58D16096FBe405Fc2a1d7F07D6', - vaultFactories: [ - { - address: "0x8a7c03e9f037ba096f1fa8b48bfd65c7578327c9", - fromBlock: 17642780 - }, - { - address: "0xbebb92ed09688e64dc38c240b600d0b1d504ee56", - fromBlock: 17694550 - }, - { - address: "0x6b8d4485e11aae228a32FAe5802c6d4BA25EA404", - fromBlock: 18143506 - }, - { - address: "0x9500948c2BEeeB2Da4CC3aA21CB05Bd2e7C27191", - fromBlock: 18192390 - }, - { - address: "0x38896b4ac8420b8A2B768001Da44d11109F1797D", - fromBlock: 18737324 - } - ] - }, - arbitrum: { - aavePool: '0x794a61358D6845594F94dc1DB02A252b5b4814aD', - aavePoolDataProvider: '0x6b4E260b765B3cA1514e618C0215A6B7839fF93e', - morphoBlue: '0x6c247b1F6182318877311737BaC0844bAa518F5e', - comets: [ - { - address: '0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA', - baseToken: ADDRESSES.arbitrum.USDC, - }, - { - address: '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', - baseToken: ADDRESSES.arbitrum.USDC_CIRCLE, - }, - ], - cometReward: '0x88730d254A2f7e6AC8388c3198aFd694bA9f7fae', - arrakisHelper: '0x89E4bE1F999E3a58D16096FBe405Fc2a1d7F07D6', - esXaiPoolFactory: '0xF9E08660223E2dbb1c0b28c82942aB6B5E38b8E5', - xai: '0x4Cb9a7AE498CEDcBb5EAe9f25736aE7d428C9D66', - esXai: '0x4C749d097832DE2FEcc989ce18fDc5f1BD76700c', - vaultFactories: [ - { - address: "0xaF2762E1F75DeCdb8d240576e7A2CEc1A365cD46", - fromBlock: 203397910 - }, - { - address: '0x49b428ea1cd536e7d103e9729ea14400785e30ec', - fromBlock: 245595750 - } - ] - }, - base: { - aavePool: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5', - aavePoolDataProvider: '0x2d8A3C5677189723C4cB8873CfC9C8976FDF38Ac', - morphoBlue: '0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb', - comets: [ - { - address: '0x46e6b214b524310239732D51387075E0e70970bf', - baseToken: ADDRESSES.optimism.WETH_1, - }, - { - address: '0xb125E6687d4313864e53df431d5425969c15Eb2F', - baseToken: ADDRESSES.base.USDC, - }, - { - address: '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', - baseToken: ADDRESSES.base.USDbC, - }, - ], - cometReward: '0x123964802e6ABabBE1Bc9547D72Ef1B69B00A6b1', - arrakisHelper: '0x89E4bE1F999E3a58D16096FBe405Fc2a1d7F07D6', - vaultFactories: [ - { - address: "0x5CD0Cb0DcDEF98a8d07a8D44054a13F2c35C53E1", - fromBlock: 13582859 - }, - { - address: "0x1395C314782bba704ca984ad41e57275f6E77b09", - fromBlock: 23294637 - } - ] - }, -} - -module.exports.methodology = 'Counts tokens held directly in vaults, as well as all managed DeFi positions.' -module.exports.start = 1682619377 - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const AAVE_POOL = config[chain].aavePool - const AAVE_POOL_DATA_PROVIDER = config[chain].aavePoolDataProvider - const MORPHO_BLUE = config[chain].morphoBlue - const COMETS = config[chain].comets - const COMET_REWARD = config[chain].cometReward - const ARRAKIS_HELPER = config[chain].arrakisHelper - const vaultFactories = config[chain].vaultFactories - const ESXAI_POOL_FACTORY = config[chain].esXaiPoolFactory - const XAI = config[chain].xai - const ESXAI = config[chain].esXai - - const vaultCreateds = [] - for (const { address, fromBlock } of vaultFactories) { - const logs = await getLogs({ - api, - target: address, - topic: 'VaultCreated(address indexed,address,address, address indexed, address indexed, address, uint256, string, address)', - eventAbi: 'event VaultCreated(address indexed vault, address assetRegistry, address hooks, address indexed owner, address indexed guardian, address feeRecipient, uint256 fee, string description, address wrappedNativeToken)', - onlyArgs: true, - fromBlock, - }) - vaultCreateds.push(...logs.map(x => ({ vault: x.vault, assetRegistry: x.assetRegistry }))) - } - - const vaults = [] - const assetRegistries = [] - vaultCreateds.forEach(x => { - vaults.push(x.vault) - assetRegistries.push(x.assetRegistry) - }) - - const assets = await api.multiCall({ abi: abi.assets, calls: assetRegistries }) - const uniqueAssets = [...new Set(assets.flatMap(x => x.map(y => y.asset)))] - const assetNames = await api.multiCall({ abi: 'string:name', calls: uniqueAssets, permitFailure: true }) - - const erc4626sAndOwners = [] - const tokensAndOwners = [] - - const erc4626UnderylingMap = {} - const aaveVaults = [] - const compoundVaults = [] - const llamapayRouters = [] - const gearboxFarmingPools = [] - const arrakisVaults = [] - const xaiPositionVaults = [] - const esXaiVaults = [] - const symbioticVaults = [] - const morphoBlueVaults = [] - for (let i = 0; i < vaults.length; ++i) { - const vault = vaults[i] - for (let j = 0; j < assets[i].length; ++j) { - const assetInfo = assets[i][j] - - const assetName = assetNames[uniqueAssets.findIndex(x => x === assetInfo.asset)] - if (assetName) { - if (assetName === COMPOUND_ORACLE_NAME) { - compoundVaults.push(vault) - continue - } - if (assetName === AAVE_ORACLE_NAME) { - aaveVaults.push(vault) - continue - } - if (assetName === LLAMAPAY_ROUTER_ORACLE_NAME) { - llamapayRouters.push(assetInfo.asset) - continue - } - if (assetName.startsWith(GEARBOX_TOKEN_PREFIX)) { - gearboxFarmingPools.push([vault, assetInfo.asset]) - continue - } - if (assetName.startsWith(ARRAKIS_TOKEN_PREFIX)) { - arrakisVaults.push(assetInfo.asset) - continue - } - if (assetName === ESXAI_POSITION_ORACLE_NAME) { - xaiPositionVaults.push(vault) - continue - } - if (assetName.startsWith(SYMBIOTIC_TOKEN_PREFIX)) { - symbioticVaults.push([vault, assetInfo.asset]) - continue - } - if (assetName === MORPHO_BLUE_POSITION_ORACLE_NAME) { - morphoBlueVaults.push([vault, assetInfo.asset]) - continue - } - } - - - if (ESXAI && assetInfo.asset.toLowerCase() === ESXAI.toLowerCase()) { - esXaiVaults.push(vault) - continue - } - - - if (assetInfo.isERC4626) { - if (!erc4626UnderylingMap[assetInfo.asset]) erc4626UnderylingMap[assetInfo.asset] = null - erc4626sAndOwners.push([assetInfo.asset, vault]) - } else { - tokensAndOwners.push([assetInfo.asset, vault]) - } - } - } - - const [underlyingTokens, vaultErc4626Balances, esXaiVaultBalances] = await Promise.all([ - api.multiCall({ abi: 'address:asset', calls: Object.keys(erc4626UnderylingMap) }), - api.multiCall({ abi: 'erc20:balanceOf', calls: erc4626sAndOwners.map(x => ({ target: x[0], params: x[1] })) }), - api.multiCall({ abi: 'erc20:balanceOf', calls: esXaiVaults.map(x => ({target: ESXAI, params: [x]}))}) - ]) - - esXaiVaultBalances.forEach(x => { - api.addToken(XAI, x) - }) - - await Promise.all([ - processAaveTvl(aaveVaults, api, AAVE_POOL, AAVE_POOL_DATA_PROVIDER), - processCompoundTvl(compoundVaults, api, COMETS, vaults, COMET_REWARD), - processLlamaPayTvl(llamapayRouters, api), - processGearboxTvl(gearboxFarmingPools, api), - processArrakisTvl(arrakisVaults, api, ARRAKIS_HELPER), - processXaiTvl(xaiPositionVaults, api, ESXAI_POOL_FACTORY, XAI), - processSymbioticTvl(symbioticVaults, api), - processMorphoBlueTvl(morphoBlueVaults, api, MORPHO_BLUE) - ]) - - Object.keys(erc4626UnderylingMap).forEach((erc4626Asset, i) => erc4626UnderylingMap[erc4626Asset] = underlyingTokens[i]) - - const vaultConvertToAssets = await api.multiCall({ abi: abi.convertToAssets, calls: erc4626sAndOwners.map((x, i) => ({ target: x[0], params: vaultErc4626Balances[i] })) }) - - erc4626sAndOwners.forEach(([token,], i) => { - const underlyingToken = erc4626UnderylingMap[token] - api.add(underlyingToken, vaultConvertToAssets[i]) - }) - - return sumTokens2({ api, tokensAndOwners }) - } - } -}) - -async function processXaiTvl(xaiPositionVaults, api, ESXAI_POOL_FACTORY, XAI) { - if (xaiPositionVaults.length === 0) return - - const pools = await api.multiCall({ abi: abi.getPoolIndicesOfUser, calls: xaiPositionVaults.map(x => ({target: ESXAI_POOL_FACTORY, params: [x]}))}) - const vaultPools = xaiPositionVaults.flatMap((vault, i) => pools[i].map(pool => ([vault, pool]))) - - const [bucketTrackers, stakedAmounts] = await Promise.all([ - api.multiCall({ abi: abi.esXaiStakeBucket, calls: vaultPools.map(x => x[1]) }), - api.multiCall({ abi: abi.getStakedAmounts, calls: vaultPools.map(x => ({target: x[1], params: [x[0]]}))}) - ]) - - stakedAmounts.forEach(x => { - api.addToken(XAI, x) - }) - - const bucketWithdrawables = await api.multiCall({ abi: abi.withdrawableDividendOf, calls: vaultPools.map((x, i) => ({target: bucketTrackers[i], params: [x[0]]}))}) - - bucketWithdrawables.forEach(x => { - api.addToken(XAI, x) - }) -} - -async function processArrakisTvl(arrakisVaults, api, arrakisHelper) { - if (arrakisVaults.length === 0) return - - const [tokens0, tokens1, totalUnderlyings] = await Promise.all([ - api.multiCall({ abi: abi.token0, calls: arrakisVaults}), - api.multiCall({ abi: abi.token1, calls: arrakisVaults}), - api.multiCall({ abi: abi.totalUnderlying, calls: arrakisVaults.map(x => ({target: arrakisHelper, params: [x]}))}) - ]) - - totalUnderlyings.forEach((v, i) => { - api.addToken(tokens0[i], v.totalAmount0) - api.addToken(tokens1[i], v.totalAmount1) - }) -} - -async function processGearboxTvl(farmingPools, api) { - if (farmingPools.length === 0) return - - const [stakingTokens, stakingTokenBalances, rewardTokens, farmed] = await Promise.all([ - api.multiCall({ abi: abi.stakingToken, calls: farmingPools.map(x => x[1])}), - api.multiCall({ abi: 'erc20:balanceOf', calls: farmingPools.map(x => ({target: x[1], params:[x[0]]}))}), - api.multiCall({ abi: abi.rewardsToken, calls: farmingPools.map(x => x[1])}), - api.multiCall({ abi: abi.farmed, calls: farmingPools.map(x => ({target: x[1], params: [x[0]]}))}) - ]) - - const [underlyingTokens, underlyingBalances] = await Promise.all([ - api.multiCall({ abi: 'address:asset', calls: stakingTokens}), - api.multiCall({ abi: abi.convertToAssets, calls: stakingTokens.map((x, i) => ({target: x, params: [stakingTokenBalances[i]]}))}) - ]) - - rewardTokens.forEach((rewardToken, i) => { - api.addToken(rewardToken, farmed[i]) - }) - underlyingTokens.forEach((underlyingToken, i) => { - api.addToken(underlyingToken, underlyingBalances[i]) - }) -} - -async function processLlamaPayTvl(llamaPayRouters, api) { - if (llamaPayRouters.length === 0) return - - const llamaPayInfos = await api.multiCall({ abi: abi.llamaPayInfoList, calls: llamaPayRouters.map(x => ({target: x})) }) - - const [llamaPayTokens, decimalDivisors, llamaPayBalances] = await Promise.all([ - api.multiCall({abi: abi.token, calls: llamaPayInfos.flatMap(x => x.map(y => y[0]))}), - api.multiCall({abi: abi.DECIMALS_DIVISOR, calls: llamaPayInfos.flatMap(x => x.map(y => y[0]))}), - api.multiCall({abi: abi.balances, calls: llamaPayInfos.flatMap((v, i) => v.map(y => ({target: y[0], params:[llamaPayRouters[i]]})))}) - ]) - - llamaPayTokens.forEach((token, i) => { - api.addToken(token, BigInt(llamaPayBalances[i]) / BigInt(decimalDivisors[i])) - }) -} - -async function processCompoundTvl(compoundVaults, api, COMETS, vaults, COMET_REWARD) { - if (compoundVaults.length === 0 || !COMETS || !COMET_REWARD) return - - const numAssets = await api.multiCall({ abi: 'uint8:numAssets', calls: COMETS.map(x => x.address) }); - - - const collateralCalls = []; - COMETS.forEach((comet, i) => [...Array(parseInt(numAssets[i])).keys()].forEach(assetIndex => collateralCalls.push({ target: comet.address, params: assetIndex }))); - const balanceOfCalls = []; - vaults.forEach(vault => COMETS.forEach(comet => balanceOfCalls.push({ target: comet.address, params: vault, baseToken: comet.baseToken }))); - const rewardOwedCalls = []; - vaults.forEach(vault => COMETS.forEach(comet => rewardOwedCalls.push({ target: COMET_REWARD, params: [comet.address, vault] }))); - - const [collateralInfos, balanceOfs, borrowBalanceOfs, rewardOwed] = await Promise.all([ - api.multiCall({ abi: abi.getAssetInfo, calls: collateralCalls }), - api.multiCall({ abi: 'erc20:balanceOf', calls: balanceOfCalls }), - api.multiCall({ abi: abi.borrowBalanceOf, calls: balanceOfCalls }), - api.multiCall({ abi: abi.getRewardOwed, calls: rewardOwedCalls }) - ]); - - balanceOfs.forEach((balance, i) => { - const sum = (BigInt(balance) - BigInt(borrowBalanceOfs[i])).toString(); - api.addToken(balanceOfCalls[i].baseToken, sum); - }); - - rewardOwed.forEach(reward => { - api.addToken(reward.token, reward.owed); - }); - - const collateralBalanceOfCalls = []; - vaults.forEach(vault => collateralInfos.forEach((collateral, i) => collateralBalanceOfCalls.push({ target: collateralCalls[i].target, params: [vault, collateral.asset] }))); - const collateralBalanceOfs = await api.multiCall({ abi: abi.collateralBalanceOf, calls: collateralBalanceOfCalls }); - - collateralBalanceOfs.forEach((balance, i) => { - api.addToken(collateralBalanceOfCalls[i].params[1], balance); - }); -} - -async function processAaveTvl(aaveVaults, api, AAVE_POOL, AAVE_POOL_DATA_PROVIDER) { - if (aaveVaults.length === 0 || !AAVE_POOL || !AAVE_POOL_DATA_PROVIDER) return - - const aaveReservesList = await api.call({ abi: abi.getReservesList, target: AAVE_POOL }); - - const aaveReserveDetails = await api.multiCall({ abi: abi.getReserveData, target: AAVE_POOL, calls: aaveReservesList }); - - const aaveQueryParams = []; - aaveReservesList.forEach(asset => aaveVaults.forEach(vault => aaveQueryParams.push({ params: [asset, vault], }))); - const aavePositions = await api.multiCall({ abi: abi.getUserReserveData, target: AAVE_POOL_DATA_PROVIDER, calls: aaveQueryParams }); - - for (const i in aavePositions) { - const aavePosition = aavePositions[i]; - const reserveIdx = aaveReservesList.findIndex(x => x === aaveQueryParams[i].params[0]); - - api.addToken(aaveReserveDetails[reserveIdx].aTokenAddress, aavePosition.currentATokenBalance); - api.addToken(aaveReserveDetails[reserveIdx].stableDebtTokenAddress, aavePosition.currentStableDebt); - api.addToken(aaveReserveDetails[reserveIdx].variableDebtTokenAddress, aavePosition.currentVariableDebt); - } - -} - -async function processSymbioticTvl(symbioticVaults, api) { - if (symbioticVaults.length === 0) return - - const collaterals = await api.multiCall({ abi: abi.collateral, calls: symbioticVaults.map(x => ({target: x[1]}))}) - - const balances = await api.multiCall({ abi: 'erc20:balanceOf', calls: symbioticVaults.map(x => ({target: x[1], params: [x[0]]}))}) - - collaterals.forEach((collateral, i) => { - api.addToken(collateral, balances[i]) - }) -} - -async function processMorphoBlueTvl(morphoBlueVaults, api, MORPHO_BLUE) { - if (morphoBlueVaults.length === 0) return; - - // Get the number of markets for each oracle - const marketLengths = await api.multiCall({ - abi: abi.getMarketsLength, - calls: morphoBlueVaults.map(x => ({target: x[1], params: []})) - }); - - - // Build calls to get each market by index - const marketCalls = []; - morphoBlueVaults.forEach(([vault, oracle], oracleIndex) => { - const length = marketLengths[oracleIndex]; - for (let i = 0; i < length; i++) { - marketCalls.push({ - target: oracle, - params: [i], - vault: vault, - oracleIndex: oracleIndex - }); - } - }); - - if (marketCalls.length === 0) return; - - // Get all markets from the Morpho Blue position oracles - const markets = await api.multiCall({ abi: abi.markets, calls: marketCalls }); - - const [marketInfos, marketParams] = await Promise.all( - [ - api.multiCall({ - abi: abi.market, - calls: markets.map(market => ({target: MORPHO_BLUE, params: [market[0]]})) - }), - api.multiCall({ - abi: abi.idToMarketParams, - calls: markets.map(market => ({ target: MORPHO_BLUE, params: [market[0]] })) - }) - ] - ); - - // Get positions for each vault across all markets - const positionCalls = []; - marketCalls.forEach((call, index) => { - const marketId = markets[index][0]; // Extract the market ID (bytes32) - positionCalls.push({ - target: MORPHO_BLUE, - params: [marketId, call.vault] - }); - }); - - const positions = await api.multiCall({ - abi: abi.position, - calls: positionCalls - }); - - // Process positions and add to TVL - await Promise.all(positionCalls.map(async (call, index) => { - const [_, vault] = call.params; - const position = positions[index]; - const marketParam = marketParams[index]; - const marketInfo = marketInfos[index]; - - if (position.collateral > 0) { - if (MORPHO_ERC4626_ASSETS.includes(marketParam.collateralToken.toLowerCase())) { - // If the collateral token is an ERC4626, we need to convert it to the underlying asset - const [underlyingAsset, collateralAssets] = await Promise.all([ - api.call({ abi: 'address:asset', target: marketParam.collateralToken }), - api.call({ abi: abi.convertToAssets, target: marketParam.collateralToken, params: [position.collateral] }) - ]); - api.addToken(underlyingAsset, collateralAssets, vault); - } else { - api.addToken(marketParam.collateralToken, position.collateral, vault); - } - } - - if (position.supplyShares > 0) { - const supplyAssets = ( - BigInt(position.supplyShares) * - BigInt(marketInfo.totalSupplyAssets) / BigInt(marketInfo.totalSupplyShares) - ); - api.addToken(marketParam.loanToken, supplyAssets, vault); - } - if (position.borrowShares > 0) { - const borrowAssets = ( - BigInt(position.borrowShares) * - BigInt(marketInfo.totalBorrowAssets) / BigInt(marketInfo.totalBorrowShares) - ); - api.addToken(marketParam.loanToken, -borrowAssets, vault); - } - })); -} - -const abi = { - "collateralBalanceOf": "function collateralBalanceOf(address account, address asset) view returns (uint128)", - "getReserveData": "function getReserveData(address asset) view returns (((uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))", - "assets": "function assets() view returns ((address asset, uint256 heartbeat, bool isERC4626, address oracle)[])", - "convertToAssets": "function convertToAssets(uint256 shares) view returns (uint256 assets)", - "getUserReserveData": "function getUserReserveData(address asset, address user) view returns (uint256 currentATokenBalance, uint256 currentStableDebt, uint256 currentVariableDebt, uint256 principalStableDebt, uint256 scaledVariableDebt, uint256 stableBorrowRate, uint256 liquidityRate, uint40 stableRateLastUpdated, bool usageAsCollateralEnabled)", - "getReservesList": "address[]:getReservesList", - "getAssetInfo": "function getAssetInfo(uint8 i) view returns ((uint8 offset, address asset, address priceFeed, uint64 scale, uint64 borrowCollateralFactor, uint64 liquidateCollateralFactor, uint64 liquidationFactor, uint128 supplyCap))", - "borrowBalanceOf": "function borrowBalanceOf(address account) view returns (uint256)", - "getRewardOwed": "function getRewardOwed(address comet, address account) returns ((address token, uint256 owed))", - "llamaPayCount": "function llamaPayCount() returns (uint256 count)", - "llamaPayInfoList": "function llamaPayInfoList() returns ((address llamapay, address priceFeed, bool invertPrice)[])", - "token": "function token() returns (address token)", - "balances": "function balances(address) returns (uint256)", - "DECIMALS_DIVISOR": "function DECIMALS_DIVISOR() returns (uint256)", - "stakingToken": "function stakingToken() returns (address)", - "rewardsToken": "function rewardsToken() returns (address)", - "farmed": "function farmed(address) returns (uint256)", - "totalUnderlying": "function totalUnderlying(address) returns (uint256 totalAmount0, uint256 totalAmount1)", - "token0": "function token0() returns (address)", - "token1": "function token1() returns (address)", - "stakerStrategyShares": "function stakerStrategyShares(address,address) returns (uint256)", - "strategy": "function stakerStrategyShares() returns (address)", - "underlyingToken": "function underlyingToken() returns (address)", - "sharesToUnderlyingView": "function sharesToUnderlyingView(uint256) returns (uint256)", - "queuedWithdrawals": "function queuedWithdrawals(uint256) returns (bytes32 root, uint256 shares)", - "getPoolIndicesOfUser": "function getPoolIndicesOfUser(address user) returns (address[])", - "esXaiStakeBucket": "function esXaiStakeBucket() returns (address)", - "getStakedAmounts": "function getStakedAmounts(address) returns (uint256)", - "withdrawableDividendOf": "function withdrawableDividendOf(address) returns (uint256)", - "collateral": "function collateral() returns (address)", - "getMarketsLength": "function getMarketsLength() view returns (uint256)", - "markets": "function markets(uint256) view returns ((bytes32, address, uint80, uint8, bool))", - "idToMarketParams": "function idToMarketParams(bytes32) view returns (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv)", - "position": "function position(bytes32, address) view returns (uint256 supplyShares, uint256 borrowShares, uint256 collateral)", - "market": "function market(bytes32) view returns (uint128 totalSupplyAssets, uint128 totalSupplyShares, uint128 totalBorrowAssets, uint128 totalBorrowShares)" -} \ No newline at end of file diff --git a/projects/aeria/index.js b/projects/aeria/index.js deleted file mode 100644 index 2858de46b7a..00000000000 --- a/projects/aeria/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping"); - -const FACTORY = "0x649b80892ef773bd64cc3c663950dea3a604f660"; - -async function tvl(api) { - let vaults = await api.fetchList({ lengthAbi: 'uint256:vaultCount', itemAbi: 'function vaults(uint256) view returns (address)', target: FACTORY, startFromOne: true, }) - vaults = vaults.filter(i => i !== nullAddress) - const isPaused = await api.multiCall({ abi: 'bool:paused', calls: vaults }) - vaults = vaults.filter((_, i) => !isPaused[i]) - const tokens = await api.multiCall({ abi: 'address:depositToken', calls: vaults }) - - const last_epochs = await api.multiCall({ abi: 'uint:currentEpochNumber', calls: vaults }) - const epochs = await api.multiCall({ - abi: 'function epochs(uint) public view returns ( (uint8, uint256, uint256, uint256, uint256, uint256, uint256, uint256) )', - calls: vaults.map((vault, index) => { return { target: vault, params: [last_epochs[index] - 1 || 1] } }) - }) - - epochs.forEach((epoch, index) => { - api.add(tokens[index], parseInt(epoch[4]) || parseInt(epoch[2])) - }) - return api.getBalances() -} - -module.exports = { - doublecouted: true, - base: { - tvl, - }, -} diff --git a/projects/aerie/index.js b/projects/aerie/index.js deleted file mode 100644 index 8edf0b6db66..00000000000 --- a/projects/aerie/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') - -async function tvl(api) { - const Indexer = '0x0336dfb02ba66ce75f5cc7898c3eafeddc493daf' - let pools = await api.call({ abi: abi.getAllSaaSPools, target: Indexer }) - const isEnabled = await api.multiCall({ abi: abi.poolEnabled, calls: pools }) - pools = pools.filter((_, i) => isEnabled[i]) - const tokens = await api.multiCall({ abi: abi.stakedTokenAddress, calls: pools}) - const poolInfo = await api.multiCall({ abi: abi.pool, calls: pools}) - const bals = poolInfo.map(i => i.totalTokensStaked) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: ['0x412cb411be14ec0ee87c2823f830d33dd37aa8f8']}) -} - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: tvl, - }, -} - -const abi = { - "getAllSaaSPools": "address[]:getAllSaaSPools", - "stakedTokenAddress": "address:stakedTokenAddress", - "pool": "function pool() view returns (address creator, address tokenOwner, uint256 poolTotalSupply, uint256 poolRemainingSupply, uint256 totalTokensStaked, uint256 creationBlock, uint256 perBlockNum, uint256 lockedUntilDate, uint256 lastRewardBlock, uint256 accERC20PerShare, uint256 stakeTimeLockSec, bool isStakedNft, bytes32 website)", - "poolEnabled": "bool:poolEnabled", -} \ No newline at end of file diff --git a/projects/aerodrome-CL/index.js b/projects/aerodrome-CL/index.js deleted file mode 100644 index f2963532948..00000000000 --- a/projects/aerodrome-CL/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') -const config = { - base: { factory: '0x5e7BB104d84c7CB9B682AaC2F3d509f5F406809A', blacklistedTokens: ['0xdbfefd2e8460a6ee4955a68582f85708baea60a3'] }, -} - -Object.keys(config).forEach(chain => { - const { factory, blacklistedTokens, } = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ - factory, blacklistedTokens, fetchBalances: true, abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: "function allPools(uint) view returns (address)", - } - }) - } -}) \ No newline at end of file diff --git a/projects/aerodrome/index.js b/projects/aerodrome/index.js deleted file mode 100644 index 884d009e121..00000000000 --- a/projects/aerodrome/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - 'base': '0x420DD381b31aEf6683db6B902084cB0FFECe40Da' -}, { - abis: { - - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, hasStablePools: true, -}) \ No newline at end of file diff --git a/projects/aevo-xyz/index.js b/projects/aevo-xyz/index.js deleted file mode 100644 index 1f1352847a7..00000000000 --- a/projects/aevo-xyz/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: [ - '0x4082C9647c098a6493fb499EaE63b5ce3259c574', // L1ChugSplashProxy - '0x426d1F3866BfcDF4d0efEfeD1Ba3c5E06CaECbE6', // L1SwapVault - ], - tokens: [ - ADDRESSES.null, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.SDAI, - ADDRESSES.ethereum.WEETH, - ] - }), - staking: staking("0x38913051E01D4F6910cB66bB9aC3cb77D746Ad81", - ["0x6123b0049f904d730db3c36a31167d9d4121fa6b", //RBN - ADDRESSES.ethereum.AEVO //AEVO - ] - ) - }, - arbitrum: { - tvl: sumTokensExport({ - owners: [ - '0x80d40e32fad8be8da5c6a42b8af1e181984d137c', // Bridged USDC - '0x7711C90bD0a148F3dd3f0e587742dc152c3E9DDB', // Native USDC - '0x90bFB3C35ddfBbA42D998414F0ff1eADD430E161', // WETH - ], - tokens: [ - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC_CIRCLE, - ] - }) - }, - optimism: { - tvl: sumTokensExport({ - owners: [ - '0xfff4a34925301d231ddf42b871c3b199c1e80584', // Bridged USDC - '0x7809621a6D7e61E400853C64b61568aA773A28Ef', // Native USDC - '0x5c7Dd6cb73d93879E94F20d103804C495A10aE7e', // WETH - ], - tokens: [ - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.USDT, - ADDRESSES.optimism.WETH_1, - ADDRESSES.optimism.USDC_CIRCLE - ] - }) - }, - base: { - tvl: sumTokensExport({ - owners: [ - '0x6ee3907D1B9423584195979812379143B327fb48', // Native USDC - '0xA8bD0eCb10a83CC6E14FC5381f384DD3C0779e8B', // WETH - ], - tokens: [ - ADDRESSES.base.USDC, - ADDRESSES.base.USDbC, - ADDRESSES.base.WETH, - ] - }) - } -} diff --git a/projects/affine-defi-liquid/index.js b/projects/affine-defi-liquid/index.js deleted file mode 100644 index 24ad3ae987a..00000000000 --- a/projects/affine-defi-liquid/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -// LINEA -const LINEA_VAULT = "0xB838Eb4F224c2454F2529213721500faf732bf4d" - -async function addL2TVL(api, target) { - const tokens = await api.call({abi: 'erc20:totalSupply', target: target}) - const sharePrice = await api.call({abi: 'uint256:sharePrice', target: target}) - const decimals = await api.call({abi: 'uint256:decimals', target: target}) - - // Convert to human-readable format - const totalInEth = tokens * sharePrice / 10 ** decimals - - api.addGasToken(totalInEth) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl: sumERC4626VaultsExport({ - vaults: [ - '0xcbC632833687DacDcc7DfaC96F6c5989381f4B47', - '0xF0a949B935e367A94cDFe0F2A54892C2BC7b2131', - ], - isOG4626: true, - }), - }, - linea: { - tvl: async (api) => await addL2TVL(api, LINEA_VAULT) - }, -} diff --git a/projects/affine-defi/index.js b/projects/affine-defi/index.js deleted file mode 100644 index 3932a5c9957..00000000000 --- a/projects/affine-defi/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') -const BTC_ETH_VAULT = '0x1F9b1057cd93fb2d07d18810903B791b56acc2E1'.toLowerCase() - -async function tvl(api) { - await getBasketTvl(api) - const ownerTokens = [ - [[ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.WBTC], BTC_ETH_VAULT] - ] - return sumTokens2({ api, ownerTokens }) -} - -async function ethTvl(api) { - return getBasketTvl(api) -} - -async function getBasketTvl(api) { - const data = await getConfig('affine-defi', 'https://api.affinedefi.com/v2/getBasketMetadata') - const baskets = Object.values(data).filter(i => i.chainId === api.chainId && i.basketAddress.toLowerCase() !== BTC_ETH_VAULT).map(i => i.basketAddress) - const tokens = await api.multiCall({ abi: 'address:asset', calls: baskets }) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: baskets }) - api.addTokens(tokens, bals) -} - -module.exports = { - doublecounted: true, - methodology: 'Counts the tokens in the Affine baskets', - polygon: { tvl }, - ethereum: { tvl: ethTvl } -} diff --git a/projects/afraswap/index.js b/projects/afraswap/index.js deleted file mode 100644 index 21e2ffb61ab..00000000000 --- a/projects/afraswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking'); - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xa098751D407796d773032f5Cc219c3e6889fB893) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - bsc: { - tvl: getUniTVL({ factory: '0xa098751D407796d773032f5Cc219c3e6889fB893', useDefaultCoreAssets: true }), - staking: stakingPricedLP("0x259C852834375864b65202375558AB11B2d330fd", "0x5badD826AeFa700446Fa6d784e6ff97eD6eeDca9", "bsc", "0x1Da189c1BA3d718Cc431a2ed240a3753f89CD47A", "wbnb") - }, -}; \ No newline at end of file diff --git a/projects/aftermath-fi-afsui/index.js b/projects/aftermath-fi-afsui/index.js deleted file mode 100644 index 76d9f53c6bf..00000000000 --- a/projects/aftermath-fi-afsui/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const sui = require('../helper/chain/sui') - -async function suiTVL() { - const stakedSuiVaultStateV1ObjectID = '0x55486449e41d89cfbdb20e005c1c5c1007858ad5b4d5d7c047d2b3b592fe8791' - const { fields: stakedSuiVaultState } = await sui.getObject(stakedSuiVaultStateV1ObjectID) - - const suiAmount = +stakedSuiVaultState.total_sui_amount - + +stakedSuiVaultState.atomic_unstake_sui_reserves - + +stakedSuiVaultState.crank_incentive_reward_pool; - - return { - sui: suiAmount / 1e9, - } -} - -module.exports = { - methodology: "Counts the total number of SUI tokens held in Aftermath's afSUI contract.", - sui: { - tvl: suiTVL, - } -} diff --git a/projects/aftermath-fi/index.js b/projects/aftermath-fi/index.js deleted file mode 100644 index f91c6ebc50f..00000000000 --- a/projects/aftermath-fi/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const MAINNET_PROTOCOL_ID = - "0x0625dc2cd40aee3998a1d6620de8892964c15066e0a285d8b573910ed4c75d50"; - -async function tvl(api) { - const pools = await sui.queryEvents({ eventType: '0xefe170ec0be4d762196bedecd7a065816576198a6527c99282a2551aaa7da38c::events::CreatedPoolEvent', transform: i => i.pool_id}) - const poolData = await sui.getObjects(pools) - - for (const { fields: { type_names: tokens, normalized_balances: bals, decimal_scalars } } of poolData) { - bals.forEach((v, i) => { - if (/af_lp::AF_LP/.test(tokens[i])) return; - api.add('0x' + tokens[i], v / decimal_scalars[i]) - }) - } -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; diff --git a/projects/agarthadao/index.js b/projects/agarthadao/index.js deleted file mode 100644 index 49202c2a5d9..00000000000 --- a/projects/agarthadao/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - avax: { - tvl: () => ({}), - staking: () => ({}), - }, -} -module.exports.deadFrom = '2022-03-01' \ No newline at end of file diff --git a/projects/agave.js b/projects/agave.js deleted file mode 100644 index 51bf6abb0f3..00000000000 --- a/projects/agave.js +++ /dev/null @@ -1,28 +0,0 @@ -const { staking } = require("./helper/staking.js"); -const { aaveExports } = require('./helper/aave.js'); -const sdk = require('@defillama/sdk'); -const methodologies = require("./helper/methodologies.js"); - -// Staking TVLs -const agaveTokenAddress = '0x3a97704a1b25F08aa230ae53B352e2e72ef52843' -const agaveStakingContract = '0x610525b415c1BFAeAB1a3fc3d85D87b92f048221' - -const addressesProviderRegistryXDAI = "0x4BaacD04B13523D5e81f398510238E7444E11744" -const protocolDataHelper = '0x24dCbd376Db23e4771375092344f5CbEA3541FC0' - -const addressesProviderRegistryXDAI_old = "0xa5E80AEAa020Ae41b1cBEe75dE7826297F7D803E" -const protocolDataHelper_old = '0xa874f66342a04c24b213BF0715dFf18818D24014' -const exportsV1 = aaveExports('', addressesProviderRegistryXDAI, undefined, [protocolDataHelper]) -const exportsV2 = aaveExports('', addressesProviderRegistryXDAI_old, undefined, [protocolDataHelper_old]) - -module.exports = { - // hallmarks: [ - // [1647302400, "Reentrancy attack"] - // ], - methodology: methodologies.lendingMarket, - xdai: { - tvl: sdk.util.sumChainTvls([exportsV1.tvl, exportsV2.tvl,]), - borrowed: sdk.util.sumChainTvls([exportsV1.borrowed,]), - staking: staking(agaveStakingContract, agaveTokenAddress) - } -} diff --git a/projects/agdex/index.js b/projects/agdex/index.js deleted file mode 100644 index c97d7bd988e..00000000000 --- a/projects/agdex/index.js +++ /dev/null @@ -1,119 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { function_view, getResource } = require("../helper/chain/aptos"); - -const primary_fungible_asset_balance = "0x1::primary_fungible_store::balance" -const AGDEX = - "0xfa69897532f069bc0806868eaeec3328727d90c0cec710a17dde327e0bfab44f"; -const lzUSDC = - ADDRESSES.aptos.USDC_2; -const USDT = - ADDRESSES.aptos.USDT_2; -const APT = - ADDRESSES.aptos.APT; -const BTC = - ADDRESSES.aptos.zWBTC; -const ETH = - ADDRESSES.aptos.zWETH; - -const usdc_resource_account = "0xb27c95e40594d6f5765e0183ccca5ebcd0942f9c9a66578af1c743f5bd0d90e5"; -const usdc_metadata = ADDRESSES.aptos.USDC_3; - -const layerzero_usdc_resource_account = "0x19fb80bd79fa8f7538404af85196396973e3fbbda1503495598172c8813f7ca5"; -const layerzero_usdc_metadata = "0x2b3be0a97a73c87ff62cbdd36837a9fb5bbd1d7f06a73b7ed62ec15c5326c1b8"; - -const usdt_resource_account = "0xbb3c1b88599c563062e2b08fe3a92ab048d700f9aa44617c680d59a4aa69b23f"; -const usdt_metadata = ADDRESSES.aptos.USDt; - -const eth_resource_account = "0x38bca0c288df1e13d9a30d33c4ce8ee778333c52bd4e730b49c6c9379be39b10"; -const eth_metadata = "0xae02f68520afd221a5cd6fda6f5500afedab8d0a2e19a916d6d8bc2b36e758db"; - -const btc_resource_account = "0x70d303ed5dbfbae1f5ac76d50d5073f69a7115dfdfa737e82bb7c3c9364b3d17"; -const btc_metadata = "0xa64d2d6f5e26daf6a3552f51d4110343b1a8c8046d0a9e72fa4086a337f3236c"; - -const apt_resource_account = "0x8afc7aaa4616c0defbe655f3928a72ff849ef9a6889178f1c18c7c3ad006ebf7"; -const apt_metadata = "0xa"; - -async function tvl(api) { - const layerzero_usdc_balance = - await function_view({ - "functionStr": primary_fungible_asset_balance, - "type_arguments": ["0x1::fungible_asset::Metadata"], - "args": [layerzero_usdc_resource_account, layerzero_usdc_metadata] - }); - const layerzero_usdc_r = await getResource( - AGDEX, - `${AGDEX}::pool::Vault<0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC>` - ); - const layerzero_usdc_value = parseInt(layerzero_usdc_balance) + parseInt(layerzero_usdc_r.reserved_amount); - - const usdc_balance = - await function_view({ - "functionStr": primary_fungible_asset_balance, - "type_arguments": ["0x1::fungible_asset::Metadata"], - "args": [usdc_resource_account, usdc_metadata] - }); - const usdc_r = await getResource( - AGDEX, - `${AGDEX}::pool::Vault<0xfa69897532f069bc0806868eaeec3328727d90c0cec710a17dde327e0bfab44f::token_map::USDC>` - ); - const usdc_value = parseInt(usdc_balance) + parseInt(usdc_r.reserved_amount); - - const usdt_balance = - await function_view({ - "functionStr": primary_fungible_asset_balance, - "type_arguments": ["0x1::fungible_asset::Metadata"], - "args": [usdt_resource_account, usdt_metadata] - }); - const usdt_r = await getResource( - AGDEX, - `${AGDEX}::pool::Vault<0xfa69897532f069bc0806868eaeec3328727d90c0cec710a17dde327e0bfab44f::token_map::USDT>` - ); - const usdt_value = parseInt(usdt_balance) + parseInt(usdt_r.reserved_amount); - - const eth_balance = - await function_view({ - "functionStr": primary_fungible_asset_balance, - "type_arguments": ["0x1::fungible_asset::Metadata"], - "args": [eth_resource_account, eth_metadata] - }); - const eth_r = await getResource( - AGDEX, - `${AGDEX}::pool::Vault<0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::WETH>` - ); - const eth_value = parseInt(eth_balance) + parseInt(eth_r.reserved_amount); - - const btc_balance = - await function_view({ - "functionStr": primary_fungible_asset_balance, - "type_arguments": ["0x1::fungible_asset::Metadata"], - "args": [btc_resource_account, btc_metadata] - }); - const btc_r = await getResource( - AGDEX, - `${AGDEX}::pool::Vault<0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::WBTC>` - ); - const btc_value = parseInt(btc_balance) + parseInt(btc_r.reserved_amount); - - const apt_balance = - await function_view({ - "functionStr": primary_fungible_asset_balance, - "type_arguments": ["0x1::fungible_asset::Metadata"], - "args": [apt_resource_account, apt_metadata] - }); - const apt_r = await getResource( - AGDEX, - `${AGDEX}::pool::Vault<0x1::aptos_coin::AptosCoin>` - ); - const apt_value = parseInt(apt_balance) + parseInt(apt_r.reserved_amount); - api.add(lzUSDC, usdc_value); - api.add(lzUSDC, layerzero_usdc_value); - api.add(BTC, btc_value); - api.add(ETH, eth_value); - api.add(USDT, usdt_value); - api.add(APT, apt_value); -} - -module.exports = { - timetravel: false, - aptos: { tvl }, -}; diff --git a/projects/agentfi/ca.js b/projects/agentfi/ca.js deleted file mode 100644 index 4017cfec77b..00000000000 --- a/projects/agentfi/ca.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const tokenAddress = { - USDB: ADDRESSES.blast.USDB, - WETH: ADDRESSES.blast.WETH, - ETH: ADDRESSES.null -}; - -const collection = { - genesis: "0x5066A1975BE96B777ddDf57b496397efFdDcB4A9", - explorer: "0xFB0B3C31eAf58743603e8Ee1e122547EC053Bf18", - strategy: "0x73E75E837e4F3884ED474988c304dE8A437aCbEf" -} - -const agentRegistry = "0x12F0A3453F63516815fe41c89fAe84d218Af0FAF" -const balanceFetcher = "0x3f8Dc480BEAeF711ecE5110926Ea2780a1db85C5" - -const uniV2Lp = { - thruster: '0x12c69BFA3fb3CbA75a1DEFA6e976B87E233fc7df', - blasterswap: '0x3b5d3f610Cc3505f4701E9FB7D0F0C93b7713adD', - ring: '0x9BE8a40C9cf00fe33fd84EAeDaA5C4fe3f04CbC3' -} - -const uniV3NftManager = { - blasterswap: '0xa761d82F952e9998fE40a6Db84bD234F39122BAD', - blasterswap2: '0x1e60C4113C86231Ef4b5B0b1cbf689F1b30e7966', - thruster: '0x434575EaEa081b735C985FA9bf63CD7b87e227F9', -} - -module.exports = { - tokenAddress, - collection, - agentRegistry, - uniV2Lp, - uniV3NftManager, - balanceFetcher -} diff --git a/projects/agentfi/index.js b/projects/agentfi/index.js deleted file mode 100644 index 527b2990e33..00000000000 --- a/projects/agentfi/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const { tokenAddress, uniV2Lp, uniV3NftManager } = require('./ca') -const { getTvlForLooperWithOrbit } = require('./strategies/looper') -const { getTvlForDexBalancer } = require('./strategies/dex-balancer') -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const { getAllAgent } = require("./utils"); -const { getTvlForBladeSwapCLM } = require("./strategies/bladeswap"); - - -async function tvl(api) { - const allAgents = await getAllAgent(api) - const allAgentsAddress = allAgents.map(i => i.agentAddress) - const dexBalancerAgents = allAgents.filter(i => i.moduleType === "DexBalancer") - const concentratedLiquidityAgents = allAgents.filter(i => i.moduleType === "ConcentratedLiquidity") - const bladeSwapConcentratedLiquidityAgentAddresses = allAgents.filter(i => i.moduleType === "BladeSwapLiquidityManager").map(i => i.agentAddress) - const looperAgentsAddresses = allAgents.filter(i => i.moduleType === "Looper").map(i => i.agentAddress) - - - const thrusterv2 = dexBalancerAgents.map(i => [uniV2Lp.thruster, i.agentAddress]) - const blasterswapv2 = dexBalancerAgents.map(i => [uniV2Lp.blasterswap, i.agentAddress]) - const ringv2 = dexBalancerAgents.map(i => [uniV2Lp.ring, i.agentAddress]) - - const agents = concentratedLiquidityAgents.map(i => i.agentAddress) - await sumTokens2({ api, owners: agents, uniV3ExtraConfig: { nftAddress: [uniV3NftManager.blasterswap, uniV3NftManager.blasterswap2, uniV3NftManager.thruster]}}) - - await getTvlForDexBalancer(dexBalancerAgents.map(i => i.agentAddress), api) - await getTvlForLooperWithOrbit(looperAgentsAddresses, api) - await getTvlForBladeSwapCLM(bladeSwapConcentratedLiquidityAgentAddresses, api) - await sumTokens2({ - tokensAndOwners: [ - ...thrusterv2, - ...blasterswapv2, - ...ringv2, - ], - resolveLP: true, - api, - }) - await api.sumTokens({ owners: allAgentsAddress, tokens: [tokenAddress.USDB, tokenAddress.WETH, nullAddress], }) -} - -module.exports = { - methodology: 'The TVL consists of the underlying capital held by all agents(ERC6551 token bound account)', - doublecounted: true, - blast: { - tvl, - } -}; diff --git a/projects/agentfi/strategies/bladeswap.js b/projects/agentfi/strategies/bladeswap.js deleted file mode 100644 index 704752bafa2..00000000000 --- a/projects/agentfi/strategies/bladeswap.js +++ /dev/null @@ -1,56 +0,0 @@ -async function getTvlForBladeSwapCLM(agentAddresses, api) { - const calls = agentAddresses.map(agent => ({ - target: agent, params: [] - })) - - const safelyGetStateOfAMMPromise = api.multiCall({ - abi: 'function safelyGetStateOfAMM() view returns (uint160 sqrtPrice, int24 tick, uint16 lastFee, uint8 pluginConfig, uint128 activeLiquidity, int24 nextTick, int24 previousTick)', - calls: calls, - withMetadata: true, - permitFailure: true, - }) - const positionPromise = api.multiCall({ - abi: 'function position() view returns (uint96 nonce, address operator, address token0, address token1, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)', - calls: calls, - withMetadata: true, - permitFailure: true, - }) - const [positionData, safelyGetStateOfAMMData] = await Promise.all([positionPromise, safelyGetStateOfAMMPromise]) - agentAddresses.forEach((address) => { - const positionResult = positionData.find(b => b.input.target === address) - const safelyGetStateOfAMMResult = safelyGetStateOfAMMData.find(b => b.input.target === address) - if (safelyGetStateOfAMMResult.success && positionResult.success) { - const position = positionResult.output - const safelyGetStateOfAMM = safelyGetStateOfAMMResult.output - const tickToPrice = (tick) => 1.0001 ** tick - const token0 = position.token0 - const token1 = position.token1 - const liquidity = position.liquidity - const bottomTick = +position.tickLower - const topTick = +position.tickUpper - const tick = safelyGetStateOfAMM.tick - const sa = tickToPrice(bottomTick / 2) - const sb = tickToPrice(topTick / 2) - let amount0 = 0 - let amount1 = 0 - if (tick < bottomTick) { - amount0 = liquidity * (sb - sa) / (sa * sb) - } else if (tick < topTick) { - const price = tickToPrice(tick) - const sp = price ** 0.5 - - amount0 = liquidity * (sb - sp) / (sp * sb) - amount1 = liquidity * (sp - sa) - } else { - amount1 = liquidity * (sb - sa) - } - - api.add(token0, amount0) - api.add(token1, amount1) - } - }) -} - -module.exports = { - getTvlForBladeSwapCLM -} diff --git a/projects/agentfi/strategies/dex-balancer.js b/projects/agentfi/strategies/dex-balancer.js deleted file mode 100644 index db3b650f4b9..00000000000 --- a/projects/agentfi/strategies/dex-balancer.js +++ /dev/null @@ -1,83 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -const { balanceFetcher, uniV2Lp, tokenAddress } = require('../ca') -const BigNumber = require("bignumber.js"); - - -// underlying token mapping -const RingTokenMappings = { - // fwUSDB -> USDB - [ADDRESSES.blast.fwUSDB]: tokenAddress.USDB, - // fwWETH -> WETH - [ADDRESSES.blast.fwWETH]: tokenAddress.WETH, -}; - -async function getTvlForDexBalancer(agentAddresses, api) { - // fetch pool info from balanceFetcher utility function - const ringPoolPromise = api.call({ - abi: 'function fetchPoolInfoV2(address poolAddress) public view returns (uint256 total, address address0, address address1, uint112 reserve0, uint112 reserve1)', - target: balanceFetcher, - params: [uniV2Lp.ring], - }) - const thrusterPoolPromise = api.call({ - abi: 'function fetchPoolInfoV2(address poolAddress) public view returns (uint256 total, address address0, address address1, uint112 reserve0, uint112 reserve1)', - target: balanceFetcher, - params: [uniV2Lp.thruster], - }) - - const ringlpBalancePromise = api.multiCall({ - abi: 'function balanceOf(uint256 index, address account) returns (uint256)', - calls: agentAddresses.map(agent => ({ - target: "0xEff87A51f5Abd015F1AFCD5737BBab450eA15A24", // ring staking contract - params: [3, agent], - })), - withMetadata: true, - permitFailure: true, - }) - - const hyperlocklpBalancePromise = api.multiCall({ - abi: 'function staked(address account, address token) returns (uint256)', - calls: agentAddresses.map(agent => ({ - target: "0xC3EcaDB7a5faB07c72af6BcFbD588b7818c4a40e", // hyperlock staking contract - params: [agent, "0x12c69BFA3fb3CbA75a1DEFA6e976B87E233fc7df"], - })), - withMetadata: true, - permitFailure: true, - }) - - const [ringPoolData, thrusterPoolData, ringlpBalances, hyperlocklpBalances] = await Promise.all([ringPoolPromise, thrusterPoolPromise, ringlpBalancePromise, hyperlocklpBalancePromise]) - - agentAddresses.forEach((address) => { - const ringlpBalance = ringlpBalances.find(b => b.input.params[1] === address) - if (ringlpBalance.success) { - const lpBalance = ringlpBalance.output - const [total, address0, address1, reserve0, reserve1] = ringPoolData; - const lpBalanceBigN = BigNumber(lpBalance) - const totalBigN = BigNumber(total) - const reserve0BigN = BigNumber(reserve0) - const reserve1BigN = BigNumber(reserve1) - const token0Balance = lpBalanceBigN.times(reserve0BigN).div(totalBigN) - const token1Balance = lpBalanceBigN.times(reserve1BigN).div(totalBigN) - api.add(RingTokenMappings[address0.toLowerCase()], token0Balance.toFixed(0)) - api.add(RingTokenMappings[address1.toLowerCase()], token1Balance.toFixed(0)) - } - const hyperlocklpBalance = hyperlocklpBalances.find(b => b.input.params[0] === address) - if (hyperlocklpBalance.success) { - const lpBalance = hyperlocklpBalance.output - const [total, address0, address1, reserve0, reserve1] = thrusterPoolData; - const lpBalanceBigN = BigNumber(lpBalance) - const totalBigN = BigNumber(total) - const reserve0BigN = BigNumber(reserve0) - const reserve1BigN = BigNumber(reserve1) - const token0Balance = lpBalanceBigN.times(reserve0BigN).div(totalBigN) - const token1Balance = lpBalanceBigN.times(reserve1BigN).div(totalBigN) - api.add(address0, token0Balance.toFixed(0)) - api.add(address1, token1Balance.toFixed(0)) - } - }) - - -} - -module.exports = { - getTvlForDexBalancer -} diff --git a/projects/agentfi/strategies/looper.js b/projects/agentfi/strategies/looper.js deleted file mode 100644 index 488ba3187d8..00000000000 --- a/projects/agentfi/strategies/looper.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -const BigNumber = require("bignumber.js"); -const { nullAddress } = require("../../helper/unwrapLPs"); - -async function getTvlForLooperWithOrbit(agentAddresses, api) { - const calls = agentAddresses.map(agent => ({ - target: agent, params: [] - })) - - const borrowBalancePromise = api.multiCall({ - abi: 'function borrowBalance() view returns (uint256)', - calls: calls, - withMetadata: true, - permitFailure: true, - }) - const supplyBalancePromise = api.multiCall({ - abi: 'function supplyBalance() view returns (uint256)', - calls: calls, - withMetadata: true, - permitFailure: true, - }) - const underlyingPromise = api.multiCall({ - abi: 'function underlying() view returns (address)', - calls: calls, - withMetadata: true, - permitFailure: true, - }) - const [borrowBalance, supplyBalance, underlying] = await Promise.all([borrowBalancePromise, supplyBalancePromise, underlyingPromise]) - agentAddresses.forEach((address) => { - const borrowBalanceResult = borrowBalance.find(b => b.input.target === address) - const supplyBalanceResult = supplyBalance.find(b => b.input.target === address) - const underlyingResult = underlying.find(b => b.input.target === address) - if (borrowBalanceResult.success && supplyBalanceResult.success && underlyingResult.success) { - const borrowBalance = borrowBalanceResult.output - const supplyBalance = supplyBalanceResult.output - const underlying = underlyingResult.output - const isEth = underlying === ADDRESSES.GAS_TOKEN_2 - const tokenToAdd = isEth ? nullAddress : underlying - api.add(tokenToAdd, BigNumber(supplyBalance).minus(borrowBalance)) - } - }) -} - -module.exports = { - getTvlForLooperWithOrbit -} diff --git a/projects/agentfi/utils.js b/projects/agentfi/utils.js deleted file mode 100644 index d9e24955e39..00000000000 --- a/projects/agentfi/utils.js +++ /dev/null @@ -1,110 +0,0 @@ -const { collection, agentRegistry } = require("./ca"); - -async function getAllAgent(api) { - const [genesisTotalSupply, explorerTotalSupply, strategyTotalSupply] = await api.multiCall({ - abi: 'uint256:totalSupply', calls: [collection.genesis, collection.explorer, collection.strategy] - }) - const genesisCalls = Array.from({ length: genesisTotalSupply }, (_, i) => i).map(i => ({ - target: agentRegistry, params: [collection.genesis, i + 1] - })) - const explorerCalls = Array.from({ length: explorerTotalSupply }, (_, i) => i).map(i => ({ - target: agentRegistry, params: [collection.explorer, i + 1] - })) - const strategyCalls = Array.from({ length: strategyTotalSupply }, (_, i) => i).map(i => ({ - target: agentRegistry, params: [collection.strategy, i + 1] - })) - - - const rootAgentAddressPromise = api.multiCall({ - permitFailure: true, - abi: "function getTbasOfNft(address collection, uint256 agentID) view returns (tuple(address agentAddress, address implementationAddress)[] tbas)", - calls: [...genesisCalls, ...explorerCalls], - requery: true, - }) - const strategyAgentAddressPromise = api.multiCall({ - permitFailure: true, - abi: "function getTbasOfNft(address collection, uint256 agentID) view returns (tuple(address agentAddress, address implementationAddress)[] tbas)", - calls: strategyCalls, - requery: true, - }) - - const [rootAgentAddresses, strategyAgentAddresses] = await Promise.all([rootAgentAddressPromise, strategyAgentAddressPromise]) - - const moduleCall = strategyAgentAddresses.map(i => i[0].agentAddress).map(i => ({ - target: i, params: ['0x82ccd330'] - })) - const moduleCall2 = strategyAgentAddresses.map(i => i[0].agentAddress).map(i => ({ - target: i, params: ['0x7bb485dc'] - })) - const modulePromise = api.multiCall({ - permitFailure: true, - abi: "function overrides(bytes4) view returns (address implementation, bool isProtected)", - calls: moduleCall, - withMetadata: true, - requery: true, - }) - const module2Promise = api.multiCall({ - permitFailure: true, - abi: "function overrides(bytes4) view returns (address implementation, bool isProtected)", - calls: moduleCall2, - withMetadata: true, - requery: true, - }) - const moduleResult = await Promise.all([modulePromise, module2Promise]) - const allAgentAddress = [...rootAgentAddresses, ...strategyAgentAddresses].map(i => ({ - agentAddress: i[0].agentAddress, - implementationAddress: i[0].implementationAddress, - })) - - const addressWithModuleType = allAgentAddress.map((i) => { - const agentAddress = i.agentAddress - const modules = moduleResult.flat().filter(x => x.success).filter(j => j.input.target === agentAddress).map(j => j.output[0]) - const DexBalancerModules = ["0x7e8280f5Ee5137f89d09FA61B356fa322a93415a", "0x35a4B9B95bc1D93Bf8e3CA9c030fc15726b83E6F", "0x067299A9C3F7E8d4A9d9dD06E2C1Fe3240144389"] - const MultioliooorModule = ["0x54D588243976F7fA4eaf68d77122Da4e6C811167"] - const ConcentratedLiquidityModule = ["0x10C02a975a748Db5B749Dc420154dD945e2e8657", "0x41D68d86545D6b931c1232f1E0aBB5844Ada4967", "0xa11D4dcD5a9ad75c609E1786cf1FD88b53C83A5E"] - const BladeSwapConcentratedLiquidityModule = [ - "0x5dBC01F3F1310E36454C43cA1d2c84F44b8094F2", - "0xa28299bfbf44450CbA73a1eAdcE461AF62181a02", - "0xD18eD95286316a359291b21d02e8d46C59986302", - ] - const pacLooperModule = '0x5E38765FF50D9b8932441Cd668c1fDA365D358b5' - const Looper = ["0x6A9D21A09A76808C444a89fE5fCc0a5f38dc0523", "0xe5fe6f280CEadc5c4DDE69eF2DF6234dd7Bd82E2", "0x8220512520db5D3295EA41308601FD0974405975", pacLooperModule] - if (modules.some(i => DexBalancerModules.includes(i))) { - return { - ...i, - moduleType: "DexBalancer" - } - } else if (modules.some(i => MultioliooorModule.includes(i))) { - return { - ...i, - moduleType: "Multipliooor" - } - } else if (modules.some(i => ConcentratedLiquidityModule.includes(i))) { - return { - ...i, - moduleType: "ConcentratedLiquidity" - } - } else if (modules.some(i => BladeSwapConcentratedLiquidityModule.includes(i))) { - return { - ...i, - moduleType: "BladeSwapLiquidityManager" - } - } else if (modules.some(i => Looper.includes(i))) { - return { - ...i, - moduleType: "Looper" - } - } else { - return { - ...i, - moduleType: "Unknown" - } - } - }) - - return addressWithModuleType -} - -module.exports = { - getAllAgent -} diff --git a/projects/agile/index.js b/projects/agile/index.js deleted file mode 100644 index 65777f75e0e..00000000000 --- a/projects/agile/index.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - deadFrom: '2022-06-28', - methodology: "Liquidity on DEX and supplied and borrowed amounts found using the unitroller address(0x643dc7C5105d1a3147Bd9524DFC3c5831a373F1e)", - cronos: { - //staking: stakingPricedLP("0x37619cC85325aFea778830e184CB60a3ABc9210B", "0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756", "moonriver", "0xbBe2f34367972Cb37ae8dea849aE168834440685", "moonriver"), - - tvl: () => ({}), - borrowed: () => ({}), - } -} - -module.exports.cronos.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/agilitylsd/index.js b/projects/agilitylsd/index.js deleted file mode 100644 index f2f739def76..00000000000 --- a/projects/agilitylsd/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); -const { staking } = require("../helper/staking"); - -const FACTORY_CONTRACT = "0xe4a51ec59233ba1f62b71f84554622a532b584ed"; -const WETH_ADDRESS = ADDRESSES.ethereum.WETH; -const AGI_ETH_LP_ADDRESS = "0x498c00E1ccC2AFFf80F6Cc6144EAEB95c46cc3B5"; -const AGI_ETH_STAKING_POOL = "0xC8187048f7Ab0db0774b674fEf3f4F4285A01bF4"; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: FACTORY_CONTRACT, - topics: ["0x489ab9065c597368f4a678fadcb323bf4c848713ea7d5a296d16ec97203eae83",], - eventAbi: "event StakingPoolDeployed(address indexed poolAddress,address indexed stakingToken,uint256 startTime,uint256 roundDurationInDays)", - onlyArgs: true, - fromBlock: 17015686, - }); - - const lsdAddresses = logs.map((i) => i.stakingToken === nullAddress ? WETH_ADDRESS : i.stakingToken); - const poolAddresses = logs.map((i) => i.poolAddress); - - return sumTokens2({ api, tokensAndOwners2: [lsdAddresses, poolAddresses], blacklistedTokens: [AGI_ETH_LP_ADDRESS], }); -} - -module.exports = { - ethereum: { - methodology: - "TVL of Staked ETH & LSD tokens, with pool2 including value of staked AGI/ETH Uniswap-V2 LP tokens", - tvl, - pool2: staking([AGI_ETH_STAKING_POOL], [AGI_ETH_LP_ADDRESS]), - }, -}; diff --git a/projects/agix-staking/index.js b/projects/agix-staking/index.js deleted file mode 100644 index 33e79045f65..00000000000 --- a/projects/agix-staking/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport} = require("../helper/chain/cardano"); - -module.exports = { - cardano: { - tvl: async () => ({}), - staking: sumTokensExport({ owner: 'addr1wxqv435zesjj290fdv7d3ckzxh66pdxpuf9hx3gexf56u6gegh8zj' }), - } -} diff --git a/projects/agni-fi/index.js b/projects/agni-fi/index.js deleted file mode 100644 index 8a4a44049a6..00000000000 --- a/projects/agni-fi/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - mantle: { factory: "0x25780dc8Fc3cfBD75F33bFDAB65e969b603b2035", fromBlock: 35714, }, -}); \ No newline at end of file diff --git a/projects/agora/abi.json b/projects/agora/abi.json deleted file mode 100644 index a4941c297a8..00000000000 --- a/projects/agora/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getPricePerFullShare": "uint256:getPricePerFullShare", - "want": "address:want", - "balance": "uint256:balance" -} \ No newline at end of file diff --git a/projects/agora/index.js b/projects/agora/index.js deleted file mode 100644 index 5a5a0e902ba..00000000000 --- a/projects/agora/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { compoundExports, methodology, } = require("../helper/compound"); -const { getUniTVL } = require('../helper/unknownTokens') - -const factory = '0x3c4063B964B1b3bF229315fCc4df61a694B0aE84' - -const { tvl: agoraTvl, } = compoundExports("0x3fe29D7412aCDade27e21f55a65a7ddcCE23d9B3", "0xcFd482DcE13cA1d27834D381AF1b570E9E6C6810",); -const { tvl: agoraPlusTvl, } = compoundExports("0x92DcecEaF4c0fDA373899FEea00032E8E8Da58Da", "0xE85A1ae1A2A21135c49ADEd398D3FD5Ed032B28e",); -const { tvl: agoraStakeTvl, } = compoundExports("0xb36DF0773AbD23081516F54f9dbB9a99Ec27dbB0", "0xc3034143816398d37Ec9447c9CA17c407e96Dc12",); -const { tvl: agoraFarmTvl, } = compoundExports("0xEC1A06f320E6e295Ab6892BB4e0f9e29c712F11F", "0x13Cb104a1D94A89a260b27DfAAB07C862da622E5",); - -const chainTvl = getUniTVL({ factory, useDefaultCoreAssets: true, }) - -module.exports = { - hallmarks: [ - [1649376000, "STARS collateral Exploit"] - ], - methodology, - misrepresentedTokens: true, - metis: { - tvl: sdk.util.sumChainTvls([chainTvl, agoraTvl, agoraPlusTvl, agoraFarmTvl, agoraStakeTvl]), - borrowed: () => ({}), - }, -}; diff --git a/projects/agoric/index.js b/projects/agoric/index.js deleted file mode 100644 index 2bf6fd3692a..00000000000 --- a/projects/agoric/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { post } = require('../helper/http') - -const query = ` -query { - vaultManagerMetrics { - nodes { - liquidatingCollateralBrand - totalCollateral - } - } - oraclePrices { - nodes { - typeInAmount - typeOutAmount - typeInName - } - } - boardAuxes { - nodes { - allegedName - decimalPlaces - } - } -} -` - -const coingeckoMapping = { - 'stATOM': 'stride-staked-atom', - 'stkATOM': 'stkatom', - 'ATOM': 'cosmos', - 'stOSMO': 'stride-staked-osmo', - 'stTIA': 'stride-staked-tia', - 'dATOM': 'drop-staked-atom', -} -const decimals = {} - -const tvl = async (api) => { - const { data: { vaultManagerMetrics, boardAuxes } } = await post('https://api.subquery.network/sq/agoric-labs/agoric-mainnet-v2', { query }) - - boardAuxes.nodes.forEach(board => { - decimals[board.allegedName] = 10 ** board.decimalPlaces - }) - - vaultManagerMetrics.nodes.forEach(vault => { - const key = vault.liquidatingCollateralBrand - if (!coingeckoMapping[key]) { - throw new Error(`Unknown coin ${key} (coingecko mapping is missing)`) - } - const decimal = decimals[key] ?? 1e6 - const balance = vault.totalCollateral / decimal - api.addCGToken(coingeckoMapping[key], balance) - }) -} - -module.exports = { - agoric: { - tvl, - }, -} diff --git a/projects/agsfinance/index.js b/projects/agsfinance/index.js deleted file mode 100644 index 21bdbde72f6..00000000000 --- a/projects/agsfinance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORIES = "0x6A6a541FFb214ca228A58c27bD61b5A099Dc82CC" - -module.exports = { - misrepresentedTokens: true, - methodology: "AGS Finance Tvl Calculation", - astar: { - tvl: getUniTVL({ factory: FACTORIES, useDefaultCoreAssets: true }), - } -}; - diff --git a/projects/agus/index.js b/projects/agus/index.js deleted file mode 100644 index dfb8d1e49a7..00000000000 --- a/projects/agus/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0x1aEa6414e7F7A9581Ce53385b2902c59b34D4a94', useDefaultCoreAssets: true,}), - }, - core: { - tvl: getUniTVL({ factory: '0x1aEa6414e7F7A9581Ce53385b2902c59b34D4a94', useDefaultCoreAssets: true,}) - }, -}; diff --git a/projects/aimstrong/index.js b/projects/aimstrong/index.js deleted file mode 100644 index ec1bb612755..00000000000 --- a/projects/aimstrong/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const abi = { - getReservesList: "function getReservesList() view returns (address[])", - getReserveData: - "function getReserveData(address asset) view returns (uint256,uint128,uint128,uint128,uint128,uint40,address,address,address,uint8)", -}; - -const CONFIG = { - arbitrum: "0x7c94606f2240E61E242D14Ed984Aa38FA4C79c0C", - base: "0x7c94606f2240E61E242D14Ed984Aa38FA4C79c0C", -}; - -async function tvl(api) { - const pool = CONFIG[api.chain]; - const reserves = await api.call({ target: pool, abi: abi.getReservesList }); - const datas = await api.multiCall({ - abi: abi.getReserveData, - calls: reserves.map((r) => ({ target: pool, params: [r] })), - }); - const tokensAndOwners = reserves.map((reserve, i) => [reserve, datas[i][6]]); // [6] = tTokenAddress - return api.sumTokens({ tokensAndOwners }); -} - -async function borrowed(api) { - const pool = CONFIG[api.chain]; - const reserves = await api.call({ target: pool, abi: abi.getReservesList }); - - const datas = await api.multiCall({ - abi: abi.getReserveData, - calls: reserves.map((r) => ({ target: pool, params: [r] })), - }); - - const supplies = await api.multiCall({ - abi: "erc20:totalSupply", - calls: datas.map((d) => ({ target: d[7] })), // [7] = variableDebtTokenAddress - }); - - reserves.forEach((underlying, i) => { - api.add(underlying, supplies[i]); - }); - - return api.getBalances(); -} - -module.exports = { - methodology: - "TVL is the sum of collateral tokens backing the protocol, by checking balances held in each reserve’s tToken.", - arbitrum: { tvl, borrowed }, - base: { tvl, borrowed }, -}; diff --git a/projects/ainn-layer2/index.js b/projects/ainn-layer2/index.js deleted file mode 100644 index 34e9eec3750..00000000000 --- a/projects/ainn-layer2/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - - -module.exports = { - methodology: "Staking tokens via AINN Layer2 Dataset counts as TVL.", - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.ainn }), - }, - zklink: { - tvl: sumTokensExport({ - owners: ["0xc698c23d7cDE4203EafD8F45d8bab8fA86D413d1"], - tokens: ["0xEbc45Ef3B6D7E31573DAa9BE81825624725939f9"] //wbtc - }), - }, -}; diff --git a/projects/ainnswap/index.js b/projects/ainnswap/index.js deleted file mode 100644 index 4efe43244eb..00000000000 --- a/projects/ainnswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'ailayer': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], -} // iziswap liquidityManager contracts - - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], }), } -}) \ No newline at end of file diff --git a/projects/airdao-bridge/index.js b/projects/airdao-bridge/index.js deleted file mode 100644 index 1b956ea39f8..00000000000 --- a/projects/airdao-bridge/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json') - -const CHAINS = { - ethereum: { - locker: "0x0De2669e8A7A6F6CC0cBD3Cf2D1EEaD89e243208", - tokens: [ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WETH] - }, - bsc: { - locker: "0x92fa52d3043725D00Eab422440C4e9ef3ba180d3", - tokens: [ADDRESSES.bsc.USDC, ADDRESSES.bsc.USDT, ADDRESSES.bsc.WBNB, ADDRESSES.bsc.BUSD] - }, -} - -module.exports = { - methodology: - "Adds up the total value locked as collateral on the Bridge platform" -} - -Object.keys(CHAINS).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ owner: CHAINS[chain].locker, tokens: CHAINS[chain].tokens }) - } -}) diff --git a/projects/airdao-harbor/index.js b/projects/airdao-harbor/index.js deleted file mode 100644 index c129cf5ee5c..00000000000 --- a/projects/airdao-harbor/index.js +++ /dev/null @@ -1,11 +0,0 @@ -async function tvl(api) { - const totalStake = await api.call({ abi: 'uint256:getTotalStAmb', target: '0xBda7cf631Db4535A500ED16Dd98099C04e66F1d5' }) - api.addGasToken(totalStake) -} - -module.exports = { - methodology: `TVL counts deposits made to Harbor liquid staking on AirDAO.`, - airdao: { - tvl - } -} \ No newline at end of file diff --git a/projects/airdao-hera-pool/index.js b/projects/airdao-hera-pool/index.js deleted file mode 100644 index d14949b826d..00000000000 --- a/projects/airdao-hera-pool/index.js +++ /dev/null @@ -1,11 +0,0 @@ -async function tvl(api) { - const totalStake = await api.call({abi: 'uint256:totalStake', target: '0x0E051C8C1cd519d918DB9b631Af303aeC85266BF'}) - api.addCGToken('amber', totalStake/1e18) -} - -module.exports = { - methodology: `TVL counts deposits made to Hera pool on AirDAO.`, - airdao: { - tvl - } -} diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js deleted file mode 100644 index f34c21b88bb..00000000000 --- a/projects/airpuff/index.js +++ /dev/null @@ -1,501 +0,0 @@ -const { staking } = require("../helper/staking"); -const ADDRESSES = require("../helper/coreAssets.json"); -const contractAbis = { - getDeposits: "function getDeposits(address) view returns (address[], address[], uint256[], uint256[])", - readOraclePrice: "function read() view returns (int224 value, uint32 timestamp)", - balanceOf: "function balanceOf(address) external view returns (uint256)", - getPrice: "function answer() external view returns (uint256)", - getTotalSupply: "function totalSupply() external view returns (uint256)", - getTotalAssets: "function totalAssets() external view returns (uint256)", - getVectorSharePrice: "function getVectorSharePrice() external view returns (uint256)", - getMswEthPrice: "function exchangeRateToNative() external view returns (uint256)", - getMswBalance: "function getAllEigeinPieCycleDepositAmounts() external view returns (uint256)", - getUnderlyingPrice: "function getUnderlyingPrice(address cToken) view returns (uint256)", - getUniswapPrice: - "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 observationCardinalityNext, uint8 observationCardinalityNext)", - getMantleBalance: "function balances(address) view returns (uint256)", -}; - -module.exports = { - misrepresentedTokens: true, - - mantle: { - tvl: async (api) => { - const mantle = { - vault: "0xf9B484901BCA34A8615c90E8C4933f1Bd553B639", - lending: "0x08ccF72358B44D9d45438Fc703962A0a2FD5c978", - staking: "0x9f39dC8eA0a73ab462d23104699AFAE9c30d1E4f", - }; - - const stakedBalance = await api.call({ - abi: contractAbis.getMantleBalance, - target: mantle.staking, - params: [mantle.vault], - }); - - api.add(ADDRESSES.mantle.WMNT, stakedBalance); - - await api.sumTokens({ - tokensAndOwners: [[ADDRESSES.mantle.WMNT, mantle.lending]], - }); - }, - }, - - karak: { - tvl: async (api) => { - const KUSDC = { - vault: "0x4c18E80b801AA24066D8B1C6E65ee245497Cb741", - token: ADDRESSES.karak.USDC, - }; - - const KWETH = { - vault: "0x9a9631F7BEcE5C6E0aBA1f73f0e5796c534dc4db", - token: ADDRESSES.optimism.WETH_1, - }; - - const wethLending = { - vault: "0xd6034F9147CF7528e857403Dea93bc45743295eb", - token: ADDRESSES.optimism.WETH_1, - }; - - const usdcLending = { - vault: "0x475820E4bCE0E3d233Ad7f6A8c9DD1f66974c5d6", - token: ADDRESSES.karak.USDC, - }; - - const KarakUSDCBal = await api.call({ target: KUSDC.vault, abi: contractAbis.getTotalSupply }); - - const KarakWETHbal = await api.call({ target: KWETH.vault, abi: contractAbis.getTotalSupply }); - - const strategies = [wethLending, usdcLending]; - - const tokensAndOwners = []; - - strategies.forEach(({ vault, token }) => tokensAndOwners.push([token, vault])); - - await api.sumTokens({ tokensAndOwners }); - - api.add(KUSDC.token, KarakUSDCBal); - api.add(KWETH.token, KarakWETHbal); - }, - }, - - zklink: { - tvl: async (api) => { - const pufEth1x = { - vault: "0xD06E74D03a98A085C6060C4148902d2048C2D458", - reStakingToken: "0x1B49eCf1A8323Db4abf48b2F5EFaA33F7DdAB3FC", - }; - - await api.sumTokens({ - tokensAndOwners: [[pufEth1x.reStakingToken, pufEth1x.vault]], - }); - }, - }, - - mode: { - tvl: async (api) => { - const lendingMode = { - eth: "0x89C133c5e8eD4Cd7CD87A1A00c1e70c13A29b90B", - }; - await api.sumTokens({ - tokensAndOwners: [[ADDRESSES.mode.WETH, lendingMode.eth]], - }); - - const airPuff1XwETHMode = { - vault: "0xeAaD8f5F1901D2f92B747650c0f941Bfa3413dAF", - pendleAddress: ADDRESSES.optimism.WETH_1, - }; - - const airPuff1XUSDTMode = { - vault: "0xCEb6264CdCcDDd8c9631212Dc7112304F9393818", - pendleAddress: ADDRESSES.mode.USDT, - }; - - const airPuff1XUSDCMode = { - vault: "0x08ccF72358B44D9d45438Fc703962A0a2FD5c978", - pendleAddress: ADDRESSES.mode.USDC, - }; - - const airPuff1XwBTCMode = { - vault: "0xf9B484901BCA34A8615c90E8C4933f1Bd553B639", - pendleAddress: ADDRESSES.mode.WBTC, - }; - - const airPuff1XwrsETHMode = { - vault: "0xEd487e254b1ED41Db4d1Ed457774827d01dfF56F", - pendleAddress: "0xe7903B1F75C534Dd8159b313d92cDCfbC62cB3Cd", - }; - - const airPuff1XankrETHMode = { - vault: "0x83886Af55Dac462Dc7840cdb0157bB3e7d8A6ac4", - pendleAddress: "0x12D8CE035c5DE3Ce39B1fDD4C1d5a745EAbA3b8C", - }; - - const airPuff1XpxETHMode = { - vault: "0xFf5C03ADf31865A4a8E6C0e59eDb4178C9BCC32E", - pendleAddress: "0x9E0d7D79735e1c63333128149c7b616a0dC0bBDb", - }; - - const airPuff1XstoneMode = { - vault: "0xaC9dAdf209F14f46Fe103C6E5C787130a6129205", - pendleAddress: ADDRESSES.mode.STONE, - }; - - const airPuff1XMerlinBTCMode = { - vault: "0x83A162dA8Df54FF845773169f019fd1505A9e29f", - pendleAddress: "0x59889b7021243dB5B1e065385F918316cD90D46c", - }; - - const strategies = [ - airPuff1XwETHMode, - airPuff1XUSDTMode, - airPuff1XUSDCMode, - airPuff1XwBTCMode, - airPuff1XwrsETHMode, - airPuff1XankrETHMode, - airPuff1XpxETHMode, - airPuff1XstoneMode, - airPuff1XMerlinBTCMode, - ]; - - const tokensAndOwners = []; - - strategies.forEach(({ vault, pendleAddress }) => tokensAndOwners.push([pendleAddress, vault])); - - await api.sumTokens({ tokensAndOwners }); - - const ezETH = { - vault: "0x497eB27Ca1ed7566653edf811b03d6418a03FC9d", - reStakingToken: ADDRESSES.blast.ezETH, - oracle: "0x2BAF3A2B667A5027a83101d218A9e8B73577F117", //Renzo - oracleToken: "0x59e710215d45f584f44c0fee83da6d43d762d857", - }; - - const ezETH1x = { - vault: "0x9c96d0Cc5341654167ee35DB4F288ae523fe8779", - reStakingToken: ADDRESSES.blast.ezETH, - oracle: "0x2BAF3A2B667A5027a83101d218A9e8B73577F117", //Renzo - oracleToken: "0x59e710215d45f584f44c0fee83da6d43d762d857", - }; - - const balOfezETH = await api.call({ - abi: contractAbis.balanceOf, - target: ezETH.reStakingToken, - params: [ezETH.vault], - }); - - const balOfezETH1x = await api.call({ - abi: contractAbis.balanceOf, - target: ezETH.reStakingToken, - params: [ezETH1x.vault], - }); - - const priceOfezETH = await api.call({ - target: ezETH.oracle, - abi: contractAbis.getUnderlyingPrice, - params: [ezETH.oracleToken], - }); - - const ezETHBalInETH = (balOfezETH * priceOfezETH) / 1e18; - - const ezETH1xBalInETH = (balOfezETH1x * priceOfezETH) / 1e18; - - api.add(ADDRESSES.mode.WETH, ezETHBalInETH); - api.add(ADDRESSES.mode.WETH, ezETH1xBalInETH); - }, - }, - - ethereum: { - tvl: async (api) => { - const lendingMain = { - eth: "0xdeF3AA48bad043e53207d359dcDFdE46F50b6C02", //ETH - sUSD: "0x7c2a7009ffE52a69a8C877b47B07D5dB59C0e3b3", // Not lending pool, staking pool - }; - const tokensAndOwners = [ - [ADDRESSES.ethereum.WETH, lendingMain.eth], - [ADDRESSES.ethereum.sUSDe, lendingMain.sUSD], - ]; - - const eETH = { - vault: "0xE543eBa28a3793d5ae747A2164A306DB1767cDAe", - reStakingToken: "0xeA1A6307D9b18F8d1cbf1c3Dd6aad8416C06a221", - oracle: "0xb09cbB6Aa95A004F9aeE4349DF431aF5ad03ECe4", - }; - - - tokensAndOwners.push([eETH.reStakingToken, eETH.vault]); - - - - // leverage users - const ezETH = { - vault: "0x32a0ce2bDfc37eE606aB905b4f9fC286049A774f", - reStakingToken: ADDRESSES.linea.rzETH, - oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B", //Renzo - }; - - const weETH = { - vault: "0x5e0a74cb0F74D57F9d69914575b972ba6A14e27c", - reStakingToken: ADDRESSES.ethereum.WEETH, - oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B", - }; - - const rsETH = { - vault: "0xEc69AaC84D3081aA6F4636C5DBD3D7C2c2F42a9C", - reStakingToken: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", - oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", - }; - - const ezETH1x = { - vault: "0xa9A57D0824a613d181e0323b0cA85fBD4E27160B", - reStakingToken: ADDRESSES.linea.rzETH, - oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B", //Renzo - }; - - const weETH1x = { - vault: "0x9320AB04E319018842BD59e2817054d19850Abc0", - reStakingToken: ADDRESSES.ethereum.WEETH, - oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B", - }; - - const rsETH1x = { - vault: "0x15A692f5986e9B3cd0aF02D0f5c78A37CB120843", - reStakingToken: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", - oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", - }; - - const bedRockETH = { - vault: "0x291B812D84707EEB256D618C4c333Ff5F451321F", - reStakingToken: "0xF1376bceF0f78459C0Ed0ba5ddce976F1ddF51F4", - oracle: "0x1bEB65b15689cCAeb5dA191c9fd5F94513923Cab", - }; - - const bedRockETH1x = { - vault: "0x8E2afd8E9C64097b9908c453fCd939fe81b102AF", - reStakingToken: "0xF1376bceF0f78459C0Ed0ba5ddce976F1ddF51F4", - oracle: "0x1bEB65b15689cCAeb5dA191c9fd5F94513923Cab", - }; - - const svETH = { - vault: "0xaF33b6372354149c33893B6fA6959Be0607D53dE", - reStakingToken: "0x6733F0283711F225A447e759D859a70b0c0Fd2bC", - oracle: "svETH", - }; - - const svETH1x = { - vault: "0x060Feab7904378e2A487974e7Ba98251aD65247F", - reStakingToken: "0x6733F0283711F225A447e759D859a70b0c0Fd2bC", - oracle: "svETH", - }; - - const mswETH = { - vault: "0x7c505E03460aEF7FE88e218CC5fcEeCCcA4C4394", - reStakingToken: "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", - }; - - const mswETH1x = { - vault: "0x1100195fbdA2f22AA6f394E6C65f168779Fe572c", - reStakingToken: "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", - }; - const strategies = [ - ezETH, - weETH, - rsETH, - ezETH1x, - weETH1x, - rsETH1x, - bedRockETH, - bedRockETH1x, - svETH1x, - svETH, - // mswETH, @note require another function to return the balance of - mswETH1x, - ]; - strategies.forEach(({ vault, reStakingToken }) => tokensAndOwners.push([reStakingToken, vault])); - - // mswETH - const mswETHBal = await api.call({ - abi: contractAbis.getMswBalance, - target: mswETH.vault, - }); - - api.add(mswETH.reStakingToken, mswETHBal); - - //new strats on pendle v2 - const pTweETH = { - vault: "0xE9E2087CD1179378C847C1f3B73CCA929e3deb95", - pendleAddress: "0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966", - }; - - const pTezETH = { - vault: "0x679EB9b7C57d9B98684034CDAfC2F4a72ABfEBD6", - pendleAddress: "0xeee8aed1957ca1545a0508afb51b53cca7e3c0d1", - }; - - const pTsETH = { - vault: "0x72Da018b1C7FAACEAa141DEc753F1fFe88c493AD", - pendleAddress: "0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e", - }; - - const bptrswETH1x2 = { - vault: "0x76338fca82925Fe2Df2C4F2c6e9545247617C634", - pendleAddress: "0x7bAf258049cc8B9A78097723dc19a8b103D4098F" - }; - - //new 1x strats on pendle v2 - - //PT Tensorplex Staked TAO 27JUN2024 (PT-stTAO-...) - const bptstTao1x = { - vault: "0xc9710Ea04A0adabb80e4215DFf38DA13005212B5", - pendleAddress: "0x5282Ec643C3790E0F781508162a4Aa13fd09C528", - }; - - //PT Zircuit Ether.fi weETH 27JUN2024 (PT-zs-weE...) - - const bptzweETH1x = { - vault: "0xDb50643e39BAF4bb88D4d1de68465dAA72083a65", - pendleAddress: "0x4AE5411F3863CdB640309e84CEDf4B08B8b33FfF", - }; - - const bptzezETH1x = { - vault: "0xA6550cB1C5a06D41C3Ed2CA6D52a12A5E1C558F5", - pendleAddress: "0xDDFD5e912C1949B4bDb12579002c44B7A83F9E88", - }; - - const bptpufETH1x = { - vault: "0x43D10bfB9f1625827Ee8EE7A461eDE28340bdBb5", - pendleAddress: "0xC58aa33Ce619c7f7Ac4929DF357D0Ef762edbD23", - }; - - const bptzrsETH1x = { - vault: "0x8B82c3DAdEba7FAc081adE5a01A3117839faf0EF", - pendleAddress: "0x094bE6bD31D7B860f7d2C1f280fD09F0463d7e67", - }; - const bptzUSDe1x = { - vault: "0x1F53c5474250DCe45b64B32B4917b5473fa7c0C2", - pendleAddress: "0x3d4F535539A33FEAd4D76D7b3B7A9cB5B21C73f1", - }; - - const bptrswETH1x = { - vault: "0x9977eEA94D74CC31eb0e2870C356D599cd64E2f5", - pendleAddress: "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa", - }; - - const pTEzETHDEC30 = { - vault: "0xebdaDFC590393938b601a9738C3107460838e880", - pendleAddress: "0xf7906F274c174A52d444175729E3fa98f9bde285", - }; - - const tokensAndOwners2 = [ - pTweETH, - pTezETH, - pTsETH, - bptzweETH1x, - bptzezETH1x, - bptpufETH1x, - bptzrsETH1x, - bptzUSDe1x, - bptrswETH1x, - bptrswETH1x2, - pTEzETHDEC30, - ].map((i) => [i.pendleAddress, i.vault]); - tokensAndOwners.push(...tokensAndOwners2); - await api.sumTokens({ tokensAndOwners }); - }, - staking: staking("0x296281cC6EB049F33aB278D946F18d9cacCFcfB5", "0x2BE056e595110B30ddd5eaF674BdAC54615307d9"), - }, - //-----------------------------------------------------------------------// - - arbitrum: { - tvl: async (api) => { - //lending - const lendingArb = { - usdc_e: "0xa2e4cab1F6f9f1163bCe937517f1935BEc4a0A7c", - usdt: "0xeb0b9B5FFb763dD69440565F63c67f9695B7C3dA", - arb: "0x529f94bcd37896b6a38452497C62b2F0a8217517", - wstETH: "0x521A8Ca3baF3d7677ddCC091eD91D969D4AfcfF8", - eth: "0x97801654D2048E639043c77b16Bc906541B3490a", - usdc: "0xd3E1BDe4b4163c86B9b7668dE8Ae7618720dCa93", - }; - - const bptUSDe1x = { - vault: "0x83886Af55Dac462Dc7840cdb0157bB3e7d8A6ac4", - pendleAddress: "0xad853EB4fB3Fe4a66CdFCD7b75922a0494955292", - }; - - const bsolvBTC1X = { - vault: "0x43D10bfB9f1625827Ee8EE7A461eDE28340bdBb5", - tokenAddress: "0x3647c54c4c2C65bC7a2D63c0Da2809B399DBBDC0", - }; - - await api.sumTokens({ - tokensAndOwners: [ - [ADDRESSES.arbitrum.USDC, lendingArb.usdc_e], - [ADDRESSES.arbitrum.USDT, lendingArb.usdt], - [ADDRESSES.arbitrum.WSTETH, lendingArb.wstETH], - [ADDRESSES.arbitrum.WETH, lendingArb.eth], - [ADDRESSES.arbitrum.ARB, lendingArb.arb], - [ADDRESSES.arbitrum.USDC_CIRCLE, lendingArb.usdc], - [bptUSDe1x.pendleAddress, bptUSDe1x.vault], - [bsolvBTC1X.tokenAddress, bsolvBTC1X.vault], - ], - }); - - // leverage users - const ezETH = { - vault: "0x6295248F578bFA9c057a3e1182BED27121530E7A", - reStakingToken: ADDRESSES.blast.ezETH, - oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B", //Renzo - }; - - const weETH = { - vault: "0xb8Cfb3406aBE78a2C836DCe69608e9cD80a78301", - reStakingToken: ADDRESSES.arbitrum.weETH, - oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B", - }; - - const rsETH = { - vault: "0x65E7C3C88806FF010BB197B2577cCddA9704fA2F", - reStakingToken: ADDRESSES.berachain.rsETH, - oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", - }; - - const ezETH1x = { - vault: "0x0bAc1a3D569c16D8AD9D3aB37f61dAF18DCfF781" /*vault*/, - reStakingToken: ADDRESSES.blast.ezETH /*reStakingToken*/, - oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B" /*oracle*/, - }; - const weETH1x = { - vault: "0xF528B8EA22a17000e49a914658d7E0F7d982803e" /*vault*/, - reStakingToken: ADDRESSES.arbitrum.weETH /*reStakingToken*/, - oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B" /*oracle*/, - }; - - const rsETH1x = { - vault: "0xe929BF8368171a76D4A828ee2cD4A50CcE31d203" /*vault*/, - reStakingToken: ADDRESSES.berachain.rsETH /*reStakingToken*/, - oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", - }; - - const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x]; - - for (const strategy of strategies) { - const bal = await api.call({ - abi: contractAbis.balanceOf, - target: strategy.reStakingToken, - params: [strategy.vault], - }); - - const lrETHPriceInETH = await api.call({ - target: strategy.oracle, - abi: contractAbis.readOraclePrice, - }); - - const balInETH = (bal * lrETHPriceInETH.value) / 1e18; - - api.add(ADDRESSES.arbitrum.WETH, balInETH); - } - }, - }, -}; diff --git a/projects/aitech/index.js b/projects/aitech/index.js deleted file mode 100644 index 100ae1b9cd5..00000000000 --- a/projects/aitech/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking') - -const aitechStakingContract = '0x2C4dD7db5Ce6A9A2FB362F64fF189AF772C31184'; -const aitechTokenContract = '0x2D060Ef4d6BF7f9e5edDe373Ab735513c0e4F944'; - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking(aitechStakingContract, aitechTokenContract,) - }, -} diff --git a/projects/aixcb/index.js b/projects/aixcb/index.js deleted file mode 100644 index 6a81da4a4c1..00000000000 --- a/projects/aixcb/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { staking } = require("../helper/staking"); - -// Token addresses -const AIXCB_TOKEN = "0x76C71F1703Fbf19FFdcF3051E1e684Cb9934510f"; -const WETH = ADDRESSES.base.WETH; - -// LP and staking addresses -const AERODROME_LP_TOKEN = "0x19C3c7EEfb070EE00ddE367A9768De1DF52cbE5d"; -const LP_STAKING = "0xEE5C223aD4055beE465244d8Cb344fb22DaDa570"; -const AIXCB_STAKING = "0xF5acA5c3a0B70f847dE4652AC77BD601ccFE8339"; - -async function stakingTvl(api) { - const totalStaked = await api.call({ abi: 'uint256:getTotalStaked', target: AIXCB_STAKING, }); - api.add(AIXCB_TOKEN, totalStaked); -} - -module.exports = { - methodology: 'TVL consists of aixCB tokens staked in the AIXCBStaking contract (getTotalStaked) and Aerodrome vAMM-aixCB/WETH LP tokens staked in the AIXCBLPStaking contract (totalStakedAmount).', - base: { - tvl: () => ({}), - staking: stakingTvl, - pool2: staking(LP_STAKING, AERODROME_LP_TOKEN), - }, -}; \ No newline at end of file diff --git a/projects/ajira-pay-finance-v2/index.js b/projects/ajira-pay-finance-v2/index.js deleted file mode 100644 index db504713e8e..00000000000 --- a/projects/ajira-pay-finance-v2/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { covalentGetTokens } = require('../helper/token') -const { getWhitelistedTokens } = require('../helper/streamingHelper') - -const config = { - linea: { owners: ['0xD2AA294B9A5097F4A09fd941eD0bE665bd85Eab2'], }, -} - -module.exports = { - methodology: "TVL is based on the active balances of assets deposited at the V2 stream vaults for token streaming and vesting.", -} - -Object.keys(config).forEach(chain => { - const { owners } = config[chain] - module.exports[chain] = { - tvl: tvl(false), - vesting: tvl(true), - } - - function tvl(isVesting) { - return async (api) => { - const tokens = (await Promise.all(owners.map(i => covalentGetTokens(i, api, { onlyWhitelisted: false, })))).flat() - return api.sumTokens({ owners, tokens: await getWhitelistedTokens({ api, tokens, isVesting})}) - } - } -}) \ No newline at end of file diff --git a/projects/ajira-pay-finance/index.js b/projects/ajira-pay-finance/index.js deleted file mode 100644 index 09557d2a85a..00000000000 --- a/projects/ajira-pay-finance/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getWhitelistedTokens } = require('../helper/streamingHelper') - -const config = { - kava: { contract: '0xd8FDE1F90895AB64E74efD376129Ae3e79F1B9f9'}, - polygon: { contract: '0x015E0622F4311eA67dEcB5b433EFd611EF7600c2'}, -} - -module.exports = { - methodology: "TVL is based on the active balances of assets deposited at the stream and vesting vaults for token streaming and vesting.", -} - -Object.keys(config).forEach(chain => { - const { contract } = config[chain] - module.exports[chain] = { - tvl: tvl(false), - vesting: tvl(true), - } - - function tvl(isVesting) { - return async (api) => { - const tokens = await api.fetchList({ lengthAbi: 'uint256:totalActiveAssets', itemAbi: 'function activeAssets(uint256) view returns (address)', target: contract}) - return api.sumTokens({ owner: contract, tokens: await getWhitelistedTokens({ api, tokens, isVesting})}) - } - } -}) - diff --git a/projects/ajna-v2/index.js b/projects/ajna-v2/index.js deleted file mode 100644 index 2fa3522cb89..00000000000 --- a/projects/ajna-v2/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const poolFactories = { - ethereum: '0x6146DD43C5622bB6D12A5240ab9CF4de14eDC625', - arbitrum: '0xA3A1e968Bd6C578205E11256c8e6929f21742aAF', - avax: '0x2aA2A6e6B4b20f496A4Ed65566a6FD13b1b8A17A', - base: '0x214f62B5836D83f3D6c4f71F174209097B1A779C', - blast: '0xcfCB7fb8c13c7bEffC619c3413Ad349Cbc6D5c91', - bsc: '0x86eE95085F204B525b590f21dec55e2373F6da69', - filecoin: '0x0E4a2276Ac259CF226eEC6536f2b447Fc26F2D8a', - hemi: '0xE47b3D287Fc485A75146A59d459EC8CD0F8E5021', - linea: '0xd72A448C3BC8f47EAfFc2C88Cf9aC9423Bfb5067', - mode: '0x62Cf5d9075D1d6540A6c7Fa836162F01a264115A', - optimism: '0x609C4e8804fafC07c96bE81A8a98d0AdCf2b7Dfa', - polygon: '0x1f172F881eBa06Aa7a991651780527C173783Cf6', - rari: '0x10cE36851B0aAf4b5FCAdc93f176aC441D4819c9', -}; - -async function getTvl(poolFactory, api) { - const pools = await api.call({ abi: 'address[]:getDeployedPoolsList', target: poolFactory }); - const collaterals = await api.multiCall({ abi: 'address:collateralAddress', calls: pools }); - const borrows = await api.multiCall({ abi: 'address:quoteTokenAddress', calls: pools }); - const ownerTokens = pools.map((v, i) => [[collaterals[i], borrows[i]], v]); - return sumTokens2({ ownerTokens, api }); -} - -async function getBorrowed(poolFactory, api) { - const pools = await api.call({ abi: 'address[]:getDeployedPoolsList', target: poolFactory }); - const debts = await api.multiCall({ abi: 'function debtInfo() external view returns (uint256, uint256, uint256, uint256)', calls: pools }); - const borrows = await api.multiCall({ abi: 'address:quoteTokenAddress', calls: pools }); - const borrowScale = await api.multiCall({ abi: 'uint:quoteTokenScale', calls: pools }); - const balances = {}; - pools.forEach((v, i) => sdk.util.sumSingleBalance(balances, borrows[i], debts[i][0]/borrowScale[i])); - return balances; -} - -module.exports.methodology = "We are not tracking this tokens: bfBTC and msBTC" - -module.exports = Object.keys(poolFactories).reduce((acc, chain) => { - acc[chain] = { - tvl: (api) => getTvl(poolFactories[chain], api), - borrowed: (api) => getBorrowed(poolFactories[chain], api) - }; - return acc; -}, { misrepresentedTokens: true }); diff --git a/projects/ajna/index.js b/projects/ajna/index.js deleted file mode 100644 index 0cd290b6031..00000000000 --- a/projects/ajna/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sdk = require("@defillama/sdk") -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const pools = await api.call({ abi: 'address[]:getDeployedPoolsList', target: '0xe6f4d9711121e5304b30ac2aae57e3b085ad3c4d'}) - const collaterals = await api.multiCall({ abi: 'address:collateralAddress', calls: pools}) - const borrows = await api.multiCall({ abi: 'address:quoteTokenAddress', calls: pools}) - const ownerTokens = pools.map((v, i) => [[collaterals[i], borrows[i]], v]) - return sumTokens2({ ownerTokens, api}) -} - -async function borrowed(api) { - const pools = await api.call({ abi: 'address[]:getDeployedPoolsList', target: '0xe6f4d9711121e5304b30ac2aae57e3b085ad3c4d'}) - const debts = await api.multiCall({ abi: 'function debtInfo() external view returns (uint256, uint256, uint256, uint256)', calls: pools}) - const borrows = await api.multiCall({ abi: 'address:quoteTokenAddress', calls: pools}) - const borrowScale = await api.multiCall({ abi: 'uint:quoteTokenScale', calls: pools}) - const balances = {} - pools.map((v, i) => sdk.util.sumSingleBalance(balances, borrows[i], debts[i][0]/borrowScale[i])) - return balances - } - -module.exports = { - misrepresentedTokens: true, - ethereum: { tvl, borrowed } -} \ No newline at end of file diff --git a/projects/akiba/index.js b/projects/akiba/index.js deleted file mode 100644 index 64aaf634f83..00000000000 --- a/projects/akiba/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require('../helper/unknownTokens') - -const Contracts = { - kava: { - wkava: ADDRESSES.kava.WKAVA, - akiba: "0x8f5af8d2E06c976970752b5596BE05Cd518Adcdd", - bank: "0x0CA1088C075E5C9447D5C07984aCCc48c816D01D", // Pool - multiFeeDistribution: "0xa41045953C7fa32CCea9132997b2E7460db5ae3F", // Staking - chef: "0x6b2349b0B2b2b9c1B970a1d0E5AB4226d6Cb78c8", - lps: [ - "0xAd18F4d2087d954989d7b1f728AeE1941F7BC25F", // AKIBA_KAVA_LP - "0xc75Bd803C2671fC4C0d7350C88e8250e9F7E9805", // KAVAX_KAVA_LP - ] - }, -}; - -module.exports = { - kava: { - tvl: sumTokensExport({ owner: Contracts.kava.bank, tokens: [Contracts.kava.wkava, nullAddress] }), - staking: sumTokensExport({ owner: Contracts.kava.multiFeeDistribution, tokens: [Contracts.kava.akiba], useDefaultCoreAssets: true, lps: Contracts.kava.lps}), - pool2: sumTokensExport({ owner: Contracts.kava.chef, tokens: Contracts.kava.lps, useDefaultCoreAssets: true, lps: Contracts.kava.lps}), - }, -}; diff --git a/projects/akronswap/index.js b/projects/akronswap/index.js deleted file mode 100644 index b309ff85895..00000000000 --- a/projects/akronswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -const tvl = getUniTVL({ factory: '0xAf39606bec181887951Ab6912Ac7EA216Bd6E4B4', useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - ethereum: { tvl, }, - arbitrum: { tvl, }, - base: { tvl, }, - bsc: { tvl, }, -} \ No newline at end of file diff --git a/projects/akropolis/index.js b/projects/akropolis/index.js deleted file mode 100644 index 41bd6e827b3..00000000000 --- a/projects/akropolis/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { tvl: () => ({}), staking: staking('0x3501Ec11d205fa249f2C42f5470e137b529b35D0', '0x8Ab7404063Ec4DBcfd4598215992DC3F8EC853d7') } -}; diff --git a/projects/aktionariat/index.js b/projects/aktionariat/index.js deleted file mode 100644 index 44ba41bf2c3..00000000000 --- a/projects/aktionariat/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') - -const graphs = { - ethereum: sdk.graph.modifyEndpoint('2ZoJCp4S7YP7gbYN2ndsYNjPeZBV1PMti7BBoPRRscNq'), - optimism: sdk.graph.modifyEndpoint('3QfEXbPfP23o3AUzcmjTfRtUUd4bfrFj3cJ4jET57CTX'), - polygon: sdk.graph.modifyEndpoint('7camBLZckE5TLKha372tqawpDs8Lkez6yYiri7PykRak'), -} - -function tvlPaged(chain) { - return async (api) => { - const size = 1000 - let graphQueryPaged = ` - query brokerbotQuery($lastId: String, $block: Int) { - brokerbots(block: { number: $block } first:${size} where: {id_gt: $lastId totalValueLockedUSD_gt: 100}) { - id - token { id } - base { id } - } - } - ` - const data = await cachedGraphQuery('aktionariat-brokerbot/' + chain, graphs[chain], graphQueryPaged, { useBlock: true, api, fetchById: true, }) - const ownerTokens = data.map(i => [[i.token.id, i.base.id], i.id]) - return api.sumTokens({ ownerTokens }) - } -} - -module.exports = { - methodology: `Counts the tokens locked on brokerbots, pulling the brokerbot addresses from the 'aktionariat/brokerbot' subgraph`, - timetravel: false, - hallmarks: [] -} -const chains = ['ethereum', 'optimism', 'polygon'] - -chains.forEach(chain => { - module.exports[chain] = { - tvl: tvlPaged(chain) - } -}) diff --git a/projects/aladdin-dao/abis/Vault.json b/projects/aladdin-dao/abis/Vault.json deleted file mode 100644 index 1226a3d5237..00000000000 --- a/projects/aladdin-dao/abis/Vault.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "balance": "uint256:balance" -} \ No newline at end of file diff --git a/projects/aladdin-dao/index.js b/projects/aladdin-dao/index.js deleted file mode 100644 index 2473f69d620..00000000000 --- a/projects/aladdin-dao/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const sdk = require("@defillama/sdk"); -const vaultABI = require('./abis/Vault.json') - - -const tokenMaster = '0xfF4446E9dF1c8281CE1d42610c3bC0342f93E4d7' -const aldsETH = '0xB17d98c36d2238Ffcb27bF797cA9967B3Cc9Aa07' -const aldcrvRenWBTC = '0x4EE014060F4816ad294857d29C22fe62B0e9580B' -const ald3CRV = '0x5C8dC3a18761e4F22F7B8D41228970477168d9e2' -const aldSLPETHWBTC = '0x1C7ed66abE1BA029c8EFceecfBfc4056B8C4bbfc' -const unilpALDETH = '0xED6c2F053AF48Cba6cBC0958124671376f01A903' -const unilpALDUSDC = '0xaAa2bB0212Ec7190dC7142cD730173b0A788eC31' -const crvRenWBTC = '0x49849C98ae39Fff122806C06791Fa73784FB3675' -const SETH = '0xA3D87FffcE63B53E0d54fAa1cc983B7eB0b74A9c' -const threeCRV = '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490' -const slpETHWBTC = '0xceff51756c56ceffca006cd410b03ffc46dd3a58' - -const pools = [aldcrvRenWBTC, aldsETH, ald3CRV, aldSLPETHWBTC, unilpALDETH, unilpALDUSDC] -const aldVaults = [aldcrvRenWBTC, aldsETH, ald3CRV, aldSLPETHWBTC] -const aldVaultUnderlyingTokens = [crvRenWBTC, SETH, threeCRV, ]; - -async function tvl(timestamp, block, _, api) { - let balances = {} - const lockedTokens = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - calls: pools.map(p => ({ - target: p, - params: tokenMaster - })), - block - }); - - // whether it's in vaults or in staking, it belongs to aladdin's tvl - const aldUnderlyingTokenBalances = (await sdk.api.abi.multiCall({ - abi: vaultABI['balance'], - calls: aldVaults.map(p => ({ - target: p, - params: [], - })), - block - })).output.map(x => x.output); - - const lpPositions = []; - const crvBalances = []; - - lockedTokens.output.forEach((call, index) => { - const token = pools[index]; - const balance= call.output; - if (index === 4 || index === 5) { - lpPositions.push({balance, token}) - } else if (index === 0 || index == 1 || index == 2 ) { - crvBalances.push(aldUnderlyingTokenBalances[index]) - } else if (index === 3) { - lpPositions.push({balance: aldUnderlyingTokenBalances[index], token: slpETHWBTC}) - } - }) - - lpPositions.forEach(({balance, token}) => sdk.util.sumSingleBalance(balances,token,balance, api.chain)) - aldVaultUnderlyingTokens.forEach((token, i) => sdk.util.sumSingleBalance(balances,token,crvBalances[i], api.chain)) - return balances -} - - -module.exports = { - doublecounted: true, - ethereum:{ - tvl, - }, -} diff --git a/projects/alchemist/index.js b/projects/alchemist/index.js deleted file mode 100644 index 5a183744659..00000000000 --- a/projects/alchemist/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const getAludelDataABI = "function getAludelData() view returns ((address stakingToken, address rewardToken, address rewardPool, (uint256 floor, uint256 ceiling, uint256 time) rewardScaling, uint256 rewardSharesOutstanding, uint256 totalStake, uint256 totalStakeUnits, uint256 lastUpdate, (uint256 duration, uint256 start, uint256 shares)[] rewardSchedules) aludel)" - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0xF016fa84D5f3a252409a63b5cb89B555A0d27Ccf', - eventAbi: 'event InstanceAdded (address instance)', - onlyArgs: true, - fromBlock: 11881110, - }) - const pools = logs.map(l => l.instance) - const owners = await api.multiCall({ abi: 'address:owner', calls: pools }) - const data = await api.multiCall({ abi: getAludelDataABI, calls: owners }) - data.forEach(i => api.add(i.stakingToken, i.totalStake)) - await sumTokens2({ api, resolveLP: true, }) - api.removeTokenBalance('0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab') - return api.getBalances() -} - -module.exports = { - ethereum: { - tvl, - pool2: () => ({}), - } -} diff --git a/projects/alchemix/contracts.json b/projects/alchemix/contracts.json deleted file mode 100644 index e5b7eb6cab9..00000000000 --- a/projects/alchemix/contracts.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "arbitrum": { - "tokenHolders": { - "alUSDAlchemist": "0xb46eE2E4165F629b4aBCE04B7Eb4237f951AC66F", - "alUSDTransmuterBuffer": "0x00E33722ba54545667E76a18CE9D544130eEAbcC", - "alUSDTransmuter": "0xe7ec71B894583E9C1b07873fA86A7e81f3940eA8", - "alETHAlchemist": "0x654e16a0b161b150F5d1C8a5ba6E7A7B7760703A", - "alETHTransmuterBuffer": "0xECAd08EE07f1AA87f3E080997eBa6d02d28bb9D2", - "alETHTransmuter": "0x1EB7D78d7f6D73e5de67Fa62Fd8b55c54Aa9c0D4" - }, - "underlyingTokens": { - "USDC": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - "WETH": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - "wstETH": "0x5979D7b546E38E414F7E9822514be443A4800529" - }, - "yvTokens": { - "aUSDC": "0x248a431116c6f6FCD5Fe1097d16d0597E24100f5" - }, - "cvxLPpools": { - "crAMM-FRAX-alUSD": { - "poolAddress": "0x43fbf34df6da5fC66E15E023D3b690Fd0dE33cD7", - "holder": "0x7e108711771DfdB10743F016D46d75A9379cA043", - "tokenAddress": "0xfd599DB360Cd9713657C95dF66650A427d213010", - "alToken": "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A" - }, - "crAMM-GRAI-alUSD": { - "poolAddress": "0x72B6594a0c8D9eE9725ce780f87F9E00615D4b10", - "holder": "0x7e108711771DfdB10743F016D46d75A9379cA043", - "tokenAddress": "0x510a496b2443ba52A3B269Fee5A241a4ED4cCA58", - "alToken": "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A" - }, - "crAMM-alETH-frxETH": { - "poolAddress": "0xC3f26d2Fa16129a8d4A5A0f94D25F2cdd9005CDb", - "holder": "0x7e108711771DfdB10743F016D46d75A9379cA043", - "tokenAddress": "0xfB4fE921F724f3C7B610a826c827F9F6eCEf6886", - "alToken": "0x17573150d67d820542EFb24210371545a4868B03" - } - } - }, - "fantom": { - "tokenHolders": { - "alUSDAlchemist": "0x76b2E3c5a183970AAAD2A48cF6Ae79E3e16D3A0E", - "alUSDTransmuterBuffer": "0x5a07d36D1f543960EE7806d35827E995539Fe5CF" - }, - "underlyingTokens": { - "DAI": "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", - "USDC": "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", - "fUSDT": "0x049d68029688eAbF473097a2fC38ef61633A3C7A" - }, - "yvTokens": { - "yvDAI": "0x637ec617c86d24e421328e6caea1d92114892439", - "yvUSDC": "0xef0210eb96c7eb36af8ed1c20306462764935607", - "yvUSDT": "0x148c05caf1bb09b5670f00d511718f733c54bc4c" - } - }, - "optimism": { - "tokenHolders": { - "alUSDAlchemist": "0x10294d57a419c8eb78c648372c5baa27fd1484af", - "alUSDTransmuterBuffer": "0xe99a9a717c60f9639b235ede422c27d60fbeb3b9", - "alETHAlchemist": "0xe04Bb5B4de60FA2fBa69a93adE13A8B3B569d5B4", - "alETHTransmuter": "0x7f50923ee8e2bc3596a63998495baf2948a28f68" - }, - "underlyingTokens": { - "DAI": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "USDC": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "USDT": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "WETH": "0x4200000000000000000000000000000000000006", - "wstETH": "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb" - }, - "yvTokens": { - "aDAI": "0x43A502D7e947c8A2eBBaf7627E104Ddcc253aBc6", - "aUSDC": "0x4186Eb285b1efdf372AC5896a08C346c7E373cC4", - "aUSDT": "0x2680b58945A31602E4B6122C965c2849Eb76Dd3B", - "aWETH": "0x337B4B933d60F40CB57DD19AE834Af103F049810", - "ysUSDC": "0x059Eaa296B18E0d954632c8242dDb4a271175EeD", - "ysDAI": "0x0A86aDbF58424EE2e304b395aF0697E850730eCD", - "ysWETH": "0xE62DDa84e579e6A37296bCFC74c97349D2C59ce3" - }, - "cvxLPpools": { - "aAMM-USDC-alUSD": { - "poolAddress": "0xE8b219c285e4e4ec28ac80Fdc4b9739b18cB8890", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0x124D69DaeDA338b1b31fFC8e429e39c9A991164e", - "alToken": "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A" - }, - "sAMM-DOLA-alUSD": { - "poolAddress": "0x13bAeC9C12544066a7918efc3D8b626dBbFE1615", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0x67C253eB6C2e69F9E1114aEeAD0DB4FA8F417AC3", - "alToken": "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A" - }, - "sAMM-FRAX-alUSD": { - "poolAddress": "0xA8E0754dd8Ef3700Ac8478Fdb8d4B8473de3817C", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0xaF03f51DE7a0E62BF061F6Fc3931cF79166B0a29", - "alToken": "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A" - }, - "sAMM-alUSD-MAI": { - "poolAddress": "0xA688080CA069231C6D5713CD009662Ea54437A02", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0xfA09479d72E2b3f8B6dF63399772237Ad6658D76", - "alToken": "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A" - }, - "vAMM-OP-alUSD": { - "poolAddress": "0x6101236Fd0E04427952799323D89B99BE0eab52f", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0x60BE3FB22DDF30C17604b86eC005F6173B1170Aa", - "alToken": "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A" - }, - "sAMMM-USDC.e-alUSD": { - "poolAddress": "0x4d7959d17B9710BE87e3657e69d946914221BB88", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0x4d7959d17B9710BE87e3657e69d946914221BB88", - "alToken": "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A" - }, - "sAMM-alETH-WETH": { - "poolAddress": "0xc16adBf2d01d6524B79CbB610cE31d5db80eee3C", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0xa1055762336F92b4B8d2eDC032A0Ce45ead6280a", - "alToken": "0x3E29D3A9316dAB217754d13b28646B76607c5f04" - }, - "sAMM-alETH-frxETH": { - "poolAddress": "0xFc0B9A9C2b63E6ACACa91A77A80bfa83C615e6C5", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0x1AD06Ca54de04DBe9e2817F4C13eCB406DCbeAf0", - "alToken": "0x3E29D3A9316dAB217754d13b28646B76607c5f04" - }, - "vAMM-alETH-OP": { - "poolAddress": "0xB715D27CCe97e869Cff840072ce1Eab1d982791E", - "holder": "0xb29617209961DB995dD30a4AB94BA0034A4284f9", - "tokenAddress": "0xA5EDb0EF932f7c2f37B8FC75CB01948F6258a4f8", - "alToken": "0x3E29D3A9316dAB217754d13b28646B76607c5f04" - } - } - }, - "ethereum": { - "tokenHolders": { - "alUSDAlchemist": "0x5C6374a2ac4EBC38DeA0Fc1F8716e5Ea1AdD94dd", - "alETHAlchemist": "0x062Bf725dC4cDF947aa79Ca2aaCCD4F385b13b5c", - "alUSDAMO": "0x9735f7d3ea56b454b24ffd74c58e9bd85cfad31b", - "alETHAMO": "0xe761bf731a06fe8259fee05897b2687d56933110", - "USDTransmuterB": "0xeE69BD81Bd056339368c97c4B2837B4Dc4b796E7", - "USDYearnVaultAdapter": "0xb039eA6153c827e59b620bDCd974F7bbFe68214A", - "USDYearnVaultAdapterTransmuterB": "0x6Fe02BE0EC79dCF582cBDB936D7037d2eB17F661", - "ETHTransmuter": "0x9FD9946E526357B35D95Bcb4b388614be4cFd4AC", - "ETHAlchemist": "0xf8317BD5F48B6fE608a52B48C856D3367540B73B", - "ETHYearnVaultAdapter": "0x546E6711032Ec744A7708D4b7b283A210a85B3BC", - "ETHYearnVaultAdapterB": "0x6d75657771256C7a8CB4d475fDf5047B70160132", - "WETHMigration": "0xb4E7cc74e004F95AEe7565a97Dbfdea9c1761b24", - "DAIMigration": "0x72A7cb4d5daB8E9Ba23f30DBE8E72Bc854a9945A" - }, - "underlyingTokens": { - "DAI": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "USDC": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "USDT": "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "wstETH": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", - "rETH": "0xae78736Cd615f374D3085123A210448E74Fc6393", - "WETH": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "FRAX": "0x853d955aCEf822Db058eb8505911ED77F175b99e", - "sfrxETH": "0xac3E018457B222d93114458476f3E3416Abbe38F" - }, - "yvTokens": { - "yvDAI": "0xda816459f1ab5631232fe5e97a05bbbb94970c95", - "yvUSDC": "0xa354f35829ae975e850e23e9615b11da1b3dc4de", - "yvUSDT": "0x7da96a3891add058ada2e826306d812c638d87a7", - "yvWETH": "0xa258c4606ca8206d8aa700ce2143d7db854d168c", - "aDAI": "0xcE4a49d7ed99C7c8746B713EE2f0C9aA631688d8", - "aUSDC": "0xf591D878608e2e5c7D4f1E499330f4AB9BbaE37a", - "aUSDT": "0xBC11De1F20e83F0a6889B8c7A7868E722694E315", - "vaUSDC": "0xa8b607Aa09B6A2E306F93e74c282Fb13f6A80452", - "vaDAI": "0x0538C8bAc84E95A9dF8aC10Aad17DbE81b9E36ee", - "vaFRAX": "0xc14900dFB1Aa54e7674e1eCf9ce02b3b35157ba5", - "aFRAX": "0x318334A6dD21d16A8442aB0b7204E81Aa3FB416E", - "aWETH": "0x61134511187a9a2DF38D10DBe07Ba2e8E5563967", - "vaETH": "0xd1C117319B3595fbc39b471AB1fd485629eb05F2" - }, - "staking": { - "token": "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", - "holder": "0xAB8e74017a8Cc7c15FFcCd726603790d26d7DeCa" - } - }, - "cvxLPpools": { - "alUSD+FRAXBP": { - "poolAddress": "0x26598e3E511ADFadefD70ab2C3475Ff741741104", - "holder": "0x06378717d86B8cd2DBa58c87383dA1EDA92d3495", - "tokenAddress": "0xb30da2376f63de30b42dc055c93fa474f31330a5", - "alToken": "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9" - }, - "alUSD-3CRV": { - "poolAddress": "0x02E2151D4F351881017ABdF2DD2b51150841d5B3", - "holder": "0x9735f7d3ea56b454b24ffd74c58e9bd85cfad31b", - "tokenAddress": "0x43b4fdfd4ff969587185cdb6f0bd875c5fc83f8c", - "alToken": "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9" - }, - "alETH-ETH": { - "poolAddress": "0x48Bc302d8295FeA1f8c3e7F57D4dDC9981FEE410", - "holder": "0xe761bf731a06fe8259fee05897b2687d56933110", - "tokenAddress": "0xc4c319e2d4d66cca4464c0c2b32c9bd23ebe784e", - "alToken": "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6" - } - } - } \ No newline at end of file diff --git a/projects/alchemix/index.js b/projects/alchemix/index.js deleted file mode 100644 index 38b2ff8afe2..00000000000 --- a/projects/alchemix/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking.js"); -const contracts = require("./contracts"); - -async function tvl(api) { - const chain = api.chain - const tokens = Object.values(contracts[chain].underlyingTokens).concat(Object.values(contracts[chain].yvTokens ?? [])) - await sumTokens2({ tokens, api, owners: Object.values(contracts[chain].tokenHolders) }) - if (api.chain !== 'ethereum') return api.getBalances() - - await Promise.all( - Object.values(contracts.cvxLPpools).map(async ({ poolAddress, holder, tokenAddress, alToken }) => { - const lpTokenBalance = await api.call({ target: poolAddress, abi: "erc20:balanceOf", params: holder, }) - const supply = await api.call({ target: tokenAddress, abi: "erc20:totalSupply", }) - if (+supply === 0) return; - const ratio = lpTokenBalance / supply - const tokenBalances = await api.multiCall({ target: tokenAddress, abi: 'function balances(uint256) view returns (uint256)', calls: [0, 1] }) - const tokens = await api.multiCall({ target: tokenAddress, abi: 'function coins(uint256) view returns (address)', calls: [0, 1] }) - alToken = alToken.toLowerCase() - tokens.forEach((token, i) => { - if (token.toLowerCase() !== alToken) { - if (!isNaN(tokenBalances[i] * ratio)) api.add(token, tokenBalances[i] * ratio) - } - }) - }) - ) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - staking: staking( - contracts.ethereum.staking.holder, - contracts.ethereum.staking.token - ), - }, - fantom: { tvl, }, - optimism: { tvl, }, - arbitrum: { tvl }, -} diff --git a/projects/alcor/index.js b/projects/alcor/index.js deleted file mode 100644 index b8b614282e8..00000000000 --- a/projects/alcor/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// Alcor -// https://eos.alcor.exchange/ -async function eos() { - const accounts = ["swap.alcor", "eostokensdex"]; - const tokens = [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], - ]; - return await get_account_tvl(accounts, tokens); -} - -// Alcor -// https://wax.alcor.exchange -async function wax() { - const accounts = ["swap.alcor", "alcordexmain", "liquid.alcor"]; - const tokens = [ - ["eosio.token", "WAX", "wax"], - ["alien.worlds", "TLM", "alien-worlds"], - ["token.rfox", "USD", "redfox-labs"], - ["usdt.alcor", "USDT", "usdt-alcor"], - ["token.fusion", "LSWAX", "waxfusion-staked-wax"], - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `Alcor TVL is achieved by querying token balances from Swap & Limit smart contract(s).`, - eos: { - tvl: eos - }, - wax: { - tvl: wax - }, -} diff --git a/projects/aldrin/idl.json b/projects/aldrin/idl.json deleted file mode 100644 index 308ec939715..00000000000 --- a/projects/aldrin/idl.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "version": "1.1.0", - "name": "mm_farming_pool_v1", - "instructions": [], - "accounts": [ - { - "name": "Pool", - "type": { - "kind": "struct", - "fields": [ - { - "name": "lpTokenFreezeVault", - "type": "publicKey" - }, - { - "name": "poolMint", - "type": "publicKey" - }, - { - "name": "baseTokenVault", - "type": "publicKey" - }, - { - "name": "baseTokenMint", - "type": "publicKey" - }, - { - "name": "quoteTokenVault", - "type": "publicKey" - }, - { - "name": "quoteTokenMint", - "type": "publicKey" - }, - { - "name": "poolSigner", - "type": "publicKey" - }, - { - "name": "poolSignerNonce", - "type": "u8" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "initializerAccount", - "type": "publicKey" - }, - { - "name": "feeBaseAccount", - "type": "publicKey" - }, - { - "name": "feeQuoteAccount", - "type": "publicKey" - }, - { - "name": "feePoolTokenAccount", - "type": "publicKey" - }, - { - "name": "fees", - "type": { - "defined": "Fees" - } - } - ] - } - } - ], - "types": [ - { - "name": "Fees", - "type": { - "kind": "struct", - "fields": [ - { - "name": "tradeFeeNumerator", - "type": "u64" - }, - { - "name": "tradeFeeDenominator", - "type": "u64" - }, - { - "name": "ownerTradeFeeNumerator", - "type": "u64" - }, - { - "name": "ownerTradeFeeDenominator", - "type": "u64" - }, - { - "name": "ownerWithdrawFeeNumerator", - "type": "u64" - }, - { - "name": "ownerWithdrawFeeDenominator", - "type": "u64" - } - ] - } - } - ], - "errors": [] -} diff --git a/projects/aldrin/index.js b/projects/aldrin/index.js deleted file mode 100644 index 411e02164a9..00000000000 --- a/projects/aldrin/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, blacklistedTokens_default} = require("../helper/solana"); -const idl = require('./idl.json') - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, 'AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6', provider) - const programV2 = new Program(idl, 'CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4', provider) - const pairs = await program.account.pool.all() - const pairsV2 = await programV2.account.pool.all() - const tokenAccounts = [] - const addPool = ({ account }) => { - if (!blacklistedTokens_default.includes(account.quoteTokenMint.toString())) - tokenAccounts.push(account.quoteTokenVault.toString()) - if (!blacklistedTokens_default.includes(account.baseTokenMint.toString())) - tokenAccounts.push(account.baseTokenVault.toString()) - } - pairs.forEach(addPool) - pairsV2.forEach(addPool) - return sumTokens2({ tokenAccounts }) -} - -async function staking() { - return sumTokens2({ tokenAccounts: ['BAhtu6WzzTY72abMwNcjm8P6QvASaQNWnLY94ma69ocu'] }) -} - -module.exports = { - timetravel: false, - solana: { tvl, staking }, - hallmarks: [ - [1665521360, "Mango Markets Hack"], - ], -} diff --git a/projects/alephium-bridge/index.js b/projects/alephium-bridge/index.js deleted file mode 100644 index 4fc07c5cdc3..00000000000 --- a/projects/alephium-bridge/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const ethTokenBridgeAddress = '0x579a3bde631c3d8068cbfe3dc45b0f14ec18dd43' -const ethBridgedAlphAddress = '0x590f820444fa3638e022776752c5eef34e2f89a6' -const bscTokenBridgeAddress = '0x2971F580C34d3D584e0342741c6a622f69424dD8' -const bscBridgedAlphAddress = '0x8683BA2F8b0f69b2105f26f488bADe1d3AB4dec8' - -async function tvl(api) { - const ethApi = new sdk.ChainApi({ chain: 'ethereum', timestamp: api.timestamp }) - const bscApi = new sdk.ChainApi({ chain: 'bsc', timestamp: api.timestamp }) - await ethApi.getBlock() - await bscApi.getBlock() - const ethBal = await ethApi.call({ abi: 'erc20:totalSupply', target: ethBridgedAlphAddress }) - const bscBal = await bscApi.call({ abi: 'erc20:totalSupply', target: bscBridgedAlphAddress }) - api.addCGToken('alephium', (+ethBal + +bscBal) / 1e18) -} - -module.exports = { - methodology: "Tracks funds locked in the Alephium Bridge Token contracts on Ethereum and Binance Smart Chain", - ethereum: { - tvl: sumTokensExport({ - owner: ethTokenBridgeAddress, tokens: [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.DAI - ] - }), - }, - bsc: { - tvl: sumTokensExport({ - owner: bscTokenBridgeAddress, tokens: [ - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT - ] - }), - }, - alephium: { - tvl - } -}; \ No newline at end of file diff --git a/projects/alexlab/api.js b/projects/alexlab/api.js deleted file mode 100644 index a4887113947..00000000000 --- a/projects/alexlab/api.js +++ /dev/null @@ -1,113 +0,0 @@ -const { call } = require('../helper/chain/stacks-api') -const { getCache, setCache } = require('../helper/cache') -const { sleep } = require('../helper/utils') -const sdk = require('@defillama/sdk') -const { sumTokens } = require('../helper/chain/stacks') - -const factory = 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01' - -async function tvl(api) { - // https://docs.alexgo.io/developers/smart-contracts - - - // get simple weight pool data - const simpleWeightAMM = 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.simple-weight-pool-alex' - let { value: swPools } = await call({ target: simpleWeightAMM, abi: 'get-pools' }) - swPools = swPools.map(i => i.value) - for (const { value: pool } of swPools) { - const inputArgs = ['token-x', 'token-y'].map(key => pool[key]) - const { value: poolData } = await call({ target: simpleWeightAMM, abi: 'get-pool-details', inputArgs }) - api.add(pool['token-x'].value, poolData['balance-x'].value) - api.add(pool['token-y'].value, poolData['balance-y'].value) - await sleep(2100) - } - - - - // get fixed weight pool data - const fixedWeightAMM = 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.fixed-weight-pool-v1-01' - let { value: fwPools } = await call({ target: fixedWeightAMM, abi: 'get-pools' }) - fwPools = fwPools.map(i => i.value) - for (const { value: pool } of fwPools) { - const inputArgs = ['token-x', 'token-y', 'weight-x', 'weight-y'].map(key => pool[key]) - const { value: poolData } = await call({ target: fixedWeightAMM, abi: 'get-pool-details', inputArgs }) - api.add(pool['token-x'].value, poolData['balance-x'].value) - api.add(pool['token-y'].value, poolData['balance-y'].value) - await sleep(2100) - } - - - - // update cache for amm v2 pools & token metadata - const cache = await getCache('alex/ammv2', 'stacks') - if (!cache.pairData) cache.pairData = [] - if (!cache.tokenMetadata) cache.tokenMetadata = {} - const currentPairCount = cache.pairData.length - let hasMorePairs = true - let i = currentPairCount + 1 - do { - try { - const pairData = await call({ target: factory, abi: 'get-pool-details-by-id', inputArgs: [{ type: 'number', value: i }] }) - if (!pairData.value?.factor) hasMorePairs = false - else - cache.pairData.push(pairData.value) - i++ - await sleep(2100) - } catch (e) { - sdk.log('error fetching pair data', e) - hasMorePairs = false - } - } while (hasMorePairs) - let cacheNeedsUpdate = cache.pairData.length > currentPairCount - const tokenSet = new Set(cache.pairData.flatMap(pair => [pair['token-x'], pair['token-y']]).map(token => token.value) - .filter(token => !cache.tokenMetadata[token]) - ) - const tokensMissingMetadata = Array.from(tokenSet) - if (tokensMissingMetadata.length > 0) { - cacheNeedsUpdate = true - for (const token of tokensMissingMetadata) { - try { - const decimals = await call({ target: token, abi: 'get-decimals' }) - const symbol = await call({ target: token, abi: 'get-symbol' }) - let baseToken = {} - let baseDecimals = {} - let baseSymbol = {} - try { - baseDecimals = await call({ target: token, abi: 'get-base-decimals' }) - baseToken = await call({ target: token, abi: 'get-base-token' }) - if (typeof baseToken === 'string') baseToken = { value: baseToken } - if (baseToken.value) { - baseSymbol = await call({ target: baseToken.value, abi: 'get-symbol' }) - } - } catch (e) { - // sdk.log('error fetching base token metadata', e) - } - cache.tokenMetadata[token] = { decimals: decimals.value, symbol: symbol.value, baseToken: baseToken.value, baseDecimals: baseDecimals.value, baseSymbol: baseSymbol.value } - await sleep(2100) - } catch (e) { - sdk.log('error fetching token metadata', e) - } - } - } - - api.log('pair count', cache.pairData.length) - if (cacheNeedsUpdate) - await setCache('alex/ammv2', 'stacks', cache) - - - await sumTokens({ owner: 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-vault-v2-01', balances: api.getBalances(), }) - - - // // add amm v2 tvl - // for (const pair of cache.pairData) { - // const { value: bals } = await call({ target: factory, abi: 'get-balances', inputArgs: [pair['token-x'], pair['token-y'], pair.factor] }) - // api.add(pair['token-x'].value, bals['balance-x'].value) - // api.add(pair['token-y'].value, bals['balance-y'].value) - // await sleep(600) - // } - return api.getBalances() -} - -module.exports = { - stacks: { tvl } -} \ No newline at end of file diff --git a/projects/alexlab/index.js b/projects/alexlab/index.js deleted file mode 100644 index a723011104d..00000000000 --- a/projects/alexlab/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require('../helper/http') - -// https://explorer.stacks.co/txid/SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.alex-vault?chain=mainnet -// https://stacks-node-api.blockstack.org/extended/v1/address/SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.alex-vault/balances -const ALEX_API = "https://api.alexlab.co/v1"; - -async function staking() { - const url = `${ALEX_API}/stats/tvl`; - const alexResponse = await get(url) - return { tether: alexResponse.reserve_pool_value }; -} -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("alexlab", ['stacks']), -} - -module.exports.stacks.staking = staking diff --git a/projects/alfafrens/index.js b/projects/alfafrens/index.js deleted file mode 100644 index e821cc9052e..00000000000 --- a/projects/alfafrens/index.js +++ /dev/null @@ -1,102 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -/** - * Alfafrens SoFi - a project by Superfluid. - * alfafrens.com - * - * This adapter tracks amount flowing between subscribers and channels. Currently it only tracks the - * version 2 contracts. - * - * V1 Creation - * - Stream token: $DEGENx - * V2 Creation https://basescan.org/tx/0x6c39ce34ab8349b1b57deb1ca5228e8a57e19699cde082a7da57f0e03984149b - * - Stream token: $ETHx [0x46fd5cfb4c12d87acd3a13e92baa53240c661d93] - * - Reward token: $AF [0x6c90a582c166f59de91f97fa7aef7315a968b342] - */ - -const { graphQuery } = require("../helper/http"); - -const tokens = { - ETHx: { - symbol: "ETHx", - address: "0x46fd5cfb4c12d87acd3a13e92baa53240c661d93", - underlying_symbol: "ETH", - underlying_address: ADDRESSES.null, - }, -}; - -const alfafrensGraphURL = - "https://api.goldsky.com/api/public/project_clsnd6xsoma5j012qepvucfpp/subgraphs/alfafrens_v2_no_prune/2.0.0/gn"; - -const tvl = async (api) => { - let hasData = true; - let pageSize = 1000, - pageSkip = 0; - - while (hasData) { - const { userAddresses } = await getUserWalletAddresses( - api, - pageSize, - pageSkip - ); - - await getUserBalancesOnChain(api, tokens.ETHx, userAddresses); - - - pageSkip = pageSkip + pageSize; - hasData = userAddresses.length === pageSize - } -} - -module.exports = { - methodology: "Total ETH streamed on the platform", - doublecounted: true, - base: { tvl }, - hallmarks: [[1734000000, "Alfafrens V2 Launch"]], -}; - -/** - * Returns a list of addresses - * @param {*} api - * @param {int} pageSize - * @param {int} pageSkip - * @returns {string[]} - */ -const getUserWalletAddresses = async (api, pageSize = 500, pageSkip = 0) => { - const getWalletBatchQuery = `query getAAUsers($skip: Int = 0, $first: Int = 1000, $block: Block_height) { - users( - orderBy: createdTimestamp - orderDirection: asc - first: $first - skip: $skip - block: $block - ) { - id - createdTimestamp - } -}`; - - const { users } = await graphQuery( - alfafrensGraphURL, - getWalletBatchQuery, - { - skip: pageSkip, - first: pageSize, - }, - { api } - ); - - return { userAddresses: users.map((u) => u.id), pageSize, pageSkip }; -}; - -/** - * Returns the total tokens for a list of addresses - * @param {*} api - * @param {{symbol:string, address:string, underlying_symbol:string|null, underlying_address:string|null}} token - * @param {string[]} addresses - * @returns {int} - */ -const getUserBalancesOnChain = async (api, token, addresses) => { - const uToken = token.underlying_address || token.address - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: addresses, target: token.address }) - api.add(uToken, bals) -}; diff --git a/projects/algebra-v2/index.js b/projects/algebra-v2/index.js deleted file mode 100644 index 74740ee0ef8..00000000000 --- a/projects/algebra-v2/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - avax: { factory: "0xa2A92Bb449CCa49b810C84c0efC36a88431655f2", fromBlock: 31662680, isAlgebra: true, }, -}); diff --git a/projects/algebra/index.js b/projects/algebra/index.js deleted file mode 100644 index 1958624b5cb..00000000000 --- a/projects/algebra/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking'); - -const FACTORY = '0x8C1EB1e5325049B412B7E71337116BEF88a29b3A'; - -const startBlocks = { - polygon: 22518977 -} - -function chainTvl(chain) { - return async (api) => { - const START_BLOCK = startBlocks[chain] - const logs = await getLogs({ - api, - target: FACTORY, - fromBlock: START_BLOCK, - topic: 'PoolCreated(address,address,address)', - eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, address pool)', - onlyArgs: true, - }) - const toa = [] - logs.forEach(({ token0, token1, pool}) => toa.push([token0, pool], [token1, pool])) - return sumTokens2({ api, tokensAndOwners: toa }) - } -} - -module.exports = { - polygon: { - tvl: chainTvl('polygon'), - staking: staking('0x32CFF674763b06B983C0D55Ef2e41B84D16855bb', '0x0169ec1f8f639b32eec6d923e24c2a2ff45b9dd6') - } -} \ No newline at end of file diff --git a/projects/algem/index.js b/projects/algem/index.js deleted file mode 100644 index 86d8005af09..00000000000 --- a/projects/algem/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const LIQUID_STAKING_CONTRACT = "0x70d264472327B67898c919809A9dc4759B6c0f27"; - -async function tvl(api) { - const bal = await api.call({ abi: 'uint256:totalBalance', target: LIQUID_STAKING_CONTRACT }) - api.addCGToken('astar', bal / 1e18) -} - -module.exports = { - methodology: 'counts the number of ASTR tokens locked in Liquid Staking contract', - astar: { - tvl, - } -}; diff --git a/projects/algoblocks/index.js b/projects/algoblocks/index.js deleted file mode 100644 index fd638eeb490..00000000000 --- a/projects/algoblocks/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("../helper/staking"); - -const ALGOBLOCKS_TOKEN_CONTRACT = "0xfecCa80fF6DeB2B492E93df3B67f0C523Cfd3a48"; -const ALGOBLOCKS_STAKING_POOL = "0xaC87dE420894eAA8234d288334FAec08bB46ffe7"; - -module.exports = { - methodology: "We are computing the tvl from algoblocks staking pools.", - bsc: { - tvl: () => 0, - staking: staking(ALGOBLOCKS_STAKING_POOL, ALGOBLOCKS_TOKEN_CONTRACT), - }, -}; diff --git a/projects/algodex.js b/projects/algodex.js deleted file mode 100644 index d95a9398f97..00000000000 --- a/projects/algodex.js +++ /dev/null @@ -1,15 +0,0 @@ - -const { searchAccountsAll } = require("./helper/chain/algorand") - -const algoOrderbookId = 354073718 -const asaOrderbookId = 354073834 - -module.exports = { - timetravel: false, - algorand: { - tvl: async (api) => { - await searchAccountsAll({appId: algoOrderbookId, api, sumTokens: true, }) - await searchAccountsAll({appId: asaOrderbookId, api, sumTokens: true, }) - }, - }, -}; diff --git a/projects/algofi-swap/index.js b/projects/algofi-swap/index.js deleted file mode 100644 index 808bc646723..00000000000 --- a/projects/algofi-swap/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { getAssetInfo, } = require("../helper/chain/algorand"); - -const blacklistedTokens = [ - '465865291', // STBL - '841126810', // STBL2 -] - -async function dex(api) { - let lpTokens = (await getConfig('algofi-swap',"https://api.algofi.org/ammLPTokens?network=MAINNET")).map(i => i.asset_id); - // let lpTokens = (await getConfig('algofi-swap',"https://api.algofi.org/pools?network=MAINNET")).map(i => i.lp_asset_id); - lpTokens = [...new Set(lpTokens)] - const lpData = await Promise.all(lpTokens.map(getAssetInfo)) - lpData.forEach(({ assets }) => { - Object.values(assets).forEach(i => { - if (blacklistedTokens.includes(i['asset-id'])) return; - api.add(i['asset-id'], i.amount) - }) - }) -} - -module.exports = { - timetravel: false, - algorand: { - tvl: dex, - } -} \ No newline at end of file diff --git a/projects/algofi-valgo/index.js b/projects/algofi-valgo/index.js deleted file mode 100644 index 7411d7969f1..00000000000 --- a/projects/algofi-valgo/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -const { getAppGlobalState } = require("../helper/chain/algorand") - -const vAlgoAssetId = 465814318 -const vAlgo2Assetd = 879935316 - -module.exports = { - timetravel: false, - algorand: { - tvl: async () => { - const states = await Promise.all([vAlgoAssetId, vAlgo2Assetd].map(getAppGlobalState)) - let total = 0 - states.forEach(i => total += (i.acc || i.ac) / 1e6) - return { algorand: total } - }, - }, -}; diff --git a/projects/algofi/index.js b/projects/algofi/index.js deleted file mode 100644 index e0e5746637c..00000000000 --- a/projects/algofi/index.js +++ /dev/null @@ -1,100 +0,0 @@ -const sdk = require('@defillama/sdk') -const { log } = require('../helper/utils') -const { getAppGlobalState, } = require("../helper/chain/algorand") -const { getPrices, appDictionary, marketStrings } = require('./utils') - - -async function getMarketAssets(prices) { - const assets = [] - for (const [assetName, config] of Object.entries(appDictionary)) { - if (['STBL', 'STBL2', 'BANK'].includes(assetName)) { - log('ignoring native stablecoin', assetName) - continue; - } - if (!prices[assetName]) { - log('Asset is not yet priced, ignoring it: ', assetName) - continue; - } - if (prices[assetName].geckoId === 'disabled') continue; - assets.push([assetName, config]) - } - return assets -} - -async function borrowed() { - const balances = {} - let promises = [] - let prices = await getPrices() - const assets = await getMarketAssets(prices) - for (const [assetName, { appIds = [] }] of assets) - for (const appId of appIds) - promises.push(addMarketAsset({assetName, appId, prices, balances})) - - await Promise.all(promises) - return balances - - async function addMarketAsset({assetName, appId, prices, balances}) { - const { geckoId, decimals, price } = prices[assetName] - let state = await getAppGlobalState(appId) - let borrowed = state[marketStrings.underlying_borrowed] - const balance = borrowed * price / (10 ** decimals) - sdk.util.sumSingleBalance(balances, geckoId, balance) - } -} - -async function tvl() { - const balances = {} - let promises = [] - let prices = await getPrices() - const assets = await getMarketAssets(prices) - for (const [assetName, { appIds = [] }] of assets) - for (const appId of appIds) - promises.push(addMarketAsset({assetName, appId, prices, balances})) - - await Promise.all(promises) - return balances - - async function addMarketAsset({assetName, appId, prices, balances}) { - const { geckoId, decimals, price } = prices[assetName] - let state = await getAppGlobalState(appId) - let underlyingCash - switch(assetName) { - case 'vALGO2': underlyingCash = state[marketStrings.active_collateral_v2]; break; - case 'vALGO': underlyingCash = state[marketStrings.active_collateral]; break; - default: underlyingCash = state[marketStrings.underlying_cash]; break; - } - let supplyUnderlying = underlyingCash - const balance = supplyUnderlying * price / (10 ** decimals) - sdk.util.sumSingleBalance(balances, geckoId, balance) - } -} - -async function staking() { - let prices = await getPrices() - const { geckoId, decimals, price } = prices['BANK'] - - // voting escrow - let votingEscrowGlobalState = await getAppGlobalState(900653165) - let opulState = await getAppGlobalState(674526408) - let totalLockedBank = votingEscrowGlobalState[marketStrings.total_locked] - let totalOpul = opulState[marketStrings.underlying_cash] - opulState[marketStrings.underlying_reserves] - const balance = totalLockedBank * price / (10 ** decimals) - - return { - [geckoId]: balance, - opulous: totalOpul / 1e10, - } -} - -module.exports = { - hallmarks: [ - [1688947200, "Winding down of protocol"] - ], - timetravel: false, - misrepresentedTokens: true, - algorand: { - tvl, - borrowed, - staking, - } -} diff --git a/projects/algofi/utils.js b/projects/algofi/utils.js deleted file mode 100644 index 3318524e724..00000000000 --- a/projects/algofi/utils.js +++ /dev/null @@ -1,153 +0,0 @@ - -const { get } = require('../helper/http') -const { getAppGlobalState, getPriceFromAlgoFiLP, } = require("../helper/chain/algorand") - -let pricesCache -let snapshotsCache - -const marketStrings = { - underlying_cash: "uc", - underlying_borrowed: "ub", - underlying_reserves: "ur", - active_collateral: "acc", - active_collateral_v2: "ac", - lp_circulation: "lc", - bank_to_underlying_exchange: "bt", - b_asset_circulation: "bac", - oracle_price_field_name: "opfn", - oracle_price_scale_factor: "ops", - oracle_app_id: "oai", - total_locked: "tl", - b_asset_to_underlying_exchange_rate: "baer", - total_staked: "ts", -} - -const appDictionary = { - "ALGO": { - "decimals": 6, - "appIds": [465814065, 818179346], - "geckoId": "algorand", - }, - "USDC": { - "decimals": 6, - "appIds": [465814103, 818182048], - "geckoId": "usd-coin", - }, - "USDT": { - "decimals": 6, - "appIds": [818190205], - "geckoId": "tether", - }, - "goBTC": { - "decimals": 8, - "appIds": [465814149, 818183964], - "geckoId": "bitcoin", - }, - "goETH": { - "decimals": 8, - "appIds": [465814222, 818188286], - "geckoId": "ethereum", - }, - "STBL": { - "decimals": 6, - "appIds": [465814278], - "oracleAppId": 451327550, - "oracleFieldName": "price", - }, - "STBL2": { - "decimals": 6, - "appIds": [841145020], - "oracleAppId": 451327550, - "oracleFieldName": "price", - }, - "vALGO": { - "decimals": 6, - "appIds": [465814318], - "geckoId": "algorand", - }, - "vALGO2": { - "decimals": 6, - "appIds": [879935316], - "geckoId": "algorand", - }, - "BANK": { - "decimals": 6, - "appIds": [900883415], - "assetId": 900652777, - "algofiLP": 906656179, - }, - // "AF-NANO-BSTBL2-BUSDC": { - // "decimals": 6, - // "appIds": [841194726], - // "oracleAppId": 841179855, - // "oracleFieldName": "latest_twap_price" - // }, - // "AF-BSTBL2-BALGO": { - // "decimals": 6, - // "appIds": [856183130], - // "oracleAppId": 855726305, - // "oracleFieldName": "latest_twap_price" - // }, - // "AF-BSTBL2-BgoBTC": { - // "decimals": 6, - // "appIds": [870271921], - // "oracleAppId": 870267658, - // "oracleFieldName": "latest_twap_price" - // }, - // "AF-BSTBL2-BgoETH": { - // "decimals": 6, - // "appIds": [870275741], - // "oracleAppId": 870268282, - // "oracleFieldName": "latest_twap_price" - // }, -} - -async function getDexPrices() { - let assetSnapshots = await getSnapshots() - let prices = {} - for (const assetSnapshot of assetSnapshots) { - prices[assetSnapshot.asset_id] = assetSnapshot.price - } - return prices - - - async function getSnapshots() { - if (!snapshotsCache) snapshotsCache = _getSnapshots() - return snapshotsCache - - async function _getSnapshots() { - return get("https://api.algofi.org/assets") - } - } -} - -async function getPrices() { - if (!pricesCache) pricesCache = _getPrices() - return pricesCache - - async function _getPrices() { - let prices = {} - await Promise.all(Object.entries(appDictionary).map(setPrice)) - return prices - - async function setPrice([assetName, { geckoId, decimals, oracleAppId, oracleFieldName, assetId, algofiLP, }]) { - if (geckoId) { - prices[assetName] = { geckoId, decimals, price: 1 } - } else if (oracleAppId && oracleFieldName) { - const res = await getAppGlobalState(oracleAppId) - if (res[oracleFieldName]) - prices[assetName] = { geckoId: 'tether', decimals, price: res[oracleFieldName] / 1e6 } - } else if (assetId && algofiLP) { - prices[assetName] = await getPriceFromAlgoFiLP(algofiLP, assetId) - } - } - } - -} - -module.exports = { - appDictionary, - marketStrings, - getPrices, - getDexPrices, -} \ No newline at end of file diff --git a/projects/algomint/index.js b/projects/algomint/index.js deleted file mode 100644 index 3c20e4d2978..00000000000 --- a/projects/algomint/index.js +++ /dev/null @@ -1,99 +0,0 @@ -const { tokens } = require("../helper/chain/algorand"); - -const { lpTokenPostion } = require("./utils"); - -//Algomint Basket contracts where the liquidty is held -const goUsdcBasketAddress = - "S3VJZN4AXUP3IZKE4O7TUN6LRIEYNJCMXQSFP6DPGUKU6YYK2VLN2W7DXA"; -const goUsdtBasketAddress = - "CX7ICRT4HRKHZSSYYMW765AKSBDH3XJBQZ2DXN32DCWTD2732RVHR25Y5Q"; -const goXusdBasketAddress = - "ZFWCUIFTE5CKDEFBL3KBQA5OIVLFOG2D7MN7UUK7ZKIW2QVOLAYBR2L5WE"; -const goBtcBasketAddress = - "MGGJI6CKRMIEN7CGXY2SK3KTPRCXW4SNPDPN4G7RWON4DB4262G4IRFHXE"; -const goEthBasketAddress = - "IUTNDPUTZ5MKFFIZ5L7MG35I5WXS64LLJKVXRTJNJISBRPOTOAM3DA65CY"; -const goWusdcBasketAddress = "HGKK45FRG5XLUE232664RC7HXQEF52YIUXHRYXJYZW5GT2SWUNTI4M3FOQ"; -const goWusdtBasketAddress = "MEZOSEZWLVZYSOBCZYUYSKL7LS5JTIV5G2TBX6M3FFINUKP3BJVVA2S5T4"; - -//The following pool ID's are the PACT LP pool contracts -const usdcPoolId = 885102197; -const usdtPoolId = 1081978547; -const xusdPoolId = 1081974468; -const wBtcPoolId = 1058934586; -const wEthPoolId = 1058935016; -const wUsdcPoolId = 1242543233; -const wUsdtPoolId = 1242550428; - -async function tvl() { - //Returns the position of the LP token. - const usdcPostion = await lpTokenPostion( - tokens.usdcGoUsdLp, - usdcPoolId, - goUsdcBasketAddress - ); - - const usdtPosition = await lpTokenPostion( - tokens.usdtGoUsdLp, - usdtPoolId, - goUsdtBasketAddress - ); - - const wusdcPostion = await lpTokenPostion( - tokens.wusdcGoUsdLp, - wUsdcPoolId, - goWusdcBasketAddress - ); - - const wusdtPosition = await lpTokenPostion( - tokens.wusdtGoUsdLp, - wUsdtPoolId, - goWusdtBasketAddress - ); - - const xusdPosition = await lpTokenPostion( - tokens.xUsdGoUsdLp, - xusdPoolId, - goXusdBasketAddress - ); - - const wBtcPosition = await lpTokenPostion( - tokens.wBtcGoBtcLp, - wBtcPoolId, - goBtcBasketAddress - ); - - const wEthPosition = await lpTokenPostion( - tokens.wEthGoEthLp, - wEthPoolId, - goEthBasketAddress - ); - - //positionA is USDC in the LP - const usdcTvlvalue = usdcPostion.positionA / 10 ** 6; - //positionA is USDT in the LP - const usdtTvlValue = usdtPosition.positionA / 10 ** 6; - //positionB is XUSD in the LP - const xusdtTvlValue = xusdPosition.positionB / 10 ** 6; - //positionB is wUSDC in the LP - const wusdcTvlValue = wusdcPostion.positionB / 10 ** 6; - //positionB is wUSDT in the LP - const wusdtTvlValue = wusdtPosition.positionB / 10 ** 6; - //positionB is wBTC in the LP - const wBtcTvlValue = wBtcPosition.positionB / 10 ** 8; - //positionB is wEth in the LP - const wEthTvlValue = wEthPosition.positionB / 10 ** 8; - return { - bitcoin: wBtcTvlValue, - ethereum: wEthTvlValue, - tether: usdtTvlValue + wusdtTvlValue, - usd: usdcTvlvalue + xusdtTvlValue + wusdcTvlValue, - }; -} - -module.exports = { - timetravel: false, - algorand: { - tvl, - }, -}; diff --git a/projects/algomint/utils.js b/projects/algomint/utils.js deleted file mode 100644 index a5e01cb6502..00000000000 --- a/projects/algomint/utils.js +++ /dev/null @@ -1,37 +0,0 @@ -const { - getAppGlobalState, - getAccountInfo, -} = require("../helper/chain/algorand"); - -async function lpTokenPostion(asaId, appId, basketAddress) { - const poolGlobalState = await getAppGlobalState(appId); - - //A & B represent the two tokens in the LP pool, Token A is always the ASA with the lowest ID - - const balanceA = poolGlobalState.A; - const balanceB = poolGlobalState.B; - const lpCirculatingSupply = poolGlobalState.L; - - const ratioA = balanceA / lpCirculatingSupply; - const ratioB = balanceB / lpCirculatingSupply; - - //get basket balance of lp token - const basketBalance = await getAccountInfo(basketAddress); - - const basketLpBalanceObject = basketBalance.assets; - let basketLpBalance; - - for (let lpAsset of basketLpBalanceObject) { - if (lpAsset["asset-id"] === asaId) { - basketLpBalance = lpAsset.amount; - } - } - const positionA = basketLpBalance * ratioA; - const positionB = basketLpBalance * ratioB; - - return { positionA: positionA, positionB: positionB }; -} - -module.exports = { - lpTokenPostion, -}; diff --git a/projects/algorai-finance/index.js b/projects/algorai-finance/index.js deleted file mode 100644 index 3156a9ba77e..00000000000 --- a/projects/algorai-finance/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { sumTokens } = require("../helper/chain/algorand"); -const sdk = require('@defillama/sdk') - -async function tvl() { - return sumTokens({ owners: vaults, blacklistedTokens: borrowAssets.map(b => b.asset) }) -} - -async function borrowed() { - const data = await sumTokens({ owners: vaults, tokens: borrowAssets.map(b => b.asset) }) - for (const b of borrowAssets) { - const key = 'algorand:' + b.asset - sdk.util.sumSingleBalance(data, b.replacement, data[key] ?? 0, 'algorand') - delete data[key] - } - return data -} - - -const vaults = [ - // v1.0 - 878144513, - 878140320, - // v1.1 - 919531421, - 919539218, - 1004309470, - 1004325987, - 1004326861, - 1004374058, - 1097368119, - 1146813039, - 1170260887, - 1170261298, - 1190994349, - 1255766337, - 1202846474, - 1190874303, -]; - -const borrowAssets = [ - { asset: '1145959061', replacement: '31566704', name: 'hUSDC' }, - { asset: '1145958888', replacement: '1', name: 'hAlgo' }, -] - -module.exports = { - timetravel: false, - algorand: { - tvl, borrowed, - }, -}; \ No newline at end of file diff --git a/projects/alien-finance/index.js b/projects/alien-finance/index.js deleted file mode 100644 index abd2d1339dc..00000000000 --- a/projects/alien-finance/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const DAPP_POOL = "0x50454acC07bf8fC78100619a1b68e9E8d28cE022" -const BLAST_POOL = "0x02B7BF59e034529d90e2ae8F8d1699376Dd05ade" -const BLAST_POOL_LAUNCH = 1719390003 - -module.exports = { - blast: { - tvl, borrowed, - }, - start: '2024-03-05', -}; - -async function tvl(api) { - const dappPoolTokens = await api.call({ abi: 'address[]:getAllMarkets', target: DAPP_POOL}); - const blastPoolTokens = api.timestamp > BLAST_POOL_LAUNCH ? await api.call({ abi: 'address[]:getAllMarkets', target: BLAST_POOL}) : []; - - return api.sumTokens({ tokensAndOwners: [ - ...dappPoolTokens.map(token => [token, DAPP_POOL]), - ...blastPoolTokens.map(token => [token, BLAST_POOL]), - ] }) -} -async function borrowed(api) { - const dappPoolTokens = await api.call({ abi: 'address[]:getAllMarkets', target: DAPP_POOL}); - const dappPoolBorrow = await api.multiCall({ abi: 'function getTotalBorrow(address) view returns (uint256)', calls: dappPoolTokens, target: DAPP_POOL}) - api.add(dappPoolTokens, dappPoolBorrow) - - if (api.timestamp > BLAST_POOL_LAUNCH) { - const blastPoolTokens = await api.call({ abi: 'address[]:getAllMarkets', target: BLAST_POOL}); - const blastPoolBorrow = await api.multiCall({ abi: 'function getTotalBorrow(address) view returns (uint256)', calls: blastPoolTokens, target: BLAST_POOL}) - api.add(blastPoolTokens, blastPoolBorrow) - } -} diff --git a/projects/alienbase-area51/index.js b/projects/alienbase-area51/index.js deleted file mode 100644 index b29a7f215f9..00000000000 --- a/projects/alienbase-area51/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const ALB = "0x1dd2d631c92b1aCdFCDd51A0F7145A50130050C4"; -const FACTORY = "0x2d5dd5fa7B8a1BFBDbB0916B42280208Ee6DE51e" - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, - base: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }), - } -}; \ No newline at end of file diff --git a/projects/alienbase-stableswap/index.js b/projects/alienbase-stableswap/index.js deleted file mode 100644 index 78cab6a8c54..00000000000 --- a/projects/alienbase-stableswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const pools = Object.values({ - 'aUsdc-Dai': '0x927860797d07b1C46fbBe7f6f73D45C7E1BFBb27', - 'USDC-Dai': '0x410d28fbcd00c677bae1cce2261546c8db4f6a2d', -}) - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address[]:getTokens', calls: pools }) - return api.sumTokens({ ownerTokens: tokens.map((t, i) => [t, pools[i]]) }) -} - -module.exports = { - methodology: `Queries balances of StableSwap pools and sums their total value`, - base: { tvl, } -}; \ No newline at end of file diff --git a/projects/alienbase-v3/index.js b/projects/alienbase-v3/index.js deleted file mode 100644 index 84e9b10caa5..00000000000 --- a/projects/alienbase-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const factory = '0x0Fd83557b2be93617c9C1C1B6fd549401C74558C' - -module.exports = uniV3Export({ - base: { factory, fromBlock: 7150708, permitFailure: true }, -}) diff --git a/projects/alienbase/index.js b/projects/alienbase/index.js deleted file mode 100644 index c6e3dde2b8d..00000000000 --- a/projects/alienbase/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -const ALB = "0x1dd2d631c92b1aCdFCDd51A0F7145A50130050C4"; -const FACTORY = "0x3E84D913803b02A4a7f027165E8cA42C14C0FdE7" - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, - base: { - staking: staking(["0x52eaecac2402633d98b95213d0b473e069d86590", '0x365c6d588e8611125De3bEA5B9280C304FA54113'], ALB), - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }), - } -}; diff --git a/projects/alienfi/index.js b/projects/alienfi/index.js deleted file mode 100644 index aebdb881ee7..00000000000 --- a/projects/alienfi/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL, staking } = require("../helper/unknownTokens"); - -const arbiFactory = "0xac9d019B7c8B7a4bbAC64b2Dbf6791ED672ba98B"; -const arbiStaking = "0xCf8D01c1a20dabcC025368607020473cCb119F5C"; -// const arbiPoolStaking = "0xf0E1cE233Bf3DF4f19F36aD03D98faf52E9fD653"; -const arbiAlien = "0x6740Acb82ac5C63A7ad2397ee1faed7c788F5f8c"; -const AlienUsdcLP = "0xE145A5710Be68C3C9C50c5288909E813c5e92F4e"; - -module.exports = { - misrepresentedTokens: true, - methodology: "TVL consists of pools created by the factory contract", - arbitrum: { - tvl: getUniTVL({ factory: arbiFactory, useDefaultCoreAssets: true, }), - staking: staking({ tokensAndOwners: [[arbiAlien, arbiStaking]], lps: [AlienUsdcLP] }) - }, -}; diff --git a/projects/aliensfarm/index.js b/projects/aliensfarm/index.js deleted file mode 100644 index 05324700d13..00000000000 --- a/projects/aliensfarm/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getTokenBalances } = require('../helper/chain/tezos') - -module.exports = { - methodology: - "TVL counts the total cost of tokens staked on both farmings and stakings.", - timetravel: false, - tezos: { - tvl: async () => { - const dexAddtess = 'KT1DqhpvkfyBySVR4KV8Yu3K3jGSmLy7PTbr' - return getTokenBalances(dexAddtess, true) - } - } -}; diff --git a/projects/alienworlds/index.js b/projects/alienworlds/index.js deleted file mode 100644 index d5c46289a0d..00000000000 --- a/projects/alienworlds/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const accounts = ["nftmt.worlds", "stake.worlds", "lore.worlds", "arena.worlds", "boost.worlds"] - -// AlienWorlds -// https://alienworlds.io/ -async function wax() { - const tokens = [ - ["eosio.token", "WAX", "wax"], - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} -async function staking() { - const tokens = [ - ["alien.worlds", "TLM", "alien-worlds"], - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `AlienWorlds TVL is achieved by querying token balances from Staking, Voting & Gaming smart contract(s).`, - wax: { - tvl: wax, - staking, - }, -} diff --git a/projects/alita-finance/index.js b/projects/alita-finance/index.js deleted file mode 100644 index dc30078f2ae..00000000000 --- a/projects/alita-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const ALI_TOKEN = '0x557233E794d1a5FbCc6D26dca49147379ea5073c' -const ALI_FACTORY = "0xC7a506ab3ac668EAb6bF9eCf971433D6CFeF05D9"; -const ALI_MASTER_CHEF = '0x4f7b2Be2bc3C61009e9aE520CCfc830612A10694' - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: ALI_FACTORY, useDefaultCoreAssets: true,}), - staking: staking(ALI_MASTER_CHEF, ALI_TOKEN), - } -} \ No newline at end of file diff --git a/projects/aliumswap/index.js b/projects/aliumswap/index.js deleted file mode 100644 index bec32848be2..00000000000 --- a/projects/aliumswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { stakings } = require("../helper/staking.js"); -const { getUniTVL } = require("../helper/unknownTokens.js"); - -const ALMToken = "0x7C38870e93A1f959cB6c533eB10bBc3e438AaC11"; -const stakingPool0 = "0x95CDf618b6aF0ec1812290A777955D3609B0508d"; // Strong Holder Pool -const stakingPool1 = "0x4f388167F8B52F89C87A4E46706b9C1408F2c137"; // Old Strong Holder Pool - -module.exports = { - bsc: { - tvl: getUniTVL({ factory: '0xbEAC7e750728e865A3cb39D5ED6E3A3044ae4B98', useDefaultCoreAssets: true, }), - staking: stakings([stakingPool0, stakingPool1, ], ALMToken), - }, -}; diff --git a/projects/alkemi/index.js b/projects/alkemi/index.js deleted file mode 100644 index 8fb598d2b33..00000000000 --- a/projects/alkemi/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - - -const alkPools = [ - '0x397c315d64D74d82A731d656f9C4D586D200F90A', // Alkemi Earn - '0x4822D9172e5b76b9Db37B75f5552F9988F98a888', // Alkemi Earn Open - '0x8125afd067094cD573255f82795339b9fe2A40ab', // WETH, Alkemi Earn Open - '0x1f52453B32BFab737247114D56d756A6c37dd9Ef', // WETH, Alkemi Earn -]; -const alkTokens = [ - ADDRESSES.null, - ADDRESSES.ethereum.WBTC, // WBTC - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.DAI, // DAI -]; - -module.exports = { - methodology: "TVL consists of Assets (ETH, WBTC, Stablecoins) deposited in Alkemi Earn, Assets (ETH, WBTC, Stablecoins) deposited in Alkemi Earn Open, and does NOT currently consider assets borrowed", - start: '2020-12-31', // unix timestamp (utc 0) specifying when the project began, or where live data begins - ethereum: { tvl: sumTokensExport({ owners: alkPools, tokens: alkTokens}) } // tvl adapter -}; diff --git a/projects/alkimi/index.js b/projects/alkimi/index.js deleted file mode 100644 index 777e77aa63b..00000000000 --- a/projects/alkimi/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const axios = require("axios"); - -const STAKING_VAULT = "0xc92fe84368fc3ff40713792c750709501fcfc4869f120755fd0bea5cac1ead94"; -const ALKIMI_DECIMALS = 9n; -const ALKIMI_COINGECKO_ID = "alkimi-2"; - -module.exports = { - timetravel: false, - methodology: "Staking counts all ALKIMI tokens locked in the StakingVault (user + admin)", - - sui: { - tvl: async () => 0, - staking: async () => { - // fetch vault data from Sui fullnode - const resp = await axios.post("https://fullnode.mainnet.sui.io:443", { - jsonrpc: "2.0", - id: 1, - method: "sui_getObject", - params: [STAKING_VAULT, { showType: true, showOwner: true, showContent: true }], - }); - - const fields = resp.data.result?.data?.content?.fields; - if (!fields) return {}; - - const total = BigInt(fields.balance || "0"); - const humanTotal = Number(total / 10n ** ALKIMI_DECIMALS); - - // Optional: log user/admin breakdown for PR review - const userLocked = BigInt(fields.user_locked || "0"); - const adminLocked = BigInt(fields.admin_locked || "0"); - console.log("=== ALKIMI Staking TVL ==="); - console.log("Total Tokens:", humanTotal); - console.log("User Locked:", Number(userLocked / 10n ** ALKIMI_DECIMALS)); - console.log("Admin Locked:", Number(adminLocked / 10n ** ALKIMI_DECIMALS)); - console.log("========================"); - - return { - [ALKIMI_COINGECKO_ID]: humanTotal, - }; - } - } -}; diff --git a/projects/alkimiya/index.js b/projects/alkimiya/index.js deleted file mode 100644 index 9b01bb02c78..00000000000 --- a/projects/alkimiya/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - - -module.exports = { - base: { - tvl: sumTokensExport({ owner: '0xa979E1d73f233087d3808cFc02C119F5EA75DE36', tokens: [ADDRESSES.base.USDC, ADDRESSES.base.cbBTC, ADDRESSES.base.WETH] }) - } -} \ No newline at end of file diff --git a/projects/allbridge-core/bytes.js b/projects/allbridge-core/bytes.js deleted file mode 100644 index f3fd673adb7..00000000000 --- a/projects/allbridge-core/bytes.js +++ /dev/null @@ -1,35 +0,0 @@ -const hexToBytes = (hex) => Array.from(Buffer.from(hex.replace(/^0x/, ""), 'hex')); - -const textToBytes = (value) => new TextEncoder().encode(value); - -const toU64 = (value) => toLittleEndian(BigInt(value), 8) - -function fromU64(data, offset = 0) { - const dataView = new DataView(Uint8Array.from(data).buffer); - - let value1 = dataView.getUint32(offset, true); - let value2 = dataView.getUint32(offset + 4, true); - let result = value2.toString(16) + value1.toString(16).padStart(8, '0'); - - return BigInt('0x' + result).toString(10); -} - -function toLittleEndian(bigint, size) { - let result = new Uint8Array(size); - let i = 0; - while (bigint > 0) { - result[i] = Number(bigint % BigInt(256)); - bigint = bigint / BigInt(256); - i += 1; - } - return result; -} - - - -module.exports = { - hexToBytes, - toU64, - textToBytes, - fromU64, -}; diff --git a/projects/allbridge-core/contracts.js b/projects/allbridge-core/contracts.js deleted file mode 100644 index 008f7b357ce..00000000000 --- a/projects/allbridge-core/contracts.js +++ /dev/null @@ -1,127 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - "ethereum": { - "tokens": [ - { - "poolAddress": "0xa7062bbA94c91d565Ae33B893Ab5dFAF1Fc57C4d", - "tokenAddress": ADDRESSES.ethereum.USDC - }, - { - "poolAddress": "0x7DBF07Ad92Ed4e26D5511b4F285508eBF174135D", - "tokenAddress": ADDRESSES.ethereum.USDT - } - ] - }, - "bsc": { - "tokens": [ - { - "poolAddress": "0x8033d5b454Ee4758E4bD1D37a49009c1a81D8B10", - "tokenAddress": ADDRESSES.bsc.BUSD - }, - { - "poolAddress": "0xf833afA46fCD100e62365a0fDb0734b7c4537811", - "tokenAddress": ADDRESSES.bsc.USDT - } - ] - }, - "polygon": { - "tokens": [ - { - "poolAddress": "0x58Cc621c62b0aa9bABfae5651202A932279437DA", - "tokenAddress": ADDRESSES.polygon.USDC - }, - { - "poolAddress": "0x0394c4f17738A10096510832beaB89a9DD090791", - "tokenAddress": ADDRESSES.polygon.USDT - }, - { - "poolAddress": "0x4C42DfDBb8Ad654b42F66E0bD4dbdC71B52EB0A6", - "tokenAddress": ADDRESSES.polygon.USDC_CIRCLE - } - ] - }, - "arbitrum": { - "tokens": [ - { - "poolAddress": "0x690e66fc0F8be8964d40e55EdE6aEBdfcB8A21Df", - "tokenAddress": ADDRESSES.arbitrum.USDC_CIRCLE - }, - { - "poolAddress": "0x47235cB71107CC66B12aF6f8b8a9260ea38472c7", - "tokenAddress": ADDRESSES.arbitrum.USDT - } - ] - }, - "avax": { - "tokens": [ - { - "poolAddress": "0xe827352A0552fFC835c181ab5Bf1D7794038eC9f", - "tokenAddress": ADDRESSES.avax.USDC - }, - { - "poolAddress": "0x2d2f460d7a1e7a4fcC4Ddab599451480728b5784", - "tokenAddress": ADDRESSES.avax.USDt - } - ] - }, - "optimism": { - "tokens": [ - { - "poolAddress": "0x3B96F88b2b9EB87964b852874D41B633e0f1f68F", - "tokenAddress": ADDRESSES.optimism.USDC_CIRCLE - }, - { - "poolAddress": "0xb24A05d54fcAcfe1FC00c59209470d4cafB0deEA", - "tokenAddress": ADDRESSES.optimism.USDT - } - ] - }, - "celo": { - "tokens": [ - { - "poolAddress": "0xfb2C7c10e731EBe96Dabdf4A96D656Bfe8e2b5Af", - "tokenAddress": ADDRESSES.celo.USDT_1 - } - ] - }, - "tron": { - "tokens": [ - { - "poolAddress": "TAC21biCBL9agjuUyzd4gZr356zRgJq61b", - "tokenAddress": ADDRESSES.tron.USDT - } - ] - }, - "solana": { - "tokens": [ - { - "poolAddress": "7DyZQw3iV5zhHssnNA6Nopi5zc8NGLbYjHMcaok6NN66", - "tokenAddress": ADDRESSES.solana.USDC - }, - { - "poolAddress": "DW4a2Eq7X5MiPkzscGMJmgjsDaSWrWMkqPtRGLFyZwCX", - "tokenAddress": ADDRESSES.solana.USDT - } - ], - "bridgeAddress": "BrdgN2RPzEMWF96ZbnnJaUtQDQx7VRXYaHHbYCBvceWB" - }, - "base": { - "tokens": [ - { - "poolAddress": "0xDA6bb1ec3BaBA68B26bEa0508d6f81c9ec5e96d5", - "tokenAddress": ADDRESSES.base.USDC - } - ], - "bridgeAddress": "0x001E3f136c2f804854581Da55Ad7660a2b35DEf7" - }, - "sui": { - "bridgeAddress": "0x83d6f864a6b0f16898376b486699aa6321eb6466d1daf6a2e3764a51908fe99d", - "bridgeId": "0x1bb428a8bfca7eac7dd60eae9f5c434096249752f9d9cd3100ffa178305ea219", - "tokens": [ - { - "tokenAddress": ADDRESSES.sui.USDC_CIRCLE - } - ] - } -} diff --git a/projects/allbridge-core/index.js b/projects/allbridge-core/index.js deleted file mode 100644 index 42b6578ccf8..00000000000 --- a/projects/allbridge-core/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { addUSDCBalance } = require("../helper/chain/stellar"); -const solana = require("../helper/solana"); -const suiTx = require("./suiTx"); - -const data = require("./contracts"); -const {default: BigNumber} = require("bignumber.js"); - -const solanaTvl = async (api) => { - const tokens = data['solana'].tokens; - return solana.sumTokens2({ tokensAndOwners: tokens.map(i => [i.tokenAddress, i.poolAddress])}); -} - -const suiTvl = async (api) => { - const suiData = data['sui']; - for (const token of suiData.tokens) { - const balance = await suiTx.getPoolTokenBalance(token.tokenAddress, suiData.bridgeAddress, suiData.bridgeId); - api.add(token.tokenAddress, balance); - } -} - -function getTVLFunction(chain) { - if (chain === 'solana') return solanaTvl; - if (chain === 'sui') return suiTvl; - - return async function evmTvl(api) { - const tokensData = data[chain].tokens; - const tokensAndOwners = tokensData.map(t => [t.tokenAddress, t.poolAddress]); - return api.sumTokens({ tokensAndOwners, }) - }; -} - -module.exports = { - methodology: "All tokens locked in Allbridge Core pool contracts.", - timetravel: false, - stellar: { tvl: stellarTvl }, -} - -Object.keys(data).forEach(chain => { - module.exports[chain] = { - tvl: getTVLFunction(chain), - } -}) - - -async function stellarTvl(api) { - await addUSDCBalance(api, 'CAOTMWRKNMV5GWSVOMWCTCM5ZZFEQFUSWNLCZXA2KAXD4YG5A4DIPNFT') -} diff --git a/projects/allbridge-core/suiTx.js b/projects/allbridge-core/suiTx.js deleted file mode 100644 index 9609cc435e5..00000000000 --- a/projects/allbridge-core/suiTx.js +++ /dev/null @@ -1,114 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {hexToBytes, toU64, textToBytes, fromU64} = require('./bytes'); -const sui = require("../helper/chain/sui"); - -const DUMMY_SENDER = '0x0000000000000000000000000000000000000000000000000000000000000000'; - -const ProgrammableTransactionIndex = 0; -const ObjectIndex = 1; -const SharedObjectIndex = 1; -const MoveCallIndex = 0; -const StructIndex = 7; -const InputIndex = 1; - -async function getPoolTokenBalance(tokenAddress, bridgeAddress, bridgeId) { - const txBlockBytes = buildGetPoolBalanceTxBytes(tokenAddress, bridgeAddress, bridgeId); - - const inspectionResult = await sui.call( - 'sui_devInspectTransactionBlock', - [DUMMY_SENDER, Buffer.from(txBlockBytes).toString('base64')], - {withMetadata: true} - ); - - if (inspectionResult?.effects?.status?.status !== 'success') { - throw new Error(JSON.stringify(inspectionResult, null, 2)); - } - - const results = inspectionResult.results; - if (!results || !Array.isArray(results) || results.length === 0) { - return '0'; - } - const [data] = results.pop().returnValues.pop(); - return fromU64(data); -} - -function buildGetPoolBalanceTxBytes(tokenAddress, packageId, bridgeId) { - const kind = { - "ProgrammableTransaction": { - "inputs": [{ - "Object": { - "SharedObject": { - "objectId": bridgeId, - "initialSharedVersion": 0, - "mutable": false - } - } - }], - "commands": [{ - "MoveCall": { - "package": packageId, - "module": "bridge_interface", - "function": "pool_balance", - "typeArguments": [tokenAddress], - "arguments": [{ - "Input": 0, - }], - } - }] - } - }; - - const moduleArg = textToBytes(kind.ProgrammableTransaction.commands[0].MoveCall.module); - const functionArg = textToBytes(kind.ProgrammableTransaction.commands[0].MoveCall.function); - const typeArg0 = parseSuiAddress(kind.ProgrammableTransaction.commands[0].MoveCall.typeArguments[0]); - const typeArg0_Module = textToBytes(typeArg0.module); - const typeArg0_Name = textToBytes(typeArg0.name); - const bytes = Uint8Array.from([ProgrammableTransactionIndex, - kind.ProgrammableTransaction.inputs.length, - ObjectIndex, - SharedObjectIndex, - ...hexToBytes(kind.ProgrammableTransaction.inputs[0].Object.SharedObject.objectId), - ...toU64(kind.ProgrammableTransaction.inputs[0].Object.SharedObject.initialSharedVersion), - kind.ProgrammableTransaction.inputs[0].Object.SharedObject.mutable ? 1 : 0, - kind.ProgrammableTransaction.commands.length, - MoveCallIndex, - ...hexToBytes(kind.ProgrammableTransaction.commands[0].MoveCall.package), - moduleArg.length, - ...moduleArg, - functionArg.length, - ...functionArg, - kind.ProgrammableTransaction.commands[0].MoveCall.typeArguments.length, - StructIndex, - ...hexToBytes(typeArg0.address), - typeArg0_Module.length, - ...typeArg0_Module, - typeArg0_Name.length, - ...typeArg0_Name, - typeArg0.typeParams.length, - kind.ProgrammableTransaction.commands[0].MoveCall.arguments.length, - InputIndex, - kind.ProgrammableTransaction.commands[0].MoveCall.arguments[0].Input, - 0 - ]); - - return bytes; -} - -function parseSuiAddress(str) { - const STRUCT_REGEX = /^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/; - const structMatch = str.match(STRUCT_REGEX); - if (structMatch) { - return { - address: structMatch[1], - module: structMatch[2], - name: structMatch[3], - typeParams: [], - }; - } - - throw new Error(`Encountered unexpected token when parsing type args for ${str}`); -} - -module.exports = { - getPoolTokenBalance, -}; diff --git a/projects/allbridge/index.js b/projects/allbridge/index.js deleted file mode 100644 index 8942550d68b..00000000000 --- a/projects/allbridge/index.js +++ /dev/null @@ -1,275 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const sdk = require('@defillama/sdk') -const solana = require('../helper/solana') -const cosmos = require('../helper/chain/cosmos') -const { staking } = require('../helper/staking'); -const near = require('../helper/chain/near'); -const { default: BigNumber } = require('bignumber.js'); -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); -const ripple = require('./ripple'); -const NATIVE_ADDRESS = nullAddress; - -const data = { - celo: { - contractAddress: "0xBBbD1BbB4f9b936C3604906D7592A644071dE884", - staking: { - contractAddress: "0x788BA01f8E2b87c08B142DB46F82094e0bdCad4F", - abrAddress: "0x6e512BFC33be36F2666754E996ff103AD1680Cc9", - decimals: 18 - }, - tokens: [ - {name: "apyswap", address: "0x8D2c7789652342E9405A15FA4f4721362495f92D", decimals: 18}, - {name: "avalanche-2", address: "0x8e3670fd7b0935d3fe832711debfe13bb689b690", decimals: 18}, - {name: "celo", address: NATIVE_ADDRESS, decimals: 18}, - {name: "celo-dollar", address: ADDRESSES.celo.cUSD, decimals: 18}, - {name: "celo-euro", address: "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73", decimals: 18}, - {name: "saber", address: "0x47264ae1fc0c8e6418ebe78630718e11a07346a8", decimals: 18}, - {name: "solana", address: "0x173234922eb27d5138c5e481be9df5261faed450", decimals: 18}, - {name: "usd-coin", address: ADDRESSES.celo.USDC, decimals: 6}, - ] - }, - avax: { - contractAddress: "0xBBbD1BbB4f9b936C3604906D7592A644071dE884", - staking: { - contractAddress: "0x788BA01f8E2b87c08B142DB46F82094e0bdCad4F", - abrAddress: "0xaFc43610C7840b20b90CAaF93759bE5b54B291c9", - decimals: 18 - }, - tokens: [ - {name: "avalanche-2", address: NATIVE_ADDRESS, decimals: 18}, - {name: "usd-coin", address: ADDRESSES.avax.USDC_e, decimals: 6}, - {name: "tether", address: ADDRESSES.avax.USDT_e, decimals: 6}, - {name: "bitcoin", address: ADDRESSES.avax.WBTC_e, decimals: 8}, - {name: "apyswap", address: "0x4b0093a44802bD870FC20E811862875f0F1E5970", decimals: 18} - ] - }, - fantom: { - contractAddress: "0xBBbD1BbB4f9b936C3604906D7592A644071dE884", - staking: { - contractAddress: "0x1Bb92e03d2bdF3D7849296Ff7F9685696b0CaA39", - abrAddress: "0x543Acd673960041eEe1305500893260F1887B679", - decimals: 18 - }, - tokens: [ - {name: "fantom", address: NATIVE_ADDRESS, decimals: 18}, - {name: "solana", address: "0x44F7237df00E386af8e79B817D05ED9f6FE0f296", decimals: 18}, - ] - }, - polygon: { - contractAddress: "0xBBbD1BbB4f9b936C3604906D7592A644071dE884", - staking: { - contractAddress: "0x788BA01f8E2b87c08B142DB46F82094e0bdCad4F", - abrAddress: "0x04429fbb948bbd09327763214b45e505a5293346", - decimals: 18 - }, - tokens: [ - {name: "apyswap", address: "0x14743E1c6f812154F7ecc980D890F0F5234103e7", decimals: 18}, - {name: "ariadne", address: "0xB6EBc3ca1741a8f37551E44A51eC00aD417B38CA", decimals: 18}, - {name: "duckies", address: "0x18e73A5333984549484348A94f4D219f4faB7b81", decimals: 8}, - {name: "hapi", address: "0xbE276e3d5060B0e770FE0260bB6BE94ac19b4B19", decimals: 18}, - {name: "mimatic", address: "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1", decimals: 18}, - {name: "near", address: "0x72bd80445b0db58ebe3E8dB056529D4C5FAF6F2f", decimals: 18}, - {name: "solana", address: "0x7dff46370e9ea5f0bad3c4e29711ad50062ea7a4", decimals: 18}, - {name: "tether", address: ADDRESSES.polygon.USDT, decimals: 6}, - {name: "usd-coin", address: ADDRESSES.polygon.USDC, decimals: 6}, - ] - }, - bsc: { - contractAddress: "0xBBbD1BbB4f9b936C3604906D7592A644071dE884", - staking: { - contractAddress: "0x788BA01f8E2b87c08B142DB46F82094e0bdCad4F", - abrAddress: "0x68784ffaa6Ff05E3e04575DF77960DC1D9F42b4a", - decimals: 18 - }, - tokens: [ - {name: "apyswap", address: "0x37dfACfaeDA801437Ff648A1559d73f4C40aAcb7", decimals: 18}, - {name: "ariadne", address: "0xa0A9961b7477D1a530f06a1ee805d5E532e73d97", decimals: 18}, - {name: "binance-bitcoin", address: ADDRESSES.bsc.BTCB, decimals: 18}, - {name: "binance-usd", address: ADDRESSES.bsc.BUSD, decimals: 18}, - {name: "binancecoin", address: NATIVE_ADDRESS, decimals: 18}, - {name: "genopets", address: "0x9df465460938f9ebdf51c38cc87d72184471f8f0", decimals: 18}, - {name: "hapi", address: "0xD9c2D319Cd7e6177336b0a9c93c21cb48d84Fb54", decimals: 18}, - {name: "hedget", address: "0xc7d8d35eba58a0935ff2d5a33df105dd9f071731", decimals: 6}, - {name: "impossible-finance", address: "0xB0e1fc65C1a741b4662B813eB787d369b8614Af1", decimals: 18}, - {name: "investin", address: ADDRESSES.bsc.IVN, decimals: 18}, - {name: "solo-coin", address: "0xc2c28b58db223DA89b567A0A98197Fc17C115148", decimals: 15}, - {name: "tether", address: ADDRESSES.bsc.USDT, decimals: 18}, - {name: "usd-coin", address: ADDRESSES.bsc.USDC, decimals: 18}, - ] - }, - ethereum: { - contractAddress: "0xBBbD1BbB4f9b936C3604906D7592A644071dE884", - tokens: [ - {name: "apyswap", address: "0xf7413489c474ca4399eeE604716c72879Eea3615", decimals: 18}, - {name: "ariadne", address: "0xb1c9bc94aCd2fAE6aABf4ffae4429B93512a81D2", decimals: 18}, - {name: "duckies", address: "0x90b7E285ab6cf4e3A2487669dba3E339dB8a3320", decimals: 8}, - {name: "ethereum", address: NATIVE_ADDRESS, decimals: 18}, - {name: "hapi", address: "0xD9c2D319Cd7e6177336b0a9c93c21cb48d84Fb54", decimals: 18}, - {name: "pentagon-games", address: "0x5Ee3188A3f8aDee1D736EdD4AE85000105C88f66", decimals: 18}, - {name: "tether", address: ADDRESSES.ethereum.USDT, decimals: 6}, - {name: "usd-coin", address: ADDRESSES.ethereum.USDC, decimals: 6}, - ] - }, - aurora: { - tokens: [], - staking: { - contractAddress: "0x788BA01f8E2b87c08B142DB46F82094e0bdCad4F", - abrAddress: "0x2BAe00C8BC1868a5F7a216E881Bae9e662630111", - decimals: 18 - }, - }, - harmony: { - tokens: [], - staking: { - contractAddress: "0x788BA01f8E2b87c08B142DB46F82094e0bdCad4F", - abrAddress: "0xf80eD129002B0eE58C6d2E63D0D7Dc9Fc9f3383C", - decimals: 18 - }, - }, - fuse: { - tokens: [ - {name: "ethereum", address: "0xCC9d144a8a8A1e71D5EC66A13F301b9E0137e71C", decimals: 18}, - {name: "solana", address: "0x5Cb5249d420639619fFd637C79f0AA5C0a9FcD4B", decimals: 9}, - ], - staking: { - contractAddress: "0x788BA01f8E2b87c08B142DB46F82094e0bdCad4F", - abrAddress: "0xa21AaB22A0bAF9fff3392B0aFc5115b955664FD4", - decimals: 18 - }, - }, -} - -const solanaData = { - contractAddress: 'bb1XfNoER5QC3rhVDaVz3AJp9oFKoHNHG6PHfZLcCjj', - staking: { - tokenAccount: '51dd7AuT32b5VCK2rBVrjLGvfuvZ3kMayNrZZbWuvas2' - }, - tokens: [ - {name: "apyswap", tokenAccount: '8fdkYq4XWb1LfkNcAByZUHspyvasyqH7CmFBCkoqSK5d'}, - {name: "ben-the-dog", tokenAccount: '8WgpKyaBKdG93YqHWM675S6rsZgjMZmhtJjfWriC3hX5'}, - {name: "genopets", tokenAccount: 'Cko5gjsiFMaqoBFF7bEUZZ7neqNtJd7VJpYvfBcxYjQX'}, - {name: "mimatic", tokenAccount: '3xxvGGE3StCEHwJbrYXWv6jsYgTbEWhcCN166Bx8kfJL'}, - {name: "saber", tokenAccount: '7KkMhrF9Hv7dfaX5xXFtTTrfJfVjHYZ5ymwAuXVgJ6Kf'}, - {name: "solana", tokenAccount: 'HHC3niNsTB3hNN1kZH9BHMLiwLvCSegKBLu82tAT2iG8'}, - {name: "usd-coin", tokenAccount: 'AxsSzB2JvyHZr6uDjV3Prmak2JEqYUoaSQh9rPMSUvf2'}, - ] -} - - -const terraData = { - contractAddress: "terra18hf7422vyyc447uh3wpzm50wzr54welhxlytfg", - staking: { - contractAddress: "terra1n3v0c4dhn33adnznl3yh5r6myjgrz57x6pqkeg", - abrAddress: "terra1a7ye2splpfzyenu0yrdu8t83uzgusx2malkc7u", - decimals: 6 - }, - tokens: [] -} - -const nearData = { - contractAddress: "bridge.a11bd.near", - staking: { - contractAddress: "staking.a11bd.near", - decimals: 24 - }, - tokens: [ - {name: "apyswap", address: "apys.token.a11bd.near", decimals: 24}, - {name: "ben-the-dog", address: "benthedog.near", decimals: 9}, - {name: "celo", address: "celo.token.a11bd.near", decimals: 24}, - {name: "celo-dollar", address: "cusd.token.a11bd.near", decimals: 24}, - {name: "near", address: "wrap.near", decimals: 24}, - {name: "solana", address: "sol.token.a11bd.near", decimals: 24}, - ] -} - -const rippleData = { - contractAddress: "r4w1LrneWZqX5RrgFPx2gto66dwo2Zymqy", - tokens: [ - {name: "solo-coin", issuer: "rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz", currency: "534F4C4F00000000000000000000000000000000"}, - ] -} - -const toNumber = (decimals, n) => BigNumber(n/(10 ** decimals)).toFixed(0) - -function getTVLFunction(chain) { - return async function tvl(api) { - const chainData = data[chain]; - const tokens = chainData.tokens.map(i => i.address) - return sumTokens2({ api, tokens, owner: chainData.contractAddress }) - } -} - -function getStakingFunction(chain) { - const stakingData = data[chain].staking; - if (!stakingData) { - return - } - return staking(stakingData.contractAddress, stakingData.abrAddress, chain, "allbridge", stakingData.decimals); -} - -async function solanaTvl() { - return solana.sumTokens2({ tokenAccounts: solanaData.tokens.map(i => i.tokenAccount)}) -} - -async function solanaStaking() { - return solana.sumTokens2({ tokenAccounts: [solanaData.staking.tokenAccount] }) -} - -async function terraTvl() { - return cosmos.sumTokens({ chain: "terra", owner: terraData.contractAddress }) -} - -async function terraStaking() { - const balance = await cosmos.getBalance({ token: terraData.staking.abrAddress, owner: terraData.staking.contractAddress, chain: "terra"}); - return { allbridge: toNumber(terraData.staking.decimals, balance) } -} - -async function nearTvl() { - const balances = {} - for (const token of nearData.tokens) { - const balance = await near.getTokenBalance(token.address, nearData.contractAddress); - sdk.util.sumSingleBalance(balances, token.name, toNumber(token.decimals, balance)); - } - return balances -} - -async function nearStaking() { - const balance = await near.call(nearData.staking.contractAddress, "get_abr_balance"); - return { allbridge: toNumber(nearData.staking.decimals, balance) } -} - -async function rippleTvl() { - return ripple.sumTokens({tokens: rippleData.tokens, owners: [rippleData.contractAddress]}); -} - -module.exports={ - methodology: "All tokens locked in Allbridge Classic contracts.", - timetravel: false, - solana: { - tvl: solanaTvl, - staking: solanaStaking - }, - terra: { - tvl: terraTvl, - staking: terraStaking - }, - near: { - tvl: nearTvl, - staking: nearStaking - }, - ripple: { - tvl: rippleTvl, - }, - hallmarks:[ - [1651881600, "UST depeg"], - ], -} - -Object.keys(data).forEach(chain => { - module.exports[chain] = { - tvl: getTVLFunction(chain), - staking: getStakingFunction(chain), - } -}) - diff --git a/projects/allbridge/ripple.js b/projects/allbridge/ripple.js deleted file mode 100644 index c95dae2028c..00000000000 --- a/projects/allbridge/ripple.js +++ /dev/null @@ -1,42 +0,0 @@ -const {default: BigNumber} = require("bignumber.js") -const {post} = require("../helper/http"); -const sdk = require("@defillama/sdk"); -const {PromisePool} = require("@supercharge/promise-pool"); - -const endpoint = 'https://s1.ripple.com:51234'; - -async function sumTokens({ tokens = [], owners = [], balances = {} }) { - const { errors } = await PromisePool.withConcurrency(5) - .for(owners) - .process(async owner => { - await getTokenBalances(tokens, owner, { balances }) - }) - - if (errors && errors.length) - throw errors[0] - - return balances -} - -async function getTokenBalances(tokens, account, { balances = {} } = {}) { - const body = { - method: 'account_lines', - params: [{ account, ledger_index: 'validated' }] - }; - const res = await post(endpoint, body); - - const lines = res?.result?.lines; - if (!lines) return balances; - for (const line of lines) { - const token = tokens.find((t) => line.currency === t.currency && line.account === t.issuer); - if (token === undefined) continue; - const balance = BigNumber(line.balance).toFixed(0); - sdk.util.sumSingleBalance(balances, token.name, balance); - } - return balances; -} - -module.exports = { - getTokenBalances, - sumTokens, -}; diff --git a/projects/allchainbridge/index.js b/projects/allchainbridge/index.js deleted file mode 100644 index a0372fc8b8f..00000000000 --- a/projects/allchainbridge/index.js +++ /dev/null @@ -1,105 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') - -const getBridgeContract = (chain) => { - switch (chain) { - case 'ethereum': - return '0x92e929d8b2c8430bcaf4cd87654789578bb2b786'; - case 'bsc': - return '0x1ed5685f345b2fa564ea4a670de1fde39e484751'; - case 'heco': - return '0xaeAE2CBb1E024E27e80cc61eE9A8B300282209B4'; - case 'okexchain': - return '0x37809F06F0Daf8f1614e8a31076C9bbEF4992Ff9'; - case 'polygon': - return '0x242Ea2A8C4a3377A738ed8a0d8cC0Fe8B4D6C36E'; - case 'fantom': - return '0x8f957ed3f969d7b6e5d6df81e61a5ff45f594dd1'; - case 'kava': - return '0xa62a9c5cC8B92E00AB269BcA9f5539617AA65863'; - default: - throw new Error('Missing bridge contract'); - } -} - -/* - * TOKEN CONFIGURATION - * ADD TOKENS AND NETWORKS HERE - */ - -const tokensConf = { - ethereum: { - ETH: nullAddress, - BUSD: ADDRESSES.ethereum.BUSD, - USDC: ADDRESSES.ethereum.USDC, - USDT: ADDRESSES.ethereum.USDT, - DAI: ADDRESSES.ethereum.DAI, - HBTC: "0x0316EB71485b0Ab14103307bf65a021042c6d380", - WETH: ADDRESSES.ethereum.WETH, - SWFTC: "0x0bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e", - HT: "0x6f259637dcd74c767781e37bc6133cd6a68aa161", - }, - bsc: { - BNB: nullAddress, - BUSD: ADDRESSES.bsc.BUSD, - USDC: ADDRESSES.bsc.USDC, - USDT: ADDRESSES.bsc.USDT, - DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - WBNB: ADDRESSES.bsc.WBNB, - BTCB: ADDRESSES.bsc.BTCB, - ETH: ADDRESSES.bsc.ETH, - SWFTC: "0xe64e30276c2f826febd3784958d6da7b55dfbad3", - DOGE: "0xba2ae424d960c26247dd6c32edc70b295c744c43", - }, - heco: { - HT: nullAddress, - USDC: ADDRESSES.heco.USDC_HECO, - USDT: ADDRESSES.heco.USDT, - HUSD: "0x0298c2b32eae4da002a15f36fdf7615bea3da047", - ETH: "0x64ff637fb478863b7468bc97d30a5bf3a428a1fd", - SWFTC: "0x329dda64Cbc4DFD5FA5072b447B3941CE054ebb3", - }, - okexchain: { - OKT: nullAddress, - USDC: ADDRESSES.okexchain.USDC, - USDT: ADDRESSES.okexchain.USDT, - ETH: ADDRESSES.okexchain.ETHK, - OKB: ADDRESSES.okexchain.OKB, - }, - polygon: { - MATIC: nullAddress, - USDC: ADDRESSES.polygon.USDC, - USDT: ADDRESSES.polygon.USDT, - WMATIC: ADDRESSES.polygon.WMATIC_2, - }, - fantom: { - FTM: nullAddress, - USDC: ADDRESSES.fantom.USDC, - USDT: ADDRESSES.fantom.fUSDT, - DAI: ADDRESSES.fantom.DAI, - WETH: "0x74b23882a30290451A17c44f4F05243b6b58C76d", - }, - kava: { - KAVA: nullAddress, - }, -}; - -/* - * END OF CONFIGURATION - */ - -const createTvlFunction = (chain) => async (timestamp, block, chainBlocks) => { - const bridgeContract = getBridgeContract(chain); - const tokens = Object.values(tokensConf[chain]) - const owners = [bridgeContract] - return sumTokens2({ chain, block:chainBlocks[chain], tokens, owners }) -}; - -module.exports = { - methodology: "Assets staked in the pool and trading contracts", -} -for (const network of Object.keys(tokensConf)) { - module.exports[network] = { - tvl: createTvlFunction(network), - }; -} diff --git a/projects/alligator-exchange/index.js b/projects/alligator-exchange/index.js deleted file mode 100644 index fd34cd6262f..00000000000 --- a/projects/alligator-exchange/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const token = "0x43C812Ba28cb061b1Be7514145A15C9E18a27342"; -const stakingContract = "0x32A948F018870548bEd7e888Cd97a257b700D4c6"; -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'avax': '0xD9362AA8E0405C93299C573036E7FB4ec3bE1240' -}, { staking: { avax: [stakingContract, token] } }) diff --git a/projects/allinx.js b/projects/allinx.js deleted file mode 100644 index 4b631b32f08..00000000000 --- a/projects/allinx.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - methodology: 'Project is abandoned', - bsc: { - tvl: () => 0 - }, - deadFrom: 1680328420, -} diff --git a/projects/allinxswap/index.js b/projects/allinxswap/index.js deleted file mode 100644 index b06279b7cc5..00000000000 --- a/projects/allinxswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - op_bnb: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: "0xAFcA85A70Bd1C2Bf98DB7F24b2380134F76Af7f1", - }), - }, - bsc: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: "0xB755953681f0b54f59336294f6758aE9e2E3aB5e", - }), - }, -}; diff --git a/projects/allo/index.js b/projects/allo/index.js deleted file mode 100644 index 51a9d7ca840..00000000000 --- a/projects/allo/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - - -module.exports = { - methodology: `Total amount of BTC in restaked on babylon`, - doublecounted:true, - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.allo }), - }, -}; diff --git a/projects/allspark/index.js b/projects/allspark/index.js deleted file mode 100644 index 224d8852c69..00000000000 --- a/projects/allspark/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {staking} = require("../helper/staking"); - -module.exports = { - methodology: 'allspark counts the staking values as tvl', - zklink:{ - tvl: staking( - ["0xD06B5A208b736656A8F9cD04ed43744C738BD8A9"], - [ADDRESSES.null] - ) - } -}; diff --git a/projects/allstake/index.js b/projects/allstake/index.js deleted file mode 100644 index c8b3dbaa445..00000000000 --- a/projects/allstake/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { getUniqueAddresses } = require('../helper/utils'); -const { call, sumTokens, } = require('../helper/chain/near'); -const { sumTokens2, getConnection } = require('../helper/solana'); -const { sumTokens2: evmSumTokens2 } = require("../helper/unwrapLPs") -const { PublicKey } = require('@solana/web3.js'); - -const ALLSTAKE_NEAR_CONTRACT = 'allstake.near'; -const ALLSTAKE_SOLANA_PROGRAM = new PublicKey('a11zL6Uxue6mYG3JD3APmnVhS4RVjGTJZbENY7L6ZfD'); -const ALLSTAKE_ETHEREUM_STRATEGY_MANAGER_CONTRACT = '0x344F8B88357A710937f2b3db9d1B974B9a002afB'; - -async function ethereumTvl(api) { - const strategies = await api.fetchList({ lengthAbi: 'strategiesLen', itemAbi: 'strategies', target: ALLSTAKE_ETHEREUM_STRATEGY_MANAGER_CONTRACT }) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: strategies }); - return evmSumTokens2({ api, tokensAndOwners2: [tokens, strategies] }); -} - -async function nearTvl() { - const strategies = await call(ALLSTAKE_NEAR_CONTRACT, 'get_strategies', {}); - const tokens = getUniqueAddresses(strategies.map(s => s.underlying_token)); - return sumTokens({ - owners: [ALLSTAKE_NEAR_CONTRACT], - tokens, - }); -} - -async function solanaTvl() { - const result = await getConnection().getProgramAccounts(ALLSTAKE_SOLANA_PROGRAM, { - encoding: "base64", - // We only care about the strategy addresses. - dataSlice: { offset: 0, length: 0 }, - filters: [ - { dataSize: 316 }, - ], - }); - const owners = result.map(({ pubkey }) => pubkey); - - return sumTokens2({ owners }); -} - -module.exports = { - near: { - tvl: nearTvl, - }, - solana: { - tvl: solanaTvl - }, - ethereum: { - tvl: ethereumTvl, - }, - timetravel: false, - methodology: 'Summed up all the tokens deposited in the contract', -} diff --git a/projects/almanak/index.js b/projects/almanak/index.js deleted file mode 100644 index 4568713edb2..00000000000 --- a/projects/almanak/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const config = { - ethereum: { - vaults:[ - "0xDCD0f5ab30856F28385F641580Bbd85f88349124", // alUSD - "0x5a97B0B97197299456Af841F8605543b13b12eE3", // alpUSD - ], - }, -}; - -module.exports.methodology = 'Count all asset deposited in Almanak vaults' -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - return await api.erc4626Sum2({ - calls: config[chain].vaults, - }) - } - }} -) diff --git a/projects/almond.js b/projects/almond.js deleted file mode 100644 index 425866a6a42..00000000000 --- a/projects/almond.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - timetravel: false, - methodology: "The pools on https://almond.so/ are included in TVL. Standard tokens (SOL, BTC, ETH, USDC, etc..), no pool 2. The API fetches the balances of the Solana accounts holding the staked tokens, then uses Coingecko prices to determine dollar values.", - solana: { - tvl: () => ({}), // project is dead - }, - deadFrom: "2022-06-19", -}; diff --git a/projects/aloe/index.js b/projects/aloe/index.js deleted file mode 100644 index 0bd29e603bd..00000000000 --- a/projects/aloe/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs") -const { getUniqueAddresses } = require("../helper/utils") - -const config = { - ethereum: { fromBlock: 18782116, }, - optimism: { fromBlock: 113464669, }, - base: { fromBlock: 7869252, }, - arbitrum: { fromBlock: 159919891, }, - linea: { factory: '0x00000000333288eBA83426245D144B966Fd7e82E', fromBlock: 3982456 }, -}; - -async function getVaults(api) { - const { factory = '0x000000009efdB26b970bCc0085E126C9dfc16ee8', fromBlock } = config[api.chain]; - const createMarketEvents = await getLogs({ - api, - fromBlock, - target: factory, - eventAbi: "event CreateMarket(address indexed pool, address lender0, address lender1)", - onlyArgs: true, - }); - const res = createMarketEvents.flatMap(i => [i.lender0, i.lender1]) - return getUniqueAddresses(res) -} - -async function tvl(api) { - const vaults = await getVaults(api); - return api.erc4626Sum({ calls: vaults, tokenAbi: 'address:asset', balanceAbi: 'uint256:lastBalance' }); -} - -async function borrowed(api) { - const vaults = await getVaults(api); - const tokens = await api.multiCall({ calls: vaults, abi: "address:asset" }); - const stats = await api.multiCall({ - calls: vaults, - abi: "function stats() view returns (uint72 borrowIndex, uint256 totalAssets, uint256 totalBorrows, uint256 totalSupply)", - }); - api.addTokens(tokens, stats.map(x => x.totalBorrows)); -} - -module.exports = { - doublecounted: false, - methodology: - "Sums up deposits and borrows across Aloe's ERC4626 lending vaults to get TVL and Borrowed amounts, respectively. Does not include collateral value.", -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed } -}) \ No newline at end of file diff --git a/projects/alongside/index.js b/projects/alongside/index.js deleted file mode 100644 index 5b9d8f81f66..00000000000 --- a/projects/alongside/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const aSTETH = "0x27C2B9fd547EAd2c05C305BeE2399A55811257c2" - const vault = "0xf3bCeDaB2998933c6AAD1cB31430D8bAb329dD8C" - const astBal = await api.call({ abi: 'erc20:balanceOf', target: aSTETH, params: vault }) - const stethBal = await api.call({ abi: 'erc20:balanceOf', target: ADDRESSES.ethereum.STETH, params: aSTETH }) - const astethSupply = await api.call({ abi: 'erc20:totalSupply', target: aSTETH }) - api.add(ADDRESSES.ethereum.STETH, stethBal * astBal / astethSupply) - - return sumTokens2({ api, owner: vault, fetchCoValentTokens: true, blacklistedTokens: [aSTETH] }) -} - -module.exports = { - methodology: - "Data is retrieved from calculation of market price and total supply", - ethereum: { - tvl, - }, -}; diff --git a/projects/alpaca-finance-lend/abi.json b/projects/alpaca-finance-lend/abi.json deleted file mode 100644 index ba568317cd3..00000000000 --- a/projects/alpaca-finance-lend/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "vaultDebtVal": "uint256:vaultDebtVal", - "totalToken": "uint256:totalToken", - "pendingInterest": "function pendingInterest(uint256 value) public view returns (uint256)", - "balanceOf": "function balanceOf(address account) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/alpaca-finance-lend/index.js b/projects/alpaca-finance-lend/index.js deleted file mode 100644 index ab96424579e..00000000000 --- a/projects/alpaca-finance-lend/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { tvl, borrowed } = require("./lend"); - -// node test.js projects/alpaca-finance-lend/index.js -module.exports = { - start: '2020-10-07', - methodology: "Sum floating balance and vaultDebtValue in each vault", - bsc: { tvl, borrowed, }, - fantom: { tvl, borrowed, }, -}; diff --git a/projects/alpaca-finance-lend/lend.js b/projects/alpaca-finance-lend/lend.js deleted file mode 100644 index dfbfb327741..00000000000 --- a/projects/alpaca-finance-lend/lend.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getProcolAddresses } = require("../alpaca-finance/lyf"); -const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - /// @dev Getting all addresses from Github - const addresses = await getProcolAddresses(api.chain) - return sumTokens2({ api, tokensAndOwners: addresses["Vaults"].map(v => [v.baseToken, v.address]) }) -} - -async function borrowed(api) { - /// @dev Getting all addresses from Github - const addresses = await getProcolAddresses(api.chain); - - const vaultsDebtVal = await api.multiCall({ - abi: abi.vaultDebtVal, - calls: addresses["Vaults"].map((v) => v.address), - }) - - const vaultsPendingInterest = await pendingInterest(addresses, api); - addresses["Vaults"].forEach((v, i) => { - api.add(v.baseToken, +vaultsPendingInterest[i] + +vaultsDebtVal[i]) - }) -} - -async function pendingInterest(addresses, api) { - return api.multiCall({ - abi: abi.pendingInterest, - calls: addresses["Vaults"].map((v) => { - return { target: v.address, params: [0] }; - }), - }) -} - -module.exports = { - tvl, - borrowed, -}; diff --git a/projects/alpaca-finance-v2/abi.json b/projects/alpaca-finance-v2/abi.json deleted file mode 100644 index 8650c709ef6..00000000000 --- a/projects/alpaca-finance-v2/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getFloatingBalance": "function getFloatingBalance(address _token) external view returns (uint256 _floating)", - "getGlobalDebtValueWithPendingInterest": "function getGlobalDebtValueWithPendingInterest(address _token) external view returns (uint256)" -} \ No newline at end of file diff --git a/projects/alpaca-finance-v2/index.js b/projects/alpaca-finance-v2/index.js deleted file mode 100644 index e3dfbaef57e..00000000000 --- a/projects/alpaca-finance-v2/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { lendingTvl, borrowTvl } = require("./moneyMarket"); - -module.exports = { - start: '2020-10-07', - methodology: "Sum floating balance and borrow for each token", - bsc: { - tvl: lendingTvl, - borrowed: borrowTvl - }, -}; \ No newline at end of file diff --git a/projects/alpaca-finance-v2/moneyMarket.js b/projects/alpaca-finance-v2/moneyMarket.js deleted file mode 100644 index 86ea760f3a8..00000000000 --- a/projects/alpaca-finance-v2/moneyMarket.js +++ /dev/null @@ -1,29 +0,0 @@ -const abi = require("./abi.json"); -const { getConfig } = require("../helper/cache"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function getMoneyMarketData() { - return (await getConfig("alpaca-finance-2.0", "https://raw.githubusercontent.com/alpaca-finance/alpaca-v2-money-market/main/.mainnet.json")).moneyMarket; -} - -async function lendingTvl(api) { - const { moneyMarketDiamond, markets } = await getMoneyMarketData(); - return sumTokens2({ api, owner: moneyMarketDiamond, tokens: markets.map(i => i.token)}) -} - -async function borrowTvl(api) { - const { moneyMarketDiamond, markets } = await getMoneyMarketData(); - const tokens = markets.map(i => i.token) - - const borrows = (await api.multiCall({ - abi: abi.getGlobalDebtValueWithPendingInterest, - target: moneyMarketDiamond, - calls: tokens - })) - api.addTokens(tokens, borrows) -} - -module.exports = { - lendingTvl, - borrowTvl -} \ No newline at end of file diff --git a/projects/alpaca-finance/abi.json b/projects/alpaca-finance/abi.json deleted file mode 100644 index ec31a9cd8a0..00000000000 --- a/projects/alpaca-finance/abi.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "vaultDebtVal": "uint256:vaultDebtVal", - "totalToken": "uint256:totalToken", - "token": "address:token", - "pid": "uint256:pid", - "reservePool": "uint256:reservePool", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "totalSupply": "uint256:totalSupply", - "lpToken": "address:lpToken", - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)", - "userInfoCake": "function userInfo(address) view returns (uint256 shares, uint256 lastDepositedTime)", - "singleAssetPrice": "uint256:getPricePerFullShare", - "pId": "uint256:pid", - "ausdTotalStablecoinIssued": "uint256:totalStablecoinIssued", - "xalpacaTotalSupply": "uint256:supply" -} \ No newline at end of file diff --git a/projects/alpaca-finance/ausd.js b/projects/alpaca-finance/ausd.js deleted file mode 100644 index fbc4fbd119a..00000000000 --- a/projects/alpaca-finance/ausd.js +++ /dev/null @@ -1,60 +0,0 @@ -const abi = require("./abi.json"); -const { getConfig } = require('../helper/cache') - -async function getProcolAUSDAddresses(chain) { - if (chain == "bsc") { - return ( - await getConfig('alpaca-finance/ausd-bsc', - "https://raw.githubusercontent.com/alpaca-finance/alpaca-stablecoin/main/.mainnet.json" - ) - ); - } -} - -async function getProcolLYFAddresses(chain) { - if (chain == "bsc") { - return ( - await getConfig('alpaca-finance/lyf-bsc', - "https://raw.githubusercontent.com/alpaca-finance/bsc-alpaca-contract/main/.mainnet.json" - ) - ); - } - if (chain == "fantom") { - return ( - await getConfig('alpaca-finance/lyf-fantom', - "https://raw.githubusercontent.com/alpaca-finance/bsc-alpaca-contract/main/.fantom_mainnet.json" - ) - ); - } -} - -async function calAusdTvl(api) { - const chain = api.chain; - - const ausdAddresses = await getProcolAUSDAddresses(chain); - const lyfAddresses = await getProcolLYFAddresses(chain); - const ibTokens = ausdAddresses["IbTokenAdapters"].map((i) => i.address) - const pids = await api.multiCall({ abi: abi.pid, calls: ibTokens }); - const failaunchUserInfos = await api.multiCall({ - abi: abi.userInfo, - target: lyfAddresses["FairLaunch"].address, - calls: pids.map((each, i) => { - return { - params: [each, ibTokens[i]], - }; - }), - }); - const collateralTokens = ausdAddresses.IbTokenAdapters.map((each) => each.collateralToken); - const totalTokens = await api.multiCall({ abi: abi.totalToken, calls: collateralTokens }); - const totalSupplys = await api.multiCall({ abi: abi.totalSupply, calls: collateralTokens, }); - const vaultTokens = await api.multiCall({ abi: abi.token, calls: collateralTokens, }); - - failaunchUserInfos.forEach((eachUserInfo, i) => { - api.add(vaultTokens[i], eachUserInfo.amount * totalTokens[i] / totalSupplys[i]); - }) - return api.getBalances() -} - -module.exports = { - calAusdTvl, -}; diff --git a/projects/alpaca-finance/index.js b/projects/alpaca-finance/index.js deleted file mode 100644 index 042b95927ec..00000000000 --- a/projects/alpaca-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const sdk = require('@defillama/sdk') -const { calLyfTvl } = require("./lyf"); -const { calAusdTvl } = require('./ausd'); -const { calxALPACAtvl } = require('./xalpaca'); -const aExports = require('../alpaca-finance-lend'); - -module.exports = { - start: '2020-10-07', - bsc: { - tvl: sdk.util.sumChainTvls([calLyfTvl, calAusdTvl, aExports.bsc.tvl]), - staking: calxALPACAtvl, - }, - fantom: { - tvl: sdk.util.sumChainTvls([calLyfTvl, aExports.fantom.tvl]), - staking: calxALPACAtvl, - } -}; diff --git a/projects/alpaca-finance/lyf.js b/projects/alpaca-finance/lyf.js deleted file mode 100644 index f6461842812..00000000000 --- a/projects/alpaca-finance/lyf.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache') - -async function getProcolAddresses(chain) { - if (chain == 'bsc') { - return ( - await getConfig('alpaca-finance/lyf-bsc', - "https://raw.githubusercontent.com/alpaca-finance/bsc-alpaca-contract/main/.mainnet.json" - ) - ) - } - if (chain == 'fantom') { - return ( - await getConfig('alpaca-finance/lyf-fantom', - "https://raw.githubusercontent.com/alpaca-finance/bsc-alpaca-contract/main/.fantom_mainnet.json" - ) - ) - } -} - -async function calLyfTvl(api) { - const chain = api.chain; - const addresses = await getProcolAddresses(chain); - const vaults = addresses["Vaults"].map(i => i.address) - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:totalToken', calls: vaults }) - api.add(tokens, bals) - api.removeTokenBalance(ADDRESSES.bsc.BTCB) - return api.getBalances() -} - -module.exports = { - calLyfTvl, - getProcolAddresses -} diff --git a/projects/alpaca-finance/xalpaca.js b/projects/alpaca-finance/xalpaca.js deleted file mode 100644 index 00c4de86605..00000000000 --- a/projects/alpaca-finance/xalpaca.js +++ /dev/null @@ -1,32 +0,0 @@ -const abi = require("./abi.json"); -const { getConfig } = require('../helper/cache') - -async function getProcolXAlpacaAddresses(chain) { - if (chain == "bsc") { - return ( - await getConfig('alpaca-finance/x-bsc', - "https://raw.githubusercontent.com/alpaca-finance/xALPACA-contract/main/.mainnet.json" - ) - ) - } - if (chain == "fantom") { - return ( - await getConfig('alpaca-finance/x-fantom', - "https://raw.githubusercontent.com/alpaca-finance/xALPACA-contract/main/.fantom_mainnet.json" - ) - ) - } -} - - -async function calxALPACAtvl(api) { - const xalpacaAddresses = await getProcolXAlpacaAddresses(api.chain); - - const xalpacaTVL = await api.call({ abi: abi.xalpacaTotalSupply, target: xalpacaAddresses["xALPACA"], }) - const alpacaAddress = xalpacaAddresses["Tokens"]["ALPACA"]; - api.add(alpacaAddress, xalpacaTVL) -} - -module.exports = { - calxALPACAtvl, -} \ No newline at end of file diff --git a/projects/alpacacity/index.js b/projects/alpacacity/index.js deleted file mode 100644 index 7897f81e30c..00000000000 --- a/projects/alpacacity/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const { staking } = require("../helper/staking"); - -/*** Ethereum Addresss ***/ -const stakingContracts = [ - //stakingContractAlpaFireChamber - "0x741Cee6e4Bd99Df866ab0dD0D0C0b5ED7033344A", - //stakingContract - "0x232F030747008D3bA5d51526f5966d8985218Ff0", - //StakingContractAlpacaSquadNFTFarm - "0xE23A7741A5E9500f7a1dE4B246d1F7f29F81605F" -]; -const ALPA = "0x7cA4408137eb639570F8E647d9bD7B7E8717514A"; - -const farmContract = "0x217a7D0Ac6573b0f013e12f92B6d5B250FA15D97"; -const WETH_ALPA2_UNIV2 = "0x441f9e2c89a343cefb390a8954b3b562f8f91eca"; - -/*** BSC Addresss ***/ -const stakingContractBSC = "0xa24FBFE379Ecb914c205BE4d9214592F64194059"; -const ALPA_BSC = "0xc5E6689C9c8B02be7C49912Ef19e79cF24977f03"; - -const farmContractsBSC = [ - //V2 - "0x25B0dc84b62D7e2bd4eBba0Dda6C25E3e7c0D717", - //V1 - "0x03625c4156A010065D135A18123a9e25FF5AEd12", -]; -const lpPairContractsBSC = [ - //WBNB_ALPA_CakeLP V2 - "0x4cC442220BE1cE560C1f2573f8CA8f460B3E4172", - //WBNB_ALPA_CakeLP V1 - "0x837cD42282801E340f1F17AAdf3166fEE99fb07c" -] - -async function Staking(...params) { - for (const contract of stakingContracts) { - return staking(contract, ALPA)(...params) - } - -} - -module.exports = { - ethereum: { - tvl: async => ({}), - staking: Staking, - pool2: staking(farmContract, WETH_ALPA2_UNIV2), - }, - bsc: { - staking: staking(stakingContractBSC, ALPA_BSC), - pool2: staking(farmContractsBSC, lpPairContractsBSC), - }, - methodology: - "Counts liquidity on the Farms through AlpacaFarm Contracts; and there are Staking and Pool2 parts only. We export the comunity amount as Treasury Part", -}; diff --git a/projects/alpacafinance-gmx/index.js b/projects/alpacafinance-gmx/index.js deleted file mode 100644 index 94cbf1351f6..00000000000 --- a/projects/alpacafinance-gmx/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { gmxExports } = require('../helper/gmx') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - bsc:{ - tvl: sumTokensExport({ - owner: '0x18A15bF2Aa1E514dc660Cc4B08d05f9f6f0FdC4e', - tokens: [ - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.ETH, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.WBNB, - ], - }) - } -}; diff --git a/projects/alpha-arcade/index.js b/projects/alpha-arcade/index.js deleted file mode 100644 index 3a9a2d83f59..00000000000 --- a/projects/alpha-arcade/index.js +++ /dev/null @@ -1,119 +0,0 @@ -const { getApplicationAddress } = require("../helper/chain/algorandUtils/address"); -const { lookupAccountByID, lookupApplicationsCreatedByAccount } = require("../helper/chain/algorand"); -const axios = require('axios'); -const { getCachedPrices } = require('../folks-xalgo/prices'); -const { lookupApplications } = require("../helper/chain/algorand"); - -const USDC_ASSET_ID = 31566704; // USDC asset ID on Algorand - - -async function getAlphaArcadeMarkets() { - const response = await axios.get("https://g08245wvl7.execute-api.us-east-1.amazonaws.com/api/get-markets"); - if (!response.data || !response.data.markets) { - throw new Error("Failed to fetch markets from Alpha Arcade API"); - } - return response.data.markets; -} - -async function getMarketTvl(marketAppId) { - let marketMatchedOrderTvl = 0; - let marketOpenOrderTvl = 0; - - try { - // Get USDC in escrow account for matched orders - const marketAppAddress = getApplicationAddress(marketAppId); - const addressData = await lookupAccountByID(marketAppAddress); - const assets = addressData.account.assets; - if (assets) { - for (const asset of assets) { - if (asset['asset-id'] === USDC_ASSET_ID) { - marketMatchedOrderTvl += asset.amount; - } - } - } - - // Get open orders created by the market app - const createdApplications = await lookupApplicationsCreatedByAccount(marketAppAddress); - for (const app of createdApplications.applications) { - const appAddress = getApplicationAddress(app.id); - const appData = await lookupAccountByID(appAddress); - const assets = appData.account.assets; - if (assets) { - for (const asset of assets) { - if (asset['asset-id'] === USDC_ASSET_ID) { - // Buy order - marketOpenOrderTvl += asset.amount; - } else if (asset['asset-id'] !== USDC_ASSET_ID && asset.amount > 0) { - // Sell order - const globalState = await lookupApplications(app.id); - const price = globalState.application.params['global-state'].find(item => { - const decodedKey = Buffer.from(item.key, 'base64').toString('utf-8'); - return decodedKey === 'price'; - }); - if (price) { - marketOpenOrderTvl += ((asset.amount / 1e6) * (price.value.uint / 1e6)) * 1e6; - } - } - } - } - } - } - catch (err) { - // No active escrow account for this market - return 0; - } - - return marketMatchedOrderTvl + marketOpenOrderTvl; -} - -/** - * Fetches the TVL in USDC held in escrow accounts across all markets on Alpha Arcade. - * This function retrieves the market data from the Alpha Arcade API, calculates the - * total value locked (TVL) by summing the USDC balances in both matched and open orders. - * - * @async - * @function getAlphaArcadeTvl - * @returns {Promise} The total TVL in USDC across all matched markets. - * @throws {Error} If the markets cannot be fetched from the Alpha Arcade API. - */ -async function getAlphaArcadeTvl() { - let tvlUSD = 0; - const markets = await getAlphaArcadeMarkets(); - - for (const market of markets) { - const marketAppId = market.marketAppId; - - if (market.options && market.options.length > 1) { - // Multi-option market: sum TVL for all options and include each option's TVL - for (const option of market.options) { - if (!option.marketAppId) continue; - const optionTvl = await getMarketTvl(option.marketAppId); - tvlUSD += optionTvl; - } - } else { - // Single market - const marketTvl = await getMarketTvl(marketAppId); - tvlUSD += marketTvl; - } - } - - return tvlUSD / 1e6; // Convert from microUSDC -} - - -module.exports = { - methodology: 'TVL represents the total value held in escrow across all markets for open and matched orders on Alpha Arcade.', - timetravel: false, - algorand: { - tvl: async () => { - const prices = await getCachedPrices(); - const algoPrice = prices['0'] * 1e6; // Algo Asset Id is 0 - - const tvlUSD = await getAlphaArcadeTvl(); // Total TVL in USDC from Alpha Arcade - - const tvlAlgo = tvlUSD / algoPrice; // Convert USDC to Algo using the price of Algo - - return { algorand: tvlAlgo }; - } - } -}; \ No newline at end of file diff --git a/projects/alpha-growth/index.js b/projects/alpha-growth/index.js deleted file mode 100644 index 541236da7b4..00000000000 --- a/projects/alpha-growth/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by AlphaGrowth.', - blockchains: { - unichain: { - eulerVaultOwners: [ - '0x8d9fF30f8ecBA197fE9492A0fD92310D75d352B9', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/alpha-homora/abi.json b/projects/alpha-homora/abi.json deleted file mode 100644 index 6a94a49225b..00000000000 --- a/projects/alpha-homora/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "glbDebtVal": "uint256:glbDebtVal", - "totalETH": "uint256:totalETH", - "reservePool": "uint256:reservePool", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "totalSupply": "uint256:totalSupply", - "pendingSushi": "function pendingSushi(uint256 _pid, address _user) view returns (uint256)", - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)", - "getETHPx": "function getETHPx(address token) view returns (uint256)", - "lpToken": "address:lpToken" -} \ No newline at end of file diff --git a/projects/alpha-homora/index.js b/projects/alpha-homora/index.js deleted file mode 100644 index b614e73bdea..00000000000 --- a/projects/alpha-homora/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const {tvlV1Eth, tvlV1Bsc} = require('./v1.js') -const {tvlV2, tvlV2Onchain} = require('./v2.js') - -async function ethTvl(api) { - await Promise.all([ - tvlV1Eth(api), - tvlV2(api), - ]) -} - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - ethereum:{ - tvl: ethTvl - }, - bsc:{ - tvl: tvlV1Bsc - }, - avax:{ - tvl: tvlV2Onchain - }, - fantom:{ - tvl: tvlV2Onchain - }, - optimism:{ - tvl: tvlV2Onchain - }, - start: '2020-10-07', // unix timestamp (utc 0) specifying when the project began, or where live data begins - hallmarks: [ - [1613178000, "37M exploit"], // Feb 13, 2021 - [1626220800, "Upgrade to V2 on ETH"], // July 14, 2021 00:00 UTC - ] -}; diff --git a/projects/alpha-homora/v1.js b/projects/alpha-homora/v1.js deleted file mode 100644 index 77aa2b78564..00000000000 --- a/projects/alpha-homora/v1.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const { getConfig } = require('../helper/cache'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -module.exports = { - tvlV1Eth, - tvlV1Bsc -} - -async function tvlV1Eth(api) { - return tvlV1(api, "https://homora.alphafinance.io/static/contracts.json") -} - -const wBNB = ADDRESSES.bsc.WBNB -async function tvlV1Bsc(api) { - await tvlV1(api, "https://homora-bsc.alphafinance.io/static/contracts.json") -} - -async function tvlV1(api, contractsUrl) { - const data = await getConfig('alpha-hormora/v1/' + api.chain, contractsUrl); - - const bankAddress = data.bankAddress - - let pools = data.pools.map(i => i.goblinAddress) - const tokens = await api.multiCall({ abi: 'address:lpToken', calls: pools }) - const shares = await api.multiCall({ abi: 'uint256:totalShare', calls: pools }) - const bals = await api.multiCall({ abi: 'function shareToBalance(uint256) view returns (uint256)', calls: shares.map((v, i) => ({ target: pools[i], params: v})) }) - api.add(tokens, bals) - const totalEthMethodName = api.chain === 'bsc' ? 'totalBNB' : 'totalETH'; - const totalETH = await api.call({ target: bankAddress, abi: 'uint256:' + totalEthMethodName, }); - const totalDebt = await api.call({ target: bankAddress, abi: abi.glbDebtVal, }); - api.addGasToken(totalETH - totalDebt); - return sumTokens2({ api, resolveLP: true}) -} \ No newline at end of file diff --git a/projects/alpha-homora/v1/bsc-contracts.json b/projects/alpha-homora/v1/bsc-contracts.json deleted file mode 100644 index 52de0e9b1e7..00000000000 --- a/projects/alpha-homora/v1/bsc-contracts.json +++ /dev/null @@ -1,367 +0,0 @@ -{ - "bankAddress": "0x3bb5f6285c312fc7e1877244103036ebbeda193d", - "WBNBAddress": "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", - "pools": [ - { - "exchange": "Pancake V1", - "name": "BNB/CAKE", - "id": 1, - "tokenAddress": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - "goblinAddress": "0xaa00f2b7dd0de46c6fc9655dbadd80ac91a66869", - "lpTokenAddress": "0xa527a61703d82139f8a06bc30097cc9caa2df5a6", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/cake.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/BUSD", - "id": 2, - "tokenAddress": "0xe9e7cea3dedca5984780bafc599bd69add087d56", - "goblinAddress": "0x08d871ddad70bd3aef3fecfbf4350debc57d8264", - "lpTokenAddress": "0x1b96b92314c44b159149f7e0303511fb2fc4774f", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/busd.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/BTCB", - "id": 15, - "tokenAddress": "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", - "goblinAddress": "0x549ef362657a3e3923793a494db3d89e3e5fda35", - "lpTokenAddress": "0x7561eee90e24f3b348e1087a005f78b4c8453524", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/btcb.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/ETH", - "id": 14, - "tokenAddress": "0x2170ed0880ac9a755fd29b2688956bd959f933f8", - "goblinAddress": "0x2f050b64ede3b1d21184435974bb1d2fe02012b6", - "lpTokenAddress": "0x70d8929d04b60af4fb9b58713ebcf18765ade422", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/eth.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/USDT", - "id": 17, - "tokenAddress": "0x55d398326f99059ff775485246999027b3197955", - "goblinAddress": "0x3974071481dad49ac94ca1756f311c872ec3e26e", - "lpTokenAddress": "0x20bcc3b8a0091ddac2d0bc30f68e6cbb97de59cd", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/usdt.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/UNI", - "id": 25, - "tokenAddress": "0xbf5140a22578168fd562dccf235e5d43a02ce9b1", - "goblinAddress": "0xfdcdf8d07db8c5b33fbf46f41eced421d9d32bee", - "lpTokenAddress": "0x4269e7f43a63cea1ad7707be565a94a9189967e9", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/uni.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/LINK", - "id": 7, - "tokenAddress": "0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd", - "goblinAddress": "0x047683a9a7958c02ca86b6eecea1f8acfbd54f4f", - "lpTokenAddress": "0xaebe45e3a03b734c68e5557ae04bfc76917b4686", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/link.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/BAND", - "id": 4, - "tokenAddress": "0xad6caeb32cd2c308980a548bd0bc5aa4306c6c18", - "goblinAddress": "0xc3c16508e77e99e67cfcd30b765e48a5a33d4c9d", - "lpTokenAddress": "0xc639187ef82271d8f517de6feae4faf5b517533c", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/band.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/YFI", - "id": 24, - "tokenAddress": "0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e", - "goblinAddress": "0x3663aedebb70dcf0a64e2600233d6913dd3ecf2b", - "lpTokenAddress": "0x68ff2ca47d27db5ac0b5c46587645835dd51d3c1", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/yfi.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/ALPHA", - "id": 16, - "tokenAddress": "0xa1faa113cbe53436df28ff0aee54275c13b40975", - "goblinAddress": "0xa0aa119e0324d864831c24b78e85927526e42d52", - "lpTokenAddress": "0x4e0f3385d932f7179dee045369286ffa6b03d887", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/alpha.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/INJ", - "id": 27, - "leverages": [1, 1.5, 2, 2.5], - "tokenAddress": "0xa2b726b1145a4773f68593cf171187d8ebe4d495", - "goblinAddress": "0x62e32e6ebeabf776b59f5dfb9b364779c3a64137", - "lpTokenAddress": "0x7a34bd64d18e44cfde3ef4b81b87baf3eb3315b6", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "logo": "/static/tokens/inj.png" - }, - { - "exchange": "Pancake V1", - "name": "BNB/DOT", - "id": 5, - "leverages": [1, 1.5, 2, 2.5], - "tokenAddress": "0x7083609fce4d1d8dc0c979aab8c869ea2c873402", - "goblinAddress": "0x567f4a45d45945a75898be4cad299a8f32c86d08", - "lpTokenAddress": "0xbcd62661a6b1ded703585d3af7d7649ef4dcdb5c", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "logo": "'/static/tokens/dot.png'" - }, - - { - "exchange": "Pancake V2", - "name": "BNB/CAKE", - "id": 251, - "tokenAddress": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - "goblinAddress": "0x5a71a15037de71d52d8b27b6a637b617b4fae261", - "lpTokenAddress": "0x0ed7e52944161450477ee417de9cd3a859b14fd0", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/cake.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/BUSD", - "id": 252, - "tokenAddress": "0xe9e7cea3dedca5984780bafc599bd69add087d56", - "goblinAddress": "0xa25ad83285e0d0989b1409b3755be7e30bb821d7", - "lpTokenAddress": "0x58f876857a02d6762e0101bb5c46a8c1ed44dc16", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/busd.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/BTCB", - "id": 262, - "tokenAddress": "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", - "goblinAddress": "0x44ae9dfaf7597c3665fb25ed31b5a32bab12ebc4", - "lpTokenAddress": "0x61eb789d75a95caa3ff50ed7e47b96c132fec082", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/btcb.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/ETH", - "id": 261, - "tokenAddress": "0x2170ed0880ac9a755fd29b2688956bd959f933f8", - "goblinAddress": "0x1601b34b8ae3378c7c2df675a37a7064164c74ca", - "lpTokenAddress": "0x74e4716e431f45807dcf19f284c7aa99f18a4fbc", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/eth.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/USDT", - "id": 264, - "tokenAddress": "0x55d398326f99059ff775485246999027b3197955", - "goblinAddress": "0x22bb68bd0b113ccf688e0759ac0b4abc013df824", - "lpTokenAddress": "0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/usdt.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/UNI", - "id": 268, - "tokenAddress": "0xbf5140a22578168fd562dccf235e5d43a02ce9b1", - "goblinAddress": "0xc07e4cc403b093bd94d80f30c78b63080a79cd10", - "lpTokenAddress": "0x014608e87af97a054c9a49f81e1473076d51d9a3", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/uni.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/LINK", - "id": 257, - "tokenAddress": "0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd", - "goblinAddress": "0x8252aa78372b59d53e1c001d98f400611e9d2a20", - "lpTokenAddress": "0x824eb9fadfb377394430d2744fa7c42916de3ece", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/link.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/BAND", - "id": 254, - "tokenAddress": "0xad6caeb32cd2c308980a548bd0bc5aa4306c6c18", - "goblinAddress": "0x7b4b9e3d52296416b7e0396593b5d885cdb27472", - "lpTokenAddress": "0x168b273278f3a8d302de5e879aa30690b7e6c28f", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/band.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/YFI", - "id": 267, - "tokenAddress": "0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e", - "goblinAddress": "0x7e52d9dbaf0366aaec36175d551b21762336ecdb", - "lpTokenAddress": "0xce383277847f8217392eea98c5a8b4a7d27811b0", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5, 3], - "logo": "/static/tokens/yfi.png", - "deprecated": true - }, - { - "exchange": "Pancake V2", - "name": "BNB/ALPHA", - "id": 263, - "tokenAddress": "0xa1faa113cbe53436df28ff0aee54275c13b40975", - "goblinAddress": "0x78cffa390b2355b14aacaf97571da3be817c84bf", - "lpTokenAddress": "0xacf47cbeaab5c8a6ee99263cfe43995f89fb3206", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/alpha.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/INJ", - "id": 270, - "leverages": [1, 1.5, 2, 2.5], - "tokenAddress": "0xa2b726b1145a4773f68593cf171187d8ebe4d495", - "goblinAddress": "0xc2dc871a7ded817d8a960d2f2ceae6edb377c73f", - "lpTokenAddress": "0x1bdcebca3b93af70b58c41272aea2231754b23ca", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "logo": "/static/tokens/inj.png" - }, - { - "exchange": "Pancake V2", - "name": "BNB/DOT", - "id": 255, - "leverages": [1, 1.5, 2, 2.5], - "tokenAddress": "0x7083609fce4d1d8dc0c979aab8c869ea2c873402", - "goblinAddress": "0xaef73ea3a6f3f302af20a154c68996790bbaa85e", - "lpTokenAddress": "0xdd5bad8f8b360d76d12fda230f8baf42fe0022cf", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "logo": "'/static/tokens/dot.png'" - }, - { - "tokenLogos": ["/static/tokens/bnb.png", "/static/tokens/xvs.png"], - "exchange": "Pancake V2", - "name": "BNB/XVS", - "id": 260, - "leverages": [1, 1.5, 2], - "tokenAddress": "0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63", - "goblinAddress": "0x8f543b602e0bf1cc652c10f50d0ad853185a5f26", - "lpTokenAddress": "0x7eb5d86fd78f3852a3e0e064f2842d45a3db6ea2", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "logo": "/static/tokens/xvs.png", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true - }, - { - "logo": "/static/tokens/front.png", - "exchange": "Pancake V2", - "name": "BNB/FRONT", - "id": 287, - "leverages": [1, 1.5, 2], - "tokenAddress": "0x928e55dab735aa8260af3cedada18b5f70c72f1b", - "goblinAddress": "0xcd168c28c17aef8d47b88ff0904ef5bf1c806000", - "lpTokenAddress": "0xc6b668548aa4a56792e8002a920d3159728121d5", - "lpStakingAddress": "0x73feaa1ee314f8c655e354234017be2193c9e24e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true - } - ], - "exchanges": { - "Pancake": { - "name": "Pancake V1", - "reward": { - "tokenName": "CAKE", - "rewardPerPoolPerYear": "0", - "rewardTokenAddress": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - "rewardBNBLpTokenAddress": "0xa527a61703d82139f8a06bc30097cc9caa2df5a6" - } - }, - "PancakeV2": { - "name": "Pancake V2", - "reward": { - "tokenName": "CAKE", - "rewardPerPoolPerYear": "0", - "rewardTokenAddress": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - "rewardBNBLpTokenAddress": "0x0ed7e52944161450477ee417de9cd3a859b14fd0" - } - } - } - } \ No newline at end of file diff --git a/projects/alpha-homora/v1/eth-contracts.json b/projects/alpha-homora/v1/eth-contracts.json deleted file mode 100644 index c91a46127e2..00000000000 --- a/projects/alpha-homora/v1/eth-contracts.json +++ /dev/null @@ -1,551 +0,0 @@ -{ - "bankAddress": "0x67b66c99d3eb37fa76aa3ed1ff33e8e39f0b9c7a", - "WETHAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "pools": [ - { - "exchange": "Uniswap", - "name": "WETH/WBTC", - "tokenAddress": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "goblinAddress": "0x41f07d87a28adec58dba1d063d540b86ccbb989f", - "lpTokenAddress": "0xBb2b8038a1640196FbE3e38816F3e67Cba72D940", - "lpStakingAddress": "0xCA35e32e7926b96A9988f61d510E038108d8068e", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/wbtc.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/USDC", - "tokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "goblinAddress": "0xb7bf6d2e6c4fa291d6073b51911bac17890e92ec", - "lpTokenAddress": "0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc", - "lpStakingAddress": "0x7FBa4B8Dc5E7616e59622806932DBea72537A56b", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/usdc.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/USDT", - "tokenAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "goblinAddress": "0x4668ff4d478c5459d6023c4a7efda853412fb999", - "lpTokenAddress": "0x0d4a11d5EEaaC28EC3F61d100daF4d40471f1852", - "lpStakingAddress": "0x6C3e4cb2E96B01F4b866965A91ed4437839A121a", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/usdt.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/DAI", - "tokenAddress": "0x6b175474e89094c44da98b954eedeac495271d0f", - "goblinAddress": "0x14804802592c0f6e2fd03e78ec3efc9b56f1963d", - "lpTokenAddress": "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11", - "lpStakingAddress": "0xa1484C3aa22a66C62b77E0AE78E15258bd0cB711", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/dai.png" - }, - { - "exchange": "IndexCoop", - "name": "WETH/DPI", - "tokenAddress": "0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b", - "goblinAddress": "0xdaa93955982d32451f90a1109ecec7fecb7ee4b3", - "lpTokenAddress": "0x4d5ef58aac27d99935e5b6b4a6778ff292059991", - "lpStakingAddress": "0x8f06fba4684b5e0988f215a47775bb611af0f986", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.25, 1.5, 1.75], - "logo": "/static/tokens/dpi.png" - }, - { - "exchange": "IndexCoop", - "name": "WETH/DPI", - "tokenAddress": "0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b", - "goblinAddress": "0x4d4ad9628f0c16bbd91cab3a39a8f15f11134300", - "lpTokenAddress": "0x4d5ef58aac27d99935e5b6b4a6778ff292059991", - "lpStakingAddress": "0xb93b505ed567982e2b6756177ddd23ab5745f309", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.25, 1.5, 1.75], - "logo": "/static/tokens/dpi.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/YFI", - "tokenAddress": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", - "goblinAddress": "0x66e970f2602367f8ae46ccee79f6139737eaff1c", - "lpTokenAddress": "0x2fDbAdf3C4D5A8666Bc06645B8358ab803996E28", - "lpStakingAddress": "0xb0942ab3bd38fe3128f09a613de80cd70a90c94d", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.25, 1.5, 1.75], - "logo": "/static/tokens/yfi.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/UNI", - "tokenAddress": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", - "goblinAddress": "0xfbc0d22bf0ecc735a03fd08fc20b48109cb89543", - "lpTokenAddress": "0xd3d2e2692501a5c9ca623199d38826e513033a17", - "lpStakingAddress": "0x98a39b20a6907acd7e7710ae80b696c54d4b2dfd", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2], - "logo": "/static/tokens/uni.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/LINK", - "tokenAddress": "0x514910771af9ca656af840dff83e8264ecf986ca", - "goblinAddress": "0xf285e8adf8b871a32c305ab20594cbb251341535", - "lpTokenAddress": "0xa2107fa5b38d9bbd2c461d6edf11b11a50f6b974", - "lpStakingAddress": "0xfd97f5bc8ee51fa655f53a21005d0f5653b971c0", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2], - "logo": "/static/tokens/uni.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/AAVE", - "tokenAddress": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "goblinAddress": "0xe900e07ce6bcdd3c5696bfc67201e940e316c1f1", - "lpTokenAddress": "0xdfc14d2af169b0d36c4eff567ada9b2e0cae044f", - "lpStakingAddress": "0x36a5e6139199b8220f3733a2ad29c8059b1834b1", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2], - "logo": "/static/tokens/aave.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/MKR", - "tokenAddress": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", - "goblinAddress": "0xee781f10ce14a45f1d8c2487aeaf24d0366fb9fa", - "lpTokenAddress": "0xc2adda861f89bbb333c90c492cb837741916a225", - "lpStakingAddress": "0xa86e0b83831e9e235016ba710bebe754d1602457", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2], - "logo": "/static/tokens/mkr.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/renBTC", - "tokenAddress": "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d", - "goblinAddress": "0x09b4608a0ca9ae8002465eb48cd2f916edf5bf63", - "lpTokenAddress": "0x81fbef4704776cc5bba0a5df3a90056d2c6900b3", - "lpStakingAddress": "0x697349dfdda56936c716a243524810506c2898b7", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/renBTC.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/REN", - "tokenAddress": "0x408e41876cccdc0f92210600ef50372656052a38", - "goblinAddress": "0x9d00b5eeedeea5141e82b101e645352a2ea960ba", - "lpTokenAddress": "0x8bd1661da98ebdd3bd080f0be4e6d9be8ce9858c", - "lpStakingAddress": "0x593d49c82feadc0f5a756a4a4d673573ea0baba4", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.25, 1.5, 1.75], - "logo": "/static/tokens/ren.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/SNX", - "tokenAddress": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - "goblinAddress": "0x0ec3de9941479526bb3f530c23aaff84148d17a7", - "lpTokenAddress": "0x43ae24960e5534731fc831386c07755a2dc33d47", - "lpStakingAddress": "0x201687712c2a0c4669518d838cbbedcea77f98ef", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.25, 1.5, 1.75], - "logo": "/static/tokens/snx.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/KP3R", - "tokenAddress": "0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44", - "goblinAddress": "0xcbb95b7708b1b543ecb82b2d58db1711f88d265c", - "lpTokenAddress": "0x87febfb3ac5791034fd5ef1a615e9d9627c2665d", - "lpStakingAddress": "0x7599a3c5a4eaba41863126df4b14b8b20606fffc", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1], - "logo": "/static/tokens/kp3r.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/SFI", - "tokenAddress": "0xb753428af26e81097e7fd17f40c88aaa3e04902c", - "goblinAddress": "0x6cc2c08e413638ceb38e3db964a114f139fff81e", - "lpTokenAddress": "0xc76225124f3caab07f609b1d147a31de43926cd6", - "lpStakingAddress": "0xe932326d463d56ca40b4aaa3572a1052b544f908", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1], - "logo": "/static/tokens/sfi.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/PERP", - "tokenAddress": "0xbc396689893d065f41bc2c6ecbee5e0085233447", - "goblinAddress": "0x766614adcff1137f8fced7f0804d184ce659826a", - "lpTokenAddress": "0xf66369997ae562bc9eec2ab9541581252f9ca383", - "lpStakingAddress": "0xcd912be8943fd58bede3859a56048f2a8475b865", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1], - "logo": "/static/tokens/perp.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/COMP", - "tokenAddress": "0xc00e94cb662c3520282e6f5717214004a7f26888", - "goblinAddress": "0xcc11e2cf6755953eed483ba2b3c433647d0f18dc", - "lpTokenAddress": "0xcffdded873554f362ac02f8fb1f02e5ada10516f", - "lpStakingAddress": "0x373d22e4fcd14d06d03a89e048f8870f15fb1fd0", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.25, 1.5, 1.75], - "logo": "/static/tokens/comp.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/CRV", - "tokenAddress": "0xd533a949740bb3306d119cc777fa900ba034cd52", - "goblinAddress": "0x18712bcb987785d6679134abc7cddee669ec35ca", - "lpTokenAddress": "0x3da1313ae46132a397d90d95b1424a9a7e3e0fce", - "lpStakingAddress": "0x4803e45218016ad186ed7edb5d289527f177beaa", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1, 1.25, 1.5, 1.75], - "logo": "/static/tokens/crv.png" - }, - { - "exchange": "Uniswap", - "name": "WETH/OCEAN", - "tokenAddress": "0x967da4048cd07ab37855c090aaf366e4ce1b9f48", - "goblinAddress": "0xee8f4e4b13c610bfa2c65d968ba1d5263d640ce6", - "lpTokenAddress": "0x9b7dad79fc16106b47a3dab791f389c167e15eb0", - "lpStakingAddress": "0x59aaa3466794cb40183ac96d2762ff74fd773a3f", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1], - "logo": "/static/tokens/ocean.png" - }, - { - "exchange": "Sushi", - "name": "WETH/SUSHI", - "id": 12, - "tokenAddress": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "goblinAddress": "0x3c2bbb353b48d54b619db8ac6aa642627fb800e3", - "lpTokenAddress": "0x795065dcc9f64b5614c407a6efdc400da6221fb0", - "lpStakingAddress": "0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1, 1.5, 2], - "logo": "/static/tokens/sushi.png" - }, - { - "exchange": "Pickle", - "name": "WETH/PICKLE", - "id": 0, - "tokenAddress": "0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5", - "goblinAddress": "0xa8854bd26ee44ad3c78792d68564b96ad0a45245", - "lpTokenAddress": "0xdc98556Ce24f007A5eF6dC1CE96322d65832A819", - "lpStakingAddress": "0xbD17B1ce622d73bD438b9E658acA5996dc394b0d", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1], - "logo": "/static/tokens/pickle.png" - }, - { - "exchange": "mStable", - "name": "WETH/MTA", - "tokenAddress": "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2", - "goblinAddress": "0x4ec23befb01b9903d58c4bea096d65927e9462cc", - "lpTokenAddress": "0x0d0d65e7a7db277d3e0f5e1676325e75f3340455", - "lpStakingAddress": "0x9b4aba35b35eee7481775ccb4055ce4e176c9a6f", - "hasTradingFeeAPY": true, - "hasFarmingAPY": true, - "leverages": [1], - "logo": "/static/tokens/mta.png" - }, - { - "exchange": "Sushi", - "name": "WETH/USDT", - "id": 0, - "tokenAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "goblinAddress": "0xd902A3BEdEbaD8bEAD116E8596497cf7d9f45dA2", - "lpTokenAddress": "0x06da0fd433c1a5d7a4faa01111c044910a184553", - "lpStakingAddress": "0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd", - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/usdt.png" - }, - { - "exchange": "Sushi", - "name": "WETH/USDC", - "id": 1, - "tokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "goblinAddress": "0xf134fDD0BBCE951e963D5BC5b0ffe445C9B6c5C6", - "lpTokenAddress": "0x397ff1542f962076d0bfe58ea045ffa2d347aca0", - "lpStakingAddress": "0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd", - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/usdc.png" - }, - { - "exchange": "Sushi", - "name": "WETH/DAI", - "id": 2, - "tokenAddress": "0x6b175474e89094c44da98b954eedeac495271d0f", - "goblinAddress": "0xd6419FD982a7651A12a757Ca7cD96b969D180330", - "lpTokenAddress": "0xc3d03e4f041fd4cd388c549ee2a29a9e5075882f", - "lpStakingAddress": "0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd", - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/dai.png" - }, - { - "exchange": "Sushi", - "name": "WETH/WBTC", - "id": 21, - "tokenAddress": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "goblinAddress": "0x54a2C35D689F4314FA70DD018eA0a84C74506925", - "lpTokenAddress": "0xceff51756c56ceffca006cd410b03ffc46dd3a58", - "lpStakingAddress": "0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd", - "leverages": [1, 1.5, 2, 2.5], - "logo": "/static/tokens/wbtc.png" - }, - { - "exchange": "Sushi", - "name": "ETH/BAND", - "id": 9, - "tokenAddress": "0xba11d00c5f74255f56a5e366f4f77f5a186d7f55", - "goblinAddress": "0xa7120893283cc2aba8155d6b9887bf228a8a86d2", - "lpTokenAddress": "0xa75f7c2f025f470355515482bde9efa8153536a8", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "leverages": [1, 1.25, 1.5, 1.75], - "logo": "/static/tokens/band.png" - }, - { - "exchange": "Sushi", - "name": "ETH/LINK", - "id": 8, - "tokenAddress": "0x514910771af9ca656af840dff83e8264ecf986ca", - "goblinAddress": "0xcfbd9eeac76798571ed96ed60ca34df35f29ea8d", - "lpTokenAddress": "0xc40d16476380e4037e6b1a2594caf6a6cc8da967", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "leverages": [1, 1.25, 1.75, 2], - "logo": "/static/tokens/link.png" - }, - { - "exchange": "Sushi", - "name": "ETH/AAVE", - "id": 37, - "tokenAddress": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "goblinAddress": "0xbb4755673e9df77f1af82f448d2b09f241752c05", - "lpTokenAddress": "0xd75ea151a61d06868e31f8988d28dfe5e9df57b4", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "leverages": [1, 1.25, 1.75, 2], - "logo": "/static/tokens/aave.png" - }, - { - "exchange": "Sushi", - "name": "ETH/COMP", - "id": 4, - "tokenAddress": "0xc00e94cb662c3520282e6f5717214004a7f26888", - "goblinAddress": "0x35952c82e146da5251f2f822d7b679f34ffa71d3", - "lpTokenAddress": "0x31503dcb60119a812fee820bb7042752019f2355", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "leverages": [1, 1.25, 1.75, 2], - "logo": "/static/tokens/comp.png" - }, - { - "exchange": "Sushi", - "name": "ETH/SNX", - "id": 6, - "leverages": [1, 1.25, 1.5, 1.75], - "tokenAddress": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - "goblinAddress": "0x8c5cecc9abd8503d167e6a7f2862874b6193e6e4", - "lpTokenAddress": "0xa1d7b2d891e3a1f9ef4bbc5be20630c2feb1c470", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "logo": "/static/tokens/snx.png" - }, - { - "exchange": "Sushi", - "name": "ETH/SUSD", - "id": 3, - "leverages": [1, 1.5, 2, 2.5], - "tokenAddress": "0x57ab1ec28d129707052df4df418d58a2d46d5f51", - "goblinAddress": "0x69fe7813f804a11e2fd279eba5dc1ecf6d6bf73b", - "lpTokenAddress": "0xf1f85b2c54a2bd284b1cf4141d64fd171bd85539", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "logo": "/static/tokens/susd.png" - }, - { - "exchange": "Sushi", - "name": "ETH/UMA", - "id": 7, - "leverages": [1, 1.5, 1.75], - "tokenAddress": "0x04fa0d235c4abf4bcf4787af4cf447de572ef828", - "goblinAddress": "0x8fc4c0566606aa0c715989928c12ce254f8e1228", - "lpTokenAddress": "0x001b6450083e531a5a7bf310bd2c1af4247e23d4", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "logo": "/static/tokens/uma.jpg" - }, - { - "exchange": "Sushi", - "name": "ETH/YAM", - "id": 44, - "leverages": [1], - "tokenAddress": "0x0aacfbec6a24756c20d41914f2caba817c0d8521", - "goblinAddress": "0x9d9c28f39696ce0ebc42ababd875977060e7afa1", - "lpTokenAddress": "0x0f82e57804d0b1f6fab2370a43dcfad3c7cb239c", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "logo": "/static/tokens/yam.png" - }, - { - "exchange": "Sushi", - "name": "ETH/CRV", - "id": 17, - "leverages": [1, 1.5, 1.75], - "tokenAddress": "0xd533a949740bb3306d119cc777fa900ba034cd52", - "goblinAddress": "0x5c767dbf81ec894b2d70f2aa9e45a54692d0d7eb", - "lpTokenAddress": "0x58dc5a51fe44589beb22e8ce67720b5bc5378009", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "logo": "/static/tokens/crv.png" - }, - { - "exchange": "Sushi", - "name": "ETH/REN", - "id": 13, - "leverages": [1, 1.5, 1.75], - "tokenAddress": "0x408e41876cccdc0f92210600ef50372656052a38", - "goblinAddress": "0x37ef9c13faa609d5eee21f84e4c6c7bf62e4002e", - "lpTokenAddress": "0x611cde65dea90918c0078ac0400a72b0d25b9bb1", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "logo": "/static/tokens/ren.png" - }, - { - "exchange": "Sushi", - "name": "ETH/YFI", - "id": 11, - "leverages": [1, 1.5, 1.75], - "tokenAddress": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", - "goblinAddress": "0x6d0eb60d814a21e2bed483c71879777c9217aa28", - "lpTokenAddress": "0x088ee5007c98a9677165d78dd2109ae4a3d04d0c", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd", - "logo": "/static/tokens/yfi.png" - }, - { - "logo": "/static/tokens/grt.png", - "exchange": "Uniswap", - "name": "ETH/GRT", - "leverages": [1], - "tokenAddress": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", - "goblinAddress": "0xbd95cfef698d4d582e66110475ec7e4e21120e4a", - "lpTokenAddress": "0x2e81ec0b8b4022fac83a21b2f2b4b8f5ed744d70", - "lpStakingAddress": "0x003756fc5e1908fba1af693cba81bd8885b44888" - }, - { - "logo": "/static/tokens/kp3r.png", - "exchange": "Sushi", - "name": "ETH/KP3R", - "id": 58, - "leverages": [1], - "tokenAddress": "0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44", - "goblinAddress": "0x795d3655d0d7ecbf26dd33b1a7676017bb0ee611", - "lpTokenAddress": "0xaf988aff99d3d0cb870812c325c588d8d8cb7de8", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd" - }, - { - "exchange": "Sushi", - "name": "ETH/BOR", - "id": 70, - "leverages": [1], - "tokenAddress": "0x3c9d6c1c73b31c837832c72e04d3152f051fc1a9", - "goblinAddress": "0x6a279df44b5717e89b51645e287c734bd3086c1f", - "lpTokenAddress": "0x44d34985826578e5ba24ec78c93be968549bb918", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd" - }, - { - "logo": "/static/tokens/obtc.png", - "exchange": "Sushi", - "name": "ETH/oBTC", - "id": 81, - "leverages": [1], - "tokenAddress": "0x8064d9ae6cdf087b1bcd5bdf3531bd5d8c537a68", - "goblinAddress": "0x1001ec1b6fc2438e8be6ffa338d3380237c0399a", - "lpTokenAddress": "0x53e9fb796b2feb4b3184afdf601c2a2797548d88", - "lpStakingAddress": "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd" - } - ], - "alphaPools": [ - { - "exchange": "Uniswap", - "name": "ibETH/ALPHA", - "tokenAddress": "0xa1faa113cbe53436df28ff0aee54275c13b40975", - "goblinAddress": "ALPHA_POOL", - "lpTokenAddress": "0x411a9b902f364817a0f9c4261ce28b5566a42875", - "hasTradingFeeAPY": true, - "hasFarmingAPY": false, - "leverages": [1], - "logo": "/static/tokens/ibeth.png" - } - ], - "exchanges": { - "Uniswap": { - "name": "Uniswap", - "reward": { - "tokenName": "UNI", - "rewardPerPoolPerYear": "3.0416545e25", - "rewardTokenAddress": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", - "rewardEthLpTokenAddress": "0xd3d2E2692501A5c9Ca623199D38826e513033a17" - } - }, - "IndexCoop": { - "name": "IndexCoop", - "reward": { - "tokenName": "INDEX", - "rewardPerPoolPerYear": "9.125e23", - "rewardTokenAddress": "0x0954906da0bf32d5479e25f46056d22f08464cab", - "rewardEthLpTokenAddress": "0x3452a7f30a712e415a0674c0341d44ee9d9786f9" - } - }, - "Sushi": { - "name": "Sushi", - "reward": { - "tokenName": "SUSHI", - "rewardPerPoolPerYear": "0", - "rewardTokenAddress": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "rewardEthLpTokenAddress": "0x795065dCc9f64b5614C407a6EFDC400DA6221FB0" - } - }, - "Pickle": { - "name": "Pickle", - "reward": { - "tokenName": "PICKLE", - "rewardPerPoolPerYear": "0", - "rewardTokenAddress": "0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5", - "rewardEthLpTokenAddress": "0xdc98556Ce24f007A5eF6dC1CE96322d65832A819" - } - }, - "mStable": { - "name": "mStable", - "reward": { - "tokenName": "MTA", - "rewardPerPoolPerYear": "1.2e24", - "rewardTokenAddress": "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2", - "rewardEthLpTokenAddress": "0x0d0d65e7a7db277d3e0f5e1676325e75f3340455" - } - } - } - } \ No newline at end of file diff --git a/projects/alpha-homora/v2.js b/projects/alpha-homora/v2.js deleted file mode 100644 index 293e35739dd..00000000000 --- a/projects/alpha-homora/v2.js +++ /dev/null @@ -1,174 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const BigNumber = require("bignumber.js"); -const { request, } = require("graphql-request"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - - -const chainParams = { - optimism: { - safeBoxApi: "https://api.homora.alphaventuredao.io/v2/10/safeboxes", - latestAlphaHomoraV2GraphUrl: sdk.graph.modifyEndpoint('B3g98fbbStVKtff6QUY6iMUqp7rxqrdDyGdrXAmcWG6B'), - poolsJsonUrl: "https://api.homora.alphaventuredao.io/v2/10/pools", - instances: [] - }, - avax: { - safeBoxApi: "https://homora-api.alphafinance.io/v2/43114/safeboxes", - latestAlphaHomoraV2GraphUrl: sdk.graph.modifyEndpoint('8zVTsZBmd8CU7vnmonPr7qex4A69yM7NSzxKCpGHw6Q6'), - poolsJsonUrl: "https://homora-api.alphafinance.io/v2/43114/pools", - instances: [ - { - wMasterChefAddress: "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - wLiquidityGauge: "0xf1f32c8eeb06046d3cc3157b8f9f72b09d84ee5b", // wrong - poolsJsonUrl: "https://homora-api.alphafinance.io/v2/43114/pools", - graphUrl: sdk.graph.modifyEndpoint('8zVTsZBmd8CU7vnmonPr7qex4A69yM7NSzxKCpGHw6Q6'), - }, - ] - }, - fantom: { - safeBoxApi: "https://homora-api.alphafinance.io/v2/250/safeboxes", - latestAlphaHomoraV2GraphUrl: sdk.graph.modifyEndpoint('H4Q15YbQxRWw14HaABfWiTptSwRzanXNwyACY8MCRqVS'), - poolsJsonUrl: "https://homora-api.alphafinance.io/v2/250/pools", - instances: [ - { - wMasterChefAddress: "0x5FC20fCD1B50c5e1196ac790DADCfcDD416bb0C7", - wLiquidityGauge: "0xf1f32c8eeb06046d3cc3157b8f9f72b09d84ee5b", // wrong - poolsJsonUrl: "https://homora-api.alphafinance.io/v2/43114/pools", - graphUrl: sdk.graph.modifyEndpoint('H4Q15YbQxRWw14HaABfWiTptSwRzanXNwyACY8MCRqVS'), - }, - ] - }, - ethereum: { - safeBoxApi: "https://homora-api.alphafinance.io/v2/1/safeboxes", - coreOracleAddress: "0x6be987c6d72e25f02f6f061f94417d83a6aa13fc", - latestAlphaHomoraV2GraphUrl: sdk.graph.modifyEndpoint('CnfAARjTUna6ZVo7RjJvQmm44e7uWx6kbaRm4Xh5MR5N'), - instances: [ - { - // Current - werc20Address: "0x06799a1e4792001aa9114f0012b9650ca28059a3", - wMasterChefAddress: "0xa2caea05ff7b98f10ad5ddc837f15905f33feb60", - wLiquidityGauge: "0xf1f32c8eeb06046d3cc3157b8f9f72b09d84ee5b", - wStakingRewardIndex: "0x011535fd795fd28c749363e080662d62fbb456a7", - wStakingRewardPerp: "0xc4635854480fff80f742645da0310e9e59795c63", - poolsJsonUrl: "https://homora-api.alphafinance.io/v2/1/pools", - graphUrl: sdk.graph.modifyEndpoint('37CbUUxwQC7uTqQquQXtQQF8b2bU7L3VBrkEntiHxf4r'), - }, - { - // Legacy - werc20Address: "0xe28d9df7718b0b5ba69e01073fe82254a9ed2f98", - wMasterChefAddress: "0x373ae78a14577682591e088f2e78ef1417612c68", - wLiquidityGauge: "0xfdb4f97953150e47c8606758c13e70b5a789a7ec", - wStakingRewardIndex: "0x713df2ddda9c7d7bda98a9f8fcd82c06c50fbd90", - wStakingRewardPerp: "0xc4635854480fff80f742645da0310e9e59795c63", - poolsJsonUrl: - "local", - graphUrl: sdk.graph.modifyEndpoint('CnfAARjTUna6ZVo7RjJvQmm44e7uWx6kbaRm4Xh5MR5N'), - } - ] - } -} - -const GET_TOTAL_COLLATERALS = ` - query GET_TOTAL_COLLATERALS{ - werc20Collaterals { - lpToken - amount - } - sushiswapCollaterals{ - pid - amount - } - crvCollaterals { - pid - gid - amount - } - wstakingRewardCollaterals { - wtoken - amount - } - } -`; - -module.exports = { - tvlV2, - tvlV2Onchain -} - -async function getPools(poolsJsonUrl, chain) { - return poolsJsonUrl === "local" ? require('./v2/legacy-pools.json') : (await getConfig('alpha-hormora/v2-pools/' + chain, poolsJsonUrl)) -} - -async function tvlV2Onchain(api) { - const chain = api.chain - const { safeBoxApi, poolsJsonUrl, } = chainParams[chain]; - let safebox = await getConfig('alpha-hormora/v2-safebox/' + chain, safeBoxApi); - const ownerTokens = safebox.map(s => [[s.cyTokenAddress], s.safeboxAddress]) - await sumTokens2({ api, ownerTokens }) - let pools = await getPools(poolsJsonUrl, chain); - const owners = pools.filter(i => i.wTokenType === 'WUniswapV3').map(i => i.wTokenAddress).filter(i => i) - pools = pools.filter(i => i.wTokenType !== 'WUniswapV3') - let poolsWithPid = pools.filter(p => p.pid !== undefined) - let poolsWithoutPid = pools.filter(p => p.pid === undefined) - const masterchefLpTokens = await api.multiCall({ - calls: poolsWithPid.map((pool) => ({ - target: pool.exchange.stakingAddress ?? pool.stakingAddress, - params: [pool.pid, pool.wTokenAddress], - })), - abi: abi["userInfo"], - }); - masterchefLpTokens.map((amount, i) => api.add(poolsWithPid[i].lpTokenAddress, amount.amount)) - const stakingPoolsLpTokens = await api.multiCall({ - calls: poolsWithoutPid.map((pool) => ({ target: pool.stakingAddress, params: [pool.wTokenAddress], })), - abi: "erc20:balanceOf", - }); - stakingPoolsLpTokens.forEach((amount, i) => api.add(poolsWithoutPid[i].lpTokenAddress, amount)) - const blacklisted = ['0xf3a602d30dcb723a74a0198313a7551feaca7dac', '0x2a8a315e82f85d1f0658c5d66a452bbdd9356783', '0x75E5509029c85fE08e4934B1275c5575aA5538bE'] - blacklisted.forEach(i => api.removeTokenBalance(i)) - await sumTokens2({ api, owners, resolveUniV3: api.chain === 'optimism', resolveLP: api.chain !== 'optimism', }) -} - -async function tvlV2(api) { - const chain = api.chain - const { safeBoxApi, instances } = chainParams[chain]; - await getCyTokens(api, safeBoxApi); - await Promise.all(instances.map(params => getTotalCollateral(params, api))) -} - -async function getCyTokens(api, safeBoxApi) { - const safebox = await getConfig('alpha-hormora/v2-safebox/' + api.chain, safeBoxApi); - const ownerTokens = safebox.map(s => [[s.cyTokenAddress, s.address], s.safeboxAddress]) - return api.sumTokens({ ownerTokens, }) -} - - -async function getTotalCollateral({ wMasterChefAddress, wLiquidityGauge, poolsJsonUrl, graphUrl, }, api) { - const chain = api.chain - const pools = await getPools(poolsJsonUrl, chain); - - const { crvCollaterals, sushiswapCollaterals, werc20Collaterals, wstakingRewardCollaterals, } = await request(graphUrl, GET_TOTAL_COLLATERALS, { block: undefined }); - - crvCollaterals.map((coll) => { - const pool = pools.find((pool) => pool.wTokenAddress === wLiquidityGauge && Number(coll.pid) === pool.pid && Number(coll.gid) === pool.gid); - if (!pool || !pool.lpTokenAddress) - return; - api.add(pool.lpTokenAddress, coll.amount); - }) - - sushiswapCollaterals.map((coll) => { - const pool = pools.find((pool) => pool.wTokenAddress === wMasterChefAddress && Number(coll.pid) === pool.pid); - if (!pool || !pool.lpTokenAddress) - return; - api.add(pool.lpTokenAddress, coll.amount); - }) - - werc20Collaterals.map((coll) => api.add("0x" + BigNumber(coll.lpToken).toString(16).padStart(40, "0").toLowerCase(), coll.amount)) - - wstakingRewardCollaterals.map((coll) => { - const pool = pools.find((pool) => pool.wTokenAddress === coll.wtoken); - if (!pool || !pool.lpTokenAddress) - return; - api.add(pool.lpTokenAddress, coll.amount); - }) -} diff --git a/projects/alpha-homora/v2/avax-pools.json b/projects/alpha-homora/v2/avax-pools.json deleted file mode 100644 index 2a5140a93f2..00000000000 --- a/projects/alpha-homora/v2/avax-pools.json +++ /dev/null @@ -1,286 +0,0 @@ -[ - { - "exchange": { - "name": "Trader Joe", - "spellAddress": "0xdbc2aa11aa01baa22892de745c661db9f204b2cd", - "stakingAddress": "0xd6a4f121ca35509af06a0be99093d08462f53052", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "JOE", - "rewardTokenAddress": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - } - }, - "name": "AVAX/USDT.e", - "tokens": [ - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ], - "lpTokenAddress": "0xed8cbd9f0ce3c6986b22002f03c6475ceb7a6256", - "type": "Yield Farming", - "color": "#4d9979", - "wTokenAddress": "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - "wTokenType": "WMasterChef", - "pid": 28, - "key": "wchef-0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb-28" - }, - { - "exchange": { - "name": "Trader Joe", - "spellAddress": "0xdbc2aa11aa01baa22892de745c661db9f204b2cd", - "stakingAddress": "0xd6a4f121ca35509af06a0be99093d08462f53052", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "JOE", - "rewardTokenAddress": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - } - }, - "name": "USDC.e/AVAX", - "tokens": [ - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" - ], - "lpTokenAddress": "0xa389f9430876455c36478deea9769b7ca4e3ddb1", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - "wTokenType": "WMasterChef", - "pid": 39, - "key": "wchef-0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb-39" - }, - { - "exchange": { - "name": "Trader Joe", - "spellAddress": "0xdbc2aa11aa01baa22892de745c661db9f204b2cd", - "stakingAddress": "0xd6a4f121ca35509af06a0be99093d08462f53052", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "JOE", - "rewardTokenAddress": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - } - }, - "name": "WETH.e/AVAX", - "tokens": [ - "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" - ], - "lpTokenAddress": "0xfe15c2695f1f920da45c30aae47d11de51007af9", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - "wTokenType": "WMasterChef", - "pid": 26, - "key": "wchef-0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb-26" - }, - { - "exchange": { - "name": "Trader Joe", - "spellAddress": "0xdbc2aa11aa01baa22892de745c661db9f204b2cd", - "stakingAddress": "0xd6a4f121ca35509af06a0be99093d08462f53052", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "JOE", - "rewardTokenAddress": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - } - }, - "name": "AVAX/DAI.e", - "tokens": [ - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "0xd586e7f844cea2f87f50152665bcbc2c279d8d70" - ], - "lpTokenAddress": "0x87dee1cc9ffd464b79e058ba20387c1984aed86a", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - "wTokenType": "WMasterChef", - "pid": 37, - "key": "wchef-0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb-37" - }, - { - "exchange": { - "name": "Trader Joe", - "spellAddress": "0xdbc2aa11aa01baa22892de745c661db9f204b2cd", - "stakingAddress": "0xd6a4f121ca35509af06a0be99093d08462f53052", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "JOE", - "rewardTokenAddress": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - } - }, - "name": "USDC.e/USDT.e", - "tokens": [ - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ], - "lpTokenAddress": "0x2e02539203256c83c7a9f6fa6f8608a32a2b1ca2", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - "wTokenType": "WMasterChef", - "pid": 49, - "key": "wchef-0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb-49" - }, - { - "exchange": { - "name": "Trader Joe", - "spellAddress": "0xdbc2aa11aa01baa22892de745c661db9f204b2cd", - "stakingAddress": "0xd6a4f121ca35509af06a0be99093d08462f53052", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "JOE", - "rewardTokenAddress": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - } - }, - "name": "WBTC.e/AVAX", - "tokens": [ - "0x50b7545627a5162f82a992c33b87adc75187b218", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" - ], - "lpTokenAddress": "0xd5a37dc5c9a396a03dd1136fc76a1a02b1c88ffa", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - "wTokenType": "WMasterChef", - "pid": 27, - "key": "wchef-0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb-27" - }, - { - "exchange": { - "name": "Trader Joe", - "spellAddress": "0xdbc2aa11aa01baa22892de745c661db9f204b2cd", - "stakingAddress": "0xd6a4f121ca35509af06a0be99093d08462f53052", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "JOE", - "rewardTokenAddress": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - } - }, - "name": "USDC.e/DAI.e", - "tokens": [ - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xd586e7f844cea2f87f50152665bcbc2c279d8d70" - ], - "lpTokenAddress": "0x63abe32d0ee76c05a11838722a63e012008416e6", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - "wTokenType": "WMasterChef", - "pid": 40, - "key": "wchef-0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb-40" - }, - { - "exchange": { - "name": "Trader Joe", - "spellAddress": "0xdbc2aa11aa01baa22892de745c661db9f204b2cd", - "stakingAddress": "0xd6a4f121ca35509af06a0be99093d08462f53052", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "JOE", - "rewardTokenAddress": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - } - }, - "name": "USDT.e/DAI.e", - "tokens": [ - "0xc7198437980c041c805a1edcba50c1ce5db95118", - "0xd586e7f844cea2f87f50152665bcbc2c279d8d70" - ], - "lpTokenAddress": "0xa6908c7e3be8f4cd2eb704b5cb73583ebf56ee62", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb", - "wTokenType": "WMasterChef", - "pid": 31, - "key": "wchef-0xb41de9c1f50697cc3fd63f24ede2b40f6269cbcb-31" - }, - { - "exchange": { - "name": "Pangolin", - "spellAddress": "0x7723993c1baa141f5decfc8bf5dbad47aaddec86", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "PNG", - "rewardTokenAddress": "0x60781c2586d68229fde47564546784ab3faca982" - } - }, - "name": "AVAX/USDT.e", - "tokens": [ - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ], - "lpTokenAddress": "0xe28984e1ee8d431346d32bec9ec800efb643eef4", - "type": "Yield Farming", - "color": "#4d9979", - "wTokenAddress": "0x0b8f60be035cc5b1982ed2145c6bfc05f863ddc1", - "wTokenType": "WStakingRewards", - "stakingAddress": "0x006cc053bdb84c2d6380b3c4a573d84636378a47", - "key": "wstaking-0x0b8f60be035cc5b1982ed2145c6bfc05f863ddc1" - }, - { - "exchange": { - "name": "Pangolin", - "spellAddress": "0x7723993c1baa141f5decfc8bf5dbad47aaddec86", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "PNG", - "rewardTokenAddress": "0x60781c2586d68229fde47564546784ab3faca982" - } - }, - "name": "USDC.e/AVAX", - "tokens": [ - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" - ], - "lpTokenAddress": "0xbd918ed441767fe7924e99f6a0e0b568ac1970d9", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xc681cad10f227ef506a352b3dc5ff6c676b8636f", - "wTokenType": "WStakingRewards", - "stakingAddress": "0x84b536da1a2d9b0609f9da73139674cc2d75af2d", - "key": "wstaking-0xc681cad10f227ef506a352b3dc5ff6c676b8636f" - }, - { - "exchange": { - "name": "Pangolin", - "spellAddress": "0x7723993c1baa141f5decfc8bf5dbad47aaddec86", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "PNG", - "rewardTokenAddress": "0x60781c2586d68229fde47564546784ab3faca982" - } - }, - "name": "WETH.e/AVAX", - "tokens": [ - "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" - ], - "lpTokenAddress": "0x7c05d54fc5cb6e4ad87c6f5db3b807c94bb89c52", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0xfcd7ebc3a42d65fe77988171999cfbb7c4a85523", - "wTokenType": "WStakingRewards", - "stakingAddress": "0x830a966b9b447c9b15ab24c0369c4018e75f31c9", - "key": "wstaking-0xfcd7ebc3a42d65fe77988171999cfbb7c4a85523" - }, - { - "exchange": { - "name": "Pangolin", - "spellAddress": "0x7723993c1baa141f5decfc8bf5dbad47aaddec86", - "logo": "/static/tokens/uni.png", - "reward": { - "tokenName": "PNG", - "rewardTokenAddress": "0x60781c2586d68229fde47564546784ab3faca982" - } - }, - "name": "AVAX/DAI.e", - "tokens": [ - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "0xd586e7f844cea2f87f50152665bcbc2c279d8d70" - ], - "lpTokenAddress": "0xba09679ab223c6bdaf44d45ba2d7279959289ab0", - "type": "Yield Farming", - "color": "#3a71be", - "wTokenAddress": "0x7f7c811c889108c89f539a21d150b5d5fc616545", - "wTokenType": "WStakingRewards", - "stakingAddress": "0x63a84f66b8c90841cb930f2dc3d28799f0c6657b", - "key": "wstaking-0x7f7c811c889108c89f539a21d150b5d5fc616545" - } -] \ No newline at end of file diff --git a/projects/alpha-homora/v2/avax-safeboxes.json b/projects/alpha-homora/v2/avax-safeboxes.json deleted file mode 100644 index af1b48fb6c7..00000000000 --- a/projects/alpha-homora/v2/avax-safeboxes.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "address": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "safeboxAddress": "0x21c630b7824d15bcdfeefa73cbd4e49cafe9f836", - "cyTokenAddress": "0xb3c68d69e95b095ab4b33b4cb67dbc0fbf3edf56" - }, - { - "address": "0xc7198437980c041c805a1edcba50c1ce5db95118", - "safeboxAddress": "0x858d6353a52c25c53df1869230282d22b41f5790", - "cyTokenAddress": "0xceb1ce674f38398432d20bc8f90345e91ef46fd3" - }, - { - "address": "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "safeboxAddress": "0xd3843b60e69f958ef93bec299467e6ed301cbeeb", - "cyTokenAddress": "0xe28965073c49a02923882b8329d3e8c1d805e832" - }, - { - "address": "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", - "safeboxAddress": "0xf9eb24b83b51fbc0bcb1204221c8c9f1cef33994", - "cyTokenAddress": "0x338eee1f7b89ce6272f302bdc4b952c13b221f1d" - }, - { - "address": "0xd586e7f844cea2f87f50152665bcbc2c279d8d70", - "safeboxAddress": "0x69491fd9a6d9e32f32113cc076b1b69d8b9ebd3f", - "cyTokenAddress": "0x085682716f61a72bf8c573fbaf88cca68c60e99b" - }, - { - "address": "0x50b7545627a5162f82a992c33b87adc75187b218", - "safeboxAddress": "0x1de90c0ce3d940412c3ba7322a257f7bdcc00ceb", - "cyTokenAddress": "0xb09b75916c5f4097c8b5812e63e216fef97661fc" - } -] \ No newline at end of file diff --git a/projects/alpha-homora/v2/legacy-pools.json b/projects/alpha-homora/v2/legacy-pools.json deleted file mode 100644 index 8a0a014d51f..00000000000 --- a/projects/alpha-homora/v2/legacy-pools.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "exchange": "Uniswap", - "name": "UNI/ETH", - "tokens": [ - "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" - ], - "lpTokenAddress": "0xd3d2e2692501a5c9ca623199d38826e513033a17", - "type": "Liquidity Providing", - "color": "#f9eaf4", - "wTokenAddress": "0xe28d9df7718b0b5ba69e01073fe82254a9ed2f98" - }, - { - "exchange": "Sushiswap", - "name": "SUSHI/ETH", - "tokens": [ - "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" - ], - "lpTokenAddress": "0x795065dcc9f64b5614c407a6efdc400da6221fb0", - "type": "Yield Farming", - "color": "#e75aa5", - "wTokenAddress": "0x373ae78a14577682591e088f2e78ef1417612c68", - "pid": 12, - "rewardSymbol": "SUSHI", - "rewardAddress": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" - }, - { - "key": "wstaking-0xc4635854480fff80f742645da0310e9e59795c63", - "exchange": "Balancer", - "name": "PERP/USDC (80-20)", - "tokens": [ - "0xbc396689893d065f41bc2c6ecbee5e0085233447", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" - ], - "lpTokenAddress": "0xf54025af2dc86809be1153c1f20d77adb7e8ecf4", - "type": "Yield Farming", - "color": "#195D72", - "wTokenAddress": "0xc4635854480fff80f742645da0310e9e59795c63", - "rewardSymbol": "PERP", - "rewardAddress": "0xbc396689893d065f41bc2c6ecbee5e0085233447", - "isPoolAvailableV1": false, - "isFarmingDisabled": true - }, - { - "exchange": "Curve", - "name": "3pool", - "logo": "/static/tokens/3crv.png", - "tokens": [ - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xdac17f958d2ee523a2206206994597c13d831ec7" - ], - "lpTokenAddress": "0x6c3f90f043a72fa612cbac8115ee7e52bde6e490", - "poolAddress": "0xbebc44782c7db0a1a60cb6fe97d0b483032ff1c7", - "type": "Yield Farming", - "color": "#cd5d7d", - "wTokenAddress": "0xfdb4f97953150e47c8606758c13e70b5a789a7ec", - "pid": 0, - "gid": 0, - "curveGaugeAddress": "0xbfcf63294ad7105dea65aa58f8ae5be2d9d0952a", - "curveGaugeControllerAddress": "0x2f50d538606fa9edd2b11e2446beb18c9d5846bb", - "curveRawStatsApiUrl": "https://stats.curve.fi/raw-stats/3pool-1440m.json", - "isPoolAvailableV1": false - } - ] \ No newline at end of file diff --git a/projects/alphaX-protocol/index.js b/projects/alphaX-protocol/index.js deleted file mode 100644 index 8eac5b407bd..00000000000 --- a/projects/alphaX-protocol/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const walletAddresses = { - ethereum: ['0xA61a6E696B7C566DA42B80dA27d96e7104bcec99'], - arbitrum: ['0x552E7A55802f3350C707a243E402aa50Eda9D286'] -} - -const tokenAddress = { - ethereum: [ADDRESSES.ethereum.USDT], - arbitrum: [ADDRESSES.arbitrum.USDT], -} - -Object.keys(walletAddresses).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ owners: walletAddresses[chain], tokens: tokenAddress[chain], }) - } -}) \ No newline at end of file diff --git a/projects/alphadex.js b/projects/alphadex.js deleted file mode 100644 index 0c7ba0b6c84..00000000000 --- a/projects/alphadex.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require("./helper/unknownTokens"); -module.exports = { - methodology: `Uses factory(0xdD9EFCbDf9f422e2fc159eFe77aDD3730d48056d) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - misrepresentedTokens: true, - moonriver: { - tvl: getUniTVL({ - factory: "0xdD9EFCbDf9f422e2fc159eFe77aDD3730d48056d", - useDefaultCoreAssets: true, - }), - }, - kava: { - tvl: getUniTVL({ - factory: "0x7e666D934F7525dF840d0CfFEaa3d6Bf3b3253a3", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/alphafi-stsui/index.js b/projects/alphafi-stsui/index.js deleted file mode 100644 index 945514b6a7c..00000000000 --- a/projects/alphafi-stsui/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const sui = require('../helper/chain/sui') - -async function tvl() { - const pool = await sui.getObject('0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5'); - const suiAmount = pool.fields.storage.fields.total_sui_supply / 10 ** 9 - return { - sui: suiAmount, - } -} - -module.exports = { - methodology: "Calculates the amount of SUI staked in stSui liquid staking contracts.", - sui: { - tvl, - } -} diff --git a/projects/alphafi/index.js b/projects/alphafi/index.js deleted file mode 100644 index 0ddb474c9a5..00000000000 --- a/projects/alphafi/index.js +++ /dev/null @@ -1,640 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui") -const { addUniV3LikePosition } = require("../helper/unwrapLPs") -const { log } = require('../helper/utils') - -const ALPHAFI_CETUS_TVL_IDS = [ - { -//usdt wusdc - poolID: "0x30066d9879374276dc01177fbd239a9377b497bcd347c82811d75fcda35b18e5", - parentPoolID: "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20", - investorID: "0x87a76889bf4ed211276b16eb482bf6df8d4e27749ebecd13017d19a63f75a6d5", - token0Type: ADDRESSES.sui.USDT, - token1Type: ADDRESSES.sui.USDC - }, - { //usdy wusdc - poolID: "0xa7239a0c727c40ee3a139689b16b281acfd0682a06c23531b184a61721ece437", - parentPoolID: "0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d", - investorID: "0x1b923520f19660d4eb013242c6d03c84fdea034b8f784cfd71173ef72ece50e1", - token0Type: ADDRESSES.sui.USDY, - token1Type: ADDRESSES.sui.USDC - }, - { //wusdc sui - poolID: "0xee6f6392cbd9e1997f6e4cf71db0c1ae1611f1f5f7f23f90ad2c64b8f23cceab", - parentPoolID: "0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630", - investorID: "0xb6ca8aba0fb26ed264a3ae3d9c1461ac7c96cdcbeabb01e71086e9a8340b9c55", - token0Type: ADDRESSES.sui.USDC, - token1Type: ADDRESSES.sui.SUI - }, - { - //wusdc wbtc - poolID: "0x676fc5cad79f51f6a7d03bfa3474ecd3c695d322380fc68e3d4f61819da3bf8a", - parentPoolID: "0xaa57c66ba6ee8f2219376659f727f2b13d49ead66435aa99f57bb008a64a8042", - investorID: "0x9ae0e56aa0ebc27f9d8a17b5a9118d368ba262118d878977b6194a10a671bbbc", - token0Type: ADDRESSES.sui.USDC, - token1Type: ADDRESSES.sui.WBTC - }, - { - // weth wusdc - poolID: "0xbdf4f673b34274f36be284bca3f765083380fefb29141f971db289294bf679c6", - parentPoolID: "0x5b0b24c27ccf6d0e98f3a8704d2e577de83fa574d3a9060eb8945eeb82b3e2df", - investorID: "0x05fa099d1df7b5bfb2e420d5ee2d63508db17c40ce7c4e0ca0305cd5df974e43", - token0Type: ADDRESSES.sui.WETH, - token1Type: ADDRESSES.sui.USDC - }, - { //navx sui - poolID: "0x045e4e3ccd383bedeb8fda54c39a7a1b1a6ed6a9f66aec4998984373558f96a0", - parentPoolID: "0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703", - investorID: "0xdd9018247d579bd7adfdbced4ed39c28821c6019461d37dbdf32f0d409959b1c", - token0Type: "0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX", - token1Type: ADDRESSES.sui.SUI - }, - { - // buck wusdc - poolID: "0x59ff9c5df31bfd0a59ac8393cf6f8db1373252e845958953e6199952d194dae4", - parentPoolID: "0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5", - investorID: "0x8051a9ce43f9c21e58331b1ba2b1925e4ae4c001b1400459236d86d5d3d2888b", - token0Type: ADDRESSES.sui.BUCK, - token1Type: ADDRESSES.sui.USDC - }, - {//wsol wusdc - poolID: "0xd50ec46c2514bc8c588760aa7ef1446dcd37993bc8a3f9e93563af5f31b43ffd", - parentPoolID: "0x9ddb0d269d1049caf7c872846cc6d9152618d1d3ce994fae84c1c051ee23b179", - investorID: "0x74308f0de7ea1fc4aae2046940522f8f79a6a76db94e1227075f1c2343689882", - token0Type: ADDRESSES.sui.SOL, - token1Type: ADDRESSES.sui.USDC - }, - { - //sca sui - poolID: "0x6eec371c24ad264ced3a1f40b83d7d720aa2b0afa860a6af85436f6a769842e1", - parentPoolID: "0xaa72bd551b25715b8f9d72f226fa02526bdf2e085a86faec7184230c5209bb6e", - investorID: "0x651acc1166023a08c17f24e71550982400e9b1f4950cc1324410300efc1af905", - token0Type: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA", - token1Type: ADDRESSES.sui.SUI - }, - // usdc sui - { - poolID: "0x727882553d1ab69b0cabad2984331e7e39445f91cb4046bf7113c36980685528", - parentPoolID: "0xb8d7d9e66a60c239e7a60110efcf8de6c705580ed924d0dde141f4a0e2c90105", - investorID: "0xba6acd0350eab1c6bc433b6c869e5592fe0667ae96a3115f89d5c79dd78396ef", - token0Type: ADDRESSES.sui.USDC_CIRCLE, - token1Type: ADDRESSES.sui.SUI - }, - // usdc usdt - { - poolID: "0xa213f04c6049f842a7ffe7d39e0c6138a863dc6e25416df950d23ddb27d75661", - parentPoolID: "0x6bd72983b0b5a77774af8c77567bb593b418ae3cd750a5926814fcd236409aaa", - investorID: "0xe553be450b7290025d5810da45102abdbaa211c5735e47f6740b4dd880edc0bd", - token0Type: ADDRESSES.sui.USDC_CIRCLE, - token1Type: ADDRESSES.sui.USDT - }, - // usdc wusdc - { - poolID: "0x568a47adf2b10219f0973a5600096822b38b4a460c699431afb6dad385614d66", - parentPoolID: "0x1efc96c99c9d91ac0f54f0ca78d2d9a6ba11377d29354c0a192c86f0495ddec7", - investorID: "0x6cc5e671a2a6e9b8c8635ff1fb16ae62abd7834558c3a632d97f393c0f022972", - token0Type: ADDRESSES.sui.USDC_CIRCLE, - token1Type: ADDRESSES.sui.USDC - }, - // usdc eth - { - poolID: "0xc04f71f32a65ddf9ebf6fb69f39261457da28918bfda5d3760013f3ea782a594", - parentPoolID: "0x9e59de50d9e5979fc03ac5bcacdb581c823dbd27d63a036131e17b391f2fac88", - investorID: "0xb0bff60783536f9dc0b38e43150a73b73b8a4f1969446f7721e187821915bd00", - token0Type: ADDRESSES.sui.USDC_CIRCLE, - token1Type: ADDRESSES.sui.ETH - }, - // deep sui - { - poolID: "0xff496f73a1f9bf7461882fbdad0c6c6c73d301d3137932f7fce2428244359eaa", - parentPoolID: "0xe01243f37f712ef87e556afb9b1d03d0fae13f96d324ec912daffc339dfdcbd2", - investorID: "0x5e195363175e4b5139749d901ddd5ef1ffc751777a7051b558c45fa12f24abc3", - token0Type: ADDRESSES.sui.DEEP, - token1Type: ADDRESSES.sui.SUI - }, - // buck sui - { - poolID: "0xeb44ecef39cc7873de0c418311557c6b8a60a0af4f1fe1fecece85d5fbe02ab5", - parentPoolID: "0x59cf0d333464ad29443d92bfd2ddfd1f794c5830141a5ee4a815d1ef3395bf6c", - investorID: "0x9b7c9b6086d3baf413bccdfbb6f60f04dedd5f5387dee531eef5b811afdfaedc", - token0Type: ADDRESSES.sui.BUCK, - token1Type: ADDRESSES.sui.SUI - }, - // fud sui - { - poolID: "0x005a2ebeb982a1e569a54795bce1eeb4d88900b674440f8487c2846da1706182", - parentPoolID: "0xfc6a11998f1acf1dd55acb58acd7716564049cfd5fd95e754b0b4fe9444f4c9d", - investorID: "0xaa17ff01024678a94381fee24d0021a96d4f3a11855b0745facbb5d2eb9df730", - token0Type: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD", - token1Type: ADDRESSES.sui.SUI - }, - // usdc suiusdt - { - poolID: "0x59ec4223043e2bbbcd519bf161088b81946193b0580d6ce94b48e9cb659c6efa", - parentPoolID: "0x7df346f8ef98ad20869ff6d2fc7c43c00403a524987509091b39ce61dde00957", - investorID: "0x6285c57b0d86cbe585abfe5b23d74f96243f450381ef4d57604164e76a76f4c8", - token0Type: ADDRESSES.sui.USDC_CIRCLE, - token1Type: ADDRESSES.sui.suiUSDT - }, -] - -const ALPHAFI_BLUEFIN_TVL_IDS = [ - { //sui usdc - poolID: "0x99b9bd1d07690a658b9723509278b83715f7c4bec2bc5983316c002b597dfabd", - parentPoolID: "0x3b585786b13af1d8ea067ab37101b6513a05d2f90cfe60e8b1d9e1b46a63c4fa", - investorID: "0x863909d3ced121e06053dec3fd2cb08ecda4c54607ad1b3f4fc8c75267c8012c", - token0Type: ADDRESSES.sui.SUI, - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //usdt usdc - poolID: "0x8d9220587b2969429c517e76b3695f01cb3749849d69937c4140a6715bf14c7f", - parentPoolID: "0x0321b68a0fca8c990710d26986ba433d06b351deba9384017cd6175f20466a8f", - investorID: "0x114bf16bd3504d6f491e35152d54f5340d66d7c6abaca7689b9081cd3af0cd93", - token0Type: ADDRESSES.sui.USDT, - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //sui BUCK - poolID: "0x58c4a8c5d18c61156e1a5a82811fbf71963a4de3f5d52292504646611a308888", - parentPoolID: "0xe63329f43a9474d421be85ff270bafc04667b811d215d4d4ee2512bcf2713896", - investorID: "0xc04ef6923ae5cf047cf853d2fa809ab56dbe712ca95f87c5f3c12dcfe66f7ecd", - token0Type: ADDRESSES.sui.SUI, - token1Type: ADDRESSES.sui.BUCK - }, - { //AUSD usdc - poolID: "0x8ed765497eeedf7960af787c0c419cb2c01c471ab47682a0619e8588c06a9aa6", - parentPoolID: "0x881639630836b703aa3e04898f8a3740584859838d986619d0ee0f63a784c078", - investorID: "0x1f9f325dfb23a3516679cd7bda58c26791b2a34c40ce5e1cd88ee6f8361a0ea6", - token0Type: "0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD", - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //sui ausd - poolID: "0x89793208211927a4d1458a59d34b775aaec17af8c98a59a1ba97f7b005c0e587", - parentPoolID: "0xb30df44907da6e9f3c531563f19e6f4a203d70f26f8a33ad57881cd7781e592d", - investorID: "0x275e4df83f6f7b9dc75504d02e5d32f21ca03a5a8b017c622a8b42d3671e2888", - token0Type: ADDRESSES.sui.SUI, - token1Type: "0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD" - }, - { //wbtc usdc - poolID: "0xbc0de037958d7988710c40f4e7317f8f3ffca4fa3cc9e1c18bc1ebd7ec65cd6e", - parentPoolID: "0x38282481e3a024c50254c31ebfc4710e003fe1b219c0aa31482a860bd58c4ab0", - investorID: "0x9d14a391953d5b853fb22c4135657da341f4db3b341dd4d5f603cfb008e91745", - token0Type: ADDRESSES.sui.WBTC, - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //navx vsui - poolID: "0xf495b997ae10b8bb0996c1ee56a1cc7832daec36a9380e0932e41256d97cabad", - parentPoolID: "0xa0b4fef70ccef039b94512d6384806979d4c201c5e12af9a4b0458454b80da35", - investorID: "0x3672719d64416d0f04575b500e853d9101dfca6488f705856c59ace1999e99d1", - token0Type: "0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX", - token1Type: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT" - }, - { //blue sui - poolID: "0xddecab961380225c95e6a6089660de2e6028170fbc2cd07ab79b8bf45e3c2645", - parentPoolID: "0xde705d4f3ded922b729d9b923be08e1391dd4caeff8496326123934d0fb1c312", - investorID: "0x56f05fc7b81cf45b8b223de9daba1ba82bf4ce32ba0bfa46c2780d78216b2b92", - token0Type: "0xe1b45a0e641b9955a20aa0ad1c1f4ad86aad8afb07296d4085e349a50e90bdca::blue::BLUE", - token1Type: ADDRESSES.sui.SUI - }, - { //blue usdc - poolID: "0x4b28663453af487a81d4fb2ba7c96cccd63978b83f950d3dcf60dd88116e3e91", - parentPoolID: "0x3717c637003c4274f20cde8c4eeadbffa2bbf16d995a0fe0f7bf99c03cf52e61", - investorID: "0xb1a991064c4cbf1d7fb64a01ce8b2e3aa2f7d25b3ff8de7cabc1cb9ccc0fc12f", - token0Type: "0xe1b45a0e641b9955a20aa0ad1c1f4ad86aad8afb07296d4085e349a50e90bdca::blue::BLUE", - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //send usdc - poolID: "0xd5757d9f00db3f21a0fa38a86a5c1d52ae44828cc59f1798550e2ccf260b2a34", - parentPoolID: "0xbd5b29a952040ccd47ce2822bddd4aba3affaae9d6ccdaf65aded5528e39b837", - investorID: "0xa57b9da796a2848853de7478ec64db63213cb409bfdf182c8b20c7a64896cbcc", - token0Type: "0xb45fcfcc2cc07ce0702cc2d229621e046c906ef14d9b25e8e4d25f6e8763fef7::send::SEND", - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //wbtc sui - poolID: "0x31cc72ec8a332d5e0ecd65c8d5d778333e1c8432a8826a88a8c51eb4e7dc6fac", - parentPoolID: "0xe71aa89df60e737f1b687f8dfbd51e2a9b35706e9e5540ce9b053bd53fcb9ec3", - investorID: "0x68d23ee66a167e39513747a75dd4af3fd2b5728a4653566bf3e813f684cf748b", - token0Type: ADDRESSES.sui.WBTC, - token1Type: ADDRESSES.sui.SUI - }, - { //deep sui - poolID: "0x46de57bfaa096c674492c3892caa261cf34cc46a2e539ece91f0db3e46e3f6c3", - parentPoolID: "0x1b06371d74082856a1be71760cf49f6a377d050eb57afd017f203e89b09c89a2", - investorID: "0x92454fe9c315328efb29607c30f6fb7b5ec55c0a8d9944285075386e381bbca0", - token0Type: ADDRESSES.sui.DEEP, - token1Type: ADDRESSES.sui.SUI - }, - { //stsui sui - poolID: "0xf5e643282e76af102aada38c67aae7eaec1ba2fe3301871f9fcca482893f96f2", - parentPoolID: "0x73549e0918d10727e324ebeed11ab81ab46f8fadb11078a0641f117d9097b725", - investorID: "0xe348b843a54463afe5438fa76df127b2b78bc89caa9018ba70b3c2ba043f6a1e", - token0Type: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - token1Type: ADDRESSES.sui.SUI - }, - { // stsui usdc - poolID: "0x95f0543f861584f1a3c3129c46901d5c5cc1d44e77eb57aab63eec55cd128f29", - parentPoolID: "0x151d6959cb2a6d1a5b6cfec6d1eae690af0318e46e5fb3ec45dd4e3b67eebeda", - investorID: "0x65e4af88e543e41c410f969801d53e40acb23da7be811e4c61d05a7d7d235b3b", - token0Type: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { // alpha stsui - poolID: "0xd601c2d1f451a1493e8d071482272a83e6dafbcdb82b249ca5b3ac909c4138f3", - parentPoolID: "0xd4051b5dc76ca354e48813268aa79de38b274878ef6a9d274066ae5a47f46cc6", - investorID: "0x959f6df092073b23c0ad0278a9cf070b6779f2edc9b7124108207b4d7b4e94ca", - token0Type: "0xfe3afec26c59e874f3c1d60b8203cb3852d2bb2aa415df9548b8d688e6683f93::alpha::ALPHA", - token1Type: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI" - }, - { // suiusdt usdc - poolID: "0x5b975bf7d0f0e3784a5b2db8f0a3e0b45cdcc31b39a222e680716a6ad7eba67f", - parentPoolID: "0x0bd95d012d60190a6713ae51f2d833b24ae70c5fb07fcfb41db40f25549878b1", - investorID: "0x23c073d557e4512f1811bd7c767047de13de14c59bb9607373613531250910b7", - token0Type: ADDRESSES.sui.suiUSDT, - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { // stsui buck - poolID: "0xdee56209e25c0eafdd3e06ee9f4aae03d173478d158fb4c5c1fbae7c75d4cd72", - parentPoolID: "0x0bc35f5b7e7b77dadc62c2630e9efafb1beb4122fd5393bf3b99586abf3ca8b1", - investorID: "0xb5633adb8cfb5a4e6580002b21bc403d5d096dbca07495986b4882619ce05279", - token0Type: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - token1Type: ADDRESSES.sui.BUCK - }, - { // stsui musd - poolID: "0xb251e187a4e688dd3dbbf378e4aacfdd41de6a81e2a4bc10c7b80e056c1da630", - parentPoolID: "0x0da4bcb1669ae3b6ce80f024e3a2076e2c4e2cc899d4724fce94da0f729bc968", - investorID: "0xa8a705f8819e01396927c1ec179a140750597ed3b5268d205bbf5240979fda86", - token0Type: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - token1Type: "0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD" - }, - { // wBTC-USDC - poolID: "0x4043b9e628d0cc6c2e3f322e6a7bddf603a3bcc084992355b55f4c23516bb6ba", - parentPoolID: "0xf0e4772e80800550368973d1f8ab2c9a7241ace8df8770452ee2bf3e3e67b8a1", - investorID: "0x6876c4b19075ee774ca368a4a782c9425cca97251093dafa7ff239a846b3ee30", - token0Type: "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC", - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //stsui sui - poolID: "0x0b45d1e5889b524dc1a472f59651cdedb8e0a2678e745f27975a9b57c127acdd", - parentPoolID: "0x73549e0918d10727e324ebeed11ab81ab46f8fadb11078a0641f117d9097b725", - investorID: "0xaec347c096dd7e816febd8397be4cca3aabc094a9a2a1f23d7e895564f859dc2", - token0Type: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - token1Type: ADDRESSES.sui.SUI - }, - { //suibtc usdc - poolID: "0x4043b9e628d0cc6c2e3f322e6a7bddf603a3bcc084992355b55f4c23516bb6ba", - parentPoolID: "0xf0e4772e80800550368973d1f8ab2c9a7241ace8df8770452ee2bf3e3e67b8a1", - investorID: "0x6876c4b19075ee774ca368a4a782c9425cca97251093dafa7ff239a846b3ee30", - token0Type: "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC", - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //lbtc suibtc - poolID: "0xd30d849bbddd0c1bc0e2eb552c2dacdf4ae998cc03cd485640eb3db7f456e295", - parentPoolID: "0x7df346f8ef98ad20869ff6d2fc7c43c00403a524987509091b39ce61dde00957", - investorID: "0x43523544dd4e7900ac6aeb8299e1aebd5d72bf7fae97f1a3b988c31e08b1bacc", - token0Type: "0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040::lbtc::LBTC", - token1Type: "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC" - }, - { //wal usdc - poolID: "0x2781cca45bd57e1205b46dd439baf5233a0f02c4016e0a6b0d1f84036f47d109", - parentPoolID: "0xbcc6909d2e85c06cf9cbfe5b292da36f5bfa0f314806474bbf6a0bf9744d37ce", - investorID: "0x386445d435618922939a998c59593558d576821b5adceb1279b72731fbefaa38", - token0Type: "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL", - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //wal stsui - poolID: "0x20f27f4b4e8de8e11aef5c59a4facc8367a92b24bd8302448bd97efbbaf9fec5", - parentPoolID: "0xee0d89310b7216a8ef86cd2af0dd22382f4be2049cd073603b7099d9846ab4ca", - investorID: "0xe171b8b8270e0e311362d55a0e21d387be6d549af8559f0d6ce3c4dfbb95deb7", - token0Type: "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL", - token1Type: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI" - }, -] -const ALPHAFI_BLUEFIN_AUTOBALANCE_TVL_IDS = [ - { //sui usdc - poolID: "0x1ec0aacf500624de90dd21478da12fca4726b3837e78993aee1c82f631e8364d", - parentPoolID: "0x3b585786b13af1d8ea067ab37101b6513a05d2f90cfe60e8b1d9e1b46a63c4fa", - investorID: "0xcf2a8bfaafd4b50f068826e3e4217925b4280836d8f182e3481c3725269c2a1f", - token0Type: ADDRESSES.sui.SUI, - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //usdt usdc - poolID: "0x65a167f16da65732fc71ec5b8714e5beb293e931d54820f1fea188bbcf09383d", - parentPoolID: "0x0321b68a0fca8c990710d26986ba433d06b351deba9384017cd6175f20466a8f", - investorID: "0x685c0569675bb46b838941568f1123c03eeef374dc4160c7d9b3abbc3b93f25c", - token0Type: ADDRESSES.sui.USDT, - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //suiUsdt Usdc - poolID: "0x8b68333ff71fa008bb2c8bc26d5989fba51cec27393172bb6bbfdbd360489542", - parentPoolID: "0x0bd95d012d60190a6713ae51f2d833b24ae70c5fb07fcfb41db40f25549878b1", - investorID: "0x07506ea66cb73fa60dbea5177c974ca6c98d7cd8ee2fae631af6e79f139f99ec", - token0Type: ADDRESSES.sui.suiUSDT, - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //deep sui - poolID: "0x76fb78985fae4cf24bcd933ea5e8a6e818e9d4b51c091c4c4a78b6720199e81e", - parentPoolID: "0x1b06371d74082856a1be71760cf49f6a377d050eb57afd017f203e89b09c89a2", - investorID: "0x217a85380d0cf4b4c5a870b8f6d11b8e3bc66de87e86d0376080ca7e60e6506c", - token0Type: ADDRESSES.sui.DEEP, - token1Type: ADDRESSES.sui.SUI - }, - { //blue sui - poolID: "0xb8cf0bf8b39f465c1b845e5ee8c2c53424c3faf97fb8e0ef1139abb9001e844a", - parentPoolID: "0xde705d4f3ded922b729d9b923be08e1391dd4caeff8496326123934d0fb1c312", - investorID: "0xf7785cf8b3d3f9bee48bf4d90a142d7ec98b25d6784408ffedc11633d7124197", - token0Type: "0xe1b45a0e641b9955a20aa0ad1c1f4ad86aad8afb07296d4085e349a50e90bdca::blue::BLUE", - token1Type: ADDRESSES.sui.SUI - }, - { //deep blue - poolID: "0x37671a77fb00a3323304f2586d18694bb93a6bc840e8184634ebe66d69eb48db", - parentPoolID: "0x4b8271fc4819078e44ee9a0506a824b77464789d57ace355d0562a4776c51840", - investorID: "0x90364be9cca6c1df042f269fb944fd49ba1c74688789fe33329aa6d40ac8552a", - token0Type: ADDRESSES.sui.DEEP, - token1Type: "0xe1b45a0e641b9955a20aa0ad1c1f4ad86aad8afb07296d4085e349a50e90bdca::blue::BLUE" - }, - { //sui lbtc - poolID: "0xafc0dc5166233af565e30e24755c401ff8958a28a8fdfdbbf407236b67725695", - parentPoolID: "0xa0153768c7ed857ffd8bad4708da873fb7825a6878e5f4c83f5df4c091933e56", - investorID: "0x7a8fc71060975c6e16083c723f376eaf41aab466d0a773c06a68f8f07040998a", - token0Type: ADDRESSES.sui.SUI, - token1Type: "0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040::lbtc::LBTC" - }, - { //wal usdc - poolID: "0x82938703e493c5759c4fa1218d7b7f82fd0356714dfc32eae457479f1f71c225", - parentPoolID: "0xbcc6909d2e85c06cf9cbfe5b292da36f5bfa0f314806474bbf6a0bf9744d37ce", - investorID: "0xab8585241f83c4e9cfe4d3b36af4b640a0c309b2b60be2c07b2246c32e5d8b4e", - token0Type: "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL", - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, - { //suiusdt usdc (0.001) - poolID: "0xce921f354d7eb15f356b274c55834f9098290f08e1e7f1f49f056a2eecb02cf6", - parentPoolID: "0x62af128423465822e5a0979ccad2b0b5ee50a58c6a2c8ea3dd7fda1cda3cfbe7", - investorID: "0xd26173539584dbce0020a9eb69dc1bf6cfe7b7be8a55e94b2db4e0261d9a5e1d", - token0Type: ADDRESSES.sui.suiUSDT, - token1Type: ADDRESSES.sui.USDC_CIRCLE - }, -] -const ALPHAFI_NAVI_TVL_IDS = [ - { - poolID: "0x643f84e0a33b19e2b511be46232610c6eb38e772931f582f019b8bbfb893ddb3", - tokenType: ADDRESSES.sui.SUI, - expo: 9 - }, - { - poolID: "0x0d9598006d37077b4935400f6525d7f1070784e2d6f04765d76ae0a4880f7d0a", - tokenType: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT", - expo: 9 - }, - { - poolID: "0xc696ca5b8f21a1f8fcd62cff16bbe5a396a4bed6f67909cfec8269eb16e60757", - tokenType: ADDRESSES.sui.USDT, - expo: 6, - }, - { - poolID: "0x01493446093dfcdcfc6c16dc31ffe40ba9ac2e99a3f6c16a0d285bff861944ae", - tokenType: ADDRESSES.sui.USDC, - expo: 6 - }, - { - poolID: "0xe4eef7d4d8cafa3ef90ea486ff7d1eec347718375e63f1f778005ae646439aad", - tokenType: ADDRESSES.sui.WETH, - expo: 8 - }, - { - poolID: "0x04378cf67d21b41399dc0b6653a5f73f8d3a03cc7643463e47e8d378f8b0bdfa", - tokenType: ADDRESSES.sui.USDC_CIRCLE, - expo: 6 - }, - { - poolID: "0xea3c2a2d29144bf8f22e412ca5e2954c5d3021d3259ff276e3b62424a624ad1f", - tokenType: ADDRESSES.sui.USDY, - expo: 6 - }, - { - poolID: "0x8ebe04b51e8a272d4db107ad19cfbc184d1dafeeaab0b61c26e613b804e7777a", - tokenType: "0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD", - expo: 6 - }, - { - poolID: "0xc37ec956fdef6c217505e62444ab93f833c20923755d67d1c8588c9b093ae00e", - tokenType: ADDRESSES.sui.ETH, - expo: 8 - }, - { - poolID: "0x55b7ae7eb570d3d2ee89a92dd8d958794f1e39c4ee067b28655359c0a152b3aa", - tokenType: "0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178::ns::NS", - expo: 6 - }, - { - poolID: "0x35f7260fefe3dde7fa5b4bf1319f15554934a94c74acd4ba54161f99470c348f", - tokenType: "0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX", - expo: 9 - }, - { - poolID: "0xd1125035ab6e2889239442031c130c641b75b430b71057bb79710ad578cc2867", - tokenType: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - expo: 9 - }, - { //wBTC - poolID: "0x17743a10e89b108fd7c048e7737ce09082e3ef91f416ee93c2566c5dd3f438db", - tokenType: "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC", - expo: 8 - }, - {// suiUSDT - poolID: "0x1d30d1b07d78341810a604ad34734001b3b70362c6502de2220999074429a641", - tokenType: ADDRESSES.sui.suiUSDT, - expo: 6 - }, - {// WAL - poolID: "0x8ceca427f6fef09f7691eb2c9f1bf41e4854230f9e1bd21322b3ea7f76ee6975", - tokenType: "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL", - expo: 9 - }, - {// DEEP - poolID: "0x16a5cc859b1af17b7478c79ff43e67cc5f5e5d257fba21839060dd398a9eb958", - tokenType: ADDRESSES.sui.DEEP, - expo: 6 - }, -] -const ALPHAFI_NAVI_LOOP_TVL_IDS = [ - { //sui vsui - poolID: "0xd013a1a0c6f2bad46045e3a1ba05932b4a32f15864021d7e0178d5c2fdcc85e3", - investorID: "0x36cc3135c255632f9275a5b594145745f8344ce8f6e46d9991ffb17596195869", - tokenType: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT", - expo: 9, - protocol: "ALPHALEND" - }, - { //usdt usdc - poolID: "0xdd886dd4828a44b7ae48bb7eaceca1cecedd1dcc06174f66ee398dc0feb71451", - investorID: "0xe512e692f4d48a79abcfd5970ccb44d6f7f149e81bb077ccd58b89d4ab557d0e", - tokenType: ADDRESSES.sui.USDT, - expo: 6, - protocol: "NAVI" - }, - { //usdc usdt - poolID: "0xb90c7250627e0113df2e60d020df477cac14ca78108e3c5968230f3e7d4d8846", - investorID: "0x3b9fe28a07e8dd5689f3762ba45dbdf10bd5f7c85a14432928d9108a61ef2dc2", - tokenType: ADDRESSES.sui.USDC_CIRCLE, - expo: 6, - protocol: "NAVI" - }, - { //hasui sui - poolID: "0x4b22c2fc59c7697eea08c1cc1eadf231415d66b842875ba4730a8619efa38ced", - investorID: "0xa65eaadb556a80e4cb02fe35efebb2656d82d364897530f45dabc1e99d15a8a9", - tokenType: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI", - expo: 9, - protocol: "NAVI" - }, - { //stsui sui - poolID: "0xc4caf2d31693974b838ffb83b0c8ae880a6b09ca251a07062cf66453bf3e3ce0", - investorID: "0x3e8937974f3dac64eb8ee9f86a80ccc24852bd2f74d18753d071bbdad73a4c97", - tokenType: "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - expo: 9, - protocol: "NAVI" - }, - { - //TBTC SINGLE LOOP - poolID: "0x185c2124971c44836ce303ed5cdf8a3f614105a4d8948bb98c81a816d087dba9", - investorID: "0x46bd2afe728ee1e64935d4c46c426237fda647b9d577da206507864b8fd446aa", - tokenType: "0x77045f1b9f811a7a8fb9ebd085b5b0c55c5cb0d1520ff55f7037f89b5da9f5f1::TBTC::TBTC", - expo: 8, - protocol: "ALPHALEND" - }, - { - //wBTC SINGLE LOOP - poolID: "0xc38279f945d14b4ec7f8c7b6956d0485ee8fa31a6cf710e462d17714bff028a2", - investorID: "0x0f03b5c37f49c18d6e13ddc58939df17586a0b80cb83ceda2e4494addd571990", - tokenType: "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC", - expo: 8, - protocol: "ALPHALEND" - } -] -const ALPHAFI_BUCKET_TVL_IDS = [ - { - poolID: "0x2c5c14b9fb21f93f36cac0f363acf59ecb21f34c4c9b1a1b383f635ecdc7b507", - tokenType: ADDRESSES.sui.BUCK, - }, - -] -const ALPHAFI_POOL2_IDS = [{ - poolID: "0x594f13b8f287003fd48e4264e7056e274b84709ada31e3657f00eeedc1547e37", - parentPoolID: "0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720", - investorID: "0x46d901d5e1dba34103038bd2ba789b775861ea0bf4d6566afd5029cf466a3d88", - token0Type: "0xfe3afec26c59e874f3c1d60b8203cb3852d2bb2aa415df9548b8d688e6683f93::alpha::ALPHA", - token1Type: ADDRESSES.sui.SUI -}, -{ - poolID: "0x430986b53a787362e54fa83d0ae046a984fb4285a1bc4fb1335af985f4fe019d", - parentPoolID: "0x0cbe3e6bbac59a93e4d358279dff004c98b2b8da084729fabb9831b1c9f71db6", - investorID: "0x705c560fd1f05c64e0480af05853e27e1c3d04e255cd6c5cb6921f5d1df12b5a", - token0Type: "0xfe3afec26c59e874f3c1d60b8203cb3852d2bb2aa415df9548b8d688e6683f93::alpha::ALPHA", - token1Type: ADDRESSES.sui.USDC -}, -{ - poolID: "0x4c0e42f1826170ad9283b321a7f9a453ef9f65aaa626f7d9ee5837726664ecdc", - parentPoolID: "0x29e218b46e35b4cf8eedc7478b8795d2a9bcce9c61e11101b3a039ec93305126", - investorID: "0xb43d1defd5f76ef084d68d6b56e903b54d0a3b01be8bb920ed1fa84b42c32ee1", - token0Type: "0xfe3afec26c59e874f3c1d60b8203cb3852d2bb2aa415df9548b8d688e6683f93::alpha::ALPHA", - token1Type: ADDRESSES.sui.USDC_CIRCLE -}, -{ //alpha usdc - poolID: "0x4540c5e7de64088c0c2c30abc51f7e6bbe6bc48703667c108aa1de23f6aa40e6", - parentPoolID: "0x6595edf6d8c8b6894a5c6760843ae2fde81cb37d8586984dd1345b0f00bfecd8", - investorID: "0x187ca6f373d20465a730125c93e62a96c6a73354a1a8b35cbdd2b39278b7b141", - token0Type: "0xfe3afec26c59e874f3c1d60b8203cb3852d2bb2aa415df9548b8d688e6683f93::alpha::ALPHA", - token1Type: ADDRESSES.sui.USDC_CIRCLE -}, -] - -const ALPHA_POOL_ID = "0x6ee8f60226edf48772f81e5986994745dae249c2605a5b12de6602ef1b05b0c1" -const ALPHA_COIN_TYPE = "0xfe3afec26c59e874f3c1d60b8203cb3852d2bb2aa415df9548b8d688e6683f93::alpha::ALPHA" - -function asIntN(int, bits = 32) { - return Number(BigInt.asIntN(bits, BigInt(int))) -} - -async function addPoolTVL(api, alphafiDoubleAssetPools) { - for (const { poolID, parentPoolID, investorID, token0Type, token1Type } of alphafiDoubleAssetPools) { - let investorObject = await sui.getObject(investorID) - let poolObject = await sui.getObject(poolID) - let parentPoolObject = await sui.getObject(parentPoolID) - addUniV3LikePosition({ - api, - tickLower: asIntN(investorObject.fields.lower_tick), - tickUpper: asIntN(investorObject.fields.upper_tick), - tick: asIntN(parentPoolObject.fields.current_tick_index.fields.bits), - liquidity: poolObject.fields.tokensInvested, - token0: token0Type, - token1: token1Type - }) - } -} - -async function addPoolTVL2(api, alphafiNaviPools){ - - for (const { poolID, tokenType, expo } of alphafiNaviPools){ - let poolObject = await sui.getObject(poolID); - let tokensInvested = poolObject.fields.tokensInvested; - let balance = BigInt(tokensInvested)/BigInt(Math.pow(10, 9-expo)); - api.add(tokenType, balance); - } -} - -async function addPoolTVL3(api, alphafiNaviLoopPools){ - - for (const { poolID, investorID, tokenType, expo, protocol } of alphafiNaviLoopPools){ - let poolObject = await sui.getObject(poolID); - let investorObject = await sui.getObject(investorID); - let tokensInvested = poolObject.fields.tokensInvested; - - let liquidity = parseFloat(tokensInvested); - /* - in the code below, we are subtracting the debt in the pool from the liquidity, since the borrowed tokens are supplied back to the pool (as part of our strategy). - we have current_debt_to_supply_ratio in the object, so current debt in the system is (current liquidity * current_debt_to_supply_ratio). - we subtract the above derived debt from the liquidity. - current_debt_to_supply_ratio in our system is scaled by 1e20, hence the division of 1e20 in the below used expression. - */ - liquidity = liquidity*(1-(parseFloat(investorObject.fields.current_debt_to_supply_ratio)/parseFloat(1e20))); - - tokensInvested = (liquidity.toString().split('.')[0]); - - let balance = BigInt(tokensInvested); - if(protocol === "NAVI"){ - balance /= BigInt(Math.pow(10, 9-expo)); - } - api.add(tokenType, balance); - } -} - -async function addPoolTVL4(api, alphafiBucketPools){ - - for (const { poolID, tokenType } of alphafiBucketPools){ - let poolObject = await sui.getObject(poolID); - let tokensInvested = poolObject.fields.tokensInvested; - api.add(tokenType, tokensInvested); - } -} - -async function tvl(api) { - - await Promise.all([addPoolTVL(api, ALPHAFI_CETUS_TVL_IDS), addPoolTVL2(api, ALPHAFI_NAVI_TVL_IDS), addPoolTVL3(api, ALPHAFI_NAVI_LOOP_TVL_IDS), addPoolTVL4(api, ALPHAFI_BUCKET_TVL_IDS), addPoolTVL(api, ALPHAFI_BLUEFIN_TVL_IDS), addPoolTVL(api, ALPHAFI_BLUEFIN_AUTOBALANCE_TVL_IDS)]); - -} -async function pool2(api) { - - await addPoolTVL(api, ALPHAFI_POOL2_IDS) - -} - - -async function staking(api) { - let alphaPoolObject = await sui.getObject(ALPHA_POOL_ID) - api.addToken(ALPHA_COIN_TYPE, BigInt(alphaPoolObject.fields.alpha_bal)) -} - -module.exports = { - timetravel: false, - doublecounted: true, - sui: { - tvl, pool2, staking, - }, -} \ No newline at end of file diff --git a/projects/alphaping/index.js b/projects/alphaping/index.js deleted file mode 100644 index 1a98fc69b23..00000000000 --- a/projects/alphaping/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Alphaping.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0xEB4Af6fA3AFA08B10d593EC8fF87efB03BC04645', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/alphbanx/index.js b/projects/alphbanx/index.js deleted file mode 100644 index be874799e67..00000000000 --- a/projects/alphbanx/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const alephium = require('../helper/chain/alephium'); - -const loanManagerAddress = 'tpxjsWJSaUh5i7XzNAsTWMRtD9QvDTV9zmMNeHHS6jQB'; -const stakeManagerAddress = '28Mhs2tczfKJDUq7seTzaRctZXUhqkMzikrehxAHy2kVu'; -const auctionManagerAddress = '29YL53teVrvK2o4P2cVej8aCGN7iQS8mE86bgxA2oFWa3'; - -const alphId = '0000000000000000000000000000000000000000000000000000000000000000'; -const abxTokenId = '9b3070a93fd5127d8c39561870432fdbc79f598ca8dbf2a3398fc100dfd45f00'; -const abdTokenId = 'c7d1dab489ee40ca4e6554efc64a64e73a9f0ddfdec9e544c82c1c6742ccc500'; - -const MethodIndexes = { - LoanManager: { - getTotalDebt: 17, - getApproximateTotalCollateral: 16, - }, - StakeManager: { - getStakedAmount: 26, - }, - AuctionManager: { - getTotalAbdAmount: 26, - } -}; - -async function tvl(api) { - const coreContractCalls = [ - { group: 0, address: loanManagerAddress, methodIndex: MethodIndexes.LoanManager.getApproximateTotalCollateral }, - { group: 0, address: stakeManagerAddress, methodIndex: MethodIndexes.StakeManager.getStakedAmount }, - { group: 0, address: auctionManagerAddress, methodIndex: MethodIndexes.AuctionManager.getTotalAbdAmount }, - ]; - - const results = await alephium.contractMultiCall(coreContractCalls); - - const totalCollateral = Number(results[0]?.returns?.[0]?.value) || 0; - const stakedAmount = Number(results[1]?.returns?.[0]?.value) || 0; - const totalAbdInAuctions = Number(results[2]?.returns?.[0]?.value) || 0; - - if (totalCollateral > 0) { - api.add(alphId, totalCollateral); - } - - if (stakedAmount > 0) { - api.add(abxTokenId, stakedAmount); - } - - if (totalAbdInAuctions > 0) { - api.add(abdTokenId, totalAbdInAuctions); - } -} - -async function staking(api) { - const results = await alephium.contractMultiCall([ - { group: 0, address: stakeManagerAddress, methodIndex: MethodIndexes.StakeManager.getStakedAmount }, - ]); - - const stakedAmount = Number(results[0].returns[0].value); - if (stakedAmount > 0) { - api.add(abxTokenId, stakedAmount); - } -} - -module.exports = { - alephium: { - tvl, - staking, - } -}; \ No newline at end of file diff --git a/projects/alphpad/index.js b/projects/alphpad/index.js deleted file mode 100644 index 8da07e5e177..00000000000 --- a/projects/alphpad/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const alephium = require('../helper/chain/alephium') - -const Addresses = { - apad: '27HxXZJBTPjhHXwoF1Ue8sLMcSxYdxefoN2U6d8TKmZsm', - alphApadPool: 'vFpZ1DF93x1xGHoXM8rsDBFjpcoSsCi5ZEuA5NG5UJGX', - alphUsdtPool: '2A5R8KZQ3rhKYrW7bAS4JTjY9FCFLJg6HjQpqSFZBqACX', - vault: 'yzoCumd4Fpi959NSis9Nnyr28UkgyRYqrKBgYNAuYj3m' -} - -async function apadLocked() { - const results = await alephium.contractMultiCall([ - { group: 0, address: Addresses.vault, methodIndex: 34 }, - { group: 0, address: Addresses.alphApadPool, methodIndex: 8 }, - { group: 0, address: Addresses.alphUsdtPool, methodIndex: 8 }, - ]); - const apadLocked = results[0].returns[0].value; - const apadInAlph = results[1].returns[0].value / results[1].returns[1].value; - const alphInUsd = (results[2].returns[1].value * 10 ** 12) / results[2].returns[0].value; - return ((apadLocked / 10 ** 18) * apadInAlph) * alphInUsd; -} - -async function staking(api) { - const apadLockedValue = await apadLocked(); - api.addCGToken('tether', apadLockedValue) -} - - -module.exports = { - timetravel: false, - methodology: 'TVL locked in the APAD on Alephium', - alephium: { - tvl: () => ({}), - staking - } -} diff --git a/projects/alta-finance/index.js b/projects/alta-finance/index.js deleted file mode 100644 index ed7d6ec0e92..00000000000 --- a/projects/alta-finance/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - methodology: "Sums the amount of funded real-world assets on ALTA Finance as borrowed. Tokens left in the countract are counted towards tvl", -} - -const config = { - polygon: { investments: ['0xcf152E9f60E197A44FAdce961c6B822Dcb6c9dcc'], debts: [], token: ADDRESSES.polygon.USDC }, - base: { investments: [], debts: [], token: ADDRESSES.base.USDC } -} - -Object.keys(config).forEach(chain => { - const { investments, debts, token } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - return api.sumTokens({ owners: investments.concat(debts), tokens: [token] }) - }, - borrowed: async (api) => { - const nftCount = (await api.multiCall({ abi: 'uint256:_tokenIdCounter', calls: investments, permitFailure: true })).map(i => i ?? 0) - const amount = (await api.multiCall({ abi: 'uint256:amountPerNft', calls: investments, permitFailure: true })).map(i => i ?? 0) - api.add(token, nftCount.map((v, i) => v * amount[i])) - - const bals = (await api.multiCall({ abi: 'uint256:amount', calls: debts, permitFailure: true })).map(i => i ?? 0) - api.add(token, bals) - return api.getBalances() - }, - } -}) diff --git a/projects/alternity/index.js b/projects/alternity/index.js deleted file mode 100644 index 64a009c6c51..00000000000 --- a/projects/alternity/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { getLiquityTvl } = require("../helper/liquity"); - -// TroveManager holds total system collateral (deposited ETH) -const STAKING_ADDRESS = "0x424891f1D6D4De5c07B6E3F74B3709D6BD9E77ea"; -const ALTR_ADDRESS = "0xD1ffCacFc630CE68d3cd3369F5db829a3ed01fE2" - -module.exports = { - start: '2023-08-19', - ethereum: { - tvl: getLiquityTvl('0x51c014510A5AdA43408b40D49eF52094014ef3A7'), - staking: staking(STAKING_ADDRESS, ALTR_ADDRESS) - } -}; diff --git a/projects/alterscope/index.js b/projects/alterscope/index.js deleted file mode 100644 index ac0d1f0f8a9..00000000000 --- a/projects/alterscope/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Alterscope.', - blockchains: { - ethereum: { - eulerVaultOwners: [ - '0x0d8249DD621fB1c386A7A7A949504035Dd3436A3', - ], - }, - base: { - eulerVaultOwners: [ - '0xf3ED34523E35279a1deB2960c0aC46Be8E23a2f4' - ] - }, - starknet: { - vesu: [ - '0x7bafdbd2939cc3f3526c587cb0092c0d9a93b07b9ced517873f7f6bf6c65563', - '0x27f2bb7fb0e232befc5aa865ee27ef82839d5fad3e6ec1de598d0fab438cb56', - '0x5c678347b60b99b72f245399ba27900b5fc126af11f6637c04a193d508dda26', - '0x2906e07881acceff9e4ae4d9dacbcd4239217e5114001844529176e1f0982ec', - ], - }, - } -} - -module.exports = { - ...getCuratorExport(configs), - - // starknet doesn't support historical queries - timetravel: false, - hallmarks: [ - ['2025-06-01', "Start tracking vaults on starknet"], - ] -} diff --git a/projects/altitude-fi/addresses.js b/projects/altitude-fi/addresses.js deleted file mode 100644 index 76f68217712..00000000000 --- a/projects/altitude-fi/addresses.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const vaults = [ - { - name: 'wstethUsdc v1', - address: '0x1f7d589e90e4E4FC1B15B3143a5c60F743C759b9', - supplyToken:'0x874566FfA8d837934aE85Db2209839F5Fb4E6b1d', - underlyingSupplyToken:ADDRESSES.ethereum.WSTETH, // wstETH - debtToken:'0xd130a916dDbF1612C2F2FAAb6897210f056Ab29b', - underlyingBorrowToken:ADDRESSES.ethereum.USDC, // USDC - }, - { - name: 'wstethUsdc v2', - address: '0xaf6062222d00ac63477ad084ebd22a7821e5ee8d', - supplyToken:'0x5c58dffc753ba61e07a73a021f70366ab69c1f06', - underlyingSupplyToken:ADDRESSES.ethereum.WSTETH, // wstETH - debtToken:'0x5717f3f1b566cf2f7113979fcd78d9416f5b0056', - underlyingBorrowToken:ADDRESSES.ethereum.USDC, // USDC - }, - { - name: 'cbbtcUsdc v2', - address: '0x550F8a1FFC921b9179267F9e7909FC68CE496A6b', - supplyToken: '0x2Ddd6d576615E6AFa823adeDDe8DC67198333169', - underlyingSupplyToken: ADDRESSES.ethereum.cbBTC, // cbBTC - debtToken: '0xDF612bf20C2A68730cEDC5056a1F1A90c6827e66', - underlyingBorrowToken: ADDRESSES.ethereum.USDC, // USDC - } -] - -module.exports = { - vaults -} \ No newline at end of file diff --git a/projects/altitude-fi/index.js b/projects/altitude-fi/index.js deleted file mode 100644 index b99ba8bd5d9..00000000000 --- a/projects/altitude-fi/index.js +++ /dev/null @@ -1,80 +0,0 @@ -const sdk = require('@defillama/sdk'); -const config = require('./addresses') - -async function calculateBorrowAmounts(api, config) { - const vaultBorrowCalls = config.vaults.map(vault => ({ - target: vault.debtToken, - params: [vault.address] - })) - - const totalBorrowCalls = config.vaults.map(vault => ({ - target: vault.debtToken, - })) - - const [vaultBorrowBalances, totalBorrow] = await Promise.all([ - api.multiCall({ - abi: 'erc20:balanceOf', - calls: vaultBorrowCalls, - }), - api.multiCall({ - abi: 'erc20:totalSupply', - calls: totalBorrowCalls, - }) - ]) - - return config.vaults.map((vault, i) => { - const vaultBorrowBalance = vaultBorrowBalances[i] - const totalBorrowBalance = totalBorrow[i] - const usersBorrow = totalBorrowBalance - vaultBorrowBalance - return { - vault, - usersBorrow, - underlyingBorrowToken: vault.underlyingBorrowToken - } - }) -} - -async function ethereum(includeBorrowed = false) { - const api = new sdk.ChainApi({ chain: 'ethereum' }) - if (!config.vaults) return {} - - const calls = config.vaults.map(vault => ({ - target: vault.supplyToken, - })) - - const balances = await api.multiCall({ - abi: 'erc20:totalSupply', - calls, - }) - - if (!includeBorrowed) { - // Add supply token balances - config.vaults.forEach((vault, i) => { - const balance = balances[i] - api.add(vault.underlyingSupplyToken, balance) - }) - - // Subtract borrowed amounts from TVL - const borrowData = await calculateBorrowAmounts(api, config) - borrowData.forEach(({ usersBorrow, underlyingBorrowToken }) => { - api.add(underlyingBorrowToken, -usersBorrow) - }) - } else { - // Only add borrowed amounts by user - const borrowData = await calculateBorrowAmounts(api, config) - borrowData.forEach(({ usersBorrow, underlyingBorrowToken }) => { - api.add(underlyingBorrowToken, usersBorrow) - }) - } - - return api.getBalances() -} - -module.exports = { - ethereum: { - tvl: () => ethereum(false), - borrowed: () => ethereum(true), - }, - doublecounted: true, - methodology: 'TVL is calculated by counting the tokens locked in the contracts to be used as collateral to borrow or to earn yield. User borrows are not counted towards the TVL.' -} diff --git a/projects/altitude/index.js b/projects/altitude/index.js deleted file mode 100644 index ede6cd4d199..00000000000 --- a/projects/altitude/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const stakingContracts = [ - "0xbc2B1262C90ab34757dC7eb2CB7CE595660Ff44e", -]; - -const ALTD = "0x8929e9DbD2785e3BA16175E596CDD61520feE0D1"; - -const GENERAL_CONTRACT = '0xF80E51AFb613D764FA61751Affd3313C190A86BB'; -const EXTRA_CONTRACTS = { - arbitrum: ['0xd6e501F92CE58623EE5D36f6BAdBcd35d87Ea522'], - mantle: ['0xf0dbc067D21319068e1C2617e13FC28db83C18FE'], -}; - -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 = {}; - -CHAINS.forEach(chain => { - output[chain] = { - tvl: async (api) => { - // 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.methodology = "Fetches the localLiquidity of each token in the Altitude contract across multiple chains and computes the TVL."; - -module.exports = output; diff --git a/projects/altr-lend/index.js b/projects/altr-lend/index.js deleted file mode 100644 index 83c24a523de..00000000000 --- a/projects/altr-lend/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sdk = require("@defillama/sdk"); -// const LendingContract = "0xdc93413cbe690a1643d285c9f075b271372c9b36" -const { graphQuery } = require('../helper/http') -const ADDRESSES = require('../helper/coreAssets.json') - -async function borrowed(api) { - const query = `{ - loans(where: {id_not: "1", status: ACCEPTED, startTime_lte: "${api.timestamp}" }) { - amount - } -}` - - const { loans } = await graphQuery(sdk.graph.modifyEndpoint('AVmBsxjouEH6wvG2HCGPCNNt9eDeX2esaRZ7L7jJaTnD'), query); - api.add(ADDRESSES.polygon.USDT, loans.map(i => i.amount)); - return api.getBalances() -} - -module.exports = { - methodology: "Determined by querying from our public TheGraph the total USD value of all active loans", - start: '2024-02-14', - polygon: { - tvl: () => ({}), - borrowed, - }, -} diff --git a/projects/alyx-finance/index.js b/projects/alyx-finance/index.js deleted file mode 100644 index adaef80d5b2..00000000000 --- a/projects/alyx-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens"); - -const masterchefAddress = "0x7Bd2f7641b875872c7c04ee3B426F753C7093aD5"; -const alyxToken = "0x2701C7cBf3220FFF6e6CEaabbCD9B932Eb11E3Ff"; -const alyx_bsc_lp = "0xf5Ea0B5AafC6eDACA15909a02C1e16bCaCd74C1e" -const treasury = "0x576182b7a1b0bC67701ead28a087228c50Aa0982"; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: sumTokensExport({ tokens: [alyx_bsc_lp], owner: treasury, useDefaultCoreAssets: true }), - pool2: sumTokensExport({ tokens: [alyx_bsc_lp], owner: masterchefAddress, useDefaultCoreAssets: true }), - staking: sumTokensExport({ tokens: [alyxToken], owner: masterchefAddress, useDefaultCoreAssets: true, lps: [alyx_bsc_lp] }), - }, - methodology: `Total amount of tokens in treasury and masterchef contract`, -}; \ No newline at end of file diff --git a/projects/amana-defi/index.js b/projects/amana-defi/index.js deleted file mode 100644 index 95357c0dff5..00000000000 --- a/projects/amana-defi/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// AmanaDefi TVL Adapter - Working Version using sumTokensExport - -const { sumTokensExport } = require("../helper/unwrapLPs"); - -// Define vault addresses and their corresponding tokens -const vaultTokenPairs = [ - // Base vaults - both hold USDC.BASE ZRC20 - ["0x0F6514E3e4760eFc8f34fc67a05c4987367aF14e", "0x96152E6180E085FA57c7708e18AF8F05e37B479D"], // ZeroLend USDC - ["0x5cD6e196CA1D85B8edFDf162d3A0C77268F42C69", "0x96152E6180E085FA57c7708e18AF8F05e37B479D"], // Fluid USDC - - // Polygon vault - holds USDT.POL ZRC20 - ["0x622E956626Cc6aBa655E3d92a3629b04cB038E80", "0xdbfF6471a79E5374d771922F2194eccc42210B9F"], // Compound USDT - - // BSC vault - holds USDT.BSC ZRC20 - ["0xe5fa0E4BA13D516908c5313b3375b7Ede24BFe7a", ADDRESSES.zeta.USDT_1], // Aave USDT - - // Ethereum vault - holds ETH.ETH ZRC20 - ["0xF4FA4D8115e78ACf52308FDBad10A5f9042991DE", ADDRESSES.zeta.ETH], // Curve-Convex msETH/WETH - - // Curve Convex USDC Vault -> Arbitrum -> USDC.ARB - ["0x32fECdEf376E2aD74C53663BDE933116C09408f3", "0x0327f0660525b15Cdb8f1f5FBF0dD7Cd5Ba182aD"], // Curve-Convex eUSD/USDC - - // Curve Convex USDT Vault -> Ethereum -> USDT.ETH - ["0x0552d4c51491d9bfed97eb795e101e90a5f16d44", ADDRESSES.zeta.USDT], - - // Balancer USDC Vault -> Base -> USDC.BASE - ["0x8b934de59fde50a91daa7e788389f8fcad35a14f", "0x96152E6180E085FA57c7708e18AF8F05e37B479D"], - - // YieldFi USDC Vault -> Ethereum -> USDC.ETH - ["0xcf18fc631e05ba7dcbcadcd212176c381256faa8", ADDRESSES.zeta.USDC_1], - - // Aegis USDT Vault -> BNB -> USDT.BSC - ["0x0552d4c51491d9bfed97eb795e101e90a5f16d44", ADDRESSES.zeta.USDT_1], - - // Curve Convex cbBTC Vault -> Ethereum -> CBBTC.ETH - ["0x5e3adc840b55fe0b99c0418ac69113e1f0296992", "0x3e128c169564DD527C8e9bd85124BF6A890E5a5f"], - - // Curve Convex USDf Vault -> Ethereum -> USDC.ETH - ["0xe501cbd03fa739273f49a8b54dd49de1248101f6", ADDRESSES.zeta.USDC_1], - - // Noon Capital sUSN Vault -> Ethereum -> USDC.ETH - ["0x8426929d568b1cbc281f5787556f84c5b101399d", ADDRESSES.zeta.USDC_1], -]; - -// Custom TVL function that handles the special case -async function zetachainTvl(api) { - const vaultABI = "function totalAssets() external view returns (uint256)"; - - for (const [vaultAddress, tokenAddress] of vaultTokenPairs) { - const totalAssets = await api.call({ - target: vaultAddress, - abi: vaultABI, - }); - - // Skip empty vaults - if (totalAssets === "0" || totalAssets === 0) { - continue; - } - - // Add the token balance - let DefiLlama handle the token recognition - api.add(tokenAddress, totalAssets); - } -} - -module.exports = { - methodology: "AmanaDefi is a cross-chain yield farming protocol that manages ERC4626-compliant vaults on ZetaChain. Vaults hold ZRC20 tokens (ZetaChain's cross-chain representations) which are 1:1 pegged to native tokens on connected chains. TVL is calculated by summing totalAssets() of all vaults holding ZRC20 tokens.", - zeta: { - tvl: zetachainTvl, - }, -}; \ No newline at end of file diff --git a/projects/amaterasu.js b/projects/amaterasu.js deleted file mode 100644 index da23a1807c0..00000000000 --- a/projects/amaterasu.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -module.exports = { - methodology: `Uses factory(0x34696b6cE48051048f07f4cAfa39e3381242c3eD) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - misrepresentedTokens: true, - aurora: { - tvl: getUniTVL({ - factory: "0x34696b6cE48051048f07f4cAfa39e3381242c3eD", - useDefaultCoreAssets: true, - }) - } -}; // node test.js projects/amaterasu.js \ No newline at end of file diff --git a/projects/amber-finance/index.js b/projects/amber-finance/index.js deleted file mode 100644 index 0ed956ce656..00000000000 --- a/projects/amber-finance/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos'); -const BigNumber = require('bignumber.js'); - -const redBank = 'neutron1k8xyccg9nvfavagqjsqngh66w4z286utqweswl4txtnewaymkc9ss5f5e8' - -async function getMarkets(chain, redBank) { - let startAfter = null; - const pageLimit = 5; - const allMarkets = []; - - do { - const markets = await queryContract({ - contract: redBank, - chain, - data: { 'markets_v2': { 'limit': pageLimit, 'start_after': startAfter } }, - }); - - allMarkets.push(...markets.data); - - if (markets.length === pageLimit) startAfter = markets[markets.length - 1].denom; - else startAfter = null; - } while (startAfter); - - return allMarkets; -} - -async function tvl(api) { - const markets = await getMarkets(api.chain, redBank); - - markets.forEach(market => { - const netAmount = BigNumber(market.collateral_total_amount).minus(market.debt_total_amount); - api.add(market.denom, netAmount.toString()); - }); -} - -async function borrowed(api) { - const markets = await getMarkets(api.chain, redBank); - - markets.forEach(market => { - api.add(market.denom, market.debt_total_amount); - }); -} - -module.exports = { - timetravel: false, - methodology: "Sum token balances by querying the total deposit amount for each asset from the market stats api.", - neutron: { - tvl, - borrowed - }, - hallmarks: [ - [1756303200, 'Launch on Neutron'], - ], -}; diff --git a/projects/ambient-finance/index.js b/projects/ambient-finance/index.js deleted file mode 100644 index 315e06ae784..00000000000 --- a/projects/ambient-finance/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { cachedGraphQuery, getConfig } = require("../helper/cache"); - -const CONFIG = { - scroll: { - vault: '0xaaaaAAAACB71BF2C8CaE522EA5fa455571A74106', - subgraph: 'https://ambindexer.net/scroll-gcgo/pool_list?chainId=0x82750' - }, - blast: { - vault: '0xaAaaaAAAFfe404EE9433EEf0094b6382D81fb958', - subgraph: 'https://ambindexer.net/blast-gcgo/pool_list?chainId=0x13e31' - }, - canto: { - vault: '0x9290c893ce949fe13ef3355660d07de0fb793618', - subgraph: 'https://ambient-graphcache.fly.dev/gcgo/pool_list?chainId=0x1e14' - }, - ethereum: { - vault: '0xAaAaAAAaA24eEeb8d57D431224f73832bC34f688', - subgraph: sdk.graph.modifyEndpoint('DyHaLYK1keqcv3YD3VczKGYvxQGfGgV6bGTbZLMj5xME') - }, - swellchain: { - vault: '0xaAAaAaaa82812F0a1f274016514ba2cA933bF24D', - subgraph: 'https://ambindexer.net/swell-gcgo/pool_list?chainId=0x783' - }, - plume: { - vault: '0xAaAaAAAA81a99d2a05eE428eC7a1d8A3C2237D85', - subgraph: 'https://ambindexer.net/plume-gcgo/pool_list?chainId=0x18231' - }, - plume_mainnet: { - vault: '0xAaAaAAAA81a99d2a05eE428eC7a1d8A3C2237D85', - subgraph: 'https://ambindexer.net/plume-gcgo/pool_list?chainId=0x18232' - }, -} - -const tvl = async (api) => { - const chain = api.chain - if (chain === 'plume') return; - - const { vault, subgraph } = CONFIG[chain] - if (!vault || !subgraph) return; - - const prefix = `ambient-finance/${chain}`; - const pools = subgraph.includes("gcgo") - ? (await getConfig(prefix, subgraph)).data - : (await cachedGraphQuery(prefix, subgraph, "{ pools { base quote }}")).pools; - - const tokens = pools.map(i => [i.base, i.quote]).flat() - return sumTokens2({ api, owner: vault, tokens }) -} - -Object.keys(CONFIG).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/ambire-wallet/index.js b/projects/ambire-wallet/index.js deleted file mode 100644 index 6030ec44a19..00000000000 --- a/projects/ambire-wallet/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require('../helper/staking') -const sdk = require('@defillama/sdk') - -const WALLET = '0x88800092ff476844f74dc2fc427974bbee2794ae' -const WALLET_staking = '0x47cd7e91c3cbaaf266369fe8518345fc4fc12935' - -module.exports = { - methodology: `TVL for Ambire Wallet consists of the staking of WALLET.`, - ethereum:{ - tvl: () => ({}), - staking: sdk.util.sumChainTvls([ - staking(WALLET_staking, WALLET), - ]), - } -} \ No newline at end of file diff --git a/projects/ambit-finance/index.js b/projects/ambit-finance/index.js deleted file mode 100644 index 1992c4d32eb..00000000000 --- a/projects/ambit-finance/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const REGISTRY = "0x5b1eFC3057E941439C487E67761F348D19Dd4100"; - -const REGISTRY_KEYS = { - "ambit.asset.storage": - "0x7267fae8044d9c0f406ec1d6bfdfdb3a4afea229fceedb3c88cc26df2ac97809", - "ambit.depositorVault": - "0x970bffd07196f826592058a2977d8df91d0b38816ca31aaaa6a628eda0328dbe", - "ambit.depositorVault.token": - "0x8e9a5206de4051330868a4fdef94140eaddce6206903c36de600007efb237b8d", - "ambit.market": - "0xcc0fa1d8c6527b2fc2cd5cbed9e80e1843330af5cd1d34a45c3f125a60dc07aa", -}; - -const ABI = { - IAddressRegistry: { - getAddresses: - "function getAddresses(bytes32[] calldata keys) view returns (address[] memory)", - }, - IAssetStorage: { - getAssets: - "function getAssets() view returns ((address,address,address,address,uint16,uint16,uint256,(address,uint16))[])", - }, - ICustodian: { - getTotalAssets: "function getTotalAssets() view returns (uint256)", - }, - IDepositorVault: { - getTotalAssets: "function getTotalAssets() view returns (uint256)", - getLiabilities: - "function getLiabilities(address account) view returns (uint256)", - }, -}; - -const AUSD = "0xf328ed974e586b6eea7997a87ea2ab1de149b186"; - -async function tvl(api) { - const tokensAndOwners = [] - const [storage, depositorVault] = await api.call({ - abi: ABI["IAddressRegistry"]["getAddresses"], - target: REGISTRY, - params: [ - [ - REGISTRY_KEYS["ambit.asset.storage"], - REGISTRY_KEYS["ambit.depositorVault"], - ], - ], - }); - tokensAndOwners.push([ADDRESSES.bsc.USDT, depositorVault]); - // supply side - const assets = await api.call({ abi: ABI["IAssetStorage"]["getAssets"], target: storage, }); - assets.forEach(i => tokensAndOwners.push([i[0], i[1]])) - return sumTokens2({ api, tokensAndOwners, blacklistedTokens: [AUSD] }); -} - -async function borrowed(api) { - const [depositorVault, market] = await api.call({ - abi: ABI["IAddressRegistry"]["getAddresses"], - target: REGISTRY, - params: [ - [REGISTRY_KEYS["ambit.depositorVault"], REGISTRY_KEYS["ambit.market"]], - ], - }); - - const liabilities = await api.call({ abi: ABI["IDepositorVault"]["getLiabilities"], target: depositorVault, params: market }); - api.add(ADDRESSES.bsc.USDT, liabilities); - return api.getBalances() -} - -module.exports = { - bsc: { - tvl, - borrowed, - }, - methodology: "Gets the TVL for the protocol", -}; diff --git a/projects/amesdefi/index.js b/projects/amesdefi/index.js deleted file mode 100644 index b23d7c43043..00000000000 --- a/projects/amesdefi/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { tombTvl } = require('../helper/tomb'); - -const ames = "0xb9E05B4C168B56F73940980aE6EF366354357009"; -const share = "0xFa4b16b0f63F5A6D0651592620D585D308F749A4"; -const boardroom = "0xC183b26Ad8C660AFa7B388067Fd18c1Fb28f1bB4"; -const rewardPool = "0x1da194F8baf85175519D92322a06b46A2638A530"; -const pool2lps = [ - "0x81722a6457e1825050B999548a35E30d9f11dB5c", - "0x91da56569559b0629f076dE73C05696e34Ee05c1", -]; - -module.exports = { - ...tombTvl(ames, share, rewardPool, boardroom, pool2lps, "bsc", undefined, false, pool2lps[1]) -}; \ No newline at end of file diff --git a/projects/amet-finance/index.js b/projects/amet-finance/index.js deleted file mode 100644 index 96729b0e4f9..00000000000 --- a/projects/amet-finance/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const issuerEventABI = "event BondIssued(address bondAddress)"; - -const config = { - base: { - issuer: "0xE67BE43603260b0AD38bBfe89FcC6fDe6741e82A", - fromBlock: 12724500 - }, - manta: { - issuer: null, - }, - polygon: { - issuer: null, - }, - polygon_zkevm: { - issuer: null, - } -}; - -const FixedFlexIssuerABI = { - payoutToken: "function payoutToken() view returns (address)" -}; - - -async function tvl(api) { - const { issuer, fromBlock } = config[api.chain]; - - if (!issuer) return {}; - - const issuerLogs = await getLogs({api, target: issuer, fromBlock, eventAbi: issuerEventABI, onlyArgs: true}); - const bondAddresses = issuerLogs.map(item => item.bondAddress); - const payoutTokens = await api.multiCall({abi: FixedFlexIssuerABI.payoutToken, calls: bondAddresses}); - const ownerTokens = payoutTokens.map((payoutToken, index) => [[payoutToken], bondAddresses[index]]); - return await api.sumTokens({ownerTokens}); -} - -module.exports = { - methodology: "On DeFiLlama, the TVL (Total Value Locked) calculation for Amet Finance is derived from analyzing issuer logs to identify all issued bonds. We then assess the payout balance held within these bonds. The aggregate of these balances across all bonds represents the TVL for Amet Finance." -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/ammos-fi/index.js b/projects/ammos-fi/index.js deleted file mode 100644 index 82f5938c37b..00000000000 --- a/projects/ammos-fi/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - mantle: { factory: "0x636eA278699A300d3A849aB2cE36c891C4eE3Da0", fromBlock: 20634, }, -}); \ No newline at end of file diff --git a/projects/amnis-finance/index.js b/projects/amnis-finance/index.js deleted file mode 100644 index ceadd63aadd..00000000000 --- a/projects/amnis-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { function_view } = require('../helper/chain/aptos') - -async function _getAmTotalSupply() { - return function_view({ functionStr: `0x111ae3e5bc816a5e63c2da97d0aa3886519e0cd5e4b046659fa35796bd11542a::amapt_token::total_supply`, type_arguments: [], args: [] }) -} - -module.exports = { - timetravel: false, - aptos: { - tvl: async () => { - const totalSupply = await _getAmTotalSupply() - return { - aptos: totalSupply/1e8 - } - } - } -} diff --git a/projects/amogus-dao/index.js b/projects/amogus-dao/index.js deleted file mode 100644 index 1ffdd30f7b7..00000000000 --- a/projects/amogus-dao/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { ohmTvl } = require("../helper/ohm") - -/* -⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠉⠉⠉⠉⠉⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⣀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠁⠀⠀⠀⠀⠀⠉⠉⣷⠀⠀⠀⣴⠟⠛⠛⠻⣿⡁⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⠀⣾⠃⠀⠀⠀⠀⠈⠙⢷⡄⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠃⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠈⣷⡀⠀⠀⠀⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⠀⠀⠀⠀⣀⡴⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣧⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⡏⠹⣏⠉⠛⠷⠾⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⣄⣀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⡁⠀⠙⠷⠶⣶⣦⣶⠶⠖⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⢦⣤⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⢿⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⢀⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣄⣠⣤⣤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠏⠉⠉⠉⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⢀⡾⠉⠀⠀⠀⢰⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⢸⣟⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠙⠛⢿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠈⠻⣆⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣇⣀⣀⣀⣀⣀⣤⣾⣿⣿⣿⣿⣇⣀⠀⠀⠀⠀⣀⣀⣿⣤⣤⣴⣾⣿⣿⣿⣿⣿⣯⣀⣀⣀⣀⣀⣀⣠⣴⣿⣿⣿⣿ -⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ -*/ - -const sus = "0x43f673dEDE1A30399E7b9b600AD78193dB00D895"; -const amogusStaking = "0xc387d28A373c7683132bebaf8683F70fc6b52Aa5"; -const treasury = "0xD8635772d8Fd5fc448f025Ed500e1674F67C91c7"; -const treasuryTokens = [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0x96a89c2bec139d518533251229ee3853fdb89430", true], // SUS-MIM JLP -] - -module.exports = { - ...ohmTvl(treasury, treasuryTokens, "avax", amogusStaking, sus, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/amped/index.js b/projects/amped/index.js deleted file mode 100644 index 519d7e3e31a..00000000000 --- a/projects/amped/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { gmxExports } = require('../helper/gmx') -const { staking } = require('../helper/staking') - -const phoenixVaultAddress = '0xa6b88069EDC7a0C2F062226743C8985FF72bB2Eb'; -const phoenixStakingAddress = '0x3c9586567a429BA0467Bc63FD38ea71bB6B912E0'; -const phoenixAmpedAddress = '0xca7F14F14d975bEFfEe190Cd3cD232a3a988Ab9C'; - -const sonicVaultAddress = '0x5B8caae7cC6Ea61fb96Fd251C4Bc13e48749C7Da'; -const sonicStakingAddress = '0xE8b485031343D7F38d59C92fA25805A4e72C6a4a'; -const sonicAmpedAddress = '0x4Cae73a23078e7A94D1e828Fa3bABa5080c04FcA'; - -const bscVaultAddress = '0xdcFaaf6f3bb71B270404992853588BE9B7fc89EA'; -const bscStakingAddress = '0x9fe50b66fc34cA06BbC684fF13242d61c860F190'; -const bscAmpedAddress = '0x16DF3d8978d17fE725Dc307aD14FdE3B12E6Da75'; - -const berachainVaultAddress = '0xc3727b7E7F3FF97A111c92d3eE05529dA7BD2f48'; -const berachainStakingAddress = '0xE65668F745F546F061b4fC925A31Cb1F6512c32A'; -const berachainAmpedAddress = '0xAc611438AE5F3953DeDB47c2ea8d6650D601C1B4'; - -const baseVaultAddress = '0xed33E4767B8d68bd7F64c429Ce4989686426a926'; -const baseStakingAddress = '0x9e45B1f3983e5BD6480C39f57F876df0eda8EA74'; -const baseAmpedAddress = '0xAc611438AE5F3953DeDB47c2ea8d6650D601C1B4'; - -const superseedVaultAddress = '0x7f27Ce4B02b51Ea3a433eD130259F8A173F7c6C7'; -const superseedStakingAddress = '0x5ac57B6034590E53fC214Dd31E30b7C7D9D627C9'; -const superseedAmpedAddress = '0x9951bC662dFA91DE9a893d68055B6f086669b025'; - -module.exports = { - start: '2024-06-06', - lightlink_phoenix: { - tvl: gmxExports({ vault: phoenixVaultAddress }), - staking: staking(phoenixStakingAddress, phoenixAmpedAddress) - }, - bsc: { - tvl: gmxExports({ vault: bscVaultAddress }), - staking: staking(bscStakingAddress, bscAmpedAddress) - }, - sonic: { - tvl: gmxExports({ vault: sonicVaultAddress }), - staking: staking(sonicStakingAddress, sonicAmpedAddress) - }, - berachain: { - tvl: gmxExports({ vault: berachainVaultAddress }), - staking: staking(berachainStakingAddress, berachainAmpedAddress) - }, - base: { - tvl: gmxExports({ vault: baseVaultAddress }), - staking: staking(baseStakingAddress, baseAmpedAddress) - }, - sseed: { - tvl: gmxExports({ vault: superseedVaultAddress }), - staking: staking(superseedStakingAddress, superseedAmpedAddress) - } -}; \ No newline at end of file diff --git a/projects/ampere/index.js b/projects/ampere/index.js deleted file mode 100644 index 2ceb5502d4c..00000000000 --- a/projects/ampere/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); -const AMP = "0x2b09179D26FdDB27a24ee25328890791c7A984c2".toLowerCase(); -const CURRENT = "0x3B1292FEf70C3F9Fb933DD2e2F4B734DcB35648d".toLowerCase(); - -const fuseLPs = [ - "0x48515f859e44161bf67ae610a7c83f53b0048713", - "0xaa33219a463635097fa8d603e5436ad08dd948fc", -]; - -const rewardPool = "0x8Cdc3584B455b49634b9272247AD2AccEef58c98".toLowerCase(); -const masonry = "0x335C392DB4F0AD43f782B0646959E41FC1134350".toLowerCase(); - -module.exports = { - methodology: "Pool2 deposits consist of AMP/FUSE and CURRENT/FUSE LP tokens deposits while the staking TVL consists of the CURRENT tokens locked within the Masonry contract, priced using Fuse on Ethereum mainnet.", - start: 1650700800, - ...tombTvl( - AMP, - CURRENT, - rewardPool, - masonry, - fuseLPs, - "fuse", - undefined, - false, - fuseLPs[1] - ), -}; diff --git a/projects/amphor/index.js b/projects/amphor/index.js deleted file mode 100644 index df15db22ae4..00000000000 --- a/projects/amphor/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumERC4626VaultsExport } = require('../helper/erc4626'); -const { sumTokensExport } = require('../helper/unwrapLPs'); -const sdk = require('@defillama/sdk'); - -const config = { - ethereum: { - lvTokens: { - totalAssets: [ - '0x3b022EdECD65b63288704a6fa33A8B9185b5096b', // ampr-LP-USD - '0x2791EB5807D69Fe10C02eED6B4DC12baC0701744', // ampr-LP-ETH - '0xC4A324fDF8a2495776B4d6cA46599B5a52f96489', // ampr-LP-BTC - '0xf97ecda5F9ff31d83f635a6EA70D2D3B9C8f2e00', // amprPTweETH - '0x0498b85FB4EC85EF5EFe82513aa9DaF767358A15', // amprPTrsETH - '0x920F17e741029D904936c58a545DFFC72f82C079', // amprPTezETH - '0xcdc51f2b0e5f0906f2fd5f557de49d99c34df54e', // amprETH - ], - totalSupply: [ - '0x06824C27C8a0DbDe5F72f770eC82e3c0FD4DcEc3', // amphrLRT - ], - }, - }, -}; - -const claimableSilo = '0x06eCFaAde8fcb8C1bC58CB05104604282f8a8144'; -const pendingSilo = '0x361a027e660844f336d5fa07E4cb38c40d5880d9'; -const WETH = ADDRESSES.ethereum.WETH; - -const totalAssetsVaults = config.ethereum.lvTokens.totalAssets; -const totalSupplyVaults = config.ethereum.lvTokens.totalSupply; - -const tvl = sdk.util.sumChainTvls([ - sumERC4626VaultsExport({ - vaults: totalAssetsVaults, - tokenAbi: 'asset', - balanceAbi: 'totalAssets', - }), - sumERC4626VaultsExport({ - vaults: totalSupplyVaults, - tokenAbi: 'asset', - balanceAbi: 'totalSupply', - }), - sumTokensExport({ owners: [claimableSilo, pendingSilo], tokens: [WETH] }), -]); -module.exports['ethereum'] = { tvl }; - -module.exports.hallmarks = [ - [1710115200, 'Beta test closing'], - [1712361600, 'ETH Boosted Vault Release'], - [1718927999, 'Symbiotic LRT Vault Release'], - [1734454404, 'Migration to InceptionLRT'], -]; diff --git a/projects/amphora/index.js b/projects/amphora/index.js deleted file mode 100644 index f0048386eab..00000000000 --- a/projects/amphora/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -async function tvl(api) { - const ownerAddress = "0xA905f9f0b525420d4E5214E73d70dfFe8438D8C8"; - const tokensAndOwners = [ - ["0xb2f30a7c980f052f02563fb518dcc39e6bf38175", "0xD842D9651F69cEBc0b2Cffc291fC3D3Fe7b5D226"], - [ADDRESSES.ethereum.SNX, ownerAddress], - ["0xba100000625a3754423978a60c9317c58a424e3D", ownerAddress], - [ADDRESSES.ethereum.CRV, ownerAddress,], - [ADDRESSES.ethereum.CVX, ownerAddress,], - ["0xD842D9651F69cEBc0b2Cffc291fC3D3Fe7b5D226", ownerAddress,] - ]; - - const balances = await sumTokens2({ api, tokensAndOwners }) - - const tokens = await api.call({ - target: "0xb688801cadb4ddb6980bb777d42972c24f920855", - abi: "address[]:getEnabledTokens" - }) - const deposited = await api.multiCall({ - abi: "function tokenTotalDeposited(address _tokenAddress) external view returns (uint256 _totalDeposited)", - calls: tokens.map(i => ({ target: "0xb688801cadb4ddb6980bb777d42972c24f920855", params: [i] })) - }) - tokens.forEach((element, i) => { - balances[element] = deposited[i] - }); - - return balances -} - -module.exports = { - methodology: 'Coins deposited as collateral and snxUSD', - ethereum: { - tvl - }, -} diff --git a/projects/ampleswap/index.js b/projects/ampleswap/index.js deleted file mode 100644 index 085021d75d1..00000000000 --- a/projects/ampleswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') - -const MasterChefContract = "0xF5987603323AA99DDe0777a55E83C82D59cCA272"; -const AMPLE = "0x19857937848c02afbde8b526610f0f2f89e9960d"; - -module.exports = { - methodology: `Uses factory(0x381fefadab5466bff0e8e96842e8e76a143e8f73) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0x381fefadab5466bff0e8e96842e8e76a143e8f73', useDefaultCoreAssets: true }), - staking: staking(MasterChefContract, AMPLE), - }, - alv: { tvl: getUniTVL({ factory: '0x01dC97C89DF7d3C616a696dD53F600aB3FF12983', useDefaultCoreAssets: true }), }, - dsc: { tvl: () => ({}) } - // dsc: { tvl: getUniTVL({ factory: '0x232Ba9f3B3643ab28d28ED7ee18600708D60E5fe', useDefaultCoreAssets: true, }), }, -}; diff --git a/projects/amplifyfinance/index.js b/projects/amplifyfinance/index.js deleted file mode 100644 index 854e8f08f03..00000000000 --- a/projects/amplifyfinance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const AMPLIFY_VAULT = '0x89678540206E7d6964a4e22aE5Cf4ac55926651A'; //AmplifyFinance Amplified ETH vault - -async function tvl(api) { - // Get all strategies inside the vault - const strategies = await api.call({ abi: "address[]:get_default_queue", target: AMPLIFY_VAULT, }); - - // Get collateral balance for each strategy - const collateralBalances = await api.multiCall({ abi: "uint256:balanceOfCollateral", calls: strategies, }); - - // Add the collateral balances as wstETH to the balances - api.add(ADDRESSES.ethereum.WSTETH, collateralBalances); -} - -module.exports = { - methodology: 'Calculates TVL by summing balanceOfCollateral() across all strategies in the vault\'s default queue, denominated in wstETH.', - ethereum: { - tvl, - } -}; diff --git a/projects/amply-finance/index.js b/projects/amply-finance/index.js deleted file mode 100644 index 5874c27456a..00000000000 --- a/projects/amply-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { aaveExports } = require('../helper/aave'); -const methodologies = require('../helper/methodologies'); - -module.exports = { - methodology: methodologies.lendingMarket, - cronos_zkevm: aaveExports(undefined, undefined, undefined, ['0x47656eb2A31094b348EBF458Eccb942d471324eD'], { v3: true, }) -} \ No newline at end of file diff --git a/projects/amulet-finance/index.js b/projects/amulet-finance/index.js deleted file mode 100644 index 2ff8f98074c..00000000000 --- a/projects/amulet-finance/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const { PromisePool } = require("@supercharge/promise-pool"); -const { queryContract } = require("../helper/chain/cosmos"); - -const coinGeckIds = { - atom: "cosmos", - eth: "ethereum", - tia: "celestia", -}; - -function synthDenomToTicker(denom) { - const parts = denom.split("/"); - - if (parts.length != 3) throw new Error(`unexpected synthetic denom: ${denom}`); - - return denom.split("/").at(-1); -} - -async function getVaultStates(api, vaultSynthPairs) { - const { results, errors } = await PromisePool.for(vaultSynthPairs).process( - async ([vault, synthTicker]) => { - const state = await queryContract({ - contract: vault, - chain: api.chain, - data: { state: {} }, - }); - - return { vault, synthTicker, totalDeposits: state.total_deposits }; - }, - ); - - if (errors && errors.length) throw errors[0]; - - return results; -} - -function getTvl({ hub, mint }) { - return async (api) => { - const listVaultsPromise = queryContract({ - contract: hub, - chain: api.chain, - data: { list_vaults: {} }, - }); - - const allAssetsPromise = queryContract({ - contract: mint, - chain: api.chain, - data: { all_assets: {} }, - }); - - let [listVaultsRes, allAssetsRes] = await Promise.all([listVaultsPromise, allAssetsPromise]); - - // synthTicker => { underlyingTicker, decimals } - const assets = Object.fromEntries( - allAssetsRes.assets.map((asset) => [ - asset.ticker, - { underlyingTicker: asset.ticker.slice(2), decimals: asset.decimals }, - ]), - ); - - // [ [vaultAddress, synthTicker ] ] - const vaultSynthPairs = listVaultsRes.vaults.map((metadata) => [ - metadata.vault, - synthDenomToTicker(metadata.synthetic), - ]); - - // [{ vault, synthTicker, totalDeposits }] - const vaults = await getVaultStates(api, vaultSynthPairs); - - for (const v of vaults) { - const asset = assets[v.synthTicker]; - - const balance = Number(v.totalDeposits) / Math.pow(10, asset.decimals); - - const coinGeckoId = coinGeckIds[asset.underlyingTicker]; - - // ignore vaults with assets that don't have a CG mapping - if (!coinGeckoId) continue; - - api.addCGToken(coinGeckoId, balance); - } - }; -} - -module.exports = { - neutron: { - tvl: getTvl({ - hub: "neutron16d4a7q3wfkkawj4jwyzz6g97xtmj0crkyn06ev74fu4xsgkwnreswzfpcy", - mint: "neutron1shwxlkpdjd8h5wdtrykypwd2v62z5glr95yp0etdcspkkjwm5meq82ndxs", - }), - }, -}; diff --git a/projects/amulet-liquidity-staking/index.js b/projects/amulet-liquidity-staking/index.js deleted file mode 100644 index 240d31c1681..00000000000 --- a/projects/amulet-liquidity-staking/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const BN = require("bn.js"); -const { PublicKey } = require("@solana/web3.js") -const { getConnection } = require("../helper/solana"); - -async function tvl() { - const connection = getConnection(); - const metadataState = await connection.getAccountInfo(new PublicKey("DEg9mNnxwqJQiYz2mXpVJmq8Yyx14oZ2SaYpHS7mB2mx")); - const posSolVirtualAmount = metadataState.data.slice(129, 137); - posSolVirtualAmount.reverse(); - - const liqSolAmount = metadataState.data.slice(307, 315); - liqSolAmount.reverse(); - - const posState = await connection.getAccountInfo(new PublicKey("CaxYodGBcen2MVPSM1SKdAMHC2csnPSvLAZu2vkVT1H2")); - const totalActiveBalance = posState.data.slice(160, 168); - totalActiveBalance.reverse(); - - const accountList = ["632JbevHriKtPvxncKJYa5asT76Rm77Tnrvncscufusg", "3eXy94aq5sGN3pZiJBzM6LVP4W7vNPoNbyPkpqSwBn8u", "3snom88cEW4WtXH7pHEyYHr76oMVtYqAMdJ4BtBWWaC9"] - const accountSolBalances = await Promise.all(accountList.map(async(x) => new BN((await connection.getAccountInfo(new PublicKey(x))).lamports))) - const solAmount = [new BN(posSolVirtualAmount), new BN(liqSolAmount), new BN(totalActiveBalance), ...accountSolBalances] - - const tvlSOL = solAmount.reduce((acc,x) => acc.add(x), new BN(0)).div(new BN(1000000000)).toNumber() - - return { - 'solana': tvlSOL - } -} - -module.exports = { - timetravel: false, - solana:{ - tvl - }, - methodology: `Amulet enables users to earn PoS staking rewards on Solana by staking SOL and mint amtSOL. Hence, the amount of SOL staked are counted as our TVL for Amulet Liquidity Staking which the value are calculated based on the price get from Coingecko.`, - hallmarks: [ - [1667692800, "FTX collapse"] - ], -} diff --git a/projects/amulet-protocol/index.js b/projects/amulet-protocol/index.js deleted file mode 100644 index 58eee69a48a..00000000000 --- a/projects/amulet-protocol/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const BN = require("bn.js"); -const { PublicKey } = require("@solana/web3.js") -const { getConnection, sumTokens2 } = require("../helper/solana"); - -async function tvl() { - const connection = getConnection(); - const stakingInstanceState = await connection.getAccountInfo(new PublicKey("HNhPNHkp3RobeJzepNzyVyewtAaoF3QCCvtBTxKJVnRX")); - const liqStakedAmtSOLAmount = stakingInstanceState.data.slice(203, 211); - liqStakedAmtSOLAmount.reverse(); - const balances = { - 'solana:SoLW9muuNQmEAoBws7CWfYQnXRXMVEG12cQhy6LE2Zf': new BN(liqStakedAmtSOLAmount).toString() - } - return sumTokens2({ balances, tokenAccounts: ['BQUHYmLH8St7j9kTWExd19QjoDuxrha7Mgp32M7zvS84', '9QPcNgmkRAQncEnTBDXvWq2H7LY4VLNJfiVYD9c3eL8D'] }) -} - -module.exports = { - timetravel: false, - solana:{ - tvl - }, - methodology: `Amulet provides solution which allows user to to earn rewards from underwriting covers with SOL derivatives token (amtSOL). Hence, the amount of SOL derivatives staked are counted as our TVL which the value are calculated based on the price get from Coingecko.`, - hallmarks: [ - [1667692800, "FTX collapse"] - ], -} diff --git a/projects/amulet-v2/erc4626.json b/projects/amulet-v2/erc4626.json deleted file mode 100644 index b92419174d9..00000000000 --- a/projects/amulet-v2/erc4626.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalAssets": "uint256:totalAssets", - "asset": "address:asset" -} \ No newline at end of file diff --git a/projects/amulet-v2/index.js b/projects/amulet-v2/index.js deleted file mode 100644 index ce72f872876..00000000000 --- a/projects/amulet-v2/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const erc4626Abi = require("./erc4626.json"); -const { sumTokens2 } = require("../helper/solana"); -const { sumTokens2: sumTokensEVM } = require("../helper/unwrapLPs"); - -const erc4626Vaults = { - "ethereum": [ - "0x5eF17EE66A64fd5B394362D98f51ba155AeCe9ce", - "0x6030189834b69919bffBC25E01C596EA5858e46c", - "0x6B0825b3E079fad25086431F7154acB3073f933B", - "0xf06e004caB43F326AA3668C8723A8bDBCF5bD165", - "0xfCB69E5E535e04A809dC8Af7eba59c2FED4b2868", - ], - "optimism": [ - "0x2CD4B4EB84028F70e1090B053859B813ef9ad160", - "0xAD1999728F840082aC3Bf9eA09b30D19a7923bbC", - "0xCE05f5d12e7DaF74C2239A2264c99d38176ac3B4", - "0xa850550A115062a860A951a3f77bFD4c22A441fA", - ] -} - -const getERC4626VaultFundsByChain = async (api) => { - const vaults = erc4626Vaults[api.chain]; - await api.erc4626Sum({ calls: vaults ?? [], isOG4626: true }) -} - -const erc4626VaultsIdle = { - "ethereum": [ - "0xFDAD59EF0686C3Da702b7D651a3bD35a539c8Bc4", - "0x5e2dA626313ceF5F67D21616df6E7a531e41c3F9", - "0x695E5C49eAeEb5333e2AF0dDb27722D36E9324fa", - "0x4a728224B87C63b53C5FBcacd95b5c3f0c9f5B22", - ], - "polygon_zkevm": [ - "0x923917304012C7E14d122eb1D6A8f49f608bC06B", - "0x53DAC8d715350AFb3443D346aa3Abd73dA4534F0", - ], - "optimism": [ - "0x923917304012C7E14d122eb1D6A8f49f608bC06B", - "0x53DAC8d715350AFb3443D346aa3Abd73dA4534F0", - "0x07E7d45bC488dE9eeD94AA5f9bb8C845F4b21aFa", - "0xE92B7a8eb449AbA20DA0B2f5b2a4f5f25F95F3C4", - "0xfCB69E5E535e04A809dC8Af7eba59c2FED4b2868", - "0xf06e004caB43F326AA3668C8723A8bDBCF5bD165", - ] -} - -const idleCdos = { - "ethereum": [ - "0xc4574C60a455655864aB80fa7638561A756C5E61", - "0xE7C6A4525492395d65e736C3593aC933F33ee46e" - ], - "polygon_zkevm": [ - "0x6b8A1e78Ac707F9b0b5eB4f34B02D9af84D2b689" - ], - "optimism": [ - "0xe49174F0935F088509cca50e54024F6f8a6E08Dd", - "0x94e399Af25b676e7783fDcd62854221e67566b7f", - "0x8771128e9E386DC8E4663118BB11EA3DE910e528" - ] -} - -const getERC4626IdleVaultFundsByChain = async (api) => { - const chain = api.chain - const trancheTokensMapping = {} - - const cdos = idleCdos[chain] - const [token, aatrances, bbtrances, aaprices, bbprices] = await Promise.all(["address:token", "address:AATranche", "address:BBTranche", "uint256:priceAA", "uint256:priceBB"].map(abi => - api.multiCall({ abi, calls: cdos }))) - const tokensDecimalsResults = await api.multiCall({ abi: 'erc20:decimals', calls: token }) - - cdos.forEach((cdo, i) => { - const tokenDecimals = tokensDecimalsResults[i] || 18 - trancheTokensMapping[aatrances[i]] = { - token: token[i], - decimals: tokenDecimals, - price: aaprices[i] / (10 ** tokenDecimals), - } - trancheTokensMapping[bbtrances[i]] = { - token: token[i], - decimals: tokenDecimals, - price: bbprices[i] / (10 ** tokenDecimals), - } - }) - - const vaults = erc4626VaultsIdle[chain]; - const [_vaultAssets, _totalVaultFunds] = await Promise.all([ - api.multiCall({ abi: erc4626Abi.asset, calls: vaults }), - api.multiCall({ abi: erc4626Abi.totalAssets, calls: vaults }), - ]) - return _totalVaultFunds.map((it, idx) => { - if (!it) return null - const trancheToken = _vaultAssets[idx] - const { token, decimals, price } = trancheTokensMapping[trancheToken] - const underlyingTokenBalance = it * price / (10 ** (18 - decimals)) - api.add(token, underlyingTokenBalance) - }); -} - -async function tvl(api) { - await getERC4626VaultFundsByChain(api); - if (idleCdos[api.chain]) - await getERC4626IdleVaultFundsByChain(api); - - return sumTokensEVM({ api, resolveLP: true, }) -} - -async function SolanaTvl() { - const tokensAndOwners = [ - ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', 'AkkGFKVJY8o5MRqBf2St4Q8NQnfTTi2bSssMMk9zXAMr'], - ['J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn', '86vJYeZiXc9Uq1wmtLzERDfQzAnpoJgs2oF5Y4BirKkn'], - ['bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1', '8HpEPmkKb6T7xNDzhheWhK2P6BEdp2nGv7JbcEoDmDST'], - ['SoLW9muuNQmEAoBws7CWfYQnXRXMVEG12cQhy6LE2Zf', '6iK6zK2nDQswaCrpELNYnnbuo4vwzpFsEpZYyqwpRWbD'] - ] - - return sumTokens2({ tokensAndOwners }) -} - -async function staking() { - const tokensAndOwners = [ - ['AMUwxPsqWSd1fbCGzWsrRKDcNoduuWMkdR38qPdit8G8', 'NEFYtG7y49aLYbyPqQHAkzzCSms5VmVtA6bJWHJErSD'] - ] - - return sumTokens2({ tokensAndOwners }) -} - -module.exports = { - ethereum: { tvl }, - polygon_zkevm: { tvl }, - optimism: { tvl }, - solana: { tvl: SolanaTvl, staking, } -} \ No newline at end of file diff --git a/projects/amun/abi.json b/projects/amun/abi.json deleted file mode 100644 index 19e467e295d..00000000000 --- a/projects/amun/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getTokens": "address[]:getTokens" -} \ No newline at end of file diff --git a/projects/amun/index.js b/projects/amun/index.js deleted file mode 100644 index 118545c9853..00000000000 --- a/projects/amun/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const solana = require('../helper/solana'); - -async function tvl(api) { - return solana.sumTokens2({ tokenAccounts: ['GprM9vgGpUbNU4N5SbDAigL1JYCvQiDop28cmEQ7Bw2w'] }) -} - -module.exports = { - deadFrom: '2023-03-22', - timetravel: false, - ethereum: { tvl: () => ({}), }, - polygon: { tvl: () => ({}), }, - solana: { tvl, }, - hallmarks: [ - ['2023-03-22', 'Project is sunset!'], - // ['2022-12-26', 'Hacked for 300k!'], - ], - methodology: `Amun Tokens has three investment strategies available, which are the Defi Token Index(DFI), the Polygon Ecosystem Index (PECO) and Solana Ecosystem Index (SOLI). Each strategy has its own address where the underlying tokens are held. To get the TVL for the DFI and PECO, first of all, an on-chain call is made using the function 'tvl()', which first retrieves each token that is held within the strategy addresses and then calls 'balanceOf()' to get the balances of these tokens which are added and used as TVL. For SOLI, getTokenSupply helper method is called to get the total supply of the token, and then multiplied at the current market rate of the token, retrieved from our API endpoint.`, -}; diff --git a/projects/amyfinance/index.js b/projects/amyfinance/index.js deleted file mode 100644 index b8d2e5fdb86..00000000000 --- a/projects/amyfinance/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const tokens = [ - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.optimism.DAI, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.WETH, - "0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0", - ADDRESSES.arbitrum.LINK, - ADDRESSES.arbitrum.MIM, - "0xd4d42F0b6DEF4CE0383636770eF773390d85c61A", -]; -const aibContracts = [ - "0xe76a422C30B09f8d20ad5d8A9D21206835F6c692", //aibUSDC - "0xE3575B6226a7965f5289C2C6eF2f9C89b6d70941", //aibUSDT - "0xa6F7A3e16fFC0fE08C43e72C5BB5E15d98c79a05", //aibDAI - "0x2b3554d6810FA2CEc563b0bC731AbAC60A717f3B", //aibWBTC - "0x8C1b5FE3A884118569707d07049fbc56A8314CcE", //aibWETH - "0xE85B64dDA773CB18E0F2a2211Da60DaA536C0284", //aibUNI - "0x9Dd192fca6A1E7c8a3C014a35087dE3fb9Da14E5", //aibLINK - "0x381F8482ee0a12202F2A3735370859f5709B12d2", //aibMIM - "0x52444Aa321dfD7b24aA263Af6F7DCC26565f3629", //aibSUSHI -] - -module.exports = { - arbitrum: { tvl: sumTokensExport({ owners: aibContracts, tokens }), }, - deadFrom: '2022-10-23' -} diff --git a/projects/anchor/index.js b/projects/anchor/index.js deleted file mode 100644 index 9fd2ddc1bb6..00000000000 --- a/projects/anchor/index.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - timetravel: false, - methodology: `We use the Anchor subgraph to get the amount of bLUNA and bETH used as collateral on anchor and the UST that is on anchor but has not been lent, we then use Coingecko to price the tokens in USD.`, - terra: { - tvl: () => ({}), - // borrowed - }, - avax: { - tvl: () => ({}), - }, - deadFrom: '2022-05-26', - hallmarks: [ - [1651881600, "UST depeg"], - ] -} diff --git a/projects/anchorswap/index.js b/projects/anchorswap/index.js deleted file mode 100644 index acea53f5872..00000000000 --- a/projects/anchorswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'bsc', - masterchef: '0x23f7F3119d1b5b6c94a232680e2925703C4ebbF5', - nativeToken: '0x4aac18De824eC1b553dbf342829834E4FF3F7a9F', -}) diff --git a/projects/ancient8/index.js b/projects/ancient8/index.js deleted file mode 100644 index c1857442819..00000000000 --- a/projects/ancient8/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x12d4E64E1B46d27A00fe392653A894C1dd36fb80", - "0x639F2AECE398Aa76b07e59eF6abe2cFe32bacb68", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/ancora/index.js b/projects/ancora/index.js deleted file mode 100644 index f421738c288..00000000000 --- a/projects/ancora/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") -module.exports={ - misrepresentedTokens: true, - linea:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xE7aC188E018f954A83c157ac686De7F66e819a51' }), - }, -} \ No newline at end of file diff --git a/projects/andromeada/index.js b/projects/andromeada/index.js deleted file mode 100644 index 6b86ed0bd58..00000000000 --- a/projects/andromeada/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'base': '0xB9e611CaD79f350929C8E36cAbbe5D2Ce9502D51' -}, { hasStablePools: true, }) \ No newline at end of file diff --git a/projects/anedak/index.js b/projects/anedak/index.js deleted file mode 100644 index 29440e28eb9..00000000000 --- a/projects/anedak/index.js +++ /dev/null @@ -1,126 +0,0 @@ -const { fetchLocal, mkMeta } = require("../helper/pact") -const { get } = require('../helper/http') - -const chainId = "3"; -const network = `https://api.chainweb.com/chainweb/0.0/mainnet01/chain/${chainId}/pact`; -const GAS_PRICE = 0.00000001; -const creationTime = () => Math.round(new Date().getTime() / 1000) - 10; - -const getReserve = (tokenData) => { - return parseFloat(tokenData.decimal ? tokenData.decimal : tokenData); -}; - -const pairTokens = { - "coin:free.anedak": { - name: "coin:free.anedak", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "ADK", - code: "free.anedak", - }, - }, - "coin:free.babena": { - name: "coin:free.babena", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "BABE", - code: "free.babena", - }, - }, - "coin:runonflux.flux": { - name: "coin:runonflux.flux", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "FLUX", - code: "runonflux.flux", - }, - }, - "coin:kdlaunch.token": { - name: "coin:kdlaunch.token", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "KDL", - code: "kdlaunch.token", - }, - }, -}; - -const getPairList = async () => { - const pairList = await Promise.all( - Object.values(pairTokens).map(async (pair) => { - let data = await fetchLocal( - { - pactCode: ` - (use free.exchange) - (let* - ( - (p (get-pair ${pair.token0.code} ${pair.token1.code})) - (reserveA (reserve-for p ${pair.token0.code})) - (reserveB (reserve-for p ${pair.token1.code})) - (totalBal (free.tokens.total-supply (free.exchange.get-pair-key ${pair.token0.code} ${pair.token1.code}))) - )[totalBal reserveA reserveB]) - `, - meta: mkMeta("", chainId, GAS_PRICE, 3000, creationTime(), 600), - }, - network - ); - - if (data.result.status === "success") { - return { - reserves: [ - getReserve(data.result.data[1]), - getReserve(data.result.data[2]), - ], - }; - } - - throw new Error("Pair reserves fetch failed"); - }) - ); - return pairList; -}; - -async function fetch() { - const pairList = await getPairList(); - const anedakPairKdaAmount = pairList[0].reserves[0]; - const babenaPairKdaAmount = pairList[1].reserves[0]; - const fluxPairKdaAmount = pairList[2].reserves[0]; - const kdlPairKdaAmount = pairList[3].reserves[0]; - - /* - * value of each pool taken to be twice the value of its KDA - * since the only more liquid DEX on Kadena is Kaddex, which only has KDA/FLUX pair - */ - const tvl = - 2 * - (anedakPairKdaAmount + - babenaPairKdaAmount + - fluxPairKdaAmount + - kdlPairKdaAmount); - - return { - kadena: tvl - }; -} - -module.exports = { - deadFrom: '2024-08-30', - timetravel: false, - misrepresentedTokens: true, - methodology: "TVL accounts for the liquidity on all Anedak AMM pools, with all values calculated in terms of KDA price.", - kadena: { - tvl: () => ({}), - }, -}; diff --git a/projects/anemoy-capital/index.js b/projects/anemoy-capital/index.js deleted file mode 100644 index 6a7aeb34e34..00000000000 --- a/projects/anemoy-capital/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const sdk = require('@defillama/sdk') -const ADDRESSES = require('../helper/coreAssets.json') - -const USDC = ADDRESSES.ethereum.USDC - -const LTF = { - ethereum: '0x8c213ee79581ff4984583c6a801e5263418c4b86', - base: '0x8c213ee79581ff4984583c6a801e5263418c4b86', - celo: '0x27e8c820d05aea8824b1ac35116f63f9833b54c8', -} - -const abi = 'function vault(address asset) view returns (address)' - -const getNav = async (timestamp) => { - const chain = 'ethereum' - const ethApi = new sdk.ChainApi({ chain, timestamp }) - await ethApi.getBlock() - const vault = await ethApi.call({ target: LTF[chain], params: [USDC], abi }) - return ethApi.call({ target: vault, abi: 'uint256:pricePerShare' }) -} - -const tvl = async (api) => { - const { chain } = api - const nav = await getNav(api.timestamp) - const balance = await api.call({ target: LTF[chain], abi: 'erc20:totalSupply' }) - api.add(USDC, balance * nav / 1e6, { skipChain :true }) -} - -Object.keys(LTF).forEach((chain) => { - module.exports[chain] = { tvl } -}) - -module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/anetabtc/index.js b/projects/anetabtc/index.js deleted file mode 100644 index b6ce9be9ff8..00000000000 --- a/projects/anetabtc/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') -const { getTokensMinted } = require("../helper/chain/cardano/blockfrost"); - -const cBTC = "4190b2941d9be04acc69c39739bd5acc66d60ccab480d8e20bc87e3763425443" - -async function tvl(){ - return { bitcoin : (await getTokensMinted(cBTC)/100_000_000) } -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - staking: sumTokensExport({ tokens: ['b34b3ea80060ace9427bda98690a73d33840e27aaa8d6edb7f0c757a634e455441'], owner: 'addr1w8p79rekquuw5kmdg4z36y9gpnm88k5huddwqluk9mjjeqgc3xmss', logCalls: true }) - }, - ergo: { - staking: sumTokensExport({ tokens: ['472c3d4ecaa08fb7392ff041ee2e6af75f4a558810a74b28600549d5392810e8'], owner: '5ASYVJ2w8tH3bDQx5ZLz6rZUdokD1kmTXSRZ8GfrsAUW4vqy9eg5omtTYVzY22ibHANf7GgSc2E5FiThgo8qXzWpU3RDLohN277hksbAf9yykajXbYPUaXUeMPfSXbS1GdE4y2GoYKaXHR3H57MV5CDZE58YteqWe3XVXzmMvj1192AD7UZ1N6nguRfjgijxEWTrLq2ZrykjRAut2JBGYHanAKn46tYWW3chpxNosXG7ZW2ShDzKju2ttHhfxeZVMBydryuoEya5E9KVagjsfa9E2qPUdLpbh8enppVWcwoQ4GF1ktgzSX32QbfKhfpD23iWQixThUbcCca14FjXDt94GVFPuhAT5tQyiKen863Cq5eRAEgsQ7otX6pWa32Q28sxSF9Az4abwiJKNbFhbhb3cDCs6A45ZnW6aB6AkfwTJSAZ2ZzqqG7LXT4HdxNpdmiwno9sJWxPf2PC4vRhVqBPdxxyCgoodjyutf4UuinSCibhfqdhUJLc1JM8zX9UcD699mChgUZoKE8kXD4soVGSgQD3qfGXC6RP7n8dtowArNLm3H5QJ3EobDCbEgECLHFaHN2BPwwWscAt5eejKeFvkp3CuQ3mqFW7vfQG4n9tTLnshj8cjxnpkBdfFKC83sW8A3AoZAX4K1UrhndfLSFh4w', logCalls: true }) - } -} \ No newline at end of file diff --git a/projects/angel-protocol/index.js b/projects/angel-protocol/index.js deleted file mode 100644 index f415232393c..00000000000 --- a/projects/angel-protocol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - timetravel: false, - methodology: 'TVL takes total apANC in the contract and returns AnchorUST value', - terra: { - tvl: () => ({}), - }, - hallmarks:[ - [1651881600, "UST depeg"], - ] -} - -module.exports.deadFrom = '2022-05-09' \ No newline at end of file diff --git a/projects/angle/addresses.js b/projects/angle/addresses.js deleted file mode 100644 index 6f2cadb65e2..00000000000 --- a/projects/angle/addresses.js +++ /dev/null @@ -1,251 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const TreasuryTokenAddresses = { - governor: { - arbitrum: [ - ADDRESSES.arbitrum.USDC, - '0xe4DDDfe67E7164b0FE14E218d80dC4C08eDC01cB', - // '0xFA5Ed56A203466CbBC2430a43c66b9D8723528E7', // agEUR - ], - ethereum: [ - // '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8', // agEUR - '0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c', - ADDRESSES.ethereum.CRV, - '0xc00e94Cb662C3520282E6f5717214004A7f26888', - ADDRESSES.ethereum.CVX, - '0x875773784Af8135eA0ef43b5a374AaD105c5D39e', - '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490', - ADDRESSES.ethereum.FXS, - '0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F', - '0x4da27a545c0c5B758a6BA100e3a049001de870f5', - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - '0xBa3436Fd341F2C8A928452Db3C5A3670d1d5Cc73', - '0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC', - '0xD1b5651E55D4CeeD36251c61c50C889B36F6abB5', - '0x402F878BDd1f5C66FdAF0fabaBcF74741B68ac36', - '0x2F123cF3F37CE3328CC9B5b8415f9EC5109b45e7', - ], - optimism: [ - '0x3c8b650257cfb5f272f799f5e2b4e65093a11a05', - // '0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED', // agEUR - ], - polygon: [ - ADDRESSES.polygon.USDC, - // '0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4' - ], - avax: [ - // '0xAEC8318a9a59bAEb39861d10ff6C7f7bf1F96C57', // agEUR - ], - xdai: [ - // '0x4b1E2c2762667331Bc91648052F646d1b0d35984' - ], - bsc: [ - // '0x12f31B73D812C6Bb0d735a218c086d44D5fe5f89' - ], - celo: [ - // '0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049', // agEUR - ], - }, - guardian: { - arbitrum: [ - // '0xFA5Ed56A203466CbBC2430a43c66b9D8723528E7', - ADDRESSES.arbitrum.USDC, - '0x463913D3a3D3D291667D53B8325c598Eb88D3B0e', - ], - ethereum: [ - // '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8', - '0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c', - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.CRV, - ADDRESSES.ethereum.CVX, - '0x2F123cF3F37CE3328CC9B5b8415f9EC5109b45e7', - ], - optimism: [ - '0x1db2466d9f5e10d7090e7152b68d62703a2245f0', - ADDRESSES.optimism.USDC, - // '0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED', // agEUR - ], - polygon: [ - // '0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4' - ], - avax: [ - ADDRESSES.avax.USDC, - // '0xAEC8318a9a59bAEb39861d10ff6C7f7bf1F96C57', // agEUR - ], - xdai: [ - // '0x4b1E2c2762667331Bc91648052F646d1b0d35984' - ], - bsc: [ - // '0x12f31B73D812C6Bb0d735a218c086d44D5fe5f89', - ADDRESSES.bsc.USDT, - '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', - ], - celo: [ - // '0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049', // agEUR - '0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73' - ], - }, -}; - -const governorAddress = { - arbitrum: '0xAA2DaCCAb539649D1839772C625108674154df0B', - ethereum: '0xdC4e6DFe07EFCa50a197DF15D9200883eF4Eb1c8', - optimism: '0x3245d3204EEB67afba7B0bA9143E8081365e08a6', - polygon: '0xdA2D2f638D6fcbE306236583845e5822554c02EA', - avax: '0x43a7947A1288e65fAF30D8dDb3ca61Eaabd41613', - xdai: '0x0F70EeD1Bb51d5eDB1a2E46142638df959bAFD69', - bsc: '0x0128eA927198f39e4955DdB01Fd62E8De6B3e6a4', - celo: '0x2ba5a55DBDAD03023e6872A8D57c458E9399bFE1', -} - -const guardianAddress = { - arbitrum: '0x55F01DDaE74b60e3c255BD2f619FEbdFce560a9C', - ethereum: '0x0C2553e4B9dFA9f83b1A6D3EAB96c4bAaB42d430', - optimism: '0xD245678e417aEE2d91763F6f4eFE570FF52fD080', - polygon: '0x3b9D32D0822A6351F415BeaB05251c1457FF6f8D', - avax: '0xCcD44983f597aE4d4E2B70CF979597D63a10870D', - xdai: '0xf0A31faec2B4fC6396c65B1aF1F6A71E653f11F0', - bsc: '0x371Ac6dB8063e6076890ef032A4A3cFCF226F548', - celo: '0x434153aA505959BCD5aAa7c17445EB8d835086f5', -} - -const chains = [ - 'arbitrum', - 'ethereum', - 'optimism', - 'polygon', - 'avax', - 'xdai', - 'bsc', - 'celo', -] -const tokens = { - ethereum: { - EURA: '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8', - stEUR: ADDRESSES.celo.STEUR, - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', - bC3M: '0x2F123cF3F37CE3328CC9B5b8415f9EC5109b45e7', - EURC: '0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c', - bERNX: '0x3f95AA88dDbB7D9D484aa3D482bf0a80009c52c9', - steakUSDC: '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB', - bIB01: '0xCA30c93B02514f86d5C86a6e375E3A330B435Fb5', - }, - arbitrum: { - EURA: '0xFA5Ed56A203466CbBC2430a43c66b9D8723528E7', - stEUR: ADDRESSES.celo.STEUR, - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', - }, - optimism: { - EURA: '0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED', - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', - VELO: '0x3c8B650257cFb5f272f799F5e2b4e65093a11a05', - }, - polygon: { - EURA: '0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4', - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - }, - avax: { - sBUSD: ADDRESSES.avax.sBUSD, - EURA: '0xAEC8318a9a59bAEb39861d10ff6C7f7bf1F96C57', - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - }, - xdai: { - EURA: '0x4b1E2c2762667331Bc91648052F646d1b0d35984', - stEUR: ADDRESSES.celo.STEUR, - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', - }, - bsc: { - TUSD: ADDRESSES.bsc.TUSD, - EURA: '0x12f31B73D812C6Bb0d735a218c086d44D5fe5f89', - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - }, - celo: { - EURA: '0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049', - stEUR: ADDRESSES.celo.STEUR, - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', - }, - polygon_zkevm: { - EURA: '0xA61BeB4A3d02decb01039e378237032B351125B4', - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - }, - mantle: { - EURA: '0xA61BeB4A3d02decb01039e378237032B351125B4', - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - }, - linea: { - EURA: '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8', - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - base: { - EURA: '0xA61BeB4A3d02decb01039e378237032B351125B4', - USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', - }, - }, -} - -const treasuryTokens = (tokenSymbols) => { - const treasury = {} - tokenSymbols.forEach((tokenSymbol) => - chains.forEach((chain) => { - const token = - ADDRESSES?.[chain]?.[tokenSymbol] ?? - tokens?.[chain]?.[tokenSymbol] - - if (!treasury?.[chain]) treasury[chain] = [] - if (token) treasury?.[chain].push(token) - }) - ) - return treasury -} -const stablecoin = { - EUR: { - transmuter: '0x00253582b2a3FE112feEC532221d9708c64cEFAb', - treasury: '0x5f9F41497f9e11fd7D4c4B067413199682eE2CFF', - treasuryTokens: treasuryTokens([ - 'USDC', - 'USDT', - 'CRV', - 'CVX', - 'DAI', - // 'EURA', - 'WETH', - 'bC3M', - 'EURC', - 'VELO', - 'bERNX', - 'steakUSDC', - 'bIB01', - ]), - genesis: 1691656362, - }, - USD: { - transmuter: '0x222222fD79264BBE280b4986F6FEfBC3524d0137', - treasury: '0x57eedCB68445355e9C11A90F39012e8d4AAA89Fc', - treasuryTokens: treasuryTokens([ - 'USDC', - 'USDT', - 'CRV', - 'CVX', - 'DAI', - // 'USDA', - 'WETH', - 'VELO', - 'bERNX', - 'steakUSDC', - 'bIB01', - ]), - genesis: 1704912977, - }, -} -const stablecoins = Object.values(stablecoin) - -module.exports = { - stablecoins, - TreasuryTokenAddresses, - governorAddress, - guardianAddress, -} \ No newline at end of file diff --git a/projects/angle/index.js b/projects/angle/index.js deleted file mode 100644 index 7a8ee0e52c7..00000000000 --- a/projects/angle/index.js +++ /dev/null @@ -1,209 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking"); -const { getConfig } = require("../helper/cache"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getUniqueAddresses } = require("../helper/tokenMapping"); - -const { - TreasuryTokenAddresses, - governorAddress, - guardianAddress, - stablecoins, -} = require("./addresses.js"); - -const ANGLE = "0x31429d1856ad1377a8a0079410b297e1a9e214c2"; -const veANGLE = "0x0C462Dbb9EC8cD1630f1728B2CFD2769d09f0dd5"; - -const poolManagers_abi = { - getTotalAsset: "uint256:getTotalAsset", - token: "address:token", -}; - -const transmuter_abi = { - getCollateralList: "address[]:getCollateralList", -}; - -// get Borrowing module vault managers list -async function getVaultManagersFromAPI(api) { - let calls = []; - let result = await getConfig( - "angle/" + api.chain, - "https://api.angle.money/v1/vaultManagers?chainId=" + api.chainId - ); - - for (const data of Object.values(result)) { - const token = data.collateral; - if (token) calls.push([token, data.address]); - } - return calls; -} - -/** - * Returns all collaterals of a transmuter - * @param api - DefiLlama api - * @param transmuter - Contract address - * @param genesis - Timestamp to start getting collaterals from - * @returns [tokenAddress, ownerAddress] - */ -async function transmuterCollaterals(api, transmuter, genesis) { - if (api.chain !== "ethereum") return [] - if (api.timestamp <= genesis) return [] - - const collaterals = await api.call({ - abi: transmuter_abi["getCollateralList"], - target: transmuter, - }) - - return collaterals.map((collateral, i) => [collateral, transmuter]) -} - -async function tvl(api) { - const chain = api.chain; - - const balances = {}; - const tokensAndOwners = []; - if (chain === "ethereum") { - const agEUR = { - contract: "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8", - stableMasterFront: "0x5adDc89785D75C86aB939E9e15bfBBb7Fc086A87", - poolManagers: { - dai: "0xc9daabC677F3d1301006e723bD21C60be57a5915", // DAI - fei: "0x53b981389Cfc5dCDA2DC2e903147B5DD0E985F44", // FEI - frax: "0x6b4eE7352406707003bC6f6b96595FD35925af48", // FRAX - weth: "0x3f66867b4b6eCeBA0dBb6776be15619F73BC30A2", // WETH - }, - transmuter: "0x00253582b2a3FE112feEC532221d9708c64cEFAb", - }; - - // count the USDC in pool manager contract - tokensAndOwners.push([ - ADDRESSES.ethereum.USDC, - "0xe9f183FC656656f1F17af1F2b0dF79b8fF9ad8eD", - ]); // add USDC in USDC manager - const poolManagers = getUniqueAddresses( - [agEUR].map((i) => Object.values(i.poolManagers)).flat() - ); - - let assets = await api.multiCall({ - calls: poolManagers, - abi: poolManagers_abi["getTotalAsset"], - }); - let tokens = await api.multiCall({ - calls: poolManagers, - abi: poolManagers_abi["token"], - }); - - assets.forEach((output, i) => - sdk.util.sumSingleBalance(balances, tokens[i], output) - ); - - // AMOs - const EUROC = "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c"; - const curvePool = "0xBa3436Fd341F2C8A928452Db3C5A3670d1d5Cc73"; - const sdagEUREUROC = "0x63f222079608EEc2DDC7a9acdCD9344a21428Ce7"; - const cvxagEUREUROCstaker = "0xA91fccC1ec9d4A2271B7A86a7509Ca05057C1A98"; - const AngleagEUREUROCStaker = "0xC1e8Dba1cbF29f1CaA8343CAe96d5AdFD9bca736"; - // pool TVL - const [ - agEurBal, - eurocBal, - totPoolTokenSupply, - sdagEUREUROCTVL, - cvxagEUREUROCstakerTVL, - ] = await Promise.all([ - api.call({ - abi: "erc20:balanceOf", - target: agEUR.contract, - params: curvePool, - }), - api.call({ abi: "erc20:balanceOf", target: EUROC, params: curvePool }), - api.call({ abi: "erc20:totalSupply", target: curvePool }), - // Angle holdings of Curve agEUREUROC LP tokens (staked on Stake DAO and Convex) - api.call({ - abi: "erc20:balanceOf", - target: sdagEUREUROC, - params: AngleagEUREUROCStaker, - }), - api.call({ - abi: "erc20:balanceOf", - target: cvxagEUREUROCstaker, - params: AngleagEUREUROCStaker, - }), - ]); - const eurocBalance = - (eurocBal * (+sdagEUREUROCTVL + +cvxagEUREUROCstakerTVL)) / - totPoolTokenSupply; - sdk.util.sumSingleBalance(balances, EUROC, eurocBalance); - - //Fetch all collaterals from transmuters - const transmutersCollaterals = ( - await Promise.all( - stablecoins.map(({ transmuter, genesis }) => - transmuterCollaterals(api, transmuter, genesis) - ) - ) - ).flat(1) - - transmutersCollaterals.forEach((v) => tokensAndOwners.push(v)); - } - - // Borrowing module - tokensAndOwners.push(...(await getVaultManagersFromAPI(api))); - - // Treasury - Governor - const governorTokens = TreasuryTokenAddresses["governor"][chain]; - governorTokens.forEach((token) => { - tokensAndOwners.push([token, governorAddress[chain]]); - }); - - // Treasury - Guardian - const guardianTokens = TreasuryTokenAddresses["guardian"][chain]; - guardianTokens.forEach((token) => { - tokensAndOwners.push([token, guardianAddress[chain]]); - }) - - // Treasury - Stablecoins - stablecoins - .map(({ treasury, treasuryTokens }) => - treasuryTokens?.[chain]?.map((token) => [token, treasury]) - ) - .flat(1).forEach((tokenAndOwner) => tokensAndOwners.push(tokenAndOwner)) - - return sumTokens2({ - api, - balances, - tokensAndOwners, - }); -} - -/* -New networks will need to be added progressively. -If not, the API call defaults to mainnet and the blockchain calls fail and return an error. -*/ - -module.exports = { - hallmarks: [ - ["2023-03-13", "Euler was hacked"], - ["2023-08-02", "Migration to v2 (Transmuter)"], - ["2024-03-14", "Rebrading of agEUR to EURA"], - ], - ethereum: { - staking: staking(veANGLE, ANGLE), - }, - methodology: `TVL is retrieved on-chain by getting the total assets managed by the Transmuter, the balances of the vaultManagers of the Borrowing module and of the governance addresses of the protocol.`, -}; - -[ - "ethereum", - "polygon", - "optimism", - "arbitrum", - "avax", - "celo", - "bsc", - "xdai", -].forEach((chain) => { - if (!module.exports[chain]) module.exports[chain] = {}; - module.exports[chain].tvl = tvl; -}); diff --git a/projects/angles-liquid/index.js b/projects/angles-liquid/index.js deleted file mode 100644 index 969a67f1f32..00000000000 --- a/projects/angles-liquid/index.js +++ /dev/null @@ -1,17 +0,0 @@ -async function tvl(api) { - const registryAddress = '0x9786DB1486A2f67977eF1e3dfbd0Eb01e407Be7b'; - - const pools = await api.call({ abi: 'address[]:getPoolAddresses', target: registryAddress, }); - - const tokens = await api.fetchList({ lengthAbi: 'numTokens', itemAbi: 'tokens', calls: pools, groupedByInput: true, }) - const ownerTokens = pools.map((v, i) => [tokens[i], v]) - const blacklistedTokens = ['0xfa85fe5a8f5560e9039c04f2b0a90de1415abd70'] - return api.sumTokens({ ownerTokens, blacklistedTokens }) -} - - -module.exports = { - doublecounted: true, - start: '2025-01-01', - sonic: { tvl } -}; diff --git a/projects/angles/index.js b/projects/angles/index.js deleted file mode 100644 index 2e769eaaf60..00000000000 --- a/projects/angles/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const SONIC_SFC_CONTRACT = '0xFC00FACE00000000000000000000000000000000' -const vault = '0xe5203Be1643465b3c0De28fd2154843497Ef4269' -const S = ADDRESSES.null - -const abis = { - validatorsIndexed: "function validatorsIndexed(uint256) view returns (uint256 validatorId, uint8 weight, uint256 limit, uint256 SInTransit)", - numberOfValidators: "function numberOfValidators() view returns (uint256)", - getStake: "function getStake(address delegator, uint256 validatorID) view returns (uint256 stake)" -} - -const tvl = async (api) => { - const validators = await api.fetchList({ target: vault, lengthAbi: abis.numberOfValidators, itemAbi: abis.validatorsIndexed }) - const validatorsBalances = await api.multiCall({ calls: validators.map(({ validatorId }) => ({ target: SONIC_SFC_CONTRACT, params: [vault, validatorId] })), abi: abis.getStake }) - api.add(S, validatorsBalances) -} - -module.exports = { - sonic: { tvl } -} diff --git a/projects/angstrom/index.js b/projects/angstrom/index.js deleted file mode 100644 index 555098ed56f..00000000000 --- a/projects/angstrom/index.js +++ /dev/null @@ -1,64 +0,0 @@ - -const subgraphEndpoint = 'https://api.goldsky.com/api/public/project_cm97dvfxxyivn01xe2sda93ka/subgraphs/angstrom-mainnet/1.3.3/gn' -const subgraphQuery = (blockNumber) => { - return { - query: ` - { - pools(first: 1000, block: {number: ${blockNumber}}) { - token0 { - id - decimals - } - token1 { - id - decimals - } - totalValueLockedToken0 - totalValueLockedToken1 - } - } - - ` - } -}; - -async function getGraphBlock() { - const query = { - query: ` - { - _meta { - block { - number - } - } - } - ` - } - const response = await fetch(subgraphEndpoint, { - "body": JSON.stringify(query), - "method": "POST" - }) - const data = await response.json() - - return Number(data.data._meta.block.number) -} - -module.exports.ethereum = { - tvl: async (api) => { - const block = await api.getBlock(api.timestamp) - const graphBlock = await getGraphBlock() - - const response = await fetch(subgraphEndpoint, { - "body": JSON.stringify(subgraphQuery(block > graphBlock ? graphBlock : block)), - "method": "POST" - }) - const data = await response.json() - for (const pool of data.data.pools) { - api.add(pool.token0.id, Number(pool.totalValueLockedToken0) * (10**Number(pool.token0.decimals))) - api.add(pool.token1.id, Number(pool.totalValueLockedToken1) * (10**Number(pool.token1.decimals))) - } - }, -} - -module.exports.doublecounted = true -module.exports.methodology = 'Count total assets are deposited in Angstrom hooks on Uniswap v4 using subgraph provided by AngStrom.' diff --git a/projects/animal-farm-dog/index.js b/projects/animal-farm-dog/index.js deleted file mode 100644 index b985c15c9af..00000000000 --- a/projects/animal-farm-dog/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { unknownTombs } = require('../helper/unknownTokens') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = unknownTombs({ - shares: [ - '0x198271b868daE875bFea6e6E4045cDdA5d6B9829', // AFD - '0x9a3321E1aCD3B9F6debEE5e042dD2411A1742002', // AFP - ], - masonry: [ - '0x935B36a774f2c04b8fA92acf3528d7DF681C0297', // AFD - '0x7993a5a830a158961eff96280538960c875f6807', // Auto pool AFD - '0x1f8a98be5c102d145ac672ded99c5be0330d7e4f', // Pig Pen - ], - rewardPool: [ - '0xac93829C9708664af6B68662b52991b967493CD4', - '0x8536178222fC6Ec5fac49BbfeBd74CA3051c638f', - '0xc0e30e8cddae2b5c03f841d4e08cbe22e807426e', - '0x685bfdd3c2937744c13d7de0821c83191e3027ff', - '0x5916E7d97671dC0D249F01DfF3790570ED3805e7', - ], - chain: 'bsc', - lps: [ - '0xb5151965b13872b183eba08e33d0d06743ac8132', - '0xa0feB3c81A36E885B6608DF7f0ff69dB97491b58', - '0x2139c481d4f31dd03f924b6e87191e15a33bf8b4', - ], - useDefaultCoreAssets: true, -}) - -module.exports.bsc.tvl = sumTokensExport({ - tokensAndOwners: [ - [nullAddress, '0x4c004c4fb925be396f902de262f2817deebc22ec'], - ], - chain: 'bsc' -}) \ No newline at end of file diff --git a/projects/animal-farm/index.js b/projects/animal-farm/index.js deleted file mode 100644 index b43b121bc04..00000000000 --- a/projects/animal-farm/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef") - -const token = "0xdbdc73b95cc0d5e7e99dc95523045fc8d075fb9e"; -const masterchef = "0xe5d9c56B271bc7820Eee01BCC99E593e3e7bAD44"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", token, false) -} // node test.js projects/animal-farm/index.js \ No newline at end of file diff --git a/projects/animeswap/index.js b/projects/animeswap/index.js deleted file mode 100644 index c489a3df570..00000000000 --- a/projects/animeswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') -const { dexExport: dexExportSUI } = require('../helper/chain/sui') -const { mergeExports } = require('../helper/utils') - -const aptosExports = dexExport({ - account: '0x796900ebe1a1a54ff9e932f19c548f5c1af5c6e7d34965857ac2f7b1d1ab2cbf', - poolStr: 'AnimeSwapPoolV1::LiquidityPool', -}) - -const suiExprots = dexExportSUI({ - account: '0xdd7e3a071c6a090a157eccc3c9bbc4d2b3fb5ac9a4687b1c300bf74be6a58945', - poolStr: 'animeswap::LiquidityPool', -}) - -module.exports = mergeExports([suiExprots, aptosExports]) diff --git a/projects/ankr/abi.json b/projects/ankr/abi.json deleted file mode 100644 index ee441dd6bc7..00000000000 --- a/projects/ankr/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getProviderBalance": "function getProviderBalance(address provider) view returns (uint128 balance, uint128 totalCap)" -} \ No newline at end of file diff --git a/projects/ankr/index.js b/projects/ankr/index.js deleted file mode 100644 index d56fa0b489b..00000000000 --- a/projects/ankr/index.js +++ /dev/null @@ -1,113 +0,0 @@ -const { get } = require("../helper/http") -const abi = require("./abi.json"); - -let _response - -async function getTvls(serviceName, key) { - if (!_response) _response = get('https://api.staking.ankr.com/v1alpha/metrics') - const response = await _response - const data = response.services.find(i => i.serviceName === serviceName) - return data ? +data[key] : 0; -} - -async function getETHTvl() { - return { - ethereum: await getTvls("eth", "totalStaked"), - 'matic-network': await getTvls("polygon", "totalStaked"), - } -} - -async function getBscTvl() { - return { - binancecoin: await getTvls("bnb", "totalStaked"), - } -} - -async function getAvaxTvl() { - return { - 'avalanche-2': await getTvls("avax", "totalStaked"), - } -} - -async function getFlowTvl() { - return { - 'flow': await getTvls("flowevm", "totalStaked"), - } -} - -async function polkadot() { - return { - polkadot: await getTvls("dot", "totalStaked"), - } -} - -async function ksm() { - return { - kusama: await getTvls("ksm", "totalStaked"), - } -} - -async function getFantomTvl() { - return { - fantom: await getTvls("ftm", "totalStaked"), - } -} - -async function getGnosisTvl(api) { - - //Current Ankr Provider Address, there is a hard cap on how much mGNO each address can stake, other addresses might appear*/ - const ankrProviderAddress = "0x4069D8A3dE3A72EcA86CA5e0a4B94619085E7362" - - //Staking Pool Proxy Contract - const proxyStakingPool = "0xfd0f61255913825da1c194b985f04982966c34d6" - - //Staking Pool Logic Contract = "0xb6fcfcc497271d837c050ec912004bca0d70db0f" - //Provider Registry Proxy Contract = "0x8a2f83347f0e59faefe2320b7422f8aa432ce27a" - //Provider Registry Logic Contract = "0x6c6f910a79639dcc94b4feef59ff507c2e843929" - - - var providerBalance = (await api.call({ - abi: abi.getProviderBalance, - target: proxyStakingPool, - params: [ankrProviderAddress], - })) - - //providerBalance = [balance, totalCap] - var staked = providerBalance[0] / 1e18 - - //Staked amount is in mGNO, 32 mGNO = 1 GNO - var trueStaked = staked / 32 - - return { - gnosis: trueStaked - } -} - -module.exports = { - timetravel: false, - ethereum: { - tvl: getETHTvl, - }, - bsc: { - tvl: getBscTvl, - }, - avax:{ - tvl: getAvaxTvl, - }, - fantom: { - tvl: getFantomTvl, - }, - flow: { - tvl: getFlowTvl, - }, - polkadot: { - tvl: polkadot, - }, - kusama: { - tvl: ksm, - }, - xdai: { - tvl: getGnosisTvl, - }, - methodology: `We get the total staked amount and total staked USD from Ankr's official API. Gnosis: Gets staked amount from the staking pool.`, -}; diff --git a/projects/annex.js b/projects/annex.js deleted file mode 100644 index b4a799d9960..00000000000 --- a/projects/annex.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { compoundExports } = require('./helper/compound') - -const wBNB = ADDRESSES.bsc.WBNB; -const cBNB = "0xC5a83aD9f3586e143D2C718E8999206887eF9dDc"; - -const wCRO = ADDRESSES.cronos.WCRO_1; -const cCRO = "0x61FCA31c51aCc4CC683291Be936E6799AeAAFe41"; - -const wKAVA = ADDRESSES.kava.WKAVA; -const cKAVA = "0x5642Aa2fC7028a203C689Bf21c1a92861D8C449B"; - -module.exports = { - methodology: 'TVL is comprised of tokens deposited to the protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL. Data is pull from the Annex API "https://api.annex.finance/api/v1/governance/annex".', - bsc: compoundExports("0xb13026db8aafa2fd6d23355533dccccbd4442f4c", cBNB,), - cronos: compoundExports("0xbC1f72e751DE303Ff545D2E348fef2E84D493645", cCRO,), - kava: compoundExports("0xFb6FE7d66E55831b7e108B77D11b8e4d479c2986", cKAVA,), -}; // node test.js projects/annex.js - - -module.exports.bsc.borrowed = () => ({}) -module.exports.cronos.borrowed = () => ({}) -module.exports.kava.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/ante/index.js b/projects/ante/index.js deleted file mode 100644 index ef79007b870..00000000000 --- a/projects/ante/index.js +++ /dev/null @@ -1,135 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); -const { createIncrementArray } = require('../helper/utils'); - -const CONFIG = { - ethereum: { - factories: [ - { - factory: '0xa03492A9A663F04c51684A3c172FC9c4D7E02eDc', - version: '0.5.0', - }, - { - factory: '0x89E583A67B5FA1B39b8CE7E77654071c3a34cc48', - version: '0.6.0', - }, - ], - startBlock: 13234803, - gasToken: ADDRESSES.ethereum.WETH, - }, - avax: { - factories: [ - { - factory: '0x18aB6357f673696375018f006B86fE44F195DE1f', - version: '0.5.1', - }, - ], - startBlock: 16037331, - gasToken: ADDRESSES.avax.WAVAX, - }, - polygon: { - factories: [ - { - factory: '0xb4FD0Ce108e196d0C9844c48174d4C32Cd42F7bC', - version: '0.5.1', - }, - ], - startBlock: 32245577, - gasToken: ADDRESSES.polygon.WMATIC_2, - }, - bsc: { - factories: [ - { - factory: '0xb4FD0Ce108e196d0C9844c48174d4C32Cd42F7bC', - version: '0.5.1', - }, - ], - startBlock: 20928838, - gasToken: ADDRESSES.bsc.WBNB, - }, - fantom: { - factories: [ - { - factory: '0xb4FD0Ce108e196d0C9844c48174d4C32Cd42F7bC', - version: '0.5.1', - }, - ], - startBlock: 46604874, - gasToken: ADDRESSES.fantom.WFTM, - }, - optimism: { - factories: [ - { - factory: '0xb4FD0Ce108e196d0C9844c48174d4C32Cd42F7bC', - version: '0.5.2', - }, - { - factory: '0x4f2be0244146b4408154504a481c799ba1a9a355', - version: '0.6.0', - }, - ], - startBlock: 39240199, - gasToken: ADDRESSES.tombchain.FTM, - }, - arbitrum: { - factories: [ - { - factory: '0xb4FD0Ce108e196d0C9844c48174d4C32Cd42F7bC', - version: '0.5.2', - }, - ], - startBlock: 33495774, - gasToken: ADDRESSES.arbitrum.WETH, - }, - aurora: { - factories: [ - { - factory: '0xb4FD0Ce108e196d0C9844c48174d4C32Cd42F7bC', - version: '0.5.2', - }, - ], - startBlock: 80670441, - gasToken: '0xc9bdeed33cd01541e1eed10f90519d2c06fe3feb', - }, -}; - -Object.keys(CONFIG).forEach((chain) => { - const { factories } = CONFIG[chain]; - module.exports[chain] = { - tvl: async (api) => { - let currentRes; - const pools = []; - let tokens = [nullAddress]; - let i = 0; - const length = 10 - - for (const factory of factories) { - if (factory.version >= '0.6') { - const controller = await api.call({ target: factory.factory, abi: abis.getController, }); - const allowedTokens = await api.call({ target: controller, abi: abis.getAllowedTokens, }); - tokens.push(...allowedTokens); - } - do { - const calls = createIncrementArray(length).map((j) => ({ params: j + i * length, })); - const res = await api.multiCall({ - target: factory.factory, - abi: abis.allPools, - calls, - permitFailure: true, - }); - - currentRes = res.filter((i) => i) - pools.push(...currentRes); - i++; - } while (currentRes.length === length); - } - return sumTokens2({ tokens, owners: pools, api }); - }, - }; -}); - -const abis = { - allPools: 'function allPools(uint256) view returns (address)', - getController: 'function controller() view returns (address)', - getAllowedTokens: 'function getAllowedTokens() view returns (address[])', -}; diff --git a/projects/antex.js b/projects/antex.js deleted file mode 100644 index 4db28d81ff0..00000000000 --- a/projects/antex.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require('./helper/unwrapLPs') - -async function tvl(api) { - const owner = '0xCe43E857c92195BeB417a167B777a11720e6E355' - const tokens = [ - '0xf6088cbd287c4d5ab226aaa9b437b27f5dbb5207', - '0x9d1b716e6bb100d0dc441074dff0326c97ad57d4', - '0x34943E562503bfEc83250E5069AD21100c2830cD', - '0x68955aad77823983cda98d047298e74a2fb5bea8', - '0x6922E64BEe7CF22437eaC06A0063D138479e5cF8', - ] - return sumTokens2({ api, owner, tokens, resolveLP: true, }) -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/antfarm-finance/index.js b/projects/antfarm-finance/index.js deleted file mode 100644 index 97347a25bde..00000000000 --- a/projects/antfarm-finance/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { staking } = require("../helper/staking.js"); - -const config = { - arbitrum: "0x61f4ECD130291e5D5D7809A112f9F9081b8Ed3A5", - ethereum: "0xE48AEE124F9933661d4DD3Eb265fA9e153e32CBe", - polygon_zkevm: "0x8aF94528FBE3c4C148523E7aAD48BcEbcC0A71d7", - avax: "0xDC0BD72CdeF330786BF6f331a6Aca539c0bb4EaB", -}; - -const ethereum_staking = "0x6142b36B3dD1812993C2ecaa300b962A7Da0A900"; - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, -}; - -Object.keys(config).forEach((chain) => { - const factory = config[chain]; - if (config[chain] == config["ethereum"]) { - module.exports[chain] = { - tvl: getUniTVL({ - factory, - useDefaultCoreAssets: true, - }), - staking: staking( - "0x6142b36B3dD1812993C2ecaa300b962A7Da0A900", - "0x518b63Da813D46556FEa041A88b52e3CAa8C16a8", - "ethereum" - ), - }; - } else { - module.exports[chain] = { - tvl: getUniTVL({ - factory, - useDefaultCoreAssets: true, - }), - }; - } -}); - -//0xDCd2B58585DF999DD145e529f09e8ACaFA6cd244 diff --git a/projects/antihero-fi/index.js b/projects/antihero-fi/index.js deleted file mode 100644 index 6547afa8346..00000000000 --- a/projects/antihero-fi/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { compoundExports } = require("../helper/compound"); -const { staking } = require("../helper/staking"); - -const unitroller = "0x3646bF53C17EbBE4ce5e389Cd3c73Bc818Ff7e46"; - -module.exports = { - methodology: - "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - arbitrum: { - ...compoundExports(unitroller), - staking: staking( - [ - "0x2117E6449b3C50B70705bF1566383b1a94bd5192", - ], - "0x9d15bb4351E95A3FE213E48B410BA1aB7CF8Ce45" - ), - }, - deadFrom: "2023-08-27" -}; - -module.exports.arbitrum.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/antimatterDAO/abi.json b/projects/antimatterDAO/abi.json deleted file mode 100644 index d0ea9b93b40..00000000000 --- a/projects/antimatterDAO/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "TVL": "uint256:TVL", - "allCalls": "function allCalls(uint256) view returns (address)", - "allPuts": "function allPuts(uint256) view returns (address)", - "underlying": "address:underlying", - "length": "uint256:length" -} diff --git a/projects/antimatterDAO/index.js b/projects/antimatterDAO/index.js deleted file mode 100644 index e2cdb3c530f..00000000000 --- a/projects/antimatterDAO/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const antimatterStakingContract = "0xCB8429f22541E8F5cd8ea6c20BFFdcE7cDA65227"; -const dualInvestContract = "0x7E45149820Fa33B66DCD3fd57158A0E755A67a16"; -const dualInvestManagerAddress = "0x32275702f5A47Dcd89705c1ea4d47E99517b0e1a"; -const bscBTCContract = ADDRESSES.bsc.BTCB; -const bscUSDTContract = ADDRESSES.bsc.USDT; -const bscETHContract = ADDRESSES.bsc.ETH; -const kavaUSDTContract = ADDRESSES.moonriver.USDT; -const kavaBTCContract = ADDRESSES.moonriver.USDT; -const kavaDualinvertContract = "0x626B5c394542960faa9495e64E812d17D5B605F9"; - -const factory = "0x90183C741CC13195884B6E332Aa0ac1F7c1E67Fa"; - -const usdTokens = { - bsc: ADDRESSES.bsc.BUSD, - ethereum: ADDRESSES.ethereum.USDT, - arbitrum: ADDRESSES.arbitrum.USDT, - avax: ADDRESSES.avax.USDC_e, -} - -const dualInvest = { - bsc: { - tokens: [bscUSDTContract, bscBTCContract, bscETHContract,], - owners: [dualInvestContract,], - }, - kava: { - tokens: [kavaUSDTContract, kavaBTCContract,], - owners: [kavaDualinvertContract,], - }, -} - -module.exports = { - methodology: "Antimatter application is consist of four parts: 1) Antimatter structured product 2) Antimatter Bull and Bear 3) Antimatter Governance staking and 4) antimatter Nonfungible finance . There are assets locked in each part of the application on multiple chains. TVL is counted as the value of the underlying assets in each part of the application’s contract. Our TVL is calling contract from our smart contracts", -}; - -const chains = Object.keys(usdTokens) -chains.push('kava') - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) - -module.exports.ethereum.staking = staking(antimatterStakingContract, '0x9b99cca871be05119b2012fd4474731dd653febe') - - -async function tvl(api) { - let toa = [] - const usdToken = usdTokens[api.chain] - if (usdToken) { - const puts = await api.fetchList({ lengthAbi: abi.length, itemAbi: abi.allPuts, target: factory }) - const calls = await api.fetchList({ lengthAbi: abi.length, itemAbi: abi.allCalls, target: factory }) - const contracts = [...puts, ...calls] - toa = contracts.map(i => [usdToken, i]) - const underlyings = await api.multiCall({ abi: abi.underlying, calls: contracts }) - underlyings.forEach((v, i) => toa.push([v, contracts[i]])) - } - - const { owners = [], tokens = [] } = dualInvest[api.chain] || {} - if (tokens.length) { - owners.forEach(o => tokens.forEach(t => toa.push([t, o]))) - } - return sumTokens2({ api, tokensAndOwners: toa }) -} diff --git a/projects/anvil/index.js b/projects/anvil/index.js deleted file mode 100644 index 54d3e8850c5..00000000000 --- a/projects/anvil/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { owners: ['0x5d2725fdE4d7Aa3388DA4519ac0449Cc031d675f'], }, -}) \ No newline at end of file diff --git a/projects/anyhedge/index.js b/projects/anyhedge/index.js deleted file mode 100644 index f2673e2d0ec..00000000000 --- a/projects/anyhedge/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const axios = require("axios"); - -async function GetDailyHistory(day) { - // Data & calculation method is fully reproducible, see: - // https://gitlab.com/0353F40E/anyhedge-stats/-/blob/master/readme.md - try { - let { data } = await axios.get(`https://gitlab.com/0353F40E/anyhedge-stats/-/raw/master/stats_daily/${day}.csv`); - data = parseCSV(data); - return data[0].tvl; - } catch { - return null; - } -} - -async function getTVLAnyHedge(timestamp) { - const day = new Date(timestamp * 1000).toISOString().slice(0,10) - return await GetDailyHistory(day); -} - -async function tvl({timestamp}) { - let tvlAnyHedge, testDataSource - - // tvl data lags by contract duration since contracts are secret until settled - // so tvl at current time will always be 0, and only later when contracts are revealed - // can it be calculated in retrospect and stats back-filled - // for this reason, we cut-off the data at (today-91d) - const lastTimestamp = Math.floor(new Date().getTime() / 1000 - 91*86400); - if (timestamp > lastTimestamp) - throw "Data for the date is incomplete, awaiting contract reveals." - - tvlAnyHedge = await getTVLAnyHedge(timestamp) - testDataSource = await getTVLAnyHedge(timestamp + 91*86400) - - // if we're querying data for `timestamp`, a row for `timestamp+91d` should exist - if (testDataSource == null) - throw "Data source hasn't been updated yet." - - // if none of our scrape targets worked then throw an error - if (tvlAnyHedge == null) - throw "Unable to determine AnyHedge TVL." - - const bchTvl = Number(tvlAnyHedge).toFixed(); - - return { - 'bitcoin-cash': bchTvl - } -} - -module.exports = { - methodology: "Scrape the blockchain and filter for spent transaction outputs that match the contract's input script template. Aggregate them to compute TVL. The TVL data lags by contract duration since contracts are secret until settled. So, TVL at the current time will always be 0 and can only be calculated in retrospect and stats back-filled when contracts are revealed. For this reason, the code cuts-off the data at 91 days ago. See here for more details: https://gitlab.com/0353F40E/anyhedge-stats/-/blob/master/readme.md", - start: '2022-06-09', - bitcoincash: { tvl }, - hallmarks: [ - [1681725240, "BCH Bull public release (AnyHedge v0.11 contract)"], - [1703054100, "BCH Bull enables early settlement feture"], - [1720612800, "BCH Bull enables leveraged shorting feature (AnyHedge v0.12 contract)"] - ] -}; - -function parseCSV(csvData) { - csvData = csvData.replaceAll('\r', '').split('\n').map(i => i.split(',')) - const headers = csvData.shift() - return csvData.map(row => toObject(headers, row)) -} - -function toObject(keys, values) { - const res = {} - keys.forEach((key, i) => { - res[key] = values[i] - }) - return res -} diff --git a/projects/anyswap/index.js b/projects/anyswap/index.js deleted file mode 100644 index eb927336e9a..00000000000 --- a/projects/anyswap/index.js +++ /dev/null @@ -1,127 +0,0 @@ -const sdk = require('@defillama/sdk') -const { sumTokens } = require('../helper/sumTokens') -const { getConfig } = require('../helper/cache') -const ADDRESSES = require('../helper/coreAssets.json') - - -const chains = { - '1': 'ethereum', - '10': 'optimism', - '24': 'kardia', - '25': 'cronos', - '30': 'rsk', - '40': 'telos', - '56': 'bsc', - '57': 'syscoin', - '58': 'ontology_evm', - '61': 'ethereumclassic', - '66': 'okexchain', - '70': 'hoo', - '88': 'tomochain', - '100': 'xdai', - '106': 'velas', - '108': 'thundercore', - '122': 'fuse', - '128': 'heco', - '137': 'polygon', - '199': 'bittorrent', - '250': 'fantom', - '288': 'boba', - '321': 'kcc', - '336': 'shiden', - '592': 'astar', - '1024': 'clv', - '1030': 'conflux', - '1088': 'metis', - '1101': 'polygon_zkevm', - '1284': 'moonbeam', - '1285': 'moonriver', - '1818': 'cube', - '1294': 'boba', - '2000': 'dogechain', - '2001': 'milkomeda', - '2002': 'milkomeda_a1', - '2020': 'ronin', - '2222': 'kava', - '4689': 'iotex', - '8217': 'klaytn', - '9001': 'evmos', - '10000': 'smartbch', - '10001': 'ethpow', - '32659': 'fusion', - '42161': 'arbitrum', - '42170': 'arbitrum_nova', - '42220': 'celo', - '42262': 'oasis', - '43114': 'avax', - '47805': 'rei', - '53935': 'dfk', - '71402': 'godwoken_v1', - '1313161554': 'aurora', - '1666600000': 'harmony', - '32520': 'bitgert' -} - -let chainData -async function getChainData() { - if (!chainData) chainData = getConfig('anyswap-config', 'https://netapi.anyswap.net/bridge/v2/info').then(i => i.bridgeList.filter(j => j.amount > 0)) - return chainData -} - -const blacklistedTokens = [ - '0xc342774492b54ce5f8ac662113ed702fc1b34972' // BGEO -] - -const EXECUTOR = '0x2A038e100F8B85DF21e4d44121bdBfE0c288A869' -const NEW_ADDR = '0x1eed63efba5f81d95bfe37d82c8e736b974f477b' - -function fetchChain(chain) { - return async (api) => { - const data = await getChainData() - const protocolsInChain = chain === null ? data : data.filter(p => p.srcChainId.toString() === chain.toString()) - const tokensAndOwners = [] - protocolsInChain.forEach((item) => { - if (item.type === "bridge") { - let token = item.srcToken - let owner = item.depositAddr - if (owner.startsWith("0x") && !token.startsWith("0x")) { - sdk.log(chain, 'replace', token, 'with null') - token = ADDRESSES.null - } - tokensAndOwners.push([token, owner]) - tokensAndOwners.push([token, EXECUTOR]) - // tokensAndOwners.push([token, NEW_ADDR]) - } else if (item.type === "router") { - if (item.token === item.srcToken && item.underlying) { - tokensAndOwners.push([item.underlying, item.token]) - tokensAndOwners.push([item.underlying, EXECUTOR]) - // tokensAndOwners.push([item.underlying, NEW_ADDR]) - } - } - }) - - return sumTokens({ api, tokensAndOwners, blacklistedTokens }) - } -} - - -const chainTvls = {} -Object.keys(chains).forEach((chain) => { - const chainName = chains[chain] - chainTvls[chainName] = { - tvl: fetchChain(chain) - } -}) - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - ...chainTvls, - // fetch: fetchChain(null), - hallmarks: [ - [1651881600, "UST depeg"], - // [1689202800,"Access to Wallets Lost"] - ], -} - -module.exports.clv.tvl = () => ({}) \ No newline at end of file diff --git a/projects/anzen-v2/index.js b/projects/anzen-v2/index.js deleted file mode 100644 index ae832b45bd0..00000000000 --- a/projects/anzen-v2/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const sdk = require('@defillama/sdk') - -// Anzen USDz - digital dollar backed by Real World Assets - -const USDz = '0xa469b7ee9ee773642b3e93e842e5d9b5baa10067'; -const Base_USDz = '0x04d5ddf5f3a8939889f11e97f8c4bb48317f1938'; -const Blast_USDz = '0x52056ed29fe015f4ba2e3b079d10c0b87f46e8c6'; -const Manta_USDz = '0x73d23f3778a90be8846e172354a115543df2a7e4'; -const Arbitrum_USDz = '0x5018609ab477cc502e170a5accf5312b86a4b94f'; -const SPCT = '0xf30a29f1c540724fd8c5c4be1af604a6c6800d29'; // Secured collateral - -const mainnet_tvl = async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: USDz }) - api.add(USDz, supply) -} - -const base_tvl = async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: Base_USDz }) - api.add(Base_USDz, supply) -} - -const blast_tvl = async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: Blast_USDz }) - api.add(Blast_USDz, supply) -} - -const manta_tvl = async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: Manta_USDz }) - api.add(Manta_USDz, supply) -} - -const arbitrum_tvl = async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: Arbitrum_USDz }) - api.add(Arbitrum_USDz, supply) -} - -const collateral_assets = async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: SPCT }) - api.add(SPCT, supply) -} - -module.exports = { - methodology: "Sums total USDz in circulation across all chains", - ethereum: { - tvl: mainnet_tvl, - }, - base: { - tvl: base_tvl, - }, - blast: { - tvl: blast_tvl, - }, - manta: { - tvl: manta_tvl, - }, - arbitrum: { - tvl: arbitrum_tvl, - }, -}; diff --git a/projects/anzen/index.js b/projects/anzen/index.js deleted file mode 100644 index dd57f790afe..00000000000 --- a/projects/anzen/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -// Anzen Secured Private Credit Token -// minted by depositing USDC -const SPCT = '0xEf5AAcB3c38a5Be7785a361008e27fb0328a62B5'; - -async function tvl(api) { - const uTokens = await api.multiCall({ abi: 'address:usdc', calls: [SPCT] }) - const bals = (await api.multiCall({ abi: 'uint256:totalPooledUSD', calls: [SPCT] })).map(i => i / 1e12) - - api.add(uTokens, bals) - return api.getBalances() -} - -async function borrowed(api) { - // Borrowed amount in shares of pool - const executedShares = await api.call({ - target: SPCT, - abi: 'uint256:executedShares' - }); - - // Borrowed amount in USD - const pooledUSDByShares = await api.call({ - target: SPCT, - abi: 'function getPooledUSDByShares(uint256 _sharesAmount) public view returns (uint256)', - params: [executedShares] - }); - - api.add(ADDRESSES.ethereum.USDC, pooledUSDByShares/1e12); - return api.getBalances() -} - -module.exports = { - methodology: "Sums the total USDC value deposited to mint SPCT.", - misrepresentedTokens: true, - ethereum: { - tvl, - borrowed, - }, -}; diff --git a/projects/ao-bridge/index.js b/projects/ao-bridge/index.js deleted file mode 100644 index 7cf789f1b49..00000000000 --- a/projects/ao-bridge/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const bridgeAddresses = { - 'stETH': { tokenAddress: ADDRESSES.ethereum.STETH, ownerContractAddress: '0xfE08D40Eee53d64936D3128838867c867602665c' } -} - -// Convert the object to an array of [tokenAddress, ownerContractAddress] pairs -const tokensAndOwners = Object.values(bridgeAddresses).map(({ tokenAddress, ownerContractAddress }) => - [tokenAddress, ownerContractAddress] -); - -module.exports = { - methodology: "TVL is calculated by getting all tokens in the AO bridge and adding up the USD values provided by CoinGecko.", - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners - }), - } -}; \ No newline at end of file diff --git a/projects/aoabt/index.js b/projects/aoabt/index.js deleted file mode 100644 index c0b4c9db99d..00000000000 --- a/projects/aoabt/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const sdk = require('@defillama/sdk'); - -const tokenAddress = "0x80C080acd48ED66a35Ae8A24BC1198672215A9bD"; - -module.exports = { - hsk: { - tvl: async (api) => { - const totalSupplyRes = await sdk.api.erc20.totalSupply({ - target: tokenAddress, - chain: 'hsk', - block: api.block, - }); - - const supply = totalSupplyRes.output; - - return { - [`hsk:${tokenAddress}`]: supply, - }; - } - } -}; diff --git a/projects/aof-stake-mining/index.js b/projects/aof-stake-mining/index.js deleted file mode 100644 index 5f58b7ccb5e..00000000000 --- a/projects/aof-stake-mining/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); -const { nullAddress } = require('../helper/tokenMapping'); - -module.exports = treasuryExports({ - metis: { - owners: ['0x946D86422775E7B32F3F8f0580504EADccF9b800'], - tokens: [ - nullAddress, - ], - }, - }) \ No newline at end of file diff --git a/projects/ape-express/index.js b/projects/ape-express/index.js deleted file mode 100644 index ad907f925c2..00000000000 --- a/projects/ape-express/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { nullAddress } = require('../helper/tokenMapping'); - -const configs = [ - { factory: "0xCd7a0227Bc48b1c14C5a1A6a4851010f80943476", fromBlock: 63905 }, - { factory: "0xBcace40e446b06E6A530D945eFbae222f84fA836", fromBlock: 3633933 } -] - -const tvl = async (api) => { - const logs = [] - for (const { factory, fromBlock } of configs) { - logs.push(await getLogs({ - api, - target: factory, - topics: ['0x8409923236a093dc9b93970d1428b15e2c21c325f3480269492056cdd1134023'], - eventAbi: 'event TokenCreated (address indexed token, address indexed bondingCurve, address indexed creator, string name, string symbol, address router, uint256 initialVirtualAPE, uint256 finalVirtualAPE, uint8 tradeFeePercent, uint8 apxSuccessFee, uint8 creatorSuccessFee)', - onlyArgs: true, - fromBlock, - })) - } - let pools = logs.flat().map(log => log.bondingCurve) - return sumTokens2({ api, owners: pools, token: nullAddress }) -} - -module.exports = { - apechain: { - tvl, - } -} \ No newline at end of file diff --git a/projects/ape-fi/index.js b/projects/ape-fi/index.js deleted file mode 100644 index bbfdaf47341..00000000000 --- a/projects/ape-fi/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const APE = "0x4d224452801ACEd8B2F0aebE155379bb5D594381"; -const crvFRAX = "0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC"; -const apeUSDCrvFrax = "0x04b727C7e246CA70d496ecF52E6b6280f3c8077D"; -const amoV2 = "0x8E252A679C87313Ccefc9559F4f1c0e4062390B5"; -const multisig = "0x02ca76e87779412a77ee77c3600d72f68b9ea68c"; -const convexRewardPool = "0x51e6B84968D56a1E5BC93Ee264e95b1Ea577339c"; -const fraxStakingWrapper = "0x6a20FC1654A2167d00614332A5aFbB7EBcD9d414"; - -const apeAPE = "0xcaB90816f91CC25b04251857ED6002891Eb0D6Fa"; - -const tvl = async (api) => { - const apeUSDCrvFraxTotalSupply = await api.call({ abi: 'erc20:totalSupply', target: apeUSDCrvFrax }) - - const [amoV2LPBalance, multisigLPBalance, stakedLPBalance, crvFraxBalance,] = await api.multiCall({ - calls: [ - { target: convexRewardPool, params: amoV2, }, - { target: convexRewardPool, params: multisig, }, - { target: convexRewardPool, params: fraxStakingWrapper, }, - { target: crvFRAX, params: apeUSDCrvFrax, }, - ], - abi: "erc20:balanceOf", - }); - - const apeUSDCrvFraxShare = (+stakedLPBalance + +multisigLPBalance + +amoV2LPBalance) / apeUSDCrvFraxTotalSupply - api.add(crvFRAX, crvFraxBalance * apeUSDCrvFraxShare) -}; - -module.exports = { - ethereum: { - pool2: sumTokensExport({ - tokensAndOwners: [ - ['0x1977870a4c18a728c19dd4eb6542451df06e0a4b', '0x4Fa7cd808920520294245d746a932d334B783926'], // curve apeUSD-FRAX - ['0xfb7a3798c6fff187c8cf08c0b1322b52cfa70ace', '0xbcc28F6BA03642B9B5a3E7ad5C8f27991576796c'], // uni v2 - ['0x84ab278a8140a8a9759de17895a8da8d756618f3', '0x0a2c0a2033eccc7cc57e42901f04b96972131579'], // uni v2 - ['0x04b727C7e246CA70d496ecF52E6b6280f3c8077D', '0x0C63197017970596044f80778282BB5B2208f018'], // curve - ], - resolveLP: true, - }), - tvl, - staking: staking(apeAPE, APE), - }, - methodology: - "Counts liquidity as the Collateral APE and USDC & FRAX on all AMOs through their contracts", -}; diff --git a/projects/apeCoinStaking/config.js b/projects/apeCoinStaking/config.js deleted file mode 100644 index 0f05f9f400c..00000000000 --- a/projects/apeCoinStaking/config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - "APE_COIN_STAKE_VAULT": "0xAfc2BE801F55Cb0ee2D65C11EB14F88cbD6C576C", - "APE_COIN": "0x4d224452801ACEd8B2F0aebE155379bb5D594381" -} \ No newline at end of file diff --git a/projects/apeCoinStaking/index.js b/projects/apeCoinStaking/index.js deleted file mode 100644 index f7063ab230b..00000000000 --- a/projects/apeCoinStaking/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sdk = require("@defillama/sdk"); -const config = require("./config"); - -async function tvl(api) { - const balances = {}; - - const totalAssets = await api.call({ - abi: "function totalAssets() public view returns(uint256)", - target: config.APE_COIN_STAKE_VAULT, - }); - - sdk.util.sumSingleBalance(balances, config.APE_COIN, totalAssets, api.chain); - - return balances; -} - -module.exports = { - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/apebank/index.js b/projects/apebank/index.js deleted file mode 100644 index a0ac730b32c..00000000000 --- a/projects/apebank/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave') - -module.exports = { - apechain: aaveExports("apechain", "0xEeec4D3C3aa8B4B2589b6a076717e5B045f7F0E9"), -} \ No newline at end of file diff --git a/projects/apebond/index.js b/projects/apebond/index.js deleted file mode 100644 index 8779ecc87ea..00000000000 --- a/projects/apebond/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - ethereum: { factory: '0x34ef7df17a7e9a51e0b308ac3280b08379deda33', fromBlock: 18745159, }, - polygon: { factory: '0x1ce1b8e28e4d4c1c4da01b69f5434a9fb7be023d', fromBlock: 50910011, }, - bsc: '0x9D09925567FA16f8b9E646C5d35475cc235C66d9', -} - -const ownTokens = { - ethereum: '0xe6828D65bf5023AE1851D90D8783Cc821ba7eeE1', - bsc: '0x34294afabcbaffc616ac6614f6d2e17260b78bed', - polygon: '0xe6828d65bf5023ae1851d90d8783cc821ba7eee1', -} - -Object.keys(config).forEach(chain => { - const _config = config[chain] - - function getTvl(api, isStaking) { - const ownToken = ownTokens[chain] - if (!isStaking) { - api.removeTokenBalance(ownToken) - } else { - const regex = new RegExp(ownToken, 'i') - Object.keys(api.getBalances()).forEach(key => { - if (!regex.test(key)) - api.removeTokenBalance(key) - }) - } - - return api.getBalances() - } - - const poolManagerTvl = (isStaking) => async (api) => { - const factory = _config - const manager = await api.call({ abi: 'address:poolManager', target: factory }) - const allLegacyPools = await api.call({ abi: 'address[]:allLegacyPools', target: manager }) - const allNewPools = await api.call({ abi: 'address[]:allNewPools', target: manager }) - const tokensLegacy = await api.multiCall({ abi: 'address:stakeToken', calls: allLegacyPools }) - const tokensNew = await api.multiCall({ abi: 'address:STAKE_TOKEN', calls: allNewPools }) - const tokens = [...tokensLegacy, ...tokensNew] - const owners = [...allLegacyPools, ...allNewPools] - await sumTokens2({ api, tokensAndOwners2: [tokens, owners], resolveLP: true, resolveIchiVault: true, }) - return getTvl(api, isStaking) - } - - const logTvl = (isStaking) => async (api) => { - const { factory, fromBlock } = _config - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event DeployedPoolContract (address indexed pool, address stakeToken, address rewardToken, uint256 rewardPerSecond, uint256 startTime, uint256 bonusEndTime, address owner)', - onlyArgs: true, - fromBlock, - }) - const tokensAndOwners = logs.map(log => [log.stakeToken, log.pool]) - await sumTokens2({ api, tokensAndOwners, resolveLP: true, resolveIchiVault: true, }) - return getTvl(api, isStaking) - } - const tvlFunction = typeof _config === 'string' ? poolManagerTvl : logTvl - module.exports[chain] = { - tvl: tvlFunction(false), - staking: tvlFunction(true), - } - - -}) \ No newline at end of file diff --git a/projects/apechain/index.js b/projects/apechain/index.js deleted file mode 100644 index b456cd56c7c..00000000000 --- a/projects/apechain/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.ethereum.WSTETH, '0xc8a12b1DB09ec5a43919906d94Fa7eeAef1131D1'], // wstETH - [ADDRESSES.ethereum.SDAI, '0xf33D21137cD0B878f3A18Cc60cD74F842c59cb00'], // sDAI - ] - }), - staking: staking('0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9', '0x4d224452801ACEd8B2F0aebE155379bb5D594381') - }, -}; \ No newline at end of file diff --git a/projects/apechainstake/abis/apeStake.json b/projects/apechainstake/abis/apeStake.json deleted file mode 100644 index c16aead7f16..00000000000 --- a/projects/apechainstake/abis/apeStake.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getPoolsUI": "function getPoolsUI() view returns ((uint256,uint256,(uint48,uint48,uint96,uint96))[3])" -} \ No newline at end of file diff --git a/projects/apechainstake/config.js b/projects/apechainstake/config.js deleted file mode 100644 index c59173abf0c..00000000000 --- a/projects/apechainstake/config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - APE_STAKE_CONTRACT: "0x4Ba2396086d52cA68a37D9C0FA364286e9c7835a" -}; \ No newline at end of file diff --git a/projects/apechainstake/index.js b/projects/apechainstake/index.js deleted file mode 100644 index f645a3cb395..00000000000 --- a/projects/apechainstake/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sdk = require('@defillama/sdk') -const { nullAddress } = require('../helper/unwrapLPs') -const { APE_STAKE_CONTRACT } = require('./config') -const abi = require('./abis/apeStake.json') - -async function stakingTvl(api) { - const balances = {}; - - const pools = await api.call({ - target: APE_STAKE_CONTRACT, - abi: abi.getPoolsUI, - chain: 'apechain' - }); - - const totalStaked = pools.reduce((sum, pool) => sum + BigInt(pool[1]), 0n); - sdk.util.sumSingleBalance(balances, nullAddress, totalStaked.toString(), 'apechain') - return balances; -} - -module.exports = { - apechain: { - tvl: () => ({}), - staking: stakingTvl - } -}; diff --git a/projects/aperocket/index.js b/projects/aperocket/index.js deleted file mode 100644 index c53df55b264..00000000000 --- a/projects/aperocket/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const V2_VAULTS_CONTRACTS_BSC = [ - "0xa13eF34F11cD905A1aACe891e3Fd1b355D770e7F", // BANANA - "0x41b726444CcD5137A7Ec1Fbb870b9eFF57F89E89", // CAKE - "0xA298f622E8B46491749C1ccDBe2DfFA13049A930", // BSW - "0xa126C7f00875343f233e3c2f95067c80ab5B068a", // BANANA-BNB LP (ApeSwap) - "0xD259A715De1fB30AD76Cc9580e68A15Ee9D12Dc2", // BANANA-BNB LP Maximizer (ApeSwap) - "0x313adEc67e70a86Bd1166CCAcB8aCA932f28E95B", // CAKE-BNB LP (PancakeSwap) - "0xaC3184b1F2888caaB5A7dE1381707c15c153B04A", // CAKE-BNB LP Maximizer (PancakeSwap) - "0xB8469e8A7a8893E4c698B3De8163906386861B96", // BSW-BNB LP (Biswap) - "0x76a3fE4350F13042EC179E5240bC68349d2AAD35", // BSW-BNB LP Maximizer (Biswap) - "0x1c86DB4820Acb4Dd91A80a8874afb82251aeb937", // BANANA-BUSD LP (ApeSwap) - "0xf3D78aE6A67D391fd894ee8f4da7842EC07CF446", // BANANA-BUSD LP Maximizer (ApeSwap) - "0x34d1f4FA762c85f363cb5907Ca0BAcF53aBac866", // BSW-USDT LP (Biswap) - "0xcf02e68b900Ce87F8715CAEF8b8a9e212b9158A1", // BUSD-BNB LP (PancakeSwap) - "0x7dBB2b2Fd312710C805D4c78EE55ca1F8750Bace", // BUSD-BNB LP (ApeSwap) - "0xa8A2c0aa4C050D2cB5C1Ac224A31c76492A35B80", // BNB-BUSD LP (Biswap) - "0x101bCD396DDFb934072a171Bc4F625B85D505C78", // BUSD-BNB LP Maximizer (ApeSwap) - "0xBC84830C42cedc1A32b665BfEaB3Fb16bcdFb8e3", // BNB-BUSD LP Maximizer (Biswap) - "0xd9137C7be7a3117941317d525B06c441eAC7380d", // ETH-BNB LP Maximizer (ApeSwap) - "0xe1F45D11B5D0Ddbe300cADFeFd7021Ac750a4281", // BUSD-USDC LP (ApeSwap) - "0x1119FBECe0F576D318ce489886d05A098e94961F", // BUSD-USDC LP Maximizer (ApeSwap) - "0x0Edf919fe5cDA4c7fA02AE7de77243cecedFd036", // ADA-BNB LP (ApeSwap) - "0x8ADDf5FcE06B9F93cBf1F8B2ef580b25D1EDBE56", // ADA-BNB LP Maximizer (ApeSwap) - "0x8747431ddFf6069f32ad8eE0Da51084432F8594C", // BUSD-USDT LP (ApeSwap) - "0xC8bba6AC77804b3b6b28D6C5890b98fb935F361F", // BUSD-USDT LP Maximizer (ApeSwap) - "0x8E1fcB9b48A299b71d7a4CDc24F11439cF253126", // BNB-USDT LP (Biswap) - "0x681969eBfC476E8208CA551fA364e8FE6a19242F", // ETH-BTCB LP (Biswap) - "0x1AFB491895D301a7cea026a5c65316b2C05A56B4", // ETH-BTCB LP Maximizer (Biswap) -]; - -const bscTvl = async (api) => { - const tokens = await api.multiCall({ abi: 'address:STAKING_TOKEN', calls: V2_VAULTS_CONTRACTS_BSC}) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: V2_VAULTS_CONTRACTS_BSC}) - api.add(tokens, bals) - return sumTokens2({ api, resolveLP: true}) -}; - -module.exports = { - bsc: { - tvl: bscTvl, - staking: staking("0xFfDcD49d902d71445B93DCbFa51E2F9797de05C9", "0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95"), - }, - methodology: `TVL consists of deposits made to the Earn Vaults of ApeRocket minus the 'SPACE' vault and the 'SPACE-BNB' pool2 vault which are created using the protocol's native token.`, - misrepresentedTokens: true, -}; diff --git a/projects/aperture/index.js b/projects/aperture/index.js deleted file mode 100644 index 2edccc060ac..00000000000 --- a/projects/aperture/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const APERTURE_MANAGER_ADDRESS = "0xeD380115259FcC9088c187Be1279678e23a6E565"; - -const abis = { - strategyIdToMetadata: "function strategyIdToMetadata(uint64 arg0) view returns (string, string, address strategy)", - "getStrategyId": "uint64:nextStrategyId", - "getLeverage": "uint256:leverageLevel", - "getEquityETHValue": "uint256:getEquityETHValue", - "getETHPx": "function getETHPx(address oracle, address token) view returns (uint256)" -} - -async function avax_tvl(api) { - const strategies = (await api.fetchList({ lengthAbi: 'nextStrategyId', itemAbi: abis.strategyIdToMetadata, target: APERTURE_MANAGER_ADDRESS, })).map(i => i.strategy) - const equityETHValues = await api.multiCall({ abi: abis.getEquityETHValue, calls: strategies }) - const vaultLeverage = await api.multiCall({ abi: abis.getLeverage, calls: strategies }) - vaultLeverage.map((v, i) => api.addCGToken(`avalanche-2`, equityETHValues[i] * v / 1e22)) -} - -module.exports = { - avax: { - tvl: avax_tvl, - }, - terra: { - tvl: () => ({}), - }, - hallmarks: [[1651881600, "UST depeg"]], -}; diff --git a/projects/apertureSwap/index.js b/projects/apertureSwap/index.js deleted file mode 100644 index 6f1da7d09f7..00000000000 --- a/projects/apertureSwap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - manta: { factory: "0x5bd1F6735B80e58aAC88B8A94836854d3068a13a", fromBlock: 41427, }, -}); \ No newline at end of file diff --git a/projects/apestore/index.js b/projects/apestore/index.js deleted file mode 100644 index 419a1d1d861..00000000000 --- a/projects/apestore/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const routers = [ - "0xF6Af6C034E92694A4c79569B03543d580df402D7", - "0x992D40d9ED8937Bb0Ad3c0Ba99713072Ae0a05b3", - "0x135De7F9223C76b7d0278FFe854eC480D37FE906", - "0x3ccC78545F675A188B7521F7f4b4791995752635", - "0x0bf8edd756ff6caf3f583d67a9fd8b237e40f58a" -]; - -const routersEth = [ - "0xA7d854eAf481846f7dA8CC863a46aC1F67b548D8" -]; - -const tokens = [coreAssets.null]; - -module.exports = { - base: { - tvl: sumTokensExport({ owners: routers, tokens }) - }, - ethereum: { - tvl: sumTokensExport({ owners: routersEth, tokens }) - } -}; \ No newline at end of file diff --git a/projects/apeswap-amm/index.js b/projects/apeswap-amm/index.js deleted file mode 100644 index 3e19809fa15..00000000000 --- a/projects/apeswap-amm/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { getUniTVL } = require("../helper/unknownTokens"); - -const BANANA_TOKEN = "0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95"; -const ABOND_TOKEN = "0x34294AfABCbaFfc616ac6614F6d2e17260b78BEd"; -const MASTER_APE = "0x5c8D727b265DBAfaba67E050f2f739cAeEB4A6F9"; -const MASTER_APE_V2 = "0x71354AC3c695dfB1d3f595AfA5D4364e9e06339B"; -const FACTORY_BSC = "0x0841BD0B734E4F5853f0dD8d7Ea041c241fb0Da6"; -const FACTORY_POLYGON = "0xcf083be4164828f00cae704ec15a36d711491284"; -const FACTORY_ETHEREUM = "0xBAe5dc9B19004883d0377419FeF3c2C8832d7d7B"; -const FACTORY_TELOS = "0x411172Dfcd5f68307656A1ff35520841C2F7fAec"; -const FACTORY_ARBITRUM = "0xCf083Be4164828f00cAE704EC15a36D711491284"; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: FACTORY_BSC, - useDefaultCoreAssets: true, - }), - staking: staking( - [MASTER_APE, MASTER_APE_V2], - [BANANA_TOKEN, ABOND_TOKEN], - "bsc" - ), - }, - polygon: { - tvl: getUniTVL({ - factory: FACTORY_POLYGON, - useDefaultCoreAssets: true, - }), - }, - ethereum: { - tvl: getUniTVL({ factory: FACTORY_ETHEREUM, useDefaultCoreAssets: true }), - }, - telos: { - tvl: getUniTVL({ - factory: FACTORY_TELOS, - useDefaultCoreAssets: true, - }), - }, - arbitrum: { - tvl: getUniTVL({ - factory: FACTORY_ARBITRUM, - useDefaultCoreAssets: true, - }), - }, - methodology: - "TVL comes from the DEX liquidity pools, staking TVL is accounted as the banana on 0x5c8D727b265DBAfaba67E050f2f739cAeEB4A6F9 and 0x71354AC3c695dfB1d3f595AfA5D4364e9e06339B", -}; diff --git a/projects/apeswap-lending/index.js b/projects/apeswap-lending/index.js deleted file mode 100644 index c89796e5a82..00000000000 --- a/projects/apeswap-lending/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const methodologies = require('../helper/methodologies') - -module.exports = { - bsc: compoundExports2({ comptroller: '0xad48b2c9dc6709a560018c678e918253a65df86e' }), - methodology: methodologies.lendingMarket, -} \ No newline at end of file diff --git a/projects/apex-omni/index.js b/projects/apex-omni/index.js deleted file mode 100644 index b17cac8f801..00000000000 --- a/projects/apex-omni/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const tokens = [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, -]; - -const walletAddresses = { - bsc: ['0xb8d9f005654b7b127b34dae8f973ba729ca3a2d9'], - ethereum: ['0x35D173cdfE4d484BC5985fDa55FABad5892c7B82'], - arbitrum: ['0x3169844a120c0f517b4eb4a750c08d8518c8466a'], - base: ['0xee7981c4642de8d19aed11da3bac59277dfd59d7'], - mantle: ['0x3c7c0ebfcd5786ef48df5ed127cddeb806db976c'] - -}; - -const tokenAddress = { - bsc: [ADDRESSES.bsc.USDT], - arbitrum: [ADDRESSES.arbitrum.USDT], - base: [ADDRESSES.base.USDT], - mantle: [ADDRESSES.mantle.USDT] -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: walletAddresses.ethereum, tokens }), - }, - bsc: { - tvl: sumTokensExport({ owners: walletAddresses.bsc, tokens: tokenAddress.bsc }), - }, - arbitrum: { - tvl: sumTokensExport({ owners: walletAddresses.arbitrum, tokens: tokenAddress.arbitrum }), - }, - base: { - tvl: sumTokensExport({ owners: walletAddresses.base, tokens: tokenAddress.base }), - }, - mantle: { - tvl: sumTokensExport({ owners: walletAddresses.mantle, tokens: tokenAddress.mantle }), - }, -}; \ No newline at end of file diff --git a/projects/apex/index.js b/projects/apex/index.js deleted file mode 100644 index d74fddbf671..00000000000 --- a/projects/apex/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const tokens = [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, -]; - -const owners = [ - '0xA1D5443F2FB80A5A55ac804C948B45ce4C52DCbb', - '0xe95b3Dc78c0881dEa17A69BaFC6cFeB8d891e9DE', - "0xe53A6eD882Eb3f90cCe0390DDB04c876C5482E6b", - "0x96866592ccc2c5950CEE1Ca83685879DB0726150", //NEW - "0x698192C9F0996eEa12B492d6806A98d2Fa928658" // new usdc -]; - -const walletAddresses = { - bsc: ['0x09b783ae2443147c23a114a43b25b05b701ee401', '0x78f1354EC30a634C8ebdB503381B1db9D18e872D'], - polygon: ['0x10434755CFdCd34539dB91c81AB0e07F96D44AA7', '0xddfd32b73212ED7854095112a53D9BDd53F0355F'], - arbitrum: ['0x0206d250f233c124c2dd5fa7d275c560cb034a37', '0x367a1cB550D2C8B235Ba0dab9b7FE6B6085263Cf'], - avax: ['0x2fd7d4A45f80b1d22d1eBb7B3b2961D131eB0A22', '0xE33Bb824B1018b78b4B22eB2c08400515f32D5a1'], - optimism: ['0x89cBccEdDF07A14aFf90eF5D3A7D5BEf9e33Cb6b', '0x792BFFe24A7c426aEA9E15E051f490B6b77899dc'], - mantle: ['0x3a4d747D381D401E598CAFE65D4a70a704988c50', '0x9f0828611b642777569948E1FB22AD6340Bf8b07'], -}; - -const tokenAddress = { - bsc: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC], - polygon: [ADDRESSES.polygon.USDC_CIRCLE, ADDRESSES.polygon.USDC], - arbitrum: [ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC_CIRCLE], - avax: ADDRESSES.avax.USDC, - optimism: ADDRESSES.optimism.USDC_CIRCLE, - mantle: ADDRESSES.mantle.USDC, -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners, tokens }), - }, - bsc: { - tvl: sumTokensExport({ owners: walletAddresses.bsc, tokens: tokenAddress.bsc }), - }, - polygon: { - tvl: sumTokensExport({ owners: walletAddresses.polygon, tokens: tokenAddress.polygon }), - }, - arbitrum: { - tvl: sumTokensExport({ owners: walletAddresses.arbitrum, tokens: tokenAddress.arbitrum }), - }, - avax: { - tvl: sumTokensExport({ owners: walletAddresses.avax, tokens: [tokenAddress.avax] }), - }, - optimism: { - tvl: sumTokensExport({ owners: walletAddresses.optimism, tokens: [tokenAddress.optimism] }), - }, - mantle: { - tvl: sumTokensExport({ owners: walletAddresses.mantle, tokens: [tokenAddress.mantle] }), - }, -}; diff --git a/projects/apexdefi/index.js b/projects/apexdefi/index.js deleted file mode 100644 index 1437fcac87a..00000000000 --- a/projects/apexdefi/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { staking } = require('../helper/staking') -const ADDRESSES = require('../helper/coreAssets.json'); - -const config = { - avax: { factory: "0x754A0c42C35562eE7a41eb824d14bc1259820f01", wrapperFactory: '0x39aB4aabAd7656f94E32ebD90547C3c4a183f4B4' }, - base: { factory: "0x10d11Eb1d5aB87E65518458F990311480b321061", wrapperFactory: '0xc9fbf1e865eeababe92d47ddb11d580f37ce4e00' }, - ethereum: { factory: "0x820c889D5749847217599B43ab86FcC91781019f", }, -} - -async function _staking(api) { - const poolInfoAbi = "function getPoolInfo(uint256 _poolId) public view returns (address _staketoken, uint256 _allocationPoints, uint256 _lastRewardTimestamp, uint256 _rewardTokenPerShare, uint256 _totalStaked, uint256 _bonusMultiplier, address _rewarder)" - - const poolInfo = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: poolInfoAbi, target: '0x5995876c9C6e2C23C1C5fc902661127fF9ed38D3', }) - poolInfo.forEach(pool => api.add(pool._staketoken, pool._totalStaked)) -} - -module.exports.methodology = "The Apex DeFi factory contract address is used to obtain the balances held in each token contract as liquidity and the staking contract is used to get the staked APEX balance."; - -Object.keys(config).forEach(chain => { - const { factory, wrapperFactory, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - // count the value of erc20 wrapped and deposited in the pools - if (wrapperFactory) { - const wrapperPools = await api.fetchList({ lengthAbi: 'allWrappersLength', itemAbi: 'allWrappers', target: wrapperFactory }) - const tokens = await api.multiCall({ abi: 'address:originalToken', calls: wrapperPools }) - await api.sumTokens({ tokensAndOwners2: [tokens, wrapperPools]}) - } - - const tokens = await api.call({ abi: 'address[]:getAllTokens', target: factory }) - return api.sumTokens({ owners: tokens, tokens: [ADDRESSES.null] }) - } - } -}) - -// module.exports.avax.staking = staking('0x5995876c9C6e2C23C1C5fc902661127fF9ed38D3','0x98B172A09102869adD73116FC92A0A60BFF4778F') \ No newline at end of file diff --git a/projects/apexswap/index.js b/projects/apexswap/index.js deleted file mode 100644 index f5ef357df5f..00000000000 --- a/projects/apexswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1665532800, "Rug Pull"] - ], - deadFrom: '2022-10-12', - avax: { - tvl: getUniTVL({ - factory: '0x21cadeb92c8bbfbef98c3098846f0999209c3a97', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/api3/index.js b/projects/api3/index.js deleted file mode 100644 index 3e436e04251..00000000000 --- a/projects/api3/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const api3_token = '0x0b38210ea11411557c13457d4da7dc6ea731b88a' -const api3_dao_pool = '0x6dd655f10d4b9e242ae186d9050b68f725c76d76' -const api3CirculatingSupply = "0xcD34bC5B03C954268d27c9Bc165a623c318bD0a8" - -const stakingTVL = async (api) => { - const balances = {} - const locked_and_vested = await api.call({ - target: api3CirculatingSupply, - abi: "uint256:getLockedVestings", - }) - - sdk.util.sumSingleBalance(balances,api3_token,locked_and_vested * -1, api.chain) - return sumTokens2({ owner: api3_dao_pool, tokens: [api3_token], balances, api }) -} - -module.exports = { - ethereum: { - staking: stakingTVL, // tvl / staking - tvl: () => ({}) - }, - methodology: 'API3 TVL is all API3 token staked in the API3 DAO Pool contract', -} diff --git a/projects/apollodao/index.js b/projects/apollodao/index.js deleted file mode 100644 index 659b1eb2045..00000000000 --- a/projects/apollodao/index.js +++ /dev/null @@ -1,150 +0,0 @@ -// vaults are closed: https://articles.apollo.farm/apollo-dao-will-be-closing-vaults-on-terra-classic/ -const axios = require("axios"); -const { endPoints, queryContract } = require('../helper/chain/cosmos') -const { getAssetInfo } = require('../terraswap/factoryTvl') - -const chain = 'osmosis' - -const contractAddresses = { - atom_statom: "osmo1a6tcf60pyz8qq2n532dzcs7s7sj8klcmra04tvaqympzcvxqg9esn7xz7l", - atom_osmo: "osmo1g3kmqpp8608szfp0pdag3r6z85npph7wmccat8lgl3mp407kv73qlj7qwp", - usdc_osmo: "osmo1jfmwayj8jqp9tfy4v4eks5c2jpnqdumn8x8xvfllng0wfes770qqp7jl4j", - st_osmo_osmo: "osmo1p4zqs5y2w5srzd2vesznzu5ql8wfq9tpz3e7mf2j3y07nxrtkdes5r5g0t", - wbtc_osmo: "osmo185gqewrlde8vrqw7j8lpad67v8jfrx9u7770k9q87tqqecctp5tq50wt2c", - strd_osmo: "osmo1e3qjfcg9adrauz6jg030ptfy35r6zzplsgaavnn6xrh6686udhfqq7muwy", - evmos_osmo: "osmo1rkv6vcmty4rpypuxp2a6a0y5ze4ztm3y6d6xwy5a7cye85f7reqsm85c5s", - juno_osmo: "osmo1ceku0zks6y43r9l35n7wnv5pf82s6l4k5jhlrhkurakeemey9n4snz3x6z", - weth_osmo: "osmo1r235f4tdkwrsnj3mdm9hf647l754y6g6xsmz0nas5r4vr5tda3qsgtftef", - ist_osmo: "osmo1qajgwrcce9srkq370pa9ew96dyk4hajyyk6rfpuexrktm8862xnst443kp", - ion_osmo: "osmo1869zena97sctemj78sgjmu737p2g94905hsf3hhkrfgummrfz4tsxj2k6r", - cro_osmo: "osmo1gmd2vc4crmv7urlfn3j5avhplfncjf5mg649dkgsu5a0zvd6cgrsn9dq4l", - axl_osmo: "osmo1m9e4cks405tvzlppkw64znr35vkvujvptrdqtgu5q6luk4ccw9qqeuenwd", - dai_osmo: "osmo1lhs6kyuxytu4suua0qf88z5057wzpxs77tyrlgztw2uctcy75hcqf2ajrt", - akt_osmo: "osmo122ryl7pez7yjprtvjckltu2uvjxrq3kqt4nvclax2la7maj6757qg054ga", -}; - -async function tvl(api) { - if (api.chain != "osmosis") return {} - for (const contractName in contractAddresses) { - let contractAddress = contractAddresses[contractName]; - let vaultInfo = await queryContract({ - contract: contractAddress, - chain: 'osmosis', - data: { 'info': {} } - }); - const gammToken = vaultInfo.base_token; - const poolID = gammToken.split('gamm/pool/')[1]; - let totalAssets = await queryContract({ - contract: contractAddress, - chain: 'osmosis', - data: { 'total_assets': {} } - }); - - let poolEndpoint = `${endPoints[chain]}/osmosis/gamm/v1beta1/pools/${poolID}`; - const poolData = (await axios.get(poolEndpoint)).data.pool; - - let amount = calculateTokenAmounts(poolData, totalAssets) - for (const denom in amount) { - api.add(denom, amount[denom]) - } - } -} - -function calculateTokenAmounts(poolData, gammAmount) { - // Extract the total pool shares. - let totalShares = poolData.total_shares.amount; - - // Initialize an object to hold the amounts of each token. - let tokenAmounts = {}; - - // For each token in the pool... - if (typeof poolData.pool_assets !== "undefined") { - for (let asset of poolData.pool_assets) { - // Extract the token's denom and amount. - let denom = asset.token.denom; - let assetAmount = asset.token.amount; - - // Calculate the amount of this token that corresponds to the given amount of pool shares. - tokenAmounts[denom] = (gammAmount * assetAmount) / totalShares; - } - } else { - for (let asset of poolData.pool_liquidity) { - // Extract the token's denom and amount. - let denom = asset.denom; - let assetAmount = asset.amount; - - // Calculate the amount of this token that corresponds to the given amount of pool shares. - tokenAmounts[denom] = (gammAmount * assetAmount) / totalShares; - } - } - - return tokenAmounts; -} - -const neutronVaults = { - pcl_wstETH_axlWETH: "neutron1yvhe4f0q3swtf37pkf9kku59l52nevr3trxs62vah004a08pkl8qlaccc7", - xyk_ASTRO_axlUSDC: "neutron135nkp0fth0vtertv7ngvkkgc4cwamp2tpnmjdlppat0047f9wjmqxeu9p8", - pxl_capped_stTIA_TIA: "neutron1qzf6t478xuutq0ahkm07pl2y2tctreccrlafkrl38k4cafk3rgdq3lfky5", - pcl_wstETH_NTRN: "neutron17vedy2clhctw0654k93m375ud7h5jsy8nj9gnlkjnyd4mcfnfrdql226al", -}; - -async function neutronTvl(api) { - if (api.chain != "neutron") return {} - for (const contractName in neutronVaults) { - let contractAddress = neutronVaults[contractName]; - let vaultInfo = await queryContract({ - contract: contractAddress, - chain: 'neutron', - data: { 'info': {} } - }); - - const vaultState = await queryContract({ - contract: contractAddress, - chain: 'neutron', - data: { - 'vault_extension': { - 'apollo': { - 'state': {} - } - } - } - }); - - const pairAddr = vaultState.pool.pair_addr; - - const lpTokenAddr = vaultInfo.base_token; - let totalAssets = await queryContract({ - contract: contractAddress, - chain: 'neutron', - data: { 'total_assets': {} } - }); - - const pairRes = await queryContract({ contract: pairAddr, chain: 'neutron', data: { pool: {} } }); - const totalLpSupply = Number(pairRes.total_share); - - pairRes.assets.forEach((asset, idx) => { - const [token, balance] = getAssetInfo(asset) - const amount = balance * totalAssets / totalLpSupply; - api.add(token, amount); - }); - } -} - -module.exports = { - timetravel: false, - methodology: "Total TVL on vaults", - terra: { - tvl: () => 0 - }, - osmosis: { - tvl, - }, - neutron: { - tvl: neutronTvl, - }, - hallmarks: [ - [1651881600, "UST depeg"], - ['2022-09-13', 'Stop supporting Terra Classic'], - ['2023-02-16', 'Relaunch on Osmosis '], - ], -} diff --git a/projects/apollon/index.js b/projects/apollon/index.js deleted file mode 100644 index da2399f9ee2..00000000000 --- a/projects/apollon/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const config = { - sei: { troveManager: '0x097639bD7AD4e665f7bac198CF82914e60e604e2', swapOperations: '0xf69D9cACc0140e699C6b545d166C973CB59b8E87' } -} - -Object.keys(config).forEach(chain => { - const { troveManager, swapOperations } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokenManager = await api.call({ abi: 'address:tokenManager', target: troveManager }) - const storagePool = await api.call({ abi: 'address:storagePool', target: troveManager }) - const tokens = await api.call({ abi: 'address[]:getCollTokenAddresses', target: tokenManager }) - const debtTokens = await api.call({ abi: 'address[]:getDebtTokenAddresses', target: tokenManager }) - const blacklistedTokens = debtTokens.concat([ // exclude minted tokens whose backing is already counted towards tvl - '0x5b8203e65aa5be3f1cf53fd7fa21b91ba4038ecc', // APO - projects own token + more locked here than mcap on cg + very low liquidity - '0x372b2dc06478aa2c8182eee0f12ea0e9a15e2913', // GEM - more locked here than mcap on cg + very low liquidity - ]) - - const pairs = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: swapOperations }) - const tokens0 = await api.multiCall({ abi: 'address:token0', calls: pairs }) - const tokens1 = await api.multiCall({ abi: 'address:token1', calls: pairs }) - await api.sumTokens({ tokensAndOwners2: [tokens0.concat(tokens1), pairs.concat(pairs)], blacklistedTokens }) - - return api.sumTokens({ owner: storagePool, tokens, blacklistedTokens }) - } - } -}) - - -module.exports.methodology = 'Value of tokens backing the minted synth tokens, project related tokens are excluded from the tvl' \ No newline at end of file diff --git a/projects/apollox/index.js b/projects/apollox/index.js deleted file mode 100644 index 02c7f0d8a13..00000000000 --- a/projects/apollox/index.js +++ /dev/null @@ -1,136 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { pool2s } = require("../helper/pool2"); -const { stakings } = require("../helper/staking"); -const { sumTokens, sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const stakingContract = "0x7eb5af418f199ea47494023c3a8b83a210f8846f"; -const stakingContract_APX = "0x6bE863e01E17A226c945e3629D0D9Cb6E52Ce90E"; -const poolContract = "0xa0ee789a8f581cb92dd9742ed0b5d54a0916976c"; -const stakingContractV2 = "0x60d910f9dE5c6Fd2171716042AF2Fd3D2Aa9D942"; -const poolContractV2 = "0xAf839f4D3620a1EED00cCc21dDC01119C26a75E1"; -const treasureContract = "0xe2e912f0b1b5961be7cb0d6dbb4a920ace06cd99"; -const treasureContractV2 = "0xcEF2dD45Da08b37fB1c2f441d33c2eBb424866A4"; -const daoContract = "0x7f878994507F5B0588cF0EBEE07128d9A742ad9d"; -const ALPContract = "0x1b6F2d3844C6ae7D56ceb3C3643b9060ba28FEb0"; - -const TOKEN_APX = "0x78f5d389f5cdccfc41594abab4b0ed02f31398b3"; -const TOKEN_BSC_USD = ADDRESSES.bsc.USDT; -const TOKEN_BUSD = ADDRESSES.bsc.BUSD; -const TOKEN_CAKE = "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82"; -const TOKEN_BABY = "0x53e562b9b7e5e94b81f10e96ee70ad06df3d2657"; -const TOKEN_LEOS = "0x2c8368f8f474ed9af49b87eac77061beb986c2f1"; -const TOKEN_USDC = ADDRESSES.bsc.USDC; -const TOKEN_VUSDT = "0xfD5840Cd36d94D7229439859C0112a4185BC0255"; -const TOKEN_BANANA = "0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95"; -const TOKEN_MDX = "0x9c65ab58d8d978db963e63f2bfb7121627e3a739"; -const TOKEN_HAY = "0x0782b6d8c4551B9760e74c0545a9bCD90bdc41E5"; - -const TOKEN_BTC = ADDRESSES.bsc.BTCB; -const TOKEN_BNB = ADDRESSES.bsc.WBNB; - -const TreasureTokens = [ - // TOKEN_APX, - nullAddress, - TOKEN_BSC_USD, - TOKEN_BUSD, - TOKEN_CAKE, - TOKEN_BABY, - TOKEN_LEOS, - TOKEN_USDC, - TOKEN_VUSDT, - TOKEN_BANANA, - TOKEN_MDX, - TOKEN_HAY, -]; - -const ALPTokens = [ - nullAddress, - TOKEN_BSC_USD, - TOKEN_BUSD, - TOKEN_USDC, - TOKEN_BTC, - TOKEN_BNB, - TOKEN_HAY, - ADDRESSES.bsc.ETH, - TOKEN_CAKE, -] - -async function bscTVL(timestamp, _block, { bsc: block }) { - const toa = [ - ...TreasureTokens.map((t) => [t, treasureContract]), - ...TreasureTokens.map((t) => [t, treasureContractV2]), - ...ALPTokens.map((t) => [t, ALPContract]), - ] - return sumTokens({}, toa, block, "bsc"); -} - -module.exports = { - start: '2021-12-21', // 12/21/2021 @ 15:30pm (UTC) - bsc: { - tvl: bscTVL, - staking: stakings([stakingContract_APX, daoContract], TOKEN_APX), - pool2: pool2s([stakingContract, stakingContractV2], [poolContract, poolContractV2]), - }, - ethereum: { - tvl: sumTokensExport({ - owner: '0xb40EEd68d7d6B3b6d6f4E93DE6239B7C53EFc786', tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.BUSD, - '0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', - ] - }) - }, - arbitrum: { - tvl: sumTokensExport({ - owners: - [ - '0xbad4ccc91ef0dfffbcab1402c519601fbaf244ef', - '0xb3879e95a4b8e3ee570c232b19d520821f540e48' - ], tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.DAI, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.WETH, - ] - }) - }, - era: { - tvl: sumTokensExport({ - owner: '0xD6f4e33063C881cE9a98e07E13673B92a637D908', tokens: [ - nullAddress, - ADDRESSES.era.USDC, - ] - }) - }, - manta: { - tvl: sumTokensExport({ - owner: '0xbad4ccc91ef0dfffbcab1402c519601fbaf244ef', tokens: [ - nullAddress, - ADDRESSES.manta.USDC, - ADDRESSES.manta.USDT, - ] - }) - }, - op_bnb: { - tvl: sumTokensExport({ - owner: '0x5A5454A6030FB50ceb3eb78977D140198A27be5e', tokens: [ - nullAddress, - ADDRESSES.op_bnb.USDT, - ADDRESSES.op_bnb.WBNB, - ] - }) - }, - base: { - tvl: sumTokensExport({ - owner: '0x9D93e5B2364070bC9837e91833F162430246DD57', tokens: [ - nullAddress, - ADDRESSES.base.USDbC, - ADDRESSES.base.WETH, - ] - }) - }, -}; diff --git a/projects/apostro/index.js b/projects/apostro/index.js deleted file mode 100644 index 16315495d55..00000000000 --- a/projects/apostro/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are depoisted in all vaults curated by Apostro.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x3B8DfE237895f737271371F339eEcbd66Face43e', - '0xf726311F85D45a7fECfFbC94bD8508a0A39958c6', - ], - eulerVaultOwners: [ - '0x3B8DfE237895f737271371F339eEcbd66Face43e', - '0xf726311F85D45a7fECfFbC94bD8508a0A39958c6', - ], - }, - base: { - morphoVaultOwners: [ - '0x3B8DfE237895f737271371F339eEcbd66Face43e', - '0xf726311F85D45a7fECfFbC94bD8508a0A39958c6', - ], - eulerVaultOwners: [ - '0x3B8DfE237895f737271371F339eEcbd66Face43e', - '0xf726311F85D45a7fECfFbC94bD8508a0A39958c6', - ], - }, - bsc: { - eulerVaultOwners: [ - '0x3B8DfE237895f737271371F339eEcbd66Face43e', - '0xf726311F85D45a7fECfFbC94bD8508a0A39958c6', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/applepie/index.js b/projects/applepie/index.js deleted file mode 100644 index 87493ee6e05..00000000000 --- a/projects/applepie/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens") -const ADDRESSES = require('../helper/coreAssets.json') -const LPS = ["0xf11A3f0EdB8D7B2ef36A4acDCf50D9214eC23FD1"] -const TOKENS = ["0x574f75bc522CB42ec2365dc54485D471f2eFb4B6"] - -module.exports = { - methodology: - "First Crosschain Pool as a Service Miner. Twist to generate 10%/daily reward.", - bsc: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.null, '0xBc4719D9F347EB1d9551d71862d2Cb4db99916f9'], - ['0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', '0x4356c2d63e9376024e7E953e18cfC7125e643eE5'], - [ADDRESSES.bsc.USDT, '0x6E8e3F4C058C5e0422E971CE27B0fc91175F4018'], - ] - }), - staking: sumTokensExport({ owners: ['0x77F7285d23ca4A9FdAe238d29a20a38482d9B4B7'], tokens: TOKENS, lps: LPS, useDefaultCoreAssets: true, }), - }, -} diff --git a/projects/apricot.js b/projects/apricot.js deleted file mode 100644 index 3a17583fde6..00000000000 --- a/projects/apricot.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require('./helper/solana') - -async function tvl() { - const owner = '7Ne6h2w3LpTNTa7CNYcUs7UkjeJT3oW7jcrXWfVScTXW' - return sumTokens2({ owner }) -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, - methodology: 'TVL consists of deposits made to the protocol and like other lending protocols, borrowed tokens are not counted', -} diff --git a/projects/aptin-finance-v2/index.js b/projects/aptin-finance-v2/index.js deleted file mode 100644 index 82fa742503b..00000000000 --- a/projects/aptin-finance-v2/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { getResource, getTableData, } = require("../helper/chain/aptos"); - -let data - -async function getData() { - if (!data) data = _getData() - return data - - async function _getData() { - const lendPool = await getResource('0x719b1538162dae27f6d818b384dcf82f198b5c5a90b605d3c9aec1189013a73c', '0x3c1d4a86594d681ff7e5d5a233965daeabdc6a15fe5672ceeda5260038857183::pool::LendProtocol') - const coins = lendPool.coins - const table = lendPool.pools.handle - - const params = { - key_type: '0x1::string::String', - value_type: '0x3c1d4a86594d681ff7e5d5a233965daeabdc6a15fe5672ceeda5260038857183::pool::Pool', - } - const coinInfos = await Promise.all(coins.map(i => getTableData({ table, data: { ...params, key: i } }))) - const balances = { - tvl: {}, - borrowed: {}, - } - coinInfos.forEach((data, i) => { - sdk.util.sumSingleBalance(balances.tvl, coins[i], data.supply_pool.total_value - data.borrow_pool.total_value, 'aptos') - sdk.util.sumSingleBalance(balances.borrowed, coins[i], data.borrow_pool.total_value, 'aptos') - }) - - return balances - } -} - - -module.exports = { - timetravel: false, - methodology: - "TVL contains the sum of the supply of all markets in the Aptin protocol contract, borrowed tokens are not counted.", - aptos: { - tvl: async () => { - const data = await getData() - return data.tvl - }, - borrowed: async () => { - const data = await getData() - return data.borrowed - }, - }, -}; diff --git a/projects/aptin-finance/index.js b/projects/aptin-finance/index.js deleted file mode 100644 index a5a815bd094..00000000000 --- a/projects/aptin-finance/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { getResource, getTableData, } = require("../helper/chain/aptos"); - -let data - -async function getData() { - if (!data) data = _getData() - return data - - async function _getData() { - const lendPool = await getResource('0xabaf41ed192141b481434b99227f2b28c313681bc76714dc88e5b2e26b24b84c', '0xb7d960e5f0a58cc0817774e611d7e3ae54c6843816521f02d7ced583d6434896::pool::LendProtocol') - const coins = lendPool.coins - const table = lendPool.pools.handle - - const params = { - key_type: '0x1::string::String', - value_type: '0xb7d960e5f0a58cc0817774e611d7e3ae54c6843816521f02d7ced583d6434896::pool::Pool', - } - const coinInfos = await Promise.all(coins.map(i => getTableData({ table, data: { ...params, key: i } }))) - const balances = { - tvl: {}, - borrowed: {}, - } - coinInfos.forEach((data, i) => { - sdk.util.sumSingleBalance(balances.tvl, coins[i], data.supply_pool.total_value - data.borrow_pool.total_value, 'aptos') - sdk.util.sumSingleBalance(balances.borrowed, coins[i], data.borrow_pool.total_value, 'aptos') - }) - - return balances - } -} - - -module.exports = { - timetravel: false, - methodology: - "TVL contains the sum of the supply of all markets in the Aptin protocol contract, borrowed tokens are not counted.", - aptos: { - tvl: async () => { - const data = await getData() - return data.tvl - }, - borrowed: async () => { - const data = await getData() - return data.borrowed - }, - }, -}; diff --git a/projects/aptoslaunch/index.js b/projects/aptoslaunch/index.js deleted file mode 100644 index 6c4e15694da..00000000000 --- a/projects/aptoslaunch/index.js +++ /dev/null @@ -1,141 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getResources, getTableData } = require("../helper/chain/aptos"); - -const extractCoinAddress = (str) => - str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); - -const APT = ADDRESSES.aptos.APT; - -const ALT = - "0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::aptos_launch_token::AptosLaunchToken"; - -const MOVE = - "0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::move_ecosystem_fund::MoveEcosystemFund"; - -const lzUSDT = - ADDRESSES.aptos.USDT_2; -const lzUSDC = - ADDRESSES.aptos.USDC_2; - -const MOVE_APT_LP = - "0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa::swap::LPToken<0x1::aptos_coin::AptosCoin, 0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::move_ecosystem_fund::MoveEcosystemFund>"; -const MOVE_USDT_LP = - "0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa::swap::LPToken<0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::move_ecosystem_fund::MoveEcosystemFund, 0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT>"; - -const SLT = - "0x8b2df69c9766e18486c37e3cfc53c6ce6e9aa58bbc606a8a0a219f24cf9eafc1::sui_launch_token::SuiLaunchToken"; - -const altLockBond = async (api) => { - let pools = [ - "0xb9c61f47e66ca6f718eb54f4c602dc4b47635311737e2735fa4e2fc70d91ad1b", // 3m pool - "0xd754841a8ec527e45b5ba13cf36ecd352210c181ed17662e4b05c879574cabd9", // 6m pool - "0x3eeb87a51d96c33b476c1af60509f025eb124e3e0b0ce5b1607a4a1ee6618c2a", // 9m pool - "0xaecc70624949829163d4e37e484c913a36f79df2ed8d1d249d74532a99b3d3b7", // 12m pool - "0x4896772e9d8059283ca16025697541df6cb895308bdd7f260f3404ed3513af12", // altslt pool - ]; - let poolResources = []; - - (await Promise.all(pools.map(async (i) => await getResources(i)))).forEach( - (e) => poolResources.push(...e) - ); - - poolResources - .filter((i) => i.type.includes("PoolInfo")) - .map((e) => api.add(ALT, - e.data.total_bond_in_amount - - e.data.distributed_reward / - (e.data.conversion_rate / e.data.conversion_precision) / - (e.data.bonus_rate / e.data.bonus_precision))) -}; - -const cakeLPsltStaking = async (api) => { - let resources = await getResources( - "0xd156fba6722a47b79c0884ed13b03ba5238e47b94ead837d5fba045feae4a4f9" - ); - - resources - .filter((i) => i.type.includes("0x1::coin::CoinStore")) - .map((i) => api.add(extractCoinAddress(i.type), i.data.coin.value)); - -}; - -const moveStaking = async (api) => { - let resources = await getResources( - "0x15ff26488572ac5183e27dad6cae1cfd36d2e82350fd85f58a85537279e0c3d" - ); - - let stakeInfo = resources.find( - (r) => - r.type === - "0xc2551e38e8d2aaf71b6f8b69458e6ebe5d649d4014fb90e546c95a394ca1f2f7::move_staking_v1::PoolInfo" - ); - - api.add(MOVE, stakeInfo.data.amount) -}; - -const getCoinInfo = async (coinType) => { - let coinResources = await getTableData({ - table: "0x234385765b658d074b82549cbd830e7bfc5c210f3e11a46998c2bed5e6429697", - data: { - key: coinType, - key_type: "0x1::string::String", - value_type: - "0xc2551e38e8d2aaf71b6f8b69458e6ebe5d649d4014fb90e546c95a394ca1f2f7::move_ibo_bond::AcceptCoinInfo", - }, - }); - return coinResources.total_amount; -}; - -const moveIbo = async (api, tvlType) => { - let resources = await getResources( - "0xffc234602dfd2f44613a886d293775c8de5400f91a5d3d554a037125544e1aae" - ); - - let iboInfo = resources.find( - (r) => r.type === `0x1::coin::CoinStore<${MOVE}>` - ); - - const acceptCoinArr = []; - - switch (tvlType) { - case 'tvl': - acceptCoinArr.push(APT, lzUSDC, lzUSDT,); - break; - case 'pool2': - acceptCoinArr.push(MOVE_APT_LP, MOVE_USDT_LP); - break; - case 'staking': - acceptCoinArr.push(ALT); - break; - default: - break; - } - - let bals = await Promise.all(acceptCoinArr.map(getCoinInfo)); - if (tvlType === 'staking' && iboInfo) - api.add(MOVE, iboInfo.data.coin.value) - api.addTokens(acceptCoinArr, bals) -}; - -const tvl = async (api) => { - await moveIbo(api, 'tvl'); - return api.getBalances() -}; -const pool2 = async (api) => { - await moveIbo(api, 'pool2'); - await cakeLPsltStaking(api); - return api.getBalances() -}; - -const staking = async (api) => { - await moveIbo(api, 'staking'); - await moveStaking(api); - await altLockBond(api) - return api.getBalances() -}; - -module.exports = { - timetravel: false, - methodology: "Counts the lamports for each coins in every pools of AptosLaunch.", - aptos: { tvl, staking, pool2 }, -}; diff --git a/projects/aptoswap/index.js b/projects/aptoswap/index.js deleted file mode 100644 index 18d5a293238..00000000000 --- a/projects/aptoswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -module.exports = dexExport({ - account: '0xa5d3ac4d429052674ed38adc62d010e52d7c24ca159194d17ddc196ddb7e480b', - poolStr: 'pool::Pool', - token0Reserve: i => i.data.x.value, - token1Reserve: i => i.data.y.value, -}) \ No newline at end of file diff --git a/projects/apwine/abi.json b/projects/apwine/abi.json deleted file mode 100644 index c41df6b992b..00000000000 --- a/projects/apwine/abi.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "registry_futureVaultCount": "uint256:futureVaultCount", - "registry_getFutureVaultAt": "function getFutureVaultAt(uint256 _index) returns (address futureVault)", - "registry_getIBTAddress": "address:getIBTAddress", - "ammregistry_getFutureAMMPool": "function getFutureAMMPool(address _futureVaultAddress ) returns (address _futureAMMPoolAddress )", - "futurevault_STAKED_TOKEN": "address:STAKED_TOKEN", - "futurevault_getPTAddress": "address:getPTAddress", - "ammPool_getFYTAddress": "address:getFYTAddress", - "ammPool_getFutureAddress": "address:getFutureAddress", - "ammPool_getIBTAddress": "address:getIBTAddress", - "ammPool_getPTAddress": "address:getPTAddress", - "ammPool_getPoolTokenAddress": "address:getPoolTokenAddress", - "ammPool_getUnderlyingOfIBTAddress": "address:getUnderlyingOfIBTAddress", - "ammPool_getPairWithID_BAD_OUTPUT_ABI": "function getPairWithID(uint256 id) returns (address tokenAddress , uint256[2] weights , uint256[2] balances , bool liquidityIsInitialized )" -} \ No newline at end of file diff --git a/projects/apwine/index.js b/projects/apwine/index.js deleted file mode 100644 index 84bd1713c08..00000000000 --- a/projects/apwine/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const abi = require("./abi.json") -const { pool2s } = require("../helper/pool2.js") - -// Same registry addresses for polygon and mainnet -const registry = '0x72d15eae2cd729d8f2e41b1328311f3e275612b9' -const AMMregistry = '0x6646A35e74e35585B0B02e5190445A324E5D4D01' - -// Pool2 - APW-XXX LP staked -const APW_WETH_cometh = '0x70797fc5b1c04541113b5ac20ea05cb390392e30' -const APW_MUST_cometh = '0x174f902194fce92ef3a51079b531f1e5073de335' -const APW_WETH_cometh_staking = '0x4e2114f7fa11dc0765ddd51ad98b6624c3bf1908' -const APW_MUST_cometh_staking = '0xb7ae78f49ac9bd9388109a4c5f53c6b79be4deda' - -const tvl = async (api) => { - const vaults = await api.fetchList({ lengthAbi: abi.registry_futureVaultCount, itemAbi: abi.registry_getFutureVaultAt, target: registry }) - const btAddresses = await api.multiCall({ abi: abi.registry_getIBTAddress, calls: vaults }) - const ammPools = await api.multiCall({ abi: abi.ammregistry_getFutureAMMPool, calls: vaults, target: AMMregistry }) - const ammPoolsUnderlying = await api.multiCall({ abi: abi.ammPool_getUnderlyingOfIBTAddress, calls: ammPools }) - - return api.sumTokens({ tokensAndOwners2: [btAddresses.concat(ammPoolsUnderlying), vaults.concat(ammPools)] }) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - //staking: staking(veAPW, APW), - }, - polygon: { - tvl, - pool2: pool2s([APW_WETH_cometh_staking, APW_MUST_cometh_staking], [APW_WETH_cometh, APW_MUST_cometh]) - }, - methodology: `Use the registry to retrieve futureVaults, and get for each vault the IBT which is the token that this vault holds - the user locked collateral`, - hallmarks: [ - [1677798000, "Announcement of V1 Retirement"] - ], -} diff --git a/projects/apyfinance/abi.json b/projects/apyfinance/abi.json deleted file mode 100644 index 908f90f741c..00000000000 --- a/projects/apyfinance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "underlyer": "address:underlyer", - "getPoolTotalValue": "uint256:getPoolTotalValue" -} \ No newline at end of file diff --git a/projects/apyfinance/index.js b/projects/apyfinance/index.js deleted file mode 100644 index 93b521b2e44..00000000000 --- a/projects/apyfinance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const abi = { - "underlyer": "address:underlyer", -} - -const liquidityContracts = [ - // DAI Liquidity - "0x75CE0E501e2E6776FcAAa514f394a88a772A8970", - // USDC Liquidity - "0xe18b0365D5D09F394f84eE56ed29DD2d8D6Fba5f", - // USDT Liquidity - "0xeA9c5a2717D5Ab75afaAC340151e73a7e37d99A7", -]; - -const ethTvl = async (api) => { - const underlyers = await api.multiCall({ abi: abi.underlyer, calls: liquidityContracts }) - return api.sumTokens({ tokensAndOwners2: [underlyers, liquidityContracts]}) -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - methodology: `The TVL for APY.Finance can be found in three contract addresses. Each address corresponds to the type of token that can be deposited, DAI, USDC, and USDT. After having the balance for each address, they are simply added together to get the total TVL.` -}; diff --git a/projects/aqua-network/index.js b/projects/aqua-network/index.js deleted file mode 100644 index dd622535546..00000000000 --- a/projects/aqua-network/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { get } = require('../helper/http') -const AQUA_STATS_URL = "https://amm-api.aqua.network/api/external/v1/statistics/totals/?size=all" - -let _data - -async function getData() { - if (!_data) - _data = get(AQUA_STATS_URL) - const data = await _data - const res = {} - data.forEach((item) => { - res[item.date] = item.tvl / 1e7 - }) - return res -} - -function formatUnixTimestamp(unixTimestamp) { - const date = new Date(unixTimestamp * 1000); // Convert Unix timestamp to milliseconds - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based - const day = String(date.getDate()).padStart(2, '0'); - return `${year}-${month}-${day}`; -} - -async function tvl(api) { - const key = formatUnixTimestamp(api.timestamp) - const allData = await getData() - const usdValue = allData[key] - if (!usdValue) - throw new Error('No data found for current date'); - api.addCGToken('tether', usdValue) -} - -module.exports = { - start: '2024-07-01', - misrepresentedTokens: true, - methodology: - 'counts the liquidity of the Pools on AMM, data is pulled from the Aquarius API.', - stellar: { tvl }, -}; diff --git a/projects/aqua-patina/index.js b/projects/aqua-patina/index.js deleted file mode 100644 index 595973de905..00000000000 --- a/projects/aqua-patina/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const apETH = '0xAaAaAAaBC6CBc3A1FD3a0fe0FDec43251C6562F5' - -async function tvl(api) { - const supply = await api.call({ target: apETH, abi: 'uint256:totalSupply' }) - const multiplier = await api.call({ target: apETH, abi: 'uint256:ethPerAPEth' }) - api.addGasToken(supply * multiplier / 1e18) -} - -module.exports = { - doublecounted: true, - methodology: 'Returns the ETH equivalent value of the total supply of apETH tokens on Ethereum. This is calculated by the multiplier used in the contract to determine the ETH value of each token when minting apETH.', - ethereum: { - tvl, - } -} \ No newline at end of file diff --git a/projects/aquabera/abi.json b/projects/aquabera/abi.json deleted file mode 100644 index 1d18d506e2c..00000000000 --- a/projects/aquabera/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getTotalAmounts": "function getTotalAmounts() view returns (uint256 total0, uint256 total1)" -} \ No newline at end of file diff --git a/projects/aquabera/index.js b/projects/aquabera/index.js deleted file mode 100644 index e4e3751c00a..00000000000 --- a/projects/aquabera/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -module.exports = { - methodology: "Vault deposits", - doublecounted: true, -} - -const defaultEvent = 'event ICHIVaultCreated (address indexed sender, address ichiVault, address tokenA, bool allowTokenA, address tokenB, bool allowTokenB, uint24 fee, uint256 count)' -const algebraEvent = 'event ICHIVaultCreated (address indexed sender, address ichiVault, address tokenA, bool allowTokenA, address tokenB, bool allowTokenB, uint256 count)' - -const config = { - berachain: { - vaultConfigs: [ - { factory: '0x1bf5e51eCacdfEA65ae9276fd228bB8719ffcA7E', fromBlock: 788774, isAlgebra: true, }, // Honeypot - { factory: '0x8cCd02E769e6A668a447Bd15e134C31bEccd8182', fromBlock: 784713, isAlgebra: false, }, // Kodiak - { factory: '0x7d125D0766C968353454b7A67bB2D61a97E5665d', fromBlock: 969565, isAlgebra: true, }, // Wasabee - ], - }, -} - -Object.keys(config).forEach(chain => { - const { vaultConfigs = [] } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - for (const { factory, fromBlock, isAlgebra, } of vaultConfigs) { - const eventAbi = isAlgebra ? algebraEvent : defaultEvent - const logs = await getLogs2({ api, target: factory, eventAbi: eventAbi, fromBlock, }) - const vaultBalances = await api.multiCall({ abi: "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", calls: logs.map(l => l.ichiVault), permitFailure: true }) - vaultBalances.forEach((b, i) => { - if (!b) return - const { tokenA, tokenB } = logs[i] - api.add(tokenA, b.total0) - api.add(tokenB, b.total1) - }) - } - } - } -}) diff --git a/projects/aquadex-v3/index.js b/projects/aquadex-v3/index.js deleted file mode 100644 index f02bf5326b9..00000000000 --- a/projects/aquadex-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - water: { factory: '0xc8F2534FF7c88EFeacF4Fdb0E81D87c6235C3bEA', fromBlock: 1, }, -}) \ No newline at end of file diff --git a/projects/aqualoan/index.js b/projects/aqualoan/index.js deleted file mode 100644 index 9ffc6fb2511..00000000000 --- a/projects/aqualoan/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", -}; - -const CONFIG = { - bsc: ['0xDc33eAA50B8707f791478Cec324e451E20FDa7ed'] -}; - -const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: abi.getAllReservesTokens }); - const calls = [] - - poolDatas.map((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => calls.push({ target: pool, params: tokenAddress })); - }); - const reserveData = await api.multiCall({ abi: isBorrowed ? abi.getReserveData : abi.getReserveTokensAddresses, calls, }) - const tokensAndOwners = [] - reserveData.forEach((data, i) => { - const token = calls[i].params - if (isBorrowed) { - api.add(token, data.totalVariableDebt) - api.add(token, data.totalStableDebt) - } else - tokensAndOwners.push([token, data.aTokenAddress]) - }) - - if (isBorrowed) return api.getBalances() - return api.sumTokens({ tokensAndOwners }) -} - -module.exports.methodology = "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending." - -Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - borrowed: (api) => fetchReserveData(api, poolDatas, true), - }; -}); - -module.exports.hallmarks = [ -] diff --git a/projects/aquaprotocol/index.js b/projects/aquaprotocol/index.js deleted file mode 100644 index c131e26bbfa..00000000000 --- a/projects/aquaprotocol/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') -const ADDRESSES = require("../helper/coreAssets.json"); - -const AQUA_ADDRESS = 'EQAWDyxARSl3ol2G1RMLMwepr3v6Ter5ls3jiAlheKshgg0K' - -module.exports = { - methodology: 'Total amount of collateral locked in the Aqua Protocol (EQAWDyxARSl3ol2G1RMLMwepr3v6Ter5ls3jiAlheKshgg0K)', - start: '2024-09-16', - deadFrom: '2025-07-07', - hallmarks: [ - ['2025-07-07', 'Project officially ceased operations'], - ], - ton: { - tvl: sumTokensExport({ owner: AQUA_ADDRESS, tokens: [ADDRESSES.null]}), - } -} diff --git a/projects/aquarius-loan/index.js b/projects/aquarius-loan/index.js deleted file mode 100644 index 0612d8804f2..00000000000 --- a/projects/aquarius-loan/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const { stakingUnknownPricedLP } = require('../helper/staking') - -module.exports = { - arbitrum: compoundExports2({ comptroller: '0xf854c6b57e6d8ec3e790ec6da1a13060d19549d4', cether: '0x13f9a7f33550fe935bf7b544e536584d30ecf50a'}), - core: compoundExports2({ comptroller: '0x6056Eb6a5634468647B8cB892d3DaA5F816939FC', cether: '0x03ef96f537a7cda4411c8643afd9d8814d5b4906'}) -}; - -module.exports.core.staking = stakingUnknownPricedLP('0x959C7898318DC3c8fD11cbC5000f4e36F75144EC', '0x204e2D49b7cDA6d93301bcF667A2Da28Fb0e5780', 'core', '0xeaf1a065f85cf02547002d26aa42ee4516e21aa1') \ No newline at end of file diff --git a/projects/aquarius/index.js b/projects/aquarius/index.js deleted file mode 100644 index 211b724d865..00000000000 --- a/projects/aquarius/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {getLiquityTvl} = require('../helper/liquity') - -const TROVE_MANAGER_ADDRESS = "0xC87D230B3239d1A90463463d8adDFD70709D391b"; - -module.exports = { - fantom: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS), - }, - methodology: `Aquarius does not run its own web interface deposits for it's TVL are made at third-party frontend operators incetivized with the AQU token. TVL consists of deposits made to mint aUSD.` -}; diff --git a/projects/aquas-trade/index.js b/projects/aquas-trade/index.js deleted file mode 100644 index 9e1cab7675b..00000000000 --- a/projects/aquas-trade/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - europa: { tvl: getUniTVL({ - factory: '0xc318a82CB7c2B0faf7e355BB8F285016956aBF55', - useDefaultCoreAssets: true, - }),}, -} diff --git a/projects/ara-finance/index.js b/projects/ara-finance/index.js deleted file mode 100644 index c18c88ea3e1..00000000000 --- a/projects/ara-finance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const ara = "0x2ced20fdfcbe72c27a607d0c9ab1c9ada598c60f"; -const stakingContract = "0x19672375464ccbf1f8c6c7c32d8d8987d27262a5"; -const treasuryContract = "0x674969110CA4004A804eeA5043CD9302996900AC"; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasuryContract, [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0x9dd1cde570b96ba13e63d317e23637651142227c", true] // araMimJLP - ], "avax", stakingContract, ara, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/arable-protocol/index.js b/projects/arable-protocol/index.js deleted file mode 100644 index 02538413b2a..00000000000 --- a/projects/arable-protocol/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const acre = "0x00ee200df31b869a321b10400da10b561f3ee60d"; -const stakingContract = "0x4bc722Cd3F7b29ae3A5e0a17a61b72Ea5020502B"; -const farming = "0x598EBAC38cF211749b1277c9a34d217226A476Af"; -const acrewavaxpgl = "0x64694FC8dFCA286bF1A15b0903FAC98217dC3AD7"; - - -module.exports = { - avax:{ - tvl: async () => ({}), - staking: staking(stakingContract, acre), - pool2: pool2(farming, [acrewavaxpgl], "avax") - } -} \ No newline at end of file diff --git a/projects/arbera/index.js b/projects/arbera/index.js deleted file mode 100644 index 59fdedbd0e4..00000000000 --- a/projects/arbera/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const STAKED_LBGT_VAULT = "0xFace73a169e2CA2934036C8Af9f464b5De9eF0ca"; -const BR_LBGT_ADDRESS = "0x883899D0111d69f85Fdfd19e4B89E613F231B781"; -const LBGT_ADDRESS = "0xBaadCC2962417C01Af99fb2B7C75706B9bd6Babe"; - -const config = { - berachain: { indexManager: "0x262619334907c70A826623CE24C38281C3dBdE13", indexManagerV1_1: "0xf4735ba574964B7754c2F165146911f03ec94D30"}, -}; - -const abi = { - allIndexes: "function allIndexes() view returns (tuple(address index, bool verified)[])", - getAllAssets: "function getAllAssets() view returns (tuple(address token, uint256 weighting, uint256 basePriceUSDX96, address c1, uint256 q1)[])", - lpStakingPool: "address:lpStakingPool", - stakingToken: "address:stakingToken", - pairedLPToken: "address:PAIRED_LP_TOKEN", - convertToAssets: "function convertToAssets(uint256 shares) view returns (uint256 assets)", -} - -const getTvl = async (api, isStaking) => { - const { indexManager, indexManagerV1_1 } = config[api.chain]; - const ownerTokens = []; - var indexes = [] - - // Get all indexes - if(indexManager){ - indexes = ( await api.call({ abi: abi.allIndexes, target: indexManager })).map((i) => i.index); - - if (indexManagerV1_1) { - var indexesV1_1 = []; - indexesV1_1 = ( await api.call({ abi: abi.allIndexes, target: indexManagerV1_1 })).map((i) => i.index); - for (let i = 0; i < indexesV1_1.length; i++) { - if (!indexes.includes(indexesV1_1[i])) { - indexes.push(indexesV1_1[i]); - } - } - } - - const stakingPools = await api.multiCall({ abi: abi.lpStakingPool, calls: indexes }); - const assetsResult = await api.multiCall({ abi: abi.getAllAssets, calls: indexes }); - const stakingTokens = await api.multiCall({ abi: abi.stakingToken, calls: stakingPools }); - - assetsResult.forEach((assets, i) => { ownerTokens.push([assets.map((i) => i.token), indexes[i]]) }); - stakingTokens.forEach((stakingToken, i) => ownerTokens.push([[stakingToken], stakingPools[i]])); - - // Get LBGT in brLBGT - const stLBGTBalance = await api.call({ - target: STAKED_LBGT_VAULT, - abi: 'erc20:balanceOf', - params: [BR_LBGT_ADDRESS], - }); - const lbgtBalance = await api.call({ - target: STAKED_LBGT_VAULT, - abi: abi.convertToAssets, - params: [stLBGTBalance], - }); - api.add(LBGT_ADDRESS, lbgtBalance); - } - - await sumTokens2({ api, ownerTokens, blacklistedTokens: indexes, resolveLP: true, log: true }); - - indexes.forEach((i) => api.removeTokenBalance(i)); - Object.keys(api.getBalances()).forEach((token) => { - let remove = false; - if (isStaking) remove = !remove; - if (remove) api.removeTokenBalance(token); - }); - return api.getBalances(); -}; - -module.exports = { - methodology: "Aggregates TVL in all Arbera indexes created", - hallmarks: [[1743091200, "Berachain launch"], [1748383200, "Dens V1.1 + arBERO Launch"]], -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => getTvl(api, false), - staking: async (api) => getTvl(api, true), - } -}) diff --git a/projects/arbicheems/index.js b/projects/arbicheems/index.js deleted file mode 100644 index 8ccb415a599..00000000000 --- a/projects/arbicheems/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -const cheems = "0x75a2f30929C539E7d4eE033c9331b89F879c0cf7"; -const stakingContract = "0xaaCcB989FE1084c6935f09aE4BBD49AfF58Bdb94"; - -const mim = ADDRESSES.arbitrum.MIM; -const mimPool = "0x79F12596B78F9E982bDaB6e2d83D4bc155672372"; -const ethPool = "0xd495Beb0011e3DFEC0C93376f5216C1C3dD01C23"; - -const cheemsEthPool = "0x1382EcDf09507ba87022c79312DfAfb2A5063d73"; -const cheemsEthSLP = "0xce786f1f3d3025fe4a64e37d28fa76311ff5253f"; - -module.exports = { - deadFrom: '2022-02-22', - arbitrum: { - tvl: sumTokensExport({ tokensAndOwners: [[nullAddress, ethPool], [mim, mimPool]] }), - staking: staking(stakingContract, cheems,), - pool2: pool2(cheemsEthPool, [cheemsEthSLP],), - }, -}; diff --git a/projects/arbinyan/index.js b/projects/arbinyan/index.js deleted file mode 100644 index f8a6bd5f6fa..00000000000 --- a/projects/arbinyan/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { pool2 } = require("../helper/pool2"); -const { staking } = require("../helper/staking"); -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -const stakingETHContract = "0x9F7968de728aC7A6769141F63dCA03FD8b03A76F"; - -const stakingNYANContract = "0x32e5594F14de658b0d577D6560fA0d9C6F1aa724"; -const NYAN = "0xed3fb761414da74b74f33e5c5a1f78104b188dfc"; - -const stakingPool2Contract = "0x62FF5Be795262999fc1EbaC29277575031d2dA2C"; -const NYAN_WETH_SLP = "0x70df9dd83be2a9f9fcc58dd7c00d032d007b7859"; - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - staking: staking(stakingNYANContract, NYAN), - pool2: pool2(stakingPool2Contract, NYAN_WETH_SLP), - tvl: sumTokensExport({ owner: stakingETHContract, tokens: [nullAddress] }), - }, - methodology: - "Counts as TVL the ETH asset deposited through StakingETH Contract, and we count Staking and Pool2 parts in the same way", -}; diff --git a/projects/arbirise-finance/index.js b/projects/arbirise-finance/index.js deleted file mode 100644 index d6ef6d37e07..00000000000 --- a/projects/arbirise-finance/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const abi = { - "stakedTokenTotal": "function stakedTokenTotal(address) view returns (uint256)", - "getNumTokensStaked": "uint256:getNumTokensStaked", - "getTokenStakedAt": "function getTokenStakedAt(uint256 index) view returns (address token)" -} -const { sumTokens2 } = require("../helper/unwrapLPs"); - -async function tvl(api) { - const staker = '0x6a894bd1A5476Bdc52B709623B8751e244E6e975'; - const tokens = await api.fetchList({ lengthAbi: abi.getNumTokensStaked, itemAbi: abi.getTokenStakedAt, target: staker}) - const bals = await api.multiCall({ abi: abi.stakedTokenTotal, calls: tokens, target: staker}) - api.add(tokens, bals) - return sumTokens2({ api, resolveLP: true}) -} - - -module.exports = { - methodology: - "TVL is calculated by summing up all reward program total staked values.", - arbitrum: { - tvl, - }, -}; diff --git a/projects/arbis.js b/projects/arbis.js deleted file mode 100644 index 901f6b28892..00000000000 --- a/projects/arbis.js +++ /dev/null @@ -1,41 +0,0 @@ -const { staking } = require('./helper/staking') - -async function tvl(api) { - const vaults1 = [ - '0x47a156668F1Ecc659Efbbf4910508Ace1b46a49b', - '0xdc2d66044e894d0726570bdc03d2123ab8f2cd51', - '0x5ec477eda75303450a4185b3557c2c2fbb85a9fc', - '0x69f9a2eF122180366108583F2032DfB2030D8F96', - '0x374e9F3AFFB6a2c3E388aA69c21D925C193aF13a', - '0x1922c36f3bc762ca300b4a46bb2102f84b1684ab', - ] - const vaults = [ - '0x32e5594F14de658b0d577D6560fA0d9C6F1aa724', - '0x62FF5Be795262999fc1EbaC29277575031d2dA2C', - '0x2C5058325373d02Dfd6c08E48d91FcAf8fD49f45', - '0xE340031b61A394c7811868ef81d2eacc79098BC2', - '0xF6a37745FC911666132E8b8F29fC9c4F5C4a703D', - '0xb970E280F9ddAA3349ab9F3ecf778970cDE46655', - ] - - const tokens = await api.multiCall({ abi: abi.stakedToken, calls: vaults}) - const bals = await api.multiCall({ abi: abi.totalSupply, calls: vaults}) - api.add(tokens, bals) - const tokens1 = await api.multiCall({ abi: abi.depositToken, calls: vaults1}) - const bals1 = await api.multiCall({ abi: abi.totalDeposits, calls: vaults1}) - api.add(tokens1, bals1) -} - -module.exports = { - arbitrum: { - tvl, - staking: staking('0xBf00759D7E329d7A7fa1D4DCdC914C53d1d2db86', '0x9f20de1fc9b161b34089cbeae888168b44b03461') - } -} - -const abi = { - depositToken: "address:depositToken", - totalDeposits: "uint256:totalDeposits", - stakedToken: "address:stakedToken", - totalSupply: "uint256:totalSupply", -} \ No newline at end of file diff --git a/projects/arbiswap/index.js b/projects/arbiswap/index.js deleted file mode 100644 index 57ffd89fc75..00000000000 --- a/projects/arbiswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -const dexTVL = getUniTVL({ factory: '0x88F1E030eb4C6C4320Da3992070bAF6c648ce37f', useDefaultCoreAssets: true }) - -module.exports = { - // hallmarks: [ - // [1677744000,"Rug Pull"] - // ], - misrepresentedTokens: true, - methodology: `Uses factory(0x88F1E030eb4C6C4320Da3992070bAF6c648ce37f) address and whitelisted tokens address to find and price Liquidity Pool pairs. We also have our native token $ARBI staking.`, - arbitrum: { - tvl: dexTVL, - } -}; diff --git a/projects/arbitrove/index.js b/projects/arbitrove/index.js deleted file mode 100644 index b46df466974..00000000000 --- a/projects/arbitrove/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { nullAddress } = require("../helper/unwrapLPs"); - -const ALP_TOKEN = "0xb49B6A3Fd1F4bB510Ef776de7A88A9e65904478A"; -const GMLP_ORACLE = "0x4997916792decbF5DAcbaFc47CF2071AD9Fe6456"; -const GMLP_TOKEN = "0xc16ce97d04de6c5e0391e308dbc17a397183067b"; -const getAmountAcrossStrategies = "function getAmountAcrossStrategies(address coin) view returns (uint256)"; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: ALP_TOKEN, - eventAbi: "event SetCoinCap(address indexed coin, uint256 indexed cap)", - onlyArgs: true, - fromBlock: 67635825, - }); - - const gmlpTargets = await api.call({ target: GMLP_ORACLE, abi: "function getTargets() view returns (tuple(address coin, uint256 weight)[])", }); - - const alpTokens = logs.map((l) => l.coin); - const gmlpTokens = gmlpTargets.map((l) => l.coin); - const bals = await api.multiCall({ target: ALP_TOKEN, abi: getAmountAcrossStrategies, calls: alpTokens }) - const gmlpBals = await api.multiCall({ target: GMLP_TOKEN, abi: getAmountAcrossStrategies, calls: gmlpTokens }) - api.addTokens(alpTokens, bals) - api.addTokens(gmlpTokens, gmlpBals) - - return api.sumTokens(({ owners: [ALP_TOKEN, GMLP_TOKEN], tokens: [nullAddress] })) -} - -module.exports = { - arbitrum: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/arbitrum/index.js b/projects/arbitrum/index.js deleted file mode 100644 index df07c4dfb7d..00000000000 --- a/projects/arbitrum/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC", - "0x8315177aB297bA92A06054cE80a67Ed4DBd7ed3a", - "0xcEe284F754E854890e311e3280b767F80797180d", - "0xA10c7CE4b876998858b1a9E12b10092229539400", - ], - fetchCoValentTokens: true, - permitFailure: true - }), - }, -}; diff --git a/projects/arbitrumNova/index.js b/projects/arbitrumNova/index.js deleted file mode 100644 index fd8b47632b6..00000000000 --- a/projects/arbitrumNova/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xC1Ebd02f738644983b6C4B2d440b8e77DdE276Bd", - "0x23122da8C581AA7E0d07A36Ff1f16F799650232f", - "0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf", - "0xA2e996f0cb33575FA0E36e8f62fCd4a9b897aAd3" - ], - fetchCoValentTokens: true, - blacklistedTokens: [ - "0xe3dbc4f88eaa632ddf9708732e2832eeaa6688ab" // Arbius, bridged whole supply - ] - }), - }, -}; diff --git a/projects/arbitrumexchange-v3/index.js b/projects/arbitrumexchange-v3/index.js deleted file mode 100644 index e3577288206..00000000000 --- a/projects/arbitrumexchange-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - arbitrum: { - factory: "0x855f2c70cf5cb1d56c15ed309a4dfefb88ed909e", - fromBlock: 86863305, - }, -}); \ No newline at end of file diff --git a/projects/arbius/index.js b/projects/arbius/index.js deleted file mode 100644 index a59604af342..00000000000 --- a/projects/arbius/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const stakingContracts = [ - "0x3A7e6915f997Cdbc8BFB090051AA22E37Dab345d", // votingEscrow -]; -const stakingLpContracts = [ - "", -]; - -const AIUS = "0x4a24B101728e07A52053c13FB4dB2BcF490CAbc3"; -const WETH_AIUS_UNIV2 = ""; - - -module.exports = { - misrepresentedTokens: false, - arbitrum: { - staking: stakings(stakingContracts, AIUS), - tvl: async() => ({}), - }, - /* ethereum: { - pool2: stakings(stakingLpContracts, [WETH_AIUS_UNIV2]), - tvl: async() => ({}) - }, */ - methodology: "Counts staked $AIUS in the voting escrow contract", -}; diff --git a/projects/arbor-finance/index.js b/projects/arbor-finance/index.js deleted file mode 100644 index 7eac787a02c..00000000000 --- a/projects/arbor-finance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const bondFactory = '0x1533eb8c6cc510863b496d182596ab0e9e77a00c' - -async function tvl(api) { - - const logs = await getLogs({ - api, - fromBlock: 15785514, - topic: 'BondCreated(address,string,string,address,uint256,address,address,uint256,uint256,uint256)', - eventAbi: 'event BondCreated (address newBond, string name, string symbol, address owner, uint256 maturity, address paymentToken, address collateralToken, uint256 collateralTokenAmount, uint256 convertibleTokenAmount, uint256 bonds)', - target: bondFactory, - }) - const toa = logs.map(i => ([i.topics[3], i.args.newBond])) - return sumTokens2({ api, tokensAndOwners: toa, }) -} - -module.exports = { - methodology: "Sum the collateral value of active Arbor Finance bonds.", - ethereum: { - tvl, - }, -}; diff --git a/projects/arbswap-stableswap/index.js b/projects/arbswap-stableswap/index.js deleted file mode 100644 index c9f7622baa5..00000000000 --- a/projects/arbswap-stableswap/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const { factory, fromBlock, } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - topics: ['0x48dc7a1b156fe3e70ed5ed0afcb307661905edf536f15bb5786e327ea1933532'], - fromBlock, - eventAbi: 'event NewStableSwapPair (address indexed swapContract, address tokenA, address tokenB, address tokenC, address LP)', - onlyArgs: true, - }) - return sumTokens2({ api, ownerTokens: logs.map(({ tokenA, tokenB, tokenC, swapContract }) => ([[tokenA, tokenB, tokenC], swapContract])) }) -} - -const config = { - arbitrum: { factory: '0x3a52e9200Ed7403D9d21664fDee540C2d02c099d', fromBlock: 78843656 }, - arbitrum_nova: { factory: '0x11f6206AEF570aE946C0117C8f4B298B0A706f18', fromBlock: 3732144 }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/arbswap/index.js b/projects/arbswap/index.js deleted file mode 100644 index 173cf14f32f..00000000000 --- a/projects/arbswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - arbitrum_nova: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xf6239423FcF1c19ED2791D9648A90836074242Fd', - }) - }, - arbitrum: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xd394e9cc20f43d2651293756f8d320668e850f1b', - }) - } -}; diff --git a/projects/arc-swap/index.js b/projects/arc-swap/index.js deleted file mode 100644 index a84d7bd89df..00000000000 --- a/projects/arc-swap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require('../helper/masterchef') - -const token = "0xC82E3dB60A52CF7529253b4eC688f631aad9e7c2"; -const masterchef = "0x1575F4b5364dDBd6c9C77D1fE603E2d76432aA6a"; - -module.exports = { - ...masterChefExports(masterchef, "ethereum", token) -} \ No newline at end of file diff --git a/projects/arca-labs/index.js b/projects/arca-labs/index.js deleted file mode 100644 index 3a115b626af..00000000000 --- a/projects/arca-labs/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const RCOIN = "0x252739487c1fa66eaeae7ced41d6358ab2a6bca9" - -module.exports = { - ethereum: { - tvl: async (api) => { - const [usdcDecimals, rcoinDecimals,totalSupply] = await Promise.all([ - api.call({target: ADDRESSES.ethereum.USDC, abi:'erc20:decimals'}), - api.call({target: RCOIN, abi:'erc20:decimals'}), - api.call({target: RCOIN, abi:'erc20:totalSupply'}) - ]) - // Adjusting the total supply of RCOIN to match the decimal places of USDC - // USDC has 6 decimals, whereas RCOIN has 8 decimals - const rcoinDecimalAdjustment = Math.pow(10, usdcDecimals) / Math.pow(10, rcoinDecimals); - const adjustedSupply = totalSupply * rcoinDecimalAdjustment - - return api.add(ADDRESSES.ethereum.USDC, adjustedSupply) - } - } -} \ No newline at end of file diff --git a/projects/arcade-xyz/abi.js b/projects/arcade-xyz/abi.js deleted file mode 100644 index fd9ab69d42f..00000000000 --- a/projects/arcade-xyz/abi.js +++ /dev/null @@ -1,5 +0,0 @@ -const VAULT_FACTORY_ABI = 'event VaultCreated(address vault,address to)' - -module.exports = { - VAULT_FACTORY_ABI, -}; diff --git a/projects/arcade-xyz/constants.js b/projects/arcade-xyz/constants.js deleted file mode 100644 index d4d34ddf6cf..00000000000 --- a/projects/arcade-xyz/constants.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const SUBGRAPH_URL = 'https://subgraph.satsuma-prod.com/c59d37e827d0/non-fungible-technologies/protocol/api'; -const CHAIN = 'ethereum'; - -// V2 Protocol -const LOAN_CORE = '0x81b2f8fc75bab64a6b144aa6d2faa127b4fa7fd9'; -const VAULT_FACTORY_A = '0x6e9b4c2f6bd57b7b924d29b5dcfca1273ecc94a2'; -const VAULT_FACTORY_APE_STAKING_A = '0x666faa632e5f7ba20a7fce36596a6736f87133be'; -const VAULT_FACTORY_SUPER_RARE = '0x7594916540e60fc8d6e9ba5c3c83632f7001cf53'; - -// V3 Protocol -const LOAN_CORE_V3 = '0x89bc08ba00f135d608bc335f6b33d7a9abcc98af'; -const VAULT_FACTORY_V3 = '0x269363665dbb1582b143099a3cb467e98a476d55'; - -// Staking -const STAKING_REWARDS = "0x80bDdd56b947c547Ab8964D80E98E42Ff77a5793"; -const SINGLE_SIDED_STAKING = "0x72854FBb44d3dd87109D46a9298AEB0d018740f0"; -const ARCD = "0xe020B01B6fbD83066aa2e8ee0CCD1eB8d9Cc70bF"; -const ARCD_WETH_LP = "0x06af8C358c0787640588734E4733A779961a2bca"; -const WETH = ADDRESSES.ethereum.WETH; - -const VAULT_FACTORIES = new Set(); -VAULT_FACTORIES.add(VAULT_FACTORY_A); -VAULT_FACTORIES.add(VAULT_FACTORY_APE_STAKING_A); -VAULT_FACTORIES.add(VAULT_FACTORY_SUPER_RARE); -VAULT_FACTORIES.add(VAULT_FACTORY_V3); - -const START_BLOCKS = new Map(); -START_BLOCKS.set(VAULT_FACTORY_A, 15045028); -START_BLOCKS.set(VAULT_FACTORY_APE_STAKING_A, 16128500); -START_BLOCKS.set(VAULT_FACTORY_SUPER_RARE, 17787255); -START_BLOCKS.set(VAULT_FACTORY_V3, 18032790); - -module.exports = { - CHAIN, - LOAN_CORE, - LOAN_CORE_V3, - START_BLOCKS, - SUBGRAPH_URL, - VAULT_FACTORY_A, - VAULT_FACTORY_APE_STAKING_A, - VAULT_FACTORY_SUPER_RARE, - VAULT_FACTORY_V3, - VAULT_FACTORIES, - STAKING_REWARDS, - SINGLE_SIDED_STAKING, - ARCD, - ARCD_WETH_LP, - WETH, -} \ No newline at end of file diff --git a/projects/arcade-xyz/index.js b/projects/arcade-xyz/index.js deleted file mode 100644 index 6164d7156d1..00000000000 --- a/projects/arcade-xyz/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const { fetchVaults, fetchLoans } = require('./queries'); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { staking } = require("../helper/staking"); -const { sumArtBlocks, isArtBlocks, } = require('../helper/nft'); - -const { LOAN_CORE, LOAN_CORE_V3, START_BLOCKS, VAULT_FACTORY_A, ARCD_WETH_LP, STAKING_REWARDS, SINGLE_SIDED_STAKING, ARCD, } = require('./constants'); - -// to run: node test.js projects/arcade-xyz/index.js - -// Uses chainlink oracle floor price for all whitelisted NFTS owned by every vault and the Loan Core contract. -// Tokens owned by vaults have been wrapped into an Arcade.xyz vault. Tokens owned by the Loan Core contract -// are currently in escrow. - -async function tvl(api) { - const block = await api.getBlock(); - - // Get list of all vaults - const vaults = await fetchVaults(block) - const balances = {} - const artBlockOwners = [] - - // Sum up total count of each token - for (const vault of vaults) { - const collateral = vault.collateral ?? []; - - for (const token of collateral) { - const { collectionAddress, amount } = token; - if (isArtBlocks(collectionAddress)) { - artBlockOwners.push(vault.address) - continue; - } - sdk.util.sumSingleBalance(balances, collectionAddress, amount, api.chain) - } - } - - await sumArtBlocks({ balances, api, owners: artBlockOwners, }) - - // Initialize balances with tokens held by the escrow contract, Loan Core - return sumTokens2({ - balances, - owners: [LOAN_CORE, LOAN_CORE_V3], - resolveNFTs: true, - api, - }); -} - -// Fetches all active loans, their payable curency and amount borrowed then sums it up. -async function borrowed(api) { - const loans = await fetchLoans(await api.getBlock()); - - // Iterate over each loan to sum up principal by currency - for (const loan of loans) { - const { payableCurrency, principal, interestRate } = loan; - api.add(payableCurrency, principal) - const interest = principal * interestRate / 1e21 - api.add(payableCurrency, interest) - } -} - -module.exports = { - methodology: `Sums up the floor value of all vaulted and escrowed NFTs with Chainlink price feeds. Borrowed coins are not counted towards the TVL`, - start: START_BLOCKS[VAULT_FACTORY_A], - ethereum: { - tvl, - staking: staking([SINGLE_SIDED_STAKING, STAKING_REWARDS,], [ARCD]), - pool2: staking(STAKING_REWARDS, [ARCD_WETH_LP]), - borrowed - }, - hallmarks: [ - [1660762840, 'V2 Protocol Launch'], - [1694026811, 'V3 Protocol Launch'], - ], -} diff --git a/projects/arcade-xyz/queries.js b/projects/arcade-xyz/queries.js deleted file mode 100644 index 0fed2d7cd23..00000000000 --- a/projects/arcade-xyz/queries.js +++ /dev/null @@ -1,92 +0,0 @@ -const { gql, request } = require('graphql-request'); -const { SUBGRAPH_URL } = require('./constants'); - -// Max recursion depth -const MAX_DEPTH = 100; - -// Fetch from the SG until there are no results -async function fetchPaginated(query, key = '', first = 100, block, cursor = 0, depth = 0) { - // Defensive so we don't give DeFiLlama engineers a headache - if (cursor < 0 || depth >= MAX_DEPTH) { - return []; - } - - let q = query.replace('', first); - q = q.replace('', cursor); - q = q.replace('', ''+block); - - const res = await request(SUBGRAPH_URL, q); - - // Check if the HTTP request was successful but the Subgraph returned an error - if (res.errors && res.errors.length > 0) { - const { errors } = res; - - let message; - - // It should always be an array, but lets be safe - if (Array.isArray(errors)) { - message = errors.join('\n'); - } else if (typeof errors === 'string') { - message = errors; - } else { - message = 'Unknown error fetching Subgraph data for arcade-xyz project'; - } - - throw new Error(message); - } - - const results = res[key]; - - // There could be more results if the length matches the query limit - if (Array.isArray(results) && results.length >= first) { - // Get the cursor for the last item - const lastCursor = results[first - 1].cursor ?? -1; - - // Fetch more results starting from the last cursor + 1, inclusive - const moreResults = await fetchPaginated(query, key, first, block, lastCursor + 1, depth + 1); - return results.concat(moreResults); - } - - return results; -} - -// Fetches vaults that have tokens deposited and are available to be used on the platform. -// Broken vaults (withdrawEnabled) cannot be used in a loan. -const fetchVaultQuery = gql` - query { - arcadeVaults(first: , block: { number: }, where:{hasCollateral:true, withdrawEnabled:false, cursor_gte: }) { - address - collateral { - collectionAddress - amount - } - } - } -`; - -// Helper function to fetch the first 1000 active -async function fetchVaults(block) { - return fetchPaginated(fetchVaultQuery, 'arcadeVaults', 1000, block); -} - -// Fetches active loans -const fetchLoansQuery = gql` - query { - arcadeLoans(first: , block: { number: }, where :{ state: "Active", cursor_gte: }) { - payableCurrency - principal - interestRate - } - } -` - -// Helper function to fetch the first 1000 active loans -async function fetchLoans(block) { - return fetchPaginated(fetchLoansQuery, 'arcadeLoans', 1000, block); -} - -module.exports = { - fetchLoans, - fetchPaginated, - fetchVaults, -} diff --git a/projects/arcadia-finance-v2/index.js b/projects/arcadia-finance-v2/index.js deleted file mode 100644 index 2235a93cc71..00000000000 --- a/projects/arcadia-finance-v2/index.js +++ /dev/null @@ -1,197 +0,0 @@ -const { sumTokens2, unwrapSlipstreamNFT } = require("../helper/unwrapLPs"); -const utils = require('../helper/utils') - -const config = { - factory: "0xDa14Fdd72345c4d2511357214c5B89A919768e59", - uniNFT: "0x03a520b32c04bf3beef7beb72e919cf822ed34f1", - uniV4NFT: "0x7C5f5A4bBd8fD63184577525326123B519429bDc", - alienBaseNFT: "0xb7996d1ecd07fb227e8dca8cd5214bdfb04534e5", - slipNFT: "0x827922686190790b37229fd06084350e74485b72", - wAeroNFT: "0x17B5826382e3a5257b829cF0546A08Bd77409270".toLowerCase(), - sAeroNFT: "0x9f42361B7602Df1A8Ae28Bf63E6cb1883CD44C27".toLowerCase(), - sSlipNFT: "0x1Dc7A0f5336F52724B650E39174cfcbbEdD67bF1".toLowerCase(), - wsSlipNFT: "0xD74339e0F10fcE96894916B93E5Cc7dE89C98272".toLowerCase(), - pools: [ - "0x803ea69c7e87D1d6C86adeB40CB636cC0E6B98E2", // wethPool - "0x3ec4a293Fb906DD2Cd440c20dECB250DeF141dF1", // usdcPool - "0xa37E9b4369dc20940009030BfbC2088F09645e3B" // cbbtcPool - ] -}; - -async function unwrapArcadiaAeroLP({ api, ownerIds }) { - const { wAeroNFT, sAeroNFT, sSlipNFT, wsSlipNFT } = config - const wAERONFTIds = [] - const sAERONFTIds = [] - const sSlipNftIds = [] - - // for each asset address owned by an account - // check if the asset is the wrapped or staked aero asset module - // if so, fetch the amount of lp wrapped or staked - // create object with aerodrome v1 (=univ2) lp tokens - for (const ownerId of ownerIds) { - const [nftAddresses, ids] = ownerId; - for (let i = 0; i < nftAddresses.length; i++) { - const nftAddress = nftAddresses[i].toLowerCase() - switch (nftAddress) { - case wAeroNFT: - wAERONFTIds.push(ids[i]); - break; - case sAeroNFT: - sAERONFTIds.push(ids[i]); - break; - case sSlipNFT: - sSlipNftIds.push(ids[i]); - break; - case wsSlipNFT: - sSlipNftIds.push(ids[i]); - break; - } - } - } - - const wrappedData = await api.multiCall({ abi: abi.positionState, calls: wAERONFTIds, target: wAeroNFT }); - const stakedData = await api.multiCall({ abi: abi.stakedAeroPositionState, calls: sAERONFTIds, target: sAeroNFT }); - wrappedData.forEach((data) => api.add(data.pool, data.amountWrapped)); - stakedData.forEach((data) => api.add(data.pool, data.amountStaked)); - - await uwrapStakedSlipstreamLP({ api, sSlipNftIds }); -} - -async function uwrapStakedSlipstreamLP({ api, sSlipNftIds, }) { - const { slipNFT } = config; - - // Arcadia's staked slipstream NFT wrapper issues a position with the same ID as the wrapped NFT - // -> fetch the values of the wrapped IDs by simply fetching the values of those IDs on the native slipstream NFT - await unwrapSlipstreamNFT({ api, positionIds: sSlipNftIds, nftAddress: slipNFT, }); -} - -async function tvl (api) { - const { factory, pools, uniNFT, uniV4NFT,slipNFT, wAeroNFT, sAeroNFT, sSlipNFT, alienBaseNFT, wsSlipNFT } = config; - const ownerTokens = [] - const ownerIds = [] - const accs = [] - const uniV4Ids = [] - - const uTokens = await api.multiCall({ abi: "address:asset", calls: pools }); - await api.sumTokens({ blacklistedTokens: [uniNFT, uniV4NFT, slipNFT, wAeroNFT, sAeroNFT, sSlipNFT, alienBaseNFT, wsSlipNFT], tokensAndOwners2: [uTokens, pools] }); - - const accounts = await api.fetchList({ lengthAbi: 'allAccountsLength', itemAbi: 'allAccounts', target: factory, }) - - // Account version 1 has a stored state of all assets, and can be fetched using generateAssetData() - // Account version 2 has no such stored state, and must be fetched with external api calls. - const versions = await api.multiCall({abi: 'function ACCOUNT_VERSION() view returns (uint256)', calls: accounts,}); - const v1Accounts = accounts.filter((_, i) => versions[i] === '1'); - const v2Accounts = accounts.filter((_, i) => versions[i] === '2'); - - // This endpoint uses the following logic: - // 1. Uses batches of all v2Accounts (to prevent rate limiting) - // 2. calls Arcadia's endpoint to fetch the asset data of a V2 account - // 3. verifies onchain that the ownership of the NFTs is indeed correct - // 4. Return format is then transformed to be identical to the format of the V1 assetData - const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); - - const batchSize = 25; - for (let i = 0; i < v2Accounts.length; i += batchSize) { - const batch = v2Accounts.slice(i, i + batchSize); - await Promise.all(batch.map(async (account) => { - try { - const assetDataCall = await utils.fetchURL(`https://api.arcadia.finance/v1/api/accounts/spot_asset_data?chain_id=8453&account_addresses=${account}`); - const assetData = assetDataCall.data[0] // call is made for multiple addresses, but may time out if all accounts are requested at once - if (!assetData || !assetData[0][0] || assetData[0][0].length < 1) return; - - // Since the return of the ownership data comes from a "blackbox" backend, - // we verify onchain that the ownership of the NFTs is indeed correct - // We check this for each asset where ID != 0 - /* const verificationCalls = assetData[0][1].map((tokenId, index) => { - if (tokenId === "0") return null; // Skip if tokenId is 0, just an erc20, balance will be fetched through sdk - return { - target: assetData[0][0][index], - params: [tokenId] - } - }).filter(call => call !== null); // Remove null entries - - if (verificationCalls.length > 0) { - const owners = await api.multiCall({ - abi: 'function ownerOf(uint256) view returns (address)', - calls: verificationCalls - }); - - // Verify all owners match the account - const allOwnersMatch = owners.every(owner => owner.toLowerCase() === account.toLowerCase()); - if (!allOwnersMatch) return; // Skip this account if any ownership verification fails - } */ - - ownerTokens.push([assetData[0][0], account]) - if (!assetData[0][0].length || !assetData[0][1].length || assetData[0][1] == "0") return; - ownerIds.push([assetData[0][0], assetData[0][1], account]) - accs.push(account) - - for (let i = 0; i < assetData[0][0].length; i++) { - if (assetData[0][0][i] === uniV4NFT) { - uniV4Ids.push(assetData[0][1][i]); - } - } - - } catch (error) { - console.log(`Failed to fetch/process data for account ${account}:`, error); - return; - } - })); - - api.log(`[arcadia] Processed batch ${Math.ceil((i + 1) / batchSize)} of ${Math.ceil(v2Accounts.length / batchSize)} for v2 accounts.`); - - // Add small delay between batches to prevent rate limiting - if (i + batchSize < v2Accounts.length) { // Only sleep if there are more batches to process - await sleep(500); - } - } - - const assetDatasV1 = await api.multiCall({ abi: abi.generateAssetData, calls: v1Accounts, permitFailure: true }) - v1Accounts.forEach((account, i) => { - const assetData = assetDatasV1[i]; - if (!assetData || !assetData.assets || !assetData.assets.length ) return; - ownerTokens.push([assetData.assets, account]) - if (!assetData[0].length || !assetData[1].length) return; - ownerIds.push([assetData[0], assetData[1], account]) - accs.push(account) - - for (let i = 0; i < assetData.assets.length; i++) { - if (assetData.assets[i] === uniV4NFT) { - uniV4Ids.push(assetData[1][i]); - } - } - }) - - if (alienBaseNFT) - await sumTokens2({ api, owners: accs, uniV3ExtraConfig: { nftAddress: alienBaseNFT } }) - - // add all simple ERC20s - await api.sumTokens({ ownerTokens, blacklistedTokens: [uniNFT, uniV4NFT, slipNFT, wAeroNFT, sAeroNFT, sSlipNFT, alienBaseNFT, wsSlipNFT],}); - - // add all Arcadia-wrapped LP positions - await unwrapArcadiaAeroLP({ api, ownerIds }); - - // add all native LP positions - // first add all uniswap v4 positions, without the owner(s) param - // only call sumTokens2 if any uniswapv4 position is found, otherwise it will throw an error - if (uniV4Ids.length > 0) { - await sumTokens2({ api, resolveUniV4: true, uniV4ExtraConfig: {"positionIds":uniV4Ids}}) - } - return sumTokens2({ api, owners: accs, resolveUniV3: true, resolveSlipstream: true}) -} - -module.exports = { - methodology: "TVL is calculated as the sum of all Account values and the available balance in the liquidity pools. Assets are not double counted.", - base: { tvl }, - isHeavyProtocol: true, - start: '2024-03-25', // Mon Mar 25 2024 18:00:00 GMT+0000 - hallmarks: [ - ["2024-04-03", "Points program announced."], - ], -}; - -const abi = { - generateAssetData: 'function generateAssetData() view returns (address[] assets, uint256[], uint256[])', - positionState: 'function positionState(uint256 tokenId) view returns ((uint128 fee0PerLiquidity, uint128 fee1PerLiquidity, uint128 fee0, uint128 fee1, uint128 amountWrapped, address pool))', - stakedAeroPositionState: 'function positionState(uint256 tokenId) view returns ((address pool, uint128 amountStaked, uint128 lastRewardPerTokenPosition, uint128 lastRewardPosition))' -} \ No newline at end of file diff --git a/projects/arcadia-finance-v2/slipstreamNftABI.json b/projects/arcadia-finance-v2/slipstreamNftABI.json deleted file mode 100644 index 8a88c4ea6ed..00000000000 --- a/projects/arcadia-finance-v2/slipstreamNftABI.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "positions": "function positions(uint256 tokenId) view returns (uint96 nonce, address operator, address token0, address token1, int24 tickSpacing, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)", - "slot0": "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, bool unlocked)", - "getPool": "function getPool(address, address, int24) view returns (address)" -} \ No newline at end of file diff --git a/projects/arcadia-finance/helper/abi.json b/projects/arcadia-finance/helper/abi.json deleted file mode 100644 index f12130f7db1..00000000000 --- a/projects/arcadia-finance/helper/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "totalRealisedLiquidity": "uint128:totalRealisedLiquidity", - "totalUnrealisedLiquidity": "uint256:calcUnrealisedDebt", - "vaultLength": "uint256:allVaultsLength", - "vaultAddress": "function allVaults(uint256) view returns (address)", - "assetData": "function generateAssetData() view returns (address[], uint256[], uint256[])", - "assetsInPricingModule": "function assetsInPricingModule(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/arcadia-finance/helper/index.js b/projects/arcadia-finance/helper/index.js deleted file mode 100644 index 604e67f18b5..00000000000 --- a/projects/arcadia-finance/helper/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require('../../helper/unwrapLPs') -const abi = require("./abi.json") - -const config = { - optimism: { - factory: "0x00CB53780Ea58503D3059FC02dDd596D0Be926cB", - pools: { - wethPool: "0xD417c28aF20884088F600e724441a3baB38b22cc", - usdcPool: "0x9aa024D3fd962701ED17F76c17CaB22d3dc9D92d" - } - }, - ethereum: { - factory: "0x00CB53780Ea58503D3059FC02dDd596D0Be926cB", - pools: { - wethPool: "0xD417c28aF20884088F600e724441a3baB38b22cc", - usdcPool: "0x9aa024D3fd962701ED17F76c17CaB22d3dc9D92d", - } - } -} - - -async function tvl(api) { - const { chain } = api - let { factory, pools } = config[chain] - pools = Object.values(pools) - const poolAssets = await api.multiCall({ abi: 'address:asset', calls: pools }) - - const vaults = await api.fetchList({ lengthAbi: abi.vaultLength, itemAbi: abi.vaultAddress, target: factory, }) - const assetData = await api.multiCall({ abi: abi.assetData, calls: vaults, }) - - assetData.forEach((assetsInVaults) => api.addTokens(assetsInVaults[0], assetsInVaults[2])) - - return sumTokens2({ api, tokensAndOwners2: [poolAssets, pools, ]}) -} - -module.exports = { - tvl, -}; \ No newline at end of file diff --git a/projects/arcadia-finance/index.js b/projects/arcadia-finance/index.js deleted file mode 100644 index f1b265915cd..00000000000 --- a/projects/arcadia-finance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { tvl, } = require("./helper"); - -module.exports = { - methodology: - "TVL includes ERC-20 tokens that have been supplied as collateral as well as ERC-20 tokens that are supplied by liquidity providers.", - optimism: { tvl }, - ethereum: { tvl }, - start: '2023-06-10', // Jun 10 2023 10:00:00 GMT+0000 - // hallmarks: [ - // ['2023-07-10', 'Protocol was exploited.'], - // ], -} \ No newline at end of file diff --git a/projects/arcana/index.js b/projects/arcana/index.js deleted file mode 100644 index e5705c741f9..00000000000 --- a/projects/arcana/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - real: { tvl } -} - -async function tvl(api) { - const supply = await api.call({ abi: 'uint256:circulatingSupply', target: '0xaec9e50e3397f9ddc635c6c429c8c7eca418a143' }) - api.addCGToken('tether', supply / 1e18) -} \ No newline at end of file diff --git a/projects/arcanum/index.js b/projects/arcanum/index.js deleted file mode 100644 index 3518e10927a..00000000000 --- a/projects/arcanum/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const ARBI_CONTRACT = '0x4810E5A7741ea5fdbb658eDA632ddfAc3b19e3c6'; -const ARBI_ASSETS_CONTRACTS = [ - ADDRESSES.arbitrum.GMX, - '0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8', - '0x3082cc23568ea640225c2467653db90e9250aaa0', - '0x0341c0c0ec423328621788d4854119b97f44e391', - '0x51fc0f6660482ea73330e414efd7808811a57fa2', - '0x539bde0d7dbd336b79148aa742883198bbf60342', -]; - -const SPI_CONTRACT = '0xbB5b3D9F6B57077b4545ea9879ee7fD0BDB08dB0'; -const SPI_ASSETS_CONTRACTS = [ - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.WSTETH, -]; - - -module.exports = { - methodology: 'counts the quantities of all tokens in all multipool contracts.', - arbitrum: { - tvl: sumTokensExport({ ownerTokens: [[ARBI_ASSETS_CONTRACTS, ARBI_CONTRACT], [SPI_ASSETS_CONTRACTS, SPI_CONTRACT]] }) - } -}; diff --git a/projects/arch-ethereum-web-3/index.js b/projects/arch-ethereum-web-3/index.js deleted file mode 100644 index 2bfc28e0c3b..00000000000 --- a/projects/arch-ethereum-web-3/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const sets = [ - '0xe8e8486228753E01Dbc222dA262Aa706Bd67e601', - '0x0d20e86abab680c038ac8bbdc1446585e67f8951', -] - -const chambers = [ - '0xE15A66b7B8e385CAa6F69FD0d55984B96D7263CF', - '0x103bb3EBc6F61b3DB2d6e01e54eF7D9899A2E16B', - '0x8F0d5660929cA6ac394c5c41f59497629b1dbc23', - '0x89c53B02558E4D1c24b9Bf3beD1279871187EF0B', - '0xd1Ce69B4bDd3Dda553Ea55A2a57c21C65190F3D5' -] - -const polygonChambers = [ - '0xde2925d582fc8711a0e93271c12615bdd043ed1c', -] - -const strategies = ['0x4e39ceae6e771605ddd7d1121f3320f7a2319318'] - -const setAbi = 'address[]:getComponents' - -const chamberAbi = 'address[]:getConstituentsAddresses' - -async function tvl(api) { - const setsTokens = await api.multiCall({ abi: setAbi, calls: sets }) - const chambersTokens = await api.multiCall({ abi: chamberAbi, calls: chambers }) - const toa = [] - setsTokens.forEach((o, i) => toa.push([o, sets[i]])) - chambersTokens.forEach((o, i) => toa.push([o, chambers[i]])) - const balances = await sumTokens2({ api, ownerTokens: toa, blacklistedTokens: [...sets, ...chambers, ...strategies] }) - - // Add vaults - await api.erc4626Sum({ calls: strategies, balanceAbi: 'totalAssets', tokenAbi: "asset" }) - - return balances -} - -async function polygonTvl(api) { - const chambersTokens = await api.multiCall({ abi: chamberAbi, calls: polygonChambers }) - const toa = [] - chambersTokens.forEach((o, i) => toa.push([o, polygonChambers[i]])) - const balances = await sumTokens2({ api, ownerTokens: toa, blacklistedTokens: polygonChambers }) - return balances -} - - -module.exports = { - ethereum: { - tvl, - }, - polygon: { - tvl: polygonTvl, - } -}; \ No newline at end of file diff --git a/projects/arch-fi/index.js b/projects/arch-fi/index.js deleted file mode 100644 index 3df48cd8738..00000000000 --- a/projects/arch-fi/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - btnx: { factory: "0x57Fd247Ce7922067710452923806F52F4b1c2D34", fromBlock:674333, isAlgebra: true, }, -}); \ No newline at end of file diff --git a/projects/arche-protocol/index.js b/projects/arche-protocol/index.js deleted file mode 100644 index 9ad949d1a3b..00000000000 --- a/projects/arche-protocol/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {function_view} = require("../helper/chain/aptos"); - -const ARCHE_CONTRACT_ADDRESS = "0xbcc40f56a3538c9cc25254f485f48e6f150f9acac53a2e92c6d698a9c1751a0b"; -const MOVE_TOKEN_ADDRESS = ADDRESSES.aptos.APT; - -async function fetchLockedTokens() { - - // Call arche contract to get the total locked move tokens - const lockedTokens = await function_view({ - functionStr: `${ARCHE_CONTRACT_ADDRESS}::collateral::total_collateral`, - type_arguments: [], - args: ["0xa"], - chain: 'move' - }) - - return lockedTokens; -} - -module.exports = { - timetravel: false, - methodology: "Counts the total value of MOVE tokens locked in the MSD protocol", - move: { - tvl: async (api) => { - // Fetch total locked tokens - const lockedTokens = await fetchLockedTokens(); - - // Add the token to the balances - api.add(MOVE_TOKEN_ADDRESS, lockedTokens); - } - } -}; diff --git a/projects/archerswap/index.js b/projects/archerswap/index.js deleted file mode 100644 index 263af3ff89b..00000000000 --- a/projects/archerswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xe0b8838e8d73ff1CA193E8cc2bC0Ebf7Cf86F620', - }) - } -} \ No newline at end of file diff --git a/projects/archi-finance/index.js b/projects/archi-finance/index.js deleted file mode 100644 index fae8fe4a35f..00000000000 --- a/projects/archi-finance/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const CONFIG = { - vaultInfo: "0x73956FF7375476EBFD5e82d80Ea9065a5bCc3d2b", - collateralPoolAddress: "0xbd198617aD1dc75B0f7A0A67BbE31993919Cd716", - fsGlpAddress: ADDRESSES.arbitrum.fsGLP, - fsGlpHolders: ["0x65C59eE732BD249224718607Ee0EC0e293309923", "0x49EE14e37Cb47bff8c512B3A0d672302A3446eb1"], - vaults: [ - "0x7674Ccf6cAE51F20d376644C42cd69EC7d4324f4", // weth pool - "0x179bD8d1d654DB8aa1603f232E284FF8d53a0688", // usdt pool - "0xa7490e0828Ed39DF886b9032ebBF98851193D79c", // usdc.e pool - "0xee54A31e9759B0F7FDbF48221b72CD9F3aEA00AB", // wbtc pool - "0x61Ea41f0BffeE903BB90c69b69d4A833c7fb9d8a", // wstETH pool - "0xe0eD03E13C6b92D7555c560123Cb48aBE60713fE", // rETH pool - ] - } - -const abis = { - underlyingToken: "address:underlyingToken", - borrowedBalance: "function borrowedBalance(address[] _vaults) view returns (address[], uint256[])" -} - -const tvl = async (api) => { - const { vaults, fsGlpHolders, fsGlpAddress } = CONFIG - const tokens = await api.multiCall({ abi: abis.underlyingToken, calls: vaults }) - const tokensAndOwners = tokens.map((v, i) => [v, vaults[i]]) - fsGlpHolders.forEach(i => tokensAndOwners.push([fsGlpAddress, i])) - return sumTokens2({ api, tokensAndOwners}) -} - -async function borrowed(api) { - const { vaultInfo, vaults } = CONFIG - const borrowedBalance = await api.call({ target: vaultInfo, abi: abis.borrowedBalance, params: [vaults], permitFailure: true }); - if (!borrowedBalance) return; - api.addTokens(borrowedBalance[0], borrowedBalance[1]); -} - -module.exports = { - methodology: "The TVL (Total Value Locked) of ArchiFinance is calculated by adding the total liquidity and borrowing amount.", - arbitrum: { tvl, borrowed } -} \ No newline at end of file diff --git a/projects/archly-finance-v2/index.js b/projects/archly-finance-v2/index.js deleted file mode 100644 index 62cae24c44a..00000000000 --- a/projects/archly-finance-v2/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') - -const ARCHLY_V2_FACTORY = "0x12508dd9108Abab2c5fD8fC6E4984E46a3CF7824" -const ARCHLY_V2_VE_TOKEN = "0x6ACa098fa93DAD7A872F6dcb989F8b4A3aFC3342" -const ARCHLY_V2_ARC_TOKEN = "0xe8876189A80B2079D8C0a7867e46c50361D972c1" - -const ARCHLY_V2_FACTORY_ZKSYNC = "0x30A0DD3D0D9E99BD0E67b323FB706788766dCff2" -const ARCHLY_V2_VE_TOKEN_ZKSYNC = "0x483BdBdbf60d9650845c8097E002c2241D92ab45" -const ARCHLY_V2_ARC_TOKEN_ZKSYNC = "0xfB4c64c144c2bD0E7F2A06da7d6aAc32d8cb2514" - -const ARCHLY_V2_FACTORY_ETHEREUM = "0xE8E2b714C57937E0b29c6ABEAF00B52388cAb598" -const ARCHLY_V2_VE_TOKEN_ETHEREUM = "0x0361a173dC338c32E57079b2c51cEf36f8A982f1" -const ARCHLY_V2_ARC_TOKEN_ETHEREUM = "0x9482c407d32204462D8CBbC0755e96C39B79878E" - -const tvl = getUniTVL({ factory: ARCHLY_V2_FACTORY, useDefaultCoreAssets: true, hasStablePools: true, }) - -const config = { - arbitrum: { lp: '0x1e99d0c1f55cC082badD0E42B41C0Cfa31F99aD3' }, - arbitrum_nova: { lp: '0x66a185f87A7bc337E38eA988fc8DEcf2F35a28d1' }, - avax: { lp: '0x8a39ACACB5da8Fc4aEfDcaEeCA9ADf09758931da' }, - base: { lp: '0x577B2E4C7Ddd23d2fA9D56b4456505e420851046' }, - blast: { lp: '0x6255290D88Cdd837bC27E83A11c39E12CD1B2111' }, - bsc: { lp: '0xf53aFC5c5D5eE21DC68350AbF8eAb6A4d8e6E186' }, - cronos: { lp: '0xCf4cEEA40DDeeB49cd407e32f804b22890A6DFD6' }, - fantom: { lp: '0x263677110c07Ec272f8b1fe08a473700e6777eDd' }, - filecoin: { lp: '0x1a77798C1E3f6E93C0bc98596882580Dbc6BD6A0' }, - fraxtal: { lp: '0x51cb81CF0bA5c632a0D043131914f5570B41d30d' }, - kava: { lp: '0x90e267b0bF52F9993d32DfAB9A415e2B00A870d0' }, - mantle: { lp: '0x31bFb9003229BCC89EeF55895A374Fd0ed36772c' }, - metis: { lp: '0xA152A0Ee0Bc15A937D5365DEB8507D063467A68d' }, - mode: { lp: '0xC6FA6454E76cF425a020fdb1EF61FeB0e551912C' }, - neon_evm: { lp: '0x9a08ab9b8b9A90bF9fe836D28E85808Db29Dc1aD' }, - optimism: { lp: '0x577B2E4C7Ddd23d2fA9D56b4456505e420851046' }, - polygon: { lp: '0xc01d8ee3A405f758a3bD9f8cA253F00B9EDec2be' }, - sonic: { lp: '0xa38AA60C1449f2AE1C23e014c4e250BB3d8421A5' }, - telos: { lp: '0xe7F2AED9670933eDdc71634aAC0A13a187D4fE8f' }, - zora: { lp: '0x577B2E4C7Ddd23d2fA9D56b4456505e420851046' }, -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - const { lp } = config[chain] - module.exports[chain] = { - tvl, - staking: sumTokensExport({ owner: ARCHLY_V2_VE_TOKEN, tokens: [ARCHLY_V2_ARC_TOKEN], lps: [lp], useDefaultCoreAssets: true, }) - } -}) - -const zksyncTvl = getUniTVL({ factory: ARCHLY_V2_FACTORY_ZKSYNC, useDefaultCoreAssets: true, hasStablePools: true, }) -module.exports['era'] = { - tvl: zksyncTvl, - staking: sumTokensExport({ owner: ARCHLY_V2_VE_TOKEN_ZKSYNC, tokens: [ARCHLY_V2_ARC_TOKEN_ZKSYNC], lps: ['0xc7a34F4cADE2b1C6d6f3f332Cd76Ee4951b2a621'], useDefaultCoreAssets: true, }) -} - -const ethereumTvl = getUniTVL({ factory: ARCHLY_V2_FACTORY_ETHEREUM, useDefaultCoreAssets: true, hasStablePools: true, }) -module.exports['ethereum'] = { - tvl: ethereumTvl, - staking: sumTokensExport({ owner: ARCHLY_V2_VE_TOKEN_ETHEREUM, tokens: [ARCHLY_V2_ARC_TOKEN_ETHEREUM], lps: ['0xBBa0BF97D0b0Fe0F2c50c421367E0Ce9bbb15E42'], useDefaultCoreAssets: true, }) -} \ No newline at end of file diff --git a/projects/archly-finance/index.js b/projects/archly-finance/index.js deleted file mode 100644 index 624283925c5..00000000000 --- a/projects/archly-finance/index.js +++ /dev/null @@ -1,99 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') - -const ARCHLY_FACTORY_OTHER = "0xBa06043a777652BAF540CcC785EDaFd94eE05b37" -const ARCHLY_VE_TOKEN_OTHER = "0xf070654b08595f8F358Ff90170829892F3254C67" -const ARCHLY_ARC_TOKEN_OTHER = "0x684802262D614D0Cd0C9571672F03Dd9e85D7824" - -module.exports = { - telos: { - tvl: getUniTVL({ factory: '0x39fdd4Fec9b41e9AcD339a7cf75250108D32906c', useDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: '0x5680b3059b860d07A33B7A43d03D2E4dEdb226BB', - tokens: ['0xa84df7aFbcbCC1106834a5feD9453bd1219B1fb5'], - lps: ['0x34480A4C917caDbE41cb805f3e3baDb93bD9068C'], - coreAssets: [ADDRESSES.telos.WTLOS], - restrictTokenRatio: 100, - }) - }, - arbitrum: { - tvl: getUniTVL({ factory: '0xeafBFeb64F8e3793D7d1767774efd33b203200C9',useDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: '0x4c01dF6B9be381BA2a687D0ED5c40039dEEaf0a9', - tokens: ['0x9435Ffb33Ce0180F55E08490C606eC3BD07da929'], - lps: ['0x6083E6F4c0f9826e60D0180A00203F7A70C1aC25'], - coreAssets: [ADDRESSES.arbitrum.WETH], - restrictTokenRatio: 100, - }) - }, - arbitrum_nova: { - tvl: getUniTVL({ factory: ARCHLY_FACTORY_OTHER, useDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: ARCHLY_VE_TOKEN_OTHER, - tokens: [ARCHLY_ARC_TOKEN_OTHER], - lps: ['0xC8Cb0012BBBEFE6E04d9A58fFb5b9A623f4EC40c'], - coreAssets: [ADDRESSES.arbitrum_nova.WETH], - restrictTokenRatio: 100, - }) - }, - base: { - tvl: getUniTVL({ factory: ARCHLY_FACTORY_OTHER, seDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: "0x4c01dF6B9be381BA2a687D0ED5c40039dEEaf0a9", - tokens: [ARCHLY_ARC_TOKEN_OTHER], - lps: ['0x80dd4A2837AF3233176704142Fb44a216e170Ab3'], - coreAssets: [ADDRESSES.base.WETH], - restrictTokenRatio: 100, - }) - }, - bsc: { - tvl: getUniTVL({ factory: ARCHLY_FACTORY_OTHER, seDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: ARCHLY_VE_TOKEN_OTHER, - tokens: [ARCHLY_ARC_TOKEN_OTHER], - lps: ['0x3a1c6C7Ced1c14e07385582c5bB82eFBA4df4f19'], - coreAssets: [ADDRESSES.bsc.WBNB], - restrictTokenRatio: 100, - }) - }, - fantom: { - tvl: getUniTVL({ factory: ARCHLY_FACTORY_OTHER, useDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: ARCHLY_VE_TOKEN_OTHER, - tokens: [ARCHLY_ARC_TOKEN_OTHER], - lps: ['0xe962fEF0e7cE6D666359Dab6127f6f8d814aC1a9'], - coreAssets: [ADDRESSES.fantom.WFTM], - restrictTokenRatio: 100, - }) - }, - kava: { - tvl: getUniTVL({ factory: ARCHLY_FACTORY_OTHER, useDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: ARCHLY_VE_TOKEN_OTHER, - tokens: [ARCHLY_ARC_TOKEN_OTHER], - lps: ['0x008C71505A2e110d1FFAA402B01aeb202fb107dB'], - coreAssets: [ADDRESSES.kava.WKAVA], - restrictTokenRatio: 100, - }) - }, - optimism: { - tvl: getUniTVL({ factory: ARCHLY_FACTORY_OTHER, useDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: ARCHLY_VE_TOKEN_OTHER, - tokens: [ARCHLY_ARC_TOKEN_OTHER], - lps: ['0xc492BCa6777818256C2e2e5FC8e180BC8697DfF5'], - coreAssets: [ADDRESSES.optimism.WETH_1], - restrictTokenRatio: 100, - }) - }, - polygon: { - tvl: getUniTVL({ factory: ARCHLY_FACTORY_OTHER, useDefaultCoreAssets: true, hasStablePools: true, }), - staking: sumTokensExport({ - owner: ARCHLY_VE_TOKEN_OTHER, - tokens: [ARCHLY_ARC_TOKEN_OTHER], - lps: ['0x2651D7B53BaF1925D28A3b5A3ef371274e630C4C'], - coreAssets: [ADDRESSES.polygon.WMATIC_2], - restrictTokenRatio: 100, - }) - } -} \ No newline at end of file diff --git a/projects/archon-bridge/index.js b/projects/archon-bridge/index.js deleted file mode 100644 index 72298064ebf..00000000000 --- a/projects/archon-bridge/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const tokens = { - avax: { - WAVAX: ADDRESSES.avax.WAVAX, - USDC: ADDRESSES.avax.USDC, - USDT: ADDRESSES.avax.USDt, - DAI: ADDRESSES.avax.DAI, - LINK: "0x5947bb275c521040051d82396192181b413227a3", - WBTC: ADDRESSES.avax.WBTC_e, - WZEN: "0xAA1dA1591cBF7f2Df46884E7144297FF15Ea3a7f", - }, - ethereum: { - WETH: ADDRESSES.ethereum.WETH, - USDC: ADDRESSES.ethereum.USDC, - USDT: ADDRESSES.ethereum.USDT, - DAI: ADDRESSES.ethereum.DAI, - LINK: ADDRESSES.ethereum.LINK, - WBTC: ADDRESSES.ethereum.WBTC, - WZEN: "0xd21475D90686c9A6FDBe0849cb6670fEc2aC9E21", - }, - eon: { - WAVAX: "0x6318374DFb468113E06d3463ec5Ed0B6Ae0F0982", - WETH: "0x2c2E0B0c643aB9ad03adBe9140627A645E99E054", - USDC: "0xCc44eB064CD32AAfEEb2ebb2a47bE0B882383b53", - USDT: "0xA167bcAb6791304EDa9B636C8beEC75b3D2829E6", - DAI: "0x38C2a6953F86a7453622B1E7103b738239728754", - LINK: "0xDF8DBA35962Aa0fAD7ade0Df07501c54Ec7c4A89", - WBTC: ADDRESSES.eon.WBTC, - WZEN: ADDRESSES.eon.ZEN, - }, -}; - -const archonBridge = { - avax: { - OriginalTokenBridgeToEon: '0x0c81b1905125ED89C42a0aDa098adfd461f8A9C5', - }, - ethereum: { - OriginalTokenBridgeToEon: '0x954367cb2028e704B62a4093f648BE453aCA3989', - }, - eon: { - OriginalTokenBridgeToAvalanche: '0x7A302432D99DE20bc622e9148b690f22ef21436e', - OriginalTokenBridgeToEthereum: '0x4fd89120A6d34024Cb86a9a0d7819565Fe4eC351', - }, -}; - - -module.exports = { - hallmarks: [ - [1698796801, "Archon Bridge Launch"], - ], - avax: { - tvl: sumTokensExport({ - owner: archonBridge.avax.OriginalTokenBridgeToEon, - tokens: Object.values(tokens.avax), - }), - }, - ethereum: { - tvl: sumTokensExport({ - owner: archonBridge.ethereum.OriginalTokenBridgeToEon, - tokens: Object.values(tokens.ethereum), - }), - }, - eon: { - tvl: sumTokensExport({ - owners: [ - archonBridge.eon.OriginalTokenBridgeToAvalanche, - archonBridge.eon.OriginalTokenBridgeToEthereum, - ], - tokens: Object.values(tokens.eon), - }), - }, -}; diff --git a/projects/arctic/index.js b/projects/arctic/index.js deleted file mode 100644 index 27a23889904..00000000000 --- a/projects/arctic/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -module.exports = { - aurora: { - tvl: iziswapExport({poolHelpers: ['0xE78e7447223aaED59301b44513D1d3A892ECF212']}) - } -} diff --git a/projects/arcx.js b/projects/arcx.js deleted file mode 100644 index eb3fb73d93b..00000000000 --- a/projects/arcx.js +++ /dev/null @@ -1,11 +0,0 @@ -const stakingContract = '0x9bffad7a6d5f52dbc51cae33e419793c72fd7d9d' -const ARCx = '0x1321f1f1aa541a56c31682c57b80ecfccd9bb288' -const { staking } = require('./helper/staking') - -module.exports = { - methodology: "ARCx can be staked in the protocol", - ethereum: { - staking: staking(stakingContract, ARCx), - tvl: () => ({}) - }, -} diff --git a/projects/arena-dex/index.js b/projects/arena-dex/index.js deleted file mode 100644 index 57c87b9d858..00000000000 --- a/projects/arena-dex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'avax': '0xF16784dcAf838a3e16bEF7711a62D12413c39BD1' -}) \ No newline at end of file diff --git a/projects/arena-launch/index.js b/projects/arena-launch/index.js deleted file mode 100644 index 50185603bc5..00000000000 --- a/projects/arena-launch/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') - -module.exports = { - avax: { tvl: sumTokensExport({ owner: '0x8315f1eb449Dd4B779495C3A0b05e5d194446c6e', tokens: [nullAddress,] }) } -} \ No newline at end of file diff --git a/projects/arenaswap/index.js b/projects/arenaswap/index.js deleted file mode 100644 index c36d793355e..00000000000 --- a/projects/arenaswap/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const arena = "0x2A17Dc11a1828725cdB318E0036ACF12727d27a2"; -const pyram = "0xedeCfB4801C04F3EB394b89397c6Aafa4ADDa15B"; -const poolInfo = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accArenaPerShare, uint16 depositFeeBP, uint256 harvestInterval)' - -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require('../helper/utils'); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'bsc', - masterchef: '0xbEa60d145747a66CF27456ef136B3976322b7e77', - nativeTokens: [arena, pyram], - }), - masterchefExports({ - chain: 'bsc', - masterchef: '0x3e91B21ddE13008Aa73f07BdE26970322Fe5D533', - nativeTokens: [arena, pyram], - }) -]) diff --git a/projects/areon-swap/index.js b/projects/areon-swap/index.js deleted file mode 100644 index 8cf05fa35db..00000000000 --- a/projects/areon-swap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('area', '0x4df039804873717bff7d03694fb941cf0469b79e') \ No newline at end of file diff --git a/projects/argano/index.js b/projects/argano/index.js deleted file mode 100644 index 039ffb99bee..00000000000 --- a/projects/argano/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { sumTokensExport } = require('../helper/unwrapLPs') -const { getUniTVL } = require('../helper/unknownTokens') - -const contracts = { - factory: '0xdAc31E70c2C4Fea0629e85e7B67222127A8672d8', - usdtPool: '0x250EFcd45D9f83036f2D403223c7cCb2E1e9D00b', - usdt: ADDRESSES.polygon.USDT, - wbtcPool: '0x610094adF401626D6B62df62bF6E67A7A6E22043', - wbtc: ADDRESSES.polygon.WBTC -}; - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ tokensAndOwners: [ - [contracts.wbtc, contracts.wbtcPool], - [contracts.usdt, contracts.usdtPool], - ]}), - getUniTVL({ factory: contracts.factory, useDefaultCoreAssets: true, }) - ]) - } -}; \ No newline at end of file diff --git a/projects/argo/index.js b/projects/argo/index.js deleted file mode 100644 index 39208668e56..00000000000 --- a/projects/argo/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getResources, } = require('../helper/chain/aptos') - -module.exports = { - timetravel: false, - aptos: { - tvl: async (api) => { - const data = await getResources('0xa0a017f8d8a695731dcdb8bf27e2da141da68785b347aaa5b87c5e0fa4332222') - const engineV1Data = data.filter(i => i.type.includes('engine_v1')) - const addresses = engineV1Data.map(i => i.type.split(', ')[1].replace('>', '')) - addresses.forEach((addr, i) => api.add(addr, engineV1Data[i].data.total_observed_collateral,)) - } - } -} \ No newline at end of file diff --git a/projects/argofinance/index.js b/projects/argofinance/index.js deleted file mode 100644 index 62e70315a65..00000000000 --- a/projects/argofinance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { queryV1Beta1 } = require("../helper/chain/cosmos"); -const sdk = require("@defillama/sdk"); - -async function tvl() { - const data = await queryV1Beta1({ chain: 'cronos', url: '/staking/v1beta1/delegations/cro1klkxkl2c59m5dcw4w0683ctfaxklsy9py26jg3', }) - let total = data.delegation_responses.reduce((a, i) => a += +i.balance.amount, 0) - const balances = {} - sdk.util.sumSingleBalance(balances, 'cronos:' + ADDRESSES.cronos.WCRO_1, total * 1e10) - return balances -} - -async function staking(api) { - const xargoBalance = await api.call({ target: '0x1dE93ce995d1bC763c2422ba30b1E73dE4A45a01', abi: 'erc20:totalSupply' }) - let balance = { - "cronos:0x47A9D630dc5b28F75d3AF3be3AAa982512Cd89Aa": xargoBalance - } - return balance -} - -module.exports = { - timetravel: false, - methodology: `The TVL is counted as the total CRO that is currently being delegated. We query the crypto.org api for the delegations and sum up the CRO being delegated. The Staking TVL is computed as the total XARGO being pledged on our platform. ARGO and XARGO has a 1:1, with XARGO being a pledged version of ARGO. The Staking TVL is calculated by getting the totalSupply() of XARGO in our contract.`, - cronos: { - tvl, - staking - } -} \ No newline at end of file diff --git a/projects/aria-protocol/index.js b/projects/aria-protocol/index.js deleted file mode 100644 index c7dcbc0f2a5..00000000000 --- a/projects/aria-protocol/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const APL_TOKEN = '0xfE82012eCcE57a188E5f9f3fC1Cb2D335C58F1f5'; - -async function tvl(api) { - const totalSupply = await api.call({ abi: 'uint256:totalSupply', target: APL_TOKEN, }); - api.add(APL_TOKEN, totalSupply) -} - -module.exports = { - methodology: 'Count total issued APL tokens which are backed by reserve RWAs.', - start: '2025-06-25', - sty: { - tvl, - }, -}; diff --git a/projects/aries-markets/index.js b/projects/aries-markets/index.js deleted file mode 100644 index b9faa47c0f1..00000000000 --- a/projects/aries-markets/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const { getResources, getTableData, } = require("../helper/chain/aptos"); -const toHex = (str) => Buffer.from(str, 'utf-8').toString('hex'); - -let resourcesCache - -async function _getResources() { - if (!resourcesCache) resourcesCache = getResources("0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3") - return resourcesCache -} -const extractCoinAddress = (str) => str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); -const reserveContrainerFilter = (i) => i.type.includes("0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3::reserve::ReserveCoinContainer"); -const faWrapperFilter = (i) => i.type.includes("0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3::fa_to_coin_wrapper::WrapperCoinInfo"); - -module.exports = { - timetravel: false, - methodology: - "Counts the lamports in each coin container in the Aries contract account.", - aptos: { - tvl: async (api) => { - const data = await _getResources() - const coinContainers = data.filter(reserveContrainerFilter) - .map((i) => ({ - lamports: i.data.underlying_coin.value, - tokenAddress: extractCoinAddress(i.type), - })); - const faWrappers = data.filter(faWrapperFilter) - .map((i) => ({ - lamports: i.data.fa_amount, - faAddress: i.data.metadata.inner, - })); - - coinContainers.forEach(({ lamports, tokenAddress }) => { - api.add(tokenAddress, lamports); - }); - - faWrappers.forEach(({ lamports, faAddress }) => { - api.add(faAddress, lamports); - }); - }, - borrowed: async (api) => { - const data = await _getResources() - const reserveTableHandle = data.filter(i => i.type === "0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3::reserve::Reserves")[0].data.stats.handle - - const coinContainers = await Promise.all( - data.filter(reserveContrainerFilter) - .map(async (i) => { - const coin_type = extractCoinAddress(i.type) - - const [address, module, struct] = coin_type.split("::"); - - const reserveStatus = await getTableData({ - table: reserveTableHandle, - data: { - key_type: "0x1::type_info::TypeInfo", - value_type: "0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3::reserve_details::ReserveDetails", - key: { - account_address: address, - module_name: toHex(module), - struct_name: toHex(struct) - } - } - }); - - const total_borrowed = BigInt(reserveStatus.total_borrowed.val) / BigInt(10 ** 18); - - const faInfo = data.filter(faWrapperFilter).filter((i) => i.type.includes(coin_type)); - const normalizedAddress = faInfo.length == 0 ? coin_type : faInfo[0].data.metadata.inner; - - return { - lamports: total_borrowed.toString(), - tokenAddress: normalizedAddress, - }; - }) - ); - - coinContainers.forEach(({ lamports, tokenAddress }) => { - api.add(tokenAddress, lamports); - }); - }, - }, -}; diff --git a/projects/arkadiko.js b/projects/arkadiko.js deleted file mode 100644 index c134a9ca8f8..00000000000 --- a/projects/arkadiko.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens } = require('./helper/chain/stacks') - -async function tvl() { - // https://info.arkadiko.finance/balances - return sumTokens({ - owners: [ - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-vaults-pool-active-v1-1', // STX and SIP10 tokens for vaults - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1', // swap tokens - ], - blacklistedTokens: [ - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wrapped-stx-token::wstx', - 'stacks:SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token::diko', - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token::usda', - ] - }) -} - -module.exports = { - stacks: { - tvl, - }, -}; diff --git a/projects/arkham-exchange/index.js b/projects/arkham-exchange/index.js deleted file mode 100644 index cf1a7f92319..00000000000 --- a/projects/arkham-exchange/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x679Fb19dEc9d66C34450a8563FfDFD29C04e615A', - '0x0323718324218dcBfF7c9f89bA5a5954F61A6c74', - '0x794C629e4403CA7CEE126Cc19d6C7b002D0238a5', - ], - }, - bitcoin: { - owners: bitcoinAddressBook.arkhamExchange - }, - solana: { - owners: [ - 'H2qEpXtSEzQTH5xNFpA8VA1W2NKNZWxUoVpascxyWAK1', - '3huamNpghPSPbgQSLX56B18Sj1hq5SE4KGxwTvhwJGnC', - ], - }, - doge: { - owners: [ - '9xFftuJonFHopj9FB6tyW1kyxqusr4jrGh', - ] - }, - avax: { - owners: [ - '0xDc2822D0685c0CcEAb07b35d6de4aC9280FB9cFF', - '0x34407900475cEF87acE1597670A9A42F31961d02', - '0xaF4E837d27cD6A5B33D67d51b88Ae42c0Bb3f1af', - ] - }, - ton: { - owners: [ - 'UQDT3cimS92wrKXrc7U6quPIM1ose_N5-R4U5byIUDHkF8pt', - 'UQDd2gNTRcIsgdUgf0DYMVcpxZuV78hegZ4D1tIj7xLKTwWn', - ] - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'Wallets can be tracked here: https://intel.arkm.com/explorer/entity/arkham-exchange' diff --git a/projects/arkis/index.js b/projects/arkis/index.js deleted file mode 100644 index 3b635022b76..00000000000 --- a/projects/arkis/index.js +++ /dev/null @@ -1,105 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const native = ADDRESSES.GAS_TOKEN_2; - -const factories = { - agreement: "0xEA623eebd9c5bFd56067e36C89Db0C13e6c70ba8", - marginAccount: "0xbbC9c04348E093473C5b176Cb4b103fF706528bf" -} - -const topics = { - agreementCreated: "AgreementCreated(address)", - accountDeployed: "AccountDeployed(address)" -} - -const eventAbis = { - agreementCreated: "event AgreementCreated(address agreement)", - accountDeployed: "event AccountDeployed(address indexed account)" -} - -const abis = { - info: "function info() view returns (tuple(address leverage, uint32 apy, uint256 totalDepositThreshold, address[] collaterals, address[] lenders, address[] borrowers) metadata, tuple(address[] tokens, address[] operators) whitelist)", - totalBorrowed: "function totalBorrowed() returns (uint256)", -} - -// Arkis Wrapped HYPE Vault addresses -const arkis_wrapped_hype_vaults = [ - "0x454F936D5877Daf9366Ef1Fca1bDF888201Bb127", // Primary HYPE Vault address - "0xA1C0ae02D6B40F6D71bfAee9Aa27f3dCc75a63D8" // X Upshift HYPE Vault address -]; - -// ERC-20 tokens to track in Hyperliquid vaults -const tokens_to_track = [ - ADDRESSES.hyperliquid.WHYPE, - ADDRESSES.hyperliquid.wstHYPE -]; - -const blacklist = [ - '0x8fccfd6404da2026eee7e4f529b45f3caaf0594e', - '0x4956b52ae2ff65d74ca2d61207523288e4528f96' -] - -const fetchFactoryLogs = async (api, type) => { - const fromBlock = 21069508; - const topic = type === "agreement" ? topics.agreementCreated : topics.accountDeployed; - const eventAbi = type === "agreement" ? eventAbis.agreementCreated : eventAbis.accountDeployed; - const logs = await getLogs({ api, extraKey: type, target: factories[type], topic, eventAbi, onlyArgs: true, fromBlock }); - return logs.map((log) => log[0]); -} - -const getTokens = async (api, agreementAddresses) => { - const tokenSet = new Set(); - const rawInfos = await api.multiCall({ calls: agreementAddresses, abi: abis.info }); - const infos = rawInfos.filter(({ metadata }) => metadata.leverage !== ADDRESSES.null); - - infos.forEach(({ metadata, whitelist }, i) => { - tokenSet.add(metadata.leverage); - metadata.collaterals.forEach(token => tokenSet.add(token)); - whitelist.tokens.forEach(token => tokenSet.add(token)); - }); - - if (tokenSet.has(native)) { - tokenSet.delete(native); - tokenSet.add(ADDRESSES.null); - } - - return Array.from(tokenSet); -} - -const tvl = async (api) => { - const [agreements, marginAccounts] = await Promise.all([ - fetchFactoryLogs(api, "agreement"), - fetchFactoryLogs(api, "marginAccount") - ]) - - const tokens = (await getTokens(api, agreements)).filter(t => !blacklist.includes(t.toLowerCase())) - const owners = [...agreements, ...marginAccounts] - return sumTokens2({ api, owners, tokens, resolveLP: true, unwrapAll: true }); -} - -const borrowed = async (api) => { - const agreements = await fetchFactoryLogs(api, "agreement"); - const [infos, totalBorrowed] = await Promise.all([ - api.multiCall({ calls: agreements, abi: abis.info }), - api.multiCall({ calls: agreements, abi: abis.totalBorrowed }) - ]) - - infos.forEach(({ metadata }, i) => { - if (metadata.leverage === ADDRESSES.null) return; - api.add(metadata.leverage, totalBorrowed[i]) - }) -} - -async function tvlHyperliquid(api) { - const tokens = [ADDRESSES.null, ...tokens_to_track]; - return sumTokens2({ api, owners: arkis_wrapped_hype_vaults, tokens: tokens }); -} - -module.exports = { - methodology: "On Ethereum, TVL includes leverage assets, collaterals, whitelisted tokens, ETH, and LP tokens held in agreements and margin accounts created by factory contracts. " + - "On Hyperliquid, TVL reflects the native HYPE, WHYPE and stHYPE held at the Arkis Wrapped HYPE Vaults, which back the tokens issued on Ethereum.", - ethereum: { tvl, borrowed }, - hyperliquid: { tvl: tvlHyperliquid }, -} diff --git a/projects/armada-staking/idl.js b/projects/armada-staking/idl.js deleted file mode 100644 index 5fdcdd538b1..00000000000 --- a/projects/armada-staking/idl.js +++ /dev/null @@ -1,221 +0,0 @@ -const SplTokenStakingIDLV0 = { - version: "0.1.5", - name: "spl_token_staking", - instructions: [], - accounts: [ - { - name: "stakePool", - type: { - kind: "struct", - fields: [ - { - name: "authority", - type: "publicKey", - }, - { - name: "totalWeightedStake", - type: "u128", - }, - { - name: "vault", - type: "publicKey", - }, - { - name: "mint", - type: "publicKey", - }, - { - name: "stakeMint", - type: "publicKey", - }, - { - name: "rewardPools", - type: { - array: [ - { - defined: "RewardPool", - }, - 10, - ], - }, - }, - { - name: "baseWeight", - type: "u64", - }, - { - name: "maxWeight", - type: "u64", - }, - { - name: "minDuration", - type: "u64", - }, - { - name: "maxDuration", - type: "u64", - }, - { - name: "nonce", - type: "u8", - }, - { - name: "bumpSeed", type: "u8", - }, - { - name: "padding0", - type: { - array: ["u8", 6], - }, - }, - { - name: "reserved0", - type: { - array: ["u8", 8], - }, - }, - ], - }, - }, - ], - types: [ - { - name: "RewardPool", - type: { - kind: "struct", - fields: [ - { - name: "rewardVault", type: "publicKey", - }, - { - name: "rewardsPerEffectiveStake", - type: "u128", - }, - { - name: "lastAmount", type: "u64", - }, - { - name: "padding0", - type: { - array: ["u8", 8], - }, - }, - ], - }, - }, - ], - errors: [], -}; - -const SplTokenStakingIDLV1 = { - version: "1.1.2", - name: "spl_token_staking", - instructions: [], - accounts: [ - { - name: "stakePool", - type: { - kind: "struct", - fields: [ - { - name: "creator", - type: "publicKey", - }, - { - name: "authority", type: "publicKey", - }, - { - name: "totalWeightedStake", - type: "u128", - }, - { - name: "vault", type: "publicKey", - }, - { - name: "mint", type: "publicKey", - }, - { - name: "stakeMint", type: "publicKey", - }, - { - name: "rewardPools", - type: { - array: [ - { - defined: "RewardPool", - }, - 10, - ], - }, - }, - { - name: "baseWeight", - type: "u64", - }, - { - name: "maxWeight", - type: "u64", - }, - { - name: "minDuration", - type: "u64", - }, - { - name: "maxDuration", - type: "u64", - }, - { - name: "nonce", type: "u8", - }, - { - name: "bumpSeed", type: "u8", - }, - { - name: "padding0", - type: { - array: ["u8", 6], - }, - }, - { - name: "reserved0", - type: { - array: ["u8", 256], - }, - }, - ], - }, - }, - ], - types: [ - { - name: "RewardPool", - type: { - kind: "struct", - fields: [ - { - name: "rewardVault", type: "publicKey", - }, - { - name: "rewardsPerEffectiveStake", - type: "u128", - }, - { - name: "lastAmount", type: "u64", - }, - { - name: "padding0", - type: { - array: ["u8", 8], - }, - }, - ], - }, - }, - ], - errors: [], -}; - -module.exports = { - SplTokenStakingIDLV0, - SplTokenStakingIDLV1, -}; diff --git a/projects/armada-staking/index.js b/projects/armada-staking/index.js deleted file mode 100644 index 7dd3287866e..00000000000 --- a/projects/armada-staking/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { getProvider, sumTokens2 } = require("../helper/solana"); -const { Program } = require("@project-serum/anchor"); -const { SplTokenStakingIDLV0, SplTokenStakingIDLV1 } = require("./idl"); - -const SplTokenStakingProgramIdV0 = - "STAKEkKzbdeKkqzKpLkNQD3SUuLgshDKCD7U8duxAbB"; -const SplTokenStakingProgramIdV1 = - "STAKEGztX7S1MUHxcQHieZhELCntb9Ys9BgUbeEtMu1"; - -async function tvl() { - const anchorProvider = getProvider(); - const armadaStakingV0 = new Program( - SplTokenStakingIDLV0, - SplTokenStakingProgramIdV0, - anchorProvider - ); - const armadaStakingV1 = new Program( - SplTokenStakingIDLV1, - SplTokenStakingProgramIdV1, - anchorProvider - ); - const [stakePoolsV0, stakePoolsV1] = await Promise.all([ - armadaStakingV0.account.stakePool.all(), - armadaStakingV1.account.stakePool.all(), - ]); - return sumTokens2({ tokenAccounts: [stakePoolsV0, stakePoolsV1].flat().map((sp) => sp.account.vault), }); -} - -module.exports = { - timetravel: false, - solana: { - tvl: () => ({}), - staking: tvl, - }, -}; diff --git a/projects/armada/idl.js b/projects/armada/idl.js deleted file mode 100644 index d99f4502c79..00000000000 --- a/projects/armada/idl.js +++ /dev/null @@ -1,552 +0,0 @@ -const ArmadaIDL = { - "version": "0.1.1", - "name": "clp_vault", - "instructions": [], - "accounts": [ - { - "name": "clpVault", - "type": { - "kind": "struct", - "fields": [ - { - "name": "bumpSeed", - "type": "u8" - }, - { - "name": "padding0", - "type": { - "array": [ - "u8", - 15 - ] - } - }, - { - "name": "nonce", - "type": "u16" - }, - { - "name": "padding1", - "type": { - "array": [ - "u8", - 14 - ] - } - }, - { - "name": "clp", - "type": "publicKey" - }, - { - "name": "lpMint", - "type": "publicKey" - }, - { - "name": "lpMintBump", - "type": "u8" - }, - { - "name": "padding2", - "type": { - "array": [ - "u8", - 15 - ] - } - }, - { - "name": "tokenMintA", - "type": "publicKey" - }, - { - "name": "tokenVaultA", - "type": "publicKey" - }, - { - "name": "tokenMintB", - "type": "publicKey" - }, - { - "name": "tokenVaultB", - "type": "publicKey" - }, - { - "name": "performanceFee", - "type": "u32" - }, - { - "name": "padding3", - "type": { - "array": [ - "u8", - 12 - ] - } - }, - { - "name": "withdrawalFee", - "type": "u32" - }, - { - "name": "padding4", - "type": { - "array": [ - "u8", - 12 - ] - } - }, - { - "name": "marketMakingFee", - "type": "u32" - }, - { - "name": "padding5", - "type": { - "array": [ - "u8", - 12 - ] - } - }, - { - "name": "strategy", - "type": { - "defined": "StrategyType" - } - }, - { - "name": "padding6", - "type": { - "array": [ - "u8", - 15 - ] - } - }, - { - "name": "marketMakingKey", - "type": "publicKey" - }, - { - "name": "adminKey", - "type": "publicKey" - }, - { - "name": "feeOwner", - "type": "publicKey" - }, - { - "name": "numActivePositions", - "type": "u8" - }, - { - "name": "padding7", - "type": { - "array": [ - "u8", - 15 - ] - } - }, - { - "name": "positionBundleTokenAccount", - "type": "publicKey" - }, - { - "name": "positionBundleMint", - "type": "publicKey" - }, - { - "name": "positionBundle", - "type": "publicKey" - }, - { - "name": "positions", - "type": { - "array": [ - { - "defined": "VaultPosition" - }, - 5 - ] - } - }, - { - "name": "initialTokenRatio", - "type": { - "defined": "TokenRatio" - } - }, - { - "name": "stakePool", - "type": "publicKey" - }, - { - "name": "ratioCache", - "type": { - "defined": "VaultRatioCache" - } - }, - { - "name": "reserved0", - "type": { - "array": [ - "u8", - 448 - ] - } - }, - { - "name": "reserved1", - "type": { - "array": [ - "u128", - 32 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "VaultRatioCache", - "type": { - "kind": "struct", - "fields": [ - { - "name": "totalTokenA", - "type": "u64" - }, - { - "name": "totalTokenB", - "type": "u64" - }, - { - "name": "lpSupply", - "type": "u64" - }, - { - "name": "cachedAt", - "type": "i64" - } - ] - } - }, - { - "name": "TokenRatio", - "type": { - "kind": "struct", - "fields": [ - { - "name": "tokenA", - "type": "u64" - }, - { - "name": "tokenB", - "type": "u64" - } - ] - } - }, - { - "name": "VaultPosition", - "type": { - "kind": "struct", - "fields": [ - { - "name": "positionKey", - "type": "publicKey" - }, - { - "name": "lowerTick", - "type": "i32" - }, - { - "name": "padding0", - "type": { - "array": [ - "u8", - 12 - ] - } - }, - { - "name": "upperTick", - "type": "i32" - }, - { - "name": "padding1", - "type": { - "array": [ - "u8", - 12 - ] - } - }, - { - "name": "reserve", - "type": { - "array": [ - "u128", - 16 - ] - } - } - ] - } - }, - { - "name": "ClpProvider", - "type": { - "kind": "enum", - "variants": [ - { - "name": "ORCA" - } - ] - } - }, - { - "name": "StrategyType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "PriceDiscovery" - }, - { - "name": "VolatilePair" - }, - { - "name": "StablePair" - }, - { - "name": "StableSlowlyDiverging" - } - ] - } - } - ], - "events": [], - "errors": [] -}; - -const WhirpoolIDL = { - "version": "0.2.0", - "name": "whirlpool", - "instructions": [], - "accounts": [ - { - "name": "position", - "type": { - "kind": "struct", - "fields": [ - { - "name": "whirlpool", - "type": "publicKey" - }, - { - "name": "positionMint", - "type": "publicKey" - }, - { - "name": "liquidity", - "type": "u128" - }, - { - "name": "tickLowerIndex", - "type": "i32" - }, - { - "name": "tickUpperIndex", - "type": "i32" - }, - { - "name": "feeGrowthCheckpointA", - "type": "u128" - }, - { - "name": "feeOwedA", - "type": "u64" - }, - { - "name": "feeGrowthCheckpointB", - "type": "u128" - }, - { - "name": "feeOwedB", - "type": "u64" - }, - { - "name": "rewardInfos", - "type": { - "array": [ - { - "defined": "PositionRewardInfo" - }, - 3 - ] - } - } - ] - } - }, - { - "name": "whirlpool", - "type": { - "kind": "struct", - "fields": [ - { - "name": "whirlpoolsConfig", - "type": "publicKey" - }, - { - "name": "whirlpoolBump", - "type": { - "array": [ - "u8", - 1 - ] - } - }, - { - "name": "tickSpacing", - "type": "u16" - }, - { - "name": "tickSpacingSeed", - "type": { - "array": [ - "u8", - 2 - ] - } - }, - { - "name": "feeRate", - "type": "u16" - }, - { - "name": "protocolFeeRate", - "type": "u16" - }, - { - "name": "liquidity", - "type": "u128" - }, - { - "name": "sqrtPrice", - "type": "u128" - }, - { - "name": "tickCurrentIndex", - "type": "i32" - }, - { - "name": "protocolFeeOwedA", - "type": "u64" - }, - { - "name": "protocolFeeOwedB", - "type": "u64" - }, - { - "name": "tokenMintA", - "type": "publicKey" - }, - { - "name": "tokenVaultA", - "type": "publicKey" - }, - { - "name": "feeGrowthGlobalA", - "type": "u128" - }, - { - "name": "tokenMintB", - "type": "publicKey" - }, - { - "name": "tokenVaultB", - "type": "publicKey" - }, - { - "name": "feeGrowthGlobalB", - "type": "u128" - }, - { - "name": "rewardLastUpdatedTimestamp", - "type": "u64" - }, - { - "name": "rewardInfos", - "type": { - "array": [ - { - "defined": "WhirlpoolRewardInfo" - }, - 3 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "PositionRewardInfo", - "type": { - "kind": "struct", - "fields": [ - { - "name": "growthInsideCheckpoint", - "type": "u128" - }, - { - "name": "amountOwed", - "type": "u64" - } - ] - } - }, - { - "name": "WhirlpoolRewardInfo", - "type": { - "kind": "struct", - "fields": [ - { - "name": "mint", - "type": "publicKey" - }, - { - "name": "vault", - "type": "publicKey" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "emissionsPerSecondX64", - "type": "u128" - }, - { - "name": "growthGlobalX64", - "type": "u128" - } - ] - } - }, - ], - "errors": [] -}; - -module.exports = { - ArmadaIDL, - WhirpoolIDL -} \ No newline at end of file diff --git a/projects/armada/index.js b/projects/armada/index.js deleted file mode 100644 index 3184eed7f8f..00000000000 --- a/projects/armada/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const { ArmadaIDL, WhirpoolIDL } = require("./idl"); -const { getProvider, sumTokens2 } = require("../helper/solana"); -const { Program } = require("@project-serum/anchor"); -const { PublicKey } = require("@solana/web3.js"); -const { addUniV3LikePosition } = require("../helper/unwrapLPs"); - -async function tvl(api) { - const anchorProvider = getProvider(); - const programId = new PublicKey( - "ArmN3Av2boBg8pkkeCK9UuCN9zSUVc2UQg1qR2sKwm8d" - ); - const armadaProgram = new Program(ArmadaIDL, programId, anchorProvider); - - const whirlpoolProgram = new Program( - WhirpoolIDL, - new PublicKey("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"), - anchorProvider - ); - - // Load all the vaults in the program - const vaults = await armadaProgram.account.clpVault.all(); - // Load all the TokenAccounts for the vaults - const vaultTokenAccounts = []; - const vaultMap = {}; - const whirlpoolKeys = []; - const positionKeys = []; - vaults.forEach((vault) => { - vaultTokenAccounts.push(vault.account.tokenVaultA); - vaultTokenAccounts.push(vault.account.tokenVaultB); - whirlpoolKeys.push(vault.account.clp); - vault.account.positions.forEach((position) => { - if (position.positionKey.toString() !== PublicKey.default.toString()) { - positionKeys.push(position.positionKey); - } - }); - vaultMap[vault.publicKey.toString()] = vault; - }); - // Load all the Positions for the vaults - const [positions, whirlpools] = await Promise.all([ - whirlpoolProgram.account.position.fetchMultiple(positionKeys), - whirlpoolProgram.account.whirlpool.fetchMultiple(whirlpoolKeys), - ]); - const whirlpoolMap = whirlpools.reduce((agg, cur, index) => { - agg[whirlpoolKeys[index].toString()] = cur; - return agg; - }, {}); - // Convert Positions to token amounts - - for (const position of positions) { - const whirlpool = whirlpoolMap[position.whirlpool.toString()]; - const tickLower = position.tickLowerIndex - const tickUpper = position.tickUpperIndex - const tick = whirlpool.tickCurrentIndex - const liquidity = position.liquidity - const token0 = whirlpool.tokenMintA.toString() - const token1 = whirlpool.tokenMintB.toString() - addUniV3LikePosition({ api, token0, token1, liquidity, tickLower, tickUpper, tick }) - } - - return sumTokens2({ - tokenAccounts: vaultTokenAccounts, - balances: api.getBalances() - }); -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - timetravel: false, - solana: { - tvl, - }, -}; diff --git a/projects/armorfinance/abiNXMVault.json b/projects/armorfinance/abiNXMVault.json deleted file mode 100644 index 71791f6c64a..00000000000 --- a/projects/armorfinance/abiNXMVault.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "aum": "uint256:aum" -} \ No newline at end of file diff --git a/projects/armorfinance/index.js b/projects/armorfinance/index.js deleted file mode 100644 index 03313efdf05..00000000000 --- a/projects/armorfinance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("../helper/staking"); - - -module.exports = { - ethereum: { - tvl: () => ({}), // Project rebranded. arNXM is now being managed by EASE. - staking: staking('0x5afedef11aa9cd7dae4023807810d97c20791dec', '0x1337def16f9b486faed0293eb623dc8395dfe46a') - }, - hallmarks: [ - ['2022-10-31', 'Project rebranded as Ease. Stopped doublecounting Nexus Mutual tvl'], - ], -}; diff --git a/projects/arpa-staking/index.js b/projects/arpa-staking/index.js deleted file mode 100644 index 358a6aad2df..00000000000 --- a/projects/arpa-staking/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const STAKING_CONTRACT = "0xee710f79aa85099e200be4d40cdf1bfb2b467a01"; -const ARPA = "0xBA50933C268F567BDC86E1aC131BE072C6B0b71a"; - -const staking = async (api) => { - const val = await api.call({ target: STAKING_CONTRACT, abi: 'uint256:getTotalCommunityStakedAmount', }); - api.add(ARPA, val) - return api.getBalances() -}; - -module.exports = { - methodology: "TVL is the total amount of ARPA staked by the community", - ethereum: { - tvl: () => ({}), - staking, - }, -}; diff --git a/projects/arrakis-modular/index.js b/projects/arrakis-modular/index.js deleted file mode 100644 index 95d129b86c0..00000000000 --- a/projects/arrakis-modular/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const config = { - ethereum: { - factory: '0x820FB8127a689327C863de8433278d6181123982', - fromBlock: 20540819, - }, - arbitrum: { - factory: '0x820FB8127a689327C863de8433278d6181123982', - fromBlock: 243467827, - }, - base: { - factory: '0x820FB8127a689327C863de8433278d6181123982', - fromBlock: 18512550, - }, - bsc: { - factory: '0x820FB8127a689327C863de8433278d6181123982', - fromBlock: 56792490, - }, -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const { factory } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const numPublicVaults = await api.call({ abi: 'uint256:numOfPublicVaults', target: factory }) - const numPrivateVaults = await api.call({ abi: 'uint256:numOfPrivateVaults', target: factory }) - const publicVaults = numPublicVaults > 0 ? await api.call({ abi: 'function publicVaults(uint256 startIndex_, uint256 endIndex_) returns (address[] memory)', target: factory, params: [0, numPublicVaults] }) : [] - const privateVaults = numPrivateVaults > 0 ? await api.call({ abi: 'function privateVaults(uint256 startIndex_, uint256 endIndex_) returns (address[] memory)', target: factory, params: [0, numPrivateVaults] }) : [] - const vaults = [...publicVaults, ...privateVaults] - - if (vaults.length === 0) return - - const [token0s, token1s, bals] = await Promise.all([ - api.multiCall({ abi: 'address:token0', calls: vaults }), - api.multiCall({ abi: 'address:token1', calls: vaults }), - api.multiCall({ - abi: 'function totalUnderlying() view returns (uint256, uint256)', - calls: vaults, - permitFailure: true - }), - ]) - - // Only process vaults that returned valid balance data - bals.forEach((bal, i) => { - if (bal && bal[0] && bal[1] && bal[0] !== '0' && bal[1] !== '0') { - api.add(token0s[i], bal[0]) - api.add(token1s[i], bal[1]) - } - }) - } - } -}) diff --git a/projects/arrakis-v2/index.js b/projects/arrakis-v2/index.js deleted file mode 100644 index a80adc8c913..00000000000 --- a/projects/arrakis-v2/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const helper = '0x07d2CeB4869DFE17e8D48c92A71eDC3AE564449f' -const config = { - ethereum: { - factory: '0xECb8Ffcb2369EF188A082a662F496126f66c8288', - fromBlock: 16534507, - }, - arbitrum: { - factory: '0xECb8Ffcb2369EF188A082a662F496126f66c8288', - fromBlock: 57173679, - }, - optimism: { - factory: '0xECb8Ffcb2369EF188A082a662F496126f66c8288', - fromBlock: 71646573, - }, - polygon: { - factory: '0xECb8Ffcb2369EF188A082a662F496126f66c8288', - fromBlock: 38788368, - } -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const numVaults = await api.call({ abi: 'uint256:numVaults', target: factory }) - const vaults = await api.call({ abi: 'function vaults(uint256 startIndex_, uint256 endIndex_) returns (address[] memory)', target: factory, params:[0, numVaults] }) - const [token0s, token1s, bals ] = await Promise.all([ - api.multiCall({ abi: 'address:token0', calls: vaults }), - api.multiCall({ abi: 'address:token1', calls: vaults }), - api.multiCall({ abi: 'function totalUnderlying(address) view returns (uint256, uint256)', target: helper, calls: vaults }), - ]) - - bals.forEach(([v0, v1], i) => { - api.add(token0s[i],v0) - api.add(token1s[i],v1) - }) - } - } -}) \ No newline at end of file diff --git a/projects/array-capital/index.js b/projects/array-capital/index.js deleted file mode 100644 index c878cc4a741..00000000000 --- a/projects/array-capital/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking'); - -const token = "0x164731cd270daa4a94bc70761e53320e48367b8b"; -const masterchef = "0x1b91b24d12C934383f25aa07C2c9C9666accf39e"; - -module.exports = { - arbitrum: { - tvl: () => 0, - staking: staking(masterchef, token) - } -} \ No newline at end of file diff --git a/projects/arrland/index.js b/projects/arrland/index.js deleted file mode 100644 index 737a9c71824..00000000000 --- a/projects/arrland/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const stakingAddresses = ["0x111e34bA90D1dE9a2A57f987b5711C71FA4c0Fa0"]; -const stakingToken = "0x14e5386f47466a463f85d151653e1736c0c50fc3"; -const pool2StakingAddresses = ["0xEAf6E84B4E4C2Ce70a80fd781B6A7f177E7b60F5", "0xb94380939A15C574FE22B04FC95Ec5CCaAD783b8"]; -const lpTokens = ["0x6495b61b8088a0a82de737ffb142136119b016e6", "0x464b7eb1c66d662e652dfbfced35d465498ad9ac"]; - -module.exports = { - polygon: { - tvl: () => 0, - staking: stakings(stakingAddresses, stakingToken, "polygon"), - pool2: pool2s(pool2StakingAddresses, lpTokens, "polygon") - }, - methodology: "Counts total value locked as the $RUM token staking, LP token staking", -} \ No newline at end of file diff --git a/projects/arrow-markets/index.js b/projects/arrow-markets/index.js deleted file mode 100644 index 7c906544232..00000000000 --- a/projects/arrow-markets/index.js +++ /dev/null @@ -1,11 +0,0 @@ -async function staking(api) { - const bal = await api.call({ abi: 'uint256:totalStakeAmounts', target: '0x9193957DC6d298a83afdA45A83C24c6C397b135f' }) - api.add('0x5c5e384Bd4e36724B2562cCAA582aFd125277C9B', bal) -} - -module.exports = { - avax: { - tvl: () => ({}), - staking, - } -} \ No newline at end of file diff --git a/projects/arrow/arrowIDL.json b/projects/arrow/arrowIDL.json deleted file mode 100644 index 09634995274..00000000000 --- a/projects/arrow/arrowIDL.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "version": "0.1.8", - "name": "arrow_sunny", - "instructions": [], - "accounts": [ - { - "name": "Arrow", - "type": { - "kind": "struct", - "fields": [ - { - "name": "mint", - "type": "publicKey" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "beneficiary", - "type": "publicKey" - }, - { - "name": "pool", - "type": "publicKey" - }, - { - "name": "vault", - "type": "publicKey" - }, - { - "name": "vendorMiner", - "type": { - "defined": "ArrowMiner" - } - }, - { - "name": "internalMiner", - "type": { - "defined": "ArrowMiner" - } - } - ] - } - } - ], - "types": [ - { - "name": "ArrowMiner", - "type": { - "kind": "struct", - "fields": [ - { - "name": "mint", - "type": "publicKey" - }, - { - "name": "rewarder", - "type": "publicKey" - }, - { - "name": "quarry", - "type": "publicKey" - }, - { - "name": "miner", - "type": "publicKey" - }, - { - "name": "minerVault", - "type": "publicKey" - }, - { - "name": "rewardsMint", - "type": "publicKey" - }, - { - "name": "mintWrapper", - "type": "publicKey" - }, - { - "name": "claimFeeTokenAccount", - "type": "publicKey" - }, - { - "name": "vaultStakedTokenAccount", - "type": "publicKey" - }, - { - "name": "vaultRewardsTokenAccount", - "type": "publicKey" - }, - { - "name": "sunnyPoolRewardsFeeAccount", - "type": "publicKey" - } - ] - } - } - ], - "events": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/arrow/index.js b/projects/arrow/index.js deleted file mode 100644 index cb558398fed..00000000000 --- a/projects/arrow/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { Program, } = require("@project-serum/anchor"); -const { PublicKey } = require("@solana/web3.js"); -const arrowIDL = require("./arrowIDL.json"); -const sdk = require('@defillama/sdk') -const { getProvider, } = require("../helper/solana"); - -async function tvl() { - const arrowId = new PublicKey('ARoWLTBWoWrKMvxEiaE2EH9DrWyV7mLpKywGDWxBGeq9') - const quarryId = new PublicKey('QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB') - const provider = getProvider() - const QuarryMineIDL = await Program.fetchIdl(quarryId, provider) - const arrowProgram = new Program(arrowIDL, arrowId, provider) - const balances = {} - const arrows = (await arrowProgram.account.arrow.all()).filter(i => i.account.internalMiner.miner._bn > 0) - const miners = arrows.map(i => i.account.internalMiner.miner.toString()) - const lpMints = arrows.map(i => i.account.vendorMiner.mint.toString()) - const quarryProgram = new Program(QuarryMineIDL, quarryId, provider) - const quaryData = await quarryProgram.account.miner.fetchMultiple(miners) - quaryData.forEach((data, i) => { - sdk.util.sumSingleBalance(balances,lpMints[i],+data.balance, 'solana') - }) - return balances -} - -module.exports = { - timetravel: false, - doublecounted: true, - methodology: - 'TVL counts LP token deposits made to Arrow Protocol. CoinGecko is used to find the price of tokens in USD, only the original "SOL" token price is used for all existing variations of the token.', - solana: { tvl }, - hallmarks: [ - [1648080000, 'Cashio was hacked!'], - ] -}; diff --git a/projects/artcpaclub/index.js b/projects/artcpaclub/index.js deleted file mode 100644 index dd199bf8b95..00000000000 --- a/projects/artcpaclub/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens, sumTokensExport } = require("../helper/chain/elrond"); -const owners = [ - "erd1qqqqqqqqqqqqqpgqfken0exk7jpr85dx6f8ym3jgcagesfcqkqys0xnquf", - "erd1qqqqqqqqqqqqqpgqj8exjpz38agu78sxh5rlxcp2kmxy35m6kqysscypf3", -]; - -const CPA = 'CPA-97530a' - -module.exports = { - timetravel: false, - elrond: { - tvl: sumTokensExport({ owners, blacklistedTokens: [CPA]}), - staking: sumTokensExport({ owners, tokens: [CPA]}), - }, -}; diff --git a/projects/artdefinance-seeding/index.js b/projects/artdefinance-seeding/index.js deleted file mode 100644 index b534a39df5a..00000000000 --- a/projects/artdefinance-seeding/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADFSeedingContract = "0x2f6f2DBF7d7Cc69e676b3647543fC8E1e3D9Dd6f" -const ADF = "0x6bd10299f4f1d31b3489dc369ea958712d27c81b" - -async function staking(api) { - const round = await api.call({ abi: 'uint256:currentRound', target: ADFSeedingContract }) - const data = await api.call({ abi: "function getRoundInfo (uint256 round) public view returns (tuple(bool _roundStatus , uint256 _tierCount , uint256 _roundStartTime , uint256 _roundEndTime , uint256 _totalSeeding , uint256 _roundReward , uint256 _claimReward))", target: ADFSeedingContract, params: round }) - api.add(ADF, data._totalSeeding) - return api.getBalances() -} - -module.exports = { - methodology: - "Total Value Staked on Seeding function of Artiside, powered by Art de Finance, is calculated by the sum of $ADF staked in the artist pool.", - polygon: { - tvl: () => ({}), staking, - } -} - diff --git a/projects/artemis/index.js b/projects/artemis/index.js deleted file mode 100644 index 1d598524d1c..00000000000 --- a/projects/artemis/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { masterchefExports, } = require("../helper/unknownTokens") - -const token = ADDRESSES.harmony.MIS; -const masterchef = "0x59c777cd749b307be910f15c54a3116ff88f9706"; - -module.exports = masterchefExports({ - chain: 'harmony', - useDefaultCoreAssets: true, - masterchef, - nativeToken: token, - blacklistedTokens: [ - '0xed0b4b0f0e2c17646682fc98ace09feb99af3ade', // RVRS bad pricing - ] -}) \ No newline at end of file diff --git a/projects/artexswap_xyz/index.js b/projects/artexswap_xyz/index.js deleted file mode 100644 index 39001fc9682..00000000000 --- a/projects/artexswap_xyz/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'artela': '0xa65f38efbE4b0b602C9FEBE887448263547aaeeD' -}) \ No newline at end of file diff --git a/projects/arthswap-v3/index.js b/projects/arthswap-v3/index.js deleted file mode 100644 index de47f5edb36..00000000000 --- a/projects/arthswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - astar: { factory: '0x69E92b56e4BF4C0FFa2cFB087c7EA47E846a7244', fromBlock: 3957189, }, - astrzk: { factory: '0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720', fromBlock: 179999, }, -}) diff --git a/projects/arthswap/index.js b/projects/arthswap/index.js deleted file mode 100644 index 227944c3cf2..00000000000 --- a/projects/arthswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { staking } = require("../helper/staking"); - -const FACTORIES = "0xA9473608514457b4bF083f9045fA63ae5810A03E"; - -module.exports = { - misrepresentedTokens: true, - astar: { - tvl: getUniTVL({ factory: FACTORIES, useDefaultCoreAssets: true, }), - staking: staking('0x42d175a498Cb517Ad29d055ea7DcFD3D99045404', '0xde2578edec4669ba7f41c5d5d2386300bcea4678'), - }, -}; diff --git a/projects/artura/index.js b/projects/artura/index.js deleted file mode 100644 index 5473f2009a0..00000000000 --- a/projects/artura/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const VAULT_CONTRACT = '0x795E2FCb8E2A3786F4A318b84a6e1BfFF4Cf285A'; -const PUSD_CONTRACT = '0x42725b4D9270CFe24F6852401fdDa88248CB4dE9'; - -module.exports = { - methodology: 'counts the value of PUSD in the Artura Vault contract.', - btnx: { - tvl: sumTokensExport({ tokensAndOwners: [[PUSD_CONTRACT, VAULT_CONTRACT]] }), - } -}; \ No newline at end of file diff --git a/projects/asa-gold/index.js b/projects/asa-gold/index.js deleted file mode 100644 index 3da3e89173c..00000000000 --- a/projects/asa-gold/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { tokens, getAssetInfo } = require('../helper/chain/algorand') -const sdk = require('@defillama/sdk') - -async function tvl() { - const abi = 'function latestRoundData() view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)' - const api = new sdk.ChainApi({}) - let totalMeldMarketCap = 0 - - // Gold is priced in tory oz, silver is priced in oz, but Meld Tokens are both priced in grams - const ozToGrams = 31.10347687 - - // ASA.Gold tokens - const assetInfo = [ - { - assetId: tokens.ASAGold, - grams: ozToGrams, - priceFeed: '0x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6', - } - ] - - // Get total market cap of all Meld tokens - for (const asset of assetInfo) { - const { assetId, grams, priceFeed } = asset - const { answer: price } = await api.call({ abi, target: priceFeed }) - const assetInfo = await getAssetInfo(assetId) - const circulatingSupply = assetInfo.circulatingSupply - const marketCap = (circulatingSupply / grams / 10 ** 6) * (price / 10 ** 8) - totalMeldMarketCap += marketCap - } - - return { tether: totalMeldMarketCap } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - algorand: { - tvl, - }, -} diff --git a/projects/ascentexchange-v3/index.js b/projects/ascentexchange-v3/index.js deleted file mode 100644 index 22c1d11596c..00000000000 --- a/projects/ascentexchange-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const factory = '0x4bC187E010A0732A4299cc8Bc9f6e889795eBc06' - -module.exports = uniV3Export({ - eon: { factory, fromBlock: 547034, }, -}) diff --git a/projects/ascentexchange/index.js b/projects/ascentexchange/index.js deleted file mode 100644 index 7a859f54af8..00000000000 --- a/projects/ascentexchange/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('eon', '0xfF9777218d28A31995Db3c41bc9cb11570212CA5', { - hasStablePools: true, - useDefaultCoreAssets: true, -}) \ No newline at end of file diff --git a/projects/ascentyield/index.js b/projects/ascentyield/index.js deleted file mode 100644 index 25670debf36..00000000000 --- a/projects/ascentyield/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/solana"); -const { post } = require('../helper/http'); - -const hyperliquidSubAccount = "0x75b2e5c67d2116bcf1b77c5e6444fc18bc5d38a4" // for trading at hyperliquid -const jlpholder = "9nAgg9wAnuiPv57dXkmCwoGhhbTHS1RRzvYLjnRGZtXp" // for keeping JLP and USDC(buy JLP) -const arbiusdcholder = "0xa6Ff9a77D6bD8B0a759055Cd8885e23228bc10Ec" // USDC on arbi(will bridge to solana) -const hyperliquidMainAccount = "0x7151609Fdc7E0Cac89FB9720F0957AF9d552f8f9" // will transfer USDC to sub account - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - methodology: "Aggregate trading account margins in HyperLiquid and JLP, USDC on the solana network.", - arbitrum: { - tvl - }, -}; - - -async function tvl(api) { - // hyperliquid tvl - let data = await post('https://api.hyperliquid.xyz/info', { type: "clearinghouseState", user: hyperliquidSubAccount }) - data = parseInt(data.marginSummary.accountValue) - api.addCGToken('usd-coin', data) - - // solana tvl - await sumTokens2({ balances: api.getBalances(), owner: jlpholder }) - - return api.sumTokens({ owners: [arbiusdcholder, hyperliquidMainAccount], tokens: [ADDRESSES.arbitrum.USDC_CIRCLE,] }) -} \ No newline at end of file diff --git a/projects/asgard-dao/index.js b/projects/asgard-dao/index.js deleted file mode 100644 index 797b36f78be..00000000000 --- a/projects/asgard-dao/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {ohmTvl} = require("../helper/ohm"); - -const treasury = "0xFb445ce1CFE11B86505dD293f1bE438fFaa4fF8c"; -const treasuryTokens = [ - ["0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", false], // DAI - [ADDRESSES.bsc.BUSD, false], // BUSD - [ADDRESSES.bsc.WBNB, false], // WBNB - ["0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", false], // CAKE - [ADDRESSES.bsc.USDT, false], // USDT - ["0xE119c951b68555d50eB6Aa54b5Cf0b854715CB2c", true], // ASGARD-WBNB CAKE LP - ["0x11ceddd7a64ec79212d8ae9c8b46d23b8b750db0", true], // ASGARD-BUSD CAKE LP - ["0xE5E926c8Ca7A44F7FFD900F5a88eA33E2B07162D", true] // ASGARD-DAI CAKE LP -]; -const stakingAddress = "0xFdFC6a9717B33Ab43d066cFa686D0e374Cf2779b"; -const stakingToken = "0xa5593837af2b99021fe657c80d70d2365F5CfD38"; - -module.exports = { - ...ohmTvl(treasury, treasuryTokens, "bsc", stakingAddress, stakingToken) -} \ No newline at end of file diff --git a/projects/asgardfinance/index.js b/projects/asgardfinance/index.js deleted file mode 100644 index 537325ed1bb..00000000000 --- a/projects/asgardfinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require('../helper/staking'); - -const AsgardStaking = "0x4EA2bb6Df87F66cbea70818aE92f3A48F98EBC93"; -const ASG = "0x0DC5189Ec8CDe5732a01F0F592e927B304370551"; - -module.exports = { - hallmarks: [ - [1643155200, "Token mint exploit"] - ], - ethereum: { - staking: staking(AsgardStaking, ASG), - tvl: () => ({}), - }, - deadFrom: '2021-08-28', - methodology: - "Counts DAI, DAI SLP (ASG-DAI), FRAX, FRAX SLP (ASG-FRAX), UST, UST SLP (ASG-UST) on the treasury", -}; diff --git a/projects/ash-perp/index.js b/projects/ash-perp/index.js deleted file mode 100644 index 4fda2795d2f..00000000000 --- a/projects/ash-perp/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens } = require('../helper/sumTokens') - -const API_URL = 'https://api.ashperp.trade/graphql'; - -const TVLQuery = `query Vault { - vault { - _address - getAssetTokenId - } - }` - -async function tvl() { - const data = await cachedGraphQuery('ashperp', API_URL, TVLQuery) - const owners = Object.values(data).flat().map(i => i._address); - const token = Object.values(data).flat().map(i => i.getAssetTokenId); - return sumTokens({ owners, chain: 'elrond', tokens: [token]}) -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - elrond: { - tvl - }, -} \ No newline at end of file diff --git a/projects/ashswap/index.js b/projects/ashswap/index.js deleted file mode 100644 index 7159c2e13d6..00000000000 --- a/projects/ashswap/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens, sumTokensExport } = require('../helper/sumTokens') - -const API_URL = 'https://api-v2.ashswap.io/graphql'; - -const TVLQuery = `query ashBaseStateQuery { - pools { - address - } - poolsV2 { - address - } -}` - -async function tvl() { - const data = await cachedGraphQuery('ashswap', API_URL, TVLQuery) - const owners = Object.values(data).flat().map(i => i.address) - return sumTokens({ owners, chain: 'elrond'}) -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - elrond: { - tvl, - staking: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgq58elfqng8edp0z83pywy3825vzhawfqp4fvsaldek8'}), - }, -} \ No newline at end of file diff --git a/projects/asofinance/index.js b/projects/asofinance/index.js deleted file mode 100644 index 06270775c13..00000000000 --- a/projects/asofinance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - blast: compoundExports2({ - comptroller: '0xD5e60A396842D6C1D5470E16DA0BfDbb7Ba47101', - cether: '0x001FF326A2836bdD77B28E992344983681071f87', - }) -}; diff --git a/projects/asol/index.js b/projects/asol/index.js deleted file mode 100644 index 274e66d3640..00000000000 --- a/projects/asol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') - -async function tvl() { - return sumTokens2({ tokenAccounts: ['4Bo98VrTYkHLbE9zoXx3tCD3qEDcGZFCZFksgyYPKdG9', '7n1AmrpywC84MdALohPBipAx1SYhjpSLjYFb2EuTV9wm'] }) -} - -module.exports = { - timetravel: false, - methodology: - "aSOL TVL is computed by looking at the token balances of the accounts holding the stake pool tokens backing the aSOL Crate. The token accounts come from https://asol.so/#/admin.", - solana: { tvl }, -}; diff --git a/projects/aspida/index.js b/projects/aspida/index.js deleted file mode 100644 index e9d0d5542b1..00000000000 --- a/projects/aspida/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - doublecounted: true, - ethereum: { - tvl: async (api) => { - const totalSupply = await api.call({ target: "0xFC87753Df5Ef5C368b5FBA8D4C5043b77e8C5b39", abi: "uint256:totalSupply" }); - api.addGasToken(totalSupply) - } - } -} diff --git a/projects/assetchain-swap/index.js b/projects/assetchain-swap/index.js deleted file mode 100644 index ec189ab1a56..00000000000 --- a/projects/assetchain-swap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ assetchain: { factory: '0xa9d53862D01190e78dDAf924a8F497b4F8bb5163', fromBlock: 17598, } }) \ No newline at end of file diff --git a/projects/astake/index.js b/projects/astake/index.js deleted file mode 100644 index 01a4dd6cd33..00000000000 --- a/projects/astake/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') -const VAULT_ADDRESS = "0x0DC6E8922ac0ECa8287ba22Db14C9Ac9317ed18F" -module.exports = { - methodology: "Calculates the total amount of ASTR tokens deposited in the ERC4626 vault", - astar: { - tvl: sumERC4626VaultsExport({ vaults: [VAULT_ADDRESS], isOG4626: true}), - }, -} diff --git a/projects/astar-dapps-staking/api.js b/projects/astar-dapps-staking/api.js deleted file mode 100644 index 1d1d743a21f..00000000000 --- a/projects/astar-dapps-staking/api.js +++ /dev/null @@ -1,16 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); - -async function tvl() { - const polkadotProvider = new WsProvider("wss://rpc.astar.network"); - const polkadotApi = await ApiPromise.create({ provider: polkadotProvider }); - const currentEraInfo = await polkadotApi.query.dappStaking.currentEraInfo(); - const tvl = currentEraInfo.totalLocked.toString() - return { - astar: tvl / 1e18, - }; -} - -module.exports = { - timetravel: false, - astar: { tvl }, -}; \ No newline at end of file diff --git a/projects/astar-dapps-staking/index.js b/projects/astar-dapps-staking/index.js deleted file mode 100644 index 37b1546c4d0..00000000000 --- a/projects/astar-dapps-staking/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -const { getExports } = require("../helper/heroku-api"); - -module.exports = { - timetravel: false, - methodology: - "Total value locked is the total amount of ASTR tokens deposited to the dApp Staking program", - ...getExports("astar-dapps-staking", ["astar"]), -}; \ No newline at end of file diff --git a/projects/astarexchange/index.js b/projects/astarexchange/index.js deleted file mode 100644 index 531eb870d84..00000000000 --- a/projects/astarexchange/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Astar Exchange Tvl Calculation", - astar: { - tvl: getUniTVL({ factory: '0x95f506E72777efCB3C54878bB4160b00Cd11cd84', useDefaultCoreAssets: true }), - } -} diff --git a/projects/astarexchangev3/index.js b/projects/astarexchangev3/index.js deleted file mode 100644 index 3f71bb8a070..00000000000 --- a/projects/astarexchangev3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - astar: { factory: '0x0bA242809B5b8AC2C362372807bc616fc620DB97', fromBlock: 3333333, }, -}) diff --git a/projects/astarfarm/index.js b/projects/astarfarm/index.js deleted file mode 100644 index f8e4077bc2c..00000000000 --- a/projects/astarfarm/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const sdk = require('@defillama/sdk') - -const stakingContract = '0x992bad137Fc8a50a486B5C6375f581964b4A15FC' - -module.exports = { - astar: { - tvl: async (api) => { - const locked = await api.call({ abi: 'uint128:stakedV2', target: stakingContract}) - api.addGasToken(locked) - } - } -} diff --git a/projects/astaria-v2/index.js b/projects/astaria-v2/index.js deleted file mode 100644 index 6af422d549f..00000000000 --- a/projects/astaria-v2/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - base: { owners: ["0x0000000000A6F0986c92cf1EC4d2e77aFBE1466D"], }, - ethereum: { owners: ['0x0000000000A6F0986c92cf1EC4d2e77aFBE1466D'], }, -}) \ No newline at end of file diff --git a/projects/astaria/index.js b/projects/astaria/index.js deleted file mode 100644 index 2409a8a2383..00000000000 --- a/projects/astaria/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - ethereum: { factory: '0x42CDc5D4B05E8dACc2FCD181cbe0Cc86Ee14c439', fromBlock: 16935232 , ACT: '0x6112d87127847202151b9fe48ea0e2704fa428a1' }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, ACT } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x9aa6282003aa425f2bb942f91daaf7080de24835fc4fa8f3f4dc52c7d014ea97'], - eventAbi: 'event NewVault (address strategist, address delegate, address vault, uint8 vaultType)', - onlyArgs: true, - fromBlock, - }) - const actLogs = await getLogs({ - api, - target: ACT, - topics: ['0xd6b6bfb15fe5be5c1a8af879e26df8c0e2470c4ad95a47a1397868b45910e853'], - eventAbi: 'event Deposit721 (address indexed tokenContract, uint256 indexed tokenId, uint256 indexed collateralId, address depositedFor)', - onlyArgs: true, - fromBlock, - }) - const vaults = logs.map(l => l.vault) - const nfts = actLogs.map(l => l.tokenContract) - const tokensAndOwners = nfts.map((v, i) => [v, ACT]) - - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) - tokens.forEach((t, i) => tokensAndOwners.push([t, vaults[i]])) - return sumTokens2({ api, tokensAndOwners }) - }, - borrowed: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x9aa6282003aa425f2bb942f91daaf7080de24835fc4fa8f3f4dc52c7d014ea97'], - eventAbi: 'event NewVault (address strategist, address delegate, address vault, uint8 vaultType)', - onlyArgs: true, - fromBlock, - }) - const vaults = logs.map(l => l.vault) - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) - const deposited = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults}) - const liquidity = await api.multiCall({ abi: 'erc20:balanceOf', calls: vaults.map((v, i) => ({ target: tokens[i], params: v }))}) - tokens.forEach((token, i) => api.add(token, deposited[i] - liquidity[i])) - }, - } -}) - -module.exports.hallmarks = [ - [1687301106, "White hack"] -] diff --git a/projects/astarnova/index.js b/projects/astarnova/index.js deleted file mode 100644 index 8aaa46883ea..00000000000 --- a/projects/astarnova/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const dashboard = '0x63d3b2d066c1247245B31252441B3B6744e5BeB1' -const pools = [ - '0x2426F33359ef3BC6cb80104D3e2C81D81c790D6F', - '0x3ad9F054454E948D0016aaa568D05b22CE1B7b37', - '0xa573fd50404ffFa247Ea5B74ecC24EB9574300F0', - '0xf1819937dE70179D0dcBf81dDBe372e5b5A4F1Fc', - '0xe1bA9549DCf544c225BF7352803814fA8248F53F', - '0x344fd0308a00db704b05Bd95760160C660787a38', - '0x8b332a0EaEe5F774AfB344D39D1F643f2B98Db80', - '0x5a28E0a888bf710248Ab27914168b2EB7F930cb8', - '0x812A2EB0094aCB81337150E768De9CAbc13E1580', - '0xd854566C787548172Ada3e17724045107b2412C3', - '0x989f69D2C64E53f93DBfb5cE1eC62294f915Bc0C' -] - -async function astar(api) { - const bals = await api.multiCall({ abi: 'function tvlOfPool(address pool) view returns (uint256 tvl)', calls: pools, target: dashboard }) - api.addUSDValue(bals.map(i => i / 1e6).reduce((a, b) => a + b, 0)) -} - -module.exports = { - misrepresentedTokens: true, - astar: { - tvl: astar - }, -} diff --git a/projects/astarter-dex/index.js b/projects/astarter-dex/index.js deleted file mode 100644 index 6e8153dae11..00000000000 --- a/projects/astarter-dex/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); - -const DEX_BATHCER_SCRIPT = "addr1wxz9n9rwqfld9ahctdjl3ldhsck22vsuuwmmv8mpsll74lgue5r6h"; -const DEX_POOL_SCRIPT = "addr1w896t3nhplnmxr4ur73j7qvn3s2s2yepzdsda536cahrdvcq37n5x"; - -async function tvl() { - return sumTokens2({ scripts: [DEX_BATHCER_SCRIPT, DEX_POOL_SCRIPT], blacklistedTokens: [ - 'a221955d11877502db596bad11a549eb41cd56279092e45b7e4abfe94279726f6e', // Byron - 'a221955d11877502db596bad11a549eb41cd56279092e45b7e4abfe95368656c6c6579', // shelly - ] }) -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - } -}; diff --git a/projects/astarter/index.js b/projects/astarter/index.js deleted file mode 100644 index 13481cbf1ef..00000000000 --- a/projects/astarter/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const axios = require("axios"); - -const POOL_ID = ["pool1drkls8s0zzjydyv3qpjsdj58w3sw02w9wg0pckrsnuazyef2hca","pool1yemdr25t4g3ev038yn433dt58d8p52nee7kmcykjlhye6hshu9m"]; -async function tvl() { - return { - cardano: await getPoolStake(POOL_ID) - }; -} - -async function getPoolStake(poolIds) { - const response = await axios.post('https://api.koios.rest/api/v1/pool_info', { - "_pool_bech32_ids": poolIds - }); - return response.data.reduce((a, b) => a + b.live_stake / 1e6, 0); -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - } -}; diff --git a/projects/asteria-finance/asteriaFinance.js b/projects/asteria-finance/asteriaFinance.js deleted file mode 100644 index ef1389d2548..00000000000 --- a/projects/asteria-finance/asteriaFinance.js +++ /dev/null @@ -1,26 +0,0 @@ -function asteriaFinanceExport(config) { - const exports = { - methodology: 'We count the token balances in in different liquidity book contracts', - } - - Object.keys(config).forEach(chain => { - let { factory } = config[chain] - - exports[chain] = { - tvl: async (api) => { - const pools = await api.fetchList({ target: factory, itemAbi: 'getLBPairAtIndex', lengthAbi: 'getNumberOfLBPairs', }) - const tokenA = await api.multiCall({ abi: 'address:getTokenX', calls: pools, }) - const tokenB = await api.multiCall({ abi: 'address:getTokenY', calls: pools, }) - const tokensAndOwners2 = [tokenA.concat(tokenB), pools.concat(pools)] - return api.sumTokens({ tokensAndOwners2 }) - } - } - }) - - return exports -} - - -module.exports = { - asteriaFinanceExport, -} \ No newline at end of file diff --git a/projects/asteria-finance/index.js b/projects/asteria-finance/index.js deleted file mode 100644 index d582769ab3d..00000000000 --- a/projects/asteria-finance/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { asteriaFinanceExport } = require('./asteriaFinance') - -module.exports = asteriaFinanceExport({ - scroll: { factory: '0x77C99431b679e21C42464f1714221eAE94C1e3ed' }, -}) \ No newline at end of file diff --git a/projects/asteroneo/index.js b/projects/asteroneo/index.js deleted file mode 100644 index dcc2069e390..00000000000 --- a/projects/asteroneo/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - neox: { tvl: getUniTVL({ factory: '0x1dAbb81D9Faeb1DF4a8c97A60C5269c7D45e66B0', useDefaultCoreAssets: true })} -} \ No newline at end of file diff --git a/projects/astherus-asBNB/index.js b/projects/astherus-asBNB/index.js deleted file mode 100644 index afbeda68f5a..00000000000 --- a/projects/astherus-asBNB/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const asBNB = "0x77734e70b6E88b4d82fE632a168EDf6e700912b6" - -module.exports = { - doublecounted: true, - bsc: { - tvl: async (api) => { - - // cake tvl - const locker = '0x8E6Ce60cbC6402B8b780AdCfc069A00c177D2B18' - const veCake = await api.call({ abi: 'address:veToken', target: locker }) - const cake = await api.call({ abi: 'address:token', target: locker }) - const totalDeposits = await api.call({ abi: 'erc20:balanceOf', target: veCake, params: locker }) - api.add(cake, totalDeposits) - - // asBNB tvl - const asBNBMinter = '0x2f31ab8950c50080e77999fa456372f276952fd8' - const token = await api.call({ abi: 'address:token', target: asBNBMinter}) - const bal = await api.call({ abi: 'uint256:totalTokens', target: asBNBMinter}) - api.add(token, bal) - }, - } -} \ No newline at end of file diff --git a/projects/astherus-asbtc/index.js b/projects/astherus-asbtc/index.js deleted file mode 100644 index 3059a5e938f..00000000000 --- a/projects/astherus-asbtc/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const asBTC = "0x184b72289c0992bdf96751354680985a7c4825d6" - -module.exports = { - bsc: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: asBTC }) - api.add(asBTC, supply) - }, - } -} \ No newline at end of file diff --git a/projects/astherus-basis-trading/index.js b/projects/astherus-basis-trading/index.js deleted file mode 100644 index 79fcfcc24c6..00000000000 --- a/projects/astherus-basis-trading/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const USDF = "0x5A110fC00474038f6c02E89C707D638602EA44B5" - -module.exports = { - bsc: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: USDF }) - api.add(USDF, supply) - }, - } -} \ No newline at end of file diff --git a/projects/astherus/index.js b/projects/astherus/index.js deleted file mode 100644 index e86631981e0..00000000000 --- a/projects/astherus/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/solana') - -// https://docs.asterdex.com/overview/what-is-aster/our-smart-contracts -const config = { - bsc: '0x128463A60784c4D3f46c23Af3f65Ed859Ba87974', - ethereum: '0x604DD02d620633Ae427888d41bfd15e38483736E', - scroll: '0x7BE980E327692Cf11E793A0d141D534779AF8Ef4', - arbitrum: '0x9E36CB86a159d479cEd94Fa05036f235Ac40E1d5', -} - -const blacklistedTokens = [ - '0x78f5d389f5cdccfc41594abab4b0ed02f31398b3', // apx - '0x000ae314e2a2172a039b26378814c252734f556a', // aster -] -module.exports = { - start: '2024-01-31', // 02/01/2024 @ 00:00:00pm (UTC) -} - -function checkEvmAddress(addr) { - return /^0x[a-fA-F0-9]{40}$/.test(addr) -} - -Object.keys(config).forEach(chain => { - const vault = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const { data } = await getConfig(`astherus/${api.chain}`, `https://astherus.finance/bapi/futures/v1/public/future/web3/ae-deposit-asset?chainId=${api.chainId}`) - const tokens = data.map(i => i.contractAddress).filter(checkEvmAddress) - return api.sumTokens({ owner: vault, tokens, blacklistedTokens }) - } - } -}) - -module.exports['solana'] = { - tvl: async function (...rest) { - const { data } = await getConfig(`astherus/solana`, `https://astherus.finance/bapi/futures/v1/public/future/web3/ae-deposit-asset?network=SOL`) - const tokens = data.filter(({ tokenVault }) => tokenVault && tokenVault.length > 0).map(({ tokenVault }) => tokenVault) - return sumTokens2({ tokenAccounts: tokens }) - } -} diff --git a/projects/astra-dao/index.js b/projects/astra-dao/index.js deleted file mode 100644 index 5c586fba066..00000000000 --- a/projects/astra-dao/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokensExport, sumTokens2 } = require('../helper/unwrapLPs'); - -const ASTRA_TOKEN_CONTRACT_ARBITRUM = '0xd3188e0df68559c0B63361f6160c57Ad88B239D8'; -const ASTRA_STAKING_CONTRACT_ARBITRUM = '0x6fE79b531b2b1d5378631B3Ab33B0994E297355E'; - -async function tvl(api) { - const chain = api.chain - let gotError = false; - const indexAddr = chain === 'ethereum' ? '0x17b9B197E422820b3e28629a2BB101949EE7D12B' : '0xFa3e6EC87941d4e29b1738F8F7f5C27B23Eb3f94'; - const stableCoin = await api.call({ abi: 'address:baseStableCoin', target: indexAddr }); - let i = 0; - const tokens = [stableCoin]; - do { - try { - const _tokens = await api.call({ abi: 'function getIndexTokenDetails(uint256) view returns (address[])', target: indexAddr, params: i }); - tokens.push(..._tokens); - i++; - } catch (e) { - // if (i === 0) throw e; - gotError = true; - } - } while (!gotError); - return sumTokens2({ api, owner: indexAddr, tokens }); -} - -module.exports = { - ethereum: { - tvl, - }, - arbitrum: { - tvl, - pool2: sumTokensExport({ owner: ASTRA_STAKING_CONTRACT_ARBITRUM, resolveUniV3: true }), - staking: sumTokensExport({ owner: ASTRA_STAKING_CONTRACT_ARBITRUM, tokens: [ASTRA_TOKEN_CONTRACT_ARBITRUM] }), - }, - hallmarks: [ - ['2023-09-14', 'Security Incident'], - ['2024-01-04', 'Arbitrum Launch'], - ['2024-03-29', 'Shutdown Indices and Distributed User Funds'], - ['2024-04-05', 'Launched New Indices'], - ], -}; diff --git a/projects/astral.js b/projects/astral.js deleted file mode 100644 index aa2ab8bda11..00000000000 --- a/projects/astral.js +++ /dev/null @@ -1,7 +0,0 @@ - - module.exports = { - fantom: { - tvl: () => 0, - } - }; - module.exports.deadFrom = '2023-04-09' \ No newline at end of file diff --git a/projects/astralfarm/index.js b/projects/astralfarm/index.js deleted file mode 100644 index 59af1672df7..00000000000 --- a/projects/astralfarm/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x13E5A680606aB4965d09B1997486C715dE225EBE', - nativeToken: '0xd95322C0D069B51a41ed2D94A39617C2ACbcE636', -}) \ No newline at end of file diff --git a/projects/astriddao/abi/ActivePool.abi.json b/projects/astriddao/abi/ActivePool.abi.json deleted file mode 100644 index 466610360b5..00000000000 --- a/projects/astriddao/abi/ActivePool.abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getCOL": "uint256:getCOL" -} \ No newline at end of file diff --git a/projects/astriddao/abi/DefaultPool.abi.json b/projects/astriddao/abi/DefaultPool.abi.json deleted file mode 100644 index 466610360b5..00000000000 --- a/projects/astriddao/abi/DefaultPool.abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getCOL": "uint256:getCOL" -} \ No newline at end of file diff --git a/projects/astriddao/index.js b/projects/astriddao/index.js deleted file mode 100644 index 81e32c5101c..00000000000 --- a/projects/astriddao/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const COLLATERALS = { - WASTAR: { - tokenAddress: "0x19574c3c8fafc875051b665ec131b7e60773d2c9", - contracts: { - activePool: "0x70724b57618548eE97623146F76206033E67086e", - defaultPool: "0x2fE3FDf91786f75C92e8AB3B861588D3D051D83F", - } - }, - BUSD: { - tokenAddress: ADDRESSES.oasis.ceUSDT, - bridgeTokenMapping: ADDRESSES.ethereum.BUSD, - contracts: { - activePool: "0x892af684Afd5fCee1023f7811C35fd695Bf0cd6f", - defaultPool: "0xe487b9066A8fFde840b29892f1052CBEdccc3073", - } - }, - DAI: { - tokenAddress: ADDRESSES.astar.DAI, - bridgeTokenMapping: ADDRESSES.ethereum.DAI, - contracts: { - activePool: "0xCE90059FbCEc696634981945600d642A79e262aD", - defaultPool: "0x3aD8FE12674B4c9481d5C7585ed5bDC4E35025b9", - } - }, - DOT: { - tokenAddress: ADDRESSES.astar.DOT, - contracts: { - activePool: "0x8cd0b101838b082133e25eEb76C916Ae2AC56f36", - defaultPool: "0x4e8B4867899A69bB05EFa6A16e68363C2BBeB02f", - } - }, - USDC: { - tokenAddress: ADDRESSES.moonbeam.USDC, - bridgeTokenMapping: ADDRESSES.ethereum.USDC, - contracts: { - activePool: "0x5070d543654D866964C44E610a3b7f85fcAf2859", - defaultPool: "0xEb80f1a9ede36412cF26E1e35ae74dbA30cCfF02", - } - }, - WETH: { - tokenAddress: ADDRESSES.moonbeam.USDT, - contracts: { - activePool: "0x5Ec419F08602caE5e4C591dE65bD640d66673035", - defaultPool: "0x2eE0F3daa042af6Fdd56f0194d5aBfdA0A723D95", - } - }, - WBTC: { - tokenAddress: ADDRESSES.astar.WBTC, - bridgeTokenMapping: ADDRESSES.ethereum.WBTC, - contracts: { - activePool: "0x1685E4f68FD9A50246ce92F0eb07a977591F5Ba2", - defaultPool: "0xD69eB04d9ff456A31Da6D2a20538512C433ac1Ca", - } - }, - USDT: { - tokenAddress: ADDRESSES.astar.USDT, - bridgeTokenMapping: ADDRESSES.ethereum.USDT, - contracts: { - activePool: "0x74dFF63491B39E5fFE0Be44Ee3B23F674C27DB7c", - defaultPool: "0x8EE2f5403246b86d7493ddCeED19f9347bc4DF1D", - } - }, -} - -const BRIDGE_TOKEN_MAPPINGS = {} -for (const collateralInfo of Object.values(COLLATERALS)) { - if (collateralInfo.bridgeTokenMapping) { - BRIDGE_TOKEN_MAPPINGS[collateralInfo.tokenAddress] = collateralInfo.bridgeTokenMapping; - } -} - -async function tvl(api) { - const tokensAndOwners = [] - for (const collateralInfo of Object.values(COLLATERALS)) { - const _tokensAndOwners = Object.values(collateralInfo.contracts).map(owner => [collateralInfo.tokenAddress, owner]) - tokensAndOwners.push(..._tokensAndOwners) - } - - return api.sumTokens({ tokensAndOwners, }) -} - -module.exports = { - methodology: "Total locked collateral assets (in ERC-20 form) in ActivePool and DefaultPool", - astar: { - tvl, - }, -}; diff --git a/projects/astrolend/idl.json b/projects/astrolend/idl.json deleted file mode 100644 index 944881bdd80..00000000000 --- a/projects/astrolend/idl.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "events": [], - "accounts": [{"discriminator": [142, 49, 166, 242, 50, 66, 97, 188], "name": "Bank"}], - "address": "Astro1oWvtB7cBTwi3efLMFB47WXx7DJDQeoxi235kA", - "instructions": [], - "metadata": {"description": "Created with Anchor", "name": "astrolend", "spec": "0.1.0", "version": "0.1.0"}, - "types": [ - { - "name": "Bank", - "repr": {"kind": "c"}, - "serialization": "bytemuckunsafe", - "type": { - "fields": [ - {"name": "mint", "type": "pubkey"}, - {"name": "mint_decimals", "type": "u8"}, - {"name": "group", "type": "pubkey"}, - {"name": "_pad0", "type": {"array": ["u8", 7]}}, - {"name": "asset_share_value", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "liability_share_value", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "liquidity_vault", "type": "pubkey"}, - {"name": "liquidity_vault_bump", "type": "u8"}, - {"name": "liquidity_vault_authority_bump", "type": "u8"}, - {"name": "insurance_vault", "type": "pubkey"}, - {"name": "insurance_vault_bump", "type": "u8"}, - {"name": "insurance_vault_authority_bump", "type": "u8"}, - {"name": "_pad1", "type": {"array": ["u8", 4]}}, - {"name": "collected_insurance_fees_outstanding", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "fee_vault", "type": "pubkey"}, - {"name": "fee_vault_bump", "type": "u8"}, - {"name": "fee_vault_authority_bump", "type": "u8"}, - {"name": "_pad2", "type": {"array": ["u8", 6]}}, - {"name": "collected_group_fees_outstanding", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "total_liability_shares", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "total_asset_shares", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "last_update", "type": "i64"}, - {"name": "config", "type": {"defined": {"name": "BankConfig"}}}, - { - "docs": [ - "Bank Config Flags", - "", - "- EMISSIONS_FLAG_BORROW_ACTIVE: 1", - "- EMISSIONS_FLAG_LENDING_ACTIVE: 2", - "- PERMISSIONLESS_BAD_DEBT_SETTLEMENT: 4", - "" - ], - "name": "flags", - "type": "u64" - }, - { - "docs": [ - "Emissions APR.", - "Number of emitted tokens (emissions_mint) per 1e(bank.mint_decimal) tokens (bank mint) (native amount) per 1 YEAR." - ], - "name": "emissions_rate", - "type": "u64" - }, - {"name": "emissions_remaining", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "emissions_mint", "type": "pubkey"}, - {"name": "_padding_0", "type": {"array": [{"array": ["u64", 2]}, 28]}}, - {"name": "_padding_1", "type": {"array": [{"array": ["u64", 2]}, 32]}} - ], - "kind": "struct" - } - }, - { - "name": "WrappedI80F48", - "repr": {"align": 8, "kind": "c"}, - "serialization": "bytemuck", - "type": {"fields": [{"name": "value", "type": {"array": ["u8", 16]}}], "kind": "struct"} - }, - { - "docs": ["TODO: Convert weights to (u64, u64) to avoid precision loss (maybe?)"], - "name": "BankConfig", - "repr": {"kind": "c"}, - "serialization": "bytemuckunsafe", - "type": { - "fields": [ - {"name": "asset_weight_init", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "asset_weight_maint", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "liability_weight_init", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "liability_weight_maint", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "deposit_limit", "type": "u64"}, - {"name": "interest_rate_config", "type": {"defined": {"name": "InterestRateConfig"}}}, - {"name": "operational_state", "type": {"defined": {"name": "BankOperationalState"}}}, - {"name": "oracle_setup", "type": {"defined": {"name": "OracleSetup"}}}, - {"name": "oracle_keys", "type": {"array": ["pubkey", 5]}}, - {"name": "_pad0", "type": {"array": ["u8", 6]}}, - {"name": "borrow_limit", "type": "u64"}, - {"name": "risk_tier", "type": {"defined": {"name": "RiskTier"}}}, - {"name": "auto_padding_0", "type": {"array": ["u8", 7]}}, - {"name": "_pad1", "type": {"array": ["u8", 7]}}, - { - "docs": [ - "USD denominated limit for calculating asset value for initialization astrol requirements.", - "Example, if total SOL deposits are equal to $1M and the limit it set to $500K,", - "then SOL assets will be discounted by 50%.", - "", - "In other words the max value of liabilities that can be backed by the asset is $500K.", - "This is useful for limiting the damage of orcale attacks.", - "", - "Value is UI USD value, for example value 100 -> $100" - ], - "name": "total_asset_value_init_limit", - "type": "u64" - }, - {"docs": ["Time window in seconds for the oracle price feed to be considered live."], "name": "oracle_max_age", "type": "u16"}, - {"name": "_padding", "type": {"array": ["u8", 38]}} - ], - "kind": "struct" - } - }, - { - "name": "InterestRateConfig", - "repr": {"kind": "c"}, - "serialization": "bytemuck", - "type": { - "fields": [ - {"name": "optimal_utilization_rate", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "plateau_interest_rate", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "max_interest_rate", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "insurance_fee_fixed_apr", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "insurance_ir_fee", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "protocol_fixed_fee_apr", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "protocol_ir_fee", "type": {"defined": {"name": "WrappedI80F48"}}}, - {"name": "_padding", "type": {"array": [{"array": ["u64", 2]}, 8]}} - ], - "kind": "struct" - } - }, - { - "name": "BankOperationalState", - "repr": {"kind": "rust"}, - "type": {"kind": "enum", "variants": [{"name": "Paused"}, {"name": "Operational"}, {"name": "ReduceOnly"}]} - }, - { - "name": "OracleSetup", - "repr": {"kind": "rust"}, - "type": { - "kind": "enum", - "variants": [{"name": "None"}, {"name": "PythLegacy"}, {"name": "SwitchboardV2"}, {"name": "PythPushOracle"}, {"name": "SwitchboardPull"}] - } - }, - {"name": "RiskTier", "repr": {"kind": "rust"}, "type": {"kind": "enum", "variants": [{"name": "Collateral"}, {"name": "Isolated"}]}} - ], - "errors": [] -} \ No newline at end of file diff --git a/projects/astrolend/index.js b/projects/astrolend/index.js deleted file mode 100644 index ec82246f11f..00000000000 --- a/projects/astrolend/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { Program } = require("@coral-xyz/anchor"); -const { getProvider, sumTokens2 } = require("../helper/solana"); -const idl = require('./idl.json') -const wrappedI80F48toBigNumber = require("./utils/conversion") - -let _banks - -async function getBanks() { - if (_banks) return _banks - const provider = getProvider('eclipse') - const program = new Program(idl, provider) - _banks = program.account.bank.all() - return _banks -} - -async function tvl(api) { - const banks = await getBanks() - return sumTokens2({ api, tokenAccounts: banks.map(bank => bank.account.liquidityVault) }); -} - -async function borrowed(api) { - const banks = await getBanks() - - banks.forEach(bank => { - api.add(bank.account.mint.toString(), wrappedI80F48toBigNumber(bank.account.totalLiabilityShares.value)) - }) -} - -module.exports = { - timetravel: false, - eclipse: { tvl, borrowed, }, -} diff --git a/projects/astrolend/utils/conversion.js b/projects/astrolend/utils/conversion.js deleted file mode 100644 index 75e4c926e2c..00000000000 --- a/projects/astrolend/utils/conversion.js +++ /dev/null @@ -1,93 +0,0 @@ -function decodeI80F48FromHex(hex, fractionalBytes = 6, signChar = "") { - // 1) Parse the hex as BigInt - let value = BigInt(hex); - - // 2) Apply sign if needed - if (signChar === "-") { - value = -value; - } - - // 3) Separate integer/fractional bits - // Typically I80F48 -> 48 fractional bits = 6 bytes * 8 bits/byte. - const fractionBits = 8n * BigInt(fractionalBytes); - - // integerPart = value >> 48 - let integerPart = value >> fractionBits; - - // fractionalPart = value & ((1 << 48) - 1) - let fractionalPart = value & ((1n << fractionBits) - 1n); - - // Remember if final result should be negative - const isNegative = integerPart < 0n; - if (isNegative) { - integerPart = -integerPart; - fractionalPart = -fractionalPart; - // With two’s complement, you might have to do more nuance, - // but typically I80F48 is stored as a signed 128-bit or so. - // For many Solana-based I80F48 implementations, the fractional portion - // is treated as positive magnitude once you know the sign. - } - - // 4) Convert integer part to decimal string - const integerString = integerPart.toString(10); - - // 5) Convert fractional part to decimal string by repeated "multiply by 10, divide by 2^48" - let fractionString = ""; - const denominator = 1n << fractionBits; - - // Ensure fractionalPart is positive for the loop - if (fractionalPart < 0n) { - fractionalPart = -fractionalPart; - } - - while (fractionalPart !== 0n) { - fractionalPart *= 10n; - const digit = fractionalPart / denominator; - fractionString += digit.toString(10); - fractionalPart = fractionalPart % denominator; - } - - // Combine integer + fractional - let result = fractionString.length > 0 - ? integerString + "." + fractionString - : integerString; - - // Re-apply negative if needed - if (isNegative) { - result = "-" + result; - } - - return result; -} - -// -------------------------------------------------------------------- -// USAGE EXAMPLE: - -// Suppose we have 16 bytes in I80F48 format, with 8 fractional bytes (48 bits). -// (Adjust fractionalBytes as needed for your situation.) -const I80F48_FRACTIONAL_BYTES = 6; // typical for "I80F48" = 48 fractional bits - -function wrappedI80F48toBigNumber(wrapped) { - const I80F48_TOTAL_BYTES = 16 - let bytesLE = wrapped; - if (bytesLE.length !== I80F48_TOTAL_BYTES) { - throw new Error(`Expected a ${I80F48_TOTAL_BYTES}-byte buffer`); - } - - let bytesBE = bytesLE.slice(); - bytesBE.reverse(); - - let signChar = ""; - const msb = bytesBE[0]; - if (msb & 0x80) { - signChar = "-"; - bytesBE = bytesBE.map((v) => ~v & 0xff); - } - - let hex = signChar + "0x" + bytesBE.map((v) => v.toString(16).padStart(2, "0")).join(""); - const decimalString = decodeI80F48FromHex(hex, 6) - return decimalString.split(".")[0] - -} - -module.exports = wrappedI80F48toBigNumber diff --git a/projects/astrolescent/index.js b/projects/astrolescent/index.js deleted file mode 100644 index 6621c379822..00000000000 --- a/projects/astrolescent/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens, queryAddresses } = require('../helper/chain/radixdlt'); - -const POOL_COMPONENT_ADDRESS = 'component_rdx1cqg95d25q8sa26k6996yxl3qg95edwqn4a775nf3s2zxy6tt22s9xf'; -const STAKING_COMPONENT_ADDRESS = 'component_rdx1cz6ed6wksa2u4a3da5qfeg4tg453tczexulcf0z7vs885rkr6r6363'; - -module.exports = { - methodology: `TVL consists of combining the liquidity pools and the staking portion is made up of ASTRL deposited to receive a yield`, - radixdlt: { - tvl: async (api) => { - const data = await queryAddresses({ addresses: [POOL_COMPONENT_ADDRESS] }); - const owners = data.map((i) => i.details.state.fields.find((i) => i.type_name === 'GlobalOneResourcePool' || i.type_name == 'GlobalMultiResourcePool').value); - return sumTokens({ owners, api }); - }, - staking: async (api) => { - const data = await queryAddresses({ addresses: [STAKING_COMPONENT_ADDRESS] }); - const owners = data.map((i) => i.details.state.fields.find((i) => i.type_name === 'GlobalOneResourcePool' || i.type_name == 'GlobalMultiResourcePool').value); - return sumTokens({ owners, api }); - }, - }, - timetravel: false, -}; diff --git a/projects/astroport-classic/index.js b/projects/astroport-classic/index.js deleted file mode 100644 index f0b4b13d119..00000000000 --- a/projects/astroport-classic/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getFactoryTvl } = require('../terraswap/factoryTvl') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - terra: { - // tvl: getFactoryTvl("terra1fnywlw4edny3vw44x04xd67uzkdqluymgreu7g",) // it stopped working and team no long maintains it - tvl: () => ({}) - }, - hallmarks: [ - [1651881600, "UST depeg"], - ], - deadFrom: '2024-10-02' -} \ No newline at end of file diff --git a/projects/astroport/index.js b/projects/astroport/index.js deleted file mode 100644 index e85f187ee3c..00000000000 --- a/projects/astroport/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getFactoryTvl } = require('../terraswap/factoryTvl') - -// sei: getFactoryTvl("sei1xr3rq8yvd7qplsw5yx90ftsr2zdhg4e9z60h5duusgxpv72hud3shh3qfl") DEPRECATED - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - injective: { tvl: getFactoryTvl("inj19aenkaj6qhymmt746av8ck4r8euthq3zmxr2r6") }, - terra2: { tvl: getFactoryTvl("terra14x9fr055x5hvr48hzy2t4q7kvjvfttsvxusa4xsdcy702mnzsvuqprer8r")}, - neutron: { tvl: getFactoryTvl("neutron1hptk0k5kng7hjy35vmh009qd5m6l33609nypgf2yc6nqnewduqasxplt4e", { blacklistedPairs: ['neutron14hn88erzgqskhvvczvdncu79tz4xqncrun5l5yqkwecmzrlpqnjquqp33f'] })}, - osmosis: { tvl: getFactoryTvl("osmo1246fnsutktuqqzrru673pqwtt64n288004j5fauyuezwr54llw5sl6drp6")}, - sei: { tvl: () => ({}) - }, -} diff --git a/projects/astroswap.js b/projects/astroswap.js deleted file mode 100644 index d892c95850b..00000000000 --- a/projects/astroswap.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - velas: { - tvl: getUniTVL({ - factory: '0xe82d721A6CdeC2f86e9Fca074Ff671c8621F8459', useDefaultCoreAssets: true, - blacklist: ['0xcd7509b76281223f5b7d3ad5d47f8d7aa5c2b9bf', '0xd12f7a98c0d740e7ec82e8caf94eb79c56d1b623',], - }) - }, -}; diff --git a/projects/astrovault/index.js b/projects/astrovault/index.js deleted file mode 100644 index e022079319c..00000000000 --- a/projects/astrovault/index.js +++ /dev/null @@ -1,101 +0,0 @@ -const { queryContract, } = require("../helper/chain/cosmos"); -const { PromisePool } = require('@supercharge/promise-pool') -const { transformDexBalances } = require('../helper/portedTokens') - -const data = { - archway: { - stableFactory: - "archway19yzx44k7w7gsjjhumkd4sh9r0z6lscq583hgpu9s4yyl00z9lahq0ptra0", - standardFactory: - "archway1cq6tgc32az7zpq5w7t2d89taekkn9q95g2g79ka6j46ednw7xkkq7n55a2", - hybridFactory: - "archway1zlc00gjw4ecan3tkk5g0lfd78gyfldh4hvkv2g8z5qnwlkz9vqmsdfvs7q", - }, - neutron: { - stableFactory: - "neutron10rtkhawvvqxp5zmdqn0ehcsygxjgtj64vrg58v6wnf9tn00uu97s7qfcdq", - standardFactory: - "neutron1r27at895fhu6sdj3v8jjra0n2pvu7jxrr3m90py058dkmm83wh8s9qkxw7", - hybridFactory: - "neutron16yn2gcz24s9qwpuxvrhl3xed0pmhrgwx2mz40zrazfc0pt5kq0psucs6xl", - }, - - nibiru: { - stableFactory: - "nibi143hmeallpaasdyull3gjcmasrcg63yl8f4cumah7xmcmjnqewa9s5jkan2", - standardFactory: - "nibi1gmw5eqnergfdx5qp4w53vwaywg63dwnvqeus3g6a2926pz2axyqshrlh2m", - hybridFactory: - "nibi1gwsrmpkkcl82aqs3vk4vy2lt0dm3kr3sshmruzhxhsqh8xglxrtsglzpqj", - }, -}; - -async function tvl(api) { - const { chain } = api - for (const factory of [ - data[chain].stableFactory, - data[chain].standardFactory, - data[chain].hybridFactory, - ]) { - let allPools = []; - let pagesRemaining = true; - let start_after = null; - const key = factory === data[chain].standardFactory ? 'pairs' : 'pools' - - while (pagesRemaining) { - const poolsList = await queryContract({ - contract: factory, - chain, - data: { [key]: { limit: 20, start_after } }, - }); - - const fetchedPools = poolsList[key]; - allPools.push(...fetchedPools) - if (fetchedPools.length == 0) { - pagesRemaining = false; - } else { - start_after = fetchedPools[fetchedPools.length - 1].asset_infos; - } - } - const poolAssets = [] - - const getPoolAssetsState = (async (pool) => { - const poolState = await queryContract({ contract: pool.contract_addr, chain, data: { pool: {} } }) - const poolAssetsInfo = - { - token0: poolState.assets[0].info.token ? poolState.assets[0].info.token.contract_addr : poolState.assets[0].info.native_token.denom, - token0Bal: poolState.assets[0].amount, - token1: poolState.assets[1].info.token ? poolState.assets[1].info.token.contract_addr : poolState.assets[1].info.native_token.denom, - token1Bal: poolState.assets[1].amount, - } - poolAssets.push(poolAssetsInfo) - }) - - await PromisePool - .withConcurrency(3) - .for(allPools) - .process(getPoolAssetsState) - - if (factory === data[chain].standardFactory) await transformDexBalances({ chain, data: poolAssets, balances: api.getBalances() }) - else { - poolAssets.forEach(({ token0, token0Bal, token1, token1Bal }) => { - api.add(token0, token0Bal) - api.add(token1, token1Bal) - }) - } - } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - archway: { - tvl, - }, - neutron: { - tvl, - }, - nibiru: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/astrowar-finance/index.js b/projects/astrowar-finance/index.js deleted file mode 100644 index c8d4f032ea4..00000000000 --- a/projects/astrowar-finance/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens } = require('../helper/unwrapLPs') -const { getPoolInfo, } = require('../helper/masterchef') -// Enso finance TVL lies for now in the index tokens held by the liquidityMigration contracts - -async function tvl(timestamp, _block, { harmony: block }) { - const stakePool = '0x1B7084DD5A3874C7DE8ff3e7AA668290f0613Afb'; - const masterChef = '0x50bca04eb01e4B66cBb04dcdFA872D23942D0B00'; - const standardPoolInfoAbi = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accWeVEPerShare)' - const chain = 'harmony' - const poolInfo = await getPoolInfo(masterChef, block, chain, standardPoolInfoAbi) - const toa = poolInfo.map(i => [i.output[0], stakePool]) - return sumTokens({}, toa, block, chain) -} - -module.exports = { - deadFrom: 1650564340, - hallmarks: [ - [1650412800, "Rug Pull"] - ], - harmony: { - tvl - } -}; \ No newline at end of file diff --git a/projects/asymetrix/index.js b/projects/asymetrix/index.js deleted file mode 100644 index 92f12ee2250..00000000000 --- a/projects/asymetrix/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const STAKE_PRIZE_POOL_CONTRACT = "0x82D24dD5041A3Eb942ccA68B319F1fDa9EB0c604"; -const EETH_PRIZE_POOL_CONTRACT = "0xCD760e8E1aEB4485268F1c389f20961E803dCf01" -const ST_ETH_TOKEN_CONTRACT = ADDRESSES.ethereum.STETH; -const E_ETH_TOKEN_CONTRACT = ADDRESSES.ethereum.EETH - -module.exports = { - methodology: - "TVL is counted as the amount of all stETH on the StakePrizePool contract. stETH that is not distributed yet are also counting because they will be distributed in the end of the current draw.", - ethereum: { - tvl: sumTokensExport({ owners: [STAKE_PRIZE_POOL_CONTRACT, EETH_PRIZE_POOL_CONTRACT], tokens: [ST_ETH_TOKEN_CONTRACT, E_ETH_TOKEN_CONTRACT]}), - }, -}; diff --git a/projects/asymmetry-fi/index.js b/projects/asymmetry-fi/index.js deleted file mode 100644 index 827f99e795f..00000000000 --- a/projects/asymmetry-fi/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -// safETH -const SFRXETH = ADDRESSES.ethereum.sfrxETH -const ANKRETH = '0xe95a203b1a91a908f9b9ce46459d101078c2c3cb' -const SWETH = '0xf951e335afb289353dc249e82926178eac7ded78' -const STAFI = '0x9559aaa82d9649c7a7b220e7c461d2e74c9a3593' - -// afETH -const AFETH = '0x0000000016E6Cb3038203c1129c8B4aEE7af7a11' -const CVX = ADDRESSES.ethereum.CVX -const VOTIUM = '0x00000069aBbB0B1Ad6975bcF753eEe15D318A0BF' - -// afCVX -const AFCVX = '0x8668a15b7b023Dc77B372a740FCb8939E15257Cf' - -// veASF (for ASF staking) -const veASF = '0xf119b5aa93a7755b09952b3a88d04cdaf5329034' -const ASF_TOKEN = '0x59a529070fBb61e6D6c91f952CcB7f35c34Cf8Aa' // ASF token address - -async function tvl(api) { - const tokensAndOwners = [ - // safETH Balances - [ADDRESSES.ethereum.WSTETH, '0x972a53e3a9114f61b98921fb5b86c517e8f23fad'], - [ADDRESSES.ethereum.RETH, '0x7b6633c0cd81dc338688a528c0a3f346561f5ca3'], - [SFRXETH, '0x36ce17a5c81e74dc111547f5dffbf40b8bf6b20a'], - [ANKRETH, '0xf4A1735505188DAf0872312Dd1A6182d342ea981'], - [SWETH, '0xF5cCaF2Dbed6c7Ae341Df42a9a74E057e9df3D09'], - [STAFI, '0xAd0e8EdBDabDC4dd204b49F73511C1a13a8797CC'], - - // afETH Balances - [SFRXETH, AFETH], - ] - - // CVX in afETH (Votium Strategy) - const votiumAvailableCVX = await api.call({ - abi: 'uint256:availableCvx', - target: VOTIUM, - }) - api.add(CVX, votiumAvailableCVX) - - // CVX in afCVX (Clever Strategy) - const afCVXAvailableCVX = await api.call({ - abi: 'uint256:totalAssets', - target: AFCVX, - }) - api.add(CVX, afCVXAvailableCVX) - - return api.sumTokens({ tokensAndOwners }) -} - -async function staking(api) { - // Just the ASF locked in veASF, displayed under "Staking" - return api.sumTokens({ - tokensAndOwners: [ - [ASF_TOKEN, veASF], - ], - }) -} - -module.exports = { - methodology: - 'TVL counts all assets in safETH, afETH, afCVX, and locked ASF in veASF. Staking includes just the locked ASF in veASF.', - ethereum: { - tvl, - staking, - }, -} diff --git a/projects/asymmetry-usdaf/index.js b/projects/asymmetry-usdaf/index.js deleted file mode 100644 index 557d21ed502..00000000000 --- a/projects/asymmetry-usdaf/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getLiquityV2Tvl } = require('../helper/liquity') -const { mergeExports } = require('../helper/utils') - -const config = { - ethereum: '0xCFf0DcAb01563e5324ef9D0AdB0677d9C167d791' -} -const exportsV1 = {} -const exportsV2 = {} - -Object.keys(config).forEach(chain => { - exportsV1[chain] = { - tvl: getLiquityV2Tvl(config[chain]) - } -}) - -const configV2 = { - ethereum: '0x33D68055Cd54061991B2e98b9ab326fFCE4d60Fe', -} -Object.keys(configV2).forEach(chain => { - exportsV2[chain] = { - tvl: getLiquityV2Tvl(configV2[chain]) - } -}) - -module.exports = mergeExports([exportsV1, exportsV2]) \ No newline at end of file diff --git a/projects/ate/index.js b/projects/ate/index.js deleted file mode 100644 index 2ee6b6969a8..00000000000 --- a/projects/ate/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { mergeExports } = require("../helper/utils") -const { yieldHelper, } = require("../helper/yieldHelper") - -const farm_arbi = '0x9373da81F82Aba62605a8A03950B9Aa188a02bF7' -const ate_arbi = '0xd5DA32Ad4C7510457C0e46Fa4332F75f6C4C4dC0' -const abis ={ - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare, uint256 accAQUAPerShare, uint256 depositFee, uint256 withdrawFee, uint256 amount, uint256 reserve, address strat, address strat1)', -} - -const arbi_helper = yieldHelper({ - project: 'autoearn-finance', - chain: 'arbitrum', - masterchef: farm_arbi, - nativeToken: ate_arbi, - abis, -}) - -const farm_zk = '0x6d90D891A03C32d4082126D0CEe145f3bE62444A' -const ate_zk = '0x8E6D4473031f4B81E19B13C632933a913d4B4F8e' - -const zk_helper = yieldHelper({ - project: 'autoearn-finance-era', - chain: 'era', - masterchef: farm_zk, - nativeToken: ate_zk, - abis, -}) - -module.exports = mergeExports([arbi_helper, zk_helper]) \ No newline at end of file diff --git a/projects/athena-money/index.js b/projects/athena-money/index.js deleted file mode 100644 index 690e5ea4d8c..00000000000 --- a/projects/athena-money/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const athena = "0x5C2dA48241d3bE9626dd0c48081c76DBb6D1046E"; -const ashare = "0xBEcc61601c59d5aFFFE750D201eC98CdC70DB796"; -const senate = "0x1Dc0A29e51521E2e9262b91E6E78F4c15A4B7A1a"; -const aShareRewardPool = "0x8E57FbcA4191Baf208AfdAe4E7b5591423427f38"; //ashare reward pool - - -const pool2LPs = [ - "0xc881c93ebb075b3c80f16bc9e513a7784f794ef9", - "0xc89c09a04440b7952790969ef470f8215bce4804" -] - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(athena, ashare, aShareRewardPool, senate, pool2LPs, "moonriver", undefined, false, pool2LPs[1]) -} diff --git a/projects/athenafinance-io/index.js b/projects/athenafinance-io/index.js deleted file mode 100644 index 3f773728ac6..00000000000 --- a/projects/athenafinance-io/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { unwrapLPsAuto, nullAddress, sumTokensExport } = require('../helper/unwrapLPs') - -const masterchef = '0x652a63c4df14e29080Ab058d6f151aBa61F86c10' - -async function tvl(api) { - const pools = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: 'function registeredToken(uint256) view returns (address)', target: masterchef }) - const poolInfo = await api.multiCall({ abi: 'function getPoolInfo(address) view returns ( uint256 emission, uint256 allocpoint, uint256 sizeOfPool, uint256 totalPoint)', calls: pools, target: masterchef }) - const poolInfo2 = await api.multiCall({ abi: 'function addressToPoolInfo(address) view returns ( address lpToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accATHPerShare, address rewarder, address helper, address locker)', calls: pools, target: masterchef }) - - const poolHelperData = [] - poolInfo2.forEach((data, index) => { - if (pools[index].toLowerCase() === '0xfc56eac0d0e53105f7a45a669baf662c0ee292ed') return; // ignore ATH token - if (pools[index].toLowerCase() === '0x724ccdcf3f77096963b8e0849dab3eb142b167a4') return; // ignore ATH LP token - if (data.helper === '0xeB27E1C356b173277bb75ACA3a3f8a0164Fa0ABa') { - api.add('0x724CcDcf3F77096963B8e0849dab3Eb142b167a4', poolInfo[index].sizeOfPool) - } else if (data.helper === nullAddress) { - api.add(pools[index], poolInfo[index].sizeOfPool) - } else { - poolHelperData.push({ - helper: data.helper, - balance: poolInfo[index].sizeOfPool - }) - } - }) - const depositToken = await api.multiCall({ abi: 'address:depositToken', calls: poolHelperData.map(i => i.helper) }) - depositToken.forEach((data, index) => api.add(data, poolHelperData[index].balance)) - - return unwrapLPsAuto({ api, }) -} - - -module.exports = { - doublecounted: true, - metis: { - tvl, - staking: sumTokensExport({ owner: '0xD481eD22a20708839aeB7f1d07E1d01cbc526184', tokens: ['0xA4eE142e34d0676Edc2b760DD0016003D99a4ceC'] }), - pool2: sumTokensExport({ owner: masterchef, tokens: ['0x724CcDcf3F77096963B8e0849dab3Eb142b167a4'], resolveLP: true, }), - } -} \ No newline at end of file diff --git a/projects/athos/index.js b/projects/athos/index.js deleted file mode 100644 index b141b08a12c..00000000000 --- a/projects/athos/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - misrepresentedTokens: true, - moonbeam: { - tvl: () => ({}), - staking: sumTokensExport({ - chain: 'moonbeam', - owner: '0x2dfdb2e340eadb2e29117a2b31c139fe81c550a9', - tokens: ['0xcbabee0658725b5b21e1512244734a5d5c6b51d6',], - }), - }, -}; diff --git a/projects/atlantisloans/index.js b/projects/atlantisloans/index.js deleted file mode 100644 index cb20f8a5f00..00000000000 --- a/projects/atlantisloans/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { compoundExports } = require("../helper/compound"); - -const avaxComptroller = "0x8f85ee1c0a96734cb76870106dd9c016db6de09a" -const dcComptroller = "0xA65722af4957CeF481Edb4cB255f804DD36E8aDc" - -const vaultStakingContract_BNB = "0x9aFc9877b1621e414E907F13A8d3ED9511bE03de"; -const ATL = "0x1fD991fb6c3102873ba68a4e6e6a87B3a5c10271"; - -const lpVaultStakingContract_BNB = "0xC7A5Bb6FCd603309D7a010de44dcBDe26fD45B58"; -const ALT_BUSD_CakeLP_BNB = "0xaa40dc3ec6ad76db3254b54443c4531e3dfe6bdb"; - -module.exports = { - misrepresentedTokens: true, - bsc: { - pool2: pool2(lpVaultStakingContract_BNB, ALT_BUSD_CakeLP_BNB), - staking: staking(vaultStakingContract_BNB, ATL), - tvl: async () => ({}), - }, - polygon: { - tvl: async () => ({}), - }, - avax: compoundExports(avaxComptroller, - "0x6bd2154fbc086cb43411966e0e72584196ccd065", - ADDRESSES.avax.WAVAX - ), - dogechain: compoundExports(dcComptroller, - "0xbc46Dc817ce983CfD1B36cBc599031aCBEc2FDfe", - ADDRESSES.dogechain.WWDOGE - ), - hallmarks: [ - ['2023-04-01', 'Team stops all comms, stole funds (?)'], - // ['2023-06-10', 'Governance Attack'], - ], - methodology: - "TVL is comprised of tokens deposited to the protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.", -}; diff --git a/projects/atlas-exchange/index.js b/projects/atlas-exchange/index.js deleted file mode 100644 index 2009eb797f9..00000000000 --- a/projects/atlas-exchange/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - hemi: { - factory: '0x841Fc6E05ed09f6540899ABF361CD922006FE238', - fromBlock: 1291436, - isAlgebra: true, - }, -}) diff --git a/projects/atlas-fi/index.js b/projects/atlas-fi/index.js deleted file mode 100644 index 7bf2132ff79..00000000000 --- a/projects/atlas-fi/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs") -const { sumTokensExport } = require("../helper/unknownTokens") -const VAULT = '0x3A93FCCcD2769579eFE03d6DeF2C4468F5F0bd38' -const FARM_PROXY = '0xca6aca5eabd9fac29404974e1a69a0b69c7f1ea2' - -async function tvl(api) { - return sumTokens2({ - api, - ownerTokens: [ - [[ - ADDRESSES.arbitrum.USDT, - '0xf6995955e4b0e5b287693c221f456951d612b628', - '0xee338313f022caee84034253174fa562495dcc15', - '0x8dc3312c68125a94916d62b97bb5d925f84d4ae0', - '0xd3204e4189becd9cd957046a8e4a643437ee0acc', - '0xf52f079af080c9fb5afca57dde0f8b83d49692a9', - ], VAULT], - [[ADDRESSES.arbitrum.ARB], FARM_PROXY] - ] - }) -} - -module.exports = { - methodology: 'Sums the total value locked of all strategies in Atlas', - hallmarks: [ - [1681776000, "Rug Pull"] - ], - arbitrum: { - tvl, - pool2: sumTokensExport({ useDefaultCoreAssets: true, owner: FARM_PROXY, tokens: ['0x4edaa03fc13f8f13c3290c3728f587760b12e381'], lps: ['0x4edaa03fc13f8f13c3290c3728f587760b12e381'] }), - staking: sumTokensExport({ useDefaultCoreAssets: true, owner: FARM_PROXY, tokens: ['0x296A0b8847BD4ED9af71a9ef238fa5Be0778B611'], lps: ['0x4edaa03fc13f8f13c3290c3728f587760b12e381'] }), - }, - deadFrom: 1681776000 -} diff --git a/projects/atlas-usv/api.js b/projects/atlas-usv/api.js deleted file mode 100644 index 98969bb597c..00000000000 --- a/projects/atlas-usv/api.js +++ /dev/null @@ -1,8 +0,0 @@ -const index = require('./index') - -module.exports = { - polygon: { - tvl: () => 0, - staking: index.polygon.staking, - } -} \ No newline at end of file diff --git a/projects/atlas-usv/index.js b/projects/atlas-usv/index.js deleted file mode 100644 index dea985804ef..00000000000 --- a/projects/atlas-usv/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0x71EF2894E23D7ea7Fd73a3558B3a0bA25689bC86"; -module.exports = ohmTvl(treasuryAddress, [ -//DAI - [ADDRESSES.polygon.DAI, false], -//FRAX - ["0x104592a158490a9228070e0a8e5343b499e125d0", false], -//SSX - ["0x9e2d266d6c90f6c0d80a88159b15958f7135b8af", false] , -//Sushi LP - ["0xc16e382aa7353aad0f598856afd9a93513542970", true] -], "polygon", "0x99bbc86E1f5447cf1908b27CEd0D2a0B9aA5efb2", "0xAC63686230f64BDEAF086Fe6764085453ab3023F", undefined, undefined, false) diff --git a/projects/atlendis-v2/index.js b/projects/atlendis-v2/index.js deleted file mode 100644 index 5d1935198de..00000000000 --- a/projects/atlendis-v2/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const { GraphQLClient } = require("graphql-request"); -const query = ` - query tvlAndBorrow($chainId: Int!) { - rcls(chainId: $chainId) { - address - tvl - token { - address - } - currentLoan { - borrowedAmount - } - } - bulletLoans(chainId: $chainId) { - address - tvl - token { - address - } - issuedLoan { - borrowedAmount - } - } - } -`; - -// Atlendis' indexer url -const atlendisUrl = "https://atlendis.herokuapp.com/graphql"; -// Atlendis V2 currently supports two chains: Polygon and Mode -const supportedChains = { polygon: 137, mode: 34443 }; - -async function tvl(api) { - const chain = api.chain; - const graphQLClient = new GraphQLClient(atlendisUrl); - const chainId = supportedChains[chain]; - const { rcls, bulletLoans } = await graphQLClient.request(query, { chainId }); - const tokensAndOwners = [...rcls, ...bulletLoans].map((pool) => [ - pool.token.address, - pool.address, - ]); - return api.sumTokens({ tokensAndOwners }); -} - -async function borrowed(api) { - const chain = api.chain; - const graphQLClient = new GraphQLClient(atlendisUrl); - const chainId = supportedChains[chain]; - const { rcls, bulletLoans } = await graphQLClient.request(query, { - chainId, - }); - for (let rcl of rcls) { - if (rcl.currentLoan) { - const { borrowedAmount } = rcl.currentLoan; - api.add(rcl.token.address, borrowedAmount); - } - } - for (let loan of bulletLoans) { - if (loan.issuedLoan) { - const { borrowedAmount } = loan.issuedLoan; - api.add(loan.token.address, borrowedAmount); - } - } -} - -module.exports = { - start: '2023-06-13', - hallmarks: [ - [1702367571, "Launch of Fluna V2 Pool on Polygon"], - [1713855195, "Launch of Arjan pool on Mode Network"], - ], -}; - -Object.keys(supportedChains).forEach((chain) => { - module.exports[chain] = { tvl, borrowed }; -}); diff --git a/projects/atlendis/index.js b/projects/atlendis/index.js deleted file mode 100644 index 974018c13e6..00000000000 --- a/projects/atlendis/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - polygon: { - tvl: sumTokensExport({ owners: ['0xbc13e1B5DA083b10622Ff5B52c9cFa1912F10B1F', '0x2fA375961A0cB525dB0f00af4E081a806A8639Fd'], tokens: [ - '0x60D55F02A771d515e077c9C2403a1ef324885CeC', - '0x1a13f4ca1d028320a707d99520abfefca3998b7f', - '0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4', - ], }), - borrowed: () => ({}), - } -}; \ No newline at end of file diff --git a/projects/atmossoft.js b/projects/atmossoft.js deleted file mode 100644 index 4e64729f300..00000000000 --- a/projects/atmossoft.js +++ /dev/null @@ -1,34 +0,0 @@ -const { sumUnknownTokens } = require('./helper/unknownTokens') - -async function bsc(api) { - const pools = [{ - 'pool2Address': '0xaF18cde26fdd22561df2a02958CbA092f41875d8', - 'stakingContract': '0x282FFbE782F903340A14955649032302e8020b9C' - }, { - 'pool2Address': '0xdf825e486d9d15848a36c113b7725d7923e886a4', - 'stakingContract': '0xa65d60e8a71dBDbb14B6eE7073522546FE73CFE4' - }]; - - const tokensAndOwners = pools.map(i => ([i.pool2Address, i.stakingContract])) - return sumUnknownTokens({ tokensAndOwners, api, useDefaultCoreAssets: true, }) -} -async function ftm(api) { - const pools = [{ - 'pool2Address': '0x662db0c6fa77041fe4901149558cc70ca1c8e874', - 'stakingContract': 'f043f876d3d220acce029ca76c9572f0449e5e71' - }]; - const tokensAndOwners = pools.map(i => ([i.pool2Address, i.stakingContract])) - - return sumUnknownTokens({ tokensAndOwners, api, useDefaultCoreAssets: true, }) -} - -module.exports = { - misrepresentedTokens: true, - fantom: { - tvl: async () => ({}), - pool2: ftm, - }, - bsc: { - pool2: bsc - }, -}; \ No newline at end of file diff --git a/projects/atodex/index.js b/projects/atodex/index.js deleted file mode 100644 index e0d9c00bb9b..00000000000 --- a/projects/atodex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -module.exports = dexExport({ - account: '0x6b1a0749af672861c5dfd301dcd7cf85973c970d6088bae4f4a34e2effcb9e5e', - poolStr: 'AtodexSwapPoolV1::LiquidityPool', -}) diff --git a/projects/atoll/index.js b/projects/atoll/index.js deleted file mode 100644 index f73e56869c1..00000000000 --- a/projects/atoll/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const atETH = '0x284D81e48fBc782Aa9186a03a226690aEA5cBe0E'; -const scETH = ADDRESSES.sonic.scETH; -const WETH = '0x50c42deacd8fc9773493ed674b675be577f2634b'; - -async function tvl(api) { - // swapx atETH-scETH AMO - const AMO_adapter_swapx_atETHscETH = '0x8c4c8ec44b10bcc62afaa3caa73c6b99469c48db'; - const swapx_atETHscETH_gauge = '0xBBb10f33DCDd50BD4317459A4B051FC319B29585'; - const swapx_atETHscETH_LP = "0x20737388dbc9F7E56f4Cc69D41DA62C96B355DB0" - - const vault_AMO_owned = await api.call({ - abi: 'erc20:balanceOf', - target: swapx_atETHscETH_gauge, - params: [AMO_adapter_swapx_atETHscETH], - }); - const vault_total_supply = await api.call({ - abi: 'erc20:totalSupply', - target: swapx_atETHscETH_LP, - }); - const [vault_atETH_amount, vault_scETH_amount] = await api.call({ - abi: 'function getTotalAmounts() view returns (uint256,uint256)', - target: swapx_atETHscETH_LP, - }); - - const AMO_atETH_amount = vault_atETH_amount * vault_AMO_owned / vault_total_supply - const AMO_scETH_amount = vault_scETH_amount * vault_AMO_owned / vault_total_supply - api.addTokens([atETH, scETH], [AMO_atETH_amount, AMO_scETH_amount]) - -} - -module.exports = { - methodology: 'AMO owned liquidity', - sonic: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/atomic/index.js b/projects/atomic/index.js deleted file mode 100644 index 737b5b572a1..00000000000 --- a/projects/atomic/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const Lendings = [ - "0x561920028545985c60fb93d48717ff0070cb4e74", - "0xBAE99752dA245089698Bc1b5F0a14eAE91694FBc", - "0xc1b677039892C048f2eFb7E9C5da1B51fDE92504" -]; - -async function tvl(api) { - const balances = {}; - - const collateralBalance = await api.multiCall({ - abi: "uint256:totalSupplied", - calls: Lendings.map(i => ({ target: i })) - }); - - const lendingTokens = await api.multiCall({ - abi: "address:token", - calls: Lendings.map(i => ({ target: i })) - }); - - - for (let i = 0; i < collateralBalance.length; i++) { - balances[`arbitrum:${lendingTokens[i]}`] = collateralBalance[i]; - } - - return balances; -} - -module.exports = { - arbitrum: { - tvl - } -}; - - diff --git a/projects/atomichub/index.js b/projects/atomichub/index.js deleted file mode 100644 index 7b07e90db94..00000000000 --- a/projects/atomichub/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// AtomicHub -// https://eos.atomichub.io/ -async function eos() { - const tokens = [ - ["eosio.token", "EOS", "eos"], - ]; - return await get_account_tvl("atomicmarket", tokens); -} - -// AtomicHub -// https://wax.atomichub.io/ -async function wax() { - const accounts = ["atomicmarket", "atomicassets"]; - const tokens = [ - ["eosio.token", "WAX", "wax"], - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `AtomicHub TVL is achieved by querying token balances from AtomicHub's smart contracts.`, - eos: { - tvl: eos - }, - wax: { - tvl: wax - }, -} \ No newline at end of file diff --git a/projects/atrium/index.js b/projects/atrium/index.js deleted file mode 100644 index 0f90d8a6831..00000000000 --- a/projects/atrium/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { trySumTokens } = require("../helper/chain/cardano"); -const { assetsAddresses } = require("../helper/chain/cardano/blockfrost"); -const poolAssetAssetID = "f91c399aa9d544edc8059d4856acdbd8331f462cdcbd56733d6a85185374616b65506f6f6c" - -async function tvl() { - let poolScriptAddresses = (await assetsAddresses(poolAssetAssetID)).map(item => item.address); - let assetsLocked = await trySumTokens({ - owners: poolScriptAddresses, - }); - return assetsLocked; -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - }, -}; diff --git a/projects/atrix.js b/projects/atrix.js deleted file mode 100644 index fcb5249d9d2..00000000000 --- a/projects/atrix.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2, } = require('./helper/solana') - -async function tvl() { - return sumTokens2({ owner: '3uTzTX5GBSfbW7eM9R9k95H7Txe32Qw3Z25MtyD2dzwC', }) - -} - -module.exports = { - timetravel: false, - solana: { tvl }, - hallmarks: [ - [1665521360, "Mango Markets Hack"], - [1667865600, "FTX collapse"] - ], -} \ No newline at end of file diff --git a/projects/auctus/abi.json b/projects/auctus/abi.json deleted file mode 100644 index f2af95d0b0c..00000000000 --- a/projects/auctus/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "collateral": "address:collateral", - "totalCollateral": "uint256:totalCollateral", - "balance": "uint256:balance", - "token": "address:token" -} \ No newline at end of file diff --git a/projects/auctus/index.js b/projects/auctus/index.js deleted file mode 100644 index 3af3e435ad4..00000000000 --- a/projects/auctus/index.js +++ /dev/null @@ -1,99 +0,0 @@ -const abi = require('./abi.json'); -const { getLogs } = require('../helper/cache/getLogs') - -const START_BLOCK = 10104891; -const FACTORY = '0x176b98ab38d1aE8fF3F30bF07f9B93E26F559C17'; -const POOLS_FACTORY = '0xe28520DDB1b419Ac37eCDBB2c0F97c8Cf079CCC3'; -const VAULTS = '0x2Ce43b4570Ad9DEAb8CFE6258B42DB7301e3b6C0'; - -const getTokenAddressFromNewAcoTokenLogData = data => '0x' + data.substring(154, 194); -const getPoolAddressFromNewAcoPoolLogData = data => '0x' + data.substring(26, 66); -const getVaultAddressFromSetAcoVaultLogData = data => '0x' + data.substring(26, 66); -const getUnderlyingAddressFromNewAcoPoolLogData = data => '0x' + data.substring(26, 66); -const getStrikeAssetAddressFromNewAcoPoolLogData = data => '0x' + data.substring(26, 66); - -async function tvl(api) { - var logsPromises = await Promise.all([ - getLogs({ - api, - target: FACTORY, - fromBlock: START_BLOCK, - topic: 'NewAcoToken(address,address,bool,uint256,uint256,address,address)', - }), - getLogs({ - api, - target: FACTORY, - fromBlock: START_BLOCK, - topic: 'NewAcoTokenData(address,address,bool,uint256,uint256,address,address,address)', - }), - getLogs({ - api, - target: POOLS_FACTORY, - fromBlock: START_BLOCK, - topic: 'NewAcoPool(address,address,bool,address,address)', - }), - getLogs({ - api, - target: VAULTS, - fromBlock: START_BLOCK, - topic: 'AcoVault(address,bool)', - }) - ]) - - const logs = logsPromises[0]; - - let acoOptionsAddresses = []; - logs.forEach((log) => { - const address = getTokenAddressFromNewAcoTokenLogData(log.data); - acoOptionsAddresses.push(address) - }); - - const logs2 = logsPromises[1]; - logs2.forEach((log) => { - const address = getTokenAddressFromNewAcoTokenLogData(log.data); - acoOptionsAddresses.push(address) - }); - - let collateralResult = await api.multiCall({ calls: acoOptionsAddresses, abi: abi.collateral, }); - - let collateralAddressMap = {} - - collateralResult.forEach((result, i) => { - collateralAddressMap[acoOptionsAddresses[i]] = result; - }); - - let totalCollateralResult = await api.multiCall({ calls: acoOptionsAddresses, abi: abi.totalCollateral, }); - - totalCollateralResult.forEach((result, i) => { - const colateralAddress = collateralAddressMap[acoOptionsAddresses[i]] - api.add(colateralAddress, result) - }); - - const newAcoPoolLogs = logsPromises[2]; - const ownerTokens = [] - - newAcoPoolLogs.forEach((log) => { - const address = getPoolAddressFromNewAcoPoolLogData(log.data) - const underlyingAddress = getUnderlyingAddressFromNewAcoPoolLogData(log.topics[1]) - const strikeAssetAddress = getStrikeAssetAddressFromNewAcoPoolLogData(log.topics[2]) - ownerTokens.push([[underlyingAddress, strikeAssetAddress], address]) - }); - - await api.sumTokens({ ownerTokens }) - - const setVaultLog = logsPromises[3]; - - let acoVaultsAddresses = []; - setVaultLog.forEach((log) => { - const address = getVaultAddressFromSetAcoVaultLogData(log.topics[1]); - acoVaultsAddresses.push(address) - }); - const tokens = await api.multiCall({ abi: abi.token, calls: acoVaultsAddresses }) - const bals = await api.multiCall({ abi: abi.balance, calls: acoVaultsAddresses }) - api.add(tokens, bals) -} - -module.exports = { - start: '2020-05-21', // 05/20/2020 @ 08:10:40pm (UTC) - ethereum: { tvl } -} diff --git a/projects/augmented-finance/index.js b/projects/augmented-finance/index.js deleted file mode 100644 index 50fd9f66764..00000000000 --- a/projects/augmented-finance/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const methodologies = require("../helper/methodologies"); - -const config = { - ethereum: '0x9276635Ec39C72866f3cF70298eFe501EB5dcDf1', - bsc: '0xEdBDF91ac20287e332c761179FaCe71eba9FBc93', - avax: '0xb2e7216F2f70ac9d9Eec70e1Ca6f2f1CADf218D5', - xdai: '0x75e5cF901f3A576F72AB6bCbcf7d81F1619C6a12', -} - -module.exports = { - methodology: methodologies.lendingMarket, - deadFrom: "2024-02-22" -}; - -Object.keys(config).forEach(chain => { - const provider = config[chain] - module.exports[chain] = { - borrowed: () => ({}), // project abandoned? - tvl: async (api) => { - if (chain === 'xdai') return {} - const tokens = await api.call({ abi: abi.getReservesList, target: config[chain] }) - const data = await api.multiCall({ abi: abi.getReserveData, calls: tokens, target: config[chain]}) - const owners = data.map(c=>c.depositTokenAddress) - return api.sumTokens({ tokensAndOwners2: [tokens, owners] }) - } - }}) - -const abi = { - "getReserveData": "function getReserveData(address asset) view returns (((uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address depositTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address strategy, uint8 id))", - "getReserveNormalizedIncome": "function getReserveNormalizedIncome(address asset) view returns (uint256)", - "getReserveNormalizedVariableDebt": "function getReserveNormalizedVariableDebt(address asset) view returns (uint256)", - "getReservesList": "address[]:getReservesList", -} \ No newline at end of file diff --git a/projects/augur/index.js b/projects/augur/index.js deleted file mode 100644 index 358afc59d01..00000000000 --- a/projects/augur/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const dai = ADDRESSES.ethereum.DAI -const universe = '0x49244bd018ca9fd1f06ecc07b9e9de773246e5aa' -const delegator = '0xd5524179cB7AE012f5B642C1D6D700Bbaa76B96b' - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokensAndOwners: [ - [dai, universe], - [ADDRESSES.null, delegator] - ]}), - }, - hallmarks:[ - [1613091600, "Election market resolves"] - ] -} diff --git a/projects/auguryfinance/abi.json b/projects/auguryfinance/abi.json deleted file mode 100644 index 746aa3595d9..00000000000 --- a/projects/auguryfinance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accOmenPerShare, uint16 depositFeeBP)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/auguryfinance/index.js b/projects/auguryfinance/index.js deleted file mode 100644 index 1ab4119d044..00000000000 --- a/projects/auguryfinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const MasterAugur = "0x6ad70613d14c34aa69E1604af91c39e0591a132e"; - -const polygonTvl = async (api) => { - const info = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: MasterAugur}) - const tokens = info.map(pool => pool.lpToken) - return sumTokens2({ api, tokens, owner: MasterAugur, resolveLP: true }) -}; - -module.exports = { - methodology: 'MasterAugur(MasterChef) contract is used to pull LP token amounts. LP tokens are unwrapped and each token token balance is considered in the TVL sum.', - polygon: { - tvl: polygonTvl, - }, -}; diff --git a/projects/aura-finance/abi.json b/projects/aura-finance/abi.json deleted file mode 100644 index 59ea22ca938..00000000000 --- a/projects/aura-finance/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)", - "getPoolId": "function getPoolId() view returns (bytes32)", - "getPoolTokens": "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)", - "getTokenInfo": "function getTokenInfo() view returns (address[] tokens, (uint8 tokenType, address rateProvider, bool paysYieldFees)[] tokenInfo, uint256[] balancesRaw, uint256[] lastBalancesLiveScaled18)" -} \ No newline at end of file diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js deleted file mode 100644 index 01395313525..00000000000 --- a/projects/aura-finance/index.js +++ /dev/null @@ -1,168 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { unwrapBalancerToken } = require('../helper/unwrapLPs') - -const AURA_BOOSTER = "0x7818A1DA7BD1E64c199029E86Ba244a9798eEE10" -const AURA_BOOSTER_2 = "0xA57b8d98dAE62B26Ec3bcC4a365338157060B234" -const BALANCER_VAULT = "0xBA12222222228d8Ba445958a75a0704d566BF2C8" -const addresses = { - aura: "0xc0c293ce456ff0ed870add98a0828dd4d2903dbf", - auraLocker: "0x3Fa73f1E5d8A792C80F426fc8F84FBF7Ce9bBCAC", - bal: "0xba100000625a3754423978a60c9317c58a424e3d", - veBal: "0xC128a9954e6c874eA3d62ce62B468bA073093F25", - auraDelegate: "0xaF52695E1bB01A16D33D7194C28C42b10e0Dbec2", - bal80eth20: "0x5c6Ee304399DBdB9C8Ef030aB642B10820DB8F56", -}; - -async function addEthV2PoolsTvl(api) { - let pools = await Promise.all([AURA_BOOSTER, AURA_BOOSTER_2].map(i => api.fetchList({ target: i, itemAbi: abi.poolInfo, lengthAbi: abi.poolLength, }))) - pools = pools.flat() - const poolInputs = pools.map(pool => pool.lptoken) - const v2PoolInfos = [] - const v2PoolIds = [] - - const failedCallIndices = [] - const failedCallInputs = [] - - const poolIds = await api.multiCall({ calls: poolInputs, abi: abi.getPoolId, permitFailure: true, }) - poolIds.forEach((v, i) => { - if (v) { - v2PoolIds.push(v) - v2PoolInfos.push(pools[i]) - } else { - failedCallInputs.push(poolInputs[i]) - failedCallIndices.push(i) - } - }) - let newPoolIds = await api.multiCall({ calls: failedCallInputs, abi: 'function POOL_ID() view returns (bytes32)', permitFailure: true, }) - - const failedCallIndices2 = [] - const failedCallInputs2 = [] - - newPoolIds.forEach((v, i) => { - if (v) { - v2PoolIds.push(v) - v2PoolInfos.push(pools[failedCallIndices[i]]) - } else { - failedCallInputs2.push(failedCallInputs[i]) - failedCallIndices2.push(failedCallIndices[i]) - } - }) - - - const isVersion3 = await api.multiCall({ calls: failedCallInputs2, abi: 'address:lp_token', permitFailure: true, }) - - const failedCallIndices3 = [] - const failedCallInputs3 = [] - const v3PoolInfos = [] - const v3Pools = [] - - isVersion3.forEach((v, i) => { - if (!v) { - v3PoolInfos.push(pools[failedCallIndices2[i]]) - v3Pools.push(failedCallInputs2[i]) - } else { - failedCallInputs3.push(failedCallInputs2[i]) - failedCallIndices3.push(failedCallIndices2[i]) - } - }) - - const newLpTokens = await api.multiCall({ calls: failedCallInputs3, abi: 'address:lp_token', permitFailure: true, }) - newPoolIds = await api.multiCall({ calls: newLpTokens, abi: abi.getPoolId, permitFailure: true, }) - - - newPoolIds.forEach((v, i) => { - if (v) { - v2PoolIds.push(v) - v2PoolInfos.push(pools[failedCallIndices2[i]]) - } else { - throw new Error('Failed to get pool id for ' + failedCallInputs3[i]) - } - }) - - const poolTokensInfo = await api.multiCall({ target: BALANCER_VAULT, calls: v2PoolIds, abi: abi.getPoolTokens, }) - const balancesinStaking = await api.multiCall({ calls: v2PoolInfos.map(pool => ({ target: pool.token, params: pool.crvRewards })), abi: 'erc20:balanceOf', }) - const totalSupplies = await api.multiCall({ calls: v2PoolInfos.map(pool => pool.lptoken), abi: 'erc20:totalSupply', }) - const ratios = balancesinStaking.map((v, i) => +totalSupplies[i] > 0 ? v / totalSupplies[i] : 0) - - for (let [i, info] of poolTokensInfo.entries()) { - info.tokens.forEach((token, j) => { - api.add(token, info.balances[j] * ratios[i]) - }) - } - - await addEthV3PoolsTvl({ poolInfos: v3PoolInfos, pools: v3Pools, api }) -} - -async function addEthV3PoolsTvl({ poolInfos, pools, api }) { - const poolTokensInfo = await api.multiCall({ calls: pools, abi: abi.getTokenInfo, }) - const balancesinStaking = await api.multiCall({ calls: poolInfos.map(pool => ({ target: pool.token, params: pool.crvRewards })), abi: 'erc20:balanceOf', }) - const totalSupplies = await api.multiCall({ calls: poolInfos.map(pool => pool.lptoken), abi: 'erc20:totalSupply', }) - const ratios = balancesinStaking.map((v, i) => +totalSupplies[i] > 0 ? v / totalSupplies[i] : 0) - - for (let [i, info] of poolTokensInfo.entries()) { - info.tokens.forEach((token, j) => { - api.add(token, info.balancesRaw[j] * ratios[i]) - }) - } -} - -async function tvl(api) { - - await addEthV2PoolsTvl(api) - - // add veBal tvl - const veBalTotalSupply = await api.call({ abi: 'erc20:totalSupply', target: addresses.veBal, }) - const veBalance = await api.call({ abi: 'erc20:balanceOf', target: addresses.veBal, params: addresses.auraDelegate, }) - const ratio = veBalance / veBalTotalSupply - const bal = await unwrapBalancerToken({ api, balancerToken: addresses.bal80eth20, owner: addresses.veBal, }) - Object.entries(bal).forEach(([token, value]) => { - api.add(token, +value * ratio, { skipChain: true, }) - }) -} - -const config = { - base: { factory: '0xb1a4fe1c6d25a0ddab47431a92a723dd71d9021f', fromBlock: 2555348, voterProxy: '0xC181Edc719480bd089b94647c2Dc504e2700a2B0' }, - arbitrum: { factory: '0x6817149cb753bf529565b4d023d7507ed2ff4bc0', fromBlock: 72942741, voterProxy: '0xc181edc719480bd089b94647c2dc504e2700a2b0' }, - optimism: { factory: '0xa523f47A933D5020b23629dDf689695AA94612Dc', fromBlock: 83239534, voterProxy: '0xc181edc719480bd089b94647c2dc504e2700a2b0' }, - polygon: { factory: '0x22625eedd92c81a219a83e1dc48f88d54786b017', fromBlock: 40687417, voterProxy: '0xC181Edc719480bd089b94647c2Dc504e2700a2B0' }, - xdai: { factory: '0x83E443EF4f9963C77bd860f94500075556668cb8', fromBlock: 27088527, voterProxy: '0xC181Edc719480bd089b94647c2Dc504e2700a2B0' }, - polygon_zkevm: { factory: '0x2498A2B0d6462d2260EAC50aE1C3e03F4829BA95', fromBlock: 203652, voterProxy: '0xC181Edc719480bd089b94647c2Dc504e2700a2B0' }, - avax: { factory: '0xf23b4DB826DbA14c0e857029dfF076b1c0264843', fromBlock: 32558551, voterProxy: '0xC181Edc719480bd089b94647c2Dc504e2700a2B0' }, - fraxtal: { factory: '0xc3ccacE87f6d3A81724075ADcb5ddd85a8A1bB68', fromBlock: 4712390, voterProxy: '0xC181Edc719480bd089b94647c2Dc504e2700a2B0' }, -} - -module.exports = { - methodology: "TVL of Aura Finance consists of the total deposited assets, protocol-controlled value via veBAL and vote-locked AURA (staking)", - ethereum: { - tvl, - staking: staking(addresses.auraLocker, addresses.aura) - } -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, voterProxy, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0xaa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c0'], - eventAbi: 'event GaugeCreated (address indexed gauge)', - onlyArgs: true, - fromBlock, - }) - - // const auraBalVault = '0x4EA9317D90b61fc28C418C247ad0CA8939Bbb0e9' - // const asset = await api.call({ abi: 'address:asset', target: auraBalVault }) - // const bal = await api.call({ abi: 'uint256:totalAssets', target: auraBalVault }) - // api.add(asset, bal) - const gauges = logs.map(log => log.gauge) - const tokens = await api.multiCall({ abi: 'address:lp_token', calls: gauges }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges.map(i => ({ target: i, params: voterProxy })) }) - api.addTokens(tokens, bals) - } - } -}) \ No newline at end of file diff --git a/projects/auragi-finance/index.js b/projects/auragi-finance/index.js deleted file mode 100644 index 9f8b9e44aa8..00000000000 --- a/projects/auragi-finance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - arbitrum:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0xa36b55DBe8e83Eb69C686368cF93ABC8A238CC5f', - }), - }, -} diff --git a/projects/auraswap/index.js b/projects/auraswap/index.js deleted file mode 100644 index d5493248f44..00000000000 --- a/projects/auraswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens'); -module.exports = uniTvlExports({ - 'polygon': '0x015DE3ec460869eb5ceAe4224Dc7112ac0a39303' -}, { - staking: { - polygon: [ - '0x44Bb1a3E56Cb12b7B1a8E925f09A170e3646346d', - '0x1b7805e2829fd7D194DCc3078a4199b13c77E467' - ] - } -}); \ No newline at end of file diff --git a/projects/aurelius/index.js b/projects/aurelius/index.js deleted file mode 100644 index 3c39ed0d673..00000000000 --- a/projects/aurelius/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { aaveExports } = require('../helper/aave'); - -const admins = { - v1: '0x295c6074F090f85819cbC911266522e43A8e0f4A' -} - -const strategiesVersioned = { - v1: { - wETH: "0x89A42aAc15339479e0Bba6e3B32d40CAeFAcCd98", - wMNT: "0xD039577917A164F8Fd1Ee54c6Fb90b781eA04716", - USDC: "0x79683D2ccefd7307f1649F8F8A987D232dc99A72", - USDT: "0x874aE50644E56C900CBe6f3C8dabBAA991176c80", - }, -} - -const MONEY_MARKET_DATA_PROVIDER = '0xedB4f24e4b74a6B1e20e2EAf70806EAC19E1FA54'; - -async function getCdpTvl(api) { - const strategies = Object.values(strategiesVersioned).map(i => Object.values(i)).flat() - const vaults = Object.values(admins) - const configs = await api.multiCall({ abi: 'address:collateralConfig', calls: vaults }) - const collaterals = await api.multiCall({ abi: 'address[]:getAllowedCollaterals', calls: configs }) - const pools = await api.multiCall({ abi: 'address:activePool', calls: vaults }) - - const tokens = await api.multiCall({ abi: 'address:token', calls: strategies }) - await api.sumTokens({ tokensAndOwners2: [tokens, strategies] }) - // const bals = await api.multiCall({ abi: 'uint256:totalSupply', calls: strategies }) - // api.addTokens(tokens, bals) - return api.sumTokens({ tokens: collaterals.flat(), owners: pools }) -} - -module.exports = { - doublecounted: true, - methodology: `TVL is fetched from Aurelius contracts. - CDP TVL is calculated by summing collateral supply in the active pool and underlying vaults. - Money market TVL is broken into available liquidity and borrowed amount.`, - mantle: aaveExports('mantle', undefined, undefined, [MONEY_MARKET_DATA_PROVIDER]), -} - -module.exports.mantle.tvl = sdk.util.sumChainTvls([getCdpTvl, module.exports.mantle.tvl]); \ No newline at end of file diff --git a/projects/aurigami.js b/projects/aurigami.js deleted file mode 100644 index 1fea9e6c36b..00000000000 --- a/projects/aurigami.js +++ /dev/null @@ -1,9 +0,0 @@ -const { compoundExports } = require("./helper/compound"); - -module.exports = { - aurora: compoundExports( - '0x817af6cfAF35BdC1A634d6cC94eE9e4c68369Aeb', - '0xca9511B610bA5fc7E311FDeF9cE16050eE4449E9', - '0xc9bdeed33cd01541e1eed10f90519d2c06fe3feb' - ) -}; \ No newline at end of file diff --git a/projects/auro-finance/index.js b/projects/auro-finance/index.js deleted file mode 100644 index 81949dab3fb..00000000000 --- a/projects/auro-finance/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); - -async function _getDaoBalance() { - const balances = await function_view({ - functionStr: "0x50a340a19e6ada1be07192c042786ca6a9651d5c845acc8727e8c6416a56a32c::dao::balances", - args: [], - type_arguments: [], - }) - - return balances.data -} - -module.exports = { - timetravel: false, - methodology: "Counts the total liquidity in all pools on Auro Finance.", - aptos: { - tvl: async (api) => { - let balances = await _getDaoBalance(); - - for (const coin of balances) { - api.add(coin.key, Number(coin.value)); - } - api.removeTokenBalance('0x534e4c3dc0f038dab1a8259e89301c4da58779a5d482fb354a41c08147e6b9ec') // USDA, projects own token - }, - }, - }; \ No newline at end of file diff --git a/projects/aurora-plus/index.js b/projects/aurora-plus/index.js deleted file mode 100644 index 69510869cc0..00000000000 --- a/projects/aurora-plus/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const AURORA = ADDRESSES.aurora.AURORA; -const stakingContract = "0xf075c896cbbb625e7911e284cd23ee19bdccf299"; - -module.exports = { - aurora: { - tvl: staking(stakingContract, AURORA), - }, - methodology: "Aurora tokens locked in staking contract", -}; - diff --git a/projects/auroraswap/index.js b/projects/auroraswap/index.js deleted file mode 100644 index 06de6ef4406..00000000000 --- a/projects/auroraswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens'); -module.exports = uniTvlExports({ - 'aurora': '0xC5E1DaeC2ad401eBEBdd3E32516d90Ab251A3aA3' -}, { staking: { aurora: ['0x35CC71888DBb9FfB777337324a4A60fdBAA19DDE', '0x12c87331f086c3C926248f964f8702C0842Fd77F'] } }); \ No newline at end of file diff --git a/projects/aurum/index.js b/projects/aurum/index.js deleted file mode 100644 index fed75c35667..00000000000 --- a/projects/aurum/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { aaveExports, methodology } = require('../helper/aave') - -const CONFIG = { - sonic: ['0x2ce2f663f8C8A011df0ACb1744b45108F61B9005'], -} - -module.exports.methodology = methodology - -Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = aaveExports(undefined, undefined, undefined, poolDatas, { v3: true, }) -}) -module.exports.sonic.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/aurus/index.js b/projects/aurus/index.js deleted file mode 100644 index e7094e6b1b5..00000000000 --- a/projects/aurus/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ASSETS = [ - '0xe4a6f23fb9e00fca037aa0ea0a6954de0a6c53bf', // TXAU - gold - '0x34abce75d2f8f33940c721dca0f562617787bff3', // TXAG - silver - '0x19b22dbadc298c359a1d1b59e35f352a2b40e33c' // TXPT - platinum -] - -module.exports = { - methodology: "TVL corresponds to the total amount of Assets minted", - ethereum: { - tvl: async (api) => { - const totalSupplies = await api.multiCall({calls: ASSETS, abi: 'erc20:totalSupply'}) - api.add(ASSETS, totalSupplies) - } - } -} diff --git a/projects/autobark/index.js b/projects/autobark/index.js deleted file mode 100644 index 8a013d2486b..00000000000 --- a/projects/autobark/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { yieldHelper } = require("../helper/unknownTokens"); -const { getConfig } = require('../helper/cache') - -const chain = "dogechain"; -const tokenAPI = "address:want" - -module.exports = { - [chain]: { - tvl: async (api) => { - const pools = await getConfig('autobark','https://raw.githubusercontent.com/autobark-finance/autobark-app-pub/main/src/features/config/vault/dogechain_pools.js') - const vaults = pools - .split('\n') - .filter(i => i.includes('earnedTokenAddress')) - .map(i => i.split('\'').filter(i => i.startsWith('0x'))[0]) - return yieldHelper({ ...api, vaults, tokenAPI, useDefaultCoreAssets: true, }) - } - } -} \ No newline at end of file diff --git a/projects/autocoreDefi/index.js b/projects/autocoreDefi/index.js deleted file mode 100644 index 9386e3da0a6..00000000000 --- a/projects/autocoreDefi/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') - -const config = { - core: { - vaults: [ - "0x3132CDD419820f0D00152b95267FA013783e1F27", - "0x88f95f59c0FC1e9857188218F23315ECe6f64CFe", - "0xF71552C9893BDFf01a4a2debaB80E21b6E0e9481", - "0x1D165E1D48177592943275750C7ABeB946D44a6e", - "0x11606ce0D44a62027F6EEb28db7483E5ecB1103f", - "0xe79E557bf863383EB666197e96e73ACEFBf71347", - "0x91C143ED78970a4C3830070c6c1FA38EEc9F8c6E", - "0xE891d51D278518e522148271b65ec3a534012389", - "0xc09849236c5De1317e9a957cF695642285A2A5E2", - "0x0dc152dDC49e0f872489297D6Df0ef3Bb5498FF2", - "0xBafA023c72112ecfc04E661bedb30d9A8e7e08ad", - "0x746f5530FBebDcf984F0D15637f0217eb7cDcE73", - "0x87c98004D1F819fB6354CeD704304a1394Ac1F16", - "0x5D884E045d8F74E3b600c359395A300515b6F574", - "0x1f0c2507C500F24fdd765Dc4025E5c5b40FC33c3" - ] - } -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { vaults } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:want', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: vaults }) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api , useDefaultCoreAssets: true, resolveLP: true, lps: tokens }) - } - } -}) \ No newline at end of file diff --git a/projects/autoearn/index.js b/projects/autoearn/index.js deleted file mode 100644 index 10f0ac61abc..00000000000 --- a/projects/autoearn/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { mergeExports } = require("../helper/utils") -const { yieldHelper, } = require("../helper/yieldHelper") - -const farm_arbi = '0x9373da81F82Aba62605a8A03950B9Aa188a02bF7' -const ate_arbi = '0xd5DA32Ad4C7510457C0e46Fa4332F75f6C4C4dC0' -const abis ={ - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare, uint256 accAQUAPerShare, uint256 depositFee, uint256 withdrawFee, uint256 amount, uint256 reserve, address strat, address strat1)', -} - -const arbi_helper = yieldHelper({ - project: 'autoearn-finance', - chain: 'arbitrum', - masterchef: farm_arbi, - nativeToken: ate_arbi, - abis, -}) - -const farm_zk = '0x6d90D891A03C32d4082126D0CEe145f3bE62444A' -const ate_zk = '0x8E6D4473031f4B81E19B13C632933a913d4B4F8e' - -const zk_helper = yieldHelper({ - project: 'autoearn-finance-era', - chain: 'era', - masterchef: farm_zk, - nativeToken: ate_zk, - abis, -}) - -const farm_base = '0x04888AfAE97dC01e337582A2c8D3D232e27273fe' -const ate_base = '0xd5DA32Ad4C7510457C0e46Fa4332F75f6C4C4dC0' - -const base_helper = yieldHelper({ - project: 'autoearn-finance-base', - chain: 'base', - masterchef: farm_base, - nativeToken: ate_base, - abis, -}) - -module.exports = mergeExports([arbi_helper, zk_helper, base_helper]) diff --git a/projects/autofarm.js b/projects/autofarm.js deleted file mode 100644 index c27ac3639de..00000000000 --- a/projects/autofarm.js +++ /dev/null @@ -1,42 +0,0 @@ -const { sumUnknownTokens } = require('./helper/unknownTokens'); - -module.exports.hallmarks=[ - [1618966800, "Venus incident"], - [1634778000, "Emissions end"], -] - -const config = { - aurora: "0x62537419c8327AB66165bAE205Da8fcB6871A700", - avax: "0x864A0B7F8466247A0e44558D29cDC37D4623F213", - boba: "0x864A0B7F8466247A0e44558D29cDC37D4623F213", - bsc: "0x0895196562c7868c5be92459fae7f877ed450452", - celo: "0xdD11b66B90402F294a017c4688509c364312303F", - cronos: "0x76b8c3ECdF99483335239e66F34191f11534cbAA", - fantom: "0x76b8c3ECdF99483335239e66F34191f11534cbAA", - fuse: "0x9C30e4B50b4b3804D3b50f01619c61fE44ed894e", - harmony: "0x9c57658139afb41949cebc07d806f37d29d13eea", - heco: "0x96a29c4bce3126266983f535b41c30dba80d5d99", - moonbeam: "0x77286f5257e090b1bedbc6df6726d53cbf8573a6", - moonriver: "0xfadA8Cc923514F1D7B0586aD554b4a0CeAD4680E", - oasis: "0xbf19C3fe078258F1D1C34bEc7e624AD8a1DE343A", - okexchain: "0x864A0B7F8466247A0e44558D29cDC37D4623F213", - polygon: "0x89d065572136814230A55DdEeDDEC9DF34EB0B76", - velas: "0xAd2DB12795CeD89cA2D1819710233106115E3034", - xdai: "0xfadA8Cc923514F1D7B0586aD554b4a0CeAD4680E", - evmos: "0x9C30e4B50b4b3804D3b50f01619c61fE44ed894e", - kcc: "0x76b8c3ECdF99483335239e66F34191f11534cbAA", - wan: "0xAd2DB12795CeD89cA2D1819710233106115E3034", -} - -Object.keys(config).forEach(chain => { - const masterchef = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const data = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: 'function poolInfo(uint256) view returns (address want, uint256,uint256,uint256,address strat)', target: masterchef, }) - const tokens = data.map(i => i.want) - const bals = await api.multiCall({ abi: 'uint256:wantLockedTotal', calls: data.map(i => i.strat), permitFailure: true, }) - bals.forEach((v, i) => v && api.add(tokens[i], v)) - return sumUnknownTokens({ api, resolveLP: true, useDefaultCoreAssets: true, }) - } - } -}) diff --git a/projects/autopilot/index.js b/projects/autopilot/index.js deleted file mode 100644 index b7e5e5a3c1f..00000000000 --- a/projects/autopilot/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { unwrapSolidlyVeNft } = require('../helper/unwrapLPs'); - -const AERO = '0x940181a94A35A4569E4529A3CDfB74e38FD98631'; -const veAero = '0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4'; -const VAULT_ADDRESS = '0xA7c68a960bA0F6726C4b7446004FE64969E2b4d4'; - -async function tvl(api) { - await unwrapSolidlyVeNft({ - api, - baseToken: AERO, - veNft: veAero, - owner: VAULT_ADDRESS - }); - return -} - -module.exports = { - timetravel: true, - start: '2025-07-21', - methodology: `TVL is comprised of veAero NFTs locked in the autopilot vault`, - base: { tvl: tvl } -} \ No newline at end of file diff --git a/projects/autoshark/abi.json b/projects/autoshark/abi.json deleted file mode 100644 index 587a192770f..00000000000 --- a/projects/autoshark/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "allPairsLength": "uint256:allPairsLength", - "allPairs": "function allPairs(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/autoshark/index.js b/projects/autoshark/index.js deleted file mode 100644 index bb8d28604a2..00000000000 --- a/projects/autoshark/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -const finsFactory = "0xe759Dd4B9f99392Be64f1050a6A8018f73B53a13"; - -const jaws = "0xdd97ab35e3c0820215bc85a395e13671d84ccba2"; -const jawsPool = "0x5D2112Ba0969EC66012380C1fb88F2A3D182Eb90"; - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': finsFactory -}, {staking: { bsc: [jawsPool, jaws] }}) diff --git a/projects/autotronic/index.js b/projects/autotronic/index.js deleted file mode 100644 index 278eb384940..00000000000 --- a/projects/autotronic/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - start: '2023-08-24', - base: { - tvl: getUniTVL({ factory: '0x55b3409335B81E7A8B7C085Bbb4047DDc23f7257', useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/aux-exchange/index.js b/projects/aux-exchange/index.js deleted file mode 100644 index 721ab48bb2a..00000000000 --- a/projects/aux-exchange/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -module.exports = dexExport({ - account: '0xbd35135844473187163ca197ca93b2ab014370587bb0ed3befff9e902d6bb541', - poolStr: 'amm::Pool', - token0Reserve: i => i.data.x_reserve.value, - token1Reserve: i => i.data.y_reserve.value, -}) diff --git a/projects/avalance-btc/index.js b/projects/avalance-btc/index.js deleted file mode 100644 index ce1f9d49544..00000000000 --- a/projects/avalance-btc/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -//https://support.avax.network/en/articles/6349640-how-does-the-avalanche-bridge-work - -module.exports = { - methodology: 'BTC wallets on bc1q2f0tczgrukdxjrhhadpft2fehzpcrwrz549u90', - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.avalanche }), - }, -}; diff --git a/projects/avalaunch/index.js b/projects/avalaunch/index.js deleted file mode 100644 index e900bd8fbe2..00000000000 --- a/projects/avalaunch/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { pool2 } = require('../helper/pool2') -const { staking } = require('../helper/staking') - -const xavaAddress = "0xd1c3f94DE7e5B45fa4eDBBA472491a9f4B166FC4"; -const stakingContracts = [ - "0xE82AAE7fc62547BdFC36689D0A83dE36FF034A68", // single staking - "0xA6A01f4b494243d84cf8030d982D7EeB2AeCd329" // allocation proxy -]; -const lp = "0x42152bDD72dE8d6767FE3B4E17a221D6985E8B25"; -const farm = "0x6E125b68F0f1963b09add1b755049e66f53CC1EA"; - -async function tvl(){ - return {}; -} -module.exports={ - methodology: "Within pool2, it counts the XAVA-AVAX staked in the farm", - avax:{ - tvl, - pool2: pool2(farm, lp), - staking: staking(stakingContracts, xavaAddress) - }, -} diff --git a/projects/avalon-finance-cedefi/index.js b/projects/avalon-finance-cedefi/index.js deleted file mode 100644 index 2f7e5b71114..00000000000 --- a/projects/avalon-finance-cedefi/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const abi = { - "getPoolManagerReserveInformation": "function getPoolManagerReserveInformation() view returns (tuple(uint256 userAmount, uint256 collateral, uint256 debt, uint256 claimableUSDT, uint256 claimableBTC) poolManagerReserveInfor)" -} - -const config = { - ethereum: { poolAddress: "0x02feDCff97942fe28e8936Cdc3D7A480fdD248f0", lfbtcAddress: "0x3119a1AD5B63A000aB9CA3F2470611eB997B93B9", usdtAddress: ADDRESSES.ethereum.USDT, }, -} - -// @dev btcOwnersOfCedefi: Bitcoin owners of the Avalon CeDefi pool contract. -const btcOwnersOfCedefi = bitcoinAddressBook.avalonCedefi - -// @dev getMetrics: call to get the collateral and debt of the Avalon CeDefi pool contract. -const getMetrics = async (api, borrowed) => { - const { poolAddress, lfbtcAddress, usdtAddress } = config[api.chain] - const marketData = await api.call({ abi: abi.getPoolManagerReserveInformation, target: poolAddress, }); - // @note: no more count collateral on Ethereum, count collateral on Bitcoin instead - // const balanceOfCollateral = marketData.collateral; - const balanceOfDebt = marketData.debt; - if (!borrowed) { - // pool balance of lfbtc - const balance = await api.call({ abi: 'erc20:balanceOf', target: config[api.chain].lfbtcAddress, params: poolAddress}) - api.add(config[api.chain].lfbtcAddress, balance) - } - - if (borrowed) - api.add(usdtAddress, balanceOfDebt); - // else - // api.add(lfbtcAddress, balanceOfCollateral); -} - -module.exports = { - methodology: `lfbtc collateral, USDT debt of Avalon CeDefi pool contract and Bitcoin owners of the Avalon CeDefi pool contract`, - doublecounted: false, - ethereum: { - tvl: (api) => getMetrics(api, false), - borrowed: (api) => getMetrics(api, true), - }, - // bitcoin: { - // tvl: sdk.util.sumChainTvls([ - // sumTokensExport({ owners: btcOwnersOfCedefi }), - // ]), - // }, -} - -delete module.exports.bitcoin diff --git a/projects/avalon-finance-usda/index.js b/projects/avalon-finance-usda/index.js deleted file mode 100644 index 108413c1fe1..00000000000 --- a/projects/avalon-finance-usda/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { function_view } = require("../helper/chain/aptos") - -const v2Config = { - ethereum: { - poolAddress: '0x3f390dD6EF69f68f9877aACC086856a200808693', - fbtcAddress: ADDRESSES.bob.FBTC, - lfbtcAddress: '0x3119a1AD5B63A000aB9CA3F2470611eB997B93B9', - usdaAddress: '0x0b4D6DA52dF60D44Ce7140F1044F2aD5fabd6316', - owners: ['0x5A79311083dC82aBc2DE1E5639673C876cc6757e'], // Count USDT of USDaMinter Safe Multisig. USDa can be minted by USDT. - tokens: [ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDe, ADDRESSES.ethereum.sUSDe], - }, - bsc: { - poolAddress: '0xC757E47d6bC20FEab54e16F2939F51Aa4826deF7', - fbtcAddress: ADDRESSES.bob.FBTC, - lfbtcAddress: '0x3119a1AD5B63A000aB9CA3F2470611eB997B93B9', - usdaAddress: '0x8a4bA6C340894B7B1De0F6A03F25Aa6afb7f0224', - }, - mantle: { - poolAddress: '0x8f778806CBea29F0f64BA6A4B7724BCD5EEd543E', - fbtcAddress: ADDRESSES.bob.FBTC, - lfbtcAddress: '0x3119a1AD5B63A000aB9CA3F2470611eB997B93B9', - usdaAddress: '0x2BDC204b6d192921605c66B7260cFEF7bE34Eb2E', - }, - sonic: { - poolAddress: '0x74476697b5FFd19c8CD9603C01527Dcb987C7418', - fbtcAddress: ADDRESSES.mantle.FBTC, - lfbtcAddress: '0x040c10f8238e4689c5e549ef5e07478b738b2ba5', - usdaAddress: '0xff12470a969dd362eb6595ffb44c82c959fe9acc', - } -} - -const v3Config = { - berachain: { - poolAddress: '0x02feDCff97942fe28e8936Cdc3D7A480fdD248f0', - fbtcAddress: ADDRESSES.berachain.WFBTC, - usdaAddress: '0xff12470a969dd362eb6595ffb44c82c959fe9acc', - treasuryAddress: '0x0c3616027b7d7AC8BA6FA2a1540a5e6A728cebA5', - }, - klaytn: { - poolAddress: '0x45f842F1F7e576cB9BF7E1d50Ccc4D2ea378dbeF', - fbtcAddress: '0x4353b76E03AD5FF74d40Bf5bb2Ee4d0FC6fE6D3b', // ADDRESSES.kaia.WFBTC - usdaAddress: '0xdc3cf1961b08da169b078f7df6f26676bf6a4ff6', - treasuryAddress: '0xBa8870Bae2dd170053c0C4b799821edbB19A5e4A', - } -} - -const v3MoveConfig = { - move: { - treasuryAddress: '0xb79ef25caca96b35a45d58d771f162bd4c2e87984a2776a1cb029d7941cc9af8', - fbtcAddress: '0x16e733c5c943d78dbbaf1fc5beebbcc8db4ed647d2bdfcab74c2a527184a16aa' - }, -} - - -const getMovementTvl = async (api) => { - const primary_fungible_asset_balance = "0x1::primary_fungible_store::balance" - const tvl = await function_view({ - functionStr: primary_fungible_asset_balance, - type_arguments: ["0x1::fungible_asset::Metadata"], - args: [v3MoveConfig.move.treasuryAddress, v3MoveConfig.move.fbtcAddress], - chain: "move" - }) - return tvl -} - -module.exports = { - methodology: `FBTC, LFBTC as collateral`, -} - -// V2 -Object.keys(v2Config).forEach(chain => { - const { poolAddress, lfbtcAddress, fbtcAddress, owners = [], tokens = [] } = v2Config[chain] - owners.push(poolAddress) - tokens.push(lfbtcAddress, fbtcAddress) - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens, }), - } -}) - -// V3 -Object.keys(v3Config).forEach(chain => { - const { fbtcAddress, treasuryAddress } = v3Config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owners: [treasuryAddress], tokens: [ fbtcAddress] }), - } -}) - -// Movement -Object.keys(v3MoveConfig).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const tvl = await getMovementTvl(api) - api.add(v3MoveConfig.move.fbtcAddress, tvl) - }, - } -}) diff --git a/projects/avalon-finance-usdalend/index.js b/projects/avalon-finance-usdalend/index.js deleted file mode 100644 index d3222c7709e..00000000000 --- a/projects/avalon-finance-usdalend/index.js +++ /dev/null @@ -1,22 +0,0 @@ - -const { aaveExports } = require('../helper/aave') -const methodologies = require('../helper/methodologies') -const { mergeExports } = require('../helper/utils') - -//@note Main & Innovative Markets -const getExports = address => aaveExports(address, '', undefined, [address], { v3: true }) - -const mainMarket = { - iotex: getExports('0xDB52DD393e3a5e95d3B7C7e1C42cC06bb807A369'), - taiko: getExports('0x5EcDC2432ED77cD8E2cE6183712c5cc712c40ec0'), - zircuit: getExports('0x5EcDC2432ED77cD8E2cE6183712c5cc712c40ec0'), - corn: getExports('0xa15c0c3D6Ad3FeE623BEd68391923c9Ff79a50c3'), - sei: getExports('0x5EcDC2432ED77cD8E2cE6183712c5cc712c40ec0'), - sonic: getExports('0x1C6E9510055B71429022B997E6602FbaEEb0481F'), -} - -module.exports = mergeExports( - mainMarket, -) - -module.exports.methodology = methodologies.lendingMarket diff --git a/projects/avalon-finance/index.js b/projects/avalon-finance/index.js deleted file mode 100644 index e6798a9ac9e..00000000000 --- a/projects/avalon-finance/index.js +++ /dev/null @@ -1,113 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { aaveExports } = require('../helper/aave') -const methodologies = require('../helper/methodologies') -const { mergeExports } = require('../helper/utils') - - - -//@note Main & Innovative Markets -const mainMarket = { - merlin: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true, blacklistedTokens: [ADDRESSES.merlin.WBTC_1] }), - btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], {v3: true}), - scroll: aaveExports('', '0xFBb77A68ee35e7902F1ABE0Bd34B263023e90c70', undefined, ['0x18cbe70602Ee17f79D56971F685E9EaF49DA53F2'], { v3: true }), - iotex: aaveExports('', '', undefined, ['0xBa77520d38953BF6a8395D118CfF714Ed672533f'], { v3: true }), - bsquared: aaveExports('', '', undefined, ['0x4Ea93E846b8C6E7b3D5a5BEDF4fe6B8AED58FCEe'], { v3: true }), - mode: aaveExports('', '', undefined, ['0xC5b05b7092257Ee3eEAf013198d30F1E8179B6C9'], { v3: true }), - klaytn: aaveExports('', '', undefined, ['0xddD3D480521bc027596e078BCd1b838d50Daa076'], { v3: true, blacklistedTokens: ['0x585e26627c3b630b3c45b4f0e007db5d90fae9b2'] }), // Kaia V3 Main - zeta: aaveExports('', '', undefined, ['0xA34F1a928024E3609C8968fEA90C747e8D1fA20f'], { v3: true }), // Zetachain V3 Main - corn: aaveExports('', '', undefined, ['0x56552f4407113894Bfce34b5b88C57b941AFc519'], { v3: true }), // Corn V3 Main - duckchain: aaveExports('', '', undefined, ['0x100AC26ad2c253B18375f1dC4BC0EeeB66DEBc88'], { v3: true }), // Duckchain V3 Main - taiko: aaveExports('', '', undefined, ['0x43248dF19B9B55f7b488CF68A1224308Af2D81eC'], { v3: true }), // Taiko - Main - goat: aaveExports('', '', undefined, ['0x2c4aEB7C9f0D196a51136B3c7bec49cB2DBD1966'], { v3: true }), // Goat - Main - plume_mainnet: aaveExports('', '', undefined, ['0x522b3bc00f7DfC5657f8e195868FD062027859e8'], { v3: true }), // Plume - Main -} - -const innovativeMarket = { - merlin: aaveExports('', '0x91b212e9FaF20117Eae59d6289CB38749DDFc070', undefined, ['0x883cb2E2d9c5D4D9aF5b0d37fc39Fa2284405682'], { v3: true }), -} - -//@note Protocol based markets: Solv, pumpBTC, stbtc, unibtc, others -const solvMarkets = { - base: aaveExports('', '', undefined, ['0xA9D15C669940a757Ab76C6604f2f8f1e198f7D50'], { v3: true }), - bsc: aaveExports('', '0x5395201A4DD625a0d69b99D917282f75928416c1', undefined, ['0x672b19DdA450120C505214D149Ee7F7B6DEd8C39'], { v3: true }), - ethereum: aaveExports('', '0xff12470a969Dd362EB6595FFB44C82c959Fe9ACc', undefined, ['0xfabb0fDca4348d5A40EB1BB74AEa86A1C4eAd7E2'], { v3: true }), - core: aaveExports('', '0x410d2D3Dc79ec66A2Cfc3A4a0AD4af3a38D38bd0', undefined, ['0x802CB61844325dc9A161bC3A498E3BE1B7b6FE00'], { v3: true }), - arbitrum: aaveExports('', '0xa2ddc06baDc817C612111137c0cf6Bd43634EE1a', undefined, ['0xEc579d2cE07401258710199Ff12a5bb56e086a6F'], { v3: true }), - bob: aaveExports('', '', undefined, ['0xfabb0fDca4348d5A40EB1BB74AEa86A1C4eAd7E2'], { v3: true, blacklistedTokens: [ADDRESSES.bob.SolvBTC, ADDRESSES.bob.SolvBTC_BBN] }), - corn: aaveExports('', '', undefined, ['0xf0d077728D424Ee6C6Eba82d23ce56C2e91E57Ea'], { v3: true }), - sonic: aaveExports('', '', undefined, ['0x23f02C2eeFe2010298Ab74059393326d3df59a02'], { v3: true }), - taiko: aaveExports('', '', undefined, ['0xF6Aa54a5b60c324602C9359E8221423793e5205d'], { v3: true, blacklistedTokens: [ADDRESSES.bob.SolvBTC] }), // Taiko - Solv - sei: aaveExports('', '', undefined, ['0x16b9b88B773C1a1aBA6D305e0560171405d45121'], { v3: true }), -} - -const pumpBTCMarkets = { - ethereum: aaveExports('', '0xE00A3FE97714765A1a2054E850724Fd1320FaCc0', undefined, ['0x2eE0438BCC1876cEA2c6fc43dD21417cF3D1c2eF'], { v3: true }), - bsc: aaveExports('', '0xb1C93Ba1286b6CCA1496C266f0eBfCe94b0C0cc0', undefined, ['0x58c937fa2D147117dB43d187f9411151edfFf03c'], { v3: true }), - zeta: aaveExports('', '', undefined, ['0xC5b05b7092257Ee3eEAf013198d30F1E8179B6C9'], { v3: true }), - arbitrum: aaveExports('', '', undefined, ['0x2c4aEB7C9f0D196a51136B3c7bec49cB2DBD1966'], { v3: true }), - corn: aaveExports('', '', undefined, ['0x867885c1dB3020E25A86Db7e20E35dC7b81d76A2'], { v3: true }), -} -// -const unibtcMarkets = { - merlin: aaveExports('', '0x0024818043D04B1Cc9685233D47eF7eea6Df0A5E', undefined, ['0x623700Fee1dF64088f258e2c4DAB4D6aEac4dDA6'], { v3: true }), - btr: aaveExports('', '', undefined, ['0x898D0EF6E20B7597728AEB41169c22608Fe4b234'], { v3: true }), - bsc: aaveExports('', '', undefined, ['0xF828A73cB00072843241C6294ed778F26854fe5C'], { v3: true }), - mode: aaveExports('', '', undefined, ['0x8F016F5dac399F20B34E35CBaF1dFf12eeE2dE74'], { v3: true }), - iotex: aaveExports('', '', undefined, ['0x28292e1ca36e400FB7d0B66AaA99EB808E3Cb8cB'], { v3: true }), - bob: aaveExports('', '', undefined, ['0x100AC26ad2c253B18375f1dC4BC0EeeB66DEBc88'], { v3: true }), -} - -const stbtcMarkets = { - bsc: aaveExports('', '', undefined, ['0x56F817eF5D1945E0772496020ff0F72c3984B351'], { v3: true }), - btr: aaveExports('', '0x90EA8C92AddE4D3f323Dad9E36f0E0395dbc929d', undefined, ['0x4c25c261Fe47bC216113D140BaF72B05E151bcE4'], { v3: true }), -} - -const otherProtocolTokenMarkets = { - // ETH - Swell BTC - ethereum: aaveExports('', '0x3975BE5E668b189b8Ac9049B96A9D9561c4F5273', undefined, ['0x87Ed94868f6fbaA834Db81a1C5854c445caCaB67'], { v3: true }), - // BSC - WBTC - bsc: aaveExports('', '', undefined, ['0xA34F1a928024E3609C8968fEA90C747e8D1fA20f'], { v3: true }), - // Kaia - stKaia - klaytn: aaveExports('', '', undefined, ['0x276c5119f63119921667842dA3B71EE10Ac486eA'], { v3: true, blacklistedTokens: ['0x585e26627c3b630b3c45b4f0e007db5d90fae9b2'] }), - // Sonic - beetSonic - sonic: aaveExports('', '', undefined, ['0x28350E38f241d7F24106CE5eaB1684D6ebEB4700'], { v3: true }), - // Duckchain - MBTC - duckchain: aaveExports('', '', undefined, ['0x912b425D867a09608A884C83b3D5075E9037Aa6a'], { v3: true }), -} - -const obtcMarkets = { - core: aaveExports('', '', undefined, ['0x5c78EbB34cC5b52146D107365A66E37a677Fcf50'], { v3: true }), -} - -const ubtcMarkets = { - core: aaveExports('', '', undefined, ['0x2752237ccC6aB5e4B9e9BFca57D7a6956aF4FE3d'], { v3: true }), -} - -const xaumMarkets = { - bsc: aaveExports('', '', undefined, ['0x2c4aEB7C9f0D196a51136B3c7bec49cB2DBD1966'], { v3: true }), -} - -const lbtcMarkets = { - bsc: aaveExports('', '', undefined, ['0x5b9b3C211B81627Cc6b46824CB26829F31A587dc'], { v3: true }), - corn: aaveExports('', '', undefined, ['0x5EcDC2432ED77cD8E2cE6183712c5cc712c40ec0'], { v3: true }), - bob: aaveExports('', '', undefined, ['0x28292e1ca36e400FB7d0B66AaA99EB808E3Cb8cB'], { v3: true }), -} - -const listaMarkets = { - bsc: aaveExports('', '', undefined, ['0x5157f63bE7808DEB090Eee7762e917745896A09E'], { v3: true }), // BSC - ListaDAO -} - -const uniIotxMarkets = { - iotex: aaveExports('', '', undefined, ['0x2c4aEB7C9f0D196a51136B3c7bec49cB2DBD1966'], { v3: true }), -} - - // BSC - USDX -const usdxMarkets = { - bsc: aaveExports('', '', undefined, ['0x9515dC23bBE46f9C9885D24Fa276745A11b7f9D8'], { v3: true, blacklistedTokens: ['0x7788a3538c5fc7f9c7c8a74eac4c898fc8d87d92', '0xf3527ef8de265eaa3716fb312c12847bfba66cef'] }), -} - -module.exports = mergeExports( - mainMarket, innovativeMarket, solvMarkets, pumpBTCMarkets, unibtcMarkets, stbtcMarkets, otherProtocolTokenMarkets, obtcMarkets, ubtcMarkets, xaumMarkets, lbtcMarkets, listaMarkets, uniIotxMarkets, usdxMarkets -) -module.exports.methodology = methodologies.lendingMarket diff --git a/projects/avalps/index.js b/projects/avalps/index.js deleted file mode 100644 index cf900e4f2f6..00000000000 --- a/projects/avalps/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const {ohmTvl} = require("../helper/ohm"); - -const blanc = "0xf481Eec738C46F675e077ee966A680a19210Af11"; -const stakingContract = "0x1b6CD48f1148FF53e61809a68bca74b384B8C630"; -const treasuryContract = "0x76EcB72ffeEb0Bf57869758c9bf020F45d0a04d0"; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasuryContract, [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0x9B4E1cFD1417cBa22a2fb2B7cbdd8dcC1dc1e7C7", true], // BLANC-MIM - ["0x0FB87c2dA68CC565f380DDE4A5cdafd6F5A315b0", true], // BLANC-WAVAX - ], "avax", stakingContract, blanc, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/avant-avbtc/index.js b/projects/avant-avbtc/index.js deleted file mode 100644 index 589f438cb25..00000000000 --- a/projects/avant-avbtc/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const AVBTC_ADDRESS = "0xfd2c2A98009d0cBed715882036e43d26C4289053"; - -async function tvl(api) { - const totalSupply = await api.call({ abi: 'erc20:totalSupply', target: AVBTC_ADDRESS }) - api.add(AVBTC_ADDRESS, totalSupply); -} - -// Export the adapter -module.exports = { - methodology: "Calculates TVL by querying the avBTC contract's totalSupply function", - timetravel: true, - doublecounted: true, - avax: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/avant/index.js b/projects/avant/index.js deleted file mode 100644 index 709c94e41f4..00000000000 --- a/projects/avant/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const avUSD = "0x24dE8771bC5DdB3362Db529Fc3358F2df3A0E346" - -module.exports = { - avax: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: avUSD }) - api.add(avUSD, supply) - }, - } -} \ No newline at end of file diff --git a/projects/avantgarde/index.js b/projects/avantgarde/index.js deleted file mode 100644 index c5a6479b264..00000000000 --- a/projects/avantgarde/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Avantgarde.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0xb263237E30fe9be53d6F401FCC50dF125D60F01a', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/avantisfi/index.js b/projects/avantisfi/index.js deleted file mode 100644 index 6dac805bfc3..00000000000 --- a/projects/avantisfi/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') -const owners = [ - "0xe9fB8C70aF1b99F2Baaa07Aa926FCf3d237348DD", // vault manager - "0x83084cb182162473d6feffcd3aa48ba55a7b66f7", // senior tranche - "0x944766f715b51967e56afde5f0aa76ceacc9e7f9", // junior tranche -] - -module.exports = { - methodology: 'counts the number of USDC tokens in the Avantis contract.', - base: { - tvl: sumTokensExport({ owners, tokens: [ADDRESSES.base.USDC] }) - } -}; \ No newline at end of file diff --git a/projects/avatr/index.js b/projects/avatr/index.js deleted file mode 100644 index 23f07d4da8a..00000000000 --- a/projects/avatr/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); -const { staking } = require("../helper/staking"); - -const FACTORY_CONTRACT = "0x498B8f1E767E2A32ab68C1301F1e98b59a34dA94"; -const WETH_ADDRESS = ADDRESSES.ethereum.WETH; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: FACTORY_CONTRACT, - topics: ["0x489ab9065c597368f4a678fadcb323bf4c848713ea7d5a296d16ec97203eae83",], - eventAbi: "event StakingPoolDeployed(address indexed poolAddress,address indexed stakingToken,uint256 startTime,uint256 roundDurationInDays)", - onlyArgs: true, - fromBlock: 17102070, - }); - - const lsdAddresses = logs.map((i) => i.stakingToken === nullAddress ? WETH_ADDRESS : i.stakingToken); - const poolAddresses = logs.map((i) => i.poolAddress); - - return sumTokens2({ api, tokensAndOwners2: [lsdAddresses, poolAddresses] }); -} - -module.exports = { - hallmarks: [ - [1682726400, "Rug Pull"] - ], - deadFrom: '2023-04-29', - ethereum: { - tvl, - }, -}; diff --git a/projects/avault/index.js b/projects/avault/index.js deleted file mode 100644 index eec0c4e61fb..00000000000 --- a/projects/avault/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { sumUnknownTokens } = require('../helper/unknownTokens'); - -const url = "https://www.avault.network/media/get-vaults.json"; -async function tvl(api) { - const vaultsInfo = (await getConfig('avault', url)) - const vaults = Object.values(vaultsInfo.astar) - const bals = await api.multiCall({ abi: 'uint256:wantLockedTotal', calls: vaults}) - const tokens = await api.multiCall({ abi: 'address:wantAddress', calls: vaults}) - api.add(tokens, bals) - return sumUnknownTokens({ api, resolveLP: true, useDefaultCoreAssets: true, }) -} - -module.exports = { - misrepresentedTokens: true, - methodology: "Avault - The Best Yield Aggregator on ASTR Network", - astar: { - tvl, - }, -}; diff --git a/projects/avaviking/index.js b/projects/avaviking/index.js deleted file mode 100644 index b541da5ffc3..00000000000 --- a/projects/avaviking/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const token = "0xF1b0F6DF4fc3710b3497c34B0Ee366099054add8"; -const masterchef = "0xEF8285A4B4F21D3F9dC9E5cEf7E39977E2Ef8B3d"; - -module.exports = { - ...masterChefExports(masterchef, "avax", token, false) -} \ No newline at end of file diff --git a/projects/avaware/abi.json b/projects/avaware/abi.json deleted file mode 100644 index 726842c352b..00000000000 --- a/projects/avaware/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolCount": "uint256:poolCount", - "getPool": "function getPool(uint256 id) view returns (tuple(address pool, string name, uint256 rewardAmount, bool legacy, bool active))", - "stakingToken": "address:stakingToken" -} \ No newline at end of file diff --git a/projects/avaware/index.js b/projects/avaware/index.js deleted file mode 100644 index ffc0651d383..00000000000 --- a/projects/avaware/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const abi = require("./abi.json"); - -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require('../helper/staking'); - -const FarmPoolManager = "0x7ec4AeaeB57EcD237F35088D11C59525f7D631FE"; -const treasuryAddress = "0x9300736E333233F515E585c26A5b868772392709"; -const AVE = "0x78ea17559B3D2CF85a7F9C2C704eda119Db5E6dE"; - -/*** farms TVL portion ***/ -const avaxTvl = async (api) => { - const chain = 'avax' - - const CountOfPools = await api.call({ abi: abi.poolCount, target: FarmPoolManager, }) - - const indices = [] - - for (let index = 0; index < CountOfPools; index++) { - if (index == 14) { - continue // 14 isn't a normal pool, it's NFT staking rewards - } - indices.push(index) - } - - const pools = (await api.multiCall({ target: FarmPoolManager, abi: abi.getPool, calls: indices, })).map(i => i.pool) - const tokens = await api.multiCall({ abi: abi.stakingToken, calls: pools, }) - return sumTokens2({ api, tokensAndOwners2: [tokens, pools], resolveLP: true, }) -}; - -module.exports = { - avax: { - staking: staking(treasuryAddress, AVE), - tvl: avaxTvl, - }, - methodology: `We count TVL that is on the Farms threw FarmPoolManager contract - and the portion of staking the native token (AVE) by treasury contract`, -}; diff --git a/projects/avax/index.js b/projects/avax/index.js deleted file mode 100644 index 44308099934..00000000000 --- a/projects/avax/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { bitcoin } = require("../avalance-btc"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: "0x8EB8a3b98659Cce290402893d0123abb75E3ab28", - fetchCoValentTokens: true, - }), - }, - bitcoin, -}; diff --git a/projects/avely-finance-staking/index.js b/projects/avely-finance-staking/index.js deleted file mode 100644 index 611306f6b79..00000000000 --- a/projects/avely-finance-staking/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { - formQuery, - call -} = require('../helper/chain/zilliqa') - -const STZIL_CONTRACT_ADDRESS = 'zil1umc54ly88xjw4599gtq860le0qvsuwuj72s246' -const DECIMALS = 12 - -const tvlFields = { - - //'total_supply' contract field: it's total amount of minted stzil - //https://github.com/avely-finance/avely-contracts/blob/main/contracts/source/stzil.scilla#L355 - // [STZIL_CONTRACT_ADDRESS]: 'total_supply', - - //get 'totalstakeamount' contract field: it's total amount of zil, staked in Zilliqa native staking contract through StZIL contract - //https://github.com/avely-finance/avely-contracts/blob/main/contracts/source/stzil.scilla#L353 - 'zilliqa': 'totalstakeamount', -} - -async function tvl(api) { - const query = prepareQuery(tvlFields) - - const data = await call(query) - - data.forEach((response) => { - const { id, result } = response - if (!id || !result || !tvlFields[id] || !result[tvlFields[id]]) return - api.add(id, result[tvlFields[id]] / (10 ** DECIMALS), { skipChain: true}) - }) -} - -//prepare batch GetSmartContractSubState query -//https://dev.zilliqa.com/api/contract-related-methods/api-contract-get-smartcontract-substate/ -function prepareQuery(fields) { - const query = Object.entries(fields).map(([id, field]) => { - return formQuery({ - id: id, - params: [ - STZIL_CONTRACT_ADDRESS, - field, - [] - ] - }); - }); - - return query; -} - - -module.exports = { - zilliqa: { - tvl - }, - methodology: 'TVL represents the sum of stakes denominated in ZIL and staked in the native Zilliqa staking contract via the STZIL contract', - timetravel: false, -} - diff --git a/projects/avely-finance-swap/index.js b/projects/avely-finance-swap/index.js deleted file mode 100644 index d00365cfa19..00000000000 --- a/projects/avely-finance-swap/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const BigNumber = require('bignumber.js') -const { - formQuery, - call -} = require('../helper/chain/zilliqa') - - -const ASWAP_CONTRACT_ADDRESS = 'zil1uxfzk4n9ef2t3f4c4939ludlvp349uwqdx32xt' -const STZIL_CONTRACT_ADDRESS = 'zil1umc54ly88xjw4599gtq860le0qvsuwuj72s246' -//seems Zilliqa API take address in legacy format as map key -const STZIL_CONTRACT_ADDRESS_LEGACY = '0xe6f14afc8739a4ead0a542c07d3ff978190e3b92' -const DECIMALS = 12 - -async function tvl() { - - //https://dev.zilliqa.com/api/contract-related-methods/api-contract-get-smartcontract-substate/ - const query = formQuery({ - id: "1", - params: [ - ASWAP_CONTRACT_ADDRESS, - 'pools', - [STZIL_CONTRACT_ADDRESS_LEGACY] - ] - }); - - const data = await call(query) - - //(* POOL token -> Pair{zil_reserve, token_reserve} *) - //https://github.com/avely-finance/avely-contracts/blob/main/contracts/source/aswap.scilla#L301 - const zil_reserve = data?.result?.pools[STZIL_CONTRACT_ADDRESS_LEGACY]?.arguments[0] - const token_reserve = data?.result?.pools[STZIL_CONTRACT_ADDRESS_LEGACY]?.arguments[1] - if (zil_reserve == undefined || token_reserve == undefined) { - return - } - - const balances = { - // [STZIL_CONTRACT_ADDRESS]: BigNumber(token_reserve).shiftedBy(DECIMALS * -1), - 'zilliqa': zil_reserve / 1e12, - } - - return balances -} - -module.exports = { - zilliqa: { - tvl, - }, - methodology: 'TVL represents the state of the Aswap pool, which consists of a single liquidity pair: Zilliqa native token vs StZIL token.', - timetravel: false, - misrepresentedTokens: true, -} diff --git a/projects/awaken/index.js b/projects/awaken/index.js deleted file mode 100644 index 1b4b29c8eaa..00000000000 --- a/projects/awaken/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { request, gql } = require("graphql-request"); -const { toUSDTBalances } = require("../helper/balances"); - -const GRAPH_QUERY = gql` - query get_tvl($dto: GetTotalValueLockedDto!) { - totalValueLocked(dto: $dto) { - value - } - } -`; - -function getChainTvl(graphUrls) { - return (chain) => { - return async (api) => { - const result = await request( - graphUrls[chain], - GRAPH_QUERY, - { - dto: { - chainId: "tDVV", - timestamp: api.timestamp * 1000, - }, - }, - { - Accept: "*/*, application/json", - } - ); - - return toUSDTBalances(result.totalValueLocked.value); - }; - }; -} - -const v2graph = getChainTvl({ - aelf: "https://app.aefinder.io/awaken/995f8e7e957d43d6b1706a4e351e2e47/graphql", -}); - -module.exports = { - misrepresentedTokens: true, - methodology: `Counts the tokens locked on AMM pools, pulling the data from the 'AElfIndexer_Swap' subgraph`, - start: '2024-02-01', - aelf: { - tvl: v2graph("aelf"), - }, -}; diff --git a/projects/axe/index.js b/projects/axe/index.js deleted file mode 100644 index 603a2df4f07..00000000000 --- a/projects/axe/index.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - hallmarks: [ - [1648765747, "Rug Pull"] - ], - deadFrom: 1648765747, - start: '2021-11-16', // 16 Nov 2021 - ethereum: { - tvl: () => ({}), - staking: () => ({}), - }, - methodology: - "Counts DAI, USDC and DAI SLP (AXE-DAI) on the treasury", -}; diff --git a/projects/axelar-its/index.js b/projects/axelar-its/index.js deleted file mode 100644 index c346cfb4f7c..00000000000 --- a/projects/axelar-its/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const usdxAddress = "0xf3527ef8dE265eAa3716FB312c12847bFBA66Cef"; -const chains = ["ethereum", "bsc", "arbitrum"]; - -chains.forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: usdxAddress}) - api.addCGToken('usdx-money-usdx', supply/1e18) - }, - } -}) \ No newline at end of file diff --git a/projects/axelar/index.js b/projects/axelar/index.js deleted file mode 100644 index a963affdad2..00000000000 --- a/projects/axelar/index.js +++ /dev/null @@ -1,104 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens, sumTokensExport } = require('../helper/sumTokens'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const chainMapping = { - avax: 'avalanche', - cosmos: 'cosmoshub', - xrplevm: 'xrpl-evm', - terra2: 'terra-2', - bsc: 'binance' -}; - -const blackListChains = ['comdex', 'crescent']; -const chainListSupply = [ - 'agoric', - 'archway', - 'carbon', - 'celestia', - 'chihuahua', - 'cosmos', - 'dymension', - 'evmos', - 'fraxtal', - 'injective', - 'kujira', - 'juno', - 'migaloo', - 'neutron', - 'osmosis', - 'persistence', - 'regen', - 'secret', - 'sei', - // 'sommelier', - 'stargaze', - 'stride', - 'terra2', - 'umee', - 'xpla' -]; -const chainListTotal = [ - 'arbitrum', - 'aurora', - 'avax', - 'base', - 'blast', - 'bsc', - 'celo', - 'ethereum', - 'xrplevm', - 'fantom', - 'filecoin', - 'imx', - 'kava', - 'linea', - 'mantle', - 'moonbeam', - 'optimism', - 'polygon', - 'scroll', -]; - -const blacklistedTokensChain = { - ethereum: ['0x946fb08103b400d1c79e07acCCDEf5cfd26cd374'], // KIP tvl is higher than the circulating supply -} - -chainListSupply.concat(chainListTotal).forEach(chain => { - if (blackListChains.includes(chain)) { - module.exports[chain] = { tvl: () => ({}) }; - } else { - module.exports[chain] = { tvl }; - } - async function tvl(api) { - const config = await getConfig('axelar', 'https://api.axelarscan.io/api/getTVL') - const tokensAndOwners = [] - const owners = [] - const blacklistedTokens = blacklistedTokensChain[chain] || [] - const mappedChain = chainMapping[chain] || chain; - config.data.forEach(({ tvl: { [mappedChain]: assetTvl } = {} }) => { - if (!assetTvl) return; - - const isEVM = assetTvl.gateway_address?.startsWith('0x') - const data = assetTvl.contract_data - if (isEVM) { - if (data.symbol.startsWith('axl')) return; - tokensAndOwners.push([data.address, assetTvl.gateway_address]) - if (data.token_manager_address) - tokensAndOwners.push([data.address, data.token_manager_address]) - } else { - if (assetTvl.denom_data.symbol.startsWith('axl')) return; - owners.push(...(assetTvl?.source_escrow_addresses ?? [])) - } - }) - if (tokensAndOwners.length > 0) - return sumTokens2({ api, tokensAndOwners, blacklistedTokens, permitFailure: true, }) - return sumTokens({ chain, owners, blacklistedTokens, }) - } -}); - -module.exports.timetravel = false; - -module.exports.ripple = { - tvl: sumTokensExport({ owner: 'rfmS3zqrQrka8wVyhXifEeyTwe8AMz2Yhw'}) -} diff --git a/projects/axial/abi.json b/projects/axial/abi.json deleted file mode 100644 index 2cddbfdb113..00000000000 --- a/projects/axial/abi.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "getToken": "function getToken(uint8 index) view returns (address)", - "want": "address:want", - "balanceOf": "uint256:balanceOf", - "token": "address:token", - "balance": "uint256:balance", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 accAxialPerShare, uint256 lastRewardTimestamp, uint256 allocPoint, address rewarder)", - "owner": "address:owner" -} \ No newline at end of file diff --git a/projects/axial/index.js b/projects/axial/index.js deleted file mode 100644 index b80afaa166f..00000000000 --- a/projects/axial/index.js +++ /dev/null @@ -1,24 +0,0 @@ - -const abi = require('./abi.json'); -const { sumTokensExport, sumTokens2 } = require("../helper/unwrapLPs"); -const AXIAL_JLP_TOKEN = "0x5305A6c4DA88391F4A9045bF2ED57F4BF0cF4f62"; -const AXIAL_MASTERCHEF_V3 = "0x958C0d0baA8F220846d3966742D4Fb5edc5493D3"; - -async function tvl(api) { - const pools = (await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: AXIAL_MASTERCHEF_V3})).map(i => i.lpToken) - const vaults = (await api.multiCall({ abi: abi.owner, calls: pools, permitFailure: true,})).filter(i => i) - const params = [0, 1, 2, 3,] - const calls = vaults.map(v => params.map(i => ({ target: v, params:[i]}))).flat() - const owners = calls.map(i => i.target) - const tokens = await api.multiCall({ abi: abi.getToken, calls, permitFailure: true, }) - const tokensAndOwners = tokens.map((t, i) => [t, owners[i]]).filter(i => i[0]) - return sumTokens2({ api, tokensAndOwners,}) -} - -module.exports = { - methodology: "Our TVL is the value of the tokens within the Axial pools, and the Axial LP tokens within our rewards pools MasterChef", - avax:{ - tvl, - pool2: sumTokensExport({ owner: AXIAL_MASTERCHEF_V3, tokens: [AXIAL_JLP_TOKEN]}) - } -} diff --git a/projects/axion-finance-v2/index.js b/projects/axion-finance-v2/index.js deleted file mode 100644 index d3610fd18c1..00000000000 --- a/projects/axion-finance-v2/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens") -const { mergeExports } = require("../helper/utils") - -const uniV2Tvl = uniTvlExport('taiko', '0x8a8865fa5fB7C8360E5a6d8Aa27F7Ca1b9E55443') - -module.exports = mergeExports([uniV2Tvl]) \ No newline at end of file diff --git a/projects/axion-finance-v3/index.js b/projects/axion-finance-v3/index.js deleted file mode 100644 index c467a32deca..00000000000 --- a/projects/axion-finance-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3") - -module.exports = uniV3Export({ - taiko: { factory: '0x0526521166748a61A6fd24effa48FEF98F34b9e4', fromBlock: 868506 } -}) diff --git a/projects/axion/abi.json b/projects/axion/abi.json deleted file mode 100644 index db495742f08..00000000000 --- a/projects/axion/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getStatFields": "function getStatFields() view returns (tuple(uint72 totalStakedAmount, uint72 sharesTotalSupply, uint72 _gap, uint40 lastStakeId))", - "balanceOf": "function balanceOf(address account) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/axion/index.js b/projects/axion/index.js deleted file mode 100644 index 80c6b1c96b9..00000000000 --- a/projects/axion/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const AXION = "0x839F1a22A59eAAf26c85958712aB32F80FEA23d9"; -const MANAGER = "0x5F95DB799CecD1E9d95f66bA36a88A9a571Db9cD"; -async function staking(api) { - const { totalStakedAmount} = await api.call({ target: MANAGER, abi: abi.getStatFields, }); - // Add 12 0's since total staked amount is 6 decimals, but token amount is 18 decimals - api.add(AXION, totalStakedAmount * 1e12); -} - -const VC = "0x660B71C03C15B24EFa800F2454540CD9011E40cB" - -module.exports = { - polygon: { - staking, - tvl: sumTokensExport({ owner: VC, tokens: [ADDRESSES.polygon.WBTC], }) - }, -}; diff --git a/projects/axl-inu/index.js b/projects/axl-inu/index.js deleted file mode 100644 index 86528e7641f..00000000000 --- a/projects/axl-inu/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const stakingContractsBSC = ["0xd500a6652365E819888Aa4df72d79eE970dB9B42"] -const stakingContractsETH = ["0x440D1c47379CF17CCB7Eb334Ae80DC8291FB14Ad"] - -const AXL = "0x25b24B3c47918b7962B3e49C4F468367F73CC0E0"; - -module.exports = { - methodology: 'TVL only counts liquidity in the staking pools.', - bsc: { - staking: stakings(stakingContractsBSC, AXL), - tvl: (async) => ({}), - }, - ethereum: { - staking: stakings(stakingContractsETH, AXL), - tvl: (async) => ({}), - }, -}; diff --git a/projects/ayin/index.js b/projects/ayin/index.js deleted file mode 100644 index 736f4d0df3c..00000000000 --- a/projects/ayin/index.js +++ /dev/null @@ -1,216 +0,0 @@ -const alephium = require('../helper/chain/alephium') -const axios = require('axios') -const { alephium: coreAssets } = require('../helper/coreAssets.json') - -const CL_FACTORY_ADDRESS = 'z73CeQLRpbaQ5gF7bJ1yoYqmmonwC9h9wEwLxGF9EjVy' - -const EXPLORER_API_HOST = "https://backend.mainnet.alephium.org" -const NODE_API_HOST = "https://node.mainnet.alephium.org" - -// AMM pool addresses -const poolAddresses = [ - '25ywM8iGxKpZWuGA5z6DXKGcZCXtPBmnbQyJEsjvjjWTy', // alphAyinPool - '2A5R8KZQ3rhKYrW7bAS4JTjY9FCFLJg6HjQpqSFZBqACX', // alphUsdtPool - '283R192Z8n6PhXSpSciyvCsLEiiEVFkSE6MbRBA4KSaAj', // alphUsdcPool - 'yXMFxdoKcE86W9NAyajc8Z3T3k2f5FGiHqHtuA69DYT1', // alphWethPool - '28XY326TxvSekaAwiWDLFg2QBRfacSga8dyNJCYGUYNbq', // alphWbtcPool - 'vFpZ1DF93x1xGHoXM8rsDBFjpcoSsCi5ZEuA5NG5UJGX', // alphApadPool - '25b5aNfdrNRjJ7ugPTkxThT51L1NSvf8igQyDHKZhweiK', // alphChengPool - 'uM4QJwHqFoTF2Pou8TqwhaDiHYLk4SHG65uaQG8r7KkT', // alphAnsdPool - '23cXw23ZjRqKc7i185ZoH8vh9KT4XTumVRWpVLUecgLMd', // alphAlphagaPool - '21NEBCk8nj5JBKpS7eN8kX6xGJoLHNqTS3WBFnZ7q8L9m', // ayinUsdtPool - '2961aauvprhETv6TXGQRc3zZY4FbLnqKon2a4wK6ABH9q', // ayinUsdcPool - '247rZysrruj8pj2GnFyK2bqB2nU4JsUj7k2idksAp4XMy', // ayinApadPool - '27C75V9K5o9CkkGTMDQZ3x2eP82xnacraEqTYXA35Xuw5', // usdtUsdcPool -] - -// Known tokens with market prices -const knownTokens = new Set([ - coreAssets.USDT, // USDTeth - coreAssets.USDC, // USDCeth - coreAssets.WETH, // WETH - coreAssets.WBTC, // WBTC -]) - -const alephId = '0000000000000000000000000000000000000000000000000000000000000000' -const xAyinAddress = 'zst5zMzizEeFYFis6DNSknY5GCYTpM85D3yXeRLe2ug3' - -const isValidToken = (balance) => balance < 1e70 && balance > 1e6 - -async function fetchSubContracts(address, start = 0, limit = 100) { - const response = await axios.get(`${NODE_API_HOST}/contracts/${address}/sub-contracts`, { - params: { start: start.toString(), limit: limit.toString() } - }) - return response.data -} - -async function fetchAllCLPools() { - const allPools = [] - const limit = 100 - const maxPools = 1000 - let start = 0 - - while (allPools.length < maxPools) { - const result = await fetchSubContracts(CL_FACTORY_ADDRESS, start, limit).then( - response => ({ success: true, response }), - error => ({ success: false, error }) - ) - - if (!result.success) { - // if 404 then Reached the end of available sub-contracts - if (result.error?.response?.status === 404) { - break - } - // Break to avoid infinite loops - break - } - - const response = result.response - if (!response?.subContracts?.length) break - - allPools.push(...response.subContracts) - if (response.subContracts.length < limit) break - - start += limit - await new Promise(resolve => setTimeout(resolve, 100)) - } - - return allPools.slice(0, maxPools) -} - -async function calculateCLPoolTVL(poolAddress, api, tokenPrices = new Map()) { - const [alphBalance, tokenBalances] = await Promise.allSettled([ - alephium.getAlphBalance(poolAddress), - alephium.getTokensBalance(poolAddress) - ]) - - let hasValidBalance = false - const alphAmount = alphBalance.status === 'fulfilled' ? Number(alphBalance.value.balance) : 0 - - // Add ALPH balance - if (alphAmount > 1e15) { - api.add(alephId, alphAmount) - hasValidBalance = true - } - - // Process tokens - const tokens = tokenBalances.status === 'fulfilled' ? tokenBalances.value : [] - tokens.forEach(({ tokenId, balance }) => { - const tokenAmount = Number(balance) - if (isValidToken(tokenAmount)) { - if (knownTokens.has(tokenId)) { - api.add(tokenId, tokenAmount) - hasValidBalance = true - } else if (tokenPrices.has(tokenId)) { - const { alphPerToken } = tokenPrices.get(tokenId) - api.add(alephId, tokenAmount * alphPerToken) - hasValidBalance = true - } - } - }) - - return hasValidBalance ? 1 : 0 -} - -async function addCLPoolsTVL(api, tokenPrices = new Map()) { - const clPools = await fetchAllCLPools() - if (!clPools?.length) return 0 - - let successCount = 0 - const batchSize = 5 - const maxTime = 30000 - const startTime = Date.now() - - for (let i = 0; i < clPools.length; i += batchSize) { - if (Date.now() - startTime > maxTime) break - - const batch = clPools.slice(i, i + batchSize) - const results = await Promise.allSettled( - batch.map(addr => calculateCLPoolTVL(addr, api, tokenPrices)) - ) - - results.forEach((result, index) => { - if (result.status === 'fulfilled') { - successCount += result.value - } else { - // Log individual pool failures but don't fail the entire process - console.warn(`CL Pool ${batch[index]} failed:`, result.reason?.message) - } - }) - - if (i + batchSize < clPools.length) { - await new Promise(resolve => setTimeout(resolve, 300)) - } - } - - return successCount -} - -async function processAMMPools(api) { - const [alphBalances, tokenBalances] = await Promise.all([ - Promise.all(poolAddresses.map(addr => alephium.getAlphBalance(addr))), - Promise.all(poolAddresses.map(addr => alephium.getTokensBalance(addr))) - ]) - - const totalAlph = alphBalances.reduce((sum, { balance }) => sum + Number(balance), 0) - api.add(alephId, totalAlph) - - const tokenPrices = new Map() - poolAddresses.forEach((_, i) => { - const alphBalance = Number(alphBalances[i].balance) - const tokens = tokenBalances[i] - - if (alphBalance > 1e18) { - tokens.forEach(({ tokenId, balance }) => { - const tokenBalance = Number(balance) - if (isValidToken(tokenBalance) && !knownTokens.has(tokenId) && !tokenPrices.has(tokenId)) { - tokenPrices.set(tokenId, { alphPerToken: alphBalance / tokenBalance }) - } - }) - } - }) - - tokenBalances.flat().forEach(({ tokenId, balance }) => { - const tokenBalance = Number(balance) - if (isValidToken(tokenBalance)) { - if (knownTokens.has(tokenId)) { - api.add(tokenId, tokenBalance) - } else if (tokenPrices.has(tokenId)) { - const { alphPerToken } = tokenPrices.get(tokenId) - api.add(alephId, tokenBalance * alphPerToken) - } - } - }) - - return tokenPrices -} - -async function getStakingValue() { - const results = await alephium.contractMultiCall([ - { group: 0, address: xAyinAddress, methodIndex: 3 }, - { group: 0, address: xAyinAddress, methodIndex: 11 } - ]) - - const totalSupply = Number(results[0].returns[0].value) / 1e18 - const currentPrice = Number(results[1].returns[0].value) / 1e18 - return totalSupply * currentPrice -} - -async function tvl(api) { - const tokenPrices = await processAMMPools(api) - await addCLPoolsTVL(api, tokenPrices) -} - -async function staking() { - return { ayin: await getStakingValue() } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: 'TVL locked in AYIN AMM pools (V2) and CL (Concentrated Liquidity) pools on Alephium. Unknown tokens are valued using ALPH pair reserves.', - alephium: { - tvl, - staking - } -} diff --git a/projects/azex/index.js b/projects/azex/index.js deleted file mode 100644 index 8d0cfe18785..00000000000 --- a/projects/azex/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping") - -const config = { - berachain: { - OrderBook: "0x98a5Ca11A60E5ce035f4e5C63137065c4047599a", - AssetManager: "0xaFE5B556743e33FE2A7F56054FecDa170602bEEA", - Reader: "0x90461F7C369Ec87db724d3f1B090170a7bE0D61a", - Staker: "0xCB03cbb019Df0bf0604b4D55682A22de27a15FaD", - StakingToken: "0x9B3B073E41f460c37641712D2aEEA656ea71865D", - }, - - unichain: { - OrderBook: "0xF20fe1bd8B626A9B42478f25F93640438Bc14602", - AssetManager: "0xD85f4D18FCaFc86Bca4f98F3287930CA5a513ba9", - Reader: "0xaCEf1CEF3E4Af80Ddc5273723777A5c50B1306E1", - Staker: "0x56F8619AD96DE71D668391865Fb3bF74e1670DFb", - StakingToken: "0x5ba5Ba5327D148e2b4F398276224afc9235F3102", - }, -} - -const abi = { - "getAssets": "function getAssets() view returns ((address asset, string name, string symbol, uint8 decimals, uint256 balance, uint256 alpId, (bool asStableCoin, uint256 borrowingInterval, uint256 borrowingRateFactor, uint256 minBorrowingUsdPool, uint256 minOrderAmount, uint256 minPositionAmount, bool onlyFastPriceFeed, bytes32 pythPriceId, uint256 spreadBps, uint256 tradeMiningRate) config)[])", -} - -Object.keys(config).forEach(chain => { - const { AssetManager, Reader, OrderBook } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const assets = await api.call({ abi: abi.getAssets, target: Reader }) - const tokens = assets.map(asset => asset.asset === '0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF' ? nullAddress : asset.asset) - return api.sumTokens({ owners: [AssetManager, OrderBook,], tokens }) - } - } -}) diff --git a/projects/aztec/abi.json b/projects/aztec/abi.json deleted file mode 100644 index f8910c07375..00000000000 --- a/projects/aztec/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "getSupportedAsset": "function getSupportedAsset(uint256 assetId) view returns (address)", - "getSupportedAssets": "address[]:getSupportedAssets", - "getSupportedAssetsLength": "uint256:getSupportedAssetsLength", - "getTotalDeposited": "uint256[]:getTotalDeposited", - "getTotalFees": "uint256[]:getTotalFees", - "getTotalPendingDeposit": "uint256[]:getTotalPendingDeposit", - "getTotalWithdrawn": "uint256[]:getTotalWithdrawn" -} \ No newline at end of file diff --git a/projects/aztec/index.js b/projects/aztec/index.js deleted file mode 100644 index 5f2278a9db7..00000000000 --- a/projects/aztec/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const abi = require('./abi.json'); -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { eulerTokens } = require('../helper/tokenMapping') - -const aztecRollupProcessor = '0x737901bea3eeb88459df9ef1BE8fF3Ae1B42A2ba' -const aztecConnect = '0xFF1F2B4ADb9dF6FC8eAFecDcbF96A2B351680455' - -async function tvl(api) { - // Get aztec supported assets - const supportedAssets = await api.call({ target: aztecRollupProcessor, abi: abi['getSupportedAssets'], }) - const tokensAndOwners = ([nullAddress, ...supportedAssets]).map(i => ([i, aztecRollupProcessor])) - const supportedAssetsConnect = await api.fetchList({ target: aztecConnect, lengthAbi: abi.getSupportedAssetsLength, itemAbi: abi.getSupportedAsset, }) - tokensAndOwners.push([nullAddress, aztecConnect]) - supportedAssetsConnect.map(i => tokensAndOwners.push([i, aztecConnect])) - return sumTokens2({ tokensAndOwners, api, blacklistedTokens: eulerTokens, }) -} - -module.exports = { - hallmarks: [ - ['2023-03-13', 'Euler was hacked'], - ['2023-03-13', 'AztecConnect sunset announced'], - ], - methodology: "TVL of Aztec consists of ethereum and supported assets locked into the rollup processor", - ethereum: { - tvl, - } -} diff --git a/projects/azuro/index.js b/projects/azuro/index.js deleted file mode 100644 index 7afd13b26ef..00000000000 --- a/projects/azuro/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const tokensAndOwners = { - xdai: [[ADDRESSES.xdai.WXDAI, '0x14564e6BbbB8DE2f959af8c0e158D334F05393Bb']], - polygon: [[ADDRESSES.polygon.USDT, '0x1a0612FE7D0Def35559a1f71Ff155e344Ae69d2C']], - chz: [[ADDRESSES.chz.WCHZ_1, '0x32696E01c979E3F542EC49D95729f011eF8F3c28']], - base: [[ADDRESSES.base.WETH, '0xbA390F464395fC0940c0B9591847ad4E836C7A0c']], -} - -module.exports = { - xdai: { tvl: async (api) => sumTokens2({ api, tokensAndOwners: tokensAndOwners.xdai }) }, - polygon: { tvl: async (api) => sumTokens2({ api, tokensAndOwners: tokensAndOwners.polygon }) }, - chz: { tvl: async (api) => sumTokens2({ api, tokensAndOwners: tokensAndOwners.chz }) }, - base: { tvl: async (api) => sumTokens2({ api, tokensAndOwners: tokensAndOwners.base }) }, - methodology: `TVL is the total amount of WXDAI, WETH, USDT and CHZ held on Liquidity pools' smart-contracts.` -} diff --git a/projects/b-protocol/index.js b/projects/b-protocol/index.js deleted file mode 100644 index e590204538e..00000000000 --- a/projects/b-protocol/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by B protocol.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0xf7D44D5a28d5AF27a7F9c8fc6eFe0129e554d7c4', - '0x2566f66f68ed438726AD904524FB306A03FdB80B', - '0x17e7bB9fe7983947FdCf02c1E3d8e6C92C21da54', - ], - }, - base: { - morphoVaultOwners: [ - '0x17e7bB9fe7983947FdCf02c1E3d8e6C92C21da54', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/b14g/index.js b/projects/b14g/index.js deleted file mode 100644 index f354de15df2..00000000000 --- a/projects/b14g/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const {getLogs2} = require("../helper/cache/getLogs"); -const {sumTokens} = require("../helper/chain/bitcoin"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - core: { - tvl: async function tvl(api) { - const logs = await getLogs2({ - api, - target: "0x04EA61C431F7934d51fEd2aCb2c5F942213f8967", - eventAbi: 'event CreateRewardReceiver(address indexed from, address indexed rewardReceiver, uint256 portion, uint256 time)', - fromBlock: 19942300, - }) - const receiverRewards = logs.map(i => i.rewardReceiver) - const coreStakeAmounts = await api.multiCall({abi: 'uint256:totalCoreStake', calls: receiverRewards}) - const totalCoreStakedVault = await api.call({ - target: "0xee21ab613d30330823D35Cf91A84cE964808B83F", - abi: 'uint256:totalStaked', - }); - - - const totalCoreStakedWBTCVault = await api.call({ - target: "0x2e3ea6cf100632a4a4b34f26681a6f50347775c9", - params: "0xa3CD4D4A568b76CFF01048E134096D2Ba0171C27",// wbtc vault address - - abi: "erc20:balanceOf", - }); - - api.addGasToken([...coreStakeAmounts, totalCoreStakedVault]); - api.addToken("0x5832f53d147b3d6cd4578b9cbd62425c7ea9d0bd",totalCoreStakedWBTCVault) - } - }, - bitcoin: { - tvl: async () => { - let owners = await bitcoinAddressBook.b14g() - return sumTokens({owners}) - } - } -} diff --git a/projects/babelfish/index.js b/projects/babelfish/index.js deleted file mode 100644 index e0ec4ef9e09..00000000000 --- a/projects/babelfish/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const tokens = [ - "0x2aCc95758f8b5F583470bA265Eb685a8f45fC9D5", - "0x6D9659BDF5b1a1Da217f7BBAf7DBaf8190e2e71b", - "0x403c88eFEC5bC470f7D4F4ee3b640d1516F72e8c", - "0x2d919f19D4892381d58EdEbEcA66D5642ceF1A1F", - "0x61e9604e31a736129d7f5C58964c75935b2d80D6", - "0x6A42Ff12215a90f50866A5cE43A9c9C870116e76", - "0x1A37c482465e78E6DAbE1Ec77B9a24D4236D2A11", - "0x91EDceE9567cd5612c9DEDeaAE24D5e574820af1", - "0x8D1f7CbC6391D95E2774380e80A666FEbf655D6b", - "0xD9665EA8F5fF70Cf97E1b1Cd1B4Cd0317b0976e8", - "0xFf4299bCA0313C20A61dc5eD597739743BEf3f6d", - "0xb5999795BE0eBb5BAb23144Aa5fD6a02d080299f", - "0xc1411567D2670E24D9c4Daaa7CdA95686E1250Aa", - ADDRESSES.rsk.rUSDT, - "0xE700691Da7B9851F2F35f8b8182C69C53ccad9DB", -] - -module.exports = { - rsk: { - tvl: sumTokensExport({ owner: '0x1440d19436bEeaF8517896bffB957a88EC95a00F', tokens }), - } -}; diff --git a/projects/babena/index.js b/projects/babena/index.js deleted file mode 100644 index 3af47cad0d2..00000000000 --- a/projects/babena/index.js +++ /dev/null @@ -1,113 +0,0 @@ -const axios = require("axios"); -const { fetchLocal, mkMeta } = require("../helper/pact"); - -const chainId = "3"; -const network = `https://api.chainweb.com/chainweb/0.0/mainnet01/chain/${chainId}/pact`; -const GAS_PRICE = 0.00000001; -const creationTime = () => Math.round(new Date().getTime() / 1000) - 10; - -const getReserve = (tokenData) => { - return parseFloat(tokenData.decimal ? tokenData.decimal : tokenData); -} - -const getTokenToKadena = async (token) => { - let data = await fetchLocal({ - pactCode: ` - (use free.exchange) - (let* - ( - (p (get-pair ${token} coin)) - (reserveA (reserve-for p ${token})) - (reserveB (reserve-for p coin)) - )[reserveA reserveB]) - `, - meta: mkMeta("account", chainId, GAS_PRICE, 3000, creationTime(), 600), - }, network); - - if (data.result.status === "success") { - const tokenReserve = getReserve(data.result.data[0]); - const kadenaReserve = getReserve(data.result.data[1]); - return kadenaReserve / tokenReserve; - } - - throw new Error(`Babena fetch failed`); -} - -const fetchBebePrice = async () => { - return await getTokenToKadena("free.babena"); -} - -const getTotalLockedKda = async () => { - let data = await fetchLocal( - { - pactCode: '(coin.get-balance "babena-bank")', - meta: mkMeta('', chainId, 0.01, 1000, 28800, creationTime()) - }, - network - ); - if (data.result.status === "success") { - return getReserve(data.result.data); - } - - throw new Error("Total locked KDA fetch failed"); -} - -const getTotalLockedBabe = async () => { - let data = await fetchLocal( - { - pactCode: '(free.babena.get-balance "babena-bank")', - meta: mkMeta('', chainId, 0.01, 1000, 28800, creationTime()) - }, - network - ); - if (data.result.status === "success") { - return getReserve(data.result.data); - } - - throw new Error("Total locked BABE failed"); -} - -function calcTVL(availableKda) { - let totalPriceKda = 0; - - if (availableKda > 0) { - totalPriceKda = availableKda; - } - - return { kadena: totalPriceKda }; -} - -function stakingcalcTVL(babenaPrice, availableBabe) { - let totalPriceBabe = 0; - - - if (availableBabe > 0 && babenaPrice > 0) { - totalPriceBabe = availableBabe * babenaPrice; - } - - return { kadena: totalPriceBabe } -} - -async function fetch() { - const availableKda = await getTotalLockedKda(); - - return calcTVL(availableKda); -} -async function stakingfetch() { - const bebePrice = await fetchBebePrice(); - const babenaPrice = bebePrice; - const availableBabe = await getTotalLockedBabe(); - - return stakingcalcTVL(babenaPrice, availableBabe); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - deadFrom: '2024-08-30', - kadena: { - tvl: () => ({}), - staking: () => ({}) - } - -} \ No newline at end of file diff --git a/projects/babydoge-algebra/index.js b/projects/babydoge-algebra/index.js deleted file mode 100644 index efb811e7995..00000000000 --- a/projects/babydoge-algebra/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - bsc: { - factory: '0xda3285630ee68b94e9ba484e11512f586634d593', - fromBlock: 54100671, - isAlgebra: true - } -}); \ No newline at end of file diff --git a/projects/babydogeswap/index.js b/projects/babydogeswap/index.js deleted file mode 100644 index 6155edb6a89..00000000000 --- a/projects/babydogeswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const farmFactoryContract = '0x4693B62E5fc9c0a45F89D62e6300a03C85f43137' -const babydogeTokenAddress = '0xc748673057861a797275CD8A068AbB95A902e8de' -const stakingContract = '0xcecd3e7eadae1ad0c94f53bf6a2af188df1a90d0' - -module.exports = { - methodology: 'Total TVL in all farms and BabyDoge staking pool', - misrepresentedTokens: true, - bsc: { - staking: staking(stakingContract, babydogeTokenAddress), - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: farmFactoryContract, - blacklistedTokens: [ - '0xe320df552e78d57e95cf1182b6960746d5016561' - ] - }) - }, -} diff --git a/projects/babylon-finance/abi.json b/projects/babylon-finance/abi.json deleted file mode 100644 index cf7c52eb43b..00000000000 --- a/projects/babylon-finance/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getGardens": "address[]:getGardens", - "getGardenDetails": "function getGardenDetails(address _garden) view returns (string, string, address[5], address, bool[4], address[], address[], uint256[10], uint256[10], uint256[3])", - "getCompleteStrategy": "function getCompleteStrategy(address _strategy) view returns (address, string, uint256[16], bool[], uint256[])" -} \ No newline at end of file diff --git a/projects/babylon-finance/helper.js b/projects/babylon-finance/helper.js deleted file mode 100644 index c0f3a8838bc..00000000000 --- a/projects/babylon-finance/helper.js +++ /dev/null @@ -1,49 +0,0 @@ -const sdk = require("@defillama/sdk") -const BigNumber = require("bignumber.js") -const { sumTokens2 } = require("../helper/unwrapLPs"); - -/* -univ3_Positions:{ - vault, - pool -}[] -*/ -async function unwrapUniswapV3LPs(balances, univ3_Positions, block, chain = 'ethereum', transformAddress = (addr) => addr) { - await Promise.all(univ3_Positions.map(async univ3_Position => { - try { - // Get share of that LP NFT inside the vault as balanceOf / totalSupply - const { output: totalSupply } = await sdk.api.abi.call({ - block, - abi: 'erc20:totalSupply', - target: univ3_Position.vault, - chain - }) - const { output: heldLPshares } = await sdk.api.abi.call({ - block, - abi: 'erc20:balanceOf', - target: univ3_Position.vault, - params: univ3_Position.pool, - chain - }) - const sharesRatio = heldLPshares / totalSupply - - const positionBalances = await sumTokens2({ resolveUniV3: true, chain, block, owner: univ3_Position.vault }) - - - // Add balances while multiplying amount by ratio of shares - Object.entries(positionBalances).forEach(async entry => { - const [key, value] = entry; - // balances[key] = BigNumber( balances[key] || 0 ).plus(sharesRatio * value); - sdk.util.sumSingleBalance(balances, await transformAddress(key), BigNumber(sharesRatio * value).toFixed(0)) - }); - - } catch (e) { - sdk.log(`Failed to get data for LP token vault at ${univ3_Position.vault} on chain ${chain}`) - throw e - } - })) -} - -module.exports = { - unwrapUniswapV3LPs -} diff --git a/projects/babylon-finance/index.js b/projects/babylon-finance/index.js deleted file mode 100644 index 7839c333b4d..00000000000 --- a/projects/babylon-finance/index.js +++ /dev/null @@ -1,151 +0,0 @@ -const sdk = require("@defillama/sdk") -const BigNumber = require("bignumber.js") -const abi = require('./abi.json'); -const { unwrapUniswapV3LPs } = require("./helper"); -const { log } = require('../helper/utils') - -const babController = '0xd4a5b5fcb561daf3adf86f8477555b92fba43b5f' -const babylonViewer = '0x740913FEF40720E82498D5b73A4E8C3a5D9b9d79' - -async function tvl(timestamp, ethBlock, chainBlocks) { - const balances = {} - - // Get all gardens using babController contract - let { output: gardens } = await sdk.api.abi.call({ - abi: abi['getGardens'], - target: babController, - block: ethBlock, - chain: 'ethereum' - }) - - const gardensToIgnore = ["0xB0EE8C61c78aA9B7ED138bcC6bce7ABeC8470038", "0xF0AF08d7bc6e4aE42b84771aE3f9DA7D8e58b083", "0x4f5721Ce7F02586D67eA0CC6003e889E974DC9A0", "0xab051B83eecA40084855e289E2531D22F9AffD21"] - gardens = gardens.filter(i => !gardensToIgnore.includes(i)) - // Get details of all gardens using babylonViewer contract - const gardensDetails = await sdk.api.abi.multiCall({ - abi: abi['getGardenDetails'], - calls: gardens.map(garden => ({ - params: garden, - target: babylonViewer, - })), - block: ethBlock, - chain: 'ethereum' - }) - - for (const gardenDetails of gardensDetails.output) { - if (gardensToIgnore.includes(gardenDetails.input.params[0])) { continue; } - // log(gardenDetails.input.params[0], !!gardenDetails.output) - const [gardenName, symbol, creators, reserveAsset, arr1, strategies, finalizedStrategies, voteParams, capitalArr, profits] = gardenDetails.output - // const garden_principal = capitalArr[0] - const garden_idle = capitalArr[9] - // Get strategies details - const strategiesDetails = await sdk.api.abi.multiCall({ - abi: abi['getCompleteStrategy'], - calls: strategies.map(strategy => ({ - params: strategy, - target: babylonViewer, - })), - block: ethBlock, - chain: 'ethereum' - }) - let strategy_str = '' - const strategies_tvl = strategiesDetails.output.map(strategyDetails => { - const [, strategyName, strategyProps, ,] = strategyDetails.output - const [capitalAllocated, nav] = [strategyProps[4], strategyProps[10]] - strategy_str += ` strategy ${strategyName}: nav (tvl): ${nav / 1e18} out of capitalAllocated, : ${capitalAllocated / 1e18}\n` - return nav - }) - - const garden_tvl = strategies_tvl.reduce((acc, el) => acc.plus(BigNumber(el)), BigNumber(garden_idle)) - balances[reserveAsset] = balances[reserveAsset] ? BigNumber(balances[reserveAsset]).plus(garden_tvl) : garden_tvl - // if (garden_tvl / 1e18 > 10) - // log(`Garden with name "${gardenName}" TVL: ${garden_tvl / 1e18} of reserveAsset: ${reserveAsset} locked\n${strategy_str}-----------------------------`) - } - return Object.fromEntries(Object.entries(balances).map(b => [b[0], b[1].toFixed(0)])) -} - -const harvest_vault = '0xadB16dF01b9474347E8fffD6032360D3B54627fB' -const harvest_pool = '0x3e6397E309f68805FA8Ef66A6216bD2010DdAF19' -// const harvest_position_id = 158516 -async function staking(timestamp, ethBlock, chainBlocks) { - const balances = {} - const univ3_Positions = [{ - vault: harvest_vault, - pool: harvest_pool - }] - await unwrapUniswapV3LPs(balances, univ3_Positions, ethBlock, 'ethereum') - // log('balances:', balances) - return balances -} - -module.exports = { - methodology: "TVL of Babylon corresponds to capital locked into each garden (idle capital waiting to be deployed) as well as capital deployed to each strategy of these gardens", - ethereum: { - staking, // : () => ({}) - tvl // : () => ({}), - } -} - -/* garden Details -( - gardenName, - symbol, - creators, - garden.reserveAsset(), - [true, garden.privateGarden(), garden.publicStrategists(), garden.publicStewards()], - garden.getStrategies(), - garden.getFinalizedStrategies(), - [ - garden.depositHardlock(), - garden.minVotesQuorum(), - garden.maxDepositLimit(), - garden.minVoters(), - garden.minStrategyDuration(), - garden.maxStrategyDuration(), - garden.strategyCooldownPeriod(), - garden.minContribution(), - garden.minLiquidityAsset(), - garden.totalKeeperFees().add(garden.keeperDebt()) - ], - [ - principal, - garden.reserveAssetRewardsSetAside(), - uint256(garden.absoluteReturns()), - garden.gardenInitializedAt(), - garden.totalContributors(), - garden.totalStake(), - totalSupplyValuationAndSeed[1] > 0 - ? totalSupplyValuationAndSeed[0].preciseMul(totalSupplyValuationAndSeed[1]) - : 0, - totalSupplyValuationAndSeed[0], - totalSupplyValuationAndSeed[2], - totalSupplyValuationAndSeed[3] - ], - profits -) -*/ -/* Complete Strategy -( - strategist, - strategyName, - [ - strategy.getOperationsCount(), - strategy.stake(), - strategy.totalPositiveVotes(), - strategy.totalNegativeVotes(), - strategy.capitalAllocated(), - strategy.capitalReturned(), - strategy.duration(), - strategy.expectedReturn(), - strategy.maxCapitalRequested(), - strategy.enteredAt(), - strategy.getNAV(), - rewards, - strategy.maxAllocationPercentage(), - strategy.maxGasFeePercentage(), - strategy.maxTradeSlippagePercentage(), - strategy.isStrategyActive() ? _estimateStrategyRewards(_strategy) : 0 - ], - status, - ts -) -*/ \ No newline at end of file diff --git a/projects/babylon/index.js b/projects/babylon/index.js deleted file mode 100644 index 541dbbccd16..00000000000 --- a/projects/babylon/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const axios = require('axios'); - -async function tvl(api) { - const response = await axios.get('https://staking-api.babylonlabs.io/v2/stats'); - const activeTvlSatoshis = response.data.data.total_active_tvl; - const activeTvlBitcoin = activeTvlSatoshis / 1e8; - - if (activeTvlBitcoin > 0) - api.addCGToken('bitcoin', activeTvlBitcoin) - else - throw new Error('Babylon: Invalid TVL value'); -} - -module.exports = { - methodology: 'TVL is fetched from Babylon’s Staking API and represents the total Bitcoin locked in the Babylon staking protocol.', - start: '2024-08-22', - timetravel: false, - bitcoin: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/babypie/index.js b/projects/babypie/index.js deleted file mode 100644 index b717eeea21d..00000000000 --- a/projects/babypie/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/sumTokens.js'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.magpie }), - }, - ethereum: { tvl: sumTokensExport({ owners: ['0xE813FFA7932f2D182F0ae89254acFD0bAa6E2Df3','0x9f4f69DdD56BbcAE6F164AccE3a99afeF840B79f'], tokens: [ADDRESSES.ethereum.WBTC,'0x8BB97A618211695f5a6a889faC3546D1a573ea77'] }) }, -} diff --git a/projects/babypigfinance/index.js b/projects/babypigfinance/index.js deleted file mode 100644 index 352af3a4703..00000000000 --- a/projects/babypigfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x7f8ECcC1437aaCEFE533A6f1BfE2144b1d0d7D35', - nativeToken: '0x3a76b1b3e827cc7350e66a854eced871a81a3527', -}) \ No newline at end of file diff --git a/projects/babyswap/abi.json b/projects/babyswap/abi.json deleted file mode 100644 index dbd78ad4630..00000000000 --- a/projects/babyswap/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCakePerShare)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/babyswap/index.js b/projects/babyswap/index.js deleted file mode 100644 index 8fdc293ff0a..00000000000 --- a/projects/babyswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require("../helper/staking"); - -const MasterChefContract = "0xdfAa0e08e357dB0153927C7EaBB492d1F60aC730"; -const BABY = "0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657"; - -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - methodology: `Uses factory(0x86407bEa2078ea5f5EB5A52B2caA963bC1F889Da) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0x86407bEa2078ea5f5EB5A52B2caA963bC1F889Da', useDefaultCoreAssets: true }), - staking: staking(MasterChefContract, BABY), - } -}; - - diff --git a/projects/back-to-bitcoin/index.js b/projects/back-to-bitcoin/index.js deleted file mode 100644 index c9d72de84d7..00000000000 --- a/projects/back-to-bitcoin/index.js +++ /dev/null @@ -1,23 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const btcbStakingContract1 = "0x1EE28d16C380B2137E63EBf92a9F5B42e63E9500" -const btcbStakingContract2 = "0xa253D8BB6Ed85CE1F8FA646794E5681F30542aC9" - -const btcuAddress = '0x54B8E454790D8c508F7b4f691721B0d7A7D75Fa5' -const btcuStakingContract = "0x3A76fdf6dd5e7835647375aBb69a5fCeFD2dcbC3" -const troveContract = '0x3e846dCdaFd15770957935C23F0524497281ff0D' - -const b2bLpStakingContract = "0xB9922b10F86f92208ff7E6c4708D4f7C20CbFEb0" -const b2bLpAddress = "0xfa9B1a0a0851b951eA1D6a2DA2CB6E4025db643b" - -const btcbBtcuLpStakingContract = "0x004d02677d22f0e6a977dbF5eEa3351580220997" -const btcbBtcuLpAddress = "0x70E3eEaacC553dA549fbD734475f61e00A40AA28" - -module.exports = { - bsc: { - tvl: sumTokensExport({ owners: [btcbStakingContract1, btcbStakingContract2, troveContract,], tokens: [ADDRESSES.bsc.BTCB,] }), - pool2: sumTokensExport({ owners: [b2bLpStakingContract, btcbBtcuLpStakingContract], tokens: [b2bLpAddress, btcbBtcuLpAddress,], resolveLP: true, }), - } -} diff --git a/projects/backbonelabs/index.js b/projects/backbonelabs/index.js deleted file mode 100644 index 8e53eda9be9..00000000000 --- a/projects/backbonelabs/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { queryContract: queryContractCosmos } = require("../helper/chain/cosmos"); -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - archway: { - token: ADDRESSES.archway.ARCH, - hub: "archway12ejj99vkawuxfv0rg9l08hsun35juc6evprracmpe3mka3lsk5fqpjxhgl", - boneToken: "archway12yurzx8zynv3ck7uh4tucre48tqsm4fac4hfk9p3l24qs2cn08dqr684cg" - }, - chihuahua: { - token: ADDRESSES.chihuahua.HUAHUA, - hub: "chihuahua1psf89r2g9vdlttrjphspcpzzfx87r2r4nl5fg703ky42mp2706wsw5330f", - boneToken: "chihuahua1jz5n4aynhpxx7clf2m8hrv9dp5nz83k67fgaxhy4p9dfwl6zssrq3ymr6w" - }, - injective: { - token: ADDRESSES.injective.INJ, - hub: "inj1dxp690rd86xltejgfq2fa7f2nxtgmm5cer3hvu", - boneToken: "factory/inj1dxp690rd86xltejgfq2fa7f2nxtgmm5cer3hvu/bINJ" - }, - juno: { - token: ADDRESSES.juno.JUNO, - hub: "juno102at0mu2xeluyw9efg257yy6pyhv088qqhmp4f8wszqcwxnpdcgqsfq0nv", - boneToken: "juno1mvkgcr5uce2rnpzr4qrzf50hx4qreuwzlt7fzsjrhjud3xnjmttq5mkh2m", - }, - kujira: { - token: ADDRESSES.kujira.KUJI, - hub: "kujira15e8q5wzlk5k38gjxlhse3vu6vqnafysncx2ltexd6y9gx50vuj2qpt7dgv", - boneToken: "factory/kujira15e8q5wzlk5k38gjxlhse3vu6vqnafysncx2ltexd6y9gx50vuj2qpt7dgv/boneKuji" - }, - migaloo: { - token: ADDRESSES.migaloo.WHALE, - hub: "migaloo1mf6ptkssddfmxvhdx0ech0k03ktp6kf9yk59renau2gvht3nq2gqdhts4u", - boneToken: "factory/migaloo1mf6ptkssddfmxvhdx0ech0k03ktp6kf9yk59renau2gvht3nq2gqdhts4u/boneWhale" - }, - osmosis: { - token: ADDRESSES.osmosis.OSMO, - hub: "osmo1s3l0lcqc7tu0vpj6wdjz9wqpxv8nk6eraevje4fuwkyjnwuy82qsx3lduv", - boneToken: "factory/osmo1s3l0lcqc7tu0vpj6wdjz9wqpxv8nk6eraevje4fuwkyjnwuy82qsx3lduv/boneOsmo" - }, - terra2: { - token: ADDRESSES.terra2.LUNA, - hub: "terra1l2nd99yze5fszmhl5svyh5fky9wm4nz4etlgnztfu4e8809gd52q04n3ea", - boneToken: "terra17aj4ty4sz4yhgm08na8drc0v03v2jwr3waxcqrwhajj729zhl7zqnpc0ml", - } -}; - -module.exports = { - timetravel: false, - methodology: "Liquid Staking Protocol", -}; - -Object.keys(config).forEach(chain => { - const { hub, token } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (!hub) return {} - const { total_native } = await queryContractCosmos({ contract: hub, chain, data: { state: {} } }); - api.add(token, total_native) - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/backed/index.js b/projects/backed/index.js deleted file mode 100644 index a12f59da604..00000000000 --- a/projects/backed/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const contracts = [ - "0x2F123cF3F37CE3328CC9B5b8415f9EC5109b45e7", // bC3M - "0x2f11eeee0bf21e7661a22dbbbb9068f4ad191b86", // bNIU - "0x0f76D32CDccDcbd602A55Af23EAF58FD1eE17245", // bERNA - "0xbbcb0356bB9e6B3Faa5CbF9E5F36185d53403Ac9", // bCOIN - "0xCA30c93B02514f86d5C86a6e375E3A330B435Fb5", // b1B01 - "0x52d134c6DB5889FaD3542A09eAf7Aa90C0fdf9E4", // bIBTA - "0x1e2c4fb7ede391d116e6b41cd0608260e8801d59", // bCSPX - "0x20C64dEE8FdA5269A78f2D5BDBa861CA1d83DF7a", // bHIGH - "0x3f95AA88dDbB7D9D484aa3D482bf0a80009c52c9", // bERNX - "0xAde6057FcAfa57d6d51FFa341C64ce4814995995", // bZPR1 -].map(i => i.toLowerCase()) - -const bNVDA = "0xA34C5e0AbE843E10461E2C9586Ea03E55Dbcc495".toLowerCase() // Deployed atm only on Ethereum - -const blacklistedOwners = [ - '0x5F7A4c11bde4f218f0025Ef444c369d838ffa2aD', // working capital - '0x43624c744A4AF40754ab19b00b6f681Ca56F1E5b', // treasury/cold wallet -] - -async function tvl(api) { - let tokens = [...contracts] - if (api.chain === 'base') { - tokens.push('0xC3cE78B037DDA1B966D31EC7979d3f3a38571A8E') - tokens = tokens.filter(i => i !== '0x1e2c4fb7ede391d116e6b41cd0608260e8801d59') - } - if (api.chain === 'ethereum') { - tokens.push(bNVDA) - } - const supply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens }) - const balances = {} - await sumTokens2({ api, tokens, owners: blacklistedOwners, balances, transformAddress: i => i}) - Object.entries(balances).forEach(([token, bal]) => { - api.add(token, bal * -1) - }) - - api.addTokens(tokens, supply) - return api.getBalances() -} - -const chains = ["ethereum", "polygon", 'xdai', 'bsc', "avax", "fantom", "base", "arbitrum"] - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/backfinance/index.js b/projects/backfinance/index.js deleted file mode 100644 index c58e2efc953..00000000000 --- a/projects/backfinance/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -module.exports = { - heco: { - tvl: () => ({}), - }, -}; - - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/backpack/index.js b/projects/backpack/index.js deleted file mode 100644 index b143d10240f..00000000000 --- a/projects/backpack/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const axios = require('axios') -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); -const { sumTokensExport } = require('../helper/sumTokens') -const ADDRESSES = require('../helper/coreAssets.json') -const { defaultTokens } = require('../helper/cex') - -const API_URL = 'https://api.backpack.exchange/api/v1/wallets' - -const getConfig = async () => { - const { data } = await axios.get(API_URL) - const config = {} - data.forEach(({ address, blockchain }) => { - let chain = blockchain.toLowerCase() - if (chain === 'avalanche') chain = 'avax' - if (!config[chain]) config[chain] = { owners: [] } - config[chain].owners.push(address) - }) - return config -} - -const exportObj = { timetravel: false } -const chains = ['ethereum', 'solana', 'bitcoin', 'litecoin', 'arbitrum', 'optimism', 'polygon', 'base', 'bsc', 'avax', 'tron']; - -chains.forEach((chain) => { - exportObj[chain] = { - tvl: async () => { - const config = await getConfig() - const entry = config[chain] - if (!entry) return {} - - let { tokensAndOwners, owners, tokens, blacklistedTokens, fungibleAssets } = entry - if (!tokensAndOwners && !tokens && chain !== 'solana') tokens = defaultTokens[chain] || [ADDRESSES.null] - - const options = { ...entry, owners, tokens, chain, blacklistedTokens } - if (chain === 'solana' || chain === 'eclipse') options.solOwners = owners - if (chain === 'ton') options.onlyWhitelistedTokens = true - if (chain === 'aptos' && Array.isArray(fungibleAssets)) options.fungibleAssets = fungibleAssets - - return sumTokensExport(options)() - } - } -}) - -module.exports = exportObj \ No newline at end of file diff --git a/projects/bacondao/index.js b/projects/bacondao/index.js deleted file mode 100644 index 9e6f0f6476f..00000000000 --- a/projects/bacondao/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { pool2 } = require("../helper/pool2.js"); - -// ETH contracts -const baconToken = "0x34f797e7190c131cf630524655a618b5bd8738e7"; -const stakingContract = "0x27FC644f86a5D4Ad0809BFF8EafCc528E5F4e034"; - -// BACON-USDC Pair -const ethLP = "0xc992a50169f6075d52013118355c633bf92ae853"; - -// BSC contracts -const bscBaconToken = "0x0615dbba33fe61a31c7ed131bda6655ed76748b1"; -const bscStakingContract = "0x1624f949b1c972eA24e9BeeAd7A0f60E201D6eD3"; - -// BACON-BUSD Pair -const bscPool2Contract = "0x529943544Eb7f1765b4009862420fBd22A6D5eE7"; -const bscLP = "0xdf2f838fda9294a7dedb25c815c4f8a3dc30851c"; - -module.exports = { - ethereum: { - tvl: async () => ({}), - pool2: pool2(stakingContract, ethLP), - staking: staking(stakingContract, baconToken), - }, - bsc: { - tvl: async () => ({}), - pool2: pool2(bscPool2Contract, bscLP, "bsc", (addr) => `bsc:${addr}`), - staking: staking(bscStakingContract, bscBaconToken), - }, -}; diff --git a/projects/badgerdao.js b/projects/badgerdao.js deleted file mode 100644 index d1f2bdc03b2..00000000000 --- a/projects/badgerdao.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getConfig } = require('./helper/cache') - -// module.exports.hallmarks = [[1638403200, "Front-end attack"]] - -const chains = ["ethereum", "bsc", "arbitrum", "polygon", "fantom"] - -chains.forEach(chain => { - let oChain = chain - if (chain === 'bsc') - oChain = 'binance-smart-chain' - module.exports[chain] = { - tvl: async (api) => { - const data = await getConfig(`badgerdao/tvl/${chain}`, `https://api.badger.com/v2/vaults?chain=${oChain}¤cy=usd`) - if (!data || Object.keys(data).length === 0) return; - const calls = data.map(i => i.vaultToken) - return api.erc4626Sum({ calls, permitFailure: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/bagel-finance/index.js b/projects/bagel-finance/index.js deleted file mode 100644 index 86d0b8a91a2..00000000000 --- a/projects/bagel-finance/index.js +++ /dev/null @@ -1,147 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const bankAddress = "0x18C32E273D0F13D5b8268B3Bc5acD30f26A8F91a"; -const tokens = [ - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.ETH, - "0x9c65ab58d8d978db963e63f2bfb7121627e3a739", - "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - ADDRESSES.bsc.USDC, - "0xbb238fce6e2ee90781cd160c9c6eaf3a4cfad801", - ADDRESSES.null, -]; - -const lps = [ - { - 0: "0x35e716c5D1038D41BdbA201413dBa9FDF16BBede", - 1: "0x0eD7e52944161450477ee417DE9Cd3a859b14fD0", - }, - { - 0: "0x9583a15ED9766634d5b947F9837fB9156e80Cc55", - 1: "0x58f876857a02d6762e0101bb5c46a8c1ed44dc16", - }, - { - 0: "0x78ab47680dF11a14509eEB46D07A5296161102dd", - 1: "0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae", - }, - { - 0: "0x62B21315F17A0929DC76F888256bd66F774fc8E8", - 1: "0xf45cd219aef8618a92baa7ad848364a158a24f33", - }, - { - 0: "0x13C7551604CD533f19fd8AC07c4f02eF7F749036", - 1: "0x804678fa97d91b974ec2af3c843270886528a9e6", - }, - { - 0: "0x30e3624584441ed9c2552265743bA2e02cAe7714", - 1: "0xea26b78255df2bbc31c1ebf60010d78670185bd0", - }, - { - 0: "0x4eBf4522046c5D1AAB5881C5c8A1679ba41c71B7", - 1: "0x61eb789d75a95caa3ff50ed7e47b96c132fec082", - }, - { - 0: "0x69C8e18fEBE99Eb32EBde5b0Bf4970066C9C0fEc", - 1: "0xe1cbe92b5375ee6afe1b22b555d257b4357f6c68", - }, - { - 0: "0x56d382C3f62E00e0D4eeAA283212f557C82D2Ab4", - 1: "0xda28eb7aba389c1ea226a420bce04cb565aafb85", - }, - { - 0: "0x09e44Da2975C119B42fA990d24dA5B16B6e37962", - 1: "0x09cb618bf5ef305fadfd2c8fc0c26eecf8c6d5fd", - }, - { - 0: "0x1Cb542509BbBba65ab4a1509bd59fc9f7195a9CA", - 1: "0x0fb881c078434b1c0e4d0b64d8c64d12078b7ce2", - }, - { - 0: "0x63cA00DEfc958af2a8a14923978F79CAd1268fE4", - 1: "0x340192d37d95fb609874b1db6145ed26d1e47744", - }, - { - 0: "0xA37255b10b1757aA1c6009A3089F50b654f5a093", - 1: "0xaf9aa53146c5752bf6068a84b970e9fbb22a87bc", - }, - { - 0: "0xBd245975DB5D4255E5E6c4531DffE5A6829db985", - 1: "0xba68d6bee4f433630dee22c248a236c8f6eae246", - }, - { - 0: "0xe4aD6C2Cd37DEd0560f766327dD426e04B0Fa657", - 1: "0x1c0276642f2a7cbcf6624d511f34811cdc65212c", - }, - { - 0: "0x3b402F7448edC7c7a959B336367a06aDDe9Ca07B", - 1: "0x223740a259e461abee12d84a9fff5da69ff071dd", - }, - { - 0: "0xdf7039684F943E82a8738A340830e4D8068F1f7D", - 1: "0x969f2556F786a576F32AeF6c1D6618f0221Ec70e", - }, - { - 0: "0x514b825ebb062EB29681C281092f27eFeC838Ceb", - 1: "0x82E8F9e7624fA038DfF4a39960F5197A43fa76aa", - }, - { - 0: "0x116D641DCBDc3Ad83377720Befb2B3ACcC3525Fd", - 1: "0xe1cbe92b5375ee6afe1b22b555d257b4357f6c68", - }, - { - 0: "0x5dA197Fc0d6Cc95E2FfAB1b5d716787Ed361086f", - 1: "0xda28eb7aba389c1ea226a420bce04cb565aafb85", - }, - { - 0: "0x04b5bfE991F70917b3c57372969A556ba82d1490", - 1: "0x09cb618bf5ef305fadfd2c8fc0c26eecf8c6d5fd", - }, - { - 0: "0x24290AaBeD957BD9dbFa26B7E35D4848493DF257", - 1: "0x0fb881c078434b1c0e4d0b64d8c64d12078b7ce2", - }, - { - 0: "0x54fa364FA14Bb522b974423a7975736a179ABb64", - 1: "0x340192d37d95fb609874b1db6145ed26d1e47744", - }, - { - 0: "0xC99733f519F95f332f7c89783E53A47b2baa146e", - 1: "0xaf9aa53146c5752bf6068a84b970e9fbb22a87bc", - }, - { - 0: "0x738977EF319acC5b68E4e33d4ae15e9439587DF5", - 1: "0xba68d6bee4f433630dee22c248a236c8f6eae246", - }, - { - 0: "0xB6E9E7cC2ED0bc17c9904E7Bddb9bAD0B23572fc", - 1: "0x1c0276642f2a7cbcf6624d511f34811cdc65212c", - }, - { - 0: "0xfAeEEc3bf5c95cB656e8D1F7B4a11C822Bbcf600", - 1: "0x223740a259e461abee12d84a9fff5da69ff071dd", - }, - { - 0: "0x0Fef1343E8f4104AcA4f248BbD9b97E99735483E", - 1: "0x969f2556F786a576F32AeF6c1D6618f0221Ec70e", - }, - { - 0: "0x661FFF9Da7Be79Ffc5c745Cd5fe164Eb7f19560D", - 1: "0x82E8F9e7624fA038DfF4a39960F5197A43fa76aa", - }, -] - -async function tvl(api) { - const owner = bankAddress; - const lpTokens = lps.map((n) => n['1']); - const lpBals = await api.multiCall({ abi: 'erc20:totalSupply', calls: lps.map((n) => n['0']), }) - api.add(lpTokens, lpBals) - return sumTokens2({ api, owner, tokens, resolveLP: true }); -} - -module.exports = { - start: '2020-10-07', - bsc: { tvl }, -}; diff --git a/projects/bagelswap/index.js b/projects/bagelswap/index.js deleted file mode 100644 index d4dffc81fdf..00000000000 --- a/projects/bagelswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - base: { - factory: "0xFAa5F5F4a3c6ed4446F7B6014322C954d218690C", - fromBlock: 2523289, - }, -}); diff --git a/projects/bagful/index.js b/projects/bagful/index.js deleted file mode 100644 index a28421b8412..00000000000 --- a/projects/bagful/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - doublecounted: true, - linea: { - tvl: () => ({}), - }, - // deadFrom: '2025-01-26', - hallmarks: [ - ['2025-01-26', 'Rug Pull!'], - ], -} \ No newline at end of file diff --git a/projects/baguette/index.js b/projects/baguette/index.js deleted file mode 100644 index 445197101ff..00000000000 --- a/projects/baguette/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") - -module.exports = { - misrepresentedTokens: true, - avax:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x3587B8c0136c2C3605a9E5B03ab54Da3e4044b50', }), - }, -} \ No newline at end of file diff --git a/projects/bahamut-dex/index.js b/projects/bahamut-dex/index.js deleted file mode 100644 index 7d68b7cf2f8..00000000000 --- a/projects/bahamut-dex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport('ftn', '0x63D19A275fd468aA5A29FAc7B14697Ca0b5B3315') diff --git a/projects/baker-dao/index.js b/projects/baker-dao/index.js deleted file mode 100644 index 75d72b8828e..00000000000 --- a/projects/baker-dao/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const BREAD_CONTRACT_ADDRESS = "0x0003eEDFdd020bf60D10cf684ABAc7C4534B7eAd"; - -module.exports = { - methodology: "Measures the total value of BERA held in the protocol's contract", - berachain: {tvl: sumTokensExport({ owner: BREAD_CONTRACT_ADDRESS, tokens: [nullAddress]})} -}; \ No newline at end of file diff --git a/projects/baker-guild-finance/index.js b/projects/baker-guild-finance/index.js deleted file mode 100644 index d7228b5ed11..00000000000 --- a/projects/baker-guild-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x81A9A4e95443B505ee6b10227E61b74D39CDeBc0', - nativeToken: '0xfe27133f2e8c8539363883d914bccb4b21ebd28a', -}) \ No newline at end of file diff --git a/projects/bakerfi/index.js b/projects/bakerfi/index.js deleted file mode 100644 index 0e2a6ef39dd..00000000000 --- a/projects/bakerfi/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const config = { - "arbitrum": { - vaults: ["0x4c6d58749126FEBb1D28E8B8FdE97DC3107996d3"] - }, - base: { - vaults: ["0x37327c99bBc522e677a97d01021dB20227faF60A", "0x892022FE1431fdE03836725BBD0f0380e21E2095", "0x4BA3f77a8072217dabd7FeD28DB244A5d32C572E"] - }, - ethereum: { - vaults: ["0x01280b3683fE20Dc9cCF4D9526418F252871E4F7", "0x909d587c482766814B368d5b136d98819B9373d7"] - }, -} - -async function getVaultTVL(api, vaults) { - const bals = await api.multiCall({ - abi: "uint256:totalAssets", - calls: vaults, - }); - api.addGasToken(bals); -} - -module.exports = { - methodology: - "Counts the number of assets that are deployed through the protocol", -}; - -Object.keys(config).forEach((chain) => { - const { vaults = [] } = config[chain]; - module.exports[chain] = { - tvl: async (api) => await getVaultTVL(api, vaults), - }; -}); diff --git a/projects/bakeryswap/index.js b/projects/bakeryswap/index.js deleted file mode 100644 index f8e605213d4..00000000000 --- a/projects/bakeryswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0x01bF7C66c6BD861915CdaaE475042d3c4BaE16A7' -}, { staking: { bsc: ['0x6a8dbbfbb5a57d07d14e63e757fb80b4a7494f81', '0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5'] } }) \ No newline at end of file diff --git a/projects/baki/index.js b/projects/baki/index.js deleted file mode 100644 index cdf6bdfc043..00000000000 --- a/projects/baki/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const bakiAddress = "0x1209c35BDA1bC7b9edaF4C2f60Aa034B0530240b"; -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - methodology: "Total collateral deposited on Baki", - avax: { - tvl: sumTokensExport({ owner: bakiAddress, tokens: [ADDRESSES.avax.USDC] }) - }, -}; diff --git a/projects/baklava-space/index.js b/projects/baklava-space/index.js deleted file mode 100644 index 36d3a4f9a94..00000000000 --- a/projects/baklava-space/index.js +++ /dev/null @@ -1,111 +0,0 @@ -const { staking } = require('../helper/staking'); -const { pool2 } = require('../helper/pool2'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - avax: { - vaults: [ - '0xf160C07c5a7e80F9bFA61f9554FF449b8B3eD990', - '0x7a2e6F95cA2B90CDC52f92dda8A7F2d0C2663264', - ], - pgVaults: [ - '0x91CCbbC44221ddb70f54d9E911C4fE80be944232', - '0xD146D2b9E017585faBbE0943e122b07FaefF1380', - '0xd0Cf7b1071c7c12a7c36ca4CA863B2583D9C338A', - '0x0D382907A342c0ac2DD735a0F8defe59A28D5DE4', - '0xeccFBE23903932DE517b0eb1f80d9e8779A864E0', - '0x17bc0557D5946b1304f8c0b5af18f4FadDBf9D49', - '0xc331aF15574d80a4a34FEd8Ee1369E7900dCD47E', - '0x9841c066021Bfb9D1c79e8E82A597Dd133d8804F', - ], - tjVaults: [ - '0xFec19beb4e68B4c93622c51d4ad8AF804fe421AA', - '0x2d3147AC6dB2a8DfeE1946a9D59b1B0CBc3489c9', - '0xBFd13f98A84C59D42D2086298100D4d7A715733D', - '0x5cBD2724A4398748615a2ad62ff80607dAC233fC', - ], - }, - functionx: [ - '0x1c1e54d8bffb02f261814ca8f06f03efed25ab8d', - '0x76f2f94429155e4e6e4c126ac9b7165ed347c9d6', - '0x610629af1cc8543c0e0348f62559801dc4099a76', - '0xefb5a32735390d01e37b620407892e35acc998c3', - '0x0fe1ead49b97fbd65875ad8a9da0b869552d0caa' - ], - base: [ - '0x37f716f6693EB2681879642e38BbD9e922A53CDf', - '0x49AF8CAf88CFc8394FcF08Cf997f69Cee2105f2b', - '0x83B2D994A1d16E6A3A44281D12542E2bc0d5EBFD', - '0xea505C49B43CD0F9Ed3b40D77CAF1e32b0097328', - '0xc5DFb9698440Eaeb0A7C9dAA5a795e9B48CacadF', - '0x6067776741a82Ad90Dff7e8D9af495F245b71782', - '0x0324a1a68d6Ef3C5037DCc5a305F941eD240197A', - '0x21c502F430A0Ff9Cbc37dcb60a0528e8C76d559f', - '0x3C27C6a8cD5A60dE337772c2c441fF83279d5855', - '0xFefa438D90227Bb6312b0846a28787Db8A0f0c2A', - '0xf81Ac49CEeA834deC340aB08a544fB1E79d44c31', - '0xed1031885D7DE7DB78BE921F5FeAacD3f6E9a127', - '0x9bD9b6600eeE5f8318913cCb17BF836E1e9d2f4F', - '0x25F0Bc213ED49ABe3AD36CB8D0919A138d19b648', - '0x59639E20A17EaD110aaBAF249001Ab140917C18e', - '0x90011B2AB095c9a9f70a8eBEe21313FB3989029f' // CLM pool(Not calculated by defillama) - ], - bsc: [ - '0x6659B42C106222a50EE555F76BaD09b68EC056f9', - '0x81Ea18C7c54217C523F2C072C72D732869c4d661' - ] -} - -const bavaStakingRewards = "0x2F445C4cC8E114893279fa515C291A3d02160b02" -const bavaToken = "0xe19A1684873faB5Fb694CfD06607100A632fF21c" - -const baseBavaStakingRewards = "0xD62634fe21A6c050CF4a05a36d1D9315a9c379b7" -const baseBavaToken = "0x3fbdE9864362CE4Abb244EbeF2EF0482ABA8eA39" - -module.exports = { - doublecounted: true, - methodology: `Counts liquidty on the bava staking and lptoken staking on Avalanche and fx token staking on FunctionX`, - // we have added the other functionx erc4626 vaults, but the token is an LP token and this function is unable to get the price - functionx: { tvl: fxTvl }, - base: { tvl: baseTvl }, - bsc: { tvl: bscTvl } -}; - -async function fxTvl(api) { - const vaults = ['0x5c24B402b4b4550CF94227813f3547B94774c1CB', ...config.functionx] - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true, }) -} - -async function baseTvl(api) { - const vaults = [...config.base] - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true, }) -} - -async function bscTvl(api) { - const vaults = [...config.bsc] - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true, }) -} - -const { vaults, pgVaults, tjVaults, } = config.avax -module.exports.avax = { - tvl: async (api) => { - const vInfo = await api.multiCall({ abi: 'function vaultInfo() view returns (address token, uint256 bal)', calls: vaults }) - vInfo.forEach(i => api.add(i.token, i.bal)) - const pgInfos = await api.multiCall({ abi: 'function vaultInfo() view returns (address token, address, uint256 bal, uint256, bool, bool)', calls: [pgVaults, tjVaults].flat() }) - pgInfos.forEach(i => api.add(i.token, i.bal)) - } -} - -module.exports.avax.staking = staking(bavaStakingRewards, bavaToken) -module.exports.avax.pool2 = pool2('0xdcedb18047945de1f05f649569b3d2b0e648d9c8', '0x2c3601fe09c23df8beb8216298d1502c985e376f') - -module.exports.base.staking = staking(baseBavaStakingRewards, baseBavaToken) diff --git a/projects/baksdao/index.js b/projects/baksdao/index.js deleted file mode 100644 index 852e8304050..00000000000 --- a/projects/baksdao/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens, } = require('../helper/unwrapLPs') - -const chain = 'bsc' - -const DEPOSIT_TOKENS = [ - ADDRESSES.bsc.WBNB, // wBnB - ADDRESSES.bsc.ETH, //ETH, - ADDRESSES.bsc.USDT, // USDT - ADDRESSES.bsc.BTCB, // BTC -] - -const DEPOSIT_CONTRACT = '0xe94286A3e83D66aB3bAF9840184a2E5680e9A7eC' -const BANK_ADDRESS = '0x86D21a8183e150e5050ba5DFd53535b6dE100435' - -async function tvl(timestamp, ethBlock, chainBlocks) { - const balances = {} - - const block = chainBlocks[chain] - const tokenPairs = DEPOSIT_TOKENS.map(token => [ - [token, DEPOSIT_CONTRACT], - [token, BANK_ADDRESS], - ]).flat() - const transform = i => `bsc:${i}` - - await sumTokens( - balances, - tokenPairs, - block, - chain, - transform, - ) - - return balances -} - -module.exports = { - bsc: { - tvl - }, -} \ No newline at end of file diff --git a/projects/balanced-bnUSD/index.js b/projects/balanced-bnUSD/index.js deleted file mode 100644 index 7fd8c430fa6..00000000000 --- a/projects/balanced-bnUSD/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { call, sumTokens } = require('../helper/chain/icx.js') - -// https://docs.balanced.network/smart-contracts -const balancedLoansContract = 'cx66d4d90f5f113eba575bf793570135f9b10cece1'; -const stabilityFundContract = 'cxa09dbb60dcb62fffbd232b6eae132d730a2aafa6'; - -async function tvl(api) { - const supportedTokens = await call(stabilityFundContract, 'getAcceptedTokens') - const tokens = Object.values(await call(balancedLoansContract, 'getCollateralTokens')) - await sumTokens({ api, tokens: supportedTokens, owner: stabilityFundContract }) - return sumTokens({ api, tokens, owner: balancedLoansContract }) -} - -module.exports = { - methodology: 'TVL consists of collateral deposits made to the lending program and the stability fund.', - icon: { - tvl - }, -}; diff --git a/projects/balanced/helper.js b/projects/balanced/helper.js deleted file mode 100644 index 6339cffeffa..00000000000 --- a/projects/balanced/helper.js +++ /dev/null @@ -1,159 +0,0 @@ -const { toInt, call } = require("../helper/chain/icx") - -const balancedDexContract = "cxa0af3165c08318e988cb30993b3048335b94af6c" -const balancedAssetManagerContract = - "cxabea09a8c5f3efa54d0a0370b14715e6f2270591" -const balancedOracle = "cx133c6015bb29f692b12e71c1792fddf8f7014652" -const balancedPegStability = "cxa09dbb60dcb62fffbd232b6eae132d730a2aafa6" -const bnUSDcontract = "cx88fd7df7ddff82f7cc735c871dc519838cb235bb" - -let assetsPromise -let decimalsPromise -let getExternalChainDepositsPromise - - - -async function getAssets() { - if (!assetsPromise) { - assetsPromise = call(balancedAssetManagerContract, "getAssets", {}) - } - return assetsPromise -} - -async function getDecimalsCached() { - if (!decimalsPromise) - decimalsPromise = getDecimals() - - return decimalsPromise -} - -async function getExternalChainDepositsCached() { - if (!getExternalChainDepositsPromise) - getExternalChainDepositsPromise = getExternalChainDeposits() - return getExternalChainDepositsPromise -} - -// Network identifiers are found by calling the getAssets method on the balancedAssetManagerContract -const networkIdentifiers = { - "0x100.icon": "havah", - "0x38.bsc": "bnbchain", - "0xa86a.avax": "avalanche", - "archway-1": "archway", - "injective-1/inj": "injective", - "0xa4b1.arbitrum": "arbitrum", - "0x2105.base": "base", - "sui": "sui", - "solana" : "solana", - "stellar" : "stellar", - "optimism" : "optimism" -} - -// Get decimals of cross-chain Balanced assets in balancedAssetManagerContract -async function getDecimals() { - const assets = await getAssets() - const decimals = {} - for (const [key, tokenAddress] of Object.entries(assets)) { - const hexDecimals = await call(tokenAddress, "decimals", {}) - const decimalValue = parseInt(hexDecimals, 16) - decimals[key] = Math.pow(10, decimalValue) - } - return decimals -} - -// Get cross-chain Balanced assets and their locked deposits -async function getExternalChainDeposits() { - let assets = await getAssets() - const decimals = await getDecimalsCached() - const deposits = [] - - for (const [tokenNetworkAddress, tokenAddress] of Object.entries(assets)) { - let assetDepositDecimal, tokenSymbol, rateDecimal - - try { - const assetDepositHex = await call(balancedAssetManagerContract, "getAssetDeposit", { tokenNetworkAddress }) - assetDepositDecimal = toInt(assetDepositHex) - tokenSymbol = await call(tokenAddress, "symbol", {}) - - try { - const priceData = await call(balancedOracle, "getPriceDataInUSD", { symbol: tokenSymbol, }) - const rateHex = priceData.rate - rateDecimal = parseInt(rateHex, 16) / 1e18 // price value always has 18 decimals no matter the token decimals - } catch (error) { - // console.log( - // `No price data available for ${tokenSymbol}, moving to Peg Stability pricing` - // ) - const limitResponse = await call(balancedPegStability, "getLimit", { - _address: tokenAddress, - }) - if (limitResponse) { - rateDecimal = 1 - } else { - // console.log( - // `No balancedPegStability data available for ${tokenSymbol}, moving to DEX pricing` - // ) - try { - const poolId = await call(balancedDexContract, "getPoolId", { - _token1Address: bnUSDcontract, - _token2Address: tokenAddress, - }) - if (poolId) { - const basePrice = await call( - balancedDexContract, - "getBasePriceInQuote", - { _id: poolId } - ) - rateDecimal = - parseInt(basePrice, 16) / decimals[tokenNetworkAddress] - } else { - console.log( - `No pool ID found for ${tokenSymbol}, setting price to 0` - ) - rateDecimal = 0 - } - } catch (dexError) { - rateDecimal = 0 - } - } - } - - const networkName = Object.keys(networkIdentifiers).find((key) => - tokenNetworkAddress.startsWith(key) - ) - const chainName = networkIdentifiers[networkName] || "Unknown Chain" - const tokenAmount = assetDepositDecimal / decimals[tokenNetworkAddress] - const usdValue = tokenAmount * rateDecimal - - deposits.push({ - token: tokenSymbol, - chain: chainName, - tokenamount: tokenAmount, - priceInUsd: rateDecimal, - tvlInUsd: usdValue, - iconchaincontract: tokenAddress, - }) - } catch (innerError) { - continue - } - } - - return deposits -} - -// Compute TVL of locked Balanced assets on a specific external chain -async function computeTVL(chainName) { - const deposits = await getExternalChainDepositsCached() - let TVL = 0 - deposits.forEach((deposit) => { - if (deposit.chain === chainName) { - if(deposit.tvlInUsd < 1e9){ - TVL += deposit.tvlInUsd - } - } - }) - return { tether: TVL } -} - -module.exports = { - getExternalChainDeposits: getExternalChainDepositsCached, - computeTVL -} \ No newline at end of file diff --git a/projects/balanced/index.js b/projects/balanced/index.js deleted file mode 100644 index bc1657d8be3..00000000000 --- a/projects/balanced/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const { sumTokens } = require('../helper/chain/icx'); -const { getConfig } = require('../helper/cache'); -const ADDRESSES = require('../helper/coreAssets.json'); -const { computeTVL, getExternalChainDeposits } = require('./helper') - -const balancedDexContract = 'cxa0af3165c08318e988cb30993b3048335b94af6c'; - -async function tvl(api) { - const pools = await getConfig('balancedDex', 'https://balanced.icon.community/api/v1/pools') - const tokens = pools.map(pool => [pool.base_address, pool.quote_address]).flat().filter(i => i).map(i => i === 'ICX' ? ADDRESSES.null : i) - const deposits = await getExternalChainDeposits(); - const bridgedTokenSet = new Set(deposits.map(deposit => deposit.iconchaincontract)); - const filteredTokens = tokens.filter(token => !bridgedTokenSet.has(token)); - return sumTokens({ api, tokens: filteredTokens, owner: balancedDexContract }) -} - - - -// https://github.com/balancednetwork/balanced-java-contracts/wiki/Contract-Addresses -// https://github.com/DefiLlama/DefiLlama-Adapters/pull/9857#issuecomment-2060842344 -module.exports = { - methodology: "TVL: The total liquidity held on the Balanced exchange and in the Stability Fund. Fees: Collected from traders", - icon: { - tvl - }, - archway: { - tvl: async () => await computeTVL("archway"), - }, - bsc: { - tvl: async () => await computeTVL("bnbchain"), - }, - avax: { - tvl: async () => await computeTVL("avalanche"), - }, - injective: { - tvl: async () => await computeTVL("injective"), - }, - base: { - tvl: async () => await computeTVL("base"), - }, - arbitrum: { - tvl: async () => await computeTVL("arbitrum"), - }, - sui: { - tvl: async () => await computeTVL("sui"), - }, - solana: { - tvl: async () => await computeTVL("solana"), - }, - stellar: { - tvl: async () => await computeTVL("stellar"), - }, - optimism: { - tvl: async () => await computeTVL("optimism"), - } -}; diff --git a/projects/balancer-cow-amm/index.js b/projects/balancer-cow-amm/index.js deleted file mode 100644 index 8ece9a69e90..00000000000 --- a/projects/balancer-cow-amm/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { v1Tvl } = require('../helper/balancer') -const sdk = require('@defillama/sdk') - -const config = { - ethereum: [ - ['0xf76c421bAb7df8548604E60deCCcE50477C10462', 20432455], - ['0x23fcC2166F991B8946D195de53745E1b804C91B7', 20391510], - ], - xdai: [ - ['0x703Bd8115E6F21a37BB5Df97f78614ca72Ad7624', 35259725], - ['0x7573B99BC09c11Dc0427fb9c6662bc603E008304', 35163914], - ], - arbitrum: [ - ['0xE0e2Ba143EE5268DA87D529949a2521115987302', 248291297] - ], - base: [ - ['0x03362f847B4fAbC12e1Ce98b6b59F94401E4588e', 23650208] - ] -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sdk.util.sumChainTvls(config[chain].map(c => v1Tvl(...c))) - } -}) \ No newline at end of file diff --git a/projects/balancer-v1/index.js b/projects/balancer-v1/index.js deleted file mode 100644 index 212b039d049..00000000000 --- a/projects/balancer-v1/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { v1Tvl } = require('../helper/balancer') - -const blacklistedTokens = [ - "0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", - ADDRESSES.ethereum.sUSD_OLD, - //self destructed - "0x00f109f744B5C918b13d4e6a834887Eb7d651535", "0x645F7dd67479663EE7a42feFEC2E55A857cb1833", "0x4922a015c4407F87432B179bb209e125432E4a2A", - "0xdA16D6F08F20249376d01a09FEBbAd395a246b2C", "0x9be4f6a2558f88A82b46947e3703528919CE6414", -] - -module.exports = { - ethereum:{ - tvl: v1Tvl('0x9424B1412450D0f8Fc2255FAf6046b98213B76Bd', 9562480, { blacklistedTokens }) - } -} diff --git a/projects/balancer-v3/index.js b/projects/balancer-v3/index.js deleted file mode 100644 index 52858f1b344..00000000000 --- a/projects/balancer-v3/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { v3Tvl } = require("../helper/balancer") - -const config = { - xdai: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 37360338 }, - ethereum: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 21332121 }, - arbitrum: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 297810187 }, - base: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 25343854 }, - optimism: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 133969439 }, - avax: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 59955604 }, - hyperliquid: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 6132445 }, - plasma: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 782595 }, -} - -Object.keys(config).forEach(chain => { - const {vault, fromBlock,} = config[chain] - module.exports[chain] = { - tvl: v3Tvl(vault, fromBlock) - } -}) \ No newline at end of file diff --git a/projects/balancer/index.js b/projects/balancer/index.js deleted file mode 100644 index 8da7f514fad..00000000000 --- a/projects/balancer/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./onchain') \ No newline at end of file diff --git a/projects/balancer/onchain.js b/projects/balancer/onchain.js deleted file mode 100644 index 33b90fd9163..00000000000 --- a/projects/balancer/onchain.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { onChainTvl } = require('../helper/balancer') -const { eulerTokens } = require('../helper/tokenMapping') - -const blacklistedTokens = [ - "0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", - ADDRESSES.ethereum.sUSD_OLD, - //self destructed - "0x00f109f744B5C918b13d4e6a834887Eb7d651535", "0x645F7dd67479663EE7a42feFEC2E55A857cb1833", "0x4922a015c4407F87432B179bb209e125432E4a2A", - "0xdA16D6F08F20249376d01a09FEBbAd395a246b2C", "0x9be4f6a2558f88A82b46947e3703528919CE6414", "0xa7fd7d83e2d63f093b71c5f3b84c27cff66a7802", - "0xacfbe6979d58b55a681875fc9adad0da4a37a51b", "0xd6d9bc8e2b894b5c73833947abdb5031cc7a4894", - - ...eulerTokens -] - -const V2_ADDRESS = '0xBA12222222228d8Ba445958a75a0704d566BF2C8'; // shared by all networks - -const config = { - ethereum: { fromBlock: 12272146, }, - polygon: { fromBlock: 15832990, }, - arbitrum: { fromBlock: 222832, }, - xdai: { fromBlock: 24821598, }, - polygon_zkevm: { fromBlock: 203079, }, - base: { fromBlock: 1196036, }, - avax: { fromBlock: 26386141, }, - mode: { fromBlock: 8110317, }, - fraxtal: { fromBlock: 4708596 } -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { fromBlock } = config[chain] - module.exports[chain] = { - tvl: onChainTvl(V2_ADDRESS, fromBlock, { blacklistedTokens }) - } -}) diff --git a/projects/balloonswap/index.js b/projects/balloonswap/index.js deleted file mode 100644 index cd3bf35ec18..00000000000 --- a/projects/balloonswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - op_bnb: { - tvl: getUniTVL({ - factory: "0xCF8B8Ca7B70880c90C635672eB3D4882a52B4890", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/balus/index.js b/projects/balus/index.js deleted file mode 100644 index 72e1e8268f9..00000000000 --- a/projects/balus/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json") -const { sumTokensExport } = require("../helper/chain/ton") -const CONTRACT = "EQDswKn606G8kwS8RuUJg9baJbgAhixb6bYJC6VmIPU873uq" - -module.exports = { - methodology: "Counts all TON balance in the smart contract as the TVL", - timetravel: false, - ton: { - tvl: sumTokensExport({ - owners: [CONTRACT], - tokens: [ADDRESSES.ton.TON], - }) - }, -}; diff --git a/projects/bamboodefi/index.js b/projects/bamboodefi/index.js deleted file mode 100644 index 89c86cad0d6..00000000000 --- a/projects/bamboodefi/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const config = { - ethereum: { factory: '0x3823Ac41b77e51bf0E6536CE465479cBdedcaEa9', }, - bsc: { factory: '0xFC2604a3BCB3BA6016003806A288E7aBF75c8Aa3', }, - polygon: { factory: '0x25cc30af6b2957b0ed7ceca026fc204fdbe04e59', }, - velas: { factory: '0xFC2604a3BCB3BA6016003806A288E7aBF75c8Aa3', }, -} - -module.exports = { - misrepresentedTokens: true, - methodology: - "TVL is calculated from the Bamboo DeFi factory smart contracts on each chain.", -}; - -Object.keys(config).forEach(chain => { - const { factory } = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }) - } -}) diff --git a/projects/banana.js b/projects/banana.js deleted file mode 100644 index a3504294fac..00000000000 --- a/projects/banana.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterChefExports, } = require("./helper/masterchef") - -const token = "0xc67b9b1b0557aeafa10aa1ffa1d7c87087a6149e"; -const masterchef = "0x0e69359B4783094260abFaD7dD904999fc1d6Fd0"; - -module.exports = masterChefExports(masterchef, "boba", token, false) \ No newline at end of file diff --git a/projects/banano/index.js b/projects/banano/index.js deleted file mode 100644 index c58390a92fb..00000000000 --- a/projects/banano/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs.js"); - -//Polygon and BSC staking contracts -const polygonContract = "0xefa4aED9Cf41A8A0FcdA4e88EfA2F60675bAeC9F"; -const bscContract = "0x1E30E12e82956540bf870A40FD1215fC083a3751"; - -const ban = "0xe20B9e246db5a0d21BF9209E4858Bc9A3ff7A034"; - - -module.exports = { - methodology: 'Pool2 TVL in Polygon and BSC LPs', - polygon: { - tvl: async ()=>({}), - pool2: tvl, - }, - bsc: { - tvl: async ()=>({}), - pool2: tvl, - }, -} - -async function tvl(api) { - const contract = api.chain === 'bsc' ? bscContract : polygonContract; - const tokens = await api.fetchList({ lengthAbi: 'poolLength', itemAbi:'function poolInfo(uint256) view returns (address stakingToken , uint256 stakingTokenTotalAmount , uint256 accWBANPerShare , uint32 lastRewardTime , uint16 allocPoint )' , target: contract}) - return sumTokens2({ api, tokens: tokens.map(i => i.stakingToken), owner: contract, resolveLP: true}) -} \ No newline at end of file diff --git a/projects/bancor/abi.json b/projects/bancor/abi.json deleted file mode 100644 index 021175289b3..00000000000 --- a/projects/bancor/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "abiContractRegistryAddressOf": "function addressOf(bytes32 _contractName) view returns (address)", - "abiConverterRegistryGetPools": "address[]:getLiquidityPools", - "abiRegistryGetConvertersBySmartTokens": "function getConvertersBySmartTokens(address[] _smartTokens) view returns (address[])", - "abiConverterConnectorTokens": "function connectorTokens(uint256) view returns (address)", - "liquidityPools": "address[]:liquidityPools" -} \ No newline at end of file diff --git a/projects/bancor/index.js b/projects/bancor/index.js deleted file mode 100644 index cf17b1bffc5..00000000000 --- a/projects/bancor/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const abis = { - "abiContractRegistryAddressOf": "function addressOf(bytes32 _contractName) view returns (address)", - "abiConverterRegistryGetPools": "address[]:getLiquidityPools", - "abiRegistryGetConvertersBySmartTokens": "function getConvertersBySmartTokens(address[] _smartTokens) view returns (address[])", - "abiConverterConnectorTokens": "function connectorTokens(uint256) view returns (address)", - "liquidityPools": "address[]:liquidityPools" -} - -const registryAddress = '0x52Ae12ABe5D8BD778BD5397F99cA900624CfADD4'; -const converterRegistryHex = '0x42616e636f72436f6e7665727465725265676973747279000000000000000000'; -const oldConverter = '0xf6E2D7F616B67E46D708e4410746E9AAb3a4C518' - -const tvl = async (api) => { - const block = await api.getBlock() - const isOldBlock = block && block < 9195218 - - const converterRegistryAddress = isOldBlock - ? oldConverter - : await api.call({ abi: abis.abiContractRegistryAddressOf, target: registryAddress, params: [converterRegistryHex] }); - - const poolAnchorAddresses = await api.call({ abi: abis.abiConverterRegistryGetPools, target: converterRegistryAddress }); - const converterAddresses = await api.call({ abi: abis.abiRegistryGetConvertersBySmartTokens, target: converterRegistryAddress, params: [poolAnchorAddresses] }); - const tokens = await api.fetchList({ itemAbi: abis.abiConverterConnectorTokens, itemCount: 2, calls: converterAddresses, groupedByInput: true }) - - const tokenList = [] - const ownerList = [] - - tokens.forEach((toks, i) => { - toks.concat(ADDRESSES.null).forEach(token => { - tokenList.push(token) - ownerList.push(converterAddresses[i]) - }) - }) - - return sumTokens2({ api, tokensAndOwners2: [tokenList, ownerList] }) -} - -module.exports = { - start: '2017-08-02', // 08/02/2017 @ 12:00am (UTC) - ethereum : { tvl }, - hallmarks: [ - [1588114800, "V2.0 Launch"], // 29/04/2020 @ 12:00am (UTC) - [1602457200, "V2.1 Launch"] // 12/10/2020 @ 12:00am (UTC) - ], -} \ No newline at end of file diff --git a/projects/bancor/v3.js b/projects/bancor/v3.js deleted file mode 100644 index b0ee44a90b0..00000000000 --- a/projects/bancor/v3.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const abi = require('./abi.json'); - -const bancor = '0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' - -async function addV3Balance(api) { - const masterVault = '0x649765821D9f64198c905eC0B2B037a4a52Bc373' - const networkSettings = '0xeEF417e1D5CC832e619ae18D2F140De2999dD4fB' - const tokens = await api.call({ abi: abi.liquidityPools, target: networkSettings}) - tokens.push(bancor) - return sumTokens2({ api, owner: masterVault, tokens }) -} - -module.exports = { - start: '2022-04-18', // 18/04/2022 @ 1:00pm (UTC) - methodology: `Counts the tokens in the Master Vault Contract.`, - ethereum: { - tvl: addV3Balance, - }, - hallmarks:[ - [1650322800, "V3 Beta"], // 19/04/2022 @ 12:00am (UTC) - [1652223600, "V3 Full Launch"] // 11/05/2022 @ 12:00am (UTC) - ], -}; diff --git a/projects/bank-ai/index.js b/projects/bank-ai/index.js deleted file mode 100644 index 4444b6cbd72..00000000000 --- a/projects/bank-ai/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking("0x804Bd4F1c9B5D7864d6F215644fb931349EEACA2", "0xe18ab3568fa19e0ed38bc1d974eddd501e61e12d") - } -} \ No newline at end of file diff --git a/projects/bank-of-chain/index.js b/projects/bank-of-chain/index.js deleted file mode 100644 index cce7ec3bdf1..00000000000 --- a/projects/bank-of-chain/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const RISK_OFF_USD_VAULT = "0x30D120f80D60E7b58CA9fFaf1aaB1815f000B7c3" -const RISK_OFF_ETH_VAULT = "0x8f0Cb368C63fbEDF7a90E43fE50F7eb8B9411746" - -async function tvl(api) { - const vaults = [RISK_OFF_USD_VAULT, RISK_OFF_ETH_VAULT] - - const trackedAssets = await api.multiCall({ calls: vaults, abi: 'address[]:getTrackedAssets' }) - - const tokensAndOwners = [] - vaults.forEach((vault, i) => { - const tokens = trackedAssets[i] - tokens.forEach(token => { - tokensAndOwners.push([token, vault]) - }) - }) - - return sumTokens2({ tokensAndOwners, api }) -} - -module.exports = { - doublecounted: true, - ethereum: { tvl } -} diff --git a/projects/banksyfarm/index.js b/projects/banksyfarm/index.js deleted file mode 100644 index 8f8a9b26ddd..00000000000 --- a/projects/banksyfarm/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const banksy = "0x9C26e24ac6f0EA783fF9CA2bf81543c67cf446d2"; -const masterchef = "0x64aB872a2937dE057F21c8e0596C0175FF2084d8" - -module.exports = { - ...masterChefExports(masterchef, "avax", banksy, false) -} \ No newline at end of file diff --git a/projects/banx/index.js b/projects/banx/index.js deleted file mode 100644 index f39198dd44f..00000000000 --- a/projects/banx/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { Program } = require('@coral-xyz/anchor'); -const { getConfig } = require('../helper/cache') -const { bs58 } = require('@project-serum/anchor/dist/cjs/utils/bytes'); -const { getProvider } = require('../helper/solana') - -let data - -async function getData() { - if (!data) data = getAllData() - return data - - async function getAllData() { - const provider = getProvider() - const idl = await getConfig('banx-idl', 'https://api.banx.gg/idl') - const program = new Program(idl, provider) - - const bondTradeTxnOffset = 8; - const userVaultOffset = 8; - const [ - bondTradeTxn, - userVaults, - ] = await Promise.all([ - getFilteredAccounts(program, 'bondTradeTransactionV3', bondTradeTxnOffset, [2, 6, 9, 13]), - getFilteredAccounts(program, 'userVault', userVaultOffset, [1]), - ]); - - const { escrowSum, escrowSumUsdc } = userVaults.reduce(({ escrowSum, escrowSumUsdc }, userVault) => { - if (userVault.account.lendingTokenType.usdc) { - return { escrowSum, escrowSumUsdc: escrowSumUsdc + (+userVault.account.offerLiquidityAmount) } - } - return { escrowSum: escrowSum + (+userVault.account.offerLiquidityAmount), escrowSumUsdc } - }, { escrowSum: 0, escrowSumUsdc: 0 }) - - const { borrowedSum, borrowedSumUsdc } = bondTradeTxn.reduce(({ borrowedSum, borrowedSumUsdc }, bondTxn) => { - if (bondTxn.account.lendingToken.usdc) { - return { borrowedSumUsdc: borrowedSumUsdc + (+bondTxn.account.solAmount), borrowedSum }; - } - return { borrowedSum: borrowedSum + (+bondTxn.account.solAmount), borrowedSumUsdc }; - }, { borrowedSum: 0, borrowedSumUsdc: 0 }); - - - return { tvl: escrowSum, tvlUsdc: escrowSumUsdc, borrowed: borrowedSum, borrowedUsdc: borrowedSumUsdc } - } -} - -const tvl = async () => { - const { tvl, tvlUsdc } = await getData(); - return { ['solana:' + ADDRESSES.solana.SOL]: tvl, ['solana:' + ADDRESSES.solana.USDC]: tvlUsdc } -}; - -const borrowed = async () => { - const { borrowed, borrowedUsdc } = await getData(); - return { ['solana:' + ADDRESSES.solana.SOL]: borrowed, ['solana:' + ADDRESSES.solana.USDC]: borrowedUsdc } -}; - -const getFilteredAccounts = async (program, accountName, offset, indexes) => { - return ( - await Promise.all( - indexes.map((i) => - program.account[accountName].all([ - { - memcmp: { - offset: offset, // number of bytes - bytes: bs58.encode(Buffer.from([i])), // PerpetualActive - }, - }, - ]), - ), - ) - ).flat(); -}; - - -module.exports = { - timetravel: false, - solana: { - tvl, - borrowed, - } -}; diff --git a/projects/bao-baskets/index.js b/projects/bao-baskets/index.js deleted file mode 100644 index 3c7df95e49c..00000000000 --- a/projects/bao-baskets/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokensExport, } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking.js"); - -// veBao -const veBaoAddress = "0x8Bf70DFE40F07a5ab715F7e888478d9D3680a2B6"; -const baoAddress = "0xCe391315b414D4c7555956120461D21808A69F3A"; - -const basketTvl = async (api) => { - const baskets = [ - "0x5ee08f40b637417bcC9d2C51B62F4820ec9cF5D8", // bSTBL - ] - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: baskets}) - const amounts = await api.multiCall({ abi: 'function calcTokensForAmount(uint256 _amount) view returns (address[] tokens, uint256[] amounts)', calls: baskets.map((b, i) => ({ target: b, params: supplies[i]}))}) - const balances = {} - amounts.forEach(({ tokens, amounts}) => { - tokens.forEach((t, i) => sdk.util.sumSingleBalance(balances,t,amounts[i], api.chain)) - }) - return balances -} - -module.exports = { - start: '2022-01-01', // Jan 1 2022 00:00:00 GMT+0000 - ethereum: { - tvl: basketTvl, - pool2: sumTokensExport({ - tokensAndOwners: [ - ['0x8d7443530d6B03c35C9291F9E43b1D18B9cFa084', '0xe7f3a90AEe824a55B0F8969b6e29698966EE0191'], // Uni v2 gauge - ['0x7657Ceb382013f1Ce9Ac7b08Dd8db4F28D3a7538', '0x675F82DF9e2fC99F8E18D0134eDA68F9232c0Af9'], // curve bSTBL-DAI - ['0x0FaFaFD3C393ead5F5129cFC7e0E12367088c473', '0x0a39eE038AcA8363EDB6876d586c5c7B9336a562'], // curve baoUSD-3crv - ] - }), - staking: staking(veBaoAddress, baoAddress) - }, - hallmarks: [ - [1668898307, "baoV2 deployment"], - [1672272000, "baoV2 emission start"] - ] -}; \ No newline at end of file diff --git a/projects/bao-markets/index.js b/projects/bao-markets/index.js deleted file mode 100644 index 8d30950c58f..00000000000 --- a/projects/bao-markets/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { nullAddress, } = require("../helper/unwrapLPs"); -const { compoundExports } = require("../helper/compound"); - -// BaoMarkets -const comptroller = "0x0Be1fdC1E87127c4fe7C05bAE6437e3cf90Bf8d8"; - -const compoundTvl = compoundExports(comptroller, '0xf635fdf9b36b557bd281aa02fdfaebec04cd084a', nullAddress, { blacklistedTokens: ['0xe7a52262c1934951207c5fc7a944a82d283c83e5', '0xc0601094C0C88264Ba285fEf0a1b00eF13e79347', ]}) - -module.exports = { - ethereum: compoundTvl -}; \ No newline at end of file diff --git a/projects/bao-usd/index.js b/projects/bao-usd/index.js deleted file mode 100644 index e0a79811bcf..00000000000 --- a/projects/bao-usd/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokensAndOwners: [[ADDRESSES.ethereum.LUSD, '0x93C825F8B1F420fB07412Bc4E588b59f4f340384'], [ADDRESSES.ethereum.WETH, '0xC137fa40Ff0cb53ff157e1dCafc7262877069219']], }), - } -}; \ No newline at end of file diff --git a/projects/bao/abi.json b/projects/bao/abi.json deleted file mode 100644 index 78ec70a66f9..00000000000 --- a/projects/bao/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accBaoPerShare)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/bao/index.js b/projects/bao/index.js deleted file mode 100644 index a8e39d745db..00000000000 --- a/projects/bao/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens, unwrapLPsAuto, } = require('../helper/unwrapLPs') -const abi = require('./abi.json') -const erc20 = require('./../helper/abis/erc20.json') - -const masterChef = '0xBD530a1c060DC600b951f16dc656E4EA451d1A2D' -const xdaiMasterChef = '0xf712a82DD8e2Ac923299193e9d6dAEda2d5a32fd' - -function chainTvl(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - return getTvl(chain, chainBlocks[chain], ethBlock) - } -} - -async function getTvl(chain, block, ethBlock) { - const owner = chain === 'xdai' ? xdaiMasterChef : masterChef - const { output: poolLength } = await sdk.api.abi.call({ - target: owner, - abi: abi.poolLength, - chain, block, - }); - const calls = [] - const toa = [] - for (let i = 0; i < poolLength; i++) - calls.push({ params: i }) - let { output: tokens } = await sdk.api.abi.multiCall({ - target: owner, - abi: abi.poolInfo, - calls, - chain, block, - }) - tokens.forEach(t => toa.push([t.output[0], owner])) - if (chain !== 'xdai') { - return sumTokens({}, toa, block, chain) - } - - const balances = {} - await sumTokens(balances, toa, block, chain) - const tokenMapping = {} - const tokenNameMapping = {} - Object.keys(balances).forEach(i => { - if (!i.startsWith('xdai')) return; // we want to resolve LP tokens only, ignore all others - const bareToken = stripTokenHeader(i).toLowerCase() - tokenMapping[bareToken] = i - }) - const { output: tokenNames } = await sdk.api.abi.multiCall({ - abi: erc20.name, - calls: Object.keys(tokenMapping).map(i => ({ target: i })), - chain, block, - }) - - tokenNames.forEach(i => tokenNameMapping[i.input.target] = i.output) - const ethBalances = {} - - // move bridged sushi LP balances to 'ethBalances' - Object.entries(balances).forEach(([token, balance]) => { - const bareToken = stripTokenHeader(token).toLowerCase() - if (!/Token on/.test(tokenNameMapping[bareToken] || '')) return; - delete balances[token] - sdk.util.sumSingleBalance(ethBalances, bareToken, balance) - }) - - // resolve LPs - if (chain === 'xdai') - await Promise.all([ - unwrapLPsAuto({ balances, block, chain, }), - // disabling resolving ETH balance resolving since we dont know how to resolve bridged LP address - // unwrapLPsAuto({ balances: ethBalances, block: ethBlock, chain: 'ethereum', }), - ]) - - // merge balances - // Object.entries(ethBalances).forEach(([token, balance]) => { - // sdk.util.sumSingleBalance(balances, token, balance) - // }) - - return balances -} - -module.exports = { - ethereum: { - tvl: chainTvl('ethereum') - }, - xdai: { - tvl: chainTvl('xdai') - }, -} - - -function stripTokenHeader(token) { - return token.indexOf(':') > -1 ? token.split(':')[1] : token -} \ No newline at end of file diff --git a/projects/baoswap/index.js b/projects/baoswap/index.js deleted file mode 100644 index cf0d6f5724f..00000000000 --- a/projects/baoswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('xdai', '0x45DE240fbE2077dd3e711299538A09854FAE9c9b', true) \ No newline at end of file diff --git a/projects/baptswap-v2-1/index.js b/projects/baptswap-v2-1/index.js deleted file mode 100644 index ee223ff09de..00000000000 --- a/projects/baptswap-v2-1/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -// fetch data from BaptSwap resource account -module.exports = dexExport({ - account: '0xe52923154e25c258d9befb0237a30b4001c63dc3bb73011c29cb3739befffcef', - poolStr: 'swap_v2dot1::TokenPairMetadata', - token0Reserve: i => i.data.balance_x.value, - token1Reserve: i => i.data.balance_y.value, -}) \ No newline at end of file diff --git a/projects/baptswap-v2/index.js b/projects/baptswap-v2/index.js deleted file mode 100644 index d43f598c4b7..00000000000 --- a/projects/baptswap-v2/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -// fetch data from BaptSwap resource account -module.exports = dexExport({ - account: '0x6ee5ff12d9af89de4cb9f127bc4c484d26acda56c03536b5e3792eac94da0a36', - poolStr: 'swap_v2::TokenPairMetadata', - token0Reserve: i => i.data.balance_x.value, - token1Reserve: i => i.data.balance_y.value, -}) \ No newline at end of file diff --git a/projects/baptswap/index.js b/projects/baptswap/index.js deleted file mode 100644 index 112e1562a59..00000000000 --- a/projects/baptswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -// fetch data from BaptSwap resource account -module.exports = dexExport({ - account: '0x2ad8f7e64c7bffcfe94d7dea84c79380942c30e13f1b12c7a89e98df91d0599b', - poolStr: 'swap::TokenPairMetadata', - token0Reserve: i => i.data.balance_x.value, - token1Reserve: i => i.data.balance_y.value, -}) \ No newline at end of file diff --git a/projects/barnbridge/index.js b/projects/barnbridge/index.js deleted file mode 100644 index 20a1724817b..00000000000 --- a/projects/barnbridge/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { getUniqueAddresses } = require('../helper/utils') - -const config = { - ethereum: { factory: '0xc67cb09d08521cD1dE6BAAC46824261eb1dB8800', fromBlock: 16828337, }, - arbitrum: { factory: '0xf878a060D4d51704B14e8f68B51185bF5DbFE3A1', fromBlock: 69857947, }, - optimism: { factory: '0x45c158E0ee76c76E525BaB941991268249e95331', fromBlock: 80641123, }, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x4f2ce4e40f623ca765fc0167a25cb7842ceaafb8d82d3dec26ca0d0e0d2d4896'], - eventAbi: 'event PoolCreated(address indexed controller, address provider)', - onlyArgs: true, - fromBlock, - }) - const providers = getUniqueAddresses(logs.map(i => i.provider)) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: providers}) - const balances = await api.multiCall({ abi: 'uint256:underlyingBalance', calls: providers}) - api.addTokens(tokens, balances) - return api.getBalances() - } - } -}) diff --git a/projects/barnswap/index.js b/projects/barnswap/index.js deleted file mode 100644 index 2b7ec2fd5fb..00000000000 --- a/projects/barnswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - deadFrom: '2023-09-30', - misrepresentedTokens: true, - muuchain: { - // tvl: getUniTVL({ factory: '0x058f3f7857d47326021451b6b67c3e92838a6edc', useDefaultCoreAssets: true, }) - tvl: () => ({}) - }, -}; - diff --git a/projects/baryon/index.js b/projects/baryon/index.js deleted file mode 100644 index 0b123a3f365..00000000000 --- a/projects/baryon/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { stakings } = require('../helper/staking'); -const { getUniTVL } = require('../helper/unknownTokens') -const { getConfig } = require('../helper/cache') - -async function fetchData(chain) { - const data = await getConfig('baryon/staking', 'https://rapid.coin98.com/baryon-stake.json') - - return data[chain] -} - -const config = { - bitkub: { factory: '0xf7eEe3A8363731C611A24CdDfCBcaDE9C153Cfe8', key: 'bitkub' }, - ancient8: { factory: '0xAE12C5930881c53715B369ceC7606B70d8EB229f', key: 'ancient8Mainnet' }, - tomochain: { factory: '0xFe48A2E66EE2f90334d3565E56E0c9d0081447e8', key: 'tomo' }, - bsc: { factory: '0x03879e2a3944fd601e7638dfcbc9253fb793b599', key: 'binanceSmart' }, -} - -Object.keys(config).forEach(chain => { - const { factory, key } = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), - staking: async (...args) => { - let { stakeContract, lpToken } = await fetchData(key) - - if (chain === 'tomochain') { - // this is not staking contract on tomochain - stakeContract = stakeContract.filter(item => String(item).toLowerCase() !== '0x0afdbe5989cab06e66244cc2583f0caeecb6ea8e') - } - - return stakings(stakeContract, lpToken)(...args) - } - } -}) - -module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/bas3d/abi.json b/projects/bas3d/abi.json deleted file mode 100644 index 184e0f6aa23..00000000000 --- a/projects/bas3d/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "LPtoken": "address:LPtoken", - "balanceLPinSystem": "uint256:balanceLPinSystem", - "stakingToken": "address:stakingToken" -} \ No newline at end of file diff --git a/projects/bas3d/index.js b/projects/bas3d/index.js deleted file mode 100644 index 87a1de65699..00000000000 --- a/projects/bas3d/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokensExport, sumUnknownTokens } = require('../helper/unknownTokens') - -const coreRewards = "0x3a7D3D2b49CAA7EF2C116C64711265eab0C755c0"; -const ethRewards = "0x5EeA01cDCAF548e639B9B5d66FBcbeD2a2a12beD"; -const BAS3D = "0xC4743d049891ea4333F8b559D09a93c3511f0762"; - -const vaults = [ - //BaseSwap.fi ETH/USDC - "0x2BF271D886febBc072087cDCB014Ae0dE8897c76", - - //BaseSwap.fi BSWAP/ETH - "0x106FB0C0c2e7249B36af8f0EdcBcc85CA82031Ea", - - //BaseSwap.fi DAI/USDC - "0x8Fff31D7601A279F7D83b38f83a0bf62c384Eb4A", -]; - -/*** Staking of native token BAS3D and BAS3D/ETH LP TVL Portion ***/ -const pool2 = async (api) => { - const staking_lpToken = await api.call({ abi: abi.stakingToken, target: coreRewards, }) - return sumUnknownTokens({ api, tokens: [staking_lpToken], owners: [coreRewards, ethRewards], useDefaultCoreAssets: true }) -}; - - -/*** vaults TVL portion ***/ -const bas3dTVL = async (api) => { - const tokens = await api.multiCall({ abi: abi.LPtoken, calls: vaults}) - const bals = await api.multiCall({ abi: abi.balanceLPinSystem, calls: vaults}) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true, }) -}; - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - base: { - tvl: bas3dTVL, - staking: sumTokensExport({ owners: [coreRewards, ethRewards], tokens: [BAS3D], useDefaultCoreAssets: true, lps: ['0xfD77Af39aA9802fCc4c7933DA9754D9edB14afC0'] }), - pool2, - }, - methodology: `TVL is counted from the deposits into our yield farm and vaults`, -}; diff --git a/projects/base/index.js b/projects/base/index.js deleted file mode 100644 index 8758a738d6b..00000000000 --- a/projects/base/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", - "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/base3d/index.js b/projects/base3d/index.js deleted file mode 100644 index aa645787e42..00000000000 --- a/projects/base3d/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const BASE3D_MAIN_CONTRACT = '0xa73fab6e612aaf9125bf83a683aadcdd6511d3f0'; - -async function tvl(api) { - return api.sumTokens({ owner: BASE3D_MAIN_CONTRACT, tokens: [ADDRESSES.null] }); -} - -module.exports = { - base: { - tvl, - }, - methodology: 'Calculates TVL by checking the ETH balance of the main contract via the totalEthereumBalance function.', -}; diff --git a/projects/based-finance/basedV2.js b/projects/based-finance/basedV2.js deleted file mode 100644 index 87b3936b1ed..00000000000 --- a/projects/based-finance/basedV2.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); -const { stakings } = require("../helper/staking"); -const chain = 'fantom' - -//BASED V2 -const smelt = "0x141FaA507855E56396EAdBD25EC82656755CD61e"; -const BoardroomV2 = "0x8ff9eFB99D522fAC6a21363b7Ca54d25477637F6"; -const usdc = ADDRESSES.fantom.USDC; -const wftm = ADDRESSES.fantom.WFTM; -const treasuryAddress = '0x0A10daD90b9C6FB8B87BFf3857A4B012890C53A5'; - -//BASED V2 Twisted Nodes -const shortNodes = "0xAEbfF260074782a3DfD8981352b44767A05fa2eD"; -const mediumNodes = "0x525ca3877a78c6AE12292D0a55765775e3943379"; -const longNodes = "0x62A2Ff4BcCC5dD5316C358cDF079EC5e5c0851fe"; - -async function treasury(_, _b, { fantom: block }) { - return sumTokens2({ owner: treasuryAddress, tokens: [ - usdc, - wftm, - nullAddress, - ], block, chain, }) -} - -module.exports = { - fantom: { - tvl: async () => ({}), - treasury, - staking: stakings([BoardroomV2, shortNodes, mediumNodes, longNodes, ], smelt), - }, -}; \ No newline at end of file diff --git a/projects/based-finance/index.js b/projects/based-finance/index.js deleted file mode 100644 index e0b62d47d0e..00000000000 --- a/projects/based-finance/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); -const { getUniTVL } = require("../helper/unknownTokens") -const chain = 'fantom' - -const acropolisAddress = "0xe5009dd5912a68b0d7c6f874cd0b4492c9f0e5cd"; -const treasuryAddress = "0xa0e0f462d66de459711bc721ce1fdcc3d9405831"; - -// Token Addresses -const basedTokenAddress = "0x8d7d3409881b51466b483b11ea1b8a03cded89ae"; -const bshareTokenAddress = "0x49c290ff692149a4e16611c694fded42c954ab7a"; -const usdcAddress = ADDRESSES.fantom.USDC; -const usdtAddress = ADDRESSES.fantom.fUSDT; -const maiAddress = "0xfB98B335551a418cD0737375a2ea0ded62Ea213b"; -const wftmAddress = ADDRESSES.fantom.WFTM; - -const treasuryTokens = [ - usdcAddress, - usdtAddress, - maiAddress, - wftmAddress, -]; - -async function treasury(api) { - return sumTokens2({ owner: treasuryAddress, tokens: treasuryTokens, api }) -} - -module.exports = { - methodology: "Pool2 deposits consist of BASED/FTM LP, BSHARE/FTM LP, BBOND single stake pool while the staking TVL consists of the BSHARES tokens locked within the Acropolis contract. Treasury consists of accumulated revenue from native and non-native assets", - fantom: { - tvl: getUniTVL({ - factory: '0x407C47E3FDB7952Ee53aa232B5f28566A024A759', - useDefaultCoreAssets: true, - }), - staking: staking(acropolisAddress, bshareTokenAddress), - treasury - }, -}; - -module.exports.hallmarks = [ - ['2022-09-30', 'Added Based V2'], -] \ No newline at end of file diff --git a/projects/basedai/index.js b/projects/basedai/index.js deleted file mode 100644 index fbdcdbf57a3..00000000000 --- a/projects/basedai/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('../helper/staking'); - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking( - "0xa6b816010ab51e088c4f19c71aba87e54b422e14", - "0xA9E8aCf069C58aEc8825542845Fd754e41a9489A" - ) - }, - methodology: "Currently, the TVL is considered as the amount of Pepecoin tokens held in the farming contract at '0xa6b816010ab51e088c4f19c71aba87e54b422e14'." -}; diff --git a/projects/basedfarm/index.js b/projects/basedfarm/index.js deleted file mode 100644 index 190371b908b..00000000000 --- a/projects/basedfarm/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens'); - -const GENESIS_REWARD_POOL = "0x4F4014EC1685699290A311E0A159E1E39914853F"; -const poolInfoAbi = "function poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 lastRewardTime, uint256 accBasedPerShare, bool isStarted)"; - -async function tvl(api) { - const tokens = [] - let gotError = false - let i = 0 - do { - try { - const poolInfo = await api.call({ abi: poolInfoAbi, target: GENESIS_REWARD_POOL, params: i }) - tokens.push(poolInfo.token) - } catch (e) { - gotError = true - } - i++ - } while (!gotError) - return api.sumTokens({ owner: GENESIS_REWARD_POOL, tokens }) -} - -async function pool2(api) { - const pools = [ - { // BasedRewardPool - 'pool2Address': '0x5F45e48F9C053286cE9Ca08Db897f8b7eb3f7992', - 'stakingContract': '0x8A75C6EdD19d9a72b31774F1EE2BC45663d30733' - }, - { // bShareRewardPool - 'pool2Address': '0xbE23ce31C665225E27521D3d7DB9Bb7E5A76aeb8', - 'stakingContract': '0x227F33775f1320959bAA17280310Fab9ACc4Aa6C' - } - ]; - const gaugeBal = await api.call({ target: '0xa7919a78183d4b3980c01dfdacd0158772eb5632', abi: 'erc20:balanceOf', params: '0x227F33775f1320959bAA17280310Fab9ACc4Aa6C'}) - api.add('0xbE23ce31C665225E27521D3d7DB9Bb7E5A76aeb8', gaugeBal) - - const tokensAndOwners = pools.map(i => ([i.pool2Address, i.stakingContract])); - - return sumUnknownTokens({ tokensAndOwners, useDefaultCoreAssets: true, api, resolveLP: true, }); -} - -module.exports = { - methodology: 'TVL is based on value of the single-sided staked tokens inside of the Genesis reward pool. Pool2 TVL represents the value of specific LP tokens staked in designated pool2 staking contracts(BasedRewardPool & bShareRewardPool)', - base: { tvl, pool2 }, -}; diff --git a/projects/basefinance-v1/index.js b/projects/basefinance-v1/index.js deleted file mode 100644 index 1e48fbdd436..00000000000 --- a/projects/basefinance-v1/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const factory = '0x99fbA55CAd2e0CF3750E3f48F6b8a87e6CdBf8c0' // v2 factory address - -module.exports = uniTvlExport('base', factory) \ No newline at end of file diff --git a/projects/baseline/index.js b/projects/baseline/index.js deleted file mode 100644 index 4023b2adf9d..00000000000 --- a/projects/baseline/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const BASELINE_CONTRACT = "0x14eB8d9b6e19842B5930030B18c50B0391561f27"; -const BASELINE_CONTRACT_V2 = "0x1a49351bdB4BE48C0009b661765D01ed58E8C2d8"; -const CREDT_CONTRACT = "0x158d9270F7931d0eB48Efd72E62c0E9fFfE0E67b"; - -async function tvl(api) { - //floor, anchor, discovery - const positions = [0, 1, 2]; - - //return position info from baseline contract - const position = await api.multiCall({ target: BASELINE_CONTRACT, calls: positions, abi: abi.getPosition, }); - //return managed positions from baseline contract - const baselinePositionBalances = await api.multiCall({ target: BASELINE_CONTRACT, calls: position.map(i => ({ params: [i], })), abi: abi.getBalancesForPosition, }); - //sum the reserve balances - api.addGasToken(baselinePositionBalances.map(i => i.reserves)); - - //baseline V2 Positions - const v2Positions = await api.multiCall({ target: BASELINE_CONTRACT_V2, calls: positions, abi: v2Abi.getPosition }); - //account for collateral now locked in protocol from borrowing activity - - api.addGasToken(v2Positions.map(i => i.reserves)); -} - -async function borrowed(api) { - const lentReserves = await api.call({ abi: abi.totalLentReserves, target: BASELINE_CONTRACT, }); - const lentReservesV2 = await api.call({ abi: credtAbi.totalCreditIssues, target: CREDT_CONTRACT }); - api.addGasToken(lentReserves) - api.addGasToken(lentReservesV2) -} - -async function staking(api) { - const v2CollateralLocked = await api.call({ target: CREDT_CONTRACT, abi: credtAbi.totalCollateralized }); - api.add(BASELINE_CONTRACT_V2, v2CollateralLocked); // collateral deposited into protocol by EOA in exchange for a loan -} - -module.exports = { - hallmarks: [ - [1714251306, "self-whitehack"] - ], - doublecounted: true, - blast: { - tvl, - borrowed, - staking, - }, -}; - -const abi = { - totalLentReserves: "function totalLentReserves() view returns (uint256)", - getPosition: - "function getPosition(uint8) view returns (tuple(uint8, int24, int24))", - getBalancesForPosition: - "function getBalancesForPosition(tuple(uint8,int24,int24)) view returns (uint256 reserves, uint256 bAsset)", -}; - -const v2Abi = { - getPosition: "function getPosition(uint8) view returns (tuple(uint128 liquidity, uint160 sqrtPriceL, uint160 sqrtPriceU, uint256 bAssets, uint256 reserves, uint256 capacity))", -} - -const credtAbi = { - totalCreditIssues: "function totalCreditIssued() view returns (uint256)", - totalCollateralized: "function totalCollateralized() view returns (uint256)", -} diff --git a/projects/basemax-finance/index.js b/projects/basemax-finance/index.js deleted file mode 100644 index 72d85d53fb8..00000000000 --- a/projects/basemax-finance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unknownTokens"); -const LP = '0xd2eb1de935fe66501aece023b0437fa7b9c40a25' - -module.exports = { - methodology: "Counts USDC deposited to trade and to mint BLP. Staking counts BSM and esBSM deposited to earn esBSM", - base: { - tvl: staking("0xEDFFF5d0C68cFBd44FA12659Fd9AD55F04748874", ADDRESSES.base.USDbC), - pool2: sumTokensExport({ owner: "0xe2cb504d51fd16d8bdf533c58553ed3f4f755f00", tokens: [LP], useDefaultCoreAssets: true, }), - staking: sumTokensExport({ owner: "0x957e6844aa7e963dc26447646be268932b785200", tokens: ['0xc5dc1b9413c47089641d811b6336c0f2fe440883'], useDefaultCoreAssets: true, lps: [LP] }), - } -}; diff --git a/projects/baseprotocol/index.js b/projects/baseprotocol/index.js deleted file mode 100644 index d82bf5792b0..00000000000 --- a/projects/baseprotocol/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const stakingContracts = [ - "0x15AE3846d7183Ba27Ad5772FeC55aeeFdd365975", - "0x6f29466949de9E9Fb906193b97916739Fa982cB5", - "0x1EF25079FB3F74856A31EF45dD925D203B168721", - "0x32260d3574E1c698Eb728Ac1E69DCf33f581C25b", - "0x84f0b803c7EA123fd1eE3e7Dd7aA6552f65dAc88", -]; -const BASE = "0x07150e919b4de5fd6a63de1f9384828396f25fdc"; - -const stakingLpContracts = [ - "0x84f0b803c7EA123fd1eE3e7Dd7aA6552f65dAc88", - "0xef73903956E599611bF36aC1F209045544AAD423", - "0x6D075dF51cdF493FB3AA09f33166a9815339b206", - "0x3fa7D6dC3836B03d8766BBf5054ac0C2AcaB3Ae9", -]; -const WETH_BASE_UNIV2 = "0xdE5b7Ff5b10CC5F8c95A2e2B643e3aBf5179C987"; - - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(stakingContracts, BASE), - pool2: stakings(stakingLpContracts, [WETH_BASE_UNIV2]), - tvl: async() => ({}), - }, - methodology: "Counts liquidty on the staking and pool2s only", -}; diff --git a/projects/baseswap/index.js b/projects/baseswap/index.js deleted file mode 100644 index aad434ca440..00000000000 --- a/projects/baseswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const BSWAP = "0x78a087d713Be963Bf307b18F2Ff8122EF9A63ae9"; -const FACTORY = "0xFDa619b6d20975be80A10332cD39b9a4b0FAa8BB" - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, permitFailure: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs. We also have our native token $BSWAP staking.`, - base: { - tvl: dexTVL, - } -}; diff --git a/projects/basetasm/abi.json b/projects/basetasm/abi.json deleted file mode 100644 index 1593bc9ad1a..00000000000 --- a/projects/basetasm/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "bank": { - "usableEthBalance": "uint256:usableCollateralBalance" - }, - "multiFeeDistribution": { - "totalSupply": "uint256:totalSupply" - } -} \ No newline at end of file diff --git a/projects/basetasm/index.js b/projects/basetasm/index.js deleted file mode 100644 index 99f7277a05d..00000000000 --- a/projects/basetasm/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const Abis = require("./abi.json"); -const { sumTokensExport, sumUnknownTokens, } = require('../helper/unknownTokens') - -const Contracts = { - base: { - weth: ADDRESSES.base.WETH, - xeth: "0x076944DD8Fb44DDd68231Ad41F82A603a9F7dcB8", - elz: "0x1fBCCF8AfE9e58052F64E2E6790a65D2eb3f4765", - bank: "0x4b9253B45F90b1a6766312cC0A3560c065496a35", - multiFeeDistribution: "0xB89c125b433b854390Fddb22E8a1bDA4281e2946", - chef: "0x373B887bfeE09F5fA721D5b1e8abfaFe067f41BC", - lps: [ - "0x07641fd10Bf3Efcd88C346967b4A0274ed75Dadf", // ELZ_ETH_LP - "0x3602F60FFDE7A18C6C93F813492888F05DF7de7A", // XETH_ETH_LP - "0xA9D108B5B56AF60d72cA14bBc34a068e42c77ccB", // ELZ_XETH_LP - ], - }, -}; - -async function calcBaseStakingTvl(api) { - const baseStakingData = await api.call({ target: Contracts.base.multiFeeDistribution, abi: Abis.multiFeeDistribution.totalSupply, }); - api.add(Contracts.base.elz, baseStakingData) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: Contracts.base.lps, }) -} - -module.exports = { - base: { - tvl: - sumTokensExport({ - owner: Contracts.base.bank, - tokens: [Contracts.base.weth] - }), - pool2: - sumTokensExport({ - owner: Contracts.base.chef, - tokens: Contracts.base.lps, - useDefaultCoreAssets: true, - }), - staking: calcBaseStakingTvl, - }, -}; \ No newline at end of file diff --git a/projects/basetrade/index.js b/projects/basetrade/index.js deleted file mode 100644 index 97dd0a81817..00000000000 --- a/projects/basetrade/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - base:{ - tvl: gmxExports({ vault: '0x3a384968A2fea56d0394F9B349ab8D0c839ddc04', }) - }, -}; \ No newline at end of file diff --git a/projects/basex/index.js b/projects/basex/index.js deleted file mode 100644 index 61a703d274a..00000000000 --- a/projects/basex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = { - methodology: 'TVL accounts for the liquidity on all AMM pools taken from the factory contract', - ...uniV3Export({ - base: { factory: '0x38015d05f4fec8afe15d7cc0386a126574e8077b', fromBlock: 3152527 }, - }) -} diff --git a/projects/basexfi/index.js b/projects/basexfi/index.js deleted file mode 100644 index 2ee560a414f..00000000000 --- a/projects/basexfi/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = { - methodology: 'TVL accounts for the liquidity on all AMM pools taken from the factory contract', - ...uniV3Export({ - base: { factory: '0xdC323d16C451819890805737997F4Ede96b95e3e', fromBlock: 4159800 }, - }) -} \ No newline at end of file diff --git a/projects/baseyield/index.js b/projects/baseyield/index.js deleted file mode 100644 index e4205a2d144..00000000000 --- a/projects/baseyield/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const MiniChefV2 = "0x3db771B933aC5d824a2411866F1a395DbB026528"; - -const abis = { - lpToken: 'function lpToken(uint256) public view returns (address)', - poolLength: 'function poolLength() public view returns (uint256)', -} - -module.exports = { - base: { - tvl: async (api) => { - const vaults = await api.fetchList({ target: MiniChefV2, lengthAbi: abis.poolLength, itemAbi: abis.lpToken, }) - const tokens = await api.multiCall({ abi: 'address:want', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: vaults }) - tokens.forEach((token, i) => { - if (token.toLowerCase() === '0xf45116c2e5be608152ea8a6a73917dfe75b707dc') return; - api.add(token, bals[i]) - }) - return sumTokens2({ api, resolveLP: true }) - } - } -} diff --git a/projects/basic/index.js b/projects/basic/index.js deleted file mode 100644 index b542170fe78..00000000000 --- a/projects/basic/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - iotex: compoundExports2({ - cether: '0x83C51de03f03C5E23f02F674dbD2032e164112Fc', - comptroller: '0x47D7B83947Aa12fEb95f5f55527Dc9B32E4ec009', - cetheEquivalent: ADDRESSES.iotex.WIOTX - }) -}; \ No newline at end of file diff --git a/projects/basilisk/index.js b/projects/basilisk/index.js deleted file mode 100644 index 37f4698f7fd..00000000000 --- a/projects/basilisk/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - era: compoundExports2({ - comptroller: '0x4085f99720e699106bc483dAb6CAED171EdA8D15', - cether: '0x1e8F1099a3fe6D2c1A960528394F4fEB8f8A288D', - }) -}; \ No newline at end of file diff --git a/projects/basin/index.js b/projects/basin/index.js deleted file mode 100644 index 7fb35d02800..00000000000 --- a/projects/basin/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') -const chains = { - ethereum: { - startBlock: 17977905, - subgraphUrl: "https://graph.bean.money/basin_eth" - }, - arbitrum: { - startBlock: 261772155, - subgraphUrl: "https://graph.bean.money/basin" - } -} - -async function tvl(api) { - const { subgraphUrl } = chains[api.chain]; - const wells = await cachedGraphQuery('basin/' + api.chain, subgraphUrl, `{ - wells { - id tokens { id } - } - }`) - const ownerTokens = wells.wells.map(well => [well.tokens.map(t => t.id), well.id]); - return api.sumTokens({ ownerTokens }); -} - -module.exports = { - methodology: "Counts the value of token reserves inside all deployed Wells.", - start: '2023-08-23', - ethereum: { tvl }, - arbitrum: { tvl } -}; diff --git a/projects/basinfinance/index.js b/projects/basinfinance/index.js deleted file mode 100644 index a5abc1cce87..00000000000 --- a/projects/basinfinance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const { mergeExports } = require('../helper/utils') -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = mergeExports([{ - base: compoundExports2({ comptroller: '0xbA47ccbE10B6addD8385748311a4a9478e74F38D', cether: '0x540EE31b264e8823e01795AA424fE89554672dc1', blacklistedTokens: ['0x5c185329bc7720aebd804357043121d26036d1b3'] }), -}, { - base: { - tvl: sumTokensExport({ owner: '0x594368C1A1A733581A546a4ac46bF1962547f427', tokens: [ADDRESSES.base.DAI],}), - pool2: sumTokensExport({ owner: '0x23014067c5bab5f89d3f97727c06afbffb4867c8', tokens: ['0x6eda0a4e05ff50594e53dbf179793cadd03689e5'], resolveLP: true, }), - staking: sumTokensExport({ owner: '0x0fb339fe0ad874758e2e9c9d679772c61bd6804b', tokens: ['0x4788de271F50EA6f5D5D2a5072B8D3C61d650326'],}), - } -}]) \ No newline at end of file diff --git a/projects/basis-cash.js b/projects/basis-cash.js deleted file mode 100644 index b7c7bfaf0c0..00000000000 --- a/projects/basis-cash.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') - -async function tvl(api) { - const toa = [ - [ADDRESSES.ethereum.DAI, '0xEBd12620E29Dc6c452dB7B96E1F190F3Ee02BDE8'], - [ADDRESSES.ethereum.sUSD, '0xdc42a21e38c3b8028b01a6b00d8dbc648f93305c'], - [ADDRESSES.ethereum.USDT, '0x2833bdc5B31269D356BDf92d0fD8f3674E877E44'], - [ADDRESSES.ethereum.USDC, '0x51882184b7F9BEEd6Db9c617846140DA1d429fD4'], - ['0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8', '0xC462d8ee54953E7d7bF276612b75387Ea114c3bf'], - ] - - return api.sumTokens({ tokensAndOwners: toa }) -} - - -module.exports = { - ethereum: { - tvl - } -} diff --git a/projects/basis-market/index.js b/projects/basis-market/index.js deleted file mode 100644 index c7846afa962..00000000000 --- a/projects/basis-market/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const {sumTokens2} = require('../helper/solana') - -const basis_staking = "3sBX8hj4URsiBCSRV26fEHkake295fQnM44EYKKsSs51"; - -async function stakingTVL(){ - return sumTokens2({tokenAccounts: [basis_staking]}) -} - -module.exports = { - methodology: `TVL for basis market is staking for now`, - solana:{ - tvl: () => ({}), - staking: stakingTVL//: staking(basis_staking, basis), - } -} \ No newline at end of file diff --git a/projects/basisos/index.js b/projects/basisos/index.js deleted file mode 100644 index 6e67dc53e8e..00000000000 --- a/projects/basisos/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const DATA_PROVIDER_ADDRESS = '0xDD5C8aB2E9F113b397ff2b8528C649bAEf24dF97' - -async function tvl(api) { - // Get all vaults addresses from the data provider contract - const vaults = await api.call({ - target: DATA_PROVIDER_ADDRESS, - abi: 'address[]:getAllVaults', - }) - - // Calculate the TVL for each vault and sum them up - const tvl = await api.erc4626Sum({ calls: vaults, tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets' }) - - return tvl -} - - -module.exports = { - methodology: "TVL is calculated as the aggregated sum of total assets across all deployed vaults.", - timetravel: true, - arbitrum: { tvl }, -}; \ No newline at end of file diff --git a/projects/basketdao/index.js b/projects/basketdao/index.js deleted file mode 100644 index d249a096c6c..00000000000 --- a/projects/basketdao/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const {unwrapUniswapLPs} = require('../helper/unwrapLPs') -const BigNumber = require('bignumber.js') - -const dpiToken = '0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b' -const dpiEthToken = '0x4d5ef58aAc27d99935E5b6B4A6778ff292059991' -const bDPISLP = '0x8d782C5806607E9AAFB2AC38c1DA3838Edf8BD03' -const bDPIToken = '0x0309c98B1bffA350bcb3F9fB9780970CA32a5060' -const masterChef = '0xDB9daa0a50B33e4fe9d0ac16a1Df1d335F96595e' -const weth = ADDRESSES.ethereum.WETH -const continuousMigrator = '0x3f436dE9ef3f07b770c4DB45F60f9f1d323Bbf36' - -const bmiToken = "0x0aC00355F80E289f53BF368C9Bdb70f5c114C44B"; -const daiToken = ADDRESSES.ethereum.DAI - -async function tvl(timestamp, block) { - let balances = {}; - const dpiLocked = sdk.api.erc20.balanceOf({ - target: dpiToken, - owner: masterChef, - block - }) - const dpiLockedOnMigrator = sdk.api.erc20.balanceOf({ - target: dpiToken, - owner: continuousMigrator, - block - }) - const dpiLPLocked = sdk.api.erc20.balanceOf({ - target: dpiEthToken, - owner: masterChef, - block - }) - const bdpiSupply = sdk.api.erc20.totalSupply({ - target: bDPIToken, - block - }) - const bmiSupply = sdk.api.erc20.totalSupply({ - target: bmiToken, - block, - }); - await unwrapUniswapLPs(balances, [{ - token: dpiEthToken, - balance: (await dpiLPLocked).output - }], block) - sdk.util.sumSingleBalance(balances, dpiToken, (await dpiLocked).output) - sdk.util.sumSingleBalance(balances, dpiToken, (await dpiLockedOnMigrator).output) - - sdk.util.sumSingleBalance(balances, bDPIToken, (await bdpiSupply).output) - sdk.util.sumSingleBalance(balances, daiToken, (await bmiSupply).output); - return balances -} - -module.exports = { - ethereum: { tvl }, -} diff --git a/projects/baso/index.js b/projects/baso/index.js deleted file mode 100644 index effbc4c8e51..00000000000 --- a/projects/baso/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - base: { - tvl: getUniTVL({ - factory: '0xcEFbebF0b85B1638C19b01cE2A02C262F421B07d', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - } -} \ No newline at end of file diff --git a/projects/bassexhcnage/index.js b/projects/bassexhcnage/index.js deleted file mode 100644 index 02afb7f36b7..00000000000 --- a/projects/bassexhcnage/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const asssets = "0xb11f5E642EF4cF963e45A83E55A8fedCd58F9A9c" - -const stakingContracts = [ - '0xa5895B5fF267041B968aA82d37A141F08f344333', - '0xB6D7406F2e4B2680fFCCA3Ad3c3FAB5eE07f2832', -] -const bass = '0x1F23B787053802108fED5B67CF703f0778AEBaD8' - -async function tvl(api) { - const tokensAndOwners = await api.call({ - target: asssets, - abi: "function getAssets() view returns (address[][])", - }) - return sumTokens2({ api, tokensAndOwners, }) -} - -module.exports = { - hallmarks: [ - [1698969600,"Rug Pull"] - ], - base: { - tvl, - staking: stakings(stakingContracts, bass), - }, -}; diff --git a/projects/bastilledelabouje/index.js b/projects/bastilledelabouje/index.js deleted file mode 100644 index 51155b37d2b..00000000000 --- a/projects/bastilledelabouje/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const chef = "0x51839D39C4Fa187E3A084a4eD34a4007eae66238" -const bastille = "0xcef2b88d5599d578c8d92E7a6e6235FBfaD01eF4" - -module.exports = { - ...masterChefExports(chef, "fantom", bastille, false), -} \ No newline at end of file diff --git a/projects/bastion/abi.json b/projects/bastion/abi.json deleted file mode 100644 index cb2a578197e..00000000000 --- a/projects/bastion/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "balanceOfUnderlying": "function balanceOfUnderlying(address owner) returns (uint256)" -} \ No newline at end of file diff --git a/projects/bastion/index.js b/projects/bastion/index.js deleted file mode 100644 index 78cae181c7b..00000000000 --- a/projects/bastion/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { compoundExports } = require("../helper/compound"); - -const mainHubExport = compoundExports( - "0x6De54724e128274520606f038591A00C5E94a1F6", - "0x4E8fE8fd314cFC09BDb0942c5adCC37431abDCD0", - "0xc9bdeed33cd01541e1eed10f90519d2c06fe3feb" -); - -const auroraRealmExport = compoundExports("0xA195b3d7AA34E47Fb2D2e5A682DF2d9EFA2daF06",); -const multiChainRealmExport = compoundExports("0xe1cf09BDa2e089c63330F0Ffe3F6D6b790835973",); -const stakedNearRealmExport = compoundExports("0xE550A886716241AFB7ee276e647207D7667e1E79",); - -const bastion = [ - mainHubExport, - auroraRealmExport, - multiChainRealmExport, - stakedNearRealmExport, -]; - -module.exports = { - aurora: { - tvl: async (...args) => { - await Promise.all(bastion.map(realm => realm.tvl(...args))) - return args[0].getBalances(); - }, - borrowed: async (...args) => { - await Promise.all(bastion.map(realm => realm.borrowed(...args))) - return args[0].getBalances(); - }, - }, -}; \ No newline at end of file diff --git a/projects/baton/index.js b/projects/baton/index.js deleted file mode 100644 index 0a6619c07de..00000000000 --- a/projects/baton/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { nullAddress } = require("../helper/tokenMapping"); - -async function tvl(api) { - const batonFactory = "0xEB8D09235255b37fBC810df41Fa879225c04639a"; - - // get all the farms from the factory - const logs = await getLogs({ - api, - target: batonFactory, - topic: "FarmCreated(address,address,address,address,address,uint256,uint8)", - fromBlock: 17411300, - eventAbi: - "event FarmCreated(address farmAddress, address owner, address rewardsDistributor, address rewardsToken, address pairAddress, uint256 rewardsDuration, uint8 farmType)", - onlyArgs: true - }); - - // filter any farms where the reward token is not fractional nfts or the underlying pair is not paired with eth - let filteredLogs = logs.filter(i => i.farmType === 2) - const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: filteredLogs.map(i => i.pairAddress) }) - const filteredFarms = filteredLogs.filter((i, idx) => baseTokens[idx] = nullAddress) - - const farms = filteredFarms.map(i => i.farmAddress) - const pairs = filteredFarms.map(i => i.pairAddress) - const rewardTokens = filteredFarms.map(i => i.rewardsToken) - const totalSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: farms }) - const prices = await api.multiCall({ abi: 'uint256:price', calls: rewardTokens }) - const baseTokenAmounts = (await api.multiCall({ abi: "function removeQuote(uint256) view returns (uint256,uint256)", calls: pairs.map((v, i) => ({ target: v, params: [totalSupplies[i]] })) })).map(i => i[0]) - const rewardBalances = (await api.multiCall({ abi: "erc20:balanceOf", calls: rewardTokens.map((v, i) => ({ target: v, params: [farms[i]] })) })) - baseTokenAmounts.forEach(i => api.add(nullAddress, i * 2)); - rewardBalances.forEach((v, i) => api.add(nullAddress, (prices[i] * v) / 1e18)); - return api.getBalances() -} - -module.exports = { - misrepresentedTokens: true, - methodology: - "Sums the total staked in baton farms and the total amount of tokens deposited as yield farming rewards.", - ethereum: { - tvl - } -}; diff --git a/projects/baymax/index.js b/projects/baymax/index.js deleted file mode 100644 index 9ac0673d503..00000000000 --- a/projects/baymax/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - - -//Avalanche -const avalancheVault = '0x6De10cA248723Ea0B8c2dC72920C3B2bB417dAb4' -const avalancheStaking = '0x42526FaAf9400c08DA7CE713388eed29273d65dE' -const avalancheBAY = '0x18706c65b12595EDB43643214EacDb4F618DD166' - -module.exports = { - avax:{ - staking: staking(avalancheStaking, avalancheBAY), - tvl: gmxExports({ vault: avalancheVault, }) - } -}; diff --git a/projects/bayswap/index.js b/projects/bayswap/index.js deleted file mode 100644 index f87d419bd6e..00000000000 --- a/projects/bayswap/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { dexExport } = require('../helper/chain/sui'); - -const enrichPrefixZero = (type_) => { - const parts = type_.split('::'); - if (parts.length !== 3) { - return parts.join('::'); - } - if (parts[0].length === 65) { - parts[0] = '0x0' + parts[0].slice(2); - } - - return parts.join('::'); -}; - -const parsingPoolTypes = (types_) => { - const t = types_.substring(types_.lastIndexOf('<') + 1, types_.lastIndexOf('>')); - const slice = t.replaceAll(' ', '').split(','); - if (slice.length < 3) { - throw new Error('invalid pool type'); - } - - return { - coinXType: enrichPrefixZero(slice[0]), - coinYType: enrichPrefixZero(slice[1]), - curveType: enrichPrefixZero(slice[2]), - }; -}; - -const getTokens = (pool) => { - const {coinXType, coinYType} = parsingPoolTypes(pool.type) - return [coinXType, coinYType] -}; - -module.exports = dexExport({ - account: '0x72b55bab9064f458451ccf0157e2e0317bcd9b210476b9954081c44ee07b7702', - poolStr: 'liquidity_pool::LiquidityPool', - token0Reserve: i => i.fields.coin_x_reserve, - token1Reserve: i => i.fields.coin_y_reserve, - getTokens -}); diff --git a/projects/bb-club-MusangKing/index.js b/projects/bb-club-MusangKing/index.js deleted file mode 100644 index 00d36c84e9b..00000000000 --- a/projects/bb-club-MusangKing/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const stBBAddress = '0x22aAC17E571D6651880d057e310703fF4C7c3483' -const stakeSTBBAddress = '0xFc7d97E14B9Fc2b2Bcc514F868f2729C386A91c8' - -async function tvl(api) { - const totalStakeSTBBShares = await api.call({abi: 'uint256:totalSupply', target: stakeSTBBAddress}) - const totalStakeSTBBAmount= await api.call({abi: 'function getPooledNativeByShares(uint256) view returns (uint256 amount)', target: stBBAddress, params: [totalStakeSTBBShares]}) - // stbb -> bb - api.add(ADDRESSES.null, totalStakeSTBBAmount) -} - -module.exports = { - bouncebit: { - tvl: () => ({}), - staking: tvl, - } -} \ No newline at end of file diff --git a/projects/bb-club-cdp/index.js b/projects/bb-club-cdp/index.js deleted file mode 100644 index f9c3ddabb79..00000000000 --- a/projects/bb-club-cdp/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - bouncebit: { - tvl: sumTokensExport({ owner: '0xdE1F1Ff02D565E554E63AEfe80cB6818eAaCD6A8', token: '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC'}), - } -} \ No newline at end of file diff --git a/projects/bb-club-farm/index.js b/projects/bb-club-farm/index.js deleted file mode 100644 index c483544065f..00000000000 --- a/projects/bb-club-farm/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { stakingUnknownPricedLP } = require("../helper/staking"); -const BBTC = '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC' -const stakingLNNGAddress= '0x997A1C457acB020CF668BB7d6f05A184854CD3ca' -const LNNGLPAddress = '0x2d2011408d0E76c521Cf6169E004c8BF893Af34E' - -async function tvl(api) { - return api.sumTokens({owners: ['0x05407cAe9FdaF5e8cC395089207E2E72b8Ae739b'], tokens: [BBTC], api }) -} - -module.exports = { - bouncebit: { - tvl, - staking: stakingUnknownPricedLP(stakingLNNGAddress, LNNGLPAddress, "bouncebit", LNNGLPAddress) - } -} \ No newline at end of file diff --git a/projects/bb-club-meme/index.js b/projects/bb-club-meme/index.js deleted file mode 100644 index 961da573e72..00000000000 --- a/projects/bb-club-meme/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const factory = '0x0dB9ea3c097fC9fD709da54aA1eFcd6FFb3DdE2C'; - const memeCoins = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: factory }) - return api.sumTokens({owners: memeCoins, tokens: [ADDRESSES.null] }) -} - -module.exports = { - bouncebit: { - tvl - } -} \ No newline at end of file diff --git a/projects/bb-club-quanto/index.js b/projects/bb-club-quanto/index.js deleted file mode 100644 index e5f76ca4826..00000000000 --- a/projects/bb-club-quanto/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - bouncebit: { - tvl: sumTokensExport({ owner: '0xA19237FFc49D1b71f00DA1a82cfF79CE7789f74A', token: '0xF4c20e5004C6FDCDdA920bDD491ba8C98a9c5863'}) - } -} \ No newline at end of file diff --git a/projects/bb-club-restaking/index.js b/projects/bb-club-restaking/index.js deleted file mode 100644 index 3460141dff2..00000000000 --- a/projects/bb-club-restaking/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const BBTC = '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC' - -async function BTCFIStaking(api) { - const totalStake = await api.call({abi: 'uint256:totalStaked', target: '0x0d5d4599eb4f48df6aeaf2f3c814f5a5302931e5'}) - api.add(BBTC, totalStake) -} - - -module.exports = { - bouncebit: { - tvl: BTCFIStaking - } -} \ No newline at end of file diff --git a/projects/bbbpump/index.js b/projects/bbbpump/index.js deleted file mode 100644 index a6f34ff5ed7..00000000000 --- a/projects/bbbpump/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { - nullAddress, - sumTokens2, - sumTokensExport, -} = require("../helper/unwrapLPs"); -const { stakingPricedLP } = require("../helper/staking"); -const sdk = require("@defillama/sdk"); -const { pool2 } = require("../helper/pool2"); - -// Contract addresses -const MegadropBBB = "0x37c00AE5C4b49Ab0F5fD2FFB1033588e9bC33B08"; // Megadrop BBB -const BBB = "0xfa4ddcfa8e3d0475f544d0de469277cf6e0a6fd1"; // BBB Token -const XDC_BBB_LP = "0x95ab47ff0056cdc81a42b35d96551d9c5534947d"; // XDC-BBB LP Token -const XDC_bpsXDC_LP = "0x51D8543C50eF5f07c5b4B8988E3048Ade31357d0"; // XDC-bpsXDC LP Token -const XDC_psXDC_LP = "0x3ff386092ee053397cadeba2ee273b4e40f06619"; -const BBBPump = "0x2E24BFdE1EEDa0F1EA3E57Ba7Ff10ac6516ab5Ec"; // BBBPump -const lpStake = "0x2B3Bb9b3265Fcee484e857506fDCf2C0776E9c43"; -const psXDC = "0x9B8e12b0BAC165B86967E771d98B520Ec3F665A6"; -const bpsXDC = "0x24be372f0915b8BAf17AfA150210FFcB79C88845"; -const xdcStake = "0x5af754f822CEd42deC729c1F1B3EDb9f13485ba7"; - -const owners = [BBBPump, xdcStake, lpStake]; -const tokens = [nullAddress, XDC_BBB_LP, psXDC, bpsXDC, BBB, XDC_bpsXDC_LP]; - -module.exports = { - start: "2024-10-10", - xdc: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ - owners, - tokens, - resolveLP: true, - }), - ]), - staking: sdk.util.sumChainTvls([ - stakingPricedLP(MegadropBBB, BBB, "xdc", XDC_BBB_LP, "wrapped-xdc"), - stakingPricedLP(lpStake, psXDC, "xdc", XDC_psXDC_LP, "wrapped-xdc"), - stakingPricedLP(lpStake, bpsXDC, "xdc", XDC_bpsXDC_LP, "wrapped-xdc"), - ]), - pool2: sdk.util.sumChainTvls([ - pool2(lpStake, XDC_BBB_LP), - pool2(lpStake, XDC_bpsXDC_LP), - ]), - }, -}; diff --git a/projects/bcap/index.js b/projects/bcap/index.js deleted file mode 100644 index 8c51c518a34..00000000000 --- a/projects/bcap/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const CONFIG = { - era: [ - '0x57fD71a86522Dc06D6255537521886057c1772A3' - ] -} - -const tvl = async (api) => { - try { - const tokens = CONFIG[api.chain]; - const supplies = await api.multiCall({ calls: tokens, abi: 'erc20:totalSupply' }); - api.add(tokens, supplies); - } catch (error) { - console.error(`Error in ${api.chain}:`, error); - } -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/bchpad/index.js b/projects/bchpad/index.js deleted file mode 100644 index be9b0e66971..00000000000 --- a/projects/bchpad/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const chain = "smartbch" - -// token contracts -const BPAD = "0x9192940099fDB2338B928DE2cad9Cd1525fEa881" -const CATS = ADDRESSES.smartbch._CATS - -// tvl pools -const BPAD_POOL = "0xc39f046a0E2d081e2D01558269D1e3720D2D2EA1" // BPAD single asset pool, ended -const CATS_POOL = "0x9F8a513C11c278dfF624678108B41310fA0398E3" // CATS single asset pool, ended - -// tvl pairs -const BPAD_WBCH_PAIR = "0x8221d04a71fcd0dd3d096cb3b49e22918095933f" - -module.exports = { - methodology: "BCHPad uses LP pools created on other dexes and single asset pools of non-native tokens for their liquidity mining, these pools are used for TVL calculation.", - smartbch: { - tvl: async (api) => { - return sumTokens2({ api, tokensAndOwners: [ - [CATS, CATS_POOL], - ]}) - }, - pool2: async (api) => { - return sumTokens2({ api, tokensAndOwners: [ - [BPAD_WBCH_PAIR, '0x87DfAE804cF62A1FcafA4395346f3c6331E1032b'], - ], resolveLP: true, }) - }, - staking: async (api) => { - return sumTokens2({ api, tokensAndOwners: [ - [BPAD, BPAD_POOL], - ], }) - } - }, -} diff --git a/projects/bcraft/index.js b/projects/bcraft/index.js deleted file mode 100644 index 3f2fce45095..00000000000 --- a/projects/bcraft/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const clans = "0x0De0D0cF717af57D2101F6Be0962fA890c1FBeC6" -async function tvl(time, ethBlock, _b, { api}) { - return sumTokens2({ tokens: [nullAddress], owner: clans, api }) -} - -module.exports = { - methodology: `We count the ETH on ${clans}`, - base: { - tvl: tvl - } -} \ No newline at end of file diff --git a/projects/beam-dex/index.js b/projects/beam-dex/index.js deleted file mode 100644 index 01183f8b199..00000000000 --- a/projects/beam-dex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - zeta: { factory: '0x28b5244B6CA7Cb07f2f7F40edE944c07C2395603', fromBlock: 5320498, isAlgebra: true, permitFailure: true } -}) diff --git a/projects/beam-swap/index.js b/projects/beam-swap/index.js deleted file mode 100644 index d1f3decd275..00000000000 --- a/projects/beam-swap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport('beam', '0x662b526FB70EBB508962f3f61c9F735f687C8fA5') \ No newline at end of file diff --git a/projects/beamer/index.js b/projects/beamer/index.js deleted file mode 100644 index e475a97ba53..00000000000 --- a/projects/beamer/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { - owner: '0x6d00f6994f36ec1a3bd008dbbc84dfa46a939001', - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - ADDRESSES.optimism.DAI, - ] - }, - optimism: { - owner: '0x0b3c3dcf4c9db39b810f306e55cd14aed5c19c0b', - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.DAI, - ] - } -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { owner, tokens, } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ tokens, owner, logCalls: true }) - } -}) \ No newline at end of file diff --git a/projects/beamex/index.js b/projects/beamex/index.js deleted file mode 100644 index 5fa70476e30..00000000000 --- a/projects/beamex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - moonbeam: { - tvl: gmxExports({ vault: '0x73197B461eA369b36d5ee96A1C9f090Ef512be21', }) - }, -} \ No newline at end of file diff --git a/projects/beamswap-stableswap/index.js b/projects/beamswap-stableswap/index.js deleted file mode 100644 index d89524257b4..00000000000 --- a/projects/beamswap-stableswap/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const abi = { - getTokens: "address[]:getTokens", -} - -async function tvl(api) { - const pools = [ - '0xE3f59aB3c37c33b6368CDF4f8AC79644011E402C', // New 3 pool (axlUSDC, whUSDC, xcUSDT) - '0x09A793cCa9D98b14350F2a767Eb5736AA6B6F921', // nomad 3 pool - ] - - const tokens = await api.multiCall({ - abi: abi.getTokens, calls: pools, - }) - - const ownerTokens = tokens.map((v, i) => [v, pools[i]]) - return sumTokens2({ api, ownerTokens, }) -} - -module.exports = { - moonbeam: { - tvl, - } -} diff --git a/projects/beamswap-v3/index.js b/projects/beamswap-v3/index.js deleted file mode 100644 index 890183f7f80..00000000000 --- a/projects/beamswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - moonbeam: { factory: '0xd118fa707147c54387b738f54838ea5dd4196e71', fromBlock: 3579833 }, -}) diff --git a/projects/beamswap/index.js b/projects/beamswap/index.js deleted file mode 100644 index 7b2aca892ce..00000000000 --- a/projects/beamswap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const GLINT_TOKEN = ADDRESSES.moonbeam.GLINT -const SHARE_CONTRACT = "0x4204cAd97732282d261FbB7088e07557810A6408" -const STGLINT_CONTRACT = "0x63d43D0EDda7DE4B5ed9B2F2AA855f81FBd71697" - -const dexTVL = getUniTVL({ - factory: "0x985BcA32293A7A496300a48081947321177a86FD", - useDefaultCoreAssets: true, -}) - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x985BcA32293A7A496300a48081947321177a86FD) is used to find the LP pairs. TVL is equal to the liquidity on the AMM & Staking balance is equal to the amount of GLINT staked within the SHARE token contract(0x4204cAd97732282d261FbB7088e07557810A6408) - deprecated and stGLINT contract(0x63d43D0EDda7DE4B5ed9B2F2AA855f81FBd71697)", - moonbeam: { - tvl: dexTVL, - staking: staking([SHARE_CONTRACT, STGLINT_CONTRACT], GLINT_TOKEN) - }, -}; diff --git a/projects/bean/index.js b/projects/bean/index.js deleted file mode 100644 index f2145a29bfd..00000000000 --- a/projects/bean/index.js +++ /dev/null @@ -1,333 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const ADDR = { - ethereum: { - BEANSTALK: "0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5", - BEAN_ERC20_V1: "0xdc59ac4fefa32293a95889dc396682858d52e5db", - BEANETH_V1: "0x87898263b6c5babe34b4ec53f22d98430b91e371", - BEAN3CRV_V1: "0x3a70dfa7d2262988064a2d051dd47521e43c9bdd", - BEANLUSD_V1: "0xd652c40fbb3f06d6b58cb9aa9cff063ee63d465d", - BEAN_ERC20: "0xbea0000029ad1c77d3d5d23ba2d8893db9d1efab", - UNRIPE_BEAN_ERC20: "0x1bea0050e63e05fbb5d8ba2f10cf5800b6224449", - UNRIPE_LP_ERC20: "0x1bea3ccd22f4ebd3d37d731ba31eeca95713716d", - BEAN3CRV_V2: "0xc9c32cd16bf7efb85ff14e0c8603cc90f6f2ee49", - BEANETH_V2: "0xbea0e11282e2bb5893bece110cf199501e872bad", - // Underlying non-bean tokens - WETH: ADDRESSES.ethereum.WETH, - CRV3: "0x6c3f90f043a72fa612cbac8115ee7e52bde6e490", - LUSD: ADDRESSES.ethereum.LUSD - }, - arbitrum: { - BEANSTALK: "0xd1a0060ba708bc4bcd3da6c37efa8dedf015fb70", - BEAN_ERC20: "0xbea0005b8599265d41256905a9b3073d397812e4", - BEANWETH: "0xbea00aa8130acad047e137ec68693c005f8736ce", - BEANWSTETH: "0xbea00bbe8b5da39a3f57824a1a13ec2a8848d74f", - BEANWEETH: "0xbea00cc9f93e9a8ac0dfdff2d64ba38eb9c2e48c", - BEANWBTC: "0xbea00dde4b34acdcb1a30442bd2b39ca8be1b09c", - BEANUSDC: "0xbea00ee04d8289aed04f92ea122a96dc76a91bd7", - BEANUSDT: "0xbea00ff437ca7e8354b174339643b4d1814bed33", - UNRIPE_BEAN_ERC20: "0x1bea054dddbca12889e07b3e076f511bf1d27543", - UNRIPE_LP_ERC20: "0x1bea059c3ea15f6c10be1c53d70c75fd1266d788", - // Underlying non-bean tokens - WETH: ADDRESSES.arbitrum.WETH, - WSTETH: ADDRESSES.arbitrum.WSTETH, - WEETH: ADDRESSES.arbitrum.weETH, - WBTC: ADDRESSES.arbitrum.WBTC, - USDC: ADDRESSES.arbitrum.USDC_CIRCLE, - USDT: ADDRESSES.arbitrum.USDT - } -}; - -/// REFERENCE BLOCKS TIMESTAMPS -// Whitelist BEANETH_V1 12974075 1628288832 -// Dewhitelist BEANETH_V1 14602790 165019825s6 -// Whitelist BEAN3CRV_V1 14218934 1645038020 -// dewhitelist BEAN3CRV_V1 14602790 1650198256 -// whitelist BEANLUSD_V1 14547427 1649451979 -// dewhitelist BEANLUSD_V1 14602790 1650198256 -// EXPLOIT_BLOCK 14602790 1650198256 -// REPLANT_BLOCK 15278963 1659657966 -// whitelist BEAN3CRV_V2 15278082 1659645914 -// dewhitelist BEAN3CRV_V2 19927634 1716407627 -// whitelist BEANETH_V2 18028591 1693412759 -// dewhitelist BEANETH_V2 x - -const EXPLOIT_TIME = 1650198256; -const REPLANT_TIME = 1659657966; -const BIP12_TIME = 1645038020; -const ARB_MIGRATION_TIME = 1728529200; - -// List of pools and time time periods they were valid within beanstalk -const ALL_POOLS = { - ethereum: { - [ADDR.ethereum.BEANETH_V1]: { - startTime: 1628288832, - endTime: EXPLOIT_TIME, - underlying: [ADDR.ethereum.BEAN_ERC20_V1, ADDR.ethereum.WETH] - }, - [ADDR.ethereum.BEAN3CRV_V1]: { - startTime: 1645038020, - endTime: EXPLOIT_TIME, - underlying: [ADDR.ethereum.BEAN_ERC20_V1, ADDR.ethereum.CRV3] - }, - [ADDR.ethereum.BEANLUSD_V1]: { - startTime: 1649451979, - endTime: EXPLOIT_TIME, - underlying: [ADDR.ethereum.BEAN_ERC20_V1, ADDR.ethereum.LUSD] - }, - [ADDR.ethereum.BEAN3CRV_V2]: { - startTime: 1659645914, - endTime: ARB_MIGRATION_TIME, - underlying: [ADDR.ethereum.BEAN_ERC20, ADDR.ethereum.CRV3] - }, - [ADDR.ethereum.BEANETH_V2]: { - startTime: 1693412759, - endTime: ARB_MIGRATION_TIME, - underlying: [ADDR.ethereum.BEAN_ERC20, ADDR.ethereum.WETH] - } - }, - arbitrum: { - [ADDR.arbitrum.BEANWETH]: { - startTime: ARB_MIGRATION_TIME, - endTime: 999999999999, - underlying: [ADDR.arbitrum.BEAN_ERC20, ADDR.arbitrum.WETH] - }, - [ADDR.arbitrum.BEANWSTETH]: { - startTime: ARB_MIGRATION_TIME, - endTime: 999999999999, - underlying: [ADDR.arbitrum.BEAN_ERC20, ADDR.arbitrum.WSTETH] - }, - [ADDR.arbitrum.BEANWEETH]: { - startTime: ARB_MIGRATION_TIME, - endTime: 999999999999, - underlying: [ADDR.arbitrum.BEAN_ERC20, ADDR.arbitrum.WEETH] - }, - [ADDR.arbitrum.BEANWBTC]: { - startTime: ARB_MIGRATION_TIME, - endTime: 999999999999, - underlying: [ADDR.arbitrum.BEAN_ERC20, ADDR.arbitrum.WBTC] - }, - [ADDR.arbitrum.BEANUSDC]: { - startTime: ARB_MIGRATION_TIME, - endTime: 999999999999, - underlying: [ADDR.arbitrum.BEAN_ERC20, ADDR.arbitrum.USDC] - }, - [ADDR.arbitrum.BEANUSDT]: { - startTime: ARB_MIGRATION_TIME, - endTime: 999999999999, - underlying: [ADDR.arbitrum.BEAN_ERC20, ADDR.arbitrum.USDT] - }, - } -}; - -function invalidTime(api) { - if (api.chain === 'ethereum') { - return (api.timestamp >= EXPLOIT_TIME && api.timestamp <= REPLANT_TIME) || api.timestamp >= ARB_MIGRATION_TIME; - } else if (api.chain === 'arbitrum') { - return false; - } -} - -// Returns the relevant tokens for the given timestamp -function getBean(timestamp) { - if (timestamp <= EXPLOIT_TIME) { - return ADDR.ethereum.BEAN_ERC20_V1; - } else if ( timestamp <= ARB_MIGRATION_TIME) { - return ADDR.ethereum.BEAN_ERC20; - } else { - return ADDR.arbitrum.BEAN_ERC20; - } -} - -// Returns the relevant pools for the given timestamp -function getPools(api) { - const { chain, timestamp } = api; - const pools = []; - for (const contract in ALL_POOLS[chain]) { - const pool = ALL_POOLS[chain][contract]; - if (timestamp >= pool.startTime && timestamp <= pool.endTime) { - pools.push(contract); - } - } - return pools; -} - -// Gets the total supply of the given erc20 token -async function getTotalSupply(api, token) { - return await api.call({ - abi: 'erc20:totalSupply', - target: token - }); -} - -// Gets the reserves (for simplicity, contract balances) of the requested pool -async function getPoolReserves(api, pool) { - - pool = pool.toLowerCase(); - const poolBalances = await api.multiCall({ - calls: ALL_POOLS[api.chain][pool].underlying.map(token => ({ - target: token, - params: pool - })), - abi: 'erc20:balanceOf' - }); - - return poolBalances.map((balance, i) => ({ token: ALL_POOLS[api.chain][pool].underlying[i], balance })); -} - -// Returns the total silo'd amount of the requested token -async function getSiloDeposited(api, token) { - - let result; - if (api.timestamp <= BIP12_TIME) { - // Prior to BIP12, there was no generalized deposit getter - result = await api.call({ - abi: - token === ADDR.ethereum.BEAN_ERC20_V1 - ? "function totalDepositedBeans() public view returns (uint256)" - : "function totalDepositedLP() public view returns (uint256)", - target: ADDR[api.chain].BEANSTALK - }); - } else { - result = await api.call({ - abi: "function getTotalDeposited(address) external view returns (uint256)", - target: ADDR[api.chain].BEANSTALK, - params: token - }); - } - return parseInt(result); -} - -/** - * Returns the balances of the underlying tokens in the given pools of the given ratios - * @param {*} api - * @param {string[]} pools - the pools to calculate the balances for - * @param {number[]} ratios - proportions of the pool underlying to credit towards the resulting balance - */ -async function getPooledBalances(api, pools, ratios) { - - const pooledTokenBalances = {}; - - const poolReserves = await Promise.all(pools.map(pool => getPoolReserves(api, pool))); - - for (let i = 0; i < pools.length; ++i) { - const reserves = poolReserves[i]; - for (const reserve of reserves) { - const ratioAmount = reserve.balance * ratios[i]; - pooledTokenBalances[reserve.token] = (pooledTokenBalances[reserve.token] ?? 0) + ratioAmount; - } - } - return pooledTokenBalances; -} - -// Gets the balances associated with the ripe portion of deposited unripe tokens -async function getRipePooledBalances(api, unripeToken) { - - const ripePooledTokenBalances = {}; - - // Gets unripe's underlying token and amounts - const [underlyingToken, underlyingPerUnripe, depositedUnripe] = await Promise.all([ - api.call({ - abi: "function getUnderlyingToken(address) external view returns (address)", - target: ADDR[api.chain].BEANSTALK, - params: unripeToken - }), - api.call({ - abi: "function getUnderlyingPerUnripeToken(address) external view returns (uint256)", - target: ADDR[api.chain].BEANSTALK, - params: unripeToken - }), - getSiloDeposited(api, unripeToken), - ]); - - // Add the underlying pooled token balances - const underlyingAmount = underlyingPerUnripe * depositedUnripe / Math.pow(10, 6); - const BEAN = ADDR[api.chain].BEAN_ERC20; - if (underlyingToken.toLowerCase() == BEAN) { - ripePooledTokenBalances[BEAN] = (ripePooledTokenBalances[BEAN] ?? 0) + underlyingAmount; - } else { - const underlyingSupply = await getTotalSupply(api, underlyingToken); - const ratio = underlyingAmount / underlyingSupply; - const balances = await getPooledBalances(api, [underlyingToken.toLowerCase()], [ratio]); - for (const token in balances) { - ripePooledTokenBalances[token] = (ripePooledTokenBalances[token] ?? 0) + balances[token]; - } - } - return ripePooledTokenBalances; -} - -// Beans deposited in the silo -async function staking(api) { - if (invalidTime(api)) { - return {}; - } - - // Bean deposits + ripe beans from unripe beans - const bean = getBean(api.timestamp); - const [siloBeans, unripeSiloBeans] = await Promise.all([ - getSiloDeposited(api, bean), - getRipePooledBalances(api, ADDR[api.chain].UNRIPE_BEAN_ERC20) - ]); - const totalStaked = siloBeans + unripeSiloBeans[ADDR[api.chain].BEAN_ERC20]; - - return { - [`${api.chain}:${bean.toLowerCase()}`]: totalStaked - } -} - -// Tokens in liquidity pools corresponding to lp tokens that are deposited in the silo -async function pool2(api) { - if (invalidTime(api)) { - return {}; - } - - // Get the amount of lp tokens deposited in the silo - const pools = getPools(api); - const poolPromises = pools.map(pool => [ - getSiloDeposited(api, pool), - getTotalSupply(api, pool) - ]); - // And determine how much of the pooled tokens correspond to those deposits - const flatResolved = await Promise.all(poolPromises.flat()); - const ratios = []; - for (let i = 0; i < flatResolved.length; i += 2) { - ratios.push(flatResolved[i] / flatResolved[i + 1]); - } - - // Gets the underlying token balances for both regular and unripe deposits - const balancesResults = await Promise.all([ - getPooledBalances(api, pools, ratios), - getRipePooledBalances(api, ADDR[api.chain].UNRIPE_LP_ERC20) - ]); - - const pool2Balances = balancesResults[0]; - for (const token in balancesResults[1]) { - pool2Balances[token] = (pool2Balances[token] ?? 0) + balancesResults[1][token]; - } - - // Add chain info - const retval = {}; - for (const token in pool2Balances) { - retval[`${api.chain}:${token.toLowerCase()}`] = pool2Balances[token]; - } - return retval; -} - -module.exports = { - methodology: "Counts the value of deposited Beans and LP tokens in the silo.", - start: '2021-08-07', - ethereum: { - tvl: () => ({}), - pool2, - staking - }, - arbitrum: { - tvl: () => ({}), - pool2, - staking - }, - hallmarks: [ - // [EXPLOIT_TIME, "Governance Exploit"], - [REPLANT_TIME, "Replant"], - [ARB_MIGRATION_TIME, "Migration to Arbitrum"], - ] -}; diff --git a/projects/bearfinance/index.js b/projects/bearfinance/index.js deleted file mode 100644 index b1f1a185fd2..00000000000 --- a/projects/bearfinance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { masterchefExports } = require('../helper/unknownTokens') - -const BEAR_DAI_LP = "0x9e5719236e2ce62dc286ac89ae5a0fa142ae3aa8" -const DAI = ADDRESSES.ethereum.DAI; - - -module.exports = masterchefExports({ - chain: 'fantom', - useDefaultCoreAssets: true, - masterchef: "0x16a06259725e4c7dFcE648f24D3443AfB96Aa0e5", - nativeToken: "0x3b1a7770A8c97dCB21c18a2E18D60eF1B01d6DeC", - poolInfoABI: 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accBearPerShare)' -}) - -module.exports.deadFrom = 1648765747 \ No newline at end of file diff --git a/projects/bearn/index.js b/projects/bearn/index.js deleted file mode 100644 index 7817c1f916d..00000000000 --- a/projects/bearn/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const vaultFactory = "0x70b14cd0Cf7BD442DABEf5Cb0247aA478B82fcbb"; -const voter = "0x37d1E4594ed04818B68aF5396bc7388c26F17E4A"; -const bgt = "0x656b95E550C07a9ffe548bd4085c72418Ceb1dba"; - -async function vaultsTVL(api) { - // grab all the vaults - const compoundingVaults = await api.call({ - abi: "function getAllCompoundingVaults() external view returns (address[])", - target: vaultFactory, - }); - const bgtEarnerVaults = await api.call({ - abi: "function getAllBgtEarnerVaults() external view returns (address[])", - target: vaultFactory, - }); - - const vaults = [...compoundingVaults, ...bgtEarnerVaults]; - - // grab all the tokens and balances in the vaults - const tokens = await api.multiCall({ - abi: "address:stakingAsset", - calls: vaults, - }); - - const balances = await api.multiCall({ - abi: "uint256:totalAssets", - calls: vaults, - }); - - // grab BGT balance of yBGT backing - const bgtBalance = await api.call({ - abi: "erc20:balanceOf", - target: bgt, - params: [voter], - }); - - tokens.push(bgt); - balances.push(bgtBalance); - - api.add(tokens, balances); - return sumTokens2({ api, resolveLP: true }); -} - -module.exports = { - berachain: { - methodology: "TVL is calculated from the balances of all Bearn Vaults plus the BGT that backs yBGT.", - tvl: vaultsTVL, - }, -}; diff --git a/projects/bearnfi/abi.json b/projects/bearnfi/abi.json deleted file mode 100644 index 94579bcf58c..00000000000 --- a/projects/bearnfi/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "wantAddress": "address:wantAddress", - "wantLockedTotal": "uint256:wantLockedTotal" -} \ No newline at end of file diff --git a/projects/bearnfi/index.js b/projects/bearnfi/index.js deleted file mode 100644 index d0e7fde02fd..00000000000 --- a/projects/bearnfi/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { getUniTVL } = require('../helper/unknownTokens') -const { compoundExports } = require('../helper/compound') -const { getConfig } = require('../helper/cache') - -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const url = "https://api.bdollar.fi/api/bvault/get-vaults"; - -const BDEX_FACTORY = "0x2C358A7C62cdb9D554A65A86EEa034bc55D1E715"; -const COMPTROLLER = "0xEEea0D4aAd990c4ede8e064A8Cb0A627B432EDa0"; -const wBNB = ADDRESSES.bsc.WBNB; -const cBNB = "0xa3948b027f94ca195eac645746435aaa7eb555a7"; - -async function yieldTVL(api) { - // --- bVaults & bDollar TVL section, all contract addresses grab from endpoint --- - // --- Sections of boardroom is not considered in TVL (bDollar Shares related) --- - let vaultsInfo = (await getConfig('bearn-fi', url)).data.vaultInfos; - - const keys = Object.keys(vaultsInfo); - - const strategies = [] - - keys.forEach((key) => { - if (vaultsInfo[key].token !== "ibBUSD") - strategies.push(vaultsInfo[key].strategy) - }); - const bals = await api.multiCall({ abi: "uint256:wantLockedTotal", calls: strategies }) - const tokens = await api.multiCall({ abi: "address:wantAddress", calls: strategies }) - - api.add(tokens, bals) - return sumTokens2({ api, resolveLP: true }) -} - -const cExports = compoundExports(COMPTROLLER, cBNB, wBNB,) - -const dexTVL = getUniTVL({ - factory: BDEX_FACTORY, - useDefaultCoreAssets: true, -}) - - -module.exports = { - bsc: { - tvl: sdk.util.sumChainTvls([yieldTVL, dexTVL, cExports.tvl]), - borrowed: cExports.borrowed, - }, -}; diff --git a/projects/becoswap/index.js b/projects/becoswap/index.js deleted file mode 100644 index 0ec42d7c1da..00000000000 --- a/projects/becoswap/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -const { staking } = require("../helper/staking"); - -const becoToken = '0x2Eddba8b949048861d2272068A94792275A51658' -const masterChef = '0x20e8Ff1e1d9BC429489dA76B1Fc20A9BFbF3ee7e' - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://becoswap.com/info as the source. Staking accounts for the BECO locked in MasterChef (0x20e8Ff1e1d9BC429489dA76B1Fc20A9BFbF3ee7e)', - kardia: { - staking: staking(masterChef, becoToken), - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x58b54BCDF2aF8a70dD6433EB39b308148261bB49', - blacklistedTokens: ['0x551a5dcac57c66aa010940c2dcff5da9c53aa53b'] - }) - }, -}; diff --git a/projects/bedrock/index.js b/projects/bedrock/index.js deleted file mode 100644 index da07b6c1c78..00000000000 --- a/projects/bedrock/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumTokens } = require('../helper/chain/bitcoin') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') -const { getConfig } = require('../helper/cache.js') - -async function tvl() { - return sumTokens({ owners: await bitcoinAddressBook.bedrock() }) -} - -module.exports = { - timetravel: false, - doublecounted: true, - start: '2024-04-13', - bitcoin: { - tvl - } -} - -async function tvlEvm(api) { - // const API_URL = 'https://raw.githubusercontent.com/Bedrock-Technology/uniBTC/refs/heads/main/data/tvl/reserve_address.json' - const API_URL = 'https://bedrock-datacenter.rockx.com/uniBTC/reserve/address' - const { evm, } = await getConfig('bedrock.evm_address', API_URL) - - const chainAlias = { 'btr': 'bitlayer', 'berachain': 'bera', 'rsk': 'rootstock' } - const chain = chainAlias[api.chain] ? chainAlias[api.chain] : api.chain - const { vault, tokens } = evm?.[chain] ?? {} - if (!vault) return; - return api.sumTokens({ api, owner: vault, tokens }) -} - -['base', 'hemi', 'rsk', 'tac', 'taiko', 'btr', 'ethereum', 'bsc', 'arbitrum', 'mantle', 'merlin', 'optimism', 'bob', 'bsquared', 'zeta', 'mode', 'berachain'].forEach(chain => { - module.exports[chain] = { tvl: tvlEvm } -}) diff --git a/projects/beeBase/index.js b/projects/beeBase/index.js deleted file mode 100644 index 684b86cb849..00000000000 --- a/projects/beeBase/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - base: { - tvl: sumTokensExport({ owners: - [ - "0xFD09F108D1728E6B6eD241ccd254775e322f1ed6", - "0x8a2fFD429d33FBfC6f5A91aa207e48bB095Db7d9" - ], tokens: [ - ADDRESSES.null, - ADDRESSES.base.USDC, - ADDRESSES.base.WETH, - ]}), - } -}; \ No newline at end of file diff --git a/projects/beefstake/index.js b/projects/beefstake/index.js deleted file mode 100644 index d72bb30297c..00000000000 --- a/projects/beefstake/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const utils = require('../helper/utils'); - -const tvl = async (api) => { - const { data } = await utils.fetchURL('https://vite-api.thomiz.dev/tvl/beefstake') - return api.addUSDValue(Math.round(data.tvl)) -} - -module.exports = { - deadFrom: "2024-06-01", - timetravel: false, - misrepresentedTokens: true, - vite: { tvl }, -} \ No newline at end of file diff --git a/projects/beefy/index.js b/projects/beefy/index.js deleted file mode 100644 index 23ac9e6b500..00000000000 --- a/projects/beefy/index.js +++ /dev/null @@ -1,82 +0,0 @@ -const utils = require('../helper/utils'); -const { toUSDTBalances } = require('../helper/balances'); -let _response - -const distressedAssets = ['aleth']; // Add any distressed asset names here - -function fetchChain(chainId, staking) { - return async () => { - if (!_response) _response = utils.fetchURL('https://api.beefy.finance/tvl') - const response = await _response; - - let tvl = 0; - const chain = response.data[chainId]; - for (const vault in chain) { - // Skip distressed assets - if (distressedAssets.some(asset => vault.includes(asset))) { - continue; - } - - const isBIFI = vault.includes("bifi") - if ((isBIFI && staking) || (!isBIFI && !staking)) { - tvl += Number(chain[vault]); - } - } - if (tvl === 0 && !staking) { - throw new Error(`chain ${chainId} tvl is 0`) - } - - return toUSDTBalances(tvl); - } -} - -const chains = { - ethereum: 1, - optimism: 10, - cronos: 25, - rsk: 30, - bsc: 56, - xdai: 100, - fuse: 122, - heco: 128, - polygon: 137, - sonic: 146, - manta: 169, - fantom: 250, - fraxtal: 252, - era: 324, - hyperliquid: 999, - metis: 1088, - polygon_zkevm: 1101, - lisk: 1135, - moonbeam: 1284, - moonriver: 1285, - sei: 1329, - kava: 2222, - mantle: 5000, - saga: 5464, - canto: 7700, - base: 8453, - plasma: 9745, - mode: 34443, - arbitrum: 42161, - celo: 42220, - oasis: 42262, - avax: 43114, - linea: 59144, - berachain: 80094, - real: 111188, - scroll: 534352, - aurora: 1313161554, - harmony: 1666600000 -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - doublecounted: true, - ...Object.fromEntries(Object.entries(chains).map(chain => [chain[0], { - tvl: fetchChain(chain[1], false), - staking: fetchChain(chain[1], true), - }])) -} diff --git a/projects/beekava/index.js b/projects/beekava/index.js deleted file mode 100644 index 2cb09480f26..00000000000 --- a/projects/beekava/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens') - -const WkavaBeekLpAddress = "0x6F95ff58Cdbf17594882E7EF948687aC81c2fEE0"; - -const ERC20ContractWkavaAddress = ADDRESSES.kava.WKAVA; -const ERC20ContractBeekAddress = "0xb520e9C5123A450828c190cb6073583a5ecd0d74"; - -const POL_Pool_One = "0x00635507895D30801f60a2859990420013068ee0"; -const POL_Pool_Two = "0x339522a317E74ac1f7D4d8D9bDc3181a9801416E"; -const POL_Pool_Three = "0x8470991Ce998d336146104549A04690082f2B372"; -const owners = [POL_Pool_One, POL_Pool_Two, POL_Pool_Three,] - -module.exports = { - kava: { - tvl: sumTokensExport({ owners, tokens: [ERC20ContractWkavaAddress] }), - pool2: sumTokensExport({ owners, tokens: [WkavaBeekLpAddress], lps: [WkavaBeekLpAddress], useDefaultCoreAssets: true, }), - staking: sumTokensExport({ owners, tokens: [ERC20ContractBeekAddress], lps: [WkavaBeekLpAddress], useDefaultCoreAssets: true, }), - } -}; diff --git a/projects/beethovenx-sftmx/index.js b/projects/beethovenx-sftmx/index.js deleted file mode 100644 index 23f887c921f..00000000000 --- a/projects/beethovenx-sftmx/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: "Retrieve the total underlying FTM/sonic supply", -}; - - -const config = { - fantom: '0xB458BfC855ab504a8a327720FcEF98886065529b', - sonic: ADDRESSES.sonic.STS, -} - -Object.keys(config).forEach(chain => { - const liquidStakingContract = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const abi = chain === 'fantom' ? 'totalFTMWorth' : 'totalAssets' - const supply = await api.call({ abi: "uint256:" + abi, target: liquidStakingContract, }); - api.addGasToken(supply) - return sumTokens2({ api }) - } - } -}) \ No newline at end of file diff --git a/projects/beethovenx-v3/index.js b/projects/beethovenx-v3/index.js deleted file mode 100644 index 6fc1ab0c6d9..00000000000 --- a/projects/beethovenx-v3/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { v3Tvl } = require("../helper/balancer") - -const config = { - sonic: { vault: '0xbA1333333333a1BA1108E8412f11850A5C319bA9', fromBlock: 368135 }, -} - -Object.keys(config).forEach(chain => { - const {vault, fromBlock,} = config[chain] - module.exports[chain] = { - tvl: v3Tvl(vault, fromBlock) - } -}) \ No newline at end of file diff --git a/projects/beethovenx/index.js b/projects/beethovenx/index.js deleted file mode 100644 index c3763a50fcc..00000000000 --- a/projects/beethovenx/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { onChainTvl } = require("../helper/balancer"); - -module.exports = { - fantom: { - tvl: onChainTvl('0x20dd72ed959b6147912c2e529f0a0c651c33c9ce', 16896080), - }, - optimism: { - tvl: onChainTvl('0xBA12222222228d8Ba445958a75a0704d566BF2C8', 7003431), - }, - sonic: { - tvl: onChainTvl('0xBA12222222228d8Ba445958a75a0704d566BF2C8', 368312), - }, -}; diff --git a/projects/beglobal/index.js b/projects/beglobal/index.js deleted file mode 100644 index 3f604b4ae0c..00000000000 --- a/projects/beglobal/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'bsc', - masterchef: '0x7883aD0e83ce50f4820a862EdB56f756599A3248', - nativeToken: '0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3', -}) \ No newline at end of file diff --git a/projects/behodler/index.js b/projects/behodler/index.js deleted file mode 100644 index 42234bdf24f..00000000000 --- a/projects/behodler/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum:{ - tvl: sumTokensExport({ - owner: '0x1B8568FbB47708E9E9D31Ff303254f748805bF21', - tokens: [ - '0xaFEf0965576070D1608F374cb14049EefaD218Ec', - '0x4f5704D9D2cbCcAf11e70B34048d41A0d572993F', - ADDRESSES.ethereum.BAT, - '0x319eAd06eb01E808C80c7eb9bd77C5d8d163AddB', - '0xF047ee812b21050186f86106f6cABDfEc35366c6', - '0x155ff1A85F440EE0A382eA949f24CE4E0b751c65', - ADDRESSES.ethereum.MKR, - ADDRESSES.ethereum.LINK, - '0x4575f41308EC1483f3d399aa9a2826d74Da13Deb', - ADDRESSES.ethereum.DAI, - '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d', - '0x42476F744292107e34519F9c357927074Ea3F75D', - '0x890ff7533Ca0C44F33167FdEEeaB1cA7E690634F', - ], - resolveLP: true, - }), - }, -} \ No newline at end of file diff --git a/projects/belief-market/index.js b/projects/belief-market/index.js deleted file mode 100644 index c29bcacfcc8..00000000000 --- a/projects/belief-market/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); - -const BSC_MARKET_CONTRACT = '0xab1fB9B0efA9235AFF385639611cB1BbbbCc3b40'; -const BASE_MARKET_CONTRACT = '0x5035608222e1C226781CAa22fe40D0DB6cc6c119'; - -async function bscTvl(api) { - const balance = await api.call({ - abi: 'erc20:balanceOf', - target: ADDRESSES.bsc.USDT, - params: [BSC_MARKET_CONTRACT], - }); - - api.add(ADDRESSES.bsc.USDT, balance); -} - -async function baseTvl(api) { - const balance = await api.call({ - abi: 'erc20:balanceOf', - target: ADDRESSES.base.USDC, - params: [BASE_MARKET_CONTRACT], - }); - - api.add(ADDRESSES.base.USDC, balance); -} - -module.exports = { - methodology: 'TVL is calculated as the sum of all tokens (USDT on BSC, USDC on Base) held in the main protocol betting contracts. Only active market pots are included - settled markets with paid out funds are excluded from TVL.', - start: 1712016000, // April 1, 2024 timestamp - bsc: { - tvl: bscTvl, - }, - base: { - tvl: baseTvl, - } -}; \ No newline at end of file diff --git a/projects/bella.js b/projects/bella.js deleted file mode 100644 index 54b6194a103..00000000000 --- a/projects/bella.js +++ /dev/null @@ -1,118 +0,0 @@ - -const { sumTokens2 } = require('./helper/unwrapLPs') -const ADDRESSES = require('./helper/coreAssets.json'); -const { getPoolLiquidityAmount } = require('./bella/izi'); -const iziABI = require('./bella/abis/izi'); - -const bVaults = { - bUsdt: '0x2c23276107b45E64c8c59482f4a24f4f2E568ea6', - bUsdc: '0x8016907D54eD8BCf5da100c4D0EB434C0185dC0E', - bArpa: '0x750d30A8259E63eD72a075f5b6630f08ce7996d0', - bWbtc: '0x3fb6b07d77dace1BA6B5f6Ab1d8668643d15a2CC', - bHbtc: '0x8D9A39706d3B66446a298f1ae735730257Ec6108', - // bBusd: '0x378388aa69f3032FA46150221210C7FA70A35153', // according to the team this is deprecated -} - -const uniswapV2Pools = [ - ['0xf0d1109e723cb06e400e2e57d0b6c7c32bedf61a','0x6731a6a2586a0d555dcff7eb4d8fb7444bdfde2a'], // belUsdt - ['0x9e98deac1a416c9ce3c892bd8eef586f1291ca35','0x994be2994471d5ef93c600cf78c2752c5e96f5a7'], // belEth - ['0x9F624b25991b99D7b14d6740A9D581DD77980808','0xc935285b0d88069305431dace0c3c01d7e793d84'], // arpaUsdt -] - -async function tvl(api) { - const tokens = Object.values(bVaults) - const utokens = await api.multiCall({ calls: tokens, abi: 'address:token'}) - const bals = await api.multiCall({ calls: tokens, abi: "uint256:underlyingBalance"}) - api.add(utokens, bals) - -} - -async function pool2(api) { - return sumTokens2({ api, tokensAndOwners: uniswapV2Pools, resolveLP: true, }) -} - -module.exports = { - ethereum: { - tvl, - pool2, - }, - manta: { - pool2: async (api) => { - const STONE = ADDRESSES.berachain.STONE - const WUSDM = '0xbdAd407F77f44F7Da6684B416b1951ECa461FB07' - const IZI = '0x91647632245cabf3d66121f86c387ae0ad295f9a' - const miningContract = '0x2C9bFcA337bAc7cBdA3B80D1b2d10ed6482D7C0f' - const MiningABI = iziABI.mantaMiningABI; - const { totalTokenX_, totalTokenY_, totalNIZI_ } = await api.call({ - abi: MiningABI, - target: miningContract, - chain: 'manta', - }); - - return { - [`manta:${STONE}`]: totalTokenY_, - [`manta:${WUSDM}`]: totalTokenX_, - [`manta:${IZI}`]: totalNIZI_, - } - } - }, - mantle: { - pool2: async (api) => { - const swapPool = '0xC865dd3421a6DD706688955fe727C802A98c1df9'; - const miningPool = '0xBF2b951Ae6af066A03Dbfa52b1329704D923980c'; - - const { rewardUpperTick_, rewardLowerTick_, totalVLiquidity_ } = - await api.call({ - abi: iziABI.mantleMiningABI, - target: miningPool, - chain: 'mantle', - }); - - const totalNizi = await api.call({ - abi: iziABI.mantleTotalNiZiABI, - target: miningPool, - chain: 'mantle', - }); - - const { liquidity, liquidityX, currentPoint } = await api.call({ - abi: iziABI.mantlePoolABI, - target: swapPool, - chain: 'mantle', - }); - - const { amountX, amountY } = getPoolLiquidityAmount( - { - rewardUpperTick_, - rewardLowerTick_, - totalVLiquidity_, - }, - currentPoint, - liquidity, - liquidityX - ); - - return { - [`ethereum:${ADDRESSES.ethereum.USDC}`]: amountX, - [`ethereum:${ADDRESSES.ethereum.USDT}`]: amountY, - [`bsc:${ADDRESSES.bsc.iZi}`]: totalNizi, - }; - }, - }, - era: { - pool2: async (api) => { - const pool2s = [ - '0x9FB6Ca27D20E569E5c8FeC359C9d33D468d2803C', - '0x3bd7a1D8c760d8be1bC57A3205cbFfBaDFB74D94' - ] - const infoABI = "function getMiningContractInfo() external view returns (address tokenX, address tokenY, uint24 fee_, address iziTokenAddr, uint256 lastTouchTime_, uint256 totalVLiquidity_, uint256 bal0, uint256 bal1, uint256 balIzi, uint256 startTime_, uint256 endTime_)" - - const data = await api.multiCall({ abi: infoABI, calls: pool2s }) - for (const { tokenX, tokenY, iziTokenAddr, bal0, bal1, balIzi } of data) { - api.add(tokenX, bal0) - api.add(tokenY, bal1) - api.add(iziTokenAddr, balIzi) - } - }, - }, -} - diff --git a/projects/bella/abis/bVault.js b/projects/bella/abis/bVault.js deleted file mode 100644 index 2ca1304656f..00000000000 --- a/projects/bella/abis/bVault.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - "token": "address:token", - "underlyingBalance": "uint256:underlyingBalance" -} diff --git a/projects/bella/abis/izi.js b/projects/bella/abis/izi.js deleted file mode 100644 index c98d4a91dcf..00000000000 --- a/projects/bella/abis/izi.js +++ /dev/null @@ -1,7 +0,0 @@ - -module.exports = { - mantlePoolABI: "function state() view returns (uint160 sqrtPrice_96, int24 currentPoint, uint16 observationCurrentIndex, uint16 observationQueueLen, uint16 observationNextQueueLen, bool locked, uint128 liquidity, uint128 liquidityX)", - mantleMiningABI: "function getMiningContractInfo() view returns (address tokenX_, address tokenY_, uint24 fee_, tuple(address rewardToken, address provider, uint256 accRewardPerShare, uint256 rewardPerSecond)[] rewardInfos_, address iziTokenAddr_, int24 rewardUpperTick_, int24 rewardLowerTick_, uint256 lastTouchTime_, uint256 totalVLiquidity_, uint256 startTime_, uint256 endTime_)", - mantleTotalNiZiABI: "uint256:totalNIZI", - mantaMiningABI: "function getMiningContractInfo() view returns (address tokenX_, address tokenY_, uint24 fee_, address iziTokenAddr_, uint256 lastTouchTime_, uint256 totalVLiquidity_, uint256 totalTokenX_, uint256 totalTokenY_, uint256 totalNIZI_, uint256 startTime_, uint256 endTime_)" -}; diff --git a/projects/bella/izi.js b/projects/bella/izi.js deleted file mode 100644 index 12977c36a6d..00000000000 --- a/projects/bella/izi.js +++ /dev/null @@ -1,101 +0,0 @@ -const { BigNumber } = require("bignumber.js"); - -const { - _getAmountX, - _getAmountY, - _liquidity2AmountXAtPoint, - _liquidity2AmountYAtPoint, - point2PoolPriceUndecimalSqrt, -} = require("./util"); - -const getLiquidityValue = ( - liquidity, - leftPoint, - rightPoint, - currentPoint, - currentLiqudity, - currentLiqudityX -) => { - let amountX = new BigNumber(0); - let amountY = new BigNumber(0); - const liquid = liquidity; - const sqrtRate = Math.sqrt(1.0001); - const leftPtNum = Number(leftPoint); - const rightPtNum = Number(rightPoint); - // compute amountY without currentPt - if (leftPtNum < currentPoint) { - const rightPt = Math.min(currentPoint, rightPtNum); - const sqrtPriceR = point2PoolPriceUndecimalSqrt(rightPt); - const sqrtPriceL = point2PoolPriceUndecimalSqrt(leftPtNum); - amountY = _getAmountY( - new BigNumber(liquid), - sqrtPriceL, - sqrtPriceR, - sqrtRate, - false - ); - } - - // compute amountX without currentPt - if (rightPtNum > currentPoint + 1) { - const leftPt = Math.max(currentPoint + 1, leftPtNum); - const sqrtPriceR = point2PoolPriceUndecimalSqrt(rightPtNum); - amountX = _getAmountX( - new BigNumber(liquid), - leftPt, - rightPtNum, - sqrtPriceR, - sqrtRate, - false - ); - } - - // compute amountX and amountY on currentPt - if (leftPtNum <= currentPoint && rightPtNum > currentPoint) { - const liquidityValue = new BigNumber(liquidity); - const maxLiquidityYAtCurrentPt = new BigNumber(currentLiqudity).minus( - currentLiqudityX - ); - const liquidityYAtCurrentPt = liquidityValue.gt(maxLiquidityYAtCurrentPt) - ? maxLiquidityYAtCurrentPt - : liquidityValue; - const liquidityXAtCurrentPt = liquidityValue.minus(liquidityYAtCurrentPt); - const currentSqrtPrice = point2PoolPriceUndecimalSqrt(currentPoint); - amountX = amountX.plus( - _liquidity2AmountXAtPoint(liquidityXAtCurrentPt, currentSqrtPrice, false) - ); - amountY = amountY.plus( - _liquidity2AmountYAtPoint(liquidityYAtCurrentPt, currentSqrtPrice, false) - ); - } - return { - amountX: amountX.toFixed(0), - amountY: amountY.toFixed(0), - }; -}; - -const getPoolLiquidityAmount = ( - miningInfo, - currentPoint, - currentLiquidity, - currentLiquidityX -) => { - const rangeLen = - Number(miningInfo.rewardUpperTick_) - Number(miningInfo.rewardLowerTick_); - - const liquidity = new BigNumber(miningInfo.totalVLiquidity_) - .div(rangeLen) - .div(rangeLen) - .times(1e6); - - return getLiquidityValue( - liquidity.toFixed(0), - Number(miningInfo.rewardLowerTick_), - Number(miningInfo.rewardUpperTick_), - Number(currentPoint), - currentLiquidity, - currentLiquidityX - ); -}; - -module.exports.getPoolLiquidityAmount = getPoolLiquidityAmount; diff --git a/projects/bella/util.js b/projects/bella/util.js deleted file mode 100644 index 91f4f3c758e..00000000000 --- a/projects/bella/util.js +++ /dev/null @@ -1,82 +0,0 @@ -const { BigNumber } = require("bignumber.js"); - -const BIG_TEN = new BigNumber(10); - -const point2PoolPriceUndecimalSqrt = (point) => { - return (1.0001 ** point) ** 0.5; -}; - -const _getAmountX = ( - liquidity, - leftPt, - rightPt, - sqrtPriceR, - sqrtRate, - upper -) => { - const sqrtPricePrPc = Math.pow(sqrtRate, rightPt - leftPt + 1); - const sqrtPricePrPd = Math.pow(sqrtRate, rightPt + 1); - - const numerator = sqrtPricePrPc - sqrtRate; - const denominator = sqrtPricePrPd - sqrtPriceR; - - if (!upper) { - const amount = new BigNumber( - liquidity.times(numerator).div(denominator).toFixed(0, 3) - ); - return amount; - } else { - const amount = new BigNumber( - liquidity.times(numerator).div(denominator).toFixed(0, 2) - ); - return amount; - } -}; - -const _getAmountY = (liquidity, sqrtPriceL, sqrtPriceR, sqrtRate, upper) => { - const numerator = sqrtPriceR - sqrtPriceL; - const denominator = sqrtRate - 1; - if (!upper) { - const amount = new BigNumber( - liquidity.times(numerator).div(denominator).toFixed(0, 3) - ); - return amount; - } else { - const amount = new BigNumber( - liquidity.times(numerator).div(denominator).toFixed(0, 2) - ); - return amount; - } -}; - -const _liquidity2AmountXAtPoint = (liquidity, sqrtPrice, upper) => { - const amountX = liquidity.div(sqrtPrice); - if (!upper) { - return new BigNumber(amountX.toFixed(0, 3)); - } else { - return new BigNumber(amountX.toFixed(0, 2)); - } -}; - -const _liquidity2AmountYAtPoint = (liquidity, sqrtPrice, upper) => { - const amountY = liquidity.times(sqrtPrice); - if (!upper) { - return new BigNumber(amountY.toFixed(0, 3)); - } else { - return new BigNumber(amountY.toFixed(0, 2)); - } -}; - -const amount2Decimal = (amount, tokenDecimal) => { - return new BigNumber(amount).dividedBy(BIG_TEN.pow(tokenDecimal)).toNumber(); -}; - -module.exports = { - BIG_TEN, - amount2Decimal, - _liquidity2AmountXAtPoint, - _liquidity2AmountYAtPoint, - _getAmountY, - _getAmountX, - point2PoolPriceUndecimalSqrt, -}; diff --git a/projects/belt/config.js b/projects/belt/config.js deleted file mode 100644 index bb1fb3c5d3a..00000000000 --- a/projects/belt/config.js +++ /dev/null @@ -1,102 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const CONFIG = { - bsc: [ - ADDRESSES.bsc.beltBTC, - ADDRESSES.bsc.beltBNB, - '0xcb3346ad40c947a2228b2e224c3931a5224ba7ad', - '0xecb589831eefbdbbc48d1f86294724c76acd3314', - ADDRESSES.bsc.beltETH, - '0x9a144edd7309bcc4e106a1a04e7fc402115a0980', - '0x5142f6857f029bed5ddf6247d8a1f75984a3a380', - '0x1794bb186c15fddbf4aac4a3b0e2f40659e9b841', - '0x9a86fc508a423ae8a243445dba7ed5364118ab1d', - '0x27932f578128211f4c593f864ee2054b78f94992', - '0x4f52533c9504df756ecdfd311a8b846a59422e4e', - '0x55e1b1e49b969c018f2722445cd2dd9818ddcc25', - '0xdcfe3ca4863059ae2da63c7fdea04541bea178f9', - '0x7a59bf07d529a5fdbab67d597d63d7d5a83e61e5', - '0xed8487acc0d124efb5e8cfb5cf391caefbf99cbf', - '0x48f7fbea3781b95a9ac1cedb3d277bc3570bdcab', - '0x5ace08ff6d79663f9bf90686744c214317d0df8e', - '0x9171bf7c050ac8b4cf7835e51f7b4841dfb2ccd0', - '0x87c6668d33f224fe00adb3ef85a4a5ab4d5bf257', - '0x4b91dac1229f41c4d322f5f0fea246f069fb81a3', - '0xba2f7cb88d818bba7e932310f49d754eb29eb2ef', - '0xe12135207747d2ec1d1f0aabd4535e6ee08b853b', - '0x94065e5740b9c0560be9b830da0b2896da5f86d8', - '0x090f22ca2e3429f1f4dd38052cb451653e98f0c2', - ], - klaytn: [ - '0x7B6A8e0c40D3C3405afd5b4BAd3F5c202e18d518', - '0x766A73C9f9d51C773c95C649e26c59063f570cf8', - '0xf70644e5650e2ef5f0D31dF46e7e369771c2707F', - '0x1f450aE0AfC30b19610A57b52F9ac8C317Ac5B6A', - '0x3331e6EE96416E1B52B3182b67Faa970DC9a4F54', - '0xB551b72c1fC69E349180e1Feb11D87C719321274', - '0xe510d40a4B92302798d6baA1eF004E4629438e81', - '0x9B433Fb8424fCB35d6614C12559bA513F77b376f', - '0x2aD2811A8387191Ba08DACf8B95cC018B108252B', - '0x36715E1C3FD2Df068292De739F925dbdd28D7617', - '0x99084eb75E406A55dB913FA3E4f822Ff3690eAF5', - '0x426533F501c3615A4244087d2A9981b037C40D46', - '0xc0c09760BA26434d5482f61ae82a543c72ea8D08', - '0x3677F31C23D668d4c733f2a032ee2d3bc37aB4d9', - '0x2df990677D1E71BAEa494Ff962b408c06B8Cf6E1', - '0x9D2a003fe5FE21aB7CB1235080e48Ef801A1EE01', - '0x826c88315bb441e6886a63f80164E67F89359C5A', - '0x415cA0bbeD91664F5f94D8c62d6CB480F182a9CE', - '0xa541f77f0049A828c3CB8C800d877822Bbc7305c', - '0xF1FF200995ceC953B0A8c8539c21AF4AcC455186', - '0x94A37969EEB922535080E102F74d3c7b29470Afe', - '0xe7fa18E435FE9aCBdFb5016514B00C61C9a27507', - '0x3D5e1dd34e80E71Bcecad3eC1892B8aEe161A786', - '0x4935d93a4fe73E0F7E8bDFc9eF2e4eC79CDf1eB7', - '0x1E5dF060e7320414a2E9300968C66DD01291ca79', - '0x6731582c2F003741c135eC79F74864944A2884b0', - '0x39Ff319dd1282452cd73154B6ac670449234230F', - '0xf54c5E2305Bfe7dc62c6f1C0506c904F5564734b', - '0xBb8E0F162d53E15Dc1121081defF153b3A9481eF', - '0x31a1FCeB1296c1FE0e0A3D29658fA95898aE4f69', - '0x8A5724CA16eE5Cd4B6Ed6aFC8ab7766134CEAc53', - '0x430a6768Ef348B06F65F1FEEf01B9b2B58C75f79' - ], - heco: [ - '0xe8f67d3Dd4587E065d4abE8dCBe454E84526A715', - '0x6D8C89C937B68352916904Cb9FB39BA3aCd05c75', - '0x0bd7a237672BB287E31B80671704f83335E571f2', - '0x46e0898B8C480Bc3bF864a5C64Cd06940Ff33B4b', - '0x4Cd59EEB3a4D2fa5c35FD3dE0BA1723EeaF1D258', - '0x9d5E7AC92a7495EbCC0190964A3b90dfaFc2CF51', - '0x7840c4C08ab91AB23F57018BF6202a64C7C67588', - '0x923C5DD2449d7DCc54a86635F9196BEB2a4921a1', - '0x8434b37b493B27a1e679062210B74B4B22a66F38', - '0xB1493B7bc8e260B0b25235ae5c34B0dC201ce8C3', - '0x8d3a8a05e74c41edc6cd2cba2ec7fca0e1c611bb', - '0xff8376a18db1889abdf325cd28f37a12d2685b86', - '0xeb751332103b713b40321f86f5ab5468143c45aa', - '0xD3E341FDfa1c71C138e59c088EeBC069e2CfF96e', - '0x86f5c8eb736c95dd687182779edd792fef0fa674', - '0x5d790E3485aa6Dfe5b4F810C77CD7A41dF7B4CAC', - '0xCC6c6d6a68f303DaEE2F75C3D0E8688987cad2d8', - '0x00e517A416827720F00e61d9033E99426a6C3C63', - '0x96a020e1B07089e92f67FbFf1b870E638bf5a711', - '0x0e564BC863c2072C47FB8f952062BD5bc673E142', - '0xbca98b7049562B3BDA2E095fEf40626cf77Bc2f3', - '0x871dA29944D9CAeB25e048e6196D27c683C33796', - '0xCD70C61807130FcD68d8E2d0F32b2FB8be7A6C40', - '0x280Ae883FD219a56ef5182799f324451eaFE201D', - '0x9bC7a8ec3a8b9d9AEc0C5808456e35A934f457e5', - '0x2c03530b77699F08c69eCc4D33F801fb667f3406', - '0xBB550cDE1C88C2041Db27DC2fCf67f5354ECa0Ae', - '0x44F95Fa54b2ac1cEF14F5085dB2B1a7850b6881C', - '0x25D6A0133CF98E98e462a2a1AD127a5faEB01602', - '0xA8714b9c86Fb590bF2CEE12bdFccC575aB454272', - '0x2df074959D0f3FCfE9b5bFc18E4f9a3F7f56EDCc', - '0x50Cb33F99e05688b4969F728431041f6AA83A086', - '0xF95a075F57887405a424BAE3825086DeEa5c2a99', - '0x50eBED91FDf0dD0bBf2a46eCfB00e31F897dc870', - '0xC04a84d0E3f290D0777c233E0945678469adF353', - ] -} - -module.exports = CONFIG; \ No newline at end of file diff --git a/projects/belt/index.js b/projects/belt/index.js deleted file mode 100644 index f7868460d23..00000000000 --- a/projects/belt/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const CONFIG = require('./config') - -const beltView = '0xB543248F75fd9f64D10c247b5a57F142EFF88Aac' - -const abi = { - calcPoolValueInToken: "uint256:calcPoolValueInToken", - token: "address:token", - getStakingStat: "function getStakingStat() view returns (tuple(address token, address beltToken, uint256 totalLockedWant, uint256 tokenDecimal, uint256 beltTokenDecimal, uint256 beltTokenTotalSupply, uint256 lockUpPeriod, uint256 pricePerFullShare) info)" -} - -const tvl = async (api) => { - const tokens = await api.multiCall({ calls: CONFIG[api.chain], abi: abi.token }) - const suppliesInToken = await api.multiCall({ calls: CONFIG[api.chain], abi: abi.calcPoolValueInToken }) - api.add(tokens, suppliesInToken) -} - -const staking = async (api) => { - const { token, pricePerFullShare, beltTokenTotalSupply } = await api.call({ target: beltView, abi: abi.getStakingStat }) - api.add(token, beltTokenTotalSupply * pricePerFullShare / 1e18) -} - -module.exports = { - methodology: 'TVL includes the liquidity of all the Vaults, 3Tether LP and staking counts the BELT that has been staked in BSC.', - bsc: { tvl, staking }, - heco: { tvl }, - klaytn: { tvl } -} - -Object.keys(module.exports.heco).forEach(key => module.exports.heco[key] = () => ({})) \ No newline at end of file diff --git a/projects/beluga-dex/index.js b/projects/beluga-dex/index.js deleted file mode 100644 index a3d9e608203..00000000000 --- a/projects/beluga-dex/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const asssetsContract = "0xF6Eb0eE167e3b8a43E74999C47720140A9431448" - -async function tvl(api) { - const tokensAndOwners = await api.call({ - target: asssetsContract, - abi: "function getAssets() view returns (address[][])", - }) - return sumTokens2({ api, tokensAndOwners, }) -} - -module.exports = { - arbitrum:{ - tvl, - staking: staking( - "0x7fbdEb84D5966c1C325D8CB2E01593D74c9A41Cd", //vetoken - "0x09090e22118b375f2c7b95420c04414E4bf68e1A", //bela - ), - }, -}; diff --git a/projects/beluga-protocol/index.js b/projects/beluga-protocol/index.js deleted file mode 100644 index fe04945c293..00000000000 --- a/projects/beluga-protocol/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport, } = require('../helper/solana') - -module.exports = { - timetravel: false, - solana: { - tvl: sumTokensExport({ owner: '37YxD3yze3v92pFdER4X5ymUbLSmRoMP99WDgA18Gt8k' }), - }, - deadFrom: '2022-11-13', - methodology: 'TVL consists of staked tokens', -} diff --git a/projects/beluga/index.js b/projects/beluga/index.js deleted file mode 100644 index 5a0737dfd0c..00000000000 --- a/projects/beluga/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const sdk = require('@defillama/sdk') - -const config = { - fantom: { - factory: '0x83ae1aec3f9be3cf55db2f5d8acb09956dcdc233', - fromBlock: 33212099, - topic: '0x688da1863a5295d623a6e790e9bd1530833713e4656764558f6fda4ed9922900', - }, - polygon: { - factory: '0x0208086CC6d2e2792Ca66C5C85d4d8D04Ce7FeE4', - fromBlock: 21961980, - topic: '0x688da1863a5295d623a6e790e9bd1530833713e4656764558f6fda4ed9922900', - } -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, topic, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - const data = await getLogs({ - api, - target: factory, - topics: [topic], - fromBlock, - eventAbi: 'event VaultDeployment(address vault, address strategy, string vaultType)', - }) - - const vaults = data.map(i => i.args.vault) - const underlying = await api.multiCall({ abi: 'address:underlying', calls: vaults, }) - const bals = await api.multiCall({ abi: 'uint256:underlyingBalanceInVault', calls: vaults, }) - bals.forEach((a, i) => sdk.util.sumSingleBalance(balances, underlying[i], a, chain)) - return balances - } - } -}) \ No newline at end of file diff --git a/projects/bemo-v2/index.js b/projects/bemo-v2/index.js deleted file mode 100644 index 5d7d569d63c..00000000000 --- a/projects/bemo-v2/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { call } = require("../helper/chain/ton"); - -module.exports = { - timetravel: false, - methodology: "bmTon", - ton: { - tvl: async () => { - const result = await call({ target: "EQCSxGZPHqa3TtnODgMan8CEM0jf6HpY-uon_NMeFgjKqkEY", abi: "get_full_data" }) - return { "coingecko:the-open-network": result[1] / 1e9 }; - } - } -} \ No newline at end of file diff --git a/projects/bemo/index.js b/projects/bemo/index.js deleted file mode 100644 index 46ea4ef6607..00000000000 --- a/projects/bemo/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { call } = require("../helper/chain/ton"); - -module.exports = { - timetravel: false, - methodology: "stTon", - ton: { - tvl: async () => { - const result = await call({ target: ADDRESSES.ton.stTON, abi: "get_full_data" }) - return { "coingecko:the-open-network": result[1] / 1e9 }; - } - } -} diff --git a/projects/bencu/index.js b/projects/bencu/index.js deleted file mode 100644 index 21c5cb19042..00000000000 --- a/projects/bencu/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { compoundExports2 } = require("../helper/compound") - -module.exports = { - metis: compoundExports2({ - comptroller: '0xC5986Df018D1ff8ecA79fd3f266428616617cDF3', - }) -} \ No newline at end of file diff --git a/projects/benddao-ape-staking/index.js b/projects/benddao-ape-staking/index.js deleted file mode 100644 index 0070c3232bb..00000000000 --- a/projects/benddao-ape-staking/index.js +++ /dev/null @@ -1,96 +0,0 @@ -const abi = require("../benddao/helper/abis"); -const address = require("../benddao/helper/address"); -const sdk = require("@defillama/sdk"); - -module.exports = { - ethereum: { - tvl: async (api) => { - const balances = {}; - - const addressMap = address[api.chain]; - - const nftList = [addressMap.BAYC, addressMap.MAYC, addressMap.BAKC]; - - const [stakedTotal, apeCoinBalance, nftBalance] = await Promise.all([ - api.multiCall({ - calls: [ - // v1 - addressMap.BoundBAYC, - addressMap.BoundMAYC, - addressMap.BoundBAKC, - // v2 - addressMap.BendStakeManager, - addressMap.NftVault, - ], - target: addressMap.ApeCoinStaking, - abi: abi.ApeCoinStaking.stakedTotal, - }), - api.multiCall({ - calls: [ - // v1 - addressMap.BoundBAYC, - addressMap.BoundMAYC, - addressMap.BoundBAKC, - // v2 - addressMap.BendCoinPool, - addressMap.BendNftPool, - ], - target: addressMap.ApeCoin, - abi: "erc20:balanceOf", - }), - api.multiCall({ - calls: nftList.map((nft) => ({ - target: nft, - params: [addressMap.NftVault], - })), - abi: abi.ERC721.balanceOf, - }), - ]); - - stakedTotal.forEach((d) => - sdk.util.sumSingleBalance(balances, addressMap.ApeCoin, d, api.chain) - ); - - apeCoinBalance.forEach((d) => - sdk.util.sumSingleBalance(balances, addressMap.ApeCoin, d, api.chain) - ); - - nftBalance.forEach((d, i) => { - sdk.util.sumSingleBalance(balances, nftList[i], d, api.chain); - }); - - return balances; - }, - }, - apechain: { - tvl: async (api) => { - const balances = {}; - - const addressMap = address[api.chain]; - - const nftList = [addressMap.BAYC, addressMap.MAYC, addressMap.BAKC]; - - const [apeCoinBalance, nftBalance] = await Promise.all([ - api.call({ - abi: abi.BendCoinPool.totalAssets, - target: addressMap.BendCoinPool, - }), - api.multiCall({ - abi: abi.ERC721.balanceOf, - calls: nftList.map((nft) => ({ - target: nft, - params: [addressMap.NftVault], - })), - }), - ]); - - sdk.util.sumSingleBalance(balances, addressMap.WAPE, apeCoinBalance, api.chain) - - nftBalance.forEach((d, i) => { - sdk.util.sumSingleBalance(balances, nftList[i], d, api.ethereum); - }); - - return balances; - }, - }, -}; diff --git a/projects/benddao/helper/abis/ApeCoinStaking.json b/projects/benddao/helper/abis/ApeCoinStaking.json deleted file mode 100644 index 0e6db1278ec..00000000000 --- a/projects/benddao/helper/abis/ApeCoinStaking.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "apeCoin": "function apeCoin() external view returns (address)", - "stakedTotal": "function stakedTotal(address _address) external view returns (uint256)" -} diff --git a/projects/benddao/helper/abis/BNFTRegistry.json b/projects/benddao/helper/abis/BNFTRegistry.json deleted file mode 100644 index c1d3fb34b5b..00000000000 --- a/projects/benddao/helper/abis/BNFTRegistry.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getBNFTAssetList": "function getBNFTAssetList() external view returns (address[] memory)", - "bNftProxys": "function bNftProxys(address) view returns (address)" -} diff --git a/projects/benddao/helper/abis/BendCoinPool.json b/projects/benddao/helper/abis/BendCoinPool.json deleted file mode 100644 index 5deedd6197f..00000000000 --- a/projects/benddao/helper/abis/BendCoinPool.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pendingApeCoin": "function pendingApeCoin() external view returns (uint256);", - "totalAssets": "function totalAssets() public view returns (uint256)" -} \ No newline at end of file diff --git a/projects/benddao/helper/abis/ERC721.json b/projects/benddao/helper/abis/ERC721.json deleted file mode 100644 index 6db3f7d30ac..00000000000 --- a/projects/benddao/helper/abis/ERC721.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "balanceOf": "function balanceOf(address account) view returns (uint256)" -} diff --git a/projects/benddao/helper/abis/UiPoolDataProvider.json b/projects/benddao/helper/abis/UiPoolDataProvider.json deleted file mode 100644 index 686d138eb6b..00000000000 --- a/projects/benddao/helper/abis/UiPoolDataProvider.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getSimpleReservesData": "function getSimpleReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 reserveFactor, bool borrowingEnabled, bool isActive, bool isFrozen, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint40 lastUpdateTimestamp, address bTokenAddress, address debtTokenAddress, address interestRateAddress, uint256 availableLiquidity, uint256 totalVariableDebt, uint256 priceInEth, uint256 variableRateSlope1, uint256 variableRateSlope2)[])", - "getSimpleNftsData": "function getSimpleNftsData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, uint256 redeemDuration, uint256 auctionDuration, uint256 redeemFine, uint256 redeemThreshold, bool isActive, bool isFrozen, address bNftAddress, uint256 priceInEth, uint256 totalCollateral)[])" -} \ No newline at end of file diff --git a/projects/benddao/helper/abis/index.js b/projects/benddao/helper/abis/index.js deleted file mode 100644 index df913efdd9b..00000000000 --- a/projects/benddao/helper/abis/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const UiPoolDataProvider = require("./UiPoolDataProvider.json"); -const ApeCoinStaking = require("./ApeCoinStaking.json"); -const BNFTRegistry = require("./BNFTRegistry.json"); -const ERC721 = require("./ERC721.json"); -const BendCoinPool = require("./BendCoinPool.json"); - -module.exports = { - UiPoolDataProvider, - ApeCoinStaking, - BNFTRegistry, - ERC721, - BendCoinPool, -}; diff --git a/projects/benddao/helper/address.js b/projects/benddao/helper/address.js deleted file mode 100644 index 10e22f82b22..00000000000 --- a/projects/benddao/helper/address.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require("../../helper/coreAssets.json"); -module.exports = { - ethereum: { - UiPoolDataProvider: "0x5250cCE48E43AB930e45Cc8E71C87Ca4B51244cf", - LendPoolAddressProvider: "0x24451F47CaF13B24f4b5034e1dF6c0E401ec0e46", - ApeCoinStaking: "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9", - VeBend: "0xd7e97172C2419566839Bf80DeeA46D22B1B2E06E", - Bend: "0x0d02755a5700414B26FF040e1dE35D337DF56218", - UniswapV2PairWETH: "0x336ef4e633b1117dca08c1a57f4139c62c32c935", - StakedBUNI: "0x647C509AF2A2b2294bB79fCE12DaEc8e7cf938f7", - Treasury: "0x472FcC65Fab565f75B1e0E861864A86FE5bcEd7B", - USDC: ADDRESSES.ethereum.USDC, - ApeCoin: "0x4d224452801ACEd8B2F0aebE155379bb5D594381", - BNFTRegistry: "0x79d922DD382E42A156bC0A354861cDBC4F09110d", - BendStakeManager: "0x9d1833becb105405a8305F775F0aF3157d12B33c", - NftVault: "0xaAa2DA255DF9Ee74C7075bCB6D81f97940908A5D", - BendCoinPool: "0x86862445f58F50382c421a7bceCBcd971cc25367", - BendNftPool: "0x9Da9571389BA2316ad98f695210aD5fB0363cDEd", - BAYC: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", - MAYC: "0x60E4d786628Fea6478F785A6d7e704777c86a7c6", - BAKC: "0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623", - BoundBAYC: "0xDBfD76AF2157Dc15eE4e57F3f942bB45Ba84aF24", - BoundMAYC: "0x69f37e419bD1457d2a25ed3f5d418169caAe8D1F", - BoundBAKC: "0xcF2CC4994Fe9E411A6aDC30d0A11f20CD4D8d2aB", - StBAYC: "0x08f5F0126aF89B4fD5499E942891D904A027624B", - StMAYC: "0xc1ED28E4b4d8e284A41E7474CA5522b010f3A64F", - StBAKC: "0xf6d3B8098967dd349d0477F01C16E8864a832ac2", - }, - apechain: { - WAPE: ADDRESSES.apechain.WAPE, - ApeCoinStaking: "0x4ba2396086d52ca68a37d9c0fa364286e9c7835a", - BendStakeManager: "0x40E7Df7189Ef33711a4B0BFc3B4FDc7678B40d55", - NftVault: "0x79d922DD382E42A156bC0A354861cDBC4F09110d", - BendCoinPool: "0x24451F47CaF13B24f4b5034e1dF6c0E401ec0e46", - BendNftPool: "0x66662bC916BbCEc60F7E88cB849F13A2dbf51BE2", - BAYC: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", - MAYC: "0x60E4d786628Fea6478F785A6d7e704777c86a7c6", - BAKC: "0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623", - StBAYC: "0xBbB884c0A67d44CB2380FC3F1Df6Ee820e3286c5", - StMAYC: "0x501c991E0D31D408c25bCf00da27BdF2759A394a", - StBAKC: "0x8b4117E91a6f6A810651aFae788EC044f13a06a5", - }, -}; \ No newline at end of file diff --git a/projects/benddao/helper/index.js b/projects/benddao/helper/index.js deleted file mode 100644 index 13b7c47d942..00000000000 --- a/projects/benddao/helper/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require("../../helper/unwrapLPs"); - -const abi = require("./abis"); -const address = require("./address"); - -async function tvl(api) { - const addressMap = address[api.chain]; - - const [simpleReservesData, bnftAssetList] = await Promise.all([ - api.call({ - target: addressMap.UiPoolDataProvider, - params: [addressMap.LendPoolAddressProvider], - abi: abi.UiPoolDataProvider.getSimpleReservesData, - }), - api.call({ - target: addressMap.BNFTRegistry, - abi: abi.BNFTRegistry.getBNFTAssetList, - }), - ]); - - const bnftProxyList = await api.multiCall({ - calls: bnftAssetList, - target: addressMap.BNFTRegistry, - abi: abi.BNFTRegistry.bNftProxys, - }); - - const toa = [ - ...bnftAssetList.map((bnftAsset, idx) => { - const bnftProxy = bnftProxyList[idx]; - return [bnftAsset, bnftProxy]; - }), - ...simpleReservesData.map((reserve) => [ - reserve.underlyingAsset, - reserve.bTokenAddress, - ]), - ]; - - const balances = await sumTokens2({ api, tokensAndOwners: toa }); - - // cause stNFT do not have price, it should use the underlying asset price - const stNFTMap = { - [addressMap.StBAYC.toLowerCase()]: addressMap.BAYC.toLowerCase(), - [addressMap.StMAYC.toLowerCase()]: addressMap.MAYC.toLowerCase(), - [addressMap.StBAKC.toLowerCase()]: addressMap.BAKC.toLowerCase(), - }; - - for (const asset in balances) { - const underlyingAsset = stNFTMap[asset]; - if (underlyingAsset) { - sdk.util.sumSingleBalance(balances, underlyingAsset, balances[asset]); - delete balances[asset]; - } - } - - return balances; -} - -async function borrowed(api) { - const balances = {}; - const addressMap = address[api.chain]; - - const [simpleReservesData] = await Promise.all([ - api.call({ - target: addressMap.UiPoolDataProvider, - params: addressMap.LendPoolAddressProvider, - abi: abi.UiPoolDataProvider.getSimpleReservesData, - }), - ]); - - simpleReservesData.forEach((d) => { - sdk.util.sumSingleBalance( - balances, - d.underlyingAsset, - d.totalVariableDebt, - api.chain - ); - }); - - return balances; -} - -module.exports = { - tvl, - borrowed, -}; diff --git a/projects/benddao/index.js b/projects/benddao/index.js deleted file mode 100644 index 75b1913f668..00000000000 --- a/projects/benddao/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); -const { tvl, borrowed } = require("./helper/index"); -const address = require("./helper/address"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - methodology: methodologies.lendingMarket, - ethereum: { - tvl, - borrowed, - staking: staking(address.ethereum.VeBend, address.ethereum.Bend,), - pool2: staking(address.ethereum.StakedBUNI, address.ethereum.UniswapV2PairWETH,), - }, -}; diff --git a/projects/benqi-staked-avax/index.js b/projects/benqi-staked-avax/index.js deleted file mode 100644 index 8a765d59766..00000000000 --- a/projects/benqi-staked-avax/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const SAVAX = ADDRESSES.avax.SAVAX; - -async function tvl(api) { - const pooledAvax = await api.call({ target: SAVAX, abi: "uint256:totalPooledAvax", }); - api.addGasToken(pooledAvax) -} - -module.exports = { - avax: { - tvl, - }, - methodology: "Counts staked AVAX tokens.", - hallmarks: [ - [1643199567, "Benqi SAVAX Launched"] - ], -} diff --git a/projects/benqi-staked-avax/savax.json b/projects/benqi-staked-avax/savax.json deleted file mode 100644 index 23ac13641cd..00000000000 --- a/projects/benqi-staked-avax/savax.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalPooledAvax": "uint256:totalPooledAvax", - "getSharesByPooledAvax": "function getSharesByPooledAvax(uint256 avaxAmount) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/benqi/index.js b/projects/benqi/index.js deleted file mode 100644 index 65656996c35..00000000000 --- a/projects/benqi/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { compoundExports } = require('../helper/compound') -const { pool2 } = require('../helper/pool2') -const sdk = require('@defillama/sdk'); - -module.exports = { - methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", - avax: { - tvl: sdk.util.sumChainTvls([ - compoundExports("0x486af39519b4dc9a7fccd318217352830e8ad9b4", "0x5C0401e81Bc07Ca70fAD469b451682c0d747Ef1c").tvl, - compoundExports("0xD7c4006d33DA2A0A8525791ed212bbCD7Aca763F").tvl, - ]), - borrowed: sdk.util.sumChainTvls([ - compoundExports("0x486af39519b4dc9a7fccd318217352830e8ad9b4", '0x5C0401e81Bc07Ca70fAD469b451682c0d747Ef1c').borrowed, - compoundExports("0xD7c4006d33DA2A0A8525791ed212bbCD7Aca763F").borrowed, - ]), - pool2: pool2("0x784da19e61cf348a8c54547531795ecfee2affd1", "0xe530dc2095ef5653205cf5ea79f8979a7028065c") - } -} \ No newline at end of file diff --git a/projects/benswap/index.js b/projects/benswap/index.js deleted file mode 100644 index 5b6900b2274..00000000000 --- a/projects/benswap/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') - -const WBCH = ADDRESSES.smartbch.WBCH; -const EBEN = "0x77CB87b57F54667978Eb1B199b28a0db8C8E1c0B"; -const FLEXUSD = ADDRESSES.smartbch.flexUSD; -const FACTORY = "0x8d973bAD782c1FFfd8FcC9d7579542BA7Dd0998D"; -const MASTERBREEDER = "0xDEa721EFe7cBC0fCAb7C8d65c598b21B6373A2b6"; -const EBEN_WBCH_LP = "0x0D4372aCc0503Fbcc7EB129e0De3283c348B82c3"; -const COREASSETNAME = "bitcoin-cash"; -const CHAIN = "smartbch"; - -async function bchMasterChef(timestamp, ethBlock, {[CHAIN]: block}) { - - const stakedBCH = (await sdk.api.erc20.balanceOf({ - target: WBCH, - owner: MASTERBREEDER, - chain: CHAIN, - block: block, - decimals: 18 - })).output; - - return { - [COREASSETNAME]: Number(stakedBCH) - } -} - -const bchDexTvl = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (0x8d973bAD782c1FFfd8FcC9d7579542BA7Dd0998D) is used to find the LP pairs on smartBCH and Factory address (0x4dC6048552e2DC6Eb1f82A783E859157d40FA193) is used to find the liquidity of the pairs on BSC. TVL is equal to the liquidity on both AMMs plus the extra staking balance and masterchef pools.", - smartbch: { - tvl: sdk.util.sumChainTvls([bchDexTvl, bchMasterChef]), - // masterchef: bchMasterChef, - staking: stakingPricedLP(MASTERBREEDER, EBEN, "smartbch", EBEN_WBCH_LP, COREASSETNAME), - }, - bsc: { - tvl: getUniTVL({ factory: '0x4dC6048552e2DC6Eb1f82A783E859157d40FA193', useDefaultCoreAssets: true }), - staking: stakingPricedLP("0x03245d87295cd0783e1f10a2ea54f9e80b726af8", "0x8173dda13fd405e5bca84bd7f64e58caf4810a32", "bsc", "0x4558e53328cddd5877b7348702c991f521aa35c0", "binancecoin", true), - }, -} diff --git a/projects/bent/bentBasePoolAbi.json b/projects/bent/bentBasePoolAbi.json deleted file mode 100644 index 8e9afcadd2e..00000000000 --- a/projects/bent/bentBasePoolAbi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "cvxPoolId": "uint256:cvxPoolId", - "lpToken": "address:lpToken" -} \ No newline at end of file diff --git a/projects/bent/constants.js b/projects/bent/constants.js deleted file mode 100644 index 3473f00a379..00000000000 --- a/projects/bent/constants.js +++ /dev/null @@ -1,66 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const addressZero = ADDRESSES.null; -const ethAddress = ADDRESSES.GAS_TOKEN_2; -const wethAddress = ADDRESSES.ethereum.WETH; -const bentCVXAddress = "0x9E0441E084F5dB0606565737158aa6Ab6B970fE0"; -const CVXAddress = ADDRESSES.ethereum.CVX; -const pool2Address = "0xd564b2feec19df8f4d6cb52c0a4386d05a993583"; -const sushiLpAddress = "0x5fa4370164a2fabeef159b893299d59ff5dc1e6d"; -const bentAddress = "0x01597e397605bf280674bf292623460b4204c375"; -const daiAddress = ADDRESSES.ethereum.DAI; -const weBent = "0x04637d61F538911929ff96E755B589C014fD9ce2"; - -const bentPools = { - // BentPoolBentCvxCvx: "0xf083FBa98dED0f9C970e5a418500bad08D8b9732", - BentPoolTriCrypto2: "0xb5a69B26920E1A430b1405Bc75a455d687328D67", - BentPoolMIM: "0x397DD120bF0e6d0f2Af2e12f29d57Fb1A58c041c", - BentPoolFrax: "0xD714e4cB809759ECf37067cfF56feCA887E3C168", - BentPoolAlusd: "0x16b385cc9959BbE83905eA5E71820b406804d037", - BentPoolSTETH: "0x9a50F371B262d8eE84879EEE70B8d41CBC904dd0", - BentPoolMIMUST: "0x5D551CE7564b6D9B95559a70A5648af908a8AD09", - BentPoolOUSD: "0x519590c576D4e0aA49B7614492B64ADB8669F52A", - BentPoolCVXETH: "0xADe08F43C0bA6eAF8F7a100A8f773285b39caBb5", - BentPoolCVXCRV: "0xf5306c00648c8aA07b8e451E2B4176FbA971A7dA", - BentPoolD3Pool: "0xA9E82F48e1cE96e3cE80e6b7E495831823a98AE9", - BentPoolUSTWormHole: "0x7c325F13395334a376D7D388FD3450d38488a1AF", - BentPoolDola: "0xD6B8580a39A17b9fBea427fD50593970f4Ac31b6", - BentPoolCrvEth: "0x5D77b731803916cbcdec2BBdb3Ad0649C6a6EA17", - BentPool3Pool: "0x9a9606a399c62d20d7ba11028ed1218ed3f8f244", -}; - -const bentCVXSingleStaking = "0xe55C5069ED7F8fE2EA656aFf4551af52F8dbdeF7"; - -const crvRegistry = "0x90E00ACe148ca3b23Ac1bC8C240C2a7Dd9c2d7f5"; - -const bentMasterChefAddress = "0xfeAEA5e904D6e8B88888Ea1101c59F4084a94557"; -const bentMasterChefPools = ["0xf083FBa98dED0f9C970e5a418500bad08D8b9732"]; - -const crvPoolByLpTokenAddress = { - "0x3a283d9c08e8b55966afb64c515f5143cf907611": - "0xb576491f1e6e5e62f1d8f26062ee822b40b0e0d4", // cvx-eth - "0xed4064f376cb8d68f770fb1ff088a3d0f3ff5c4d": - "0x8301ae4fc9c624d1d396cbdaa1ed877821d7c511", // crv-eth - "0xc4ad29ba4b3c580e6d59105fff484999997675ff": - "0xd51a44d3fae010294c616388b506acda1bfaae46", // tricrpyto2 - "0xfeaea5e904d6e8b88888ea1101c59f4084a94557": - "0xf083fba98ded0f9c970e5a418500bad08d8b9732", // bentcvx-cvx -}; - -module.exports = { - bentPools, - crvPoolByLpTokenAddress, - crvRegistry, - addressZero, - ethAddress, - wethAddress, - bentMasterChefAddress, - bentMasterChefPools, - bentCVXAddress, - CVXAddress, - bentCVXSingleStaking, - weBent, - pool2Address, - sushiLpAddress, - bentAddress, - daiAddress, -}; diff --git a/projects/bent/curvePoolAbi.json b/projects/bent/curvePoolAbi.json deleted file mode 100644 index aff19a187c8..00000000000 --- a/projects/bent/curvePoolAbi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "coins": "function coins(uint256 arg0) view returns (address)", - "get_dy": "function get_dy(int128 i, int128 j, uint256 dx) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/bent/curveRegistryAbi.json b/projects/bent/curveRegistryAbi.json deleted file mode 100644 index 5d49f4f160b..00000000000 --- a/projects/bent/curveRegistryAbi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "get_pool_from_lp_token": "function get_pool_from_lp_token(address arg0) view returns (address)", - "get_coins": "function get_coins(address _pool) view returns (address[8])" -} \ No newline at end of file diff --git a/projects/bent/index.js b/projects/bent/index.js deleted file mode 100644 index d9aa0b4cbcd..00000000000 --- a/projects/bent/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') -const { - bentPools, - bentCVXAddress, - weBent, - bentCVXSingleStaking, - pool2Address, - sushiLpAddress, - bentAddress, -} = require("./constants"); - -async function tvl(api) { - const poolAddresses = Object.values(bentPools); - const tokens = await api.multiCall({ abi: 'address:lpToken', calls: poolAddresses}) - const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: poolAddresses}) - api.add(tokens, bals) - return api.sumTokens({ owner: bentCVXSingleStaking, token: bentCVXAddress }) - -} - -module.exports = { - methodology: `TVL:BENT allows users to stake their curve LP tokens. For each supported curve pool LP token: Find the total supply of the LP token, Find the balance of LP staked in bent, Find the curve pool whose liquidity it represents, Enumerate the addresses of each token that makes up the pool, Get the balance of each token from 4, Use 1 & 2 to work out the LP share staked in bent, Multiply the token balances from 5 by the bent share to get the bent balances. Pool2 and staking: Pool2 and staking are fairly standard. Pool2 calculates fraction of LP staked as a share of the sushi LP and multiplies by the sushi LP coin balances. Staking simply takes the balance of the staking contract for BENT.`, - ethereum: { - tvl, - pool2: pool2(pool2Address, sushiLpAddress), - staking: staking(weBent, bentAddress), - }, -}; diff --git a/projects/bepro/index.js b/projects/bepro/index.js deleted file mode 100644 index 21d9fc176a9..00000000000 --- a/projects/bepro/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -/** BEPRO Protocol is available on Moonbeam and Moonriver */ -const config = { - "ethereum": { - token: "0xcf3c8be2e2c42331da80ef210e9b1b307c03d36a", - bountyNetworks: [] - }, - "moonriver": { - token: ADDRESSES.moonriver.BEPRO, - bountyNetworks: ["0x85dE589aDc4bC5F17075fcd603E8A0f7561d90C9"] - }, - "moonbeam": { - token: ADDRESSES.moonbeam.BEPRO, - registry: "0x34DD5F63437FdC20557a8C6dDAeA056d3661c5e0", - bountyNetworks: ["0xa9938c8712552Fe0b5312547fA96Ad9f14d58d3C"] - } -} - -module.exports = { - methodology: 'counts the number of BEPRO tokens on Moonbeam Network contracts', -}; - -Object.keys(config).forEach(chain => { - const { token, registry, bountyNetworks = []} = config[chain] - const owners = [...bountyNetworks] - if (registry) owners.push(registry) - module.exports[chain] = { - tvl: () => ({}), - staking: sumTokensExport({ chain, owners, tokens: [token]}) - } -}) diff --git a/projects/bepswap.js b/projects/bepswap.js deleted file mode 100644 index 3e0ddabd65a..00000000000 --- a/projects/bepswap.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - deadFrom: 1630043620, - misrepresentedTokens: true, - bsc: { tvl: () => ({ }) } -} \ No newline at end of file diff --git a/projects/beraborrow/index.js b/projects/beraborrow/index.js deleted file mode 100644 index 90b283e911c..00000000000 --- a/projects/beraborrow/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - -const vaults = [ - // "0x74E852a4f88bfbEff01275bB95d5ed77f2967d12", - // "0x78F87aA41a4C32a619467d5B36e0319F3EAf2DA2", - "0xd62fB1785dc26514657a165BE71e4f8b14A74a44", - "0x9335B678179D433588a16065C4016133E3c2f523", - "0x26666a82cfE70E1aD048939708cA3ACc4982cF9F", - "0x77A0F11926FaaeBe041D723F5B20069FCB4C4c4A", - "0xBdCD947782cCeBa1CD95430Cd6e403E898342962", - "0x3A6E624C162133D318476863A5f28E50bcedc9c3", - "0x8dcb18B561CE7E7b309A2d172bdc2633266dfc85", - "0x2B9371E53b5301B517c772E117616a5c165081F2", - "0x9b6Cf6Ab16C409B3a2c796211c274c8a8da28D1d", - "0x9cE81bC708d6F846E4fA64891982f069941DF0C7", - "0xC9Dd6792768d1a72Dc75891549B0301e18F702aa", - "0x583Cc8a82B55A96a9dED97f5353397c85ee8b60E", - "0xeC5CB1b6849258eEab0613139DFf7698ae256997", - "0x86a9DcbBf816A99e0422143A8E4A326F6811Fb01", - "0xC6cFF91faE96Ac93De25A735D2877614522cbC02", - "0xdf3F6ABbA9Cb5bA375ffeC89bF246800b4Aed3eC", - "0x849232E2144BD5118B5e4A070FE15035cC07b388", -] - -const beraBorrowWberaToken = '0x9158d1b0c9cc4ec7640eaef0522f710dadee9a1b' - -const PSMs = [ - '0xCaB847887a2d516Dfa690fa346638429415c089b', - '0x5623554eCe4E1fd78e8a4ce13D588A8e0053825D', -] - -const getAllCollateralsAndDenManagersAbi = "function getAllCollateralsAndDenManagers() view returns ((address collateral, address[] denManagers)[])" - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - // const beraTokens = await api.multiCall({ abi: 'address:collVault', calls: vaults }) - const pTokens = await api.multiCall({ abi: 'address:stable', calls: PSMs }) - const denInfos = await api.call({ abi: getAllCollateralsAndDenManagersAbi, target: '0xFA7908287c1f1B256831c812c7194cb95BB440e6' }) - const tokensAndOwners = tokens.map((t, i) => [t, vaults[i]]) - - pTokens.forEach((t, i) => tokensAndOwners.push([t, PSMs[i]])) - denInfos.forEach(({ collateral, denManagers }) => { - denManagers.forEach(d => tokensAndOwners.push([collateral, d])) - }) - - const infraredLogs = await getLogs2({ api, factory: '0xb71b3DaEA39012Fb0f2B14D2a9C86da9292fC126', eventAbi: 'event NewVault (address _sender, address indexed _asset, address indexed _vault)', fromBlock: 562092, }) - const infraAssets = infraredLogs.map(log => log._asset) - const names = await api.multiCall({ abi: 'string:name', calls: infraAssets, permitFailure: true, }) - const bbInfraWrappers = infraAssets.filter((a, i) => names[i] && names[i].startsWith('Beraborrow: ')) - const bbInfraWrapperUnderlyings = await api.multiCall({ abi: 'address:underlying', calls: bbInfraWrappers }) - bbInfraWrapperUnderlyings.forEach((u, i) => tokensAndOwners.push([u, bbInfraWrappers[i]])) - const beraTokens = bbInfraWrappers.push(beraBorrowWberaToken) - return api.sumTokens({ tokensAndOwners, blacklistedTokens: beraTokens }) -} - -module.exports = { - berachain: { tvl } -} \ No newline at end of file diff --git a/projects/beracaine/index.js b/projects/beracaine/index.js deleted file mode 100644 index 25b52cf8dc9..00000000000 --- a/projects/beracaine/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const dexTVL = getUniTVL({ factory: '0x0Ec621393958dD9865B912CBdFf808d175B1B9f4', useDefaultCoreAssets: true }) -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0x0Ec621393958dD9865B912CBdFf808d175B1B9f4) address and whitelisted tokens address to find and price Liquidity Pool pairs.`, - berachain: { - tvl: dexTVL - } -}; - - diff --git a/projects/beracana/berachain-contracts.json b/projects/beracana/berachain-contracts.json deleted file mode 100644 index 2d7df23f3c7..00000000000 --- a/projects/beracana/berachain-contracts.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "banks": [ - { - "token": "0x6969696969696969696969696969696969696969", - "bank": "0x768670beAD85b4383940F60AfD8492AC76b2Ba28" - }, - { - "token": "0x1cE0a25D13CE4d52071aE7e02Cf1F6606F4C79d3", - "bank": "0x439c84851bb1edd8db3dd94809ebbea6670682f3" - } - ], - "vaults": [ - { - "vaultAddress": "0x9A6125b077F1bAf6F7F4936DEDC5C2765393b867", - "priceToken": "0x6969696969696969696969696969696969696969" - }, - { - "priceToken": "0x6969696969696969696969696969696969696969", - "vaultAddress": "0xE9B850fF6228a99C966Ca33369d0fE8e1B4a6B4F" - }, - { - "priceToken": "0x6969696969696969696969696969696969696969", - "vaultAddress": "0x8F13E4304B300Dda6019b8c2391782b939367d75" - }, - { - "priceToken": "0x6969696969696969696969696969696969696969", - "vaultAddress": "0xE57fD6aB3eC266b15fF8eB1692678341d97bF887" - }, - { - "priceToken": "0x6969696969696969696969696969696969696969", - "vaultAddress": "0x1B0FbC8a12B51b0fEc6b965a32BE449EA3243051" - }, - { - "priceToken": "0x1cE0a25D13CE4d52071aE7e02Cf1F6606F4C79d3", - "vaultAddress": "0x12dFac6c9a74761d8054f280D05fE96cbe71b452" - }, - { - "priceToken": "0x1cE0a25D13CE4d52071aE7e02Cf1F6606F4C79d3", - "vaultAddress": "0x4e735E0a60174725Da8546B2a9B0B8C9EDD6c2A4" - } - ] -} \ No newline at end of file diff --git a/projects/beracana/index.js b/projects/beracana/index.js deleted file mode 100644 index 2e06fa01e55..00000000000 --- a/projects/beracana/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const defaultAddresses = require('./berachain-contracts.json') - -async function getContracts() { - const contracts = await fetch('https://api.beracana.com/beracana/getContracts2'); - const resp = await contracts.json(); - if (resp.success && resp.data && resp.data.vaults){ - return { vaults: resp.data.vaults } - } else { - return { vaults: defaultAddresses.vaults } - } -} -async function getTvl(api) { - const { vaults } = await getContracts(); - const vaultAddresses = vaults.map(i => i.vaultAddress) - const vaultFunds = await api.multiCall({ abi: 'function totalFunds() view returns (uint256)', calls: vaultAddresses }) - const vaultTokens = vaults.map(i => i.priceToken) - api.add(vaultTokens, vaultFunds) - return sumTokens2({ api, resolveLP: false}) -} - -module.exports = { - berachain:{ - tvl: getTvl - } -}; diff --git a/projects/beradrome/index.js b/projects/beradrome/index.js deleted file mode 100644 index 110267843bb..00000000000 --- a/projects/beradrome/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const BERO = "0x7838CEc5B11298Ff6a9513Fa385621B765C74174"; -const VOTER = "0xd7ea36ECA1cA3E73bC262A6D05DB01E60AE4AD47" - -async function borrowed(api) { - api.add(ADDRESSES.berachain.HONEY, await api.call({ abi: 'uint256:debtTotal', target: BERO })) -} - -async function tvl(api) { - await api.sumTokens({ owner: BERO, token: ADDRESSES.berachain.HONEY }) - const plugins = await api.call({ abi: 'address[]:getPlugins', target: VOTER }) - const tokens = await api.multiCall({ abi: 'address:getToken', calls: plugins}) - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: plugins}) - api.add(tokens, supplies) - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - methodology: `Counts the number of locked HONEY in the Beradrome Bonding Curve and deposited liquidity in Beradrome smart contracts`, - berachain: { - tvl, - borrowed, - }, -}; - diff --git a/projects/beralis-v2/index.js b/projects/beralis-v2/index.js deleted file mode 100644 index 75d01767d02..00000000000 --- a/projects/beralis-v2/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'berachain': '0x9A40c6dCBB0c0BAeB58C41839C057a6431f96C55' -}) - -module.exports.deadFrom = '2025-02-12' \ No newline at end of file diff --git a/projects/beralis-v3/index.js b/projects/beralis-v3/index.js deleted file mode 100644 index 6f1cf5d738a..00000000000 --- a/projects/beralis-v3/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - berachain: { factory: "0xDF84ADE69Ab60c22A3Aad2eD454f017C6E625A28", fromBlock: 1, }, -}); - -module.exports.deadFrom = '2025-02-12' \ No newline at end of file diff --git a/projects/berancia/index.js b/projects/berancia/index.js deleted file mode 100644 index ecf71e6ac3d..00000000000 --- a/projects/berancia/index.js +++ /dev/null @@ -1,183 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const BERA_KODIAK_VAULTS = [ - { - address: "0x40540b9CE95EBdbBcbfd88ceB40a183B20a57fd7", - kodiakIsland: "0x564f011D557aAd1cA09BFC956Eb8a17C35d490e0", - token0: ADDRESSES.berachain.WBERA, - token1: "0xac03CABA51e17c86c921E1f6CBFBdC91F8BB2E6b" - }, - { - address: "0xB5D5c690802a24Be3EE08A5d6e243B9E9926d679", - kodiakIsland: "0x98bDEEde9A45C28d229285d9d6e9139e9F505391", - token0: "0x18878Df23e2a36f81e820e4b47b4A40576D3159C", - token1: ADDRESSES.berachain.HONEY - }, - { - address: "0xd4A98C1e2E3907621867C21b16a465233B31f8b8", - kodiakIsland: "0x337eF1eB6c8BBeD571170Fc2b468608ab9e2Aac8", - token0: ADDRESSES.berachain.WBERA, - token1: "0xBaadCC2962417C01Af99fb2B7C75706B9bd6Babe" - }, - { - address: "0x9488AC8D72A68b7225873c2aEbe31349c86E1Bfd", - kodiakIsland: "0x24afcEB372b755F4953e738d6b38E9e4646D9F57", - token0: "0x9b6761bf2397Bb5a6624a856cC84A3A14Dcd3fe5", - token1: "0xac03CABA51e17c86c921E1f6CBFBdC91F8BB2E6b" - }, - { - address: "0x980f90BBf7992aB3b89F54140060d890a411aaAE", - kodiakIsland: "0x5347e5133b22A680Ee94b7e62803E848F8d8C92e", - token0: "0x7e768f47dfDD5DAe874Aac233f1Bc5817137E453", - token1: "0x982940eBfC5caa2F5b5a82AAc2Dfa99F18BB7dA4" - }, - { - address: "0x585ad5BcD7cC28dAdb3BDd79782D14513171f760", - kodiakIsland: "0x9f6cf7aCb2F16f7d906EeeCB0a6020a5Cf91A41d", - token0: ADDRESSES.berachain.WBERA, - token1: "0xf3530788DEB3d21E8fA2c3CBBF93317FB38a0D3C" - }, -] - -const BULLA_VAULTS = [ - { - address: "0xE5A5Cbc42aE849a3780Ec847184Fd9a7ae3F56A5", - asset: "0xcfFBFD665BEdB19B47837461A5aBf4388C560D35", - token0: ADDRESSES.berachain.WBERA, - token1: "0xac03CABA51e17c86c921E1f6CBFBdC91F8BB2E6b" - }, - // AquaBera vault uses same TVL calculation as bulla vaults - { - address: "0x978A2FfFB70F40Cf9d64755c80a49f177Ff95e18", - asset: "0x04fD6a7B02E2e48caedaD7135420604de5f834f8", - token0: ADDRESSES.berachain.WBERA, - token1: "0xb2F776e9c1C926C4b2e54182Fac058dA9Af0B6A5" - } -] - -const BERA_BORROW_VAULTS = [ - { - address: "0xe3D1716e2b9D8E3ae7E59dbC9588182d433B70f0", - asset: "0x1cE0a25D13CE4d52071aE7e02Cf1F6606F4C79d3", - } -] - -const BURR_BEAR_VAULTS = [ - { - address: "0x51639c7b0A8e20092Bf85F4c7eed74bF933972cC", - asset: "0xD10E65A5F8cA6f835F2B1832e37cF150fb955f23", - poolId: "0xd10e65a5f8ca6f835f2b1832e37cf150fb955f23000000000000000000000004", - vault: "0xBE09E71BDc7b8a50A05F7291920590505e3C7744" - }, - { - address: "0x42dc43875401b2BA1db58be240A06E2e834BA07D", - asset: "0xCbeF1B65399065c2DE2C495971e90466ff38f2d0", - poolId: "0xcbef1b65399065c2de2c495971e90466ff38f2d000000000000000000000001e", - vault: "0xBE09E71BDc7b8a50A05F7291920590505e3C7744" - }, - { - address: "0x3960DFdbDb82b67D31CD490aA4d0D7B3DF2087Ea", - asset: "0x2A9EA10b60Ab02e9B8960a08b4996e6Bf5eA5EAb", - poolId: "0x2a9ea10b60ab02e9b8960a08b4996e6bf5ea5eab000000000000000000000162", - vault: "0x4Be03f781C497A489E3cB0287833452cA9B9E80B" - } -] - -async function beraTvl(api) { - for (const vault of BERA_KODIAK_VAULTS) { - // Get total token assets in kodiak island - const {amount0Current, amount1Current} = await api.call({ - abi: "function getUnderlyingBalances() view returns (uint256 amount0Current, uint256 amount1Current)", - target: vault.kodiakIsland - }) - const vaultBalance = await api.call({ - abi: "function totalAssets() view returns (uint256 totalAssets)", - target: vault.address, - }) - const totalSupply = await api.call({ - abi: "erc20:totalSupply", - target: vault.kodiakIsland - }) - - // Calculate vault assets based on island assets and vault balance - const token0Balance = amount0Current * vaultBalance / totalSupply - const token1Balance = amount1Current * vaultBalance / totalSupply - - api.add(vault.token0, token0Balance) - api.add(vault.token1, token1Balance) - } - - for (const vault of BULLA_VAULTS) { - const vaultBalance = await api.call({ - abi: "function totalAssets() view returns (uint256 totalAssets)", - target: vault.address, - }) - const totalSupply = await api.call({ - abi: "erc20:totalSupply", - target: vault.asset - }) - const {total0, total1} = await api.call({ - abi: "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", - target: vault.asset - }) - const token0AmountRaw = await api.call({ - abi: "erc20:balanceOf", - target: vault.token0, - params: [vault.asset] - }) - const token1AmountRaw = await api.call({ - abi: "erc20:balanceOf", - target: vault.token1, - params: [vault.asset] - }) - - // Calculate vault assets based on island assets and vault balance - const poolToken0Total = +total0+(+token0AmountRaw) - const poolToken1Total = +total1+(+token1AmountRaw) - const beranciaVaultShares = ((+vaultBalance) / (+totalSupply)) - const token0Balance = poolToken0Total * beranciaVaultShares - const token1Balance = poolToken1Total * beranciaVaultShares - - api.add(vault.token0, token0Balance) - api.add(vault.token1, token1Balance) - } - - for (const vault of BERA_BORROW_VAULTS) { - const vaultBalance = await api.call({ - abi: "function totalAssets() view returns (uint256 totalAssets)", - target: vault.address, - }) - api.add(vault.asset, vaultBalance) - } - - for (const vault of BURR_BEAR_VAULTS) { - const vaultBalance = await api.call({ - abi: "function totalAssets() view returns (uint256 totalAssets)", - target: vault.address, - }) - - const totalSupply = await api.call({ - abi: "function getActualSupply() view returns (uint256 totalAssets)", - target: vault.asset - }) - - const [tokens, balances] = await api.call({ - abi: "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)", - target: vault.vault, - params: [vault.poolId] - }) - - for (let i = 0; i ({}), - }, -}; \ No newline at end of file diff --git a/projects/beraswap/index.js b/projects/beraswap/index.js deleted file mode 100644 index 3ccb5616610..00000000000 --- a/projects/beraswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -const V2_ADDRESS = '0x4Be03f781C497A489E3cB0287833452cA9B9E80B'; // shared by all networks - -const config = { - berachain: { fromBlock: 9384, }, -} - -Object.keys(config).forEach(chain => { - const { fromBlock } = config[chain] - module.exports[chain] = { - tvl: onChainTvl(V2_ADDRESS, fromBlock) - } -}) diff --git a/projects/beratlas-finance/index.js b/projects/beratlas-finance/index.js deleted file mode 100644 index c662829f0fb..00000000000 --- a/projects/beratlas-finance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { nullAddress } = require("../helper/unwrapLPs"); - -const BATLAS_TOKEN_CONTRACT = "0x5E571727c7aD0c062D009F0Fe7c17f93a02da158"; - - -async function borrowed(api) { - const borrowed = await api.call({ abi: 'uint256:getTotalBorrowed', target: BATLAS_TOKEN_CONTRACT, }); - api.addGasToken(borrowed); -} - -async function tvl(api) { - return api.sumTokens({ owner: BATLAS_TOKEN_CONTRACT, tokens: [nullAddress] }); -} - -module.exports = { - methodology: - "Calculates the total backing of Bera in the Batlas contract, and total borrowed in Bera", - berachain: { - tvl, - borrowed, - }, -}; \ No newline at end of file diff --git a/projects/beratrax/index.js b/projects/beratrax/index.js deleted file mode 100644 index 72ddcca2ed9..00000000000 --- a/projects/beratrax/index.js +++ /dev/null @@ -1,259 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs2 } = require("../helper/cache/getLogs"); - -const vaultFactories = [ - "0x33cB15BAeD0422E70Ed6f48c72106423F20e21D7", - "0x2bA289beE93fa6cBae9eB64FB385f4cb199FF3EE", - "0x5CaBB1155D0F0Ff975e30aCaaa11CDA12a6E5b7E", -]; - -const steerVaultAddresses = [ - "0x5d1F9ea2cDDEb3048d81Cb7aB7683C3c9F00D623", - "0x1a80d8e5dA17D15A8140B0910c08634C83995D96", - "0xD72B83dE434171d0Fa5336f1854125dFF0f84824", - "0x79e14058406d8FdB91a59e29b3F127FA8Cdc2075", - "0x1d4AAA36e2a6362C73a221f546813f1E48C41c11", - "0xBfF450EfF556cb54F4b762bAfb9565266c35917D", - "0x184FCE25EF41D72418DfD7953c2aD7574Fb8622A", -]; - -const burrBearVaultAddresses = [ - "0xFD2dE4473577fd5a786E0DFaA611Bbd334fAc8eA", - "0x5490235e55E13CA58e821d873260f4979d650682", - "0x066Eb1D1e33027bc36FaF3055cf12C8F892408fA", -]; - -const vaultAddresses = [ - "0x813C9ecE1Da3B529656DfCc5D42815f9cCf60B2c", - "0x9bC238c1e0f31a5e016Ea484a698Ee7B4c3B219c", - "0x45114A8fCFa77967FDb33E87f6284fc119128836", - "0x76BAe24B0fc180B98A613E3AF19F1A6AE8E4d4F4", - "0xe88e01F2e3eb8E867Bf38E873DCC229264696098", - "0x7c04723AB200D55d1C826160340c089E7CaAFEea", - "0x69D08aaCd061B4054036BE42D6807cf669de13bd", - "0x2C368aD56E801ed8E8590DF84Cb537E98f566460", - "0x388FF9498b8d967DE373b4a440a7A54A34Ec2743", - "0xf279F04E3976cc9b32A4ce0402620d2D4C8C692C", - "0x8C8ed236D367F7885478959aD5af37E5a1575afA", - "0x738d85C6A53f9b924314f35ad5B73ac01f72dc65", - "0x6D943AD0791F68F715f7A4317999Ce547baCc909", - "0x491da46162A4A5F52cc30f6E63B352885bd7B419", - "0xfA224a2184976956471e41d36A1eE465f197dB7B", - "0xFD2dE4473577fd5a786E0DFaA611Bbd334fAc8eA", - "0x29e953B1dC492973B6e55827Fd29674ACFa643C8", - "0x4D6f6580a78EEaBEE50f3ECefD19E17a3f4dB302", - "0x066Eb1D1e33027bc36FaF3055cf12C8F892408fA", - "0x184FCE25EF41D72418DfD7953c2aD7574Fb8622A", - "0x5490235e55E13CA58e821d873260f4979d650682", - "0xF28D9A7C6060f8D85Cb8Cdd2cCfC5958A210E02B", - "0x919Aa309eD3f13FA7B0DCF4B302F0563F0ED068B", - "0x9f835f515835dcc51a703A3c7024cB301704cdE8", - "0xe515356E67EE2c3A3C2f4beAA59bBDB97c1a766F", - "0xD1872EB433811f0D45D4EF172c15b2460cB792B8", - "0xfcfd364AE14B4803f41F3d7b1D1394097916926C", - "0x74bCE2096803B3eEFDCE767b00383481CD408B4E", - "0x96c0712b7B23eB33a7bdD2d737D6Eb87Ae007751", - "0xB3fd1c9Df6C9FB81ca0419EEf0549c337D650509", - "0x2dacFB135bB494BbF7B5273232628A535E147451", - "0x0bd961356E316f0266Fb530844Fb5AEC99B4670f", - "0xadFEBD4b9B2c0E04b0C506Fd99BE3380d277D58D", - "0xfCAcd22Ce85DAd636d79234c533A49E442f38A60", - "0x11663095b13c46E71f1a00A97101aFc1c0039e38", - "0x22FF5a7CC33b6D219c0993C598F93ef251D21e93", - "0x9Bb2Ffc17837Fecef317a65a4f5369157D5ee5B4", - "0x4723BebA547c95A671709175fDc98795d2B2cf84", - "0x716e9D67A7827a71e12F6b1BE66bbE03dC86762E", - "0xb5B652d6D4Ae3f61507Fe05052b224596c42D6C0", -]; - -const stLBGTVaultAddress = "0x27555679E118ec6ECF5F37Dbf2Dc996695e00a1e"; - -async function getSteerVaultTvl(api, vaults) { - let tokens = await api.multiCall({ - abi: "address:asset", - calls: vaults, - }); - const [token0s, token1s, supplies, reserves, bals] = await Promise.all([ - api.multiCall({ abi: "address:token0", calls: tokens }), - api.multiCall({ abi: "address:token1", calls: tokens }), - api.multiCall({ abi: "uint256:totalSupply", calls: tokens }), - api.multiCall({ - abi: "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", - calls: tokens, - }), - api.multiCall({ - abi: "uint256:totalAssets", - calls: vaults, - }), - ]); - - bals.forEach((bal, i) => { - const ratio = bal / supplies[i]; - const token0Bal = reserves[i][0] * ratio; - const token1Bal = reserves[i][1] * ratio; - api.addToken(token0s[i], token0Bal); - api.addToken(token1s[i], token1Bal); - }); -} - -async function getBurrBearVaultTvl(api, vaults) { - const assets = await Promise.all( - vaults.map(async (vault) => { - const assets = await api.call({ - abi: "function asset() view returns (address)", - target: vault, - }); - return assets; - }) - ); - const poolIds = await Promise.all( - assets.map(async (asset) => { - const poolId = await api.call({ - abi: "function getPoolId() view returns (bytes32)", - target: asset, - }); - return poolId; - }) - ); - const underlyingVaults = await Promise.all( - assets.map(async (asset) => { - const vaultAddress = await api.call({ - abi: "function getVault() view returns (address)", - target: asset, - }); - return vaultAddress; - }) - ); - - for (let i = 0; i < vaults.length; i++) { - const [tokens, balances] = await api - .call({ - abi: "function getPoolTokens(bytes32) view returns (address[], uint256[], uint256)", - target: underlyingVaults[i], - params: [poolIds[i]], - }) - .then((res) => [res[0], res[1]]); - - const [vaultBptBal, totalSupply] = await Promise.all([ - api.call({ - abi: "function totalAssets() view returns (uint256)", - target: vaults[i], - }), - api.call({ abi: "erc20:totalSupply", target: assets[i] }), - ]); - - if (totalSupply == 0) continue; - - const ratio = vaultBptBal / totalSupply; - tokens - .filter((t) => t !== assets[i]) - .forEach((token, i) => { - const underlying = balances[i] * ratio; - api.addToken(token, underlying); - }); - } -} - -async function getVaultTvl(api, vaults) { - const assets = await Promise.all( - vaults.map(async (vault) => { - const assets = await api.call({ - abi: "function asset() view returns (address)", - target: vault, - }); - return assets; - }) - ); - - const balances = await Promise.all( - vaults.map(async (vault) => { - const assets = await api.call({ - abi: "function totalAssets() view returns (uint256)", - target: vault, - }); - return assets; - }) - ); - api.addTokens(assets, balances); -} - -async function getStLBGTVaultTvl(api) { - const stLbgt = await api.call({ - abi: "function asset() view returns (address)", - target: stLBGTVaultAddress, - }); - - const lbgt = await api.call({ - abi: "function asset() view returns (address)", - target: stLbgt, - }); - - const totalStLbgt = await api.call({ - abi: "function totalAssets() view returns (uint256)", - target: stLBGTVaultAddress, - }); - - const totalLbgt = await api.call({ - abi: "function convertToAssets(uint256) view returns (uint256)", - target: stLbgt, - params: [totalStLbgt], - }); - - api.addToken(lbgt, totalLbgt); -} - -async function tvl(api) { - const _vaults = []; - let vaults = []; - let steerVaults = []; - let burrBearVaults = []; - - // get all vaults from factories - for (const factory of vaultFactories) { - const logs = await getLogs2({ - api, - factory, - eventAbi: "event VaultCreated(address indexed vault)", - fromBlock: 956824, - }); - _vaults.push(...logs.map((log) => log.vault)); - } - - const vaultNames = await api.multiCall({ - abi: "string:name", - calls: _vaults, - permitFailure: true, - }); - vaultNames.forEach((name, i) => { - if (name && name.toLowerCase().includes("steer")) - steerVaults.push(_vaults[i]); - else vaults.push(_vaults[i]); - }); - - // getLogs2 is not picking up some VaultCreated events, so we add the hardcoded vaults - const uniqueVaults = new Set([...vaults, ...vaultAddresses]); - const uniqueSteerVaults = new Set([...steerVaults, ...steerVaultAddresses]); - const uniqueBurrBearVaults = new Set([...burrBearVaultAddresses]); - - burrBearVaults = Array.from(uniqueBurrBearVaults); - vaults = Array.from(uniqueVaults).filter( - (vault) => !burrBearVaults.includes(vault) && vault !== stLBGTVaultAddress - ); - steerVaults = Array.from(uniqueSteerVaults).filter( - (vault) => !burrBearVaults.includes(vault) - ); - - await getSteerVaultTvl(api, steerVaults); - await getVaultTvl(api, vaults); - await getBurrBearVaultTvl(api, burrBearVaults); - await getStLBGTVaultTvl(api); - return sumTokens2({ api, resolveLP: true }); -} - -module.exports = { - methodology: - "Calculates the total value of all assets locked in the vaults on Beratrax", - berachain: { - tvl, - }, -}; diff --git a/projects/beta-finance-v2/index.js b/projects/beta-finance-v2/index.js deleted file mode 100644 index 910972b10ca..00000000000 --- a/projects/beta-finance-v2/index.js +++ /dev/null @@ -1,52 +0,0 @@ - -const { getLogs } = require('../helper/cache/getLogs'); -const { getUniqueAddresses } = require('../helper/tokenMapping'); - -const config = { - ethereum: { bank: '0x1150d370C61cdd5d6F81c68783678382b447B07D', fromBlock: 18569809, }, - bsc: { bank: '0x5F579336b1959a4a51782B61ce8E877fF6171A6C', fromBlock: 34515370, }, - arbitrum: { bank: '0xAcF4dC6043043324b84aFE77e00678607F9e70fF', fromBlock: 223761172, }, -} - -const abis = { - trancheCount: "uint8:trancheCount", - tranches: "function tranches(uint256) view returns (uint256 totalDepositAmount, uint256 totalBorrowAmount, uint256 totalDepositShare, uint256 totalBorrowShare)", -} - -const eventAbi = "event SetMarketConfiguration(address indexed market, tuple(uint32 collateralFactor, uint32 borrowFactor, uint32 expirationTimestamp, uint8 riskTranche, bool isIsolatedCollateral) marketConfig)" -function customCacheFunction({ cache, logs }) { - if (!cache.logs) cache.logs = [] - cache.logs.push(...logs.map(i => i.market)) - cache.logs = getUniqueAddresses(cache.logs) - return cache -} - -Object.keys(config).forEach(chain => { - const { bank, fromBlock, } = config[chain] - const _getLogs = api => getLogs({ api, target: bank, eventAbi, onlyArgs: true, fromBlock, customCacheFunction, topics: ['0xd2d779713065b66e1a8468059dd72d70a8e8722e4fbd838c618e9b6f25f20b77'] }) - module.exports[chain] = { - tvl: async (api) => { - const markets = await _getLogs(api) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: markets }) - return api.sumTokens({ tokensAndOwners2: [tokens, markets] }) - }, - borrowed: async (api) => { - const markets = await _getLogs(api) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: markets }) - const trancheCounts = await api.multiCall({ abi: abis.trancheCount, calls: markets, permitFailure: true }) - const borrowTokens = [] - const calls = [] - for (let i = 0; i < trancheCounts.length; i++) { - const trancheCount = trancheCounts[i] - if (!trancheCount) continue - for (let j = 0; j < trancheCount; j++) { - borrowTokens.push(tokens[i]) - calls.push({ target: markets[i], params: j }) - } - } - const borrowBals = (await api.multiCall({ abi: abis.tranches, calls })).map(i => i.totalBorrowAmount) - api.addTokens(borrowTokens, borrowBals) - return api.getBalances() - }, - } -}) \ No newline at end of file diff --git a/projects/betafinance/index.js b/projects/betafinance/index.js deleted file mode 100644 index 46cd9e775d9..00000000000 --- a/projects/betafinance/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { getLogs } = require('../helper/cache/getLogs'); - -const config = { - ethereum: { - bank: '0x972a785b390D05123497169a04c72dE652493BE1', fromBlock: 13004429, markets: [ - { underlying: ADDRESSES.ethereum.WETH, bToken: '0x74cAc868f2254f1a6B7ca951f0D86eaC4a65C132' }, - { underlying: ADDRESSES.ethereum.USDT, bToken: '0xBe1c71c94FebcA2673DB2E9BD610E2Cc80b950FC' }, - { underlying: ADDRESSES.ethereum.USDC, bToken: '0xC02392336420bb54CE2Da8a8aa4B118F2dceeB04' }, - { underlying: ADDRESSES.ethereum.DAI, bToken: '0x70540A3178290498B0C6d843Fa7ED97cAe69B86c' }, - { underlying: ADDRESSES.ethereum.WBTC, bToken: '0x01aA4629b756B1222CB5541da0255b4f473F3a11' }, - { underlying: ADDRESSES.ethereum.AAVE, bToken: '0x763C53c462ffD85219755780a22Ad7b7F05a8B4e' }, - { underlying: '0xc00e94Cb662C3520282E6f5717214004A7f26888', bToken: '0xe0AA577ABaBB0aCde6104df939B99729E183A945' }, - { underlying: ADDRESSES.ethereum.UNI, bToken: '0x9e733e5cE6406399ce072d427069a66F706B4374' }, - { underlying: ADDRESSES.ethereum.SUSHI, bToken: '0xd993778FCd8273FA84644bEE9B9c3cB9CC92B15B' }, - { underlying: '0xa1faa113cbE53436Df28FF0aEe54275c13B40975', bToken: '0x70Cca532614F3c79F84a069165825B7455b90F75' }, - { underlying: ADDRESSES.ethereum.MATIC, bToken: '0x23413947Bc16c16C9F9143854afC25Fee2501040' }, - { underlying: ADDRESSES.ethereum.LINK, bToken: '0x13CB01b740C9e5aa93c78CA908cB96a9c67582D7' }, - { underlying: '0xBA11D00c5f74255f56a5E366F4F77f5A186d7f55', bToken: '0x7B4b412e47A37A52ad32498a2Fc3260F1d2C26dd' }, - { underlying: '0xba100000625a3754423978a60c9317c58a424e3D', bToken: '0x53a69CE5682833F10371a0d4934cf564acb79F2D' }, - { underlying: '0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C', bToken: '0x775C20D0A779567B6153a2A4b719AC691d7318A0' }, - { underlying: ADDRESSES.ethereum.SNX, bToken: '0xE5215AA84A0938F7B4c165559EDCF65dbEab4729' }, - { underlying: ADDRESSES.ethereum.YFI, bToken: '0x0fC2d94D8A5C85a36cc7183f0d2F745A73E9984d' }, - { underlying: '0x2ba592F78dB6436527729929AAf6c908497cB200', bToken: '0x9fA2f7c0d23330BC171aF83f3038e1ED870b17F8' }, - { underlying: '0xDFDb7f72c1F195C5951a234e8DB9806EB0635346', bToken: '0x9Eadc7e465d2cC7fd2973CE293Ff4054Ab17BE27' }, - { underlying: '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', bToken: '0xA952dC25d8454a7611277cD77BE8285cD0192ceE' }, - { underlying: '0x72e364F2ABdC788b7E918bc238B21f109Cd634D7', bToken: '0x322897F8b9eed2533540Fbb74D90ADe74D80fbfA' }, - { underlying: '0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD', bToken: '0x9122c38b11888f24637eCc1FEE7AbC67cF346508' }, - { underlying: '0x2aF1dF3AB0ab157e1E2Ad8F88A7D04fbea0c7dc6', bToken: '0x265807D818FF14D44b552F5897aBDAd6Eed603E2' }, - { underlying: '0xBe1a001FE942f96Eea22bA08783140B9Dcc09D28', bToken: '0x02A1aac41c855E1d0985235Bca56828ea79cdBcB' }, - { underlying: '0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b', bToken: '0x8b3Ff556739b19A66077D01DFc5d131ECAac3596' }, - { underlying: '0x0954906da0Bf32d5479e25f46056d22f08464cab', bToken: '0x1451385547b9d13166455f88614B69fcc01934BC' }, - { underlying: '0x4d224452801ACEd8B2F0aebE155379bb5D594381', bToken: '0x76bE26C96bCb14A2Bb08673aD68dd5AD7C358710' }, - { underlying: '0xf4d2888d29D722226FafA5d9B24F9164c092421E', bToken: '0xd0fD064Cad310fe121860a8EBA0eB56D270e90ce' }, - { underlying: ADDRESSES.ethereum.INU, bToken: '0x103ACae4750c3826f1c8e9F1Cb3F43f5FdcD9Ee1' }, - { underlying: '0x632806BF5c8f062932Dd121244c9fbe7becb8B48', bToken: '0xc543a986ba64A196d22f4B7292A77B409066e17E' }, - { underlying: '0xE1Fc4455f62a6E89476f1072530C20CF1A0622dA', bToken: '0x762E7b393a92F75491e7e4c6CAD7219c2B3b9de1' }, - { underlying: ADDRESSES.ethereum.WSTETH, bToken: '0xF10D6b54c8163656747b9434e546BB0067ae8821' }, - { underlying: ADDRESSES.ethereum.RETH, bToken: '0x3a951351f3b906365E364a1299b5F04bEc66E2e7' }, - { underlying: '0xD33526068D116cE69F19A9ee46F0bd304F21A51f', bToken: '0x08ED26B2455eff6bC7894F12a9A36Ec4144523e2' }, - { underlying: '0xf1B99e3E573A1a9C5E6B2Ce818b617F0E664E86B', bToken: '0xE3bb7D6337F869A039cd89Bd089381595A508228' }, - { underlying: '0x5283D291DBCF85356A21bA090E6db59121208b44', bToken: '0xD589943d84F0A633175583B6B0944BD3ab6aF150' }, - ] - }, - avax: { - bank: '0xf3a82ddd4fbf49a35eccf264997f82d40510f36b', fromBlock: 8495305, markets: [ - { underlying: ADDRESSES.avax.WAVAX, bToken: '0x7E5DAb815356FA8A0832bB97EA3C0aba295b2949' }, - { underlying: ADDRESSES.avax.USDT_e, bToken: '0xe9d01683e0E03cCD3E7663Ab207391D095cb9ec3' }, - { underlying: ADDRESSES.avax.USDC_e, bToken: '0xaAAD5237FAcD7e61548dc1DE71B26D3431562bf3' }, - { underlying: ADDRESSES.avax.DAI, bToken: '0x2D29dcdBc64658EFd33565731cAFbA48c95Eae76' }, - { underlying: ADDRESSES.avax.WETH_e, bToken: '0xd62eFF4221f83f05843AB1F645F7C0b4E38A6b49' }, - { underlying: ADDRESSES.avax.WBTC_e, bToken: '0x8aEE941d2043d4Ee9327394c810a29c97d13DE52' }, - { underlying: '0xCE1bFFBD5374Dac86a2893119683F4911a2F7814', bToken: '0x7a7426B0d4b95952F81b170a09A26F9eaAC949C2' }, - { underlying: '0x511D35c52a3C244E7b8bd92c0C297755FbD89212', bToken: '0x5837dE0D87Ec40f05E79a27cBa7Dc7Ff96da5980' }, - { underlying: '0x2147EFFF675e4A4eE1C2f918d181cDBd7a8E208f', bToken: '0x4da7A2Cf132E12cd4D3fD2C8a30A076f9e08d7A7' }, - ] - } -} - -Object.keys(config).forEach(chain => { - const { bank, fromBlock, markets } = config[chain] - const _getLogs = api => getLogs({ api, target: bank, eventAbi: 'event Create (address indexed underlying, address bToken)', onlyArgs: true, fromBlock, }) - module.exports[chain] = { - tvl: async (api) => { - // const logs = await _getLogs(api) - const logs = markets - const underlyingTokens = logs.map(log => log.underlying) - const bTokens = logs.map(log => log.bToken) - underlyingTokens.forEach(i => bTokens.push(bank)) - underlyingTokens.push(...underlyingTokens) - return api.sumTokens({ tokensAndOwners2: [underlyingTokens, bTokens] }) - }, - borrowed: async (api) => { - // const logs = await _getLogs(api) - const logs = markets - const underlyingTokens = logs.map(log => log.underlying) - const bTokens = logs.map(log => log.bToken) - const loans = await api.multiCall({ abi: 'uint256:totalLoan', calls: bTokens }) - api.addTokens(underlyingTokens, loans) - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/betfolio/index.js b/projects/betfolio/index.js deleted file mode 100644 index be944728a76..00000000000 --- a/projects/betfolio/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getConfig } = require('../helper/cache') -const ADDRESSES = require('../helper/coreAssets.json') - -const USDC = ADDRESSES.polygon.USDC_CIRCLE - -const tvl = async (api) => { - const [list0Res,list1Res] = await Promise.all([ - getConfig('betfolio', 'https://api.betfolio.co/api/v1/user/predictionList?limit=1000&duration=&type='), - getConfig('betfolioSoloPrediction', 'https://api.betfolio.co/api/v1/user/getSoloPredictions?limit=1000&type=All&theme=All&solo_type=All') - ]) - - const owners = [...list0Res.data.list, ...list1Res.data.list].map( - (i) => i.contract_address - .includes('_') ? i.contract_address - .split('_')[0] : i.contract_address - ); - - return api.sumTokens({ owners, tokens: [USDC] }) -} - -module.exports = { - polygon: { tvl } -} \ No newline at end of file diff --git a/projects/bethash/index.js b/projects/bethash/index.js deleted file mode 100644 index 858c57ae46b..00000000000 --- a/projects/bethash/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const accounts = [ - "eoshashhouse", - "eoshashstake" -] - -const tokens = [ - ["eosio.token", "EOS", "eos"] -]; - -// BetHash -// https://bethash.io/ -async function eos() { - return await get_account_tvl(accounts, tokens); -} - -module.exports = { - methodology: `BetHash TVL is achieved by querying token balances from BetHash's smart contracts.`, - eos: { - tvl: eos - }, -} \ No newline at end of file diff --git a/projects/betmode/index.js b/projects/betmode/index.js deleted file mode 100644 index 299c6d1e51b..00000000000 --- a/projects/betmode/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: "TVL is the total quantity of USDC held in the contract", - mode: { - tvl: sumTokensExport({ - owners: ["0xeb5D5af6a0ac3B64243858094d6b3b379B8772Aa"], - tokens: [ADDRESSES.mode.USDC], - }), - }, - base: { - tvl: sumTokensExport({ - owners: ["0x1C6971510c02eAe2e0a7d02A51193fE0b7286De4"], - tokens: [ADDRESSES.base.USDC], - }), - }, - optimism: { - tvl: sumTokensExport({ - owners: ["0x4b9d8f10bB6F50765DbeB9F8FBBF3Dace0Db8f3c"], - tokens: [ADDRESSES.optimism.USDC_CIRCLE], - }), - }, -}; diff --git a/projects/betswirl/index.js b/projects/betswirl/index.js deleted file mode 100644 index 2b4dc48b499..00000000000 --- a/projects/betswirl/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { staking } = require('../helper/staking') - -const UNICHAIN_GAMMA_VAULT = '0xf9aDaa55014242c1005dB307C4e41c541f26bAAA' -const BETS = '0x94025780a1aB58868D9B2dBBB775f44b32e8E6e5' -async function fetchBetsFromGammaVault({ api, gammaVault }) { - const [ - token0Address, token1Address, balances, - ] = await Promise.all([ - api.call({ abi: 'address:token0', target: gammaVault}), - api.call({ abi: 'address:token1', target: gammaVault}), - api.call({ abi: 'function getTotalAmounts() view returns (uint256 token0Bal, uint256 token1Bal)', target: gammaVault}), - ]) - api.add(token0Address, balances[0]) - api.add(token1Address, balances[1]) -} - -module.exports = { - methodology: "TVL counts BETS tokens on the staking contracts AND Gamma UniSwap V4 LP tokens.", - start: '2023-06-25', - bsc: { - staking: staking('0x20Df34eBe5dCB1082297A18BA8d387B55fB975a0', BETS), - }, - polygon: { - staking: staking('0xA0D5F23dc9131597975afF96d293E5a7d0516665', BETS), - }, - avax: { - staking: staking('0x9913EffA744B72385E537E092710072D21f8BC98', BETS), - }, - arbitrum: { - staking: staking('0xA7Dd05a6CFC6e5238f04FD6E53D4eFa859B492e4', BETS), - }, - base: { - staking: staking('0x585ae1667d83E93f77ebEb6BbC6d4c19A3879248', BETS), - }, - unichain: { - tvl: () => ({}), - pool2: async (api) => { - await fetchBetsFromGammaVault({ api, gammaVault: UNICHAIN_GAMMA_VAULT }) - }, - }, -}; diff --git a/projects/betterbank/index.js b/projects/betterbank/index.js deleted file mode 100644 index 31ccc46a855..00000000000 --- a/projects/betterbank/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { aaveExports } = require('../helper/aave') - -module.exports = { - pulse: aaveExports( - 'pulse', - '0x21597Ae2f941b5022c6E72fd02955B7f3C87f4Cb', - undefined, - ['0x2369cf50ee0e5727bd971c0d2d172ea6f376edaa'], - { v3: true } - ), -} \ No newline at end of file diff --git a/projects/bevm/index.js b/projects/bevm/index.js deleted file mode 100644 index d3fe0438889..00000000000 --- a/projects/bevm/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "TVL counts tokens deposited in BEVM", - //doublecounted: true, - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.bevm }), - }, -}; diff --git a/projects/bevmswap-xyz/index.js b/projects/bevmswap-xyz/index.js deleted file mode 100644 index 97b04ed9d8b..00000000000 --- a/projects/bevmswap-xyz/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); -module.exports = uniTvlExport('bevm', '0xAdEFa8CFD0655e319559c482c1443Cc6fa804C1F') \ No newline at end of file diff --git a/projects/bfly.js b/projects/bfly.js deleted file mode 100644 index 29089ee8160..00000000000 --- a/projects/bfly.js +++ /dev/null @@ -1,46 +0,0 @@ -const { default: axios } = require("axios") - -async function fetch_price(){ - return (await axios.post("https://main-seed.starcoin.org", - { - id: 101, - jsonrpc: "2.0", - method: "contract.call_v2", - params: [ - { - function_id: "0x1::PriceOracle::read", - args: ["0x82e35b34096f32c42061717c06e44a59"], - type_args: ["0x1::STCUSDOracle::STCUSD"] - }] - })).data.result[0] -} - -async function fetch_amount(){ - return (await axios.post("https://main-seed.starcoin.org", - { - id: 101, - jsonrpc: "2.0", - method: "contract.call_v2", - params: [{ - function_id: "0x4ffcc98f43ce74668264a0cf6eebe42b::STCVaultPoolA::current_stc_locked", - args: [], - type_args: [] - }] - })).data.result -} -async function tvl() { - const tvl = (await fetch_amount()) /1000000000 * (await fetch_price()) /1000000 - return { - tether: tvl - } -} - - -module.exports={ - methodology: "Data is retrieved from the api at https://fai.bfly.finance", - misrepresentedTokens: true, - timetravel: false, - starcoin: { - tvl, - } -} diff --git a/projects/bfx/index.js b/projects/bfx/index.js deleted file mode 100644 index b8cff8baf47..00000000000 --- a/projects/bfx/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -//bsc -const bscVault = "0xDDC99EE89f9556749e8e8916eEa5d3bBA8D6F13d"; -const bscStaking = "0x0F0b54d7446110210513295336E4A85dDA65e40D"; -const bscBFX = "0x491347561CEc563aD7D91135F92dBdC700277505"; - -module.exports = { - bsc: { - staking: staking(bscStaking, bscBFX), - tvl: gmxExports({ vault: bscVault }) - }, -}; diff --git a/projects/bgsol/index.js b/projects/bgsol/index.js deleted file mode 100644 index 12a938e64ee..00000000000 --- a/projects/bgsol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); - -async function tvl() { - return sumTokens2({ tokenAccounts: ['Ejg5vqsthntG8wJDijzgEWvdvhoAh8pzu4Q4r4MqsdkR'] }) -} - -module.exports = { - timetravel: false, - doublecounted: true, - methodology: "Bitget Staked SOL (BGSOL) is a tokenized representation on your staked sSOL", - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/bhavish/index.js b/projects/bhavish/index.js deleted file mode 100644 index 5e361a69dd8..00000000000 --- a/projects/bhavish/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - polygon: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [nullAddress, '0x83Bfcd4a0BF6f442CA62a6f68E7f6CecF5C01D1d'], - [nullAddress, '0x4A3ad4bB1A1b7CeE02E30F9f41d99985eA7A1E56'], - [nullAddress, '0xA59e8042b8199fB21913AE3b96178e15eF96bAc3'], - [nullAddress, '0x7768b73f95d5d5f77aad6cd3cD47591a6565F75D'], - [nullAddress, '0x747E2D83B5DaB11bD5351890D54e3944272aBDb9'], - [nullAddress, '0x3bc0D5A68f5b77497150cDbdB6f54DF64dD46Af2'], - ] - }), - }, - mantle: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [nullAddress, '0xca0112597B795728d0aFC33dB2E3eD56D95F624d'], - ] - }), - } -} \ No newline at end of file diff --git a/projects/biconomy-cex/index.js b/projects/biconomy-cex/index.js deleted file mode 100644 index 2dccc3516be..00000000000 --- a/projects/biconomy-cex/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xb03eDB668008459B3c6D948ab5Ab305581DbF69c', - '0x3d79007ba1a68de986eb641a3c24d58a0c69587e', - '0xF884B1bC1d91Cdf824e7f35D61EdfdB042c28C83', - '0xAd8E5cEb7D77e10403Be8430717c515273c31b8d' - ], - }, - bitcoin: { - owners: bitcoinAddressBook.biconomy - }, - polygon: { - owners: [ - '0x366ba28Ec89113454EA6e82bB606426e8cA22780' - ], - }, - tron: { - owners: [ - 'TEi2hVWDRMo61PAoi1Dwbn8hNXufkwEVyp' - ] - }, -} - -module.exports = cexExports(config) diff --git a/projects/biconomy/index.js b/projects/biconomy/index.js deleted file mode 100644 index ee676d41ef3..00000000000 --- a/projects/biconomy/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// taken from https://docs.biconomy.io/products/hyphen-instant-cross-chain-transfers/contract-addresses -const config = { - ethereum: { - bridges: [ - '0xebaB24F13de55789eC1F3fFe99A285754e15F7b9', - '0x2A5c2568b10A0E826BfA892Cf21BA7218310180b', - '0x3d79007ba1a68de986eb641a3c24d58a0c69587e', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ] - }, - polygon: { - bridges: [ - '0xebaB24F13de55789eC1F3fFe99A285754e15F7b9', - '0x2A5c2568b10A0E826BfA892Cf21BA7218310180b', - ], - tokens: [ - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.WETH_1, - ] - }, - avax: { - bridges: [ - '0xebaB24F13de55789eC1F3fFe99A285754e15F7b9', - '0x2A5c2568b10A0E826BfA892Cf21BA7218310180b', - ], - tokens: [ - ADDRESSES.avax.USDT_e, - ADDRESSES.avax.USDC_e, - ADDRESSES.avax.DAI, - ADDRESSES.avax.WETH_e, - ] - }, - bsc: { - bridges: [ - '0x279ac60785a2fcb85550eb243b9a42a543171cc7', - '0x94D3E62151B12A12A4976F60EdC18459538FaF08', - ], - tokens: [ - ADDRESSES.bsc.ETH, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT, - ] - }, - optimism: { - bridges: [ - '0xb4778f5aefeb4605ed96e893417271d4a55e32ee', - '0x856cb5c3cbbe9e2e21293a644aa1f9363cee11e8', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.optimism.USDC, - ] - }, - arbitrum: { - bridges: [ - '0xb4778f5aefeb4605ed96e893417271d4a55e32ee', - '0x856cb5c3cbbe9e2e21293a644aa1f9363cee11e8', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.arbitrum.USDC, - ] - }, -} - -module.exports = { - hallmarks:[ - [1651881600, "UST depeg"], - ], - methodology: - "Biconomy TVL is the USD value of token balances in the Hyphen 2.0 contracts.", -} - -Object.keys(config).forEach(chain => module.exports[chain] = { - tvl: async (api) => { - const { bridges, tokens, } = config[chain] - return sumTokens2({ api, owners: bridges, tokens }); - } -}) diff --git a/projects/bido/index.js b/projects/bido/index.js deleted file mode 100644 index b6148c1421c..00000000000 --- a/projects/bido/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const bidoStakeContract = "0x26bda683F874e7AE3e3A5d3fad44Bcb82a7c107C"; - -async function btc(api) { - const pooledBTC = await api.call({ - target: bidoStakeContract, - abi: "uint256:totalSupply", - }); - - return { - [`ethereum:${ADDRESSES.ethereum.WBTC}`]: (pooledBTC / 1e18) * 1e8, - }; -} - -module.exports = { - bevm: { - tvl: btc, - }, -}; diff --git a/projects/bifi/index.js b/projects/bifi/index.js deleted file mode 100644 index 23da2614673..00000000000 --- a/projects/bifi/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { stakings } = require("../helper/staking"); -const { sumTokens2, } = require('../helper/unwrapLPs') - -const stakingPool = ['0x488933457E89656D7eF7E69C10F2f80C7acA19b5', '0x4b1791422dE4807B2999Eeb65359F3E13fa9d11d']; -const bfcAddr = '0x0c7D5ae016f806603CB1782bEa29AC69471CAb9c'; - -const chainPools = { - ethereum: { - null: { pool: '0x13000c4a215efe7e414bb329b2f11c39bcf92d78', token: ADDRESSES.null, }, - usdt: { pool: '0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3', token: ADDRESSES.ethereum.USDT }, - dai: { pool: '0xd76b7060f1b646fa14740ff6ac670a4f0a6fc5e3', token: ADDRESSES.ethereum.DAI }, - link: { pool: '0x25567603eb61a4a49f27e433652b5b8940d10682', token: ADDRESSES.ethereum.LINK }, - usdc: { pool: '0x128647690C7733593aA3Dd149EeBC5e256E79217', token: ADDRESSES.ethereum.USDC }, - wbtc: { pool: '0x93948Aa8488F522d5b079AF84fe411FBCE476e9f', token: ADDRESSES.ethereum.WBTC } - }, - bsc: { - null: { pool: '0x170b6AA872166eC2F8515c2B855C34B6C7563c18', token: ADDRESSES.null, }, - usdt: { pool: '0x2A29598cbc17BA112C8Fd0E07Fbf5402eF57E6b8', token: ADDRESSES.bsc.USDT }, - dai: { pool: '0xB67C5433d234d656002f12664d15ab4b40666D9B', token: '0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3' }, - eth: { pool: '0xf86d8218BCC15874f5D25c191FdDd43F2334c3EB', token: ADDRESSES.bsc.ETH }, - usdc: { pool: '0xBA9De5a8FD91408826616f2d6d7470A11E34c9F0', token: ADDRESSES.bsc.USDC }, - btcb: { pool: '0x26d0E4707af1c1DAAd8e9BA21b99cDa7Fd24c40B', token: ADDRESSES.bsc.BTCB }, - busd: { pool: '0x829ED2a2BeF8b72e648f92CBF01587C7E12e8c1e', token: ADDRESSES.bsc.BUSD } - }, - avax: { - null: { pool: '0x446881360d6d39779D292662fca9BC85C5789dB3', token: ADDRESSES.null, }, - eth: { pool: '0x8AbA88E8A4AB28319b782199cB17f0001EE67984', token: ADDRESSES.avax.WETH_e }, - usdt: { pool: '0xE893233515b7D02dD4e3D888162d4C87Dc837943', token: ADDRESSES.avax.USDT_e }, - usdc: { pool: '0x8385Ea36dD4BDC84B3F2ac718C332E18C1E42d36', token: ADDRESSES.avax.USDC_e }, - dai: { pool: '0x34DA42143b0c6E321CEb76931c637c12Bd865f7e', token: ADDRESSES.avax.DAI }, - wbtc: { pool: '0xc4D1e935F02A44D44985E6b1C0eE1ee616fC146a', token: ADDRESSES.avax.WBTC_e }, - }, - klaytn: { - null: { pool: '0x829fCFb6A6EeA9d14eb4C14FaC5B29874BdBaD13', token: ADDRESSES.null, }, - keth: { pool: '0x07970F9D979D8594B394fE12345211C376aDfF89', token: ADDRESSES.klaytn.oETH }, - kusdt: { pool: '0xe0e67b991d6b5CF73d8A17A10c3DE74616C1ec11', token: ADDRESSES.klaytn.oUSDT }, - kdai: { pool: '0xE03487927e137526a2dB796A9B3b4048ab615043', token: ADDRESSES.klaytn.KDAI }, - usdc: { pool: '0x808c707c53c3D30d0247e4b8D78AA0D8b75CAAE1', token: ADDRESSES.klaytn.oUSDC }, - kwbtc: { pool: '0xa6aDE2e6c6F50a2d9b9C4b819e84b367F88C1598', token: ADDRESSES.klaytn.oWBTC }, - kxrp: { pool: '0x4800577A71F68eD7ef4C09cFBe7fd6E066D5F0dA', token: ADDRESSES.klaytn.oXRP }, - }, - bfc: { - null: { pool: '0x4bAE7ba39E4e71660307dcE780f1Ec9b7B7666Ee', token: ADDRESSES.null, }, - UnifiedETH: { pool: '0xCbf6065954fC17d07b28102c84902F20FFaC0A33', token: ADDRESSES.bfc.UnifiedETH }, - UnifiedBNB: { pool: '0x942A9bF629d1E17D87294B0f20898eEb8316cDd6', token: ADDRESSES.bfc.UnifiedBNB }, - UnifiedUSDC: { pool: '0x168b2D7dd6b9812392f99bA01A14db03ED06dedc', token: ADDRESSES.bfc.UnifiedUSDC }, - UnifiedMATIC: { pool: '0xA1Bd1d501aF7d0B146951fDFF49BD4C0bD25e220', token: ADDRESSES.bfc.UnifiedMATIC }, - UnifiedUSDT: { pool: '0xeD7B0974dC5d98B9e7C83695C415d68b8781B0F8', token: ADDRESSES.bfc.UnifiedUSDT }, - UnifiedDAI: { pool: '0x2168dAb12A6A93181bbAD9C9dc769307C36fB45C', token: ADDRESSES.bfc.UnifiedDAI }, - UnifiedWBTC: { pool: '0xEa3b4a2dA5DbE8379AD4c60aaD5184df69D7C9AD', token: ADDRESSES.bfc.WBTC}, - UnifiedBTCB: { pool: '0x0B31FeE8bF53bFe2f5F7083B73A4c9C8B517E32F', token: ADDRESSES.bfc.BTCB}, - BitcoinUSD: { pool: '0xcF2FC1d354018A39D5Ef036aA865Ad8cbF7B611E', token: ADDRESSES.bfc.BitcoinUSD }, - WstBFC: { pool: '0xf9B2f6D2a61923E61aD9F6DAA78f52b7e1722b12', token: '0x386f2F5d9A97659C86f3cA9B8B11fc3F76eFDdaE' }, - }, -} - -Object.keys(chainPools).forEach(chain => { - const pools = chainPools[chain] - module.exports[chain] = { - tvl: async (api) => { - return sumTokens2({ api, tokensAndOwners: Object.values(pools).map(({ pool, token }) => ([token, pool,])) }) - } - } -}) - -module.exports.ethereum.staking = stakings(stakingPool, bfcAddr) diff --git a/projects/bifrost-dex/api.js b/projects/bifrost-dex/api.js deleted file mode 100644 index e3df3200819..00000000000 --- a/projects/bifrost-dex/api.js +++ /dev/null @@ -1,253 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); -const BigNumber = require("bignumber.js"); -const sdk = require('@defillama/sdk') -const { getEnv } = require('../helper/env') - -// node test.js projects/bifrost-dex/api.js - -function formatToken(token, type) { - switch (token) { - case `{"Token":"RMRK"}`: - return "RMRK"; - case `{"Token":"KSM"}`: - return "KSM"; - case `{"VSToken":"KSM"}`: - return "vsKSM"; - case `{"VSToken2":"0"}`: - return "vsDOT"; - case `{"VToken":"KSM"}`: - return "vKSM"; - case `{"Token":"KAR"}`: - return "KAR"; - case `{"Native":"BNC"}`: - return "BNC"; - case `{"Token":"ZLK"}`: - return "ZLK"; - case `{"Token":"MOVR"}`: - return "MOVR"; - case `{"Stable":"KUSD"}`: - return "KUSD"; - case `{"Token2":"0"}`: - return type === "kusama" ? "USDT" : "DOT"; - case `{"Token2":"1"}`: - return type === "kusama" ? "KINT" : "GLMR"; - case `{"VToken2":"0"}`: - return "vDOT"; - case `{"VToken2":"1"}`: - return "vGLMR"; - case `{"VToken2":"4"}`: - return "vFIL"; - case `{"Token2":"4"}`: - return "FIL"; - case `{"VToken2":"3"}`: - return "vASTR"; - case `{"Token2":"3"}`: - return "ASTR"; - case `{"VToken":"BNC"}`: - return "vBNC"; - case `{"VToken":"MOVR"}`: - return "vMOVR"; - default: - return null; - } -} - -function formatTokenAmount(amount, tokenSymbol) { - let decimals = 12; - - switch (tokenSymbol) { - case "USDT": - decimals = 6; - break; - - case "vDOT": - case "DOT": - case "RMRK": - decimals = 10; - break; - - case "vBNC": - case "BNC": - case "KSM": - case "KAR": - case "KUSD": - decimals = 12; - break; - case "ETH": - case "ZLK": - case "vMOVR": - case "vGLMR": - case "MOVR": - case "GLMR": - case "FIL": - case "vFIL": - case "ASTR": - case "vASTR": - decimals = 18; - break; - } - - return Number(amount / Number(10 ** decimals)); -} - -const tokenToCoingecko = { - DOT: "polkadot", - BNC: "bifrost-native-coin", - KSM: "kusama", - MOVR: "moonriver", - GLMR: "moonbeam", - KUSD: "acala-dollar", - ZLK: "zenlink-network-token", - USDT: "tether", - FIL: "filecoin", - ASTR: "astar" -}; - -async function tvl() { - const kusamaProvider = new WsProvider(getEnv('BIFROST_K_RPC')); - const kusamaApi = await ApiPromise.create(({ provider: kusamaProvider })); - - const totalLiquidity = {}; - const totalLiquidityFormatted = {}; - - // Get swap tvl - const kusamaPools = await kusamaApi.query.zenlinkProtocol.pairStatuses.entries(); - await Promise.all(kusamaPools.map(async (pool) => { - if (pool[1].toHuman()?.Trading?.pairAccount) { - const poolAccountTokens = await kusamaApi.query.tokens.accounts.entries(pool[1].toHuman()?.Trading?.pairAccount); - const poolTokens = poolAccountTokens.filter(item => !item[0].toHuman()[1].LPToken); - - if (!poolTokens[0]) return; - - let currentToken = formatToken(JSON.stringify(poolTokens[0][0].toHuman()[1]), "kusama"); - const isVtoken = currentToken.startsWith("v"); - let ratio = 1; - currentToken = isVtoken ? currentToken.slice(1) : currentToken; - - if (isVtoken) { - const tokenPool = await kusamaApi.query.vtokenMinting.tokenPool(currentToken === "BNC" ? { "native": currentToken } : { "token": currentToken }); - const totalIssuance = await kusamaApi.query.tokens.totalIssuance({ "vToken": currentToken }); - ratio = new BigNumber(tokenPool).div(totalIssuance).toNumber(); - } - - if (totalLiquidity[currentToken]) { - totalLiquidity[currentToken] = new BigNumber(totalLiquidity[currentToken]).plus(new BigNumber(poolTokens[0][1].toJSON().free).multipliedBy(2).multipliedBy(ratio)).toFixed().split(".")[0]; - } else { - totalLiquidity[currentToken] = new BigNumber(poolTokens[0][1].toJSON().free).multipliedBy(2).multipliedBy(ratio).toFixed().split(".")[0]; - } - } - })); - - const polkadotProvider = new WsProvider(getEnv('BIFROST_P_RPC')); - const polkadotApi = await ApiPromise.create(({ provider: polkadotProvider })); - - const polkadotPools = await polkadotApi.query.zenlinkProtocol.pairStatuses.entries(); - await Promise.all(polkadotPools.map(async (pool) => { - if (pool[1].toHuman()?.Trading?.pairAccount) { - const poolAccountTokens = await polkadotApi.query.tokens.accounts.entries(pool[1].toHuman()?.Trading?.pairAccount); - const poolTokens = poolAccountTokens.filter(item => !item[0].toHuman()[1].LPToken); - - if (!poolTokens[0]) return; - - let currentToken = formatToken(JSON.stringify(poolTokens[0][0].toHuman()[1]), "polkadot"); - let ratio = 1; - sdk.log(currentToken, poolTokens[0][0].toHuman()) - if (!currentToken) return; - const isVtoken = currentToken.startsWith("v"); - currentToken = isVtoken ? currentToken.slice(1) : currentToken; - - if (isVtoken) { - const tokenPool = await polkadotApi.query.vtokenMinting.tokenPool({ "token2": poolTokens[0][0].toHuman()[1].VToken2 }); - const totalIssuance = await polkadotApi.query.tokens.totalIssuance({ "vToken2": poolTokens[0][0].toHuman()[1].VToken2 }); - ratio = new BigNumber(tokenPool).div(totalIssuance).toNumber(); - } - - if (totalLiquidity[currentToken]) { - totalLiquidity[currentToken] = new BigNumber(totalLiquidity[currentToken]).plus(new BigNumber(poolTokens[0][1].toJSON().free).multipliedBy(2).multipliedBy(ratio)).toFixed().split(".")[0]; - } else { - totalLiquidity[currentToken] = new BigNumber(poolTokens[0][1].toJSON().free).multipliedBy(2).multipliedBy(ratio).toFixed().split(".")[0]; - } - } - })); - - // stable dex tvl - - const kusamaStablePools = await kusamaApi.query.stableAsset?.pools.entries(); - - await Promise.all(kusamaStablePools.map(async (item) => { - const pool = item[1].toHuman() - - await Promise.all([pool.assets[0], pool.assets[1]].map(async (token, i) => { - let ratio = 1; - let currentToken = formatToken(JSON.stringify(token), 'kusama') - const isVstoken = currentToken.startsWith("vs"); - const isVtoken = currentToken.startsWith("v") && !isVstoken; - - currentToken = isVtoken ? currentToken.slice(1) : currentToken; - currentToken = isVstoken ? currentToken.slice(2) : currentToken; - if (isVtoken) { - const tokenPool = await kusamaApi.query.vtokenMinting.tokenPool(currentToken === "BNC" ? { "native": currentToken } : { "token": currentToken }); - const totalIssuance = await kusamaApi.query.tokens.totalIssuance({ "vToken": currentToken }); - ratio = new BigNumber(tokenPool).div(totalIssuance).toNumber(); - } - if (isVstoken) { - ratio = 1 / 2; - } - if (totalLiquidity[currentToken]) { - totalLiquidity[currentToken] = new BigNumber(totalLiquidity[currentToken]).plus(pool.balances[i].replaceAll(',', '')).multipliedBy(ratio).toFixed().split(".")[0]; - } else { - totalLiquidity[currentToken] = new BigNumber(pool.balances[i].replaceAll(',', '')).multipliedBy(ratio).toFixed().split(".")[0]; - } - })) - })) - - const polkadotStablePools = await polkadotApi.query.stableAsset?.pools.entries(); - - await Promise.all(polkadotStablePools.map(async (item) => { - const pool = item[1].toHuman() - - await Promise.all([pool.assets[0], pool.assets[1]].map(async (token, i) => { - let ratio = 1; - let currentToken = formatToken(JSON.stringify(token), 'polkadot') - if (!currentToken) { - console.log(JSON.stringify(token) ) - return; - } - - const isVstoken = currentToken?.startsWith("vs"); - const isVtoken = currentToken?.startsWith("v") && !isVstoken; - - currentToken = isVtoken ? currentToken.slice(1) : currentToken; - currentToken = isVstoken ? currentToken.slice(2) : currentToken; - - if (isVtoken) { - const tokenPool = await polkadotApi.query.vtokenMinting.tokenPool({ "token2": token.VToken2 }); - const totalIssuance = await polkadotApi.query.tokens.totalIssuance({ "vToken2": token.VToken2 }); - ratio = new BigNumber(tokenPool).div(totalIssuance).toNumber(); - } - if (isVstoken) { - ratio = 1 / 2; - } - if (totalLiquidity[currentToken]) { - totalLiquidity[currentToken] = new BigNumber(totalLiquidity[currentToken]).plus(pool.balances[i].replaceAll(',', '')).multipliedBy(ratio).toFixed().split(".")[0]; - } else { - totalLiquidity[currentToken] = new BigNumber(pool.balances[i].replaceAll(',', '')).multipliedBy(ratio).toFixed().split(".")[0]; - } - })) - })) - - for (const key in totalLiquidity) { - totalLiquidityFormatted[tokenToCoingecko[key]] = formatTokenAmount( - totalLiquidity[key], - key - ); - } - - return totalLiquidityFormatted; -} - -module.exports = { - timetravel: false, - methodology: "Liquidity Pools from Zenlink (only calculate the initiall Pool's liquidity).", - bifrost: { tvl } -}; \ No newline at end of file diff --git a/projects/bifrost-dex/index.js b/projects/bifrost-dex/index.js deleted file mode 100644 index 2240164249a..00000000000 --- a/projects/bifrost-dex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("bifrost-dex", ['bifrost']) -} \ No newline at end of file diff --git a/projects/bifrost-liquid-crowdloan/api.js b/projects/bifrost-liquid-crowdloan/api.js deleted file mode 100644 index 6ec1f1d33fb..00000000000 --- a/projects/bifrost-liquid-crowdloan/api.js +++ /dev/null @@ -1,56 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); -const { getEnv } = require('../helper/env') - -// node test.js projects/bifrost-liquid-crowdloan/api.js - -function formatTokenAmount(amount, tokenSymbol) { - let decimals = 12; - switch (tokenSymbol) { - case "DOT": - decimals = 10; - break; - case "KSM": - decimals = 12; - break; - } - - return Number(amount / Number(10 ** decimals)); -} - -const tokenToCoingecko = { - DOT: "polkadot", - KSM: "kusama", -}; - - -async function tvl() { - const kusamaProvider = new WsProvider(getEnv('BIFROST_K_RPC')); - const kusamaApi = await ApiPromise.create(({ provider:kusamaProvider })); - - const polkadotProvider = new WsProvider(getEnv('BIFROST_P_RPC')); - const polkadotApi = await ApiPromise.create(({ provider:polkadotProvider })); - - //Get Salp tvl - const vsKSM = (await kusamaApi.query.tokens.totalIssuance({ "vsToken": "KSM" })).toString(); - const vsDOT = (await polkadotApi.query.tokens.totalIssuance({ "vsToken2": "0" })).toString(); - - const totalLiquidity = {}; - totalLiquidity.KSM = vsKSM; - totalLiquidity.DOT = vsDOT; - - const totalLiquidityFormatted = {}; - for (const key in totalLiquidity) { - totalLiquidityFormatted[tokenToCoingecko[key]] = formatTokenAmount( - totalLiquidity[key], - key - ); - } - - return totalLiquidityFormatted; -} - -module.exports = { - timetravel: false, - methodology: "Minted vTokens from other chains (only calculate the underlying asset value)", - bifrost: { tvl } -}; \ No newline at end of file diff --git a/projects/bifrost-liquid-crowdloan/index.js b/projects/bifrost-liquid-crowdloan/index.js deleted file mode 100644 index 2d761e335a7..00000000000 --- a/projects/bifrost-liquid-crowdloan/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("bifrost-liquid-crowdloan", ['bifrost']) -} \ No newline at end of file diff --git a/projects/bifrost-staking/api.js b/projects/bifrost-staking/api.js deleted file mode 100644 index 25250c46dc8..00000000000 --- a/projects/bifrost-staking/api.js +++ /dev/null @@ -1,101 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); -const BigNumber = require("bignumber.js"); -const { getEnv } = require('../helper/env') - -// node test.js projects/bifrost-staking/api.js - -function formatTokenAmount(amount, tokenSymbol) { - let decimals = 12; - - switch (tokenSymbol) { - case "DOT": - decimals = 10; - break; - - case "BNC": - case "KSM": - decimals = 12; - break; - case "ETH": - case "GLMR": - case "MOVR": - case "FIL": - case "ASTR": - case "MANTA": - decimals = 18; - break; - } - - return Number(amount / Number(10 ** decimals)); -} - -const tokenToCoingecko = { - DOT: "polkadot", - BNC: "bifrost-native-coin", - KSM: "kusama", - MOVR: "moonriver", - GLMR: "moonbeam", - ETH: "ethereum", - FIL: "filecoin", - ASTR: "astar", - MANTA: "manta-network" -}; - -function formatToken(token) { - switch (token) { - case '0': - return "DOT"; - case '1': - return "GLMR"; - case '4': - return "FIL"; - case '3': - return "ASTR"; - case '8': - return "MANTA"; - default : - return null; - } -} - - -async function tvl() { - const kusamaProvider = new WsProvider(getEnv('BIFROST_K_RPC')); - const kusamaApi = await ApiPromise.create(({ provider:kusamaProvider })); - - const polkadotProvider = new WsProvider(getEnv('BIFROST_P_RPC')); - const polkadotApi = await ApiPromise.create(({ provider:polkadotProvider })); - - const totalLiquidity = {}; - - // Get kusama vToken tvl (vKSM / vMOVR / vBNC) - const kusamaTokenPool = await kusamaApi.query.vtokenMinting.tokenPool.entries(); - // Get polkadot vToken tvl (vDOT / vGLMR / vASTR) - const polkadotTokenPool = await polkadotApi.query.vtokenMinting.tokenPool.entries(); - - await Promise.all(kusamaTokenPool.map(async (pool) => { - const token=pool[0].toHuman()[0].Token||pool[0].toHuman()[0].Native - totalLiquidity[token]=new BigNumber(totalLiquidity[token]||0).plus(pool[1].toString()).toString() - })); - - await Promise.all(polkadotTokenPool.map(async (pool) => { - const token=formatToken(pool[0].toHuman()[0].Token2) - totalLiquidity[token]=new BigNumber(totalLiquidity[token]||0).plus(pool[1].toString()).toString() - })); - - const totalLiquidityFormatted = {}; - for (const key in totalLiquidity) { - totalLiquidityFormatted[tokenToCoingecko[key]] = formatTokenAmount( - totalLiquidity[key], - key - ); - } - - return totalLiquidityFormatted; -} - -module.exports = { - timetravel: false, - methodology: "Minted vTokens from other chains (only calculate the underlying asset value)", - bifrost: { tvl } -}; \ No newline at end of file diff --git a/projects/bifrost-staking/index.js b/projects/bifrost-staking/index.js deleted file mode 100644 index c8f7390c9f5..00000000000 --- a/projects/bifrost-staking/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const BigNumber = require("bignumber.js"); -const { getExports } = require("../helper/heroku-api"); -const { nullAddress } = require("../helper/unwrapLPs"); - -module.exports = { - timetravel: false, - bifrost: { - tvl: async () => { - const { bifrost } = getExports("bifrost-staking", ["bifrost"]); - const tvl = await bifrost.tvl(); - return { - "bifrost-native-coin": tvl["bifrost-native-coin"], - polkadot: tvl.polkadot, - kusama: tvl.kusama, - moonbeam: tvl.moonbeam, - moonriver: tvl.moonriver, - }; - }, - }, - ethereum: { - tvl: async (api) => { - const vETH = await api.call({ - target: "0x4bc3263eb5bb2ef7ad9ab6fb68be80e43b43801f", - abi: "uint256:totalSupply", - }); - const contract_veth1 = await api.call({ - target: "0xc3d088842dcf02c13699f936bb83dfbbc6f721ab", - abi: "uint256:totalSupply", - }); - const contract_veth1_null_address_balance = await api.call({ - target: "0xc3d088842dcf02c13699f936bb83dfbbc6f721ab", - abi: "erc20:balanceOf", - params: "0x000000000000000000000000000000000000dEaD", - }); - - return { - [nullAddress]: new BigNumber(vETH) - .plus(contract_veth1) - .minus(contract_veth1_null_address_balance) - .toString(), - }; - }, - }, - filecoin: { - tvl: async () => { - const { bifrost } = getExports("bifrost-staking", ["bifrost"]); - const { filecoin } = await bifrost.tvl(); - return { filecoin }; - }, - }, - astar: { - tvl: async () => { - const { bifrost } = getExports("bifrost-staking", ["bifrost"]); - const { astar } = await bifrost.tvl(); - return { astar }; - }, - }, - manta: { - tvl: async () => { - const { bifrost } = getExports("bifrost-staking", ["bifrost"]); - const tvl = await bifrost.tvl(); - return { 'manta-network': tvl['manta-network'] }; - }, - }, -}; diff --git a/projects/bigdataprotocol/abi.json b/projects/bigdataprotocol/abi.json deleted file mode 100644 index a3f8771ea5b..00000000000 --- a/projects/bigdataprotocol/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 rewardPerShare)" -} \ No newline at end of file diff --git a/projects/bigdataprotocol/index.js b/projects/bigdataprotocol/index.js deleted file mode 100644 index d9781cde695..00000000000 --- a/projects/bigdataprotocol/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const abi = require("./abi.json"); - -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'ethereum', - masterchef: '0x0De845955E2bF089012F682fE9bC81dD5f11B372', - nativeToken: '0xf3dcbc6d72a4e1892f7917b7c43b74131df8480e', - poolInfoABI: abi.poolInfo, -}) \ No newline at end of file diff --git a/projects/bigone/index.js b/projects/bigone/index.js deleted file mode 100644 index 360b25c9ecd..00000000000 --- a/projects/bigone/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xd4dcd2459bb78d7a645aa7e196857d421b10d93f', - '0x88e343f4599292c2cffe683c1bb93cd3480bdbab', - '0xa30d8157911ef23c46c0eb71889efe6a648a41f7' - ], - }, - bitcoin: { - owners: bitcoinAddressBook.bigone - }, - solana: { - owners: [ - '7BCp5XUXtKzZWYCvGR2fzFqoyKiJ7ozN8eCEHscpSMnB' - ] - }, - tron: { - owners: [ - 'TNrPUjc47JU1fgaQZPa1odQnD5RTdH3NSu' - ] - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/bigpump/index.js b/projects/bigpump/index.js deleted file mode 100644 index f21be02ba88..00000000000 --- a/projects/bigpump/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokens } = require("../helper/chain/ton"); -const { getConfig } = require("../helper/cache"); - -async function fetchTvl(api) { - const res = await getConfig('bigpump', 'https://tonfunstats-eqnd7.ondigitalocean.app/api/v1/getServiceTokens?service=bigpump') - await sumTokens({ api, tokens: [ADDRESSES.ton.TON], owners: res, onlyWhitelistedTokens: true }) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - ton: { - tvl: fetchTvl - } -} \ No newline at end of file diff --git a/projects/billion-happiness/index.js b/projects/billion-happiness/index.js deleted file mode 100644 index ef176e2555e..00000000000 --- a/projects/billion-happiness/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { pool2 } = require("../helper/pool2.js"); -const { stakings, staking } = require("../helper/staking.js"); - -const bhcToken = "0x6fd7c98458a943f469E1Cf4eA85B173f5Cd342F4"; -const masterchef = "0xC5c482a4Ed34b80B861B4e6Eb28664a46bd3eC8B"; //"Feeling Sweet Masterchef" -const pool2LP = "0x851dB01B337Ee3E5Ab161ad04356816F09EA01dc"; // "Feeling Sweet" BHC-WBNB -const bhcTokenETHW = ADDRESSES.ethpow.BHC; -const BHC_ETHW = "0x899fED261A7df2761CF0b6f7556B80669D135802"; -const WETHW = ADDRESSES.ethpow.WETHW; - -const stakingPools = [ - "0xa4712bd37cdE563bDfccCfa6DE5E5c2b1Da5572B", // "Feeling Playful" - "0xE9bFC901644B85161BAFa103ecf4478a87D398E1", // "Feeling Loyal" - "0xE40525c866Ab074e4103e5d26570Dc61f1729B6d", // "Feeling Stable" -]; - -const ethpowPools = [ - "0x28d1F6698c20802B8c38Ae83903046F61e60F529", //Stake BHC earn BHC - "0xe3891B87204870FC26dE020fc9d92eA9848Df74f", //Stake BHC-ETHW earn BHC - "0x2B7c8977087420E0f29069B4DB74bF35E23FAA8a" //Stake WETHW earn earn BHC -] - -const targetCoinsETHW = [ - bhcTokenETHW, - BHC_ETHW, - WETHW -] - -module.exports = { - methodology: - "Pool 2 TVL includes the BHC-WBNB Pancake LP and staking TVL are the BHC tokens staked into the emotion pools", - bsc: { - tvl: async () => ({}), - staking: stakings(stakingPools, bhcToken), - pool2: staking(masterchef, pool2LP), - }, - ethpow: { - pool2: pool2(ethpowPools[1], targetCoinsETHW[1]), - tvl: staking(ethpowPools[0], targetCoinsETHW[0]), - staking: staking(ethpowPools[2], targetCoinsETHW[2]), - } -}; diff --git a/projects/bim/index.js b/projects/bim/index.js deleted file mode 100644 index b230fddf7f8..00000000000 --- a/projects/bim/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const utils = require('../helper/utils'); -const { toUSDTBalances } = require('../helper/balances'); - -const vaultEndpointBase = 'https://raw.githubusercontent.com/bim-finance-org/staking-vaults/master/'; -const chainVaultEndpoints = { - 10: vaultEndpointBase + "optimism.json", - 100: vaultEndpointBase + "gnosis.json", - 137: vaultEndpointBase + "polygon.json", - 8453: vaultEndpointBase + "base.json", -}; - -const chains = { - xdai: 100, - polygon: 137, - base: 8453, - optimism: 10, -} - -const getVaultBalances = async (chainId, vaults, api) => { - if (!vaults) { - throw new Error(`getVaultBalances: undefined vaults passed for ${chainId}`); - } - const calls = vaults.map(vault => { - return api.call({ - abi: { - inputs: [], - name: 'balance', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - target: vault.earnedTokenAddress, - }); - }); - const res = await Promise.all(calls); - return res; -}; - -function fetchChain(chainId) { - return async (_, _b, _cb, { api, }) => { - - const chainVaults = utils.fetchURL(chainVaultEndpoints[chainId]) - const vaults = (await chainVaults).data; - if( !vaults || vaults.length === 0) { - return toUSDTBalances(0); - } - - const balances = await getVaultBalances(chainId, vaults, api); - const tokens = vaults.map((vault) => vault.tokenAddress) - - api.add(tokens, balances) - } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - doublecounted: true, - ...Object.fromEntries(Object.entries(chains).map(chain => [chain[0], { - tvl: fetchChain(chain[1]) - }])) -} diff --git a/projects/bima-labs-cdp/index.js b/projects/bima-labs-cdp/index.js deleted file mode 100644 index ccecf4bc83b..00000000000 --- a/projects/bima-labs-cdp/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const { addressZero } = require("../bent/constants"); -const { getLogs } = require("../helper/cache/getLogs"); -const bitcoinBook = require('../helper/bitcoin-book'); -const { sumTokens } = require("../helper/chain/bitcoin"); - -const config = { - ethereum: { - factory: "0xc5790164d3CCB6533b241EeE3Fd7f56862759376", - wrapperFactory: "0x76De9B5Df6dCAA70f88E4E0949E17367c4129Dbf", - fromBlock: 22095715, - psmList: [ - "0xEA811C2C400EE846E352D45C849657D920A888fe", - "0x97bb3167A88FE34B1EC6d7F02560c4F0aa6009E9", - "0x42Ad6834a6599a0B7a7812F01f8092B580523d67", - "0x705fd2306bf6E4dec47bF8Aaab378B04024792d4", - ], - }, - hemi: { - factory: "0xc5790164d3CCB6533b241EeE3Fd7f56862759376", - wrapperFactory: "0x76De9B5Df6dCAA70f88E4E0949E17367c4129Dbf", - fromBlock: 1391406, - psmList: [], - }, - core: { - factory: "0xc5790164d3CCB6533b241EeE3Fd7f56862759376", - wrapperFactory: "0x76De9B5Df6dCAA70f88E4E0949E17367c4129Dbf", - fromBlock: 23086081, - psmList: [], - }, - sonic: { - factory: "0xc5790164d3CCB6533b241EeE3Fd7f56862759376", - wrapperFactory: "0x76De9B5Df6dCAA70f88E4E0949E17367c4129Dbf", - fromBlock: 23769061, - psmList: [], - }, - plume_mainnet: { - factory: "0xc5790164d3CCB6533b241EeE3Fd7f56862759376", - wrapperFactory: "0x76De9B5Df6dCAA70f88E4E0949E17367c4129Dbf", - fromBlock: 1219008, - psmList: [], - }, - goat: { - factory: "0xc5790164d3CCB6533b241EeE3Fd7f56862759376", - wrapperFactory: "0x76De9B5Df6dCAA70f88E4E0949E17367c4129Dbf", - fromBlock: 3742120, - psmList: [], - }, - bsc: { - factory: "0xc5790164d3CCB6533b241EeE3Fd7f56862759376", - wrapperFactory: "0x76De9B5Df6dCAA70f88E4E0949E17367c4129Dbf", - fromBlock: 50108286, - psmList: [], - }, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: config[chain].factory, - eventAbi: - "event NewDeployment (address collateral, address priceFeed, address troveManager, address sortedTroves)", - onlyArgs: true, - fromBlock: config[chain].fromBlock, - }); - - const tokensAndOwners = []; - - for (const log of logs) { - const underlyingCollateral = await api.call({ - abi: "function wrappedCollToColl(address wrapped) view returns (address)", - target: config[chain].wrapperFactory, - params: [log.collateral], - }); - - if (underlyingCollateral === addressZero) { - tokensAndOwners.push([log.collateral, log.troveManager]); - } else { - tokensAndOwners.push([underlyingCollateral, log.collateral]); - } - } - - for (const psm of config[chain].psmList) { - const underlyingToken = await api.call({ - abi: "function underlying() view returns (address)", - target: psm, - }); - - tokensAndOwners.push([underlyingToken, psm]); - } - - return api.sumTokens({ tokensAndOwners }); - }, - }; -}); - -module.exports.bitcoin = { tvl: async (api) => sumTokens({ owners: bitcoinBook.bimaCdp }) } \ No newline at end of file diff --git a/projects/binance-beth/index.js b/projects/binance-beth/index.js deleted file mode 100644 index a0d92a446fd..00000000000 --- a/projects/binance-beth/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require("../helper/unwrapLPs"); -const sdk = require('@defillama/sdk') - -module.exports = { - ethereum: { - tvl: async ({ timestamp }) => { - const api = new sdk.ChainApi({ timestamp, chain: 'bsc' }) - await api.getBlock() - return { - [nullAddress]: await api.call({ target: ADDRESSES.bsc.BETH, abi: 'uint256:totalSupply' }) - } - } - } -} \ No newline at end of file diff --git a/projects/binance-btc/index.js b/projects/binance-btc/index.js deleted file mode 100644 index 3847560af6b..00000000000 --- a/projects/binance-btc/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "BTC on btc chain", - bitcoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.binance2 }), - ]), - }, -}; \ No newline at end of file diff --git a/projects/binance-staked-eth/index.js b/projects/binance-staked-eth/index.js deleted file mode 100644 index a86f2213048..00000000000 --- a/projects/binance-staked-eth/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const target = ADDRESSES.bsc.wBETH - -module.exports = { - ethereum: { - tvl: async (api) => ({ - ["ethereum:" + ADDRESSES.null]: ( - await api.call({ target, abi: 'erc20:totalSupply' }) - ) * ( - await api.call({ target, abi: "uint256:exchangeRate" }) - ) / 1e18 - }) - }, - bsc: { - tvl: async (api) => ({ - ["bsc:" + ADDRESSES.bsc.ETH]: ( - await api.call({ target, abi: 'erc20:totalSupply' }) - ) * ( - await api.call({ target, abi: "uint256:exchangeRate" }) - ) / 1e18 - }) - } -} diff --git a/projects/binance-us/index.js b/projects/binance-us/index.js deleted file mode 100644 index a259445b732..00000000000 --- a/projects/binance-us/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { cexExports } = require('../helper/cex') - -const config = { - ethereum: { - owners: [ - '0x61189da79177950a7272c88c6058b96d4bcd6be2', - '0x34ea4138580435b5a521e460035edb19df1938c1', - '0xf60c2ea62edbfe808163751dd0d8693dcb30019c', - ], - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'This wallets where collect from etherscan labelling.' \ No newline at end of file diff --git a/projects/binance/chains.json b/projects/binance/chains.json deleted file mode 100644 index c1efc3ee65d..00000000000 --- a/projects/binance/chains.json +++ /dev/null @@ -1,381 +0,0 @@ -{ - "algorand": [ - "MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI", - "QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U" - ], - "aptos": [ - "0x1d14ee0c332546658b13965a39faf5ec24ad195b722435d9fe23dc55487e67e3", - "0x292f853b48a28864755c971299ce8a73a3e32c19a0f7b8dbbf782482396e8ef3", - "0x33f91e694d40ca0a14cb84e1f27a4d03de5cf292b07ed75ed3286e4f243dab34", - "0x5bd7de5c56d5691f32ea86c973c73fec7b1445e59736c97158020018c080bb00", - "0x716666e019eb2cd1eea5ae29760e064f14984d8d6db2ff9ee56d0bd994e8c9b3", - "0x80174e0fe8cb2d32b038c6c888dd95c3e1560736f0d4a6e8bed6ae43b5c91f6f", - "0x9fbc354d59041b8b1b8368e3e7397ac943a3c7c6da3ffde3aa4f4d221a1d205d", - "0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70", - "0xbdb53eb583ba02ab0606bdfc71b59a191400f75fb62f9df124494ab877cdfe2a", - "0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a", - "0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e" - ], - "arbitrum": [ - "0x18e226459ccf0eec276514a4fd3b226d8961e4d1", - "0x1b5b4e441f5a22bfd91b7772c780463f66a74b35", - "0x25681ab599b4e2ceea31f8b498052c53fc2d74db", - "0x3931dab967c3e2dbb492fe12460a66d0fe4cc857", - "0x43684d03d81d3a4c70da68febdd61029d426f042", - "0x4aec0e98fc1fb55b9cc2faaa7a81acca42cb4e96", - "0x4ed6cf63bd9c009d247ee51224fc1c7041f517f1", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0x835678a611b28684005a5e2233695fb6cbbb0007", - "0x9dfb9014e88087fba78cc9309c64031d02be9a33", - "0xa7c0d36c4698981fab42a7d8c783674c6fe2592d", - "0xb38e8c17e38363af6ebdcb3dae12e0243582891d", - "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055", - "0xf92402bb795fd7cd08fb83839689db79099c8c9c", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "avax": [ - "0x3bce63c6c9abf7a47f52c9a3a7950867700b0158", - "0x43684d03d81d3a4c70da68febdd61029d426f042", - "0x45d3d68f14038099530b1c4448db8ecdd78179b1", - "0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0x6d8be5cdf0d7dee1f04e25fd70b001ae3b907824", - "0x835678a611b28684005a5e2233695fb6cbbb0007", - "0x978b21a854dbefcd6d51dfd269875d158046240b", - "0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9", - "0xa7c0d36c4698981fab42a7d8c783674c6fe2592d", - "0xaba2d404c5c41da5964453a368aff2604ae80a14", - "0xcddc5d0ebeb71a08fff26909aa6c0d4e256b4fe1", - "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055" - ], - "base": [ - "0x18e226459ccf0eec276514a4fd3b226d8961e4d1", - "0x3304e22ddaa22bcdc5fca2269b418046ae7b566a", - "0x4ed6cf63bd9c009d247ee51224fc1c7041f517f1", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0x835678a611b28684005a5e2233695fb6cbbb0007", - "0xa7c0d36c4698981fab42a7d8c783674c6fe2592d", - "0xd62e55b19135eb3c645573288ee4b6050f86ff54", - "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "bsc": [ - "0x01c952174c24e1210d26961d456a77a39e1f0bb0", - "0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645", - "0x18e226459ccf0eec276514a4fd3b226d8961e4d1", - "0x1fbe2acee135d991592f167ac371f3dd893a508b", - "0x29bdfbf7d27462a2d115748ace2bd71a2646946c", - "0x3c783c21a0383057d128bae431894a5c19f9cf06", - "0x43684d03d81d3a4c70da68febdd61029d426f042", - "0x43839fe6bb18eae45c4228e5d6c8521a9ab57b6e", - "0x4aec0e98fc1fb55b9cc2faaa7a81acca42cb4e96", - "0x4ed6cf63bd9c009d247ee51224fc1c7041f517f1", - "0x4fdfe365436b5273a42f135c6a6244a20404271e", - "0x515b72ed8a97f42c568d6a143232775018f133c8", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0x631fc1ea2270e98fbd9d92658ece0f5a269aa161", - "0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f", - "0x835678a611b28684005a5e2233695fb6cbbb0007", - "0x8894e0a0c962cb723c1976a4421c95949be2d4e3", - "0xa180fe01b906a1be37be6c534a3300785b20d947", - "0xa7c0d36c4698981fab42a7d8c783674c6fe2592d", - "0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774", - "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8", - "0xbf83d18a46325acb7d8f40a462d23a92f467ed7a", - "0xdccf3b77da55107280bd850ea519df3705d1a75a", - "0xe2fc31f816a9b94326492132018c3aecc4a93ae1", - "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "bitcoin": [ - "1DEuKerATHWRfyB14s6QCt4LPkfCTx4zaW", - "1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw", - "1PPWMe42cywnM61nVatkmiggwdRQYLiCyS", - "1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7", - "32BgTv3NSYbMsBTwDbNNN2GKZPCTJSkqDv", - "32KqbtrRVxC6GLUJgJhVQtFTaCdq4GrgBb", - "32bhzEniykYRFADVaRM5PYswsjC23cxtes", - "34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP", - "34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo", - "36oiSkAi1VVuUpfdv8E2V5fZ2EarHRJpis", - "378GLcve92X2Q4UrCyoMFDL5k5QrzeG7JN", - "395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ", - "39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v", - "3AQ8bAh88TQU7JV1H3ovXrwsuV6s3zYZuN", - "3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry", - "3AtnehKDkFPC1bKvdrEVPSRGCtxQH8F1R8", - "3CySuFKbBS29M7rE5iJakZRNqb3msMeFoN", - "3E97AjYaCq9QYnfFMtBCYiCEsN956Rvpj2", - "3EVVc8e2rxwUuERtdJCduWig8DnpsUqyA6", - "3F9CGMu7JSJnMHA8jFM2KgxuH6hhxtvENP", - "3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B", - "3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA", - "3HkgC2R5PhqyXy6RVFyemvxN1VuFbQiQ5V", - "3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ", - "3JqPhvKkAPcFB3oLELBT7z2tQdjpnxuDi9", - "3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a", - "3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH", - "3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6", - "3M3EtJGx5Dy9nCATLDhyRCrKGc38QC9z2e", - "3NPL82eaehTFh4r3StpHqVQBTnZJFaGsyy", - "3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa", - "3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb", - "3PXBET2GrTwCamkeDzKCx8DeGDyrbuGKoc", - "3QK5vQ9hucSg8ZC8Vizq83qEWeHFLAWMud", - "bc1q5n5dy7jgqhmpnmx44d3780qefzaphjreds0z9y", - "bc1q5qvs2dzzydqt4ygfn0k0ertjnv8ctytgcdz7l0", - "bc1q5rsc4uscnmemlwru8xsys26k3xgxewqfnf3k7j", - "bc1q7t9fxfaakmtk8pj7tdxjvwsng6y9x76czuaf5h", - "bc1qdtmav38lca8yu3rrcknnqx5242cckgxqws7m72", - "bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h" - ], - "celo": [ - "0xef268b5c05452d63a17da12f562368e88a036ef1", - "0xf6436829cf96ea0f8bc49d300c536fcc4f84c4ed" - ], - "chz": [ - "0x43684d03d81d3a4c70da68febdd61029d426f042", - "0x4ed6cf63bd9c009d247ee51224fc1c7041f517f1", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0x87917d879ba83ce3ada6e02d49a10c1ec1988062", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "doge": [ - "D7BrtudMAdwz2U7vSGumVDuxZsZNibJuzw", - "D7D2f2WuEkwhTWqBkisZ5sM3JagaBcNWBs", - "D7bg2iUG3UiHuTWjRqcjdJiEjHrsFASsjw", - "DA9TU5Gtd4VM8petBvf8ecv9u13NSTYzzz", - "DAYthKnkrWUHRENvtBwjemi6kFzk4K9SMr", - "DCqD9gyq3qumbeEJZKc2Tm2R96JEd9dSDe", - "DD1h9ojoyAdAGLXaqgqZP3j86AtxZs6jCn", - "DD7W4ddD7wBeMVhJmyPAy9qcDp9ypwbxpD", - "DE5opaXjFgDhFBqL6tBDxTAQ56zkX6EToX", - "DEth4cF3doxmbcv9ofH3vm4j2NCozn8DL6", - "DFoQ1qrgDM7D9tAhF7Mahbp6zLv8CzK3XH", - "DGmd2jn1D7oLXpdpcGkLaGLDMbnRt4qkH3", - "DGmzv39riELTuigZCUD6sWoHEHPdSbxdUB", - "DJfU2p6woQ9GiBdiXsWZWJnJ9uDdZfSSNC", - "DKjcdPpQLoVfkZsN4wJr2RFuyFCoAVvoRe", - "DLqwvgk27ACJnHPEGxyDfspieHBVYJRZiC", - "DMURD7AGQwQhVLzz53QzQ8VsmmZShycpaz", - "DMcrq3jy8MVYTBM9tGCjFZerpKXpW91WXx", - "DPAMdZsSirVBGeDR9sE1LJXkwG6AQSNAMW", - "DPNqMsW1rotjhCzcbBEXzK3W73DiyzVLYc", - "DQYqMYmQCfL2eDLmMXV5uvCPkN6Vv4KtSx", - "DQkwksfYrAWAR9tRcqygA5pihmnURozxzo", - "DTGrjpvJXQU2zSpUDsnk9b4PAQW5Pwtg4K", - "DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3", - "DTXbttzfvPr4t6CPEAtKKUrHpm9hpfgahu", - "DTbG3RJRejnM99g8MSnhSbJxJVW8X7YXy9", - "DU8gPC5mh4KxWJARQRxoESFark2jAguBr5", - "DUMB7o1jqJvpriAAExmEFi1Y88s5q94fi9" - ], - "polkadot": [ - "15Vr65SvSXu83zcNEgzrR6oXYhC5Hnp7Hsfvbpes9rjUZchG", - "1663wmCKp7nAuvcVq8c1wFPpbSFUbZyrdwWj4jMEL9kTkGHL", - "169HLL5FwyoazAXyc8g7M6VRFCbpiLKTW6yQBVHBjRBUcFra", - "16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD", - "1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF", - "1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7" - ], - "ethereum": [ - "0x030e37ddd7df1b43db172b23916d523f1599c6cb", - "0x18e226459ccf0eec276514a4fd3b226d8961e4d1", - "0x1b46970cfe6a271e884f636663c257a5a571fb2c", - "0x21a31ee1afc51d94c2efccaa2092ad1028285549", - "0x28c6c06298d514db089934071355e5743bf21d60", - "0x308a2a0712570daeea77c8ba9c27a32cdc4000d4", - "0x38aaef3782910bdd9ea3566c839788af6ff9b200", - "0x43684d03d81d3a4c70da68febdd61029d426f042", - "0x4976a4a02f38326660d17bf34b431dc6e2eb2327", - "0x4aec0e98fc1fb55b9cc2faaa7a81acca42cb4e96", - "0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8", - "0x4ed6cf63bd9c009d247ee51224fc1c7041f517f1", - "0x4fdfe365436b5273a42f135c6a6244a20404271e", - "0x56eddb7aa87536c09ccc2793473599fd21a8b17f", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0x835678a611b28684005a5e2233695fb6cbbb0007", - "0x87433fec6f8d9df13d1e17c4b11364ecd2e93a51", - "0x9696f59e4d72e237be84ffd425dcad154bf96976", - "0x98adef6f2ac8572ec48965509d69a8dd5e8bba9d", - "0xa64b436964e7415c0e70b9989a53e1fb9a90e726", - "0xa7c0d36c4698981fab42a7d8c783674c6fe2592d", - "0xad354cfbaa4a8572dd6df021514a3931a8329ef5", - "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8", - "0xc8daf809c7d7c27dd62d006196d8901ba57e5eae", - "0xdfd5293d8e347dfe59e90efd55b2956a1343963d", - "0xe1940f578743367f38d3f25c2d2d32d6636929b6", - "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "hedera": [ - "0.0.1030878", - "0.0.4523906", - "0.0.652978", - "0.0.9933945" - ], - "litecoin": [ - "LXTras9zXwkUvmsAF15hUu86by2UdNLSWk", - "LZEjckteAtWrugbsy9zU8VHEZ4iUiXo9Nm", - "LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN", - "LhcTcrMrheBqbthwfit43jkT9qnge5wSs1", - "LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq", - "LiDY79SxUJfjE6fyqyxXxh9kBpfi4sRoKf", - "MB6LrCx4qjEFpU9U1WBrgPrntkfMR5GtCA", - "MLj1bgnNs8iAmNxhZNnrymQaAZNqnXXV3E", - "MQSs17ECe51kqhkFPQY98wiyPvGuK5iCB6", - "MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS", - "MS56eJAupdvN5bYo6ythw784qahCpTzZ5V", - "MW87w56tHzzBYuHS4tfTQ1aYN7Kz6iuSra" - ], - "manta": [ - "0x18e226459ccf0eec276514a4fd3b226d8961e4d1", - "0x3cdfb47b0e910d9190ed788726cd72489bf10499", - "0x923fc76cb13a14e5a87843d309c9f401ec498e2d", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "polygon": [ - "0x082489a616ab4d46d1947ee3f912e080815b08da", - "0x18e226459ccf0eec276514a4fd3b226d8961e4d1", - "0x290275e3db66394c52272398959845170e4dcb88", - "0x43684d03d81d3a4c70da68febdd61029d426f042", - "0x4ed6cf63bd9c009d247ee51224fc1c7041f517f1", - "0x4fdfe365436b5273a42f135c6a6244a20404271e", - "0x505e71695e9bc45943c58adec1650577bca68fd9", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0x835678a611b28684005a5e2233695fb6cbbb0007", - "0xa7c0d36c4698981fab42a7d8c783674c6fe2592d", - "0xb75f972af41d6ff0bcc6b2613b832632de1e418b", - "0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245", - "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "near": [ - "27ddc83845172d5ee380af7ba6bcc524145892ff0b91a6078e9ae6d26655e56a", - "451913e633c72fb951effe076d3bd2977e3f08083dcf6c87fa89992b0d437c5c", - "56203c5b21b828175fa9c1fd4161ecaca76de9a1f6008935eeb9b4d6dc821a22", - "5c33c6218d47e00ef229f60da78d0897e1ee9665312550b8afd5f9c7bc6957d2", - "7747991786f445efb658b69857eadc7a57b6b475beec26ed14da8bc35bb2b5b6", - "7e6e17fcb8e8e6a22ecd47bbd1b58b1af3582b97bbfd4a8d974bb9c266fa282b", - "9c484fa5d2d069569ba063fc555c34e621ccd88fdbb0295fc79bad232621c5c1", - "binance1.near", - "binancecold3.near", - "c6f10c6993a97c90e34ce60c5ea3ccb4915cf731daff0e7a2e5d93ebc879cc74", - "d04204b6591fefb973a8ed60929f8211af89ee38020da9faf905acdc7a320063", - "e1074e251c7350b8a4480816fffd897b727011df579e04cc19f890fd48fd8830", - "e1a70d1d2b8df95e0742c5aa18eb9089d84d5365fead073ac77d4c115cf3e264", - "e37e1cf6cd9c8601881799e531c958cd0ca01c734a6349aa88a23489c4258d05" - ], - "op_bnb": [ - "0x001ceb373c83ae75b9f5cf78fc2aba3e185d09e2", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "optimism": [ - "0x18e226459ccf0eec276514a4fd3b226d8961e4d1", - "0x4ed6cf63bd9c009d247ee51224fc1c7041f517f1", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0x8c991b8bb43859d2f3dff541eb43add2ce92505f", - "0xacd03d601e5bb1b275bb94076ff46ed9d753435a", - "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "plasma": [ - "0x8741b106e9738a6971ad07dabcfe95ff66337b51", - "0xc8daf809c7d7c27dd62d006196d8901ba57e5eae" - ], - "ronin": [ - "0x030e37ddd7df1b43db172b23916d523f1599c6cb", - "0x5a52e96bacdabb82fd05763e25335261b270efcb", - "0xb32e9a84ae0b55b8ab715e4ac793a61b277bafa3" - ], - "scroll": [ - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "solana": [ - "2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S", - "3gd3dqgtJ4jWfBfLYTX67DALFetjc5iS72sCgRhCkW2u", - "3yFwqXBfZY4jBVUafQ1YEXw189y2dN3V5KQq9uzBDy1E", - "5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9", - "6QJzieMYfp7yr3EdrePaQoG3Ghxs2wM98xSLRu8Xh56U", - "6oCa9Tz8VXVp63WiFyruE5PD6yXz3pCsv6oGzUGvg9TP", - "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM", - "EPauhjQjjTBCpeBtszS3xGRASLpEJFM1cspSiFRXZa9Z", - "G9RCBaYb8aBRxoe8QBC2ucGrVqjuZFysRhY8d56cnNT1", - "GBrURzmtWujJRTA3Bkvo7ZgWuZYLMMwPCwre7BejJXnK", - "GK35nWN6ZHSGZrRTf8kTQd8RkFCighChPEb41XwSFVAC", - "HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664", - "c5f9zfpkKMD9N8uLqJcFeJAAz7v12vDMnup9Y6EeQkk" - ], - "sonic": [ - "0x18e226459ccf0eec276514a4fd3b226d8961e4d1", - "0x4fdfe365436b5273a42f135c6a6244a20404271e", - "0x64de13c46f627d9c86212050d48756fb65c06d8a", - "0xa4e471dbfe8c95d4c44f520b19cee436c01c3267", - "0xab72bd3eb3b5cc90165fa39da85ad0d496330c00", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ], - "starknet": [ - "0x00c1ce9c68f1c4a1b05e8d043b9b05784f41685d68e5009ffe379aa7f7c95ccf", - "0x0213c67ed78bc280887234fe5ed5e77272465317978ae86c25a71531d9332a2d", - "0x04164013f90b05d67f026779bf96e9c401c96f3485b645a786166e6935fba116" - ], - "sui": [ - "0x5be98f6812b102e8677cb9afa5644b35c4e6198be7330121dbda04ac2aedba44", - "0x5fdfcc18e0791862c107c49ea13a5bcf4965f00ac057f56ea04034ebb5ea45ad", - "0x7ab9a6a7109dcb9cb357a109f32dfcc78a7aa2d6029084eb924d95133fc71cec", - "0x8d4e8e88447f95a8509de759bf649a51876581f6a6338a9b3c68f82cfb6edd9b", - "0x935029ca5219502a47ac9b69f556ccf6e2198b5e7815cf50f68846f723739cbd", - "0x96ed379243830efc1adfe2c1359670f8289561c7f0d1b8810b3db28a827fbe51", - "0xac3034b15f40ea238c0f9f19f87b1692308219081e72d2798c65167693388082", - "0xac5bceec1b789ff840d7d4e6ce4ce61c90d190a7f8c4f4ddf0bff6ee2413c33c" - ], - "ton": [ - "UQD4uGNdB4a3f52mYOZf0x1nCmdd1DAvrLppL0a1cetTYCQx", - "UQDKHZ7e70CzqdvZCC83Z4WVR8POC_ZB0J1Y4zo88G-zCSRH" - ], - "tron": [ - "TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr", - "TCEn8ogRSiqdqv26UhsJmQQemrgJS56ZBD", - "TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf", - "TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo", - "TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe", - "TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9", - "TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY", - "TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G", - "TQrY8tryqsYVCYS3MFbtffiPp2ccyn4STm", - "TRGCqsUXeynKTgynp2j9g3sg7Nux2KtB3u", - "TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb", - "TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS" - ], - "stellar": [ - "GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA", - "GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH" - ], - "ripple": [ - "rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A", - "rDAE53VfMvftPB4ogpWGWvzkQxfht6JPxr", - "rDNuKeiwTHWRCyBrh1aQUthLPkCUTxhz2W", - "rEbXa31msPbPDZgmLMKH7CaKaf7VipoLBo", - "rEy8TFcrAPvhpKrwyrscNYyqBGUkE9hKaJ", - "rGpxjNG7ovJTqNbahA6obUMyEfi7AnPax4", - "rJb5KsHsDHF1YS5B5DU6QCkH5NsPaKQTcy", - "rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK", - "rP3mUZyCDzZkTSd1VHoBbFt8HGm8fyq8qV", - "rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A", - "rPPWMehpcyA8Mar8V2tkm5ggAdRQYL5UyS", - "rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf", - "rarG6FaeYhnzSKSS5EEPofo4gFsPn2bZKk", - "rfQ9EcLkU6WnNmkS3EwUkFeXeN47Rk8Cvi", - "rhWj9gaovwu2hZxYW7p388P8GRbuXFLQkK", - "rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza", - "rwkbXMJQLQhVhcjZnnHV4zu39N7WcQXQKX" - ], - "era": [ - "0x43684d03d81d3a4c70da68febdd61029d426f042", - "0x4aec0e98fc1fb55b9cc2faaa7a81acca42cb4e96", - "0x4ed6cf63bd9c009d247ee51224fc1c7041f517f1", - "0x7aed074ca56f5050d5a2e512ecc5bf7103937d76", - "0xa84fd90d8640fa63d194601e0b2d1c9094297083", - "0xf977814e90da44bfa03b6295a0616a897441acec" - ] -} \ No newline at end of file diff --git a/projects/binance/config.js b/projects/binance/config.js deleted file mode 100644 index 97225611df1..00000000000 --- a/projects/binance/config.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - - -const chains = require('./chains.json') - -const chainBlacklistedTokens = { - ethereum: [ - '0x9be89d2a4cd102d8fecc6bf9da793be995c22541', // BBTC - ADDRESSES.ethereum.BNB, // WBNB - ], - bsc: [ - // ADDRESSES.null, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.TUSD - ], - solana: [ - // ADDRESSES.null, - "7XU84evF7TH4suTuL8pCXxA6V2jrE8jKA6qsbUpQyfCY", // conan - "CQvadZTR8vikRqqwyhvYV8YpdfCRjUCGyQwCuY4rxBQt" // conan https://prnt.sc/5rolZ0fF58q0 , broke the others field - ], -} -const cexConfig = { - bep2: {}, // for historical data -} - -Object.entries(chains).forEach(([chain, owners]) => { - cexConfig[chain] = { owners } - if (chainBlacklistedTokens[chain]) { - cexConfig[chain].blacklistedTokens = chainBlacklistedTokens[chain] - } -}) - -module.exports = cexConfig \ No newline at end of file diff --git a/projects/binance/genConfig.js b/projects/binance/genConfig.js deleted file mode 100644 index 47d0f1eb060..00000000000 --- a/projects/binance/genConfig.js +++ /dev/null @@ -1,78 +0,0 @@ -const fs = require('fs') -const configFile = __dirname + '/chains.json' -const csvFile = __dirname + '/data.csv' - -const data = fs.readFileSync(csvFile, 'utf8') -const assetList = data.split('\n').map(i => i.split(',')).filter(i=> { - return !i[5] || i[5] === '""' // ignore address if it is a custodia -}) -assetList.pop() - -const networkAddresses = {} -const ignoredChainSet = new Set(['ENJ', 'BEP2', 'STATEMINT', 'BNB', 'MTL', 'WLD', 'BCH']) - -assetList.forEach(([_, network, address]) => { - if (ignoredChainSet.has(network)) return; - if (!networkAddresses[network]) { - networkAddresses[network] = [] - } - networkAddresses[network].push(address) -}) - -const chainMap = { - BTC: 'bitcoin', - ETH: 'ethereum', - BEP20: 'bsc', - BSC: 'bsc', - CELO: 'celo', - CHZ2: 'chz', - HBAR: 'hedera', - TRX: 'tron', - AVAX: 'avax', - ARB: 'arbitrum', - ARBITRUM: 'arbitrum', - AVAXC: 'avax', - LTC: 'litecoin', - MATIC: 'polygon', - OP: 'optimism', - OPTIMISM: 'optimism', - RON: 'ronin', - XRP: 'ripple', - SOL: 'solana', - DOT: 'polkadot', - ALGO: 'algorand', - APT: 'aptos', - FTM: 'fantom', - BASE: 'base', - ERA: 'era', - ZKSYNCERA: 'era', - MANTA: 'manta', - SUI: 'sui', - TON: 'ton', - STK: 'starknet', - STARKNET: 'starknet', - OPBNB: 'op_bnb', - NEAR: 'near', - DOGE: 'doge', - XLM: 'stellar', - SCROLL: "scroll", - SONIC: "sonic", - PLASMA: "plasma", -} - - -const chainData = {} -const key = Object.keys(networkAddresses).sort() - -key.forEach((network) => { - let addresses = networkAddresses[network] - const chain = chainMap[network] - if (chainData[chain]) addresses.push(...chainData[chain]) - if (!chain) throw new Error(`No chain mapping for ${network}`) - addresses = addresses.map(i => i.startsWith('0x') ? i.toLowerCase() : i) - addresses = [...new Set(addresses)] - addresses.sort() - chainData[chain] = addresses -}) - -fs.writeFileSync(configFile, JSON.stringify(chainData, null, 2)) \ No newline at end of file diff --git a/projects/binance/index.js b/projects/binance/index.js deleted file mode 100644 index 3a1da9f544a..00000000000 --- a/projects/binance/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const config = require('./config') -const { cexExports } = require('../helper/cex') -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); - -const withdrawalAddresses = [ - '0x6454ac71ca260f99cca99a3f4241dfda20cfa965', - '0xdbeb6c856ef5a167f5e1acb9dff65adb33207d8b', - '0x42a93a9f5cfda54716c414b6eaf07cf512f46ead', - '0x8498fc7280668874a5da79e87ca0896f4f0d1196', - '0x8e609ac80f4324e499a6efd24f221a2caa868224', - '0xdbf28a152d79b2b98eecd229b412ee98d21ec3bc', - '0x110daa3f3fac2a54bb508ac94f31f9df77057b29', - '0xfc8059c2fb22005ede8a86d388e3d0f536a4dd44', - '0xf16924b866e58ac916ba933d1f1034bcbbb1958c', - '0x150aace136535a374f05b5ee209b6a61396db1c0', - '0x8a6f8404c9ea4c33502a3f6a4bf8e41ef5ca10ea', - '0xa9fc92f6faf9f103fc81d17de3e8daadc888afff', - '0xc47b3342df38d747033b6041f54e4e5e300c8d18', - '0xf1f8cb7633d3ca3fd06c084d18ca5491a85ae9b4', - '0xa345dcb63f984ed1c6d1a8901e0cdbd13b2b4d19', - '0xd27b39cb25fed854f9fce3a4e451f96e62089e48', - '0x6357e4bdaff733dfe8f50d12d07c03b3bed0884b', -] - -module.exports = mergeExports([ - cexExports(config), - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddresses: withdrawalAddresses, size: 200, sleepTime: 20_000, proxy: true }) } }, -]) - -module.exports.methodology = 'We collect the wallets from this binance blog post https://www.binance.com/en/blog/community/our-commitment-to-transparency-2895840147147652626. We are not counting the Binance Recovery Fund wallet' \ No newline at end of file diff --git a/projects/binaryswap/index.js b/projects/binaryswap/index.js deleted file mode 100644 index a5892450f56..00000000000 --- a/projects/binaryswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getUniTVL} = require("../helper/unknownTokens"); - -module.exports = { - op_bnb: { - tvl: getUniTVL({ factory: "0xd50aaE6C73E2486B0Da718D23F35Dcf5aad25911", useDefaultCoreAssets: true,}) - }, -}; \ No newline at end of file diff --git a/projects/binaryx-platform/index.js b/projects/binaryx-platform/index.js deleted file mode 100644 index 8f0a3b8fb2b..00000000000 --- a/projects/binaryx-platform/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const propertyFactoryAddress = '0x5d618C67674945081824e7473821A79E4ec0970F'; -const priceOracleAddress = '0x551C261eFcf109378D101de9A2741FB8078Abf45'; -const offPlanFactoryAddress = '0x2718fe8eEB091301d1f3D367231aFfE95C2f68Fe'; -const offPlanServiceAddress = '0xe442Aa8dC9D8526d7ccDDF4f3f8369294EAfA9dC'; - -async function tvl(api) { - await calculateRentalPropertiesTVL(api); - await calculateOffPlanPropertiesTVL(api); -} - -async function calculateRentalPropertiesTVL(api) { - const rentalAssets = (await api.call({ target: propertyFactoryAddress, abi: 'address[]:getAssets' })) - const rentalSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: rentalAssets }); - const rentalPrices = await api.multiCall({ abi: 'function latestPrice(address asset) view returns (uint256)', calls: rentalAssets, target: priceOracleAddress }); - rentalSupplies.forEach((supply, i) => { - const valueInUSDT = (supply / 1e18) * (rentalPrices[i] / 1e6); - api.add(ADDRESSES.polygon.USDT, valueInUSDT * 1e6); - }); -} - -async function calculateOffPlanPropertiesTVL(api) { - const allOffPlanAssets = await fetchAllOffPlanAssets(api); - const offPlanSellProgress = await api.multiCall({ - abi: 'function getSellProgress(address offPlan) view returns (tuple(uint256 tokensSoldD18, uint256 amountInUsdCollectedD18, uint256 amountInUsdLeftToCollectD18, uint256 tokensLeftD18))', - calls: allOffPlanAssets, - target: offPlanServiceAddress - }); - - for (let i = 0; i < allOffPlanAssets.length; i++) { - const valueInUSDT = offPlanSellProgress[i].amountInUsdCollectedD18 / 1e18; - api.add(ADDRESSES.polygon.USDT, valueInUSDT * 1e6); - } -} - -async function fetchAllOffPlanAssets(api) { - const pageSize = 20; - let page = 0; - let hasMoreOffPlans = true; - let allOffPlanAssets = []; - - while (hasMoreOffPlans) { - const { pointers, totalCount } = await api.call({ - target: offPlanFactoryAddress, - abi: 'function getPointersPaginated(uint256 page, uint256 perPage) view returns (address[] pointers, uint256 totalCount)', - params: [page, pageSize] - }); - - if (pointers.length > 0) { - allOffPlanAssets = [...allOffPlanAssets, ...pointers]; - } - - if (allOffPlanAssets.length >= totalCount || pointers.length === 0) { - hasMoreOffPlans = false; - } else { - page++; - } - } - - return allOffPlanAssets; -} - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl, - }, - methodology: "TVL for the Binaryx Platform is calculated by summing the values of all assets. For regular (rental) properties, each asset's value is determined by multiplying its token supply by its token price, where the token price is obtained from the priceOracle. For off-plan properties, the TVL is calculated directly from the amountInUsdCollectedD18 value returned by the getSellProgress method, representing the actual USD amount collected for each off-plan property." -}; diff --git a/projects/bing-cex/index.js b/projects/bing-cex/index.js deleted file mode 100644 index 832c8c82d99..00000000000 --- a/projects/bing-cex/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - bitcoin: { - owners: bitcoinAddressBook.bingCex, - }, - arbitrum: { - owners: ["0xd3D3a295bE556Cf8cef2a7FF4cda23D22c4627E8"], - }, - bsc: { - owners: [ - "0x0b07f64ABc342B68AEc57c0936E4B6fD4452967E", - "0xc3dcd744db3f114f0edf03682b807b78a227bf74", - "0x434742703055bd20f42142d9d70b0735a5eb1b14", - "0x503b7050882335BAa0F384c671a23f9e7168a5ba", - ], - }, - ethereum: { - owners: [ - "0xd3D3a295bE556Cf8cef2a7FF4cda23D22c4627E8", - "0x909C1c195FC0a31758C7169B321B707C9F44886B", - "0xF7b7775f6D31eC2d14984f1cA3e736F5FB896DA2", - "0xAd8E5cEb7D77e10403Be8430717c515273c31b8d", - "0x74E7Fd0b532f88cf8cC50922F7a8f51e3F320Fa7", - "0xA1195F0d9B010F86633E1553F1286d74F80eF52B", - ], - }, - tron: { - owners: [ - "TU72cTvdkWvoB7xgN5TXFtoXtUuWRuvUTm", - "TVPQLkVXvN7MduHWhD4Q7rGVyRdDu5R8F6", - "TErZkyXAoG4K67hmdvFUh6EgNARNETLkXX", - "TRtC94y3QP9n5axxTsyaqsRtWDE5zwiyk3", - "TFBfWTT5DPEWr3BEQQUJ1NpqS7cZuSntC7", - ], - }, - ripple: { - owners: [ - "rPr5iwPZRVrxV7WACQxkYdoZtX4ikMxw9c", - "rfqj8P5C36cRaFjpR5yYbb8XHYK9N5KNux", - ], - }, - solana: { - owners: [ - "3Ln6KEgLoMR2xFHfqtYazP7CxFQPDtUVVtwCVsLKVfmV", - "J1BGeK3ojLF5dqaNFLg7WkQToyYisY79pWvHHscTJcpD", - ], - }, - ton: { - owners: [ - "UQDIv0mSHnXxE6C_CTIZXRkricGJwpUNg5PXU3BaZW1nFhqB", - "UQCPPiMQG_bj1-C3oQzfsufaCQQiBCvNcPoMnsrV3pO9xrDg", - ], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/binlayer/index.js b/projects/binlayer/index.js deleted file mode 100644 index ce82ce2927e..00000000000 --- a/projects/binlayer/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -const chains = ['bsc'] - -chains.forEach(chain => { - module.exports[chain] = { - tvl: async function (api) { - const { result } = await getConfig(`binlayer/${api.chain}`, `https://api.binlayer.xyz/v1/stakeList?chainId=${api.chainId}`) - const vaults = result.map(f => f.strategyAddress) - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: vaults }) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults], }) - } - } -}) diff --git a/projects/biokript/index.js b/projects/biokript/index.js deleted file mode 100644 index 844050762cd..00000000000 --- a/projects/biokript/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('bsc', '0x795802cb01a7be4be2f7f114b232a83b3adce64a') \ No newline at end of file diff --git a/projects/biquid/index.js b/projects/biquid/index.js deleted file mode 100644 index d162546b12c..00000000000 --- a/projects/biquid/index.js +++ /dev/null @@ -1,11 +0,0 @@ - -async function tvl(api) { - const totalSupply = await api.call({ target: '0xEff8378C6419b50C9D87f749f6852d96D4Cc5aE4', abi: "erc20:totalSupply", }); - api.addGasToken(totalSupply); -} - -module.exports = { - bfc: { - tvl, - } -} \ No newline at end of file diff --git a/projects/bishares/abi.js b/projects/bishares/abi.js deleted file mode 100644 index 700a3458fa6..00000000000 --- a/projects/bishares/abi.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - token: "address:token", - balance: "uint256:balance", -} \ No newline at end of file diff --git a/projects/bishares/config.js b/projects/bishares/config.js deleted file mode 100644 index d62ab01cddb..00000000000 --- a/projects/bishares/config.js +++ /dev/null @@ -1,445 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// data taken from - -module.exports = { - toa: { - fantom: [ - [ - "0x1e4f97b9f9f913c46f1632781732927b9019c68b", - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - "0x29b0da86e484e1c0029b56e817912d778ac0ec69", - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - "0x5cc61a78f164885776aa610fb0fe1257df78e59b", - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - ADDRESSES.fantom.MIM, - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - "0xae75a438b2e0cb8bb01ec1e1e376de11d44477cc", - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - "0xb3654dc3d10ea7645f8319668e8f54d2574fbdc8", - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - "0xd2f38621c3c65300ecaba7020c05d1350f9c265c", - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - "0xd67de0e0a0fd7b15dc8348bb9be742f3c5850454", - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - "0xddcb3ffd12750b45d32e084887fdf1aabab34239", - "0x259c0cf00f8710b473457314420114ae4c87cee5" - ], - [ - "0x0e121961dd741c9d49c9a04379da944a9d2fac7a", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0x10b620b2dbac4faa7d7ffd71da486f5d44cd86f9", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0x37c045be4641328dfeb625f1dde610d061613497", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0x5cc61a78f164885776aa610fb0fe1257df78e59b", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0x6b77d8b9be440fcbfe72cb4104d98bbd7cf91b14", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0x6c021ae822bea943b2e66552bde1d2696a53fbb7", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - ADDRESSES.fantom.MIM, - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0xc5e2b037d30a390e62180970b3aa4e91868764cd", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0xd2f38621c3c65300ecaba7020c05d1350f9c265c", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0xf16e81dce15b08f326220742020379b855b87df9", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0xfbfae0dd49882e503982f8eb4b8b1e464eca0b91", - "0xa55568847c5c5be3b6c59c6e57e74677591d900d" - ], - [ - "0x0e121961dd741c9d49c9a04379da944a9d2fac7a", - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - "0x1e4f97b9f9f913c46f1632781732927b9019c68b", - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - "0x29b0da86e484e1c0029b56e817912d778ac0ec69", - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - "0x5cc61a78f164885776aa610fb0fe1257df78e59b", - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - ADDRESSES.fantom.MIM, - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - "0xae75a438b2e0cb8bb01ec1e1e376de11d44477cc", - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - "0xb3654dc3d10ea7645f8319668e8f54d2574fbdc8", - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - "0xc5e2b037d30a390e62180970b3aa4e91868764cd", - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - "0xfbfae0dd49882e503982f8eb4b8b1e464eca0b91", - "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" - ], - [ - "0x1e4f97b9f9f913c46f1632781732927b9019c68b", - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ], - [ - "0x29b0da86e484e1c0029b56e817912d778ac0ec69", - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ], - [ - "0x5cc61a78f164885776aa610fb0fe1257df78e59b", - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ], - [ - ADDRESSES.fantom.MIM, - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ], - [ - "0xae75a438b2e0cb8bb01ec1e1e376de11d44477cc", - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ], - [ - "0xb3654dc3d10ea7645f8319668e8f54d2574fbdc8", - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ], - [ - "0xd2f38621c3c65300ecaba7020c05d1350f9c265c", - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ], - [ - "0xd67de0e0a0fd7b15dc8348bb9be742f3c5850454", - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ], - [ - "0xddcb3ffd12750b45d32e084887fdf1aabab34239", - "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" - ] - ], - bsc: [ - [ - "0x19a6da6e382b85f827088092a3dbe864d9ccba73", - "0x10a520829c1e9631ef9e60e37eea3916092caa99" - ], - [ - "0x1ce0c2827e2ef14d5c4f29a091d735a204794041", - "0x10a520829c1e9631ef9e60e37eea3916092caa99" - ], - [ - ADDRESSES.bsc.ETH, - "0x10a520829c1e9631ef9e60e37eea3916092caa99" - ], - [ - "0x3ee2200efb3400fabb9aacf31297cbdd1d435d47", - "0x10a520829c1e9631ef9e60e37eea3916092caa99" - ], - [ - ADDRESSES.bsc.BTCB, - "0x10a520829c1e9631ef9e60e37eea3916092caa99" - ], - [ - "0xad29abb318791d579433d831ed122afeaf29dcfe", - "0x10a520829c1e9631ef9e60e37eea3916092caa99" - ], - [ - "0xcc42724c6683b7e57334c4e856f4c9965ed682bd", - "0x10a520829c1e9631ef9e60e37eea3916092caa99" - ], - [ - ADDRESSES.bsc.BUSD, - "0x10a520829c1e9631ef9e60e37eea3916092caa99" - ], - [ - "0x19a6da6e382b85f827088092a3dbe864d9ccba73", - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - ADDRESSES.bsc.ETH, - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - "0x52ce071bd9b1c4b00a0b92d298c512478cad67e8", - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - "0x603c7f932ed1fc6575303d8fb018fdcbb0f39a95", - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - "0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e", - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - "0x947950bcc74888a40ffa2593c5798f11fc9124c4", - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - "0x9ac983826058b8a9c7aa1c9171441191232e8404", - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - "0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd", - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - "0xfb6115445bff7b52feb98650c87f44907e58f802", - "0x28939911a862bd4e6b10e281f233a5e060114e0b" - ], - [ - "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0x19a6da6e382b85f827088092a3dbe864d9ccba73", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0x47bead2563dcbf3bf2c9407fea4dc236faba485a", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0x4b0f1812e5df2a09796481ff14017e6005508003", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0x603c7f932ed1fc6575303d8fb018fdcbb0f39a95", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0xa7f552078dcc247c2684336020c03648500c6d9f", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - ADDRESSES.bsc.WBNB, - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0xca3f508b8e4dd382ee878a314789373d80a5190a", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0xe02df9e3e622debdd69fb838bb799e3f168902c5", - "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" - ], - [ - "0x154a9f9cbd3449ad22fdae23044319d6ef2a1fab", - "0x8f9f6589c2eb04ae4a0a737b78353fdbb628ffe8" - ], - [ - "0x19a6da6e382b85f827088092a3dbe864d9ccba73", - "0x8f9f6589c2eb04ae4a0a737b78353fdbb628ffe8" - ], - [ - "0x3203c9e46ca618c8c1ce5dc67e7e9d75f5da2377", - "0x8f9f6589c2eb04ae4a0a737b78353fdbb628ffe8" - ], - [ - "0x3fcca8648651e5b974dd6d3e50f61567779772a8", - "0x8f9f6589c2eb04ae4a0a737b78353fdbb628ffe8" - ], - [ - "0x477bc8d23c634c154061869478bce96be6045d12", - "0x8f9f6589c2eb04ae4a0a737b78353fdbb628ffe8" - ], - [ - "0x715d400f88c167884bbcc41c5fea407ed4d2f8a0", - "0x8f9f6589c2eb04ae4a0a737b78353fdbb628ffe8" - ], - [ - "0x833f307ac507d47309fd8cdd1f835bef8d702a93", - "0x8f9f6589c2eb04ae4a0a737b78353fdbb628ffe8" - ], - [ - "0xd9025e25bb6cf39f8c926a704039d2dd51088063", - "0x8f9f6589c2eb04ae4a0a737b78353fdbb628ffe8" - ], - [ - "0x19a6da6e382b85f827088092a3dbe864d9ccba73", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x2198b69b36b86f250549d26d69c5957912a34ec2", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x339c72829ab7dd45c3c52f965e7abe358dd8761e", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x3fcca8648651e5b974dd6d3e50f61567779772a8", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x55671114d774ee99d653d6c12460c780a67f1d18", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x565b72163f17849832a692a3c5928cc502f46d69", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x57effde2759b68d86c544e88f7977e3314144859", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x9d986a3f147212327dd658f712d5264a73a1fdb0", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x9eab0a93b0cd5d904493694f041bdcedb97b88c6", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x9fd87aefe02441b123c3c32466cd9db4c578618f", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0xd40bedb44c081d2935eeba6ef5a3c8a31a1bbe13", - "0xf09026225aa59d8ab89ec4e06aa1d6dcbe5eb1cf" - ], - [ - "0x0491648c910ad2c1afaab733faf71d30313df7fc", - "0xf19b6746769132926ee82f47137aeb7a8702c4b9" - ], - [ - "0x0a38bc18022b0ccb043f7b730b354d554c6230f1", - "0xf19b6746769132926ee82f47137aeb7a8702c4b9" - ], - [ - "0x19a6da6e382b85f827088092a3dbe864d9ccba73", - "0xf19b6746769132926ee82f47137aeb7a8702c4b9" - ], - [ - "0x603c7f932ed1fc6575303d8fb018fdcbb0f39a95", - "0xf19b6746769132926ee82f47137aeb7a8702c4b9" - ], - [ - "0xa4f93159ce0a4b533b443c74b89967c60a5969f8", - "0xf19b6746769132926ee82f47137aeb7a8702c4b9" - ], - [ - "0xba26397cdff25f0d26e815d218ef3c77609ae7f1", - "0xf19b6746769132926ee82f47137aeb7a8702c4b9" - ], - [ - "0xd9025e25bb6cf39f8c926a704039d2dd51088063", - "0xf19b6746769132926ee82f47137aeb7a8702c4b9" - ], - [ - "0xf63400ee0420ce5b1ebdee0c942d7de1c734a41f", - "0xf19b6746769132926ee82f47137aeb7a8702c4b9" - ], - [ - "0x19a6da6e382b85f827088092a3dbe864d9ccba73", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - ADDRESSES.bsc.ETH, - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0x3ee2200efb3400fabb9aacf31297cbdd1d435d47", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0x4338665cbb7b2485a8855a139b75d5e34ab0db94", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0x7083609fce4d1d8dc0c979aab8c869ea2c873402", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - ADDRESSES.bsc.BTCB, - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0x85eac5ac2f758618dfa09bdbe0cf174e7d574d5b", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0x947950bcc74888a40ffa2593c5798f11fc9124c4", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0xba2ae424d960c26247dd6c32edc70b295c744c43", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0xbf5140a22578168fd562dccf235e5d43a02ce9b1", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0xcc42724c6683b7e57334c4e856f4c9965ed682bd", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ], - [ - "0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd", - "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" - ] - ] - }, - vaults: { - fantom: [ - "0x408bd7e0cdcf28103ea978ea5e5b6307cd48f36d", - "0x4667c53a1150a94224c0ab4ccd24aeec1d8b764c", - "0xb69c3fc013c5a1c5b615d2aa90c6d6fc54701d01", - "0xed94e02b9946de6fc363823bb889522093b0694f", - "0xf41d1d1cc6edb7512ef8b9f8d0134dc7df9b71f0", - ] - } -} - diff --git a/projects/bishares/index.js b/projects/bishares/index.js deleted file mode 100644 index 589b3967f5a..00000000000 --- a/projects/bishares/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { toa, vaults } = require('./config') -const abi = require('./abi') - -async function fantom(api) { - const chain = 'fantom' - const calls = vaults.fantom - const tokens = await api.multiCall({ abi: abi.token, calls}) - const bals = await api.multiCall({ abi: abi.balance, calls}) - api.add(tokens, bals) - return sumTokens2({ api, tokensAndOwners: toa.fantom, resolveLP: true, }) -} - - -async function bsc(api) { - return sumTokens2({ api, tokensAndOwners: toa.bsc}) -} - -module.exports = { - fantom: { - tvl: fantom - }, - bsc: { - tvl: bsc - }, -}; diff --git a/projects/biswap-v3/index.js b/projects/biswap-v3/index.js deleted file mode 100644 index 15a0c7e291e..00000000000 --- a/projects/biswap-v3/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - bsc: { factory: '0x4d175f2cfe3e2215c1b55865b07787b751cedd36', fromBlock: 31041441 }, - ethereum: {factory: '0x41a9873b1F172696739B74Dd0B9CCf976fD4c735', fromBlock: 20769047}, - arbitrum: {factory: '0x41a9873b1F172696739B74Dd0B9CCf976fD4c735', fromBlock: 225593298}, - base: {factory: '0x41a9873b1F172696739B74Dd0B9CCf976fD4c735', fromBlock: 16268966}, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0xe857b53ada03b8d88fd7546e77c34d3b68996e6ce330f0edee6e813b7daea099'], - eventAbi: 'event NewPool (address indexed tokenX, address indexed tokenY, uint16 indexed fee, uint24 pointDelta, address pool)', - onlyArgs: true, - fromBlock, - }) - const ownerTokens = logs.map(log => [[log.tokenX, log.tokenY], log.pool]) - return sumTokens2({ api, ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/biswap/index.js b/projects/biswap/index.js deleted file mode 100644 index ba24ee6ac93..00000000000 --- a/projects/biswap/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const {getUniTVL} = require("../helper/unknownTokens"); -const { stakings } = require("../helper/staking"); - -const factory = "0x858e3312ed3a876947ea49d572a7c42de08af7ee"; - -const BSW = "0x965f527d9159dce6288a2219db51fc6eef120dd1" - -const stakingPools = [ - // Staking pool - "0xDbc1A13490deeF9c3C12b44FE77b503c1B061739", - - // Other pools + inactive - "0x13e9031133E901d5214fb4D593DF8ECc034c8237", - "0xD4855892a3188DA76da0066b9e4918939511E67a", - "0x9b9F3F1112E74765518cE93B1489c70F6db52bFf", - "0x683963df7331c65Df8ACE6818651a7611bdc39E5", - "0xBD09D5E5dcC904bbf8649af78d323eEfdf7b0D1D", - "0x8b10E6959F2915f532fE142b9C53B167eEC42fF4", - "0x7D621C9F70B3743CbAb15c22d781754FcD7c9589", - "0x1F337dea1679730906F46A06fd6034054BD32970", - "0x131010022654B57b0C39c918ef8313ce79Fa04B8", - "0x6653c3c4CD2083fEbFf49A52F9a5ce4c30978A25", - "0x44EeCE1e9ccbaa5Ad0b8C14192467Ab83BE0BA51", - "0xA394dD5ADC4AAF41aa1f9CFf28158A6AF2823459", - "0x6cBbA2f3BD677Da630aEd2311253713e8Ba1394D", - "0xa3A911033af250f7013597A6AF6a719906Ac4444", - "0xE42D17b1a734e04d2e0cB33234Ab074E21c175A7", - "0xAa2b37d023Ffa244022A9aa60EeB351cc79FD4e5", - "0x69C4c9cf979431DA6C4B4a2F3874E6378DFC8157", - "0xE056FB8Ce6A3437530B1AfF799185A009b25990b", - "0xf31F62A6Afb0546771a821e0F98FD187Ee7f7d4C", - "0x2792Ccd3F02a22beBa49F28F3ab0B52dF18BD280", - "0x109eAA8b5Ea469fb5aCe0647A93695D8DCD5e836", -] - -module.exports = { - bsc: { - staking: stakings(stakingPools, BSW), - tvl: getUniTVL({ factory, useDefaultCoreAssets: true,}) - }, - hallmarks:[ - [1651881600, "UST depeg"], - ] -}; \ No newline at end of file diff --git a/projects/bit-reserve/index.js b/projects/bit-reserve/index.js deleted file mode 100644 index fabc0d530ef..00000000000 --- a/projects/bit-reserve/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const rBTC_CONTRACT = '0x473286faD076c050FB48a449c77d7434d947cE00'; -const RS_CONTRACT = '0x3192bE801D2C4f1B5B4A070e7c4097Ba0f23412A'; - -async function coreTvl(api) { - const tokens = await api.fetchList({ lengthAbi: 'approvedTokens', itemAbi: 'approvedRestakedLSTs', target: rBTC_CONTRACT }) - return api.sumTokens({ owner: rBTC_CONTRACT, tokens }) -} - -async function sonicTvl(api) { - const tokens = await api.fetchList({ lengthAbi: 'approvedTokens', itemAbi: 'approvedRestakedLSTs', target: RS_CONTRACT }) - return api.sumTokens({ owner: RS_CONTRACT, tokens }) -} - -module.exports = { - methodology: 'TVL is calculated by summing all token balances. For core chain, it uses the rBTC contract balances. For Sonic chain, it uses the RS contract LST‘s balance', - start: '2024-05-17', - core: { - tvl: coreTvl - }, - sonic: { - tvl: sonicTvl - } -} diff --git a/projects/bitBTC.js b/projects/bitBTC.js deleted file mode 100644 index b8f05c16626..00000000000 --- a/projects/bitBTC.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2 } = require('./helper/unwrapLPs'); - -const WBTC = ADDRESSES.optimism.WBTC; -const bitANT = ADDRESSES.optimism.BitANT; -const bitBTC = "0xc98b98d17435aa00830c87ea02474c5007e1f272"; - -const tvlContracts = [ - { - address: '0x03bBa86E68c7DD733703cbCD44072082aF702d85', // farmV2 - token: WBTC - }, { - address: '0xEcbaFFaa5c4e94219f4C166DaC9D4A1520CAd827', // farmV3 - token: WBTC - } -]; - -const stakingContracts = [ - { - address: '0x03bBa86E68c7DD733703cbCD44072082aF702d85', // farmV2 - token: bitANT - }, { - address: '0xEcbaFFaa5c4e94219f4C166DaC9D4A1520CAd827', // farmV3 - token: bitANT - }, { - address: '0x03bBa86E68c7DD733703cbCD44072082aF702d85', // farmV2 - token: bitBTC - }, { - address: '0xEcbaFFaa5c4e94219f4C166DaC9D4A1520CAd827', // farmV3 - token: bitBTC - } -]; - -async function findBalances(contracts, api) { - const tokensAndOwners = contracts.map(i => ([i.token, i.address])); - return sumTokens2({ api, tokensAndOwners }); -} - -async function tvl(api) { - return await findBalances(tvlContracts, api); -} - -async function staking(api) { - return await findBalances(stakingContracts, api); -} - -module.exports = { - optimism: { - tvl, - staking - } -}; \ No newline at end of file diff --git a/projects/bitcoinswap/index.js b/projects/bitcoinswap/index.js deleted file mode 100644 index 63db2aff365..00000000000 --- a/projects/bitcoinswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { iziswapExport } = require('../helper/iziswap') - -const nullAddress = ADDRESSES.null -const poolHelpers = { - 'ethereum': '0x2BDE204066a8994357Fe84BFa2a92DA013bfAbdb', -} - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: [poolHelpers[chain]], }) } -}) \ No newline at end of file diff --git a/projects/bitcointry/index.js b/projects/bitcointry/index.js deleted file mode 100644 index b28662a5f88..00000000000 --- a/projects/bitcointry/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { cexExports } = require('../helper/cex') - -const config = { - bsc: { - owners: [ - '0x13CB26668e11b39290AcaE7Bb8BFF1eC0B4dcAaD', //main wallet - '0xeb4b2ecaa3e732da97d5fa922634138b9c2be6b9', //broker account on Binance - '0x57078A682ac277D444D8CeE278Dc6E2Ff0A52eA8' //broker account on gate io - ] - }, - base: { - owners: [ - '0x13CB26668e11b39290AcaE7Bb8BFF1eC0B4dcAaD', //main wallet - ] - }, - arbitrum: { - owners: [ - '0x13CB26668e11b39290AcaE7Bb8BFF1eC0B4dcAaD', //main wallet - ] - }, - ethereum: { - owners: [ - '0x13CB26668e11b39290AcaE7Bb8BFF1eC0B4dcAaD', //main wallet - '0xeb4b2ecaa3e732da97d5fa922634138b9c2be6b9' //broker account on Binance - ] - }, - avax: { - owners: [ - '0x13CB26668e11b39290AcaE7Bb8BFF1eC0B4dcAaD', //main wallet - '0xeb4b2ecaa3e732da97d5fa922634138b9c2be6b9' //broker account on Binance - ] - }, - polygon: { - owners: [ - '0x13CB26668e11b39290AcaE7Bb8BFF1eC0B4dcAaD', //main wallet - '0xeb4b2ecaa3e732da97d5fa922634138b9c2be6b9' //broker account on Binance - ] - }, - optimism: { - owners: [ - '0x13CB26668e11b39290AcaE7Bb8BFF1eC0B4dcAaD', //main wallet - '0xeb4b2ecaa3e732da97d5fa922634138b9c2be6b9' //broker account on Binance - ] - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/bitcow/index.js b/projects/bitcow/index.js deleted file mode 100644 index 7270e2e1827..00000000000 --- a/projects/bitcow/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - btr: { pairInfo: '0xb6d73e9a9cf70ddf396afcd677fdafe7073aa026' }, -} - -Object.keys(config).forEach(chain => { - const { pairInfo } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let pairs = [] - let hasMore = true - let length = 999 - let offset = 0 - do { - const { pagePairs, } = await api.call({ abi: 'function fetchPairsAddressListPaginate(uint256 start, uint256 end) view returns (address[] pagePairs, uint256 pairCount)', target: pairInfo, params: [offset, length] }) - pairs = pairs.concat(pagePairs) - offset += length - hasMore = pagePairs.length === length - } while (hasMore) - const tokenXs = await api.multiCall({ abi: 'address:xToken', calls: pairs }) - const tokenYs = await api.multiCall({ abi: 'address:yToken', calls: pairs }) - const tokensAndOwners2 = [tokenXs.concat(tokenYs), pairs.concat(pairs)] - return sumTokens2({ tokensAndOwners2, api }) - } - } -}) \ No newline at end of file diff --git a/projects/bitdrome/index.js b/projects/bitdrome/index.js deleted file mode 100644 index a8e4e946a5b..00000000000 --- a/projects/bitdrome/index.js +++ /dev/null @@ -1,13 +0,0 @@ -async function tvl(api) { - const TwoPoolFactory = '0x634FB7F07BDb77281c64a57F69E1EB19583E727a' - const pools = await api.fetchList({ lengthAbi: 'pool_count', itemAbi: 'pool_list', target: TwoPoolFactory }) - const tokens = await api.multiCall({ target: TwoPoolFactory, calls: pools, abi: 'function get_coins(address _pool) view returns (address[2])' }) - const ownerTokens = tokens.map((v, i) => [v, pools[i]]) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - bevm: { - tvl - } -} \ No newline at end of file diff --git a/projects/bitfi-cedefi/index.js b/projects/bitfi-cedefi/index.js deleted file mode 100644 index b705880dc81..00000000000 --- a/projects/bitfi-cedefi/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const mapping = { - btr: { - bfBTC: '0xCdFb58c8C859Cb3F62ebe9Cf2767F9e036C7fb15', - }, - bsc: { - bfBTC: '0x623F2774d9f27B59bc6b954544487532CE79d9DF', - }, - hemi: { - bfBTC: '0x623F2774d9f27B59bc6b954544487532CE79d9DF', - }, - ethereum: { - bfBTC: '0xCdFb58c8C859Cb3F62ebe9Cf2767F9e036C7fb15', - }, - base: { - bfBTC: '0x623F2774d9f27B59bc6b954544487532CE79d9DF', - }, - core: { - bfBTC: '0xCdFb58c8C859Cb3F62ebe9Cf2767F9e036C7fb15', - } -} -const exportObject = {} -Object.keys(mapping).forEach(chain => { - exportObject[chain] = { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: mapping[chain].bfBTC }) - api.add(mapping[chain].bfBTC, supply) - } - } -}) -module.exports = exportObject - -/* backing wallets are -Ceffu(BTC): -1BmKSPG4AcCNkxC29tQVXF6vfK9hvxUtRL -1BNpsNMq96ypaPmH8zuYLAxHPxYQQdXEvU -1BNmwHhD4SAogR1fxpZnNCEWrVqA1Djdjb -1BR8fqjuapewZy6HjBHTHZthTot3pMT55y -1BK4YdJCSmJNa6ptNwGb6M67ioivFuQQTe - -Ceffu(BTCB): -0x062900dcd4729af3bdbf3150b98eb9bcfdb822ac - -Binance(BTC): -1J8hRVttPiZya2GnfZbBaQj2zxonbTn2cH -1Mx5gBkvGqy8LPYcJfJ7yjhA5oVzLrNGFg -15EBS4TJs7BfjDn9EeMzBhaDv4bddfWuNT -1PqY7uSCCAMYfTvnJX6TpeZZxKWQjMjjgZ -OKX(BTC): -bc1qksyye79f03pr4uezx5ddtr5ap65ug3j3vfmds5arkfwtr4fjtt5qnnxnyk -3LEt6F46QjBCrMMMp8getCrpjBmN6brXoG -BYBIT(BTC): -1DGZtD885npNLuCvNFRwa5uh4m1TR5WpYz -*/ \ No newline at end of file diff --git a/projects/bitfi/index.js b/projects/bitfi/index.js deleted file mode 100644 index 0bcd9b108d7..00000000000 --- a/projects/bitfi/index.js +++ /dev/null @@ -1,9 +0,0 @@ -async function tvl(api) { - const BFBTC = '0xC2236204768456B21eAfEf0d232Ba1FccCe59823' - const supply = await api.call({ abi: 'erc20:totalSupply', target: BFBTC }) - api.add(BFBTC, supply) -} -module.exports = { - doublecounted: true, - ailayer: { tvl }, -} diff --git a/projects/bitfinex/index.js b/projects/bitfinex/index.js deleted file mode 100644 index bae642bfe2d..00000000000 --- a/projects/bitfinex/index.js +++ /dev/null @@ -1,137 +0,0 @@ -const { cexExports } = require('../helper/cex') -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.bitfinex, - }, - ethereum: { - owners: [ - '0x77134cbc06cb00b66f4c7e623d5fdbf6777635ec', // ETH/ERC20 hot wallet - '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // ETH/ERC20 cold wallet - '0xC61b9BB3A7a0767E3179713f3A5c7a9aeDCE193C', // ETH/ERC20 cold wallet - '0x876EabF441B2EE5B5b0554Fd502a8E0600950cFa', // ETH/ERC20 (old) hot wallet - ] - }, - polygon: { - owners: [ - '0x77134cbc06cb00b66f4c7e623d5fdbf6777635ec', //Polygon hot wallet - '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', //Polygon cold wallet - // '0x876EabF441B2EE5B5b0554Fd502a8E0600950cFa', //Polygon (old) hot wallet - ] - }, - avax: { - owners: [ - '0x77134cbc06cb00b66f4c7e623d5fdbf6777635ec', // Avalanche (C-Chain) hot wallet - '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // Avalanche (C-Chain) cold wallet - // '0x876EabF441B2EE5B5b0554Fd502a8E0600950cFa', // Avalanche (old) hot wallet - ] - }, - cardano: { - owners: [ - 'DdzFFzCqrhstFM5XQYA28G2ekCkvpb6bPdhUT5vcsZtqYT3i7wAtjNPCTEGNbUmgL4ym9udeV5k6Utc3vCmAbky6Bvda72r1SQknZH9L', //Cardano ADA hot wallet - 'addr1qxrlkh6yh0km5m5n7923syel0yqqvc3pjrnqrzrz3gwpxd70prfqwehanuxzkwmv55ff9gr7tjx5vymykd2galr9chaqlwjwm9',//Cardano ADA cold wallet - ] - }, - algorand: { - owners: [ - 'JDQ7EW3VY2ZHK4DKUHMNP35XLFPRJBND6M7SZ7W5RCFDNYAA47OC5IS62I', - 'UGYKOYFAEB6373DVH6ME6BFVHNG6BMWTYU6VZBMFFI2YQ72QACBSZLNYZ4', - 'NWPUVAIOBZHBVLCCYGERFGQ3ZRQPSJ7R6UB3NXFBF552BGYAGX4I5TCVCY' - ] - }, - aptos: { - owners: ['0xfd9192f8ad8dc60c483a884f0fbc8940f5b8618f3cf2bbf91693982b373dfdea'] - }, - cosmos: { - owners: [ - 'cosmos1h9ymfm2fxrqgd257dlw5nku3jgqjgpl59sm5ns', //Cosmos hot wallet - // 'cosmos1jtdkj8hxhj88jxv8lul9xvdpnwsl00evvvpnhj', //Cosmos cold wallet - ] - }, - elrond: { - owners: ['erd1a56dkgcpwwx6grmcvw9w5vpf9zeq53w3w7n6dmxcpxjry3l7uh2s3h9dtr'] - }, - eos: { - owners: [ - 'bitfinexdep1', - 'bitfinexcw21' , - 'bitfinexcw23' , - 'bitfinexcw24' , - 'bitfinexcw25' , - 'bitfinexcw31' , - 'bitfinexcw22' , - 'bitfinexcw33' , - 'bitfinexcw55' , - ] - }, - ethereumclassic: { - owners: [ - '0x618F37D7ff7B140E604172466CD42D1Ec35E0544', - '0x88037f361891A0B5De3C0C30632fBcA7DB2D341F', - ] - }, - fantom: { - owners: ['0xed9eef56e64a8e779cfae9ddedb25d11ba2b2425'] - }, - litecoin: { - owners: [ - 'LXTQdps2Pf83WdAXMinboiqLsEjSWrwJCD', - 'LNSFU7hmF6GP2AFdcrCgd4QvFimvspviSs' - ] - }, - near: { - owners: [ - '383e50ea1a754ed3acd0d59116f221add87adb82559f31ca6d377f058fe83375', - '965c8b57b7f36fe9a40ce6188d444ca78708e4d83843b108f7f53d0fe5332076', - ] - }, - polkadot: { - owners: [ - '12T1tgaYZzEkFpnPvyqttmPRJxbGbR4uDx49cvZR5SRF8QDu', - // '1UJSCYLh44UYhkm1WwXAwT2W8nirTD74VzPsdhfsstY8S3u', - '13AE11jLvxcxsjqaSoWFXCTGUfbjXb1gmZTY8x3TXJzWutmf' - ] - }, - solana: { - owners: [ - 'FxteHmLwG9nk1eL4pjNve3Eub2goGkkz6g6TbvdmW46a', //Solana hot wallet - 'FyJBKcfcEBzGN74uNxZ95GxnCxeuJJujQCELpPv14ZfN', //Solana cold wallet - 'GnCRxKqUEPouYMvTb5nJMGrDB3VkTXZnDTaDuVZdnWA3', - 'J4rzLDLhLWFpjSgCMCcxTU84bQ8AH5vhgjwq7SjYVk8Q' - ] - }, - tezos: { - owners:[ - 'tz1KtGwriE7VuLwT3LwuvU9Nv4wAxP7XZ57d', //Tezos (XTZ) hot wallet - 'tz1fK1ZmVMtshYoCoQ1zC1SCCUG4SnbyR75p', //Tezos (XTZ) cold wallet - 'tz1N47UGiVScUUvHemXd2kGwJi44h7qZMUzp', //Tether USDt (Tezos) hot wallet - ] - }, - tron: { - owners: [ - 'TXFBqBbqJommqZf7BV8NNYzePh97UmJodJ', //Tron TRX/TRC10/TRC20 hot wallet - 'TMhJviFWiaxvqKLdng9dmsi1H5H5yTGEeu', // Tron TRX/TRC10/TRC20 cold wallet - ] - }, - zilliqa: { - owners: [ - // 'zil1xfsrre5qgx0mqg99xc0l2cuyu9ntt259ngsu7s', //Zilliqa hot wallet - // 'zil184u2al6n0nrks06xjgq080hc95f77ttd7rkqvn', // Zilliqa cold wallet - ] - }, - doge: { - owners: ['DQQckuSMsiFjaAdGiNjvDyswcz9RWQU2xe'] - } -} - -const withdrawalAddresses = [ - '0xe733455faddf4999176e99a0ec084e978f5552ed', - '0x77134cbc06cb00b66f4c7e623d5fdbf6777635ec', -] - -module.exports = mergeExports([ - cexExports(config), - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddresses: withdrawalAddresses, size: 200, sleepTime: 20_000, proxy: true }) } }, -]) diff --git a/projects/bitfire/index.js b/projects/bitfire/index.js deleted file mode 100644 index d8766252a07..00000000000 --- a/projects/bitfire/index.js +++ /dev/null @@ -1,13 +0,0 @@ - -const { aaveExports } = require('../helper/aave') -const methodologies = require('../helper/methodologies') -//update protocol information - -module.exports = { - methodology: methodologies.lendingMarket, - mezo: aaveExports('mezo', '0xD489a9cc2eF0b990c6a30Ed9AfF6EC63A2765F25', undefined, ['0xBB7cF099BAfc69a30D4f21878F2FE3Ac10e768fA'], { - v3: true, abis: { - getAllATokens: "function getAllBTokens() view returns (tuple(string symbol, address tokenAddress)[])", - } - }), -} \ No newline at end of file diff --git a/projects/bitflow/index.js b/projects/bitflow/index.js deleted file mode 100644 index 9fde24c6af8..00000000000 --- a/projects/bitflow/index.js +++ /dev/null @@ -1,76 +0,0 @@ -const { sumTokens } = require("../helper/sumTokens"); - -const PAIRS = [ - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-core-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-core-v-1-2", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-core-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stableswap-stx-ststx-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stx-ststx-lp-token-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stableswap-usda-susdt-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.usda-susdt-lp-token-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stableswap-usda-aeusdc-v-1-4", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.usda-aeusdc-lp-token-v-1-4", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-stx-aeusdc-v-1-1", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stableswap-abtc-xbtc-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.abtc-xbtc-lp-token-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stableswap-aeusdc-susdt-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.aeusdc-susdt-lp-token-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stableswap-stx-ststx-v-1-1", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stx-ststx-lp-token-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-aeusdc-usdh-v-1-2", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-sbtc-pbtc-v-1-1", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stableswap-usda-aeusdc-v-1-2", - "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.usda-aeusdc-lp-token-v-1-2", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-psbtc-stx-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pbtc-dog-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pbtc-pooka-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pbtc-pusdh-v-1-1", - "SP1FQ3DQDR5N9HJX3XC5DNKFCG4DHH48EFJQV6QH0.xyk-pool-stx-test-v-1-1", - "SP2RCZCP6X71BA1N4K8VKNYEBN13PEQ6CK43QHTR7.xyk-pool-token-2", - "SP2QGQ3R0RH96SEGEV6YBK8QDPF7CQ0ATC2E7FH67.xyk-pool-token-2", - "SP2QGQ3R0RH96SEGEV6YBK8QDPF7CQ0ATC2E7FH67.xyk-pool-stx-welsh2-v-1-1", - "SP2QGQ3R0RH96SEGEV6YBK8QDPF7CQ0ATC2E7FH67.xyk-pool-stx-MOON-v-1-1", - "SP2QGQ3R0RH96SEGEV6YBK8QDPF7CQ0ATC2E7FH67.xyk-pool-stx-pepe-v-1-1", - "SP2QGQ3R0RH96SEGEV6YBK8QDPF7CQ0ATC2E7FH67.xyk-pool-stx-leomoon-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-psbtc-bdc-v-1-1", - "SP2VG7S0R4Z8PYNYCAQ04HCBX1MH75VT11VXCWQ6G.xyk-pool-stx-bob-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-sbtc-stx-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-sbtc-dog-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-sbtc-bdc-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-stx-beard-v-1-1", - "SP2XCME6ED8RERGR9R7YDZW7CA6G3F113Y8JMVA46.xyk-pool-stx-burndao-v-1-1", - "SP2XCME6ED8RERGR9R7YDZW7CA6G3F113Y8JMVA46.xyk-pool-stx-aiearn-v-1-1", - "SP2XCME6ED8RERGR9R7YDZW7CA6G3F113Y8JMVA46.xyk-pool-stx-deomedia-v-1-1", - "SP2XCME6ED8RERGR9R7YDZW7CA6G3F113Y8JMVA46.xyk-pool-stx-agentx-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-psbtc-liq-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-stx-aeusdc-v-1-2", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pbtc-stx-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pbtc-bdc-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pbtc-liq-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pusdh-roons-v-1-1", - "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pbtc-satoshi-v-1-1" -] - -const BATCH_SIZE = 5; -const DELAY = 2000; - -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -async function tvl(api) { - const balances = {}; - - for (let i = 0; i < PAIRS.length; i += BATCH_SIZE) { - const batch = PAIRS.slice(i, i + BATCH_SIZE); - await sumTokens({ chain: 'stacks', owners: batch, api, balances }) - await sleep(DELAY); - } - - return balances; -} - -module.exports = { - methodology: "Total Liquidity Added to DEX Trading Pools", - stacks: { tvl }, -}; diff --git a/projects/bitflux/index.js b/projects/bitflux/index.js deleted file mode 100644 index 95273adb2bc..00000000000 --- a/projects/bitflux/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const swapFlashLoan = { - 'BP1': "0x4bcb9Ea3dACb8FfE623317E0B102393A3976053C", - 'BP2': "0x6a63cbf00D15137756189c29496B14998b259254", - 'BP3': "0xE7E1b1F216d81a4b2c018657f26Eda8FE2F91e26", - 'BP4': "0xeC938Bc5b201E96b6AFE97070a8Ea967E0dcAe96" -}; - -const ADDRESSES = { - 'WBTC': "0x5832f53d147b3d6Cd4578B9CBD62425C7ea9d0Bd", - "solvBTCb": "0x5b1fb849f1f76217246b8aaac053b5c7b15b7dc3", - "solvBTCcore": "0x9410e8052bc661041e5cb27fdf7d9e9e842af2aa", - "nBTC": "0x8BB97A618211695f5a6a889faC3546D1a573ea77", - "BTCB": "0x7A6888c85eDBA8E38F6C7E0485212da602761C08", - "pumpBTC": "0x5a2aa871954eBdf89b1547e75d032598356caad5", - "solvBTCm": "0xe04d21d999faedf1e72ade6629e20a11a1ed14fa", - "suBTC": "0xe85411c030fb32a9d8b14bbbc6cb19417391f711", - "uBTC": "0xbb4a26a053b217bb28766a4ed4b062c3b4de58ce", - "oBTC": "0x000734cf9e469bad78c8ec1b0deed83d0a03c1f8" -} - -const owners = Object.values(swapFlashLoan) - -const tokens = Object.values(ADDRESSES) - -module.exports = { - core: { - tvl: sumTokensExport({ tokens, owners }), - }, - methodology: "Counts all BTC-pegged tokens in the Bitflux liquidity pools including nBTC, pumpBTC, suBTC, WBTC, solvBTC variants, and others." -} \ No newline at end of file diff --git a/projects/bitgenie-dex/index.js b/projects/bitgenie-dex/index.js deleted file mode 100644 index ea48ad369eb..00000000000 --- a/projects/bitgenie-dex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('merlin', '0xEa51E2E458aE7Cb921d47fC463Ac4fED7ae65a41') \ No newline at end of file diff --git a/projects/bitgenie/index.js b/projects/bitgenie/index.js deleted file mode 100644 index 94c85ffa801..00000000000 --- a/projects/bitgenie/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const stakingContracts = [ - "0xd47477da78F6252b1029f3041aC4FC749439CD3F", - "0xe3F7194AB9cDa2E91bBf0AC7F450Ac7a60B40901", - "0x53Bd1b82363d93dc9344FfBB764d2713cd5628cC", - "0x2e1f9186912142341B2fc40b32b99Ea9fE1b730B", - "0x237826695a575D9Fd2FA7C184E5f37593aBc1529", - "0x63C8860e93697dB85716C9ee7F15D09EAC62136C", - "0x19a0D0b1734bdB167D393e7BB7a57418e3a8cCA8", - "0x1DBa95577DFe76d8e86af00aEB614479cb7917D2", - "0xC795A8D5f83F5A172f606AC2516276Ee7DF63407", - "0x1d5EB4Cba6D15d91AEd92988d9F1E12e33CCF4D1", - "0x0b0659bC906cB62179FDD2B6008BA729baa79126", - "0xF57A28168401f9c386c7723C2BA4e579A2F3818a", - "0x82cf7644BD07002217EFB2563D361a0b0c245978", - "0x8Ab52b92C31bd16e9e091c42FaCA01358717b8A4", - "0x0Bf2C32E2045b50AD772E8F758484aF3BbA75738", - "0xeC986eE93884ca3e20AA8a11C72f5c57085893F3", - "0xFf090ED319D3B89DD3ee2CB94F590272A6866cD9", -]; - - -module.exports = { - merlin: { - tvl, - }, -} - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:stakeToken', calls: stakingContracts }) - return api.sumTokens({ tokensAndOwners2: [tokens, stakingContracts] }) -} diff --git a/projects/bitgert-swap/index.js b/projects/bitgert-swap/index.js deleted file mode 100644 index 4a5a6de03ac..00000000000 --- a/projects/bitgert-swap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bitgert: { - tvl: getUniTVL({ - factory: '0x456405E3d355ad27010Fd87e3c7cC8a2DcA372fD', - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/bitgert/index.js b/projects/bitgert/index.js deleted file mode 100644 index c91da9ff217..00000000000 --- a/projects/bitgert/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require('../helper/staking') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking('0xd578bf8cc81a89619681c5969d99ea18a609c0c3', '0x8FFf93E810a2eDaaFc326eDEE51071DA9d398E83'), - }, - bitgert: { - staking: async (api) => sumTokens2({ - api, - owner: '0x8Ed91b2f3d9f6a5Ee426B4705F981090a7403795', - tokens: [nullAddress], - }) - } -}; diff --git a/projects/bitget-btc/index.js b/projects/bitget-btc/index.js deleted file mode 100644 index bcc6483086f..00000000000 --- a/projects/bitget-btc/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') -const { sumTokensExport } = require("../helper/sumTokens"); - -module.exports = { - methodology: "bgBTC, BitGet Wrapped Bitcoin", - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.bitgetBtc }) } -}; \ No newline at end of file diff --git a/projects/bitget/index.js b/projects/bitget/index.js deleted file mode 100644 index 1b110c8823b..00000000000 --- a/projects/bitget/index.js +++ /dev/null @@ -1,276 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - bsc: { - owners: [ - "0x0639556F03714A74a5fEEaF5736a4A64fF70D206", - "0x149ded7438caf5e5bfdc507a6c25436214d445e1", - "0x3a7d1a8c3a8dc9d48a68e628432198a2ead4917c", - "0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689", - "0xa316c725bc8401c97d6d96f283c14b827541744e", - "0xc43999113f8fe724d91356c26105def1449ebdfd", - "0x8911b8f5127eec40c14e1ad0500dc4dbd279d7a7", - "0x1ff33329a8f8c1927131cbb72362b00abeea02d3", - "0x5bdf85216ec1e38d6458c870992a69e38e03f7ef", - "0x80097a87a7dcde470e34c10b5cceb85abf83b531", - "0xe4786cfe980ef5a6428a2fffafabf24f1fc79b64", - "0x4c1d7de286d7c20df5f2ba44b3bc706c1e03bf13", - "0xac65bdf867103ae2c3a75cdd4b68f9d7178c604f", - "0x14b5f559c27bc00c39f668a88471498d68d18768", - "0xe7b3b0a59b026ec1fef16561daf93672a61bafec", - "0x1ab4973a48dc892cd9971ece8e01dcc7688f8f23", - "0x1084203d70950bd7a93aef75eb32a51df2422a07", - "0xbcf6011192399df75a96b0a4ce47c4820853e9e5", - "0x864a7fa57e0f8902a2de4892e925f1272edbe3fa", - ], - }, - ethereum: { - owners: [ - "0x0639556F03714A74a5fEEaF5736a4A64fF70D206", - "0x1Ae3739E17d8500F2b2D80086ed092596A116E0b", - "0x2bf7494111a59bD51f731DCd4873D7d71F8feEEC", - "0x31a36512d4903635b7dd6828a934c3915a5809be", - "0x461f6dCdd5Be42D41FE71611154279d87c06B406", - "0x5bdf85216ec1e38d6458c870992a69e38e03f7ef", - "0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689", - "0x9E00816F61a709fa124D36664Cd7b6f14c13eE05", - "0xdFE4B89cf009BFfa33D9BCA1f19694FC2d4d943d", - "0xe2b406ec9227143a8830229eeb3eb6e24b5c60be", - "0xe6a421f24d330967a3af2f4cdb5c34067e7e4d75", - "0xe80623a9d41f2f05780d9cd9cea0f797fd53062a", - "0xf646d9B7d20BABE204a89235774248BA18086dae", - "0x1d5ba5414f2983212e03bf7725add9eb4cdb00dc", //add on 12/01/2024 - "0x51971c86b04516062c1e708cdc048cb04fbe959f", //add on 12/01/2024 - "0x5051e9860c1889eb1bfa394365364b3dd61787f1", //add on 12/01/2024 - "0x731309e453972598ea05d706c6ee6c3c21ab4d2a", //add on 12/01/2024 - "0x842ea89f73add9e4fe963ae7929fdc1e80acdb52", //add on 12/01/2024 - "0x1a96e5da1315efcf9b75100f5757d5e8b76abb0c", //add on 12/01/2024 - "0x4dfc15890972ecea7a213bda2b478dabc382e7a1", //add on 12/01/2024 - "0x70213959a644baa94840bbfb4129550bceceb3c2", // add on 27/05/2024 - "0x54a679e853281a440911f72eae0e24107e9413dc", // add on 27/05/2024 - "0x1ab4973a48dc892cd9971ece8e01dcc7688f8f23", // add on 27/05/2024 - "0x0edd5b0de0fe748be331186bf0aa878f47f601db", // add on 27/05/2024 - "0x4121217c238db06e942f3d87371106d30d0f8c84", // add on 27/05/2024 - "0xed470553f61f23cd30ccf51ab066dc1598ed0c4f", // add on 27/05/2024 - "0x59708733fbbf64378d9293ec56b977c011a08fd2", // add on 27/05/2024 - "0xaab0039de2a8dba8696ee4d42c0d1aa30d7e1059", // add on 27/05/2024 - "0xf207b2f9f9417fc73cad069f7aa5ae1c6a5b428d", // add on 27/05/2024 - "0x4d216d2682f3997f6c19420beee4530d08d0ea5f", // add on 27/05/2024 - "0xdbe46a02322e636b92296954637e1d7db9d5ed26", // add on 27/05/2024 - "0xbff5092f83bd810e0926068b89633bf66eaa037b", - "0x80097a87a7dcde470e34c10b5cceb85abf83b531", - "0xe4786cfe980ef5a6428a2fffafabf24f1fc79b64", - "0x4c1d7de286d7c20df5f2ba44b3bc706c1e03bf13", - "0xac65bdf867103ae2c3a75cdd4b68f9d7178c604f", - "0x14b5f559c27bc00c39f668a88471498d68d18768", - "0xe7b3b0a59b026ec1fef16561daf93672a61bafec", - "0x3c2a309d9005433c1bc2c92ef1be06489e5bf258", - "0xe368759445438b8ec4e50bf4094e939341174e62", - "0x2dd64ee5ea8706097a5674154288989e3dbe3a05", - "0xa700c091687afbfada6b84b5e02a5e672ee35597", - "0xd509ff5d6e530401b53cc7d3b80607824d85ff60", - "0x255e91ab794da40d39a5aceff20d98841df873af", - "0x9756b4eedc434ca23dffd209c8ea01d4c95ff881", - "0x9a449ef3665f60af503ea5b8ef5191aeb315b809", - "0x58751ce78f174b58b8f5e345244984a78524a899", - "0x9f199b93ae33c330880bdb31422fca37c6d3fb14", - "0x9c9c8f4f33679ce7f2c46cbf8ab4feb4cf45fe46", - "0x8028270e06fca18e212306a7c93bfee52b440fc5", - "0x0635ac6675e05c7f58383493bb7d1a513cd65688", - "0x1D774ed0A7b897aAaE3526F07e487C5F9540F55D" - ], - blacklistedTokens: [ - "0x19de6b897ed14a376dda0fe53a5420d2ac828a28", // old bitget token - ] - }, - tron: { - owners: [ - "TAa8e7U7seCy7NcZ52xYVQXXybFfwvsUxz", - "TBXEdr2pD1tszUNAkVX18K7nie1MptkZ1y", - "TBytnmJqL47n8bAP2NgPWfboXCwEUfEayv", - "TFrRVZFoHty7scd2a1q6BDxPU5fyqiB4iR", - "TGJagVsVg9QSePG5GreotgdefgaXPRo8SH", - "TGZ959FTLRk8droUqDNgLxML1X9mEVej8q", - "TYiQTHtgLo6KX6hYgbKLJsTbWK5hu9X5MG", - "TZHW3PJe6VoyV8NWAaeukqWNRe3bVU7u8n", - "TBM2FK4KBEEsMVYjm4WAW2Q8Es2NKdmUB8", //add on 12/01/2024 - "TCvfZC9h6fFXnF7KbHPgY4jgfen93VkfVW", //add on 12/01/2024 - "TGp7SNzjrctsWNwaFFN2PNTh3b1Kgxdtib", //add on 12/01/2024 - "TBpo1Sh7vKCLrfxocZHd8CA5wc2R75kSJM", // add on 27/05/2024 - "TMauqkA78pfysSTn8jD1dvEUkjme2gEEdn", // add on 27/05/2024 - "TKPqvBMU2v23RyjjViKvp16kiHPx7FnrHQ", // add on 27/05/2024 - "TVSdtELybCCa9DPDH15CMAPjeRcENAmDJZ", // add on 27/05/2024 - "TYPUgo9ZtYk34XgBHbCHJCaoYZ5RejhhVD", - "TKurFA1LqaLU6cYa7QKbYqFceT3Xf22pNT", - "TN9DMsWq8CwE9GZV4akjxUzwG93PPceuiV", - "TYAdiDkvjsSPMQt8AvA8jWJrXKcjyKb5rs", - "TTky11V7Q3ng6hkYjLs3R3YkeDB8suQ7dC", - "TJ8kFqncqv3GP15DTcbzufX5HFgFMCK3kC", - "TEk5sAuuk6URqvT5tL7hrUB65NGEgq895X", - "TJ7hhYhVhaxNx6BPyq7yFpqZrQULL3JSdb", - "TWpNmnuq6EFMRnxWQTGGf47gjkkbtYJdbm", - "TKfMrRSwhuLoTHcziSeNEAdSjaTe2677md", - "TQQ29P8gw2Tp8XeYKC8vasQmJ7rvHGFhiG", - "TUktrKwLLGGjks6DoN1zGta8muskbd9tnk", - "TFfNrnZzHVMQ7DsHLvcTyvZheqabG4KW4W", - "TKCFasXqJw3ezQiF1qYWYd78Edfb2NvpBV", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.bitget, - }, - arbitrum: { - owners: [ - "0x0639556F03714A74a5fEEaF5736a4A64fF70D206", - "0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689", - "0x5bdf85216ec1e38d6458c870992a69e38e03f7ef", //add on 12/01/2024 - "0x14b5f559c27bc00c39f668a88471498d68d18768", - "0x81fb786799ebacc67abc0abaf5589aa0d7773fa0", - "0xf2c1a45ec2013c686c9568a4f250158c425e4373", - "0xe7b3b0a59b026ec1fef16561daf93672a61bafec", - "0x0c4681e6c0235179ec3d4f4fc4df3d14fdd96017", - "0x1ab4973a48dc892cd9971ece8e01dcc7688f8f23", - ], - }, - optimism: { - owners: [ - "0x0639556F03714A74a5fEEaF5736a4A64fF70D206", - "0x5bdf85216ec1e38d6458c870992a69e38e03f7ef", - "0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689", - "0x14b5f559c27bc00c39f668a88471498d68d18768", - "0xe7b3b0a59b026ec1fef16561daf93672a61bafec", - "0x1ab4973a48dc892cd9971ece8e01dcc7688f8f23", - ], - }, - era: { - owners: ["0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689"], - }, - fantom: { - owners: ["0x5bdf85216ec1e38d6458c870992a69e38e03f7ef"], - }, - cronos: { - owners: ["0x0639556F03714A74a5fEEaF5736a4A64fF70D206"], - }, - avax: { - owners: [ - "0x0639556F03714A74a5fEEaF5736a4A64fF70D206", - "0x5bdf85216ec1e38d6458c870992a69e38e03f7ef", - "0xe7b3b0a59b026ec1fef16561daf93672a61bafec", - "0x1ab4973a48dc892cd9971ece8e01dcc7688f8f23", - ], - }, - polygon: { - owners: [ - "0x0639556F03714A74a5fEEaF5736a4A64fF70D206", - "0x5bdf85216ec1e38d6458c870992a69e38e03f7ef", - "0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689", - "0x14b5f559c27bc00c39f668a88471498d68d18768", - "0xe7b3b0a59b026ec1fef16561daf93672a61bafec", - "0x1ab4973a48dc892cd9971ece8e01dcc7688f8f23", - "0x9b0cb31f3e9232196aeaa7cac03ea95c5a4f0e35", - ], - }, - ripple: { - owners: [ - "r3AEihLNr81VYUf5PdfH5wLPqtJJyJs6yY", - "rGDreBvnHrX1get7na3J4oowN19ny4GzFn", - ], - }, - solana: { - owners: [ - "A77HErqtfN1hLLpvZ9pCtu66FEtM8BveoaKbbMoZ4RiR", - "3bLkLrRvkwHMrqyoCaDSCn6bZnpfJCVsHxcmznUwB1p5", - "42zAGwv37eZFwwcExfCAV9oSw2kNQX3aBxsbM6zvQECM", - "YiZeibU6zzEHyKiSTjygXUPkMktKj9a3DCAcWmZ4XjF", - "AvLGED7RBzYv4AuvkgFSCFMqyB2WjUff7TVKVEv5MjMs", - "48Zo7g9SReCWmNtCvr2es4H9CLCRQHrSND2Wzi61sCsQ", - "57WSBnNTC2MaqpY6NWLdNjhrELced4jSGV2hLSpjzct9", - "DP1FqoBnE23QNNz4LpT9FCQvETdJN4nph5c11NiinrGg", - "AyhsmFptkM251V1AoH2gf8d4QUnxUkkmaDqFfFwBwGni", - "4S8C1yrRZmJYPzCqzEVjZYf6qCYWFoF7hWLRzssTCotX" - ], - }, - metis: { - owners: ["0x5bdf85216ec1e38d6458c870992a69e38e03f7ef"], - }, - kava: { - owners: ["0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689"], - }, - starknet: { - owners: [ - "0x0299b9008e2d3fa88de6d06781fc9f32f601b2626cb0efa8e8c19f2b17837ed1", - ], - }, - ton: { - owners: [ //only wallets with more than 50k - "UQDJlZqZfh1OQ4PY2ze4bSEBznjc8fGzkE2YiP5XLvDv1JNr", - // "EQCnRoi95R9jLVrPONxTWEMMCuIlHBsYZjYZW5JwtoecbRl6", - // "EQC5Jj1PfKD8PmwxdBDi47mtbLahHV0Qkrs39lVl2A4nPlPC", - // "EQAkKBTk1NuRH9wuy5qJFesfCoZMvZXa2NV9mCet3t3ndwkH", - // "EQDN9_DXwJA28GQnLjxCntVwvknvKes6c1tku8F5FQc3MkZo", - // "EQAGQcXOz5QWPXW_faObcN7HfSx8ihstAzoQTV9ckqmrDfcQ", - // "EQCUlDMK5NDVOmpbLAzGVkXfCXpmEJgKWHL4J7oHmuNkPxaH", - // "EQAWLm0Xut7koqsFxI2j3YBvjI1M_tVHXFrgTysXvF4NQWu5", - // "EQAGR25YDiUNCr7Fw2WnEYM0g8WB1XuQi-N9Vr2w4zjDEhg5", - // "EQDpwKJP-qaqTyKIkOca6VUL_FOmxX5kO8McJA4YcnrBzlwi", - // "EQAzZQL6-D71tTLTFbpxRQtmHJDoP85k2Lwf0r9kLzVV2VRy", - // "EQCzCMf5tPWW9iUBdYhZclSYcbBccO02Gf1ak5QB7qly5Gsl", - // "EQDi0d8gazctsfO4kOYNGFtnqgyfG2tv9goFCRyMAbQKxMA3", - // "EQB6DclNqfSLlo37h7441Pq3KGKI23oE0wgf7uF3N22QicZ7", - // "EQCHhe9euw_STGkR0Q9DwAlh6XSPpUKXoaxRfjxf52uwvmGB", - // "EQAhO2gEwgghNaSoA9qOOzDP7VGu6a8q0hADNLf0cR07zMQr", - // "EQBXPf6ZSQoEFwPpd-RyQTXFuL6gvqZ4OWEiR0UcqdXEywxy", - // "EQDeJRmlJ95-HUwQKL23TgIrKKbjcOT-w_wn2NlxMI-Zu6i2", - // "EQAPGaGPsc-vwzQB04IyW63UkbS08btCmfD51vvHm3FQFYbg", - // "EQA182-9Kw_8YCugScsCS03ln3WVvp5gZpLU7lbS3xst3GiN", - // "EQDqltnjUhoZxMd022XDb8egHj2IQOlegwXD0rfJL1d8eyOZ", - // "EQDY6SAYmiZ2dc3qWZkqSB1JxPgyluCBNJe5DCeUBXKVvpC8", - // "EQB5AOHMT1UHXa4WBh_LL3HWqPeYMSoCNfDarrUOSSiI-2LE", - // "EQBi8zmTQRJNfGhdpG2RoHqhSWhN05fH5f6YaCCom4dsAnrT", - // "EQBcPW3DG9p9UG-FiOVbq6BiXAxTWRYSgwkeSHK9vAHJauTe", - // "EQAMReXSXKXMgNJsiQbeUYqG_BoETp6V11p2AQ0hBalCPUvU", - // "EQD7T5jBR_4NTYpyQTsbE6UTcSgM31GM-tUQsxzwWAW8XyuS", - // "EQB8Nfcr7iJARqpnwHI_dowkRu9k43b8AMj-p4RJTXosLWWv", - "EQDAflHltpSTd1j0X0ADBxyE9MSmi9sWiiLD1si4nNYYb7Kq", - // "EQBAdstQfrjD8XODZjA6OL3sE64rEjDFSPSjgXdllH4EYbL_", - // "EQCJCWcpv6SSYKI9XpCOM8wazXTay7Y9eJa1DjvqLrBj0DA4", - // "EQBczmMu9joi0XxD36P0UDZqCmCVZ6lXkQ8EnX73Dz8bFxtS", - // "EQDrU5ouMx-D_RBtqKuqPGpGvS-O4B-kUnXW-q7RulrPmAfa", - // "EQCkEpUgZvV1vD4n1Zs3SSdxInEQh1QkxubbrmHonEywvJ5a", - // "EQDHy0OTba2_affHgdhHNtC8DW0CjAYdM6np6HX8yjqFo1hL", - // "EQA5O1iYS2jpYbP2_z0WCbWRmyiaDQ-thu-x_Jkhzu-DsnEc", - // "EQCYL0iLg5WpiX2G8IBeFIGNVCy7LQ_hyf5iZ9A3ezFg5Atl", - // "EQClK4F-Kyfg7-h7CFMedd4NOMQN3Q_GUXd8b1i863SAdeR3", - // "EQC9yQc4ukdiARwzowoBnlQSI_t_WrW4vM3PZAJtlzmxkRGj", - // "EQBCDb94YxZuR4CsuOu4G9N0pm1U6ezgOhHEBiEX2LWD2YJi", - // "EQDKubNbxKBrbng_VL6CiPWG43crC3zogxRi-kSzxxPjw35F", - // "EQBtm4dCmA6ee0TdGB7OM_ugptfPSJQnZ9t8lEn3333sNE0u", - // "EQB9FPf68No-lbXCKDRKdswuMr1tAFdXKb5wb04CAtkTgPu7", - // "EQDRb6dbCI6kvhE5Mdnp60wc7fNEU7bpTyZkvGnmOLMqv5tr", - // "EQBABRMAjj3FdNo6KkeSP3wLrSL1oBPgogH_vojzNnI0ZI9l", - // "EQAhwpa_TxKq4vPppejylixsCucMNrOJUUHOsEk6TP2ExnOS", - // "EQDQPzhpD1ygMNgnPiD6k6d2S0FWMdJasy3Z3eOQTujARKDD", - // "EQA8Q5etDAwMseoEFLPfN8xUL9wQhi3hNzs4eFlXNIuB81Tj", - // "EQA70IHk3sI76igys6-kLC0TLxXo54s0qAwdbSRUOpqgneV3", - "EQDJlZqZfh1OQ4PY2ze4bSEBznjc8fGzkE2YiP5XLvDv1M6u", - "EQAXl6XExQorMSzpkn_28S79OwtY_zEURRGMLS5kMStdeQng", - "EQBggwBbNUqxxHhaqM6Ck-5cnBgukkjyfpyQdPNcFjQggwrJ", - ], - }, - klaytn: { - owners: ['0x0639556f03714a74a5feeaf5736a4a64ff70d206',], - }, -}; - -const withdrawalAddresses = [ - '0x334cf9ceef9178c7a9bb5495ac8790e9bed316a3', - '0x1d5ba5414f2983212e03bf7725add9eb4cdb00dc', -] - -module.exports = mergeExports([ - cexExports(config), - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddresses: withdrawalAddresses, size: 200, sleepTime: 20_000, proxy: true }) } }, -]) diff --git a/projects/bitindi-dex/index.js b/projects/bitindi-dex/index.js deleted file mode 100644 index 37e1e79fd87..00000000000 --- a/projects/bitindi-dex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { bitindi: {}} -module.exports.bitindi.tvl = () => ({}) -module.exports.deadFrom = '2023-12-20' \ No newline at end of file diff --git a/projects/bitindi/index.js b/projects/bitindi/index.js deleted file mode 100644 index 934a9979f19..00000000000 --- a/projects/bitindi/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking('0xf559BF9c0563Ed5322E7F493C02ea2275d68A367', '0x77fc65deda64f0cca9e3aea7b9d8521f4151882e'), - }, - bitindi: { - tvl: () => ({}), - staking: () => ({}), - // staking: staking('0x140c312c8841B0a7152946C0Bc2BD343bA51bbcc', ADDRESSES.bitindi.WBNI), - }, - deadFrom: '2023-12-20', -}; diff --git a/projects/bitkan/index.js b/projects/bitkan/index.js deleted file mode 100644 index e4e3788f268..00000000000 --- a/projects/bitkan/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - ethereum: { - owners: [ - "0x8e04af7f7c76daa9ab429b1340e0327b5b835748", - "0xefa73f3858392565e1566b70caa27ce79337a2c3", - ], - }, - bitcoin: { - owners: [ - "1GRciJqtfPgL3FJCCco3L3Q74XSaQ4Lr4E", - "18qZ6nkZAQNCVktMixd9Kb3YJ5KPx4E5ov", - "1E2tKutAWLWtBSwrH2T8XGr1ZjDqrQ6SdN", - ], - }, - polygon: { - owners: ["0x8e04af7f7c76daa9ab429b1340e0327b5b835748"], - }, - tron: { - owners: ["TPEXEpjuuRSxpV7vnCrHAefuAMV5VsNAQ4"], - }, - bsc: { - owners: ["0x19c8da00dff2967ea4ec0d77aec93a8bc387e08b"], - }, - solana: { - owners: ["6UsYfLKTdVGJdaWFBLjBYqqxFSUjh6nwpBqdh6R8n3sv"], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/bitkub-cex/index.js b/projects/bitkub-cex/index.js deleted file mode 100644 index 96871b4c1dd..00000000000 --- a/projects/bitkub-cex/index.js +++ /dev/null @@ -1,238 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - bitcoin: { owners: bitcoinAddressBook.bitkub }, - ethereum: { - owners: [ - "0x1579B5f6582C7a04f5fFEec683C13008C4b0A520", - "0xaD0703a267f97e19034FD564d731C4e6d888f9ef", - "0x831e8C86197C3993eb1238b3Ac22E42e3B7f2Fd9", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - "0xE35bb4845149eCC6799C98ceEeF7ff7c85440e6f", - "0x59E0cDA5922eFbA00a57794faF09BF6252d64126", - "0x326d9f47ba49bbaac279172634827483af70a601", - "0x4A3b441962BB481cdffF2650D84EBEC0f119CbB7", - "0x6B130820c449A27b35256A3c99942adbD53AAC18", - "0xFBA420CdAEE2df4e38a622d36616c3547AB6aaB4", - ], - }, - cardano: { - owners: [ - "addr1q8080hxmacdlnhrjllmurq35uj8jnj4ak0egxyl0zx6y9hns6jxls0ngn2qadghy4h7dterk0gzm3y7czmh8zlsfvmesug72j9", - "addr1q9lnc0jsh3f76hmapmsf8m7d6a32gm993gyhjspfvjgpdatl8sl9p0zna40h6rhqj0hum4mz53k2tzsf09qzjeyszm6s6n08gw", - "addr1vx7vlgvuupzvvls99penvatpm2c4j9ljscevzsnn3awk8ys6xynxk", - "addr1q8rgxa3edn03lywl8c9hk6p3c6rpyf9frhqe6a97qtrjktkxsdmrjmxlr7ga70st0d5rr35xzgj2j8wpn46tuqk89vhqaglq5q", - "addr1qyswadm6cz8u2lt8eh752d8434dgtjuvkmp3yv00klcuqm50s7wwjnhjjrt6h206nlzavqmsaqfllzslny5zyhfhemgslhpqe5", - "addr1q9pag8w4fhlfntk53te5ggjcxfv3a47pjs3kp79espx0xa3ry9xxlmzqcs8t8xj28xmw5l34pcdshnm80hjlsl0rlgwst42fps", - "addr1q8w6ydejn4v89cxmvmltzg4g0y4xkg84p3sqf3gmdst032pef9780gqwzm4c5q3m4juvp5q08e37yx9rvhfxahv7kywqn7h8jp", - "addr1q93njnfcfeky7ygfg5wjk3pms74qnxtashr7xmwnzykxpgp4yjdypphupnvrnskz8uj55cuzydmnmmnjvy70hytezjssux9ahu", - "addr1qxdsu34cmfw7er4zmd4702szx7yhc9gayrnyv6lsm89k6mafmzzku8yt4xqu7tqh3qctas87ukfswf0h3ytq9c92razqph7vpw", - "addr1qylmz3tepjdum5alfegjw80xawkqxrqy0lzl9ndhrcmr0dg34hvrr6m7qg538lpd6ppvxe7gp47rm36vyjw9cckuc0qsg26ngm", - "addr1q8j70zld3p2dhpgkxksprpsmzm4qhfhm2l6w9wk44gqs6264x2gg8f3gacy3x74ew8felyagrtq3lztx4cnx90cs09fsp87nrj", - "addr1q94vgjd7zfesgq06vgtrqe9q9g2rjtl6yn35gepwta9eqz25ts95j7frk9yh479d2fqln76xj4gldjflczkqwq003q3s39lprc", - "addr1q9vp536dm7jz05h8qfux247yl4c2cnzrz6kj9p3wh6u98gxuef7ar9t9kpnwpnnksgz8x4tuqtup6jch7yg55kns3p5s4vhaqa", - "addr1qxt89e3xnepa336w0t6td4as2awn0e57nk6f025r26rwug8q8t28pdfqtkt90eeafdf4axmzrh46cg65u47z59tscj3qfpxyxx", - "addr1q9fe0wv28yd6pse9hrwqn8rhcudj42e4z3a5vveqyqww6uys8ta3zga2drsxq42e003wxm7lvxt9skmrnst8f6z7sytqke4up9", - "addr1q8km36sd4wgt6f5e3n557nk454tqwxzg670fxylsztsccq5yy7w9y0uz4hlc3j2veln52xu3ktrrrzkr4p9ays0uhu5q6vukqh", - "addr1qx26c2mdztwk02fyn43692lzqcxscf0ujye06vv3jadhsazwram6xhx09z4yka4q6uexkelc92df9dysnjf5nhajvmnq2e4qwf", - "addr1qxxm602az76en6rjyvurmdpv7sj8jwxxfxv9jvjrttvrxt5l8pzavzkxpxuha8ra90t0h3s2zs5dhv2jmaq3mm6snfkqdmj5vl", - "addr1qxrs00m9qntkxhru8vdmd4xz562rv3ajck36l9yvcs06nwzcx8u53x99sahetdtaascmug9363m5sjjx8aullxgswvesy5td9l", - "addr1q9czs903atc9hmz9vf8sdrqgk33dz9hnwdgpgx98q4fsnj9t3n4wl5p8j9uqg4ewj740uupwjsv4c8p0eckuh3p0tjasl8v77f", - "addr1q9xfm9pxac0vhxym802eagwmtc0aus5w5uhc0tg9rslzzhfcj99akd57ewpta8ww9wf3vp9af3psmyw62vy00tvk3yaq9c3yw6", - "addr1q98xhywsa3xgu79ftrjyrfg6e2wrxfgqvepnudusw58ee6vmw0j8gzw6hmyuefah02purkfvqj6x2pz2wpjr26mr8r7qv6v2qa", - "addr1qxpah9ck505d7dvxvkvh33v5awrxv89vvjcduhfu29fr7dns6jxls0ngn2qadghy4h7dterk0gzm3y7czmh8zlsfvmesxrkkg7", - ], - }, - base: { - owners: [ - "0x7b7B40D0FfC52005AdE856D4F65008BFf7d4D4a6", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - "0x4EBBb4DeEd5dA01B1F882F237BA3a19e83Baaeea", - ], - }, - algorand: { - owners: [ - "CT7HPFSYMKHPJES4GEEA5VE6ML7PF4JUOKNSJNDK7MXYNYLMMTFJ7XDETY", - "Q3GDAVXJLVHL2YNTIP35LMXEIZRGLLANSUGXGG4O2O44RZYYFNAU32OBNU", - "6CBNVPFCWAPEA2C2Y34JP7JDDNZI6YXG5JMPNCSYZOLB24IF3CALRRUSUQ", - "B6PJYYQSVT7F3NNJMGTR7MGS6AA5RLHY5LUGSWJSRXUQQQJZEFZ3QQ2BPE", - ], - }, - bsc: { - owners: [ - "0xC68C8d9d435c1C8a04909A7D8eA588d1031ae1E9", - "0xAdf4c208d546E7F1Ec24cab1CcDA9B47B90B8540", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - "0x2B8A2A03883E790fd8731823fcaC3E7af0a6dab3", - "0xe8FbDA2Ac282a0EBb73d3f4089AD130312eDb8DA", - "0xa2FF973Bf5A7c33cE4591226b03cf0afc5F16D37", - "0xd8A184BBEB7098E45a7bDCe1f88BFb5785Cb22bA", - "0x427E2cb82551D247daA712ebECf5FaC7F1d955Ad", - "0x1ecCd85c9E21f247FadB70F6cFf94B14cb737d03", - "0x3A67638883EfF7856b286ccd373d36476C45407a", - "0x45De26036ebe8a611FD361324872E887B5839564", - "0x85f44C42bAA806047f1d9aAea362333200FC5d10", - "0x8F19c19Fd4B6b3363fd1f214FF7781FBceBdba6d", - "0x165c97f4a371e69A747678bA1893Be023b284f4a", - "0x034bda447330D010554A5a93A22fF45a2505f494", - "0x42b3cd5676FFD76D29A587Fe8aAdE7e35BF7D1B5", - "0xBf36D6540c310996a21537c0193ACA1756884C40", - "0x6Fc29dFF13345574FaD530a8DBCC7Bb4A43Ad045", - "0x56152e13828f78cDCC90A6b016dF0aeC0985e2f3", - "0xc686D5a4A1017BC1B751F25eF882A16AB1A81B63", - "0x074b08B84E7400E9E5446CcE14d446b36B6351B5", - ], - }, - aptos: { - owners: [ - "0x73f6a587b4bc245bf3eeaa31b7ffe490d4c297a4960023b9548c1a4187bbe826", - ], - }, - arbitrum: { - owners: [ - "0x3ad60935c48f59cad57794eea41c60574735b4c9", - "0x799cb7688637824025F2Ae0BE78baA4854EB10f9", - "0x77aB048B5A14385450DfE21a676930E391B0c50C", - "0x0573AdF35a54475CBe10992Ba7C7dC11a80f39Ab", - "0x3040028E91D2a5D1E780c8E1a771A1A243f8921A", - "0xb8a63Da460063aB54aE52c73693Fc554E38E7794", - "0x7836c2eaD68809CEB6168E70558E46eB454209B9", - "0xc49839a2eDd1A2c4B23b080734a72CA9ff8DF666", - "0xCacb823a3D0C5a8490B1d3E60d1f33AB1eEB0387", - "0xFa87f3ae8Bf869d4f6138F47a5682dD9E4458EE3", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - ], - }, - avax: { - owners: [ - "0xCee64C0fD6E455B629ee82404094Bb0FD7a015d3", - "0xf521f4f06253a2c9db5732c6838b82cf472ccb6b", - "0xed450b3a875eaab5366cdc6746b1aa95c1f87009", - "0x16eCE576723AE9640053C2a5e100E21Ae6879915", - "0xaE0B49663C51C8e00795e935186e7C8D425Aa4Fd", - "0x134282ea729a0a129f331d9950d399f22545e8b8", - "0x376AD7FB3842475725D276D77b85883474B9050C", - "0x91013c9c7c2a856B26dF52A8A117Afeb9FC90379", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - ], - }, - litecoin: { - owners: [ - "ltc1qdjslxvcf0sdp7glpm7uyj97dnc8ml32c820jjr", - "MV6PFbiFu9hAzav77zvArKnVbepqzgLai6", - "LX3BfLPmTpNAqemj9QZKu4SLTMrU9M4W4a", - ], - }, - mantle: { - owners: [ - "0x93593B52373775B6387Bb136fb662a1B2B95D28C", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - ], - }, - optimism: { - owners: [ - "0xda4231EF1768176536EEE3ec187315E60572BBD4", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - "0x18f59d6945C3847d837bC7bF2E402C2F91FdBF04", - "0xE24568D364A170B9D768AF5AaB2E9bFfFE628fAA", - "0xB2a4bE10ff7599e748a59EF66DF574EA14FdD28e", - "0x4BB9326ac2721cECc34737FCCE2FeA5fe78Ec88F", - "0x87F05730C7fC9D20EE8f2776b6E12675e344d323", - "0xfE7Ad27596CA67A134Cc227FCCEEe02fD7BaCC46", - "0x4da9F5048B530EC1B0A415d3d4D82f1C0A0F3d77", - "0x34d68b60F2BB5983a85dCE33A9Fbc74135EA05d6", - ], - }, - polygon: { - owners: [ - "0xCa7404EED62a6976Afc335fe08044B04dBB7e97D", - "0x98a81ce4e94249beb329f04b9595e10735ae6ab0", - "0xac72565ccf186f10e6a7a3964492c62be5757e31", - "0x9573A11d939753737E8F09f80f07f6462C093a1c", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - ], - }, - solana: { - owners: [ - "CqLu65KkFvGi3DUrR9o9aUC4LP2yUywFHZn8WoNLNVgy", - "99GQKbo1m2dU2ETGtEB1of9F6QHne5o9HHjAc7MyiVSn", - "FEpW539FYXJLpuKxPEuFZhtBHqv3o3V5qKtQa8wxN6qQ", - "7Z4YASPhNRbebWGx4GuzEWFAETZyRdN1GQTFTnM8t5c2", - "9ZxAqUEP5aYBCHakuVt9ojL15jfy9oMiaeQv5ewk2c7J", - "EwA9sKvmKwTpKr9BqYmsYi2UjKEMm3aPsihmFfT7Q9DM", - ], - }, - tron: { - owners: [ - "TUokA66synv9BN4T2VPSRZivNedcbkhfJF", - "TN6yULseUiJF7WZUruRQqMTUb1VTDBdsqG", - "TRHQmybCizoiMCA3ev4pNTb5PLJmgpSztQ", - "TLpzN1ztwi47kK8Wip2VvmDMFwnMyWnHwj", - ], - }, - ripple: { - owners: [ - "rnrqyM7kS6wmC5demJm9vrfdN2vLgS8LfY", - "rE3Cc3i6163Qzo7oc6avFQAxQE4gyCWhGP", - "rsgwNP2cyRHAcEbuRmboDQ4pmgemMNVZR3", - "rN2AVDJj927YbdAvTXoDtq8uswbQvFU42t", - "rfZCcK6EMCYeAX3y86X281xwgRLcH82SAw", - "rwa1MPnDwpRsgJ4jmZHuBo42xK9YVpp45P", - ], - }, - era: { - owners: [ - "0xe65eE83E7B466CB3836f666BaAeB4ed6d29B5723", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - ], - }, - core: { - owners: [ - "0x1CA1817eD440b26Fb005748f3CE9f8db160A5C0a", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - ], - }, - fantom: { - owners: [ - "0xE9BB729A7eA588c2ad10acaF647124503Dbb08d1", - "0x7A1CF8CE543F4838c964FB14D403Cc6ED0bDbaCC", - "0xDD374d8202D43a18BE95C8B64C41a87a9898889f", - ], - }, - ton: { - owners: [ - "UQC99FRwIlV2iLvDwFDyIfSVFQms5fUKtVZKidKuFTKItH2h", - "UQDByM-88YEJtGq4UTZx3FOgZFZ6URHPYD11wf9AcBrajchg", - ], - }, - doge: { - owners: [ - "A3UdEKpx5HR1hJvKKw7iVbwp6MRn3yZAiK", - "ACkC8PjakegrmPFaL12FVDPCn8HwdKzSCY", - "AAuxfoiADXxMgbZPZ42xE6TCnFnz2FK33e", - "A5XHmCEG2TbaUnCiZnganw29EsDDnUQXjj", - "A59WR7LTBiBbSx3QZbf7SwQ6q3PHnP33wK", - "A4RZ3WfKxyWDPvMkFGM2Uzo8rDd6wwBqK5", - "9tAKQbiRPJxosnuUFGivL2kP3UEEeqdnd1", - "AD7E3QXB5go9AtE2uueMr3Dw767eWi5ruy", - 'DTqm2UCi6AS1nSCo9jZ8AejZ3k1ZcF8qix', - 'A2is3pqH2jz8jcRNV2QEFnLF3FAP5hBEoB', - 'DBrNiTbgpHHeveemLNnKwNDEJwXRGGRb1L', - 'D788kYSZYsVWSoLVejipE1Q4cN8Spom5eU', - 'DNvZftCnAsfrzzfe6R3dF6Sugz7W4Qgs6b', - 'DPYV66VirzChkotHXPryAhcfvyQmeArV2y', - 'DHBERwF4LVLVwQzDtfPz9zEtKPnWW9NSDH', - 'DTWmAfdTkrtqv7GmN2vE74VTkXkgQUFRSn', - 'DDm2XmWXhq3fxHd9fUaqnbmxanaFuKSG1s', - 'DHt3teN3iNSG7rJ8GaGz5EeHYFieCf8Qin', - 'D5GmmrSZ1xDut5Nj1s4C4ncA1v3EGfbk15', - 'DNpbFixXn611Qd9SZDBDjS4NhFPAXG8t1X', - 'D7pEtDnFU3ZgTykZt54SXvGeF1YSt2PVbe', - 'DCWvgKHcs1KUDqYe55rTX8m6uaJ67gaAp5', - 'DBdkivVhGhmbBRSsbt2s55MtZ38ngs86nS', - ], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/bitlayer-btc/index.js b/projects/bitlayer-btc/index.js deleted file mode 100644 index c282ab582aa..00000000000 --- a/projects/bitlayer-btc/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const { bitlayerBridge } = require("../helper/bitcoin-book"); -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - bitcoin: { - tvl: sumTokensExport({ owners: bitlayerBridge }) - }, - ethereum: { - tvl: sumTokensExport({ - ownerTokens: [ - [[ADDRESSES.ethereum.USDT], "0x92221E8Bc4E1D9a3E5D1cC39A524E90Cd4bdF8b1",], //USDT - [[ADDRESSES.ethereum.USDT], "0x6bc2b644A0D124F1e5dDf5a9BDd922e65a961343",],//usdt - [[ADDRESSES.null],"0x0CA2a8900b8140E1e70dc96F32857732f5F67B31",], //eth - [[ADDRESSES.ethereum.WSTETH],"0x6ac1108461189F1569e1D4dEdc9940a0395d3423",]] //eth - }), - }, -}; diff --git a/projects/bitlayer-ybtc_b/index.js b/projects/bitlayer-ybtc_b/index.js deleted file mode 100644 index 90131316bd6..00000000000 --- a/projects/bitlayer-ybtc_b/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/sumTokens"); - -const ybtc_b = '0x2cd3cdb3bd68eea0d3be81da707bc0c8743d7335' - -module.exports = { - btr: { tvl: sumTokensExport({ - owners: [ybtc_b], - tokens: [ - nullAddress, - ], - }), }, -} diff --git a/projects/bitlen/index.js b/projects/bitlen/index.js deleted file mode 100644 index 418bdaf2062..00000000000 --- a/projects/bitlen/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const WBTC_POOL = '0x6996c446b1bfb8cc2ef7a4bc32979de613bcefe1'; -const USDT_POOL = '0xad9b8b6c60ca112ab10670d87d53e6ff86ec3c2a'; -const USDC_POOL = '0x779bddc3cBc62617093CB1E27436C78DA015508E'; -const UBTC_POOL = '0xfAa5376d7A04cb111d5a1601CB083408c167d299' - - -const CORE_POOL = '0xfE345fF60ACB262848FBf3Cb11bf5811c8293Aa9'; -const COREBTC_POOL = '0x95fBbAf7Ad1DB1Ee6D1Ee2ea9ddca2cda23af832'; -const CORE_USDT_POOL = '0xeC225F71C065E2abD06C5C69BF0FB06C857E46cB'; -const CORE_USDC_POOL = '0x514C4876e239a248dD6d40F54491Cc1C7b2D044A'; -const CORE_ABTC_POOL = '0xeC81EBCEb627120FeF942e53587940277f764E93' - -const config = { - bsquared: { - pools: [WBTC_POOL, USDT_POOL, USDC_POOL,UBTC_POOL] - }, - core: { - pools: [CORE_POOL, COREBTC_POOL, CORE_USDT_POOL, CORE_USDC_POOL, CORE_ABTC_POOL] - } -} - -Object.keys(config).forEach(chain => { - const { pools } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: pools }) - return sumTokens2({ api, tokensAndOwners2: [tokens, pools] }) - }, - borrowed: async (api) => { - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: pools }) - let debts = await api.multiCall({ abi: "uint256:totalDebt", calls: pools }) - api.add(tokens, debts) - return sumTokens2({ api, }) - } - } -}) \ No newline at end of file diff --git a/projects/bitlend/index.js b/projects/bitlend/index.js deleted file mode 100644 index 1b2b99044a1..00000000000 --- a/projects/bitlend/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const CHAIN = 'bittorrent' - -// Tokens -const ETH = ADDRESSES.bittorrent.ETH -const USDC_T = ADDRESSES.bittorrent.USDC_t -const TRX = ADDRESSES.bittorrent.TRX - -// Bitlend Markets -const bETH = '0xb65103C4B2Af563F9bBD8ad8CA8387d700673B6E' -const bUSDC_T = '0xd1dA3881282a954E7FCd5a23c89AF2978FCEFcF0' -const bTRX = '0xE73fb086C7Aa48b83372b028f0f35B06E77C7511' - -module.exports = { - methodology: 'Total staked tokens in Bitlend protocol.', - deadFrom: 1675036800, - bittorrent: { - tvl: sumTokensExport({ - chain: CHAIN, - tokensAndOwners: [ - [ETH, bETH], - [USDC_T, bUSDC_T], - [TRX, bTRX], - ], - }) - } -} - - diff --git a/projects/bitlo-cex/index.js b/projects/bitlo-cex/index.js deleted file mode 100644 index f9e406f98bd..00000000000 --- a/projects/bitlo-cex/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const { cexExports } = require("../helper/cex"); - -const config = { - bitcoin: { - owners: [ - "3392g7wWA64L8apgSLKHdDN7JxK9eeH6Sc", - "33DtinVYzZcK5pg1AjCnGRefrDgXgrEZyw", - ], - }, - aptos: { - owners: [ - "0xf6fbd3690200dd9a28eaf210349ca607a4df5eb63018845797241161a07e9dd6", - "0x4daca89afce1b279856a7a2185d044be86840bb264c20f2061d3327ed40c2b2d", - ], - }, - algorand: { - owners: ["TBXO5VXDTYVFRQBMK3PQZZRPCEKME2D7EKNBTT5MB4P2FOGKX4SPGNOB5A"], - }, - cardano: { - owners: [ - "addr1qxheka95t9mgdvpta5tn7k0hzkd4vefm3xu2dgy20fn8nevvquk8gyd0mj7cfgju0ww69qvekezlf74jxl7jajds2dpqtr5hcc", - ], - }, - doge: { - owners: [ - "D9PyugrmQdpoabcVUceMFUZubDx4JHzebd", - "D9GEFr81xw1mnbq7HnMaTnywF3FwDGjiw8", - ], - }, - ethereum: { - owners: [ - "0x57c2a615b268e8db97d17d6068a96f95f40176aa", - "0x9c21d12400bae033f43497b6aa72c33f7ed12b79", - "0x2AF26Fa3682edd327B4caf48158c814EEd7288a9", - ], - }, - near: { - owners: [ - "6ab1742337f2734a9da8bc75091c0a4558280adc951be7db04feb4c1cea0edc1", - ], - }, - polkadot: { - owners: ["13R98s5YQLiYUw8nhhKUD2KuPVko4xyc9rTtXFHRz5L5DF1H"], - }, - solana: { - owners: [ - "D9tnx1BsZtjnJQKSPfY88tWrLkPeukCnUnzoG1GNmp4i", - "ADfsfX95pX8VkHcF7i1JCLrwKZ5mQptQF5QcVQf5cv3A", - "FDPWPcm3FrtQcQcAjd9k3biyco6RCwun9dgt8GpjReXk", - ], - }, - sui: { - owners: [ - "0xd0bb3cc13817613004aee1974a9075dfe9a6290de4b397a8b31d22673e6be885", - ], - }, - tron: { - owners: [ - "TCWBhFzyDMvFM2Xm5bDjTRmcfYumEd8LrS", - "TBMfAkZXi2fg9VXHeJqzZrmFwN2VooDBeZ", - ], - }, - ripple: { - owners: ["rUTyLdTBDcajmCBZYnRVmHTUAMuCzbNgnC"], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/bitmake/index.js b/projects/bitmake/index.js deleted file mode 100644 index eaa310102c2..00000000000 --- a/projects/bitmake/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { bitcoin: { owners: bitcoinAddressBook.bitmake } } -module.exports = cexExports(config) -module.exports.methodology = 'We are only tracking one BTC wallet. We dont have information regarding other wallets' \ No newline at end of file diff --git a/projects/bitmap-game/index.js b/projects/bitmap-game/index.js deleted file mode 100644 index ef3e0d1897b..00000000000 --- a/projects/bitmap-game/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('../helper/staking') -const STAKE_MERL_CONTRACT = '0xb311c4b8091aff30Bb928b17Cc59Ce5D8775b13A' -const MERL_TOKEN = '0x5c46bFF4B38dc1EAE09C5BAc65872a1D8bc87378' -const STAKE_BITMAP_TOKEN_CONTRACT = '0x8567bD39b8870990a2cA14Df3102a00A7d72f7E3' -const BITMAP_TOKEN = '0x7b0400231Cddf8a7ACa78D8c0483890cd0c6fFD6' - -module.exports = { - merlin: { - tvl: staking([STAKE_BITMAP_TOKEN_CONTRACT, STAKE_MERL_CONTRACT,], MERL_TOKEN), - staking: staking([STAKE_BITMAP_TOKEN_CONTRACT, STAKE_MERL_CONTRACT,], BITMAP_TOKEN,), - } -} \ No newline at end of file diff --git a/projects/bitmark/index.js b/projects/bitmark/index.js deleted file mode 100644 index c2bae74bae1..00000000000 --- a/projects/bitmark/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -// https://support.bitmart.com/hc/en-us/articles/18473693031451-Enhancing-Transparency-and-Trust-at-BitMart -const owners = [ -'0x328130164d0f2b9d7a52edc73b3632e713ff0ec6', -'0xeacb50a28630a4c44a884158ee85cbc10d2b3f10', -'0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182', -'0x7563758243a262e96880f178aee7817dcf47ab0f', -'0x6D0D19bddDC5ED1dD501430c9621DD37ebd9062d'] -const config = { - ethereum: { - owners - }, - bsc: { - owners - }, - solana: { - owners: ['CgANddXc7FKSsdLSdFv67X8faZqQaRTeLMXkAVANkZD4'] - }, - bitcoin: { - owners: bitcoinAddressBook.bitmark - }, - starknet: { - owners: ['0x04de639e634c071c3ce8b1c69fac0500aab5ddb25a08fd0f757176243e4c0467'] - }, -} - -module.exports = cexExports(config) diff --git a/projects/bitmex/index.js b/projects/bitmex/index.js deleted file mode 100644 index 949a8ea55ea..00000000000 --- a/projects/bitmex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { owners: bitcoinAddressBook.bitmex }, - ethereum: { - owners: [ - '0xEEA81C4416d71CeF071224611359F6F99A4c4294', // Etherscan Label (seems cold) - '0xfb8131c260749c7835a08ccbdb64728de432858e' // Etherscan Label (seems hot) - ], - } -} - -module.exports = cexExports(config) -module.exports.methodology = 'We collect only wallets that have more than 20 bitcoins' \ No newline at end of file diff --git a/projects/bitomato/index.js b/projects/bitomato/index.js deleted file mode 100644 index e23999051ad..00000000000 --- a/projects/bitomato/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { cexExports } = require('../helper/cex'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); - -const config = { - bitcoin: { - owners: bitcoinAddressBook.bitomato, - }, - ethereum: { - owners: [ - '0x0b8b4EB21787d5a07AbAF6BC35E15CD5C59Cbb94', // Ethereum address for Bitomato - ], - }, - bsc: { - owners: [ - '0x0b8b4EB21787d5a07AbAF6BC35E15CD5C59Cbb94', // BSC address for Bitomato - ], - }, -}; - -module.exports = cexExports(config); -module.exports.methodology = 'We are tracking part of their cold wallets for Bitomato. The addresses were provided based on public information and verified activity.'; diff --git a/projects/bitparty/index.js b/projects/bitparty/index.js deleted file mode 100644 index bd0664cf67e..00000000000 --- a/projects/bitparty/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - btr: { - tvl: sumTokensExport({ - owners: ['0xb002b938d63fe8762f2a0eff9e49a8e20a0078e8',], - tokens: [ - nullAddress, - ADDRESSES.btr.ETH, - '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2', - '0xf8c374ce88a3be3d374e8888349c7768b607c755', - ADDRESSES.btr.WBTC, - '0x07373d112edc4570b46996ad1187bc4ac9fb5ed0', - '0x2729868df87d062020e4a4867ff507fb52ee697c', - '0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1', - ADDRESSES.swellchain.stBTC, - '0xe277aed3ff3eb9824edc52fe7703df0c5ed8b313', - '0xf6fa83e30c7d3978f86141016ee9471d77f48ae0', - '0xbb0cb5c5e49d5c3903932d07831fb8c1bb1651d2', - '0xab7f136bbb18808f0c981d0307d3360ca92ad171' - ], - }), - } -} diff --git a/projects/bitpif/index.js b/projects/bitpif/index.js deleted file mode 100644 index a0aa28b424e..00000000000 --- a/projects/bitpif/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const stakingContracts = [ - // stakingContract1 = - "0xA2b37bB22a3E685c5c7ee19DBCc06344FA35d6dc", - // stakingContract2 - "0x6D905919ab41De27dC566ACD1f04f4F1CA60A160", - // stakingContract3 - "0x1Da83856f1E2fa6ff07072a4108fd57e13812714", - // stakingContract4 - "0xfC2c975AC2B14B5F073141A0ba75e1e36d21bBb1", - // stakingContract5 - "0x27195cb7002A9e121249adc693460F98e69F93eF", - // stakingContract6 - "0x5f0B3d111DC3e27EcaC483c5d981a27974CB84B4", - // stakingContract7 - "0xcCACBafF877003853374BDEBca2B0AdAc463DA12", -]; - -const USDC_BPF_UNIV2 = "0xb2aa61b5bF5Da7b39404A89D20FD9CF10076B77D"; -const BPF = "0x5197FBE1a86679FF1360E27862BF88B0c5119BD8"; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(stakingContracts, BPF), - pool2: stakings(stakingContracts, [USDC_BPF_UNIV2]), - tvl: (async) => ({}), - }, - deadFrom: "2022-05-01", - methodology: "Counts liquidty on the staking and pool2s only", -}; diff --git a/projects/bitrue-cex/index.js b/projects/bitrue-cex/index.js deleted file mode 100644 index 98d068f263e..00000000000 --- a/projects/bitrue-cex/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); - -const config = { - ethereum: { - owners: [ - '0x6cc8dcbca746a6e4fdefb98e1d0df903b107fd21', - // '0x4fd797f0cc7c87b1b48b0a0db6b66db63780717d', - '0x0cabd4fa219af5954ffb4fb3d88c7f950f80c05d' - ], - }, - bitcoin: { - owners: bitcoinAddressBook.bitrue - }, - era: { - owners: [ - '0x6cc8dcbca746a6e4fdefb98e1d0df903b107fd21', - ], - }, - mantle: { - owners: [ - '0x6cc8dcbca746a6e4fdefb98e1d0df903b107fd21', - ], - }, - scroll: { - owners: [ - '0x6cc8dcbca746a6e4fdefb98e1d0df903b107fd21', - ], - }, - linea: { - owners: [ - '0x6cc8dcbca746a6e4fdefb98e1d0df903b107fd21', - ], - }, - core: { - owners: [ - '0x6cc8dcbca746a6e4fdefb98e1d0df903b107fd21', - ], - }, - taiko: { - owners: [ - '0x6cc8dcbca746a6e4fdefb98e1d0df903b107fd21', - ], - }, - cardano: { - owners: [ - 'addr1v9wa6entm75duchtu50mu6u6hkagdgqzaevt0cwryaw3pnca870vt', - 'addr1q9n7fk3ldjprw08egt78ekdseec4h27kwyc597wk54d30mjmj4sg7lyj4mpf0qmkzc7rz4j3g8ge0pgq25ju9wzqengq7qqf4z', - ], - }, - bsc: { - owners: [ - '0x868f027a5e3bd1cd29606a6681c3ddb7d3dd9b67', - ], - }, - solana: { - owners: [ - '7RmkMNQerKaVioRnmqZsHM5Gm8F3gngQG8umLNoK97q4', - 'DFsnJoF2jjkFngB1WSPXTaiJJEjJTBAmPLCxcWwknuxq', - '2rXk5bgHTVHYGkLWCi16AVoXnMFArJH1MAfaqbXiMLAo', - 'AxQyoXiqZAW2ca64CE2828pYXX7U3jXKJTNVa1hvhQzn', - '7ziHMYFe6st7b6AWnLSSqLoVqbZcXJPUxSDsTG4xzmoV' - ], - }, - polygon: { - owners: [ - '0xa813251e163766361adfb9700748397977a54ea0', - ], - }, - tron: { - owners: [ - 'TKGZE5pXLrRYiAsHMbTvSsgsJgSYPYtsRA', - 'TMESwrQ1NVjyqwj74yzEcqpaBRy8mubAUj', - 'TBGKMndepWM4HYgaVYAbWzTuoV9aJuxYMW', - ], - }, - ripple: { - owners: [ - 'r3RaNVLvWjqqtFAawC6jbRhgKyFH7HvRS8', - 'rfKsmLP6sTfVGDvga6rW6XbmSFUzc3G9f3', - 'rNYW2bie6KwUSYhhtcnXWzRy5nLCa1UNCn', - 'r4DbbWjsZQ2hCcxmjncr7MRjpXTBPckGa9', - 'rftiWeaS6JPLJDvJLV4CoSQ2XWJ1U4jg3a', - 'rr6sWbuKMsYs5JkKNARxUpEPfZ3GNUjFE', - 'rNrFVnR47ZinYNBGtrbk8Xcgp2FHkGfDYi' - ], - }, - sui: { - owners: [ - '0x5e2baf93b9ca87b17443f1a175b620879e1cec076096d4adf25e3a4b48588abf' - ], - }, - flare: { - owners: [ - '0x7560B22b42B3E2596BD989764f1EB9bEC1896C8d' - ], - }, - hedera: { - owners: [ - '0.0.1405108', - '0.0.285576' - ], - }, - cosmos: { - owners: [ - 'cosmos1mtauzk3q40zt3weujcqwu009vw5t6m5fnv4xxr' - ], - }, - polkadot: { - owners: [ - '1F5fhgHpekmLPSdbwESJRsWU5KJdhEFZuwBMTj1czBuvyzm' - ], - }, - xdc: { - owners: [ - 'xdcc1b519019639c7e684c6626440b448582cbe0a75', - 'xdc27f03b6bc690a5739b0603b4c92eaff176e3d567' - ], - }, -vechain: { - owners: [ - '0x20a02aca8f66cbf324c61dc9c1c40d48a8946651', - ], - }, -} - -module.exports = mergeExports([ - cexExports(config), - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddress: '0x4fd797f0cC7C87B1b48b0A0db6b66DB63780717d', size: 200, sleepTime: 20_000, proxy: true }) } }, -]) \ No newline at end of file diff --git a/projects/bits/index.js b/projects/bits/index.js deleted file mode 100644 index 555ea073c22..00000000000 --- a/projects/bits/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const BITS_VAULTS_ETHEREUM = [ - '0xC516FF2349A5C869B851Ce78De740ac209180b56', // WBTC vault on Ethereum -] - -const BITS_VAULTS_COREDAO = [ - '0xdC2168Db73E0282CEd0a18F66aE54bd9E904376F', // COREBTC vault on CoreDAO -] - -const BITS_VAULTS_BASE = [ - '0x094df7fcF2E6069516B7969B1Cf7C6dFAE623672', // BASEBTC vault on Base -] - -// Token addresses -const WBTC = ADDRESSES.ethereum.WBTC -const COREBTC = "0x5832f53d147b3d6Cd4578B9CBD62425C7ea9d0Bd" -const BASEBTC = ADDRESSES.base.cbBTC - -async function tvl(api) { - // Get WBTC balances for all Ethereum vaults using multicall - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: BITS_VAULTS_ETHEREUM.map(vault => ({ - target: WBTC, - params: [vault] - })) - }) - // Add all Ethereum balances to the API - api.add(WBTC, balances) -} - -async function tvlCore(api) { - // Get COREBTC balances for all CoreDAO vaults using multicall - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: BITS_VAULTS_COREDAO.map(vault => ({ - target: COREBTC, - params: [vault] - })) - }) - - // Add all CoreDAO balances to the API - api.add(COREBTC, balances) -} - -async function tvlBase(api) { - // Get BASEBTC balances for all Base vaults using multicall - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: BITS_VAULTS_BASE.map(vault => ({ - target: BASEBTC, - params: [vault] - })) - }) - - // Add all Base balances to the API - api.add(BASEBTC, balances) -} - -module.exports = { - methodology: 'Counts the total value of WBTC assets locked in Bits yield product contracts on Ethereum network, COREBTC assets on CoreDAO network, and BASEBTC assets on Base network.', - start: 1749621314, - ethereum: { - tvl, - }, - core: { - tvl: tvlCore, - }, - base: { - tvl: tvlBase, - } -} \ No newline at end of file diff --git a/projects/bitsmiley-io/index.js b/projects/bitsmiley-io/index.js deleted file mode 100644 index 086d6c57cbc..00000000000 --- a/projects/bitsmiley-io/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require('../helper/unwrapLPs') - -async function tvl(api) { - - return sumTokens2({ owners: [ - '0x37fc73b4dda9f7263926590838e32e05e4e051e9', - ], tokens: [ADDRESSES.btr.WBTC, '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2'], api, }) //wbtc and usdt -} - -module.exports = { - btr: { tvl, } -} -/* -const config = { - btr: { query: '0x3622a84D5861d25aA064512E3F244Dd8e67Dc22B', }, - -} -const abis = { - "listCollaterals": "function listCollaterals() view returns ((string name, uint256 maxLTV, uint256 liquidationFeeRate, uint256 stabilityFeeRate, bytes32 collateralId, (address tokenAddress, uint256 safetyFactor, uint256 totalDebt, uint256 totalLocked, uint256 vaultMaxDebt, uint256 vaultMinDebt, uint256 maxDebt) collateral)[] collateralInfos)", -} - -Object.keys(config).forEach(chain => { - const { query,} = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const res = await api.call({ abi: abis.listCollaterals, target: query}) - res.forEach(({ collateral}) => api.add(collateral.tokenAddress, collateral.totalLocked)) - } - } -}) */ \ No newline at end of file diff --git a/projects/bitstable-finance/index.js b/projects/bitstable-finance/index.js deleted file mode 100644 index 596f5d3d429..00000000000 --- a/projects/bitstable-finance/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESS = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/sumTokens"); -const sdk = require('@defillama/sdk') -const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - - -const BB_STAKE_CONTRACT = '0x8816353DA8A4D45E81C509A54AdbA8E57908958f' -const BB_STAKE_ABI = 'function totalStakedAmount() view returns (uint256)' - -const owner = "0x103dd1184599c7511a3016E0a383E11F84AE7173"; -const tokens = { - ethereum: [ADDRESS.ethereum.USDT], - bsc: [ADDRESS.ethereum.FDUSD], - bouncebit: [ADDRESS.bouncebit.BBUSD] -}; - -const bbInBouncebitStaking = async (api) => { - const staked = await api.call({ target: BB_STAKE_CONTRACT, abi: BB_STAKE_ABI }) - api.addCGToken('bouncebit', staked/1e18) -} - -module.exports = { - methodology: "Staking tokens via BitStable counts as TVL", - bitcoin: { - tvl: sdk.util.sumChainTvls([ - // Native(BTC) - sumTokensExport({ owner: bitcoinAddressBook.bitstable[0] }), - // BRC20 - sumBRC20TokensExport({ - // Deposit Address - owner: bitcoinAddressBook.bitstable[1], - blacklistedTokens: ["BSSB", "DAII"], - }), - ]), - staking: sumBRC20TokensExport({ - // Farm Address - owner: bitcoinAddressBook.bitstable[2], - blacklistedTokens: ["DAII"], - }), - }, - bouncebit: { - staking: bbInBouncebitStaking, - }, -}; - -Object.keys(tokens).map((chain) => { - module.exports[chain] = { - tvl: sumTokensExport({ owner, tokens: tokens[chain] }), - }; -}); diff --git a/projects/bitstamp/index.js b/projects/bitstamp/index.js deleted file mode 100644 index 9ecf7b13e28..00000000000 --- a/projects/bitstamp/index.js +++ /dev/null @@ -1,99 +0,0 @@ -const sdk = require('@defillama/sdk') -const { cexExports } = require("../helper/cex") -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') - -const cexExportsObject = {} - -const config = { - ripple: { - owners: [ - "rnuDDzvYWTPqXTDVvwE9oLGLgxzV7Rpnpe", - "rafKN5p8iQsRP13LZXXoV8SCw2b9ugvjy1", - "rGNCoeUNqBzQnEiK2X7EYDzSpJ7PtKQSBb", - "rEXmdJZRfjXN3XGVdz99dGSZpQyJqUeirE", - "r3rVXDv8HDUBcrckfda9YsnBkX2E62WLyK", - "rDsbeomae4FXwgQTJp9Rs64Qg9vDiTCdBv", - "rp8Ygdyi2u7DZuMbchpFKBpsgSeg4LXDFQ", - "r3KfqsuMjp85ddhNN2xNAAbmrNKUgFbcpk", - "rG2bzZ2Q9JcpPeCyqXTQts6jHSYsX21G6a", - "rnTdkgZXF9AsEV8crG8KtngiD4nDC8Dkc2", - "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", - "rHHrmqpzuDSkpcRK2PFm7P5Mo5zf927ina", - ], - }, -}; - -const chains = [ - 'bitcoin', 'litecoin', 'ripple', - 'ethereum', 'avax', 'solana', 'sui', 'xdc', 'near', 'cardano', 'algorand', -] - -chains.forEach(chain => { - cexExportsObject[chain] = { - tvl: async (...args) => { - const data = await getAllData() - const tvlFunc = cexExports({ [chain]: data[chain] })[chain].tvl - return tvlFunc(...args) - } - } -}) - -let _allData - -function getAllData() { - if (!_allData) - _allData = _getAllData() - - return _allData - - function _getAllData() { - return getConfig('bitstamp', undefined, { - fetcher: async () => { - let page = 1 - let hasMorePages = true - let lastItem - const walletChainMapping = {} - do { - sdk.log('fetching page', page) - const data = await get('https://www.bitstamp.net/api/v2/wallet_transparency/?perPage=1000&page=' + page) - const allWallets = Object.values(data.wallets).flat() - const currentLastItem = allWallets[allWallets.length - 1] - - allWallets.forEach(({ address, network }) => { - if (!walletChainMapping[network]) - walletChainMapping[network] = {} - walletChainMapping[network][address] = true - }) - - page++ - hasMorePages = !lastItem || currentLastItem.address !== lastItem.address - lastItem = currentLastItem - } while (hasMorePages) - - Object.entries(walletChainMapping).forEach(([chain, wallets]) => { - walletChainMapping[chain] = { owners: Object.keys(wallets) } - }) - - walletChainMapping.avax = walletChainMapping['avalanche-c-chain'] - walletChainMapping.xdc = walletChainMapping['xdc-network'] - walletChainMapping.ripple = config.ripple - return walletChainMapping - } - }) - } -} - -const withdrawalAddresses = [ - '0x3262f13a39efaca789ae58390441c9ed76bc658a', - '0xf666814c2ae92ca0e06667f80dac1eb8a97e48ae', - '0x5c95a672e34b3252482ed9a215f2926d2887845d', - '0x88a4df73aac310484c60c4c0ac4904cab938c20b', -] - -module.exports = mergeExports([ - cexExportsObject, - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddresses: withdrawalAddresses, size: 200, sleepTime: 20_000, proxy: true }) } }, -]) - diff --git a/projects/bitstaq/index.js b/projects/bitstaq/index.js deleted file mode 100644 index 39a290df990..00000000000 --- a/projects/bitstaq/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const mapLockedAmount = await api.call({ - target: "0x000000000000000000000000000000000000d011", - abi: "function getAccountTotalLockedGold(address) view returns (uint256)", - params: ["0x9bD1E0a3A727D0d4F4e9A6d59022E071DDc79924"], - }); - - api.add(ADDRESSES.map.WMAPO, mapLockedAmount) -} - -module.exports = { - map: { tvl, } -}; diff --git a/projects/bitswap-bb-v2/index.js b/projects/bitswap-bb-v2/index.js deleted file mode 100644 index 377144b9dad..00000000000 --- a/projects/bitswap-bb-v2/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('bouncebit', '0x6d2Ae8505Ab39c9cF94abf69d75acc6115C2E3c0') \ No newline at end of file diff --git a/projects/bitswap-bb-v3/index.js b/projects/bitswap-bb-v3/index.js deleted file mode 100644 index 5cdaf9a9187..00000000000 --- a/projects/bitswap-bb-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - bouncebit: { factory: '0x30a326d09E01d7960a0A2639c8F13362e6cd304A', fromBlock: 218667, }, -}) \ No newline at end of file diff --git a/projects/bitty/helper/abis.js b/projects/bitty/helper/abis.js deleted file mode 100644 index 924cc8f71b0..00000000000 --- a/projects/bitty/helper/abis.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - UiPoolDataProvider: { - getSimpleReservesData: "function getSimpleReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 reserveFactor, bool borrowingEnabled, bool isActive, bool isFrozen, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint40 lastUpdateTimestamp, address bTokenAddress, address debtTokenAddress, address interestRateAddress, uint256 availableLiquidity, uint256 totalVariableDebt, uint256 priceInEth, uint256 variableRateSlope1, uint256 variableRateSlope2)[])" - }, - BNFTRegistry: { - getBNFTAssetList: "function getBNFTAssetList() external view returns (address[] memory)", - bNftProxys: "function bNftProxys(address) view returns (address)" - }, -}; \ No newline at end of file diff --git a/projects/bitty/helper/address.js b/projects/bitty/helper/address.js deleted file mode 100644 index 001e1fd028b..00000000000 --- a/projects/bitty/helper/address.js +++ /dev/null @@ -1,9 +0,0 @@ -const ChainEthereum = { - UiPoolDataProvider: "0xb1CB6836179FeA21d2B9c9D45678D6F1B0058176", - LendPoolAddressesProvider: "0xCBF9c46BC8837F295b0f0d483662e9ac58D7Cb64", - BNFTRegistry: "0x2aaEe23d422e054132D85Db145cA8B08Fb07aC64" -} - -module.exports = { - ethereum: ChainEthereum, -} \ No newline at end of file diff --git a/projects/bitty/helper/index.js b/projects/bitty/helper/index.js deleted file mode 100644 index e91497bba95..00000000000 --- a/projects/bitty/helper/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require("../../helper/unwrapLPs"); - -const abis = require("./abis"); -const address = require("./address"); - -async function tvl(api) { - const addressMap = address[api.chain]; - - const [simpleReservesData, bnftAssetList] = await Promise.all([ - api.call({ - target: addressMap.UiPoolDataProvider, - params: [addressMap.LendPoolAddressesProvider], - abi: abis.UiPoolDataProvider.getSimpleReservesData, - }), - api.call({ - target: addressMap.BNFTRegistry, - abi: abis.BNFTRegistry.getBNFTAssetList, - }), - ]); - - const bnftProxyList = await api.multiCall({ - calls: bnftAssetList, - target: addressMap.BNFTRegistry, - abi: abis.BNFTRegistry.bNftProxys, - }); - - const toa = [ - ...bnftAssetList.map((bnftAsset, idx) => { - const bnftProxy = bnftProxyList[idx]; - return [bnftAsset, bnftProxy]; - }), - ...simpleReservesData.map((reserve) => [ - reserve.underlyingAsset, - reserve.bTokenAddress, - ]), - ]; - - const balances = await sumTokens2({ api, tokensAndOwners: toa }); - - return balances; -} - -async function borrowed(api) { - const balances = {}; - const addressMap = address[api.chain]; - - const simpleReservesData = await api.call({ - target: addressMap.UiPoolDataProvider, - params: [addressMap.LendPoolAddressesProvider], - abi: abis.UiPoolDataProvider.getSimpleReservesData, - }); - - simpleReservesData.forEach((d) => { - sdk.util.sumSingleBalance( - balances, - d.underlyingAsset, - d.totalVariableDebt, - api.chain - ); - }); - - return balances; -} - -module.exports = { - tvl, - borrowed, -} \ No newline at end of file diff --git a/projects/bitty/index.js b/projects/bitty/index.js deleted file mode 100644 index 105c8c372a4..00000000000 --- a/projects/bitty/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { tvl, borrowed } = require("./helper"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - methodology: methodologies.lendingMarket, - ethereum: { - tvl, - borrowed, - } -}; \ No newline at end of file diff --git a/projects/bitu/index.js b/projects/bitu/index.js deleted file mode 100644 index 220c55826e1..00000000000 --- a/projects/bitu/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { request, gql } = require("graphql-request"); -const BigNumber = require("bignumber.js"); -const { sumUnknownTokens } = require("../helper/unknownTokens"); - -const graphUrl = "https://api.studio.thegraph.com/query/70783/bitu-protocol/version/latest"; -const graphQuery = gql` - query GET_COLLAERTAL_ASSETS { - collateralAssets(first: 100) { - id - symbol - name - decimals - totalValueLocked - bituLiquidated - } - } -`; - -const USDT = ADDRESSES.bsc.USDT; - -module.exports = { - bsc: { - tvl: async (api) => { - const { collateralAssets } = await request(graphUrl, graphQuery); - - let liquidated = new BigNumber(0); - - for (const item of collateralAssets) { - if (item.id.toLocaleLowerCase() !== USDT.toLocaleLowerCase()) liquidated = liquidated.plus(item.bituLiquidated); - } - - const nativeToken = collateralAssets.find((p) => p.id === ADDRESSES.GAS_TOKEN_2); - - const erc20Tokens = collateralAssets - .filter((p) => p.id !== ADDRESSES.GAS_TOKEN_2) - .map((p) => { - if (p.id.toLocaleLowerCase() === USDT.toLocaleLowerCase()) { - p.totalValueLocked = liquidated.plus(p.totalValueLocked).multipliedBy(Math.pow(10, p.decimals)).toString(); - } else { - p.totalValueLocked = new BigNumber(p.totalValueLocked).multipliedBy(Math.pow(10, p.decimals)).toString(); - } - - return p; - }); - api.addTokens( - erc20Tokens.map((p) => p.id), - erc20Tokens.map((p) => p.totalValueLocked) - ); - if (nativeToken) { - api.add("coingecko:binancecoin", parseInt(nativeToken.totalValueLocked), { skipChain: true }); - } - }, - }, -}; diff --git a/projects/bitunix-cex/index.js b/projects/bitunix-cex/index.js deleted file mode 100644 index 0df5d0f0731..00000000000 --- a/projects/bitunix-cex/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - "0x76B0aB5067B3be922ef4698390Ca8bd5812A5080" - ], - }, - bitcoin: { - owners: bitcoinAddressBook.bitunixCex, - }, - tron: { - owners: [ - "TJwMqVoy8kAtrC1GLqRuoDqPYCsbaxZzw4", - "TA2EWrSzZHsDBn3d8j4m9f2nbHds2cSNYb", - "TNuHnKVFW3kahz3Xe6EyHJiTm9GBtg2aGD", - "TMiru9N4RffN3e7oT1HGk8cN6WizmL4ijP", - "TDpDGvfxtEdq7EHyHThYtSuL9tAEZSnjv7", - "TPssYpQm3tFzQNvCSVkeTrx4cFft43Ln2J", - "TDzTcjvucTPgZqaVjTct65AyFxP7DnLEjY", - "TE9oPgFeo3qz3152e2GNfKEdEs3UF42jTF", - "TYVAHVXixkL2dnaPfyjZz6J7hF6J4WW3Qx", - "TCxBM3QPZCebzCuXtzzBA7Vet5mCcruHdN", - "TLnMjGrgWTZLadqNRzbQPTzDPWbH6Dc1HA", - "TRcvGsNpzkm8LdhLYmqBWESRrTUv7BPQ8t", - "TWJ6R2EbFC5KdZFwLNj9GDiENn7WyAUjQE", - 'TJqCunxn9xYtnXtP8v5t54W7uR2huUbFvS', - 'THY84dJ4EPsPddwJP2URsqkDzHwVB9uk48', - 'TQTn7XQmZ9p2jToTV2rPbrVLZSftaZjK9y', - 'TLvpkJy9cn695PZLU2fEKYbfVDDpUymZvR', - 'TGmri3M7L5bhMVZdEViUX9tdARpJ4ANdNb', - 'TQTgNHaHLPEcCsvfFciriXLvQDktWNQ7yM', - 'TVaRQRPJh3MT3AfGLVZuaTdJL8nd176tpB', - 'TXP66hCnRzRP4ZNbQcNSWcBV4C5JnHK51F', - 'TP5UzNzk4tL2Jo6twHavUM9s9NjUPSgrvN', - 'TJRkfdgdQTSTmfQQzFy8RR6o73eLCEorSH', - 'TSuAmGTDB9oowddNqg9Gm2rAmKztF9jhU4', - 'TKXvBz4TmLMY5o1rirHndusiVT5Lj4i75E', - 'TTXc32nXdJMTkWakntMLZS88HUUjn1u4Ev', - 'TKmiqjVG9jvYd9atx5qwhTRdQBf6rETsSg' - ], - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/bitusd/index.js b/projects/bitusd/index.js deleted file mode 100644 index 52b68b9f151..00000000000 --- a/projects/bitusd/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const wstRose = "0x3cAbbe76Ea8B4e7a2c0a69812CBe671800379eC8"; -const mtBill = "0xDD629E5241CbC5919847783e6C96B2De4754e438"; - -module.exports = { - start: '2024-11-30', - sapphire: { - tvl: sumTokensExport({ - owners: ['0x9be6f065aFC34ca99e82af0f0BfB9a01E3f919eE', - '0x57D51c99b7EB39c978c9E4493D74Ea79495999b0', - '0x4E77238627F1D2516eb05ec0b0B38f86905d60bc', - '0x6467b1de26Ef56b9b8B15Ed639e3A89D5226921E', - '0x8022Ca13D04B92ad0d68537d4a9305Acd48d7216', - '0xBE21F6554344E916fd6E0fa66A07f5613F51BDc8', - '0x53C8915a1A7dFed4768541362Bfa4b2209D0aee4'], - tokens: [nullAddress, - wstRose, - mtBill] - }), - }, -} diff --git a/projects/bitvenus/index.js b/projects/bitvenus/index.js deleted file mode 100644 index 43cc471a90c..00000000000 --- a/projects/bitvenus/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - // '0xe43c53c466a282773f204df0b0a58fb6f6a88633', Old wallets - // '0x2b097741854eedeb9e5c3ef9d221fb403d8d8609', Old wallets - // '0x686b9202a36c09ce8aba8b49ae5f75707edec5fe', Old wallets - // '0xef7a2610a7c9cfb2537d68916b6a87fea8acfec3', Old wallets - '0x5631aa1fc1868703a962e2fd713dc02cad07c1db', - '0x4785e47ae7061632c2782384da28b9f68a5647a3', - '0x25Ee4Ce905Da85df8620cB82884adDf96A14498A', - '0xE1E5F8caCc6B9Ace0894Fe7ba467328587e60bE7', - '0xb8001c3ec9aa1985f6c747e25c28324e4a361ec1' //cobo wallet - ], - }, - bitcoin: { - owners: bitcoinAddressBook.bitvenus - }, - bsc: { - owners: [ - // '0xef7a2610a7c9cfb2537d68916b6a87fea8acfec3', - '0x4785e47aE7061632C2782384DA28B9F68a5647a3' - ] - }, - tron: { - owners: [ - 'TPbExxiw99nMsDfWVjaweSPkMVQfZSVVZj', - 'TSM8m5ADsMRySsWy7d4REX7FBXusMQCi6y' - ] - } -} - -module.exports = cexExports(config) -module.exports.methodology = 'This wallets where provide by BitVenus team on the 07/02/2023. *On the 14/07/2023 BitVenus team provided new wallets. A new wallet was provide on the 15/12/2023 by bitvenus team' \ No newline at end of file diff --git a/projects/bitzap-yusd/index.js b/projects/bitzap-yusd/index.js deleted file mode 100644 index 85981a84c84..00000000000 --- a/projects/bitzap-yusd/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const controller = '0x487e869353977411142de3a776bc2cd9f3197164' - -const abis = { - nLoans: 'function n_loans() view returns (uint256)', - loans: 'function loans(uint256 arg0) view returns (address)', - userState: 'function user_state(address user) view returns (uint256[4])' -} - -const tvl = async (api) => { - const users = await api.fetchList({ target: controller, itemAbi: abis.loans, lengthAbi: abis.nLoans }) - const userInfos = await api.multiCall({ calls: users.map((user) => ({ target: controller, params: [user] })), abi: abis.userState }) - userInfos.forEach(([coll]) => { api.add(`ethereum:${ADDRESSES.ethereum.WBTC}`, coll / 1e10, { skipChain: true })}) -} - -module.exports = { - btr: { tvl } -} diff --git a/projects/bitzap/index.js b/projects/bitzap/index.js deleted file mode 100644 index 7813e057381..00000000000 --- a/projects/bitzap/index.js +++ /dev/null @@ -1,16 +0,0 @@ - -const config = { - btr: { factory: '0xe4fb0d76c7ba28dd4d115ff63c0b14d8d7f9838a', }, -} - -Object.keys(config).forEach(chain => { - const { factory, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const pools = await api.fetchList({ lengthAbi: 'pool_count', itemAbi: 'pool_list', target: factory }) - const tokens = await api.multiCall({ abi: 'function get_coins(address) view returns (address[])', calls: pools, target: factory }) - const ownerTokens = pools.map((p, i) => [tokens[i], p]) - return api.sumTokens({ ownerTokens, blacklistedTokens: pools }) - } - } -}) \ No newline at end of file diff --git a/projects/bitzy/index.js b/projects/bitzy/index.js deleted file mode 100644 index cd0a50323c4..00000000000 --- a/projects/bitzy/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -const { uniV3Export } = require("../helper/uniswapV3"); -const sdk = require('@defillama/sdk'); - -const tvlV2 = uniTvlExports({ - btnx: '0xDF2CA43f59fd92874e6C1ef887f7E14cb1f354dD' -}) - -const tvlV3 = uniV3Export({ - btnx: { factory: "0xa8C00286d8d37131c1d033dEeE2F754148932800", fromBlock: 186643, }, -}) - -module.exports = { - btnx: { - tvl: sdk.util.sumChainTvls([ - tvlV2.btnx.tvl, - tvlV3.btnx.tvl - ]), - }, -}; \ No newline at end of file diff --git a/projects/black-whale/index.js b/projects/black-whale/index.js deleted file mode 100644 index 6fcf87f111b..00000000000 --- a/projects/black-whale/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens, endPoints, queryContracts } = require('../helper/chain/cosmos') - -async function tvl() { - return sumTokens({ owners: await queryContracts({ codeId: 21, chain: 'kujira' }), chain: 'kujira' }) -} - -module.exports = { - kujira: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/blackbird-finance/index.js b/projects/blackbird-finance/index.js deleted file mode 100644 index 4f928392c37..00000000000 --- a/projects/blackbird-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'cronos', - masterchef: '0xDF937094C6f2B757Dfd1265e5e1550Ea0055b27A', - nativeToken: '0x9A3d8759174f2540985aC83D957c8772293F8646', -}) \ No newline at end of file diff --git a/projects/blackgoat-finance/index.js b/projects/blackgoat-finance/index.js deleted file mode 100644 index a1cc096e979..00000000000 --- a/projects/blackgoat-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const token = "0xa9351B9Bf071a95bEFDAa1e76267919A7214b922"; -const masterChef = "0x46ba4eF20f78e881A8219E5368107181617afB50"; - -module.exports = { - ...masterChefExports(masterChef, "fantom", token, false) -} \ No newline at end of file diff --git a/projects/blackhole-CL/index.js b/projects/blackhole-CL/index.js deleted file mode 100644 index 785183e3f2f..00000000000 --- a/projects/blackhole-CL/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const config = { - avax: { factory: '0x512eb749541B7cf294be882D636218c84a5e9E5F', }, -} - -Object.keys(config).forEach(chain => { - const { factory, } = config[chain] - module.exports[chain] = { tvl } - - async function tvl(api) { - const pools = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: factory }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - const tokensAndOwners2 = [token0s.concat(token1s), pools.concat(pools)] - return api.sumTokens({ tokensAndOwners2, }) - } -}) \ No newline at end of file diff --git a/projects/blackhole/index.js b/projects/blackhole/index.js deleted file mode 100644 index 6479de792ab..00000000000 --- a/projects/blackhole/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - 'avax': '0xfE926062Fb99CA5653080d6C14fE945Ad68c265C' -}, { hasStablePools: true, }) \ No newline at end of file diff --git a/projects/blackpanther/index.js b/projects/blackpanther/index.js deleted file mode 100644 index da3f48abdb2..00000000000 --- a/projects/blackpanther/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const axios = require('axios') -const { queryContract: queryContractCosmos } = require("../helper/chain/cosmos"); - -const URL = "https://blackpanther.fi/mainnet/api/vaults" - -const tvl = async (api) => { - const { data } = await axios.get(URL) - const vaults = data.map((d) => d.vault_address) - for (const vault of vaults) { - const { asset } = await queryContractCosmos({ chain: api.chain, contract: vault, data: { total_vault: {} } }); - asset.forEach(({ info, amount }) => { - api.add(info.native_token.denom, amount) - }) - } -} - -module.exports = { - timetravel: false, - injective: { tvl } -} \ No newline at end of file diff --git a/projects/blackpool.js b/projects/blackpool.js deleted file mode 100644 index 4cd060fc108..00000000000 --- a/projects/blackpool.js +++ /dev/null @@ -1,48 +0,0 @@ -const sdk = require("@defillama/sdk") -const { sumTokens2 } = require("./helper/unwrapLPs"); - -// STAKING = xBPT staking on mainnet + LP staking on mainnet + LP staking on polygon/cometh -// xBPT staking on mainnet -const BPT_mainnet = '0x0eC9F76202a7061eB9b3a7D6B59D36215A7e37da' -const xBPT_mainnet = '0x46c5098f73fa656e82d7e9afbf3c00b32b7b1ee2' - -// LP tokens staked on sushiswap (mainnet against weth) -const sushiMasterchef = "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd" -const BPT_WETH_LP_mainnet_sushi = '0x57024267e8272618f9c5037d373043a8646507e5' - -// LP tokens staked on polygon (cometh against weth and must) -const BPT_polygon = '0x6863BD30C9e313B264657B107352bA246F8Af8e0' -const BPT_WETH_LP_cometh = '0x1f2f74bf3478ab4614e002cad1c67d3a84a5c2bd' -const BPT_MUST_LP_cometh = '0xc8978a3de5ce54e1a2fe88d2036e2cc972238126' -const BPT_WETH_LP_staking = '0xe3ae080d6a4f1ac5ababf514f871428342135877' -const BPT_MUST_LP_staking = '0xe29544a8145978a2355e44fbac61f4748f0ecca6' - -async function mainnetStaking(api) { - return api.sumTokens({ - tokensAndOwners: [ - [BPT_mainnet, xBPT_mainnet], - [BPT_WETH_LP_mainnet_sushi, sushiMasterchef] - ], - }) -} - -async function polygonStaking(api) { - return sumTokens2({ api, resolveLP: true, - tokensAndOwners: [ - [BPT_WETH_LP_cometh, BPT_WETH_LP_staking], - [BPT_MUST_LP_cometh, BPT_MUST_LP_staking] - ], - }) -} - -module.exports = { - methodology: "TVL of BlackPool corresponds to staking which consists of xBPT staking on mainnet + LP staking on mainnet/sushiswap (BPT/WETH in masterchef) + LP staking on polygon/cometh (BPT/WETH + BPT/MUST)", - ethereum: { - staking: mainnetStaking, - tvl: () => ({}) - }, - polygon: { - staking: polygonStaking, - tvl: () => ({}) - }, -} diff --git a/projects/blackrock-fund/index.js b/projects/blackrock-fund/index.js deleted file mode 100644 index 7f9497e3071..00000000000 --- a/projects/blackrock-fund/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { pool2 } = require('../helper/pool2') -const BTC_TOKEN_CONTRACT = '0xbD6323A83b613F668687014E8A5852079494fB68'; -const ABTC_TOKEN_CONTRACT = '0xa709aaD0691Fc67279577566640ae1D6515c1b81'; -const LP_TOKEN_CONTRACT = '0x4b398fCd7841412610b653B34E89c9b19a42EbFc'; -const BTC_STAKING_CONTRACT = '0x1FDe0d2F44539789256D94D1784a86bF77D66DD0'; -const LP_STAKING_CONTRACT = '0x1e4A10d18698E4450E13b4E8EF361a5841850611'; - -async function staking(api) { - const data = (await api.call({ abi: abi.poolInfo, target: BTC_STAKING_CONTRACT, params: 0, })) - api.add(data.lpToken, data.totalToken); - api.add(BTC_TOKEN_CONTRACT, await api.call({ abi: 'erc20:totalSupply', target: ABTC_TOKEN_CONTRACT, })); - return api.getBalances() -} - -module.exports = { - ethereum: { - tvl: () => ({}), - staking, - pool2: pool2(LP_STAKING_CONTRACT, LP_TOKEN_CONTRACT) - } -}; - -const abi = { - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 totalToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accBTCPerShare, uint256 accUSDCPerShare)" -} \ No newline at end of file diff --git a/projects/blacksail/index.js b/projects/blacksail/index.js deleted file mode 100644 index cf321e5d89d..00000000000 --- a/projects/blacksail/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { get } = require('../helper/http') -const { getEnv } = require('../helper/env') -const { sumUnknownTokens } = require('../helper/unknownTokens') - -async function fetcher() { - const { data: { yield }} = await get('https://api.blacksail.finance/stats', { - headers: { - 'x-api-key': getEnv('BLACKSAIL_API_KEY'), - 'Content-Type': 'application/json' - } - }); - return Object.values(yield).map((i) => i.strat_address).filter(i => i) -} - -async function tvl(api) { - let strats = await getConfig('blacksail/strats', undefined, { fetcher }) - strats = (await api.multiCall({ abi: 'address:staking_token', calls: strats, permitFailure: true })).map((v, i) => v ? strats[i] : null).filter(i => i) - const bals = (await api.multiCall({ abi: 'uint256:balanceOf', calls: strats})) - const tokens = await api.multiCall({ abi: 'address:staking_token', calls: strats }) - const symbols = await api.multiCall({ abi: 'string:symbol', calls: tokens }) - const ichiVaults = [] - const ichiBals = [] - tokens.forEach((token, i) => { - if (symbols[i] === 'ICHI_Vault_LP' || symbols[i].startsWith('IV-SWAPX') ) { - ichiVaults.push(token) - ichiBals.push(bals[i]) - } else - api.add(token, bals[i]) - }) - - // resolve ichi vaults - const iSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: ichiVaults }) - const iToken0s = await api.multiCall({ abi: 'address:token0', calls: ichiVaults }) - const iToken1s = await api.multiCall({ abi: 'address:token1', calls: ichiVaults }) - const iTokenBals = await api.multiCall({ abi: 'function getTotalAmounts() view returns (uint256 bal1, uint256 bal2)', calls: ichiVaults }) - - iSupplies.map((_, i) => { - const token0 = iToken0s[i] - const token1 = iToken1s[i] - const ratio = ichiBals[i] / iSupplies[i] - api.add(token0, iTokenBals[i].bal1 * ratio) - api.add(token1, iTokenBals[i].bal2 * ratio) - }) - - return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: tokens.filter((_, i) => symbols[i].startsWith('v-')), resolveLP: true, allLps: true, }) -} - -module.exports = { - sonic: { - tvl, - } -} \ No newline at end of file diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js deleted file mode 100644 index 78e16664869..00000000000 --- a/projects/blackwing/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const BLACKWING_VAULT_ARBITRUM = '0xc6aDE8A68026d582AB37B879D188caF7e405dD09' -const BLACKWING_VAULT_ETH = '0xc6aDE8A68026d582AB37B879D188caF7e405dD09' -const BLACKWING_VAULT_BSC = '0xD00789260984160a64DcF19A03896DfF73BF4514' - -const ARBITRUM_WEETH = ADDRESSES.arbitrum.weETH; -const ARBITRUM_EZETH = ADDRESSES.blast.ezETH; - -const ARBITRUM_PT_RSETH_27JUN2024 = "0xafd22f824d51fb7eed4778d303d4388ac644b026"; -const ARBITRUM_PT_WEETH_27JUN2024 = "0x1c27ad8a19ba026adabd615f6bc77158130cfbe4"; -const ARBITRUM_PT_EZETH_27JUNE2024 = "0x8ea5040d423410f1fdc363379af88e1db5ea1c34"; - -const ETHEREUM_MAINNET_RSWETH = '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0'; -const ETHEREUM_MAINNET_RSETH = "0xa1290d69c65a6fe4df752f95823fae25cb99e5a7"; -const ETHEREUM_MAINNET_WEETH = ADDRESSES.ethereum.WEETH; -const ETHEREUM_MAINNET_EZETH = ADDRESSES.linea.rzETH; - -const ETHEREUM_MAINNET_PENDLE_RSWETH_27JUN2024 = "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa"; -const ETHEREUM_MAINNET_PT_EZETH_26DEC2024 = "0xf7906f274c174a52d444175729e3fa98f9bde285"; -const ETHEREUM_MAINNET_PT_RSETH_27JUN2024 = "0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e"; -const ETHEREUM_MAINNET_PT_USDE_25JUL2024 = "0xa0021ef8970104c2d008f38d92f115ad56a9b8e1"; -const ETHEREUM_MAINNET_PT_ENA_29AUG2024 = "0x9946c55a34cd105f1e0cf815025eaecff7356487"; -const ETHEREUM_MAINNET_PT_RSWETH_27JUN2024 = "0x5cb12d56f5346a016dbba8ca90635d82e6d1bcea"; -const ETHEREUM_MAINNET_PT_SUSDE_25JUL2024 = "0xd810362556296c834e30c9a61d8e21a5cf29eab4"; -const ETHEREUM_MAINNET_PT_WEETH_26DEC2024 = "0x6ee2b5e19ecba773a352e5b21415dc419a700d1d"; -const ETHEREUM_MAINNET_PT_WEETH_27JUN2024 = "0xc69ad9bab1dee23f4605a82b3354f8e40d1e5966"; - -const ETHEREUM_MAINNET_SHIB_ADDRESS = ADDRESSES.ethereum.INU; -const ETHEREUM_MAINNET_PEPE_ADDRESS = "0x6982508145454Ce325dDbE47a25d4ec3d2311933"; -const ETHEREUM_MAINNET_EGETH_ADDRESS = "0x18f313Fc6Afc9b5FD6f0908c1b3D476E3feA1DD9"; -const ETHEREUM_MAINNET_PUFETH_ADDRESS = "0xD9A442856C234a39a81a089C06451EBAa4306a72"; -const ETHEREUM_MAINNET_MSTETH_ADDRESS = "0x49446A0874197839D15395B908328a74ccc96Bc0"; -const ETHEREUM_MAINNET_APXETH_ADDRESS = "0x9Ba021B0a9b958B5E75cE9f6dff97C7eE52cb3E6"; -const ETHEREUM_MAINNET_MSWETH_ADDRESS = "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678"; - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ tokens: [ - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.WETH, - ARBITRUM_EZETH, - ARBITRUM_WEETH, - ARBITRUM_PT_RSETH_27JUN2024, - ARBITRUM_PT_WEETH_27JUN2024, - ARBITRUM_PT_EZETH_27JUNE2024, - ], - owner: BLACKWING_VAULT_ARBITRUM, fetchCoValentTokens: true, }), - }, - ethereum: { - tvl: sumTokensExport({ - tokens: [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - ETHEREUM_MAINNET_RSWETH, - ETHEREUM_MAINNET_RSETH, - ETHEREUM_MAINNET_EZETH, - ADDRESSES.ethereum.EETH, - ETHEREUM_MAINNET_WEETH, - ADDRESSES.ethereum.sUSDe, - ETHEREUM_MAINNET_PENDLE_RSWETH_27JUN2024, - ETHEREUM_MAINNET_PT_EZETH_26DEC2024, - ETHEREUM_MAINNET_PT_RSETH_27JUN2024, - ETHEREUM_MAINNET_PT_USDE_25JUL2024, - ETHEREUM_MAINNET_PT_ENA_29AUG2024, - ETHEREUM_MAINNET_PT_RSWETH_27JUN2024, - ETHEREUM_MAINNET_PT_SUSDE_25JUL2024, - ETHEREUM_MAINNET_PT_WEETH_26DEC2024, - ETHEREUM_MAINNET_PT_WEETH_27JUN2024, - ETHEREUM_MAINNET_SHIB_ADDRESS, - ETHEREUM_MAINNET_PEPE_ADDRESS, - ETHEREUM_MAINNET_EGETH_ADDRESS, - ETHEREUM_MAINNET_PUFETH_ADDRESS, - ETHEREUM_MAINNET_MSTETH_ADDRESS, - ETHEREUM_MAINNET_APXETH_ADDRESS, - ETHEREUM_MAINNET_MSWETH_ADDRESS - ], owner: BLACKWING_VAULT_ETH, fetchCoValentTokens: true, - }) - }, - bsc: { - tvl: sumTokensExport({ - tokens: [ - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.WBNB - ], - owner: BLACKWING_VAULT_BSC, fetchCoValentTokens: true, - }) - } -} diff --git a/projects/bladeswap-CL/index.js b/projects/bladeswap-CL/index.js deleted file mode 100644 index b5dec6bc44a..00000000000 --- a/projects/bladeswap-CL/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - blast: { - factory: "0xA87DbF5082Af26c9A6Ab2B854E378f704638CCa5", - fromBlock: 4466565, - isAlgebra: true, - blacklistedTokens: [ - '0xD1FedD031b92f50a50c05E2C45aF1aDb4CEa82f4', - '0xF8f2ab7C84CDB6CCaF1F699eB54Ba30C36B95d85', - ] - - }, -}); diff --git a/projects/bladeswap/index.js b/projects/bladeswap/index.js deleted file mode 100644 index 338edac24da..00000000000 --- a/projects/bladeswap/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - blast: { - factory: '0xce54aB6c79c259BBdB8f4BAbEa97F05F225E376F', vault: '0x10F6b147D51f7578F760065DF7f174c3bc95382c', blacklistedTokens: [ - '0xD1FedD031b92f50a50c05E2C45aF1aDb4CEa82f4', - '0xF8f2ab7C84CDB6CCaF1F699eB54Ba30C36B95d85', - ], - }, -} - -module.exports = { - methodology: "counts tokens in the vault.", -}; - -const cannonicalPoolsAbi = "function canonicalPools(address user, uint256 begin, uint256 maxLength) returns (tuple(address gauge, tuple(address pool, string poolType, bytes32[] lpTokens, uint256[] mintedLPTokens, bytes32[] listedTokens, uint256[] reserves, int256 logYield, bytes poolParams) poolData, bool killed, uint256 totalVotes, uint256 userVotes, uint256 userClaimable, uint256 emissionRate, uint256 userEmissionRate, uint256 stakedValueInHubToken, uint256 userStakedValueInHubToken, uint256 averageInterestRatePerSecond, uint256 userInterestRatePerSecond, bytes32[] stakeableTokens, uint256[] stakedAmounts, uint256[] userStakedAmounts, bytes32[] underlyingTokens, uint256[] stakedUnderlying, uint256[] userUnderlying, tuple(bytes32[] tokens, uint256[] rates, uint256[] userClaimable, uint256[] userRates)[] bribes)[] gaugeDataArray)" - -Object.keys(config).forEach(chain => { - const { factory, blacklistedTokens, vault, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let a - - let size = 20 - a = [] - let currentAsize - do { - currentAsize = a.length - const b = await api.call({ - abi: cannonicalPoolsAbi, - target: factory, - params: [factory, a.length, size] - }) - a = a.concat(b) - } while (currentAsize < a.length) - const b = await api.call({ - abi: "function wombatGauges(address user) returns (tuple(address gauge, tuple(address pool, string poolType, bytes32[] lpTokens, uint256[] mintedLPTokens, bytes32[] listedTokens, uint256[] reserves, int256 logYield, bytes poolParams) poolData, bool killed, uint256 totalVotes, uint256 userVotes, uint256 userClaimable, uint256 emissionRate, uint256 userEmissionRate, uint256 stakedValueInHubToken, uint256 userStakedValueInHubToken, uint256 averageInterestRatePerSecond, uint256 userInterestRatePerSecond, bytes32[] stakeableTokens, uint256[] stakedAmounts, uint256[] userStakedAmounts, bytes32[] underlyingTokens, uint256[] stakedUnderlying, uint256[] userUnderlying, tuple(bytes32[] tokens, uint256[] rates, uint256[] userClaimable, uint256[] userRates)[] bribes)[] gaugeDataArray)", - target: factory, - params: [factory] - }); - let tokens = a.concat(b).map(g => g.poolData.listedTokens).flat().map(i => '0x' + i.slice(2 + 24)) - return sumTokens2({ owner: vault, tokens, api, blacklistedTokens, }) - } - } -}) diff --git a/projects/blaspace/index.js b/projects/blaspace/index.js deleted file mode 100644 index 0e20eac4850..00000000000 --- a/projects/blaspace/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - blast: { - tvl: getUniTVL({ - factory: '0xCAb98fEd113d403EbD9E294D80Bf92E3f19ddD57', - useDefaultCoreAssets: true, - }) - }, -}; diff --git a/projects/blast-bridge/index.js b/projects/blast-bridge/index.js deleted file mode 100644 index 6a36c4d02f4..00000000000 --- a/projects/blast-bridge/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json'); - -module.exports = { - ethereum: { - tvl: async (api) =>{ - const balances = { - [ADDRESSES.ethereum.DAI]: await api.call({target: "0xa230285d5683c74935ad14c446e137c8c8828438", abi:"uint:totalValue"}) - }; - return sumTokens2({ - balances, - api, - owners: [ - "0xa230285d5683C74935aD14c446e137c8c8828438", - "0x98078db053902644191f93988341E31289E1C8FE", - "0x5F6AE08B8AeB7078cf2F96AFb089D7c9f51DA47d", - ], - fetchCoValentTokens: true, - }) - }, - }, -}; diff --git a/projects/blast/index.js b/projects/blast/index.js deleted file mode 100644 index 51cfcd86268..00000000000 --- a/projects/blast/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens } = require('../helper/sumTokens'); -const { nullAddress } = require("../helper/treasury"); - -const farm = "0x5f6ae08b8aeb7078cf2f96afb089d7c9f51da47d"; - -async function tvl(api) { - const dsr = await api.call({ - target: "0x373238337bfe1146fb49989fc222523f83081ddb", - abi: "function pieOf(address) external view returns (int256)", - params: [farm] - }) - const balances = { - [ADDRESSES.ethereum.DAI]: dsr - } - await sumTokens({ - api, - balances, - owners: [farm], - tokens: [ADDRESSES.ethereum.STETH, ADDRESSES.ethereum.DAI, nullAddress] - }) - return balances -} - -module.exports = { - ethereum: { tvl } -} diff --git a/projects/blastdex/index.js b/projects/blastdex/index.js deleted file mode 100644 index 05df68c74c7..00000000000 --- a/projects/blastdex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - - blast: { - tvl: getUniTVL({ - factory: "0x66346aac17d0e61156AC5F2A934ccF2a9BDe4c65", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/blasterswap-v2/index.js b/projects/blasterswap-v2/index.js deleted file mode 100644 index f6287ad59af..00000000000 --- a/projects/blasterswap-v2/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport("blast", "0x9CC1599D4378Ea41d444642D18AA9Be44f709ffD") diff --git a/projects/blasterswap-v3/index.js b/projects/blasterswap-v3/index.js deleted file mode 100644 index 77a36a9ff5c..00000000000 --- a/projects/blasterswap-v3/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ blast: { factory: "0x1A8027625C830aAC43aD82a3f7cD6D5fdCE89d78", fromBlock: 4308657, }, }) \ No newline at end of file diff --git a/projects/blasterswap-vaults/index.js b/projects/blasterswap-vaults/index.js deleted file mode 100644 index 80d01bcd8ee..00000000000 --- a/projects/blasterswap-vaults/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking.js"); - -const vaults = ['0xC52fb7E613e401a0195C2fdB369618580D58C91D', '0x013249266842e078999088807033D80531A84260']; -const tokens = ['0xd43D8aDAC6A4C7d9Aeece7c3151FcA8f23752cf8', '0x5ffd9EbD27f2fcAB044c0f0a26A45Cb62fa29c06']; - -module.exports = { - blast: { - tvl: staking('0x0464a36beCf9967111D2dCAb57CAf4a2376f6E3F', ADDRESSES.blast.BLAST), - staking: staking(vaults, tokens) - }, -} diff --git a/projects/blastex/index.js b/projects/blastex/index.js deleted file mode 100644 index 90a9abd540f..00000000000 --- a/projects/blastex/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') - -const main = '0x8C1DBB14c012bCCdB3477bc1625A3DCfD0F61ac2' -const token = '0x5C598E410De1214D77EBB166102471065E7b2596' -const lps = ['0xdaE375F817B465f3a226284Af0Ad5Fa2387274EA'] - -module.exports = { - blast: { - tvl: () => ({}), - pool2: sumTokensExport({ owner: main, tokens: lps, useDefaultCoreAssets: true }), - staking: sumTokensExport({ owner: main, tokens: [token], lps, useDefaultCoreAssets: true, }) - }, -}; diff --git a/projects/blastfutures/index.js b/projects/blastfutures/index.js deleted file mode 100644 index 08bda7642f6..00000000000 --- a/projects/blastfutures/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -module.exports = { - blast: { - // tvl: sumTokensExport({ owner: '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]}), - // staking: staking('0x67dBA61709D78806395acDBa3EF9Df686aF5dc24', '0x236bb48fcF61ce996B2C8C196a9258c176100c7d'), - tvl: () => ({}) // moved to rabbitx - }, -} diff --git a/projects/blastname/index.js b/projects/blastname/index.js deleted file mode 100644 index 7ffd2f20d99..00000000000 --- a/projects/blastname/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens') - -const BNSPoolAddr = '0xb5510aB65418d53961A9fd32A8E6343f942E20Aa' -const BWETHAddr = '0x9d5d8Ca81FF96b676603a69282290c0D957C7060' - -const BNDUSDBAddr = '0x389daCE33EF8a7E020196F388cF107A881799872' -const BNSUSDBAddr = '0xdD9B243A18Fb4e46AefFa26D42797f0Be9F9AfC8' -const BNDJUICEAddr = '0x44EA24695ECB6c09C3aB756224757a5D68707618' -const BNDBNSAddr = '0xb6851BF01D81be84d13e92aDFE6F64A7D02A643f' - -module.exports = { - blast: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.blast.WETH, BNSPoolAddr], - [ADDRESSES.blast.USDB, BNSPoolAddr], - [ADDRESSES.blast.WETH, BWETHAddr], - ] - }), - pool2: sumTokensExport({ - tokensAndOwners: [ - [BNDUSDBAddr, BNSPoolAddr], - [BNSUSDBAddr, BNSPoolAddr], - [BNDJUICEAddr, BNSPoolAddr], - [BNDBNSAddr, BNSPoolAddr], - ], useDefaultCoreAssets: true, - }), - } -} diff --git a/projects/blastoff/index.js b/projects/blastoff/index.js deleted file mode 100644 index 3a253451e7e..00000000000 --- a/projects/blastoff/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -const LOCKED_STAKING = "0xd95773e5b1eedc7ff302a70acd0eb370927397d2"; -const NONLOCK_STAKING = "0xd9747a98624f0B64B4412632C420672E16432334"; - -module.exports = { - blast: { - tvl: sumTokensExport({ owners: [LOCKED_STAKING, NONLOCK_STAKING], tokens: [ADDRESSES.null, ADDRESSES.blast.USDB] }), - staking: staking('0xC9B6c67af496E92F64b1C136B3FaD15e3b02cbb4', '0xD55eDfc79c0d14084260D16f38BdA75e28AbFb6A') - }, - methodology: "counts the amount of USDB and ETH locked in 2 staking contracts", -}; diff --git a/projects/blastup/index.js b/projects/blastup/index.js deleted file mode 100644 index 916a4b5be3c..00000000000 --- a/projects/blastup/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { staking } = require("../helper/staking"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const stakingpool = "0x0E84461a00C661A18e00Cab8888d146FDe10Da8D"; - -const blastup = "0x59c159e5a4f4d1c86f7abdc94b7907b7473477f6"; -const lockedBlastup = "0xf8a5d147a3a3416ab151758d969eff15c27ab743"; -const stakingContracts = [ - "0x115ebda9489cf250ff0e8ea9f473c96c222a874c", // LockedBlastUPStaking 6% - "0x2e36e05e7ecd36164ada93752a9a82c1efaa9582", // LockedBlastUPStaking 12% - "0xf399110e921d25dd1ad6a0eef020991df3dd0cd3", // LockedBlastUPStaking 18% - "0xb0d7902685a4f4d916a21a0ed721298d590cd9cd", // BlastUPStaking 6% - "0x520bf8e72f9e808102eb421fb03764624d1984e9", // BlastUPStaking 12% - "0xc3524c6fdce9e60c1a1ddce54953973264097542", // BlastUPStaking 18% -] - -module.exports = { - blast: { - tvl: staking([stakingpool], [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]), - staking: staking(stakingContracts, [blastup, lockedBlastup]), - }, - hallmarks: [ - [1717575654, "IDO Farming Launch"], - ], -} \ No newline at end of file diff --git a/projects/blazestake/index.js b/projects/blazestake/index.js deleted file mode 100644 index f5d6c792089..00000000000 --- a/projects/blazestake/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getStakedSol } = require("../helper/solana") - -async function tvl(api) { - // https://stake-docs.solblaze.org/developers/addresses - await getStakedSol('6WecYymEARvjG5ZyqkrVQ6YkhPfujNzWpSPwNKXHCbV2', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - }, -}; diff --git a/projects/blazeswap-io/index.js b/projects/blazeswap-io/index.js deleted file mode 100644 index 0be5850349b..00000000000 --- a/projects/blazeswap-io/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getFactoryTvl } = require("../terraswap/factoryTvl"); - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - xion: { - tvl: getFactoryTvl( - "xion16xry9c286uq7dl9qcn6xn7j4gpr5ds4aryk5tzna6xmz203kvpnqda3hya", - ), - }, -}; diff --git a/projects/blazeswap/index.js b/projects/blazeswap/index.js deleted file mode 100644 index 2683d0e3b31..00000000000 --- a/projects/blazeswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - songbird: { - tvl: getUniTVL({ factory: '0x875b815a1D1b12a6fee3c068a7c43F80e4a50234', useDefaultCoreAssets: true, }), - }, - flare: { - tvl: getUniTVL({ factory: '0x440602f459D7Dd500a74528003e6A20A46d6e2A6', useDefaultCoreAssets: true, }), - }, -} \ No newline at end of file diff --git a/projects/blend-backstop-v2/index.js b/projects/blend-backstop-v2/index.js deleted file mode 100644 index 2887e84ada5..00000000000 --- a/projects/blend-backstop-v2/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { stellar } = require("../helper/chain/rpcProxy"); - -const BACKSTOP_ID = "CAQQR5SWBXKIGZKPBZDH3KM5GQ5GUTPKB7JAFCINLZBC5WXPJKRG3IM7"; -async function tvl() { - return stellar.blendBackstopTvl(BACKSTOP_ID) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: false, - methodology: `Counts the total amount of BLND-USDC LP shares held by the Blend V2 backstop contract.`, - stellar: { - tvl: () => ({}), - pool2: tvl - }, -}; \ No newline at end of file diff --git a/projects/blend-backstop/index.js b/projects/blend-backstop/index.js deleted file mode 100644 index 4d6a2106cad..00000000000 --- a/projects/blend-backstop/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { stellar } = require("../helper/chain/rpcProxy"); - -const BACKSTOP_ID = "CAO3AGAMZVRMHITL36EJ2VZQWKYRPWMQAPDQD5YEOF3GIF7T44U4JAL3"; -async function tvl() { - return stellar.blendBackstopTvl(BACKSTOP_ID) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: false, - methodology: `Counts the total amount of BLND-USDC LP shares held by the Blend backstop contract.`, - hallmarks: [ - [1745478927, "Calculate TVL using BLND Coin Gecko price instead of approximation via pool weights"], - [1745858101, "Only account for lp tokens held by the backstop contract"], - ], - stellar: { - tvl: () => ({}), - pool2: tvl - }, -}; diff --git a/projects/blend-finance/index.js b/projects/blend-finance/index.js deleted file mode 100644 index e582620c322..00000000000 --- a/projects/blend-finance/index.js +++ /dev/null @@ -1,28 +0,0 @@ - -const { aaveExports } = require('../helper/aave') -const methodologies = require('../helper/methodologies') -//update protocol information - -module.exports = { - methodology: methodologies.lendingMarket, - bevm: aaveExports('bevm', '0x26fb0b1eef8822f8F71a385d2839b6a654cA186a', undefined, ['0x3Eb2Dd6c395B8E6E3ab843858480aC60e9D0f3Bc'], { - v3: true, abis: { - getAllATokens: "function getAllBTokens() view returns (tuple(string symbol, address tokenAddress)[])", - } - }), - occ: aaveExports('occ', '0x58cCCdafe3B0DE4cB94d35F9CcC0680E4199C06B', undefined, ['0xf444a0333DAa67efC5b1C2c0B79F435dd0f652a9'], { - v3: true, abis: { - getAllATokens: "function getAllBTokens() view returns (tuple(string symbol, address tokenAddress)[])", - } - }), - arbitrum: aaveExports('arbitrum', '0xD489a9cc2eF0b990c6a30Ed9AfF6EC63A2765F25', undefined, ['0xBB7cF099BAfc69a30D4f21878F2FE3Ac10e768fA'], { - v3: true, abis: { - getAllATokens: "function getAllBTokens() view returns (tuple(string symbol, address tokenAddress)[])", - } - }), - base: aaveExports('base', '0xD489a9cc2eF0b990c6a30Ed9AfF6EC63A2765F25', undefined, ['0xBB7cF099BAfc69a30D4f21878F2FE3Ac10e768fA'], { - v3: true, abis: { - getAllATokens: "function getAllBTokens() view returns (tuple(string symbol, address tokenAddress)[])", - } - }), -} \ No newline at end of file diff --git a/projects/blend-pools-v2/index.js b/projects/blend-pools-v2/index.js deleted file mode 100644 index 6f1c1ce7b79..00000000000 --- a/projects/blend-pools-v2/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { stellar } = require("../helper/chain/rpcProxy"); -const methodologies = require("../helper/methodologies"); -const BACKSTOP_ID = "CAQQR5SWBXKIGZKPBZDH3KM5GQ5GUTPKB7JAFCINLZBC5WXPJKRG3IM7"; - -async function tvlInfo() { - return stellar.blendPoolInfo(BACKSTOP_ID) -} - -async function tvl() { - return (await tvlInfo()).tvl -} - -async function borrowed() { - return (await tvlInfo()).borrowed -} - -module.exports = { - timetravel: false, - methodology: `${methodologies.lendingMarket}. TVL is calculated and totaled for all Blend V2 pools in the Blend reward zone.`, - stellar: { - tvl, borrowed, - }, -}; diff --git a/projects/blend-pools/index.js b/projects/blend-pools/index.js deleted file mode 100644 index db708d9b7d9..00000000000 --- a/projects/blend-pools/index.js +++ /dev/null @@ -1,24 +0,0 @@ - -const { stellar } = require("../helper/chain/rpcProxy"); -const methodologies = require("../helper/methodologies"); -const BACKSTOP_ID = "CAO3AGAMZVRMHITL36EJ2VZQWKYRPWMQAPDQD5YEOF3GIF7T44U4JAL3"; - -async function tvlInfo() { - return stellar.blendPoolInfo(BACKSTOP_ID) -} - -async function tvl() { - return (await tvlInfo()).tvl -} - -async function borrowed() { - return (await tvlInfo()).borrowed -} - -module.exports = { - timetravel: false, - methodology: `${methodologies.lendingMarket}. TVL is calculated and totaled for all Blend pools in the Blend reward zone.`, - stellar: { - tvl, borrowed, - }, -}; diff --git a/projects/blend/index.js b/projects/blend/index.js deleted file mode 100644 index a89fb9694f8..00000000000 --- a/projects/blend/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults allocated by Blend Protocol.', - blockchains: { - btnx: { - erc4626: [ - '0x9dF5A760820b0C8d6667eDDfc07641E0D0095616', - '0xDF4C4A81e1b55F54E7f084e90b69817bA72821D6' - ], - nestedVaults: [ - '0xEBda86CB77E9e328d42bbba9B50E998d3534937D' - ] - }, - scroll: { - erc4626: [ - '0xd39df22a3cd1C91B22d5E748Cc62b03eD3e8A8aD', - '0xd56d212777d25cb3923B515fe0D12E3fd10081AD' - ], - } - } -} - -module.exports = { - ...getCuratorExport(configs), -} \ No newline at end of file diff --git a/projects/blex/index.js b/projects/blex/index.js deleted file mode 100644 index 71992f714e6..00000000000 --- a/projects/blex/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const contracts = [ - "0x4d377340a2875b875e1C104B9905F74FD716F59e", //CoreVault - "0xbEd96a81f8694947159eD0556B077b35Fa8379a7", //FeeVault - "0x7B173a3A8d562B7Fb99743a3707deF1236935ac5", //ETH market - "0x1e9cbaaa0a7c1F72a8769EA0e3A03e7fB5458925", //BTC market - "0x54c14Fa76eeD09897F09d06580b3add70793CF19", //RewardDistributor -]; - -const tokens = [ADDRESSES.arbitrum.USDT]; - -module.exports = { - start: '2023-08-05', - arbitrum: { tvl: sumTokensExport({ tokens, owners: contracts }) }, - hallmarks: [[1691240820, "Blex Protocol Deployed on Arbitrum"]], -}; diff --git a/projects/blindex/index.js b/projects/blindex/index.js deleted file mode 100644 index 5349e7138ee..00000000000 --- a/projects/blindex/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = { - "bdstable_pools_array": "function bdstable_pools_array(uint256) view returns (address)", - "getBdStablesPoolsLength": "uint256:getBdStablesPoolsLength", - "getBDStablePoolCollateral": "address:collateral_token", - "getBDStable": "function bdstables(uint256) view returns (address)", - "getBdStablesLength": "uint256:getBdStablesLength", - "getBDXPriceUsdD12": "uint256:BDX_price_d12" -} -const { getUniTVL, } = require("../helper/unknownTokens"); - -const chains = { - rsk: { - bdxTokenAddress: "0x6542a10E68cEAc1Fa0641ec0D799a7492795AAC1", - }, -}; - -async function tvl(api) { - const bdstables = await api.fetchList({ lengthAbi: abi.getBdStablesLength, itemAbi: abi.getBDStable, target: chains.rsk.bdxTokenAddress }) - await Promise.all(bdstables.map(async bdstable => { - const pools = await api.fetchList({ lengthAbi: abi.getBdStablesPoolsLength, itemAbi: abi.bdstable_pools_array, target: bdstable}) - const tokens = await api.multiCall({ abi: abi.getBDStablePoolCollateral, calls: pools}) - await api.sumTokens({ tokensAndOwners2:[tokens, pools,]}) - })) - return api.getBalances() -} - -const dexTVL = getUniTVL({ - factory: '0x5Af7cba7CDfE30664ab6E06D8D2210915Ef73c2E', - useDefaultCoreAssets: true, -}) - -module.exports = { - misrepresentedTokens: true, - methodology: - "(1) AMM LP pairs - All the liquidity pools from the Factory address are used to find the LP pairs. (2) Collateral - All the collateral being used to support the stable coins - Bitcoin, Ethereum & BDX", - rsk: { - tvl: sdk.util.sumChainTvls([tvl, dexTVL]), - }, -}; diff --git a/projects/blitz-exchange/index.js b/projects/blitz-exchange/index.js deleted file mode 100644 index 5ef4164096f..00000000000 --- a/projects/blitz-exchange/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - blast: { - tvl: sumTokensExport({ owner: '0xC748532C202828969b2Ee68E0F8487E69cC1d800', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]}), - }, -} \ No newline at end of file diff --git a/projects/blitzlabs.js b/projects/blitzlabs.js deleted file mode 100644 index d6dbacb0f84..00000000000 --- a/projects/blitzlabs.js +++ /dev/null @@ -1,11 +0,0 @@ - -module.exports = { - misrepresentedTokens: true, - bsc: { - staking: () => ({}), - pool2: () => ({}), - tvl: () => ({}), - }, - methodology: "Counts liquidty on the staking and pool2s only", - deadFrom: '2023-12-01', -} diff --git a/projects/blizzard/abi.json b/projects/blizzard/abi.json deleted file mode 100644 index e7a3d77aa80..00000000000 --- a/projects/blizzard/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "token": "address:token", - "balance": "uint256:balance", - "want": "address:want" -} \ No newline at end of file diff --git a/projects/blizzard/index.js b/projects/blizzard/index.js deleted file mode 100644 index c09e91d562e..00000000000 --- a/projects/blizzard/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); - -const lpVaults = [ - "0xE595C99b35f17408178097aFcF08DaE31DF0AD78", //PGL Vault PNG - "0xe69FaFbCA661368855A29B9Bf7eD14aA5c27FB4E", //JLP Vault JOE - "0xBcf284640dF1b17DC9022168798bc839e36F39Df", //JLP Vault JOE - "0x5806F70646832bfe5Dd11dF847832f9c268545c4", //JLP Vault JOE - "0x3C6e6019337AeEb1E58dcab16473Bf05B92B7417", //PGL Vault PNG - "0x18914D6691A5D9c43Db28a51Fb0c0891e73ae5b6", //USDC Vault - "0x336e16b1f3A10048F38367B16808CF70e9e34E50", -]; - -const tvl = async (api) => { - const balances = {}; - - const wantTokens = await api.multiCall({ abi: abi.want, calls: lpVaults}) - const balanceOfVaults = await api.multiCall({ abi: abi.balance, calls: lpVaults}) - wantTokens.forEach((token, i) => sdk.util.sumSingleBalance(balances,token,balanceOfVaults[i], api.chain)) - - return balances -}; - -module.exports = { - deadFrom: 1648765747, - avax:{ - tvl, - }, - methodology: "We count liquidity on the Vaults through their contracts", -}; diff --git a/projects/blizzfinance/index.js b/projects/blizzfinance/index.js deleted file mode 100644 index f93155bbecf..00000000000 --- a/projects/blizzfinance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { aaveExports } = require('../helper/aave') -const methodologies = require('../helper/methodologies') - -module.exports={ - methodology: methodologies.lendingMarket, - avax:{ - tvl: aaveExports("avax", "0xfF50b540c9152F1841edF47b49dA69696Be59783").tvl, - borrowed: ()=>({}) // hacked, it's all bad debt - }, - deadFrom: 1652356800, - // hallmarks:[ - // [1652356800, "Outdated Oracle Exploit"], - // ], -} diff --git a/projects/block-analitica/index.js b/projects/block-analitica/index.js deleted file mode 100644 index 18037473e0a..00000000000 --- a/projects/block-analitica/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { getCuratorExport } = require("../helper/curators") -const { mergeExports } = require("../helper/utils") - -const morphoConfigs = { - methodology: 'Count all assets deposited in all vaults curated by Block Analitica.', - blockchains: { - ethereum: { - morpho: [ - '0x38989BBA00BDF8181F4082995b3DEAe96163aC5D', - '0x2C25f6C25770fFEC5959D34B94Bf898865e5D6b1', - '0x186514400e52270cef3D80e1c6F8d10A75d47344', - ], - }, - base: { - morpho: [ - '0xa0E430870c4604CcfC7B38Ca7845B1FF653D0ff1', - '0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca', - '0x543257eF2161176D7C8cD90BA65C2d4CaEF5a796', - '0xf24608E0CCb972b0b0f4A6446a0BBf58c701a026', - ], - }, - }, -} - -const summerConfig = { - ethereum: '0x09eb323dBFECB43fd746c607A9321dACdfB0140F', - base: '0x09eb323dBFECB43fd746c607A9321dACdfB0140F', - arbitrum: '0x09eb323dBFECB43fd746c607A9321dACdfB0140F', - sonic: '0xa8E4716a1e8Db9dD79f1812AF30e073d3f4Cf191', -} - -const curatorExports = getCuratorExport(morphoConfigs) - -async function tvlSummer(api) { - const factory = summerConfig[api.chain] - const vaults = await api.call({ abi: 'address[]:getActiveFleetCommanders', target: factory }) - return api.erc4626Sum({ calls: vaults, tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets'}) -} - -const CHAINS = ['ethereum', 'arbitrum', 'base', 'sonic'] - -for (const chain of CHAINS) { - const originalTvl = curatorExports[chain]?.tvl; - - curatorExports[chain] = { - ...(curatorExports[chain] || {}), - tvl: async (api) => { - if (originalTvl) await originalTvl(api); - await tvlSummer(api); - }, - }; -} - -module.exports = mergeExports({ - ...curatorExports, - doublecounted: true, - methodology: morphoConfigs.methodology, -}) diff --git a/projects/blockng/index.js b/projects/blockng/index.js deleted file mode 100644 index 5f483fae5cb..00000000000 --- a/projects/blockng/index.js +++ /dev/null @@ -1,108 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumUnknownTokens, getUniTVL, sumTokensExport } = require('../helper/unknownTokens'); -const { staking, } = require('../helper/staking') -const sdk = require('@defillama/sdk') -const blockng = { - "getPoolInfo": "function getPoolInfo(address, address, uint256, uint256) view returns (tuple(address lpTokenAddress, address subTokenAddress, string subTokenSymbol, address dexFactory, address gaugeAddress, uint256 gaugeTotalSupply, uint256 lpPrice, uint256 gaugeAPR, address bribeAddress, int256 weights, uint256 punkId)[] beams)", - "numberOfPool": "function numberOfPool(address voter) view returns (uint256 len)" -} - -const chain = 'smartbch' -const WBCH = ADDRESSES.smartbch.WBCH -const LAW = ADDRESSES.smartbch.LAW - -const coreAssets = [ - WBCH, - LAW, - ADDRESSES.smartbch.flexUSD, // FlexUSD - ADDRESSES.smartbch.bcUSDT, // BlockNG pegged USDT -] - -const masterchefTvl = async (timestamp, ethBlock, { [chain]: block }) => { - const toa = [ - [ADDRESSES.null, '0x896a8ddb5B870E431893EDa869feAA5C64f85978'], // BCH - [ADDRESSES.smartbch.DAIQUIRI, '0x82112e12533A101cf442ee57899249C719dc3D4c'], // DAIQUIRI - ] - - return sumUnknownTokens({ chain, block, useDefaultCoreAssets: true, tokensAndOwners: toa, }); -} - -const pool2 = async (timestamp, ethBlock, { [chain]: block }) => { - const toa = [ - ['0x88b2522b9f9121b3e19a28971a85d34d88e4acc6', '0xe49717403eEa8c9Fa03610Bd9E6df96Ac5066298'], // lawETP-LAW@BEN - ['0x1d5a7bea34ee984d54af6ff355a1cb54c29eb546', '0xb7Ac725E59860051f77397C14dd8D30d9cb825e6'], // lawUsdfLawLpMist - ['0x8e992c4c2c84e5d372ef9a933be06f34962e42f5', '0xf3F7dC16Cab45c946F04F3D2F965Ca6dCBDb3aae'], // lawUSD-flexUSD@BEN - ['0xFEdfE67b179b2247053797d3b49d167a845a933e', '0x3D82b2D0927f528E708eC7680ae0088490A6d0C4'], // lawUSD-BCH@BEN - ['0xd55a9a41666108d10d31baeeea5d6cdf3be6c5dd', '0xCee23c02B819e4B9b6E34753e3c0C7f21c4bC398'], // LAW-BCH@BEN - ] - - return sumUnknownTokens({ chain, block, useDefaultCoreAssets: true, tokensAndOwners: toa, }); -} - - -const BENTOBOX = "0xDFD09C4A1Fd999F6e8518398216c53fcEa6f4020" -const bentoAssets = [ - [LAW, "law"], - [WBCH, "bitcoin-cash"] -] -const bentoTVLs = bentoAssets.map(asset => staking(BENTOBOX, asset[0], chain,)) - -const lawswapFactory = '0x3A2643c00171b1EA6f6b6EaC77b1E0DdB02c3a62'.toLowerCase() -const lawETP = "0x4ee06d0486ced674E75Ed9e521725580e8ffDA21" -const LAW_LAWETP_PAIR = "0x8735628e1e5442b49a37f9751b0793c11014d1b6" -const lawETP_POOL = "0x7B2B28a986E744D646F43b9b7e9F6f416a2a2BdA" // lawETP single asset pool - -// staking -const LAW_RIGHTS = "0xe24Ed1C92feab3Bb87cE7c97Df030f83E28d9667" // DAO address - - -const lawSwapTVL = getUniTVL({ - factory: lawswapFactory, - useDefaultCoreAssets: true, -}) - - -//voter -const VOTER = "0x10EAc6Cf7F386A11B6811F140CA8B9D6Ae7FbDf5" -//blockng agg contract -const AGG = "0x2bb410bD6c71147A593aCbB1CEB586aA253EFD92" - - -const civilBeams = async (api) => { - - const beamCount = await api.call({ target: AGG, abi: blockng["numberOfPool"], params: [VOTER], }) - //skip pool 0 cause it is nft pool - const allbeamInfo = await api.call({ - abi: blockng["getPoolInfo"], - target: AGG, - params: [VOTER, LAW, 1, beamCount], - }) - const gaugeMapping = {} - for (let i = 0; i < allbeamInfo.length; i++) { - let { dexFactory, gaugeAddress, lpTokenAddress, } = allbeamInfo[i] - dexFactory = dexFactory.toLowerCase() - gaugeAddress = gaugeAddress.toLowerCase() - lpTokenAddress = lpTokenAddress.toLowerCase() - if (dexFactory !== lawswapFactory) - gaugeMapping[gaugeAddress] = lpTokenAddress - } - - const toa = [] - Object.entries(gaugeMapping).forEach(([owner, token]) => toa.push([token, owner])) - - return sumUnknownTokens({ api, coreAssets, tokensAndOwners: toa, }); -} - -module.exports = { - smartbch: { - tvl: sdk.util.sumChainTvls([lawSwapTVL, masterchefTvl, ...bentoTVLs,]), - // borrowed: bentoBorrows, - pool2: sdk.util.sumChainTvls([pool2, civilBeams,]), - staking: sumTokensExport({ - chain, tokensAndOwners: [ - [lawETP, lawETP_POOL,], - [LAW, LAW_RIGHTS], - ], useDefaultCoreAssets: true, lps: [LAW_LAWETP_PAIR], - }), - } -} \ No newline at end of file diff --git a/projects/blockswap/index.js b/projects/blockswap/index.js deleted file mode 100644 index 5ad4c7384f7..00000000000 --- a/projects/blockswap/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); - -const { GraphQLClient, gql } = require('graphql-request'); - -const ethAddress = ADDRESSES.null - -const lsd_subgraph = 'https://lsd-subgraph.joinstakehouse.com' - -const stakehouse_subgraph = 'https://stakehouse-subgraph.joinstakehouse.com' - -async function tvl(api) { - let balances = {}; - let query - let results - - const lsdGraphQLClient = new GraphQLClient(lsd_subgraph) - const stakehouseGraphQLClient = new GraphQLClient(stakehouse_subgraph) - - // Get the stakehouseAccounts and calculate the total staked ETH (for lifecyclestatus = 2)/minted dETH (for lifecyclestatus = 3) - query = gql`{ - stakehouseAccounts { - lifecycleStatus - totalDETHMinted - } - }` - results = await stakehouseGraphQLClient.request(query) - - let totalETHStakedAndMinted = 0 - for (let i = 0; i < results.stakehouseAccounts.length; i++) { - if (results.stakehouseAccounts[i].lifecycleStatus === "2") - totalETHStakedAndMinted += (32) * 10 ** 18 - else if (results.stakehouseAccounts[i].lifecycleStatus === "3") - totalETHStakedAndMinted += (Number(results.stakehouseAccounts[i].totalDETHMinted) + (8 * 10 ** 18)) - } - - // Get the LP balances for the idle ETH in Protected Staking and the Fees and MEV Pools - query = gql`{ - lptokens(where:{ - lifecycleStatus: "NOT_STAKED" - }) { - withdrawn - minted - } - }` - results = await lsdGraphQLClient.request(query) - - let totalIdleETHInPools = 0 - - for (let i = 0; i < results.lptokens.length; i++) - totalIdleETHInPools += (Number(results.lptokens[i].minted) - Number(results.lptokens[i].withdrawn)) - - // Get the idle ETH deposited by the validators still in the "WAITING_FOR_ETH" and "READY_TO_STAKE" status - query = gql`{ - lsdvalidators(where: { - status_in: ["WAITING_FOR_ETH", "READY_TO_STAKE"] - }) { - id - } - }` - results = await lsdGraphQLClient.request(query) - - let totalIdleETHFromValidators = (results.lsdvalidators.length) * 4 * 10 ** 18 - - // get remaining idle ETH from both giant pools - query = gql`{ - giantSavETHPools { - availableToStake - } - giantFeesAndMevPools { - availableToStake - } - }` - - results = await lsdGraphQLClient.request(query) - let totaIdleETHInGiantPools = Number(results.giantSavETHPools[0].availableToStake) + Number(results.giantFeesAndMevPools[0].availableToStake) - - await sdk.util.sumSingleBalance(balances, ethAddress, (totalETHStakedAndMinted + totalIdleETHFromValidators + totalIdleETHInPools + totaIdleETHInGiantPools), api.chain) - - return balances; -} - -module.exports = { - deadFrom: '2025-01-01', - timetravel: false, - ethereum: { tvl } -}; \ No newline at end of file diff --git a/projects/bloctoswap/index.js b/projects/bloctoswap/index.js deleted file mode 100644 index 863c8f4f574..00000000000 --- a/projects/bloctoswap/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const TeleportCustody = [ - "0xe2733A335aB5B0F648A8b51d63Aa0335c135Ecfc", - "0xf8F12fE1B51D1398019C4faCd4D00aDAb5fEF746", - "0x9Fd5F426038F9A6dac6347E5D26e5B336b241389" -]; - -const tokens = [ - coreAssets.null, - coreAssets.ethereum.USDT, -]; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: TeleportCustody, tokens: tokens }) - }, -}; - diff --git a/projects/blofin-cex/index.js b/projects/blofin-cex/index.js deleted file mode 100644 index 4727153a4e6..00000000000 --- a/projects/blofin-cex/index.js +++ /dev/null @@ -1,148 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - bitcoin: { - owners: bitcoinAddressBook.blofinCex, - }, - bsc: { - owners: [ - "0x1cA5aa5b1dd8D948bB0971A5fB1762FE172E0040", - "0xdBdf80D997cFAaAC6150cD0cEC2C127fDaD7A823", - "0xe5e6c3ced4670697b7cB27a53649a3ED321c18ee", - "0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5", - ], - }, - ethereum: { - owners: [ - "0x1cA5aa5b1dd8D948bB0971A5fB1762FE172E0040", - "0xe5e6c3ced4670697b7cB27a53649a3ED321c18ee", - "0xdBdf80D997cFAaAC6150cD0cEC2C127fDaD7A823", - "0x88C984990573d385949deB571ed21eaD63301045", - "0xD775Ad8d9B9130B5D609Dc065BD548E46A6610b6", - "0xFFE011d9B70f616B424E820aA36deba198D947c7", - "0x9FBED2f9b8407a5B48D2106586Bb9824e32F3507", - "0x3B463Ee8099f7f65E852524dD316d80375172D54", - "0xfE56f42E2aC6eccf76488F373771eff859F460d1", - "0x6339d50D4E5a8aaf1b5e0b57C85b0EC3569F3B93", - "0x687054E92093DaFf65221fb77420ec6555d7c5a9", - "0xec5618Db70aE9d88EC40Fdb844455167418f8193", - "0xafE7EB9d224bC3cd7d9F88099D71B1c1c3BC2f93", - "0x055c1C6b09Fb4f5F229125aFcBBF98E734dFC725", - "0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5", - ], - }, - solana: { - owners: [ - "94xmX5J92nZLanLvRstmxhgiS8kN8SVfFQ2zPKYB3Ynb", - "E3Gd8Hd1yKdkHTQnbenNVBgV2p1MrrenQnVU4SkJD4zx", - "3oWiTmU5QpTbSuTCVULybWsXc3DVxixdABxJPerLgTai", - "94xmX5J92nZLanLvRstmxhgiS8kN8SVfFQ2zPKYB3Ynb", - "3V11R3pEGSt5XeRaoLDcCdkAB8zVSaKRCm8y3uKBgnsr", - "DTLR1QKfH3QWLDm3wkRZqxiH1NQSH4szWxTjGqHCQQSa", - "G2dBDN1k6EJdSQNTSeSZ9smwYkFhEgsNNG3mtRE1PVXb", - ], - }, - optimism: { - owners: [ - "0x1cA5aa5b1dd8D948bB0971A5fB1762FE172E0040", - "0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5", - ], - }, - arbitrum: { - owners: [ - "0x1cA5aa5b1dd8D948bB0971A5fB1762FE172E0040", - "0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5", - ], - }, - tron: { - owners: [ - "TDFHcjw2PiDLjoqxXedaSSEtA1osqu8J6c", - "TE4uQTkFMcjm7UVYeQCgTHuec1pFP5J4Ds", - "TRzpEdrAwHXPQYWvXHJArpcac2WV3gXMr3", - "TVNRJgNsVMjDPethVVToz9aSvZq9SVgDXv", - "THTGgHWFXwgaZEDdaQmR6iuUEa7NKfCUtH", - "TDFHcjw2PiDLjoqxXedaSSEtA1osqu8J6c", - "TGJUBfrpYsm2K61jEAqm35f7A9P5XpRNjC", - "TTRSjzeqYRghvxZXRdXsiUASt6iU91qtUu", - "TEVoZgTB3WsjTjDnxm4BY8CHsULmAjboSA", - "TVdNydXPaPFF4b2x7CKYiNjEWfi5C5AnV8", - "TUGmVxfPYzZtctCqxx9CGLnB4jWUZGtFh2", - "TC3XTY9ZM5hcdadRmtGegTFBmiF6rCLLnb", - ], - }, - polygon: { - owners: [ - "0x1cA5aa5b1dd8D948bB0971A5fB1762FE172E0040", - "0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5", - ], - }, - base: { - owners: [ - "0x1cA5aa5b1dd8D948bB0971A5fB1762FE172E0040", - "0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5", - "0xe5e6c3ced4670697b7cB27a53649a3ED321c18ee", - "0x88C984990573d385949deB571ed21eaD63301045", - ], - }, - cardano: { - owners: [ - "addr1qxdx2vxw9mdqkwq4eyss4xd03g9amv5ahw7je9d7ms748ey6v5cvutk6pvuptjfpp2v6lzstmkefmwaa9j2mahpa20jqudqquv", - "addr1qx7ulwm3gkfxdxzsvsd3a8j8tfxql2j75tc572wk73zyz9kg6jsax3gztqfqneqsw05k7vl4r74zt9aaxe93gsxdx8lqjzrfdz", - "addr1q9pnql2ut22sw3695jxcegfu8f273jyw78u8605tlx3gj0vf7nsu5v2rrpxpxwsx5ekxx07m3yy4jry5v706aqa4gklq7mwa54", - ], - }, - algorand: { - owners: [], - }, - aptos: { - owners: [ - "0xc16f4401c43f0f787c37f80b21411e8db9d2d7a8f29cf2ede6dbeb9729f3b320", - ], - }, - avax: { - owners: [ - "0x1cA5aa5b1dd8D948bB0971A5fB1762FE172E0040", - "0xe5e6c3ced4670697b7cB27a53649a3ED321c18ee", - "0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5", - ], - }, - berachain: { - owners: ["0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5"], - }, - litecoin: { - owners: [ - "Ldjngq3HdTzVLwGLj7TpryQUaFtqydo3HZ", - "ltc1qywl4m70amwmrtecxsjz0m08hj64dekmv536asn", - "LNUyAM2BssY6CqSN5BNoNTAY4W1q4uV7Eb", - "ltc1qsvqz9tw4v8kx7wpt2j3q7l8dgvucjwc6zlxm78", - ], - }, - sonic: { - owners: [ - "0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5", - "0x88C984990573d385949deB571ed21eaD63301045", - ], - }, - ton: { - owners: [ - "EQCBcLfo7OvsKSVXjqnKY_XpuOEIQtb-acHnk5hS7j9Shl0t", - "UQABlbgTwNXZds4fnfdDnQ9GG-vUrebORaA4hbRmleZP5M3e", - ], - }, - ripple: { - owners: [ - "rKBRWUTreGNU9d3pL2gYUo23jn4UdKiAoS", - "rPkX96xtMY2cxQ4Az3N54MB2vTHrp1PTjK", - "rBSojpgcRp9LvBguQXzrvNAyuzkP4Z8pZr", - ], - }, - hyperliquid: { - owners: ["0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5"], - }, - mantle: { - owners: ["0x7Ff8bbf9C8AB106db589e7863fb100525F61CCe5"], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/bloom-trading/index.js b/projects/bloom-trading/index.js deleted file mode 100644 index dcbf494f261..00000000000 --- a/projects/bloom-trading/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') -const owners = [ - "0xEe7F9599Cf1FB89aDBC3edD850E4842C2997Ca2c", // vault manager - "0xdb0c5d39c95A53eCdA3fCF6f6C5C81C7a74910c7", // vault -] - -module.exports = { - methodology: 'counts the number of USDB tokens in the Bloom contract.', - blast: { - tvl: sumTokensExport({ owners, tokens: [ADDRESSES.blast.USDB] }) - } -}; \ No newline at end of file diff --git a/projects/bloom/abi.json b/projects/bloom/abi.json deleted file mode 100644 index f8680b1569d..00000000000 --- a/projects/bloom/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getActiveTokens": "address[]:getActiveTokens", - "getInactiveTokens": "address[]:getInactiveTokens" -} diff --git a/projects/bloom/index.js b/projects/bloom/index.js deleted file mode 100644 index 9f6e6d01ea4..00000000000 --- a/projects/bloom/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const abi = require('./abi.json'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const REGISTRY = '0xBbBe37FE58e9859b6943AC53bDf4d0827f7F0034'; - -async function tvl(api) { - const activePools = await api.call({ target: REGISTRY, abi: abi['getActiveTokens'] }); - const inactivePools = await api.call({ target: REGISTRY, abi: abi['getInactiveTokens'] }); - const allPools = [...activePools, ...inactivePools]; - return sumTokens2({ owners: allPools, tokens: ['0xCA30c93B02514f86d5C86a6e375E3A330B435Fb5'], api }) -} - -module.exports = { - methodology: 'Gets the active pools from the registry and adds the total supply of each pool', - ethereum: { tvl, }, -}; diff --git a/projects/bloxmove/index.js b/projects/bloxmove/index.js deleted file mode 100644 index b5703b06fc1..00000000000 --- a/projects/bloxmove/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const farmContract = "0xb39EDbC5d0b23d7F4F140bBfDE92562fB1838769"; -const WETH_BLXM_UNIV2 = "0xE0a97733F90d089df8EeE74a8723d96196fC4931"; -const BLXM = "0x38d9eb07A7b8Df7D86F440A4A5c4a4c1a27E1a08"; - -const farmContract_bsc = "0xFaD010684a68AefAcF6BBe1357642c7C73a7Ed80"; -const WBNB_BLXM_CakeLP = "0xD617cc09A85dC93De9FB1487ac8863936c5E511F"; -const BLXM_bsc = "0x40e51e0ec04283e300f12f6bb98da157bb22036e"; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking(farmContract, BLXM), - pool2: pool2(farmContract, WETH_BLXM_UNIV2), - tvl: (async) => ({}), - }, - bsc: { - staking: staking(farmContract_bsc, BLXM_bsc), - pool2: pool2(farmContract_bsc, WBNB_BLXM_CakeLP), - }, - methodology: "Counts liquidty on the staking and pool2 only", -}; diff --git a/projects/blue-move-mart/index.js b/projects/blue-move-mart/index.js deleted file mode 100644 index 7094ddf367e..00000000000 --- a/projects/blue-move-mart/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { aQuery } = require('../helper/chain/aptos') -const http = require('../helper/http') -const bluemoveCoinGecKoApi = 'https://api.coingecko.com/api/v3/simple/price?ids=aptos%2Captos%2Cbluemove&vs_currencies=usd'; -async function query(api) { - return http.get(`${api}`) -} - -module.exports = { - timetravel: false, - // methodology: "The total value locked is calculated by adding each value locked for each collection listed on the BlueMove NFT marketplace. The collection's value locked is calculated by the total NFT locked on the platform including listed and staked NFTs with the NFT collection floor price respectively", - methodology: "The total value locked is the value of the $MOVE coin that was staked into the BlueMove platform.", - aptos: { - staking: async () => { - - // Get MOVE price by calling CoinGecKo API - const {aptos, bluemove} = await query(bluemoveCoinGecKoApi); - const movePriceByAPT = bluemove.usd /aptos.usd; - // Get TVL from staking MOVE to receive MOVE - const { data: { total_moves_staking } } = await aQuery('/v1/accounts/0x400ffaf40b899bb14f883a16bed906b3977486a2bef4ad25e3e6ae0f9a3dde79/resource/0x9637eeb749cd50808be7d9bb2652af00971688d457feb002ec31af594cc77a2d::staking_move_earn_move::StakingData'); - // Get TVL from staking MOVE to receive NFTs - const { data } = await aQuery('/v1/accounts/0xb0879d35e9503c7cda8da6f9574cf00ab36c0704ea5b1a4d818472e093cdcee4/resource/0x352ad31333d08a45898a97a96f066ff4bfda2756c17239032c3bdd3825d1f0b0::staking_move_earn_nft::StakingData'); - // Calculate TVL - const total_moves_staking_earn_nft = data.total_moves_staking; - const staking_tvl = ((total_moves_staking)/1e8 + total_moves_staking_earn_nft/1e8) * movePriceByAPT; - return { - aptos: staking_tvl - } - }, - tvl: (async) => ({}), - } -} \ No newline at end of file diff --git a/projects/blueberry/index.js b/projects/blueberry/index.js deleted file mode 100644 index 40aaa7912ec..00000000000 --- a/projects/blueberry/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const v1 = require("./v1"); -const v2 = require("./v2"); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([v1, v2]); \ No newline at end of file diff --git a/projects/blueberry/v1.js b/projects/blueberry/v1.js deleted file mode 100644 index 671529e2656..00000000000 --- a/projects/blueberry/v1.js +++ /dev/null @@ -1,23 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const abi = { - "getNextPositionId": "function getNextPositionId() view returns (uint256)", - "getPositionValue": "function getPositionValue(uint256 positionId) view returns (uint256)" -} -const sdk = require('@defillama/sdk'); - -const BANK = '0xa34F59F634d48E2c3606048f2367326c46a4B5fA'; - -async function tvl(timestamp, block, chainBlocks, {api}) { - const positionValuesRes = await api.fetchList({ lengthAbi: abi.getNextPositionId, itemAbi: abi.getPositionValue, target: BANK, permitFailure: true}) - const positionValues = positionValuesRes.filter(value => value != null) - api.addCGToken('tether', positionValues.reduce((acc, i) => acc + i/1e18, 0)) - return api.getBalances() -} - -module.exports = { - methodology: 'Gets the total value locked in blueberry v1', - ethereum: compoundExports2({ comptroller: '0xcb0D9Ff5BDD34521c6f8CDbeAf15e1A76Fa4dd5D'}), - deadFrom: '1753057413', -} - -module.exports.ethereum.tvl = sdk.util.sumChainTvls([module.exports.ethereum.tvl, tvl]) \ No newline at end of file diff --git a/projects/blueberry/v2.js b/projects/blueberry/v2.js deleted file mode 100644 index 67997875ac1..00000000000 --- a/projects/blueberry/v2.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); - -const BBHLP_VAULT_ROUTER_ADDRESS = "0x647a4D7F1F20Cf237C27b39fB6924f5a7691BB4b"; - -const HYPEREVM_TOKENS = [ - { - symbol: "USDT0", - address: ADDRESSES.hyperliquid.USDT0, - decimals: 6, - }, - { - symbol: "USDE", - address: ADDRESSES.hyperliquid.USDe, - decimals: 18, - }, - { - symbol: "USDHL", - address: '0xb50A96253aBDF803D85efcDce07Ad8becBc52BD5', - decimals: 6, - } -]; - -async function tvl(api) { - try { - const tvlValue = await api.call({ - abi: "function tvl() external view returns (uint256)", - target: BBHLP_VAULT_ROUTER_ADDRESS, - }); - - const scaledTvl = BigInt(tvlValue) / BigInt(10 ** 12); - api.add(HYPEREVM_TOKENS[0].address, scaledTvl.toString()); - } catch (error) { - api.add(HYPEREVM_TOKENS[0].address, '0'); - } -} - -module.exports = { - methodology: - "TVL is calculated from deposits in the vault and on Hyperliquid.", - timetravel: false, - hyperliquid: { - tvl, - }, - misrepresentedTokens: true, -}; \ No newline at end of file diff --git a/projects/bluebit/abis.json b/projects/bluebit/abis.json deleted file mode 100644 index 37509a280e4..00000000000 --- a/projects/bluebit/abis.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "summary": "function summary(address account) view returns (uint256 tvl, uint256 deposites)" -} \ No newline at end of file diff --git a/projects/bluebit/index.js b/projects/bluebit/index.js deleted file mode 100644 index c62818b652e..00000000000 --- a/projects/bluebit/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const token = "0x4148d2Ce7816F0AE378d98b40eB3A7211E1fcF0D"; -const veToken = "0xdf7C547f332351A86DB0D89a89799A7aB4eC9dEB"; - -module.exports = { - methodology: "The vaults on https://bluebit.fi are included in TVL.", - aurora: { - tvl: () => ({}), - staking: staking(veToken, token), - }, - deadFrom: '2025-06-01', -}; diff --git a/projects/bluefin-alphalend/index.js b/projects/bluefin-alphalend/index.js deleted file mode 100644 index 73a50889352..00000000000 --- a/projects/bluefin-alphalend/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { getDynamicFieldObjects, getObjects } = require('../helper/chain/sui'); - -const MARKETS_CONTAINER = '0x2326d387ba8bb7d24aa4cfa31f9a1e58bf9234b097574afb06c5dfb267df4c2e'; - -async function tvl(api) { - const marketData = await getDynamicFieldObjects({ - parent: MARKETS_CONTAINER, - idFilter: (i) => i.objectType.includes('::market::Market'), - }); - - for (const market of marketData) { - const { fields } = market; - if (!fields) continue; - - const coinType = "0x" + fields.value.fields.coin_type.fields.name; - const balance = Number(fields.value.fields.balance_holding); - api.add(coinType, balance); - } -} -async function borrowed(api) { - const marketData = await getDynamicFieldObjects({ - parent: MARKETS_CONTAINER, - idFilter: (i) => i.objectType.includes('::market::Market'), - }); - - for (const market of marketData) { - const { fields } = market; - if (!fields) continue; - - const coinType = "0x" + fields.value.fields.coin_type.fields.name; - const borrowed = Number(fields.value.fields.borrowed_amount); - - api.add(coinType, borrowed); - } -} - -module.exports = { - sui: { - tvl: tvl, - borrowed: borrowed, - }, - hallmarks: [ - ['2025-05-07', 'AlphaLend Launched'], - ], -}; diff --git a/projects/bluefin-amm/index.js b/projects/bluefin-amm/index.js deleted file mode 100644 index 2248884607d..00000000000 --- a/projects/bluefin-amm/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const sui = require("../helper/chain/sui"); -const { getConfig } = require('../helper/cache'); - -async function suiTvl(api) { - const pools = (await getConfig('bluefin/amm-sui', 'https://swap.api.sui-prod.bluefin.io/api/v1/pools/info?limit=1000')).map(i => i.address) - const res = await sui.getObjects(pools) - res.forEach((i) => { - const [coinA, coinB] = i.type.split('<')[1].split('>')[0].split(', ') - api.add(coinA, i.fields.coin_a) - api.add(coinB, i.fields.coin_b) - }) -} - - -module.exports = { - hallmarks: [ - [1731974400, "Spot Launch"], - [1733875200, "BLUE Token"] - ], - sui: { - tvl: suiTvl - }, -} diff --git a/projects/bluefin-pro/index.js b/projects/bluefin-pro/index.js deleted file mode 100644 index 2d4fdb6d2db..00000000000 --- a/projects/bluefin-pro/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); - -const DATA_STORE_ID = - "0x740d972ea066fe3302ee655163373cda2e9529bfa93d2266e1355cf56899da57"; - -const BLUE_VAULT_ID = "0xe567f041b313134fdd241c57cb10cfc5b54ca36cc91643308c34bbbafefd960a"; -const BLUE_COIN = "0xe1b45a0e641b9955a20aa0ad1c1f4ad86aad8afb07296d4085e349a50e90bdca::blue::BLUE"; - -const USDC_VAULT_ID = "0x10d48e112b92c8af207c1850225284a7ca46bac1d935c4af4cf87ce29b121694"; - - -async function suiTvl(api) { - const object = await sui.getObject(DATA_STORE_ID); - const usdc_vault_object = await sui.getObject(USDC_VAULT_ID); - const vaultAmount = usdc_vault_object.fields.total_locked_amount; - const bankID = object.fields.asset_bank.fields.id.id; - const assetBank = await sui.getDynamicFieldObject(bankID ,"USDC", {idType: "0x1::string::String"}); - - const tvl = assetBank.fields.value; - api.add(ADDRESSES.sui.USDC, tvl); - api.add(ADDRESSES.sui.USDC, vaultAmount); - return api.getBalances() -} - -const staking = async (api) => { - const vaultObject = await sui.getObject(BLUE_VAULT_ID); - const blueCoinAmount = vaultObject.fields.total_locked_amount; - // div by 1e9 as blue coin has 9 precision - api.add(BLUE_COIN, blueCoinAmount); -} - -module.exports = { - sui: { - tvl: suiTvl, - staking - } -} \ No newline at end of file diff --git a/projects/bluefin/index.js b/projects/bluefin/index.js deleted file mode 100644 index fce2bded5de..00000000000 --- a/projects/bluefin/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const sui = require("../helper/chain/sui"); - -const SUI_BANK_ID = - "0x39c65abefaee0a18ffa0e059a0074fcc9910216fa1a3550aa32c2e0ec1c03043"; - -const USDC_VAULT_ID = "0x10d48e112b92c8af207c1850225284a7ca46bac1d935c4af4cf87ce29b121694"; - -const Arbitrum_Config = { - "endpoint": "0x52b5471d04487fb85B39e3Ae47307f115fe8733F", -} - -async function suiTvl(api) { - const object = await sui.getObject(SUI_BANK_ID); - const usdc_vault_object = await sui.getObject(USDC_VAULT_ID); - const usdcAmount = object.fields.coinBalance; - const vaultAmount = usdc_vault_object.fields.total_locked_amount; - // div by 1e6 as usdc coin has 6 precision - api.add(ADDRESSES.sui.USDC, usdcAmount-vaultAmount); -} - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ - owners: [Arbitrum_Config.endpoint], - tokens: [ADDRESSES.arbitrum.USDC], - }) - }, - sui: { - tvl: suiTvl - }, - hallmarks: [ - ['2023-12-22', 'Decomission Arbitrum support'], - ], -} diff --git a/projects/bluelotusdao/index.js b/projects/bluelotusdao/index.js deleted file mode 100644 index fb24fa08ec5..00000000000 --- a/projects/bluelotusdao/index.js +++ /dev/null @@ -1,3 +0,0 @@ - -const { uniTvlExport } = require('../helper/unknownTokens') -module.exports = uniTvlExport('genesys', '0x5c4619104985163b3839dA465232B6D2a9588E7B') \ No newline at end of file diff --git a/projects/bluemeteor/index.js b/projects/bluemeteor/index.js deleted file mode 100644 index 567eeb03f20..00000000000 --- a/projects/bluemeteor/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - pulse: { tvl: getUniTVL({ factory: '0x2c68d8942fD4B5eC45a671fA230fb3dEBF224176', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/bluemove-dex/index.js b/projects/bluemove-dex/index.js deleted file mode 100644 index 4ec28198e69..00000000000 --- a/projects/bluemove-dex/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { dexExport } = require('../helper/chain/sui') -const { mergeExports } = require('../helper/utils') - -module.exports = mergeExports([ - dexExport({ - account: '0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92', - poolStr: '::swap::Pool', - token0Reserve: i => i.fields.reserve_x, - token1Reserve: i => i.fields.reserve_y, - eventType: "0xb24b6789e088b876afabca733bed2299fbc9e2d6369be4d1acfa17d8145454d9::swap::Created_Pool_Event", - eventTransform: i => i.pool_id - }), - dexExport({ - account: '0x5a7eca40df453efe6bb1feae99e5b8fc072d1252cbd1979eb187d625dc9b47c9', - poolStr: 'stable_swap::Stable_Pool', - token0Reserve: i => i.fields.token_x, - token1Reserve: i => i.fields.token_y, - isAMM: false, - }) -]) diff --git a/projects/blueprint/index.js b/projects/blueprint/index.js deleted file mode 100644 index 1c09d013a47..00000000000 --- a/projects/blueprint/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - ethereum: { - factory: "0xe777c3da43ec554ec845649323215afaa34d6c23", - fromBlock: 18692575, - }, -}); diff --git a/projects/blueshift/abi.json b/projects/blueshift/abi.json deleted file mode 100644 index 549cf171455..00000000000 --- a/projects/blueshift/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "BlueshiftRegistry": { - "getPortfolios": "function getPortfolios() view returns (tuple(string[] name, address[] contractAddress, address[] baseTokenAddress, address[] lpTokenAddress, uint256[] lpTokenPrice, uint256[] totalValue, uint256[] tokenCount, uint256[] baseTokenPriceCoefficient, tuple(address[] tokenAddress, uint256[] amount, uint256[] price, uint256[] depositLimit, uint256[] withdrawLimit, uint256[] depositEMAPrice, uint256[] withdrawEMAPrice, uint256[] portfolioShare, uint256[] targetWeight)[] tokens))" - }, - "BlueshiftEarning": { - "getAccDeposit": "uint256:getAccDeposit", - "getToken": "address:getToken" - } -} \ No newline at end of file diff --git a/projects/blueshift/config.json b/projects/blueshift/config.json deleted file mode 100644 index 4edf5efe704..00000000000 --- a/projects/blueshift/config.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "registry": { - "milkomeda": "0xb42F2f37Dedf435F4916665d6B4c2cC643A17f14", - "milkomeda_a1": "0xa98C276d262Cc3Bf660189E2eBE74c4B8C18e50a", - "kava": "0x49399653f651A25924b3D8718276b5b4372577b1", - "polygon": "0x2080A319A4B11D097050722b6b65d09F754EdC83", - "bob": "0xFF485b08a64046B9A23342D6098f26e7C237c19A" - }, - "manualPool": { - "milkomeda": "0xA4f0e3C80C77b347250B9D3999478E305FF814A4", - "milkomeda_a1": "0x589E3Edd93A22FB316cff53eABA6BB958ff601cd", - "kava": "0x7A60918Bd5c83Ef7e2ABA87D13e3FD704f6A77E1", - "bob": "0x784156F8729c64BAd3CC79fc20d1e8Cde8D42E96" - }, - "blueschain": { - "milkomeda": { - "reserve": "0xa2351AEA209ceB0ffeCd77149eC615335d7f513d", - "tokens": [ - "0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9", - "0x8c008BBA2Dd56b99f4A6aB276bE3a478cB075F0C" - ] - }, - "polygon": { - "reserve": "0x3abd79823C595C0778e51246c491126e77367b20", - "tokens": [ - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" - ] - } - } -} \ No newline at end of file diff --git a/projects/blueshift/index.js b/projects/blueshift/index.js deleted file mode 100644 index 734f6b54d3c..00000000000 --- a/projects/blueshift/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const abi = require('./abi.json'); -const { registry, manualPool, blueschain, } = require("./config.json"); - -async function staking(api) { - const chain = api.chain - if (chain === 'milkomeda_a1') return {} - if (!manualPool[chain]) return {} - const value = await api.call({ abi: abi.BlueshiftEarning.getAccDeposit, target: manualPool[chain], }) - const tokenAddress = await api.call({ abi: abi.BlueshiftEarning.getToken, target: manualPool[chain], }) - api.add(tokenAddress, value) - return api.getBalances() -} - -async function tvl(api) { - const chain = api.chain - if (chain === 'milkomeda_a1') return {} - const { reserve, tokens } = blueschain[chain] ?? {} - - // Blueschain reserves - if (reserve) - await sumTokens2({ api, owner: reserve, tokens, }) - - // Local reserves - if (registry[chain]) { - const portfolios = await api.call({ abi: abi.BlueshiftRegistry.getPortfolios, target: registry[chain], }) - - for (let i = 0; i < portfolios.contractAddress.length; ++i) - api.add(portfolios.baseTokenAddress[i], portfolios.totalValue[i]) - } - return api.getBalances() -} - - -module.exports = { - methodology: 'Accumulates TVL of all Blueshift portfolios calculated in base tokens. Adds TVL of BLUES tokens staked in Blueshift yield pools.', -}; - -Object.keys(registry).forEach(chain => { - module.exports[chain] = { tvl, staking } -}) diff --git a/projects/bluespade/index.js b/projects/bluespade/index.js deleted file mode 100644 index 0bf9136b7ea..00000000000 --- a/projects/bluespade/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - -//Cronos -const cronosVault = '0x26e5FbFbfd38a27D5777C9C9CC5543e687E637D8'; -const cronosStaking = '0xbCCE1c2efDED06ee73183f8B20f03e452EF8495D'; -const cronosBLU = '0x1542bA4CA0fb6D1B4476a933B292002fd1959A52'; -//Polygon -const polygonVault = '0xd6f70237f501891C3E1634544F36E026250c2D3F' -const polygonStaking = '0xb710f0D97023340eB3faBC4259FEAdf3bBeDdf05' -const polygonBLU = '0x759d34685468604c695De301ad11A9418e2f1038' - -module.exports = { - cronos: { - staking: staking(cronosStaking, cronosBLU), - tvl: gmxExports({ vault: cronosVault, }) - }, - polygon:{ - staking: staking(polygonStaking, polygonBLU), - tvl: gmxExports({ vault: polygonVault, }) - } -}; diff --git a/projects/bluewhale/index.js b/projects/bluewhale/index.js deleted file mode 100644 index b94fdf34e83..00000000000 --- a/projects/bluewhale/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens'); -const { getTridentTVL } = require('../helper/sushi-trident') -const sdk = require('@defillama/sdk') - -const AQUA_FACTORY = '0x77716798B9E470439D02C27107632FbFd10aF345'; -const AQUA_V3 = '0x198763c1347EA879e26c2564C6F51FDfCB24EF01'; -const CLAM_MASTERCHEF = '0x19562EF0c60837e71eb78b66786D7070bB3675a0'; -const PEARL_MASTERCHEF = '0x952F202B5E58058DEb468cd30d081922C36bf29a'; -const KRILL_MASTERCHEF = '0x68e83E5300594E664701Aa38A1d80F9524cA82D8'; - -const tokens = { - "sBWPM": "0xf4546e1d3ad590a3c6d178d671b3bc0e8a81e27d", - "KRILL": "0x83bc9fe9eebfeb1ad4178ac5e7445dc6a7e95718", - "PEARL": "0xb3b1b54e3b9a27cee606f1018760abec4274bd35", - "CLAM": "0xba9725eaccf07044625f1d232ef682216f5371c2", - "sADOL": "0x4f3ac44bb2345d3960e34dd5dfe275249e43ae4a" -} - -module.exports = { - misrepresentedTokens: true, - methodology: `counts the number of tokens in the Bluewhale contract. `, - klaytn: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: AQUA_FACTORY, useDefaultCoreAssets: true }), - getTridentTVL({ chain: 'klaytn', factory:AQUA_V3 }), - ]), - staking: staking([PEARL_MASTERCHEF, CLAM_MASTERCHEF, KRILL_MASTERCHEF], [tokens.PEARL, tokens.CLAM, tokens.sBWPM]), - }, -}; \ No newline at end of file diff --git a/projects/blum/api.js b/projects/blum/api.js deleted file mode 100644 index c533996f3d8..00000000000 --- a/projects/blum/api.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json") - -const { sumTokens } = require("../helper/chain/ton") -const { getConfig } = require("../helper/cache") - -async function fetchTvl(api) { - const res = await getConfig('blum', 'https://tonfunstats-eqnd7.ondigitalocean.app/api/v1/getServiceTokens?service=blum') - await sumTokens({ api, tokens: [ADDRESSES.ton.TON], owners: res, onlyWhitelistedTokens: true, }) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - ton: { - tvl: fetchTvl - } -} diff --git a/projects/blum/index.js b/projects/blum/index.js deleted file mode 100644 index 09cb8c128fe..00000000000 --- a/projects/blum/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports('blum', ['ton']), -} \ No newline at end of file diff --git a/projects/blume-fm/index.js b/projects/blume-fm/index.js deleted file mode 100644 index 8738c3efcf0..00000000000 --- a/projects/blume-fm/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - blast: compoundExports2({ - comptroller: "0x4EdF556c5664b4f86Ec50dB0F58B58B26210DC31", - }), -}; diff --git a/projects/blur-finance/abi.js b/projects/blur-finance/abi.js deleted file mode 100644 index 4a9cfe72360..00000000000 --- a/projects/blur-finance/abi.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - poolInfo2: "function poolInfo2(uint256 _pid) view returns (address lpToken, uint256 allocPoint, address strat0, uint256 amount0, uint256 share0, address strat1, uint256 amount1, uint256 share1)", - poolLength: "uint256:poolLength", -} \ No newline at end of file diff --git a/projects/blur-finance/index.js b/projects/blur-finance/index.js deleted file mode 100644 index 4fac2d5ef0f..00000000000 --- a/projects/blur-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - bsc: { - tvl: () => ({}), - }, - // hallmarks: [ - // ['2022-08-10', 'Rug pull'], - // ], - deadFrom: '2022-08-10' -} \ No newline at end of file diff --git a/projects/blur-lend/index.js b/projects/blur-lend/index.js deleted file mode 100644 index 0bc033ad332..00000000000 --- a/projects/blur-lend/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const collateralProxy = "0x29469395eAf6f95920E59F858042f0e28D98a20B" - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL counts NFTs used as collateral to take out loans', - ethereum: { - tvl: sumTokensExport({ owners: [collateralProxy], resolveNFTs: true, }), - } -} diff --git a/projects/blur/index.js b/projects/blur/index.js deleted file mode 100644 index c4db3b1ea98..00000000000 --- a/projects/blur/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const blurBiddingAddr = "0x0000000000A39bb272e79075ade125fd351887Ac" - -module.exports = { - hallmarks: [ - [1676376000, "BLUR token launch"] - ], - methodology: `TVL counts ETH tokens in the Blur Bidding address:${blurBiddingAddr}`, - ethereum: { - staking: staking("0xeC2432a227440139DDF1044c3feA7Ae03203933E", "0x5283d291dbcf85356a21ba090e6db59121208b44"), - tvl: sumTokensExport({ tokensAndOwners: [[ADDRESSES.null, blurBiddingAddr]] }), - }, - blast:{ - tvl: sumTokensExport({tokensAndOwners: [[ADDRESSES.null, "0xB772d5C5F4A2Eef67dfbc89AA658D2711341b8E5"]]}) - } -} diff --git a/projects/bmcc/index.js b/projects/bmcc/index.js deleted file mode 100644 index 1b7b03490e0..00000000000 --- a/projects/bmcc/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); -const token = "0xb6D8EE99D5d6cfe7D80b666e6fF5e74e3f72756b"; -// const omg = "0x1457438D5326a54ceE5b9398d9171eF8E0BC2DF7"; - -const stakingContracts = [ - // stakingContract1 = - "0xD5DBAeb18943ed04CD84Cd3378D67ea94Da0F043", - // stakingContract2 = - "0xf7b95c668a31eb448bc4dea5e48a0efbef2fb63b", - // Lottery - "0x74ec16b956678e337b88099b7bD0a234e79F60EF", -]; - -const lockedContracts = [ - //masterchef - "0xAf3346DE11b838c4ea0D8E369486eB9BACeEEb02", - "0x65C9DaFddA01e1C81C671Dc20ec0c6341Fe3085e", - "0x0c89c0407775dd89b12918b9c0aa42bf96518820", - "0xa36037dC26C5C02e864eBA969A312320E6487269", -]; - -const bmccLP = [ - "0x9cef33639c75DD023a90A8ae290C2b51D1C44716", - "0x71810Ae9914e52718965D65cE303E652C08aE25B", - "0xbAaf55b067c4240C4F7b2665Bf61Dd97A092BD65", - "0x891D48D1261B2890773fE9407B57A965eCd80740", - "0x35775a34Cb44805421429d77d6c6C4f90D43daa5", -]; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: async () => ({}), - staking: stakings(stakingContracts, token), - pool2: pool2s(lockedContracts, bmccLP), - }, - methodology: "Counts liquidty on the staking and pool2s", -}; diff --git a/projects/bmx/index.js b/projects/bmx/index.js deleted file mode 100644 index 827575dc69f..00000000000 --- a/projects/bmx/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -const vaultAddresses = { - base: "0xec8d8D4b215727f3476FF0ab41c406FA99b4272C", - sonic: "0x9cC4E8e60a2c9a67Ac7D20f54607f98EfBA38AcF", - mode: "0xff745bdB76AfCBa9d3ACdCd71664D4250Ef1ae49" -}; -const stakingAddresses = { - base: "0x3085F25Cbb5F34531229077BAAC20B9ef2AE85CB", - mode: "0x773F34397d5F378D993F498Ee646FFe4184E00A3" -}; -const tokenAddresses = { - base: "0x548f93779fBC992010C07467cBaf329DD5F059B7", - mode: "0x66eEd5FF1701E6ed8470DC391F05e27B1d0657eb" -}; - -module.exports = { - methodology: "BMX Classic liquidity is calculated by the value of tokens in the BLT/MLT pool. TVL also includes BMX staked.", - base: { - tvl: gmxExports({ vault: vaultAddresses.base }), - staking: staking(stakingAddresses.base, tokenAddresses.base) - }, - sonic: { - tvl: gmxExports({ vault: vaultAddresses.sonic }) - }, - mode: { - tvl: gmxExports({ vault: vaultAddresses.mode }), - staking: staking(stakingAddresses.mode, tokenAddresses.mode) - } -}; diff --git a/projects/bnbminer/index.js b/projects/bnbminer/index.js deleted file mode 100644 index 3af348afc14..00000000000 --- a/projects/bnbminer/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xce93F9827813761665CE348e33768Cb1875a9704" - -async function tvl(time, ethBlock, { bsc: block }) { - return sumTokens2({ tokens: [nullAddress], owner: contract, block, chain: 'bsc', }) -} - -module.exports = { - methodology: `We count the BNB on ${contract}`, - bsc: { - tvl - } -} \ No newline at end of file diff --git a/projects/bnpl-pay/index.js b/projects/bnpl-pay/index.js deleted file mode 100644 index 25763323179..00000000000 --- a/projects/bnpl-pay/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { getUniqueAddresses } = require('../helper/utils') -const { sumTokens2 } = require('../helper/unwrapLPs') -const BNPL_FACTORY = '0x7edB0c8b428b97eA1Ca44ea9FCdA0835FBD88029' - - -async function tvl(api) { - const nodes = await api.fetchList({ lengthAbi: abi.bankingNodeCount, itemAbi: abi.bankingNodesList, target: BNPL_FACTORY }) - - const tokens = getUniqueAddresses([ - '0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811', // aave USDT - '0xBcca60bB61934080951369a648Fb03DF4F96263C', // aave USDC - ]) - return sumTokens2({ api, owners: nodes, tokens, }) -} - -async function staking(api) { - const nodes = await api.fetchList({ lengthAbi: abi.bankingNodeCount, itemAbi: abi.bankingNodesList, target: BNPL_FACTORY }) - - return sumTokens2({ - api, owners: nodes, tokens: [ - '0x84d821f7fbdd595c4c4a50842913e6b1e07d7a53', // BNPL - ] - }) -} - -async function borrowed(api) { -} - -const abi = { - bankingNodeCount: "uint256:bankingNodeCount", - bankingNodesList: "function bankingNodesList(uint256) view returns (address)", - baseToken: "address:baseToken", - getCurrentLoansCount: "uint256:getCurrentLoansCount", - currentLoans: "function currentLoans(uint256) view returns (uint256)", - idToLoan: "function idToLoan(uint256) view returns (address borrower, bool interestOnly, uint256 loanStartTime, uint256 loanAmount, uint256 paymentInterval, uint256 interestRate, uint256 numberOfPayments, uint256 principalRemaining, uint256 paymentsMade, address collateral, uint256 collateralAmount, bool isSlashed)", -} - -module.exports = { - deadFrom: '2023-02-12', - ethereum: { tvl, staking, borrowed, }, -} - -module.exports.ethereum.borrowed = () => ({}) // bad debt diff --git a/projects/bnsol/index.js b/projects/bnsol/index.js deleted file mode 100644 index cb7ba4d83bc..00000000000 --- a/projects/bnsol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getStakedSol } = require("../helper/solana") - -async function tvl(api) { - await getStakedSol('75NPzpxoh8sXGuSENFMREidq6FMzEx4g2AfcBEB6qjCV', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - }, -}; \ No newline at end of file diff --git a/projects/bob-fusion/index.js b/projects/bob-fusion/index.js deleted file mode 100644 index e8f034711db..00000000000 --- a/projects/bob-fusion/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/sumTokens') - -const fusionLockContract = "0x61dc14b28d4dbcd6cf887e9b72018b9da1ce6ff7" - -const enabledAddresses = [ - ADDRESSES.null, // ETH - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.tBTC, - ADDRESSES.ethereum.RETH, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - "0x7122985656e38BDC0302Db86685bb972b145bD3C", // STONE - "0xbdBb63F938c8961AF31eaD3deBa5C96e6A323DD1", // eDLLR - "0xbdab72602e9AD40FC6a6852CAf43258113B8F7a5", // eSOV - "0xe7c3755482d0dA522678Af05945062d4427e0923", // ALEX - ADDRESSES.ethereum.LBTC, // LBTC -] - -module.exports = { - ethereum: { tvl: sumTokensExport({ owner: fusionLockContract, tokens: enabledAddresses }) } -} \ No newline at end of file diff --git a/projects/bob-gateway/index.js b/projects/bob-gateway/index.js deleted file mode 100644 index e51903ef41d..00000000000 --- a/projects/bob-gateway/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const factories = { - v1: "0x1831d29376eb94bba3ca855af7984db923768b27", - v2: "0x37f330e667208633e1da1cf601d01f0ef8484306", - v3: "0xAE6770a207E86FaE3b191564FA55ce7Bfee0Dde9", -}; - -const abis = { - v1: { - allOnramps: "function allOnramps() view returns (address[])", - }, - v2: { - allGateways: "function allGateways() view returns (address[])", - }, - v3: { - allGateways: "function allGateways() view returns (address[])", - }, -}; - -module.exports = { - bob: { - tvl: async (api) => { - const gateways = (await api.batchCall([ - { abi: abis.v1.allOnramps, target: factories.v1 }, - { abi: abis.v2.allGateways, target: factories.v2 }, - { abi: abis.v3.allGateways, target: factories.v3 } - ])).flat(); - - return sumTokens2({ - api, - tokens: [ - ADDRESSES.bob.WBTC, - ADDRESSES.bob.TBTC, - ADDRESSES.bob.SolvBTC, - ADDRESSES.bob.SolvBTC_BBN, - ADDRESSES.bob.FBTC, - ADDRESSES.bob.uniBTC, - ADDRESSES.bob.pumpBTC, - "0xA45d4121b3D47719FF57a947A9d961539Ba33204", // LBTC - ], - owners: gateways, - }); - }, - } -}; - diff --git a/projects/bob/index.js b/projects/bob/index.js deleted file mode 100644 index b8a642b5f70..00000000000 --- a/projects/bob/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const tokens = [ - ADDRESSES.null, // ETH - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.tBTC, - ADDRESSES.ethereum.RETH, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WETH, - "0x7122985656e38BDC0302Db86685bb972b145bD3C", // STONE - "0xbdBb63F938c8961AF31eaD3deBa5C96e6A323DD1", // eDLLR - "0xbdab72602e9AD40FC6a6852CAf43258113B8F7a5", // eSOV - "0xe7c3755482d0dA522678Af05945062d4427e0923", // ALEX - ADDRESSES.ethereum.LBTC, // LBTC - -]; - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - tokens, - owners: [ - "0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7", - "0x091dF5E1284E49fA682407096aD34cfD42B95B72", - "0x450D55a4B4136805B0e5A6BB59377c71FC4FaCBb", - "0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E" - ], - fetchCoValentTokens: true, - }), - }, -}; - diff --git a/projects/boba/index.js b/projects/boba/index.js deleted file mode 100644 index e04c31c408e..00000000000 --- a/projects/boba/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xdc1664458d2f0B6090bEa60A8793A4E66c2F1c00", - "0x1A26ef6575B7BBB864d984D9255C069F6c361a14", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/bodega-market/index.js b/projects/bodega-market/index.js deleted file mode 100644 index 4b82e57a3f4..00000000000 --- a/projects/bodega-market/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano") -const V2_MARKET_CREATION_SCRIPT_ADDRESS = 'addr1xy397mvr7dcm9a0jlevdh78d2vxse5upewend0m76rkw6ch5rawx2k37hx9mjk6pr0n0fg4rp7sswpv7pywfpvvuj6ks3rknx4' -const V2_MARKET_POSITIONS_SCRIPT_ADDRESS = 'addr1x99yh3eglqg320ee4yeefvafc7h9fk7khk8xwp5hqcq524l5rawx2k37hx9mjk6pr0n0fg4rp7sswpv7pywfpvvuj6ksj58rfr' -const V3_MARKET_CREATION_SCRIPT_ADDRESS = 'addr1x8x7nn5lch2uawxct2hjr06kgsplxu9rpm8gg9tyffv4u8agl7dv5f8n43cyguzxv2xu3vnqdynvj5nxu2yere25k4kqt4qep6' -const V3_MARKET_POSITIONS_SCRIPT_ADDRESS = 'addr1xx25vyyteavkeddsueufzr4ahgsa987fafvhv032tnmvg0dgl7dv5f8n43cyguzxv2xu3vnqdynvj5nxu2yere25k4kqf0df9x' - -async function tvl() { - return sumTokens2({ owners: [V2_MARKET_CREATION_SCRIPT_ADDRESS, V2_MARKET_POSITIONS_SCRIPT_ADDRESS, V3_MARKET_CREATION_SCRIPT_ADDRESS, V3_MARKET_POSITIONS_SCRIPT_ADDRESS] }) -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - } -} diff --git a/projects/bodhfinance/index.js b/projects/bodhfinance/index.js deleted file mode 100644 index 6896d33c98b..00000000000 --- a/projects/bodhfinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports } = require('../helper/compound') - -const WETH = ADDRESSES.metis.Metis -const bETH = "0xe970c37243F3d0B2AeB041b855Ef6466CB140BcA" -const unitroller = "0x97b491744587d05ca33e84bB18B61Df9B3986DcE" - -const { tvl, borrowed } = compoundExports( - unitroller, bETH, ); - -module.exports = { - deadFrom: '2023-04-17', - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - boba: { tvl, borrowed } -} - -module.exports.boba.borrowed = () => ({}) // bad debt diff --git a/projects/bogged.js b/projects/bogged.js deleted file mode 100644 index 84f399d8574..00000000000 --- a/projects/bogged.js +++ /dev/null @@ -1,24 +0,0 @@ -const { stakings } = require("./helper/staking"); - -const stakingContracts = [ - "0xc3ab35d3075430f52D2636d08D4f29bD39a18B65", - "0xcD48268d66068963242681Ed7ca39d349Fb690B9", - "0x2F0596b989d79fda9b0A89F57D982ea02f8D978B", -]; -const boggedToken = "0xb09fe1613fe03e7361319d2a43edc17422f36b09"; - -const lpContracts = [ - "0x2F0596b989d79fda9b0A89F57D982ea02f8D978B", - "0xc3ab35d3075430f52D2636d08D4f29bD39a18B65", -]; -const lpAddresses = [ - "0xdD901faf9652D474b0A70263E13DA294990d49AE", -]; - -module.exports = { - bsc: { - staking: stakings(stakingContracts, boggedToken), - pool2: stakings(lpContracts, lpAddresses), - tvl: () => ({}), - }, -} \ No newline at end of file diff --git a/projects/bolide/index.js b/projects/bolide/index.js deleted file mode 100644 index 1a2d084aac1..00000000000 --- a/projects/bolide/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { staking } = require("../helper/staking") -const { pool2 } = require("../helper/pool2") -const ADDRESSES = require('../helper/coreAssets.json') - -const VAULTS = { - bsc: { - STABLECOINS: '0xf1f25A26499B023200B3f9A30a8eCEE87b031Ee1', - ETH: '0x941ef9AaF3277052e2e6c737ae9a75b229A20988', - BTC: '0xed18f1CE58fED758C7937cC0b8BE66CB02Dc45c6', - ALTCOINS: '0x5d735e9ffE9664B80c405D16921912E5B989688C', - }, - polygon: { - STABLECOINS: '0x0aF9F3297f34921Acd5Ac81970929964c9f3d0a7', - } -} - -async function tvl(api) { - const balances = {}; - const vaults = Object.values(VAULTS[api.chain]) - const bals = await api.multiCall({ abi: 'uint256:getTotalDeposit', calls: vaults}) - let usd = 0 - if(api.chain === 'bsc') { - usd = bals.reduce((acc, i) => Number(acc) + Number(i), 0) - } else { - usd = bals.reduce((acc, i) => Number(acc) + Number(i)/1e12, 0) - } - balances[`${api.chain}:${ADDRESSES[api.chain].USDT}`] = usd - return balances -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl, - staking: staking('0x3782c47e62b13d579fe748946aef7142b45b2cf7', '0x766AFcf83Fd5eaf884B3d529b432CA27A6d84617'), - pool2: pool2('0x3782c47e62b13d579fe748946aef7142b45b2cf7', '0x12c35ed2405bc70721584594723351bf5db6235c'), - }, - polygon: { tvl, } -} diff --git a/projects/boltz.js b/projects/boltz.js deleted file mode 100644 index 717ab44159e..00000000000 --- a/projects/boltz.js +++ /dev/null @@ -1,18 +0,0 @@ -// Boltz is a Non-Custodial Bitcoin Bridge that let's users swap between different Bitcoin layers while staying in full control. -// Atomic Swaps ensure that users can swap between different Bitcoin layers without having to trust a third party. -// Boltz currently support the Bitcoin mainchain, the Lightning Network, the Liquid Network and Rootstock -// Providing a TVL is only possible on the Rootstock chain, as other layers are not based on the EVM model. - -const ADDRESSES = require('./helper/coreAssets.json') - -async function tvl(api) { - const swapCapital = '0x1Bdf482F5da32ef51c20D9A94960385c5be9AaB7' - return api.sumTokens({ owner: swapCapital, tokens: [ADDRESSES.null]}) -} - -module.exports = { - methodology: `TVL only accounts for current Boltz RBTC balance`, - rsk: { - tvl, - } -} \ No newline at end of file diff --git a/projects/bombmoney/index.js b/projects/bombmoney/index.js deleted file mode 100644 index b6db5ee98a3..00000000000 --- a/projects/bombmoney/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const sdk = require("@defillama/sdk"); -const {pool2} = require("../helper/pool2"); -const { staking } = require("../helper/staking"); - -const token = "0x522348779DCb2911539e76A1042aA922F9C47Ee3"; -const shares = "0x531780FAcE85306877D7e1F05d713D1B50a37F7A"; -const shareRewardPool = "0x1083926054069AaD75d7238E9B809b0eF9d94e5B"; -const masonry = "0xcAF7D9CE563E361A304FB6196499c1Dfd11b5991"; - -const pancakeLPs = [ - "0x1303246855b5B5EbC71F049Fdb607494e97218f8", // BSHARE-WBNB - "0x84392649eb0bC1c1532F2180E58Bae4E1dAbd8D6" // BOMB-BTCB -] - -module.exports = { - bsc: { - tvl: async () => ({}), - staking: staking(masonry, shares), - pool2: pool2(shareRewardPool, pancakeLPs, "bsc", addr=>`bsc:${addr}`) - } -} \ No newline at end of file diff --git a/projects/bond-appetit.js b/projects/bond-appetit.js deleted file mode 100644 index a7a3869328b..00000000000 --- a/projects/bond-appetit.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - ethereum: { - tvl: () => ({}) - }, - deadFrom: '2023-08-19', -} diff --git a/projects/bond-protocol/index.js b/projects/bond-protocol/index.js deleted file mode 100644 index cd1da4515f0..00000000000 --- a/projects/bond-protocol/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { factory: '0x007FE70dc9797C4198528aE43d8195ffF82Bdc95', fromBlock: 43273954, tellerFactory: '0x007f7735baf391e207e3aa380bb53c4bd9a5fed6', tellerBlock: 43273983, }, - ethereum: { factory: '0x007FE70dc9797C4198528aE43d8195ffF82Bdc95', fromBlock: 15998037, tellerFactory: '0x007f7735baf391e207e3aa380bb53c4bd9a5fed6', tellerBlock: 15998038, }, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, tellerFactory, tellerBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tellerLogs = await getLogs({ - api, - target: tellerFactory, - topics: ['0xd5a20d99fad8d4fec2eae3eb7d21c0bebeaecce7cf87b698ddba05071e7bde27'], - eventAbi: 'event ERC1155BondTokenCreated (uint256 tokenId, address indexed underlying, uint48 indexed expiry)', - onlyArgs: true, - fromBlock: tellerBlock, - }) - const tellerTokens = tellerLogs.map(i => i.underlying) - const logs = await getLogs({ - api, - target: factory, - topics: ['0x4fd9a46575749d9ddf290fadaa5729fc640790e2b6360df8cc8af35e418dcec0'], - eventAbi: 'event ERC20BondTokenCreated (address bondToken, address indexed underlying, uint48 indexed expiry)', - onlyArgs: true, - fromBlock, - }) - const tokens = logs.map(i => i.underlying) - return sumTokens2({ api, ownerTokens: [[tokens, factory], [tellerTokens, tellerFactory]], }) - } - } -}) \ No newline at end of file diff --git a/projects/bondle/index.js b/projects/bondle/index.js deleted file mode 100644 index 58f89b808e4..00000000000 --- a/projects/bondle/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const routers = [ - "0x9272ddC213739Dad3B499C2C1245ff4A2cDe313A", - "0xc4d1a89d5BCC5A13c59fe2f3820E20B4f5d3095e", - "0x97b962Ab399beBF439a4a303d9754e79d6925EDa" -]; - - -const tokens = [coreAssets.null]; - -module.exports = { - shibarium: { - tvl: sumTokensExport({ owners: routers, tokens }) - }, -}; \ No newline at end of file diff --git a/projects/bondlink/index.js b/projects/bondlink/index.js deleted file mode 100644 index d5943e29ba5..00000000000 --- a/projects/bondlink/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const USDb = "0x1623A55e0BA2384afD7511D6d7f77CF28790B5c5"; - -const abis = { - mint: "event Mint(address indexed user, uint256 indexed amount)", - burn: "event Burn(address indexed user, uint256 indexed amount)" -} - -const tvl = async (api) => { - const [mintedLogs, burntLogs] = await Promise.all([ - getLogs({ api, target: USDb, extraKey: 'mint', eventAbi: abis.mint, onlyArgs: true, fromBlock: 21637199 }), - getLogs({ api, target: USDb, extraKey: 'burn', eventAbi: abis.burn, onlyArgs: true, fromBlock: 21637199 }) - ]) - - const tvlValue = mintedLogs.reduce((sum, log) => sum + log[1], 0n) - burntLogs.reduce((sum, log) => sum + log[1], 0n) - api.addUSDValue(Number(tvlValue) / 10 ** 18) -} - -module.exports = { - ethereum : { tvl } -} diff --git a/projects/bonedex/index.js b/projects/bonedex/index.js deleted file mode 100644 index 71b35aad749..00000000000 --- a/projects/bonedex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shibarium', '0x907599886DeBF90CCB1e9B446b31D52bDD25926D') \ No newline at end of file diff --git a/projects/boneriumtech/index.js b/projects/boneriumtech/index.js deleted file mode 100644 index 5b7b87e1f4f..00000000000 --- a/projects/boneriumtech/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - bone: { - // tvl: getUniTVL({ factory: '0x9e98c46825da5f6622eBFA0bc8d278c61b763802', useDefaultCoreAssets: true, }) - tvl: () => ({}), - }, - deadFrom: "2023-09-10", -} \ No newline at end of file diff --git a/projects/bonk-sol/index.js b/projects/bonk-sol/index.js deleted file mode 100644 index 913d9a817cc..00000000000 --- a/projects/bonk-sol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('ArAQfbzsdotoKB5jJcZa3ajQrrPcWr2YQoDAEAiFxJAC', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/bonkswap/index.js b/projects/bonkswap/index.js deleted file mode 100644 index a5d031dff50..00000000000 --- a/projects/bonkswap/index.js +++ /dev/null @@ -1,212 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, idl.metadata.address, provider) - const data = await program.account.pool.all() - return sumTokens2({ tokenAccounts: data.map(({account: i}) => [i.poolXAccount.toString(), i.poolYAccount.toString()]).flat()}) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} - -const idl = { - version: '0.1.1', - name: 'bonkswap', - instructions: [], - accounts: [ - { - name: 'pool', - type: { - kind: 'struct', - fields: [ - { - name: 'tokenX', - type: 'publicKey' - }, - { - name: 'tokenY', - type: 'publicKey' - }, - { - name: 'poolXAccount', - type: 'publicKey' - }, - { - name: 'poolYAccount', - type: 'publicKey' - }, - { - name: 'admin', - type: 'publicKey' - }, - { - name: 'projectOwner', - type: 'publicKey' - }, - { - name: 'tokenXReserve', - type: { - defined: 'Token' - } - }, - { - name: 'tokenYReserve', - type: { - defined: 'Token' - } - }, - { - name: 'selfShares', - type: { - defined: 'Token' - } - }, - { - name: 'allShares', - type: { - defined: 'Token' - } - }, - { - name: 'buybackAmountX', - type: { - defined: 'Token' - } - }, - { - name: 'buybackAmountY', - type: { - defined: 'Token' - } - }, - { - name: 'projectAmountX', - type: { - defined: 'Token' - } - }, - { - name: 'projectAmountY', - type: { - defined: 'Token' - } - }, - { - name: 'mercantiAmountX', - type: { - defined: 'Token' - } - }, - { - name: 'mercantiAmountY', - type: { - defined: 'Token' - } - }, - { - name: 'lpAccumulatorX', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'lpAccumulatorY', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'constK', - type: { - defined: 'Product' - } - }, - { - name: 'price', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'lpFee', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'buybackFee', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'projectFee', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'mercantiFee', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'farmCount', - type: 'u64' - }, - { - name: 'bump', - type: 'u8' - } - ] - } - }, - ], - types: [ - { - name: 'FixedPoint', - type: { - kind: 'struct', - fields: [ - { - name: 'v', - type: 'u128' - } - ] - } - }, - { - name: 'Token', - type: { - kind: 'struct', - fields: [ - { - name: 'v', - type: 'u64' - } - ] - } - }, - { - name: 'Product', - type: { - kind: 'struct', - fields: [ - { - name: 'v', - type: 'u128' - } - ] - } - }, - ], - errors: [], - metadata: { - address: 'BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p', - } -} diff --git a/projects/bonqdao/index.js b/projects/bonqdao/index.js deleted file mode 100644 index 99680b00bcf..00000000000 --- a/projects/bonqdao/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { stakings } = require("../helper/staking"); -const TROVE_FACTORY_CONTRACT = '0x3bB7fFD08f46620beA3a9Ae7F096cF2b213768B3' -const ALBT = '0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0' // Ethereum version of AllianceBlock Token -const BEUR = '0x338Eb4d394a4327E5dB80d08628fa56EA2FD4B81'.toLowerCase() // BEUR Token pegged to the Euro -const BNQ = '0x91eFbe97e08D0ffC7d31381c032D05FAd8E25aAA' // BONQ Utility Token -const BNQ_STAKING_CONTRACT = '0xb1b72B3579b03dFdCfF3195486277605e55Cf703' -const BNQ_BEUR_UNIV3_POOL = '0xA96373C7a591fd21b86E0c9b8E156CC81E6cBb5e' -const TOKEN_COLLATERAL = [ - ADDRESSES.polygon.WMATIC_2, // WMATIC - ADDRESSES.polygon.USDC, // USDC - '0x35b2ece5b1ed6a7a99b83508f8ceeab8661e0632', // WALBT (Wrapped AllianceBlock Token) - ADDRESSES.polygon.WETH_1, // WETH - ADDRESSES.polygon.DAI, // DAI -] -const LP_COLLATERAL = [ - '0xa1dd21527c76bb1a3b667149e741a8b0f445fae2', // Arrakis Vault V1 BEUR/DAI - '0x388e289a1705fa7b8808ab13f0e0f865e2ff94ee' // Arrakis Vault V1 USDC/BEUR -] - -const abi = { - getUnderlyingBalances: 'function getUnderlyingBalances() public view returns (uint256 amount0Current, uint256 amount1Current)', - totalCollateral: 'function totalCollateral(address _token) external view returns (uint256)', -} - -async function getPairTVL(balances, contract, api) { - const [ - uBals, lpBal, totalSupply, token0, token1, - ] = await Promise.all([ - api.call({ abi: abi.getUnderlyingBalances, target: contract, }), - api.call({ target: TROVE_FACTORY_CONTRACT, params: contract, abi: abi.totalCollateral, }), - api.call({ target: contract, abi: 'erc20:totalSupply', }), - api.call({ abi: 'address:token0', target: contract, }), - api.call({ abi: 'address:token1', target: contract, }), - ]) - - const ratio = lpBal / totalSupply - if (token0.toLowerCase() !== BEUR) - sdk.util.sumSingleBalance(balances, token0, uBals[0] * ratio, api.chain) - if (token1.toLowerCase() !== BEUR) - sdk.util.sumSingleBalance(balances, token1, uBals[1] * ratio, api.chain) -} - -async function tvl(api) { - const balances = {}; - - const tokenUnderlying = await api.multiCall({ - target: TROVE_FACTORY_CONTRACT, - calls: TOKEN_COLLATERAL, - abi: abi.totalCollateral, - }); - tokenUnderlying.forEach((e, index) => { - // use ALBT price from Ethereum, WALBT not available on Coingecko - if (TOKEN_COLLATERAL[index] === '0x35b2ece5b1ed6a7a99b83508f8ceeab8661e0632') { - return sdk.util.sumSingleBalance(balances, ALBT, e); - } - return sdk.util.sumSingleBalance(balances, TOKEN_COLLATERAL[index], e, api.chain); - }) - - await Promise.all(LP_COLLATERAL.map(i => getPairTVL(balances, i, api))) - - return balances; -} - -module.exports = { - // hallmarks: [ - // [1675252800,"Oracle Hack"] - // ], - deadFrom: '2023-02-01', - methodology: 'Summation of the collateral deposited in BonqDAO Troves (personal lending vaults)', - polygon: { - tvl, - staking: stakings([BNQ_STAKING_CONTRACT], BNQ), - // pool2: stakings([BNQ_BEUR_UNIV3_POOL], [BEUR, BNQ]) - } -}; diff --git a/projects/bonsai-strike/index.js b/projects/bonsai-strike/index.js deleted file mode 100644 index dd5ce058702..00000000000 --- a/projects/bonsai-strike/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - bsc: { - tvl: sumTokensExport({ owners: ['0x01cEF5B79044E1CCd9b6Ad76c3d0985b5A33F769', '0x4b9d1cf13129a79d92bef13dac908e9ffc665ad8'], tokens: [ADDRESSES.bsc.WBNB]}), - } -}; \ No newline at end of file diff --git a/projects/bonzo/index.js b/projects/bonzo/index.js deleted file mode 100644 index a0262ffd942..00000000000 --- a/projects/bonzo/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { aaveV2Export, methodology } = require("../helper/aave") - -module.exports = { - timetravel: false, - methodology, - hedera: aaveV2Export('0x236897c518996163E7b313aD21D1C9fCC7BA1afc'), -} \ No newline at end of file diff --git a/projects/boobs-fi/index.js b/projects/boobs-fi/index.js deleted file mode 100644 index a27808bd614..00000000000 --- a/projects/boobs-fi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "base", - masterchef: "0xF40E05313592008Def7B7e247fbe1177aE902c5A", - nativeTokens: ["0x66b70221b22925c4663C46cd15f2f2EaaC822CEB"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); \ No newline at end of file diff --git a/projects/boofinance/abi.json b/projects/boofinance/abi.json deleted file mode 100644 index 73f681f5427..00000000000 --- a/projects/boofinance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "tokenList": "address[]:tokenList", - "tokenParameters": "function tokenParameters(address) view returns (address rewarder, address strategy, uint256 lastRewardTime, uint256 lastCumulativeReward, uint256 storedPrice, uint256 accZBOOFIPerShare, uint256 totalShares, uint256 totalTokens, uint128 multiplier, uint16 withdrawFeeBP)" -} \ No newline at end of file diff --git a/projects/boofinance/index.js b/projects/boofinance/index.js deleted file mode 100644 index 67e8836e268..00000000000 --- a/projects/boofinance/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const token0Abi = 'address:token0' -const token1Abi = 'address:token1' -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); -const BigNumber = require("bignumber.js"); - -const boofi = "0xb00f1ad977a949a3ccc389ca1d1282a2946963b0"; -const stakingAddress = "0x67712c62d1DEAEbDeF7401E59a9E34422e2Ea87c"; -const hauntedHouse = "0xB178bD23876Dd9f8aA60E7FdB0A2209Fe2D7a9AB"; - -const transform = { - "0x4f60a160d8c2dddaafe16fcc57566db84d674bd6": "harmony:" + ADDRESSES.harmony.JEWEL, - [ADDRESSES.avax.USDC]: "avax:" + ADDRESSES.avax.USDC_e -} - -const joe = ADDRESSES.avax.JOE; -const xjoe = ADDRESSES.avax.xJOE; - -async function calcTvl(block, chain, pool2, api) { - let balances = {}; - const tokenList = (await api.call({ target: hauntedHouse, abi: abi.tokenList, })); - const tokenBalances = (await api.multiCall({ target: hauntedHouse, calls: tokenList, abi: abi.tokenParameters, })); - const symbols = (await api.multiCall({ calls: tokenList, abi: "erc20:symbol", })); - const token0Address = (await api.multiCall({ calls: tokenList, abi: token0Abi, permitFailure: true, })); - const token1Address = (await api.multiCall({ calls: tokenList, abi: token1Abi, permitFailure: true, })); - - let lpPositions = []; - for (let i = 0; i < tokenList.length; i++) { - let token = tokenList[i].toLowerCase(); - let balance = tokenBalances[i].totalShares; - let symbol = symbols[i]; - let token0 = token0Address[i] ?? ''; - let token1 = token1Address[i] ?? ''; - if (token === boofi) continue; - if (pool2 && !symbol.endsWith("LP") && !symbol.endsWith("PGL")) continue; - if (!symbol.endsWith("LP") && !symbol.endsWith("PGL")) { - if (token === xjoe) { - const joeBalance = (await api.call({ target: joe, params: xjoe, abi: 'erc20:balanceOf' })) - const xJoeSupply = (await api.call({ target: xjoe, abi: 'erc20:totalSupply' })) - sdk.util.sumSingleBalance(balances, `avax:${joe}`, balance * joeBalance / xJoeSupply); - continue; - } - if (transform[token] !== undefined) { - token = transform[token]; - sdk.util.sumSingleBalance(balances, token, balance); - continue; - } - sdk.util.sumSingleBalance(balances, `${chain}:${token}`, balance); - continue; - } - token0 = token0.toLowerCase(); - token1 = token1.toLowerCase(); - if (pool2) { - if (token0 !== boofi && token1 !== boofi) continue; - } - else if (!pool2) { - if (token0 === boofi || token1 === boofi) continue; - } - lpPositions.push({ - token, - balance - }); - } - await unwrapUniswapLPs(balances, lpPositions, block, chain, addr => { - addr = addr.toLowerCase(); - if (transform[addr] !== undefined) { - return transform[addr]; - } - return `avax:${addr}`; - }) - return balances; -} - -async function tvl(api) { - return await calcTvl(api.block, "avax", false, api); -} - -async function pool2(api) { - return await calcTvl(api.block, "avax", true, api); -} - -module.exports = { - avax: { - tvl, - pool2, - staking: staking(stakingAddress, boofi) - } -} \ No newline at end of file diff --git a/projects/bookusd/index.js b/projects/bookusd/index.js deleted file mode 100644 index c1405249df2..00000000000 --- a/projects/bookusd/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { getLiquityTvl } = require("../helper/liquity.js"); - -// TroveManager holds total system collateral (deposited ETH) -const TROVE_MANAGER_ADDRESS = "0xFe5D0aBb0C4Addbb57186133b6FDb7E1FAD1aC15"; -const STAKING_ADDRESS = "0xD8eC53945788C2bC8990828a46fb2f408D8C3a17"; -const BUSS_ADDRESS = "0xfC35Bf79270bCad22Ce7dd5651Aa2435fce9b7C5" -const BOOK_ADDRESS = "0xC9Ad421f96579AcE066eC188a7Bba472fB83017F" - - -module.exports = { - start: '2025-04-26', - bsc: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS, { - // abis: { - // collateralToken: "address:collateralToken", - // }, - collateralToken: BOOK_ADDRESS, - nonNativeCollateralToken: true, - }), - } -} \ No newline at end of file diff --git a/projects/boom/index.js b/projects/boom/index.js deleted file mode 100644 index 9bddf0c405b..00000000000 --- a/projects/boom/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -const boomTokenAddress = "0xe88Ac56C4dedc973a0a26C062F0F07568dfb23FA" -const boomChefAddress = "0x5102697d717793a071bc188773dd401d0b5c5f0b" - -module.exports = masterchefExports({ - chain: 'polygon', - masterchef: boomChefAddress, - nativeToken: boomTokenAddress, - useDefaultCoreAssets: true, - poolInfoABI: 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accBoomPerShare)', -}) diff --git a/projects/boomswap/index.js b/projects/boomswap/index.js deleted file mode 100644 index 66b711360da..00000000000 --- a/projects/boomswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0xB438dee6a8875AFAbB8a82e86ef56C4DEEe5D1b5' -}) \ No newline at end of file diff --git a/projects/boop-fun/index.js b/projects/boop-fun/index.js deleted file mode 100644 index 9dc04864a19..00000000000 --- a/projects/boop-fun/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - return sumTokens2({api, tokensAndOwners: [[ADDRESSES.solana.SOL, 'GVVUi6DaocSEAp8ATnXFAPNF5irCWjCvmPCzoaGAf5eJ']]}) - -} - -async function staking() { - return sumTokens2({ tokenAccounts: ['BZgWzdxHqytYrn3EuvkozE1Hg38CD5ajjxBppRHuV1nQ'] }) -} - -module.exports = { - solana: { - tvl, - staking - }, -} \ No newline at end of file diff --git a/projects/borb/index.js b/projects/borb/index.js deleted file mode 100644 index c1c739fb692..00000000000 --- a/projects/borb/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const USDT_CONTRACT = ADDRESSES.bsc.USDT; -const USDTR_CONTRACT = "0x594Cc4566e38A6105a851F1389b47CC37c5a2a3D"; - -const USDC_CONTRACT = ADDRESSES.bsc.USDC; -const USDCR_CONTRACT = "0x4b970ED4E52088F8b8E62e2bF1772b545B97fd8f"; - -module.exports = { - methodology: "counts the number of USDT and USDC tokens in the BorB contracts.", - bsc: { - tvl: sumTokensExport({ tokensAndOwners: [ - [USDT_CONTRACT, USDTR_CONTRACT], - [USDC_CONTRACT, USDCR_CONTRACT], - ]}), - }, -}; diff --git a/projects/borgswap/abi.json b/projects/borgswap/abi.json deleted file mode 100644 index b46dcd99914..00000000000 --- a/projects/borgswap/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "masterFarmerPoolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accBSCXPerShare)", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accLqdrPerShare, uint16 depositFeeBP)", - "poolLength": "uint256:poolLength", - "balanceOf": "uint256:balanceOf", - "lpToken": "function lpToken(uint256) view returns (address)", - "strategies": "function strategies(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/borgswap/index.js b/projects/borgswap/index.js deleted file mode 100644 index e26643d27f6..00000000000 --- a/projects/borgswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const abi = require("./abi.json"); - -const MASTERCHEF = "0x4de6c2de6b9eBD974738686C9be7a31597146Ac6"; -const MASTERCHEF2 = "0x92eEd89eeC81d992FF9135Ee451008E93b83dD86"; -const MASTERCHEF3 = "0xC8FF977ee4e5EdA2D650C0e2706995a1DbB4926b"; -const MASTERCHEF4 = "0xaDb6C60f0D62d6e7583e4b7B3697aAAd723d4a85"; - -const { uniTvlExport, masterchefExports } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - -const mcExports = [MASTERCHEF, MASTERCHEF2, MASTERCHEF3, MASTERCHEF4].map(masterchef => masterchefExports({ - chain: 'fantom', - masterchef, - poolInfoABI: masterchef === MASTERCHEF4 ? abi.masterFarmerPoolInfo : abi.poolInfo, -})) - -module.exports = mergeExports([uniTvlExport('bsc', '0x40dFC2f530469452D5A9bB33356B071Be0758c4c'), ...mcExports]) \ No newline at end of file diff --git a/projects/boringdao/contracts.json b/projects/boringdao/contracts.json deleted file mode 100644 index 5309f0d085d..00000000000 --- a/projects/boringdao/contracts.json +++ /dev/null @@ -1,254 +0,0 @@ -{ - "ethereum": { - "contracts": { - "NBridge": "0xdBe43C732080271Fd7588aa5fe71bd07456D9173", - "BoringChefSatellite": "0x204c87CDA5DAAC87b2Fc562bFb5371a0B066229C", - "TwoWayV2": "0xecaD1ab3464ECcC7536af6aFeE414dF873495616", - "tunnel": "0x258a1eb6537ae84cf612f06b557b6d53f49cc9a1" - }, - "tokens": { - "VEMP": "0xcFEB09C3c5F0f78aD72166D55f9e6E9A60e96eEC", - "xVEMP": "0x4a4e2d4859af854d2a3fc6df295843d21e70cc78", - "FIN": "0x054f76beed60ab6dbeb23502178c52d6c5debe40", - "USDT": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "AMY": "0xb6225104d9434CC148570cDDEEf19B2e46dA350D", - "AAVE": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", - "CRV": "0xD533a949740bb3306d119CC777fa900bA034cd52", - "USDC": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "FIRE": "0x0f0Dd5E2c0e0c4A41F8908D73D36B8D142F6745a", - "iZi": "0x9ad37205d608b8b219e6a2573f922094cec5c200", - "ETH": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "METIS": "0x9E32b13ce7f2E80A01932B42553652E053D6ed8e", - "PBTC": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "AAC": "0xe75ad3aAB14E4B0dF8c5da4286608DaBb21Bd864", - "NODE": "0x0C3eF32f802967DB75B9D49fE1e76620151cCB81" - } - }, - "optimism": { - "contracts": { - "TwoWayV2": "0x29414EC76d79Ff238E5E773322799d1c7Ca2443F" - }, - "tokens": { - "USDT": "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - "USDC": "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - "ETH": "0x4200000000000000000000000000000000000006", - "PBTC": "0x68f180fcCe6836688e9084f035309E29Bf0A2095" - } - }, - "bsc": { - "contracts": { - "NBridge": "0xe7b388d44fA9069385E174efe6f10616B149Fe86", - "BoringChefUsdtLP": "0xa056c100cEB4111899916Cf2d361152eE9147aDF", - "TwoWayV2": "0x0075Ac0C662a5B655060d1519fF739D834078705" - }, - "tokens": { - "VEMP": "0xeDF3ce4Dd6725650a8e9398e5C6398D061Fa7955", - "xVEMP": "0xAe9a0E6Bd6CB21cF36B773d47923980b410D3C85", - "USDT": "0x55d398326f99059ff775485246999027b3197955", - "WSG": "0xA58950F05FeA2277d2608748412bf9F802eA4901", - "USDC": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "lowb": "0x843d4a358471547f51534e3e51fae91cb4dc3f28", - "LOL": "0x55E3f23B563769426f8Aa4059e9977689c74B47E", - "FIRE": "0x0f0Dd5E2c0e0c4A41F8908D73D36B8D142F6745a", - "ETH": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", - "PBTC": "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c" - } - }, - "polygon": { - "contracts": { - "NBridge": "0x64E4E7840bC20959c8BA984Db82fA0132D9b04dD", - "BoringChef": "0x5304990549f9f6e24C8d726a153c62dbD7F3333a", - "BoringChefUsdtLP": "0x9159b63bFD1566ab4c99Ee1Ff21575C86d2cEBB9", - "TwoWayV2": "0x6dc551088AFAf828b95a9c9Ad590AeFE797c8e87", - "TwoWayChef": "0xB225cC2207FECC82806042cEB386eF2b23E2464c", - "StakingRewardForChefoUSDT": "0x421A538234aF050c77eF735b23A1Db03243B0e4b", - "StakingRewardForChefoUSDC": "0xBb5eA9b628f8A93c653c0eaC986238407930059d", - "StakingRewardForChefoLOL": "0x70dfE627c3b04FDF8E8C9572FcEC9E098FeD552d", - "StakingRewardForChefoiZi": "0x091C23C213945b1F96e4BA660bdee1FD61663d11", - "StakingRewardForChefoFIN": "0x6B906d17301447117C83F12DEc183331Ac3BCaa5", - "StakingRewardForChefoMETIS": "0xc5e8228b910722C6B7aE77221dd96DC134B9C861", - "StakingRewardForChefoETH": "0x775E38077FDbdAfCB777215ccfB41cf8FC949019" - }, - "tokens": { - "USDT": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - "oUSDT": "0x413cfE1C41F98879365D665CACB7E79a60001fEE", - "USDC": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "oUSDC": "0x8DE93f998b6b0ddA780Ee12B97dde1F2fADd3B1d", - "oLOL": "0x0D9ceFE09299C8c3Cbe1F2706fbcEdBc35d73052", - "iZi": "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", - "oiZi": "0x79904eC9De1FCCF7ca50fE3f8430e922d53e07e6", - "FIN": "0x576c990a8a3e7217122e9973b2230a3be9678e94", - "oFIN": "0x4D98192A8A078D0937c8FCa144C07e741364BdcA", - "ETH": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", - "oMETIS": "0x746158B125447C909291cf3B271C929D156cBAd2", - "oETH": "0x0caD6ef3383C4349c68f072076BCDE7B7623576B", - "PBTC": "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", - "INS": "0xb988Bd378A0754957d5D9471C96E0F8051645a26" - } - }, - "fantom": { - "contracts": { - "NBridge": "0x77B3aa18D89ea24e4AF7BB9BC221D49FD5534c19", - "BoringChef": "0x1f5330323b12c62eB1258FA227D88C8E63fDb855", - "BoringChefUsdtLP": "0x6D6D851bE4Ae838f32B0694a2561FDe3a18765e6", - "TwoWayV2": "0x66D6A03394dC9D155F3704e14C6c0F03076B40D1" - }, - "tokens": { - "USDT": "0x049d68029688eabf473097a2fc38ef61633a3c7a", - "USDC": "0x04068da6c83afcfa0e13ba15a6696662335d5b75", - "ETH": "0x74b23882a30290451A17c44f4F05243b6b58C76d" - } - }, - "boba": { - "contracts": { - "NBridge": "0x225247882FD7396c62E29707DA0890151208161a", - "BoringChefSec": "0xB238a595e9797E009eFD5f938C9918181662066C" - }, - "tokens": { - "USDT": "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d", - "USDC": "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc" - } - }, - "metis": { - "contracts": { - "NBridge": "0xD01a5051253007ae0b7123b50410E3B5A3f6cF95", - "TwoWayV2": "0x57E05346A576A3f75972aC0E7c9d9f46765B346E" - }, - "tokens": { - "CRV": "0x87DD4a7Ad23B95cD9fF9C26B5cF325905CaF8663", - "AAVE": "0x68D97B7A961a5239B9F911DA8dEb57F6eF6e5e28", - "WSG": "0x4F497F9D85A6fE135fFca99f0f253919fE827211", - "USDT": "0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC", - "USDC": "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21", - "lowb": "0xd5B59f9F35F9a5bE75E7357798BF15A4E958B6B2", - "LOL": "0x55E3f23B563769426f8Aa4059e9977689c74B47E", - "ETH": "0x420000000000000000000000000000000000000A", - "METIS": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" - } - }, - "arbitrum": { - "contracts": { - "TwoWayV2": "0x2e220E3ab85fC4A46F770A34eF2CdDc8074E4689", - "BoringChefSec": "0x216f332D17145871D1d5ff5fEB4b08513Ef7Cc21", - "NBridge": "0x9d8bDAa1dDE16da55c86cCaF12C81647ff9858B8" - }, - "tokens": { - "USDT": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - "AMY": "0x8fbd420956fdd301f4493500fd0bcaaa80f2389c", - "USDC": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - "ETH": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - "PBTC": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f" - } - }, - "avax": { - "contracts": { - "NBridge": "0x2e220E3ab85fC4A46F770A34eF2CdDc8074E4689", - "BoringChef": "0x61CF453D7930ECf145f3Dd29fCE4d9c15F9405c3", - "BoringChefUsdtLP": "0xAf9f062613dF193dCF4d4008ACC3bb9280c87323", - "TwoWayV2": "0x12f3a5af0a82af48af89FA5BAcf6307e1b226903" - }, - "tokens": { - "USDT": "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", - "USDC": "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "ETH": "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", - "PBTC": "0x50b7545627a5162F82A992c33b87aDc75187B218" - } - }, - "harmony": { - "contracts": { - "NBridge": "0x216f332D17145871D1d5ff5fEB4b08513Ef7Cc21", - "TwoWayV2": "0x7F942c3f0F61dE5133447B8A4974969EA36a7f19", - "BoringChef": "0xB98863f0a0cFE367496bFa393dA4D408Bee0A5Bf", - "BoringChefUsdtLP": "0x39c412fa81dAe9673A3E00e83B2F58a08DD8Fbc9" - }, - "tokens": { - "USDT": "0x3c2b8be99c50593081eaa2a724f0b8285f5aba8f", - "USDC": "0x985458e523db3d53125813ed68c274899e9dfab4", - "ONE": "0x323B6b60B286f69D2cEf2277A71038FbDfd18F86", - "ETH": "0x6983d1e6def3690c4d616b13597a09e6193ea013" - } - }, - "okexchain": { - "contracts": { - "NBridge": "0xb9A9587eee2Da928f72A5846440E81C7426d595f", - "BoringChef": "0xef002868F3Ee02a20ac6d7fd8381A83a8C127005", - "BoringChefUsdtLP": "0xAd2F796199ff714AfE4f6716C50fF6dc431322C8", - "TwoWayV2": "0xf82B64169f3F43706F423c3246a10D190D12B576" - }, - "tokens": { - "FIN": "0x8d3573f24c0aa3819a2f5b02b2985dd82b487715", - "WrapFIN": "0x2B21237BA30deF78EC551a10C99d656F90Eb10fC", - "USDT": "0x382bB369d343125BfB2117af9c149795C6C65C50", - "VEMP": "0x2c9a1d0e1226939edb7bbb68c43a080c28743c5c", - "xVEMP": "0x861afdBC2F3DF53F07d397EacfA443683653cA99", - "USDC": "0xc946daf81b08146b1c7a8da2a851ddf2b3eaaf85", - "ETH": "0xEF71CA2EE68F45B9Ad6F72fbdb33d707b872315C", - "PBTC": "0x54e4622dc504176b3bb432dccaf504569699a7ff" - } - }, - "xdai": { - "contracts": { - "NBridge": "0xE3B59FD01c0155A98146a6E0Beb8376B751363fc", - "BoringChef": "0x560EB8c4B113ce38da680DafA3388Ffbeb61B14D", - "BoringChefUsdtLP": "0x0Bf101ab5CC8C6Be93D9fb6742e1e4d724aFa414", - "TwoWayV2": "0x805675c662CF99B0156C8D1D76EAB86a830d9E8D" - }, - "tokens": { - "USDT": "0x4ECaBa5870353805a9F068101A40E0f32ed605C6", - "USDC": "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83", - "ETH": "0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1" - } - }, - "heco": { - "contracts": { - "NBridge": "0xE3B59FD01c0155A98146a6E0Beb8376B751363fc", - "BoringChef": "0x560EB8c4B113ce38da680DafA3388Ffbeb61B14D", - "BoringChefUsdtLP": "0x0Bf101ab5CC8C6Be93D9fb6742e1e4d724aFa414", - "TwoWayV2": "0x66D6A03394dC9D155F3704e14C6c0F03076B40D1" - }, - "tokens": { - "USDT": "0xa71edc38d189767582c38a3145b5873052c3e47a", - "USDC": "0x9362bbef4b8313a8aa9f0c9808b80577aa26b73b", - "ETH": "0x64FF637fB478863B7468bc97D30a5bF3A428a1fD", - "HBTC": "0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa" - } - }, - "oasis": { - "contracts": { - "NBridge": "0x87DD4a7Ad23B95cD9fF9C26B5cF325905CaF8663" - }, - "tokens": {} - }, - "kcc": { - "contracts": { - "TwoWayV2": "0x87DD4a7Ad23B95cD9fF9C26B5cF325905CaF8663" - }, - "tokens": { - "USDT": "0x0039f574eE5cC39bdD162E9A88e3EB1f111bAF48", - "USDC": "0x980a5AfEf3D17aD98635F6C5aebCBAedEd3c3430", - "ETH": "0xf55aF137A98607F7ED2eFEfA4cd2DfE70E4253b1", - "PBTC": "0xfa93c12cd345c658bc4644d1d4e1b9615952258c" - } - }, - "aurora": { - "contracts": { - "NBridge": "0xB98863f0a0cFE367496bFa393dA4D408Bee0A5Bf", - "TwoWayV2": "0x68D97B7A961a5239B9F911DA8dEb57F6eF6e5e28" - }, - "tokens": { - "USDC": "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802", - "USDT": "0x4988a896b1227218e4A686fdE5EabdcAbd91571f", - "ONE": "0x731203A6E33001d76AF6da49096fC8753b9E4932", - "ETH": "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB" - } - }, - "iotex": { - "contracts": { - "TwoWayV2": "0x87DD4a7Ad23B95cD9fF9C26B5cF325905CaF8663" - }, - "tokens": { - "USDC": "0x3b2bf2b523f54c4e454f08aa286d03115aff326c", - "USDT": "0x6fbcdc1169b5130c59e72e51ed68a84841c98cd1" - } - } -} \ No newline at end of file diff --git a/projects/boringdao/index.js b/projects/boringdao/index.js deleted file mode 100644 index 4259bd6f106..00000000000 --- a/projects/boringdao/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens") -const contracts = require("./contracts.json"); -const sdk = require("@defillama/sdk"); -const { staking } = require('../helper/staking') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - - -function chainTvl(chain) { - const owners = Object.values(contracts[chain].contracts) - const tokens = Object.values(contracts[chain].tokens) - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens }), - } -} - -module.exports = { - timetravel: false, - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.boringdao }) - }, - litecoin: { - tvl: async (_, block) => { - return { - litecoin: (await sdk.api.erc20.totalSupply({ target: '0x07C44B5Ac257C2255AA0933112c3b75A6BFf3Cb1', block })).output / 1e18 - } - } - }, - doge: { - tvl: async (_, block) => { - return { - dogecoin: (await sdk.api.erc20.totalSupply({ target: '0x9c306A78b1a904e83115c05Ac67c1Ef07C653651', block })).output / 1e18 - } - } - } -}; - -Object.keys(contracts).forEach(chainTvl) - -module.exports.ethereum.staking = staking('0x204c87CDA5DAAC87b2Fc562bFb5371a0B066229C', '0xbc19712feb3a26080ebf6f2f7849b417fdd792ca') \ No newline at end of file diff --git a/projects/boros/index.js b/projects/boros/index.js deleted file mode 100644 index 379391c5c5d..00000000000 --- a/projects/boros/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// Boros by Pendle: Yield trading with margin platform -// Market Hub stores all collateral for the Boros product -const BOROS_MARKET_HUB = "0x1080808080f145b14228443212e62447C112ADaD"; -const BOROS_ROUTER = "0x8080808080daB95eFED788a9214e400ba552DEf6"; // For reference - -const tvl = async (api) => { - const commonTokens = [ - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.WBTC, - ]; - - await sumTokens2({ - api, - tokensAndOwners: commonTokens.map(token => [token, BOROS_MARKET_HUB]), - }); -} - - -module.exports = { - methodology: "Boros TVL is calculated by summing all collateral tokens held in the Boros Market Hub contract. Boros is Pendle's yield trading with margin platform that enables trading of funding rates and other off-chain yields.", - - arbitrum: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/bosera_hkd_money_market_etf/abi.js b/projects/bosera_hkd_money_market_etf/abi.js deleted file mode 100644 index 8c1781d3cfe..00000000000 --- a/projects/bosera_hkd_money_market_etf/abi.js +++ /dev/null @@ -1,31 +0,0 @@ -const NexaAggregator = [ - { - "type": "function", - "name": "latestAnswer", - "inputs": [], - "outputs": [ - { - "type": "int256" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "decimals", - "inputs": [], - "outputs": [ - { - "type": "uint8" - } - ], - "state_mutability": "view" - } -] - -const NexaAggregatorAbi = {} -NexaAggregator.forEach(i => NexaAggregatorAbi[i.name] = i) - -module.exports = { - NexaAggregatorAbi -} \ No newline at end of file diff --git a/projects/bosera_hkd_money_market_etf/index.js b/projects/bosera_hkd_money_market_etf/index.js deleted file mode 100644 index 2605e46b3a1..00000000000 --- a/projects/bosera_hkd_money_market_etf/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { NexaAggregatorAbi } = require("./abi"); - -const BOHMETH = "0x40EF495dF42Fcfd1A4C33450Dfe61cfAC97Fe7dB" -const BoseraHKDMMF = '0xc7167fC4C7d95b6faa30d63509D7392474a0B955' - -async function tvl(api) { - const price = await api.call({ - target: BOHMETH, - abi: NexaAggregatorAbi.latestAnswer, - }); - const priceDecimals = await api.call({ - target: BOHMETH, - abi: NexaAggregatorAbi.decimals, - }); - const supply = await api.call({ - target: BoseraHKDMMF, - abi: 'erc20:totalSupply', - }); - const tokenDecimals = await api.call({ - target: BoseraHKDMMF, - abi: 'erc20:decimals', - }); - const scaledPrice = price / 10 ** priceDecimals; - const scaledSupply = supply / 10 ** tokenDecimals; - const totalValue = scaledSupply * scaledPrice; - - api.addUSDValue(totalValue); -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - methodology: 'TVL is the total AUM based on the price of the underlying assets, price is from NexaAggregator Oracle', - hsk: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/bosera_usd_money_market_etf/abi.js b/projects/bosera_usd_money_market_etf/abi.js deleted file mode 100644 index 4b2b3a868c2..00000000000 --- a/projects/bosera_usd_money_market_etf/abi.js +++ /dev/null @@ -1,31 +0,0 @@ -const NexaAggregator = [ - { - "type": "function", - "name": "latestAnswer", - "inputs": [], - "outputs": [ - { - "type": "int256" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "decimals", - "inputs": [], - "outputs": [ - { - "type": "uint8" - } - ], - "state_mutability": "view" - } -] - -const NexaAggregatorAbi = {} -NexaAggregator.forEach(i => NexaAggregatorAbi[i.name] = i) - -module.exports = { - NexaAggregatorAbi -} \ No newline at end of file diff --git a/projects/bosera_usd_money_market_etf/index.js b/projects/bosera_usd_money_market_etf/index.js deleted file mode 100644 index 434fe70ec27..00000000000 --- a/projects/bosera_usd_money_market_etf/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { NexaAggregatorAbi } = require("./abi"); - -const BSUMETU = "0x955DCE287cE4687C622dA1Cd91477968689a0EEc" -const BoseraUSDMMF = '0xE121e4081053060004ef1c3bEFeAc12e9af63659' - -async function tvl(api) { - const price = await api.call({ - target: BSUMETU, - abi: NexaAggregatorAbi.latestAnswer, - }); - const priceDecimals = await api.call({ - target: BSUMETU, - abi: NexaAggregatorAbi.decimals, - }); - const supply = await api.call({ - target: BoseraUSDMMF, - abi: 'erc20:totalSupply', - }); - const tokenDecimals = await api.call({ - target: BoseraUSDMMF, - abi: 'erc20:decimals', - }); - const scaledPrice = price / 10 ** priceDecimals; - const scaledSupply = supply / 10 ** tokenDecimals; - const totalValue = scaledSupply * scaledPrice; - - api.addUSDValue(totalValue); -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - methodology: 'TVL is the total AUM based on the price of the underlying assets, price is from NexaAggregator Oracle', - hsk: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/boson/index.js b/projects/boson/index.js deleted file mode 100644 index 73a6519fdbb..00000000000 --- a/projects/boson/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking( - [ - "0x6244bc0d4b661526c0c62c3610571cd1ac9df2dd", - "0xbacc083795846a67b0782327a96622447ddafe6c", - "0x081a52f02e51978ad419dd7894d7ae3555f8bc26", - "0x3ed0c99c8e8eb94438837cc8a08ca3bb187424cf", - "0x3810d9d6685812af6ef4257de0542ecdba9bfd95" - ], - "0xC477D038d5420C6A9e0b031712f61c5120090de9" - ), - }, -}; diff --git a/projects/boss-swap/index.js b/projects/boss-swap/index.js deleted file mode 100644 index fbc358ee83d..00000000000 --- a/projects/boss-swap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - harmony: { - tvl: getUniTVL({ factory: '0x7f107365E6Ef1F8824C724EA6aF7654AFB742963', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/botanix-stBTC/index.js b/projects/botanix-stBTC/index.js deleted file mode 100644 index 8f1cf5d0bd2..00000000000 --- a/projects/botanix-stBTC/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumERC4626VaultsExport2 } = require('../helper/erc4626') - -module.exports = { - btnx: { - tvl: sumERC4626VaultsExport2({ vaults: ['0xF4586028FFdA7Eca636864F80f8a3f2589E33795'], }), - }, -} diff --git a/projects/botto/index.js b/projects/botto/index.js deleted file mode 100644 index 16258ee837b..00000000000 --- a/projects/botto/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { staking } = require('../helper/staking'); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const ethereumContracts = [ - "0x19cd3998f106ecc40ee7668c19c47e18b491e8a6", - "0xf8515cae6915838543bcd7756f39268ce8f853fd", -]; - -const baseStakingContract = "0x8a7a5991aAf142B43E58253Bd6791e240084F0A9"; -const baseToken = "0x24914CB6BD01E6a0CF2a9c0478e33c25926e6a0c"; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: ethereumContracts, - token: coreAssets.null - }), - staking: staking( - ethereumContracts, - '0x9DFAD1b7102D46b1b197b90095B5c4E9f5845BBA' - ), - pool2: staking( - ethereumContracts, - '0x9FF68F61cA5EB0c6606dC517a9d44001e564bb66' - ), - }, - base: { - staking: staking( - baseStakingContract, - baseToken - ), - }, -}; diff --git a/projects/boujefinance/index.js b/projects/boujefinance/index.js deleted file mode 100644 index 566bda2f393..00000000000 --- a/projects/boujefinance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const chef = "0x89dcd1DC698Ad6A422ad505eFE66261A4320D8B5" -const bouje = "0x37F70aa9fEfc8971117BD53A1Ddc2372aa7Eec41" - -module.exports = { - ...masterChefExports(chef, "fantom", bouje), - methodology: "TVL includes all farms in MasterChef contract", -} \ No newline at end of file diff --git a/projects/bounce-bit/index.js b/projects/bounce-bit/index.js deleted file mode 100644 index 8ee4a580e4b..00000000000 --- a/projects/bounce-bit/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - methodology: "Staking tokens via BounceBit counts as TVL", - ethereum: { - tvl: sumTokensExport({ - owners: ["0x53C58E975f3F72162Fc0509b9742c9b55E24a599", "0xa318dc13107efa77b3dbdc35b87ddd79b33e1139", "0xD08426542212c2Bc2B3fADFb9529E7dBD14B86Ba"], - tokens: [ADDRESSES.ethereum.WBTC, ADDRESSES.ethereum.USDT, '0xA9B1Eb5908CfC3cdf91F9B8B3a74108598009096', "0x38e382F74dfb84608F3C1F10187f6bEf5951DE93", "0x1981E32C2154936741aB6541a737b87C68F13cE1"] // auction mubi DAII - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: ["0x53C58E975f3F72162Fc0509b9742c9b55E24a599", "0x9d0e151414aAA3913f22ac95B9c6377Ea7826F08"], - tokens: [ADDRESSES.bsc.BTCB, ADDRESSES.ethereum.FDUSD] // BTCB FDUSD - }), - }, - tron: { - tvl: sumTokensExport({ - owners: ["TMNgo1318CLLqxRjeHVstYD6kLKDvAhR56", "TFoNA5yPfckPUHTxVHoK9uTPdE9AUKFLZC"], - tokens: [ADDRESSES.tron.BTC] - }), - }, -}; diff --git a/projects/bounce/index.js b/projects/bounce/index.js deleted file mode 100644 index b572929d67c..00000000000 --- a/projects/bounce/index.js +++ /dev/null @@ -1,27 +0,0 @@ - -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require("../helper/coreAssets.json"); - -const AUCTION = '0xA9B1Eb5908CfC3cdf91F9B8B3a74108598009096' -const AUCTION_ETH_SLP = '0x0f8086d08a69ebd8e3a130a87a3b6a260723976f' - -const STAKING_ADDRESS = '0x98945BC69A554F8b129b09aC8AfDc2cc2431c48E' -const STAKING_LP_ADDRESS = '0xbe5a88b573290e548759520a083a61051b258451' - -const BOUNCE_V1 = '0x73282A63F0e3D7e9604575420F777361ecA3C86A' -const BOUNCE_V1_PRO = '0x6fe40f415448d930166f9110D3bBe2146383bC66' - -const v1config = { - ethereum: { - tokens: [ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC], - owners: [BOUNCE_V1, BOUNCE_V1_PRO], - } -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({ ...v1config.ethereum }), - pool2: sumTokensExport({ owner: STAKING_LP_ADDRESS, tokens: [AUCTION_ETH_SLP] }), - staking: sumTokensExport({ owner: STAKING_ADDRESS, tokens: [AUCTION] }), - }, -} diff --git a/projects/bouncebit-EasyBTC/index.js b/projects/bouncebit-EasyBTC/index.js deleted file mode 100644 index c6507609f9c..00000000000 --- a/projects/bouncebit-EasyBTC/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens, sumTokensExport } = require('../helper/sumTokens'); -const ADDRESSES = require('../helper/coreAssets.json') - -const ETH_EasyBTC_USD_Contract = '0xFe32277D00e57D864B8BC687d0a442D663Aa1dF6' - -const BNB_EasyBTC_USD_Contract = '0xF3FB36F32Dad91627f688e7332472d69F6C985c6' -const BNB_EasyBTC_BTC_Contract = '0x38D239a8D33BF7424A1Df6d39cb8523cCc25DE0e' - -const STAKE_ABI = - "function totalStaked() view returns (uint256)"; - -async function ETHTvl(api, ...args) { - const EasyBTC_USD_Staked = await api.call({ abi: STAKE_ABI, target: ETH_EasyBTC_USD_Contract}) - // usdt - api.add(ADDRESSES.ethereum.USDT, EasyBTC_USD_Staked) - return sumTokens({ - api - }) -} - -async function BNBTvl(api, ...args) { - const EasyBTC_USD_Staked = await api.call({ abi: STAKE_ABI, target: BNB_EasyBTC_USD_Contract}) - const EasyBTC_BTC_Staked = await api.call({ abi: STAKE_ABI, target: BNB_EasyBTC_BTC_Contract}) - // usdt - api.add(ADDRESSES.bsc.USDT, EasyBTC_USD_Staked) - // btc - api.add(ADDRESSES.bsc.BTCB, EasyBTC_BTC_Staked) - return sumTokens({ api }) -} - -module.exports = { - ethereum: { - tvl: ETHTvl, - }, - bsc: { - tvl: BNBTvl, - } -}; diff --git a/projects/bouncebit-cedefi/cedefiFromSolana.js b/projects/bouncebit-cedefi/cedefiFromSolana.js deleted file mode 100644 index 43c453385f1..00000000000 --- a/projects/bouncebit-cedefi/cedefiFromSolana.js +++ /dev/null @@ -1,151 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getProvider, } = require('../helper/solana') -const { Program, BN } = require("@project-serum/anchor"); -const { PublicKey } = require('@solana/web3.js'); - -const tokenMints = [ - ADDRESSES.solana.SOL, - ADDRESSES.solana.USDC, - ADDRESSES.solana.USDT, -] - -const minimalIdl = { - "instructions": [], - "accounts": [ - { - "name": "Vault", - "type": { - "kind": "struct", - "fields": [ - { - "name": "is_vault_enable", - "type": "bool" - }, - { - "name": "is_open_enable", - "type": "bool" - }, - { - "name": "is_normal_close_enable", - "type": "bool" - }, - { - "name": "is_fast_close_enable", - "type": "bool" - }, - { - "name": "is_claim_enable", - "type": "bool" - }, - { - "name": "open_cooldown_days", - "type": "u16" - }, - { - "name": "open_date_offset", - "type": "u16" - }, - { - "name": "clearing_date_no", - "type": "u16" - }, - { - "name": "min_amount", - "type": "u64" - }, - { - "name": "stat", - "type": { - "defined": "VaultStat" - } - } - ] - } - } - ], - "types": [ - { - "name": "VaultStat", - "type": { - "kind": "struct", - "fields": [ - { - "name": "total_open", - "type": "u128" - }, - { - "name": "total_normal_principal_close", - "type": "u128" - }, - { - "name": "total_normal_shares_close", - "type": "u128" - }, - { - "name": "total_normal_rewards_close", - "type": "u128" - }, - { - "name": "total_fast_close", - "type": "u128" - }, - { - "name": "total_fast_fee", - "type": "u128" - }, - { - "name": "total_claim_assets", - "type": "u128" - }, - { - "name": "total_claim_fee", - "type": "u128" - } - ] - } - } - ] -} - -async function tvl(api) { - const provider = getProvider() - const programId = '65YBWQitcBexwuaBKfAV163xDd4LzVAdytATLbttpgxx' - const strategyIds = [1] - - const program = new Program(minimalIdl, programId, provider) - - const vaults = await program.account.vault.all() - - for (const tokenMint of tokenMints) { - for (const strategyId of strategyIds) { - const [expectedVaultAddress] = PublicKey.findProgramAddressSync( - [ - Buffer.from('vault'), - new PublicKey(tokenMint).toBuffer(), - new BN(strategyId).toArrayLike(Buffer, 'le', 2) - ], - new PublicKey(programId) - ) - - const vault = vaults.find(v => v.publicKey.toBase58() === expectedVaultAddress.toBase58()) - - if (vault) { - const { stat } = vault.account - const totalOpen = BigInt(stat.totalOpen.toString()) - const totalNormalClose = BigInt(stat.totalNormalPrincipalClose.toString()) - const totalFastClose = BigInt(stat.totalFastClose.toString()) - const tvlAmount = totalOpen - totalNormalClose - totalFastClose - - if (tvlAmount > 0) { - api.add(tokenMint, tvlAmount.toString()) - } - } - } - } - - return api.getBalances() -} - -module.exports = { - solana: { tvl } -} \ No newline at end of file diff --git a/projects/bouncebit-cedefi/easyBTC.js b/projects/bouncebit-cedefi/easyBTC.js deleted file mode 100644 index 965d2285ec0..00000000000 --- a/projects/bouncebit-cedefi/easyBTC.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens } = require('../helper/sumTokens'); -const ADDRESSES = require('../helper/coreAssets.json') - -const ETH_EasyBTC_USD_Contract = '0xFe32277D00e57D864B8BC687d0a442D663Aa1dF6' - -const BNB_EasyBTC_USD_Contract = '0xF3FB36F32Dad91627f688e7332472d69F6C985c6' -const BNB_EasyBTC_BTC_Contract = '0x38D239a8D33BF7424A1Df6d39cb8523cCc25DE0e' - -const STAKE_ABI = - "function totalStaked() view returns (uint256)"; - -async function ETHTvl(api) { - const EasyBTC_USD_Staked = await api.call({ abi: STAKE_ABI, target: ETH_EasyBTC_USD_Contract}) - // usdt - api.add(ADDRESSES.ethereum.USDT, EasyBTC_USD_Staked) - return sumTokens({ - api - }) -} - -async function BNBTvl(api) { - const EasyBTC_USD_Staked = await api.call({ abi: STAKE_ABI, target: BNB_EasyBTC_USD_Contract}) - const EasyBTC_BTC_Staked = await api.call({ abi: STAKE_ABI, target: BNB_EasyBTC_BTC_Contract}) - // usdt - api.add(ADDRESSES.bsc.USDT, EasyBTC_USD_Staked) - // btc - api.add(ADDRESSES.bsc.BTCB, EasyBTC_BTC_Staked) - return sumTokens({ api }) -} - -module.exports = { - ethereum: { - tvl: ETHTvl, - }, - bsc: { - tvl: BNBTvl, - } -}; diff --git a/projects/bouncebit-cedefi/index.js b/projects/bouncebit-cedefi/index.js deleted file mode 100644 index 405b8ab7a53..00000000000 --- a/projects/bouncebit-cedefi/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') -const easyBTC = require('./easyBTC') -const premium = require('./premium') -const promo = require('./promo') -const cedefiForCedefi = require('./cedefiFromSolana') -const promoFromSolana = require('./promoFromSolana') - -const config = { - ethereum: { - subgraphUrl: 'https://api.studio.thegraph.com/query/96517/bb-defillama-eth/v0.0.4' - }, - bsc: { - subgraphUrl: 'https://api.studio.thegraph.com/query/96517/bb-defillama-bsc/v0.0.2', - subgraphUrlVip: 'https://api.studio.thegraph.com/query/96517/bb-vip-defillama-bsc/v0.0.2' - }, - bouncebit: { - main: { url: 'https://bitswap-subgraph.bouncebit.io/subgraphs/name/bb-defillama-bb' }, - boyya: { url: 'https://bitswap-subgraph.bouncebit.io/subgraphs/name/bb-defillama-boyya-bb' } - }, - base: {}, - solana: {} -} - -const query = `{ - tokens { - id - tvl - } -}` - -// stbbtc to bbtc -const TOKEN_MAPPINGS = { - '0x7f150c293c97172c75983bd8ac084c187107ea19': '0xf5e11df1ebcf78b6b6d26e04ff19cd786a1e81dc', // stBBTC -> bbtc -} - -async function fetchTokens(chain, subgraphUrl, cacheKey = '') { - const prefix = `bouncebit-cedefi${cacheKey}` - return cachedGraphQuery(`${prefix}/${chain}`, subgraphUrl, query) -} - -async function cedefiTvl(api) { - if (api.chain === 'base') return {} - if (api.chain === 'solana') return cedefiForCedefi[api.chain]?.tvl?.(api) || {} - - const chain = api.chain - - const tokenLists = await Promise.all( - chain === 'bouncebit' - ? [ - fetchTokens(chain, config[chain].main.url), - fetchTokens(chain, config[chain].boyya.url, '-boyya') - ] - : chain === 'bsc' - ? [ - fetchTokens(chain, config[chain].subgraphUrl), - fetchTokens(chain, config[chain].subgraphUrlVip, '-vip') - ] - : [fetchTokens(chain, config[chain].subgraphUrl)] - ) - - const allTokens = tokenLists.flatMap(result => result.tokens) - - allTokens.forEach(token => { - if (token.tvl <= 0) return - const targetToken = TOKEN_MAPPINGS[token.id] || token.id - api.add(targetToken, token.tvl) - }) - - return api.getBalances() -} - -async function combinedTvl(api) { - const [cedefiBalances, easyBTCBalances, premiumBalances] = await Promise.all([ - cedefiTvl(api), - easyBTC[api.chain]?.tvl?.(api) || {}, - premium[api.chain]?.tvl?.(api) || {}, - promo[api.chain]?.tvl?.(api) || {}, - promoFromSolana[api.chain]?.tvl?.(api) || {} - ]) - - // merge all balances - return api.sumTokens([cedefiBalances, easyBTCBalances, premiumBalances]) -} - -module.exports = { - methodology: "Calculate TVL by querying BounceBit Cedefi subgraph, EasyBTC and Premium protocols", -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: combinedTvl } -}) \ No newline at end of file diff --git a/projects/bouncebit-cedefi/premium.js b/projects/bouncebit-cedefi/premium.js deleted file mode 100644 index afee6eefcb1..00000000000 --- a/projects/bouncebit-cedefi/premium.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens, sumTokensExport } = require('../helper/sumTokens'); - -const BBTC = '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC' -const BBUSD = ADDRESSES.bouncebit.BBUSD -// const stBBTC = '0x7F150c293c97172C75983BD8ac084c187107eA19' - -const stBBTC_STAKE_ABI = - "function totalStaked() view returns (uint256)"; - -async function bouncebitTvl(api, ...args) { - const stBBTCStaked = await api.call({ abi: stBBTC_STAKE_ABI, target: '0x7F26aB9263E33de947654F44C5AB439090cfAaf7'}) - // stBBTC - api.add(BBTC, stBBTCStaked) - return sumTokens({ - owners: ["0xd4def93a10ada7e14cAdc6920b6CDE01148D1813", "0x426CD147ff93f31BB18F1Acd19DAb9c32d934131"], - tokens: [BBTC, BBUSD], - api, - ...args - }) -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: ["0x1ddD6E5eA766511CC0f348DC8d17578a821B680F", "0xa2B283e4dbdFEA5461C36a59E3B94b3ef2883085"], - tokens: [BBTC] // removed BBUSD because its tracked on bouncebit ethena listing - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: ["0x55a55e8b08b091bD0529bf1af05b69fF5291867D", "0xdAfd8591402c5E57DCa4B1b9e481c08548a2442E"], - tokens: [BBTC, BBUSD] - }), - }, - bouncebit: { - tvl: bouncebitTvl - }, -}; diff --git a/projects/bouncebit-cedefi/promo.js b/projects/bouncebit-cedefi/promo.js deleted file mode 100644 index 7e842567178..00000000000 --- a/projects/bouncebit-cedefi/promo.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - base: { - pool: '0x131711b38BE467212D328269482EfF626D0Ae586' - }, - bsc: { - simple: '0x471461A60EC3855DC58E00De81E3510b8945D2f9' - } -} - -const PROMO_BTCB_SIMPLE_STAKE_ABI = - "function totalStaked() view returns (uint256)"; - -// Campaign id starts from 1 and auto increments -const promoPoolCampaignCountAbi = - "function campaignCount() view returns (uint256)"; - -const promoPoolTotalStakeAbi = "function getCampaign(uint256 _campaignId) view returns (tuple(address token, address, address, uint256, uint256, uint256 totalStaked, uint256, uint256, bool, bool, bool))"; - -async function promoTvl(api) { - if (config[api.chain]?.simple) { - const BTCBStaked = await api.call({ abi: PROMO_BTCB_SIMPLE_STAKE_ABI, target: config[api.chain].simple}) - api.add(ADDRESSES.bsc.BTCB, BTCBStaked) - } - - if (!config[api.chain]?.pool) return api - - const campaignCount = await api.call({ - abi: promoPoolCampaignCountAbi, - target: config[api.chain].pool - }); - - const campaignIds = Array.from( - { length: Number(campaignCount) }, - (_, i) => i + 1 - ); - - const campaigns = await api.multiCall({ - abi: promoPoolTotalStakeAbi, - calls: campaignIds.map(id => ({ - target: config[api.chain].pool, - params: [id] - })) - }); - - const tokenTvls = {}; - campaigns.forEach(campaign => { - const { token, totalStaked } = campaign; - if (!tokenTvls[token]) { - tokenTvls[token] = 0n; - } - tokenTvls[token] = tokenTvls[token] + BigInt(totalStaked); - }); - - Object.entries(tokenTvls).forEach(([token, balance]) => { - api.add(token, balance); - }); -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: promoTvl } -}) \ No newline at end of file diff --git a/projects/bouncebit-cedefi/promoFromSolana.js b/projects/bouncebit-cedefi/promoFromSolana.js deleted file mode 100644 index 0a2c99e8d05..00000000000 --- a/projects/bouncebit-cedefi/promoFromSolana.js +++ /dev/null @@ -1,99 +0,0 @@ -const { getProvider, } = require('../helper/solana') -const { Program } = require("@project-serum/anchor"); - -const minimalIdl = { - "instructions": [], - "accounts": [ - { - "name": "Vault", - "type": { - "kind": "struct", - "fields": [ - { - "name": "is_vault_enable", - "type": "bool" - }, - { - "name": "is_stake_enable", - "type": "bool" - }, - { - "name": "is_withdraw_enable", - "type": "bool" - }, - { - "name": "max_stake_amount", - "type": "u64" - }, - { - "name": "lock_period", - "type": "i64" - }, - { - "name": "full_stake_timestamp", - "type": "i64" - }, - { - "name": "token_mint", - "type": "publicKey" - }, - { - "name": "token_escrow", - "type": "publicKey" - }, - { - "name": "stat", - "type": { - "defined": "VaultStat" - } - } - ] - } - }, - ], - "types": [ - { - "name": "VaultStat", - "type": { - "kind": "struct", - "fields": [ - { - "name": "total_staked", - "type": "u64" - }, - { - "name": "total_rewards", - "type": "u64" - } - ] - } - }, - ] -} - -async function tvl(api) { - const provider = getProvider() - const programId = '5HRzz8VDD9QjpEBBdq6hBUEXcssxW5mPnod4L6Qgnh9g' - const program = new Program(minimalIdl, programId, provider) - - const vaults = await program.account.vault.all() - - vaults.map(vault=> { - const { stat } = vault.account - const totalStaked = BigInt(stat.totalStaked.toString()) - // const totalRewards = BigInt(stat.totalRewards.toString()) - const tvlAmount = totalStaked - - if (tvlAmount > 0) { - api.add(vault.account.tokenMint.toBase58(), tvlAmount.toString()) - } - - }) - - return api.getBalances() -} - - -module.exports = { - solana: { tvl } -} \ No newline at end of file diff --git a/projects/bouncebit-ethena/index.js b/projects/bouncebit-ethena/index.js deleted file mode 100644 index 24fe61eaf06..00000000000 --- a/projects/bouncebit-ethena/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/sumTokens'); - -const USDe = ADDRESSES.ethereum.USDe -const USDT = ADDRESSES.ethereum.USDT - -const contractAddress = '0x96E65d1ae193A15b19500AEA8F7f739989C810ea' - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: [contractAddress], - tokens: [USDe, USDT] - }), - } -} diff --git a/projects/bouncebit-lsd/index.js b/projects/bouncebit-lsd/index.js deleted file mode 100644 index 80470dac862..00000000000 --- a/projects/bouncebit-lsd/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const BBTC = '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC' -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function bouncebitLSDTvl(api) { - const BBBalance = await api.call({ abi: 'erc20:totalSupply', target: '0x22aAC17E571D6651880d057e310703fF4C7c3483'}) - api.add(ADDRESSES.null, BBBalance) - return sumTokens2({ owner: '0x7F150c293c97172C75983BD8ac084c187107eA19', tokens: [BBTC], api }) -} - -module.exports = { - bouncebit: { - tvl: bouncebitLSDTvl - } -}; diff --git a/projects/bouncebit-premium/index.js b/projects/bouncebit-premium/index.js deleted file mode 100644 index afee6eefcb1..00000000000 --- a/projects/bouncebit-premium/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens, sumTokensExport } = require('../helper/sumTokens'); - -const BBTC = '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC' -const BBUSD = ADDRESSES.bouncebit.BBUSD -// const stBBTC = '0x7F150c293c97172C75983BD8ac084c187107eA19' - -const stBBTC_STAKE_ABI = - "function totalStaked() view returns (uint256)"; - -async function bouncebitTvl(api, ...args) { - const stBBTCStaked = await api.call({ abi: stBBTC_STAKE_ABI, target: '0x7F26aB9263E33de947654F44C5AB439090cfAaf7'}) - // stBBTC - api.add(BBTC, stBBTCStaked) - return sumTokens({ - owners: ["0xd4def93a10ada7e14cAdc6920b6CDE01148D1813", "0x426CD147ff93f31BB18F1Acd19DAb9c32d934131"], - tokens: [BBTC, BBUSD], - api, - ...args - }) -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: ["0x1ddD6E5eA766511CC0f348DC8d17578a821B680F", "0xa2B283e4dbdFEA5461C36a59E3B94b3ef2883085"], - tokens: [BBTC] // removed BBUSD because its tracked on bouncebit ethena listing - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: ["0x55a55e8b08b091bD0529bf1af05b69fF5291867D", "0xdAfd8591402c5E57DCa4B1b9e481c08548a2442E"], - tokens: [BBTC, BBUSD] - }), - }, - bouncebit: { - tvl: bouncebitTvl - }, -}; diff --git a/projects/bountive/abi.js b/projects/bountive/abi.js deleted file mode 100644 index 3cc8c788420..00000000000 --- a/projects/bountive/abi.js +++ /dev/null @@ -1,20 +0,0 @@ -const bountiveToken = [ - { - "type": "function", - "name": "total_supply", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - } -] - -const bountiveTokenAbi = {} -bountiveToken.forEach(i => bountiveTokenAbi[i.name] = i) - -module.exports = { - bountiveTokenAbi -} \ No newline at end of file diff --git a/projects/bountive/index.js b/projects/bountive/index.js deleted file mode 100644 index b3a4c89b497..00000000000 --- a/projects/bountive/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { bountiveTokenAbi } = require("./abi"); -const { multiCall } = require('../helper/chain/starknet'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const bountiveTokens = [ - // BoSTRK: Bountive STRK - "0x018e009bbb035c506234e7a8eca6a7229adfd59a278ba3845285d28b03ed6d53", - // BoETH: Bountive ETH - "0x02fcaebd41710024e25b6dc646a62acb6560125a699a3f695b6adb54a180aaee", - // BoUSDC: Bountive USDC - "0x028a88bf75f1b10dc8552051a56fbdc732084af514f6065f4c67ea6d50204720", - // BoUSDT: Bountive USDT - "0x0243d9a1cffc0b5ebbf549efd1232a96b1ef392fe595e91dd72103d5a8e7d847", - // BoDAI: Bountive DAI - "0x00c359a6eb59a7cd68bfc3d7a44d05b15ba3fbbb4eebc2d59d52d37f123bea00", -] - -const underlyingsTokens = [ - // STRK - ADDRESSES.starknet.STRK, - // ETH - ADDRESSES.starknet.ETH, - // USDC - ADDRESSES.starknet.USDC, - // USDT - ADDRESSES.starknet.USDT, - // DAI - ADDRESSES.starknet.DAI, -] - -async function tvl(api) { - const supplied = await multiCall({ - calls: bountiveTokens, - abi: bountiveTokenAbi.total_supply, - }); - api.addTokens(underlyingsTokens, supplied) -} - -async function staking(api) { - const bountiveTokens = [ - // BoBROTHER: Bountive BROTHER - "0x067c176764a49143e405fadb3e35b2a18a16cc00527e53fed92267c1be1c53a5", - ] - - const underlyingsTokens = [ - // BROTHER - ADDRESSES.starknet.BROTHER, - ] - - const supplied = await multiCall({ - calls: bountiveTokens, - abi: bountiveTokenAbi.total_supply, - }); - api.addTokens(underlyingsTokens, supplied) - return sumTokens2({ api }) -} - -module.exports = { - doublecounted: true, - methodology: 'TVL is the total tokens deposited on Bountive', - starknet: { - tvl, staking, - } -}; \ No newline at end of file diff --git a/projects/bourbon-dao/index.js b/projects/bourbon-dao/index.js deleted file mode 100644 index 0fc309816aa..00000000000 --- a/projects/bourbon-dao/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {ohmTvl} = require("../helper/ohm"); - -const whiskey = "0xce1ad4e2810e413e2e3684decc58a0bd01c907d9"; -const stakingContract = "0x5e398c5da5353182aae7410fb824a1578fc518cb"; - -const treasury = "0x950d8c342bc6e0bcf9c1deb87d039947f35b3eb9"; -const treasuryTokens = [ - [ADDRESSES.bsc.BUSD, false], // BUSD - [ADDRESSES.bsc.USDT, false], // USDT - [ADDRESSES.bsc.WBNB, false], // WBNB - ["0x96b6d5482313eecc031afeb2fb32da2ba7439ba2", true], // WHISKEY-BUSD CAKELP -] - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "bsc", stakingContract, whiskey, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/bourbon/index.js b/projects/bourbon/index.js deleted file mode 100644 index 2b2521aa135..00000000000 --- a/projects/bourbon/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x6B09Aa7a03d918b08C8924591fc792ce9d80CBb5', - }) - } -} \ No newline at end of file diff --git a/projects/bow-leverage/index.js b/projects/bow-leverage/index.js deleted file mode 100644 index 8148cc1777e..00000000000 --- a/projects/bow-leverage/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); -const { getConfig } = require("../helper/cache"); -const { fetchURL } = require("../helper/utils"); - -async function tvl(api) { - const chain = api.chain; - const contracts = await getConfig( - "kujira/contracts", - "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json" - ); - const marketContracts = contracts["kaiyo-1"].bowMargin; - for (const contract of marketContracts) { - try { - const bowContract = contract.config.bow_contract; - const pool = await queryContract({ - contract: bowContract, - chain, - data: { pool: {} }, - }); - const denomString = `factory%2F${bowContract}%2Fulp`; - const lpSupply = await fetchURL( - `https://kujira.api.kjnodes.com/cosmos/bank/v1beta1/supply/by_denom?denom=${denomString}` - ); - const collateralBalance = await fetchURL( - `https://kujira.api.kjnodes.com/cosmos/bank/v1beta1/balances/${contract.address}/by_denom?denom=${denomString}` - ); - const ratio = collateralBalance.data.balance.amount / lpSupply.data.amount.amount; - api.add(contract.config.denoms[0].denom, pool.balances[0] * ratio) - api.add(contract.config.denoms[1].denom, pool.balances[1] * ratio) - } catch (error) { - continue; - } - } - - return api.getBalances(); -} - -module.exports = { - timetravel: false, - kujira: { tvl }, -}; diff --git a/projects/bow/index.js b/projects/bow/index.js deleted file mode 100644 index 354b1e416fe..00000000000 --- a/projects/bow/index.js +++ /dev/null @@ -1,20 +0,0 @@ - -const { getConfig } = require("../helper/cache"); -const { sumTokens } = require('../helper/chain/cosmos') - - -async function tvl() { - const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); - const bowPools = contracts["kaiyo-1"].bow.map(x => x.address) - const owners = [ - ...bowPools -] - - return await sumTokens({ owners, chain: 'kujira' }) -} - -module.exports = { - kujira: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/bprotocol/abi.json b/projects/bprotocol/abi.json deleted file mode 100644 index d96aa587049..00000000000 --- a/projects/bprotocol/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "cdpTvl": "function cdpTvl(address man, uint256 cdp, bytes32 ilk) view returns (uint256)", - "cdpi": "function cdpi(address man) view returns (uint256)", - "avatarLength": "uint256:avatarLength", - "avatars": "function avatars(uint256) view returns (address)", - "getAllMarkets": "address[]:getAllMarkets", - "balanceOfUnderlying": "function balanceOfUnderlying(address owner) returns (uint256)", - "underlying": "address:underlying", - "bamms": "function bamms(uint256) view returns (address)", - "getCompoundedLUSDDeposit": "function getCompoundedLUSDDeposit(address _depositor) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/bprotocol/index.js b/projects/bprotocol/index.js deleted file mode 100644 index 4c2de07d1b8..00000000000 --- a/projects/bprotocol/index.js +++ /dev/null @@ -1,118 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const abi = require('./abi.json'); - -const bTvlAddress = '0x60312e01A2ACd1Dac68838C949c1D20C609B20CF'; -const bcdpmanagerAddress = '0x3f30c2381CD8B917Dd96EB2f1A4F96D91324BBed'; -const ethIlk = '0x4554482d41000000000000000000000000000000000000000000000000000000'; -const registryAddress = "0xbf698df5591caf546a7e087f5806e216afed666a"; -const comptrollerAddress = "0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B"; -const bKeeperAddress = "0xeaE019ef845A4Ffdb8829210De5D30aC6FbB5371"; -const stabilityPoolAddress = "0x66017D22b0f8556afDd19FC67041899Eb65a21bb"; - -const usdcFantom = ADDRESSES.fantom.USDC -const usdcArbitrum = ADDRESSES.arbitrum.USDC - -const daiFantom = ADDRESSES.fantom.DAI - -const usdtArbitrum = ADDRESSES.arbitrum.USDT - - -const usdcFantomBAMM = "0xEDC7905a491fF335685e2F2F1552541705138A3D" -const daiFantomBAMM = "0x6d62d6Af9b82CDfA3A7d16601DDbCF8970634d22" -const usdcArbitrumBAMM = "0x04208f296039f482810B550ae0d68c3E1A5EB719" -const usdtArbitrumBAMM = "0x24099000AE45558Ce4D049ad46DDaaf71429b168" - -const hDAIPolygon = "0xE4e43864ea18d5E5211352a4B810383460aB7fcC" -const hUSDCPolygon = "0x607312a5C671D0C511998171e634DE32156e69d0" -const hUSDTPolygon = "0x103f2CA2148B863942397dbc50a425cc4f4E9A27" -const hFRAXPolygon = "0x2c7a9d9919f042C4C120199c69e126124d09BE7c" - -const bammDAIPolygon = "0x998Bf304Ce9Cb215F484aA39d1177b8210078f49" -const bammUSDCPolygon = "0x0F0dD66D2d6c1f3b140037018958164c6AB80d56" -const bammUSDTPolygon = "0x1EcF1b0DE9b4c2D01554062eA2faB84b1917B41d" -const bammFRAXPolygon = "0x2DA13538056aFf0bFC81d3A4c6364B0a7e0f9feb" - -const polygonHTokens = [hDAIPolygon, hUSDCPolygon, hUSDTPolygon, hFRAXPolygon] -const polygonBamms = [bammDAIPolygon, bammUSDCPolygon, bammUSDTPolygon, bammFRAXPolygon] - -async function compoundTvl(api) { - const avatarsAdresess = await api.fetchList({ lengthAbi: abi.avatarLength, itemAbi: abi.avatars, target: registryAddress }) - - // all of Compound's supply & borrow assets adresses - const cTokens = await api.call({ target: comptrollerAddress, abi: abi["getAllMarkets"] }) - return api.sumTokens({ owners: avatarsAdresess, tokens: cTokens }) -} - -async function makerTvl(api) { - const cdpiRes = await api.call({ target: bTvlAddress, params: [bcdpmanagerAddress], abi: abi["cdpi"] }); - - const maxCdp = Number(cdpiRes); - const cdps = Array.from({ length: maxCdp }, (_, i) => i + 1) - - const ethBalances = (await api.multiCall({ - abi: abi["cdpTvl"], - target: bTvlAddress, - calls: cdps.map((cdp,) => ({ - params: [bcdpmanagerAddress, cdp, ethIlk] - })), - })) - api.addGasToken(ethBalances) -} - -async function liquityTvl(api) { - - for (let i = 0; ; i++) { - try { - const bamm = await api.call({ target: bKeeperAddress, params: [i], abi: abi["bamms"] }); - const balance = await api.call({ target: stabilityPoolAddress, params: [bamm], abi: abi["getCompoundedLUSDDeposit"] }); api.add(ADDRESSES.ethereum.LUSD, balance); - } - catch { - break; - } - } -} - -async function tvlEth(api) { - - await Promise.all([ - compoundTvl(api), - makerTvl(api), - liquityTvl(api), - ]) -} - -async function tvlFantom(api) { - return api.sumTokens({ - tokensAndOwners: [ - [usdcFantom, usdcFantomBAMM], - [daiFantom, daiFantomBAMM], - ] - }) -} - -async function tvlArbitrum(api) { - return api.sumTokens({ - tokensAndOwners: [ - [usdcArbitrum, usdcArbitrumBAMM], - [usdtArbitrum, usdtArbitrumBAMM], - ] - }) -} - -async function tvlPolygon(api) { - const calls = polygonBamms.map((bamm, i) => ({ - target: polygonHTokens[i], - params: [bamm] - })) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: polygonHTokens }) - const bals = await api.multiCall({ abi: abi.balanceOfUnderlying, calls }) - api.add(tokens, bals) -} - -module.exports = { - ethereum: { "tvl": tvlEth }, - fantom: { "tvl": tvlFantom }, - arbitrum: { "tvl": tvlArbitrum }, - polygon: { "tvl": tvlPolygon } -}; diff --git a/projects/bracket-fi/index.js b/projects/bracket-fi/index.js deleted file mode 100644 index 1f48e779ad2..00000000000 --- a/projects/bracket-fi/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') - -const BRACKET_ESCROW_PROXY = '0x9b9d7297C3374DaFA2A609d47C79904e467970Bc' - -const config = { - ethereum: { - tokens: [ - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.RETH, - "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", - ADDRESSES.ethereum.WEETH, - "0xE95A203B1a91a908F9B9CE46459d101078c2c3cb", - "0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38", - ADDRESSES.linea.rzETH, - ] - }, - arbitrum: { - tokens: [ - ADDRESSES.arbitrum.WSTETH, - "0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8", - ADDRESSES.arbitrum.weETH, - ADDRESSES.berachain.rsETH, - ADDRESSES.blast.ezETH - ] - }, -} - -Object.keys(config).forEach(chain => { - const { owner = BRACKET_ESCROW_PROXY, tokens, } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owner, tokens }) - } -}) \ No newline at end of file diff --git a/projects/bracket-lst/index.js b/projects/bracket-lst/index.js deleted file mode 100644 index 37b6aa4fe2f..00000000000 --- a/projects/bracket-lst/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const brktETH = '0x6C8550167BbD06D4610a6A443eCbEd84Bd1AccD6' - -const abis = { - collaterals: "function collaterals(uint256) external view returns (address collateral, bool whitelisted, uint256 totalDeposit)" -} - -const tvl = async (api) => { - const colls = await api.fetchList({ target: brktETH, itemAbi: abis.collaterals, itemCount: 20, permitFailure: true }) - const tokens = colls.filter(item => item && item.whitelisted).map(item => item && item.collateral) - await api.sumTokens({ tokens, owner: brktETH }) -} - -module.exports = { - doublecounted: true, - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/bracket-vaults/index.js b/projects/bracket-vaults/index.js deleted file mode 100644 index 9e0cdf89170..00000000000 --- a/projects/bracket-vaults/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const CONFIG = { - vaults: { - brUSDC: '0xb8ca40E2c5d77F0Bc1Aa88B2689dddB279F7a5eb', // USDC+ Vault - brETH: '0x3588e6Cb5DCa99E35bA2E2a5D42cdDb46365e71B', // ETH+ Vault - bravUSDC: '0x9f96E4B65059b0398B922792d3fF9F10B4567533', // Avant+ Vault - }, - bracketLens: '0xcdc3a8374532Ddb762c76604f30F6a9FDd29082c', -} - -const tvl = async (api) => { - let { vaults, bracketLens } = CONFIG - vaults = Object.values(vaults) - - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults }) - const bals = await api.multiCall({ abi: 'function getTVL(address) view returns (uint256)', calls: vaults, target: bracketLens }) - - api.add(tokens, bals) -} - -module.exports = { - doublecounted: true, - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/bracketX/index.js b/projects/bracketX/index.js deleted file mode 100644 index 7be4fba694a..00000000000 --- a/projects/bracketX/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const WETH_ARBITRUM = ADDRESSES.arbitrum.WETH; -const BRACKETX_PROXY_ARBITRUM = '0x12625Af4248E8137c6C58aed6eE804f8854669a6'; - -async function tvl(api) { - const collateralBalance = await api.call({ - abi: 'erc20:balanceOf', - target: WETH_ARBITRUM, - params: [BRACKETX_PROXY_ARBITRUM], - }); - - api.add(WETH_ARBITRUM, collateralBalance) -} - -module.exports = { - methodology: 'Count the number of WETH tokens locked in the protocol contract.', - start: '2024-01-05', - arbitrum: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/brahmafi/batcher.json b/projects/brahmafi/batcher.json deleted file mode 100644 index 507f10c61e7..00000000000 --- a/projects/brahmafi/batcher.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "pendingDeposit": "uint256:pendingDeposit" -} \ No newline at end of file diff --git a/projects/brahmafi/erc4626.json b/projects/brahmafi/erc4626.json deleted file mode 100644 index b92419174d9..00000000000 --- a/projects/brahmafi/erc4626.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalAssets": "uint256:totalAssets", - "asset": "address:asset" -} \ No newline at end of file diff --git a/projects/brahmafi/helper.js b/projects/brahmafi/helper.js deleted file mode 100644 index b75b6547d71..00000000000 --- a/projects/brahmafi/helper.js +++ /dev/null @@ -1,82 +0,0 @@ -const vaultAbi = require("./vault.json"); -const batcherAbi = require("./batcher.json"); -const teAbi = require("./tradeExecutor.json"); -const erc4626Abi = require("./erc4626.json"); - -const vaults = [ - { - address: "0xAa0508FcD0352B206F558b2B817dcC1F0cc3F401", - batcher: "0x47c84A87A2a972769cc5DeDa28118617E3A48F8C", - }, - { - address: "0x1C4ceb52ab54a35F9d03FcC156a7c57F965e081e", - batcher: "0x1b6BF7Ab4163f9a7C1D4eCB36299525048083B5e", - }, - { - address: "0x3c4Fe0db16c9b521480c43856ba3196A9fa50E08", - batcher: "0xa67feFA6657e9aa3e4ee6EF28531641dAFBB8cAf", - }, -]; - -const erc4626Vaults = [ - { - address: "0x2D3B10fc395B109DC32B71D14CdD523E471F14EF", - chain: "polygon", - }, -]; - -const l1OnlyVaults = [ - { - address: "0xB3dA8d6Da3eDe239ccbF576cA0Eaa74D86f0e9D3", - isYieldGenerating: false, - chain: "ethereum", - }, - { - address: "0x4FE66bff98eFc030BdC86c733F481B089fb9DCFd", - isYieldGenerating: true, - chain: "polygon", - }, -]; - -const getTVLData = async (api) => { - const _vaults = vaults.map((v) => v.address); - const batchers = vaults.map((v) => v.batcher); - - const [ pendingDeposits, tokens] = await Promise.all([ - api.multiCall({ calls: batchers, abi: batcherAbi.pendingDeposit, }), - api.multiCall({ calls: _vaults, abi: vaultAbi.wantToken, }), - ]) - api.add(tokens, pendingDeposits) - await api.sumTokens({ tokensAndOwners2: [tokens, _vaults], }); - const executors = await api.fetchList({ lengthAbi: 'totalExecutors', itemAbi: 'executorByIndex', targets: _vaults}) - const eTokens = await api.multiCall({ abi: 'address:vaultWantToken', calls: executors }) - const eFunds = await api.multiCall({ abi: teAbi.positionInWantToken, calls: executors }) - const bals = eFunds.map((it) => it.posValue); - api.add(eTokens, bals); -}; - -const getL1VaultOnlyFundsByChain = async (api) => { - const vaults = l1OnlyVaults.filter(({ chain }) => chain === api.chain).map(i => i.address) - const yvaults = erc4626Vaults.filter((it) => it.chain === api.chain && it.isYieldGenerating).map((v) => v.address); - const tokens = await api.multiCall({ abi: vaultAbi.wantToken, calls: vaults }) - const bals = await api.multiCall({ abi: vaultAbi.totalVaultFunds, calls: vaults }) - const ytokens = await api.multiCall({ abi: erc4626Abi.asset, calls: yvaults }) - const ybals = await api.multiCall({ abi: vaultAbi.lastEpochYield, calls: yvaults }) - - api.add(tokens, bals) - api.add(ytokens, ybals) -} - -const getERC4626VaultFundsByChain = async (api) => { - const vaults = erc4626Vaults.filter((it) => it.chain === api.chain).map((v) => v.address); - const tokens = await api.multiCall({ abi: erc4626Abi.asset, calls: vaults }) - const bals = await api.multiCall({ abi: erc4626Abi.totalAssets, calls: vaults }) - - api.add(tokens, bals) -} - -module.exports = { - getTVLData, - getERC4626VaultFundsByChain, - getL1VaultOnlyFundsByChain, -}; diff --git a/projects/brahmafi/index.js b/projects/brahmafi/index.js deleted file mode 100644 index 3512d0401ce..00000000000 --- a/projects/brahmafi/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { - getTVLData, - getERC4626VaultFundsByChain, - getL1VaultOnlyFundsByChain, -} = require("./helper"); - -const ethTvl = async (api) => { - await getTVLData(api); - await getL1VaultOnlyFundsByChain(api); -}; - -const polygonTvl = async (api) => { - await getERC4626VaultFundsByChain(api) - await getL1VaultOnlyFundsByChain(api) -}; - -module.exports = { - methodology: - "TVL is the total supply of our vault tokens, multiplied by their corresponding share price. The share price is calculated based on the value of positions taken by vaults both on ethereum and optimism networks", - ethereum: { - tvl: ethTvl, - }, - polygon: { - tvl: polygonTvl, - }, - hallmarks: [ - ['2023-03-28', "Brahma vaults discontinued, Brahma Console announced [not tracked here]"], - ], -}; diff --git a/projects/brahmafi/tradeExecutor.json b/projects/brahmafi/tradeExecutor.json deleted file mode 100644 index 708cc3faa55..00000000000 --- a/projects/brahmafi/tradeExecutor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "positionInWantToken": "function positionInWantToken() view returns (uint256 posValue, uint256 lastUpdatedBlock)" -} \ No newline at end of file diff --git a/projects/brahmafi/vault.json b/projects/brahmafi/vault.json deleted file mode 100644 index 1e54c69f041..00000000000 --- a/projects/brahmafi/vault.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "wantToken": "address:wantToken", - "totalVaultFunds": "uint256:totalVaultFunds", - "executorByIndex": "function executorByIndex(uint256 _index) view returns (address)", - "lastEpochYield": "uint256:lastEpochYield" -} diff --git a/projects/brainiac/index.js b/projects/brainiac/index.js deleted file mode 100644 index 41fb35a1bec..00000000000 --- a/projects/brainiac/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports } = require('../helper/compound'); -const { staking, sumTokensExport } = require('../helper/unknownTokens') - -const chain = 'godwoken_v1' - -const farms = [ - "0x8a01b508d8bF08eE5583743C9E1C8Ec45C22E303", - "0x4bdEb91c2DA38F60bc03aB469B095300656FeAa1", -] - -const LPfarms = [ - "0x1781c95EB104238DA6dfC66E2005b3Afc36BcFf9", - "0x38254D980745027d0dB39f06f83c40BE37F03404", - "0x355880E6b49931A7B8B950B3dc032eF19670B780", -] - -const BRAINIAC = '0x6baefb2f6ecfb912eb0b5791a691c0af63ac6e85' -const BRAINIAC_CKB_LP = '0xaa0f41e50dbfd8247fb397b1fffea1fea9f4e6d4' - -// params = comptroller , chain , brCKB , CKB -module.exports = { - [chain]: compoundExports("0x5c68BDBba7151c486faCB66dc39b891030e46725", "0x352d09567dE5A02415670723D09E006F623fE62e", ADDRESSES.godwoken_v1.pCKB) -} - -module.exports[chain].staking = staking({ chain, useDefaultCoreAssets: true, owners: farms, tokens: [BRAINIAC], lps: [BRAINIAC_CKB_LP], }) -module.exports[chain].pool2 = sumTokensExport({ chain, useDefaultCoreAssets: true, owners: LPfarms, tokens: [BRAINIAC_CKB_LP], }) diff --git a/projects/brbtc/index.js b/projects/brbtc/index.js deleted file mode 100644 index 528fa945aef..00000000000 --- a/projects/brbtc/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require('../helper/unwrapLPs') - -const chainConfigs = { - ethereum: { - addr: "0x2eC37d45FCAE65D9787ECf71dc85a444968f6646", - vault: ["0x1419b48e5C1f5ce413Cf02D6dcbe1314170E3386", "0x3A1FA847e2E69e278c6bfcA618a59Fdcf5923214"], //brBTC_vault, falcon address - tokens: [ - ADDRESSES.ethereum.WBTC,//WBTC - "0x004E9C3EF86bc1ca1f0bB5C7662861Ee93350568",//uniBTC - ADDRESSES.mantle.FBTC,//FBTC - ADDRESSES.ethereum.cbBTC,//cbBTC - "0x2F913C820ed3bEb3a67391a6eFF64E70c4B20b19",//M-BTC - ], - staking: { - symbiotic: { - vault: "0x08F39b3d75712148dacDB2669C3EAcc7F1152547", - owner: "0x1F3c54EC74F1A5C0Bc19af04dAdFa1A677231ac9", //safe wallet - token: "0x004E9C3EF86bc1ca1f0bB5C7662861Ee93350568" //uniBTC - }, - }, - }, - bsc: { - addr: "0x733a6c29eDA4a58931AE81b8d91e29f2EAf01df3", - vault: ["0x1dF46ec5e86FeC4589b3fA7D60B6Dc7Ef890AD93"], - tokens: [ - ADDRESSES.bsc.BTCB,//BTCB - "0x6B2a01A5f79dEb4c2f3c0eDa7b01DF456FbD726a",//uniBTC - ADDRESSES.mantle.FBTC,//FBTC - "0x9BFA177621119e64CecbEabE184ab9993E2ef727",//M-BTC - ], - staking: { - kernel: { - vault: "0x4F49f1d480D48AF660b7f4506bbB785AD5648726", - owner: "0x1Ae02CD8a4566A4f2432857D7A943765D1e3E757", - token: "0x9BFA177621119e64CecbEabE184ab9993E2ef727" //M-BTC - }, - } - }, -} - -module.exports = { - methodology: 'brBTC standing for Bedrock BTC, is designed specifically for Bitcoin holders seeking to participate in the next generation of DeFi opportunities. It accepts uniBTC and multiple wrapped BTC assets and Bedrock manages those assets on multiple trusted yield source layers such as Babylon, Kernel, Pell, Satlayer and etc.', - doublecounted: true, - start: '2024-12-19', -} - -async function tvl(api) { - const cfg = chainConfigs[api.chain] ?? {} - if (!cfg) return; - - // Handle kernel staking - if (cfg.staking && cfg.staking.kernel) { - const stakingCfg = cfg.staking.kernel - const stakingBalance = await api.call({ abi: 'erc20:balanceOf', target: stakingCfg.vault, params: [stakingCfg.owner] }) - api.add(stakingCfg.token, stakingBalance) - } - - // Handle symbiotic staking - if (cfg.staking && cfg.staking.symbiotic) { - const stakingCfg = cfg.staking.symbiotic - const stakingBalance = await api.call({ abi: 'erc20:balanceOf', target: stakingCfg.vault, params: [stakingCfg.owner] }) - api.add(stakingCfg.token, stakingBalance) - } - - return sumTokens2({ api, owners: cfg.vault, tokens: cfg.tokens }) -} - -['ethereum', 'bsc'].forEach(chain => { - module.exports[chain] = { tvl: tvl } -}) \ No newline at end of file diff --git a/projects/breadchain/index.js b/projects/breadchain/index.js deleted file mode 100644 index 885d13f34dd..00000000000 --- a/projects/breadchain/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - xdai: { - tvl: sumTokensExport({ owner: '0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3', tokens: [ADDRESSES.xdai.DAI, ADDRESSES.xdai.SDAI]}) - }, -} \ No newline at end of file diff --git a/projects/brewlabs/index.js b/projects/brewlabs/index.js deleted file mode 100644 index 2ff04a2ce9d..00000000000 --- a/projects/brewlabs/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const { setCache } = require('../helper/cache') -const { sumUnknownTokens } = require('../helper/unknownTokens') -const { post } = require('../helper/http') -const sdk = require('@defillama/sdk') - -const chainsList = ["ethereum", "bsc", "polygon"]; -const api_endpoint = "https://api.nodes-brewlabs.info/api"; - -const chains = { - ethereum: 1, - bsc: 56, - polygon: 137, - cronos: 25, - fantom: 250, - avax: 43114, - bitgert: 32520, -}; -const blacklist = [ - "0x2f6ad7743924b1901a0771746152dde44c5f11de", - "0xfd6bc48f68136e7bf4ae1fb4b0c2e6911a50e18b", - "0xafbb5dafacea3cfe1001357449e2ea268e50f368", - "0x7db5af2b9624e1b3b4bb69d6debd9ad1016a58ac", -]; - -module.exports = { - deadFrom: "2025-04-01", - timetravel: false, - misrepresentedTokens: true, -}; - -const data = { - pool2: {}, - staking: {}, -} - -async function getStakingPools(chain, poolType) { - if (!data[poolType][chain]) data[poolType][chain] = _getPools() - return data[poolType][chain] - - async function _getPools() { - const poolTypeStr = poolType === 'pool2' ? 'farms' : 'pools' - const pools = await post(`${api_endpoint}/${poolTypeStr}`, { chainId: chains[chain]}) - setCache(`brewlabs/pools`, chain, pools) - return pools - } -} - -chainsList.forEach(chain => { - module.exports[chain] = { - // tvl: sdk.util.sumChainTvls([staking, pool2]), - tvl: () => 0, - pool2, - staking, - } -}) - -async function staking(api) { - const pools = await getStakingPools(api.chain, 'staking') - const tokensAndOwners = pools.map(i => ([i.stakingToken.address, i.contractAddress])) - return sumUnknownTokens({ api, tokensAndOwners, blacklist}) -} - -const poolInfoAbi = "function poolInfo(uint256) view returns (address lpToken, uint256, uint256, uint256, uint256, uint256, uint16, uint16)" - -async function pool2(api) { - const pools = (await getStakingPools(api.chain, 'pool2')) - const tokensAndOwners = pools.map((v, i) => ([v.lpAddress, v.contractAddress])) - return sumUnknownTokens({ api, tokensAndOwners, blacklist}) -} diff --git a/projects/brewswap/index.js b/projects/brewswap/index.js deleted file mode 100644 index 3fc47f3f2d7..00000000000 --- a/projects/brewswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x563c86d9F17914FF868BCbe3903B3ef829A82F9E) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - polygon: { - tvl: getUniTVL({ factory: '0x563c86d9F17914FF868BCbe3903B3ef829A82F9E', useDefaultCoreAssets: true }), - }, - bsc: { - tvl: getUniTVL({ factory: '0xFe2bF5fc2D131dB07C5Ef7076856FD7f342738fF', useDefaultCoreAssets: true}) - } -}; // node test.js projects/brewswap/index.js diff --git a/projects/brickken/index.js b/projects/brickken/index.js deleted file mode 100644 index 5b1e1070fc6..00000000000 --- a/projects/brickken/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ESCROW_LATEST_PRICE_ABI = "function issuances(uint256) view returns(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"; - -async function tvl(api) { - const { factory } = config[api.chain] - const tokens = await api.fetchList({ lengthAbi: 'idSTOs', itemAbi: 'stoTokens', target: factory, startFromOne: true }) - const escrows = await api.fetchList({ lengthAbi: 'idSTOs', itemAbi: 'stoEscrows', target: factory, startFromOne: true }) - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens }) - // const names = await api.multiCall({ abi: 'string:name', calls: tokens}) - const issuanceIndex = await api.multiCall({ abi: 'uint256:issuanceIndex', calls: escrows }) - const payTokens = await api.multiCall({ abi: 'address:paymentToken', calls: escrows }) - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: payTokens }) - const lastPrice = await api.multiCall({ abi: ESCROW_LATEST_PRICE_ABI, calls: escrows.map((escrow, idx) => ({ target: escrow, params: issuanceIndex[idx] })) }) - - // const print = [] - payTokens.forEach((token, idx) => { - // print.push({ name: names[idx], token: tokens[idx], supply: supplies[idx]/1e18, price: lastPrice[idx][9]/1e18, tvl: supplies[idx] * lastPrice[idx][9]/ 1e42 }) - api.add(token, supplies[idx] * lastPrice[idx][9] / 10 ** (36 - decimals[idx])) - }) - // console.table(print) -} - -module.exports = { - misrepresentedTokens: true, - methodology: `We get the TVL as the sum of all total supplies of all tokens issued by our factory multiplied by the price of their latest public price.` -} - -const config = { - ethereum: { factory: '0x91af681C85Ca98Efc5D69C1B62E6F435030969Db', }, - bsc: { factory: '0xCe4529Fe88df480BD777d3e32dfD7032e6C685ff', }, - base: { factory: '0x278D7bdc2451B0Fa4087A68ce084a86cB91D4d83', }, - avax: { factory: '0xc6c230FA8F40022dE997727436Fae01caAbcDe61', }, - polygon: { factory: '0x1bb57e2Abf2822C01cCAeBcCBc9D16C7fD0c1956', }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/bridge-lz/index.js b/projects/bridge-lz/index.js deleted file mode 100644 index 5447beb2202..00000000000 --- a/projects/bridge-lz/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const ADMIN_ADDRESSES = { - ethereum: "0x233dc79F924c35AcB4524BaC4A883c8CE11A75B2", - base: "0x233dc79F924c35AcB4524BaC4A883c8CE11A75B2", - optimism: "0x233dc79F924c35AcB4524BaC4A883c8CE11A75B2", - linea: "0x233dc79F924c35AcB4524BaC4A883c8CE11A75B2", -} - -module.exports = { - methodology: - "Adds up the total value locked as collateral on the Bridge platform" -} - -Object.keys(ADMIN_ADDRESSES).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ owner: ADMIN_ADDRESSES[chain], tokens: [nullAddress], logCalls: true }) - } -}) diff --git a/projects/bridge-mutual/abi.json b/projects/bridge-mutual/abi.json deleted file mode 100644 index 073067d8d61..00000000000 --- a/projects/bridge-mutual/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "count": "uint256:count", - "list": "function list(uint256 offset, uint256 limit) view returns (address[] _policyBooksArr)", - "getShieldTokenAddress": "function getShieldTokenAddress(address _policyBook) view returns (address)", - "virtualUsdtAccumulatedBalance": "uint256:virtualUsdtAccumulatedBalance" -} \ No newline at end of file diff --git a/projects/bridge-mutual/index.js b/projects/bridge-mutual/index.js deleted file mode 100644 index 0173d54bec3..00000000000 --- a/projects/bridge-mutual/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - CapitalPool: "0x426f72ab027da5f5a462d377a5eb057f63082b02", - staking: ["0x81d73999fabec7e8355d76d1010afbe3068f08fa", "0x55978a6f6a4cfa00d5a8b442e93e42c025d0890c"], - PolicyBookRegistry: "0xff13c3d2c7931e86e13c993a8cb02d68848f9613", - ShieldMining: "0x6d6fCf279a63129797def89dBA82a65b3386497e", - usdt: ADDRESSES.ethereum.USDT, - bmi: "0x725c263e32c72ddc3a19bea12c5a0479a81ee688", - }, - bsc: { - CapitalPool: "0x7fe3b7d89a982b3821d8fa2c93a1b87f87f00e80", - staking: ["0x8be37f9bb9b09cf89774c103c52d1e660398a7b3"], - PolicyBookRegistry: "0xab7c7356f706954c3c926a690e96c7b65fa76116", - ShieldMining: "0xcc75bf59969e8362d064536fd941a541f81abe56", - usdt: ADDRESSES.bsc.USDT, - bmi: "0xb371f0eb8dfb3b47fdfc23bbcbc797954d3d4f23", - }, - polygon: { - CapitalPool: "0xb7594fc3e0a044b4aeeb910c3258ed24f3114006", - staking: ["0xcfdb12299c2d0111ae1cee23337e9156deabfbf5"], - PolicyBookRegistry: "0xab7c7356f706954c3c926a690e96c7b65fa76116", - ShieldMining: "0xde52f95ea3373fab1deefde56d35fa1dacd83e99", - usdt: ADDRESSES.polygon.USDT, - bmi: "0xa10facae1abac4fae6312c615a9c3fd56075be1a", - }, -} - -Object.keys(config).forEach(chain => { - const { CapitalPool, staking, PolicyBookRegistry, ShieldMining, usdt, bmi, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const vusdtBalances = await api.call({ target: CapitalPool, abi: abi["virtualUsdtAccumulatedBalance"], }) - api.add(usdt, vusdtBalances) - const policyBooks = await getPolicyBookList(api, PolicyBookRegistry) - const tokens = await api.multiCall({ target: ShieldMining, abi: abi.getShieldTokenAddress, calls: policyBooks, }) - return sumTokens2({ api, tokensAndOwners2: [tokens, policyBooks] }) - }, - staking: sumTokensExport({ owners: staking, tokens: [bmi] }) - } -}) - -async function getPolicyBookList(api, PolicyBookRegistry) { - const countPolicyBooks = await api.call({ target: PolicyBookRegistry, abi: abi["count"], }) - return api.call({ target: PolicyBookRegistry, params: [0, countPolicyBooks], abi: abi["list"], }) -} diff --git a/projects/bridgehela/index.js b/projects/bridgehela/index.js deleted file mode 100644 index 8b5fcafcc73..00000000000 --- a/projects/bridgehela/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner:'0x8094816e435b8ca77f2dfe240820c6c6ac784900', tokens: [ADDRESSES.ethereum.USDT,ADDRESSES.ethereum.USDC] }) - }, - bsc: { - tvl: sumTokensExport({ owner:'0x8094816e435b8ca77f2dfe240820c6c6ac784900', tokens: [ADDRESSES.bsc.USDT,ADDRESSES.bsc.USDC] }) - }, - polygon: { - tvl: sumTokensExport({ owner:'0x700d0c48926af78c2c51f08c667f27ce6548386b', tokens: [ADDRESSES.polygon.USDT,ADDRESSES.polygon.USDC] }) - }, - hela: { - tvl: async (api) => { - const totalSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: [ADDRESSES.hela.hUSDC,ADDRESSES.hela.hUSDT] }) - api.add(ADDRESSES.hela.hUSDC ,totalSupply[0]) - api.add(ADDRESSES.hela.hUSDT ,totalSupply[1]) - } - } -} \ No newline at end of file diff --git a/projects/bridgekek/index.js b/projects/bridgekek/index.js deleted file mode 100644 index b2227b1ca53..00000000000 --- a/projects/bridgekek/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokens: ['0x67954768E721FAD0f0f21E33e874497C73ED6a82'], owner: '0x53423b7bf445997e76ad94f820f0559e451a98e2', logCalls: true }), - }, - kekchain: { - tvl: () => ({}), - // tvl: sumTokensExport({ tokens: [nullAddress ], owner: '0x0c851a31F484A7b462B82E138A2fa591ae8Fadc9', }), - }, -} \ No newline at end of file diff --git a/projects/bridgem/index.js b/projects/bridgem/index.js deleted file mode 100644 index aa6e2738fa4..00000000000 --- a/projects/bridgem/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const STONE = ADDRESSES.berachain.STONE; -const AtomicLockContract = '0x19727db22Cba70B1feE40337Aba69D83c6741caF'; - -const USDC = ADDRESSES.ethereum.USDC; -const ESTONE = '0x7122985656e38BDC0302Db86685bb972b145bD3C'; -const LOCK_CONTRACT = '0xD6572c7Cd671ECF75d920aDcd200B00343959600'; - -module.exports = { - methodology: 'counts the number of STONE in the AtomicLockContract.', - manta: { - tvl: sumTokensExport({ owner: AtomicLockContract, tokens: [STONE] }), - }, - ethereum: { - tvl: sumTokensExport({ owner: LOCK_CONTRACT, tokens: [USDC, ESTONE] }), - } -}; diff --git a/projects/bridgers-ai/index.js b/projects/bridgers-ai/index.js deleted file mode 100644 index eee62e0f13a..00000000000 --- a/projects/bridgers-ai/index.js +++ /dev/null @@ -1,180 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokensExport, } = require('../helper/sumTokens') - -const getBridgeContract = (chain) => { - switch (chain) { - case 'ethereum': - return '0xb685760ebd368a891f27ae547391f4e2a289895b'; - case 'bsc': - return '0xb685760ebd368a891f27ae547391f4e2a289895b'; - case 'heco': - return '0xaeAE2CBb1E024E27e80cc61eE9A8B300282209B4'; - case 'okexchain': - return '0xb685760ebd368a891f27ae547391f4e2a289895b'; - case 'polygon': - return '0xb685760ebd368a891f27ae547391f4e2a289895b'; - case 'fantom': - return '0xb685760ebd368a891f27ae547391f4e2a289895b'; - case 'arbitrum': - return '0xb685760ebd368a891f27ae547391f4e2a289895b'; - case 'tron': - return 'TPwezUWpEGmFBENNWJHwXHRG1D2NCEEt5s'; - case 'solana': - return 'FDF8AxHB8UK7RS6xay6aBvwS3h7kez9gozqz14JyfKsg'; - case 'base': - return '0xa18968cc31232724f1dbd0d1e8d0b323d89f3501'; - case 'sui': - return '0x2b0876f0b7034320ad6d2f378501fe92e41c8b4780bda7769094d2431170e532'; - case 'aptos': - return '0x4512ba8a4862edcb20d5027a8d1b47129299d4bed9e41a8a727b78808d6faef4'; - case 'ton': - return 'EQA7x9ynlRUvgiWsQRUTTkLwznG3ZyFDKprejQej75HDTo54'; - case 'era': - return '0x2042ecdc71f9ffb2eb9cda7f801eccc5c6c8b7eb'; - case 'linea': - return '0x8159891dfe9de7fc3bf1b665eb1adda60f2acd0e'; - case 'optimism': - return '0xb685760ebd368a891f27ae547391f4e2a289895b'; - case 'avax': - return '0xb685760ebd368a891f27ae547391f4e2a289895b'; - default: - throw new Error('Missing bridgers contract'); - } -} - -const tokensConf = { - ethereum: { - ETH: nullAddress, - BUSD: ADDRESSES.ethereum.BUSD, - USDC: ADDRESSES.ethereum.USDC, - USDT: ADDRESSES.ethereum.USDT, - DAI: ADDRESSES.ethereum.DAI, - WBTC: ADDRESSES.ethereum.WBTC, - WETH: ADDRESSES.ethereum.WETH, - AAVE: ADDRESSES.ethereum.AAVE, - // SWFTC: "0x0bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e", - HT: "0x6f259637dcd74c767781e37bc6133cd6a68aa161", - PEPE: "0x6982508145454Ce325dDbE47a25d4ec3d2311933", - WLD: "0x163f8C2467924be0ae7B5347228CABF260318753", - }, - bsc: { - BNB: nullAddress, - BUSD: ADDRESSES.bsc.BUSD, - USDC: ADDRESSES.bsc.USDC, - USDT: ADDRESSES.bsc.USDT, - DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - WBNB: ADDRESSES.bsc.WBNB, - BTCB: ADDRESSES.bsc.BTCB, - ETH: ADDRESSES.bsc.ETH, - // SWFTC: "0xe64e30276c2f826febd3784958d6da7b55dfbad3", - DOGE: "0xba2ae424d960c26247dd6c32edc70b295c744c43", - }, - /*heco: { - HT: nullAddress, - USDC: ADDRESSES.heco.USDC_HECO, - USDT: ADDRESSES.heco.USDT, - HUSD: "0x0298c2b32eae4da002a15f36fdf7615bea3da047", - ETH: "0x64ff637fb478863b7468bc97d30a5bf3a428a1fd", - // SWFTC: "0x329dda64Cbc4DFD5FA5072b447B3941CE054ebb3", - },*/ - okexchain: { - OKT: nullAddress, - USDC: ADDRESSES.okexchain.USDC, - USDT: ADDRESSES.okexchain.USDT, - ETH: ADDRESSES.okexchain.ETHK, - OKB: ADDRESSES.okexchain.OKB, - }, - polygon: { - MATIC: nullAddress, - USDC: ADDRESSES.polygon.USDC, - USDT: ADDRESSES.polygon.USDT, - WMATIC: ADDRESSES.polygon.WMATIC_2, - DAI: ADDRESSES.polygon.DAI, - }, - fantom: { - FTM: nullAddress, - USDC: ADDRESSES.fantom.USDC, - USDT: ADDRESSES.fantom.fUSDT, - DAI: ADDRESSES.fantom.DAI, - WETH: "0x74b23882a30290451A17c44f4F05243b6b58C76d", - }, - arbitrum: { - ETH: nullAddress, - ARB: ADDRESSES.arbitrum.ARB, - USDC_CIRCLE: ADDRESSES.arbitrum.USDC_CIRCLE, - USDC: ADDRESSES.arbitrum.USDC, - USDT: ADDRESSES.arbitrum.USDT, - }, - tron: { - TRX: nullAddress, - USDT: ADDRESSES.tron.USDT, - USDC: ADDRESSES.tron.USDC, - USDD: ADDRESSES.tron.USDD, - BUSD: ADDRESSES.tron.BUSD, - TUSD: ADDRESSES.tron.TUSD, - USDJ: ADDRESSES.tron.USDJ, - BTT: ADDRESSES.tron.BTT, - JST: ADDRESSES.tron.JST, - }, - solana: { - }, - base: { - ETH: nullAddress, - WETH: ADDRESSES.base.WETH, - USDT: ADDRESSES.base.USDbC, - USDC: ADDRESSES.base.USDC, - }, - sui: { - SUI: ADDRESSES.sui.SUI, - USDT: ADDRESSES.sui.USDT, - USDC: ADDRESSES.sui.USDC, - // SSWP: '0x361dd589b98e8fcda9a7ee53b85efabef3569d00416640d2faa516e3801d7ffc::TOKEN::TOKEN', - }, - aptos: { - APT: ADDRESSES.aptos.APT, - }, - ton: { - TON: ADDRESSES.ton.TON, - USDT: ADDRESSES.ton.USDT, - USDC: ADDRESSES.ton.USDC, - NOT: ADDRESSES.ton.NOT, - }, - era: { - ETH: nullAddress, - USDT: ADDRESSES.era.USDT, - USDC: ADDRESSES.era.USDC, - }, - linea: { - ETH: nullAddress, - USDT: ADDRESSES.linea.USDT, - USDC: ADDRESSES.linea.USDC, - }, - optimism: { - ETH: nullAddress, - OP: ADDRESSES.optimism.OP, - USDC_CIRCLE: ADDRESSES.optimism.USDC_CIRCLE, - USDT: ADDRESSES.optimism.USDT, - USDC: ADDRESSES.optimism.USDC, - }, - avax: { - AVAX: nullAddress, - USDt: ADDRESSES.avax.USDt, - USDC: ADDRESSES.avax.USDC, - USDT_e: ADDRESSES.avax.USDT_e, - USDC_e: ADDRESSES.avax.USDC_e, - DAI: ADDRESSES.avax.DAI, - ETH: '0xf20d962a6c8f70c731bd838a3a388d7d48fa6e15', - }, -}; - -module.exports = { - methodology: "Assets staked in the pool and trading contracts", -} -for (const network of Object.keys(tokensConf)) { - const owner = getBridgeContract(network) - let tokens = Object.values(tokensConf[network]) - if (network === 'solana') tokens = undefined - module.exports[network] = { - tvl: sumTokensExport({ owner, tokens }), - }; -} diff --git a/projects/bright-union/index.js b/projects/bright-union/index.js deleted file mode 100644 index fa44c23eca4..00000000000 --- a/projects/bright-union/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {staking} = require('../helper/staking'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -// BRI -const BrightRiskIndex = "0xa4b032895BcB6B11ec7d21380f557919D448FD04"; -// Staking -const BRIGHT = "0xbeab712832112bd7664226db7cd025b153d3af55"; -const BrightStaking = "0x1EB7c3CBac942983B80b384A978946DcEDc6CF5a"; -const BrightLPStaking = ["0x160c43821004Cb76C7e9727159dD64ab8468f61C"]; - -//UNIV2 -const ETH_BRIGHT_UNIV2 = "0xf4835af5387fab6bbc59f496cbcfa92998469b7b"; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: BrightRiskIndex, tokens: [ADDRESSES.ethereum.DAI] }), - pool2: staking(BrightLPStaking, [ETH_BRIGHT_UNIV2]), - staking: staking(BrightStaking, BRIGHT), - }, -}; diff --git a/projects/brightside/index.js b/projects/brightside/index.js deleted file mode 100644 index 34737f3d02d..00000000000 --- a/projects/brightside/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - deadFrom: '04-04-2024', // chain is shutting down - misrepresentedTokens: true, - milkomeda_a1: { - tvl: getUniTVL({ - factory: '0x65be76efd12e7932bcd99acfefb8d531ec4f7e0d', useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/bril-finance/index.js b/projects/bril-finance/index.js deleted file mode 100644 index 52ef3619243..00000000000 --- a/projects/bril-finance/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - bsc: { factory: '0xfaa2e7c69F7F34195D3Ef6CF98B6B009A6A07F30', fromBlock: 29703589, } -} - -module.exports = { - doublecounted: true, - methodology: 'Count tokens managed by Bril automated liquidity management stratagies', -}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event StrategyInstanceDeployed (uint256 indexed typeId, address indexed strategyInstance, address indexed owner, address vault, bytes initData)', - onlyArgs: true, - fromBlock, - }) - const strategies = logs.map(log => log.strategyInstance); - const areStrategiesEnabled = await api.multiCall({ abi: factory_abi.isStrategyEnabled, calls: strategies, target: factory }); - const enabledStrategies = strategies.filter((s, index) => areStrategiesEnabled[index]); - - const balances = await api.multiCall({ abi: abi.vaultAmounts, calls: enabledStrategies, permitFailure: true }); - const summaries = await api.multiCall({ abi: abi.vaultSummary, calls: enabledStrategies, permitFailure: true, }); - - for (let i = 0; i < balances.length; i++) { - const balance = balances[i] - const summary = summaries[i] - if (!balance || !summary) continue; - api.add(summary.baseToken_, balance.baseTotal_); - api.add(summary.scarceToken_, balance.scarceTotal_); - } - } - } -}) - -const abi = { - "vaultAmounts": "function vaultAmounts() view returns (uint256 baseTotal_, uint256 scarceTotal_ )", - "vaultSummary": "function vaultSummary() view returns (address vault_, address baseToken_, address scarceToken_, bool inverted_, int24 tickSpacing_)" -} -const factory_abi = { - "isStrategyEnabled": "function isStrategyEnabled(address) view returns (bool enabled_ )", -} diff --git a/projects/brinc/index.js b/projects/brinc/index.js deleted file mode 100644 index 48c496bcdb2..00000000000 --- a/projects/brinc/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const treasury = "0xB5de3f06aF62D8428a8BF7b4400Ea42aD2E0bc53" - -module.exports = { - hallmarks: [ - [1639440000, "Brinc hack due to private key compromise"], - [1644019200, "Relaunch on Arbitrum"] - ], - methodology: `DAI reserves in the bonding curve `, - arbitrum: { - tvl: sumTokensExport({ owners: [treasury], tokens: [ADDRESSES.optimism.DAI], }), - //staking: stakingPricedLP("0xE5Df6583eE8DAe9F532e65D7D2C30A961c442f8a", "0x5fE5E1d5D86BDD4a7D84B4cAfac1E599c180488f", "ethereum", "0xe4f157c7ca54f435fcc3bb0b4452f98d3a48f303", "dai", true ) - } -} \ No newline at end of file diff --git a/projects/brine/index.js b/projects/brine/index.js deleted file mode 100644 index e3cd2807841..00000000000 --- a/projects/brine/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const ethereumContracts = ["0x1390f521A79BaBE99b69B37154D63D431da27A07", "0xe17F8e501bF5e968e39D8702B30c3A8b955d8f52"]; -const polygonContracts = ["0x2714C5958e2b1417B3f2b7609202FFAD359a5965"]; -const optimismContracts = ["0xBdd40916bBC43bE14dd7183C30a64EE4A893D97f"]; -const arbitrumContracts = ["0x149e2C169f10914830EF39B9d184AE62BbCdF526"]; -const lineaContracts = ["0x508f001baa00976fc1d679af880267555900ab09"]; -const modeContracts = ["0xB884389d818046F48Ca63d4cCAF303ba65f6DbC1"]; -const scrollContracts = ["0x1e4a1a0d31cFDDC722965a0c2d3bBecF748252d6"]; - -const ethereumTokens = [ - ADDRESSES.null, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.MATIC, - '0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1', // arb - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.AAVE, - ADDRESSES.ethereum.MKR, - ADDRESSES.ethereum.LIDO, - "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", // rpl - "0xCa14007Eff0dB1f8135f4C25B34De49AB0d42766", // strk - "0xc00e94cb662c3520282e6f5717214004a7f26888" // comp -]; -const polygonTokens = [ - ADDRESSES.null, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, -] - -const optimismTokens = [ - ADDRESSES.null, - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.USDC_CIRCLE, - ADDRESSES.optimism.USDT, -] - -const arbitrumTokens = [ - ADDRESSES.null, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.USDT, -] - -const lineaTokens = [ - ADDRESSES.null, - ADDRESSES.linea.USDC, - ADDRESSES.linea.USDT, -] - -const modeTokens = [ - ADDRESSES.null, - ADDRESSES.mode.USDC, - ADDRESSES.mode.USDT -] - -const scrollTokens = [ - ADDRESSES.null, - ADDRESSES.scroll.USDC, - ADDRESSES.scroll.USDT -] - -module.exports = { - start: '2023-06-03', - ethereum: { tvl: sumTokensExport({ owners: ethereumContracts, tokens: ethereumTokens, }) }, - polygon: { tvl: sumTokensExport({ owners: polygonContracts, tokens: polygonTokens}) }, - optimism: { tvl: sumTokensExport({ owners: optimismContracts, tokens: optimismTokens}) }, - arbitrum: { tvl: sumTokensExport({ owners: arbitrumContracts, tokens: arbitrumTokens}) }, - linea: { tvl: sumTokensExport({ owners: lineaContracts, tokens: lineaTokens}) }, - mode: { tvl: sumTokensExport({ owners: modeContracts, tokens: modeTokens}) }, - scroll: { tvl: sumTokensExport({ owners: scrollContracts, tokens: scrollTokens}) }, -}; diff --git a/projects/bring/index.js b/projects/bring/index.js deleted file mode 100644 index 9134c8d041b..00000000000 --- a/projects/bring/index.js +++ /dev/null @@ -1,121 +0,0 @@ -const { staking, stakings } = require("../helper/staking"); -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { pool2s } = require("../helper/pool2"); - - -/*** Ethereum Addresses ***/ -const chefContracts = "0xDfa3D27Aa7E93527b2075Da5b7911184449f2c27"; -const BRNG = "0x3Ecb96039340630c8B82E5A7732bc88b2aeadE82"; - -const listOfToken = [ - //APYS - "0xf7413489c474ca4399eee604716c72879eea3615", - //1MIL - "0xa4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016", - //HAPI - "0xd9c2d319cd7e6177336b0a9c93c21cb48d84fb54", - //NUX - "0x89bd2e7e388fab44ae88bef4e1ad12b4f1e0911c", -]; - -/*** New BSC Addresses ***/ -const chefContractsNew_bsc = "0xe9d8b35e1D51b9C17504E5903C3F4D5b14d8c29E"; -const chefContractsNew_bsc1 = "0x3877D0E8DbB9e69beD6abDd8A40ED6A4a26EB44f"; -const BRNG_bsc = "0x939D5A13cf0074586a2Dcf17bC692B2D3CCdD517"; -const BNB_BRNG2_CakeLP = "0xE412f518A6a39351c965E201A329eC83047FEb4A"; - -const lpPoolsNew_bsc = [ - // WBNB-WELD 6 - "0x91bf1ad3868a45bf710c516a7869dcf3e61b8b7b", - // WBNB-YARL 9 - "0x2dC3A32895D13732a151A17C0f40E695C73AD797", - // WBNB-SMG 2 - "0x21b64d891805b0c6437e8209146e60ad87ebb499", -]; - -const listOfTokenNew_bsc = [ - //YARL - "0x843CbC1732aE7D7ba0533C6380989DACec315FfE", - //SMG - "0x6bfd576220e8444ca4cc5f89efbd7f02a4c94c16", - //WELD - "0x5b6ebb33eea2d12eefd4a9b2aeaf733231169684", -]; - -/*** Old BSC Addresses ***/ -const chefContractsOld_bsc = "0xbb6e99F9565d872F7D75850c43D9CA5c46c6fF0c"; - -const lpPoolsOld_bsc = [ - // WBNB-APYS - "0x510b29a93ebf098f3fc24a16541aaa0114d07056", - // WBNB-ROAD - "0x9e0eaf240eebed129136f4f733480feabbca136b", - // WBNB-HGET - "0xf74ee1e10e097dc326a2ad004f9cc95cb71088d3", -]; - -const listOfTokenOld_bsc = [ - //APYS - "0x37dfacfaeda801437ff648a1559d73f4c40aacb7", - //ROAD - "0x1a3057027032a1af433f6f596cab15271e4d8196", - //HGET - "0xc7d8d35eba58a0935ff2d5a33df105dd9f071731", -]; - -/*** Harmony Addresses ***/ -const chefHarmonyContracts = "0x3d4ACf89997148DcF2D266Ceb52A8bea2a7d4B2c"; -const BRNG_harmony = "0x3Ecb96039340630c8B82E5A7732bc88b2aeadE82"; - -const listOfToken_harmony = [ - //BRNG - "0x3Ecb96039340630c8B82E5A7732bc88b2aeadE82", -]; - -async function bscTvl(_, _b, { bsc: block }) { - const chain = 'bsc' - const toa = []; - ([...lpPoolsNew_bsc, ...listOfTokenNew_bsc]).forEach(token => toa.push([token, chefContractsNew_bsc])); - ([...listOfTokenOld_bsc, ...lpPoolsOld_bsc]).forEach(token => toa.push([token, chefContractsOld_bsc])); - return sumTokens2({ chain, block, tokensAndOwners: toa, }) -} - -async function ethTvl(_, block) { - const toa = []; - listOfToken.forEach(token => toa.push([token, chefContracts])) - return sumTokens2({ block, tokensAndOwners: toa, }) -} - -async function harmonyTvl(_, _b, { harmony: block }) { - const chain = 'harmony' - const toa = []; - listOfToken_harmony.forEach(token => toa.push([token, chefHarmonyContracts])) - return sumTokens2({ chain, block, tokensAndOwners: toa, }) -} - - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking(chefContracts, BRNG), - tvl: ethTvl, - }, - bsc: { - staking: stakings( - [chefContractsNew_bsc, chefContractsOld_bsc, chefContractsNew_bsc1], - BRNG_bsc, - "bsc" - ), - pool2: pool2s( - [chefContractsNew_bsc, chefContractsOld_bsc, chefContractsNew_bsc1], - [BNB_BRNG2_CakeLP], - "bsc" - ), - tvl: bscTvl, - }, - harmony: { - staking: harmonyTvl, - tvl: () => ({}) - }, - methodology: "Counts liquidty of the Pools through their chefContracts", -}; diff --git a/projects/brink/index.js b/projects/brink/index.js deleted file mode 100644 index b08465c3db0..00000000000 --- a/projects/brink/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const abis = { - asset: "function asset() view returns (address)", - balance: "function totalAssets() external view returns (uint256)", -}; - -const baseVaults = [ - "0x4aA4AdA8d8aB95a6e06dc90E4699bdD09C648778", // aave + morpho -]; - -const mantleVaults = [ - "0xE12EED61E7cC36E4CF3304B8220b433f1fD6e254", // lendle - "0x5A285484126D4e1985AC2cE0E1869D6384027727", // lendle - "0xf36a57369362eB1553f24C8ad50873723E6e1173", // lendle -]; - -async function baseTvl(api) { - const assets = await api.multiCall({ abi: abis.asset, calls: baseVaults }); - const balances = await api.multiCall({ abi: abis.balance, calls: baseVaults }); - baseVaults.forEach((v, i) => { - api.add(assets[i], balances[i]); - }); -} - -async function mantleTvl(api) { - const assets = await api.multiCall({ abi: abis.asset, calls: mantleVaults }); - const balances = await api.multiCall({ abi: abis.balance, calls: mantleVaults }); - mantleVaults.forEach((v, i) => { - api.add(assets[i], balances[i]); - }); -} - -module.exports = { - base: { - tvl: baseTvl - }, - mantle: { - tvl: mantleTvl - } -}; \ No newline at end of file diff --git a/projects/brise-swap/index.js b/projects/brise-swap/index.js deleted file mode 100644 index 3945c1cd3e6..00000000000 --- a/projects/brise-swap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bitgert: { - tvl: getUniTVL({ - factory: '0x1379a7f0bfc346d48508B4b162c37a4c43dd89dc', - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/brokkr/index.js b/projects/brokkr/index.js deleted file mode 100644 index 7b842b3aebe..00000000000 --- a/projects/brokkr/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const INDEX_TOKEN_CONTRACT = { - 'avax': ['0xB0E2880D4429d10eF1956062B260aDf09557A1da', '0x5C06f08807778fb84e25A00aEfafBF9C8d528267', '0xa02DDE8Ac54814c39A3Ab12EaC43B557EffFaF60'], - 'arbitrum': ['0x6b9F66564d92fed3643Cc9f86E2c21bd84171699', '0x916f7afBA53DB6A1f88e726Bc5E2278b10b9A33d'] -} -const USDC_TOKEN_CONTRACT = ADDRESSES.avax.USDC -const CALM_PORTFOLIO_CONTRACT = '0x2eAf73F8E6BCf606f56E5cf201756C1f0565C068' -const AMBITIOUS_PORTFOLIO_CONTRACT = '0x0294D02e9Fee4872e72697e9514aD0be671DB498' -const DCA_PORTFOLIO_CONTRACTS = { - 'avax': [ - "0xBbE9f28182163e767AA17072eDbeccD19DE12AE3", - "0xF96Df0DB82Ebec3F5e8043C26522608f09c68600", - "0x6e25e57B0Dc35eFe3688c2850568Ff59931d1182", - "0x53f14744F15365a0323B4FF0693E9190fFBE4B62", - "0xBAff4c732634b929033917E5dF30A52EFee554ff", - "0xf7df7AC55F06892f52Bfe62311434bC3B9647c89" - ], - 'arbitrum': [ - '0x4226e90a85df5C8F30b0b0C8D14388C1eCBb6E3B', - '0x9c09B8e7E3301D92706E046d8ED633D13A0804C8', - '0x5237efE4701b21e6A9001B58cf7fDa9D5bB6193b', - '0xEa110407c40fC89dcaEC5067fF34206f356d1EC6', - '0x8639444F8511a5e2d6F979bddb75BB4e88948942' - ] -} - -async function tvl(api) { - const indexTokens = INDEX_TOKEN_CONTRACT[api.chain] - const dcas = DCA_PORTFOLIO_CONTRACTS[api.chain] - const ownerTokens = [] - if (indexTokens) { - for (let i in indexTokens) { - let indexToken = indexTokens[i] - const tokens = await api.call({ abi: "address[]:allComponents", target: indexToken }) - ownerTokens.push([tokens, indexToken]) - } - } - if (dcas) { - const depositTokens = await api.multiCall({ abi: 'address:depositToken', calls: dcas }) - const eqTokenInfo = await api.multiCall({ abi: 'function equityValuation() view returns (tuple(uint256,uint256,address)[])', calls: dcas }) - eqTokenInfo.forEach((v, i) => { - const tokens = v.map(j => j[2]) - tokens.push(depositTokens[i]) - ownerTokens.push([tokens, dcas[i]]) - }) - } - if (api.chain == "avax") { - await addEquityValuationToBalances(CALM_PORTFOLIO_CONTRACT, api) - await addEquityValuationToBalances(AMBITIOUS_PORTFOLIO_CONTRACT, api) - } - return sumTokens2({ api, ownerTokens, }) -} - -async function addEquityValuationToBalances(address, api) { - var [usdc_balance] = await api.multiCall({ - target: address, - abi: "function getEquityValuation(bool startIndex_, bool endIndex_) view returns (uint256)", - calls: [{ params: [true, false] }], - permitFailure: true, - }) - if (!usdc_balance) - return - api.add(USDC_TOKEN_CONTRACT, usdc_balance) -} - - -module.exports = { - start: '2019-04-10', // 04/09/2019 @ 10:29pm (UTC) - doublecounted: true, - avax: { - tvl, - }, - arbitrum: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/brokoli/index.js b/projects/brokoli/index.js deleted file mode 100644 index e7900d38664..00000000000 --- a/projects/brokoli/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { staking } = require("../helper/staking"); - -/*** Ethereum Addresses ***/ -const farmContracts = [ - "0xd723e387D4B8a45d19C25a2e919F510C8B65eFe1", - "0x8C9e9635861b2C8A9C92D8319AfA2C2c6324b671" -] -const USDC_BRKL_UNIV2 = "0xEBd17511F46A877199Ff08f0eA4f119c9b4Aea50"; -const BRKL = "0x4674a4f24c5f63d53f22490fb3a08eaaad739ff8"; - -/*** BSC Addresses ***/ -const farmContracts_bsc = [ - "0x58351236275E6f378BB2211B9fd623fd6E5e9D17", - "0x9B937aB45Bab1e8CC4590eCF55dC5577caF89dE1" -]; -const BUSD_BRKL_CakeLP = "0x0e537bb44eb6064D12326fF2543d918e9b9a5482"; - -const farmStakingContract_bsc = "0x6A4fab0070f2402F00f12D54250E47BcE36c4F4e" -const BRKL_bsc = "0x66cafcf6c32315623c7ffd3f2ff690aa36ebed38"; - -module.exports = { - ethereum: { - tvl: (async) => ({}), - pool2: staking(farmContracts, [USDC_BRKL_UNIV2]), - }, - bsc: { - staking: staking(farmStakingContract_bsc, BRKL_bsc), - pool2: staking(farmContracts_bsc, [BUSD_BRKL_CakeLP]), - }, - methodology: "Counts liquidty on the staking and pool2 only", -}; diff --git a/projects/brownfi/index.js b/projects/brownfi/index.js deleted file mode 100644 index d4ba1a53015..00000000000 --- a/projects/brownfi/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'berachain': '0x43AB776770cC5c739adDf318Af712DD40918C42d', - 'base': '0x43AB776770cC5c739adDf318Af712DD40918C42d', - 'arbitrum': '0xD05395a6b6542020FBD38D31fe1377130b35592E', - 'hyperliquid': '0x3240853b71c89209ea8764CDDfA3b81766553E55', - 'bsc': '0x43AB776770cC5c739adDf318Af712DD40918C42d', - 'linea': '0x43AB776770cC5c739adDf318Af712DD40918C42d' -}) \ No newline at end of file diff --git a/projects/brrr/index.js b/projects/brrr/index.js deleted file mode 100644 index d76a6add8ee..00000000000 --- a/projects/brrr/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const NFT_CONTRACT = "0x58ebebd033dC43aa9ab41ff739C7052eB0A72cd7"; - -module.exports = { - blast: { - tvl: sumTokensExport({ owners: [NFT_CONTRACT], tokens: [ADDRESSES.null] }), - }, - methodology: "Sum contract token balance", -}; diff --git a/projects/brunch/index.js b/projects/brunch/index.js deleted file mode 100644 index 6e0dd2bafdb..00000000000 --- a/projects/brunch/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: - "TVL counts the collateral tokens that are deposited within the respective Brunch vault", -}; - -const config = { - sonic: { - vaultFactory: "0x486265E7BAedFF677aec98f7769Cf737657E009a", - }, -}; - -Object.keys(config).forEach((chain) => { - const { vaultFactory } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const vaults = await api.fetchList({ lengthAbi: 'allVaultsLength', itemAbi: 'allVaults', target: vaultFactory }) - const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: vaults }) - return sumTokens2({ tokensAndOwners2: [tokens, vaults], api }) - } - } -}) diff --git a/projects/bryanonbase/index.js b/projects/bryanonbase/index.js deleted file mode 100644 index a5b0e5e5258..00000000000 --- a/projects/bryanonbase/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') -const ADDRESSES = require('../helper/coreAssets.json') - -const stakingETHContract = "0x9acDDdbEBED00107B3eF2931607F131F392f6996"; - -const stakingBRYANContract = "0x32e5594F14de658b0d577D6560fA0d9C6F1aa724"; -const BRYAN = "0xB75445A717D5A8c268f37045162837CFe72Ac337"; - -const stakingPool2Contract = "0x5DFF152F94E0EADeD36201f1D5AC37382f3Cf51D"; -const BRYAN_WETH_SLP = "0xbCA1647EA6C7eB6916a5B33E21467ff78Bf5Ec55"; - -const stakeBryanEarnWeth = "0xC0c8BCAf6c1baE2d4A35f4D89A8EAc9A9E5D4Db0" -const stakeLpEarnWeth = "0xCf4543777342D93BEde085292E46D847BC59dc07" - -module.exports = { - misrepresentedTokens: true, - base: { - tvl: sumTokensExport({ owners: [stakingETHContract, stakeLpEarnWeth, stakeBryanEarnWeth], tokens: [ADDRESSES.base.WETH], }), - pool2: sumTokensExport({ owners: [stakingPool2Contract, stakeLpEarnWeth, ], tokens: [BRYAN_WETH_SLP], useDefaultCoreAssets: true, }), - staking: sumTokensExport({ owners: [stakingBRYANContract, stakeBryanEarnWeth], tokens: [BRYAN], lps: [BRYAN_WETH_SLP], useDefaultCoreAssets: true, }), - }, - methodology: - "Counts as TVL the ETH asset deposited through StakingETH Contract, and we count Staking and Pool2 parts in the same way", -}; diff --git a/projects/bscstation/abi.json b/projects/bscstation/abi.json deleted file mode 100644 index eaeb66eebc0..00000000000 --- a/projects/bscstation/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "stakedToken": "address:stakedToken" -} \ No newline at end of file diff --git a/projects/bscstation/index.js b/projects/bscstation/index.js deleted file mode 100644 index 50be5a1684e..00000000000 --- a/projects/bscstation/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const token = "0xbcb24AFb019BE7E93EA9C43B7E22Bb55D5B7f45D" -const stakingPools = [ - // START POOLS - "0x5a42e0B986Af9756d47C263e9b4A54e3958C19dc", - "0xC8eEeDa5b6F758208abA89bb3d614Ea135c4f29f", - "0x97c68E1DD1d344926fc2Ef409b0848BFea7C8e8B", - "0xb86AC944bEECaB78d7ab49cA71b27d25363E6251", - "0x9534C17Deb29C4999a2B476B8e5ff5De4F326df8", - "0x9Cec597abAD7f62726BDF02627C1d55B78795d61", - "0x2cdEc23D9a583fE428E798335F0E92B12527A3a4", - "0xCE13F6F3b27A15E5d3D641A84813Fc33D98257f2", - // IDO POOLS - "0x9d1933c1B85Ff8BCdE9FEbbC0562f7342D0b42D6", - "0xaeFA83C71D87551c99546DfB7dB5F713ddcd4E28", - "0x79d5529976252f2579a21c3cB046001f5fb99333" -]; - -const startPools = [ - "0xA4Cac7BD6F7cEa85a20943eB20B690dc807eD421", - "0x2f66931d8aa91058B1FCC4Fa38F408dF7dbC56ED", - "0x9321838064eE23a5e81d8B832eDA8a56435d0C67", - "0x7A0b27A6f5EBAC48727FE8458E6cA787323F22e2", - "0x9685ecB565a3305F9f0df5d26A319A7d5aB710Ad", - "0xfF3790BE5f065C82c688129a41aF84D3A61a37Fd", - "0x5F352530a5A93ADDfF95a7C4117c92ebc9198aa4", - "0x1cb255CFb0E6273c2554F1Ca1Cb3C3B37b2CE554", - "0xAB13600B0237C73eb30C931B93aDE5B1699321d6" -]; - -const poolTokens = [ - // FARMS - "0x1d80B4d9afC9472Fc379aDc0fFcEDF32483EDe49", - "0x3cFedE1dC2134a53383A435d197ED34dB741936c", - "0x7584A86e9525d9e45daCa7Dd72A9B6f2BF4889e5", - "0xE40Dd1BF7c0C57d9fe7E2D67E9D8F8e1a5EA291D", - "0x7b1f753753bd187D08107B312A3991Ee9599B674", - "0x2a4D0eb224769BCD1468769eAC372E9B5166F0B2", - "0xdeBbe71d94E4E2b2AAd016D9a3bF8018ACD3F5Ad", - "0x53F6d4eb57d9ab4BAa623bf1BEd641295DE1B606", - // IDO - "0x4CCc37AE6BAAf1Af67899cF8cf0c809Af31d7e7c", - "0xA4D8348d574FCe65A46b34Efce5952b6158c1787" -]; - -async function tvl(api) { - const owners = startPools.concat(poolTokens) - const tokens = await api.multiCall({ abi: "address:stakedToken", calls: owners}) - return sumTokens2({ tokensAndOwners2: [tokens, owners], api, resolveLP: true, }) -} - -module.exports = { - bsc: { - tvl, - staking: staking(stakingPools, token) - }, -} \ No newline at end of file diff --git a/projects/bscswap/index.js b/projects/bscswap/index.js deleted file mode 100644 index 3736c287f9b..00000000000 --- a/projects/bscswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') - -const BSWAPStakingContract = "0x7B2dAC429DF0b39390cD3D4E6a8b8bcCeB331E2D"; -const BSWAP = "0xacc234978a5eb941665fd051ca48765610d82584"; - -module.exports = { - misrepresentedTokens: true, - bsc: { - staking: staking(BSWAPStakingContract, BSWAP), - tvl: getUniTVL({ factory: '0xCe8fd65646F2a2a897755A1188C04aCe94D2B8D0', useDefaultCoreAssets: true }), - }, - methodology: - "Factory address on BSC (0xCe8fd65646F2a2a897755A1188C04aCe94D2B8D0) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", -}; diff --git a/projects/bsquared/index.js b/projects/bsquared/index.js deleted file mode 100644 index 8ce3f7c70f0..00000000000 --- a/projects/bsquared/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); -const { sumTokensExport } = require('../helper/sumTokens'); -const ADDRESSES = require('../helper/coreAssets.json') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const ADDRESSES_ETHEREUM_STONE = '0x7122985656e38BDC0302Db86685bb972b145bD3C'; - -module.exports = { - hallmarks: [ - [1710259680, "Cease pre-deposit"], - ], - methodology: "Staking tokens via BSquared Network Buzz counts as TVL", - bitcoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.bsquaredBTC }), - sumBRC20TokensExport({ owners: bitcoinAddressBook.bsquaredBRC20 }), - ]), - }, - ethereum: { - tvl: sumTokensExport({ - ownerTokens: [ - [[ADDRESSES_ETHEREUM_STONE, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WBTC], "0xeea3A032f381AB1E415e82Fe08ebeb20F513c42c",], //Ethereum Multisignature Address (WBTC) - ] - }), - }, - polygon: { - tvl: sumTokensExport({ - ownerTokens: [ - [[ADDRESSES.null], "0x01cE88498ED095d386e09834D32Fd8f1FeCd184a",], - ] - }), - }, - bsc: { - tvl: sumTokensExport({ - ownerTokens: [ - [[ADDRESSES.bsc.BTCB, ADDRESSES.ethereum.FDUSD], "0x0A80028d73Faaee6e57484E3335BeFda0de7f455",], //BNB Chain Multisig Address (BTCB) - ] - }), - }, -}; diff --git a/projects/bswap/index.js b/projects/bswap/index.js deleted file mode 100644 index c3d689b69ea..00000000000 --- a/projects/bswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - chainx: { - tvl: getUniTVL({ factory: '0x356FD03E73ce821d5F7dFea51d1cB336EeFd67b1', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/bsx-exchange/index.js b/projects/bsx-exchange/index.js deleted file mode 100644 index 5760ab20670..00000000000 --- a/projects/bsx-exchange/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") -const { nullAddress } = require("../helper/tokenMapping") -const { sumTokensExport } = require("../helper/unwrapLPs") - -const config = { - base: { - 'exchange': '0x26a54955a5fb9472d3edfeac9b8e4c0ab5779ed3', - 'degen': '0x797d6f745F691133cE90438e1Ba3eeEb16e4b5B5', - 'staking': '0xE5E10Bf64CD32218CdbF501914B7A0d181934930', - 'stakingToken': '0xd47f3e45b23b7594f5d5e1ccfde63237c60be49e', - } -} - -Object.keys(config).forEach(chain => { - const { exchange, degen, staking, stakingToken, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.call({ abi: 'address[]:getSupportedTokenList', target: exchange }) - tokens.push(nullAddress) - - const owners = [exchange, degen,] - return sumTokens2({ api, owners, tokens, }) - }, - } - if (stakingToken) - module.exports[chain].staking = sumTokensExport({ owner: staking, token: stakingToken, }) -}) diff --git a/projects/bt-finance.js b/projects/bt-finance.js deleted file mode 100644 index 5794f150634..00000000000 --- a/projects/bt-finance.js +++ /dev/null @@ -1,8 +0,0 @@ - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: () => ({}), - }, - deadFrom: '2022-01-01' -} diff --git a/projects/btcfi-cdp/index.js b/projects/btcfi-cdp/index.js deleted file mode 100644 index 74798ef459f..00000000000 --- a/projects/btcfi-cdp/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require('../helper/unwrapLPs') -const { sumTokens } = require("../helper/chain/bitcoin"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const chainPools = { - bfc: { - WBTC: { pool: '0xA84F9F42dF222da491571Fb70cCc11AC84B7F29D', token: ADDRESSES.bfc.WBTC }, - BTCB: { pool: '0xee66D8C40282439F2eE855D8a3666FB73257D349', token: ADDRESSES.bfc.BTCB }, - cbBTC: { pool: '0xED00a5201607aa26CDDcdcf1583845e7435a2F39', token: ADDRESSES.bfc.cbBTC } - }, - core: { - WBTC: { pool: '0x872b347cd764d46c127ffefbcaB605FFF3f3a48C', token: "0x7A6888c85eDBA8E38F6C7E0485212da602761C08" }, - BTCB: { pool: '0x872b347cd764d46c127ffefbcaB605FFF3f3a48C', token: "0x5832f53d147b3d6Cd4578B9CBD62425C7ea9d0Bd" } - } -} - -async function bitcoinTvl() { - return sumTokens({ owners: await bitcoinAddressBook.btcfi_cdp() }) -} - -Object.keys(chainPools).forEach(chain => { - const pools = chainPools[chain] - const tokensAndOwners = Object.values(pools).map(({ pool, token }) => ([token, pool,])) - module.exports[chain] = { - tvl: sumTokensExport({ tokensAndOwners }) - } -}) - -module.exports["bitcoin"] = { tvl: bitcoinTvl } \ No newline at end of file diff --git a/projects/btcfi/index.js b/projects/btcfi/index.js deleted file mode 100644 index 6891155d9bf..00000000000 --- a/projects/btcfi/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require('../helper/unwrapLPs') - -const chainPools = { - bfc: { - WBTC: { pool: '0xEa3b4a2dA5DbE8379AD4c60aaD5184df69D7C9AD', token: ADDRESSES.bfc.WBTC }, - BTCB: { pool: '0x0B31FeE8bF53bFe2f5F7083B73A4c9C8B517E32F', token: ADDRESSES.bfc.BTCB } - }, -} - -Object.keys(chainPools).forEach(chain => { - const pools = chainPools[chain] - module.exports[chain] = { - tvl: async (api) => { - return sumTokens2({ api, tokensAndOwners: Object.values(pools).map(({ pool, token }) => ([token, pool,])) }) - } - } -}) \ No newline at end of file diff --git a/projects/btcst/index.js b/projects/btcst/index.js deleted file mode 100644 index 492c6f1b23b..00000000000 --- a/projects/btcst/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require("../helper/staking"); - -const BTCST = "0x78650B139471520656b9E7aA7A5e9276814a38e9"; - -const vaultContracts = [ - // Live Vaults - "0x18a144B11feE170230177a481Ba5C2532c0279BD", - // Finezhed Vaults - "0xeA17a97705BB74b2c6270830943b7663890D7ceB", - // BTCST_BTC vault - "0x216944bAf1182e49252223E78B783fE7d5a02223", - // BTCST_BTCST Vault - "0xDC06E57f3987feDdA1567b49791e78B4712E8A28", - // stake sigmaBitcoin Vault - "0x68C59C11601BcC6bc515137aD8063382446cBA77", - // stake sigmaDogecoin Vault - "0xb94B8e65FD03a7C5cB5bC39C604563ab8F800d21", -]; - -const listOfTokens = [ - //BTCB - ADDRESSES.bsc.BTCB, - //sigmaBTC - "0x2cd1075682b0fccaadd0ca629e138e64015ba11c", - //sigmaDOGE - "0xe550a593d09fbc8dcd557b5c88cea6946a8b404a", - //DOGE - "0xba2ae424d960c26247dd6c32edc70b295c744c43", -]; - -module.exports = { - bsc: { - staking: stakings(vaultContracts, BTCST), - tvl: stakings(vaultContracts, listOfTokens), - }, - methodology: "Counts liquidty on all the Vaults through their Contracts", -}; diff --git a/projects/btn-group.js b/projects/btn-group.js deleted file mode 100644 index 666c44c1fc3..00000000000 --- a/projects/btn-group.js +++ /dev/null @@ -1,11 +0,0 @@ -const { get } = require('./helper/http') - -async function tvl(api) { - const result = await get('https://btn.group/pools/tvl') - return api.addUSDValue(result) -} - -module.exports = { - misrepresentedTokens: true, - secret: { tvl }, -} \ No newline at end of file diff --git a/projects/btnx/index.js b/projects/btnx/index.js deleted file mode 100644 index 61983cfcdb1..00000000000 --- a/projects/btnx/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens } = require('../helper/chain/bitcoin') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -async function tvl() { - return sumTokens({ owners: await bitcoinAddressBook.btnx() }) -} - -module.exports = { - timetravel: false, - bitcoin: { tvl } -} diff --git a/projects/btse/index.js b/projects/btse/index.js deleted file mode 100644 index 1b1c1a97017..00000000000 --- a/projects/btse/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { bitcoin: { owners: bitcoinAddressBook.btse } } -module.exports = cexExports(config) diff --git a/projects/bubbleswap-v2/index.js b/projects/bubbleswap-v2/index.js deleted file mode 100644 index e4636d27248..00000000000 --- a/projects/bubbleswap-v2/index.js +++ /dev/null @@ -1,13 +0,0 @@ - -module.exports = { - hedera: { - tvl: () => ({}), - }, - deadFrom: '2023-07-01', - timetravel: false, - methodology: "Data is retrieved from the api at https://api.bubbleswap.io/", - hallmarks: [ - [1683288000, "V2 Launch"], - ['2023-07-01', 'Project shutdown'], - ] -} \ No newline at end of file diff --git a/projects/bubbleswap/index.js b/projects/bubbleswap/index.js deleted file mode 100644 index 5a4099924b2..00000000000 --- a/projects/bubbleswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - deadFrom: 1683813600, - timetravel: false, - misrepresentedTokens: true, - hedera: { tvl: () => ({ })}, - methodology: "Data is retrieved from the api at https://api.bubbleswap.io", - hallmarks: [ - [1666569600, "Start V1 Rewards"], - [1683813600, "V1 Deprecation"], - ] -} \ No newline at end of file diff --git a/projects/bucket-farm/index.js b/projects/bucket-farm/index.js deleted file mode 100644 index 9d35085fc3e..00000000000 --- a/projects/bucket-farm/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); - -const POINT_CENTER_ID = '0xc60fb4131a47aa52ac27fe5b6f9613ffe27832c5f52d27755511039d53908217' - -async function tvl(api) { - const pointCenter = await sui.getObject(POINT_CENTER_ID) - const poolStates = pointCenter.fields.pool_states.fields.contents.map((state)=>{ - const value = state.fields.value.fields - return{ - assetType: "0x" + value.asset_type, - totalStake: value.total_stake - } - }) - - for(const poolState of poolStates){ - let assetType = poolState.assetType - if(assetType == "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI" || assetType == "0x41ff228bfd566f0c707173ee6413962a77e3929588d010250e4e76f0d1cc0ad4::ksui::KSUI" || assetType == "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI" || assetType == "0xfbdd50dd7bc7af482d308f8c5d8c66c23e3b59494ff92f2947b150f20b5f43fd::af_lp::AF_LP") { - assetType = ADDRESSES.sui.SUI - } - api.add(assetType, poolState.totalStake) - } -} - -module.exports = { - deadFrom: 1757419496, - sui: { - tvl - } -} \ No newline at end of file diff --git a/projects/bucket-protocol-v2/index.js b/projects/bucket-protocol-v2/index.js deleted file mode 100644 index b5c00cade42..00000000000 --- a/projects/bucket-protocol-v2/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const {getAllVaultIds, getAllPoolIds, mappingTokenAsset} = require("./utils") -const { getObject } = require("../helper/chain/sui"); - -async function tvl(api) { - const vaultIds = await getAllVaultIds() - // CDP - const cdpCollateralTypes = Object.keys(vaultIds) - for(const collateralType of cdpCollateralTypes){ - const id = vaultIds[collateralType] - const vaultFields = (await getObject(id)).fields - - api.add(mappingTokenAsset(collateralType), +vaultFields.total_coll_amount) - } - - // PSM - const poolIds = await getAllPoolIds() - const psmCoinTypes = Object.keys(poolIds) - for(const collateralType of psmCoinTypes){ - const poolId = poolIds[collateralType] - const poolFields = (await getObject(poolId)).fields - - api.add(mappingTokenAsset(collateralType), +poolFields.balance_amount) - } -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; diff --git a/projects/bucket-protocol-v2/utils.js b/projects/bucket-protocol-v2/utils.js deleted file mode 100644 index 78f457fffa7..00000000000 --- a/projects/bucket-protocol-v2/utils.js +++ /dev/null @@ -1,151 +0,0 @@ -const { queryEvents, getObjects } = require("../helper/chain/sui"); -const ADDRESSES = require("../helper/coreAssets.json"); - -function parseTypeTag(type){ - if (!type.includes('::')) return type; - - return parseStructTag(type); -} - -function splitGenericParameters( - str, - genericSeparators= ['<', '>'], -) { - const [left, right] = genericSeparators; - const tok = []; - let word = ''; - let nestedAngleBrackets = 0; - - for (let i = 0; i < str.length; i++) { - const char = str[i]; - if (char === left) { - nestedAngleBrackets++; - } - if (char === right) { - nestedAngleBrackets--; - } - if (nestedAngleBrackets === 0 && char === ',') { - tok.push(word.trim()); - word = ''; - continue; - } - word += char; - } - - tok.push(word.trim()); - - return tok; -} - -function normalizeSuiAddress(value, forceAdd0x = false){ - let address = value.toLowerCase(); - if (!forceAdd0x && address.startsWith('0x')) { - address = address.slice(2); - } - return `0x${address.padStart(32 * 2, '0')}`; -} - -function parseStructTag(type) { - const [address, module] = type.split('::'); - - const rest = type.slice(address.length + module.length + 4); - const name = rest.includes('<') ? rest.slice(0, rest.indexOf('<')) : rest; - const typeParams = rest.includes('<') - ? splitGenericParameters(rest.slice(rest.indexOf('<') + 1, rest.lastIndexOf('>'))).map( - (typeParam) => parseTypeTag(typeParam.trim()), - ) - : []; - - return { - address: normalizeSuiAddress(address), - module, - name, - typeParams, - }; -} - -function normalizeStructTag(type) { - const { address, module, name, typeParams } = - typeof type === 'string' ? parseStructTag(type) : type; - - const formattedTypeParams = - typeParams?.length > 0 - ? `<${typeParams - .map((typeParam) => - typeof typeParam === 'string' ? typeParam : normalizeStructTag(typeParam), - ) - .join(',')}>` - : ''; - - return `${address}::${module}::${name}${formattedTypeParams}`; -} - -async function getAllVaultIds() { - const newVaultEventType = - "0x9f835c21d21f8ce519fec17d679cd38243ef2643ad879e7048ba77374be4036e::events::VaultCreated"; - const res = await queryEvents({eventType: newVaultEventType}); - - const collTypes = res.map((d) => - normalizeStructTag(d.coll_type), - ); - const vaultIds = res.map((d) => d.vault_id); - const vaultRes = await getObjects(vaultIds); - return vaultRes.reduce((acc, vault, idx) => { - if (collTypes[idx]) { - acc[collTypes[idx]] = vault.fields.id.id - } - return acc - },{}); -} - -async function getAllPoolIds() { - const newPSMPoolEventType = - "0xc2ae6693383e4a81285136effc8190c7baaf0e75aafa36d1c69cd2170cfc3803::events::NewPsmPool"; - const res = await queryEvents({eventType: newPSMPoolEventType}); - - const collTypes = res.map((d) => - normalizeStructTag(d.coin_type), - ); - const poolIds = res.map((d) => d.pool_id); - const poolRes = await getObjects(poolIds); - return poolRes.reduce((acc, pool, idx) => { - if (collTypes[idx]) { - acc[collTypes[idx]] = pool.fields.id.id - } - return acc - },{}); -} - -function mappingTokenAsset(type){ - switch (type) { - case '0x2f2226a22ebeb7a0e63ea39551829b238589d981d1c6dd454f01fcc513035593::house::StakedHouseCoin<0x5de877a152233bdd59c7269e2b710376ca271671e9dd11076b1ff261b2fd113c::up_usd::UP_USD>': - return ADDRESSES.sui.USDC - case '0x2f2226a22ebeb7a0e63ea39551829b238589d981d1c6dd454f01fcc513035593::house::StakedHouseCoin<0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI>': - return ADDRESSES.sui.SUI - case '0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH': - return ADDRESSES.sui.ETH - case '0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP': - return ADDRESSES.sui.DEEP - case '0x622345b3f80ea5947567760eec7b9639d0582adcfd6ab9fccb85437aeda7c0d0::scallop_wal::SCALLOP_WAL': - return ADDRESSES.sui.WAL - case '0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT': - return ADDRESSES.sui.USDT - case '0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC': - return ADDRESSES.sui.USDC - case '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI': - return ADDRESSES.sui.SUI - case '0x876a4b7bce8aeaef60464c11f4026903e9afacab79b9b142686158aa86560b50::xbtc::XBTC': - return ADDRESSES.sui.BTC - case '0x7438e8caf5c345fbd3772517380bf0ca432f53892dee65ee0dda3eb127993cd9::bfbtc::BFBTC': - return ADDRESSES.sui.BTC - default: - return type - } -} - -module.exports = { - parseStructTag, - getAllVaultIds, - getAllPoolIds, - mappingTokenAsset -} diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js deleted file mode 100644 index 5cc681393d5..00000000000 --- a/projects/bucket-protocol/index.js +++ /dev/null @@ -1,428 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const sui = require("../helper/chain/sui"); -const { getObject } = require("../helper/chain/sui"); -const { addUniV3LikePosition } = require("../helper/unwrapLPs"); - -const SUI_HASUI_POOL_ID = "0x871d8a227114f375170f149f7e9d45be822dd003eba225e83c05ac80828596bc" -const SUI_HASUI_VAULT_ID = "0xde97452e63505df696440f86f0b805263d8659b77b8c316739106009d514c270" - -async function calculateGSUIunderlyingSui(gSuiAmount) { - const fields = (await getObject("0x811fe901ed2a5d75cd125912ad6110efdff8be00fe694601a94167e2bd545ac2")).fields - const pool = Number(fields.pool) - const pipe = Number(fields.pipe_debt.fields.value) - const supply = Number(fields.supply.fields.value) - const percentage = (pool + pipe) / supply - return percentage * Number(gSuiAmount) -} - -async function calculateGUPUSDunderlyingUSD(gUpusdAmount) { - const fields = (await getObject("0x13766a4d5c180f004f9bfd19e65f622fbb2b9498736131b948599054c0129f42")).fields - const pool = Number(fields.pool) - const pipe = Number(fields.pipe_debt.fields.value) - const supply = Number(fields.supply.fields.value) - const percentage = (pool + pipe) / supply - return percentage * Number(gUpusdAmount) -} - -async function calculatehaSuiSuiVaultShares(api, token0, token1, lpAmount) { - const suiHasuiPool = await getObject(SUI_HASUI_POOL_ID) - const vaultObject = await getObject(SUI_HASUI_VAULT_ID) - const lpSupply = vaultObject.fields.lp_token_treasury.fields.total_supply.fields.value; - const lpRatio = lpAmount / lpSupply - const clmmPosition = vaultObject.fields.positions[0].fields.clmm_postion.fields - const liquidity = clmmPosition.liquidity * lpRatio - // https://github.com/DefiLlama/DefiLlama-Adapters/pull/13512#issuecomment-2660797053 - const tick = Math.floor(Math.log((suiHasuiPool.fields.current_sqrt_price / 2 ** 64) ** 2) / Math.log(1.0001)) - - addUniV3LikePosition({ - api, token0, token1, liquidity, tick, - tickLower: clmmPosition.tick_lower_index.fields.bits, - tickUpper: clmmPosition.tick_upper_index.fields.bits, - }) -} - -const MAINNET_PROTOCOL_ID = - "0x9e3dab13212b27f5434416939db5dec6a319d15b89a84fd074d03ece6350d3df"; -// Token -const SUI = ADDRESSES.sui.SUI; -const BUCK = ADDRESSES.sui.BUCK; -const USDC = ADDRESSES.sui.USDC; -const USDT = ADDRESSES.sui.USDT; -const HASUI = "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI"; -const GSUI = "0x2f2226a22ebeb7a0e63ea39551829b238589d981d1c6dd454f01fcc513035593::house::StakedHouseCoin<0x2::sui::SUI>"; -const GUPUSD = "0x2f2226a22ebeb7a0e63ea39551829b238589d981d1c6dd454f01fcc513035593::house::StakedHouseCoin<0x5de877a152233bdd59c7269e2b710376ca271671e9dd11076b1ff261b2fd113c::up_usd::UP_USD>"; -const USDC_CIRCLE = ADDRESSES.sui.USDC_CIRCLE; -const FDUSD = "0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a::fdusd::FDUSD"; -const SCALLOP_swUSDC = "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC"; -const SCALLOP_sUSDC = "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC"; -const SCALLOP_sUSDT = "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT"; -const SCALLOP_sSUI = "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI"; -const SCALLOP_sSB_ETH = "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH"; -const SCALLOP_sSCA = "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA"; -const SCALLOP_sDEEP = "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP"; -const SCALLOP_sbUSDT = "0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT"; -const SCA_ADDRESS = "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA"; -const SUI_HASUI_CETUS_VAULT_LP_ADDRESS = '0x828b452d2aa239d48e4120c24f4a59f451b8cd8ac76706129f4ac3bd78ac8809::lp_token::LP_TOKEN'; -const xBTC_ADDRESS = "0x876a4b7bce8aeaef60464c11f4026903e9afacab79b9b142686158aa86560b50::xbtc::XBTC"; -const mUSD_ADDRESS = "0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD"; -const TBTC_ADDRESS = "0x77045f1b9f811a7a8fb9ebd085b5b0c55c5cb0d1520ff55f7037f89b5da9f5f1::TBTC::TBTC"; - -const AF_LP_IDs = [ - "0xe2569ee20149c2909f0f6527c210bc9d97047fe948d34737de5420fab2db7062", - "0x885e09419b395fcf5c8ee5e2b7c77e23b590e58ef3d61260b6b4eb44bbcc8c62", -]; - -const AF_POOL_IDs = [ - "0xdeacf7ab460385d4bcb567f183f916367f7d43666a2c72323013822eb3c57026", - "0xeec6b5fb1ddbbe2eb1bdcd185a75a8e67f52a5295704dd73f3e447394775402b", -]; - -const AFSUI_SUI_LP_ID = - "0x97aae7a80abb29c9feabbe7075028550230401ffe7fb745757d3c28a30437408"; -const AFSUI_SUI_LP_BUCKET_ID = - "0x1e88892e746708ec69784a56c6aba301a97e87e5b77aaef0eec16c3e472e8653"; - -const KRIYA_LP_IDS = [ - "0xcc39bcc2c438a79beb2656ff043714a60baf89ba37592bef2e14ee8bca0cf007", - "0xae1910e5bcb13a4f5b12688f0da939b9c9d3e8a9e8d0a2e02c818f6a94e598fd", -]; - -const KRIYA_POOL_IDs = [ - "0x3c334f9d1b969767007d26bc886786f9f197ffb14771f7903cd8772c46d08dea", - "0xbb4a712b3353176092cdfe3dd2d1251b725f9372e954248e5dd2eb2ab6a5f21a", -]; - -const CETUS_LP_ID = - "0xb9d46d57d933fabaf9c81f4fc6f54f9c1570d3ef49785c6b7200cad6fe302909"; - -const USDC_CIRCLE_PSM = - "0xd22388010d7bdb9f02f14805a279322a3fa3fbde42896b7fb3d1214af404c455"; - -const USDC_PSM = - "0x0c2e5fbfeb5caa4c2f7c8645ffe9eca7e3c783536efef859be03146b235f9e04"; - -const USDT_PSM = - "0x607e7d386e29066b964934e0eb1daa084538a79b5707c34f38e190d64e24923e"; - -const FDUSD_PSM = "0xb23092f74b7bbea45056d8564a7325be993cc2926b89f384367b9ad309dd92c5"; - -const BUCKETUS_PSM = - "0xba86a0f37377844f38060a9f62b5c5cd3f8ba13901fa6c4ee5777c1cc535306b"; - -const BLUEFIN_STABLE_LP_PSM = - "0x27c3ec824df70520cb3cf9592049506167e8094a779a680b83b987519e3895b6"; - -const CETABLE_PSM = - "0x6e94fe6910747a30e52addf446f2d7e844f69bf39eced6bed03441e01fa66acd"; - -const STAPEARL_PSM = - "0xccdaf635eb1c419dc5ab813cc64c728a9f5a851202769e254f348bff51f9a6dc"; - -const afSUI_sLP_ID = - "0x508da82c0b6785653f638b95ebf7c89d720ecffae15c4d0526228a2edae7d429"; - -const vSUI_sLP_ID = - "0xa68124b518290f430f2133bcb679c519e51c99045e622cd6bcb00374c97f6d9d"; - -const haSUI_sLP_ID = - "0xa8993bf1c1e717b7c0f164c51346fa99a4e771c50d90c14e755adc48e39b7768"; - -const navi_sLP_ID = - "0xcbe804c8c334dcadecd4ba05ee10cffa54dad36f279ab4ec9661d67f9372881c"; - -const navi_stSUI_sLP_ID = - "0xd3f6b8f3c92d8f967f7e177e836770421e351b419ffe074ce57911365b4ede56"; - -const navi_sbWBTC_LP_ID = - "0x208628e8800828b272dfc4cf40ef98e1ba137f65d26a28961176a1718c2bdb4c"; - -const scallop_sUSDC_LP_ID = - "0x7b16192d63e6fa111b0dac03f99c5ff965205455089f846804c10b10be55983c"; - -const scallop_sUSDT_LP_ID = - "0x6b68b42cbb4efccd9df30466c21fff3c090279992c005c45154bd1a0d87ac725"; - -const scallop_sCircleUSDC_LP_ID = - "0xdf91ef19f6038e662e9c89f111ffe19e808cdfb891d080208d15141932f9513b"; - -const scallop_sSuiBridgeUSDT_LP_ID = - "0x8471787fc69ef06f4762cb60863e1c48475d79c804a000e613306adee7b7824a"; - -const navi_sCircleUSDC_LP_ID = - "0xb5ed3f2e5c19f425baad3d9a0afffdc84d0550ace2372692cf93325da81e4392"; - -const navi_sSuiBridgeUSDT_LP_ID = - "0x4ae310b93c65e358b6f8beb73f34d0ac7d507947d8aea404159d19883a3b1c6a"; - -const navi_fdUSD_LP_ID = - "0xa2790bbd90275e35214bffd8da3c01742bb5883fde861bf566a9ecfa1b3f5090"; - -const haSUI_Navi_Pond_ID = "0xef1ff1334c1757d8e841035090d34b17b7aa3d491a3cb611319209169617518e" - -const SUI_Navi_Pond_ID = "0xcf887d7201c259496a191348da86b4772a2e2ae3f798ca50d1247194e30b7656"; - -async function getStakingLPAmount(id) { - const stakingLPObject = await sui.getObject(id); - return stakingLPObject.fields.output_volume; -} - -async function getScallopsLPAmount(id) { - const stakingLPObject = await sui.getObject(id); - return stakingLPObject.fields.coin_balance; -} - -async function getNaviLPAmount(id) { - const stakingLPObject = await sui.getObject(id); - return stakingLPObject.fields.coin_balance; -} - -function convertUnderlyingAssets(coin) { - // USDC - if (coin === SCALLOP_swUSDC) return ADDRESSES.sui.USDC - if (coin === SCALLOP_sUSDC) return ADDRESSES.sui.USDC_CIRCLE - // USDT - if (coin === SCALLOP_sUSDT) return ADDRESSES.sui.USDT - // sSUI - if (coin === SCALLOP_sSUI) return ADDRESSES.sui.SUI - // sbETH - if (coin === SCALLOP_sSB_ETH) return ADDRESSES.sui.ETH - // sSCAUSDT_PSM - if (coin === SCALLOP_sSCA) return SCA_ADDRESS - // sDeep - if (coin === SCALLOP_sDEEP) return ADDRESSES.sui.DEEP - // sSBUSDT - if(coin === SCALLOP_sbUSDT) return ADDRESSES.sui.suiUSDT - // xBTC - if(coin === xBTC_ADDRESS) return ADDRESSES.sui.xBTC - // mUSD - if(coin === mUSD_ADDRESS) return ADDRESSES.sui.mUSD - // tBTC - if(coin === TBTC_ADDRESS) return ADDRESSES.sui.TBTC - return coin -} - -async function tvl(api) { - const protocolFields = await sui.getDynamicFieldObjects({ - parent: MAINNET_PROTOCOL_ID, - }); - - const aflpObjs = await sui.getObjects(AF_LP_IDs); - const aflStakedList = aflpObjs.map((aflp) => aflp.fields.staked); - const buckAfPoolData = await sui.getObjects(AF_POOL_IDs); - - const kriyalpObjs = await sui.getObjects(KRIYA_LP_IDS); - const kriyaStakedList = kriyalpObjs.map( - (kriyalp) => kriyalp.fields.staked.fields.lsp.fields.balance - ); - const kriyalpPoolData = await sui.getObjects(KRIYA_POOL_IDs); - - - const [afsuiSuiLpObj, afsuiSuiLpBucket, cetusLpObj, usdcCirclePSMObj, fdusdPSMObj, usdcPSMObj, usdtPSMObj, bucketusPSMObj, cetablePSMObj, stapearlPSMObj, bluefinStableLpObj] = await sui.getObjects([ - AFSUI_SUI_LP_ID, AFSUI_SUI_LP_BUCKET_ID, CETUS_LP_ID, USDC_CIRCLE_PSM, FDUSD_PSM, USDC_PSM, USDT_PSM, BUCKETUS_PSM, CETABLE_PSM, STAPEARL_PSM, BLUEFIN_STABLE_LP_PSM, - ]) - - const afsuiSuiTokenNames = afsuiSuiLpObj.fields.type_names; - const afsuiSuiLpBucketStaked = afsuiSuiLpBucket.fields.collateral_vault; - const stakedBucketus = cetusLpObj.fields.staked; - const usdcCirclePSMAmount = usdcCirclePSMObj.fields.pool; - const fdusdPSMAmount = fdusdPSMObj.fields.pool; - const usdcPSMAmount = usdcPSMObj.fields.pool; - const usdtPSMAmount = usdtPSMObj.fields.pool; - const bucketusPSMAmount = bucketusPSMObj.fields.pool; - const bluefinStableLpPSMAmount = bluefinStableLpObj.fields.pool; - const cetablePSMAmount = cetablePSMObj.fields.pool; - const stapearlPSMAmount = stapearlPSMObj.fields.pool; - - const bucketList = protocolFields.filter((item) => - item.type.includes("Bucket") - ); - - // const tankList = protocolFields.filter((item) => item.type.includes("Tank")); - - for (const bucket of bucketList) { - //AF_LP doesn't have price, need to split the tokens - if (bucket.type.includes("AF_LP")) continue; - const coin_address = bucket.type.slice(bucket.type.indexOf("<") + 1, bucket.type.lastIndexOf(">")) - - /// Since we're unable to fetch the price of Scallop's sCOIN, we'll regard sCOIN as underlying assets - const coin = convertUnderlyingAssets(coin_address) - - if(coin == SUI_HASUI_CETUS_VAULT_LP_ADDRESS) { - await calculatehaSuiSuiVaultShares(api, HASUI, SUI, bucket.fields.collateral_vault) - } else if(coin == GSUI) { - const suiAmount = await calculateGSUIunderlyingSui(bucket.fields.collateral_vault) - api.add(SUI, suiAmount); - }else if(coin == GUPUSD) { - const usdAmount = await calculateGUPUSDunderlyingUSD(bucket.fields.collateral_vault) - api.add(USDC, usdAmount); - } else { - if (coin) api.add(coin, bucket.fields.collateral_vault); - } - } - - for (const [ - index, - { - fields: { - type_names: tokens, - normalized_balances: bals, - lp_supply, - decimal_scalars, - }, - }, - ] of buckAfPoolData.entries()) { - bals.forEach((v, i) => { - const value = Math.floor( - (v * aflStakedList[index]) / lp_supply.fields.value / decimal_scalars[i] - ); - - const token = "0x" + tokens[i]; - if (token !== BUCK) api.add(token, value); - }); - } - - for (const [ - index, - { - type, - fields: { lsp_supply, token_x, token_y }, - }, - ] of kriyalpPoolData.entries()) { - const tokens = type.split("<").pop()?.replace(">", "")?.split(",") ?? []; - const x = tokens[0].trim(); - const y = tokens[1].trim(); - - const xVal = Math.floor( - (token_x * kriyaStakedList[index]) / lsp_supply.fields.value - ); - const yVal = Math.floor( - (token_y * kriyaStakedList[index]) / lsp_supply.fields.value - ); - - if (x !== BUCK) api.add(x, xVal); - if (y !== BUCK) api.add(y, yVal); - } - - // Cetus USDC-BUCK LP - // 1 Bucketus = 0.5 BUCK + 0.5 USDC - // Didn't add BUCK to avoid double counting - const halfStakedBucketus = Math.floor(stakedBucketus / 2); - api.add(USDC, Math.floor(halfStakedBucketus / 1000)); - - api.add(USDC_CIRCLE, Math.floor(usdcCirclePSMAmount)); - api.add(USDC, Math.floor(usdcPSMAmount)); - api.add(USDT, Math.floor(usdtPSMAmount)); - api.add(FDUSD, Math.floor(fdusdPSMAmount)); - - // 1 Cetable = 0.5 USDC + 0.5 USDT - const halfCetableAmount = Math.floor(cetablePSMAmount / 2); - api.add(USDC, Math.floor(halfCetableAmount)); - api.add(USDT, Math.floor(halfCetableAmount)); - - // 1 STAPEARL = 0.5 USDC + 0.5 USDT - const halfStapearlAmount = Math.floor(stapearlPSMAmount / 2); - api.add(USDC, Math.floor(halfStapearlAmount)); - api.add(USDT, Math.floor(halfStapearlAmount)); - - // 1 BUCKETUS = 0.5 USDC + 0.5 BUCK - const halfBucketusAmount = Math.floor(bucketusPSMAmount / 2); - api.add(USDC, Math.floor(halfBucketusAmount / 1000)); - - // 1 BLUEFIN_STABLE_LP = 0.5 USDC + 0.5 BUCK - const halfBluefinStableLPAmount = Math.floor(bluefinStableLpPSMAmount / 2); - api.add(USDC, Math.floor(halfBluefinStableLPAmount / 1000)); - - //AFSUI-SUI LP - const afsuiSuiLpSupply = afsuiSuiLpObj.fields.lp_supply.fields.value; - const afsuiSuiLpBalances = afsuiSuiLpObj.fields.normalized_balances; - const suiTotalAmount = Math.floor(afsuiSuiLpBalances[0] / 10 ** 18); - const afsuiTotalAmount = Math.floor(afsuiSuiLpBalances[1] / 10 ** 18); - - const suiPercentage = Math.floor(suiTotalAmount / afsuiSuiLpSupply); - const afsuiPercentage = Math.floor(afsuiTotalAmount / afsuiSuiLpSupply); - - api.add( - `0x${afsuiSuiTokenNames[0]}`, - Math.floor(suiPercentage * afsuiSuiLpBucketStaked) - ); - api.add( - `0x${afsuiSuiTokenNames[1]}`, - Math.floor(afsuiPercentage * afsuiSuiLpBucketStaked) - ); - - //Staking LPs - const safSUILPAmount = await getStakingLPAmount(afSUI_sLP_ID); - api.add( - "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI", - safSUILPAmount - ); - - const svSUILPAmount = await getStakingLPAmount(vSUI_sLP_ID); - api.add( - "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT", - svSUILPAmount - ); - - const shaSUILPAmount = await getStakingLPAmount(haSUI_sLP_ID); - api.add( - "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI", - shaSUILPAmount - ); - - const snaviLPAmount = await getStakingLPAmount(navi_sLP_ID); - api.add( - "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT", - snaviLPAmount - ); - - const snavistSUILPAmount = await getStakingLPAmount(navi_stSUI_sLP_ID); - api.add( - "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - snavistSUILPAmount - ); - - const snavisbWBTCLPAmount = await getStakingLPAmount(navi_sbWBTC_LP_ID); - api.add(ADDRESSES.sui.WBTC, snavisbWBTCLPAmount); - - const haSuiNaviPondAmount = await getStakingLPAmount(haSUI_Navi_Pond_ID); - api.add( - "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI", - haSuiNaviPondAmount - ); - - const suiNaviPondAmount = await getStakingLPAmount(SUI_Navi_Pond_ID); - api.add( - SUI, - suiNaviPondAmount - ); - - const scallopUSDC_LPAmount = await getScallopsLPAmount(scallop_sUSDC_LP_ID); - api.add(USDC, scallopUSDC_LPAmount); - - const scallopUSDT_LPAmount = await getScallopsLPAmount(scallop_sUSDT_LP_ID); - api.add(USDT, scallopUSDT_LPAmount); - - const scallopCircleUSDC_LPAmount = await getScallopsLPAmount(scallop_sCircleUSDC_LP_ID); - api.add(USDC_CIRCLE, scallopCircleUSDC_LPAmount); - - const scallopSuiBridgeUSDT_LPAmount = await getScallopsLPAmount(scallop_sSuiBridgeUSDT_LP_ID); - api.add(ADDRESSES.sui.suiUSDT, scallopSuiBridgeUSDT_LPAmount); - - const naviCircleUSDC_LPAmount = await getNaviLPAmount(navi_sCircleUSDC_LP_ID); - api.add(USDC_CIRCLE, naviCircleUSDC_LPAmount); - - const naviSuiBridgeUSDT_LPAmount = await getNaviLPAmount(navi_sSuiBridgeUSDT_LP_ID); - api.add(ADDRESSES.sui.suiUSDT, naviSuiBridgeUSDT_LPAmount); - - const naviFDUSD_LPAmount = await getNaviLPAmount(navi_fdUSD_LP_ID); - api.add(FDUSD, naviFDUSD_LPAmount); - - api.removeTokenBalance('0x622345b3f80ea5947567760eec7b9639d0582adcfd6ab9fccb85437aeda7c0d0::scallop_wal::SCALLOP_WAL') // incorrect price, temporarily remove -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; diff --git a/projects/bucket-sparkling/index.js b/projects/bucket-sparkling/index.js deleted file mode 100644 index 67bd7be456f..00000000000 --- a/projects/bucket-sparkling/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const sui = require("../helper/chain/sui"); - -const SPARKLING_SBUCK_FLASK_ID = - "0xc6ecc9731e15d182bc0a46ebe1754a779a4bfb165c201102ad51a36838a1a7b8"; - -async function tvl(api) { - const object = await sui.getObject(SPARKLING_SBUCK_FLASK_ID); - const reserve = object.fields.reserves; - api.add(ADDRESSES.sui.BUCK, reserve); -} - -module.exports = { - timetravel: false, - sui: { - tvl: tvl, - }, -}; diff --git a/projects/buffaloswap/index.js b/projects/buffaloswap/index.js deleted file mode 100644 index 8ac907872b3..00000000000 --- a/projects/buffaloswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const masterchef = "0x67D26cF7e6CB68feE0Cf546Ac489691d961c97da" -const buff = "0x10a49f1fc8c604ea7f1c49bcc6ab2a8e58e77ea5"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", buff) -} \ No newline at end of file diff --git a/projects/buffer/index.js b/projects/buffer/index.js deleted file mode 100644 index 06c2b5190cd..00000000000 --- a/projects/buffer/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const tokens = { - BFR: "0x1A5B0aaF478bf1FDA7b934c76E7692D722982a6D", - USDC_ARB: ADDRESSES.arbitrum.USDC, - USDC_CIRCLE: ADDRESSES.arbitrum.USDC_CIRCLE, - USDC_POLY: ADDRESSES.polygon.USDC, - ARB: ADDRESSES.arbitrum.ARB, -}; - -const contracts = { - USDC_POOL_V1: "0x37Cdbe3063002383B2018240bdAFE05127d36c3C", - USDC_POOL_V2: "0x4d338bc1a2380752736718f49bd45d9a040fdff8", - USDC_POOL_V3: "0x6Ec7B10bF7331794adAaf235cb47a2A292cD9c7e", - USDC_POOL_V4: "0xfD9f8841C471Fcc55f5c09B8ad868BdC9eDeBDE1", - POLY_POOL_V1: "0x6FD5B386d8bed29b3b62C0856250cdD849b3564d", - ARB_POOL_V1: "0xaE0628C88EC6C418B3F5C005f804E905f8123833", - USDC_POOL_V5: "0x9501a00d7d4BC7558196B2e4d61c0ec5D16dEfb2", - BFR_STAKING: "0x173817F33f1C09bCb0df436c2f327B9504d6e067", -}; - -module.exports = { - arbitrum: { - staking: staking(contracts.BFR_STAKING, tokens.BFR), - tvl: sumTokensExport({ - tokens: [tokens.USDC_ARB, tokens.ARB, tokens.USDC_CIRCLE], - owners: [ - contracts.USDC_POOL_V1, - contracts.USDC_POOL_V2, - contracts.USDC_POOL_V3, - contracts.ARB_POOL_V1, - contracts.USDC_POOL_V4, - contracts.USDC_POOL_V5, - ], - }), - }, - polygon: { - tvl: sumTokensExport({ - tokens: [tokens.USDC_POLY], - owners: [contracts.POLY_POOL_V1], - }), - }, - hallmarks: [ - ["2022-10-26", "Shifted to USDC POL pool"], - [ - "2023-01-30", - "Opened USDC BLP pool to the public", - ], - ["2023-02-22", "Added a USDC Pool on polygon"], - ["2023-03-22", "Added ARB Pool"], - [ - "2023-04-14", - "Added USDC Protocol owned liquidity Pool", - ], - ["2023-09-01", "Debuted Version 2.5"], - ["2024-01-03", "Launched above/below options"], - ["2024-05-30", "Debuted Version 2.6"], - - ], -}; diff --git a/projects/bulbaswap-v2/index.js b/projects/bulbaswap-v2/index.js deleted file mode 100644 index c65110517bd..00000000000 --- a/projects/bulbaswap-v2/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'morph': '0x8D2A8b8F7d200d75Bf5F9E84e01F9272f90EFB8b' -}, { - blacklistedTokens: [ - '0x2840F9d9f96321435Ab0f977E7FDBf32EA8b304f', - '0xff12470a969Dd362EB6595FFB44C82c959Fe9ACc', - ], -}) \ No newline at end of file diff --git a/projects/bulbaswap-v3/index.js b/projects/bulbaswap-v3/index.js deleted file mode 100644 index ce84a29649f..00000000000 --- a/projects/bulbaswap-v3/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ morph: { factory: '0xFf8578C2949148A6F19b7958aE86CAAb2779CDDD', fromBlock: 25159, blacklistedTokens: [ - '0x6A9A65B84843F5fD4aC9a0471C4fc11AFfFBce4a', - '0xe3C0FF176eF92FC225096C6d1788cCB818808b35', - '0x950e7FB62398C3CcaBaBc0e3e0de3137fb0daCd2', -] } }) \ No newline at end of file diff --git a/projects/bullaexchange/index.js b/projects/bullaexchange/index.js deleted file mode 100644 index 905ce94b38a..00000000000 --- a/projects/bullaexchange/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - berachain: { - factory: '0x79164EA9C1AA75d19DDFc71eBEAEA8092D1e71CE', - fromBlock: 782756, - isAlgebra: true, - }, -}) diff --git a/projects/bullionFX/index.js b/projects/bullionFX/index.js deleted file mode 100644 index 4cabfa54185..00000000000 --- a/projects/bullionFX/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('ethereum', '0x5E7CfE3DB397d3DF3F516d79a072F4C2ae5f39bb') \ No newline at end of file diff --git a/projects/bumper/index.js b/projects/bumper/index.js deleted file mode 100644 index fafad5168a1..00000000000 --- a/projects/bumper/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -const contract = "0xBabeE6d5F6EDD301B5Fae591a0D61AB702b359d0" -const oldTvl = sumTokensExport({ owner: contract, tokens: [ADDRESSES.ethereum.USDC, '0x5f18c75abdae578b483e5f43f12a39cf75b973a9'] }) - -const vaultTvl = sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.ethereum.WETH, '0x277b016D7Df1D8fC96F2Dcc6CE7a3789BaC7a25a'], - [ADDRESSES.ethereum.USDC, '0x235A4998bD0ABa7CBDDc2E770ff79b3B49493fd5'], - ] -}) - -module.exports = { - methodology: `Count the USDC that has been deposited on ${contract}`, - ethereum: { - tvl: sdk.util.sumChainTvls([oldTvl, vaultTvl]), - pool2: sumTokensExport({ owner: '0xD3122B06aD755f9b8F6fBA6dFb9c684c7A373e1c', tokens: ['0x11FA2Aac28F4E84b2e5B9907580Dbf44A1975912'], resolveLP: true, }), - staking: sumTokensExport({ owner: '0x967583939a2E660567345CFEe6BE66870075B3d1', tokens: ['0x785c34312dfA6B74F6f1829f79ADe39042222168'], }), - }, - hallmarks: [ - [1626264000, "LP Program Starts"], - [1634212800, "LP Program Ended"], - [1639656000, "Uniswap V3 Listing and Staking v1 Program starts"], - [1658318400, "Alpha Testing"], - [1677672000, "Uniswap V2 Listing and Liquidity Mining Program"], - ] -} diff --git a/projects/bumpin/bumpin_trade.json b/projects/bumpin/bumpin_trade.json deleted file mode 100644 index 961510cfb93..00000000000 --- a/projects/bumpin/bumpin_trade.json +++ /dev/null @@ -1,490 +0,0 @@ -{ - "address": "bumpinX5wdLt59DBR3eetmV6xB2W3rNGxMoTSc58ah2", - "metadata": { - "name": "bumpin_trade", - "version": "0.1.0", - "spec": "0.1.0", - "description": "Created with Anchor" - }, - "instructions": [], - "accounts": [ - { - "name": "Pool", - "discriminator": [ - 241, - 154, - 109, - 4, - 17, - 177, - 109, - 188 - ] - }, - { - "name": "TokenVault", - "discriminator": [ - 121, - 7, - 84, - 254, - 151, - 228, - 43, - 144 - ] - }, - { - "name": "TradeToken", - "discriminator": [ - 228, - 70, - 239, - 205, - 241, - 218, - 48, - 76 - ] - } - ], - "events": [], - "errors": [], - "types": [ - { - "name": "TokenVault", - "serialization": "bytemuckunsafe", - "repr": { - "kind": "c" - }, - "type": { - "kind": "struct", - "fields": [ - { - "name": "vault_index", - "type": "u16" - }, - { - "name": "_padding", - "type": { - "array": [ - "u8", - 14 - ] - } - }, - { - "name": "mint_key", - "type": "pubkey" - }, - { - "name": "vault_key", - "type": "pubkey" - }, - { - "name": "total", - "type": "u128" - }, - { - "name": "total_borrowed", - "type": "u128" - }, - { - "name": "total_fee", - "type": "u128" - } - ] - } - }, - { - "name": "TradeToken", - "serialization": "bytemuckunsafe", - "repr": { - "kind": "c" - }, - "type": { - "kind": "struct", - "fields": [ - { - "name": "mint_key", - "type": "pubkey" - }, - { - "name": "total_liability", - "type": "u128" - }, - { - "name": "total_amount", - "type": "u128" - }, - { - "name": "feed_id", - "type": "pubkey" - }, - { - "name": "vault_key", - "type": "pubkey" - }, - { - "name": "name", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "discount", - "type": "u32" - }, - { - "name": "liquidation_factor", - "type": "u32" - }, - { - "name": "index", - "type": "u16" - }, - { - "name": "decimals", - "type": "u16" - }, - { - "name": "oracle_source", - "type": { - "defined": { - "name": "OracleSource" - } - } - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 3 - ] - } - }, - { - "name": "reserve_padding", - "type": { - "array": [ - "u8", - 32 - ] - } - } - ] - } - }, - { - "name": "Pool", - "serialization": "bytemuckunsafe", - "repr": { - "kind": "c" - }, - "type": { - "kind": "struct", - "fields": [ - { - "name": "key", - "type": "pubkey" - }, - { - "name": "name", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "pnl", - "type": "i128" - }, - { - "name": "apr", - "type": "u128" - }, - { - "name": "insurance_fund_amount", - "type": "u128" - }, - { - "name": "insurance_unsettle_fund_amount", - "type": "u128" - }, - { - "name": "balance", - "type": { - "defined": { - "name": "PoolBalance" - } - } - }, - { - "name": "borrowing_fee", - "type": { - "defined": { - "name": "BorrowingFee" - } - } - }, - { - "name": "fee_reward", - "type": { - "defined": { - "name": "FeeReward" - } - } - }, - { - "name": "referrer_fee_reward", - "type": { - "defined": { - "name": "FeeReward" - } - } - }, - { - "name": "config", - "type": { - "defined": { - "name": "PoolConfig" - } - } - }, - { - "name": "pool_vault_key", - "type": "pubkey" - }, - { - "name": "mint_key", - "type": "pubkey" - }, - { - "name": "launcher_mint", - "type": "pubkey" - }, - { - "name": "index", - "type": "u16" - }, - { - "name": "status", - "type": { - "defined": { - "name": "PoolStatus" - } - } - }, - { - "name": "stable", - "type": "bool" - }, - { - "name": "market_number", - "type": "u16" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 8 - ] - } - }, - { - "name": "reserve_padding", - "type": { - "array": [ - "u8", - 32 - ] - } - } - ] - } - }, - { - "name": "PoolBalance", - "repr": { - "kind": "c" - }, - "type": { - "kind": "struct", - "fields": [ - { - "name": "settle_funding_fee", - "type": "i128" - }, - { - "name": "amount", - "type": "u128" - }, - { - "name": "hold_amount", - "type": "u128" - }, - { - "name": "un_settle_amount", - "type": "u128" - }, - { - "name": "loss_amount", - "type": "u128" - } - ] - } - }, - { - "name": "PoolConfig", - "repr": { - "kind": "c" - }, - "type": { - "kind": "struct", - "fields": [ - { - "name": "minimum_stake_amount", - "type": "u128" - }, - { - "name": "minimum_un_stake_amount", - "type": "u128" - }, - { - "name": "pool_liquidity_limit", - "type": "u128" - }, - { - "name": "borrowing_interest_rate", - "type": "u128" - }, - { - "name": "stake_fee_rate", - "type": "u32" - }, - { - "name": "un_stake_fee_rate", - "type": "u32" - }, - { - "name": "un_settle_mint_ratio_limit", - "type": "u32" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 4 - ] - } - } - ] - } - }, - { - "name": "PoolStatus", - "type": { - "kind": "enum", - "variants": [ - { - "name": "NORMAL" - }, - { - "name": "StakePaused" - }, - { - "name": "UnStakePaused" - } - ] - } - }, - { - "name": "BorrowingFee", - "repr": { - "kind": "c" - }, - "type": { - "kind": "struct", - "fields": [ - { - "name": "total_borrowing_fee", - "type": "u128" - }, - { - "name": "total_realized_borrowing_fee", - "type": "u128" - }, - { - "name": "cumulative_borrowing_fee_per_token", - "type": "u128" - }, - { - "name": "updated_at", - "type": "i64" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 8 - ] - } - } - ] - } - }, - { - "name": "FeeReward", - "repr": { - "kind": "c" - }, - "type": { - "kind": "struct", - "fields": [ - { - "name": "fee_amount", - "docs": [ - "Fees generated from staking, redeeming, and position operations (such as increasing or decreasing positions).", - "Used in isolated margin mode (since fees are actually transferred each time they are generated).", - "See: [`fee_processor::collect_long_open_position_fee`]" - ], - "type": "u128" - }, - { - "name": "un_settle_fee_amount", - "docs": [ - "Accounting for fees generated from cross-margin position operations." - ], - "type": "u128" - } - ] - } - }, - { - "name": "OracleSource", - "type": { - "kind": "enum", - "variants": [ - { - "name": "ShadowStorm" - }, - { - "name": "Pyth" - }, - { - "name": "LST" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/bumpin/index.js b/projects/bumpin/index.js deleted file mode 100644 index d660609d5d7..00000000000 --- a/projects/bumpin/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const {getProvider, sumTokens2,} = require('../helper/solana') -const {Program} = require("@coral-xyz/anchor"); -const {PublicKey} = require('@solana/web3.js'); -const idl = require('./bumpin_trade.json'); - -async function tvl(api) { - const provider = getProvider() - const program = new Program(idl, provider) - - const poolData = await program.account.pool.all() - const tokenData = await program.account.tradeToken.all() - - const tokenVault = program.account.tokenVault ? await program.account.tokenVault.all() : []; - const tokenAccounts = [] - const blacklistedTokens = [] - - poolData.forEach(({account: i}) => { - blacklistedTokens.push(i.launcherMint.toString()) - tokenAccounts.push(i.poolVaultKey.toString()) - }); - tokenData.forEach(({account: i}) => { - tokenAccounts.push(i.vaultKey.toString()) - }); - tokenVault.forEach(({account: i}) => { - tokenAccounts.push(i.vaultKey.toString()) - }); - - const uniqueTokenAccounts = [...new Set(tokenAccounts)]; - if (tokenVault && tokenVault.length > 0) { - tokenVault.forEach((data) => { - const mint = data.account.mintKey.toString() - api.add(mint, data.account.totalBorrowed) - }) - } - - return sumTokens2({ - tokenAccounts: uniqueTokenAccounts.filter(i => i !== '11111111111111111111111111111111'), - blacklistedTokens, - allowError: true, - api - }) -} - -module.exports = { - timetravel: false, - solana: {tvl,}, -} \ No newline at end of file diff --git a/projects/bundles/index.js b/projects/bundles/index.js deleted file mode 100644 index abe311c8fc7..00000000000 --- a/projects/bundles/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require("../helper/cache/getLogs"); -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') - -const config = { - ethereum: { - swapFactory: "0xAcff9eee0a5522000E7141b77107359A6462E8d2", - indexFactory: "0x661F8b1Ef3d24E99C461E0523Fd441Ed8d49bF19", - }, - tokens: [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.AAVE, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.LINK, - ] -}; - -module.exports = { - misrepresentedTokens: true, - doublecounted: false, - methodology: "TVL includes liquidity of index/ETH pools from the swap factory and the value of index tokens created by the index factory.", - ethereum: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ - factory: config.ethereum.swapFactory, - useDefaultCoreAssets: true, - }), - async (api) => { - const { indexFactory } = config.ethereum; - const tokens = config.tokens; - const logs = await getLogs({ - api, - target: indexFactory, - topic: "IndexCreated(address,address,string,string,uint16,uint8,uint8,address[],uint256[],uint256[],uint256)", - eventAbi: "event IndexCreated(address indexed index, address indexed manager, string name, string symbol, uint16 swapFee, uint8 mintAndBurnFee, uint8 managerShareFee, address[] tokens, uint256[] amounts, uint256[] weights, uint256 initialSupply)", - onlyArgs: true, - fromBlock: 23296262, - }); - const indexes = logs.map(({ index }) => index); - return sumTokens2({ api, tokens, owners: indexes }); - } - ]), - }, -}; \ No newline at end of file diff --git a/projects/bunicorn/index.js b/projects/bunicorn/index.js deleted file mode 100644 index 737e953316e..00000000000 --- a/projects/bunicorn/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { v1Tvl } = require("../helper/balancer"); -const { uniTvlExport } = require("../helper/unknownTokens"); -const BUNI_CONTRACT_ADDRESS = "0x0e7beec376099429b85639eb3abe7cf22694ed49"; -const MASTERCHEF_CONTRACT_ADDRESS = "0xA12c974fE40ea825E66615bA0Dc4Fd19be4D7d24"; - -async function staking(api) { - return api.sumTokens({ - owner: MASTERCHEF_CONTRACT_ADDRESS, - tokens: [BUNI_CONTRACT_ADDRESS], - }); -} - -module.exports = { - bsc: { - tvl: sdk.util.sumChainTvls([v1Tvl('0x48ab312150E1802D57639859d7C3107aE751FE35', 8973039), uniTvlExport('bsc', '0x86873f85bc12ce40321340392c0ff39c3bdb8d68', { - abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, - fetchBalances: true, // get reserves call fails - }).bsc.tvl]), - staking, - }, -}; diff --git a/projects/bunni-v2/index.js b/projects/bunni-v2/index.js deleted file mode 100644 index 29bae6be13d..00000000000 --- a/projects/bunni-v2/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const config = { - ethereum: { factories: ['0x000000dceb71f3107909b1b748424349bfde5493', '0x000000000049c7bcbca294e63567b4d21eb765f1'], fromBlock: 21747552 }, - base: { factories: ['0x000000dceb71f3107909b1b748424349bfde5493', '0x000000000049c7bcbca294e63567b4d21eb765f1'], fromBlock: 25786936 }, - arbitrum: { factories: ['0x000000dceb71f3107909b1b748424349bfde5493', '0x000000000049c7bcbca294e63567b4d21eb765f1'], fromBlock: 301323941 }, - unichain: { factories: ['0x000000dceb71f3107909b1b748424349bfde5493', '0x00000091cb2d7914c9cd196161da0943ab7b92e1', '0x000000000049c7bcbca294e63567b4d21eb765f1'], fromBlock: 11682827 }, - bsc: { factories: ['0x000000dceb71f3107909b1b748424349bfde5493', '0x000000000049c7bcbca294e63567b4d21eb765f1'], fromBlock: 48224121 }, -} - -const abis = { - poolBalances: 'function poolBalances(bytes32) view returns (uint256 token0, uint256 token1)' -} - -const eventAbis = { - newBunni: 'event NewBunni (address indexed bunniToken, bytes32 indexed poolId)' -} - -const tvl = async (api) => { - const chain = api.chain - const safeBlock = await api.getBlock() - 300 - const { factories, fromBlock } = config[chain] - - for (const factory of factories) { - const logs = await api.getLogs({ target: factory, eventAbi: eventAbis.newBunni, fromBlock, toBlock: safeBlock, onlyArgs: true }) - const bunnis = logs.map(({ bunniToken }) => bunniToken) - const poolIds = logs.map(({ poolId }) => poolId) - - const [token0s, token1s, balances] = await Promise.all([ - api.multiCall({ abi: 'address:token0', calls: bunnis }), - api.multiCall({ abi: 'address:token1', calls: bunnis }), - api.multiCall({ abi: abis.poolBalances, calls: poolIds, target: factory, permitFailure: true }) - ]) - - const balances0 = balances.map(b => b?.token0 ?? 0) - const balances1 = balances.map(b => b?.token1 ?? 0) - - api.add(token0s, balances0) - api.add(token1s, balances1) - - } -} - -module.exports.doublecounted = true - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/bunni/index.js b/projects/bunni/index.js deleted file mode 100644 index 3bf1f6cc3dc..00000000000 --- a/projects/bunni/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - ethereum: { - lens: '0xb73f303472c4fd4ff3b9f59ce0f9b13e47fbfd19', - factory: '0xb5087f95643a9a4069471a28d32c569d9bd57fe4', - fromBlock: 15743582, - }, - arbitrum: { - lens: '0xb73f303472c4fd4ff3b9f59ce0f9b13e47fbfd19', - factory: '0xb5087f95643a9a4069471a28d32c569d9bd57fe4', - fromBlock: 30690986, - }, - optimism: { - lens: '0xb73f303472c4fd4ff3b9f59ce0f9b13e47fbfd19', - factory: '0xb5087f95643a9a4069471a28d32c569d9bd57fe4', - fromBlock: 29258949, - }, - polygon: { - lens: '0xb73f303472c4fd4ff3b9f59ce0f9b13e47fbfd19', - factory: '0xb5087f95643a9a4069471a28d32c569d9bd57fe4', - fromBlock: 34323928, - }, -} - -module.exports = { - doublecounted: true, - hallmarks: [ - [1674475200,"$oLIT Rewards Start"] - ], -}; - -const abi = 'function getReserves(tuple(address pool, int24 tickLower, int24 tickUpper) key) view returns (uint112 reserve0, uint112 reserve1)' -const eventAbi = 'event NewBunni (address indexed token, bytes32 indexed bunniKeyHash, address indexed pool, int24 tickLower, int24 tickUpper)' - -Object.keys(config).forEach(chain => { - const { lens, fromBlock, factory } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - const logs = await getLogs({ - api, - target: factory, - topics: ['0xa633a76553e9d8d77256f9284d85ae2eb5e5ef445d9e5686e3e6270e2e8fd4a8'], - fromBlock, - eventAbi, - }) - const calls = logs.map(({ args: i }) => ({ params: [[i.pool, i.tickLower, i.tickUpper]] })) - const res = await api.multiCall({ abi, calls, target: lens }) - let tokenCalls = [] - let reserves = res.filter((val, i) => { - if (!(+val.reserve0 || +val.reserve1)) return; // ignore tokens without reserve - tokenCalls.push(logs[i].args.pool) - return val - }) - let token0s = await api.multiCall({ abi: 'address:token0', calls: tokenCalls }) - let token1s = await api.multiCall({ abi: 'address:token1', calls: tokenCalls }) - reserves.forEach(({ reserve0, reserve1 }, i) => { - sdk.util.sumSingleBalance(balances, token0s[i], reserve0, chain) - sdk.util.sumSingleBalance(balances, token1s[i], reserve1, chain) - }) - return balances - } - } -}) diff --git a/projects/bunny/index.js b/projects/bunny/index.js deleted file mode 100644 index 58468642dcd..00000000000 --- a/projects/bunny/index.js +++ /dev/null @@ -1,158 +0,0 @@ -const potABI = "uint256:totalValueInUSD" -const leverageABI = 'function getVaultState() view returns (tuple(uint256 balance, uint256 tvl, uint256 debtRatioLimit))' -const { sumTokens2 } = require('../helper/unwrapLPs') - -const pools = [ - '0xb037581cF0cE10b04C4735443d95e0C93db5d940', - // '0x4fd0143a3DA1E4BA762D42fF53BE5Fab633e014D', - //'0x69FF781Cf86d42af9Bf93c06B8bE0F16a2905cBC', // pool2 - '0xCADc8CB26c8C7cB46500E61171b5F27e9bd7889D', - '0xEDfcB78e73f7bA6aD2D829bf5D462a0924da28eD', - '0x7eaaEaF2aB59C2c85a17BEB15B110F81b192e98a', - '0x3f139386406b0924eF115BAFF71D0d30CC090Bd5', - '0x0137d886e832842a3B11c568d5992Ae73f7A792e', - '0xCBd4472cbeB7229278F841b2a81F1c0DF1AD0058', - '0xE02BCFa3D0072AD2F52eD917a7b125e257c26032', - '0x41dF17D1De8D4E43d5493eb96e01100908FCcc4f', - '0x1b6e3d394f1D809769407DEA84711cF57e507B99', - '0x92a0f75a0f07C90a7EcB65eDD549Fa6a45a4975C', - '0xC1aAE51746bEA1a1Ec6f17A4f75b422F8a656ee6', - '0xE07BdaAc4573a00208D148bD5b3e5d2Ae4Ebd0Cc', - '0xa59EFEf41040e258191a4096DC202583765a43E7', - '0xa5B8cdd3787832AdEdFe5a04bF4A307051538FF2', - '0xC0314BbE19D4D5b048D3A3B974f0cA1B2cEE5eF3', - '0x866FD0028eb7fc7eeD02deF330B05aB503e199d4', - '0x52cFa188A1468A521A98eaa798E715Fbb9eb38a3', - '0x22af73683dee5D266B0c36c37D0Fd62c402Fd250', - '0x549d2e2B4fA19179CA5020A981600571C2954F6a', - '0x0Ba950F0f099229828c10a9B307280a450133FFc', - '0x0243A20B20ECa78ddEDF6b8ddb43a0286438A67A', - '0xD1ad1943b70340783eD9814ffEdcAaAe459B6c39', - - // pancakeswap v2 - '0xa6C29a422D1612293669156a34f2793526783622', - '0xA599d6b81eC4a5DDd8eCa85e3AAc31E006aF00AA', - '0x203Ee29ba85BbDfA23bFaE5D77620AeFDaf92cB1', - '0x285F793CE97079D4a5712E616AFBbb971Dbf1f1f', - '0xac20925e6615ad6871987e199783Fa80Bf24EB39', - '0x0d17e7B77C678C79C3ab5176e164FF0BCceb8EAa', - '0x7D52a1697F2dF08E6fb2b5A88E0E8e4D7C11a921', - '0xE0aca387C6600b455CCFC32B253e2DB13b71ca62', - '0x81fa6F9F4599c5316Cc53B782DE7c01EFf4f9551', - '0x633e538EcF0bee1a18c2EDFE10C4Da0d6E71e77B', - '0xac7D40638271D349cb2DeDfdC6268A77738403Fa', - '0xFdb7D4AbD0109b36667946726dF943E83570286C', - '0x7f0320cef62C88CE1DB7d77c1849082C053E2344', - '0xC341c6a006cab105E8CD2518e25aaB311Cb22FF6', - '0x74fdc215f8309Ec58Fd34455bf3Fee95FB3416dD', - '0xc1d9Ead28Fc4CB9658C62594A695a53bfD306f77', - '0xf92f12b505594EedF65CB8B973819dfA242c61D7', - '0xFeED0bb79035c61CF6519795a02a6a2A69A11aAC', - '0xD2220455E760Fb27ED8aaA6F9C7E143A687BB0aD', - '0xBdd478cF8313240EfDC54108A2ed389d450cD702', - - // // qSAV - disabling these vaults because qubit was hacked and these tokens are no longer there - // '0xDe80CE223C9f1D1db0BC8D5bDD88E03f6882eEA3', // CAKE - // '0x67c42b3dAC9526efCBFeeb2FC1C56Cf77F494e46', // BNB - // '0x4FC359E39A99acFDF44c794eF702fab93067B2A6', // BUSD - // '0x53fd20bc5D4d222764B70817810494F1D06f3403', // USDT - // '0x401c22395200Caaae87f8aB9f9446636Dde38c9A', // DAI - // '0xEe3Ee0BEb7919eDD31a4506d7d4C93940f2ACED6', // USDC - // '0xB9Cf0d36e82C2a1b46eD51e44dC0a4B0100D6d74', // BTCB - // '0x4b107b794c9Bbfd83E5Ac9E8Dd59F918510C5729', // ETH - // '0x33F93897e914a7482A262Ef10A94319840EB8D05', // bQBT - // '0xE6b3fb8E6c7B9d7fBf3BFD1a50ac8201c2fa5a8F', // bQBT-BNB - - // vSAV v2 - '0xA555443A5eE77f334648eF4F557C0B5070fcb4de', - '0xf70e331AcDDfC2a5cd169B8B3D1cC02951E8dE85', - '0xa08a2664BD2124dD011224E1cb4fd6E263E3A208', - '0x7cD22bd5B7a45F952a4f375AA6d5bf08538ed03C', - '0x7d2De1362dc32c1974d3A7CBBbd6Ad898E7B3EE7', -] - -const pots = [ - '0xa9b005d891414E0d6E0353490e099D0CA4C778Fc', - '0xD601966588E812218a45f3ec06D3A89602348183' -] - -const leveragedPools = [ - '0xfb8358f34133c275B0393E3883BDd8764Cb610DE', - '0xD75f3E4e8ed51ec98ED57386Cb47DF457308Ad08', - '0xb04D1A8266Ff97Ee9f48d48Ad2F2868b77F1C668', - '0x12B7b4BEc740A7F438367ff3117253507eF605A7', - '0xe0fB5Cd342BCA2229F413DA7a2684506b0397fF3', - '0x8626Af388F0B69BB15C36422cE67f9638BA2B800' -] - -const poolsPolygon = [ - // polyBUNNY - '0x10C8CFCa4953Bc554e71ddE3Fa19c335e163D7Ac', - '0x7a526d4679cDe16641411cA813eAf7B33422501D', - // '0x6b86aB330F18E8FcC4FB214C91b1080577df3513', - '0xe167Cf12a60f606C4C83bc34F09C4f9D9453690e', - // qPool - '0x4beB900C3a642c054CA57EfCA7090464082e904F', - '0x54E1feE2182d0d96D0D8e592CbFd4debC8EEf7Df', - '0x3cba7b58b4430794fa7a37F042bd54E3C2A351A8', - // '0x4964e4d8E17B86e15A2f0a4D8a43D8E4AbeC3E78', - '0xf066208Fb16Dc1A06e31e104bEDb187468206a92', - '0xB0621a46aFd14C0D1a1F8d3E1021C4aBCcd02F5b', - '0x95aF402e9751f665617c3F9037f00f91ec00F7b6', - '0x29270e0bb9bD89ce4febc2fBd72Cd7EB53C0aDD7', - '0xE94096Fb06f60C7FC0d122A352154842384F80bd', - '0x58918F94C14dD657f0745f8a5599190f5baDFa05', - '0x4ee929E9b25d00E6C7FCAa513C01311Da40462F2', - // '0x560F866fE4e1E6EA20701B9dCc9555486E1B84c2', - // '0x470Be517cBd063265c1A519aE186ae82d10dD360', - - // sPool - '0x87c743C1418864c9799FdE4C8612D1Ba64188ECe', - '0x16CeE21c231E2c3cf2778Fe568230c145C8591cA', - '0x45F10bAE59Ff9D4Be78eD20F0AAfDE532b254707', - '0xdF0BE663C84322f55aD7b40A4120CdECBa4C4B45', - '0x51C30ee94052baAABA60Db6b931c1f4657FFe174', - '0x39D28Db6742a457BCfB927D4539bEea55Dc5Dd87', - -] - -async function bsc(api) { - - const pot_total = (await api.multiCall({ - calls: pots, - abi: potABI, - })).reduce((tvl, call) => tvl + call / 1e18, 0) - - const leverage_total = (await api.multiCall({ - calls: leveragedPools, - abi: leverageABI, - })).reduce((tvl, call) => tvl + call.tvl / 1e18, 0) - api.addUSDValue(pot_total + leverage_total) - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: pools }) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: pools }) - api.add(tokens, bals) - api.removeTokenBalance('0xc9849e6fdb743d08faee3e34dd2d1bc69ea11a51') // exclude own token - return sumTokens2({ api, resolveLP: true }) -} - -async function polygon(api) { - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: poolsPolygon }) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: poolsPolygon }) - api.add(tokens, bals) - api.removeTokenBalance('0x4C16f69302CcB511c5Fac682c7626B9eF0Dc126a') // exclude own token - return sumTokens2({ api, resolveLP: true }) -} - - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: bsc - }, - polygon: { - tvl: polygon - }, - // hallmarks: [ - // [1621395248, 'Flash Loan Attack'], - // ], -} diff --git a/projects/bunnypark/index.js b/projects/bunnypark/index.js deleted file mode 100644 index df458fa9342..00000000000 --- a/projects/bunnypark/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking') -const { masterchefExports } = require('../helper/unknownTokens') - -const bp = "0xACB8f52DC63BB752a51186D1c55868ADbFfEe9C1"; -const masterchef = "0x6148104d39924f071DF05eeb2f6AEB53F7b2EFE7"; -const stakingPools = [ - "0x8a8389D174081E585983DAB7189ea1Cf18F11896", - "0xE051C61baBa59Fd9d184a26F15BE4361027c9916" -] -module.exports = masterchefExports({ chain: 'bsc', nativeToken: bp, masterchef, blacklistedTokens: ['0xe0f2df595207c392e13df940c7908a222b22747c'] }) -module.exports.bsc.staking = staking(stakingPools, bp) diff --git a/projects/bunnyswap/index.js b/projects/bunnyswap/index.js deleted file mode 100644 index 340bcc68424..00000000000 --- a/projects/bunnyswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") - -module.exports={ - base: { - tvl: sumTokensExport({ - tokens:[ - ADDRESSES.optimism.WETH_1, - "0x0bD4887f7D41B35CD75DFF9FfeE2856106f86670" - ], - owners:[ - "0x7cfc830448484cdf830625373820241e61ef4acf" - ] - }) - }, -} \ No newline at end of file diff --git a/projects/burgerswap/abi.json b/projects/burgerswap/abi.json deleted file mode 100644 index 5cbec109bcb..00000000000 --- a/projects/burgerswap/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (uint256 pid, address depositToken, address earnToken, uint256 allocPoint, uint256 lastUpdateBlock, uint256 lastRewardAmount, uint256 lastEarnAmount, uint256 accRewardPerShare, uint256 accEarnPerShare, uint16 tokenType, bool added)", - "poolLength": "uint256:poolLength", - "getDepositTokenSupply": "function getDepositTokenSupply(uint256 _pid) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/burgerswap/index.js b/projects/burgerswap/index.js deleted file mode 100644 index 3702ea21d76..00000000000 --- a/projects/burgerswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require("../helper/staking"); - -const stakingContract = "0x9154c2684aeF8d106babcB19Aa81d4FabF7581ec"; -const BURGER = "0xae9269f27437f0fcbc232d39ec814844a51d6b8f"; -const factory = "0x8a1E9d3aEbBBd5bA2A64d3355A48dD5E9b511256"; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), - staking: staking(stakingContract, BURGER), - }, - methodology: - "TVL is equal to AMMs liquidity plus the Assets deposited on Burger Shack", -}; diff --git a/projects/burrbear/index.js b/projects/burrbear/index.js deleted file mode 100644 index fb66f6a019a..00000000000 --- a/projects/burrbear/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -const V2_ADDRESS = '0xBE09E71BDc7b8a50A05F7291920590505e3C7744'; // shared by all networks - -const config = { - berachain: { fromBlock: 1, }, -} - -Object.keys(config).forEach(chain => { - const { fromBlock } = config[chain] - module.exports[chain] = { - tvl: onChainTvl(V2_ADDRESS, fromBlock) - } -}) diff --git a/projects/burrow.cash/index.js b/projects/burrow.cash/index.js deleted file mode 100644 index 3951f06d8e8..00000000000 --- a/projects/burrow.cash/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { call, sumSingleBalance } = require('../helper/chain/near') -const { default: BigNumber } = require("bignumber.js") -const BURROW_CONTRACT = 'contract.main.burrow.near' - -function tvl(borrowed = false) { - return async () => { - const balances = {}; - const assetsCallResponse = await call(BURROW_CONTRACT, 'get_assets_paged', {}); - - assetsCallResponse.forEach(([token, asset]) => { - const extraDecimals = asset.config.extra_decimals; - const amount = borrowed ? - BigNumber(asset.borrowed.balance) : - BigNumber(asset.supplied.balance).plus(BigNumber(asset.reserved)).minus(BigNumber(asset.borrowed.balance)); - const adjustedAmount = amount.shiftedBy(-1 * extraDecimals); - sumSingleBalance(balances, token, adjustedAmount); - }); - - return balances; - } -} - -module.exports = { - near: { - tvl: tvl(), - borrowed: tvl(true) - }, - misrepresentedTokens: true, - timetravel: false, - methodology: 'Summed up all the tokens deposited in their main lending contract' -} diff --git a/projects/burve-protocol/index.js b/projects/burve-protocol/index.js deleted file mode 100644 index 11499bf0a78..00000000000 --- a/projects/burve-protocol/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const config = { - bsc: { fromBlock: 35953570 }, - arbitrum: { fromBlock: 184614246 }, - base: { fromBlock: 15653766 }, -} - -module.exports = { - start: '2024-02-07', - methodology: "The TVL including total values of assets locked in the tokens which are deployed by BurveProtocol", -} - -Object.keys(config).forEach(chain => { - const { factory = '0xedc1bf1993b635478c66ddfd1a5a01c81a38551b', fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await getLogs2({ api, factory, eventAbi: 'event LogTokenDeployed (string tokenType, string bondingCurveType, uint256 tokenId, address deployedAddr)', fromBlock, transform: i => i.deployedAddr }) - const uTokens = await api.multiCall({ abi: 'address:getRaisingToken', calls: tokens, permitFailure: true }) - const tokensAndOwners = uTokens.map((u, i) => [u, tokens[i]]).filter(t => t[0]) - return api.sumTokens({ tokensAndOwners, blacklistedTokens: tokens }) - } - } -}) diff --git a/projects/burve/index.js b/projects/burve/index.js deleted file mode 100644 index 1cd204abc16..00000000000 --- a/projects/burve/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const BERACHAIN = "0xa1beD164c12CD9479A1049f97BDe5b3D6EC21089" - -const tokens = [ - ADDRESSES.berachain.USDC, - "0x779Ded0c9e1022225f8E0630b35a9b54bE713736", - ADDRESSES.berachain.HONEY, - "0x1cE0a25D13CE4d52071aE7e02Cf1F6606F4C79d3", - ADDRESSES.arbitrum.USDe, - "0xff12470a969Dd362EB6595FFB44C82c959Fe9ACc" -] - -const decimals = [ - 6, // USDC.e - 6, // USDT - 18, - 18, - 18, - 18 -] - -const getClosureValueAbi = 'function getClosureValue(uint16 closureId) view returns (uint8 n, uint256 targetX128, uint256[16] balances, uint256 valueStaked, uint256 bgtValueStaked)'; - -// Helper to normalize balances to 18 decimals -function toReal(amount, decimals) { - return amount / 10n ** BigInt(18 - decimals); -} - -module.exports = { - methodology: "Sum of all tokens in the closure", - start: 6660733, - berachain: { - tvl: async (api) => { - const numTokens = tokens.length; - const closureIds = []; - for (let i = 3; i < (1 << numTokens); i++) { - closureIds.push(i); - } - - const closureValues = await api.multiCall({ - abi: getClosureValueAbi, - calls: closureIds.map(id => ({ target: BERACHAIN, params: [id] })), - permitFailure: true, - }); - - // Sum balances for each token index - const tokenBalances = Array(numTokens).fill(0n); - for (const closure of closureValues) { - if (!closure || !closure.balances) continue; - for (let i = 0; i < numTokens; i++) { - tokenBalances[i] += BigInt(closure.balances[i] || 0); - } - } - - for (let i = 0; i < numTokens; i++) { - const balance = toReal(tokenBalances[i], decimals[i]); - api.add(tokens[i], balance.toString()); - } - }, - } -} \ No newline at end of file diff --git a/projects/business-builders-nfts/index.js b/projects/business-builders-nfts/index.js deleted file mode 100644 index 7c11f30ee6a..00000000000 --- a/projects/business-builders-nfts/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens"); - -const METER_FTB_CONTRACT = "0x6cfe9adad5215195c1aa9755daed29360e6ab986"; -const METER_REWARDS_CONTRACT = "0x103ed6fb861a2651ff59f0852d3739c18d45cd9b"; -const METER_FTB_MTRG_CONTRACT = "0x88cdb3e764dedcc2e3a1642957ebd513765b252a"; - -const POLYGON_FTB_CONTRACT = "0xF305012EA754252184f1071C86ae99fAc5B40320"; -const POLYGON_REWARDS_CONTRACT = "0x0455e50b2822e6f3d8dc01246aca8378a8992466"; -const POLYGON_FTB_MATIC_CONTRACT = "0x1Df39b565652eACa24dfB16A07dcfe4d7f8f02c3"; - -module.exports = { - misrepresentedTokens: true, - meter: { - staking: sumTokensExport({ owner: METER_REWARDS_CONTRACT, tokens:[METER_FTB_CONTRACT,], useDefaultCoreAssets: true, lps: [METER_FTB_MTRG_CONTRACT] }), - }, - polygon: { - staking: sumTokensExport({ owner: POLYGON_REWARDS_CONTRACT, tokens:[POLYGON_FTB_CONTRACT,], useDefaultCoreAssets: true, lps: [POLYGON_FTB_MATIC_CONTRACT] }), - tvl: () => 0, - }, - methodology: `Staking: we include locked tokens on the rewards contracts as staking`, -}; diff --git a/projects/busta/index.js b/projects/busta/index.js deleted file mode 100644 index fcde9af3122..00000000000 --- a/projects/busta/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport( - "bsc", - "0xCdAfc63DE847bBfb7E6B56B21aad12f8F6D877be" -); diff --git a/projects/butterflyfinance/index.js b/projects/butterflyfinance/index.js deleted file mode 100644 index eea2b0a8018..00000000000 --- a/projects/butterflyfinance/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -const masterchef = "0xab2ec5bDeEf83a457FBEA2d36f60443d668b0689" -const nativeToken = "0xbA5e6D1B37978c4fee748EED33142171678DC840" - -module.exports = masterchefExports({ chain: 'avax', masterchef, nativeToken, useDefaultCoreAssets: true,}) \ No newline at end of file diff --git a/projects/butternetwork/index.js b/projects/butternetwork/index.js deleted file mode 100644 index 0fa078857fe..00000000000 --- a/projects/butternetwork/index.js +++ /dev/null @@ -1,164 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {sumTokensExport, sumTokens} = require('../helper/sumTokens') -const {sumTokens2} = require('../helper/unwrapLPs'); - -const config = { - ethereum: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: ADDRESSES.ethereum.USDT, - USDC: ADDRESSES.ethereum.USDC, - DAI: ADDRESSES.ethereum.DAI, - ETH: ADDRESSES.ethereum.WETH, - BTC: ADDRESSES.ethereum.WBTC, - } - }, - bsc: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: ADDRESSES.bsc.USDT, - USDC: ADDRESSES.bsc.USDC, - DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - ETH: ADDRESSES.bsc.ETH, - BTC: ADDRESSES.bsc.BTCB, - } - }, - polygon: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: ADDRESSES.polygon.USDT, - USDC: ADDRESSES.polygon.USDC, - ETH: ADDRESSES.polygon.WETH_1, - // MAP: "0xBAbceE78586d3e9E80E0d69601A17f983663Ba6a" - } - }, - arbitrum: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: ADDRESSES.arbitrum.USDT, - USDC: ADDRESSES.arbitrum.USDC, - ETH: ADDRESSES.arbitrum.WETH, - BTC: ADDRESSES.arbitrum.WBTC, - // DAI: ADDRESSES.arbitrum.DAI, - } - }, - base: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDC: ADDRESSES.base.USDC, - ETH: ADDRESSES.base.WETH, - } - }, - optimism: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: ADDRESSES.optimism.USDT, - USDC: ADDRESSES.optimism.USDC, - ETH: ADDRESSES.optimism.WETH_1, - } - }, - linea: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: ADDRESSES.linea.USDT, - // USDC: ADDRESSES.linea.USDC, - ETH: ADDRESSES.linea.WETH, - } - }, - mantle: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: ADDRESSES.mantle.USDT, - // USDC: ADDRESSES.linea.USDC, - ETH: ADDRESSES.mantle.WETH, - } - }, - - klaytn: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - // USDT: ADDRESSES.klaytn.USDT, - USDT: "0xd077a400968890eacc75cdc901f0356c943e4fdb", - USDC: ADDRESSES.klaytn.USDC, - ETH: ADDRESSES.klaytn.WETH, - } - }, - blast: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - // USDT: ADDRESSES.blast.USDT, - // USDC: ADDRESSES.blast.USDC, - ETH: ADDRESSES.blast.WETH, - // DAI: ADDRESSES.blast.DAI, - } - }, - map: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: "0x33daba9618a75a7aff103e53afe530fbacf4a3dd", - USDC: ADDRESSES.map.USDC, - ETH: ADDRESSES.map.ETH, - MAP: ADDRESSES.map.WMAPO, - BTC: '0xb877e3562a660c7861117c2f1361a26abaf19beb', - TRX: '0x593a37fe0f6dfd0b6c5a051e9a44aa0f6922a1a2', - } - }, - merlin: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - WBTC: ADDRESSES.merlin.WBTC, - WBTC_1: ADDRESSES.merlin.WBTC_1, - SolvBTC: "0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71", - iUSD: ADDRESSES.bsc.iUSD - } - }, - scroll: { - mosContract: "0x0000317Bec33Af037b5fAb2028f52d14658F6A56", - tokens: { - USDT: ADDRESSES.scroll.USDT, - USDC: ADDRESSES.scroll.USDC, - WBTC: ADDRESSES.scroll.WBTC, - WETH: ADDRESSES.scroll.WETH, - } - }, - - tron: { - mosContract: "TXsDYB9ovFEFg4cja6gn1t1tpmrnSbYhHA", - tokens: { - TRX: ADDRESSES.tron.null, - USDC: ADDRESSES.tron.USDC, - USDT: ADDRESSES.tron.USDT, - } - }, - - // solana: { - // mosContract: "AGwu8gfXJshkB9UMM3eexeq26m7zf8wM1FgNdBt5wkqN", - // tokens: { - // SOL: ADDRESSES.solana.SOL, - // USDC: ADDRESSES.solana.USDC, - // USDT: ADDRESSES.solana.USDT, - // } - // }, - - // near: { - // mosContract: "mosv21.mfac.butternetwork.near", - // tokens: { - // USDT: "dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near", - // USDC: "a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near", - // DAI: "6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near", - // ETH: "aurora", - // // MAP: "mapo.mfac.butternetwork.near" - // } - // }, - -} -module.exports = { - methodology: 'get the amount of token deposited in MOS contract on each supported chain.', -}; - -Object.keys(config).forEach(chain => { - const {mosContract, tokens} = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({owners:[mosContract], tokens: Object.values(tokens), logCalls: true}) - } -}) diff --git a/projects/butterswap/index.js b/projects/butterswap/index.js deleted file mode 100644 index 9d601976415..00000000000 --- a/projects/butterswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'heco': '0x874D01CA682C9c26BA7E6D9f6F801d1a1fb49201', - 'bsc': '0x1Ba94C0851D96b2c0a01382Bf895B5b25361CcB2' -}, { staking: { - heco: ['0x89a3BfA840CF4C9022789CC60500Ec03df8C2935', '0xbf84214ea409A369774321727595F218889eD943'], - bsc: ['0xa49f4CF57eaFE0098D398DF3eD3A7dF10EAaBfAB', '0x5eF7814f4cB17b38408F1F641e4b5b61c5D023a8'], - }, -}) \ No newline at end of file diff --git a/projects/butterxyz/index.js b/projects/butterxyz/index.js deleted file mode 100644 index 26421708bc5..00000000000 --- a/projects/butterxyz/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - mantle: { - factory: "0xEECa0a86431A7B42ca2Ee5F479832c3D4a4c2644", - fromBlock: 22966090, - }, -}); diff --git a/projects/buttonwood-button-wrappers/abi.json b/projects/buttonwood-button-wrappers/abi.json deleted file mode 100644 index ca98e6eb565..00000000000 --- a/projects/buttonwood-button-wrappers/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "trancheFactory": "address:trancheFactory", - "collateralToken": "function collateralToken() external view returns (address)", - "tranches": "function tranches(uint256 i) external view returns (address token, uint256 ratio)", - "instanceCount": "function instanceCount() external view returns (uint256 count)", - "instanceAt": "function instanceAt(uint256 index) external view returns (address instance)", - "underlying": "function underlying() external view returns (address)" -} diff --git a/projects/buttonwood-button-wrappers/index.js b/projects/buttonwood-button-wrappers/index.js deleted file mode 100644 index ec031553df1..00000000000 --- a/projects/buttonwood-button-wrappers/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const abi = require('./abi.json'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - buttonTokenFactories: [ - "0x84D0F1Cd873122F2A87673e079ea69cd80b51960", - "0x65bC95AC790F8afd47Fc9b83640Bf722a73BC021", - ], - unbuttonTokenFactories: [ - "0x75ff649d6119fab43dea5e5e9e02586f27fc8b8f", - ], - fromBlock: 14611058 - }, - avax: { - buttonTokenFactories: [ - "0x033D23c8371354BF1110001386E97298F48Fc0a9", - ], - fromBlock: 35710946 - }, - base: { - buttonTokenFactories: [ - "0x5f51466C781E74C53c043F441E700d3Bb80373E1", - ], - fromBlock: 3839432 - }, - arbitrum: { - buttonTokenFactories: [ - "0x06fe30a0a8e2ec5c8a9c9643f32aca8db909227f", - ], - fromBlock: 185321020 - } -} - -Object.keys(config).forEach(chain => { - const { buttonTokenFactories, unbuttonTokenFactories } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - - // Collecting all the wrapper tokens - const calls = []; - - // Add all the button tokens to calls array - for (const buttonTokenFactory of buttonTokenFactories || []) { - const buttonTokenCount = await api.call({ abi: abi.instanceCount, target: buttonTokenFactory }); - for (let i = 0; i < buttonTokenCount; i++) { - calls.push({ target: buttonTokenFactory, params: i }); - } - } - - // Add all the unbutton tokens to calls array - for (const unbuttonTokenFactory of unbuttonTokenFactories || []) { - const unbuttonTokenCount = await api.call({ abi: abi.instanceCount, target: unbuttonTokenFactory }); - for (let i = 0; i < unbuttonTokenCount; i++) { - calls.push({ target: unbuttonTokenFactory, params: i }); - } - } - - // Fetching the wrapper token instances - const wrapperTokens = await api.multiCall({ abi: abi.instanceAt, calls }); - - // Fetching the underlying of each wrapper token - const underlyingTokens = await api.multiCall({ abi: abi.underlying, calls: wrapperTokens }) - - // Fetching the underlying balance of each wrapper token and summing the total - return sumTokens2({ api, tokensAndOwners2: [underlyingTokens, wrapperTokens], }) - } - } -}) diff --git a/projects/buttonwood-tranche/abi.json b/projects/buttonwood-tranche/abi.json deleted file mode 100644 index 6aed974d8ab..00000000000 --- a/projects/buttonwood-tranche/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trancheFactory": "address:trancheFactory", - "collateralToken": "function collateralToken() external view returns (address)", - "tranches": "function tranches(uint256 i) external view returns (address token, uint256 ratio)", - "trancheCount": "function trancheCount() external view returns (uint256 count)" -} diff --git a/projects/buttonwood-tranche/index.js b/projects/buttonwood-tranche/index.js deleted file mode 100644 index 10306a1f57f..00000000000 --- a/projects/buttonwood-tranche/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const abi = require('./abi.json'); -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - bondFactories: [ - "0x019fa32d71bb96922695c6cdea33774fdeb04ac0", - "0x71868d38ea3b3eb5e4db9a45ee355548b46c82e0", - "0x72799ffd1f4ccf92ea2b1ee0cada16a5461c4d96", - "0xfc74f7b04c620dad6a750d4f60f13586e2b1ef54", - "0x17550f48c61915A67F216a083ced89E04d91fD54", - ], - fromBlock: 13779573 - }, -} - -async function getAllBondsFromBondFactory(api, bondFactory, fromBlock) { - // Iterating over all the bonds created by the bondFactory - const logs = await getLogs({ - api, - target: bondFactory, - eventAbi: 'event BondCreated(address creator, address newBondAddress)', - onlyArgs: true, - fromBlock, - }) - return logs.map(i => i.newBondAddress); -} - -Object.keys(config).forEach(chain => { - const { bondFactories, fromBlock } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - - // Collecting all the bonds - const allBonds = await Promise.all( - bondFactories.map(bondFactory => getAllBondsFromBondFactory(api, bondFactory, fromBlock)) - ).then(bonds => bonds.flat(1)); - - // Collecting all of the collateralTokens for each bond in a map - const collateralTokens = await api.multiCall({ abi: abi.collateralToken, calls: allBonds }) - const trancheCounts = await api.multiCall({ abi: abi.trancheCount, calls: allBonds }) - const owners = [...allBonds] - const tokens = [...collateralTokens] - const calls = [] - trancheCounts.forEach((trancheCount, i) => { - for (let j = 0; j < trancheCount; j++) { - tokens.push(collateralTokens[i]) - calls.push({ target: allBonds[i], params: j }) - } - }) - const tranches = await api.multiCall({ abi: abi.tranches, calls }) - tranches.forEach(tranche => owners.push(tranche.token)) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], permitFailure: true, blacklistedTokens: ['0xf0406c59da4880fe41ded41990af0ac594a6ef53'] }) - } - } -}) diff --git a/projects/buzz-farming/index.js b/projects/buzz-farming/index.js deleted file mode 100644 index 146b5e9dd77..00000000000 --- a/projects/buzz-farming/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const {sumTokensExport} = require('../helper/sumTokens'); -const ADDRESSES = require('../helper/coreAssets.json') - -const ADDRESSES_BSQUARED_BSTONE = ADDRESSES.bsquared.BSTONE; -const ADDRESSES_BSQUARED_FDUSD = ADDRESSES.bsquared.FDUSD; -const ADDRESSES_BSQUARED_MATIC = ADDRESSES.bsquared.MATIC; -const ADDRESSES_BSQUARED_ORDI = ADDRESSES.bsquared.ORDI; -const ADDRESSES_BSQUARED_SATS = ADDRESSES.bsquared.SATS; -const ADDRESSES_BSQUARED_FBTC = '0x5d247f32b792a61f7b4078cf7752a878aff152e2'; -const ADDRESSES_BSQUARED_UBTC = ADDRESSES.bsquared.UBTC; -const ADDRESSES_BSQUARED_USDA = '0x46fecc5bef70615ee3bfdbd2b278944368b78cf5'; -const ADDRESSES_BSQUARED_ETH = ADDRESSES.bsquared.ETH; -const ADDRESSES_BSQUARED_UNIBTC = '0x93919784C523f39CACaa98Ee0a9d96c3F32b593e'; - -const tokenList = [ADDRESSES.null, ADDRESSES.bsquared.USDT, ADDRESSES.bsquared.USDC, ADDRESSES.bsquared.WBTC, ADDRESSES_BSQUARED_BSTONE, ADDRESSES_BSQUARED_FDUSD, ADDRESSES_BSQUARED_MATIC, ADDRESSES_BSQUARED_ORDI, ADDRESSES_BSQUARED_SATS, ADDRESSES_BSQUARED_FBTC, ADDRESSES_BSQUARED_UBTC, ADDRESSES_BSQUARED_USDA, ADDRESSES_BSQUARED_ETH, ADDRESSES_BSQUARED_UNIBTC]; - - -module.exports = { - hallmarks: [], - methodology: "Buzz Farming collaborates with well-known BTCFi projects such as Babylon, Lombard, and Bedrock, as well as prominent blockchains, offering users a variety of multifaceted profit strategies. Users can conveniently select and operate investment strategies through Buzz Farming.", - - bsquared: {tvl: sumTokensExport({owner: '0xe677F4B6104726D76DeBc681d7a862CE269aA8F3', tokens: tokenList})}, -} diff --git a/projects/bwatch/index.js b/projects/bwatch/index.js deleted file mode 100644 index c340d294bf4..00000000000 --- a/projects/bwatch/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require('../helper/http') - -const API = 'https://mtg-api.b.watch/api/etfs' - -const tvl = async (api) => { - const { data } = await get(API) - data.etfs.forEach(({ gems }) => { - gems.forEach(({ balance, price }) => { - api.addUSDValue(Math.round(balance * price)) - }) - }) - -} - -module.exports = { - misrepresentedTokens: true, - mixin: { tvl }, -} - diff --git a/projects/bwswap/index.js b/projects/bwswap/index.js deleted file mode 100644 index ea2470e9f64..00000000000 --- a/projects/bwswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('base', '0x67233C258BAeE28b2a7d42ec19fBD0b750a77Cd1') \ No newline at end of file diff --git a/projects/bxh/index.js b/projects/bxh/index.js deleted file mode 100644 index e079a5d535d..00000000000 --- a/projects/bxh/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'heco': '0xe0367ec2bd4ba22b1593e4fefcb91d29de6c512a', - 'bsc': '0x7897c32cbda1935e97c0b59f244747562d4d97c1', - 'ethereum': '0x8d0fCA60fDf50CFE65e3E667A37Ff3010D6d1e8d', - 'avax': '0xDeC9231b2492ccE6BA01376E2cbd2bd821150e8C', - 'okexchain': '0xff65bc42c10dcc73ac0924b674fd3e30427c7823' -}) \ No newline at end of file diff --git a/projects/bybit/index.js b/projects/bybit/index.js deleted file mode 100644 index a49296b1742..00000000000 --- a/projects/bybit/index.js +++ /dev/null @@ -1,374 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - ethereum: { - owners: [ - "0x1Db92e2EeBC8E0c075a02BeA49a2935BcD2dFCF4", - "0xA7A93fd0a276fc1C0197a5B5623eD117786eeD06", - "0xe1ab8c08294F8ee707D4eFa458eaB8BbEeB09215", - "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A", - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", // multiple chains - "0x88a1493366d48225fc3cefbdae9ebb23e323ade3", - "0x6Bd869be16359f9E26f0608A50497f6Ef122eE3E", - "0x922fa922da1b0b28d0af5aa274d7326eaa108c3d", - "0xbaed383ede0e5d9d72430661f3285daa77e9439f", - "0x412dd3f282b1fa20d3232d86ae060dec644249f6", - "0x77ec2176824df1145425eb51b3c88b9551847667", - "0xf475388222e37ed28578fb43c02520bccb5443b6", - "0xb627cb720a34b7bb7ded80263571b26f3acaf16b", - "0x04fcd675f63b1ac987c650567977523e85a78135", - "0xf579d6086cd6e557fb18c440582b2ed56a1c48e1", - "0x6F4565c9D673DBDD379ABa0b13f8088d1AF3Bb0C", - "0x72187DB55473B693Ded367983212FE2db3768829", - "0xb829e684df8e31b402a4d4aedf3bbc18a52e7589", - "0xc22166664e820cda6bf4cedbdbb4fa1e6a84c440", // added on 19/03/2025 - "0xdae4fdcb7fc93738ec6d5b1ea92b7c7f75e4f2f6", // added on 19/03/2025 - "0x6B9B774502E6aFAAfCac84f840AC8A0844A1aBe3", // added on 19/03/2025 - "0x80a9B4aAb0AD3c73cCE1C9223236b722DB5d6628", // added on 19/03/2025 - "0x63beE4A7e4aa5d76Dc6AB9b9d1852AABB9a40936", // added on 19/03/2025 - "0x33ae83071432116ae892693b45466949a38ac74c", // added on 19/03/2025 - "0x801bfD99636EC8961F7E2d2dD0a296d726f5F1Ae", // added on 19/03/2025 - "0x371c31f9221459e10565CFe78937CBdA5Db1791c", // added on 19/03/2025 - "0x3a4C84Ab5030E0371f8C2bD51E7Fb5Ec10149D0f", // added on 19/03/2025 - "0x48Bb9B14483E43c7726dF702b271D410e7460656", // added on 19/03/2025 - "0xCab3F132A11E5b723Fc20dDAB8bb1B858d00a8E8", // added on 19/03/2025 - "0x25c7d768a7D53E6EBE5590c621437126c766E1EA", // added on 19/03/2025 - "0x79Ae8c1b31B1E61C4B9d1040217a051F954d4433", // added on 19/03/2025 - "0xc273A2e3FC4c8f8610eBe51123dC32d233913da7", // added on 19/03/2025 - "0xa9cf4Aa55c675bADb68519e3CFa8F4Be942e6D11", // added on 19/03/2025 - "0x6206AE3781f9F1b6FBcf44C7240b1bE14f3169eF", // added on 19/03/2025 - "0x869bCEE3a0baD2211A65c63eC47DBD3D85A84D68", // added on 19/03/2025 - "0x30Ba21597F22aAfa4B0E86C250c8a6EEbAf0da54", - "0x61B2Aa17C1c1114E7583bB31F777FF4bDc7AB717", - "0x3Bd0e57e2917d3d9a93F479b3a23B28C3f31a789", - "0xb24692D17baBEFd97eA2B4ca604A481a7cc2c8EA", - "0xc93e48d89F2d6DBc1672908aA68Ce7c24d0413B4", - "0xEe6281d94Fed46A90379F2033B6BbdcDa4EF462E", - "0xEC949f12A3acaB835F3eED8b54B7361a8fbb3ee0", - "0x7e8c73462aaa9d61c801bd9f5682db014387621a", - "0xE5791f93b997c7Fc90753A1f2711E479773a2A87", - "0xa2E5e8A607562B7BdA05d5820e569C290b43be6D", - "0x2ebF891f4718EB8367013d8D975a1E5Afcae277F", - "0x5a076b2D0941F2BC9b49d05D3a1FF9C7aCDc5e78", - "0x4be65e82a07b05686b092aa7d4426ce8ecd70ddc", - "0xeca33dc9e896072d4edc4a02183910376d4b5e76", - "0x4Ce053dFe58541E08F149C1050EB3dF09d7A40bc", - "0xcacc7e55d0a4b10daaed40b3db7bfe11d23b6f94", - "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", - "0xb5873e333161e5b45adac57379ec2b15d861178d", - "0x9814ba501c7ad64bed5ac731d0a4f9a506e18f8a", - "0xcf4b3a3be828b111eee75a0534a988c8d9284aae", - "0x1c3944173abee256456b1498299fc501ad5bbd6f", - "0x41be1bae9815d86820bcfd94a5161000fab448a6", - "0x3cEf1f90BE0F15f1573Bda7A3E045CCA9CfF1D15", - "0x429B41e5Eb73E2266AFFBc2D7a41553BD8f1EDe1", - "0xd7C4D4B3F076BF9fE391190c42676B4dC269EE02", - "0x4E5e17e8eF17c9a7ef9798ddf78f3a2c38367d16", - "0x495eB9345788ee6Be50c9c36Ed67Ffa2bEb3699f", - "0x3Db4cB6d753D9e0BA7cC84e576D17dcD01B6B67D", - "0x4e19698c366f7DCD1cfAd4D7f621B4D275Bb1a6C", - "0x7C41C7d883DbbE1eDfcefca9D7a7592DD30C8B51", - "0x01E2Fb8F565D5e3cB9e0E8F0b607A96169B94393", - "0x8a2458f32E5Ec9935F20E7C2e06e8D4820F726e5", - "0xd860962a96Cd471BbE60A83c33e65011D40eB65f", - "0x933646D78ede6F1EF5CF4a0a03e3a819c8057922", - "0x9db812a1b55ac6fdbd1d52e628324e2fd2dbb560", - "0xbdbcb0789b4d1143d391e27a0fbeb90ad205d232", - "0x863b9fe43ea1490a9084ef0cdf436dbe4c34370f", - "0x86dbaa55f0e65857b58109c3cb725deff4da3851", - "0x35696b0847ed8428a098cba726b6514582aa5fc7", - "0x8d6d3479c94bb95e737b72186192ff5e7fedf3a2", - "0xf2f40c3bb444288f6f64d8336dcc14dbd929fd94", - "0xbce9aecd3985d4cbb9d273453159a26301fa02ef", - "0x70f58622158d7e609ae5839c4ad0d477f468863f", - "0x18e296053cbdf986196903e889b7dca7a73882f6", - "0x260b364fe0d3d37e6fd3cda0fa50926a06c54cea", - "0xa1abfa21f80ecf401bd41365adbb6fef6fefdf09", - "0x70167b76543c4a12b49b2f2b70cbf04d99345786", - "0x4865d4bcf4ab92e1c9ba5011560e7d4c36f54106", - "0xc6c6a48ee8e9f593724161c72414d76e94cda93f", - "0xefef30bd1cca520619306c95091ab18473febc5c", - "0x180a1b935d28494f9ff4233985562b18b3dcfa74", - "0xad85405cbb1476825b78a021fa9e543bf7937549", - "0x8fa129f87b8a11ee1ca35abd46674f8b66984d4a", - "0x651641299c7ec0aa44ad7ed9b7e12702fed2022f", - "0x187c9fbf5bd0f266883c03f320260c407c7b4100", - "0xa4b9569bf942c3aad23c0c2d322fe4aff8e1bf30", - "0x6522b7f9d481eceb96557f44753a4b893f837e90", - "0xa31231e727ca53ff95f0d00a06c645110c4ab647", - "0xf42aac93ab142090db9fdc0bc86aab73cb36f173", - "0x9cdb59516b37f5c1bd166bc41c5b9f68a57225bd", - "0x0ac92eb5716516a08e7760d314d42e1d5d3c03ae", - "0x7a84c1f1aa344d466b0f161f57b0321b98faf6ee", - "0xc63fe58d36bef77a9a98df32a547537f45aac71d", - "0xf8f061cfc030928a4acb8c4980911b4f5afc4002", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.bybit, - }, - bsc: { - owners: [ - "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A", - "0xf89d7b9c864f589bbf53a82105107622b35eaa40", - "0x88a1493366d48225fc3cefbdae9ebb23e323ade3", - "0x388E52979AC487c6BdaFCC84B251976Cd162790b", - "0xc19bb2709321bd6ad6d8396a885b7c151b8d48c5", - "0xc3121c4ca7402922e025e62e9bb4d5b244303878", - "0xef3aeff9a5f61c6dda33069c58c1434006e13b20", - "0x318d2aae4c99c2e74f7b5949fa1c34df837789b8", - "0xc851a293ed8b8888a2e4140744973dd23bbcbaf2", - ], - }, - tron: { - owners: [ - "TB1WQmj63bHV9Qmuhp39WABzutphMAetSc", - "TBpr1tQ5kvoKMv85XsCESVavYo4oZZdWpY", - "TKFvdC4UC1vtCoHZgn8eviK34kormXaqJ7", - "TQVxjVy2sYt4at45ezD7VG4H6nQZtsua5C", - "TS9PDCB6vzLYDCPr5Nas2yzekdr7ot6dxn", - "TU4vEruvZwLLkSfV9bNw12EJTPvNr7Pvaa", - "TXRRpT4BZ3dB5ShUQew2HXv1iK3Gg4MM9j", - "TYgFxMvvu2VHFJnxQf8fh1qVAeMfXZJZ3K", - "TB1cPNTPE2yKRbyd5C3hd9KMXgb8HqW1CM", - "TTH75Z9rfRgzCLNDDYBaR2WjUvuSDRtSMg", - "TFbrM6tiw4A3AhFQAyY7u6jYs7m2HFKavU", - "TUCS5ToZvL23Q6kKtWUhAGgMfJBwPUZgfu", - "TF1yVgYNJYx8AEtKLhjd2YbLJ33uyWu9Eo", - "THRKrcUPirR6GU6qvsKAv2M6PUBcwe6ruD", - "TMB53f4eYhEhTqkuzKRNDoDNu5Ma5DtMSc", - "TTT5cF5aPZjF6FkPJqV4MmnuykMACjDvmb", - "TVYkGPtjVK7hvVcfsuZ8QXRsAdR2axpSP5", - "TJ6Ajasg7SQMYJuFxVAwwcsCSDSdNVPjDE", - "TFAxireFhrca32XpKaTwABbrNyxSrM6twe", - "TG9n9mHxbYfwVjizac1WaEoQ8ELfExPBCp", - "TPk6eu8rKWmdd1qAhyYFsmkUpbZjJbiNMW", - "TSTDgxSnutWG9NHjGa4H9v7sMkNdtKacPJ", - "TAv8HvZLAyPC2PyLY61i1nvPKpJ2bDURxo", - "TSLXGsU6kgByy3oCdhMqpWHXq3FFFHUVAn", - "TG8eS14GvQJ1Qi4iWoePavD8oBiSNVNqzi", - "TLXtfWVafCLPSUUfk2UHJWVs2SZtuxBS4F", - "TT82s2U3xERKsmvgftM1ekzRqVP6NPo13y", - "TP39VvzdkdkxvGhmEMtot4hN5R7czR6GVV", - "TMFuCWAvcEDwtW3evtXFAg8eQzoCWtzwnQ", - "TZBxnLfD3TRr9tHJNN2geTYwC4CYzfvkS9", - ], - }, - polygon: { - owners: [ - "0xf89d7b9c864f589bbf53a82105107622b35eaa40", - "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A", - "0x7e8c73462aaa9d61c801bd9f5682db014387621a", - "0xa85c29b94f8a22a7268facee89ef4eca051be2ce", - "0x1347378b1d0eb69d3462e09b3dfa2fe28ebe74ec", - ], - }, - arbitrum: { - owners: [ - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", - "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A", - "0x88a1493366d48225fc3cefbdae9ebb23e323ade3", - "0x7e8c73462aaa9d61c801bd9f5682db014387621a", - "0xa0acdf9fa38b293f0bbdd01ca6bf3e7ed8291dd4", - "0x7da0b9211020d3775b18116fe751c555b9a7058c", - "0x9d271a4e9523d74572b618ec10419a0a330e1bf0", - ], - }, - avax: { - owners: [ - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", - "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A", - "0x88a1493366d48225fc3cefbdae9ebb23e323ade3", - "0x0a7e3e04fb45af4233a27bcf23f2c94f5babcf39", - "0x3062e4ed0282f86d1b8481d06c30d7f2382776a7", - ], - }, - ripple: { - owners: [ - "rMvCasZ9cohYrSZRNYPTZfoaaSUQMfgQ8G", - "rwBHqnCgNRnk3Kyoc6zon6Wt4Wujj3HNGe", - "raQxZLtqurEXvH5sgijrif7yXMNwvFRkJN", - "raBWjPDjohBGc9dR6ti3DsP9Sn47jirTi3", - "rfKSkASYSGwrTvk9FeH65QC5CWiiEjYFpp", - "rpwsiBrcXeVTyNPG445TzPbXSBdL9xHB83", - "rBdPX224aE6Rsa2cw8uGvaw73fzcpEo5Ue", - "rKwtFTDNTTeLVcj7ahz9PXBEx2V9bPCg44", - ], - }, - optimism: { - owners: [ - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", - "0x1Db92e2EeBC8E0c075a02BeA49a2935BcD2dFCF4", - "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A", - "0x88a1493366d48225fc3cefbdae9ebb23e323ade3", - "0x75df67943d35129dd22da5d14fda4983571f553a", - "0xc0e17ad342afabd36b3971f8305ff147006962ae", - "0x6d37817d118f72f362cf01e64d9454bdd8e8e92f", - ], - }, - era: { - owners: [ - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", - "0x1Db92e2EeBC8E0c075a02BeA49a2935BcD2dFCF4", - "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A", - "0xacf9a5610cb9e6ec9c84ca7429815e95b6607e9f", - ], - }, - solana: { - owners: [ - "AC5RDfQFmDS1deWZos921JfqscXdByf8BKHs5ACWjtW2", - "42brAgAVNzMBP7aaktPvAmBSPEkehnFQejiZc53EpJFd", - "Hvkm4H2Ta3L3ssWbB5jeC4kpEJDuZnZqapAXp1V7UHEw", - "CqQ6AX1fiFfHKKY3saGzT5pgbkLwfLVrrAKpFhUG38oe", - "FeNayVKekV9FJzhD7ycTd6sbKEyzt9CRCiqxw5nr41yR", - "CqQ6AX1fiFfHKKY3saGzT5pgbkLwfLVrrAKpFhUG38oe", - "32cT9eAwkEvAk631rUcUAbXVFPg21DaAXzGiz9AqHTVE", - "9Z7S8vCj6nDbK9t4m4AU3vZpKm4UufHAwpmRYyKgZf7r", - "BunaYnktTigcU1ovzVt9dG7NMv2gW5VX7MBfSS8J38s2", - "AaFm2LPX8NUKXe64JaxcRNUc8QPGYCxrPG1HjHcTTGAK", - "i9XvhQqBCTQapqaFKPDuCbtPYMCwELmX8VTCsDhRG7d", - "7ReR6syi6gr7qUrKCL1FB9VFzGhVgHwLJ8wtfNtH9Mv4", - "iGdFcQoyR2MwbXMHQskhmNsqddZ6rinsipHc4TNSdwu", - "9ZifroknFoYu4r6DUk6nYoJiUQnEyyoUyeAwjXbPoL2x", - "2qo8jvuc49pFmTjmUHLiARSV6ppPTaE7gw27ZJ6DnNZy", - "CK8i4zFXkDE2KWfyg7g9S748r6mwxajbcKcyGhQMR3qQ", - "Gem2VAypSg7Ai7vjDKPTtqFahpoQWkfgVkyzx3rPoTka", - "5LZkATrLwHYCQj2YuVbjjgsDZzBk6YfL4pFQRJmtboT2", - "7cAui6ADtxLnpRr2wYvwJWTkzwgmVF2LYKnjKTLx4xR8", - "F6iEboP31qwgewVfonux3bdgWonJQHLgsky5uztmHDng", - "4SQQkqaouajAj9HaALAE1GUYhrkis96AhGr4gfnSDiUA", - "giPVBame6yenRbuYdsjXwku6TS3FaEkw7Nwy2VHiq8X", - "AL63c8ZNNAHZbAub6v1EGqQLt1fwyGQbVnFudw8xTPa5", - "8vHZDc2VTtynUizstoJHtXaH5VNKzynySMLZRZ8rj8Vc", - "BEyAq6ZgDkBwms5tNnYEjjvxsT7RaL8HVjxZvdu7XnJJ", - "FCgSWpNqaTvYydABHVCBxs7MRpgPBemhVDEYUcudj3Zv", - "CSSJFgoeqidqVtHKSNP7i7s6WX8APHfH2kYGdLV195Jb", - "FQEmsV5A6jZdmb3KuP3YBLmHfFNoKuoWddBGMQuW1M9f", - "CMivUnnbDHxLq9ChV1bSuiQE5ycZf6JVvFFDePMHhHYK", - "6fJxHzqAvnmsfb61Hkh7dNtUqLCaZdBtCvYq5X8BqHYj", - "6coXmZ8FRDRcuGQnoa1wH9GTrzJ7d1cD7NhiVDdMKt7F", - ], - }, - cardano: { - owners: ["addr1v8mn6dmk7tf9u26kr09a05lmvc9j4k9d940a88ta3hdczqgyt7whl"], - }, - aptos: { - owners: [ - "0x84b1675891d370d5de8f169031f9c3116d7add256ecf50a4bc71e3135ddba6e0", - ], - }, - taiko: { - owners: ["0xf89d7b9c864f589bbF53a82105107622B35EaA40"], - }, - celo: { - owners: [ - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", - "0x5768d8a89da933e15c5cb2f1a8f3e0627aa2c92a", - ], - }, - base: { - owners: [ - "0x1Db92e2EeBC8E0c075a02BeA49a2935BcD2dFCF4", - "0xbaed383ede0e5d9d72430661f3285daa77e9439f", - "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A", - "0x88a1493366d48225fc3cefbdae9ebb23e323ade3", - "0x7e8c73462aaa9d61c801bd9f5682db014387621a", - ], - }, - fantom: { - owners: ["0xf89d7b9c864f589bbF53a82105107622B35EaA40"], - }, - kava: { - owners: ["0xf89d7b9c864f589bbF53a82105107622B35EaA40"], - }, - linea: { - owners: [ - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", - "0x46958006fc6c826ea5318b42ffdd99ae3f8deaf4", - ], - }, - litecoin: { - owners: [ - "LKxNtynH2GxLc2oLxUGL6ryckK8JMdP5BR", - "ltc1qp7cnlxmz8wgc93g0m020ckru2s55t25y3wunf6", - "LfajbWicGAVvhEMZtCm3a1aMqynpSPHhS6", - ], - }, - manta: { - owners: [ - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", - "0xa6a9f45518881a788e29f82a032f9d400177d2b6", - "0xf89d7b9c864f589bbF53a82105107622B35EaA40", - "0x588846213a30fd36244e0ae0ebb2374516da836c", - ], - }, - scroll: { - owners: ["0xf89d7b9c864f589bbF53a82105107622B35EaA40"], - }, - polkadot: { - owners: [ - "11yLs2qzU15AhxnH1d7Koqcf83AwutKkDaGbqsJJ6yDWQjc", - "12nr7GiDrYHzAYT9L8HdeXnMfWcBuYfAXpgfzf3upujeCciz", - ], - }, - eos: { - owners: ["coldcrazycat", "eosdididada3", "kcwo3rimcnqf"], - }, - starknet: { - owners: [ - "0x076601136372fcdbbd914eea797082f7504f828e122288ad45748b0c8b0c9696", - ], - }, - arbitrum_nova: { owners: ["0xf89d7b9c864f589bbF53a82105107622B35EaA40"] }, - mantle: { - owners: [ - "0x588846213a30fd36244e0ae0ebb2374516da836c", - "0xEe6281d94Fed46A90379F2033B6BbdcDa4EF462E", - "0xe080636a701adb421e077e98f160fddf7710826b", - "0x59800fc68c7039566ed7a04b0f735255093cac1d", - "0x036c43bebe5fa5dff3c299584b4a6c1923c7d932", - "0xcbf446565eddf074b2c99e8f1c15582a0bfe6eba", - "0xbce9aecd3985d4cbb9d273453159a26301fa02ef", - "0x70f58622158d7e609ae5839c4ad0d477f468863f", - "0x4a67e97e770de93952b8596f04c13ada0ab9a69c", - "0xc868d0ea71243f1580f934cdc59620603bf9f1f1", - "0xd8169f099ce16c87a99d2a8494023574b5eea9c5", - "0x0d4dc3b8becc98782309e443a6da4b9455b5ca48", - ], - }, - cosmos: { - owners: [ - "cosmos17kvae2jckzpkct78yealre3ms2gu28cdmtwsv7", - "cosmos1pyarvcy2ehrw86rcvfun34gyu2dlunnthvkc83", - ], - }, - doge: { - owners: [ - "D94tDRhr4X9Tjgr8MG1Nrd5ARpesPAM7ZB", - "DDz1H7AcqPgmKzFEP3pBHW5b1GWuWEoAAP", - "DSivtWEKhTuhcJ1xd1iJSH63wLVxqh7Zo2", - "DJXufZcZJ2b3iPa7s2T7PFSP42H4gVsjuy", - "DHLHMUa3X7eQNRmgXsyTxGs689CDwTqeV2", - ], - }, - ton: { - owners: [ - "EQB9Ez1OQlyOAN4BVROkTmbm0WOyHnFyCux1eZZeXeKMVV6_", - "EQBKHCC8mm-SlPdfHIen84OotzpIOi5tyzYw3b54s8ytANhS", - ], - }, - dydx: { owners: ["dydx10sdnqxvrwe3mhducn6plyewul84edgd47rfnfe"] }, - sonic: { - owners: [ - "0x86dbaa55f0e65857b58109c3cb725deff4da3851", - "0x63783f206f22a3eec1e4d0081a49ae419d02ebe4", - "0x678cbca3a5cc152ae00f77b85b14151d761b44be", - ], - }, - klaytn: { - owners: ["0x0051ef9259c7ec0644a80e866ab748a2f30841b3"], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/bybitSOL/index.js b/projects/bybitSOL/index.js deleted file mode 100644 index d1c4d1c48ff..00000000000 --- a/projects/bybitSOL/index.js +++ /dev/null @@ -1,13 +0,0 @@ - -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('2aMLkB5p5gVvCwKkdSo5eZAL1WwhZbxezQr1wxiynRhq', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/byreal/index.js b/projects/byreal/index.js deleted file mode 100644 index 21b267b9622..00000000000 --- a/projects/byreal/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getConnection, sumTokens2, decodeAccount, } = require('../helper/solana') -const { PublicKey } = require('@solana/web3.js') - -const CLMM = 'REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2' - -async function tvl() { - const connection = getConnection() - const accounts = await connection.getProgramAccounts(new PublicKey(CLMM), { - filters: [{ - dataSize: 1544 - }] - }) - - const data = accounts.map(i => decodeAccount('byrealCLMM', i.account)) - - const tokenAccounts = data.map(i => [i.vaultA, i.vaultB]).flat().map(i => i.toString()) - - return sumTokens2({ tokenAccounts }) -} - - -module.exports = { - timetravel: false, - solana: { tvl }, - -}; - diff --git a/projects/c14/index.js b/projects/c14/index.js deleted file mode 100644 index 55d7141a3aa..00000000000 --- a/projects/c14/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { aaveExports } = require('../helper/aave'); -const methodologies = require('../helper/methodologies'); - -module.exports = { - methodology: methodologies.lendingMarket, - astrzk: aaveExports('astrzk', "0x12922D7d8762090Cb27E7e1e824EC9c373664704", undefined, ['0x7B47bfB3F6C4ff74bb39395676759d4aFbD9f071'], { v3: true }), -} - -module.exports.deadFrom = '2025-03-31' // Astar ZK is shutting down on March 31, 2025: https://docs.astar.network/docs/learn/zkEVM \ No newline at end of file diff --git a/projects/c3/index.js b/projects/c3/index.js deleted file mode 100644 index 747c87cacaf..00000000000 --- a/projects/c3/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { sumTokens } = require("../helper/chain/algorand") - -const coreContractAddress = 'XGE65UPXAFATPMTKGPA2VNHLMDY2URHD7NNPI3XJ3ZOXEAU6E4ZGH7PWZY' - -const chainMap = { - 'algorand': { - 'algorand:1': { name: 'algorand', decimals: 6 }, - }, - 'avax': { - 'algorand:893309613': { name: 'avalanche-2', decimals: 8 }, - 'algorand:1007352535': { name: 'usd-coin', decimals: 6 }, - }, - 'bitcoin': { - 'algorand:1058926737': { name: 'bitcoin', decimals: 8 }, - }, - 'ethereum': { - 'algorand:887406851': { name: 'ethereum', decimals: 8 }, - }, - 'arbitrum': { - 'algorand:1221549217': { name: 'arbitrum', decimals: 8 }, - }, - 'bsc': { - 'algorand:891648844': { name: 'binancecoin', decimals: 8 }, - }, - 'solana': { - 'algorand:887648583': { name: 'solana', decimals: 8 }, - 'algorand:1684682524': { name: 'pyth-network', decimals: 6 }, - 'algorand:1703994770': { name: 'wormhole', decimals: 6 }, - }, -} - -function chainTvl(chain) { - return async () => { - // Read contract token balances - const contractData = await sumTokens({ owner: coreContractAddress }) - - // Remap assets to their common names and normalize values - const result = {} - for (const asset in contractData) { - // Skip if asset is not mapped - const assetData = chainMap[chain]?.[asset] - if (assetData !== undefined) { - // Normalize value to the correct number of decimals for the asset - const normalized = contractData[asset] / (10 ** assetData.decimals) - result[assetData.name] = normalized.toString() - } - } - - return result - } -} - -module.exports.methodology = 'Calculates the TVL from the contract, then remaps assets for accurate value source' - -Object.keys(chainMap).forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } -}) \ No newline at end of file diff --git a/projects/cabal/index.js b/projects/cabal/index.js deleted file mode 100644 index 252fa984cf9..00000000000 --- a/projects/cabal/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { post } = require('../helper/http') - -const REST_URL = 'https://rest.initia.xyz/initia/move/v1/view/json' -const CABAL_MODULE_ADDRESS = '0x53c3f5d8e11844ba3747ebaec1b2d25051574ffbeedc69d72068395991e3ea28' -const INIT_METADATA_ADDRESS = '0x8e4733bdabcf7d4afc3d14f0dd46c9bf52fb0fce9e4b996c939e195b8bc891d9' -const USDC_INIT_LP_METADATA_ADDRESS = '0x543b35a39cfadad3da3c23249c474455d15efd2f94f849473226dee8a3c7a9e1' - -function toNum(str) { - const clean = String(str).replace(/[^\d.]/g, ''); - return parseFloat(clean); -} - -async function fetchView(functionName, moduleName, args) { - const response = await post(REST_URL, { - address: CABAL_MODULE_ADDRESS, - module_name: moduleName, - function_name: functionName, - args: args, - typeArgs: [] - }) - return response.data -} - -async function tvl(api) { - const [initStakes, lpStakes] = await Promise.all([ - fetchView('get_real_total_stakes', 'pool_router', [`"${INIT_METADATA_ADDRESS}"`]), - fetchView('get_real_total_stakes', 'pool_router', [`"${USDC_INIT_LP_METADATA_ADDRESS}"`]) - ]) - api.add(INIT_METADATA_ADDRESS, toNum(initStakes)) - api.add(USDC_INIT_LP_METADATA_ADDRESS, toNum(lpStakes)) -} - -module.exports = { - timetravel: false, - methodology: 'TVL is calculated as the sum of INIT token stakes and USDC-INIT LP token stakes, each multiplied by their on-chain USD value.', - initia: { - tvl - } -} \ No newline at end of file diff --git a/projects/cabinet/index.js b/projects/cabinet/index.js deleted file mode 100644 index a0df108b04a..00000000000 --- a/projects/cabinet/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { fetchLocal, mkMeta } = require("../helper/pact"); - -const chainId = "5"; -const network = `https://api.chainweb.com/chainweb/0.0/mainnet01/chain/${chainId}/pact`; -const GAS_PRICE = 0.00000001; -const creationTime = () => Math.round(new Date().getTime() / 1000) - 10; - - -const getReserve = (tokenData) => { - return parseFloat(tokenData.decimal ? tokenData.decimal : tokenData); -}; - - -const getCabinetTvl = async () => { - const data = await fetchLocal( - { - pactCode: `(coin.get-balance "c:86aaCQXT8uRkyXGXu9k-eNn1kXqV_nNmjTYErKpZ6vE")`, - meta: mkMeta("", chainId, GAS_PRICE, 3000, creationTime(), 600) - }, - network - ); - if (data.result.status === "success") { - return getReserve(data.result.data); - } - throw new Error("Failed do fetch TVL"); - -} - -async function tvl() { - const cabinetTvl = await getCabinetTvl(); - return { - kadena: cabinetTvl, - }; -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - kadena: { - tvl: tvl, - }, -}; diff --git a/projects/cables/index.js b/projects/cables/index.js deleted file mode 100644 index 748416239de..00000000000 --- a/projects/cables/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const config = { - avax: { - owners: [ - '0xfA12DCB2e1FD72bD92E8255Db6A781b2c76adC20', - ], - }, - arbitrum: { - owners: [ - '0xfA12DCB2e1FD72bD92E8255Db6A781b2c76adC20', - ], - } -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ ...config[chain], fetchCoValentTokens: true, }) - } -}) \ No newline at end of file diff --git a/projects/cache-gold/abis.js b/projects/cache-gold/abis.js deleted file mode 100644 index e5f574d6830..00000000000 --- a/projects/cache-gold/abis.js +++ /dev/null @@ -1,6 +0,0 @@ -const abis = {}; - -abis.gramOz = "int256:getLatestPrice" -abis.cacheGold = "uint256:totalCirculation" - -module.exports = abis \ No newline at end of file diff --git a/projects/cache-gold/index.js b/projects/cache-gold/index.js deleted file mode 100644 index 22ce2749916..00000000000 --- a/projects/cache-gold/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const sdk = require('@defillama/sdk'); -const abis = require('./abis.js') -const { toUSDTBalances } = require('../helper/balances'); - - async function tvl(timestamp, block) { - const cgt = '0xf5238462e7235c7b62811567e63dd17d12c2eaa0'; - const chainLinkGoldGramConvertorPriceConsumer = '0x34BCe86EEf8516282FEE6B5FD19824163C2B5914'; - - const circulatingBalance = (await sdk.api.abi.call({ - block, - target: cgt, - abi: abis.cacheGold - })).output; - - const chainlinkAuGramPrice = (await sdk.api.abi.call({ - block, - target: chainLinkGoldGramConvertorPriceConsumer, - abi: abis.gramOz - })).output; - - return toUSDTBalances(circulatingBalance*chainlinkAuGramPrice/1e16); - } - -module.exports = { - misrepresentedTokens: true, - methodology: 'Counts the number of tokens in circulation times the chainlink USD price in grams', - ethereum: { - tvl, - }, - start: '2021-04-01' -}; diff --git a/projects/cadabra/index.js b/projects/cadabra/index.js deleted file mode 100644 index e1033df0930..00000000000 --- a/projects/cadabra/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const { getLogs2 } = require("../helper/cache/getLogs"); - -const BSC_VAULT = '0x6f24f5EB8f50DE36C1D1FEcD31c423e1fc8ba4ae'; -const BSC_FROM_BLOCK = 45524968; - -const ARBITRUM_VAULT = '0x31206FFb663651aBe29cCb72aD213d5F95BdaC45'; -const ARBITRUM_FROM_BLOCK = 293021794; - -const SONIC_VAULT = '0x575Ac25f047A76B467A84BfA69b328D6ebC6aE60'; -const SONIC_FROM_BLOCK = 13212801; - -function strategiesTvl(vault, fromBlock) { - return async (api) => { - const logs = await getLogs2({ - api, - target: vault, - fromBlock, - eventAbi: 'event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, uint8 specialization)', - extraKey: 'PoolRegistered', - }) - const logs2 = await getLogs2({ - api, - target: vault, - fromBlock, - eventAbi: 'event TokensRegistered(bytes32 indexed poolId, address[] tokens, address[] assetManagers)', - extraKey: 'TokensRegistered', - }) - - let tokens = logs2.map(i => i.tokens).flat() - const blacklistedTokens = new Set(logs.map(i => i.poolAddress)) - tokens = tokens.filter(t => !blacklistedTokens.has(t)) - await addWrapperReserves(api, tokens) - } -} - -/** - * Cadabra is a yield aggregator that channels user liquidity into third-party protocols. - * Because each protocol handles tokens differently—such as issuing A-tokens when depositing into AAVE—we calculate - * token balances based on how each wrapper contract represents them. These wrappers abstract the underlying protocols - * and display token balances in their base form; for example, a wrapper holding AAVE's aUSDC reports its reserves as - * USDC. - */ -async function addWrapperReserves(api, tokens) { - const res = await api.multiCall({ abi: 'function reserves() view returns(address[] memory, uint256[] memory)', calls: tokens }) - res.forEach(([tokens, amounts]) => api.add(tokens, amounts)) -} - -async function pool2(api) { - - const BSC_CADABRA_FULL_RANGE_PAIR_LENS = '0x2A479CFf64574Ed192f42509a205e3eb94Dc258C'; - const token0 = await api.call({ abi: 'address:token0', target: BSC_CADABRA_FULL_RANGE_PAIR_LENS }); - const token1 = await api.call({ abi: 'address:token1', target: BSC_CADABRA_FULL_RANGE_PAIR_LENS }); - - const [frpReserve0, frpReserve1] = await api.call({ - abi: 'function fullRangePairReserves() view returns (uint256 reserve0, uint256 reserve1)', - target: BSC_CADABRA_FULL_RANGE_PAIR_LENS - }); - - const [polReserve0, polReserve1] = await api.call({ - abi: 'function polReserves() view returns (uint256 reserve0, uint256 reserve1)', - target: BSC_CADABRA_FULL_RANGE_PAIR_LENS - }); - - api.add(token0, [frpReserve0, polReserve0]) - api.add(token1, [frpReserve1, polReserve1]) -} - -module.exports = { - methodology: `The TVL is calculated by summing all underlying reserves across our strategies`, - doublecounted: true, - bsc: { - tvl: strategiesTvl(BSC_VAULT, BSC_FROM_BLOCK), - pool2, - }, - arbitrum: { - tvl: strategiesTvl(ARBITRUM_VAULT, ARBITRUM_FROM_BLOCK) - }, - sonic: { - tvl: strategiesTvl(SONIC_VAULT, SONIC_FROM_BLOCK) - } -}; diff --git a/projects/cadence-protocol/index.js b/projects/cadence-protocol/index.js deleted file mode 100644 index 0a230bd81dd..00000000000 --- a/projects/cadence-protocol/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - - -//Canto -const cantoVault = '0xbB975222F04C1992A39A27b19261646FD6547919'; -const cantoStaking = '0x05FA19c543aAA066EC7F67526b1c0a4fa3b9fEEE'; -const cantoCAD = "0x8F20150205165C31D9b29C55a7B01F4911396306" - -module.exports = { - canto: { - staking: staking(cantoStaking, cantoCAD), - tvl: gmxExports({ vault: cantoVault }) - }, - hallmarks:[ - [1709142570, "Cadence Perpetuals Launch"] - ], - -}; \ No newline at end of file diff --git a/projects/cafeswap/index.js b/projects/cafeswap/index.js deleted file mode 100644 index 3f575b6d2e9..00000000000 --- a/projects/cafeswap/index.js +++ /dev/null @@ -1,28 +0,0 @@ - -const { getUniTVL, } = require('../helper/unknownTokens') -const { staking, } = require('../helper/staking') - -const BSC_DEX_FACTORY = "0x3e708fdbe3ada63fc94f8f61811196f1302137ad"; -const BSC_MASTER_CHEF = "0xc772955c33088a97d56d0bbf473d05267bc4febb"; -const POLYGON_DEX_FACTORY = "0x5ede3f4e7203bf1f12d57af1810448e5db20f46c"; -const POLYGON_MASTER_CHEF = "0xca2DeAc853225f5a4dfC809Ae0B7c6e39104fCe5" -const BSC_BREW_ADDRESS = "0x790be81c3ca0e53974be2688cdb954732c9862e1"; -const POLYGON_BREW_ADDRESS = "0xb5106A3277718eCaD2F20aB6b86Ce0Fee7A21F09"; - - -module.exports = { - bsc: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: BSC_DEX_FACTORY, - }), - staking: staking(BSC_MASTER_CHEF, BSC_BREW_ADDRESS) - }, - polygon: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: POLYGON_DEX_FACTORY, - }), - staking: staking(POLYGON_MASTER_CHEF, POLYGON_BREW_ADDRESS, 'polygon', `bsc:${BSC_BREW_ADDRESS}`) - }, -}; diff --git a/projects/cairofiswap/abi.js b/projects/cairofiswap/abi.js deleted file mode 100644 index a3ee514e816..00000000000 --- a/projects/cairofiswap/abi.js +++ /dev/null @@ -1,77 +0,0 @@ -const fabis = [ - { - "inputs": [], - "name": "get_all_pairs", - "outputs": [ - { - "name": "all_pairs_len", - "type": "felt" - }, - { - "name": "all_pairs", - "type": "felt*" - } - ], - "stateMutability": "view", - "type": "function" - } -] - -const pabis = [ - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "name": "address", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function", - "customType": "address" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "name": "address", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function", - "customType": "address" - }, - { - "inputs": [], - "name": "get_reserves", - "outputs": [ - { - "name": "reserve0", - "type": "Uint256" - }, - { - "name": "block_timestamp_last", - "type": "felt" - }, - { - "name": "reserve1", - "type": "Uint256" - }, - ], - "stateMutability": "view", - "type": "function" - }, -] - - -const factory = {} -const pair = {} -fabis.forEach(i => factory[i.name] = i) -pabis.forEach(i => pair[i.name] = i) - -module.exports = { - factory, pair, fabis, pabis, -} \ No newline at end of file diff --git a/projects/cairofiswap/api.js b/projects/cairofiswap/api.js deleted file mode 100644 index b7890490d16..00000000000 --- a/projects/cairofiswap/api.js +++ /dev/null @@ -1,48 +0,0 @@ -// https://www.starknetjs.com/docs/API/contract - -const { call, multiCall, parseAddress, } = require('../helper/chain/starknet') -const { getCache, setCache, } = require('../helper/cache') -const abi = require('./abi') -const { transformDexBalances } = require('../helper/portedTokens') -const factory = '0x75c43221d5da7fd4bf77e128083363fc42f8d89c810935e08a83d376fae2689' - -async function tvl() { - let { all_pairs } = await call({ target: factory, abi: abi.factory.get_all_pairs }) - - const calls = all_pairs.map(i => parseAddress(i)) - const cache = await getCache('cairofiswap', 'starknet') ?? {} - if (!cache.token0s) { - cache.token0s = [] - cache.token1s = [] - } - const oldCacheLength = cache.token0s.length - const newCalls = calls.slice(oldCacheLength) - - const _token0s = await multiCall({ abi: abi.pair.token0, calls: newCalls }) - const _token1s = await multiCall({ abi: abi.pair.token1, calls: newCalls }) - const reserves = await multiCall({ abi: abi.pair.get_reserves, calls }) - - cache.token0s.push(..._token0s) - cache.token1s.push(..._token1s) - if (cache.token0s.length > oldCacheLength) await setCache('cairofiswap', 'starknet', cache) - - - const data = [] - reserves.forEach((reserve, i) => { - data.push({ - token0: cache.token0s[i], - token1: cache.token1s[i], - token0Bal: +reserve.reserve0, - token1Bal: +reserve.reserve1, - }) - }) - - return transformDexBalances({ chain: 'starknet', data }) -} - -module.exports = { - timetravel: false, - starknet: { - tvl, - } -} \ No newline at end of file diff --git a/projects/cairofiswap/index.js b/projects/cairofiswap/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/cairofiswap/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/cake-defi/index.js b/projects/cake-defi/index.js deleted file mode 100644 index f6e1b0420ce..00000000000 --- a/projects/cake-defi/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xc5a0a17eabbb0e64dcd567b5670c8c5d5c34128c', - '0x94fa70d079d76279e1815ce403e9b985bccc82ac', - '0xb5e2d774c4672aa4297272f62d61e8a041175cb5', - '0x3ec49e613ae70beb0631d7666f46d4ff2813932e', - '0xC889Faf456439Fb932B9Ce3d4F43D8078177fD29', - '0x883C4599C455Fc337CA43BF9d63eBA45F995a769', - - ], - }, - polygon: { - owners: [ - '0xaa6c7eAF827E04185D7A6a6A6156195AB5BDBE4c', - ] - }, - bitcoin: { - owners: bitcoinAddressBook.cakeDefi - }, - litecoin: { - owners: ['MLYQxJfnUfVqRwfYXjDJfmLbyA77hqzSXE'] - } -} - -module.exports = cexExports(config) -module.exports.methodology = 'As Bake.io (formerly Cake DeFi) is a CeDeFi platform, its assets associated to the staking nodes are not included for the purposes of the TVL calculation. In this case, there are approximately $121.4M in DFI chain (nodes), and around $24.7M in ETH chain (nodes) as of 31 March 2023. The calculation methodology are as follows: DFI: 10846 (nodes) * 20K (collateral per node) *$0.56 = $121.4M. ETH: 430 * 32 *$1800 = $24.7M, we also do not track Bitcoin Cash and Dogecoin. Bake.io publishes information on all its nodes on its Transparency page here: https://bake.io/transparency.', -module.exports.hallmarks = [ - [1680516000, "Change Of Wallets"], - [1700784000, "Change Of Wallets"] -] \ No newline at end of file diff --git a/projects/cake-monster/index.js b/projects/cake-monster/index.js deleted file mode 100644 index 63a232986fd..00000000000 --- a/projects/cake-monster/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('../helper/staking') -const CM_TOKEN_CONTRACT = "0x8A5d7FCD4c90421d21d30fCC4435948aC3618B2f"; -const CM_STAKING_CONTRACT = "0xF7CDDF60CD076d4d64c613489aA00dCCf1E518F6"; - -module.exports = { - methodology: - "counts the number of $MONSTA tokens in the Cake Monster Staking contract, excluding the amount reserved for the staking rewards.", - bsc: { - tvl: () => ({}), - staking: staking(CM_STAKING_CONTRACT, CM_TOKEN_CONTRACT), - }, -}; diff --git a/projects/cakedao/index.js b/projects/cakedao/index.js deleted file mode 100644 index a3d62a26f92..00000000000 --- a/projects/cakedao/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const cakeStaking = "0xA3E4200CA1ac92331d529327E82d89C149CcD81C"; -const cake = "0x4eb49a2f9a79053866fae806fac95a3ef5b92c05"; - -const treasury = "0x829D805F26E26aE6c2C6294B7fF9c0fE14d982Ac"; -const treasuryTokens = [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - [ADDRESSES.avax.WAVAX, false], // WAVAX, - [ADDRESSES.avax.USDT_e, false], // USDT - [ADDRESSES.avax.WBTC_e, false], // WBTC - [ADDRESSES.avax.WETH_e, false], // WETH - ["0x84d2fe6adace63407f4b6bd91ab9f782ba3cb420", true], // CAKE-MIM JLP - ["0xb8df8111a74e5fd62b13dbbe59ddeb343fc91d4a", true] // CAKE-WAVAX JLP -] - -module.exports = { - ...ohmTvl( - treasury, - treasuryTokens, - "avax", - cakeStaking, - cake - ), -}; - -module.exports.deadFrom = '2022-02-01' \ No newline at end of file diff --git a/projects/cakepie/abis/CakepieReader.json b/projects/cakepie/abis/CakepieReader.json deleted file mode 100644 index e7655a5d0fa..00000000000 --- a/projects/cakepie/abis/CakepieReader.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "weth": "address:WETHToken", - "mCake": "address:mCake", - "mCakeSV": "address:mCakeSV", - "poolLength": "uint256:poolLength", - "poolList": "function poolList(uint256) view returns (address)", - "tokenToPoolInfo": "function tokenToPoolInfo(address) view returns (address stakingToken, address receiptToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accCakepiePerShare, uint256 totalStaked, address rewarder, bool isActive)", - "pools": "function pools(address) view returns (address poolAddress, address depositToken, address rewarder, address receiptToken, uint256 lastHarvestTime, uint256 poolType, uint256 v3Liquidity, bool isAmount0, bool isNative, bool isActive)", - "masterChefv3": "address:masterChefV3", - "pancakeV3Helper": "address:pancakeV3Helper", - "v3FARM_BOOSTER": "address:v3FARM_BOOSTER", - "v3PoolAddressPid": "function v3PoolAddressPid(address) view returns (uint256)", - "poolInfo": "function poolInfo(uint256) view returns(uint256 allocPoint ,address v3Pool ,address token0 ,address token1 ,uint24 fee , uint256 totalLiquidity , uint256 totalBoostLiquidity)", - "slot0": "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint32 feeProtocol, bool unlocked)", - "fee": "function fee() view returns (uint24 fee)", - "liquidity": "function liquidity() view returns (uint128 liquidity)", - "lmPool": "function lmPool() view returns (address lmPool)", - "lmLiquidity": "function lmLiquidity() view returns (uint128 lmLiquidity)", - "whiteList": "function whiteList(uint256) view returns (bool whiteList)", - "getMCakePooInfo": "function getMCakePooInfo(address account, address poolAddr) view returns (CakepiePool memory)" -} \ No newline at end of file diff --git a/projects/cakepie/abis/MasterCakepie.json b/projects/cakepie/abis/MasterCakepie.json deleted file mode 100644 index ac32232eb1f..00000000000 --- a/projects/cakepie/abis/MasterCakepie.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "registeredToken": "function registeredToken(uint256) view returns (address)", - "tokenToPoolInfo": "function tokenToPoolInfo(address) view returns (address stakingToken, address receiptToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accCakepiePerShare, uint256 totalStaked, address rewarder, bool isActive)" -} \ No newline at end of file diff --git a/projects/cakepie/config.js b/projects/cakepie/config.js deleted file mode 100644 index 2118bf4a599..00000000000 --- a/projects/cakepie/config.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - bsc: { - MasterCakepieAddress: "0x74165b89fd8E9b91A109a4e71662f27EeBA61E98", - // VlMGPAddress: "0x9B69b06272980FA6BAd9D88680a71e3c3BeB32c6", - MCakeSVAddress: "0x1d7928452009e03aF2E3a2B5931d5d5876Cb0C21", - CKPAddress: "0x2B5D9ADea07B590b638FFc165792b2C610EdA649", - CakeAddress: "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", - MCakeAddress: "0x581FA684D0Ec11ccb46B1d92F1F24C8A3F95C0CA", - PancakeStaking: "0xb47b790076050423888cde9EBB2D5Cb86544F327", - CakepieReader: "0xc1cc256846224e8c0bA530692c338a99FbC27cB5", - vlCKPAddress: "0x232594e7F0096ba7DDAbcD8689cB0D994694eb26" - }, - }; \ No newline at end of file diff --git a/projects/cakepie/index.js b/projects/cakepie/index.js deleted file mode 100644 index 720231d56c6..00000000000 --- a/projects/cakepie/index.js +++ /dev/null @@ -1,80 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const CakepieReaderAbi = require("./abis/CakepieReader.json"); -const MasterCakepieAbi = require("./abis/MasterCakepie.json"); -const config = require("./config") -const { sumTokens2, PANCAKE_NFT_ADDRESS } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking'); - - -async function tvl(api) { - const { PancakeStaking, CakepieReader, MasterCakepieAddress, CakeAddress, } = config[api.chain]; - - function transformToken(token) { - token = token.toLowerCase() - switch (token) { - case '0x581fa684d0ec11ccb46b1d92f1f24c8a3f95c0ca': return CakeAddress // mcake -> cake - case '0x7dc91cbd6cb5a3e6a95eed713aa6bf1d987146c8': return ADDRESSES.bsc.ETH // mwbeth -> eth - default: return token - } - } - const masterChefV3 = await api.call({ abi: CakepieReaderAbi.masterChefv3, target: CakepieReader }) - const mCake = await api.call({ abi: CakepieReaderAbi.mCake, target: CakepieReader }) - const mCakeSV = await api.call({ abi: CakepieReaderAbi.mCakeSV, target: CakepieReader }) - await sumTokens2({ api, uniV3nftsAndOwners: [[PANCAKE_NFT_ADDRESS, PancakeStaking]], uniV3ExtraConfig: { nftIdFetcher: masterChefV3 } }) - const mCakePool = await api.call({ abi: MasterCakepieAbi.tokenToPoolInfo, target: MasterCakepieAddress, params: [mCake] }) - const mCakeSVPool = await api.call({ abi: MasterCakepieAbi.tokenToPoolInfo, target: MasterCakepieAddress, params: [mCakeSV] }) - const poolAddress = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: 'poolList', target: PancakeStaking }) - //getting all pool address: 2-v2 pancakeswap, 0-stableswap pancakeswap pools - let poolinfo = await api.multiCall({ abi: 'function pools(address) view returns(address poolAddress,address depositToken, address rewarder , address receiptToken, uint256 lastHarvestTime, uint256 poolType, uint256 v3Liquidity, bool isAmount0, bool isNative, bool isActive)', calls: poolAddress, target: PancakeStaking, }) - const sstokens = []; - const v2tokens = []; - const v2pools = []; - const sspools = [] - for (let i = 0; i < poolinfo.length; i++) { - if (poolinfo[i].poolType == 0) { - sstokens.push(poolinfo[i].depositToken); - sspools.push(poolinfo[i].poolAddress) - } - if (poolinfo[i].poolType == 2) { - v2tokens.push(poolinfo[i].depositToken); - v2pools.push(poolinfo[i].poolAddress) - } - } - //adding tvl for stable swap pools - for (let i = 0; i < sspools.length; i++) { - const balance = await api.call({ abi: 'function tokenToPoolInfo(address) view returns (address stakingToken, address receiptToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accCakepiePerShare, uint256 totalStaked, address rewarder, bool isActive)', target: MasterCakepieAddress, params: sspools[i] }) - let minter = await api.call({ abi: 'address:minter', target: sstokens[i], }) - let totalsupply = await api.call({ abi: 'uint256:totalSupply', target: sstokens[i], }) - let token = await api.multiCall({ abi: 'function coins(uint256) view returns(address)', calls: [0, 1], target: minter }) - let token_balances = await api.multiCall({ abi: 'function balances(uint256) view returns(uint256)', calls: [0, 1], target: minter }) - let lp = balance.totalStaked / totalsupply - - api.add(transformToken(token[0]), lp * token_balances[0]) - api.add(transformToken(token[1]), lp * token_balances[1]) - } - //adding tvl for v2pools of pancakeswap - for (let i = 0; i < sspools.length; i++) { - const balance = await api.call({ abi: 'function tokenToPoolInfo(address) view returns (address stakingToken, address receiptToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accCakepiePerShare, uint256 totalStaked, address rewarder, bool isActive)', target: MasterCakepieAddress, params: v2pools[i] }) - const totalsupply = await api.call({ abi: 'uint256:totalSupply', target: v2tokens[i], }) - let token0 = await api.call({ abi: 'address:token0', target: v2tokens[i], }) - let token1 = await api.call({ abi: 'address:token1', target: v2tokens[i], }) - const balances = await api.call({ abi: 'function getReserves() view returns(uint112 _reserve0 ,uint112 _reserve1,uint32 _blockTimestampLast)', target: v2tokens[i], }) - let lp = balance.totalStaked / totalsupply - - api.add(transformToken(token0), lp * balances._reserve0) - api.add(transformToken(token1), lp * balances._reserve1) - } - - api.add(CakeAddress, mCakePool.totalStaked) - api.add(CakeAddress, mCakeSVPool.totalStaked) -} - -Object.keys(config).forEach((chain) => { - const { vlCKPAddress, CKPAddress } = config[chain]; - module.exports[chain] = { - tvl, - } - if (vlCKPAddress && CKPAddress) { - module.exports[chain].staking = staking(vlCKPAddress, CKPAddress) - } -}) \ No newline at end of file diff --git a/projects/cakewwap/index.js b/projects/cakewwap/index.js deleted file mode 100644 index a5cfce11c35..00000000000 --- a/projects/cakewwap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xe97352E2d3a4F418044a91533a2379dbd11b425d', - }) - } -}; diff --git a/projects/calculated-finance/index.js b/projects/calculated-finance/index.js deleted file mode 100644 index f7797a7dfa0..00000000000 --- a/projects/calculated-finance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens, } = require('../helper/chain/cosmos') - -module.exports = { - kujira: { - tvl: async () => { - return sumTokens({ owners: ['kujira1e6fjnq7q20sh9cca76wdkfg69esha5zn53jjewrtjgm4nktk824stzyysu'], chain: 'kujira' }) - }, - }, - osmosis: { - tvl: async () => { - return sumTokens({ owners: ['osmo1zacxlu90sl6j2zf90uctpddhfmux84ryrw794ywnlcwx2zeh5a4q67qtc9'], chain: 'osmosis' }) - } - }, - neutron: { - tvl: async () => { - return sumTokens({ owners: ['neutron1cc5adah6vekm2nz5yp6qs332g704q90jgc03v8zxpzaqh297jvqqae2eez'], chain: 'neutron' }) - } - }, - archway: { - tvl: async () => { - return sumTokens({ owners: ['archway1delmknshmvfuhv07uetes90crzrj32za23pgd9cvjtc5mrzfjauq3jqrpa'], chain: 'archway' }) - } - }, -} diff --git a/projects/camel-farm/index.js b/projects/camel-farm/index.js deleted file mode 100644 index 62b5b0c57f2..00000000000 --- a/projects/camel-farm/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { masterchefExports } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'arbitrum', - masterchef: '0xceFDbfaf8E0f5b52F57c435dAD670554aF57EBFF', - nativeToken: '0xb5734ac76d44bdf32b8dd4331e5bfc3bf9989cda', - coreAssets: [ADDRESSES.arbitrum.WETH] -}) \ No newline at end of file diff --git a/projects/camelot-v2/index.js b/projects/camelot-v2/index.js deleted file mode 100644 index d5cb201332d..00000000000 --- a/projects/camelot-v2/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const { mergeExports } = require('../helper/utils'); - -const export1 = uniV3Export({ - arbitrum: { factory: '0x1a3c9B1d2F0529D97f2afC5136Cc23e58f1FD35B', fromBlock: 75633510, isAlgebra: true, blacklistedTokens: ['0xf3527ef8de265eaa3716fb312c12847bfba66cef', '0x7788a3538c5fc7f9c7c8a74eac4c898fc8d87d92', '0x8467f85a834159c26227b21f9898ca0fa606eaa8'] }, -}) - -const export2 = uniV3Export({ - xai: { factory: '0xD8676fBdfa5b56BB2298D452c9768f51e80e34AE', fromBlock: 2398999, isAlgebra: true }, - rari: { factory: '0xcF8d0723e69c6215523253a190eB9Bc3f68E0FFa', fromBlock: 340548, isAlgebra: true }, - sanko: { factory: '0xcF8d0723e69c6215523253a190eB9Bc3f68E0FFa', fromBlock: 51, isAlgebra: true }, - arbitrum: { factory: '0xd490f2f6990c0291597fd1247651b4e0dcf684dd', fromBlock: 75633510, isAlgebra: true, }, - reya: { factory: '0x10aA510d94E094Bd643677bd2964c3EE085Daffc', fromBlock: 2932166, isAlgebra: true, }, - gravity: { factory: '0x10aA510d94E094Bd643677bd2964c3EE085Daffc', fromBlock: 11988, isAlgebra: true, }, - apechain: { factory: '0x10aA510d94E094Bd643677bd2964c3EE085Daffc', fromBlock: 60224, isAlgebra: true, }, - duckchain: { factory: '0xCf4062Ee235BbeB4C7c0336ada689ed1c17547b6', fromBlock: 1530060, isAlgebra: true, }, - occ: { factory: '0xCf4062Ee235BbeB4C7c0336ada689ed1c17547b6', fromBlock: 21053, isAlgebra: true, }, - spn: { factory: '0xCf4062Ee235BbeB4C7c0336ada689ed1c17547b6', fromBlock: 1, isAlgebra: true, }, - winr: { factory: '0x10aA510d94E094Bd643677bd2964c3EE085Daffc', fromBlock: 1258618, isAlgebra: true } -}) - -module.exports = mergeExports([export1, export2]) - diff --git a/projects/camelot/index.js b/projects/camelot/index.js deleted file mode 100644 index 592149b47fb..00000000000 --- a/projects/camelot/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const tvl = getUniTVL({ factory: '0x7d8c6B58BA2d40FC6E34C25f9A488067Fe0D2dB4', useDefaultCoreAssets: true }) - -module.exports = { - misrepresentedTokens: true, - start: '2022-11-22', - arbitrum: { - tvl: getUniTVL({ factory: '0x6EcCab422D763aC031210895C81787E87B43A652', useDefaultCoreAssets: true, }), - }, - sanko: { tvl }, - xai: { - tvl: getUniTVL({ factory: '0x18E621B64d7808c3C47bccbbD7485d23F257D26f', useDefaultCoreAssets: true }) - }, - rari: { tvl }, - reya: { tvl }, - gravity: { tvl }, - apechain: { tvl }, - duckchain: { tvl }, - occ: { tvl }, - spn: { tvl }, -}; \ No newline at end of file diff --git a/projects/cana-holdings-california-carbon-credits/index.js b/projects/cana-holdings-california-carbon-credits/index.js deleted file mode 100644 index be64bc0c827..00000000000 --- a/projects/cana-holdings-california-carbon-credits/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const sdk = require('@defillama/sdk'); -const ADDRESSES = require('../helper/coreAssets.json'); - -// CANA Holdings California Carbon Credits -// Website: https://maseer.finance/ -// Live Token Info: https://cana.maseer.finance/ -// Dune Analytics: https://maseer.finance/dune -// CoinGecko ID: cana-holdings-california-carbon-credits -const CANA_CONTRACT_ADDRESS = "0x01995A697752266d8E748738aAa3F06464B8350B"; -const AUTHORIZED_ISSUER_ADDRESS = "0xb56F413dbCe352cfd71f221029CFC84580133F66"; - -async function tvl(api) { - const balances = {}; - - try { - // Get total supply of CANA tokens - const totalSupply = await api.call({ - target: CANA_CONTRACT_ADDRESS, - abi: "uint256:totalSupply" - }); - - // Get authorized issuer balance to subtract from total supply - const issuerBalance = await api.call({ - target: CANA_CONTRACT_ADDRESS, - abi: "function balanceOf(address) view returns (uint256)", - params: [AUTHORIZED_ISSUER_ADDRESS] - }); - - // Get NAV price (in 6 decimal places, USDT denominated) - const navPrice = await api.call({ - target: CANA_CONTRACT_ADDRESS, - abi: "uint256:navprice" - }); - - // Validate data - ensure navPrice is reasonable (> 0 and < $1M per token) - if (navPrice === 0 || navPrice > 1000000 * (10 ** 6)) { - console.warn(`CANA: Unusual NAV price detected: ${navPrice}`); - return balances; // Return empty if price seems invalid - } - - // Calculate circulating supply (total supply minus issuer balance) - const circulatingSupply = totalSupply - issuerBalance; - - // Ensure circulating supply is positive - if (circulatingSupply <= 0) { - console.warn(`CANA: Invalid circulating supply: ${circulatingSupply}`); - return balances; - } - - // Calculate TVL: circulatingSupply * navPrice - // circulatingSupply is in 18 decimals (ERC20 standard) - // navPrice is in 6 decimals (USDT terms) - // Result should be in USDT base units (6 decimals) - const tvlInUSDT = (circulatingSupply * navPrice) / (10 ** 18); - - // Add to balances using USDT address - sdk.util.sumSingleBalance( - balances, - ADDRESSES.ethereum.USDT, - tvlInUSDT, - api.chain - ); - - } catch (error) { - console.error(`CANA TVL calculation failed: ${error.message}`); - // Return empty balances on error to prevent adapter from breaking - } - - return balances; -} - - -module.exports = { - methodology: "TVL is calculated by multiplying the circulating supply of CANA tokens (total supply minus authorized issuer balance) by their NAV price (in USDT terms). CANA represents tokenized California compliance carbon credits.", - doublecounted: false, // Ensures accurate TVL accounting across DeFi - start: '2025-06-20', // Jun-20-2025 07:48:47 PM +UTC - ethereum: { - tvl: tvl - }, - hallmarks: [ - [1750651727, "CANA Protocol Launch"], // Jun-20-2025 07:48:47 PM +UTC - [1752217391, "First Token Issuance"], // Jul-10-2025 04:03:11 PM UTC - // Add other important events in your protocol's history - // Format: [timestamp, "Description"] - ] -}; diff --git a/projects/canary/index.js b/projects/canary/index.js deleted file mode 100644 index acee974f3e5..00000000000 --- a/projects/canary/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { staking } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens'); - -const contracts = { - avax: { - factory: "0xCFBA329d49C24b70F3a8b9CC0853493d4645436b", - cnr: "0x8D88e48465F30Acfb8daC0b3E35c9D6D7d36abaf", - stakingContract: "0x39124Af473501Ccd83a5791eA1eFBc2e6dd78f10", - }, - scroll: { - factory: "0x8D88e48465F30Acfb8daC0b3E35c9D6D7d36abaf", - }, -}; - -module.exports = { - misrepresentedTokens: true, - avax:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.avax.factory, }), - staking: staking(contracts.avax.stakingContract, contracts.avax.cnr), - }, - scroll:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.scroll.factory, }), - }, -} diff --git a/projects/canaryprotocol/index.js b/projects/canaryprotocol/index.js deleted file mode 100644 index dc9df297e37..00000000000 --- a/projects/canaryprotocol/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -module.exports = { - start: '2025-02-17', // February 17, 2025 10:32:30 UTC - methodology: "The combined TVL all vaults", -} - -const config = { - plume: { factory: '0xbe3c7Bbc504EA41c21D3810c340Cd15624a3cF59', fromBlock: 357721 }, - plume_mainnet: { factory: '0x5584DC09B1E57628a1A32872fC689f99F02B0AA1', fromBlock: 43336 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event VaultCreated(address indexed underlying, address indexed vault)', fromBlock, }) - const tokensAndOwners = logs.map(log => [log.underlying, log.vault]) - return api.sumTokens({ tokensAndOwners }) - } - } -}) - -module.exports.plume.tvl = () => ({}) diff --git a/projects/candle/index.js b/projects/candle/index.js deleted file mode 100644 index 5b9a90fd0e7..00000000000 --- a/projects/candle/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { stakings } = require("../helper/staking"); -const stakingContracts = [ - // stakingContract1 = - "0xDE6d8C4B6ee674EB8d9c4652eE7456E70D9d24B9", - // stakingContract2 - -]; - - -const USDC_CNDL_UNIV2 = "0x65a364c98aa6554932b551471e7873d9617047d4"; -const CNDL = "0x3D97EdB1c1D87C0cBf098a0D2230d7380d4b1432"; - - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(stakingContracts, CNDL), - pool2: stakings(stakingContracts, [USDC_CNDL_UNIV2]), - tvl: () => ({}), - }, - // candle: { - // staking: stakings(stakingContracts, CNDL), - // pool2: pool2s(stakingContracts, [USDC_CNDL_UNIV2]), - // tvl: () => ({}), - // }, - methodology: "Counts liquidty on the staking and pool2s only", - -}; - -module.exports.deadFrom = '2022-05-25' \ No newline at end of file diff --git a/projects/candycity/index.js b/projects/candycity/index.js deleted file mode 100644 index c4926a75681..00000000000 --- a/projects/candycity/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { staking, } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') - -const chainTvl = getUniTVL({ - factory: '0x84343b84EEd78228CCFB65EAdEe7659F246023bf', - useDefaultCoreAssets: true -}) - -const CANDY_TOKEN = '0x06C04B0AD236e7Ca3B3189b1d049FE80109C7977'; - -const STAKING_CONTRACTS = [ - '0xDAf7c0e2882818b46c36AdBCe95399821Eca08F8', // masterchef - '0x8FEf43b1f3046F8f58A76c64aD01Bc8d82ff0ad1', // candy vault - '0xA46C4a3428a5E9B5C84A4457215D98BC8DC17AbB', // candy fixed nft staking pool - '0xCa207941946218126BD7BBe44C5d457753490b4A', // candy shared nft staking pool - '0x7CeA583ea310b3A8a72Ed42B3364aff16d24B3A2', // candy lock - '0xE56C1A8D4E90d82BA06F3f49efEc69f736a32070', // candy => wcro pool - '0xc568Ce4C714c5Ec819eA8F52596a6Fd9523A2B81', // candy => warz pool, -]; - -const VESTING_CONTRACTS = [ - '0x427f1230A547566a51F5Ffd5698BB65c06acA2D2', // candy vesting -] - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x84343b84EEd78228CCFB65EAdEe7659F246023bf) is used to find the LP pairs. TVL is equal to the liquidity on the AMM and the candy tokens in the staking pools / vault / vesting contract / lock contract.", - cronos: { - tvl: chainTvl, - staking: staking(STAKING_CONTRACTS, CANDY_TOKEN), - vesting: staking(VESTING_CONTRACTS, CANDY_TOKEN), - }, -} \ No newline at end of file diff --git a/projects/candyswap/index.js b/projects/candyswap/index.js deleted file mode 100644 index e0cbe2bb915..00000000000 --- a/projects/candyswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('meer', '0x2484E167b61c819a167D1219C187C3eE364A4F64') \ No newline at end of file diff --git a/projects/canopy/index.js b/projects/canopy/index.js deleted file mode 100644 index 4c06a10e068..00000000000 --- a/projects/canopy/index.js +++ /dev/null @@ -1,243 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { function_view } = require("../helper/chain/aptos"); - -const canopyCoreAddress = "b10bd32b3979c9d04272c769d9ef52afbc6edc4bf03982a9e326b96ac25e7f2d"; // Canopy Core Vaults Module - -const canopyLiquidswapAddress = "968a2429f2544882a1743c51128fdf876ff03a25287d618743bde5b84a4fc00e"; // Canopy Liquidswap Vaults Module -const registryAddress = "e6ef7257c8d73c55c97507705e4aac1bcc740c648eb698db3b07895fff689f05"; // Registry for Liquidswap Vaults -const liquidswapV1Address = "4763c5cfde8517f48e930f7ece14806d75b98ce31b0b4eab99f49a067f5b5ef2"; // Liquidswap V1 Module - -const liquidswapV0_5PeripheryAddress = "0x97529f5d2d9c0b1b6595b731e70166ea5314ab8682af04d58040898b5b07bc90"; - -const moveCoinAddress = ADDRESSES.aptos.APT -const moveCoinFa = "0xa" - -const meridianPkg = "0xfbdb3da73efcfa742d542f152d65fc6da7b55dee864cd66475213e4be18c9d54"; - -async function getDualAssetBalances(pkgAddress, instanceAddresses, api) { - - for (const dualAssetInstanceAddress of instanceAddresses) { - - const base_asset_balances = await function_view({ - functionStr: `${pkgAddress}::dual_asset_base_deployer::last_recorded_base_asset_balances`, - type_arguments: [], - args: [dualAssetInstanceAddress], - chain: 'move' - }); - - const baseAssets = await function_view({ - functionStr: `${pkgAddress}::dual_asset_base_deployer::base_assets`, - type_arguments: [], - args: [dualAssetInstanceAddress], - chain: 'move' - }); - - api.add(baseAssets[0].inner, base_asset_balances[0]); - api.add(baseAssets[1].inner, base_asset_balances[1]); - } - -} - -async function getSingleAssetBalances(pkgAddress, instanceAddresses, api) { - - for (const singleAssetInstanceAddress of instanceAddresses) { - - const total_unclaimed_contributions = await function_view({ - functionStr: `${pkgAddress}::single_asset_base_deployer::total_unclaimed_contributions`, - type_arguments: [], - args: [singleAssetInstanceAddress], - chain: 'move' - }); - - const baseAssets = await function_view({ - functionStr: `${pkgAddress}::single_asset_base_deployer::base_asset`, - type_arguments: [], - args: [singleAssetInstanceAddress], - chain: 'move' - }); - - api.add(baseAssets.inner, total_unclaimed_contributions); - } - -} - -async function getCanopyCoreVaults(address, pageSize = 100) { - let offset = 0; - let allVaults = []; - let hasMoreVaults = true; - - while (hasMoreVaults) { - const response = await function_view({ - functionStr: `${address}::vault::vaults_view`, - type_arguments: [], - args: [offset.toString(), pageSize.toString()], - chain: 'move' - }); - - if (response.vaults && response.vaults.length > 0) { - allVaults = allVaults.concat(response.vaults); - offset += response.vaults.length; - // If we got fewer vaults than the page size, we've reached the end - if (response.vaults.length < pageSize) { - hasMoreVaults = false; - } - } else { - // No more vaults or empty response - hasMoreVaults = false; - } - // console.log('allVaults', allVaults.length). - } - - return { vaults: allVaults }; -} -async function getCanopyLiquidswapVault(vaultArgs) { - return function_view({ - functionStr: `${canopyLiquidswapAddress}::vault::get_total_amounts_view`, - type_arguments: [vaultArgs.token_x_type, vaultArgs.token_y_type, vaultArgs.bin_step_type], - args: [vaultArgs.vault_address], - chain: 'move' - }) -} - -async function getCanopyLiquidswapVaultsMetadata() { - return function_view({ - functionStr: `${registryAddress}::vaults_registry::get_all_recognized_vaults`, - type_arguments: [], - args: [], - chain: 'move' - }) -} - -const wrappedCache = {} - -async function getWrappedFA(coin) { - if (coin === moveCoinAddress) return moveCoinFa; - let result = wrappedCache[coin]; - if (!result) - wrappedCache[coin] = function_view({ - functionStr: `${liquidswapV1Address}::wrapper::get_fa_metadata`, - type_arguments: [coin], - args: [], - chain: 'move' - }); - return (await wrappedCache[coin]).inner; -} - -// This function parses the paired_coin_type string to extract token types and curve type -function parseLiquidswapLPType(lpTypeString) { - // Extract the content between < and > - const genericPart = lpTypeString.match(/<(.+)>/)[1]; - - // Split by comma and trim to get the three parts - const parts = genericPart.split(',').map(part => part.trim()); - - return { - token0: parts[0], - token1: parts[1], - curveType: parts[2] - }; -} - - -module.exports = { - timetravel: false, - methodology: - "Aggregates TVL for Canopy protocol.", - move: { - tvl: async (api) => { - const vaultsInfo = await getCanopyCoreVaults(canopyCoreAddress) - for (const vault of vaultsInfo.vaults) { - const asset = vault.asset_address - const balance = vault.total_asset; - const asset_name = vault.asset_name; - - // Handle Meridian LP tokens - if (asset_name === "Meridian LP Token" && balance !== '0') { - // Get the underlying assets in the pool - const poolAssetsMetadata = await function_view({ - functionStr: `${meridianPkg}::pool::pool_assets_metadata`, - type_arguments: [], - args: [asset], - chain: 'move' - }); - - // Preview what we'd get if we removed liquidity - const removeLiquidityPreview = await function_view({ - functionStr: `${meridianPkg}::pool::preview_remove_liquidity`, - type_arguments: [], - args: [asset, asset, balance], - chain: 'move' - }); - - // Add each underlying asset to the TVL - for (let i = 0; i < poolAssetsMetadata.length; i++) { - const assetMetadata = poolAssetsMetadata[i]; - const assetAmount = removeLiquidityPreview.withdrawn_amounts[i]; - // Get the FA (fungible asset) address if necessary - api.add(assetMetadata.inner, assetAmount); - } - continue; - } - - // Handle Liquidswap V0.5 LP tokens - if (asset_name && asset_name.startsWith("LS05")) { - // Get the paired coin type string - const pairedCoinType = vault.paired_coin_type?.vec?.[0]; - if (!pairedCoinType) { - throw new Error("Missing paired_coin_type for Liquidswap LP token"); - } - - // Parse the LP type string to extract token types and curve type - const lpTypeInfo = parseLiquidswapLPType(pairedCoinType); - if (!lpTypeInfo) { - throw new Error("Failed to parse LP type info"); - } - - // console.log("LP Type Info:", lpTypeInfo); - - // Get the reserves for the LP token - const reserves = await function_view({ - functionStr: `${liquidswapV0_5PeripheryAddress}::views::get_reserves_for_lp_coins`, - type_arguments: [ - lpTypeInfo.token0, - lpTypeInfo.token1, - lpTypeInfo.curveType - ], - args: [balance, 5], // 5 is the LS version for V0.5 - chain: 'move' - }); - - // Extract the reserve values - const reserve0 = reserves[0]; - const reserve1 = reserves[1]; - - // Get the FA addresses for both tokens - const token0FA = await getWrappedFA(lpTypeInfo.token0); - const token1FA = await getWrappedFA(lpTypeInfo.token1); - - // Add the reserves to the TVL - api.add(token0FA, reserve0); - api.add(token1FA, reserve1); - - // console.log(`Added reserves for ${asset_name}: ${token0FA}=${reserve0}, ${token1FA}=${reserve1}`); - continue; - } - - // For regular assets, add them directly - api.add(asset, balance); - } - - // Process Canopy Liquidswap vaults - const vaultsMetadata = await getCanopyLiquidswapVaultsMetadata(registryAddress); - for (const vault of vaultsMetadata) { - const vaultInfo = await getCanopyLiquidswapVault(vault) - const assetX = await getWrappedFA(vault.token_x_type) - const assetY = await getWrappedFA(vault.token_y_type) - const balanceX = vaultInfo[0] - const balanceY = vaultInfo[1] - api.add(assetX, balanceX); - api.add(assetY, balanceY); - } - }, - }, -}; \ No newline at end of file diff --git a/projects/canto-dex/index.js b/projects/canto-dex/index.js deleted file mode 100644 index 399ec064586..00000000000 --- a/projects/canto-dex/index.js +++ /dev/null @@ -1,14 +0,0 @@ - - -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - canto: { - tvl: getUniTVL({ - factory: '0xE387067f12561e579C5f7d4294f51867E0c1cFba', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - } -}; \ No newline at end of file diff --git a/projects/canto-forte/index.js b/projects/canto-forte/index.js deleted file mode 100644 index c3a3613a3d3..00000000000 --- a/projects/canto-forte/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - canto: { - tvl: getUniTVL({ - factory: '0x759e390D946249c63e0A1d8a810C5A577a591719', - useDefaultCoreAssets: true, - }) - } -} \ No newline at end of file diff --git a/projects/canto-lending/index.js b/projects/canto-lending/index.js deleted file mode 100644 index a8f26b9abb4..00000000000 --- a/projects/canto-lending/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { compoundExports } = require('../helper/compound') - -const addresses = { - CantoNoteLP: '0x1D20635535307208919f0b67c3B2065965A85aA9', - CantoAtomLP: '0x30838619C55B787BafC3A4cD9aEa851C1cfB7b19', - NoteUSDTLP: '0x35DB1f3a6A6F07f82C76fCC415dB6cFB1a7df833', - NoteUSDCLP: '0x9571997a66D63958e1B3De9647C22bD6b9e7228c', - CantoETHLP: '0x216400ba362d8FCE640085755e47075109718C8B', - Comptroller: '0x5E23dC409Fc2F832f83CEc191E245A191a4bCc5C', - Note: ADDRESSES.canto.NOTE, - USDC: ADDRESSES.functionx.WFX, - USDT: ADDRESSES.functionx.PUNDIX, - ATOM: ADDRESSES.functionx.USDT, - ETH: ADDRESSES.functionx.PURSE, - WCANTO: ADDRESSES.canto.WCANTO, - CCANTO: '0xb65ec550ff356eca6150f733ba9b954b2e0ca488', - NOTE_WCANTO: '0x1d20635535307208919f0b67c3b2065965a85aa9', - ETH_WCANTO: '0x216400ba362d8fce640085755e47075109718c8b', - WCANT_ATOM: '0x30838619c55b787bafc3a4cd9aea851c1cfb7b19', - NOTE_USDC: '0x9571997a66d63958e1b3de9647c22bd6b9e7228c', - NOTE_USDT: '0x35db1f3a6a6f07f82c76fcc415db6cfb1a7df833', - // PriceFeed: '0xa252eEE9BDe830Ca4793F054B506587027825a8e' -} - -const chain = 'canto' -const compoundData = compoundExports(addresses.Comptroller, addresses.CCANTO, addresses.WCANTO, { blacklistedTokens:[ - addresses.Note, - addresses.NOTE_WCANTO, - addresses.ETH_WCANTO, - addresses.WCANT_ATOM, - addresses.NOTE_USDC, - addresses.NOTE_USDT, - ] }) - -module.exports = { - hallmarks: [ - [1661417246, "Remove canto dex LPs from tvl computation"] - ], - canto: compoundData -} diff --git a/projects/cantohm/index.js b/projects/cantohm/index.js deleted file mode 100644 index ffedffea922..00000000000 --- a/projects/cantohm/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unknownTokens"); -const lps = [ - '0x2382994D8A15d2dd2aAE10561688Ef6cbe10CB8C', - '0x5d3B693C00140E0cA2826C4AbC9E38b2E8CCd8f2', - '0x1D20635535307208919f0b67c3B2065965A85aA9', -] - -module.exports = { - misrepresentedTokens: true, - canto: { - tvl: sumTokensExport({ - owner: '0xB8Ce90A08bdAdd3e6e6cD3173c0661FA94Aa81c5', - tokens: [ - ADDRESSES.canto.NOTE, - ADDRESSES.canto.WCANTO, - ...lps, - ], - useDefaultCoreAssets: true, - }), - staking: sumTokensExport({ - owner: '0x6bb55835407Aa076B9028Cd8498788659346828e', - tokens: [ - '0x533C0f08BE45eaaC821392B85E67Fb0c7DC2cab7', - ], - lps, - useDefaultCoreAssets: true, - }), - } -} diff --git a/projects/cantoswap/index.js b/projects/cantoswap/index.js deleted file mode 100644 index f2544d876bb..00000000000 --- a/projects/cantoswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - canto: { - tvl: getUniTVL({ - factory: "0x6eE19E5e5F1018c26bDa107cB2CCd9dA461A698c", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/cap-money/index.js b/projects/cap-money/index.js deleted file mode 100644 index da9ee7b3331..00000000000 --- a/projects/cap-money/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const { arrayZip } = require('./lib/utils'); -const { capABI, capConfig } = require('./lib/configs') -const { fetchAssetAddresses, fetchAgentConfigs } = require('./lib/helpers') - -const chain = 'ethereum'; - -const tvl = async (api) => { - const tokens = capConfig[chain].tokens; - const infra = capConfig[chain].infra; - - const assetAddresses = await fetchAssetAddresses(api, chain) - const agentConfigs = await fetchAgentConfigs(api, chain) - - const assetAvailableBalancesResults = await api.multiCall({ - abi: capABI.Vault.availableBalance, - calls: assetAddresses.map(asset => ({ - target: tokens.cUSD.address, - params: [asset] - })) - }) - const coverageResults = await api.multiCall({ - abi: capABI.SymbioticNetworkMiddleware.coverageByVault, - calls: agentConfigs.map(agent => ({ - target: agent.networkMiddleware, - params: [agent.network, agent.agent, agent.vault, infra.oracle.address, api.timestamp] - })) - }) - - for (const [asset, availableBalance] of arrayZip(assetAddresses, assetAvailableBalancesResults)) { - api.add(asset, availableBalance) - } - for (const [agent, coverage] of arrayZip(agentConfigs, coverageResults)) { - api.add(agent.vaultCollateral, coverage[1]) - } -} - -const borrowed = async (api) => { - const infra = capConfig[chain].infra; - - const assetAddresses = await fetchAssetAddresses(api, chain) - const agentConfigs = await fetchAgentConfigs(api, chain) - - const agentAndAsset = agentConfigs.map(({ agent }) => assetAddresses.map(asset => ({ - agent: agent, - asset: asset, - }))).flat() - - const results = await api.batchCall( - agentAndAsset.map(({ agent, asset }) => ({ - abi: capABI.Lender.debt, - target: infra.lender.address, - params: [agent, asset] - })) - ); - - for (const [{ asset }, debt] of arrayZip(agentAndAsset, results)) { - api.add(asset, debt) - } -} - -module.exports = { - methodology: 'count the total supplied assets on capToken vaults and the total delegated assets on networks (symbiotic, eigenlayer, etc.)', - start: 1000235, - ethereum: { - tvl, - borrowed, - } -}; diff --git a/projects/cap-money/lib/configs.js b/projects/cap-money/lib/configs.js deleted file mode 100644 index 6ade3718df1..00000000000 --- a/projects/cap-money/lib/configs.js +++ /dev/null @@ -1,79 +0,0 @@ - -const capConfig = { - ethereum: { - fromBlock: 22867447, - fromTime: 1751892887, - infra: { - oracle: { - address: '0xcD7f45566bc0E7303fB92A93969BB4D3f6e662bb', - fromBlock: 22867447, - }, - lender: { - address: '0x15622c3dbbc5614E6DFa9446603c1779647f01FC', - fromBlock: 22867447, - }, - delegation: { - address: '0xF3E3Eae671000612CE3Fd15e1019154C1a4d693F', - fromBlock: 22867447, - }, - }, - tokens: { - cUSD: { - id: 'cUSD', - coingeckoId: 'cap-money-c-usd', - decimals: 18, - address: '0xcCcc62962d17b8914c62D74FfB843d73B2a3cccC', - fromBlock: 22874015, - }, - stcUSD: { - id: 'stcUSD', - coingeckoId: 'cap-money-st-c-usd', - decimals: 18, - address: '0x88887bE419578051FF9F4eb6C858A951921D8888', - fromBlock: 22874056, - }, - }, - symbiotic: { - // no good way to fetch it on chain? - networkMiddlewareToNetwork: { - // this one is deprecated - '0x8c9140fe6650e56a0a07e86455d745f8f7843b6d': '0x44f7e678e8412dbef1fd930f60af2bd125095962', - - // this one is the new one (and default) - '0x09a3976d8d63728d20dcdfee1e531c206ba91225': '0x98e52ea7578f2088c152e81b17a9a459bf089f2a', - default: '0x98e52ea7578f2088c152e81b17a9a459bf089f2a', - } - } - }, -}; - -const capABI = { - Vault: { - AddAssetEvent: 'event AddAsset(address asset)', - totalSupplies: 'function totalSupplies(address _token) external view returns (uint256 totalSupply)', - availableBalance: 'function availableBalance(address _asset) external view returns (uint256 amount)', - }, - Lender: { - ReserveAssetAddedEvent: 'event ReserveAssetAdded(address indexed asset, address vault, address debtToken, address interestReceiver, uint256 id)', - debt: 'function debt(address _agent, address _asset) external view returns (uint256 totalDebt)', - }, - Delegation: { - AddAgentEvent: 'event AddAgent(address agent, address network, uint256 ltv, uint256 liquidationThreshold)', - }, - SymbioticNetworkMiddleware: { - coverageByVault: 'function coverageByVault(address _network, address _agent, address _vault, address _oracle, uint48 _timestamp) public view returns (uint256 collateralValue, uint256 collateral)', - vaults: 'function vaults(address _agent) external view returns (address vaultAddress)', - } -} - -const symbioticABI = { - Vault: { - collateral: 'function collateral() public view returns (address)', - } -} - -module.exports = { - capConfig, - capABI, - symbioticABI, -} diff --git a/projects/cap-money/lib/helpers.js b/projects/cap-money/lib/helpers.js deleted file mode 100644 index 7440cff4295..00000000000 --- a/projects/cap-money/lib/helpers.js +++ /dev/null @@ -1,79 +0,0 @@ -const { getLogs2 } = require("../../helper/cache/getLogs"); -const { capConfig, capABI, symbioticABI } = require("./configs"); -const { arrayZip } = require("./utils"); - -const fetchAgentConfigs = async (api, chain) => { - const infra = capConfig[chain].infra; - const networkMiddlewareToNetwork = capConfig[chain].symbiotic.networkMiddlewareToNetwork; - - const agentAndNetworkMiddleware = await getLogs2({ - api, - onlyArgs: false, // need the blocknumber - eventAbi: capABI.Delegation.AddAgentEvent, - target: infra.delegation.address, - fromBlock: infra.delegation.fromBlock, - transform: (i) => ({ - agent: i.args.agent.toLowerCase(), - networkMiddleware: i.args.network.toLowerCase(), - fromBlock: i.blockNumber - }) - }) - - const networks = agentAndNetworkMiddleware.map(({ networkMiddleware }) => networkMiddlewareToNetwork[networkMiddleware] ?? networkMiddlewareToNetwork.default) - - const vaults = await api.multiCall({ - abi: capABI.SymbioticNetworkMiddleware.vaults, - calls: agentAndNetworkMiddleware.map(({ agent, networkMiddleware }) => ({ - target: networkMiddleware, - params: [agent] - })) - }); - - const vaultsCollateral = await api.multiCall({ - abi: symbioticABI.Vault.collateral, - calls: vaults.map((vault) => ({ - target: vault - })) - }); - - const agentConfigs = arrayZip(agentAndNetworkMiddleware, networks, vaults, vaultsCollateral) - .map(([config, network, vault, vaultCollateral]) => ({ - ...config, - network: network.toLowerCase(), - vault: vault.toLowerCase(), - vaultCollateral: vaultCollateral.toLowerCase() - })); - - return agentConfigs; -} - -const fetchAssetAddresses = async (api, chain) => { - const infra = capConfig[chain].infra; - const tokens = capConfig[chain].tokens; - const lender = infra.lender; - - const cUSDVaultAssetAddresses = await getLogs2({ - api, - eventAbi: capABI.Vault.AddAssetEvent, - target: tokens.cUSD.address, - fromBlock: tokens.cUSD.fromBlock, - transform: (i) => i.asset.toLowerCase(), - }) - - const lenderReserveAssetAddresses = await getLogs2({ - api, - eventAbi: capABI.Lender.ReserveAssetAddedEvent, - target: lender.address, - fromBlock: lender.fromBlock, - transform: (i) => i.asset.toLowerCase(), - }) - - return [...new Set([...cUSDVaultAssetAddresses, ...lenderReserveAssetAddresses])] -} - - -module.exports = { - fetchAgentConfigs, - fetchAssetAddresses, -} - diff --git a/projects/cap-money/lib/utils.js b/projects/cap-money/lib/utils.js deleted file mode 100644 index 7f0098b3b6e..00000000000 --- a/projects/cap-money/lib/utils.js +++ /dev/null @@ -1,8 +0,0 @@ -const arrayZip = (...arrays) => { - const maxLength = Math.max(...arrays.map(a => a.length)) - return Array.from({ length: maxLength }, (_, i) => arrays.map(a => a[i])) -} - -module.exports = { - arrayZip, -} \ No newline at end of file diff --git a/projects/cap-v4/index.js b/projects/cap-v4/index.js deleted file mode 100644 index 2b1b97f572a..00000000000 --- a/projects/cap-v4/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const vault = "0xba9736a3fc948f8c489a7e975114eaf2b7f1c3fc"; -const fundStore = "0xe00975A0D7def3FAE93832cc72D5ff50432fc857"; -const cap = "0x031d35296154279dc1984dcd93e392b1f946737b"; - -const fundStoreBase = "0x8508ea3bf4a8ec12cf6a6799421b725300f9a6dd" - - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ owners: [vault, fundStore], tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC,//USDC - ]}), - staking: sumTokensExport({ owners: [vault, fundStore], tokens: [cap]}) - }, - base: { - tvl: sumTokensExport({ owners: [fundStoreBase], tokens: [ - nullAddress, - ADDRESSES.base.WETH,//WETH - ]}), - }, -} diff --git a/projects/cap/index.js b/projects/cap/index.js deleted file mode 100644 index 8b16d2a118f..00000000000 --- a/projects/cap/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') - -const contracts = { - "treasuryV2": "0x1058AFe66BB5b79C295CCCE51016586949Bc4e8d", - "trading1": "0x9BC357bc5b312AaCD41a84F3C687F031B8786853", - "trading2": "0xA55Eee92a46A50A4C65908F28A0BE966D3e71633", - "trading3": "0xCAEc650502F15c1a6bFf1C2288fC8F819776B2eC", - "trading4": "0xbEd32937D8A5D1421241F52809908f1a17D75bDb", - "staking": "0xC8CDd2Ea6A5149ced1F2d225D16a775ee081C67D", - "ethPool": "0xE0cCd451BB57851c1B2172c07d8b4A7c6952a54e", - - "usdcPool": "0x958cc92297e6F087f41A86125BA8E121F0FbEcF2", - "usdcPool2": "0xf16033d20adda47dc99ea291d0f4c4fef2ff47af", -}; -const cap = "0x031d35296154279dc1984dcd93e392b1f946737b"; -const usdc = ADDRESSES.arbitrum.USDC; - -module.exports = { - methodology: "ETH locked on trading contracts", - arbitrum: { - staking: sumTokensExport({ owner: contracts.staking, tokens: [ cap ]}), - tvl: sumTokensExport({ tokensAndOwners: [ - [nullAddress, contracts.trading1], - [nullAddress, contracts.trading2], - [nullAddress, contracts.trading3], - [nullAddress, contracts.trading4], - [nullAddress, contracts.ethPool], - [usdc, contracts.usdcPool], - [usdc, contracts.usdcPool2], - ]}), - } -}; \ No newline at end of file diff --git a/projects/capital-dao/index.js b/projects/capital-dao/index.js deleted file mode 100644 index 077b13ebb4b..00000000000 --- a/projects/capital-dao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const {staking} = require('../helper/staking') -const {pool2} = require('../helper/pool2') - -const cdsAddress = '0x3c48Ca59bf2699E51d4974d4B6D284AE52076e5e'; -const lpWethCds = '0x0be902716176d66364f1c2ecf25829a6d95c5bee'; -const stakingAddress = '0x0a6bfa6aaaef29cbb6c9e25961cc01849b5c97eb'; - -module.exports = { - methodology: "TVL includes all farms in staking and swap contract", - ethereum:{ - tvl: async ()=>({}), - staking: staking(stakingAddress, cdsAddress), - pool2: pool2(stakingAddress, lpWethCds) - } -} diff --git a/projects/capitaldex/index.js b/projects/capitaldex/index.js deleted file mode 100644 index 073039552e8..00000000000 --- a/projects/capitaldex/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address in Ethereum(0x03407772F5EBFB9B10Df007A2DD6FFf4EdE47B53) and in Curio(0xc36f5180b181f1b949e0ff4d65b258e0987f443f) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - ethereum: { - tvl: getUniTVL({ factory: '0x03407772F5EBFB9B10Df007A2DD6FFf4EdE47B53', useDefaultCoreAssets: true }), - }, - curio: { - // tvl: getUniTVL({ factory: '0xc36f5180b181f1b949e0ff4d65b258e0987f443f', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/capricorn/index.js b/projects/capricorn/index.js deleted file mode 100644 index 65dfd139ef1..00000000000 --- a/projects/capricorn/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - cube: { - /* tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x33CB4150f3ADFCD92fbFA3309823A2a242bF280f', - }) */ - tvl: () => ({}) - } -}; \ No newline at end of file diff --git a/projects/capy-finance/index.js b/projects/capy-finance/index.js deleted file mode 100644 index 08a07e461dc..00000000000 --- a/projects/capy-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const CAPY_STAKING_CONTRACT = '0x67D171A673FfDBd5BBce01dE1489f9E57F3d911b'; -const CAPY_RESTAKING_CONTRACT = '0x12178d2B86031dD293274A0E25c8908521F3d27C'; - -async function tvl(api) { - const contracts = [CAPY_STAKING_CONTRACT, CAPY_RESTAKING_CONTRACT] - const tokens = await api.multiCall({ abi: 'address[]:getSupportedTokens', calls: contracts }) - const ownerTokens = contracts.map((contract, i) => [tokens[i], contract]) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - methodology: 'The TVL of the Capy Finance project in USD.', - bsquared: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/capybara-exchange/config.js b/projects/capybara-exchange/config.js deleted file mode 100644 index 9d552c09fc0..00000000000 --- a/projects/capybara-exchange/config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - klaytn: { - master: "0x3CA30C862769b5de7987D2E2db4c1A72800A1Da1", - }, -}; diff --git a/projects/capybara-exchange/index.js b/projects/capybara-exchange/index.js deleted file mode 100644 index 4f34cd275ce..00000000000 --- a/projects/capybara-exchange/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const config = require("./config"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -Object.keys(config).forEach((chain) => { - const { master } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const poolInfos = await api.fetchList({ - // Reference: https://github.com/wombat-exchange/v1-core/blob/5887ec5e1f1cbd067eaee8aee49fcb857fb867c5/contracts/wombat-governance/MasterWombatV3.sol#L587 - lengthAbi: 'poolLength', - itemAbi: "function poolInfo(uint256) external view returns (address asset, uint96, address, uint256, uint104, uint104, uint40)", - target: master, - }); - // Reference: https://github.com/wombat-exchange/v1-core/blob/5887ec5e1f1cbd067eaee8aee49fcb857fb867c5/contracts/wombat-core/asset/Asset.sol#L4 - const assets = poolInfos.map(i => i.asset); - const uTokens = await api.multiCall({ abi: 'address:underlyingToken', calls: assets }) - - return sumTokens2({ api, tokensAndOwners2: [uTokens, assets], }); - }, - }; -}); diff --git a/projects/capybara-perp/index.js b/projects/capybara-perp/index.js deleted file mode 100644 index 27ea0a80f52..00000000000 --- a/projects/capybara-perp/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - klaytn: { - tvl: sumTokensExport({ owners: ['0xeB23e0a5065D96FCa71DE240C6b302B9Da14Ac0e', '0x94b231dD60E64ba8bCC72892cE4B4B9A5004730d'], tokens: [ADDRESSES.klaytn.stKaia] }), - } -} diff --git a/projects/capyfi/index.js b/projects/capyfi/index.js deleted file mode 100644 index 389c9a04709..00000000000 --- a/projects/capyfi/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports.lac = compoundExports2({ comptroller: '0x123Abe3A273FDBCeC7fc0EBedc05AaeF4eE63060', cether: '0x465ebfceb3953e2922b686f2b4006173664d16ce'}) -module.exports.ethereum = compoundExports2({ comptroller: '0x0b9af1fd73885aD52680A1aeAa7A3f17AC702afA', cether: '0x37DE57183491Fa9745d8Fa5DCd950f0c3a4645c9', blacklistedTokens: ['0xbaa6bc4e24686d710b9318b49b0bb16ec7c46bfa']}) -module.exports.wc = compoundExports2({ comptroller: '0x589d63300976759a0fc74ea6fA7D951f581252D7', cether: '0xaAd91abe333c4536FFbF02b83daBaB49C9Aa23ed'}) diff --git a/projects/carbon/index.js b/projects/carbon/index.js deleted file mode 100644 index b4380883977..00000000000 --- a/projects/carbon/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require('../helper/pool2') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -const stakingETHContract = "0x27F0408729dCC6A4672e1062f5003D2a07E4E10D"; - -const stakingCARBONContract = "0x2C5058325373d02Dfd6c08E48d91FcAf8fD49f45"; -const CARBON = "0xfa42da1bd08341537a44a4ca9d236d1c00a98b40"; - -const stakingPool2Contracts = [ - //stakingCARBON_WETHContract - "0x701e594B58b183b93C1ebaE437fBC9a9A3eC97d7", - //stakingCARBON_NYANContract - "0x45acd6Af27B2506ad68C0fEA9F597D6eE6818722", -]; -const lpAddresses = [ - //CARBON_WETH_SLP - "0x08da83452Ae158c3F348d4e0789b7A78989f34eE", - //CRABON_NYAN_SLP - "0x89450F6C7d7f2c5971E9Ee28e94d8b199d17f673", -]; - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - staking: staking(stakingCARBONContract, CARBON), - pool2: pool2(stakingPool2Contracts, lpAddresses), - tvl: sumTokensExport({tokensAndOwners: [[nullAddress, stakingETHContract]]}), - }, - methodology: - "Counts as TVL the ETH asset deposited through StakingETH Contract, and we count Staking and Pool2 parts in the same way", -}; diff --git a/projects/carbondefi/index.js b/projects/carbondefi/index.js deleted file mode 100644 index 5af98069a25..00000000000 --- a/projects/carbondefi/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - ethereum: { - fromBlock: 17087375, - controller: "0xC537e898CD774e2dCBa3B14Ea6f34C93d5eA45e1", - }, - sei: { - fromBlock: 79146720, - controller: "0xe4816658ad10bF215053C533cceAe3f59e1f1087", - }, - celo: { - fromBlock: 26828280, - controller: "0x6619871118D144c1c28eC3b23036FC1f0829ed3a", - gasToken: ADDRESSES.celo.CELO, - }, - coti: { - fromBlock: 47878, - controller: "0x59f21012B2E9BA67ce6a7605E74F945D0D4C84EA", - }, - tac: { - fromBlock: 975648, - controller: "0xA4682A2A5Fe02feFF8Bd200240A41AD0E6EaF8d5", - }, -}; - -Object.keys(config).forEach((chain) => { - const { controller, fromBlock, gasToken } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const pairs = await api.call({ - target:controller, - abi: 'function pairs() view returns (address[2][])', - }) - const tokens = pairs.filter(pair => !gasToken || (pair[0] !== gasToken && pair[1] !== gasToken)).flat() - - return sumTokens2({ api, owner: controller, tokens }); - }, - }; -}); diff --git a/projects/carbonswap/index.js b/projects/carbonswap/index.js deleted file mode 100644 index 418659b0a1a..00000000000 --- a/projects/carbonswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (0x17854c8d5a41d5A89B275386E24B2F38FD0AfbDd) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - energyweb: { - tvl: getUniTVL({ - factory: '0x17854c8d5a41d5A89B275386E24B2F38FD0AfbDd', - useDefaultCoreAssets: true, - }) - } -}; diff --git a/projects/cardstarter/index.js b/projects/cardstarter/index.js deleted file mode 100644 index 134614eb7c1..00000000000 --- a/projects/cardstarter/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require('../helper/staking'); - -const cardsStakeAddr = "0xad2fd18932c39fa5085429853e1f0d39a65a438e"; -const lpStakeAddr = "0x7Dca3372A0a236A305FdEC3D48d52B09dff82E14"; -const cardsAddr = "0x3d6f0dea3ac3c607b3998e6ce14b6350721752d9"; - -//cards, c3, and gero in that order -const lpPoolAddrs = ["0x94ae6d2390680ac6e6ee6069be42067d6ad72e2a", "0x984A3eAB3Cf2Fc2b4ca6E4A3768624a8272fe2a3", - "0x5b6be21c4d1f2c1c5A3d6Af3599f3BB0a785AE2F"]; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(cardsStakeAddr, cardsAddr), - pool2: staking([lpStakeAddr], lpPoolAddrs), - } -} diff --git a/projects/caribou-finance/index.js b/projects/caribou-finance/index.js deleted file mode 100644 index 15cc338e729..00000000000 --- a/projects/caribou-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef") - -const token = "0x2dBa3ea510cf7bFCCc9c185b7c9094d687ADE503"; -const masterchef = "0x23bd5312cE63AC23651112d3c9638C082aaeAf38"; - -module.exports = { - ...masterChefExports(masterchef, "fantom", token, false) -} \ No newline at end of file diff --git a/projects/carmine-options/abi.js b/projects/carmine-options/abi.js deleted file mode 100644 index ef639793018..00000000000 --- a/projects/carmine-options/abi.js +++ /dev/null @@ -1,43 +0,0 @@ -const abi = [ - { - "name": "get_all_lptoken_addresses", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "array_len", - "type": "felt" - }, - { - "name": "array", - "type": "felt*" - } - ], - "stateMutability": "view" - }, - { - "name": "get_underlying_token_address", - "type": "function", - "inputs": [ - { - "name": "lptoken_address", - "type": "felt" - } - ], - "outputs": [ - { - "name": "underlying_token_address_", - "type": "felt" - } - ], - "stateMutability": "view", - "customInput": 'address', - "customType": 'address', - }, -]; - -const objAbi = {}; - -abi.forEach((i) => (objAbi[i.name] = i)); - -module.exports = objAbi; diff --git a/projects/carmine-options/api.js b/projects/carmine-options/api.js deleted file mode 100644 index 2c6718b5ccc..00000000000 --- a/projects/carmine-options/api.js +++ /dev/null @@ -1,24 +0,0 @@ -const { call, multiCall, number, sumTokens, } = require("../helper/chain/starknet"); -const abi = require("./abi"); - -const legacyAmm = "0x076dbabc4293db346b0a56b29b6ea9fe18e93742c73f12348c8747ecfc1050aa"; -const amm = "0x047472e6755afc57ada9550b6a3ac93129cc4b5f98f51c73e0644d129fd208d9"; - -async function tvl(api) { - let legacyLpTokens = await call({ abi: abi.get_all_lptoken_addresses, target: legacyAmm, }) - let newLpTokens = await call({ abi: abi.get_all_lptoken_addresses, target: amm, }) - legacyLpTokens = number.bigNumberishArrayToHexadecimalStringArray(legacyLpTokens.array.toString().split(',')) - newLpTokens = number.bigNumberishArrayToHexadecimalStringArray(newLpTokens.array.toString().split(',')) - const legacyUnderlyings = await multiCall({ abi: abi.get_underlying_token_address, target: legacyAmm, calls: legacyLpTokens, }) - const underlyings = await multiCall({ abi: abi.get_underlying_token_address, target: amm, calls: newLpTokens, }) - const owners = [amm, legacyAmm]; - const tokens = [...legacyUnderlyings, ...underlyings] - return sumTokens({ owners, tokens, api, }) -} - -module.exports = { - methodology: 'Sums the unlocked capital and position of each pool.', - starknet: { - tvl, - }, -}; diff --git a/projects/carmine-options/index.js b/projects/carmine-options/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/carmine-options/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/carrot-lend/index.js b/projects/carrot-lend/index.js deleted file mode 100644 index 59e7a4ecd94..00000000000 --- a/projects/carrot-lend/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2 } = require("../helper/solana"); -const { wrappedI80F48toNumber } = require("./utils/conversion") - -const programId = 'C73nDAFn23RYwiFa6vtHshSbcg8x6BLYjw3bERJ3vHxf' - - -async function tvl() { - const provider = getProvider(); - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const banks = await program.account.bank.all() - - return sumTokens2({ - tokenAccounts: banks.map(i => i.account.liquidityVault.toString()), - }); -} - -async function borrowed(api) { - const provider = getProvider(); - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const banks = await program.account.bank.all() - - - for (const bank of banks) { - const totalLiabilityShares = wrappedI80F48toNumber(bank.account.totalLiabilityShares) - const liabilityShareValue = wrappedI80F48toNumber(bank.account.liabilityShareValue) - - api.add(bank.account.mint.toString(), liabilityShareValue * totalLiabilityShares); - - } -} - -module.exports = { - timetravel: false, - methodology: 'TVL consists of deposits made to the protocol, and borrowed tokens are counted.', - solana: { tvl, borrowed }, -} diff --git a/projects/carrot-lend/utils/conversion.js b/projects/carrot-lend/utils/conversion.js deleted file mode 100644 index b6fc9c7df04..00000000000 --- a/projects/carrot-lend/utils/conversion.js +++ /dev/null @@ -1,49 +0,0 @@ -const I80F48_FRACTIONAL_BYTES = 6; -const I80F48_TOTAL_BYTES = 16; -const I80F48_DIVISOR = 2n ** BigInt(8 * I80F48_FRACTIONAL_BYTES); - -function wrappedI80F48toNumber(wrapped) { - let bytesLE = wrapped.value; - if (bytesLE.length !== I80F48_TOTAL_BYTES) { - throw new Error(`Expected a ${I80F48_TOTAL_BYTES}-byte buffer`); - } - - let bytesBE = bytesLE.slice(); - bytesBE.reverse(); - - let signChar = ""; - const msb = bytesBE[0]; - if (msb & 0x80) { - signChar = "-"; - bytesBE = bytesBE.map((v) => ~v & 0xff); - } - - let hex = - signChar + - "0x" + - bytesBE.map((v) => v.toString(16).padStart(2, "0")).join(""); - - // Convert hex to BigInt and divide by divisor - let value = BigInt(hex); - let decoded = value / I80F48_DIVISOR; - let remainder = value % I80F48_DIVISOR; - - // Convert to string representation - let valueStr = decoded.toString(); - - // If there's a remainder, add decimal places - if (remainder !== 0n) { - // Convert remainder to decimal by multiplying by 10^6 and dividing by divisor - const precision = 6; // 6 decimal places for precision - const multiplier = 10n ** BigInt(precision); - const decimalPart = (remainder * multiplier) / I80F48_DIVISOR; - valueStr += "." + decimalPart.toString().padStart(precision, '0'); - } - - return Number(valueStr); -} - - -module.exports = { - wrappedI80F48toNumber -} diff --git a/projects/carrot/index.js b/projects/carrot/index.js deleted file mode 100644 index 181ce8bb9cc..00000000000 --- a/projects/carrot/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { PublicKey } = require('@solana/web3.js'); -const { Program } = require("@project-serum/anchor"); -const { getConnection, getProvider, getTokenSupplies } = require('../helper/solana') - -async function tvl(api) { - - const connection = getConnection() - const programId = 'CarrotwivhMpDnm27EHmRLeQ683Z1PufuqEmBZvD282s' - const testVaultExclusion = '2AV35oWyAuSN5wmuy26VD5JirjVpXkfkv5ZMCQ2LtpuV' // our test vault should not be included in TVL - - // Use this method to track TVL via the token... - // const CRT_MINT = 'CRTx1JouZhzSU6XytsE42UQraoGqiHgxabocVfARTy2s'; - // await getTokenSupplies(CRT_MINT, {api}) - - // Use this method to track TVL via onchain state of each Vault by adding the balance at each strategy. - const programAccounts = await connection.getProgramAccounts(new PublicKey(programId), { - filters: [{ - memcmp: { - offset: 8, - bytes: 'CarrotLYPhQzYL4fEsTUvEzw5QDaMGSZUENHSkh7qzQa' // carrot keeper - }, - },] - }); - - const provider = getProvider(); - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - - programAccounts.forEach(({ account, pubkey }, i) => { - if(pubkey.toBase58() !== testVaultExclusion) { - const { assets, strategies } = program.coder.accounts.decode( - "Vault", - account.data - ); - const assetMap = {} - assets.forEach(({assetId, mint }) => assetMap[assetId] = mint.toString()) - - strategies.forEach(i => { - api.add(assetMap[i.assetId], i.balance.toString()) - }) - } - }) -} - -module.exports = { - doublecounted: true, - timetravel: false, - methodology: 'TVL calculated by calling the onchain state of the CRT Vault accounts, and tallying the balance of each strategy.', - solana: { tvl }, -} diff --git a/projects/carrotswap/index.js b/projects/carrotswap/index.js deleted file mode 100644 index 4e1c4cce502..00000000000 --- a/projects/carrotswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - neox: { tvl: getUniTVL({ factory: '0x753df473702cB31BB81a93966e658e1AA4f10DD8', useDefaultCoreAssets: true })} -} \ No newline at end of file diff --git a/projects/cashcow/abi.json b/projects/cashcow/abi.json deleted file mode 100644 index b15e07cf4b4..00000000000 --- a/projects/cashcow/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCowPerShare)" -} \ No newline at end of file diff --git a/projects/cashcow/index.js b/projects/cashcow/index.js deleted file mode 100644 index b919f5f0b9d..00000000000 --- a/projects/cashcow/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const { compoundExports } = require("../helper/compound"); -const { addFundsInMasterChef } = require("../helper/masterchef"); - -const comptroller = "0x44f2A790aCB1bE42d3F7864e9F73762556eb895E"; -const cBNB = "0xC819cCfA453C4b5D2B9c9fF7CF8017adE99CB9B1"; -const WBNBEquivalent = ADDRESSES.bsc.WBNB; - -const stakingChef = "0xbfcaB1627c4fB86A055DE4B8a56D46e625F51C0B"; - -const stakingPools = async (_ts, _b, chainBlocks) => { - const balances = {}; - let transformAddress = i => `bsc:${i}`; - - await addFundsInMasterChef( - balances, - stakingChef, - chainBlocks["bsc"], - "bsc", - transformAddress, - abi.poolInfo - ); - - return balances; -}; - -module.exports = { - bsc: { - staking: stakingPools, - ...compoundExports(comptroller, - cBNB, - WBNBEquivalent) - }, - methodology: - "We count liquidity on the lending markets same as compound; and the Pools (LP Piars) through Chef Contract", -}; diff --git a/projects/cashcowprotocol/index.js b/projects/cashcowprotocol/index.js deleted file mode 100644 index 2b1bc848ffb..00000000000 --- a/projects/cashcowprotocol/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'bsc', - masterchef: '0x94098E24FCf4701237CF58ef2A222C1cF5003c86', - nativeToken: '0xf823f18d13df1ffdced206708d389dd455bb802b' -}) \ No newline at end of file diff --git a/projects/cashio/index.js b/projects/cashio/index.js deleted file mode 100644 index 98edfc5c7f5..00000000000 --- a/projects/cashio/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - timetravel: false, - // hallmarks: [ - // [1647993600, "Infinite mint glitch"] - // ], - deadFrom: 1667993600, - methodology: - "TVL counts LP token deposits made to Cashio and accrued reward tokens to its bank. CoinGecko is used to find the price of tokens in USD.", - solana: { tvl: () => ({}) }, -}; diff --git a/projects/casinocronos/index.js b/projects/casinocronos/index.js deleted file mode 100644 index 03ccdc1841e..00000000000 --- a/projects/casinocronos/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0x570aA1E0aa3d679Bc9DaAA47564ed3Daba1208FE) is used to find the LP pairs. TVL is equal to the liquidity on the AMM, while staking is the amount of CASINO tokens found in the Masterchef(0x81b5118bF8A720B19FEC6F3078d2b555790cb0AB).", - cronos: { - tvl: getUniTVL({ - factory: '0x570aA1E0aa3d679Bc9DaAA47564ed3Daba1208FE', - useDefaultCoreAssets: true, - - }), - staking: staking("0x81b5118bF8A720B19FEC6F3078d2b555790cb0AB", "0x95ac4a86c0677971c4125ACe494e3C17a87a4C61") - } -} \ No newline at end of file diff --git a/projects/cat-in-a-box/index.js b/projects/cat-in-a-box/index.js deleted file mode 100644 index 2607de1a3a5..00000000000 --- a/projects/cat-in-a-box/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: [ - '0x7f0A0C7149a46Bf943cCd412da687144b49C6014', - '0x24146D1B3339Cf76b455dC42e71Ea5Cdff4aE0d7', - ], tokens: [ADDRESSES.ethereum.STETH]}) - } -} \ No newline at end of file diff --git a/projects/catalist-dex/index.js b/projects/catalist-dex/index.js deleted file mode 100644 index f04be0c5a43..00000000000 --- a/projects/catalist-dex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - 'ace': { factory: '0xbe2fb231883840b9de5a0f43eb55b71253b0ce7b', fromBlock: 10,} -}) \ No newline at end of file diff --git a/projects/catalist/index.js b/projects/catalist/index.js deleted file mode 100644 index 319d091e1ee..00000000000 --- a/projects/catalist/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const aceContract = "0xec46d5a0ee47e585fab59a15976d0f2413bfbb82"; - -async function ace(api) { - const pooledACE = await api.call({ target: aceContract, abi: "uint256:getTotalPooledAce", }) - api.addCGToken('endurance', pooledACE / 1e18) -} - -module.exports = { - methodology: - "Staked tokens are counted as TVL based on the chain that they are staked on and where the liquidity tokens are issued.", - ace: { - tvl: ace, - }, -}; diff --git a/projects/catalyst/index.js b/projects/catalyst/index.js deleted file mode 100644 index 591292a259b..00000000000 --- a/projects/catalyst/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - optimism: { fromBlock: 120302044, }, - blast: { fromBlock: 3696521, }, - base: { fromBlock: 14706751, }, - arbitrum: { fromBlock: 223877881, }, -} - -Object.keys(config).forEach(chain => { - const { factory = '0x00000000E5E81E25aeaD7fCCb4C9560C6b5b718F', fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ - api, - factory, - eventAbi: 'event VaultDeployed (address indexed vaultTemplate, address indexed chainInterface, address indexed deployer, address vaultAddress, address[] assets, uint256 k)', - fromBlock, - }) - - return api.sumTokens({ ownerTokens: logs.map(i => [i.assets, i.vaultAddress]) }) - } - } -}) \ No newline at end of file diff --git a/projects/cateventures/index.js b/projects/cateventures/index.js deleted file mode 100644 index 486bf3ee921..00000000000 --- a/projects/cateventures/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - methodology: "Catecoin staking pool", - bsc: { - tvl: () => ({}), - staking: staking( - "0x2F9FbB154e6C3810f8B2D786cB863F8893E43354", - "0xE4FAE3Faa8300810C835970b9187c268f55D998F" - ), - }, -}; diff --git a/projects/catex/index.js b/projects/catex/index.js deleted file mode 100644 index a6d48e7368b..00000000000 --- a/projects/catex/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { get } = require('../helper/http') - -const STRATEGIES_URL = 'https://raw.githubusercontent.com/Lynexfi/lynex-lists/main/strategies/main.json' - -async function getCatexPools(chainId) { - const data = await get(STRATEGIES_URL) - const strategies = data[chainId] || [] - return strategies - .filter(strategy => strategy.variant === 'uniV4') - .map(strategy => strategy.address) -} - -async function tvlForChain(api, chainId) { - const CATEX_POOLS = await getCatexPools(chainId) - if (!CATEX_POOLS.length) return {} - - const token0s = await api.multiCall({ abi: 'address:token0', calls: CATEX_POOLS }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: CATEX_POOLS }) - const totalAmounts = await api.multiCall({ - abi: 'function getTotalAmounts() view returns (uint256 total0, uint256 total1, uint256 totalFee0, uint256 totalFee1)', - calls: CATEX_POOLS, - }) - - totalAmounts.forEach((amounts, i) => { - api.add(token0s[i], amounts.total0) - api.add(token1s[i], amounts.total1) - }) - - return api.getBalances() -} - -module.exports = { - methodology: 'TVL counts the tokens locked in ALM vaults that Catex manages on top of Uniswap V4', - start: 69453847, - polygon: { tvl: (api) => tvlForChain(api, '137') }, - unichain: { tvl: (api) => tvlForChain(api, '130') }, - hallmarks: [ - [1748451600, "Catex migrated from Polygon to Unichain"], - ], -} \ No newline at end of file diff --git a/projects/catsapes/index.js b/projects/catsapes/index.js deleted file mode 100644 index ba0e5aee2e7..00000000000 --- a/projects/catsapes/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - - -const config = { - kava: { - SKILL_TOKEN_CONTRACT: '0x85602B00C9bd973B1Afb66EC140A62480CF812d3', - } -} - -module.exports = masterchefExports({ chain: 'kava', masterchef: config.kava.SKILL_TOKEN_CONTRACT, }) \ No newline at end of file diff --git a/projects/catsluck/index.js b/projects/catsluck/index.js deleted file mode 100644 index a8cc5f003e2..00000000000 --- a/projects/catsluck/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js'); - -const CHAIN = "smartbch" - -// token contracts -const CLK = "0x659F04F36e90143fCaC202D4BC36C699C078fC98" - -// staking pool addresses -const catsPoolAddress = "0x659F04F36e90143fCaC202D4BC36C699C078fC98" -const bchPoolAddress = "0x4d16fB4811cf8BF7a5d35397527A95911E122611" -const flexusdPoolAddress = "0xC5bBdf3838BA468359a5a97523925350dfcc3599" -const daoPoolAddress = "0x5BBAE609bd2e6E0c6c59401e59B5358F0C1D16b1" -const ebenPoolAddress = "0x404B74F4B945A51FCAcF3B86b28c248aBD9496eB" -const mistPoolAddress = "0xFbc43093c71c960F26Eed32Ec73F3d096F02C053" -const tangoPoolAddress = "0x43A4a713e3248Ab6CB05EB9c817355Ea85E580Ca" -const lawPoolAddress = "0x3F52E5e897AfC6e7BF8C6A4e88f86fc6B9Ce645b" - -// [[pool address, coingecko-id, decimals]] -const stakingPools = [ - [catsPoolAddress, "cashcats", 2], - [bchPoolAddress, "bitcoin-cash", 18], - [flexusdPoolAddress, "flex-usd", 18], - [daoPoolAddress, 'decentralized-autonomous-organization', 7], - [ebenPoolAddress, "green-ben", 18], - [mistPoolAddress, "mistswap", 18], - [tangoPoolAddress, "tangoswap", 18], - [lawPoolAddress, "law", 18] -] - -// "function info(address addr) external view returns (uint, uint, uint)"" -const poolInfoAbi = 'function info(address addr) view returns (uint256 totalBalance, uint256 totalShare, uint256 sharesAndLockUntil)' - - -const tvl = async (timestamp, ethBlock, {[CHAIN]: block}) => { - - const totals = await Promise.all(stakingPools.map(async (pool) => { - const [poolAddress, addr, decimals] = pool; - const total = (await sdk.api.abi.call({ - target: poolAddress, - params: [bchPoolAddress], - abi: poolInfoAbi, - chain: CHAIN, - block - })).output.totalBalance - - return {[addr]: BigNumber(total).dividedBy(10 ** decimals).toNumber()} - })) - return totals.reduce((a, b) => ({...a, ...b}), {}) -} - -module.exports = { - deadFrom: '2025-06-01', - misrepresentedTokens: true, - methodology: "Total value of non-native tokens staked in prediction pools is counted towards tvl metric.", - smartbch: { tvl }, -} diff --git a/projects/catton/index.js b/projects/catton/index.js deleted file mode 100644 index a63c82dc549..00000000000 --- a/projects/catton/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { call, getJettonBalances, getTonBalance, sumTokens } = require("../helper/chain/ton"); -const { sleep } = require('../helper/utils') -const ADDRESSES = require('../helper/coreAssets.json') - -const TON_POOL_ADDRESS = "EQAze1aSZHY1yUGz1BFndH62k-VYpXYeDiYofCXTRZClF8Qr" -const USD_POOL_ADDRESS = "EQBy7pjr6IBzqW8vuVCZ780evtnkiIF3jZSRRDxeqScfZoU9" -const CTON_ADDRESS = "0:86cf8401d283627a87b58c367b440cad933ab8aa7b383419e8ff7d1a00c945f8" -const CTUSDT_ADDRESS = "0:9fb449ce8fb43d0f682c713c01d9d8357c7cd0d4a49dd64dd585926990174a4e" -const USDT_ADDRESS = "0:b113a994b5024a16719f69139328eb759596c38a25f59028b146fecdc3621dfe" - -async function tvl(api) { - return sumTokens({ owners: [TON_POOL_ADDRESS, USD_POOL_ADDRESS, "UQDFlyZ5zsWyowbZvZjZwIW_Vzm-1uvf8z_PUfvQtHrV14dp"], tokens: [ADDRESSES.null, USDT_ADDRESS], api, onlyWhitelistedTokens: true }) -} - -module.exports = { - methodology: 'Total amount of collateral locked in the Catton Protocol', - timetravel: false, - ton: { - tvl - } -} diff --git a/projects/cauldron/index.js b/projects/cauldron/index.js deleted file mode 100644 index ae166a15e03..00000000000 --- a/projects/cauldron/index.js +++ /dev/null @@ -1,32 +0,0 @@ -// This adaptor uses the Riftenlabs Indexer API to query for TVL. -// -// This indexer is open source (GPLv3) and available at: -// https://gitlab.com/riftenlabs/riftenlabs-indexer - -const axios = require("axios"); - -async function tvl({ timestamp }) { - const { data } = await axios.get(`http://rostrum.cauldron.quest:8000/cauldron/tvl/${timestamp}`); - - // Every token pair is matched with BCH. We collect total value locked on the BCH side of the contract. - const total_sats = data.reduce((acc, token_pair) => { - return acc + BigInt(token_pair.satoshis) - }, BigInt(0)); - - // TODO: Map tokens to CoinGecko identifiers. - // Currently, no tokens on the Bitcoin Cash are on CoinGecko. - - return { - 'bitcoin-cash': Number(total_sats / 100000000n), - } -} - -module.exports = { - methodology: "Scrape the blockchain and filter for spent transaction outputs that match the cauldron contract's redeem script. Check if the transaction has an output with a locking script that matches the redeem script in the input. A match on locking script means the funds are still locked in the DEX contract. Aggregate the value of funds in contract utxos.", - start: '2023-07-01', - bitcoincash: { tvl }, - hallmarks: [ - [1688198180, "First cauldron contract deployed (SOCK)"], - [1693230446, "Cauldron opens trading for any token"], - ] -}; diff --git a/projects/cavel-re/index.js b/projects/cavel-re/index.js deleted file mode 100644 index 70dfa68047d..00000000000 --- a/projects/cavel-re/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const config = { - avax: { pools: ['0x5f1e8ed8468232bab71eda9f4598bda3161f48ea'], }, -} - - -Object.keys(config).forEach(chain => { - const { pools } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const poolData = await api.multiCall({ abi: abi.assets, calls: pools}) - return api.sumTokens({ ownerTokens: poolData.map((v, i) => [v.map(j => j.token), pools[i]])}) - } - } -}) - -const abi = { - "assets": "function assets() view returns (tuple(address token, uint256 index, string name, string symbol, uint8 decimals, uint256 conversion, uint256 fee, uint256 balance, uint256 meanBalance, uint256 scale, uint256 meanScale, uint256 lastUpdated)[])", -} \ No newline at end of file diff --git a/projects/caviar-v2/index.js b/projects/caviar-v2/index.js deleted file mode 100644 index e0a0e4dd63d..00000000000 --- a/projects/caviar-v2/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getLogs, } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const factory = '0xa16be8d32934a9aab272102ac4bb890481f4074e' - const logs = await getLogs({ - api, - target: factory, - topics: ['0x2e8b0eeead8b24c71386db9f08f074489fc7ceed52e7ee8a3ad4ab50b9c8c4f4'], - fromBlock: 16480338, - eventAbi: 'event Create(address indexed privatePool, uint256[] tokenIds, uint256 baseTokenAmount)', - onlyArgs: true, - }) - const pools = logs.map(i => i.privatePool) - const tokens = await api.multiCall({ abi: 'address:baseToken', calls: pools}) - const nfts = await api.multiCall({ abi: 'address:nft', calls: pools}) - const ownerTokens = pools.map((v, i) => [[tokens[i], nfts[i]], v]) - return sumTokens2({ ownerTokens, api}) -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/caviar/index.js b/projects/caviar/index.js deleted file mode 100644 index 7128c19383b..00000000000 --- a/projects/caviar/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getLogs, } = require('../helper/cache/getLogs') -const sdk = require('@defillama/sdk') -const { getUniqueAddresses } = require('../helper/utils') - -async function tvl(api) { - const factory = '0xa964d6e8d90e5cd12592a8ef2b1735dae9ba0840' - const logs = await getLogs({ - api, - target: factory, - topics: ['0x94e35d08a6788cb2901c35019eb1105f35dcfdac00943412ebe0236470ee420f'], - fromBlock: 16480338, - eventAbi: 'event Create (address indexed nft, address indexed baseToken, bytes32 indexed merkleRoot)', - onlyArgs: true, - }) - const calls = logs.map(i => ([i.nft, i.baseToken, i.merkleRoot])) - const pools = await api.multiCall({ abi: "function pairs(address, address, bytes32) view returns (address)", calls: calls.map(i => ({ params: i })), target: factory }) - let { output: balances } = await sdk.api.eth.getBalances({ block: api.block, targets: getUniqueAddresses(pools) }) - balances = balances.reduce((agg, i) => agg + i.balance/1e18, 0) - return { - ethereum: balances * 2, - } -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/caviarnine-lsu/index.js b/projects/caviarnine-lsu/index.js deleted file mode 100644 index c623ce996cd..00000000000 --- a/projects/caviarnine-lsu/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - const { summary } = await get('https://api-core.caviarnine.com/v1.0/stats/product/lsupool') - return { - 'radix': summary.total_value_locked.xrd - } -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} \ No newline at end of file diff --git a/projects/caviarnine-orderbook/index.js b/projects/caviarnine-orderbook/index.js deleted file mode 100644 index 87f7497cd39..00000000000 --- a/projects/caviarnine-orderbook/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - const { summary } = await get('https://api-core.caviarnine.com/v1.0/stats/product/orderbook') - return { - 'radix': summary.total_value_locked.xrd - } -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} \ No newline at end of file diff --git a/projects/caviarnine-shapeliquidity/index.js b/projects/caviarnine-shapeliquidity/index.js deleted file mode 100644 index 9ef72f94c43..00000000000 --- a/projects/caviarnine-shapeliquidity/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - const { summary } = await get('https://api-core.caviarnine.com/v1.0/stats/product/shapeliquidity') - return { - 'radix': summary.total_value_locked.xrd - } -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} \ No newline at end of file diff --git a/projects/caviarnine-simplepools/index.js b/projects/caviarnine-simplepools/index.js deleted file mode 100644 index dc2461ad79c..00000000000 --- a/projects/caviarnine-simplepools/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens, queryAddresses, transformLSUs } = require('../helper/chain/radixdlt') -const { getConfig } = require('../helper/cache') - -async function tvl(api) { - const { summary } = await getConfig('caviarnine/simple-pools', 'https://api-core.caviarnine.com/v1.0/stats/product/simplepools') - const res = await queryAddresses({ addresses: summary.components.filter( - i => i !== 'component_rdx1cpz0zcyyl2fvtc5wdvfjjl3w0mjcydm4fefymudladklf6rn5gdwtf' // this is hyperstake pool component, tracked under a new listing - ) }) - await sumTokens({ api, owners: res.map(i => i.metadata.items.find(i => i.key === 'pool_component').value.typed.value),}) - - return transformLSUs(api) -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} \ No newline at end of file diff --git a/projects/caviernine-hyperstake/index.js b/projects/caviernine-hyperstake/index.js deleted file mode 100644 index 184a7a74c65..00000000000 --- a/projects/caviernine-hyperstake/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens, queryAddresses, transformLSUs } = require('../helper/chain/radixdlt') - -async function tvl(api) { - const res = await queryAddresses({ addresses: ['component_rdx1cpz0zcyyl2fvtc5wdvfjjl3w0mjcydm4fefymudladklf6rn5gdwtf'] }) - await sumTokens({ api, owners: res.map(i => i.metadata.items.find(i => i.key === 'pool_component').value.typed.value), }) - - return transformLSUs(api) -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} \ No newline at end of file diff --git a/projects/cbETH/index.js b/projects/cbETH/index.js deleted file mode 100644 index 7370441aacb..00000000000 --- a/projects/cbETH/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { default: axios } = require("axios") -const token = ADDRESSES.ethereum.cbETH - -module.exports = { - ethereum: { - tvl: async (timestamp, block) => { - if(timestamp < Date.now()/1e3 - 3600){ - throw new Error("Only works for current info") - } - const data = await axios.get("https://api.exchange.coinbase.com/wrapped-assets/CBETH") - return { - [token]: data.data.circulating_supply * 1e18 - } - } - } -} \ No newline at end of file diff --git a/projects/cdc-eth/index.js b/projects/cdc-eth/index.js deleted file mode 100644 index 91d3b8024a1..00000000000 --- a/projects/cdc-eth/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana'); - -const token = '0x7a7c9db510ab29a2fc362a4c34260becb5ce3446'; - -async function solanaTVL(api) { - return getSolBalanceFromStakePool( - '8B9yuGU5SbXLE56k4yH2AfqbMXNEah7MJMbZKDPqg23X', - api - ); -} - -async function cronosTVL(api) { - return { - ["cronos:" + token]: await api.call({ - target: token, - abi: "erc20:totalSupply", - }), - }; -} - -module.exports = { - timetravel: false, - solana: { tvl: solanaTVL }, - cronos: { tvl: cronosTVL }, -}; diff --git a/projects/cega-v2/index.js b/projects/cega-v2/index.js deleted file mode 100644 index 99842322550..00000000000 --- a/projects/cega-v2/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - tokens: [ - nullAddress, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDe, - ADDRESSES.ethereum.sUSDe, - ], - owners: ["0xA8AB795731fbBFDd1Fbc57ca11e6f722e7783642"], - }), - }, - arbitrum: { - tvl: sumTokensExport({ - tokens: [ - nullAddress, - ADDRESSES.arbitrum.WSTETH, - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.DAI, - ADDRESSES.arbitrum.USDe, - ADDRESSES.arbitrum.sUSDe, - ], - owners: ["0x475c4af369b28997b25bd756ef92797ad3f69593"], - }), - }, -}; diff --git a/projects/cega/abi.json b/projects/cega/abi.json deleted file mode 100644 index eddc17011d5..00000000000 --- a/projects/cega/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "sumVaultUnderlyingAmounts": "uint256:sumVaultUnderlyingAmounts", - "queuedDepositsTotalAmount": "uint256:queuedDepositsTotalAmount", - "getProductNames": "string[]:getProductNames", - "products": "function products(string) view returns (address)", - "getLOVVaultMetadata": "function getLOVVaultMetadata(address productAddress, uint256 leverage) view returns (tuple(uint256 vaultStart, uint256 tradeDate, uint256 tradeExpiry, uint256 aprBps, uint256 tenorInDays, uint256 underlyingAmount, uint256 currentAssetAmount, uint256 totalCouponPayoff, uint256 vaultFinalPayoff, uint256 queuedWithdrawalsSharesAmount, uint256 queuedWithdrawalsCount, uint256 optionBarriersCount, uint256 leverage, address vaultAddress, uint8 vaultStatus, bool isKnockedIn, tuple(uint256 barrierBps, uint256 barrierAbsoluteValue, uint256 strikeBps, uint256 strikeAbsoluteValue, string asset, string oracleName, uint8 barrierType)[] optionBarriers)[])", - "getLOVProductQueuedDeposits": "function getLOVProductQueuedDeposits(address fcnProductAddress, uint256 leverage) view returns (uint256 totalQueuedDeposits)" -} \ No newline at end of file diff --git a/projects/cega/evm.js b/projects/cega/evm.js deleted file mode 100644 index 0adad778419..00000000000 --- a/projects/cega/evm.js +++ /dev/null @@ -1,99 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); - -const maxLeverage = 5; -const LOV_SUFFIX = "-lov"; -const config = { - ethereum: { CEGA_STATE: "0x0730AA138062D8Cc54510aa939b533ba7c30f26B", CEGA_PRODUCT_VIEWER: '0x31C73c07Dbd8d026684950b17dD6131eA9BAf2C4', usdcAddress: ADDRESSES.ethereum.USDC, }, - arbitrum: { CEGA_STATE: "0xc809B7F21250B1ce0a61b7Fb645AEf5CE7c1B5ed", CEGA_PRODUCT_VIEWER: '0x8c32a5d9f29da36ed68a9d454eda1b374795b6ca', usdcAddress: ADDRESSES.arbitrum.USDC, }, -} - -// Funds are not lent out -const FCN_PURE_OPTIONS_ADDRESSES = [ - '0x042021d59731d3fFA908c7c4211177137Ba362Ea', // supercharger - '0x56F00A399151EC74cf7bE8DC38225363E84975E6', // go fast - '0x784e3C592A6231D92046bd73508B3aAe3A7cc815', // insanic - '0x2aAE28E495626F587677ca779838266DB9bD6Cd1', // puppy - '0x98b872604F36807169c096241ECD4646021de133', // l2 -]; - -// Funds are lent out 100% -const FCN_BOND_AND_OPTIONS_ADDRESSES = [ - '0xAB8631417271Dbb928169F060880e289877Ff158', // starboard - '0xcf81b51AecF6d88dF12Ed492b7b7f95bBc24B8Af', // autopilot - '0x80ec1c0da9bfBB8229A1332D40615C5bA2AbbEA8', // cruise control - '0x94C5D3C2fE4EF2477E562EEE7CCCF07Ee273B108', // genesis basket -]; - -async function getProducts(api) { - const { CEGA_STATE } = config[api.chain] - const productNames = await api.call({ target: CEGA_STATE, abi: abi.getProductNames, }) - const LOVProductNames = productNames.filter(v => v.includes(LOV_SUFFIX)) - return api.multiCall({ target: CEGA_STATE, abi: abi.products, calls: LOVProductNames }) -} - - -async function getSumFCNProductDeposits(fcnProducts, api) { - return api.multiCall({ calls: fcnProducts, abi: abi.sumVaultUnderlyingAmounts, }) -} - -async function getSumFCNProductQueuedDeposits(fcnProducts, api) { - return api.multiCall({ calls: fcnProducts, abi: abi.queuedDepositsTotalAmount, }) -} - -function getLOVCalls(lovProducts) { - const calls = [] - for (const product of lovProducts) - for (let i = 1; i <= maxLeverage; i++) - calls.push([product, i]) - return calls.map(i => ({ params: i })) -} - -async function getSumLOVProductDeposits(lovProducts, api) { - const { CEGA_PRODUCT_VIEWER } = config[api.chain] - const calls = getLOVCalls(lovProducts) - return (await api.multiCall({ target: CEGA_PRODUCT_VIEWER, abi: abi.getLOVVaultMetadata, calls })).map(i => i.map(j => j.underlyingAmount)).flat() -} - -async function getSumLOVProductQueuedDeposits(lovProducts, api) { - const { CEGA_PRODUCT_VIEWER } = config[api.chain] - const calls = getLOVCalls(lovProducts) - return await api.multiCall({ target: CEGA_PRODUCT_VIEWER, abi: abi.getLOVProductQueuedDeposits, calls }) -} - -async function getEthereumTvl(api) { - const { usdcAddress } = config[api.chain] - const lovProducts = await getProducts(api); - const calls = [ - getSumLOVProductDeposits(lovProducts, api), - getSumLOVProductQueuedDeposits(lovProducts, api) - ] - if (api.chain === 'ethereum') { - calls.push(getSumFCNProductDeposits(FCN_PURE_OPTIONS_ADDRESSES, api), - getSumFCNProductQueuedDeposits(FCN_PURE_OPTIONS_ADDRESSES, api), - getSumFCNProductQueuedDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api)) - } - const results = await Promise.all(calls); - const sum = results.flat().flat().reduce((total, currentValue) => total + +currentValue, 0); - api.add(usdcAddress, sum) - return api.getBalances() -} - -async function getBorrowedTvl(api) { - const { usdcAddress } = config[api.chain] - const results = await Promise.all([ - getSumFCNProductDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api) - ]); - const sum = results.flat().flat().reduce((total, currentValue) => total + +currentValue, 0); - api.add(usdcAddress, sum) -} - -module.exports = { - ethereum: { - tvl: getEthereumTvl, - borrowed: getBorrowedTvl, - }, - arbitrum: { - tvl: getEthereumTvl, - }, -} \ No newline at end of file diff --git a/projects/cega/idl.json b/projects/cega/idl.json deleted file mode 100644 index e1e22452a3a..00000000000 --- a/projects/cega/idl.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "version": "0.1.0", - "name": "cega_vault", - "instructions": [], - "accounts": [ - { - "name": "Product", - "type": { - "kind": "struct", - "fields": [ - { - "name": "productName", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "productNonce", - "type": "u8" - }, - { - "name": "productUnderlyingTokenAccountNonce", - "type": "u8" - }, - { - "name": "productCounter", - "type": "u64" - }, - { - "name": "underlyingMint", - "type": "publicKey" - }, - { - "name": "productUnderlyingTokenAccount", - "type": "publicKey" - }, - { - "name": "maxDepositLimit", - "type": "u64" - }, - { - "name": "underlyingAmount", - "type": "u64" - }, - { - "name": "mapleAccount", - "type": "publicKey" - }, - { - "name": "depositQueueHeaderNonce", - "type": "u8" - }, - { - "name": "depositQueueHeader", - "type": "publicKey" - }, - { - "name": "isActive", - "type": "bool" - }, - { - "name": "managementFeePercentage", - "type": "u64" - }, - { - "name": "extraPubkeyOne", - "type": "publicKey" - }, - { - "name": "extraPubkeyTwo", - "type": "publicKey" - }, - { - "name": "extraUint64Two", - "type": "u64" - }, - { - "name": "extraUint64Three", - "type": "u64" - }, - { - "name": "extraBoolOne", - "type": "bool" - } - ] - } - } - ], - "types": [], - "events": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/cega/index.js b/projects/cega/index.js deleted file mode 100644 index f6d5585f13f..00000000000 --- a/projects/cega/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const evm = require("./evm"); -const solana = require("./solana"); - -module.exports = { - timetravel: false, - ...evm, - ...solana, -}; \ No newline at end of file diff --git a/projects/cega/solana.js b/projects/cega/solana.js deleted file mode 100644 index 13b4579c5fd..00000000000 --- a/projects/cega/solana.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { Program } = require("@project-serum/anchor"); -const { getProvider} = require("../helper/solana"); -const sdk = require('@defillama/sdk') -const idl = require("./idl.json"); - -const usdcAddress = ADDRESSES.solana.USDC; -const PURE_OPTIONS_PRODUCTS = [ - 'insanic-2', - 'supercharger', - 'go-fast-2' -] - -const OPTIONS_AND_BONDS_PRODUCTS = [ - 'genesis-basket-2', - 'starboard', - 'cruise-control-2', - 'autopilot' -] - -async function getProducts() { - const provider = getProvider(); - const programId = "3HUeooitcfKX1TSCx2xEpg2W31n6Qfmizu7nnbaEWYzs"; - const program = new Program(idl, programId, provider); - return program.account.product.all(); -} - -async function getSolanaTvl() { - const balances = {}; - const products = await getProducts() - let totalAmount = 0; - products.forEach(({ account: i }) => { - const productName = Buffer.from(i.productName).toString().trim(); - if (!i.isActive || productName.includes("test")) return; - const underlyingAmount = i.underlyingAmount.toNumber(); - if(PURE_OPTIONS_PRODUCTS.includes(productName)){ - totalAmount += underlyingAmount; - } - }); - await sdk.util.sumSingleBalance(balances, usdcAddress, totalAmount, "solana"); - return balances; -} - -async function getBorrowedTvl() { - const balances = {}; - const products = await getProducts() - let totalAmount = 0; - products.forEach(({ account: i }) => { - const productName = Buffer.from(i.productName).toString().trim(); - if (!i.isActive || productName.includes("test")) return; - const underlyingAmount = i.underlyingAmount.toNumber(); - if(OPTIONS_AND_BONDS_PRODUCTS.includes(productName)){ - totalAmount += underlyingAmount; - } - }); - await sdk.util.sumSingleBalance(balances, usdcAddress, totalAmount, "solana"); - return balances; -} - -module.exports = { - solana: { - tvl: getSolanaTvl, - borrowed: getBorrowedTvl, - } -} \ No newline at end of file diff --git a/projects/celerbridge/index.js b/projects/celerbridge/index.js deleted file mode 100644 index f34fb01880e..00000000000 --- a/projects/celerbridge/index.js +++ /dev/null @@ -1,540 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require("../helper/unwrapLPs"); - -const bridgeContractV1 = "0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"; - - -// Bridge and token contract addresses are taken from https://cbridge-docs.celer.network/reference/contract-addresses -const liquidityBridgeContractsV2 = { - // NOTE: Some chains have addresses before and after the liquidity bridge upgrade / migration - arbitrum: [ - ADDRESSES.astar.MATIC, - "0x1619DE6B6B20eD217a58d00f37B9d47C7663feca", - "0xFe31bFc4f7C9b69246a6dc0087D91a91Cb040f76", - "0xEA4B1b0aa3C110c55f650d28159Ce4AD43a4a58b", - ], - astar: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - aurora: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C", "0xbCfeF6Bb4597e724D720735d32A9249E0640aA11",], - avax: [ - "0xBB7684Cc5408F4DD0921E5c2Cadd547b8f1AD573", - "0xef3c714c9425a8F3697A9C969Dc1af30ba82e5d4", - "0x5427FEFA711Eff984124bFBB1AB6fbf5E3DA1820", - "0xb51541df05DE07be38dcfc4a80c05389A54502BB", - ], - boba: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C", '0x8db213bE5268a2b8B78Af08468ff1EA422073Da0', '0x4C882ec256823eE773B25b414d36F92ef58a7c0C'], - bsc: [ - "0x5d96d4287D1ff115eE50faC0526cf43eCf79bFc6", - ADDRESSES.astar.MATIC, - "0x78bc5Ee9F11d133A08b331C2e18fE81BE0Ed02DC", - "0x11a0c9270D88C99e221360BCA50c2f6Fda44A980", - ], - celo: ["0xBB7684Cc5408F4DD0921E5c2Cadd547b8f1AD573", '0xD9d1034ef3d21221F008C7e96346CA999966752C'], - clv: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - conflux: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - ethereum: [ - "0xc578Cbaf5a411dFa9F0D227F97DaDAa4074aD062", - "0x5427FEFA711Eff984124bFBB1AB6fbf5E3DA1820", - "0xb37d31b2a74029b5951a2778f959282e2d518595", - "0x7510792A3B1969F9307F3845CE88e39578f2bAE1", - ], - fantom: [ - ADDRESSES.astar.USDT, - "0x374B8a9f3eC5eB2D97ECA84Ea27aCa45aa1C57EF", - "0x7D91603E79EA89149BAf73C9038c51669D8F03E9", - ], - harmony: ["0x78a21C1D3ED53A82d4247b9Ee5bF001f4620Ceec"], - heco: ["0xBB7684Cc5408F4DD0921E5c2Cadd547b8f1AD573", "0x5d96d4287D1ff115eE50faC0526cf43eCf79bFc6"], - metis: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - milkomeda: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - moonbeam: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - moonriver: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - oasis: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - okexchain: [ADDRESSES.moonbeam.USDC], - optimism: [ - ADDRESSES.astar.DAI, - "0x9D39Fc627A6d9d9F8C831c16995b209548cc3401", - "0xbCfeF6Bb4597e724D720735d32A9249E0640aA11", - ], - polygon: [ - "0xa251c4691C1ffd7d9b128874C023427513D8Ac5C", - "0x88DCDC47D2f83a99CF0000FDF667A468bB958a78", - "0xc1a2D967DfAa6A10f3461bc21864C23C1DD51EeA", - ], - rei: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - shiden: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C", "0xBB7684Cc5408F4DD0921E5c2Cadd547b8f1AD573",], - syscoin: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C", "0x1E6b1ceAF75936f153ABB7B65FBa57AbaE14e6CE"], - xdai: [ADDRESSES.astar.USDT], - era: ["0x54069e96C4247b37C2fbd9559CA99f08CD1CD66c"], - polygon_zkevm: ["0xD46F8E428A06789B5884df54E029e738277388D1"], - linea: ["0x9B36f165baB9ebe611d491180418d8De4b8f3a1f"], - scroll: ["0x9B36f165baB9ebe611d491180418d8De4b8f3a1f"], -}; - -// Tokens added to the liquidity bridges, excluding Celer-Pegged tokens. -const liquidityBridgeTokens = [ - { - // USDT - arbitrum: ADDRESSES.arbitrum.USDT, - aurora: ADDRESSES.aurora.USDT_e, - avax: ADDRESSES.avax.USDT_e, - bsc: ADDRESSES.bsc.USDT, - ethereum: ADDRESSES.ethereum.USDT, - fantom: ADDRESSES.fantom.fUSDT, - heco: ADDRESSES.heco.USDT, - okexchain: ADDRESSES.okexchain.USDT, - optimism: ADDRESSES.optimism.USDT, - polygon: ADDRESSES.polygon.USDT, - xdai: ADDRESSES.xdai.USDT, - }, - { - // USDC - arbitrum: ADDRESSES.arbitrum.USDC, - aurora: ADDRESSES.aurora.USDC_e, - avax: ADDRESSES.avax.USDC_e, - boba: ADDRESSES.boba.USDC, - bsc: ADDRESSES.bsc.USDC, - ethereum: ADDRESSES.ethereum.USDC, - fantom: ADDRESSES.fantom.USDC, - // harmony: "0x985458e523db3d53125813ed68c274899e9dfab4", - heco: ADDRESSES.heco.USDC_HECO, - okexchain: ADDRESSES.okexchain.USDC, - optimism: ADDRESSES.optimism.USDC, - polygon: ADDRESSES.polygon.USDC, - xdai: ADDRESSES.xdai.USDC, - era: ADDRESSES.era.USDC, - }, - { - ethereum: ADDRESSES.ethereum.BUSD, - bsc: ADDRESSES.bsc.BUSD, - }, - { - // DAI - avax: ADDRESSES.avax.DAI, - bsc: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - ethereum: ADDRESSES.ethereum.DAI, - optimism: ADDRESSES.optimism.DAI, - polygon: ADDRESSES.polygon.DAI, - }, - { - // WETH - arbitrum: ADDRESSES.arbitrum.WETH, - avax: ADDRESSES.avax.WETH_e, - bsc: ADDRESSES.bsc.ETH, - ethereum: ADDRESSES.ethereum.WETH, - fantom: "0x74b23882a30290451A17c44f4F05243b6b58C76d", - optimism: ADDRESSES.tombchain.FTM, - polygon: ADDRESSES.polygon.WETH_1, - era: ADDRESSES.era.WETH, - polygon_zkevm: ADDRESSES.polygon_zkevm.WETH, - linea: ADDRESSES.linea.WETH, - scroll: ADDRESSES.scroll.WETH, - }, - { - // WBTC - arbitrum: ADDRESSES.arbitrum.WBTC, - avax: ADDRESSES.avax.WBTC_e, - ethereum: ADDRESSES.ethereum.WBTC, - fantom: ADDRESSES.fantom.WBTC, - polygon: ADDRESSES.polygon.WBTC, - }, - { - // DODO - arbitrum: "0x69eb4fa4a2fbd498c257c57ea8b7655a2559a581", - bsc: "0x67ee3cb086f8a16f34bee3ca72fad36f7db929e2", - ethereum: "0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd", - }, - { - // MCB - arbitrum: "0x4e352cf164e64adcbad318c3a1e222e9eba4ce42", - ethereum: "0x4e352cF164E64ADCBad318C3a1e222E9EBa4Ce42", - }, - { - // CELR - arbitrum: "0x3a8B787f78D775AECFEEa15706D4221B40F345AB", - bsc: "0x1f9f6a696c6fd109cd3956f45dc709d2b3902163", - ethereum: "0x4f9254c83eb525f9fcf346490bbb3ed28a81c667", - }, - { - // IF - bsc: "0xb0e1fc65c1a741b4662b813eb787d369b8614af1", - ethereum: "0xb0e1fc65c1a741b4662b813eb787d369b8614af1", - }, - { - // LYRA - ethereum: "0x01ba67aac7f75f647d94220cc98fb30fcc5105bf", - optimism: ADDRESSES.base.DAI, - }, - { - // IMX - arbitrum: "0x9c67ee39e3c4954396b9142010653f17257dd39c", - avax: "0xeA6887e4a9CdA1B77E70129E5Fba830CdB5cdDef", - ethereum: "0x7b35ce522cb72e4077baeb96cb923a5529764a00", - // harmony: "0xbd8064cdb96c00a73540922504f989c64b7b8b96", - moonriver: "0x900f1Ec5819FA087d368877cD03B265Bf1802667", - polygon: "0x60bb3d364b765c497c8ce50ae0ae3f0882c5bd05", - }, - { - // DOMI - ethereum: "0x45C2F8c9B4c0bDC76200448cc26C48ab6ffef83F", - }, - { - // BOBA - boba: ADDRESSES.boba.BOBA, - ethereum: "0x42bbfa2e77757c645eeaad1655e0911a7553efbc", - }, - { - // XTK - arbitrum: "0xF0A5717Ec0883eE56438932b0fe4A20822735fBa", - ethereum: "0x7f3edcdd180dbe4819bd98fee8929b5cedb3adeb", - }, - { - // xXTKa - arbitrum: "0xd8083e393985530b7cf6798d44a2f1536e211ab6", - ethereum: "0x314022E24ceD941781DC295682634B37Bd0d9cFc", - }, - { - // METIS - ethereum: "0x9e32b13ce7f2e80a01932b42553652e053d6ed8e", - metis: ADDRESSES.metis.Metis, - }, - { - // CVP - bsc: "0x5ec3adbdae549dce842e24480eb2434769e22b2e", - ethereum: "0x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1", - }, - { - // CEC - bsc: "0x957c49a76b3e008637ca1cce23188a8ce884911e", - ethereum: "0x9e564eb5550E1A9b1448D916fd85a8d876661bdC", - }, - { - // STND - ethereum: "0x9040e237c3bf18347bb00957dc22167d0f2b999d", - metis: "0xc12caC7090baa48Ec750CceeC57C80768F6ee58E", - }, - { - // WOO - arbitrum: "0xcafcd85d8ca7ad1e1c6f82f651fa15e33aefd07b", - avax: "0xabc9547b534519ff73921b1fba6e672b5f58d083", - bsc: "0x4691937a7508860f876c9c0a2a617e7d9e945d4b", - ethereum: "0x4691937a7508860f876c9c0a2a617e7d9e945d4b", - fantom: "0x6626c47c00f1d87902fc13eecfac3ed06d5e8d8a", - polygon: "0x1B815d120B3eF02039Ee11dC2d33DE7aA4a8C603", - }, - { - // DF - arbitrum: "0xaE6aab43C4f3E0cea4Ab83752C278f8dEbabA689", - bsc: "0x4a9a2b2b04549c3927dd2c9668a5ef3fca473623", - ethereum: "0x431ad2ff6a9c365805ebad47ee021148d6f7dbe0", - optimism: ADDRESSES.op_bnb.USDT, - polygon: "0x08C15FA26E519A78a666D19CE5C646D55047e0a3", - }, - { - // USX - arbitrum: "0x641441c631e2F909700d2f41FD87F0aA6A6b4EDb", - bsc: "0xb5102cee1528ce2c760893034a4603663495fd72", - ethereum: ADDRESSES.ethereum.USX, - optimism: "0xbfD291DA8A403DAAF7e5E9DC1ec0aCEaCd4848B9", - polygon: "0xCf66EB3D546F0415b368d98A95EAF56DeD7aA752", - }, - { - // PERP - arbitrum: "0x753d224bcf9aafacd81558c32341416df61d3dac", - bsc: "0x4e7f408be2d4e9d60f49a64b89bb619c84c7c6f5", - ethereum: "0xbc396689893d065f41bc2c6ecbee5e0085233447", - optimism: "0x9e1028f5f1d5ede59748ffcee5532509976840e0", - }, - { - // KROM - arbitrum: "0x55ff62567f09906a85183b866df84bf599a4bf70", - ethereum: "0x3af33bef05c2dcb3c7288b77fe1c8d2aeba4d789", - optimism: "0xf98dcd95217e15e05d8638da4c91125e59590b07", - polygon: "0x14Af1F2f02DCcB1e43402339099A05a5E363b83c", - }, - { - // TCR - arbitrum: "0xa72159fc390f0e3c6d415e658264c7c4051e9b87", - ethereum: "0x9c4a4204b79dd291d6b6571c5be8bbcd0622f050", - }, - { - // PKEX - ethereum: "0xe6f143a0e0a8f24f6294ce3432ea10fad0206920", - }, - { - // ZLK - moonbeam: "0x3fd9b6c9a24e09f67b7b706d72864aebb439100c", - moonriver: "0x0f47ba9d9bde3442b42175e51d6a367928a1173b", - }, - { - // PERL - bsc: "0x0f9e4d49f25de22c2202af916b681fbb3790497b", - ethereum: "0xeca82185adce47f39c684352b0439f030f860318", - }, - { - // BMI - bsc: "0x3e1b4Ff4AE3Ab8f0Cb40a34a6ad3fC817F7dA2b6", - ethereum: "0x725c263e32c72ddc3a19bea12c5a0479a81ee688", - polygon: "0x3e1b4Ff4AE3Ab8f0Cb40a34a6ad3fC817F7dA2b6", - }, - { - // JPEG - avax: "0x6241af3817Db48a7F9E19FD9446d78E50936d275", - bsc: "0x4bfce5a1acc3b847afa9579ba91da33b08e66fb7", - ethereum: "0x4bfce5a1acc3b847afa9579ba91da33b08e66fb7", - }, - { - // MASK - bsc: "0x2eD9a5C8C13b93955103B9a7C167B67Ef4d568a3", - ethereum: "0x69af81e73A73B40adF4f3d4223Cd9b1ECE623074", - }, - { - // REEF - bsc: "0xF21768cCBC73Ea5B6fd3C687208a7c2def2d966e", - ethereum: "0xFE3E6a25e6b192A42a44ecDDCd13796471735ACf", - }, - { - // THALES - ethereum: "0x8947da500Eb47F82df21143D0C01A29862a8C3c5", - optimism: "0x217D47011b23BB961eB6D93cA9945B7501a5BB11", - }, - { - // TORN - bsc: "0x1ba8d3c4c219b124d351f603060663bd1bcd9bbf", - ethereum: "0x77777FeDdddFfC19Ff86DB637967013e6C6A116C", - }, - { - // HUH - bsc: "0xc15e89f2149bCC0cBd5FB204C9e77fe878f1e9b2", - ethereum: "0x86D49fbD3B6f989d641E700a15599d3b165002AB", - polygon: "0x08648471B5AAd25fEEeb853d6829048f3Fc37786", - }, - { - arbitrum: ADDRESSES.bsc.iZi, - bsc: ADDRESSES.bsc.iZi, - ethereum: "0x9ad37205d608B8b219e6a2573f922094CEc5c200", - }, - { - // ESW - astar: "0xb361DAD0Cc1a03404b650A69d9a5ADB5aF8A531F", - aurora: "0xd2Fa7C9386040f260e3Ec934601982aD4Cd7902B", - ethereum: "0x5a75A093747b72a0e14056352751eDF03518031d", - polygon: "0xd2A2a353D28e4833FAFfC882f6649c9c884a7D8f", - shiden: "0xb4BcA5955F26d2fA6B57842655d7aCf2380Ac854", - }, - { - // ASVA - bsc: "0xF7b6d7E3434cB9441982F9534E6998C43eEF144a", - polygon: "0xE7E0bA6f84D843d17Cb8410810Bf3E8Bcda0caA1", - }, - { - // ANML - ethereum: "0x38B0e3A59183814957D83dF2a97492AED1F003e2", - polygon: "0xEcc4176B90613Ed78185f01bd1E42C5640C4F09d", - }, - { - // GOVI - arbitrum: ADDRESSES.arbitrum.GOVI, - ethereum: "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", - polygon: ADDRESSES.polygon.GOVI, - }, - { - // PEOPLE - ethereum: "0x7a58c0be72be218b41c608b7fe7c5bb630736c71", - }, - { - // SOS - ethereum: "0x3b484b82567a09e2588a13d54d032153f0c0aee0", - }, - { - // OLO - boba: "0x5008F837883EA9a07271a1b5eB0658404F5a9610", - }, - { - // oneDODO - ethereum: "0xcA37530E7c5968627BE470081d1C993eb1dEaf90", - }, - { - celo: ADDRESSES.celo.cUSD, - }, - { - syscoin: ADDRESSES.syscoin.WSYS, - bsc: "0x6822A778726CD2f0d4A1Cfaca2D04654e575cC82", - ethereum: "0xF3C96924d85566C031ddc48DbC63B2d71da6D0f6", - }, - { - // PSP - ethereum: "0xcAfE001067cDEF266AfB7Eb5A286dCFD277f3dE5", - bsc: "0xcAfE001067cDEF266AfB7Eb5A286dCFD277f3dE5", - }, - { - // WXT - ethereum: "0xa02120696c7b8fe16c09c749e4598819b2b0e915", - }, - { - ethereum: ADDRESSES.ethereum.FRAX, - }, - { - // FXS - ethereum: ADDRESSES.ethereum.FXS, - }, - { - // MAI - polygon: "0xa3fa99a148fa48d14ed51d610c367c61876997f1", - }, - { - // ATL - bsc: "0x1fD991fb6c3102873ba68a4e6e6a87B3a5c10271", - }, - { - bsc: ADDRESSES.bsc.WBNB, - }, - { - avax: ADDRESSES.avax.WAVAX, - }, - { - fantom: ADDRESSES.fantom.WFTM, - }, - { - // AMY - arbitrum: "0x8fbd420956fdd301f4493500fd0bcaaa80f2389c", - }, - { - // GHX - ethereum: "0x728f30fa2f100742c7949d1961804fa8e0b1387d", - }, - { - // SAFLE - polygon: "0x04b33078ea1aef29bf3fb29c6ab7b200c58ea126", - }, - { - // WREVA - bsc: "0xec81aa154d470c6857219b529de3f1d755ee2ae7", - }, - { - // MARK - heco: "0x779a8134750809F79Cf0Ba48ee0fF1A5c41a8fDC", - }, - { - // PLATO - heco: "0x4668e0E7cC545De886aBF038067F81cD4DC0924b", - }, - { - shiden: ADDRESSES.shiden.WSDN, - }, - { - // CONV - ethereum: "0xc834fa996fa3bec7aad3693af486ae53d8aa8b50", - }, - { - // TSD - avax: "0x4fbf0429599460d327bd5f55625e30e4fc066095", - }, - { - polygon: ADDRESSES.polygon.WMATIC_2, - }, - { - ethereum: ADDRESSES.ethereum.AAVE, - }, - { - ethereum: ADDRESSES.ethereum.CRV, - }, - { - // AVG - ethereum: "0xa41f142b6eb2b164f8164cae0716892ce02f311f", - }, - { - // AELIN - optimism: "0x61baadcf22d2565b0f471b291c475db5555e0b76", - }, - { - // CGG - ethereum: "0x1fe24f25b1cf609b9c4e7e12d802e3640dfa5e43", - }, - { - // REVA - bsc: "0x4FdD92Bd67Acf0676bfc45ab7168b3996F7B4A3B", - }, - { - // IMX - ethereum: "0x7b35ce522cb72e4077baeb96cb923a5529764a00", - }, - { - // WAGMIv1 - boba: "0xCe055Ea4f29fFB8bf35E852522B96aB67Cbe8197", - }, - { - ethereum: ADDRESSES.ethereum.LUSD, - }, - { - // JONES - arbitrum: "0x10393c20975cF177a3513071bC110f7962CD67da", - }, - { - // SWAY - polygon: "0x262B8AA7542004f023B0eB02bc6b96350A02b728", - }, - { - // JADE - bsc: "0x7ad7242A99F21aa543F9650A56D141C57e4F6081", - }, - { - // MELOS - ethereum: "0x1afb69DBC9f54d08DAB1bD3436F8Da1af819E647", - }, - { - // MSU - ethereum: "0xdfD8D604951eBF1b2297285F1B68de140C43992b", - }, - { - // UCG - ethereum: "0x7D92a06808B4c4833623F809218ed403e4A85FE1", - }, - { - // MGH - ethereum: "0x8765b1A0eb57ca49bE7EACD35b24A574D0203656", - }, - { - // ASTR - astar: "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720", - }, - { - // ANML - ethereum: "0x38B0e3A59183814957D83dF2a97492AED1F003e2", - }, - { - // BLANK - ethereum: "0x41A3Dba3D677E573636BA691a70ff2D606c29666", - }, -]; - -function chainTvl(chain) { - return async (time, _, {[chain]: block}) => { - const toa = [] - liquidityBridgeTokens.forEach(token => { - if (!token[chain]) - return; - toa.push([token[chain], bridgeContractV1]) - if (liquidityBridgeContractsV2[chain]) - liquidityBridgeContractsV2[chain].filter(owner => owner.toLowerCase() !== bridgeContractV1.toLowerCase()) - .forEach(owner => toa.push([token[chain], owner])) - }) - const balances = await sumTokens({}, toa, block, chain, undefined) - return balances - }; -} - -let chains = liquidityBridgeTokens.reduce((allChains, token) => { - Object.keys(token).forEach((key) => allChains.add(key)); - return allChains; -}, new Set()); - -Object.keys(liquidityBridgeContractsV2).forEach(chain => chains.add(chain)) - -Array.from(chains).forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } -}) -module.exports.methodology = `Tokens bridged via cBridge are counted as TVL`; -module.exports.misrepresentedTokens = true; -module.exports.hallmarks = [ - [1651881600, "UST depeg"], -]; diff --git a/projects/celeron/index.js b/projects/celeron/index.js deleted file mode 100644 index a0e5fe29f29..00000000000 --- a/projects/celeron/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - mode: { - celeron: '0x8b83ECC4EF8FaEc5c05b7D6EC002B659BE137120', // CEL_ADDRESS - staking: '0x3384D85EC14163a9d35eeAb44261390aafD70f82', // FARM_ADDRESS - farms: ['0x8D25067901B637D0eF1DF3163D782d89d53F403A'], // FARM_IONIC_ADDRESS - }, - berachain: { - celeron: '0xD3415dCFbdA117814e24a4cbaf61128A4D79b860', // BERACHAIN_CEL_ADDRESS - staking: '0xAbFc9bb50af39D1e6f99836Ff2EeCc39778808a1', // BERACHAIN_FARM_ADDRESS - farms: [ - '0xAbFc9bb50af39D1e6f99836Ff2EeCc39778808a1', // BERACHAIN_FARM_ADDRESS - '0x5CC7BebF2A05fC4b7F259C8688Ff0d80735E36FE', // BERACHAIN_FARM_LP_ADDRESS - '0xd69836d43024692eB57fd7DFe417dd8da3A7c91c', // BERACHAIN_FARM_HONEY_ADDRESS - '0xC03a0B83d83Cc99EEE73222BC70BEB6b2010D3c5', // BERACHAIN_FARM_EULER_USDC_ADDRESS - ], - } -} - -const abis = { - getPoolTotalTvl: "function getPoolTotalTvl() view returns (tuple(uint256 pid, address assets, uint256 tvl)[])" -} - -const tvl = async (api) => { - const { farms } = config[api.chain] - const pools = (await api.multiCall({ abi: abis.getPoolTotalTvl, calls: farms })).flat() - pools.forEach(({ assets, tvl }) => { api.add(assets, tvl) }) - return sumTokens2({ api, resolveLP: true }); -} - -const staking = async (api) => { - const { celeron, staking } = config[api.chain] - const pools = await api.call({ abi: abis.getPoolTotalTvl, target: staking }) - const target = pools.find((i) => i.assets === celeron) - api.add(celeron, target.tvl) -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl, staking } -}) - -module.exports.hallmarks = [ - [1749329197, "Rug Pull"], -] diff --git a/projects/celery/index.js b/projects/celery/index.js deleted file mode 100644 index 61d22b7275d..00000000000 --- a/projects/celery/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require('../helper/staking') - -const CHAIN = "smartbch" - -// token contract -const CLY = "0x7642df81b5beaeeb331cc5a104bd13ba68c34b91" - -module.exports = { - methodology: "Staked CLY tokens are counted towards staking metric", - smartbch: { - tvl: () => ({}), - staking: staking(CLY, CLY, CHAIN, "celery", 18), - }, -} diff --git a/projects/cellana/index.js b/projects/cellana/index.js deleted file mode 100644 index 737c2d3b59e..00000000000 --- a/projects/cellana/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { functionViewWithApiKey } = require("../helper/chain/aptos"); -const cellanaAddress = "0x4bf51972879e3b95c4781a5cdcb9e1ee24ef483e7d22f2d903626f126df62bd1" -const apiKey = "AG-D6FATNFSEBBKFTMMXVFRXKIDZWJJFFDPC" - -async function _getPools() { - return functionViewWithApiKey({ functionStr: `${cellanaAddress}::liquidity_pool::all_pool_addresses`, type_arguments: [], args: [], apiKey: apiKey }) -} - -async function _getPoolReserves(poolAddress) { - return functionViewWithApiKey({ functionStr: `${cellanaAddress}::liquidity_pool::pool_reserves`, type_arguments: ['0x1::object::ObjectCore'], args: [poolAddress], apiKey: apiKey }) -} - -async function _getTokenOfPool(poolAddress) { - return functionViewWithApiKey({ functionStr: `${cellanaAddress}::liquidity_pool::supported_token_strings`, type_arguments: [], args: [poolAddress], apiKey: apiKey }) -} - - -async function _getTvl() { - const pools = (await _getPools()) - const tokenTvlMap = new Map(); - - for (const pool of pools) { - const poolAddress = pool.inner - try { - const reserves = await _getPoolReserves(poolAddress); - const tokens = await _getTokenOfPool(poolAddress); - - if (!reserves || !tokens || tokens.length < 2) { - console.warn(`Invalid data for pool ${poolAddress}`); - continue; - } - - const reserveX = Number(reserves[0] || 0); - const reserveY = Number(reserves[1] || 0); - - const tokenX = tokens[0]; - const tokenY = tokens[1]; - - tokenTvlMap.set(tokenX, (tokenTvlMap.get(tokenX) || 0) + reserveX); - tokenTvlMap.set(tokenY, (tokenTvlMap.get(tokenY) || 0) + reserveY); - - } catch (error) { - console.error(`Error processing pool ${poolAddress}:`, error); - } - } - return tokenTvlMap -} - -module.exports = { - timetravel: false, - methodology: - "Counts the lamports in each coin container in the Cellena contract account.", - aptos: { - - tvl: async (api) => { - const tokenTvlMap = await _getTvl() - console.log(tokenTvlMap) - for (const [key, value] of tokenTvlMap) { - api.add(key, value) - } - } - } -} \ No newline at end of file diff --git a/projects/cells/index.js b/projects/cells/index.js deleted file mode 100644 index ae98642d774..00000000000 --- a/projects/cells/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - bsc: { tvl: () => 0 }, - arbitrum: { tvl: () => 0 }, - hallmarks: [ - ['2023-06-11', 'Project rugged'], - ], - deadFrom: '2023-06-11' -} \ No newline at end of file diff --git a/projects/cemetery/index.js b/projects/cemetery/index.js deleted file mode 100644 index b55b1f79ac2..00000000000 --- a/projects/cemetery/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0xe5483461a024524e0a76B935A56B8D161E3F0D82', - nativeToken: '0x8bD04EE83a6076d1216237C8B91f7EeE3AccaB35' -}) -module.exports.hallmarks = [ - [1646524800,"Rug Pull"] -], -module.exports.deadFrom='2022-03-06' - diff --git a/projects/cennz-bridge.js b/projects/cennz-bridge.js deleted file mode 100644 index 076c7a10ec4..00000000000 --- a/projects/cennz-bridge.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport, nullAddress } = require('./helper/unwrapLPs'); - -module.exports = { - methodology: "Tracks funds locked in the ERC20Peg contract on Ethereum", - ethereum: { - tvl: sumTokensExport({ owner: '0x76BAc85e1E82cd677faa2b3f00C4a2626C4c6E32', tokens: [nullAddress] }) - } -} \ No newline at end of file diff --git a/projects/centrifuge/index.js b/projects/centrifuge/index.js deleted file mode 100644 index 5516a059a5f..00000000000 --- a/projects/centrifuge/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const nullAddress = ADDRESSES.null - -const CONFIG = { - ethereum: { - factories : [ - { START_BLOCK: 20432393, TOKEN_FACTORY_V2: '0x91808B5E2F6d7483D41A681034D7c9DbB64B9E29' }, // v2 - { START_BLOCK: 22924277, TOKEN_FACTORY_V3: '0xd30Da1d7F964E5f6C2D9fE2AAA97517F6B23FA2B' }, // v3 - ], - assets: { USDC: ADDRESSES.ethereum.USDC } - }, - base: { - factories : [ - { START_BLOCK: 17854404, TOKEN_FACTORY_V2: '0x7f192F34499DdB2bE06c4754CFf2a21c4B056994' }, // v2 - { START_BLOCK: 32901390, TOKEN_FACTORY_V3: '0xd30Da1d7F964E5f6C2D9fE2AAA97517F6B23FA2B' }, // v3 - ], - assets: { USDC: ADDRESSES.base.USDC } - }, - arbitrum: { - factories : [ - { START_BLOCK: 238245701, TOKEN_FACTORY_V2: '0x91808B5E2F6d7483D41A681034D7c9DbB64B9E29' }, // v2 - { START_BLOCK: 357984300, TOKEN_FACTORY_V3: '0xd30Da1d7F964E5f6C2D9fE2AAA97517F6B23FA2B' }, // v3 - ], - assets: { USDC: ADDRESSES.arbitrum.USDC_CIRCLE } - }, - avax: { - factories : [ - { START_BLOCK: 65493376, TOKEN_FACTORY_V3: '0xd30Da1d7F964E5f6C2D9fE2AAA97517F6B23FA2B' }, // v3 - ], - assets: { USDC: ADDRESSES.avax.USDC } - }, - bsc: { - factories : [ - { START_BLOCK: 54801665, TOKEN_FACTORY_V3: '0xd30Da1d7F964E5f6C2D9fE2AAA97517F6B23FA2B' }, // v3 - ], - assets: { USDC: ADDRESSES.bsc.USDC } - }, - plume_mainnet: { - factories : [ - { START_BLOCK: 15715268, TOKEN_FACTORY_V3: '0xd30Da1d7F964E5f6C2D9fE2AAA97517F6B23FA2B' }, // v3 - ], - assets: { USDC: ADDRESSES.plume_mainnet.USDC } - }, -} - -const abis = { - getVault: "function vault(address asset) external view returns (address)", - totalAssets: "function totalAssets() external view returns (uint256)", -}; - -const eventAbis = { - deployTranches: 'event DeployTranche(uint64 indexed poolId, bytes16 indexed trancheId, address indexed tranche)', - addShareClass: 'event AddShareClass(uint64 indexed poolId, bytes16 indexed scId, address token)' -} - -const getTokens = async (api, block, factories) => { - const logs = await Promise.all( - factories.map(async (factory) => { - let allTranches = [] - - if (factory.TOKEN_FACTORY_V2) { - const tranches = await api.getLogs({ target: factory.TOKEN_FACTORY_V2, fromBlock: factory.START_BLOCK, toBlock: block, eventAbi: eventAbis.deployTranches, onlyArgs: true }) - allTranches.push(...tranches.map(({ tranche }) => tranche)) - } - - if (factory.TOKEN_FACTORY_V3) { - const shareClasses = await api.getLogs({ target: factory.TOKEN_FACTORY_V3, fromBlock: factory.START_BLOCK, toBlock: block, eventAbi: eventAbis.addShareClass, onlyArgs: true }) - allTranches.push(...shareClasses.map(({ token }) => token)) - } - - return allTranches - }) - ) - - return [...new Set(logs.flat())] -} - -const tvl = async (api) => { - const chain = api.chain - const block = await api.getBlock() - 100 - const { factories, assets: { USDC } } = CONFIG[chain] - const tokens = await getTokens(api, block, factories) - if (!tokens) return; - const vaults = (await api.multiCall({ calls: tokens.map((t) => ({ target: t, params: [USDC] })), abi: abis.getVault })).filter(addr => addr.toLowerCase() !== nullAddress) - await api.erc4626Sum({ calls: vaults, tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets', permitFailure: true }) -} - -module.exports.methodology = `TVL corresponds to the total USD value of tokens minted on Centrifuge across Ethereum, Base, and Arbitrum.` -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/cerberusdao/api.js b/projects/cerberusdao/api.js deleted file mode 100644 index b83e37f2502..00000000000 --- a/projects/cerberusdao/api.js +++ /dev/null @@ -1,8 +0,0 @@ -const index = require('./index') - -module.exports = { - ethereum: { - tvl: () => 0, - staking: index.ethereum.staking, - } -} \ No newline at end of file diff --git a/projects/cerberusdao/index.js b/projects/cerberusdao/index.js deleted file mode 100644 index 3c458fb001c..00000000000 --- a/projects/cerberusdao/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x56D595ea5591D264bc1Ef9E073aF66685F0bFD31" -module.exports = { - deadFrom: 1648765747, - ...ohmTvl(treasury, [ - //SHIB - [ADDRESSES.ethereum.INU, false], - //FLOKI - ["0x43f11c02439e2736800433b4594994bd43cd066d", false], - //WETH - [ADDRESSES.ethereum.WETH, false], - //uniswap LP shib/weth - ["0xb5b6c3816c66fa6bc5b189f49e5b088e2de5082a", true], - ], "ethereum", "0x95deaF8dd30380acd6CC5E4E90e5EEf94d258854", "0x8a14897eA5F668f36671678593fAe44Ae23B39FB") -} \ No newline at end of file diff --git a/projects/cerra/index.js b/projects/cerra/index.js deleted file mode 100644 index 5c3d308b1bb..00000000000 --- a/projects/cerra/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); - -const LENDING_SCRIPT = "addr1z878lgw0676mfkusf0f2h9wl3w5q2zu0klrlcamv6g2werc0pqnxu0fg7wvwgjtgzvg6lg6avzczmwf84aclygrvlkhqfmh5zc"; -const AMM_SCRIPT = "addr1zyl8u7cw93g99g2e68cq3k27ad7rd8p6yy3yg9vesgahrus0pqnxu0fg7wvwgjtgzvg6lg6avzczmwf84aclygrvlkhq2a0paj"; -const BATCHER_SCRIPT = "addr1wye2x4ygs0e3u7wp8d2q82uj60gvfe2wjgc284evk8a5cfqw2hvmv"; - -async function tvl() { - return sumTokens2({ scripts: [LENDING_SCRIPT, AMM_SCRIPT, BATCHER_SCRIPT] }) -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - } -}; diff --git a/projects/cesta/abi.json b/projects/cesta/abi.json deleted file mode 100644 index 09d3d4c314a..00000000000 --- a/projects/cesta/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllPoolInUSD": "uint256:getAllPoolInUSD" -} \ No newline at end of file diff --git a/projects/cesta/index.js b/projects/cesta/index.js deleted file mode 100644 index c36f170140d..00000000000 --- a/projects/cesta/index.js +++ /dev/null @@ -1,9 +0,0 @@ -async function avax(timestamp, block) { - return { }; -} - -module.exports = { - avax: { - tvl: avax, - }, -}; diff --git a/projects/ceto-swap/index.js b/projects/ceto-swap/index.js deleted file mode 100644 index bd9840a6889..00000000000 --- a/projects/ceto-swap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -const factory = '0xf50c8e257ccf3e2b58651f78e3c2dc83446d9c47'; - -module.exports = { - manta: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/cetus/index.js b/projects/cetus/index.js deleted file mode 100644 index 4fb1c536ab5..00000000000 --- a/projects/cetus/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { dexExport, getResources } = require('../helper/chain/aptos') -const sui = require('../helper/chain/sui') -const { transformDexBalances } = require('../helper/portedTokens') -const { PromisePool } = require('@supercharge/promise-pool') -const sdk = require('@defillama/sdk') - -async function tvl() { - let data = await getResources('0xa7f01413d33ba919441888637ca1607ca0ddcbfa3c0a9ddea64743aaa560e498') - const poolAddresses = data.find(i => i.type.includes('::factory::Pools')).data.data.data.map(i => i.value) - data = [] - await PromisePool - .withConcurrency(7) - .for(poolAddresses) - .process(addPool) - - return transformDexBalances({ chain: 'aptos', data }) - - async function addPool(poolAddr) { - const res = await getResources(poolAddr) - const val = res.find(i => i.type.includes('::pool::Pool')) - const [token0, token1] = val.type.split('::pool::Pool<')[1].replace('>', '').split(', ') - data.push({ - token0, - token1, - token0Bal: val.data.coin_a.value, - token1Bal: val.data.coin_b.value, - }) - } -} - -async function suiTVL(api) { - const poolObjectID = '0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0' - const { fields: { list: { fields: listObject } } } = await sui.getObject(poolObjectID) - const items = (await sui.getDynamicFieldObjects({ parent: listObject.id.id })).map(i => i.fields.value.fields.value) - const poolInfo = await sui.getObjects(items.map(i => i.fields.pool_id)) - poolInfo.forEach(({ type: typeStr, fields }) => { - const [coinA, coinB] = typeStr.replace('>', '').split('<')[1].split(', ') - api.add(coinA, fields.coin_a) - api.add(coinB, fields.coin_b) - }) -} - -async function staking(api) { - const xCetusManager = '0x838b3dbade12b1e602efcaf8c8b818fae643e43176462bf14fd196afa59d1d9d' - const xCetusManagerInfo = await sui.getObject(xCetusManager) - const xCetusPool = { - type: '0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606::xcetus::XcetusManager<0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS, 0x2::sui::SUI>', - fields: { - coin_a: xCetusManagerInfo.fields.treasury.fields.total_supply.fields.value, - coin_b: '0', - } - } - api.add('0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS', xCetusPool.fields.coin_a) - return api.getBalances() -} - -module.exports = dexExport({ - account: '0xec42a352cc65eca17a9fa85d0fc602295897ed6b8b8af6a6c79ef490eb8f9eba', - poolStr: 'amm_swap::Pool<', - token0Reserve: i => i.data.coin_a.value, - token1Reserve: i => i.data.coin_b.value, -}) - -module.exports = { - aptos: { - tvl: sdk.util.sumChainTvls([module.exports.aptos.tvl, tvl]) - }, - sui: { - tvl: suiTVL, - staking, - } -} \ No newline at end of file diff --git a/projects/cex-io/index.js b/projects/cex-io/index.js deleted file mode 100644 index 3335aace857..00000000000 --- a/projects/cex-io/index.js +++ /dev/null @@ -1,107 +0,0 @@ -const { cexExports } = require('../helper/cex') - -const config = { - bitcoin: { - owners: [ - '3HfJ6brzer2fZob1ZZCyeUUUTD6vzXWdJv', - '3FnBbsWjxLejVsMMHEqDt6B19dEupBaZwK', - '32L7Yo5JzwnGtRgeGxrXxc8LT6CpQsL3d4', - '3E4ujC6LQVFxhEcZ1E7ZTGYhcb67WFAuoC', - ], - }, - - ethereum: { - owners: [ - '0xc9f5296eb3ac266c94568d790b6e91eba7d76a11', - '0x2818e54e0489274F61f33F163504074beE5932CA', - '0xc48c74C4eDA47f915e8580391EC2F386F769D996', - ], - }, - - polkadot: { - owners: [ - '16k7GSZckaQEqatoxpvxy8QgGSquULbKJa9HgEeQjZV8YyCr', - '14ct4em2mEorhkQBFg8eJPYyHB1y81L8tPz3qHwL1jJuDh4X', - '12xu4vLmFGvhgX93JXVxxLJdkkngkKj4WQQcJXt2Es55G9S9', - ], - }, - - litecoin: { - owners: [ - 'MPVaSwnMnbRortv8XajivUoiYjKMoUfsKp', - 'MTgZ3Kjiwf8Rv3HWcuAF3Ei7b6sSV9e4Nv', - 'MSEA4EakQkZ1jjr5Y613thWJqPMaQEBRdw', - 'MGAuMM1KGz8x3H2B6fC2az9BDwop7FAoqa', - 'MSkqCeihbC8vaZXQ8XB8R72kx9qLYARLWo', - ], - }, - - ripple: { - owners: [ - 'rE1sdh25BJQ3qFwngiTBwaq3zPGGYcrjp1', - ], - }, - - sui: { - owners: [ - '0x8a9eb4260c0313f0c23d5858b5296235933534ff0f1692c7c1b3881fbbe53c0a', - '0x3c7ea0026464b3ded7f3b0431e24c17bb6714d9c5de751433dacfec3fe6bc36b', - ], - }, - - tron: { - owners: [ - 'TQ8y7omRyKSq42Tri398txQCQE4wxjk97Q', - 'TS8w3kpkav9p1dC68BsKSRfefz5ta2WMHd', - ], - }, - - cosmos: { - owners: [ - 'cosmos1ruqrgv8wh4fqm24uyeuvmg8jwv737qv9vxl8q9', - ], - }, - - solana: { - owners: [ - '2QwUbEACJ3ppwfyH19QCSVvNrRzfuK5mNVNDsDMsZKMh', - 'DUru5ZfCdCnjPFuY7NPniV3hhZqNJLgn2sBZJGaMc2Sj', - 'CGRNicgpirZd3unSzn1Y34k7w31rQftTbaJwEuQu31XP', - ], - }, - - bsc: { - owners: [ - '0xc9f5296eb3ac266c94568d790b6e91eba7d76a11', - '0xad6ec9801f04f45e7f6d907ec6b72246b66ff4f3', - '0x278aa8f0d35c5582587c883ce6393542e54476a1', - '0x8E7B542d93901560583C0c22D156eccA5191684d', - '0xc48c74C4eDA47f915e8580391EC2F386F769D996', - ], - }, - - stellar: { - owners: [ - 'GB3RMPTL47E4ULVANHBNCXSXM2ZA5JFY5ISDRERPCXNJUDEO73QFZUNK', - ], - }, - - cardano: { - owners: [ - 'Ae2tdPwUPEYz3R9oSTPe1JBSfMbWSMtejQvdP31wqhWyXBFLcBiedk4esAe', - 'Ae2tdPwUPEYyjYzxV1MZpHZRh5DhfRRpgGUstspt1hHoo26P8p9cFcvibr1', - 'Ae2tdPwUPEZFH7gTGv9bTCiWWiid9ghExS2d4fT7s4FfN5kdRE4Wto6oAJW', - ], - }, - - polygon: { - owners: [ - '0xc9f5296eb3ac266c94568d790b6e91eba7d76a11', - '0x8E7B542d93901560583C0c22D156eccA5191684d', - '0xc48c74C4eDA47f915e8580391EC2F386F769D996', - ], - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'Reserves include all addresses publicly disclosed here: https://blog.cex.io/wallet-address-list. External custodial wallets are excluded.' diff --git a/projects/cexdex-stacking/index.js b/projects/cexdex-stacking/index.js deleted file mode 100644 index 776be9cfc4d..00000000000 --- a/projects/cexdex-stacking/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const token_USDC = ADDRESSES.telos.ETH; -const token_USDT = ADDRESSES.moonriver.USDT; -const masterchef = "0x451c3a3594aEB75EDcb13F132dc11D7d2972861A"; - -module.exports = { - kava: { - tvl: sumTokensExport({ - owner: masterchef, - tokens: [token_USDC, token_USDT] - }) - } -} diff --git a/projects/cgo-finance/index.js b/projects/cgo-finance/index.js deleted file mode 100644 index 4e47d157918..00000000000 --- a/projects/cgo-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { yieldHelper, } = require("../helper/yieldHelper") - -module.exports = yieldHelper({ - project: 'cougar-finance', - chain: 'cronos', - masterchef: '0x5795BE23A2C330209849e0D1D19cc05755E23Ca2', - nativeToken: '0x869c3e35ef9e5f50003d9a2a80f1d61d670d4cb6', -}) \ No newline at end of file diff --git a/projects/cgx-finance/index.js b/projects/cgx-finance/index.js deleted file mode 100644 index 21d02ca1b4f..00000000000 --- a/projects/cgx-finance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -// --- Cronos Addresses --- -const MasterChefContractCronos = "0xd6b3bf54ef015259cc92880cd639c1f3c22e2b85"; -const CGX_Cronos = "0x40ff4581cf2d6e4e07b02034105d6435d4f3f84c"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(MasterChefContractCronos, "cronos", CGX_Cronos, false), - methodology: - "TVL includes all Farms and Pools seccion through MasterChef Contracts", -}; diff --git a/projects/chad-finance/index.js b/projects/chad-finance/index.js deleted file mode 100644 index ac552446137..00000000000 --- a/projects/chad-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const chad = "0xcce93540b80abf71b66e0a44fd71e322ce9c4d9e"; -const masterchad = "0xDA094Ee6bDaf65c911f72FEBfC58002e5e2656d1"; - -module.exports = { - ...masterChefExports(masterchad, "fantom", chad, false) -} - -module.exports.deadFrom = '2022-01-26' \ No newline at end of file diff --git a/projects/chadfinance/index.js b/projects/chadfinance/index.js deleted file mode 100644 index c2ec8199a70..00000000000 --- a/projects/chadfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -const factory = '0x0DF45d6e3BC41fd8e50d9e227215413053c003Ad' // same on all chains - -module.exports = uniV3Export({ - scroll: { factory, fromBlock: 5288937, } -}) \ No newline at end of file diff --git a/projects/chain-fusion/index.js b/projects/chain-fusion/index.js deleted file mode 100644 index 80c79de0d0b..00000000000 --- a/projects/chain-fusion/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { get } = require('../helper/http') - -// This address holds all the locked ETH as well as locked ERC20 tokens -const ethereum_contract = "0xb25eA1D493B49a1DeD42aC5B1208cC618f9A9B80"; - -async function ethereum_tvl(api) { - return sumTokens2({ owner: ethereum_contract, api, fetchCoValentTokens: true }); -} - -async function bitcoin_tvl(ts) { - var end = ts.timestamp - let start = end - 24 * 60 * 60; - const { data } = await get(`https://icrc-api.internetcomputer.org/api/v1/ledgers/mxzaz-hqaaa-aaaar-qaada-cai/total-supply?start=${start}&end=${end}&step=1`); - let [_, bal] = data.pop() - return { - 'coingecko:bitcoin': bal / 1e8 - }; -} - -module.exports = { - methodology: `We count the ETH and ERC20-Tokens on ${ethereum_contract} as the collateral for ckETH and ck-ERC20 tokens and we count BTC as the collateral for ckBTC`, - ethereum: { - tvl: ethereum_tvl, - }, - bitcoin: { tvl: bitcoin_tvl }, -}; diff --git a/projects/chainflip/index.js b/projects/chainflip/index.js deleted file mode 100644 index b015ace57f3..00000000000 --- a/projects/chainflip/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { staking } = require('../helper/staking') -const { graphQuery } = require('../helper/http'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const STATE_CHAIN_GATEWAY_CONTRACT = '0x826180541412D574cf1336d22c0C0a287822678A'; -const FLIP_TOKEN = '0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd' - -const poolsDataQuery = `{ - allPools { - nodes { - baseAsset - baseLiquidityAmount - quoteAsset - quoteLiquidityAmount - } - } - allBoostPools { - nodes { - asset - chain - feeTierPips - availableAmount - unavailableAmount - } - } - allDepositBalances { - groupedAggregates(groupBy: ASSET) { - sum { - amount - } - keys - } - } -}` - -const endpoint = 'https://cache-service.chainflip.io/graphql' - -async function tvl(api) { - // Call GraphQL and get tokens, add each to balance - const { - allPools: { nodes }, - allBoostPools: { nodes: bNodes }, - allDepositBalances: { groupedAggregates: uNodes } - } = await graphQuery(endpoint, poolsDataQuery); - - nodes.forEach(i => { - api.add(i.baseAsset, i.baseLiquidityAmount) - api.add(i.quoteAsset, i.quoteLiquidityAmount) - }) - bNodes.forEach(i => { - api.add(i.asset, i.availableAmount) - api.add(i.asset, i.unavailableAmount) - }) - uNodes.forEach(i => { - api.add(i.keys[0], i.sum.amount) - }) - return sumTokens2({ api }) -} - -module.exports = { - methodology: 'The number of FLIP tokens in the Chainflip State Chain Gateway Contract, as well as the total liquidity.', - start: '2023-11-23', // FLIP went live on 2023-11-23 12:00 UTC - ethereum: { - tvl: () => ({}), - staking: staking(FLIP_TOKEN, STATE_CHAIN_GATEWAY_CONTRACT), - }, - chainflip: { - tvl, - } -}; diff --git a/projects/chainge.js b/projects/chainge.js deleted file mode 100644 index 9e7bd63b61b..00000000000 --- a/projects/chainge.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensExport } = require('./helper/unwrapLPs') - -const config = { - rollux: { - chaingeAddress: "0x66ff2f0AC3214758D1e61B16b41e3d5e62CAEcF1", - tokens: [ - ADDRESSES.rollux.USDC, - ADDRESSES.rollux.USDT, - ADDRESSES.rollux.WBTC, - ADDRESSES.rollux.WETH, - ADDRESSES.rollux.WSYS, - ADDRESSES.null, // for native SYS - ] - } -} - -module.exports = { - methodology: "assets in liquidity are counted as TVL + balances of all tokens (USDC, USDT, WBTC, WETH, WSYS, and native SYS) held in the Chainge treasury address on the Rollux network. These tokens are used to provide liquidity for cross-chain swaps.", - fusion: { tvl: () => ({})} -} - -Object.keys(config).forEach(chain => { - const { chaingeAddress, tokens } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owner: chaingeAddress, tokens }) - } -}) diff --git a/projects/chaingpt/index.js b/projects/chaingpt/index.js deleted file mode 100644 index 28ce591961b..00000000000 --- a/projects/chaingpt/index.js +++ /dev/null @@ -1,113 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { getLogs } = require('../helper/cache/getLogs') -const { PromisePool } = require('@supercharge/promise-pool'); -const { blake2b } = require("blakejs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const cgpt = "0x9840652DC04fb9db2C43853633f0F62BE6f00f98"; -const stakingpool1 = "0x765a6ee976137801F2661c3644E1fde369A8ED18"; -const stakingpool2 = "0x62A402DEf6Ca37E9CA7a544bE34954748088CCEE"; -const stakingpool3 = "0x6eE8D743Eb8bEc665AaCdb535f2F100f040Ca6C5"; - -const config = { - ethereum: [ - { factory: '0xF276Bf68Dde58904439f11f6eD1511e89A7f5a4A', fromBlock: 17003869 }, - { factory: '0xa433b2748d718108323316f460F449453C36420E', fromBlock: 19003869 }, - ], - polygon: [ - { factory: '0xF276Bf68Dde58904439f11f6eD1511e89A7f5a4A', fromBlock: 45136100 }, - { factory: '0x9A6f649e421398eeab450b164D9b81Cc4A55A0eA', fromBlock: 57562100 }, - ], - bsc: [ - { factory: '0xc263365D628568C23d61BDDa24C8EB27CEF4E917', fromBlock: 30004999 }, - { factory: '0x5fC22396a063cabb5E09BA6ba449C9646155Ed3f', fromBlock: 39171504 }, - ], - arbitrum: [ - { factory: '0xF276Bf68Dde58904439f11f6eD1511e89A7f5a4A', fromBlock: 111699000 }, - { factory: '0xFB5cd8426FBC3b1f2ea4B113A5A37752B3098C79', fromBlock: 216556000 }, - ], - avax: [ - { factory: '0xF276Bf68Dde58904439f11f6eD1511e89A7f5a4A', fromBlock: 32665049 }, - { factory: '0x2D47310bB0C6A9D4ae2a1d6625eC0BEe4F473Bb6', fromBlock: 46082883 }, - ], - core: [ - { factory: '0x9840652DC04fb9db2C43853633f0F62BE6f00f98', fromBlock: 15191500, blacklistedTokens: ['0xcE87100A1dBAf576ebd063EB0890840346338689'] }, - ], - base: [ - { factory: '0xFB5cd8426FBC3b1f2ea4B113A5A37752B3098C79', fromBlock: 15137100, }, - ], - xlayer: [ - { factory: '0x9840652DC04fb9db2C43853633f0F62BE6f00f98', fromBlock: 2353300 }, - ], - linea: [ - { factory: '0xFB5cd8426FBC3b1f2ea4B113A5A37752B3098C79', fromBlock: 5006600 }, - ], - era: [ - { factory: '0xf25F7c9522cdCD839697F1644CFCA1312306885C', fromBlock: 37458600 }, - ] -} - -async function tvl(api) { - const chainConfigs = config[api.chain] - const ownerTokens = [] - const poolTokenMapping = {} - let blacklistedTokens = [] - - for (const chainConfig of chainConfigs) { - const { factory, fromBlock, blacklistedTokens: configBlacklistedTokens } = chainConfig - - if (configBlacklistedTokens) { - blacklistedTokens = blacklistedTokens.concat(configBlacklistedTokens) - } - - const logs2 = await getLogs({ - api, - target: factory, - eventAbi: 'event PresalePoolCreated (address registedBy, address indexed token, address indexed pool, uint256 poolId)', - fromBlock: fromBlock, - }) - - const pools = [] - const poolFromBlocks = {} - logs2.forEach((i) => { - pools.push(i.args.pool) - poolFromBlocks[i.args.pool] = i.blockNumber - }) - - await PromisePool - .withConcurrency(7) - .for(pools) - .process(async pool => { - const fromBlock = poolFromBlocks[pool] - if (!fromBlock) return; - const logs = await getLogs({ - api, - target: pool, - eventAbi: 'event PresalePoolCreated (address token, uint256 openTime, uint256 closeTime, address offeredCurrency, uint256 offeredCurrencyDecimals, uint256 offeredCurrencyRate, address wallet, address owner)', - fromBlock, - }) - logs.forEach(({ args: i }) => { - const key = i.token + '-' + i.owner - - if (!poolTokenMapping[key]) poolTokenMapping[key] = [] - poolTokenMapping[key].push(i.offeredCurrency) - }) - }) - - logs2.forEach(({ args: i }) => { - const key = i.token + '-' + i.registedBy - if (!poolTokenMapping[key]) return; - - ownerTokens.push([poolTokenMapping[key], i.pool]) - }) - } - - return sumTokens2({ api, ownerTokens, blacklistedTokens, permitFailure: true, }) - -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) - -module.exports.bsc.staking = stakings([stakingpool1, stakingpool2, stakingpool3,], cgpt) \ No newline at end of file diff --git a/projects/chainlink/index.js b/projects/chainlink/index.js deleted file mode 100644 index cc1c7d5567a..00000000000 --- a/projects/chainlink/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ethereum: { - staking: sumTokensExport({ owners: - ["0xbc10f2e862ed4502144c7d632a3459f49dfcdb5e", "0xa1d76a7ca72128541e9fcacafbda3a92ef94fdc5", "0x3feB1e09b4bb0E7f0387CeE092a52e85797ab889"] - , tokens: [ADDRESSES.ethereum.LINK] }), - tvl: async()=>({}) - } -} \ No newline at end of file diff --git a/projects/chainport/index.js b/projects/chainport/index.js deleted file mode 100644 index e0bdde516ae..00000000000 --- a/projects/chainport/index.js +++ /dev/null @@ -1,105 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport, nullAddress } = require("../helper/sumTokens"); - -//ETH - -const vault1eth = "0x894107b7b5051409f279e8300774b2f62febe057" -const vault2eth = "0xD2238E8c085E5059F8DFC52256530210bc7250F6" -const vault3eth = "0x7B8FDfCf79E72a9a8e656958647D139C0e16EA19" -const vault4eth = "0xfe83475880d3592833249baaacfec5ed51e29d82" -const vault5eth = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" -const vault6eth = "0x450aD18B4442ce2972Af2a7A12439984db4Afaf9" -const vault7eth = "0x763a0ca93af05ade98a52dc1e5b936b89bf8b89a" - -const portx = "0x104F3152D8ebFC3f679392977356962Ff36566aC" - -//BSC CHAIN - -const vault1bsc = "0x2cd90158baae285010a5ed7c549c2e5b4c0715f4"; -const vault2bsc = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - -//Polygon - -const vault1poly= "0xc07cd7fcda887119bff8e1eed2256ad433bee125"; -const vault2poly = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - -//Fantom - -const vault1ftm= "0xc30da5144d1b9f47ff86345fee14fe2da94c7203"; -const vault2ftm = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - - -const config = { - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.BUSD, - "0x8B3870Df408fF4D7C3A26DF852D41034eDa11d81", - "0x0000000DE40dfa9B17854cBC7869D80f9F98D823", - // "0x42Baf1f659D765C65ADE5BB7E08eb2C680360d9d", //CORNOPIA - // "0xBb3A8FD6Ec4bF0FDc6Cd2739b1e41192D12B1873", OBI - "0x3496B523e5C00a4b4150D6721320CdDb234c3079", - "0x5F0bc16D50F72d10b719dBF6845DE2E599eb5624", - "0x7659CE147D0e714454073a5dd7003544234b6Aa0", - "0x80D55c03180349Fff4a229102F62328220A96444", - "0xD567B5F02b9073aD3a982a099a23Bf019FF11d1c", - "0x4674a4F24C5f63D53F22490Fb3A08eAAAD739ff8", - "0x2653891204F463fb2a2F4f412564b19e955166aE", - "0x43A96962254855F16b925556f9e97BE436A43448", - "0x4da0C48376C277cdBd7Fc6FdC6936DEE3e4AdF75", - "0x8E0fE2947752BE0d5ACF73aaE77362Daf79cB379", - "0xFe459828c90c0BA4bC8b42F5C5D44F316700B430" - ], - owners: [vault1eth, vault2eth, vault3eth, vault4eth, vault5eth, vault6eth, vault7eth], - ownTokens: [portx], - }, - bsc: { - tokens: [ - nullAddress, - "0x5B6bf0c7f989dE824677cFBD507D9635965e9cD3", - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.WBNB, - "0xF93f6b686f4A6557151455189a9173735D668154" - ], - owners: [vault1bsc, vault2bsc], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.BUSD, - ADDRESSES.polygon.USDT, - "0x04d80CdF20285d5Ac590BBAd97C887b9C6781774", - "0x0000000000004946c0e9F43F4Dee607b0eF1fA1c", - "0xa5Eb60CA85898f8b26e18fF7c7E43623ccbA772C" - ], - owners: [vault1poly, vault2poly], - }, - fantom: { - tokens: [ - nullAddress, - "0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3", - "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355" - ], - owners: [vault1ftm, vault2ftm], - }, - cardano: { - owners: [ - 'addr1xxcqzje930yw0hykwhf0a89l62dmjwqqpfzdsppf8rhv9rg2czf3yffs8ar450sw50w4xn3pxxwvkz25s4ygh7pjq23ql4slcu', // multi sig cold storage - 'addr1v9nygflpcedeg004tfghu9hdxhg29sv9550sdyvvu4gxepq5ps9ra', // hot bridge address 1 - 'addr1vxku68zc6wrewfkrdaduw2t8yj7nsh0z6mg8vwuxh7pwjxckzjkjq' // hot bridge address 2 - ], - } -} - -Object.keys(config).forEach(chain => { - const {owners, tokens} = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens, logCalls: true }) - } -}) \ No newline at end of file diff --git a/projects/chaintools/index.js b/projects/chaintools/index.js deleted file mode 100644 index 91ede6f7d5f..00000000000 --- a/projects/chaintools/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const YIELD_BOOSTER_ADDRESS = "0x9954B485E650E067BCAD654F66CD67DAC122123b"; -const YIELD_VAULT_ADDRESS = "0xce2C952B27FCc41F868BDC32c9411F0759378ED0"; -const MULTISIG_ADDRESS = "0xb0Df68E0bf4F54D06A4a448735D2a3d7D97A2222"; -const CTLS_ADDRESS = "0xE155F64B9aD8c81318c313196a60c72e72fD2cD1"; -const UNI_V3_POOL = "0xc53489F27F4d8A1cdceD3BFe397CAF628e8aBC13"; // we cant count liquidity on uni v3 as your tvl -const INCENTIVES_WALLET = "0x9318a070a16E25554f098c6930B506123b66E19d"; // this is EOA, whis is it included in tvl? -const COMPOUNDING_KEEPER_ADDRESS = "0x5648C24Ea7cFE703836924bF2080ceFa44A12cA8"; // this is EOA, whis is it included in tvl? - -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - deadFrom: '10-04-2024', - methodology: "Total balances of the Uniswap V3 Pool plus protocol/user controlled balances (in WETH+ETH and CTLS)", - ethereum: { - tvl: sumTokensExport({ owners: [YIELD_VAULT_ADDRESS,], tokens: [ADDRESSES.ethereum.WETH, ADDRESSES.null, ], }), - staking: sumTokensExport({ owners: [YIELD_BOOSTER_ADDRESS, YIELD_VAULT_ADDRESS,], tokens: [CTLS_ADDRESS,], }), - }, -}; diff --git a/projects/chakra/index.js b/projects/chakra/index.js deleted file mode 100644 index da04fa52990..00000000000 --- a/projects/chakra/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - doublecounted: true, - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.chakra }) }, -}; diff --git a/projects/champagne-swap.js b/projects/champagne-swap.js deleted file mode 100644 index 6a0a805b2a4..00000000000 --- a/projects/champagne-swap.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -const { staking } = require('./helper/staking') - -const factory = '0xb31A337f1C3ee7fA2b2B83c6F8ee0CA643D807a0' -const champagneToken = '0x4957c1c073557BFf33C01A7cA1436D0d2409d439' -const masterChef = '0x15C17442eb2Cd3a56139e877ec7784b2dbD97270' - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://champagne.finance/ as the source. Staking accounts for the CHAM locked in MasterChef (0x15C17442eb2Cd3a56139e877ec7784b2dbD97270)', - bsc: { - staking: staking(masterChef, champagneToken), - tvl: getUniTVL({ useDefaultCoreAssets: true, factory, }) - }, -} diff --git a/projects/championfinance/index.js b/projects/championfinance/index.js deleted file mode 100644 index 8883c59340f..00000000000 --- a/projects/championfinance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { pool2 } = require('../helper/pool2') -const { stakings } = require("../helper/staking"); - -const chamTokenAddress = "0xc65bC1E906771e105fBAcBD8dfE3862Ee7BE378E"; -const chamRewardPoolAddress = "0x649EfBF7D96B06a2bD0fB134621AC9dD031923A4"; -const boardroomAddress = [ - "0x2d1a3d4D070B469C84E92d01dB0f94F1159Dbf3e", - "0x6001Ca31953459704ba7eA44A9387f68B4f1B639", // EVIC CHAM address - "0xa23a7Ca585d4651F1cf6277Cd29f5D7D344441e8", // EVIC-WETH.e address - ]; - -const lps = [ - "0x7748456409D4Eee3FaCE6aD0c492DD9853A1CC3d", // AVICUsdcLpAddress - "0xd6F18CDe9A52A9D815dd3C03C2325D453E32BDef", //CHAMUsdcLpAddress - "0x8392a728aEe00a26E99AF8e837c33591944e033a", // EVIC-WETH.e Address -]; - -module.exports = { - avax: { - tvl: () => ({}), - pool2: pool2(chamRewardPoolAddress, lps), - staking: stakings(boardroomAddress, chamTokenAddress) - } -}; diff --git a/projects/changex/index.js b/projects/changex/index.js deleted file mode 100644 index 58a3e4988df..00000000000 --- a/projects/changex/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { staking } = require("../helper/staking"); -const { get } = require("../helper/http"); -const CHANGEX_TOKEN_CONTRACT_ETH = "0x7051faed0775f664a0286af4f75ef5ed74e02754"; -const CHANGEX_TOKEN_STAKING_CONTRACT_ETH = - "0x48309699c488ad207Dd9d228bBb013cF848a6e50"; -const CHANGEX_TOKEN_CONTRACT_HYDRA = "bd3c617d271b3467bd9b83dda73c9288de2fb0c9"; -const CHANGEX_TOKEN_STAKING_CONTRACT_HYDRA = - "72c9a79baa83e698bf1dbf44d26e5bdca2d2bab1"; - -async function tvl(api) { - const data = await get('https://explorer.hydrachain.org/7001/contract/'+CHANGEX_TOKEN_STAKING_CONTRACT_HYDRA) - return { - changex: data.qrc20Balances.find(i => i.addressHex === CHANGEX_TOKEN_CONTRACT_HYDRA)?.balance / 1e18 - } -} - -module.exports = { - timetravel: false, - ethereum: { - tvl: () => ({}), - staking: staking( - CHANGEX_TOKEN_STAKING_CONTRACT_ETH, - CHANGEX_TOKEN_CONTRACT_ETH - ), - }, - hydra: { - staking: tvl, - }, -}; diff --git a/projects/channels/abi.json b/projects/channels/abi.json deleted file mode 100644 index 5181f2371dc..00000000000 --- a/projects/channels/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "markets": "function markets(address) view returns (bool isSupported, uint256 blockNumber, address interestRateModel, uint256 totalSupply, uint256 supplyRateMantissa, uint256 supplyIndex, uint256 totalBorrows, uint256 borrowRateMantissa, uint256 borrowIndex)", - "totalBorrows": "uint256:totalBorrows", - "borrowRatePerBlock": "uint256:borrowRatePerBlock", - "supplyRatePerBlock": "uint256:supplyRatePerBlock", - "underlying": "address:underlying", - "getCash": "uint256:getCash", - "getAllMarkets": "address[]:getAllMarkets" -} \ No newline at end of file diff --git a/projects/channels/index.js b/projects/channels/index.js deleted file mode 100644 index e4775339336..00000000000 --- a/projects/channels/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -const comptroller = { - heco: "0x8955aeC67f06875Ee98d69e6fe5BDEA7B60e9770", - bsc: "0x8Cd2449Ed0469D90a7C4321DF585e7913dd6E715", - arbitrum: "0x3C13b172bf8BE5b873EB38553feC50F78c826284" -} - -const ceth = { - bsc: "0x14E134365F754496FBC70906b8611b8b49f66dd4", - heco: "0x397c6D1723360CC1c317CdC9B2E926Ae29626Ff3", -} - -module.exports = { - ...Object.keys(comptroller).reduce((exp, chain) => { - exp[chain] = compoundExports2({ comptroller: comptroller[chain], cether: ceth[chain]}) - return exp - }, {}) -} - -module.exports.heco.borrowed = () => ({}) -module.exports.bsc.borrowed = () => ({}) -module.exports.arbitrum.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/chaotic.js b/projects/chaotic.js deleted file mode 100644 index 7afbcf5a5bd..00000000000 --- a/projects/chaotic.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require("./helper/unwrapLPs"); - -const CollateralSystemAddress = "0x78D4664408c06F2BeDc4f108f3Fc8f0AB017a0AE"; - -const tokens = { - CHAOS: "0xf4c6850B6e3288E81Be542909b76865a0BdF9585", -} - -module.exports = { - moonriver: { - tvl: sumTokensExport({ owner: CollateralSystemAddress, tokens: [tokens.CHAOS]}), - }, -}; diff --git a/projects/chargedefi/index.js b/projects/chargedefi/index.js deleted file mode 100644 index c16ca655606..00000000000 --- a/projects/chargedefi/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const { pool2 } = require("../helper/pool2"); -const { staking } = require("../helper/staking"); - -const chargeTokenAddress = "0x1C6bc8e962427dEb4106aE06A7fA2d715687395c"; - -const staticBUSDLpAddress = "0x69758726b04e527238B261ab00236AFE9F34929D"; -const chargeBUSDLpAddress = "0xB73b4eeb4c4912C1d1869219A22660eB478B57eA"; - -const chargeBoardroomAddress = "0x53D55291c12EF31b3f986102933177815DB72b3A"; -const staticBUSDBoardroomAddress = "0x7692bCB5F646abcdFA436658dC02d075856ac33C"; - -const chargeBUSDFarmStrategyAddress = "0xA1Be11eAB62283E9719021aCB49400F6d5918153"; -const staticBUSDFarmStrategyAddress = "0x53eE388f037876850D4fd60307FBA02e203A1C0e"; - - -async function tvl(timestamp, block, chainBlocks) { - const balances = {}; - let lpPositions = []; - let transformAddress = i => `bsc:${i}`; - - // Static-BUSD Boardroom TVL - const staticBUSDBoardroomBalance = sdk.api.erc20 - .balanceOf({ - target: staticBUSDLpAddress, - owner: staticBUSDBoardroomAddress, - block: chainBlocks["bsc"], - chain: "bsc", - }); - - lpPositions.push({ - token: staticBUSDLpAddress, - balance: (await staticBUSDBoardroomBalance).output, - }); - - // Charge Farms Static-BUSD TVL - const chargeFarmStaticBUSDBalance = sdk.api.erc20 - .balanceOf({ - target: staticBUSDLpAddress, - owner: staticBUSDFarmStrategyAddress, - block: chainBlocks["bsc"], - chain: "bsc", - }); - - lpPositions.push({ - token: staticBUSDLpAddress, - balance: (await chargeFarmStaticBUSDBalance).output, - }); - - await unwrapUniswapLPs( - balances, - lpPositions, - chainBlocks["bsc"], - "bsc", - transformAddress - ); - return balances; -} - -module.exports = { - methodology: 'The TVL of Charge Defi is calculated using the Pancake LP token deposits (Static/BUSD and Charge/BUSD) in the farms, and the Charge & Static-BUSD deposits found in each Boardroom.', - bsc: { - tvl, - pool2: pool2( - chargeBUSDFarmStrategyAddress, - [chargeBUSDLpAddress], - "bsc" - ), - staking: staking(chargeBoardroomAddress, chargeTokenAddress), - - }, -}; diff --git a/projects/charm-fi-vaults-v2/index.js b/projects/charm-fi-vaults-v2/index.js deleted file mode 100644 index 155cd9a47de..00000000000 --- a/projects/charm-fi-vaults-v2/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const config = { - ethereum: {}, - arbitrum: {}, - optimism: {}, - polygon: {}, - base: {}, - boba: { factory: '0xFaf1Af4dC761dBA157227a3c06CeC9A7486D8a07' }, - blast: { factory: '0x8C554F200B1EEECdE99370Fe6284B15d23E50E07' }, - scroll: { factory: '0xc2cC57a62982c4C92C69B856B5d03c6DECa32E77' }, - linea: { factory: '0x8C554F200B1EEECdE99370Fe6284B15d23E50E07' }, - katana: {factory: '0xF0F42C62923c6e741C64E0163C5C50965C05dF61'}, - berachain: {factory: '0x189bD734C2f1beeaca81e0edbB1cE3B8A16ed137'}, -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const { factory = '0x5B7B8b487D05F77977b7ABEec5F922925B9b2aFa' } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const vaults = await api.fetchList({ lengthAbi: 'uint256:numVaults', itemAbi: 'function vaults(uint) view returns (address)', target: factory }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: vaults }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: vaults }) - const bals = await api.multiCall({ abi: 'function getTotalAmounts() view returns (uint256 bal0, uint256 bal1)', calls: vaults }) - bals.forEach(({ bal0, bal1 }, i) => { - api.add(token0s[i], bal0) - api.add(token1s[i], bal1) - }) - return api.getBalances() - } - } -}) diff --git a/projects/charmfinance/cubePoolAbi.json b/projects/charmfinance/cubePoolAbi.json deleted file mode 100644 index 5bb50318252..00000000000 --- a/projects/charmfinance/cubePoolAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolBalance": "uint256:poolBalance" -} \ No newline at end of file diff --git a/projects/charmfinance/index.js b/projects/charmfinance/index.js deleted file mode 100644 index 605a6cc702c..00000000000 --- a/projects/charmfinance/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache') - -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') - -const vaultAbi = require("./vaultAbi.json"); -const cubePoolAbi = require("./cubePoolAbi.json"); - -const USDC = ADDRESSES.ethereum.USDC; -const WBTC = ADDRESSES.ethereum.WBTC; - -const vaults = [ - // Old alpha vault - v0 - "0x55535C4C56F6Bf373E06C43E44C0356aaFD0d21A", - // New alpha vault - v1 - "0xE72f3E105e475D7Db3a003FfA377aFAe9c2c6c11", - "0x9bF7B46C7aD5ab62034e9349Ab912C0345164322", - "0xBD7c6D2edE836b6b27C461799c4e9ecB8F4e8A66" -]; - -const CUBE_POOL = "0x23F6A2D8d691294c3A1144EeD14F5632e8bc1B67"; - -async function tvl(api) { - const optionsContracts = ( - await getConfig('charm-finance', - "https://raw.githubusercontent.com/charmfinance/options-protocol/main/markets.yaml" - ) - ); - - const optionsContractsWithoutComments = optionsContracts - .split('\n') - .map(i => i.trim()) - .filter(i => !i.startsWith('#')) // removing comments here - .join('') - - const OPTIONS_CONTRACTS = JSON.parse(optionsContractsWithoutComments); - const vaultAmts = await api.multiCall({ abi: vaultAbi.getTotalAmounts, calls: vaults, }) - const token0 = await api.multiCall({ abi: vaultAbi.token0, calls: vaults, }) - const token1 = await api.multiCall({ abi: vaultAbi.token1, calls: vaults, }) - - vaultAmts.map((vaultAmt, i) => { - api.add(token0[i], vaultAmt.total0) - api.add(token1[i], vaultAmt.total1) - }) - - const poolBalance = await api.call({ abi: cubePoolAbi.poolBalance, target: CUBE_POOL, }) - api.addGasToken(poolBalance) - - // --- Run a check in all options contracts holdings (ETH, USDC, WBTC) --- - const erc20_holdings = [USDC, WBTC, nullAddress] - return sumTokens2({ api, tokens: erc20_holdings, owners: OPTIONS_CONTRACTS }) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - }, -}; diff --git a/projects/charmfinance/vaultAbi.json b/projects/charmfinance/vaultAbi.json deleted file mode 100644 index 42f9b9e00d9..00000000000 --- a/projects/charmfinance/vaultAbi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getTotalAmounts": "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", - "token0": "address:token0", - "token1": "address:token1" -} \ No newline at end of file diff --git a/projects/chat3/index.js b/projects/chat3/index.js deleted file mode 100644 index 790cf0b7d70..00000000000 --- a/projects/chat3/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xAd3dbD09835CF15c543Bc59d31865D659b71060e" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the MNT on ${contract}`, - mantle: { - tvl - } -} \ No newline at end of file diff --git a/projects/chateau/index.js b/projects/chateau/index.js new file mode 100644 index 00000000000..20f88978d18 --- /dev/null +++ b/projects/chateau/index.js @@ -0,0 +1,59 @@ +const CHUSD = "0x22222215d4Edc5510d23D0886133E7eCE7f5fdC1"; +const SCHUSD = "0x888888bAb58a7Bd3068110749bC7b63B62Ce874d"; + +const abi = { + totalAssets: "uint256:totalAssets", + previewRedeem: "function previewRedeem(uint256 shares) view returns (uint256)", +}; + +const WAD = 10n ** 18n; + +function toNumber(value, decimals = 18) { + if (!value) return 0; + const divisor = 10 ** decimals; + return Number(value) / divisor; +} + +async function chusdSupply(api) { + const rawSupply = await api.call({ target: CHUSD, abi: "erc20:totalSupply" }); + const totalSupply = BigInt(rawSupply); + api.addCGToken("usd", toNumber(totalSupply)); +} + +async function schusdMetrics(api) { + const [totalSupply, totalAssets, previewRedeem] = await Promise.all([ + api.call({ target: SCHUSD, abi: "erc20:totalSupply" }), + api.call({ target: SCHUSD, abi: abi.totalAssets }), + api.call({ target: SCHUSD, abi: abi.previewRedeem, params: [WAD] }).catch(() => null), + ]); + + const supply = BigInt(totalSupply); + const assets = BigInt(totalAssets); + const preview = previewRedeem ? BigInt(previewRedeem) : null; + + api.addCGToken("usd", toNumber(assets)); + + const impliedPrice = + supply === 0n ? WAD : (assets * WAD) / supply; + const sharePrice = preview ?? impliedPrice; + api.meta ??= {}; + api.meta.schusdPrice = Number(sharePrice) / 1e18; +} + +async function tvl(api) { + await chusdSupply(api); +} + +async function staking(api) { + await schusdMetrics(api); +} + +module.exports = { + timetravel: true, + methodology: + "chUSD TVL is tracked via totalSupply(). schUSD staking TVL uses totalAssets() (chUSD held in the ERC-4626 vault).", + plasma: { + tvl, + staking, + }, +}; diff --git a/projects/chedda-finance/index.js b/projects/chedda-finance/index.js deleted file mode 100644 index 9afc9b16ef1..00000000000 --- a/projects/chedda-finance/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const poolAbi = { - activePools: "function activePools() view returns (address[])", - collaterals: "function collaterals() view returns (address[])", - asset: "function asset() view returns (address)", - borrowed: "function borrowed() view returns (uint256)" -}; - -const registry = "0xFF11a76cB422642525B751972151841673CB0C57" - -const tvl = async (api) => { - const pools = await api.call({ target: registry, abi: poolAbi.activePools }) - const collateralsTokens = await api.multiCall({ calls: pools, abi: poolAbi.collaterals }) - - const taos = pools.flatMap((pool, index) => { - const collaterals = collateralsTokens[index] - return collaterals.map((coll) => ([coll, pool])); - }) - - return api.sumTokens({ tokensAndOwners: taos }) -} - -const borrowed = async (api) => { - const pools = await api.call({ target: registry, abi: poolAbi.activePools }) - const assets = await api.multiCall({ calls: pools, abi: poolAbi.asset }) - const totalBorrows = await api.multiCall({ calls: pools, abi: poolAbi.borrowed }); - - pools.forEach((pool, index) => { - const asset = assets[index] - const totalBorrow = totalBorrows[index] - return api.add(asset, totalBorrow) - }) -} - -module.exports = { - methodology: `TVL is comprised of assets and collateral deposited to the pools on https://app.chedda.finance`, - base: { tvl, borrowed } -} diff --git a/projects/chee-finance/index.js b/projects/chee-finance/index.js deleted file mode 100644 index 786b5069ea2..00000000000 --- a/projects/chee-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports } = require('../helper/compound') - -module.exports = { - hallmarks: [ - ], - celo: compoundExports("0x9BD4Fd10b531ae07437676dfE3FA6f505032CB64", "0x9de4171EDc1F69EAD07f7595bD3beD62d9215532", ADDRESSES.celo.CELO), - meter: compoundExports("0xcc0BfaD4e684023B18e0adfEcaEDd800D91dc8B5", "0xbF5cffE28d3CbA3376Cd02fF12eBECa43Bc3f14A", ADDRESSES.meter.WMTR), - bsc: compoundExports("0x0E00Ae24B84148ee93Ce2Cf4F52dE277C91B0B72", "0x9437Ea5b08AC7f9dc553861dfE1AA77EE0F2aE69", ADDRESSES.bsc.WBNB), -} -module.exports.celo.borrowed = () => ({}) -module.exports.meter.borrowed = () => ({}) -module.exports.bsc.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/cheesedao/index.js b/projects/cheesedao/index.js deleted file mode 100644 index 82d2947158f..00000000000 --- a/projects/cheesedao/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -// they moved the treasury funds after harmony was hacked -module.exports = { - harmony: { - tvl: () => ({}) - } -} \ No newline at end of file diff --git a/projects/cherrylend/index.js b/projects/cherrylend/index.js deleted file mode 100644 index 6aed3c88eb9..00000000000 --- a/projects/cherrylend/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport, } = require("../helper/chain/cardano"); - -const scriptAdresses = [ - 'addr1z87jq3sr5psnv5vz2s799ycawj845ny7d2d25ayq7cgywd5nc4gwrvu5dcuccayqddwpx0l492czzxp7929792qv4grql4zqxt', - 'addr1zy7z86jxa4dyflaf3rwpt5jlnrdahkt2r4737khf7huv9q5nc4gwrvu5dcuccayqddwpx0l492czzxp7929792qv4grqnc0lf0', - 'addr1zxczgk9j5z67tjeer7ryhzgznm6zrkjqgm004m2gxymzfnvnc4gwrvu5dcuccayqddwpx0l492czzxp7929792qv4grq2d0zxe', - 'addr1zytlwd9nvg9qujwtrgmecp4kghelj258d9gwu373cn8eefvnc4gwrvu5dcuccayqddwpx0l492czzxp7929792qv4grqp3aqvs', -]; - -module.exports = { - methodology: 'TVL are assets either locked as collateral, or payment on interest to be reclaimed', - timetravel: false, - cardano: { - tvl: sumTokensExport({ scripts: scriptAdresses, }) - } -}; \ No newline at end of file diff --git a/projects/cherryswap/index.js b/projects/cherryswap/index.js deleted file mode 100644 index 93e18b053df..00000000000 --- a/projects/cherryswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - -const che = ADDRESSES.okexchain.CHE -const cheStaking = "0x9Ab8BCf67fE8d8D2aD27D42Ec2A0fD5C206DAE60" - -module.exports = { - methodology: "Staking is the CHE staked on 0x9Ab8BCf67fE8d8D2aD27D42Ec2A0fD5C206DAE60, tvl is the liquidity on the exchange and the money locked on the pools that distribute CHE", - okexchain: { - staking: staking(cheStaking, che), - tvl: getUniTVL({ - factory: '0x709102921812b3276a65092fe79edfc76c4d4afe', - useDefaultCoreAssets: true, - }) - }, -}; diff --git a/projects/chest-finance/index.js b/projects/chest-finance/index.js deleted file mode 100644 index 8ddd3f400ac..00000000000 --- a/projects/chest-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require("../helper/solana"); - -// SOL chest owner: https://solscan.io/account/3SGP67y3XAxZivaz2peNTxS6E44cQXErnEMyBXaCeT2n -const SOL_chest_owner = "3SGP67y3XAxZivaz2peNTxS6E44cQXErnEMyBXaCeT2n"; -const mSOL = "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"; -const soETH = "2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk"; -const BTC = "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E"; -const USDC = ADDRESSES.solana.USDC; -const CASH = "CASHVDm2wsJXfhj6VWxb7GiMdoLc17Du7paH4bNr5woT"; - -async function solanaTVL() { - return sumTokens2({ tokens: [mSOL, soETH, BTC, USDC, CASH], owner: SOL_chest_owner, solOwners: [SOL_chest_owner]}); -} - -module.exports = { - solana: { - tvl: solanaTVL, - }, - methodology: "Summing balances of all chests of chest finance", -}; diff --git a/projects/chfry/abi.json b/projects/chfry/abi.json deleted file mode 100644 index 77c1a6b7b17..00000000000 --- a/projects/chfry/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getTotalDeposited": "uint256:totalDeposited" -} \ No newline at end of file diff --git a/projects/chfry/index.js b/projects/chfry/index.js deleted file mode 100644 index 0da57323d8d..00000000000 --- a/projects/chfry/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require('./abi.json'); -const BigNumber = require("bignumber.js"); - - -const fryerContracts = [ - // Fryer USDT - "0xd1ffa2cbAE34FF85CeFecdAb0b33E7B1DC19024b", - // Fryer DAI - "0x87F6fAA87358B628498E8DCD4E30b0378fEaFD07", - // Fryer USDC - "0x7E271Eb034dFc47B041ADf74b24Fb88E687abA9C", -] - -const USDT = ADDRESSES.ethereum.USDT; -const DAI = ADDRESSES.ethereum.DAI; -const USDC = ADDRESSES.ethereum.USDC; - -async function tvl(timestamp, block) { - let balances = {}; - - const tvlUSDT = (await sdk.api.abi.call({ - target: fryerContracts[0], - abi: abi['getTotalDeposited'], - block: block - })).output; - const tvlDAI = (await sdk.api.abi.call({ - target: fryerContracts[1], - abi: abi['getTotalDeposited'], - block: block - })).output; - const tvlUSDC = (await sdk.api.abi.call({ - target: fryerContracts[2], - abi: abi['getTotalDeposited'], - block: block - })).output; - balances[USDT] = tvlUSDT; - balances[DAI] = tvlDAI; - balances[USDC] = tvlUSDC; - return balances; -} - -module.exports = { - methodology: "TVL is being calculated as the total amount deposited in the lending protocol by users.", - ethereum:{ - tvl, - }, -} diff --git a/projects/chi-protocol/index.js b/projects/chi-protocol/index.js deleted file mode 100644 index e9e659d0d78..00000000000 --- a/projects/chi-protocol/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { pool2s } = require("../helper/pool2"); - -const CHI_STAKING = '0xaB1dCa1C0f948c268652eedC676966002Ae241c6'; -const CHI_LOCKING = '0xE3dD17ff009bAC84e32130fcA5f01C908e956603'; -const CHI_VESTING = '0x426DBAa2B33cE1B833C13b72503F5128AFef79fC'; -const CHI = '0x3b21418081528845a6DF4e970bD2185545b712ba'; - -const stakingPool2Contracts = [ - "0x85CD2803223C864D625b1D289fDD3Cee7e4bB307", - "0xD66DAbE0c898Ec74DA03AE4e90b9c051408685e6", -]; -const lpAddresses = [ - "0x88d1fFB9F94Fc881ea0D83Dddcdb196EE9DA8739", - "0x9f93F419d0267877247A39b4eb6b2775AbAC6bdc", -]; - -async function tvl(api) { - const owners = [ - '0xc36303ef9c780292755B5a9593Bfa8c1a7817E2a', // reserve holder - '0x18601d46c38362cDA8CA0571BbBCD9a34bC2BD65', // steth adapter - '0x7f6dA7071d3524C61c2c87c4e631E52cbC8af5b6', // weeth adapter - ] - const tokens = await api.multiCall({ abi: 'address:asset', calls: owners.slice(1)}) - tokens.push(ADDRESSES.ethereum.WETH) - return sumTokens2({ owners, tokens, api, }) -} - -async function staking(api) { - const tokensAndOwners = [ - [CHI, CHI_STAKING], - [CHI, CHI_LOCKING] - ]; - return sumTokens2({ api, tokensAndOwners }) -} - -async function vesting(api) { - const owner = CHI_VESTING; - const tokens = [ - CHI - ]; - return sumTokens2({ owner, tokens, api }) -} - -module.exports = { - ethereum: { - tvl: tvl, - staking: staking, - pool2: pool2s(stakingPool2Contracts, lpAddresses), - vesting: vesting - } -} diff --git a/projects/chickendefi/index.js b/projects/chickendefi/index.js deleted file mode 100644 index e59b5bccd03..00000000000 --- a/projects/chickendefi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - sonic: { tvl: getUniTVL({ factory: '0x796F21EFA35bf3b0360aC8e3c108241f88E47A3a', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/chickenswap/abi.json b/projects/chickenswap/abi.json deleted file mode 100644 index 9a372851ed8..00000000000 --- a/projects/chickenswap/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accChickenPerShare)", - "token": "address:token", - "balance": "uint256:balance" -} \ No newline at end of file diff --git a/projects/chickenswap/index.js b/projects/chickenswap/index.js deleted file mode 100644 index 4e70c594657..00000000000 --- a/projects/chickenswap/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { getUniTVL } = require("../helper/unknownTokens"); - -const chickenChefContract = "0x87AE4928f6582376a0489E9f70750334BBC2eb35"; -const KFC = "0xE63684BcF2987892CEfB4caA79BD21b34e98A291"; -const WETH_KFC_UNIV2 = "0x90544c3f88d0a9e374ed35490028f45642a8b3f2"; - -const kfcVaults = [ - //kfcUSDT - "0x408eC098bAB8457499EcE4BF17f197637e338D3a", - //kfcUSDC - "0x13DfDa244e281Ced094796e0E0d2A1Cf91A1BD13" -]; - - -/*** Vaults TVL Portion ***/ -const ethTvl = async (_ts, block, chainBlocks) => { - const balances = {}; - - await addFundsInMasterChef( - balances, - chickenChefContract, - chainBlocks["ethereum"], - "ethereum", - addr => addr, - abi.poolInfo, - [KFC, WETH_KFC_UNIV2, kfcVaults[0], kfcVaults[1]] - ); - - const kfcTokens = ( - await sdk.api.abi.multiCall({ - abi: abi.token, - calls: kfcVaults.map(vault => ({ - target: vault, - })), - block - }) - ).output.map(tokens => tokens.output); - - const tokensBalance = ( - await sdk.api.abi.multiCall({ - abi: abi.balance, - calls: kfcVaults.map(vault => ({ - target: vault, - })), - block - }) - ).output.map(bals => bals.output); - - kfcTokens.forEach((token, idx) => { - sdk.util.sumSingleBalance(balances, token, tokensBalance[idx]); - }); - - return balances; -}; - -const dexTVL = getUniTVL({ factory: '0x8709Ea9fA0f1839237c9Dd3d59D243C411391970', useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking(chickenChefContract, KFC), - pool2: pool2(chickenChefContract, WETH_KFC_UNIV2), - tvl: sdk.util.sumChainTvls([dexTVL, ethTvl,]), - }, -}; \ No newline at end of file diff --git a/projects/chiknfarm/index.js b/projects/chiknfarm/index.js deleted file mode 100644 index a47003fd22d..00000000000 --- a/projects/chiknfarm/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require('../helper/http') - -async function staking() { - let response = await get('https://cdn-b.chikn.farm/api/feed/staked') - return { - 'chikn-egg': response.totalStakedAmount - } -} - -async function tvl() { - return {} -} - -module.exports = { - avax:{ - tvl, - staking - }, -} diff --git a/projects/chiliswap/index.js b/projects/chiliswap/index.js deleted file mode 100644 index 3b5d5906882..00000000000 --- a/projects/chiliswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools', - scroll: { - tvl: getUniTVL({ factory: "0x2627161e60fFa589f8bD3798F0947d572A7EdF68", useDefaultCoreAssets: true }) - } -} \ No newline at end of file diff --git a/projects/chiliz-fan-token-staking/index.js b/projects/chiliz-fan-token-staking/index.js deleted file mode 100644 index ec0d482385a..00000000000 --- a/projects/chiliz-fan-token-staking/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getExport } = require('../chiliz-peppercoin/util'); -const STAKING_CONTRACT = '0x5ff7f9724fd477d9a07dcdb894d0ca7f8fae1501'; - - -module.exports = getExport(STAKING_CONTRACT, 20248272) diff --git a/projects/chiliz-governance-staking/index.js b/projects/chiliz-governance-staking/index.js deleted file mode 100644 index 72f3cb4aef4..00000000000 --- a/projects/chiliz-governance-staking/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); -const STAKING_CONTRACT = ADDRESSES.findora.FRA; - -module.exports = { - methodology: 'Total CHZ Locked in Staking System Contract.', - chz: { - tvl: sumTokensExport({ owner: STAKING_CONTRACT, tokens: [nullAddress] }), - } -} \ No newline at end of file diff --git a/projects/chiliz-peppercoin/index.js b/projects/chiliz-peppercoin/index.js deleted file mode 100644 index cbead1423b3..00000000000 --- a/projects/chiliz-peppercoin/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getExport } = require('./util'); - -const STAKING_CONTRACT = '0x5cA4C88339D89B2547a001003Cca84F62F557A72'; - -module.exports = getExport(STAKING_CONTRACT) diff --git a/projects/chiliz-peppercoin/util.js b/projects/chiliz-peppercoin/util.js deleted file mode 100644 index 97594cb6ab6..00000000000 --- a/projects/chiliz-peppercoin/util.js +++ /dev/null @@ -1,54 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs'); -const { getUniqueAddresses } = require('../helper/tokenMapping'); -const { sumUnknownTokens } = require('../helper/unknownTokens'); - -const ABI = { - "Stake": "event Stake(address indexed staker, address indexed token, uint256 amount)", - "getTotalStake": "function getTotalStake(address token) view returns (uint256)", - "WrappedTokenCreated": "event WrappedTokenCreated(address indexed underlyingToken, address indexed wrappedToken)" -} -const KAYER_WRAPPER_FACTORY = '0xAEdcF2bf41891777c5F638A098bbdE1eDBa7B264' - -function customCacheFunction({ cache, logs }) { - if (!cache.logs) cache.logs = [] - cache.logs.push(...logs.map(i => i.token)) - cache.logs = getUniqueAddresses(cache.logs) - return cache -} - -module.exports = { - getExport: (STAKING_CONTRACT, fromBlock = 20248272) => ({ - misrepresentedTokens: true, - chz: { - tvl: () => ({}), staking: async (api) => { - const KayenPairs = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: '0xE2918AA38088878546c1A18F2F9b1BC83297fdD3' }) - const tokens = await getLogs2({ api, target: STAKING_CONTRACT, fromBlock, customCacheFunction, eventAbi: ABI.Stake }) - const wrapperLogs = await getLogs2({ api, target: KAYER_WRAPPER_FACTORY, fromBlock: 12039720, eventAbi: ABI.WrappedTokenCreated }) - const wrappedTokensMap = {} - const decimalsMap = {} - const allTokens = [...tokens] - wrapperLogs.forEach(log => { - wrappedTokensMap[log.underlyingToken.toLowerCase()] = log.wrappedToken.toLowerCase() - allTokens.push(log.wrappedToken) - }) - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: allTokens }) - decimals.forEach((d, i) => decimalsMap[allTokens[i].toLowerCase()] = d) - const bals = await api.multiCall({ abi: ABI.getTotalStake, calls: tokens, target: STAKING_CONTRACT }) - - tokens.forEach((v, i) => { - let bal = bals[i] - v = v.toLowerCase() - if (wrappedTokensMap[v]) { - - const token = wrappedTokensMap[v] - bal = bal * 10 ** (decimalsMap[token] - decimalsMap[v]) - api.add(token, bal) - } else - api.add(v, bal) - }) - - return sumUnknownTokens({ api, lps: KayenPairs, useDefaultCoreAssets: true, }) - }, - } - }) -} diff --git a/projects/chilizswap/index.js b/projects/chilizswap/index.js deleted file mode 100644 index 8b5da67de57..00000000000 --- a/projects/chilizswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - methodology: - "We count liquidity of all paris through Factory Contract and Pools (single tokens) seccions through Factory Contract.", - chz: { - tvl: getUniTVL({ - factory: "0xcF4A2be8Fe92fEe8e350AD8D876274749Ae0CBb1", - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/chimeradex-lend/index.js b/projects/chimeradex-lend/index.js deleted file mode 100644 index 4eabbb781ba..00000000000 --- a/projects/chimeradex-lend/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -const config = { - scroll: '0x05C7A68321a43C9FB3eaC6D8E852831a48C4B273', - arbitrum: '0xBDa8C17aa00854f401057ec7d796577a8ae96aDE' -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = compoundExports2({ comptroller: config[chain]}) -}) -module.exports.deadFrom='2023-12-12' -module.exports.scroll.borrowed = () => ({}) // bad debt -module.exports.arbitrum.borrowed = () => ({}) // bad debt diff --git a/projects/chimeradex/index.js b/projects/chimeradex/index.js deleted file mode 100644 index 25e9dbec3d2..00000000000 --- a/projects/chimeradex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -const tvl = getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x661B92cc18a8d73209dBa1394aE56fca2F9DDb4D', -}) - -module.exports = { - misrepresentedTokens: true, - scroll: { tvl, }, - arbitrum: { tvl, }, -}; diff --git a/projects/chimpexchange/index.js b/projects/chimpexchange/index.js deleted file mode 100644 index 8da7f514fad..00000000000 --- a/projects/chimpexchange/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./onchain') \ No newline at end of file diff --git a/projects/chimpexchange/onchain.js b/projects/chimpexchange/onchain.js deleted file mode 100644 index 88fd906f6fc..00000000000 --- a/projects/chimpexchange/onchain.js +++ /dev/null @@ -1,23 +0,0 @@ -const { onChainTvl } = require("../helper/balancer"); -const { getUniTVL } = require('../helper/unknownTokens'); - -const blacklistedTokens = []; - -const V2_ADDRESS = "0x286381aEdd20e51f642fE4A200B5CB2Fe3729695"; -const FACTORY_ADDRESS = "0xcB74d94Ddb0c365e62731FA289E90928C311223f"; - -const config = { - linea: { fromBlock: 660572 }, -}; - -module.exports = { - boba: { - tvl: getUniTVL({ - factory: FACTORY_ADDRESS, - useDefaultCoreAssets: true, - }) - }, - linea: { - tvl: onChainTvl(V2_ADDRESS, config.linea.fromBlock, { blacklistedTokens }), - }, -}; diff --git a/projects/chintai/index.js b/projects/chintai/index.js deleted file mode 100644 index 6295e7017cc..00000000000 --- a/projects/chintai/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["chexchexchex", "CHEX", "chex-token"], - ["eosio.token", "EOS", "eos"] -]; - -// Chintai -// https://chintai.io/ -async function eos() { - return await get_account_tvl("chintailease", tokens); -} - -module.exports = { - methodology: `Chintai TVL is achieved by querying token balances from Chintai leasing smart contract.`, - eos: { - tvl: eos - }, -} \ No newline at end of file diff --git a/projects/chips/index.js b/projects/chips/index.js deleted file mode 100644 index a9dd2ed896d..00000000000 --- a/projects/chips/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { fetchLocal, mkMeta } = require("../helper/pact"); - -const contract = "n_e98a056e3e14203e6ec18fada427334b21b667d8.chips"; -const chainId = "2"; -const network = `https://api.chainweb.com/chainweb/0.0/mainnet01/chain/${chainId}/pact`; -const GAS_PRICE = 0.00000001; -const creationTime = () => Math.floor(Date.now() / 1000) - 10; - -async function fetch() { - const { result } = await fetchLocal( - { - pactCode: `(use ${contract}) (get-tvl2)`, - meta: mkMeta("", chainId, GAS_PRICE, 3000, creationTime(), 600), - }, - network - ); - - const balances = result?.data || {}; - let kdaTotal = 0; - - for (const [key, value] of Object.entries(balances)) { - if (key !== "coin") continue; - const amount = value?.decimal || value; - kdaTotal += parseFloat(amount || 0); - } - - return { - kadena: kdaTotal - }; -} - -module.exports = { - timetravel: false, - misrepresentedTokens: false, - methodology: - "TVL tracks the KDA-equivalent value of all locked cTokens and kWATT tokens using on-chain DEX pricing. The contract returns a single 'coin' value in KDA, excluding USD-only fields.", - kadena: { - tvl: fetch, - }, -}; diff --git a/projects/chocoInu-masterchef/index.js b/projects/chocoInu-masterchef/index.js deleted file mode 100644 index a2f50c9cbf3..00000000000 --- a/projects/chocoInu-masterchef/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "shibarium", - masterchef: "0x100A30e31aa03ed85F0854712a1Dff0880e960BE", - nativeTokens: ["0xC7cc176b2a098fF7cFd578C9eF0Cc8b1216C8ED1"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}) \ No newline at end of file diff --git a/projects/chocobase/index.js b/projects/chocobase/index.js deleted file mode 100644 index d41ea68e46d..00000000000 --- a/projects/chocobase/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "base", - masterchef: "0x03B03cB12C3C9079BD6f1F155BD3348e99692d9b", - nativeTokens: ["0x6d6080492D0Bd40F1e44cc16791CC1664357f685"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); \ No newline at end of file diff --git a/projects/chocodoge/index.js b/projects/chocodoge/index.js deleted file mode 100644 index a6a90fbe163..00000000000 --- a/projects/chocodoge/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { unknownTombs, sumTokensExport, } = require('../helper/unknownTokens') - -const chain = 'dogechain' -const uscdAddress = '0x06AcD60e5B1CD9aB7E4beBfaA1233D3cCe97A08F' -const cdAddress = '0x51bB8f9a2A10c550DD149A9a48d8c4E8c59F4f56' -const genesisPool = '0x230486431185D4e2518191EcB8c2F80b6c520E8D' -const masonry = '0x8ceDF3866ba7eb829446F3bdDc98093015DFc162' // Bank - -const lps = ['0x44A46907f145173F1841B1a3E258FbBEB68608E8' , // LP USCD/USDC - '0x32138fFD6d2B30f7b7295E32Cd9A19A7A590532E', // LP CD/USDC - '0x68609eA0b8393258d0d7EF21401E1Cd3B00A714e', // LP USCD/DOGE - ] - -module.exports = unknownTombs({ - lps, - token: cdAddress, - shares: [uscdAddress], - rewardPool: ['0x2De8A4c253Ad9Bd6454e8566F09284F9a206Ba78', - '0x2517096727dec2298674534C8a207e789AD1f181', - ], - masonry: [uscdAddress, masonry], - chain, - useDefaultCoreAssets: true, -}) - -module.exports[chain].tvl = sumTokensExport({ chain, owner: genesisPool, tokens: [ - ADDRESSES.dogechain.DC, - '0x68609eA0b8393258d0d7EF21401E1Cd3B00A714e', - ADDRESSES.shiden.ETH, - ADDRESSES.dogechain.WWDOGE, -], useDefaultCoreAssets: true, }) -module.exports.misrepresentedTokens = true diff --git a/projects/choice-exchange/index.js b/projects/choice-exchange/index.js deleted file mode 100644 index 2382a328c0a..00000000000 --- a/projects/choice-exchange/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getFactoryTvl } = require("../terraswap/factoryTvl"); - -const factory = { - classic: "inj1k9lcqtn3y92h4t3tdsu7z8qx292mhxhgsssmxg", -}; - -async function staking() { - - return {} - -} - -module.exports = { - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - injective: { tvl: getFactoryTvl(factory.classic), staking: staking }, -}; diff --git a/projects/chromatic-protocol/index.js b/projects/chromatic-protocol/index.js deleted file mode 100644 index 3ad34354adb..00000000000 --- a/projects/chromatic-protocol/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json") - -const config = { - arbitrum: { - marketFactory: '0x0b216AB26E20d6caA770B18596A3D53B683638B4', - lpRegistry: '0xc337325525eF17B7852Fd36DA400d3F9eEd51A4a', - tokens: { - USDT: ADDRESSES.arbitrum.USDT, - }, - vault: "0x19631A51aeDcd831E29cbCbCfe77010dAfd3343a", - pools: { - USDT: [ - { - name: "crescendo long & short ( deprecated )", - address: "0xAD6FE0A0d746aEEEDEeAb19AdBaDBE58249cD0c7", - }, - { - name: "plateau long & short ( deprecated )", - address: "0xFa334bE13bA4cdc5C3D9A25344FFBb312d2423A2", - }, - { - name: "decrescendo long & short ( deprecated )", - address: "0x9706DE4B4Bb1027ce059344Cd42Bb57E079f64c7", - } - ], - }, - }, -} - - -Object.keys(config).forEach(chain => { - const { tokens, vault, pools, marketFactory, lpRegistry } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const settlementTokens = await api.call({ abi: abi.registeredSettlementTokens, target: marketFactory }) - const lpAddressesBySettlementToken = await api.multiCall({ abi: abi.lpListBySettlementToken, calls: settlementTokens, target: lpRegistry }) - const ownerTokens = settlementTokens.map((settlementToken, i) => lpAddressesBySettlementToken[i].map(j => [[settlementToken], j])).flat() - ownerTokens.push([Object.values(tokens), vault]) - if (pools) { - const _tokens = Object.values(tokens) - Object.values(pools).forEach(i => i.forEach(p => ownerTokens.push([_tokens, p.address]))) - } - return api.sumTokens({ ownerTokens }) - } - } -}) - -const abi = { - "registeredSettlementTokens": "address[]:registeredSettlementTokens", - "lpListBySettlementToken": "function lpListBySettlementToken(address token) view returns (address[])" -} \ No newline at end of file diff --git a/projects/chronicle/index.js b/projects/chronicle/index.js deleted file mode 100644 index 75cb6239db7..00000000000 --- a/projects/chronicle/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const farmContract = "0x3838956710bcc9D122Dd23863a0549ca8D5675D6"; -const XNL_AURORA_TriLP = "0xb419ff9221039Bdca7bb92A131DD9CF7DEb9b8e5"; -const XNL = "0x7cA1C28663b76CFDe424A9494555B94846205585"; - -module.exports = { - misrepresentedTokens: true, - aurora: { - tvl: (async) => ({}), - staking: staking(farmContract, XNL), - pool2: pool2(farmContract, XNL_AURORA_TriLP), - }, - methodology: "Counts liquidty on the staking and pool2 only", -}; diff --git a/projects/chronos-v2/index.js b/projects/chronos-v2/index.js deleted file mode 100644 index 6d1c771b80c..00000000000 --- a/projects/chronos-v2/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - arbitrum: { - factory: "0x4Db9D624F67E00dbF8ef7AE0e0e8eE54aF1dee49", - fromBlock: 114041129, - }, -}); diff --git a/projects/chronos/index.js b/projects/chronos/index.js deleted file mode 100644 index e92e057991b..00000000000 --- a/projects/chronos/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722) address to count liquidity in pools as TVL.`, - arbitrum: { - tvl: getUniTVL({ factory: '0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722', useDefaultCoreAssets: true, hasStablePools: true }), - } -}; diff --git a/projects/chronoswap/index.js b/projects/chronoswap/index.js deleted file mode 100644 index e8aceb1df23..00000000000 --- a/projects/chronoswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') -const sdk = require("@defillama/sdk") - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0x6C50Ee65CFcfC59B09C570e55D76daa7c67D6da5) is used to find the LP pairs. TVL is equal to the liquidity on the AMM, while staking is the amount of CNO & CBO tokens found in the Masterchefs(0x77ea4a4cF9F77A034E4291E8f457Af7772c2B254,0xaBAD73Be9fd441731ADb007AdB6C1b03e730A8e0).", - cronos: { - tvl: getUniTVL({ factory: '0x6C50Ee65CFcfC59B09C570e55D76daa7c67D6da5', useDefaultCoreAssets: true }), - staking: sdk.util.sumChainTvls([ - stakingPricedLP("0xaBAD73Be9fd441731ADb007AdB6C1b03e730A8e0", "0xA46d5775c18837e380eFB3d8Bf9D315bcd028AB1", "cronos", "0x9b76213969885044FeF03AFCc08d3F4039768F7e", "crypto-com-chain"), - stakingPricedLP("0x3790F3A1cf8A478042Ec112A70881Dcfa9c7fd2a", "0x322e21dcAcE43d319646756656b29976291d7C76", "cronos", "0x4bbce14d69f9fea118992f1944c084753f1b0bf9", "crypto-com-chain") - - ]) - } -} \ No newline at end of file diff --git a/projects/cian-automation/index.js b/projects/cian-automation/index.js deleted file mode 100644 index 5c8d40498cf..00000000000 --- a/projects/cian-automation/index.js +++ /dev/null @@ -1,73 +0,0 @@ -module.exports = { - doublecounted: true, -} - -const { getLogs } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - ethereum: { - factories: [ - { factory: '0x8B46CB994218767f07C86Ba62fecAfdcb19cc001', fromBlock: 16036873, }, - { factory: '0x17F453846E407409c22621d465d2838F7DcE22aE', fromBlock: 15300131, }, - ], - tokens: [ADDRESSES.null, ADDRESSES.ethereum.STETH, ADDRESSES.ethereum.WETH, '0x1982b2f5814301d4e9a8b0201555376e62f82428', '0xf63b34710400cad3e044cffdcab00a0f32e33ecf'] - }, - polygon: { - factories: [ - { factory: '0x1cb9cf5439dced63d8f5b7f1a5bf9834d8076a9a', fromBlock: 34735173, }, - ], - tokens: [ADDRESSES.null, ADDRESSES.polygon.WMATIC, ADDRESSES.polygon.MATICX, ADDRESSES.polygon.MATICX, '0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0xEA1132120ddcDDA2F119e99Fa7A27a0d036F7Ac9', '0x80ca0d8c38d2e2bcbab66aa1648bd1c7160500fe', '0x1d734A02eF1e1f5886e66b0673b71Af5B53ffA94'] - }, - avax: { - factories: [ - { factory: '0x15cbFF12d53e7BdE3f1618844CaaEf99b2836d2A', fromBlock: 20869027, }, - ], - tokens: [ - ADDRESSES.null, ADDRESSES.avax.WAVAX, ADDRESSES.avax.SAVAX, - '0xF362feA9659cf036792c9cb02f8ff8198E21B4cB', '0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', '0x8729438eb15e2c8b576fcc6aecda6a148776c0f5', - ] - }, -} - -Object.keys(config).forEach(chain => { - const { factories, tokens } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const owners = [] - for (const { factory, fromBlock, } of factories) { - const mainAccounts = await getLogs({ - target: factory, fromBlock, api, - eventAbi: 'event mainAccountCreate(address _userAddress, address _newAccount)', - onlyArgs: true, - extraKey: 'mainAccountCreate', - }) - owners.push(...mainAccounts.map(i => i._newAccount)) - const subAccounts = await getLogs({ - target: factory, fromBlock, api, - eventAbi: 'event subAccountCreate (address _mainAccount, address _newSubAccount)', - onlyArgs: true, - extraKey: 'subAccountCreate', - }) - owners.push(...subAccounts.map(i => i._newSubAccount)) - } - api.log(chain, owners.length, tokens.length) - if (chain === 'avax') { - const avaxDebt = await api.multiCall({ abi: 'function borrowBalanceStored(address) view returns (uint256)', calls: owners, target: '0x5C0401e81Bc07Ca70fAD469b451682c0d747Ef1c' }) - const avaxDebtSum = avaxDebt.reduce((acc, borrow) => acc + +borrow, 0) - api.addGasToken(avaxDebtSum * -1) - } - for (const token of tokens) { - await api.sumTokens({ owners, tokens: [token], }) - } - return api.getBalances() - } - } -}) - -/* -backup: -`https://data.cian.app/${network}/api/v1/${accountType}?page=${page}&size=${size} -"accounts", "sub_accounts" -networks: ethereum, polygon, avalanche -*/ diff --git a/projects/cian-curating/index.js b/projects/cian-curating/index.js deleted file mode 100644 index 7439894ea7f..00000000000 --- a/projects/cian-curating/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by CIAN Protocol.', - blockchains: { - ethereum: { - turtleclub_erc4626: [ - '0x0d1862e73a1430A5FD3245B47859c1BEcD6f3A1D', - '0x2B11527e1fab84a5382D20efD198BF3d332f7E73', - '0x65939777a9dC5A370707bb6b44b1ad0BC9e2D8a4', - '0x34d16e4fB8757A88D986f9EfE2484F0badBF22C1', - '0x0982eB22086183bF10acd2991A2dBeD1e3B9Ac2A', - '0x76f31800eFdE39A5f98189447c7a514d974f4364', - '0xd72c3a44b51C8D6631C004ecf3A318b9D2c58F80', - '0x6945f516413cB2d7311297e8A39E7D004dEB5566', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/cian-yl/index.js b/projects/cian-yl/index.js deleted file mode 100644 index 1fd98db07c5..00000000000 --- a/projects/cian-yl/index.js +++ /dev/null @@ -1,115 +0,0 @@ -// cian yield layer -const config = { - ethereum: { - rawVaults: [ - "0xB13aa2d0345b0439b064f26B82D8dCf3f508775d", - "0xd87a19fF681AE98BF10d2220D1AE3Fbd374ADE4e", - "0x9fdDAD44eD6b77e6777dC1b16ee4FCcCBaF0A019", - "0x6c77bdE03952BbcB923815d90A73a7eD7EC895D1", - "0xcc7E6dE27DdF225E24E8652F62101Dab4656E20A", - "0xd4Cc9b31e9eF33E392FF2f81AD52BE8523e0993b", - "0x3D086B688D7c0362BE4f9600d626f622792c4a20", - "0x8D76e7847dFbEA6e9F4C235CADF51586bA3560A2", - - // LST - "0xcDd374F491fBF3f4FcF6E9023c99043774005137", - "0xB8c0c50D255B93f5276549cbA7F4bf78751A5D34", - "0x88508306E43FCe43F7f2c1e7D73c88cf6a523f6C", - "0xD34f59E172cF3915f56C96A3037Ac554A7399D77", // PYUSD Optimized Long-Short (variant 1) - - // sei - "0x7fF67093231CE8DBC70c0A65b629ed080e66a7F0", // pumpbtc - "0xe5DfcE87E75e92C61aeD31329716Cf3D85Cd9C8c" // ylBTCLST - - ], - preVaults: [ - "0x6dD1736E15857eE65889927f40CE3cbde3c59Cb2", // rseth - "0x83B5ab43b246F7afDf465103eb1034c8dfAf36f2", // pumpbtc - "0xf7cb66145c5Fbc198cD4E43413b61786fb12dF95", // unibtc - "0xC8C3ABB76905caD1771448B5520F052FE83e8B0E", // wbeth - "0xEFe4c96820F24c4BC6b2D621fD5FEb2B46adC1Df", // usda - "0xe4794e30AA190baAA953D053fC74b5e50b3575d7", // susda - "0x0186b03AC7C14a90d04D2b1e168869F618D149c5", // ylpumpbtc - "0x16c6B81Eb1B148326dc6D0bFCE472f68F3518187", // ylunibtc - "0x8073588bdfe8DBf0375e57425A29E8dC4003C3E6", // ylrseth - "0x0A9Ea3a5A26ac80535046F0Fd004523CF5c03bb5", // wsteth - "0xc71FB1bC07a65375121cdea87AD401207dD745b8", // ylBTCLST - ] - }, - optimism: { - rawVaults: ["0x907883da917ca9750ad202ff6395C4C6aB14e60E"] - }, - bsc: { - rawVaults: ["0xEa5f10A0E612316A47123D818E2b597437D19a17"] - }, - arbitrum: { - rawVaults: ["0xE946Dd7d03F6F5C440F68c84808Ca88d26475FC5", "0xED5f727107BdAC99443bAE317E0eF38239719e87", '0x15cbFF12d53e7BdE3f1618844CaaEf99b2836d2A'] - }, - base: { - rawVaults: ["0x9B2316cfe980515de7430F1c4E831B89a5921137"] - }, - scroll: { - rawVaults: ["0xEa5f10A0E612316A47123D818E2b597437D19a17"] - } -}; - -const abis = { - getVaultParams: "function getVaultParams() view returns (tuple(address underlyingToken, string name, string symbol, uint256 marketCapacity, uint256 managementFeeRate, uint256 managementFeeClaimPeriod, uint256 maxPriceUpdatePeriod, uint256 revenueRate, uint256 exitFeeRate, address admin, address rebalancer, address feeReceiver, address redeemOperator))" -} - -const tvl = async (api) => { - const { rawVaults, preVaults = [] } = config[api.chain] - const vaults = [...new Set(rawVaults.map(i => i.toLowerCase()))] - const [vaultParams, assets, rawStrategies] = await Promise.all([ - api.multiCall({ abi: abis.getVaultParams, calls: preVaults }), - api.multiCall({ abi: 'address:asset', calls: preVaults }), - api.multiCall({ abi: 'address[]:strategies', calls: preVaults }) - ]) - - const seenRebalancers = new Set(); - - for (const [index, _preVault] of preVaults.entries()) { - const redeemOperator = vaultParams[index].redeemOperator; - const asset = assets[index]; - const strategies = rawStrategies[index]; - if (!redeemOperator || !asset || !strategies) continue; - - const rebalancers = await api.multiCall({ - calls: strategies, - abi: 'address:rebalancer', - permitFailure: true, - }); - - if (!rebalancers) continue; - - const uniqueRebalancers = [...new Set(rebalancers.filter(r => !!r))]; - - for (const rebalancer of uniqueRebalancers) { - if (seenRebalancers.has(rebalancer)) continue; - seenRebalancers.add(rebalancer); - - const balances = await api.multiCall({ - calls: rawVaults.map((v) => ({ target: v, params: [rebalancer] })), - abi: 'erc20:balanceOf', - }); - - rawVaults.forEach((v, i) => { - const balance = Number(balances[i]); - if (balance > 0) { - api.add(v, -balance); - } - }); - } - } - - if (api.chain === 'ethereum') { - await api.sumTokens({ token: '0xc152d5A599F83B3d0098cbAdb23FcE95F27Ff30B', owner: '0x821d2e44984168d278C698fD742d5138c01bAAA2' }) - } - - return await api.erc4626Sum({ calls: [...vaults, ...preVaults], isOG4626: true, permitFailure: true }) -} - -Object.keys(config).forEach((chain) => { - module.exports.doublecounted = true - module.exports[chain] = { tvl } -}) diff --git a/projects/ciento/index.js b/projects/ciento/index.js deleted file mode 100644 index 62ae5ae00bd..00000000000 --- a/projects/ciento/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('planq', '0xd2d19c4AdEEB88b93527E3e8D1924F0Ba8325755') \ No newline at end of file diff --git a/projects/cipher/index.js b/projects/cipher/index.js deleted file mode 100644 index 19403cea46e..00000000000 --- a/projects/cipher/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x2544a6412bc5aec279ea0f8d017fb4a9b6673dca" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - arbitrum: { - tvl - } -} \ No newline at end of file diff --git a/projects/circuit/index.js b/projects/circuit/index.js deleted file mode 100644 index 037aadf0cf2..00000000000 --- a/projects/circuit/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { yieldHelper } = require("../helper/unknownTokens"); -const { getConfig } = require('../helper/cache') - -const chain = "mantle"; -const tokenAPI = "address:want" - -module.exports = { - [chain]: { - tvl: async (api) => { - const pools = await getConfig('circuit','https://raw.githubusercontent.com/Circuit-Finance-Org/circuit-frontend-public/main/src/config/vault/mantle.json'); - - // Extract earnedTokenAddress from each pool - const vaults = pools.map(pool => pool.earnedTokenAddress); - - return yieldHelper({ vaults, api, tokenAPI, useDefaultCoreAssets: true }); - } - } - } \ No newline at end of file diff --git a/projects/citadao/index.js b/projects/citadao/index.js deleted file mode 100644 index 021b7922986..00000000000 --- a/projects/citadao/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { staking } = require('../helper/staking') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - return sumTokens2({ - api, - resolveUniV3: true, - owners: [ - '0xc8b1039928a98d7a272f6942d86814ed9d8f9f17', - '0x3f96c580436dd59404ba612bf6d8079dc10f6f7e', - '0xda62d109064138c14d45085b6e49568e1c0b4e23', - ] - }) -} - -module.exports = { - ethereum: { - tvl: () => 0, - pool2: tvl, - staking: staking('0x20891b408c35e0b7ece14df59f259be3c763f120', '0x3541a5c1b04adaba0b83f161747815cd7b1516bc'), - } -} diff --git a/projects/citadel-vaults/index.js b/projects/citadel-vaults/index.js deleted file mode 100644 index 81fddcaa312..00000000000 --- a/projects/citadel-vaults/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { - invokeViewFunction, -} = require("../helper/chain/supra"); -const { transformBalances } = require("../helper/portedTokens"); - -const SUPRA_COIN_INFO_STRUCT_TYPE = ADDRESSES.supra.SUPRA -const GET_SLOT_DEPOSITS_FUNCTION_TYPE = - "0xda20f7d0ec813c751926f06004a10bc6ee1eefc96798f6a1aa31447ee146f932::citadel_vault::slot_deposits"; - -const calculateCitadelVaultsTVL = async (api) => { - let balances = {}; - let chain = api.chain; - let data = await invokeViewFunction( - GET_SLOT_DEPOSITS_FUNCTION_TYPE, - [SUPRA_COIN_INFO_STRUCT_TYPE], - [["0x89906c6955124df6cdb3472b5299724572143f721430e328357a9e5b08efd9b3","0x60d4f787c012f5a3dbcab1ab8a2f357ee55f91a78852da34d6d0aa6e6b4b6f20","0x57f62e074c2f4aa3759389ee572c6ccdd4e53ff8d23f8afe4735461761248da","0x933214c4e3c70dad1bfec1a0e8ce280d318c7ffb3b4c7579ef26d33569eb1857","0xc373f27aee4b8f05b8ed4072faa4b9ceb220159ca9b6ae2ab7d3f15d01f9936","0xc3e87cc982ecf8c2b4009c55ae95844357c4af757fcd56a7143ae842178183a8"]] - ); - for (const item of data[0]) { - sdk.util.sumSingleBalance(balances, SUPRA_COIN_INFO_STRUCT_TYPE, item); - } - return transformBalances(chain, balances); -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - supra: { - tvl: calculateCitadelVaultsTVL, - }, -}; \ No newline at end of file diff --git a/projects/citadelswap/index.js b/projects/citadelswap/index.js deleted file mode 100644 index 9005a9908e6..00000000000 --- a/projects/citadelswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('base', '0xbe720274c24b5ec773559b8c7e28c2503dac7645') diff --git a/projects/citrex-markets/index.js b/projects/citrex-markets/index.js deleted file mode 100644 index 641281bcd7a..00000000000 --- a/projects/citrex-markets/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const PERP_ENGINE = "0x7461cFe1A4766146cAFce60F6907Ea657550670d"; -const VAULT_CONTRACT = "0x1438de8Ec9a07c677be8404285951355e3aF54c3"; -const USDC_CONTRACT = "0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1"; - -module.exports = { - methodology: - "Sum all USDC in the clearinghouse smart contract and the vault contract", - timetravel: false, - sei: { - tvl: sumTokensExport({ - owners: [PERP_ENGINE, VAULT_CONTRACT], - tokens: [USDC_CONTRACT], - }), - }, -}; diff --git a/projects/citrus/index.js b/projects/citrus/index.js deleted file mode 100644 index 70276638b22..00000000000 --- a/projects/citrus/index.js +++ /dev/null @@ -1,305 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getProvider, } = require('../helper/solana'); -const { Program } = require("@project-serum/anchor"); -let stats - -async function getStats() { - if (!stats) stats = fetchStats() - return stats - - async function fetchStats() { - const programId = 'JCFRaPv7852ESRwJJGRy2mysUMydXZgVVhrMLmExvmVp'; - const provider = getProvider(); - const program = new Program(idl, programId, provider) - const loans = await program.account.loan.all() - const activeLoans = loans.filter(loan => ['active', 'onSale'].includes(Object.keys(loan.account.status)[0])); - const openOffers = loans.filter(loan => Object.keys(loan.account.status)[0] === 'waitingForBorrower'); - const activeLoansTotal = activeLoans.map(loan => loan.account.loanTerms.principal).reduce((a, b) => a.add(b)); - const openOffersTotal = openOffers.map(loan => loan.account.ltvTerms ? loan.account.ltvTerms.maxOffer : loan.account.loanTerms.principal).reduce((a, b) => a.add(b)); - const tvl = openOffersTotal.toNumber() - const borrowed = activeLoansTotal.toNumber(); - return { tvl, borrowed } - } -} - -const tvl = async () => { - return { ['solana:' + ADDRESSES.solana.SOL]: (await getStats()).tvl } -}; - -const borrowed = async () => { - return { ['solana:' + ADDRESSES.solana.SOL]: (await getStats()).borrowed } -} - -module.exports = { - timetravel: false, - methodology: 'TVL is amount of SOL available to be borrowed', - solana: { - tvl, - borrowed, - } -}; - -const idl = { - version: '0.1.0', - name: 'citrus', - instructions: [], - accounts: [ - { - "name": "collectionConfig", - "type": { - "kind": "struct", - "fields": [ - { - "name": "collectionKey", - "type": { - "option": "publicKey" - } - }, - { - "name": "creators", - "type": { - "option": { - "array": [ - "publicKey", - 3 - ] - } - } - }, - { - "name": "merkleRoot", - "type": { - "option": { - "array": [ - "u8", - 32 - ] - } - } - }, - { - "name": "feeReduction", - "type": { - "option": "u16" - } - } - ] - } - }, - { - "name": "loan", - "type": { - "kind": "struct", - "fields": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "lender", - "type": "publicKey" - }, - { - "name": "borrower", - "type": "publicKey" - }, - { - "name": "mint", - "type": "publicKey" - }, - { - "name": "collectionConfig", - "type": "publicKey" - }, - { - "name": "status", - "type": { - "defined": "LoanStatus" - } - }, - { - "name": "loanTerms", - "type": { - "defined": "LoanTerms" - } - }, - { - "name": "creationTime", - "type": "i64" - }, - { - "name": "startTime", - "type": "i64" - }, - { - "name": "endTime", - "type": "i64" - }, - { - "name": "fox", - "type": "bool" - }, - { - "name": "mortgage", - "type": "bool" - }, - { - "name": "private", - "type": "bool" - }, - { - "name": "offerType", - "type": { - "defined": "OfferType" - } - }, - { - "name": "listingPrice", - "type": "u64" - }, - { - "name": "ltvTerms", - "type": { - "option": { - "defined": "LtvTerms" - } - } - }, - { - "name": "pool", - "type": "bool" - } - ] - } - }, - { - "name": "borrowAuthority", - "type": { - "kind": "struct", - "fields": [] - } - } - ], - types: [ - { - "name": "LoanTerms", - "type": { - "kind": "struct", - "fields": [ - { - "name": "apyBps", - "type": "u64" - }, - { - "name": "duration", - "type": "u64" - }, - { - "name": "principal", - "type": "u64" - } - ] - } - }, - { - "name": "LtvTerms", - "type": { - "kind": "struct", - "fields": [ - { - "name": "ltvBps", - "type": "u64" - }, - { - "name": "maxOffer", - "type": "u64" - } - ] - } - }, - { - "name": "MerkleData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "index", - "type": "u64" - }, - { - "name": "proof", - "type": { - "vec": { - "array": [ - "u8", - 32 - ] - } - } - } - ] - } - }, - { - "name": "Cpi", - "type": { - "kind": "struct", - "fields": [ - { - "name": "data", - "type": "bytes" - }, - { - "name": "numAccounts", - "type": "u8" - } - ] - } - }, - { - "name": "LoanStatus", - "type": { - "kind": "enum", - "variants": [ - { - "name": "WaitingForBorrower" - }, - { - "name": "WaitingForLender" - }, - { - "name": "Active" - }, - { - "name": "Repaid" - }, - { - "name": "Defaulted" - }, - { - "name": "OnSale" - } - ] - } - }, - { - "name": "OfferType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Global" - }, - { - "name": "Mortgage" - }, - { - "name": "Borrow" - } - ] - } - } - ], - events: [], - errors: [] -}; diff --git a/projects/citycoins/index.js b/projects/citycoins/index.js deleted file mode 100644 index 9efa9c417a8..00000000000 --- a/projects/citycoins/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/sumTokens') - -const NYC_CONTRACT = 'SP2H8PY27SEZ03MWRKS5XABZYQN17ETGQS3527SA5.newyorkcitycoin-core-v1' -const NYC_CONTRACT_V2 = 'SPSCWDV3RKV5ZRN1FQD84YE1NQFEDJ9R1F4DYQ11.newyorkcitycoin-core-v2' -const MIAMI_CONTRACT = 'SP466FNC0P7JWTNM2R9T199QRZN1MYEDTAR0KP27.miamicoin-core-v1' -const MIAMI_CONTRACT_V2 = 'SP1H1733V5MZ3SZ9XRW9FKYGEZT0JDGEB8Y634C7R.miamicoin-core-v2' -const MIAMI_CITY_WALLET = 'SM2MARAVW6BEJCD13YV2RHGYHQWT7TDDNMNRB1MVT' -const NYC_CITY_WALLET = 'SM18VBF2QYAAHN57Q28E2HSM15F6078JZYZ2FQBCX' -const MIAMI_DAO_TREASURY = 'SP8A9HZ3PKST0S42VM9523Z9NV42SZ026V4K39WH.ccd002-treasury-mia-mining-v3' -const NYC_REDEMPTION_TREASURY = 'SP8A9HZ3PKST0S42VM9523Z9NV42SZ026V4K39WH.ccd012-redemption-nyc' - -module.exports = { - stacks: { - tvl: sumTokensExport({ - owners: [NYC_CONTRACT, NYC_CONTRACT_V2, MIAMI_CONTRACT, MIAMI_CONTRACT_V2, MIAMI_DAO_TREASURY, NYC_REDEMPTION_TREASURY], - tokens: [nullAddress] - }), - staking: sumTokensExport({ - owners: [NYC_CONTRACT, NYC_CONTRACT_V2, MIAMI_CONTRACT, MIAMI_CONTRACT_V2, MIAMI_DAO_TREASURY], - blacklistedTokens: [nullAddress] - }), - }, - methodology: 'Added STX in contracts as TVL, and native tokens in it as staking' -}; \ No newline at end of file diff --git a/projects/civfund/index.js b/projects/civfund/index.js deleted file mode 100644 index c31e0a95ce3..00000000000 --- a/projects/civfund/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const civFarmContract = "0x8a774F790aBEAEF97b118112c790D0dcccA61099" -const stakingTokens = [ - "0x37fE0f067FA808fFBDd12891C0858532CFE7361d", - "0x73A83269b9bbAFC427E76Be0A2C1a1db2a26f4C2", -]; - -const pool2Tokens = [ - '0xED247449A7CA06DB5b27B44B2c092f0B48bbDB77', - '0x6C406daecA809382E649d6c8f768450bF8Dbc1dD', - '0xA65653BB6e1338dbCe69191bb1328700881fC051', -] - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: () => ({}), - staking: async (_, block) => sumTokens2({ block, owner: civFarmContract, tokens: stakingTokens}), - pool2: async (_, block) => sumTokens2({ block, owner: civFarmContract, tokens: pool2Tokens}), - }, -} diff --git a/projects/civitia/index.js b/projects/civitia/index.js deleted file mode 100644 index 2f0ac537b9f..00000000000 --- a/projects/civitia/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos.js'); - -module.exports = { - timetravel: false, - civitia: { - tvl: async () => { - const res = await queryV1Beta1({ - chain: "civitia", - url: "/bank/v1beta1/supply/by_denom?denom=l2%2F2b2d36f666e98b9eecf70d6ec24b882b79f2c8e2af73f54f97b8b670dbb87605", - }); - - return { 'coingecko:initia': res.amount.amount / 1e6 } - } - } -}; diff --git a/projects/cl-dex/index.js b/projects/cl-dex/index.js deleted file mode 100644 index 5cc079897c3..00000000000 --- a/projects/cl-dex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport('klaytn', '0x2A4C5eCaafB26460F17d509EA4d15741AF5F5f0a') diff --git a/projects/claimswap-v2/index.js b/projects/claimswap-v2/index.js deleted file mode 100644 index b4c15c97080..00000000000 --- a/projects/claimswap-v2/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -async function tvl(api) { - const pairs = await api.call({ abi: 'address[]:getAllPairs', target: '0x485eac14fafb515f16f87da5e4b59018546a335e' }) - const tokens = await Promise.all(pairs.map(p => api.fetchList({ target: p, lengthAbi: 'uint256:coin_length', itemAbi: 'function coins(uint256 i) view returns (address)' }))) - const ownerTokens = tokens.map((v, i) => [v, pairs[i]]) - return sumTokens2({ api, ownerTokens,}) -} - -module.exports = { - klaytn: { tvl } -} \ No newline at end of file diff --git a/projects/claimswap/index.js b/projects/claimswap/index.js deleted file mode 100644 index 2344b32afff..00000000000 --- a/projects/claimswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens'); -const { staking, } = require('../helper/staking'); - - -module.exports = { - methodology: `Tvl counts the tokens locked on AMM pools and staking counts the CLA that has been staked`, - klaytn: { - tvl: getUniTVL({ factory: '0x3679c3766E70133Ee4A7eb76031E49d3d1f2B50c', useDefaultCoreAssets: true, }), - staking: staking('0x5f5dec0d6402408ee81f52ab985a9c665b6e6010', '0xcf87f94fd8f6b6f0b479771f10df672f99eada63'), - }, - misrepresentedTokens: true, -} \ No newline at end of file diff --git a/projects/clamm/index.js b/projects/clamm/index.js deleted file mode 100644 index 138bb25f326..00000000000 --- a/projects/clamm/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - base: { - factory: '0x51a744E9FEdb15842c3080d0937C99A365C6c358', - fromBlock: 26899067, - isAlgebra: true, - }, -}) diff --git a/projects/clave/index.js b/projects/clave/index.js deleted file mode 100644 index 8ac3b247bcc..00000000000 --- a/projects/clave/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const ZtakeV1Address = "0x9248F1Ee8cBD029F3D22A92EB270333a39846fB2" - -async function tvl(api) { - // Clave aggregator tvl - const ownerTokens = [[ - [ - '0xd78abd81a3d57712a3af080dc4185b698fe9ac5a', - '0xd6cd2c0fc55936498726cacc497832052a9b2d1b', - '0x1Fa916C27c7C2c4602124A14C77Dbb40a5FF1BE8', - '0x69cDA960E3b20DFD480866fFfd377Ebe40bd0A46', - '0x84064c058F2EFea4AB648bB6Bd7e40f83fFDe39a', - '0x1aF23bD57c62A99C59aD48236553D0Dd11e49D2D', - '0x697a70779C1A03Ba2BD28b7627a902BFf831b616', - ADDRESSES.era.ZK, - ], '0x7f73934F333a25B456Dc9B8b62A19f211c991f1c' - ]] - - // Clave ztake tvl - const ZK = await api.call({ abi: 'address:ZK', target: ZtakeV1Address }) - ownerTokens.push([[ZK], ZtakeV1Address]) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - doublecounted: true, - era: { - tvl, - } -} diff --git a/projects/claystack-matic/index.js b/projects/claystack-matic/index.js deleted file mode 100644 index 7587a162079..00000000000 --- a/projects/claystack-matic/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const abis = { - "funds": "function funds() view returns (uint256 currentDeposit, uint256 stakedDeposit, uint256 accruedFees)" -} - -const clayAddresses = { - clayMatic: "0x91730940DCE63a7C0501cEDfc31D9C28bcF5F905", -}; - -async function tvl(api) { - const maticDeposits = await api.call({ target: clayAddresses.clayMatic, abi: abis.funds }) - api.add(ADDRESSES.ethereum.MATIC, maticDeposits.currentDeposit) -} - -module.exports = { - deadFrom: '2025-05-20', - ethereum: { tvl }, - methodology: `We get the total MATIC deposited in clay contracts and convert it to USD.` -} \ No newline at end of file diff --git a/projects/claystack/index.js b/projects/claystack/index.js deleted file mode 100644 index 45265d26304..00000000000 --- a/projects/claystack/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const abis = { - "funds": "function funds() view returns (uint256 currentDeposit, uint256 stakedDeposit, uint256 accruedFees)" -} - -const clayAddresses = { - clayEth: "0x331312DAbaf3d69138c047AaC278c9f9e0E8FFf8" -}; - -async function tvl(api) { - const ethDeposits = await api.call({ target: clayAddresses.clayEth, abi: abis.funds, }) - api.add(ADDRESSES.null, ethDeposits.currentDeposit) -} - -module.exports = { - deadFrom: '2025-05-20', - doublecounted: true, - hallmarks: [[1707315338,"Split Adapter"]], - ethereum: { tvl }, - methodology: `We get the total ETH deposited in clay contracts and convert it to USD.` -} \ No newline at end of file diff --git a/projects/clayswap/index.js b/projects/clayswap/index.js deleted file mode 100644 index 3a4fd74a89c..00000000000 --- a/projects/clayswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0x4c7fc1495559a13d68fa4b60286621dfcec16cf3"; -const token = "0xfd54aE2369a3Be69d441cAcC49F920fFEc9068Ac"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/clearpool-rwa/index.js b/projects/clearpool-rwa/index.js deleted file mode 100644 index 9d2fecc999b..00000000000 --- a/projects/clearpool-rwa/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const config = { - ethereum: [ - '0x7a486f809c952a6f8dec8cb0ff68173f2b8ed56c', // USDX - ], - flare: [ - '0x4a771cc1a39fdd8aa08b8ea51f7fd412e73b3d2b', // USDX - ] -} - -Object.keys(config).forEach(chain => { - const tokens = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const supply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) - api.add(tokens, supply) - return sumTokens2({ api }) - } - } -}) \ No newline at end of file diff --git a/projects/clearpool/abi.json b/projects/clearpool/abi.json deleted file mode 100644 index bcacdee158b..00000000000 --- a/projects/clearpool/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "borrows": "uint256:borrows" -} \ No newline at end of file diff --git a/projects/clearpool/index.js b/projects/clearpool/index.js deleted file mode 100644 index ad8721de641..00000000000 --- a/projects/clearpool/index.js +++ /dev/null @@ -1,227 +0,0 @@ -const abi = require("./abi.json") - -const { stakings } = require("../helper/staking") -const { getLogs } = require("../helper/cache/getLogs") -const { sumTokens2 } = require("../helper/unwrapLPs") - -const singleStakingContracts = ["0x629E39da1Db5654fe59cAE31d48CAEBB8dC2A9c6"] -const CPOOL = "0x66761fa41377003622aee3c7675fc7b5c1c2fac5" - -module.exports = { - methodology: "We count liquidity by Stables deposited on the pools contracts", -} - -const CHAIN = { - ARBITRUM: "arbitrum", - AVAX: "avax", - ETHEREUM: "ethereum", - OPTIMISM: "optimism", - POLYGON: "polygon", - POLYGON_ZKEVM: "polygon_zkevm", - FLARE: "flare", - BASE: "base", - MANTLE: "mantle", -} - -const blacklistedTokens = { - flare: ['0x4a771cc1a39fdd8aa08b8ea51f7fd412e73b3d2b'], -} - -const config = { - [CHAIN.ETHEREUM]: { - dynamic: { - factory: "0xde204e5a060ba5d3b63c7a4099712959114c2d48", - fromBlock: 14784948, - }, - prime: { - factory: "0x83D5c08eCfe3F711e1Ff34618c0Dcc5FeFBe1791", - fromBlock: 17577233, - }, - }, - [CHAIN.POLYGON_ZKEVM]: { - dynamic: { - factory: "0xCE3Fec90A05992dF1357651FEF6D143FeeC7Ca16", - fromBlock: 302970, - }, - }, - [CHAIN.POLYGON]: { - dynamic: { - factory: "0x215CCa938dF02c9814BE2D39A285B941FbdA79bA", - fromBlock: 31128013, - }, - }, - [CHAIN.OPTIMISM]: { - dynamic: { - factory: "0x99C10A7aBd93b2db6d1a2271e69F268a2c356b80", - fromBlock: 107128813, - }, - prime: { - factory: "0xe3E26D4187f3A8e100223576a37d30f2A89eb755", - fromBlock: 112307797, - }, - }, - [CHAIN.ARBITRUM]: { - dynamic: { - factory: "0x99C10A7aBd93b2db6d1a2271e69F268a2c356b80", - fromBlock: 113112037, - }, - prime: { - factory: "0x44fEF0fAB3A96CA34b06d5142350Ef9223F65A7e", - fromBlock: 226174706, - }, - vaults: { - factory: "0xA8e8AccabCf29e7d8b33D086085D87F9F38a6Ed7", - fromBlock: 226193395 - } - }, - [CHAIN.MANTLE]: { - dynamic: { - factory: "0xB217D93a8f6A4b7861bB2C865a8C22105FbCdE41", - fromBlock: 49691271, - }, - vaults: { - factory: "0xF041A2838794266d19f79709F416A2977F896A9B", - fromBlock: 59594636 - }, - prime: { - factory: "0x29157e2B6A34Ae1787CDdD05Ad54DD4aa9783A5c", - fromBlock: 68483768 - } - }, - [CHAIN.BASE]: { - vaults: { - factory: "0x199A016FFbe14781365bCaED9Cc52598B205DfAd", - fromBlock: 12634153, - }, - prime: { - factory: "0xBdf5575Ec1cC0a14Bd3e94648a2453fdC7B56943", - fromBlock: 12453163, - }, - }, - [CHAIN.AVAX]: { - vaults: { - factory: "0x8E557363AC9E5cbf09A2616A302CA3c8f6ab2b7A", - fromBlock: 42597808, - }, - prime: { - factory: "0x7A05280940A23749106D8Fb2cA4b10B9D1C89067", - fromBlock: 45264014, - }, - }, - [CHAIN.FLARE]: { - treasury: { - factory: "0x8E557363AC9E5cbf09A2616A302CA3c8f6ab2b7A", - fromBlock: 23711495, - }, - }, -} - -const getEventAndABI = (protocol) => { - let borrowFn - let abi - switch (protocol) { - case "dynamic": - abi = "event PoolCreated(address indexed pool, address indexed owner, address indexed token)"; - borrowFn = "uint256:borrows"; break; - case "vaults": - abi = "event PoolCreated(uint256 depositCap, uint256 repaymentFrequency, uint256 minimumNoticePeriod, uint256 minDeposit, uint256 lendAPR, address indexed asset, address indexed borrower, address pool, address bondNft, bool indexed kycRequired)"; - borrowFn = "uint256:poolSize"; break; - case "treasury": - abi = "event PoolCreated(address asset, address treasuryYieldAddress, address manager, bool kycRequired)"; - borrowFn = "uint256:cash"; break; - case "prime": - abi = "event PoolCreated(address pool, address indexed borrower, bool isBulletLoan, address indexed asset, uint256 size, uint256 rateMantissa, uint256 tenor, uint256 depositWindow, uint256 spreadRate, uint256 originationRate, uint256 incrementPerRoll, uint256 penaltyRatePerYear)" - borrowFn = "uint256:currentSize"; break; - } - return { borrowFn, abi } -} - -const prepareProtocolsPerChain = (chain) => { - let contracts = [] - const protocols = Object.keys(config[chain]) - protocols.forEach((protocol) => { - const { fromBlock, factory } = config[chain][protocol] - const { abi, borrowFn } = getEventAndABI(protocol) - contracts.push({ - fromBlock, - factory, - abi, - borrowFn, - protocol, - }) - }) - return contracts -} - -Object.keys(config).forEach((chain) => { - const dataPerChain = prepareProtocolsPerChain(chain) - const _getLogs = async (api, factory, fromBlock, abi, protocol) => { - const logs = await getLogs({ - api, - target: factory, - fromBlock, - eventAbi: abi, - onlyArgs: true, - }) - - const pools = logs.map((log) => - protocol == "treasury" ? log.treasuryYieldAddress : log.pool - ) - const tokens = logs.map((log) => - protocol == "dynamic" ? log.token : log.asset - ) - return { pools, tokens } - } - - const tvl = async (api) => { - let allTokens = [] - let allPools = [] - - const promiseArray = dataPerChain.map( - async ({ factory, fromBlock, abi, protocol }) => { - const { pools, tokens } = await _getLogs( - api, - factory, - fromBlock, - abi, - protocol - ) - allTokens.push(...tokens) - allPools.push(...pools) - } - ) - - await Promise.all(promiseArray) - - return sumTokens2({ api, tokensAndOwners2: [allTokens, allPools], blacklistedTokens: blacklistedTokens[chain] }) - } - - const borrowed = async (api) => { - const balances = [] - const allTokens = [] - - const promiseArray = dataPerChain.map( - async ({ factory, fromBlock, abi, borrowFn, protocol }) => { - const { pools, tokens } = await _getLogs( - api, - factory, - fromBlock, - abi, - protocol - ) - const bals = await api.multiCall({ abi: borrowFn, calls: pools }) - balances.push(...bals) - allTokens.push(...tokens) - } - ) - await Promise.all(promiseArray) - - api.addTokens(allTokens, balances) - if (blacklistedTokens[chain]) { - blacklistedTokens[chain].forEach((token) => api.removeTokenBalance(token)) - } - } - module.exports[chain] = { tvl, borrowed } -}) - -module.exports.ethereum.staking = stakings(singleStakingContracts, CPOOL) \ No newline at end of file diff --git a/projects/clearpool/readme.md b/projects/clearpool/readme.md deleted file mode 100644 index 3848cc0968a..00000000000 --- a/projects/clearpool/readme.md +++ /dev/null @@ -1,31 +0,0 @@ -# Add a new protocol and network - -## To add a new protocol or network -``` -1. Open https://squid.subsquid.io/cpool-squid/v/v1/graphql on browser -``` - -``` -2. Query `defillamaInfo` - -ex. query MyQuery { - defillamaInfo { - poolFactory - protocol - } -} -``` - -``` -3. Check the newly added protocols and networks, and proceed to hardcode their values in index.js, following the approach used for the existing networks and protocols. -``` -``` -4. run `npm i -f` to install dependencies. -``` - -``` -5. run `node test.js projects/clearpool/index.js` to test. -``` - - - diff --git a/projects/clearstar/index.js b/projects/clearstar/index.js deleted file mode 100644 index 6716c12e87f..00000000000 --- a/projects/clearstar/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Clearstar.', - blockchains: { - base: { - morphoVaultOwners: [ - '0x30988479C2E6a03E7fB65138b94762D41a733458', - ], - }, - ethereum: { - morphoVaultOwners: [ - '0x30988479C2E6a03E7fB65138b94762D41a733458', - ], - }, - polygon: { - morphoVaultOwners: [ - '0x30988479C2E6a03E7fB65138b94762D41a733458', - ], - }, - unichain: { - morphoVaultOwners: [ - '0x30988479C2E6a03E7fB65138b94762D41a733458', - ], - }, - katana: { - morphoVaultOwners: [ - '0x30988479C2E6a03E7fB65138b94762D41a733458', - ], - }, - arbitrum: { - morphoVaultOwners: [ - '0x30988479C2E6a03E7fB65138b94762D41a733458', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/cleopatra-exchange-v1/index.js b/projects/cleopatra-exchange-v1/index.js deleted file mode 100644 index bfa36b95e9e..00000000000 --- a/projects/cleopatra-exchange-v1/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - mantle:{ - tvl: getUniTVL({ factory: '0xAAA16c016BF556fcD620328f0759252E29b1AB57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), - staking: staking("0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F", "0xC1E0C8C30F251A07a894609616580ad2CEb547F2"), - }, -} \ No newline at end of file diff --git a/projects/cleopatra-exchange/index.js b/projects/cleopatra-exchange/index.js deleted file mode 100644 index 131ad295f52..00000000000 --- a/projects/cleopatra-exchange/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - mantle: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 34710765, }, -}) \ No newline at end of file diff --git a/projects/cleopatradao.js b/projects/cleopatradao.js deleted file mode 100644 index 65ba53fe814..00000000000 --- a/projects/cleopatradao.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - deadFrom: 1648765747, - misrepresentedTokens: true, - avax: { - tvl: () => ({}), - staking: () => ({}), - }, -} diff --git a/projects/clever-protocol/index.js b/projects/clever-protocol/index.js deleted file mode 100644 index 7d38e6c1120..00000000000 --- a/projects/clever-protocol/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORY = "0xf5833b5f514613beB33b4259a08aa64326E95c53" - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ - factory: FACTORY, - useDefaultCoreAssets: true, - }), - } -} diff --git a/projects/clever/abis/index.json b/projects/clever/abis/index.json deleted file mode 100644 index 5b07c5626a4..00000000000 --- a/projects/clever/abis/index.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "curve": { - "coinsUint": "function coins(uint256 arg0) view returns (address)", - "coinsInt": "function coins(int128 arg0) view returns (address out)", - "balances": "function balances(uint256 arg0) view returns (uint256)", - "balancesOther": "function balances(int128 arg0) view returns (uint256)" - }, - "balancer": { - "getPoolTokens": "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)" - }, - "getActiveYieldStrategies": "function getActiveYieldStrategies() view returns (uint256[] _indices, address[] _strategies, address[] _underlyingTokens, address[] _yieldTokens)", - "yieldStrategies": "function yieldStrategies(uint256) view returns (bool isActive, address strategy, address underlyingToken, address yieldToken, uint256 totalShare, uint256 activeYieldTokenAmount, uint256 harvestableYieldTokenAmount, uint256 expectedUnderlyingTokenAmount)" -} \ No newline at end of file diff --git a/projects/clever/config.js b/projects/clever/config.js deleted file mode 100644 index 13640a8fccc..00000000000 --- a/projects/clever/config.js +++ /dev/null @@ -1,62 +0,0 @@ -const tokens = { - BalancerContract: '0xba12222222228d8ba445958a75a0704d566bf2c8' -}; -const pools = [ - { - name: 'CLEV/ETH', - fromPlatform: "Curve", - addresses: { - lpToken: '0x6C280dB098dB673d30d5B34eC04B6387185D3620', - gauge: '0x86e917ad6Cb44F9E6C8D9fA012acF0d0CfcF114f', - }, - }, - { - name: 'clevCVX/CVX', - fromPlatform: "Curve", - addresses: { - lpToken: '0xF9078Fb962A7D13F55d40d49C8AA6472aBD1A5a6', - gauge: '0xF758BE28E93672d1a8482BE15EAf21aa5450F979', - }, - }, - { - - name: 'clevCVX/CVX', - fromPlatform: "Balancer", - addresses: { - lpToken: '0xf9078fb962a7d13f55d40d49c8aa6472abd1a5a6', - gauge: '0x9b02548De409D7aAeE228BfA3ff2bCa70e7a2fe8', - }, - }, - { - - name: 'abcCVX', - fromPlatform: "Curve", - addresses: { - lpToken: '0xDEC800C2b17c9673570FDF54450dc1bd79c8E359', - gauge: '0xc5022291cA8281745d173bB855DCd34dda67F2f0', - }, - }, -] -const clevers = [ - { - name: 'Frax-USDC', - indice: 1, - metaCleverAddress: '0xEB0ea9D24235aB37196111eeDd656D56Ce4F53b1', - }, - { - name: 'LUSDFraxBP', - indice: 0, - metaCleverAddress: '0xb2Fcee71b25B62baFE442c58AF58c42143673cC1', - }, - { - name: 'TUSDFraxBP', - indice: 0, - metaCleverAddress: '0xad4caC207A0BFEd10dF8A4FC6A28D377caC730E0', - }, - { - name: 'clevUSDFRAXBP', - indice: 0, - metaCleverAddress: '0x2C37F1DcEd208530A05B061A183d8937F686157e', - }, -] -module.exports = { pools, tokens, clevers }; \ No newline at end of file diff --git a/projects/clever/index.js b/projects/clever/index.js deleted file mode 100644 index fd44aec88b7..00000000000 --- a/projects/clever/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const commonAbi = require("./abis/index.json") -const config = require("./config") - -const lockCvxAddress = '0x96C68D861aDa016Ed98c30C810879F9df7c64154'; - -async function pool2(_, _1, _2, { api, balances = {}}) { - const gaugeTotalSupplies = await api.multiCall({ - abi: 'erc20:totalSupply', - calls: config.pools.map(i => ({ target: i.addresses.gauge })), - }) - gaugeTotalSupplies.forEach((item, i) => { - const lpToken = config.pools[i].addresses.lpToken - sdk.util.sumSingleBalance(balances, lpToken, item, api.chain) - }) - return balances -} - -async function getClevers(balances, api) { - const yieldStrategiesInfos = await api.multiCall({ - abi: commonAbi.yieldStrategies, - calls: config.clevers.map(i => ({ target: i.metaCleverAddress, params: i.indice })), - }) - yieldStrategiesInfos.forEach((item, i) => { - const underlyingToken = item.underlyingToken - const underlying = item.expectedUnderlyingTokenAmount - sdk.util.sumSingleBalance(balances, underlyingToken, underlying, api.chain) - }) -} - -async function tvl(api) { - let balances = {} - const [totalLockedGlobal] = await Promise.all([ - api.call({ - target: lockCvxAddress, - abi: "uint128:totalLockedGlobal", - }), - getClevers(balances, api), - ]) - sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.CVX, totalLockedGlobal) - return balances -} - -module.exports = { - ethereum: { - tvl, - pool2, - } -} diff --git a/projects/clink/index.js b/projects/clink/index.js deleted file mode 100644 index e5831ddb225..00000000000 --- a/projects/clink/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x38008f8a9dec4c688864ca4bae87c0bd080c0440" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl - } -} diff --git a/projects/clip-finance/index.js b/projects/clip-finance/index.js deleted file mode 100644 index 7b655bcf6bc..00000000000 --- a/projects/clip-finance/index.js +++ /dev/null @@ -1,169 +0,0 @@ -const ethers = require("ethers"); - -const config = { - bsc: { - vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", - }, - linea: { - vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", - clipTokenStaking: "0x8bbc8f21aabC8ecb5a566cE6013842E1F3c8fCC1", - clipToken: "0x4Ea77a86d6E70FfE8Bb947FC86D68a7F086f198a", - wClipToken: "0x54e4a172dbEaC5B239131a44B71C37113A8530F7", - }, - base: { - vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", - }, -}; - -const VaultType = { - PancakeV3: 1, - Stargate: 2, - MendiLending: 3, - Aero: 4, - LynexAlgebra: 5, - NileCl: 6, - ZeroLend: 7, - StargateFarming: 8, - UniswapV3: 9, -}; - -const typesDataInterfaces = { - any: ["uint256"], // has only vaultType - amm: ["uint256", "address"], // vaultType, amm pool address - vaultBased: ["uint256", "address"], // vaultType, strategy address - [VaultType.PancakeV3]: ["uint256", "address"], // vaultType, v3 pool address - [VaultType.Stargate]: ["uint256"], // vaultType - [VaultType.MendiLending]: ["uint256", "address"], //vaultType, mendi strategy address - [VaultType.Aero]: ["uint256"], //vaultType - [VaultType.LynexAlgebra]: ["uint256", "address"], // vaultType, algebra pool address - [VaultType.NileCl]: ["uint256", "address", "address"], // vaultType, nileCl pool address, stacking contract address - [VaultType.ZeroLend]: ["uint256", "address"], // vaultType, ZeroLend strategy address - [VaultType.StargateFarming]: ["uint256", "address"], // vaultType, Stargate strategy address - [VaultType.UniswapV3]: ["uint256", "address"], // vaultType, v3 pool address -}; - -const tvl = async (api) => { - const { vaultRegistry } = config[api.chain]; - const vaultDatas = await api.call({ abi: abis.getVaults, target: vaultRegistry }); - const decoder = ethers.AbiCoder.defaultAbiCoder(); - // for DefiLlama's reviewer: it is better to check vault type using vaultType instead of existence of certain - // function. We are not sure that we will not add the same function to other vault type. - const vaults = vaultDatas.map((i) => ({ ...i, vaultType: decoder.decode(typesDataInterfaces.any, i.data) })); - - // ammVaults - const ammTypes = [VaultType.PancakeV3, VaultType.LynexAlgebra, VaultType.NileCl, VaultType.UniswapV3]; - const ammVaults = vaults.filter((i) => ammTypes.includes(Number(i.vaultType.toString()))).map((i) => i.vault); - const ammPools = vaults - .filter((i) => ammTypes.includes(Number(i.vaultType.toString()))) - .map((i) => decoder.decode(typesDataInterfaces.amm, i.data)[1]); - - const ammBalances = await api.multiCall({ abi: abis.getTotalAmounts, calls: ammVaults }); - const ammToken0s = await api.multiCall({ abi: "address:token0", calls: ammPools }); - const ammToken1s = await api.multiCall({ abi: "address:token1", calls: ammPools }); - - ammBalances.forEach((pool, i) => { - api.add(ammToken0s[i], pool.total0); - api.add(ammToken1s[i], pool.total1); - }); - - // Aerodrome Vaults - const aerodromeVaults = vaults.filter((i) => i.vaultType == VaultType.Aero).map((i) => i.vault); - const tokenAs = await api.multiCall({ abi: "address:tokenA", calls: aerodromeVaults }); - - const tokenBs = await api.multiCall({ abi: "address:tokenB", calls: aerodromeVaults }); - const farms = await api.multiCall({ abi: "address:farm", calls: aerodromeVaults }); - - const lpTokens = await api.multiCall({ abi: "address:lpToken", calls: aerodromeVaults }); - - const liquidities = await api.multiCall({ - abi: abis.balanceOf, - calls: farms.map((vault, i) => ({ - target: vault, - params: aerodromeVaults[i], - })), - }); - - const lpTotalSupplies = await api.multiCall({ abi: "uint256:totalSupply", calls: lpTokens }); - const lpBalanceAs = await api.multiCall({ - abi: abis.balanceOf, - calls: tokenAs.map((tokenA, i) => ({ - target: tokenA, - params: lpTokens[i], - })), - }); - const lpBalanceBs = await api.multiCall({ - abi: abis.balanceOf, - calls: tokenBs.map((tokenB, i) => ({ - target: tokenB, - params: lpTokens[i], - })), - }); - - const tokenABalances = await api.multiCall({ - abi: abis.balanceOf, - calls: tokenAs.map((tokenA, i) => ({ - target: tokenA, - params: aerodromeVaults[i], - })), - }); - - const tokenBBalances = await api.multiCall({ - abi: abis.balanceOf, - calls: tokenBs.map((tokenB, i) => ({ - target: tokenB, - params: aerodromeVaults[i], - })), - }); - - aerodromeVaults.forEach((_, i) => { - if (lpTotalSupplies > 0) { - api.add(tokenAs[i], Math.floor((liquidities[i] * lpBalanceAs[i]) / lpTotalSupplies[i] + tokenABalances[i])); - api.add(tokenBs[i], Math.floor((liquidities[i] * lpBalanceBs[i]) / lpTotalSupplies[i] + tokenBBalances[i])); - } - }); - - // Vault Based Vaults - const vaultBasedTypes = [VaultType.MendiLending, VaultType.ZeroLend, VaultType.StargateFarming]; - const vaultBasedVaults = vaults.filter((i) => vaultBasedTypes.includes(Number(i.vaultType.toString()))).map((i) => i.vault); - const depositTokens = await api.multiCall({ abi: "address:depositToken", calls: vaultBasedVaults }); - const TVLs = await api.multiCall({ abi: "uint256:TVL", calls: vaultBasedVaults }); - vaultBasedVaults.forEach((_, i) => { - api.add(depositTokens[i], TVLs[i]); - }); - - //Stargate Vaults - const stargateVaults = vaults.filter((i) => i.vaultType == VaultType.Stargate).map((i) => i.vault); - return api.erc4626Sum({ calls: stargateVaults, tokenAbi: abis.depositToken, balanceAbi: abis.totalTokens }); -}; - -module.exports = { - methodology: - "Clip Finance TVL is achieved by summing total values of assets deposited in other protocols through our vaults and vaults balances.", - doublecounted: true, - start: '2023-10-18', // (Oct-18-2023 11:15:57 AM +UTC) deployed on the BSC network -}; - -Object.keys(config).forEach((chain) => { - const { clipTokenStaking, clipToken, wClipToken } = config[chain]; - - module.exports[chain] = { - tvl, - }; - - if (clipTokenStaking && clipToken && wClipToken) - module.exports[chain].staking = async (api) => { - const totalStackedWClip = await api.call({ target: clipTokenStaking, abi: abis.getCumulativeStaked, params: wClipToken, }); - - // Add to TVL wCLIP (1 wCLIP = 1 CLIP always) staked in the Clip Token Staking contract - api.add(clipToken, totalStackedWClip); - } -}); - -const abis = { - getTotalAmounts: "function getTotalAmounts() external view returns (uint256 total0, uint256 total1, uint128 liquidity)", - depositToken: "address:depositToken", - totalTokens: "uint256:totalTokens", - getVaults: "function getVaults() view returns ((address vault, bytes data)[])", - balanceOf: "function balanceOf(address) view returns (uint256)", - getCumulativeStaked: "function getCumulativeStaked(address stakedToken) external view returns (uint256)" -}; diff --git a/projects/clipper/index.js b/projects/clipper/index.js deleted file mode 100644 index 1d5ea4ab632..00000000000 --- a/projects/clipper/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { nullAddress } = require('../helper/tokenMapping') - -async function tvl(api) { - const { pool: { address: poolAddress }, assets } = await getConfig('clipper/' + api.chain, `https://api.clipper.exchange/rfq/pool?chain_id=${api.chainId}`) - const tokens = assets.map(({ address }) => address) - const owners = [poolAddress] - tokens.push(nullAddress) - if (api.chain === 'ethereum') owners.push('0xe82906b6B1B04f631D126c974Af57a3A7B6a99d9') - return api.sumTokens({ tokens, owners }) -} - -module.exports = { - methodology: `Counts the tokens in pool address in different chains` -}; - -['ethereum', 'polygon', 'moonbeam', 'arbitrum', 'optimism', 'mantle', 'base', 'polygon_zkevm'].forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/clob/index.js b/projects/clob/index.js deleted file mode 100644 index 2869addb685..00000000000 --- a/projects/clob/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const axios = require("axios"); -const ADDRESSES = require('../helper/coreAssets.json') -const BigNumber = require("bignumber.js"); - -async function arbitrumTvl(api) { - const url = `https://api.orderly.org/v1/public/balance/stats?broker_id=desk` - const response = await axios.get(url) - const tvl = new BigNumber(response.data.data.total_holding).times(1e6).toFixed(0) - - api.add(ADDRESSES.arbitrum.USDC_CIRCLE, tvl) -} - -module.exports = { - misrepresentedTokens: true, - arbitrum: { tvl: arbitrumTvl }, -}; \ No newline at end of file diff --git a/projects/clober-liquidity-vault/index.js b/projects/clober-liquidity-vault/index.js deleted file mode 100644 index 653b3c6dcc9..00000000000 --- a/projects/clober-liquidity-vault/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const abi = { - openEvent: 'event Open(bytes32 indexed key, uint192 indexed bookIdA, uint192 indexed bookIdB, bytes32 salt, address strategy)', - getBookKey: "function getBookKey(uint192 id) view returns ((address base, uint64 unitSize, address quote, uint24 makerPolicy, address hooks, uint24 takerPolicy))", - getLiquidity: "function getLiquidity(bytes32 key) view returns ((uint256 reserve, uint256 claimable, uint256 cancelable) liquidityA, (uint256 reserve, uint256 claimable, uint256 cancelable) liquidityB)", -} - -const config = { - rebalancer: '0xeA0E19fbca0D9D707f3dA10Ef846cC255B0aAdf3', - bookManager: '0x382CCccbD3b142D7DA063bF68cd0c89634767F76', - blacklistedTokens: ['0x000000000000bb1b11e5ac8099e92e366b64c133'], - fromBlock: 21715410 -} - -async function tvl(api) { - const { rebalancer, bookManager, fromBlock, blacklistedTokens } = config - const logs = await getLogs2({ api, factory: rebalancer, eventAbi: abi.openEvent, fromBlock, extraKey: 'open-bookid' }) - const bookIds = logs.map(i => [i.bookIdA, i.bookIdB]).flat() - const res = await api.multiCall({ abi: abi.getBookKey, calls: bookIds, target: bookManager }) - const tokens = res.map(i => [i.base, i.quote]).flat() - return api.sumTokens({ owners: [rebalancer], tokens, blacklistedTokens }) -} - -module.exports = { - // hallmarks: [[1733788800, 'The Clober Liquidity Vault has been hacked']], - methodology: "TVL includes all assets deposited into the Clober Liquidity Vault contract, specifically allocated for liquidity provision and market-making within the Clober ecosystem", - base: { tvl } -} diff --git a/projects/clober-v2/index.js b/projects/clober-v2/index.js deleted file mode 100644 index ea1f5ce4762..00000000000 --- a/projects/clober-v2/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getUniqueAddresses } = require('../helper/utils') - -const abi = { - openEvent: 'event Open(uint192 indexed id, address indexed base, address indexed quote, uint64 unitSize, uint24 makerPolicy, uint24 takerPolicy, address hooks)', -} - -const config = { - base: { factory: '0x382CCccbD3b142D7DA063bF68cd0c89634767F76', fromBlock: 14528050, }, - era: { factory: '0xAaA0e933e1EcC812fc075A81c116Aa0a82A5bbb8', fromBlock: 34448160, }, -} - -function customCacheFunction({ cache, logs }) { - if (!cache.logs) cache.logs = [] - const tokens = logs.map(({ base, quote }) => [base, quote]).flat() - cache.logs.push(...tokens) - cache.logs = getUniqueAddresses(cache.logs) - return cache -} - -async function tvl(api) { - const { factory, fromBlock } = config[api.chain] - const tokens = await getLogs2({ api, factory, eventAbi: abi.openEvent, fromBlock, extraKey: 'open-address', customCacheFunction,}) - return sumTokens2({ api, owner: factory, tokens, permitFailure: true }) -} - -module.exports = { - methodology: "TVL consists of assets deposited into the Clober Book Manager contract", -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/clober/abi.json b/projects/clober/abi.json deleted file mode 100644 index 6edec0a4e17..00000000000 --- a/projects/clober/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "nonce":"uint256:nonce", - "market":"address:market", - "baseToken":"address:baseToken", - "quoteToken":"address:quoteToken" -} \ No newline at end of file diff --git a/projects/clober/index.js b/projects/clober/index.js deleted file mode 100644 index 92233ff2855..00000000000 --- a/projects/clober/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const abi = require("./abi.json"); -const { ethers } = require("ethers"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const contractV1DeployedChainIds = [1, 137, 42161] -const contractV1_1DeployedChainIds = [137, 1101, 42161] - -function calculateSalt(chainId, nonce) { - return ethers.solidityPackedKeccak256(['uint256', 'uint256'], [chainId, nonce]) -} - -async function fetchTokenAddressesV1_0(api, chainId){ - if(!contractV1DeployedChainIds.includes(chainId)){ - return [] - } - return await api.fetchList({ - lengthAbi: abi.nonce, - itemAbi: "function computeTokenAddress(uint256) view returns (address)", - target: "0x93A43391978BFC0bc708d5f55b0Abe7A9ede1B91" - }) -} - -async function fetchTokenAddressesV1_1(api, chainId){ - if (!contractV1_1DeployedChainIds.includes(chainId)) { - return [] - } - const maxNonce = await api.call({ abi: abi.nonce, target: "0x24aC0938C010Fb520F1068e96d78E0458855111D" }) - return await api.multiCall({ - abi: "function computeTokenAddress(bytes32) view returns (address)", - calls: Array.from({length: maxNonce}, (_, i) => i ).map((i, v) => ({ target: "0x58ed1f4913e652baF17C154551bd8E9dbc73fC56", params: calculateSalt(chainId, v) })), - }) -} - -async function tvl(api) { - const chainId = await api.getChainId() - let tokenAddresses = [...await fetchTokenAddressesV1_0(api, chainId), ...await fetchTokenAddressesV1_1(api, chainId)] - tokenAddresses = tokenAddresses.flat() - const markets = await api.multiCall({ abi: abi.market, calls: tokenAddresses }) - const base = await api.multiCall({ abi: abi.baseToken, calls: markets}) - const quote = await api.multiCall({ abi: abi.quoteToken, calls: markets}) - const tokens = [base, quote].flat() - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens}) - const putTokens = tokens.filter((_, i) => symbols[i].includes('$') && symbols[i].endsWith('PUT')) - const ownerTokens = markets.map((v, i) => ([[base[i], quote[i]], v])) - const putQutes = await api.multiCall({ abi: abi.quoteToken, calls: putTokens}) - const putUnderlying = await api.multiCall({ abi: 'address:underlyingToken', calls: putTokens}) - putTokens.forEach((v, i) => ownerTokens.push([[putQutes[i], putUnderlying[i]], v])) - return sumTokens2({ api, ownerTokens, blacklistedTokens: putTokens, }) -} -module.exports = { - methodology: "TVL consists of assets deposited into market contracts", - ethereum: { tvl }, - polygon: { tvl }, - arbitrum: { tvl }, - polygon_zkevm: { tvl } -} \ No newline at end of file diff --git a/projects/clone/index.js b/projects/clone/index.js deleted file mode 100644 index 659d9f47b63..00000000000 --- a/projects/clone/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { sumTokens2, getProvider, } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js") - -const programId = new PublicKey('C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr') - -async function tvl() { - const provider = getProvider() - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - - let tokenAccounts = [] - - const cloneAccountAddress = PublicKey.findProgramAddressSync( - [Buffer.from("clone")], programId)[0] - - const cloneAccount = await program.account.clone.fetch(cloneAccountAddress) - tokenAccounts.push(cloneAccount.collateral.vault.toString()) - - return sumTokens2({ tokenAccounts }) -} - -module.exports = { - deadFrom: "2024-09-30", - hallmarks: [[1727654400, "Clone Sunset"]], - timetravel: false, - solana: { tvl : () => ({})}, - methodology: 'Return the amount of collateral in the vault.' -} diff --git a/projects/clovis/index.js b/projects/clovis/index.js deleted file mode 100644 index 799a2c8f2ba..00000000000 --- a/projects/clovis/index.js +++ /dev/null @@ -1,127 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const abi = require('../helper/abis/aave.json'); - -const VAULT_ADDRESS = '0x39166b36A25a4A98D6B7C21d429f4740C6A5e94C'; - -const VAULTS = { - ethereum: [VAULT_ADDRESS], - arbitrum: [VAULT_ADDRESS], - optimism: [VAULT_ADDRESS], - polygon: [VAULT_ADDRESS], - base: [VAULT_ADDRESS], - bsc: [VAULT_ADDRESS], - sei: [VAULT_ADDRESS], - hyperliquid: [VAULT_ADDRESS], - avax: [VAULT_ADDRESS], - swellchain: [VAULT_ADDRESS], -}; - -const WRAPPERS = { - sei: [ - '0x809FF4801aA5bDb33045d1fEC810D082490D63a4', // aYeiSEI - '0x093066736E6762210de13F92b39Cf862eee32819', // aYeiWETH - '0x817B3C191092694C65f25B4d38D4935a8aB65616', // aYeiNativeUSDC - '0x368A466cD8679197a08a3F6318B6a5b67df81fb0', // aYeiUSDT0 - '0xB6298BCD7EC6CA2A6EaBdD84A88969091b2c3291', // aYeiBTC - ], -}; - -const TOKENS = { - ethereum: [ - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC - '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT - ], - optimism: [ - '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', // USDC - '0x01bFF41798a0BcF287b996046Ca68b395DbC1071', // USD₮0 - '0x4200000000000000000000000000000000000006', // WETH - '0x68f180fcCe6836688e9084f035309E29Bf0A2095', // WBTC - ], - bsc: [ - '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', // USDC - '0x55d398326f99059fF775485246999027B3197955', // USDT - '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', // ETH - '0x0555E30da8f98308EdB960aa94C0Db47230d2B9c', // WBTC - ], - polygon: [ - '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', // USDC - '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', // USDT - '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', // WETH - '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', // WBTC - ], - hyperliquid: [ - '0x9ab96A4668456896d45c301Bc3A15Cee76AA7B8D', // rUSDC - '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', // USD₮0 - ], - base: [ - '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC - '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2', // USDT - '0x4200000000000000000000000000000000000006', // WETH - '0x0555E30da8f98308EdB960aa94C0Db47230d2B9c', // WBTC - ], - arbitrum: [ - '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // USDC - '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', // USD₮0 - '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', // WETH - '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', // WBTC - ], - avax: [ - '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', // USDC - '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', // USDt - '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', // WETH.e - '0x50b7545627a5162F82A992c33b87aDc75187B218', // WBTC.e - ], - swellchain: [ - '0x9ab96A4668456896d45c301Bc3A15Cee76AA7B8D', // rUSDC - '0x102d758f688a4C1C5a80b116bD945d4455460282', // USD₮0 - '0x4200000000000000000000000000000000000006', // WETH - ], -}; - -async function tvl(api) { - const owners = VAULTS[api.chain] || []; - const wrappers = WRAPPERS[api.chain] || []; - const tokens = TOKENS[api.chain] || []; - - // Handle wrapped tokens - const underlyings = await api.multiCall({ - abi: abi.getUnderlying, - calls: wrappers, - permitFailure: true, - }); - const calls = wrappers.flatMap((wrapper, i) => - owners.map(owner => ({ target: wrapper, params: owner, underlying: underlyings[i] })) - ); - const underlyingBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: calls.map(call => ({ target: call.target, params: call.params })), - permitFailure: true, - }); - api.add(underlyings, underlyingBalances) - - // Handle direct tokens - const tokenBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: tokens.flatMap((token) => - owners.map(owner => ({ target: token, params: owner })) - ), - }); - api.add(tokens, tokenBalances); - - return sumTokens2({ api, owners, resolveLP: true }); -} - -module.exports = { - ethereum: { tvl }, - arbitrum: { tvl }, - optimism: { tvl }, - polygon: { tvl }, - base: { tvl }, - bsc: { tvl }, - sei: { tvl }, - hyperliquid: { tvl }, - avax: { tvl }, - swellchain: { tvl }, -}; \ No newline at end of file diff --git a/projects/clutch-market/index.js b/projects/clutch-market/index.js deleted file mode 100644 index 50f41c5cc91..00000000000 --- a/projects/clutch-market/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - arbitrum: { - staking: { - token: "0x05905af7933f89280aB258919F0dFA056CeD8e43", // CLUTCH token - contract: "0x52070c2f7527822ccaea77e46fb23754151e2793" // CLUTCH staking contract - }, - tvlTokens: [ - { - token: ADDRESSES.arbitrum.USDC_CIRCLE, // USDC - contract: "0xbBEa81aBd42e8804de0f7d167Cf8123206d55039" // USDC TVL contract - } - ] - }, - apechain: { - staking: null, // No platform token staking on APE chain - tvlTokens: [ - { - token: ADDRESSES.null, // Native APE token - contract: "0x7F66d16A488Eae9e2B61BfB186fD94bBA3611416" // APE contract - }, - { - token: ADDRESSES.apechain.sDAI, // ApeUSD stablecoin - contract: "0x812D9ed73aC36626CA893D99847E9978905b33C6" // ApeUSD contract - } - ] - } -}; - -async function stakingTvl(_, _1, _2, { api }) { - const chain = api.chain - const stakingConfig = config[chain].staking; - if (!stakingConfig) return {}; // Return empty TVL if no staking on chain - return sumTokens2({ api, tokens: [stakingConfig.token], owners: [stakingConfig.contract] }); -} - -async function tvl(_, _1, _2, { api }) { - const chain = api.chain - const tokensAndOwners = config[chain].tvlTokens.map(({ token, contract }) => [token, contract]); - const tvlValue = await sumTokens2({ api, tokensAndOwners }); - - return tvlValue; -} - -module.exports = { - methodology: "TVL on Arbitrum includes CLUTCH token staking and USDC in lending pools. On APE Chain, TVL includes native APE token and ApeUSD stablecoin in lending pools. Values are calculated separately for staking and lending pools.", - arbitrum: { - staking: stakingTvl, tvl // Combined TVL and staking - }, - apechain: { - tvl // Track APE and ApeUSD lending - }, -}; diff --git a/projects/cmdao-gameswap/index.js b/projects/cmdao-gameswap/index.js deleted file mode 100644 index 315e900272b..00000000000 --- a/projects/cmdao-gameswap/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens'); -const { pool2 } = require("../helper/pool2"); - -module.exports = { - jbc: { - tvl: sumTokensExport({ - owner: '0x280608DD7712a5675041b95d0000B9089903B569', - tokens: [ADDRESSES.jbc.JUSDT], - }), - }, - optimism: { - pool2: pool2('0x51f97e67b2ff5ed064dc2b27b7a745e0d4c47ee0', ['0xA41F70B283b8f097112ca3Bb63cB2718EE662e49']), - }, - bitkub: { - pool2: pool2('0xe5B764566CB5b26fE7568e59370368ACf9c7c5c3', ['0x5Cced24E580586841f326d5088D288e6Ddd201dA']), - } -}; diff --git a/projects/cmswap/index.js b/projects/cmswap/index.js deleted file mode 100644 index b29f0142f8e..00000000000 --- a/projects/cmswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - jbc: { factory: '0x5835f123bDF137864263bf204Cf4450aAD1Ba3a7', fromBlock: 4990175, }, - bitkub: { factory: '0x090C6E5fF29251B1eF9EC31605Bdd13351eA316C', fromBlock: 25033350, }, -}) diff --git a/projects/cobaltX/index.js b/projects/cobaltX/index.js deleted file mode 100644 index 6053262c45a..00000000000 --- a/projects/cobaltX/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection, decodeAccount, sumTokens2 } = require("../helper/solana"); - -const CobaltXProgram = { - soon: "2TnjBuwqyBB9to5jURagDT7jLmBPefGRiKL2yh1zPZ4V", - soon_bsc: "6f1b3xyVZbnWMHXBjgW1KPwxmPAgXcRdrvKNn4Nmf1Cn", - soon_base: "6f1b3xyVZbnWMHXBjgW1KPwxmPAgXcRdrvKNn4Nmf1Cn", -} - -async function tvl(api) { - const programId = CobaltXProgram[api.chain]; - const connection = getConnection(api.chain); - const allPoolKeyInfo = await connection.getProgramAccounts(new PublicKey(programId), { filters: [{ dataSize: 1544 }], }) - const tokenAccounts = allPoolKeyInfo.map(i => { - const data = decodeAccount('byrealCLMM', i.account) - return [data.vaultA.toString(), data.vaultB.toString()] - }).flat() - return sumTokens2({ api, tokenAccounts }) -} - -Object.keys(CobaltXProgram).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/cobraswap/index.js b/projects/cobraswap/index.js deleted file mode 100644 index 6e34adb55ca..00000000000 --- a/projects/cobraswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -const factory = "0x3165d94dd2f71381495cb897832de02710a0dce5"; - -module.exports = uniTvlExport('bsc', factory) diff --git a/projects/cochilli/index.js b/projects/cochilli/index.js deleted file mode 100644 index 6130dee55ce..00000000000 --- a/projects/cochilli/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const tokens = [ADDRESSES.base.USDbC]; // USDC - -module.exports = { - base: { // sum vault balances - tvl: sumTokensExport({ owners: ['0xEA6CEC09e9C8E9a0EA9335aa11719E39fB0C3a5E'], tokens }), - }, -}; diff --git a/projects/cockfightsgame/index.js b/projects/cockfightsgame/index.js deleted file mode 100644 index 105bd66a307..00000000000 --- a/projects/cockfightsgame/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/ton'); -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - methodology: 'Counts the pool size as the TVL.', - timetravel: false, - ton: { - tvl: sumTokensExport({ owner: 'EQAgpXksmpJdcItdKvn97G0zD844iztZuKJa_3JnRr0XkCdD', tokens: [ADDRESSES.null]}), - } -} diff --git a/projects/coconuts-finance/abi.json b/projects/coconuts-finance/abi.json deleted file mode 100644 index dda88359cae..00000000000 --- a/projects/coconuts-finance/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalAssets": "uint256:totalAssets" -} \ No newline at end of file diff --git a/projects/coconuts-finance/index.js b/projects/coconuts-finance/index.js deleted file mode 100644 index be0cd1a2116..00000000000 --- a/projects/coconuts-finance/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - avax: { - tvl: () => ({}) - }, - deadFrom: '2022-04-27', -}; diff --git a/projects/code7/index.js b/projects/code7/index.js deleted file mode 100644 index 299bf5b17f7..00000000000 --- a/projects/code7/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const code7 = "0xF77864FCFfeC4598813E3378681c9330B771cA88"; -const sevenshare = "0xB215014176720EdA5334df07f827c3f11ec0f1bD"; -const rewardPool = "0x42cd7c105cdc5c85d2ba1e57f7c74cb96f95e549"; -const masonry = "0x39990bf6889ec7481ed021c11210b09d29c1c2ea"; - -const lps = [ - "0x25d6e427e0db1594156f1d4f334f62184555332e", - "0xd4996a8654cf4cd319fc82e70430e4704f6e55d5" -]; - -module.exports = { - ...tombTvl(code7, sevenshare, rewardPool, masonry, lps, "fantom", undefined, false, lps[0]) -} \ No newline at end of file diff --git a/projects/coffeefi/index.js b/projects/coffeefi/index.js deleted file mode 100644 index a8da5aeff62..00000000000 --- a/projects/coffeefi/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -const config = { - scroll: '0x23537BCe0533e53609A49dffdd400e54A825cb81', - arbitrum: '0xdAF8b79B3C46db8bE754Fc5E98b620ee243eb279', -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true, hasStablePools: true, }) - } -}) \ No newline at end of file diff --git a/projects/coffer-network/index.js b/projects/coffer-network/index.js deleted file mode 100644 index b89466fd29e..00000000000 --- a/projects/coffer-network/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens } = require("../helper/sumTokens.js"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); - -async function tvl(api) { - const owners = await bitcoinAddressBook.coffernetwork(); - return sumTokens({ owners, api }) -} - -module.exports = { - methodology: "TVL is fetched from Coffer Network Bitcoin Staking Protocol from native Bitcoin", - start: "2025-01-20", - isHeavyProtocol: true, - doublecounted: true, - bitcoin: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/coffin-meme/index.js b/projects/coffin-meme/index.js deleted file mode 100644 index 8011665f059..00000000000 --- a/projects/coffin-meme/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require('../helper/coreAssets.json') - -const coffinScAddr = "EQBozwKVDya9IL3Kw4mR5AQph4yo15EuMdyX8nLljeaUxrpM" - -module.exports = { - methodology: 'Counts Coffin.Meme smartcontract TON & jettons balance as TVL.', - ton: { - tvl: sumTokensExport({ owner: coffinScAddr, tokens: [ADDRESSES.null], }), - } -} \ No newline at end of file diff --git a/projects/coffin/index.js b/projects/coffin/index.js deleted file mode 100644 index e7a07d12c91..00000000000 --- a/projects/coffin/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { masterchefExports } = require('../helper/unknownTokens'); -const { mergeExports } = require('../helper/utils'); - -const MasterChefV1Contract = "0x155482Bd4e5128082D61a2384935D4BBDcb0E7a7"; -const MasterChefV2Contract = "0x2447115E9Ba73bd2877821BF69E09259664a2bd5"; - -const stakingContract = "0x61Befe6E5f20217960bD8659cd3113CC1ca67d2F"; - -module.exports = mergeExports([ - masterchefExports({ chain: 'fantom', masterchef: MasterChefV1Contract, }), - masterchefExports({ chain: 'fantom', masterchef: MasterChefV2Contract, }), - { fantom: { staking: staking(stakingContract, ADDRESSES.fantom.WFTM) } }, -]) diff --git a/projects/cofix.js b/projects/cofix.js deleted file mode 100644 index f4c958ad545..00000000000 --- a/projects/cofix.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens } = require('./helper/unwrapLPs') - -async function tvl(_, block) { - return sumTokens({}, [ - [ADDRESSES.ethereum.USDT, '0xb2b7bedd7d7fc19804c7dd4a4e8174c4c73c210d'], - [ADDRESSES.ethereum.WETH, '0xb2b7bedd7d7fc19804c7dd4a4e8174c4c73c210d'], - ['0x0316EB71485b0Ab14103307bf65a021042c6d380', '0x7c2d7b53aca4038f2eb649164181114b9aee93cb'], - [ADDRESSES.ethereum.WETH, '0x7c2d7b53aca4038f2eb649164181114b9aee93cb'], - ], block) -} - -module.exports = { - ethereum: { tvl } -} diff --git a/projects/cog-finance/index.js b/projects/cog-finance/index.js deleted file mode 100644 index 696722fea84..00000000000 --- a/projects/cog-finance/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - scroll: [{ factory: '0xbabd55549c266c6755b99173fe7604238d04117d', fromBlock: 85518 }, { factory: '0xCd44fecb08bb28405992358131Fd5081A0F550D0', fromBlock: 3147376 }], -} - -async function _getLogs(api, factory, fromBlock,) { - const events = ['StablePairCreated', 'LowPairCreated', 'MediumPairCreated', 'HighPairCreated'] - const logs = (await Promise.all(events.map(event => getLogs({ - api, - target: factory, - eventAbi: `event ${event} (address indexed asset, address indexed collateral, address indexed pair)`, - onlyArgs: true, - extraKey: event, - fromBlock, - })))).flat() - return logs -} - -Object.keys(config).forEach(chain => { - const factories = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = [] - for (const { factory, fromBlock, } of factories) { - const _logs = await _getLogs(api, factory, fromBlock,) - logs.push(..._logs) - } - const ownerTokens = logs.map(i => [[i.asset, i.collateral], i.pair]) - return sumTokens2({ api, ownerTokens, }) - }, - borrowed: async (api) => { - const logs = [] - for (const { factory, fromBlock, } of factories) { - const _logs = await _getLogs(api, factory, fromBlock,) - logs.push(..._logs) - } - const pairs = logs.map(i => i.pair) - const borrows = await api.multiCall({ abi: 'function total_borrow() view returns (tuple(uint128 elastic, uint128 base))', calls: pairs }) - borrows.map((v, i) => { - api.add(logs[i].asset, v.elastic) - api.add(logs[i].asset, v.base) - }) - return api.getBalances() - } - } -}) diff --git a/projects/coin8-cex/index.js b/projects/coin8-cex/index.js deleted file mode 100644 index 56453d9e050..00000000000 --- a/projects/coin8-cex/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x76d90b0f8150797d9eb4ce91bca2829f494c3766', - '0x8332086fa910f6e72e9793778d91b6f9ef2d719d', - '0xa63811cd3abdbc0bd0f668a9eb98b97a96ead95f', - '0x9b9B873F2Bf299B0E8C5b2E8Ff220Dc5cb4330E1', - '0xFBcE3974014022853136989149787df66D54E623', - '0x66AAD5CA93438D565909De0bF444b45e543d98E9', - '0x2355969e0692D41bCbB5e695513C0cF4Ae6059C2', - '0x0733E99402D268D4475A8F5E45987Db04bA66181', - '0xd83Daa277d9DAD1f34aDE22002806251f04f4a28', - '0x748577Ce82346C61e9d6e52628Eda8dFaB3241b3', - '0xaDc7cf570DDf2Ff99C723F946c7F5A5D34cF868C' - ], - }, - bitcoin: { - owners: bitcoinAddressBook.coin8 - }, - arbitrum: { - owners: [ - '0x3465136aa1ab5fd78bae06a91c280157532c62b8', - '0xebb54920eda335dfcde8a904f8293bcb5ac64aff', - '0x66AAD5CA93438D565909De0bF444b45e543d98E9' - ] - }, - bsc: { - owners: [ - '0x8f3d8dde9f2687d93640ecede2a91b1dc3404bd6', - '0xef01a7711d046af41597c308369b9c8d5873ae96', - '0x9b9B873F2Bf299B0E8C5b2E8Ff220Dc5cb4330E1', - '0xF4271F1c5ABa50B9c18d229311FD22C4Cc7B70b6', - '0xa089b8de0eA45db84CCadE5751EE165A88F90b4F', - '0xFBcE3974014022853136989149787df66D54E623', - '0xC349541773D5eCa27D36E9bD95094920f4B7A536', - '0x66AAD5CA93438D565909De0bF444b45e543d98E9' - ] - }, - solana: { - owners: [ - '8HTUpmDQAXeMtKMyojVFY32iAzhG6tEg6zqvASAzHnNd', - '9JSjQQMTmkTSGHT5s6aKnJop6q6hsqMvkTGLzrC9x1NP' - ] - }, - ripple: { - owners: [ - 'rKpRrFhAk8w3WzhoKDA9XrVf9F9CCUrnY5', - ] - }, - polygon: { - owners: [ - '0x66AAD5CA93438D565909De0bF444b45e543d98E9', - ] - }, - avax: { - owners: [ - '0x66AAD5CA93438D565909De0bF444b45e543d98E9', - ] - }, - tron: { - owners: [ - 'TWGV42YRYpK1rfMHZCYYxhK1fZDbTNrqzz', - 'TZD1mbbNqnffBRSr8zEjWo6L37vk3nxhvT', - 'TFjKKNBqrsjRhmPnimyArxTuPxq5HkG9T7' - ] - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/coin98/index.js b/projects/coin98/index.js deleted file mode 100644 index c7c3d8d55a0..00000000000 --- a/projects/coin98/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking'); - -const POWER_POLL_CONTRACT = '0x39C9dB7C1412041d084fED054Fc9318B9F75AcDb' -const COIN98_CONTRACT = '0x0Fd0288AAAE91eaF935e2eC14b23486f86516c8C' - -module.exports['tomochain'] = { - tvl: () => ({}) , - staking: staking(POWER_POLL_CONTRACT, COIN98_CONTRACT) -} - -module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/coinbase-ada/index.js b/projects/coinbase-ada/index.js deleted file mode 100644 index 2f0755a9490..00000000000 --- a/projects/coinbase-ada/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokensExport } = require('../helper/sumTokens'); - -const ADA_ADDRESSES = [ - "addr1qyn4lcv64v40a4667j7x3gjmc4wt32dejakwnwxx2geyemp8tlse42e2lmt44a9udz39h32uhz5mn9mvaxuvv53jfnkqc00vz5", - "addr1vx6h5wyagdu70ecth9xmcnlnq9jct42nj4mm4ej3fmrcmvgaycmzh", - "addr1vxwzm0hd3vpsxg9p7mm386ahul8l08jvq2v6cm7v5gg9p3cx8al02" -]; - -module.exports = { - methodology: "ADA collateral backing CBADA https://www.coinbase.com/cbada/proof-of-reserves", - cardano: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: ADA_ADDRESSES }), - ]), - }, -}; \ No newline at end of file diff --git a/projects/coinbase-btc/index.js b/projects/coinbase-btc/index.js deleted file mode 100644 index 5d1648fecea..00000000000 --- a/projects/coinbase-btc/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokensExport } = require('../helper/sumTokens'); -const { sumTokens } = require('../helper/chain/bitcoin.js'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - - -const ADA_ADDRESSES = [ - "addr1qyn4lcv64v40a4667j7x3gjmc4wt32dejakwnwxx2geyemp8tlse42e2lmt44a9udz39h32uhz5mn9mvaxuvv53jfnkqc00vz5", - "addr1vx6h5wyagdu70ecth9xmcnlnq9jct42nj4mm4ej3fmrcmvgaycmzh", - "addr1vxwzm0hd3vpsxg9p7mm386ahul8l08jvq2v6cm7v5gg9p3cx8al02" -]; - -const XRP_ADDRESSES = [ - "rKopBmtBSMmUD6NCFNwGTG3b9ZxNzf7Tt4", - "rU1DGbMWhrFSJLPcrtKuV5iPyD1wrVgeaU", - "rMbVVXFHaBpSpJhdR1xvy7dkQL1gtnkopg", - "rGsMk4nK4M8MtcjVbjUeaJBppjjKpXyJ7F" -]; - -const DOGE_ADDRESSES = [ - "DLuceb7v8vHknepvYRTzz5bSMUAqax8vTN", - "DCqkF26vcqG1FGJiB7L73jyTDeFkjeEPvJ", - "DNhLqkURqaQDW4f4J9wxtVzRw1XxhkjZ6m" - ]; - -async function btcTvl(api) { - const response = await fetch("https://www.coinbase.com/cbbtc/proof-of-reserves.json", { - "headers": { - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8", - "accept-language": "en-US,en;q=0.5", - "cache-control": "no-cache", - "pragma": "no-cache", - "priority": "u=0, i", - "sec-ch-ua": "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Brave\";v=\"138\"", - "sec-ch-ua-arch": "\"x86\"", - "sec-ch-ua-bitness": "\"64\"", - "sec-ch-ua-full-version-list": "\"Not)A;Brand\";v=\"8.0.0.0\", \"Chromium\";v=\"138.0.0.0\", \"Brave\";v=\"138.0.0.0\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-model": "\"\"", - "sec-ch-ua-platform": "\"Linux\"", - "sec-ch-ua-platform-version": "\"6.2.0\"", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "none", - "sec-fetch-user": "?1", - "sec-gpc": "1", - "upgrade-insecure-requests": "1", - }, - "body": null, - "method": "GET" - }); - - const res = await response.json(); - - const bitcoinWallets = res.reserveAddresses.map(item => item.address) - - return sumTokens({ timestamp: api.timestamp, owners: bitcoinWallets }) - } - - - -module.exports = { - methodology: "TVL tracks wrapped tokens backed 1:1 by assets held by Coinbase", - cardano: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: ADA_ADDRESSES }), - ]), - }, - ripple: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: XRP_ADDRESSES }), - ]), - }, - bitcoin: { - tvl: btcTvl, - }, - litecoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.coinbaseltc }), - ]), - }, - doge: { - tvl: sumTokensExport({ owners: DOGE_ADDRESSES }), - }, - }; diff --git a/projects/coinbase-doge/index.js b/projects/coinbase-doge/index.js deleted file mode 100644 index 2aa95c0a879..00000000000 --- a/projects/coinbase-doge/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); - -const DOGE_ADDRESSES = [ -"DLuceb7v8vHknepvYRTzz5bSMUAqax8vTN", -"DCqkF26vcqG1FGJiB7L73jyTDeFkjeEPvJ", -"DNhLqkURqaQDW4f4J9wxtVzRw1XxhkjZ6m" -]; - -module.exports = { - methodology: "DOGE collateral backing CBDOGE https://www.coinbase.com/en-nl/cbdoge/proof-of-reserves", - doge: { - tvl: sumTokensExport({ owners: DOGE_ADDRESSES }), - }, -}; \ No newline at end of file diff --git a/projects/coinbase-ltc/index.js b/projects/coinbase-ltc/index.js deleted file mode 100644 index 0e4f2bccf96..00000000000 --- a/projects/coinbase-ltc/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "LTC collateral backing CBLTC. https://www.coinbase.com/en-sg/cbltc/proof-of-reserves", - litecoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.coinbaseltc }), - ]), - }, -}; diff --git a/projects/coinbase-xrp/index.js b/projects/coinbase-xrp/index.js deleted file mode 100644 index 8a38243cc81..00000000000 --- a/projects/coinbase-xrp/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokensExport } = require('../helper/sumTokens'); - -const XRP_ADDRESSES = [ -"rKopBmtBSMmUD6NCFNwGTG3b9ZxNzf7Tt4", -"rU1DGbMWhrFSJLPcrtKuV5iPyD1wrVgeaU", -"rMbVVXFHaBpSpJhdR1xvy7dkQL1gtnkopg", -"rGsMk4nK4M8MtcjVbjUeaJBppjjKpXyJ7F" -]; - -module.exports = { - methodology: "XRP collateral backing CBXRP https://www.coinbase.com/en-in/cbxrp/proof-of-reserves", - ripple: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: XRP_ADDRESSES }), - ]), - }, -}; \ No newline at end of file diff --git a/projects/coincollect/index.js b/projects/coincollect/index.js deleted file mode 100644 index f750ac0d35e..00000000000 --- a/projects/coincollect/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') - -const MasterChefContract = "0x46A928F2386b8c38cdde028a32c5b7aa19F40445"; -const COLLECT = "0x56633733fc8BAf9f730AD2b6b9956Ae22c6d4148"; - -module.exports = { - methodology: `Uses factory(0x2bc17223A99B6e2857796a5F64A1ED91067b5657) address to count liquidity in pools as TVL.`, - misrepresentedTokens: true, - polygon: { - tvl: getUniTVL({ factory: '0x2bc17223A99B6e2857796a5F64A1ED91067b5657', useDefaultCoreAssets: true, }), - staking: sumTokensExport({owner: MasterChefContract, tokens: [COLLECT], lps: ['0x0cCc84b6506003487AEC687085e82C2f912E607B'], useDefaultCoreAssets: true, }), - } -}; - - diff --git a/projects/coindcx/index.js b/projects/coindcx/index.js deleted file mode 100644 index 84a9a41485e..00000000000 --- a/projects/coindcx/index.js +++ /dev/null @@ -1,165 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xEF0Fc6322b2b5b02f0Db68f8eA74819560124b2d', - '0x6D92f2E52481ce219D201EaA1b0Cf6839270152F', - '0x2407b9B9662d970ecE2224A0403D3B15c7e4D1FE', - '0xb188a49Da0836c289dcB4Fa0E856647a33DE537F', - '0xA4FE2F90a8991A410c825C983CbB6A92d03607fc', - '0xb79421720b92180487f71F13c5D5D8B9ecA27BF1', - '0x4D24EecEcb86041F47bca41265319e9f06aE2Fcb', - '0xF25d1D2507ce1f956F5BAb45aD2341e3c0DB6d3C', - '0xb85E9868a0E8492353Db5C3022e6F96fc62F2306', - '0x881f982575a3EcBEA6fe133ddB0951303215d130', - '0xb6DFCF39503dddDe140105954a819e944CE543A7', - '0xAA8bC1fc0FCfdcA5b7E5D35e5AC13800850d90C7', - '0x37b6bD5fECE5b88B6E8e825196bcc868a2FeEd51', - '0x763104507945B6b7f21Ee68b92048A53F7debF18', - '0xe298dC1c377e4511f32Afd2362726c4F3A644356', - '0x78bba2389c2cEEb6f94C70eD133712E3B3e2C4D0', - '0x06051836ac6C5112b890f8b6Ec78e33D1AfeaE7c', - '0x3698cc7F524BAde1a05e02910538F436a3E94384', - '0x660e3Bd3bcDa11538fa331282666F1d001b87A42', - '0xA916a54af7553BAe6172e510D067826Bd204d0dD', - '0xA15B94629727152c952a6979d899F71426cE7976', - '0xf809c975eFAD2Bc33E21B5972DB765A6230E956A', - '0x892787C947fdd1CF6C525C6107d80265D3D7EBb4', - '0x8c7Efd5B04331EFC618e8006f19019A3Dc88973e', - '0xCCFA6f3b01c7bf07B033A9d496Fdf22F0cdF5293', - '0x90f76616d34Cb6A1F4423B33c0201B2A1980Fc81', - ADDRESSES.ethereum.FTM, - ADDRESSES.ethereum.MATIC, - '0xC1723Af0Dc5400A1cAAa47E76a45c39538A6AD49', - '0x07E114C06462D8892Ae4574A7502b8c1c0FBdFbb', - '0x274c427B1BF0bB4a137EDE688c6D621263CA7Ce8', - '0xD4D7Aedb9AbeEC03101dB6f8426DeeE390E3cCF9', - '0x50B0063161e507bEc6c21cC23FD11EC2945b7b52', - '0x29A62a542b6EA441abB6F03C2bca54aD72fF750C', // - ], - }, - bsc: { - owners: [ - '0x2407b9B9662d970ecE2224A0403D3B15c7e4D1FE', - '0xb79421720b92180487f71F13c5D5D8B9ecA27BF1', - '0x4D24EecEcb86041F47bca41265319e9f06aE2Fcb', - '0xF25d1D2507ce1f956F5BAb45aD2341e3c0DB6d3C', - '0x8c7Efd5B04331EFC618e8006f19019A3Dc88973e', - '0x1CE0c2827e2eF14D5C4f29a091d735A204794041', - '0xAda1fA671651D335998c6a0dE336a78F5b49Ad3F', - '0x7cCCf66DB1A0d4069a52A0C26859EDbC34177065', - '0xf250EE103b8e4C5b9825a270e5c70Ea0C113c854', - '0x59548449926551ACb5480d610292c4266b872beF', // - ] - }, - bitcoin: { - owners: bitcoinAddressBook.coindcx - }, - tron: { - owners: [ - 'TGjpmhAFT6d7eBKvaFwPVN6H2pDKgLLZiw', - 'TU7BbAsb8t371eMijQeiGXsiLvY1vZbsFs', - 'TPaRk5RJmDjYfUwrE6JcJ91miqUa4xU9PN', - 'THEAKkH9JuhF5oWTy9jSeumAYyHSFBepAw', - 'TLvAURZkwUJpRvfccNiCuXqktaaBbu8NVi', - 'TM5r1bNJ2TjZwfS757tPPtr84MwtEjL9qN', - 'TDePQj7ZfFNuDJdWJE7Gy2L9LcndW9Gpjq', - 'TWQ4PG879vT5Cqu55iMpSy4WhMPdG7bKYr', - 'TDdT3q5TZVR7RvsQx6fxik3wjCYdFGxBVy', - 'TFLxNHunhEizmeEdiMyA3r2XGLSKaEznGd', // - 'TAWK8YMnn7yAfnQRyvjiBv9ksocFt9qNdR', - 'TVayqwydqcX1sEuzmxfXz2fHJcuCNGwYVN', - 'TVYH5Y4KstUfRNx1ZQbqgdtX1Jw3bMTKtJ' - ] - }, - cardano: { - owners: [ - 'addr1qy7f98r5ar2ayyst7lmm90tl630tsetygecz36vq33qmvevngs3w3w3mt4l3em80z5f9e64j0jj37hazql87nfmzrfqs3f7gum', - 'addr1qy5dqjx4mtegqu6kx5gu6upkk96c8haf38eksj5tr8g5dae2z9j36evkf2ek7zej3exgls6czmr4vz3ff8h952f3933sw25zf4', - 'addr1q90372c396d7w0cw3agseaj8vf4t8m9e3lwwc752jd30hyt4pthja5v60hfjesrayhrc7tnasnsev0uka3c0vpukazms5uw76h', - 'addr1qyu9n5wtyufnp6vuhcak38tx4lw37znzkulat7s987xtv86xx265k42gtvuvkt4vyjjxgqn9wat2zmda3f7ns2pl2y2qwtgdav', - 'addr1q9h690lw5hpd37r4ngmlhf0y8wms394y4dlm0wa6nmann9pm8fwxgvusmpkhsgtl3gdlj988mllq7teadjlk3eld3c6qyc3yf6', - 'addr1qx47g9mejkukkspsp6jdjdzf2lmektye8w7n0cm9ukxvewdljr2awtjh5r9kgt5evrkk6j4fe2pe33etuvazrg3flnnsg0jlex', - 'addr1q8m3qp920cljg5g079909xrvhngfln5u9n8xug6jtz44rfsm9sj09fksz42yhj3gfcukrlfarty39dac26wd5wp2gsrqc6cuxk', - 'addr1qx824fl32wrgankldpnyt7txz0mel5d9cldfkus4xykl3uzqzu4gt7tqpysglu8xz7fgt4ym6el57wl7fm80wy99d3ks0srn98', - 'addr1q8xeul4sslt5xyeaa02vzgquwagv84t9xcjekauja5cz4wsat2uc2fe4mqfdzaaag2y9nevju4p5va0yqf0tuj9cmu7ql9emkc', - 'addr1q9m8eq44qcqe40yz0jwcuc3vs9t7zr6ukz8ctvfkjma5dmxdlpn5em67csmpgdeqvkjl6ppwe29a85ddgdmmg0nmpfusnq98e6', - 'addr1qyzrghamkktczv3wujrdqt243emzu49zu0z3vxw768kpy0fknd8whx6gnzwtg78yxfuxwu4z8k4zsk9rvx34sxalet5sgjcn56', - ] - }, - ripple: { - owners: [ - 'rGcT3Dpz9Dk3oV7hsDT7Q1s6NRPo9a8iDt', - 'rMa4tVPUFTBC7Zzg1BkDwVWPLuE8bbQMX9', - 'rKa1G2q15ya4Xr3U3LVdEhBpR3H1CUNnQN', - 'rLUpiBeLhUyEzVtBkYE4S9t4zhdybSSARw', - 'rBjVFQDVC7WvAZNrpvapfq7MhSUMhj68wa', - ] - }, - solana: { - owners: [ - 'AjCHG7CYJST379Eh7xLqhRaUyBzurFKjsX7z8DTrfGZp', - 'HwgxMWxaq5cDbdVmoH24Gy8F9m9DkU7Mwgdbgh4mh2m7', - '6p8LxMvHUZtdiik28TQy483WaCaDGsAUFm3PKjpUpLB', - 'Bq6NnW55ToJrAM7NxUYDmSMbKKCQ6f742ZemLiypqjzY', - '92qQCjprXoJ5GYji5it8PJTneBFxzSJ6mYosQWxYKxx4', - 'EhZLSqyWrazhqR5bmyyEfFRa3ycWu9KPgQgQ7G1R9zC9', - '5bjZPeHbdGUCduyY8i2dZkkgLWkG3u1P2sbt1Jb5kFxW', - 'EUXVDPCwXe9sJt3VucYfveB1kk5piSWJqhWQEsFtE2CR', - '9buzBcTujdQLyf1XkyLaSrGNbkyNxg8qML3bpKWCz9P6', - '8nFGjbJNdarBouEC856Qmhrm8fptuEUnZrpNKgougsLi', - '8W4u11KJYhmCY9rs2MCVHmMrgpeHLgsbkwAarbNvzr2Y', - '6fuHoq5Tr2j6dFTGWHmLUhVBUj8XvDBgdGGzgfSwe5DN', - '4E73T5Zubx3kPtheJ5DB6QMEaadMQowhUcdRV6f9rvVt', - '8zSWFy8wvHEuFJ7CZ81wy2wn4fPaju6jc6tbtbv5x9f8', - '6XuYJv4PyauP2WKdgd4fZYvjK7uBdVkEySoy89fXV9XT', - '3Nvb6UeEMVLf9DsehhqT8B5SNHrNLEpHdf42nXi9aLK8', - ] - }, - avax: { - owners: [ - '0x2407b9B9662d970ecE2224A0403D3B15c7e4D1FE', - '0xb79421720b92180487f71F13c5D5D8B9ecA27BF1', - '0xF25d1D2507ce1f956F5BAb45aD2341e3c0DB6d3C', - '0xAda1fA671651D335998c6a0dE336a78F5b49Ad3F', - '0x978E746330870627CC353092eDd2dBA3Cc99461c', - ]}, - arbitrum: { - owners: [ - '0xAda1fA671651D335998c6a0dE336a78F5b49Ad3F' - ]}, - fantom: { - owners: [ - '0x8c7Efd5B04331EFC618e8006f19019A3Dc88973e', - '0xAda1fA671651D335998c6a0dE336a78F5b49Ad3F', - '0x0B5ffAE844a4B21c7beeDed2595F22215288173C', - '0x50B0063161e507bEc6c21cC23FD11EC2945b7b52', - ]}, - polygon: { - owners: [ - '0xAda1fA671651D335998c6a0dE336a78F5b49Ad3F', - '0x5fED0d9bE6FD42e086E0D4F1bF6ceCd19635dEAd', - '0x07E114C06462D8892Ae4574A7502b8c1c0FBdFbb', - ]}, - litecoin: { - owners: [ - 'ltc1qtzcxl7jt4m35h44kww26fvfc50c0turvv88rte', - 'LTJu6BRKJiipjnJtiystZaRYC7NsGeWtrD', - 'ltc1q6gr2sjm87x92wjrdrt8uhdy87r39la4c4chwvq', - 'LeNU94XpxtQGpeoyY6ZtxRv5yfvBnGpn1r', - 'LeiiKS5cWutJoakb4abBmPZr5tCqcmBaBb', - 'ltc1q6hddqqfe9zjfmazp06kr8h5wl6qvmwpcctppk9', - ]}, - optimism: { - owners: [ - '0xAda1fA671651D335998c6a0dE336a78F5b49Ad3F', - ] - }, - } - - -module.exports = cexExports(config) -module.exports.methodology = 'We got this wallets from CoinDCX on the 16/01/2024. We are not tracking their ETH validators. On the 17/01/2024 they had 32 ETH validators.' \ No newline at end of file diff --git a/projects/coindrip/index.js b/projects/coindrip/index.js deleted file mode 100644 index 1d717f2d35e..00000000000 --- a/projects/coindrip/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { toUSDTBalances } = require("../helper/balances"); -const { get } = require("../helper/http"); -const { sumTokensExport } = require('../helper/sumTokens') -const { getCoreAssets } = require('../helper/tokenMapping') - -const API_URL = "https://app.coindrip.finance/api/tvl"; - -async function tvl() { - const data = await get(API_URL); - return toUSDTBalances(data); -} - -module.exports = { - timetravel: false, - elrond: { - tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqqnm3x37972323nuv3l3kywev0n8q5n6gyc8qwljqz9', whitelistedTokens: getCoreAssets('elrond')}), - vesting: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqqnm3x37972323nuv3l3kywev0n8q5n6gyc8qwljqz9', blacklistedTokens: getCoreAssets('elrond')}), - }, -}; \ No newline at end of file diff --git a/projects/coinex/index.js b/projects/coinex/index.js deleted file mode 100644 index 0a1e3dd236e..00000000000 --- a/projects/coinex/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); - -const config = { - ethereum: { - owners: [ - "0x187e3534f461d7c59a7d6899a983a5305b48f93f", - "0x33ddd548fe3a082d753e5fe721a26e1ab43e3598", - "0x90f86774e792e91cf81b2ff9f341efca649343a6", - "0x85cf05f35b6d542ac1d777d3f8cfde57578696fc", - "0xda07f1603a1c514b2f4362f3eae7224a9cdefaf9", - "0x601a63c50448477310fedb826ed0295499baf623", - "0x53eb3ea47643e87e8f25dd997a37b3b5260e7336", - "0xd782e53a49d564f5fce4ba99555dd25d16d02a75", - "0x5ad4d300fa795e9c2fe4221f0e64a983acdbcac9", - "0xAFedF06777839D59eED3163cC3e0A5057b514399", - "0x38f6d5fb32f970Fe60924B282704899411126336", - "0xD4d2960E1e58a597723aE021cc811193f79153B1", - "0xf335788b2251dEc93332310d96d15500cdC4C34b", - "0x20145C5e27408B5C1CF2239d0115EE3BBc27CbD7", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.coinex, - }, - tron: { - owners: [ - "TS98H6jSx6uv1gG1vx6CJZMeYGkMZXgQ7K" - ], - }, - starknet: { - owners: [ - "0x00fb108ed29e1b5d82bb61a39a15bbab410543818bf7df9be3c0f5dd0d612cf3", - ], - }, -}; - -module.exports = mergeExports([ - cexExports(config), - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddresses: ['0xafedf06777839d59eed3163cc3e0a5057b514399' , '0x548054687ef6c56c6d82e8269e5fd93d8b88fcb2'], size: 200, sleepTime: 20_000, proxy: true }) } }, -]) diff --git a/projects/coinscope/index.js b/projects/coinscope/index.js deleted file mode 100644 index f3755f8283f..00000000000 --- a/projects/coinscope/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumUnknownTokens } = require('../helper/unknownTokens') -module.exports = { - misrepresentedTokens: true, - methodology: "TVL is calculated by summing the values of LP tokens held in lockers for a specific network", -}; - -const lockerFactories = { - ethereum: "0x269D4d211CBc9845B006128717eE51b0D6524955", - bsc: "0x269D4d211CBc9845B006128717eE51b0D6524955", - polygon: "0x269D4d211CBc9845B006128717eE51b0D6524955", - avax: "0x269D4d211CBc9845B006128717eE51b0D6524955", - arbitrum: "0x269D4d211CBc9845B006128717eE51b0D6524955", - cronos: "0x269D4d211CBc9845B006128717eE51b0D6524955", - fantom: "0x269D4d211CBc9845B006128717eE51b0D6524955", - telos: "0x269D4d211CBc9845B006128717eE51b0D6524955", - harmony: "0x097f5E933306ad0EbB1c0027B223a3dd153520BE", -} - -Object.keys(lockerFactories).forEach(chain => { - const factory = lockerFactories[chain] - module.exports[chain] = { - tvl: async (api) => { - let fetchLength = 100 - let page = 0 - const tokensAndOwners = [] - let result - do { - result = await api.call({ - abi: abi.getTokens, - target: factory, - params: [true, page, fetchLength, ADDRESSES.null,], - }) - tokensAndOwners.push(...result.pageTokens.map(i => i.lockerAddresses.map(j => [i.tokenAddress, j]))) - ++page - } while (result.total === tokensAndOwners) - return sumUnknownTokens({ api, tokensAndOwners: tokensAndOwners.flat(), useDefaultCoreAssets: true }) - } - } -}) - -const abi = { - "getTokens": "function getTokens(bool lp, uint256 page, uint256 pageSize, address token) view returns (tuple(address tokenAddress, uint8 decimals, uint256 totalSupply, bool pair, string pairToken1Name, address pairToken1Address, string pairToken2Name, address pairToken2Address, address pairDexAddress, string tokenName, string tokenSymbol, uint256 totalAmountLocked, uint256 currentAmountLocked, address[] lockerAddresses)[] pageTokens, uint256 total)", -} \ No newline at end of file diff --git a/projects/coinsquare/index.js b/projects/coinsquare/index.js deleted file mode 100644 index 88fcfa8e05d..00000000000 --- a/projects/coinsquare/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x02fdc44Bf226E49DCecA4775Afaef3360e9C4EE9', - '0x0fcFF154753e337983613889b69dd85Fe8a1a145', - '0x14AA1AD09664c33679aE5689d93085B8F7c84bd3', // avax too - '0x3858A27eeCB5f1144473E35A293cb1B2bda6DfF4', - '0x476B067CbFF8ACB805038E9dAEF5D51c7612d593', - '0x48a0B5f7DE8789a3962918C6DF4A766c0c8857B0', - '0x56E89a4b2E3924c336d52CE0ad98fF23E1a51627', - '0x6A73f209d25CC9c089170cc5b54962e0c7614E0c', - '0x6d712f120bD65aD54a5F56670976788a044Cb987', - '0x7061d86A274B398a1fB7Cdb74B3abBc7601e105f', - '0x7ee87dd5BB9924Cb85CA2916Bd4E04299D3A8EcC', - '0x82Be7cFeF05B70c4AF47F8fd70F636201121341b', - '0x8623c08A4B880799CF65E75137ec9759DB336637', - '0x89813b57AE92e74Fb808eb7639d3A0050c9b3D7D', - '0x8e080C5d233F2A14A37d024c0382bF0585146993', - '0x910695E5C7c14499B554fb132A9710988a42fC38', - '0x9C6D4A1922Eed56Ee9de148c5BA9b1b477FEcBb6', - '0xC4d75abAb14Ef006d5Ac9fe901a8ed616C4e2627', - '0xD381347EE757F53aE4B3b6822DAeC3E2A14B2005', - '0xD5B2C371808018ee131ad387877C4d58e08e7A06', - '0xd093F2Ee92cf32B4D3EBefd965447415074DD6c8', - '0xf9c91937737cCaFE9bBb662b1917B54F9606Ca13', - '0xfac596Facd1901458C1C6347397a6e5D0769736c', - ], - }, - bitcoin: { - owners: bitcoinAddressBook.coinsquare - }, - avax: { - owners: ['0x14AA1AD09664c33679aE5689d93085B8F7c84bd3'] - }, - solana: { - owners: ['4DgunMfBb19GaMZ1Z48oqcymZ4eBA4v5SUdRnapzj66G'] - }, - cardano: { - owners: ['addr1vysfm34dhk3an94lz0s8p76rcze7ee5060dp9uenku5g2jc9dapls'] - }, - cosmos: { - owners: ['cosmos12chvl78ffgvzc29mvrg5auz94vgksne5svsje4'] - }, - ripple:{ - owners: [ - 'rBrgepoU9B4tZkXKsp9oHns252mkAFLrYj', - 'rsae9sMcxRe9WXHFM3WJJ3NdZESaoRY3KC' - ] - }, - litecoin: { - owners: [ - 'LNwvCzirtdVFTeG3YcQZ3Cg7FPCwmyeYJm', - 'LeZcdqjgfd3L8vDVYWGuFvrJyT2Xy9grCf', - 'LYSR1E7kzoxnX8fbgRgDUJo1VVd2H1vwXF', - 'LPosd2yrP7RNP688yFTuMnMnhSrs5zLPia', - 'LPVrozsF3z6C6mYRGKN6xRCHs7dm1htTYs', - 'Lax8DbJauyWhV5YNTaeZge4oBP2HTNiqYz', - - ] - }, - doge: { - owners: [ - 'D9uH999MANKyNkzfb8XwRmQhHEBNLBh9sA', - 'DQNrmw9tb9NDxyhjb6BvJnvAvDBC3CMurE', - 'DAMt5CrmkVuiNDEWCWRiyecpvNKi58FSbd', - 'DGXx3yTPND5E7uJdCzLe945ri6Qa9as3Go', - 'DAd1JWwtwx1paUuWG71ePNLU3WJUFaMJoh' - ] - } -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/coinstore/index.js b/projects/coinstore/index.js deleted file mode 100644 index cbe05fdd565..00000000000 --- a/projects/coinstore/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { cexExports } = require("../helper/cex"); - -const config = { - ethereum: { - owners: [ - "0x4200BDaD267F9280beBc1F4dFa30B7B094BfdBAa", - "0xf2067abfab8bc621211935431519d41825d2f344", - ], - }, - bsc: { - owners: [ - "0x20664cacdcfeb318c8e145a03c75e34bc2cc4a3b", - "0x40C847f59600286cFEE8d6De6640E967a7824d57", - ], - }, - tron: { - owners: [ - "TEvxwK7ddcYvwfm4R7MBA6p4h8rzicWCz1", - ], - }, - bitcoin: { - owners: ["bc1qln4vr73lt3828awfw5aj0ssvtwlnsamj2e4c26"], - }, - polygon: { - owners: ["0x65e1615eFC11c63E15c00aC4447C56aF294135a9"], - }, - solana: { - owners: ["DVoATqaFVS98WwbGAYvBxUAX88bWTrW9Ej2mgFJ8Gm64"], - }, - arbitrum: { - owners: ["0x2A6e62f040a7f0B830847Da101539A7EEf7bB040"], - }, - avax: { - owners: ["0x1e14f71C96262C45167465Ab380b684d652377D9"], - }, - doge: { - owners: ["DHqeB3crF4UCdoQcsCWv93x5m3VmM1CFJd"], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/coinswap/index.js b/projects/coinswap/index.js deleted file mode 100644 index 81d8c7719ba..00000000000 --- a/projects/coinswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens.js"); - -const factory = "0xC2D8d27F3196D9989aBf366230a47384010440c0"; - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL counts the liquidity of the DEX. The factory address(0xC2D8d27F3196D9989aBf366230a47384010440c0) is used to find every LP pair that has been created.', - bsc: { - tvl: getUniTVL({ - factory, - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/coinw/index.js b/projects/coinw/index.js deleted file mode 100644 index 408e75fdde6..00000000000 --- a/projects/coinw/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xa20f10289248717374e9b7776dc368aa526cb6f2', - '0x611f32e5d7f6640ecaf3e66759318abb9cbece64', - '0x2d6323cc438b96f0ae942280762cc507b5398563', - '0xbf2d58698a8a215f868cf24baba360c77266b466', - '0x3864d8f360ba98212a2eddf05a357599f25196c1', - '0xb840fe2b3fd8f75275240c671d6ec659e4c9a500', - '0xe48a4e20be4ea888748c56bdcb632d960cbfb011' - ], - }, - bitcoin: { - owners: bitcoinAddressBook.coinw - }, - tron: { - owners: [ - 'TEdzoWmVaKnSjvbY33FNjkGogo5xKUkSRD', - 'TXWmdMZkLA45WPiKqTMeLvcHPeZSj1npdp', - 'TRg92o9H1T7m5beDvTzqGYJ1CLoyEnjUpB', - 'TTvYfJhC45kLriLTEAbVawBrBQhAW8shh3' - ] - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/coinwind/abi.json b/projects/coinwind/abi.json deleted file mode 100644 index 2b700936e6e..00000000000 --- a/projects/coinwind/abi.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address token, uint256, uint256, uint256, uint256, uint256 totalAmount, uint256, uint256, uint256, uint256, uint256)", - "ethPoolInfo": "function poolInfo(uint256) view returns (address token, uint256, uint256, uint256, uint256 totalAmount, uint256, uint256, uint256, uint256, uint256, uint256)", - "daoPoolInfo": "function poolInfo(uint256) view returns (address token, uint256, uint256, uint256, uint256 totalAmount, uint256, uint256, uint256, uint256, uint256, uint256)", - "totalSupply": "uint256:totalSupply", - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)", - "token0": "address:token0", - "token1": "address:token1" -} \ No newline at end of file diff --git a/projects/coinwind/index.js b/projects/coinwind/index.js deleted file mode 100644 index 42fb754b9f0..00000000000 --- a/projects/coinwind/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require('../helper/staking'); -const { pool2 } = require('../helper/pool2'); -const BSC_POOL_DAO = "0x4711D9b50353fa9Ff424ceCa47959dCF02b3725A" - - -module.exports = { - methodology: 'TVL counts deposits made to Lossless single asset pools on Ethereum, Heco and Binance Smart Chain and to the various LP farms available on Heco and BSC.', - ethereum: { tvl: () => ({}) }, - bsc: { - staking: staking(BSC_POOL_DAO, "0x422e3af98bc1de5a1838be31a56f75db4ad43730"), - pool2: pool2(BSC_POOL_DAO, "0xf16d5142086dbf7723b0a57b8d96979810e47448"), - tvl: () => ({}) - }, - heco: { - staking: () => ({}), - pool2: () => ({}), - tvl: () => ({}), - }, -}; diff --git a/projects/colend/index.js b/projects/colend/index.js deleted file mode 100644 index e8f8e3d6462..00000000000 --- a/projects/colend/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const { mergeExports } = require("../helper/utils"); -const methodologies = require("../helper/methodologies"); - - -module.exports = mergeExports([{ - methodology: methodologies.lendingMarket, -//Main - core: aaveExports('core', '0xC3F120f418f9541263eA3F4a5a4120eb3f28EfA1', undefined, ['0x567AF83d912C85c7a66d093e41D92676fA9076E3'], { v3: true, }), -}, { -//LstBTC - core: aaveExports('core', '0x71B2C1Dda32E4c35f02301dC611043F46CC8108f', undefined, ['0x8E43DF2503c69b090D385E36032814c73b746e3d'], { v3: true, }), -}]) diff --git a/projects/collectionxyz/index.js b/projects/collectionxyz/index.js deleted file mode 100644 index 468255ebedf..00000000000 --- a/projects/collectionxyz/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); - -const FACTORY_ADDRESS_1 = '0x03b51826a4868780db375ee27e5b0adaac5274ee'; -const FACTORY_ADDRESS_2 = '0x7a1D4c6E8edbd8a9314034356b29419e1b1B44f0'; -const START_BLOCK_1 = 16932638; -const START_BLOCK_2 = 17277832; -const EVENT_ABI = 'event NewPool (address indexed collection, address indexed poolAddress)'; -const TOPIC_HASH = '0x77948cb83ef3caff9ac13dfab1ea1f8a6875c98370287ce587f5dbc74cc5b6b0'; - -async function getPoolLogs(api, factory, startBlock) { - return await getLogs({ - api, - target: factory, - topics: [TOPIC_HASH], - eventAbi: EVENT_ABI, - onlyArgs: true, - fromBlock: startBlock, - }); -} - -async function getTotalValueLocked(api) { - const logsFactory1 = await getPoolLogs(api, FACTORY_ADDRESS_1, START_BLOCK_1); - const logsFactory2 = await getPoolLogs(api, FACTORY_ADDRESS_2, START_BLOCK_2); - const allLogs = [...logsFactory1, ...logsFactory2]; - - api.log('Pool length: ', allLogs.length); - - const tokensAndOwners = allLogs.flatMap(log => [ - [log.collection, log.poolAddress], - [nullAddress, log.poolAddress] - ]); - - return sumTokens2({ api, tokensAndOwners }); -} - -module.exports = { - ethereum: { - tvl: getTotalValueLocked, - }, -}; diff --git a/projects/colony/clyVesting.js b/projects/colony/clyVesting.js deleted file mode 100644 index f16130aee8a..00000000000 --- a/projects/colony/clyVesting.js +++ /dev/null @@ -1,143 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const ethers = require("ethers"); - -/** - * Helper class to store GroupDataSet events. - * - * The class provides a method to calculate the amount of unlocked vested tokens. - */ -class GroupDataSet { - groupId; - groupName; - maxDistributionAmount; - distributionOffset; - distributionLength; - initialRelease; - - constructor (eventArgs) { - this.groupId = eventArgs[0]; - this.groupName = eventArgs[1]; - this.maxDistributionAmount = eventArgs[2]; - this.distributionOffset = Number(eventArgs[3]); - this.distributionLength = Number(eventArgs[4]); - this.initialRelease = eventArgs[5]; - } - - // for dbg purposes - toString () { - const secondsInDay = 3600 * 24; - - return `Group ${this.groupId} (${this.groupName}): ` + - `maxDistributionAmount=${ethers.formatEther(this.maxDistributionAmount)}, ` + - `distributionOffset=${this.distributionOffset / secondsInDay} days, ` + - `distributionLength=${this.distributionLength / secondsInDay} days, ` + - `initialRelease=${ethers.formatEther(this.initialRelease) * 100}%`; - } - - - unlockedAmount (startTimestamp, currentTimestamp) { - let unlockedAmount = 0n; - - if (startTimestamp < currentTimestamp) { - const initialReleaseAmount = this.initialRelease * this.maxDistributionAmount / ethers.parseEther("1"); - unlockedAmount += initialReleaseAmount; - } - - // return only the initial release if the offset is not reached - if (currentTimestamp < startTimestamp + this.distributionOffset) { - return unlockedAmount; - } - - // return max available amount if the vesting ended - const endTimestamp = startTimestamp + this.distributionOffset + this.distributionLength; - if (currentTimestamp >= endTimestamp) { - return this.maxDistributionAmount; - } - - // calculate the amount of unlocked tokens - const timePassed = BigInt(currentTimestamp - (startTimestamp + this.distributionOffset)); - unlockedAmount += timePassed * (this.maxDistributionAmount - unlockedAmount) / BigInt(this.distributionLength); - - return unlockedAmount; - } -} - -/** - * Method to calculate the total amount of unlocked vested tokens: - * - * Collects GroupDataSet events (that were emitted only before the actual start of vesting). - * - * event GroupDataSet( - * uint groupId, // Unique identifier for the group - * string groupName, // Descriptive name of the group - * uint maxDistributionAmount, // Total number of tokens allocated for distribution to this group - * uint distributionOffset, // The offset in seconds from the start, when distribution begins - * uint distributionLength, // The total time span of the distribution, in seconds - * uint initialRelease, // The amount of tokens that are initially released as 18 dec mantissa - * ); - * - * Events for all groups reveals the total number of tokens distributed and the manner - * in which they were unlocked over time. - * - * The total amount of tokens unlocked by vesting contract can be deduced by comparing this with the - * actual balance of the contract (which contains information about the tokens already withdrawn). - */ -function clyVesting(colonyGovernanceToken, vestingContract) { - return async ({ api }) => { - - const START_BLOCK = 7669442; // 7669442 -> deployment block of the vesting contract - const END_BLOCK = 7675925; // The last block where the GroupDataSet event was emitted - - const vestingStartTimestamp = Number( - await api.call({ - abi: "function vestingStartTimestamp() external view returns (uint256)", - target: vestingContract, - }) - ); - - const currentVestingBalance = BigInt( - await api.call({ - abi: 'erc20:balanceOf', - target: colonyGovernanceToken, - params: vestingContract - }) - ); - - const eventArgs = ( - await getLogs({ - target: vestingContract, - eventAbi: "event GroupDataSet(uint256,string,uint256,uint256,uint256,uint256)", - api, - fromBlock: START_BLOCK, - toBlock: END_BLOCK, - onlyArgs: true, - }) - ); - - const groups = eventArgs.map((args) => new GroupDataSet(args)); - - // calculate total vested amount, summing maxDistributionAmount of all groups - let totalVestedAmount = 0n; - for (const group of groups) { - totalVestedAmount += group.maxDistributionAmount; - } - - // calculate total unlocked amount - let totalUnlockedAmount = 0n - for (const group of groups) { - totalUnlockedAmount += group.unlockedAmount(vestingStartTimestamp, api.timestamp); - } - - // calculate total withdrawn amount - const totalWithdrawn = totalVestedAmount - currentVestingBalance; - - // total amount of tokens unlocked by vesting contract, but not yet withdrawn - const availableToWithdraw = totalUnlockedAmount - totalWithdrawn; - - api.add(colonyGovernanceToken, availableToWithdraw); - } -} - -module.exports = { - clyVesting, -} diff --git a/projects/colony/earlyStageInvestments.js b/projects/colony/earlyStageInvestments.js deleted file mode 100644 index d30d0409e58..00000000000 --- a/projects/colony/earlyStageInvestments.js +++ /dev/null @@ -1,29 +0,0 @@ -/// Accumulated early stage USD investments in the project nests -function earlyStageInvestments(projectNestFactory) { - return async (api) => { - const totalNests = Number(await api.call({ - abi: "uint256:projectNestsLength", - target: projectNestFactory, - })) - - const nests = [] - const limit = 100 - for (let i = 0; i < totalNests; i += limit) { - const offset = i - - const n = await api.call({ - abi: "function getProjectNests(uint256 limit, uint256 offset) external view returns (address[] memory result)", - target: projectNestFactory, - params: [limit, offset] - }) - nests.push(...n) - } - const stablecoins = await api.multiCall({ abi: 'address:supportedStablecoin', calls: nests}) - await api.sumTokens({ tokensAndOwners2: [stablecoins, nests]}) - return api.getBalances() - } -} - -module.exports = { - earlyStageInvestments, -} diff --git a/projects/colony/index.js b/projects/colony/index.js deleted file mode 100644 index 47b576910f6..00000000000 --- a/projects/colony/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const sdk = require("@defillama/sdk") - -// const { clyVesting } = require("./clyVesting") -const { stakingRewards } = require("./stakingRewards") -const { earlyStageInvestments } = require("./earlyStageInvestments") -const { staking } = require("../helper/staking") -const { getUniTVL } = require("../helper/unknownTokens") - -const colonyGovernanceToken = "0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6"; - -const stakingV1Contract = "0x5B0d74C78F2588B3C5C49857EdB856cC731dc557"; -const stakingV2Contract = "0x7CcDa6E26dCeD1Ba275c67CD20235790ed615A8D"; -const stakingV3Contract = "0x62685d3EAacE96D6145D35f3B7540d35f482DE5b"; - -const vestingContract = "0xEFAc81f709d314604a7DaEe9ca234dA978c2Be20"; - -const projectNestFactory = "0x9E1Ac58559307A7ce70104810B7d6E43E74bFA1e"; -const colonyDexFactory = "0x814EBF333BDaF1D2d364c22a1e2400a812f1F850"; - -async function _staking(api) { - const bals = await api.multiCall({ abi: 'uint256:totalStaked', calls: [stakingV1Contract,] }) - const bals1 = await api.multiCall({ abi: 'uint256:totalStake', calls: [stakingV2Contract, stakingV3Contract] }) - api.add(colonyGovernanceToken, bals.concat(bals1)) -} - -function _tvl() { - const stakingRewardsTVL = stakingRewards(colonyGovernanceToken, stakingV3Contract) - const earlyStageInvestmentsTVL = earlyStageInvestments(projectNestFactory) - - const colonyDexTVL = getUniTVL({ - factory: colonyDexFactory, - useDefaultCoreAssets: true - }) - - return sdk.util.sumChainTvls([ - stakingRewardsTVL, - earlyStageInvestmentsTVL, - colonyDexTVL - ]) -} - -module.exports = { - methodology: - "Staking is calculated based on CLY tokens locked on Colony staking contracts. " + - "Vesting is calculated as CLY tokens in the vesting contract. " + - "TVL also includes rewards in various tokens distributed in the staking contract, " + - "actual fundraised stablecoins in projects (Nests), and liquidity from Colony Dex.", - avax: { - start: '2021-12-01', // CLY Token deployment - tvl: _tvl(), - staking: _staking, - // vesting: clyVesting(colonyGovernanceToken, vestingContract), - vesting: staking(vestingContract, colonyGovernanceToken), - }, - hallmarks: [ - [1651241728, "Staking V2 Launch"], - [1711370069, "Staking V3 Launch"], - [1715688000, "EarlyStage Launch"], - [1719792000, "Liquid Vesting DEX Launch"] - ], -}; diff --git a/projects/colony/stakingRewards.js b/projects/colony/stakingRewards.js deleted file mode 100644 index cb6501437bf..00000000000 --- a/projects/colony/stakingRewards.js +++ /dev/null @@ -1,52 +0,0 @@ -/// Rewards which are distributed to stakers in the staking contract. -function stakingRewards(colonyGovernanceToken, stakingV3Contract) { - return async (api) => { - const rewardTokensListLength = Number( - await api.call({ - abi: "uint256:rewardTokensListLenght", - target: stakingV3Contract, - }) - ); - - const customRewardTokensListLength = Number( - await api.call({ - abi: "uint256:customRewardTokensListLenght", - target: stakingV3Contract, - }) - ); - - const rewardTokens = (await api.multiCall({ - abi: "function getRewardTokensListIndex(uint256 index) external view returns (address, uint8)", - target: stakingV3Contract, - calls: [...Array(rewardTokensListLength).keys()].map(i => ({ - params: i - })) - })).map(r => ({ address: r[0], category: r[1]})) - - const customRewardTokens = (await api.multiCall({ - abi: "function getCustomRewardTokensListIndex(uint256 index) external view returns (address, uint8)", - target: stakingV3Contract, - calls: [...Array(customRewardTokensListLength).keys()].map(i => ({ - params: i - })) - })).map(r => ({ address: r[0], category: r[1]})) - - const totalStake = BigInt(await api.call({ - abi: 'uint256:totalStake', - target: stakingV3Contract, - })) - - const balanceOf = BigInt(await api.call({ - abi: 'erc20:balanceOf', - target: colonyGovernanceToken, - params: stakingV3Contract - })) - - api.add(colonyGovernanceToken, balanceOf - totalStake) - return api.sumTokens({ owner: stakingV3Contract, tokens: [...rewardTokens, ...customRewardTokens].map(i => i.address), blacklistedTokens: [colonyGovernanceToken]}) - } -} - -module.exports = { - stakingRewards, -} diff --git a/projects/colorpool/index.js b/projects/colorpool/index.js deleted file mode 100644 index 79e95525364..00000000000 --- a/projects/colorpool/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require("../helper/http") - -module.exports = { - misrepresentedTokens: true, - chromia: { - tvl: async (api) => { - const {data} = await get('https://api-dex.colorpool.xyz/pool/list?page=1&limit=2500&sortField=tvl&sortOrder=desc') - let total = 0 - data.forEach(i => total += Number(i.tvl)) - api.addUSDValue(total) - } - } -} \ No newline at end of file diff --git a/projects/colors/index.js b/projects/colors/index.js deleted file mode 100644 index ecfe3c9d31f..00000000000 --- a/projects/colors/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - -const standardPoolInfoAbi = 'function getPoolInfo(uint256 _pid) external view returns (address lpToken, uint256 _allocPoint)' - -module.exports = masterchefExports({ - chain: 'sonic', - masterchef: '0x392a46162b8dd7E6F1a34E4829043619B1f5a9f3', - nativeToken: '0xd1F4414c66E5e046635A179143820f4CBf0D3D3b', - poolInfoABI: standardPoolInfoAbi -}) \ No newline at end of file diff --git a/projects/colt/index.js b/projects/colt/index.js deleted file mode 100644 index 45f6036b39a..00000000000 --- a/projects/colt/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const config = { - saga: { - d: { - address: '0xB76144F87DF95816e8c55C240F874C554B4553C3', - collateralVault: "0x70924f77509dC1EB9384077B12Ca049AA2168d6f", - }, - } -} - -async function getCollateralsTvl(api) { - const networkConfig = config[api.chain] - if (!networkConfig) return - for (const [, tokenConfig] of Object.entries(networkConfig)) { - const collaterals = await api.call({ abi: 'address[]:listCollateral', target: tokenConfig.collateralVault }) - await api.sumTokens({ owner: tokenConfig.collateralVault, tokens: collaterals }) - } -} - -module.exports = { - methodology: 'Includes TVL for issued stablecoins (e.g. $D).', - saga: { - tvl: getCollateralsTvl - }, -}; \ No newline at end of file diff --git a/projects/comb/index.js b/projects/comb/index.js deleted file mode 100644 index 7c21e749ecc..00000000000 --- a/projects/comb/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const { get } = require('../helper/http') -const { staking } = require('../helper/staking'); -const sdk = require('@defillama/sdk') -const { unwrapLPsAuto, nullAddress } = require('../helper/unwrapLPs') - -const vaults = [ - '0xfcba43906259168ea610905e719e86f5b099391b', - '0x6b9c0b05744bbe6e3d8df8bea31a029a12f7c0eb', - '0x77ce0b0e9e629474c69a5d8d5fd9c3e6113dd058', -] - -async function tvl(api) { - const balances = {} - let pools = await get('https://comb-breakdown.herokuapp.com/pools'); - const prices = {} - pools.forEach(i => { - if (i.asset) - prices['fantom:'+i.asset.toLowerCase()] = i.lpPrice/1e18 - }) - - - const token = await api.multiCall({ calls: vaults, abi: 'address:token', }) - const supply = await api.multiCall({ calls: vaults, abi: 'uint256:totalSupply', }) - const price = await api.multiCall({ calls: vaults, abi: 'uint256:getPricePerFullShare', }) - - - const masterchef = '0x6e547e6Ab873146eA1E4A12499b0e98Bc18Ea222' - let strategies = await api.fetchList({ - target: masterchef, - itemAbi: 'function strategies(uint256) view returns (address)', - lengthAbi: 'uint256:poolLength' - }) - strategies = strategies.filter(i => i !== nullAddress) - const token2 = await api.multiCall({ calls: strategies, abi: 'address:want', }) - const supply2 = await api.multiCall({ calls: strategies, abi: 'uint256:balanceOf', }) - - token.map((v, i) => { - sdk.util.sumSingleBalance(balances, v.toLowerCase(), supply[i] * price[i] / 1e18, api.chain) - }) - token2.map((v, i) => { - sdk.util.sumSingleBalance(balances, v.toLowerCase(), supply2[i], api.chain) - }) - - await unwrapLPsAuto({ api, balances }) - Object.entries(balances).forEach(([token, bal]) => { - if (prices[token]) { - sdk.util.sumSingleBalance(balances,'tether',prices[token] * bal) - delete balances[token] - } - }) - return balances -} - -module.exports = { - timetravel: false, - methodology: 'Fetches pools (masterchef), vaults, and zcomb data from external APIs and sums up the total locked values (TVL). The TVLs are calculated by taking the lp balances and its price of the strategies and adding them up. The zcomb tvl is calculated by taking the total locked comb and multiplying it by its market value.', - fantom: { - tvl, - staking: staking('0xdecce40d4176abefb4c709b2220c8396fe710cf7', '0xae45a827625116d6c0c40b5d7359ecf68f8e9afd'), - } -} diff --git a/projects/comet-finance/index.js b/projects/comet-finance/index.js deleted file mode 100644 index 13bb12abcba..00000000000 --- a/projects/comet-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const token = "0xbeBB20cD6364998b8cAfc3d6B86f1ca6363fF910"; -const share = "0xBAFDCFC3787BF7833BE6Be8E2D9e822B610255C9"; -const rewardPool = "0x9C8C8EB95749dEE9E8cC68f3cAaa658Ea6D1E4bd"; -const masonry = "0xA68a020fd0B68A0e4E3F4a97dD44EE3aa0280E7f"; -const lps = [ - "0x06378DFab4d97ba1f67EbE68c94893e7fDDf9169", - "0x6F5CA58FBd1B2f335d1B9489216490fBEDcAda7e" -] - -module.exports = { - ...tombTvl(token, share, rewardPool, masonry, lps, "fantom", undefined, false, lps[1]) -} \ No newline at end of file diff --git a/projects/cometa/index.js b/projects/cometa/index.js deleted file mode 100644 index 4595371d4ba..00000000000 --- a/projects/cometa/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { toUSDTBalances } = require('../helper/balances'); -const { get } = require('../helper/http') - -async function tvl() { - const response = ( - await get( - 'https://api.cometa.farm/stats/tvl' - ) - ) - - return toUSDTBalances(response.total); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - algorand: { - tvl - } -} - diff --git a/projects/comfymoney/index.js b/projects/comfymoney/index.js deleted file mode 100644 index 641d375a9f1..00000000000 --- a/projects/comfymoney/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const comfyTokenAddress = "0x702f78E81Cf3DfaE89648b5a9e2e1aa8db1De546"; -const cshareTokenAddress = "0x3CB98cacd44Ee77eb35E99EB74Ace91bF550c964"; -const comfyRewardPoolAddress = "0x893F07c9E10932349b01Db7A3833Fe756C2D59A8"; -const cshareRewardPoolAddress = "0x53efc025d19270b899eBf89DD89a1F58CE1CD66f"; -const zenDenAddress = "0x108426718E67da46e09E841bC4e8430A824BDaFc"; - -const comfyWoneLp = "0xF2d9E493a280545699E3C07aEe22eaE9EF24DDb7"; -const cshareWoneLp = "0x8fd44A4fB89e26A97B0eDf99535236D415D03E50"; - -const allLpPools = [ - { poolAddress: comfyRewardPoolAddress, tokenAddress: comfyWoneLp }, - { poolAddress: cshareRewardPoolAddress, tokenAddress: cshareWoneLp }, - { poolAddress: cshareRewardPoolAddress, tokenAddress: comfyWoneLp }, -]; - -async function calcPool2(api) { - return sumTokens2({ api, tokensAndOwners: allLpPools.map(i => ([i.tokenAddress, i.poolAddress, ])), resolveLP: true, }) -} - -async function onePool2(api) { - return calcPool2(api); -} - -module.exports = { - methodology: - "Pool2 deposits consist of COMFY/ONE and CSHARE/ONE LP tokens deposited in the MasterChef based contracts, whilst the staking TVL consists of the CSHARE tokens locked within the Zen Den contract(0x108426718E67da46e09E841bC4e8430A824BDaFc).", - harmony: { - tvl: async () => ({}), - pool2: onePool2, - staking: staking(zenDenAddress, cshareTokenAddress), - }, -}; diff --git a/projects/comfyswap/index.js b/projects/comfyswap/index.js deleted file mode 100644 index 462bcdea4bb..00000000000 --- a/projects/comfyswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - shibarium: { tvl: getUniTVL({ factory: '0x09aBAdE821e55d7944965688eA6699a9830BAE45', useDefaultCoreAssets: true, }), }, - op_bnb: { tvl: getUniTVL({ factory: '0x9946468d90DE3fD885b7FEE9BF73a956Dc363349', useDefaultCoreAssets: true, }), }, -} diff --git a/projects/commodo/index.js b/projects/commodo/index.js deleted file mode 100644 index f8cc489f893..00000000000 --- a/projects/commodo/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { get } = require('../helper/http') -const { PromisePool } = require('@supercharge/promise-pool') -const sdk = require('@defillama/sdk') - -let data - -async function getData() { - if (!data) data = _getData() - return data - - async function _getData() { - const { assets } = await get('https://rest.comdex.one/comdex/asset/v1beta1/assets') - const assetMap = assets.reduce((a, i) => { - a[i.id] = i.denom - return a - }, {}) - const { pools } = await get('https://rest.comdex.one/comdex/lend/v1beta1/pools') - const balances = { - tvl: {}, - borrowed: {}, - } - - const calls = pools.map(({ pool_id, asset_data }) => { - return asset_data.map(({ asset_id }) => ([asset_id, pool_id])) - }).flat() - - await PromisePool - .withConcurrency(10) - .for(calls) - .process(addPool) - - return balances - - async function addPool([assetId, poolId]) { - const { PoolAssetLBMapping: { total_borrowed, total_lend } } = await get(`https://rest.comdex.one/comdex/lend/v1beta1/pool_asset_lb_mapping/${assetId}/${poolId}`) - const token = assetMap[assetId] - sdk.util.sumSingleBalance(balances.tvl, token, total_lend - total_borrowed, 'comdex') - sdk.util.sumSingleBalance(balances.borrowed, token, total_borrowed, 'comdex') - } - } -} - - -module.exports = { - deadFrom: "2024-09-17", - timetravel: false, - comdex: { - tvl: async () => (await getData()).tvl, - borrowed: async () => (await getData()).borrowed, - } -} diff --git a/projects/common/index.js b/projects/common/index.js deleted file mode 100644 index 710a1f14c94..00000000000 --- a/projects/common/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const CONTRACTS = [ - { - chain: 'arbitrum', - address: '0x5A0dea46A96a5b578c9cf1730f461eD0bC9C32c6', - }, - { - chain: 'aleph_zero', - address: '0x5A0dea46A96a5b578c9cf1730f461eD0bC9C32c6', - tokens: [ - ADDRESSES.null, - ADDRESSES.aleph_zero.WETH, - ADDRESSES.aleph_zero.USDC, - ADDRESSES.aleph_zero.USDT - ] - } -] - -function calcTvl(meta) { - return function (api) { - if (!meta.tokens) { - return sumTokens2({ owner: meta.address, fetchCoValentTokens: true, api }) - } - return sumTokens2({ owner: meta.address, tokens: meta.tokens, api }) - } -} - - -module.exports = CONTRACTS.reduce((acc, c) => { - acc[c.chain] = { - tvl: calcTvl(c), - } - return acc -}, {}); diff --git a/projects/commonwealth/index.js b/projects/commonwealth/index.js deleted file mode 100644 index df1f9ba0634..00000000000 --- a/projects/commonwealth/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { staking } = require('../helper/staking'); - -const TREASURY = [ - '0xdE70B8BC5215BdF03f839BB8cD0F639D4E3E2881', - '0xA205fD6A798A9Ba8b107A00b8A6a5Af742d6aCb5', - '0x990eCdf73704f9114Ee28710D171132b5Cfdc6f0', - '0xa653879692D4D0e6b6E0847ceDd58eAD2F1CC136' -] - - -const CONTRACTS = [ - '0xf4aa59f5192856f41ae19caab4929ccd3a265e70', // staked - '0x7519461fbd96abb539c770d57f38c2e91f8262aa', - '0xd7e31990883250e53314b15ee555345f04d011e8', - '0x87412c03979cc19c60071f5f98313a7cbe9f6d65', // rewards - -]; - -const WLTH = '0x99b2B1A2aDB02B38222ADcD057783D7e5D1FCC7D'; - -module.exports = { - base: { - tvl: () => ({}), - staking: staking(CONTRACTS, WLTH) - } -}; diff --git a/projects/complifi/abi.json b/projects/complifi/abi.json deleted file mode 100644 index 89bed9c4bff..00000000000 --- a/projects/complifi/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "getAllVaults": "address[]:getAllVaults", - "getVaultCollateral": "address:collateralToken", - "getAllPools": "address[]:getAllPools", - "getConfig": "function getConfig() view returns (tuple(uint256 minExitAmount, uint256 protocolFee, address feeWallet, address collateralToken, address collateralOracle, address collateralOracleIterator, address volatilityEvolution, address underlyingLiquidityValuer, address exposure, address poolShare, address traderPortfolio, uint8 collateralDecimals))" -} \ No newline at end of file diff --git a/projects/complifi/index.js b/projects/complifi/index.js deleted file mode 100644 index 20307a14e6a..00000000000 --- a/projects/complifi/index.js +++ /dev/null @@ -1,122 +0,0 @@ - -const sdk = require('@defillama/sdk'); -const abi = require('./abi.json'); - -const chainParams = { - ethereum: { - START_BLOCK: 12093712, // Mar-23-2021 07:22:04 AM +UTC - VAULT_FACTORY_PROXY: '0x3269DeB913363eE58E221808661CfDDa9d898127', - }, - polygon:{ - START_BLOCK: 14908452, - VAULT_FACTORY_PROXY: '0xE970b0B1a2789e3708eC7DfDE88FCDbA5dfF246a', - }, - polygon_v2:{ - START_BLOCK: 27563723, - POOL_FACTORY_PROXY: '0x501FE5583f2ebC9f62fe9CD71637D746c7943686', - } -} - -function getChainTvlV2(chain){ - return async (timestamp, block, chainBlocks)=>chainTvlV2(chain, chainBlocks[chain], chain=='ethereum'?addr=>addr:addr=>`polygon:${addr}`) -} - -async function chainTvlV2(chain, block, transformAddr) { - let balances = {}; - - let pools = await getPools(block, chain); - - let poolCollaterals = (await sdk.api.abi.multiCall({ - block, - calls: pools.map((pool) => ({ - target: pool, - })), - chain, - abi: abi['getConfig'], - })).output.map(config => config['output']['collateralToken']) - - let poolBalances = await sdk.api.abi.multiCall({ - block, - calls: pools.map((pool, index) => ({ - target: poolCollaterals[index], - params: pool, - })), - chain, - abi: 'erc20:balanceOf', - }); - - sdk.util.sumMultiBalanceOf(balances, poolBalances, true, transformAddr); - - return balances; -} - -async function getPools(block, chain) { - let chainParamsItem = chainParams[chain + '_v2']; - if (block < chainParamsItem.START_BLOCK) { - return []; - } - - return (await sdk.api.abi.call({ - block, - chain, - target: chainParamsItem.POOL_FACTORY_PROXY, - params: [], - abi: abi['getAllPools'], - })).output; -} - -function getChainTvl(chain){ - return async (timestamp, block, chainBlocks)=>chainTvl(chain, chainBlocks[chain], chain=='ethereum'?addr=>addr:addr=>`polygon:${addr}`) -} - -async function chainTvl(chain, block, transformAddr) { - let balances = {}; - - let vaults = await getVaults(block, chain); - - let vaultCollaterals = (await sdk.api.abi.multiCall({ - block, - calls: vaults.map((vault) => ({ - target: vault, - })), - chain, - abi: abi['getVaultCollateral'], - })).output; - - let vaultBalances = await sdk.api.abi.multiCall({ - block, - calls: vaults.map((vault,index) => ({ - target: vaultCollaterals[index].output, - params: vault, - })), - chain, - abi: 'erc20:balanceOf', - }); - - sdk.util.sumMultiBalanceOf(balances, vaultBalances, true, transformAddr); - - return balances; -} - -async function getVaults(block, chain) { - if (block < chainParams[chain].START_BLOCK) { - return []; - } - - return (await sdk.api.abi.call({ - block, - chain, - target: chainParams[chain].VAULT_FACTORY_PROXY, - params: [], - abi: abi['getAllVaults'], - })).output; -} - -module.exports = { - ethereum:{ - tvl: getChainTvl('ethereum') - }, - polygon: { - tvl: sdk.util.sumChainTvls([ getChainTvl('polygon'), getChainTvlV2('polygon')]), - } -} diff --git a/projects/complus/index.js b/projects/complus/index.js deleted file mode 100644 index 85c0aa6cad6..00000000000 --- a/projects/complus/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x973c934137dd687eca67bdd1c5a8b74286964ac6', }), - }, - heco: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xc32cccf795940ca8491cd4f31161509db28ab719', }), - }, - bsc: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xdf97982bf70be91df4acd3d511c551f06a0d19ec', }), - }, - avax:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x5c02e78a3969d0e64aa2cfa765acc1d671914ac0', }), - }, -} \ No newline at end of file diff --git a/projects/component/index.js b/projects/component/index.js deleted file mode 100644 index 672a302dd89..00000000000 --- a/projects/component/index.js +++ /dev/null @@ -1,170 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); -const {staking} = require("../helper/staking"); - -const cmp = "0x9f20Ed5f919DC1C1695042542C13aDCFc100dcab"; -const ethStakingPool = "0x79876b5062160C107e02826371dD33c047CCF2de"; - -const translateToken = { - '0xFe7ed09C4956f7cdb54eC4ffCB9818Db2D7025b8': "0x1456688345527be1f37e9e627da0837d6f08c925", - '0xFc8B2690F66B46fEC8B3ceeb95fF4Ac35a0054BC': ADDRESSES.ethereum.DAI, - '0xDACD011A71f8c9619642bf482f1D4CeB338cfFCf': "0x1456688345527be1f37e9e627da0837d6f08c925", - '0x3129aC70c738D398d1D74c87EAB9483FD56D16f8': "0x1456688345527be1f37e9e627da0837d6f08c925", - [ADDRESSES.fantom.DAI]: ADDRESSES.ethereum.DAI, - [ADDRESSES.fantom.MIM]: "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3" -} - -const ethPools = [ - //POOLS - { - token: "0x49519631B404E06ca79C9C7b0dC91648D86F08db", - underlying: [ - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - "0x1456688345527bE1f37E9e627DA0837D6f08C925" - ] - }, - { - token: "0x6477960dd932d29518D7e8087d5Ea3D11E606068", - underlying: [ - "0x1456688345527bE1f37E9e627DA0837D6f08C925", - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.sUSD - ] - } -]; - -const xDaiPools = [ - //POOLS - { - token: "0x53De001bbfAe8cEcBbD6245817512F8DBd8EEF18", - underlying: [ - ADDRESSES.xdai.USDC, - "0xFe7ed09C4956f7cdb54eC4ffCB9818Db2D7025b8", - ADDRESSES.xdai.WXDAI - ] - }, - { - token: "0xF82fc0ecBf3ff8e253a262447335d3d8A72CD028", - underlying: [ - "0xFc8B2690F66B46fEC8B3ceeb95fF4Ac35a0054BC", - ADDRESSES.xdai.WXDAI - ] - }, - { - token: "0xfbbd0F67cEbCA3252717E66c1Ed1E97ad8B06377", - underlying: [ - ADDRESSES.xdai.USDC, - "0xFc8B2690F66B46fEC8B3ceeb95fF4Ac35a0054BC", - "0xD10Cc63531a514BBa7789682E487Add1f15A51E2", - ADDRESSES.xdai.WXDAI - ] - } -] - -const bscPools = [ - //POOLS - { - token: "0xcf76a0ceDf50DA184FDef08A9d04E6829D7FefDF", - underlying: [ - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.BUSD, - "0xDACD011A71f8c9619642bf482f1D4CeB338cfFCf" - ] - }, - { - token: "0x3Bb6Bf6EcBC71f8f78D1Eec9c91de4f8Fd5C891c", - underlying: [ - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.USDC - ] - } -] - -const ftmPools = [ - //POOLS - { - token: "0xdDCA02Ddd94f97eeFE07fCcde780fD2FbDc85b23", - underlying: [ - ADDRESSES.fantom.DAI, - ADDRESSES.fantom.USDC, - "0x3129aC70c738D398d1D74c87EAB9483FD56D16f8" - ] - }, - { - token: "0x238139bF999f389063444e397cDfadF780ec57DB", - underlying: [ - "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355", - ADDRESSES.fantom.MIM, - "0x3129aC70c738D398d1D74c87EAB9483FD56D16f8" - ] - } -] - -async function getTvlFromPools(balances, pools, block, chain) { - for (let i in pools) { - let underlyingBalances = (await sdk.api.abi.multiCall({ - calls: pools[i].underlying.map(p => ({ - target: p, - params: pools[i].token - })), - abi: "erc20:balanceOf", - block, - chain - })).output; - for (let j in underlyingBalances) { - if (underlyingBalances[j].input.target === "0xD10Cc63531a514BBa7789682E487Add1f15A51E2") { - let bal = new BigNumber(underlyingBalances[j].output).div(10 ** 12).toFixed(0); - sdk.util.sumSingleBalance(balances, "xdai:" + ADDRESSES.xdai.USDC, bal); - } - else if (underlyingBalances[j].input.target in translateToken) { - sdk.util.sumSingleBalance(balances, translateToken[underlyingBalances[j].input.target], underlyingBalances[j].output); - } else { - sdk.util.sumSingleBalance(balances, `${chain}:${underlyingBalances[j].input.target}`, underlyingBalances[j].output); - } - } - } -} - -async function tvl(timestamp, block) { - let balances = {}; - await getTvlFromPools(balances, ethPools, block, "ethereum"); - return balances; -} - -async function xDaiTvl(timestamp, block, chainBlocks) { - let balances = {}; - await getTvlFromPools(balances, xDaiPools, chainBlocks.xdai, "xdai"); - return balances; -} - -async function bscTvl(timestamp, block, chainBlocks) { - let balances = {}; - await getTvlFromPools(balances, bscPools, chainBlocks.bsc, "bsc"); - return balances; -} - -async function ftmTvl(timestamp, block, chainBlocks) { - let balances = {}; - await getTvlFromPools(balances, ftmPools, chainBlocks.fantom, "fantom"); - return balances; -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl, - staking: staking(ethStakingPool, cmp) - }, - xdai: { - tvl: xDaiTvl - }, - bsc: { - tvl: bscTvl - }, - // fantom: { - // tvl: ftmTvl - // }, -} \ No newline at end of file diff --git a/projects/componentswap/index.js b/projects/componentswap/index.js deleted file mode 100644 index f8b1041e794..00000000000 --- a/projects/componentswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require('../helper/unwrapLPs'); - -const TOKEN_CONTRACTS = [ - ADDRESSES.pulse.DAI, - ADDRESSES.pulse.USDC, - ADDRESSES.pulse.USDT, -] - -module.exports = { - pulse: { - tvl: sumTokensExport({ owner: '0x35C49cB4fa16C557968cF43e237674b38bf05327', tokens: TOKEN_CONTRACTS}) - }, -}; \ No newline at end of file diff --git a/projects/composable/index.js b/projects/composable/index.js deleted file mode 100644 index 18d8506b050..00000000000 --- a/projects/composable/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const networks = { - 'ethereum': ['0xef4439f0fae7db0b5ce88c155fc6af50f1b38728', [ - ADDRESSES.ethereum.USDC, //usdc - ADDRESSES.ethereum.WETH, // eth - '0xca3d75ac011bf5ad07a98d02f18225f9bd9a6bdf', // tricrypto - ]], - 'arbitrum': ['0xEba8C2Bf0d1C9413543188fc42D7323690AED051', [ - ADDRESSES.arbitrum.USDC, //usdc - ADDRESSES.arbitrum.WETH //eth - ]], - 'polygon': ['0xcd8e7322dc2659b1ec447e5d52fdd9c67e8c3c01', [ - ADDRESSES.polygon.USDC, //usdc - ADDRESSES.polygon.WETH_1 //eth - ]] -} - -const abi = { - token: "address:token", - totalToken: "uint256:totalToken", -} - -const rugPools = ['0x4a03ea61e543ec7141a3f90128b0c0c9514f8737', '0xf12da8470e2643ccb39a157e8577d9aa586a488f', '0x1941441d31809e9E1828Da0cE6d44175F657E215'] - -function chainTvl(chain) { - return async (api) => { - const [owner, tokens] = networks[chain] - await api.sumTokens({ owner, tokens }) - if (chain === "ethereum") { - const tokens = await api.multiCall({ abi: abi.token, calls: rugPools }) - const balances = await api.multiCall({ abi: abi.totalToken, calls: rugPools }) - api.add(tokens, balances) - } - } -} - -Object.keys(networks).forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } -}) \ No newline at end of file diff --git a/projects/compound-blue/index.js b/projects/compound-blue/index.js deleted file mode 100644 index dba305e4996..00000000000 --- a/projects/compound-blue/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const sdk = require('@defillama/sdk'); - -// get these vaults only for Compound Blue -const vaults = [ - '0x781FB7F6d845E3bE129289833b04d43Aa8558c42', - '0xF5C81d25ee174d83f1FD202cA94AE6070d073cCF', - '0xfD06859A671C21497a2EB8C5E3fEA48De924D6c8', - '0x3F33F9f7e2D7cfBCBDf8ea8b870a6E3d449664c2', -] - -// get these markets only for Compound Blue -const markets = [ - '0xa5b7ae7654d5041c28cb621ee93397394c7aee6c6e16c7e0fd030128d87ee1a3', - '0x1cfe584af3db05c7f39d60e458a87a8b2f6b5d8c6125631984ec489f1d13553b', - '0x01550b8779f4ca978fc16591537f3852c02c3491f597db93d9bb299dcbf5ddbe', - '0x2476bb905e3d94acd7b402b3d70d411eeb6ace82afd3007da69a0d5904dfc998', - '0xb8ae474af3b91c8143303723618b31683b52e9c86566aa54c06f0bc27906bcae', - '0x1947267c49c3629c5ed59c88c411e8cf28c4d2afdb5da046dc8e3846a4761794', - '0x7506b33817b57f686e37b87b5d4c5c93fdef4cffd21bbf9291f18b2f29ab0550', - '0x41e537c46cc0e2f82aa69107cd72573f585602d8c33c9b440e08eaba5e8fded1', - '0xa932e0d8a9bf52d45b8feac2584c7738c12cf63ba6dff0e8f199e289fb5ca9bb', - '0xd1485762dd5256b99530b6b07ab9d20c8d31b605dd5f27ad0c6dec2a18179ac6', - '0xa8c2e5b31d1f3fb6c000bd49355d091f71e7c866fcb74a1cb2562ef67157bc2a', - '0x267f344f5af0d85e95f253a2f250985a9fb9fca34a3342299e20c83b6906fc80', - '0x9eacb622c6ef9c2f0fa5f1fda58a8702eb8132d8f49783f6eea6acc3a398e741', - '0x8513df298cab92cafba1bae394420b7150aa40a5fac649c7168404bd5174a54c', -] - -const morphoBlue = '0x1bF0c2541F820E775182832f06c0B7Fc27A25f67' -const morphoBlueAbis = { - market: 'function market(bytes32) view returns (uint128 totalSupplyAssets, uint128 totalSupplyShares, uint128 totalBorrowAssets, uint128 totalBorrowShares, uint128 lastUpdate, uint128 fee)', - idToMarketParams: 'function idToMarketParams(bytes32) view returns (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv)', -} - -async function getBorrowed(api) { - const balances = {} - - const idToMarketParams = await api.multiCall({ abi: morphoBlueAbis.idToMarketParams, calls: markets.map(marketId=> { - return { - target: morphoBlue, - params: [marketId], - } - }) }) - const marketData = await api.multiCall({ abi: morphoBlueAbis.market, calls: markets.map(marketId=> { - return { - target: morphoBlue, - params: [marketId], - } - }) }) - - const loanTokens = idToMarketParams.map(params => params.loanToken) - for (let i = 0; i < loanTokens.length; i++) { - const token = String(loanTokens[i]).toLowerCase() - if (!balances[token]) { - balances[token] = BigInt(0) - } - balances[token] += BigInt(marketData[i].totalBorrowAssets) - } - - return balances -} - -async function tvl(api) { - const assets = await api.multiCall({ abi: 'address:asset', calls: vaults }) - const totalAssets = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - - const balances = {} - for (let i = 0; i < assets.length; i++) { - const token = String(assets[i]).toLowerCase() - if (!balances[token]) { - balances[token] = BigInt(0) - } - balances[token] += BigInt(totalAssets[i]) - } - - const totalBorrowed = await getBorrowed(api) - - for (const [token, balance] of Object.entries(balances)) { - const tvl = balance - totalBorrowed[token] - api.add(token, tvl) - } -} - -async function borrowed(api) { - const totalBorrowed = await getBorrowed(api) - api.add(Object.keys(totalBorrowed), Object.values(totalBorrowed)) -} - -module.exports = { - // because all assets are deposited into Morpho Blue - doublecounted: true, - methodology: 'Count total assets are deposited in Morpho Blue vaults.', - start: 1741219200, // 2025-03-06 - polygon: { - tvl, - borrowed, - }, -}; diff --git a/projects/compound-onchain/abi.json b/projects/compound-onchain/abi.json deleted file mode 100644 index 5181f2371dc..00000000000 --- a/projects/compound-onchain/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "markets": "function markets(address) view returns (bool isSupported, uint256 blockNumber, address interestRateModel, uint256 totalSupply, uint256 supplyRateMantissa, uint256 supplyIndex, uint256 totalBorrows, uint256 borrowRateMantissa, uint256 borrowIndex)", - "totalBorrows": "uint256:totalBorrows", - "borrowRatePerBlock": "uint256:borrowRatePerBlock", - "supplyRatePerBlock": "uint256:supplyRatePerBlock", - "underlying": "address:underlying", - "getCash": "uint256:getCash", - "getAllMarkets": "address[]:getAllMarkets" -} \ No newline at end of file diff --git a/projects/compound-onchain/index.js b/projects/compound-onchain/index.js deleted file mode 100644 index 9f4291aecaf..00000000000 --- a/projects/compound-onchain/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { lendingMarket } = require('../helper/methodologies'); -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - hallmarks: [ - // [1632873600, "Comptroller vulnerability exploit"], - [1592226000, "COMP distribution begins"] - ], - ethereum: compoundExports2({ comptroller: '0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B', cether: '0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5' }), - methodology: `${lendingMarket}. TVL is calculated by getting the market addresses from comptroller and calling the getCash() on-chain method to get the amount of tokens locked in each of these addresses, then we get the price of each token from coingecko.`, -}; diff --git a/projects/compound-v1/index.js b/projects/compound-v1/index.js deleted file mode 100644 index dfbe6c48b17..00000000000 --- a/projects/compound-v1/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const v1abi = require('./v1Abi.json'); - -const v1Contract = '0x3FDA67f7583380E67ef93072294a7fAc882FD7E7' -async function tvl(api) { - const tokens = await api.fetchList({ lengthAbi: v1abi.getCollateralMarketsLength, itemAbi: v1abi.collateralMarkets, target: v1Contract }) - return api.sumTokens({ owner: v1Contract, tokens }) -} - -async function borrowed(api) { - const tokens = await api.fetchList({ lengthAbi: v1abi.getCollateralMarketsLength, itemAbi: v1abi.collateralMarkets, target: v1Contract }) - const markets = await api.multiCall({ abi: v1abi.markets, calls: tokens, target: v1Contract }) - const bals = markets.map(m => m.totalBorrows) - api.add(tokens, bals) -} - -module.exports = { - ethereum: { - tvl, - borrowed - }, -}; diff --git a/projects/compound-v1/v1Abi.json b/projects/compound-v1/v1Abi.json deleted file mode 100644 index 3147c0f0802..00000000000 --- a/projects/compound-v1/v1Abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getCollateralMarketsLength": "uint256:getCollateralMarketsLength", - "markets": "function markets(address) view returns (bool isSupported, uint256 blockNumber, address interestRateModel, uint256 totalSupply, uint256 supplyRateMantissa, uint256 supplyIndex, uint256 totalBorrows, uint256 borrowRateMantissa, uint256 borrowIndex)", - "collateralMarkets": "function collateralMarkets(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/compound-v3/index.js b/projects/compound-v3/index.js deleted file mode 100644 index f96b1fc2b65..00000000000 --- a/projects/compound-v3/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { compoundV3Exports } = require('../helper/compoundV3') - -module.exports = compoundV3Exports({ - ethereum: { - markets: [ - '0xc3d688B66703497DAA19211EEdff47f25384cdc3', // USDC Market - '0xa17581a9e3356d9a858b789d68b4d866e593ae94', // ETH Market - '0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840', // USDT Market - '0x3D0bb1ccaB520A66e607822fC55BC921738fAFE3', // wstETH Market - '0x5D409e56D886231aDAf00c8775665AD0f9897b56', // USDS Market - ], - }, - arbitrum: { - markets: [ - '0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA', // USDC.e Market - '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', // USDC Market - '0x6f7D514bbD4aFf3BcD1140B7344b32f063dEe486', // WETH Market - '0xd98Be00b5D27fc98112BdE293e487f8D4cA57d07', // USDT Market - ], - }, - polygon: { - markets: [ - '0xF25212E676D1F7F89Cd72fFEe66158f541246445', // USDC.e Market - '0xaeB318360f27748Acb200CE616E389A6C9409a07', // USDT Market - ], - }, - base: { - markets: [ - '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', // USDbC Market - '0x46e6b214b524310239732D51387075E0e70970bf', // ETH Market - '0xb125E6687d4313864e53df431d5425969c15Eb2F', // USDC Market - '0x784efeB622244d2348d4F2522f8860B96fbEcE89', // AERO Market - ], - }, - scroll: { - markets: ['0xB2f97c1Bd3bf02f5e74d13f02E3e26F93D77CE44'], // USDC Market - }, - optimism: { - markets: [ - '0x2e44e174f7D53F0212823acC11C01A11d58c5bCB', // USDC Market - '0x995E394b8B2437aC8Ce61Ee0bC610D617962B214', // USDT Market - '0xE36A30D249f7761327fd973001A32010b521b6Fd', // ETH Market - ], - }, - mantle: { - markets: [ - '0x606174f62cd968d8e684c645080fa694c1D7786E', // USDe Market - ], - }, - ronin:{ - markets: [ - '0x4006ed4097ee51c09a04c3b0951d28ccf19e6dfe', // WETH Market - '0xc0Afdbd1cEB621Ef576BA969ce9D4ceF78Dbc0c0' // RON Market - ] - }, - unichain:{ - markets: [ - '0x2c7118c4C88B9841FCF839074c26Ae8f035f2921', // USDC Market - '0x6C987dDE50dB1dcDd32Cd4175778C2a291978E2a' // WETH Market - ] - } -}) diff --git a/projects/compx-cdp/index.js b/projects/compx-cdp/index.js deleted file mode 100644 index 071880dcacc..00000000000 --- a/projects/compx-cdp/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const { sumTokens } = require("../helper/chain/algorand"); - - -module.exports = { - algorand: { - tvl: getCDPVaultTokens, - staking, - }, -}; - -const stakingPools = [ - // NIKO - 'XZOKYETGUQKIJJG4LSBAFYLDQRKCT6PQUO5CZJQ37VUD2VYMWRHH2LK7MI', - // TinymanPool2.0 xMcRib-ALGO - 'RNL5YCWQDLYX4WXMM43ARQVFVNO4PSGWCLNKORUUVFCXQLR2LIURETDCDI', - // JoeCoin - 'Y3CNVFHCAMWZP57R7S7URX366XRE6VKCHWDN57VMR7WL556OFTDXGAQZ3E', - // xUSD - 'EW6JAJOFRIXWURIIPCOCEXJ6SQ5QW2BQ7REE5CYEL4PSNYHUSIH2G55ZRI', - // cAlgo - 'ZKXS4SAXMCBVOHMWNGZZO7AXMRETLTLYLQRBO2KLSN2SPOGZCU4O3JABSA', - // Compx - 'DRZ2TY3YHPRCMD6MVWCHKFIDF4PCCQ3DOUW42MGMVOPTJVGRKORJBQTZS4', - // DOD - "2IJMFNVFSGCMD7GCPME65MXTHPB3VPHWUVEJHVW7RWCJRR7TFIWPHL7QUQ", - // FELI - "XTME5AZADQ3DYJWTENDG3G6WTXK2LUWQPYTZLVLADLFNFNKLUWERDNID7I", - // USDC/xUSD [SI] PACT LP TKN - "M3V5ZGXQODFTA25XQ7N2JUIN5HGQS3X7TRS3NAZVXJUNOAUGNVUWP6XWAU", - // Compx Algo Staking - "ZKXS4SAXMCBVOHMWNGZZO7AXMRETLTLYLQRBO2KLSN2SPOGZCU4O3JABSA", - // Compx Calgo Staking - "Y3CNVFHCAMWZP57R7S7URX366XRE6VKCHWDN57VMR7WL556OFTDXGAQZ3E" -]; - - -const vaults = [ - // Minting wallet - "XN4OX5OFLZFLDBI4J36EGOIMKGR4NISEVFCQRXDTC4WT35GPBM5EJI7IOA", - - // gAlgo Vault - "ABU4ZY2UAPJWIZPE5FZP6GWVXTIP77YNAF3KBWBNW6KNBZALKRKPZL6HLM", - - // Link Vault - "YVQRJKC7TUD3XB3XCAA7SMY5OG7AHOTU465DI7HIOL4NQZMG52NXLBOMYA", - - // AVAX Vault - "RQ4MNDFSG4CCCWEJMRNGE5ZRNV3F2PHZSDJZ5X266MXA65HMLRFFXNAW5Y", - - // Sol Vault - "ODJPJKPAHL7NPRJC5XF42SWFHB37ECCQEGFJIA4TFWOXGKJQA6M7S5NL2M", - - // goBTC Vault - "UVSJVQXX3KYYWTQVXPRTIA5QXYAM6Y26JI2P2NZP25RSJTVMP3X7ODNC5Q", - - // goETH Vault - "DMVBFMMH3RIKCS3V77DCETWJDA2HW4LPEBURBUD7RQNVK5SKH5QZG6ZF4Q", - - // Silver Vault - "H4437RZ3W2Q7JXIRPDIEFO65QNNTH4SICMNWT4SSEHNQ4UPIMAO63DNZGI", - - // Gold Vault - "MJET3QJDM5MXC5ZREAPW5PUK4HN73VRYMAFGMPWG7VEIRQIHFQPSMA6CUQ", - - // mAlgo Vault - "XXLNQOR5XNJU57W2TQ3WEJTL2RGQ2ABCSAU2CX4NSZZGPHB5WSOTT6BZXA", - - // Chips Vault - "RJQNFSLZWSZ3W6N5TJCS2F6KNEWTXUQDFI7GXDXXCOC5UDIPYYN3W665YE", - - // Coop Vault - "QTFSX7MJLUBP4TLCRNGMEQCOCG6Z2O5A7RAUREW5S5RYIGMGYDLDYYSMAQ", - - // Algo Vault - "HVDIX7FCCJGH3XFJNTEAQZ22CQTD2LUD7NKN7JCY37SGFA2763A4NHUHRQ", - - // Deprecated Algo Vault - "I4O4APZDX7R7GL26JA2G6ENO5KZHIN4ZLRJR4DANXJC6GU7A2SI6VNY6LA" -]; - -async function getCDPVaultTokens() { - // Don't count xUSD - return sumTokens({ owners: vaults, blacklistedTokens: ['760037151'] }); -} - -async function staking() { - const balances = await sumTokens({ - owners: stakingPools, - tinymanLps: [['2525037707', '2518721081']], - }); - delete balances['algorand:2400334372'] - return balances; -} diff --git a/projects/compx-streaming/index.js b/projects/compx-streaming/index.js deleted file mode 100644 index 9b1a6d45f48..00000000000 --- a/projects/compx-streaming/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const { lookupTransactionsByID, sumTokens } = require("../helper/chain/algorand"); - -module.exports = { - algorand: { - tvl: getAlgoStreamTVL, - vesting: getASAStreamTVL, - }, -}; - -async function getAlgoStreamTVL() { - const { transactions } = await lookupTransactionsByID({ - 'tx-type': 'pay', - 'address': 'KYYHXY5CANPEOH4WA4ZSISEMD5QYYBP6DOG3HNWJJIJNNKARYF5JYCNSNE', - 'address-role': 'sender', - 'exclude-close-to': 'true', - }); - - const uniqueRecipients = new Set(transactions.map((txn) => txn["inner-txns"][0]["inner-txns"][0]["payment-transaction"]["receiver"])); - - const algoRecipients = Array.from(uniqueRecipients); - return sumTokens({ owners: algoRecipients, }); -} - -async function getASAStreamTVL() { - const asaFeeRecipients = await getASARecipients(); - return sumTokens({ owners: asaFeeRecipients, }); -} - -async function getASARecipients() { - let transactions = []; - let nextToken = null; - - do { - let query = { - 'tx-type': 'axfer', - 'address': 'JBV23ATJIL4MWXIJXZ6L2EJSJZOMP7YENNGUNQZAUTEN7QYSPC5ZHPR6SY', - 'address-role': 'sender', - 'exclude-close-to': 'true', - }; - - if (nextToken) { - query['next'] = nextToken; - } - - const response = await lookupTransactionsByID(query); - - transactions = transactions.concat(response.transactions); - - nextToken = response['next-token']; - - } while (nextToken); - - const uniqueRecipients = new Set(); - - transactions.forEach((txn) => { - const innerTxns = txn["inner-txns"][0]["inner-txns"]; - if (innerTxns && innerTxns.length >= 2) { - uniqueRecipients.add(innerTxns[2]["asset-transfer-transaction"]["receiver"]); - } else if (!innerTxns && txn["inner-txns"][0]["asset-transfer-transaction"]) { - uniqueRecipients.add(txn["inner-txns"][0]["asset-transfer-transaction"]["receiver"]); - } - }); - - return Array.from(uniqueRecipients); -} diff --git a/projects/compx/index.js b/projects/compx/index.js deleted file mode 100644 index afbd9e9468a..00000000000 --- a/projects/compx/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { get } = require("../helper/http"); -async function tvl() { - const compxTvlData = await get( - "https://compx-backend-e899c.ondigitalocean.app/get-compx-tvl" - ); - //Calculating user tvl: - //usersFarmPosition = userLpBalance / farmTotalTvlLp - //userDollarTvl = farmTvl * usersFarmPosition - const tvlUsd = compxTvlData.data.tvlDetails.reduce((total, userTvl) =>{ - const usersDollarTvl = Number((Number(userTvl.farmTvl) * Number(userTvl.usersFarmPosition)).toFixed(3)); - return total + usersDollarTvl; - }, 0) - return { tether: tvlUsd }; -} - -module.exports = { - algorand: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/comtech-gold/index.js b/projects/comtech-gold/index.js deleted file mode 100644 index 36ddede975a..00000000000 --- a/projects/comtech-gold/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const CGO = '0x8f9920283470f52128bf11b0c14e798be704fd15' - -const tvl = async (api) => { - const supply = await api.call({ target: CGO, abi: 'erc20:totalSupply' }) - api.add(CGO, supply) -} - -module.exports = { - xdc: { tvl } -} \ No newline at end of file diff --git a/projects/concave/index.js b/projects/concave/index.js deleted file mode 100644 index 97e57a74fee..00000000000 --- a/projects/concave/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { ohmTvl } = require('../helper/ohm') -const { uniTvlExport } = require('../helper/unknownTokens'); -const { nullAddress } = require('../helper/unwrapLPs'); - - -// Treasury backing the CNV price, similar to OHM so using the ohm wrapper -const treasury = '0x226e7af139a0f34c6771deb252f9988876ac1ced' -const etherAddress = ADDRESSES.null -const cnv_token = '0x000000007a58f5f58e697e51ab0357bc9e260a04' -const stakingAddress = ADDRESSES.null -const treasuryTokens = [ - [ADDRESSES.ethereum.DAI, false], //DAI - // ['0x0ab87046fBb341D058F17CBC4c1133F25a20a52f', false], //gOHM -] -const gemSwap_factory = '0x066a5cb7ddc6d55384e2f6ca13d5dd2cd2685cbd' - -// Generic CRV position unwrapping, useful for a CVX position unwrapping -// CVX treasury position parameters -const cvxDOLA_3CRV_BaseRewardPool = '0x835f69e58087e5b6bffef182fe2bf959fe253c3c' - -async function tvl(api) { - return api.sumTokens({ owner: treasury, tokens: [nullAddress, cvxDOLA_3CRV_BaseRewardPool]}) -} - -const uniTvl = uniTvlExport('chain', gemSwap_factory).chain.tvl - -module.exports = ohmTvl(treasury, treasuryTokens, 'ethereum', stakingAddress, cnv_token, undefined, undefined, true) -module.exports.ethereum.tvl = sdk.util.sumChainTvls([tvl, module.exports.ethereum.tvl, uniTvl]) -delete module.exports.ethereum.staking -module.exports.methodology = 'Count the treasury assets backing the CNV price + LP assets in the AMM Gemswap' diff --git a/projects/concentrator/abis/AladdinAFXS.json b/projects/concentrator/abis/AladdinAFXS.json deleted file mode 100644 index 43111bca20d..00000000000 --- a/projects/concentrator/abis/AladdinAFXS.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalAssets": "uint256:totalAssets", - "totalSupply": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/concentrator/abis/AladdinCRV.json b/projects/concentrator/abis/AladdinCRV.json deleted file mode 100644 index cbf8202f88a..00000000000 --- a/projects/concentrator/abis/AladdinCRV.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalUnderlying": "uint256:totalUnderlying", - "totalSupply": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/concentrator/abis/AladdinCVX.json b/projects/concentrator/abis/AladdinCVX.json deleted file mode 100644 index 028ce20d0e7..00000000000 --- a/projects/concentrator/abis/AladdinCVX.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalDebtToken": "uint256:totalDebtToken", - "totalCurveLpToken": "uint256:totalCurveLpToken" -} \ No newline at end of file diff --git a/projects/concentrator/abis/AladdinConvexVault.json b/projects/concentrator/abis/AladdinConvexVault.json deleted file mode 100644 index 723ed7c6abd..00000000000 --- a/projects/concentrator/abis/AladdinConvexVault.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (uint128 totalUnderlying, uint128 totalShare, uint256 accRewardPerShare, uint256 convexPoolId, address lpToken, address crvRewards, uint256 withdrawFeePercentage, uint256 platformFeePercentage, uint256 harvestBountyPercentage, bool pauseDeposit, bool pauseWithdraw)", - "afraxETHPoolInfo": "function poolInfo(uint256) view returns (tuple(uint128 totalUnderlying, uint128 totalShare) supply, tuple(address token, address strategy, bool pauseDeposit, bool pauseWithdraw) strategy, tuple(uint128 rate, uint32 periodLength, uint48 lastUpdate, uint48 finishAt, uint256 accRewardPerShare) reward, tuple(uint32 withdrawFeeRatio, uint32 platformFeeRatio, uint32 harvestBountyRatio, uint160 reserved) fee)", - "asdCRVPoolInfo": "function poolInfo(uint256) view returns (tuple(uint128 totalUnderlying, uint128 totalShare) supply, tuple(address token, address strategy, bool pauseDeposit, bool pauseWithdraw) strategy, tuple(uint128 rate, uint32 periodLength, uint48 lastUpdate, uint48 finishAt, uint256 accRewardPerShare) reward, tuple(uint32 withdrawFeeRatio, uint32 platformFeeRatio, uint32 harvestBountyRatio, uint160 reserved) fee)" -} diff --git a/projects/concentrator/abis/AladdinRUSD.json b/projects/concentrator/abis/AladdinRUSD.json deleted file mode 100644 index cdfb2cd32cf..00000000000 --- a/projects/concentrator/abis/AladdinRUSD.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getTotalAssets": "uint256:getTotalAssets" -} diff --git a/projects/concentrator/abis/AladdinSdCRV.json b/projects/concentrator/abis/AladdinSdCRV.json deleted file mode 100644 index 43111bca20d..00000000000 --- a/projects/concentrator/abis/AladdinSdCRV.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalAssets": "uint256:totalAssets", - "totalSupply": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/concentrator/abis/abi.json b/projects/concentrator/abis/abi.json deleted file mode 100644 index 1ad3a3fd615..00000000000 --- a/projects/concentrator/abis/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)", - "poolLength": "uint256:poolLength", - "coinsUint": "function coins(uint256 arg0) view returns (address)", - "coinsInt": "function coins(int128 arg0) view returns (address out)", - "underlying": "address:underlying", - "exchangeRateStored": "uint256:exchangeRateStored" -} \ No newline at end of file diff --git a/projects/concentrator/config.js b/projects/concentrator/config.js deleted file mode 100644 index cc519583e5f..00000000000 --- a/projects/concentrator/config.js +++ /dev/null @@ -1,17 +0,0 @@ -const coins = {}; - -module.exports = { - farmConfig: [ - { - coins: [ - coins.ctr, - coins.eth, - ], - addresses: { - gauge: '0x5BC3dD6E6b4E5DD811d558843DA6A1bfBB9c9dCa', - swap: '0xf2f12B364F614925aB8E2C8BFc606edB9282Ba09', - lpToken: '0x3f0e7916681452D23Cd36B1281457DA721F2E5dF', - } - } - ], -} \ No newline at end of file diff --git a/projects/concentrator/index.js b/projects/concentrator/index.js deleted file mode 100644 index 8820fd4db2f..00000000000 --- a/projects/concentrator/index.js +++ /dev/null @@ -1,333 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const sdk = require("@defillama/sdk"); -const abi = require("./abis/abi.json"); -const { default: BigNumber } = require("bignumber.js"); - -const AladdinConvexVaultABI = require("./abis/AladdinConvexVault.json"); -const AladdinCRVABI = require("./abis/AladdinCRV.json"); -const AladdinAFXSABI = require("./abis/AladdinAFXS.json"); -const AladdinCVXABI = require("./abis/AladdinCVX.json"); -const AladdinSdCRVABI = require("./abis/AladdinSdCRV.json"); -const AladdinRUSDABI = require("./abis/AladdinRUSD.json"); -const { farmConfig } = require("./config.js"); - -const concentratorVault = "0xc8fF37F7d057dF1BB9Ad681b53Fa4726f268E0e8"; -const concentratorAcrv = "0x2b95A1Dcc3D405535f9ed33c219ab38E8d7e0884"; -const concentratorAFXS = "0xDAF03D70Fe637b91bA6E521A32E1Fb39256d3EC9"; -const concentratorAFrxETH = "0xb15Ad6113264094Fd9BF2238729410A07EBE5ABa"; -const cvxcrvAddress = ADDRESSES.ethereum.cvxCRV; -const concentratorAbcCVXAddress = "0xDEC800C2b17c9673570FDF54450dc1bd79c8E359"; -const concentratorAsdCRVAddress = "0x43E54C2E7b3e294De3A155785F52AB49d87B9922"; -const aladdinCVXAddress = "0xb0903Ab70a7467eE5756074b31ac88aEBb8fB777"; -const arUSDAddress = "0x549716F858aefF9CB845d4C78c67A7599B0Df240"; -const arUSD4626Address = "0x07D1718fF05a8C53C8F05aDAEd57C0d672945f9a"; -const rUSDAddress = "0x65D72AA8DA931F047169112fcf34f52DbaAE7D18"; -const aFXNAddress = "0x00Bac667a4cCf9089aB1Db978238C555C4349545"; -const fxnAddress = ADDRESSES.ethereum.FXN; -const fxSaveAddress = "0x7743e50F534a7f9F1791DdE7dCD89F7783Eefc39"; -const fxBASEAddress = "0x65C9A641afCEB9C0E6034e558A319488FA0FA3be"; -const asdPENDLEAddress = "0x606462126E4Bd5c4D153Fe09967e4C46C9c7FeCf"; -const sdPENDLEAddress = "0x5Ea630e00D6eE438d3deA1556A110359ACdc10A9"; - -const concentratorNewVault = "0x3Cf54F3A1969be9916DAD548f3C084331C4450b5"; -const concentratorAfxsVault = "0xD6E3BB7b1D6Fa75A71d48CFB10096d59ABbf99E1"; -const concentratorAfrxETHVault = "0x50B47c4A642231dbe0B411a0B2FBC1EBD129346D"; -const concentratorAsdCRVVault = "0x59866EC5650e9BA00c51f6D681762b48b0AdA3de"; -const usdtAddress = ADDRESSES.ethereum.USDT; -const aladdinBalancerLPGauge = "0x33e411ebE366D72d058F3eF22F1D0Cf8077fDaB0"; -const clevCVXAddress = "0xf05e58fCeA29ab4dA01A495140B349F8410Ba904"; -const clevCVXCVXAddress = "0xF9078Fb962A7D13F55d40d49C8AA6472aBD1A5a6"; -const sdCRVAddress = "0xD1b5651E55D4CeeD36251c61c50C889B36F6abB5"; -const cvxAddress = ADDRESSES.ethereum.CVX; - -const chain = "ethereum"; -async function getBalancerLpTvl(balances, block) { - const ctrLpTotalSupply = ( - await sdk.api.abi.call({ - target: aladdinBalancerLPGauge, - block, - abi: "erc20:totalSupply", - params: [], - }) - ).output; - sdk.util.sumSingleBalance( - balances, - usdtAddress, - BigNumber(ctrLpTotalSupply).shiftedBy(-12).toFixed(0) - ); -} - -async function getFarmLpTvl(balances, block) { - const farmData = farmConfig[0]; - const ctrLpTotalSupply = ( - await sdk.api.abi.call({ - target: farmData.addresses.gauge, - block, - abi: "erc20:totalSupply", - params: [], - }) - ).output; - sdk.util.sumSingleBalance( - balances, - farmData.addresses.lpToken, - ctrLpTotalSupply, - chain - ); -} - -async function tvl(api) { - const block = api.block; - let balances = {}; - await Promise.all([ - getBalancerLpTvl(balances, block), - getFarmLpTvl(balances, block), - getAFXSInfo(balances, block), - getAfrxETHInfo(balances, block), - getAbcCVXInfo(balances, block), - getAsdCRVInfo(balances, block), - getAladdinCVXInfo(balances, block), - getAladdinRUSDInfo(balances, block), - getAladdinFXNInfo(balances, block), - getFxSaveInfo(balances, block), - getAsdPENDLEInfo(balances, block), - getVaultInfo("old", balances, block), - getVaultInfo("New", balances, block), - getVaultInfo("afxs", balances, block), - getVaultInfo("afrxETH", balances, block), - getVaultInfo("asdCRV", balances, block), - addACRVbalance(balances, api), - ]); - return balances; -} - -async function addACRVbalance(balances, api) { - const acrvTotalUnderlying = await api.call({ - target: concentratorAcrv, - abi: AladdinCRVABI.totalUnderlying, - }); - sdk.util.sumSingleBalance( - balances, - cvxcrvAddress, - acrvTotalUnderlying, - api.chain - ); -} - -async function getVaultInfo(type, balances, block) { - let _target = concentratorVault; - let _abi = AladdinConvexVaultABI.poolInfo; - switch (type) { - case "old": - _target = concentratorVault; - break; - case "New": - _target = concentratorNewVault; - break; - case "afxs": - _target = concentratorAfxsVault; - break; - case "afrxETH": - _target = concentratorAfrxETHVault; - _abi = AladdinConvexVaultABI.afraxETHPoolInfo; - break; - case "asdCRV": - _target = concentratorAsdCRVVault; - _abi = AladdinConvexVaultABI.asdCRVPoolInfo; - break; - } - let poolInfo = await sdk.api2.abi.fetchList({ - chain, - block, - lengthAbi: abi.poolLength, - itemAbi: _abi, - target: _target, - }); - poolInfo.forEach((item) => { - if (type == "afrxETH" || type == "asdCRV") { - sdk.util.sumSingleBalance( - balances, - item.strategy.token, - item.supply.totalUnderlying, - chain - ); - } else { - sdk.util.sumSingleBalance( - balances, - item.lpToken, - item.totalUnderlying, - chain - ); - } - }); -} - -async function getAFXSInfo(balances, block) { - const cvxfxsCrvInfo = { - lpToken: "0xF3A43307DcAFa93275993862Aae628fCB50dC768", - }; - const aFXSTotalUnderlying = ( - await sdk.api.abi.call({ - target: concentratorAFXS, - block, - abi: AladdinAFXSABI.totalAssets, - }) - ).output; - - sdk.util.sumSingleBalance( - balances, - cvxfxsCrvInfo.lpToken, - aFXSTotalUnderlying, - chain - ); -} - -async function getAfrxETHInfo(balances, block) { - const ethFrxETHCrvInfo = { - lpToken: "0xf43211935C781D5ca1a41d2041F397B8A7366C7A", - }; - const aFrxETHTotalUnderlying = ( - await sdk.api.abi.call({ - target: concentratorAFrxETH, - block, - abi: AladdinAFXSABI.totalAssets, - }) - ).output; - sdk.util.sumSingleBalance( - balances, - ethFrxETHCrvInfo.lpToken, - aFrxETHTotalUnderlying, - chain - ); -} - -async function getAbcCVXInfo(balances, block) { - const totalClevCVXAmount = ( - await sdk.api.abi.call({ - target: concentratorAbcCVXAddress, - block, - abi: AladdinCVXABI.totalDebtToken, - }) - ).output; - const totalCurveLpTokenAmount = ( - await sdk.api.abi.call({ - target: concentratorAbcCVXAddress, - block, - abi: AladdinCVXABI.totalCurveLpToken, - }) - ).output; - sdk.util.sumSingleBalance( - balances, - clevCVXAddress, - totalClevCVXAmount, - chain - ); - sdk.util.sumSingleBalance( - balances, - clevCVXCVXAddress, - totalCurveLpTokenAmount, - chain - ); -} - -async function getAsdCRVInfo(balances, block) { - const asdCRVTotalUnderlying = ( - await sdk.api.abi.call({ - target: concentratorAsdCRVAddress, - block, - abi: AladdinSdCRVABI.totalAssets, - }) - ).output; - sdk.util.sumSingleBalance( - balances, - sdCRVAddress, - asdCRVTotalUnderlying, - chain - ); -} - -async function getAladdinCVXInfo(balances, block) { - const aladdinCVXTotalUnderlying = ( - await sdk.api.abi.call({ - target: aladdinCVXAddress, - block, - abi: AladdinAFXSABI.totalAssets, - }) - ).output; - sdk.util.sumSingleBalance( - balances, - cvxAddress, - aladdinCVXTotalUnderlying, - chain - ); -} - -async function getAladdinRUSDInfo(balances, block) { - const aladdinRUSDTotalUnderlying = ( - await sdk.api.abi.call({ - target: arUSDAddress, - block, - abi: AladdinRUSDABI.getTotalAssets, - }) - ).output; - sdk.util.sumSingleBalance( - balances, - rUSDAddress, - aladdinRUSDTotalUnderlying, - chain - ); -} - -async function getAladdinFXNInfo(balances, block) { - const aladdinFXNTotalUnderlying = ( - await sdk.api.abi.call({ - target: aFXNAddress, - block, - abi: AladdinAFXSABI.totalAssets, - }) - ).output; - sdk.util.sumSingleBalance( - balances, - fxnAddress, - aladdinFXNTotalUnderlying, - chain - ); -} - -async function getFxSaveInfo(balances, block) { - const fxSaveTotalUnderlying = ( - await sdk.api.abi.call({ - target: fxSaveAddress, - block, - abi: AladdinAFXSABI.totalAssets, - }) - ).output; - sdk.util.sumSingleBalance( - balances, - fxBASEAddress, - fxSaveTotalUnderlying, - chain - ); -} - -async function getAsdPENDLEInfo(balances, block) { - const asdPENDLETotalUnderlying = ( - await sdk.api.abi.call({ - target: asdPENDLEAddress, - block, - abi: AladdinAFXSABI.totalAssets, - }) - ).output; - sdk.util.sumSingleBalance( - balances, - sdPENDLEAddress, - asdPENDLETotalUnderlying, - chain - ); -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - }, -}; diff --git a/projects/concordex-io/index.js b/projects/concordex-io/index.js deleted file mode 100644 index fa568826f73..00000000000 --- a/projects/concordex-io/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { post } = require('../helper/http') - -async function tvl(api) { - const body = {"jsonrpc":"2.0","method":"liquidity_pools_list","params":{"filter":{"sort":"EFFECTIVE_TVL","page":1,"is_desc":true,"search":"","limit":999}},"id":0} - const { result: { pools }} = await post('https://cdex-liquidity-pool.concordex.io/v1/rpc', body) - return { - tether: pools.reduce((acc, i) => acc + +i.tvl, 0) - } -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - concordium: { tvl }, -} diff --git a/projects/concrete-xyz/index.js b/projects/concrete-xyz/index.js deleted file mode 100644 index b6cced6c994..00000000000 --- a/projects/concrete-xyz/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const axios = require('axios') - -const URL = 'https://apy.api.concrete.xyz/v1/vault:tvl/all' - -const abis = { - asset: "address:asset", - totalAssets: "uint256:totalAssets", - getStrategies: "function getStrategies() view returns ((address strategy, (uint256 index, uint256 amount) allocation)[])" -} - -const tvl = async (api) => { - const chainId = api.chainId - const { data } = await axios.get(URL) - const datas = Object.values(data[chainId]).map(v => v.address) - - const [assets, strategiess] = await Promise.all([ - api.multiCall({ calls: datas, abi: abis.asset }), - api.multiCall({ calls: datas, abi: abis.getStrategies }), - ]) - - const vaults = datas.map((d, i) => { - const asset = assets[i] - const strategies = strategiess[i].map(({ strategy }) => strategy) - return { vault: d, asset, strategies } - }) - - for (const { asset, strategies } of vaults) { - const totalAssets = await api.multiCall({ calls: strategies, abi: abis.totalAssets }) - totalAssets.forEach((t) => { api.add(asset, t) }) - } -} - -const chains = ['ethereum', 'berachain', 'arbitrum', 'katana'] -chains.forEach((chain) => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/cone/index.js b/projects/cone/index.js deleted file mode 100644 index e136ffa180d..00000000000 --- a/projects/cone/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - bsc:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0x0EFc2D2D054383462F2cD72eA2526Ef7687E1016', - }), - }, -} diff --git a/projects/conic-omnipool/index.js b/projects/conic-omnipool/index.js deleted file mode 100644 index 48123949e11..00000000000 --- a/projects/conic-omnipool/index.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - doublecounted: true, - hallmarks: [ - // [1689937200,"ETH Omnipool Hacked"], - [1741393291, 'Team decides to wind down the project'], - ], - ethereum: { - tvl: async (api) => { - const poolsV1 = (await api.call({ abi: 'address[]:listPools', target: '0x013A3Da6591d3427F164862793ab4e388F9B587e' })).filter(i => i !== '0xb652710eab40B6Ed32D6c32053fC37eF234562c2') - const poolsV2 = (await api.call({ abi: 'address[]:listPools', target: '0x2790EC478f150a98F5D96755601a26403DF57EaE' })) - const pools = [...poolsV1, ...poolsV2] - const bals = await api.multiCall({ abi: 'uint256:totalUnderlying', calls: pools, permitFailure: true }) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: pools }) - pools.forEach((_, i) => { - const bal = bals[i] - const token = tokens[i] - if (!bal || !token) return; - api.add(token, bal) - }) - - } - } -} diff --git a/projects/connext/abi.json b/projects/connext/abi.json deleted file mode 100644 index 98c602c8362..00000000000 --- a/projects/connext/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalChannelToken": "uint256:totalChannelToken" -} \ No newline at end of file diff --git a/projects/connext/index.js b/projects/connext/index.js deleted file mode 100644 index 3ea46032ff2..00000000000 --- a/projects/connext/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getConfig } = require('../helper/cache') - -// Taken from @connext/nxtp-contracts -async function getContracts() { - return getConfig('connect/contracts', 'https://raw.githubusercontent.com/connext/monorepo/main/packages/deployments/contracts/deployments.json') -} - -async function getDeployedContractAddress(chainId) { - const allContracts = await getContracts() - const record = allContracts[chainId + ''] ?? [] - const contracts = (record ?? [])[0]?.contracts ?? {} - - const result = [ - contracts.Connext?.address, - contracts.Connext_DiamondProxy?.address, - ].filter(i => i); - - // Manually adding Connext-specific xERC20 lockboxes on L1. Don't yet have a programmatic way to retrieve these, so hardcoding the largest lockboxes only for now. - if (chainId === 1) { - result.push("0xC8140dA31E6bCa19b287cC35531c2212763C2059"); // ezETH - } - return result; -} - -let getAssetsPromise -// Taken from @connext/nxtp-utils -async function getAssetIds(chainId) { - const url = "https://raw.githubusercontent.com/connext/chaindata/main/crossChain.json" - if (!getAssetsPromise) - getAssetsPromise = getConfig('connect/assets/'+chainId, url) - const data = await getAssetsPromise - const chainData = data.find(item => item.chainId === chainId) || {} - const result = Object.entries(chainData.assetId || {}).filter(i => i[0].length && !i[1].symbol.startsWith('next')).map(i => i[0]) - // crossChain.json returns the xERC20 representation of ezETH instead of canonical addresses on L1. Manually add these below until a better JSON is available. - if (chainId === 1) { - result.push(ADDRESSES.linea.rzETH); // ezETH - } - return result; -} - - -function chainTvl(chain) { - return async (api) => { - const chainId = api.chainId - const owners = await getDeployedContractAddress(chainId) - if (!owners.length) - return {} - const tokens = await getAssetIds(chainId) - return sumTokens2({ owners, tokens, api, }) - }; -} - -const chains = [ - "ethereum", - "bsc", - "polygon", - "xdai", - "optimism", - "arbitrum", - "mode", - "metis", - "base", - "linea", - - // deprecated? - "moonriver", - "fantom", - "avax", - "moonbeam", - "fuse", - "cronos", - "milkomeda", - "boba", - "evmos", - "harmony", - // "okexchain", - // "metis", - // "heco", - // "aurora", -]; - -chains.forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } -}) \ No newline at end of file diff --git a/projects/connext/old.js b/projects/connext/old.js deleted file mode 100644 index 4e6e29ae8c5..00000000000 --- a/projects/connext/old.js +++ /dev/null @@ -1,152 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const abi = require('./abi.json'); -const BigNumber = require('bignumber.js') - -// V1 -const hubAddress = '0xdfa6edAe2EC0cF1d4A60542422724A48195A5071'; -const tokenDenominationAddress = ADDRESSES.ethereum.DAI; -//V3 -const routers = ['0xe3cF69b86F274a14B87946bf641f11Ac837f4492', '0xe6887c0cc3c37cb2ee34Bc58AB258f36825CA910', '0xE540998865aFEB054021dc849Cc6191b8E09dC08', '0xC6C68811E75EfD86d012587849F1A1D30427361d'] -const ethereumTokens = [ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.MATIC, '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', ADDRESSES.ethereum.DAI] -const bscTokens = ['0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC] -const polygonSettings = { - nativeCoin: 'matic-network', - tokens: [ - { - address: ADDRESSES.polygon.DAI, - coingeckoId: 'dai', - }, - { - address: '0xA1c57f48F0Deb89f569dFbE6E2B7f46D33606fD4', - coingeckoId: 'decentraland' - }, - { - address: ADDRESSES.polygon.USDT, - coingeckoId: 'tether' - }, - { - address: ADDRESSES.polygon.USDC, - coingeckoId: 'usd-coin' - } - ] -} -const xdaiSettings = { - nativeCoin: 'dai', - tokens: [ - { - address: ADDRESSES.xdai.USDC, - coingeckoId: 'usd-coin' - }, - { - address: ADDRESSES.xdai.USDT, - coingeckoId: 'tether' - }, - ] -} - -function constructBalanceOfCalls(tokens, useAddressProp){ - const calls = [] - for(const router of routers){ - for(const token of tokens){ - const address = useAddressProp?token.address:token - calls.push({ - target: address, - params: [router] - }) - } - } - return calls -} - -async function getRouterBalances(timestamp, chain, settings, block){ - const routerBalances = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - block, - calls: constructBalanceOfCalls(settings.tokens, true), - chain - }) - const tokenDecimals = await sdk.api.abi.multiCall({ - abi: 'erc20:decimals', - block, - calls: settings.tokens.map(token => ({ - target: token.address, - })), - chain - }) - const nativeBalances = await sdk.api.eth.getBalances({ - targets: routers, - block, - chain, - }) - const totalNativeBalance = nativeBalances.output.reduce((acc, output)=>acc.plus(output.balance), BigNumber(0)) - const balances = {} - balances[settings.nativeCoin] = totalNativeBalance.div(1e18).toFixed(0) - routerBalances.output.forEach((result)=>{ - const tokenIndex = settings.tokens.findIndex(token=>result.input.target.toLowerCase()===token.address.toLowerCase()) - const coingeckoId = settings.tokens[tokenIndex].coingeckoId - const decimals = Number(tokenDecimals.output[tokenIndex].output) - sdk.util.sumSingleBalance(balances, coingeckoId, BigNumber(result.output).div(10**decimals).toFixed(0)) - }) - return balances; -} - -async function ethereum(timestamp, block) { - // V1 - const totalChannelToken = (await sdk.api.abi.call({ - block, - target: hubAddress, - abi: abi['totalChannelToken'], - })).output; - - const balances = { [tokenDenominationAddress]: totalChannelToken }; - - // V2 - const routerBalances = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - block, - calls: constructBalanceOfCalls(ethereumTokens, false) - }) - sdk.util.sumMultiBalanceOf(balances, routerBalances); - - return balances -} - -async function bsc(timestamp, ethBlock, chainBlocks) { - const block = chainBlocks.bsc - const balances={} - const routerBalances = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - block, - chain:'bsc', - calls: constructBalanceOfCalls(bscTokens, false) - }) - routerBalances.output.forEach(result=>{ - sdk.util.sumSingleBalance(balances, `bsc:${result.input.target}`, result.output) - }) - return balances -} - -async function polygon(timestamp, ethBlock, {polygon: block}) { - return getRouterBalances(timestamp, 'polygon', polygonSettings, block) -} - -async function xdai(timestamp, ethBlock, {xdai: block}) { - return getRouterBalances(timestamp, 'xdai', xdaiSettings, block) -} - -module.exports = { - start: '2019-03-08', // 03/08/2019 @ 5:25pm (UTC) - ethereum: { - tvl: ethereum - }, - polygon: { - tvl: polygon - }, - xdai: { - tvl: xdai - }, - bsc:{ - tvl: bsc - } -}; diff --git a/projects/contango-v2/index.js b/projects/contango-v2/index.js deleted file mode 100644 index 5b33f5c5a3b..00000000000 --- a/projects/contango-v2/index.js +++ /dev/null @@ -1,149 +0,0 @@ -const axios = require('axios') - -const CONTANGO_PROXY = "0x6Cae28b3D09D8f8Fc74ccD496AC986FC84C0C24E"; -const CONTANGO_LENS_PROXY = "0xe03835Dfae2644F37049c1feF13E8ceD6b1Bb72a"; -const alchemyGraphUrl = (chain) => `https://subgraph.satsuma-prod.com/773bd6dfe1c6/egills-team/v2-${chain}/api` - -const excludedIds_arb = [ - "0x415242555344540000000000000000000bffffffff0000000000000000000623", - "0x555344435745544800000000000000000bffffffff000000000000000000030a", - "0x574554485553444300000000000000000bffffffff00000000000000000001df", - "0x574554485553444300000000000000000bffffffff00000000000000000001e8", - "0x574554485553444300000000000000000bffffffff0000000000000000000309", - "0x776545544857455448000000000000000bffffffff0000000000000000003099", - "0x777374455448574554480000000000000bffffffff00000000000000000010a7" -]; - -const config = { - arbitrum: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('arbitrum'), - excludedIds: excludedIds_arb - }, - optimism: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('optimism'), - }, - ethereum: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('mainnet'), - }, - polygon: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('polygon'), - }, - xdai: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('gnosis'), - }, - base: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('base'), - }, - avax: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('avalanche'), - }, - bsc: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('bsc'), - }, - linea: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('linea'), - }, - scroll: { - contango: CONTANGO_PROXY, - contango_lens: CONTANGO_LENS_PROXY, - graphUrl: alchemyGraphUrl('scroll'), - }, -}; - -const abis = { - balances: "function balances(bytes32 positionId) view returns (uint256 collateral, uint256 debt)", -}; - -const graphQueries = { - position: ` - query MyQuery($lastId: BigInt, $block: Int) { - positions( - block: {number: $block} - where: {and: [{number_gt: $lastId}, {quantity_not: "0"}]} - first: 10000 - ) { - id - instrument { - base { - id - } - quote { - id - } - } - } - }`, - asset: ` - query MyQuery($block: Int) { - assets(block: {number: $block}, first: 10000) { - id - } - }`, -}; - - -const getPositionsTvl = async (api, lens, graphUrl, borrowed, block, excludedIds) => { - const { data } = await axios.post(graphUrl, { query: graphQueries.position, variables: { lastId: "0", block } }); - const parts = data.data.positions - .filter(({ id }) => !excludedIds.includes(id)) - .map(({ id, instrument: { base, quote } }) => [id, [base.id, quote.id]]); - - const calls = parts.map(([id]) => ({ target: lens, params: [id] })) - const balances = await api.multiCall({ calls, abi: abis.balances }) - - balances.forEach(([collateral, debt], i) => { - const [base, quote] = parts[i][1] - if (borrowed) api.add(quote, debt) - else { - api.add(quote, -debt); - api.add(base, collateral); - } - }) -} - -const getVaultTvl = async (api, contango, graphUrl, block) => { - const { data } = await axios.post(graphUrl, { query: graphQueries.asset, variables: { lastId: "0", block } }); - const vault = await api.call({ abi: "address:vault", target: contango }); - await api.sumTokens({ owner: vault, tokens: data.data.assets.map(({ id }) => id) }); -} - -const tvl = async (api) => { - const { contango, contango_lens, graphUrl, excludedIds = [] } = config[api.chain] - const block = await api.getBlock() - 3_000 - await getPositionsTvl(api, contango_lens, graphUrl, false, block, excludedIds) - await getVaultTvl(api, contango, graphUrl, block) -} - -const borrowed = async (api) => { - const { contango_lens, graphUrl, excludedIds = [] } = config[api.chain] - const block = await api.getBlock() - 3_000 - await getPositionsTvl(api, contango_lens, graphUrl, true, block, excludedIds) -} - -module.exports = { - hallmarks: [[1729036800, "Affected by the Radiant hack"]], - doublecounted: true, - methodology: `Counts the tokens locked in the positions to be used as margin + user's tokens locked in the protocol's vault. Borrowed coins are discounted from the TVL, so only the position margins are counted. The reason behind this is that the protocol only added the user's margin to the underlying money market. Adding the borrowed coins to the TVL can be used as a proxy for the protocol's open interest.`, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl, borrowed } -}) \ No newline at end of file diff --git a/projects/contango/index.js b/projects/contango/index.js deleted file mode 100644 index 546dd90a853..00000000000 --- a/projects/contango/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs") -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -const config = { - arbitrum: { - ladle: '0x93343c08e2055b7793a3336d659be348fc1b08f9', - fromBlock: 129978, - }, - ethereum: { - ladle: '0x30E7348163016B3b6E1621A3Cb40e8CF33CE97db', - fromBlock: 16074982, - }, -} - -Object.keys(config).forEach(chain => { - const { ladle, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const block = api.block - const cauldron = await sdk.api2.abi.call({ - target: ladle, - abi: 'address:cauldron', - chain, block, - }) - - const logs = await getLogs({ - api, target: cauldron, fromBlock, - topic: 'IlkAdded(bytes6,bytes6)', eventAbi: abis.IlkAdded, - }) - const ilkIds = logs.map((log) => log.args.ilkId) - - const joins = await sdk.api2.abi.multiCall({ - target: ladle, - calls: ilkIds, - abi: abis.joins, - chain, block, - }) - const tokens = await sdk.api2.abi.multiCall({ - abi: 'address:asset', - calls: joins, - chain, block, - }) - const tokensAndOwners = joins.map((t, i) => ([tokens[i], t])) - return sumTokens2({ chain, block, tokensAndOwners, }) - } - } -}) - -const abis = { - joins: "function joins(bytes6) view returns (address)", - IlkAdded: "event IlkAdded(bytes6 indexed seriesId, bytes6 indexed ilkId)", -} \ No newline at end of file diff --git a/projects/contrax-finance/index.js b/projects/contrax-finance/index.js deleted file mode 100644 index 4ad4b22c7cb..00000000000 --- a/projects/contrax-finance/index.js +++ /dev/null @@ -1,103 +0,0 @@ -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", - // Peapods Vaults - "0x92781a20B6447F304E72321ed4BC8ca4349b3739", - "0x91805fD2cB80ad57379842630a569aC6D72E1B47", - "0x7f9E71e0d829619b5445073d034927347cf0e3eA", - "0xAFbC45a9aaaD39aC26dC4D2Cc32Dc4187d897eCa", - "0x483a461745e4245D5B7Be0BBFb580940d6a4F52a", - "0x0fC2106678F73cFe2D7C09631c05E6eB079EF36A", -]; -const HOP_MAGIC_VAULT = "0x2d79B76841191c9c22238535a93Ee8169096A5Cc"; -const GMX_VAULT = "0x8CdF8d10ea6Cd3492e67C4250481A695c2a75C4a"; -const GMX = ADDRESSES.arbitrum.GMX; -const STEER_VAULTS = [ - "0x404148F0B94Bc1EA2fdFE98B0DbF36Ff3E015Bb5", - "0x84f35729fF344C76FA73989511735c85E1F7487D", - "0x79deCB182664B1E7809a7EFBb94B50Db4D183310", - "0x4fFD588241Fa9183f5cDd57C4CACCac3817A380d", -]; - -async function getHopMagicData(api) { - const [tokenAddress, balance] = await Promise.all([ - api.call({ abi: "function token() view returns (address token)", target: HOP_MAGIC_VAULT,params: [] }), - api.call({ abi: "uint256:balance", target: HOP_MAGIC_VAULT }) - ]) - api.add(tokenAddress, balance); -} - -async function getSteerData(api) { - const tokens = await api.multiCall({ abi: "address:token", calls: STEER_VAULTS }); - const [token0s, token1s, supplies, reserves, bals] = await Promise.all([ - api.multiCall({ abi: "address:token0", calls: tokens }), - api.multiCall({ abi: "address:token1", calls: tokens }), - api.multiCall({ abi: "uint256:totalSupply", calls: tokens }), - api.multiCall({ - abi: "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", - calls: tokens, - }), - api.multiCall({ - abi: "uint256:balance", - calls: STEER_VAULTS, - permitFailure: true - }), - ]); - - - for (const [i, bal] of bals.entries()) { - if (!bal) continue - const ratio = bal / supplies[i]; - const token0Bal = reserves[i][0] * ratio; - const token1Bal = reserves[i][1] * ratio; - api.addToken(token0s[i], token0Bal); - api.addToken(token1s[i], token1Bal); - } -} - -async function getGMXData(api) { - const balance = await api.call({ - abi: "uint256:balance", - target: GMX_VAULT, - }); - api.add(GMX, balance); -} - -async function tvl(api) { - const [tokens, bals] = await Promise.all([ - api.multiCall({ abi: "address:token", calls: Vaults }), - api.multiCall({ abi: "uint256:balance", calls: Vaults }), - getHopMagicData(api), - getGMXData(api), - getSteerData(api) - ]) - - // const bals = await api.multiCall({ - // abi: "erc20:balanceOf", - // calls: tokens.map((t, i) => ({ target: targets[i], params: [t] })), - // }); - - 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/convergence-fi/index.js b/projects/convergence-fi/index.js deleted file mode 100644 index 140814ebf06..00000000000 --- a/projects/convergence-fi/index.js +++ /dev/null @@ -1,82 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const tower = "0xB0Afc8363b8F36E0ccE5D54251e20720FfaeaeE7"; -const viewer = "0xA3A8cDA21f50b6737385E46FC9495a9998B05Ff0"; -const CVG = "0x97efFB790f2fbB701D88f89DB4521348A2B77be8"; - -const stkCVGETH = "0x4b3Bd8906083bDE267A79E4131AF7a6f723960c8"; -const stkCVGCVGSDT = "0x865E59EBc3EE9EdD5656cD79b382f5153E466545"; -const cvgCVX = "0x2191DF768ad71140F9F3E96c1e4407A4aA31d082"; - -const abi = { - getSdtStakings: `function getSdtStakings(uint256 _cursorStart, uint256 _lengthDesired) view returns (tuple(address stakingContract, string stakingName)[])`, - getGlobalViewCvgSdtStaking: - "function getGlobalViewCvgSdtStaking(address _stakingContract) view returns (tuple(address cvgSdt, address stakingAddress, uint256 cvgCycle, uint256 previousTotal, uint256 actualTotal, uint256 nextTotal) globalViewCvgSdtStaking)", - staking_token: "function staking_token() view returns (address)", - token: "function token() view returns (address)", -}; - -const getSdtStakingsAddresses = async (api, tower, limit) => { - const addresses = await api.call({ - target: tower, - params: [0, limit], - abi: abi.getSdtStakings, - }); - - return addresses.map(({ stakingContract }) => stakingContract); -}; - -const getsdtStakingViews = async (api, viewer, sdtStakings) => { - const stakingdatasRes = await api.multiCall({ - target: viewer, - calls: sdtStakings, - abi: abi.getGlobalViewCvgSdtStaking, - }); - - const stakingDatas = stakingdatasRes.map(({ cvgSdt, actualTotal }) => ({ - staking: cvgSdt, - balance: actualTotal, - })); - - const stakingTokens = await api.multiCall({ - calls: stakingDatas.map(({ staking }) => ({ target: staking })), - abi: abi.staking_token, - }); - - - const deeperUnwrapTokens = await api.multiCall({ - calls: stakingTokens, - abi: abi.token, - permitFailure: true, - }); - - return deeperUnwrapTokens.map((deeperToken, index) => { - const token = deeperToken ?? stakingTokens[index]; - const balance = stakingDatas[index].balance; - api.add(token, balance); - }); -}; - -const tvl = async (api) => { - const getSdtStakings = await getSdtStakingsAddresses(api, tower, 1000); - await getsdtStakingViews(api, viewer, getSdtStakings); - api.removeTokenBalance(CVG); - return sumTokens2({ api, resolveLP: true }); -}; - -const staking = async (api) => { - return api.sumTokens({ - token: CVG, - owners: [stkCVGETH, stkCVGCVGSDT, cvgCVX], - }); -}; - -module.exports = { - doublecounted: true, - methodology: - "TVL represents the values deposited in each of the StakeDao and Convex strategies", - ethereum: { - tvl, - staking, - }, -}; diff --git a/projects/convergence/index.js b/projects/convergence/index.js deleted file mode 100644 index ad534ffc33d..00000000000 --- a/projects/convergence/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ETH_FACTORY = '0x4eef5746ED22A2fD368629C1852365bf5dcb79f1'; -const MOONBEAM_FACTORY = '0x9504d0d43189d208459e15c7f643aac1abe3735d'; -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - start: '2021-05-17', //2021-05-17 00:00:00 +UTC - misrepresentedTokens: true, - ethereum: { - tvl: getUniTVL({ - factory: ETH_FACTORY, - useDefaultCoreAssets: true, - }) - }, - moonbeam: { - tvl: getUniTVL({ - factory: MOONBEAM_FACTORY, - useDefaultCoreAssets: true, - }) - } -}; \ No newline at end of file diff --git a/projects/convex/abi.json b/projects/convex/abi.json deleted file mode 100644 index e69d39d9b29..00000000000 --- a/projects/convex/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/convex/index.js b/projects/convex/index.js deleted file mode 100644 index c7587613e32..00000000000 --- a/projects/convex/index.js +++ /dev/null @@ -1,116 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const ABI = require('./abi.json') -const { stakings } = require('../helper/staking'); - -const boosterAddresses = { - fraxtal: '0xd3327cb05a8E0095A543D582b5B3Ce3e19270389', - default: '0xF403C135812408BFbE8713b5A23a04b3D48AAE31', -}; - -const staker = '0x989aeb4d175e16225e39e87d0d97a3360524ad80' -const cvxRewardsAddress = "0xCF50b810E57Ac33B91dCF525C6ddd9881B139332"; -const cvxLockerAddress = ADDRESSES.ethereum.vlCVX; - -const arbiPoolInfoABI = 'function poolInfo(uint256) view returns (address lptoken, address gauge, address rewards, bool shutdown, address factory)' - -async function tvl(chain, block) { - const balances = {} - let abiPoolInfo = ABI.poolInfo - - if (chain === 'ethereum') { - //cvxcrv supply - const { output: crvLocked } = await sdk.api.abi.call({ - target: '0x5f3b5dfeb7b28cdbd7faba78963ee202a494e2a2', // veCRV - params: staker, - abi: 'erc20:balanceOf', block, - }) - sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.CRV, crvLocked) - - //cvxfxs supply - const { output: fxsLocked } = await sdk.api.abi.call({ - target: '0xc8418af6358ffdda74e09ca9cc3fe03ca6adc5b0', // veFXS - params: '0x59cfcd384746ec3035299d90782be065e466800b', // Convex Frax vote proxy - abi: 'erc20:balanceOf', block, - }) - sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.FXS, fxsLocked) - - //cvxprisma supply - const { output: [prismaLocked] } = await sdk.api.abi.call({ - target: '0x3f78544364c3eCcDCe4d9C89a630AEa26122829d', // PRISMA locker - params: '0x8ad7a9e2B3Cd9214f36Cb871336d8ab34DdFdD5b', // Convex Prisma vote proxy - abi: 'function getAccountBalances(address) view returns (uint256, uint256)', block, - }) - sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.PRISMA, prismaLocked * 1e18) - - //cvxfxn supply - const { output: fxnLocked } = await sdk.api.abi.call({ - target: '0xEC6B8A3F3605B083F7044C0F31f2cac0caf1d469', // veFXN - params: '0xd11a4Ee017cA0BECA8FA45fF2abFe9C6267b7881', // Convex F(x) vote proxy - abi: 'erc20:balanceOf', block, - }) - sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.FXN, fxnLocked) - } else { - if (chain === 'fraxtal') { - //cvxfxs supply on fraxtal - const { output: fxsLockedFraxtal } = await sdk.api.abi.call({ - target: '0x007FD070a7E1B0fA1364044a373Ac1339bAD89CF', // veFXS - params: '0x59CFCD384746ec3035299D90782Be065e466800B', // Convex Frax Fraxtal vote proxy - abi: 'erc20:balanceOf', block, chain - }) - sdk.util.sumSingleBalance(balances, ADDRESSES.fraxtal.WFRAX, fxsLockedFraxtal, chain) - } - - abiPoolInfo = arbiPoolInfoABI - } - - const poolInfo = await sdk.api2.abi.fetchList({ - chain, - block, - lengthAbi: ABI.poolLength, - itemAbi: abiPoolInfo, - target: boosterAddresses[chain] ?? boosterAddresses.default, - }) - - const { output: gaugeBalances } = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - calls: Array.from(new Set(poolInfo.map(p => p.gauge))).map(i => ({ target: i, params: staker })), - chain, - block, - }) - - gaugeBalances.forEach(({ output, input }, i) => { - sdk.util.sumSingleBalance(balances, chain + ':' + poolInfo.find(p => p.gauge.toLowerCase() === input.target.toLowerCase()).lptoken, output) - }) - - return balances -} - -const chains = [ - 'ethereum', - 'arbitrum', - 'polygon', - 'fraxtal', -] - -module.exports = { - doublecounted: true, - hallmarks: [ - [1640164144, "cvxFXS Launched"], - [1642374675, "MIM depeg"], - [1651881600, "UST depeg"], - [1654822801, "stETH depeg"], - [1667692800, "FTX collapse"], - [1690715622, "Curve reentrancy hack"], - [1695705887, "cvxFXN Launched"], - [1698409703, "cvxPRISMA Launched"], - ] -}; - -chains.forEach(chain => { - module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => tvl(chain, block) - } -}) - -module.exports.ethereum.staking = stakings([cvxLockerAddress, cvxRewardsAddress], ADDRESSES.ethereum.CVX) diff --git a/projects/cookfinance/index.js b/projects/cookfinance/index.js deleted file mode 100644 index 52d649be675..00000000000 --- a/projects/cookfinance/index.js +++ /dev/null @@ -1,185 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking.js"); -const { pool2, pool2s } = require("../helper/pool2"); -const yieldyakAbi = require("./yieldyakAbi.json"); -const alpacaFinanceAbi = require("../alpaca-finance/abi.json"); -const BigNumber = require("bignumber.js"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getSymbols } = require('../helper/utils') - -const stakingContractHeco = "0xF0979F9692966D110E39d82a44655c9934F5cC73"; -const COOK_heco = "0x74189862b069e2be5f7c8e6ff08ea8e1b1948519"; - -const stakingPool2ContractHeco = "0x275FC87A40222977E4E28Fd846e8CB9d80Add258"; -const ETH_COOK_HMDXLP = "0x9275637737b56004312E50be0eaB20b7A20eAF3a"; - -const cookToken = "0xFF75CEd57419bcaEBe5F05254983b013B0646eF5"; -const stakingPool = "0xcAFb07CCB524C957c835Be287f75c6F92db79CA3"; - -const ethPool2LPs = [ - "0xbdfe29d9e42ea541c581eef6cf3a2bb27b51e2c4", // COOK-ETH -]; - -const bscPool2LPs = [ - "0x48E29cacd1186A3264E9cfBaAc632c5Cb1F2df60", // COOK-BNB -]; - -const avaxPool2LPs = [ - "0x3fcd1d5450e63fa6af495a601e6ea1230f01c4e3", // Trader Joe COOK-WAVAX - "0xf7ff4fb01c3c1ab0128a79953cd8b47526292fb2", // Pangolin COOK-WAVAX -]; - -const ethIndexes = [ - "0xA6156492fC79616035F644C71b01e3099819F8EC", // CLI - "0x43633bDb2675aDaB99CE3059D734b92a1deDAb2b", // EDI -]; - -const getComponentsABI = "address[]:getComponents" -const getCKsABI = "address[]:getCKs" - -async function getTvl({ chain, block, indices }) { - const indexCalls = indices.map(i => ({ target: i })) - const { output: components } = await sdk.api.abi.multiCall({ - abi: getComponentsABI, - calls: indexCalls, - block, chain, - }) - - const tokensAndOwners = [] - components.forEach(({ output }, i) => { - output.forEach(t => tokensAndOwners.push([t, indices[i]])) - }) - - return sumTokens2({ tokensAndOwners, block, chain, }) - -} - -async function ethTvl(timestamp, block) { - return getTvl({ indices: ethIndexes }) -} - -async function avaTvl(timestamp, ethBlock, chainBlocks) { - const block = chainBlocks.avax; - const chain = 'avax' - const CONTROLLER_ADDRESS = "0xE565711e7a59800e110c959E156121988E6F4704"; - let { output: avaIndexes } = await sdk.api.abi.call({ - target: CONTROLLER_ADDRESS, - abi: getCKsABI, - chain, block, - }); - const balances = await getTvl({ indices: avaIndexes, chain, block, }) - Object.entries(balances).forEach(([token, balance]) => { - delete balances[token] - balances[token.toLowerCase()] = balance - }) - - const symbols = await getSymbols(chain, Object.keys(balances)) - const calls = [] - const balanceCalls = [] - Object.entries(symbols).forEach(([token, symbol]) => { - if (symbol && symbol.startsWith('YRT')) { - calls.push({ target: token }) - balanceCalls.push({ target: token, params: [balances['avax:' + token]] }) - } - }) - const [ - { output: token }, - { output: newBalance }, - ] = await Promise.all([ - sdk.api.abi.multiCall({ abi: yieldyakAbi.depositToken, calls, chain, block, }), - sdk.api.abi.multiCall({ abi: yieldyakAbi.getDepositTokensForShares, calls: balanceCalls, chain, block, }), - ]) - - token.forEach(({ output, input }, i) => { - const origToken = `avax:${input.target}` - const balance = newBalance[i].output - delete balances[origToken] - sdk.util.sumSingleBalance(balances, 'avax:' + output, balance) - }) - - return balances -} - -async function bscTvl(timestamp, ethBlock, chainBlocks) { - const block = chainBlocks.bsc; - const chain = 'bsc' - const CONTROLLER_ADDRESS = "0x822aeB433A4Ea7A97b76287cB513C3985034a2Bd"; - let { output: bscIndexes } = await sdk.api.abi.call({ - target: CONTROLLER_ADDRESS, - abi: getCKsABI, - chain: "bsc", - block, - }); - - const balances = await getTvl({ indices: bscIndexes, chain, block, }) - // const symbols = await getSymbols(chain, Object.keys(balances)) - const calls = [] - // Object.entries(symbols).forEach(([token, symbol]) => { - // if (symbol.startsWith('ib')) calls.push({ target: token }) - // }) - const [ - { output: token }, - { output: totalToken }, - { output: totalSupply }, - ] = await Promise.all([ - sdk.api.abi.multiCall({ abi: alpacaFinanceAbi.token, calls, chain, block, }), - sdk.api.abi.multiCall({ abi: alpacaFinanceAbi.totalToken, calls, chain, block, }), - sdk.api.abi.multiCall({ abi: alpacaFinanceAbi.totalSupply, calls, chain, block, }), - ]) - - token.forEach(({ output, input }, i) => { - const origToken = `bsc:${input.target}` - const origBalance = balances[origToken] - if (!origBalance) { - return; - } - const totalT = totalToken[i].output - const totalS = totalSupply[i].output - const balance = BigNumber(origBalance).times(totalT).idiv(totalS).toFixed(0) - delete balances[origToken] - sdk.util.sumSingleBalance(balances, 'bsc:' + output, balance) - }) - - return balances -} - -module.exports = { - methodology: - "TVL are the tokens locked into the index contracts. Pool2 are the tokens locked into DEX LP. Staking are the tokens locked into the active staking contract.", - ethereum: { - tvl: ethTvl, - pool2: staking( - ["0x4b21da40dd8d9f4363e69a9a1620d7cdb49123be"], - ethPool2LPs, - "ethereum" - ), - staking: staking(stakingPool, cookToken), - }, - avax: { - tvl: avaTvl, - pool2: staking(["0x35be7982bc5e40a8c9af39a639bddce32081102e", "0x188bED1968b795d5c9022F6a0bb5931Ac4c18F00"], avaxPool2LPs), - staking: staking( - "0x35bE7982bC5E40A8C9aF39A639bDDcE32081102e", - "0x637afeff75ca669ff92e4570b14d6399a658902f", - "avax", - //"avax:0x637afeff75ca669ff92e4570b14d6399a658902f" - ), - }, - bsc: { - pool2: staking( - ["0x47b517061841e6bFaaeB6336C939724F47e5E263"], - bscPool2LPs, - "bsc" - ), - staking: staking( - "0x1Abeaa9D633162586a4c80389160c33327C9Aff5", - "0x965b0df5bda0e7a0649324d78f03d5f7f2de086a", - "bsc" - ), - tvl: bscTvl, - }, - heco: { - staking: staking(stakingContractHeco, COOK_heco), - pool2: pool2(stakingPool2ContractHeco, ETH_COOK_HMDXLP), - }, -}; diff --git a/projects/cookfinance/venusFinanceAbi.json b/projects/cookfinance/venusFinanceAbi.json deleted file mode 100644 index bf41dfa67d1..00000000000 --- a/projects/cookfinance/venusFinanceAbi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "underlying": "address:underlying", - "exchangeRateStored": "uint256:exchangeRateStored" -} \ No newline at end of file diff --git a/projects/cookfinance/yieldyakAbi.json b/projects/cookfinance/yieldyakAbi.json deleted file mode 100644 index 8abf8a7fbf2..00000000000 --- a/projects/cookfinance/yieldyakAbi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "depositToken": "address:depositToken", - "getDepositTokensForShares": "function getDepositTokensForShares(uint256 amount) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/cookiebase-farm/index.js b/projects/cookiebase-farm/index.js deleted file mode 100644 index 848b493e559..00000000000 --- a/projects/cookiebase-farm/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "base", - masterchef: "0x0544b381F24eaC255ED1e2Ab2a67f10D2502921a", - nativeTokens: ["0x614747C53CB1636b4b962E15e1D66D3214621100"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); \ No newline at end of file diff --git a/projects/cookiebase/index.js b/projects/cookiebase/index.js deleted file mode 100644 index a10ad9d8b3a..00000000000 --- a/projects/cookiebase/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - base: { tvl: getUniTVL({ factory: '0x05b00D63DbC67874ad44d039213b7DAfB999d184', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/copra-finance/index.js b/projects/copra-finance/index.js deleted file mode 100644 index e4609bc5a69..00000000000 --- a/projects/copra-finance/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { getLogs, } = require("../helper/cache/getLogs"); - -async function tvl(api) { - const { factory, fromBlock } = config[api.chain]; - - // V1 - const logs = await getLogs({ - api, - target: factory, - onlyArgs: true, - eventAbi: 'event CreditAccountDeployed (address indexed creditAccount)', - fromBlock, - }) - const creditAccounts = logs.map((i) => i.creditAccount) - const status = await api.multiCall({ abi: 'function getStatus() view returns (uint8)', calls: creditAccounts }) - const activeCreditAccounts = creditAccounts.filter((_, i) => status[i] == 0 || status[i] == 1) - const v1Tokens = (await api.multiCall({ abi: 'function getTerms() view returns (uint256 tenor, uint256 principalAmount, uint256 interestAmount, uint256 securityDepositAmount, address token)', calls: activeCreditAccounts })).map(i => i.token) - const lenderAmounts = await api.multiCall({ abi: 'uint256:getTotalFundedPrincipalAmount', calls: activeCreditAccounts }) - const borrowerAmounts = await api.multiCall({ abi: 'uint256:getBorrowerFundedAmount', calls: activeCreditAccounts }) - api.add(v1Tokens, lenderAmounts) - api.add(v1Tokens, borrowerAmounts) - - // V2 - const copraRegistryAddr = "0x10D3362BBf04427126c807d28665fA4Da5fBDF14" - const [v2LiquidityWarehouses] = await api.multiCall({ abi: 'address[]:getLiquidityWarehouses', calls: [copraRegistryAddr]}) - const v2Tokens = (await api.multiCall({ abi: 'function getTerms() view returns (address asset, address feeRecipient, uint64 liquidationThreshold, uint64 capacityThreshold, uint64 interestRate, uint64 interestFee, uint64 withdrawalFee)', calls: v2LiquidityWarehouses })).map(i => i.asset) - const v2NetAssetValues = await api.multiCall({ abi: "uint256:getNetAssetValue", calls: v2LiquidityWarehouses}) - api.add(v2Tokens, v2NetAssetValues) -} - -const config = { - arbitrum: { - factory: "0x2eaA3A5223FCb7A9EeC3bFCD399A4c479c6008f6", - fromBlock: 183991616, - }, -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/copump/index.js b/projects/copump/index.js deleted file mode 100644 index 14347eb128d..00000000000 --- a/projects/copump/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const config = { - core: '0xbEF63121a00916d88c4558F2a92f7d931C67115B', - sonic: '0xbEF63121a00916d88c4558F2a92f7d931C67115B', - sophon: '0x66Ae13488b281C0aCf731b8D7970E069b673df00', - morph: '0x045AF95cAAbB5971183C411aBd7c81F2E122706D', - celo: '0x797357F76042D76523848eF9ABb5e2e5c1aF1655', - soneium: '0x1C0F98d9fE946d42f44196C439256BcfEe80B056', - scroll: '0x809c2C530c35Dd0a8877e1EEf139fd60d9b811Eb', - linea: '0xA74e55412Ffb46747dd45eeFdb68BF1366205036', - taiko: '0x95e483Ce4acf1F24B6cBD8B369E0735a3e56f5BB', -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ owner: config[chain], tokens: [nullAddress] }) - } -}) \ No newline at end of file diff --git a/projects/core-bridge/index.js b/projects/core-bridge/index.js deleted file mode 100644 index 1b3d41eb854..00000000000 --- a/projects/core-bridge/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const owners = ['0x52e75D318cFB31f9A2EdFa2DFee26B161255B233', '0x4D73AdB72bC3DD368966edD0f0b2148401A178E2'] -const owner = '0x29d096cD18C0dA7500295f082da73316d704031A' - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners, - fetchCoValentTokens: true, - permitFailure: true - }), - }, - bsc: { - tvl: (api) => - sumTokens2({ - api, - owners, - fetchCoValentTokens: true, - permitFailure: true - }), - }, - polygon: { - tvl: (api) => - sumTokens2({ - api, - owners, - fetchCoValentTokens: true, - permitFailure: true - }), - }, - optimism: { - tvl: (api) => - sumTokens2({ - api, - owner, - fetchCoValentTokens: true, - permitFailure: true - }), - }, - avax: { - tvl: (api) => - sumTokens2({ - api, - owner, - fetchCoValentTokens: true, - permitFailure: true - }), - }, - arbitrum: { - tvl: (api) => - sumTokens2({ - api, - owner, - fetchCoValentTokens: true, - permitFailure: true - }), - }, - base: { - tvl: (api) => - sumTokens2({ - api, - owner: '0x84FB2086Fed7b3c9b3a4Bc559f60fFaA91507879', - fetchCoValentTokens: true, - permitFailure: true - }), - }, -}; diff --git a/projects/core-earn/index.js b/projects/core-earn/index.js deleted file mode 100644 index ef1dfdc74fc..00000000000 --- a/projects/core-earn/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const Earn = "0xf5fA1728bABc3f8D2a617397faC2696c958C3409"; - -async function tvl(api) { - let amount = await api.call({ abi: "uint256:getTotalDelegateAmount", target: Earn }) - api.addGasToken(amount) -} - -module.exports = { - methodology: "Total Core staking Value.", - core: { tvl, }, -} \ No newline at end of file diff --git a/projects/core-markets/index.js b/projects/core-markets/index.js deleted file mode 100644 index 19a2e5d3879..00000000000 --- a/projects/core-markets/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { request, } = require("graphql-request"); - -const graphUrl = "https://api.studio.thegraph.com/query/62472/core-analytics-082/version/latest"; - -const BETA_START = 236678; - -const query = ` - query stats($from: String!, $to: String!) { - dailyHistories( - where: { timestamp_gte: $from, timestamp_lte: $to, accountSource: "0xd6ee1fd75d11989e57B57AA6Fd75f558fBf02a5e" } - ) { - timestamp - platformFee - accountSource - tradeVolume - deposit - withdraw - } - } -`; - -async function getTVL(api) { - const { dailyHistories } = await request(graphUrl, query, { - from: BETA_START.toString(), - to: api.timestamp.toString(), - }); - - const total = dailyHistories.reduce((acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), 0); - api.add(ADDRESSES.blast.USDB, total) -} - -module.exports = { - timetravel: false, - start: BETA_START, - blast: { tvl: getTVL }, -}; diff --git a/projects/core-powercity-io/index.js b/projects/core-powercity-io/index.js deleted file mode 100644 index fe231a9b4f7..00000000000 --- a/projects/core-powercity-io/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens.js"); - -const CORE_STAKER = "0xa42BadB71271e9A460ED93C501308ECaab770c37"; -const WATT_TOKEN = "0xDfdc2836FD2E63Bba9f0eE07901aD465Bff4DE71"; -const WATT_PLS_LP = "0x956f097E055Fa16Aad35c339E17ACcbF42782DE6"; - -module.exports = { - start: '2023-12-12', - methodology: "No external tokens/coins staked/locked. Only protocol token WATT and WATT-PLS-LP staked within protocol.", - pulse: { - tvl: async () => ({}), - staking: sumTokensExport({ owner: CORE_STAKER, tokens: [WATT_TOKEN], lps: [WATT_PLS_LP], useDefaultCoreAssets: true, }), - pool2: sumTokensExport({ owner: CORE_STAKER, tokens: [WATT_PLS_LP], useDefaultCoreAssets: true, }), - } -} \ No newline at end of file diff --git a/projects/core/index.js b/projects/core/index.js deleted file mode 100644 index 8fef789e5ae..00000000000 --- a/projects/core/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') - -// cVault UniV2 pairs -const CORE_WETH_V2 = '0x32Ce7e48debdccbFE0CD037Cc89526E4382cb81b' // CORE/WETH - LP1 -const CORE_CBTC_V2 = '0x6fad7D44640c5cd0120DEeC0301e8cf850BecB68' // CORE/cBTC - LP2 -const COREDAI_WCORE_V2 = '0x01AC08E821185b6d87E68c67F9dc79A8988688EB' // coreDAI/wCORE - LP3 -const CORE_FANNY_V2 = '0x85d9dcce9ea06c2621795889be650a8c3ad844bb' // CORE/FANNY - -// Delta Sushi Pairs -const DELTA_ETH_SSLP = '0x1498bd576454159bb81b5ce532692a8752d163e8' // DELTA/ETH - sushiLP - -// ERC95 Tokens -const COREBTC = '0x7b5982dcAB054C377517759d0D2a3a5D02615AB8' // cBTC -const COREDAI = '0x00a66189143279b6DB9b77294688F47959F37642' // coreDAI -const WCORE = '0x17B8c1A92B66b1CF3092C5d223Cb3a129023b669' // wCORE - -// ERC20 Tokens -const COREDAO = '0xf66cd2f8755a21d3c8683a10269f795c0532dd58' // coreDAO -const DAI = ADDRESSES.ethereum.DAI // DAI -const DELTA = '0x9EA3b5b4EC044b70375236A281986106457b20EF' // DELTA -const FANNY = '0x8ad66f7e0e3e3dc331d3dbf2c662d7ae293c1fe0' // FANNY -const CORE = '0x62359ed7505efc61ff1d56fef82158ccaffa23d7' // CORE -const DELTA_RLP = '0xfcfc434ee5bff924222e084a8876eee74ea7cfba' // DELTA rLP -const WETH = ADDRESSES.ethereum.WETH // wETH -const USDC = ADDRESSES.ethereum.USDC -const USDT = ADDRESSES.ethereum.USDT -const WBTC = ADDRESSES.ethereum.WBTC - -// Ecosystem contracts -const CORE_DEPLOYER = '0x5a16552f59ea34e44ec81e58b3817833e9fd5436' // CoreVault Deployer/Multisig -const CORE_VAULT_PROXY = '0xc5cacb708425961594b63ec171f4df27a9c0d8c9' // -const CORE_LGE_2 = '0xf7ca8f55c54cbb6d0965bc6d65c43adc500bc591' // CORE LGE 2 -const CLEND = '0x54B276C8a484eBF2a244D933AF5FFaf595ea58c5' // cLEND -const LP_WRAPPER = '0xe508a37101fce81ab412626ee5f1a648244380de' // LP Migration Wrapper -const FANNY_VAULT = '0xbb791bc6106e4d949863e2ab76fc01ac0a9d7816' // Fanny Vault -const DELTA_DFV = '0x9fe9bb6b66958f2271c4b0ad23f6e8dda8c221be' // Delta Deep Farming Vault -const DELTA_STABLE_YIELD = '0x3554fc4998f83967dcab5b2ef858e8e63fefbd26' // Delta StableYield -const DELTA_LSW = '0xdaFCE5670d3F67da9A3A44FE6bc36992e5E2beaB' // Delta LSW -const DELTA_DISTRIBUTOR = '0xF249C5B422758D91d8f05E1Cc5FC85CF4B667461' // Delta Distributor -const DELTA_MULTISIG = '0xB2d834dd31816993EF53507Eb1325430e67beefa' // Delta Multisig - -async function treasury(_, block){ - const tokensAndOwners = [ - [nullAddress, CORE_DEPLOYER], - [DAI, CORE_DEPLOYER], - [USDC, CORE_DEPLOYER], - [CORE_CBTC_V2, CORE_LGE_2], - [DAI, LP_WRAPPER], - [WETH, DELTA_LSW], - [USDT, DELTA_LSW], - [WETH, DELTA_DISTRIBUTOR], - [WETH, DELTA_MULTISIG], - [CORE_WETH_V2, DELTA_MULTISIG], - ] - return sumTokens2({ block, tokensAndOwners, }) -} - -async function tvl(_, block){ - const tokensAndOwners = [ - [WETH, DELTA_DFV], - [DAI, CLEND], - [WBTC, COREBTC], - [DAI, COREDAI], - [DELTA_ETH_SSLP, DELTA_RLP], - ] - return sumTokens2({ block, tokensAndOwners, }) -} - -async function staking(_, block){ - const tokensAndOwners = [ - [COREDAO, CORE_VAULT_PROXY], - [DELTA, DELTA_DFV], - // [DELTA_RLP, DELTA_DFV], - [CORE, FANNY_VAULT], - // [FANNY, FANNY_VAULT], - [DELTA, DELTA_STABLE_YIELD], - ] - return sumTokens2({ block, tokensAndOwners }) -} - -module.exports = { - ethereum: - { - start: '2020-09-26', // 2020-09-26 17:46:46 (UTC), - tvl, - treasury, - staking, - // ownTokens: ['CORE', 'CoreDAO', 'Delta', 'FANNY', 'Delta rLP', 'cBTC', 'cDAI'] - } -}; diff --git a/projects/corepound/index.js b/projects/corepound/index.js deleted file mode 100644 index 5bdeb192c6a..00000000000 --- a/projects/corepound/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const { abi } = require("@defillama/sdk/build/api"); -const { sumTokens2 } = require("../helper/unwrapLPs") - -const aggregator = "0xF822226491a93046DA650ecb4049E43386497C7D"; -const solvBtcMFarmAddress = "0x915Be1EC1153F3Eaef16629fE7fb532b777159AC" -const solvBtcCoreFarmAddress = "0x6b0365A2217A5Ad90bF220e1Cd4F62d29736ED1D" -const coreDaoFarmAddress = "0x6A76Bc0830Ed39763f2b3d79105A763243d7b310" -const wbtcFarmAddress = "0xC4f303eA6e29eB25Df1e09DF687C91E48376ABeE" -const coreDaoFarmAddress2 = "0x63aD89C392b69ba92C0d36741d030d039Ed5DB16" -const solvBtcBFarmAddress = "0xc2039CD91B597ECe076EF6d4f205B874983B0256" -const ahmFarmAddress1 = "0x82Addbf89c790009BaE95B5234A4DE2A88179AFb" -const projectToken = "0x56663F56333717A32Cd91ec41182d6d76D98864e"; - - -const lpInfos = [ -{ - lpAddress:"0xd8F1C33D35CB471681385598D456D49c56Ed2D51", - farmAddress:"0x7E0B85612bB5E7AE0448100D1C2E011FDA53C9F6", - token0:"0x900101d06A7426441Ae63e9AB3B9b0F63Be145F1", - token0Decimals:6, - token1:"0xa4151B2B3e269645181dCcF2D426cE75fcbDeca9", - token1Decimals:6 -}, - { - lpAddress:"0xeE2c1703d96443fF0B2C3bC7166b4a6e792B5A97", - farmAddress:"0x66Bcd683a337D1e1939Eb38C10Ad2C49304cc69D", - token0:"0x191E94fa59739e188dcE837F7f6978d84727AD01", - token0Decimals:18, - token1:"0xc5555eA27e63cd89f8b227deCe2a3916800c0f4F", - token1Decimals:18,} -] - -const abis = { - getTotalTvl: "function getTotalTvl() view returns (tuple(uint256 pid, address assets, uint256 tvl)[])", - safelyGetStateOfAMM:"function safelyGetStateOfAMM() external view returns (uint160 sqrtPriceX96,int24 tick,uint16 observationIndex,uint16 observationCardinality,uint16 observationCardinalityNext,uint8 feeProtocol,bool unlocked)", - getAllNftInfo: "function getAllNFTInfo() view returns (tuple(uint256 nftId, int24 tickUpper, int24 tickLower, uint128 liquidity,uint256 tvlWeight)[] briefs)" -} - -async function tvl(api) { - - const pools = (await api.multiCall({ calls: [aggregator, solvBtcMFarmAddress, solvBtcCoreFarmAddress,coreDaoFarmAddress,wbtcFarmAddress,coreDaoFarmAddress2,solvBtcBFarmAddress,ahmFarmAddress1], abi: abis.getTotalTvl })).flat() - pools.forEach(({ assets, tvl }) => { api.add(assets, tvl) }) - await sumTokens2({ api, resolveLP: true }) - await tvlLp(api) - api.removeTokenBalance(projectToken) - } - - async function tvlLp(api){ - const slot0s = await api.multiCall({calls:lpInfos.map(item=>item.lpAddress),abi:abis.safelyGetStateOfAMM}) - const allNftInfos = await api.multiCall({calls:lpInfos.map(item=>item.farmAddress),abi:abis.getAllNftInfo}) - - for(let i =0;i= tickUpper){ - amount1 = liquidity * (tickUpperPrice - tickLowerPrice) - }else{ - let sp = 1.0001 ** (tick/2) - amount0 = liquidity * (tickUpperPrice - sp) / (sp * tickUpperPrice) - amount1 = liquidity * (sp - tickLowerPrice) - } - api.add(token0,amount0) - api.add(token1,amount1) - } - - } - } - - async function staking(api) { - const pools = await api.call({ abi: abis.getTotalTvl, target: aggregator }); - const target = pools.find((i) => i.assets === projectToken); - api.add(projectToken, target.tvl); - return api.getBalances(); - } - - module.exports = { - core: { tvl, staking } - }; diff --git a/projects/coreswap/index.js b/projects/coreswap/index.js deleted file mode 100644 index 6ab1aec4343..00000000000 --- a/projects/coreswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x97814a1F542aFe7fd02de53926621b0D40e8Ad6C', - }) - } -} \ No newline at end of file diff --git a/projects/corexswap/index.js b/projects/corexswap/index.js deleted file mode 100644 index 56068b34ef3..00000000000 --- a/projects/corexswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const factory = "0x526190295AFB6b8736B14E4b42744FBd95203A3a"; - -module.exports = uniV3Export({ - core: { factory, fromBlock: 14045524 }, -}); \ No newline at end of file diff --git a/projects/corgi/abi.js b/projects/corgi/abi.js deleted file mode 100644 index 4a9cfe72360..00000000000 --- a/projects/corgi/abi.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - poolInfo2: "function poolInfo2(uint256 _pid) view returns (address lpToken, uint256 allocPoint, address strat0, uint256 amount0, uint256 share0, address strat1, uint256 amount1, uint256 share1)", - poolLength: "uint256:poolLength", -} \ No newline at end of file diff --git a/projects/corgi/index.js b/projects/corgi/index.js deleted file mode 100644 index ca2948a7edc..00000000000 --- a/projects/corgi/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { deadFrom } = require("../mosquitos-finance"); - -module.exports = { - dogechain: { - tvl: () => ({}), - }, - hallmarks: [ - [1662859935, "Rug pull"], - ], - deadFrom: 1662859935 -} \ No newline at end of file diff --git a/projects/corgiswap.js b/projects/corgiswap.js deleted file mode 100644 index c7a1445a49c..00000000000 --- a/projects/corgiswap.js +++ /dev/null @@ -1,15 +0,0 @@ -const { stakingPricedLP } = require("./helper/staking"); -const { getUniTVL } = require('./helper/unknownTokens') -const factory = "0x632F04bd6c9516246c2df373032ABb14159537cd" - -const corisToken = '0x2a2cd8b1f69eb9dda5d703b3498d97080c2f194f' -const masterChef = '0x60E5Cf9111d046E8F986fC98e37d6703607d5Baf' - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://corgiswap.info/ as the source. Staking accounts for the CORIS locked in MasterChef (0x60E5Cf9111d046E8F986fC98e37d6703607d5Baf)', - bsc: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), - staking: async ()=>({}) // CORIS returning an incorrect staking value locked - }, -} diff --git a/projects/cork-v1/index.js b/projects/cork-v1/index.js deleted file mode 100644 index 25c22c03c03..00000000000 --- a/projects/cork-v1/index.js +++ /dev/null @@ -1,124 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs2 } = require('../helper/cache/getLogs'); -const { nullAddress } = require("../helper/tokenMapping"); - -const SKIP_CACHE = true - -// from https://docs.cork.tech/smart-contracts/v1/live-deployments -const config = { - ethereum: { - factory: [ - "0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", - "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88", - "0x55B90B37416DC0Bd936045A8110d1aF3B6Bf0fc3", - - ], fromBlock: 21840338 - }, - // optimism: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 130947675 }, - // base: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 25350988 }, - // arbitrum: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 297842872 }, - // polygon: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 66980384 }, - // blast: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 14377311 }, - // zora: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 25434534 }, - // wc: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 9111872 }, - // ink: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 4580556 }, - // soneium: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 2473300 }, - // avax: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 56195376 }, - // bsc: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 45970610 }, - // unichain: { factory: ["0xCCd90F6435dd78C4ECCED1FA4db0D7242548a2a9", "0x5287E8915445aee78e10190559D8Dd21E0E9Ea88"], fromBlock: 1 }, -} - -const eventAbi1 = "event InitializedModuleCore(bytes32 indexed id, address indexed pa, address indexed ra, address lv, uint256 expiry, uint256 initialArp, address exchangeRateProvider)" -const eventAbi2 = "event Issued(bytes32 indexed id, uint256 indexed dsId, uint256 indexed expiry, address ds, address ct, bytes32 raCtUniPairId)" -const eventAbi3 = "event Initialized(address indexed ra, address indexed ct, address liquidityToken)" - -module.exports = { - methodology: 'TVL accounts for all assets deposited into the Cork smart contracts.', - hallmarks: [ - [1741100400, "Cork V1 Launch"], - // ['2025-05-28', "Protocol's wstETH:weETH market was exploited"], - ], -} - -Object.keys(config).forEach(chain => { - const { factory: [poolManager, ammHook, router], fromBlock } = config[chain] - module.exports[chain] = { - /** - * Calculates the total value locked (TVL) across the platform's contracts. - * - Fetches logs from the factory contract to identify relevant tokens. - * - Extracts unique external token addresses from logs. - * - Uses sumTokens2 to aggregate TVL data. - * - * @param {Object} api - API object providing blockchain access. - * @returns {Promise} Total value locked (TVL) balances. - */ - tvl: async (api) => { - // Redemption Assets (RA) in Cork AMM pools - const logs3 = await getLogs2({ api, factory: ammHook, eventAbi: eventAbi3, fromBlock, skipCache: SKIP_CACHE, }) - const tokens = logs3.map(({ ra }) => ra) // RA - const calls = logs3.map(({ ra, ct }) => ({ - target: ammHook, - params: [ra, ct], - })) - const bals = await api.multiCall({ - abi: 'function getReserves(address token0, address token1) external view returns (uint256 reserve0, uint256 reserve1)', - calls, - }) - api.addTokens(tokens, bals.map(({ reserve0 }) => reserve0)) - - // Redemption Assets (RA) and Pegged Assets (PA) in Cork PSM pools - const logs1 = await getLogs2({ api, factory: poolManager, eventAbi: eventAbi1, fromBlock, skipCache: SKIP_CACHE, }) - const tokenSet = new Set() - const ownerTokens = [] - logs1.forEach(log => { - tokenSet.add(log.pa) // RA - tokenSet.add(log.ra) // PA - // if (log.lv !== nullAddress) { - // ownerTokens.push([[log.pa, log.ra], log.lv]) - // } - }) - ownerTokens.push([Array.from(tokenSet), poolManager]) - return sumTokens2({ api, ownerTokens, permitFailure: true, }) - }, - - /** - * Calculates LP tokens (where one side of the market is the platform's own token) - * locked or staked in the platform's contracts. - * - Fetches logs for liquidity pools. - * - Extracts LP tokens from logs. - * - Uses sumTokens2 to aggregate the Pool2 balances. - * - * @param {Object} api - API object providing blockchain access. - * @returns {Promise} Pool2 balances. - */ - // pool2: async (api) => { - // // Only LP tokens in Cork Vault pools - // const logs3 = await getLogs2({ api, factory: ammHook, eventAbi: eventAbi3, fromBlock, skipCache: SKIP_CACHE, }) - // const lpTokens = [] - // logs3.forEach(log => lpTokens.push(log.liquidityToken)) // LPT - // const stakingContracts = [poolManager] - // return sumTokens2({ api, tokens: lpTokens, owners: stakingContracts, resolveLP: false, }) - // }, - - /** - * Calculates the platform's own tokens locked or staked - * in the platform's contracts. - * - Fetches staking-related logs from core and hook contracts. - * - Extracts the platform's own tokens from logs. - * - Uses sumTokens2 to aggregate the Staking balances. - * - * @param {Object} api - API object providing blockchain access. - * @returns {Promise} Staking balances. - */ - // staking: async (api) => { - // // Depeg Swap (DS), Cover Token (CT) and Custom LP tokens in Cork Vault & Router pools - // const logs2 = await getLogs2({ api, factory: poolManager, eventAbi: eventAbi2, fromBlock, skipCache: SKIP_CACHE, }) - // const logs3 = await getLogs2({ api, factory: ammHook, eventAbi: eventAbi3, fromBlock, skipCache: SKIP_CACHE, }) - // const stakingTokens = [] - // logs2.forEach(log => stakingTokens.push(log.ds, log.ct)) // DS & CT - // logs3.forEach(log => stakingTokens.push(log.liquidityToken)) // LPT - // const stakingContracts = [poolManager, router] - // await sumTokens2({ api, tokens: stakingTokens, owners: stakingContracts, resolveLP: false, }) - // }, - } -}) diff --git a/projects/corn-l2/index.js b/projects/corn-l2/index.js deleted file mode 100644 index 1b170f48512..00000000000 --- a/projects/corn-l2/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: [ - "0x8bc93498b861fd98277c3b51d240e7e56e48f23c", - "0x6d85d1c7f58fd5d05b1b633e8b0ce2e57fca9d80", - ], - fetchCoValentTokens: true, - permitFailure: true - }), - }, -}; diff --git a/projects/cortexdao/index.js b/projects/cortexdao/index.js deleted file mode 100644 index 93f325de22a..00000000000 --- a/projects/cortexdao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require("../helper/staking"); - -const cxdAddress = "0x5a56da75c50aa2733f5fa9a2442aaefcbc60b2e6"; -const stakingAddress = "0x6021D8e7537d68bCEC9A438b2C134c24Cbcc1ce3"; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(stakingAddress, cxdAddress), - }, - hallmarks: [ - [1651881600, "UST depeg"], - [1678557600, "USDC depeg"], - ], -}; diff --git a/projects/coslend/index.js b/projects/coslend/index.js deleted file mode 100644 index 68f8b21fe9b..00000000000 --- a/projects/coslend/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { compoundExports2 } = require("../helper/compound") -module.exports = { - evmos: compoundExports2({ comptroller: "0x5b32B588Af5F99F4e5c4038dDE6BDD991024F650" }), -} diff --git a/projects/cotiTreasury.js b/projects/cotiTreasury.js deleted file mode 100644 index 2cac3fe8a0e..00000000000 --- a/projects/cotiTreasury.js +++ /dev/null @@ -1,15 +0,0 @@ -const http = require("./helper/http"); - -async function staking() { - return { - 'coti': Number((await http.get("https://treasury-app.coti.io/get-total")).totalCotiInPool).toFixed(0), - }; -} - -module.exports = { - timetravel: false, - coti: { - tvl: async ()=> ({}), - staking, - } -}; diff --git a/projects/cougarswap/index.js b/projects/cougarswap/index.js deleted file mode 100644 index 53b60dcfb2a..00000000000 --- a/projects/cougarswap/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -// --- BSC Addresses --- -const MasterChefContractBsc = "0x8E934F14bD904A46e0C8aF7de6aEeAaaa0D8C2c5"; -const CGS_Bsc = "0x26d88b1e61e22da3f1a1ba95a1ba278f6fcef00b"; - -// --- Polygon Addresses --- -const MasterChefContractPolygon = "0x9bFcf65e7De424a6D89Eef23B3dF8cdc965c654F"; -const CGS_Polygon = "0x047fD3B3D2366F9babe105ade4598E263d6c699c"; - -// --- Fantom Addresses --- -const MasterChefContractFantom = "0x1CA27c8f19EF84F5f5A9cf2E2874E4Bf91fD38C4"; -const CGS_Fantom = "0x5a2e451fb1b46fde7718315661013ae1ae68e28c"; - -// --- Harmony Addresses --- -const MasterChefContractHarmony = "0x1357521115A4dAA6524045215ac7F979e64d6079"; -const CGS_Harmony = "0x6cc35220349c444c39b8e26b359757739aaec952"; - -// --- Avalanche Addresses --- -const MasterChefContractAvax = "0xa127A67D1429B3f8d33a4E0398347661c3737a12"; -const CGS_Avax = "0x727C43b707C6Fe3ACD92f17EFAC8e05476DFa81c"; - -// --- Cronos Addresses --- -const MasterChefContractCronos = "0x07586393ed706e5dBf637195d8cf22F5844F234e"; -const CGS_Cronos = "0x4e57e27e4166275Eb7f4966b42A201d76e481B03"; - -// --- Moonbeam Addresses --- -const MasterChefContractMoonbeam = "0xc5C772e21A39f88f0960172016Cf455Da6fF52Af"; -const CGS_Moonbeam = "0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F"; - -// --- Arbitrum Addresses --- -const MasterChefContractArbitrum = "0xd619f601404a2406b5d93f6ff9A9465BbBDA73cc"; -const CGS_Arbitrum = "0x5cb91B0b2d2C80c7104b04E134B43b89b4d2f98A"; - - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(MasterChefContractBsc, "bsc", CGS_Bsc), - ...masterChefExports(MasterChefContractPolygon, "polygon", CGS_Polygon), - ...masterChefExports(MasterChefContractFantom, "fantom", CGS_Fantom), - ...masterChefExports(MasterChefContractHarmony, "harmony", CGS_Harmony), - ...masterChefExports(MasterChefContractAvax, "avax", CGS_Avax), - ...masterChefExports(MasterChefContractCronos, "cronos", CGS_Cronos, false), - ...masterChefExports(MasterChefContractMoonbeam, "moonbeam", CGS_Moonbeam, false), - ...masterChefExports(MasterChefContractArbitrum, "arbitrum", CGS_Arbitrum, false), - methodology: - "TVL includes all Farms and Pools seccion through MasterChef Contracts" -}; diff --git a/projects/counterstake/index.js b/projects/counterstake/index.js deleted file mode 100644 index 5381de0ab9a..00000000000 --- a/projects/counterstake/index.js +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Counterstake is a permissionless and fully decentralized cross-chain bridge. - * - * @see https://counterstake.org/ - */ -const { - fetchBaseAABalances, - fetchOstableAssets, - fetchOstableExchangeRatesInUSD, - fetchOswapAssets, - fetchOswapExchangeRates, - summingBaseAABalancesToTvl, -} = require('../helper/chain/obyte'); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -async function bridgeTvl(timestamp, assetMetadata, exchangeRates) { - const baseAABalances = await Promise.all([ - fetchBaseAABalances(timestamp, "DAN6VZNKNZBKJP7GYJST5FMONZOY4FNT"), // export - fetchBaseAABalances(timestamp, "HNAFSLWSZDU2B2PLFIUNRZLGS4F2AUIL"), // import - ]) - - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) -} - -async function pooledAssistantTvl(timestamp, assetMetadata, exchangeRates) { - const baseAABalances = await Promise.all([ - fetchBaseAABalances(timestamp, "WKGC4O5UPW37XEGQKXPINIXFAXHTYHKL"), // export assitant - fetchBaseAABalances(timestamp, "HLSRAK6LGDXLNGXUCB5Z43NCZMVLYTJU"), // import assistant - ]) - - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) -} - -async function governanceTvl(timestamp, assetMetadata, exchangeRates) { - const baseAABalances = await Promise.all([ - fetchBaseAABalances(timestamp, "HLNWXGGHGXWMZN27W2722MNJCHH2IVAO"), // export governance - fetchBaseAABalances(timestamp, "KDHCTQOTKTO6MLYOCU6OCBI7KK72DV3P"), // import governance - fetchBaseAABalances(timestamp, "VIKQXIULRJF7WATTAID2BB6YD6FRMZCF"), // pooled assistant governance - ]) - - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) -} - -/** - * Calculates TVL on the Obyte side of the cross-chain bridge. The calculated TVL contains: - * - the temporary stakes held in GBYTE for cross-chain transfers, - * - exported Obyte assets such as GBYTE or OUSD that are held in custody by the bridge - * - imported foreign chain assets (the Obyte version of those) held in pooled assistants as a buffer for faster transfers - */ -async function totalObyteTvl(timestamp) { - // Fetch Ostable assets because it makes sense to export those Obyte assets to other chains - // Fetch Oswap assets because pooled import assistants hold imported foreign assets to speed up user transfers form foreign chains - const [ostableAssetMetadata, ostableExchangeRates, oswapAssetMetadata, oswapExchangeRates] = await Promise.all([ - fetchOstableAssets(), - fetchOstableExchangeRatesInUSD(), - fetchOswapAssets(), - fetchOswapExchangeRates() - ]) - - const assetMetadata = { ...oswapAssetMetadata, ...ostableAssetMetadata } - const exchangeRates = { ...oswapExchangeRates, ...ostableExchangeRates } - - const tvls = await Promise.all([ - bridgeTvl(timestamp, assetMetadata, exchangeRates), - pooledAssistantTvl(timestamp, assetMetadata, exchangeRates), - governanceTvl(timestamp, assetMetadata, exchangeRates) - ]); - - return { - tether: tvls.reduce((total, tvl) => total + tvl, 0) - } -} - -const totalTVLByEVMNetwork = async (api) => { - const bridges = await getConfig('counterstake/bridges', 'https://counterstake.org/api/bridges').then((data) => data.data); - const pooledAssistants = await getConfig('counterstake/poolStakes', 'https://counterstake.org/api/pooled_assistants').then((data) => data.data.assistants); - - const bridgeAasByChain = []; - const tokensAndOwners = [] - - bridges.forEach(({ home_network, foreign_network, export_aa, import_aa, stake_asset, home_asset }) => { - if (home_network.toLowerCase() === api.chain) { // export - tokensAndOwners.push([home_asset, export_aa]) - bridgeAasByChain.push(export_aa); - } else if (foreign_network.toLowerCase() === api.chain) { // import - tokensAndOwners.push([stake_asset, import_aa]) - bridgeAasByChain.push(import_aa); - } - }); - - - pooledAssistants.filter(({ network }) => network.toLowerCase() === api.chain).forEach(({ assistant_aa, side, bridge_id }) => { - const bridge = bridges.find((bridge) => bridge.bridge_id === bridge_id); - - if (bridge) { - if (side === 'import') { - // stake asset - tokensAndOwners.push([bridge.stake_asset, assistant_aa]) - // imported asset - // tokensAndOwners.push([bridge.foreign_asset, assistant_aa]) - - } else { // export - tokensAndOwners.push([bridge.home_asset, assistant_aa]) - } - } - - }); - - const governanceAddresses = await api.multiCall({ - abi: 'address:governance', - calls: bridgeAasByChain, - }); - - const voteTokenAddresses = await api.multiCall({ - abi: 'address:votingTokenAddress', - calls: governanceAddresses, - }); - - bridgeAasByChain.forEach((_, index) => { - const voteTokenAddress = voteTokenAddresses[index]; - const governanceAddress = governanceAddresses[index]; - tokensAndOwners.push([voteTokenAddress, governanceAddress]) - }); - const blacklistedTokens = [] - if (api.chain === 'kava') { - // okay, no way line has a tvl of 12m when it is backed by 60k? https://linetoken.org https://github.com/DefiLlama/DefiLlama-Adapters/blob/main/projects/line/index.js - blacklistedTokens.push('0x31f8d38df6514b6cc3c360ace3a2efa7496214f6') - } - return sumTokens2({ api, tokensAndOwners }); -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: - "The TVL is the USD value of the assets locked into the autonomous agents that extend the Counterstake protocol. " + - "This includes the value of exported assets held in the custody of cross-chain bridges, the stakes of cross-chain transfers, " + - "pooled assistant buffers and value stored for governance.", - obyte: { - tvl: totalObyteTvl - }, - ethereum: { - tvl: totalTVLByEVMNetwork - }, - bsc: { - tvl: totalTVLByEVMNetwork - }, - polygon: { - tvl: totalTVLByEVMNetwork - }, - kava: { - tvl: totalTVLByEVMNetwork - } -} diff --git a/projects/coup-farm/index.js b/projects/coup-farm/index.js deleted file mode 100644 index 9c9a420707a..00000000000 --- a/projects/coup-farm/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const token = "0xb2f9a4380ebca7e057db0c4572b7ac90c353ce7d"; -const masterchef = "0x5b37fE841b505CEa35Fe93A6c080b5930a8155c0"; - -module.exports = { - ...masterChefExports(masterchef, "avax", token, false) -} \ No newline at end of file diff --git a/projects/coupon-finance/index.js b/projects/coupon-finance/index.js deleted file mode 100644 index 52c1909fc1c..00000000000 --- a/projects/coupon-finance/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const CONTRACT_INFOS = { - arbitrum: { - substituteContract: { - abi: { - underlyingToken: 'function underlyingToken() external view returns (address)' - }, - }, - assetPoolContract: { - address: '0xBA4B7f0Dd297C68Ca472da58CfE1338B9E7A0D9e', - fromBlock: 150536505, - }, - bondPositionManagerContract: { - address: '0x0Cf91Bc7a67B063142C029a69fF9C8ccd93476E2', - fromBlock: 150536528, - abi: { - registerEvent: 'event RegisterAsset(address indexed asset)', - }, - }, - loanPositionManagerContract: { - address: '0x03d65411684ae7B5440E11a6063881a774C733dF', - fromBlock: 150536540, - abi: { - setLoanConfigurationEvent: 'event SetLoanConfiguration(address indexed collateral, address indexed debt, uint32 liquidationThreshold, uint32 liquidationFee, uint32 liquidationProtocolFee, uint32 liquidationTargetLtv, address hook)', - }, - } - } -} - -async function tvl(api) { - const chain = api.chain - const CONTRACT_INFO = CONTRACT_INFOS[chain] - const [registerEvents, setLoanConfigurationEvents] = await Promise.all([ - getLogs({ - api, - target: CONTRACT_INFO.bondPositionManagerContract.address, - fromBlock: CONTRACT_INFO.bondPositionManagerContract.fromBlock, - eventAbi: CONTRACT_INFO.bondPositionManagerContract.abi.registerEvent, - onlyArgs: true, - }), - getLogs({ - api, - target: CONTRACT_INFO.loanPositionManagerContract.address, - fromBlock: CONTRACT_INFO.loanPositionManagerContract.fromBlock, - eventAbi: CONTRACT_INFO.loanPositionManagerContract.abi.setLoanConfigurationEvent, - onlyArgs: true, - }), - ]) - const substituteTokens = [...new Set([ - ...registerEvents.map(({ asset }) => asset), - ...setLoanConfigurationEvents.map(({ collateral, debt }) => [collateral, debt]).flat(), - ])] - const [underlyingTokens, balances] = await Promise.all([ - api.multiCall({ - abi: CONTRACT_INFO.substituteContract.abi.underlyingToken, - calls: substituteTokens, - }), - api.multiCall({ - abi: 'erc20:totalSupply', - calls: substituteTokens, - }) - ]) - api.addTokens(underlyingTokens, balances) - return api.getBalances() -} - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - methodology: "TVL consists of deposit and collateral in the Coupon Finance contract", - arbitrum: { - tvl, - }, -}; diff --git a/projects/cove-boosties/index.js b/projects/cove-boosties/index.js deleted file mode 100644 index 53ce8a0a5db..00000000000 --- a/projects/cove-boosties/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const yearnStakingDelegate = "0x05dcdBF02F29239D1f8d9797E22589A2DE1C152F"; -const factory = "0x842b22Eb2A1C1c54344eDdbE6959F787c2d15844"; -const veYfi = "0x90c1f9220d90d3966FbeE24045EDd73E1d588aD5"; -const getAllGaugeInfoAbi = "function getAllGaugeInfo(uint256 limit, uint256 offset) view returns ((address yearnVaultAsset, address yearnVault, bool isVaultV2, address yearnGauge, address coveYearnStrategy, address autoCompoundingGauge, address nonAutoCompoundingGauge)[])" - -async function tvl(api) { - // Yearn Gauge tokens deposited in YearnStakingDelegate, receiving veYFI boost - /** @type {{yearnVaultAsset: string, yearnVault: string, isVaultV2: boolean, yearnGauge: string, coveYearnStrategy: string, autoCompoundingGauge: string, nonAutoCompoundingGauge: string}[]} */ - const gaugeInfos = await api.call({ target: factory, abi: getAllGaugeInfoAbi, params: [100, 0] }); - - await unwrapYearnGaugeToken({ api, gaugeInfos, }); - await countVeYfi(api); -} - -async function unwrapYearnGaugeToken({ api, gaugeInfos }) { - const gaugeInfoVaultsV2 = gaugeInfos.filter((i) => i.isVaultV2); - const gaugeInfoVaultsV3 = gaugeInfos.filter((i) => !i.isVaultV2); - - const gaugeTokenBalancesV2 = await api.multiCall({ - abi: "erc20:balanceOf", - calls: gaugeInfoVaultsV2.map((i) => ({ - target: i.yearnGauge, - params: yearnStakingDelegate, - })), - }); - - const gaugeTokenBalancesV3 = await api.multiCall({ - abi: "erc20:balanceOf", - calls: gaugeInfoVaultsV3.map((i) => ({ - target: i.yearnGauge, - params: yearnStakingDelegate, - })), - }); - // Assume gaugeTokenBalances is equal to vault token balance - // If isVaultV2 is true, use `function pricePerShare() returns (uint256)` to convert vault token balance to asset balance - // If isVaultV2 is false, use `function convertToAssets(uint256) returns (uint256)` to convert vault token balance to asset balance - const vaultV2AssetBalances = await api.multiCall({ - abi: "function pricePerShare() returns (uint256)", - calls: gaugeInfoVaultsV2.map((i) => ({ target: i.yearnVault })), - }) - - vaultV2AssetBalances.map((bal, i) => { - api.add(gaugeInfoVaultsV2[i].yearnVaultAsset, gaugeTokenBalancesV2[i] * bal / 1e18) - }); - const vaultV3AssetBalances = await api.multiCall({ - abi: "function convertToAssets(uint256) returns (uint256)", - calls: gaugeInfoVaultsV3.map((info, i) => ({ - target: info.yearnVault, - params: gaugeTokenBalancesV3[i] - })), - }); - api.add(gaugeInfoVaultsV3.map(i => i.yearnVaultAsset), vaultV3AssetBalances) -} - -async function countVeYfi(api) { - // YFI is max locked, therefore we can use the veYFI balanceOf as the YFI balance - const veYfiBalance = await api.call({ - abi: "erc20:balanceOf", - target: veYfi, - params: yearnStakingDelegate, - }); - api.addTokens(ADDRESSES.ethereum.YFI, veYfiBalance); -} - -module.exports = { - ethereum: { tvl }, -}; diff --git a/projects/cove/index.js b/projects/cove/index.js deleted file mode 100644 index 833a492609e..00000000000 --- a/projects/cove/index.js +++ /dev/null @@ -1,137 +0,0 @@ -const basketManager = "0x716c39658Ba56Ce34bdeCDC1426e8768E61912f8"; -const basketTokensAbi = "function basketTokens() view returns (address[])"; -const basketAssetsAbi = "function basketAssets(address basket) view returns (address[])"; -const basketBalanceOfAbi = "function basketBalanceOf(address basket, address asset) view returns (uint256)"; - -const RECURSIVE_4626_LIST = [ - '0x81f78DeF7a3a8B0F6aABa69925efC69E70239D95', // ysyG-yvUSDS-1 -]; - -// Get the tvl of all baskets deployed by Cove -async function tvl(api) { - const basketTokens = await api.call({ target: basketManager, abi: basketTokensAbi }); - const basketAssets = await api.multiCall({ - abi: basketAssetsAbi, - calls: basketTokens.map((token) => ({ target: basketManager, params: [token] })), - }); - - // Create calls for each basket-asset pair - const calls = []; - basketTokens.forEach((basketToken, i) => { - basketAssets[i].forEach((asset) => { - calls.push({ target: basketManager, params: [basketToken, asset] }); - }); - }); - - const basketBalances = await api.multiCall({ - abi: basketBalanceOfAbi, - calls: calls, - }); - - // Group basket balances by asset - let callIndex = 0; - const assetBalances = {}; - basketTokens.forEach((_, i) => { - basketAssets[i].forEach((asset) => { - const balance = basketBalances[callIndex]; - if (balance && balance > 0) { - assetBalances[asset] = (assetBalances[asset] || 0n) + BigInt(balance); - } - callIndex++; - }); - }); - - // Add balances and handle special tokens that need recursive unwrapping - const recursiveTokens = {}; - const directTokens = {}; - - for (const [asset, balance] of Object.entries(assetBalances)) { - if (RECURSIVE_4626_LIST.includes(asset)) { - recursiveTokens[asset] = balance; - } else { - directTokens[asset] = balance; - } - } - - // Add direct tokens - for (const [asset, balance] of Object.entries(directTokens)) { - api.add(asset, balance); - } - - // Recursively unwrap nested tokens - if (Object.keys(recursiveTokens).length > 0) { - await unwrap4626RecursiveBatch(api, recursiveTokens); - } -} - -// Recursively unwrap ERC-4626 tokens in batches until we reach the underlying assets -async function unwrap4626RecursiveBatch(api, tokensAndBalances, depth = 0) { - // Prevent infinite recursion - if (depth > 10 || Object.keys(tokensAndBalances).length === 0) { - for (const [token, balance] of Object.entries(tokensAndBalances)) { - api.add(token, balance); - } - return; - } - - const tokens = Object.keys(tokensAndBalances); - - // Batch call to get underlying assets - const underlyingAssets = await api.multiCall({ - abi: "function asset() view returns (address)", - calls: tokens, - permitFailure: true - }); - - // Prepare calls for convertToAssets - const convertCalls = []; - const vaultsToUnwrap = {}; - const baseAssets = {}; - - tokens.forEach((token, i) => { - if (underlyingAssets[i]) { - convertCalls.push({ - target: token, - params: [tokensAndBalances[token]] - }); - vaultsToUnwrap[token] = underlyingAssets[i]; - } else { - // Not a vault, add to base assets - baseAssets[token] = tokensAndBalances[token]; - } - }); - - // Add base assets - for (const [token, balance] of Object.entries(baseAssets)) { - api.add(token, balance); - } - - if (convertCalls.length === 0) return; - - // Batch call to convert balances - const underlyingBalances = await api.multiCall({ - abi: "function convertToAssets(uint256) view returns (uint256)", - calls: convertCalls - }); - - // Prepare next iteration - const nextTokensAndBalances = {}; - let callIndex = 0; - for (const [vaultToken, underlyingToken] of Object.entries(vaultsToUnwrap)) { - const underlyingBalance = underlyingBalances[callIndex++]; - if (nextTokensAndBalances[underlyingToken]) { - nextTokensAndBalances[underlyingToken] = - (BigInt(nextTokensAndBalances[underlyingToken]) + BigInt(underlyingBalance)).toString(); - } else { - nextTokensAndBalances[underlyingToken] = underlyingBalance; - } - } - - // Recursive call for next level - await unwrap4626RecursiveBatch(api, nextTokensAndBalances, depth + 1); -} - - -module.exports = { - ethereum: { tvl }, -}; diff --git a/projects/cover.js b/projects/cover.js deleted file mode 100644 index 7599462a055..00000000000 --- a/projects/cover.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const abis = { - cover: { - getProtocolDetails: "function getProtocolDetails() view returns (bytes32 _name, bool _active, uint256 _claimNonce, uint256 _claimRedeemDelay, uint256 _noclaimRedeemDelay, address[] _collaterals, uint48[] _expirationTimestamps, address[] _allCovers, address[] _allActiveCovers)", - }, - protocols: { - getAllProtocolAddresses: "address[]:getAllProtocolAddresses", - } -} - - -async function tvl(api) { - let factory = '0xedfC81Bf63527337cD2193925f9C0cF2D537AccA' - const allProtocols = await api.call({ abi: abis.protocols.getAllProtocolAddresses, target: factory }) - const details = await api.multiCall({ abi: abis.cover.getProtocolDetails, calls: allProtocols }) - const tokens = [ADDRESSES.ethereum.DAI, '0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01'] - const owners = details.map(i => i._allCovers).flat() - return api.sumTokens({ owners, tokens }) -} - - -module.exports = { - ethereum: { - tvl - } -} diff --git a/projects/covo-finance/index.js b/projects/covo-finance/index.js deleted file mode 100644 index b675f27a81c..00000000000 --- a/projects/covo-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - polygon: { - tvl: gmxExports({ vault: '0x22F688efeFB9c158De4FD62F2C9c08BF79542030', }) - }, -} diff --git a/projects/covo-v2/index.js b/projects/covo-v2/index.js deleted file mode 100644 index 5e33071e655..00000000000 --- a/projects/covo-v2/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const fundStore = "0xED29cB1b164dd7EA1c5065E79a15dA31EC34327B"; -const covo = "0x681D3e1b54B3E1a338feB5B076cebf53a697d51F"; - -module.exports = { - polygon: { - tvl: sumTokensExport({ owners: [fundStore], tokens: [ - nullAddress, - ADDRESSES.polygon.USDC,//USDC - ]}), - staking: sumTokensExport({ owners: [fundStore], tokens: [covo]}) - }, -} diff --git a/projects/cowaii-cash/index.js b/projects/cowaii-cash/index.js deleted file mode 100644 index 4f1b27a8bca..00000000000 --- a/projects/cowaii-cash/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { unknownTombs, } = require('../helper/unknownTokens') - -const chain = 'dogechain' -const token = "0xB483CbF402eF2B07060544e4aA4c5690fea32B12"; -const shares = "0xc90163b8d53F319AbE68dd1d8ecC025c72eB3f04"; -const shareRewardPool = "0xb015d1D4F846D44A699F5648071496D1eC99C4C5"; -const masonry = "0x0eD8cFA5Bd631263CFAb290E12e2559af1252Ed6"; - -const lps = [ - '0x517ae0a15932A57D27cE26AE97f5F9Dbc6823907', // COWAII-WDOGE LP - '0x2b779C9Ed23bb315911EEE910bc3FfAbFfB776bB', // MILK-WDOGE LP - // "0x77A86d9c3A7689cD6577a6FC433a19f7c1686198", // MILK-WWDOGE LP - // "0xe0d79F5Bc8e86E9123cA14937ca791128D013130", // COWAII-WWDOGE LP -] -module.exports = unknownTombs({ - lps, - token, - shares: [shares], - rewardPool: [shareRewardPool,], - masonry: [masonry], - chain, - useDefaultCoreAssets: true, -}) - -module.exports.misrepresentedTokens = true diff --git a/projects/cowswap-cash/index.js b/projects/cowswap-cash/index.js deleted file mode 100644 index 18f58b21c84..00000000000 --- a/projects/cowswap-cash/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') - - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: "The factory addresses are used to find the LP pairs on Smart BCH and Milkomeda. For Cardano we calculate the tokens on resting orders on the order book contracts. TVL is equal to the liquidity on the AMM plus the open orders in the order book", - smartbch: { - tvl: getUniTVL({ factory: '0x72cd8c0B5169Ff1f337E2b8F5b121f8510b52117', useDefaultCoreAssets: true }), - staking: stakingPricedLP("0x4856BB1a11AF5514dAA0B0DC8Ca630671eA9bf56", "0xc8E09AEdB3c949a875e1FD571dC4b3E48FB221f0", "smartbch", "0x599061437d8455df1f86d401FCC2211baaBC632D", "bitcoin-cash", false, 18) - }, - -} \ No newline at end of file diff --git a/projects/cozy-v2/index.js b/projects/cozy-v2/index.js deleted file mode 100644 index ae9f72887c5..00000000000 --- a/projects/cozy-v2/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getLogs, getAddress } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - optimism: {factory: '0xdebe19b57e8b7eb6ea6ebea67b12153e011e6447', fromBlock: 96818459,}, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const {factory, fromBlock} = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x1bf8fff61a482f21edcb49226d708f5255b3e06bb9c6485892a057058b494790'], - fromBlock, - }) - const tokensAndOwners = logs.map(i => [i.topics[1], i.data].map(getAddress)) - return sumTokens2({ api, tokensAndOwners}) - } - } -}) \ No newline at end of file diff --git a/projects/cozy/index.js b/projects/cozy/index.js deleted file mode 100644 index 431e97eda7a..00000000000 --- a/projects/cozy/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { compoundExports } = require('../helper/compound') - -module.exports = { - methodology: "Count tokens the same way we count for compound", - ethereum: compoundExports('0x895879b2c1fbb6ccfcd101f2d3f3c76363664f92') -} \ No newline at end of file diff --git a/projects/crETH2/index.js b/projects/crETH2/index.js deleted file mode 100644 index f89a2a2bb6e..00000000000 --- a/projects/crETH2/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const sdk = require("@defillama/sdk") -const token = '0x49d72e3973900a195a155a46441f0c08179fdb64' - -module.exports = { - ethereum: { - tvl: async (_, block) => ({ - ethereum: (await sdk.api.erc20.totalSupply({ target: token, block})).output/1e18 - }) - } -} \ No newline at end of file diff --git a/projects/crabada/index.js b/projects/crabada/index.js deleted file mode 100644 index 93166fcc302..00000000000 --- a/projects/crabada/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); - -const stakingContract = "0xD2cd7a59Aa8f8FDc68d01b1e8A95747730b927d3"; -const CRA = "0xa32608e873f9ddef944b24798db69d80bbb4d1ed"; - -module.exports = { - misrepresentedTokens: true, - avax: { - staking: staking(stakingContract, CRA), - tvl: () =>({}), - }, - methodology: - "Counts liquidty of the assets(USDC) deposited through Treasury Contract; also Staking and Treasury parts", -}; diff --git a/projects/crackandstack/index.js b/projects/crackandstack/index.js deleted file mode 100644 index 39d351216e3..00000000000 --- a/projects/crackandstack/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const CONTRACTS = ["0x2c301eBfB0bb42Af519377578099b63E921515B7", "0xD8F7cd7d919c5266777FB83542F956dD30E80187", "0x12689b6ddE632E69fBAA70d066f86aC9fDd33dd1"]; - -// Crack & Stack -// https://crackandstack.com/ -module.exports = { - methodology: `Crack & Stack TVL is the backed value of the Lanterns NFT.`, - taiko: { - tvl: sumTokensExport({ - owners: CONTRACTS, - tokens: [ADDRESSES.null, ADDRESSES.taiko.USDT, ADDRESSES.taiko.USDC_e, ADDRESSES.taiko.USDC, ADDRESSES.taiko.TAIKO] - }), - }, -} diff --git a/projects/crafting/index.js b/projects/crafting/index.js deleted file mode 100644 index 4ee4ec79c80..00000000000 --- a/projects/crafting/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const contractStakingETH = "0x9353177049757A21f19a28C3055c03871e6428cf"; - -const contractAddresses = [ - contractStakingETH, - //Staking Contract wbtc - "0xF70A76AfFD4c368eD16a2593C4D9FAee3562a4Ba", - //Staking Contract usdt - "0x321Fd763B8220b5697E41862AcAa41AeB1e2556d", - //Staking Contract bayc - "0xF70A76AfFD4c368eD16a2593C4D9FAee3562a4Ba", -]; - -const tokens = [ - ADDRESSES.null, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.USDT, - "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", -]; - -const contractAddresses_aurora = [ - //Staking Contract aurora - "0xB0D10De43eb7D6F43e376aA5dA9022A9baB4313C", - // Staking Contract near - "0x508df5aa4746bE37b5b6A69684DfD8BDC322219d", -]; - -const tokens_aurora = [ - ADDRESSES.aurora.AURORA, - ADDRESSES.aurora.NEAR, -]; - -async function ethTvl(api) { - await api.sumTokens({owners: contractAddresses, tokens: tokens}) -} - -async function auroraTvl(api) { - return api.sumTokens({owners: contractAddresses_aurora, tokens: tokens_aurora}) -} - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - aurora: { - tvl: auroraTvl, - }, - methodology: - "Counts tvl of all the Assets staked through Staking Contracts", -}; diff --git a/projects/cranium/index.js b/projects/cranium/index.js deleted file mode 100644 index 436893e489d..00000000000 --- a/projects/cranium/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - -const arbitrumVault = '0x76cA86C73CE0F03eac0052C4FC5eacdb10D9663f'; -const arbitrumStaking = '0x2b402AeDd4ccC193DC2A50c281Fb8945ddaD9760'; -const arbitrumGMX = '0xfa5992A8A47aF7029e04eC6a95203AD3f301460b'; - -module.exports = { - fantom: { - staking: staking(arbitrumStaking, arbitrumGMX), - tvl: gmxExports({ vault: arbitrumVault, }) - } -} \ No newline at end of file diff --git a/projects/cream/cerc20.json b/projects/cream/cerc20.json deleted file mode 100644 index a374cd8db91..00000000000 --- a/projects/cream/cerc20.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "getCash": "uint256:getCash", - "underlying": "address:underlying", - "totalBorrows": "uint256:totalBorrows", - "totalReserves": "uint256:totalReserves" -} \ No newline at end of file diff --git a/projects/cream/creth2.json b/projects/cream/creth2.json deleted file mode 100644 index 41916cd62c3..00000000000 --- a/projects/cream/creth2.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "accumulated": "uint256:accumulated" -} \ No newline at end of file diff --git a/projects/cream/index.js b/projects/cream/index.js deleted file mode 100644 index 049808e4a29..00000000000 --- a/projects/cream/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { compoundExports } = require("../helper/compound"); - -module.exports = { - // hallmarks: [[1635292800, "Flashloan exploit"]], - timetravel: false, // bsc and fantom api's for staked coins can't be queried at historical points - start: '2020-09-08', // 09/08/2020 @ 8:00am (UTC) - ethereum: compoundExports("0xbdC857eae1D15ad171E11af6FC3e99413Ed57Ec4"), - bsc: compoundExports( - "0x589DE0F0Ccf905477646599bb3E5C622C84cC0BA", - "0x1Ffe17B99b439bE0aFC831239dDECda2A790fF3A", - ADDRESSES.bsc.WBNB - ), - polygon: compoundExports("0x20ca53e2395fa571798623f1cfbd11fe2c114c24"), - arbitrum: compoundExports("0xbadaC56c9aca307079e8B8FC699987AAc89813ee"), - base: compoundExports("0x94d31f92a7f85b51F0B628467B3E660BA3e8D799"), -}; diff --git a/projects/creamswap/index.js b/projects/creamswap/index.js deleted file mode 100644 index b0d6eb9ab58..00000000000 --- a/projects/creamswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -async function tvl(api) { - let poolLogs = (await Promise.all([ - getLogs({ api, target: '0xf8062Eedf80D8D2527cE89435f670cb996aB4e54', topic: 'LOG_NEW_POOL(address,address)', fromBlock: 10815298, }), - getLogs({ api, target: '0x136d6F80Bb3A853D151686BFED2c9309Aea6dDec', topic: 'LOG_NEW_POOL(address,address)', fromBlock: 11053389, }), - getLogs({ api, target: '0x0d3303Ffaf107cD732396570Bf07b2dbd79B619f', topic: 'LOG_NEW_POOL(address,address)', fromBlock: 11099537, }) - ])).flat() - - let pools = poolLogs.map((poolLog) => `0x${poolLog.topics[2].slice(26)}`) - - const poolTokenData = await api.multiCall({ calls: pools, abi: "address[]:getCurrentTokens", }) - const ownerTokens = poolTokenData.map((v, i) => [v, pools[i]]) - return sumTokens2({ ownerTokens, api }) -} - -module.exports = { - start: '2020-09-08', // 09/08/2020 @ 8:00am (UTC) - ethereum: { tvl } -} diff --git a/projects/createDAO/config.js b/projects/createDAO/config.js deleted file mode 100644 index e26e8fd85e9..00000000000 --- a/projects/createDAO/config.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = { - ethereum: { - factoryAddress: '0x22f38c01222E07Efe0B7E0409EF9235B6Ab641d6', - fromBlock: 22787281, - }, - arbitrum: { - factoryAddress: '0x8d2D2fb9388B16a51263593323aBBDf80aee54e6', - fromBlock: 332502010, - }, - base: { - factoryAddress: '0x8d2D2fb9388B16a51263593323aBBDf80aee54e6', - fromBlock: 29738831, - }, - xdai: { - factoryAddress: '0x8d2D2fb9388B16a51263593323aBBDf80aee54e6', - fromBlock: 39871572, - }, - polygon: { - factoryAddress: '0x8d2D2fb9388B16a51263593323aBBDf80aee54e6', - fromBlock: 71053291, - }, - unichain: { - factoryAddress: '0x8d2D2fb9388B16a51263593323aBBDf80aee54e6', - fromBlock: 15510598, - }, - wc: { - factoryAddress: '0x8d2D2fb9388B16a51263593323aBBDf80aee54e6', - fromBlock: 13465076, - }, -}; diff --git a/projects/createDAO/index.js b/projects/createDAO/index.js deleted file mode 100644 index af9463a372c..00000000000 --- a/projects/createDAO/index.js +++ /dev/null @@ -1,145 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getLogs } = require('../helper/cache/getLogs'); -const config = require('./config'); - -// Event signatures -const DAO_CREATED_TOPIC = 'DAOCreated(address,address,address,address,string,string)'; -const PRESALE_DEPLOYED_TOPIC = 'PresaleDeployed(uint256,address,uint256,uint256)'; - -async function getDAOAddresses(api) { - const factoryAddress = config[api.chain].factoryAddress; - - // Ensure we have a valid block number - if (!api.block) { - await api.getBlock(); - } - - // Get all DAOs created through the factory - const daoLogs = await getLogs({ - api, - target: factoryAddress, - topic: DAO_CREATED_TOPIC, - eventAbi: 'event DAOCreated(address indexed daoAddress, address indexed tokenAddress, address indexed treasuryAddress, address stakingAddress, string name, string versionId)', - fromBlock: config[api.chain].fromBlock, - toBlock: api.block, - onlyArgs: true, - onlyUseExistingCache: !api.block, // Use cache only if we don't have current block - }); - - const daoAddresses = daoLogs.map(log => log.daoAddress); - const treasuryAddresses = daoLogs.map(log => log.treasuryAddress); - - console.log(`${api.chain}: Found ${daoLogs.length} DAOs, ${treasuryAddresses.length} treasuries`); - if (daoAddresses.length > 0) { - console.log(`${api.chain}: DAO addresses:`, daoAddresses); - } - - return { daoAddresses, treasuryAddresses }; -} - -async function getPresaleAddresses(api, daoAddresses) { - if (daoAddresses.length === 0) { - console.log(`${api.chain}: No DAOs found, skipping presale discovery`); - return []; - } - - console.log(`${api.chain}: Checking for presale events from ${daoAddresses.length} DAOs...`); - - let allPresaleAddresses = []; - - // Get presale events from each DAO - for (const daoAddress of daoAddresses) { - const presaleLogs = await getLogs({ - api, - target: daoAddress, - topic: PRESALE_DEPLOYED_TOPIC, - eventAbi: 'event PresaleDeployed(uint256 indexed proposalId, address indexed presaleContract, uint256 amount, uint256 initialPrice)', - fromBlock: config[api.chain].fromBlock, - toBlock: api.block, - onlyArgs: true, - onlyUseExistingCache: !api.block, // Use cache only if we don't have current block - }); - - const presaleAddresses = presaleLogs.map(log => log.presaleContract); - allPresaleAddresses.push(...presaleAddresses); - - if (presaleAddresses.length > 0) { - console.log(`${api.chain}: Found ${presaleAddresses.length} presales from DAO ${daoAddress}:`, presaleAddresses); - } - } - - // Remove duplicates (normalize addresses to lowercase for comparison) - const uniquePresaleAddresses = [...new Set(allPresaleAddresses.map(addr => addr.toLowerCase()))]; - console.log(`${api.chain}: Total unique presale addresses found: ${uniquePresaleAddresses.length}`); - - return uniquePresaleAddresses; -} - -async function tvl(api) { - // Get DAO addresses - const { daoAddresses } = await getDAOAddresses(api); - - // Get presale addresses dynamically (these are circulating - AMM liquidity) - const presaleAddresses = await getPresaleAddresses(api, daoAddresses); - - console.log(`${api.chain}: Total presale addresses to check: ${presaleAddresses.length}`); - if (presaleAddresses.length > 0) { - console.log(`${api.chain}: Presale addresses:`, presaleAddresses); - } - - if (presaleAddresses.length === 0) { - console.log(`${api.chain}: No presale addresses found, returning 0 TVL`); - return {}; - } - - // Create tokensAndOwners array to explicitly check for native ETH - const ADDRESSES = require('../helper/coreAssets.json'); - const tokensAndOwners = presaleAddresses.map(owner => [ADDRESSES.null, owner]); - - console.log(`${api.chain}: Checking native tokens for ${tokensAndOwners.length} presale contracts`); - - // Only count native tokens (ETH, MATIC, etc.) in presale contracts - const result = await sumTokens2({ - api, - tokensAndOwners, - }); - - console.log(`${api.chain}: TVL result:`, result); - return result; -} - -async function vesting(api) { - // Get treasury addresses (these are non-circulating - DAO controlled funds) - const { treasuryAddresses } = await getDAOAddresses(api); - - console.log(`${api.chain}: Total treasury addresses to check: ${treasuryAddresses.length}`); - if (treasuryAddresses.length > 0) { - console.log(`${api.chain}: Treasury addresses:`, treasuryAddresses); - } - - if (treasuryAddresses.length === 0) { - console.log(`${api.chain}: No treasury addresses found, returning 0 vesting`); - return {}; - } - - // Count all tokens in treasury addresses (they can hold any ERC20 tokens) - const result = await sumTokens2({ - api, - owners: treasuryAddresses, - }); - - console.log(`${api.chain}: Vesting result:`, result); - return result; -} - -// Export TVL and vesting functions for each supported chain -module.exports = { - methodology: "TVL consists of native tokens in presale AMM contracts (circulating). Vesting consists of all tokens in DAO treasury contracts (non-circulating, DAO-controlled funds).", - ethereum: { tvl, vesting }, - arbitrum: { tvl, vesting }, - base: { tvl, vesting }, - xdai: { tvl, vesting }, - polygon: { tvl, vesting }, - unichain: { tvl, vesting }, - wc: { tvl, vesting }, -}; diff --git a/projects/createmytoken/index.js b/projects/createmytoken/index.js deleted file mode 100644 index 8cdab4c5b38..00000000000 --- a/projects/createmytoken/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const factories = ["0xCBD7080c6735E01bc375883DfBC9073e2e587620","0xEB3D17c23e33d908ed80e5CEC419e5f36A5d0F9A"] - -const config = { - ethereum: { - reserves: factories, - nftAddress: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - arbitrum: { - reserves: factories, - nftAddress: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - bsc: { - reserves: factories, - nftAddress: "0x46A15B0b27311cedF172AB29E4f4766fbE7F4364" - }, - polygon: { - reserves: factories, - nftAddress: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - base: { - reserves: factories, - nftAddress: "0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1" - }, - optimism: { - reserves: factories, - nftAddress: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - avax: { - reserves: factories, - nftAddress: "0x655C406EBFa14EE2006250925e54ec43AD184f8B" - }, - blast: { - reserves: factories, - nftAddress: "0xB218e4f7cF0533d4696fDfC419A0023D33345F28" - }, -}; - -module.exports = { - methodology: "Only counts assets paired with the created token, and only when using tracked Fair Launch. Does not include other tokens or ejected tokens." -} - -Object.keys(config).forEach(chain => { - const { reserves, nftAddress } = config[chain]; - - module.exports[chain] = { - tvl: async (api) => { - await sumTokens2({ api, owners: reserves, resolveUniV3: true, uniV3ExtraConfig: { nftAddress } }); - return api.getBalancesV2().getBalances() // Only counting paired assets (like ETH), not the token itself. - }, - }; -}); \ No newline at end of file diff --git a/projects/credbull/index.js b/projects/credbull/index.js deleted file mode 100644 index 2fee7a4dd00..00000000000 --- a/projects/credbull/index.js +++ /dev/null @@ -1,121 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache'); -const {api} = require("@defillama/sdk"); - -const addresses = { - arbitrum: { - cbl: "0xD6b3d81868770083307840F513A3491960b95cb6", - cblStakingV2: "0xc0C1DaA773570C041c47cE12c397AdDFD6B7403F", - }, - plume_mainnet: { // plume ($PLUME gas) - v2Vaults: ["0x577349C99830D3c078034087A532581EF5381A08"] // liquidStone X Plume - }, - polygon: { - fund: { - vaults: { - liquidStoneFund: "0x2eda17eb596858566be933b26fae6fa4ee8ccd6d", - pureStoneUSDCFund: "0xd93e3793471e22f2806bc3e0447fc46fb509390b", - pureStoneUSDTFund: "0xd1bd301397bf9623a5696f4fdeced13a47888d65", - }, - navCalculator: "0xcdf038dd3b66506d2e5378aee185b2f0084b7a33", - } - }, -} - -const vaultStablecoins = [ - ADDRESSES.polygon.USDC_CIRCLE, - ADDRESSES.polygon.USDT, -]; - -async function includeStablecoins(api, vaultAddresses) { - await Promise.all( - vaultStablecoins.map(token => handleStablecoinBalance(api, vaultAddresses, token)) - ); -} - -async function excludeStablecoins(api, vaultAddresses) { - await Promise.all( - vaultStablecoins.map(token => handleStablecoinBalance(api, vaultAddresses, token, false)) - ); -} - -// include or exclude the stablecoin balance -async function handleStablecoinBalance(api, vaultAddresses, erc20address, isInclude = true) { - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: vaultAddresses.map((vault) => ({ target: erc20address, params: [vault] })), - }); - balances.forEach((bal) => api.add(erc20address, bal * (isInclude ? 1 : -1))); -} - - -// Credbull DeFi Vaults v1 TVL (6 or 12 month fixed APY) -async function tvl(api) { - const vaults = await getVaultsForChain(api.chain); - if (vaults.length === 0) return; // no vaults for this chain, return early - - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }); - - return api.sumTokens({ tokensAndOwners2: [tokens, vaults] }) -} - -// Credbull Fund (e.g. LiquidStone Fund) -async function borrowedFund(api) { - const fundVaults = Object.values(addresses.polygon.fund.vaults); - - const fundNavResults = await api.multiCall({ - abi: 'function calcNav(address _vaultProxy) external returns (address denominationAsset, uint256 nav)', - calls: fundVaults, - target: addresses.polygon.fund.navCalculator, - excludeFailed: true, - }); - - await excludeStablecoins(api, fundVaults); - - fundNavResults.forEach(({ denominationAsset, nav }) => { - api.add(denominationAsset, nav); - }); - - api.getBalancesV2().removeNegativeBalances(); -} - -async function polygonTvl(api) { - const fundVaults = Object.values(addresses.polygon.fund.vaults); - - await includeStablecoins(api, fundVaults); -} - -async function borrowedVaults(api) { - const vaults = await getVaultsForChain(api.chain); - if (vaults.length === 0) return; // no vaults for this chain, return early - - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }); - - const bals = await api.multiCall({ abi: 'address:totalAssets', calls: vaults }) - api.add(tokens, bals) - const tBals = (await api.multiCall({ abi: 'erc20:balanceOf', calls: tokens.map((t, i) => ({ target: t, params: vaults[i] })) })).map(i => i * -1) - api.add(tokens, tBals) -} - -// get Credbull DeFi vaults -async function getVaultsForChain(chain) { - // v1 vaults (e.g. inCredbull Earn) - const v1Vaults = (await getConfig('credbull', "https://incredbull.io/api/vaults"))[chain] || []; - // v2 vaults (e.g. LiquidStone X Plume) - const v2Vaults = addresses[chain]?.v2Vaults || []; - - return [...v1Vaults, ...v2Vaults]; -} - -async function stakedCbl(api) { - const bals = await api.multiCall({ abi: 'address:totalAssets', calls: [addresses.arbitrum.cblStakingV2,] }) - api.add(addresses.arbitrum.cbl, bals) -} - -module.exports = { - methodology: 'TVL consist of the sum of every deposit of all vaults for a given asset.', - arbitrum: { tvl, borrowed: borrowedVaults, staking: stakedCbl }, - btr: { tvl, borrowed: borrowedVaults, }, - plume_mainnet: { tvl, borrowed: borrowedVaults}, - polygon: { borrowed: borrowedFund, tvl: polygonTvl }, -}; diff --git a/projects/credit/index.js b/projects/credit/index.js deleted file mode 100644 index 3b271f31f38..00000000000 --- a/projects/credit/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const methodologies = require('../helper/methodologies'); - -async function tvl(api) { - const vault = '0xcE4602C16f6e83eEa77BFb3CCe6f6BCE9EcBb92E' - - const token = await api.call({ - abi: 'address:asset', - target: vault, - params: [], - }); - - const balance = await api.call({ - abi: 'uint256:totalAssets', - target: vault, - params: [], - }); - - api.add(token, balance) -} - -module.exports = { - methodology: methodologies.lendingMarket, - wc: { - tvl - } -} \ No newline at end of file diff --git a/projects/creditguild/index.js b/projects/creditguild/index.js deleted file mode 100644 index 3aad117bbf3..00000000000 --- a/projects/creditguild/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - arbitrum: { factory: '0xfc462354dc9cac684516b49f002ae769514bbe63', fromBlock: 197467973, PSMs: ['0xc273c03D7F28f570C6765Be50322BC06bdd4bFab', '0x475840078280BaE8EF2428dbe151c7b349CF3f50'], } -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, PSMs = [] } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:pegToken', calls: PSMs }) - const owners = [...PSMs] - - const logs = await getLogs2({ - api, - factory, - eventAbi: 'event TermCreated(uint256 indexed when, uint256 indexed gaugeType, address indexed term, bytes params)', - fromBlock, - }) - - const terms = logs.map(log => log.term) - const tokens1 = await api.multiCall({ abi: 'address:collateralToken', calls: terms }) - tokens.push(...tokens1) - owners.push(...terms) - await api.sumTokens({ tokensAndOwners2: [tokens, owners] }) - } - } -}) \ No newline at end of file diff --git a/projects/creditum/index.js b/projects/creditum/index.js deleted file mode 100644 index 60b185bc986..00000000000 --- a/projects/creditum/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakingPricedLP } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const lending = "0x04D2C91A8BDf61b11A526ABea2e2d8d778d4A534" - -async function tvl(api) { - return api.sumTokens({ - owner: lending, tokens: [ - ADDRESSES.fantom.USDC, - ADDRESSES.fantom.WFTM, - ADDRESSES.fantom.DAI, - ADDRESSES.fantom.WBTC, - "0x74b23882a30290451A17c44f4F05243b6b58C76d" - ] - }) -} - -module.exports = { - fantom: { - tvl, - staking: stakingPricedLP("0xd9e28749e80D867d5d14217416BFf0e668C10645", "0x77128dfdd0ac859b33f44050c6fa272f34872b5e", "fantom", "0x06F3Cb227781A836feFAEa7E686Bdc857e80eAa7", "wrapped-fantom"), - pool2: pool2("0xe0c43105235c1f18ea15fdb60bb6d54814299938", "0x06f3cb227781a836fefaea7e686bdc857e80eaa7"), - }, -} \ No newline at end of file diff --git a/projects/credix/index.js b/projects/credix/index.js deleted file mode 100644 index 65a5c31e172..00000000000 --- a/projects/credix/index.js +++ /dev/null @@ -1,210 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { PublicKey } = require("@solana/web3.js"); -const { Program, utils,} = require("@project-serum/anchor"); -const { getProvider, sumTokens2, } = require("../helper/solana"); - -const MARKET_SEED_FINTECH = "credix-marketplace"; -const MARKET_SEED_RECEIVABLES = "receivables-factoring"; -const USDC = ADDRESSES.solana.USDC; -const programId = new PublicKey("CRDx2YkdtYtGZXGHZ59wNv1EwKHQndnRc1gT4p8i2vPX"); -const encodeSeedString = (seedString) => - Buffer.from(utils.bytes.utf8.encode(seedString)); - -const constructProgram = (provider) => { - return new Program(idl, programId, provider); -}; - -const findPDA = async (seeds) => { - return PublicKey.findProgramAddress(seeds, programId); -}; - -const findGlobalMarketStatePDA = async (globalMarketSeed) => { - const seed = encodeSeedString(globalMarketSeed); - return findPDA([seed]); -}; - -const findSigningAuthorityPDA = async (globalMarketSeed) => { - const globalMarketStatePDA = await findGlobalMarketStatePDA(globalMarketSeed); - const seeds = [globalMarketStatePDA[0].toBuffer()]; - return findPDA(seeds); -}; - -async function tvl() { - // Fintech pool - const [signingAuthorityKeyFintech] = await findSigningAuthorityPDA( - MARKET_SEED_FINTECH - ); - - // Receivables factoring pool - const [signingAuthorityKeyReceivables] = await findSigningAuthorityPDA( - MARKET_SEED_RECEIVABLES - ); - const tokens = await sumTokens2({ - tokensAndOwners: [ - [USDC, signingAuthorityKeyFintech], - [USDC, signingAuthorityKeyReceivables], - ], - }); - return tokens; -} - -module.exports = { - timetravel: false, - solana: { - tvl, - borrowed, - }, -}; - -async function borrowed(api) { - - const provider = getProvider(); - const program = constructProgram(provider); - const states = await program.account.globalMarketState.all(); - - states.forEach(({ account }) => { - api.add(account.baseTokenMint.toBase58(), account.poolOutstandingCredit.toString()) - }) -} - -async function tvl1(api) { - - const provider = getProvider(); - const program = constructProgram(provider); - const states = await program.account.globalMarketState.all(); - - const tokenAccounts = states.map(({ account }) => account.treasuryPoolTokenAccount.toBase58()) - return sumTokens2({ tokenAccounts }) -} - -const idl = { - version: '3.11.0', - name: 'credix', - instructions: [], - accounts: [{ - name: 'globalMarketState', - type: { - kind: 'struct', - fields: [ - { - name: 'baseTokenMint', - type: 'publicKey' - }, - { - name: 'lpTokenMint', - type: 'publicKey' - }, - { - name: 'poolOutstandingCredit', - docs: [ - 'The amount from senior tranche lent' - ], - type: 'u64' - }, - { - name: 'treasuryPoolTokenAccount', - type: 'publicKey' - }, - { - name: 'signingAuthorityBump', - type: 'u8' - }, - { - name: 'bump', - type: 'u8' - }, - { - name: 'credixFeePercentage', - type: { - defined: 'Fraction' - } - }, - { - name: 'withdrawalFee', - docs: [ - 'The fee charged for withdrawals' - ], - type: { - defined: 'Fraction' - } - }, - { - name: 'frozen', - type: 'bool' - }, - { - name: 'seed', - type: 'string' - }, - { - name: 'poolSizeLimitPercentage', - docs: [ - 'Maximum possible deposit limit in addition the pool outstanding credit', - 'pool_size_limit = pool_outstanding_credit + pool_size_limit_percentage * pool_outstanding_credit' - ], - type: { - defined: 'Fraction' - } - }, - { - name: 'withdrawEpochRequestSeconds', - type: 'u32' - }, - { - name: 'withdrawEpochRedeemSeconds', - type: 'u32' - }, - { - name: 'withdrawEpochAvailableLiquiditySeconds', - type: 'u32' - }, - { - name: 'latestWithdrawEpochIdx', - type: 'u32' - }, - { - name: 'latestWithdrawEpochEnd', - type: 'i64' - }, - { - name: 'lockedLiquidity', - type: 'u64' - }, - { - name: 'totalRedeemedBaseAmount', - type: 'u64' - }, - { - name: 'hasWithdrawEpochs', - type: 'bool' - }, - { - name: 'redeemAuthorityBump', - docs: [ - 'This is only used for wormhole related token transfer occurs.' - ], - type: 'u8' - } - ] - } - }], - types: [ - { - name: 'Fraction', - type: { - kind: 'struct', - fields: [ - { - name: 'numerator', - type: 'u32' - }, - { - name: 'denominator', - type: 'u32' - } - ] - } - }], - events: [], - errors: [ ] -} \ No newline at end of file diff --git a/projects/credix1/index.js b/projects/credix1/index.js deleted file mode 100644 index 301c7219add..00000000000 --- a/projects/credix1/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); -const sdk = require("@defillama/sdk"); - -// USDT token adresi (Unit0 ağında) -const usdt = ADDRESSES.unit0.USDT; // Unit0 ağındaki USDT adresi -// Ana dapp kontratı -const p2p = "0xDCb086519b5776AcBE15EeA5d65FC72498AD110f"; - -async function tvl(api) { - // USDT bakiyesini kontrol ediyoruz - return sumTokens2({ api, owners: [p2p], tokens: [usdt] }); -} - -module.exports = { - methodology: "TVL is calculated by checking the USDT balance in the P2P lending contract on Unit0 network.", - timetravel: false, // Unit0 ağı için timetravel'ı kapatıyoruz - // start: 1000000, // Projenizin başladığı blok numarasını ekleyebilirsiniz - unit0: { // Unit0 ağı için - tvl, - } -}; diff --git a/projects/crema.js b/projects/crema.js deleted file mode 100644 index cdf5533dd76..00000000000 --- a/projects/crema.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getConfig } = require('./helper/cache') -const { sumTokens2 } = require('./helper/solana') - -async function tvl() { - const { data } = await getConfig('crema-solana', "https://api.crema.finance/v1/swap/count") - const tokenAccounts = data.pools.map(i => ([i.token_a_reserves, i.token_b_reserves])).flat() - return sumTokens2({ tokenAccounts }) -} - -module.exports = { - timetravel: false, - solana: { - tvl - }, -}; diff --git a/projects/creo/index.js b/projects/creo/index.js deleted file mode 100644 index 8c6cb9029b0..00000000000 --- a/projects/creo/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const STAKING = "0x077bd3104413c555Aa985a585CE9D2174349ddc3"; - -const TOKEN = "0x9521728bF66a867BC65A93Ece4a543D817871Eb7"; - -async function staking(api) { - return api.sumTokens({ tokens: [TOKEN], owner: STAKING }); -} - -module.exports = { - methodology: "TVL counted from the staking contract", - bsc: { - tvl: () => ({}), - staking, - }, -}; diff --git a/projects/crescent-dex/index.js b/projects/crescent-dex/index.js deleted file mode 100644 index 21d8eb65e97..00000000000 --- a/projects/crescent-dex/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos') - -const poolURI = 'liquidity/v1beta1/pools' -const chain = 'crescent' - -async function tvl(api) { - let paginationKey - do { - const data = await queryV1Beta1({ chain, url: poolURI, paginationKey }) - - paginationKey = data.pagination.next_key; - for (const pool of data.pools) { - api.add(pool.balances.base_coin.denom, pool.balances.base_coin.amount) - api.add(pool.balances.quote_coin.denom, pool.balances.quote_coin.amount) - } - } while (paginationKey) -} - -module.exports = { - timetravel: false, - methodology: "Counts the liquidity on all pools. ", - crescent: { - tvl - }, - deadFrom: '2024-05-01', - hallmarks: [[1713052800, 'Sunset of Crescent Network']] -} \ No newline at end of file diff --git a/projects/crescentswap/index.js b/projects/crescentswap/index.js deleted file mode 100644 index 10eb3aea867..00000000000 --- a/projects/crescentswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - arbitrum: { factory: "0x8219904A8683d06e38605276baCBf2D29aa764DD", fromBlock: 91137559, }, - base: { factory: "0x3539dA2AdB3f8311D203D334f25f7Bee604A5c50", fromBlock: 1979234, }, -}); diff --git a/projects/criptonopix/index.js b/projects/criptonopix/index.js deleted file mode 100644 index f0a8aaf68d3..00000000000 --- a/projects/criptonopix/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const NIX_TOKEN = "0xBe96fcF736AD906b1821Ef74A0e4e346C74e6221"; - -const NIX_PANCAKE_LP = "0x7f01f344b1950a3C5EA3B9dB7017f93aB0c8f88E"; - -const TARGET_ADDRESSES = [ - NIX_PANCAKE_LP, - "0x31EE4A9Ed7eF0CF0dcdF881eDc9c82C661a40b80", - "0x90084B88c772ED1bA5dafa71430628fC6aE004ff", - "0xbc15aaa0B1C37ebb7B506ADe0BFA35F16E67f534", - "0xf7efE91bB756D7754aE8936e1F6041848f848AD3", - "0x36E4c71917245746C45bF7A031166489986A75A8", - "0x02f81Ca4CAb8fB64C82A6F1bC5E3EB32C62AFcA3", - "0x7FA0a7cAF42B3CB5c3f7e4B73eBb3c797b10e4A5", - "0xF952A11EB1456316e907f0B47b0dccd66c28B8B3", - "0x317ba109B74F272253cF8f36c24331FBC5619f59", - "0x36f15b07ebe31e05c4fcEb562bf973663EEB6Bf5", - "0x6E653a3f76eCE9C3b1849b2159fDdf3bB20f0DF4", - "0x16F1b9B34F2596c5538E0ad1B10C85D4B2820b82", -] - -async function tvl(api) { - // sumTokens2 automatically performs balanceOf calls - return sumTokens2({ - resolveLPs: true, - useDefaultCoreAssets: true, - api, - tokens: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.WBNB, NIX_TOKEN, ADDRESSES.null], - owners: TARGET_ADDRESSES, - }) -} - -module.exports = { - timetravel: true, - methodology: "The TVL is counted as the total value of assets held in the protocol's treasury addresses on the BSC chain. The TVL is calculated by summing the USDT, BNB, NIX and WBNB value of all tokens held in these addresses in the protocol, using real-time price data from reliable sources.", - start: 19632198, - bsc: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/croblanc/abi.json b/projects/croblanc/abi.json deleted file mode 100644 index 791e6c848c4..00000000000 --- a/projects/croblanc/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getFarms": "address[]:getFarms", - "want": "address:want", - "stakedWant": "uint256:stakedWant" -} \ No newline at end of file diff --git a/projects/croblanc/index.js b/projects/croblanc/index.js deleted file mode 100644 index e372c17357f..00000000000 --- a/projects/croblanc/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const abi = require("./abi.json"); -const { pool2 } = require("../helper/pool2"); -const { sumTokens2, } = require("../helper/unwrapLPs"); - -const croblancAlpha = "0x52a87ef19e4a0E8cc70aE69D22bc8254bc6fa0F9"; - -const pool2Farm = "0x4c1EC4Bf75CdFAF9b172e94cc85b7a8eA647F267"; -const WCRO_CROBLANC_CronaLP = ["0xac23a7de083719c0e11d5c2efbcc99db5c73bb48"].map(addr => addr.toLowerCase()) - -const cronosTvl = async (api) => { - const calls = await api.call({ abi: abi.getFarms, target: croblancAlpha}) - const tokens = await api.multiCall({ abi: abi.want, calls}) - const staked = await api.multiCall({ abi: abi.stakedWant, calls}) - api.add(tokens, staked) - return sumTokens2({ api, resolveLP: true}) -}; - -module.exports = { - misrepresentedTokens: true, - cronos: { - pool2: pool2(pool2Farm, WCRO_CROBLANC_CronaLP[0]), - tvl: cronosTvl, - }, - methodology: - "Counts liquidity on all the Farms through CroblancAlpha Contract", -}; diff --git a/projects/crocodile/index.js b/projects/crocodile/index.js deleted file mode 100644 index f1f1ea537de..00000000000 --- a/projects/crocodile/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const gcrocTokenAddress = "0x02D159a0c393B3A982c4Acb3d03816A42D94F1aB"; // done -const crocGenesisAddress = '0x172c36e07c377f70697E9ec11212152b57779b6f' // done -const gcrocRewardPoolAddress = "0x5d6cB50808f347BFc55D3a683bb170081DaBfa7b"; // done -const masonryAddress = "0x08abd7Cb539AB7c6d46939381ff607d33d7c6962"; // done - -async function crocGenesisTVL(api) { - const tokens = [ - ADDRESSES.avax.WAVAX, // WAVAX - ADDRESSES.avax.USDC, // USDC - ADDRESSES.avax.USDt, // USDT - ADDRESSES.avax.WETH_e, // WETH.e - "0xAAAB9D12A30504559b0C5a9A5977fEE4A6081c6b", // PHAR - "0xFFFF003a6BAD9b743d658048742935fFFE2b6ED7", // KET - "0x6F43fF77A9C0Cf552b5b653268fBFe26A052429b", // LAMBO - "0x91a1C5a6001e6Aa628f49094658C65A19794D7f6", // PHARM - "0xe03a08BD497a0F1dAed8F81D835C09242Bb82BCa", // sabcPHAR - "0xe088d859D8BcE513b76Dc11C05D559254e28A336", // WIFE - "0x5DDc8d968a94cf95CfeB7379F8372d858B9C797d", // WOLFI - "0x34a528Da3b2EA5c6Ad1796Eba756445D1299a577", // ID - "0x3D75F2BB8aBcDBd1e27443cB5CBCE8A668046C81", // HLP0 - "0x472F1bd4F431cEAE95c7f3382f715C0B1961ab8c", // UST - ADDRESSES.avax.JOE, // JOE - ADDRESSES.avax.SAVAX, // sAVAX - "0xB8d7710f7d8349A506b75dD184F05777c82dAd0C", // ARENA - ] - - return sumTokens2({ api, tokens, owner: crocGenesisAddress, }) -} - - -const pool2 = async (api) => { - let gauges = await api.call({ abi: 'address[]:getAllGauges', target: '0xAAAf3D9CDD3602d117c67D80eEC37a160C8d9869' }) - let pools = await api.multiCall({ abi: 'address:stake', calls: gauges, permitFailure: true }) - const pools2 = [] - const gauges2 = [] - pools.forEach((pool, i) => { - if (!pool) return; - pools2.push(pool) - gauges2.push(gauges[i]) - }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges2.map(gauge => ({ target: gauge, params: gcrocRewardPoolAddress })) }) - api.add(pools2, bals) - return sumTokens2({ api, tokens: pools2, }) -}; - - -module.exports = { - methodology: "Pool2 deposits consist of CROC/S and GCROC/S LP tokens deposits while the staking TVL consists of the GCROCs tokens locked within the Masonry contract(0x08abd7Cb539AB7c6d46939381ff607d33d7c6962).", - hallmarks: [ - [1739577600, 'Genesis Phase Ended'] - ], - avax: { - tvl: crocGenesisTVL, - //pool2, comment out until pool2 tokens are available - staking: staking(masonryAddress, gcrocTokenAddress), - }, -}; \ No newline at end of file diff --git a/projects/crodex/index.js b/projects/crodex/index.js deleted file mode 100644 index 6a79bee00fb..00000000000 --- a/projects/crodex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xe9c29cB475C0ADe80bE0319B74AD112F1e80058F) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - cronos: { - tvl: getUniTVL({ factory: '0xe9c29cB475C0ADe80bE0319B74AD112F1e80058F', useDefaultCoreAssets: true }), - }, -}; // node test.js projects/crodex/index.js diff --git a/projects/croissant/index.js b/projects/croissant/index.js deleted file mode 100644 index c3a12631513..00000000000 --- a/projects/croissant/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); -const masterchef = "0x127A5b49E63FadFBA2bc370D44034F170d88C7e6"; -const croissant = "0xa0C3c184493f2Fae7d2f2Bd83F195a1c300FA353"; -const croi_mmf_lp = "0xde991150329dbe53389db41db459cae3ff220bac"; - -module.exports = { - misrepresentedTokens: true, - cronos: { - staking: stakings([masterchef], croissant), - pool2: pool2s([masterchef], [croi_mmf_lp]), - tvl: () => ({}) - }, - methodology: "LPs and tokens in masterchef", -}; \ No newline at end of file diff --git a/projects/crolend/index.js b/projects/crolend/index.js deleted file mode 100644 index 096c50e7d1a..00000000000 --- a/projects/crolend/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - hallmarks: [ - [1670004805, "Project rugged"] - ], - deadFrom: 1670004805, - cronos: { - tvl: ()=>({}), - borrowed: ()=>({}) - } -} \ No newline at end of file diff --git a/projects/cron-fi/index.js b/projects/cron-fi/index.js deleted file mode 100644 index 02728bb5ccb..00000000000 --- a/projects/cron-fi/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { factory: '0xD64c9CD98949C07F3C85730a37c13f4e78f35E77', fromBlock: 17008730, } -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0xaeff84bd0403e2418c457955d4258f28133c5b304b671114fc854725bb098bee'], - eventAbi: 'event CronV1PoolCreated (address indexed pool, address indexed token0, address indexed token1, uint8 poolType)', - onlyArgs: true, - fromBlock, - }) - return sumTokens2({ api, ownerTokens: logs.map(i => [[i.token0, i.token1], i.pool]) }) - } - } -}) \ No newline at end of file diff --git a/projects/cronaswap/index.js b/projects/cronaswap/index.js deleted file mode 100644 index fa52c5ad6db..00000000000 --- a/projects/cronaswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0x73A48f8f521EB31c55c0e1274dB0898dE599Cb11) is used to find the LP pairs. TVL is equal to the liquidity on the AMM, while staking is the amount of CRONA tokens found in the Masterchef(0x77ea4a4cF9F77A034E4291E8f457Af7772c2B254).", - cronos: { - tvl: getUniTVL({ - factory: '0x73A48f8f521EB31c55c0e1274dB0898dE599Cb11', - useDefaultCoreAssets: true, - blacklist: [ - '0x5b5fe1238aca91c65683acd7f9d9bf922e271eaa', // SUS - ] - }), - staking: staking("0x77ea4a4cF9F77A034E4291E8f457Af7772c2B254", "0xadbd1231fb360047525BEdF962581F3eee7b49fe") - } -} \ No newline at end of file diff --git a/projects/cronews/index.js b/projects/cronews/index.js deleted file mode 100644 index a3f829551a3..00000000000 --- a/projects/cronews/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -/** - * cronews TVL adapter - * - * Tracks CRO locked in the cronewslock contract - */ - -const LOCK_CONTRACT = '0x307aE8eE0CB8953AF16870DC4Fed7C5CcEA4CB59' - -async function tvl(api) { - const balance = await api.call({ - target: LOCK_CONTRACT, - abi: 'function getTotalLocked() view returns (uint256)', - }) - - // Add the native CRO token to the balance - api.addToken(ADDRESSES.null, balance) -} - -module.exports = { - cronos: { - tvl, - }, - methodology: 'TVL is calculated by summing the CRO locked in the cronewslock contract at 0x307aE8eE0CB8953AF16870DC4Fed7C5CcEA4CB59.', - start: '2025-01-01', - timetravel: true, -} \ No newline at end of file diff --git a/projects/cronofi-finance/index.js b/projects/cronofi-finance/index.js deleted file mode 100644 index 7a17c634907..00000000000 --- a/projects/cronofi-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {masterChefExports} = require('../helper/masterchef'); - - -const masterchef = "0xdc0E1690c594dDD1654544e74036Ee0b0029573d"; -const token = "0x3Df064069Ba2c8B395592E7834934dBC48BbB955"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "cronos", token, false) -} \ No newline at end of file diff --git a/projects/cronos-zk/index.js b/projects/cronos-zk/index.js deleted file mode 100644 index 64921c3cffc..00000000000 --- a/projects/cronos-zk/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 388, }), - }, -} diff --git a/projects/cronosbet/index.js b/projects/cronosbet/index.js deleted file mode 100644 index f7b98a88380..00000000000 --- a/projects/cronosbet/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * CronosBet TVL adapter - * - * – Counts native CRO plus every ERC-20 token that can be - * deposited in the GamePoolUpgradeable contract, which serves - * as the central treasury for all games - */ - -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs") - -const GAME_POOL = '0xdF697B906AE26a5dB263517c3d1CAf52d19bD8Ac' - -async function tvl(api) { - // Get supported ERC-20 tokens from the tokenList array - const tokens = await api.fetchList({ lengthAbi: 'getSupportedTokensLength', itemAbi: 'tokenList', target: GAME_POOL, }) - tokens.push(nullAddress) - return sumTokens2({ owner: GAME_POOL, tokens, api }) -} - -module.exports = { - cronos: { tvl, }, - methodology: 'Value of tokens in the game pool contract', - start: '2025-06-28', -} diff --git a/projects/cronus/index.js b/projects/cronus/index.js deleted file mode 100644 index f4cfc1fe138..00000000000 --- a/projects/cronus/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x20570b7bFf86B2f92068622D0805160f318554Be) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - evmos: { - tvl: getUniTVL({ factory: '0x20570b7bFf86B2f92068622D0805160f318554Be', useDefaultCoreAssets: true }), - }, -}; // node test.js projects/cronus/index.js diff --git a/projects/cropper-CL/index.js b/projects/cropper-CL/index.js deleted file mode 100644 index c4ba074036a..00000000000 --- a/projects/cropper-CL/index.js +++ /dev/null @@ -1,182 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); - -async function tvl() { - const provider = getProvider() - const programId = 'H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt' - const program = new Program(whirpoolIDL, programId, provider) - const whirlpools = await program.account.whirlpool.all() - const tokenAccounts = whirlpools.map(({ account}) => [account.tokenVaultA, account.tokenVaultB]).flat() - return sumTokens2({ tokenAccounts, }) -} - - -module.exports = { - timetravel: false, - solana: { - tvl - } -}; - - -const whirpoolIDL = { - version: '0.2.0', - name: 'whirlpool', - instructions: [], - accounts: [ - { - name: 'whirlpool', - type: { - kind: 'struct', - fields: [ - { - name: 'whirlpoolsConfig', - type: 'publicKey' - }, - { - name: 'whirlpoolBump', - type: { - array: [ - 'u8', - 1 - ] - } - }, - { - name: 'tickSpacing', - type: 'u16' - }, - { - name: 'tickSpacingSeed', - type: { - array: [ - 'u8', - 2 - ] - } - }, - { - name: 'feeRate', - type: 'u16' - }, - { - name: 'protocolFeeRate', - type: 'u16' - }, - { - name: 'liquidity', - type: 'u128' - }, - { - name: 'sqrtPrice', - type: 'u128' - }, - { - name: 'tickCurrentIndex', - type: 'i32' - }, - { - name: 'protocolFeeOwedA', - type: 'u64' - }, - { - name: 'protocolFeeOwedB', - type: 'u64' - }, - { - name: 'tokenMintA', - type: 'publicKey' - }, - { - name: 'tokenVaultA', - type: 'publicKey' - }, - { - name: 'feeGrowthGlobalA', - type: 'u128' - }, - { - name: 'tokenMintB', - type: 'publicKey' - }, - { - name: 'tokenVaultB', - type: 'publicKey' - }, - { - name: 'feeGrowthGlobalB', - type: 'u128' - }, - { - name: 'rewardLastUpdatedTimestamp', - type: 'u64' - }, - { - name: 'rewardInfos', - type: { - array: [ - { - defined: 'WhirlpoolRewardInfo' - }, - 3 - ] - } - } - ] - } - } - ], - types: [ - { - name: 'WhirlpoolRewardInfo', - docs: [ - 'Stores the state relevant for tracking liquidity mining rewards at the `Whirlpool` level.', - 'These values are used in conjunction with `PositionRewardInfo`, `Tick.reward_growths_outside`,', - 'and `Whirlpool.reward_last_updated_timestamp` to determine how many rewards are earned by open', - 'positions.' - ], - type: { - kind: 'struct', - fields: [ - { - name: 'mint', - docs: [ - 'Reward token mint.' - ], - type: 'publicKey' - }, - { - name: 'vault', - docs: [ - 'Reward vault token account.' - ], - type: 'publicKey' - }, - { - name: 'authority', - docs: [ - 'Authority account that has permission to initialize the reward and set emissions.' - ], - type: 'publicKey' - }, - { - name: 'emissionsPerSecondX64', - docs: [ - 'Q64.64 number that indicates how many tokens per second are earned per unit of liquidity.' - ], - type: 'u128' - }, - { - name: 'growthGlobalX64', - docs: [ - 'Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward', - 'emissions were turned on.' - ], - type: 'u128' - } - ] - } - } - ], - errors: [] -} diff --git a/projects/cropper.js b/projects/cropper.js deleted file mode 100644 index 7f4295d4ebe..00000000000 --- a/projects/cropper.js +++ /dev/null @@ -1,36 +0,0 @@ -const { getConnection, exportDexTVL, sumTokens2, } = require("./helper/solana"); -const { PublicKey } = require('@solana/web3.js') -const DEX_PROGRAM_ID = 'CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh' - -async function fetchStaking() { - return sumTokens2({ owners: ['5mEH7a7abQwUEXqfusVepc3z9cHVQg8uhqTXdq47J91o'] }); -} - -async function getTokenAccounts() { - // structure taken from https://github.com/CropperFinance/cropper_instructions/blob/main/amm-instructions/amm_stats.rs#L323 - const programId = new PublicKey(DEX_PROGRAM_ID); - const connection = getConnection(); - const accounts = await connection.getProgramAccounts(programId, { - filters: [{ - dataSize: 291 - }] - }); - const tokenAccounts = [] - accounts.forEach(({ account: { data }}) => { - let i = 3 + 32 * 4 // offset - const tokenAccountA = new PublicKey(data.subarray(i, i+32)).toString() - i += 32 - const tokenAccountB= new PublicKey(data.subarray(i, i+32)).toString() - tokenAccounts.push(tokenAccountA, tokenAccountB) - }) - return tokenAccounts -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - solana: { - tvl: exportDexTVL(DEX_PROGRAM_ID, getTokenAccounts), - staking: fetchStaking - } -} \ No newline at end of file diff --git a/projects/crosschainbridge/index.js b/projects/crosschainbridge/index.js deleted file mode 100644 index e6049c92150..00000000000 --- a/projects/crosschainbridge/index.js +++ /dev/null @@ -1,180 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); - -const getBridgeContract = (chain) => { - switch (chain) { - case 'avax': - return '0x46325c7005F04900F8D74cD0eAB903597b6EFFFF'; - default: - return '0xCBCe172d7af2616804ab5b2494102dAeC47B2635'; - } -} - -const getRewardPools = (chain) => { - switch (chain) { - case 'avax': - return '0xbAb537b7AE2Fcb00eeA7e91Fa4782EEbaD3B6d10'; - case 'fantom': - return '0x6eBC0D4Ae955218195E6D016Fb9D4358Ee34d1F9'; - default: - return '0x0BDC1f983bC82B8F6F6BCcbF9810A9cdC1FE455f'; - } -} - -/* - * TOKEN CONFIGURATION - * ADD TOKENS AND NETWORKS HERE - */ - -const tokens = { - ethereum: { - // Project tokens - TXL: "0x8eEF5a82E6Aa222a60F009ac18c24EE12dBf4b41", - BRIDGE: "0x92868a5255c628da08f550a858a802f5351c5223", - // Stablecoins - BUSD: ADDRESSES.ethereum.BUSD, - DAI: ADDRESSES.ethereum.DAI, - USDC: ADDRESSES.ethereum.USDC, - USDT: ADDRESSES.ethereum.USDT, - // Network Tokens - WETH: ADDRESSES.ethereum.WETH, - WMATIC: ADDRESSES.ethereum.MATIC, - // Further tokens - BULK: "0xa143ac515dca260a46c742c7251ef3b268639593", - DAX: "0x77e9618179820961ee99a988983bc9ab41ff3112", - GFX: "0x65ad6a2288b2dd23e466226397c8f5d1794e58fc", - ISLAND: "0xa0dc5132c91ea4d94fcf1727c32cc5a303b34cfc", - MNY: "0xA6F7645ed967FAF708A614a2fcA8D4790138586f", - PMON: "0x1796ae0b0fa4862485106a0de9b654efe301d0b2", - REALM: "0x464FdB8AFFC9bac185A7393fd4298137866DCFB8", - UCT: "0x6d1DC3928604b00180Bb570BdAe94b9698d33b79", - UNO: "0x474021845c4643113458ea4414bdb7fb74a01a77", - UPR: "0xf720e38f678b29b243f7d53b56acbf5de98f2385", - ZENIQ: "0x5b52bfb8062ce664d74bbcd4cd6dc7df53fd7233", - }, - bsc: { - // Project tokens - TXL: "0x1ffd0b47127fdd4097e54521c9e2c7f0d66aafc5", - BRIDGE: "0x92868a5255c628da08f550a858a802f5351c5223", - // Stablecoins - BUSD: ADDRESSES.bsc.BUSD, - DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - USDC: ADDRESSES.bsc.USDC, - USDT: ADDRESSES.bsc.USDT, - // Network Tokens - WETH: ADDRESSES.bsc.ETH, - WMATIC: "0xcc42724c6683b7e57334c4e856f4c9965ed682bd", - // Further tokens - ARNX: "0x0c37bcf456bc661c14d596683325623076d7e283", - BRKL: "0x66cafcf6c32315623c7ffd3f2ff690aa36ebed38", - BULK: "0xa143ac515dca260a46c742c7251ef3b268639593", - DAF: "0x8fb1a59ca2d57b51e5971a85277efe72c4492983", - DAX: "0x2cb34f6a300813da9312b84ab566b2e51cc02921", - GFX: "0x65ad6a2288b2dd23e466226397c8f5d1794e58fc", - HAKA: "0xd85ad783cc94bd04196a13dc042a3054a9b52210", - ISLAND: "0xa0dc5132c91ea4d94fcf1727c32cc5a303b34cfc", - MNY: "0xA6F7645ed967FAF708A614a2fcA8D4790138586f", - PMON: "0x1796ae0b0fa4862485106a0de9b654efe301d0b2", - RACA: "0x12bb890508c125661e03b09ec06e404bc9289040", - REALM: "0x464FdB8AFFC9bac185A7393fd4298137866DCFB8", - UCT: "0x6d1dc3928604b00180bb570bdae94b9698d33b79", - UNO: "0x474021845C4643113458ea4414bdb7fB74A01A77", - ULTI: "0x42BFE4A3E023f2C90aEBFfbd9B667599Fa38514F", - UPR: "0xf720e38f678b29b243f7d53b56acbf5de98f2385", - TRON: "0x85eac5ac2f758618dfa09bdbe0cf174e7d574d5b", - ZENIQ: "0x5b52bfb8062ce664d74bbcd4cd6dc7df53fd7233", - }, - polygon: { - // Project tokens - TXL: "0x8eEF5a82E6Aa222a60F009ac18c24EE12dBf4b41", - BRIDGE: "0x92868a5255c628da08f550a858a802f5351c5223", - // Stablecoins - BUSD: "0xdab529f40e671a1d4bf91361c21bf9f0c9712ab7", - DAI: ADDRESSES.polygon.DAI, - USDC: ADDRESSES.polygon.USDC, - USDT: ADDRESSES.polygon.USDT, - // Network Tokens - WETH: ADDRESSES.polygon.WETH_1, - WMATIC: ADDRESSES.polygon.WMATIC_2, - // Further tokens - DAF: "0x2f0e07e881363bb1cdff32971b2f8c87ef8ff432", - GFX: "0x65ad6a2288b2dd23e466226397c8f5d1794e58fc", - PMON: "0x1796ae0b0fa4862485106a0de9b654efe301d0b2", - ULTI: "0xa6516f07c5fc7169fca3149b188c37ca617f1d41", - }, - avax: { - // Project tokens - BRIDGE: "0xC0367f9b1f84Ca8DE127226AC2A994EA4bf1e41b", - // Stablecoins - USDC: ADDRESSES.avax.USDC_e, - USDT: ADDRESSES.avax.USDT_e, - // Network Tokens - WETH: ADDRESSES.avax.WETH_e, - }, - fantom: { - // Project tokens - BRIDGE: "0x92868A5255C628dA08F550a858A802f5351C5223", - // Stablecoins - USDC: ADDRESSES.fantom.USDC, - USDT: ADDRESSES.fantom.fUSDT, - // Network Tokens - WETH: "0x74b23882a30290451A17c44f4F05243b6b58C76d", - } -}; - -/* - * END OF CONFIGURATION - */ - -const getAddrPrefix = (chain) => (chain === "ethereum" ? "" : `${chain}:`); - -const createTvlFunction = (chain) => async (timestamp, block, chainBlocks) => { - const balances = {}; - const bridgeContract = getBridgeContract(chain); - - for (const [symbol, address] of Object.entries(tokens[chain])) { - let tokenBalance = BigNumber(0); - // Get balance of token in bridge contract - const result = await sdk.api.erc20.balanceOf({ - target: address, - owner: bridgeContract, - chain, - block: chainBlocks[chain], - }); - tokenBalance = tokenBalance.plus(result.output); - - balances[`${getAddrPrefix(chain)}${address}`] = tokenBalance.toFixed(); - } - return balances; -}; - -const createRewardPoolsTvlFunction = (chain) => async (timestamp, block, chainBlocks) => { - const bridgeTokenAddress = tokens[chain].BRIDGE; - const rewardPoolsContract = getRewardPools(chain); - - if (!bridgeTokenAddress) return 0; - - let tokenBalance = BigNumber(0); - - const resultRewardPools = await sdk.api.erc20.balanceOf({ - target: bridgeTokenAddress, - owner: rewardPoolsContract, - chain, - block: chainBlocks[chain], - }); - tokenBalance = tokenBalance.plus(resultRewardPools.output); - - return { [`${getAddrPrefix(chain)}${bridgeTokenAddress}`] : tokenBalance.toFixed() }; -}; - -const toExport = {}; -for (const network of Object.keys(tokens)) { - toExport[network] = { - tvl: createTvlFunction(network), - staking: createRewardPoolsTvlFunction(network), - }; -} - -module.exports = toExport; -// node test.js projects/crosschainbridge/index.js \ No newline at end of file diff --git a/projects/crosscurve/index.js b/projects/crosscurve/index.js deleted file mode 100644 index a6cca974231..00000000000 --- a/projects/crosscurve/index.js +++ /dev/null @@ -1,135 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const loadPortalBalances = async (api, config, chainKey) => { - const chainId = config[chainKey].chainId; - const tokensLockedInPortal = Object.values(config) - .flatMap(x => x.tokens - .filter(t => t.realToken && t.realToken.chainId === chainId) - .map(t => t.realToken.address.toLowerCase()) - ) - - const portalBalances = await sumTokens2({ - api, - owner: "0xac8f44ceca92b2a4b30360e5bd3043850a0ffcbe", - tokens: tokensLockedInPortal, - }); - - return portalBalances; -} - -const tagsRelatedToCrossCurve = [ - 'farming_pool', - 'voting_pool', - 'hub_v3_lp', - 'hub_v2_lp', - 'hub_v1_5_lp', - 'hub_crypto_v2_lp', -]; - -const loadPoolsBalances = async (api, config, chainKey) => { - const crosscurvePools = config[chainKey].pools.filter(pool => tagsRelatedToCrossCurve.some(x => pool.tags.includes(x))) - const tokensInPools = crosscurvePools.flatMap(pool => { - return pool.coins.map(coin => { - const token = config[chainKey].tokens.find(t => t.address.toLowerCase() === coin.toLowerCase()) - - if ( - !token || - token.tags.includes('curve_lp') || - token.tags.includes('synth') - ) { - return - } - - return token.address - }).filter(Boolean) - }) - - if (!tokensInPools.length) { - return {} - } - - const poolBalances = await sumTokens2({ - api, - owners: crosscurvePools.map(pool => pool.address), - tokens: tokensInPools, - }); - - return poolBalances; -} - -const loadTvl = (chainKey) => async (api) => { - const config = await getConfig('crosscurve', 'https://api.crosscurve.fi/networks') - - if (!config[chainKey]) { - throw new Error(`Unsupported chain ${chainKey}`) - } - - const portalBalances = await loadPortalBalances(api, config, chainKey); - const poolsBalances = await loadPoolsBalances(api, config, chainKey); - - return { ...portalBalances, ...poolsBalances }; -} - -module.exports = { - ethereum: { - tvl: loadTvl('ethereum'), - }, - arbitrum: { - tvl: loadTvl('arbitrum'), - }, - polygon: { - tvl: loadTvl('polygon'), - }, - bsc: { - tvl: loadTvl('bsc'), - }, - optimism: { - tvl: loadTvl('optimism'), - }, - avax: { - tvl: loadTvl('avalanche'), - }, - base: { - tvl: loadTvl('base'), - }, - xdai: { - tvl: loadTvl('gnosis'), - }, - blast: { - tvl: loadTvl('blast'), - }, - mantle: { - tvl: loadTvl('mantle'), - }, - linea: { - tvl: loadTvl('linea'), - }, - taiko: { - tvl: loadTvl('taiko'), - }, - celo: { - tvl: loadTvl('celo'), - }, - fraxtal: { - tvl: loadTvl('fraxtal'), - }, - kava: { - tvl: loadTvl('kava') - }, - metis: { - tvl: loadTvl('metis'), - }, - mode: { - tvl: loadTvl('mode'), - }, - manta: { - tvl: loadTvl('manta'), - }, - sonic: { - tvl: loadTvl('sonic'), - }, - fantom: { - tvl: loadTvl('fantom'), - }, -}; diff --git a/projects/croswap/index.js b/projects/croswap/index.js deleted file mode 100644 index ca89dbd73b3..00000000000 --- a/projects/croswap/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { staking } = require("../helper/staking"); -const { getLogs, getAddress } = require('../helper/cache/getLogs'); -const { transformDexBalances } = require("../helper/portedTokens"); -const { cachedGraphQuery } = require('../helper/cache') - -module.exports = { - misrepresentedTokens: true, -} - -async function tvl(api) { - const { factory, fromBlock } = config[api.chain] - let pools - - if (api.chain === 'cronos') { - const data = await cachedGraphQuery('croswap/cronos', 'https://graph.croswap.com/subgraphs/name/croswap/croswap-v2', `{ pairInfos { pair { id}}}`) - pools = data.pairInfos.map(i => i.pair.id) - } else { - - const logs = await getLogs({ - api, - target: factory, - topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], - fromBlock, - }) - pools = logs.map(i => getAddress(i.data.slice(0, 64 + 2))) - } - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - const reserves = await api.multiCall({ abi: 'function getReserves() view returns (uint112, uint112, uint32)', calls: pools }) - const data = reserves.map(([token0Bal, token1Bal], i) => ({ token0Bal, token1Bal, token1: token1s[i], token0: token0s[i] })) - return transformDexBalances({ ...api, data, }) -} - -const config = { - arbitrum: { factory: '0x8f6ecb066f2bfe31bf87e022c76f63bc4642d8bc', fromBlock: 82954506, stakingContracts: ['0x8e9DA87f58A8480dD6b8878Aa37144a5Fb2F122D'], cros: '0x780469101caBD2bFe4B596D98d4777C2a142e012' }, - cronos: { factory: '0x4ae2bd26e60741890edb9e5c7e984bb396ec26e3', fromBlock: 4807004, stakingContracts: ['0xedfe968033fd2b9a98371d052cd7f32a711e533a'], cros: '0x1Ba477CA252C0FF21c488d41759795E7E7812aB4' }, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { stakingContracts, cros, } = config[chain] - module.exports[chain] = { - tvl, staking: staking(stakingContracts, cros) - } -}) \ No newline at end of file diff --git a/projects/crouton/index.js b/projects/crouton/index.js deleted file mode 100644 index 66f73f7a0f3..00000000000 --- a/projects/crouton/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { get } = require("../helper/http"); -const ADDRESSES = require("../helper/coreAssets.json"); - -async function tvl(api) { - const pools = await get("https://backend.crouton.finance/pools"); - const tvl = pools.reduce((acc, pool) => { - acc += Number(pool.tvlUsd); - return acc; - }, 0); - api.add(ADDRESSES.ton.USDT, tvl * 1e6); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: ` -The methodology for calculating TVL includes both the TON balance and tokens' balances -data for each pool. The calculation is performed on the Parraton API side. - `.trim(), - - ton: { - tvl, - }, -}; diff --git a/projects/crovegas/index.js b/projects/crovegas/index.js deleted file mode 100644 index 35104253b57..00000000000 --- a/projects/crovegas/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -/** - * CroVegas TVL adapter - * - * – Counts native CRO plus every ERC-20 token that can be - * deposited in the two game contracts: - * • CoinFlip 0xbD28f3E1BFb443eDaE31fD4fDf394Be2809d59b1 - * • Lottery 0xba5b3AA6ED9f5dCE991F53a07D446FF1B5B8E589 - */ - -const GAME_CONTRACTS = [ - '0xbD28f3E1BFb443eDaE31fD4fDf394Be2809d59b1', // CoinFlip - '0xba5b3AA6ED9f5dCE991F53a07D446FF1B5B8E589', // Lottery -] - -// All whitelisted ERC-20s (addresses only; decimals auto-detected on chain) -const TOKENS = [ - '0x41bc026dABe978bc2FAfeA1850456511ca4B01bc', // ARY - '0xD896aA25da8e3832d68d1C05fEE9C851d42F1dC1', // AUT - '0xDaAcD0429516832ca1737d1FAa5a739d8F55c097', // BILLS - '0xCb49dd81da680ed11d10809B51d5D5D8e36F9B6D', // BMN - '0xcCcCcCcCdbEC186DC426F8B5628AF94737dF0E60', // CAW - '0x22EAe794BF266f7D46ddbF25ab3c7ba01E6Bc081', // CPB - '0xd095BdD744A7a2967651ce7d4F531C0fD1EB35eF', // CRAZE - '0x2B986EEB82356b518d0Deb1fCD5D102184BF4F7D', // PRIDE - '0xD50f5739A09f36C6f97cC9a4849C5462Ba6129A3', // CROGINAL - '0xd677944Df705924AF369d2FCcf4A989f343DbCDf', // FFTB - '0x8eBB879557Db19D36E69b53B99f0ab938a703BEF', // FFTBozos - '0xaF02D78F39C0002D14b95A3bE272DA02379AfF21', // FRTN - '0xF7b1095D2af6C81c2d88f0ab44c7c2341BFfc411', // GAINZ - '0x8Ab1C78364eB29aD4aE509fF6b03E3E7bD4f8d10', // GAT - '0x7492450cc8897a4e444Ad972eB1619251EF15C23', // GM - '0x4d7c922D6C12CfbF5BC85F56c9ccB1F61f49bf61', // KITTY - '0x2829955d8Aac64f184E363516FDfbb0394042B90', // KRIS - '0x212331e1435A8df230715dB4C02B2a3A0abF8c61', // MAD - '0x46E2B5423F6ff46A8A35861EC9DAfF26af77AB9A', // MOON - '0x2a697d2D53098e365cf0D9dA7Da1f6c65c4cFbe0', // MSB - '0x59BAfb7168972EcCA5e395F7dA88e71eCe47a260', // PPFT - '0x664E4b17EA045fE92868821F3eE0a76a5dB38166', // ROBIN - '0xD4CD999CbeB4Fb2Ee2E23D092D36221d4e325C68', // STEAKHOUSE - '0x679f6863a653251C8C215e77205A7058b5bF676a', // TROLL - '0xE036fBd7030fCCe540F999b97E60aB16281a6D92', // WOW - '0x61dAC9229E0F0235b3bca542D5034183b096516F', // CAVE - '0xe1f864aE527d3646c222fe1b65460dB2D6E62228', // NFX - '0xCFE223d06b86568C24ffd17E8ac748DbAC096b3b', // NEURO - '0x88Ed62A68e1eaABdfc8bA96e10a68561Ab9579b5', // LION-LIONEL - '0x282080d3c9e6b34953737800B93FDAaB28e6dBcc', // WIG - '0x2061aCEACeED382b6d6de02C06009aA5A509b791', // DNA - '0x707056bCaF0cd3D2ffA148c5D5771DA4Efa174ca', // ERIC - '0x45bD9349554eed8550186353A2aC4495ffDD0307', // PFFT - '0x00eB5EeB5C0F616A60b6FF2D4EaD07B2607EB598', // CROC² - '0x3376F2D69eC344c19504DEf2e775Ad1Ba4022CBB', // VINO - '0xD21c69EDcb0f20F47BFcf52BEb858f6515ae67Fa', // CDRA - '0x6460aFD8551a58D50b50f0042e9D2A47a900c99A', // ZERO - '0x24fC9e2e89C7DCB0238B9D13B1F6566Eca45C6f6', // PYRO -] - -module.exports = { - cronos: { - tvl: sumTokensExport({ - owners: GAME_CONTRACTS, - nativeToken: true, // CRO - tokens: TOKENS, - }), - }, - - methodology: - 'Sums native CRO and all whitelisted ERC-20 balances sitting in the CroVegas CoinFlip and Lottery contracts.', - start: '2025-06-08', - timetravel: true, -} diff --git a/projects/crowdswap/index.js b/projects/crowdswap/index.js deleted file mode 100644 index 137ec6330b3..00000000000 --- a/projects/crowdswap/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokensExport, sumTokens2, } = require("../helper/unwrapLPs"); -const { getLogs, getAddress } = require('../helper/cache/getLogs'); - -const polygonStakingContracts = '0x3C868fe859eF46a133e032f22B443e6Efd617449'; -const bscStakingContracts = '0x21224834612ecaC194c4b877b49e7794f193d2A2'; -const CROWD = "0x483dd3425278C1f79F377f1034d9d2CaE55648B6"; -const BscCROWD = "0xA5d4B64a639d93b660cdA04D331374dA1108F8f5"; - -async function tvl(api) { - const { factories } = config[api.chain] - const ownerTokens = [] - - for (const { factory, fromBlock } of factories) { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], - fromBlock, - }) - const pools = logs.map(i => getAddress(i.data.slice(0, 64 + 2))) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - pools.map((pool, i) => ownerTokens.push([[token0s[i], token1s[i]], pool])) - } - return sumTokens2({ api, ownerTokens }) -} - -const config = { - ethereum: { factories: [{ factory: '0xBeA843A2DC516c6F38F159a6a55e80Ec40Cf2286', fromBlock: 16882649, },], }, - arbitrum: { factories: [{ factory: '0x9ff74eea1e7f0f8ee437b70d68f7cdc1a1030642', fromBlock: 91681087, }, { factory: '0xd61B1c7974DFBC4eD60ea5625f0Ba08E7C80D99a', fromBlock: 114501051, },], }, - polygon: { factories: [{ factory: '0xab7dac1daf712693539d770a967a9bc7ba47470c', fromBlock: 37984740, }, { factory: '0x14Fb5ABeA0578B37D9E1A831Bb7e77Bd3d7684a6', fromBlock: 45261628, },], }, - bsc: { factories: [{ factory: '0x08f65111cb9b517b10e5c1e63cb2224467e7988a', fromBlock: 25927093, },], }, - era: { factories: [{ factory: '0x049D3809043d137591687170Fc323DBcDFe83283', fromBlock: 2714942, },], }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) - -module.exports.polygon.staking = sumTokensExport({ owner: polygonStakingContracts, tokens: [CROWD] }) -module.exports.bsc.staking = sumTokensExport({ owner: bscStakingContracts, tokens: [BscCROWD] }) diff --git a/projects/crowfi/index.js b/projects/crowfi/index.js deleted file mode 100644 index 2bb02842401..00000000000 --- a/projects/crowfi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const {uniTvlExport} = require("../helper/unknownTokens"); - -const crow = "0x285c3329930a3fd3C7c14bC041d3E50e165b1517"; -const factory = "0xDdcf30c1A85e5a60d85310d6b0D3952A75a00db4" - -module.exports = uniTvlExport ('cronos', factory, 'cronos') \ No newline at end of file diff --git a/projects/crown-finance/index.js b/projects/crown-finance/index.js deleted file mode 100644 index def99f5ec12..00000000000 --- a/projects/crown-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ - - -module.exports = { - hallmarks: [ - [1655582945, "Rug Pull"] - ], - deadFrom: 1655582945, // we suspect that the project has rugged - cronos: { - tvl: () => ({}), - } -} \ No newline at end of file diff --git a/projects/crunchynetwork-wtz/index.js b/projects/crunchynetwork-wtz/index.js deleted file mode 100644 index 2d02f2ced04..00000000000 --- a/projects/crunchynetwork-wtz/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { get } = require('../helper/http') -const { RPC_ENDPOINT } = require('../helper/chain/tezos') - -async function fetchWtzTvl() { - const wtzContracts = [ - "KT1BB3oNr5vUSw1CuPNb2zpYEVp376XrXWaJ", - "KT1H25LW5k4HQGm9hmNXzaxf3nqjsAEhQPah", - "KT1LpGZnT6dj6STSxHXmvSPqx39ZdPXAMpFz", - "KT1NBgqqJacbdoeNAg9MvrgPT9h6q6AGWvFA", - "KT1NGTDBKDPMrAYEufb72CLwuQJ7jU7jL6jD" - ]; - - // Use Promise.all to fetch all wtz contract balances concurrently - const balances = await Promise.all(wtzContracts.map(async (contract) => { - const balance = await get(RPC_ENDPOINT + `/v1/accounts/${contract}/balance`); - return balance; - })); - - const totalBalance = balances.reduce((total, balance) => total + balance, 0); - return totalBalance; - -} - -async function tvl() { - const wtzTvl = await fetchWtzTvl(); - return { - tezos: wtzTvl / 1e6 - }; -} - -module.exports = { - timetravel: false, - tezos: { - tvl - } -}; \ No newline at end of file diff --git a/projects/crunchynetwork/index.js b/projects/crunchynetwork/index.js deleted file mode 100644 index 8ed5a830261..00000000000 --- a/projects/crunchynetwork/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const { get } = require('../helper/http') -const { RPC_ENDPOINT } = require('../helper/chain/tezos') -const { PromisePool } = require('@supercharge/promise-pool') - -// crunchy farm address KT1KnuE87q1EKjPozJ5sRAjQA24FPsP57CE3 -// TVL = sum(crunchFarm.poolBalance / quipuLP.total_supply * quipuLP.tez_pool * 2 * XTZUSD) -async function fetchFarmsTvl() { - const farms = await get(RPC_ENDPOINT + '/v1/contracts/KT1KnuE87q1EKjPozJ5sRAjQA24FPsP57CE3/bigmaps/farms/keys?limit=1000') - const items = farms.map(farm => [farm.value.poolToken.address, farm.value.poolBalance]).filter(item => item[1] !== "0") - return getAllLPToTez(items); -} - -// crunchy farm v2 address KT1L1WZgdsfjEyP5T4ZCYVvN5vgzrNbu18kX -// TVL = sum(crunchFarm.poolBalance / quipuLP.total_supply * quipuLP.tez_pool * 2 * XTZUSD) -async function fetchFarmsV2Tvl() { - const farms = await get(RPC_ENDPOINT + '/v1/contracts/KT1L1WZgdsfjEyP5T4ZCYVvN5vgzrNbu18kX/bigmaps/farms/keys?limit=1000') - const items = farms.map(farm => [farm.value.poolToken.address, farm.value.poolBalance]).filter(item => item[1] !== "0") - return getAllLPToTez(items); -} - -// crunchy freezer address KT1LjcQ4h5hCy9RcveFz9Pq8LtmF6oun7vNd -// TVL = sum(cruchFreezer.amountLocked / quipuLP.total_supply * quipuLP.tez_pool * 2 * XTZUSD) -async function fetchDeepFreezersTvl() { - const freezers = await get(RPC_ENDPOINT + '/v1/contracts/KT1LjcQ4h5hCy9RcveFz9Pq8LtmF6oun7vNd/bigmaps/locks/keys?limit=1000') - const items = freezers.map(freezer => [freezer.value.token.address, freezer.value.amountLocked]); - return getAllLPToTez(items); -} - -async function getAllLPToTez(items) { - const { results, errors } = await PromisePool.withConcurrency(10) - .for(items) - .process(async ([lpTokenAddress, lpTokens]) => lpToTez(lpTokenAddress, lpTokens)) - - if (errors && errors.length) - throw errors[0] - - return results.reduce((previous, current) => previous +current, 0) * 2 -} - -async function lpToTez(lpTokenAddress, lpTokens) { - if (lpTokens === "0") { - return 0 - } - - const tokenStorage = await get(RPC_ENDPOINT + `/v1/contracts/${lpTokenAddress}/storage?limit=1000`); - if (!tokenStorage.dex_lambdas) - return 0 - - - const tokenBalance = lpTokens - const tokenTotalSupply = tokenStorage.storage.total_supply - const lpTezValue = tokenStorage.storage.tez_pool - if (!lpTezValue || !tokenBalance || !tokenTotalSupply) return 0 - return lpTezValue * tokenBalance /tokenTotalSupply -} - -async function tvl() { - const farmsTvl = await fetchFarmsTvl(); - const farmsV2Tvl = await fetchFarmsV2Tvl(); - const deepFreezersTvl = await fetchDeepFreezersTvl(); - return { - tezos: (farmsTvl + farmsV2Tvl + deepFreezersTvl ) / 1e6 - }; -} - -module.exports = { - timetravel: false, - tezos: { - tvl - } -}; \ No newline at end of file diff --git a/projects/crust-finance-v2/index.js b/projects/crust-finance-v2/index.js deleted file mode 100644 index 245f2184074..00000000000 --- a/projects/crust-finance-v2/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - mantle: { - factory: "0xEaD128BDF9Cff441eF401Ec8D18a96b4A2d25252", - fromBlock: 62692352, - }, -}) \ No newline at end of file diff --git a/projects/crust-finance/index.js b/projects/crust-finance/index.js deleted file mode 100644 index 0436be8a00b..00000000000 --- a/projects/crust-finance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0x62DbCa39067f99C9D788a253cB325c6BA50e51cE) address and whitelisted tokens address to find and price liquidity pool pairs`, - mantle: { - tvl: getUniTVL({ - factory: "0x62DbCa39067f99C9D788a253cB325c6BA50e51cE", - hasStablePools: true, - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/crv-usd/index.js b/projects/crv-usd/index.js deleted file mode 100644 index 59d309b11d8..00000000000 --- a/projects/crv-usd/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - pools: [ - { factory: '0x818709b85052ddc521fae9c78737b27316337e3a', fromBlock: 17182152 }, - { factory: '0x30a2F3c3AA6D12C0a36Bed210dCF1B32EF6228Cc', fromBlock: 17187330 }, - { factory: '0xfa3e2db8eb6c646e0d24046c1a185934d41a8f7a', fromBlock: 17187330 }, - { factory: '0xC9332fdCB1C491Dcc683bAe86Fe3cb70360738BC', fromBlock: 17187330 }, - ] - }, -} - -module.exports = { -}; - - -Object.keys(config).forEach(chain => { - const { pools} = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await Promise.all(pools.map(getLogs_)) - - return sumTokens2({ api, tokensAndOwners: logs.flat().map(i => [i.collateral, i.amm]) }) - - async function getLogs_({ factory, fromBlock }) { - return getLogs({ - api, - target: factory, - topics: ['0xebbe0dfde9dde641808b7a803882653420f3a5b12bb405d238faed959e1e3aa3'], - eventAbi: 'event AddMarket (address indexed collateral, address controller, address amm, address monetary_policy, uint256 ix)', - onlyArgs: true, - fromBlock, - }) - } - } - } -}) - -module.exports.hallmarks = [ - [1742470655, "Resupply Launch"] -] \ No newline at end of file diff --git a/projects/cryptex-finance/index.js b/projects/cryptex-finance/index.js deleted file mode 100755 index bdfe2ae662c..00000000000 --- a/projects/cryptex-finance/index.js +++ /dev/null @@ -1,76 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, sumTokensExport, } = require("../helper/unwrapLPs"); -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') - -const ctxToken = "0x321c2fe4446c7c963dc41dd58879af648838f98d"; -const factory = "0x70236b36f86AB4bd557Fe9934E1246537B472918"; - -const ethStakingContracts = [ - "0xc8BB1cd417D20116387a5e0603e195cA4f3Cf59A", //TCAP-WETH - "0xdC4cDd5dB9EE777EFD891690dc283638CB3A5f94" //CTX-WETH -]; - -const ethPool2s = [ - "0xa87E2c5D5964955242989B954474ff2EB08Dd2f5", // TACP-WETH - "0x2A93167Ed63A31F35CA4788e2EB9fBd9fA6089D0", // CTX-WETH -] -const ethVaults = [ - "0x717170b66654292dfbd89c39f5ae6753d2ac1381", // WETH VAULT - "0x443366a7a5821619D8d57405511E4fadD9964771", // DAI VAULT - // Hardmode Vaults - "0xc2Ba6B8E0EE3cf48B045D966F1dCda767df74833", // WETH VAULT - "0xA5b3Bb6e1f206624B3B8CE0c6A0f7614fd35Fa03", // DAI VAULT - "0xa8CcA36A624215a39D5af6854ac24868559424d3", // USDC VAULT - "0x2364536F4891Ed560A6728f4B36871de8176eE5c", // WBTC VAULT -] - -const ethCollaterals = [ - ADDRESSES.ethereum.WETH, // WETH - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.WBTC, // WBTC -] - -const optVaults = [ - "0xE0c99C503c4AE5eC50aC63C59C7eF4725C355fdD", // WETH VAULT - "0x2C890633Db29f21fccbA57c68DcCEF09AB0D4763", // DAI VAULT - "0x61925C38e28F60e688f7d05E65f63792166a5aFE", // LINK VAULT - "0xc8BB1cd417D20116387a5e0603e195cA4f3Cf59A", // SNX VAULT - "0x66ae98E432329E42B7988CFDCB6f524b1999CB4a" // UNI VAULT -] - -const optCollaterals = [ - ADDRESSES.tombchain.FTM, // WETH - ADDRESSES.optimism.DAI, // DAI - "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", // LINK - "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", // SNX - "0x6fd9d7AD17242c41f7131d257212c54A0e816691" // UNI -] - -module.exports = { - methodology: "TVL includes collateral in vaults", - ethereum: { - tvl: sumTokensExport({ tokens: ethCollaterals, owners: ethVaults,}), - pool2: pool2(ethStakingContracts, ethPool2s), - staking: staking_, - }, - optimism: { - tvl: sumTokensExport({ tokens: optCollaterals, owners: optVaults,}) - } -}; - -async function staking_(api) { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x0976a62688d14faa8e35e63a7ada50f147ba1a0357f99182a596f9afea2502f4'], - eventAbi: 'event DelegatorCreated (address indexed delegator, address indexed delegatee)', - onlyArgs: true, - fromBlock: 13360296, - }) - const owners = [factory,] - logs.forEach(log => owners.push(log.delegator)) - return sumTokens2({ api, owners, tokens: [ctxToken] }) -} \ No newline at end of file diff --git a/projects/cryptex-pi/index.js b/projects/cryptex-pi/index.js deleted file mode 100644 index bd6476b9ae1..00000000000 --- a/projects/cryptex-pi/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const config = { - arbitrum: { vaultFactory: '0xad3565680aecee27a39249d8c2d55dac79be5ad0', fromBlock: 135921947, } -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const { vaultFactory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ api, target: vaultFactory, eventAbi: 'event VaultCreated (address indexed vault, address indexed asset, address initialMarket)', onlyArgs: true, fromBlock, }) - const toa = logs.map(l => [l.asset, l.initialMarket]) - return api.sumTokens({ tokensAndOwners: toa }) - } - } -}) diff --git a/projects/cryptex-v2/index.js b/projects/cryptex-v2/index.js deleted file mode 100644 index ad23e81b799..00000000000 --- a/projects/cryptex-v2/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const config = { - arbitrum: { - collateralContract: '0xaf8ced28fce00abd30463d55da81156aa5aeeec2', - products: [ - '0xea281a4c70ee2ef5ce3ed70436c81c0863a3a75a', // TCAP LP - '0x4243b34374cfb0a12f184b92f52035d03d4f7056', // TCAP Short - '0x1cd33f4e6edeee8263aa07924c2760cf2ec8aad0', // TCAP Long - ] - } -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const { collateralContract, products, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const token = await api.call({ abi: 'address:token', target: collateralContract }) - const bals = await api.multiCall({ abi: 'function collateral(address) view returns (uint256)', calls: products, target: collateralContract }) - bals.forEach(i => api.add(token, i)) - } - } -}) diff --git a/projects/cryptex/cryptex-config.js b/projects/cryptex/cryptex-config.js deleted file mode 100644 index 4aa6ca6f18d..00000000000 --- a/projects/cryptex/cryptex-config.js +++ /dev/null @@ -1,12 +0,0 @@ - -const cryptexConfig = { - crxToken: "0x97a30C692eCe9C317235d48287d23d358170FC40", - staking: { - V1: "0x4Dc421AEc34397b447bA1469bcD2C4185224ceC4", - V2: "0x2DA458781F0BAf868009deD0512a96989bEaE841" - }, -} - -module.exports = { - cryptexConfig, -} \ No newline at end of file diff --git a/projects/cryptex/index.js b/projects/cryptex/index.js deleted file mode 100644 index 622c2ceb7de..00000000000 --- a/projects/cryptex/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { stakings } = require('../helper/staking') - -const { - cryptexConfig, -} = require('./cryptex-config'); - -module.exports = { - methodology: "TVL includes locked LP tokens and vested team tokens", - bsc: { - tvl: ()=>({}), - staking: stakings([cryptexConfig.staking.V1, cryptexConfig.staking.V2, ], cryptexConfig.crxToken) - } -}; \ No newline at end of file diff --git a/projects/crypto-com/index.js b/projects/crypto-com/index.js deleted file mode 100644 index 377bcf63c44..00000000000 --- a/projects/crypto-com/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.cryptoCom, - }, - ethereum: { - owners: [ - '0x72a53cdbbcc1b9efa39c834a540550e23463aacb', - '0x6262998ced04146fa42253a5c0af90ca02dfd2a3', - '0xcffad3200574698b78f32232aa9d63eabd290703', - '0x7758e507850da48cd47df1fb5f875c23e3340c50', - '0x46340b20830761efd32832a74d7169b29feb9758', - '0xf3b0073e3a7f747c7a38b36b805247b222c302a3', - ], - }, - bsc: { - owners: [ - '0x72A53cDBBcc1b9efa39c834A540550e23463AAcB', - '0xcffad3200574698b78f32232aa9d63eabd290703', - '0x7758e507850da48cd47df1fb5f875c23e3340c50', - '0xcffad3200574698b78f32232aa9d63eabd290703' - ] - }, - polygon: { - owners: [ - '0x72A53cDBBcc1b9efa39c834A540550e23463AAcB', - '0xcffad3200574698b78f32232aa9d63eabd290703', - '0x6262998Ced04146fA42253a5C0AF90CA02dfd2A3', - '0x7758e507850da48cd47df1fb5f875c23e3340c50', - '0xcffad3200574698b78f32232aa9d63eabd290703' - ] - }, - arbitrum: { - owners: [ - '0xcffad3200574698b78f32232aa9d63eabd290703', - '0x6262998Ced04146fA42253a5C0AF90CA02dfd2A3', - '0x72A53cDBBcc1b9efa39c834A540550e23463AAcB', - '0x7758e507850da48cd47df1fb5f875c23e3340c50', - '0xcffad3200574698b78f32232aa9d63eabd290703' - ] - }, - avax: { - owners: [ - '0xcffad3200574698b78f32232aa9d63eabd290703', - '0x6262998Ced04146fA42253a5C0AF90CA02dfd2A3', - '0x72A53cDBBcc1b9efa39c834A540550e23463AAcB', - '0x7758e507850da48cd47df1fb5f875c23e3340c50', - '0xcffad3200574698b78f32232aa9d63eabd290703' - ] - }, - optimism: { - owners: [ - '0xcffad3200574698b78f32232aa9d63eabd290703', - '0x6262998Ced04146fA42253a5C0AF90CA02dfd2A3', - '0x72A53cDBBcc1b9efa39c834A540550e23463AAcB', - '0x7758e507850da48cd47df1fb5f875c23e3340c50', - '0xcffad3200574698b78f32232aa9d63eabd290703' - ] - }, - fantom: { - owners: [ - '0x6262998Ced04146fA42253a5C0AF90CA02dfd2A3', - '0x72A53cDBBcc1b9efa39c834A540550e23463AAcB', - '0x7758e507850da48cd47df1fb5f875c23e3340c50', - '0xcffad3200574698b78f32232aa9d63eabd290703' - ] - } -} - -module.exports = cexExports(config) diff --git a/projects/crypto-lottery/index.js b/projects/crypto-lottery/index.js deleted file mode 100644 index 97cc3e5b21c..00000000000 --- a/projects/crypto-lottery/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -const DEFAULT_CONTRACT = '0x80b313Be000c42f1f123C7FBd74654544818Ba7c'; -const BSC_CONTRACT = '0xbB183c396392d08B5f4b19909C7Ce58f9c86F637'; -const config = { - bsc: [BSC_CONTRACT], - csc: [DEFAULT_CONTRACT], - celo: [DEFAULT_CONTRACT], - polygon: [DEFAULT_CONTRACT], - kcc: ['0xED6aDb0d3340005C24B90B810b47bd8648e20199'], - avax: [DEFAULT_CONTRACT], -} - -module.exports = { - methodology: "We count of smart contract balance in coins", - deadFrom: "2024-09-11", - hallmarks: [ - ['2024-09-11', 'Closed due to lack of interest'], - ], -} - -Object.keys(config).forEach(chain => { - const owners = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ chain, tokens: [nullAddress], owners, }) - } -}) diff --git a/projects/cryptoblades/index.js b/projects/cryptoblades/index.js deleted file mode 100644 index c602a017e16..00000000000 --- a/projects/cryptoblades/index.js +++ /dev/null @@ -1,83 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const transformKey = () => 'bsc:0x154a9f9cbd3449ad22fdae23044319d6ef2a1fab'; - -const config = { - bsc: { - SKILL_TOKEN_CONTRACT: '0x154a9f9cbd3449ad22fdae23044319d6ef2a1fab', - STAKING: [ - '0x895BF27C99822Ef5ba88A3E6764F6247e13f0dfA', - '0xd6b2D8f59Bf30cfE7009fB4fC00a7b13Ca836A2c', - '0xc42dF5397B3C0B45DeDaCB83F7aDb1F30B73097d', - '0x3C06533B42A802f3Ac0E770CCBBeA9fa7Cae9572', - ], - GAME_CONTRACT: '0x39Bea96e13453Ed52A734B6ACEeD4c41F57B2271', - TREASURY_CONTRACT: '0x812Fa2f7d89e5d837450702bd51120920dccaA99' - }, - heco: { - SKILL_TOKEN_CONTRACT: '0x27d4DfDB3fDf58e198bA4dbc23B2F82c0b8e3405', - STAKING: [ - '0x9810A3f2D59772f04846acA2Ba0F01caE6f43B9c', - '0x6109A500e5b9CE40FFe075Ea3A6beA6e93c23BcF', - ], - GAME_CONTRACT: '0x29869EDb088466a49f75654d8F04edd16Bf60e75', - TREASURY_CONTRACT: '0x7843Bd2aDdE5E54bD6e61C28fA89009240a48C08' - }, - okexchain: { - SKILL_TOKEN_CONTRACT: '0xcC137b0713E0DC63b1fA136272014F2A54Dd7aCB', - STAKING: [ - '0xC5707a6a16CCe1963Ec3E6cdEE0A91e4876Be395', - '0x105A0Aa801080A89465bA1f8b6696971FD5F3a6D', - ], - GAME_CONTRACT: '0x98145a2fEBac238280bbdEDc2757dC162318b16e', - TREASURY_CONTRACT: '0xcBEfF02841370997054AdfF624dC490C8cB20406' - }, - polygon: { - SKILL_TOKEN_CONTRACT: '0x863D6074aFaF02D9D41A5f8Ea83278DF7089aA86', - STAKING: [ - '0xE34e7cA8e64884E3b5Cd48991ba229d8302E85da', - '0x96a5448BB59aD9Cccc3a4112c2c57a420768b499', - ], - GAME_CONTRACT: '0x070b1A95898B927A900A1F9F42b114154648E51A', - TREASURY_CONTRACT: '0x216AC39765D920D7f86162Daf9BE1f045f321A8D' - }, - avax: { - SKILL_TOKEN_CONTRACT: '0x483416eB3aFA601B9C6385f63CeC0C82B6aBf1fb', - STAKING: [ - '0x96438Debb1419bF0B53119Edae6e664c931504CA', - '0xE8f14F0a5a5f059ae060664e0f165B7e5A52e4e5', - ], - GAME_CONTRACT: '0x46419526a59ec1d73b72620ae16da091bE8486bd', - TREASURY_CONTRACT: '0x5B1cCb62D2F9c8523abBa89A56432005cef03b99' - }, - aurora: { - SKILL_TOKEN_CONTRACT: '0xE723111a6Ac865EB6E2d62e87432bdC6e2c4a86E', - STAKING: [ - '0x5F6E97612482095C0c2C02BC495C0171e61017d7', - '0x07f8aA038CD6a3B5FDC6ed58F608Eb33d98b299e', - ], - GAME_CONTRACT: '0x3F715995647fe44Db45411bb9e81b7A1aD5A8387', - TREASURY_CONTRACT: '0x483416eB3aFA601B9C6385f63CeC0C82B6aBf1fb' - }, - kava: { - SKILL_TOKEN_CONTRACT: '0xC28a73FCb6248Cb1718A50a9EC9cBC361dee3ea1', - STAKING: [ - '0xA0D3F71E7CbCac550bb3f71C27f91a436A02dEC5', - '0xCb850EEd27fF37B591c88967b5E7bC63De121FBd', - ], - GAME_CONTRACT: '0x912252d3f7DaD807d122F7DBAd3D8245fc364C3d', - TREASURY_CONTRACT: '0x26B4DCb50e07323AC875c071b4F0a1E77b259d29' - } -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { SKILL_TOKEN_CONTRACT, STAKING, } = config[chain] - module.exports[chain] = { - tvl: () => ({}), - staking: (_, _b, { [chain]: block }) => { - return sumTokens2({ chain, block, tokens: [SKILL_TOKEN_CONTRACT], owners: STAKING, transformAddress: transformKey, }) - }, - } -}) diff --git a/projects/cryptomate.js b/projects/cryptomate.js deleted file mode 100644 index 17b092c0e70..00000000000 --- a/projects/cryptomate.js +++ /dev/null @@ -1,6 +0,0 @@ - -module.exports = { - stacks: { - tvl: () => ({}), - }, -}; \ No newline at end of file diff --git a/projects/cryptoswap/index.js b/projects/cryptoswap/index.js deleted file mode 100644 index b4f8c6a73ad..00000000000 --- a/projects/cryptoswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: 'The CryptoSwap subgraph and the CryptoSwap factory contract address are used to obtain the balance held in every LP pair.', - bsc: { - tvl: getUniTVL({ factory: '0x4136A450861f5CFE7E860Ce93e678Ad12158695C', useDefaultCoreAssets: true }), - }, - start: '2022-05-02', // Mon May 02 2022 12:21:54 -}; diff --git a/projects/cryptovalley/index.js b/projects/cryptovalley/index.js deleted file mode 100644 index 81ac2bf5f7e..00000000000 --- a/projects/cryptovalley/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - blast: { - tvl: () => ({}), - staking: staking("0x6b4e27661ea80f47b9a48331fe6d0260b1ecb28a", "0x67fa2887914fa3729e9eed7630294fe124f417a0") - } -} \ No newline at end of file diff --git a/projects/cryptoyieldfocus/index.js b/projects/cryptoyieldfocus/index.js deleted file mode 100644 index cda28d3fcec..00000000000 --- a/projects/cryptoyieldfocus/index.js +++ /dev/null @@ -1,12 +0,0 @@ - -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'avax', - masterchef: '0xaB0141F81b3129f03996D0679b81C07F6A24c435', - nativeToken: '0x411491859864797792308723Fc417f11BbA18D1b' -}) - -module.exports.hallmarks = [ - [1631318400, "Rug Pull"] - ] diff --git a/projects/crystalvale/index.js b/projects/crystalvale/index.js deleted file mode 100644 index 1efa9d72253..00000000000 --- a/projects/crystalvale/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require("../helper/staking"); - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x794C07912474351b3134E6D6B3B7b3b4A07cbAAa) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - dfk: { - staking: staking("0x6E7185872BCDf3F7a6cBbE81356e50DAFFB002d2", "0x04b9dA42306B023f3572e106B11D82aAd9D32EBb", "dfk", "defi-kingdoms-crystal", 18), - tvl: getUniTVL({ factory: '0x794C07912474351b3134E6D6B3B7b3b4A07cbAAa', useDefaultCoreAssets: true }), - }, -}; - diff --git a/projects/crystl/index.js b/projects/crystl/index.js deleted file mode 100644 index 32c97104309..00000000000 --- a/projects/crystl/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { get } = require("../helper/http"); -const { sumTokens2, } = require("../helper/unwrapLPs"); - -const wantLockedTotalABI = "uint256:wantLockedTotal" - -let _pools - -async function getPools(api) { - if (!_pools) _pools = getConfig('crystl', undefined, { fetcher: _getPools }) - let p = (await _pools).filter(i => +i.chainId === api.chainId) - const pObject = p.reduce((acc, i) => ({ ...acc, [i.strategyAddress]: i }), {}) - return Object.values(pObject) - - async function _getPools() { - const poolsResponse = await Promise.all([ - 'https://raw.githubusercontent.com/polycrystal/crystl-config/main/vaults/vaults.json', - 'https://raw.githubusercontent.com/polycrystal/crystl-config/main/vaults/vaultsV3.json', - 'https://raw.githubusercontent.com/polycrystal/crystl-config/main/pools/boostPools.json', - ].map(get)) - - const pools = poolsResponse.flat() - - pools.forEach(i => { - if (!i.strategyAddress) i.strategyAddress = i.stratAddress - if (!i.wantAddress) i.wantAddress = i.wantTokenAddress - }) - return pools - } -} - -async function tvl(api) { - const pools = await getPools(api) - const tokens = pools.map(i => i.wantAddress) - const totals = await api.multiCall({ abi: wantLockedTotalABI, calls: pools.map(i => i.strategyAddress), }) - api.add(tokens, totals) - await sumTokens2({ api, resolveLP: true }) -} - -module.exports = { - hallmarks: [ - [1656590400, "Protocol End"] // https://crystlfinance.medium.com/wrapping-up-crystl-finance-4743287a6bf - ], - polygon: { - tvl, - }, - cronos: { - tvl, - }, - bsc: { - tvl, - }, - methodology: - "Our TVL is calculated from the Total Value Locked in our Vaults, Farms, and Pools.", -}; diff --git a/projects/csigma-finance/config.js b/projects/csigma-finance/config.js deleted file mode 100644 index 3fa9a91f254..00000000000 --- a/projects/csigma-finance/config.js +++ /dev/null @@ -1,53 +0,0 @@ -const instituitionalContractAddress = { - ethereum: { - address: '0xF80bA51189763B7AC484A23f7d7695345B1149C9', - startBlock: 18467881 - }, - arbitrum: { - address: '0x45dCf4F9d1B47C138Bc1E490a878790932d66caf', - startBlock: 188232859 - }, - base: { - address: '0x07D7bf6dCc4A2f03E82E3da52eBfBAe871443322', - startBlock: 23596015 - } -}; - -const edgeContractAddress = { - ethereum: { - address: '0xb5337C2e320D61bE3511216b9b4d32b2c41F3e55', - startBlock: 20882902 - }, - arbitrum: { - address: '0x4C28F5c87e5557db971c9a2F862BfdCf9f561Bd4', - startBlock: 273904688 - }, - base: { - address: '0xe76C20761BFCD471196bB61f68250DAf3dA3568B', - startBlock: 23604031 - } -}; - -const pdnContractAddress = { - address: '0x67A1fc35961dD0E293BB4481b48491aDF95b1395', - startBlock: 218221531 -}; - - -const invalidPDNPaymentIds = [ - "0x99460d3affdd3d92b7947811ee9d3081c9c2f0a9d0ee9b30af2d842f4423dd83", - "0x0d299443084dc8cc186ef3b641a82b05067687b94c03317345c3b2f25847de38", - "0x2f795b76f222b3e7a5bdf6e03f34972a72ff55ee893e70af58e638e7fb3a24d2", - "0x25faefe8041a9e5e6da9bea88c188c3bd563e09b3db3515034ecf54dbfd77eed", - "0xe206373ef521d6a43c1501252d4b93a77ca2c73219645561d93f8c1285ace4e3", - "0xf7105def091d0d87b5ec278b039017addf64a8c16f405adccd58204a20ee9f75", - "0x95487262748ad72d4ce68ef6df658e88c4194d4752d9d1c9f34994f41f047255", - "0x732e6bb2ec07cfaa156fbe35e1e5240e129ac568eb2df4e343497c9c7500113c", -] - -module.exports = { - instituitionalContractAddress, - edgeContractAddress, - pdnContractAddress, - invalidPDNPaymentIds -}; \ No newline at end of file diff --git a/projects/csigma-finance/index.js b/projects/csigma-finance/index.js deleted file mode 100644 index c0abd5b49f6..00000000000 --- a/projects/csigma-finance/index.js +++ /dev/null @@ -1,168 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') -const { sumUnknownTokens } = require('../helper/unknownTokens') - -const { - instituitionalContractAddress, - edgeContractAddress, - pdnContractAddress, - invalidPDNPaymentIds -} = require('./config.js'); - -async function getPDNTvl(api) { - const { address: factory, startBlock } = pdnContractAddress; - const logs = await getLogs({ - api, - target: factory, - topics: [], - eventAbi: `event PaymentAdded( - string indexed _paymentId, - string _lenderId, - string _poolId, - uint256 _principal, - uint256 _coupon, - uint8 _paymentType, - uint64 _timeStamp - )`, - fromBlock: startBlock, - onlyArgs: true, - }) - - const validLogs = logs.filter(log => !invalidPDNPaymentIds.includes(log[0].hash)); - const investments = validLogs.filter(log => log[5] === 0n); - const payments = validLogs.filter(log => log[5] === 1n); - const totalInvestments = investments.reduce((acc, cur) => acc + BigInt(cur[3]), BigInt(0)); - const totalPayments = payments.reduce((acc, cur) => acc + BigInt(cur[3]), BigInt(0)); - const totalTvl = Number(totalInvestments - totalPayments)/100; - api.addCGToken('usd', totalTvl); -} - -async function institutionalTvl(api) { - const chain = api.chain; - const { address: factory, startBlock } = instituitionalContractAddress[chain]; - const lastPaymentId = await api.call({ - target: factory, - abi: 'function getLastPaymentId() internal view returns (uint256)' - }); - const paymentIds = Array.from({ length: Number(lastPaymentId) + 1 }, (_, i) => i); - const payments = await Promise.all(paymentIds.map(async id => { - const payment = await api.call({ - target: factory, - abi: `function getPayment(string calldata _paymentId) internal view returns (tuple( - string roleId, - string creditPoolId, - uint8 paymentType, - uint64 timeStamp, - address from, - address to, - uint256 amount - ) memory)`, - params: [`${id}`] - }); - return payment; - })); - - const lenderIDs = payments.filter(payment => +payment[2] === 2).map(payment => payment[0]); - const uniqeLenderIDs = [...new Set(lenderIDs)]; - const investments = payments.filter(payment => +payment[2] === 0 && !!payment[1]); - const investemntLenderIds = investments.map(investment => investment[0]); - const principalPaid = payments.filter(payment => (+payment[2] === 5 || +payment[2] === 6) && !!payment[1]).filter(payment => investemntLenderIds.includes(payment[0])); - const poolIDs = [ - ...new Set([ - ...investments.map(investment => investment[1]), - ...principalPaid.map(principal => principal[1]) - ]) - ]; - const poolTokens = (await Promise.all(poolIDs.map(async poolID => { - const poolToken = await api.call({ - target: factory, - abi: `function getPoolToken(string memory _poolId) internal view returns (address)`, - params: [poolID] - }); - return { poolID, poolToken }; - }))).reduce((acc, cur) => { - acc[cur.poolID] = cur.poolToken - return acc; - }, {}); - - await Promise.all(uniqeLenderIDs.map(async lenderID => { - const [usdtBalance, usdcBalance] = await Promise.all([ - api.call({ - target: factory, - abi: 'function getTokenBalance(string calldata _roleId, address _token) external view returns (uint256)', - params: [lenderID, ADDRESSES[chain].USDT] - }), - api.call({ - target: factory, - abi: 'function getTokenBalance(string calldata _roleId, address _token) external view returns (uint256)', - params: [lenderID, ADDRESSES[chain].USDC] - }), - ]); - api.add(ADDRESSES[chain].USDT, usdtBalance); - api.add(ADDRESSES[chain].USDT, usdcBalance); - })); - - const totalInvestments = {}; - investments.forEach(i => { - const poolId = i[1]; - const amount = i[6]; - totalInvestments[poolTokens[poolId]] = BigInt(totalInvestments[poolTokens[poolId]] || 0) + BigInt(amount); - }) - - const totalPrincipalPaid = {}; - principalPaid.forEach(p => { - const poolId = p[1]; - const amount = p[6]; - totalPrincipalPaid[poolTokens[poolId]] = BigInt(totalPrincipalPaid[poolTokens[poolId]] || 0) + BigInt(amount); - }) - - Object.keys(totalInvestments).forEach(token => { - const remainingBalance = totalInvestments[token] - totalPrincipalPaid[token]; - api.add(token, remainingBalance); - }); -} - -async function edgeTvl(api) { - const chain = api.chain; - // TVL of edge - const { address: factory, startBlock } = edgeContractAddress[chain]; - const logs = await getLogs({ - api, - target: factory, - topics: ['0xbc6f53152e9aa8c4c80947b978ba84ae6d4f83b9762aa13cddad1d22cf26d173'], - eventAbi: `event PoolCreated(address _pool, address indexed _poolManager, address _fundManager, address indexed _poolToken, - address indexed _oracleManager, - uint256 _poolAPY, - uint256 _poolSize - )`, - onlyArgs: true, - fromBlock: startBlock, - }) - const pools = logs.map(log => log[0]); - - const tokens = await Promise.all(pools.map(async pool => { - const poolToken = await api.call({ - target: pool, - abi: "address:poolToken" - }); - return poolToken - })); - await api.sumTokens({ owners: pools, tokens: [...new Set(tokens)], chain, block: 'latest' }) -} - -async function getTvl(api) { - await institutionalTvl(api); - await edgeTvl(api); - const chain = api.chain; - if(chain === 'arbitrum') { - await getPDNTvl(api); - return; - } -} - -module.exports = { - 'arbitrum': { tvl: getTvl }, - 'ethereum': { tvl: getTvl }, - 'base': { tvl: getTvl }, - methodology: `The TVL of Csigma Finance is calculated by querying smart contracts on Ethereum, Arbitrum, and Base. It includes the total investments in institutional pools, balances in Edge pools, and private debt network investments (on Arbitrum) while subtracting repayments. Token balances (USDT/USDC) are fetched on-chain, and the final TVL is derived by summing these values.`, -} \ No newline at end of file diff --git a/projects/csix/index.js b/projects/csix/index.js deleted file mode 100644 index 0b66fcdd4be..00000000000 --- a/projects/csix/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const CSIX_TOKEN = "0x04756126F044634C9a0f0E985e60c88a51ACC206"; -const STAKING_CONTRACT_V1 = "0xadc743298F6339Cd8ebC0Dc58D4E19C2065D6b4f"; -const STAKING_CONTRACT_V2 = "0xA4f55D251b8fa8e0C291CC539F020c5Cbe4a9FA8"; -const STAKING_CONTRACT_V3 = "0x7c7C76e4D47872A7B73FA15306A9Ebb673796dDc"; - -async function staking(api) { - const staked = await api.multiCall({ - abi: "uint256:totalStaked", - calls: [STAKING_CONTRACT_V1, STAKING_CONTRACT_V2, STAKING_CONTRACT_V3], - }); - staked.forEach((i) => api.add(CSIX_TOKEN, i)); - return api.getBalances(); -} - -module.exports = { - hallmarks: [ - [1676338485, "Staking V1"], - [1700652398, "Staking V2"], - [1708909450, "Staking V3"], - ], - bsc: { - tvl: () => ({}), - staking, - }, - methodology: "Counts as TVL the CSIX deposited through Staking Contract", -}; diff --git a/projects/csrfi/index.js b/projects/csrfi/index.js deleted file mode 100644 index 8e89d747c20..00000000000 --- a/projects/csrfi/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const CONTRACTS = [ - "0xe73191C7D3a47E45780c76cB82AE091815F4C8F9", - "0xbe1Be54f6251109d5fB2532b85d7eE9Cb375C43f", - "0x33544082114fF42974B2965e057e24AC52b75871", -]; - -module.exports = { - methodology: "Value of all Canto in the CSR contracts", - canto: { - tvl: sumTokensExport({ tokens: [nullAddress], owners: CONTRACTS}), - }, -}; diff --git a/projects/cswap-dex/index.js b/projects/cswap-dex/index.js deleted file mode 100644 index 3ca93540271..00000000000 --- a/projects/cswap-dex/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); - -const DEX_POOL_ADDR = "addr1z8ke0c9p89rjfwmuh98jpt8ky74uy5mffjft3zlcld9h7ml3lmln3mwk0y3zsh3gs3dzqlwa9rjzrxawkwm4udw9axhs6fuu6e"; -const DEX_ORDERBOOK_ADDR = "addr1z8d9k3aw6w24eyfjacy809h68dv2rwnpw0arrfau98jk6nhv88awp8sgxk65d6kry0mar3rd0dlkfljz7dv64eu39vfs38yd9p"; -const STAKING_ADDR = 'addr1zydjdnzpmnv9xzjt4xh9sjfzkk2hcdj4sw39ak58wpvh56cgjrxwszhuqj73gufx56c8qwnuhvf2nw5dzdr5f50rqr5q2m7uqv'; - -const CONTRACT_ADDRESSES = [ DEX_POOL_ADDR, DEX_ORDERBOOK_ADDR ]; -const CSWAP_ASSET_ID = 'c863ceaa796d5429b526c336ab45016abd636859f331758e67204e5c4353574150'; - -// new TVL using the DEX -async function tvl() { - const assetsLocked = await sumTokens2({ - owners: CONTRACT_ADDRESSES} - ) - - return assetsLocked -} - -async function staking() { - const assetsStaked = await sumTokens2({ - owner: STAKING_ADDR, - tokens: [ CSWAP_ASSET_ID ] - }); - return assetsStaked -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - staking - }, -} diff --git a/projects/cswap/index.js b/projects/cswap/index.js deleted file mode 100644 index 23c9b0685c6..00000000000 --- a/projects/cswap/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { transformDexBalances } = require('../helper/portedTokens') -const { get } = require('../helper/http') - -module.exports = { - deadFrom: '2024-09-17', - hallmarks: [[1726531200,'Sunset of cSwap']], - timetravel: false, - misrepresentedTokens: true, - comdex: { - tvl: async () => { - let page = 1 - let data = [] - let nextKey - - do { - const paginationKey = nextKey ? `pagination.key=${nextKey}` : '' - const api = `https://rest.comdex.one/comdex/liquidity/v1beta1/pools/1?${paginationKey}` - const { pagination, pools } = await get(api) - pools.forEach(i => { - if (!i.balances.base_coin || !i.balances.quote_coin) return; - data.push({ - token0: i.balances.base_coin.denom, - token1: i.balances.quote_coin.denom, - token0Bal: i.balances.base_coin.amount, - token1Bal: i.balances.quote_coin.amount, - }) - }) - page++ - nextKey = pagination.next_key - } while (nextKey) - - return transformDexBalances({ chain: 'comdex', data }) - } - } -} \ No newline at end of file diff --git a/projects/ctez/index.js b/projects/ctez/index.js deleted file mode 100644 index 17e7f9892c3..00000000000 --- a/projects/ctez/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getStorage, getBigMapById, getTezosBalance } = require('../helper/chain/tezos') - -const OVEN_FACTORY = 'KT1GWnsoFZVHGh7roXEER3qeCcgJgrXT3de2' -const CLMM = 'KT1H5b7LxEExkFd2Tng77TfuWbM5aPvHstPr' - -module.exports = { - timetravel: false, - tezos: { - tvl: async () => { - const data = await getStorage(OVEN_FACTORY) - const pools = await getBigMapById(data.ovens); - let sum = await getTezosBalance(CLMM) - Object.values(pools).forEach(i => { - sum += i.tez_balance / 1e6 - }) - return { tezos: sum } - }, - } -} \ No newline at end of file diff --git a/projects/cuanswap/index.js b/projects/cuanswap/index.js deleted file mode 100644 index 519e6e011b4..00000000000 --- a/projects/cuanswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ factory: '0x23556027Ad3C3e76160AcA51e8098C395a6d815C', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/cubfinance/abi.json b/projects/cubfinance/abi.json deleted file mode 100644 index b5e15b2c10c..00000000000 --- a/projects/cubfinance/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "wantLockedTotal": "uint256:wantLockedTotal", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCubPerShare, uint16 depositFeeBP)", - "balanceOf": "function balanceOf(address) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/cubfinance/index.js b/projects/cubfinance/index.js deleted file mode 100644 index 82be384f66b..00000000000 --- a/projects/cubfinance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const sdk = require('@defillama/sdk'); -const abi = require('./abi.json'); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { yieldHelper } = require('../helper/yieldHelper') - -const cubFarmAddress = '0x227e79c83065edb8b954848c46ca50b96cb33e16'; -const cubKingdomFarmAddress = '0x2E72f4B196b9E5B89C29579cC135756a00E6CBBd'; -const cub = '0x50d809c74e0b8e49e7b4c65bb3109abe3ff4c1c1' - -async function tvl(api) { - const farms = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: cubFarmAddress}) - return sumTokens2({ api, owner: cubFarmAddress, tokens: farms.map(i => i.lpToken), blacklistedTokens: [cub, '0x5E719AA339a6229692cf4163Eb0D966ACF93Ce28',], resolveLP: true, }) -} - -const kingdomTvl = yieldHelper({ - project: 'cub-finance', - chain: 'bsc', - masterchef: cubKingdomFarmAddress, - nativeToken: cub, -}) - -module.exports = { ...kingdomTvl } - -module.exports.bsc.tvl = sdk.util.sumChainTvls([kingdomTvl.bsc.tvl, tvl]) \ No newline at end of file diff --git a/projects/cubiswap/index.js b/projects/cubiswap/index.js deleted file mode 100644 index 51750a173ef..00000000000 --- a/projects/cubiswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const FACTORY = "0xE6c8488a3078f474D0B75E4ac06a369e3Fb39d76" // This factory is on opBNB Mainnet (Chain Id: 204) - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, permitFailure: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address to find and price Liquidity Pool pairs.`, - op_bnb: { - tvl: dexTVL, - } -}; \ No newline at end of file diff --git a/projects/cubo/index.js b/projects/cubo/index.js deleted file mode 100644 index 635ae20dc8b..00000000000 --- a/projects/cubo/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - polygon: { - tvl: () => 0, - }, - methodology: `TVL on polygon is sum of all collateralTokens (dai only atm) provided to mint nodes`, -} - -module.exports.deadFrom = '2023-01-09' \ No newline at end of file diff --git a/projects/cupid/index.js b/projects/cupid/index.js deleted file mode 100644 index ea8928eba42..00000000000 --- a/projects/cupid/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0xBCec0e5736614D8Bd05502A240526836bA0bBFc5', - nativeToken: '0xD4C000c09bfeF49ABBd5c3728fcec3a42c68eBa1' -}) \ No newline at end of file diff --git a/projects/curve/abi.json b/projects/curve/abi.json deleted file mode 100644 index 1e5a53712a8..00000000000 --- a/projects/curve/abi.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "get_registry": "address:get_registry", - "pool_list": "function pool_list(uint256 arg0) view returns (address)", - "pool_count": "uint256:pool_count", - "get_id_info": "function get_id_info(uint256 arg0) view returns (address addr, bool is_active, uint256 version, uint256 last_modified, string description)", - "get_n_coins": { - "stableswap": "function get_n_coins(address _pool) view returns (uint256[2])", - "stableFactory": "function get_n_coins(address _pool) view returns (uint256)", - "crypto": "function get_n_coins(address _pool) view returns (uint256)", - "cryptoFactory": "function get_n_coins(address _pool) view returns (uint256)", - "triCryptoFactory": "function get_coins(address _pool) view returns (address[3])", - "CurveStableswapFactoryNG": "function get_n_coins(address _pool) view returns (uint256)" - }, - "get_coins": { - "stableswap": "function get_coins(address _pool) view returns (address[8])", - "stableFactory": "function get_coins(address _pool) view returns (address[4])", - "crypto": "function get_coins(address _pool) view returns (address[8])", - "cryptoFactory": "function get_coins(address _pool) view returns (address[2])", - "triCryptoFactory": "function get_coins(address _pool) view returns (address[3])", - "CurveStableswapFactoryNG": "function get_coins(address _pool) view returns (address[])", - "CurveTwocryptoFactoryNG": "function get_coins(address _pool) view returns (address[2])", - "CurveTricryptoFactoryNG": "function get_coins(address _pool) view returns (address[3])" - } -} \ No newline at end of file diff --git a/projects/curve/contracts.json b/projects/curve/contracts.json deleted file mode 100644 index 2678cc41150..00000000000 --- a/projects/curve/contracts.json +++ /dev/null @@ -1,281 +0,0 @@ -{ - "ethereum": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "CRV": "0xd533a949740bb3306d119cc777fa900ba034cd52", - "veCRV": "0x5f3b5dfeb7b28cdbd7faba78963ee202a494e2a2", - "wrapped": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "metapoolBases": { - "3CRV": "0x6c3f90f043a72fa612cbac8115ee7e52bde6e490", - "crvRenWSBTC": "0x075b1bb99792c9e1041ba13afef80c91a1e70fb3" - }, - "yearnTokens": { - "yDAI1": "0xc2cb1040220768554cf699b0d863a3cd4324ce32", - "yUSDT1": "0xe6354ed5bc4b393a5aad09f21c46e101e692d447", - "yDAI2": "0x16de59092dae5ccf4a1e6439d611fd0653f0bd01", - "yUSDC": "0xd6ad7a6750a7593e092a9b218d66c0a814a3436e", - "yUSDT2": "0x83f798e925bcd4017eb265844fddabb448f1707d", - "ycDAI": "0x99d1fa417f94dcd62bfe781a1213c092a47041bc", - "ycUSDC": "0x9777d7e2b60bb01759d0e2f8be2095df444cb07e", - "ycUSDT": "0x1be5d71f2da660bfdee8012ddc58d024448a0a59" - }, - "creamTokens": { - "cyDAI": "0x8e595470ed749b85c6f7669de83eae304c2ec68f", - "cyUSDC": "0x76eb2fe28b36b3ee97f3adae0c69606eedb2a37c", - "cyUSDT": "0x48759f220ed983db51fa7a8c0d2aab8f3ce4166a" - }, - "sdTokens": { - "sdCrv": "0xd1b5651e55d4ceed36251c61c50c889b36f6abb5", - "sdANGLE": "0x752b4c6e92d96467fe9b9a2522ef07228e00f87c", - "sdFXS": "0x402f878bdd1f5c66fdaf0fababcf74741b68ac36", - "sdBAL": "0xf24d8651578a55b0c119b9910759a351a3458895" - }, - "fxTokens": { - "ibKRW": { - "address": "0x95dfdc8161832e4ff7816ac4b6367ce201538253", - "currency": "KRW" - } - }, - "blacklist": [ - "0x69000dFD5025E82f48Eb28325A2B88a241182CEd" - ], - "CurveStableswapFactoryNG": "0x6A8cbed756804B16E05E741eDaBd5cB544AE21bf", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0x0c0e5f2fF0ff18a3be9b835635039256dC4B4963" - }, - "polygon": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - "metapoolBases": { - "am3CRVg": "0xe7a24ef0c5e95ffb0f6684b813a78f2a3ad7d171", - "am3CRV": "0x19793b454d3afc7b454f206ffe95ade26ca6912c", - "4eur-f": "0xad326c253a84e9805559b73a08724e11e49ca651" - }, - "blacklist": [ - "0xd6d9bc8e2b894b5c73833947abdb5031cc7a4894", - "0xa7fd7d83e2d63f093b71c5f3b84c27cff66a7802", - "0xacfbe6979d58b55a681875fc9adad0da4a37a51b" - ], - "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0xC1b393EfEF38140662b91441C6710Aa704973228" - }, - "arbitrum": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - "metapoolBases": { - "2CRV": "0xbf7e49483881c76487b0989cd7d9a8239b20ca41" - }, - "CurveStableswapFactoryNG": "0x9AF14D26075f142eb3F292D5065EB3faa646167b", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0xbC0797015fcFc47d9C1856639CaE50D0e69FbEE8" - }, - "aurora": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xc9bdeed33cd01541e1eed10f90519d2c06fe3feb", - "metapoolBases": { - "3CRV": "0xbf7e49483881c76487b0989cd7d9a8239b20ca41" - }, - "CurveStableswapFactoryNG": "0x5eeE3091f747E60a045a2E715a4c71e600e31F6E", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0xC1b393EfEF38140662b91441C6710Aa704973228" - }, - "avax": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "metapoolBases": { - "av3CRV": "0xb0d2eb3c2ca3c6916fab8dcbf9d9c165649231ae" - }, - "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0x3d6cB2F6DcF47CDd9C13E4e3beAe9af041d8796a" - }, - "fantom": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", - "metapoolBases": { - "2CRV": "0x27e611fd27b276acbd5ffd632e5eaebec9761e40", - "g3CRV": "0xd4f94d0aaa640bbb72b5eec2d85f6d114d81a88e" - }, - "creamTokens": { - "iDAI": "0x04c762a5df2fa02fe868f25359e0c259fb811cfe", - "iUSDC": "0x328a7b4d538a2b3942653a9983fda3c12c571141", - "iFUSDT": "0x70fac71debfd67394d1278d98a29dea79dc6e57a", - "scUSDC": "0xe45ac34e528907d0a0239ab5db507688070b20bf", - "scDAI": "0x8d9aed9882b4953a0c9fa920168fa1fdfa0ebe75", - "scFUSDT": "0x02224765bc8d54c21bb51b0951c80315e1c263f9", - "scMIM": "0x90b7c21be43855afd2515675fc307c084427404f" - }, - "CurveStableswapFactoryNG": "0xe61Fb97Ef6eBFBa12B36Ffd7be785c1F5A2DE66b", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0x9AF14D26075f142eb3F292D5065EB3faa646167b" - }, - "harmony": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a", - "metapoolBases": { - "3CRV": "0xc5cfada84e902ad92dd40194f0883ad49639b023" - } - }, - "celo": { - "addressProvider": "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", - "registriesMapping": { - "stableFactory": "0x5277a0226d10392295e8d383e9724d6e416d6e6c" - }, - "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585" - }, - "base": { - "wrapped": "0x4200000000000000000000000000000000000006", - "registriesMapping": { - "stableFactory": "0x3093f9B57A428F3EB6285a589cb35bEA6e78c336", - "cryptoFactory": "0x5EF72230578b3e399E6C6F4F6360edF95e83BBfd" - }, - "CurveStableswapFactoryNG": "0xd2002373543Ce3527023C75e7518C274A51ce712", - "CurveTwocryptoFactoryNG": "0xc9Fe0C63Af9A39402e8a5514f9c43Af0322b665F", - "CurveTricryptoFactoryNG": "0xa5961898870943c68037f6848d2d866ed2016bcb" - }, - "optimism": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x4200000000000000000000000000000000000006", - "metapoolBases": { - "3CRV": "0x1337bedc9d22ecbe766df105c9623922a27963ec" - }, - "CurveStableswapFactoryNG": "0x5eeE3091f747E60a045a2E715a4c71e600e31F6E", - "CurveTricryptoFactoryNG": "0xc6C09471Ee39C7E30a067952FcC89c8922f9Ab53", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F" - }, - "xdai": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d", - "metapoolBases": { - "3CRV": "0x1337bedc9d22ecbe766df105c9623922a27963ec" - }, - "CurveStableswapFactoryNG": "0xbC0797015fcFc47d9C1856639CaE50D0e69FbEE8" - }, - "moonbeam": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x4244eb811d6e0ef302326675207a95113db4e1f8", - "metapoolBases": {} - }, - "fraxtal": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "metapoolBases": {}, - "CurveStableswapFactoryNG": "0xd2002373543Ce3527023C75e7518C274A51ce712", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0xc9Fe0C63Af9A39402e8a5514f9c43Af0322b665F" - }, - "kava": { - "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xc86c7c0efbd6a49b35e8714c5f59d99de09a225b", - "metapoolBases": {}, - "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585" - }, - "xlayer": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "metapoolBases": {}, - "CurveStableswapFactoryNG": "0x5eee3091f747e60a045a2e715a4c71e600e31f6e", - "CurveTwocryptoFactoryNG": "0x0c59d36b23f809f8b6c7cb4c8c590a0ac103baef", - "CurveTricryptoFactoryNG": "0xd3b17f862956464ae4403ccf829ce69199856e1e" - }, - "bsc": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "metapoolBases": {}, - "CurveStableswapFactoryNG": "0xd7e72f3615aa65b92a4dbdc211e296a35512988b", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0xc55837710bc500F1E3c7bb9dd1d51F7c5647E657" - }, - "mantle": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "metapoolBases": {}, - "CurveStableswapFactoryNG": "0x5eee3091f747e60a045a2e715a4c71e600e31f6e", - "CurveTwocryptoFactoryNG": "0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F", - "CurveTricryptoFactoryNG": "0x0C9D8c7e486e822C29488Ff51BFf0167B4650953" - }, - "taiko": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xA51894664A773981C6C112C43ce576f315d5b1B6", - "CurveStableswapFactoryNG": "0x06452f9c013fc37169B57Eab8F50A7A48c9198A3", - "CurveTwocryptoFactoryNG": "0xFAbC421e3368D158d802684A217a83c083c94CeB", - "CurveTricryptoFactoryNG": "0x0C9D8c7e486e822C29488Ff51BFf0167B4650953" - }, - "plasma": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x6100E367285b01F48D07953803A2d8dCA5D19873", - "CurveStableswapFactoryNG": "0x8271e06E5887FE5ba05234f5315c19f3Ec90E8aD", - "CurveTwocryptoFactoryNG": "0xe7FBd704B938cB8fe26313C3464D4b7B7348c88C", - "CurveTricryptoFactoryNG": "0x6E28493348446503db04A49621d8e6C9A40015FB" - }, - "corn": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xda5dDd7270381A7C2717aD10D1c0ecB19e3CDFb2", - "CurveStableswapFactoryNG": "0xd7E72f3615aa65b92A4DBdC211E296a35512988B", - "CurveTwocryptoFactoryNG": "0x5Ea9DD3b6f042A34Df818C6c1324BC5A7c61427a", - "CurveTricryptoFactoryNG": "0x7Ca46A636b02D4aBC66883D7FF164bDE506DC66a" - }, - "sonic": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38", - "CurveStableswapFactoryNG": "0x7C2085419BE6a04f4ad88ea91bC9F5C6E6C463D8", - "CurveTwocryptoFactoryNG": "0x1A83348F9cCFD3Fe1A8C0adBa580Ac4e267Fe495", - "CurveTricryptoFactoryNG": "0x635742dCC8313DCf8c904206037d962c042EAfBd" - }, - "ink": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x4200000000000000000000000000000000000006", - "CurveStableswapFactoryNG": "0x046207cB759F527b6c10C2D61DBaca45513685CC", - "CurveTwocryptoFactoryNG": "0xd125E7a0cEddF89c6473412d85835450897be6Dc", - "CurveTricryptoFactoryNG": "0x5Ea9DD3b6f042A34Df818C6c1324BC5A7c61427a" - }, - "hyperliquid": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x5555555555555555555555555555555555555555", - "CurveStableswapFactoryNG": "0x604388Bb1159AFd21eB5191cE22b4DeCdEE2Ae22", - "CurveTwocryptoFactoryNG": "0xc9Fe0C63Af9A39402e8a5514f9c43Af0322b665F", - "CurveTricryptoFactoryNG": "0x5702BDB1Ec244704E3cBBaAE11a0275aE5b07499" - }, - "plume_mainnet": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xEa237441c92CAe6FC17Caaf9a7acB3f953be4bd1", - "CurveStableswapFactoryNG": "0x5aEa9aaDd0974e8914229a23699bB6b343c97B09", - "CurveTwocryptoFactoryNG": "0xa17b39BF1c2FE776Af38a999bE7Bb7bEa737a6EC", - "CurveTricryptoFactoryNG": "0x729c764aE95e7a9DEA9F950B5AEdbF1A9F3D7c03" - }, - "xdc": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x951857744785E80e2De051c32EE7b25f9c458C42", - "CurveStableswapFactoryNG": "0x5aEa9aaDd0974e8914229a23699bB6b343c97B09", - "CurveTwocryptoFactoryNG": "0xa17b39BF1c2FE776Af38a999bE7Bb7bEa737a6EC", - "CurveTricryptoFactoryNG": "0x729c764aE95e7a9DEA9F950B5AEdbF1A9F3D7c03" - }, - "tac": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xB63B9f0eb4A6E6f191529D71d4D88cc8900Df2C9", - "CurveStableswapFactoryNG": "0x5aEa9aaDd0974e8914229a23699bB6b343c97B09", - "CurveTwocryptoFactoryNG": "0xa17b39BF1c2FE776Af38a999bE7Bb7bEa737a6EC", - "CurveTricryptoFactoryNG": "0x729c764aE95e7a9DEA9F950B5AEdbF1A9F3D7c03" - }, - "etlk": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xc9B53AB2679f573e480d01e0f49e2B5CFB7a3EAb", - "CurveStableswapFactoryNG": "0x8271e06E5887FE5ba05234f5315c19f3Ec90E8aD", - "CurveTwocryptoFactoryNG": "0xe7FBd704B938cB8fe26313C3464D4b7B7348c88C", - "CurveTricryptoFactoryNG": "0x6E28493348446503db04A49621d8e6C9A40015FB" - }, - "plasma": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x6100E367285b01F48D07953803A2d8dCA5D19873", - "CurveStableswapFactoryNG": "0x8271e06E5887FE5ba05234f5315c19f3Ec90E8aD", - "CurveTwocryptoFactoryNG": "0xe7FBd704B938cB8fe26313C3464D4b7B7348c88C", - "CurveTricryptoFactoryNG": "0x6E28493348446503db04A49621d8e6C9A40015FB" - } -} diff --git a/projects/curve/historical/abis.js b/projects/curve/historical/abis.js deleted file mode 100644 index d289b42f864..00000000000 --- a/projects/curve/historical/abis.js +++ /dev/null @@ -1,279 +0,0 @@ - -let abis = {}; - -abis.compoundv1 = { - "TokenExchange": "event TokenExchange(address indexed buyer, int128 sold_id, uint256 tokens_sold, int128 bought_id, uint256 tokens_bought)", - "TokenExchangeUnderlying": "event TokenExchangeUnderlying(address indexed buyer, int128 sold_id, uint256 tokens_sold, int128 bought_id, uint256 tokens_bought)", - "AddLiquidity": "event AddLiquidity(address indexed provider, uint256[2] token_amounts, uint256[2] fees, uint256 invariant, uint256 token_supply)", - "RemoveLiquidity": "event RemoveLiquidity(address indexed provider, uint256[2] token_amounts, uint256[2] fees, uint256 token_supply)", - "RemoveLiquidityImbalance": "event RemoveLiquidityImbalance(address indexed provider, uint256[2] token_amounts, uint256[2] fees, uint256 invariant, uint256 token_supply)", - "CommitNewAdmin": "event CommitNewAdmin(uint256 indexed deadline, address indexed admin)", - "NewAdmin": "event NewAdmin(address indexed admin)", - "CommitNewParameters": "event CommitNewParameters(uint256 indexed deadline, uint256 A, uint256 fee, uint256 admin_fee)", - "NewParameters": "event NewParameters(uint256 A, uint256 fee, uint256 admin_fee)", - "get_virtual_price": "uint256:get_virtual_price", - "calc_token_amount": "function calc_token_amount(uint256[2] amounts, bool deposit) view returns (uint256 out) @4239939", - "add_liquidity": "function add_liquidity(uint256[2] amounts, uint256 min_mint_amount) @6479997", - "get_dy": "function get_dy(int128 i, int128 j, uint256 dx) view returns (uint256 out) @2543681", - "get_dx": "function get_dx(int128 i, int128 j, uint256 dy) view returns (uint256 out) @2543687", - "get_dy_underlying": "function get_dy_underlying(int128 i, int128 j, uint256 dx) view returns (uint256 out) @2543506", - "get_dx_underlying": "function get_dx_underlying(int128 i, int128 j, uint256 dy) view returns (uint256 out) @2543512", - "exchange": "function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) @5184573", - "exchange_underlying": "function exchange_underlying(int128 i, int128 j, uint256 dx, uint256 min_dy) @5200817", - "remove_liquidity": "function remove_liquidity(uint256 _amount, uint256[2] min_amounts) @153898", - "remove_liquidity_imbalance": "function remove_liquidity_imbalance(uint256[2] amounts, uint256 max_burn_amount) @6479708", - "commit_new_parameters": "function commit_new_parameters(uint256 amplification, uint256 new_fee, uint256 new_admin_fee) @146105", - "apply_new_parameters": "function apply_new_parameters() @133512", - "revert_new_parameters": "function revert_new_parameters() @21835", - "commit_transfer_ownership": "function commit_transfer_ownership(address _owner) @74512", - "apply_transfer_ownership": "function apply_transfer_ownership() @60568", - "revert_transfer_ownership": "function revert_transfer_ownership() @21925", - "withdraw_admin_fees": "function withdraw_admin_fees() @12831", - "kill_me": "function kill_me() @37878", - "unkill_me": "function unkill_me() @22015", - "coins": "function coins(int128 arg0) view returns (address out) @2190", - "underlying_coins": "function underlying_coins(int128 arg0) view returns (address out) @2220", - "balances": "function balances(int128 arg0) view returns (uint256 out) @2250", - "A": "uint256:A", - "fee": "uint256:fee", - "admin_fee": "uint256:admin_fee", - "owner": "address:owner", - "admin_actions_deadline": "uint256:admin_actions_deadline", - "transfer_ownership_deadline": "uint256:transfer_ownership_deadline", - "future_A": "uint256:future_A", - "future_fee": "uint256:future_fee", - "future_admin_fee": "uint256:future_admin_fee", - "future_owner": "address:future_owner" -} -abis.abiNew ={ - "TokenExchange": "event TokenExchange(address indexed buyer, int128 sold_id, uint256 tokens_sold, int128 bought_id, uint256 tokens_bought)", - "TokenExchangeUnderlying": "event TokenExchangeUnderlying(address indexed buyer, int128 sold_id, uint256 tokens_sold, int128 bought_id, uint256 tokens_bought)", - "AddLiquidity": "event AddLiquidity(address indexed provider, uint256[2] token_amounts, uint256[2] fees, uint256 invariant, uint256 token_supply)", - "RemoveLiquidity": "event RemoveLiquidity(address indexed provider, uint256[2] token_amounts, uint256[2] fees, uint256 token_supply)", - "RemoveLiquidityOne": "event RemoveLiquidityOne(address indexed provider, uint256 token_amount, uint256 coin_amount, uint256 token_supply)", - "RemoveLiquidityImbalance": "event RemoveLiquidityImbalance(address indexed provider, uint256[2] token_amounts, uint256[2] fees, uint256 invariant, uint256 token_supply)", - "CommitNewAdmin": "event CommitNewAdmin(uint256 indexed deadline, address indexed admin)", - "NewAdmin": "event NewAdmin(address indexed admin)", - "CommitNewFee": "event CommitNewFee(uint256 indexed deadline, uint256 fee, uint256 admin_fee)", - "NewFee": "event NewFee(uint256 fee, uint256 admin_fee)", - "RampA": "event RampA(uint256 old_A, uint256 new_A, uint256 initial_time, uint256 future_time)", - "StopRampA": "event StopRampA(uint256 A, uint256 t)", - "A": "uint256:A", - "A_precise": "uint256:A_precise", - "get_virtual_price": "uint256:get_virtual_price", - "calc_token_amount": "function calc_token_amount(uint256[2] amounts, bool is_deposit) view returns (uint256) @3938567", - "add_liquidity": "function add_liquidity(uint256[2] amounts, uint256 min_mint_amount) returns (uint256) @6136485", - "get_dy": "function get_dy(int128 i, int128 j, uint256 dx) view returns (uint256) @2390018", - "get_dy_underlying": "function get_dy_underlying(int128 i, int128 j, uint256 dx) view returns (uint256) @2393224", - "exchange": "function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) returns (uint256) @2617039", - "exchange_underlying": "function exchange_underlying(int128 i, int128 j, uint256 dx, uint256 min_dy) returns (uint256) @2631854", - "remove_liquidity": "function remove_liquidity(uint256 _amount, uint256[2] min_amounts) returns (uint256[2]) @163158", - "remove_liquidity_imbalance": "function remove_liquidity_imbalance(uint256[2] amounts, uint256 max_burn_amount) returns (uint256) @6136334", - "calc_withdraw_one_coin": "function calc_withdraw_one_coin(uint256 _token_amount, int128 i) view returns (uint256) @4389", - "remove_liquidity_one_coin": "function remove_liquidity_one_coin(uint256 _token_amount, int128 i, uint256 _min_amount) returns (uint256) @3826262", - "ramp_A": "function ramp_A(uint256 _future_A, uint256 _future_time) @151894", - "stop_ramp_A": "function stop_ramp_A() @148655", - "commit_new_fee": "function commit_new_fee(uint256 new_fee, uint256 new_admin_fee) @110491", - "apply_new_fee": "function apply_new_fee() @97272", - "revert_new_parameters": "function revert_new_parameters() @21925", - "commit_transfer_ownership": "function commit_transfer_ownership(address _owner) @74663", - "apply_transfer_ownership": "function apply_transfer_ownership() @60740", - "revert_transfer_ownership": "function revert_transfer_ownership() @22015", - "admin_balances": "function admin_balances(uint256 i) view returns (uint256) @3511", - "withdraw_admin_fees": "function withdraw_admin_fees() @9232", - "donate_admin_fees": "function donate_admin_fees() @74995", - "kill_me": "function kill_me() @38028", - "unkill_me": "function unkill_me() @22165", - "coins": "function coins(uint256 arg0) view returns (address) @2250", - "balances": "function balances(uint256 arg0) view returns (uint256) @2280", - "fee": "uint256:fee", - "admin_fee": "uint256:admin_fee", - "owner": "address:owner", - "token": "address:token", - "base_pool": "address:base_pool", - "base_virtual_price": "uint256:base_virtual_price", - "base_cache_updated": "uint256:base_cache_updated", - "base_coins": "function base_coins(uint256 arg0) view returns (address) @2520", - "initial_A": "uint256:initial_A", - "future_A": "uint256:future_A", - "initial_A_time": "uint256:initial_A_time", - "future_A_time": "uint256:future_A_time", - "admin_actions_deadline": "uint256:admin_actions_deadline", - "transfer_ownership_deadline": "uint256:transfer_ownership_deadline", - "future_fee": "uint256:future_fee", - "future_admin_fee": "uint256:future_admin_fee", - "future_owner": "address:future_owner" -} -abis.abisBTC ={ - "TokenExchange": "event TokenExchange(address indexed buyer, int128 sold_id, uint256 tokens_sold, int128 bought_id, uint256 tokens_bought)", - "AddLiquidity": "event AddLiquidity(address indexed provider, uint256[3] token_amounts, uint256[3] fees, uint256 invariant, uint256 token_supply)", - "RemoveLiquidity": "event RemoveLiquidity(address indexed provider, uint256[3] token_amounts, uint256[3] fees, uint256 token_supply)", - "RemoveLiquidityOne": "event RemoveLiquidityOne(address indexed provider, uint256 token_amount, uint256 coin_amount)", - "RemoveLiquidityImbalance": "event RemoveLiquidityImbalance(address indexed provider, uint256[3] token_amounts, uint256[3] fees, uint256 invariant, uint256 token_supply)", - "CommitNewAdmin": "event CommitNewAdmin(uint256 indexed deadline, address indexed admin)", - "NewAdmin": "event NewAdmin(address indexed admin)", - "CommitNewFee": "event CommitNewFee(uint256 indexed deadline, uint256 fee, uint256 admin_fee)", - "NewFee": "event NewFee(uint256 fee, uint256 admin_fee)", - "RampA": "event RampA(uint256 old_A, uint256 new_A, uint256 initial_time, uint256 future_time)", - "StopRampA": "event StopRampA(uint256 A, uint256 t)", - "A": "uint256:A", - "get_virtual_price": "uint256:get_virtual_price", - "calc_token_amount": "function calc_token_amount(uint256[3] amounts, bool deposit) view returns (uint256) @4526955", - "add_liquidity": "function add_liquidity(uint256[3] amounts, uint256 min_mint_amount) @6972762", - "get_dy": "function get_dy(int128 i, int128 j, uint256 dx) view returns (uint256) @2687932", - "get_dy_underlying": "function get_dy_underlying(int128 i, int128 j, uint256 dx) view returns (uint256) @2687745", - "exchange": "function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) @5499133", - "remove_liquidity": "function remove_liquidity(uint256 _amount, uint256[3] min_amounts) @196975", - "remove_liquidity_imbalance": "function remove_liquidity_imbalance(uint256[3] amounts, uint256 max_burn_amount) @6972281", - "calc_withdraw_one_coin": "function calc_withdraw_one_coin(uint256 _token_amount, int128 i) view returns (uint256) @15405", - "remove_liquidity_one_coin": "function remove_liquidity_one_coin(uint256 _token_amount, int128 i, uint256 min_amount) @4044074", - "ramp_A": "function ramp_A(uint256 _future_A, uint256 _future_time) @151937", - "stop_ramp_A": "function stop_ramp_A() @148697", - "commit_new_fee": "function commit_new_fee(uint256 new_fee, uint256 new_admin_fee) @110521", - "apply_new_fee": "function apply_new_fee() @97220", - "revert_new_parameters": "function revert_new_parameters() @21955", - "commit_transfer_ownership": "function commit_transfer_ownership(address _owner) @74632", - "apply_transfer_ownership": "function apply_transfer_ownership() @60688", - "revert_transfer_ownership": "function revert_transfer_ownership() @22045", - "withdraw_admin_fees": "function withdraw_admin_fees() @17565", - "kill_me": "function kill_me() @37998", - "unkill_me": "function unkill_me() @22135", - "coins": "function coins(int128 arg0) view returns (address) @2310", - "balances": "function balances(int128 arg0) view returns (uint256) @2340", - "fee": "uint256:fee", - "admin_fee": "uint256:admin_fee", - "owner": "address:owner", - "initial_A": "uint256:initial_A", - "future_A": "uint256:future_A", - "initial_A_time": "uint256:initial_A_time", - "future_A_time": "uint256:future_A_time", - "admin_actions_deadline": "uint256:admin_actions_deadline", - "transfer_ownership_deadline": "uint256:transfer_ownership_deadline", - "future_fee": "uint256:future_fee", - "future_admin_fee": "uint256:future_admin_fee", - "future_owner": "address:future_owner" -} -abis.cTokens = { - "name": "string:name", - "approve": "function approve(address spender, uint256 amount) returns (bool)", - "repayBorrow": "function repayBorrow(uint256 repayAmount) returns (uint256)", - "reserveFactorMantissa": "uint256:reserveFactorMantissa", - "borrowBalanceCurrent": "function borrowBalanceCurrent(address account) returns (uint256)", - "totalSupply": "uint256:totalSupply", - "exchangeRateStored": "uint256:exchangeRateStored", - "transferFrom": "function transferFrom(address src, address dst, uint256 amount) returns (bool)", - "repayBorrowBehalf": "function repayBorrowBehalf(address borrower, uint256 repayAmount) returns (uint256)", - "pendingAdmin": "address:pendingAdmin", - "decimals": "uint256:decimals", - "balanceOfUnderlying": "function balanceOfUnderlying(address owner) returns (uint256)", - "getCash": "uint256:getCash", - "_setComptroller": "function _setComptroller(address newComptroller) returns (uint256)", - "totalBorrows": "uint256:totalBorrows", - "comptroller": "address:comptroller", - "_reduceReserves": "function _reduceReserves(uint256 reduceAmount) returns (uint256)", - "initialExchangeRateMantissa": "uint256:initialExchangeRateMantissa", - "accrualBlockNumber": "uint256:accrualBlockNumber", - "underlying": "address:underlying", - "balanceOf": "function balanceOf(address owner) view returns (uint256)", - "totalBorrowsCurrent": "uint256:totalBorrowsCurrent", - "redeemUnderlying": "function redeemUnderlying(uint256 redeemAmount) returns (uint256)", - "totalReserves": "uint256:totalReserves", - "symbol": "string:symbol", - "borrowBalanceStored": "function borrowBalanceStored(address account) view returns (uint256)", - "mint": "function mint(uint256 mintAmount) returns (uint256)", - "accrueInterest": "uint256:accrueInterest", - "transfer": "function transfer(address dst, uint256 amount) returns (bool)", - "borrowIndex": "uint256:borrowIndex", - "supplyRatePerBlock": "uint256:supplyRatePerBlock", - "seize": "function seize(address liquidator, address borrower, uint256 seizeTokens) returns (uint256)", - "_setPendingAdmin": "function _setPendingAdmin(address newPendingAdmin) returns (uint256)", - "exchangeRateCurrent": "uint256:exchangeRateCurrent", - "getAccountSnapshot": "function getAccountSnapshot(address account) view returns (uint256, uint256, uint256, uint256)", - "borrow": "function borrow(uint256 borrowAmount) returns (uint256)", - "redeem": "function redeem(uint256 redeemTokens) returns (uint256)", - "allowance": "function allowance(address owner, address spender) view returns (uint256)", - "_acceptAdmin": "uint256:_acceptAdmin", - "_setInterestRateModel": "function _setInterestRateModel(address newInterestRateModel) returns (uint256)", - "interestRateModel": "address:interestRateModel", - "liquidateBorrow": "function liquidateBorrow(address borrower, uint256 repayAmount, address cTokenCollateral) returns (uint256)", - "admin": "address:admin", - "borrowRatePerBlock": "uint256:borrowRatePerBlock", - "_setReserveFactor": "function _setReserveFactor(uint256 newReserveFactorMantissa) returns (uint256)", - "isCToken": "bool:isCToken", - "AccrueInterest": "event AccrueInterest(uint256 interestAccumulated, uint256 borrowIndex, uint256 totalBorrows)", - "Mint": "event Mint(address minter, uint256 mintAmount, uint256 mintTokens)", - "Redeem": "event Redeem(address redeemer, uint256 redeemAmount, uint256 redeemTokens)", - "Borrow": "event Borrow(address borrower, uint256 borrowAmount, uint256 accountBorrows, uint256 totalBorrows)", - "RepayBorrow": "event RepayBorrow(address payer, address borrower, uint256 repayAmount, uint256 accountBorrows, uint256 totalBorrows)", - "LiquidateBorrow": "event LiquidateBorrow(address liquidator, address borrower, uint256 repayAmount, address cTokenCollateral, uint256 seizeTokens)", - "NewPendingAdmin": "event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin)", - "NewAdmin": "event NewAdmin(address oldAdmin, address newAdmin)", - "NewComptroller": "event NewComptroller(address oldComptroller, address newComptroller)", - "NewMarketInterestRateModel": "event NewMarketInterestRateModel(address oldInterestRateModel, address newInterestRateModel)", - "NewReserveFactor": "event NewReserveFactor(uint256 oldReserveFactorMantissa, uint256 newReserveFactorMantissa)", - "ReservesReduced": "event ReservesReduced(address admin, uint256 reduceAmount, uint256 newTotalReserves)", - "Failure": "event Failure(uint256 error, uint256 info, uint256 detail)", - "Transfer": "event Transfer(address indexed from, address indexed to, uint256 amount)", - "Approval": "event Approval(address indexed owner, address indexed spender, uint256 amount)" -} - - -abis.yTokens ={ - "Approval": "event Approval(address indexed owner, address indexed spender, uint256 value)", - "OwnershipTransferred": "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", - "Transfer": "event Transfer(address indexed from, address indexed to, uint256 value)", - "aave": "address:aave", - "aaveToken": "address:aaveToken", - "allowance": "function allowance(address owner, address spender) view returns (uint256)", - "approve": "function approve(address spender, uint256 amount) returns (bool)", - "approveToken": "function approveToken()", - "apr": "address:apr", - "balance": "uint256:balance", - "balanceAave": "uint256:balanceAave", - "balanceCompound": "uint256:balanceCompound", - "balanceCompoundInToken": "uint256:balanceCompoundInToken", - "balanceDydx": "uint256:balanceDydx", - "balanceFulcrum": "uint256:balanceFulcrum", - "balanceFulcrumInToken": "uint256:balanceFulcrumInToken", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "calcPoolValueInToken": "uint256:calcPoolValueInToken", - "compound": "address:compound", - "dToken": "uint256:dToken", - "decimals": "uint8:decimals", - "decreaseAllowance": "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", - "deposit": "function deposit(uint256 _amount)", - "dydx": "address:dydx", - "fulcrum": "address:fulcrum", - "getAave": "address:getAave", - "getAaveCore": "address:getAaveCore", - "getPricePerFullShare": "uint256:getPricePerFullShare", - "increaseAllowance": "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", - "isOwner": "bool:isOwner", - "name": "string:name", - "owner": "address:owner", - "pool": "uint256:pool", - "provider": "uint8:provider", - "rebalance": "function rebalance()", - "recommend": "uint8:recommend", - "renounceOwnership": "function renounceOwnership()", - "set_new_APR": "function set_new_APR(address _new_APR)", - "set_new_COMPOUND": "function set_new_COMPOUND(address _new_COMPOUND)", - "set_new_DTOKEN": "function set_new_DTOKEN(uint256 _new_DTOKEN)", - "supplyAave": "function supplyAave(uint256 amount)", - "supplyCompound": "function supplyCompound(uint256 amount)", - "supplyDydx": "function supplyDydx(uint256 amount) returns (uint256)", - "supplyFulcrum": "function supplyFulcrum(uint256 amount)", - "symbol": "string:symbol", - "token": "address:token", - "totalSupply": "uint256:totalSupply", - "transfer": "function transfer(address recipient, uint256 amount) returns (bool)", - "transferFrom": "function transferFrom(address sender, address recipient, uint256 amount) returns (bool)", - "transferOwnership": "function transferOwnership(address newOwner)", - "withdraw": "function withdraw(uint256 _shares)" -} - - - -module.exports = { - abis -} \ No newline at end of file diff --git a/projects/curve/historical/index.js b/projects/curve/historical/index.js deleted file mode 100644 index 3b94eb94e86..00000000000 --- a/projects/curve/historical/index.js +++ /dev/null @@ -1,255 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -const { Web3 } = require('web3'); -const BigNumber = require("bignumber.js"); -const axios = require("axios"); -const web3 = new Web3(`https://eth.llamarpc.com`); -const abis = require('./abis.js') -const { toUSDTBalances } = require('../../helper/balances') -const sdk = require('@defillama/sdk') - - -let swaps = [ - { - 'name': 'tbtc', - 'address': '0xc25099792e9349c7dd09759744ea681c7de2cb66', - 'coins': [0], - 'type': 'btc', - 'abi': abis.abis.abiNew - }, - { - 'name': 'hbtc', - 'address': '0x4CA9b3063Ec5866A4B82E437059D2C43d1be596F', - 'coins': [0], - 'type': 'btc', - 'abi': abis.abis.abiNew - }, - { - 'name': 'sbtc', - 'address': '0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714', - 'coins': [0,1,2], - 'type': 'btc', - 'abi': abis.abis.abisBTC - }, - { - 'name': 'ren', - 'address': '0x93054188d876f558f4a66B2EF1d97d16eDf0895B', - 'coins': [0,1], - 'type': 'btc', - 'abi': abis.abis.abisBTC - }, - { - 'name': 'rsv', - 'address': '0xC18cC39da8b11dA8c3541C598eE022258F9744da', - 'coins': [0], - 'type': 1, - 'abi': abis.abis.abiNew - }, - { - 'name': 'musd', - 'address': '0x8474DdbE98F5aA3179B3B3F5942D724aFcdec9f6', - 'coins': [0], - 'type': 1, - 'abi': abis.abis.abiNew - }, - { - 'name': 'linkusd', - 'address': '0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171', - 'coins': [0], - 'type': 1, - 'abi': abis.abis.abiNew - }, - { - 'name': 'usdn', - 'address': '0x0f9cb53Ebe405d49A0bbdBD291A65Ff571bC83e1', - 'coins': [0], - 'type': 1, - 'abi': abis.abis.abiNew - }, - { - 'name': 'usdk', - 'address': '0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb', - 'coins': [0], - 'type': 1, - 'abi': abis.abis.abiNew - }, - { - 'name': 'gusd', - 'address': '0x4f062658EaAF2C1ccf8C8e36D6824CDf41167956', - 'coins': [0], - 'type': 1, - 'abi': abis.abis.abiNew - }, - { - 'name': 'compoundv1', - 'address': '0xA2B47E3D5c44877cca798226B7B8118F9BFb7A56', - 'coins': [0,1], - 'type': 'compound', - 'abi': abis.abis.compoundv1 - }, - { - 'name': 'usdtPool', - 'address': '0x52EA46506B9CC5Ef470C5bf89f17Dc28bB35D85C', - 'coins': [0,1,2], - 'type': 'compound', - 'abi': abis.abis.compoundv1 - }, - { - 'name': 'YPool', - 'address': '0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51', - 'coins': [0,1,2,3], - 'type': 'yToken', - 'abi': abis.abis.compoundv1 - }, - { - 'name': 'PAX', - 'address': '0x06364f10B501e868329afBc005b3492902d6C763', - 'coins': [0,1,2,3], - 'type': 'yToken', - 'abi': abis.abis.compoundv1 - }, - { - 'name': 'BUSD', - 'address': '0x79a8C46DeA5aDa233ABaFFD40F3A0A2B1e5A4F27', - 'coins': [0,1,2,3], - 'type': 'yToken', - 'abi': abis.abis.compoundv1 - }, - { - 'name': 'sUSD', - 'address': '0xA5407eAE9Ba41422680e2e00537571bcC53efBfD', - 'coins': [0,1,2,3], - 'type': 1, - 'abi': abis.abis.abisBTC - }, - { - 'name': '3Pool', - 'address': '0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7', - 'coins': [0,1,2], - 'type': 1, - 'abi': abis.abis.abiNew - }, - { - 'name': 'DUSD', - 'address': '0x8038C01A0390a8c547446a0b2c18fc9aEFEcc10c', - 'coins': [0], - 'type': 1, - 'abi': abis.abis.abiNew - }, - - - -] - -let coinDecimals = [ - { - '0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa': '18', - '0x0316EB71485b0Ab14103307bf65a021042c6d380': '18', - '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D': '8', - [ADDRESSES.ethereum.WBTC]: '8', - '0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6': '18', - '0x196f4727526eA7FB1e17b2071B3d8eAA38486988': '18', - '0xe2f2a5C287993345a840Db3B0845fbC70f5935a5': '18', - '0x0E2EC54fC0B509F445631Bf4b91AB8168230C752': '18', //linkusd - '0x674C6Ad92Fd080e4004b2312b45f796a192D27a0': '18', //USDN - '0x1c48f86ae57291F7686349F12601910BD8D470bb': '18', //USDK - '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd': '2', //GUSD - '0x39AA39c021dfbaE8faC545936693aC917d5E7563': '8', //cUSD - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643': '8', //cDAI - [ADDRESSES.ethereum.USDT]: '6', //USDT - '0x73a052500105205d34Daf004eAb301916DA8190f': '18', //yTUSD - '0xd6aD7a6750A7593E092a9B218d66C0A814a3436e': '6', ///yUSDC - '0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01': '18', ///yDAI - '0x83f798e925BcD4017Eb265844FDDAbb448f1707D': '6', ///yUSDT - '0x8E870D67F660D95d5be530380D0eC0bd388289E1': '18', //PAX - '0x9777d7E2b60bB01759D0E2f8be2095df444cb07E': '6', ///ycUSDC - '0x99d1Fa417f94dcD62BfE781a1213c092a47041Bc': '18', ///ycDAI - '0x1bE5d71F2dA660BFdee8012dDc58D024448A0A59': '6', ///ycUSDT - '0x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE': '18', //Y2busd - '0x26EA744E5B887E5205727f55dFBE8685e3b21951': '6', ///y2USDC - '0xC2cB1040220768554cf699b0d863A3cd4324ce32': '18', ///y2DAI - '0xE6354ed5bC4b393a5Aad09f21c46E101e692d447': '6', ///y2USDT - [ADDRESSES.ethereum.sUSD]: '18', //sUSD - [ADDRESSES.ethereum.DAI]: '18', //DAI - [ADDRESSES.ethereum.USDC]: '6', //USDC - '0x5BC25f649fc4e26069dDF4cF4010F9f706c23831': '18', //dusd - [ADDRESSES.ethereum.TUSD]: '18' - } -] - -async function tvlFunc(timestamp, block) { - var price_feed = await axios.get(`https://coins.llama.fi/prices/historical/${timestamp}/${["bitcoin","cdai","compound-usd-coin"].map(c=>"coingecko:"+c).join(',')}`) - var tvl = 0; - var btcTVL = 0; - await Promise.all( - swaps.map(async item => { - var details = {}; - await Promise.all( - item.coins.map(async i => { - try{ - const poolAmount = await calc(item, i, price_feed, block); - if (item.type == 'btc') { - btcTVL += parseFloat(poolAmount); - } else { - tvl += parseFloat(poolAmount ) - } - } catch(e){ - sdk.log(item.name, i, "failed") - } - }) - ) - }) - ) - - tvl = (price_feed.data.coins['coingecko:bitcoin'].price * btcTVL) + tvl - return toUSDTBalances(tvl); -} - -async function getVirtualPrice(abi, contract, block) { - var dacontract = new web3.eth.Contract(abi, contract) - dacontract.defaultBlock = block; - var virtualPrice = await dacontract.methods.getPricePerFullShare().call(); - return virtualPrice; -} - - - - - -async function calc(item, i, price_feed, block) { - var dacontract = new web3.eth.Contract(item.abi, item.address) - dacontract.defaultBlock = block - var balances = await dacontract.methods.balances(i).call(); - var coins = await dacontract.methods.coins(i).call(); - - - var poolAmount = await new BigNumber(balances).div(10 ** coinDecimals[0][coins]).toFixed(2); - - let multiplier; - if (item.type == 'compound') { - multiplier = 1; - if (coins === '0x39AA39c021dfbaE8faC545936693aC917d5E7563') { - multiplier = price_feed.data.coins['coingecko:compound-usd-coin'].price; - } - if (coins === '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643') { - multiplier = price_feed.data.coins['coingecko:cdai'].price; - } - poolAmount = poolAmount * multiplier; - } - - if (item.type == 'yToken') { - multiplier = 1; - if (coins !== '0x8E870D67F660D95d5be530380D0eC0bd388289E1') { // PAX exception - multiplier = await getVirtualPrice(abis.abis.yTokens, coins, block) - multiplier = await new BigNumber(multiplier).div(10 ** 18).toFixed(4); - } - poolAmount = poolAmount * multiplier; - } - - return poolAmount; -} - - - -module.exports = { - ethereum:{tvlFunc} -} diff --git a/projects/curve/index.js b/projects/curve/index.js deleted file mode 100644 index bcd654da364..00000000000 --- a/projects/curve/index.js +++ /dev/null @@ -1,378 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokens2, } = require("../helper/unwrapLPs"); -const { getCache } = require("../helper/http"); -const { getUniqueAddresses } = require("../helper/utils"); -const { staking } = require("../helper/staking.js"); -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const erc20Abi = require("../helper/abis/erc20.json"); -const contracts = require("./contracts.json"); -const { getLogs } = require('../helper/cache/getLogs') - -const chains = [ - "ethereum", - "polygon", - "arbitrum", - "aurora", - "avax", - "fantom", - "optimism", - "xdai", - "moonbeam", - "celo", - "kava", - "base", - "fraxtal", - "xlayer", - "bsc", - "mantle", - "taiko", - "corn", - "sonic", - "ink", - "hyperliquid", - "plume_mainnet", - "xdc", - "tac", - "etlk", - "plasma", -]; -const registryIds = { - stableswap: 0, - stableFactory: 3, - crypto: 5, - cryptoFactory: 6 -}; -const decimalsCache = {} -const nameCache = {} - -const blacklistedPools = { - ethereum: [ - '0xcc7d5785AD5755B6164e21495E07aDb0Ff11C2A8', // oETH - '0xAA5A67c256e27A5d80712c51971408db3370927D', // DOLA-3crv - '0xc528b0571D0BE4153AEb8DdB8cCeEE63C3Dd7760', - '0x8272E1A3dBef607C04AA6e5BD3a1A134c8ac063B' - ], - base: [ - '0x302A94E3C28c290EAF2a4605FC52e11Eb915f378', // superOETH - ] -} - -async function getDecimals(chain, token) { - token = token.toLowerCase() - const key = chain + '-' + token - if (!decimalsCache[key]) decimalsCache[key] = sdk.api.erc20.decimals(token, chain) - return decimalsCache[key] -} - - -const gasTokens = [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.null, -] - -async function getNames(chain, tokens) { - tokens = tokens.map(i => i.toLowerCase()) - const mapping = {} - const missing = [] - tokens.forEach(i => { - const key = chain + '-' + i - if (key === 'ethereum-0x6b8734ad31d42f5c05a86594314837c416ada984') mapping[i] = '' - else if (nameCache[key] || gasTokens.includes(i)) mapping[i] = nameCache[key] - else missing.push(i) - }) - - const res = await sdk.api2.abi.multiCall({ - abi: erc20Abi.name, - calls: missing, - chain, - permitFailure: true, - }) - res.forEach((name, i) => { - const key = chain + '-' + missing[i] - nameCache[key] = name ?? '' - mapping[missing[i]] = nameCache[key] - }) - - return mapping -} - -const registryIdsReverse = Object.fromEntries(Object.entries(registryIds).map(i => i.reverse())) - -async function getPool({ chain, block, registry }) { - const data = await sdk.api2.abi.fetchList({ chain, block, target: registry, itemAbi: abi.pool_list, lengthAbi: abi.pool_count, withMetadata: true, }) - return data.filter(i => i.output) -} - -function getRegistryType(registryId) { - if (!registryIdsReverse[registryId]) throw new Error('Unknown registry id: ' + registryId) - return registryIdsReverse[registryId] -} - -async function getPools(block, chain) { - let { registriesMapping, addressProvider } = contracts[chain] - if (!registriesMapping) { - registriesMapping = {}; - if (addressProvider) { - (await sdk.api.abi.multiCall({ - block, chain, - calls: Object.values(registryIds).map(r => ({ params: r })), - target: addressProvider, - abi: abi.get_id_info - })).output - .filter(r => r.output.addr !== nullAddress) - .forEach(({ input: { params: [registryId] }, output: { addr } }) => registriesMapping[getRegistryType(registryId)] = addr) - } - } - if (contracts[chain].CurveStableswapFactoryNG) { - registriesMapping.CurveStableswapFactoryNG = contracts[chain].CurveStableswapFactoryNG - } - if (contracts[chain].CurveTricryptoFactoryNG) { - registriesMapping.CurveTricryptoFactoryNG = contracts[chain].CurveTricryptoFactoryNG - } - if (contracts[chain].CurveTwocryptoFactoryNG) { - registriesMapping.CurveTwocryptoFactoryNG = contracts[chain].CurveTwocryptoFactoryNG - } - const poolList = {} - await Promise.all(Object.entries(registriesMapping).map(async ([registry, addr]) => { - poolList[registry] = await getPool({ chain, block, registry: addr }) - })) - - return poolList -} - -function aggregateBalanceCalls({ coins, nCoins, wrapped }) { - const toa = [] - coins.map(({ input, output }, i) => { - const owner = input.params[0] - const addToken = t => { - if (t.toLowerCase() === wrapped.toLowerCase()) - toa.push([nullAddress, owner]) - toa.push([t, owner]) - } - if (!Object.keys(nCoins).length) - output.forEach(token => addToken(token)) - else - for (let index = 0; index < nCoins[i].output[0]; index++) - addToken(output[index]) - }) - return toa; -} - -async function handleUnlistedFxTokens(balances, chain) { - if ("fxTokens" in contracts[chain]) { - const tokens = Object.values(contracts[chain].fxTokens); - for (let token of tokens) { - if (token.address in balances) { - const [rate, { output: decimals }] = await Promise.all([ - getCache(`https://api.exchangerate.host/convert?from=${token.currency}&to=USD`), - getDecimals(chain, token.address) - ]); - - sdk.util.sumSingleBalance( - balances, - "usd-coin", - balances[token.address] * rate.result / 10 ** decimals - ); - delete balances[token.address]; - delete balances[`${chain}:${token.address}`]; - } - } - } - return; -} - -async function unwrapPools({ poolList, registry, chain, block }) { - if (!poolList.length) return; - const registryAddress = poolList[0].input.target - - const callParams = { target: registryAddress, calls: poolList.map(i => ({ params: i.output })), chain, block, } - const { output: coins } = await sdk.api.abi.multiCall({ ...callParams, abi: abi.get_coins[registry] }) - let nCoins = {} - if (!['cryptoFactory', 'triCryptoFactory', 'CurveL2TricryptoFactory', 'CurveTricryptoFactoryNG', 'CurveTwocryptoFactoryNG'].includes(registry)) - nCoins = (await sdk.api.abi.multiCall({ ...callParams, abi: abi.get_n_coins[registry] })).output - - let { wrapped = '', metapoolBases = {}, blacklist = [] } = contracts[chain] - wrapped = wrapped.toLowerCase() - let calls = aggregateBalanceCalls({ coins, nCoins, wrapped }); - const allTokens = getUniqueAddresses(calls.map(i => i[0])) - const tokenNames = await getNames(chain, allTokens) - const blacklistedTokens = [...blacklist, ...(Object.values(metapoolBases))] - Object.entries(tokenNames).forEach(([token, name]) => { - if ((name ?? '').startsWith('Curve.fi ')) { - sdk.log(chain, 'blacklisting', name) - blacklistedTokens.push(token) - } - }) - return { tokensAndOwners: calls, blacklistedTokens } -} - -const blacklists = { - ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x29b41fe7d754b8b43d4060bb43734e436b0b9a33'], - arbitrum: ['0x3aef260cb6a5b469f970fae7a1e233dbd5939378', '0xd4fe6e1e37dfcf35e9eeb54d4cca149d1c10239f'], -} - -const excludePoolsIfTheyHoldToken = { - ethereum: [ - // "0x5e8422345238f34275888049021821e8e08caa1f", // frxETH - // "0xcacd6fd266af91b8aed52accc382b4e165586e29", // frxUSD - // "0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3", // oETH - ], - base: [ - // "0xdbfefd2e8460a6ee4955a68582f85708baea60a3", // superOETHb - ] -} - -const config = { - ethereum: { - plainFactoryConfig: [ - { plainFactory: '0x528baca578523855a64ee9c276826f934c86a54c', fromBlock: 17182168 }, - { plainFactory: '0x0145fd99f1dd6e2491e44fca608c481c9c5b97a9', fromBlock: 17182168 }, - { plainFactory: '0x6a8cbed756804b16e05e741edabd5cb544ae21bf', fromBlock: 17182168 }, - ] - }, -} - -async function addPlainFactoryConfig({ api, tokensAndOwners, plainFactoryConfig = [] }) { - return Promise.all(plainFactoryConfig.map(async ({ plainFactory, fromBlock }) => { - const logs = await getLogs({ - api, - target: plainFactory, - topics: ['0xb8f6972d6e56d21c47621efd7f02fe68f07a17c999c42245b3abd300f34d61eb'], - eventAbi: 'event PlainPoolDeployed(address[4] coins, uint256 A, uint256 fee, address deployer, address pool)', - onlyArgs: true, - fromBlock, - }) - logs.forEach(log => { - log.coins.forEach((coin, i) => { - if (i > 1 && coin === nullAddress) return; - tokensAndOwners.push([coin, log.pool]) - }) - }) - })) -} - -function buildTokenToPoolsIndex(tokensAndOwners) { - const idx = new Map() - for (const [token, owner] of tokensAndOwners) { - if (!token || token === nullAddress) continue - const t = token.toLowerCase() - const p = owner.toLowerCase() - if (!idx.has(t)) idx.set(t, new Set()) - idx.get(t).add(p) - } - return idx -} - -function excludePoolsThatHoldCertainTokens({ tokensAndOwners, tokensToAvoid }) { - if (!tokensToAvoid?.length) return { tokensAndOwners, excludedPools: [], poolReasons: {}, tokenToPools: {} } - const tokenIdx = buildTokenToPoolsIndex(tokensAndOwners) - const poolsToExclude = new Set() - const reason = {} - const tokenToPools = {} - for (const rawToken of tokensToAvoid) { - const t = rawToken.toLowerCase() - const pools = tokenIdx.get(t) - if (pools) { - tokenToPools[t] = Array.from(pools) - for (const p of pools) { - poolsToExclude.add(p) - if (!reason[p]) reason[p] = new Set() - reason[p].add(t) - } - } else { - tokenToPools[t] = [] - } - } - if (!poolsToExclude.size) return { tokensAndOwners, excludedPools: [], poolReasons: {}, tokenToPools } - const filtered = tokensAndOwners.filter(([token, owner]) => !poolsToExclude.has(owner.toLowerCase())) - const poolReasons = Object.fromEntries(Object.entries(reason).map(([p, s]) => [p, Array.from(s)])) - return { tokensAndOwners: filtered, excludedPools: Array.from(poolsToExclude), poolReasons, tokenToPools } -} - -function tvl(chain) { - const { plainFactoryConfig = [] } = config[chain] ?? {} - return async (api) => { - const { block } = api - let balances = {}; - let poolLists = await getPools(block, chain); - const bl = new Set((blacklistedPools[chain] || []).map(a => a.toLowerCase())); - - for (const [registry, pools] of Object.entries(poolLists)) { - poolLists[registry] = pools.filter(p => !bl.has(p.output.toLowerCase())) - } - - const promises = [] - for (const [registry, poolList] of Object.entries(poolLists)) - promises.push(unwrapPools({ poolList, registry, chain, block })) - - const res = (await Promise.all(promises)).filter(i => i) - let tokensAndOwners = res.map(i => i.tokensAndOwners).flat() - const blacklistedTokens = res.map(i => i.blacklistedTokens).flat() - if (blacklists[chain]) - blacklistedTokens.push(...blacklists[chain]) - await addPlainFactoryConfig({ api, tokensAndOwners, plainFactoryConfig }) - - const tokensToAvoid = (excludePoolsIfTheyHoldToken[chain] || []).map(s => s.toLowerCase()) - const { tokensAndOwners: filteredTOA, excludedPools, poolReasons, tokenToPools } = - excludePoolsThatHoldCertainTokens({ tokensAndOwners, tokensToAvoid }) - - if (tokensToAvoid.length) { - Object.entries(tokenToPools).forEach(([t, pools]) => { - if (pools.length) sdk.log(chain, 'token triggers exclusion:', t, 'in pools:', pools) - else sdk.log(chain, 'token triggers exclusion:', t, 'but no pools found') - }) - } - if (excludedPools?.length) { - sdk.log(chain, 'excluded pools (by token content):', excludedPools) - Object.entries(poolReasons).forEach(([pool, tokens]) => { - sdk.log(chain, 'excluded pool reason:', pool, 'contains tokens:', tokens) - }) - } - tokensAndOwners = filteredTOA - - await sumTokens2({ balances, chain, block, tokensAndOwners, blacklistedTokens }) - await handleUnlistedFxTokens(balances, chain); - return balances; - }; -} - -const chainTypeExports = chains => { - let exports = chains.reduce( - (obj, chain) => ({ ...obj, [chain]: { tvl: tvl(chain) } }), - {} - ); - return exports; -}; - -module.exports = chainTypeExports(chains); - -module.exports.ethereum["staking"] = staking( - contracts.ethereum.veCRV, - contracts.ethereum.CRV -); - -module.exports.harmony = { - tvl: async (api) => { - if (api.timestamp > 1655989200) { - // harmony hack - return {}; - } - return api.sumTokens({ - owner: '0xC5cfaDA84E902aD92DD40194f0883ad49639b023', tokens: [ - "0xef977d2f931c1978db5f6747666fa1eacb0d0339", - "0x3c2b8be99c50593081eaa2a724f0b8285f5aba8f" - ] - }) - } -}; - -module.exports.hallmarks = [ - [1597446675, "CRV Launch"], - [1621213201, "Convex Launch"], - [1642374675, "MIM depeg"], - [1651881600, "UST depeg"], - [1654822801, "stETH depeg"], - [1667692800, "FTX collapse"], - // [1690715622, "Reentrancy hack"] -]; \ No newline at end of file diff --git a/projects/curves/index.js b/projects/curves/index.js deleted file mode 100644 index 03f6f5ded8c..00000000000 --- a/projects/curves/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -// Curves main contract -const CURVES_CONTRACT = "0xEad4138380B508949Ccd48B97AD930bd89aAb719" - -// CurvesGroups contract -const CURVES_GROUPS_CONTRACT = "0x88c7484d19E49B09233484824698a5214d81f866" - -async function tvl(api) { - return sumTokens2({ - tokens: [nullAddress], - owners: [CURVES_CONTRACT, CURVES_GROUPS_CONTRACT], - api - }) - -} - -module.exports = { - methodology: `We count the ETH locked in the Curves trading contracts (${CURVES_CONTRACT}, ${CURVES_GROUPS_CONTRACT})`, - formnetwork: { - tvl - } -} diff --git a/projects/cvex/index.js b/projects/cvex/index.js deleted file mode 100644 index 1ed03987863..00000000000 --- a/projects/cvex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const MAIN_CONTRACT = '0xBe14D34ce8737614331cE1904AA659E26657eE85'; // Main Contract Address (Proxy) - -module.exports = { - methodology: 'counts the USDC balance in the main contract on Arbitrum.', - arbitrum: { - tvl: sumTokensExport({ owner: MAIN_CONTRACT, tokens: [ADDRESSES.arbitrum.USDC_CIRCLE] }), - }, -} \ No newline at end of file diff --git a/projects/cvi/index.js b/projects/cvi/index.js deleted file mode 100644 index 1760b59e96c..00000000000 --- a/projects/cvi/index.js +++ /dev/null @@ -1,94 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking, stakings } = require("../helper/staking"); - -const stakingContract = "0xDb3130952eD9b5fa7108deDAAA921ae8f59beaCb"; -const GOVI = "0xeeaa40b28a2d1b0b08f6f97bb1dd4b75316c6107"; - -const stakingPool2Contracts = [ - "0x936Dd3112a9D39Af39aDdA798503D9E7E7975Fb7", - "0xcF05a60bCBC9c85cb2548DAfDC444c666A8F466a", - "0xe6e5220291CF78b6D93bd1d08D746ABbC115C64b", -]; - -const lpPool2Addresses = [ - "0x1EE312A6d5fe7b4B8c25f0a32fCA6391209eBEBF", - "0x7E6782E37278994d1e99f1a5d03309B4b249d919", - "0xA2b04F8133fC25887A436812eaE384e32A8A84F2", -]; - -/*** Polygon Addresses ***/ -const stakingContracts_polygon = [ - "0x399b649002277d7a3502C9Af65DE71686F356f33", - "0xD013FFC6Ed3B2c773051a3b83E763dF782D7b31f", -]; - -const GOVI_polygon = ADDRESSES.polygon.GOVI; - -const stakingPool2Contract_polygon = - "0x27792cDa195d07ffb36E94e253D67361661a16Dc"; -const lpPool2Address_polygon = "0x1dAb41a0E410C25857F0f49B2244Cd089AB88DE6"; - -const platformLiquidityContracts_polygon = [ - "0x88D01eF3a4D586D5e4ce30357ec57B073D45ff9d", - "0x3863D0C9b7552cD0d0dE99fe9f08a32fED6ab72f", -]; - -/*** Arbitrum Addresses ***/ -const stakingContract_arbitrum = "0xDb3e7deAb380B43189A7Bc291fa2AFeAA938dCc3"; -const GOVI_arbitrum = ADDRESSES.arbitrum.GOVI; - -async function ethTvl(api) { - const ethPlatforms = [ - "0x5005e8Dc0033E78AF80cfc8d10f5163f2FcF0E79", - "0xe0437BeB5bb7Cf980e90983f6029033d710bd1da", //USDTPlatform - ]; - - const USDCPlatforms = [ - "0x2167EEFB9ECB52fB6fCf1ff8f7dAe6F0121F4fBC",//USDCPlatform - "0x0E0DA40101D8f6eB1b1d6b0215327e8452e0Bc60",//ETHVIPlatform - ] - const tokens = await api.multiCall({ abi: 'address:getToken', calls: ethPlatforms }) - const owners = ethPlatforms.concat(USDCPlatforms) - USDCPlatforms.forEach(_ => tokens.push(ADDRESSES.ethereum.USDC)) - return api.sumTokens({ tokensAndOwners2: [tokens, owners] }) -} - -async function polygonTvl(api) { - const tokens = await api.multiCall({ abi: 'address:token', calls: platformLiquidityContracts_polygon }) - return api.sumTokens({ tokensAndOwners2: [tokens, platformLiquidityContracts_polygon] }) -} -async function arbiTvl(api) { - const vaults = [ - // '0xfdeb59a2b4891ea17610ee38665249acc9fcc506', - '0xAf7a27b1291Bff85aCaf0A90078d81468A705E58', - '0x8D1909AE8A5A03adf3a48EE5543ae4ECfF6845A6', - // '0xe8E3057E9A43f01d4505492A394B0F51200Cdd40', - '0xC3c2A3306d585fEfA7a0158B87DA7b375EE390Ec', - ] - const thetaVaults = ['0x7C0C30114746F8C6B8eeAB8fB9b97B85E98926c5', '0x0b3923C4192d644a02EFb176BfE75CE0091F5C63'] - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults}) - thetaVaults.forEach(_ => tokens.push(ADDRESSES.arbitrum.USDC_CIRCLE)) - const owners = vaults.concat(thetaVaults) - owners.push('0xfdeb59a2b4891ea17610ee38665249acc9fcc506', '0xe8E3057E9A43f01d4505492A394B0F51200Cdd40') - tokens.push(ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.USDC_CIRCLE) - return api.sumTokens({ tokensAndOwners2: [tokens, owners] }) -} - -module.exports = { - ethereum: { - tvl: ethTvl, - pool2: staking(stakingPool2Contracts, lpPool2Addresses), - staking: staking(stakingContract, GOVI), - }, - polygon: { - staking: stakings(stakingContracts_polygon, GOVI_polygon, "polygon", GOVI), - pool2: staking(stakingPool2Contract_polygon, lpPool2Address_polygon,), - tvl: polygonTvl, - }, - arbitrum: { - staking: staking(stakingContract_arbitrum, GOVI_arbitrum, "arbitrum", GOVI), - tvl: arbiTvl, - }, - methodology: - "Counts liquidity on the Platforms and Staking seccions through Platfrom and Staking Contracts", -} \ No newline at end of file diff --git a/projects/cyber-staking/index.js b/projects/cyber-staking/index.js deleted file mode 100644 index 2bad15cad3c..00000000000 --- a/projects/cyber-staking/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const STCYBR_TOKEN_CONTRACT = '0x3EfE22FA52F6789DDfc263Cec5BCf435b14b77e2'; - -async function tvl(api) { - const collateralBalance = await api.call({ - abi: 'erc20:totalSupply', - target: STCYBR_TOKEN_CONTRACT, - }); - - // stCYBER is minted 1:1 with CYBER - return { - 'coingecko:cyberconnect': collateralBalance / 1e18 - } -} - -module.exports = { - methodology: 'counts the number of CYBER tokens staked in the stCYBER contract.', - start: 1718322729, - cyeth: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/cyber/index.js b/projects/cyber/index.js deleted file mode 100644 index 67ea3b0489e..00000000000 --- a/projects/cyber/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x12a580c05466eefb2c467C6b115844cDaF55B255", - "0x1d59bc9fcE6B8E2B1bf86D4777289FFd83D24C99", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/cyberblast-v2/index.js b/projects/cyberblast-v2/index.js deleted file mode 100644 index 4697179eda9..00000000000 --- a/projects/cyberblast-v2/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const CBR = "0xE070B87c4d88826D4cD1b85BAbE186fdB14CD321"; -const FACTORY = "0x32132625Cd02988Fb105FbbD3138bD383df3aF65" - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, - blast: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }), - } -}; \ No newline at end of file diff --git a/projects/cyberblast-v3/index.js b/projects/cyberblast-v3/index.js deleted file mode 100644 index 827479dc40b..00000000000 --- a/projects/cyberblast-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const factory = '0x57eF21959CF9536483bA6ddB10Ad73E2a06b85ff' - -module.exports = uniV3Export({ - blast: { factory, fromBlock: 207530, permitFailure: true, }, -}) \ No newline at end of file diff --git a/projects/cyberdog-finance/index.js b/projects/cyberdog-finance/index.js deleted file mode 100644 index 936ffcc79a4..00000000000 --- a/projects/cyberdog-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const masterchef = "0x61bA12f76F7993115Fcf86Fd6147008A6790589D"; -const cbrdog = "0x7a6a832eB5F58245F7d75eD980cED849D69A98FD"; - -module.exports = { - ...masterChefExports(masterchef, "cronos", cbrdog, false) -} \ No newline at end of file diff --git a/projects/cyberfantasyfembots/index.js b/projects/cyberfantasyfembots/index.js deleted file mode 100644 index 0f6f7c06a98..00000000000 --- a/projects/cyberfantasyfembots/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0x844cC08183589D0D669fdCC223476a0FE9712F55"; -const token = "0xe29E3D9Fa721dFA10ba879fbf0E947425dA611cB"; - -module.exports = { - ...masterChefExports(masterchef, "polygon", token, false) -} \ No newline at end of file diff --git a/projects/cyberperp/index.js b/projects/cyberperp/index.js deleted file mode 100644 index 70e531c520d..00000000000 --- a/projects/cyberperp/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); - -const vault = "0x35C301Df78a6eD459931F56fBa6Cb2ad71bE606b"; - -module.exports = { - iotaevm: { - tvl: gmxExports({ vault}), - }, -}; \ No newline at end of file diff --git a/projects/cyberswap/index.js b/projects/cyberswap/index.js deleted file mode 100644 index fec0f63749e..00000000000 --- a/projects/cyberswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'cyeth': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - -} // liquidityManager contracts - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain] })} -}) \ No newline at end of file diff --git a/projects/cybertime/abi.json b/projects/cybertime/abi.json deleted file mode 100644 index 6fcb468e36e..00000000000 --- a/projects/cybertime/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCTFPerShare)" -} \ No newline at end of file diff --git a/projects/cybertime/index.js b/projects/cybertime/index.js deleted file mode 100644 index 89599fa1587..00000000000 --- a/projects/cybertime/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const abi = require("./abi.json"); -const { pool2s } = require("../helper/pool2"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const pool2FarmContracts = [ - //CTFFarmV1 - "0x750c8Ee365b1EA4dAf114Bd73Aeb31fc5B742D8B", - //CTFFarmV2 - "0x1F8f4492bd0D8004E323e0014f76c99e54D1242b", - //CFTFarmV3 Old - "0x08985ff15dE1ed66dDBfD08a2705A8B3612A61Fd", - //CFTFarmV3 - "0xCE997537498793d25dAb0F289e161DB26914275A", -]; - -const lpPool2 = [ - //CFT-WBNB Old Cake LP - "0x4709932b8a9a76187879856e8Fd13eadC6C68B08", - //NFTL-WBNB Old Cake LP - "0xab5F212D945c6109BE17A61a5598e2dD6F896Bdf", - //NFTL-WBNB New0 Cake LP - "0xf41395C4e748813c98E17263Ac0cCE15B54d5983", - //CFT-WBNB New0 Cake LP - "0x584B93f109B83D7A01DF4fF0d450915B97FAd790", - //NFTL-WBNB New1 Cake LP - "0x07c3e0B62A62133eaB8c5e759904350d254B9672", - //CFT-WBNB New1 Cake LP - "0x15CD39e9e494177f13A5Db7c36883BE1a5D95eD8", - //CFT-WBNB V3 Ape LP - "0x51535A61787EcbBCbAeFb2eEe0E2D4FeE2D57607", - //CFT-WBNB V3 Old Ape LP - "0x6f8daEC3f0764B19db745112D297bbea1E6D96e3", -]; - -const NFTL_V1 = "0x2f7b4c618dc8e0bba648e54cdadce3d8361f9816"; -const CTF_V1 = "0x299bac24c8ad5635586fde6619eff7891a6c8969"; - -const NFTL_V2 = "0xE5904E9816b309d3eD4d061c922f5aa8f3B24C92"; -const CTF_V2 = "0x410319197d3394652B7ddDc669E58fbe30B56090"; - -const CTF_V3 = "0x655A46cd88e18a338ECE048228a388c25BFdA9f3"; -const CTF_V3_old = "0x398302C08EcF94AA6E55386182E50e335405a956"; - -const farms = [ - //NFTLFarmV1 - "0x57Bc258169b03047D7778c41014c9cF7779ACA76", - //NFTLFarmV2 - "0x45Eec2D2f9b01D91eCC685945A904C895CAbB7a3", - //CFTFarmV3 Old - "0x08985ff15dE1ed66dDBfD08a2705A8B3612A61Fd", - //CFTFarmV3 - "0xCE997537498793d25dAb0F289e161DB26914275A", -]; - - -const bscTvl = async (api) => { - const blacklistedTokens = [CTF_V3, CTF_V2] - const ownerTokens = [] - for (const farm of farms) { - const poolInfos = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: abi.poolInfo, target: farm }) - ownerTokens.push([poolInfos.map(pool => pool.lpToken), farm]) - } - return sumTokens2({ api, ownerTokens, blacklistedTokens, resolveLP: true, }) -}; - -module.exports = { - bsc: { - staking: staking(farms, [NFTL_V1, CTF_V1, NFTL_V2, CTF_V2, CTF_V3,]), - pool2: pool2s(pool2FarmContracts, lpPool2), - tvl: bscTvl, - }, - methodology: - "We count liquidity on the Farms threw their Contracts", -}; diff --git a/projects/cybro/index.js b/projects/cybro/index.js deleted file mode 100644 index 3de2db525e8..00000000000 --- a/projects/cybro/index.js +++ /dev/null @@ -1,103 +0,0 @@ -const { stakings } = require("../helper/staking.js"); - -const vaultsBlast = [ - '0xc9434fbee4ec9e0bad7d067b35d2329e5f1d8915', - '0xf56dab7b7b2954aa86a591f164205e6cdd33797e', - '0x4caec64454893c7912e6beb1e19b4714dd353748', - '0xb4e96a45699b4cfc08bb6dd71eb1276bfe4e26e7', - '0x9c3d4e6f96d2c3ddd8afee3891b955283a920889', - '0x4f3da57dbfb2b85c96e3556c5f1859ef88f5d6b1', - '0x7458ac85593472ba501ee361449638ed180a7ee7', - '0x83eaed4393328f77d0e402018a369b8b82e501a4', - '0x18e22f3f9a9652ee3a667d78911bac55bc2249af', - '0xd58826d2c0babf1a60d8b508160b52e9c19aff07', - '0x567103a40c408b2b8f766016c57a092a180397a1', - '0xe922bccf90d74f02a9d4203b377399314e008e41', - '0x0667ac28015ed7146f19b2d218f81218abf32951', - '0xdccde9c6800bea86e2e91cf54a870ba3ff6faf9f', - '0x9cc62ef691e869c05fd2ec41839889d4e74c3a3f', - '0x3500e1d4e93c9f45aa8198efda16842cb73fa1bc', - '0x6654cddf2a14a06307af6a8d7731dd4e059962a1', - '0xdb5e7d5ac4e09206fed80efd7abd9976357e1c03', - '0x3db2bd838c2bed431dcfa012c3419b7e94d78456', - '0xc66fc517c8bf1c34ae48529df53dd84469e21daa', - '0x24e72c2c7be9b07942f6f8d3cdce995df699514d', - '0xb3e2099b135b12139c4eb774f84a5808fb25c67d', - '0xb81d975cc7f80ede476c1a930720378bda4092a2', -] - -const cybroStakingBlast = [ - '0xD01D2b926EDB4E9DF43AbC2F97B0655845adA688', - '0x13a2A10C5f800199d2a1B2Db4972eFFDeE3EeaA5', - '0x03B7BEcB964ab0ebad805683d14f338504152707', -] - -const vaultsArbitrum = [ - '0x951c846aa10cc3da45defed784c3802605f71769', - '0x6f0acbaac51f3c72ddaa4edc6e20fc388d20adbc', - '0x320cd9d00961fb45857a043efea77dc6b9db5d95', - '0x4e433ae90f0d1be9d88bed9f7707fcff20a455ac', - '0x1310b9de457675d65f3838c1e9d19a5ca6619440', - '0xbDe5296eA786a12c4BFd60408063816E36A2F4b1', -] - -const vaultsBase = [ - '0x459a3d995d66798b1ab114f702b8bc8655484e78', - '0xa7517b9930d0556175a1971bd62084e16f21881f', - '0x0655e391e0c6e0b8cbe8c2747ae15c67c37583b9', - '0x578e7261b9d3c143700a735526bfd63713f639c5', - '0xdd996648b02bf22d9c348e11d470938f8ae50f2b', - '0x84FbCde24b75F3d45863e82282683DfF16C398B7', -] - -const vaultsBSC = [ - '0x5351d748eb97116755b423bcc207f3613b487ade', -] - -const dexes = [ - '0xe9041d3483a760c7d5f8762ad407ac526fbe144f', - '0xbfb18eda8961ee33e38678caf2bceb2d23aedfea', - '0xe472ccb182a51c589034957cd6291d0b64eaaab2', - '0x370498c028564de4491b8aa2df437fb772a39ec5', - '0xc95317e48451a97602e3ae09c237d1dd8ee83cd0', - '0x66e1bea0a5a934b96e2d7d54eddd6580c485521b', -] - -async function tvlBlast(api) { - const token0s = await api.multiCall({ abi: 'address:token0', calls: dexes}) - const token1s = await api.multiCall({ abi: 'address:token1', calls: dexes}) - const positionData = await api.multiCall({ abi: 'function getPositionAmounts() view returns (uint256 amount0, uint256 amount1)', calls: dexes}) - const ownerTokens = [] - dexes.forEach((dex, idx) => { - const token0 = token0s[idx] - const token1 = token1s[idx] - const { amount0, amount1 } = positionData[idx] - api.add(token0, amount0) - api.add(token1, amount1) - ownerTokens.push([[token0, token1], dex]) - }) - - await api.sumTokens({ ownerTokens }) - return api.erc4626Sum2({ calls: vaultsBlast }); -} - -async function tvlArbitrum(api) { - return api.erc4626Sum2({ calls: vaultsArbitrum }); -} - -async function tvlBase(api) { - return api.erc4626Sum2({ calls: vaultsBase }); -} - -async function tvlBSC(api) { - return api.erc4626Sum2({ calls: vaultsBSC }); -} - -module.exports = { - doublecounted: true, - methodology: "We calculate TVL based on the Total Supply of our proxy contracts through which users interact with vault's contracts", - base: { tvl: tvlBase }, - blast: { tvl: tvlBlast, staking: stakings(cybroStakingBlast, "0x963eec23618bbc8e1766661d5f263f18094ae4d5") }, - arbitrum: { tvl: tvlArbitrum }, - bsc: { tvl: tvlBSC }, -}; diff --git a/projects/cyclefinance/abi.json b/projects/cyclefinance/abi.json deleted file mode 100644 index 184e0f6aa23..00000000000 --- a/projects/cyclefinance/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "LPtoken": "address:LPtoken", - "balanceLPinSystem": "uint256:balanceLPinSystem", - "stakingToken": "address:stakingToken" -} \ No newline at end of file diff --git a/projects/cyclefinance/index.js b/projects/cyclefinance/index.js deleted file mode 100644 index c0d755658b9..00000000000 --- a/projects/cyclefinance/index.js +++ /dev/null @@ -1,110 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const coreRewards = "0xE006716Ae6cAA486d77084C1cca1428fb99c877B"; -const avaxRewards = "0x6140D3ED2426cbB24f07D884106D9018d49d9101"; -const CYCLE = "0x81440C939f2C1E34fc7048E518a637205A632a74"; - -const vaults = [ - //Pangolin Rewards AVAX/PNG - "0xccB42c29285754f441Dc6A4461De011efCD09F75", - - //Gondola Rewards AVAX/GDL - "0x47de256F890d3707aad74A89C6b532eEAaAe54BA", - - //Penguin Rewards AVAX/PEFI - "0x1ee6ed952E71cd3d1D473a596a6761B1a1D704e0", - - //Penguin Rewards PEFI/DAI - "0xB0B55192aA1539f06eBAC509bf714261358A997a", - - //Olive Rewards AVAX/OLIVE - "0xCD1eee22a0Ec06f5D169753cc1B1CC0C57513B24", - - //Avaware Rewards AVAX/AVE - "0x950bF2fb93c4Cb8CaBc7A08eb8A70Ea3c4A2bcC2", - - //Trader Joe Rewards AVAX/JOE - "0xB19bFa46148636C97B0C00A68B24647f60C1995D", - - //Trader Joe Rewards AVAX/SNOB - "0x16aB820ABB64BcE04d15de945c18c0CC31822514", - - //Olive Rewards AVAX/CYCLE - "0x01181D0E43c1A77f111C7968BE5B7e40F1D6e106", - - //Avaware Rewards AVE/CYCLE - "0x4762baf391Ca1A18f71320a6A09bCD2067EA32cA", - - //Avaware Rewards AVE/SHERPA - "0x60B9Fa802C2Bf85203b22c2aC0A68948632bf1f1", - - //Avaware Rewards AVE/YAK - "0xaA76c50B510A668F48E612f980C45DC9691b647A", - - //Pangolin Rewards AVAX/XAVA - "0x13C9810d32bA9B7e51FeEf9aeF3b3D479efCfACC", - - //Pangolin Rewards AVAX/WETH.e - "0x056b234bE3Aaa56506d484e17721Db0098e52474", - - //Trader Joe Rewards AVAX/WETH.e - "0xc2C215d9263592665993eEfc77976e70590f0DF1", - - //Pangolin Rewards AVAX/DAI.e - "0x4Fbb4C6dBD68A609780C79A18C04e5Ac52dD622C", - - //Pangolin Rewards AVAX/USDT.e - "0xD65B47A5b6B6A07CFf8798AB54F136A0f05ADFF6", - - //Pangolin Rewards AVAX/QI - "0x7754Be84f3305A12558e631e5df2A4DF474Cc046", - - //Trader Joe Rewards AVAX/USDT.e - "0x1058B8eAC995968DE18d6a8baf36B3F6536a2Ca1", - - //Trader Joe Rewards AVAX/DAI.e - "0x226C4E8758D37A151Fd01a46505A1D3C0dba3a24", - - //Trader Joe Rewards USDT.e/DAI.e - "0x49D4663dBC92f4AfD0BE0459Ceb20F8e9F5a7118", - - //Trader Joe Rewards AVAX/LINK.e - "0xd7d9151D1cB958F55cAc94196D03Ba267bc7d0dB", - - //Trader Joe Rewards AVAX/WBTC.e - "0xc732a6aA22B60cEAA5c2193EF81D008658a20623", - - //Trader Joe Rewards AVAX/YAK - "0x970C251E85CE1cE0b714de9510135a5B9Cd80b02", - - //Trader Joe Rewards AVAX/USDC.e - "0xb5a23bdF77a8926E732ce4b1F0885e7bB3b2Dfe9", - - //Trader Joe Rewards USDC.e/DAI.e - "0x32bdcdDA8eb152759c2F27D71e1F8d242D46D9Ca", -]; - -/*** Staking of native token CYCLE and CYCLE/AVAX LP TVL Portion ***/ -const staking = async (api) => { - const staking_lpToken = await api.call({ abi: abi.stakingToken, target: coreRewards, }) - return sumTokens2({ api, tokens: [CYCLE, staking_lpToken], owners: [coreRewards, avaxRewards] }) -}; - -const avaxTvl = async (api) => { - const lpTokens = await api.multiCall({ abi: abi.LPtoken, calls: vaults, }) - const lpTokens_bal = await api.multiCall({ abi: abi.balanceLPinSystem, calls: vaults, }) - api.add(lpTokens, lpTokens_bal) - return sumTokens2({ api, resolveLP: true,}) -}; - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - avax: { - tvl: avaxTvl, - staking - }, - methodology: `We add liquidity that is on the VAULTS threw their contracts and the portion of staking the native token (CYCLE) - && CYCLE/AVAX LP by coreRewards and avaxRewards contracts respectivly`, -}; diff --git a/projects/cyclex/index.js b/projects/cyclex/index.js deleted file mode 100644 index 55e09da011b..00000000000 --- a/projects/cyclex/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - ethereum: { - usdt: { - token: ADDRESSES.ethereum.USDT, - assets: [ - '0x6986e96285008a7e4A6366E7391C976A17B93eb2' - ] - }, - }, - avax: { - usdt: { - token: ADDRESSES.avax.USDt, - assets: [ - '0xBE2b4CCdbEccFB5a88f1a331fe56f5FaC7Dbd409', - '0x11d575518A7f9957DC82892971146e763a3E140e' - ] - }, - }, - ailayer: { - bfbtc: { - token: '0xC2236204768456B21eAfEf0d232Ba1FccCe59823', - assets: [ - '0xDA8c0bb4c00C187c6DB4Cdb12ddf5b4a37B3e95d' - ] - }, - }, -} - -async function etherTvl(api) { - const { token, assets } = config.ethereum.usdt - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: assets.map(v => ({ - target: token, - params: [v] - })) - }) - api.add(token, balances) -} - -async function avaxTvl(api) { - const { token, assets } = config.avax.usdt - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: assets.map(v => ({ - target: token, - params: [v] - })) - }) - api.add(token, balances) -} - -async function ailayerTvl(api) { - const { token, assets } = config.ailayer.bfbtc - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: assets.map(v => ({ - target: token, - params: [v] - })) - }) - api.add(token, balances) -} - -module.exports = { - methodology: "TVL is fetched from asset address", - ethereum: { - tvl: etherTvl - }, - avax: { - tvl: avaxTvl - }, - ailayer: { - tvl: ailayerTvl - }, -} diff --git a/projects/cyclo/index.js b/projects/cyclo/index.js deleted file mode 100644 index 190b313e956..00000000000 --- a/projects/cyclo/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2, sumTokensExport } = require("../helper/unwrapLPs") - -const ChainVaults = { - flare: { - cysflr: { - start: 34244389, // cysflr deployement block - address: "0x19831cfB53A0dbeAD9866C43557C1D48DfF76567", // cysflr - asset: "0x12e605bc104e93B45e1aD99F9e555f659051c2BB", // sflr - }, - cyweth: { - start: 36028901, // cyweth deployement block - address: "0xd8BF1d2720E9fFD01a2F9A2eFc3E101a05B852b4", // cyweth - asset: "0x1502FA4be69d526124D453619276FacCab275d3D", // weth - }, - }, -} - -async function tvl(api) { - const tokensAndOwners = Object.values(ChainVaults.flare).map((v) => [v.asset, v.address]); - return sumTokens2({ api, tokensAndOwners, fetchCoValentTokens: true, permitFailure: true }) -} - -module.exports = { - methodology: 'Total value locked in Cyclo vaults.', - flare: { tvl } -} diff --git a/projects/cyclone/contracts.json b/projects/cyclone/contracts.json deleted file mode 100644 index 3786bfa6988..00000000000 --- a/projects/cyclone/contracts.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "ethereum": { - "pool2": { - "address": "0xdc71bc29d12960a3ee5452fac6f033a1b8e756fb", - "token": "0x37d9c7f451e5c619a7d4ca01e06761eb7dae6f89" - }, - "latte": { - "address": "0xd619c8da0a58b63be7fa69b4cc648916fe95fa1b", - "token": "" - }, - "doppio": { - "address": "0x52609307f2f6c43b7df63364ef65718d299ac246", - "token": "" - }, - "arabica": { - "address": "0xb6e9ea062a7719846bc9e3e3ae8712e74faad376", - "token": "" - }, - "espresso": { - "address": "0xa38b6742cef9573f7f97c387278fa31482539c3d", - "token": "0xdac17f958d2ee523a2206206994597c13d831ec7" - }, - "coldbrew": { - "address": "0x09f03488291063a8f3c67d2aab7002419d11c113", - "token": "0x77777feddddffc19ff86db637967013e6c6a116c" - } - }, - "bsc": { - "pool2": { - "address": "0x92a737097d711bec4c31351997254e98e5f0d430", - "token": "0xecf30fbecfa642012f54212a3be92eef1e48edac" - }, - "staking": { - "address": "0xD90a6BF8439EF7214cF00Da83E926068b6a507eC", - "token": "0x810ee35443639348adbbc467b33310d2ab43c168" - },"C3PO": { - "address": "0x66b5e322dc31f8c7a33ffd23975163795f8d16c7", - "token": "" - },"BB8": { - "address": "0x79459751F6882868D1299Bfa412428488b434541", - "token": "0x9678e42cebeb63f23197d726b29b1cb20d0064e5" - },"R2D2": { - "address": "0xbe19d541389c9d3e03efc08f3d5008e8c9cc42a5", - "token": "0xe9e7cea3dedca5984780bafc599bd69add087d56" - } - }, - "iotex": { - "pool2": { - "address": "0xacf00a84559f536ba64064a4c73b74698013ef36", - "token": "0x1381b170681074fedaf1c4e35be1880bc4e85c4a" - }, - "staking": { - "address": "0xb80d026a7faa8c35def0e430f9b36163ac949c19", - "token": "0x4d7b88403aa2f502bf289584160db01ca442426c" - }, - "zm": { - "address": "0xfa886fe8d27b284525974ddc6e2c0cb858a57251", - "token": "0xf87aed04889a1dd0159d9c22b0d57b345ab16ddd" - }, - "mcn": { - "address": "0x0ad3bee1ee270339c921fb20686bfd90245ee5d8", - "token": "0x3fe04320885e6124231254c802004871be681218" - }, - "busd": { - "address": "0xdfbdf24b8019ef44f321de54d456ddd216e73163", - "token": "0x84abcb2832be606341a50128aeb1db43aa017449" - } - }, - "polygon": { - "pool2": { - "address": "0xa8c187d8773bc9e49a10554715ff49bdcf39d55d", - "token": "0x6eA88502BC127EF1a7f45fAC6B7168fc0633Ba51" - }, - "octagon": { - "address": "0x3E2c1b4dfA868A6ffD8CdC20D7BFa9Abb4462284", - "token": "0x831753dd7087cac61ab5644b308642cc1c33dc13" - }, - "pentagon": { - "address": "0x87059fDff1dC655ACf8652bA530d89f38de22f16", - "token": "" - }, - "hexagon": { - "address": "0xb5AEE5f2743A9f4abcE9C964d1530e3E96725Be7", - "token": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" - } - } -} \ No newline at end of file diff --git a/projects/cyclone/index.js b/projects/cyclone/index.js deleted file mode 100644 index 13880d41dfe..00000000000 --- a/projects/cyclone/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const contracts = require("./contracts.json"); -const { pool2 } = require("./../helper/pool2"); -const { staking } = require(".././helper/staking.js"); -const { - sumTokens2, nullAddress, -} = require("./../helper/unwrapLPs"); -const {sumTokensExport} = require("./../helper/unknownTokens"); - -async function tvl(api){ - const toa = [] - - for (let contract of Object.entries(contracts[api.chain])) { - if (contract[0] == "pool2" || contract[0] == "staking") { - continue; - } else if (contract[1].token == "") { - toa.push([nullAddress, contract[1].address]) - } else { - toa.push([contract[1].token, contract[1].address]) - } - } - return sumTokens2({ tokensAndOwners: toa, api }) -} - -module.exports = { - iotex: { - tvl, - pool2: sumTokensExport({ owner: contracts.iotex.pool2.address, tokens: [contracts.iotex.pool2.token], }), - staking: staking(contracts.iotex.staking.address, contracts.iotex.staking.token, "iotex", "cyclone-protocol", 18), - }, - ethereum: { - tvl, - pool2: pool2(contracts.ethereum.pool2.address, contracts.ethereum.pool2.token), - }, - bsc: { - tvl, - pool2: pool2(contracts.bsc.pool2.address, contracts.bsc.pool2.token), - staking: staking(contracts.bsc.staking.address, contracts.bsc.staking.token, "bsc", "cyclone-protocol", 18), - }, - polygon: { - tvl, - pool2: pool2(contracts.polygon.pool2.address, contracts.polygon.pool2.token,), - }, -}; diff --git a/projects/cygnus-btc/index.js b/projects/cygnus-btc/index.js deleted file mode 100644 index 9b24bb22a39..00000000000 --- a/projects/cygnus-btc/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.cygnus - } -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/cygnus-fi-restake/index.js b/projects/cygnus-fi-restake/index.js deleted file mode 100644 index cb2f06acfef..00000000000 --- a/projects/cygnus-fi-restake/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const ADDRESSES = require('../helper/coreAssets.json') - -// Cygnus is extending the restaking protocol to more chains. -// Bsquared is one of the first chains we are supporting. - -const CYGNUS_POOL_CONFIG = { - bsquared: { - UBTC: { - depositToken: ADDRESSES.bsquared.UBTC, - vault: '0x7551aEa51588AaCe99B89c3FaC3CFc4108DB8094' - }, - STBTC: { - depositToken: ADDRESSES.swellchain.stBTC, - vault: '0x0Ce45dd53affbb011884EF1866E0738f58AB7969' - }, - UNIBTC: { - depositToken: '0x93919784C523f39CACaa98Ee0a9d96c3F32b593e', - vault: '0xBc323bA4bbf2559417C3Ca47A75e2Ea341Cf8320' - } - }, - base: { - sUSDS: { - depositToken: '0x5875eee11cf8398102fdad704c9e96607675467a', - vault: '0xc9915B93e88C40f40859652F6dD150b70A1A881E' - }, - clBTC: { - depositToken: '0x8d2757ea27aabf172da4cca4e5474c76016e3dc5', - vault: '0x3F772356E77F38B7d5432e29C7F16B66a49f9801' - }, - cgETH_hashkey: { - depositToken: '0xf587b7116879a529353cc71ee959cd69fd5cae48', - vault: '0xD4a90C85cd602aF645015FeE43354120D5eC4102' - } - }, - arbitrum: { - clBTC: { - depositToken: '0x1792865d493fe4dfdd504010d3c0f6da11e8046d', - vault: '0xE7ae30C03395D66F30A26C49c91edAe151747911' - }, - cgETH_hashkey: { - depositToken: '0x0ce45dd53affbb011884ef1866e0738f58ab7969', - vault: '0x8d2757EA27AaBf172DA4CCa4e5474c76016e3dC5' - } - }, - optimism: { - clBTC: { - depositToken: '0x1792865d493fe4dfdd504010d3c0f6da11e8046d', - vault: '0xE7ae30C03395D66F30A26C49c91edAe151747911' - }, - cgETH_hashkey: { - depositToken: '0x0ce45dd53affbb011884ef1866e0738f58ab7969', - vault: '0x8d2757EA27AaBf172DA4CCa4e5474c76016e3dC5' - } - }, - ethereum: { - clBTC: { - depositToken: '0xe7ae30c03395d66f30a26c49c91edae151747911', - vault: '0xc1c1688b66180Cb91f4ac2f615D49F1C256CF003' - }, - cgETH_hashkey: { - depositToken: '0xc60a9145d9e9f1152218e7da6df634b7a74ae444', - vault: '0x59BD72aBDc17056487220511F1Af0c76b2b071d1' - } - }, - -} - - -module.exports = { - methodology: "Calculates assets locked in cygnus restaking vault", -} - -Object.keys(CYGNUS_POOL_CONFIG).forEach(chain => { - const tokensAndOwners = Object.values(CYGNUS_POOL_CONFIG[chain]).map(i => [i.depositToken, i.vault]) - module.exports[chain] = { tvl: sumTokensExport({ tokensAndOwners }) } -}) diff --git a/projects/cygnus-fi-ton/index.js b/projects/cygnus-fi-ton/index.js deleted file mode 100644 index f795f9a54f1..00000000000 --- a/projects/cygnus-fi-ton/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { call } = require("../helper/chain/ton") -const { get } = require('../helper/http') - -// helper function of getting jetton metadata -async function getJettonMetadata(addr) { - const res = await get(`https://tonapi.io/v2/jettons/${addr}`) - return res -} - -async function tvl(api) { - const CLTON_MINTER_ADDRESS = 'EQDz48al4FfPnapvXYJOfkBOIj3xvNZ0t5vSpQN-Qukqwm7W' - const CLTON_TOKEN_ADDRESS = 'EQCxd6SJQ8KiLkEpN3OoBfUIHqPE3yp0j80UnPysQqcTikNF' - - const cltonMinterResult = await call({ target: CLTON_MINTER_ADDRESS, abi: "get_minter_data", stack: [] }) - // exchange rate from clTON to TON: decimal 9 - - const cltonToTon = cltonMinterResult[4] / 1e9 - const cltonMetadata = await getJettonMetadata(CLTON_TOKEN_ADDRESS) - - // Now the tokens in the withdrawal vault will be correctly destroyed, so the TOTAL SUPPLY can be a true indication of tvl - const cltonTotalSupply = (cltonMetadata['total_supply']) / 1e9 - - const cltonTvl = cltonTotalSupply * cltonToTon - api.addCGToken("the-open-network", cltonTvl) -} - -module.exports = { - ton: { - tvl - } -}; \ No newline at end of file diff --git a/projects/cygnus-finance/index.js b/projects/cygnus-finance/index.js deleted file mode 100644 index 91b03508256..00000000000 --- a/projects/cygnus-finance/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { call } = require("../helper/chain/ton") -const { get } = require('../helper/http') - -const CGUSD_CONTRACT = "0xCa72827a3D211CfD8F6b00Ac98824872b72CAb49" -const START_TIME = 1708351200 - -async function baseTvl(api) { - await api.erc4626Sum({ calls: [CGUSD_CONTRACT], balanceAbi: 'getTotalPooledAssets', tokenAbi: "asset" }) -} - -// helper function of getting jetton metadata -async function getJettonMetadata(addr) { - const res = await get(`https://tonapi.io/v2/jettons/${addr}`) - return res -} -async function getJettonBalance(address, jettonMasterAddress) { - const res = await get(`https://tonapi.io/v2/accounts/${address}/jettons/${jettonMasterAddress}`) - return res.balance -} - -async function tonTvl() { - const MINTER_ADDRESS = "EQCfvQW-thWpqKgyqtXCFbYayDlHqS0-frkyP6VD70paLFZa" - const CGUSDT_ADDRESS = 'EQBIBw3mF_TDMJqWAZihVsyUBMWpWw_deftZLiCxTmrCUOKy' - - const minterResult = await call({ target: MINTER_ADDRESS, abi: "get_minter_data", stack: [] }) - // exchange rate from cgUSDT to USDT: decimal 9 - const cgusdtTousdt = (minterResult[5]) / 10 ** 9 - - // cgUSDT total supply: decimal 6 - const jettonResult = await getJettonMetadata(CGUSDT_ADDRESS) - const cgUsdtTotalSupply = jettonResult['total_supply'] - - // subtract the amount of cgUSDT in the withdrawal vault - const withdrawVaultBalance = await getJettonBalance(MINTER_ADDRESS, CGUSDT_ADDRESS) - - // caculate tvl - const tvl = (cgUsdtTotalSupply - withdrawVaultBalance) / 10 ** 6 * cgusdtTousdt - return { "coingecko:tether": tvl } -} - - -module.exports = { - methodology: "Calculates the total cgUSD and cgUSDT Supply", - start: START_TIME, - base: { - tvl: baseTvl, - }, - ton: { - tvl: tonTvl - } -}; diff --git a/projects/cygnusdao/abi.json b/projects/cygnusdao/abi.json deleted file mode 100644 index d3d0639ac89..00000000000 --- a/projects/cygnusdao/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "shuttleTvlUsd": "function shuttleTvlUsd(uint256) public view returns (uint256 totalUsd)", - "shuttlesDeployed": "function shuttlesDeployed() external view override returns (uint256)", - "borrowableTvlUsd": "function borrowableTvlUsd(uint256) public view returns (uint256 totalUsd)", - "collateralTvlUsd": "function collateralTvlUsd(uint256) public view returns (uint256 totalUsd)" -} \ No newline at end of file diff --git a/projects/cygnusdao/index.js b/projects/cygnusdao/index.js deleted file mode 100644 index 4ba07f2267d..00000000000 --- a/projects/cygnusdao/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const FACTORY_CONTRACT = "0x8796747946871B6b8ea495CCE8d7814b17959296"; -const vaultAbi = require('../charmfinance/vaultAbi.json') -const { getLogs } = require('../helper/cache/getLogs'); -const { getUniqueAddresses } = require('../helper/utils'); - -async function tvl(api) { - let fromBlock = 0; - switch (api.chain) { - case 'polygon': fromBlock = 49831226; break - case 'arbitrum': fromBlock = 150521724; break; - case 'polygon_zkevm': fromBlock = 9120630; break; - } - - const logs = await getLogs({ - api, - target: FACTORY_CONTRACT, - eventAbi: 'event NewShuttle (address indexed lpTokenPair, uint256 indexed shuttleId, uint256 orbiterId, address borrowable, address collateral)', - onlyArgs: true, - fromBlock, - }) - const pools = getUniqueAddresses(logs.map(i => [i.collateral, i.borrowable]).flat()) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: pools }) - const bals = await api.multiCall({ abi: 'address:totalBalance', calls: pools }) - const isHypervisor = await api.multiCall({ abi: 'address:pool', calls: tokens, permitFailure: true }) - const hypervisorPools = { pools: [], bals: [] } - isHypervisor.forEach((i, idx) => { - if (i) { - hypervisorPools.pools.push(tokens[idx]) - hypervisorPools.bals.push(bals[idx]) - } else { - api.add(tokens[idx], bals[idx]) - } - }) - const hypervisorBals = await api.multiCall({ abi: vaultAbi.getTotalAmounts, calls: hypervisorPools.pools }) - const tokens0s = await api.multiCall({ abi: vaultAbi.token0, calls: hypervisorPools.pools }) - const tokens1s = await api.multiCall({ abi: vaultAbi.token1, calls: hypervisorPools.pools }) - const totalSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: hypervisorPools.pools }) - hypervisorPools.pools.forEach((pool, idx) => { - const ratio = hypervisorPools.bals[idx] / totalSupplies[idx] - api.add(tokens0s[idx], hypervisorBals[idx][0] * ratio) - api.add(tokens1s[idx], hypervisorBals[idx][1] * ratio) - }) -} - -async function borrowed(api) { - api.addCGToken('tether', (await api.call({ abi: 'uint256:cygnusTotalBorrows', target: FACTORY_CONTRACT }))/1e6) - return api.getBalances() -} - -module.exports = { - doublecounted: true, - methodology: "TVL of all shuttles (borrowable + collateral).", - arbitrum: { tvl, borrowed, }, - polygon: { tvl, borrowed, }, - polygon_zkevm: { tvl, borrowed, } -}; - diff --git a/projects/cykura/index.js b/projects/cykura/index.js deleted file mode 100644 index 008088bde0a..00000000000 --- a/projects/cykura/index.js +++ /dev/null @@ -1,102 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { sumTokens2, getProvider, } = require("../helper/solana"); - - -const idl = { - "version": "0.1.6", - "name": "cyclos_core", - "instructions": [], - "accounts": [ - { - "name": "PoolState", - "type": { - "kind": "struct", - "fields": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "token0", - "type": "publicKey" - }, - { - "name": "token1", - "type": "publicKey" - }, - { - "name": "fee", - "type": "u32" - }, - { - "name": "tickSpacing", - "type": "u16" - }, - { - "name": "liquidity", - "type": "u64" - }, - { - "name": "sqrtPriceX32", - "type": "u64" - }, - { - "name": "tick", - "type": "i32" - }, - { - "name": "observationIndex", - "type": "u16" - }, - { - "name": "observationCardinality", - "type": "u16" - }, - { - "name": "observationCardinalityNext", - "type": "u16" - }, - { - "name": "feeGrowthGlobal0X32", - "type": "u64" - }, - { - "name": "feeGrowthGlobal1X32", - "type": "u64" - }, - { - "name": "protocolFeesToken0", - "type": "u64" - }, - { - "name": "protocolFeesToken1", - "type": "u64" - }, - { - "name": "unlocked", - "type": "bool" - } - ] - } - } - ], - "events": [], - "errors": [], - "metadata": { - "address": "cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8" - } -} - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, idl.metadata.address, provider) - const amms = await program.account.poolState.all() - return sumTokens2({ owners: amms.map(i => i.publicKey.toString()), }); -} - -module.exports = { - timetravel: false, - solana: { - tvl, - } -} \ No newline at end of file diff --git a/projects/cypher-trade/idl.json b/projects/cypher-trade/idl.json deleted file mode 100644 index 3a7c32f61d4..00000000000 --- a/projects/cypher-trade/idl.json +++ /dev/null @@ -1,631 +0,0 @@ -{ - "version": "3.0.0", - "name": "cypher", - "instructions": [], - "accounts": [ - { - "name": "CacheAccount", - "type": { - "kind": "struct", - "fields": [ - {"name": "authority", "docs": ["the authority of the cache"], "type": "publicKey"}, - { - "name": "caches", - "docs": [ - "the price caches, we have enough space here for more oracle maps than ever needed", - "assuming that oracle products accounts actually get reused" - ], - "type": {"array": [{"defined": "Cache"}, 512]} - } - ] - } - }, - { - "name": "Clearing", - "type": { - "kind": "struct", - "fields": [ - {"name": "bumpSeed", "type": {"array": ["u8", 1]}}, - {"name": "clearingType", "docs": ["the type of the clearing"], "type": {"defined": "ClearingType"}}, - {"name": "padding1", "type": {"array": ["u8", 6]}}, - {"name": "clearingNumberSeed", "type": {"array": ["u8", 1]}}, - {"name": "padding2", "type": {"array": ["u8", 7]}}, - {"name": "authority", "docs": ["the clearing's authority"], "type": "publicKey"}, - {"name": "feeMint", "docs": ["the mint of the token used to calculate fee tiers"], "type": "publicKey"}, - {"name": "padding3", "type": {"array": ["u64", 4]}}, - {"name": "feeTiers", "docs": ["the fee tiers"], "type": {"array": [{"defined": "FeeTier"}, 10]}}, - {"name": "config", "docs": ["the config of the clearing"], "type": {"defined": "ClearingConfig"}} - ] - } - }, - { - "name": "Whitelist", - "type": { - "kind": "struct", - "fields": [ - {"name": "clearing", "docs": ["the corresponding clearing"], "type": "publicKey"}, - {"name": "authority", "docs": ["the clearing's authority"], "type": "publicKey"}, - {"name": "accountOwner", "docs": ["the account owner"], "type": "publicKey"}, - {"name": "account", "docs": ["the actual cypher account"], "type": "publicKey"}, - { - "name": "status", - "docs": [ - "whitelist status", - "i.e, when a whitelist status is revoked, the authority of the clearing should be able", - "to suspend a cypher account" - ], - "type": {"defined": "WhitelistStatus"} - }, - {"name": "padding1", "type": {"array": ["u8", 7]}} - ] - } - }, - { - "name": "FuturesMarket", - "type": { - "kind": "struct", - "fields": [ - { - "name": "inner", - "docs": ["the inner structure which contains all relevant agnostic orderbook related public keys and fields"], - "type": {"defined": "AgnosticMarket"} - }, - {"name": "idoAuthority", "docs": ["the ido authority of the market, if applicable"], "type": "publicKey"}, - {"name": "underlyingMint", "docs": ["the mint of the underlying token this derivative market may physically deliver"], "type": "publicKey"}, - {"name": "padding1", "type": {"array": ["u64", 8]}}, - { - "name": "tokenSupply", - "docs": [ - "the supply of the derivative token", - "i.e in the case of a market being for physical delivery of the underlying asset", - "the token supply should be equal to the amount of tokens available for delivery" - ], - "type": "u64" - }, - {"name": "activatesAt", "docs": ["timestamp at which the market becomes active"], "type": "u64"}, - {"name": "expiresAt", "docs": ["timestamp at which the market expires"], "type": "u64"}, - {"name": "positionsCount", "docs": ["number of open positions in this market"], "type": "u64"}, - {"name": "marketPrice", "docs": ["the twap price"], "type": "i128"}, - {"name": "totalBorrows", "docs": ["the total amount of borrows of the derivative"], "type": "u64"}, - {"name": "totalPurchased", "docs": ["the total amount of purchased tokens in the case of a pre-ido market"], "type": "u64"}, - {"name": "padding2", "type": {"array": ["u64", 2]}}, - { - "name": "totalRaised", - "docs": ["the total amount of quote token that is available for the pre-ido token project's team to be collected"], - "type": "i128" - } - ] - } - }, - { - "name": "PerpetualMarket", - "type": { - "kind": "struct", - "fields": [ - { - "name": "inner", - "docs": ["the inner structure which contains all relevant agnostic orderbook related public keys and fields"], - "type": {"defined": "AgnosticMarket"} - }, - {"name": "longFunding", "docs": ["the long funding"], "type": "i128"}, - {"name": "shortFunding", "docs": ["the short funding"], "type": "i128"}, - {"name": "lastFundingUpdate", "docs": ["the timestamp of the last funding update"], "type": "u64"}, - {"name": "impactQuantity", "docs": ["the impact quantity used when getting bids and asks to calculate book mid price"], "type": "u64"}, - {"name": "padding1", "type": {"array": ["u64", 10]}}, - {"name": "minFunding", "docs": ["the minimum funding rate for this market, in percentage"], "type": "i8"}, - {"name": "maxFunding", "docs": ["the maximum funding rate for this market, in percentage"], "type": "i8"}, - {"name": "padding2", "type": {"array": ["u8", 6]}} - ] - } - }, - { - "name": "OracleProducts", - "type": { - "kind": "struct", - "fields": [ - {"name": "productsType", "docs": ["the products type"], "type": {"defined": "ProductsType"}}, - {"name": "padding", "type": {"array": ["u8", 7]}}, - { - "name": "symbol", - "docs": [ - "the symbol of the underlying token that this oracle products account is responsible for", - "", - "this is used as a PDA for the oracle products account to more easily derive this account and see if it exists so it is properly reused" - ], - "type": {"array": ["u8", 32]} - }, - {"name": "maxConfidenceInterval", "docs": ["the maximum confidence interval for the oracle price"], "type": "f64"}, - {"name": "futuresMarket", "docs": ["the futures market associated with this oracle products account"], "type": "publicKey"}, - {"name": "perpMarket", "docs": ["the perp market associated with this oracle products account"], "type": "publicKey"}, - {"name": "tokenMint", "docs": ["the token mint associated with this oracle products account"], "type": "publicKey"}, - {"name": "products", "docs": ["the product accounts"], "type": {"vec": {"array": ["u8", 32]}}}, - {"name": "weights", "docs": ["the weights of the products"], "type": {"vec": "u16"}} - ] - } - }, - { - "name": "OracleStub", - "type": { - "kind": "struct", - "fields": [ - {"name": "symbol", "docs": ["the symbol of the underlying token that this oracle stub provides a feed for"], "type": {"array": ["u8", 32]}}, - {"name": "price", "docs": ["The oracle price"], "type": "i128"} - ] - } - }, - { - "name": "OrdersAccount", - "type": { - "kind": "struct", - "fields": [ - {"name": "orderCount", "docs": ["number of orders"], "type": "u8"}, - {"name": "padding", "type": {"array": ["u8", 7]}}, - {"name": "authority", "docs": ["the account's authority"], "type": "publicKey"}, - {"name": "market", "docs": ["the account's authority"], "type": "publicKey"}, - {"name": "masterAccount", "docs": ["the master account pubkey"], "type": "publicKey"}, - {"name": "makerBaseVolume", "docs": ["the accumulated maker base token volume"], "type": "u64"}, - {"name": "makerQuoteVolume", "docs": ["the accumulated maker quote token volume"], "type": "u64"}, - {"name": "takerBaseVolume", "docs": ["the accumulated taker base token volume"], "type": "u64"}, - {"name": "takerQuoteVolume", "docs": ["the accumulated taker quote token volume"], "type": "u64"}, - {"name": "baseTokenFree", "docs": ["the amount of base token free"], "type": {"array": ["u64", 24]}}, - {"name": "baseTokenLocked", "docs": ["the amount of base token locked"], "type": {"array": ["u64", 24]}}, - {"name": "quoteTokenFree", "docs": ["the amount of quote token free"], "type": {"array": ["u64", 24]}}, - {"name": "quoteTokenLocked", "docs": ["the amount of quote token locked in orders"], "type": {"array": ["u64", 24]}}, - {"name": "openOrders", "docs": ["the open orders in this account"], "type": {"array": [{"defined": "OpenOrder"}, 128]}} - ] - } - }, - { - "name": "PoolNode", - "type": { - "kind": "struct", - "fields": [ - {"name": "cacheIndex", "docs": ["the index of the cache for the pool that this node belongs to"], "type": "u16"}, - {"name": "vaultSignerSeed", "docs": ["the bump seed"], "type": {"array": ["u8", 1]}}, - {"name": "nodeNumber", "docs": ["the number of the node, also used as a seed for the pool node pda"], "type": "u8"}, - {"name": "operatingStatus", "type": {"defined": "OperatingStatus"}}, - {"name": "padding1", "type": {"array": ["u8", 11]}}, - {"name": "selfAddress", "docs": ["the pool node's address, used as a seed for the vault signer"], "type": "publicKey"}, - {"name": "authority", "docs": ["the authority over this account"], "type": "publicKey"}, - {"name": "cache", "docs": ["the cache account"], "type": "publicKey"}, - {"name": "pool", "docs": ["the pool this node belongs to"], "type": "publicKey"}, - {"name": "tokenMint", "docs": ["the node's token mint"], "type": "publicKey"}, - {"name": "tokenVault", "docs": ["the node's token vault"], "type": "publicKey"}, - {"name": "vaultSigner", "docs": ["the node's vault signer"], "type": "publicKey"}, - {"name": "deposits", "docs": ["the amount of deposits"], "type": "i128"}, - {"name": "borrows", "docs": ["the amount of borrows"], "type": "i128"}, - {"name": "accumBorrows", "docs": ["accumulated borrows"], "type": "i128"}, - {"name": "accumRepays", "docs": ["accumulated repays"], "type": "i128"}, - {"name": "protocolFees", "docs": ["protocol fees accumulated so far"], "type": "u64"}, - {"name": "padding2", "type": {"array": ["u64", 1]}} - ] - } - }, - { - "name": "Pool", - "type": { - "kind": "struct", - "fields": [ - {"name": "bumpSeed", "docs": ["the bump seed"], "type": {"array": ["u8", 1]}}, - {"name": "operatingStatus", "docs": ["the pool's operating status"], "type": {"defined": "OperatingStatus"}}, - {"name": "padding1", "type": {"array": ["u8", 14]}}, - {"name": "poolName", "docs": ["the name of the pool, which is also used as a seed"], "type": {"array": ["u8", 32]}}, - {"name": "config", "docs": ["the pool config"], "type": {"defined": "PoolConfig"}}, - {"name": "authority", "docs": ["the authority over this account"], "type": "publicKey"}, - {"name": "tokenMint", "docs": ["the address of the token mint this pool represents"], "type": "publicKey"}, - {"name": "padding2", "type": {"array": ["u64", 4]}}, - {"name": "oracleProducts", "docs": ["the oracle products account"], "type": "publicKey"}, - {"name": "dexMarket", "docs": ["the dex market for this pool"], "type": "publicKey"}, - {"name": "cache", "docs": ["the price cache account"], "type": "publicKey"}, - {"name": "padding3", "type": {"array": ["u64", 8]}}, - {"name": "deposits", "docs": ["the amount of deposits across all nodes"], "type": "i128"}, - {"name": "borrows", "docs": ["the amount of borrows across all nodes"], "type": "i128"}, - {"name": "depositIndex", "docs": ["the deposit index"], "type": "i128"}, - {"name": "borrowIndex", "docs": ["the borrow index"], "type": "i128"}, - {"name": "accumDepositInterestPayment", "docs": ["accumulated deposit interest payments denominated in quote currency"], "type": "i128"}, - {"name": "accumBorrowInterestPayment", "docs": ["accumulated borrow interest payments denominated in quote currency"], "type": "i128"}, - {"name": "indexUpdatedAt", "docs": ["timestamp of the last index update"], "type": "u64"}, - {"name": "protocolFees", "docs": ["protocol fees accumulated so far"], "type": "u64"}, - {"name": "insuranceFund", "docs": ["the insurance fund for this pool"], "type": "u64"}, - {"name": "padding4", "type": {"array": ["u64", 12]}}, - {"name": "nodes", "type": {"array": [{"defined": "NodeInfo"}, 24]}} - ] - } - }, - { - "name": "PriceHistory", - "type": { - "kind": "struct", - "fields": [ - {"name": "market", "docs": ["market this price history is for"], "type": "publicKey"}, - {"name": "data", "docs": ["array of price infos."], "type": {"array": [{"defined": "PriceWithTs"}, 14400]}}, - {"name": "config", "type": {"defined": "PriceHistoryConfig"}}, - {"name": "longerHead", "docs": ["head of prices for longer time horizon."], "type": "u16"}, - {"name": "shorterHead", "docs": ["head of prices for shorter time horizon."], "type": "u16"}, - {"name": "tail", "docs": ["tail of prices(most recently added price)."], "type": "u16"}, - {"name": "padding1", "type": "u16"}, - {"name": "padding2", "type": {"array": ["u64", 8]}} - ] - } - }, - { - "name": "CypherAccount", - "type": { - "kind": "struct", - "fields": [ - {"name": "bumpSeed", "docs": ["the bump seed"], "type": {"array": ["u8", 1]}}, - {"name": "accountNumberSeed", "docs": ["the account number seed"], "type": {"array": ["u8", 1]}}, - {"name": "accountType", "docs": ["the account type"], "type": {"defined": "AccountType"}}, - {"name": "feeTier", "docs": ["the fee tier of this account"], "type": "u8"}, - {"name": "padding", "type": {"array": ["u8", 12]}}, - {"name": "clearing", "docs": ["the clearing this account belongs to"], "type": "publicKey"}, - {"name": "authority", "docs": ["the account's authority, should match sub accounts authority"], "type": "publicKey"}, - {"name": "delegate", "docs": ["the account's delegate"], "type": "publicKey"}, - {"name": "subAccountCaches", "docs": ["the sub account cache"], "type": {"array": [{"defined": "SubAccountCache"}, 24]}}, - {"name": "updatedAt", "docs": ["slot of the last account update"], "type": "u64"}, - {"name": "padding2", "type": {"array": ["u8", 8]}} - ] - } - }, - { - "name": "CypherSubAccount", - "type": { - "kind": "struct", - "fields": [ - {"name": "bumpSeed", "docs": ["the bump seed"], "type": {"array": ["u8", 1]}}, - {"name": "accountNumberSeed", "docs": ["the account number seed"], "type": {"array": ["u8", 1]}}, - {"name": "marginingType", "docs": ["the margining type of this account"], "type": {"defined": "SubAccountMargining"}}, - {"name": "padding", "type": {"array": ["u8", 13]}}, - {"name": "accountAlias", "docs": ["the alias of the account"], "type": {"array": ["u8", 32]}}, - {"name": "clearing", "docs": ["the associated clearing"], "type": "publicKey"}, - {"name": "masterAccount", "docs": ["the master account"], "type": "publicKey"}, - {"name": "authority", "docs": ["the authority"], "type": "publicKey"}, - {"name": "delegate", "docs": ["the delegate"], "type": "publicKey"}, - {"name": "updatedAt", "docs": ["the slot of the last update of this account"], "type": "u64"}, - {"name": "claimableRewards", "docs": ["the amount of claimable liquidity mining rewards"], "type": "u64"}, - {"name": "padding2", "type": {"array": ["u64", 7]}}, - {"name": "padding3", "type": {"array": ["u8", 8]}}, - {"name": "positions", "docs": ["the positions of this sub account"], "type": {"array": [{"defined": "PositionSlot"}, 24]}} - ] - } - } - ], - "types": [ - { - "name": "Cache", - "type": { - "kind": "struct", - "fields": [ - {"name": "oracleProducts", "docs": ["the oracle products account that is used to derive this price feed"], "type": "publicKey"}, - {"name": "oraclePrice", "docs": ["the latest price"], "type": "i128"}, - {"name": "marketPrice", "docs": ["the twap price for the futures market"], "type": "i128"}, - {"name": "updatedAt", "docs": ["the slot at which this cache was last updated"], "type": "u64"}, - {"name": "padding1", "type": {"array": ["u8", 8]}}, - {"name": "depositIndex", "docs": ["the deposit index of the spot token"], "type": "i128"}, - {"name": "borrowIndex", "docs": ["the borrow index of the spot token"], "type": "i128"}, - {"name": "spotInitAssetWeight", "docs": ["the init asset weight of the spot token"], "type": "u8"}, - {"name": "spotMaintAssetWeight", "docs": ["the maint asset weight of the spot token"], "type": "u8"}, - {"name": "spotInitLiabWeight", "docs": ["the init liab weight of the spot token"], "type": "u8"}, - {"name": "spotMaintLiabWeight", "docs": ["the maint liab weight of the spot token"], "type": "u8"}, - {"name": "futuresInitAssetWeight", "docs": ["the init asset weight of the futures position"], "type": "u8"}, - {"name": "futuresMaintAssetWeight", "docs": ["the maint asset weight of the futures position"], "type": "u8"}, - {"name": "futuresInitLiabWeight", "docs": ["the init liab weight of the futures position"], "type": "u8"}, - {"name": "futuresMaintLiabWeight", "docs": ["the maint liab weight of the futures position"], "type": "u8"}, - {"name": "perpInitAssetWeight", "docs": ["the init asset weight of the perp position"], "type": "u8"}, - {"name": "perpMaintAssetWeight", "docs": ["the maint asset weight of the perp position"], "type": "u8"}, - {"name": "perpInitLiabWeight", "docs": ["the init liab weight of the perp position"], "type": "u8"}, - {"name": "perpMaintLiabWeight", "docs": ["the maint liab weight of the perp position"], "type": "u8"}, - {"name": "decimals", "docs": ["the decimals of the spl token traded on the spot market and available for deposit"], "type": "u8"}, - {"name": "futuresDecimals", "docs": ["the decimals of derivative asset for futures markets"], "type": "u8"}, - {"name": "perpDecimals", "docs": ["the decimals of derivative asset for perpetual markets"], "type": "u8"}, - {"name": "padding2", "type": {"array": ["u8", 1]}} - ] - } - }, - {"name": "ClearingType", "type": {"kind": "enum", "variants": [{"name": "Public"}, {"name": "Private"}]}}, - { - "name": "FeeTier", - "type": { - "kind": "struct", - "fields": [ - {"name": "balance", "docs": ["the balance necessary"], "type": "u64"}, - { - "name": "makerBps", - "docs": ["the maker fee in bps", "i.e, this value should be zero whenever the maker rebate is supposed to be positive"], - "type": "u8" - }, - {"name": "takerBps", "docs": ["the taker fee in bps"], "type": "u8"}, - { - "name": "rebateBps", - "docs": ["the maker rebate in bps", "i.e this value should only be positive whenever the maker rate itself is zero"], - "type": "u8" - }, - {"name": "tier", "docs": ["the tier identifier, should start at 1"], "type": "u8"}, - {"name": "padding1", "type": {"array": ["u8", 4]}} - ] - } - }, - { - "name": "ClearingConfig", - "type": { - "kind": "struct", - "fields": [ - {"name": "maintMargin", "docs": ["the maintenance margin"], "type": "u8"}, - {"name": "initMargin", "docs": ["the initialization margin"], "type": "u8"}, - {"name": "targetMargin", "docs": ["the target margin used by liquidators"], "type": "u8"}, - {"name": "liqLiqorFee", "docs": ["the liquidation fee bonus for the liquidator"], "type": "u8"}, - {"name": "liqInsuranceFee", "docs": ["the liquidation fee for the insurance fund"], "type": "u8"}, - {"name": "padding1", "type": {"array": ["u8", 3]}} - ] - } - }, - {"name": "WhitelistStatus", "type": {"kind": "enum", "variants": [{"name": "Pending"}, {"name": "Active"}, {"name": "Revoked"}]}}, - { - "name": "AgnosticMarket", - "type": { - "kind": "struct", - "fields": [ - {"name": "config", "docs": ["the config of the market"], "type": {"defined": "MarketConfig"}}, - {"name": "marketName", "docs": ["the name of the market, which is also used as a seed"], "type": {"array": ["u8", 32]}}, - {"name": "orderbook", "docs": ["the order book for this market"], "type": "publicKey"}, - {"name": "bids", "docs": ["the bids account for this market"], "type": "publicKey"}, - {"name": "asks", "docs": ["the asks account for this market"], "type": "publicKey"}, - {"name": "eventQueue", "docs": ["the asks account for this market"], "type": "publicKey"}, - {"name": "authority", "docs": ["the authority of the market"], "type": "publicKey"}, - {"name": "priceHistory", "docs": ["the price history account for on-chain twap"], "type": "publicKey"}, - {"name": "oracleProducts", "docs": ["the oracle products account"], "type": "publicKey"}, - {"name": "padding1", "type": {"array": ["u64", 8]}}, - {"name": "cache", "docs": ["the cache account"], "type": "publicKey"}, - {"name": "quotePool", "docs": ["the quote pool"], "type": "publicKey"}, - {"name": "padding2", "type": {"array": ["u64", 8]}}, - {"name": "padding3", "type": {"array": ["u64", 2]}}, - {"name": "baseVolume", "docs": ["the market's total historical volume in base token"], "type": "u64"}, - {"name": "quoteVolume", "docs": ["the market's total historical volume in quote token"], "type": "u64"}, - {"name": "liquidityMiningInfo", "docs": ["the current liquidity mining parameters"], "type": {"defined": "LiquidityMiningInfo"}}, - {"name": "minBaseOrderSize", "docs": ["the market's minimum allowed order size in base token amount"], "type": "u64"}, - {"name": "tickSize", "docs": ["the tick size of the market"], "type": "u64"}, - {"name": "baseMultiplier", "docs": ["the base currency multiplier"], "type": "u64"}, - {"name": "quoteMultiplier", "docs": ["the quote currency multiplier"], "type": "u64"}, - {"name": "protocolFees", "docs": ["the currently accumulated trading fees"], "type": "u64"}, - {"name": "insuranceFund", "docs": ["the curently accumulated insurance fund for this market"], "type": "u64"}, - {"name": "maxBaseOrderSize", "docs": ["the maximum order base size for non-postOnly orders"], "type": "u64"}, - {"name": "maxQuoteOrderSize", "docs": ["the maximum order quote size for non-postOnly orders"], "type": "u64"}, - {"name": "padding4", "type": {"array": ["u64", 8]}} - ] - } - }, - { - "name": "MarketConfig", - "type": { - "kind": "struct", - "fields": [ - {"name": "signerSeeds", "docs": ["the signer seeds for this account"], "type": {"array": ["u8", 1]}}, - {"name": "marketType", "docs": ["the type of this market"], "type": {"defined": "MarketType"}}, - { - "name": "settlementType", - "docs": ["the type of delivery for this market in case it is a futures market"], - "type": {"defined": "SettlementType"} - }, - { - "name": "isActive", - "docs": [ - "whether the market is active", - "i.e, in the case of a market being for physical delivery of the underlying asset", - "the market cannot become active until the vault of the underlying asset being delivered has", - "a balance equivalent to the token supply of the derivative asset" - ], - "type": "bool" - }, - {"name": "cacheIndex", "docs": ["the cache index for this market"], "type": "u16"}, - {"name": "initAssetWeight", "docs": ["the init asset weight of the pool's positions for margin calculations"], "type": "u8"}, - {"name": "initLiabWeight", "docs": ["the init liability weight of the pool's positions for margin calculations"], "type": "u8"}, - {"name": "maintAssetWeight", "docs": ["the maint asset weight of the pool's positions for margin calculations"], "type": "u8"}, - {"name": "maintLiabWeight", "docs": ["the maint liability weight of the pool's positions for margin calculations"], "type": "u8"}, - {"name": "decimals", "docs": ["the decimals used for the target oracle price of this pool's asset"], "type": "u8"}, - {"name": "operatingStatus", "docs": ["the operating status of the market"], "type": {"defined": "OperatingStatus"}}, - {"name": "padding", "type": {"array": ["u8", 4]}} - ] - } - }, - { - "name": "MarketType", - "docs": ["market types"], - "type": { - "kind": "enum", - "variants": [{"name": "Default"}, {"name": "PairFuture"}, {"name": "PerpetualFuture"}, {"name": "PreIDO"}, {"name": "IndexFuture"}] - } - }, - { - "name": "SettlementType", - "docs": ["settlement types for futures markets"], - "type": {"kind": "enum", "variants": [{"name": "CashSettled"}, {"name": "PhysicalDelivery"}]} - }, - { - "name": "OperatingStatus", - "type": {"kind": "enum", "variants": [{"name": "Active"}, {"name": "ReduceOnly"}, {"name": "CancelOnly"}, {"name": "Halted"}]} - }, - { - "name": "LiquidityMiningInfo", - "type": { - "kind": "struct", - "fields": [ - {"name": "tokenMint", "docs": ["the token mint of the token being used for rewards"], "type": "publicKey"}, - {"name": "rate", "docs": ["the rate that is used to convert liquidity points to the LM reward token"], "type": "i128"}, - {"name": "maxDepthBps", "docs": ["max depth on the book in bps"], "type": "i128"}, - {"name": "periodStart", "docs": ["timestamp of the start of the liquidity mining incentive period"], "type": "u64"}, - {"name": "targetPeriodLength", "docs": ["target time length for a liquidity mining period"], "type": "u64"}, - {"name": "tokensLeft", "docs": ["tokens left for this period."], "type": "u64"}, - {"name": "tokensPerPeriod", "docs": ["total amount of tokens allocated for a given period"], "type": "u64"}, - {"name": "minRateAdj", "docs": ["the minimum rate adjustment"], "type": "u64"}, - {"name": "maxRateAdj", "docs": ["the maximum rate adjusment"], "type": "u64"}, - {"name": "sizeCutoff", "docs": ["the size cut off for rewards"], "type": "u64"}, - {"name": "tokenDecimals", "docs": ["the decimals of the token being rewarded"], "type": "u8"}, - {"name": "padding1", "type": {"array": ["u8", 7]}} - ] - } - }, - {"name": "ProductsType", "type": {"kind": "enum", "variants": [{"name": "Stub"}, {"name": "Pyth"}, {"name": "Switchboard"}]}}, - { - "name": "OpenOrder", - "type": { - "kind": "struct", - "fields": [ - {"name": "side", "docs": ["the side of the order"], "type": {"defined": "Side"}}, - {"name": "subAccountIdx", "docs": ["the sub account idx"], "type": "u8"}, - {"name": "orderType", "docs": ["the type of the order"], "type": {"defined": "DerivativeOrderType"}}, - {"name": "padding", "type": {"array": ["u8", 5]}}, - {"name": "timestamp", "docs": ["the timestamp that the order was posted"], "type": "u64"}, - {"name": "clientOrderId", "docs": ["the client's order id"], "type": "u64"}, - {"name": "orderId", "docs": ["the order id after being posted on the book"], "type": "u128"} - ] - } - }, - {"name": "Side", "type": {"kind": "enum", "variants": [{"name": "Bid"}, {"name": "Ask"}]}}, - { - "name": "DerivativeOrderType", - "type": {"kind": "enum", "variants": [{"name": "Limit"}, {"name": "ImmediateOrCancel"}, {"name": "FillOrKill"}, {"name": "PostOnly"}]} - }, - { - "name": "PoolConfig", - "type": { - "kind": "struct", - "fields": [ - {"name": "optimalUtil", "docs": ["optimal utilization ratio for this token"], "type": "u16"}, - {"name": "optimalApr", "docs": ["optimal apr for this token"], "type": "u16"}, - {"name": "maxApr", "docs": ["maximum apr for this token"], "type": "u16"}, - {"name": "cacheIndex", "docs": ["the index of this pool in the cache"], "type": "u16"}, - {"name": "decimals", "docs": ["the decimals of the spl token mint associated with the pool"], "type": "u8"}, - {"name": "initAssetWeight", "docs": ["the init asset weight of the pool's positions for margin calculations"], "type": "u8"}, - {"name": "initLiabWeight", "docs": ["the init liability weight of the pool's positions for margin calculations"], "type": "u8"}, - {"name": "maintAssetWeight", "docs": ["the maint asset weight of the pool's positions for margin calculations"], "type": "u8"}, - {"name": "maintLiabWeight", "docs": ["the maint liability weight of the pool's positions for margin calculations"], "type": "u8"}, - {"name": "padding2", "type": {"array": ["u8", 3]}}, - {"name": "padding3", "type": {"array": ["u64", 2]}} - ] - } - }, - { - "name": "NodeInfo", - "type": { - "kind": "struct", - "fields": [ - {"name": "poolNode", "docs": ["the node's pubkey"], "type": "publicKey"}, - {"name": "nodeVault", "docs": ["the node's vault pubkey"], "type": "publicKey"}, - {"name": "deposits", "docs": ["the deposits in the node"], "type": "i128"}, - {"name": "borrows", "docs": ["the borrows in the node"], "type": "i128"}, - {"name": "padding", "type": {"array": ["u64", 4]}} - ] - } - }, - {"name": "PriceWithTs", "type": {"kind": "struct", "fields": [{"name": "price", "type": "i128"}, {"name": "timestamp", "type": "u64"}]}}, - { - "name": "PriceHistoryConfig", - "type": { - "kind": "struct", - "fields": [ - {"name": "longerTimeHorizon", "type": "u64"}, - {"name": "shorterTimeHorizon", "type": "u64"}, - {"name": "priceCollectionTick", "type": "u64"} - ] - } - }, - {"name": "AccountType", "type": {"kind": "enum", "variants": [{"name": "Regular"}, {"name": "Whitelisted"}]}}, - { - "name": "SubAccountCache", - "type": { - "kind": "struct", - "fields": [ - {"name": "assetsValue", "docs": ["the value of the assets of this account"], "type": "i128"}, - {"name": "liabilitiesValue", "docs": ["the value of the liabilities of this account"], "type": "i128"}, - {"name": "cRatio", "docs": ["the margin c-ratio of this sub account"], "type": "i128"}, - {"name": "updatedAt", "docs": ["slot of the last cache update"], "type": "u64"}, - {"name": "margining", "docs": ["the sub account margining"], "type": {"defined": "SubAccountMargining"}}, - {"name": "padding", "type": {"array": ["u8", 7]}}, - {"name": "subAccount", "docs": ["the sub account"], "type": "publicKey"}, - {"name": "padding2", "type": {"array": ["u64", 4]}} - ] - } - }, - {"name": "SubAccountMargining", "type": {"kind": "enum", "variants": [{"name": "Cross"}, {"name": "Isolated"}]}}, - { - "name": "PositionSlot", - "type": { - "kind": "struct", - "fields": [ - {"name": "spot", "docs": ["the spot position"], "type": {"defined": "SpotPosition"}}, - {"name": "derivative", "docs": ["the derivative position"], "type": {"defined": "DerivativePosition"}} - ] - } - }, - { - "name": "SpotPosition", - "type": { - "kind": "struct", - "fields": [ - {"name": "tokenMint", "docs": ["the token mint that this position pertains to"], "type": "publicKey"}, - { - "name": "position", - "docs": [ - "the position denominated in the base token", - "if this value is negative then the outstanding position is a short, otherwise it's a long" - ], - "type": "i128" - }, - {"name": "openOrdersCache", "docs": ["the open orders cache"], "type": {"defined": "OpenOrdersCache"}}, - {"name": "cacheIndex", "docs": ["the index of this position in the cache"], "type": "u16"}, - {"name": "padding", "type": {"array": ["u8", 6]}} - ] - } - }, - { - "name": "OpenOrdersCache", - "type": { - "kind": "struct", - "fields": [ - { - "name": "coinTotal", - "docs": ["total amount of native base tokens in the open orders account, includes locked and free tokens"], - "type": "u64" - }, - {"name": "coinFree", "docs": ["amount of free native base tokens in the open orders account"], "type": "u64"}, - { - "name": "pcTotal", - "docs": ["total amount of native quote tokens in the open orders account, includes locked and free tokens"], - "type": "u64" - }, - {"name": "pcFree", "docs": ["amount of free native quote tokens in the open orders account"], "type": "u64"}, - {"name": "referrerRebatesAccrued", "docs": ["the amount of referrer rebates accrued, in native quote token"], "type": "u64"} - ] - } - }, - { - "name": "DerivativePosition", - "type": { - "kind": "struct", - "fields": [ - {"name": "market", "docs": ["the public key of the market that this position pertains to"], "type": "publicKey"}, - { - "name": "basePosition", - "docs": [ - "the position denominated in the base token", - "if this value is negative then the outstanding position is a short, otherwise it's a long" - ], - "type": "i128" - }, - {"name": "openOrdersCache", "docs": ["the open orders cache"], "type": {"defined": "OpenOrdersCache"}}, - {"name": "longFundingSettled", "docs": ["the long funding that has been settled for this position"], "type": "i128"}, - {"name": "shortFundingSettled", "docs": ["the short funding that has been settled for this position"], "type": "i128"}, - {"name": "cacheIndex", "docs": ["the index of this position in the cache"], "type": "u16"}, - { - "name": "marketType", - "docs": ["the type of market of this position", "", "this is necessary in order to fetch the appropriate weights"], - "type": {"defined": "MarketType"} - }, - {"name": "padding", "type": {"array": ["u8", 5]}} - ] - } - } - ], - "events": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/cypher-trade/index.js b/projects/cypher-trade/index.js deleted file mode 100644 index dcefadbf89c..00000000000 --- a/projects/cypher-trade/index.js +++ /dev/null @@ -1,6 +0,0 @@ - -module.exports = { - deadFrom: '2023-08-07', - timetravel: false, - solana: { tvl: () => ({}), }, -} diff --git a/projects/cytonic/index.js b/projects/cytonic/index.js deleted file mode 100644 index 155f875460e..00000000000 --- a/projects/cytonic/index.js +++ /dev/null @@ -1,172 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { getProvider, sumTokens2, } = require("../helper/solana"); -const { Program } = require("@project-serum/anchor"); -const idl = { - "version": "0.1.0", - "name": "depositor", - "instructions": [], - "accounts": [ - { - "name": "VaultData", - "docs": [ - "Vault is a instance that holds general deposit data for a particular token", - "It is also responsible for freezing and migrating funds", - "When program receives funds, they are send on vault data's account's ATA" - ], - "type": { - "kind": "struct", - "fields": [ - { "name": "owner", "type": "publicKey" }, - { "name": "mint", "type": "publicKey" }, - { "name": "vaultAta", "type": "publicKey" }, - { "name": "withdrawDuration", "type": "u64" }, - { "name": "isFrozen", "type": "bool" }, - { "name": "totalDeposited", "type": "u64" }, - { "name": "bump", "type": "u8" }, - { "name": "allowedForPurchase", "type": "bool" }, - { "name": "purchaseRecepientAta", "type": "publicKey" }, - { "name": "admin", "type": "publicKey" } - ] - } - } - ], - "types": [], - "events": [], - "errors": [] -} - -const BRIDGE_DEPOSITOR_EVM = '0xaEA5Bf79F1E3F2069a99A99928927988EC642e0B'; -const BRIDGE_DEPOSITOR_SOL = 'HYDqq5GfUj4aBuPpSCs4fkmeS7jZHRhrrQ3q72KsJdD4'; - -async function sol_tvl() { - const provider = getProvider() - const program = new Program(idl, BRIDGE_DEPOSITOR_SOL, provider) - const tokenAccounts = (await program.account.vaultData.all()).map((a) => a.account.vaultAta); - return sumTokens2({ tokenAccounts }) -} - - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // ETH - ADDRESSES.ethereum.WBTC, // WBTC - ADDRESSES.ethereum.WETH, // WETH - ADDRESSES.ethereum.WSOL, // WSOL - ADDRESSES.ethereum.WSTETH, // Lido WSTETH - ADDRESSES.ethereum.EETH, // EETH - '0xd9a442856c234a39a81a089c06451ebaa4306a72', // pufETH - '0xf951e335afb289353dc249e82926178eac7ded78', // swETH - ADDRESSES.ethereum.USDT, // USDT - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.linea.rzETH, // ezETH - ADDRESSES.ethereum.USDe, // Ethena USD - ], - }), - }, - bsc: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // BNB - ADDRESSES.bsc.USDC, // USDC - ADDRESSES.bsc.USDT, // USDT - '0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3', // DAI - ], - }), - }, - arbitrum: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // ETH - ADDRESSES.arbitrum.USDC_CIRCLE, // USDC - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.arbitrum.DAI, // DAI - ADDRESSES.optimism.ezETH, // ezETH - ], - }), - }, - base: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // ETH - ADDRESSES.base.USDC, // USDC - ], - }), - }, - polygon: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // POL - ADDRESSES.polygon.USDC, // USDC - ADDRESSES.polygon.USDT, // USDT - ADDRESSES.polygon.DAI, // DAI - ], - }), - }, - avax: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // AVA - ADDRESSES.avax.USDC, // USDC - ADDRESSES.avax.USDt, // USDT - ADDRESSES.avax.DAI, // DAI - ], - }), - }, - optimism: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // ETH - ADDRESSES.optimism.USDC_CIRCLE, // USDC - ADDRESSES.optimism.USDT, // USDT - ADDRESSES.optimism.DAI, // DAI - ], - }), - }, - blast: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // ETH - ADDRESSES.blast.USDB, // USDB - ], - }), - }, - manta: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // ETH - ADDRESSES.manta.WETH, // WETH - ADDRESSES.manta.USDC, // USDC - ADDRESSES.manta.USDT, // USDT - "0x1468177dbcb2a772f3d182d2f1358d442b553089", // Manta mBTC - "0xaccbc418a994a27a75644d8d591afc22faba594e", // Manta mETH - "0x649d4524897ce85a864dc2a2d5a11adb3044f44a", // Manta mUSD - ], - }) - }, - bsquared: { - tvl: sumTokensExport({ - owner: BRIDGE_DEPOSITOR_EVM, - tokens: [ - ADDRESSES.null, // BTC - ADDRESSES.bsquared.WBTC, // WBTC - ADDRESSES.bsquared.USDT, // USDT - ], - }) - }, - solana: { - tvl: sol_tvl - } -} \ No newline at end of file diff --git a/projects/cytoswap/index.js b/projects/cytoswap/index.js deleted file mode 100644 index fd11aef5036..00000000000 --- a/projects/cytoswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3GraphExport } = require('../helper/uniswapV3') - -module.exports = { - hela: { - tvl: uniV3GraphExport({ graphURL: 'https://subgraph.snapresearch.xyz/subgraphs/name/cytoswap-mainnet', name: 'cytoswap-hela' }), - } -} \ No newline at end of file diff --git a/projects/czodiac/abi-chef-czb.json b/projects/czodiac/abi-chef-czb.json deleted file mode 100644 index 6e82ec9f0a0..00000000000 --- a/projects/czodiac/abi-chef-czb.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCzbPerShare)", - "poolLength": "uint256:poolLength" -} diff --git a/projects/czodiac/abi-chef-czf.json b/projects/czodiac/abi-chef-czf.json deleted file mode 100644 index abb0641c509..00000000000 --- a/projects/czodiac/abi-chef-czf.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCzfPerShare)", - "poolLength": "uint256:poolLength" -} diff --git a/projects/czodiac/index.js b/projects/czodiac/index.js deleted file mode 100644 index e2ae2466529..00000000000 --- a/projects/czodiac/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { masterChefExports, } = require("../helper/masterchef"); -const { mergeExports, } = require("../helper/utils"); -const { staking, } = require("../helper/staking") -const abiChefCzb = require("./abi-chef-czb.json"); -const abiChefCzf = require("./abi-chef-czf.json"); - - -const czr = "0x5cd0c2C744caF04cda258Efc6558A3Ed3defE97b"; - -const czf = "0x7c1608C004F20c3520f70b924E2BfeF092dA0043"; -const chefCzf = "0xba968e7Ac9879eE5b0248e0CdBF0e4e82771C62D"; -const czb = "0xD963b2236D227a0302E19F2f9595F424950dc186"; -const chefCzb = "0xDe06B35D763b6d73128B1185b778402B667fe071"; - -const czrPoolWrappers = [ - "0xd06217a2d18c2b26fae3e649cd2de133f573ab43", - "0x003cccc78ebe57c6dcd57e4c49b24d7dec074893", - "0x989d7c902c1c33af1a6018b6f2713c49c5052677", - "0xf24ee6519c14d60e8b97ef802f5fac53d323e7fc", - "0x770Ca266f6eFf94880e60D4276fE708FF498a61F", - "0xBeFE5F7c282c9Cb5A333892E2e600b28d80699c7", - "0x39e18C777A3FfC6B2Bc9B0485486E54DFBFEF165", - "0x2cfc10F03570C05713bEF29006ec018Cd4de8E51" -] - -module.exports = mergeExports([ - masterChefExports(chefCzf, "bsc", czf, false, abiChefCzf.poolInfo), - masterChefExports(chefCzb, "bsc", czb, true, abiChefCzb.poolInfo), - { - bsc: { - staking: staking( - czrPoolWrappers, - czr, - 'bsc') - } - } -]); \ No newline at end of file diff --git a/projects/d2finance/index.js b/projects/d2finance/index.js deleted file mode 100644 index 2c8df256522..00000000000 --- a/projects/d2finance/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const { sumERC4626VaultsExport } = require("../helper/erc4626"); - -const config = { - ethereum: ['0x07Dff4087b43c4A759f4Fc69511c26d51929dAF4'], - base: ['0x6c05A7d2c24B48fC3C615D294fEc2eB068548897'], - arbitrum: [ - "0x27D22Eb71f00495Eccc89Bb02c2B68E6988C6A42", - "0x183424d5ae5ec9fd486634bc566d0f75ad9c9109", - "0x5b49d7fae00de64779ddcd6b067c8eb046bd9a0b", - "0x291344FBaaC4fE14632061E4c336Fe3B94c52320", - "0x0F76De33a3679a6065D14780618b54584a3907D4", - "0xD1D64dAeED7504Ef3Eb056aa2D973bD064843A84", - "0xB0730AA7d6e880F901B5d71A971096dB56895a0f", - "0x5f44A7DD0a016A5Ec9682df36899A781442CAa43", - "0x0215EdEecdABE3DfC5EC8D59337eC9b26d359088", - "0x36b1939ADf539a4AC94b57DBAd32FaEcd5bcF4d0", - "0x34F0FdD80A51dfd8bA42343c20F89217280d760E", - "0x57f467C9c4639B066F5A4D676Cd8Ed7D87C1791b", - "0x7348925D3C63e4E61e9F5308eEec0f06EaA3bB7b", - "0xCFBBea43Fd99126E4c0eF53e2344609D513f72b3", - "0x195a9e0f29f96d4ab2139ee1272380a4aa352890", - '0x75288264FDFEA8ce68e6D852696aB1cE2f3E5004', - '0xaB2743a3A2e06d457368E901F5f927F271fa1374', - '0x91aCd32dA9beA6DA3751dc12Ee0fBe47169349C1', - '0xc027EC28F76d92D4124fCbffCF6b25137a84968C', - '0xaC75f0c46723432a2303f2a7c7769535A179Ed56', - '0x907A9f69061736AD82811CccD6ADD9dC4A2352A9', - '0x1176c3760Af6a1dbAa5BBd0Cc6cdA8A2Ed6B785E', - '0x0178b56FeA3d7B5B9F9e0cDAd486522de948730F' - ], - berachain: [ - '0xbE75c8A7E58C7901D2e128dc8d3b6DE2481F1F79', - '0x2b8d0420996a2753ef21c25c94eae9fc0c0aed1e', - '0x36b933554782b108bb9962ac00c498acbceb706d', - '0xAcE42F7E3F4672607897bf1951468031f0214359', - '0xf650ba4303ce164e1f6b215d4cbb5e212d307056', - '0xcd18006cc69c6d5fa4fd4eaf99910b58464fa3ae', - '0xBf075980792f8cc89DFb74b553acf6750a7E941b', - '0xC4fEE8c68293a63241b64e5A2EF07fcf89005dD3', - ], - hyperliquid: [ - '0xf44f49E6577B3934f981C6f0629d15154d2606E6', - '0x7410E69958a8ECE2A51C231C8528513d4d668C7a', - '0xade27c7dec9211973278876f3819aedc28cd50ca', - '0x6bf9345b5d6b27b5cbf2e463dc5e0b2afcedc21c', - '0x3ebb11ba6a5b61c04d1a703ea10728d519945440', - '0x195eb4d088f222c982282b5dd495e76dba4bc7d1', - '0x8ef30c5ce9a460bfae82f1f039f7c5e5427d7018', - ] -} - -const stakings = { - arbitrum: [ - "0x1c17a39B156189BF40905425170a3Ff62fb650DA", - // '0x999a57ae7694298126a5db2E44F778CA486b14FC', - ] -} - -Object.keys(config).forEach(chain => { - const vaults = config[chain] - module.exports[chain] = { - tvl: sumERC4626VaultsExport({ vaults, isOG4626: true, }) - } - - if (stakings[chain]) - module.exports[chain].staking = sumERC4626VaultsExport({ vaults: stakings[chain], isOG4626: true, }) -}) \ No newline at end of file diff --git a/projects/d8x/abi-poolInfo.json b/projects/d8x/abi-poolInfo.json deleted file mode 100644 index e9ecd25ffb7..00000000000 --- a/projects/d8x/abi-poolInfo.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getPoolStaticInfo": "function getPoolStaticInfo(uint8 _poolFromIdx, uint8 _poolToIdx) external view returns (uint24[][] memory, address[] memory, address[] memory, address _oracleFactoryAddress)", - "getSupportedTokens": "function getSupportedTokens() view returns (address[] memory)" -} diff --git a/projects/d8x/index.js b/projects/d8x/index.js deleted file mode 100644 index 759bc72a3e5..00000000000 --- a/projects/d8x/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const abi = require("./abi-poolInfo.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - polygon_zkevm: { factory: "0x900DfC161C34656a9D9c43307F92255C2aa06162" }, - xlayer: { factory: "0xb24dB543749277E8625a59C061aE7574C8235475" }, - arbitrum: { factory: "0x8f8BccE4c180B699F81499005281fA89440D1e95" }, - base : {factory: "0x7F3A4A9e5BB469F0F4977AA390760aF9EFCCd406"}, - berachain: { - factory: "0xb6329c7168b255Eca8e5c627b0CCe7A5289C8b7F", - compositeToken: "0xA8655EF2354d679E2553C10b2d59a61C4345aF51" - }, -}; - -async function tvl(api) { - const { factory, compositeToken } = config[api.chain]; - const exchangeInfo = await api.call({ - abi: abi.getPoolStaticInfo, - target: factory, - params: [1, 255], - }); - - const marginTokens = exchangeInfo[2].filter((tokenAddr) => (tokenAddr !== compositeToken)); - - if (!compositeToken) { - return sumTokens2({ api, owner: factory, tokens: marginTokens }); - } else { - // pool uses pool-specific composite token - const supportedTokens = await api.call({ - abi: abi.getSupportedTokens, - target: compositeToken, - }) - return sumTokens2({api, owners: [factory, compositeToken], tokens: [...marginTokens, ...supportedTokens]}); - - } -} - -module.exports = { - methodology: - "adds up the balances of all liquidity pools in the D8X exchange", -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/dEURO/index.js b/projects/dEURO/index.js deleted file mode 100644 index d525a59aa4e..00000000000 --- a/projects/dEURO/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getLogs2 } = require('../helper/cache/getLogs') - -const MAINNET = { - WFPS: "0x5052D3Cc819f53116641e89b96Ff4cD1EE80B182", - FPS: "0x1bA26788dfDe592fec8bcB0Eaff472a42BE341B2", - ZCHF: "0xB58E61C3098d85632Df34EecfB899A1Ed80921cB", - DEPS: "0x103747924E74708139a9400e4Ab4BEA79FFFA380", - nDEPS: "0xc71104001A3CCDA1BEf1177d765831Bd1bfE8eE6", -}; - -async function tvl(api) { - const logs = await getLogs2({ - api, - target: '0x8B3c41c649B9c7085C171CbB82337889b3604618', - fromBlock: 22088283, - eventAbi: 'event PositionOpened (address indexed owner, address indexed position, address original, address collateral)', - onlyArgs: true, - }); - - const tokensAndOwners = logs.map(log => [log.collateral.toLowerCase(), log.position]); - - await sumTokens2({ api, tokensAndOwners }); - - // FPS has no CoinGecko price - const price = await api.call({ abi: 'uint256:price', target: MAINNET.FPS }) - const wFPSbalance = api.getBalances()['ethereum:' + MAINNET.WFPS.toLowerCase()] || 0; - api.removeTokenBalance(MAINNET.WFPS.toLowerCase()); - api.add(MAINNET.ZCHF, wFPSbalance * price / 1e18); - - // DEPS has no CoinGecko price - const depsBalance = api.getBalances()['ethereum:' + MAINNET.DEPS.toLowerCase()] || 0; - api.removeTokenBalance(MAINNET.DEPS.toLowerCase()); - api.add(MAINNET.nDEPS, depsBalance); -} - -module.exports = { - methodology: "TVL consists of collateral tokens in the positions and source stablecoins in the bridge contracts", - ethereum: { tvl }, - start: '2025-03-20' -}; \ No newline at end of file diff --git a/projects/dSOL/index.js b/projects/dSOL/index.js deleted file mode 100644 index 70f6e31dce8..00000000000 --- a/projects/dSOL/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - // dSOL sanctum stake pool : https://solscan.io/account/9mhGNSPArRMHpLDMSmxAvuoizBqtBGqYdT8WGuqgxNdn - await getSolBalanceFromStakePool('9mhGNSPArRMHpLDMSmxAvuoizBqtBGqYdT8WGuqgxNdn', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js deleted file mode 100644 index e3680afbc9e..00000000000 --- a/projects/dackieswap-v2/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { stakings } = require("../helper/staking"); - -const DACKIE = "0x73326b4d0225c429bed050c11C4422d91470AaF4"; - -const stakingPools = [ - // Lock & flexible pool - "0xF6C5b5Df9Bcee40cd474CCd6373f99b56dBCF5E5", -]; -const config = { - xlayer: '0x757cd583004400ee67e5cc3c7a60c6a62e3f6d30', - optimism: '0xaedc38bd52b0380b2af4980948925734fd54fbf4', - arbitrum: '0x507940c2469e6e3b33032f1d4ff8d123bdde2f5c', - blast: '0xf5190e64db4cbf7ee5e72b55cc5b2297e20264c2', - inevm: '0x507940c2469e6e3b33032f1d4ff8d123bdde2f5c', - mode: '0x757cd583004400ee67e5cc3c7a60c6a62e3f6d30', - base: '0x591f122D1df761E616c13d265006fcbf4c6d6551', - linea: '0x9790713770039CeFcf4FAaf076E2846c9B7a4630', - wc: '0x757cD583004400ee67e5cC3c7A60C6a62E3F6d30', - ethereum: '0x3D237AC6D2f425D2E890Cc99198818cc1FA48870', - unichain: '0x507940c2469e6E3B33032F1d4FF8d123BDDe2f5C', -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true }) - } -}) - -module.exports.base.staking = stakings(stakingPools, DACKIE) diff --git a/projects/dackieswap/index.js b/projects/dackieswap/index.js deleted file mode 100644 index 7da50a7eb52..00000000000 --- a/projects/dackieswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - base: { factory: "0x3D237AC6D2f425D2E890Cc99198818cc1FA48870", fromBlock: 2031627 }, - optimism: { factory: "0xc2BC7A73613B9bD5F373FE10B55C59a69F4D617B", fromBlock: 115172042 }, - arbitrum: { factory: "0xaEdc38bD52b0380b2Af4980948925734fD54FbF4", fromBlock: 180722131 }, - blast: { factory: "0xCFC8BfD74422472277fB5Bc4Ec8851d98Ecb2976", fromBlock: 8239180 }, - inevm: { factory: "0xf79A36F6f440392C63AD61252a64d5d3C43F860D", fromBlock: 291933 }, - mode: { factory: "0xc6f3966E5D08Ced98aC30f8B65BeAB5882Be54C7", fromBlock: 6102035 }, - xlayer: { factory: "0xc6f3966e5d08ced98ac30f8b65beab5882be54c7", fromBlock: 278971 }, - linea: { factory: "0xc6255ec7CDb11C890d02EBfE77825976457B2470", fromBlock: 8488016 }, - wc: { factory: "0xB9010964301326160173da694c0697a2FcE82F39", fromBlock: 4523073 }, - unichain: { factory: "0x507940c2469e6E3B33032F1d4FF8d123BDDe2f5C", fromBlock: 21155043 }, - ethereum: { factory: "0x1a4b306ba14d3fb8a49925675f8edb7ef607c422", fromBlock: 22866686 }, -}); \ No newline at end of file diff --git a/projects/dad/index.js b/projects/dad/index.js deleted file mode 100644 index 1fe6389f1b3..00000000000 --- a/projects/dad/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { unwrapDefiboxLiquidity, } = require("../defibox/utils"); -const { get_account_tvl, get_currency_balance } = require("../helper/chain/eos"); -const { default: BigNumber } = require("bignumber.js"); - -async function computeTvl(balances, newBalances = {}) { - const coingecko = { - "eos:4,DAPP@dappservices": "dapp", - 'eos:4,EOS@eosio.token': "eos", - } - for (const key of Object.keys(balances)) { - const [chain, extended_symbol] = key.split(":"); - const [symbol, contract] = extended_symbol.split("@"); - const [precision, symbol_code] = symbol.split(","); - const coingecko_id = coingecko[key]; - if (!coingecko_id) continue; // ignore tokens that are not listed on CoinGecko - sdk.util.sumSingleBalance(newBalances, coingecko_id, BigNumber(balances[key] / 10 ** precision).toFixed(0)); - } - return newBalances; -} - -module.exports = { - timetravel: false, - methodology: `DAD TVL is achieved by querying token balances & unwrapping Defibox liquidity tokens from DAD's vaults`, - eos: { - tvl: async () => { - const balances = {}; - const eosBal = {}; - const accounts = [ - "depositpool1", - "depositpool2", - "depositpool3", // contains Defibox LP tokens (BOXVP) - "depositpool4", // contains Defibox LP tokens (BOXWQ) - "depositpool5", - "depositpl111" // contains Defibox LP tokens (BOXAUO) - ] - const tokens = [ - ["eosio.token", "EOS", "eos"], - ]; - const lpTokens = [{ - balance: await get_currency_balance('lptoken.defi', 'depositpool3', 'BOXVP'), - symbol: 'BOXVP' - },{ - balance: await get_currency_balance('lptoken.defi', 'depositpool4', 'BOXWQ'), - symbol: 'BOXWQ' - },{ - balance: await get_currency_balance('lptoken.defi', 'depositpl111', 'BOXAUO'), - symbol: 'BOXAUO' - },] - await Promise.all(lpTokens.map(i => unwrapDefiboxLiquidity(eosBal, i))) - await computeTvl(eosBal, balances) - const allBal = await Promise.all(accounts.map(i => get_account_tvl(i, tokens))) - for (const bal of allBal) - Object.entries(bal).forEach(([token, val]) => sdk.util.sumSingleBalance(balances, token, BigNumber(val).toFixed(0))) - - return balances - } - }, -} \ No newline at end of file diff --git a/projects/dahlia/index.js b/projects/dahlia/index.js deleted file mode 100644 index 98ff3bf8840..00000000000 --- a/projects/dahlia/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const BigNumber = require("bignumber.js"); -const { getLogs2 } = require('../helper/cache/getLogs'); - -const config = { - berachain: { dahlia: '0x28cB92818a73A699CD2aC3B3375ac3C4E01C3a4f', fromBlock: 604319 }, -}; - -module.exports = { - methodology: "TVL = Total Lent - Total Borrow", -}; - -const getDeployedMarketIds = async (api, dahlia, fromBlock) => { - const eventAbi = "event DeployMarket(uint32 indexed id, address indexed vault, (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv, uint256 liquidationBonusRate, string name, address owner) marketConfig)" - const logs = await getLogs2({ api, eventAbi, target: dahlia, fromBlock, topics: ['0xbe9a2432e4c18ee1eb6ab3ce194836a0257e410c7cc435b4c31ac111a0b90e22'], extraKey: 'deployed' }); - console.log(logs) - return logs.map(log => log.id); -} - -const getMarketValues = async (api, marketIds, dahlia) => { - return await api.multiCall({ - abi: "function getMarket(uint32 id) view returns (tuple(uint24 lltv, uint8 status, address loanToken, address collateralToken, uint48 updatedAt, uint24 protocolFeeRate, address oracle, uint24 liquidationBonusRate, uint64 fullUtilizationRate, address irm, uint64 ratePerSec, address vault, uint48 repayPeriodEndTimestamp, uint256 totalLendAssets, uint256 totalLendShares, uint256 totalBorrowAssets, uint256 totalBorrowShares, uint256 totalLendPrincipalAssets, uint256 totalCollateralAssets))", - calls: marketIds, - target: dahlia, - }); -} - -async function getTvl(api, isBorrowed = false) { - const { dahlia, fromBlock } = config[api.chain] - const markets = [] - let hasMore = true - - let batchSize = 10 - let i = 0 - - do { - const _markets = await api.multiCall({ - abi: "function getMarket(uint32 id) view returns (tuple(uint24 lltv, uint8 status, address loanToken, address collateralToken, uint48 updatedAt, uint24 protocolFeeRate, address oracle, uint24 liquidationBonusRate, uint64 fullUtilizationRate, address irm, uint64 ratePerSec, address vault, uint48 repayPeriodEndTimestamp, uint256 totalLendAssets, uint256 totalLendShares, uint256 totalBorrowAssets, uint256 totalBorrowShares, uint256 totalLendPrincipalAssets, uint256 totalCollateralAssets))", - calls: Array.from({ length: batchSize }, (_, idx) => i + idx), - permitFailure: true, - target: dahlia, - }) - markets.push(..._markets.filter(i => i)) - i += batchSize - hasMore = _markets.filter(i => i).length === batchSize - } while (hasMore) - - - const tokensAndOwners = [] - - for (const market of markets) { - const loanToken = market.loanToken; - const totalLendAssets = BigNumber(market.totalLendAssets); - const totalBorrowAssets = BigNumber(market.totalBorrowAssets); - if (isBorrowed) { - api.add(loanToken, totalBorrowAssets); - } else { - tokensAndOwners.push([market.loanToken, market.vault]) - tokensAndOwners.push([market.collateralToken, market.vault]) - tokensAndOwners.push([market.loanToken, dahlia]) - tokensAndOwners.push([market.collateralToken, dahlia]) - // const marketTVL = totalLendAssets.minus(totalBorrowAssets).toFixed(0); - // api.add(loanToken, marketTVL); - } - } - return api.sumTokens({ tokensAndOwners }) -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => getTvl(api), - borrowed: async (api) => getTvl(api, true), - } -}); \ No newline at end of file diff --git a/projects/daiko-dex/index.js b/projects/daiko-dex/index.js deleted file mode 100644 index f3b68c67902..00000000000 --- a/projects/daiko-dex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('taiko', '0x2cFAe8F731D6a04f3E868deB03ad73576695271A'), -module.exports.hallmarks = [ - [1717777624,"Rug Pull"] - ] \ No newline at end of file diff --git a/projects/dalmatiandex/index.js b/projects/dalmatiandex/index.js deleted file mode 100644 index 9ee62afc08a..00000000000 --- a/projects/dalmatiandex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shibarium', '0x80108b858e04d5a35EF7dA7A67Cf45eeD18abf27') \ No newline at end of file diff --git a/projects/dam-finance/index.js b/projects/dam-finance/index.js deleted file mode 100644 index d8fc05afbec..00000000000 --- a/projects/dam-finance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const ethCollateralJoins = ["0xB1fbcD7415F9177F5EBD3d9700eD5F15B476a5Fe"] - -module.exports = { - methodology: 'Currently counting the USDC that DAM Finance has locked up, but will add more collateral types and multiple chains in the future', - ethereum: { - tvl: sumTokensExport({ - tokens: [ADDRESSES.ethereum.USDC], - owners: ethCollateralJoins - }) - } -}; \ No newline at end of file diff --git a/projects/damm-finance/index.js b/projects/damm-finance/index.js deleted file mode 100644 index 7814fb9b589..00000000000 --- a/projects/damm-finance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports } = require('../helper/compound') - -const bETH = "0xe970c37243F3d0B2AeB041b855Ef6466CB140BcA" -const unitroller = "0x4F96AB61520a6636331a48A11eaFBA8FB51f74e4" - -const { tvl, borrowed } = compoundExports(unitroller, bETH,); - -module.exports = { - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - ethereum: { tvl, borrowed }, - hallmarks: [ - [1664974802, "Liquidity Bonding Start"] - ], -} diff --git a/projects/damx/index.js b/projects/damx/index.js deleted file mode 100644 index f13a1e5ce22..00000000000 --- a/projects/damx/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -//Fantom -const fantomVault = "0xD093eeE7c968CEef2df96cA9949eba1a1A9b2306"; -const fantomStaking = "0xECef79f974182f4E9c168E751101F23686Bdc6dF"; -const fantomDMX = "0x0Ec581b1f76EE71FB9FEefd058E0eCf90EBAb63E"; - -module.exports = { - fantom: { - staking: staking(fantomStaking, fantomDMX), - tvl: gmxExports({ vault: fantomVault }) - } -}; diff --git a/projects/danogo/index.js b/projects/danogo/index.js deleted file mode 100644 index 3a2a4b95ed6..00000000000 --- a/projects/danogo/index.js +++ /dev/null @@ -1,150 +0,0 @@ -const { fetchURL, postURL } = require('../helper/utils'); - -const DANOGO_GATEWAY_ENDPOINT = 'https://danogo-gateway.tekoapis.com/api/v1' -const KUPO_ENDPOINT = 'https://kupo.tekoapis.com/matches' -const DECODED_PREFIX_LENGTH = 2; -const ADA_TO_LOVELACE = 1000000; - -// Bech32 character set -const ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'; -const ALPHABET_MAP = {}; -for (let z = 0; z < ALPHABET.length; z++) { - const x = ALPHABET.charAt(z); - ALPHABET_MAP[x] = z; -} - -function convert(data, inBits, outBits, pad) { - let value = 0; - let bits = 0; - const maxV = (1 << outBits) - 1; - const result = []; - - for (let i = 0; i < data.length; ++i) { - value = (value << inBits) | data[i]; - bits += inBits; - - while (bits >= outBits) { - bits -= outBits; - result.push((value >> bits) & maxV); - } - } - - if (pad) { - if (bits > 0) { - result.push((value << (outBits - bits)) & maxV); - } - } else { - if (bits >= inBits) return 'Excess padding'; - if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'; - } - - return result; -} - -const bech32AddressToHexString = (address) => { - // Don't allow mixed case - const lowered = address.toLowerCase(); - if (address !== lowered) throw new Error('Mixed-case string'); - - const split = lowered.lastIndexOf('1'); - if (split === -1) throw new Error('No separator character'); - if (split === 0) throw new Error('Missing prefix'); - - const prefix = lowered.slice(0, split); - const wordChars = lowered.slice(split + 1); - if (wordChars.length < 6) throw new Error('Data too short'); - - // Convert characters to 5-bit integers - const words = []; - for (let i = 0; i < wordChars.length - 6; ++i) { - const c = wordChars.charAt(i); - const v = ALPHABET_MAP[c]; - if (v === undefined) throw new Error('Unknown character ' + c); - words.push(v); - } - - // Convert from 5-bit to 8-bit - const decoded = convert(words, 5, 8, false); - if (!Array.isArray(decoded)) throw new Error(decoded); - - return Buffer.from(decoded).toString('hex').substring(DECODED_PREFIX_LENGTH); -}; - -const fetchSmartContractAddresses = async () => { - const smartContractResponse = await fetchURL(`${DANOGO_GATEWAY_ENDPOINT}/smartcontract-addresses`); - return smartContractResponse.data.data.addresses.map((address) => bech32AddressToHexString(address)); -} - -const fetchSmartContractUTXOs = async (address) => { - const kupoResponse = await fetchURL(`${KUPO_ENDPOINT}/${address}/*?unspent`); - return kupoResponse.data; -} - -const fetchAssetValue = async (assetsInfo) => { - const assetIds = Object.keys(assetsInfo) - let totalAssetsValue = 0; - const gatewayResponse = await postURL(`${DANOGO_GATEWAY_ENDPOINT}/cardano-asset-value`, { assetIds: assetIds}); - gatewayResponse.data.data.assetValues.forEach((asset) => { - let priceInLovelace = BigInt(0); - if (asset.adaValue && BigInt(asset.adaValue) !== BigInt(0)) { - priceInLovelace = BigInt(asset.adaValue) * BigInt(assetsInfo[asset.assetId]); - } else if ( - asset.exchangeRateNum && - asset.exchangeRateDenom && - BigInt(asset.exchangeRateDenom) !== BigInt(0) - ) { - const price = Math.floor((Number(asset.exchangeRateNum) / Number(asset.exchangeRateDenom)) * Number(assetsInfo[asset.assetId])); - priceInLovelace = BigInt(price); - } - - const assetValue = Number(priceInLovelace * BigInt(100) / BigInt(ADA_TO_LOVELACE)) / 100; - totalAssetsValue += assetValue; - }); - return totalAssetsValue; -} - -function mergeObjectsWithSum(target, ...sources) { - for (const source of sources) { - for (const key in source) { - if (source.hasOwnProperty(key)) { - if (key in target) { - target[key] += source[key]; - } else { - target[key] = source[key]; - } - } - } - } - return target; -} - -const fetch = async () => { - const smartContracts = await fetchSmartContractAddresses(); - - const smartContractsUtxos = await Promise.all(smartContracts.map((address) => { - return fetchSmartContractUTXOs(address) - })); - - let assetInfos = {}; - let totalValueLocked = 0; - smartContractsUtxos.forEach(async (smUtxos) => { - smUtxos.forEach((utxo) => { - totalValueLocked += utxo.value.coins / ADA_TO_LOVELACE; - assetInfos = mergeObjectsWithSum(assetInfos, utxo.value.assets); - }) - }); - - const totalAssetsValues = await fetchAssetValue(assetInfos); - totalValueLocked += totalAssetsValues; - - return { cardano: totalValueLocked }; -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - cardano: { - tvl: fetch - }, -} - \ No newline at end of file diff --git a/projects/danzo-arena/index.js b/projects/danzo-arena/index.js deleted file mode 100644 index 76cc62fb103..00000000000 --- a/projects/danzo-arena/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/cardano"); - -const scriptAdresses = [ - "addr1vx4caaf06swdn7cdfc7pu3sw235zvuhd02tw2np4uac9mwcp2vt4y", //Danzo Tokens locked inside the address for the DeFi game DANZO ARENA: https://danzo.gg/arena/ - "addr1q8wu9v2wn8hkzq2g7q3ez8a99thw0gwmlhgpc2crmfk982xr2rqrszevgfwunrxu8ajh7pfhmaf6ppj60nj8rnhqhl4srgnekp", //Danzo Tokens locked inside the address for the DeFi game DANZO Game: https://danzo.gg - "addr1vxherk6ug9235v0mrrmywsr2493sxsydmaylzajs7xavd9q30593r", //Sugar tokens locked inside the address for the DeFi game Sugar Factory: https://sugarcardano.io/factory -"addr1vy3jm4p3s0ufyu4y7zv9jhzzf3uj0j5r9zegkge7gpdt7zgk33jxw", //Cock tokens locked inside the address for the DeFi game Cock Arena: https://cockcardano.io/arena -"addr1vxqnqk9vfxne3p3ecktnshjjjvyzfxc9pgyf9ux76nrukpq4j73z8", -"addr1vxh2lgfhrd65zer39d5a2lyfsmke9628n4fcu92yvq4ufgcuuy7th", -"addr1v8zyytsux8kg0ues0xd40m9yvghjs6s3vr92ndujq3lxqzscq75s0" -]; - -module.exports = { - methodology: - "Calculates the total of idle tokens held in the above mentioned address", - timetravel: false, - cardano: { - tvl: ()=>({}), - staking: sumTokensExport({ scripts: scriptAdresses }), - } -}; diff --git a/projects/daoaas-swap/index.js b/projects/daoaas-swap/index.js deleted file mode 100644 index b91d01611a9..00000000000 --- a/projects/daoaas-swap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - eni: { - tvl: getUniTVL({ - methodology: "Pool liquidity on DAOaas Swap.", - useDefaultCoreAssets: true, - factory: "0x548C0E26CE90B333c07abb6d55546304D46d269d", - }), - }, -}; diff --git a/projects/daolama/borrowed.js b/projects/daolama/borrowed.js deleted file mode 100644 index dbefe9b0707..00000000000 --- a/projects/daolama/borrowed.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { call } = require('../helper/chain/ton'); -const { POOL_ADDRESS } = require('./constants'); - -async function borrowed(api) { - const result = await call({ - target: POOL_ADDRESS, - abi: 'get_pool_data', - }); - const borrowedTon = result[2]; - api.add(ADDRESSES.ton.TON, borrowedTon); -} - -module.exports = { - borrowed, -} diff --git a/projects/daolama/constants.js b/projects/daolama/constants.js deleted file mode 100644 index 57a78813b32..00000000000 --- a/projects/daolama/constants.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - POOL_ADDRESS: 'EQCkeTvOSTBwBtP06X2BX7THj_dlX67PhgYRGuKfjWtB9FVb' -} diff --git a/projects/daolama/index.js b/projects/daolama/index.js deleted file mode 100644 index 26d3f534bfe..00000000000 --- a/projects/daolama/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { tvl } = require('./tvl'); -const { borrowed } = require('./borrowed'); - -module.exports = { - methodology: 'Counts the pool size as the TVL. Borrowed coins are not counted towards the TVL.', - timetravel: false, - misrepresentedTokens: true, - ton: { - tvl, - borrowed, - } -} diff --git a/projects/daolama/tvl.js b/projects/daolama/tvl.js deleted file mode 100644 index ded130ec979..00000000000 --- a/projects/daolama/tvl.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { POOL_ADDRESS } = require('./constants'); -const { sumTokensExport } = require('../helper/chain/ton'); - -module.exports = { - tvl: sumTokensExport({ - owners: [POOL_ADDRESS], - tokens: [ADDRESSES.ton.TON, ADDRESSES.ton.USDT] - }), -} diff --git a/projects/daomaker-swap/index.js b/projects/daomaker-swap/index.js deleted file mode 100644 index f7fc1f7b870..00000000000 --- a/projects/daomaker-swap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0x940BEb635cbEeC04720AC97FADb97205676e6aa4', useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/daomaker/contracts.json b/projects/daomaker/contracts.json deleted file mode 100644 index d0457993e70..00000000000 --- a/projects/daomaker/contracts.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "chains": [ - "ethereum", - "bsc", - "polygon", - "fantom", - "step", - "celo" - ], - "stakingContractEth": "0xd07e86f68C7B9f9B215A3ca3E79E74Bf94D6A847", - "stakingTokenEth": "0x0f51bb10119727a7e5eA3538074fb341F56B09Ad" -} \ No newline at end of file diff --git a/projects/daomaker/index.js b/projects/daomaker/index.js deleted file mode 100644 index c3cac78b94b..00000000000 --- a/projects/daomaker/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { stakings } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -const contracts = require("./contracts.json"); - -const chainIds = { - "ethereum": "1", - "bsc": "56", - "polygon": "137", - "fantom": "250", - "step": "1234", - "celo": "42220" -} - -let vestingData, stakingData - -async function getVestingData() { - if (!vestingData) - vestingData = getConfig('daomaker/vesting', 'https://api.daomaker.com/get-all-vesting-contracts') - return vestingData -} - -function filterDuplicates(toa) { - const data = toa.map(i => i.map(i => i.toLowerCase()).join('-')) - return [... new Set(data)].map(i => i.split('-')) -} - -async function getStakingData() { - if (!stakingData) - stakingData = getConfig('daomaker/staking', 'https://api.daomaker.com/get-all-farms') - return stakingData -} - -function vesting(chain) { - return async (timestamp, _, { [chain]: block }) => { - const toa = [] - const vestingContracts = await getVestingData(); - vestingContracts.filter(i => i.chain_id.toString() === chainIds[chain]) - .forEach(i => toa.push([i.token_address, i.vesting_smart_contract_address])) - return sumTokens2({ chain, block, tokensAndOwners: filterDuplicates(toa) }) - }; -} -function staking(chain) { - return async (timestamp, _, { [chain]: block }) => { - const toa = [] - const contracts = await getStakingData(); - contracts.forEach(({ farms }) => { - farms.filter(i => i.chain_id.toString() === chainIds[chain]) - .forEach(i => toa.push([i.staking_address, i.farm_address])) - }) - return sumTokens2({ chain, block, tokensAndOwners: filterDuplicates(toa) }) - }; -} - -const chainTVLObject = contracts.chains.reduce( - (agg, chain) => ({ - ...agg, [chain]: { - tvl: () => ({}), - vesting: vesting(chain), - staking: staking(chain), - } - }), {} -); - -chainTVLObject.ethereum.staking = sdk.util.sumChainTvls([ - chainTVLObject.ethereum.staking, - stakings( - [contracts.stakingContractEth], - contracts.stakingTokenEth - ) -]); - -module.exports = { - ...chainTVLObject -}; diff --git a/projects/daoventures/index.js b/projects/daoventures/index.js deleted file mode 100644 index 1c3b45a2fb7..00000000000 --- a/projects/daoventures/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -const DAOvault = Object.values({ - Elon: "0x2D9a136cF87D599628BCBDfB6C4fe75Acd2A0aA8", - Cuban: "0x2AD9F8d4c24652Ea9F8A954F7E1FdB50a3bE1DFD", - Citadel: "0x8fE826cC1225B03Aa06477Ad5AF745aEd5FE7066", - // FAANG: "0x9ee54014e1E6CF10fD7E9290FdB6101fd0d5D416", - // Metaverse: "0x5b3ae8b672a753906b1592d44741f71fbd05ba8c", -}) - -async function tvl(api) { - const bals = await api.multiCall({ abi: "uint256:getAllPoolInUSD", calls: DAOvault }) - const bals2 = await api.call({ abi: "function getAllPoolInUSD(bool) view returns (uint256)", target: '0x5b3ae8b672a753906b1592d44741f71fbd05ba8c', params: true }) - api.add(ADDRESSES.ethereum.USDT, bals) - api.add(ADDRESSES.ethereum.USDT, bals2 / 1e12) - return api.getBalances() -} - -module.exports = { - deadFrom: '2025-06-01', - misrepresentedTokens: true, - ethereum: { - tvl, - staking: staking("0x1193c036833B0010fF80a3617BBC94400A284338", "0x77dce26c03a9b833fc2d7c31c22da4f42e9d9582"), - }, -} \ No newline at end of file diff --git a/projects/dapdap-uniswap/index.js b/projects/dapdap-uniswap/index.js deleted file mode 100644 index 916151d3f44..00000000000 --- a/projects/dapdap-uniswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - linea: { factory: "0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9", fromBlock: 25248, }, -}); \ No newline at end of file diff --git a/projects/darkauto/index.js b/projects/darkauto/index.js deleted file mode 100644 index e28e2ad7909..00000000000 --- a/projects/darkauto/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumUnknownTokens } = require("../helper/unknownTokens") - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, -} - - -const config = { - cronos: '0x66D586eae9B30CD730155Cb7fb361e79D372eA2a', - dogechain: '0xf5e5271432089254288F47d6F2CFcfE066377900', -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: config[chain] }) - const lps = poolInfos.map(pool => pool.want) - const strategies = poolInfos.map(pool => pool.strategy) - const bals = await api.multiCall({ abi: abi.wantLockedTotal, calls: strategies }) - api.add(lps, bals) - return sumUnknownTokens({ api, lps, resolveLP: true }) - } - } -}) - -const abi = { - "poolLength": "uint256:poolLength", - "wantLockedTotal": "uint256:wantLockedTotal", - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, address strategy, uint256 earlyWithdrawFee, uint256 earlyWithdrawTime)" -} \ No newline at end of file diff --git a/projects/darkcrypto/abi.json b/projects/darkcrypto/abi.json deleted file mode 100644 index cc025528803..00000000000 --- a/projects/darkcrypto/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "token0": "address:token0", - "token1": "address:token1", - "wantLockedTotal": "uint256:wantLockedTotal", - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, address strategy, uint256 earlyWithdrawFee, uint256 earlyWithdrawTime)" -} \ No newline at end of file diff --git a/projects/darkcrypto/farm-cronos.json b/projects/darkcrypto/farm-cronos.json deleted file mode 100644 index 4214e9f41ed..00000000000 --- a/projects/darkcrypto/farm-cronos.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "tokens": { - "DARK": "0x83b2AC8642aE46FC2823Bc959fFEB3c1742c48B5", - "SKY": "0x9D3BBb0e988D9Fb2d55d07Fe471Be2266AD9c81c", - "CRO": "0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23" - }, - "farms": [ - { - "masterChef": "0x42B652A523367e7407Fb4BF2fA1F430781e7db8C", - "reward": "SKY", - "pools": [ - { - "id": 0, - "lpToken": "0xA4AA24B8e855052071Df60E174219e6c8FEe45a3", - "token0": "DARK", - "token1": "CRO", - "rewardToken": "SKY" - }, - { - "id": 1, - "lpToken": "0xaa0845ee17e4f1d4f3a8c22cb1e8102bacf56a77", - "token0": "SKY", - "token1": "CRO", - "rewardToken": "SKY" - } - ] - } - ] -} \ No newline at end of file diff --git a/projects/darkcrypto/farm-utils.js b/projects/darkcrypto/farm-utils.js deleted file mode 100644 index c6e9c737117..00000000000 --- a/projects/darkcrypto/farm-utils.js +++ /dev/null @@ -1,38 +0,0 @@ -const abi = { - getReserves: "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)", - poolInfo: "function poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 lastRewardTime, uint256 accSkyPerShare, bool isStarted)" -} - -const pool2Balances = async (api, masterChef) => { - const calls = Array.from({ length: 9 }, (_, i) => ({ target: masterChef, params: [i] })); - const poolsInfos = await api.multiCall({ calls, abi: abi.poolInfo }) - const pools = poolsInfos.map(({ token }) => token) - - const [token0s, token1s, balances, reserves, supplies] = await Promise.all([ - api.multiCall({ calls: pools.map((p) => ({ target: p })), abi: 'address:token0', permitFailure: true }), - api.multiCall({ calls: pools.map((p) => ({ target: p })), abi: 'address:token1', permitFailure: true }), - api.multiCall({ calls: pools.map((p) => ({ target: p, params: [masterChef] })), abi: 'erc20:balanceOf', permitFailure:true }), - api.multiCall({ calls: pools.map((p) => ({ target: p })), abi: abi.getReserves, permitFailure:true }), - api.multiCall({ calls: pools.map((p) => ({ target: p })), abi: 'erc20:totalSupply', permitFailure:true }) - ]) - - pools.forEach((_, i) => { - const token0 = token0s[i] - const token1 = token1s[i] - const balance = balances[i] - const reserve = reserves[i] - const supply = supplies[i] - if (!token0 || !token1 || !balance || !reserve || !supply) return - - const _balance0 = Math.round(reserve[0] * balance / supply) - const _balance1 = Math.round(reserve[1] * balance / supply) - - api.add(token0, _balance0) - api.add(token1, _balance1) - }) -} - - -module.exports = { - pool2Balances -} \ No newline at end of file diff --git a/projects/darkcrypto/index.js b/projects/darkcrypto/index.js deleted file mode 100644 index 895db318fdb..00000000000 --- a/projects/darkcrypto/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { stakingUnknownPricedLP } = require("../helper/staking"); -const vaultUtils = require("./vault-utils") -const { pool2Balances } = require("./farm-utils"); - -const sky = "0x9D3BBb0e988D9Fb2d55d07Fe471Be2266AD9c81c"; -const boardroom = "0x2e7d17ABCb9a2a40ec482B2ac9a9F811c12Bf630"; -const masterChef = "0x42B652A523367e7407Fb4BF2fA1F430781e7db8C" - -async function vault(api){ - return vaultUtils.vaultLocked(api) -} - -module.exports = { - doublecounted: true, - cronos: { - tvl:vault, - pool2: (api) => pool2Balances(api, masterChef), - staking: stakingUnknownPricedLP( - boardroom, - sky, - "cronos", - "0xaA0845EE17e4f1D4F3A8c22cB1e8102baCf56a77" - ), - }, -}; diff --git a/projects/darkcrypto/vault-utils.js b/projects/darkcrypto/vault-utils.js deleted file mode 100644 index c3068fc3956..00000000000 --- a/projects/darkcrypto/vault-utils.js +++ /dev/null @@ -1,14 +0,0 @@ -const VAULT_ADDR = "0x66D586eae9B30CD730155Cb7fb361e79D372eA2a" -const { sumUnknownTokens } = require('../helper/unknownTokens') -const abi = require("./abi.json") - -const vaultLocked = async (api) => { - const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: VAULT_ADDR }) - let wanLockedTotals = await api.multiCall({ abi: abi.wantLockedTotal, calls: poolInfos.map(i => i.strategy), }) - const wants = poolInfos.map(i => i.want) - api.addTokens(wants, wanLockedTotals) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true,}) -}; -module.exports = { - vaultLocked, -}; diff --git a/projects/darkmatter/index.js b/projects/darkmatter/index.js deleted file mode 100644 index c63819027c5..00000000000 --- a/projects/darkmatter/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x7C36c64811219CF9B797C5D9b264d9E7cdade7a4', - nativeToken: '0x90E892FED501ae00596448aECF998C88816e5C0F', - blacklistedTokens: ['0xaae8c712e9a3487e7b89d604181f2d29c4c48735'] -}) \ No newline at end of file diff --git a/projects/darkness/index.js b/projects/darkness/index.js deleted file mode 100644 index 6d7d830dc2d..00000000000 --- a/projects/darkness/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const masterChef = "0x63Df75d039f7d7A8eE4A9276d6A9fE7990D7A6C5"; -const ness = "0xe727240728c1a5f95437b8b50afdd0ea4ae5f0c8"; -const nessroom = "0xA93248C548Ac26152F3b4F201C9101f4e032074e"; - -const { sumTokensExport } = require('../helper/unknownTokens'); - -module.exports = { - cronos: { - tvl: sumTokensExport({ - owner: '0x92631e0e84ff01853ef1bb88fc9c9f7d1e1af1ca', - tokens: [ - ADDRESSES.cronos.WCRO_1, - '0xf2001b145b43032aaf5ee2884e456ccd805f677d', - ADDRESSES.cronos.USDC, - '0x6582c738660bf0701f05b04dce3c4e5fcfcda47a', - ADDRESSES.cronos.USDT, - '0x83b2ac8642ae46fc2823bc959ffeb3c1742c48b5', - ADDRESSES.cronos.WBTC, - '0x9d3bbb0e988d9fb2d55d07fe471be2266ad9c81c', - '0x1ecaf6a3551e5822f142c9689d8f36a9b5f68217', - '0xfa202a63234a7089eddbfeee83c378ba248f0e9a', - ], - }), - pool2: sumTokensExport({ - owner: masterChef, - tokens: [ - '0xbfaab211c3ea99a2db682fbc1d9a999861dcba2d', - '0x8c183c81a5ae3e7a46ecaac17c4bf27a6a40bbe8', - '0xa4aa24b8e855052071df60e174219e6c8fee45a3', - '0xd9debaab797cb92c257b2988aafa92c728b124e6', - ], - useDefaultCoreAssets: true, - }), - staking: sumTokensExport({ - owner: nessroom, - tokens: [ness], - lps: ['0xd9debaab797cb92c257b2988aafa92c728b124e6'], - useDefaultCoreAssets: true, - }), - } -}; diff --git a/projects/darkswap/index.js b/projects/darkswap/index.js deleted file mode 100644 index e71e3e25497..00000000000 --- a/projects/darkswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -const chain = 'dogechain' - - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ - chain, useDefaultCoreAssets: true, - factory: '0x643038270f316552A4FBfd5c100489982d076f86', - }) - } -} diff --git a/projects/darumadao/index.js b/projects/darumadao/index.js deleted file mode 100644 index b9f0e979377..00000000000 --- a/projects/darumadao/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') - -const STAKING_ADDRESS = '0x31A7D9c604C87F7aA490A350Ef8DF170dC2233AA' -const DRM_ADDRESS = '0x81E60A955DC8c4d25535C358fcFE979351d102B5' -const DRM_USDC_LP_ADDRESS = '0x268aaeed47d031751db1cbba50930fe2991f0ed0' - -module.exports = { - misrepresentedTokens: true, - methodology: `Finds TVL by querying DRM contract for sDRM (Staked DRM) supply and the DRM price. TVL = sdrmSupply * drmPrice`, - godwoken: { - tvl: async ()=>({}), - staking: sumTokensExport({ useDefaultCoreAssets: true, tokensAndOwners: [[DRM_ADDRESS, STAKING_ADDRESS]], lps: [DRM_USDC_LP_ADDRESS] }), - } -} \ No newline at end of file diff --git a/projects/datadex/index.js b/projects/datadex/index.js deleted file mode 100644 index 2034e028006..00000000000 --- a/projects/datadex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -const blacklistedTokens = [ - '0xbd2d7c728b224961fdb25ccf2a67eb3c25f5ec52', - '0x0238966c595619312c0422f02e1e64f37a06439d', - '0x73bcbf86dea771b1d1e4669657e13399f359c44d', - '0x2b61bdd5ae69b8a814965cdc21e40f2cba6cf251' -] - -module.exports = uniV3Export({ - vana: { factory: '0xc2a0d530e57B1275fbce908031DA636f95EA1E38', fromBlock: 763744, blacklistedTokens }, -}) \ No newline at end of file diff --git a/projects/datamine/index.js b/projects/datamine/index.js deleted file mode 100644 index ed1d32ea119..00000000000 --- a/projects/datamine/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const addresses = { - ethereum: { - // DAM (L1) - damTokenContract: '0xF80D589b3Dbe130c270a69F1a69D050f268786Df', - - // FLUX (L1) - fluxTokenContract: '0x469eDA64aEd3A3Ad6f868c44564291aA415cB1d9' - }, - arbitrum: { - wethAddress: ADDRESSES.arbitrum.WETH, - - // FLUX (L2) - fluxTokenContract: '0xF80D589b3Dbe130c270a69F1a69D050f268786Df', - - // ArbiFLUX (L2) - arbiFluxTokenContract: '0x64081252c497FCfeC247a664e9D10Ca8eD71b276', - - // Lockquidity (L2) - lockquidityTokenContract: '0x454F676D44DF315EEf9B5425178d5a8B524CEa03', - lockquidityVaultContract: '0x0C93A1D3F68a0554d37F3e7AF3a1442a94405E7A' - } -} - -const arbitrumOneDeployUnixTimestamp = 1727644318; // Oct-13-2024 11:11:38 PM +UTC - -module.exports = { - methodology: "Pool2 counts all the permanent liquidity in LOCK/WETH Uniswap v2 pool. Staking counts all the tokens locked-in to mint FLUX/ArbiFLUX/LOCK", - - ethereum: { - tvl:() => ({}), - - // DAM (L1) -> FLUX (L1) - staking: sumTokensExport({ - chain: "ethereum", - owner: addresses.ethereum.fluxTokenContract, - tokens: [ - addresses.ethereum.damTokenContract - ], - }), - }, - - arbitrum: { - tvl:() => ({}), - staking: { - // FLUX (L2) -> ArbiFLUX (L2) - ...sumTokensExport({ - chain: "arbitrum", - owner: addresses.arbitrum.arbiFluxTokenContract, - tokens: [ - addresses.arbitrum.fluxTokenContract - ], - }), - // ArbiFLUX (L2) -> LOCK (L2) - ...sumTokensExport({ - chain: "arbitrum", - owner: addresses.arbitrum.lockquidityTokenContract, - tokens: [ - addresses.arbitrum.arbiFluxTokenContract - ], - }) - - }, - - // LOCK (L2) -> Uniswap v2 LOCK/WETH - pool2: sumTokensExport({ - chain: "arbitrum", - owner: addresses.arbitrum.lockquidityVaultContract, - tokens: [ - addresses.arbitrum.wethAddress, - addresses.arbitrum.lockquidityTokenContract, - ], - }), - }, - - hallmarks: [[arbitrumOneDeployUnixTimestamp, "Lockquidity Launch"]], -}; diff --git a/projects/davincigraph/index.js b/projects/davincigraph/index.js deleted file mode 100644 index 0b157e00043..00000000000 --- a/projects/davincigraph/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { fetchURL } = require("../helper/utils") - -const URL = 'https://locker.davincigraph.io/api/v3/statistics' - -const tvl = async (api) => { - const { data } = await fetchURL(URL) - return api.addUSDValue(Math.round(data.values.liquidity.total)) -} - -module.exports = { - timetravel: false, - doublecounted: true, - misrepresentedTokens: true, - methodology: "The displayed value represents the Total Value Locked (TVL) in USD of all assets secured within the davincigraph token lockers, burners and vesting smart contracts, accessible at https://davincigraph.io/locks/contracts, /vestings/contracts and /burns/contracts.", - hedera: { tvl } -}; diff --git a/projects/davos-protocol/index.js b/projects/davos-protocol/index.js deleted file mode 100644 index d5f310e020a..00000000000 --- a/projects/davos-protocol/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { nullAddress } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { - mvts: ['0x5E851dC1f56A05Bb6d3C053FA756304a5171C345', '0x04901268EE65E989852370C0bad08E1514a0C484', '0x9eDC0ea75e6023b93bbB41c16818e314cfE59D2b', '0xEC38621e72D86775a89C7422746de1f52bbA5320', '0x30aCD3e86f42Fcc87c6FB9873058d8d7133785d4', '0x394fdEC30250A38869bcB425F96080eD6c1b756a', '0xafCA20A243e4e4936fAF76e8893128A231678677'], - }, - bsc: { - mvts: ['0x4e90156997BB469c6F5975e13FF1451C9500B711', '0x87ad5Ab05d7C1E1F904e029783810A2a95702563', '0xb44A251d1C31dd32700E5F2584B4282716C43EB3'], - }, - ethereum: { - mvts: ['0xb396b31599333739A97951b74652c117BE86eE1D', '0x97f0BdaDbfAA05a1944fFbA862b3336a175056cF', '0xC5A7bEB1E6c61B3Aa8dF5aD32a17eb5e9B974B98', '0xf824c280De7622E468547E2d3eca7C94Ad8d7169', '0x4d7CabA383F017c4ce8B1F4493482eC0f09c9Ae7', '0x7281d1bCcbe34574Ee6507b3f4816AFBe85A2e3d', '0xD9dbd69974733481eeCD0125898C8Bb63c51f783', '0xc7b219a9A8e246f9C4d4A1c7d4a371F0840ff724', '0xd4E426ABA74Ece196D375e01b53A70ebeA51Cf25', '0x591e68e32eF0fbFc2DbC5916cd70fEFBF3a9F136', '0x7E6173fE3b426755B4B961c6a7686c13E3c82883', '0x0730BA2252670Cd71580dadf471f3E137592e800', '0x47F661404716C3BB35B80C557e13F0EF490bC4Ae', '0xa6466b9827AD5D765579E3Fc9ca0d678C423fB53'], - }, - optimism: { - mvts: ['0x9c44E6A927302dA33dd76abe4558f26e31C48019', '0xb44A251d1C31dd32700E5F2584B4282716C43EB3'], - }, - polygon: { - mvts: ['0x77F4C841cb87fDFa43aB909cf56f7710Af648a8e', '0x9a1275304960dbc6a8d4a5795832823a7d53f30a'], - }, - polygon_zkevm: { - mvts: ['0x687B069759b053866715542f22877DA9091f20f5', '0x93402F1908dD009C857962b45278E71C7F63647f', '0x24318b8a0CBaCc61cAdE47e5457Eea7237EB2c0E'], - }, - mode: { - mvts: ['0xafCA20A243e4e4936fAF76e8893128A231678677', '0xbD38B722480e2e3D540CaFC44A113d92E1015faa', '0xFdC5033b6Ef5DEDc6b5225B3Fbe3704C3F9638eE', '0xbfE8c19642929Ea9FfD1754e8DdAb880F05022f1'], - }, - linea: { - mvts: ['0x7CDb0b6217A568947D3A2585F0E8AF135017d608', '0xd9BE9956C822000cc0078C16C66B7dd83E6E07C4', '0x2770cB901e6d990B4F5C35E0732821eBf9d3acb7', '0x4F50E7D6A48D78D813775d7A36717DA6A058811D'], - }, -} - - -Object.keys(config).forEach(chain => { - const { mvts,} = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (chain === 'polygon') { - const token = '0x77F4C841cb87fDFa43aB909cf56f7710Af648a8e' - const deposits = await api.call({ abi: 'function deposits(address) view returns (uint256)', target: '0xdd0BdF5749e300f946cdb1dDFE1ffa828eC0dB72', params: token }) - api.add(nullAddress, deposits) - } - const assets = await api.multiCall({ abi: 'address:asset', calls: mvts}) - return api.sumTokens({ tokensAndOwners2: [assets, mvts]}) - } - } -}) \ No newline at end of file diff --git a/projects/dawn-star-finance/index.js b/projects/dawn-star-finance/index.js deleted file mode 100644 index a35bbcd406e..00000000000 --- a/projects/dawn-star-finance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { unknownTombs } = require('../helper/unknownTokens') - -let token = "0x095BC617b36AB227A379550633DFDCBf43f236F6"; -let share = "0xf8Eed914a0BAcAF30C13420989bB7C81b75D833A"; -const rewardPool = "0xfA9f91a340e2eFA47B67921f8809E98796d1f7F7"; -const masonry = "0x00c8Ee42761C95B223676d6Ea59c6b7f6f643A6E"; -const pool2LPs = [ - "0xfc48B66b9119f1d5fD7C8e72E7e489a5D6C0EF55", - "0xe1628A0e5250Fa17271Cef1ED4d892cb32D5ADd4" -]; - -module.exports = unknownTombs({ - lps: pool2LPs, - token, - shares: [share], - rewardPool, - masonry: [masonry], - chain: 'polygon', - useDefaultCoreAssets: true, -}) diff --git a/projects/daytona-finance/index.js b/projects/daytona-finance/index.js deleted file mode 100644 index 99afa2778de..00000000000 --- a/projects/daytona-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "pulse", - masterchef: "0xAc6fBc06C8c0477ba8fc117adb52881c1Cc580dA", - nativeTokens: ["0x9F8182aD65c53Fd78bd07648a1b3DDcB675c6772"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); diff --git a/projects/dbx-finance/index.js b/projects/dbx-finance/index.js deleted file mode 100644 index 9de7567c70f..00000000000 --- a/projects/dbx-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: getUniTVL({ factory: '0x41755a88d4ab443d5d8ef73ec64dd3df71fb5559', useDefaultCoreAssets: true, }), - } -} diff --git a/projects/dddx.js b/projects/dddx.js deleted file mode 100644 index 5f23d33d470..00000000000 --- a/projects/dddx.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require("./helper/unknownTokens"); -const { stakings } = require("./helper/staking"); - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0xb5737A06c330c22056C77a4205D16fFD1436c81b', useDefaultCoreAssets: true }), - staking: stakings( - [ - '0x488f0252B4bEa5A851FE9C827894d08868D552C0', - '0xAd8Ab2C2270Ab0603CFC674d28fd545495369f31', - '0x37056DbB4352877C94Ef6bDbB8C314f749258fCA', - - ], - '0x4B6ee8188d6Df169E1071a7c96929640D61f144f', - ) - } -}; diff --git a/projects/ddex/index.js b/projects/ddex/index.js deleted file mode 100644 index 88aa97df2d9..00000000000 --- a/projects/ddex/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') -const { getUniqueAddresses } = require('../helper/utils') - -const ddexMarginContractAddress = '0x241e82c79452f51fbfc89fac6d912e021db1a3b7' -const SAI = ADDRESSES.ethereum.SAI - -async function tvl(api) { - const infos = await api.fetchList({ lengthAbi: abis.getAllMarketsCount, itemAbi: abis.getMarket, target: ddexMarginContractAddress}) - const tokens = [] - infos.forEach(({ baseAsset, quoteAsset }) => { - tokens.push(baseAsset, quoteAsset) - }) - tokens.forEach((t, i) => { - if (t === '0x000000000000000000000000000000000000000E') - tokens[i] = nullAddress - }) - return sumTokens2({ owner: ddexMarginContractAddress, tokens: getUniqueAddresses(tokens), blacklistedTokens: [SAI], api }) -} - -module.exports = { - start: '2019-08-22', // 2019-08-22T18:41:45+08:00 - ethereum: { tvl } -} - -const abis = { - getMarket: "function getMarket(uint16 marketID) view returns (tuple(address baseAsset, address quoteAsset, uint256 liquidateRate, uint256 withdrawRate, uint256 auctionRatioStart, uint256 auctionRatioPerBlock, bool borrowEnable) market)", - getAllMarketsCount: "uint256:getAllMarketsCount", -} \ No newline at end of file diff --git a/projects/debets/index.js b/projects/debets/index.js deleted file mode 100644 index 3e95e4996e5..00000000000 --- a/projects/debets/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const getPoolInfo = - "function getPoolInfo(address token) view returns (tuple(uint256 freeAmount, uint256 frozenAmount) poolInfo)"; - -// polygon -const factory_address_polygon = "0xcE214f6a877747495106B5e55533f3e23D290DBd"; - -const polygon_tokens = Object.values({ - POLYGON_WMATIC: ADDRESSES.polygon.WMATIC_2, - POLYGON_WETH: ADDRESSES.polygon.WETH_1, - POLYGON_WBTC: ADDRESSES.polygon.WBTC, - POLYGON_USDC: ADDRESSES.polygon.USDC, - POLYGON_USDT: ADDRESSES.polygon.USDT, - POLYGON_DAI: ADDRESSES.polygon.DAI, - POLYGON_XEN: "0x2AB0e9e4eE70FFf1fB9D67031E44F6410170d00e", -}); - -// fantom -const factory_address_fantom = "0x069C55f2DDb434fF67055977dbeB9e9FE8a2F25E"; - -const fantom_tokens = Object.values({ - FANTOM_WFTM: ADDRESSES.fantom.WFTM, - FANTOM_XEN: "0xeF4B763385838FfFc708000f884026B8c0434275", -}); - -function chain_tvl(factory, tokens) { - return async function (api) { - const bals = await api.multiCall({ abi: getPoolInfo, calls: tokens, target: factory }) - api.add(tokens, bals.map(i => i.freeAmount)) - }; -} - -module.exports = { - polygon: { - tvl: chain_tvl(factory_address_polygon, polygon_tokens), - }, - fantom: { - tvl: chain_tvl( factory_address_fantom, fantom_tokens), - }, -}; diff --git a/projects/debridge/index.js b/projects/debridge/index.js deleted file mode 100644 index dad920495f8..00000000000 --- a/projects/debridge/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const http_api_url = 'https://api.debridge.finance/api/Pairs/getForChain'; -const debridgeGate = '0x43dE2d77BF8027e25dBD179B491e8d64f38398aA'; - -const isEvmAddress = (addr) => /^0x[a-fA-F0-9]{40}$/.test(addr); - -const tvl = async (api) => { - const { chain, chainId } = api - const url = `${http_api_url}?chainId=${chainId}`; - const debridge_response = await getConfig('debridge/' + chain, url); - - const tokens = debridge_response - .filter(t => t.tokenAddress && isEvmAddress(t.tokenAddress) && !t.tokenName.startsWith('deBridge ')) - .map(t => t.tokenAddress); - - return sumTokens2({ api, owner: debridgeGate, tokens }) -} - -const chains = ['ethereum', 'bsc', 'heco', 'polygon', 'arbitrum', 'sei'] -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) -module.exports.methodology = 'Debridge TVL is made of token balances of the DebridgeGate contracts. The deployed tokens are retrieved using Debridge HTTP REST API.' diff --git a/projects/debtdao/index.js b/projects/debtdao/index.js deleted file mode 100644 index 0e8724ea6d7..00000000000 --- a/projects/debtdao/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - moduleFactory: '0x00A3699F677C252CA32B887F9f66621920D392f8', - moduleFactoryStart: 16970379, - lineFactory: '0xc9ef6509a09b92043cedce689dfaa760048abd7f', - lineFactoryStart: 16970396, - }, - // xdai: { - // moduleFactory: '0x00A3699F677C252CA32B887F9f66621920D392f8', - // moduleFactoryStart: 27253390, - // lineFactory: '0xc9ef6509a09b92043cedce689dfaa760048abd7f', - // lineFactoryStart: 27253485, - // }, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { moduleFactory, moduleFactoryStart, lineFactory, lineFactoryStart, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - const escrowLogs = await getLogs({ - api, - target: moduleFactory, - topics: ['0x795112e1546f70e94f47252ccd7189f90d711b2e6557885dc3def7b589c7f7ac'], - eventAbi: 'event DeployedEscrow (address indexed deployedAt, uint32 indexed minCRatio, address indexed oracle, address owner)', - onlyArgs: true, - fromBlock: moduleFactoryStart, - }) - const lineLogs = await getLogs({ - api, - target: lineFactory, - topics: ['0xc043ebb31424e42a4ec1454f0de8a7ab9ba0443b8b556c538484c873ae8e64b5'], - eventAbi: 'event DeployedSecuredLine (address indexed deployedAt, address indexed escrow, address indexed spigot, address swapTarget, uint8 revenueSplit)', - onlyArgs: true, - fromBlock: lineFactoryStart, - }) - - await Promise.all(escrowLogs.map(async (log) => { - const escrow = log.deployedAt - const tokenLogs = await getLogs({ - api, - target: escrow, - topic: 'EnableCollateral(address)', - eventAbi: 'event EnableCollateral(address indexed token)', - onlyArgs: true, - fromBlock: moduleFactoryStart, - }) - ownerTokens.push([tokenLogs.map(i => i.token), escrow]) - })) - await Promise.all(lineLogs.map(async (log) => { - const target = log.deployedAt - const counts = await api.call({ abi: "function counts() view returns (uint256, uint256)", target }) - const calls = [] - for (let i = 0; i < counts[0]; i++) calls.push(i) - const proposals = await api.multiCall({ abi: "function ids(uint256) view returns (bytes32)", calls, target }) - const credits = await api.multiCall({ abi: "function credits(bytes32) view returns (uint256 deposit, uint256 principal, uint256 interestAccrued, uint256 interestRepaid, uint8 decimals, address token, address lender, bool isOpen)", calls: proposals, target }) - ownerTokens.push([credits.map(i => i.token), target]) - })) - return sumTokens2({ api, ownerTokens }) - }, - borrowed: async (api) => { - const lineLogs = await getLogs({ - api, - target: lineFactory, - topics: ['0xc043ebb31424e42a4ec1454f0de8a7ab9ba0443b8b556c538484c873ae8e64b5'], - eventAbi: 'event DeployedSecuredLine (address indexed deployedAt, address indexed escrow, address indexed spigot, address swapTarget, uint8 revenueSplit)', - onlyArgs: true, - fromBlock: lineFactoryStart, - }) - - await Promise.all(lineLogs.map(async (log) => { - const target = log.deployedAt - const counts = await api.call({ abi: "function counts() view returns (uint256, uint256)", target }) - const calls = [] - for (let i = 0; i < counts[0]; i++) calls.push(i) - const proposals = await api.multiCall({ abi: "function ids(uint256) view returns (bytes32)", calls, target }) - const credits = await api.multiCall({ abi: "function credits(bytes32) view returns (uint256 deposit, uint256 principal, uint256 interestAccrued, uint256 interestRepaid, uint8 decimals, address token, address lender, bool isOpen)", calls: proposals, target }) - credits.map(i => { - api.add(i.token, i.principal) - // api.add(i.token, i.interestAccrued) - // api.add(i.token, i.interestRepaid * -1) - }) - })) - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/decubate/index.js b/projects/decubate/index.js deleted file mode 100644 index 66419bee029..00000000000 --- a/projects/decubate/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require('../helper/staking') - -const DCBToken = "0xEAc9873291dDAcA754EA5642114151f3035c67A2" -const stakingPools = [ - "0xD1748192aE1dB982be2FB8C3e6d893C75330884a", // Legacy staking pool contract - "0xe740758a8cd372c836857defe8011e4e80e48723" // New staking pools contract -] - -module.exports = { - bsc: { - tvl: async () => ({}), - staking: staking(stakingPools, DCBToken,) - }, -} \ No newline at end of file diff --git a/projects/dedust/index.js b/projects/dedust/index.js deleted file mode 100644 index 14452d04ffa..00000000000 --- a/projects/dedust/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { get } = require('../helper/http') -const { call } = require('../helper/chain/ton') -const { transformDexBalances } = require('../helper/portedTokens') -const ADDRESSES = require("../helper/coreAssets.json"); - - -const SCALE_STAKING_ADDRESS = 'EQBNZB91JJX9Ub7KMEAUoQNVcQlCsob5e_WMFbvsML_UoAKD' -const SCALE = "EQBlqsm144Dq6SjbPI4jjZvA1hqTIP3CvHovbIfW_t-SCALE" - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - ton: { - tvl: async () => { - const pools = await get('https://api.dedust.io/v1/pools') - - return transformDexBalances({ - chain: 'ton', - data: pools.map(i => ({ - token0: i.left_token_root, - token1: i.right_token_root, - token0Bal: i.left_token_reserve, - token1Bal: i.right_token_reserve, - })) - }) - }, - staking: async (api) => { - const get_staking_data = await call({ target: SCALE_STAKING_ADDRESS, abi: "get_staking_data" }) - // TODO: move this to price server - const price_response = await get(`https://tonapi.io/v2/rates?tokens=${SCALE}¤cies=ton`) - const scale_price = price_response.rates[SCALE].prices.TON - return api.add(ADDRESSES.ton.TON, parseInt(get_staking_data[3]) * scale_price) - } - } -} diff --git a/projects/deepbook-sui/index.js b/projects/deepbook-sui/index.js deleted file mode 100644 index 48e9623c26d..00000000000 --- a/projects/deepbook-sui/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { toUSDTBalances } = require("../helper/balances"); -const { get } = require("../helper/http"); - -async function tvl(ts) { - const data = await get( - "https://kx58j6x5me.execute-api.us-east-1.amazonaws.com/sui/deepbook?interval=day&timeFrame=all&dataType=tvl" - ); - return toUSDTBalances(findClosestTvl(data, ts.timestamp)); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - sui: { - tvl, - }, -}; - -function findClosestTvl(data, ts) { - ts = ts * 1000; // Convert to milliseconds - // Parsing the date string to a Date object - data.forEach((i) => { - i.ts = new Date(i.date); - }); - - // Filtering data less than a day old and before timestamp ts - data = data.filter((i) => i.ts < ts && ts - i.ts < 86400000); - - let aggregatedTvl = {}; - data.forEach((item) => { - // there should be no duplicate alias, if they are, the latest one will be used - aggregatedTvl[item.alias] = item.value; - }); - - // Sum all unique values together - let totalTvl = Object.values(aggregatedTvl).reduce((acc, current) => acc + current, 0); - if (+totalTvl<0) return 0 - - return totalTvl; -} diff --git a/projects/deepbook-v3/index.js b/projects/deepbook-v3/index.js deleted file mode 100644 index 25c2cfc5a1c..00000000000 --- a/projects/deepbook-v3/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require("../helper/http"); - -const assetsUrl = "https://deepbook-indexer.mainnet.mystenlabs.com/assets"; -const endpointUrl = "https://deepbook-indexer.mainnet.mystenlabs.com" -const endpointName = "get_net_deposits" - -const tvl = async (api) => { - const assets = await get(assetsUrl); - const coins = Object.values(assets).map(a => a.asset_type); - const url = `${endpointUrl}/${endpointName}/${coins.join(',')}/${api.timestamp}` - // console.log(url); - const data = await get(url) - coins.forEach(coin => { - api.add(coin, data[coin]) - }) - - const { usdTvl } = await api.getUSDJSONs(); - if (usdTvl < 0) throw new Error("Something might be wrong: TVL returned a negative value"); -} - -module.exports = { - methodology: "All deposits into all BalanceManagers minutes all withdrawals from all BalanceManagers", - start: '2024-10-14', - sui: { tvl } -} \ No newline at end of file diff --git a/projects/deeplock/abi.json b/projects/deeplock/abi.json deleted file mode 100644 index 2c8275c5675..00000000000 --- a/projects/deeplock/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "depositId": "uint256:depositId", - "lockedToken": "function lockedToken(uint256) view returns (address tokenAddress, address withdrawalAddress, uint256 tokenAmount, uint256 unlockTime, bool withdrawn)", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/deeplock/api.js b/projects/deeplock/api.js deleted file mode 100644 index 5ca970fccf9..00000000000 --- a/projects/deeplock/api.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./index') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("deeplock", chainKeys), -} - -module.exports.bsc.pool2 = indexExports.bsc.pool2 \ No newline at end of file diff --git a/projects/deeplock/apiCache.js b/projects/deeplock/apiCache.js deleted file mode 100644 index 19c7a36a366..00000000000 --- a/projects/deeplock/apiCache.js +++ /dev/null @@ -1,110 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { pool2s } = require("../helper/pool2"); -const { getUniqueAddresses } = require('../helper/utils') -const { getCache, setCache, } = require("../helper/cache") -const { vestingHelper, } = require("../helper/unknownTokens") - -const project = 'bulky/deeplock' - -const deepLockLockerContractV1 = "0x10dD7FD1Bf3753235068ea757f2018dFef94B257"; -const deepLockLockerContractV2 = "0x3f4D6bf08CB7A003488Ef082102C2e6418a4551e"; - -const stakingPool2Contracts = [ - "0x27F33DE201679A05A1a3ff7cB40a33b4aA28758e", - "0x03dab688d32507B53Cc91265FA47760b13941250", -]; -const lpAddresses = [ - "0xc1fccf4170fa9126d6fb65ffc0dd5a680a704094", - "0x596e48cde23ba55adc2b8b00b4ef472184e2a9e3", -]; - -const bscTvl = async (ts, _b, { bsc: block }) => { - const blacklist = [ - '0x25f4a012b06b43aff3918acbf0cc113119aea194', - '0xce80ab50fca1564426ca09a977b029377c50c909', - '0xa3f0a9ad24a749f3aa14f33c019b708259cfa514', - '0xdde9e8d669115542eff4923c647c53b46c1735f9', - '0x9f0eec882f958cbeef99cab17ea3cf5909c62e77', - '0x168926cd2b2559c8359a7c0ffd2be7ad56e1f2a4', - '0x7963deca5ec22ffc4629f4767de372e1c81ad8fa', - '0xa6467d83a32452ab9091ca4e8edc3831f8aab088', - '0xe18af4897e0fa706ca65ffefef24e5f8ee1d1cea', - '0x19024b0ed8d4e4d5cbf7dfa94a82804bc9a79be3', - '0x347c5b51449074c5487cc193459c5babeebcef07', - '0x290183a09390a9d34c10171cf84c9c36b6cad9ed', - '0xc0600c41273e71dc8736c5e2128c7979ce3bbbac', - '0x5880a0aebd1af8c68497088293ca548c63fd7b0f', - '0x3172057a27b0dbc48a99b8fe2222c4535d56b44c', - '0xf2abb94b826199311d51706e6b32aa3bf8539c89', - '0x7108955947e352b351c4bB20b0a31A3598E7FEEC', - '0xa6124221ed6d2e2f18da78c3cce6f52a8eec1a69', - '0x85a5879ed3b3d11bb370d94b79db80b984f5cbf9', - '0x17a273794516390043814059dc7f29f789972d0a', - '0x3f4D6bf08CB7A003488Ef082102C2e6418a4551e', - '0x03a3cDa7F684Db91536e5b36DC8e9077dC451081', - '0xd43b226d365d8b22ba472afc2fa769b356eb5d47', - '0x8d98a4e36ca048b8e4616564e5a8ebb78895ddff', - '0x1337ace33c2b3fc17d85f33dbd0ed73a896148b5', - '0x486dccaf152b271630216d62c00188f2558f6bec', - '0xf0ee026f572c4a229dc67a692244e90abac29ec2', - ].map(i => i.toLowerCase()) - - const chain = 'bsc' - const cache = await getCache(project, chain) || { vaults: {} } - const balances = {} - const contracts = [ - deepLockLockerContractV1, - deepLockLockerContractV2, - ] - - const { output: lengths } = await sdk.api.abi.multiCall({ - abi: abi.depositId, - calls: contracts.map(i => ({ target: i })), - chain, block, - }) - - const allBalances = await Promise.all(contracts.map((vault, i) => getBalances(vault, +lengths[i].output))) - allBalances.forEach(balance => { - Object.entries(balance).forEach(([token, val]) => sdk.util.sumSingleBalance(balances, token, val)) - }) - await setCache(project, chain, cache) - - delete balances['bsc:0x60de5f9386b637fe97af1cc05f25548e9baaee19'] // remove deeplock token from tvl calculation - delete balances['bsc:0x64f36701138f0e85cc10c34ea535fdbadcb54147'] // remove Anon INU - incorrect price - return balances; - - async function getBalances(vault, length) { - if (!cache.vaults) cache.vaults = {} - if (!cache.vaults[vault]) cache.vaults[vault] = { lastTotalId: 1, tokens: [], } - const cCache = cache.vaults[vault] - const calls = [] - for (let i = cCache.lastTotalId; i <= length; i++) - calls.push({ target: vault, params: i }) - cCache.lastTotalId = length - const { output } = await sdk.api.abi.multiCall({ - abi: abi.lockedToken, requery: true, - calls, chain, block, - }) - output.forEach(i => cCache.tokens.push(i.output.tokenAddress)) - cCache.tokens = getUniqueAddresses(cCache.tokens) - return vestingHelper({ - cache, - useDefaultCoreAssets: true, - blacklist, - owner: vault, - tokens: cCache.tokens, - block, chain, - }) - } -}; - -module.exports = { - misrepresentedTokens: true, - bsc: { - pool2: pool2s(stakingPool2Contracts, lpAddresses), - tvl: bscTvl, - }, - methodology: - "Counts tvl of all the tokens locked on the locker through DeepLockLocker Contracts", -}; diff --git a/projects/deeplock/index.js b/projects/deeplock/index.js deleted file mode 100644 index 9987cd5c7cd..00000000000 --- a/projects/deeplock/index.js +++ /dev/null @@ -1,105 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { pool2s } = require("../helper/pool2"); -const { vestingHelper } = require("../helper/unknownTokens"); - -const deepLockLockerContractV1 = "0x10dD7FD1Bf3753235068ea757f2018dFef94B257"; -const deepLockLockerContractV2 = "0x3f4D6bf08CB7A003488Ef082102C2e6418a4551e"; - -const stakingPool2Contracts = [ - "0x27F33DE201679A05A1a3ff7cB40a33b4aA28758e", - "0x03dab688d32507B53Cc91265FA47760b13941250", -]; -const lpAddresses = [ - "0xc1fccf4170fa9126d6fb65ffc0dd5a680a704094", - "0x596e48cde23ba55adc2b8b00b4ef472184e2a9e3", -]; - -const bscTvl = async (ts, _b, { bsc: block }) => { - const blacklist = [ - '0x25f4a012b06b43aff3918acbf0cc113119aea194', - '0xce80ab50fca1564426ca09a977b029377c50c909', - '0xa3f0a9ad24a749f3aa14f33c019b708259cfa514', - '0xdde9e8d669115542eff4923c647c53b46c1735f9', - '0x9f0eec882f958cbeef99cab17ea3cf5909c62e77', - '0x168926cd2b2559c8359a7c0ffd2be7ad56e1f2a4', - '0x7963deca5ec22ffc4629f4767de372e1c81ad8fa', - '0xa6467d83a32452ab9091ca4e8edc3831f8aab088', - '0xe18af4897e0fa706ca65ffefef24e5f8ee1d1cea', - '0x19024b0ed8d4e4d5cbf7dfa94a82804bc9a79be3', - '0x347c5b51449074c5487cc193459c5babeebcef07', - '0x290183a09390a9d34c10171cf84c9c36b6cad9ed', - '0xc0600c41273e71dc8736c5e2128c7979ce3bbbac', - '0x5880a0aebd1af8c68497088293ca548c63fd7b0f', - '0x3172057a27b0dbc48a99b8fe2222c4535d56b44c', - '0xf2abb94b826199311d51706e6b32aa3bf8539c89', - '0x7108955947e352b351c4bB20b0a31A3598E7FEEC', - '0xa6124221ed6d2e2f18da78c3cce6f52a8eec1a69', - '0x85a5879ed3b3d11bb370d94b79db80b984f5cbf9', - '0x17a273794516390043814059dc7f29f789972d0a', - '0x3f4D6bf08CB7A003488Ef082102C2e6418a4551e', - '0x03a3cDa7F684Db91536e5b36DC8e9077dC451081', - '0xd43b226d365d8b22ba472afc2fa769b356eb5d47', - '0x8d98a4e36ca048b8e4616564e5a8ebb78895ddff', - '0x1337ace33c2b3fc17d85f33dbd0ed73a896148b5', - '0x486dccaf152b271630216d62c00188f2558f6bec', - '0xf0ee026f572c4a229dc67a692244e90abac29ec2', - ].map(i => i.toLowerCase()) - - const chain = 'bsc' - const balances = {} - const contracts = [ - deepLockLockerContractV1, - deepLockLockerContractV2, - ] - - const { output: lengths } = await sdk.api.abi.multiCall({ - abi: abi.depositId, - calls: contracts.map(i => ({ target: i })), - chain, block, - }) - - const allBalances = await Promise.all(contracts.map((vault, i) => getBalances(vault, lengths[i].output))) - allBalances.forEach(balance => { - Object.entries(balance).forEach(([token, val]) => sdk.util.sumSingleBalance(balances, token, val)) - }) - - delete balances['bsc:0x60de5f9386b637fe97af1cc05f25548e9baaee19'] // remove deeplock token from tvl calculation - delete balances['bsc:0x64f36701138f0e85cc10c34ea535fdbadcb54147'] // remove Anon INU - incorrect price - return balances; - - async function getBalances(vault, length) { - const calls = [] - for (let i = 1; i <= length; i++) - calls.push({ target: vault, params: i }) - const { output } = await sdk.api.abi.multiCall({ - abi: abi.lockedToken, requery: true, - calls, chain, block, - }) - const tokens = output.map(i => i.output.tokenAddress) - return vestingHelper({ - useDefaultCoreAssets: true, - blacklist, - owner: vault, - tokens, - block, chain, - log_coreAssetPrices: [ - 300/ 1e18, - 1/ 1e18, - 1/ 1e18, - 1/ 1e18, - ], - log_minTokenValue: 1e6, - }) - } -}; - -module.exports = { - misrepresentedTokens: true, - bsc: { - pool2: pool2s(stakingPool2Contracts, lpAddresses), - tvl: bscTvl, - }, - methodology: - "Counts tvl of all the tokens locked on the locker through DeepLockLocker Contracts", -}; diff --git a/projects/deepp/index.js b/projects/deepp/index.js deleted file mode 100644 index 886c97fc531..00000000000 --- a/projects/deepp/index.js +++ /dev/null @@ -1,19 +0,0 @@ -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: '2023-10-01', - 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/deepr-finance/index.js b/projects/deepr-finance/index.js deleted file mode 100644 index 4735b983be0..00000000000 --- a/projects/deepr-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { compoundExports2, methodology } = require("../helper/compound"); - -module.exports = { - shimmer_evm: compoundExports2({ - comptroller: "0xF7E452A8685D57083Edf4e4CC8064EcDcF71D7B7", - }), - iotaevm: compoundExports2({ - comptroller: "0xee07121d97FDEA35675e02017837a7a43aeDa48F", - }), - methodology, -}; diff --git a/projects/deepseadao/index.js b/projects/deepseadao/index.js deleted file mode 100644 index 5362a4b42d8..00000000000 --- a/projects/deepseadao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const sea = "0xb195af20a0fec7e2c95b22a1c5de86a2389e40d5"; -const staking = "0x844e56e53839Dda19e85894C8e3C1c13d7Aa9463"; -const treasury = "0x4db9Ca15EB32D205B7CD2927D5AE33924F4da22A"; -const tokens = [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0x4a99bca37a3e442ecc60ece9ae4d3bff3f9a423e", true] // SEA-MIM JLP -]; - -module.exports = { - deadFrom: 1648765747, - misrepresentedTokens: true, - ...ohmTvl(treasury, tokens, "avax", staking, sea, undefined, undefined, false) -} diff --git a/projects/deerfi/abi.json b/projects/deerfi/abi.json deleted file mode 100644 index 16723cbc1a2..00000000000 --- a/projects/deerfi/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "allPools": "function allPools(uint256) view returns (address)", - "allPoolsLength": "uint256:allPoolsLength", - "token": "address:token", - "reserve": "uint256:reserve" -} \ No newline at end of file diff --git a/projects/deerfi/index.js b/projects/deerfi/index.js deleted file mode 100644 index 1bcf0d3e971..00000000000 --- a/projects/deerfi/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const abi = require("./abi.json"); - -const factoryContract = "0xa22F8cf50D9827Daef24dCb5BAC92C147a9D342e"; - -const ethTvl = async (api) => { - const pools = await api.fetchList({ lengthAbi: abi.allPoolsLength, itemAbi: abi.allPools, target: factoryContract}) - const tokens = await api.multiCall({ abi: abi.token, calls: pools }) - const bals = await api.multiCall({ abi: abi.reserve, calls: pools }) - api.add(tokens, bals) -}; - -module.exports = { - deadFrom: 1648765747, - misrepresentedTokens: true, - ethereum: { - tvl: ethTvl, - }, - methodology: - "Counts tvl on all the Pools through Factory Contract", -}; diff --git a/projects/defenderfinance/index.js b/projects/defenderfinance/index.js deleted file mode 100644 index 97d6ab832cc..00000000000 --- a/projects/defenderfinance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { pool2s } = require("../helper/pool2"); - -const SWDB_TOKEN = "0xc91324601B20ea0e238B63c9fAfca18d32600722"; - -const farmContractsBSC = [ - //Share Rewards Pool - "0xDFfD5c4FA736f696ebdbbB68ff1D5a4Ca0E70d48", -]; - -const lpPairContractsBSC = [ - //SWDB_ETH_LP - "0x4a931BD6Ab3ab804ae392223C5920426C153DA25", - //SHARE_WBNB_LP - "0x3f344fcA3EB75a745878355E065b58B4EfDE2575" -] - -module.exports = { - bsc: { - pool2: pool2s(farmContractsBSC, lpPairContractsBSC), - tvl: () => 0, - }, - methodology: - "Counts liquidity on the Farms through Defender Finance Contracts", -}; diff --git a/projects/defi-basket/api.js b/projects/defi-basket/api.js deleted file mode 100644 index 9e78f6adbe5..00000000000 --- a/projects/defi-basket/api.js +++ /dev/null @@ -1,28 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const factory = '0xee13c86ee4eb1ec3a05e2cc3ab70576f31666b3b' -const blacklistedTokens = [ - '0x0b91b07beb67333225a5ba0259d55aee10e3a578', // MNEP -] - -async function tvl(api) { - const wallets = await api.multiCall({ - itemAbi: abis.walletOf, - lengthAbi: abis.tokenCounter, - target: factory, - }) - return sumTokens2({ owners: wallets, fetchCoValentTokens: true, api, blacklistedTokens, }); -} - -module.exports = { - timetravel: false, - methodology: "The TVL is calculated by summing the value of all assets that are in the wallets deployed by the DeFiBasket contract.", - polygon: { - tvl - }, -} - -const abis = { - tokenCounter: "uint256:tokenCounter", - walletOf: "function walletOf(uint256 nftId) view returns (address)", -} diff --git a/projects/defi-basket/index.js b/projects/defi-basket/index.js deleted file mode 100644 index 0164468ffef..00000000000 --- a/projects/defi-basket/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { post } = require('../helper/http') - -async function tvl() { - const body = {"pageIndex":0,"sortBy":"pnl","nameQuery":"","filterValue":10,"nftIds":null,"filterCategory":[]} - let tether = 0 - let res - do { - res = await post('https://www.usepicnic.com/api/get-portfolios', body) - res.portfolios.forEach(i => tether += i.value) - body.pageIndex += 1 - } while(res.pagination.hasNext) - return { - tether - } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "The TVL is calculated by summing the value of all assets that are in the wallets deployed by the DeFiBasket contract.", - polygon: { - tvl - }, -} diff --git a/projects/defi-dollar-cdp/index.js b/projects/defi-dollar-cdp/index.js deleted file mode 100644 index 479c4fdc20d..00000000000 --- a/projects/defi-dollar-cdp/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getLiquityV2Tvl } = require('../helper/liquity') - -const config = { - ethereum: '0x1ec9287465ef04a7486779e81370c15624c939e8' -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getLiquityV2Tvl(config[chain]) - } -}) diff --git a/projects/defi-money/index.js b/projects/defi-money/index.js deleted file mode 100644 index 984d9f37889..00000000000 --- a/projects/defi-money/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const config = { - optimism: { - controller: "0x1337F001E280420EcCe9E7B934Fa07D67fdb62CD", - MONEY: "0x7e803F4edd6528caFBf5C5d03Cc106b04379C24b", - stakeLPs: [ - // "0x7e803F4edd6528caFBf5C5d03Cc106b04379C24b", // MONEY - already included in tvl - "0xE8f00491afa68B4A653C77e5f92DBA0F8df3a185", // crvUSD/MONEY - "0xa398a48C2738fd6c79F5654823Fb93456B0fDaF6", // USDT/MONEY - "0x36afCD1083eE9186A2b984E10d75C1E14b99B75e", // USDC/MONEY - "0xcf38a66DeD7825cfEF66046c256Aa0EDbd41BEf5", // DAI/MONEY - "0x73C3eC2b8e00929824a529e60fb6ed8aF193c7cc", // FRAX/MONEY - ], - }, - arbitrum: { - controller: "0x1337F001E280420EcCe9E7B934Fa07D67fdb62CD", - MONEY: "0xEbE54BEE7A397919C53850bA68E126b0A6b295ed", - stakeLPs: [ - // "0xEbE54BEE7A397919C53850bA68E126b0A6b295ed", // MONEY - already included in tvl - "0xF2852d7e810d3EC7094bFE1D7DDCa5044c259c25", // crvUSD/MONEY - "0x6e59b326984fC132F16a977cd20E38641A9043De", // USDT/MONEY - "0xdE718A791226c93B53C77D60E5D4693C05a31422", // USDC/MONEY - "0xE3763d545707F435e21eeBbe75070495c806B744", // DAI/MONEY - "0x07aDF588508b923B8eA0389d27b61b9CB8a197Cb", // FRAX/MONEY - ], - }, - base: { - controller: "0x1337F001E280420EcCe9E7B934Fa07D67fdb62CD", - MONEY: "0xEbE54BEE7A397919C53850bA68E126b0A6b295ed", - stakeLPs: [ - // "0x9F04112af02CE57C10d946481Ea06373719c1E7E", // MONEY - already included in tvl - "0xe0f7c023763d782970ab45e9232255a64290cd6a", // crvUSD/MONEY - "0xb7698c690752ae034e914a29a0de67339a94982b", // USDC/MONEY - "0x45acdee3c9f7e1c7ad6cc10c9cb9f74eb52d0e70", // USDbC/MONEY - "0xac786337dde86b768ea3cc90afa03250bccfff28", // DAI/MONEY - ], - }, -} - -const tvl = async (api) => { - const { controller, } = config[api.chain] - const colls = await api.call({ target: controller, abi: 'address[]:get_all_collaterals' }) - const amms = await api.multiCall({ abi: 'function get_amm(address) view returns (address)', calls: colls, target: controller }) - return sumTokens2({ api, tokensAndOwners2: [colls, amms]}) -} - -const pool2 = async (api) => { - const { stakeLPs = [], } = config[api.chain] - const tokens = await api.multiCall({ abi: 'address:STAKE_TOKEN', calls: stakeLPs }) - return sumTokens2({ api, tokensAndOwners2: [tokens, stakeLPs]}) -} - -module.exports = { - methodology: "TVL corresponds to the collateral deposited in the markets", -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl, pool2, - } -}) diff --git a/projects/defi-swap/index.js b/projects/defi-swap/index.js deleted file mode 100644 index 5cd7ba3646c..00000000000 --- a/projects/defi-swap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - start: '2020-09-08', // Tuesday, 8 September 2020 00:00:00 - ethereum: { - tvl: getUniTVL({ factory: '0x9DEB29c9a4c7A88a3C0257393b7f3335338D9A9D', useDefaultCoreAssets: true }), - }, -} diff --git a/projects/defibox/index.js b/projects/defibox/index.js deleted file mode 100644 index 04a8f1d3017..00000000000 --- a/projects/defibox/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const axios = require("axios"); -const utils = require("../helper/utils"); -const {lendingMarket} = require("../helper/methodologies") -const { getUniTVL } = require('../helper/unknownTokens') - -const endpoint = (chain) => `https://${chain}.defibox.io/api/` - -async function eos() { - const swap = await utils.fetchURL(endpoint("eos") + "swap/get24HInfo"); - const lend = await utils.postURL(endpoint("eos") + "lend/getGlobalOpenPositionStat") - const usn = await utils.postURL(endpoint("eos") + "st/open/getGlobalOpenStat") - const bal = await utils.fetchURL(endpoint("eos") + "bal/get24HInfo"); - const vault = await utils.postURL(endpoint("eos") + "vault/getVaultStat"); - - // Calculate TVL (in $EOS value) - const eos = Number(swap.data.data.eosBalance) * 2; // swap TVL (dual sided 50/50 AMM pool) - - // Calculate TVL (in $USDT value) - const lend_tvl = Number(lend.data.data.practicalBalance) - Number(lend.data.data.totalBorrowsVariable); // lending protocol (deposits - borrowed assets) - const usn_tvl = Number(usn.data.globalOpenStat.totalMortgage) // USN (over-collaterized stable token) - const bal_tvl = Number(bal.data.data.balUsdtBalance) // balance protocol TVL (total in USDT value) - const vault_tvl = Number(vault.data.data) // vault protocol TVL (time deposit EOS & USDT valued in $USD) - const tether = lend_tvl + usn_tvl + bal_tvl + vault_tvl; - - return { - tether, - eos, - } -} - -async function borrowed() { - const lend = await utils.postURL(endpoint("eos") + "lend/getGlobalOpenPositionStat") - const tether = Number(lend.data.data.totalBorrowsVariable) // total TVL that is borrowed from lend protocol - - return {tether}; -} - -async function wax() { - const swap = await utils.fetchURL(endpoint("wax") + "swap/get24HInfo"); - const wax = Number(swap.data.data.waxBalance) * 2; // swap TVL (dual sided 50/50 AMM pool) - - return { - wax, - } -} - -async function bsc() { - const swap = await axios.post(endpoint("bsc") + "swap/get24HInfo", {}, {headers: {chainid: 56}}); - const wbnb = Number(swap.data.data.wbnb_balance) * 2; // swap TVL (dual sided 50/50 AMM pool) - - return { - wbnb, - } -} - -module.exports = { - methodology: `${lendingMarket}. Defibox TVL is achieved by making a call to its API: https://.defibox.io/api/.`, - timetravel: false, - misrepresentedTokens: true, - eos: { - tvl: eos, - borrowed, - }, - wax: { - tvl: wax - }, - bsc: { - tvl: getUniTVL({ factory: '0xDB984fd8371d07db9cBf4A48Eb9676b09B12161D'}) - } -} diff --git a/projects/defibox/utils.js b/projects/defibox/utils.js deleted file mode 100644 index 692c73a9d32..00000000000 --- a/projects/defibox/utils.js +++ /dev/null @@ -1,59 +0,0 @@ -const sdk = require('@defillama/sdk'); -const axios = require("axios"); - -const EOS_ENDPOINT = "https://eos.greymass.com"; - -function defiboxSymbolPairId( symbol ) { - let id = 0; - let depth = 0; - const multiplier = 26 - const chars = symbol.replace(/^BOX/, "").split("").reverse(); - for ( const c of chars ) { - const value = c.charCodeAt(0) - "A".charCodeAt(0) + 1; - if ( depth ) id += multiplier ** depth * value - else id += value; - depth += 1; - } - return id; - } - -function sumDefiboxLiquidity( balances, reserve, token, ratio ) { - const balance = Number(reserve.split(" ")[0]); - const precision = Number(token.symbol.split(",")[0]); - const amount = Math.floor(balance * ratio * 10 ** precision); - sdk.util.sumSingleBalance( balances, eosTokenString(token), amount ); -} - -async function unwrapDefiboxLiquidity( balances, token ) { - const pair_id = defiboxSymbolPairId( token.symbol ); - const data = { code: "swap.defi", scope: "swap.defi", table: "pairs", lower_bound: pair_id, upper_bound: pair_id, json: true }; - const response = await axios.default.post(EOS_ENDPOINT + "/v1/chain/get_table_rows", data); - if ( response.data.rows ) { - const { token0, token1, reserve0, reserve1, liquidity_token } = response.data.rows[0]; - const ratio = token.balance / liquidity_token; - sumDefiboxLiquidity( balances, reserve0, token0, ratio ); - sumDefiboxLiquidity( balances, reserve1, token1, ratio ); - } -} - -function eosTokenString( token ) { - // ex: 4,EOS@eosio.token - if ( typeof token.contract == 'undefined' ) throw new Error("tokenString: [token.contract] is required"); - if ( typeof token.symbol == 'undefined' ) throw new Error("tokenString: [token.symbol] is required"); - if ( token.symbol.match(",") ) return `eos:${token.symbol}@${token.contract}` - return `eos:${normalizePrecision(token.precision)},${token.symbol}@${token.contract}` -} - -// converts 10000 => 4 -function normalizePrecision( precision ) { - return (String(precision).match(/0/g) || []).length; -} - - -module.exports = { - defiboxSymbolPairId, - sumDefiboxLiquidity, - unwrapDefiboxLiquidity, - eosTokenString, - normalizePrecision -} \ No newline at end of file diff --git a/projects/defichain-dex.js b/projects/defichain-dex.js deleted file mode 100644 index 2714258e88f..00000000000 --- a/projects/defichain-dex.js +++ /dev/null @@ -1,20 +0,0 @@ -const { transformDexBalances } = require('./helper/portedTokens'); -const { get } = require('./helper/http') - -async function tvl() { - const data = [] - const { data: info } = await get('https://ocean.defichain.com/v0/mainnet/poolpairs?size=200') - info.forEach(i => data.push({ token0: i.tokenA.symbol, token0Bal: i.tokenA.reserve, token1: i.tokenB.symbol, token1Bal: i.tokenB.reserve,})) - const balances = await transformDexBalances({data, chain: 'defichain'}) - balances['defichain:dusd'] = balances['defichain:dusd'] * 0.7 - return balances -} - -module.exports = { - methodology: "Liquidity on the DEX, DUSD price is reduced by 30% because of the dex stability tax", - timetravel: false, - misrepresentedTokens: true, - defichain: { - tvl - } -} diff --git a/projects/defichain-loans/api.js b/projects/defichain-loans/api.js deleted file mode 100644 index 387ae389c28..00000000000 --- a/projects/defichain-loans/api.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("defichain-loans", ['defichain']), -} \ No newline at end of file diff --git a/projects/defichain-loans/index.js b/projects/defichain-loans/index.js deleted file mode 100644 index f5fc350e21e..00000000000 --- a/projects/defichain-loans/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { get } = require('../helper/http') -const { log } = require('../helper/utils') - -async function tvl(api) { - let next - const baseURI = 'https://ocean.defichain.com/v0/mainnet/loans/vaults?size=100' - let page = 0 - do { - let endpoint = baseURI - if (next) endpoint += '&next=' + next - - log('fetchin: ', ++page, next) - const res = await get(endpoint) - next = res.page?.next - - res.data.forEach(({ collateralAmounts = [], loanAmounts = [], }) => { - collateralAmounts.forEach(({ amount, symbol }) => { - if (symbol === 'DUSD') - amount *= 0.7 // value is reduced by 30% to compensate for DEX stability fees - api.add(symbol, +amount) - }) - loanAmounts.forEach(({ amount, symbol }) => { - if (symbol === 'DUSD') - api.add(symbol, +amount * 0.7 * -1) - }) - }) - } while (next) -} - -module.exports = { - methodology: "Collateral backing loans in the platform, DUSD is excluded", - timetravel: false, - defichain: { - tvl - } -} diff --git a/projects/defidash/index.js b/projects/defidash/index.js deleted file mode 100644 index 38216b5dc98..00000000000 --- a/projects/defidash/index.js +++ /dev/null @@ -1,13 +0,0 @@ - -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') -const DEFI_DASH_CONTRACT = '0x59B88318d239da34188C42B9e76aAC6D50265974'; -const DEFI_DASH_TOKEN = '0xd6df108d516a5dc83f39020a349085c79d4edf0d'; - -module.exports = { - methodology: 'Counts the ETH and/or ERC20 tokens held in the DefiDash contract as TVL.', - base: { - tvl: sumTokensExport({ owner: DEFI_DASH_CONTRACT, tokens: [nullAddress] }), - staking: staking(DEFI_DASH_CONTRACT, DEFI_DASH_TOKEN) - }, -}; diff --git a/projects/defidollar/abi.json b/projects/defidollar/abi.json deleted file mode 100644 index 6b6d3fd9e9a..00000000000 --- a/projects/defidollar/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pricePerShare": "uint256:pricePerShare", - "yCrvDistribution": "function yCrvDistribution() view returns (uint256 here, uint256 total)" -} \ No newline at end of file diff --git a/projects/defidollar/index.js b/projects/defidollar/index.js deleted file mode 100644 index bc9c933bc21..00000000000 --- a/projects/defidollar/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const abi = require("./abi.json"); -const sdk = require('@defillama/sdk') -const BigNumber = require('bignumber.js') - -const IBBTC = "0xc4E15973E6fF2A35cC804c2CF9D2a1b817a8b40F"; - -const yCRV = "0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8"; -const yCrvPeak = "0xA89BD606d5DadDa60242E8DEDeebC95c41aD8986" - -async function tvl(_timestamp, block) { - const [ yCrvDistribution, ibbtcSupply, pps ] = await Promise.all([ - sdk.api.abi.call({ - block, - target: yCrvPeak, - abi: abi.yCrvDistribution - }), - sdk.api.erc20.totalSupply({ - target: IBBTC, - block - }), - sdk.api.abi.call({ - target: IBBTC, - abi: abi.pricePerShare, - block - }) - ]); - - const bitcoinBalance = BigNumber(ibbtcSupply.output).times(pps.output).div(10**36).toNumber() - return { - [yCRV]: yCrvDistribution.output.total, - 'bitcoin': bitcoinBalance - } -} - -module.exports = { - hallmarks: [ - [1641600000, "Possible exploit, contracts paused"] - ], - ethereum:{ - tvl - }, -}; diff --git a/projects/defiedge/index.js b/projects/defiedge/index.js deleted file mode 100644 index 593ca05004e..00000000000 --- a/projects/defiedge/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { graphQuery } = require("../helper/http"); - -const endpoint = "https://api.defiedge.io/graphql"; - -const query = /* GraphQL */ ` - query Stats($network: [Network!]) { - stats(network: $network) { - totalValueManaged - } - } -`; - -async function getTvl(api) { - const { network } = config[api.chain]; - - const results = await graphQuery(endpoint, query, { network: [network] }); - const tvl = results.stats.totalValueManaged; - - return { "usd-coin": tvl }; -} - -module.exports = { - hallmarks: [[1730332800, "Definitive Sunset of DefiEdge"]], - deadFrom: '2024-10-31', - doublecounted: true, - misrepresentedTokens: true, - timetravel: false, -}; - -const config = { - arbitrum: { network: "arbitrum" }, - astrzk: { network: "astarZkEVM" }, - avax: { network: "avalanche" }, - base: { network: "base" }, - bsc: { network: "bsc" }, - era: { network: "zksyncEra" }, - ethereum: { network: "mainnet" }, - linea: { network: "linea" }, - mantle : { network: "mantle" }, - moonbeam: { network: "moonbeam" }, - optimism: { network: "optimism" }, - polygon_zkevm: { network: "zkEVM" }, - polygon: { network: "polygon" }, - xlayer: { network: "xLayer" }, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl: getTvl }; -}); diff --git a/projects/defifranc/index.js b/projects/defifranc/index.js deleted file mode 100644 index 8f9949397f0..00000000000 --- a/projects/defifranc/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const MON_STAKING_POOL = "0x8Bc3702c35D33E5DF7cb0F06cb72a0c34Ae0C56F"; // deposits DCHF - -const MON_TOKEN = "0x1EA48B9965bb5086F3b468E50ED93888a661fc17"; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: ['0x77E034c8A1392d99a2C776A6C1593866fEE36a33', '0xC1f785B74a01dd9FAc0dE6070bC583fe9eaC7Ab5'], tokens: [ADDRESSES.ethereum.WBTC, ADDRESSES.null]}), - staking: staking(MON_STAKING_POOL, MON_TOKEN), - }, - start: '2022-09-25', - methodology: - "Total deposits of ETH and wBTC for borrowed DCHF.", -}; \ No newline at end of file diff --git a/projects/defihalal/index.js b/projects/defihalal/index.js deleted file mode 100644 index d909ac8fda1..00000000000 --- a/projects/defihalal/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {getLiquityTvl} = require('../helper/liquity') - -module.exports = { - methodology: "Deposited Matic and USDH, USDH is not listed on CoinGecko and has been replaced with TUSD", - polygon:{ - tvl: getLiquityTvl("0xd8a3e8c70091d6231a63e671a6ce8ea44e143d24") - } -}; diff --git a/projects/defikingdoms/index.js b/projects/defikingdoms/index.js deleted file mode 100644 index 19607d62b2d..00000000000 --- a/projects/defikingdoms/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { getUniTVL } = require("../helper/unknownTokens"); - - -module.exports = { - harmony: { - tvl: getUniTVL({ factory: '0x9014B937069918bd319f80e8B3BB4A2cf6FAA5F7', useDefaultCoreAssets: true }), - staking: staking(ADDRESSES.harmony.xJEWEL, ADDRESSES.harmony.JEWEL), - }, - klaytn: { - tvl: getUniTVL({ factory: '0x36fAE766e51f17F8218C735f58426E293498Db2B', useDefaultCoreAssets: true }), - staking: staking("0xaa8548665bcc12c202d5d0c700093123f2463ea6", "0x30c103f8f5a3a732dfe2dce1cc9446f545527b43"), - }, - hallmarks:[ - [1655991120, "Horizon bridge Hack $100m"], - ], -}; diff --git a/projects/defil/contracts.json b/projects/defil/contracts.json deleted file mode 100644 index 909c88f6e10..00000000000 --- a/projects/defil/contracts.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "ethereum": { - "holders": { - "DFL": "0xb685bfdad9da7093168ab75204bbcadf0c69c823", - "eFIL": "0x036cf3821ea246e935feef1c29ed8ddffac1dbb0", - "FILST-USDT": "0x9e08bd9a1e3880902688b32d563046cab74d2f2f", - "FILST-EFIL": "0x312c6ffe7743b964be6da9131e662af5bac55199", - "FILST": "0x01aabbad98a7638b7f8d65e7ec42560f1afbbf0c" - }, - "pool2": "0x6b0c7d013cc0b461490287cc20aa9f34f950a6a6", - "tokens": { - "DFL": { - "address": "0x09ce2b746c32528b7d864a1e3979bd97d2f095ab", - "isLP": false - }, - "eFIL": { - "address": "0x2a2cB9bA73289D4D068BD57D3c26165DaD5Cb628", - "isLP": false - }, - "DFL-USDT": { - "address": "0xd372a3221021Df72eDa38f77117d3A95f057e163", - "isLP": true - }, - "FILST-USDT": { - "address": "0xa2f6a219a51B4682E34a13a94C160d6c79cDcA35", - "isLP": true - }, - "FILST-EFIL": { - "address": "0x7393aa9DE6585ae2EC5e18aBfFe1eD07123d0E87", - "isLP": true - }, - "FILST": { - "address": "0x7346aD4c8cD1886Ff6D16072bCeA5DFC0bc24Ca2", - "isLP": false - } - } - }, - "bsc": { - "holders": { - "DFL": "0x272257bb03a2b99978a1e6badeba7ccba444d285", - "eFIL": "0x22b475f3e93390b7e523873ad7073337f4e56c2c", - "FILST-USDT": "0xde6239b3138910c68f318e799b3d332925e9929f", - "FILST-EFIL": "0x6b9ee349810e660dda9e3557c7a7412e5424ea39", - "FILST": "0x6c753ca90bad578504314699580c8b01e067a765" - }, - "pool2": "0x6b6811a710f07b8ac430f6e172833e87c4bd8716", - "tokens": { - "DFL": { - "address": "0x6ded0F2c886568Fb4Bb6F04f179093D3D167c9D7", - "isLP": false - }, - "eFIL": { - "address": "0x22B475f3e93390b7E523873ad7073337f4E56C2c", - "isLP": false - }, - "DFL-USDT": { - "address": "0x3558C47C0f2309197857689d84Cb620405E2c54D", - "isLP": true - }, - "FILST-USDT": { - "address": "0xecf6aA34b19e31311eB92768888bdDd25aa72933", - "isLP": true - }, - "FILST-EFIL": { - "address": "0x3ce2669c9aaf8e717c739b1e9100fa792ad23835", - "isLP": true - }, - "FILST": { - "address": "0x899e2a220CBC6eb1Ab154211353EDED74BC1e266", - "isLP": false - } - } - } -} \ No newline at end of file diff --git a/projects/defil/index.js b/projects/defil/index.js deleted file mode 100644 index 4b4cb559255..00000000000 --- a/projects/defil/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { staking } = require("../helper/staking.js"); -const { pool2 } = require('../helper/pool2'); -const contracts = { - "ethereum": { - "holders": { - "DFL": "0xb685bfdad9da7093168ab75204bbcadf0c69c823", - "FILST-USDT": "0x9e08bd9a1e3880902688b32d563046cab74d2f2f", - "FILST-EFIL": "0x312c6ffe7743b964be6da9131e662af5bac55199", - "FILST": "0x01aabbad98a7638b7f8d65e7ec42560f1afbbf0c" - }, - "pool2": "0x6b0c7d013cc0b461490287cc20aa9f34f950a6a6", - }, - "bsc": { - "holders": { - "DFL": "0x272257bb03a2b99978a1e6badeba7ccba444d285", - "FILST-USDT": "0xde6239b3138910c68f318e799b3d332925e9929f", - "FILST-EFIL": "0x6b9ee349810e660dda9e3557c7a7412e5424ea39", - "FILST": "0x6c753ca90bad578504314699580c8b01e067a765" - }, - "pool2": "0x6b6811a710f07b8ac430f6e172833e87c4bd8716", - } -} - -async function tvl(api) { - - const owners = Object.values(contracts[api.chain].holders); - const tokens = await api.multiCall({ abi: 'address:property', calls: owners }) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], resolveLP: true, }) -} - -module.exports = { - bsc: { - tvl, - staking: staking(contracts.bsc.holders.DFL, '0x6ded0F2c886568Fb4Bb6F04f179093D3D167c9D7'), - pool2: pool2(contracts.bsc.pool2, '0x3558C47C0f2309197857689d84Cb620405E2c54D',), - }, - ethereum: { - tvl, - staking: staking(contracts.ethereum.holders.DFL, '0x09ce2b746c32528b7d864a1e3979bd97d2f095ab'), - pool2: pool2(contracts.ethereum.pool2, '0xd372a3221021Df72eDa38f77117d3A95f057e163',), - } -}; \ No newline at end of file diff --git a/projects/defily-dex/index.js b/projects/defily-dex/index.js deleted file mode 100644 index 8ebc8cb1a59..00000000000 --- a/projects/defily-dex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const config = { - onus: '0xf57578DD26422e80ab4051165Fb64DA1F25E740A', -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: config[chain], }) - } -}) diff --git a/projects/defilyio/index.js b/projects/defilyio/index.js deleted file mode 100644 index 31808f8eaa4..00000000000 --- a/projects/defilyio/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const stakingContract_BSC = "0x75A2145510b7CeefB812d5Afa1b20f94eC0BAf57"; -const stakingContract_KARDIA = "0x0245a1f57Ee84b55Cf489Eb5F3d27355014e57f8"; -const stakingContract_Harmony = "0x3b441bf2522927BCf41c1c24786E7a8E9a56B234"; - -const DFL = "0xD675fF2B0ff139E14F86D87b7a6049ca7C66d76e"; -const DFL_Harmony = ADDRESSES.arbitrum.MIM; - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking(stakingContract_BSC, DFL), - }, - kardia: { - staking: staking(stakingContract_KARDIA, DFL), - }, - harmony: { - staking: staking(stakingContract_Harmony, DFL_Harmony), - }, - deadFrom: '2024-10-01', -}; diff --git a/projects/defimaster/index.js b/projects/defimaster/index.js deleted file mode 100644 index 7060cc7fc79..00000000000 --- a/projects/defimaster/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { unwrapLPsAuto } = require("../helper/unwrapLPs"); - -const abi = { - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accSushiPerShare, bool isVault)" -} - -async function tvl(api) { - const balances = {} - const pools = (await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: chefArbitrum })).map(i => i.lpToken) - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: pools }) - const vaults = pools.filter((_, i) => /_ZLP$/.test(symbols[i])) - const underlying = await api.multiCall({ abi: 'address:UNDERLYING', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:totalHoldings', calls: vaults }) - bals.forEach((v, i) => sdk.util.sumSingleBalance(balances,underlying[i],v, api.chain)) - await unwrapLPsAuto({ api, balances}) - return balances -} - -const chefArbitrum = "0x2F9805038114B9DDcf99316a5b4Db2eC820322D3"; - -module.exports = { - methodology: `Total value in MasterChef`, - misrepresentedTokens: true, - arbitrum: { - tvl, - }, -} diff --git a/projects/definer/abi.json b/projects/definer/abi.json deleted file mode 100644 index fbc61613194..00000000000 --- a/projects/definer/abi.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "global:tokenInfoRegistry": "address:tokenInfoRegistry", - "global:bank": "address:bank", - "tokenRegistry:getTokens": "address[]:getTokens", - "tokenRegistry:getCToken": "function getCToken(address _token) view returns (address)", - "bank:getPoolAmount": "function getPoolAmount(address _token) view returns (uint256)", - "bank:getTokenState": "function getTokenState(address _token) view returns (uint256 deposits, uint256 loans, uint256 collateral)", - "bank:getCapitalUtilizationRatio": "function getCapitalUtilizationRatio(address _token) view returns (uint256)", - "bank:getCapitalCompoundRatio": "function getCapitalCompoundRatio(address _token) view returns (uint256)", - "ctoken:supplyRatePerBlock": "uint256:supplyRatePerBlock", - "ctoken:borrowRatePerBlock": "uint256:borrowRatePerBlock" -} \ No newline at end of file diff --git a/projects/definer/index.js b/projects/definer/index.js deleted file mode 100644 index 7f9d44e61bc..00000000000 --- a/projects/definer/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const abi = require("./abi.json"); -const config = { - ethereum: { - DEPLOY_BLOCK: 10819469, - GLOBAL_CONFIG_ADDRESS: "0xa13B12D2c2EC945bCAB381fb596481735E24D585", - SAVINGS_ADDRESS: "0x7a9E457991352F8feFB90AB1ce7488DF7cDa6ed5", - CETH: "0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5", - }, - okexchain: { - DEPLOY_BLOCK: 3674844, - GLOBAL_CONFIG_ADDRESS: "0xAdD7b91FA4DC452A9C105F218236B28F17562555", - SAVINGS_ADDRESS: "0xF3c87c005B04a07Dc014e1245f4Cff7A77b6697b", - CETH: "0x621CE6596E0B9CcF635316BFE7FdBC80C3029Bec", - }, - polygon: { - DEPLOY_BLOCK: 22745105, - GLOBAL_CONFIG_ADDRESS: "0x8dceE8E1555e1881fB16a546E86310aB573a6808", - SAVINGS_ADDRESS: "0x7C6e294E6555cD70D02D53735C6860AD03A6b34F", - CETH: "0xC1B02E52e9512519EDF99671931772E452fb4399", - }, -}; - -Object.keys(config).forEach(chain => { - const { GLOBAL_CONFIG_ADDRESS, SAVINGS_ADDRESS, CETH, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - // Get TokenRegistry Address - let tokenRegistryAddress = await api.call({ target: GLOBAL_CONFIG_ADDRESS, abi: abi["global:tokenInfoRegistry"], }) - - // Get latest markets - let markets = await api.call({ target: tokenRegistryAddress, abi: abi["tokenRegistry:getTokens"], }); - - let bankAddress = await api.call({ target: GLOBAL_CONFIG_ADDRESS, abi: abi["global:bank"], }) - const amounts = await api.multiCall({ abi: abi["bank:getPoolAmount"], calls: markets, target: bankAddress, }) - api.add(markets, amounts) - return api.sumTokens({ owner: SAVINGS_ADDRESS, token: CETH}) - - } - } -}) \ No newline at end of file diff --git a/projects/definitely/index.js b/projects/definitely/index.js deleted file mode 100644 index 206bd1e4844..00000000000 --- a/projects/definitely/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x6aB5242fCaCd0d37c39F77Ff7EabdCcac5e8D450" -const contract1 = "0x4703B92dFCb0Ad403030BF783c8EC067297B55fA" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -async function tvlsei(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract1, api }) -} - -module.exports = { - methodology: `We count the SEI on ${contract}`, - arbitrum: { - tvl - }, - sei: { - tvl:tvlsei - } -} \ No newline at end of file diff --git a/projects/definitive/index.js b/projects/definitive/index.js deleted file mode 100644 index fe3304bf773..00000000000 --- a/projects/definitive/index.js +++ /dev/null @@ -1,90 +0,0 @@ -const CommunityVaultsLP = { - arbitrum: [ - "0xbE3cb8CA59487D39b49d33A124cC93a83cB6fd16" - ], - avax: [ - "0xe5b54e79cD1D53024A94df479B3099DBE72FB662", - "0x1499BeB1FBf76420704e12a9F7E3Af99dCc39618", - "0xEeF282aCCa091bE35AaCC0a6ce38708530749170", - "0x99C409C681650964296916780A7aB540fFBd4Bc4", - "0x123384ba6Cde21a3E8874cA878dF9d8a1326A0c6", - "0x4a86E2ceE61a41a2F5c97906431611F1F26881ec", - "0x90529324E6901fA8f69F207A6E58CE6F4367a519", - "0x486B322cbcBf92A463769F0b1284D2b63FD66E2C", - "0xd91f00d6Add5A1A59589B4756C3193892540B7d0", - "0x751c09F0803C1351019c2249C3efA42C6e1ABaDD", - "0xb4d844B64e972eA41dC87714A04EfF4CbFffDBaf" - ], - base: [ - "0x85fa0A64c9D181226496A132BbBd1fc34116aAB9", - "0xc38E40C35469d8e226E6ef39ff6741b5d1ef3C96", - "0x6221452d88C21eC9D9Ea201191CEbEb47a758228", - "0x70408e74fF424866c4F3b537892393B0228ea26f", - "0xf9536Fe70c056f1d1220E5d73E1A2d8e9Ed770Ad", - "0x20F3A0a03bd4a53eD32A259252469a345F45CB91", - "0xc252d7692D9540DFb2be9932cfCf22b085dc81F8", - "0x0F5a1bb0AA76fFfe8216b9D659ae56d948F1c375", - "0x143e11dC78F8DCd39EDD70A90Baf89588a3a350B", - "0x9BA4b909E2B40706ff1cD209B34006FD73c42A6D", - "0x994c3586401a7fA10CA2E73136f7B7d1D251A640", - "0xd3cc1C60c8C90f0B8CBb6334Da7bdEc505C28255", - "0xc446F6d3178ccaAf919cB27D1C5FCc21C37f88dd" - ], - ethereum: [ - "0xFefb05EB5abc0c378120b93ff37CEc8af4872A18" - ], - optimism: [ - "0x4bBC0bFA0ea23fAec258924823bF9a3f870aAa95", - "0xA1185B84FF6F18C00234995E8BE5aA9e701bad82", - "0xfCAe29Da7c6cA5de03328E19f67E7b761ae39c15", - "0x62FA680af3B0F546624645D9E40eE77607D4cEc3", - "0x5Cdcc84bf78e89Da688d08a5d52100D0c33c751A" - ], - polygon: [ - "0x926b5A53A6fd4f11177e5c4781551d5E58d75C3C", - "0xBF279cc0d2E046F10D042F772dCe98B136f3B811" - ] -} - -const CommunityVaultsLLSD = { - arbitrum: [ - "0x449b72B665C28D6190ff08A21b2130CaCf06E1c8" // Aave wstETH - ], - avax: [ - "0xa460802fc6e7c1401B06078B332d5A1B52dff0D1", - "0x7402282F04740F2f8CE97eE426f90d6F800A3C21", - ], - base: [ - "0xC2cA42Ac871753d4623766581b7A963c2AD7209B", - "0x035569b57390a095b4b3f7754214b39CA3145C75", - "0xB3E741Ee16Df64eF9274261A397Df6Fd54073FFB" - ], - ethereum: [ - "0x954F286AEc288af89601F53e5D8727540ba2f00f", - "0x4184a083307a208f5bF20d0B44E161Bc55aae996" - ], - optimism: [ - "0x3796103d23D207fB5db2CFEc97fd7a0ac0A70D82", - "0xB2a74028CcCA97C4fA4686802246FdDEAa3A941B" - ], - polygon: [ - "0x8347B60460421EE565F3aC26DaFbAC9D2fE8930e" - ], -} - -async function tvl(api) { - /** Hyperstaking Community Vaults */ - const LLSDs = CommunityVaultsLLSD[api.chain] - /** LP Community Vaults */ - const LPVaults = CommunityVaultsLP[api.chain] - - return api.erc4626Sum({ calls: LLSDs.concat(LPVaults), isOG4626: true, }) -} - -module.exports = { - methodology: "For Hyperstaking, an onchain method calculates collateral + balance - debt. For LP, we can just calculate the value of LP tokens held in the vault" -} - -Object.keys(CommunityVaultsLP).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/definix.js b/projects/definix.js deleted file mode 100644 index 02fd19502f9..00000000000 --- a/projects/definix.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') - -module.exports = { - bsc: { - tvl: getUniTVL({ factory: '0x43eBb0cb9bD53A3Ed928Dd662095aCE1cef92D19', useDefaultCoreAssets: true, }), - }, - klaytn: { - tvl: getUniTVL({ factory: '0xdee3df2560bceb55d3d7ef12f76dcb01785e6b29', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/defiplaza.js b/projects/defiplaza.js deleted file mode 100644 index 3da8a98f9a6..00000000000 --- a/projects/defiplaza.js +++ /dev/null @@ -1,44 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('./helper/cache'); - -const { sumTokens, queryAddresses } = require('./helper/chain/radixdlt'); -const { getConfig } = require('./helper/cache'); -const { get } = require('./helper/http'); - -const graphUrl = sdk.graph.modifyEndpoint('4z9FBF12CrfoQJhAkWicqzY2fKYN9QRmuzSsizVXhjKa'); - -module.exports = { - ethereum: { - tvl: async (api) => { - const { pools } = await cachedGraphQuery('defiplaza-ethereum', graphUrl, '{ pools { id tokens { id } }}'); - const ownerTokens = pools.map((pool) => [pool.tokens.map((token) => token.id), pool.id]); - return api.sumTokens({ ownerTokens }); - }, - }, - radixdlt: { - tvl: async (api) => { - const pools = await getConfig('defiplaza-radixdlt', null, { - fetcher: async () => { - let items = []; - let cursor = 0; - do { - const { data, next_cursor } = await get(`https://radix.defiplaza.net/api/pairs?cursor=${cursor}&limit=100`); - items.push(...data); - sdk.log(`Fetched ${items.length} pools`, data.length, next_cursor); - cursor = next_cursor; - } while (items.length % 100 === 0 && cursor !== 0); - - return items; - } - }); - const data = await queryAddresses({ addresses: pools.map((i) => i.address) }); - const owners = []; - data.forEach((c) => { - owners.push(c.details.state.fields.find((i) => i.field_name === 'base_pool').value); - owners.push(c.details.state.fields.find((i) => i.field_name === 'quote_pool').value); - }); - return sumTokens({ owners, api }); - }, - }, - timetravel: false, -}; \ No newline at end of file diff --git a/projects/defirex/index.js b/projects/defirex/index.js deleted file mode 100644 index 07f22d27331..00000000000 --- a/projects/defirex/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - ownerTokens: [ - { - tokens: [nullAddress, ADDRESSES.ethereum.USDT /*USDT*/, ADDRESSES.ethereum.DAI/*DAI*/], - holders: '0xb942ca22e0eb0f2524F53f999aE33fD3B2D58E3E', // Strategy controller contract - }, - { - tokens: ['0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'/*cDAI*/, '0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5'/*cETH*/], - holders: '0x0BCbAb2FeCC30B7341132B4Ebb36d352E035f1bD', // Wallet strategy contract with user funds deposited in Compound - }, - { - tokens: [ADDRESSES.ethereum.DAI /*DAI*/], - holders: '0x65D4853d663CeE114A0aA1c946E95479C53e78c2', // user rewards in DAI token - }].map(i => [i.tokens, i.holders]) - }), - } -} \ No newline at end of file diff --git a/projects/defisaver.js b/projects/defisaver.js deleted file mode 100644 index 8e9bb033bc9..00000000000 --- a/projects/defisaver.js +++ /dev/null @@ -1,31 +0,0 @@ -async function tvl(api) { - const block = await api.getBlock(); - const chainId = api.chainId; - - // Endpoint returns data calculated by these two packages: - // - // 1. https://github.com/defisaver/automation-sdk - // 2. https://github.com/defisaver/defisaver-positions-sdk/ - // - // By getting subscription data from the first package you can calculate balances for each position using `get${protocol_name_here}AccountBalances` method from the second package - - const response = await fetch(`https://stats.defisaver.com/api/automation/tvl/per-asset?chainId=${chainId}&block=${block - 10000}`); - const data = await response.json(); - - if (response.status !== 200) - throw new Error(data.message || 'Error not handled'); - - Object.entries(data.balances).forEach(([token, balance]) => { - api.add(token, +balance) - }) -} - -module.exports = { - doublecounted: true, - timetravel: false, // because we do block - 10k, remove that to refill - methodology: 'TVL accounts for all assets deposited into the automated strategies.', - ethereum: { tvl }, - arbitrum: { tvl }, - optimism: { tvl }, - base: { tvl }, -}; diff --git a/projects/defituna.js b/projects/defituna.js deleted file mode 100644 index 2d56986e41f..00000000000 --- a/projects/defituna.js +++ /dev/null @@ -1,78 +0,0 @@ -const { getProvider, sumTokens2 } = require("./helper/solana"); -const { Program } = require("@coral-xyz/anchor"); - -// DefiTuna AMM is a concentrated liquidity AMM that supports limit orders at the smart contract level. -// DefiTuna Liquidity uses it to provide leveraged liquidity. -// To calculate TVL, all AMM pools are iterated over, and for each pool the two vaults are taken and -// the sum of the assets held in these vaults is computed. -async function tvl(api) { - const provider = getProvider(api.chain); - const program = new Program(fusionammIDL, provider); - const pools = await program.account["fusionPool"].all(); - const tokenAccounts = pools - .map(({ account }) => [account.tokenVaultA, account.tokenVaultB]) - .flat(); - return sumTokens2({ tokenAccounts, api }); -} - -module.exports = { - timetravel: false, - solana: { tvl }, - methodology: "The TVL is calculated by aggregating the balances of all token vaults across every DefiTuna AMM pool", - start: "2025-06-03", -}; - -const fusionammIDL = { - address: "fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9", - metadata: { - name: "fusionamm", - version: "1.0.11", - spec: "0.1.0", - }, - instructions: [], - accounts: [ - { - name: "FusionPool", - discriminator: [254, 204, 207, 98, 25, 181, 29, 67], - }, - ], - errors: [], - types: [ - { - name: "FusionPool", - type: { - kind: "struct", - fields: [ - { name: "bump", type: { array: ["u8", 1] } }, - { name: "version", type: "u16" }, - { name: "token_mint_a", type: "pubkey" }, - { name: "token_mint_b", type: "pubkey" }, - { name: "token_vault_a", type: "pubkey" }, - { name: "token_vault_b", type: "pubkey" }, - { name: "tick_spacing", type: "u16" }, - { name: "tick_spacing_seed", type: { array: ["u8", 2] } }, - { name: "fee_rate", type: "u16" }, - { name: "protocol_fee_rate", type: "u16" }, - { name: "clp_reward_rate", type: "u16" }, - { name: "order_protocol_fee_rate", type: "u16" }, - { name: "liquidity", type: "u128" }, - { name: "sqrt_price", type: "u128" }, - { name: "tick_current_index", type: "i32" }, - { name: "protocol_fee_owed_a", type: "u64" }, - { name: "protocol_fee_owed_b", type: "u64" }, - { name: "fee_growth_global_a", type: "u128" }, - { name: "fee_growth_global_b", type: "u128" }, - { name: "orders_total_amount_a", type: "u64" }, - { name: "orders_total_amount_b", type: "u64" }, - { name: "orders_filled_amount_a", type: "u64" }, - { name: "orders_filled_amount_b", type: "u64" }, - { name: "olp_fee_owed_a", type: "u64" }, - { name: "olp_fee_owed_b", type: "u64" }, - { name: "ma_sqrt_price", type: "u128" }, - { name: "last_swap_timestamp", type: "u64" }, - { name: "reserved", type: { array: ["u8", 116] } }, - ], - }, - }, - ], -}; diff --git a/projects/defituna_lending.js b/projects/defituna_lending.js deleted file mode 100644 index c09af369672..00000000000 --- a/projects/defituna_lending.js +++ /dev/null @@ -1,155 +0,0 @@ -const { getProvider, getAssociatedTokenAddress, sumTokens2 } = require("./helper/solana"); -const { Program } = require("@coral-xyz/anchor"); - -async function getAccountsInBatches(connection, pubkeys, batchSize = 100) { - const result = []; - for (let i = 0; i < pubkeys.length; i += batchSize) { - const batch = pubkeys.slice(i, i + batchSize); - const infos = await connection.getMultipleAccountsInfo(batch); - result.push(...infos); - } - return result; -} - -// DefiTuna Lending is used to provide leveraged liquidity in DefiTuna Liquidity. -// TVL is calculated as the sum of the non-borrowed assets in the vaults. -// Borrowed amounts are derived from the values recorded in the vaults data. -async function tvl(api) { - const provider = getProvider(api.chain); - const program = new Program(tunaIDL, provider); - const vaults = await program.account["vault"].all(); - - // Available funds are held in token accounts whose ATA addresses are derived from the mint, - // the vault’s public key, and the mint program’s public key - const mints = vaults.map((vault) => vault.account.mint); - const mintAccounts = await getAccountsInBatches(provider.connection, mints); - // mintPrograms is an array of either TOKEN_PROGRAM_ID or TOKEN_2022_PROGRAM_ID - const mintPrograms = mintAccounts.map((account) => account.owner); - - // Compute ATA addresses for all vaults - const tokenAccounts = vaults.map((vault, i) => - getAssociatedTokenAddress( - vault.account.mint, - vault.publicKey, - mintPrograms[i] - ) - ); - - return sumTokens2({ tokenAccounts, api }); -} - -// Borrowed amount is taken from the borrowedFunds values stored in the vaults account data. -async function borrowed(api) { - const provider = getProvider(api.chain); - const program = new Program(tunaIDL, provider); - const vaults = await program.account["vault"].all(); - vaults.forEach((vault) => - api.add(vault.account.mint.toBase58(), vault.account.borrowedFunds) - ); -} - -module.exports = { - timetravel: false, - solana: { tvl, borrowed }, - methodology: "TVL is calculated based on the amount of deposited tokens.", - start: "2024-11-29", -}; - -const tunaIDL = { - address: "tuna4uSQZncNeeiAMKbstuxA9CUkHH6HmC64wgmnogD", - metadata: { - name: "tuna", - version: "3.1.3", - spec: "0.1.0", - description: "DefiTuna", - }, - instructions: [], - accounts: [ - { name: "Vault", discriminator: [211, 8, 232, 43, 2, 152, 117, 119] }, - ], - errors: [], - types: [ - { - name: "Vault", - type: { - kind: "struct", - fields: [ - { name: "version", docs: ["Struct version"], type: "u16" }, - { - name: "bump", - docs: ["Bump seed for the vault account"], - type: { array: ["u8", 1] }, - }, - { - name: "mint", - docs: ["The mint of the token that this vault holds"], - type: "pubkey", - }, - { - name: "deposited_funds", - docs: [ - "The amount of funds deposited in the vault - takes into account accrued interest", - ], - type: "u64", - }, - { - name: "deposited_shares", - docs: ["The amount of shares deposited in the vault"], - type: "u64", - }, - { - name: "borrowed_funds", - docs: [ - "The amount of funds borrowed from the vault - takes into account accrued interest", - ], - type: "u64", - }, - { - name: "borrowed_shares", - docs: ["The amount of shares borrowed from the vault"], - type: "u64", - }, - { - name: "unpaid_debt_shares", - docs: [ - "Bad dept may appear on a position liquidation if not enough funds to repay the debt to a lending pool.", - ], - type: "u64", - }, - { - name: "interest_rate", - docs: [ - "The interest rate of the vault per seconds. (1<<60) / 31536000 = 1152921504606846976 / 31536000 = 100% annually.", - ], - type: "u64", - }, - { - name: "last_update_timestamp", - docs: ["The last time the vault was updated."], - type: "u64", - }, - { - name: "supply_limit", - docs: ["The maximum allowed supply for this vault."], - type: "u64", - }, - { - name: "pyth_oracle_price_update", - docs: ["Pyth oracle price update account."], - type: "pubkey", - }, - { - name: "pyth_oracle_feed_id", - docs: ["Pyth oracle price feed id."], - type: "pubkey", - }, - { - name: "reserved", - docs: ["Reserved"], - type: { array: ["u8", 184] }, - }, - ], - }, - }, - ], -}; diff --git a/projects/defituna_liquidity.js b/projects/defituna_liquidity.js deleted file mode 100644 index 86e7e39e785..00000000000 --- a/projects/defituna_liquidity.js +++ /dev/null @@ -1,461 +0,0 @@ -const { Program } = require("@coral-xyz/anchor"); -const { PublicKey } = require("@solana/web3.js"); -const { getProvider } = require("./helper/solana"); -const { addUniV3LikePosition } = require("./helper/unwrapLPs"); - -// DefiTuna Liquidity allows adding liquidity to both DefiTuna’s own pools -// and to Orca pools. Unlike standard liquidity provision, DefiTuna enables -// increasing the size of a position using borrowed funds. -// To calculate TVL, all open positions are taken into account, and the amount -// of funds locked in them is computed. Since both types of pools are concentrated -// liquidity pools, addUniV3LikePosition is used. -async function tvl(api) { - // We need DefiTuna, DefiTuna AMM (aka Fusion) and Orca Whirlpool programs. - // AMMs are required to get current tick position only. - const provider = getProvider(api.chain); - const tunaProgram = new Program(tunaIDL, provider); - const fusionProgram = new Program(fusionIDL, provider); - const orcaProgram = new Program(whirlpoolIDL, provider); - - // Requesting all open positions - const positions = await tunaProgram.account["tunaLpPosition"].all(); - const openPositions = positions.filter( - (pos) => Object.keys(pos.account.state)[0] === "normal" - ); - - // Filtering only Fusion pools addresses - const fusionPoolsAddr = openPositions - .filter((pos) => Object.keys(pos.account.marketMaker)[0] === "fusion") - .map((pos) => pos.account.pool.toString()); - // Getting unique addresses - const fusionPoolsAddrUnique = [...new Set(fusionPoolsAddr)].map( - (addr) => new PublicKey(addr) - ); - // Requesting pool accounts - const fusionPools = await fusionProgram.account["fusionPool"].fetchMultiple( - fusionPoolsAddrUnique - ); - // Creating map: address => pool state - const fusionPoolsMap = Object.fromEntries( - fusionPoolsAddrUnique.map((pubkey, i) => [ - pubkey.toString(), - fusionPools[i], - ]) - ); - - // Same for Orca - const orcaPoolsAddr = openPositions - .filter((pos) => Object.keys(pos.account.marketMaker)[0] === "orca") - .map((pos) => pos.account.pool.toString()); - const orcaPoolsAddrUnique = [...new Set(orcaPoolsAddr)].map( - (addr) => new PublicKey(addr) - ); - const orcaPools = await orcaProgram.account["whirlpool"].fetchMultiple( - orcaPoolsAddrUnique - ); - const orcaPoolsMap = Object.fromEntries( - orcaPoolsAddrUnique.map((pubkey, i) => [pubkey.toString(), orcaPools[i]]) - ); - - // For each position - for (const position of openPositions) { - const pool = position.account.pool.toString(); - - // Get current tick from pool account state - const tickCurrentIndex = Object.hasOwn(fusionPoolsMap, pool) - ? fusionPoolsMap[pool].tickCurrentIndex - : orcaPoolsMap[pool].tickCurrentIndex; - - // Add concentrated liquidity position to TVL - addUniV3LikePosition({ - api, - tickLower: position.account.tickLowerIndex, - tickUpper: position.account.tickUpperIndex, - tick: tickCurrentIndex, - liquidity: position.account.liquidity, - token0: position.account.mintA.toString(), - token1: position.account.mintB.toString(), - }); - } -} - -module.exports = { - timetravel: false, - solana: { tvl }, - methodology: "TVL is calculated by summing up the liquidity of all open positions.", - start: "2024-11-29", - hallmarks: [ - [1753833600, 'TUNA token launched'], - ], -}; - -// DefiTuna IDL (TunaLpPosition account only) -const tunaIDL = { - address: "tuna4uSQZncNeeiAMKbstuxA9CUkHH6HmC64wgmnogD", - metadata: { - name: "tuna", - version: "3.0.0", - spec: "0.1.0", - description: "DefiTuna", - }, - instructions: [], - accounts: [ - { - name: "TunaLpPosition", - discriminator: [76, 197, 161, 51, 232, 15, 137, 220], - }, - ], - errors: [], - types: [ - { - name: "TunaLpPosition", - type: { - kind: "struct", - fields: [ - { name: "version", docs: ["Struct version"], type: "u16" }, - { - name: "bump", - docs: ["Bump seed for the tuna position account"], - type: { array: ["u8", 1] }, - }, - { - name: "authority", - docs: ["The authority address used for managing the position"], - type: "pubkey", - }, - { - name: "pool", - docs: ["Liquidity pool address this position belongs to"], - type: "pubkey", - }, - { - name: "mint_a", - docs: ["The mint address for token A"], - type: "pubkey", - }, - { - name: "mint_b", - docs: ["The mint address for token B"], - type: "pubkey", - }, - { - name: "position_mint", - docs: [ - "The mint address for the position token (minted and used in Orca/Fusion)", - ], - type: "pubkey", - }, - { - name: "liquidity", - docs: ["Total minted liquidity"], - type: "u128", - }, - { - name: "tick_lower_index", - docs: ["Position lower tick"], - type: "i32", - }, - { - name: "tick_upper_index", - docs: ["Position upper tick"], - type: "i32", - }, - { - name: "loan_shares_a", - docs: ["The amount of shares borrowed by user from vault A."], - type: "u64", - }, - { - name: "loan_shares_b", - docs: ["The amount of shares borrowed by user from vault B."], - type: "u64", - }, - { - name: "loan_funds_a", - docs: [ - "The amount of funds borrowed by user from vault A. Doesn't include accrued interest.", - ], - type: "u64", - }, - { - name: "loan_funds_b", - docs: [ - "The amount of funds borrowed by user from vault B. Doesn't include accrued interest.", - ], - type: "u64", - }, - { - name: "leftovers_a", - docs: [ - "The leftovers are funds that couldn't be added to a pool as liquidity. They remain in the position token account.", - ], - type: "u64", - }, - { - name: "leftovers_b", - docs: [ - "The leftovers are funds that couldn't be added to a pool as liquidity. They remain in the position token account.", - ], - type: "u64", - }, - { - name: "tick_entry_index", - docs: [ - "OBSOLETE: Position entry tick index. (For position version <= 6)", - ], - type: "i32", - }, - { - name: "tick_stop_loss_index", - docs: [ - "OBSOLETE: Position stop loss tick index (for position version <= 6).", - ], - type: "i32", - }, - { - name: "tick_take_profit_index", - docs: [ - "OBSOLETE: Position stop loss tick index (for position version <= 6).", - ], - type: "i32", - }, - { - name: "state", - docs: ["Position state: normal, liquidated, closed by limit order"], - type: { defined: { name: "TunaPositionState" } }, - }, - { - name: "unused_1", - docs: [ - "OBSOLETE: Which token to swap collateral to when a limit order is executed. (For position version <= 4)", - ], - type: "u8", - }, - { - name: "compounded_yield_a", - docs: [ - "Yield amount in token A that has already been collected and compounded into the position.", - ], - type: "u64", - }, - { - name: "compounded_yield_b", - docs: [ - "Yield amount in token B that has already been collected and compounded into the position.", - ], - type: "u64", - }, - { - name: "flags", - docs: [ - "Position options.", - "Bits 0..1: Stop loss swap. 0 - no swap, 1 - swap to token A, 2 - swap to token B", - "Bits 2..3: Take profit swap. 0 - no swap, 1 - swap to token A, 2 - swap to token B", - "Bits 4..5: Yield auto compounding. 0 - don't compound, 1 - compound yield, 2 - compound yield with leverage", - ], - type: "u32", - }, - { - name: "market_maker", - docs: ["Market maker (Orca, Fusion)"], - type: { defined: { name: "MarketMaker" } }, - }, - { - name: "entry_sqrt_price", - docs: ["Position entry sqrt price."], - type: "u128", - }, - { - name: "lower_limit_order_sqrt_price", - docs: [ - "Position lower limit order sqrt price (stop loss for a LONG position).", - ], - type: "u128", - }, - { - name: "upper_limit_order_sqrt_price", - docs: [ - "Position upper limit order sqrt price (take profit for a LONG position).", - ], - type: "u128", - }, - { - name: "rebalance_threshold_ticks", - docs: [ - "The position might be re-balanced if the current tick is lower than tick_lower_index or", - "higher than tick_higher_index by a threshold value.", - ], - type: "u32", - }, - { - name: "reserved", - docs: ["Reserved"], - type: { array: ["u8", 9] }, - }, - ], - }, - }, - { - name: "TunaPositionState", - repr: { kind: "rust" }, - type: { - kind: "enum", - variants: [ - { name: "Normal" }, - { name: "Liquidated" }, - { name: "ClosedByLimitOrder" }, - ], - }, - }, - { - name: "MarketMaker", - repr: { kind: "rust" }, - type: { - kind: "enum", - variants: [{ name: "Orca" }, { name: "Fusion" }], - }, - }, - ], -}; - -// DefiTuna AMM aka Fusion AMM IDL (FusionPool account only) -const fusionIDL = { - address: "fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9", - metadata: { name: "fusionamm", version: "1.0.11", spec: "0.1.0" }, - instructions: [], - accounts: [ - { - name: "FusionPool", - discriminator: [254, 204, 207, 98, 25, 181, 29, 67], - }, - ], - errors: [], - types: [ - { - name: "FusionPool", - type: { - kind: "struct", - fields: [ - { name: "bump", type: { array: ["u8", 1] } }, - { name: "version", type: "u16" }, - { name: "token_mint_a", type: "pubkey" }, - { name: "token_mint_b", type: "pubkey" }, - { name: "token_vault_a", type: "pubkey" }, - { name: "token_vault_b", type: "pubkey" }, - { name: "tick_spacing", type: "u16" }, - { name: "tick_spacing_seed", type: { array: ["u8", 2] } }, - { name: "fee_rate", type: "u16" }, - { name: "protocol_fee_rate", type: "u16" }, - { name: "clp_reward_rate", type: "u16" }, - { name: "order_protocol_fee_rate", type: "u16" }, - { name: "liquidity", type: "u128" }, - { name: "sqrt_price", type: "u128" }, - { name: "tick_current_index", type: "i32" }, - { name: "protocol_fee_owed_a", type: "u64" }, - { name: "protocol_fee_owed_b", type: "u64" }, - { name: "fee_growth_global_a", type: "u128" }, - { name: "fee_growth_global_b", type: "u128" }, - { name: "orders_total_amount_a", type: "u64" }, - { name: "orders_total_amount_b", type: "u64" }, - { name: "orders_filled_amount_a", type: "u64" }, - { name: "orders_filled_amount_b", type: "u64" }, - { name: "olp_fee_owed_a", type: "u64" }, - { name: "olp_fee_owed_b", type: "u64" }, - { name: "ma_sqrt_price", type: "u128" }, - { name: "last_swap_timestamp", type: "u64" }, - { name: "reserved", type: { array: ["u8", 116] } }, - ], - }, - }, - ], -}; - -// Orca Whirlpool IDL (Whirlpool account only) -const whirlpoolIDL = { - address: "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc", - metadata: { name: "whirlpool", version: "0.3.6", spec: "0.1.0" }, - instructions: [], - accounts: [ - { - name: "Whirlpool", - discriminator: [63, 149, 209, 12, 225, 128, 99, 9], - }, - ], - errors: [], - types: [ - { - name: "Whirlpool", - type: { - kind: "struct", - fields: [ - { name: "whirlpools_config", type: "pubkey" }, - { name: "whirlpool_bump", type: { array: ["u8", 1] } }, - { name: "tick_spacing", type: "u16" }, - { name: "fee_tier_index_seed", type: { array: ["u8", 2] } }, - { name: "fee_rate", type: "u16" }, - { name: "protocol_fee_rate", type: "u16" }, - { name: "liquidity", type: "u128" }, - { name: "sqrt_price", type: "u128" }, - { name: "tick_current_index", type: "i32" }, - { name: "protocol_fee_owed_a", type: "u64" }, - { name: "protocol_fee_owed_b", type: "u64" }, - { name: "token_mint_a", type: "pubkey" }, - { name: "token_vault_a", type: "pubkey" }, - { name: "fee_growth_global_a", type: "u128" }, - { name: "token_mint_b", type: "pubkey" }, - { name: "token_vault_b", type: "pubkey" }, - { name: "fee_growth_global_b", type: "u128" }, - { name: "reward_last_updated_timestamp", type: "u64" }, - { - name: "reward_infos", - type: { - array: [{ defined: { name: "WhirlpoolRewardInfo" } }, 3], - }, - }, - ], - }, - }, - { - name: "WhirlpoolRewardInfo", - docs: [ - "Stores the state relevant for tracking liquidity mining rewards at the `Whirlpool` level.", - "These values are used in conjunction with `PositionRewardInfo`, `Tick.reward_growths_outside`,", - "and `Whirlpool.reward_last_updated_timestamp` to determine how many rewards are earned by open", - "positions.", - ], - type: { - kind: "struct", - fields: [ - { name: "mint", docs: ["Reward token mint."], type: "pubkey" }, - { - name: "vault", - docs: ["Reward vault token account."], - type: "pubkey", - }, - { - name: "authority", - docs: [ - "Authority account that has permission to initialize the reward and set emissions.", - ], - type: "pubkey", - }, - { - name: "emissions_per_second_x64", - docs: [ - "Q64.64 number that indicates how many tokens per second are earned per unit of liquidity.", - ], - type: "u128", - }, - { - name: "growth_global_x64", - docs: [ - "Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward", - "emissions were turned on.", - ], - type: "u128", - }, - ], - }, - }, - ], -}; diff --git a/projects/defive-v2/index.js b/projects/defive-v2/index.js deleted file mode 100644 index 6ee401c9b83..00000000000 --- a/projects/defive-v2/index.js +++ /dev/null @@ -1,23 +0,0 @@ -// Sonic Network Addresses -const factory = '0x47524ca6578E172878aBf6fD6f3E1Cd106c551e6'; // Replace with DeFive's factory contract -const fiveToken = '0xb0695ce12c56AAe40894235e2d1888D0b62Dd110'; // FIVE token address -const masterFarmer = '0x4aDe5608127594CD9eA131f0826AEA02FE517461'; // MasterFarmer contract on Sonic - - -// Fetch **staking** (Governance-locked FIVE tokens) -async function staking(api) { - const totalLocked = await api.call({ - target: masterFarmer, - abi: 'uint256:totalLockedAmount', - }); - - api.add(fiveToken, totalLocked) -} - - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'sonic': factory -}) - -module.exports.sonic.staking = staking \ No newline at end of file diff --git a/projects/defiverse/index.js b/projects/defiverse/index.js deleted file mode 100644 index 944869a75b4..00000000000 --- a/projects/defiverse/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const VAULT_CONTRACT = "0x2FA699664752B34E90A414A42D62D7A8b2702B85"; -const TOKENS = [ - ADDRESSES.defiverse.USDC, - ADDRESSES.base.DAI, - ADDRESSES.defiverse.ETH, - ADDRESSES.defiverse.OAS, -]; - -async function tvl(api) { - const tokenAddesses = TOKENS.map((x) => x.address); - return sumTokens2({ api, owner: VAULT_CONTRACT, tokens: TOKENS }); -} - -module.exports = { - defiverse: { - tvl, - }, -}; diff --git a/projects/defiyieldprotocol/index.js b/projects/defiyieldprotocol/index.js deleted file mode 100644 index ce1adc4572f..00000000000 --- a/projects/defiyieldprotocol/index.js +++ /dev/null @@ -1,130 +0,0 @@ -const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') - -const contractFarms = { - ethereum: [ - "0xa7d6F5fa9b0be0e98b3b40E6aC884e53F2F9460e", - "0x0b0A544AE6131801522E3aC1FBAc6D311094c94c", - "0x16cAaD63BDFC3Ec4A2850336B28efE17e802b896", - "0x512FF8739d39e55d75d80046921E7dE20c3e9BFf", - "0xeF71DE5Cb40f7985FEb92AA49D8e3E84063Af3BB", - "0x8B0e324EEdE360CaB670a6AD12940736d74f701e", - "0x78e2dA2eda6dF49BaE46E3B51528BAF5c106e654", - "0x350F3fE979bfad4766298713c83b387C2D2D7a7a", - "0x2b5D7a865A3888836d15d69dCCBad682663DCDbb", - "0xa52250f98293c17C894d58cf4f78c925dC8955d0", - "0x924BECC8F4059987E4bc4B741B7C354FF52c25e4", - "0xbE528593781988974D83C2655CBA4c45FC75c033", - "0x4a76Fc15D3fbf3855127eC5DA8AAf02DE7ca06b3", - "0xF4abc60a08B546fA879508F4261eb4400B55099D", - "0x13F421Aa823f7D90730812a33F8Cac8656E47dfa", - "0x86690BbE7a9683A8bAd4812C2e816fd17bC9715C", - "0x7Fc2174670d672AD7f666aF0704C2D961EF32c73", - "0x036e336eA3ac2E255124CF775C4FDab94b2C42e4", - "0x0A32749D95217b7Ee50127E24711c97849b70C6a", - "0x82df1450eFD6b504EE069F5e4548F2D5Cb229880", - "0xe5262f38bf13410a79149cb40429f8dc5e830542" - ], - bsc: [ - "0x8a607e099e835bdbc4a606acb600ef475414f450", - "0x34dd0d25fa2e3b220d1eb67460c45e586c61c2bb", - "0xb07c67b65e6916ba87b6e3fa245aa18f77b4413e", - "0x52adfbb5bc9f9fee825bd56feb11f1fc90e0b47e", - "0xb4338fc62b1de93f63bfedb9fd9bac455d50a424", - "0x2c1411d4f1647b88a7b46c838a3760f925bac83b", - "0x2c51df297a2aa972a45ed52110afd24591c6f302", - "0xd7180d6fea393158d42d0d0cd66ab93048f581e3", - "0x111ae4ca424036d09b4e0fc9f1de5e6dc90d586b", - "0x7637fa253180556ba486d2fa5d2bb328eb0aa7ca", - "0x2f3c4a08dad0f8a56ede3961ab654020534b8a8c", - "0x417538f319afddd351f33222592b60f985475a21", - "0x350f3fe979bfad4766298713c83b387c2d2d7a7a", - "0xf13aDbEb27ea9d9469D95e925e56a1CF79c06E90", - "0xaF411BF994dA1435A3150B874395B86376C5f2d5", - "0x9af074cE714FE1Eb32448052a38D274E93C5dc28", - "0xDBfb96e2899d52B469C1a1C35eD71fBBa228d2cC", - "0xc794cDb8D6aC5eB42d5ABa9c1E641ae17c239c8c", - "0x23609B1f5274160564e4afC5eB9329A8Bf81c744", - "0x264922696b9972687522b6e98Bf78A0430E2163C", - "0x9DF0A645BeB6F7aDFaDC56f3689E79405337EFE2", - "0xbd574278fEbad04b7A0694C37DeF4f2ecFa9354A", - "0x537DC4fee298Ea79A7F65676735415f1E2882F92", - "0x219717BF0bC33b2764A6c1A772F75305458BDA3d", - "0xD1151a2434931f34bcFA6c27639b67C1A23D93Af", - "0xed869Ba773c3F1A1adCC87930Ca36eE2dC73435d", - "0x415B1624710296717FA96cAD84F53454E8F02D18", - ], - avax: [ - "0x499c588146443235357e9c630a66d6fe0250caa1", - "0xd8af0591be4fba56e3634c992b7fe4ff0a90b584", - "0xbebe1fe1444a50ac6ee95ea25ba80adf5ac7322c", - "0x79be220ab2dfcc2f140b59a97bfe6751ed1579b0", - "0x4c7e0cbb0276a5e963266e6b9f34db73a1cb73f3" - ] -} - -const dyp = "0x961C8c0B1aaD0c0b10a51FeF6a867E3091BCef17" - -const lps = { - ethereum: [ - "0xba7872534a6c9097d805d8bee97e030f4e372e54", - "0x44b77e9ce8a20160290fcbaa44196744f354c1b7", - "0xabd9c284116b2e757e3d4f6e36c5050aead24e0c", - "0x76911e11fddb742d75b83c9e1f611f48f19234e4", - ], - bsc: [ - "0x2fcf1b0d83f83135b6e5e2e231e07ae89c235f68", - "0x87c546525cf48f28d73ea218c625d6f748721717", - "0xc7a4d04699a9539d33e86ce746e88553149c8528", - "0x1bC61d08A300892e784eD37b2d0E63C85D1d57fb" - ], - avax: [ - "0x497070e8b6C55fD283D8B259a6971261E2021C01" - ] -} - -module.exports = { - start: '2021-04-29', // Apr-28-2021 23:58:44 PM +UTC - ethereum: { - tvl: sumTokensExport({ - tokens: [ - nullAddress, - '0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5', // cETH Token - '0xccF4429DB6322D5C611ee964527D42E5d685DD6a', // cWBTC Token - '0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9', // cUSDT Token - '0x39AA39c021dfbaE8faC545936693aC917d5E7563', // cUSDC Token - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643', // cDAI Token - ], - owners: [ - '0x01de5bCe5C5Ee4F92e8f4183f6F4E4f12f9a86cd', // cETH Vault 3 Days Lock - '0x3e488684c40D63Ff2b9963DFBb805Bbb3Da9b1c6', // cETH Vault 30 Days Lock - '0x480c83Be2694BFB91F40d951424330c9123b9066', // cETH Vault 60 Days Lock - '0xdC68450BfE4E16d74B20c44DdA83662cF2F5F0c0', // cETH Vault 90 Days Lock - '0xe5c5a452A0f7B2d5266010Bf167A7Ee2eDF54533', // cWBTC Vault 3 Days Lock - '0x8Ae8eC53712017EeB3378Ee112082D57da98E792', // cWBTC Vault 30 Days Lock - '0x2D4b96e3C6176E833c013088aEcC7640af977e20', // cWBTC Vault 60 Days Lock - '0xb95Ec2cB2D61d12c86a05e0c995d007Aec8f2850', // cWBTC Vault 90 Days Lock - '0x18d2a323675BbE1f9d03e273a186Aea8ADf7f5c5', // cUSDT Vault 3 Days Lock - '0xfB55dcc985517d111C65004f0EAabC1f6CE23cF1', // cUSDT Vault 30 Days Lock - '0x8CE610eC56cE3ad3678C426f0Dfc965568Db6DdC', // cUSDT Vault 60 Days Lock - '0x7CCFF41652eD12278E02E18de06d40Aaf5F1769B', // cUSDT Vault 90 Days Lock - '0x94226Ae99C786b2830d27aC6e8fCdb4b0c4cc73a', // cUSDC Vault 3 Days Lock - '0xaaC6814a1aCFE8F7Ea1f718148daC614d5323c85', // cUSDC Vault 30 Days Lock - '0xe19328D2A528B765E30f9BC47faBb81e0f510ea9', // cUSDC Vault 60 Days Lock - '0xE728874B81Bd0b7a9c3505949935e67D0e7136aD', // cUSDC Vault 90 Days Lock - '0x8c1d0FD28b5FEac7f5521d05D53d7E1560A7CBCC', // cDAI Vault 30 Days Lock - '0xF73baaC19eEEB7C4B7Cc211F3eDF88BB9F1d40f9', // cDAI Vault 30 Days Lock - '0x8Fb2c9F8c07FaCf0aF442a1900cD2Cfe1940971B', // cDAI Vault 60 Days Lock - '0x8ad8e5FA0f2781dA3327275049B5469275A1042E', // cDAI Vault 90 Days Lock - ], - }), - - } -} - -Object.keys(contractFarms).forEach(chain => { - const owners = contractFarms[chain] - const tokens = lps[chain] - if (!module.exports[chain]) module.exports[chain] = {} - module.exports[chain].pool2 = sumTokensExport({ tokens, owners, resolveLP: chain === 'bsc' }) - module.exports[chain].staking = sumTokensExport({ tokens: [dyp], owners, }) -}) \ No newline at end of file diff --git a/projects/deflex/index.js b/projects/deflex/index.js deleted file mode 100644 index 40309aa03a5..00000000000 --- a/projects/deflex/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const {searchAccountsAll} = require('../helper/chain/algorand') - -async function tvl(api) { - let escrowAccounts = await searchAccountsAll({appId: 949209670, limit: 1000}) - const assetInIdKey = Buffer.from((new TextEncoder()).encode('asset_in_id')).toString('base64') - const amountInKey = Buffer.from((new TextEncoder()).encode('amount_in')).toString('base64') - escrowAccounts.forEach((account) => { - const localStates = account['apps-local-state'] - localStates.forEach((localState) => { - if (!('key-value' in localState)) { - return - } - let limitOrderState = {} - for (let j = 0; j < localState['key-value'].length; j++) { - const keyValue = localState['key-value'][j] - limitOrderState[keyValue['key']] = keyValue['value'] - } - const assetInId = limitOrderState[assetInIdKey]['uint'] - api.add((assetInId > 0 ? assetInId : 1).toString(), limitOrderState[amountInKey]['uint']) - }) - }) -} - -module.exports = { - timetravel: false, - algorand: { - tvl, - } -} \ No newline at end of file diff --git a/projects/defo/index.js b/projects/defo/index.js deleted file mode 100644 index e373e205297..00000000000 --- a/projects/defo/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x51810698D18a7ba9e73a3D63a4Fe9200C384157A" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl - } -} \ No newline at end of file diff --git a/projects/defrost/index.js b/projects/defrost/index.js deleted file mode 100644 index 86ec30bd8ab..00000000000 --- a/projects/defrost/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); - - -async function tvl(api) { - const balances = await tvlV1(api) - return tvlV2(api, balances) -} - -async function tvlV1(api, balances = {}) { - let vaults = await api.call({ abi: 'address[]:getAllVaults', target: '0xbaa97b771260cf74b52e721ffe0d461512199cf1' }) - const tokensAndOwners = [] - let collateralTokens = await api.multiCall({ abi: 'address:collateralToken', calls: vaults, }) - const updatedData = collateralTokens.reduce((acc, token, i) => { - if (token === nullAddress) tokensAndOwners.push([token, vaults[i]]) - else { - acc.vaults.push(vaults[i]) - acc.tokens.push(token) - } - return acc - }, { tokens: [], vaults: []}) - collateralTokens = updatedData.tokens - vaults = updatedData.vaults - const collateralNames = await api.multiCall({ abi: 'string:name', calls: collateralTokens, }) - const sTokens = [] - const sTokens2 = [] - collateralNames.forEach((name, i) => { - if (name && name.startsWith('Super ')) { - if (name.includes('Benqi')) - sTokens.push(collateralTokens[i]) - else - sTokens2.push(collateralTokens[i]) - } - else - tokensAndOwners.push([collateralTokens[i], vaults[i]]) - }) - const collateralTokens2 = await api.multiCall({ abi: 'address:underlying', calls: sTokens, }) - const collateralTokens3 = await api.multiCall({ abi: 'address:stakeToken', calls: sTokens2, }) - collateralTokens2.forEach((t, i) => tokensAndOwners.push([t, sTokens[i]])) - collateralTokens3.forEach((t, i) => tokensAndOwners.push([t, sTokens2[i]])) - return sumTokens2({ api, balances, tokensAndOwners, }) -} - -async function tvlV2(api, balances = {}) { - const leveragePools = await api.call({ abi: 'function getAllLeveragePool() view returns (address[])', target: '0xdc8c63dfc31325aea8cb37ecec1a760bbb5b43e7' }) - const collateralTokens = await api.multiCall({ abi: 'address:underlying', calls: leveragePools, }) - return sumTokens2({ balances, tokensAndOwners: collateralTokens.map((t, i) => ([t, leveragePools[i]])), api }) -} - -async function staking(api) { - const stk = await api.call({ - target: "0x1e93b54AC156Ac2FC9714B91Fa10f1b65e2daFD9", - abi: "uint256:totalStaked" - }) - return { - "avax:0x47eb6f7525c1aa999fbc9ee92715f5231eb1241d": stk - } -} - - -module.exports = { - doublecounted: true, - avax: { - tvl, - staking - }, - // hallmarks: [ - // ['2022-12-24', 'Both v1 & v2 exploited'], - // ], -}; diff --git a/projects/defusion/index.js b/projects/defusion/index.js deleted file mode 100644 index ecd1cb2f071..00000000000 --- a/projects/defusion/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(api) { - const supply = await api.call({ abi: 'erc20:totalSupply', target: '0xCdde1f5D971A369eB952192F9a5C367f33a0A891'}) - api.add(ADDRESSES.tomochain.TOMO, supply) -} - -module.exports.tomochain = { - tvl -} diff --git a/projects/defx/index.js b/projects/defx/index.js deleted file mode 100644 index d278369bf30..00000000000 --- a/projects/defx/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { sumTokens2 } = require("../helper/solana"); - -// DefX contract addresses for each chain -const DEFX_CONTRACTS = { - arbitrum: '0x091486F9427cf07942fa17Ad7194BE3feaDfa46d', - ethereum: '0xeaeF42356f5893e1043B38b050d6ED6a0231e8B0', - base: '0x1C0eaa2e6D6a959D510Bb7f4E9D112A66cdAB8E1', - polygon: '0x1C0eaa2e6D6a959D510Bb7f4E9D112A66cdAB8E1', - bsc: '0x73E9f16a6c7b9B838f94d9aB87d623cf35C7f133', - solana: '5fr8JvWwjBPFJcSoUMMAZqKWk7zk6fCC43aWD8RukJH6' -} - - -const CHAIN_CONFIGS = { - ethereum: { - tokens: [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDe, - ADDRESSES.ethereum.sUSDe, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.cbBTC, - ADDRESSES.ethereum.LBTC, - ADDRESSES.ethereum.POL, - ADDRESSES.ethereum.BUSD, - ], - contract: DEFX_CONTRACTS.ethereum - }, - arbitrum: { - tokens: [ - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.USDe, - ADDRESSES.arbitrum.sUSDe, - ], - contract: DEFX_CONTRACTS.arbitrum - }, - base: { - tokens: [ - ADDRESSES.base.USDC, - ADDRESSES.base.WETH, - ADDRESSES.base.USDT, - ADDRESSES.base.cbBTC, - ], - contract: DEFX_CONTRACTS.base - }, - polygon: { - tokens: [ - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDC_CIRCLE, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.WETH, - ADDRESSES.polygon.WBTC, - ADDRESSES.polygon.WMATIC, - ], - contract: DEFX_CONTRACTS.polygon - }, - bsc: { - tokens: [ - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.ETH - ], - contract: DEFX_CONTRACTS.bsc - }, - solana: { - tokens: [ - ADDRESSES.solana.USDC, - ADDRESSES.solana.SOL, - ADDRESSES.solana.USDT - ], - contract: DEFX_CONTRACTS.solana - } - -} - -// Create TVL function for each EVM chain -function createEvmTvl(chain) { - const config = CHAIN_CONFIGS[chain]; - if (!config) return null; - - return sumTokensExport({ - tokensAndOwners: config.tokens.map(token => [token, config.contract]) - }); -} - -function createSolanaTvl(chain) { - const config = CHAIN_CONFIGS[chain]; - if (!config) return null; - - return async (api) => { - return sumTokens2({ - api, - tokensAndOwners: config.tokens.map(token => [token, config.contract]) - }); - }; -} - -module.exports = { - methodology: "DefX TVL is calculated by summing the value of all supported tokens locked in DefX contracts.", - - // EVM chains - ethereum: { - tvl: createEvmTvl('ethereum') - }, - arbitrum: { - tvl: createEvmTvl('arbitrum') - }, - base: { - tvl: createEvmTvl('base') - }, - polygon: { - tvl: createEvmTvl('polygon') - }, - bsc: { - tvl: createEvmTvl('bsc') - }, - solana: { - tvl: createSolanaTvl('solana') - } -} \ No newline at end of file diff --git a/projects/defyswap/index.js b/projects/defyswap/index.js deleted file mode 100644 index dc6b36cf854..00000000000 --- a/projects/defyswap/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingUnknownPricedLP } = require("../helper/staking.js"); - -const factory = "0xAffdbEAE1ec595cba4C262Bdb52A6083aEc2e2a6"; -const masterchef = "0x53e986884c55c9AEDB7f003583f350EE789505D0"; -const ftm = ADDRESSES.fantom.WFTM; -const dfy = "0x84b0b7718f8480a9eda3133fd385d7edf2b1d1c4"; -const whitelist = [ - dfy, - ADDRESSES.fantom.USDC, - ADDRESSES.fantom.WBTC, -]; - -module.exports = { - misrepresentedTokens: true, - echelon: { - tvl: () => ({}), - }, - fantom: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), - staking: stakingUnknownPricedLP( - masterchef, - dfy, - "fantom", - "0x46c1dccC44c3255A22B8041856cff0dE8f5958D6", - (addr) => `fantom:${addr}` - ), - }, -}; diff --git a/projects/degate/index.js b/projects/degate/index.js deleted file mode 100644 index 9ad22c28c6a..00000000000 --- a/projects/degate/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const DEGATE_DEPOSIT_CONTRACT = '0x54d7ae423edb07282645e740c046b9373970a168'; -const DEGATE_EXCHANGE_CONTRACT = '0x9C07A72177c5A05410cA338823e790876E79D73B'; - -const START_BLOCK = 18552105; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: DEGATE_EXCHANGE_CONTRACT, - eventAbi: 'event TokenRegistered (address token, uint32 tokenId)', - onlyArgs: true, - fromBlock: START_BLOCK, - }) - return api.sumTokens({ tokens: logs.map((log) => log.token), owner: DEGATE_DEPOSIT_CONTRACT, blacklistedTokens: ['0x53C8395465A84955c95159814461466053DedEDE'] }) -} - -module.exports = { - start: '2023-11-12', // Nov-11-2023 11:56:23 PM +UTC - ethereum: { tvl } -} diff --git a/projects/degen-bridge/index.js b/projects/degen-bridge/index.js deleted file mode 100644 index 35b0f02d534..00000000000 --- a/projects/degen-bridge/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - base: { - tvl: sumTokensExport({ - owner: "0xEfEf4558802bF373Ce3307189C79a9cAb0a4Cb9C", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/degen-launchpad/index.js b/projects/degen-launchpad/index.js deleted file mode 100644 index 878f87fac16..00000000000 --- a/projects/degen-launchpad/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -// sonic -const tokens = [ - ADDRESSES.null, // ETH -]; - -const owner = '0xe220E8d200d3e433b8CFa06397275C03994A5123'; - -async function tvl(api) { - // native crypto currency from the launchpad - const nativeBalance = await sumTokens2({ owner, tokens, api}); - - return nativeBalance; -} - -module.exports = { - methodology: 'counts the number of MINT tokens in the Club Bonding contract.', - sonic: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/degenPrime/index.js b/projects/degenPrime/index.js deleted file mode 100644 index 90bd42fee63..00000000000 --- a/projects/degenPrime/index.js +++ /dev/null @@ -1,159 +0,0 @@ -const { ethers } = require("ethers"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk'); -const ADDRESSES = require('../helper/coreAssets.json') - -const getAllOwnedAssetsAbi = "function getAllOwnedAssets() view returns (bytes32[] result)" -const getLoansAbi = "function getLoans(uint256 _from, uint256 _count) view returns (address[] _loans)" -const getPrimeAccountsLengthAbi = 'uint256:getLoansLength'; - -// Aerodrome position ABIs -const getOwnedStakedAerodromeTokenIdsAbi = "function getOwnedStakedAerodromeTokenIds() public view returns (uint256[] memory)" -const getPositionCompositionAbi = "function getPositionCompositionSimplified(uint256 positionId) public view returns (tuple(address token0, address token1, uint256 token0Amount, uint256 token1Amount) positionComposition)" - -const assetToAddressMappingBase = { - "cbBTC": ADDRESSES.base.cbBTC, - "LBTC": "0xecac9c5f704e954931349da37f60e39f515c11c1", - "cbLTC": "0xcb17c9db87b595717c857a08468793f5bab6445f", - "cbDOGE": "0xcbD06E5A2B0C65597161de254AA074E489dEb510", - "cbXRP": "0xcb585250f852C6c6bf90434AB21A00f02833a4af", - "SPX": "0x50da645f148798f68ef2d7db7c1cb22a6819bb2c", - "USDC": ADDRESSES.base.USDC, - "USDT": ADDRESSES.base.USDT, - "USD+": "0xb79dd08ea68a908a97220c76d19a6aa9cbde4376", - "AERO": "0x940181a94A35A4569E4529A3CDfB74e38FD98631", - "ETH": ADDRESSES.optimism.WETH_1, - "GIZA": "0x590830dfdf9a3f68afcdde2694773debdf267774", - "BRETT": "0x532f27101965dd16442E59d40670FaF5eBB142E4", - "SKI": "0x768BE13e1680b5ebE0024C42c896E3dB59ec0149", - "DEGEN": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed", - "TOSHI": "0xAC1Bd2486aAf3B5C0fc3Fd868558b082a531B2B4", - "KEYCAT": "0x9a26F5433671751C3276a065f57e5a02D2817973", - "BASEDPEPE": "0x52b492a33E447Cdb854c7FC19F1e57E8BfA1777D", - "VIRTUAL": "0x0b3e328455c4059EEb9e3f84b5543F74E24e7E1b", - "MOG": "0x2Da56AcB9Ea78330f947bD57C54119Debda7AF71", - "AIXBT": "0x4F9Fd6Be4a90f2620860d680c0d4d5Fb53d1A825", - "KAITO": "0x98d0baa52b2D063E780DE12F615f963Fe8537553", - "ezETH": "0x2416092f143378750bb29b79eD961ab195CcEea5", - "weETH": ADDRESSES.base.weETH, - "EUROC": "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42", - "VVV": "0xacfe6019ed1a7dc6f7b508c02d1b04ec88cc21bf", - "COOKIE": "0xc0041ef357b183448b235a8ea73ce4e4ec8c265f", - "BNKR": "0x22af33fe49fd1fa80c7149773dde5890d3c76f3b", - "ZORA": "0x1111111111166b7fe7bd91427724b487980afc69", - "DINO": "0x85E90a5430AF45776548ADB82eE4cD9E33B08077", - "DRB": "0x3ec2156d4c0a9cbdab4a016633b7bcf6a8d68ea2", - "CLANKER": "0x1bc0c42215582d5a085795f4badbac3ff36d1bcb", -} - -// Base -const USDC_POOL_TUP_CONTRACT = '0x2Fc7641F6A569d0e678C473B95C2Fc56A88aDF75'; -const AERO_POOL_TUP_CONTRACT = '0x4524D39Ca5b32527E7AF6c288Ad3E2871B9f343B'; -const BTC_POOL_TUP_CONTRACT = '0xCA8C954073054551B99EDee4e1F20c3d08778329'; -const ETH_POOL_TUP_CONTRACT = '0x81b0b59C7967479EC5Ce55cF6588bf314C3E4852'; -const BRETT_POOL_TUP_CONTRACT = '0x6c307F792FfDA3f63D467416C9AEdfeE2DD27ECF'; -const KAITO_POOL_TUP_CONTRACT = '0x293E41F1405Dde427B41c0074dee0aC55D064825'; -const DOGE_POOL_TUP_CONTRACT = '0xAf61B10BDB78e31fdbC5Da4e57d60e32aFe468B9'; -const XRP_POOL_TUP_CONTRACT = '0x056076e717332403Bc23B2D4F6D87683ceF582B9'; - -const SMART_LOANS_FACTORY_TUP_BASE = '0x5A6a0e2702cF4603a098C3Df01f3F0DF56115456'; - -/** - * Add Aerodrome LP positions to TVL calculation - * @param {Object} api - api object from sdk - * @param {Array} accounts - array of account addresses - */ -async function addAerodromePositions({ api, accounts }) { - // Get all owned Aerodrome token IDs for each account - const ownedTokenIds = await api.multiCall({ - abi: getOwnedStakedAerodromeTokenIdsAbi, - calls: accounts - }); - - const positionCalls = []; - - // Prepare calls for getPositionCompositionSimplified for each token ID - ownedTokenIds.forEach((tokenIds, accountIndex) => { - const account = accounts[accountIndex]; - tokenIds.forEach(tokenId => { - positionCalls.push({ - target: account, - params: [tokenId] - }); - }); - }); - - // Get position compositions - const positionCompositions = await api.multiCall({ - abi: getPositionCompositionAbi, - calls: positionCalls - }); - - // Add token amounts to balances - positionCompositions.forEach(({ token0, token1, token0Amount, token1Amount }) => { - api.add(token0, token0Amount); - api.add(token1, token1Amount); - }); - - sdk.log(`Added ${positionCalls.length} Aerodrome positions to TVL`); -} - -/** - * TVL for Base - * @param {Object} api - api object from sdk - * @returns {Promise} - TVL object - */ -async function tvlBase(api) { - const tokensAndOwners = [ - [assetToAddressMappingBase.USDC, USDC_POOL_TUP_CONTRACT], - [assetToAddressMappingBase.AERO, AERO_POOL_TUP_CONTRACT], - [assetToAddressMappingBase.BRETT, BRETT_POOL_TUP_CONTRACT], - [assetToAddressMappingBase.cbBTC, BTC_POOL_TUP_CONTRACT], - [assetToAddressMappingBase.ETH, ETH_POOL_TUP_CONTRACT], - [assetToAddressMappingBase.KAITO, KAITO_POOL_TUP_CONTRACT], - [assetToAddressMappingBase.cbDOGE, DOGE_POOL_TUP_CONTRACT], - [assetToAddressMappingBase.cbXRP, XRP_POOL_TUP_CONTRACT] - ] - - let accounts = []; - const numberOfAccounts = await api.call({ abi: getPrimeAccountsLengthAbi, target: SMART_LOANS_FACTORY_TUP_BASE, }); - const batchSize = 500; - let batchIndex = 0; - while (batchIndex * batchSize < numberOfAccounts) { - let batchPrimeAccounts = await api.call({ - abi: getLoansAbi, - target: SMART_LOANS_FACTORY_TUP_BASE, - params: [batchIndex * batchSize, batchSize] - }) - accounts = accounts.concat(batchPrimeAccounts); - batchIndex++; - } - - sdk.log(accounts.length) - - // Add Aerodrome positions to TVL calculation - await addAerodromePositions({ api, accounts }); - - const ownedAssets = await api.multiCall({ abi: getAllOwnedAssetsAbi, calls: accounts }) - accounts.forEach((o, i) => { - ownedAssets[i].forEach(tokenStr => { - tokenStr = ethers.decodeBytes32String(tokenStr) - const token = assetToAddressMappingBase[tokenStr] - if (!token) { - sdk.log('Missing asset mapping for: ' + tokenStr) - return; - } - if (!token) throw new Error('Missing asset mapping for: ' + tokenStr) - tokensAndOwners.push([token, o]) - }) - }) - - return sumTokens2({ api, tokensAndOwners: tokensAndOwners }) -} - -module.exports = { - methodology: 'Counts TVL of DegenPrime\'s lending pools and individual PrimeAccount contracts including Aerodrome LP positions', - base: { - tvl: tvlBase, - }, -} \ No newline at end of file diff --git a/projects/degendex-fi/index.js b/projects/degendex-fi/index.js deleted file mode 100644 index eb7456cdf82..00000000000 --- a/projects/degendex-fi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport( - "degen", - "0x45c1f8AF23Ea55e51927EE9A4d456fa7BCc5F0Fe" -); diff --git a/projects/degenerative/index.js b/projects/degenerative/index.js deleted file mode 100644 index f9a2a8c0545..00000000000 --- a/projects/degenerative/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache') - -const collaterals = { - 'WETH': ADDRESSES.ethereum.WETH, - 'USDC': ADDRESSES.ethereum.USDC -} - -async function tvl(api) { - const assetsRaw = await getConfig('degenerative', 'https://raw.githubusercontent.com/yam-finance/synths-sdk/master/src/assets.json') - const assets = Object.values(assetsRaw).map(b => Object.values(b)).flat().flat() - return api.sumTokens({ tokensAndOwners: assets.map(a => [collaterals[a.collateral], a.emp.address]) }) -} - -module.exports = { - doublecounted: true, // same contracts are used in UMA - ethereum: { - tvl - }, -} diff --git a/projects/degenfund/index.js b/projects/degenfund/index.js deleted file mode 100644 index 60254944649..00000000000 --- a/projects/degenfund/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') - -module.exports = { - methodology: "Calculates the total value of staked DFund tokens in our staker smart contract.", - degen: { - tvl: () => ({}), - staking: tvl - } -} - -async function tvl(api) { - const bal = await api.call({ abi: "uint256:totalDfundStaked", target: '0xe11CD52De12a86400311e0D2884aC9B542eEd05e' }) - api.add('0x0B946D939bb93609Fcce42220180E5C81B642786', bal) - return sumUnknownTokens({ api, lps: ['0x9c0Dd6BA0E2c611585c75F06f024BC8826FdB446'], useDefaultCoreAssets: true }) -} \ No newline at end of file diff --git a/projects/degenhaus/index.js b/projects/degenhaus/index.js deleted file mode 100644 index c6d9ce6e478..00000000000 --- a/projects/degenhaus/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0xA01C3d760738c79e10334408aE59684Aa36B1131' -}, {staking: { fantom: ["0x72A7A3770B4BC999026F3663F1534581E0c59f2a", "0xd948efcc99be419ca9bdace89b2bec31edf13adb"] } }) \ No newline at end of file diff --git a/projects/degenswap/index.js b/projects/degenswap/index.js deleted file mode 100644 index de971747fce..00000000000 --- a/projects/degenswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('degen', '0xA5E57CaB76caa09F66280F9Eb1529ed1059E87ba') \ No newline at end of file diff --git a/projects/degofinance/index.js b/projects/degofinance/index.js deleted file mode 100644 index e9030d5b23f..00000000000 --- a/projects/degofinance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - - -const ethereumContracts = [ - "0x28681d373aF03A0Eb00ACE262c5dad9A0C65F276", - "0x781a0861395Ba245e8254a61e74B0e7cD3Ac8eAf" -]; - -const existingTokens = [ - coreAssets.null, - coreAssets.ethereum.WETH, - coreAssets.ethereum.USDT -]; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: ethereumContracts, tokens: existingTokens }) - } -}; diff --git a/projects/dehive/index.js b/projects/dehive/index.js deleted file mode 100644 index 336a0584499..00000000000 --- a/projects/dehive/index.js +++ /dev/null @@ -1,76 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const config = { - ethereum: { - clusters: ['0x6Bc3F65Fc50E49060e21eD6996be96ee4B404752'], - pool2s: [['0x60c5bf43140d6341bebfe13293567fafbe01d65b', '0x4964B3B599B82C3FdDC56e3A9Ffd77d48c6AF0f0']], - stakings: [['0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A', '0x04595f9010F79422a9b411ef963e4dd1F7107704']], - }, - polygon: { - stakings: [['0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', '0x88cFC1bc9aEb80f6C8f5d310d6C3761c2a646Df7']], - pool2s: [['0xfd0E242c95b271844bf6860D4bC0E3e136bC0f7C', '0xf4feb23531EdBe471a4493D432f8BB29Bf0A3868']], - impulses: ['0xE6E6982fb5dDF4fcc74cCCe4e4eea774E002D17F', '0xf4feb23531EdBe471a4493D432f8BB29Bf0A3868'], - clusters: ['0x4964B3B599B82C3FdDC56e3A9Ffd77d48c6AF0f0', '0x589Ea336092184d9eD74b8263c4eecA73Ed0cE7a'], - }, - bsc: { - stakings: [['0x58759dd469ae5631c42cf8a473992335575b58d7', '0x35f28aA0B2F34eFF17d2830135312ab2a777De36']], - pool2s: [['0x72ba008B631D9FD5a8E8013023CB3c05E19A7CA9', '0xF2e8CD1c40C766FEe73f56607fDffa526Ba8fa6c']], - impulses: ['0xA9c97Ff825dB9dd53056d65aE704031B4959d99a'], - clusters: ['0x0a684421ef48b431803BFd75F38675EAb1e38Ed5'], - }, - xdai: { - stakings: [['0xFbdd194376de19a88118e84E279b977f165d01b8', '0x589Ea336092184d9eD74b8263c4eecA73Ed0cE7a']], - pool2s: [['0x14EE6d20B8167eacb885F4F2F45C3Bf2d4FD06f4', '0xa4E7BE054000603B82B79208aC3eE5428554CaF6']], - impulses: ['0xfa7Ca14a28CD419a69E45e8416cA4FA87457aCE8'], - clusters: ['0xF557B2B73b872E6d2F43826f9D77B7402A363Bc0', '0xA6C090c5572f54d529B0839b8fd2D50a4afB1E6B'], - }, -} - -Object.keys(config).forEach(chain => { - const { clusters, pool2s, stakings, impulses } = config[chain] - - const blacklistedTokens = [] - if (pool2s) pool2s.forEach(p => blacklistedTokens.push(p[0])) - if (stakings) stakings.forEach(s => blacklistedTokens.push(s[0])) - - const blacklistedSet = new Set(blacklistedTokens.map(i => i.toLowerCase())) - - const exportObj = { - tvl: async (api) => { - if (clusters) { - const tokens = await api.multiCall({ abi: 'address[]:getUnderlyings', calls: clusters }) - const ownerTokens = tokens.map((t, i) => [t, clusters[i]]) - await api.sumTokens({ ownerTokens }) - } - - if (impulses) { - for (const impulse of impulses) { - let i = 0 - let length = 5 - let moreTokens = true - do { - const calls = [] - for (let j = 0; j < length; j++) { - calls.push(i + j) - i += length - } - const data = await api.multiCall({ abi: 'function poolInfo(uint256) view returns (address token, uint256 lastReward, uint256 poolSupply, bool paused, address strategy)', calls, target: impulse, permitFailure: true }) - moreTokens = data.some(d => !d) - data.forEach(i => { - if (!i) return; - if (blacklistedSet.has(i.token.toLowerCase())) return; - api.add(i.token, i.poolSupply) - }) - } while (moreTokens) - } - } - } - } - - if (pool2s) - exportObj.pool2 = sumTokensExport({ tokensAndOwners: pool2s, resolveLP: true, }) - - if (stakings) - exportObj.staking = sumTokensExport({ tokensAndOwners: stakings, }) - module.exports[chain] = exportObj -}) diff --git a/projects/delagate-xyz/index.js b/projects/delagate-xyz/index.js deleted file mode 100644 index aaa0b7e4c82..00000000000 --- a/projects/delagate-xyz/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getLogs2, } = require('../helper/cache/getLogs') -const { getUniqueAddresses } = require('../helper/tokenMapping') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const tokens = await getLogs2({ - api, - factory: '0x00000000000000447e69651d841bD8D104Bed493', - fromBlock: 18184587, - eventAbi: 'event DelegateERC721 (address indexed from, address indexed to, address indexed contract, uint256 tokenId, bytes32 rights, bool enable)', - customCacheFunction: ({ cache, logs }) => { - if (!cache.logs) cache.logs = [] - cache.logs.push(...logs.map(i => i.contract)) - cache.logs = getUniqueAddresses(cache.logs) - return cache - }, - }) - return sumTokens2({ owner: '0xc2e257476822377dfb549f001b4cb00103345e66', tokens, permitFailure: true, sumChunkSize: 10 }) -} - -module.exports = { - ethereum: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/delta/index.js b/projects/delta/index.js deleted file mode 100644 index c7a6143220d..00000000000 --- a/projects/delta/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { staking } = require("../helper/staking"); - -const vaultStakingContract = "0x9fE9Bb6B66958f2271C4B0aD23F6E8DDA8C221BE"; -const rebasingContract = "0xfcfC434ee5BfF924222e084a8876Eee74Ea7cfbA"; -const DELTA_WETH_SLP = "0x1498bd576454159Bb81B5Ce532692a8752D163e8"; - -const DELTA = "0x9EA3b5b4EC044b70375236A281986106457b20EF"; - -async function pool2(api) { - const totalSupply_rlp = await api.call({ abi: 'erc20:totalSupply', target: rebasingContract, }) - const balance_slp = await api.call({ abi: 'erc20:balanceOf', target: DELTA_WETH_SLP, params: rebasingContract, }) - const balance_rlp = await api.call({ abi: 'erc20:balanceOf', target: rebasingContract, params: vaultStakingContract, }) - api.add(DELTA_WETH_SLP, balance_slp * balance_rlp / totalSupply_rlp) -} - -module.exports = { - ethereum: { - staking: staking(vaultStakingContract, DELTA), - pool2, - tvl: async () => ({}) - }, - methodology: "Counts liquidty on the Staking and Pool2", -}; diff --git a/projects/deltafi/index.js b/projects/deltafi/index.js deleted file mode 100644 index 480cacd6672..00000000000 --- a/projects/deltafi/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const wemix = ADDRESSES.null; -const wwemixAddr = ADDRESSES.wemix.WWEMIX; - -const dwemixAddr = "0x531e6Abe1ad0c8313ad7c8f7ad96b8e70c56164E"; -const controllerAddr = "0x334f696FE78623861733444d8476C36B0e9CdfC5"; - -async function tvl(api) { - // master vault wemix - const masterVaultWemix = await api.call({ - abi: 'function balanceOf(address) public view returns (uint256 amount)', - target: wwemixAddr, - params: dwemixAddr - }) - // withdrawing wemix - const withdrawingWemix = await api.call({ - abi: 'function wemixInWithdrawing() public view returns (uint256 amount)', - target: dwemixAddr - }) - // strategy vault wemix - const strategyVaultWemix = await api.call({ - abi: 'function totalAssets() public view returns (uint256 amount)', - target: dwemixAddr - }) - // lp wemix - const liquidityInfo = await api.call({ - abi: 'function getLiquidityInfo() public view returns (tuple(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1, int24 poolTickLower, int24 poolTickUpper) memory info)', - target: controllerAddr - }) - const lpWemix = wwemixAddr < dwemixAddr ? liquidityInfo.amount0 : liquidityInfo.amount1; - - // tvl = mvault + withdrawing + svault + lp - api.add(wemix, masterVaultWemix); - api.add(wemix, withdrawingWemix); - api.add(wemix, strategyVaultWemix); - api.add(wemix, lpWemix); -} - -module.exports = { - wemix: { - tvl - }, -}; \ No newline at end of file diff --git a/projects/deltaprime/index.js b/projects/deltaprime/index.js deleted file mode 100644 index a297a8128db..00000000000 --- a/projects/deltaprime/index.js +++ /dev/null @@ -1,187 +0,0 @@ -const { ethers } = require("ethers"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk'); - -const getAllOwnedAssetsAbi = "function getAllOwnedAssets() view returns (bytes32[] result)" -const getLoansAbi = "function getLoans(uint256 _from, uint256 _count) view returns (address[] _loans)" -const getPrimeAccountsLengthAbi = 'uint256:getLoansLength'; -const ggAVAXBalancerBalanceAbi = "function balancerGgAvaxBalance() view returns (uint256)" -const yyAVAXBalancerBalanceAbi = "function balancerYyAvaxBalance() view returns (uint256)" -const sAVAXBalancerBalanceAbi = "function balancerSAvaxBalance() view returns (uint256)" - -const yieldYakWombatAvaxBalanceInWombatAvaxSavaxLP = "function avaxBalanceAvaxSavaxYY() view returns (uint256)" -const yieldYakWombatSAvaxBalanceInWombatAvaxSavaxLP = "function sAvaxBalanceAvaxSavaxYY() view returns (uint256)" -const yieldYakWombatsAvaxBalanceInWombatAvaxGgavaxLP = "function avaxBalanceAvaxGgavaxYY() view returns (uint256)" -const yieldYakWombatsGgavaxBalanceInWombatAvaxGgavaxLP = "function ggAvaxBalanceAvaxGgavaxYY() view returns (uint256)" - -const assetToAddressMappingAvalanche = require('./mappings/assetToAddressMappingAvalanche.json') -const assetToAddressMappingArbitrum = require('./mappings/assetToAddressMappingArbitrum.json') - -// Avalanche -const USDC_POOL_TUP_CONTRACT = '0x8027e004d80274FB320e9b8f882C92196d779CE8'; -const USDT_POOL_TUP_CONTRACT = '0x1b6D7A6044fB68163D8E249Bce86F3eFbb12368e'; -const WAVAX_POOL_TUP_CONTRACT = '0xaa39f39802F8C44e48d4cc42E088C09EDF4daad4'; -const BTC_POOL_TUP_CONTRACT = '0x70e80001bDbeC5b9e932cEe2FEcC8F123c98F738'; -const ETH_POOL_TUP_CONTRACT = '0x2A84c101F3d45610595050a622684d5412bdf510'; - -const SMART_LOANS_FACTORY_TUP_AVALANCHE = '0x3Ea9D480295A73fd2aF95b4D96c2afF88b21B03D'; - -// Arbitrum -const USDC_POOL_TUP_ARBI_CONTRACT = '0x8Ac9Dc27a6174a1CC30873B367A60AcdFAb965cc'; -const ETH_POOL_TUP_ARBI_CONTRACT = '0x788A8324943beb1a7A47B76959E6C1e6B87eD360'; -const BTC_POOL_TUP_ARBI_CONTRACT = '0x0ed7B42B74F039eda928E1AE6F44Eed5EF195Fb5'; -const ARB_POOL_TUP_ARBI_CONTRACT = '0xC629E8889350F1BBBf6eD1955095C2198dDC41c2'; -const DAI_POOL_TUP_ARBI_CONTRACT = '0xFA354E4289db87bEB81034A3ABD6D465328378f1'; - -const SMART_LOANS_FACTORY_TUP_ARBITRUM = '0xFf5e3dDaefF411a1dC6CcE00014e4Bca39265c20'; - -async function tvlAvalanche(api) { - const tokensAndOwners = [ - [assetToAddressMappingAvalanche.USDC, USDC_POOL_TUP_CONTRACT], - [assetToAddressMappingAvalanche.USDT, USDT_POOL_TUP_CONTRACT], - [assetToAddressMappingAvalanche.AVAX, WAVAX_POOL_TUP_CONTRACT], - [assetToAddressMappingAvalanche.BTC, BTC_POOL_TUP_CONTRACT], - [assetToAddressMappingAvalanche.ETH, ETH_POOL_TUP_CONTRACT], - ] - - let accounts = []; - const numberOfAccounts = await api.call({ abi: getPrimeAccountsLengthAbi, target: SMART_LOANS_FACTORY_TUP_AVALANCHE, }); - const batchSize = 500; - let batchIndex = 0; - while (batchIndex * batchSize < numberOfAccounts) { - let batchPrimeAccounts = await api.call({ - abi: getLoansAbi, - target: SMART_LOANS_FACTORY_TUP_AVALANCHE, - params: [batchIndex * batchSize, batchSize] - }) - accounts = accounts.concat(batchPrimeAccounts); - batchIndex++; - } - - sdk.log(accounts.length) - - await addTraderJoeLPs({ api, accounts }) - const ownedAssets = await api.multiCall({ abi: getAllOwnedAssetsAbi, calls: accounts }) - accounts.forEach((o, i) => { - ownedAssets[i].forEach(tokenStr => { - tokenStr = ethers.decodeBytes32String(tokenStr) - const token = assetToAddressMappingAvalanche[tokenStr] - if (!token) { - sdk.log('Missing asset mapping for: ' + tokenStr) - return; - } - if (!token) throw new Error('Missing asset mapping for: ' + tokenStr) - tokensAndOwners.push([token, o]) - }) - }) - - const balances = await sumTokens2({ api, tokensAndOwners: tokensAndOwners }) - - let ggAvaxBalancerBalances = await api.multiCall({ abi: ggAVAXBalancerBalanceAbi, calls: accounts }) - let yyAvaxBalancerBalances = await api.multiCall({ abi: yyAVAXBalancerBalanceAbi, calls: accounts }) - let sAvaxBalancerBalances = await api.multiCall({ abi: sAVAXBalancerBalanceAbi, calls: accounts }) - - let avaxYYWombatAvaxSAvaxLPBalances = await api.multiCall({ abi: yieldYakWombatAvaxBalanceInWombatAvaxSavaxLP, calls: accounts }) - let savaxYYWombatAvaxSAvaxLPBalances = await api.multiCall({ abi: yieldYakWombatSAvaxBalanceInWombatAvaxSavaxLP, calls: accounts }) - let avaxYYWombatAvaxGgavaxLPBalances = await api.multiCall({ abi: yieldYakWombatsAvaxBalanceInWombatAvaxGgavaxLP, calls: accounts }) - let ggAaxYYWombatAvaxGgavaxLPBalances = await api.multiCall({ abi: yieldYakWombatsGgavaxBalanceInWombatAvaxGgavaxLP, calls: accounts }) - - ggAvaxBalancerBalances.forEach(i => sdk.util.sumSingleBalance(balances, assetToAddressMappingAvalanche["BAL_ggAVAX_AVAX"], i, api.chain)) - yyAvaxBalancerBalances.forEach(i => sdk.util.sumSingleBalance(balances, assetToAddressMappingAvalanche["BAL_yyAVAX_AVAX"], i, api.chain)) - sAvaxBalancerBalances.forEach(i => sdk.util.sumSingleBalance(balances, assetToAddressMappingAvalanche["BAL_sAVAX_AVAX"], i, api.chain)) - - avaxYYWombatAvaxSAvaxLPBalances.forEach(i => sdk.util.sumSingleBalance(balances, assetToAddressMappingAvalanche["WOMBAT_sAVAX_AVAX_LP_AVAX"], i, api.chain)) - savaxYYWombatAvaxSAvaxLPBalances.forEach(i => sdk.util.sumSingleBalance(balances, assetToAddressMappingAvalanche["WOMBAT_sAVAX_AVAX_LP_sAVAX"], i, api.chain)) - avaxYYWombatAvaxGgavaxLPBalances.forEach(i => sdk.util.sumSingleBalance(balances, assetToAddressMappingAvalanche["WOMBAT_ggAVAX_AVAX_LP_AVAX"], i, api.chain)) - ggAaxYYWombatAvaxGgavaxLPBalances.forEach(i => sdk.util.sumSingleBalance(balances, assetToAddressMappingAvalanche["WOMBAT_ggAVAX_AVAX_LP_ggAVAX"], i, api.chain)) - - return balances; -} - -async function tvlArbitrum(api) { - const tokensAndOwners = [ - [assetToAddressMappingArbitrum.USDC, USDC_POOL_TUP_ARBI_CONTRACT], - [assetToAddressMappingArbitrum.ETH, ETH_POOL_TUP_ARBI_CONTRACT], - [assetToAddressMappingArbitrum.BTC, BTC_POOL_TUP_ARBI_CONTRACT], - [assetToAddressMappingArbitrum.ARB, ARB_POOL_TUP_ARBI_CONTRACT], - [assetToAddressMappingArbitrum.DAI, DAI_POOL_TUP_ARBI_CONTRACT], - ] - - let accounts = []; - const numberOfAccounts = await api.call({ abi: getPrimeAccountsLengthAbi, target: SMART_LOANS_FACTORY_TUP_ARBITRUM, }); - const batchSize = 500; - let batchIndex = 0; - while (batchIndex * batchSize < numberOfAccounts) { - let batchPrimeAccounts = await api.call({ - abi: getLoansAbi, - target: SMART_LOANS_FACTORY_TUP_ARBITRUM, - params: [batchIndex * batchSize, batchSize] - }) - accounts = accounts.concat(batchPrimeAccounts); - batchIndex++; - } - - sdk.log(accounts.length) - const ownedAssets = await api.multiCall({ abi: getAllOwnedAssetsAbi, calls: accounts, }) - await addTraderJoeLPs({ api, accounts }) - - accounts.forEach((o, i) => { - ownedAssets[i].forEach(tokenStr => { - tokenStr = ethers.decodeBytes32String(tokenStr) - const token = assetToAddressMappingArbitrum[tokenStr] - if (!token) return; - if (!token) { - sdk.log('Missing asset mapping for: ' + tokenStr) - return; - } - if (!token) throw new Error('Missing asset mapping for: ' + tokenStr) - tokensAndOwners.push([token, o]) - }) - }) - - return sumTokens2({ api, tokensAndOwners: tokensAndOwners }); -} - -async function addTraderJoeLPs({ api, accounts }) { - const pairSet = new Set() - const bins = await api.multiCall({ abi: 'function getOwnedTraderJoeV2Bins() public view returns (tuple(address pair, uint24 bin)[])', calls: accounts }) - const calls = [] - bins.forEach((res, i) => { - const account = accounts[i] - res.forEach(({ pair, bin }) => { - pair = pair.toLowerCase() - pairSet.add(pair) - calls.push({ target: pair, bin, account }) - }) - }) - const pairs = [...pairSet] - const tokenXs = await api.multiCall({ abi: 'function getTokenX() view returns (address)', calls: pairs }) - const tokenYs = await api.multiCall({ abi: 'function getTokenY() view returns (address)', calls: pairs }) - const pairInfos = {} - pairs.forEach((pair, i) => { - pairInfos[pair] = { - tokenX: tokenXs[i], - tokenY: tokenYs[i], - } - }) - const bals = await api.multiCall({ abi: 'function balanceOf(address, uint256) view returns (uint256)', calls: calls.map(({ target, account, bin }) => ({ target, params: [account, bin] })) }) - const binBals = await api.multiCall({ abi: 'function getBin(uint24) view returns (uint128 tokenXbal,uint128 tokenYBal)', calls: calls.map(({ target, account, bin }) => ({ target, params: [bin] })) }) - const binSupplies = await api.multiCall({ abi: 'function totalSupply(uint256) view returns (uint256)', calls: calls.map(({ target, account, bin }) => ({ target, params: [bin] })) }) - binBals.forEach(({ tokenXbal, tokenYBal }, i) => { - const { tokenX, tokenY } = pairInfos[calls[i].target] - const ratio = bals[i] / binSupplies[i] - api.add(tokenX, tokenXbal * ratio) - api.add(tokenY, tokenYBal * ratio) - }) - -} - -module.exports = { - methodology: 'Counts TVL of DeltaPrime\'s lending pools and individual PrimeAccount contracts\'', - avax: { - tvl: tvlAvalanche, - }, - arbitrum: { - tvl: tvlArbitrum, - } -} \ No newline at end of file diff --git a/projects/deltaprime/mappings/assetToAddressMappingArbitrum.json b/projects/deltaprime/mappings/assetToAddressMappingArbitrum.json deleted file mode 100644 index 39fef5797e3..00000000000 --- a/projects/deltaprime/mappings/assetToAddressMappingArbitrum.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "ETH": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - "USDC": "0xaf88d065e77c8cc2239327c5edb3a432268e5831", - "USDC.e": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - "ARB": "0x912CE59144191C1204E64559FE8253a0e49E6548", - "USDT": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", - "DPX": "0x6C2C06790b3E3E3c38e12Ee22F8183b37a13EE55", - "GMX": "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a", - "BTC": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", - "DAI": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "LINK": "0xf97f4df75117a78c1A5a0DBb814Af92458539FB4", - "UNI": "0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0", - "LVL": "0xB64E280e9D1B5DbEc4AcceDb2257A87b400DB149", - "JOE": "0x371c7ec6D8039ff7933a2AA28EB827Ffe1F52f07", - "WOO": "0xcafcd85d8ca7ad1e1c6f82f651fa15e33aefd07b", - "GRAIL": "0x3d9907f9a368ad0a51be60f7da3b97cf940982d8", - "FRAX": "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F", - "GLP": "0x5402B5F40310bDED796c7D0F3FF6683f5C0cFfdf", - "MAGIC": "0x539bdE0d7Dbd336b79148AA742883198BBF60342", - "GM_ETH_WETH_USDC": "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", - "GM_ARB_ARB_USDC": "0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407", - "GM_LINK_LINK_USDC": "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", - "GM_UNI_UNI_USDC": "0xc7Abb2C5f3BF3CEB389dF0Eecd6120D451170B50", - "GM_BTC_WBTC_USDC": "0x47c031236e19d024b42f8AE6780E44A573170703", - "GM_SOL_SOL_USDC": "0x09400D9DB990D5ed3f35D7be61DfAEB900Af03C9", - "GM_NEAR_WETH_USDC": "0x63Dc80EE90F26363B3FCD609007CC9e14c8991BE", - "GM_ATOM_WETH_USDC": "0x248C35760068cE009a13076D573ed3497A47bCD4", - "GM_GMX_GMX_USDC": "0x55391D178Ce46e7AC8eaAEa50A72D1A5a8A622Da", - "GM_ETH_WETH": "0x450bb6774Dd8a756274E0ab4107953259d2ac541", - "GM_BTC_WBTC": "0x7C11F78Ce78768518D743E81Fdfa2F860C6b9A77", - "arbSnrLLP": "0x5573405636F4b895E511C9C54aAfbefa0E7Ee458", - "arbMzeLLP": "0xb076f79f8D1477165E2ff8fa99930381FB7d94c1", - "arbJnrLLP": "0x502697AF336F7413Bb4706262e7C506Edab4f3B9", - "YY_WOMBEX_USDT": "0x8Bc6968b7A9Eed1DD0A259eFa85dc2325B923dd2", - "YY_WOMBEX_USDC.e": "0x4649c7c3316B27C4A3DB5f3B47f87C687776Eb8C", - "YY_WOMBEX_GLP": "0x28f37fa106AA2159c91C769f7AE415952D28b6ac", - "YY_WOMBEX_DAI": "0x1817fE376740b53CAe73224B7F0a57F23DD4C9b5", - "SUSHI_DPX_ETH_LP": "0x0C1Cf6883efA1B496B01f654E247B9b419873054", - "MOO_SUSHI_DPX_ETH_LP": "0x4D323f77c32EDdC62BF8eAbA11E5C573FD0a2ccd", - "MOO_GMX": "0x5B904f19fb9ccf493b623e5c8cE91603665788b0", - "ezETH": "0x2416092f143378750bb29b79eD961ab195CcEea5", - "wstETH": "0x5979D7b546E38E414F7E9822514be443A4800529", - "weETH": "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", - "rsETH": "0x4186BFC76E2E237523CBC30FD220FE055156b41F", - "PENDLE_EZ_ETH_LP": "0xecCDC2C2191d5148905229c5226375124934b63b", - "PENDLE_EZ_ETH_26_09_24": "0xB3f215aFD47Dd29f4B82D9b480BB86FeAF543e67", - "PENDLE_WSTETH_LP": "0xdb0e1D1872202A81Eb0cb655137f4a937873E02f", - "PENDLE_WSTETH_26_06_25": "0x4d2Faa48Ef93Cc3c8A7Ec27F3Cb91cEB1a36F89B", - "PENDLE_E_ETH_LP": "0x264f4138161aaE16b76dEc7D4eEb756f25Fa67Cd", - "PENDLE_E_ETH_26_09_24": "0xa7D760926F3098E9fb5A93018155578fCDad75C0", - "PENDLE_RS_ETH_LP": "0xe3B327c43b5002eb7280Eef52823698b6cDA06cF", - "PENDLE_RS_ETH_26_09_24": "0x9e411b97437Af296D6c4b482893c63Ffd8DfBE6D", - "PENDLE_SILO_ETH_WSTETH_LP": "0xCcCC7c80c9Be9fDf22e322A5fdbfD2ef6ac5D574" -} diff --git a/projects/deltaprime/mappings/assetToAddressMappingAvalanche.json b/projects/deltaprime/mappings/assetToAddressMappingAvalanche.json deleted file mode 100644 index d822bd88f88..00000000000 --- a/projects/deltaprime/mappings/assetToAddressMappingAvalanche.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "AVAX": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", - "USDC": "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", - "sAVAX": "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE", - "ETH": "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", - "BTC": "0x152b9d0FdC40C096757F570A51E494bd4b943E50", - "ggAVAX": "0xA25EaF2906FA1a3a13EdAc9B9657108Af7B703e3", - "yyAVAX": "0xF7D9281e8e363584973F946201b82ba72C965D27", - "BAL_ggAVAX_AVAX": "0xC13546b97B9B1b15372368Dc06529d7191081F5B", - "BAL_yyAVAX_AVAX": "0x9fA6aB3d78984A69e712730A2227F20bCC8b5aD9", - "BAL_sAVAX_AVAX": "0xfD2620C9cfceC7D152467633B3B0Ca338D3d78cc", - "USDT": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "EUROC": "0xC891EB4cbdEFf6e073e859e987815Ed1505c2ACD", - "GMX": "0x62edc0692BD897D2295872a9FFCac5425011c661", - "QI": "0x8729438eb15e2c8b576fcc6aecda6a148776c0f5", - "PNG": "0x60781C2586D68229fde47564546784ab3fACA982", - "PTP": "0x22d4002028f537599bE9f666d1c4Fa138522f9c8", - "JOE": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", - "gmdUSDC": "0x33f0a866d9024d44de2E0602f4C9B94755944B6F", - "gmdWAVAX": "0x13AF25f924056d4D4668705C33aB9b70D505050e", - "gmdBTCb": "0x8fe3024351B9a51a3439183e940c2aF3994DD52F", - "gmdWETHe": "0xE28c95e9EB0f6D16b05D265cAa4BcEE9E5C2e625", - "YY_AAVE_AVAX": "0xaAc0F2d0630d1D09ab2B5A400412a4840B866d95", - "YY_PTP_sAVAX": "0xb8f531c0d3c53B1760bcb7F57d87762Fd25c4977", - "YY_GLP": "0x9f637540149f922145c06e1aa3f38dcDc32Aff5C", - "PNG_AVAX_USDC_LP": "0x0e0100ab771e9288e0aa97e11557e6654c3a9665", - "PNG_AVAX_USDT_LP": "0xe3ba3d5e3f98eeff5e9eddd5bd20e476202770da", - "PNG_AVAX_ETH_LP": "0x7c05d54fc5cb6e4ad87c6f5db3b807c94bb89c52", - "TJ_AVAX_USDC_LP": "0xf4003F4efBE8691B60249E6afbD307aBE7758adb", - "TJ_AVAX_USDT_LP": "0xbb4646a764358ee93c2a9c4a147d5aDEd527ab73", - "TJ_AVAX_ETH_LP": "0xFE15c2695F1F920da45C30AAE47d11dE51007AF9", - "TJ_AVAX_BTC_LP": "0x2fd81391e30805cc7f2ec827013ce86dc591b806", - "TJ_AVAX_sAVAX_LP": "0x4b946c91c2b1a7d7c40fb3c130cdfbaf8389094d", - "YY_PNG_AVAX_USDC_LP": "0xC0cd58661b68e10b49D3Bec4bC5E44e7A7c20656", - "YY_PNG_AVAX_ETH_LP": "0xFCD2050E213cC54db2c9c99632AC870574FbC261", - "YY_TJ_AVAX_USDC_LP": "0xDEf94a13fF31FB6363f1e03bF18fe0F59Db83BBC", - "YY_TJ_AVAX_ETH_LP": "0x5219558ee591b030E075892acc41334A1694fd8A", - "YY_TJ_AVAX_sAVAX_LP": "0x22EDe03f1115666CF05a4bAfafaEe8F43D42cD56", - "WOMBAT_ggAVAX_AVAX_LP_AVAX": "0x960c66dda302f4a496d936f693e083b1e9ace306", - "WOMBAT_ggAVAX_AVAX_LP_ggAVAX": "0x2ddfdd8e1bec473f07815fa3cfea3bba4d39f37e", - "WOMBAT_sAVAX_AVAX_LP_AVAX": "0x29eeb257a2a6ecde2984acedf80a1b687f18ec91", - "WOMBAT_sAVAX_AVAX_LP_sAVAX": "0xc096ff2606152ed2a06dd12f15a3c0466aa5a9fa", - "MOO_TJ_AVAX_USDC_LP": "0x7E5bC7088aB3Da3e7fa1Aa7ceF1dC73F5B00681c", - "GM_BTC_BTCb_USDC": "0xFb02132333A79C8B5Bd0b64E3AbccA5f7fAf2937", - "GM_ETH_WETHe_USDC": "0xB7e69749E3d2EDd90ea59A4932EFEa2D41E245d7", - "GM_AVAX_WAVAX_USDC": "0x913C1F46b48b3eD35E7dc3Cf754d4ae8499F31CF", - "GM_SOL_SOL_USDC": "0xd2eFd1eA687CD78c41ac262B3Bc9B53889ff1F70", - "GM_BTC_BTCb": "0x3ce7BCDB37Bf587d1C17B930Fa0A7000A0648D12", - "GM_ETH_WETHe": "0x2A3Cf4ad7db715DF994393e4482D6f1e58a1b533", - "GM_AVAX_WAVAX": "0x08b25A2a89036d298D6dB8A74ace9d1ce6Db15E5", - "GLP": "0x9e295B5B976a184B14aD8cd72413aD846C299660", - "DAIe": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", - "USDCe": "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", - "USDT.e": "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", - "WBTCe": "0x50b7545627a5162F82A992c33b87aDc75187B218", - "crvUSDBTCETH": "0x1daB6560494B04473A0BE3E7D83CF3Fdf3a51828", - "SHLB_AVAX-USDC_B": "0x668530302c6ecc4ebe693ec877b79300ac72527c", - "SHLB_BTC.b-AVAX_B": "0x536d7e7423e8fb799549caf574cfa12aae95ffcd", - "SHLB_JOE-AVAX_B": "0x89547441489262feb5cee346fdacb9037c2574db", - "SHLB_EUROC-USDC_V2_1_B": "0x638f969675822dfae4566b44d0f2a11362fbed52", - "SHLB_USDT.e-USDt_C": "0x9f44e67ba256c18411bb041375e572e3dd11fa72" -} \ No newline at end of file diff --git a/projects/deltatheta/factory.abi.js b/projects/deltatheta/factory.abi.js deleted file mode 100644 index 103d9b9f62f..00000000000 --- a/projects/deltatheta/factory.abi.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - pairsLength: "uint16:pairsLength", - pairsList: "function pairsList(uint256) view returns (address)", -}; diff --git a/projects/deltatheta/index.js b/projects/deltatheta/index.js deleted file mode 100644 index a73f30d9451..00000000000 --- a/projects/deltatheta/index.js +++ /dev/null @@ -1,18 +0,0 @@ -// Delta.theta Factory ABI (for needed calls) -const factoryABI = require('./factory.abi'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -// Delta.theta Factory Address (On all chains) -const FACTORY_ADDRESS = '0x000000000092126dc1bcec881165f92169733106'; - -// TVL function generator (for BSC & POLYGON chains) -async function tvl(api) { - const pairs = await api.fetchList({ lengthAbi: factoryABI.pairsLength, itemAbi: factoryABI.pairsList, target: FACTORY_ADDRESS }) - return sumTokens2({ api, owners: pairs, fetchCoValentTokens: true, blacklistedTokens: ['0x3a06212763caf64bf101daa4b0cebb0cd393fa1a'], permitFailure: true }); -} - -module.exports = { - methodology: 'Parsing the balances of all tokens on the pair addresses of decentralized exchange Delta.theta', - bsc: { tvl }, - polygon: { tvl }, -}; diff --git a/projects/deltatrade.js b/projects/deltatrade.js deleted file mode 100644 index 784017fb2c0..00000000000 --- a/projects/deltatrade.js +++ /dev/null @@ -1,62 +0,0 @@ -const { sumTokens } = require('./helper/chain/near') -const { getConfig } = require('./helper/cache') -const { get } = require('./helper/http') - -const { PublicKey } = require('@solana/web3.js'); -const { sumTokens2, ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, } = require('./helper/solana') - -const state = new PublicKey('FRcbUFpGHQppvXAyJrNYLKME1BQfowh4xKZB2vt9j6yn'); -const programId = new PublicKey('CNLGhYQgNwjyDfHZTEjHfk1MPkqwP96qZahWN82UfcLM'); - -const GRID_CONTRACT_ID = 'grid.deltatrade.near'; -const DCA_CONTRACT_ID = 'dca.deltatrade.near'; - -const nearApi = 'https://api.deltatrade.ai'; -const solanaApi = 'https://solapi.deltatrade.ai'; - - -module.exports = { - timetravel: false, - near: { - tvl: nearTVL, - }, - solana: { - tvl: solanaTvl, - } -} - -async function getTokens(chain) { - return getConfig(`deltatrade/${chain}-pairs`, undefined, { - fetcher: async () => { - const url = `${chain === 'solana' ? solanaApi : nearApi}/api/bot/grid/pairs`; - const { data } = await get(url); - const tokenSet = new Set() - data.forEach(pair => { - tokenSet.add(pair.base_token.code) - tokenSet.add(pair.quote_token.code) - }) - const arry = Array.from(tokenSet) - arry.sort() - return arry - } - }) -} - -async function nearTVL(){ - const tokens = await getTokens('near'); - return sumTokens({ tokens, owners: [GRID_CONTRACT_ID, DCA_CONTRACT_ID] }) -} - -function getGlobalBalanceUser(token) { - const [globalBalPda] = PublicKey.findProgramAddressSync([Buffer.from("global_balance_user"), state.toBuffer(), new PublicKey(token).toBuffer()], programId); - - // const globalBalTokenAccount = await Token.getAssociatedTokenAddress(ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, new PublicKey(token), new PublicKey(globalBalPda.toString()), true); - const [tokenAccount] = PublicKey.findProgramAddressSync([new PublicKey(globalBalPda.toString()), TOKEN_PROGRAM_ID, new PublicKey(token)].map(i => i.toBuffer()), ASSOCIATED_TOKEN_PROGRAM_ID) - return tokenAccount.toString(); -} - -async function solanaTvl() { - const tokens = await getTokens('solana'); - const tokenAccounts = tokens.map(getGlobalBalanceUser) - return sumTokens2({ tokenAccounts }) -} diff --git a/projects/demeter.js b/projects/demeter.js deleted file mode 100644 index 84a329748b9..00000000000 --- a/projects/demeter.js +++ /dev/null @@ -1,128 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') - -const { sumTokensExport } = require('./helper/unwrapLPs') - -const config = { - heco: { - markets: [ - [ - ADDRESSES.heco.USDT, - "0x8d8fD8139CEaf0034A021E6eb039bB6f70C83d9c" - ], - [ - "0x0298c2b32eaE4da002a15f36fdf7615BEa3DA047", - "0xe2CE3BDe9f94C41E839287af95feE7c07807Cf71" - ], - [ - "0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa", - "0x62Ac818EcaF5A351d48CB7f95A07E2dA7E97ABca" - ], - [ - "0x64FF637fB478863B7468bc97D30a5bF3A428a1fD", - "0x59a626a783A9C071fDcEFC95B3664a34d0592e24" - ], - [ - ADDRESSES.heco.WHT, - "0xDA77B5663a0baFa56080Ae5D0a1F462848465b14" - ], - [ - "0xA2c49cEe16a5E5bDEFDe931107dc1fae9f7773E3", - "0x63fB23F78923320DE2816562401a2658321fFB11" - ], - [ - "0xae3a768f9aB104c69A7CD6041fE16fFa235d1810", - "0xe867f648957Fa769E43E30b99Faa008C1A39808f" - ], - [ - "0xeF3CEBD77E0C52cb6f60875d9306397B5Caca375", - "0x31f7C57AA9ecC0Da99105F2d7ad2c30c9DF1c1Dc" - ], - [ - "0x9e004545c59D359F6B7BFB06a26390b087717b42", - "0xF677108CB45e702DF16B42F7B37a1305239FC75A" - ], - [ - "0x22C54cE8321A4015740eE1109D9cBc25815C46E6", - "0x103fC41D79C4AdA572B158b39De4d5b30d45ddf6" - ], - [ - "0x25D2e80cB6B86881Fd7e07dd263Fb79f4AbE033c", - "0xc790FF20B8479e1FEdF73f78dC07C40DB79D8474" - ], - [ - "0xFBe7b74623e4be82279027a286fa3A5b5280F77c", - "0x38D8f533adE6c37D578A247d9446a90dcCD775B8" - ], - [ - "0x793c2a814e23EE38aB46412Be65E94Fe47D4B397", - "0x0a58BF4102059911AC9588A7BF10E93717C96FaD" - ], - [ - "0x78C90d3f8A64474982417cDB490E840c01E516D4", - "0xA5d68959ADb1E9B48364FF70Bb67A92eEe1C95D0" - ], - [ - "0xdff86B408284dff30A7CAD7688fEdB465734501C", - "0x342eFBf098c06b80d1252147FF850E5d3993D3D6" - ], - [ - "0x499B6E03749B4bAF95F9E70EeD5355b138EA6C31", - "0xCc54fF772Ead487296cBb9e3614aDDd0989f1968" - ] - ] - }, - bsc: { - markets: [ - [ - ADDRESSES.bsc.USDT, - "0x89bB17aF665Ec0607268C697Bb294117992027Cf" - ], - [ - ADDRESSES.bsc.BUSD, - "0xB275b6AE294159278547297dBE7617f66A7bC6e2" - ], - [ - ADDRESSES.bsc.BTCB, - "0x6c9FcBD7aD9dFB241f4fA2cc08FaABb42d764606" - ], - [ - ADDRESSES.bsc.ETH, - "0x4A345187BFAe9A14DA764C2222c4B7E816C18216" - ], - [ - ADDRESSES.bsc.WBNB, - "0x5C4E2B1E6E03cCF5F3c3356C008a69C7f93BD10B" - ], - [ - "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", - "0xB0568DbD78D3920903e71Fc3F3034c0a4A7d1cCb" - ], - [ - "0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153", - "0x606Bb7e9B80bA73D1303f1c3625Cf7F09249D680" - ], - [ - "0x8fF795a6F4D97E7887C79beA79aba5cc76444aDf", - "0x511069c79dff79dfC0D0C69C4b4A40C4cADe68f4" - ], - [ - "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD", - "0x217D2C538628762981E18C32A0B789f94D2368Df" - ], - [ - "0xBf5140A22578168FD562DCcF235E5D43A02ce9B1", - "0x336Dd5b84ca82F0d0CEB790D257f0E66Dd3C5478" - ] - ] - } -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { markets } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ chain, tokensAndOwners: markets, }) - } -}) \ No newline at end of file diff --git a/projects/demeter/index.js b/projects/demeter/index.js deleted file mode 100644 index ddb8e05f149..00000000000 --- a/projects/demeter/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { get } = require('../helper/http') - -const tvl = async (api) => { - const { tvl } = await get('https://api.deotoken.com/api/demeter/supply-data') - return api.addUSDValue(Math.round(tvl)) -} - -module.exports = { - misrepresentedTokens: true, - sora: { tvl }, -} \ No newline at end of file diff --git a/projects/demex/index.js b/projects/demex/index.js deleted file mode 100644 index 7b2a7e4fc5d..00000000000 --- a/projects/demex/index.js +++ /dev/null @@ -1,88 +0,0 @@ -const sdk = require('@defillama/sdk') -const axios = require('axios') - -const getPerpPools = async () => { - const pools = []; - const size = 100; - - for (let skip = 0; ; skip += size) { - const api = `https://api.carbon.network/carbon/perpspool/v1/pools/pool_info?pagination.limit=${size}&pagination.offset=${skip}` - const { data } = await axios(api) - const currentPools = data.vaults || [] - pools.push(...currentPools) - if (currentPools.length < size) break - } - - return pools -} - -const getPools = async () => { - const pools = []; - const size = 100; - - for (let skip = 0; ; skip += size) { - const api = `https://api.carbon.network/carbon/liquiditypool/v1/pools?pagination.limit=${size}&pagination.offset=${skip}` - const { data } = await axios(api) - const currentPools = data.pools || [] - pools.push(...currentPools) - if (currentPools.length < size) break - } - - return pools -} - -const getTokenInfo = async () => { - const { data } = await axios('https://api-insights.carbon.network/info/denom_gecko_map') - const { gecko } = data.result - const tokenMap = {} - const size = 100 - - for (let skip = 0; ; skip += size) { - const api = `https://api.carbon.network/carbon/coin/v1/tokens?pagination.limit=${size}&pagination.offset=${skip}` - const res = await axios(api) - const data = res.data - const tokens = data.tokens || [] - - for (const token of tokens) { - const denom = token.denom - if (!gecko[denom]) continue - token.geckoId = gecko[denom] - tokenMap[denom] = token - } - - if (tokens.length < size) break - } - - return tokenMap -} - -async function tvl() { - const balances = {} - const [tokenData, pools, perpPools] = await Promise.all([getTokenInfo(), getPools(), getPerpPools()]) - for (const { pool: { denom_a, amount_a, denom_b, amount_b } } of pools) { - if (tokenData[denom_a]) { - addBalance(denom_a, amount_a) - } - if (tokenData[denom_b]) { - addBalance(denom_b, amount_b) - } - } - - const perpPoolDenom = 'cgt/1' // Carbon USD - for (const { total_nav_amount } of perpPools) { - if (tokenData[perpPoolDenom]) { - addBalance(perpPoolDenom, total_nav_amount) - } - } - - return balances - - function addBalance(id, amount) { - sdk.util.sumSingleBalance(balances, tokenData[id].geckoId, amount / (10 ** +tokenData[id].decimals)) - } -} - -module.exports = { - timetravel: false, - carbon: { tvl } -} \ No newline at end of file diff --git a/projects/demodyfi/index.js b/projects/demodyfi/index.js deleted file mode 100644 index 4d2e07f3ae2..00000000000 --- a/projects/demodyfi/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking('0x024D59Ac0Bb03dEd28B9A16cd50B3d242B43a683', ADDRESSES.moonbeam.WGLMR), - pool2: pool2('0x024D59Ac0Bb03dEd28B9A16cd50B3d242B43a683', '0xD5B1Cd8D245A93E0697707AEe82497388508b132'), - }, - bsc: { - staking: staking('0xc94e085E2E2D92A950fa4A6B923263C0B47c6dBa', '0x002D8563759f5e1EAf8784181F3973288F6856e4'), - pool2: pool2('0xc94e085E2E2D92A950fa4A6B923263C0B47c6dBa', '0x0f35d854C267D29C0E418F561b75aE09B9E413D4'), - }, - moonbeam: { - tvl: getUniTVL({ factory: '0x61999fAb7fdcEe1B26b82b5c2f825BCC8F8c2458', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/denario/index.js b/projects/denario/index.js deleted file mode 100644 index bf4d579bc65..00000000000 --- a/projects/denario/index.js +++ /dev/null @@ -1,64 +0,0 @@ -// Denario Silver Coin is 100% backed by physical silver. -// Price is determined by the price of silver on the spot market plus premium. -// The price is stored in the price oracle and updated every minute. - -const sdk = require('@defillama/sdk'); -const ADDRESSES = require('../helper/coreAssets.json') - -const silverAddress = ADDRESSES.polygon.DSC -const goldAddress = ADDRESSES.polygon.DGC -const priceOracle = '0x9be09fa9205e8f6b200d3c71a958ac146913662e' -// const goldPricequery = 'goldcoin/latest/usd' - -const priceOracleABI = [ - { - "inputs": [{ "name": "key", "type": "string" }], - "name": "getValue", - "outputs": [ - { "name": "", "type": "uint128" }, - { "name": "", "type": "uint128" } - ], - "stateMutability": "view", - "type": "function" - } -] - -const firstBlock = 62270459 - -async function tvl(api) { - - const totalSilverSupply = await api.call({ - abi: 'erc20:totalSupply', - target: silverAddress, - }) - // const totalGoldSupply = await api.call({ - // abi: 'erc20:totalSupply', - // target: goldAddress, - // }) - - const silverPrice = await api.call({ - target: priceOracle, - params: 'silvercoin/latest/USD', - abi: priceOracleABI[0] - }).then(res => res[0]) - - // Oracle price is in 8 decimals (standard for USD prices) - const silverPriceInUSD = silverPrice / 1e8 - - // Calculate total value in USD and add to balances - const totalValueInUSD = (totalSilverSupply * silverPriceInUSD) / 1e18 // token has 18 decimals - api.add(ADDRESSES.polygon.USDC, totalValueInUSD * 1e6) // USDC has 6 decimals - - return { - [silverAddress]: totalSilverSupply, - // [goldAddress]: totalGoldSupply, - } -} - -module.exports = { - methodology: 'TVL corresponds to the total amount of token minted, which is 100% backed by physical metal.', - start: firstBlock, - polygon: { - tvl, - } -} diff --git a/projects/depth/index.js b/projects/depth/index.js deleted file mode 100644 index 9527b8482bf..00000000000 --- a/projects/depth/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const { createIncrementArray } = require('../helper/utils') - -const channels = '0x11bFEE9D8625ac4cDa6Ce52EeBF5caC7DC033d15'; -const filda = '0xE796c55d6af868D8c5E4A92e4fbCF8D8F88AcDED'; -const lendhub = '0xdA0519AA3F097A3A5b1325cb1D380C765d8F1D70'; -const lendhubeth = '0x15155042F8d13Db274224AF4530397f640f69274'; - -const fildaSwapV2Address = "0xa7a0EA0C5D2257e44Ad87d10DB90158c9c5c54b3" - -const vaultGroup = [ - "0x6FF92A0e4dA9432a79748A15c5B8eCeE6CF0eE66", - "0x95c258E41f5d204426C33628928b7Cc10FfcF866", - "0x70941A63D4E24684Bd746432123Da1fE0bFA1A35", - "0x22BAd7190D3585F6be4B9fCed192E9343ec9d5c7", - "0xB567bd78A4Ef08EE9C08762716B1699C46bA5ea3", - "0xd96e3FeDbF4640063F2B20Bd7B646fFbe3c774FF", - "0x80Da2161a80f50fea78BE73044E39fE5361aC0dC", - "0xE308880c215246Fa78753DE7756F9fc814D1C186", - "0x9213c6269Faed1dE6102A198d05a6f9E9D70e1D0", - "0x996a0e31508E93EB53fd27d216E111fB08E22255", - "0x9bd25Ed64F55f317d0404CCD063631CbfC4fc90b", - "0x7e1Ac905214214c1E339aaFBA72E2Ce29a7bEC22", -] - -const VaultGroupBsc = [ - "0xcB08DA2339d562b66b314d2bBfB580CB87FFBD76", - "0x3253041F27416c975FFb0100b08734187F82c8A2", - "0x0B28a55dbBd6c5DdD4D1d7157361e9D6D0CcEfC0", - "0xAf996B5E33007ed5EB33eaAe817ad8E1310CCebc", - "0x2E128EB2EE787428307A7B246d02C1801788e1A6", - "0x9F4198C4a73c103Bc9b1c34D1f680d4E43D901AF", - "0x024F05c70F203fb77f27b00422534cC33E1FB69d", - "0xcd8EF3E3A7b25741cE5B8C728F582cF748b60b1A", -] - -async function staking(api) { - const { activeShares, pendingSharesToAdd, pendingSharesToReduce } = await api.call({ - target: "0xfbac8c66d9b7461eefa7d8601568887c7b6f96ad", - abi: "function sharesAndRewardsInfo() view returns (uint256 activeShares, uint256 pendingSharesToAdd, uint256 pendingSharesToReduce, uint256 rewards, uint256 claimedRewards, uint256 lastUpdatedEpochFlag)", - }) - const token = '0x48C859531254F25e57D1C1A8E030Ef0B1c895c27' - api.add(token, activeShares) - api.add(token, pendingSharesToAdd) - api.add(token, pendingSharesToReduce * -1) -} - -async function addDexBalance(api, dex, count = 2) { - const isV2 = api.chain === 'bsc' || dex === fildaSwapV2Address - const calls = createIncrementArray(count) - let coinsAbi = 'function coins(uint256) view returns (address)' - let balanceAbi = 'function balances(uint256) view returns (uint256)' - let curve = dex - if (!isV2) { - coinsAbi = coinsAbi.replace('uint256', 'int128') - balanceAbi = balanceAbi.replace('uint256', 'int128') - curve = await api.call({ target: dex, abi: 'address:curve' }) - } - const coins = await api.multiCall({ abi: coinsAbi, calls, target: dex }) - const bals = await api.multiCall({ abi: balanceAbi, calls, target: curve }) - if (isV2) - return api.add(coins, bals) - - const tokens = await api.multiCall({ abi: 'address:underlying', calls: coins }) - const eRates = await api.multiCall({ abi: 'uint256:exchangeRateStored', calls: coins }) - api.add(tokens, eRates.map((e, i) => e * bals[i] / 1e18)) -} - -async function tvl(api) { - - // dex tvl - await addDexBalance(api, '0xc57220b65dd9200562aa73b850c06be7bd632b57', 3) - - // vault balance - const tokens = await api.multiCall({ abi: 'address:want', calls: VaultGroupBsc }) - const bals1 = await api.multiCall({ abi: 'uint256:balance', calls: VaultGroupBsc }) - api.add(tokens, bals1) -} - -async function hecoTvl(api) { - - const dexes = [filda, channels, lendhub, lendhubeth, fildaSwapV2Address] - await Promise.all(dexes.map(dex => addDexBalance(api, dex))) - // vault balance - const tokens = await api.multiCall({ abi: 'address:want', calls: vaultGroup }) - const bals1 = await api.multiCall({ abi: 'uint256:balance', calls: vaultGroup }) - api.add(tokens, bals1) -} - -module.exports = { - doublecounted: true, - heco: { - tvl: hecoTvl, - // staking, - }, - bsc: { - tvl - }, -} diff --git a/projects/deq/index.js b/projects/deq/index.js deleted file mode 100644 index 718f0d3bcac..00000000000 --- a/projects/deq/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - ethereum: { - tvl: sumERC4626VaultsExport({ vaults: ['0x3742f3Fcc56B2d46c7B8CA77c23be60Cd43Ca80a'], tokenAbi: 'avail', balanceAbi: 'assets'}), - } -} \ No newline at end of file diff --git a/projects/deri-v4/index.js b/projects/deri-v4/index.js deleted file mode 100644 index 0e198794224..00000000000 --- a/projects/deri-v4/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') -const { - invokeViewFunction, -} = require("../helper/chain/supra"); -const { transformBalances } = require("../helper/portedTokens"); - -async function tvl(api) { - const { factory, fromBlock, } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event AddBToken(address bToken, address vault, bytes32 oracleId, uint256 collateralFactor)', - onlyArgs: true, - fromBlock, - }) - const vaults = logs.map(log => log.vault) - const bals = await api.multiCall({ abi: 'function stTotalAmount() external view returns (uint256 balance)', calls: vaults }) - let tokens = await api.multiCall({ abi: 'function asset() external view returns (address)', calls: vaults }) - tokens = tokens.map(token => token === ADDRESSES.linea.WETH_1 ? ADDRESSES.null : token) - - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens, permitFailure: true }) - api.addTokens(tokens, bals.map((v, i) => v / 10 ** (18 - (decimals[i] ?? 18)))) -} - -const config = { - arbitrum: { fromBlock: 154160066, factory: '0x7C4a640461427C310a710D367C2Ba8C535A7Ef81', }, - era: { fromBlock: 19529699, factory: '0x34FD72D2053339EA4EB1a8836CF50Ebce91962D0', }, - linea: { fromBlock: 926110, factory: '0xe840Bb03fE58540841e6eBee94264d5317B88866', }, - scroll: { fromBlock: 1384607, factory: '0x7B56Af65Da221A40B48bEDcCb67410D6C0bE771D', }, - manta: { fromBlock: 1132047, factory: '0xc8fa78f6b68ab22239222b4249b1ff968d154ae9', }, - polygon_zkevm: { fromBlock: 8978690, factory: '0xc7e484c20d5dc5d33299afb430bfb5d17085ee98', }, - taiko: { fromBlock: 130174, factory: '0xd4E08C940dDeC162c2D8f3034c75c3e08f1f6032', }, - bsc: { fromBlock: 37069498, factory: '0x2c2E1eE20C633EAe18239c0BF59cEf1FC44939aC', }, - blast: { fromBlock: 2304573, factory: '0x60138081198b75aAF15ACA3A17Ec7f5Ffc5D4605', }, - base: { fromBlock: 25285725, factory : '0xd4E08C940dDeC162c2D8f3034c75c3e08f1f6032', }, - sonic: { fromBlock: 13168450, factory: '0x35EE168B4d0EA31974E9B184480b758F3E9940D1', }, -} - -const calculateSupraTVL = async (api) => { - const chain = api.chain; - const vaults = [ - '0x9eea5363c9e08b22967c89291b7d817e205ffa888b60373b5c1c4562d836c894', - '0x4e49f1c8624eaff1bfeddf469439d35bc170ed29ae646c464bda37d6e42c938d', - ]; - - let stTotalAmount = 0; - for (const vault of vaults) { - stTotalAmount += parseInt( - await invokeViewFunction( - '0x83e22cb3508f9fc8b7788be66a363b70b801764081565046c68ed92139b05f87::vault::st_total_amount', - [], - [vault] - ) - ); - } - - const balances = { - [ADDRESSES.supra.dexUSDC]: - stTotalAmount / 10 ** 12, - }; - - return transformBalances(chain, balances); -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl }; -}); - -module.exports.supra = { tvl: calculateSupraTVL }; \ No newline at end of file diff --git a/projects/deri/abi.json b/projects/deri/abi.json deleted file mode 100644 index aa80a5da50c..00000000000 --- a/projects/deri/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getLengths": "function getLengths() view returns (uint256, uint256)", - "getBToken": "function getBToken(uint256 bTokenId) view returns (tuple(address bTokenAddress, address swapperAddress, address oracleAddress, uint256 decimals, int256 discount, int256 liquidity, int256 pnl, int256 cumulativePnl))", - "v3Liquidity": "int256:liquidity" -} \ No newline at end of file diff --git a/projects/deri/index.js b/projects/deri/index.js deleted file mode 100644 index ac0dd390b12..00000000000 --- a/projects/deri/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi"); - -async function perpetualPool(api, pool) { - const res = await api.call({ target: pool, abi: abi.getLengths, }); - const calls = [] - for (let i = 0; i < res[0]; i++) - calls.push(i) - const tokenData = await api.multiCall({ abi: abi.getBToken, calls, target: pool, }); - const tokens = tokenData.map((t) => t.bTokenAddress); - return api.sumTokens({ owner: pool, tokens }) -} - -let config = { - arbitrum: { - futureMain: { bTokenSymbol: ADDRESSES.arbitrum.USDC, pool: "0xDE3447Eb47EcDf9B5F90E7A6960a14663916CeE8", v3: true, }, - }, - era: { - futureMain: { bTokenSymbol: ADDRESSES.era.USDC, pool: "0x9F63A5f24625d8be7a34e15477a7d6d66e99582e", v3: true, }, - }, - polygon: { - a: { pool: "0x4Db087225C920Bec55B2dCEAa629BDc5782623D9", }, - b: { bTokenSymbol: ADDRESSES.polygon.USDT, pool: "0xA8769A4Fb0Ca82eb474448B1683DCA3c79798B69", lite: true, }, - deriPool: { bTokenSymbol: "0x3d1d2afd191b165d140e3e8329e634665ffb0e5e", pool: "0xdDfCA16Cd80Ae3aeeb7C7ef743924Ac39A94cC9c", lite: true, }, - }, - bsc: { - a: { pool: "0x66f501dda450C8978c4A1115D7b2A7FAa7702F05", }, - b: { bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0x574022307e60bE1f07da6Ec1cB8fE23d426e5831", lite: true, }, - everlastingOption: { bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0x08aD0E0b4458183758fC5b9b6D27c372965fB780", lite: true, }, - deriPool: { bTokenSymbol: "0xe60eaf5a997dfae83739e035b005a33afdcc6df5", pool: "0x26bE73Bdf8C113F3630e4B766cfE6F0670Aa09cF", lite: true, }, - option: { bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0x243681B8Cd79E3823fF574e07B2378B8Ab292c1E", v3: true, }, - futureMain: { bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0x4ad5cb09171275A4F4fbCf348837c63a91ffaB04", v3: true, }, - futureInno: { bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0xD2D950e338478eF7FeB092F840920B3482FcaC40", v3: true, }, - }, -} - -async function v3Pool(api, pool, bToken) { - let liquidity = await api.call({ target: pool, abi: abi["v3Liquidity"], }) - const decimals = await api.call({ abi: 'erc20:decimals', target: bToken }) - api.add(bToken, liquidity * (10 ** (decimals - 18))) -} - -Object.keys(config).forEach(chain => { - const contracts = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokensAndOwners = [] - for (let { pool, bTokenSymbol, v3, lite } of Object.values(contracts)) { - if (lite) - tokensAndOwners.push([bTokenSymbol, pool]); - else if (v3) - await v3Pool(api, pool, bTokenSymbol) - else - await perpetualPool(api, pool) - } - return api.sumTokens({ tokensAndOwners }); - } - } -}) \ No newline at end of file diff --git a/projects/deribit/index.js b/projects/deribit/index.js deleted file mode 100644 index 766e3ea1dd3..00000000000 --- a/projects/deribit/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { owners: bitcoinAddressBook.deribit }, - ethereum:{ - owners: [ - "0x77021d475E36b3ab1921a0e3A8380f069d3263de", - "0x5f397B62502e255f68382791947D54C4B2d37F09", - "0xcfee6efec3471874022e205f4894733c42cbbf64", - "0x2eeD6a08Fb89a5CD111efA33f8DcA46CfbEB370f", - "0x6B378bE3c9642ccF25b1A27faCb8ace24aC34A12", - "0xA7e15eF7C01B58eBe5eF74Aa73625Ae4b11FE754", - "0x062448f804191128d71fc72e10a1d13bd7308e7e", - "0xA0F6121319a34f24653fB82aDdC8dD268Af5b9e1", - "0x904cC2B2694FFa78F04708D6F7dE205108213126", - "0x63F41034871535ceE49996Cc47719891Fe03dff9", - //added on the 26/06/2024 - "0x58F56615180A8eeA4c462235D9e215F72484B4A3", - "0x1baE874af9f81B8F93315b27F080260Da4702D3a", - "0x2563328d58AC7eE9e930E89C29Ce96046a291207", - "0x866c9a77d8Ab71d2874703e80cb7aD809b301e8e", - "0xCf2027AAB22980820F0767d9f214CDBD2AA2428D", - "0xACd41f0dA1A84f5543c84a33864e025cE30C099D", - "0xc7125da07a7110049ecc68f43bf10de4d45ca84e", - "0x1b995f9d96951f4a04c30d2e114819949e971bc8", - "0x245772af12d1c31e2b7d6ea810a91c1f3db4eb94", - "0x282f9830e74d887Da489C030cB1EF1D328EaC0A9", - "0x98F980a6f4800b53db7DF568B5e1F6f230d661e5", - "0xb61a16BDa6D61D9b8AD493BF05962c5b98D1712F", - "0x8F5F8ada4D19BF4ffBE580e4ce92af424e60C720", - "0x369F8406A13729c168526018697F0da667656cde", - ] - }, - solana: { - owners:[ - "H8z2yZcrKo7ngiMz3Vsuw823nYo11qdCqs3sJDDjeTdD", - "A5ANHizfayJUDBSwV5Cm7CNXCj6E6AAda49wzzdYPons", - //added on the 26/06/2024 - "BZo9RRbgsWaLMxyaYiJK9D27j2FAVgHrhMJBvAj7GiyG", - "DL165xn6SrdupXGA2MW6woz35B3ssVqpYfwS1xAKdyx", - "7wx23rZmR4tikqW9avcby5Pf8QEuBTo7HKUtpCt9r9nz", - "FbchixvxTEW24Mnzh8AxW31YEZ3J8bq5G5YthxttRgST", - "BeTzsKSyvUhYiSrRDrDkZDN69LU4T7Ho3qKmrK8DvxYN", - "6xASgNpWJzP92LSwWkPZryHt8VMK1XhiU284gkLcVaX1" - ] - }, - ethpow: { - owners:[ - "0x77021d475E36b3ab1921a0e3A8380f069d3263de", - ] - }, - ripple: { - owners:[ - //added on the 26/06/2024 - "rpFXRE1LPyS48a4LMqyksG2sjDg8wmQD5e", - "rE4y6xhfo9QUV2oAxpHtnVkMmGEk632T7R", - "rK6enCZ6sMs84wMhTUgLhnPr9eyrTTNA6W", - "rKK7VZnnqovrh5Gka1ANartX9Usx2aBAZd", - "rMsmvyJxCRs9csii8yPdd4ti8cLVS4pkAu", - "r349nPzpVGRFqQKkyvPsbvQdzLRQNfobbk", - "rHZqS1bfwztYixefmvrbEqn7ZZgjebSphB", - ] - }, - bsc: { - owners:[ - "0xc7125DA07a7110049eCC68F43BF10DE4d45CA84e", - ] - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'This wallets where collect from here https://insights.deribit.com/exchange-updates/proof-of-reserves-deribit/' diff --git a/projects/deridex/index.js b/projects/deridex/index.js deleted file mode 100644 index 20af05f2bd3..00000000000 --- a/projects/deridex/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const sdk = require('@defillama/sdk') -const { toUSDTBalances } = require("../helper/balances"); -const { getAppGlobalState, } = require("../helper/chain/algorand") -const { appDictionary, marketStrings } = require('./utils') - - -async function tvl() { - let balance = 0 - - for (let [perpName, data] of Object.entries(appDictionary)) { - const state = await getAppGlobalState(data.appId) - const a1state = await getAppGlobalState(state[marketStrings.a1_mkt]) - const a2state = await getAppGlobalState(state[marketStrings.a2_mkt]) - const oracle = await getAppGlobalState(data.oracle) - const a1Supply = state[marketStrings.total_a1_supply] / (10 ** data.a1d) - const a1Baer = a1state[marketStrings.basset_exchange_rate] / (1e9) - const price = oracle[marketStrings.latest_price] / (1e6) - const a2Supply = state[marketStrings.total_a2_supply] / (10 ** data.a2d) - const a2Baer = a2state[marketStrings.basset_exchange_rate] / (1e9) - balance += a1Supply * a1Baer * price - balance += a2Supply * a2Baer - } - return toUSDTBalances(balance) -} - -module.exports = { - hallmarks: [ - [1675900800, "Project shuts down"] - ], - timetravel: false, - doublecounted: true, - misrepresentedTokens: true, - methodology: "Gathers the total USD value of all assets supplied", - algorand: { - tvl - } -} \ No newline at end of file diff --git a/projects/deridex/utils.js b/projects/deridex/utils.js deleted file mode 100644 index 83ab6e1b14e..00000000000 --- a/projects/deridex/utils.js +++ /dev/null @@ -1,26 +0,0 @@ -const marketStrings = { - total_a1_borrowed: "ta1b", - total_a1_supply: "ta1s", - a1_mkt: "a1mk", - total_a2_borrowed: "ta2b", - total_a2_supply: "ta2s", - a2_mkt: "a2mk", - basset_exchange_rate: "baer", - latest_price: "latest_price", -} - -const appDictionary = { - "ALGO/STBL2": { - "appId": 994412935, - "a1": "ALGO", - "a1d": 6, - "a2": "STBL2", - "a2d": 6, - "oracle": 531724540 - }, -} - -module.exports = { - marketStrings, - appDictionary, -} \ No newline at end of file diff --git a/projects/derify/index.js b/projects/derify/index.js deleted file mode 100644 index 74b92c2dd15..00000000000 --- a/projects/derify/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -module.exports = { - bsc: { - tvl: staking('0x75777494496f6250DdB9A1B96a6203e219d3698f', ADDRESSES.bsc.BUSD) - } -} diff --git a/projects/derivadex/index.js b/projects/derivadex/index.js deleted file mode 100644 index eabf026cddf..00000000000 --- a/projects/derivadex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - start: '2020-12-05', // 12/5/2020 00:00:00 utc - ethereum: { tvl: sumTokensExport({ owner: '0x6fb8aa6fc6f27e591423009194529ae126660027', fetchCoValentTokens: true, tokens: ['0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9'] }) } -} \ No newline at end of file diff --git a/projects/derivio/index.js b/projects/derivio/index.js deleted file mode 100644 index 653bd21e428..00000000000 --- a/projects/derivio/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -function tvl({ pool }) { - return async (api) => { - const tokenAddresses = await api.call({ - target: pool, - abi: 'function getAssetWhitelist() view returns (address[] memory)', - }) - return sumTokens2({ api, owner: pool, tokens: tokenAddresses }) - } -} - -// era -const DLPM = '0xfc00dAC251711508D4dD7b0C310e913575988838' - -module.exports = { - era: { - tvl: tvl({ pool: DLPM, }) - }, -}; diff --git a/projects/desyn-basisTrading/index.js b/projects/desyn-basisTrading/index.js deleted file mode 100644 index f8b91bca80c..00000000000 --- a/projects/desyn-basisTrading/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getTvlFunction, chains } = require("../desyn-farm/helper"); - -module.exports = { - doublecounted: true, - methodology: 'Combines on-chain airdrops with stable returns from basis trading on Binance.', -} - -chains.forEach(chain => { - module.exports[chain] = { - // rest api type:: StrategyType3 - tvl: getTvlFunction('StrategyType3', true) - } -}) \ No newline at end of file diff --git a/projects/desyn-farm/helper.js b/projects/desyn-farm/helper.js deleted file mode 100644 index 71824abde12..00000000000 --- a/projects/desyn-farm/helper.js +++ /dev/null @@ -1,61 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const chains = ["ethereum", "arbitrum", "btr", "mode", "zklink", "core", "ailayer", "linea", "merlin", "scroll", "bsquared", "hemi", "bsc", "xsat", "goat", "plume_mainnet", "hsk"]; - -const abi = { - getBalance: "function getBalance(address) view returns (uint256)" -} - -// The desyn asset arrangement needs to be requested via the rest api form -async function getInfoListPool(strategy_type, chain) { - const data = await getConfig('desyn/' + strategy_type, `https://api.desyn.io/etf/defillama/get_pool_list?strategy_type=${strategy_type}`) - return data.data.config[chain]?.safePools -} - -// This is aSTETH, -// before the design of the semi-closed soETH, -// the contract in order to limit the closure of the time, -// the user can still deposit, -// so he was given a maximum value of the balance, -// which will become negative after adding any number, blocking the user to put in -const leverageStaking = '0x1982b2F5814301d4e9a8b0201555376e62F82428' - - -function getTvlFunction(strategy_type, isDoubleCounted) { - return async (api) => { - const pools = await getInfoListPool(strategy_type, api.chain) - if (!pools?.length) return; - const tokens = await api.multiCall({ abi: 'address[]:getCurrentTokens', calls: pools }) - const calls = [] - const tokensAndOwners = [] - const allTokens = [] - let i = 0 - - for (const pool of pools) { - for (const token of tokens[i]) { - if (!isDoubleCounted) { - tokensAndOwners.push([token, pool]) - } else { - calls.push({ target: pool, params: token }) - allTokens.push(token) - } - } - i++ - } - - if (!isDoubleCounted) return api.sumTokens({ tokensAndOwners }) - - const allBals = await api.multiCall({ abi: abi.getBalance, calls }) - api.add(allTokens, allBals) - - // rest api type:: StrategyType2 - if (strategy_type === 'StrategyType2') - api.removeTokenBalance(leverageStaking) - } -} - - -module.exports = { - getTvlFunction, - chains -} \ No newline at end of file diff --git a/projects/desyn-farm/index.js b/projects/desyn-farm/index.js deleted file mode 100644 index d5287988333..00000000000 --- a/projects/desyn-farm/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getTvlFunction, chains } = require("./helper"); - -module.exports = { - hallmarks: [ - [1719734400, "Launched on Merlin Chain"], - ], - methodology: 'Focused on airdrops from DeSyn and new chains.', -} - -chains.forEach(chain => { - module.exports[chain] = { - // rest api type:: StrategyType1 - tvl: getTvlFunction('StrategyType1', false) - } -}) \ No newline at end of file diff --git a/projects/desyn-yieldAggregator/index.js b/projects/desyn-yieldAggregator/index.js deleted file mode 100644 index 660a0936918..00000000000 --- a/projects/desyn-yieldAggregator/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getTvlFunction, chains } = require("../desyn-farm/helper"); - -module.exports = { - doublecounted: true, - methodology: 'Engages with DeFi protocols like Lending, DEX, and Restaking, offering both airdrops and structured yield options.', -} - -chains.forEach(chain => { - module.exports[chain] = { - // rest api type:: StrategyType2 - tvl: getTvlFunction('StrategyType2', true) - } -}) \ No newline at end of file diff --git a/projects/detto-finance/index.js b/projects/detto-finance/index.js deleted file mode 100644 index 691df70ac07..00000000000 --- a/projects/detto-finance/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const DETTO_FARM_ADDRESS = "0x6D360d5410b6cdF25fB2D90D36335F228F0Efe48"; -const DETTO_FARM_ADDRESS_2 = "0x5232890862C2e15C9595A8bF53460973f4Ec29FA"; -const DETTO_TOKEN_ADDRESS = "0x7BC401227777F173Ff871993b198A8632741B9Bb".toLowerCase() - -async function getTvl(api, isStaking,farmAddress) { - let pools = await api.call({ abi: abiInfo.poolTvls, target: farmAddress, }) - - pools - .filter(i => (i.assets.toLowerCase() === DETTO_TOKEN_ADDRESS) === isStaking) - .forEach(i => api.add(i.assets, i.tvl)) - - return await sumTokens2({ api, resolveLP: true, }) -} - - -async function tvl(api) { - await getTvl(api,false,DETTO_FARM_ADDRESS) - return await getTvl(api,false,DETTO_FARM_ADDRESS_2) -} - -async function staking(api) { - return getTvl(api, true,DETTO_FARM_ADDRESS) -} - -module.exports = { - hallmarks: [ - [1706745600, "Rug Pull"] - ], - base: { - tvl, staking, - }, -} - -const abiInfo = { - poolTvls: - "function getPoolTotalTvl() view returns (tuple(uint256 pid, address assets, uint256 tvl)[])", -}; diff --git a/projects/deusfi/contracts.json b/projects/deusfi/contracts.json deleted file mode 100644 index f054898a20b..00000000000 --- a/projects/deusfi/contracts.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "ethereum": [ - { - "address": "0xa0F395aD5df1Fceb319e162CCf1Ef6645dE8508f", - "token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "desc": "minter pool" - } - ], - "polygon": [ - { - "address": "0x00F395ad5dF1FCEB319e162CCF1eF6645De8508F", - "token": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "desc": "minter pool" - } - ], - "fantom": [ - { - "address": "0x6E0098A8c651F7A6A9510B270CD02c858C344D94", - "token": "0x04068da6c83afcfa0e13ba15a6696662335d5b75", - "desc": "minter pool usdc" - }, - { - "address": "0xFb05aedf0caC43C6ce291D2d1be1eab568D155B4", - "token": "0x04068da6c83afcfa0e13ba15a6696662335d5b75", - "desc": "migration collateral contract" - }, - { - "address": "0x37a7a2a5FCB0DF6B8138fec7730825E92f9D8207", - "token": "0x04068da6c83afcfa0e13ba15a6696662335d5b75", - "desc": "migration gnosis" - } - ] -} diff --git a/projects/deusfi/index.js b/projects/deusfi/index.js deleted file mode 100644 index 0b38e4255b2..00000000000 --- a/projects/deusfi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const contracts = require("./contracts.json"); -const { sumTokensExport } = require('../helper/unwrapLPs') -module.exports = {}; - -Object.keys(contracts).forEach(chain => { - const tokensAndOwners = contracts[chain].map(i => ([i.token, i.address])) - module.exports[chain] = { - tvl: sumTokensExport({ chain, tokensAndOwners, }) - } -}) \ No newline at end of file diff --git a/projects/dev.js b/projects/dev.js deleted file mode 100644 index 19bdd476a8a..00000000000 --- a/projects/dev.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESS_CONFIG_ADDRESS = '0x1D415aa39D647834786EB9B5a333A50e9935b796' -const TOKEN_ADDRESS = '0x5cAf454Ba92e6F2c929DF14667Ee360eD9fD5b26' - -async function staking(api) { - const lockupAddress= await api.call({ abi: 'address:lockup', target: ADDRESS_CONFIG_ADDRESS}) - const bal = await api.call({ abi: 'uint256:getAllValue', target: lockupAddress}) - api.add(TOKEN_ADDRESS, bal) -} - -module.exports = { - ethereum: { - tvl: () => ({}), - staking, - } -} diff --git a/projects/deversifi/index.js b/projects/deversifi/index.js deleted file mode 100644 index 995e9b6a371..00000000000 --- a/projects/deversifi/index.js +++ /dev/null @@ -1,95 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {nullAddress, sumTokens2} = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -const contracts = { - stark: '0x5d22045daceab03b158031ecb7d9d06fad24609b', - arbiBridge: '0x10417734001162Ea139e8b044DFe28DbB8B28ad0', - polyBridge: '0xBA4EEE20F434bC3908A0B18DA496348657133A7E', - polySmartWallet: '0xda7EeB4049dA84596937127855B50271ad1687E7', - bscBridge: '0xB80A582fa430645A043bB4f6135321ee01005fEf', - bscSmartWallet: '0xCA8E436347a46502E353Cc36b58FE3bB9214D7Fd' -}; - -const listedTokens = [ - nullAddress, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07', - '0x940a2db1b7008b6c776d4faaca729d6d4a4aa551', - ADDRESSES.ethereum.YFI, - ADDRESSES.ethereum.MKR, - ADDRESSES.ethereum.WBTC, - '0xe41d2489571d322189246dafa5ebde1f4699f498', - '0xcc80c051057b774cd75067dc48f8987c4eb97a5e', - ADDRESSES.ethereum.USDC, - '0x419d0d8bdd9af5e606ae2232ed285aff190e711b', - '0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d', - ADDRESSES.ethereum.YFI, - '0xba100000625a3754423978a60c9317c58a424e3d', - ADDRESSES.ethereum.UNI, - '0xc00e94cb662c3520282e6f5717214004a7f26888', - '0xec67005c4e498ec7f55e092bd1d35cbc47c91892', - ADDRESSES.ethereum.BAT, - ADDRESSES.ethereum.LINK, - '0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d', - ADDRESSES.ethereum.SNX, - ADDRESSES.ethereum.AAVE, - '0xeef9f339514298c6a857efcfc1a762af84438dee', - '0xa117000000f279d81a1d3cc75430faa017fa5a2e', - '0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b', - '0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', - ADDRESSES.ethereum.LIDO, - '0xdddddd4301a082e62e84e43f474f044423921918', - '0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d', - ADDRESSES.ethereum.MATIC, - '0x0a0e3bfd5a8ce610e735d4469bc1b3b130402267', - ADDRESSES.ethereum.INU, - ADDRESSES.ethereum.CRV, - '0x03ab458634910aad20ef5f1c8ee96f1d6ac54919', - '0x0391d2021f89dc339f60fff84546ea23e337750f', - ADDRESSES.ethereum.TOKE, - '0x33349b282065b0284d756f0577fb39c158f935e6', - '0x767fe9edc9e0df98e07454847909b5e959d7ca0e', - '0x25f8087ead173b73d6e8b84329989a8eea16cf73', - '0xdddd0e38d30dd29c683033fa0132f868597763ab', - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.SUSHI -]; -const arbitrumTokens = [ - nullAddress, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.optimism.DAI -]; -const polygonTokens = [ - nullAddress, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.DAI -]; - -async function tvl(timestamp, block){ - return sumTokens2({ owner: contracts.stark, tokens: listedTokens, block }) -} - -async function arbitrumTvl(timestamp, ethBlock, {arbitrum: block}){ - return sumTokens2({ owner: contracts.arbiBridge, tokens: arbitrumTokens, block, chain: 'arbitrum' }) -} - -async function polygonTvl(timestamp, ethBlock, {polygon: block}){ - return sumTokens2({ owners: [contracts.polyBridge, contracts.polySmartWallet], tokens: polygonTokens, block, chain: 'polygon' }) -} - -module.exports = { - methodology: `Counts the tokens on ${contracts.stark} and on rhino.fi cross-chain swap smart-wallet contracts`, - ethereum: { - tvl - }, - arbitrum: { - tvl: arbitrumTvl - }, - polygon: { - tvl: polygonTvl - } -} diff --git a/projects/devil-finance/index.js b/projects/devil-finance/index.js deleted file mode 100644 index e21ba8637d7..00000000000 --- a/projects/devil-finance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { get } = require('../helper/http') - -function tvl(type) { - return async () => { - var response = await get("https://devilfinance.io/api/tvls") - - return { tether: response[type] }; - }; -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - fantom: { - tvl: tvl("nonNative"), - pool2: tvl("nativeLP"), - staking: tvl("native"), - }, - deadFrom: '2023-01-01', -}; - -module.exports.fantom = { tvl: () => 0} \ No newline at end of file diff --git a/projects/devve/index.js b/projects/devve/index.js deleted file mode 100644 index 5b15135dd96..00000000000 --- a/projects/devve/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('../helper/staking'); - -module.exports = { - methodology: "DEVVE can be staked in the protocol", - ethereum: { - tvl: () => ({}), - staking: staking( - "0xa0dab5d6907a9CFFD023e0160210eAB464322b70", - "0x8248270620Aa532E4d64316017bE5E873E37cc09" - ), - }, -}; diff --git a/projects/dexalot-bridge/index.js b/projects/dexalot-bridge/index.js deleted file mode 100644 index a68684be3d0..00000000000 --- a/projects/dexalot-bridge/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { exportDexalotTVL } = require("../dexalot/helper"); - -module.exports = exportDexalotTVL("Portfolio") \ No newline at end of file diff --git a/projects/dexalot/helper.js b/projects/dexalot/helper.js deleted file mode 100644 index 5d714f06e52..00000000000 --- a/projects/dexalot/helper.js +++ /dev/null @@ -1,37 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { get } = require("../helper/http"); - -const dexalotTradingAPI = "https://api.dexalot.com/privapi/trading" - -// [chain]: env -const supportedChains = { - "arbitrum": "production-multi-arb", - "avax": "production-multi-avax", - "base": "production-multi-base", - "ethereum": "production-multi-eth", - "bsc": "production-multi-bsc", -} - -function getTVL(env, contractName) { - return async (api) => { - const contract = await get(`${dexalotTradingAPI}/deployment?contracttype=${contractName}&env=${env}`) - const allTokens = await get(`${dexalotTradingAPI}/tokens`) - const tokens = allTokens.filter((t) => t.env === env).map((t) => t.address) - return sumTokens2({ api, owner: contract[0].address, tokens, permitFailure: true }) - } -} - -// Returns TVL for each supported chain (excludes Dexalot chain) -function exportDexalotTVL(contractName) { - const res = {} - for (const [chain, env] of Object.entries(supportedChains)) { - // MainnetRFQ contract not deployed on Ethereum yet - if (chain == "ethereum" && contractName == "MainnetRFQ") continue; - res[chain] = {tvl: getTVL(env, contractName)} - } - return res -} - -module.exports = { - exportDexalotTVL -} \ No newline at end of file diff --git a/projects/dexalot/index.js b/projects/dexalot/index.js deleted file mode 100644 index 26c395592dc..00000000000 --- a/projects/dexalot/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { get } = require("../helper/http"); -const { exportDexalotTVL } = require("./helper"); - -const dexalotAPI = "https://api.dexalot.com" - -async function getDexalotChainLockedOrders(_) { - const lockedTokens = await get(`${dexalotAPI}/api/stats/orderstvl`) - const res = {} - for (const {coingecko_id, amount} of lockedTokens) { - // Ignore counting tokens without coingecko_id - if (coingecko_id == null) { - continue - } - res[coingecko_id] = +amount - } - return res -} - -module.exports = { - methodology: "Dexalot TVL is comprised of the token balances locked in the MainnetRFQ (swap) contracts and the value locked in open orders on the Dexalot chain.", - dexalot: { - tvl: getDexalotChainLockedOrders, - }, - ...exportDexalotTVL("MainnetRFQ") -} \ No newline at end of file diff --git a/projects/dexfinance-etf/index.js b/projects/dexfinance-etf/index.js deleted file mode 100644 index 62605fd51ee..00000000000 --- a/projects/dexfinance-etf/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const config = { - fantom: '0x9b7e30644a9b37eebaa7158129b03f5a3088659d', - pulse: '0xac297968c97ef5686c79640960d106f65c307a37', - base: '0x714c94b9820d7d73e61510e4c18b91f995a895c1', - optimism: '0xd4f1a99212e5be72426bde45abadef66d7d6edf3', - manta: '0x714c94b9820d7d73e61510e4c18b91f995a895c1', - arbitrum: '0xe31fceaf93667365ce1e9edad3bed4a7dd0fc01a', - avax: '0x6b714e6296b8b977e1d5ecb595197649e10a3db1', - bsc: '0x3ace08b10b5c08a17d1c46277d65c81249e65f44', -} - -const blackListTokens = [ - '0x6386704cd6f7a584ea9d23ccca66af7eba5a727e', - '0xaa2c47a35c1298795b5271490971ec4874c8e53d', - '0x6da9ebd271a0676f39c088a2b5fd849d5080c0af', - '0x4117ec0a779448872d3820f37ba2060ae0b7c34b', -] - -Object.keys(config).forEach(chain => { - const factory= config[chain] - module.exports[chain] = { - tvl: async (api) => { - const profitTokens = await api.fetchList({ lengthAbi: 'profitTokensWhitelistCount', itemAbi: 'profitTokensWhitelist', target: factory}) - const connectors = await api.multiCall({ abi: 'function profitTokenConnector(address) view returns (address)', calls: profitTokens, target: factory}) - let underlyings = await api.multiCall({ abi: 'address:underlying', calls: connectors}) - underlyings = underlyings.filter(address => !blackListTokens.includes(address.toLowerCase())) - const tokenCounts = await api.multiCall({ abi: 'uint256:tokensCount', calls: underlyings}) - const owners = [] - const calls = [] - for(let i = 0; i < underlyings.length; i++){ - for(let j = 0; j < tokenCounts[i]; j++){ - calls.push({ - target: underlyings[i], - params: j - }) - owners.push(underlyings[i]) - } - } - const tokens = await api.multiCall({ abi: 'function tokens(uint256) view returns (address)', calls }) - return api.sumTokens({ tokensAndOwners2: [tokens, owners]}) - } - } -}) \ No newline at end of file diff --git a/projects/dexfinance-vault/abi.js b/projects/dexfinance-vault/abi.js deleted file mode 100644 index 079d42ce279..00000000000 --- a/projects/dexfinance-vault/abi.js +++ /dev/null @@ -1,25 +0,0 @@ -exports.abi = { - factory: { - vaultsLength: "function vaultsCount() view returns (uint256)", - vaults: "function vaults(uint256 index) view returns (address)", - farmCalculationConnector: - "function farmCalculationConnector(address) view returns (address)", - }, - vault: { - liquidity: "function liquidity(address) view returns (uint256 liquidity_)", - farmsLength: "uint256:farmsCount", - farmConnector: "function farmConnector(address) view returns (address)", - farms: - "function farms(uint256 index) view returns (tuple(address beacon, uint256 percent, bytes data))", - }, - farm: { - stakingToken: "function stakingToken() view returns (address)", - farm: "address:farm", - type: "string:stakingTokenType", - tokenId: "uint256:tokenId", - stakingTokenLiquidity: - "function stakingTokenLiquidity(uint256 tokenId_) view returns (uint256 liquidity_)", - stakingTokenData: - "function stakingTokenData() view returns ((string stakingTokenType, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, (uint256 sqrtPriceX96LowInit, uint256 sqrtPriceX96UpInit, uint256 sqrtPriceX96LowLimit, uint256 sqrtPriceX96UpLimit, uint256 sqrtPriceX96ApproxPricePercent, uint256 sqrtPriceX96ShiftPercentLow, uint256 sqrtPriceX96ShiftPercentUp, uint256 sqrtPriceX96DefaultShiftPercentLow, uint256 sqrtPriceX96DefaultShiftPercentUp) pricesData, (address tokenIn, address tokenOut)[] swapsToken0ToNative, (address tokenIn, address tokenOut)[] swapsToken1ToNative, (address tokenIn, address tokenOut)[] swapsNativeToToken0, (address tokenIn, address tokenOut)[] swapsNativeToToken1))", - } -}; diff --git a/projects/dexfinance-vault/index.js b/projects/dexfinance-vault/index.js deleted file mode 100644 index 5eaf428385f..00000000000 --- a/projects/dexfinance-vault/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const { sumTokens2, addUniV3LikePosition } = require("../helper/unwrapLPs"); -const { abi } = require("./abi"); - -const CONFIG = { - optimism: { - factory: "0xd4f1a99212e5be72426bde45abadef66d7d6edf3", - }, - fantom: { - factory: "0x9b7e30644a9b37eebaa7158129b03f5a3088659d", - }, - pulse: { - factory: "0xac297968C97EF5686c79640960D106f65C307a37", - USDEX_PLUS: "0xaa2c47a35c1298795b5271490971ec4874c8e53d", - }, - base: { - factory: "0x714c94b9820d7d73e61510e4c18b91f995a895c1", - }, - arbitrum: { - factory: "0xe31fceaf93667365ce1e9edad3bed4a7dd0fc01a", - USDEX_PLUS: "0x4117EC0A779448872d3820f37bA2060Ae0B7C34B", - gDEX: "0x92a212d9f5eef0b262ac7d84aea64a0d0758b94f" - }, - avax: { - factory: "0x6b714e6296b8b977e1d5ecb595197649e10a3db1", - }, - bsc: { - factory: "0x3ace08b10b5c08a17d1c46277d65c81249e65f44", - }, - manta: { - factory: "0x714C94B9820D7D73e61510e4C18B91F995A895C1", - USDEX_PLUS: '0x6da9ebd271a0676f39c088a2b5fd849d5080c0af', - }, -}; - -const getVaults = async (api, factory) => { - const vaults = await api.fetchList({ lengthAbi: abi.factory.vaultsLength, itemAbi: abi.factory.vaults, target: factory, permitFailure:true }); - const farmsAll = await api.fetchList({ lengthAbi: abi.vault.farmsLength, itemAbi: abi.vault.farms, targets: vaults, groupedByInput: true, permitFailure:true }) - - return vaults.map((vault, i) => { - const farms = farmsAll[i] || []; - return farms.map(farm => ({ vault, farm })); - }).flat(); -}; - -const getVaultsConnectors = async (api, factory, vaultFarms) => { - const connectorsCalls = vaultFarms.map(({ farm, vault }) => ({ params: farm.beacon, target: vault })); - const calculationConnectorCalls = vaultFarms.map(({ farm }) => farm.beacon); - const connectors = await api.multiCall({ abi: abi.vault.farmConnector, calls: connectorsCalls, permitFailure: true }); - const calculationConnectors = await api.multiCall({ abi: abi.factory.farmCalculationConnector, calls: calculationConnectorCalls, target: factory, permitFailure: true }); - - return vaultFarms - .map((item, i) => { - const connector = connectors[i] - const calculationConnector = calculationConnectors[i] - if (!connector || !calculationConnector) return null; - delete item.farm.data; - return { ...item, connector, calculationConnector }; - }).filter(item => item !== null); -}; - -const getVaultsDatas = async (api, vaultFarms) => { - const v2Farms = []; - const v3Farms = []; - const calls = vaultFarms.map(({ connector }) => connector); - const liquidityCalls = vaultFarms.map(({ calculationConnector, connector }) => ({ target: calculationConnector, params: [connector] })); - const stakingDatasCalls = vaultFarms.map(({ calculationConnector }) => ({ target: calculationConnector })) - - const [stakingTokens, liquidities, datas] = await Promise.all([ - api.multiCall({ calls, abi: abi.farm.stakingToken, permitFailure: true }), - api.multiCall({ calls: liquidityCalls, abi: abi.vault.liquidity }), - api.multiCall({ calls: stakingDatasCalls, abi: abi.farm.stakingTokenData, permitFailure: true }) - ]); - - vaultFarms.forEach(( item, i ) => { - const stakingToken = stakingTokens[i] - const liquidity = liquidities[i] - const data = datas[i] - if (!stakingToken || !liquidity ) return - if (!data) { - v2Farms.push({ ...item, stakingToken, liquidity }) - } else { - v3Farms.push({ ...item, stakingToken, liquidity, data }) - } - }) - - return { v2Farms, v3Farms } -}; - -const lpv2Balances = async (api, farms) => { - farms.forEach(({ stakingToken, liquidity }) => { - api.add(stakingToken, liquidity); - }); -}; - -async function addERC721Data(api, vaultFarms) { - const positionIds = await api.multiCall({ abi: abi.farm.tokenId, calls: vaultFarms.map(i => i.connector) }) - const nftPositionMapping = {} - vaultFarms.forEach((item, i) => { - if (!+positionIds[i]) - return; - - const nft = item.stakingToken.toLowerCase() - if (!nftPositionMapping[nft]) nftPositionMapping[nft] = [] - nftPositionMapping[nft].push(positionIds[i]) - }) - for (const [nftAddress, positionIds] of Object.entries(nftPositionMapping)) - await sumTokens2({ api, uniV3ExtraConfig: { nftAddress, positionIds } }) -} - -const tvl = async (api) => { - const { factory, USDEX_PLUS, gDEX } = CONFIG[api.chain]; - const vaultFarms = await getVaults(api, factory); - const vaultFarmsWithConnectors = await getVaultsConnectors(api, factory, vaultFarms); - const { v2Farms, v3Farms } = await getVaultsDatas(api, vaultFarmsWithConnectors); - - await Promise.all([ - lpv2Balances(api, v2Farms), - addERC721Data(api, v3Farms) - ]) - - await sumTokens2({ api, resolveLP: true }); - if (USDEX_PLUS) api.removeTokenBalance(USDEX_PLUS); - if (gDEX) api.removeTokenBalance(gDEX); -}; - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl }; -}) \ No newline at end of file diff --git a/projects/dexfinance/abi.js b/projects/dexfinance/abi.js deleted file mode 100644 index 51d8ff4a1c6..00000000000 --- a/projects/dexfinance/abi.js +++ /dev/null @@ -1,8 +0,0 @@ -const ETF_ABI = { - 'getCurrentTokens':"address[]:getCurrentTokens" -} - - -module.exports = { - ETF_ABI, -} \ No newline at end of file diff --git a/projects/dexfinance/index.js b/projects/dexfinance/index.js deleted file mode 100644 index c133c7cfbc5..00000000000 --- a/projects/dexfinance/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); -const { ETF_ABI, } = require('./abi'); -const { sumTokens2, sumTokensExport, } = require('../helper/unwrapLPs') - -const REGULATION_STAKING_POOL = '0xd69db827939e26511068aa2bf742e7463b292190' -const REWARD_POOL = '0x4c7371a351a465c38dc129e4d084b9b8aef14041' -const FARM = '0xcc180bfa5d2c3ac191758b721c9bbbb263b3fd1c' -const TREASURY = '0xa5f3d6a33c5a5bcdff8f81c88ca00f457b699e0f' - -const ETF_INDEX_POOL = '0x60ebfd605cb25c7796f729c78a4453acecb1ce03' - -const TOKENS = { - USDEX_USDC_LP: '0x79f3bb5534b8f060b37b3e5dea032a39412f6b10', - DEXSHARE_BNB_LP: '0x65d83463fc023bffbd8ac9a1a2e1037f4bbdb399', - DEXIRA_BNB_LP: '0x01b279a06f5f26bd3f469a3e730097184973fc8a', - DEXSHARE: '0xf4914e6d97a75f014acfcf4072f11be5cffc4ca6', - DEXIRA: '0x147e07976e1ae78287c33aafaab87760d32e50a5', - WDEX_DEXSHARE: '0x6647047433df4cfc9912d092fd155b9d972a4a85', - BNB: ADDRESSES.bsc.WBNB, -}; - -const chain = 'bsc' -async function tvl(_, _b, { bsc: block }) { - const { output: tokens } = await sdk.api.abi.call({ - target: ETF_INDEX_POOL, - abi: ETF_ABI['getCurrentTokens'], - chain: 'bsc', - params: [] - }) - const balances = await sumTokens2({ chain, block, tokens, owner: ETF_INDEX_POOL, }) - return balances -} - -async function farmWDEX_DEXSHARE(_, _b, { bsc: block }) { - const [ - { output: bal }, - { output: iraBal }, - { output: shareBal }, - { output: totalSupply }, - ] = await Promise.all([ - sdk.api.abi.call({ chain, block, abi: 'erc20:balanceOf', target: TOKENS.WDEX_DEXSHARE, params: FARM }), - sdk.api.abi.call({ chain, block, abi: 'erc20:balanceOf', target: TOKENS.DEXIRA, params: TOKENS.WDEX_DEXSHARE }), - sdk.api.abi.call({ chain, block, abi: 'erc20:balanceOf', target: TOKENS.DEXSHARE, params: TOKENS.WDEX_DEXSHARE }), - sdk.api.abi.call({ chain, block, abi: 'erc20:totalSupply', target: TOKENS.WDEX_DEXSHARE, }), - ]) - const ratio = bal / totalSupply - const balances = {} - sdk.util.sumSingleBalance(balances, 'bsc:' + TOKENS.DEXIRA, BigNumber(iraBal * ratio).toFixed(0)) - sdk.util.sumSingleBalance(balances, 'bsc:' + TOKENS.DEXSHARE, BigNumber(shareBal * ratio).toFixed(0)) - return balances -} - -module.exports = { - bsc: { - tvl, - pool2: sdk.util.sumChainTvls([ - sumTokensExport({ chain, tokens: [TOKENS.USDEX_USDC_LP, TOKENS.DEXSHARE_BNB_LP,], owner: FARM, }), - farmWDEX_DEXSHARE - ]), - staking: sumTokensExport({ - chain, tokensAndOwners: [ - [TOKENS.DEXSHARE, REGULATION_STAKING_POOL,], - [TOKENS.DEXSHARE, REWARD_POOL,], - ], - }), - }, - hallmarks: [ - [1671483600, "DexEtf Launch"], - [1671656400, "DexVaults Launch"], - ], -}; \ No newline at end of file diff --git a/projects/dexilla/index.js b/projects/dexilla/index.js deleted file mode 100644 index 4261f539b1a..00000000000 --- a/projects/dexilla/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - era: { - exchanges: [ - '0xCA2eE260BFA64D8Fb01B1cd75615aAa42D528214', - '0x588450db6e3586Ec0468a7Bb36f1d5f3BbbE2084', - '0x0DE31204e919D71f0E7b9E5766950e99f1017826', - '0x16412BE389278B81594027E77FF9b61b2d200caa', - '0xE0D2833D9ED879D16BfC1cEc3573293770b8abBB', - '0x66831746E2F5a3CfC2A6E2b9eB5Ea8b7dd78Ee6A', - '0x795205f3D4C2132532a3a379cFA747c7A5B1aA90', - ], - }, - optimism: { - exchanges: [ - '0x189c3f9dcAfe968Be3620cC58274E7c5DF057C7c', - '0x68D05405472C4f0c254A47922Dba9dbC4CFf2bD9', - '0x8F1F6751236855391BbBEDBf4Bf5AD7e383E6e50', - '0xb0BE48F722a8AD727b99064EE18b715e9757e959', - '0x2d10b03854e970d3772434FF1133BCb3E59Ca4b8', - '0x2BF9D7e4173B882335b464e2fB38f5b57768ab61', - '0x44F1C33ED3bf77A5883cBEce1c1b34E71425CE84', - '0x6f1D074bf170fcDDE7712Bb8da4C70C5Be86884A', - ], - }, - arbitrum: { - exchanges: [ - '0x8ea13d1a455e5c5b425a6fc7260a01265d4c4673', - '0x8C9DBB80f12D0425eAf127FCC1D92FB21Cb4CE4C', - '0x66A724fa0CEB8adfa064afEf5102A2e04E4264c6', - '0x5dD2a1C1Fb25E30928C901a28Ceaf53E59B606dD', - '0xb56F90d3038AAD5B5E8de9be3008C7CCEA2D6600', - '0x51c0378f913Fe3b79580E54AE5FB8682b856b5B6', - ], - }, - base: { - exchanges: [ - '0x3F7F51983fb95084a5cb73EB2F28757Bd8bb65E3', - ], - }, - mode: { - exchanges: [ - '0xA3320CfD2027119fAe3DB4142546B86C6669646D', - '0x7165DE038b6b76F05F30696A40bEF228731D6DdC', - '0x4a0f2074F11FDB7084722fdF078e15E8E3a7A25D', - '0x72E0f90cdaEE4A919FA15F465e15210a5E5b9306', - ], - } -} - -module.exports = { - methodology: 'TVL counts the ERC20 tokens on the exchange contracts.', - start: '2023-06-01', // June 1, 2023 @ 9:09:40 (UTC +0) -} - -Object.keys(config).forEach(chain => { - const { exchanges } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: exchanges }) - const quoteTokens = await api.multiCall({ abi: 'address:quoteToken', calls: exchanges }) - return sumTokens2({ api, tokensAndOwners: exchanges.map((v, i) => [[baseTokens[i], v], [quoteTokens[i], v]]).flat() }) - } - } -}) diff --git a/projects/dexio-protocol/index.js b/projects/dexio-protocol/index.js deleted file mode 100644 index a75d6797c84..00000000000 --- a/projects/dexio-protocol/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - methodology: 'TVL counts staked DEXI coins on the platform itself. CoinGecko is used to find the price of tokens in USD.', - polygon: { - tvl:() => 0, - staking: staking(["0x6e17539F792A31F39cEEc0BcaB4079032523e3c7","0x233a2901EB51380E7Bf30fA3D31d4c326471B489","0x0C693035837C52Da8c2A4505bdf0f2aC43f9909C","0xA17c08d8FC00481A937ecE7FDF5C94082bdFFE17"], '0x65ba64899c2c7dbfdb5130e42e2cc56de281c78b') - }, - kava: { - tvl:() => 0, - staking: staking(["0xB8e29c001E41Bc3A3dF7E1A549bdd898640189F5","0x732Bb01c38b7092eB554A7779ad5F7BCd3430266","0x5a4C7C9d3126C57CDDc7856dfA085e5B775ce212","0x6FA2d43f7D766Fd9b2990426a06Bb24B4FBcE959"], '0xd22a58f79e9481d1a88e00c343885a588b34b68b') - }, -}; diff --git a/projects/dexit-swap/index.js b/projects/dexit-swap/index.js deleted file mode 100644 index b143c09e959..00000000000 --- a/projects/dexit-swap/index.js +++ /dev/null @@ -1,6 +0,0 @@ - -module.exports = { dexit: {} } - -module.exports.dexit.tvl = () => ({}) - -module.exports.deadFrom = '2023-06-01' \ No newline at end of file diff --git a/projects/dexlyn-dex/index.js b/projects/dexlyn-dex/index.js deleted file mode 100644 index 97cf7b86746..00000000000 --- a/projects/dexlyn-dex/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { - getAccountAllResources, - invokeViewFunction, - COIN_INFO_STRUCT_TYPE, -} = require("../helper/chain/supra"); -const { transformBalances } = require("../helper/portedTokens"); -const coreTokensAll = require("../helper/coreAssets.json"); - -const DEXLYN_LP_ACCOUNT_ADDRESS = - "0x22a28a1b5264935d4778d542b1e84bca8879cf78f6183e1a9429b56a40a1a7c4"; -const GET_POOL_RESERVE_SIZE_FUNCTION_TYPE = - "0x0dc694898dff98a1b0447e0992d0413e123ea80da1021d464a4fbaf0265870d8::liquidity_pool::get_reserves_size"; - -const singleLevelStructTypeToStr = (structType) => { - return `0x${structType.address.match(new RegExp(`[^${0}].*`))?.[0] || ""}::${ - structType.module - }::${structType.name}`; -}; - -const calculateDexlynTVL = async (api) => { - let accountResources = await getAccountAllResources( - DEXLYN_LP_ACCOUNT_ADDRESS - ); - let chain = api.chain; - const coreTokens = Object.values(coreTokensAll[chain] ?? {}); - let balances = {}; - - for (const resource of accountResources) { - if (resource[0].includes(COIN_INFO_STRUCT_TYPE)) { - let xCoinType = singleLevelStructTypeToStr( - resource[1].type_args[0].struct.type_args[0].struct - ); - let yCoinType = singleLevelStructTypeToStr( - resource[1].type_args[0].struct.type_args[1].struct - ); - let curveType = singleLevelStructTypeToStr( - resource[1].type_args[0].struct.type_args[2].struct - ); - - let isCoreAssetX = coreTokens.includes(xCoinType); - let isCoreAssetY = coreTokens.includes(yCoinType); - if (isCoreAssetX || isCoreAssetY) { - let [reserveX, reserveY] = await invokeViewFunction( - GET_POOL_RESERVE_SIZE_FUNCTION_TYPE, - [xCoinType, yCoinType, curveType], - [] - ); - if (isCoreAssetX && isCoreAssetY) { - sdk.util.sumSingleBalance(balances, xCoinType, reserveX); - sdk.util.sumSingleBalance(balances, yCoinType, reserveY); - } else if (isCoreAssetX) { - sdk.util.sumSingleBalance(balances, xCoinType, reserveX * 2); - } else if (isCoreAssetY) { - sdk.util.sumSingleBalance(balances, yCoinType, reserveY * 2); - } - } - } - } - return transformBalances(chain, balances); -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - supra: { - tvl: calculateDexlynTVL, - }, -}; \ No newline at end of file diff --git a/projects/dexodus/index.js b/projects/dexodus/index.js deleted file mode 100644 index 4fba379a55c..00000000000 --- a/projects/dexodus/index.js +++ /dev/null @@ -1,115 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - methodology: 'Counts the tokens in the Dexodus liquidity pool, perp dex contract, referrals contract, top 20 crypto market index fund contract and index fund token holder.', -} - -const config = { - ethereum: { - owners: [ - '0x349f287e595022fc4E160b5699Ef4C7922b6f8F3' // Dexodus index fund token holder address - ], tokens: [ - ADDRESSES.ethereum.WBTC, // btc - ADDRESSES.null, // eth - ADDRESSES.ethereum.WETH, // eth - '0x39fBBABf11738317a448031930706cd3e612e1B9', // xrp - ADDRESSES.ethereum.BNB, // bnb - '0x418D75f65a02b3D53B2418FB8E1fe493759c7605', // bnb - ADDRESSES.ethereum.WSOL, // sol - '0x4206931337dc273a630d328dA6441786BfaD668f', // doge - ADDRESSES.ethereum.LINK, // link - '0x85f138bfEE4ef8e540890CFb48F620571d67Eda3', // avax - '0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1', // ton - '0x3593D125a4f7849a1B059E64F4517A86Dd60c95d', // om - ADDRESSES.ethereum.UNI, // uni - ADDRESSES.ethereum.AAVE, // aave - '0x3c3a81e81dc49A522A592e7622A7E711c06bf354', // mnt - '0xfAbA6f8e4a5E8Ab82F62fe7C39859FA577269BE3', // ondo - '0xA0b73E1Ff0B80914AB6fe0444E65848C4C34450b', // cro - '0x77E06c9eCCf2E797fd462A92B6D7642EF85b0A44', // tao - '0x57e114B691Db790C35207b2e685D4A43181e6061' // ena - ] - }, - base: { - owners: [ - '0x1A84d7E27e7f0e93Da74b93095e342b6e8dBd50A', // Dexodus liquidity pool address - '0x39016479A05626Df9BA4cB80864E1B3b69D694b4', // Dexodus perp dex address - '0x1692992ee7EE987510Dd32BFCeF2C08C8080d5b2', // Dexodus referrals address - '0x60d5BCF7079879C2FF54Ae5dd1EfE2c13527c98F', // Dexodus index fund smart contract address - '0x349f287e595022fc4E160b5699Ef4C7922b6f8F3' // Dexodus index fund token holder address - ], tokens: [ - ADDRESSES.base.USDC, // usdc - ADDRESSES.bsc.WBTC, // btc - '0xF1143f3A8D76f1Ca740d29D5671d365F66C44eD1', // btc - ADDRESSES.null, // eth - ADDRESSES.optimism.WETH_1, // eth - '0x71b35ECb35104773537f849FBC353F81303A5860', // eth - ADDRESSES.katana.uXRP, // xrp - '0x7fdAa50d7399ac436943028edA6ed9a1BD89509f', // bnb - ADDRESSES.katana.uSOL, // sol - '0x1C61629598e4a901136a81BC138E5828dc150d67', // sol - '0x12E96C2BFEA6E835CF8Dd38a5834fa61Cf723736', // doge - ADDRESSES.katana.uADA, // ada - '0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196', // link - ADDRESSES.katana.uSUI, // sui - '0x51436F6bD047797DE7D11E9d32685f029aed1069', // ton - '0x3992B27dA26848C2b19CeA6Fd25ad5568B68AB98', // om - '0xc3De830EA07524a0761646a6a4e4be0e114a3C83', // uni - '0x63706e401c06ac8513145b7687A14804d17f814b', // aave - ADDRESSES.swellchain.ENA // ena - ] - }, - bsc: { - owners: [ - '0x349f287e595022fc4E160b5699Ef4C7922b6f8F3' // Dexodus index fund token holder address - ], tokens: [ - ADDRESSES.bsc.WBTC, // btc - '0x4DB5a66E937A9F4473fA95b1cAF1d1E1D62E29EA', // eth - ADDRESSES.bsc.ETH, // eth - '0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE', // xrp - ADDRESSES.null, // bnb - ADDRESSES.bsc.WBNB, // bnb - '0xfA54fF1a158B5189Ebba6ae130CEd6bbd3aEA76e', // sol - '0x570A5D26f7765Ecb712C0924E4De545B89fD43dF', // sol - '0x4206931337dc273a630d328dA6441786BfaD668f', // doge - '0xbA2aE424d960c26247Dd6c32edC70B295c744C43', // doge - '0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47', // ada - '0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD', // link - '0x1CE0c2827e2eF14D5C4f29a091d735A204794041', // avax - '0x76A797A59Ba2C17726896976B7B3747BfD1d220f', // ton - '0xF78D2e7936F5Fe18308A3B2951A93b6c4a41F5e2', // om - '0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402', // dot - '0xBf5140A22578168FD562DCcF235E5D43A02ce9B1', // uni - '0xfb6115445Bff7b52FeB98650C87f44907E58f802', // aave - ADDRESSES.swellchain.ENA // ena - ] - }, - cronos: { - owners: [ - '0x349f287e595022fc4E160b5699Ef4C7922b6f8F3' // Dexodus index fund token holder address - ], tokens: [ - ADDRESSES.cronos.WBTC, // btc - '0xe44Fd7fCb2b1581822D0c862B68222998a0c299a', // eth - '0xb9Ce0dd29C91E02d4620F57a66700Fc5e41d6D15', // xrp - ADDRESSES.telos.ETH, // bnb - '0xc9DE0F3e08162312528FF72559db82590b481800', // sol - '0x1a8E39ae59e5556B56b76fCBA98d22c9ae557396', // doge - '0x0e517979C2c1c1522ddB0c73905e0D39b3F990c0', // ada - '0xBc6f24649CCd67eC42342AccdCECCB2eFA27c9d9', // link - '0x8d58088D4E8Ffe75A8b6357ba5ff17B93B912640', // avax - '0x81710203A7FC16797aC9899228a87fd622df9706', // sui - '0x994047FE66406CbD646cd85B990E11D7F5dB8fC7', // dot - '0x16aD43896f7C47a5d9Ee546c44A22205738B329c', // uni - '0xE657b115bc45c0786274c824f83e3e02CE809185', // aave - ADDRESSES.null, // cro - ADDRESSES.cronos.WCRO_1 // cro - ] - }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/dexpad/abis.js b/projects/dexpad/abis.js deleted file mode 100644 index ff1c2097654..00000000000 --- a/projects/dexpad/abis.js +++ /dev/null @@ -1,12 +0,0 @@ - -const getNumLockedTokens = "uint256:getNumLockedTokens" -const lockedTokensLength = "uint256:lockedTokensLength" -const getLockedTokenAtIndex = 'function getLockedTokenAtIndex(uint256 _index) view returns (address)' -const lockedToken = 'function lockedTokens(uint256) view returns (address)' - -module.exports = { - getLockedTokenAtIndex, - getNumLockedTokens, - lockedTokensLength, - lockedToken -} \ No newline at end of file diff --git a/projects/dexpad/api.js b/projects/dexpad/api.js deleted file mode 100644 index e0fc574719d..00000000000 --- a/projects/dexpad/api.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./index') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("dexpad", chainKeys), -} - -module.exports = indexExports -module.exports.misrepresentedTokens = true diff --git a/projects/dexpad/apiCache.js b/projects/dexpad/apiCache.js deleted file mode 100644 index 45f0e74f6c3..00000000000 --- a/projects/dexpad/apiCache.js +++ /dev/null @@ -1,88 +0,0 @@ -const { polygonContractData, - avalancheContractData, cronosContractData, kavaContractData } = require('./config') - const { getCache, setCache, } = require("../helper/cache") - const { vestingHelper, } = require("../helper/unknownTokens") -const sdk = require('@defillama/sdk') - -const project = 'bulky/dexpad' - -function tvl(args) { - return async (timestamp, ethBlock, chainBlocks) => { - let totalBalances = {} - for (let i = 0; i < args.length; i++) { - const chain = args[i].chain - const contract = args[i].contract - let block = chainBlocks[chain] - const cache = await getCache(project, chain) || {} - if (!cache[contract]) cache[contract] = { tokens: [], lastTotalDepositId: 0 } - const cCache = cache[contract] - const calls = [] - - const { output: totalDepositId } = await sdk.api.abi.call({ - target: contract, - abi: args[i].getNumLockedTokensABI, - chain, block, - }) - - for (let j = cCache.lastTotalDepositId; j < +totalDepositId; j++) - calls.push({ params: j }) - - - - let tokens = cCache.tokens; - cCache.lastTotalDepositId = +totalDepositId - const lpAllTokens = ( - await sdk.api.abi.multiCall({ - target: contract, - abi: args[i].getLockedTokenAtIndexABI, - calls, chain, block, - }) - ).output - - lpAllTokens.forEach(lp => { - if (!lp.success) return; - const lpToken = lp.output - tokens.push(lpToken) - }) - - const blacklist = [...(args[i].pool2 || [])] - - if (chain === 'ethereum') - blacklist.push('0x72E5390EDb7727E3d4e3436451DADafF675dBCC0') // HANU - - let balances = await vestingHelper({ - chain, block, - owner: contract, - useDefaultCoreAssets: true, - blacklist, - tokens, - cache, - }) - await setCache(project, chain, cache) - - for (const [token, balance] of Object.entries(balances)) - sdk.util.sumSingleBalance(totalBalances, token, balance) - } - return totalBalances - } -} -module.exports = { - methodology: - `Counts each LP pair's native token and - stable balance, adjusted to reflect locked pair's value. - Balances and merged across multiple - locker and staking contracts to return sum TVL per chain`, - cronos: { - tvl: tvl(cronosContractData) - }, - polygon: { - tvl: tvl(polygonContractData) - }, - avax: { - tvl: tvl(avalancheContractData) - }, - kava: { - tvl: tvl(kavaContractData) - } -} - diff --git a/projects/dexpad/config.js b/projects/dexpad/config.js deleted file mode 100644 index 89444a802a1..00000000000 --- a/projects/dexpad/config.js +++ /dev/null @@ -1,91 +0,0 @@ -// const { ethereum } = require(".") - -const { getNumLockedTokens, getLockedTokenAtIndex} = require('./abis') - -const config = { - kavaLocker: { - chain: 'kava', - locker: '0x99d17986fcffeb42700f6a9fcd15927bf1fd0df3', - factory: '0x4FD2c40c25Dd40e9Bf0CE8479bA384178b8671b5', - startingBlock: 34954 - }, - cronosLockerV1: { - chain: 'cronos', - locker: '0x16678dd963D3C17DD5232c0eE9568e19a9ACB2B6', //v1 Contract - factory: '0x462C98Cae5AffEED576c98A55dAA922604e2D875', - startingBlock: 8037 - }, - cronosLockerV2: { - chain: 'cronos', - locker: '0x09Abe30F5E0E01AC12618eF9eD378aA95dF0aE2D', //V2 Contract - factory: '0x462C98Cae5AffEED576c98A55dAA922604e2D875', - startingBlock: 343983 - }, - polygonLocker: { - chain: 'polygon', - locker: '0x36CdC42a5e9DFCeB3a5cC240c7B477645d4E894a', - factory: '0x5757371414417b8c6caad45baef941abc7d3ab32', - startingBlock: 23891396 - }, - avaxLocker: { - chain: 'avax', - locker: '0xE7e840Be67B9381D164AbA4CDf30E491d7E36201', - factory: '0x091d35d7F63487909C863001ddCA481c6De47091', - startingBlock: 9771636 - }, -} - -const kavaContractData = [ - { // KavaLocker - chain: config.kavaLocker.chain, - contract: config.kavaLocker.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.kavaLocker.factory - } -] -const cronosContractData = [ - { // cronosLockerV1 - chain: config.cronosLockerV1.chain, - contract: config.cronosLockerV1.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.cronosLockerV1.factory, - }, - { // cronosLockerV2 - chain: config.cronosLockerV2.chain, - contract: config.cronosLockerV2.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.cronosLockerV2.factory, - }, -] -const polygonContractData = [ - { // Polygon Locker - chain: config.polygonLocker.chain, - contract: config.polygonLocker.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.polygonLocker.factory - }, -] - - -const avalancheContractData = [ - { // AvaxLocker - chain: config.avaxLocker.chain, - contract: config.avaxLocker.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.avaxLocker.factory - }, - -] - - -module.exports = { - kavaContractData, - cronosContractData, - polygonContractData, - avalancheContractData -} \ No newline at end of file diff --git a/projects/dexpad/index.js b/projects/dexpad/index.js deleted file mode 100644 index 3e64c46084b..00000000000 --- a/projects/dexpad/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const {polygonContractData, - avalancheContractData, cronosContractData, kavaContractData } = require('./config') -const { vestingHelper } = require("../helper/unknownTokens") -const sdk = require('@defillama/sdk') - -function tvl(args){ - return async (timestamp, ethBlock, chainBlocks) => { - let totalBalances = {} - for (let i = 0; i < args.length; i++) { - const chain = args[i].chain - const contract = args[i].contract - let block = chainBlocks[chain] - const { output: totalDepositId } = await sdk.api.abi.call({ - target: contract, - abi: args[i].getNumLockedTokensABI, - chain, block, - }) - - let tokens = []; - const allDepositId = Array.from(Array(+totalDepositId).keys()); - const lpAllTokens = ( - await sdk.api.abi.multiCall({ - abi: args[i].getLockedTokenAtIndexABI, - calls: allDepositId.map((num) => ({ - target: contract, - params: num, - })), - chain: chain, - block: block - }) - ).output - - lpAllTokens.forEach(lp => { - if (!lp.success) return; - const lpToken = lp.output - tokens.push(lpToken) - }) - - const blacklist = [...(args[i].pool2 || [])] - - if (chain === 'ethereum') - blacklist.push('0x72E5390EDb7727E3d4e3436451DADafF675dBCC0') // HANU - - let balances = await vestingHelper({ - chain, block, - owner: contract, - useDefaultCoreAssets: true, - blacklist, - tokens, - }) - - for (const [token, balance] of Object.entries(balances)) - sdk.util.sumSingleBalance(totalBalances, token, balance) - } - return totalBalances - } -} -module.exports = { - methodology: - `Counts each LP pair's native token and - stable balance, adjusted to reflect locked pair's value. - Balances and merged across multiple - locker and staking contracts to return sum TVL per chain`, - cronos: { - tvl: tvl(cronosContractData) - }, - polygon: { - tvl: tvl(polygonContractData) - }, - avax: { - tvl: tvl(avalancheContractData) - }, - kava:{ - tvl: tvl(kavaContractData) - } -} - diff --git a/projects/dexswap-arbi/index.js b/projects/dexswap-arbi/index.js deleted file mode 100644 index 8b46b8d8fe9..00000000000 --- a/projects/dexswap-arbi/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: getUniTVL({ factory: '0x3E40739d8478c58f9B973266974C58998D4F9e8b', useDefaultCoreAssets: true, }), - } -} diff --git a/projects/dexter-tezos/index.js b/projects/dexter-tezos/index.js deleted file mode 100644 index a4333aaad93..00000000000 --- a/projects/dexter-tezos/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - const tsString = new Date(api.timestamp * 1000).toISOString() - const addBal = bal => api.add('coingecko:tezos', bal * 2/ 1e6, { skipChain: true }) - const getBal = async (address) => get(`https://api.tzkt.io/v1/accounts/${address}/balance_history/${tsString}`) - - const owners = [ - 'KT1Puc9St8wdNoGtLiD2WXaHbWU7styaxYhD', - 'KT1Tr2eG3eVmPRbymrbU2UppUmKjFPXomGG9', - 'KT1DrJV8vhkdLEj76h1H9Q4irZDqAkMPo1Qf', - 'KT1BGQR7t4izzKZ7eRodKWTodAsM23P38v7N', - 'KT1AbYeDbjjcAnV1QK7EZUUdqku77CdkTuv6', - 'KT19c8n5mWrqpxMcR3J687yssHxotj88nGhZ', - 'KT1PDrBE59Zmxnb8vXRgRAG1XmvTMTs5EDHU', - ] - - if (api.timestamp < 1613861579 && api.timestamp > 1612738379) - owners.push('KT1Xf2Cwwwh67Ycu7E9yd3UhsABQC4YZPkab') - - - await Promise.all(owners.map(i => getBal(i).then(addBal))) - return api.getBalances() -} - -module.exports = { - misrepresentedTokens: true, - tezos: { - tvl, - } -} \ No newline at end of file diff --git a/projects/dexter/index.js b/projects/dexter/index.js deleted file mode 100644 index b1cd6dc85af..00000000000 --- a/projects/dexter/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); -const { transformDexBalances } = require("../helper/portedTokens"); - -const faultyPoolIds = [1, 7, 9, 11] - -const chainConfigs = { - persistence: { - contract: 'persistence1k8re7jwz6rnnwrktnejdwkwnncte7ek7gt29gvnl3sdrg9mtnqkstujtpg' - }, - babylon: { - contract: 'bbn18rdj3asllguwr6lnyu2sw8p8nut0shuj3sme27ndvvw4gakjnjqqczzj4x' - } -} - -async function tvl(api) { - const chain = api.chain - const config = chainConfigs[chain] - const { contract } = config - const poolConfig = await queryContract({ chain, contract, data: { config: {} }, }); - let poolId = 1 - const data = [] - do { - if (faultyPoolIds.includes(poolId)) { - poolId++ - continue - } - const { assets } = await queryContract({ chain, contract, data: { get_pool_by_id: { pool_id: '' + poolId } }, }) - assets.forEach(({ info: { native_token: { denom }}, amount }) => api.add(denom, amount)) - poolId++ - } while (poolId < +poolConfig.next_pool_id) - return transformDexBalances({ chain, data, balances: api.getBalances()}) -} - -module.exports = { - timetravel: false, - // misrepresentedTokens: true, - methodology: `Counts the liquidity on all AMM pools`, - start: '2023-03-26', // "2023-03-26" UTC - persistence: { - tvl - }, - babylon: { - tvl - } -} diff --git a/projects/dextf/index.js b/projects/dextf/index.js deleted file mode 100644 index b168b0d1bd3..00000000000 --- a/projects/dextf/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const TVLV1 = require('./v1'); -const tvlV2 = require('./v2'); -const sdk = require('@defillama/sdk'); - -module.exports = { - start: '2020-07-27', // 27/07/2020 @ 12:43:45am (UTC) - ethereum: { tvl: sdk.util.sumChainTvls([TVLV1, tvlV2]) }, - avax: { tvl: tvlV2 }, - era: { tvl: tvlV2 } -} \ No newline at end of file diff --git a/projects/dextf/v1.js b/projects/dextf/v1.js deleted file mode 100644 index 5e12a9cbe89..00000000000 --- a/projects/dextf/v1.js +++ /dev/null @@ -1,5 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const vaultAddress = "0x86C077092018077Df34FF44D5D7d3f9A2DF03bEf" - -module.exports = sumTokensExport({ owner: vaultAddress, fetchCoValentTokens: true, }) diff --git a/projects/dextf/v2.js b/projects/dextf/v2.js deleted file mode 100644 index 4f0a2b258b1..00000000000 --- a/projects/dextf/v2.js +++ /dev/null @@ -1,26 +0,0 @@ -const START_BLOCK = 12783638; -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - ethereum: { factory: '0xE0CF093Ce6649Ef94fe46726745346AFc25214D8', }, - avax: { factory: '0xEC143bb9FEE95B7726bF49108f085D02816e53eA', }, - era: { factory: '0x44E12D14b63806A817B1AA6886215caA6aa136a7', }, -} - -module.exports = async function tvl(api) { - const { factory } = config[api.chain] - - const sets = await api.call({ - target: factory, - abi: 'address[]:getSets', - }) - - const components = await api.multiCall({ - abi: 'address[]:getComponents', - calls: sets, - }) - - const toa = [] - components.forEach((tokens, i) => toa.push(...tokens.map(t => ([t, sets[i]])))) - return sumTokens2({ api, tokensAndOwners: toa }) -}; diff --git a/projects/dfdv-staked-sol/index.js b/projects/dfdv-staked-sol/index.js deleted file mode 100644 index 836e16af458..00000000000 --- a/projects/dfdv-staked-sol/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('pyZMBjpWsVjKANAYK5mpNbKiws2krjRPZ2N2UYCSnbP', api) -} - -module.exports = { - timetravel: false, - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/dforce/abi.json b/projects/dforce/abi.json deleted file mode 100644 index 78e231a39ad..00000000000 --- a/projects/dforce/abi.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "getBaseData": "function getBaseData() returns (uint256, uint256, uint256, uint256, uint256)", - "balanceOfUnderlying": "function balanceOfUnderlying(address _account) view returns (uint256)", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "totalSupply": "uint256:totalSupply", - "exchangeRateCurrent": "uint256:exchangeRateCurrent", - "underlying": "address:underlying", - "getUnderlyingPrice": "function getUnderlyingPrice(address _asset) view returns (uint256)", - "getAlliTokens": "address[]:getAlliTokens", - "isiToken": "bool:isiToken", - "getCurrentExchangeRate": "uint256:getCurrentExchangeRate", - "oracle": "address:priceOracle" -} \ No newline at end of file diff --git a/projects/dforce/index.js b/projects/dforce/index.js deleted file mode 100644 index e8d7eef6452..00000000000 --- a/projects/dforce/index.js +++ /dev/null @@ -1,208 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); - -const BigNumber = require('bignumber.js'); -const abi = require('./abi.json'); -const BASE = BigNumber(10 ** 18) -const { compoundExports2 } = require('../helper/compound') - - -const PAX = "0x8E870D67F660D95d5be530380D0eC0bd388289E1"; -const TUSD = ADDRESSES.ethereum.TUSD; -const USDC = ADDRESSES.ethereum.USDC; - -/*================================================== - USDx - ==================================================*/ -const usdxReservedTokens = [PAX, TUSD, USDC]; -const usdxPool = "0x7FdcDAd3b4a67e00D9fD5F22f4FD89a5fa4f57bA"; // USDx Stablecoin Pool - - -/*================================================== - GOLDx Protocol - ==================================================*/ -const goldxReserve = "0x45804880De22913dAFE09f4980848ECE6EcbAf78"; // PAXG -const goldxProtocol = "0x355C665e101B9DA58704A8fDDb5FeeF210eF20c0"; // GOLDx - -let allControllers = { - ethereum: [ - "0x1E96e916A64199069CcEA2E6Cf4D63d30a61b93d", // dForce vault pool: USX/3CRV - "0x8f1f15DCf4c70873fAF1707973f6029DEc4164b3", // liqee general pool - ], - bsc: [ - "0x6d290f45A280A688Ff58d095de480364069af110" // liqee general pool - ], - arbitrum: [ - "0x50210A88217d1dD9e7FBc3E4a927Cc55829a38eB", // dForce vault pool: USX/2CRV - "0xcfe6d1b2BE777f20AD6F98f1c12C6436652F2031", // dForce vault pool: iwstETH - "0xB5b3da79789dE012Fd75108138b2315E5645715A", // dForce vault pool: saETH - ], - optimism: ["0xdF0e115aA822443df9200Cc5d0260FA8E1aF06F5"], // dForce vault pool: iwstETH - polygon: [], - avax: ["0x078ad8d6faeD9DAeE55f5d446C80E0C81230DE6b"], - kava: ["0xFBf64A8cAEA1D641affa185f850dbBF90d5c84dC"], - conflux: [] -}; - -let yieldMarkets = { - ethereum: [ - "0x02285AcaafEB533e03A7306C55EC031297df9224", // dDAI - "0x109917F7C3b6174096f9E1744e41ac073b3E1F72", // dUSDx - "0x16c9cF62d8daC4a38FB50Ae5fa5d51E9170F3179", // dUSDC - "0x868277d475E0e475E38EC5CdA2d9C83B5E1D9fc8" // dUSDT - ], - bsc: [ - "0xce14792a280b20c4f8E1ae76805a6dfBe95729f5", // dBUSD - "0x4E0B5BaFC52D09A8F18eA0b7a6A7dc23A1096f99", // dDAI - "0x6c0F322442D10269Dd557C6e3A56dCC3a1198524", // dUSDC - "0x6199cC917C12E4735B4e9cEfbe29E9F0F75Af9E5" // dUSDT - ] -}; - -const excludeAlliTokens = { - ethereum: [ - "0x1adc34af68e970a93062b67344269fd341979eb0", // General pool USX - "0x44c324970e5cbc5d4c3f3b7604cbc6640c2dcfbf", // General pool EUX - "0xb986f3a2d91d3704dc974a24fb735dcc5e3c1e70", // General pool EUX - "0xf54954ba7e3cdfda23941753b48039ab5192aea0", // Stock pool USX - "0xab9c8c81228abd4687078ebda5ae236789b08673", // Stock pool EUX - "0xa5d65e3bd7411d409ec2ccfa30c6511ba8a99d2b", // Liqee qUSX - "0x4c3f88a792325ad51d8c446e1815da10da3d184c" // Liqee iMUSX - ], - // Optimism - optimism: [ - "0x7e7e1d8757b241aa6791c089314604027544ce43" // iUSX - ], - // BNB-Chain - bsc: [ - "0x463e3d1e01d048fdf872710f7f3745b5cdf50d0e", - "0x367c17d19fcd0f7746764455497d63c8e8b2bba3", - "0x20ecc92f0a33e16e8cf0417dfc3f586cf597f3a9", - "0xb5102cee1528ce2c760893034a4603663495fd72", // iUSX - "0x7b933e1c1f44be9fb111d87501baada7c8518abe", // General pool USX - "0x983a727aa3491ab251780a13acb5e876d3f2b1d8", // General pool EUX - "0x911f90e98d5c5c3a3b0c6c37bf6ea46d15ea6466", // Stock pool USX - "0x8af4f25019e00c64b5c9d4a49d71464d411c2199", // Stock pool EUX - "0x450e09a303aa4bcc518b5f74dd00433bd9555a77", // Liqee qUSX - "0xee0d3450b577743eee2793c0ec6d59361eb9a454" // Liqee iMUSX - ], - // Polygon - polygon: [ - "0xc171ebe1a2873f042f1dddd9327d00527ca29882", // iUSX - "0x448bbbdb706cd0a6ab74fa3d1157e7a33dd3a4a8" - ], - // Arbitrum - arbitrum: [ - "0x0385f851060c09a552f1a28ea3f612660256cbaa", // iUSX - "0x5675546eb94c2c256e6d7c3f7dcab59bea3b0b8b", // iEUX - "0xc2125882318d04d266720b598d620f28222f3abd" // iEUX - ], - avax: [ - "0x73c01b355f2147e5ff315680e068354d6344eb0b" // iUSX - ], - kava: [ - "0x9787af345e765a3fbf0f881c49f8a6830d94a514" // iUSX - ], - conflux: [ - "0x6f87b39a2e36F205706921d81a6861B655db6358" // iUSX - ] -}; - -// DF staking pool: sDF -const dfStakingPools = "0x41602ccf9b1F63ea1d0Ab0F0A1D2F4fd0da53f60"; - -const USXs = { - "ethereum": ADDRESSES.ethereum.USX, - "bsc": "0xb5102cee1528ce2c760893034a4603663495fd72", - "arbitrum": "0x641441c631e2f909700d2f41fd87f0aa6a6b4edb", - "polygon": "0xCf66EB3D546F0415b368d98A95EAF56DeD7aA752", - "avax": "0x853ea32391AaA14c112C645FD20BA389aB25C5e0", - "kava": ADDRESSES.kava.USX, - "conflux": "0x422a86f57b6b6F1e557d406331c25EEeD075E7aA" -}; - -async function getDFStakingValue(block) { - // Mainnet DF - const DF = "0x431ad2ff6a9C365805eBaD47Ee021148d6f7DBe0"; - - const { output: stakingExchangeRate } = await sdk.api.abi.call({ - block, - target: dfStakingPools, - abi: abi["getCurrentExchangeRate"], - chain: "ethereum" - }); - - const { output: stakingTotalSupply } = await sdk.api.abi.call({ - block, - target: dfStakingPools, - abi: abi["totalSupply"], - chain: "ethereum" - }); - - const lockedDF = BigNumber(stakingExchangeRate.toString()).times(BigNumber(stakingTotalSupply.toString())).div(BASE); - - return { - [DF]: lockedDF - }; -} - -async function getTVLOfdToken(api) { - let dTokens = yieldMarkets[api.chain]; - if (!dTokens) return; - const uTokens = await api.multiCall({ abi: 'address:token', calls: dTokens }) - const bals = await api.multiCall({ abi: 'uint256:getTotalBalance', calls: dTokens }) - api.add(uTokens, bals) -} - -function getTVLByChain(chain) { - return async (api) => { - if (chain == "ethereum") { - const ownerTokens = [[usdxReservedTokens, usdxPool], [[goldxReserve], goldxProtocol]] - await api.sumTokens({ ownerTokens }) - } - - await getTVLOfdToken(api); - return api.getBalances() - } -} - -function getLendingTvl(chain, borrowed) { - const controllers = allControllers[chain] - const blacklistedTokens = excludeAlliTokens[chain] - if (USXs[chain]) - blacklistedTokens.push(USXs[chain]) - if (yieldMarkets[chain]) - blacklistedTokens.push(...yieldMarkets[chain]) - - const res = controllers.map(comptroller => compoundExports2({ - comptroller, abis: { getAllMarkets: abi['getAlliTokens'] }, blacklistedTokens, - })).map(i => borrowed ? i.borrowed : i.tvl) - if (!borrowed) - res.push(getTVLByChain(chain)) - return sdk.util.sumChainTvls(res) -} - -function chainTvl(chain) { - return { - tvl: getLendingTvl(chain, false), - borrowed: getLendingTvl(chain, true), - }; -} - -async function staking(timestamp, ethBlock, chainBlocks) { - return getDFStakingValue(ethBlock); -} - -const chains = ['ethereum', "bsc", "arbitrum", "optimism", "polygon", "avax", "kava", "conflux"] - -module.exports = { - start: '2019-07-26', // Jul-27-2019 02:17:24 AM +UTC - hallmarks: [ - ['2023-12-19', 'Unitus spin-off'], - ], -} -chains.forEach(chain => { - module.exports[chain] = chainTvl(chain) -}) - -module.exports.ethereum.staking = staking diff --git a/projects/dforce/tokenMapping.json b/projects/dforce/tokenMapping.json deleted file mode 100644 index 43e752646f1..00000000000 --- a/projects/dforce/tokenMapping.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "0x0000000000085d4780B73119b644AE5ecd22b376": "0x6E6a689a5964083dFf9FD7A0f788BAF620ea2DBe", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": "0x2f956b2f801c6dad74E87E7f45c94f6283BF0f45", - "0x8E870D67F660D95d5be530380D0eC0bd388289E1": "0x24677e213DeC0Ea53a430404cF4A11a6dc889FCe", - "0x355C665e101B9DA58704A8fDDb5FeeF210eF20c0": "0x164315EA59169D46359baa4BcC6479bB421764b6", - "0x6B175474E89094C44Da98b954EedeAC495271d0F": "0x298f243aD592b6027d4717fBe9DeCda668E3c3A8", - "0xdAC17F958D2ee523a2206206994597C13D831ec7": "0x1180c114f7fAdCB6957670432a3Cf8Ef08Ab5354", - "0xeb269732ab75A6fD61Ea60b06fE994cD32a83549": "0x6E6a689a5964083dFf9FD7A0f788BAF620ea2DBe", - "0x0a5E677a6A24b2F1A2Bf4F3bFfC443231d2fDEc8": "0x1AdC34Af68e970a93062b67344269fD341979eb0", - "0xb986F3a2d91d3704Dc974A24FB735dCc5E3C1E70": "0x44c324970e5CbC5D4C3F3B7604CbC6640C2dcFbF", - "0x527Ec46Ac094B399265d1D71Eff7b31700aA655D": "0x4013e6754634ca99aF31b5717Fa803714fA07B35", - "0x8d2Cb35893C01fa8B564c84Bd540c5109d9D278e": "0x237C69E082A94d37EBdc92a84b58455872e425d6", - "0xc4Ba45BeE9004408403b558a26099134282F2185": "0x3481E1a5A8014F9C7E03322e4d4532D8ec723409", - "0x966E726853Ca97449F458A3B012318a08B508202": "0xaab2BAb88ceeDCF6788F45885155B278faD09110", - "0x32F9063bC2A2A57bCBe26ef662Dc867d5e6446d1": "0xb0ffBD1E81B60C4e8a8E19cEF3A6A92fe18Be86D", - "0x8dc6987F7D8E5aE9c39F767A324C5e46C1f731eB": "0xa4C13398DAdB3a0A7305647b406ACdCD0689FCC5", - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56": "0x5511b64Ae77452C7130670C79298DEC978204a47", - "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3": "0xAD5Ec11426970c32dA48f58c92b1039bC50e5492", - "0x55d398326f99059fF775485246999027B3197955": "0x0BF8C72d618B5d46b055165e21d661400008fa0F", - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d": "0xAF9c10b341f55465E8785F0F81DBB52a9Bfe005d", - "0xCf66EB3D546F0415b368d98A95EAF56DeD7aA752": "0xc171EBE1A2873F042F1dDdd9327D00527CA29882", - "0x853ea32391AaA14c112C645FD20BA389aB25C5e0": "0x73C01B355F2147E5FF315680E068354D6344Eb0b", - "0xDb0E1e86B01c4ad25241b1843E407Efc4D615248": "0x9787aF345E765a3fBf0F881c49f8A6830D94A514" -} diff --git a/projects/dfs/index.js b/projects/dfs/index.js deleted file mode 100644 index 9cb33ce8506..00000000000 --- a/projects/dfs/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { get_account_tvl } = require('../helper/chain/eos'); - -const tokens = [ - ['eosio.token', 'EOS', 'eos'], - ['tethertether', 'USDT', 'tether'], - ['btc.ptokens', 'PBTC', 'ptokens-btc'], - ['token.defi', 'BOX', 'defibox'], - ['minedfstoken', 'DFS', 'defis-network'], - ['emanateoneos', 'EMT', 'emanate'], - ['token.newdex', 'DEX', 'newdex-token'], - ['chexchexchex', 'CHEX', 'chex-token'], - ['everipediaiq', 'IQ', 'everipedia'], - ['eosiotptoken', 'TPT', 'token-pocket'], - ['core.ogx', 'OGX', 'organix'], -]; - -// https://apps.defis.network/ -// AMM swap -async function eos() { - return await get_account_tvl('defisswapcnt', tokens); -} - -// https://dfs.land/ -const axios = require('axios'); -const endpoint = 'https://api.dfs.land'; -async function dfs() { - const info = await axios(`${endpoint}/v1/chain/get_table_rows`, { - method: 'POST', - data: JSON.stringify({ - code: 'swapswapswap', - scope: 'swapswapswap', - table: 'markets', - json: true, - limit: -1, - }), - }); - const markets = info.data.rows || []; - const dfsMkt = markets.find((m) => m.mid == 1); - let dfsPrice = 1; - if (!dfsMkt) { - dfsPrice = 1; - } else { - dfsPrice = parseFloat(dfsMkt.reserve0) / parseFloat(dfsMkt.reserve1); - } - let tvl = 0; - for (let i = 0; i < markets.length; i++) { - const m = markets[i]; - if (m.contract0 == 'usdtusdtusdt' && m.sym0 == '8,USDT') { - tvl += parseFloat(m.reserve0) * 2; - } else if (m.contract1 == 'usdtusdtusdt' && m.sym1 == '8,USDT') { - tvl += parseFloat(m.reserve1) * 2; - } else if (m.contract0 == 'eosio.token' && m.sym0 == '8,DFS') { - tvl += parseFloat(m.reserve0) * 2 * dfsPrice; - } else if (m.contract1 == 'eosio.token' && m.sym1 == '8,DFS') { - tvl += parseFloat(m.reserve1) * 2 * dfsPrice; - } - } - return { - tether: tvl, - }; -} - -module.exports = { - timetravel: false, - methodology: `DFS TVL is achieved by querying token balances from DFS's AMM swap liquidity smart contract.`, - eos: { - tvl: eos, - }, - dfs: { - tvl: dfs, - }, -}; diff --git a/projects/dfx-v3/index.js b/projects/dfx-v3/index.js deleted file mode 100644 index f02f0e5f77c..00000000000 --- a/projects/dfx-v3/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - - -const config = { - arbitrum: [{ factory: "0xDe9c71503648C03F529305e03D259f2eBa9c8fDe", fromBlock: 148999765 }], - ethereum: [{ factory: "0xCe2b8E0c196b7F9297A9c168Dfe1A97768297835", fromBlock: 18566782 }], - polygon: [{ factory: "0xe5ce84bba5b27ccfb7d92cb3e1426d8a986854dd", fromBlock: 49699467 }], -} - -Object.keys(config).forEach(chain => { - const configs = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = [] - for (const { factory, fromBlock } of configs) { - logs.push(await getLogs({ - api, - target: factory, - topics: ['0xe7a19de9e8788cc07c144818f2945144acd6234f790b541aa1010371c8b2a73b'], - eventAbi: 'event NewCurve (address indexed caller, bytes32 indexed id, address indexed curve)', - onlyArgs: true, - fromBlock, - })) - } - let pools = logs.flat().map(log => log.curve) - if (chain === 'arbitrum') pools = pools.slice(1) - const calls = pools.map(pool => [{ target: pool, params: 0 }, { target: pool, params: 1 }]).flat() - const tokens = await api.multiCall({ abi: 'function numeraires(uint256) view returns (address)', calls }) - const tokensAndOwners = tokens.map((token, i) => [token, pools[Math.floor(i / 2)]]) - return sumTokens2({ api, tokensAndOwners, }) - } - } -}) \ No newline at end of file diff --git a/projects/dfx/index.js b/projects/dfx/index.js deleted file mode 100644 index 709384121fd..00000000000 --- a/projects/dfx/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -// module.exports = { -// hallmarks: [[1667955600, "Hack"]], -// }; - -const config = { - arbitrum: [{ factory: "0x9544995B5312B26acDf09e66E699c34310b7c856", fromBlock: 65832059 }], - ethereum: [{ factory: "0x9adeac3b6d29d9d5e543b8579e803a7cce72c9cd", fromBlock: 16607851 }, { factory: "0xd3C1bF5582b5f3029b15bE04a49C65d3226dFB0C", fromBlock: 12459107 }], - polygon: [{ factory: "0x3591040cE5dF8828b3Ed4Ec39D030F832d43fD53", fromBlock: 39183403 }], -} - -Object.keys(config).forEach(chain => { - const configs = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = [] - for (const { factory, fromBlock } of configs) { - logs.push(await getLogs({ - api, - target: factory, - topics: ['0xe7a19de9e8788cc07c144818f2945144acd6234f790b541aa1010371c8b2a73b'], - eventAbi: 'event NewCurve (address indexed caller, bytes32 indexed id, address indexed curve)', - onlyArgs: true, - fromBlock, - })) - } - let pools = logs.flat().map(log => log.curve) - if (chain === 'arbitrum') pools = pools.slice(1) - const calls = pools.map(pool => [{ target: pool, params: 0 }, { target: pool, params: 1 }]).flat() - const tokens = await api.multiCall({ abi: 'function numeraires(uint256) view returns (address)', calls }) - const tokensAndOwners = tokens.map((token, i) => [token, pools[Math.floor(i / 2)]]) - return sumTokens2({ api, tokensAndOwners, }) - } - } -}) \ No newline at end of file diff --git a/projects/dfyn/index.js b/projects/dfyn/index.js deleted file mode 100644 index 55f632af215..00000000000 --- a/projects/dfyn/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - polygon:{ - tvl: getUniTVL({ - factory: '0xE7Fb3e833eFE5F9c441105EB65Ef8b261266423B', - useDefaultCoreAssets: true, - }), - }, - okexchain:{ - tvl: getUniTVL({ - factory: '0xE7Fb3e833eFE5F9c441105EB65Ef8b261266423B', - useDefaultCoreAssets: true, - }), - }, - fantom:{ - tvl: getUniTVL({ - factory: '0xd9820a17053d6314B20642E465a84Bf01a3D64f5', - useDefaultCoreAssets: true, - }), - }, -} diff --git a/projects/dhedge.js b/projects/dhedge.js deleted file mode 100644 index e2c51ac5bc3..00000000000 --- a/projects/dhedge.js +++ /dev/null @@ -1,127 +0,0 @@ -/* *** Common config *** */ - -const { sliceIntoChunks } = require("@defillama/sdk/build/util"); -const { CONFIG_DATA } = require("./toros/config"); - -const DHEDGE_FACTORY_PROXIES = { - ethereum: "0x96d33bcf84dde326014248e2896f79bbb9c13d6d", - polygon: "0xfdc7b8bFe0DD3513Cc669bB8d601Cb83e2F69cB0", - optimism: "0x5e61a079A178f0E5784107a4963baAe0c5a680c6", - arbitrum: "0xffFb5fB14606EB3a548C113026355020dDF27535", - base: "0x49Afe3abCf66CF09Fab86cb1139D8811C8afe56F", -}; - -/* *** dHEDGE V1 *** */ - -const DHEDGE_V1_VAULTS_QUANTITY_ABI = - "function deployedFundsLength() view returns (uint256)"; -const DHEDGE_V1_VAULTS_ABI = - "function deployedFunds(uint256) view returns (address)"; -const DHEDGE_V1_TVL_ABI = "function totalFundValue() view returns (uint256)"; - -const getV1TotalValueLocked = async (api) => { - const { chain } = api - const target = DHEDGE_FACTORY_PROXIES[chain]; - const vaults = await api.fetchList({ lengthAbi: DHEDGE_V1_VAULTS_QUANTITY_ABI, itemAbi: DHEDGE_V1_VAULTS_ABI, target, }); - const vaultsValues = await api.multiCall({ abi: DHEDGE_V1_TVL_ABI, calls: vaults, permitFailure: true, }); - const totalValueLocked = vaultsValues.reduce((acc, value) => acc + +(value ?? 0), 0); - return { - tether: totalValueLocked / 1e18, - }; -}; - -/* *** dHEDGE V2 *** */ - -const DHEDGE_V2_VAULTS_ABI = - "function getDeployedFunds() view returns (address[])"; -const DHEDGE_V2_VAULT_SUMMARY_ABI = - "function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue))"; -const DHEDGE_V2_FACTORY_ABI = - "function getManagedPools(address manager) view returns (address[] managedPools)"; - -const tvl = async (api) => { - const { chain } = api - const target = DHEDGE_FACTORY_PROXIES[chain]; - const allVaults = await api.call({ abi: DHEDGE_V2_VAULTS_ABI, target, }) - const torosVaults = await getTorosVaultsAddresses(api); - const dhedgeVaults = allVaults.filter(v => !torosVaults.includes(v)); - - let chunkSize = chain === 'optimism' ? 42 : 51 // Optimism has a lower gas limit - const vaultChunks = sliceIntoChunks(dhedgeVaults, chunkSize); - const summaries = []; - for (const chunk of vaultChunks) { - summaries.push(...await api.multiCall({ abi: DHEDGE_V2_VAULT_SUMMARY_ABI, calls: chunk, permitFailure: true, })) - } - const totalValueLocked = summaries.reduce((acc, vault) => acc + +(vault?.totalFundValue ?? 0), 0); - return { - tether: totalValueLocked / 1e18, - }; -}; - -const getTorosVaultsAddresses = async (api) =>{ - const { chain } = api - const { dhedgeFactory, torosMultisigManager } = CONFIG_DATA[chain]; - return await api.call({ - abi: DHEDGE_V2_FACTORY_ABI, - target: dhedgeFactory, - params: [torosMultisigManager], - }); -} - -/* *** DHT Staking V1 *** */ - -const DHT_STAKING_V1_PROXY = "0xEe1B6b93733eE8BA77f558F8a87480349bD81F7f"; -const DHT_ON_MAINNET = "0xca1207647Ff814039530D7d35df0e1Dd2e91Fa84"; - -const getV1StakingTotalAmount = async (api) => ({ - [DHT_ON_MAINNET]: await api.call({ - abi: "erc20:balanceOf", - target: DHT_ON_MAINNET, - params: [DHT_STAKING_V1_PROXY], - }), -}); - -/* *** DHT Staking V2 *** */ - -const DHT_STAKED_ABI = "function dhtStaked() view returns (uint256)"; -const DHT_STAKING_V2_PROXY = "0xf165ca3d75120d817b7428eef8c39ea5cb33b612"; -const DHT_ON_OPTIMISM = "optimism:0xaf9fe3b5ccdae78188b1f8b9a49da7ae9510f151"; - -const getV2StakingTotalAmount = async (api) => ({ - [DHT_ON_OPTIMISM]: await api.call({ - abi: DHT_STAKED_ABI, - target: DHT_STAKING_V2_PROXY, - }), -}); - -/* *** Exports *** */ - -module.exports = { - ethereum: { - tvl, - staking: getV1StakingTotalAmount, - }, - polygon: { - tvl, - }, - optimism: { - tvl, - staking: getV2StakingTotalAmount, - }, - arbitrum: { - tvl, - }, - base: { - tvl, - }, - misrepresentedTokens: true, - methodology: "Aggregates total value of each dHEDGE vault ever created", - hallmarks: [ - [1627693200, "dHEDGE V2 Launch"], - [1639616400, "Optimism Launch"], - [1674003600, "Optimism Incentives Start"], - [1679965200, "DHT Staking V2 Release"], - [1701468842, "Arbitrum Launch"], - [1706569200, "Base Launch"], - ], -}; diff --git a/projects/diamond-coin/index.js b/projects/diamond-coin/index.js deleted file mode 100644 index b39f71c4b61..00000000000 --- a/projects/diamond-coin/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const sdk = require("@defillama/sdk"); -const {pool2} = require("../helper/pool2"); - -const token = "0xDDa0F0E1081b8d64aB1D64621eb2679F93086705"; -const emissionRewardPool = "0xDDa0F0E1081b8d64aB1D64621eb2679F93086705"; - -const DiamondLPs = [ - "0xf5e8B220843EC7114B91AfF0D25342c24eB953b5", // DIAMOND-FTM - "0x2f1569094CB256fB745901fa92e57aF011D32B2C" // BOMB-DIAMOND -] - -module.exports = { - fantom: { - tvl: async () => ({}), - pool2: pool2(emissionRewardPool, DiamondLPs, "fantom", addr=>`fantom:${addr}`) - } -} diff --git a/projects/diamond-unibot-v2/index.js b/projects/diamond-unibot-v2/index.js deleted file mode 100644 index b8c1917d23c..00000000000 --- a/projects/diamond-unibot-v2/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs, getAddress } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const config = { - arbitrum: { - proxyDeployer: "0x8a908ec03e2610fa8dcaec93bb010560780ec860", - lendingPools: [ - [ - ADDRESSES.arbitrum.WETH, - "0xedd1efa76fe59e9106067d824b89b59157c5223c", - ], // WETH - [ - ADDRESSES.arbitrum.USDC, - "0xFEaDE428e2Fe0F547d560B540a7617087505538B", - ], // USDC - [ - ADDRESSES.arbitrum.ARB, - "0x4d5043d90f13ac2E6318B3aF9C3423A5224b920C", - ], // ARB - ], - balanceVault: [ - [ - [ - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.GMX, // GMX - ADDRESSES.arbitrum.ARB, // ARB - ], - "0x8610D60f5329B0560c8F0CEb80175F342fe943F3", // vault - ], - ], - fromBlock: 49135720, - }, - bsc: { - proxyDeployer: "0xD8006420c1b2901849505eb3517cc36a169AE0A7", - lendingPools: [ - [ - "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - "0x8610D60f5329B0560c8F0CEb80175F342fe943F3", - ], // CAKE - ], - balanceVault: [ - [ - [ - ADDRESSES.bsc.USDT, // USDT - ADDRESSES.bsc.BUSD, // BUSD - ADDRESSES.bsc.WBNB, // WBNB - "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", // CAKE - ], - "0xD576bE0d3CC1c0184d1ea3F1778A4A9Dec523859", // vault - ], - ], - fromBlock: 28688279, - } -} - -async function tvl(api) { - const { balanceVault, lendingPools, fromBlock, proxyDeployer } = config[api.chain] - const logs = await getLogs({ - api, fromBlock, - target: proxyDeployer, - topics: ["0x647c6c21d1279361153a5cf7618a50b9573a9729986f26d91c8a7e6501750f6f",], - }); - - const factories = logs.map((i) => getAddress(i.topics[1])); - const wantTokens = logs.map((i) => getAddress(i.data)); - - await sumTokens2({ api, owners: factories, resolveUniV3: true }); - const tokensAndOwners = wantTokens.map((i, idx) => [i, factories[idx]]); - tokensAndOwners.push(...lendingPools) - balanceVault.forEach(([tokens, vault]) => tokens.forEach(i => tokensAndOwners.push([i, vault]))) - return sumTokens2({ api, tokensAndOwners }); -} - -module.exports = { - doublecounted: true, - arbitrum: { tvl }, - bsc: { tvl } -} diff --git a/projects/diamond/abi.json b/projects/diamond/abi.json deleted file mode 100644 index 20a07648574..00000000000 --- a/projects/diamond/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "totalAsset": "uint256:totalAsset", - "totalAssets": "uint256:totalAssets", - "getCash": "uint256:getCash", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "getPositionInfo": "function getPositionInfo(uint256 _positionId) view returns (tuple(uint256 positionId, uint256 borrowId, uint256 amount0, uint256 amount1, uint256 fee, uint256 positionValue, uint256 debtValue, int24 upperTick, int24 lowerTick, uint256 wantAmount, uint256 reserveAmount, uint256 stopLossUpperPrice, uint256 stopLossLowerPrice, uint256 positionCreateTimestamp) info)" -} \ No newline at end of file diff --git a/projects/diamond/index.js b/projects/diamond/index.js deleted file mode 100644 index 6ebb8d8694e..00000000000 --- a/projects/diamond/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -// Ethereum -const ETH_BULL_VAULT = "0xad48a8261b0690c71b70115035eb14afd9a43242"; - -// Optimism -const BASIS_TRADING_VAULT = "0xD576bE0d3CC1c0184d1ea3F1778A4A9Dec523859"; - -// Arbitrum -const DMO_LENDING_POOL = "0x4c51FF6AF2EfC679A08C5A7377Bce18050f86CcB"; -const DMO_FACTORY = "0xcd8d2e1fa4132749220ffeec165285ee33028d59"; -const DMO_FARM = "0x4a127cB6806E869bf61A6de9db76dabE46A837D3"; -const DMO_FARM_ACTION = "0x4Ec4e76c11E2182918a80822df114DB03048388b"; - -async function ethTvl(api) { - api.add(ADDRESSES.ethereum.WETH, (await api.call({ target: ETH_BULL_VAULT, abi: abi.totalAsset }))) -} - -async function optTvl(api) { - api.add(ADDRESSES.optimism.USDC, (await api.call({ target: BASIS_TRADING_VAULT, abi: abi.totalAssets }))) -} - -async function getOpenPositionIds() { - const response = await getConfig('diamond/arbi-open-positions', - "https://0dtklop9zj.execute-api.ap-northeast-1.amazonaws.com/stag/open_positions?limit=500" - ) - - const positionIds = response.records.map((position) => position.PositionId); - - return positionIds; -} - -async function getTotalPositionValue(api) { - const openPositionIds = await getOpenPositionIds(); - const infos = await api.multiCall({ abi: abi.getPositionInfo, calls: openPositionIds, target: DMO_FACTORY, permitFailure: true }) - infos.forEach((i ) => { - if (!i) return; - api.add(ADDRESSES.arbitrum.USDC, i.positionValue) - }) -} - -async function arbTvl(api) { - const balanceOfPool = await api.call({ abi: abi.getCash, target: DMO_LENDING_POOL}) - const balanceOfFarm = await api.call({ abi: abi.totalAssets, target: DMO_FARM }) - api.add(ADDRESSES.arbitrum.WETH, balanceOfPool) - api.add(ADDRESSES.arbitrum.USDC, balanceOfFarm) - - await getTotalPositionValue(api); - - - return sumTokens2({ - api, - owners: [DMO_FACTORY, DMO_FARM_ACTION, ], - tokens: [ADDRESSES.arbitrum.USDC], - }) -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: ethTvl, - }, - optimism: { - tvl: optTvl, - }, - arbitrum: { - tvl: arbTvl, - }, -}; diff --git a/projects/diamondswap/index.js b/projects/diamondswap/index.js deleted file mode 100644 index cb6a9fcdaf6..00000000000 --- a/projects/diamondswap/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -const { getLogs, getAddress } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -module.exports = uniTvlExports({ - odyssey: '0x7d57C45dC107497C5c5c0F544a84691D2b06BC83', - base: '0xdc93aca9bf72ceb35d1f2cd305bd8335b5b88757', - avax: '0x7ab5ac142799b0a3b6f95c27a1f2149ebcf5287d', -}) - - -async function tvl(api) { - const { factories } = config[api.chain] - const ownerTokens = [] - - for (const { factory, fromBlock } of factories) { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], - fromBlock, - }) - const pools = logs.map(i => getAddress(i.data.slice(0, 64 + 2))) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - pools.map((pool, i) => ownerTokens.push([[token0s[i], token1s[i]], pool])) - } - return sumTokens2({ api, ownerTokens }) -} - -const config = { - ethereum: { factories: [{ factory: '0xE1046fcB1057ef82B68f3A6B8eBb0e411Cf334E0', fromBlock: 18024947, },], }, - bsc: { - factories: [{ - factory: '0x81a1417cbec636e631fa62b81f970a5ec23b39ca', fromBlock: - 32062831, - },], - }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/dibs-money/index.js b/projects/dibs-money/index.js deleted file mode 100644 index 46d8e14d7ef..00000000000 --- a/projects/dibs-money/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const dibs = "0xfd81ef21ea7cf1dc00e9c6dd261b4f3be0341d5c"; -const dshare = "0x26d3163b165be95137cee97241e716b2791a7572"; -const rewardPool = "0x8f75dfc6a598b00cc18edce9e458451f3742007d"; -const masonry = "0xf65c374a91f47f8732a86acc49c74df4db8b2f1f"; - -const lps = [ - "0x9bebe118018d0de55b00787b5eeabb9eda8a9e0a", - "0x5998af8868e5e4fbd7c60da221b76b201e441612" -]; - -module.exports = { - ...tombTvl(dibs, dshare, rewardPool, masonry, lps, "bsc") -} \ No newline at end of file diff --git a/projects/diesel-dex/index.js b/projects/diesel-dex/index.js deleted file mode 100644 index bdb0591a87e..00000000000 --- a/projects/diesel-dex/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens } = require("../helper/chain/fuel") -// const { configPost } = require('../helper/cache') - -async function tvl(api) { - const contractId = '0x7c293b054938bedca41354203be4c08aec2c3466412cac803f4ad62abf22e476' - // const { pools } = await configPost('mira-ly', 'https://prod.api.mira.ly/pools', { "volume_hours": 24, "apr_days": 1 }) - // const tokens = pools.map(i => i.id.split('_').slice(0, 2)).flat() - // const provider = await fuels.Provider.create('https://mainnet.fuel.network/v1/graphql') - // const contract = new fuels.Contract(contractId, abi, provider) - // const { value } = await contract.functions.total_assets().get() - return sumTokens({ api, owner: contractId, }) -} - -module.exports = { - fuel: { tvl }, - timetravel: false, -} - -// https://github.com/mira-amm/mira-v1-ts/blob/main/sway_abis/contracts/mira_amm_contract/release/mira_amm_contract-abi.json diff --git a/projects/diffusionfi/index.js b/projects/diffusionfi/index.js deleted file mode 100644 index 7b3674e698c..00000000000 --- a/projects/diffusionfi/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingUnknownPricedLP } = require("../helper/staking"); - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x6abdda34fb225be4610a2d153845e09429523cd2) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - evmos: { - tvl: getUniTVL({ factory: '0x6abdda34fb225be4610a2d153845e09429523cd2', useDefaultCoreAssets: true }), - staking: stakingUnknownPricedLP('0x75aeE82a16BD1fB98b11879af93AB7CE055f66Da', ADDRESSES.evmos.DIFF, "evmos", "0x5b575e84e4921A93D57301cB75C9635BA12D50e2") - }, -}; // node test.js projects/diffusionfi/index.js \ No newline at end of file diff --git a/projects/dinari/index.js b/projects/dinari/index.js deleted file mode 100644 index 294a074d50f..00000000000 --- a/projects/dinari/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const config = { - arbitrum: { - factory: "0xB4Ca72eA4d072C779254269FD56093D3ADf603b8", - usdplus: "0xfc90518D5136585ba45e34ED5E1D108BD3950CFa" - }, - ethereum: { - factory: "0x60B5E7eEcb2AEE0382db86491b8cFfA39347c747", - usdplus: "0x98C6616F1CC0D3E938A16200830DD55663dd7DD3" - }, - blast: { - factory: "0x6Aa1BDa7e764BC62589E64F371A4022B80B3c72a", - }, - kinto: { - factory: "0xE4Daa69e99F48AD0C4D4843deF4447253248A906", - usdplus: "0x6F086dB0f6A621a915bC90295175065c9e5d9b8c" - }, - base: { - factory: "0xBCE6410A175a1C9B1a25D38d7e1A900F8393BC4D", - usdplus: "0x98C6616F1CC0D3E938A16200830DD55663dd7DD3" - }, - plume: { - // factory: "0x84ad0De589B0075E057123c800959f10C29869D8" - }, - plume_mainnet: { - factory: "0x7a861Ae8C708DC6171006C57c9163BD2BB57a8Aa", - usdplus: "0x1fA3671dF7300DF728858B88c7216708f22dA3Fb" - } -} - -const abi = "function getDShares() external view returns (address[] memory, address[] memory)" - -const tvl = async (api) => { - const { factory, usdplus } = config[api.chain] - if (usdplus) api.add(usdplus, await api.call({ target: usdplus, abi: 'erc20:totalSupply'})) - if (!factory) return - const [tokens] = await api.call({ target: factory, abi }) - const balances = await api.multiCall({ calls: tokens, abi: 'erc20:totalSupply' }) - api.add(tokens, balances) -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/dinero/index.js b/projects/dinero/index.js deleted file mode 100644 index 31c114114ff..00000000000 --- a/projects/dinero/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { nullAddress } = require("../helper/unwrapLPs"); -const { sumERC4626VaultsExport } = require("../helper/erc4626"); - -module.exports = { - ethereum: { - tvl: async (api) => { - const totalSupply = await api.call({ target: '0x04C154b66CB340F3Ae24111CC767e0184Ed00Cc6', abi: 'uint256:totalSupply' }); - - return { - [nullAddress]: totalSupply - }; - }, - staking: sumERC4626VaultsExport({ vaults: ['0x55769490c825CCb09b2A6Ae955203FaBF04857fd'], isOG4626: true, }) - } -}; diff --git a/projects/dinoexchange/index.js b/projects/dinoexchange/index.js deleted file mode 100644 index fba5baa0ab4..00000000000 --- a/projects/dinoexchange/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const DINO_TOKEN = '0xf317932ee2c30fa5d0e14416775977801734812d' -const MASTER_DINO = '0x26CB55795Cff07Df3a1Fa9Ad0f51d6866a80943b' -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0x35E9455c410EacD6B4Dc1D0ca3144031f6251Dc2' -}, { staking: { bsc: [MASTER_DINO, DINO_TOKEN, ] }, }) \ No newline at end of file diff --git a/projects/dinopool/index.js b/projects/dinopool/index.js deleted file mode 100644 index 0a3d344a343..00000000000 --- a/projects/dinopool/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sdk = require("@defillama/sdk") - -const { tombTvl } = require('../helper/tomb') - -const bond = "0x7091002B330D8054cb8584e5057451Ba983b975E"; -const share = "0xC21718b8a93529d33E7b5dCdFF439402c47428aC"; -const boardroom = "0x2fa7259b002ac24e24f27bc5b83f186e37738b75"; -const rewardPool = "0xd04b9FCF5bC9Cd046233f4ead8aDdcD56D2eA453"; - -const lps = [ - "0x0526467a2cB9DF86e1FA8f0abA3E4ab090126324", - "0xFc8281ddAE23612D60A242c10c35EE5E0a4c1541", -]; - -module.exports = { - ...tombTvl(bond, share, rewardPool, boardroom, lps, "cronos", undefined, false, lps[1]) -}; - -module.exports.deadFrom = "2023-05-30" \ No newline at end of file diff --git a/projects/dinosaur-finance/index.js b/projects/dinosaur-finance/index.js deleted file mode 100644 index f0a56d1812d..00000000000 --- a/projects/dinosaur-finance/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const sdk = require('@defillama/sdk') - -const vaults = [ - "0xd93567C2634e907c1AA0D91A6d514dFf0491e0dC", - "0x75b44D326fDfFe3889f9B26d166DF44E938824ce", - "0x1A53a7C19b29df3e94c0559Ea41BDF5A8e9A88DD", -] - -async function tvl(api) { - const balances = {} - - const tokens = await api.multiCall({ abi: "uint256:balance", calls: vaults, }) - const lps = await api.multiCall({ abi: "address:want", calls: vaults, }) - - tokens.forEach((data, i) => { - sdk.util.sumSingleBalance(balances, lps[i], data, api.chain) - }) - - return balances - -} - -module.exports = { - hallmarks: [ - [1675814400, "Rug Pull"] - ], - deadFrom: '2023-02-08', - arbitrum: { - tvl, - } -} - diff --git a/projects/dinosaureggs/index.js b/projects/dinosaureggs/index.js deleted file mode 100644 index 15422270d1a..00000000000 --- a/projects/dinosaureggs/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0x73d9f93d53505cb8c4c7f952ae42450d9e859d10' -}) \ No newline at end of file diff --git a/projects/dinoswap/abi.json b/projects/dinoswap/abi.json deleted file mode 100644 index dd346a161be..00000000000 --- a/projects/dinoswap/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accDinoPerShare)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/dinoswap/index.js b/projects/dinoswap/index.js deleted file mode 100644 index 49852da56e0..00000000000 --- a/projects/dinoswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const {masterChefExports} = require('../helper/masterchef'); - -const MASTERCHEF_CONTRACT = "0x1948abC5400Aa1d72223882958Da3bec643fb4E5"; -const token = ADDRESSES.polygon.DINO; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(MASTERCHEF_CONTRACT, "polygon", token, true, abi.poolInfo) -} \ No newline at end of file diff --git a/projects/dinotopia/abi.json b/projects/dinotopia/abi.json deleted file mode 100644 index fa91e9331c0..00000000000 --- a/projects/dinotopia/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "bank": { - "usableBnbBalance": "uint256:usableCollateralBalance" - }, - "multiFeeDistribution": { - "totalSupply": "uint256:totalSupply" - } -} \ No newline at end of file diff --git a/projects/dinotopia/index.js b/projects/dinotopia/index.js deleted file mode 100644 index 14f5fc82fcb..00000000000 --- a/projects/dinotopia/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const Abis = require("./abi.json"); -const { sumTokensExport, sumUnknownTokens, } = require('../helper/unknownTokens') - -const Contracts = { - bsc: { - wbnb: ADDRESSES.bsc.WBNB, - brx: "0xe550c560a895d043E5EEd2bC7eC8A8e46c2408D6", - fossil: "0xfE8FFB60a2B6d46102caa35739Be465E600D0f5E", - bank: "0xF90c0b409001b97067c539693754008456f6C265", - multiFeeDistribution: "0xd1f2467b2E2cb7bABc5CE8a947A294f216D93F90", - chef: "0xF59e1568cb5FA1cdf1f4233D738D802A90c64B5E", - lps: [ - "0x9bB50fE7E33C15405f94978A5bb88F8544847007", // FOSSIL_BNB_LP - "0x5Ff686208DFe12D35761fe9C74396852303BC377", // BRX_BNB_LP - ], - }, -}; - -async function calcBscStakingTvl(api) { - const bscStakingData = await api.call({ target: Contracts.bsc.multiFeeDistribution, abi: Abis.multiFeeDistribution.totalSupply, }); - api.add(Contracts.bsc.fossil, bscStakingData) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: Contracts.bsc.lps, }) -} - -module.exports = { - bsc: { - tvl: sumTokensExport({ owner: Contracts.bsc.bank, tokens: [Contracts.bsc.wbnb] }), - pool2: sumTokensExport({ owner: Contracts.bsc.chef, tokens: Contracts.bsc.lps, useDefaultCoreAssets: true, }), - staking: calcBscStakingTvl, - }, -}; \ No newline at end of file diff --git a/projects/diosfinance/index.js b/projects/diosfinance/index.js deleted file mode 100644 index 77b30053dd3..00000000000 --- a/projects/diosfinance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const dios = "0x08eEcF5d03bDA3dF2467F6AF46b160c24D931DE7"; -const diosStaking = "0x36c8a6E7436EDd850752E09539a519a369D95096"; - -const treasury = "0x98eE3F3629aCFA6fDDB49028C494030E5dFA349a"; -const busd = ADDRESSES.bsc.BUSD; -const diosBusdLP = "0x2D7A5e9d85F62ADbaea9d48B11F5947F3AC57FC8"; - -module.exports = { - ...ohmTvl( - treasury, - [ - [busd, false], - [diosBusdLP, true], - ], - "bsc", - diosStaking, - dios - ), -}; diff --git a/projects/dip-exchange/index.js b/projects/dip-exchange/index.js deleted file mode 100644 index cf67b271893..00000000000 --- a/projects/dip-exchange/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { pool2 } = require("../helper/pool2"); - -const Contracts = { - Pool: "0xd91bBA888c1F80BeD01b66830D006c26a7e8625c", - Chef: "0xFc81F6cd9F99A00D42aF4a97767B84Cd456Aa909", - DIP_ETH_LBP: "0xF2DDfFEd949EEA23F838C8518A48E4D09Cac9b18", - Tokens: { - axlBTC: "0x1a35EE4640b0A3B87705B0A4B45D227Ba60Ca2ad", - ETH: ADDRESSES.base.WETH, - USDbC: ADDRESSES.base.USDbC, - }, - DIP_ETH_LP: "0x0BE2EF4a1CC597dDd2a354505E08d7934802029d" -} - -async function tvl(api) { - return sumTokens2({ api, owner: Contracts.Pool, tokens: Object.values(Contracts.Tokens) }) -} - -module.exports = { - base: { - tvl, - pool2: pool2(Contracts.DIP_ETH_LBP, Contracts.DIP_ETH_LP), - }, - hallmarks: [ - ['2023-08-14', 'Referral contract exploited'], - ], -}; diff --git a/projects/dipcoin/index.js b/projects/dipcoin/index.js deleted file mode 100644 index cc39b1b0b27..00000000000 --- a/projects/dipcoin/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const sui = require("../helper/chain/sui"); -const { getConfig } = require('../helper/cache'); - -async function suiTvl(api) { - const pools = (await getConfig('dipcoin/amm-sui', 'https://api.dipcoin.io/api/pools'))?.data?.map(i => i.poolAddress) - const res = await sui.getObjects(pools) - res.forEach((i) => { - const [coinA, coinB] = i.type.split('<')[1].split('>')[0].split(', ') - api.add(coinA, i.fields.bal_x) - api.add(coinB, i.fields.bal_y) - }) -} - - -module.exports = { - hallmarks: [ - [1747699200, "Spot Launch"], - ], - sui: { - tvl: suiTvl - }, -} \ No newline at end of file diff --git a/projects/dirac-finance/index.js b/projects/dirac-finance/index.js deleted file mode 100644 index 3b32f4df3d2..00000000000 --- a/projects/dirac-finance/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const DIRAC_VAULT_1_CONTRACT = '0xa9154A433E879fa0E948eA208Aa359271Dc40469'; -const USDCE_CONTRACT = ADDRESSES.polygon_zkevm.USDC_CIRCLE; -const USDC_CONTRACT = ADDRESSES.astarzk.USDC; - -const DIRAC_VAULT_2_CONTRACT = '0x6d91E01A609e34d58678265ee6b821F0E1b9044E'; -const DIRAC_VAULT_3_CONTRACT = '0x714BEC23142375c1A6576A9B7cA302DD1B680237'; -const MINT_CLUB_BOND_CONTRACT = '0x8BBac0C7583Cc146244a18863E708bFFbbF19975'; - -async function tvl(_, _1, _2, { api }) { - const collateralBalance1 = await api.call({ - abi: 'erc20:balanceOf', - target: USDCE_CONTRACT, - params: [DIRAC_VAULT_1_CONTRACT], - }); - - const collateralBalance2 = await api.call({ - abi: 'erc20:totalSupply', - target: DIRAC_VAULT_2_CONTRACT, - params: [], - }); - - const collateralBalance3 = await api.call({ - abi: 'erc20:totalSupply', - target: DIRAC_VAULT_3_CONTRACT, - params: [], - }); - - api.add(USDCE_CONTRACT, collateralBalance1) - api.add(USDCE_CONTRACT, collateralBalance2) - api.add(USDCE_CONTRACT, collateralBalance3) -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'counts the number of MINT tokens in the Club Bonding contract.', - polygon_zkevm: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/direct-exchange/index.js b/projects/direct-exchange/index.js deleted file mode 100644 index e96546d2ab8..00000000000 --- a/projects/direct-exchange/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - misrepresentedTokens: true, - kava: { - tvl: getUniTVL({ factory: '0xcE08c3d20Ff00a9Cf0D28922768bD606592B5D4C', useDefaultCoreAssets: true, }) - }, -} diff --git a/projects/ditto/index.js b/projects/ditto/index.js deleted file mode 100644 index 091cf2d3e21..00000000000 --- a/projects/ditto/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { aQuery } = require('../helper/chain/aptos') - -module.exports = { - timetravel: false, - aptos: { - tvl: async () => { - const { data: { total_aptos } } = await aQuery('/v1/accounts/0xd11107bdf0d6d7040c6c0bfbdecb6545191fdf13e8d8d259952f53e1713f61b5/resource/0xd11107bdf0d6d7040c6c0bfbdecb6545191fdf13e8d8d259952f53e1713f61b5::ditto_staking::DittoPool') - return { - aptos: total_aptos/1e8 - } - } - } -} \ No newline at end of file diff --git a/projects/diva/index.js b/projects/diva/index.js deleted file mode 100644 index 7554ff1bd58..00000000000 --- a/projects/diva/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const sdk = require("@defillama/sdk") - -module.exports = { - methodology: 'ETH and stETH in vaults', - ethereum: { - tvl: sdk.util.sumChainTvls([sumTokensExport({ owners: [ - "0x1ce8aafb51e79f6bdc0ef2ebd6fd34b00620f6db", - "0x16770d642e882e1769ce4ac8612b8bc0601506fc" - ], tokens: [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.STETH - ]}), async (api) => { - return { - [ADDRESSES.ethereum.WETH]: await api.call({ - target: "0x6c1edce139291af5b84fb1e496c9747f83e876c9", - abi: "uint256:totalAssets" - }) - } - }]), - } -}; \ No newline at end of file diff --git a/projects/diviswap/index.js b/projects/diviswap/index.js deleted file mode 100644 index 7f30bfcf047..00000000000 --- a/projects/diviswap/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); -module.exports = uniTvlExport('chz', "0xbdd9c322ecf401e09c9d2dca3be46a7e45d48bb1") \ No newline at end of file diff --git a/projects/divvy-bet/index.js b/projects/divvy-bet/index.js deleted file mode 100644 index 3f56141cc47..00000000000 --- a/projects/divvy-bet/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { Program } = require("@project-serum/anchor"); -const { PublicKey } = require("@solana/web3.js"); -const { getProvider, sumTokens2 } = require("../helper/solana"); - -async function tvl() { - function findHouseAuthorityAddress(houseKey, programId) { - return PublicKey.findProgramAddressSync( - [Buffer.from("House Authority"), houseKey.toBuffer()], - programId - )[0]; - } - - const NATIVE_MINT = ADDRESSES.solana.SOL; - const DIVVY_ADMIN = "AHf1MX99d31ebLfAydVPe2vVdgzZGuUaW972znWPNzZY"; - - const programId = new PublicKey("dvyFwAPniptQNb1ey4eM12L8iLHrzdiDsPPDndd6xAR"); - const provider = getProvider(); - const idl = await Program.fetchIdl(programId, provider); - const program = new Program(idl, programId, provider); - const houses = await program.account.house.all([ - { - memcmp: { - offset: 8, - bytes: DIVVY_ADMIN, // houses governed by Divvy's multisig - }, - }, - ]); - const tokensAndOwners = houses - .filter((house) => house.account.currency.toBase58() !== NATIVE_MINT) - .map((house) => { - const owner = findHouseAuthorityAddress(house.publicKey, programId); - return [house.account.currency, owner]; - }); - const solOwners = houses - .filter((house) => house.account.currency.toBase58() === NATIVE_MINT) - .map((house) => { - return findHouseAuthorityAddress(house.publicKey, programId); - }); - return sumTokens2({ tokensAndOwners, solOwners }); -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -}; diff --git a/projects/djed-alliance/abi.json b/projects/djed-alliance/abi.json deleted file mode 100644 index cd51a2c3c94..00000000000 --- a/projects/djed-alliance/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "Djed": { - "reserve": "function R(uint256 cpa) view returns (uint256 balance)" - } -} \ No newline at end of file diff --git a/projects/djed-alliance/config.json b/projects/djed-alliance/config.json deleted file mode 100644 index a3a6b9ecdc2..00000000000 --- a/projects/djed-alliance/config.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "djedAddress": { - "milkomeda": "0x67A30B399F5Ed499C1a6Bc0358FA6e42Ea4BCe76", - "milkomeda_a1": "0x..." - }, - "reserveTokenAddress": { - "milkomeda": "0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9", - "milkomeda_a1": "0x..." - } -} \ No newline at end of file diff --git a/projects/djed-alliance/index.js b/projects/djed-alliance/index.js deleted file mode 100644 index 6a752dc7c6d..00000000000 --- a/projects/djed-alliance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const sdk = require('@defillama/sdk'); -const utils = require('../helper/utils'); -const { sumTokensExport } = require("../helper/chain/cardano"); - - - - -module.exports = { - methodology: 'The TVL of Djed is the reserve belonging to the deployment. The TVL within a given blockchain is the sum of the TVLs of all known Djed deployments within that blockchain.', - - cardano: { - tvl: sumTokensExport({ owner: 'addr1z8mcpc26j64fmhhd6sv5qj5mk9xqnfxgm6k8zmk7h2rlu4qm5kjdmrpmng059yellupyvwgay2v0lz6663swmds7hp0qhxg9gt', tokens: ['lovelace']}), - }, -}; diff --git a/projects/dlc-link/index.js b/projects/dlc-link/index.js deleted file mode 100644 index 88b7aa0e559..00000000000 --- a/projects/dlc-link/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokens } = require("../helper/chain/bitcoin"); -const bitcoinBook = require('../helper/bitcoin-book'); - -async function tvl() { - return sumTokens({ owners: await bitcoinBook.dlcLink() }); -} - -module.exports = { - bitcoin: { tvl }, -}; diff --git a/projects/dmd/index.js b/projects/dmd/index.js deleted file mode 100644 index 370a068d2af..00000000000 --- a/projects/dmd/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], - ["organixtoken", "OGX", "organix"], - -]; - -const accounts = [ - "eosdmdpool11", - "eosdmdpool12", - "eosdmdpool13", -] - -// DMD Finance -// https://dmd.finance/ -async function eos() { - return await get_account_tvl(accounts, tokens); -} - -module.exports = { - methodology: `DMD Finance's TVL is achieved by querying token balances from DMD staking smart contract(s).`, - eos: { - tvl: eos - }, -} \ No newline at end of file diff --git a/projects/dmusk/index.js b/projects/dmusk/index.js deleted file mode 100644 index 9ba6b50815b..00000000000 --- a/projects/dmusk/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const chain = 'dogechain' -const DMUSK = '0xdD1D3B04939972A617E0bA7710591B03E825207c' -const lps = ['0x4Ef34A9C9906d67c2F28ba3EEe2d01B1Fb7b6e81'] - - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ - factory: '0x4e5E0739231A3BdE1c51188aCfEabC19983541E6', - useDefaultCoreAssets: true, - }) - } -} diff --git a/projects/dna/index.js b/projects/dna/index.js deleted file mode 100644 index 68473fd0a9d..00000000000 --- a/projects/dna/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') -const DNA_STAKING_CONTRACT = '0x66512DbB955F18356bf32b908172264e3E08C289'; -const DNA_TOKEN_ADDRESS = '0xED49fE44fD4249A09843C2Ba4bba7e50BECa7113'; - - -const staking = async (api) => { - return sumUnknownTokens({ - tokens: [DNA_TOKEN_ADDRESS], - owner: DNA_STAKING_CONTRACT, - lps: ['0x84bf434c13C28f6b7Fa245d7209831ADc57a6597'], - api, - useDefaultCoreAssets: true, - }) -} - -module.exports = { - wc: { - tvl: () => ({}), - staking, - } -}; diff --git a/projects/dnadollar/abi.json b/projects/dnadollar/abi.json deleted file mode 100644 index 6e0f5ce4808..00000000000 --- a/projects/dnadollar/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 lastRewardTime, uint256 accDSharePerShare, bool isStarted)" -} \ No newline at end of file diff --git a/projects/dnadollar/index.js b/projects/dnadollar/index.js deleted file mode 100644 index 39a44ab4ef4..00000000000 --- a/projects/dnadollar/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - cronos: { - staking: () => ({}), - pool2: () => ({}), - tvl: () => ({}), - }, - deadFrom: '2022-07-18', - methodology: "Counts liquidity of the tokens deposited on the DAO Fund through the wallet Address; and Pool2s and Staking parts through DShareRewardPool and Laboratory Contracts.", -}; diff --git a/projects/dodo/index.js b/projects/dodo/index.js deleted file mode 100644 index 044a2186cce..00000000000 --- a/projects/dodo/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - ethereum: { dvmFactory: '0x72d220cE168C4f361dD4deE5D826a01AD8598f6C', dodoBirthFactory: '0x3a97247df274a17c59a3bd12735ea3fcdfb49950', fromBlock: 10613640, dspFactory: '0x6fddb76c93299d985f4d3fc7ac468f9a168577a4', dppFactory: ['0x5336ede8f971339f6c0e304c66ba16f1296a2fbe', '0xb5dc5e183c2acf02ab879a8569ab4edaf147d537', '0x6b4fa0bc61eddc928e0df9c7f01e407bfcd3e5ef'], gspFactory: '0x710409D2121B7C8EA4aCAdd6803FDE2D85DF6473', blacklistedTokens: ['0x306227d964511a260d14563fbfa82aa75db404b2'] }, - arbitrum: { dvmFactory: '0xDa4c4411c55B0785e501332354A036c04833B72b', fromBlock: 226578, dspFactory: '0xC8fE2440744dcd733246a4dB14093664DEFD5A53', dodoBirthFactory: '0xbcc3401e16c25eaf4d3fed632ce3288503883b1f', dppFactory: ['0xDdB13e6dd168E1a68DC2285Cb212078ae10394A9', '0xa6cf3d163358af376ec5e8b7cc5e102a05fde63d'], gspFactory: '0x46E55A974c5995675b025f7F607C3278B36f0c29' }, - bsc: { - dvmFactory: ['0x790B4A80Fb1094589A3c0eFC8740aA9b0C1733fB', '0xf50bdc9e90b7a1c138cb7935071b85c417c4cb8e'], fromBlock: 726278, dspFactory: '0x0fb9815938Ad069Bf90E14FE6C596c514BEDe767', dppFactory: ['0xd9CAc3D964327e47399aebd8e1e6dCC4c251DaAE', '0x7737fd30535c69545deeea54ab8dd590ccaebd3c', '0x9b64c81ba54ea51e1f6b7fefb3cff8aa6f1e2a09', '0xafe0a75dffb395eaabd0a7e1bbbd0b11f8609eef'], dodoBirthFactory: '0xca459456a45e300aa7ef447dbb60f87cccb42828', blacklistedTokens: [ - '0xcc7fc8666f6e62cb44aa781de841ee6be3bbe54c', - '0xdb1e780db819333ea79c9744cc66c89fbf326ce8', - ], gspFactory: '0x78d43a889F42a344Fe98C3fb9455791Dc8178d55' - }, - polygon: { - dppFactory: ['0xd24153244066F0afA9415563bFC7Ba248bfB7a51', '0x95E887aDF9EAa22cC1c6E3Cb7f07adC95b4b25a8'], dvmFactory: '0x79887f65f83bdf15Bcc8736b5e5BcDB48fb8fE13', fromBlock: - 14604330, dspFactory: '0x43C49f8DD240e1545F147211Ec9f917376Ac1e87', blacklistedTokens: [ - '0xd79d32a4722129a4d9b90d52d44bf5e91bed430c', - '0xa88c5693c9c2549a75acd2b44f052f6a5568e918', - ] - }, - avax: { dvmFactory: '0xfF133A6D335b50bDAa6612D19E1352B049A8aE6a', fromBlock: 8488454, dspFactory: '0x2b0d94Eb7A63B8a2909dE1CB3951ecF7Ae76D2fE', dppFactory: '0xb7865a5cee051d35b09a48b624d7057d3362655a' }, - aurora: { dvmFactory: '0x5515363c0412AdD5c72d3E302fE1bD7dCBCF93Fe', dodoBirthFactory: '0xf50BDc9E90B7a1c138cb7935071b85c417C4cb8e', fromBlock: 50554196, dspFactory: '0xbe9a66e49503e84ae59a4d0545365AABedf33b40', dppFactory: '0x40672211D4310ad71daDc8cDE7Aa3Fb90d420855' }, - optimism: { dvmFactory: '0x2b800dc6270726f7e2266ce8cd5a3f8436fe0b40', fromBlock: 5886090, dspFactory: '0x1f83858cD6d0ae7a08aB1FD977C06DABEcE6d711', dppFactory: '0xdb9c53f2ced34875685b607c97a61a65da2f30a8' }, - base: { dvmFactory: '0x0226fCE8c969604C3A0AD19c37d1FAFac73e13c2', fromBlock: 1996181, dspFactory: '0x200D866Edf41070DE251Ef92715a6Ea825A5Eb80', dppFactory: '0xc0F9553Df63De5a97Fe64422c8578D0657C360f7' }, - linea: { dvmFactory: '0xc0F9553Df63De5a97Fe64422c8578D0657C360f7', fromBlock: 91468, dspFactory: '0x2933c0374089D7D98BA0C71c5E02E1A0e09deBEE', dppFactory: '0x97bBF5BB1dcfC93A8c67e97E50Bea19DB3416A83' }, - scroll: { dvmFactory: '0x5a0C840a7089aa222c4458b3BE0947fe5a5006DE', fromBlock: 83070, dspFactory: '0x7E9c460d0A10bd0605B15F0d0388e307d34a62E6', dppFactory: '0x31AC053c31a77055b2ae2d3899091C0A9c19cE3a' }, - manta: { dvmFactory: '0x97bBF5BB1dcfC93A8c67e97E50Bea19DB3416A83', fromBlock: 384137, dspFactory: '0x29C7718e8B606cEF1c44Fe6e43e07aF9D0875DE1', dppFactory: '0xa71415675F68f29259ddD63215E5518d2735bf0a' }, - mantle: { dvmFactory: '0x29C7718e8B606cEF1c44Fe6e43e07aF9D0875DE1', fromBlock: 21054048, dspFactory: '0x7dB214f2D46d94846936a0f8Bd9044c5C5Bd2b93', dppFactory: '0x46AF6b152F2cb02a3cFcc74014C2617BC4F6cD5C', gspFactory: '0xE6cecb7460c9E52aA483cb1f0E87d78D7085686F' }, - zircuit: { dvmFactory: '0xA909314363840f7c28b8EC314028e21722dd8Cb6', fromBlock: 1455081, dspFactory: '0xA312D73C1b537168f1C8588bDcaB9278df98Cd32', dppFactory: '0xb770C37F3A9eC6f25b791D9c791aDE09B0fb1AB8' }, - hemi: { dvmFactory: '0x6694eebf40924e04c952EA8F1626d19E7a656Bb7', fromBlock: 865590, dspFactory: '0xd0de7cA3298fff085E2cb82F8a861a0254256BA0', dppFactory: '0x297A4885a7da4AaeF340FABEd119e7a6E3f2BCe8', gspFactory: '0x2235bB894b7600F1a370fc595Ee5477999A30441' }, - hsk: { dvmFactory: '0x2235bB894b7600F1a370fc595Ee5477999A30441', fromBlock: 83265, dspFactory: '0x297A4885a7da4AaeF340FABEd119e7a6E3f2BCe8', dppFactory: '0x8Ebbfe204E7EdA4be46b9d09c5dfa8b3e1500462', gspFactory: '0xc6F5e5Ff8AbBe6A94A879A1E378c101E2A6bb9e6' }, - // okexchain: { dvmFactory: '0x9aE501385Bc7996A2A4a1FBb00c8d3820611BCB5', fromBlock: 4701083, dspFactory: '0x44D5dF24d5Ef52A791D6436Fa45A8D426f6de34e' }, -} - -Object.keys(config).forEach(chain => { - const { dvmFactory, fromBlock, dspFactory, gspFactory, dppFactory, dodoBirthFactory, blacklistedTokens, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - const funcs = []; - const builder = (factorys, event) => { - if (Array.isArray(factorys)) { - factorys.forEach(factory => funcs.push(addLogs(factory, event))); - } else { - funcs.push(addLogs(factorys, event)); - } - } - builder(dvmFactory, 'event NewDVM (address baseToken, address quoteToken, address creator, address pool)'); - builder(dspFactory, 'event NewDSP(address baseToken, address quoteToken, address creator, address pool)'); - builder(gspFactory, 'event NewGSP(address baseToken, address quoteToken, address creator, address pool)'); - builder(dppFactory, 'event NewDPP (address baseToken, address quoteToken, address creator, address pool)'); - builder(dodoBirthFactory, 'event DODOBirth (address pool, address baseToken, address quoteToken)'); - - await Promise.all(funcs) - if (chain === 'ethereum') - ownerTokens.push([['0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd', ADDRESSES.ethereum.USDT], '0x8876819535b48b551C9e97EBc07332C7482b4b2d']) - api.log(ownerTokens.length * 2, api.chain) - if (chain === 'base') - ownerTokens.push(...[ - [[ADDRESSES.optimism.WETH_1, ADDRESSES.base.USDbC], '0x1172035a744ea18161497e94f0bbce244d51de9f'], - [[ADDRESSES.optimism.WETH_1, ADDRESSES.base.cbETH], '0xce670438dadb080d7aae65fdaff51355aa30535e'], - [[ADDRESSES.optimism.WETH_1, '0x78a087d713be963bf307b18f2ff8122ef9a63ae9'], '0x3c388c812dada10e597f802a766e7ce898bc7751'], - [[ADDRESSES.base.USDbC, ADDRESSES.optimism.WETH_1], '0xd804cf0ac2a4b6dd6d375504a27874f5db073625'], - [[ADDRESSES.optimism.WETH_1, ADDRESSES.base.USDbC], '0x72e663c4e8fd50184c8b8135315c20326cc4ad75'], - [[ADDRESSES.base.USDC, ADDRESSES.base.USDbC], '0xe8ef69e4dd7f6ed2d84f256e97469bca22b78a8b'], - ]) - - return api.sumTokens({ ownerTokens, blacklistedTokens, permitFailure: true, }) - - async function addLogs(target, eventAbi) { - if (!target) return; - const convert = i => [[i.baseToken, i.quoteToken], i.pool] - let logs = await getLogs({ api, target, eventAbi, onlyArgs: true, fromBlock, }) - if (chain === 'base' && target === '0xc0F9553Df63De5a97Fe64422c8578D0657C360f7') - logs = await getLogs({ api, target, eventAbi, onlyArgs: true, fromBlock: 8964122, }) // hard to get old logs, too far back in time, manually added missing pairs - else - logs = await getLogs({ api, target, eventAbi, onlyArgs: true, fromBlock, }) - ownerTokens.push(...logs.map(convert)) - } - } - } -}) \ No newline at end of file diff --git a/projects/dogeclaw/index.js b/projects/dogeclaw/index.js deleted file mode 100644 index c8f4aa378d2..00000000000 --- a/projects/dogeclaw/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -const chain = 'okexchain' -const contract = '0x1bb44D416620902a7f8AdF521422751A9f86d213' -const claw = '0xc2f1a8570361DAA6994936d1Dd397e1434F2E2B3' - -module.exports = masterchefExports({ chain, masterchef: contract, nativeToken: claw, - useDefaultCoreAssets: true,}) diff --git a/projects/dogecompounder/index.js b/projects/dogecompounder/index.js deleted file mode 100644 index 101e2edad40..00000000000 --- a/projects/dogecompounder/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { yieldHelper } = require("../helper/unknownTokens"); -const { getConfig } = require('../helper/cache') - -const chain = "dogechain"; -const tokenAPI = "address:want" - -module.exports = { - [chain]: { - tvl: async (_, _b, { [chain]: block }) => { - const pools = await getConfig('dogecompounder-dogechain', 'https://raw.githubusercontent.com/DogeCompounder/DogeCompounderApi/main/doge_vaults.json'); - const vaults = []; - for(var i = 0; i < pools.length; i++) - vaults.push(pools[i].earnedTokenAddress); - - return yieldHelper({ vaults, chain, block, tokenAPI, useDefaultCoreAssets: true, }) - } - } -} \ No newline at end of file diff --git a/projects/dogedollar/index.js b/projects/dogedollar/index.js deleted file mode 100644 index 8b44cd12b1f..00000000000 --- a/projects/dogedollar/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport, nullAddress, } = require("../helper/unwrapLPs"); - -const DJED_ADDR = '0xA99ef299CdA10AC4Ec974370778fbd27Cfb5CF61' - -module.exports = { - methodology: 'finds the DOGE balance of the DJED instance backing the stablecoin, aswell as the fallback stablecoin balance', - dogechain: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [nullAddress, DJED_ADDR], - ] - }), - } -}; diff --git a/projects/dogepup/index.js b/projects/dogepup/index.js deleted file mode 100644 index 611659eee32..00000000000 --- a/projects/dogepup/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -const token = "0x1b15b9446b9f632a78396a1680DAaE17f74Ce8d9"; -const masterchef = "0xc6dEcf90D8171B0E17f367C9f2fA4560C73845da"; -const chain = "dogechain"; - -module.exports = masterchefExports({ chain, masterchef, nativeTokens: [token], useDefaultCoreAssets: true, }) diff --git a/projects/dogeswap-org/api.js b/projects/dogeswap-org/api.js deleted file mode 100644 index 7e8c86b9c81..00000000000 --- a/projects/dogeswap-org/api.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ factory: '0xD27D9d61590874Bf9ee2a19b27E265399929C9C3', useDefaultCoreAssets: true, queryBatched: 700 }) - } -} \ No newline at end of file diff --git a/projects/dogeswap-org/index.js b/projects/dogeswap-org/index.js deleted file mode 100644 index ab6454761cd..00000000000 --- a/projects/dogeswap-org/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("dogeswap-org", ['dogechain']), -} diff --git a/projects/dogeswap/index.js b/projects/dogeswap/index.js deleted file mode 100644 index 9b770b22776..00000000000 --- a/projects/dogeswap/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokens, } = require('../helper/unwrapLPs') - - -async function staking(timestamp, block) { - - const DOGE_STAKING_CONTRACT = '0xd688F6223c11F601420d716d88d8C1AD018711B8' - const DOGES_TOKEN = '0xb4FBed161bEbcb37afB1Cb4a6F7cA18b977cCB25' - const PUPPY_STAKING_CONTRACT = '0x7a455859C5Bbe2a87c9c76FB684174B6cd31242E' - const PUPPY_TOKEN = '0xa9fb117df8d8a8e3db2f456078320548d6e107fa' - - const balances = {} - await sumTokens( - balances, - [ - [DOGES_TOKEN, DOGE_STAKING_CONTRACT, ], - [PUPPY_TOKEN, PUPPY_STAKING_CONTRACT, ], - ], - block, - ) - - return balances -} - -module.exports = { - ethereum: { - staking, - tvl: () => ({}) - }, -} diff --git a/projects/dogewhale/index.js b/projects/dogewhale/index.js deleted file mode 100644 index bb657c16bb2..00000000000 --- a/projects/dogewhale/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const DW_TOKEN_CONTRACT = '0x43adc41cf63666ebb1938b11256f0ea3f16e6932'; -const DOGE = '0xbA2aE424d960c26247Dd6c32edC70B295c744C43'; -const SHIB = '0x2859e4544C4bB03966803b044A93563Bd2D0DD4D'; -const FLOKI = '0xfb5B838b6cfEEdC2873aB27866079AC55363D37E'; -const USDT = ADDRESSES.bsc.USDT; -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - bsc: { - tvl: sumTokensExport({ - owner: DW_TOKEN_CONTRACT, - tokens: [DOGE, SHIB, FLOKI, USDT] - }), - } -}; \ No newline at end of file diff --git a/projects/dogium-farm/index.js b/projects/dogium-farm/index.js deleted file mode 100644 index be4dd9d89fa..00000000000 --- a/projects/dogium-farm/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -const dogiumToken = "0x55bd2a3904c09547c3a5899704f1207ee61878be"; -const masterchef = "0x579BACCd9DdF3D9e652174c0714DBC0CD4700dF2"; - -module.exports = masterchefExports({ chain: 'dogechain', masterchef, useDefaultCoreAssets: true, nativeTokens: [dogiumToken], }) \ No newline at end of file diff --git a/projects/doglands-swap/index.js b/projects/doglands-swap/index.js deleted file mode 100644 index 6e50268f4be..00000000000 --- a/projects/doglands-swap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { deadFrom } = require("../mosquitos-finance"); - -module.exports = { - methodology: "Count TVL as liquidity on the dex", - misrepresentedTokens: true, - dogechain: { - tvl: () => 0 - }, - hallmarks: [ - ['2023-01-20', 'Project rugged'], - ], - deadFrom: '2023-01-20' -} \ No newline at end of file diff --git a/projects/dogmoney/index.js b/projects/dogmoney/index.js deleted file mode 100644 index 77455c0901b..00000000000 --- a/projects/dogmoney/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL, staking } = require('../helper/unknownTokens') - -const xDOGMONEY = "0xC5c70fA7A518bE9229eB0Dc84e70a91683694562"; -const DOGMONEY = "0x93C8a00416dD8AB9701fa15CA120160172039851"; -const FACTORY = "0xaF85e6eD0Da6f7F5F86F2f5A7d595B1b0F35706C"; - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: FACTORY, - }), - staking: staking({ owner: xDOGMONEY, tokens: [ DOGMONEY ], lps: ['0x9ab710cd0bfbee60e14115d19c76213c4d4b1687'], useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/dogsofelon/index.js b/projects/dogsofelon/index.js deleted file mode 100644 index 310e4245d43..00000000000 --- a/projects/dogsofelon/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const stakingContracts = [ - "0x60C6b5DC066E33801F2D9F2830595490A3086B4e", // DOE earning - "0xaEbA219f6bf8Ec703a1CF1C4bA540cD4Bafa2fBe", // SHIB earning -]; -const DOE = "0xf8e9f10c22840b613cda05a0c5fdb59a4d6cd7ef"; - -const stakingPool2Contract = "0x3C40601f73fbf50b81a72edbf2786f14EBb7371b"; -const DOE_WETH_SLP = "0xd2696e995a2ef33c9b4a3c47f6aa2651beb48b21"; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(stakingContracts, DOE), - tvl: (async) => ({}), - }, - arbitrum: { - pool2: pool2(stakingPool2Contract, DOE_WETH_SLP), - }, - methodology: "Counts liquidty on the staking and pool2 only", -}; - - -module.exports.deadFrom = "2023-01-19" \ No newline at end of file diff --git a/projects/dogswap/index.js b/projects/dogswap/index.js deleted file mode 100644 index f286a9b83d1..00000000000 --- a/projects/dogswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shibarium', '0xA780FcBFF7c5232FDbEF4fc67313bEcFfdf64172') \ No newline at end of file diff --git a/projects/dojoswap-ancient8/index.js b/projects/dojoswap-ancient8/index.js deleted file mode 100644 index f2320073e43..00000000000 --- a/projects/dojoswap-ancient8/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'ancient8': '0x7d6eb409e2540d27Ea6Dc976E1a549a3dBcBfFBC' -}) \ No newline at end of file diff --git a/projects/dojoswap-lsd/index.js b/projects/dojoswap-lsd/index.js deleted file mode 100644 index 79597de42b2..00000000000 --- a/projects/dojoswap-lsd/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') - -const ADDRESSES = { - LSD_CONTRACT: 'inj17glv5mk2pvhpwkdjljacmr2fx9pfc3djepy6xh', - STAKED_INJ_TOKEN_CONTRACT: 'inj134wfjutywny9qnyux2xgdmm0hfj7mwpl39r3r9', - MULTICAL_CONTRACT: 'inj1578zx2zmp46l554zlw5jqq3nslth6ss04dv0ee' -} - -async function tvl(api) { - const data = await queryContract({chain: api.chain, contract: ADDRESSES.LSD_CONTRACT, data: { state: {} }}) - - return { - 'injective-protocol': data.tvl_utoken / 1e18, - } -} - -module.exports = { - methodology: "Liquidity on LSD staking", - injective: { tvl }, -}; diff --git a/projects/dojoswap/index.js b/projects/dojoswap/index.js deleted file mode 100644 index 1e1ebe69c8f..00000000000 --- a/projects/dojoswap/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getFactoryTvl } = require("../terraswap/factoryTvl"); - -const factory = { - classic: "inj1pc2vxcmnyzawnwkf03n2ggvt997avtuwagqngk", -}; - -async function staking() { - - return {} - /* /// POOLS - const response = await fetch('https://analytics.dojo.trading/dashboard/pools/tvl'); - const data = await response.json(); - const keys = Object.keys(data); - const tvl = keys.reduce((tvl, key) => tvl + data[key].tvl, 0); - - return { - tether: tvl - } */ -} - -module.exports = { - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - injective: { tvl: getFactoryTvl(factory.classic), staking: staking }, -}; diff --git a/projects/dokidoki/index.js b/projects/dokidoki/index.js deleted file mode 100644 index 17e20da375f..00000000000 --- a/projects/dokidoki/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs") - -// STAKING -const ethStakingPools = [ - ["0x0CE0f2b998C0a1b0280Dcc95935108781d18E65b", "0x9cEB84f92A0561fa3Cc4132aB9c0b76A59787544",], - ["0x4a5573eE3F333260DB50A385F6fFDAc440fc80b1", "0x9cEB84f92A0561fa3Cc4132aB9c0b76A59787544",], - ["0xdf4F609134a84aae1D18dCe8d863b099c6455598", "0x910524678C0B1B23FFB9285a81f99C29C11CBaEd",], -]; - -// POOL2 LPS -const ethPool2LPs = [ - ["0x1D4b2B2a2Ca8762410801b51f128B73743439E39", "0x95583A6F7aAAA56C48b27413d070219e22844435",], - ["0x1D4b2B2a2Ca8762410801b51f128B73743439E39", "0xB89cf3528A3a62C2f58BDbcFd7C15312a33ce91D",], - ["0x654def3E97C3F4218C3f49ace81687483C361b2b", "0x27599F0b45008dAD28899e8E278ab191673C9179",], -]; - -// POOLS -const ethPools = [ - ["0xb3a2AF499aF8f717BB3431968f8e0b038C975686", ADDRESSES.ethereum.WBTC,], - ["0xde846827cE3022EcD5eFD6ed316a2dEf9AB299B8", ADDRESSES.ethereum.WETH,], -]; - -// POLYGON POOL2 LPS -const polyPool2LPs = [ - ["0xd0985A2E8410c03B3bB0D7997DA433428D58342f", "0xc0a1dFb85734E465C5dadc5683DE58358C906598",], - ["0x92Bb3233F59561FC1fEC53EfC3339E4Af8E917F4", "0x69Cb6f98E45c13A230d292bE0a6aF93a6521c39B",], - ["0x9cb31B03089eca4C0f42554256d0217326D15AE7", "0x2146baC214D9BF2Da56c3d4A69b9149e457F9d8c",], - ["0xcCeD5cB001D6081c4561bf7911F11Ccd9aAA1474", "0xBbDC1681e43549d3871CF1953D1dD9afF320feF0",], -]; - -const polyStakingPools = [ - ["0xE699FFCeD532BB43BD2A84C82c73C858758d12cC", "0x5C7F7Fe4766fE8f0fa9b41E2E4194d939488ff1C"], -] - -async function pool2(api) { - const pool = api.chain === "polygon" ? polyPool2LPs : ethPool2LPs; - return sumTokens2({ api, tokensAndOwners: pool, resolveLP: true, }) -} - -const tvl = (tokensAndOwners) => async (api) => api.sumTokens({ tokensAndOwners }) - -module.exports = { - ethereum: { - tvl: tvl(ethPools), - staking: tvl(ethStakingPools), - pool2, - }, - polygon: { - tvl: async () => ({}), - staking: tvl(polyStakingPools), - pool2, - }, -}; diff --git a/projects/dolomite/dolomite-margin.json b/projects/dolomite/dolomite-margin.json deleted file mode 100644 index 18891d2dfbb..00000000000 --- a/projects/dolomite/dolomite-margin.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "getNumMarkets": "uint256:getNumMarkets", - "getMarketTokenAddress": "function getMarketTokenAddress(uint256 marketId) view returns (address)", - "getMarketPrice": "function getMarketPrice(uint256 marketId) view returns (tuple(uint256 value))", - "getMarketTotalPar": "function getMarketTotalPar(uint256 marketId) view returns (tuple(uint128 borrow, uint128 supply))", - "getMarketCurrentIndex": "function getMarketCurrentIndex(uint256 marketId) view returns (tuple(uint96 borrow, uint96 supply, uint32 lastUpdate))", - "getName": "function name() view returns (string)", - "getUnderlying": "function UNDERLYING_TOKEN() view returns (address)" -} diff --git a/projects/dolomite/index.js b/projects/dolomite/index.js deleted file mode 100644 index 47ccbcd9289..00000000000 --- a/projects/dolomite/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { - getNumMarkets, - getMarketTokenAddress, - getMarketTotalPar, - getMarketCurrentIndex, -} = require("./dolomite-margin.json"); -const BigNumber = require("bignumber.js"); - -const basePar = '1000000000000000000' - -async function getTokensAndBalances(api, supplyOrBorrow) { - const dolomiteMargin = config[api.chain].margin - let tokens = await api.fetchList({ lengthAbi: getNumMarkets, itemAbi: getMarketTokenAddress, target: dolomiteMargin }) - - const underlyingTokens = await api.multiCall({ abi: 'address:UNDERLYING_TOKEN', calls: tokens, permitFailure: true, }) - let bals - if (supplyOrBorrow === 'supply') { - bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokens.map(i => ({ target: i, params: dolomiteMargin })), }) - } else { - const res = await api.fetchList({ lengthAbi: getNumMarkets, itemAbi: getMarketTotalPar, target: dolomiteMargin }) - const indices = await api.fetchList({ lengthAbi: getNumMarkets, itemAbi: getMarketCurrentIndex, target: dolomiteMargin }) - bals = res.map((v, i) => BigNumber(v.borrow.toString()).times(indices[i].borrow).div(basePar).toFixed(0)) - } - - const symbols = await api.multiCall({ abi: 'string:symbol', calls: tokens, permitFailure: true, }) - tokens.forEach((v, i) => { - if (!symbols[i]?.startsWith('pol-')) { - api.add(underlyingTokens[i] ?? v, bals[i]) - } - }) -} - -async function tvl(api) { - return getTokensAndBalances(api, "supply"); -} - -async function borrowed(api) { - return getTokensAndBalances(api, "borrow"); -} - -module.exports = { - start: '2022-10-04', // 10/4/2022 @ 00:00am (UTC) -}; - -const config = { - arbitrum: { margin: '0x6bd780e7fdf01d77e4d475c821f1e7ae05409072', }, - btnx: { margin: '0x003Ca23Fd5F0ca87D01F6eC6CD14A8AE60c2b97D', }, - ethereum: { margin: '0x003Ca23Fd5F0ca87D01F6eC6CD14A8AE60c2b97D', }, - polygon_zkevm: { margin: '0x836b557Cf9eF29fcF49C776841191782df34e4e5', }, - mantle: { margin: '0xE6Ef4f0B2455bAB92ce7cC78E35324ab58917De8', }, - xlayer: { margin: '0x836b557Cf9eF29fcF49C776841191782df34e4e5', }, - berachain: { margin: '0x003Ca23Fd5F0ca87D01F6eC6CD14A8AE60c2b97D', }, - // base: { margin: '0x43C2FDB89A1C491F9FE86E1Ff05bd2BE204Ab4aE', }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed, } -}) diff --git a/projects/dolphinswap/index.js b/projects/dolphinswap/index.js deleted file mode 100644 index 1bd8dc269d1..00000000000 --- a/projects/dolphinswap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], - ["btc.ptokens", "PBTC", "ptokens-btc"], - ["organixtoken", "OGX", "organix"], - ["eosdmdtokens", "DMD", "dmd"], - -]; - -// DMD Finance -// https://dmd.finance/ -async function eos() { - return await get_account_tvl("dolphinsswap", tokens); -} - -module.exports = { - methodology: `DolphinSwap's TVL is achieved by querying token balances from Swap smart contract.`, - eos: { - tvl: eos - }, -} \ No newline at end of file diff --git a/projects/domfi/index.js b/projects/domfi/index.js deleted file mode 100644 index 8211c5e91bf..00000000000 --- a/projects/domfi/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const lsps = { - ethereum: [ - // BTCDOM - "0x3e75DCadDf32571d082da914c471180636f9567d", - // ETHDOM - "0x94E653AF059550657e839a5DFCCA5a17fD17EFdf", - // USDTDOM - "0xD3a0e00f11A91DA9797eEf5B74dF8fc325FC50e0",], - - polygon: [ - // BTCDOM - "0x12CcE472430f7F5071375Cc0A1Aab717310bE116", - // ETHDOM - "0x2771322091C9f86F1f770E2A633C66c068644100", - // USDTDOM - "0x514b3C2761Edc2487F320392EDF094d65E20C9Ee",], - - boba: [ - // BTCDOM-JUN20 - "0x3C77d0130Eb6AfF1DED8C72fb7a5F383B7961c03", - // ETHDOM-JUN20 - "0xCAB14a130cDB3143aD81657D552a7Cee1917a18e", - // USDTDOM-JUN20 - "0x5B9f3B4648b1C7573d9c2A068020Bb34AEC67589", - - // BTCDOM-JUN40 - "0x156a4595b87cc204dc96d05f366ac3fcdff30bec", - // ETHDOM-JUN40 - "0xF123b661d80e755ec26BC0C0CCaAFDD258a102d6", - // USDTDOM-JUN40 - "0x6cafFBf5697c8744713956fdAf84d6a0613Ce20f", - ] -} - -async function tvl(api) { - const lsp = lsps[api.chain] - const tokens = await api.multiCall({ abi: "address:collateralToken", calls: lsp }) - await api.sumTokens({ tokensAndOwners2: [tokens, lsp], }) - -} - -module.exports = { - ethereum: { tvl, }, - polygon: { tvl, }, - boba: { tvl, }, -}; diff --git a/projects/donaswap-v2/index.js b/projects/donaswap-v2/index.js deleted file mode 100644 index a187e902783..00000000000 --- a/projects/donaswap-v2/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens.js"); - -const V2_FACTORY = "0x8e5dff1c121F661971d02950698f8c5EFc3DfA78"; -const tvl = getUniTVL({ factory: V2_FACTORY, useDefaultCoreAssets: true }); - -const chains = ['arbitrum', 'astar', 'aurora', 'avax', 'base', 'bsc', 'celo', 'cmp', 'conflux', 'core', 'dogechain', 'ethereum', 'fantom', 'flare', 'fuse', 'fusion', 'heco', 'kcc', 'kardia', 'kava', 'linea', 'metis', 'moonbeam', 'moonriver', 'optimism', 'palm', 'polygon', 'polygon_zkevm', 'thundercore'] - -module.exports = { - deadFrom: '2024-10-01', - misrepresentedTokens: true, - methodology: "Factory address (0x8e5dff1c121F661971d02950698f8c5EFc3DfA78) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", -}; - -chains.forEach(chain => module.exports[chain] = { tvl }) -module.exports.cmp.tvl = () => ({}) \ No newline at end of file diff --git a/projects/donkeswap/index.js b/projects/donkeswap/index.js deleted file mode 100644 index 280e58c3438..00000000000 --- a/projects/donkeswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -// node test.js projects/donkswap/index.js -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (0x4B4746216214f9e972c5D35D3Fe88e6Ec4C28A6B) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - sei: { - tvl: getUniTVL({ factory: "0x4B4746216214f9e972c5D35D3Fe88e6Ec4C28A6B", useDefaultCoreAssets: true }) - } -}; diff --git a/projects/donkey/abi.json b/projects/donkey/abi.json deleted file mode 100644 index 019dd6deccb..00000000000 --- a/projects/donkey/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "underlying": "address:underlying", - "getAllMarkets": "address[]:getAllMarkets" -} \ No newline at end of file diff --git a/projects/donkey/index.js b/projects/donkey/index.js deleted file mode 100644 index ffbf25bc523..00000000000 --- a/projects/donkey/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); -const { staking } = require('../helper/staking'); - -const controllerAddress = { - ethereum: '0x55e41bc3a99aa24E194D507517b1e8b65eFdAa9e', - klaytn: '0x35dc04eE1D6E600C0d13B21FdfB5C83D022CEF25' -} - -const stakings = [ - '0x4f2ED52bC4CbdE54e2b3547D3758474A21598D7c', - '0x024510151204DeC56Cc4D54ed064f62efAC264d5', - '0x2EacD2D7cF5Cba9dA031C0a9C5d7FDeDc056216C', - '0x8c9886Aca8B6984c10F988078C5e1D91976dFD16', - '0x63D21dBD5A30940C605d77882D065736e8fffC94', -] - -const DONKEY_TOKEN = '0x4576E6825B462b6916D2a41E187626E9090A92c6' - - -module.exports = { - ethereum: { - staking: staking(stakings, DONKEY_TOKEN), - ...compoundExports2({ comptroller: controllerAddress.ethereum, cether: '0xec0d3f28d37a3393cf09ee3ad446c485b6afdaa3' }), - }, - klaytn: compoundExports2({ comptroller: controllerAddress.klaytn, cether: '0xacc72a0ca4e85f79876ed4c5e6ea29be1cd26c2e'}), -} diff --git a/projects/dooar/index.js b/projects/dooar/index.js deleted file mode 100644 index 58153645078..00000000000 --- a/projects/dooar/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const { exportDexTVL, getConnection } = require("../helper/solana"); -const { PublicKey } = require('@solana/web3.js'); -const { decodeAccount } = require('../helper/utils/solana/layout'); - -const PROGRAM_ID = 'Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j'; -const TOKEN_SWAP_SIZE = 324; - -async function getDooarTokenAccounts(chain) { - const connection = getConnection(chain); - const pk = new PublicKey(PROGRAM_ID); - const rawAccounts = await connection.getProgramAccounts(pk); - - const tokenAccounts = []; - for (const { account } of rawAccounts) { - if (account.data.length !== TOKEN_SWAP_SIZE) continue; - - const swap = decodeAccount('tokenSwap', account); - tokenAccounts.push(swap.tokenAccountA.toString()); - tokenAccounts.push(swap.tokenAccountB.toString()); - } - return tokenAccounts; -} - - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0x1e895bFe59E3A5103e8B7dA3897d1F2391476f3c', - useDefaultCoreAssets: true - }) - }, - solana:{ - tvl: exportDexTVL(PROGRAM_ID, getDooarTokenAccounts) - } -}; \ No newline at end of file diff --git a/projects/doorainu/index.js b/projects/doorainu/index.js deleted file mode 100644 index 917e1f800ba..00000000000 --- a/projects/doorainu/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'arbitrum', - useDefaultCoreAssets: true, - masterchef: '0xc98d9f2AD12D9813e1f76139b7ba7b84a1d2a878', - nativeToken: '0xb7ffA0D35597d2e166384fc88Ed746a4c74be001', -}) diff --git a/projects/dopex-clamm/index.js b/projects/dopex-clamm/index.js deleted file mode 100644 index 97f4c2fe7b4..00000000000 --- a/projects/dopex-clamm/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const { gql, request } = require("graphql-request"); - -const SUBGRAPH_ENDPOINTS = { - arbitrum: - "https://api.0xgraph.xyz/api/public/e2146f32-5728-4755-b1d1-84d17708c119/subgraphs/clamm-arbitrum/prod/gn", - sonic: - "https://api.0xgraph.xyz/api/public/e2146f32-5728-4755-b1d1-84d17708c119/subgraphs/clamm-sonic/prod/gn", - base: "https://api.0xgraph.xyz/api/public/e2146f32-5728-4755-b1d1-84d17708c119/subgraphs/clamm-base/prod/gn", - blast: - "https://api.0xgraph.xyz/api/public/e2146f32-5728-4755-b1d1-84d17708c119/subgraphs/clamm-blast/prod/gn", - mantle: - "https://api.0xgraph.xyz/api/public/e2146f32-5728-4755-b1d1-84d17708c119/subgraphs/clamm-mantle/prod/gn", -}; - -const abi = - "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)"; - -const query = gql` - query strikes($limit: Int!, $skip: Int!) { - strikes( - first: $limit - skip: $skip - where: { totalLiquidity_gt: "100" } - orderBy: totalLiquidity - orderDirection: desc - ) { - pool - token0 { - id - } - token1 { - id - } - tickLower - tickUpper - totalLiquidity - } - } -`; - -async function fetchStrikes(endpoint, limit, skip, allData = []) { - const variables = { limit, skip }; - const { strikes } = await request(endpoint, query, variables); - allData.push(...strikes); - - if (strikes.length === limit) { - return fetchStrikes(endpoint, limit, skip + limit, allData); - } - - return allData; -} - -function addV3PositionBalances(strike, sqrtPricesMap) { - const tickToPrice = (tick) => 1.0001 ** tick; - const token0 = strike.token0.id; - const token1 = strike.token1.id; - const liquidity = strike.totalLiquidity; - const bottomTick = +strike.tickLower; - const topTick = +strike.tickUpper; - const tick = +sqrtPricesMap[strike.pool.toLowerCase()].tick; - const sa = tickToPrice(bottomTick / 2); - const sb = tickToPrice(topTick / 2); - - let amount0 = 0; - let amount1 = 0; - - if (tick < bottomTick) { - amount0 = (liquidity * (sb - sa)) / (sa * sb); - } else if (tick < topTick) { - const price = tickToPrice(tick); - const sp = price ** 0.5; - - amount0 = (liquidity * (sb - sp)) / (sp * sb); - amount1 = liquidity * (sp - sa); - } else { - amount1 = liquidity * (sb - sa); - } - - return { token0, amount0, token1, amount1 }; -} - -function tvlByChain(chain) { - return async function (api) { - const endpoint = SUBGRAPH_ENDPOINTS[chain]; - if (!endpoint) - throw new Error(`No subgraph endpoint configured for chain: ${chain}`); - - const limit = 1000; - const allData = await fetchStrikes(endpoint, limit, 0); - - let pools = allData.map((strike) => strike.pool.toLowerCase()); - pools = [...new Set(pools)]; - const sqrtPrices = await api.multiCall({ calls: pools, abi }); - const sqrtPricesMap = sqrtPrices.reduce((acc, item, i) => { - return { ...acc, [pools[i]]: item }; - }, {}); - - allData.forEach((strike) => { - const { token0, amount0, token1, amount1 } = addV3PositionBalances( - strike, - sqrtPricesMap - ); - api.add(token0, amount0); - api.add(token1, amount1); - }); - }; -} - -module.exports = { - doublecounted: true, // tokens are stored in UNI-V3 pools - arbitrum: { - tvl: tvlByChain("arbitrum"), - }, - sonic: { - tvl: tvlByChain("sonic"), - }, - base: { - tvl: tvlByChain("base"), - }, - blast: { - tvl: tvlByChain("blast"), - }, - mantle: { - tvl: tvlByChain("mantle"), - }, - methodology: - "TVL is calculated by summing the value of all tokens in Stryke liquidity positions across supported chains", -}; diff --git a/projects/dopex/index.js b/projects/dopex/index.js deleted file mode 100644 index 1fa89502417..00000000000 --- a/projects/dopex/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const SSOVS = [ - // Monthlies - // DPX Monthly CALL SSOV - "0x05E7ACeD3b7727f9129E6d302B488cd8a1e0C817", - - // rDPX Monthly CALL SSOV - "0xd74c61ca8917Be73377D74A007E6f002c25Efb4e", - // stETH Monthly CALL SSOV - "0x475a5a712B741b9Ab992E6Af0B9E5adEE3d1851B", - // ARB Monthly CALL SSOV - "0xDF3d96299275E2Fb40124b8Ad9d270acFDcc6148", - // Weeklies - // DPX Weekly CALL SSOV - "0x10FD85ec522C245a63239b9FC64434F58520bd1f", - // rDPX Weekly CALL SSOV - "0xCdaACF37726Bf1017821b5169e22EB34734B28A8", - // stETH Weekly CALL SSOV - "0xFca61E79F38a7a82c62f469f55A9df54CB8dF678", - // DPX Weekly PUT SSOV - "0xf71b2B6fE3c1d94863e751d6B455f750E714163C", - // rDPX Weekly PUT SSOV - "0xb4ec6B4eC9e42A42B0b8cdD3D6df8867546Cf11d", - // ETH Weekly PUT SSOV - "0x32449DF9c617C59f576dfC461D03f261F617aD5a", -]; - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: SSOVS}) - return api.sumTokens({ tokensAndOwners2: [tokens, SSOVS]}) -} - -module.exports = { - ethereum: { tvl: () => ({}) }, - bsc: { tvl: () => ({}) }, - avax: { tvl: () => ({}) }, - arbitrum: { tvl, }, -}; diff --git a/projects/dopplefinance/index.js b/projects/dopplefinance/index.js deleted file mode 100644 index 2338cf6a446..00000000000 --- a/projects/dopplefinance/index.js +++ /dev/null @@ -1,107 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const assetsOnExchange = { - bsc: [ - // * KUSD - '0x940Ff63e82d15fb47371BFE5a4ed7D7D183dE1A5', - // * BUSD - ADDRESSES.bsc.BUSD, - // * USDT - ADDRESSES.bsc.USDT, - // * USDC - ADDRESSES.bsc.USDC, - // * DAI - "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", - // * UST - "0x23396cF899Ca06c4472205fC903bDB4de249D6fC", - // * BTCB - ADDRESSES.bsc.BTCB, - // * renBTC - '0xfCe146bF3146100cfe5dB4129cf6C82b0eF4Ad8c', - // * USDN - '0x03ab98f5dc94996F8C33E15cD4468794d12d41f9', - // * TUSD - ADDRESSES.bsc.BTUSD, - // * DOLLY - "0xfF54da7CAF3BC3D34664891fC8f3c9B6DeA6c7A5" - ], - fantom: [ - // * USDC - ADDRESSES.fantom.USDC, - // * fUSDT - ADDRESSES.fantom.fUSDT, - // * DAI - ADDRESSES.fantom.DAI, - // * MIM - ADDRESSES.fantom.MIM, - ], - harmony: [ - // * KUSD - '0x60d717d69f964f4b67de9786e1796a4cf0d89940', - // * 1USDC - '0x985458e523db3d53125813ed68c274899e9dfab4', - // * 1USDT - '0x3c2b8be99c50593081eaa2a724f0b8285f5aba8f', - // * 1BUSD, - '0xe176ebe47d621b984a73036b9da5d834411ef734', - // * bscUSDC - '0x44cED87b9F1492Bf2DCf5c16004832569f7f6cBa', - // * bscUSDT - '0x9A89d0e1b051640C6704Dde4dF881f73ADFEf39a', - // * bscBUSD - '0x0aB43550A6915F9f67d0c454C2E90385E6497EaA', - ] -} - -async function bscTVL(_, _b, { bsc: block }) { - const chain = 'bsc' - const pools = [ - '0x5162f992EDF7101637446ecCcD5943A9dcC63A8A', - '0x449256e20ac3ed7f9ae81c2583068f7508d15c02', - '0x61f864a7dfe66cc818a4fd0baabe845323d70454', - '0x215b3616730020a7f3e075526588d0cdaa057dca', - '0x36e04b29169313d93a056289109ba8a8291e69ab', - '0xbc42fadcc37994c65a559fb7803ed60d90994e9f', - '0xf8af8659a2af27d65bb3e705f0e97b321886031d', - '0x830e287ac5947b1c0da865dfb3afd7cdf7900464', - ] - const toa = [ - [ADDRESSES.bsc.USDC, '0xa275769Fb6fF34A1a01C8CE61D0182f5d36AD27A',], // USDC collateral for minting KUSD - ] - assetsOnExchange.bsc.forEach(t => pools.forEach(o => toa.push([t, o]))) - return sumTokens2({ tokensAndOwners: toa, chain, block, }) -} - -async function fantom(_, _b, { fantom: block }) { - const chain = 'fantom' - const pools = [ - '0x5162f992EDF7101637446ecCcD5943A9dcC63A8A', - ] - const toa = [] - assetsOnExchange.fantom.forEach(t => pools.forEach(o => toa.push([t, o]))) - return sumTokens2({ tokensAndOwners: toa, chain, block, }) -} - -async function harmony(_, _b, { harmony: block }) { - const chain = 'harmony' - const pools = [ - '0xccb7c3166729fe92c914fb38b850696748d83db8', - '0x44a783b046f012287a233e4e51949f47a2279dee', - ] - const toa = [] - assetsOnExchange.harmony.forEach(t => pools.forEach(o => toa.push([t, o]))) - return sumTokens2({ tokensAndOwners: toa, chain, block, }) -} - -module.exports = { - bsc: { - tvl: bscTVL, - }, - fantom: { - tvl: fantom, - }, - harmony: { - tvl: harmony, - }, -} diff --git a/projects/doppler-finance/index.js b/projects/doppler-finance/index.js deleted file mode 100644 index fbf3d0b243e..00000000000 --- a/projects/doppler-finance/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const axios = require('axios'); - -const DOPPLER_API_URL = "https://api.doppler.finance/v2/staking-info"; -const DOPPLER_PARTNER_API_URL = "https://partner.doppler.finance"; -const XRPL = "xrpl"; -const ETHEREUM = "ethereum"; -const XRPL_RLUSD_ADDRESS = "524C555344000000000000000000000000000000.rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"; -const ETHEREUM_RLUSD_ADDRESS = "0x8292Bb45bf1Ee4d140127049757C2E0fF06317eD"; -// ref: https://docs.doppler.finance/xrpfi/cedefi-yields#what-makes-doppler-finance-different-from-other-cedefi -// rEPQxsSVER2r4HeVR4APrVCB45K68rqgp2: Fireblocks, A wallet which filters out abnormal deposits -// rprFy94qJB5riJpMmnPDp3ttmVKfcrFiuq: Fireblocks, A wallet which receives and stores properly deposited funds from the deposit wallet. The funds accumulated in this wallet are transferred to ceffu once a week. -// rp53vxWXuEe9LL6AHcCtzzAvdtynSL1aVM: Ceffu, Under Ceffu custody, the assets in this wallet can be delegated to Binance. Once the delegation is complete, the balance is no longer recorded on-chain for this wallet. -// Ceffu is similar to CEX wallets, making it impossible to track Doppler's balance on-chain -// Our api response is sum of fireblocks and ceffu balances - -// Partner Vault -// rDkfnysh6MmpitowwYm3cEyYKzLG2zEWEX: Fireblocks, Partner Vault 1 -// rHsvjnyYoAZFajhti4mb5bhcXTxLebqpKK: Fireblocks, Partner Vault 2 -const xrplTvl = async (api) => { - // ### Main Vault ### - // XRP - const { data } = await axios.get(`${DOPPLER_API_URL}/token/XRP`); - if (!data) { - throw new Error('Invalid API response'); - } - - for (const d of data) { - const { totalStaked, pendingWithdrawalAmount, chain } = d; - if (chain === XRPL) { - const total = Number(totalStaked) + Number(pendingWithdrawalAmount); - api.add(ADDRESSES.ripple.XRP, total * 1e6); // Convert to drops (1 XRP = 1,000,000 drops) - } - } - - // RLUSD - const { data: rlUSDData } = await axios.get(`${DOPPLER_API_URL}/token/RLUSD`); - if (!rlUSDData) { - throw new Error('Invalid API response'); - } - - for (const d of rlUSDData) { - const { totalStaked, pendingWithdrawalAmount, chain } = d; - if (chain === XRPL) { - const total = Number(totalStaked) + Number(pendingWithdrawalAmount); - api.add(XRPL_RLUSD_ADDRESS, total * 1e6); - } - } - - // ### Partner Vault ### - const { data: partnerData } = await axios.get(`${DOPPLER_PARTNER_API_URL}/v1/bridge/vaults/balance/XRP`); - if (!partnerData) { - throw new Error('Invalid API response'); - } - const { totalBalance } = partnerData; - api.add(ADDRESSES.ripple.XRP, totalBalance * 1e6); -} - -const ethereumTvl = async (api) => { - const { data } = await axios.get(`${DOPPLER_API_URL}/token/RLUSD`); - if (!data) { - throw new Error('Invalid API response'); - } - - for (const d of data) { - const { totalStaked, pendingWithdrawalAmount, chain } = d; - if (chain === ETHEREUM) { - const total = Number(totalStaked) + Number(pendingWithdrawalAmount); - api.add(ETHEREUM_RLUSD_ADDRESS, total * 1e18); - } - } -} - -module.exports = { - ripple: { - tvl: xrplTvl - }, - ethereum: { - tvl: ethereumTvl - } -}; \ No newline at end of file diff --git a/projects/dorian/index.js b/projects/dorian/index.js deleted file mode 100644 index bea9b6756bb..00000000000 --- a/projects/dorian/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { aaveV2Export } = require("../helper/aave"); -const { staking } = require("../helper/staking"); -const methodologies = require("../helper/methodologies"); - -const LPConfiguratorContract = "0x29604bF5D09bcb714D13549f98CC4Bb49c2Ff672"; -const StakingContract = "0x3C57d20A70d4D34331d442Cd634B0ccAF6Ad89A4"; -const TokenContract = "0x6191F90724cD0aa791B7476e804ae00146618Ab6"; - -module.exports = { - core: { - ...aaveV2Export(LPConfiguratorContract, { - fromBlock: 15251455, - }), - staking: staking(StakingContract, TokenContract), - }, -}; - -module.exports.methodology = methodologies.lendingMarket; diff --git a/projects/dotdot/index.js b/projects/dotdot/index.js deleted file mode 100644 index 26f59034b22..00000000000 --- a/projects/dotdot/index.js +++ /dev/null @@ -1,166 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { pool2 } = require("../helper/pool2"); -const { staking } = require("../helper/staking"); - -const epsLPStaking = "0x5b74c99aa2356b4eaa7b85dc486843edff8dfdbe"; -const proxy = "0xd4d01c4367ed2d4ab5c2f734d640f7ffe558e8a8"; -function getFactoryType(factory, token) { - if (!factory) return 'unknown' - - if (token.toLowerCase() === "0xaf4de8e872131ae328ce21d909c74705d3aaf452") - return 'unknown' - - if (token.toLowerCase() === "0x5b5bd8913d766d005859ce002533d4838b0ebbb5") - return 'unknown' - - if ([ - "0x8433533c5B67C4E18FA06935f73891B28a10932b".toLowerCase(), - "0x9f494C121A932F9Ed575c6c96F885E51Ec6B367b".toLowerCase() - ].includes(factory.toLowerCase()) - ) return 'type2' - - if ([ - "0xa5d748a3234A81120Df7f23c9Ea665587dc8d871".toLowerCase(), - "0x41871A4c63d8Fae4855848cd1790ed237454A5C4".toLowerCase(), - "0xf65BEd27e96a367c61e0E06C54e14B16b84a5870".toLowerCase() - ].includes(factory.toLowerCase()) - ) return 'type4' - return 'unknown' -} -async function tvl(api) { - let addresses = (await api.fetchList({ target: epsLPStaking, itemAbi: abis.registeredTokens, lengthAbi: abis.poolLength })).map(i => i.toLowerCase()); - // const minters = await api.multiCall({ abi: abis.minter, calls: addresses, permitFailure: true, }); - // const factories1 = await api.multiCall({ abi: abis.factory, calls: addresses, permitFailure: true, }); - // const factories2 = await api.multiCall({ abi: abis.factory2, calls: addresses, permitFailure: true, }); - const calls = addresses.map(i => ({ params: [i, proxy] })); - const bals = await api.multiCall({ target: epsLPStaking, abi: abis.userInfo, calls, }); - api.add(addresses, bals.map(i => i.depositAmount)) - await fix3Stable(api); - // await fixVal3EPS(api); - return; - /* const totalSupplies = await api.multiCall({ calls: addresses, abi: "erc20:totalSupply" }); - const ratios = totalSupplies.map((supply, i) => +bals[i].depositAmount ? bals[i].depositAmount / supply : 0); - const epsCalls = addresses.map((token, i) => ({ - ratio: ratios[i], - token, - minter: minters[i], - factory: factories1[i] || factories2[i], - factoryType: getFactoryType(factories1[i] || factories2[i], token), - tokenBalance: bals[i].depositAmount - })) - - epsCalls.filter(i => i.factoryType === 'unknown').forEach(resolveEpsLPUnkwonFactory) - await resolveEpsLP(api, epsCalls.filter(i => i.factoryType === 'type2')) - await resolveEpsLP(api, epsCalls.filter(i => i.factoryType === 'type4')) - - function resolveEpsLPUnkwonFactory({ token, ratio, tokenBalance, factory, minter, }) { - if (+ratio === 0 || !ratio) return; - if (token.toLowerCase() === "0xaf4de8e872131ae328ce21d909c74705d3aaf452") { - api.add(ADDRESSES.bsc.BUSD, tokenBalance); // store 3EPS as BUSD - return; - } - if (token.toLowerCase() === "0x5b5bd8913d766d005859ce002533d4838b0ebbb5") { - api.add("0x5b5bd8913d766d005859ce002533d4838b0ebbb5", tokenBalance); - return; - } - const blacklist = [ - "0xf71a0bcc3ef8a8c5a28fc1bc245e394a8ce124ec", - "0xaF4dE8E872131AE328Ce21D909C74705d3Aaf452" - ].map(i => i.toLowerCase()); - if (blacklist.includes(token.toLowerCase())) return; - if (ratio === 0 || isNaN(ratio)) return; - if (!minter || !factory) return; - } */ -} - -async function fix3Stable(api) { - const stable3 = '0x318aa2a0cb415675b991ec4a9484315dfa6b3886' - const bal = api.getBalances()['bsc:' + stable3] - if (!bal) return; - api.removeTokenBalance(stable3) - const supply = await api.call({ - target: stable3, - abi: 'erc20:totalSupply', - }); - const ratio = bal / supply - const tokens = await api.multiCall({ abi: 'function coins(uint256) view returns (address)', calls: [0,1,2], target: '0x592b78C69a728b03C02dE9aC5Ed2BCb69E276023'}) - const balances = await api.multiCall({ abi: 'function balances(uint256) view returns (uint256)', calls: [0,1,2], target: '0x592b78C69a728b03C02dE9aC5Ed2BCb69E276023'}) - balances.forEach((balance, i) => { - api.add(tokens[i], balance * ratio) - }) -} - -async function fixVal3EPS(api) { - const val3EPSKey = "0x5b5bd8913d766d005859ce002533d4838b0ebbb5"; - const balance = api.getBalances()['bsc:' + val3EPSKey]; - api.removeTokenBalance(val3EPSKey) - const supply = await api.call({ - target: "0x5b5bd8913d766d005859ce002533d4838b0ebbb5", - abi: "erc20:totalSupply", - }); - const ratio = balance / supply; - const params = "0x19EC9e3F7B21dd27598E7ad5aAe7dC0Db00A806d"; // minter - const calls = [ - { params, target: ADDRESSES.bsc.valBUSD }, - { params, target: ADDRESSES.bsc.valUSDC }, - { params, target: ADDRESSES.bsc.valUSDT } - ] - const output = await api.multiCall({ abi: "erc20:balanceOf", calls, }); - output.forEach((v, i) => { - api.add(calls[i].target, i * ratio); - }); -} - -async function resolveEpsLP(api, calls) { - calls = calls.filter(({ token, ratio, factory, minter, }) => { - if (+ratio === 0 || !ratio) return false; - const blacklist = [ - "0xf71a0bcc3ef8a8c5a28fc1bc245e394a8ce124ec", - "0xaF4dE8E872131AE328Ce21D909C74705d3Aaf452" - ].map(i => i.toLowerCase()); - if (blacklist.includes(token.toLowerCase())) return false; - if (!minter || !factory) return false; - return true; - }) - if (!calls.length) return; - const factoryType = calls[0].factoryType; - const coinsAbi = `function get_coins(address _pool) view returns (address[${factoryType === 'type2' ? 2 : 4}])`; - const balancesAbi = `function get_balances(address _pool) view returns (uint256[${factoryType === 'type2' ? 2 : 4}])`; - const minters = calls.map(i => ({ target: i.factory, params: [i.minter] })); - const coins = await api.multiCall({ abi: coinsAbi, calls: minters }) - const balances = await api.multiCall({ abi: balancesAbi, calls: minters }) - calls.forEach(({ ratio, }) => { - coins.forEach((coin, i) => { - balances[i].forEach((val, j) => - api.add(coin[j].toLowerCase(), val * ratio) - ); - }); - }) -} - - - -module.exports = { - bsc: { - tvl, - pool2: pool2( - "0xe8bcccb79b66e49e7f95d576049cf4b23fdbc256", - "0xc19956eca8a3333671490ef6d6d4329df049dddd", - ), - staking: staking( - "0x51133c54b7bb6cc89dac86b73c75b1bf98070e0d", - "0x84c97300a190676a19D1E13115629A11f8482Bd1", - ) - } -}; - -const abis = { - poolLength: "uint256:poolLength", - registeredTokens: "function registeredTokens(uint256) view returns (address)", - factory: "address:factory", - factory2: "address:factory", - minter: "address:minter", - getNCoins: "function get_n_coins(address _pool) view returns (uint256)", - userInfo: "function userInfo(address, address) view returns (uint256 depositAmount, uint256 adjustedAmount, uint256 rewardDebt, uint256 claimable)", - getLpToken: "function get_lp_token(address arg0) view returns (address)", -} diff --git a/projects/dotoracle/index.js b/projects/dotoracle/index.js deleted file mode 100644 index c131683560b..00000000000 --- a/projects/dotoracle/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') -const { staking} = require('../helper/staking') - -// data taken from https://github.com/dotoracle/bridge-contracts/tree/master/deployments -const config = { - ethereum: { - bridges: [ - '0x02b758ce469af940C57A42aD1dE5D404122bc283', - ], - tokens: { - eth: nullAddress, - usdc: ADDRESSES.ethereum.USDC, - usdt: ADDRESSES.ethereum.USDT, - DAI: ADDRESSES.ethereum.DAI, - frax: ADDRESSES.ethereum.FRAX, - fxs: ADDRESSES.ethereum.FXS, - maker: ADDRESSES.ethereum.MKR, - aave: ADDRESSES.ethereum.AAVE, - } - }, - avax: { - bridges: [ - '0x328A523B71545ddE8CD12a685318F2777D68798D', - ], - tokens: { - avax: nullAddress, - ptp: '0x22d4002028f537599be9f666d1c4fa138522f9c8', - } - }, - bsc: { - bridges: [ - '0x328A523B71545ddE8CD12a685318F2777D68798D', - ], - tokens: { - bsc: nullAddress, - busd: ADDRESSES.bsc.BUSD, - } - }, - okexchain: { - bridges: [ - '0x328A523B71545ddE8CD12a685318F2777D68798D', - ], - tokens: { - okt: nullAddress, - } - }, - moonbeam: { - bridges: [ - '0x328A523B71545ddE8CD12a685318F2777D68798D', - ], - tokens: { - glmr: nullAddress, - } - }, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: (_, _b, {[chain]: block}) => { - const { bridges: owners, tokens } = config[chain] - return sumTokens2({ tokens: Object.values(tokens), owners, chain, block }) - } - } -}) - -module.exports.ethereum.staking = staking('0xbf4c359C3C49aA243d0250863eB7B71997762083', '0xb57420fad6731b004309d5a0ec7c6c906adb8df7') \ No newline at end of file diff --git a/projects/double/abis.json b/projects/double/abis.json deleted file mode 100644 index 97b37f291f5..00000000000 --- a/projects/double/abis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "locked": "function locked(uint256) view returns (int128 amount, uint256 end)", - "totalBalances": "function totalBalances(address) view returns (uint256)", - "allPairsLength": "uint256:allPairsLength", - "allPairs": "function allPairs(uint256) view returns (address)", - "token0": "address:token0", - "token1": "address:token1" -} \ No newline at end of file diff --git a/projects/double/index.js b/projects/double/index.js deleted file mode 100644 index c3201df4576..00000000000 --- a/projects/double/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const abis = require("./abis.json"); - -const DDDX = '0x4B6ee8188d6Df169E1071a7c96929640D61f144f'; - -async function staking(api) { - const locked = await api.call({ abi: abis.locked, target: '0xFe9e21e78089094E1443169c4c74bBBBcBb13DE0', params: [8] }) - api.add(DDDX, locked.amount) -} - -async function tvl(api) { - const pairs = await api.fetchList({ lengthAbi: abis.allPairsLength, itemAbi: abis.allPairs, target: '0xb5737A06c330c22056C77a4205D16fFD1436c81b', }) - const bals = await api.multiCall({ abi: abis.totalBalances, calls: pairs, target: '0x89BEda6E5331CdDEe6c9a5Ad1B789ce6dFEBe6c7', }) - api.add(pairs, bals) - return sumTokens2({ api, resolveLP: true }) -} - -module.exports = { - doublecounted: true, - bsc: { - tvl, - pool2: () => ({}), - staking - }, - deadFrom: '2022-07-11' -}; diff --git a/projects/double2win/index.js b/projects/double2win/index.js deleted file mode 100644 index c68d0e86d57..00000000000 --- a/projects/double2win/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens2 } = require("../helper/unwrapLPs") - -async function getTokens(chain, subgraph) { - const graphQuery = ` - { - assetTokens(where: {amount_gt: "0"}) { - tokenAddress - } - migrations(where: {pair_starts_with: "0x", lpAmount_gt: "0"}) { - pair - ammType - } - liquidities(where: {pair_starts_with: "0x", lpAmount_gt: "0"}) { - pair - ammType - } - } - ` - - const { assetTokens, migrations, liquidities } = await cachedGraphQuery(`double2win/${chain}`, subgraph, graphQuery) - const tokens = [] - - migrations.forEach(migration => { tokens.push(migration.pair.toLowerCase()) }) - liquidities.forEach(liquidity => { tokens.push(liquidity.pair.toLowerCase()) }) - assetTokens.forEach(assetToken => { tokens.push(assetToken.tokenAddress.toLowerCase()) }) - - return tokens -} - -async function arbitrumTvl(api) { - const chain = api.chain - const subgraph = "https://api.studio.thegraph.com/query/16975/double-arbitrum/version/latest" - const addresses = { - uniswapV2Vault: '0xBf212dEE0aea6531dEb0B02be6E70b527dDF8246', - uniswapV2Migration: '0x1c6E7CE03ae7a9A252BcE0C9F871654dBB0C7ca5', - uniswapV3Vault: '0x07116C5ED5cBb49464f64926Ba152B8985fe3AFf', - uniswapV3Migration: '0x99F980fa0b1939A0A1033092EF2a668df8D8b70D', - assetVault: '0x7C09A9c30736F17043Fe6D0C0A3D03a7Cf6e78FD', - } - - const tokens = await getTokens(chain, subgraph) - - const blacklistedTokens = ['0x13654df31871b5d01e5fba8e6c21a5d0344820f5'] - await sumTokens2({ api, owners: [addresses.uniswapV3Vault, addresses.uniswapV3Migration,], resolveUniV3: true, blacklistedTokens, }) - await sumTokens2({ api, owners: [addresses.uniswapV2Migration, addresses.assetVault, addresses.uniswapV2Vault], tokens, resolveLP: true, blacklistedTokens, }) - -} - -module.exports = { - doublecounted: true, - arbitrum: { - tvl: arbitrumTvl, - }, -} diff --git a/projects/doubler/index.js b/projects/doubler/index.js deleted file mode 100644 index ce04c5f7fb6..00000000000 --- a/projects/doubler/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const ARB_DOUBLER_POOL1_CONTRACT = '0x56386f04111057a5D8DF8d719827038B716333F0'; - -const abi = "function getPool() view returns ((bool isNative, uint16 inputFee, uint16 withdrawFee, uint256 id, uint256 lastPrice, uint256 cLastRbTime, uint256 lowerOfInputMaximum, uint256 endPrice, uint256 startTime, uint256 lastDayRate, uint256 endTime, address asset, address cToken, address bToken, address creator))" - -const config = { - arbitrum: { - pepe: '0x15AD6EDCa40dFAFE1B3BAc5F1c6d65411726F1bF', - pool2: '0xC64a3f7da839F8851cB2A5710b693c92fA461027', - }, - manta: { - weth: '0xc8480647Eeb358df638Ca882362cE528cC666087', - manta: '0x498F4711a706F9ad33b5D68EaA20E56a87d5d926', - }, -} - -Object.keys(config).forEach(chain => { - const pools = Object.values(config[chain]) - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi, calls: pools, }) - if (chain === 'arbitrum') { - tokens.push({ asset: ADDRESSES.arbitrum.WETH }) - pools.push(ARB_DOUBLER_POOL1_CONTRACT) - } - return api.sumTokens({ tokensAndOwners2: [tokens.map(i => i.asset), pools] }) - } - } -}) \ No newline at end of file diff --git a/projects/doubleup/index.js b/projects/doubleup/index.js deleted file mode 100644 index 053ccca4893..00000000000 --- a/projects/doubleup/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); - -const UNI_HOUSE_OBJ_ID = "0x75c63644536b1a7155d20d62d9f88bf794dc847ea296288ddaf306aa320168ab" - -const BUCK = ADDRESSES.sui.BUCK -const UPUSD = "0x5de877a152233bdd59c7269e2b710376ca271671e9dd11076b1ff261b2fd113c::up_usd::UP_USD" -const UPUSD_FACTORY = "0x35507cec814a779e23393aa8e17746c51e38fb5efa18afdc8434a670da4d3338" - -async function tvl(api) { - //Unihouse - const unihouseDynamicFields = await sui.getDynamicFieldObjects({ - parent: UNI_HOUSE_OBJ_ID, - }); - - const unihouseList = unihouseDynamicFields?.filter( - (field) => field?.type.includes("house::House"), - ); - - const unihouseIdList = unihouseList.map((house) => house.fields.id.id); - - for (const id of unihouseIdList) { - const house = await sui.getObject(id); - - const houseType = house?.type; - const coinType = houseType.split("<")[1].split(">")[0]; - - const housePipeDebt = house?.fields?.house_pipe_debt?.fields?.value; - const housePool = house?.fields?.house_pool; - const houseTvl = Number(housePipeDebt) + Number(housePool); - - const pipeDebt = house?.fields?.pipe_debt?.fields?.value; - const _tvl = Number(pipeDebt) + Number(house?.fields?.pool); - - if(coinType === UPUSD || coinType === "0x49f123d62df1db5a735463f3817dcd53aa084173cbe4593db6b30647b9801cb8::unihouse::FeeTag, 0x49f123d62df1db5a735463f3817dcd53aa084173cbe4593db6b30647b9801cb8::unihouse::HouseFeeConfig"){ - continue; - }else { - console.log(`${coinType}`,houseTvl + _tvl); - - api.add(coinType, houseTvl+_tvl); - } - - } - - // UPUSD - const upusd_factory = await sui.getObject(UPUSD_FACTORY) - - const buck_tvl = upusd_factory?.fields?.underlying_balance; - - console.log(`${BUCK}`,buck_tvl); - - api.add(BUCK, buck_tvl); - -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/dough-finance.js b/projects/dough-finance.js deleted file mode 100644 index f4bc2f34000..00000000000 --- a/projects/dough-finance.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2 } = require("./helper/unwrapLPs") - -async function getVaults(api) { - const vaults = await api.fetchList({ lengthAbi: 'dsaCounter', itemAbi: 'getDsaByID', target: "0x5390724ca3b0880242c7b1ef08eb9b1abe698c0e" }) - const tokens = [ - "0x98c23e9d8f34fefb1b7bd6a91b7ff122f4e16f5c", - "0x4d5f47fa6a74757f35c14fd3a6ef8e3c9bc514e8", - ADDRESSES.ethereum.USDC, // usdc - ADDRESSES.ethereum.WETH, // eth - "0x72e95b8931767c79ba4eee721354d6e99a61d004", // debt usdc - "0xea51d7853eefb32b6ee06b1c12e6dcca88be0ffe", // debt weth - ] - return { vaults, tokens } -} - -module.exports = { - // hallmarks: [ - // [1720742400, "Protocol Exploit"] - // ], - ethereum: { - tvl: async (api) => { - const { vaults, tokens } = await getVaults(api) - return sumTokens2({ api, tokens, owners: vaults }) - }, - } -} diff --git a/projects/doveswap-v3/index.js b/projects/doveswap-v3/index.js deleted file mode 100644 index b7195d302b9..00000000000 --- a/projects/doveswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - polygon_zkevm: { factory: '0xde474db1fa59898bc91314328d29507acd0d593c', fromBlock: 99323, }, -}) \ No newline at end of file diff --git a/projects/doveswap/index.js b/projects/doveswap/index.js deleted file mode 100644 index 8efd1c77235..00000000000 --- a/projects/doveswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('polygon_zkevm', '0xeA2709fCD78141976803C3aecA23eCEa3Cb9cb41') diff --git a/projects/dpex/index.js b/projects/dpex/index.js deleted file mode 100644 index 6b1cded7e9e..00000000000 --- a/projects/dpex/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -const { gmxExports } = require('../helper/gmx') -module.exports = { - polygon: { - tvl: gmxExports({ vault: '0x24AfB3B27156E71e68e292E4aD71Db827F83f05C', }) - } -} \ No newline at end of file diff --git a/projects/drachma-exchange/index.js b/projects/drachma-exchange/index.js deleted file mode 100644 index ff19803bde4..00000000000 --- a/projects/drachma-exchange/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - hallmarks: [ - [1660392000,"Rug Pull"] - ], - methodology: - "drachma exchange TVL is computed by looking at the balances of the accounts holding the tokens backing the drachma vault user. The data comes from https://drachma.exchange/pool.", - solana: { - tvl: () => 0 - }, - deadFrom: 1660392000, -}; diff --git a/projects/drachma/contracts.json b/projects/drachma/contracts.json deleted file mode 100644 index fc04f7a19f5..00000000000 --- a/projects/drachma/contracts.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "usdc": { - "metis": "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21" - }, - "metis": [ - { - "address": "0xF3f03c110e01dE844fE8a608063bDC9b6c6cdC9f", - "token": "0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC", - "currency": "m.USDT" - } - ] - } \ No newline at end of file diff --git a/projects/drachma/index.js b/projects/drachma/index.js deleted file mode 100644 index 7fe6cf8708e..00000000000 --- a/projects/drachma/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const sdk = require("@defillama/sdk"); -const contracts = require('./contracts.json'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const { compoundExports } = require("../helper/compound"); -const comptroller = "0xB6ef08Ffbbb0691a3D9E6c41db4b1d2F97D8D49a"; - -//tvl for drachma farm -const { tvl: drachmaTvl, borrowed: drachmaBorrowed } = compoundExports(comptroller,); - -//tvl for drachma app -function tvl(chain) { - return async (api) => { - const toa = [] - toa.push(...contracts[chain].map(c => ([c.token, c.address]))) - toa.push(...contracts[chain].map(c => ([contracts.usdc[chain], c.address]))) - return sumTokens2({ chain, tokensAndOwners: toa, api, resolveLP: true, }) - }; -} - -module.exports = { - metis: { - tvl: sdk.util.sumChainTvls([drachmaTvl, tvl("metis")]), - borrowed: drachmaBorrowed, - }, -}; - - -module.exports.metis = { tvl: tvl("metis") } \ No newline at end of file diff --git a/projects/draco-finance/index.js b/projects/draco-finance/index.js deleted file mode 100644 index 12d57402e6b..00000000000 --- a/projects/draco-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const draco = "0x37863ea4bf6ef836bC8bE909221BAF09A2aF43d7"; -const sdraco = "0x713A18d059EA1D12E5bE134a864C075E47d5FEFA"; -const rewardpool = "0x14b9189c9a7f31Fda0eed6B8D8afe91E098B303b"; -const masonry = "0x39AEd2eC961AA9da9D778C80B6f90CD80dBFAE16"; -const lps = [ - "0xa7207b4de8ba1f01adb7c59558ebebf8c4e48c53", - "0xf4b787e9319ec4a83ac4fabc88ae1705c2c64031" -] - -module.exports = { - ...tombTvl(draco, sdraco, rewardpool, masonry, lps, "fantom", undefined, false, lps[1]) -} \ No newline at end of file diff --git a/projects/draco-story/index.js b/projects/draco-story/index.js deleted file mode 100644 index 4a762fdccc7..00000000000 --- a/projects/draco-story/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports, } = require("../helper/masterchef") - -const token = "0x01d3569eedd1dd32a698cab22386d0f110d6b548"; -const masterchef = "0xAedCc6E2710d2E47b1477A890C6D18f7943C0794"; - -module.exports = { - ...masterChefExports(masterchef, "fantom", token, false) -} diff --git a/projects/dracoforce/index.js b/projects/dracoforce/index.js deleted file mode 100644 index 2d94752ac7a..00000000000 --- a/projects/dracoforce/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x3D45191668dC53FFD60ea86F664716F4b320c372', - nativeToken: '0x8d05B42749428C26613deB12f8989Cb8D1f5c17f' -}) \ No newline at end of file diff --git a/projects/dracula-era/index.js b/projects/dracula-era/index.js deleted file mode 100644 index d2aa5a248bc..00000000000 --- a/projects/dracula-era/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'era': '0x68e03D7B8B3F9669750C1282AD6d36988f4FE18e' -}, { hasStablePools: true, }) - - diff --git a/projects/dracula.js b/projects/dracula.js deleted file mode 100644 index ec13f25d48d..00000000000 --- a/projects/dracula.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("./helper/staking"); - -module.exports = { - hallmarks: [ - ['2022-03-17', 'DRACULA is for now fully focused on it\'s Metaverse product'], - ], - methodology: 'Tokens staked on 0xC8DFD57E82657f1e7EdEc5A9aA4906230C29A62A', - ethereum: { - tvl: () => ({}), - staking: staking('0xC8DFD57E82657f1e7EdEc5A9aA4906230C29A62A', '0xb78b3320493a4efaa1028130c5ba26f0b6085ef8'), - }, -}; diff --git a/projects/dradex/index.js b/projects/dradex/index.js deleted file mode 100644 index 5e9553fd8e8..00000000000 --- a/projects/dradex/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); - -module.exports = { - solana: { - tvl - }, -} - -async function tvl() { - const provider = getProvider() - const programId = 'dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph' - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const data = await program.account.market.all() - const tokenAccounts = data.map(({ account: i}) => [i.t0Vault, i.t1Vault]).flat() - return sumTokens2({ tokenAccounts, }) -} \ No newline at end of file diff --git a/projects/dragon/index.js b/projects/dragon/index.js deleted file mode 100644 index 366d1e7f19e..00000000000 --- a/projects/dragon/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/unknownTokens") - -const ETH_DRAGON_UNIV2 = "0xd53881caee96d3a94fd0e2eb027a05fd44d8c470"; -const DRAGON = "0x528757e34a5617aa3aabe0593225fe33669e921c"; - -module.exports = { - misrepresentedTokens: true, - base: { - staking: staking({ owner: '0xbb595F34190c6eA1adD1C78F6d12DF181542763c', tokens: [DRAGON], lps: [ETH_DRAGON_UNIV2], useDefaultCoreAssets: true, chain: 'ethereum' }), - pool2: staking({ owner: '0x5F020174baEe486d88bea279195a0A3bCD40A41E', tokens: [ETH_DRAGON_UNIV2], lps: [ETH_DRAGON_UNIV2], useDefaultCoreAssets: true, chain: 'ethereum' }), - tvl: () => ({}), - }, -} \ No newline at end of file diff --git a/projects/dragonfruit/index.js b/projects/dragonfruit/index.js deleted file mode 100644 index d816f82708e..00000000000 --- a/projects/dragonfruit/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -const token = "0x2A3C691e08262aC2406aB9C3ee106C59Fff3E5ec"; -const masterchef = "0x4bddb586DdD8F05b5C229BC66F5D71Ccb10e9a18"; -const chain = "dogechain"; - -module.exports = masterchefExports({ chain, masterchef, nativeTokens: [token], useDefaultCoreAssets: true, }) diff --git a/projects/dragonswap-sei-v3/index.js b/projects/dragonswap-sei-v3/index.js deleted file mode 100644 index c040c819698..00000000000 --- a/projects/dragonswap-sei-v3/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const staker = '0x95C683194B45d2d27842c2C87A7D5FfffD8A5eD6' - -const staking = async (api) => { - const stakingToken = await api.call({ target: staker, abi: 'address:stakingToken' }) - const balance = await api.call({ target: staker, abi: 'uint256:totalDeposits' }) - api.add(stakingToken, balance) -} - -async function tvl(api) { - const pools = await getConfig('dragonswap/uni-v3-pools', undefined, { - fetcher: async () => { - let { pools } = await get(`https://sei-api.dragonswap.app/api/v1/pools`) - pools = pools.filter(i => i.type === 'V3_POOL').map(i => i.pool_address) - return pools - } - }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - const ownerTokens = pools.map((v, i) => [[token0s[i], token1s[i]], v]) - return sumTokens2({ api, ownerTokens }) -} - -module.exports = { - sei: { tvl, staking }, -} \ No newline at end of file diff --git a/projects/dragonswap-sei/index.js b/projects/dragonswap-sei/index.js deleted file mode 100644 index a26d9a7cacf..00000000000 --- a/projects/dragonswap-sei/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport('sei', '0x71f6b49ae1558357bbb5a6074f1143c46cbca03d') diff --git a/projects/dragonswap-v3/index.js b/projects/dragonswap-v3/index.js deleted file mode 100644 index 8fc9ea748f0..00000000000 --- a/projects/dragonswap-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const factory = "0x7431A23897ecA6913D5c81666345D39F27d946A4"; - -module.exports = uniV3Export({ - klaytn: { factory, fromBlock: 145316715 }, -}); diff --git a/projects/dragonswap/index.js b/projects/dragonswap/index.js deleted file mode 100644 index d3a4833adc6..00000000000 --- a/projects/dragonswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport('klaytn', '0x224302153096E3ba16c4423d9Ba102D365a94B2B') diff --git a/projects/draw-tech/index.js b/projects/draw-tech/index.js deleted file mode 100644 index 72c9f602dda..00000000000 --- a/projects/draw-tech/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xE233198863b75Acc6e1AF43DAfF3f5918e35875E" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl - } -} \ No newline at end of file diff --git a/projects/drefinance/index.js b/projects/drefinance/index.js deleted file mode 100644 index 057f2ef03b1..00000000000 --- a/projects/drefinance/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); -const ADDRESSES = require('../helper/coreAssets.json') - - -const tokens = { - USDC: ADDRESSES.sonic.USDC_e, - scUSD: ADDRESSES.sonic.scUSD, - - DRE: "0xd4eee4c318794bA6FFA7816A850a166FFf8310a9", - DRE_USDC_LP: "0x18b6963ebe82b87c338032649aaad4eec43d3ecb", - DRE_scUSD_LP: "0x88640D840614BB63cfb1545897D6d228B381C659", - - DRE_Old: '0xF8232259D4F92E44eF84F18A0B9877F4060B26F1', - DRE_USDC_LP_Old: "0xB781C624397C423Cb62bAe9996cEbedC6734B76b", -} - -const coreAddresses_Old = { - depositContract: "0xb692e2706b628998B4403979D9117Ed746bf8128", - stakingContract: "0x30902d05C499911142FE62B447dDcf19649452A3", - dreBondDepository: "0x2CE3618aa69ab891eeae4a18e64aaA55624a4481", - dreOracle: "0xc3bAdcf754b0833c706Eb1b12A310B4EF5C20EB0", -} - -const coreAddresses = { - depositContract: "0xc589858dA047A4789e099FA2CfD1D974D14F344B", - stakingContract: "0x21Cfa934CEa191fBD874ee8B1B6CE2B2224De653", - dreBondDepository: "0x825A2bC06A56E556138513495b3332933c371980", - dreOracle: "0xd23E9485b76E43d8808B0eCE846D0db3bCb09B93", -} - -const toa = [ - [ADDRESSES.sonic.USDC_e, coreAddresses.depositContract], - [ADDRESSES.sonic.scUSD, coreAddresses.depositContract], - [tokens.DRE, coreAddresses.depositContract], - [tokens.DRE_USDC_LP, coreAddresses.depositContract], - [tokens.DRE_scUSD_LP, coreAddresses.depositContract], - - [tokens.DRE_Old, coreAddresses_Old.depositContract], - [tokens.DRE_USDC_LP_Old, coreAddresses_Old.depositContract], -] - - -const pool2 = { - depositContracts: [coreAddresses.depositContract, coreAddresses_Old.depositContract], - assets: [tokens.DRE_USDC_LP, tokens.DRE_USDC_LP_Old, tokens.DRE_scUSD_LP] -} - -const data = { - sonic: { - tvl: (api) => api.sumTokens({ tokensAndOwners: toa }), - staking: staking(coreAddresses.stakingContract, tokens.DRE, "sonic"), - pool2: pool2s(pool2.depositContracts, pool2.assets, "sonic"), - } -}; - -module.exports = data; diff --git a/projects/drift.js b/projects/drift.js deleted file mode 100644 index da3f57d84a5..00000000000 --- a/projects/drift.js +++ /dev/null @@ -1,49 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const anchor = require("@project-serum/anchor"); -const { sumTokens2, } = require("./helper/solana"); -const DRIFT_PROGRAM_ID = new PublicKey('dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH') -const { getConfig } = require('./helper/cache') - -module.exports = { - timetravel: false, - methodology: "Calculate sum across all program token accounts", - solana: { - tvl, - }, -}; - -async function tvl(api) { - - const legacyVaults = [ - '6W9yiHDCW9EpropkFV8R3rPiL8LVWUHSiys3YeW6AT6S', // legacy usdc vault - 'Bzjkrm1bFwVXUaV9HTnwxFrPtNso7dnwPQamhqSxtuhZ', // legacy usdc insurance fund - ]; - const getSpotMarketVaultPublicKey = marketIndex => getVaultPublicKey('spot_market_vault', marketIndex) - const getInsuranceFundVaultPublicKey = marketIndex => getVaultPublicKey('insurance_fund_vault', marketIndex) - let configFile = await getConfig('drift-config', 'https://raw.githubusercontent.com/drift-labs/protocol-v2/master/sdk/src/constants/spotMarkets.ts') - const marketIndices = []; - configFile = configFile.slice(configFile.indexOf('MainnetSpotMarkets:')) - - const regex = /marketIndex:\s*(\d+),/g - let match; - while ((match = regex.exec(configFile))) { - marketIndices.push(parseInt(match[1])); - } - - const vaults = [ - ...legacyVaults, - ...marketIndices.map(getSpotMarketVaultPublicKey), - ...marketIndices.map(getInsuranceFundVaultPublicKey), - ] - - return sumTokens2({ tokenAccounts: vaults }) -} - -function getVaultPublicKey(seed, marketIndex) { - return PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode(seed)), - new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2), - ], DRIFT_PROGRAM_ID)[0].toBase58() -} - diff --git a/projects/drip/index.js b/projects/drip/index.js deleted file mode 100644 index 5d22b34e302..00000000000 --- a/projects/drip/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const TOKEN_CONTRACT = "0x20f663CEa80FaCE82ACDFA3aAE6862d246cE0333"; -const VAULT_CONTRACT = "0xBFF8a1F9B5165B787a00659216D7313354D25472"; - -module.exports = { - methodology: - "Counts the native tokens staked in the vault contract as staking.", - bsc: { - tvl: async () => ({}), - staking: staking(VAULT_CONTRACT, TOKEN_CONTRACT), - }, -}; diff --git a/projects/dripit/index.js b/projects/dripit/index.js deleted file mode 100644 index d59f1b340c4..00000000000 --- a/projects/dripit/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const HEAD2HEAD_BATTLES_CONTRACT = '0x838E536DaE154D3F70e1e111cfBE552Dd40CD163'; -const HYPEBOARD_BATTLES_CONTRACT = '0x3864B536fE3dbC967Be6B311d86135a6A672d85A'; - - -module.exports = { - methodology: `TVL is the total amount of USDC held in the Battles contracts - once the markets resolve, participants can withdraw theire share at their own discretion`, - start: '2025-04-15', - avax: { - tvl: sumTokensExport({ - owners: [ - HEAD2HEAD_BATTLES_CONTRACT, - HYPEBOARD_BATTLES_CONTRACT - ], - tokens: [ADDRESSES.avax.USDC] - }), - } -}; \ No newline at end of file diff --git a/projects/drop/index.js b/projects/drop/index.js deleted file mode 100644 index 940aec3b8a1..00000000000 --- a/projects/drop/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') - -const config = { - neutron: [{ - coinGeckoId: "cosmos", - dropContract: "neutron15v5acjfttf3umzatmj7rqfjy6yzcgekh266ehjsxclvaem0hpd7q9qpscr" - }, - { - coinGeckoId: "neutron-3", - dropContract: "neutron17jsl4t4hhaw37tnhenskrfntm7mv44wzjr3f990hx4p9r5m0gzdqquhtd3" - }, - { - coinGeckoId: "celestia", - dropContract: "neutron1vqtnu54addf87qp73fnjvqafruzkr2zjgswkhsmsg45t08wla2nqqan0hc" - }, - { - coinGeckoId: "initia", - dropContract: "neutron1wk9aamp2hy2hd90jhsu6qj7grd6tde43nzuvcchmfvj2880ya5ss9qxdp7" - }], -}; - -async function tvl(api) { - for (const { coinGeckoId, dropContract, decimals = 6 } of config[api.chain]) { - const delegations = await queryContract({ contract: dropContract, chain: api.chain, data: { - "extension": { - "msg": { - "delegations": {} - } - } - } - }); - const bonded = delegations.delegations.delegations.map(delegation => Number(delegation.amount.amount)).reduce((ps, amount) => ps + amount, 0); - api.addCGToken(coinGeckoId, bonded / 10 ** decimals) - } -} - -module.exports = { - timetravel: false, - methodology: "Sum of all the tokens that are liquid staked on DROP", - neutron: { tvl } -} diff --git a/projects/droplit-money/index.js b/projects/droplit-money/index.js deleted file mode 100644 index befaedc127a..00000000000 --- a/projects/droplit-money/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const lit = "0x79B2bc95344eFe31cb6a7B0Cf8A843a5eE125dFf"; -const gds = "0x5Abf65C1d152244c6Bd4ad0a5eB92DB00e403BdB"; -const boardroom = "0x9D76Db596D281897F3ce842475b7BD6Ea2580b4b"; -const rewardPool = "0x79D7c1a12c4dE91C487A87602478C5bc19b3aa7c"; -const lps = [ - "0xa1E137dED898058af3a09caC599D50D1D3ac0ABc", // GDS-BUSD LP - "0x4F8b3ee2421cac4743356e8207209eFf34B51ebe", // LIT-BUSD LP - "0x851b0a2514A56dD780480ab47268794E3d3D947D", // LIT-GDS LP - "0x7661D626b4c588157960724528a8f3C4a1de5F36", // LIT-WBNB LP -]; - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(lit, gds, rewardPool, boardroom,lps,"bsc",undefined,false , "0xa1E137dED898058af3a09caC599D50D1D3ac0ABc" - ), -}; diff --git a/projects/drops/index.js b/projects/drops/index.js deleted file mode 100644 index 77a541b8197..00000000000 --- a/projects/drops/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { compoundExports2 } = require("../helper/compound") -const { mergeExports, } = require("../helper/utils") -const { staking, } = require("../helper/staking") -const { pool2, } = require("../helper/pool2"); - -const tokensAddress = { - masterchef: "0x8A78011bf2c42df82cC05F198109Ea024B554df9", - drop: '0x6bB61215298F296C55b19Ad842D3Df69021DA2ef', - ndr: '0x739763a258640919981F9bA610AE65492455bE53', - lp: '0x00aa1c57e894c4010fe44cb840ae56432d7ea1d1', -}; - -const UniControllers = [ - // Pool 0 - ["0x79b56CB219901DBF42bB5951a0eDF27465F96206", '0x4aE7413182849D062B72518928a4b2DE87F0e411',], - // Pool 1 - ["0xB70FB69a522ed8D4613C4C720F91F93a836EE2f5", '0xD72929e284E8bc2f7458A6302bE961B91bccB339',], - // Pool 2 - ["0x9dEb56b9DD04822924B90ad15d01EE50415f8bC7", '0x0a1EF7feD1B691253F9367daf682BA08A9D2fD9C',], - // Pool 3 - ["0x7312a3bc8733b068989ef44bac6344f07cfcde7f", '0x05231980914B702083B9Ac08002325654F6eb95B',], - // Pool 4 - ["0x3903E6EcD8bc610D5a01061B1Dc31affD21F81C6", '0x588C13e685e44B22DC6647937481C816E5FeE086',], - // Pool 5 - ["0x896b8019f5ea3caaAb23cDA0A09B405ed8361E8b", '0x777ECcD3fCf4FfA3b12f45a384852608DF2619a0',], -].map(([comptroller, cether]) => ({ ethereum: compoundExports2({ comptroller, cether, blacklistedTokens: [tokensAddress.drop] }) })) - -module.exports = mergeExports([ - ...UniControllers, - { - ethereum: { - staking: staking(tokensAddress.masterchef, tokensAddress.drop), - pool2: pool2(tokensAddress.masterchef, tokensAddress.lp), - } - }, { - ethereum: { - staking: staking(tokensAddress.masterchef, tokensAddress.ndr), - } - }, -]) - -module.exports.hallmarks = [ - [1651702080, "Drops DAO launch"], - [1653086700, "DOP staking"], -] \ No newline at end of file diff --git a/projects/dsf-finance/index.js b/projects/dsf-finance/index.js deleted file mode 100644 index e2b7d9aa7cf..00000000000 --- a/projects/dsf-finance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const DSF_Contract_usdLP = "0x22586ea4fdaa9ef012581109b336f0124530ae69"; -const DSF_Contract_Old_contract = "0x68837EefaA5852775928E9695079bF6444e99253"; - -async function ethTvl(api) { - api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: "uint256:totalHoldings", target: DSF_Contract_usdLP, })) - api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: "uint256:totalHoldings", target: DSF_Contract_Old_contract, })) -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: ethTvl, - }, - hallmarks: [ - ['2022-07-30', 'The first smart contract was created'], - ], - methodology: "Total value of digital assets that are locked in DSF.Finance Omnipools", -}; diff --git a/projects/dsu-money/index.js b/projects/dsu-money/index.js deleted file mode 100644 index 9f672657785..00000000000 --- a/projects/dsu-money/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokensAndOwners: [ - [ADDRESSES.ethereum.USDC, '0xaef566ca7e84d1e736f999765a804687f39d9094'], - [ADDRESSES.ethereum.USDC, '0xD05aCe63789cCb35B9cE71d01e4d632a0486Da4B'], - ['0x39aa39c021dfbae8fac545936693ac917d5e7563', '0xD05aCe63789cCb35B9cE71d01e4d632a0486Da4B'], - ]}) - }, - arbitrum: { - tvl: sumTokensExport({ tokensAndOwners: [ - [ADDRESSES.arbitrum.USDC, '0x0d49c416103cbd276d9c3cd96710db264e3a0c27'], - [ADDRESSES.arbitrum.USDC_CIRCLE, '0x0d49c416103cbd276d9c3cd96710db264e3a0c27'], - ]}) - } -} diff --git a/projects/dtrinity-dlend/index.js b/projects/dtrinity-dlend/index.js deleted file mode 100644 index f94aa2d7d7e..00000000000 --- a/projects/dtrinity-dlend/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { aaveExports, methodology } = require('../helper/aave') - -module.exports = { - fraxtal: aaveExports(null, undefined, undefined, ['0xFB3adf4c845fD6352D24F3F0981eb7954401829c'], { v3: true, blacklistedTokens: ['0x788D96f655735f52c676A133f4dFC53cEC614d4A'] }), - sonic: aaveExports(null, undefined, undefined, ['0xB245F8321E7A4938DEf8bDb2D5E2E16481268c42'], { v3: true, blacklistedTokens: ['0x53a6aBb52B2F968fA80dF6A894e4f1b1020DA975', '0x614914B028A7D1fD4Fab1E5a53a3E2dF000bcB0e'] }), - methodology, -} diff --git a/projects/dtrinity/index.js b/projects/dtrinity/index.js deleted file mode 100644 index 44df885343d..00000000000 --- a/projects/dtrinity/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const config = { - fraxtal: { - dUSD: { - address: '0x0B0BD5F8A6f4c72a09748fA915Af12Ca423B7240', - collateralVault: "0x624E12dE7a97B8cFc1AD1F050a1c9263b1f4FeBC", - pools: [{ - // Curve frxUSD/dUSD - lpAddress: '0x9CA648D2f51098941688Db9a0beb1DadC2D1B357', - collateralAddress: ADDRESSES.fraxtal.FRAX, - amoVault: '0x0B0BD5F8A6f4c72a09748fA915Af12Ca423B7240' - }, { - // Curve dUSD/sfrxUSD - lpAddress: '0x5eCFA6940a33A2dAd5c473896452f018c6c04577', - collateralAddress: '0xfc00000000000000000000000000000000000008', - amoVault: '0x0B0BD5F8A6f4c72a09748fA915Af12Ca423B7240' - }, { - // Curve dUSD/sUSDe - lpAddress: '0xF16f226Baa419d9DC9D92C040CCBC8c0E25F36D7', - collateralAddress: ADDRESSES.arbitrum.sUSDe, - amoVault: '0x0B0BD5F8A6f4c72a09748fA915Af12Ca423B7240' - }], - }, - }, - sonic: { - dUSD: { - address: '0x53a6aBb52B2F968fA80dF6A894e4f1b1020DA975', - collateralVault: "0xD6BBab428240c6a4e093E13802f2eCa3E9F0De7d", - pools: [] - }, - dS: { - address: '0x614914B028A7D1fD4Fab1E5a53a3E2dF000bcB0e', - collateralVault: "0xc1A09c3443d578a85DE35368a1a58E8989F4721b", - pools: [] - } - }, - ronin: { - dUSD: { - address: '0x0043a403Ada6b63045112D7e979a057C82714fe7', - collateralVault: "0xC40f4303505320F782972ad4756eD2A7390a9d9C", - pools: [] - }, - }, - katana: { - dUSD: { - address: '0xcA52d08737E6Af8763a2bF6034B3B03868f24DDA', - collateralVault: "0xA5f9F6238406B1301D0ED09555a2893dc1A26A49", - pools: [] - }, - } -} - -async function getAMOTvl(api) { - const networkConfig = config[api.chain] - if (!networkConfig) return - - - for (const [, tokenConfig] of Object.entries(networkConfig)) { - // Process pools if they exist - if (tokenConfig.pools) { - for (const pool of tokenConfig.pools) { - const lpBal = await api.call({ abi: 'erc20:balanceOf', target: pool.lpAddress, params: pool.amoVault }) - const collateralBal = await api.call({ abi: 'erc20:balanceOf', params: pool.lpAddress, target: pool.collateralAddress }) - const lpSupply = await api.call({ abi: 'erc20:totalSupply', target: pool.lpAddress }) - const collateralAmount = collateralBal * lpBal / lpSupply - api.add(pool.collateralAddress, collateralAmount) - } - } - - // Process collateral vault - const collaterals = await api.call({ abi: 'address[]:listCollateral', target: tokenConfig.collateralVault }) - await api.sumTokens({ owner: tokenConfig.collateralVault, tokens: collaterals }) - } - -} - -module.exports = { - methodology: 'Includes TVL for dLEND and TVL for dSTABLEs (dUSD, dS, dETH).', - fraxtal: { - tvl: getAMOTvl - }, - sonic: { - tvl: getAMOTvl, - }, - ronin: { - tvl: getAMOTvl, - }, - katana: { - tvl: getAMOTvl, - }, -}; \ No newline at end of file diff --git a/projects/dtx-dex/index.js b/projects/dtx-dex/index.js deleted file mode 100644 index a9afb34a4b9..00000000000 --- a/projects/dtx-dex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - taiko: '0x2EA9051d5a48eA2350b26306f2b959D262cf67e1' -}) diff --git a/projects/dtx-v3/index.js b/projects/dtx-v3/index.js deleted file mode 100644 index af79fead8a0..00000000000 --- a/projects/dtx-v3/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ taiko: { factory: '0xfCA1AEf282A99390B62Ca8416a68F5747716260c', fromBlock: 105000, } }) \ No newline at end of file diff --git a/projects/dtx/index.js b/projects/dtx/index.js deleted file mode 100644 index 9f72076e0a7..00000000000 --- a/projects/dtx/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { sumERC4626VaultsExport } = require("../helper/erc4626") -const { sumTokensExport } = require("../helper/unwrapLPs") - -const sdk = require("@defillama/sdk") -const ADDRESSES = require("../helper/coreAssets.json") - -const config = { - blast: { - vaults: [ - "0x56e0f6DF03883611C9762e78d4091E39aD9c420E", - "0x3D4621fa5ff784dfB2fcDFd5B293224167F239db", - "0xe97D34E531E1b299047A94Fc6854289830362d8f", - "0xBa95FCe6c2683C29bD963dd201CA8ee8f3605801", - "0x037A168876d3027b1384FD1752fEAa52407726dB", - "0x3031F6c8958Cf093377c11b3871BD23AEA5e5865", - "0x802B1f8e092AC4469B30C7560266F9a6f8CA450F", - ], - tokenConfig: { - tokens: [ - ADDRESSES.blast.USDB, - ADDRESSES.blast.WETH, - ADDRESSES.blast.ezETH, - ], - owners: [ - "0x9AdF2b330697C6816176491E1fd5503BB746d1d8", - "0x0E5b7DDbF37d92B21512Ae5A6CE66aEfA7A7828F", - ], - }, - }, - taiko: { - vaults: [ - "0xdA6a745740Bbdbe5F588b79FEe57f2e10ad4Da11", - "0xE3e6818bbC193D454f38772D34FA4cf8C19684d5", - ], - tokenConfig: { - tokens: [ADDRESSES.taiko.USDC, ADDRESSES.taiko.WETH], - owners: [ - "0xc0ab776604059D10880dbD219758FF7B82997cc0", - "0xB00231B308B01Dbb90f16F966F62d86fBc78c450", - ], - }, - }, -} - -Object.keys(config).forEach((chain) => { - const { vaults, tokenConfig, factory } = config[chain] - const vaultTvl = sumERC4626VaultsExport({ vaults, isOG4626: true }) - const otherTvl = sumTokensExport(tokenConfig) - - let tvlCalculators = [vaultTvl, otherTvl] - - module.exports[chain] = { - tvl: sdk.util.sumChainTvls(tvlCalculators), - } -}) diff --git a/projects/dual/idl.json b/projects/dual/idl.json deleted file mode 100644 index 28e3d42e7f9..00000000000 --- a/projects/dual/idl.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "version": "0.1.0", - "name": "dual_market", - "instructions": [], - "accounts": [ - { - "name": "DIPState", - "type": { - "kind": "struct", - "fields": [ - { - "name": "strike", - "type": "u64" - }, - { - "name": "expiration", - "type": "u64" - }, - { - "name": "splMint", - "type": "publicKey" - }, - { - "name": "vaultMint", - "type": "publicKey" - }, - { - "name": "vaultMintBump", - "type": "u8" - }, - { - "name": "vaultSpl", - "type": "publicKey" - }, - { - "name": "vaultSplBump", - "type": "u8" - }, - { - "name": "optionMint", - "type": "publicKey" - }, - { - "name": "optionBump", - "type": "u8" - }, - { - "name": "vaultUsdc", - "type": "publicKey" - }, - { - "name": "vaultUsdcBump", - "type": "u8" - }, - { - "name": "usdcMint", - "type": "publicKey" - } - ] - } - } - ], - "errors": [], - "metadata": { - "address": "DiPbvUUJkDhV9jFtQsDFnMEMRJyjW5iS6NMwoySiW8ki" - } -} \ No newline at end of file diff --git a/projects/dual/index.js b/projects/dual/index.js deleted file mode 100644 index 503b3eb6302..00000000000 --- a/projects/dual/index.js +++ /dev/null @@ -1,168 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const anchor = require("@project-serum/anchor"); -const { getConnection, sumTokens2, readBigUInt64LE, } = require("../helper/solana"); - - -async function tvl() { - const connection = getConnection(); - const dualProgramID = new PublicKey("DiPbvUUJkDhV9jFtQsDFnMEMRJyjW5iS6NMwoySiW8ki"); - let programAccounts = await connection.getProgramAccounts(dualProgramID, { - filters: [{ - dataSize: 260 - }] - }); - - const dipTokenAccounts = programAccounts - .map(i => parseDipState(i.account.data)) - .map(i => [i.vaultSpl, i.vaultUsdc]) - .flat() - - const stakingOptionsProgramID = new PublicKey("4yx1NJ4Vqf2zT1oVLk4SySBhhDJXmXFt88ncm4gPxtL7"); - let stakingOptionsAccounts = await connection.getProgramAccounts(stakingOptionsProgramID, { - filters: [{ - dataSize: 1150 - }] - }); - - const soTokenAccounts = stakingOptionsAccounts - .map(i => parseSoState(i.account.data)) - .map(i => [i.vault, i.reverseVault]) - .flat() - - const gsoProgramID = new PublicKey("DuALd6fooWzVDkaTsQzDAxPGYCnLrnWamdNNTNxicdX8"); - let gsoAccounts = await connection.getProgramAccounts(gsoProgramID, { - filters: [{ - dataSize: 1000 - }] - }); - const gsoTokenAccounts = gsoAccounts - .map(i => gsoVault(i.pubkey)) - - const tokenAccounts = dipTokenAccounts.concat(soTokenAccounts).concat(gsoTokenAccounts); - - const DUAL = 'DUALa4FC2yREwZ59PHeu1un4wis36vHRv5hWVBmzykCJ' - return sumTokens2({ tokenAccounts, allowError: true, blacklistedTokens: [DUAL]}) -} - -async function staking() { - const connection = getConnection(); - const dualProgramID = new PublicKey("DiPbvUUJkDhV9jFtQsDFnMEMRJyjW5iS6NMwoySiW8ki"); - let programAccounts = await connection.getProgramAccounts(dualProgramID, { - filters: [{ - dataSize: 260 - }] - }); - - const dipTokenAccounts = programAccounts - .map(i => parseDipState(i.account.data)) - .map(i => [i.vaultSpl, i.vaultUsdc]) - .flat() - - const stakingOptionsProgramID = new PublicKey("4yx1NJ4Vqf2zT1oVLk4SySBhhDJXmXFt88ncm4gPxtL7"); - let stakingOptionsAccounts = await connection.getProgramAccounts(stakingOptionsProgramID, { - filters: [{ - dataSize: 1150 - }] - }); - - const soTokenAccounts = stakingOptionsAccounts - .map(i => parseSoState(i.account.data)) - .map(i => [i.vault, i.reverseVault]) - .flat() - - const gsoProgramID = new PublicKey("DuALd6fooWzVDkaTsQzDAxPGYCnLrnWamdNNTNxicdX8"); - let gsoAccounts = await connection.getProgramAccounts(gsoProgramID, { - filters: [{ - dataSize: 1000 - }] - }); - const gsoTokenAccounts = gsoAccounts - .map(i => gsoVault(i.pubkey)) - - const tokenAccounts = dipTokenAccounts.concat(soTokenAccounts).concat(gsoTokenAccounts); - - return sumTokens2({ tokenAccounts, allowError: true, }) -} - -function parseDipState(buf) { - const strike = Number(readBigUInt64LE(buf, 8)); - const expiration = Number(readBigUInt64LE(buf, 16)); - const splMint = new PublicKey(buf.slice(24, 56)); - const vaultMint = new PublicKey(buf.slice(56, 88)); - const vaultMintBump = Number(buf.readUInt8(88)); - const vaultSpl = new PublicKey(buf.slice(89, 121)); - const vaultSplBump = Number(buf.readUInt8(121)); - const optionMint = new PublicKey(buf.slice(122, 154)); - const optionBump = Number(buf.readUInt8(154)); - const vaultUsdc = new PublicKey(buf.slice(155, 187)); - const vaultUsdcBump = Number(buf.readUInt8(187)); - const usdcMint = new PublicKey(buf.slice(188, 220)); - return { - strike, - expiration, - splMint, - vaultMint, - vaultMintBump, - vaultSpl, - vaultSplBump, - optionMint, - optionBump, - vaultUsdc, - vaultUsdcBump, - usdcMint, - }; -} - -function parseSoState(buf) { - const numNameBytes = Number(buf.readUInt8(8)); - // Prefix is 4 bytes - const soName = String.fromCharCode.apply(String, buf.slice(8 + 4, 8 + 4 + numNameBytes)); - const offset = 26 + 32 + 8 + 4 + numNameBytes; - const baseMint = new PublicKey(buf.slice(offset, offset + 32)); - - const vault = PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode("so-vault")), - Buffer.from(anchor.utils.bytes.utf8.encode(soName)), - baseMint.toBuffer(), - ], - new PublicKey("4yx1NJ4Vqf2zT1oVLk4SySBhhDJXmXFt88ncm4gPxtL7") - )[0].toBase58(); - - // TODO: If the reverse vault does not exist, do not include. - const reverseVault = PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode("so-reverse-vault")), - Buffer.from(anchor.utils.bytes.utf8.encode(soName)), - baseMint.toBuffer(), - ], - new PublicKey("4yx1NJ4Vqf2zT1oVLk4SySBhhDJXmXFt88ncm4gPxtL7") - )[0].toBase58(); - - return { - soName, - baseMint, - vault, - reverseVault, - }; -} - -function gsoVault(pubkey) { - const vault = PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode("base-vault")), - (new PublicKey(pubkey)).toBuffer(), - ], - new PublicKey("DuALd6fooWzVDkaTsQzDAxPGYCnLrnWamdNNTNxicdX8") - )[0].toBase58(); - return vault; -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - solana: { - tvl, - staking, - }, -}; diff --git a/projects/dubble-exchange/index.js b/projects/dubble-exchange/index.js deleted file mode 100644 index 7b29b8c03e2..00000000000 --- a/projects/dubble-exchange/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const VAULT_CONTRACT = "0xD522395dfD017F47a932D788eC7CB058aDBbc783"; -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const bal = await api.call({ abi: 'uint256:checkBalance', target: VAULT_CONTRACT }) - api.add(ADDRESSES.arbitrum.USDC, bal) -} - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl - } -}; diff --git a/projects/ducata/index.js b/projects/ducata/index.js deleted file mode 100644 index 47b8fe04f38..00000000000 --- a/projects/ducata/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -const vault = "0x25898DEe0634106C2FcBB51B3DB5b14aA1c238a4"; -const launchBlock = 230182440; - -module.exports = { - methodology: 'TVL counts the external assets deposited in the vaults', - arbitrum: { - tvl: onChainTvl(vault, launchBlock), - } - }; \ No newline at end of file diff --git a/projects/duckchain-new-era/index.js b/projects/duckchain-new-era/index.js deleted file mode 100644 index f092817dc35..00000000000 --- a/projects/duckchain-new-era/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/sumTokens'); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getConfig } = require('../helper/cache'); - -const defaultOwner = '0x6b0e12Cb3D78a931b74F51D09F3D34E3047c0E49'; // meson - -const config = { - merlin: { - tokens: [ - ADDRESSES.merlin.WBTC_1, // M-BTC - '0x93919784C523f39CACaa98Ee0a9d96c3F32b593e' // uniBTC - ], - }, -}; - -async function addCoinfg(id, ownerTokens) { - const { result } = await getConfig('meson', 'https://relayer.meson.fi/api/v1/list'); - const { address, tokens } = result.find(c => c.id === id) ?? {}; - if (!address) return; - ownerTokens.push([tokens.map(i => i.addr ?? ADDRESSES.null).filter(i => i), address]); - return ownerTokens; -} - -Object.keys(config).forEach(chain => { - const { id = chain, owner = defaultOwner, tokens } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = []; - if (tokens) ownerTokens.push([tokens, owner]); - await addCoinfg(id, ownerTokens); - return sumTokens2({ api, ownerTokens }); - } - }; -}); - -module.exports = { - methodology: "Summary of Dukchain staking assets", - ton: { - tvl: sumTokensExport({ - tokens: [ - ADDRESSES.null, // 用于追踪原生 TON - "EQCuPm01HldiduQ55xaBF_1kaW_WAUy5DHey8suqzU_MAJOR", - ADDRESSES.ton.NOT, - ADDRESSES.ton.DOGS, - "EQB4zZusHsbU2vVTPqjhlokIOoiZhEdCMT703CWEzhTOo__X", - "EQAJ8uWd7EBqsmpSWaRdf_I-8R8-XHwh3gsNKhy-UrdrPcUo", - ADDRESSES.ton.tsTON, - ADDRESSES.ton.CATI, - "EQAfF5j3JMIpZlLmACv7Ub7RH7WmiVMuV4ivcgNYHvNnqHTz" - ], - owners: [ - "UQABbkaGs-mjWe6ifQ2h11GOEdGRyAPNrZi41-MK1uX92ulc", // UTONIC Ton生态所有代币 - "EQCVarr_Agtk4A8_Sn5RO2M8QH9j5WQjdoN984P-b6TBZB8Z" // UTONIC 多签 - ], - onlyWhitelistedTokens: false - }) - }, - ethereum: { - tvl: sumTokensExport({ - ownerTokens: [ - [[ADDRESSES.null], "0xb4eE432B0fbb64CC5C4bbA74427436b5347E88A4"] // meson eth - ], - }), - }, - arbitrum: { - tvl: sumTokensExport({ - owners: ["0x5E8c3F0eA1d4004F32dFaE54bca88C78D065d869"], - tokens: [ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC_CIRCLE,ADDRESSES.null,] // meson eth usdc and usdt - }), - }, - merlin: { //meson merlin - tvl: async (api) => { - const ownerTokens = []; - const { tokens } = config.merlin; - if (tokens) ownerTokens.push([tokens, defaultOwner]); - //await addCoinfg('merlin', ownerTokens); - return sumTokens2({ api, ownerTokens }); - } - }, -}; - - -// Excluding merlin tvl as it feels inorganic -delete module.exports.merlin \ No newline at end of file diff --git a/projects/duckgang/index.js b/projects/duckgang/index.js deleted file mode 100644 index d7d52600eec..00000000000 --- a/projects/duckgang/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - methodology: 'SEI in vaults', - sei: { - tvl: sumTokensExport({ owners: - [ - "0x325a0E5C84B4d961B19161956f57Ae8bA5Bb3c26", //No lock-up - "0x4F636e75B0b56DF397c8a7E47041e1E6b9738a4e", // 30 days - "0xE4c779eDD8FE0e232d460273945b6b7A8c097EA2", // 60 days - "0x3D75916B2d8279282C5e25A24fe2Ed57111C22ed", // 90 days - ], tokens: [ - nullAddress - ]}), - } -}; \ No newline at end of file diff --git a/projects/duckpools.js b/projects/duckpools.js deleted file mode 100644 index 48b5d2b26bf..00000000000 --- a/projects/duckpools.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumTokensExport } = require("./helper/chain/ergo"); -const { nullAddress } = require("./helper/tokenMapping"); - -module.exports = { - timetravel: false, - ergo: { - tvl: sumTokensExport({ - owners: [ - "3F9bBReNRNpy8HU2PNNRbCdHgzj6F5WgDmKSRAg7bkW3qaJ3VrjQkfqX5W8zDRuUTRJfpt56L1mpx1V7Pt5Bo9QtT7HVQBWqRoUvTVcTkTRsPHRR363M14WsjKXfqPLvauS7BvwtggxXA8S6TTW4gArraoqauhfvyCzjHPNmmfEDypY2wvvMsYNW3VRQYCK8eDNLmdsQwvtGbULeeMdKXCvyH68CpAayLhuVbALRkKCyvdQvAz3gr3yxqNcrScFPxYwE61521iVGwJjfNdXPnHmkespPtM9hhj2qh7HdsAmbQUAJenRpD6RCN2pSh7aQUUZiQENbTxVmiJkqENs99yTv8aHmGFWsw2WQcwVH394M1Sj5ue1CCJYHg6N6FyCXyptsVSqvBG1scmUPqbPneQDCvS2xHgBd1HCrUram8mgD9GewBehXJXa5TL8fe5G2XnGtLukkqfJfmRRmwvjCxEcYv65gAsGW6xxy6YgGm3VxzDUdTnHisGYf3qFnEKkiZf6stFRWPNRcJmRh5jKHqVHjEWMQgdqRjv44qT4zKG6ewUYjubGhHjVy7qedLUnDvM1X7P1CCankPJzDJuZJqnefRrbcuNcP5Fawx2E2NdihRbiAKbA6g3RuNuS2WEPEkQUs7rKGT1fgDw41hq8LaoSf35Xax6eopjzEGLRKYyXqWb7yQfPVNebnYVxbXbRg5aVqHLyiJ4h5sqAdSm2QUjD1oMKuYmbqbqCsYfp2oxJKcL5i7JLnvEKSP23YmsN9Va4SAmmWj4VwiqexH1DGR2pt78LPpWgK2EtHN2gLk9KFnGmK8ZVZG2yx2taH6JXoZXieXarGkBPJrHyB4ZzB1K2pftLwk6vyvSVmfqz2VSi2Lc6NPyLiJ7eKdpbMFaZYm39FkhgCy5Wc7Be7Yqvd7RRVDhx6K9jS4YwPN8aCn24jtKXMs8T6orwxS3tFQR2cCMwqkFuLthR9PUVwX6wiEZ7qNc2p9eCQ7hcqSSAEnqg4teua4GLWtqYFeG1uebJERSBbgjEptrKswnPhzvcdabrwsMopBvknjzjdawW96fqgraPBhbcKDo172x6rFtJnmYrLd9mfNww1twDy43Nz6xGyP31u15Vjqr17g7tdd8sKHPjHFZX37RXquKf5k1i2DdXtcjmAWmuACe1QtfBitqJNwRbMe4RxgLk5doDX1tNfQMQdS1i94RSRrmMaRZUSndJZGPXxVjX6YcjXmVFarb8S9EkkC4jSm6SsHu5aHYG351kTP2mv3fHohRwNrqKkKpvxw1qe9QgYHDufFMYZb88SmmsBLnLGy6rsdurvdqdqWJFbxYvxmRumeSY3H69C3R8pbdrWjSLwxJTy6F2yQ4SQTBuwGpRuD7hcnKt84ajhNsFc4Fmzp8Zn8j9Tg3FSXR4M68bf1ABwnkKPBLdHmEe1qD4qYhGWd73SJVnHarpfyK2Gc1rXTrwCw6kqJRoQesNWQrgxbdGmm1aawJ1Pasks2pBd5118zKPHi2Wi8mCRepWKzv6oJjbWBiZtzrC6kEPXS8S7g9XpiGSFCSfK8aiHHYdHn8iAyuZeA2Yne4DmHZdys85gAh5hjjaPPYuMTHmCr4WbrNfMegX7oDyh7yrhV2sPbgRq7d75eXwpNW9Q5fs4xBqDbeJA1o26yCx7fkQ6yKs8DaWcgv9cFoJB1GA4V3izUpejSw1wqRR3tpMHT1LfB5GpJGoSXGkFQ9Mybt", - "6Q6fbqfbMAogw42DWDtKuKt9frSKdqW92cmiPbeF2SnuYCS9Ca43ZAiJvR7Kj4ZW8yyTnsEY4Np82vF4BDrStxi7PkyGhvppdoWVV2Th3ALS38sWtvYqhso3fx9Ehwbodv36y7ytNZfJitGgx586NsXgZhn3hCVZdUq694vdDRWCyAJygAsu2hHaieTm1F7ZgGufrccYezPtDv3WjGiRZsENiPCheAJ8uEZVN6rnatXhvDhuZgd2ghhzxi4WxmTMSW2C8eZJukqxcqD9D8Jd21b4PYcPBMtqsWACPpKproeRiVZynvDsCKMx1HnZiY8JXSk3qvwtZmxSn5nw2GtKnfXGV4pjHHSr7mpKysayFxKxdWuFJ47S29SRqw8pL2bk4Us9haR6BbDR6uintCUVZ7Q2LAsMmkWwmKFw3fEhBKeq1hWgDAASSuUWXm6ZbYi4XLXchXjYEmWsZ6mYWnBW3QPK5iezrZiefP11GCohrbEtMLTQ1UvX2UchTr3mDqy7zQdJJLSC8Wnc7dEGYF59VJG3iT5aCFyBR1qxVdmyjUaEYDLmxuVS87HbmXoSBpi4jSHPGt2sLtNTKBpa7q7A7qvyGGAaxoPuPrtkuA8aV32vDfsvDSBWCVGN9zVpVBi95UV8G4mVHMKCAngRzNK93obXoWdZUe2y7QfZTHNY935zthiA2eWUiz8eRvGrbVTo2veXN3g1iYtBtmUez5CPDuFt4MdJeYyPY54idD6qPHVw8Kqnxs1QVK92qZCAGjjDqcLJwTC6kDhT3e6mJdrdmoCGuufj9KsNyzXwtwVo6wVVw8ZxJdRCf8c6cjEmSSS7SJWgwmgGMiPiQeo486mnzW4Pb9q3tdBAw78pttaFdvwp4iVFdWjkdgz8AxW8LLnjqjVY6aTrpFbVMk4nLbjR7zj7AtUNP75M55R2QKVtxyLvmw648ZmtgUAaXFxDCZEevVs2x7KotXtcY9zM74cGbgcM1ukwDVnzrQuGi3T6QBiFbWPxYjVKXVHhni5F1j8qK13XPCkwNRxD65xjKNcMekPyXDqTBLrx6avkSCodPvDPzVJJcmvzPuhdaTzEKy1pDy8h9khMDAW49VnAbzFpHv7o6WwSTyqMmipDcj8fdpL2wNkxCtuVUt4CQnthC8nusoCnyCxXboHdpMe4ebhcigSYbYPr3D3kkYoqFrBRqGs4aLuMsdYQ2xB7CeAf5EiNYurAFCtuUCy7Y8bFbdzs6XbG7wAoCGFZEd4Z1xsNNpSyWzy8TqE69yySKzNJ7FdmTbdVdUrKMjrv8DZt9sSuVL6RxnoV4DYsTeJRf3C2Z3ppsYuSqPaJwPtTqEzW4nRtHQ7v9yXFUAmHdGTsf5vnDcBa6dLHkhiQwpp8hU43qVj6CpftjsyJuqpWNfZ9QmHafy5PvyD6PmbPHey3knKuCoFKje8HbtB6e4Lt8wigxyThiRjyex93K1a9SixyfsXAH2sva7J5RCduZiwcrUPEKSU8eroSizXqAjpGm621AKidzMqVCYdgM1yvD6PhpbyYGLDqEBoMz6Y9hgpuDpK5skh1r3agNz23j5eVFxXoQ2ooEbNsxHGLgmmQcPHTA6YWs44Pdw9wGEqhZKBW79nqtfY97NxaVF6MFDx9WRcxiRsg63AWKRJfjVFLrZDyDzLJHxDKdEzwQFbdnB4pyfF2w7YD4bMTKqQFuegEwcgBWcziTctEeyMjtd8YB2dG2e6D5oJa38mnw5QyLLSugbFbyFV8a", - "4z9dZrkxdYok1tkUF56Emr1XAzzi7VY8rTzxZ4qtv7VACufMJDQmbBVsgAjVhJ16AmnaMHLwMFoPYKUG3zL1d5Z17AHK6oGL2vxjkLxoEACbfMBMCaaMSiiZeZ36dGLbX1PAL3Lv4u2A7XfuZzd73QRG65t3v32S1hjSeamo4JBkY5hE2tGEwR9DaFkMn32Vh4PYYHm4aMBw9kCSxmkBZDvVYgf8yMTqz8UGyRDYFMFovuZhY2KTvYNrbQyUtQkbJ2Crn7ZmXfWbGV2FNNEwEfVTeNLVBLNky8sreH9XKFv9iASZ1Avd6RNHuBuSBh9aHdvABZwuZhaDBjKwzvUKwV9GTdzgeLb36naha5AxNVXwB2HMtUpeuG8fQ8btcpyrSYoUJSFFvoqhf1EBAWas251Wng4QQ4TdmCJfZWzrTK1NbEWX1dMYCm1pR4mUqNiKDyE5Ec5ftcRxv2N8jA8dErpYdSdT9g1v1sYBYsBn35zsFaHryxkYLTsSpyrSRzvWJXBxZQdPvztTFSxuyH4WMttUPFNDW567wZfco9u51VV3TYAbxLdn9JfQwmAHCwsBeAyGPrRLhpsEabGcVQSNs8ZTiRq9g7SuVKFBHHuCUnGqWkvV4DVyKHkwG6qT5Un1UxT9WZpuz89fFFT4Htd5DptFUQw2MqrZTSTrv9BEqGCy1WF54KnP4HHjzHsh9b4N8Fwbt1BQc5oHMnXbiAWYWy6z1qqBPUnGXUwG1k5mpDo8GWjJQQnHT5M6zaQaCZLmbANKmPtNsX3u7niy2WV5d9yMphoS4vU73ii6P9FPURxarfJ2oN19Zj9YTHaMY3b9bgF5P1U8gUUjZQ5dv2DTs7qULbRSwYNVaBUiX22yxycZu9j8dXMnzz49M5sdjuM8RjHyUAYUGGmFNsUVJkd3rotRNQr7QWaSpdQsZoVhALmTeSenXXMiBvGZu5jBMCmuR6GNNEbsQyWyoYyvCVAvTaUcmbjMBykNxmxCU7qUiY7E41S7RraDcVwk9dHZn17QXbsFCoU2UDyXZ6oHNxW76fx9UqL8Xdh3YpiUemGuhwansbwroycsZcqfWhvEtDre3Xrbtav91tPdwsFTVqt9yBGEZPNygQ6EkutVM99L36Uuwxxx6r8wph9iNg5cWZpefegJttkwzFEy1MLSWjmnhbgxDpxPfDGCGCEqBwMa5iNePBsLS7fhFdcn9VBrccozBSnrbD44g1TzNkb5yGRHMUrJ5KEYu7QtgxpfCAbjwxadgF3iaHhzDLW9Y9DHpVQTTTFTToRGYF6JdeTJt1LQDHMxTy11DmS1m3Pvk4bWSrcirVgxtb7Q97dz9fz1UHFETEYVHiVTjQzBYPYKvuWp8EDfjpuEksAAUzJHkKTukLoQE7AKCc9K78UQPG8kf8pbUj2zpVMUgEDdTwfk8pVUdjYNxL4sj3QBibPGs7CkziwFPgrJU8HsaXMXdMUPwW2Z718YN3mxVHiu7qiRdqFrjcAbVUiQsrsXRoHQyXowUAQLyQsWDCLUKBu1WoTe76xh4GDHsVKrCa6DgLeZhrTFnMay81J6TGJL9awQFG1pbrM9hCPQY9rn8K4gXskzMGiEgb3wsFfGu4KbfKL1dHsFiRdBgur5H6ccKRezb2bscw3rZKhU36c3igZnEsAmtnYCNQBySgS11rFr4tQdq8sr3gcN43GjrAgiFMFEcEAQGnD5ksjVEdCcttXFgJFCWkqapQyvEt4vALU3xYM5BEaQmdEJpHv2gsCvfAjT", - "6Q6fbqfbMAogw42DWDtKuKt9frSKdqW92cmiPbeF2SnuYCS9Ca43ZAiJvR7KjbKursffXBwTuRfRyvZv7D9fr288gd6ctQSU55V7jg4xeGy77VHcxUAqQqMqMy7v9FspKJ3wUv5sBDfqXaL7iX6JvvjwcRmRNtkk7Es7zmVKVvcrizZoher8GdkGkt5oWeF4pzeDcUk7dLiQUPEVhYe6Qi3o2eqdba1xH5pbX1TXssdHnQNwV4qUDfQjq2xzQkCizu7ByHfsp3E8jZiQXzpNDbar6kdVc6kYUmYuVsMNR7qCQ3tHKi8wcKkamWUq7upVBxfYBcej76SyWFr3AVwYDykf8tY7qf1KeCUHP7eRtEnpDy2StzMQXVr6XQSJKXA7n6L75Xqgc8H2fua7XkhEwgYiFTQArRyq41y7eQ6Ra7kjMjtSBxLoAGXPdKoQQTJqrmxRrFnei3vMPZfXpjcMtYgw83epZj8WdCGxWU3kcadLG627HM8U7rpyS5gvxUUoAakM2AwANvPJ2aRKAVPBrvfGTgEXMYgJ2LQvmNoF8924nFjXgJc8dwgPwVLrbZioSbacixWsdAT1arPzF3JyYJNimfJFRyAXEqmpP9iDF5WfvdjCuUxnJqAQTwTGDu1L2hxXxhHgVfzoqTgxcqwJ1Rt1wbrHo55J2ZaNxMbh6urtSXEU5rvxL6uAW49H51KJ8Dn6Jg98WAcdvv5oww1QevXuqSyqmQdwkKE96MzZXZYsv4dXoJWHVfFS2FknRxqFbDMk4tz8LH7eXrse7s2ggyfxwX5AQA9ynbwUrSn4PpzCjXezva5sA9Dkjy5bVRRLViTpAkKjKQD7Xn2KqJ1MjThf8xr4m7yeMHnYBaPWxPVhQsQpNU2EW6ZuFbmz8mLtaadVXphfwEgxeezopehtA8T2CnaJbFgWxv1NmcMDFi9oE6SEEBNzQi2bQwvprqAGQuPCBAAezUPWZ2pnesG5TW7Xu5btujKCN3RzmtzBm6gDEEkt2a4Rxk8GBMoB2TysAgiGgJJxkEPiRpZNzbmMwn6ah8Z1z5iiRPY5TSEjHbdA1qgyNTbR91JUajZCafnkjCQtkzKf36r7h9nRx6PTJCM51tziffqhLu3wqhwHbu6wz97PtkA3FeC5bmpWEoDeEE4dSbZ836aigMiATYZmgyj4LEyGpqoiRxPT9R6cStdNN8MwUpVTCne72zbGSfnVChGuKXH5oGpoZHPwD7MdQRY8FGyNKzBfrjvxEnXczTm8J2WEA882ExDZQdDDAmUmhAkTkRLBQFcPb3NEk6B7AJyshAHN5ThvjqJnbKEiNoCFr3nXBN4YcV3QymB9soR7N2b5rRWdgPCdHT731AW8mMP3Gjra93chsyRMMAGtquveWYWZ7ESXFLTkZTYtCskWDEZzezyFtgQ1tSnAsqetspa9NKxXSy8cb88YvwPeJk191AdPRTAZLNjYwdC5NzRyxsC897HKjXzkkvrC72SZQtJSyifb3R1Lzd92y3ic1JxAimDy92EQDiHY1hZ5yKRiJJZfkPfjDgxqnMCHRXXu7nxwFRRCeEkeUs7VafTYfYQurhoBnxg7Pzi6NAdohtmaEVo1DeKFBec1axcDLPGs9jzQEBYR3nkxJEuCGwDEJEKCm2142vA6uXvJ91Y22A6bkBEdmcAsotitHk6EMcq4YkUAmko9GnDXdTgTtu3bjRrEwiqQxb6d3pFE2jXMwoMR35bntspPQMMi7pCJYtqM6x2NT", - "ZPBQ8yL1wGjPBFE7ZbLYxzGSrLZbeNGxodjoVsE8zTzmyEagNHXrufzveLZtmkQ38kZMcgyjhYKFLMAdABSh1XNiyd9XKNLBiyfMqgC36RPLcY6oMSCRVYNpq3UX1EjYCxBqueaZMMporh9vLoDMhE5e4E14ZL42FqNvpy3n72C3RwUTzaZwx3SeF8GjQwYK3sgt7Dkq9iKeX3tNAt9aVsnVTUumjMeF8G4pBeejRrRY8qWXBtMzHceMw38837vZJ3AcAwCUdVGQcaaG5fzPLt3PpyVnr6XFXLuoGbK9Ygs6x4vJNbAJteQxB6EFT9Hyi9HeWeQzh48GUmAVoEGBMMxrkU1ZKfApkwPbihfm5a3qPp7w22no9DP9WS3ybyQ3ttt9iFKtCchu8bGJPJuMhrDQySgSqcXJjnskmEpf31EuH86UFPYa75oLK2d2SvYpX2W6z4wmo828Lv3NaMz2Wm46oE9n96BPZng4z8n74ZTEPk8ydShLJ4GsJ9HtS8i1wUhbaeQ4pqFVV4qEJ45BQbLLyqPkmKJDHSLg6gWmve7wtfWrdv8XpsRFEkknJHXB1KatQBX1o7YTL2xSPgMbn6NmgNEiV6CiyscrMvwKj6Ms7GrKwjrQi2yN9t2GL5gL2DEfCsW2xtAr74B14bzzVp5MBZLjBUDE45YbJRdegMmH8eTmRY9Adp7Y5jifKZMyFdsYKK4KuGvv7oQReBnaLRPTYeFsEPidZ7EkigggyfMhqhYhB2osdRCX5454mzXcwE16auEXXxMyRRAdZkKGDQ68PWSmMjYiTBeroTyLYFjnvuaTeTDXz3fWVVVEYMtbFvMztsC6sraJtLTBr76R6Q5utzDoFRpgKuVSD3R3Me7CY8WhE823CSfMA82evcr3Cq4rJrKSZm4as3EHetXXW2AbJLmp6M5hU79DgEbsbSNgi7innpE4RGy9T8EUR7gvM8634kP9A7XfxkFRHU7QFyjxE9NnnLmQpG9C8AcC9NMtMycxiHs9y6wSgz5ZWqqzMexgmnq85AoKiwuknvuLgxjt9YctueZFvELeHbrL7Pr2Ywrn5Y2MDdv6Z7VNHAwMQ7KfEKxSYecgvNYDzNuvRdSRxdo5ST3s8KZwNL6JwJZ5jAc6TTL9txzbPQh9AdqkpNc2rsabyz6ChXAQkqXeEHmk4bDGfuc7tBH2BND6cVtj23dpfoCrrkb6fKUyxRz64mbxt3a15Qz7XMWCvN997GXHLpPMWCASRrtPJy9QhC1Mxxpmty9XuSXK54BDJUNdkMJ9CN8BhLT7igKnj23MA33oZkgiW93q4qJ8nZF2Bu57vYNN6Vozg3FCmFc2rTLm9zrVdgMT5McVvwefXDukVhF1Sc9g4DDgg825He5GnhdpqGtiRgmjeAVmeo8EXuJjPUWpNpSCzjy1oLaw1f6Y9kgm7CrD96Mzue8Fvijr9paRiKUqvDvx7KLkQbxDxYnJyGd2Mc6Ne9kBRXgriLeFTCTEnZewX41J1qcvGC5kTz2mRKsd3A3uusMXNDnghLpA18gXbMcNWiPBwQRPPJg9bzJS1CpiVekmhfDfQGzx3Ub5egEeUvpz451sWwWDd8YM1cxfTxRQs7xoGwKd8DLLcREfYuv8yBdz2y1N1HzndhL4ZHP62AZasnP8KEc5K3CCB5ksPDUWXDxYAHHu9YazkKGgL3SpXVAG1TouXQa3M5rSgR3FAr1b5g4WEhuC1H7EvCdy2UruQcuYEMFhFWYktowKdvZ5JAYLcpfs9ebCoXvFLbWGcZLp2vLnQnU8PbFvPMHNaFLnZTTJbm8PLrrtrACTnA2829QPiAYPJ468G4vraQHt1FetEqDNrfupMMpNwNPdFe6J5EUQMZA2cbsjJn7ctM2ToryKo9DwmuYDGTp3kgF3bqopS8CYmp7EcdftGuhztqoaDAXrDS4DDKfwSyfBQvhKDdp7WdmWNYvYrAgNa941peChW7jt9nerneiuVSrD6rFbLnbrtbvJ8AfHBwvzfKW8HRX3vo65rE17ZAnzb44ExYKmGzW6AncCiRZppv9fhttDVJu27hTV3hkLwsCaUvYxvCy8AFgyg1UYu1TSGt1UyveFp5ngD3KUDLEL9LuxVCqFNYuo3bUhhRqCJvb4imJ26u57XQvn8Cb9wPNe5WhoohhHcGzUzhNDKM9ta26FQMHbQHcQm1cfEPi4ZkEjWMyfx3iEtRKTEbEoUxKVhygTjy8uaQtWwLqiJUQwZYRayk74iUGvxWAnBELWBhED3iEvXUCpMyRreFeDYiui78h6Fbdmhu5vfQdhNbcPRnTZFLuyzXyztuTsK8z6gjda4YTengw7FMhJJeXZCCq4KJ3WZo2wLK5kxLQZeE36jmg5b2C4u9LRRVcxiLRt1yDvFhvrj1QFtYPTvkUKSBKGs8BAEcT", - "4EQTxw3MSn9fDbvzUN4qmbe6zFBp6MGrtmoeoVWU54Vv9hVr3kBhVd23e9tdtMLXb39gT4jtFtFejjj7Y8KUBrig9obUvh6n3Xp1BdYMGesCDwA517r7zWr7h8QkZZvtM9KQyYdrnEccgDDjE621ggJn1x5GA4eY3JC5MswfvzGpt2CJegvo1dwyy9VzmwmLFhyaD8LXypN3Y37qxKwmtz9LbHdphbjuCqG45pdn1WjPitdpyZmxNbgfkQRu9iiEmrp4bDx4FL2D6uLDbcGmES3p5rnnJsAkFma3kTBXbUapgdpftRyWfxT5GWGYSmPgLDC6GupfgXtnwrxZFxFdVrExULVGQe47iMija8iUVe6rKnW3maudjZDc87G7eJkn5AB6Kbae48N4QwUJhL1ehjoK6NW4DK2HFWbYhf9jXddnGHMwmp3eUKjzXREbsxmtcd8NQAYi6faZacRJiSGJ4pEMcnRPmgUrzkthTmz5MaSEvPU2qV8iss8JoE4huPkXUe36Jc2epBnPDrSpcoD9RnMwtogh7Zt9ZbwqJvRCvRBubrXR4R3JA62j46coMci7t2PnZNieCysUXFajpgEoBffZecK7m1gH7kKhxAzMUHMLGWncnXsbFPv95dwPramLr688uErR5tTp1Lg8YzkpwrZ6JyEYxR7MtiagBbxaABe69Pfi622kQZPpxCEa8Xth1VhUZM5arjVCfG51ayVD1GVL5hj1uxwowyAHqYPq1vvSoopk9cdUhXc2hzL63FdCV2bpg8pjdo6gavk9iokjafJbVq2sCrMoUmhYDL8gcNhbfu95AU4jdn8wDopEW8dkEk8qcv2uqBWGFpDmaSm1aArMiK4MFasjC8v2XfaDBVUtQbmjb4cFTHKHen43quXcx4N1xZVCZZdpuDi9oEd9M29vWtCHckShumUztHB6yeXneik5YhhM7zzwQZavJk6jvEUg9oy67x1skzWaXJUnaybu1WEi1UtfrZHPS4t56EvTLee1rR4gLMtS8qeBrFBbpWEKEFNdKrz7FgR57NxPkwcJuaTnktURL4Tan4xMysAuwcpCMrV4ritxiKdbxaVUk71WKihQdRQkdue1tBNqzLDxn42fxN9EeDu6bLBCq1pB61cfUm7ECxKPtbQVQXPKBLPtBuwbEH11h62DtGCQ31rn8iwk8k58bthMSHjcbHjZpNkDi3dz7sJ7iknQFQnEhLLpNvqGhK3pYccyemJfFtX13UJGR4pfM7TYznSEQGjdo5q3ACenebnuP8Y5wXDAoK2zc3Nqy2EtijrtY2QopiNpXRuJR5dtJiCQHw7ku5b6NC5WBi9dfnaoy92qaxVzCZf4Gag3rCeBWRhN5R85eg1WLqEDwZDzxwU8Dwh5bMSp82qWME6Ew84ezcEuHe2cfsxyXTk1pJ3dhLaQp7M3ZAts7rLRhLxznVgDi5KA4c2goh4CDpbbhpRG9fofkqQAZ4jkBdF46BKKG2T4vvRb1Y97eJE9N9Py8PoQkVJjbbgAhit7mFzoiUxz4W54c1KQbgkPTXGr1unfH8rjdA2JpbAJesrb2szbgr1GKSnjt2NsdMF76Uy1MqaVevkY935M82xshpw724Trd63Ph1N4PSrCcZ2gUcYWLtZfpY84ZUvU7EpxnePT79VRrzcAztXwYmFX2jBGThhmhSFLaVDA2b1iNbtwioaegkg5banQNVgJ46AfVFcM9gpekWJTksjjWwHeP7fdU9XGgyCu4oKk9Eung3YtKuVNosvJ5abWXrgLwVFJKhrNgE4fsmpsRuLcTeKmA7YxY6KtaddDgyf1MahcWioduzLu2RF1jg8fkehspokpW5pFLfVUTkkZXd68vrbAMy8gBLAzhtuzAC7Lk5dJdBVkr53JEtbgcoQRPDP6RaJoqKLxnWjc3bNZud9LzLanMD26h1WbiPkKRWFxkrh8iSm8hZGhYKQAuFPKKi7cifXHio4ZBrNdLGu2uLGbhArhkLTa7GCRDJJrhKSbT5oigPq5QguqXtmuYY2JPakYAuCjVgBQjQiNYmkAeSdNnEgeysHPp3VbxhpWLu3Ty15JiVdbSxD6xDPy1XQ3DNv4XoaN8UcPRT1fSRNLsvGDmR5Y4E1sZbfPQBVebzYzjsqFBnwLg9m6Ei13YS2avfwC8hBuMe5cVKWbCFrWJAPmhkd6HEoFhuF2WRMJGbMPaTG4ixuz8SLTttqpGDzFYAmytjsHq1xaFYF3gG8V2Wxq5ckV6fgu7C7koCHaaQdAiFghqeFBS7nn75yUr961gDeVkvTnYWmuE55nBZepxocynSLkLiPP8cyfRDEYK1siydfJHuUgoCm9DNgA5A8scBF4T6ubkBrZ1jX6GoNQVfWfjJeAH66oeqBDRyFcy2BLUkpp6FqUhFVPoXc2caqbxhGg1fdfgFwsaqctwoBGXs8A8XXdodbJ8JzisfTA5w4cE2RvQsmagAicbq", - "4EQTxw3MSn9fDbvzUN4qmbe6zFBp6MGrtmoeoVWU54Vv9hVr3kBhVd23e9tdtMLYutpx737TXvM2A9gBwAW3ByZTVCjyM3XHrNwER1RxU2By5gXMAtcTfuBTZuTyzBb4i3dqVcgeeJoKz6X8TcpYApx9u4qyzmYpzB3i2Aeor25SgpmKwcmpZWi9tVBXTLbQwKvaU7TtXoSWwD1QuX4SNX2koCjQWHYfoi4n6v4RwxzjqgxygQkUoxT2HmNtpkvBdybrc9t3t2DeKhsghwwcTve2NBeL2PeMauS6ayH5iCyX39waxUX4qMuceKz8MLWLdN4rrXVXpCreDsE4uU59eunFDHc6j2C3mPnoywhJAkbBMSqHBJR9pjfnLeGvFe56yGnGXHcrn9esBEFMnN9KA3gHWzAKw6U5oGDopaoPM7oHriMosUxUZzuugcHEqcUCfWnvZciuyqmXcNdRRuuprGWytTsaoECD7hXmhrc7F4ZEHA3kFnPZ5Q3rbtVpCV3yy2cjVG1FYc1woU3G5h3PMqoG1TMAQQPGzWa2YnyU5LmKvkp4M1YbEXn563AjpZeZy1DmdLUeKbbgzwG4Y4f8m3xTNVStzwZphT4YcNe3Nwa2D1Rvkw9jMAJ3qgrVCvpsQxGcwsDcATRqvCTyCN13E5A3UDx8uq9ro7R9eM5d28qrUS3AjaTLaHnthRn5VVyJPetekdPN3kwxxGuHoVL2HL1CXcFsBZNYFrimyXGHWFWoCZw5y2JQabKMGtT2iwHY3LaoDRrH68k64qQ4n3mkSQgndV8K7Gk7pHRAQ4vzhPATYdr4mtt9EYR7owJkzLAPYrq3xngsVrwjRP2SUwu8HhAgZsU9mJtq6f1gng597L4dshWrcYjyRofvZ3Xrf4YeFVHoPBfALpSwUQFLgVwFADUHdm1rKN2QzU5ddSzv4CkgW9bQUvHcxihJCRvtPezdbBoTiBrHFYQoSivjRDhZX4HWLe8Uz7W22ZgQ1iwQwEDxAKtN3WJKQ1fiynSLcafruHkmiszmqi3hf42itqvbtdHqQQuk3xxSQbWifxXvJyCNd9rv4ekQcDfCvdDswvf9T3cjCRsNn6QLCZMbgNU4TLwNv2qJFDyQDzNxzboBZ4uhVUUYFKcomYfkUep3mKN1Ay8Z4NeS2UZhPPMNfugCatNHMYzpo7wSciTUjeLFyiNQ7AyjWq9ZYkEKWWYvHEyne8ugoG43dxCCe5fLSXENh9aDoYvaK1NPkCr1m4i11A9K2Rpib26hspFwwPfPh7AvMeMn4KRhBXCMXpGXrVoeVKAYNDCwPxJz37Ampp2kB3b1EGK2A3TKjxG7qJJSb2pb5wKbCMeuQNYeX9qypQ6yHfat1yfszLZEdThRnCTMUnYX6wKF1T3TbAMgXHzUauXowjVegjo1MzrzDxQQaFSpuwrZ1o5tEryWYXj7Fi6d6juMU98RfZoxu1AxBqDAjVv6HBNJJzbx9sic9rCb7p9bnHGTqi2U7Hzj4zVFYyWFt8mPQqbSFyofekapEnKFBFvZhLS4q6s95f4rXKKPGPLxASc63hZfqScdFuuTMej5VM4DSYzyQEKXk2faZ4QcwdSE3cuTkHUQXH5wymK1LKiDd4Ysyvom2zaYmhAN7pCTWJC6iG8qVotNLGiN7JcwJy1n8oahjuQA6hFCRVQ2uNHghsjPZj1DtY9SLUgLtV4qzHpE64ufXD2J7F21TRKzYsS8LiwqaJD2ZPHfk5kQYrssWs7dnzzRqDNANk7UP91isuUTG7Yckp7XhRKiQLm3FgQMw54c1HSV7N8HrsLKYJBU7uGw4d48ys6R3T35h1tCAwUMfMynM5wKZFaZUp6dRgiwyUyGqnaQqCS953zsQkMtokXo8EQQKpPdjwx1UvNoWaLtBwZ4hoU5UzFN3USvSgiaUYg8xFXD4zDNhPTkvXMUBWWiFbqYhyVMYAhsXb29tYYuwGWZwYR77s4D4REe88LvvYe9k2ERkC5kZStTV3rVciiK437wUUBGUFmUB1ZAF6Cq4iNCxtUgxfqS8wRi4RXygBBUGAdDRhTeciGftohXuW5bmPQcnJ4QPThyuUgz6oxfYXocA1gcfbT28MFBU9idDm4vrDRbXfR1jrHT9TZtsiXERbfdzjnV4LdaEeMzeszmFnN5hzRhyz6yPFAThdVvnNbnMtb2cCWKbR7QjpSRYGRhkURYn4nE4qMLdXfZHuzFTUF61pFjphJV9ZDY5Ub1Ta6qiWqFAeBBR44HkWqBZvReQYRzZKLRgRm7j1GPzsX7m7wTyiTBerm4HwU9kx8daRcBybhXxpGiRbEjRmT7jstdGnhtWvxVYTRDfrmNFpL2WC1dBwMY9wEgoxstZK3JMNs7aQszAsTtuj8nhxKGpYPUL8WWBqfuz8oB2HtSH9794Kcm9NxEhSZebY898kYzd4NzYHqiyry2R8oeukJhEBDCqbuWD1FDuV", - "4EQTxw3MSn9fDbvzUN4qmbe6zFBp6MGrtmoeoVWU54Vv9hVr3kBhVd23e9tdtMLYgB7ioXsj9npXPgJcP5HTT7U6qSt9mtcpyxStDP5tz8D3pzzAFBNaEeG43x8i1gYSjpKs8jTxgS7uvrCNJri9pPUSzGXtyeBqCXikUZidprZUfepsvexajPrXQ3C13wXySNDvqVggHzfA1CT1pSafzKSPxfVy1y9NJoV6cyfQQawNRSZQwuEHedsMwZcRFDJ3LiEvGS4GiGwoHzVYgFmHjGvEHrRQss6XjzML5pL4ce1XPQX9Lyv4z2QCRWBm2J1k9KTVtCNGHaf9SfD89WpgnkeBNj4ezgePgfkdqKs92Yb3LBsv4TxnF1LJYKowZ6G3jMsWLeyfR7zKkboHQyP2d6Shq9nFBjU4fohr1N2RSkmDyUKBcx3JJwGUVXfUjqRkrWH8xSyJkZkGM5VLMXSThhHvhz6ZeHGrY2hQxBSo3UUxXuwadrCNgk5rd41muA2yVijwXk3uLb1HL2RjQHnJw9bt8Je4Jy1YWytEu4JPWBaEkjLgz12cHVsq7yCoucPcqijvAeMmhKtgpjAji53a9W5Rax4t3X4fEnoJH5X11XPsK2QWiNijTEJ57AmvaVjBTViYikmfRjtviCd8NzSwfWBBkPeCAYsh7wzNU8KE1Zscs4dHjpyzrSHJuiv4DM4ovhN77sBcWVcn5cTcWaoJp3dzXXmAZrLGtyyBnRKu7XThJVvdkQgyyL8HsVwjnWfZdGnFiAk9V8MSJBFAX3fgyuhzx9RbnE9WCzUut9ob8jASjCDsABkn8NwhgsN3ofUmzjKDanW2Xt28qr9v2wK2ZXrHkT8zK351Z4LeirZD2S7Uh9ZSEagkjNddXeKmdgYG2KH2DrCS3vuyeTFpYcPt8rAy3CFC2PRYaN3AgwR8Hk8maKPH8xFPG8uXTCWCtQARm2Kv49BMhzi4QoRaurAtYTmfyqnSkAumkRiKRyKiJ9oZRjaa9X7S2CM2iuiGo4hLehQAsfTTGbaLsjWNcsRKVxqwvJUU2uGjdywUGTgaVptBUd4epkFUQgegu4os4qo1fJQxXVmmrawuC1tHtndak9Cioz3Uyh7TWZwH8wBmTYrwLzSJygV1d83gfnrfpBbdimFdw8g6igVMeNruWqVwoiYCLPWyDtRzYpvEMopyiDqofLpPLYRg9FEJUyj1TRNXR8nKsH8ei3rELrx1zdFVomRWBAkaoiHp5YNzy1qavDoNMvj3fQeu3qAQhgR4fgpUZmsZd1qRueiVWAaUVfuvynPhupvAXN5AveGzP7nJsXhV43KNVNSgMk3bi9gznHzCSLsPoCkDrbzWDA7gLUpon2cXJ26wPXdtoC5BGbQxmwCskvukxQRmG2Btrn8LgauSYHqRgEnT5sY2fJg3wahwQWtNWgr92DUBfpdVdRfapu9UCnG1wx1wHgBNabhfWthT174w8RjdKdsxW48cQXsQvAzVom22eZKDTi7Zi3onf41NfFTdT37BikhUKnJpkpdA5k8XSdkBidKamZK8Udxkz4SKbQfqYC5u8VKotJHScGvPzwq5gkqTrKnj7rFkznicMBLUehpnCziygD6y9CJpHsUXkELeyFbodfi3VbfWMnQ84FKMDCAE2vjCvb59vGREqQdsGk1tQYbSn5E4aJd5qPEmNgxPRTJAHZCwuNMS1AXkEMfh9oa3jU3wdLHPapWLzBuunNQjdM8DHUNc4ZuJqXxn6DMR8pAXyo1nf5obuE4xg5X6b6EszwupvDi9LfV28WnFNBVFUFgvcQv2XYYeCuo8pP21iH8T4hkRcn6W6Eh2TSysMNxMBfNcqUfTNRhnw2j9K2kfybPTRmXaxd62NsuX9jXrgFe7MrmKVn39sMpWSc9QkyqHF9neHkjVnZJrz3S9xJJpLxMiTQUJVG8BHAxLAEYszW2HrTsHAT4Fe6Ua52BGMFNQFDAjYPdjdDcSHsG8JELZaiU6oczPMRyKdy8tco2hRrQpzNhuUzwtLh3Upir4kUH93iTS2fxHdaVoq6GMQKonSrfZxxrHpLE8cMiKhhjKSU55nc6Jh3HFE71xNoWx32joPi7XfwTBDU13WUS1g7bBBVeV1k5Hf5njBrTjSQ8rMDtZArMQNrHeP5UgWeUTk438rihGN1gj9QrCPQcdUvGTgfpmkY8gjvJQTsMekiKku5zsfmMFH3yMFgdzTXj1Mh1L35KCCXQEnNAgQjX2MW7v3QFQdohbjtLTaS44uWLKEwU5HLwDVXicpTMADPwv1AKFU5Wi3BrzUoyDPGQd4oVuCbz2BMdz6jxx8dGzFBUBH63HsjevsziZADWwEWia4jVCA7XCRpazRJSDEiLqiXWA6ZVw2y36sqD6e3oZjfkzmKB3i88zoc7eRSDpYa2KS6bM4EQm8AjgTSfQkpTKS64VpLtZqLKBzN52f13bo1jkRRqey7", - "uNSWCGrJoB8w8CD4eBFT28pcoDd3q9sGHYFrQXZc9GSeb8nP2TEGuDtMf17W4J9BogDHNYFYrXdskbbbhxMxYM3Yp4sK6b6qhqPS4DNb4vB73Jy8NCMcbaoUcFfQLcKm4nPkCpFdwdo9n7GzKEECFFXe6FiDFbnoEtqkTsseg88zDcZmVdanXvMa7fL6yJoYppQBBH1XPtjHzSqpg7m8iThpfjjp1Wi1yGbewpFsvZ5roq3TzU8Jk928fgUBWa8MnHConNXAai7FJTo5w9EXuEhXoLhmgoCbJSMrgR5diTNYHm17FGd6mU1dTnRpk1dvx7TjpCz9cadJQw6DHfGjprdiLjkkdjcjnpUrpMdBjBrCf5CgjdH7VkC3RtudksekKNGAHaV46nx4yChvPXJSDmRjY8zPrXruzPqfJgXnajRcKJ2PW6uA7bx8yXVEAwhCFhyAxfGkab2FycXhSi4hQWJoQRETDpj5SvNRxE86aL5GdXYzQs9zbd1rqWAr9sqQ7tGTwh9TLmSMsLDmU7z9RoqpYEacLJvPYdMRD2EJYJVGN9XFHcnUcAGQNxDx7bks4opAtFvTQpX5SUHog6WNMsbwP5sRJGMN4Tm4yszqVvQAiPATDBmtQLVwqG13aan5bp87noNVr9vBZraLoEtuEuLqD1foBgN5NF5yTUJgoA5RSQhiquCr98tpZWivCeFoFVLTYknBfejLULv4faTUTPAp4KztNdeMqkYcDhjqTRFko7Lbf2XsUxeaYDvotcLn3hmgeJsr45SwbrUyDtsFtVuwPjis1vJiWwyNwF4WJiP4XrgEVJpNNXGMZJjpYZ7cNZx5Eary3LCKegMwDus4j1WUhxEW7q5BowgGuFwsncWpFBXPpbJeuBu3tbsXfyrDxQFHYVoLyGRDb2bJjazAWVY3eVNMNsxLk4aBiNMstfAynGngbw8r7hw5vhMWLL7S2CaBrz5ELbVZRowvBgDXc7Xxx6XiMN1x6KZhSU8gFHjAuzggHNo5WEfg9bE4G5qUsdpbsF29iorGCxyKFNiWfVriELMGBo4vgmvEwoPft2yREQjay4U5se4GWT7SBmYN7cWmM9c5qQzzQtVP78Xht13wH93QmVh6NDXb8hCC8p3vgR34ejXuCuXiLd1h52EVxcn7zUUHLmvEo4JaivGuPZgWHeeu6r7kg5nhBrzWkmvVXpiTbdEvMFvsh6vgMamytw6EtJuDBpKuk3xHrdBEHaoWLDBqxNL7TeewnK4qipPiJsszNtbuwkHpkYSMzaC9Yjs6AoKEPL2cpg28dJkXmA7gsC8g8fxxZL3GkhraLGpKPKotbEQNWaNo7AuZyGYEwaFdfkrGXLY5BBTNaYpyEYk6qaUk3oemvaA9TPZnijqbcU5W1YenQkHsh1Qbw2V36SX3qLrzwNVqvurDysRs9MjymKG1SgWfdi5Ti9dFcCW7DU3xtkrKdzXnsJoDbAfcZkqn3iczDVx119Y8QVDMrubAJFPqTCvKYNsZtQTe5Qw33D7YYb6Q6CW6SuVCXS9VAV9LwmYdbdRzU2bVQ1yuxby6NAhN4WX2evNv4PLowM3DfURPKVDV6js7zJ2b1SDFg445mLkhDac4RWTmCtPmze5wAtV2y3hoS9mTQtiHHftmNhroSJZW4eKpFZvm2jzT5QCttvxnoxZGSNfy6dmQbprDNYZfGkEJoCASooctFH1MEr8gP8P1XnC8Q183XUveQsXyad7Pfbew1t5TseXWuDrb9gcusmVVaH", - "4EQTxw3MSn9fDbvzUN4qmbe6zFBp6MGrtmoeoVWU54Vv9hVr3kBhVd23e9tdtMLYiY59w1zNEqVuQu4Xb187pY4giJogDig2ejkgwSmsusia3YCnEPps5wMd3UTfaX2JSSynw6i4k8i7g6dnKkNVSsdH71wLDbFGrbicPwKLBWuBuAtS1Mu71utFqMiJmaJS5tghrjm1hy7jCpz9oavqMTMtq3C9pUUSfchiE8YYpkfH2HvEADtvDpJuyMY2ZfcV26ZoKieriMDMB3iSowGm5DzDfzFYQ6u3h9wvsQ2B581X8hgxmUDBv4BG2oX7596bycYt7z8H5NwcATVsMbAgigvWw6ANPrGNm3sYo2A3EUg9f37ib8xHmwa6odmscxMhTxWZdztK6h1BrkyfEV7vYoY3t1ordZyJN4YeS51v44VkFZDvSkaGizM4KshCDsfASy6J5ceFGE3rZA77DH8qNmD3nAUcBzcKWTt9Kzsc41PnguKAq5e9P1q6AeXYNZEsHiyvXiGwBTMioxmkpAey5LNYFRNqSndMY8ncGLUPAfQ956L9YzoHaGNNuwwbiqFRcHC9yTYQLRph8uvSdpWRtepCuuY7hRuVqQbBQixT9iABfQVBqteCyhQayDFGVLwW9XJ7aKdGktsGvHbq7UfW2gyYbwd7mYN4ieqRrKHgLLUD5RSHVuU8JMgwk4Wqzfjjob7XGpJv4YkwiDTePrPpUwZzfPsh5jUQvpJo8L6C9QRddZhEe4wtaK557NVeewh6NBHe5f72HjN9UABtFtesxQPQyKX68KUEVUzDuzrmsCZ8ryB8qDd4tXeFeqNGp4UHsN2Czed7cB3mMTX3jKVQTMxxaTCHpN8qPeiGT9iPURnzYGLR68UqEivh7JRs9PcSGXHupxUxzQTDUoYMxbKxtiT8jyUtbrzWGPKLQhXHG7RmJbh7g2yE3hyA7Ucou5ukPh2xF5Ke9hsY3c6rTnXMiouSnpBarpzAN3yeErDLFX71EWhEXmQmrUE8DYFc8Yd2gvoX31cgEsFBu4qSXeqQymiBtAZYBzbVySmxJb3mxRhKbNLygtoxugiJSHmt3aXMTn7SoqxjnahdZVsddoy1vMRZqMDn5XuycYus8zg6GGiJVZZQNzrEft3J4hhkQTzeQoEYmzbFpzWaSSwudXCS8ggP4tpVKd8ETd31T17SJk4Mt1EdZTDogZVm8mR66d38nxHWMXq8DQeb7iQWUNtgwLXwerG2p8rCPMbLxrgw3JDvh2haCmZtAcu4cN8DYAbDXjoTs71ZhY8HVpRr6CvXwKZYE6gqeEtByzifeeyZcAuSkrfeBgEncubApkookzGbjfnDdXdFMdavDYzGLx6BPsaYskKg7gzN6EMmnrbASvoHCVQA6qWqYoQ8UYY7qgik8pj5wzVVrc4PfCz1fmDKAm4sN4VBvZCGEfupx6afYbPLkWBDmySTB7B1cu4GWWPirpAZtkyEFk4kQYqt3yTb8nutSNbzvZyerEt36fm5358FPtJQ6ZP7zL5jCyMqWXN7Lvx2wfyK7CVXX39tU2WNvxcMs7PidSAEe4pn3MTxmraS1GBbKCwLYC8rJGzyX8EWamVSXKWgi4R8mXH49gBsNJ1yG22fAdHnShRAtSBxJDEnPUwVTT2jZ3W9PVMooeD8EfVMcsNKsv6SxM68ZRmyTD7hiEADmHPpFfSBxz6JTJPduWyhmjbnjdvDE2o7mS8KQaFCWnq8WV5PzWzK5m4X8GE9KdnLwbFXbYcr21ho6CmdRpLN4KayZqsnGxHnSKTG4YJC3sshyZMuh78S46LV7BGjCdjzBsCkH3DLczPFyaSwGU55Hy3o9RkYULsgpffzsGzZBswC8WMSG6WYxLsL2cyuaXuwjzgZuh4npnNVDoos3yuSio3TWWxqzFKb7BcR4vJC3jyn8DKQyy2WuweoyhA1LN5CBD79xSP9L7iMzmhB4X1EneMWZQdhWPNb5vmVMgZ6TWywkbiAYKexXtRYMkZytudaZutrAojHu8StFpvjcqVJszfvwGnFKBuZr1x36NzUHz6SCAWHtt4WdLrFGDBDm3VayfKDUBvDgWTtNN1YizXmfpjiMiTMaaTP17n9RSaTTxzmVnp3iqj4cryy5vyWPxpCgK9gc6q7TrepJQQqtxBYVSNZJHdFp6ENDk24ypN6JGjyN1pLKKdG9fb2Na64kvULXqnjsriAScytY4JCaX7cBqcr1DfNLACwq8h3L2bzz1N1nzUVWtzuYKEh2rzsLjndj6XndfycDnedAnLs2pz3sY6GSnWySwhkmHaWfQQFk9kUW8buUwp3bax5aP4ccWvaMAcoCJ6GeEMcDsz26BXvZgYFdgn3BUQuyvgUa4c3G4CyDEahbZs8BK7uPtZns7bPraP9pmhgwbdCUynno1M4iMmsKs2wNMwLRw77eXNzoCPv4eKZHor4KvPBwTfWkkvoXu8m3a", - "2TyjXFFfy78u67Nxs5Ls7LXkrVy8FypSxQjFaAL96yU1ChooCXiNcisLhgsBVnge1z2FGzxjDpb9zRf8i2fqtqwfTU2RjPAiRXZshG3kGTDngPxzBZrHWYZNc2XtYi8uMzpxz81wMj6kYbwVpHFJk4oeTMie8RTN3AcgJEEkcZLqNRLo5ZpM2qzEYHyybUXtmiDmdewkjGHRQr9upg1aYMBNRShmZUAYcbsS9NrvetwHdDuMRGfyiy63b4WCP89X71ENkFEQ2UyBBtjThfUxBXwnFwBPhTY43jv9TySNH87DiVhnfqaQaakXVHk18zPqd8ujDsd8Ge3KnDuV2gxi9iK5LdRAsbAGoMGHnL4vvrPmYEt7txEk9Cv7oTsEagwz313KhgnL31DQErrkNhGxesmwZdqHZJFtPetsF2Rdf7iJM1pCQhxFtReYWnawLPkxmMSpF8tRwVPXZVysBc5cHK3cMwMg4dAyWyPVvnzNcjYVQqPRs63iDqcScVUZpY5kKCRg7qKMz7p4sW4z1bUGC49kyTc7DzNNVSneXb76D5EkS99xMkyPo3npUAwXM8BiAmSAYtEgSZAMB27eQQVUPjT2LmaLkutHwx2zkPkKyjcD68D3UHY47ANemHf93yw6K18Z1GKxiiqGqh85SozPxNX7buR7r3ig9d3C9wZ9zzsKPABTfVw1QDJVFXhVvrXPbc1QwzbDW2wUQjSp74HKrdp57d3mBhxLngzvda8pzjrAK75fRnnpeVx4Tbx8zvtNoCbrc65QjrE7WsKyvTJnYsZQ3HuKWpAfnSicptH53GT2bA2mDsySAmpN5Lp2NJt7wmxVfk914QS9hZTzWipktyvwPnEus2jqqZgCAD8WLkWK24RTjsiK9q6Hs6uTt2z8uAhvtRc5vjG9AbHCfCTX15eRrKN9JcRJNGtfR3tS4QyVg3TEEwShpANbRWTWGpwN1rLKtGUYbEkr8PoB651TjM2pHRwykCKrAHHpRR7s9QiaHkJP9frKnDP8FYrYfCYXuBqShQa2kT1bh4bBq2bofyACFt1GGMyX2gmPzVMTtWbpq1MJUohkLY45f1rqWcw3YE1Co8aX1ecgJqFUETYkde74kyTnbKQ9NwUALY3YKGMTghsRe8rrvoXYynmzJ9BV6UnuYC14Gb3BM4EoFgNZJZTF1ukWAR6zZfjXdRoi4qwrB1Nq1X9dB5dWMRatPn6ADBVZpJGXTC8JAFk7ETxeVr1ZFdpFGeq4MzQyN3gFCtRme727NQQcPZPJMSnuJMxF38D5g3PkSCwiH1GQxD8nxLipo38dinpThdfCffRBEpX8fjH1fxKHvVHm8qEyAMtoZhf4UunZnXvbnnMbQamoNyDMfm3U6QjZtfF4q8ku55yUA52iK6yLS1v2dM4tveA3n1C1XyTUjoAdmKcKcwnugMmPqHEPw6E4hFCM5FFzksojFY7aFgMur3TqepTDKroTY4YQq78CEdyGhrjCikXkA7gw9kFS5yFQCy9wnNDwaBQyNJJNDnvFVmdb9hiGHZdd3NKaHkE27LQpguaFtDNGLbx7Nt8L39cD1NsuAbSVMC4Qj8ERyQR7yffj3Ngrcm1anuZ9a6gQjbQkhSK7JqHvKzBjSnJoYwvuXsMtighATbRF5sawCboCwiPpYaDztBLZMERL7BZ4dpmoNJj4Vnf94nXdtP2SgwGaJtkpKC3XMBfiZfqGJ12t6yemEgordAc6cNRvnYVDf6uvUhJt4j3WMerwuiFQUt5buxde9JxH1wwa9HiEPmxKeh", - "4EQTxw3MSn9fDbvzUN4qmbe6zFBp6MGrtmoeoVWU54Vv9hVr3kBhVd23e9tdtMLXb6spDwxGXqr1vubnRTpaZQW3xefiAmTYB78c7JFPZeUQ9zwxj6YejeJnWQC1GAGsJgn3BkiwFViu1bHDjtWD55sWKsV4t7Ny4Ejangwjjsm8ULLK4p26eZ6A1e2ytP5b8oAeA497MGG33PCuXyRwBLTddyEpTeLRXcbTf4jyawMqa6deCz2RfftDHAvGUE87MhJhridwmo7aDNTqnqFdvaR5hMDg1VQW3dPrGFovzUSmqqZBqQTiHLzFpToKMQNwieCWpWy53AmDFQ69sMJwztBV1gygZfQ9SsadL6WCNPBXrLguERxZGLEYSizNppLWmpWrocU7SKxLFF9xxLWe3EQ2NukMXUoj84afdGVje8ojNWaP6YMmgvCxQGFDDYAaRzPFtwWzGsRTELPTL7ugdNMunYWuFde6HXXDf147R39hpMGpeDEN29Y6Xe8UpXBT3nFKahWYhmfzhwK36rQQZLL4Zh4YPWp1iXsEttcrMkybs1LYf6nBi78nBBeVPTNn6uWN3gxRvkw4yUFqPzXqBiMvoWHyGy9Npg8azjyEgeAnSf7873zh6CAEFChdzXGoQ7yKpBHKYJTR7tB8r8Qq1qCEcEaHkxMAQS3q6muUR8g9AbnrYJn15rwtijks8smipmrS53kcCsXxEsfhm5eFeKGKBRuYxcKbx1cTDPuo2MkGYuZGmzM6hiMaw4pnt7T1W7TYPpf8qUSxaVWZLJMsYKhruMMU4uQkXa49eiyrKgV1CNQBGuVbZuqwHWD1jEZnbK4Aen9F8GJE6qHi7RBSzBFecSMmGhGYKzPJyVPVx9YPSoc6D2x61FPnzq164eBBif3GeoyX8oHDjFZ2FjzqESaM9P9NxjQSF5nqFGfMgateoFib6T17wSwwGkykoGxjyDGMeijmiqoVxJWNS92cDbRzbFZhxkKFNbHN7iUgWgDQTwLiN92j99NQ7cjWntdQjwKLQJGoxmrUbaHBhuKie6FDdiByhf8sTfUKWRH1jge76DCcyrL24Airbw1Se8wg8oYsKmpsJFrfmohzoRaQTu4UpHezBFHXmNoDauPoVBeVN5LpbyquBMSxSk6MJ3EPr3DjTx212GHKaXGUfQLpjGJSVgrAvHShLRExD2vb5xSDWNdryuT7WvCkqKq4ZYgUq8Sx7UVrAN9tTQZG2w17zhE1uRxN7sBibM5txDNbVuuNRU6Pvnk1v82MMAo9823dh9uTWKapPPYoFSxrcDdAyQyhRAbvP3oJV4LwC3bdc4REoEzWN9yg1XUDeUDDef5oVkmwHaypu7poPezUJmvLuyVC6sfZsUFfchQdYEuzewEmBENhJbMeetNXwUFbAFp5fg85WzoqsvRsWA7ez1y2MxVQxk5DSQRk9pPQ3WStYxcxhZtWQYLP59GDL6djwufWfL8zup8aM9tS6oj6UPB9Jisz6EXypmjwmm9WCAf3VYUN3WwbjeKDkoDRvhgMx58kedfTYr8uPe8Gy8c4kcLGUhxA8AZ5qzfvpcPwMikVFvVGGkKxSrmzVyZ7RrTkoy2QW3p8T2HLUBqnd3JEvXfm6sG4RAoqmu4JZGefieTNebWYCj7qW1BNvkHjQcuaJzn1LLFWER5dM6Te3QknaDcJeoQaU6gZnePV5keD7mRQzemo8rKUTHuPj3sZMq99D3Pho82ykmAAHGxaPhN1tBEXXmDQ8aZUPgTNB6XG891oBeBAs5KRtCGqPHcx62QsHjgB4EVVLVEnNfYxKZPqKJKobKPk4JK6mARVUXT2D1MzLepZPA9v3mAsPYxwwkh1o59iNVgVPHTJheKNaWDrFqZVkJCNjWVCs8hGwyH6FLfj1uSP8n8BmfQbL4e8Wfw5RtBwytHGJCuejnTZXPZ3dTA29LCmSNajXnXg544CRQS8Ggpg5G4UV5rCWhCmtdSnCuqsj9sicZZB9YAFhBTgWndby4cXBV7manFJgmXtAGBJSKzPKp2R1kC4YGHP5aPbBHJoo14kaX1hYX2HPjWEVZv29iqDeXzyJ1JFyJ8RDhpbqP3cPDDa4LewavDToQFYRcEBmC2svFndB8Ln3TY43cv3c4axoqJ9rcBi4E5a6fmYkpcEhrazL8Lpx5W1G7G77rBcE2NEnF8HYr473kymTUmQefqPu33XW2HESwJ5krJJ2qXq9THyubwSyDtV47SXxZofBnRn1XY6UDySjJqGofafjMZaqfYdAaw4xPosGdFVAk44RktMYTtLS5VZHndsBSN3ZTEwFZ4Mo3xBCtws9Q5dkidWqMmUXvmmNeysuag9fjFE9QD1nPNyuz8Vxnp1Kdgrd7rnUuDX1VJfY2Xt1eW7U81xQY7EJ7LeASwCZL27bX7f5KUTbeppAckGfYMsL1bhDCbGjRCjfEzfhvdyHhiFFgqzwU6AwXS753" - ], - tokens: [ - nullAddress, - "03faf2cb329f2e90d6d23b58d91bbb6c046aa143261cc21f52fbe2824bfcbf04", - "003bd19d0187117f130b62e1bcab0939929ff5c7709f843c5c4dd158949285d0", - "089990451bb430f05a85f4ef3bcb6ebf852b3d6ee68d86d78658b9ccef20074f", - "8b08cdd5449a9592a9e79711d7d79249d7a03c535d17efaee83e216e80a44c4b", - "e023c5f382b6e96fbd878f6811aac73345489032157ad5affb84aefd4956c297" - ], - }), - }, -}; diff --git a/projects/duckswap/index.js b/projects/duckswap/index.js deleted file mode 100644 index 46f0c7692ef..00000000000 --- a/projects/duckswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'duckchain': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], -} // liquidityManager contracts - - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], }), } -}) \ No newline at end of file diff --git a/projects/ducky-city-sofi/index.js b/projects/ducky-city-sofi/index.js deleted file mode 100644 index 1c3b7f13827..00000000000 --- a/projects/ducky-city-sofi/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xe276437b808741f5c73b867fde8f3fed8c326876" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl - } -} diff --git a/projects/duckydefi/index.js b/projects/duckydefi/index.js deleted file mode 100644 index 8226de663db..00000000000 --- a/projects/duckydefi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'cronos': '0x796E38Bb00f39a3D39ab75297D8d6202505f52e2' -}) \ No newline at end of file diff --git a/projects/duet/abis/collateral-reader.json b/projects/duet/abis/collateral-reader.json deleted file mode 100644 index e08089101f0..00000000000 --- a/projects/duet/abis/collateral-reader.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "depositVaultValues": "function depositVaultValues(address[] _vaults, bool _dp) view returns (uint256[] amounts, uint256[] values)" -} \ No newline at end of file diff --git a/projects/duet/abis/ebcake-reader.json b/projects/duet/abis/ebcake-reader.json deleted file mode 100644 index be7fbc9922d..00000000000 --- a/projects/duet/abis/ebcake-reader.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extendableBondGroupInfo": "function extendableBondGroupInfo(string calldata groupName_) external view returns ( uint256 allEbStacked, uint256 ebCommonPriceAsUsd, uint256 duetSideAPR, uint256 underlyingSideAPR, uint256 faceUsdValue)" -} diff --git a/projects/duet/abis/pro-pool.json b/projects/duet/abis/pro-pool.json deleted file mode 100644 index 0468a81a913..00000000000 --- a/projects/duet/abis/pro-pool.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "liquidity": "function liquidity() view returns (int256)" -} diff --git a/projects/duet/index.js b/projects/duet/index.js deleted file mode 100644 index a0b313d1299..00000000000 --- a/projects/duet/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { getUniqueAddresses } = require('../helper/utils') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const PRO_POOL_CONTRACT = "0xdE57c591de8B3675C43fB955725b62e742b1c0B4"; - -const abis = { - "liquidity": "function liquidity() view returns (int256)", - "extendableBondGroupInfo": "function extendableBondGroupInfo(string calldata groupName_) external view returns ( uint256 allEbStacked, uint256 ebCommonPriceAsUsd, uint256 duetSideAPR, uint256 underlyingSideAPR, uint256 faceUsdValue)" -} - -const arbitrumTvl = async (api) => { - const proPoolTvl = await api.call({ abi: abis.liquidity, target: PRO_POOL_CONTRACT }) - return { 'usd-coin': proPoolTvl / 1e18 }; -} - - -const TOKEN_LIST_URL = "https://app.duet.finance/tokens.json"; -const DUET = '0x95EE03e1e2C5c4877f9A298F1C0D6c98698FAB7B' - -async function getEBCakeTvl(api) { - const EBCAKE_READER_CONTRACT = "0x243F8da5893E534CBd25220b6E277420dd9dE77B"; - const ret = await api.call({ abi: abis.extendableBondGroupInfo, target: EBCAKE_READER_CONTRACT, params: ["yearly"] }); - api.add('0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', ret.allEbStacked) -} - -const bscTvl = async (api) => { - const ret = await getConfig("duet-fi", TOKEN_LIST_URL); - const vaultList = []; - for (const token of ret) { - if (!token.vaults || token.vaults.length < 1) continue; - vaultList.push(...token.vaults); - } - - const uniqueVaults = getUniqueAddresses(vaultList - .filter((vault) => vault.dAssetsType !== "DASSETS") - .map((vault) => vault.vaultAddress && vault.vaultAddress.trim()) - .filter(i => i)) - - const tokensAndOwners = [] - const underlyings = await api.multiCall({ abi: 'address:underlying', calls: uniqueVaults }) - const underlyingMap = uniqueVaults.reduce((acc, v, i) => { - acc[v] = underlyings[i] - return acc - }, {}) - const pairs = await api.multiCall({ abi: 'address:pair', calls: uniqueVaults, permitFailure: true, }) - const maybeIsSingle = uniqueVaults.filter((v, i) => { - if (!pairs[i]) return true - tokensAndOwners.push([pairs[i], underlyingMap[v]]) - }) - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: maybeIsSingle, permitFailure: true, }) - maybeIsSingle.forEach((v, i) => { - if (!tokens[i]) return; - tokensAndOwners.push([tokens[i], underlyingMap[v]]) - }) - - await getEBCakeTvl(api) - return sumTokens2({ tokensAndOwners, api, resolveLP: true, blacklistedTokens: [DUET]}) -} - -module.exports = { - bsc: { tvl: bscTvl, staking: staking('0x29fd5bdca277eb5b8c31314e259c7feabd1badd4', DUET) }, - arbitrum: { tvl: arbitrumTvl } -} \ No newline at end of file diff --git a/projects/dummy.js b/projects/dummy.js deleted file mode 100644 index 3b02ec9a804..00000000000 --- a/projects/dummy.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = { -} \ No newline at end of file diff --git a/projects/dunes/index.js b/projects/dunes/index.js deleted file mode 100644 index 628a2e924d1..00000000000 --- a/projects/dunes/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const DETH_DEPOSIT_POOL = "0x8a1229eDB53f55Bb09D472aFc95D12154590108E"; -const DUSD_DEPOSIT_POOL = "0x634598473B91a6870c1DB151142db0b61C5de8CC"; - -async function tvl(api) { - const res = await api.multiCall({ abi: 'function getTotalDeposits() external view returns (address[], uint256[])', calls: [DETH_DEPOSIT_POOL, DUSD_DEPOSIT_POOL] }) - res.forEach(i => api.add(...i)) -} - -module.exports = { - doublecounted: true, - methodology: - "Deposited assets (LSTs, LRTs, stables, Pendle tokens, Karak tokens, etc.) in deposit pools", - ethereum: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/duneswap.js b/projects/duneswap.js deleted file mode 100644 index 7888adc96fe..00000000000 --- a/projects/duneswap.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -module.exports = { - oasis: { - tvl: getUniTVL({ factory: '0x9dd422B52618f4eDD13E08c840f2b6835F3C0585', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/dungeonswap/index.js b/projects/dungeonswap/index.js deleted file mode 100644 index 7df5bf08716..00000000000 --- a/projects/dungeonswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'bsc', - masterchef: '0x3720F1F9a02BFB4dD6afb9030eB826B4392D321F', - nativeToken: '0x14c358b573a4ce45364a3dbd84bbb4dae87af034' -}) \ No newline at end of file diff --git a/projects/dusa/index.js b/projects/dusa/index.js deleted file mode 100644 index 8729b65d470..00000000000 --- a/projects/dusa/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { queryKey, u8ArrayToString, getTokenBalances, } = require('../helper/chain/massa.js'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const factoryAddress = 'AS1rahehbQkvtynTomfoeLmwRgymJYgktGv5xd1jybRtiJMdu8XX' - -const getPairAddress = async (factoryAddress) => { - const transform = val => { - let poolAddresses = u8ArrayToString(val) - if (poolAddresses.startsWith(":")) - poolAddresses = poolAddresses.substring(1); - - const pools = poolAddresses.split(":"); - return pools - } - return (await queryKey([factoryAddress], "ALL_PAIRS", transform))[0] -} - -async function tvl(api) { - const pools = await getPairAddress(factoryAddress) - const tokenXs = await queryKey(pools, "TOKEN_X") - const tokenYs = await queryKey(pools, "TOKEN_Y") - const tokenXBalances = await getTokenBalances(tokenXs, pools) - const tokenYBalances = await getTokenBalances(tokenYs, pools) - api.add(tokenXs, tokenXBalances) - api.add(tokenYs, tokenYBalances) - return sumTokens2({ api }) -} - -module.exports = { - timetravel: false, - massa: { tvl, } -}; - diff --git a/projects/dvol/index.js b/projects/dvol/index.js deleted file mode 100644 index e149e861170..00000000000 --- a/projects/dvol/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const sdk = require('@defillama/sdk') - -const vaults = { - bsc: [ - '0x54781C6aa884297369A55A79eF7Fd1FD7B3bBD32', - '0x6652f1B0531C4C75B523e74BCf5D0CD009b7BBB8', - '0xC6553F147D418dFe3745EBa56514de13feF67eA2' - ], - arbitrum: [ - '0xce2C993406E86e0efd7D74A83a9fEfdB35bBE05c', - '0x37874743E42684dfE7beF6a345C8426402538688' - ] -} - -const abi = { - "existingVaultAmount": "uint256:existingVaultAmount", - "existingVaultIds": "function existingVaultIds(uint256 index) view returns (uint256)", - "idVaultInfoMap": "function idVaultInfoMap(uint256 id) view returns (uint256 id, address depositToken, uint256 maxVaultCapacity, uint256 minVaultLimit, uint256 saleStartTime, uint256 saleEndTime, uint256 termStartTime, uint256 termEndTime, address organization, address transferSigner)", - "idVaultStateMap": "function idVaultStateMap(uint256 id) view returns (address lpTokenContract, uint256 soldAmount, bool hasTransferred, bool hasSettled)" -} - -let vaultsTvls = {} - -async function getVaultsTvl(api) { - let key = api.chain + '_' + api.block - if (!vaultsTvls[key]) - vaultsTvls[key] = vaultsTvlFn(api) - - return vaultsTvls[key] -} - -async function vaultsTvlFn(api) { - const borrowApi = new sdk.ChainApi({ chain: api.chain, block: api.block }) - const ownerTokens = [] - for (const target of vaults[api.chain]) { - const ids = await api.fetchList({ lengthAbi: abi.existingVaultAmount, itemAbi: abi.existingVaultIds, target }) - const tokens = (await api.multiCall({ abi: abi.idVaultInfoMap, calls: ids, target })).map(i => i.depositToken) - const soldAmounts = (await api.multiCall({ abi: abi.idVaultStateMap, calls: ids, target })).map(i => i.soldAmount) - borrowApi.addTokens(tokens, soldAmounts) - ownerTokens.push([tokens, target]) - } - - await api.sumTokens({ ownerTokens }) - const tvlBalances = api.getBalances() - Object.entries(tvlBalances).forEach(b => borrowApi.addToken(b[0], b[1] * -1, { skipChain: true })) - return { - tvl: tvlBalances, - borrowed: borrowApi.getBalances(), - } -} - -async function tvl(api) { - return (await getVaultsTvl(api)).tvl -} - -async function borrowed(api) { - return (await getVaultsTvl(api)).borrowed -} - -module.exports = { - timetravel: false, - deadFrom: '2025-09-21', - bsc: { - tvl, borrowed, - }, - arbitrum: { - tvl, borrowed, - } -} diff --git a/projects/dx25/index.js b/projects/dx25/index.js deleted file mode 100644 index 48c8e9141d5..00000000000 --- a/projects/dx25/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - timetravel: false, - elrond: { - tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqqc6w62sshakjk38lunc8w6f5m7rujkdgaehsdszqrg',}), - }, -}; \ No newline at end of file diff --git a/projects/dxsale/abis.js b/projects/dxsale/abis.js deleted file mode 100644 index 8e782608a38..00000000000 --- a/projects/dxsale/abis.js +++ /dev/null @@ -1,15 +0,0 @@ -const getStorageLPLockDataV33 ='function AllLockRecord(uint256) view returns (uint256 createdOn, address lockOwner, address lockedLPTokens, uint256 lockTime, address lpLockContract, bool locked, string logo, uint256 lockedAmount, uint256 countID, bool exists, address token0Addr, address token1Addr)' -const getStorageLockCountV33 = "uint256:lockerIDCount"; -const getLockCountPerContractV3 = "uint256:lockerNumberOpen" -const getLockerWalletWithIdV3 = 'function LockerRecord(uint256) view returns (address)'; -const getLockerLPDataV3 = 'function DXLOCKERLP(address, uint256) view returns (bool exists, bool locked, string logo, uint256 lockedAmount, uint256 lockedTime, uint256 startTime, address lpAddress)'; -const getLockerPerWalletV3 = 'function UserLockerCount(address) view returns (uint256)'; - -module.exports = { - getStorageLPLockDataV33, - getLockCountPerContractV3, - getLockerPerWalletV3, - getLockerWalletWithIdV3, - getLockerLPDataV3, - getStorageLockCountV33, -}; diff --git a/projects/dxsale/api.js b/projects/dxsale/api.js deleted file mode 100644 index e9a575e9f3d..00000000000 --- a/projects/dxsale/api.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./index') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - -module.exports = { - hallmarks: [ - // ['2023-03-13', 'Fixed bug that inflated tvl'], -], - timetravel: false, - misrepresentedTokens: true, - ...getExports("dxsale", chainKeys), -} diff --git a/projects/dxsale/apiCache.js b/projects/dxsale/apiCache.js deleted file mode 100644 index 1e147f2689c..00000000000 --- a/projects/dxsale/apiCache.js +++ /dev/null @@ -1,141 +0,0 @@ -const sdk = require("@defillama/sdk"); -const config = require("./config"); -const { - getStorageLPLockDataV33, - getLockCountPerContractV3, - getLockerPerWalletV3, - getLockerWalletWithIdV3, - getLockerLPDataV3, - getStorageLockCountV33, -} = require("./abis"); -const { getCache, setCache, } = require("../helper/cache") -const { vestingHelper, sumUnknownTokens, } = require("../helper/unknownTokens") - -const project = 'bulky/dxsale' - -function getTVLTotal(args) { - return async (timestamp, ethBlock, chainBlocks) => { - let balances = {}; - const chain = args.chain; - const block = chainBlocks[chain]; - const cache = await getCache(project, chain) || {} - if (!cache.v3LPData) cache.v3LPData = [] - if (!cache.lockContracts) cache.lockContracts = {} - - await addV3Lps() - - //Get Locks from Archives - for (const lock of args.locks) - await addlockLPs(lock) - - await setCache(project, chain, cache) - return balances; - - async function addlockLPs(lockContract) { - if (!cache.lockContracts[lockContract]) cache.lockContracts[lockContract] = { walletIds: [], tokens: [], walletConfig: {} } - const cCache = cache.lockContracts[lockContract] - const wCache = cCache.walletConfig - const walletIdSet = new Set() - cCache.walletIds.forEach(i => walletIdSet.add(i.toLowerCase())) - //Get Amount of Locks on Contract - const { output: totalLocks } = await sdk.api.abi.call({ - target: lockContract, - abi: getLockCountPerContractV3, - chain, - block, - }); - - const walletIdCalls = [] - let j = cCache.lastTotalLocks || 0 - cCache.lastTotalLocks = +totalLocks - for (; j < +totalLocks; j++) - walletIdCalls.push({ params: [j] }) - const { output: walletIdsAll } = await sdk.api.abi.multiCall({ - target: lockContract, - abi: getLockerWalletWithIdV3, - calls: walletIdCalls, - chain, block, - }) - - walletIdsAll.forEach(({ output }) => walletIdSet.add(output.toLowerCase())) - - cCache.walletIds = [...walletIdSet] - const walletLockCountCalls = cCache.walletIds.map(i => ({ params: i })) - const { output: countRes } = await sdk.api.abi.multiCall({ - target: lockContract, - abi: getLockerPerWalletV3, - calls: walletLockCountCalls, - chain, block, - }) - - const calls = [] - cCache.walletIds.forEach((wallet, i) => { - if (!wCache[wallet]) wCache[wallet] = {} - let j = wCache[wallet].lastCount || 0 - cCache.lastCount = +countRes[i].output - for (; j < +countRes[i].output; j++) - calls.push({ params: [wallet, j] }) - }) - - const { output: returnFromDataStruct } = await sdk.api.abi.multiCall({ - target: lockContract, - abi: getLockerLPDataV3, - calls, chain, block, - }) - - const tokenSet = new Set() - cCache.tokens.forEach(i => tokenSet.add(i.toLowerCase())) - - returnFromDataStruct.forEach(({ output, success }) => { - if (!success || !output.lpAddress) return; - tokenSet.add(output.lpAddress.toLowerCase()) - }) - cCache.tokens = [...tokenSet] - const tempBalances = await vestingHelper({ cache, useDefaultCoreAssets: true, owner: lockContract, tokens: cCache.tokens, chain, block, }) - - Object.entries(tempBalances).forEach(([token, bal]) => sdk.util.sumSingleBalance(balances, token, bal)) - } - - async function addV3Lps() { - //Get Liquidity Locks new from storage - if (!cache.v3Contracts) cache.v3Contracts = {} - - for (let i = 0; i < args.storageLiquidityLocks.length; i++) { - const contract = args.storageLiquidityLocks[i] - if (!cache.v3Contracts[contract]) cache.v3Contracts[contract] = {} - const cCache = cache.v3Contracts[contract] - //Get Amount of Locks on Contract - const { output: totalLocks } = await sdk.api.abi.call({ - target: contract, - abi: getStorageLockCountV33, - chain, - block, - }) - - const calls = [] - let j = cCache.lastTotalLocks || 0 - cCache.lastTotalLocks = +totalLocks - for (; j < +totalLocks; j++) - calls.push({ params: [j] }) - - const { output: lpData } = await sdk.api.abi.multiCall({ - target: contract, - abi: getStorageLPLockDataV33, - calls, chain, block, - }) - - lpData.forEach(({ output: { lockedLPTokens, lpLockContract } }) => cache.v3LPData.push([lockedLPTokens, lpLockContract])) - } - - const tempBalances = await sumUnknownTokens({ chain, block, tokensAndOwners: cache.v3LPData, useDefaultCoreAssets: true, cache, }) - - Object.entries(tempBalances).forEach(([token, bal]) => sdk.util.sumSingleBalance(balances, token, bal)) - } - }; -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: getTVLTotal(config[chain]) } -}) - -module.exports.dexit.tvl = () => ({}) diff --git a/projects/dxsale/config.js b/projects/dxsale/config.js deleted file mode 100644 index 5c0e2760f3f..00000000000 --- a/projects/dxsale/config.js +++ /dev/null @@ -1,133 +0,0 @@ -const LockersV3 = { - bsc: [ - "0xEb3a9C56d963b971d320f889bE2fb8B59853e449", - "0x8655E5c4D701186D16765d1CDcef6D5287E4679a", - "0x5b5e94485c9628793B01A38762921Dc37B6829b6", - // "0x2D045410f002A95EFcEE67759A92518fA3FcE677", - // "0x81E0eF68e103Ee65002d3Cf766240eD1c070334d", - ], - ethereum: [ - "0x1Ba00C14F9E8D1113028a14507F1394Dc9310fbD", - "0xe74083baFE69cd74519C6a40a3Ad0723BD360BDD", - "0xc68C522682614A9F1D336f756c0C0D71352925D3", - // "0x916a8C33B784f6399Ce8b7aff59d4AAD29386B8E", - // "0xBae21D4247dd3818f720ab4210C095E84e980D96", - ], - arbitrum: [ - "0x51f411d40641475576622c8fba77F1e917e96Df4", - // "0xdf17aC098Fa81373625e102061844C02ECCEc645", - ], - celo: [ - "0xC7065e692D2caCF7173C7BC08c6849eb9Ef48b38", - // "0xdf17aC098Fa81373625e102061844C02ECCEc645", - ], - kcc: [ - // "0x3052b62d39624f341D44b195D2E4b865f074B656", - "0xd5071536d1A2AfF6dB130917B4c1FA7b8Daf47ff", - "0x1C8aB27b538b5e43c151460cBc6D271cB9EeE4aF", - "0x020B4f43BD0fb82cFe9427F81E0E5FCCE433f3f5", - ], - harmony: [ - "0xd5F1593D585cbAC2d5bCae2dbae4fc159375C6dD", - "0xB3C0Bc5D284c9f01a0d4c4eab8546D4D124612cD", - "0x4B170Bb56032Ca068fF0Ee03943a9B9bc1554C9A", - // "0xadC5caC1E3CD46Fe8d5b98DB4Ea6eE241a19dCEE", - // "0x13455DeE5199691f11ffBb4AAf59Af56F23b95aE", - ], - avax: [ - "0x69275e94cC431e380EebCbda6FB8e19f931cD359", - "0x77D054b8e61A141CE51fc9Cc3E9E2C3B79F57809", - // "0xadC5caC1E3CD46Fe8d5b98DB4Ea6eE241a19dCEE", - // "0x10f485B855bE8E7D377fbE60E5D5676d88817b95", - ], - xdai: [ - // "0x77D054b8e61A141CE51fc9Cc3E9E2C3B79F57809", - "0x832CcF861059Cb352515E89Cc54F1b13C6620D37", - "0xeA8d06F70E1a5BD1Bf6cE927e62C8E370f5aAfC1", - // "0x63d20Bf9Aa36b8bE580b19B024dD8b62a9f11F3b", - // "0x554d523a54471F12dDE2152A7F33E159404d199e", - ], - fantom: [ - "0x318Aa10323Bb8DDD163AdB61F0C54Cfa85b4132e", - "0xc1E3f48e23D899A326C31df6A2850457F50710F8", - "0x832CcF861059Cb352515E89Cc54F1b13C6620D37", - // "0x1C8aB27b538b5e43c151460cBc6D271cB9EeE4aF", - // "0xb5566a206a89bd9C004230e6F6ac7335C77043cd", - ], - polygon: [ - "0xEb3a9C56d963b971d320f889bE2fb8B59853e449", - "0x6FCC2e4Efb4E05DdfC2154AbE209356d5A687666", - "0x036063706396Ad5Dc49241451E955fbE05899cDe", - // "0x2D045410f002A95EFcEE67759A92518fA3FcE677", - // "0xb5566a206a89bd9C004230e6F6ac7335C77043cd", - ], -}; - -const defaultConfig = { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], -} - -const defaultConfig2 = { - tokenStorage: ["0x17e8c87d4de42fc143507B7c45Da2e6F2af7F24F"], - lpStorage: ["0x0dDdD88aff5b7082BEf86923cf19BAd1ffb4EC8C"], -} - -const LockerV33 = { - bsc: defaultConfig, - ethereum: defaultConfig, - arbitrum: defaultConfig, - celo: defaultConfig, - kcc: defaultConfig, - harmony: defaultConfig, - avax: defaultConfig, - xdai: defaultConfig, - fantom: defaultConfig, - polygon: defaultConfig, - okexchain: defaultConfig, - cronos: defaultConfig, - moonriver: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: [], - }, - // heco: defaultConfig, - smartbch: defaultConfig, - milkomeda: { - // tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - // lpStorage: ["0x6E573D464416a81A9F82207F1dFD6a42e4b21066"], - }, - // bitgert: { - // tokenStorage: ["0x5AB541B972Acab91f0E5E7d30fCB4fe8e81b9Fa7"], - // lpStorage: ["0x16AAF57c5b3170a143A6A2DDfe897e8a2bDd8FD1"], - // }, - dexit: defaultConfig2, - core: defaultConfig2, - dogechain: defaultConfig2, - base: { - tokenStorage: ["0x0dDdD88aff5b7082BEf86923cf19BAd1ffb4EC8C"], - lpStorage: ["0x17e8c87d4de42fc143507B7c45Da2e6F2af7F24F"], - }, - omax: defaultConfig2, - pulse: { - tokenStorage: ["0x130628897d594630D421962A00fF1cBacE82952A"], - lpStorage: ["0x006d38268d5d503F3fc2621b44e7fEDe8AFd004f"], - }, - era: { - tokenStorage: ["0x1Ba5427BB3256b4511064eB0086E9418eC032618"], - lpStorage: ["0x12E0ebe89e86F5bfFa41b5BC22EDC079c0ff683a"], - }, -}; - -const config = {} - -Object.keys(LockerV33).forEach(chain => { - config[chain] = { - chain, - locks: LockersV3[chain] ?? [], - storageTokenLocks: LockerV33[chain].tokenStorage, - storageLiquidityLocks: LockerV33[chain].lpStorage, - } -}) - - -module.exports = config diff --git a/projects/dxsale/index.js b/projects/dxsale/index.js deleted file mode 100644 index 15ace9cdef4..00000000000 --- a/projects/dxsale/index.js +++ /dev/null @@ -1,114 +0,0 @@ -const sdk = require("@defillama/sdk"); -const config = require("./config"); -const { - getStorageLPLockDataV33, - getLockCountPerContractV3, - getLockerPerWalletV3, - getLockerWalletWithIdV3, - getLockerLPDataV3, - getStorageLockCountV33, -} = require("./abis"); -const { sumUnknownTokens, vestingHelper, } = require("../helper/unknownTokens"); -const { createIncrementArray, } = require("../helper/utils"); - -function getTVLTotal(args) { - return async (timestamp, ethBlock, chainBlocks) => { - let balances = {}; - const chain = args.chain; - const block = chainBlocks[chain]; - - const tokensAndOwners = [] - - await addV3Lps() - - //Get Locks from Archives - for (const lock of args.locks) - await addlockLPs(lock) - - return balances; - - async function addlockLPs(lockContract) { - const walletIdSet = new Set() - //Get Amount of Locks on Contract - const { output: totalLocks } = await sdk.api.abi.call({ - target: lockContract, - abi: getLockCountPerContractV3, - chain, - block, - }); - const walletIdCalls = createIncrementArray(totalLocks).map(i => ({ params: [i] })) - const { output: walletIdsAll } = await sdk.api.abi.multiCall({ - target: lockContract, - abi: getLockerWalletWithIdV3, - calls: walletIdCalls, - chain, block, - }) - - walletIdsAll.forEach(({ output }) => walletIdSet.add(output)) - - const walletIds = [...walletIdSet] - const walletLockCountCalls = walletIds.map(i => ({ params: i })) - const { output: countRes } = await sdk.api.abi.multiCall({ - target: lockContract, - abi: getLockerPerWalletV3, - calls: walletLockCountCalls, - chain, block, - }) - - const calls = walletIds.map((wallet, i) => { - return createIncrementArray(countRes[i].output).map(j => ({ params: [wallet, j] })) - }).flat() - - const { output: returnFromDataStruct } = await sdk.api.abi.multiCall({ - target: lockContract, - abi: getLockerLPDataV3, - calls, chain, block, - }) - - const tokenSet = new Set() - - returnFromDataStruct.forEach(({ output, success }) => { - if (!success || !output.lpAddress) return; - tokenSet.add(output.lpAddress) - }) - - const tempBalances = await vestingHelper({ useDefaultCoreAssets: true, owner: lockContract, tokens: [...tokenSet], chain, block, }) - - Object.entries(tempBalances).forEach(([token, bal]) => sdk.util.sumSingleBalance(balances, token, bal)) - } - - async function addV3Lps() { - //Get Liquidity Locks new from storage - for (let i = 0; i < args.storageLiquidityLocks.length; i++) { - //Get Amount of Locks on Contract - const { output: totalLocks } = await sdk.api.abi.call({ - target: args.storageLiquidityLocks[i], - abi: getStorageLockCountV33, - chain, - block, - }) - - const calls = createIncrementArray(totalLocks).map(i => ({ params: [i] })) - const { output: lpData } = await sdk.api.abi.multiCall({ - target: args.storageLiquidityLocks[i], - abi: getStorageLPLockDataV33, - calls, - chain, block, - }) - - lpData.forEach(({ output: { lockedLPTokens, lpLockContract } }) => tokensAndOwners.push([lockedLPTokens, lpLockContract])) - } - - const tempBalances = await sumUnknownTokens({ chain, block, tokensAndOwners, useDefaultCoreAssets: true, }) - - Object.entries(tempBalances).forEach(([token, bal]) => sdk.util.sumSingleBalance(balances, token, bal)) - } - }; -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: getTVLTotal(config[chain]) } -}) - -module.exports.dexit.tvl = () => ({}) -module.exports.milkomeda.tvl = () => ({}) \ No newline at end of file diff --git a/projects/dyad/index.js b/projects/dyad/index.js deleted file mode 100644 index 71d6cfa51b9..00000000000 --- a/projects/dyad/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const vaults = [ - "0x7aE80418051b2897729Cbdf388b07C5158C557A1", - "0x4fde0131694ae08c549118c595923ce0b42f8299", - "0x7e5f2b8f089a4cd27f5b6b846306020800df45bd", - // "0xf3768D6e78E65FC64b8F12ffc824452130BD5394", // Kerosene is own token - "0x3D72f7Fc3A9537e1fcC6FBF91AF55CcF2c5C4ed0", - "0x3FC5c0e19b6287f25EB271c2E8e7Ba898FE7ab29", - "0x5B74DD13D4136443A7831fB7AD139BA123B5071B", - "0xB58d87dD30a67823acC4b9Fa533F464CdEdA737E", -] - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - return api.sumTokens({ tokensAndOwners2: [tokens, vaults] }) -} - -module.exports = { - ethereum: { - tvl, - }, -} diff --git a/projects/dydx-v4/index.js b/projects/dydx-v4/index.js deleted file mode 100644 index f0d9dc205aa..00000000000 --- a/projects/dydx-v4/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { get } = require("../helper/http"); - -async function tvl(){ - const data = await get("https://dydx-ops-rest.kingnodes.com/cosmos/bank/v1beta1/supply/by_denom?denom=ibc%2F8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5") - return { - "usd-coin": data.amount.amount/1e6 - } -} - -module.exports={ - hallmarks: [ - [1731974400,"dYdX Unlimited launch"] - ], - dydx:{ - tvl - } -} \ No newline at end of file diff --git a/projects/dydx/index.js b/projects/dydx/index.js deleted file mode 100644 index f91de5943ca..00000000000 --- a/projects/dydx/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - const sdk = require('@defillama/sdk'); - - const contracts = [ - '0x5199071825CC1d6cd019B0D7D42B08106f6CF16D', - '0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e', - '0xD54f502e184B6B739d7D27a6410a67dc462D69c8' - ]; - - const tokens = [ - ADDRESSES.ethereum.SAI, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI - ]; - - async function tvl (timestamp, block) { - const balances = {}; - - let balanceOfCalls = []; - contracts.forEach((contract) => { - balanceOfCalls = [ - ...balanceOfCalls, - ...tokens.map((token) => ({ - target: token, - params: contract - })) - ]; - }); - - const balanceOfResult = (await sdk.api.abi.multiCall({ - block, - calls: balanceOfCalls, - abi: 'erc20:balanceOf', - })); - - sdk.util.sumMultiBalanceOf(balances, balanceOfResult, true) - - return balances; - } - - module.exports = { - start: '2018-09-29', // 09/29/2018 @ 12:00am (UTC) - ethereum: { tvl }, - hallmarks:[ - [1627960574, "dydx token"], - ] - }; diff --git a/projects/dymension-dex.js b/projects/dymension-dex.js deleted file mode 100644 index f4908ffbef7..00000000000 --- a/projects/dymension-dex.js +++ /dev/null @@ -1,14 +0,0 @@ -async function tvl(api) { - const pools = await fetch("https://fetchnetworkdatarequest-xqbg2swtrq-uc.a.run.app/?networkId=dymension_1100-1&dataType=pools").then(r=>r.json()) - pools.forEach(pool => { - const dymAsset = pool.poolAssets.find(a => a && a.token && a.token.denom === "adym") - if (!dymAsset) return - const amount = Number(dymAsset.token.amount /1e18) - api.addCGToken("dymension", amount * 2) - }) -} - -module.exports = { - methodology: 'Liquidity in DEX', - dymension:{ tvl } -} diff --git a/projects/dynastyswap-xyz/index.js b/projects/dynastyswap-xyz/index.js deleted file mode 100644 index 067434d2e3c..00000000000 --- a/projects/dynastyswap-xyz/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - pulse: { - tvl: getUniTVL({ factory: '0x7abcEc2e35505aF1720431A6c414067717342B1F', useDefaultCoreAssets: true, }), - }, -}; // node test.js projects/pulsex/index.js \ No newline at end of file diff --git a/projects/dyorswap/index.js b/projects/dyorswap/index.js deleted file mode 100644 index 562ea794051..00000000000 --- a/projects/dyorswap/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") - -const config = { - mode: '0xE470699f6D0384E3eA68F1144E41d22C6c8fdEEf', - blast: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', - merlin: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', - zeta: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', - degen: '0x2CcaDb1e437AA9cDc741574bDa154686B1F04C09', - xlayer: '0x2ccadb1e437aa9cdc741574bda154686b1f04c09', - bob: '0x2CcaDb1e437AA9cDc741574bDa154686B1F04C09', - ink: '0x6c86ab200661512fDBd27Da4Bb87dF15609A2806', - sonic: '0xd8863d794520285185197F97215c8B8AD04E8815', - soneium: '0x4f0c1b4c6FdF983f2d385Cf24DcbC8c68f345E40', - unichain: '0x6c86ab200661512fDBd27Da4Bb87dF15609A2806', - plasma: '0xA9F2c3E18E22F19E6c2ceF49A88c79bcE5b482Ac', -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true }), - } -}) \ No newline at end of file diff --git a/projects/dypius/index.js b/projects/dypius/index.js deleted file mode 100644 index 9cd2927a130..00000000000 --- a/projects/dypius/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const stakingContractsBSC = [ - // stakingContract1 = -"0x8cee06119fffecdd560ee83b26cccfe8e2fe6603", - -]; - -const stakingContractsETH = [ - // stakingContract1 = - "0xC9075092Cc46E176B1F3c0D0EB8223F1e46555B0", - ]; - -const stakingContractsAVAX = [ - // stakingContract1 = - "0x8cee06119fffecdd560ee83b26cccfe8e2fe6603", - -]; - -const DYP_ETH = "0x39b46b212bdf15b42b166779b9d1787a68b9d0c3"; -const DYP_BNB_AVAX = "0x1a3264F2e7b1CFC6220ec9348d33cCF02Af7aaa4" -module.exports = { - misrepresentedTokens: true, - bsc: { - staking: stakings(stakingContractsBSC, DYP_BNB_AVAX), - tvl: (async) => ({}), - }, - ethereum: { - staking: stakings(stakingContractsETH, DYP_ETH), - tvl: (async) => ({}), - }, - avax: { - staking: stakings(stakingContractsAVAX, DYP_BNB_AVAX), - tvl: (async) => ({}), - }, - - methodology: "Counts liquidity on the DYP staking contracts", - -}; \ No newline at end of file diff --git a/projects/dyson-money/index.js b/projects/dyson-money/index.js deleted file mode 100644 index 6d600f37fa3..00000000000 --- a/projects/dyson-money/index.js +++ /dev/null @@ -1,88 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') -const { sumTokens2 } = require('../helper/unwrapLPs'); -const utils = require('../helper/utils'); -const { toUSDTBalances } = require('../helper/balances'); - - -const TVL_URL = 'https://api2.dyson.money/vaults/metrics/tvl'; - -const sphere_token = "0x62F594339830b90AE4C084aE7D223fFAFd9658A7" -const ylSPHEREvault = "0x4Af613f297ab00361D516454E5E46bc895889653" - - -let TVL_byNetwork; - -async function polygonTvl(timestamp, block, chainBlocks) { - let balances = {}; - - // add tokens in ylSPHERE vault - await sumTokens2({ - balances, - owners: [ylSPHEREvault], - tokens: [ - ADDRESSES.polygon.WMATIC_2, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.WBTC, - "0x172370d5Cd63279eFa6d502DAB29171933a610AF" - ], - chain: 'polygon', - block: chainBlocks.polygon - }) - - // calculate TVL for polygon from API - const polygon_tvl = await fetchNetworkTVL('polygon')(); - for (const [token, balance] of Object.entries(polygon_tvl)) { - balances[token] = (balances[token] || 0) + balance - } - return balances; -} - -function fetchNetworkTVL(network) { - return async () => { - try { - if(!TVL_byNetwork) TVL_byNetwork = utils.fetchURL(`${TVL_URL}`).then(response => response.data); - - const response = await TVL_byNetwork; - const total = Number(response[network].total); // all numeric values on the API are stored as string for precision - - if(!total) return {} - - return toUSDTBalances(total); - } catch(e) { - console.error(`There was an error trying to fetch 'dyson-money' TVL on network - ${network}. Exited with error: ${e}`); - return {}; - } - } -} - - - -module.exports = { - doublecounted: true, - methodology: "Counts the tokens locked in the contracts.", - polygon: { - tvl: polygonTvl, - staking: staking(ylSPHEREvault, sphere_token) - }, - optimism: { - tvl: fetchNetworkTVL('optimism'), - }, - arbitrum: { - tvl: fetchNetworkTVL('arbitrum'), - }, - bsc: { - tvl: fetchNetworkTVL('binance') - }, - avax: { - tvl: fetchNetworkTVL('avalanche') - }, - kava: { - tvl: fetchNetworkTVL('kava'), - }, - base: { - tvl: fetchNetworkTVL('base'), - }, -}; diff --git a/projects/dyson/index.js b/projects/dyson/index.js deleted file mode 100644 index b9b85e68464..00000000000 --- a/projects/dyson/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const config = { - linea: '0xecD30C099c222AbffDaf3E2A3d2455FC8e8c739E', - polygon_zkevm: '0x51a0d4b81400581d8722627dafcd0c1ff9357d1d', - blast: '0x51a0d4b81400581d8722627dafcd0c1ff9357d1d', -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - // get reserves call fails - tvl: getUniTVL({ factory: config[chain], fetchBalances: true, useDefaultCoreAssets: true }) - } -}) diff --git a/projects/dystopia/index.js b/projects/dystopia/index.js deleted file mode 100644 index fcce6568b2d..00000000000 --- a/projects/dystopia/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - polygon:{ - tvl: getUniTVL({ - factory: '0x1d21Db6cde1b18c7E47B0F7F42f4b3F68b9beeC9', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - }, -} - diff --git a/projects/eaglefi/index.js b/projects/eaglefi/index.js deleted file mode 100644 index a5b957b58f3..00000000000 --- a/projects/eaglefi/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const { queryKey, getAddresssDataStoreKeys, bytesToStr, bytesToBigInt } = require('../helper/chain/massa.js'); -const { sumTokens2 } = require('../helper/unwrapLPs.js'); - - -const registryAddress = "AS1NYihs2Wy4D4P68JGY2hYSDDaqZ5YxhM2nDRsJVFZUykEEdSAW"; - - -async function getAllPoolsAddresses(registryAddress) { - - const registryKeys = await getAddresssDataStoreKeys(registryAddress, "", true); - const poolsAddresses = []; - - const transform = val => { - const arg = new Uint8Array(val); - - const start_offset = 4; - let end_offset = start_offset + 62; - const p = arg.slice(start_offset, end_offset); - let poolAddressPlus = bytesToStr(p); - poolAddressPlus = "AS" + poolAddressPlus.split("AS")[1]; - const poolAddress = poolAddressPlus.slice(0, poolAddressPlus.length - 1); - - return poolAddress; - } - - for (const serializedKey of registryKeys) { - const key = bytesToStr(serializedKey); - - if (!key.startsWith("pools")) { - continue; - } - - // Query that key to get the pools address - let poolAddress = await queryKey([registryAddress], key, transform); - poolsAddresses.push(poolAddress.toString()); - } - - - return poolsAddresses; -} - - -async function tvl( - api -) { - const poolsAddresses = await getAllPoolsAddresses(registryAddress); - - - for (const poolAddress of poolsAddresses) { - const aReserve = await queryKey([poolAddress], "aTokenReserve", val => bytesToBigInt(val)); - const bReserve = await queryKey([poolAddress], "bTokenReserve", val => bytesToBigInt(val)); - - const aToken = await queryKey([poolAddress], "tokenA"); - const bToken = await queryKey([poolAddress], "tokenB"); - - api.add(aToken, aReserve) - api.add(bToken, bReserve) - } - - return sumTokens2({ api }) -} - -module.exports = { - timetravel: false, - massa: { tvl, } -}; \ No newline at end of file diff --git a/projects/earlyfans/index.js b/projects/earlyfans/index.js deleted file mode 100644 index ebed47cab71..00000000000 --- a/projects/earlyfans/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -const earlyfansV1contract = "0x4b17a9318238403ddac8E3a790C3b06D18132Bf4"; -const earlyTokenContract = "0x7135B32e9903BdB4e19a8b1D22fC2038964B8451"; -const earlyfansV2promisesContract = "0x169BC25B709f05c69daE264487cd84Be526AFb9a"; -const earlyfansV2bribesContract = "0x55BcC767F4ADD89BB7C316C560701A0a331DF746" - -async function tvl(api) { - return sumTokens2({ tokens: [ADDRESSES.null], owners: [earlyfansV1contract, earlyfansV2promisesContract, earlyfansV2bribesContract], api }); -} - -module.exports = { - methodology: `TVL counts the EARLY on ${earlyTokenContract} and ETH on ${earlyfansV1contract}, ${earlyfansV2promisesContract} and ${earlyfansV2bribesContract}.`, - blast: { - tvl, - staking: staking(earlyfansV1contract, earlyTokenContract) // early token - }, -}; diff --git a/projects/earn-powercity-io/index.js b/projects/earn-powercity-io/index.js deleted file mode 100644 index 38729ca6d9a..00000000000 --- a/projects/earn-powercity-io/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLiquityTvl } = require("../helper/liquity.js"); -const { sumTokensExport } = require("../helper/unknownTokens.js"); - -// TroveManager holds total system collateral (deposited PLSX) -const TROVE_MANAGER_ADDRESS = "0x118b7CF595F6476a18538EAF4Fbecbf594338B39"; -const PLSX_ADDRESS = ADDRESSES.pulse.PLSX; - -// Staking holds LQTY tokens and receive share of protocol revenue -const STAKING_ADDRESS = "0xd92DF13b6cd9eA8fc116b1865D2d72Be41d74B1a"; -const EARN_ADDRESS = "0xb513038BbFdF9D40B676F41606f4F61D4b02c4A2"; - -const PXDC_FARMING_ADDRESS = "0x5D8C8A7ECee559Db722626B0E537aBcc1261aEb2"; -const LP_PXDC_PLSX_ADDRESS = "0xabb36512813194b12A82A319783dBB455652440A"; - -const EARN_FARMING_ADDRESS = "0x7655C30579564ec7d85aeda9eB36EE2B26FE6Cea"; -const LP_EARN_PLSX_ADDRESS = "0xed77CbbB80e5a5C3A1FE664419d6F690766b5913"; -const lps = [LP_PXDC_PLSX_ADDRESS, LP_EARN_PLSX_ADDRESS] - -module.exports = { - start: '2024-02-20', - methodology: "Total Value Locked includes all Troves, Stability Pool, Staking Pool and LP Farming Pools", - pulse: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS, { collateralToken: PLSX_ADDRESS }), - staking: sumTokensExport({ owner: STAKING_ADDRESS, tokens: [EARN_ADDRESS], lps, useDefaultCoreAssets: true, }), - pool2: sumTokensExport({ owners: [PXDC_FARMING_ADDRESS, EARN_FARMING_ADDRESS], tokens: lps, useDefaultCoreAssets: true, }), - } -} \ No newline at end of file diff --git a/projects/earnifty/index.js b/projects/earnifty/index.js deleted file mode 100644 index cd90b90a9f7..00000000000 --- a/projects/earnifty/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const vaults = [ - "0xfdC1234D2a318a05D4fa1F0981472C298bfdDA3F", - "0xEdeD16a9bB3B1E372D443988F25EA46A6cDDC8E0", - "0x4dcd8F6550Bc87FfA8Ff62d9e69c7d1a4F8BFA91", - "0x3A3fD40b9261F52d32f30e582ABB9B117eFe8F92", - "0xd2765b08942e3Ef46c13b075B3b073123Dd5A45C", - "0x56369F3D8a9F4E16bf0a30C72AeCFF19384a8DE1", - "0xDE0da168023F408132a6e862c49768307338a4B9", - "0x7D8632c8eeBe0c907D1d2d12a5b1D02be06EC770", - "0x16cD4d58f255538b9883d333240fFBAAedF18a18", - "0x0C251D467E863530CC96f2AbfAC6e75e56c4580A", - "0x5b1Dc30d73A9dec605c37f65921cF7a817F7Fe83", - "0xc213ccc24af674E1aaFaeBf9cF515C3aFE9ADEd0", - "0xEEeEF0DaFA1C5666780586c07E044Ed22997f38B", - "0x84C29eaA54a4445CDd7b46942FF96A024e41C343", - "0x826f94E69ee4e857f1cFC32a88081763eF82691d", - "0x4B698efC9Ab09eA9C5236620A74714fD6064627d", - "0x230A4B30CF4B04C072018e0940f805644748530F", - "0x4e7904eDbc49048101d32B7411d45958Af707A96", -] - - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:want', calls: vaults }) - const bals = await api.multiCall({ abi: "uint256:balance", calls: vaults }) - api.add(tokens, bals) - return sumTokens2({ api, resolveLP: true}) -} - - -module.exports = { - misrepresentedTokens: true, - methodology: 'Count the token amount in each vault.', - velas: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/earnium/index.js b/projects/earnium/index.js deleted file mode 100644 index 0b6cc9fe060..00000000000 --- a/projects/earnium/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); -const contractAddress = "0x12169b6e1bf75ab1a2b2d987d20f8dd4c191e5dbc2066cb7e9af40b1fa7fb659" - -async function _getAllPools() { - return function_view({ functionStr: `${contractAddress}::liquidity_pool::pools`, type_arguments: [], args: [] }) -} - -async function _getPoolReserves(poolAddress) { - return function_view({ functionStr: `${contractAddress}::liquidity_pool::pool_reserves`, type_arguments: [], args: [poolAddress] }) -} - -async function _getOriginal(tokenAddress) { - return function_view({ functionStr: `${contractAddress}::coin_wrapper::get_original`, type_arguments: [], args: [tokenAddress] }) -} - -async function _getTokenOfPool(poolAddress) { - return function_view({ functionStr: `${contractAddress}::liquidity_pool::supported_inner_assets`, type_arguments: [], args: [poolAddress] }) -} - -async function _getTvl() { - const allPools = (await _getAllPools()) - const tokenTvlMap = new Map(); - const mapOriginal = new Map(); - - for (const pool of allPools) { - const poolAddress = pool.inner - const reserves = await _getPoolReserves(poolAddress); - const tokens = await _getTokenOfPool(poolAddress); - if (!reserves || !tokens || tokens.length < 2) { - console.warn(`Invalid data for pool ${poolAddress}`); - continue; - } - const reserveX = Number(reserves[0] || 0); - const reserveY = Number(reserves[1] || 0); - - let tokenX = tokens[0]; - if (mapOriginal.has(tokens[0].inner)) { - tokenX = { inner: mapOriginal.get(tokens[0].inner) }; - } else { - const originalX = await _getOriginal(tokens[0].inner); - mapOriginal.set(tokens[0].inner, originalX); - tokenX = { inner: originalX }; - } - - let tokenY = tokens[1]; - if (mapOriginal.has(tokens[1].inner)) { - tokenY = { inner: mapOriginal.get(tokens[1].inner) }; - } else { - const originalY = await _getOriginal(tokens[1].inner); - mapOriginal.set(tokens[1].inner, originalY); - tokenY = { inner: originalY }; - } - - tokenTvlMap.set(tokenX, (tokenTvlMap.get(tokenX) || 0) + reserveX); - tokenTvlMap.set(tokenY, (tokenTvlMap.get(tokenY) || 0) + reserveY); - } - return tokenTvlMap -} - -module.exports = { - timetravel: false, - methodology: - "Counts the total liquidity in all pools on Earnium.", - aptos: { - tvl: async (api) => { - const tokenTvlMap = await _getTvl() - for (const [key, value] of tokenTvlMap) { - api.add(key.inner, value) - } - } - } -} diff --git a/projects/earnmos/index.js b/projects/earnmos/index.js deleted file mode 100644 index 489281226d1..00000000000 --- a/projects/earnmos/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { get } = require('../helper/http') -const {toUSDTBalances} = require('../helper/balances') - -async function fetch(chainName) { - return 0 - // const {tvlMap} = await get('https://app.earnmos.fi/defi-llama/tvl-map'); - - // return toUSDTBalances(tvlMap[chainName]); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - evmos: { - tvl: fetch.bind(null, 'evmos') - }, - kava: { - tvl: fetch.bind(null, 'kava') - } -} diff --git a/projects/ease/index.js b/projects/ease/index.js deleted file mode 100644 index 266eca10814..00000000000 --- a/projects/ease/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { getConfig } = require('../helper/cache') - -const VAULT_LIST_URL = 'https://devapi.ease.org/api/v1/vaults'; -const EASE = "0xEa5eDef1287AfDF9Eb8A46f9773AbFc10820c61c"; -const NXM = "0xd7c49CEE7E9188cCa6AD8FF264C1DA2e69D4Cf3B"; -// const ARNXM_VAULT = "0x1337DEF1FC06783D4b03CB8C1Bf3EBf7D0593FC4"; -const STAKING_CONTRACTS = [ - //BRIBE_POT - "0xEA5EdeF17C9be57228389962ba50b98397f1E28C", - //GV_EASE - "0xEa5edeF1eDB2f47B9637c029A6aC3b80a7ae1550", -]; - -const ARNXM_VAULT = { - abis: { - aum: "uint256:aum", - }, - address: "0x1337DEF1FC06783D4b03CB8C1Bf3EBf7D0593FC4", -} - -async function tvl(api) { - //get TVL of Uninsurance vaults - let resp = await getConfig('ease', VAULT_LIST_URL); - let vaults = resp.map(i => i.address.toLowerCase()).filter(i => i !== '0x8f247eb2d71beeacdf212f8bc748f09cdf7144c0') - const bals = await api.multiCall({ abi: 'uint256:uBalance', calls: vaults }) - const tokens = await api.multiCall({ abi: 'address:uToken', calls: vaults }) - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) - api.addTokens(tokens, bals.map((v, i) => v / 10 ** (18 - decimals[i]))) - //get TVL of arNXM vault - const balNXM = await api.call({ target: ARNXM_VAULT.address, abi: ARNXM_VAULT.abis.aum, }); - api.add(NXM, balNXM) -} - -module.exports = { - ethereum: { - tvl, - staking: stakings(STAKING_CONTRACTS, EASE), - }, -} \ No newline at end of file diff --git a/projects/eazyswap/index.js b/projects/eazyswap/index.js deleted file mode 100644 index 6dbb1f61f11..00000000000 --- a/projects/eazyswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') -const EAZY_TOKEN = "0x6cF99BAA0a4d079F960216d08cf9a1Bc7e4dd37C"; -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (0xbeE82c502eC48a962510Aa4505595259C3ba631f) is used to find the LP pairs. TVL is equal to the liquidity on the AMM. Staking balance is equal to the balance of $EAZY in $xEAZY contract", - pulse: { - tvl: getUniTVL({ factory: '0xbeE82c502eC48a962510Aa4505595259C3ba631f', useDefaultCoreAssets: true }), - staking: sumTokensExport({ - owners: ['0x23E1Be43887641E8c0EB9938FaB9D6539438115a'], - tokens: [EAZY_TOKEN], - }) - } -}; - - diff --git a/projects/ebisu-ebUSD/index.js b/projects/ebisu-ebUSD/index.js deleted file mode 100644 index 1173f5b9fd2..00000000000 --- a/projects/ebisu-ebUSD/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getLiquityV2Tvl } = require('../helper/liquity') - -const config = { - ethereum: '0x5e159fAC2D137F7B83A12B9F30ac6aB2ba6d45E7' -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getLiquityV2Tvl(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/ebisu-finance/index.js b/projects/ebisu-finance/index.js deleted file mode 100644 index 5979a4bd431..00000000000 --- a/projects/ebisu-finance/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const VAULTS = { - ethereum: [ - "0x221042C39EfFfCfF8FaD051032FEF583019F165F", // weeth vault - "0xA8c3fc43Fa3992b315B8a63fe87386211F220669", // ezeth vault - "0x950a316587B7a9277aDf13A5f4327c959472f030", // pufeth vault - "0x6da1a9307fBf1d0a00EAF3B151f370b1925AB7e4", // swell vault - "0x270C6FA5a206Bfc1382C6101e3F366a632bE80a2", // kelp vault - ], - mode: [ - "0x46b1a9e1baa54e1edda42d3831d6a48ad527900c", // weeth vault - "0xe3583d7efc9d33269615b1c8fd0ff5836b176948", // ezeth vault - ], -} - -Object.keys(VAULTS).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const vaults = VAULTS[chain] - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults] }) - } - } -}) diff --git a/projects/ebisus-bay/index.js b/projects/ebisus-bay/index.js deleted file mode 100644 index 01148aca010..00000000000 --- a/projects/ebisus-bay/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - -const frtnToken = '0xaF02D78F39C0002D14b95A3bE272DA02379AfF21' -const bankContract = '0x1E16Aa4Bb965478Df310E8444CD18Fa56603A25F' - - -module.exports = { - misrepresentedTokens: true, - methodology: "The TVL accounts for all LP on the dex, using the factory address 0x5f1d751f447236f486f4268b883782897a902379). Staking accounts for the FRTN staked in the bank on our platform.", -} - -const config = { - cronos: '0x5f1d751f447236f486f4268b883782897a902379', - cronos_zkevm: '0x1A695B3aC30D41F9A1D856A27DD0D9DdaaCe750d', -} - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, blacklistedTokens: ['0x8f857af6ea31447bb502fe0e3f4e4340cdfcfc6c']}) } -}) - -module.exports.cronos.staking = staking(bankContract, frtnToken) \ No newline at end of file diff --git a/projects/ebtc/index.js b/projects/ebtc/index.js deleted file mode 100644 index 9495901a6a1..00000000000 --- a/projects/ebtc/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const COLLATERAL_ADDRESS = ADDRESSES.ethereum.STETH; // stETH -const ACTIVE_POOL_ADDRESS = "0x6dBDB6D420c110290431E863A1A978AE53F69ebC"; -const COLL_SURPLUSS_POOL = "0x335982DaE827049d35f09D5ec927De2bc38df3De"; - -async function tvl(api) { - return sumTokens2({ api, owners: [ACTIVE_POOL_ADDRESS, COLL_SURPLUSS_POOL], tokens: [COLLATERAL_ADDRESS] }) - } - - module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Adds the total amount of collateral in the active pool and the collateral surplus pool of the eBTC protocol.', - start: '2024-03-15', - ethereum: { - tvl, - } - }; diff --git a/projects/echelon-bridge/index.js b/projects/echelon-bridge/index.js deleted file mode 100644 index aa8e73d4810..00000000000 --- a/projects/echelon-bridge/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos.js'); - -const mappings = { - 'l2/23c8396041db74441f4268d0c7e0533177dc3e028a47a8e584318f2d0c46fbe9': { - decimals: 6, id: 'initia' - } -} - -module.exports = { - timetravel: false, - initia: { - tvl: async () => { - const balances = {} - const res = await queryV1Beta1({ - chain: "echelon_initia", - url: "/bank/v1beta1/supply", - }); - - res.supply.map(({ denom, amount }) => { - if (denom in mappings) balances[`coingecko:${mappings[denom].id}`] = amount / 10 ** mappings[denom].decimals - else if (denom.startsWith("ibc/")) balances[`${denom.replace("/", ":")}`] = amount - }) - - return balances - }, - }, -}; \ No newline at end of file diff --git a/projects/echelon/index.js b/projects/echelon/index.js deleted file mode 100644 index e14cce94948..00000000000 --- a/projects/echelon/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const { getResource, } = require("../helper/chain/aptos"); -const http = require("../helper/http"); - -const aptosLendingContract = "0xc6bc659f1649553c1a3fa05d9727433dc03843baac29473c817d06d39e7621ba"; -const movementLendingContract = "0x6a01d5761d43a5b5a0ccbfc42edf2d02c0611464aae99a2ea0e0d4819f0550b5"; -const echelonChainLendingContract = "0xedcdbb4c459064293924e0e96e01d5927faa11fd38d331111d99d23f14f6ed7d"; -const coinAssetType = '300'; - -const echelonRESTEndpoint = "https://rest-echelon-1.anvil.asia-southeast.initia.xyz"; - -async function _getResource(account, key, chain) { - if (chain === 'aptos' || chain === 'move') { - return getResource(account, key, chain); - } else { - // INITIA - const url = `${echelonRESTEndpoint}/initia/move/v1/accounts/${account}/resources/by_struct_tag?struct_tag=${key}`; - const { data } = await http.getWithMetadata(url); - const moveResourceObject = data.resource.move_resource; - const parsedObject = JSON.parse(moveResourceObject); - - return parsedObject.data; - } -} - -async function getMarketAddresses(network) { - let lendingAddress; - switch (network) { - case 'aptos': - lendingAddress = aptosLendingContract; - break; - case 'move': - lendingAddress = movementLendingContract; - break; - default: - lendingAddress = echelonChainLendingContract; - } - const lending = await _getResource(lendingAddress, `${lendingAddress}::lending::Lending`, network); - return lending.market_objects.map(obj => obj.inner); -} - -async function getMarket(network, marketAddress) { - let lendingAddress; - switch (network) { - case 'aptos': - lendingAddress = aptosLendingContract; - break; - case 'move': - lendingAddress = movementLendingContract; - break; - default: - lendingAddress = echelonChainLendingContract; - } - const market = await _getResource(marketAddress, `${lendingAddress}::lending::Market`, network) - var coinInfo = null; - if (market.asset_type === coinAssetType) { - coinInfo = (await _getResource(marketAddress, `${lendingAddress}::lending::CoinInfo`, network)).type_name - } else { - coinInfo = (await _getResource(marketAddress, `${lendingAddress}::lending::FungibleAssetInfo`, network)).metadata.inner; - } - - return { cash: market.total_cash, liability: market.total_liability, fee: market.total_reserve, coin: coinInfo }; -} - -module.exports = { - timetravel: false, - methodology: - "Aggregate TVL of both the Echelon main pool and its isolated pairs", - aptos: {tvl, borrowed, }, - move: {tvl, borrowed, }, - echelon_initia: {tvl, borrowed, }, -}; - -async function tvl(api) { - const marketAddresses = await getMarketAddresses(api.chain); - const markets = await Promise.all(marketAddresses.map(marketAddress => getMarket(api.chain, marketAddress))); - markets.forEach(({ cash, coin }) => { - api.add(coin, cash); - }); -} - -async function borrowed(api) { - const marketAddresses = await getMarketAddresses(api.chain); - const markets = await Promise.all(marketAddresses.map(marketAddress => getMarket(api.chain, marketAddress))); - markets.forEach(({ liability, coin }) => { - api.add(coin, liability) - }); -} diff --git a/projects/echidna/abi.json b/projects/echidna/abi.json deleted file mode 100644 index 32aba370fc3..00000000000 --- a/projects/echidna/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accPtpPerShare, address rewarder, uint256 sumOfFactors, uint256 accPtpPerFactorShare)", - "totalSupply": "uint256:totalSupply", - "underlyingBalance": "uint256:underlyingTokenBalance", - "underlyingToken": "address:underlyingToken" -} \ No newline at end of file diff --git a/projects/echidna/index.js b/projects/echidna/index.js deleted file mode 100644 index 80bcbed1ec2..00000000000 --- a/projects/echidna/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const abi = require("./abi.json"); -const depositor = '0xC204501F33eC40B8610BB2D753Dd540Ec6EA2646'; -const { pool2s } = require("../helper/pool2"); -const { staking } = require("../helper/staking"); - -async function addMasterchefFunds(masterChef, api) { - const infos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: masterChef }) - const calls = infos.map((_, i) => ({ params: [i, depositor] })) - const userInfo = await api.multiCall({ abi: abi.userInfo, calls, target: masterChef }) - const lpTokens = infos.map(i => i.lpToken) - const supplies = await api.multiCall({ abi: abi.totalSupply, calls: lpTokens }) - const underlyingBalance = await api.multiCall({ abi: abi.underlyingBalance, calls: lpTokens }) - const underlyingToken = await api.multiCall({ abi: abi.underlyingToken, calls: lpTokens }) - - - for (let i = 0; i < userInfo.length; i++) { - api.add(underlyingToken[i], userInfo[i].amount * underlyingBalance[i] / supplies[i]) - } -} - -async function tvl(api) { - await addMasterchefFunds("0xb0523f9f473812fb195ee49bc7d2ab9873a98044", api) - await addMasterchefFunds("0x68c5f4374228BEEdFa078e77b5ed93C28a2f713E", api) -} - -const pool2LPs = ["0x218e6A0AD170460F93eA784FbcC92B57DF13316E", "0xc8898e2eEE8a1d08742bb3173311697966451F61"] - -module.exports = { - deadFrom: '2024-06-16', - doublecounted: true, - avax: { - tvl, - pool2: pool2s(["0xc9AA91645C3a400246B9D16c8d648F5dcEC6d1c8"], pool2LPs), - staking: staking("0x721C2c768635D2b0147552861a0D8FDfde55C032", "0xeb8343D5284CaEc921F035207ca94DB6BAaaCBcd") - } -}; \ No newline at end of file diff --git a/projects/echo-bridge/index.js b/projects/echo-bridge/index.js deleted file mode 100644 index 60fe3a95d0d..00000000000 --- a/projects/echo-bridge/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - bsquared: { - tvl: sumTokensExport({ owner: '0x5b1399B8b97fBC3601D8B60Cc0F535844C411Bd5', tokens: [ADDRESSES.bsquared.UBTC]}) - } -} \ No newline at end of file diff --git a/projects/echo-lending/index.js b/projects/echo-lending/index.js deleted file mode 100644 index 3c5684ed1a7..00000000000 --- a/projects/echo-lending/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { function_view } = require("../helper/chain/aptos"); - -let _data - -const mapping = { - 'APT': ADDRESSES.aptos.APT, -} - -async function getData() { - if (!_data) - _data = _getData() - - return _data - - - async function _getData() { - const resources = await function_view({ functionStr: "0xeab7ea4d635b6b6add79d5045c4a45d8148d88287b1cfa1c3b6a4b56f46839ed::pool_data_provider::get_all_reserves_tokens", }) - const [uTokens, tokens] = await function_view({ functionStr: "0xeab7ea4d635b6b6add79d5045c4a45d8148d88287b1cfa1c3b6a4b56f46839ed::underlying_token_factory::get_coin_asset_pairs", }) - const mapping = {} - tokens.forEach((token, i) => mapping[token] = uTokens[i]) - - for (const item of resources) { - const token = item.token_address - item.uToken = mapping[token] - item.reserve = await function_view({ functionStr: "0xeab7ea4d635b6b6add79d5045c4a45d8148d88287b1cfa1c3b6a4b56f46839ed::pool_data_provider::get_reserve_data", args: [token] }) - item.debt = item.reserve[3] - item.balance = +item.reserve[2] - +item.debt - } - return resources.filter(i => i.uToken); - } -} - -module.exports = { - aptos: { - tvl: async (api) => { - const data = await getData() - api.add(data.map(i => i.uToken), data.map(i => i.balance)) - }, - borrowed: async (api) => { - const data = await getData() - api.add(data.map(i => i.uToken), data.map(i => i.debt)) - }, - }, -}; diff --git a/projects/echo-lsd/index.js b/projects/echo-lsd/index.js deleted file mode 100644 index fb5940957ae..00000000000 --- a/projects/echo-lsd/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); - -async function getTVL() { - const totalTVL = await function_view({ functionStr: "0xa0281660ff6ca6c1b68b55fcb9b213c2276f90ad007ad27fd003cf2f3478e96e::lsdmanage::total_staked_apt", }) - return { - aptos: +totalTVL / 1e8 - } -} - -module.exports = { - aptos: { - tvl: getTVL - }, -}; diff --git a/projects/echo-strategy/index.js b/projects/echo-strategy/index.js deleted file mode 100644 index f51a3ae211d..00000000000 --- a/projects/echo-strategy/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); - -const strategyModuleList = ['aries_strategy', 'aries_strategy_fa', 'cellana_strategy', 'cellana_strategy_fa', 'lsd_strategy'] -const strategyAddress = '0xf52c075a823612700387d175f466f4e9b8016ed55191c52539ab78dc6698ca7f' -async function getTVL() { - const responses = await Promise.all( - strategyModuleList.map(moduleName => function_view({ functionStr: `${strategyAddress}::${moduleName}::get_strategy_data` })) - ); - const total = responses.reduce((sum, res) => sum + Number(res.tvl), 0); - return total; -} - -module.exports = { - aptos: { - tvl: async (api) => { - const data = await getTVL(); - api.add('0x4e1854f6d332c9525e258fb6e66f84b6af8aba687bbcb832a24768c4e175feec::abtc::ABTC', data); - } - }, -}; diff --git a/projects/echodex-v3/index.js b/projects/echodex-v3/index.js deleted file mode 100644 index 811562c32d1..00000000000 --- a/projects/echodex-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - linea: { factory: '0x559Fa53Be355835a038aC303A750E8788668636B', fromBlock: 120029, }, -}) \ No newline at end of file diff --git a/projects/echodex/index.js b/projects/echodex/index.js deleted file mode 100644 index 0d6c3395105..00000000000 --- a/projects/echodex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - linea: { tvl: getUniTVL({ factory: '0x6D1063F2187442Cc9adbFAD2f55A96B846FCB399', useDefaultCoreAssets: true, }), }, -} diff --git a/projects/echswap/index.js b/projects/echswap/index.js deleted file mode 100644 index 61e7a731d41..00000000000 --- a/projects/echswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { deadFrom } = require('../mosquitos-finance') - -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1671062400, "Rug Pull"] - ], - deadFrom: 1671062400, - echelon: { - tvl: () => ({}), - } -} \ No newline at end of file diff --git a/projects/eclipse-bridge/index.js b/projects/eclipse-bridge/index.js deleted file mode 100644 index d0a0e7e01d3..00000000000 --- a/projects/eclipse-bridge/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: '0xd7e4b67e735733ac98a88f13d087d8aac670e644', - fetchCoValentTokens: true, - permitFailure: true - }), - }, -}; diff --git a/projects/eclipse/index.js b/projects/eclipse/index.js deleted file mode 100644 index dc53a7cf912..00000000000 --- a/projects/eclipse/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') - -const tokens = { - "ASTRO": "factory/neutron1ffus553eet978k024lmssw0czsxwr97mggyv85lpcsdkft8v9ufsz3sa07/astro", - "ECLIP": "factory/neutron10sr06r3qkhn7xzpw3339wuj77hu06mzna6uht0/eclip" -} - -async function singleSideStaking(api){ - const astroStakingBalance = await queryContract({ - contract: "neutron1qk5nn9360pyu2tta7r4hvmuxwhxj5res79knt0sntmjcnwsycqyqy2ft9n", - chain: 'neutron', - data: { - total_staking: {} - } - }); - - api.add(tokens["ASTRO"], (astroStakingBalance)) -} - -async function lpStaking(api){ - const astroStakingBalance = await queryContract({ - contract: "neutron1d5p2lwh92040wfkrccdv5pamxtq7rsdzprfefd9v9vrh2c4lgheqvv6uyu", - chain: 'neutron', - data: { - total_staking: {} - } - }); - - const totalDeposit = await queryContract({ - contract: "neutron1zlf3hutsa4qnmue53lz2tfxrutp8y2e3rj4nkghg3rupgl4mqy8s5jgxsn", - chain: 'neutron', - data: { - total_deposit: {} - } - }); - - const totalShares = await queryContract({ - contract: "neutron1zlf3hutsa4qnmue53lz2tfxrutp8y2e3rj4nkghg3rupgl4mqy8s5jgxsn", - chain: 'neutron', - data: { - total_shares: {} - } - }); - - const conversionRate = Number(totalDeposit) / Number(totalShares); - - api.add(tokens["ASTRO"], (2 * conversionRate * astroStakingBalance)) -} - -async function eclipStaking(api){ - const eclipStakingBalance = await queryContract({ - contract: "neutron19q93n64nyet24ynvw04qjqmejffkmyxakdvl08sf3n3yeyr92lrs2makhx", - chain: 'neutron', - data: { - query_state: {} - } - }); - - api.add(tokens["ECLIP"], ((Number(eclipStakingBalance.stake_state.total_bond_amount) ))); -} - -module.exports = { - neutron: { - tvl: singleSideStaking, - pool2: lpStaking, - staking: eclipStaking, - }, -} \ No newline at end of file diff --git a/projects/ecodefi/babyRouterAbi.json b/projects/ecodefi/babyRouterAbi.json deleted file mode 100644 index 006d61628fb..00000000000 --- a/projects/ecodefi/babyRouterAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAmountsOut": "function getAmountsOut(uint256 amountIn, address[] path) view returns (uint256[] amounts)" -} \ No newline at end of file diff --git a/projects/ecodefi/index.js b/projects/ecodefi/index.js deleted file mode 100644 index 35c73ee57ee..00000000000 --- a/projects/ecodefi/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require('../helper/staking') -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - deadFrom: '2022-08-02', - methodology: 'counts the number of Total value locked in ESG protocol.', - bsc: { - ...compoundExports2({ comptroller: '0xfd1f241ba25b8966a14865cb22a4ea3d24c92451'}), - staking: staking('0x55839fe60742c7789DaBcA85Fd693f1cAbaeDd69', '0x0985205D53D575CB07Dd4Fba216034dc614eab55'), - }, -} - -module.exports.bsc.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/ecodefi/stakingAbi.json b/projects/ecodefi/stakingAbi.json deleted file mode 100644 index d53b0b9ee94..00000000000 --- a/projects/ecodefi/stakingAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "total_deposited": "uint256:total_deposited" -} \ No newline at end of file diff --git a/projects/econia.js b/projects/econia.js deleted file mode 100644 index ee38b1bd490..00000000000 --- a/projects/econia.js +++ /dev/null @@ -1,37 +0,0 @@ -const axios = require("axios"); - -const URL = 'https://aptos-mainnet-econia.nodeinfra.com'; - -const USDC_FILTER = 'quote_account_address=eq.0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa"e_module_name=eq.asset"e_struct_name=eq.USDC'; - -function integerPriceToNominal(price, market) { - return price * market.tick_size * Math.pow(10, market.base_decimals) / market.lot_size / Math.pow(10, market.quote_decimals) -} - -async function getTvl(api) { - const markets = (await axios.get(`${URL}/markets?${USDC_FILTER}&order=market_id.asc`)).data; - const tvls = (await axios.get(`${URL}/tvl_per_market?${USDC_FILTER}&order=market_id.asc`)).data; - - const convertedTvls = await Promise.all(tvls.map(async tvl => { - const market = markets.find(m => m.market_id == tvl.market_id); - if (market.last_fill_price_24hr) { - return tvl.quote_value / Math.pow(10, market.quote_decimals) + tvl.base_value / Math.pow(10, market.base_decimals) * integerPriceToNominal(market.last_fill_price_24hr, market); - } else { - const last_fill = (await axios.get(`${URL}/fill_events?market_id=eq.${market.market_id}&order=txn_version.desc,event_idx.desc&limit=1`)).data; - if(last_fill.length == 1) { - return tvl.quote_value / Math.pow(10, market.quote_decimals) + tvl.base_value / Math.pow(10, market.base_decimals) * integerPriceToNominal(last_fill[0].price, market); - } else { - return 0; - } - } - })) - - api.addUSDValue(convertedTvls.reduce((a, b) => +a + +b, 0)); -} - -module.exports = { - misrepresentedTokens: true, - aptos: { - tvl: getTvl - }, -} diff --git a/projects/ecurve/index.js b/projects/ecurve/index.js deleted file mode 100644 index f18c960d1f2..00000000000 --- a/projects/ecurve/index.js +++ /dev/null @@ -1,14 +0,0 @@ -// const utils = require("../helper/utils"); - -async function fetch() { - // https://ecurve.finance/ - // const stats = await utils.fetchURL("https://iit9dyqn3h.execute-api.us-east-1.amazonaws.com/GetEcurveStats") - // const tvl = stats.data.reduce((previous, row) => previous + row.tvl, 0 ); - return 0; -} - -module.exports = { - misrepresentedTokens: true, - methodology: `eCurve TVL is achieved by making a call to its eCurve API.`, - eos: { tvl: () => ({ }) } -} \ No newline at end of file diff --git a/projects/edbank-xyz/index.js b/projects/edbank-xyz/index.js deleted file mode 100644 index 972ac41ff36..00000000000 --- a/projects/edbank-xyz/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - occ: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.occ.WEDU, '0x07e4465c8f7A47a77761566A639C0a1CF26800dC'], - ] - }) - } -} \ No newline at end of file diff --git a/projects/eddyfinance-stableswap/index.js b/projects/eddyfinance-stableswap/index.js deleted file mode 100644 index a6d880d409d..00000000000 --- a/projects/eddyfinance-stableswap/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)'; - -const stablePools = [ - '0x448028804461e8e5a8877c228F3adFd58c3Da6B6', // 4 asset pool - '0x01a9cd602c6c3f05ea9a3a55184c2181bd43e4b8', // 2 asset pool accumulated finance - '0xee1629de70afaf3ae3592a9d6d859949750aa697', // 2 asset pool zearn - '0x89cb3fA2A7910A268e9f7F619108aFADBD7587c4' // 2 asset UltiVerse pool -] - -async function stableSwapTvl(api) { - const params = [0, 1, 2, 3] - const calls = [] - stablePools.forEach(pool => { - params.forEach(param => - calls.push({ target: pool, params: param })) - }) - const tokens = await api.multiCall({ abi: 'function coins(uint256) view returns (address)', calls, permitFailure: true }) - const tokensAndOwners = [] - tokens.forEach((token, i) => { - if (!token) return; - tokensAndOwners.push([token, calls[i].target]) - }) - - return sumTokens2({ api, tokensAndOwners, blacklistedTokens: stablePools }) -} - - - -module.exports = { - misrepresentedTokens: true, - methodology: "Sum of tvl of the StableSwap pools", - zeta: { tvl: stableSwapTvl }, -}; \ No newline at end of file diff --git a/projects/eddyfinance-v3/index.js b/projects/eddyfinance-v3/index.js deleted file mode 100644 index c68ccd42ff2..00000000000 --- a/projects/eddyfinance-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - zeta: { factory: '0x67AA6B2b715937Edc1Eb4D3b7B5d5dCD1fd93E8C', fromBlock: 5478303, } -}) \ No newline at end of file diff --git a/projects/eddyfinance/index.js b/projects/eddyfinance/index.js deleted file mode 100644 index 48885f559f1..00000000000 --- a/projects/eddyfinance/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)'; -/* -const stablePools = [ - '0x448028804461e8e5a8877c228F3adFd58c3Da6B6', // 4 asset pool - '0x01a9cd602c6c3f05ea9a3a55184c2181bd43e4b8', // 2 asset pool accumulated finance - '0xee1629de70afaf3ae3592a9d6d859949750aa697', // 2 asset pool zearn - '0x89cb3fA2A7910A268e9f7F619108aFADBD7587c4' // 2 asset UltiVerse pool -] - -async function stableSwapTvl(api) { - const params = [0, 1, 2, 3] - const calls = [] - stablePools.forEach(pool => { - params.forEach(param => - calls.push({ target: pool, params: param })) - }) - const tokens = await api.multiCall({ abi: 'function coins(uint256) view returns (address)', calls, permitFailure: true }) - const tokensAndOwners = [] - tokens.forEach((token, i) => { - if (!token) return; - tokensAndOwners.push([token, calls[i].target]) - }) - - return sumTokens2({ api, tokensAndOwners, blacklistedTokens: stablePools }) -} -*/ // separate into eddyfinance-stableswap adapter - -const uniTvl = getUniTVL({ factory: '0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c', abis: { getReserves } }) - -module.exports = { - misrepresentedTokens: true, - methodology: "Sum of tvl of UniV2 pools", - zeta: { tvl: uniTvl }, -}; \ No newline at end of file diff --git a/projects/edebase/index.js b/projects/edebase/index.js deleted file mode 100644 index efbe99be522..00000000000 --- a/projects/edebase/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { gmxExports } = require("../helper/gmx"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -module.exports = { - base: { - tvl: sdk.util.sumChainTvls([ - async (api) => { - const vault = '0x251705b174386009ac82e08eAFDd7A9987e50e5d' - const VaultStorage = '0xd878eA6c7aA749c88ad127852423BA8c508bcE08' - const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: VaultStorage}) - return sumTokens2({ api, owner: vault, tokens, }) - }, - ]) - }, -} diff --git a/projects/edge-capital/index.js b/projects/edge-capital/index.js deleted file mode 100644 index c247f1fbc6e..00000000000 --- a/projects/edge-capital/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Edge Capital.', - blockchains: { - tac:{ - eulerVaultOwners: [ - '0xB2b9a27a6160Bf9ffbD1a8d245f5de75541b1DDD', - '0x1280e86Cd7787FfA55d37759C0342F8CD3c7594a', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/edgeX/index.js b/projects/edgeX/index.js deleted file mode 100644 index 04e0630998a..00000000000 --- a/projects/edgeX/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const walletAddresses = { - eth: ['0xc0a1a1e4af873e9a37a0cac37f3ab81152432cc5', '0xfAaE2946e846133af314d1Df13684c89fA7d83DD', '0x74B97d2097D64b4D2A3317d4Bda2dAb88B80e7ab', '0xd22faE190736eFFc8ceB3d8845a5D33ae7805392'], - bsc: ['0x0520b0a951658db92b8a2dd9f146bb8223638740'], - arbitrum: ['0xceeed84620e5eb9ab1d6dfc316867d2cda332e41'], -}; - -const tokenAddress = { - eth: [ADDRESSES.ethereum.USDT, '0x23878914efe38d27c4d67ab83ed1b93a74d4086a'], - bsc: [ADDRESSES.bsc.USDT], - arbitrum: [ADDRESSES.arbitrum.USDT], -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: walletAddresses.eth, tokens: tokenAddress.eth }), - }, - bsc: { - tvl: sumTokensExport({ owners: walletAddresses.bsc, tokens: tokenAddress.bsc }), - }, - arbitrum: { - tvl: sumTokensExport({ owners: walletAddresses.arbitrum, tokens: tokenAddress.arbitrum }), - }, -}; diff --git a/projects/edgeprotocol.js b/projects/edgeprotocol.js deleted file mode 100644 index fac47da59ab..00000000000 --- a/projects/edgeprotocol.js +++ /dev/null @@ -1,31 +0,0 @@ -const { queryContract, } = require('./helper/chain/cosmos') - -async function getMarkets() { - const res = await queryContract({ contract: 'terra1pcxwtrxppj9xj7pq3k95wm2zztfr9kwfkcgq0w', data: { market_lists: {} }, chain: 'terra' }) - return res -} -async function tvl(api) { - const markets = await getMarkets() - markets.forEach(m => { - api.add(m.underlying, Math.floor(m.total_credit - m.total_insurance)) - }); -} - -async function borrowed(api) { - const markets = await getMarkets() - markets.forEach(m => { - api.add(m.underlying, Math.floor(m.total_loan)) - }); -} - -module.exports = { - timetravel: false, - methodology: `We query Edge's Genesis Pool smart contracts to get the amount of assets deposited and borrowed, we then use Coingecko to price the assets in USD.`, - terra: { - tvl, - borrowed - }, - hallmarks: [ - [1651881600, "UST depeg"], - ] -}; diff --git a/projects/edgevana/index.js b/projects/edgevana/index.js deleted file mode 100644 index 4003c9d1f15..00000000000 --- a/projects/edgevana/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection } = require("../helper/solana"); - -async function tvl() { - const connection = getConnection(); - const account = await connection.getAccountInfo(new PublicKey('edgejNWAqkePLpi5sHRxT9vHi7u3kSHP9cocABPKiWZ')) - return { - solana: Number(account.data.readBigUint64LE(258))/1e9 - } -} - -module.exports = { - timetravel: false, - methodology: - "Uses the SPL Stake Pool SDK to fetch the total supply of deposited SOL into the Edgevana Stake Pool", - solana: { - tvl, - }, -}; diff --git a/projects/eesee/index.js b/projects/eesee/index.js deleted file mode 100644 index 1f078372e30..00000000000 --- a/projects/eesee/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - blast: { - tvl: sumTokensExport({ owner: '0xa247CfF2a50dE0328a0A5bdD0C563Bd44b1a8af9', tokens: [ADDRESSES.blast.USDB, ]}), - }, -} diff --git a/projects/eggsfinance/index.js b/projects/eggsfinance/index.js deleted file mode 100644 index 815c94cc0bb..00000000000 --- a/projects/eggsfinance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { nullAddress } = require("../helper/unwrapLPs"); - -const EGGS_TOKEN_CONTRACT = "0xf26Ff70573ddc8a90Bd7865AF8d7d70B8Ff019bC"; - - -async function borrowed(api) { - const borrowed = await api.call({ abi: 'uint256:getTotalBorrowed', target: EGGS_TOKEN_CONTRACT, }); - api.addGasToken(borrowed); -} - -async function tvl(api) { - return api.sumTokens({ owner: EGGS_TOKEN_CONTRACT, tokens: [nullAddress] }); -} - -module.exports = { - methodology: - "Calculates the total backing of S in the Eggs contract, and total borrowed in S", - sonic: { - tvl, - borrowed, - }, -}; diff --git a/projects/eggtartswap/index.js b/projects/eggtartswap/index.js deleted file mode 100644 index 1d09448cdea..00000000000 --- a/projects/eggtartswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - harmony: { - tvl: getUniTVL({ factory: '0x65CED3c0Af7CDcC64Fb3eE5F021F9b4E65467812', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/eigenlayer/index.js b/projects/eigenlayer/index.js deleted file mode 100644 index 63d8a3f2b2f..00000000000 --- a/projects/eigenlayer/index.js +++ /dev/null @@ -1,105 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require("../helper/cache/getLogs"); -const { startAlliumQuery, retrieveAlliumResults } = require("../helper/allium"); -const { getCache, setCache } = require("../helper/cache"); - -const ethereum = ADDRESSES.null -const EIGEN = ADDRESSES.ethereum.EIGEN -const eigenStrategy = '0xaCB55C530Acdb2849e6d4f36992Cd8c9D50ED8F7' -const bEIGEN = '0x83e9115d334d248ce39a6f36144aeab5b3456e75' - -const eventAbis = { - podDeployed: "event PodDeployed(address indexed eigenPod, address indexed podOwner)", - podOwnerDepositShares: "function podOwnerDepositShares(address podOwner) view returns (int256 shares)", - currentCheckpoint: "function currentCheckpoint() view returns (bytes32 beaconBlockRoot, uint24 proofsRemaining, uint64 podBalanceGwei, int64 balanceDeltasGwei, uint64 prevBeaconBalanceGwei)", - delegatedTo: "function delegatedTo(address staker) view returns (address operator)", - getOperatorsShares: "function getOperatorsShares(address[] operators, address[] strategies) view returns (uint256[][])", - getUserDelayedWithdrawals: "function getUserDelayedWithdrawals(address user) view returns (tuple(uint224 amount, uint32 blockCreated)[])", - getQueuedWithdrawals: "function getQueuedWithdrawals(address staker) view returns (tuple(address staker, address delegatedTo, address withdrawer, uint256 nonce, uint32 startBlock, address[] strategies, uint256[] scaledShares)[] withdrawals, uint256[][] shares)", - getClaimableUserDelayedWithdrawals: "function getClaimableUserDelayedWithdrawals(address user) view returns (tuple(uint224 amount, uint32 blockCreated)[])", - sharesToUnderlying: "function sharesToUnderlying(uint256 amountShares) view returns (uint256)", -} - -async function getEigenPods(timestamp) { - const cacheKey = "eigenpods-query" - const cacheNamespace = "eigenlayer" - const contractAddress = "0x91e677b07f7af907ec9a428aafa9fc14a0d3a338" - const offsetDays = 3 - - const cachedQueryId = await getCache(cacheNamespace, cacheKey) - - const targetDate = new Date(timestamp * 1e3 - offsetDays * 24 * 3600e3) - .toISOString() - .split("T")[0] + "T23:59:59" - - const query = ` - SELECT SUM(balance) AS sum - FROM ( - SELECT params - FROM ethereum.decoded.logs - WHERE address = '${contractAddress}' - AND name = 'PodDeployed' - ) pods, - ( - SELECT balance, WITHDRAWAL_ADDRESS, slot_timestamp - FROM beacon.validator.balances - WHERE status IN ( - 'active_ongoing', - 'pending_queued', - 'pending_initialized', - 'withdrawal_possible' - ) - AND slot_timestamp = '${targetDate}' - ) beacon - WHERE pods.params['eigenPod'] = beacon.WITHDRAWAL_ADDRESS - ` - - const newQueryId = await startAlliumQuery(query) - await setCache(cacheNamespace, cacheKey, newQueryId) - - const results = await retrieveAlliumResults(cachedQueryId) - const sum = results[0]?.["sum"] - - if (!sum) { - throw new Error("Empty eigenpods") - } - - return sum -} - -const fetchLogs = async (api, eventAbi, extraKey) => getLogs2({ - api, - target: "0x858646372cc42e1a627fce94aa7a7033e7cf075a", - eventAbi, - fromBlock: 17445564, - extraKey, -}); - -const tvl = async (api) => { - api.add(ethereum, await getEigenPods(api.timestamp) * 1e18) - const addeds = await fetchLogs(api, "event StrategyAddedToDepositWhitelist(address strategy)", "StrategyAddedToDepositWhitelist"); - const activeStrategies = addeds.map(item => item[0]); - const rawUnderlyingTokens = (await api.multiCall({ abi: 'address:underlyingToken', calls: activeStrategies })); - - const totalShares = await api.multiCall({ calls: activeStrategies, abi: 'uint256:totalShares' }) - const underlyingCalls = totalShares.map((share, i) => ({ share, strategie: activeStrategies[i] })) - const totalUnderlyings = await api.multiCall({ calls: underlyingCalls.map(({ share, strategie }) => ({ target: strategie, params: [share] })), abi: eventAbis.sharesToUnderlying }) - - totalUnderlyings.forEach((bal, i) => { - const t = rawUnderlyingTokens[i] - api.add(t, bal) - }) - - api.removeTokenBalance(bEIGEN); -} - -const staking = async (api) => { - const balance = await api.call({ target: bEIGEN, params: [eigenStrategy], abi: 'erc20:balanceOf' }) - api.add(EIGEN, balance) -} - -// https://github.com/Layr-Labs/eigenlayer-contracts/blob/master/script/output/M1_deployment_mainnet_2023_6_9.json -module.exports = { - timetravel: false, - ethereum: { tvl, staking } -} \ No newline at end of file diff --git a/projects/eigenpie/config.js b/projects/eigenpie/config.js deleted file mode 100644 index 5a18b6fbafa..00000000000 --- a/projects/eigenpie/config.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - ethereum: { - eigenConfig: "0x20b70E4A1883b81429533FeD944d7957121c7CAB", - eigenStaking: "0x24db6717dB1C75B9Db6eA47164D8730B63875dB7", - }, - zircuit:{ - msteth: "0x1C1Fb35334290b5ff1bF7B4c09130885b10Fc0f4", - egeth: "0x4bcc7c793534246BC18acD3737aA4897FF23B458", - wsteth: "0xf0e673Bc224A8Ca3ff67a61605814666b1234833", - weth: ADDRESSES.optimism.WETH_1, - } - -}; \ No newline at end of file diff --git a/projects/eigenpie/index.js b/projects/eigenpie/index.js deleted file mode 100644 index e2b47793392..00000000000 --- a/projects/eigenpie/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const CONFIG = { - ethereum: { - eigenConfig: "0x20b70E4A1883b81429533FeD944d7957121c7CAB", - eigenStaking: "0x24db6717dB1C75B9Db6eA47164D8730B63875dB7", - eigenBuffer: "0x98083e22d12497c1516d3c49e7cc6cd2cd9dcba4", - egETH: "0x18f313fc6afc9b5fd6f0908c1b3d476e3fea1dd9", - ethereum: ADDRESSES.null - }, -} - -const abis = { - getSupportedAssetList: 'address[]:getSupportedAssetList', - mLRTReceiptByAsset: "function mLRTReceiptByAsset(address token) view returns (address)", - getAssetDistributionData: "function getAssetDistributionData(address asset) view returns (uint256 assetLyingInDepositPool, uint256 assetLyingInNDCs, uint256 assetStakedInEigenLayer, uint256 assetLyingInEWD)", -} - -const tvl = async (api) => { - const { eigenConfig, eigenStaking, eigenBuffer, ethereum } = CONFIG[api.chain] - const getSupportedAssetLists = await api.call({ abi: abis.getSupportedAssetList, target: eigenConfig }) - const assetsDistributions = await api.multiCall({ target: eigenStaking, calls: getSupportedAssetLists, abi: abis.getAssetDistributionData }) - await api.sumTokens({ owner: eigenBuffer, tokens: getSupportedAssetLists.map(t => t.toLowerCase() === '0xefefefefefefefefefefefefefefefefefefefef' ? ethereum : t) }) - assetsDistributions.forEach(({ assetLyingInDepositPool, assetStakedInEigenLayer, assetLyingInNDCs, assetLyingInEWD }, i) => { - const token = getSupportedAssetLists[i] - api.add(token, assetLyingInDepositPool) - api.add(token, assetStakedInEigenLayer) - api.add(token, assetLyingInNDCs) - api.add(token, assetLyingInEWD) - }) -} - -module.exports = { - doublecounted: true, - ethereum: { tvl }, - zircuit: { tvl: () => ({ }) } -} diff --git a/projects/eight/index.js b/projects/eight/index.js deleted file mode 100644 index e9f7a9ac213..00000000000 --- a/projects/eight/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0xe35737c865968a6fcb13e536adcaa37d9be0c7eb" -module.exports = { - // hallmarks: [ - // [1638748800, "protocol compromised keys"] - // ], - deadFrom: '2022-11-10', - misrepresentedTokens: true, - ...ohmTvl(treasury, [ - ["0xef977d2f931c1978db5f6747666fa1eacb0d0339", false], - ["0xc97d37434766eec69d606c9038abaf8a6428e7da", true], - ], "harmony", "0x6a4a847e83e923ab587cb3f395baaf1983f54bd6", - "0xcda2fdeee5c382e401c04dc929e53ababf6c8109", addr=>`harmony:${addr}`, id=>id, false) -} \ No newline at end of file diff --git a/projects/eklipse/index.js b/projects/eklipse/index.js deleted file mode 100644 index 8600a7529ca..00000000000 --- a/projects/eklipse/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') -const EKL_TOKEN = '0x807c4e063eb0ac21e8eef7623a6ed50a8ede58ca' -const STAKING_ADDRESS = '0xD067C3b871ee9E07BA4205A8F96c182baBBA6c58' -const POOL2_ADDRESS = '0x625ae9043e8730c4a1e30b36838502fb90e1d3c2' -const USDT_PAIR = '0x219ee5d76593f5bd639125b6411a17d309e3ad31' -const KLAY_PAIR = '0x5db231ac93faaad876155dc0853bb11a2f4b0fb2' - -const vaults = [ - '0x4F5d9F3b17988aA047e6F1Bc511fEc0BF25691f4', - '0xe59234EeDC854b3b37D48EFd8a529069C3990F83', - '0xddA06aaB425a1A390c131F790A56AB3380e3B7EC', - '0x7f352a4332fAD433D381d700118f8C9b0A1E1abb', - '0xB1b782f2D30505e9984e37e00C6494437d94c223', - '0x75Dc33f8247245E8E08852E68E7f275E2a41fD40', - '0x4F5d9F3b17988aA047e6F1Bc511fEc0BF25691f4', - '0x323fdda29fa2B8028eF9Fb48c1D45e5A39214D9A', - '0x5B4ed8321ea13047195104037798f29257EAc28c', - '0x29c6Eb808020Ef4889A9f25d35b69edBAfB0C78e', -] -const tokens = [ - ADDRESSES.klaytn.KDAI, - ADDRESSES.klaytn.oBUSD, - ADDRESSES.klaytn.oUSDC, - ADDRESSES.klaytn.KSD, - ADDRESSES.klaytn.KASH, - '0x807c4e063eb0ac21e8eef7623a6ed50a8ede58ca', - ADDRESSES.klaytn.oUSDT, - ADDRESSES.klaytn.pUSD, - ADDRESSES.klaytn.USDK, -] - - -async function tvl(api) { - return api.sumTokens({ owners: vaults, tokens }) -} - -async function pool2(api) { - return sumTokens2({ api, tokens: [USDT_PAIR, KLAY_PAIR], owners: [POOL2_ADDRESS], resolveLP: true, }) -} - -module.exports = { - klaytn: { - tvl, - staking: staking(STAKING_ADDRESS, EKL_TOKEN), - pool2, - }, -} - diff --git a/projects/ekubo-evm/index.js b/projects/ekubo-evm/index.js deleted file mode 100644 index a0c2a04ce32..00000000000 --- a/projects/ekubo-evm/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - ethereum: { owners: ['0xe0e0e08a6a4b9dc7bd67bcb7aade5cf48157d444'] } -} - -Object.keys(config).forEach(chain => { - config[chain].fetchCoValentTokens = true - config[chain].tokenConfig = { onlyWhitelisted: false } - module.exports[chain] = { - tvl: sumTokensExport(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/ekubo/index.js b/projects/ekubo/index.js deleted file mode 100644 index 2607f68d0d4..00000000000 --- a/projects/ekubo/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { sumTokens } = require('../helper/chain/starknet') -const { getConfig } = require('../helper/cache') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const market = '0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b' - -async function starknetTvl(api) { - const tokens = await getConfig('ekubo', "https://mainnet-api.ekubo.org/tokens") - return sumTokens({ api, owner: market, tokens: tokens.map(t => t.l2_token_address) }) -} - -const config = { - ethereum: { - owners: ['0xe0e0e08a6a4b9dc7bd67bcb7aade5cf48157d444'], - blacklistedTokens: [] - } -} - -Object.keys(config).forEach(chain => { - config[chain].fetchCoValentTokens = true - config[chain].tokenConfig = { onlyWhitelisted: false } -}) - -const ethTvl = sumTokensExport(config.ethereum) - -module.exports = { - methodology: 'Value of LP in the DEX, includes LPs that are out of range and thus not providing active liquidity', - starknet: { - tvl: starknetTvl - }, - ethereum: { - tvl: ethTvl - }, - isHeavyProtocol: true, -} diff --git a/projects/elara/index.js b/projects/elara/index.js deleted file mode 100644 index 59f6e25980d..00000000000 --- a/projects/elara/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { methodology, compoundExports2 } = require("../helper/compound"); - -module.exports = { - zircuit: compoundExports2({ comptroller: '0x695aCEf58D1a10Cf13CBb4bbB2dfB7eDDd89B296' }), - methodology, -} \ No newline at end of file diff --git a/projects/elasticswap/index.js b/projects/elasticswap/index.js deleted file mode 100644 index 3e70415ad7e..00000000000 --- a/projects/elasticswap/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { stakings } = require("../helper/staking") -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const BaseTokenAbi = "address:baseToken" - -const QuoteTokenAbi = "address:quoteToken" - -// addresses grabbed from https://docs.elasticswap.org/resources/deployments -const config = { - ethereum: { - startBlock: 14669314, - factory: '0x8B3D780Db8842593d8b61632A2F76c4D4f31D7C3', - stakingPools: ['0xc8D00C0a8d2ec4EC538a82461A7a7F5C3aC99d95'], - ticToken: '0x2163383C1F4E74fE36c50E6154C7F18d9Fd06d6f', - }, - avax: { - factory: '0x8B3D780Db8842593d8b61632A2F76c4D4f31D7C3', - stakingPools: ['0x9B7B70F65eA5266EBd0a0F8435BE832d39e71280', '0x416494bD4FbEe227313b76a07A1e859928D7bA47', ], - ticToken: '0x75739a693459f33B1FBcC02099eea3eBCF150cBe', - pairAddresses: [ - '0x4ae1da57f2d6b2e9a23d07e264aa2b3bbcaed19a', - '0x1b80e501e397dbf8b7d86d06bd42679d61cac756', - '0xa0c5aa50ce3cc69b1c478d8235597bc0c51dfdab', - '0x79274bf95e05f0e858ab78411f3ebe85909e4f76', - ], - }, -} - -module.exports = { - // hallmarks: [ - // [1670889600,"Price Oracle Attack"] - // ], - methodology: - "TVL of Elastic Swap consists of liquidity pools and native token staking. Data fetched from on-chain.", -}; - -Object.keys(config).forEach(chain => { - const { startBlock, factory, stakingPools, ticToken, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let { pairAddresses = [] } = config[chain] - - if (startBlock) { - pairAddresses = [] - const logs = ( - await getLogs({ - api, - target: factory, - fromBlock: startBlock, - topic: 'NewExchange(address,address)', - }) - ) - - for (let log of logs) - pairAddresses.push(`0x${log.topics[2].substr(-40)}`.toLowerCase()) - } - - const calls = pairAddresses - - const baseToken = await api.multiCall({ - abi: BaseTokenAbi, calls, - }); - - const quoteToken = await api.multiCall({ - abi: QuoteTokenAbi, calls, - }) - - return sumTokens2({ tokensAndOwners2: [baseToken.concat(quoteToken), calls.concat(calls)], api, }) - }, - staking: stakings(stakingPools, ticToken, chain) - } -}) diff --git a/projects/electra/index.js b/projects/electra/index.js deleted file mode 100644 index 40ecf495c47..00000000000 --- a/projects/electra/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') - -module.exports = { - timetravel: false, - bsc: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owner:'0xfc63831f1C517d196470F03a61afD3d0CC0f7127', tokens: [ADDRESSES.bsc.USDT] }), - sumTokensExport({ owner:'0xb220195156c590e6645b86e8e65a029979095463', tokens: [ADDRESSES.bsc.USDT] }) //cold wallet - ]) - }, - ethereum: { - tvl: sumTokensExport({ owner:'0xfc63831f1C517d196470F03a61afD3d0CC0f7127', tokens: [ADDRESSES.ethereum.USDT] }) - }, - ton: { - tvl: sumTokensExport({ owner:'UQAdMVptN2z9YZi9XiaGhQMQiXzfsPaGWsmtYk9RF7VK4kIB', onlyWhitelistedTokens: true, tokens: [ADDRESSES.ton.USDT]}) - }, -}; \ No newline at end of file diff --git a/projects/electrikfinance/index.js b/projects/electrikfinance/index.js deleted file mode 100644 index 1f5271627e4..00000000000 --- a/projects/electrikfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - klaytn: { - tvl: () => ({}) - } -} - -module.exports.deadFrom = '2023-01-01' diff --git a/projects/electroswap-v2/index.js b/projects/electroswap-v2/index.js deleted file mode 100644 index 01cc092975f..00000000000 --- a/projects/electroswap-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'etn': '0x203D550ed6fA9dAB8A4190720CF9F65138abd15B' -}) \ No newline at end of file diff --git a/projects/electroswap-v3/index.js b/projects/electroswap-v3/index.js deleted file mode 100644 index b580d9c6e93..00000000000 --- a/projects/electroswap-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - etn: { - factory: "0xbF6Bcbe2be545135391777F3B4698be92E2EB8cA", - fromBlock: 1242016, - }, -}); diff --git a/projects/electrowizy/index.js b/projects/electrowizy/index.js deleted file mode 100644 index 1bc784f1e6a..00000000000 --- a/projects/electrowizy/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - polygon: { - tvl: sumERC4626VaultsExport({ vaults: [ '0x663819aB31cB6204a2A732996549B702DeC38aa9'], balanceAbi: 'uint256:totalStaked', tokenAbi: 'address:stakingToken' }), - } -} diff --git a/projects/elektrik/index.js b/projects/elektrik/index.js deleted file mode 100644 index c817693b4b0..00000000000 --- a/projects/elektrik/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { cachedGraphQuery } = require('../helper/cache') - -const query = `{ - pools { - id - token0 { id } - token1 { id } - } -}` - -async function tvl(api) { - const { pools } = await cachedGraphQuery('elektrik-2', 'https://subgraph.elektrik.network/subgraphs/name/ELEKTRIK-GRAPH-V2', query) - const ownerTokens = pools.map(i => [[i.token0.id, i.token1.id], i.id]) - return sumTokens2({ api, ownerTokens, }) -} - - -module.exports = { - lightlink_phoenix: { tvl } -} diff --git a/projects/elementfi/index.js b/projects/elementfi/index.js deleted file mode 100644 index 38a58d8b549..00000000000 --- a/projects/elementfi/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const trancheFactoryAddress = "0x62F161BF3692E4015BefB05A03a94A40f520d1c0"; -const ccpFactory = '0xb7561f547F3207eDb42A6AfA42170Cd47ADD17BD'; -const balVault = '0xBA12222222228d8Ba445958a75a0704d566BF2C8' - -const wps = [ - '0xD5D7bc115B32ad1449C6D0083E43C87be95F2809', - '0xDe620bb8BE43ee54d7aa73f8E99A7409Fe511084', - '0x67F8FCb9D3c463da05DE1392EfDbB2A87F8599Ea', - '0xF94A7Df264A2ec8bCEef2cFE54d7cA3f6C6DFC7a', - '0xE54B3F5c444a801e61BECDCa93e74CdC1C4C1F90', - '0x2D6e3515C8b47192Ca3913770fa741d3C4Dac354', - '0xd16847480D6bc218048CD31Ad98b63CC34e5c2bF', - '0x7320d680Ca9BCE8048a286f00A79A2c9f8DCD7b3', - '0x9e030b67a8384cbba09D5927533Aa98010C87d91' -] - -const abis = { - "underlying": "address:underlying", - "tranche": "address:tranche", - "valueSupplied": "uint256:valueSupplied", - "getPoolId": "function getPoolId() view returns (bytes32)", - "getPoolTokens": "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)" -} - -const eventAbis = { - trancheCreated: 'event TrancheCreated (address indexed trancheAddress, address indexed wpAddress, uint256 indexed expiration)', - ccPoolCreated: "event CCPoolCreated(address indexed pool, address indexed bondToken)" -} - -const trancheTvl = async (api) => { - const tranchesLogs = await getLogs({ api, extraKey: 'tranche', target: trancheFactoryAddress, eventAbi: eventAbis.trancheCreated, fromBlock: 12685765, onlyArgs: true }) - const tranches = tranchesLogs.map(i => i.trancheAddress) - const [underlyings, valueSupplies] = await Promise.all([ - api.multiCall({ abi: abis.underlying, calls: tranches }), - api.multiCall({ abi: abis.valueSupplied, calls: tranches }) - ]) - api.add(underlyings, valueSupplies) -} - -const wpTvl = async (api) => { - const poolIds = await api.multiCall({ calls: wps, abi: abis.getPoolId }) - const poolTokens = (await api.multiCall({ calls: poolIds.map((id) => ({ target: balVault, params: [id] })), abi: abis.getPoolTokens })) - poolTokens.forEach(({ tokens, balances }) => { - api.add(tokens,balances) - }) -} - -const ccTvl = async (api) => { - const ccsLogs = (await getLogs({ api, extraKey: 'ccs', target: ccpFactory, fromBlock: 12686198, eventAbi: eventAbis.ccPoolCreated, onlyArgs: true })).map(i => i.pool) - const poolIds = await api.multiCall({ calls: ccsLogs, abi: abis.getPoolId }) - const poolTokens = (await api.multiCall({ calls: poolIds.map((id) => ({ target: balVault, params: [id] })), abi: abis.getPoolTokens })) - poolTokens.forEach(({ tokens, balances }) => { - api.add(tokens,balances) - }) -} - - -const tvl = async (api) => { - await trancheTvl(api) - await wpTvl(api) - await ccTvl(api) -} - -module.exports = { - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/elephantdex/index.js b/projects/elephantdex/index.js deleted file mode 100644 index f997d4c2c6f..00000000000 --- a/projects/elephantdex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - harmony: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x0Dea90EC11032615E027664D2708BC292Bbd976B', - }) - }, -}; diff --git a/projects/elephantmoney/index.js b/projects/elephantmoney/index.js deleted file mode 100644 index 307a0d17821..00000000000 --- a/projects/elephantmoney/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const contracts = { - BUSD: ADDRESSES.bsc.BUSD, - TRUNK: '0xdd325C38b12903B727D16961e61333f4871A70E0', - treasury: '0xCb5a02BB3a38e92E591d323d6824586608cE8cE4', - LP_TRUNK: '0xf15A72B15fC4CAeD6FaDB1ba7347f6CCD1E0Aede', - LP_ELEPHANT_BNB: '0x1cea83ec5e48d9157fcae27a19807bef79195ce1', - LP_ELEPHANT_BUSD: '0x647bc907d520c3f63be38d01dbd979f5606bec48', - staking: '0xAF0980A0f52954777C491166E7F40DB2B6fBb4Fc', - ELEPHANT: '0xE283D0e3B8c102BAdF5E8166B73E02D96d92F688' -}; - -const LPs = [contracts.LP_TRUNK, contracts.LP_ELEPHANT_BNB, contracts.LP_ELEPHANT_BUSD] - -module.exports = { - bsc: { - pool2: pool2([contracts.TRUNK, contracts.ELEPHANT], LPs), - tvl: sumTokensExport({ tokens: [contracts.BUSD], owners: [contracts.treasury], }), - staking: stakings([contracts.staking], contracts.ELEPHANT) - } -}; \ No newline at end of file diff --git a/projects/elevenfinance/index.js b/projects/elevenfinance/index.js deleted file mode 100644 index d6b45ae4aaf..00000000000 --- a/projects/elevenfinance/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const utils = require('../helper/utils'); - -const apiUrl = 'https://eleven.finance/api.json'; - -const excludedPools = { - 'polygon': [ - 'ELE ', - 'ELE-MUST cLP', - 'ELE-QUICK qLP', - 'ELE-MATIC cLP', - 'ELE-MATIC qLP', - 'ELE-MATIC SLP', - 'ELE-MATIC WLP', - 'ELE-USDC DLP', - 'ELE-DFYN DLP', - ], - 'fantom': [ - 'ELE-WFTM SLP', - ], - 'bsc': [ - 'ELE', - 'ELE-BNB WLP', - 'ELE-BNB LP V2', - ], - 'avax': [ - 'ELE-WAVAX TLP', - 'ELE-WAVAX PLP', - 'ELE-PNG PLP', - 'ELE ', - ], - 'okexchain': [ - 'ELE-USDT PLP', - ], -}; - -const tvl = async (api) => { - const { data } = await utils.fetchURL(apiUrl); - let tvl = parseFloat(data.tvlinfo[api.chainId]); - - const poolsToExclude = excludedPools[api.chainId] || []; - for (const pool of poolsToExclude) { - const poolTVL = parseFloat(data[pool]?.tvl ?? 0); - tvl -= poolTVL; - } - - return api.addUSDValue(Math.round(tvl)); -}; - -module.exports.misrepresentedTokens = true - -const chains = ["bsc", "polygon", "fantom", "avax", "okexchain"] -chains.forEach((chain) => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/elexium/index.js b/projects/elexium/index.js deleted file mode 100644 index 25363aa8de5..00000000000 --- a/projects/elexium/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const alephium = require("../helper/chain/alephium"); - -const elexiumTokenId = "cad22f7c98f13fe249c25199c61190a9fb4341f8af9b1c17fcff4cd4b2c3d200"; -const alephId = '0000000000000000000000000000000000000000000000000000000000000000' -const veAddress = "23XEjbtTNN2FtcJryavvfMf6VwgVK22uiw5T6N85kjFzX"; -const pairFactoryAddress = "22oTtDJEMjNc9QAdmcZarnEzgkAooJp9gZy7RYBisniR5"; - -async function getAllPools() { - const results = await alephium.contractMultiCall([ - { group: 0, address: pairFactoryAddress, methodIndex: 0 }, - ]); - - const pairsCount = Number(results[0].returns[0].value); - - const poolIds = []; - - for (let i = 0; i < pairsCount; i++) { - const results = await alephium.contractMultiCall([ - { - group: 0, - address: pairFactoryAddress, - methodIndex: 2, - args: [{ value: i, type: "U256" }], - }, - ]); - - const poolId = results[0].returns[0].value; - - poolIds.push(poolId); - } - - return poolIds; -} - -async function addPoolTokens(poolId, api) { - const poolAddress = alephium.addressFromContractId(poolId); - - const tokenBalance = (await alephium.getTokensBalance(poolAddress)).filter( - (t) => t.tokenId !== poolId, - ); - - tokenBalance.forEach(i => api.add(i.tokenId, i.balance)); - - const alphBalance = (await alephium.getAlphBalance(poolAddress)).balance; - api.add(alephId, alphBalance); -} - -async function poolsTvl(api) { - const allPools = await getAllPools() - - for (const pool of allPools) - await addPoolTokens(pool, api); -} - -async function veTVL(api) { - const tokenBalance = (await alephium.getTokensBalance(veAddress)).find((t) => t.tokenId === elexiumTokenId,) ?? { balance: 0 }; - api.add(elexiumTokenId, tokenBalance.balance); -} - -module.exports = { - timetravel: false, - methodology: - "Total value of tokens provided as liquidity on alephium and total amount of locked $EX in voting escrow", - alephium: { tvl: poolsTvl, staking: veTVL }, -}; diff --git a/projects/elf-finance/index.js b/projects/elf-finance/index.js deleted file mode 100644 index f9f8dc0e516..00000000000 --- a/projects/elf-finance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const elfTokenAddress = "0x300f03050271E33501973Ef00b320F4e9a1a68E2"; -const giftTokenAddress = "0x1a01505f6D6f2d693efa06eA66a205c552f82818"; -const giftRewardPoolAddress = "0xBB692cad44e39359b38299f63a13490Edb975CB3"; -const boardroomAddress = "0xA57235aD899D686285726a8821A99C610Cd5eA78"; -const usdcLPs = [ - "0x0AC627348E0b852A99b2F025E8b644033629DAA8", // elfUsdcLpAddress - "0x0b450366b48b0B8D3a7D6157cf7DaFF7E216a635", //giftUsdcLpAddress -]; - -module.exports = { - ...tombTvl(elfTokenAddress, giftTokenAddress, giftRewardPoolAddress, boardroomAddress, usdcLPs, "fantom", undefined, false, usdcLPs[1]) -} -module.exports.deadFrom = '2023-08-09' \ No newline at end of file diff --git a/projects/elfi/index.js b/projects/elfi/index.js deleted file mode 100644 index 278989344a3..00000000000 --- a/projects/elfi/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs') -const vaults = { - 'arbitrum': ['0x8772bB60EA1BBA8a7729a90ff1907855FD55ba83', '0xbC268D619b406bdfCA1B4AC30d50Ba30AB38E96f', '0x9099824Be9aB2b691ce0E478853Cb15Fb81FF677'], - 'base': ['0x9099824Be9aB2b691ce0E478853Cb15Fb81FF677', '0x8772bB60EA1BBA8a7729a90ff1907855FD55ba83', '0xb059B996C2Ebf23E77dD3110AE1f334caBF2DeA2'], -} -const elfUSD = { - 'arbitrum': '0x70B8117b3177a7CE42BEe021E89625f27E45b98C', - 'base': '0xc367281626dDbf7fE93229A396AE8E29dE25D5E2' -} -async function arbitrum_tvl(api) { - const logs = await getLogs2({ - api, - factory: '0x153c613D572c050104086c7113d00B76Fbaa5d55', - eventAbi: 'event MarketCreated (bytes32 code, string stakeTokenName, address indexToken, address baseToken, address stakeToken)', - fromBlock: 233088372, - }) - const assetTokens = [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.DAI, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.LINK, ADDRESSES.arbitrum.ARB] - const tokens = logs.reduce((acc, log) => - [...acc, log.baseToken, log.indexToken], assetTokens) - const owners = logs.reduce((acc, log) => - [...acc, log.stakeToken], [...vaults.arbitrum, elfUSD.arbitrum]) - return api.sumTokens({ tokens, owners }) -} -async function base_tvl(api) { - const logs = await getLogs2({ - api, - factory: '0x957e0C2Ea128b0307B5730ff83e0bA508b729d50', - eventAbi: 'event MarketCreated (bytes32 code, string stakeTokenName, address indexToken, address baseToken, address stakeToken)', - fromBlock: 26932589, - }) - const assetTokens = [ADDRESSES.base.USDC, ADDRESSES.base.USDT, ADDRESSES.base.DAI] - const tokens = logs.reduce((acc, log) => - [...acc, log.baseToken, log.indexToken], assetTokens) - const owners = logs.reduce((acc, log) => - [...acc, log.stakeToken], [...vaults.base, elfUSD.base]) - return api.sumTokens({ tokens, owners }) -} -module.exports = { - arbitrum: { - tvl: arbitrum_tvl, - }, - base: { - tvl: base_tvl, - }, -}; \ No newline at end of file diff --git a/projects/elixir/index.js b/projects/elixir/index.js deleted file mode 100644 index 8d823396f6f..00000000000 --- a/projects/elixir/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const MANAGER_ABI = { - getPoolToken: "function getPoolToken(uint256 id, address token) view returns (address _address, uint256 amount, uint256, bool)", - getPoolToken_2: "function pools(uint256 id) view returns (address router, uint8 poolType, address token, uint256 orderlyDepositFee, uint256 orderlyWithdrawalFee, uint256 activeAmount, uint256 hardcap)" -} - -const DEUSD_LP_STAKING = "0xC7963974280261736868f962e3959Ee1E1B99712"; -const COMMITS_CONTRACT = "0x4265f5D6c0cF127d733EeFA16D66d0df4b650D53"; -const COMMITS_VAULT = "0x4B4EEC1DDC9420a5cc35a25F5899dC5993f9e586"; -const COMMITS_VAULT_2 = "0x704377f719651C3eE6902Ff3C9D5522e5054d429"; -const deUSD = ADDRESSES.ethereum.deUSD; - -const LP_TOKENS = [ - "0xb478Bf40dD622086E0d0889eeBbAdCb63806ADde", // DEUSD/DAI Curve LP - "0x88DFb9370fE350aA51ADE31C32549d4d3A24fAf2", // DEUSD/FRAX Curve LP - "0x5F6c431AC417f0f430B84A666a563FAbe681Da94", // DEUSD/USDC Curve LP - "0x7C4e143B23D72E6938E06291f705B5ae3D5c7c7C", // DEUSD/USDT Curve LP -]; - -const VERTEX_MANAGER = '0x052Ab3fd33cADF9D9f227254252da3f996431f75' -const ORDERLY_MANAGER = '0x79865208f5dc18a476f49e6dbfd7d79785cb8cd8' - -const orderlyIntegration = async (api, manager, poolIds) => { - const pools = await api.multiCall({ abi: MANAGER_ABI.getPoolToken_2, calls: poolIds, target: manager }); - pools.forEach(i => api.add(i.token, i.activeAmount)); -} - -const integration = async (api, manager, poolIds, tokens) => { - if (manager === ORDERLY_MANAGER) - return orderlyIntegration(api, manager, poolIds) - const calls = poolIds.map(id => tokens.map(token => ({ params: [id, token] }))).flat(); - const pools = await api.multiCall({ abi: MANAGER_ABI.getPoolToken, calls, target: manager }); - pools.forEach((v, i) => api.add(calls[i].params[1], v.amount)); -} - -module.exports = { - ethereum: { - tvl: async (api) => { - const deusdSupply = await api.call({ target: deUSD, abi: "erc20:totalSupply" }) - api.add(deUSD, deusdSupply); - await api.sumTokens({ owners: [COMMITS_CONTRACT, COMMITS_VAULT, COMMITS_VAULT_2], tokens: [ADDRESSES.ethereum.STETH, ADDRESSES.null] }) - }, - pool2: sumTokensExport({ owner: DEUSD_LP_STAKING, tokens: LP_TOKENS }) - }, - arbitrum: { - tvl: async (api) => { - await integration(api, VERTEX_MANAGER, [1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 31, 34, 36, 38, 40, 41, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62], [ - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.ARB, - '0x95146881b86B3ee99e63705eC87AfE29Fcc044D9', - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.WETH, - ]) - await integration(api, ORDERLY_MANAGER, Array.from({ length: 10 }, (_, i) => i + 1)) - } - }, - sei: { - tvl: sumTokensExport({ tokensAndOwners: [ - ['0xBE574b6219C6D985d08712e90C21A88fd55f1ae8', '0x3490a00b308C5A1f0bBF67BA71361F543deBd08F'] - ]}) - } -}; diff --git a/projects/elkfinance/index.js b/projects/elkfinance/index.js deleted file mode 100644 index 1a8f6623ac2..00000000000 --- a/projects/elkfinance/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const factories = { - xdai: "0xCB018587dA9590A18f49fFE2b85314c33aF3Ad3B", - polygon: "0xE3BD06c7ac7E1CeB17BdD2E5BA83E40D1515AF2a", - fantom: "0x7Ba73c99e6f01a37f3e33854c8F544BbbadD3420", - bsc: "0x31aFfd875e9f68cd6Cd12Cee8943566c9A4bBA13", - heco: "0x997fCE9164D630CC58eE366d4D275B9D773d54A4", - avax: "0x091d35d7F63487909C863001ddCA481c6De47091", - kcc: "0x1f9aa39001ed0630dA6854859D7B3eD255648599", - harmony: "0xCdde1AbfF5Ae3Cbfbdb55c1e866Ac56380e18720", - okexchain: "0x1116f8B82028324f2065078b4ff6b47F1Cc22B97", - moonriver: "0xd45145f10fD4071dfC9fC3b1aefCd9c83A685e77", - cronos: "0xEEa0e2830D09D8786Cb9F484cA20898b61819ef1", - telos: "0x47c3163e691966f8c1b93B308A236DDB3C1C592d", - hoo: "0x9c03E724455306491BfD2CE0805fb872727313eA", - elastos: "0x440a1B8b8e968D6765D41E6b92DF3cBb0e9D2b1e", - fuse: "0x779407e40Dad9D70Ba5ADc30E45cC3494ec71ad2", - iotex: "0xF96bE66DA0b9bC9DFD849827b4acfA7e8a6F3C42", - ethereum: "0x6511eBA915fC1b94b2364289CCa2b27AE5898d80", - optimism: "0xedfad3a0F42A8920B011bb0332aDe632e552d846", - arbitrum: "0xA59B2044EAFD15ee4deF138D410d764c9023E1F0", - kava: "0xC012C4b3d253A8F22d5e4ADA67ea2236FF9778fc", - bittorrent: "0xc06348AEE3f3E92eE452816E0D3F25C919F6fB04", - bitgert: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - metis: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - wan: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - neon_evm: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - astar: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - base: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - linea: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - velas: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - q: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", - rsk: "0x69D10bc18cd588a4B70F836A471D4e9c2Fd86092" -} - -function chainTvl(chain) { - return getUniTVL({ chain, factory: factories[chain], useDefaultCoreAssets: true, blacklistedTokens: ['0xa9536b9c75a9e0fae3b56a96ac8edf76abc91978'] }) -} - -Object.keys(factories).forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } -}) -module.exports.misrepresentedTokens = true; -module.exports.timetravel = true - -module.exports.hoo.tvl = () => ({}) diff --git a/projects/ellipisis-phoenix/index.js b/projects/ellipisis-phoenix/index.js deleted file mode 100644 index de7fc653afa..00000000000 --- a/projects/ellipisis-phoenix/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2, getConnection, decodeAccount, } = require('../helper/solana') -const { PublicKey } = require('@solana/web3.js') - -async function tvl() { - const program = new PublicKey('PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY') - const connection = getConnection(); - const accounts0 = await connection.getProgramAccounts(program, { - filters: [{ - dataSize: 445536 - }] - }) - const accounts1 = await connection.getProgramAccounts(program, { - filters: [{ - dataSize: 1723488 - }] - }) - const accounts = [...accounts0, ...accounts1] - const tokenAccounts = accounts.map(i => decodeAccount('phoenix', i.account)) - .map(i => [i.baseParams.vaultKey, i.quoteParams.vaultKey]).flat() - return sumTokens2({ tokenAccounts, }) -} - -module.exports = { - timetravel: false, - solana: { tvl }, -} diff --git a/projects/ellipsis/abi.json b/projects/ellipsis/abi.json deleted file mode 100644 index 9ba8b7bfd61..00000000000 --- a/projects/ellipsis/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "balancesBasePool": "function balances(uint256 arg0) view returns (uint256)", - "balancesMetaPool": "function balances(uint256 arg0) view returns (uint256)", - "lockedSupply": "uint256:lockedSupply", - "totalSupply": "uint256:totalSupply", - "totalSupplyLP": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/ellipsis/index.js b/projects/ellipsis/index.js deleted file mode 100644 index 3c94bf110ca..00000000000 --- a/projects/ellipsis/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -async function tvl(api) { - const ownerTokens = [] - const poolInfo = await getConfig('ellipsis', 'https://api.ellipsis.finance/api/getPoolsCrypto') - const lpTokens = poolInfo.data.allPools.map(i => i.lpToken.address.toLowerCase()) - poolInfo.data.allPools.map(pool => { - ownerTokens.push([pool.tokens.map(i => i.erc20address ?? i.address), pool.address]) - }) - - ownerTokens.push([[nullAddress], '0xfd4afeac39da03a05f61844095a75c4fb7d766da']) - return sumTokens2({ api, ownerTokens, blacklistedTokens: lpTokens }) -} - -async function staking(api) { - const stakingContract = "0x4076cc26efee47825917d0fec3a79d0bb9a6bb5c" - const eps = "0xa7f552078dcc247c2684336020c03648500c6d9f" - const locked = await api.call({ target: stakingContract, abi: 'uint256:lockedSupply' }) - api.add(eps, locked) -} - -module.exports = { - bsc: { - tvl, - staking - } -} \ No newline at end of file diff --git a/projects/elma/index.js b/projects/elma/index.js deleted file mode 100644 index 4f1ce27e1de..00000000000 --- a/projects/elma/index.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - methodology: "Principal Tokens (PT) are always 1:1 mintable & redeemable with Underlying Tokens (UT). TVL is Total Market Cap of all PT, where 1 PT = 1 UT.", -} - -const config = { - fantom: { markets: [ - '0x0a558d43bccbc7586547fc74e3a0e70467215b3c', - '0x35402cDc3BCFFb904116bDC720Afc75c2921De08', - '0xB6633c351a3aF289ed6bbF4A78c682FA16656B1E', - '0xFaa22e721924fa57d042F6E2c793997aA9287B27', - ]} -} - -Object.keys(config).forEach(chain => { - const {markets,} = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:BASE', calls: markets}) - const wTokens = await api.multiCall({ abi: 'address:WRAP', calls: markets}) - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: wTokens}) - api.add(tokens, supplies) - } - } -}) \ No newline at end of file diff --git a/projects/elocks/index.js b/projects/elocks/index.js deleted file mode 100644 index 3d8ee0869cc..00000000000 --- a/projects/elocks/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const IELOCKS = { - lockedAssets: "function lockedAssets(uint) public view returns (address token, uint balance, uint)" -} - -const elocks = { - fantom: "0x2f20A659601d1c161A108E0725FEF31256a907ad", - sonic: "0xc6b515328f970ec25228a716bf91774e5bd5abc0" -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(elocks).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const data = await api.fetchList({ lengthAbi: 'totalSupply', itemAbi: IELOCKS.lockedAssets, target: elocks[api.chain], startFromOne: true, }) - data.forEach(i => api.addToken(i.token, i.balance)) - return sumTokens2({ api, resolveLP: true}) - }, - } -}) diff --git a/projects/elvesdex/index.js b/projects/elvesdex/index.js deleted file mode 100644 index f7af22743df..00000000000 --- a/projects/elvesdex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - alv: { - tvl: getUniTVL({ factory: '0xcadB0365436cbdB05D71C355F209AdaB214D8Dab', useDefaultCoreAssets: true, permitFailure: true }), - } -}; diff --git a/projects/elys-dex/index.js b/projects/elys-dex/index.js deleted file mode 100644 index dd12adf763d..00000000000 --- a/projects/elys-dex/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { get } = require('../helper/http') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - let key = '' - const pools = [] - do { - const { pagination: { next_key }, pool } = await get('https://api.elys.network/elys-network/elys/amm/pool/1?pagination.count_total=true&pagination.per_page=1000&pagination.key=' + key) - key = next_key - pools.push(...pool) - } while (key) - pools.forEach(pool => { - pool.pool_assets.forEach(({ token: { denom, amount } }) => api.add(denom, amount)) - }) - - return sumTokens2({ api }) -} - - -module.exports = { - elys: { tvl, } -} \ No newline at end of file diff --git a/projects/elys-lending/index.js b/projects/elys-lending/index.js deleted file mode 100644 index 4892712635b..00000000000 --- a/projects/elys-lending/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - const { net_stakings } = await get('https://api.elys.network/elys-network/elys/masterchef/chain_tvl') - net_stakings.filter(i => i.denom === 'USDC').map(i => api.addCGToken('usd-coin', i.amount)) -} - - -async function borrowed(api) { - const { usdc_staking, net_stakings } = await get('https://api.elys.network/elys-network/elys/masterchef/chain_tvl') - api.addCGToken('usd-coin', usdc_staking) - net_stakings.filter(i => i.denom === 'USDC').map(i => api.addCGToken('usd-coin', i.amount * -1)) -} - - -module.exports = { - timetravel: false, - elys: { tvl, borrowed, } -} \ No newline at end of file diff --git a/projects/elysia/index.js b/projects/elysia/index.js deleted file mode 100644 index cb1f3a54652..00000000000 --- a/projects/elysia/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const abi = { - loansValue: "uint256:loansValue", - v1Asset: "address:getUnderlyingAsset", - v2Asset: "address:asset", -} - -const addresses = { - elfi: "0x4da34f8264cb33a5c9f17081b9ef5ff6091116f4", - el: "0x2781246fe707bb15cee3e5ea354e2154a2877b16", - elStaking: "0x3F0c3E32bB166901AcD0Abc9452a3f0c5b8B2C9D", - elfiStaking: [ - "0xb41bcd480fbd986331eeed516c52e447b50dacb4", - "0xCD668B44C7Cf3B63722D5cE5F655De68dD8f2750", - "0x24a7fb55e4ac2cb40944bc560423b496dfa8803f", - ], - bscElfi: "0x6C619006043EaB742355395690c7b42d3411E8c0", - bscElfiStaking: [ - "0x73653254ED0F28D6E5A59191bbB38B06C899fBcA", - "0x861c2221e4d73a97cd94e64c7287fd968cba03e4", - ], -}; - - -const config = { - ethereum: { - v1Pools: ['0x527c901e05228f54a9a63151a924a97622f9f173', '0x3fea4cc5a03e372ac9cded96bd07795ac9034d71', '0xe0bda8e3a27e889837ae37970fe97194453ee79c'], - stakingConfig: { - tokens: [addresses.el, addresses.elfi], - owners: [addresses.elStaking, ...addresses.elfiStaking], - }, - }, - bsc: { - v1Pools: ['0x5bb4d02a0ba38fb8b916758f11d9b256967a1f7f'], - v2Pools: ['0x924B375Ea2E8f1F2E686E53823748C7C29ad6466', '0xB21a2a097FFC25A4B1C9baA50da482eA84687dcE', '0x836B9a6EF1B6a813136fe91803285383Ba94956C', '0x5a0154B76E8afe0ef3AA28fD6b4eA863458dB9EB'], - stakingConfig: { - tokens: [addresses.bscElfi], - owners: addresses.bscElfiStaking, - }, - }, - klaytn: { - v2Pools: ['0x60961ca3A40BE41ddDEf708bf51ef2F8e9760A3b', '0x7F97f905A8d6fe4C493D339F094232E3577b4DBd'] - } -} - -Object.keys(config).forEach(chain => { - const { v1Pools, v2Pools, stakingConfig } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (v1Pools) { - const v1Assets = await api.multiCall({ abi: abi.v1Asset, calls: v1Pools }) - await api.sumTokens({ tokensAndOwners2: [v1Assets, v1Pools] }) - } - - if (v2Pools) { - const v2Assets = await api.multiCall({ abi: abi.v2Asset, calls: v2Pools }) - await api.sumTokens({ tokensAndOwners2: [v2Assets, v2Pools] }) - } - return api.getBalances() - }, - borrowed: async (api) => { - if (v1Pools) { - const v1Assets = await api.multiCall({ abi: abi.v1Asset, calls: v1Pools }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: v1Assets.map((v, i) => ({ target: v, params: v1Pools[i] })) }) - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: v1Pools }) - api.addTokens(v1Assets, supplies) - api.addTokens(v1Assets, bals.map(i => i * -1)) - } - - if (v2Pools) { - const v2Assets = await api.multiCall({ abi: abi.v2Asset, calls: v2Pools }) - const loansValues = await api.multiCall({ abi: abi.loansValue, calls: v2Pools }) - api.addTokens(v2Assets, loansValues) - } - return api.getBalances() - }, - } - - if (stakingConfig) { - module.exports[chain].staking = sumTokensExport(stakingConfig) - } - -}) \ No newline at end of file diff --git a/projects/elysiumBridge/index.js b/projects/elysiumBridge/index.js deleted file mode 100644 index 9c36be4c115..00000000000 --- a/projects/elysiumBridge/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - - polygon: { - bridges: [ - '0x580F7C02ad1d8B7116B3424AB837B96F7b1ad597', - ], - tokens: { - PYR: '0x430ef9263e76dae63c84292c3409d61c598e9682', - CCO2: '0x82B37070e43C1BA0EA9e2283285b674eF7f1D4E2', - WMATIC: ADDRESSES.polygon.WMATIC_2, - WETH: ADDRESSES.polygon.WETH_1, - USDT: ADDRESSES.polygon.USDT, - MV: '0xA3c322Ad15218fBFAEd26bA7f616249f7705D945', - } - }, - ethereum: { - bridges: [ - '0x314D915e947cc2907a704CeEDe7accf10Ea7dA6e', - ], - tokens: { - PYR: '0x430ef9263e76dae63c84292c3409d61c598e9682', - // CCO2: '0x82B37070e43C1BA0EA9e2283285b674eF7f1D4E2', - // WMATIC: ADDRESSES.polygon.WMATIC_2, - // WETH: ADDRESSES.polygon.WETH_1, - // USDT: ADDRESSES.polygon.USDT, - // MV: '0xA3c322Ad15218fBFAEd26bA7f616249f7705D945', - } - }, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: (_, _b, {[chain]: block }) => { - const { bridges: owners, tokens } = config[chain] - return sumTokens2({ tokens: Object.values(tokens), owners, chain, block }) - } - } -}) - diff --git a/projects/elysiumswap/index.js b/projects/elysiumswap/index.js deleted file mode 100644 index 60a9291557a..00000000000 --- a/projects/elysiumswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x5bec5d65fAba8E90e4a74f3da787362c60F22DaE) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - elsm: { - tvl: getUniTVL({ factory: '0x5bec5d65fAba8E90e4a74f3da787362c60F22DaE', useDefaultCoreAssets: true }), - }, -}; diff --git a/projects/elyx/index.js b/projects/elyx/index.js deleted file mode 100644 index 243ad53d534..00000000000 --- a/projects/elyx/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const DHEDGE_V2_VAULT_SUMMARY_ABI = - "function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue))"; - -const tvl = async (api) => { - const target = "0x39F39D48cF4C89D591Fc890f0fF531B0B67c31BC"; - const summary = await api.call({ abi: DHEDGE_V2_VAULT_SUMMARY_ABI, target, }) - const totalValueLocked = summary?.totalFundValue ?? 0; - return { - tether: totalValueLocked / 1e18, - }; -}; - -module.exports = { - nibiru: { - tvl, - }, - misrepresentedTokens: true, - methodology: "Aggregates total value of Elyx' Nibiru vault (based on dHEDGE)", -}; diff --git a/projects/ember-protocol/index.js b/projects/ember-protocol/index.js deleted file mode 100644 index 41dcc9259af..00000000000 --- a/projects/ember-protocol/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const axios = require("axios"); -const { sui } = require("../helper/chain/rpcProxy"); - -const PACKAGE_ID = - "0xc83d5406fd355f34d3ce87b35ab2c0b099af9d309ba96c17e40309502a49976f"; - -async function suiTvl(api) { - const vaults = ( - await axios.get(`https://vaults.api.sui-prod.bluefin.io/api/v1/vaults/info`) - ).data.Vaults; - for (const vault of Object.values(vaults)) { - const vaultTvl = await sui.query({ - target: `${PACKAGE_ID}::vault::get_vault_tvl`, - contractId: vault.ObjectId, - typeArguments: [vault.DepositCoinType, vault.ReceiptCoinType], - sender: - "0xbaef681eafe323b507b76bdaf397731c26f46a311e5f3520ebb1bde091fff295", - }); - api.add(vault.DepositCoinType, vaultTvl[0]); - } -} - -module.exports = { - sui: { - tvl: suiTvl, - }, -}; diff --git a/projects/emberswap/index.js b/projects/emberswap/index.js deleted file mode 100644 index 17093a455d7..00000000000 --- a/projects/emberswap/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') - -const EMBER = "0x6BAbf5277849265b6738e75AEC43AEfdde0Ce88D"; -const VAULT = "0xFFbE92fDA81f853bcf00d3c7686d5DAd5A6600bB"; -const WBCH = ADDRESSES.smartbch.WBCH; -const FACTORY = "0xE62983a68679834eD884B9673Fb6aF13db740fF0"; - -const EMBER_WBCH_PAIR = "0x52c656FaF57DCbDdDd47BCbA7b2ab79e4c232C28" - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xE62983a68679834eD884B9673Fb6aF13db740fF0) is used to find the LP pairs. TVL is equal to the liquidity on the AMM. Ember tokens sent to vault are counted towards staking.", - smartbch: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), - staking: stakingPricedLP(VAULT, EMBER, "smartbch", EMBER_WBCH_PAIR, "bitcoin-cash", 18) - } -}; diff --git a/projects/embr-bridge/index.js b/projects/embr-bridge/index.js deleted file mode 100644 index 7b709907b57..00000000000 --- a/projects/embr-bridge/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos.js'); - -module.exports = { - timetravel: false, - embr: { - tvl: async () => { - const balances = {} - const res = await queryV1Beta1({ - chain: "embr", - url: "/bank/v1beta1/supply", - }); - - res.supply.map(({ denom, amount }) => { - if (!denom.startsWith("evm/")) return - balances[`embr:${denom.replace("evm/", "0x")}`] = amount - }) - - return balances - }, - }, -}; \ No newline at end of file diff --git a/projects/embr/index.js b/projects/embr/index.js deleted file mode 100644 index 88066309392..00000000000 --- a/projects/embr/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -module.exports = { - avax: { - tvl: onChainTvl('0xad68ea482860cd7077a5d0684313dd3a9bc70fbb', 8169253) - }, -} \ No newline at end of file diff --git a/projects/emdx/index.js b/projects/emdx/index.js deleted file mode 100644 index e52c9404e68..00000000000 --- a/projects/emdx/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const ark = "0x3B065b08AAe6e29972058096cfA77E196590784a" -const insuranceFund = "0x80ce46804010C03387a13E27729c5FBb6a309105" -const clearingHouse = "0xBFB083840b0507670b92456264164E5fecd0430B" -const usdcAvalanche = ADDRESSES.avax.USDC - -module.exports = { - avax: { - tvl: sumTokensExport({ - owners: [insuranceFund, clearingHouse, ark,], - tokens: [usdcAvalanche], - chain: 'avax', - }) - } -} diff --git a/projects/emeraldswap/index.js b/projects/emeraldswap/index.js deleted file mode 100644 index db568c8186b..00000000000 --- a/projects/emeraldswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const token = "0xC3B538219B73efd57b75f616e909a728bE945bBb"; -const masterchef = "0xa72Aa0909f3471D2d360aBBc65B6D30fC7b51844"; - -module.exports = { - deadFrom: 1648765747, - ...masterChefExports(masterchef, "bsc", token, false) -} diff --git a/projects/emiswap/index.js b/projects/emiswap/index.js deleted file mode 100644 index c33204f3321..00000000000 --- a/projects/emiswap/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") -const abi = require("../mooniswap/abi.json") -const { staking } = require('../helper/staking') - -const chainConfig = { - ethereum: { factory: '0x1771dff85160768255F0a44D20965665806cBf48', }, - kcc: { factory: '0x945316F2964ef5C6C84921b435a528DD1790E93a', }, - polygon: { factory: '0x23c1b313152e276e0CF61665dc3AC160b3c5aB19', }, - shiden: { factory: '0x7449314B698f918E98c76279B5570613b243eECf', }, - avax: { factory: '0xaD6b9b31832A88Bb59dB4ACD820F8df2CfA84f0f', }, - astar: { factory: '0xb4BcA5955F26d2fA6B57842655d7aCf2380Ac854', }, - aurora: { factory: '0x979e5d41595263f6Dfec4F4D48419C555B80D95c', }, -} - -const eswToken = "0x5a75a093747b72a0e14056352751edf03518031d"; -const stakingPool = "0xe094E3E16e813a40E2d6cC4b89bfeAe0142044e1"; - - -module.exports = { - methodology: "ETH and KCC TVL are the total liquidity from the LPs according to the subgraph. Staking TVL would be ESW value in the staking pool.", -}; - -Object.keys(chainConfig).forEach(chain => { - const { factory } = chainConfig[chain] - module.exports[chain] = { - tvl: async (api) => { - const pools = await api.call({ target: factory, abi: abi.getAllPools, }) - const tokens = await api.multiCall({ calls: pools, abi: abi.getTokens, }) - return sumTokens2({ api, ownerTokens: pools.map((v, i) => [tokens[i], v]) }) - } - } -}) -module.exports.ethereum.staking = staking(stakingPool, eswToken) \ No newline at end of file diff --git a/projects/emojicoin/index.js b/projects/emojicoin/index.js deleted file mode 100644 index 4d7c572da13..00000000000 --- a/projects/emojicoin/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { function_view, timestampToVersion } = require("../helper/chain/aptos"); - -// This function will get all markets and the associated TVL in APT -async function getAllMarkets(ledgerVersion) { - // If called with a ledger version too early, an error will be thrown by function_view. - // If that is the case, return 0 as it means the package wasn't deployed yet and the - // TVL is then 0. - try { - const registry = await function_view({ - functionStr: "0xface729284ae5729100b3a9ad7f7cc025ea09739cd6e7252aff0beb53619cafe::emojicoin_dot_fun::registry_view", - args: [], - type_arguments: [], - ledgerVersion, - }) - return registry.total_quote_locked.value; - } catch { - return 0; - } -} - -// Date at which the contract was deployed. -const DEPLOYED_AT_DATE = '2024-11-20'; - -// Block close to the start date but before it. -const DEPLOYED_AT_BLOCK = 254000000; - -async function tvl(api) { - const version = await timestampToVersion(new Date(api.timestamp * 1000), DEPLOYED_AT_BLOCK); - const tvl_amount = await getAllMarkets(version); - api.add(ADDRESSES.aptos.APT, tvl_amount); -} - -module.exports = { - timetravel: true, - methodology: - "Aggregates TVL in all pools in Emojicoin.fun", - aptos: { - tvl, - }, - start: DEPLOYED_AT_DATE, -}; diff --git a/projects/emp-money/index.js b/projects/emp-money/index.js deleted file mode 100644 index 7dc75ccf17f..00000000000 --- a/projects/emp-money/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const emp = "0x3b248CEfA87F836a4e6f6d6c9b42991b88Dc1d58"; -const eshare = "0xDB20F6A8665432CE895D724b417f77EcAC956550"; -const masonry = "0xe9baceea645e8be68a0b63b9764670f97a50942f"; -const rewardPool = "0x97a68a7949ee30849d273b0c4450314ae26235b1"; -const lps = [ - "0x1747AF98EBF0B22d500014c7dd52985d736337d2", // ESHARE-BNB LP - "0x84821bb588f049913Dc579Dc511E5e31EB22d5E4", // EMP-ETH LP -] - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(emp, eshare, rewardPool, masonry, lps, "bsc", undefined, true, lps[1]) -} \ No newline at end of file diff --git a/projects/empiredex/index.js b/projects/empiredex/index.js deleted file mode 100644 index 85d8f1e74cc..00000000000 --- a/projects/empiredex/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0x06530550A48F990360DFD642d2132354A144F31d', useDefaultCoreAssets: true, }), - }, - cronos: { - tvl: getUniTVL({ factory: '0x06530550A48F990360DFD642d2132354A144F31d', useDefaultCoreAssets: true, }), - }, - xdai: { - tvl: getUniTVL({ factory: '0x06530550A48F990360DFD642d2132354A144F31d', useDefaultCoreAssets: true, }), - }, - polygon: { - tvl: getUniTVL({ factory: '0x06530550A48F990360DFD642d2132354A144F31d', useDefaultCoreAssets: true, }), - }, - fantom: { - tvl: getUniTVL({ factory: '0x06530550A48F990360DFD642d2132354A144F31d', useDefaultCoreAssets: true, }), - }, - avax: { - tvl: getUniTVL({ factory: '0x06530550A48F990360DFD642d2132354A144F31d', useDefaultCoreAssets: true, }), - }, - ethereum: { - tvl: getUniTVL({ factory: '0xd674b01E778CF43D3E6544985F893355F46A74A5', useDefaultCoreAssets: true, }), - }, - kava: { - tvl: getUniTVL({ factory: '0x06530550A48F990360DFD642d2132354A144F31d', useDefaultCoreAssets: true, }), - }, - empire: { - // tvl: getUniTVL({ factory: '0x06530550A48F990360DFD642d2132354A144F31d', useDefaultCoreAssets: true, }), - tvl: () => ({}), - }, - - methodology: "Factory address(0x06530550A48F990360DFD642d2132354A144F31d) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", -}; diff --git a/projects/empyreal/index.js b/projects/empyreal/index.js deleted file mode 100644 index cd4f3855723..00000000000 --- a/projects/empyreal/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { unknownTombs } = require("../helper/unknownTokens"); - -const emp = "0x0DDCE00654f968DeD59A444da809F2B234047aB1"; -const firm = "0x368F6d735F3Fc8Aa0568D2B7aB275cB828B79709"; -const horizon = "0x71d2009460383c970c08b0e37cc8f029bce5bbcd"; -const rewardPool = "0x15084E92785027D4D4918CAbfa11281fC15bF9AC"; -const lps = [ - "0x87e65159edafae4bb1ccd0c94c7ec9427409b370", // FIRM-USDC LP - "0x06675843400F2267060ee886C9088fF498f7c8eC", // EMP-egARB - "0x400ebc22c31bedcdab38a6b27963912df71840ed", -] - -module.exports = unknownTombs({ - token: emp, - shares: [firm], - masonry: [horizon], - rewardPool: [rewardPool], - chain: 'arbitrum', - lps, - useDefaultCoreAssets: true, -}) diff --git a/projects/empyrean/index.js b/projects/empyrean/index.js deleted file mode 100644 index 7946f41140a..00000000000 --- a/projects/empyrean/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking"); - -const empyreanStaking = "0xD080CBc2885c64510923Ac6F5c8896011f86a6aF"; -const EMPYR = "0xE9F226a228Eb58d408FdB94c3ED5A18AF6968fE1"; - -module.exports = { - misrepresentedTokens: true, - aurora: { - staking: staking(empyreanStaking, EMPYR), - tvl: () => ({}), - }, - methodology: - "Counts USDC and TLP (EMPYR-USDC) on the treasury", -}; - - -module.exports.deadFrom = '2022-05-09' \ No newline at end of file diff --git a/projects/emumeme/index.js b/projects/emumeme/index.js deleted file mode 100644 index 9f1efb3dd1a..00000000000 --- a/projects/emumeme/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ chain: 'bsc', masterchef: '0x99e1F72d10ad66906e18b02501e3395B8C4470FF', nativeToken: '0x0dfbB60c53d9226E8D70AA94eac614D8294D7Fa2', useDefaultCoreAssets: true, }) \ No newline at end of file diff --git a/projects/enclabs/index.js b/projects/enclabs/index.js deleted file mode 100644 index 69f501b8b0c..00000000000 --- a/projects/enclabs/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const { compoundExports2 } = require('../helper/compound') -const config = { - sonic: { - endpoint: sdk.graph.modifyEndpoint('Ha7WNTEk2U1MvMUVMmmv8e7uZxJUYY4n8r57iJHYyYcJ'), - }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed, } -}) - -async function getPools(api) { - const { endpoint } = config[api.chain] - const { pools } = await cachedGraphQuery('enclabs/'+api.chain, endpoint, `{ pools { id }}`) - return pools.map(i => i.id) -} - -async function tvl(...args) { - const [api] = args - const pools = await getPools(api) - const tvls = pools.map(i => compoundExports2({ comptroller: i})) - return sdk.util.sumChainTvls(tvls.map(i => i.tvl))(...args) -} - -async function borrowed(...args) { - const [api] = args - const pools = await getPools(api) - const tvls = pools.map(i => compoundExports2({ comptroller: i})) - return sdk.util.sumChainTvls(tvls.map(i => i.borrowed))(...args) -} diff --git a/projects/encoins/index.js b/projects/encoins/index.js deleted file mode 100644 index 741a02fac17..00000000000 --- a/projects/encoins/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano") -const { get } = require("../helper/http") -const EncoinsLedgerAddress = 'addr1q8u2rh5uud6yzmhq0de7vt7p0rvqpfadwnee3tjnz2tl4rct6qt03wjc2lfwyqnd54gwfdey50s7342e3jl6kxwww4kqzfah2x' -const EncoinsWalletAddress = 'addr1zxf7ugf90tp2zfhr47e88jl4jc6nvhtl24r4r2und09dmuqt6qt03wjc2lfwyqnd54gwfdey50s7342e3jl6kxwww4kquasqvy' -const Encoins_Token = 'cardano:9abf0afd2f236a19f2842d502d0450cbcd9c79f123a9708f96fd9b96454e4353' - -async function tvl() { - const lockedAssets = await sumTokens2({ - owners: [EncoinsLedgerAddress, EncoinsWalletAddress] - }) - return lockedAssets -} - -async function stake() { - const RegisteredRelayNodes = await get('https://l2y0u35vje.execute-api.eu-central-1.amazonaws.com/servers'); - const relayNodeBalances = Object.values(RegisteredRelayNodes).reduce((acc, value) => acc + value, 0); - return { - [Encoins_Token]: relayNodeBalances - } -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - staking: stake - } -} diff --git a/projects/endur/erc4626abi.js b/projects/endur/erc4626abi.js deleted file mode 100644 index 1edd29b8500..00000000000 --- a/projects/endur/erc4626abi.js +++ /dev/null @@ -1,48 +0,0 @@ -const ERC4626Abi = [ - { - "name": "asset", - "type": "function", - "inputs": [], - "outputs": [ - { - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "state_mutability": "view" - }, - { - "name": "balanceOf", - "type": "function", - "inputs": [ - { - "name": "account", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view", - "customInput": 'address', - }, - { - "name": "total_assets", - "type": "function", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - } -] - -const ERC4626AbiMap = {} -ERC4626Abi.forEach(i => ERC4626AbiMap[i.name] = i) - -module.exports = { - ERC4626AbiMap -} \ No newline at end of file diff --git a/projects/endur/index.js b/projects/endur/index.js deleted file mode 100644 index b9dd00431ca..00000000000 --- a/projects/endur/index.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Endur is a liquid staking solution for STRK - */ - -const {multiCall} = require("../helper/chain/starknet"); -const { ERC4626AbiMap } = require('./erc4626abi') -const { LSTDATA } = require("./utils") - -// returns the tvl of the all LST tokens in terms of their native token -async function tvl(api) { - const totalAssets = await multiCall({ - calls: LSTDATA.map(c => c.address), - abi: ERC4626AbiMap.total_assets - }); - // the balance of the tokens will be xTOKEN - // considering all 1 TOKEN = 1xTOKEN - // eg for now we have xSTRK, xtBTC, xLBTC, xsolvBTC - - api.addTokens(LSTDATA.map(c => c.token), totalAssets); -} - -module.exports = { - doublecounted: true, - methodology: "The TVL is the total staked STRK managed by Endur's LST", - starknet: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/endur/utils.js b/projects/endur/utils.js deleted file mode 100644 index a606d7912e2..00000000000 --- a/projects/endur/utils.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const tBTC = "0x04daa17763b286d1e59b97c283c0b8c949994c361e426a28f743c67bdfe9a32f" -const LBTC = "0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4" -const solvBTC = "0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68" - -// todo: change BTC variant addresses when defillama support kicks in -const LSTDATA = [ - { //data of an LST contract; currently only xSTRK - address: "0x28d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a", // address of xSTRK vault contract - token: ADDRESSES.starknet.STRK - }, - { - address: "0x6a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13", - token: ADDRESSES.starknet.WBTC - }, - { - // tBTC - address: "0x43a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91", - token: tBTC - }, - { - // LBTC - address: "0x7dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0", - token: LBTC - }, - { - // solvBTC - address: "0x580f3dc564a7b82f21d40d404b3842d490ae7205e6ac07b1b7af2b4a5183dc9", - token: solvBTC - } -] - -module.exports = { - LSTDATA, -} \ No newline at end of file diff --git a/projects/endurance-bridge/index.js b/projects/endurance-bridge/index.js deleted file mode 100644 index c72004d068b..00000000000 --- a/projects/endurance-bridge/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -const config = { - ace: { - bridges: [ - '0xf3310e3f0D46FF5EE7daB69C73452D0ff3979Bed', - ], - tokens: [nullAddress] - }, -} - -Object.keys(config).forEach(chain => { - const { bridges, tokens } = config[chain] - module.exports[chain] = { tvl: sumTokensExport({ tokens, owners: bridges, }) } -}) \ No newline at end of file diff --git a/projects/energiswap.js b/projects/energiswap.js deleted file mode 100644 index 9015e4e6c96..00000000000 --- a/projects/energiswap.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') - -module.exports = { - energi: { - tvl: getUniTVL({ - factory: '0x875aDBaF8109c9CC9AbCC708a42607F573f594E4', - useDefaultCoreAssets: true, - }), - }, -} diff --git a/projects/energondex/index.js b/projects/energondex/index.js deleted file mode 100644 index e5e45cec6ec..00000000000 --- a/projects/energondex/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, staking } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') -const uniTvl = getUniTVL({ factory: '0xBfAe4f07C099798F23f5aC6773532fB637B68Ad7', useDefaultCoreAssets: true, }) -const masterchef = '0x9A40F8374cf840cb1d76DD085E250D86641FB6a3' -const egd = '0xF8F85beB4121fDAa9229141e5D5e4B782d8819D8' -const weth = ADDRESSES.base.WETH - -module.exports = { - misrepresentedTokens: true, - base: { - tvl: sdk.util.sumChainTvls([uniTvl, staking({ - owners: [masterchef], - tokens: [weth], - })]), - staking: staking({ - owners: [masterchef], - tokens: [egd], - lps: ['0x7A7923281B5E56c41b11393689Be1d74E79098c0'], - useDefaultCoreAssets: true, - }) - } -}; \ No newline at end of file diff --git a/projects/energyfi/index.js b/projects/energyfi/index.js deleted file mode 100644 index c72ae4e3793..00000000000 --- a/projects/energyfi/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - moonbeam: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x7c7EaEa389d958BB37a3fd08706Ca884D53Dc1F3', - }) - } -} diff --git a/projects/enibridge/index.js b/projects/enibridge/index.js deleted file mode 100644 index 61f573a2187..00000000000 --- a/projects/enibridge/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: "TVL is calculated by summing the total value of all tokens locked in the protocol’s smart contracts on the source chains.", - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: '0x34F64B5E7FBC9C04Fe8F361bd73B5cde5AFe28B7', - fetchCoValentTokens: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/enki/index.js b/projects/enki/index.js deleted file mode 100644 index 8d99d5e7b5e..00000000000 --- a/projects/enki/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(_, _1, _2, { api }) { - const stakedMetis = await api.call({ - abi: 'erc20:totalSupply', - target: '0x97a2de3A09F4A4229369ee82c7F76be1a5564661', - }); - - api.add(ADDRESSES.metis.Metis, stakedMetis); -} - -module.exports = { - metis: { - tvl - } -}; \ No newline at end of file diff --git a/projects/ennead/index.js b/projects/ennead/index.js deleted file mode 100644 index ade5ba1d609..00000000000 --- a/projects/ennead/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { sumTokensExport } = require('../helper/unknownTokens') -const { staking, } = require("../helper/staking"); -const lensAbi = require("./ramsesLens.json"); - -// Ramses contracts -const ramsesLens = '0xAAA68f40515bCcd8e407EBB4dBdF5046D105621e'; -const nfpManager = '0xAA277CB7914b7e5514946Da92cb9De332Ce610EF'; - -// Ennead contracts -// arbi -const neadRam = '0x40301951Af3f80b8C1744ca77E55111dd3c1dba1'; -const neadStake = '0x7D07A61b8c18cb614B99aF7B90cBBc8cD8C72680'; -const lpDepositor = '0x1863736c768f232189F95428b5ed9A51B0eCcAe5'; -const neadNfpDepositor = '0xe99ead648Fb2893d1CFA4e8Fe8B67B35572d2581'; -// avax -const neadStake_avax = '0xe99ead39204bd394e56502A3ad56d7061EE6B1c7'; -const neadSnek = '0xe99ead9519239F3eAad9339292d8A399739Cd55d'; -const neadSnekLp = '0x82360748aC3D7045812c6783f355b41193d3492E'; -const snekView = '0xe99eadc22747c95c658f41a02F1c6C2CcAefA757'; -const booster = '0xe99ead683Dcf1eF0C7F6612be5098BC5fDF4998d'; - -async function arbiTvl(api) { - let poolsAddresses = await api.call({ target: ramsesLens, abi: lensAbi.allPools, }) - let gauges = await api.multiCall({ target: ramsesLens, calls: poolsAddresses, abi: lensAbi.gaugeForPool, }) - poolsAddresses = poolsAddresses.filter((_, i) => gauges[i] !== nullAddress) - gauges = gauges.filter(gauge => gauge !== nullAddress) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges.map(i => ({ target: i, params: lpDepositor}))}) - api.addTokens(poolsAddresses, bals) - await sumTokens2({ api, uniV3nftsAndOwners: [[nfpManager, neadNfpDepositor],], resolveLP: true, }) -} - -async function avaxTvl(api) { - const poolsAddresses = await api.call({ target: snekView, abi: lensAbi.allActivePools, }) - const gauges = await api.call({ target: snekView, abi: lensAbi.allGauges, }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges.map(i => ({ target: i, params: booster}))}) - api.addTokens(poolsAddresses, bals) - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - staking: staking(neadStake, neadRam), - tvl: arbiTvl, - }, - avax: { - staking: sumTokensExport({ owner: neadStake_avax, tokens: [neadSnek], lps: [neadSnekLp], useDefaultCoreAssets: true, }), - tvl: avaxTvl - } -}; \ No newline at end of file diff --git a/projects/ennead/ramsesLens.json b/projects/ennead/ramsesLens.json deleted file mode 100644 index 2686073867a..00000000000 --- a/projects/ennead/ramsesLens.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "allPools": "function allPools() view returns (address[])", - "gaugeForPool": "function gaugeForPool(address) view returns (address)", - "allActivePools": "function allActivePools() view returns (address[])", - "allGauges": "function allGauges() view returns (address[])", - "allStakingPositionsOf": "function allStakingPositionsOf(address) view returns (tuple(address gauge, uint256 balance, uint256 derivedBalance, tuple(address token, uint256 earned)[] userRewards)[] rewardsData)" -} \ No newline at end of file diff --git a/projects/enosys-bridge/index.js b/projects/enosys-bridge/index.js deleted file mode 100644 index 069f878851c..00000000000 --- a/projects/enosys-bridge/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - xdc: { tvl: sumTokensExport({ owner: '0xcB71dC7b30205eB7Ce27B2cB36b24ba331ecD42a', tokens: [ADDRESSES.xdc.WXDC], logCalls: true }) }, - ethereum: { tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.ethereum.USDT,'0x8936761f2903ed1af2b269e6fa3a79ebb0162c51'], - [ADDRESSES.ethereum.WETH,'0x8936761f2903ed1af2b269e6fa3a79ebb0162c51'], - [ADDRESSES.ethereum.USDT, '0x37aca97a99d1b4260a5e9821d0ef14947fb68970'], - [ADDRESSES.ethereum.WETH, '0x37aca97a99d1b4260a5e9821d0ef14947fb68970'], - ['0x4a220e6096b25eadb88358cb44068a3248254675', '0x37aca97a99d1b4260a5e9821d0ef14947fb68970'], - ], - logCalls: true - }) - }, -} \ No newline at end of file diff --git a/projects/enosys-dex-v3/index.js b/projects/enosys-dex-v3/index.js deleted file mode 100644 index 2cb8d3c4698..00000000000 --- a/projects/enosys-dex-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - songbird: { factory: "0x416F1CcBc55033Ae0133DA96F9096Fe8c2c17E7d", fromBlock: 69857654 }, - flare: { factory: "0x17AA157AC8C54034381b840Cb8f6bf7Fc355f0de", fromBlock: 29925441 }, -}); \ No newline at end of file diff --git a/projects/enso-finance/index.js b/projects/enso-finance/index.js deleted file mode 100644 index 10f6ea4e268..00000000000 --- a/projects/enso-finance/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); - -// Enso finance TVL lies for now in the index tokens held by the liquidityMigration contracts -const liquidityMigrationV2_contract = '0x0c6D898ac945E493D25751Ea43BE2c8Beb881D8C'; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: liquidityMigrationV2_contract, fetchCoValentTokens: true, tokens: [ - '0x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd', - '0x126c121f99e1e211df2e5f8de2d96fa36647c855', - '0x7b18913d945242a9c313573e6c99064cd940c6af', - '0xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c', - '0xe5feeac09d36b18b3fa757e5cf3f8da6b8e27f4c', - ] }), - }, - methodology: - `Get the list of whitelisted index tokens from accepted adapters - TokenSet IndexCoop Indexed PowerPool and PieDAO - and query the amounts held by the vampire LiquidityMigrationV2 contract`, -}; \ No newline at end of file diff --git a/projects/ensuro/index.js b/projects/ensuro/index.js deleted file mode 100644 index b279c691f38..00000000000 --- a/projects/ensuro/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const addressBook = { - polygon: { - native_usdc: ADDRESSES.polygon.USDC_CIRCLE, - aave_v3_native_usdc: "0xA4D94019934D8333Ef880ABFFbF2FDd611C762BD", // aPolUSDCn - AAVE USDC (Native) - compound_blue: "0x781FB7F6d845E3bE129289833b04d43Aa8558c42", // Compound Blue compUSDC - msv: "0x14F6DFEE761455247C6bf2b2b052a1F6245dD6FB", // MultiStrategyVault (holds tokens besides native_usdc) - reserves: [ - // eTokens - {name: "eToken Junior Koala BMA", address: "0xBC33c283A37d46ABA17BC5F8C27b27242688DeC6"}, - {name: "eToken Senior BMA", address: "0xF383eF2D31E1d4a19B3e04ca2937DB6A8DA9f229"}, - {name: "eToken Junior Spot", address: "0x6229D78658305a301E177f9dAEa3a0799fd1528C"}, - {name: "eToken Junior Revo", address: "0x6A0e61C757e384eB1E4A2b94F7E02E68e4b4515e"}, - {name: "eToken Junior StormStrong", address: "0xE36D6585F0c200195b196C66644C519e7674b476"}, - {name: "eToken Junior Barker", address: "0x9F967c614c9573cc4eabE68ae0354E5d11F7eC9D"}, - {name: "eToken Junior DLT", address: "0x9078dDdeA2F82c27791EF78A9ec9ab0f66bfb6F9"}, - {name: "eToken Junior Otonomi", address: "0x32a9CBeb2cA148E55F327c6B4673351dD03eD858"}, - {name: "eToken Junior Bliss", address: "0x71d390C243706b713B5D2b077E942223f7A55d00"}, - {name: "eToken Junior InsureHero", address: "0x15F76F59A29C7c12b4a67751CA525bf9167C1AaB"}, - {name: "eToken Junior Clerity", address: "0x1c7F0c8ba10Db7f2e1c7B5B0A024b66b6baceb45"}, - {name: "eToken Junior FortuneCredit", address: "0xb1Dff6ce862273adcA2B9eFD96A8976764Ac7414"}, - {name: "eToken Junior Azzegura", address: "0x45435f79103472eD62fB9C92F04c50b188b22B99"}, - {name: "eToken Junior Covest", address: "0x92624870dC092C36943682375Df8246BF126D410"}, - {name: "eToken Junior Poncho", address: "0x0AA6623Be5b293fDde18aE0095163785a0b0E4E3"}, - {name: "eToken Junior OneAcre", address: "0x732088771CF528D29937C5aee0b14A29379934A6"}, - {name: "eToken Junior Cliff Horizon", address: "0x623677be20a9Cb9C274c69B00f9d63772d373Cd7"}, - {name: "eToken Junior Rentennials", address: "0x32BEBbfeb5d1B904799729bFaD216baA709615C5"}, - // PremiumsAccounts - {name: "PremiumsAccount Koala BMA", address: "0xc1A74eaC52a195E54E0cd672A9dAB023292C6100"}, - {name: "PremiumsAccount StormStrong", address: "0x06347eA3dA6a5B44eEAe3B8F4a65992Ae073e6F4"}, - {name: "PremiumsAccount Revo", address: "0x47f35B4876138b5d96FfDed1e46aE6b58E6e7B31"}, - {name: "PremiumsAccount Spot", address: "0x42118Df6EBb18346ca425f1c67AC739E95aD9358"}, - {name: "PremiumsAccount Barker", address: "0xa5A8c6b6cb08dB75F5d487F0838D0743871d80a7"}, - {name: "PremiumsAccount DLT", address: "0x8908d99a4E2fF6b7Bf4563593B02AcBc7bBfaBC1"}, - {name: "PremiumsAccount Otonomi", address: "0xE43587386E6e8FA127dd008770cdC07dE2Df91E9"}, - {name: "PremiumsAccount Bliss", address: "0x11b490292799a0edFE37797592F77151C4483442"}, - {name: "PremiumsAccount InsureHero", address: "0x41B5a105C850014eC594879E8511994F25092460"}, - {name: "PremiumsAccount Clerity", address: "0xD26d5015C57C197AE5e7BC866B49837d22364eAB"}, - {name: "PremiumsAccount FortuneCredit", address: "0xaF48bd33916836F5A3dD8C9095692d240A6A2567"}, - {name: "PremiumsAccount Azzegura", address: "0x6CB730dF6B3DB5BAac5FD96F50b04005c1B3A5F7"}, - {name: "PremiumsAccount Covest", address: "0x1D71E3901dB121F05A4a06F92440108055386355"}, - {name: "PremiumsAccount Poncho", address: "0xa490D80A80c8E547D040CE3aBBDCC8CcAD584e4c"}, - {name: "PremiumsAccount OneAcre", address: "0x2F2b6a02A9870D16a2B7126Aacd18c99bF235806"}, - {name: "PremiumsAccount Cliff Horizon", address: "0x72B74498a400EF16c669D8a23d19e672846a8dcF"}, - {name: "PremiumsAccount Rentennials", address: "0xf7ef82a521D6bD4B2cDAA3a1beB30Fb724930651"}, - // Main CFLs - {name: "Multi Target CFL", address: "0x6CaCea88486260ef7E6fdE39Bab3236C908D10B5"}, - // MultiStrategy Vault - Vault that aggregates assets of several reserves - // {name: "MultiStrategy Vault V2", address: "0x14F6DFEE761455247C6bf2b2b052a1F6245dD6FB"}, - ], - } -}; - -async function unwrap4626Tokens({ api, tokensAndOwners, }) { - const tokens = tokensAndOwners.map(i => i[0]) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(i => ({ target: i[0], params: i[1] })), }) - const assets = await api.multiCall({ abi: 'address:asset', calls: tokens, }) - const balsInAssets = await api.multiCall({ abi: 'function convertToAssets(uint256) view returns (uint256)', calls: tokensAndOwners.map((i, idx) => ({ target: i[0], params: bals[idx] })), }) - api.addTokens(assets, balsInAssets) - return api.getBalances() -} - -async function tvl(api) { - const addresses = addressBook[api.chain]; - // Most of the reserves can only have USDC - const ownerTokens = addresses.reserves.map(i => [[addresses.native_usdc], i.address]) - // The MSV also has AAVE Native USDC and Compound Blue - ownerTokens.push([[addresses.native_usdc, addresses.aave_v3_native_usdc], addresses.msv]); - await unwrap4626Tokens({api, tokensAndOwners: [[addresses.compound_blue, addresses.msv]] }); - return sumTokens2({ api, ownerTokens}); -} - -module.exports = { - methodology: `Sums the USDC amounts (both liquid and invested in AAVE) of the different protocol reserves (https://docs.ensuro.co/product-docs/smart-contracts/reserves).`, - polygon: { - tvl - }, - start: '2022-02-01', - hallmarks: [ - [1669852800, "Ensuro V2 Launch"] - ] -}; diff --git a/projects/enterdao/index.js b/projects/enterdao/index.js deleted file mode 100644 index 0e414715655..00000000000 --- a/projects/enterdao/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const StakingContract = "0x3F148612315AaE2514AC630D6FAf0D94B8Cd8E33"; -const yieldFarms = [ - ADDRESSES.ethereum.SUSHI, //SUSHI - "0xbb0e17ef65f82ab018d8edd776e8dd940327b28b", //AXS - "0x0391D2021f89DC339F60Fff84546EA23E337750f", //BOND - "0x0f5d2fb29fb7d3cfee444a200298f468908cc942", //MANA - "0x618679df9efcd19694bb1daa8d00718eacfa2883", //XYZ - "0x767fe9edc9e0df98e07454847909b5e959d7ca0e", //ILV - "0x3845badAde8e6dFF049820680d1F14bD3903a5d0", //SAND - "0x83b546e10917432a722444672504f0d459472171", //SUSHI-LP -]; - - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: sumTokensExport({ owner: StakingContract, tokens: yieldFarms, resolveLP: true, }), - }, - methodology: "We count as TVL all the Yield Farms through Staking Contract", -}; diff --git a/projects/entities/a16z-cold.js b/projects/entities/a16z-cold.js deleted file mode 100644 index 821ab2f252d..00000000000 --- a/projects/entities/a16z-cold.js +++ /dev/null @@ -1,14 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x7D325A9C8F10758188641FE91cFD902499edC782", - "0x2B1Ad6184a6B0fac06bD225ed37C2AbC04415fF4", - "0x05E793cE0C6027323Ac150F6d45C2344d28B6019", //14k MKR staking - "0x0f50D31B3eaefd65236dd3736B863CfFa4c63C4E" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/abraxas-capital.js b/projects/entities/abraxas-capital.js deleted file mode 100644 index ac7154ae870..00000000000 --- a/projects/entities/abraxas-capital.js +++ /dev/null @@ -1,17 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - - -const config = { - ethereum: { - resolveLP: true, - resolveUniV3: true, - owners: [ - "0xD275E5cb559D6Dc236a5f8002A5f0b4c8e610701", - "0xac44F2d75876ead509a2ceB099BC14f9547b5Db6", - "0x09fa0d3154363036ea406f254808c53f5f975518", //makerproxy - "0xDdE0d6e90bfB74f1dC8ea070cFd0c0180C03Ad16" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/akg-ventures.js b/projects/entities/akg-ventures.js deleted file mode 100644 index 3e73dd85129..00000000000 --- a/projects/entities/akg-ventures.js +++ /dev/null @@ -1,12 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x19a504b1096aE59624105E737B22F5943B1a4846", - - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/animoca-brands.js b/projects/entities/animoca-brands.js deleted file mode 100644 index ab23e38edce..00000000000 --- a/projects/entities/animoca-brands.js +++ /dev/null @@ -1,24 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xd6AF301A8770659c1Dc880843db4d1aaA01048b4", - "0xE929c67Db94f5b1541FB241eB3E5CbC6468c37e6", //binance deposited account - "0xbDCb95A80d4C770fa811B1FAF0bb4Cf204d310b5", - "0x2D2140E7159b6Cb1f82dC4cfd244A6C8aeE215FC" - ], - }, - polygon: { - owners: [ - "0xbDCb95A80d4C770fa811B1FAF0bb4Cf204d310b5" - ], - }, - bsc: { - owners: [ - "0xbDCb95A80d4C770fa811B1FAF0bb4Cf204d310b5" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/arca.js b/projects/entities/arca.js deleted file mode 100644 index 3cfe10e5d09..00000000000 --- a/projects/entities/arca.js +++ /dev/null @@ -1,22 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x23A5eFe19Aa966388E132077d733672cf5798C03", //1.6m wANT staking - "0xa66f8Db3B8F1e4c79e52ac89Fec052811F4dbd19", // 20,189.10 GMX staked - "0xe05A884D4653289916D54Ce6aE0967707c519879" - ], - }, - polygon: { - owners: [ - "0xa66f8Db3B8F1e4c79e52ac89Fec052811F4dbd19", - ], - }, - arbitrum: { - owners: [ - "0xa66f8Db3B8F1e4c79e52ac89Fec052811F4dbd19", - ], - }, -} -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/arrington-xrp-capital.js b/projects/entities/arrington-xrp-capital.js deleted file mode 100644 index 1fe4b284054..00000000000 --- a/projects/entities/arrington-xrp-capital.js +++ /dev/null @@ -1,21 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x8767d65677cabad2050b764aef40610f2f9796f5", - "0xfa12342e6Dd367CC3884ca68EDfcC5e015bd68D1", - "0xaea97b739dcd6f5b586586cb7a538d60ba96a757", - "0x1f9e17D8C21b00d2BbdfE637C33db21c3B1F4E4e" - ], - tokens: ["0x29C827Ce49aCCF68A1a278C67C9D30c52fBbC348"], //sushi lp - resolveUniV3: true, - }, - avax: { - owners: [ - "0x8767d65677cabad2050b764aef40610f2f9796f5", - "0x1f9e17D8C21b00d2BbdfE637C33db21c3B1F4E4e" - ], - }, -} -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/axia8-venture.js b/projects/entities/axia8-venture.js deleted file mode 100644 index 0af4bfeefaf..00000000000 --- a/projects/entities/axia8-venture.js +++ /dev/null @@ -1,17 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x717821AAe2A45C5c5c5bcDa7A8662cD3df2385E5", - - ], - }, - bsc: { - owners: [ - "0x717821AAe2A45C5c5c5bcDa7A8662cD3df2385E5", - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/binance-labs.js b/projects/entities/binance-labs.js deleted file mode 100644 index 2e7162829f0..00000000000 --- a/projects/entities/binance-labs.js +++ /dev/null @@ -1,12 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xfad531c62757cf18391E48Ee0959ab9ba106deCc", - - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/block-one.js b/projects/entities/block-one.js deleted file mode 100644 index 211db25ba6c..00000000000 --- a/projects/entities/block-one.js +++ /dev/null @@ -1,12 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x24eaeCf1784c3bf9b01E011976E3D7ba917e2219", //binance deposited account - "0x2997A7a817e4b7ff60082b948a49fDAEfc042E4e" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/blockchain-capital.js b/projects/entities/blockchain-capital.js deleted file mode 100644 index 6853a9c2c19..00000000000 --- a/projects/entities/blockchain-capital.js +++ /dev/null @@ -1,14 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x598Dbe6738E0AcA4eAbc22feD2Ac737dbd13Fb8F", - "0x3744DA57184575064838BBc87A0FC791F5E39eA2", - "0x702caCafA54B88e9c54449563Fb2e496e85c78b7" - - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/brevan-howard-digital.js b/projects/entities/brevan-howard-digital.js deleted file mode 100644 index 1c35bd902a2..00000000000 --- a/projects/entities/brevan-howard-digital.js +++ /dev/null @@ -1,11 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x7D68a49754c55f1fB410F535f2b82a16f64481b6" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/chain-capital.js b/projects/entities/chain-capital.js deleted file mode 100644 index 8955b5b6fa5..00000000000 --- a/projects/entities/chain-capital.js +++ /dev/null @@ -1,22 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x4cF9faf73714b65B98557c822B6B514dfDa0E339", - "0x2489146cf124A6900bA46c6F76f18eC76d5068b9" - ], - }, - polygon: { - owners: [ - "0x4cF9faf73714b65B98557c822B6B514dfDa0E339", - ], - }, - bsc: { - owners: [ - "0x2489146cf124A6900bA46c6F76f18eC76d5068b9" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/coin98-venture.js b/projects/entities/coin98-venture.js deleted file mode 100644 index 64ed6ff4f9a..00000000000 --- a/projects/entities/coin98-venture.js +++ /dev/null @@ -1,28 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xFcbf806792f06d9c78E50B3737E1a22cfC36a942", - "0x9413Da1bC1797179e5D019A9420cEEc44680A4bf" - ], - }, - bsc: { - owners: [ - "0x9413Da1bC1797179e5D019A9420cEEc44680A4bf", - '0xFcbf806792f06d9c78E50B3737E1a22cfC36a942' - ], - }, - arbitrum: { - owners: [ - "0x9413Da1bC1797179e5D019A9420cEEc44680A4bf", - ], - }, - polygon: { - owners: [ - "0x9413Da1bC1797179e5D019A9420cEEc44680A4bf", - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/consensys.js b/projects/entities/consensys.js deleted file mode 100644 index de3d260c6f0..00000000000 --- a/projects/entities/consensys.js +++ /dev/null @@ -1,38 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xA8C6F6e2dFbDeDEDD157a5363D38d7d074d83985", - "0x5Bc5ec5130f66f13d5C21ac6811A7e624ED3C7c6", - "0x8962285fAac45a7CBc75380c484523Bb7c32d429" - ], - }, - avax: { - owners: [ - "0xA8C6F6e2dFbDeDEDD157a5363D38d7d074d83985", - ], - }, - optimism: { - owners: [ - "0xA8C6F6e2dFbDeDEDD157a5363D38d7d074d83985", - ], - }, - linea: { - owners: [ - "0x8962285fAac45a7CBc75380c484523Bb7c32d429", - ], - }, - era: { - owners: [ - "0x8962285fAac45a7CBc75380c484523Bb7c32d429", - ], - }, - polygon: { - owners: [ - "0x8962285fAac45a7CBc75380c484523Bb7c32d429", - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/defiance-capital.js b/projects/entities/defiance-capital.js deleted file mode 100644 index fbc4bac0b09..00000000000 --- a/projects/entities/defiance-capital.js +++ /dev/null @@ -1,32 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x7E4B4DC22111B84594d9b7707A8DCFFd793D477A", - "0xE97eb050Fa3e677e79E4ebEe7EF9c9c7D026377D", - "0x1E138759baED8a1139376a475Bf7f08053ACA016", - "0xdD709cAE362972cb3B92DCeaD77127f7b8D58202", - "0x9B5ea8C719e29A5bd0959FaF79C9E5c8206d0499" - - ], - }, - arbitrum: { - owners: [ - "0x7E4B4DC22111B84594d9b7707A8DCFFd793D477A", - ], - }, - avax: { - owners: [ - "0x7E4B4DC22111B84594d9b7707A8DCFFd793D477A", - ], - }, - bsc: { - owners: [ - "0x7E4B4DC22111B84594d9b7707A8DCFFd793D477A", - "0xdD709cAE362972cb3B92DCeaD77127f7b8D58202" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/delphi-digital.js b/projects/entities/delphi-digital.js deleted file mode 100644 index a86340d3eda..00000000000 --- a/projects/entities/delphi-digital.js +++ /dev/null @@ -1,22 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x5Ca29DC4845b8cB19CCF335337b774749C7Bb617", - "0x4181805C36ad6B1b2aDb43D0b0615d676ACBF9b4", - ], - }, - bsc: { - owners: [ - "0x4181805C36ad6B1b2aDb43D0b0615d676ACBF9b4" - ], - }, - avax: { - owners: [ - "0x4181805C36ad6B1b2aDb43D0b0615d676ACBF9b4" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/digital-currency-group.js b/projects/entities/digital-currency-group.js deleted file mode 100644 index 3eff2bdb320..00000000000 --- a/projects/entities/digital-currency-group.js +++ /dev/null @@ -1,14 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xA401f994975E1F82170A9040e0a42D9B4256eDaf", - "0x723B6706e3bDa84289F16b047A8b0e0936DBa59b", - "0xFb7327DB0528cf09375081Bb2f9d9Dbd2B23FF4A", - "0x09b2Dd967305ce5A7209243Ae865193401A985e7" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/digital-finance-group.js b/projects/entities/digital-finance-group.js deleted file mode 100644 index 7442279b8f3..00000000000 --- a/projects/entities/digital-finance-group.js +++ /dev/null @@ -1,30 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xEaf3B28A87D498530cDC7f0700E70502CF896D3f", - "0x90FFFbbdf770eFB530d950C24bf56a292CDab3F7", - "0xC71BaF5d8667FfF515246811a4f61350D26A191F", - "0x36822AD3f4dF3E49EB042AFE74e43551d3c3Adba" - ], - }, - bsc: { - owners: [ - "0xEaf3B28A87D498530cDC7f0700E70502CF896D3f", - "0x2C20E739552cd0BEAF523930BAAD7754C426C962", - "0x36822AD3f4dF3E49EB042AFE74e43551d3c3Adba", - "0xC71BaF5d8667FfF515246811a4f61350D26A191F", - ], - }, - arbitrum: { - owners: [ - "0xEaf3B28A87D498530cDC7f0700E70502CF896D3f", - "0x2C20E739552cd0BEAF523930BAAD7754C426C962", - "0x36822AD3f4dF3E49EB042AFE74e43551d3c3Adba", - "0xC71BaF5d8667FfF515246811a4f61350D26A191F" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/dragonfly-capital.js b/projects/entities/dragonfly-capital.js deleted file mode 100644 index 7b1e3c2ed25..00000000000 --- a/projects/entities/dragonfly-capital.js +++ /dev/null @@ -1,18 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xB953E202C5E51C7C010E80402a63C02f37F14059", //1.9m$ in cega protocol - // "0xe4A2410e158a790463ba1b2c98693061f5A3A9EF", old wallet not sure if related - // "0x30BDC51A48272F96480921ea280448695D2B5d6F", old wallet not sure if related - "0x221E3c87A034E79Dd16d64762a1B20FB71594F46", - "0xF410dC5Ff862BfD36111aD492123280dDB23D495", - // "0xEC4b615C8aBfB491cD4227b165A1e389DB5e8286", old wallet not sure if related - "0xB93994e2efCAed3E88C538F68eC6A2587C3E2ebF", - "0x002A5dc50bbB8d5808e418Aeeb9F060a2Ca17346" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/dwf-labs.js b/projects/entities/dwf-labs.js deleted file mode 100644 index 2ed2d1a2e06..00000000000 --- a/projects/entities/dwf-labs.js +++ /dev/null @@ -1,38 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xddAcAd3B1edee8E2F5b2e84f658202534fcb0374", - "0xD4B69e8D62C880E9DD55d419d5E07435C3538342" - ], - }, - linea: { - owners: [ - "0xD4B69e8D62C880E9DD55d419d5E07435C3538342" - ], - }, - polygon: { - owners: [ - "0xD4B69e8D62C880E9DD55d419d5E07435C3538342", - "0xddacad3b1edee8e2f5b2e84f658202534fcb0374" - ], - }, - flare: { - owners: [ - "0xD4B69e8D62C880E9DD55d419d5E07435C3538342" - ], - }, - celo: { - owners: [ - "0xddacad3b1edee8e2f5b2e84f658202534fcb0374" - ], - }, - bsc: { - owners: [ - "0xddacad3b1edee8e2f5b2e84f658202534fcb0374" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/el-salvador.js b/projects/entities/el-salvador.js deleted file mode 100644 index 1bdb7b30d4e..00000000000 --- a/projects/entities/el-salvador.js +++ /dev/null @@ -1,6 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.elSalvador }) } -} \ No newline at end of file diff --git a/projects/entities/fbg-capital.js b/projects/entities/fbg-capital.js deleted file mode 100644 index cffe1ea1356..00000000000 --- a/projects/entities/fbg-capital.js +++ /dev/null @@ -1,29 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xe25397734a184053cF382E5C4e32cA7eF8335F31", - "0x7c04A698855d1ECF9610636a1d7AFf8E03331fa5", - "0xb079F40dd951d842f688275100524c09bEf9b4E2", - "0x6d51fDc0C57CBBFf6DAC4a565B35a17b88c6CEB5" - ], - }, - avax: { - owners: [ - "0xe25397734a184053cF382E5C4e32cA7eF8335F31" - ], - }, - bsc: { - owners: [ - "0x6d51fDc0C57CBBFf6DAC4a565B35a17b88c6CEB5" - ], - }, - polygon: { - owners: [ - "0xe25397734a184053cF382E5C4e32cA7eF8335F31" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/fbi-dprk.js b/projects/entities/fbi-dprk.js deleted file mode 100644 index 93f0017ec88..00000000000 --- a/projects/entities/fbi-dprk.js +++ /dev/null @@ -1,5 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { bitcoin: { owners: bitcoinAddressBook.fbiDprk } } -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/fenbushi-capital.js b/projects/entities/fenbushi-capital.js deleted file mode 100644 index fc8e78e1d11..00000000000 --- a/projects/entities/fenbushi-capital.js +++ /dev/null @@ -1,25 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xCef1B4Bf8F05F623A2A688b56d9dA679D302EBa7", - "0x5963efF631bf3d28b68388909e2404AA6dB1e7a8", // binance deposited account - "0x7286fCB1f0B9652063325f9d9Dc6fef092D6E711", - "0xC5D063205C9fF82A7D060be081E238b643C0D613" - ], - }, - arbitrum: { - owners: [ - "0xCef1B4Bf8F05F623A2A688b56d9dA679D302EBa7", - "0xC5D063205C9fF82A7D060be081E238b643C0D613" - ], - }, - polygon: { - owners: [ - "0xCef1B4Bf8F05F623A2A688b56d9dA679D302EBa7" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/framework-ventures.js b/projects/entities/framework-ventures.js deleted file mode 100644 index da2c8e12a13..00000000000 --- a/projects/entities/framework-ventures.js +++ /dev/null @@ -1,24 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x681148725731F213b0187A3CBeF215C291D85a3E", - "0x20017a30d3156d4005bda08c40acda0a6ae209b1", //staked crv - "0x3b08AA814bEA604917418A9F0907E7fC430e742C", //dao votes - ], - }, - optimism: { - owners: [ - "0xa5f7a39e55d7878bc5bd754ee5d6bd7a7662355b", - "0x3b08aa814bea604917418a9f0907e7fc430e742c" - ], - }, - arbitrum: { - owners: [ - "0x3b08aa814bea604917418a9f0907e7fc430e742c" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/genesis-trading.js b/projects/entities/genesis-trading.js deleted file mode 100644 index 9db63c5cbb4..00000000000 --- a/projects/entities/genesis-trading.js +++ /dev/null @@ -1,25 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x35b517039f75df2469Af8A329b75DfE215b33790", - "0x16ADa39D140699D9a1934F05DdCf78612f342b3e", - "0x7a59384e2bD2D75fb3e83c486b61921fa517EB27", - "0x2095feFc0cf268E58087A43DBf9733532eD51B25", - "0xF65D8e83396e66340743D852db8eb116BeC0027a", - "0xBF4731191af7029f7D669D3e337a0063D1E008a3", - "0x6d21266DfcF5541BEE9F67c4837AAa72b3BF9303", - "0xd628f7c481c7Dd87F674870BEc5D7A311Fb1D9A2", - "0xaF641E29C4730530d9428A37C5934B00a73624A9", - "0x7DC47f4C227e22DA6C81fCB4c253d1DC18BeC4A3" - ], - }, - avax: { - owners: [ - "0xd628f7c481c7dd87f674870bec5d7a311fb1d9a2", - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/gsr.js b/projects/entities/gsr.js deleted file mode 100644 index 2f2fe470375..00000000000 --- a/projects/entities/gsr.js +++ /dev/null @@ -1,51 +0,0 @@ -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/hashkey-capital.js b/projects/entities/hashkey-capital.js deleted file mode 100644 index 6acf543cb35..00000000000 --- a/projects/entities/hashkey-capital.js +++ /dev/null @@ -1,46 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x760484042a7856E62B627318796Ebb609C8131a1", - ], - }, - moonbeam: { - owners: [ - "0x760484042a7856E62B627318796Ebb609C8131a1", - ], - }, - avax: { - owners: [ - "0x760484042a7856E62B627318796Ebb609C8131a1", - ], - }, - bsc: { - owners: [ - "0x760484042a7856E62B627318796Ebb609C8131a1", - ], - }, - polygon: { - owners: [ - "0x760484042a7856E62B627318796Ebb609C8131a1", - ], - }, - moonriver: { - owners: [ - "0x760484042a7856E62B627318796Ebb609C8131a1", - ], - }, - optimism: { - owners: [ - "0x760484042a7856E62B627318796Ebb609C8131a1", - ], - }, - arbitrum: { - owners: [ - "0x760484042a7856E62B627318796Ebb609C8131a1", - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/id-capital.js b/projects/entities/id-capital.js deleted file mode 100644 index ef223011099..00000000000 --- a/projects/entities/id-capital.js +++ /dev/null @@ -1,34 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", - "0xbFC94A95d4448C802E848C68fdD2FC0fEE4a876E" - ], - }, - polygon: { - owners: [ - "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", - "0xbFC94A95d4448C802E848C68fdD2FC0fEE4a876E" - ], - }, - bsc: { - owners: [ - "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", - "0xbFC94A95d4448C802E848C68fdD2FC0fEE4a876E" - ], - }, - avax: { - owners: [ - "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", - ], - }, - arbitrum: { - owners: [ - "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/jump-capital.js b/projects/entities/jump-capital.js deleted file mode 100644 index 882fba095e9..00000000000 --- a/projects/entities/jump-capital.js +++ /dev/null @@ -1,40 +0,0 @@ - -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xCB8EFB0c065071E4110932858A84365A80C8feF0", - "0x4F20Cb7a1D567A54350a18DAcB0cc803aEBB4483", - "0xaA4237995A8DDb6FC30C3C5bC4Cb9C0c15eE7C4F", - "0xe198c2FE9Ff0A1CBcDeE96A5A3e4ccd8DE707AB0" - ], - }, - avax: { - owners: [ - "0xCB8EFB0c065071E4110932858A84365A80C8feF0", - "0xe198c2FE9Ff0A1CBcDeE96A5A3e4ccd8DE707AB0" - ], - }, - bsc: { - owners: [ - "0xCB8EFB0c065071E4110932858A84365A80C8feF0", - "0x4F20Cb7a1D567A54350a18DAcB0cc803aEBB4483", - "0xaA4237995A8DDb6FC30C3C5bC4Cb9C0c15eE7C4F", - "0xe198c2FE9Ff0A1CBcDeE96A5A3e4ccd8DE707AB0" - ], - }, - polygon: { - owners: [ - "0x4F20Cb7a1D567A54350a18DAcB0cc803aEBB4483", - "0xaA4237995A8DDb6FC30C3C5bC4Cb9C0c15eE7C4F" - ], - }, - arbitrum: { - owners: [ - "0x4F20Cb7a1D567A54350a18DAcB0cc803aEBB4483" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/mechanism-capital.js b/projects/entities/mechanism-capital.js deleted file mode 100644 index d227a4255fe..00000000000 --- a/projects/entities/mechanism-capital.js +++ /dev/null @@ -1,24 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x6Af3D183d225725d975C5EaA08D442dd01Aad8fF", - "0x953a50bd2daAa852A4Bc3E58b3AcFb95EA4E82D2", - "0x1366Dcf0f0178802Be85d405BBeA8026EC0876c4", // binance deposited account - "0xD5d5A7CB1807364CDE0BAd51D0a7D758943aB114" - ], - }, - optimism: { - owners: [ - "0xD5d5A7CB1807364CDE0BAd51D0a7D758943aB114" - ], - }, - arbitrum: { - owners: [ - "0xD5d5A7CB1807364CDE0BAd51D0a7D758943aB114" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/mt-gox.js b/projects/entities/mt-gox.js deleted file mode 100644 index 9d4a8a99373..00000000000 --- a/projects/entities/mt-gox.js +++ /dev/null @@ -1,5 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { bitcoin: { owners: bitcoinAddressBook.mtGoxEntities } } -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/multi-chain-capital.js b/projects/entities/multi-chain-capital.js deleted file mode 100644 index 826886250bb..00000000000 --- a/projects/entities/multi-chain-capital.js +++ /dev/null @@ -1,31 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xfbf335f8224a102e22abe78d78cc52dc95e074fa" //2.6m$ on convex - ], - }, - bsc: { - owners: [ - "0xFBf335f8224a102e22abE78D78CC52dc95e074Fa", - ], - }, - fantom: { - owners: [ - "0xFBf335f8224a102e22abE78D78CC52dc95e074Fa", - ], - }, - optimism: { - owners: [ - "0xFBf335f8224a102e22abE78D78CC52dc95e074Fa", - ], - }, - avax: { - owners: [ - "0xFBf335f8224a102e22abE78D78CC52dc95e074Fa", - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/ngc-ventures.js b/projects/entities/ngc-ventures.js deleted file mode 100644 index fcd35e56197..00000000000 --- a/projects/entities/ngc-ventures.js +++ /dev/null @@ -1,33 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", - "0xA773b135Df6265DF762709492799f31d8cE00692" - ], - }, - arbitrum: { - owners: [ - "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", - ], - }, - bsc: { - owners: [ - "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", - "0xA773b135Df6265DF762709492799f31d8cE00692" - ], - }, - polygon: { - owners: [ - "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", - ], - }, - avax: { - owners: [ - "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/pantera-capital.js b/projects/entities/pantera-capital.js deleted file mode 100644 index b91a61b6b3c..00000000000 --- a/projects/entities/pantera-capital.js +++ /dev/null @@ -1,16 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x12ca45FEd7998ba0E56f52D678823A508BA9A99E", - "0x5789C571552b4820BfA64eFB6F0CaD80fD2A9Bca", - "0x1a0EBB8B15c61879a8e8DA7817Bb94374A7c4007", - "0x24DE2762ccC97e44CCeA68CaF8270dA1820b3aa6", - "0x512218CB6120F45C15720F875d02fC0a07b4b1a6", - "0xe523Fc253BcdEA8373E030ee66e00c6864776d70" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/paradigm-capital.js b/projects/entities/paradigm-capital.js deleted file mode 100644 index 87bf71148c8..00000000000 --- a/projects/entities/paradigm-capital.js +++ /dev/null @@ -1,15 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x11577a8a5baf1e25b9a2d89f39670f447d75c3cd", - "0xCA8d6F69D8f32516a109Df68B623452cc9f5E64d", - "0x917B3ACa2142Dd136fa106229990EA4D02763A83", - "0x09F82Ccd6baE2AeBe46bA7dd2cf08d87355ac430", - '0x820fb25352BB0c5E03E07AFc1d86252fFD2F0A18', //LIDO TOKENS - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/plutus-vc.js b/projects/entities/plutus-vc.js deleted file mode 100644 index 8c56bcb1d03..00000000000 --- a/projects/entities/plutus-vc.js +++ /dev/null @@ -1,16 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0x3105889390F894F8ee1d3f8f75E2c4dde57735bA" - ], - }, - bsc: { - owners: [ - "0x3105889390F894F8ee1d3f8f75E2c4dde57735bA" - ], - }, -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/polychain-capital.js b/projects/entities/polychain-capital.js deleted file mode 100644 index effc5a381ca..00000000000 --- a/projects/entities/polychain-capital.js +++ /dev/null @@ -1,23 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xBcd5000F5c522856E710c5d274bb672B2f2EefBf", - "0x53c286E0AbE87c9e6d4d95ebE62ceaFa4aFCE849", - "0xfA9b5f7fDc8AB34AAf3099889475d47febF830D7", - "0xf286BB612e219916F8e9bA7200bF09Ed218890cb", - "0xb283391C4B4B5C5FA20FDA38bc0178EA264682b1", - "0xA1F5269738a227b568D1EEC42F29d71c19afeeE5", - ], - }, - optimism: { - owners: [ - "0xb0e90f9Dd83aBc67268672361B4f6d54f0d7Ea2C", - "0xea6C3Db2e7FCA00Ea9d7211a03e83f568Fc13BF7" - ], - }, - -} - -module.exports = treasuryExports(config) diff --git a/projects/entities/sequoia-capital.js b/projects/entities/sequoia-capital.js deleted file mode 100644 index b2d0748f0b6..00000000000 --- a/projects/entities/sequoia-capital.js +++ /dev/null @@ -1,10 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") - -const config = { - ethereum: { - owners: [ - "0xb8a9a55c04e88c4a2ece06d794bcb6574706f1c4" - ], - }, -} -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/silkroad-fbifunds.js b/projects/entities/silkroad-fbifunds.js deleted file mode 100644 index 0c9c2e09c86..00000000000 --- a/projects/entities/silkroad-fbifunds.js +++ /dev/null @@ -1,5 +0,0 @@ -const { treasuryExports } = require("../helper/treasury") -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { bitcoin: { owners: bitcoinAddressBook.silkroadFBIEntities } } -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entropyfi/abi.json b/projects/entropyfi/abi.json deleted file mode 100644 index ab7927c5f80..00000000000 --- a/projects/entropyfi/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "allPools": "function allPools(uint256) view returns (address)", - "allPoolsLength": "uint256:allPoolsLength", - "aToken": "address:aToken", - "poolTokensInfo": "function poolTokensInfo() view returns (address longToken, address shortToken, address sponsorToken)", - "status": "function status() view returns (bool isShortLastRoundWinner, bool isFirstUser, bool isFirstRound, uint256 gameRound, uint256 durationOfGame, uint256 durationOfBidding, uint256 lastUpdateTimestamp, int256 initialPrice, int256 endPrice, uint8 currState)" -} \ No newline at end of file diff --git a/projects/entropyfi/index.js b/projects/entropyfi/index.js deleted file mode 100644 index 21895a44c06..00000000000 --- a/projects/entropyfi/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const abi = require("./abi.json"); -const { pool2 } = require("../helper/pool2"); - -const entropyV1Factory = "0xeff87121ab94457789495918eef5a5904eb04419"; -const ERP_USDC_quickswap = "0xc4bf2a012af69d44abc4bbe2b1875a222c1c32e1"; -const stakingContract = "0x7ace9872ee80145ad7b4d93cf8d84d664c450ea5"; -// const vesting = '0x02f1410457ceb105ca8aed71b7654fb05cb61417' -// const sponsorFarm = '0xb956B861BD97bf5195Eb4AA09d5c5EAD1B2e4514' - -const tvl = async (api) => { - // Get Entropy pool count, andd retrieve their addresses - const pools = await api.fetchList({ lengthAbi: abi.allPoolsLength, itemAbi: abi.allPools, target: entropyV1Factory}) - - const aTokens = await api.multiCall({ abi: abi.aToken, calls: pools}) - return api.sumTokens({ tokensAndOwners2: [aTokens, pools], }) -}; - -module.exports = { - polygon: { - tvl, - pool2: pool2(stakingContract, ERP_USDC_quickswap,), - }, - methodology: - "Entropy Pools store the users collateral as aave aTokens in each pool. Quickswap LP is also staked and accounted for in pool2.", -}; diff --git a/projects/envelop/index.js b/projects/envelop/index.js deleted file mode 100644 index 3d665030d28..00000000000 --- a/projects/envelop/index.js +++ /dev/null @@ -1,123 +0,0 @@ - -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json'); -const { staking } = require('../helper/staking') - -module.exports = { - methodology: 'TVL is the collateral coins, tokens, NFTs wrapped in Envelop vaults.', - hallmarks: [ - [1709667755, "Blast Mainnet deployment"], - [1634745600, "Envelop(NIFTSY) TGE"], - ], -} -const config = { - ethereum: { - protocolContracts: [ - // '0x9843242eC39387f2A0be49a0E90B4117f5016f1c', - // '0xE0E4EC54ed883d7089895C0e951b4bB8E3c68e9d', - // '0xE77b3F1F7BD06A86a53563e69Bb49cE6bab1C2bB', - // '', // Farming - // '0x4746b30e21be31aa65a31adfb1ad476f4f9639c1', // IDO LOcker - '0x765886A9f388ca58092Bba5b6191b1e57e0950Bf', // protocol - '0x53c55bB901812551aa36cbf022B5df35B24C9f59', // protocol - '0x2C72097760B3f0E781C9499dD94486E46DFD664C', // protocol - ], - farming: ['0xD5E1cDfCf6A9fdc68997a90E8B5ee962e536a0D8'], - NIFTSY: '0x7728cd70b3dD86210e2bd321437F448231B81733', - tokens: [ - ADDRESSES.null, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - // '0x7728cd70b3dD86210e2bd321437F448231B81733', // NIFTSY - ] - }, - bsc: { - protocolContracts: [ - // "0x96A25076b3c1707cB057551D8C4D49480AcC5334", - // "0x721d86E0027c1c9E128c4f935AD80fBc921A9021", - "0x2E2F00Dfac24C4cCB9c7cCACacFc066bAa2938f5", // Protocol - // "0xD5E1cDfCf6A9fdc68997a90E8B5ee962e536a0D8", // Farming - "0xF81356B101A52cf62BBe1E34353a139934dE4c17", // Protocol - "0x4a80d07a1e8c15069c397cf34c407a627dcb8487", // Protocol - "0x0a18Abe3030C9E766329b9b9A05d2D9bD03C4F8F", // Protocol - '0x98CADa78CFE0BCf17BF9aD96dA4B824C96c9d837', - ], - farming: ['0xD5E1cDfCf6A9fdc68997a90E8B5ee962e536a0D8'], - NIFTSY: '0x7728cd70b3dD86210e2bd321437F448231B81733', - tokens: [ - ADDRESSES.null, - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.BUSD, - '0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3', // DAI - // '0x7728cd70b3dD86210e2bd321437F448231B81733', // NIFTSY - ] - }, - polygon: { - protocolContracts: [ - // "0x6223b7ac40Da9EaD7486CeA5352034a3a2517e56", - // "0xDC1Aa8D625ab092fEd8Dc5879348dD77700Ceec6", - "0x4640024F4e00De23211ca505f3021d460c01a2a8", // Protocol - // "0xD5E1cDfCf6A9fdc68997a90E8B5ee962e536a0D8", // Farming - "0xFcE14427Eb7e5df0c5313249b19B56b81633Df8A", // Protocol - "0x018Ab23bae3eD9Ec598B1239f37B998fEDB75af3", // Protocol, - "0xc2571eBbc8F2af4f832bB8a2D3A4b0932Ce24773", - ], - farming: ['0xD5E1cDfCf6A9fdc68997a90E8B5ee962e536a0D8'], - NIFTSY: '0x432cdbC749FD96AA35e1dC27765b23fDCc8F5cf1', - tokens: [ - ADDRESSES.null, - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.WETH_1, - // '0x432cdbC749FD96AA35e1dC27765b23fDCc8F5cf1', // NIFTSY - ] - }, - arbitrum: { - protocolContracts: [ - // '0x5bECBAD9784e1b370AE34a154084F3e7a52f6cEe', - // '0x85DC0Ed956c15cB40580712693033e36385204A3', - '0x6664c8118284b3F5ECB47c2105cAa544Ab0Cf75B', - ], - tokens: [ - ADDRESSES.null, - '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // Aave Arbitrum USDT (aArbUSDT) - ] - }, - optimism: { - protocolContracts: [ - // '0x5515aEF68f62a6f819BD7E1b86AE9d9a2bfE794B', - ], - tokens: [ - ADDRESSES.null, - ] - }, - avax: { - protocolContracts: [ - '0xc2571eBbc8F2af4f832bB8a2D3A4b0932Ce24773', - ], - tokens: [ - ADDRESSES.null, - ] - }, - blast: { - protocolContracts: [ - '0xd3807CE2F215DC42ca4bfA616B16C20b0B195128', - '0x2333615f43f898cD4368513fa59b0fDcF945f492', - ], - tokens: [ - ADDRESSES.null, - ADDRESSES.blast.USDB, - ADDRESSES.blast.WETH - ] - } -} - -Object.keys(config).forEach(chain => { - const { protocolContracts: owners, tokens, NIFTSY, farming, } = config[chain] - module.exports[chain] = { tvl: sumTokensExport({ owners, tokens, }) } - if (NIFTSY) module.exports[chain].staking = staking(farming, NIFTSY) -}) diff --git a/projects/enzo/index.js b/projects/enzo/index.js deleted file mode 100644 index e454bcb795c..00000000000 --- a/projects/enzo/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - btr: compoundExports2({ cether: '0xe277Aed3fF3Eb9824EdC52Fe7703DF0c5ED8B313', comptroller: '0xe688a4a94AD1D32CD52A01306fc0a9552749F322', cetheEquivalent: ADDRESSES.btr.WBTC }) -}; \ No newline at end of file diff --git a/projects/enzyme/index.js b/projects/enzyme/index.js deleted file mode 100644 index 8bd0e867834..00000000000 --- a/projects/enzyme/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - polygon: { endpoint: sdk.graph.modifyEndpoint('GCAHDyqvZBLMwqdb9U7AqWAN4t4TSwR3aXMHDoUUFuRV') }, - ethereum: { endpoint: sdk.graph.modifyEndpoint('9DLBBLep5UyU16kUQRvxBCMqko4q9XzuE4XsMMpARhKK') }, - arbitrum: { endpoint: sdk.graph.modifyEndpoint('8UJ5Bkf2eazZhXsAshhzQ2Keibcb8NFHBvXis9pb2C2Y') }, -} -const query = `query get_accounts($lastId: String!) { - vaults( - first: 1000 - where: {id_gt: $lastId} - ) { id trackedAssets { id } } -}` - -async function tvl(api) { - const { endpoint } = config[api.chain] - const vaults = await cachedGraphQuery('enzyme/' + api.chain, endpoint, query, { fetchById: true, }) - const externalPositions = (await api.multiCall({ calls: vaults.map(i => i.id), abi: 'address[]:getActiveExternalPositions', excludeFailed: true, })).flat() - const managedAssets = await api.multiCall({ abi: 'function getManagedAssets() external returns (address[] memory assets, uint256[] memory amounts)', calls: externalPositions, excludeFailed: true, }) - const debtAssets = await api.multiCall({ abi: 'function getDebtAssets() external returns (address[] memory assets, uint256[] memory amounts)', calls: externalPositions, excludeFailed: true, }) - managedAssets.forEach(i => api.add(i.assets, i.amounts)) - debtAssets.forEach(i => api.add(i.assets, i.amounts.map(i => -1 * i))) - - return sumTokens2({ - api, ownerTokens: vaults.map(i => { - return [i.trackedAssets.map(i => i.id), i.id] - }) - }) -} - - -module.exports = { - timetravel: false, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/eos-evm/index.js b/projects/eos-evm/index.js deleted file mode 100644 index 11e821a1524..00000000000 --- a/projects/eos-evm/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -async function eos() { - return await get_account_tvl("eosio.evm", [["eosio.token", "EOS", "eos"]]); -} - -module.exports = { - methodology: `EOS EVM TVL is achieved by querying token balances from [eosio.evm] system account.`, - eos: { - tvl: eos - }, -} diff --git a/projects/eos-ram/index.js b/projects/eos-ram/index.js deleted file mode 100644 index 70826c33b3f..00000000000 --- a/projects/eos-ram/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// RAM market -// https://docs.eosnetwork.com/docs/latest/core-concepts/resources -// https://newdex.io/resources/ram -// https://eosauthority.com/wallet/ram?network=eos -// https://eoseyes.com/ram -async function eos() { - return await get_account_tvl("eosio.ram", [["eosio.token", "EOS", "eos"]]); -} - -module.exports = { - methodology: `EOS RAM TVL is achieved by querying token balances from [eosio.ram] system account.`, - eos: { - tvl: eos - }, -} diff --git a/projects/eoswap/index.js b/projects/eoswap/index.js deleted file mode 100644 index 0794c363611..00000000000 --- a/projects/eoswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - eos_evm: { - tvl: getUniTVL({ factory: '0xC0C6CCC0E73fcA8904596D558B73e0918A35018b', useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/epns/index.js b/projects/epns/index.js deleted file mode 100644 index ed5a2646115..00000000000 --- a/projects/epns/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') - -const PUSH = '0xf418588522d5dd018b425e472991e52ebbeeeeee' -const PUSH_WETH_LP = '0xaf31fd9c3b0350424bf96e551d2d1264d8466205' -const staking_contract = '0xb72ff1e675117bedeff05a7d0a472c3844cfec85' - -module.exports = { - methodology: `TVL for PUSH consists of the staking of PUSH and pool2 of uni-v2 LP.`, - ethereum:{ - tvl: () => ({}), - staking: staking(staking_contract, PUSH), - pool2: pool2(staking_contract, PUSH_WETH_LP), - } -} \ No newline at end of file diff --git a/projects/epoch-island/index.js b/projects/epoch-island/index.js deleted file mode 100644 index c4608e2ff3b..00000000000 --- a/projects/epoch-island/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const VEPOCH_CONTRACT_ADDRESS = "0x731a2572b1cf56cfb804c74555715c8c8b5e980b"; -const ITO_CONTRACT_ADDRESS = "0x44DE78EB54EE54C4151e62834D3B5a29005Bde98"; -const { staking } = require('../helper/staking'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const config = { - ethereum: { EPOCH: '0x97D0CfEB4FdE54B430307c9482d6f79C761Fe9B6', }, - base: { EPOCH: '0x287f0D88e29a3D7AEb4d0c10BAE5B902dB69B17D', }, - arbitrum: { EPOCH: '0x4939ac5c1855302891c5888634b2f65cc30b9155', }, - optimism: { EPOCH: '0xd1cac46a9a77169C310c2C780A4267eE6CA884f5', }, -} - -module.exports = { - start: '2023-11-17', - hallmarks: [ - [1700179200, "vEPOCH Launch"], - [1704240000, "ITO Launch"] - ], -}; - -Object.keys(config).forEach(chain => { - const { EPOCH, } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ blacklistedTokens: [EPOCH], owner: ITO_CONTRACT_ADDRESS, fetchCoValentTokens: true, }) - } -}) -module.exports.ethereum.pool2 = staking(VEPOCH_CONTRACT_ADDRESS, "0x82b8c7c6Fb62D09CfD004309c1F353FB1A926Edc"); \ No newline at end of file diff --git a/projects/epsylon/abi.json b/projects/epsylon/abi.json deleted file mode 100644 index dda88359cae..00000000000 --- a/projects/epsylon/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalAssets": "uint256:totalAssets" -} \ No newline at end of file diff --git a/projects/epsylon/index.js b/projects/epsylon/index.js deleted file mode 100644 index f195529b407..00000000000 --- a/projects/epsylon/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -const USDC_VAULT = "0x756d09263483dC5A6A0023bb80933db2C680703E"; -const USDC_2_VAULT = "0x69e475b67052987707E953b684c7d437e15AC511"; -const WFTM_VAULT = "0x22c538c1EeF31B662b71D5C8DB47847d30784976"; - -module.exports = { - timetravel: false, - methodology: `Track the yield generated and deposits made to the vaults`, - fantom: { - tvl: sumERC4626VaultsExport({ vaults: [USDC_VAULT, USDC_2_VAULT, WFTM_VAULT], tokenAbi: 'token', balanceAbi: 'totalAssets' }), - }, -}; diff --git a/projects/equalizer-cl/index.js b/projects/equalizer-cl/index.js deleted file mode 100644 index 9b22a7401fd..00000000000 --- a/projects/equalizer-cl/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - fantom: { factory: '0x7Ca1dCCFB4f49564b8f13E18a67747fd428F1C40', fromBlock: 100367164 }, - base: { factory: '0x7Ca1dCCFB4f49564b8f13E18a67747fd428F1C40', fromBlock: 23864326 }, - sonic: { factory: '0x7Ca1dCCFB4f49564b8f13E18a67747fd428F1C40', fromBlock: 548461 }, -}) diff --git a/projects/equation-v2/index.js b/projects/equation-v2/index.js deleted file mode 100644 index d3630ae1c59..00000000000 --- a/projects/equation-v2/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - arbitrum: { - marketManager: "0x719Cf2A5bDb64BC47B72556A1439eF4b876D5A0C", - usd: ADDRESSES.arbitrum.USDT - } -}; - -Object.keys(config).forEach(chain => { - const { marketManager, usd } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [[[usd], marketManager]]; - return sumTokens2({ api, ownerTokens }); - } - }; -}); - diff --git a/projects/equation-v3/index.js b/projects/equation-v3/index.js deleted file mode 100644 index c9ec82b16a8..00000000000 --- a/projects/equation-v3/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const config = { - arbitrum: { marketManager: "0xDe2b77bcbAEf4C5ECE3b827B21fbD8556e8Fa5a4", } -} - -Object.keys(config).forEach(chain => { - const { marketManager, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const token = await api.call({ abi: 'address:USD', target: marketManager }) - return api.sumTokens({ owner: marketManager, tokens: [token] }) - } - } -}) \ No newline at end of file diff --git a/projects/equation/index.js b/projects/equation/index.js deleted file mode 100644 index c1db856138d..00000000000 --- a/projects/equation/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokens2, sumTokensExport } = require("../helper/unwrapLPs"); -const { getLogs } = require('../helper/cache/getLogs') - - -const config = { - arbitrum: { factory: '0xA91680161fBCeA942e164B42445aD6130D01541F', stakingContract: '0x3C77EEB8eC4716a6389a522eD590FbbD261ABE8e', EQU: '0x87AAfFdF26c6885f6010219208D5B161ec7609c0' }, -} - -module.exports = { - methodology: "Count the tokens in different pools in the equation.", -} - -Object.keys(config).forEach(chain => { - const { factory, EQU, stakingContract, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event PoolCreated(address indexed pool, address indexed token, address indexed usd)', - onlyArgs: true, - fromBlock: 142245092, - }) - const ownerTokens = logs.map(i => [[i.usd], i.pool]) - return sumTokens2({ api, ownerTokens, }) - }, - pool2: sumTokensExport({ resolveUniV3: true, owner: stakingContract }), - staking: sumTokensExport({ owner: stakingContract, tokens: [EQU] }), - } -}) - diff --git a/projects/equilibre/index.js b/projects/equilibre/index.js deleted file mode 100644 index 871f10f87d5..00000000000 --- a/projects/equilibre/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/cache/uniswap.js') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - kava: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xA138FAFc30f6Ec6980aAd22656F2F11C38B56a95', hasStablePools: true }), - staking: staking("0x35361C9c2a324F5FB8f3aed2d7bA91CE1410893A", "0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73"), - }, -} \ No newline at end of file diff --git a/projects/equilibria/index.js b/projects/equilibria/index.js deleted file mode 100644 index af6a9857504..00000000000 --- a/projects/equilibria/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const config = { - ethereum: { - pendleBooster: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", - pendleProxy: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3", - eqb: "0xfE80D611c6403f70e5B1b9B722D2B3510B740B2B", - vlEqb: "0xd8967B2B15b3CDF96039b7407813B4037f73ec27", - pendle: "0x808507121b80c02388fad14726482e061b8da827", - ePendle: "0x22Fc5A29bd3d6CCe19a06f844019fd506fCe4455", - ePendleReward: "0x357F55b46821A6C6e476CC32EBB2674cD125e849", - }, - arbitrum: { - pendleBooster: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", - pendleProxy: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3", - eqb: "0xBfbCFe8873fE28Dfa25f1099282b088D52bbAD9C", - vlEqb: "0x70f61901658aAFB7aE57dA0C30695cE4417e72b9", - pendle: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", - ePendle: "0x3EaBE18eAE267D1B57f917aBa085bb5906114600", - ePendleReward: "0x9739d1E515C5291faA26D92a5D02761b6BbB4D6F", - }, - bsc: { - pendleBooster: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", - pendleProxy: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3", - eqb: "0x374Ca32fd7934c5d43240E1e73fa9B2283468609", - vlEqb: "0x0140dE476f49B6B42f7b73612b6dc317aB91D3BC", - pendle: "0xb3Ed0A426155B79B898849803E3B36552f7ED507", - ePendle: "0x898CA9B3ef8b6a30dA5fc7202f70E7992b3602B3", - ePendleReward: "0xE2dB20ce7D845f99338BbA4bdFF00e733801Dde7", - }, - optimism: { - pendleBooster: "0x18C61629E6CBAdB85c29ba7993f251b3EbE2B356", - pendleProxy: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", - eqb: "0xaf3A6f67Af1624d3878A8d30b09FAe7915DcA2a0", - vlEqb: "0x22Fc5A29bd3d6CCe19a06f844019fd506fCe4455", - pendle: "0xBC7B1Ff1c6989f006a1185318eD4E7b5796e66E1", - ePendle: "0x86a20111fEae36f3511A30c0640d2099b3A818C5", - ePendleReward: "0x898CA9B3ef8b6a30dA5fc7202f70E7992b3602B3", - }, - mantle: { - pendleBooster: "0x920873E5b302A619C54c908aDFB77a1C4256A3B8", - pendleProxy: "0x479603DE0a8B6D2f4D4eaA1058Eea0d7Ac9E218d", - eqb: "0x3e7eF8f50246f725885102E8238CBba33F276747", - vlEqb: "0x71e0ce200a10f0bBFB9F924fE466ACf0B7401EbF", - pendle: "0xd27B18915e7acc8FD6Ac75DB6766a80f8D2f5729", - ePendle: "0x6EE066b813cd8C2586D86F79eD0025e81801b923", - ePendleReward: "0x741620136cf08a782c1Df1Fc9E3cAA760Cc4Fecc", - }, - base: { - pendleBooster: "0x2583A2538272f31e9A15dD12A432B8C96Ab4821d", - pendleProxy: "0x920873E5b302A619C54c908aDFB77a1C4256A3B8", - eqb: "0x010cd9b9be7E416E07793dc6Ce2F45868A80a50a", - vlEqb: "0x70f61901658aAFB7aE57dA0C30695cE4417e72b9", - pendle: "0xA99F6e6785Da0F5d6fB42495Fe424BCE029Eeb3E", - ePendle: "0x741620136cf08a782c1Df1Fc9E3cAA760Cc4Fecc", - ePendleReward: "0xB2D167EB1Fff17EbD727B0a21e7f5F50424264c8", - }, - sonic: { - pendleBooster: "0x920873E5b302A619C54c908aDFB77a1C4256A3B8", - pendleProxy: "0x479603DE0a8B6D2f4D4eaA1058Eea0d7Ac9E218d", - eqb: "0x9cacb579227d10a9fbe0951861b9fcb4847e8c6b", - vlEqb: "0x71e0ce200a10f0bBFB9F924fE466ACf0B7401EbF", - pendle: "0xf1eF7d2D4C0c881cd634481e0586ed5d2871A74B", - ePendle: "0x6EE066b813cd8C2586D86F79eD0025e81801b923", - ePendleReward: "0x741620136cf08a782c1Df1Fc9E3cAA760Cc4Fecc", - }, - berachain: { - pendleBooster: "0x18C61629E6CBAdB85c29ba7993f251b3EbE2B356", - pendleProxy: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", - eqb: "0xf9ee98099f5078078bb8e17e6b4a4f95137e2037", - vlEqb: "0x22Fc5A29bd3d6CCe19a06f844019fd506fCe4455", - pendle: "0xFf9c599D51C407A45D631c6e89cB047Efb88AeF6", - ePendle: "0x7700eB46bB40163985C5337DE39704482aed33B1", - ePendleReward: "0x2350Ea954113B1a1EeBAaCCC47f3a4985F709913", - } -}; - -const abi = { - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address market, address token, address rewardPool, bool shutdown)" -}; - -const { staking } = require('../helper/staking') - -async function tvl(api) { - const { pendleBooster, vlEqb, pendleProxy, pendle } = config[api.chain]; - - if (api.chain === "ethereum") { - const pendleLocked = await api.call({ - target: "0x4f30A9D41B80ecC5B94306AB4364951AE3170210", - params: pendleProxy, - abi: "erc20:balanceOf", - }); - api.add( - pendle, - pendleLocked - ); - } - - const poolInfos = await api.fetchList({ - lengthAbi: abi.poolLength, - itemAbi: abi.poolInfo, - target: pendleBooster, - }); - const poolTokens = poolInfos.map(pool => pool.market); - const blacklistedTokens = []; - if (vlEqb) blacklistedTokens.push(vlEqb); - return api.sumTokens({ tokens: poolTokens, owner: pendleProxy, blacklistedTokens }); -} - -Object.keys(config).forEach((chain) => { - const { eqb, vlEqb, ePendle, ePendleReward } = config[chain]; - - module.exports[chain] = { - tvl, - }; - - const stakingContracts = []; - const stakingTokens= []; - if (eqb && vlEqb) { - stakingContracts.push(vlEqb); - stakingTokens.push(eqb); - } - - if (ePendle && ePendleReward) { - stakingContracts.push(ePendleReward); - stakingTokens.push(ePendle); - } - - if (stakingContracts.length) module.exports[chain].staking = staking(stakingContracts, stakingTokens); -}); - -module.exports.doublecounted = true; diff --git a/projects/equilibrium/api.js b/projects/equilibrium/api.js deleted file mode 100644 index 8b45d48911d..00000000000 --- a/projects/equilibrium/api.js +++ /dev/null @@ -1,7 +0,0 @@ - -async function tvl() { - throw new Error("Equilibrium chain is deprecated");} - -module.exports = { - equilibrium: {tvl}, -} \ No newline at end of file diff --git a/projects/equilibrium/index.js b/projects/equilibrium/index.js deleted file mode 100644 index c1484bea19d..00000000000 --- a/projects/equilibrium/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - hallmarks: [[1714550400, 'Sunset of Equilibrium Network']], - deadFrom: "2024-09-01", - timetravel: false, - ...getExports("equilibrium", ['equilibrium']) -} \ No newline at end of file diff --git a/projects/equito-finance/index.js b/projects/equito-finance/index.js deleted file mode 100644 index 19f81c1a723..00000000000 --- a/projects/equito-finance/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/sumTokens"); - -// Addresses -const ALGO_VAULT1 = - "XYE5SU66M6JV24REYQJMXUMIWK54X5I6TWYP25RIA3NH7YEEY6UPPWM3RY"; -const ETH_VAULT1 = "0x274af57Cc969cA96980BA043332D4fb79F496708"; -const BSC_VAULT1 = "0x9Aa09a1D7ACD6Bb7b4bB5ae4c6F91279E78502a8"; - -const ALGO_VAULT2 = - "56CF35MFZHMCWTVJZLNBTP62UJKFRRKW47GTSOVATZONVEZ6ASSWRWOOHM"; -const ETH_VAULT2 = "0x4d753245f273e119Be944Ae180A17DfE35258e1e"; -const BSC_VAULT2 = "0x7aFeCFABBA462121262D81d764e289aB77966aec"; - -// Tokens -const ETH_PSYOP = "0xaa07810aE08575921c476Ff088bc949da43e4964"; - -module.exports = { - hallmarks: [ - [1671724719, "Start of bridge"], - [1683547217, "Ethereum, Binance vaults deployed"], - ], - methodology: - "TVL counts native tokens locked in EquitoFinance bridge vaults.", - algorand: { tvl: sumTokensExport({ owners: [ALGO_VAULT1, ALGO_VAULT2], logCalls: true }) }, - ethereum: { - tvl: sumTokensExport({ - owners: [ETH_VAULT1, ETH_VAULT2], - tokens: [ADDRESSES.null, ADDRESSES.ethereum.INU, ETH_PSYOP], - logCalls: true - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: [BSC_VAULT1, BSC_VAULT2], - tokens: [ADDRESSES.null], - logCalls: true - }), - }, -}; diff --git a/projects/equity/index.js b/projects/equity/index.js deleted file mode 100644 index ac9a5fa9678..00000000000 --- a/projects/equity/index.js +++ /dev/null @@ -1,9 +0,0 @@ -// Equity - Central Vaults -const { gmxExports } = require("../helper/gmx"); - -module.exports = { - fantom: { - //tvl: gmxExports({ vault: '0x9e4105f9e2284532474f69e65680e440f4c91cb8' }), // Vault #1 - Disabled - tvl: gmxExports({ vault: '0x0Fb84ADB9c16D28b92c09c382CaadbDdD8e354c4' }), // Vault #2 - }, -}; diff --git a/projects/erasure/abi.json b/projects/erasure/abi.json deleted file mode 100644 index 3f3edb755ed..00000000000 --- a/projects/erasure/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getInstanceCount": "uint256:getInstanceCount", - "getPaginatedInstances": "function getPaginatedInstances(uint256 startIndex, uint256 endIndex) view returns (address[] instances)" -} \ No newline at end of file diff --git a/projects/erasure/index.js b/projects/erasure/index.js deleted file mode 100644 index 3f49499eca9..00000000000 --- a/projects/erasure/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const registryAddresses = [ - '0xa6cf4Bf00feF8866e9F3f61C972bA7C687C6eDbF', // Erasure Agreements - '0x409EA12E73a10EF166bc063f94Aa9bc952835E93', // Erasure Escrows - '0x348FA9DcFf507B81C7A1d7981244eA92E8c6Af29' // Erasure Posts -]; - -const tokenAddresses = [ - '0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671', // NMR - ADDRESSES.ethereum.DAI // DAI -] - -async function tvl(api) { - const instances = await api.fetchList({ lengthAbi: 'getInstanceCount', itemAbi: 'getInstance', targets: registryAddresses }) - return api.sumTokens({ owners: instances, tokens: tokenAddresses }) -} - -module.exports = { - start: '2019-08-23', // 08/23/2019 @ 12:00am (UTC) - ethereum: { tvl } -}; diff --git a/projects/ergodex.js b/projects/ergodex.js deleted file mode 100644 index fb17071d94d..00000000000 --- a/projects/ergodex.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport } = require('./helper/chain/ergo') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ergo: { - tvl: sumTokensExport({ owner: '5vSUZRZbdVbnk4sJWjg2uhL94VZWRg4iatK9VgMChufzUgdihgvhR8yWSUEJKszzV7Vmi6K8hCyKTNhUaiP8p5ko6YEU9yfHpjVuXdQ4i5p4cRCzch6ZiqWrNukYjv7Vs5jvBwqg5hcEJ8u1eerr537YLWUoxxi1M4vQxuaCihzPKMt8NDXP4WcbN6mfNxxLZeGBvsHVvVmina5THaECosCWozKJFBnscjhpr3AJsdaL8evXAvPfEjGhVMoTKXAb2ZGGRmR8g1eZshaHmgTg2imSiaoXU5eiF3HvBnDuawaCtt674ikZ3oZdekqswcVPGMwqqUKVsGY4QuFeQoGwRkMqEYTdV2UDMMsfrjrBYQYKUBFMwsQGMNBL1VoY78aotXzdeqJCBVKbQdD3ZZWvukhSe4xrz8tcF3PoxpysDLt89boMqZJtGEHTV9UBTBEac6sDyQP693qT3nKaErN8TCXrJBUmHPqKozAg9bwxTqMYkpmb9iVKLSoJxG7MjAj72SRbcqQfNCVTztSwN3cRxSrVtz4p87jNFbVtFzhPg7UqDwNFTaasySCqM', }) - } -} diff --git a/projects/ergopad/index.js b/projects/ergopad/index.js deleted file mode 100644 index bf427343285..00000000000 --- a/projects/ergopad/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - timetravel: false, - ergo: { - tvl: () => ({}), - staking: sumTokensExport({ - owners: [ - '3eiC8caSy3jiCxCmdsiFNFJ1Ykppmsmff2TEpSsXY1Ha7xbpB923Uv2midKVVkxL3CzGbSS2QURhbHMzP9b9rQUKapP1wpUQYPpH8UebbqVFHJYrSwM3zaNEkBkM9RjjPxHCeHtTnmoun7wzjajrikVFZiWurGTPqNnd1prXnASYh7fd9E2Limc2Zeux4UxjPsLc1i3F9gSjMeSJGZv3SNxrtV14dgPGB9mY1YdziKaaqDVV2Lgq3BJC9eH8a3kqu7kmDygFomy3DiM2hYkippsoAW6bYXL73JMx1tgr462C4d2PE7t83QmNMPzQrD826NZWM2c1kehWB6Y1twd5F9JzEs4Lmd2qJhjQgGg4yyaEG9irTC79pBeGUj98frZv1Aaj6xDmZvM22RtGX5eDBBu2C8GgJw3pUYr3fQuGZj7HKPXFVuk3pSTQRqkWtJvnpc4rfiPYYNpM5wkx6CPenQ39vsdeEi36mDL8Eww6XvyN4cQxzJFcSymATDbQZ1z8yqYSQeeDKF6qCM7ddPr5g5fUzcApepqFrGNg7MqGAs1euvLGHhRk7UoeEpofFfwp3Km5FABdzAsdFR9', - 'BxjSQHD1hqQFUXbXatkn46YUxM6wVsLkT5HNXJe1N1n3dM2c7X8BtgnLqszJuxoRTnzXzrCrmEjPyLxqstcnW7YkQJ9m7QTmhChBYt1hAFcTWiyVMdaiYYFtxr7qfXKcjsadtfusNhS63ZddciC3wogjrfSE3U2Fy9dhrrKStUVzWhTP22ZuwdDPv8F88WVtdLsu24bbHsv2ntXZJGhvdKnvJL83kJWs9XV582sqUBqX7kL2A5qp6T2Jxgt3gLxcZ99JhUG99YtRsmpuwb94TE5KVTESWA6cD8EdReTbP1kwW77rnJyNfj8KUsy1j7AZuNBUsVBc3oLV4GxYFDvaTNEyNBmGY3dEe8k7UKjUSnqCmYH2QM2cmhtPEdT6UBR9sS4h4YFiGsRHiybjuTSaBUPrzhJ12ESKf8jcaNna9rYprzm8ZnfwNEQFtPJyKfCoJjbwkfsAEirsMcyU3VjPAvKJ2mtu7A3WwXViBSfwUgdCnWkEhdPCRPueAXfN38JXG8HjJeZTPi3VtgcnFobg8Zjp1XtRkTaoj6i4BgyfwCft3sCYgBgmNjXhtFuuozpCiAXWyGMMs5rhJL6FzXsJWiTSML96LdshFnhoPRPi8FXVooURKztnqJowFcpLApL2ou2jfeC4iaxKgtd6zDR6ikFVXMsipVHmBrhan9dheUPnfjeXz9WVPmGLmVkrxnVv', - '5ASYVJ2w8tH3bDMmDvjvgX76HQen4rcvoHku32GsL9js8THW6rduV5VDy8Diue6rRQfp4DRTs4P9bd4vjQY9mmE94A473YeANVps31i76HD88Xk3oeuMgWSgAPuTncfYG1hYHvyT9N7RECUYb64Hs8b2kuvUksccZ841k1vYTmhzseiAFEC59PPnfxxJ4EL9MJ6oHSfwwJBYaZHjmH5eCPkXbJZhGwnTb6bFXvCGGucjDXhmiDPSXGUU49U3r8gN2eTnbh5Dz5mh9eSudUGf7N1fWtT3asz1uruMcdYeNFptD2jFNz6MDTqajZjSEw5guvAmvZAYnfiXwRW8yQyqbd5GcwiuiaPybcGThdf5TLhYxrNeTr1eLn7d1A1RGvySo8dz9vHNrzsK4Zd8HGK4ofhE4kwepyNbYWJY9XbfKVZxqtmLTUHwheNwiJ7cQSCcQUFyMZwAKmjuXdPrVZ9AftFc5gkdqdaC82ya8oMhsbHBV68yorJbp4yyXs8qjaegUfEb4TEZ4L9NsTTsKZxfHB2GypBmssJ6gHGEongQWnca3zqSV9A55SGwbvMQrrkrnvAe9UVsK1h6XwzBj41vF2faVp7Sfp5noqJi9jZjobiCTYA344RW6dNpGS2YpxNzrZtxvyVhmyF9Tms7nSTUMpbF4L', - '5ASYVJ2w8tH3bDQx5ZLz6rZUdokD1kmTXSRZ8GfrsAUW4vqy9eg5omtTYVzY22ibHANf7GgSc2E5FiThgo8qXzWpU3RDLohN277hksbAf9yykajXbYPUaXUeMPfSXbS1GdE4y2GoYKaXHR3H57MV5CDZE58YteqWe3XVXzmMvj1192AD7UZ1N6nguRfjgijxEWTrLq2ZrykjRAut2JBGYHanAKn46tYWW3chpxNosXG7ZW2ShDzKju2ttHhfxeZVMBydryuoEya5E9KVagjsfa9E2qPUdLpbh8enppVWcwoQ4GF1ktgzSX32QbfKhfpD23iWQixThUbcCca14FjXDt94GVFPuhAT5tQyiKen863Cq5eRAEgsQ7otX6pWa32Q28sxSF9Az4abwiJKNbFhbhb3cDCs6A45ZnW6aB6AkfwTJSAZ2ZzqqG7LXT4HdxNpdmiwno9sJWxPf2PC4vRhVqBPdxxyCgoodjyutf4UuinSCibhfqdhUJLc1JM8zX9UcD699mChgUZoKE8kXD4soVGSgQD3qfGXC6RP7n8dtowArNLm3H5QJ3EobDCbEgECLHFaHN2BPwwWscAt5eejKeFvkp3CuQ3mqFW7vfQG4n9tTLnshj8cjxnpkBdfFKC83sW8A3AoZAX4K1UrhndfLSFh4w', - ] - }) - }, -} diff --git a/projects/eris-protocol/index.js b/projects/eris-protocol/index.js deleted file mode 100644 index 1f60b22d8e8..00000000000 --- a/projects/eris-protocol/index.js +++ /dev/null @@ -1,419 +0,0 @@ -const { - queryContract: queryContractCosmos, - getBalance, - getBalance2, -} = require("../helper/chain/cosmos"); -const sdk = require("@defillama/sdk"); - -// For testing run -// node test.js projects/eris-protocol/index.js - -const config = { - terra2: { - coinGeckoId: "terra-luna-2", - coinGeckoIdAmp: "eris-amplified-luna", - hub: "terra10788fkzah89xrdm27zkj5yvhj9x3494lxawzm5qq3vvxcqz2yzaqyd3enk", - arbVault: - "terra1r9gls56glvuc4jedsvc3uwh6vj95mqm9efc7hnweqxa2nlme5cyqxygy5m", - voteEscrow: - "terra1ep7exp42jjtwgjly36y4vgylz82fplnjwpkz95wljzwfald8zwwqggsdzz", - ampToken: - "terra1ecgazyd0waaj3g7l9cmy5gulhxkps2gmxu9ghducvuypjq68mq2s5lvsct", - farms: [ - "terra1lv2cscvakmtaahj8a6kw43zaefzemydwaswrf38sn2s2depv0wls6ut57q", - "terra1r0ykpvttzxdx573hypmmdzq4g8e2k5cf5ur0rrjhp6mxrux9rmaq9xw9ff", - "terra1c6vzxwfcfur2fg08n3nhtdlaxpmjd5wk9nztv8fjgfsjgagtghzsfftutt", - "terra1xskgvsew6u6nmfwv2mc58m4hscr77xw884x65fuxup8ewvvvuyysr5k3lj", - "terra1q3q88nyhn7a206djjk40xespszrwg26s8j5fswfgsv6cyu8qlsmsncmppe", - "terra1qv5pklpnqmugqfehsytakk7tj2fsw4kt69xn2gvaq0edsynm9c7qnjecq2", - "terra1c98f5dg90cyx5uklezsvac46e4c3msq3ghktkmeksyahytsvuh0q438m6c", - "terra129jsdzd9nm7ywuyr0hlxs3zqm7jle00vtl4akf4wuke4yr5zs82qafcm4n", - "terra1v4gh6nrps2yjdzqct5m7mwqkfusxgghjvd7sy5dsndsyy86pfyasum2qh5", - "terra1g0g5ehu2lvdrta9m62yggaa6x375lz5t5zas3xnzmna7kx74szlsw20es6", - "terra1l4phwrfqyg9l0vzlqcxn0vmnjd45rp5gx620zc2updpc9peazteqfk3y2p", - "terra1zsm7cgu3vg2kwwzzehl38ft7z2ffksql9d6twh3pugvf0yl0u5vs74xx55", - "terra1yfmpzj79n8g356kp6xz0rkjehegwqw7zhus8jzreqvec5ay9a7kqs7a6hc", - "terra10wsuv79k03gplmcx22j4lxauca4t2a0p4q83fyuv54w88e7ccm0qxkme4l", - "terra176e78qnvvclrlrmuyjaqxsy72zp2m3szshljdxakdsmr33zulumqa3hr9d", - "terra1pvn5up4n4ttmdatvpxa8t2klpcy2u5t5nmyclv30yz8xmphjxlrqgqwxv6", - "terra1a3k77cgja875f6ffdsflxtaft570em82te4suw9nfhx77u6dqh8qykuq6f", - "terra1m64fmenadmpy7afp0675jrkz9vs0cq97mgzzpzg0klgc4ahgylms7gvnt5", - ], - coinGeckoMap: { - "ibc/B3504E092456BA618CC28AC671A71FB08C6CA0FD0BE7C8A5B5A3E2DD933CC9E4": - "usd-coin", - "ibc/CBF67A2BCF6CAE343FDF251E510C8E18C361FC02B23430C121116E0811835DEF": - "tether", - terra1nsuqsk6kh58ulczatwev87ttq2z6r3pusulg9r24mfj2fvtzd4uq3exn26: - "astroport-fi", - uluna: "terra-luna-2", - terra1ecgazyd0waaj3g7l9cmy5gulhxkps2gmxu9ghducvuypjq68mq2s5lvsct: - "eris-amplified-luna", - terra1t4p3u8khpd7f8qzurwyafxt648dya6mp6vur3vaapswt6m24gkuqrfdhar: - "capapult", - terra1lxx40s29qvkrcj8fsa3yzyehy7w50umdvvnls2r830rys6lu2zns63eelv: - "lion-dao", - }, - tassets: [ - { - contract: - "terra1j35ta0llaxcf55auv2cjqau5a7aee6g8fz7md7my7005cvh23jfsaw83dy", - exchangeRate: - "migaloo1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshqdky4", - origChain: "migaloo", - }, - { - contract: - "terra10j3zrymfrkta2pxe0gklc79gu06tqyuy8c3kh6tqdsrrprsjqkrqzfl4df", - exchangeRate: - "migaloo1mf6ptkssddfmxvhdx0ech0k03ktp6kf9yk59renau2gvht3nq2gqdhts4u", - origChain: "migaloo", - }, - ], - daos: [ - { - contract: - "terra1vklefn7n6cchn0u962w3gaszr4vf52wjvd4y95t2sydwpmpdtszsqvk9wy", - coinGeckoId: "lion-dao", - }, - { - contract: - "terra186rpfczl7l2kugdsqqedegl4es4hp624phfc7ddy8my02a4e8lgq5rlx7y", - coinGeckoId: "capapult", - }, - ], - }, - terra: { - coinGeckoId: "terra-luna", - hub: "terra1zmf49p3wl7ck2cwer7kghzumfpwhfqk6x893ah", - }, - kujira: { - coinGeckoId: "kujira", - hub: "kujira1n3fr5f56r2ce0s37wdvwrk98yhhq3unnxgcqus8nzsfxvllk0yxquurqty", - voteEscrow: - "kujira1mxzfcxpn6cjx4u9zln6ttxuc6fuw6g0cettd6nes74vrt2f22h4q3j5cdz", - ampToken: - "factory/kujira1n3fr5f56r2ce0s37wdvwrk98yhhq3unnxgcqus8nzsfxvllk0yxquurqty/ampKUJI", - coinGeckoMap: { - "factory/kujira175yatpvkpgw07w0chhzuks3zrrae9z9g2y6r7u5pzqesyau4x9eqqyv0rr/ampMNTA": - "mantadao", - }, - daos: [ - { - contract: - "kujira175yatpvkpgw07w0chhzuks3zrrae9z9g2y6r7u5pzqesyau4x9eqqyv0rr", - coinGeckoId: "mantadao", - }, - ], - }, - juno: { - coinGeckoId: "juno-network", - hub: "juno17cya4sw72h4886zsm2lk3udxaw5m8ssgpsl6nd6xl6a4ukepdgkqeuv99x", - }, - migaloo: { - coinGeckoId: "white-whale", - hub: "migaloo1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshqdky4", - voteEscrow: - "migaloo1hntfu45etpkdf8prq6p6la9tsnk3u3muf5378kds73c7xd4qdzysuv567q", - ampToken: - "factory/migaloo1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshqdky4/ampWHALE", - arbVault: - "migaloo1ey4sn2mkmhew4pdrzk90l9acluvas25qlhuvsfgssw42ugz8yjlqx92j9l", - }, - osmosis: { - coinGeckoId: "osmosis", - hub: "osmo1dv8wz09tckslr2wy5z86r46dxvegylhpt97r9yd6qc3kyc6tv42qa89dr9", - voteEscrow: - "osmo1vcg9a7zwfeuqwtkya5l34tdgzxnafdzpe22ahphd02uwed43wnfs3wtf8a", - ampToken: - "factory/osmo1dv8wz09tckslr2wy5z86r46dxvegylhpt97r9yd6qc3kyc6tv42qa89dr9/ampOSMO", - }, - injective: { - coinGeckoId: "injective-protocol", - hub: "inj1cdwt8g7nxgtg2k4fn8sj363mh9ahkw2qt0vrnc", - voteEscrow: "inj1yp0lgxq460ked0egtzyj2nck3mdhr8smfmteh5", - ampToken: "factory/inj1cdwt8g7nxgtg2k4fn8sj363mh9ahkw2qt0vrnc/ampINJ", - decimals: 18, - }, - neutron: { - farms: [ - "neutron1h4ehzx3j92jv4tkgjy3k2qphh5863l68cyep7vaf83fj6k89l4lqjfyh77", - "neutron1sfmpf84xacu2la88zzsgende2jjlczswdmhzn7jh6tuhn43jl86q6d0vhj", - "neutron1smam4j5cypw2vp7un3q8w68sg97zq9s2c95ukwsmpsl2jh4xwzdskxm6az", - "neutron188xz8cg4uqk4ssg9tcf3q2764ar8ev0jr8qpx2qspchul98ykzuqx58r50", - "neutron1kery9q2uhfu874aqrtx2u7peh7ljfsqjq3ka2lfqmdj5lmhx6fwqx9dw5d", - ], - coinGeckoMap: { - "ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349": - "usd-coin", - "ibc/57503D7852EF4E1899FE6D71C5E81D7C839F76580F86F21E39348FC2BC9D7CE2": - "tether", - "ibc/5751B8BCDA688FD0A8EC0B292EEF1CDEAB4B766B63EC632778B196D317C40C3A": - "astroport-fi", - untrn: "neutron-3", - "ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9": - "cosmos", - "factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH": - "wrapped-steth", - "ibc/A585C2D15DCD3B010849B453A2CFCB5E213208A5AB665691792684C26274304D": - "ethereum", - }, - }, - archway: { - coinGeckoId: "archway", - hub: "archway1yg4eq68xyll74tdrrcxkr4qpam4j9grknunmp74zzc6km988dadqy0utmj", - decimals: 18, - }, - sei: { - coinGeckoId: "sei-network", - hub: "sei1x2fgaaqecvk8kwuqkjqcj27clw5p5g99uawdzy9sc4rku8avumcq3cky4k", - }, - chihuahua: { - coinGeckoId: "chihuahua-token", - hub: "chihuahua1nktfhalzvtx82kyn4dh6l8htcl0prfpnu380a39zj52nzu3j467qqg23ry", - }, - nibiru: { - coinGeckoId: "nibiru", - hub: "nibi1udqqx30cw8nwjxtl4l28ym9hhrp933zlq8dqxfjzcdhvl8y24zcqpzmh8m", - }, -}; - -let assetDecimals = { - "factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH": 18, - "ibc/A585C2D15DCD3B010849B453A2CFCB5E213208A5AB665691792684C26274304D": 18, -}; - -async function getState(chain, contract) { - if (!contract) { - return {}; - } - return queryContractCosmos({ - contract, - chain, - data: { state: {} }, - }); -} - -async function tvlHub(chain, state) { - let chainConfig = config[chain]; - let coinGeckoId = chainConfig.coinGeckoId; - - state ||= await getState(chain, chainConfig.hub); - - let tvl = - +(state.tvl_uluna ?? state.tvl_utoken ?? 0) / getDecimalFactor(chainConfig); - return { - [coinGeckoId]: tvl, - }; -} - -async function tasset2Tvl(chain, tasset) { - let otherChain = tasset.origChain; - let otherConfig = config[otherChain]; - let otherCoinGeckoId = otherConfig.coinGeckoId; - - let state = await getState(chain, tasset.contract); - let stateOther = await getState(otherChain, tasset.exchangeRate); - - let chainConfig = config[chain]; - - // Example - // tvl_utoken (amount deposited of ampWHALE on Terra) * exchange_rate of ampWHALE (queried on Migaloo chain) = TVL of WHALE - - let tvl = - (+(state.tvl_utoken ?? 0) * +stateOther.exchange_rate) / - getDecimalFactor(chainConfig); - - return { - [otherCoinGeckoId]: tvl, - }; -} - -async function dao2Tvl(chain, dao) { - let contract = dao.contract; - let coinGeckoId = dao.coinGeckoId; - - let state = await getState(chain, contract); - - let chainConfig = config[chain]; - - let tvl = +(state.tvl_utoken ?? 0) / getDecimalFactor(chainConfig); - - return { - [coinGeckoId]: tvl, - }; -} - -function getDecimalFactor(chainConfig) { - let decimals = chainConfig.decimals ?? 6; - return Math.pow(10, decimals); -} - -function getDecimalFactorAsset(asset) { - let decimals = assetDecimals[asset] ?? 6; - return Math.pow(10, decimals); -} - -async function tvlArbVault(chain) { - let chainConfig = config[chain]; - let coinGeckoId = chainConfig.coinGeckoId; - - if (!chainConfig.arbVault) { - return {}; - } - - const res = await getState(chain, chainConfig.arbVault); - - let tvl = +(res.balances.tvl_utoken ?? 0) / getDecimalFactor(chainConfig); - return { - [coinGeckoId]: tvl, - }; -} - -async function tvlAmpGovernance(chain, state) { - let chainConfig = config[chain]; - - if (!chainConfig.ampToken) { - return {}; - } - - let isTokenFactory = chainConfig.ampToken.startsWith("factory"); - - let ampAmount = 0; - - if (isTokenFactory) { - let balances = await getBalance2({ - owner: chainConfig.voteEscrow, - token: isTokenFactory, - chain, - }); - - ampAmount = +(balances[chainConfig.ampToken] ?? 0); - } else { - ampAmount = await getBalance({ - owner: chainConfig.voteEscrow, - token: chainConfig.ampToken, - chain, - }); - } - - if (chainConfig.coinGeckoIdAmp) { - return { - [chainConfig.coinGeckoIdAmp]: ampAmount / getDecimalFactor(chainConfig), - }; - } else { - state ||= await getState(chain, chainConfig.hub); - let amount = - (ampAmount / getDecimalFactor(chainConfig)) * +state.exchange_rate; - return { - [chainConfig.coinGeckoId]: amount, - }; - } -} - -async function farm2Tvl(chain, farm) { - const res = await queryContractCosmos({ - chain: chain, - contract: farm, - data: { state: {} }, - }); - - let token1 = { - denom: - res.locked_assets[0].info?.native_token?.denom || - res.locked_assets[0].info?.token?.contract_addr, - amount: +res.locked_assets[0].amount, - }; - - let token2 = { - denom: - res.locked_assets[1].info?.native_token?.denom || - res.locked_assets[1].info?.token?.contract_addr, - amount: +res.locked_assets[1].amount, - }; - - token1.coinGeckoId = getCoinGeckoId(chain, token1.denom); - token2.coinGeckoId = getCoinGeckoId(chain, token2.denom); - - let assetDecimals1 = getDecimalFactorAsset(token1.denom); - let assetDecimals2 = getDecimalFactorAsset(token2.denom); - - let results = []; - if (token1.coinGeckoId) { - results.push({ [token1.coinGeckoId]: token1.amount / assetDecimals1 }); - if (!token2.coinGeckoId) { - // if second is not set, use the same value as AMM has 50:50 weight - results.push({ [token1.coinGeckoId]: token1.amount / assetDecimals1 }); - } - } - if (token2.coinGeckoId) { - results.push({ [token2.coinGeckoId]: token2.amount / assetDecimals2 }); - if (!token1.coinGeckoId) { - // if first is not set, use the same value as AMM has 50:50 weight - results.push({ [token2.coinGeckoId]: token2.amount / assetDecimals2 }); - } - } - - return merge(results); -} - -function getCoinGeckoId(chain, denom) { - return config[chain].coinGeckoMap[denom]; -} - -async function mergePromises(elements) { - let results = await Promise.all(elements); - return merge(results); -} - -function merge(elements) { - return elements.reduce((combined, current) => { - for (const [coinGeckoId, amount] of Object.entries(current)) { - if (!combined[coinGeckoId]) { - combined[coinGeckoId] = 0; - } - - combined[coinGeckoId] += amount; - } - - return combined; - }, {}); -} - -async function productsTvl(chain) { - let chainConfig = config[chain]; - try { - let state = await getState(chain, chainConfig.hub); - return await mergePromises([ - tvlHub(chain, state), - tvlAmpGovernance(chain, state), - tvlArbVault(chain).catch((a) => ({})), - ...(chainConfig.tassets ?? []).map((tasset) => tasset2Tvl(chain, tasset)), - ...(chainConfig.daos ?? []).map((dao) => dao2Tvl(chain, dao)), - ...(chainConfig.farms ?? []).map((farm) => farm2Tvl(chain, farm)), - ]); - } catch (error) { - let url = error?.response?.config?.url; - if (url) { - sdk.log("Issue calling", error?.response?.config?.url); - } - throw error; - } -} - -module.exports = { - timetravel: false, - methodology: "Liquid Staking and Arbitrage Protocol", - terra2: { tvl: () => productsTvl("terra2") }, - terra: { tvl: () => productsTvl("terra") }, - kujira: { tvl: () => productsTvl("kujira") }, - juno: { tvl: () => productsTvl("juno") }, - migaloo: { tvl: () => productsTvl("migaloo") }, - injective: { tvl: () => productsTvl("injective") }, - osmosis: { tvl: () => productsTvl("osmosis") }, - neutron: { tvl: () => productsTvl("neutron") }, - chihuahua: { tvl: () => productsTvl("chihuahua") }, - archway: { tvl: () => productsTvl("archway") }, - sei: { tvl: () => productsTvl("sei") }, - nibiru: { tvl: () => productsTvl("nibiru") }, -}; diff --git a/projects/esbtc/index.js b/projects/esbtc/index.js deleted file mode 100644 index 45b38e1d1b8..00000000000 --- a/projects/esbtc/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens } = require("../helper/chain/bitcoin"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); - -async function tvl() { - return sumTokens({ owners: bitcoinAddressBook.esbtc }) -} - -module.exports = { - doublecounted: true, - methodology: 'TVL is based on Bitcoin addresses in the exSat Staking BTC contract, summing their associated Bitcoin balances.', - start: '2024-10-23', - bitcoin: { tvl }, -}; diff --git a/projects/escher/index.js b/projects/escher/index.js deleted file mode 100644 index f05d2876765..00000000000 --- a/projects/escher/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); -const CORE_ASSETS = require('../helper/coreAssets.json'); - -const consts = { - EBABY_CONTRACT: 'bbn1m7zr5jw4k9z22r9ajggf4ucalwy7uxvu9gkw6tnsmv42lvjpkwasagek5g', -} - -async function eBabyTVL(api) { - const data = await queryContract({ - contract: consts.EBABY_CONTRACT, - chain: api.chain, - data: { staking_liquidity: {} }, - }); - - // - const totalStakedAmount = parseInt(data.amount); - - const token = CORE_ASSETS.babylon.BABY; - api.add(token, totalStakedAmount); -} - - -module.exports = { - methodology: 'TVL counts the tokens that are locked in the Escher staking hub', - babylon: { - tvl: eBabyTVL, - }, -} // node test.js projects/milky-way/index.js \ No newline at end of file diff --git a/projects/escrow/index.js b/projects/escrow/index.js deleted file mode 100644 index 4705a709a13..00000000000 --- a/projects/escrow/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0x2a412Df7e18B847e953c2Bc6ae90581dEe8571e3"; - -module.exports = { - methodology: `We count the eth escrowed in ${contract}`, - ethereum: { - tvl: sumTokensExport({ owner: contract, tokens: [nullAddress]}), - }, -}; diff --git a/projects/esdt-market/index.js b/projects/esdt-market/index.js deleted file mode 100644 index 83c509ce8d6..00000000000 --- a/projects/esdt-market/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - timetravel: false, - elrond: { - tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqr8z5hkwek0pmytcvla86qjusn4hkufjlrp8s7hhkjk', }) - } -} \ No newline at end of file diff --git a/projects/esper-finance/index.js b/projects/esper-finance/index.js deleted file mode 100644 index d9cb3a3505b..00000000000 --- a/projects/esper-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - mantle: { - tvl: getUniTVL({ factory: '0x69C4515C926ac3db7A547044145495240961a7B5', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/estate-protocol/index.js b/projects/estate-protocol/index.js deleted file mode 100644 index 58bca115472..00000000000 --- a/projects/estate-protocol/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require('../helper/http') - -const EVM_ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/; - -async function tvl(api) { - const tokens = (await get('https://estateprotocol.com/api/public/property/list')).filter(t => t.propertyAddress && EVM_ADDRESS_REGEX.test(t.propertyAddress) && t.token_price) - const tokenSupplies = await api.multiCall({ calls: tokens.map((token) => ({ target: token.propertyAddress })), abi: 'erc20:totalSupply' }) - - tokenSupplies.forEach((supply, i) => { - const token = tokens[i] - const price = parseFloat(token.token_price) - api.add(ADDRESSES.arbitrum.USDC_CIRCLE, supply * price * Math.pow(10, 6-18)) - }) -} - -module.exports = { - methodology: `TVL for Estate Protocol consists of the accumulation of all properties prices, each being tokenSupply * tokenPrice where tokenPrice is given by the API`, - arbitrum: { tvl } -} diff --git a/projects/ester/abi.json b/projects/ester/abi.json deleted file mode 100644 index eca4380c784..00000000000 --- a/projects/ester/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfoStaking": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accESTPerShare)", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accESTPerShare, address strat)", - "wantLockedTotal": "uint256:wantLockedTotal" -} \ No newline at end of file diff --git a/projects/ester/index.js b/projects/ester/index.js deleted file mode 100644 index 14862936f79..00000000000 --- a/projects/ester/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); -const abi = require("./abi.json"); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'fantom', - masterchef: '0xA6151b608f49Feb960e951F1C87F4C766850de31', - nativeToken: '0x181f3f22c9a751e2ce673498a03e1fdfc0ebbfb6', - poolInfoABI: abi.poolInfo - }) -]) \ No newline at end of file diff --git a/projects/etcmc/index.js b/projects/etcmc/index.js deleted file mode 100644 index 9250afe2fc6..00000000000 --- a/projects/etcmc/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -const { staking } = require('../helper/unknownTokens') - -const ETCPOW = '0x6c3B413C461c42a88160Ed1B1B31d6f7b02a1C83' -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (0x164999e9174686b39987dfB7E0FAb28465b867A5) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - ethereumclassic: { - tvl: getUniTVL({ factory: '0x164999e9174686b39987dfB7E0FAb28465b867A5', useDefaultCoreAssets: true, }), - staking: staking({ tokensAndOwners: [[ETCPOW, '0xca1F5a20E07610d82e28683519c72f6817A3505a', ]], lps: ['0x730F59a8690b50724914D7b9b2f49a8dD18F5572'], useDefaultCoreAssets: true}), - }, -}; diff --git a/projects/etcswap-v3/index.js b/projects/etcswap-v3/index.js deleted file mode 100644 index a358219cc48..00000000000 --- a/projects/etcswap-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - ethereumclassic: { - factory: "0x2624E907BcC04f93C8f29d7C7149a8700Ceb8cDC", - fromBlock: 19714286, - }, -}); diff --git a/projects/etcswap/index.js b/projects/etcswap/index.js deleted file mode 100644 index 74dce7673e0..00000000000 --- a/projects/etcswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x0307cd3d7da98a29e6ed0d2137be386ec1e4bc9c) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - ethereumclassic: { - tvl: getUniTVL({ - factory: '0x0307cd3d7da98a29e6ed0d2137be386ec1e4bc9c', - useDefaultCoreAssets: true, - }) - }, -}; // node test.js projects/etcswap/index.js \ No newline at end of file diff --git a/projects/eteria/index.js b/projects/eteria/index.js deleted file mode 100644 index 60390522988..00000000000 --- a/projects/eteria/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - eteria: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x79d0FF4D5b05f05D97227F3601C0Ee85937B0513" - ], - fetchCoValentTokens: true, - permitFailure: true - }), - } -}; diff --git a/projects/eternalFinance/helper.js b/projects/eternalFinance/helper.js deleted file mode 100644 index 83a252145c6..00000000000 --- a/projects/eternalFinance/helper.js +++ /dev/null @@ -1,12 +0,0 @@ -const moduleAddress = '0x25a64579760a4c64be0d692327786a6375ec80740152851490cfd0b53604cf95'; -const resourceAddress = '0x25a64579760a4c64be0d692327786a6375ec80740152851490cfd0b53604cf95'; - -function getTypeArgs(struct) { - return struct.split('<')[1].split('>')[0].split(', '); -} - -module.exports = { - getTypeArgs, - moduleAddress, - resourceAddress, -} \ No newline at end of file diff --git a/projects/eternalFinance/index.js b/projects/eternalFinance/index.js deleted file mode 100644 index a9b9750ca9f..00000000000 --- a/projects/eternalFinance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { lyfTvl } = require("./lyf"); -const { lendingTvl } = require("./lending"); - -async function tvl(api) { - await lyfTvl(api); - await lendingTvl(api); -} - -module.exports = { - timetravel: false, - aptos: { - tvl, - } -} \ No newline at end of file diff --git a/projects/eternalFinance/lending.js b/projects/eternalFinance/lending.js deleted file mode 100644 index 2144fa62844..00000000000 --- a/projects/eternalFinance/lending.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getResource, coreTokensAptos } = require("../helper/chain/aptos"); -const { moduleAddress, resourceAddress } = require("./helper"); - -const vaultInfoStruct = `${moduleAddress}::vault::Vaults`; - -async function lendingTvl(api) { - /// @dev get vault info resources - const { vaults } = await getResource(resourceAddress, vaultInfoStruct); - vaults.data.forEach((vault) => { - const token = vault.key; - const balance = vault.value.balance; - - const isCoreAsset = coreTokensAptos.includes(token); - if (isCoreAsset) { - api.add(token, balance); - } - }); - -} - -module.exports = { - lendingTvl, -} \ No newline at end of file diff --git a/projects/eternalFinance/lyf.js b/projects/eternalFinance/lyf.js deleted file mode 100644 index 353a06706b1..00000000000 --- a/projects/eternalFinance/lyf.js +++ /dev/null @@ -1,72 +0,0 @@ -const { default: BigNumber } = require("bignumber.js"); -const { getResource, coreTokensAptos } = require("../helper/chain/aptos"); -const { getPancakeReserveAndLpSupply } = require("./pancake"); -const { getTypeArgs, moduleAddress, resourceAddress } = require("./helper"); - -const allPoolsStruct = `${moduleAddress}::pancake_wmasterchef::AllPools`; - -function deserializeLyfPool(pools) { - /// @dev extract the token types in all pools - const lpPools = {}; - pools.data.forEach(pool => { - const [tokenX, tokenY] = getTypeArgs(pool.key); - lpPools[pool.key] = { - tokenX, - tokenY, - lpName: pool.key, - lpAmount: pool.value.amount, - }; - }); - - return lpPools; -} - -function calculateLyfPoolTokens(lyfPools, api) { - const balances = {}; - Object.keys(lyfPools).map((key) => { - const pool = lyfPools[key]; - const { lpAmount, lpSupply, reserveX, reserveY, tokenX, tokenY } = pool; - - const share = new BigNumber(lpAmount).div(lpSupply); - const balanceX = share.multipliedBy(pool.reserveX).toFixed(0); - const balanceY = share.multipliedBy(pool.reserveY).toFixed(0); - lyfPools[key] = { - ...pool, - balanceX, - balanceY, - } - - const isCoreAssetX = coreTokensAptos.includes(tokenX); - const isCoreAssetY = coreTokensAptos.includes(tokenY); - const nonNeglibleReserves = reserveX !== '0' && reserveY !== '0'; - /// @dev calculate total core assets - if (isCoreAssetX && isCoreAssetY) { - api.add(tokenX, balanceX); - api.add(tokenY, balanceY); - } else if (isCoreAssetX) { - api.add(tokenX, balanceX); - if (nonNeglibleReserves) { - api.add(tokenX, balanceX); - } - } else if (isCoreAssetY) { - api.add(tokenY, balanceY); - if (nonNeglibleReserves) { - api.add(tokenY, balanceY); - } - } - }) - - return balances; -} - -async function lyfTvl(api) { - /// @dev get pool resources - const { pools } = await getResource(resourceAddress, allPoolsStruct); - const allLyfPools = deserializeLyfPool(pools); - await getPancakeReserveAndLpSupply(allLyfPools); - calculateLyfPoolTokens(allLyfPools, api); -} - -module.exports = { - lyfTvl, -} diff --git a/projects/eternalFinance/pancake.js b/projects/eternalFinance/pancake.js deleted file mode 100644 index 2152de4aecf..00000000000 --- a/projects/eternalFinance/pancake.js +++ /dev/null @@ -1,43 +0,0 @@ -const { getResources } = require("../helper/chain/aptos"); -const { getTypeArgs } = require("./helper"); - -const pancakeModuleAddress = '0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa'; -const pancakeTokenPairReservePrefix = `${pancakeModuleAddress}::swap::TokenPairReserve<`; -const pancakeLpCoinInfoPrefix = `0x1::coin::CoinInfo<${pancakeModuleAddress}::swap::LPToken<`; - -function getLpTokenAddress(t0, t1) { - return `${pancakeModuleAddress}::swap::LPToken<${t0}, ${t1}>` -} - -/// @dev fetch all pancakeswap pool and map with lyf pool -async function getPancakeReserveAndLpSupply(lyfPools) { - const resources = await getResources(pancakeModuleAddress); - resources.forEach(({type, data}) => { - if (type.slice(0, pancakeTokenPairReservePrefix.length) === pancakeTokenPairReservePrefix) { - /// @dev get token reserves - const [tx, ty] = getTypeArgs(type); - const lpAddress = getLpTokenAddress(tx, ty); - if (lyfPools[lpAddress]) { - lyfPools[lpAddress] = { - ...lyfPools[lpAddress], - reserveX: data.reserve_x, - reserveY: data.reserve_y, - } - } - } else if (type.slice(0, pancakeLpCoinInfoPrefix.length) === pancakeLpCoinInfoPrefix) { - /// @dev extract total lp supply - const [tx, ty] = getTypeArgs(`<${type.split(pancakeLpCoinInfoPrefix)[1]}`); - const lpAddress = getLpTokenAddress(tx, ty); - if (lyfPools[lpAddress]) { - lyfPools[lpAddress] = { - ...lyfPools[lpAddress], - lpSupply: data.supply.vec?.[0].integer.vec?.[0].value || '0', - } - } - } - }) -} - -module.exports = { - getPancakeReserveAndLpSupply, -} diff --git a/projects/eth-strategy/index.js b/projects/eth-strategy/index.js deleted file mode 100644 index 38470e4983b..00000000000 --- a/projects/eth-strategy/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const owner = await api.call({ abi: 'address:owner', target: '0x900cb2ed071cc54fb2093d930c8821f9e5338a0c'}) - return api.sumTokens({ owner, tokens: [ADDRESSES.null]}) -} - -module.exports = { - ethereum: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/ethalend/abi.json b/projects/ethalend/abi.json deleted file mode 100644 index 995231be9db..00000000000 --- a/projects/ethalend/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "underlying": "address:underlying", - "calcTotalValue": "uint256:calcTotalValue" -} \ No newline at end of file diff --git a/projects/ethalend/index.js b/projects/ethalend/index.js deleted file mode 100644 index 1f4cad60ffd..00000000000 --- a/projects/ethalend/index.js +++ /dev/null @@ -1,102 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json') -const { unwrapUniswapLPs } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') -const { getConfig } = require('../helper/cache') -const sdk = require('@defillama/sdk') - -const { gql, request } = require('graphql-request') -const { default: BigNumber } = require('bignumber.js') -const { getBlock } = require('../helper/http') - -/* -const vaults = [ - "0x4e5b645B69e873295511C6cA5B8951c3ff4F74F4", - "0xb56AAb9696B95a75A6edD5435bc9dCC4b07403b0", - "0x8dE8637412e70916Ee2CAA3b62C569d9A88391A3", - "0xa5eefafa4f5cd64e3f6e97f6fa1301434d544775", - "0x04D5bc0fdD251484A7a2224cEE818C7ce2412dbc", - "0xF125B8d7D0DCCbb810c9187e6361804B895C91B5", -] -*/ -const curvePool = "0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171" - -const globalDataQuery = gql` - query($block: Int) { - globalDatas(first: 100, - block: { number: $block } - ) { - symbol - address - type - totalUnderlying - totalVolumeUSD - } - } -`; - -async function polygonTvl(_, _block, cb) { - const block = await getBlock(_, 'polygon', cb) - return tvl('polygon', block, '137') -} - -async function avaxTvl(_, _block, cb) { - const block = await getBlock(_, 'avax', cb) - return tvl('avax', block, '43114') -} - -async function tvl(chain, block, chainId) { - const balances = {} - if (chain === 'polygon') { - const globalData = (await request(sdk.graph.modifyEndpoint('3fJ6wwsbCeMUrsohMRsmzgzrWwRMWnEac8neYkYQuJaz'), globalDataQuery, { block: block - 100 })).globalDatas - await Promise.all(globalData.filter(v => v.type === "lending").map(async v => { - if (v.address.toLowerCase() === ADDRESSES.GAS_TOKEN_2.toLowerCase()) { - v.address = ADDRESSES.polygon.WMATIC_2 - } - const decimals = await sdk.api.erc20.decimals(v.address, chain) - sdk.util.sumSingleBalance(balances, chain + ':' + v.address, BigNumber(v.totalUnderlying).times(10 ** decimals.output).toFixed(0)) - })) - } - let vaults = (await getConfig('ethalend', "https://ethalend.com/vaults/vaultInfo")).data.filter(i => i.chainId === chainId).map(v => v.strategyAddress).filter(i => i) - vaults = Array.from(new Set(vaults)) // remove duplicates - const [underlyings, totals] = await Promise.all([abi.underlying, abi.calcTotalValue].map(abi => sdk.api.abi.multiCall({ - abi, - block, - chain, - permitFailure: true, - calls: vaults.map(v => ({ target: v })) - }))) - const lpPositions = [] - for (let i = 0; i < vaults.length; i++) { - const underlying = underlyings.output[i].output - const total = totals.output[i].output - if (underlying === curvePool) { - sdk.util.sumSingleBalance(balances, "polygon:0x2e1ad108ff1d8c782fcbbb89aad783ac49586756", total) - } else { - if (!underlying) continue; - if (underlying.toLowerCase() === '0xe7CEA2F6d7b120174BF3A9Bc98efaF1fF72C997d'.toLowerCase()) { - sdk.util.sumSingleBalance(balances, "polygon:" + underlying, total) - continue; - } - lpPositions.push({ - token: underlying, - balance: total - }) - } - } - await unwrapUniswapLPs(balances, lpPositions, block, chain, addr => `${chain}:${addr}`) - return balances -} - -module.exports = { - polygon: { - tvl: polygonTvl, - staking: staking("0x85e6A965950ACa02fdf680d4b087DdD64DF28a81", "0x59e9261255644c411afdd00bd89162d09d862e38", "polygon"), - pool2: pool2("0x2f4de75a8e591cbd4d2c0d3aee7c36fe62a64f79", "0xb417da294ae7c5cbd9176d1a7a0c7d7364ae1c4e", "polygon", - addr => addr.toLowerCase() === "0x59e9261255644c411afdd00bd89162d09d862e38" ? "0x59e9261255644c411afdd00bd89162d09d862e38" : `polygon:${addr}`) - }, - avax: { - tvl: avaxTvl, - } -} \ No newline at end of file diff --git a/projects/ethena-tsusde/index.js b/projects/ethena-tsusde/index.js deleted file mode 100644 index 8562c4c47b9..00000000000 --- a/projects/ethena-tsusde/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/chain/ton"); - - -const vaultAddress = 'EQChGuD1u0e7KUWHH5FaYh_ygcLXhsdG2nSHPXHW8qqnpZXW' -const USDe = ADDRESSES.ton.USDe - - -module.exports = { - timetravel: false, - methodology: "USDe is locked on the vault smart contract (EQChGuD1u0e7KUWHH5FaYh_ygcLXhsdG2nSHPXHW8qqnpZXW)", - ton: { - tvl: sumTokensExport({ owners: [vaultAddress], tokens: [USDe], }), - } -} \ No newline at end of file diff --git a/projects/ethena-usdtb/index.js b/projects/ethena-usdtb/index.js deleted file mode 100644 index fa7580cda53..00000000000 --- a/projects/ethena-usdtb/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const USDtb = "0xc139190f447e929f090edeb554d95abb8b18ac1c" - -module.exports = { - doublecounted: true, - ethereum: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: USDtb }) - api.add(USDtb, supply) - }, - } -} diff --git a/projects/ethena/index.js b/projects/ethena/index.js deleted file mode 100644 index ecdf66007dd..00000000000 --- a/projects/ethena/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const USDe = ADDRESSES.ethereum.USDe - -module.exports = { - ethereum: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: USDe }) - await sumTokens2({ - api, - owners: [ - "0x2d4d2a025b10c09bdbd794b4fce4f7ea8c7d7bb4", - "0xd54F23BE482D9A58676590fCa79c8E43087f92fB", - "0x2B5AB59163a6e93b4486f6055D33CA4a115Dd4D5" - ], - tokens: [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.sUSDS, - "0xC139190F447e929f090Edeb554D95AbB8b18aC1C" // USDtb - ] - }) - api.add(USDe, supply - (await api.getBalancesV2().getUSDValue())*1e18) - }, - } -} diff --git a/projects/ether-fi/index.js b/projects/ether-fi/index.js deleted file mode 100644 index 6f55b513867..00000000000 --- a/projects/ether-fi/index.js +++ /dev/null @@ -1,152 +0,0 @@ -const { nullAddress } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json'); -const sdk = require('@defillama/sdk'); - -function staking(contract, token) { - return async (api) => { - const totalSupply = await api.call({ target: contract, abi: 'erc20:totalSupply' }); - api.add(token, totalSupply); - }; -} - -const WBTC = { - ethereum: ADDRESSES.ethereum.WBTC, - arbitrum: ADDRESSES.arbitrum.WBTC, - berachain: ADDRESSES.bsc.WBTC, -}; -const LBTC = { - ethereum: ADDRESSES.ethereum.LBTC, - base: ADDRESSES.corn.LBTC, - berachain: ADDRESSES.corn.LBTC, -}; -const CBBTC = { - ethereum: ADDRESSES.ethereum.cbBTC, - base: ADDRESSES.ethereum.cbBTC, - arbitrum: ADDRESSES.ethereum.cbBTC, -}; - -const fetchQueuedWithdrawalsAbi = "function fetchQueuedWithdrawals(address staker) view returns (tuple(address staker, address delegatedTo, uint256 nonce, uint256 start, tuple(address[] vaults, uint256[] shares, address withdrawer) request)[] queuedWithdrawals)" -const isWithdrawPendingAbi = "function isWithdrawPending(tuple(address staker, address delegatedTo, uint256 nonce, uint256 start, tuple(address[] vaults, uint256[] shares, address withdrawer) request) withdrawal) view returns (bool)" - -async function get_karak_btc_withdrawals(timestamp) { - const api = new sdk.ChainApi({ timestamp, chain: 'ethereum' }) - const karak_btc = await api.call({ target: '0xAfa904152E04aBFf56701223118Be2832A4449E0', abi: fetchQueuedWithdrawalsAbi, params: [ADDRESSES.ethereum.EBTC] }) - let total_btc_in_queued_withdrawals = 0 - for (const withdrawal of karak_btc) { - const isWithdrawPending = await api.call({ target: '0xAfa904152E04aBFf56701223118Be2832A4449E0', abi: isWithdrawPendingAbi, params: [withdrawal] }) - if (isWithdrawPending) { - for (const share of withdrawal.request.shares) { - total_btc_in_queued_withdrawals += Number(share) - } - } - } - return total_btc_in_queued_withdrawals -} - -async function ebtc_staking(timestamp) { - if (timestamp < 1746507563) return [0n, 0n, 0n]; - - const EBTC = ADDRESSES.ethereum.EBTC; - let wbtc_held = 0n, lbtc_held = 0n, cbbtc_held = 0n; - - const collectBalances = async (tokens, accumulator) => { - let sum = accumulator; - for (const [chain, token] of Object.entries(tokens)) { - const result = await sdk.api.erc20.balanceOf({ - target: token, - owner: EBTC, - chain, - timestamp, - }); - sum += BigInt(result.output); - } - return sum; - }; - - wbtc_held = await collectBalances(WBTC, wbtc_held); - lbtc_held = await collectBalances(LBTC, lbtc_held); - cbbtc_held = await collectBalances(CBBTC, cbbtc_held); - - console.log(wbtc_held, lbtc_held, cbbtc_held); - - const getEthBalance = async (token, owner) => { - const result = await sdk.api.erc20.balanceOf({ - target: token, - owner, - chain: 'ethereum', - timestamp, - }); - return BigInt(result.output); - }; - - const ethExtras = await Promise.all([ - getEthBalance('0x468c34703F6c648CCf39DBaB11305D17C70ba011', EBTC), - getEthBalance('0x126d4dBf752AaF61f3eAaDa24Ab0dB84FEcf6891', EBTC), - getEthBalance('0x9C0823D3A1172F9DdF672d438dec79c39a64f448', EBTC), - getEthBalance('0x971e5b5D4baa5607863f3748FeBf287C7bf82618', EBTC), - getEthBalance(LBTC.ethereum, '0xd4E20ECA1f996Dab35883dC0AD5E3428AF888D45'), - ]); - - const karak_btc_withdrawals = await get_karak_btc_withdrawals(timestamp); - - lbtc_held += ethExtras[0] + ethExtras[2] + ethExtras[4] + BigInt(karak_btc_withdrawals); - wbtc_held += ethExtras[1] + ethExtras[3]; - - return [lbtc_held, wbtc_held, cbbtc_held]; -} - -module.exports = { - doublecounted: true, - - ethereum: { - staking: staking("0x86B5780b606940Eb59A062aA85a07959518c0161", ADDRESSES.ethereum.ETHFI), - - tvl: async ({ timestamp }) => { - const [lbtc_held, wbtc_held, cbbtc_held] = await ebtc_staking(timestamp); - - const ethSupply = await sdk.api.abi.call({ - target: '0x6329004E903B7F420245E7aF3f355186f2432466', - abi: 'uint256:getTvl', - chain: 'optimism', - timestamp, - }); - - let loopedTvl = 0n; - if (timestamp > 1746507563) { - const looped = await sdk.api.abi.call({ - target: '0xAB7590CeE3Ef1A863E9A5877fBB82D9bE11504da', - abi: 'function categoryTVL(string _category) view returns (uint256)', - params: ['liquideth'], - chain: 'optimism', - timestamp, - }); - loopedTvl = BigInt(looped.output); - } - - const etherfiEthTvl = BigInt(ethSupply.output) - loopedTvl; - - const eusd = await sdk.api.abi.call({ - target: ADDRESSES.ethereum.EUSD, - abi: 'uint256:totalSupply', - chain: 'ethereum', - timestamp, - }); - - return { - [nullAddress]: etherfiEthTvl.toString(), - [ADDRESSES.ethereum.USDC]: (BigInt(eusd.output) / 10n ** 12n).toString(), - [LBTC.ethereum]: lbtc_held.toString(), - [WBTC.ethereum]: wbtc_held.toString(), - [CBBTC.ethereum]: cbbtc_held.toString(), - }; - } - }, - - arbitrum: { - staking: staking("0x86B5780b606940Eb59A062aA85a07959518c0161", ADDRESSES.arbitrum.ETHFI) - }, - - base: { - staking: staking("0x86B5780b606940Eb59A062aA85a07959518c0161", ADDRESSES.arbitrum.ETHFI) - } -}; diff --git a/projects/etherberry/index.js b/projects/etherberry/index.js deleted file mode 100644 index 183f80749b1..00000000000 --- a/projects/etherberry/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); -const { pool2 } = require("../helper/pool2"); - -const FACTORY_CONTRACT = "0x09cA2dF4956720aB75c55313a7c83A63286fDd42"; -const WETH_ADDRESS = ADDRESSES.arbitrum.WETH; -const BERRY_ETH_LP_ADDRESS = "0x6eF6eCD8AC5626525383d72AfaA9a7e7e39C0959"; -const BERRY_ETH_STAKING_POOL = "0xcA4319D51472D7111fa3A103b07fc08fC8b20655"; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: FACTORY_CONTRACT, - topics: ["0x489ab9065c597368f4a678fadcb323bf4c848713ea7d5a296d16ec97203eae83",], - eventAbi: "event StakingPoolDeployed(address indexed poolAddress,address indexed stakingToken,uint256 startTime,uint256 roundDurationInDays)", - onlyArgs: true, - fromBlock: 93557929, - }); - - const lsdAddresses = logs.map((i) => i.stakingToken === nullAddress ? WETH_ADDRESS : i.stakingToken); - const poolAddresses = logs.map((i) => i.poolAddress); - - return sumTokens2({ api, tokensAndOwners2: [lsdAddresses, poolAddresses], blacklistedTokens: [BERRY_ETH_LP_ADDRESS], }); -} - -module.exports = { - arbitrum: { - methodology: - "TVL of Staked ETH & LSD tokens, with pool2 including value of staked BERRY/ETH Uniswap-V2 LP tokens", - tvl, - pool2: pool2([BERRY_ETH_STAKING_POOL], [BERRY_ETH_LP_ADDRESS]), - }, -}; diff --git a/projects/ethereal/index.js b/projects/ethereal/index.js deleted file mode 100644 index fcad0d486ff..00000000000 --- a/projects/ethereal/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const VAULT = '0x90d2af7d622ca3141efa4d8f1f24d86e5974cc8f' - -module.exports = { - methodology: 'TVL includes USDe tokens locked in Ethereal’s Season Zero vault on Ethereum.', - ethereum: { tvl: sumTokensExport({ owner: VAULT, tokens: [ADDRESSES.ethereum.USDe] }) }, -} diff --git a/projects/ethereum-classic-stable-dollar/index.js b/projects/ethereum-classic-stable-dollar/index.js deleted file mode 100644 index a7d96f22adf..00000000000 --- a/projects/ethereum-classic-stable-dollar/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, } = require('../helper/unwrapLPs') -const { sumTokensExport, } = require('../helper/sumTokens') - -module.exports = { - methodology: "The TVL of ECSD is the amount of ETC in the contract's reserve.", - ethereumclassic: { - tvl: sumTokensExport({ - owner: '0xCc3664d7021FD36B1Fe2b136e2324710c8442cCf', - tokens: [nullAddress], - }) - }, -} - diff --git a/projects/etherex-cl/index.js b/projects/etherex-cl/index.js deleted file mode 100644 index 6ad8c767b9a..00000000000 --- a/projects/etherex-cl/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - linea: { factory: '0xAe334f70A7FC44FCC2df9e6A37BC032497Cf80f1', fromBlock: 21293324, }, -}) \ No newline at end of file diff --git a/projects/etherex-legacy/index.js b/projects/etherex-legacy/index.js deleted file mode 100644 index 069734b0bee..00000000000 --- a/projects/etherex-legacy/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - linea:{ - tvl: getUniTVL({ factory: '0xC0b920f6f1d6122B8187c031554dc8194F644592', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'cAMM' }), - }, -} \ No newline at end of file diff --git a/projects/etherfi-cash-collateral-management/index.js b/projects/etherfi-cash-collateral-management/index.js deleted file mode 100644 index 285fb62d8e7..00000000000 --- a/projects/etherfi-cash-collateral-management/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); - - -const EtherFiCashFactory = '0xF4e147Db314947fC1275a8CbB6Cde48c510cd8CF'; -const CashBorrowerHelperContract = '0xF0df37503714f08d0fCA5B434F1FFA2b8b1AF34B'; - - -//Get all the collateral held by cash borrow mode vaults which can be used to borrow against -async function getCollateralInCashBorrowMode(api, config) { - - const collateralTokensToAmount = {}; - - const { timestamp } = api; - const scroll_api = new sdk.ChainApi({ timestamp, chain: 'scroll' }); - - //get last collateral mode vault - const lastCollateralModeVault = (await scroll_api.call({ - target: EtherFiCashFactory, - abi: 'function numContractsDeployed() view returns (uint256)', - })) - 1; - - const batch_size = 300; - - const calls = []; - for (let i = 0; i < Number(lastCollateralModeVault); i += batch_size) { - const startIndex = i; - const endIndex = Math.min(i + batch_size, lastCollateralModeVault); - const n = endIndex - startIndex; - - calls.push({ - target: CashBorrowerHelperContract, - abi: 'function getTotalCollateralForSafesWithIndex(uint256 startIndex, uint256 n) view returns (tuple(address token, uint256 amount)[])', - params: [startIndex, n], - }); - } - - const parallelBatchSize = 30; - const batches = []; - for (let i = 0; i < calls.length; i += parallelBatchSize) { - batches.push(calls.slice(i, Math.min(i + parallelBatchSize, calls.length))); - } - - // Execute batches in parallel - for (const [batchIndex, batch] of batches.entries()) { - const batchPromises = batch.map(call => scroll_api.call(call)); - const batchResults = await Promise.all(batchPromises); - - // Process results - batchResults.forEach((result, index) => { - if (Array.isArray(result)) { - for (const [token, amount] of result) { - // Validate amount before adding - if (amount && amount !== 'Infinity' && !isNaN(Number(amount))) { - collateralTokensToAmount[token] = (collateralTokensToAmount[token] || 0n) + BigInt(amount); - } else { - console.warn('Invalid amount for token:', token, amount) - } - } - } - }); - } - - const result = {}; - for (const [token, amount] of Object.entries(collateralTokensToAmount)) { - result[token] = amount.toString(); - } - - return result; -} - -async function tvl(api) { - const collateralTokensToAmount = await getCollateralInCashBorrowMode(api); - for (const [token, amount] of Object.entries(collateralTokensToAmount)) { - api.add(token, amount); - } -} - -async function borrow(api) { - const cashDebitCore = '0x0078C5a459132e279056B2371fE8A8eC973A9553' - const usdcScroll = ADDRESSES.scroll.USDC - const { timestamp } = api; - const scroll_api = new sdk.ChainApi({ timestamp, chain: 'scroll' }); - const borrowingAmount = await scroll_api.call({ - target: cashDebitCore, - abi: 'function totalBorrowingAmount(address borrowToken) view returns (uint256)', - params: [usdcScroll], - }); - api.add(usdcScroll, borrowingAmount); -} - -module.exports = { - misrepresentedTokens: true, - scroll: { - tvl, - borrowed: borrow, - }, -}; diff --git a/projects/etherfi-cash-liquid/index.js b/projects/etherfi-cash-liquid/index.js deleted file mode 100644 index 1288cbe89b8..00000000000 --- a/projects/etherfi-cash-liquid/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); - -const vaults = [ - '0xf0bb20865277aBd641a307eCe5Ee04E79073416C', - '0x08c6F91e2B681FaF5e17227F2a44C307b3C1364C', - '0x5f46d540b6eD704C3c8789105F30E075AA900726', - ADDRESSES.ethereum.EBTC, - ADDRESSES.ethereum.EUSD, -] - -async function tvl(api) { - const { timestamp } = api; - const scroll_api = new sdk.ChainApi({ timestamp, chain: 'scroll' }); - for (const vault of vaults) { - const totalSupply = await scroll_api.call({ - target: vault, - abi: 'function totalSupply() view returns (uint256)', - }) - api.add(vault, totalSupply); - } - } - - module.exports = { - misrepresentedTokens: true, - doublecounted: true, - scroll: { - tvl, - }, - }; \ No newline at end of file diff --git a/projects/etherfi-liquid/index.js b/projects/etherfi-liquid/index.js deleted file mode 100644 index 9d2bdb3f205..00000000000 --- a/projects/etherfi-liquid/index.js +++ /dev/null @@ -1,144 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') - -const vault_config = { - eth: { - vaults: [ - '0xf0bb20865277aBd641a307eCe5Ee04E79073416C', - '0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88', - '0x7223442cad8e9cA474fC40109ab981608F8c4273', - '0x83599937c2C9bEA0E0E8ac096c6f32e86486b410', - '0xca8711dAF13D852ED2121E4bE3894Dae366039E4', - ], - accountant: [ - '0x0d05D94a5F1E76C18fbeB7A13d17C8a314088198', - '0xbe16605B22a7faCEf247363312121670DFe5afBE', - '0x126af21dc55C300B7D0bBfC4F3898F558aE8156b', - '0x04B8136820598A4e50bEe21b8b6a23fE25Df9Bd8', - '0x075e60550C6f77f430B284E76aF699bC31651f75', - ], - timestampDeployed: [1717457039, 1718161451, 1719943535, 1735549559, 1737018599], - base: ADDRESSES.ethereum.EETH, - decimals: 18, - }, - btc: { - vaults: [ - '0x5f46d540b6eD704C3c8789105F30E075AA900726', - '0xC673ef7791724f0dcca38adB47Fbb3AEF3DB6C80', - ], - accountant: [ - '0xEa23aC6D7D11f6b181d6B98174D334478ADAe6b0', - '0xF44BD12956a0a87c2C20113DdFe1537A442526B5', - ], - timestampDeployed: [1731626531, 1735548563], - base: [ - ADDRESSES.ethereum.EBTC, // EBTC - ADDRESSES.ethereum.WBTC, - ], - decimals: 8, - }, - usd: { - vaults: [ - '0x08c6F91e2B681FaF5e17227F2a44C307b3C1364C', - '0x352180974C71f84a934953Cf49C4E538a6F9c997', - '0xeDa663610638E6557c27e2f4e973D3393e844E70', - '0xbc0f3B23930fff9f4894914bD745ABAbA9588265', - ], - accountant: [ - '0xc315D6e14DDCDC7407784e2Caf815d131Bc1D3E7', - '0xBae19b38Bf727Be64AF0B578c34985c3D612e2Ba', - '0x1D4F0F05e50312d3E7B65659Ef7d06aa74651e0C', - '0x95fE19b324bE69250138FE8EE50356e9f6d17Cfe', - ], - timestampDeployed: [1738059803, 1724977967, 1724694191, 1733455907], - base: ADDRESSES.ethereum.USDC, - decimals: 6, - }, -}; - -async function updateVaultTvl(api, config) { - const { timestamp } = api; - const optimism_api = new sdk.ChainApi({ timestamp, chain: 'optimism' }); - - let { vaults, accountant, base, timestampDeployed, decimals: baseDecimals } = config; - - // Filter by deployment time - const filteredVaults = []; - const filteredAccountant = []; - - for (let i = 0; i < vaults.length; i++) { - if (timestampDeployed[i] < timestamp) { - filteredVaults.push(vaults[i]); - filteredAccountant.push(accountant[i]); - } - } - - const vaultsSupply = await api.multiCall({ calls: filteredVaults, abi: 'uint256:totalSupply' }); - const quotes = await api.multiCall({ calls: filteredAccountant, abi: 'uint256:getRate' }); - const decimals = await api.multiCall({ calls: filteredAccountant, abi: 'uint256:decimals' }); - - let amount = 0; - for (let i = 0; i < vaultsSupply.length; i++) { - const supply = vaultsSupply[i]; - const rate = quotes[i]; - const dec = decimals[i]; - amount += (supply / 10 ** dec) * (rate / 10 ** dec) * 10 ** baseDecimals; - } - - // Adjust for WBTC and WETH liquid vaults - if (Array.isArray(base) && base.includes(ADDRESSES.ethereum.WBTC)) { - let wbtc = 0; - if (timestamp < 1746507563) { - wbtc = await api.call({ - target: ADDRESSES.ethereum.EBTC, - abi: 'uint256:totalSupply', - }); - } else { - wbtc = await optimism_api.call({ - target: '0xAB7590CeE3Ef1A863E9A5877fBB82D9bE11504da', - abi: 'function categoryTVL(string _category) view returns (uint256)', - params: ['liquid-vault-wbtc'], - }); - } - amount -= wbtc; - api.add(ADDRESSES.ethereum.WBTC, wbtc); - } - - if (base === ADDRESSES.ethereum.EETH) { - let weth = 0; - const category = timestamp < 1746507563 ? 'liquid-weth' : 'liquid-vault-weth'; - weth = await optimism_api.call({ - target: '0xAB7590CeE3Ef1A863E9A5877fBB82D9bE11504da', - abi: 'function categoryTVL(string _category) view returns (uint256)', - params: [category], - }); - amount -= weth; - api.add(ADDRESSES.ethereum.WETH, weth); - } - - if (amount < 0) amount = 0; - - // Add amount to the appropriate token(s) - if (Array.isArray(base)) { - const share = amount / base.length; - for (const token of base) { - api.add(token, share); - } - } else { - api.add(base, amount); - } -} - -async function tvl(api) { - for (const config of Object.values(vault_config)) { - await updateVaultTvl(api, config); - } -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - ethereum: { - tvl, - }, -}; diff --git a/projects/etherfi-lrt/index.js b/projects/etherfi-lrt/index.js deleted file mode 100644 index 5effc8e0252..00000000000 --- a/projects/etherfi-lrt/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const vaults = [ - '0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88', - '0x7223442cad8e9cA474fC40109ab981608F8c4273', - ADDRESSES.ethereum.EBTC, - '0x352180974C71f84a934953Cf49C4E538a6F9c997', - '0xeDa663610638E6557c27e2f4e973D3393e844E70', -] - -const vaultAccountant = [ - '0xbe16605B22a7faCEf247363312121670DFe5afBE', - '0x126af21dc55C300B7D0bBfC4F3898F558aE8156b', - '0x1b293DC39F94157fA0D1D36d7e0090C8B8B8c13F', - '0xBae19b38Bf727Be64AF0B578c34985c3D612e2Ba', - '0x1D4F0F05e50312d3E7B65659Ef7d06aa74651e0C', -] - -async function vaultsTvl(api) { - const supplies = await api.multiCall({ calls: vaults, abi: 'uint256:totalSupply' }) - const quotes = await api.multiCall({ calls: vaultAccountant, abi: 'uint256:getRate' }) - const bases = await api.multiCall({ calls: vaultAccountant, abi: 'address:base' }) - for (let i = 0; i < vaults.length; i++) { - const bvSupply = supplies[i] - let base = bases[i] - const quote = quotes[i] - if (base.toLowerCase() === ADDRESSES.ethereum.WETH.toLowerCase()) - base = ADDRESSES.ethereum.EETH - - const denominator = Math.pow(10, (String(quote).length - 1)) - api.add(base, bvSupply * quote / denominator) - } -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - ethereum: { - tvl: vaultsTvl, - }, -} \ No newline at end of file diff --git a/projects/etherflip/index.js b/projects/etherflip/index.js deleted file mode 100644 index 3e38c9bc907..00000000000 --- a/projects/etherflip/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const etherFlipPool = "0xE5a04D98538231b0fAb9ABa60cd73cE4fF3039DF"; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: [etherFlipPool], - tokens: [coreAssets.null], - }), - }, -}; diff --git a/projects/ethernity/index.js b/projects/ethernity/index.js deleted file mode 100644 index c9e687292ee..00000000000 --- a/projects/ethernity/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require('../helper/unwrapLPs'); - -const ernToken = '0xBBc2AE13b23d715c30720F079fcd9B4a74093505'; -const stonesFarm = '0xEdFE9aC42a511e1C523E067DB8345711419d4f14'; -const ernLPFarm = '0x34a77Aa9AE42ff9a9B2078E450651D112D5BE908'; -const ernLP = '0x570febdf89c07f256c75686caca215289bb11cfc'; - -async function tvl(timestamp, block) { - const balances = {}; - - const balanceStones = await sdk.api.erc20.balanceOf({ - target: ernToken, - owner: stonesFarm, - block: block, - }); - balances[ernToken] = balanceStones.output; - - //get balance of LP tokens on ern farm - const balanceErnLP = await sdk.api.erc20.balanceOf({ - target: ernLP, - owner: ernLPFarm, - block: block, - }); - - //unrwap the lp tokens to get the amount of each coin in the lp - await unwrapUniswapLPs(balances, [{ - token: ernLP, - balance: balanceErnLP.output, - }], - block); - - return balances; -} - - -module.exports = { - ethereum:{ - tvl - }, -} diff --git a/projects/ethervista/index.js b/projects/ethervista/index.js deleted file mode 100644 index 8f340e3d67f..00000000000 --- a/projects/ethervista/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'ethereum': '0x9a27cb5ae0B2cEe0bb71f9A85C0D60f3920757B4' -}) \ No newline at end of file diff --git a/projects/ethfi-stake/index.js b/projects/ethfi-stake/index.js deleted file mode 100644 index 0b9bb1dfed7..00000000000 --- a/projects/ethfi-stake/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -module.exports = { - ethereum: { - tvl: () => 0, - staking: staking( - "0x86B5780b606940Eb59A062aA85a07959518c0161", - ADDRESSES.ethereum.ETHFI - ), - }, - arbitrum: { - tvl: () => 0, - staking: staking( - "0x86B5780b606940Eb59A062aA85a07959518c0161", - ADDRESSES.arbitrum.ETHFI - ), - }, -}; diff --git a/projects/ethichub/index.js b/projects/ethichub/index.js deleted file mode 100644 index 793e0ca9351..00000000000 --- a/projects/ethichub/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { pool2 } = require("../helper/pool2"); -const { stakings } = require('../helper/staking'); - -// Mainnet -const ETHIX_TOKEN = '0xFd09911130e6930Bf87F2B0554c44F400bD80D3e'; -const STAKED_ETHIX_MAINNET = '0x5b2bbbe7DFD83aA1f1CD0c498690E6EcC939CC2D'; -const ETHIX_WETH_UNIV2 = '0xb14b9464b52F502b0edF51bA3A529bC63706B458'; -const STAKED_UETHIX_MAINNET = '0x89cea15F68950DF830dFE3630d635a9eD79478F5'; -const ORIGINATOR_BRAZIL = '0x3B61CD481Be3BA62a9a544c49d6C09FCb804d0e3'; -const ORIGINATOR_HONDURAS = '0x7435C0232A69270D19F8E4010571175c3f1dd955'; -// Celo -const ETHIX_TOKEN_CELO = ADDRESSES.celo.ETHIX; -const STAKED_ETHIX_CELO = '0xCb16E29d0B667BaD7266E5d0Cd59b711b6273C6B'; - -module.exports = { - methodology: 'Count of the tokens in pools, reserves...', - start: '2020-12-22', - ethereum: { - tvl: () => ({}), - pool2: pool2(STAKED_UETHIX_MAINNET, ETHIX_WETH_UNIV2), - staking: stakings([STAKED_ETHIX_MAINNET, ORIGINATOR_BRAZIL, ORIGINATOR_HONDURAS], ETHIX_TOKEN) - }, - celo: { - tvl: () => ({}), - staking: stakings([STAKED_ETHIX_CELO], ETHIX_TOKEN_CELO) - }, - hallmarks:[ - [1608640694, "Ethix launch"], - [1655719625, "Ethix on Celo network"], - [1626704101, "Originator Brazil"], - [1634714203, "Originator Honduras"], - [1610472600, "Grand Opening Cryptocafé in Madrid"], - ] -}; diff --git a/projects/ethos-markets/index.js b/projects/ethos-markets/index.js deleted file mode 100644 index 2099fc7d517..00000000000 --- a/projects/ethos-markets/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const MARKETS_CONTRACT = '0xC26F339F4E46C776853b1c190eC17173DBe059Bf'; -const NATIVE_ETH = ADDRESSES.null; - -async function tvl(api) { - return api.sumTokens({ owner: MARKETS_CONTRACT, tokens: [NATIVE_ETH] }); -} - -module.exports = { - methodology: 'Measures the total amount of ETH stored in the Reputation Markets contract. Markets allow trading trust/distrust votes against Ethos network profiles on an AMM.', - base: { tvl }, - start: '2025-01-21', -}; diff --git a/projects/ethos-network/index.js b/projects/ethos-network/index.js deleted file mode 100644 index d046f5dffff..00000000000 --- a/projects/ethos-network/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const VOUCH_CONTRACT = '0xD89E6B7687f862dd6D24B3B2D4D0dec6A89A6fdd'; -const NATIVE_ETH = ADDRESSES.null; - -async function tvl(api) { - return api.sumTokens({ owner: VOUCH_CONTRACT, tokens: [NATIVE_ETH] }); -} - -module.exports = { - methodology: 'Measures the total amount of ETH stored in the Vouch contract. Each vouch represents a trust relationship backed by ETH.', - base: { tvl }, - start: '2025-01-21', -}; \ No newline at end of file diff --git a/projects/ethos/index.js b/projects/ethos/index.js deleted file mode 100644 index 490e469441e..00000000000 --- a/projects/ethos/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const { unwrapBalancerToken } = require("../helper/unwrapLPs") - -const admins = { - v1: '0xd584a5e956106db2fe74d56a0b14a9d64be8dc93', - v2: '0x06cbD15D58069193717486CFDe37Ebf5Ec72a8A6', - v2_1: '0x75C72F459f2054B46ceFD6D10eC99d0fbd777F05', -} - -const strategiesVersioned = { - v1: { - wETH: "0x1225c53F510877074d0D1Bace26C4f0581c24cF7", - wBTC: "0xef82200DC96a14af76f5fB7f27DbaDB5228f6A0C", - OP: "0x6938b5b43b281bF24202437b86bbd2866a79cF6C", - }, - v2: { - wETH: "0x01Cd26dD056671DED555314d43841d8AaaBC72e3", - wBTC: "0x8669CC362aa0AcB2b15423090B28acdc89163e84", - }, - 'v2.1': { - wETH: "0x7c09733834873b1FDB8A70c19eE1A514023f74f9", - wBTC: "0xbb341D8249c1C747708D4e6F7Cd967A2479CAD75", - wstETH: "0xA70266C8F8Cf33647dcFEE763961aFf418D9E1E4", - }, -} - -const strategies = Object.values(strategiesVersioned).map(i => Object.values(i)).flat() - -async function tvl(api) { - const vaults = Object.values(admins) - const configs = await api.multiCall({ abi: 'address:collateralConfig', calls: vaults }) - const collaterals = await api.multiCall({ abi: 'address[]:getAllowedCollaterals', calls: configs }) - const pools = await api.multiCall({ abi: 'address:activePool', calls: vaults }) - - const tokens = await api.multiCall({ abi: 'address:token', calls: strategies }) - const bals = await api.multiCall({ abi: 'uint256:totalSupply', calls: strategies }) - api.addTokens(tokens, bals) - - return api.sumTokens({ ownerTokens: pools.map((p, i) => [collaterals[i], p]) }) - // const calls = vaults.map((target, i) => collaterals[i].map(params => ({ params, target }))).flat() - // const bals = await api.multiCall({ abi: 'function getEntireSystemColl(address) view returns (uint256)', calls }) - // const tokens = calls.map(i => i.params) - // api.addTokens(tokens, bals) -} - -async function pool2(api) { - const toa = [ - ['0xd20f6F1D8a675cDCa155Cb07b5dC9042c467153f', '0x9425b96462b1940e7563cd765464300f6a774805'], - ['0xD13D81aF624956327A24d0275CBe54b0eE0E9070', '0x6c56A0Ca937A3C9f29bCF386D3cD0667Ef9d7e88'], - ['0xD13D81aF624956327A24d0275CBe54b0eE0E9070', '0x7D6a62d496D42d5E978C4eDa0d367Ac1Ba70A200'], - ] - return api.sumTokens({ tokensAndOwners: toa }) - // await Promise.all(toa.map(async ([balancerToken, owner]) => unwrapBalancerToken({ api, balancerToken, owner }))) -} -module.exports = { - doublecounted: true, - methodology: `TVL is fetched from the Ethos Reserve subgraph and the Byte Masons token price api.`, - optimism: { - tvl, - pool2, - }, -} diff --git a/projects/ethosx/index.js b/projects/ethosx/index.js deleted file mode 100644 index ce85fd5ba48..00000000000 --- a/projects/ethosx/index.js +++ /dev/null @@ -1,112 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -// V1 -const ETH_PUT_CONTROLLER_ADDRESS_V1 = "0x55E008E3b0Aa6808Ca8B8Ba1DC319EC132554aCd"; -const ETH_CALL_CONTROLLER_ADDRESS_V1 = - "0x2eEFcBCa065bE1763be58276AFA41627A82dfa2D"; -const BTC_PUT_CONTROLLER_ADDRESS_V1 = "0x3273C69432b2B0D808499F4Cc56113Be6c7A673F"; -const BTC_CALL_CONTROLLER_ADDRESS_V1 = - "0x18AadF2a220D3FEb958Ed161263185f0805D11a1"; -const PEPE_PUT_CONTROLLER_ADDRESS_V1 = - "0x9c50C12d3A569cD4285c62cd7A889cE7BCfC12e9"; -const PEPE_CALL_CONTROLLER_ADDRESS_V1 = - "0x176a49747a97dD0735a2186aEbe1d1400E3eBf8b"; -const WIF_PUT_CONTROLLER_ADDRESS_V1 = "0xA1269bF2F05aA11363352eA0cf4E5a071Ef9cF29"; -const WIF_CALL_CONTROLLER_ADDRESS_V1 = - "0x47D5710A4ABd8B47e9ec48f6cB04cDBcfBFCA382"; -const DOGE_PUT_CONTROLLER_ADDRESS_V1 = - "0x9c50C12d3A569cD4285c62cd7A889cE7BCfC12e9"; -const DOGE_CALL_CONTROLLER_ADDRESS_V1 = - "0x176a49747a97dD0735a2186aEbe1d1400E3eBf8b"; -const FLOKI_PUT_CONTROLLER_ADDRESS_V1 = - "0xA1269bF2F05aA11363352eA0cf4E5a071Ef9cF29"; -const FLOKI_CALL_CONTROLLER_ADDRESS_V1 = - "0x47D5710A4ABd8B47e9ec48f6cB04cDBcfBFCA382"; - -// V2 -const ETH_PUT_CONTROLLER_ADDRESS_V2 = "0x1A17F62982c9ee969ba530e324c78238c6827a76"; -const ETH_CALL_CONTROLLER_ADDRESS_V2 = - "0xF52884E97D2A6a38306c2D3F31902198Bdc26C0d"; -const BTC_PUT_CONTROLLER_ADDRESS_V2 = "0x4606F6494D8E6288bCd4ffCf69255D5847259908"; -const BTC_CALL_CONTROLLER_ADDRESS_V2 = - "0x699ac37B7F25c94E8FA8F5E929274860638fFf43"; -const SOL_PUT_CONTROLLER_ADDRESS_V2 = "0xCF78C5BEdd31e6f8F27D20AA9DF9be638205D326"; -const SOL_CALL_CONTROLLER_ADDRESS_V2 = - "0xe95c6D6A0046993CceEB4DD13F03c6e7a3000a10"; -const DOGE_PUT_CONTROLLER_ADDRESS_V2 = - "0xF8D2e7072bBc42EA34A02b2797C1b465ED3b0728"; -const DOGE_CALL_CONTROLLER_ADDRESS_V2 = - "0x8EE3fD77a3DFC87cE0450df3027dE3965606891d"; - -// V3 -const BTC_PUT_CONTROLLER_ADDRESS_V3 = "0x09B0aCB5522131d9DCF3DD39A5da7F0D284360E5"; -const BTC_CALL_CONTROLLER_ADDRESS_V3 = - "0xAe9600A7143c3F27E1A456B58C4168deF036814D"; -const DOGE_PUT_CONTROLLER_ADDRESS_V3 = - "0x39b8F2740028a1B3cD0ea6094FEC30a2DD8fd073"; -const DOGE_CALL_CONTROLLER_ADDRESS_V3 = - "0x0cf5E57E7e0EdA6e227c6eedd90260F7CB47A866"; -const SOL_PUT_CONTROLLER_ADDRESS_V3 = "0x0E3B154aCC49aEE8a1E0c684c6C4130F6D9f85A8"; -const SOL_CALL_CONTROLLER_ADDRESS_V3 = - "0x2821198A42A88148cd0250433548b38e40981D82"; -const FART_PUT_CONTROLLER_ADDRESS_V3 = "0x65519E9291102C080F12FF2f6ecb71292120a8c2"; -const FART_CALL_CONTROLLER_ADDRESS_V3 = - "0x4f4314e6CFEE6dcb6292937C9f2ef0B10D7b127A"; - -const USDC_ARB_ADDRESS = ADDRESSES.arbitrum.USDC_CIRCLE; -const USDC_BSC_ADDRESS = ADDRESSES.bsc.USDC; - -module.exports = { - methodology: "TVL counts the USDC held in the controller contracts.", - start: '2024-05-14', - arbitrum: { - tvl: sumTokensExport({ - owners: [ - ETH_PUT_CONTROLLER_ADDRESS_V1, - ETH_CALL_CONTROLLER_ADDRESS_V1, - BTC_PUT_CONTROLLER_ADDRESS_V1, - BTC_CALL_CONTROLLER_ADDRESS_V1, - PEPE_PUT_CONTROLLER_ADDRESS_V1, - PEPE_CALL_CONTROLLER_ADDRESS_V1, - WIF_PUT_CONTROLLER_ADDRESS_V1, - WIF_CALL_CONTROLLER_ADDRESS_V1, - ETH_PUT_CONTROLLER_ADDRESS_V2, - ETH_CALL_CONTROLLER_ADDRESS_V2, - BTC_PUT_CONTROLLER_ADDRESS_V2, - BTC_CALL_CONTROLLER_ADDRESS_V2, - SOL_PUT_CONTROLLER_ADDRESS_V2, - SOL_CALL_CONTROLLER_ADDRESS_V2, - DOGE_PUT_CONTROLLER_ADDRESS_V2, - DOGE_CALL_CONTROLLER_ADDRESS_V2, - BTC_PUT_CONTROLLER_ADDRESS_V3, - BTC_CALL_CONTROLLER_ADDRESS_V3, - DOGE_PUT_CONTROLLER_ADDRESS_V3, - DOGE_CALL_CONTROLLER_ADDRESS_V3, - SOL_PUT_CONTROLLER_ADDRESS_V3, - SOL_CALL_CONTROLLER_ADDRESS_V3, - FART_PUT_CONTROLLER_ADDRESS_V3, - FART_CALL_CONTROLLER_ADDRESS_V3, - ], - tokens: [USDC_ARB_ADDRESS], - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: [ - ETH_PUT_CONTROLLER_ADDRESS_V1, - ETH_CALL_CONTROLLER_ADDRESS_V1, - BTC_PUT_CONTROLLER_ADDRESS_V1, - BTC_CALL_CONTROLLER_ADDRESS_V1, - DOGE_CALL_CONTROLLER_ADDRESS_V1, - DOGE_PUT_CONTROLLER_ADDRESS_V1, - FLOKI_CALL_CONTROLLER_ADDRESS_V1, - FLOKI_PUT_CONTROLLER_ADDRESS_V1, - ], - tokens: [USDC_BSC_ADDRESS], - }), - }, -}; - - - diff --git a/projects/ethwswap/index.js b/projects/ethwswap/index.js deleted file mode 100644 index e840b9fcdda..00000000000 --- a/projects/ethwswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x78376072F4945b2A5450B1A6B41a85ff20034527', - }) - } -}; \ No newline at end of file diff --git a/projects/ethx/index.js b/projects/ethx/index.js deleted file mode 100644 index 5af72e18cbd..00000000000 --- a/projects/ethx/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { - tvl: staking('0x7b0Eff0C991F0AA880481FdFa5624Cb0BC9b10e1', [ - ADDRESSES.null, - ADDRESSES.ethereum.STETH, - '0x5E8422345238F34275888049021821E8E08CAa1f', - ADDRESSES.ethereum.RETH, - ]), - } -} \ No newline at end of file diff --git a/projects/euler-dao/index.js b/projects/euler-dao/index.js deleted file mode 100644 index a53fb9152af..00000000000 --- a/projects/euler-dao/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Euler DAO.', - blockchains: { - ethereum: { - eulerVaultOwners: [ - '0xEe009FAF00CF54C1B4387829aF7A8Dc5f0c8C8C5', - '0x95058F3d4C69F14f6125ad4602E925845BD5d6A4', - ], - }, - base: { - eulerVaultOwners: [ - '0x8359062798F09E277ABc6EB7D51652289176D2e9', - '0x95058F3d4C69F14f6125ad4602E925845BD5d6A4', - ], - }, - unichain: { - eulerVaultOwners: [ - '0x3566a8b300606516De2E4576eC4132a0E13f9f66', - ], - }, - swellchain: { - eulerVaultOwners: [ - '0xC798cA555e4C7e6Fa04A23e1a727c12884F40B69', - ], - }, - linea: { - eulerVaultOwners: [ - '0x624DC899774EEf1cD9c17ED10d19c9483Fa9eb0A', - ], - }, - arbitrum: { - eulerVaultOwners: [ - '0xAeE4e2E8024C1B58f4686d1CB1646a6d5755F05C', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/euler-v2/index.js b/projects/euler-v2/index.js deleted file mode 100644 index 6cfc50e2b62..00000000000 --- a/projects/euler-v2/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -module.exports = { - methodology: `TVL is supply balance minus borrows the euler contract.`, -} - -const config = { - ethereum: { factory: '0x29a56a1b8214D9Cf7c5561811750D5cBDb45CC8e', }, - base: { factory: '0x7F321498A801A191a93C840750ed637149dDf8D0', }, - swellchain: { factory: '0x238bF86bb451ec3CA69BB855f91BDA001aB118b9', }, - sonic: { factory: '0xF075cC8660B51D0b8a4474e3f47eDAC5fA034cFB', }, - unichain: { factory: '0xbAd8b5BDFB2bcbcd78Cc9f1573D3Aad6E865e752', }, - bob: { factory: '0x046a9837A61d6b6263f54F4E27EE072bA4bdC7e4', }, - berachain: { factory: '0x5C13fb43ae9BAe8470f646ea647784534E9543AF', }, - avax: { factory: '0xaf4B4c18B17F6a2B32F6c398a3910bdCD7f26181', }, - bsc: { factory: '0x7F53E2755eB3c43824E162F7F6F087832B9C9Df6', }, - arbitrum: { factory: '0x78Df1CF5bf06a7f27f2ACc580B934238C1b80D50', }, - tac: { factory: '0x2b21621b8Ef1406699a99071ce04ec14cCd50677', }, - linea: { factory: '0x84711986Fd3BF0bFe4a8e6d7f4E22E67f7f27F04', }, - plasma: { factory: '0x42388213C6F56D7E1477632b58Ae6Bba9adeEeA3', }, - mantle: { factory: '0x47Aaf2f062aa1D55AFa602f5C9597588f71E2d76', }, -} - -Object.keys(config).forEach(chain => { - const { factory, } = config[chain] - - async function getVaults(api) { - const vaults = await api.fetchList({ lengthAbi: 'getProxyListLength', itemAbi: 'proxyList', target: factory }) - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - return { vaults, tokens } - } - - module.exports[chain] = { - tvl: async (api) => { - const { vaults, tokens } = await getVaults(api) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults], permitFailure: true }) - }, - borrowed: async (api) => { - const { vaults, tokens } = await getVaults(api) - const borrows = await api.multiCall({ abi: 'uint256:totalBorrows', calls: vaults }) - api.add(tokens, borrows) - }, - } -}) diff --git a/projects/euler/index.js b/projects/euler/index.js deleted file mode 100644 index da010da478e..00000000000 --- a/projects/euler/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - - -module.exports = { - hallmarks: [[1654387200, "Whale Deposit"], - [1667865600, "FTX collapse"], - // ['2023-03-13', 'Protocol was hacked'], -], - methodology: `TVL is supply balance minus borrows the euler contract. Borrows are pulled from the subgraph.`, - ethereum: { - tvl, - borrowed: () => 0, - }, -}; - -async function tvl(api) { - const EULER = '0x27182842e098f60e3d576794a5bffb0777e025d3' - const logs = await getLogs({ - api, - target: EULER, - topics: ['0x2ece124509c63be11a6985ae00b93c8cb8f8d8898f6e5239fc9e38bc71909667'], - fromBlock: 13687582, - eventAbi: 'event MarketActivated (address indexed underlying, address indexed eToken, address indexed dToken)', - onlyArgs: true, - }) - - return sumTokens2({ api, owner: EULER, tokens: logs.map(i => i.underlying)}) -} - -async function borrowed(api) { - const EULER = '0x27182842e098f60e3d576794a5bffb0777e025d3' - const logs = await getLogs({ - api, - target: EULER, - topics: ['0x2ece124509c63be11a6985ae00b93c8cb8f8d8898f6e5239fc9e38bc71909667'], - fromBlock: 13687582, - eventAbi: 'event MarketActivated (address indexed underlying, address indexed eToken, address indexed dToken)', - onlyArgs: true, - }) - const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: logs.map(i => i.dToken)}) - api.addTokens(logs.map(i => i.underlying.toLowerCase()), bals) - delete api.getBalances()["ethereum:0x31c8eacbffdd875c74b94b077895bd78cf1e64a3"] -} diff --git a/projects/euphoria/index.js b/projects/euphoria/index.js deleted file mode 100644 index 32bf250bf1b..00000000000 --- a/projects/euphoria/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { staking } = require('../helper/staking'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const wagmiAddresses = { - staking: '0x95066025af40F7f7832f61422802cD1e13C23753', - wagmi: '0x0dc78c79B4eB080eaD5C1d16559225a46b580694', - treasury: '0x1A9Be7D6f94D3Ba8c37568E08D8D8780AAD128E6', -}; - -const wagmiReserves = { - single: { - dai: '0xEf977d2f931C1978Db5F6747666fa1eACB0d0339', - ust: '0x224e64ec1BDce3870a6a6c777eDd450454068FEC', - usdc: '0x985458e523db3d53125813ed68c274899e9dfab4', - busd: '0xe176ebe47d621b984a73036b9da5d834411ef734', - }, - lp: { - wagmiDai: '0xb8F4c06dD0C2f9eb5e67B4FAA2d56Ff3543d6765', - wagmiUst: '0xd7E332b4C9f97eA6D05Db8C38F133307ad8847F3', - wagmiOne: '0x29c1e9fc7a4c19c8fcaf2d2b2de213ef0f323f0c', - }, -}; - -module.exports = { - harmony: { - tvl: sumTokensExport({owners: [wagmiAddresses.treasury], tokens: [ - wagmiReserves.single.dai, - wagmiReserves.lp.wagmiDai, - wagmiReserves.single.ust, - wagmiReserves.lp.wagmiUst, - wagmiReserves.single.usdc, - wagmiReserves.single.busd, - wagmiReserves.lp.wagmiOne, - ], resolveLP: true,}), - staking: staking(wagmiAddresses.staking, wagmiAddresses.wagmi), - }, - methodology: - 'Counts tokens in the treasury for tvl and staked WAGMI for staking', -}; diff --git a/projects/evaa/evaaPoolAssets.js b/projects/evaa/evaaPoolAssets.js deleted file mode 100644 index d7ec7b1487c..00000000000 --- a/projects/evaa/evaaPoolAssets.js +++ /dev/null @@ -1,114 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const evaaPoolAssets = { - 'main': { // EVAA main pool - poolAddress: "0:bcad466a47fa565750729565253cd073ca24d856804499090c2100d95c809f9e", // EVAA main pool address - assets: [ - { - address: ADDRESSES.ton.TON, - assetId: "11876925370864614464799087627157805050745321306404563164673853337929163193738", // symbol -> sha256 hex -> bigint - }, // TON - { - address: ADDRESSES.ton.USDT, - assetId: '91621667903763073563570557639433445791506232618002614896981036659302854767224', - }, // USDT - { - address: ADDRESSES.ton.USDe, - assetId: '98281638255104512379049519410242269170317135545117667048087651483812279009354', - }, // USDe - { - address: ADDRESSES.ton.tsUSDe, - assetId: '33604868692898791249369426189145713090064546741393719833658701125733712580919', - }, // tsUSDe - { - address: ADDRESSES.ton.tsTON, - assetId: '23103091784861387372100043848078515239542568751939923972799733728526040769767', - }, // tsTON - { - address: ADDRESSES.ton.stTON, - assetId: '33171510858320790266247832496974106978700190498800858393089426423762035476944', - }, // stTON - { - address: ADDRESSES.ton.jUSDT, - assetId: '81203563022592193867903899252711112850180680126331353892172221352147647262515', - }, // jUSDT - { - address: ADDRESSES.ton.jUSDC, - assetId: '59636546167967198470134647008558085436004969028957957410318094280110082891718', - }, // jUSDC - ] - }, - 'lp': { // EVAA LP pool - poolAddress: "0:489595f65115a45c24a0dd0176309654fb00b95e40682f0c3e85d5a4d86dfb25", // EVAA LP pool address - assets: [ - { - address: ADDRESSES.ton.TON, - assetId: "11876925370864614464799087627157805050745321306404563164673853337929163193738", // symbol -> sha256 hex -> bigint - }, // TON - { - address: ADDRESSES.ton.USDT, - assetId: '91621667903763073563570557639433445791506232618002614896981036659302854767224', - }, // USDT - { - address: ADDRESSES.ton.TONUSDT_DEDUST, - assetId: '101385043286520300676049067359330438448373069137841871026562097979079540439904', - }, // TONUSDT_DEDUST - { - address: ADDRESSES.ton.TON_STORM, - assetId: '70772196878564564641575179045584595299167675028240038598329982312182743941170', - }, // TON_STORM - { - address: ADDRESSES.ton.USDT_STORM, - assetId: '48839312865341050576546877995196761556581975995859696798601599030872576409489', - }, // USDT_STORM - ] - }, - 'alts': { // EVAA alts pool - poolAddress: "0:0d511552ddf8413bd6e2be2837e22c89422f7b16131ba62be8d5a504012d8661", // EVAA alts pool address - assets: [ - { - address: ADDRESSES.ton.TON, - assetId: "11876925370864614464799087627157805050745321306404563164673853337929163193738", // symbol -> sha256 hex -> bigint - }, // TON - { - address: ADDRESSES.ton.USDT, - assetId: '91621667903763073563570557639433445791506232618002614896981036659302854767224', - }, // USDT - { - address: ADDRESSES.ton.NOT, - assetId: '63272935429475047547160566950018214503995518672462153218942708627846845749085', - }, // NOT - { - address: ADDRESSES.ton.DOGS, - assetId: '50918788872632134518291723145978712110022476979988675880017580610805163693009', - }, // DOGS - { - address: ADDRESSES.ton.CATI, - assetId: '101563884026323503647891287974015286987607783840172791059852695820980647056177', - } // CATI - ] - }, - 'stable': { // EVAA stable pool - poolAddress: '0:9d21d5dfd6403fd8777d99b1b34850c43c0f8fc7e7adf2a4d61c45e0446a342b', // EVAA stable pool address - assets: [ - { - address: ADDRESSES.ton.USDT, - assetId: '91621667903763073563570557639433445791506232618002614896981036659302854767224', - }, // USDT - { - address: ADDRESSES.ton.USDe, - assetId: '98281638255104512379049519410242269170317135545117667048087651483812279009354', - }, // USDe - { - address: ADDRESSES.ton.tsUSDe, - assetId: '33604868692898791249369426189145713090064546741393719833658701125733712580919', - }, // tsUSDe - { - address: ADDRESSES.ton.PT_tsUSDe_01Sep2025, - assetId: '6111297782570570129290420344884587495512746870153062431820826875465825931443', - }, // PT_tsUSDe_01Sep2025 - ] - } -} - -module.exports = evaaPoolAssets \ No newline at end of file diff --git a/projects/evaa/index.js b/projects/evaa/index.js deleted file mode 100644 index ade2337f8aa..00000000000 --- a/projects/evaa/index.js +++ /dev/null @@ -1,30 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') -const { call, sumTokens } = require("../helper/chain/ton"); -const evaaPoolAssets = require("./evaaPoolAssets"); - -const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)) - -async function borrowed(api) { - for (const poolAssets of Object.values(evaaPoolAssets)) { - for (const { assetId, address } of poolAssets.assets) { - const [_totalSupply, totalBorrow] = await call({ - target: poolAssets.poolAddress, - abi: 'getAssetTotals', - params: [["int", assetId]] - }); - api.add(address, totalBorrow) - await sleep(3000) - } - } -} - -async function tvl(api) { - const owners = Object.values(evaaPoolAssets).map(pool => pool.poolAddress); - return sumTokens({ owners, api, tokens: [ADDRESSES.null], useTonApiForPrices: true }) -} - -module.exports = { - methodology: 'Counts the supply of EVAA\'s asset pools as TVL.', - ton: { tvl, borrowed } -} diff --git a/projects/evedex/index.js b/projects/evedex/index.js deleted file mode 100644 index 5940c99ac60..00000000000 --- a/projects/evedex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const tokens = ['0xC9b68d8ab057b52785cF0e8e983A2eaFE6858979']; -const owner = '0x1DC14e4261eCd7747Cbf6D2C8538a73371405D76'; - -module.exports = { - eventum: { - tvl: (api) => sumTokens2({ api, tokens, owner }) - } -} \ No newline at end of file diff --git a/projects/eventum/index.js b/projects/eventum/index.js deleted file mode 100644 index a8923991302..00000000000 --- a/projects/eventum/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -module.exports = { - arbitrum: { - tvl: (api) => sumTokens2({ - api, - owners: [ - '0x8D21dfEA9231Db85dCe72b8d9F18e917d833d4B1', - '0xAD3026961087eccEC0508D411bb9fb405E086B38' - ], - fetchCoValentTokens: true - }) - } -} \ No newline at end of file diff --git a/projects/everdex/index.js b/projects/everdex/index.js deleted file mode 100644 index 07bbb757ff6..00000000000 --- a/projects/everdex/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { getUniTVL } = require("../helper/unknownTokens"); -const { sumTokens2, } = require('../helper/unwrapLPs'); -const sdk = require('@defillama/sdk'); - -const chain = 'bfc' - -// 3-pools -const tokensAndOwners = [ - // stablePoolDaiUsdcUsdt - [ADDRESSES.bfc.UnifiedDAI, '0xa455434802d8B530C77d2B7547eF93C798896581'], - [ADDRESSES.bfc.UnifiedUSDC, '0xa455434802d8B530C77d2B7547eF93C798896581'], - [ADDRESSES.bfc.UnifiedUSDT, '0xa455434802d8B530C77d2B7547eF93C798896581'], - - // BitcoinUSD - USDC Pool - [ADDRESSES.bfc.BitcoinUSD, '0x840Cf4522ED96CBBEB0924672Ea170456eea3a4c'], - [ADDRESSES.bfc.UnifiedUSDC, '0x840Cf4522ED96CBBEB0924672Ea170456eea3a4c'] -] - -async function tvl() { - return sumTokens2({ tokensAndOwners, chain }); -} - -const uniTVL = getUniTVL({ factory: '0x19f21b0AB98EC10d734E314356Ad562ae349177d', useDefaultCoreAssets: true, chain}); - - -module.exports = { - misrepresentedTokens: true, - start: '2023-01-28', - bfc: { - tvl: sdk.util.sumChainTvls([tvl, uniTVL]) - }, -}; \ No newline at end of file diff --git a/projects/everestdao/index.js b/projects/everestdao/index.js deleted file mode 100644 index a127db13e1a..00000000000 --- a/projects/everestdao/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - deadFrom: 1648765747, - avax: { - tvl: async () => ({}), - }, - methodology: - "Counts liquidity on the Farms through their Contracts", -}; diff --git a/projects/everipedia/index.js b/projects/everipedia/index.js deleted file mode 100644 index 39797097e98..00000000000 --- a/projects/everipedia/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const stakingContracthiIQ = "0x1bF5457eCAa14Ff63CC89EFd560E251e814E16Ba"; -const IQ = "0x579cea1889991f68acc35ff5c3dd0621ff29b0c9"; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: (async) => ({}), - staking: staking(stakingContracthiIQ, IQ), - }, - methodology: "Counts liquidty on the staking only", -}; diff --git a/projects/everlend/index.js b/projects/everlend/index.js deleted file mode 100644 index c648917e424..00000000000 --- a/projects/everlend/index.js +++ /dev/null @@ -1,11 +0,0 @@ -// token vault: GV2MntTz56GmbzvKLYfM3T54KjSgW1fc71kFAeFfrYxC - -module.exports = { - timetravel: false, - solana: { tvl: () => 0, }, - hallmarks: [ - ['2023-02-01', 'Product is winding down'], - ], -} - -module.exports.deadFrom = '2023-02-01' \ No newline at end of file diff --git a/projects/everrise/abi.json b/projects/everrise/abi.json deleted file mode 100644 index 0cc12b20bd1..00000000000 --- a/projects/everrise/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "everRiseAddress": "address:everRiseAddress", - "getStats": "function getStats() view returns (tuple(uint256 reservesBalance, uint256 liquidityToken, uint256 liquidityCoin, uint256 staked, uint256 aveMultiplier, uint256 rewards, uint256 volumeTransfers, uint256 volumeBuy, uint256 volumeSell, uint256 volumeTrade, uint256 bridgeVault, uint256 tokenPriceCoin, uint256 coinPriceStable, uint256 tokenPriceStable, uint256 marketCap, uint128 blockNumber, uint32 holders, uint8 tokenDecimals, uint8 coinDecimals, uint8 stableDecimals, uint8 multiplierDecimals) stats)", - "wrappedCoinAddress": "address:wrappedCoinAddress" -} \ No newline at end of file diff --git a/projects/everrise/index.js b/projects/everrise/index.js deleted file mode 100644 index 53e5adacae4..00000000000 --- a/projects/everrise/index.js +++ /dev/null @@ -1,180 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const http = require('../helper/http'); -const { getConfig } = require('../helper/cache') -const { unwrapUniswapLPs, nullAddress, sumTokens2 } = require("../helper/unwrapLPs"); -const getPairFactory = 'function getPair(address, address) view returns (address)' - -const RESERVES = [ - // '0x78b939518f51b6da10afb3c3238Dd04014e00057', - '0x3776B8C349BC9Af202E4D98Af163D59cA56d2fC5']; -const TOKEN = '0xC17c30e98541188614dF99239cABD40280810cA3'; -const STAKE_HOLDING_API = 'https://app.everrise.com/bridge/api/v1/stats' -const EVEROWN_DAO_API = 'https://app.everrise.com/prod/api/v1/contracts/active' -const chainConfig = { - ethereum: { - chainId: '1', - WCoin: ADDRESSES.ethereum.WETH, - lpFactory: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f', - LPs: [ - { - owner: "0x78ab99dae7302ea91e36962f4b23418a89d3a69d", // EverOwn DAO Locked LP - pool: "0x7250f7e97a4338d2bd72abc4b010d7a8477dc1f9", - }, // RISE-ETH - ], - reserveTokens: [ - ADDRESSES.ethereum.USDT, // USDT - ADDRESSES.ethereum.USDC, // USDC - // TOKEN, - ], - }, - bsc: { - chainId: '56', - WCoin: ADDRESSES.bsc.WBNB, - lpFactory: '0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73', - LPs: [ - { - owner: "0x89dd305ffbd8e684c77758288c48cdf4f4abe0f4", // EverOwn DAO Locked LP - pool: "0x10dA269F5808f934326D3Dd1E04B7E7Ca78bb804", - }, // RISE-BNB - ], - reserveTokens: [ - ADDRESSES.bsc.USDT, // USDT - ADDRESSES.bsc.USDC, // USDC - ADDRESSES.bsc.BUSD, // BUSD - // TOKEN, - ], - }, - polygon: { - chainId: '137', - WCoin: ADDRESSES.polygon.WMATIC_2, - lpFactory: '0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32', - LPs: [ - { - owner: "0x7dd45e9be23219fd8ccfc584b652775aba62fdef", // EverOwn DAO Locked LP - pool: "0xf3c62dbbfec92a2e73d676d62ebec06a6bc224e2", - }, // RISE-MATIC - ], - reserveTokens: [ - ADDRESSES.polygon.USDT, // USDT - ADDRESSES.polygon.USDC, // USDC - // TOKEN, - ], - }, - avax: { - chainId: '43114', - WCoin: ADDRESSES.avax.WAVAX, - lpFactory: '0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10', - LPs: [ - { - owner: "0x22a8e3f957fcdd4883cfcbc67c5e14cf2bb6477d", // EverOwn DAO Locked LP - pool: "0x5472e98d22b0fb7ec5c3e360788b8700419370b5", - }, // RISE-AVAX - ], - reserveTokens: [ - ADDRESSES.avax.USDt, // USDT - ADDRESSES.avax.USDC, // USDC - // TOKEN, - ], - }, - fantom: { - chainId: '250', - WCoin: ADDRESSES.fantom.WFTM, - lpFactory: '0x152eE697f2E276fA89E96742e9bB9aB1F2E61bE3', - LPs: [ - { - owner: "0x59503632ab8a093c266509c797c957e063f4d32b", // EverOwn DAO Locked LP - pool: "0xde62a6cdd8d5a3988495317cffac9f3fed299383", - }, // RISE-FTM - ], - reserveTokens: [ - ADDRESSES.fantom.USDC, // USDC - // TOKEN, - ], - }, -} - -const chainExports = {} -let daoLockerClients = null - -Object.keys(chainConfig).forEach(chain => { - const chainData = chainConfig[chain] - - async function tvl(api) { - const tokensAndOwners = [ - [nullAddress, TOKEN], - ...RESERVES.map(i => [nullAddress, i]) - ] - chainConfig[chain].reserveTokens.forEach(t => RESERVES.forEach(o => tokensAndOwners.push([t, o]))) - - await sumTokens2({ api, tokensAndOwners }) - await everOwnClients(api) - - return api.getBalances() - } - - async function everOwnClients(api) { - daoLockerClients = daoLockerClients || await getConfig('everrise/tvl', EVEROWN_DAO_API) - - let clients = daoLockerClients[chainData.chainId] || [] - // Don't include self as that's pool2 - clients = clients.filter(t => t.contractAddress.toLowerCase() !== TOKEN.toLowerCase()) - - if (clients.length > 0) { - const clientMapping = {} - - clients.forEach(client => { - clientMapping[client.contractAddress.toLowerCase()] = client.everOwnLocker - }) - const calls = clients.map((client) => ({ - target: chainData.lpFactory, - params: [client.contractAddress.toLowerCase(), chainData.WCoin], - })) - - const lPTokens = (await api.multiCall({ abi: getPairFactory, calls, })) - const tokensAndOwners = lPTokens.map((v, i) => [v, clients[i].everOwnLocker]) - return sumTokens2({ api, tokensAndOwners, resolveLP: true, }) - } - } - - async function pool2(ts, _block, chainBlocks) { - let balances = {} - const block = chainBlocks[chain] - const { LPs } = chainConfig[chain] - - let lpPositions = []; - let lpBalances = ( - await sdk.api.abi.multiCall({ - calls: LPs.map((p) => ({ - target: p.pool, - params: p.owner, - })), - abi: "erc20:balanceOf", - block, chain, - }) - ).output; - lpBalances.forEach((i) => { - lpPositions.push({ - balance: i.output, - token: i.input.target, - }); - }); - await unwrapUniswapLPs(balances, lpPositions, block, chain); - return balances - } - - async function staking() { - } - - chainExports[chain] = { - tvl, - pool2, - staking, - } -}) - -module.exports = { - ...chainExports, - timetravel: false, - methodology: "TVL comes from the buyback reserves, other token migration vaults and cross-chain bridge vaults", -}; \ No newline at end of file diff --git a/projects/eversol.js b/projects/eversol.js deleted file mode 100644 index 92d12bc9159..00000000000 --- a/projects/eversol.js +++ /dev/null @@ -1,20 +0,0 @@ -const { PublicKey } = require('@solana/web3.js'); -const {getConnection, decodeAccount, } = require('./helper/solana') - -const MAINNET_STAKEPOOL_PROGRAM_ID = 'GUAMR8ciiaijraJeLDEDrFVaueLm9YzWWY9R7CBPL9rA'; - -async function tvl(){ - const connection = getConnection() - const poolInfoAccount = await connection.getAccountInfo(new PublicKey(MAINNET_STAKEPOOL_PROGRAM_ID)) - const decoded = decodeAccount('ESOLStakePool', poolInfoAccount) - return { - 'solana': decoded.totalLamports.toNumber()/1e9 - } -} - -module.exports={ - timetravel: false, - solana:{ - tvl - }, -} diff --git a/projects/everyfinance/index.js b/projects/everyfinance/index.js deleted file mode 100644 index d782e9014c6..00000000000 --- a/projects/everyfinance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - ethereum: { managers: ['0xbebbaE6f1062E4Cd5652B9d8e1B8aECBEE993A9E', '0x19d6D19a034BB886507DC08dF99716f418bD61a3', '0xbE721812442C648c191Bc267659374036fd68918'] }, - bsc: { managers: ['0xbebbaE6f1062E4Cd5652B9d8e1B8aECBEE993A9E', '0x19d6D19a034BB886507DC08dF99716f418bD61a3', '0x8849FCE3fB3d82BBF14e1FC9D7E82EAfEB4b2904'] }, - polygon: { managers: ['0x8849FCE3fB3d82BBF14e1FC9D7E82EAfEB4b2904', '0xbE49a740c48F9D4347De8994c488333d492a4e19', '0x9C1A18A734dFAe6e6f89942f358e7270BecdB002'] }, -} - -Object.keys(config).forEach(chain => { - const { managers, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const safeHouses = await api.multiCall({ abi: 'address:safeHouse', calls: managers }) - const assetBooks = await api.multiCall({ abi: 'address:assetBook', calls: safeHouses }) - const tokens = await api.fetchList({ lengthAbi: 'getAssetsListSize', itemAbi: 'assetsList', calls: assetBooks, groupedByInput: true, }) - const ownerTokens = tokens.map((t, i) => [t, safeHouses[i]]) - return sumTokens2({ api, ownerTokens, permitFailure: true }) - } - } -}) \ No newline at end of file diff --git a/projects/evmoswap/index.js b/projects/evmoswap/index.js deleted file mode 100644 index 6b6d3fb9d8f..00000000000 --- a/projects/evmoswap/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { getUniTVL } = require('../helper/unknownTokens') - -const madDAI = ADDRESSES.evmos.DAI -const madUSDC = ADDRESSES.evmos.USDC -const madUSDT = ADDRESSES.evmos.USDT - -//////////////////////////// UNI AMM //////////////////////////////////// -const evmoswapTvl = getUniTVL({ factory: '0xF24E36e53628C3086493B9EfA785ab9DD85232EB', useDefaultCoreAssets: true }) - -//////////////////////////// STABLE AMM //////////////////////////////////// -const poolAddressesEvmos = [ - "0xf0a5b0fa1531C94754241911A2E6D94506336321", // 3pool -]; - -async function stableAMMTvl(api) { - return api.sumTokens({owners: poolAddressesEvmos, tokens: [madDAI, madUSDC, madUSDT]}) -} - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xF24E36e53628C3086493B9EfA785ab9DD85232EB) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - evmos: { - tvl: sdk.util.sumChainTvls([evmoswapTvl, stableAMMTvl]), - }, -} diff --git a/projects/evolutionland/index.js b/projects/evolutionland/index.js deleted file mode 100644 index 1237f009522..00000000000 --- a/projects/evolutionland/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const ring = { - "ethereum": "0x9469D013805bFfB7D3DEBe5E7839237e535ec483", - "heco": "0x15e65456310ecb216B51EfBd8a1dBf753353DcF9", - "polygon": "0x9C1C23E60B72Bc88a043bf64aFdb16A02540Ae8f", - "crab": "0x7399Ea6C9d35124d893B8d9808930e9d3F211501", -} -const weth = { - "ethereum": ADDRESSES.ethereum.WETH, - "heco": ADDRESSES.heco.WHT, - "polygon": ADDRESSES.polygon.WMATIC_2, - "crab": ADDRESSES.crab.WCRAB, -} - -const lpGOLD = { - "ethereum": "0x9504b4A2d5f2E88fD9a5D30AEe307573EA03Bea0", - "heco": "0x8C318CD47D8DD944d969307B1249062197267564", - "polygon": "0x2D489AeA7b643B49108dffd948891A4D88040ef1", - "crab": "0x8e97f45bD127E7af3034d82a34d665746d348841", -} -const lpWOOD = { - "ethereum": "0xf79e6890D3B78b5E04Ad405376C1064e3DAb0d85", - "heco": "0x2Fbe5228a08260DB7bFed841cd4b340C88E13b9A", - "polygon": "0x9686f71715134ccB38367849c049A58f6552C668", - "crab": "0x3710F045307d7e0906F1Fbd0B0dF12c0Bc787382", -} -const lpHOO = { - "ethereum": "0xdf2cdD051EF8835b25231f61dCeb5DF5F3A27274", - "heco": "0xc8f8ba346781447a3e060eE913f56C2323fa83E5", - "polygon": "0x98b0e9849D610394a29a0FC33476cA497315f1c3", - "crab": "0xdb279D65225162280fACae2F3Ca8A3D2F63ea9BF", -} -const lpFIRE = { - "ethereum": "0xd446E044d62392afED6bA4a40a0Ac8bdB0d91F07", - "heco": "0xDD6F102f7044f5a8635AA9DaAC1483C5ce5265A3", - "polygon": "0x90e3653a7aDb60E9184622B640dBf0A6EDA06858", - "crab": "0x15f2fBD98a0657e2afcAB08922632e58B1cC9FdD", -} -const lpSIOO = { - "ethereum": "0x31BF5eaA7C761871c83d9748b00a2277657cD6f5", - "heco": "0x31BF5eaA7C761871c83d9748b00a2277657cD6f5", - "polygon": "0xA1b2216DB6Dbb4fCead88180b753dA0EcC42b626", - "crab": "0x1E4b46582bbA7E5Ddb107d3a640e441774980525", -} -const lpETH = { - "ethereum": "0xa32523371390b0cc4e11f6bb236ecf4c2cdea101", - "heco": "0x55C643AcA8b4cBaB1dBA05393fc0687bFbb9A98d", - "polygon": "0x610A9007FD86C960ccB717783f88347A2c154D4E", - "crab": "0xF157c9393255Db1728bC6483c3545Ca8a1655a0F", -} - -async function tvl(api) { - const owners = [lpETH].map(i => i[api.chain]) - const balances = await sumTokens2({ api, owners, tokens: [weth[api.chain]] }) - const owners1 = [lpGOLD, lpWOOD, lpHOO, lpFIRE, lpSIOO, lpETH].map(i => i[api.chain]) - return sumTokens2({ balances, api, owners: owners1, tokens: [ring[api.chain]], transformAddress: i => ring.ethereum }) -} - -module.exports = {}; - -['ethereum', 'polygon', 'heco', 'crab'].forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/evolve/abi.js b/projects/evolve/abi.js deleted file mode 100644 index b4ae3ad259f..00000000000 --- a/projects/evolve/abi.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports ={ - allLendingPools: "function allLendingPools(uint256) view returns (address)", - allLendingPoolsLength: "uint256:allLendingPoolsLength", - getLendingPool: "function getLendingPool(address) view returns (bool initialized, uint24 lendingPoolId, address collateral, address borrowable0, address borrowable1)", - underlying: "address:underlying", - totalBorrows: "function totalBorrows() view returns (uint112)", -} \ No newline at end of file diff --git a/projects/evolve/index.js b/projects/evolve/index.js deleted file mode 100644 index d1f936ffa90..00000000000 --- a/projects/evolve/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { tarotHelper } = require("../tarot/tarotHelper"); - -const config = { - cronos: { - factories: ["0xb8b48e97cd037987de138b978df265d873333a3b"], - }, -}; - -module.exports = { - deadFrom: '2023-02-27', -} - -tarotHelper(module.exports, config, { tarotSymbol: 'vEvolve'}) - -module.exports.cronos.borrowed = () => ({}) // bad debt diff --git a/projects/evoq/index.js b/projects/evoq/index.js deleted file mode 100644 index 87cfd3e2a7c..00000000000 --- a/projects/evoq/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const evoq = '0xF9C74A65B04C73B911879DB0131616C556A626bE' -const lens = '0x5576207849D570bfE1acB6004595561851813198' - -const tokens = [ - "0x882C173bC7Ff3b7786CA16dfeD3DFFfb9Ee7847B", // vBTC - "0xfD5840Cd36d94D7229439859C0112a4185BC0255", // vUSDT - "0xA07c5b74C9B40447a954e1466938b865b6BBea36", // vBNB - "0xecA88125a5ADbe82614ffC12D0DB554E2e2867C8", // vUSDC - "0xC4eF4229FEc74Ccfe17B2bdeF7715fAC740BA0ba", // vFDUSD - "0xf508fCD89b8bd15579dc79A6827cB4686A3592c8", // vETH - "0x0C1DA220D301155b87318B90692Da8dc43B67340", // vUSD1 -] - -async function borrowed(api) { - const abi = "function getTotalMarketBorrow(address _poolToken) view returns (uint256 p2pBorrowAmount, uint256 poolBorrowAmount)" - const borrowDatas = await api.multiCall({ abi, calls: tokens, target: lens }) - await Promise.all(borrowDatas.map(async (v, i) => { - let underlyingToken; - if(tokens[i] === "0xA07c5b74C9B40447a954e1466938b865b6BBea36") { - underlyingToken = ADDRESSES.null - } else { - underlyingToken = await api.call({ abi: 'address:underlying', target: tokens[i] }) - } - await api.add(underlyingToken, Number(v[0]) + Number(v[1])) - })) -} - -module.exports['bsc'] = { - tvl: async (api) => { - return sumTokens2({ api, tokensAndOwners: tokens.map((token) => ([token, evoq])) }) - }, - borrowed: () => ({}), // dont think people will repay -} diff --git a/projects/exactly/index.js b/projects/exactly/index.js deleted file mode 100644 index 1d2fc117018..00000000000 --- a/projects/exactly/index.js +++ /dev/null @@ -1,95 +0,0 @@ -const sdk = require("@defillama/sdk"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - methodology: methodologies.lendingMarket, -}; - -/** @type {Record} */ -const config = { - ethereum: { - auditor: "0x310A2694521f75C7B2b64b5937C16CE65C3EFE01", - start: 15_868_410, - }, - optimism: { - auditor: "0xaEb62e6F27BC103702E7BC879AE98bceA56f027E", - start: 78_310_663, - } -}; - -Object.entries(config).forEach(([chain, { auditor, start }]) => { - module.exports[chain] = { - start, - /** @type {(timestamp: number, block: number, chainBlocks: Record, { api: ChainApi }) => Promise} */ - tvl: async (api) => { - /** @type {Balances} */ - const balances = {}; - const data = await markets(api, auditor); - data.forEach(([asset, totalAssets, totalFloatingBorrowAssets, fixedPools]) => { - sdk.util.sumSingleBalance(balances, asset, totalAssets, chain); - sdk.util.sumSingleBalance(balances, asset, -1 * +totalFloatingBorrowAssets, chain); - fixedPools.forEach(({ borrowed, supplied }) => { - sdk.util.sumSingleBalance(balances, asset, supplied, chain); - sdk.util.sumSingleBalance(balances, asset, -1 * +borrowed, chain); - }); - }); - return balances; - }, - /** @type {(timestamp: number, block: number, chainBlocks: Record, { api: ChainApi }) => Promise} */ - borrowed: async (api) => { - /** @type {Balances} */ - const balances = {}; - const data = await markets(api, auditor); - data.forEach(([asset, , totalFloatingBorrowAssets, fixedPools]) => { - sdk.util.sumSingleBalance(balances, asset, totalFloatingBorrowAssets, chain); - fixedPools.forEach(({ borrowed }) => { - sdk.util.sumSingleBalance(balances, asset, borrowed, chain); - }); - }); - return balances; - }, - }; -}); - -const INTERVAL = 86_400 * 7 * 4; - -/** @type {(api: ChainApi, auditor: string) => Promise<[string, string, string, FixedPool[]][]>} */ -async function markets(api, auditor) { - /** @type {string[]} */ - const markets = await api.call({ abi: abis.allMarkets, target: auditor }); - const timestamp = api.timestamp ?? 0; - - /** @type {string[][]} */ - const [asset, totalAssets, totalFloatingBorrowAssets, maxFuturePools] = await Promise.all( - ["asset", "totalAssets", "totalFloatingBorrowAssets", "maxFuturePools"].map((key) => - api.multiCall({ abi: abis[key], calls: markets }) - ) - ); - const maxPools = maxFuturePools.reduce((max, n) => Math.max(max, +n), 0); - const minMaturity = timestamp - (timestamp % INTERVAL) - INTERVAL * (maxPools - 1); - const maturities = [...Array(2 * maxPools)].map((_, i) => minMaturity + INTERVAL * i); - /** @type {FixedPool[]} */ - const fixedPools = await api.multiCall({ - abi: abis.fixedPools, - calls: markets.flatMap((target) => maturities.map((params) => ({ target, params }))), - }); - return markets.map((_, i) => [ - asset[i], - totalAssets[i], - totalFloatingBorrowAssets[i], - fixedPools.slice(i * maturities.length, (i + 1) * maturities.length), - ]); -} - -const abis = { - allMarkets: "function allMarkets() view returns (address[])", - asset: "function asset() view returns (address)", - fixedPools: "function fixedPools(uint256) view returns ((uint256 borrowed, uint256 supplied, uint256, uint256))", - maxFuturePools: "function maxFuturePools() view returns (uint8)", - totalAssets: "function totalAssets() view returns (uint256)", - totalFloatingBorrowAssets: "function totalFloatingBorrowAssets() view returns (uint256)", -}; - -/** @typedef {import("@defillama/sdk").ChainApi} ChainApi */ -/** @typedef {import("@defillama/sdk/build/types").Balances} Balances */ -/** @typedef {{ borrowed: string, supplied: string }} FixedPool */ diff --git a/projects/excalibur/index.js b/projects/excalibur/index.js deleted file mode 100644 index c45428501c5..00000000000 --- a/projects/excalibur/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0x08b3CCa975a82cFA6f912E0eeDdE53A629770D3f' -}) \ No newline at end of file diff --git a/projects/excellar/index.js b/projects/excellar/index.js deleted file mode 100644 index 25b66a39726..00000000000 --- a/projects/excellar/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const axios = require('axios'); - -const tvl = async (api) => { - const accountId = 'GDESDYZS5TQE6ADZDIC4WLAMLCJLZEEUKSO2UXTFTAQSHLFCQICIIYDA'; - const usdcIssuer = 'GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN'; - const apiUrl = `https://horizon.stellar.org/accounts/${accountId}`; - - const { data } = await axios.get(apiUrl); - - const usdcBalanceObj = data.balances.find(b => - b.asset_code === 'USDC' && - b.asset_issuer === usdcIssuer - ); - - const usdcBalance = usdcBalanceObj ? parseFloat(usdcBalanceObj.balance) : 0; - - api.addUSDValue(usdcBalance) -} - - -module.exports = { - stellar: { tvl } -} diff --git a/projects/exinpool/index.js b/projects/exinpool/index.js deleted file mode 100644 index 093a9f73cf7..00000000000 --- a/projects/exinpool/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { get } = require('../helper/http') - -const API = 'https://mixin.exinpool.com/api/v1/node/status' - -const tvl = async (api) => { - const { data } = await get(API) - const tvl = data.totalValueUsd; - api.addUSDValue(Math.round(tvl)) -} - -module.exports = { - misrepresentedTokens: true, - mixin: { tvl } -} \ No newline at end of file diff --git a/projects/exinswap/index.js b/projects/exinswap/index.js deleted file mode 100644 index be7ad40979b..00000000000 --- a/projects/exinswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require('../helper/http') - -const API = 'https://app.exinswap.com/api/v1/statistic/total' - -const tvl = async (api) => { - const { data } = await get(API) - const tvl = data.totalUsdBalance; - api.addUSDValue(Math.round(tvl)) -} - -module.exports = { - deadFrom: '2023-11-01', - misrepresentedTokens: true, - mixin: { tvl } -} \ No newline at end of file diff --git a/projects/exit-tech/index.js b/projects/exit-tech/index.js deleted file mode 100644 index e280b11837b..00000000000 --- a/projects/exit-tech/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const logs = await getLogs2({ api, factory:'0xA1506e8f078225C4F9a20Cf1f9e3660D9dA691CA', eventAbi: 'event ExitVaultDeployed (uint256 vaultId, address indexed vault, address indexed owner, uint256 donationGmx, uint256 donationGlp, uint256 nonce, string indexed refcode)', fromBlock: 306470740, }) - const vaults = logs.map(log => log.vault) - return api.sumTokens({ owners: vaults, tokens: ['0xf42Ae1D54fd613C9bb14810b0588FaAa09a426cA',ADDRESSES.arbitrum.fsGLP, ADDRESSES.arbitrum.GMX, '0x4277f8f2c384827b5273592ff7cebd9f2c1ac258'] }) -} - - -module.exports = { - arbitrum: { tvl } -} \ No newline at end of file diff --git a/projects/exit10-fi/index.js b/projects/exit10-fi/index.js deleted file mode 100644 index c423d159d3a..00000000000 --- a/projects/exit10-fi/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - uniV3Holders: ['0xBFD697f71159Ed85eb1A7fE3520Ad8e5d61017fB'], - }, - arbitrum: { - uniV3Holders: ['0x6aC7197B8C41F8C72a82c49fb219be8ec421dbb0'], - }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { uniV3Holders } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owners: uniV3Holders, resolveUniV3: true, }) - } -}) \ No newline at end of file diff --git a/projects/exmo/index.js b/projects/exmo/index.js deleted file mode 100644 index e8a191d7bcc..00000000000 --- a/projects/exmo/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { owners: bitcoinAddressBook.exmo }, - ethereum: { - owners: [ - '0x112A52893b96E9679E854934A62841051a679dAA', - '0x6297C8ec7662c10CdACFb3e9C04B571528d277E2', - ], - }, - ethereumclassic: { - owners: [ - '0xD936704458E4f8525B6bE7C0ebC5fE268BaB4977', - ] - }, - tron: { - owners: [ - 'TMjqArFD86YDNShnMXSzYqDXKZAphGSJN7', - ] - }, - ton: { - owners: [ - 'UQAAdyo7XAGGaNbg7BbHq3XhPXhuFJuX64KStIgOyiFWZiuP', - ] - }, -} - -module.exports = cexExports(config) diff --git a/projects/exodia/index.js b/projects/exodia/index.js deleted file mode 100644 index 094c3c2ec77..00000000000 --- a/projects/exodia/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { staking } = require('../helper/staking'); - -const ExodStaking = "0x8b8d40f98a2f14e2dd972b3f2e2a2cc227d1e3be" -const exod = "0x3b57f3feaaf1e8254ec680275ee6e7727c7413c7" -const gohm = "0x91fa20244fb509e8289ca630e5db3e9166233fdc" -const mai = "0xfb98b335551a418cd0737375a2ea0ded62ea213b" -const treasury = "0x6a654d988eebcd9ffb48ecd5af9bd79e090d8347" -const dai = ADDRESSES.fantom.DAI -const wftm = ADDRESSES.fantom.WFTM - - -module.exports = { - fantom: { - tvl: staking(treasury, [mai, dai, wftm, gohm]), - staking: staking(ExodStaking, exod) - }, - methodology: - "Counts tokens on the treasury for TVL and staked EXOD for staking", -}; \ No newline at end of file diff --git a/projects/exponent/idl.json b/projects/exponent/idl.json deleted file mode 100644 index ec7fa0fae3a..00000000000 --- a/projects/exponent/idl.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "address": "ExponentnaRg3CQbW6dqQNZKXp7gtZ9DGMp1cwC4HAS7", - "metadata": {"name": "exponent_core", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [{"name": "Vault", "discriminator": [211, 8, 232, 43, 2, 152, 117, 119]}], - "events": [], - "errors": [], - "types": [ - { - "name": "Vault", - "type": { - "kind": "struct", - "fields": [ - {"name": "sy_program", "docs": ["Link to SY program"], "type": "pubkey"}, - {"name": "mint_sy", "docs": ["Mint for SY token"], "type": "pubkey"}, - {"name": "mint_yt", "docs": ["Mint for the vault-specific YT token"], "type": "pubkey"}, - {"name": "mint_pt", "docs": ["Mint for the vault-specific PT token"], "type": "pubkey"}, - {"name": "escrow_yt", "docs": ["Escrow account for holding deposited YT"], "type": "pubkey"}, - { - "name": "escrow_sy", - "docs": ["Escrow account that holds temporary SY tokens", "As an interchange between users and the SY program"], - "type": "pubkey" - }, - { - "name": "yield_position", - "docs": ["Link to a vault-owned YT position", "This account collects yield from all unstaked YT"], - "type": "pubkey" - }, - {"name": "address_lookup_table", "docs": ["Address lookup table key for vault"], "type": "pubkey"}, - {"name": "start_ts", "docs": ["start timestamp"], "type": "u32"}, - {"name": "duration", "docs": ["seconds duration"], "type": "u32"}, - {"name": "signer_seed", "docs": ["Seed for CPI signing"], "type": "pubkey"}, - {"name": "authority", "docs": ["Authority for CPI signing"], "type": "pubkey"}, - {"name": "signer_bump", "docs": ["bump for signer authority PDA"], "type": {"array": ["u8", 1]}}, - { - "name": "last_seen_sy_exchange_rate", - "docs": [ - "Last seen SY exchange rate", - "Not needed for live use, but only when the vault has matured, and we need to freeze earnings for YT holders", - "This will not get updated after vault is mautured" - ], - "type": {"defined": {"name": "Number"}} - }, - { - "name": "all_time_high_sy_exchange_rate", - "docs": ["This is the all time high exchange rate for SY"], - "type": {"defined": {"name": "Number"}} - }, - { - "name": "final_sy_exchange_rate", - "docs": ["This is the exchange rate for SY when the vault expires"], - "type": {"defined": {"name": "Number"}} - }, - {"name": "total_sy_in_escrow", "docs": ["How much SY is held in escrow"], "type": "u64"}, - { - "name": "sy_for_pt", - "docs": [ - "The total SY set aside to back the PT holders", - "This value is updated on every operation that touches the PT supply or the last seen exchange rate" - ], - "type": "u64" - }, - {"name": "pt_supply", "docs": ["Total supply of PT"], "type": "u64"}, - {"name": "treasury_sy", "docs": ["Amount of SY staged for the treasury"], "type": "u64"}, - {"name": "uncollected_sy", "docs": ["SY that has been earned by YT, but not yet collected"], "type": "u64"}, - { - "name": "treasury_sy_token_account", - "docs": [ - "SY that has been staged for collection, but not yet collected", - "It is strictly greater-than-or-equal to the treasury_sy", - "And strictly less than or equal to the total_sy_in_escrow" - ], - "type": "pubkey" - }, - {"name": "interest_bps_fee", "type": "u16"}, - {"name": "min_op_size_strip", "type": "u64"}, - {"name": "min_op_size_merge", "type": "u64"}, - {"name": "status", "type": "u8"} - ] - } - }, - { - "name": "Number", - "docs": ["High precision number, stored as 4 u64 words in little endian"], - "type": {"kind": "struct", "fields": [{"array": ["u64", 4]}]} - } - ] -} \ No newline at end of file diff --git a/projects/exponent/index.js b/projects/exponent/index.js deleted file mode 100644 index f88e5586bc1..00000000000 --- a/projects/exponent/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { getConnection, getProvider } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); -const { decodeAccount } = require("../helper/utils/solana/layout"); -const { Program } = require("@coral-xyz/anchor"); - -const { getConfig } = require('../helper/cache') -const idl = require('./idl.json') - - -async function tvl(api) { - const provider = getProvider() - const connection = getConnection() - - const program = new Program(idl, provider) - const vaults = await program.account.vault.all() - - const mintRateMap = {} - const mintAccountMap = {} - - vaults.forEach(v => { - const rate = v.account.lastSeenSyExchangeRate[0][0].toString() / 1e12 - if (rate > 0) - mintRateMap[v.account.mintSy.toString()] = v.account.lastSeenSyExchangeRate[0][0].toString() / 1e12 - }) - - // Fetch mint accounts - const mintPubkeys = Object.keys(mintRateMap).map(k => new PublicKey(k)) - const mintAccounts = await connection.getMultipleAccountsInfo(mintPubkeys); - - - mintAccounts.forEach((a, i) => { - mintAccountMap[mintPubkeys[i].toString()] = a - }) - - // Fetch Exponent wrapped mints from Exponent API - const { data: mints } = await getConfig('exponent', 'https://web-api.exponent.finance/api/lyt-growth/standard-yield-tokens'); - - - for (let i = 0; i < mints.length; i++) { - const { mintSy, mintUnderlying} = mints[i] - const mintAccount = mintAccountMap[mintSy] - const mintRate = mintRateMap[mintSy] - if (!mintAccount || !mintRate) continue; - - // Decode mint data - const decodedMint = decodeAccount('mint', mintAccount); - const supply = decodedMint.supply; - - // As all of the Exponent wrapped tokens are yield bearing tokens, mutiply their supply by their redemption rate to get the base asset amount - const amount = supply * mintRate; - - // Add to balances using the base asset price * the converted amount of base tokens - api.add(mintUnderlying, amount); - } -} - -module.exports = { - timetravel: false, - methodology: "TVL is calculated by summing the total supply of each Exponent wrapped Yield bearing token and multiplying their base asset amount by the price of the underlying token", - solana: { tvl }, -}; - diff --git a/projects/exsat/index.js b/projects/exsat/index.js deleted file mode 100644 index 0edca69310d..00000000000 --- a/projects/exsat/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens } = require("../helper/chain/bitcoin"); -const bitcoinBook = require('../helper/bitcoin-book'); - -async function tvl(api) { - return sumTokens({ owners: await bitcoinBook.exsatBridge() }); -} - -module.exports = { - methodology: 'TVL for the exSat Bridge represents the total balance in custody BTC addresses, reflecting BTC assets bridged to the exSat network.', - bitcoin: { tvl }, -}; diff --git a/projects/extended/index.js b/projects/extended/index.js deleted file mode 100644 index 93171173e7e..00000000000 --- a/projects/extended/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); -const { sumTokens } = require('../helper/chain/starknet') - -const ethContracts = [ - '0x1cE5D7f52A8aBd23551e91248151CA5A13353C65' -]; - -const starknetContract = '0x062da0780fae50d68cecaa5a051606dc21217ba290969b302db4dd99d2e9b470'; - -async function starknetTvl(api) { - return sumTokens({ api, owner: starknetContract, tokens: [ADDRESSES.starknet.USDC] }) -} - -module.exports = { - ethereum: { tvl: sumTokensExport({ owners: ethContracts, tokens: [ADDRESSES.ethereum.USDC] }) }, - starknet: { tvl: starknetTvl }, -}; diff --git a/projects/extra-vaults/index.js b/projects/extra-vaults/index.js deleted file mode 100644 index 0e703382c5c..00000000000 --- a/projects/extra-vaults/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getMorphoVaultTvl } = require("../helper/morpoho") - -const config = { - base: { - morphoVaults: [ - '0x5A32099837D89E3a794a44fb131CBbAD41f87a8C', - '0x23479229e52Ab6aaD312D0B03DF9F33B46753B5e', - ], - } -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: getMorphoVaultTvl(config[chain].governor, { vaults: config[chain].morphoVaults }) - } -}); \ No newline at end of file diff --git a/projects/extra-xlend/index.js b/projects/extra-xlend/index.js deleted file mode 100644 index 48b6de00140..00000000000 --- a/projects/extra-xlend/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -const config = { - optimism: { - dataProvider: '0xCC61E9470B5f0CE21a3F6255c73032B47AaeA9C0', - }, - base: { - dataProvider: '0x1566DA4640b6a0b32fF309b07b8df6Ade40fd98D', - } -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = aaveExports(chain, undefined, undefined, [config[chain].dataProvider], { v3: true }); -}); \ No newline at end of file diff --git a/projects/extra/index.js b/projects/extra/index.js deleted file mode 100644 index 777dd947c2a..00000000000 --- a/projects/extra/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - optimism: { factory: '0xbb505c54d71e9e599cb8435b4f0ceec05fc71cbd', fromBlock: 96265067, vaultFactory: '0x155620a2e6a9392c754b73296d9655061525729b', positionViewer: '0xf9cfb8a62f50e10adde5aa888b44cf01c5957055' }, - base: {factory: '0xbb505c54d71e9e599cb8435b4f0ceec05fc71cbd', fromBlock: 1960257, vaultFactory: '0x155620a2e6a9392c754b73296d9655061525729b', positionViewer: '0xf9cfb8a62f50e10adde5aa888b44cf01c5957055' }, - berachain: {factory: '0xBB505c54D71E9e599cB8435b4F0cEEc05fC71cbD', fromBlock: 2600000, vaultFactory: '0x155620a2e6a9392c754b73296d9655061525729b', positionViewer: '0xf9cfb8a62f50e10adde5aa888b44cf01c5957055' }, -} - -module.exports = {}; - -const getVaultAbi = "function getVault(uint256 vaultId) view returns (tuple(address gauge, address pair, address token0, address token1, bool stable, bool paused, bool frozen, bool borrowingEnabled, bool liquidateWithTWAP, uint16 maxLeverage, uint16 premiumMaxLeverage, uint16 maxPriceDiff, uint16 liquidateDebtRatio, uint16 withdrawFeeRate, uint16 compoundFeeRate, uint16 liquidateFeeRate, uint16 rangeStopFeeRate, uint16 protocolFeeRate, uint256 premiumRequirement, uint256 protocolFee0Accumulated, uint256 protocolFee1Accumulated, uint256 minInvestValue, uint256 minSwapAmount0, uint256 minSwapAmount1, uint256 totalLp, uint256 totalLpShares, uint256 premiumUtilizationOfReserve0, uint256 debtLimit0, uint256 debtPositionId0, uint256 debtTotalShares0, uint256 premiumUtilizationOfReserve1, uint256 debtLimit1, uint256 debtPositionId1, uint256 debtTotalShares1))" - - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, vaultFactory, positionViewer, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x857d20297bde4478f678d3aafbfdf7fbfc90a4200b62eb053a32b2c50335676f'], - eventAbi: 'event InitReserve (address indexed reserve, address indexed eTokenAddress, address stakingAddress, uint256 id)', - onlyArgs: true, - fromBlock, - }) - - const vaultLogs = await getLogs({ - api, - target: vaultFactory, - topics: ['0xc0a8c0f282890a3da41a2183a1e9a1988888e8d8a0a39d933d42b0418e626250'], - fromBlock, - }) - - const calls = [] - for (let i = 1; i <= vaultLogs.length; i++) calls.push(i) - - const data = (await api.multiCall({ target: positionViewer, abi: getVaultAbi, calls, permitFailure: true })).filter(i => i) - data.forEach(({ pair, totalLp }) => api.add(pair, totalLp)) - - const tokensAndOwners = logs.map(i => [i.reserve, i.eTokenAddress]) - - return sumTokens2({ api, tokensAndOwners, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/ezkalibur/index.js b/projects/ezkalibur/index.js deleted file mode 100644 index 90704dea8b5..00000000000 --- a/projects/ezkalibur/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { stakingPricedLP } = require("../helper/staking"); - -const xSWORD = '0x11ef47783740B3F0c9736D54BE8eF8953C3Ead99' -const SWORD_TOKEN = '0x240f765Af2273B0CAb6cAff2880D6d8F8B285fa4' -const SWORD_WETH_LP = '0xc8b6b3a4d2d8428ef3a940eac1e32a7ddadcb0f1' - -module.exports = { - misrepresentedTokens: true, - start: '2023-06-09', - era: { - tvl: getUniTVL({ factory: '0x15C664A62086c06D43E75BB3fddED93008B8cE63', useDefaultCoreAssets: true, }), - staking: stakingPricedLP(xSWORD,SWORD_TOKEN,'era',SWORD_WETH_LP,'weth') - }, -}; \ No newline at end of file diff --git a/projects/fMoney/index.js b/projects/fMoney/index.js deleted file mode 100644 index 9cf60bbb670..00000000000 --- a/projects/fMoney/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const { unwrapBalancerToken } = require('../helper/unwrapLPs') - -const config = { - fantom: { - unitroller: '0xB911d8064c0AA338241f349eD802Ad4bae6ec034', - stakingPool: '0x9426d9077620efaae688d3c3b398fa814406ce4a', - owner: '0x6B0B150A7a37b1E592F553E2b7D71d6D1439dc57' - }, - sonic: { - unitroller: '0xd41e9fa6EC7A33f0A6AAE5E9420c9D60eC1727e4', - stakingPool: '0x3ec8254006658e11f9ab5eaf92d64f8528d09057', - owner: '0x44ece28720dbe441bbf1363e17b0cd71839090c8' - } -} - -async function staking(api) { - await unwrapBalancerToken({ - api, - balancerToken: config[api.chain].stakingPool, - owner: config[api.chain].owner, - isV2: true - }) - return api.getBalances() -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = compoundExports2({ comptroller: config[chain].unitroller }) - module.exports[chain].staking = staking -}) \ No newline at end of file diff --git a/projects/fabric/index.js b/projects/fabric/index.js deleted file mode 100644 index e2359ffd71c..00000000000 --- a/projects/fabric/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - timetravel: false, - solana: { - tvl: () => ({}), - }, - deadFrom: "2022-06-19", - methodology: - "Project is shutdown: https://twitter.com/crypto_notte/status/1545387251143741441/photo/1", -}; diff --git a/projects/factor-leverage-vault/index.js b/projects/factor-leverage-vault/index.js deleted file mode 100644 index 88dfcb90d41..00000000000 --- a/projects/factor-leverage-vault/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { blockQuery } = require('../helper/http') - -const queryBlock = `query data($block: Int){ - leverageVaultPairStates(block: { number: $block }) { - id - assetBalanceRaw - assetTokenAddress - debtBalanceRaw - debtTokenAddress - } -}` - -const SUBGRAPH_URL = - sdk.graph.modifyEndpoint('BZhGLLFicmKB9N9oMgDEAP8HmhVxTTjjxQA3ctGewAFc'); - -async function tvl(api) { - const { leverageVaultPairStates } = await blockQuery(SUBGRAPH_URL, queryBlock, { api }) - - for (let pairState of leverageVaultPairStates) { - const { assetTokenAddress, assetBalanceRaw, debtTokenAddress, debtBalanceRaw } = pairState - const decreasingDebt = debtBalanceRaw * -1 - api.add(assetTokenAddress, assetBalanceRaw) - api.add(debtTokenAddress, decreasingDebt) - } - - return api.getBalances() -} - -module.exports = { - doublecounted: true, - arbitrum: { tvl } -}; diff --git a/projects/factor-v2/index.js b/projects/factor-v2/index.js deleted file mode 100644 index d4d1de87a9b..00000000000 --- a/projects/factor-v2/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - arbitrum: { factory: '0x6b3e693b436510c430ffbb6b5ca6c8248022f1cd', fromBlock: 112324705 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0xc66cfbda93c132fbda8600e8032ce13d18d0db1d139e72d677d5556e0acf9484'], - eventAbi: 'event VaultCreated (address indexed vault, address strategy, string name, string symbol, uint256 approval)', - onlyArgs: true, - fromBlock, - }) - const vaults = logs.map(log => log.vault) - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:assetBalance', calls: vaults }) - // console.table(vaults.map((v, i) => ({ vault: v, token: tokens[i], bal: bals[i] }))) - api.addTokens(tokens, bals) - } - } -}) \ No newline at end of file diff --git a/projects/factor/index.js b/projects/factor/index.js deleted file mode 100644 index 7e161dfc937..00000000000 --- a/projects/factor/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { cachedGraphQuery } = require('../helper/cache'); - -const FCTR = "0x6dD963C510c2D2f09d5eDdB48Ede45FeD063Eb36" -const veFCTR = "0xA032082B08B2EF5A6C3Ea80DaEac58300F68FB73" - -async function tvl(api) { - const endpoint = sdk.graph.modifyEndpoint('2ZavYD1JPYUy8HMheuYcyKCswHR5djpEq2xuWs7PzPRe') - const res = await cachedGraphQuery('factor-v1', endpoint, `{vaultGeneses { id }}`) - const indices = res.vaultGeneses.map(v => v.id) - const uBalances = await api.multiCall({ abi: 'uint256[]:underlyingAssetsBalance', calls: indices }) - const calls = [] - uBalances.forEach((v, i) => { - v.forEach((_, j) => calls.push({ target: indices[i], params: j })) - }) - const uData = await api.multiCall({ abi: 'function underlyingAssets(uint256) view returns (address,uint256,uint256)', calls }) - const tokensAndOwners = uData.map((v, i) => [v[0], calls[i].target]) - await sumTokens2({ api, tokensAndOwners }) -} - -module.exports = { - arbitrum: { - tvl, - staking: staking(veFCTR, FCTR) - } -} diff --git a/projects/factorial/index.js b/projects/factorial/index.js deleted file mode 100644 index dfa7657db97..00000000000 --- a/projects/factorial/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const { call } = require("../helper/chain/ton"); -const { get } = require('../helper/http') -const { processTVMSliceReadAddress } = require("./utils"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const factorial_ton = "EQDIKEz2BYLnTRWo5W5a6moZ9PXNtyOVOFF7noi8Ufv3axz_"; -const pools = [ - "EQCrEHHG4Ff8TD3PzuH5tFSwHBD3zxeXaosz48jGLebwiiNx", // basic - "EQBCXQp2sSTJhvnV6DlBqhTsdNMZc_tJcXQJ5XjoWiy-OAge", // advanced - "EQA3m4H3vTUOeXGW-o6AEyZxv6i79tR-i1f4XiW588HJoqND", // slp-ton - "EQAYJdU9JFRcKAwMZv3MqD0QVjBEMGO_4mgwOJtTBOHR22ec", // slp-usdt -]; - -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -async function tvl(api) { - const pools = await get('https://api.factorial.finance/info/pools'); - - for(const pool of pools) { - await sleep(3000); - const pool_data = await call({ target: pool.address, abi: "get_pool_data" }) - - const _kv = 1; - const assetDicIdx = 13; - const supplyAmountIdx = 4; - const borrowAmountIdx = 5; - const addressIdx = 15; - - const assets = pool_data[assetDicIdx][_kv]["elements"]; - - assets.forEach((asset) => { - const assetInfo = asset["tuple"]["elements"]; - const supplied = assetInfo[supplyAmountIdx]["number"]["number"]; - const borrowed = assetInfo[borrowAmountIdx]["number"]["number"]; - const address = assetInfo[addressIdx]["slice"]["bytes"]; - - const assetAddress = processTVMSliceReadAddress(address); - const addressToAdd = assetAddress === factorial_ton ? ADDRESSES.ton.TON : assetAddress; - - api.add(addressToAdd, supplied - borrowed); - }); - } -} - -async function borrowed(api) { - const pools = await get('https://api.factorial.finance/info/pools'); - - for(const pool of pools) { - await sleep(3000); - const pool_data = await call({ target: pool.address, abi: "get_pool_data" }) - - const _kv = 1; - const assetDicIdx = 13; - const borrowAmountIdx = 5; - const addressIdx = 15; - - const assets = pool_data[assetDicIdx][_kv]["elements"]; - - assets.forEach((asset) => { - const assetInfo = asset["tuple"]["elements"]; - const borrowed = assetInfo[borrowAmountIdx]["number"]["number"]; - const address = assetInfo[addressIdx]["slice"]["bytes"]; - - const assetAddress = processTVMSliceReadAddress(address); - const addressToAdd = assetAddress === factorial_ton ? ADDRESSES.ton.TON : assetAddress; - - api.add(addressToAdd, borrowed); - }); - } -} - -module.exports = { - methodology: 'Total amount of assets locked in Affluent pool', - ton: { tvl, borrowed } -} - diff --git a/projects/factorial/utils.js b/projects/factorial/utils.js deleted file mode 100644 index 3ac5c054786..00000000000 --- a/projects/factorial/utils.js +++ /dev/null @@ -1,143 +0,0 @@ -function processTVMSliceReadAddress(base64String) { - let buffer = decodeBase64(base64String); - let { offset, root, index, cellData } = parseBoc(buffer); - let { wc, addressHash } = parseAddress(buffer, offset); - return serializeAddress(wc, addressHash); -} - -function decodeBase64(base64String) { - const buffer = Buffer.from(base64String, 'base64'); - return buffer; -} - -function parseBoc(buffer) { - if (buffer.length < 4) { - throw new Error("Buffer is too short to contain magic bytes"); - } - - const magic = buffer.readUInt32BE(0); - if (magic !== 0xb5ee9c72) { - throw new Error("Invalid magic"); - } - - let offset = 4; - - let hasIdx = (buffer[offset] >> 7) & 1; - let hasCrc32c = (buffer[offset] >> 6) & 1; - let hasCacheBits = (buffer[offset] >> 5) & 1; - let flags = (buffer[offset] >> 3) & 0b11; // 2 bits - let size = buffer[offset] & 0b111; // 3 bits - offset++; - - let offBytes = buffer.readUInt8(offset); - offset++; - - let cells = buffer.readUIntBE(offset, size); - offset += size; - - let roots = buffer.readUIntBE(offset, size); - offset += size; - - let absent = buffer.readUIntBE(offset, size); - offset += size; - - let totalCellSize = buffer.readUIntBE(offset, offBytes); - offset += offBytes; - - let root = []; - for (let i = 0; i < roots; i++) { - root.push(buffer.readUIntBE(offset, size)); - offset += size; - } - - let index = null; - if (hasIdx) { - index = buffer.slice(offset, offset + cells * offBytes); - offset += cells * offBytes; - } - - let cellData = buffer.slice(offset, offset + totalCellSize); - offset += totalCellSize; - - return { offset, root, index, cellData }; -} - -function parseAddress(buffer, offset) { - const wcByteOffset = 13; - const wcBitsOffset = 3; - let reader = new BitReader(buffer, wcByteOffset, wcBitsOffset); - - let wc = (reader.readBits(5) << 3) | (reader.readBits(3)); - let addressHash = reader.readBytes(32); - - return { wc, addressHash, offset: reader.byteOffset }; -} - -function serializeAddress(wc, addressHash) { - const bounceableTag = 0x11; - let fullAddress = Buffer.alloc(36); - fullAddress[0] = bounceableTag; - fullAddress[1] = wc; - addressHash.copy(fullAddress, 2); - - let crc16 = computeCRC16(fullAddress.slice(0, 34)); - fullAddress.writeUInt16BE(crc16, 34); - - return fullAddress.toString('base64').replace(/\+/g, '-').replace(/\//g, '_'); -} - -function computeCRC16(buffer) { - let crc = 0x0000; - let polynomial = 0x1021; - - for (let i = 0; i < buffer.length; i++) { - crc ^= buffer[i] << 8; - for (let j = 0; j < 8; j++) { - if (crc & 0x8000) { - crc = (crc << 1) ^ polynomial; - } else { - crc <<= 1; - } - } - crc &= 0xFFFF; - } - return crc; -} - -class BitReader { - constructor(buffer, startByte = 0, startBit = 0) { - this.buffer = buffer; - this.byteOffset = startByte; - this.bitOffset = startBit; - } - - readBits(n) { - let value = 0; - - for (let i = 0; i < n; i++) { - if (this.byteOffset >= this.buffer.length) { - throw new Error("Buffer overflow while reading bits"); - } - - let bit = (this.buffer[this.byteOffset] >> (7 - this.bitOffset)) & 1; - value = (value << 1) | bit; - - this.bitOffset++; - if (this.bitOffset === 8) { - this.bitOffset = 0; - this.byteOffset++; - } - } - return value; - } - - readBytes(n) { - let bytes = Buffer.alloc(n); - for (let i = 0; i < n; i++) { - bytes[i] = this.readBits(8); - } - return bytes; - } -} - -module.exports = { processTVMSliceReadAddress } \ No newline at end of file diff --git a/projects/faet/index.js b/projects/faet/index.js deleted file mode 100644 index de589256b86..00000000000 --- a/projects/faet/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const STAKING_CONTRACT = "0xFbb61c8C8aA305F3ced88cA7D6E7859126Dc3B83"; -const FAET_TOKEN = "0xdF92bA28D17329a7284A5eC230967768D4cb7A89"; - -module.exports = { - methodology: "TVL includes FAET tokens staked in the FaetStaking contract.", - start: 17400000, - lisk: { - tvl: () => ({}), - staking: staking(STAKING_CONTRACT, FAET_TOKEN), - }, -}; diff --git a/projects/fairyswap-v2/index.js b/projects/fairyswap-v2/index.js deleted file mode 100644 index 06a919ec214..00000000000 --- a/projects/fairyswap-v2/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - methodology: `Uses factory(0xA2DD9611675927281070dB095599D31a8D4a007A) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - findora: { - tvl: getUniTVL({ factory: '0xA2DD9611675927281070dB095599D31a8D4a007A', useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/fairyswap/index.js b/projects/fairyswap/index.js deleted file mode 100644 index 46f15417f82..00000000000 --- a/projects/fairyswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - methodology: `Uses factory(0xA9a6E17a05c71BFe168CA972368F4b98774BF6C3) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - findora: { - tvl: getUniTVL({ factory: '0xA9a6E17a05c71BFe168CA972368F4b98774BF6C3', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/falcon-finance/index.js b/projects/falcon-finance/index.js deleted file mode 100644 index 25bae28f078..00000000000 --- a/projects/falcon-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const USDF = "0xFa2B947eEc368f42195f24F36d2aF29f7c24CeC2"; - -module.exports = { - ethereum: { - tvl: async (api) => api.add(USDF, await api.call({ target: USDF, abi: 'erc20:totalSupply' })), - } -} \ No newline at end of file diff --git a/projects/fan-tech/index.js b/projects/fan-tech/index.js deleted file mode 100644 index 264b20a061b..00000000000 --- a/projects/fan-tech/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const ftContract = "0x53167401aeebFf5677C31E1DDA945628422D7Ed2" -const giftContract = "0xD42A821E584513e18cFB77e56Bf635C551dE5D63" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owners: [ftContract, giftContract], api }) -} - -module.exports = { - methodology: `We count the MNT on the contracts`, - mantle: { - tvl - } -} diff --git a/projects/fandotfun/index.js b/projects/fandotfun/index.js deleted file mode 100644 index acce513d4b6..00000000000 --- a/projects/fandotfun/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); - -const FANDOTFUN_CONTRACT = '0x1Ce2521E11D1FF489BE872a4091fE423F4E4eA44'; - -async function tvl(api) { - return sumTokens2({ - owners: [FANDOTFUN_CONTRACT], - tokens: [nullAddress], // Use nullAddress for native token - chain: 'hyperliquid', - api, - }); -} - -module.exports = { - methodology: - 'Counts native HYPE held by the Fan.fun contract on Hyperliquid L1 using the sumTokens2 helper.', - hyperliquid: { - tvl, - }, -}; diff --git a/projects/fantOHM/BalancerVaultBeets.json b/projects/fantOHM/BalancerVaultBeets.json deleted file mode 100644 index 9d147ed162a..00000000000 --- a/projects/fantOHM/BalancerVaultBeets.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getPoolTokens": "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)" -} \ No newline at end of file diff --git a/projects/fantOHM/BalancerWeightedPoolBeets.json b/projects/fantOHM/BalancerWeightedPoolBeets.json deleted file mode 100644 index 7e8058d689a..00000000000 --- a/projects/fantOHM/BalancerWeightedPoolBeets.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalSupply": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/fantOHM/MasterChefBeets.json b/projects/fantOHM/MasterChefBeets.json deleted file mode 100644 index 7201e83a7e4..00000000000 --- a/projects/fantOHM/MasterChefBeets.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)", - "pendingBeets": "function pendingBeets(uint256 _pid, address _user) view returns (uint256 pending)" -} \ No newline at end of file diff --git a/projects/fantOHM/api.js b/projects/fantOHM/api.js deleted file mode 100644 index 606277d1561..00000000000 --- a/projects/fantOHM/api.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('./index') -const { ohmStaking } = require('../helper/treasury') - -module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/fantOHM/index.js b/projects/fantOHM/index.js deleted file mode 100644 index 6a979f71c55..00000000000 --- a/projects/fantOHM/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const fantomFhm = "0xfa1FBb8Ef55A4855E5688C0eE13aC3f202486286"; -const fantomStaking = "0xcb9297425C889A7CbBaa5d3DB97bAb4Ea54829c2"; -const moonriverFhm = "0xfa1FBb8Ef55A4855E5688C0eE13aC3f202486286"; -const moonriverStaking = "0xF5C7D63C5Fc0aD4b7Cef7d8904239860725Ebc87"; - -// addresses of gnosis safe's according to: https://fantohm.com/#security -const ethGnosisContract = "0x66a98CfCd5A0dCB4E578089E1D89134A3124F0b1"; - - -module.exports = { - deadFrom: '2023-10-01', - fantom: { - tvl: () => ({}), - staking: staking(fantomStaking, fantomFhm) - }, - moonriver: { - tvl: () => ({}), - staking: staking(moonriverStaking, moonriverFhm, "moonriver", "fantom:0xfa1FBb8Ef55A4855E5688C0eE13aC3f202486286") - }, - ethereum: { - tvl: sumTokensExport({ owner: ethGnosisContract, tokens: [ADDRESSES.ethereum.WETH] }), - }, - bsc: { - tvl: () => ({}) - }, - boba: { - tvl: () => ({}) - }, -} diff --git a/projects/fantOHM/index.json b/projects/fantOHM/index.json deleted file mode 100644 index a8829c01748..00000000000 --- a/projects/fantOHM/index.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "index": "uint256:index" -} \ No newline at end of file diff --git a/projects/fantasm/abi.json b/projects/fantasm/abi.json deleted file mode 100644 index 8e5110ae2d4..00000000000 --- a/projects/fantasm/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "bank": { - "usableFtmBalance": "uint256:usableCollateralBalance" - }, - "bankV1": { - "usableFtmBalance": "uint256:usableFtmBalance" - }, - "multiFeeDistribution": { - "totalSupply": "uint256:totalSupply" - } -} diff --git a/projects/fantasm/index.js b/projects/fantasm/index.js deleted file mode 100644 index 31a566473c9..00000000000 --- a/projects/fantasm/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const Abis = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const Contracts = { - fantomV1: { - wftm: ADDRESSES.fantom.WFTM, - fsm: "0xaa621D2002b5a6275EF62d7a065A865167914801", - bank: "0x880672AB1d46D987E5d663Fc7476CD8df3C9f937", - multiFeeDistribution: "0x348634Ea9367690383716FbCa8f225366bbC5966", - chef: "0x7aeE1FF33E1b7F6D874D488fb2533a79419ca240", - lps: [ - "0x457C8Efcd523058dd58CF080533B41026788eCee", // FSM_FTM_LP - "0x128aff18EfF64dA69412ea8d262DC4ef8bb3102d", // XFTM_FTM_LP - "0xbEa8E843c0fD428f79a166EaE2671E3a8Cc39A0a", // FSM_XFTM_LP - ], - }, - fantom: { - wftm: ADDRESSES.fantom.WFTM, - fxm: "0x132b56763C0e73F95BeCA9C452BadF89802ba05e", - bank: "0xa3B99CdFdDe2216AfB1D58D6108cC93fea413A76", - multiFeeDistribution: "0xC4510604504Fd50f64499fF6186AEf1F740dE38B", - chef: "0x9c09eA872582bA02E0008C4853eAA5199bF8D0a7", - lps: [ - "0x664D417B404404268C4E571975B4eC77157B8aC4", // FXM_FTM_LP - "0x215c8E1452681be980Bce575cF719029581Ef263", // FTMX_FTM_LP - ], - }, -}; - -async function calcTvl(api) { - const bal = await api.call({ abi: Abis.bank.usableFtmBalance, target: Contracts.fantom.bank}) - const balV1 = await api.call({ abi: Abis.bankV1.usableFtmBalance, target: Contracts.fantomV1.bank}) - api.addGasToken([bal, balV1]) -} - -async function calcStakingTvl(api) { - const bals = await api.multiCall({ abi: Abis.multiFeeDistribution.totalSupply, calls: [ - Contracts.fantom.multiFeeDistribution, - Contracts.fantomV1.multiFeeDistribution, - ] }) - api.add(Contracts.fantom.fxm, bals[0]) - api.add(Contracts.fantomV1.fsm, bals[1]) -} - -async function ftmPool2(api) { - return sumTokens2({ api, resolveLP: true, ownerTokens: [ - [Contracts.fantom.lps, Contracts.fantom.chef], - [Contracts.fantomV1.lps, Contracts.fantomV1.chef], - ]}) -} - -module.exports = { - fantom: { - tvl: calcTvl, - pool2: ftmPool2, - staking: calcStakingTvl, - }, -}; diff --git a/projects/fantom.js b/projects/fantom.js deleted file mode 100644 index 3eb5c4abe8e..00000000000 --- a/projects/fantom.js +++ /dev/null @@ -1,5 +0,0 @@ - -module.exports = { - misrepresentedTokens: true, - fantom: { tvl: () => ({ }) } -}; diff --git a/projects/fantompup/index.js b/projects/fantompup/index.js deleted file mode 100644 index 3fd38b3ba92..00000000000 --- a/projects/fantompup/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0xCFD389eFCD11aB30933F46e493da08cE5ebAf233', - nativeToken: '0x900825EA297c7c5D1F6fA54146849BC41EdDAf29' -}) \ No newline at end of file diff --git a/projects/farmersonly/abi.js b/projects/farmersonly/abi.js deleted file mode 100644 index 42b962834a2..00000000000 --- a/projects/farmersonly/abi.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - poolLength: "uint256:poolLength", - poolInfo: "function poolInfo(uint256) view returns (address want, address strat)", - wantLockedTotal: "uint256:wantLockedTotal", -} \ No newline at end of file diff --git a/projects/farmersonly/index.js b/projects/farmersonly/index.js deleted file mode 100644 index 9bf47cbf7ca..00000000000 --- a/projects/farmersonly/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { getUniTVL, sumUnknownTokens } = require('../helper/unknownTokens') -const abi = require('./abi') -const { stakings } = require('../helper/staking') -const sdk = require('@defillama/sdk') - -const vaultChef = '0x2914646e782cc36297c6639734892927b3b6fe56' - -const dexTVL = getUniTVL({ - factory: '0xfa53b963a39621126bf45f647f813952cd3c5c66', - useDefaultCoreAssets: true, -}) - -const vaultTvl = async (api) => { - const vaultRes = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: vaultChef, }) - const wants = vaultRes.map(i => i.want) - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: wants, }) - - const tokenCalls = [] - const tokens = [] - const blacklisted = [ - '0x4342659cE0Bda7EB9A9621Eb5dF5A67CE8f5ac85', - '0xAd600896f611686F4B83FfEd29b4AE4BF70558a5', - ].map(i => i.toLowerCase()) - symbols.forEach((symbol, i) => { - const strat = vaultRes[i].strat.toLowerCase() - if (blacklisted.includes(strat)) { - return; - } - if (symbol !== 'FOX-LP') { - tokens.push(vaultRes[i].want) - tokenCalls.push({ target: strat, }) - } - }) - const balances = await api.multiCall({ abi:abi.wantLockedTotal , calls: tokenCalls }) - api.add(tokens, balances) - return sumUnknownTokens({ api, resolveLP: true}) -} - - -module.exports = { - harmony: { - tvl: sdk.util.sumChainTvls([vaultTvl, dexTVL]), - staking: stakings(['0x15e04418d328c39bA747690F6DaE9Bbf548CD358', '0xA68E643e1942fA8635776b718F6EeD5cEF2a3F15',], '0x0159ed2e06ddcd46a25e74eb8e159ce666b28687') - } -} \ No newline at end of file diff --git a/projects/farmhero/abi.json b/projects/farmhero/abi.json deleted file mode 100644 index a8569ad9ea2..00000000000 --- a/projects/farmhero/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address want, uint8 poolType, uint256 allocPoint, uint256 lastRewardTime, uint256 accHEROPerShare, address strat)", - "poolLength": "uint256:poolLength", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/farmhero/index.js b/projects/farmhero/index.js deleted file mode 100644 index c4617c0a910..00000000000 --- a/projects/farmhero/index.js +++ /dev/null @@ -1,210 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); -const { sumTokens2, } = require("../helper/unwrapLPs"); - -// --- BSC Addresses --- -const masterChefContractBsc = "0xDAD01f1d99191a2eCb78FA9a007604cEB8993B2D"; -const HERO = "0x9b26e16377ad29a6ccc01770bcfb56de3a36d8b2"; - -const stakingContractBsc = [ - // Staking + vesting - "0x6626c38b1cc5693e6a415fD1790F31DCD38B551A", - // Staking Pool 1 - "0xF306F74Cc0669f02f280282F8F043F0239c37B0E", - // Staking Pool 2 - "0x2fed5c1d16dec8c29f28a241d59350cbec21ee18", - // Staking Pool 3 - "0x4a1645deb84bcd2bdfd234b4be7750306638f566", - // Staking Pool 4 - "0xe403baa1e35ac50f2b2cbe4124c85e9f2823f0d6", - // Staking Pool 5 - "0xd00751ebe4c273dc42456a8ce88a79ad5e867d87", - // Boardroom 1 - "0xAFDe7b2D6498F278C6E95059b15b6a41ba7eA1a8", - // Boardroom 2 - "0xaa0863882b9387ff1114da8841204179B2C5dC60", - masterChefContractBsc, -]; - -const excludePool2Bsc = [ - "0x35BC504e05fa91f17552A9c3a6A2E7E9651A0622", - "0x4BcaA3bd33fF733a581dF027aAd1EBDbDDb55CC2", - "0x2d9108475B4c0795727546caA8aa7b75D18779F9", -]; - -const pool2StratsBsc = [ - "0x9cC7B6Ec33a9c42CA301eBe47773B5221A8F2083", - "0xCA162Ffc19Bc445F215Cc40C74398691DD723B14", - "0x1e2FC439a4235ce680C33e82fD2488617e53c443", -]; - -// --- Polygon Addresses --- -const masterChefContractPolygon = "0x8e5860DF653A467D1cC5b6160Dd340E8D475724E"; -const HONOR = "0xb82a20b4522680951f11c94c54b8800c1c237693"; - -const stakingContractPolygon = [ - // Staking + vesting - "0x047e7D6E8f4b6dEBa0537A7c7e852C4272981075", - // Staking Pool 1 - "0x253f5089165579b86ddcae96143f871c1ec79031", - // Staking Pool 2 - "0xfc4bf0c319d62844d4aff048439e678d76471c28", - // Staking Pool 3 - "0xd06c448ab1570143054703a2cd317681c3c31ae8", - // Staking Pool 4 - "0x102a30579e56eca4a2ef1b27dca141786bab3a5c", - // Staking Pool 5 - "0xe9b8f2c454125d2bbc5a93e297f5a846ed921ae6", - // Staking Pool 6 - "0x4ef76bbe7f942c69e8e7961339ee70654efc97c7", - // Staking Pool 7 - "0x78f4a1e514af96d72a25a40ae4ebf80bb25bf300", - // Staking Pool 8 - "0x600ef4e67a09188868603db0f2f12cfc606d8512", - // Staking Pool 9 - "0x5c6e0756615e4a951f8fe4b4b30cbf2ea6c50aeb", - // Staking Pool 10 - "0x2645a5865b20be653deceb8729fdcf8930b3ffac", - // Staking Pool 11 - "0x20058fa67761ee0929b63e0adfd6793f6fafb2e8", - // Staking Pool 12 - "0xafb3dc6934cf9474c1d5b85058001710b8e8dcfa", - // Boardroom 1 - "0xDCfc3b59b74567083A76308b6D84Aef483148689", - // Boardroom 2 - "0xf9f8E6C33Cc5BD633D6E5494c52BA6D8f9aB6452", - // Boardroom 3 - "0x376D053876fDb5601cb87a342eE200e86704da62", - masterChefContractPolygon, -]; - -const excludePool2Polygon = [ - "0x46489f825f11d7473D20279699b108aCAA246e73", - "0x4Bd5dF4300b7c5309cB1A0143e4A6d0184B878e1", -]; - -const pool2StratsPolygon = [ - "0xC0148789554b38052a5c53115662B89BA9C40508", - "0x545Fbc2b724b3A1F6Ca0925C1CB6E9c1f41bA891", -]; - -// --- OKEX Addresses --- -const masterChefContractOkex = "0xDb457E7fA88C9818f6134afD673941fCE777F92F"; -const GLORY = "0xC3BdFEe6186849D5509601045af4Af567A001C94"; -const stakingContractOkex = [ - // Staking + Vesting - "0x76eB6494158eE62f99112b6316BA4cBAA8eF6ad4", - // Boardroom 1 - "0x659b4414Df05F2c53264887E1a06D202EB1B04DF", - // Boardroom 2 - "0xa9ae07c4f1e953912b15bac72e52b9c548e7dc47", - // Pool Staking 1 - "0x8c37cd30d64cc9360a9beae7c896e805cac3ef54", - // Pool Staking 2 - "0x94af3e9d4d82275a833dd367420d34ec3b4cc07b", - masterChefContractOkex, -]; - -const excludePool2Okex = [ - "0x04C3aF284BEd636dE5400ddB24d7698dB457CE34", - "0x5f6D4ADDC1D00e8e8565c07425C12c6E2DCbACe3", -]; - -const pool2StratsOkex = [ - "0xecEC29CC2bBD46AeBD7f84d18d3A360cdCb58170", - "0xfa065195657A07f9c9F0A0a5e16DcD0Dff4AF11a", -]; - -const calcTvl = async (balances, chain, block, masterchef, excludePool2) => { - const poolLength = ( - await sdk.api.abi.call({ - abi: abi.poolLength, - target: masterchef, - chain, - block, - }) - ).output; - - const toa = []; - const calls = []; - - for (let index = 0; index < poolLength; index++) calls.push({ params: index }) - - const { output: data } = await sdk.api.abi.multiCall({ - target: masterchef, - abi: abi.poolInfo, - calls, - chain, block, - }) - - data.forEach(i => toa.push([i.output.want, i.output.strat])) - - return sumTokens2({ balances, chain, block, tokensAndOwners: toa, resolveLP: true, blacklistedTokens: excludePool2 }) -}; - -const bscTvl = async (chainBlocks) => { - const balances = {}; - - - await calcTvl( - balances, - "bsc", - chainBlocks["bsc"], - masterChefContractBsc, - excludePool2Bsc - ); - - return balances; -}; - -const polygonTvl = async (chainBlocks) => { - const balances = {}; - - - await calcTvl( - balances, - "polygon", - chainBlocks["polygon"], - masterChefContractPolygon, - excludePool2Polygon - ); - - return balances; -}; - -const okexTvl = async (chainBlocks) => { - const balances = {}; - - await calcTvl( - balances, - "okexchain", - chainBlocks["okexchain"], - masterChefContractOkex, - excludePool2Okex - ); - - return balances; -}; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: bscTvl, - staking: stakings(stakingContractBsc, HERO), - pool2: pool2s(pool2StratsBsc, excludePool2Bsc), - }, - polygon: { - tvl: polygonTvl, - staking: stakings(stakingContractPolygon, HONOR), - pool2: pool2s(pool2StratsPolygon, excludePool2Polygon), - }, - okexchain: { - tvl: okexTvl, - staking: stakings(stakingContractOkex, GLORY), - pool2: pool2s(pool2StratsOkex, excludePool2Okex), - }, - methodology: - "We count liquidity on the Farms through MasterChef contracts", -}; diff --git a/projects/farmix/index.js b/projects/farmix/index.js deleted file mode 100644 index 4fa1c6baec3..00000000000 --- a/projects/farmix/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { sleep } = require('../helper/utils') -const { call } = require('../helper/chain/ton'); -const plimit = require("p-limit"); -const ADDRESSES = require('../helper/coreAssets.json'); - -const _rateLimited = plimit(1) -const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) -const getPoolJettonsRateLimited = rateLimited(getPoolCurrentJettons); - - -const POOLS = [ - 'EQC-jlX83DYZgSWRW5q_XuHLWWFQPp2xGmc8BCoeWckKpeHs', // native TON - 'EQD6gQSWCayHh0FvUnTXlpfizIWiq7UeE4gYvXGYtEhIYJ8q', // USDT - 'EQCE_6TevKEpj8OTz3rZt1D5bR6fENQbSN2bbW0jzxbWGGIo', // NOT - 'EQDuM7dM6mw0vAMurdY0hTNREenlZR1yCurqqo99q3o42nCi', // stTON - 'EQC2HxXptnU7vstREZOHyheGTafnFNSlVus5Iwd8Ik89Q7dD' // tsTON -] - -const UNDERLYING_JETTONS = [ - ADDRESSES.ton.TON, - ADDRESSES.ton.USDT, - ADDRESSES.ton.NOT, - ADDRESSES.ton.TON, - ADDRESSES.ton.TON, -] - - -async function getPoolCurrentJettons(api, poolAddr, underlyingJettonAddr, isBorrowed) { - const result = await call({ - target: poolAddr, - abi: 'get_expected_state', - params: [['num', 0]] - }); - await sleep(1000 * (2 * Math.random() + 3)); - const jettonCurrentAmount = isBorrowed ? result[6] : result[5]; - api.add(underlyingJettonAddr, jettonCurrentAmount); -} - -async function tvl(api) { - await Promise.all(POOLS.map(async (poolAddr, i) => { - return getPoolJettonsRateLimited(api, poolAddr, UNDERLYING_JETTONS[i]); - })) -} - -async function borrowed(api) { - await Promise.all(POOLS.map(async (poolAddr, i) => { - return getPoolJettonsRateLimited(api, poolAddr, UNDERLYING_JETTONS[i], true); - })) -} - -module.exports = { - methodology: 'TVL is counted only as current available pool liquidity. Borrowed jettons not included in the tvl', - timetravel: false, - ton: { - tvl, - borrowed, - } -} \ No newline at end of file diff --git a/projects/farmton.js b/projects/farmton.js deleted file mode 100644 index a89512408b8..00000000000 --- a/projects/farmton.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("./helper/masterchef") - -const token = "0x4243cCC302A98B577678d87A53c75593199315A3"; -const masterchef = "0x87F68799eB8fC579eDDC6381331882A3ee4e997e"; - -module.exports = { - ...masterChefExports(masterchef, "fantom", token, false) -}; // node test.js projects/farmton.js \ No newline at end of file diff --git a/projects/fastex/index.js b/projects/fastex/index.js deleted file mode 100644 index f5368417c6e..00000000000 --- a/projects/fastex/index.js +++ /dev/null @@ -1,83 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xc21a1d213f64fedea3415737cce2be37eb59be81', - '0x199BF7d50A4C00dae8395457A507613ae098fF60', - '0x5C133736f0762bD1Bb21455a10a167A8D2500d1F', - '0xe851d077836Cc48E4a09B0B4ed984AcBdE358b57', - '0x2A747aa880138042de556195262f01779d4CFc91', - '0xb25FfAC8F2dd4696a02c3fE312E1E9c907aF74d5', - ], - }, - bitcoin: { - owners: bitcoinAddressBook.fastex - }, - tron: { - owners: [ - 'TPj7TCJ9rxdd243yQ3tc7iJzqcEYtupB4v', - 'TXW8f2umgDJhVarwosuGW1d8Wr4FaPpAEb', - 'TDwRF28KJQhcGV46yRDFXgFdcLbztjxVbs' - ] - }, - ripple: { - owners: [ - 'rNxBjsC1FsEga35GThyb1KXAyS3kDx8gyv', - 'rMnR4pWoDW2kUSZ7hxnpy2it9ojEdQwc6s', - ] - }, - cardano: { - owners: [ - 'addr1q8yrpu5fw3qw62fjezu72pap8munej98zpgmxgrye6rw6nkc65axaph2qhcn9f08edaujlju8uflqpra9sqyz96w7rpqmn48ww', - ] - }, - arbitrum: { - owners: [ - '0xc21A1D213f64FeDEA3415737CCe2BE37Eb59be81', - ] - }, - aptos: { - owners: [ - '0x41a7160155e2d946918fe7969e83f1f70840cf808a7f6e15a18bf6505453ec73', - ], - }, - optimism:{ - owners: [ - '0xc21A1D213f64FeDEA3415737CCe2BE37Eb59be81', - ] - }, - solana: { - owners: [ - 'BRvrp5WQkVuda1BAxfaBTpbBW4b73GhNp7AW7NcBs596', - ] - }, - avax:{ - owners:[ - '0xc21A1D213f64FeDEA3415737CCe2BE37Eb59be81', - ] - }, - bsc: { - owners: [ - '0x85E1De87a7575C6581F7930F857a3813B66A14d8', - ], - }, - polkadot:{ - owners: [ - '16iUCscbCHM5mkszPaogRJioxHRbew8YB34nWqsoMkaX1XDZ', - ] - }, - ftn: { - owners: [ - '0xc21A1D213f64FeDEA3415737CCe2BE37Eb59be81', - ] - }, - litecoin: { - owners: [ - 'ltc1qy4400xa5r72lsysd7xvjks08r5lrzr5fu0udx7' - ] - }, -} - -module.exports = cexExports(config) diff --git a/projects/fastyield/index.js b/projects/fastyield/index.js deleted file mode 100644 index 5f51bbd3191..00000000000 --- a/projects/fastyield/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { stakings, } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { yieldHelper } = require("../helper/yieldHelper"); -const { mergeExports } = require("../helper/utils"); - -const NATIVE_CONTRACT = "0xe5AFC91CEA5df74748A2b07e1d48E4e01aacF52B"; -const FAST = '0x0299461ee055bbb6de11fafe5a0636a0c3bd5e8d' - -const chain = 'fantom' -const fantomTvl = yieldHelper({ - chain, - project: 'fastyield', - nativeToken: FAST, - masterchef: NATIVE_CONTRACT, -}) - -module.exports = mergeExports([fantomTvl, { - fantom: { - staking: stakings(['0x1Fb33cB822bD554890242F4765505FA6340B1Fb9'], FAST, chain), - pool2: sumTokensExport({ chain, owners: ['0xc0c84eFeB8290BA5Ac6bed682Cfdf2896cf26566'], tokens: ['0xe836997c9f3665986580fe98f79999fa876fc271'], resolveLP: true, }) - } -}]) diff --git a/projects/fatex/index.js b/projects/fatex/index.js deleted file mode 100644 index 6408047a842..00000000000 --- a/projects/fatex/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { stakingUnknownPricedLP } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - - -const FACTORY_CONTRACT = "0x937e0c67d21Df99eaEa0e6a1055A5b783291DC8f"; -const FATE_TOKEN = "0x4853365bC81f8270D902076892e13F27c27e7266"; -const FATE_USDC_PAIR_TOKEN = "0x69c894Dce6FA2E3b89D3111d29167F0484AC0b2A"; -const X_FATE_TOKEN = "0x56BE76031A4614370fA1f188e01e18a1CF16E642"; - -module.exports = { - polygon: { - tvl: getUniTVL({ - factory: FACTORY_CONTRACT, - useDefaultCoreAssets: true, - }), - staking: stakingUnknownPricedLP(X_FATE_TOKEN, FATE_TOKEN, 'polygon', FATE_USDC_PAIR_TOKEN) - }, -} diff --git a/projects/fatfire/index.js b/projects/fatfire/index.js deleted file mode 100644 index c6dc4b80830..00000000000 --- a/projects/fatfire/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const chef = "0xf908ed281f008eE3FcEaCfF2FdfbC2dADf213811" -const fatfire = "0xa5ee311609665Eaccdbef3BE07e1223D9dBe51de" - -module.exports = { - ...masterChefExports(chef, "fantom", fatfire, false), -} // node test.js projects/fatfire/index.js \ No newline at end of file diff --git a/projects/fathom-CDP/index.js b/projects/fathom-CDP/index.js deleted file mode 100644 index 3c762b4e483..00000000000 --- a/projects/fathom-CDP/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const Vaults = [ - '0x9B4aCeFE2dB986Ca080Dc01d137e6566dBE0aA3a', // CDP Vault CollateralPoolId "0x5844430000000000000000000000000000000000000000000000000000000000" XDC - '0x14F2d15cdB7255A7c96973Ce54a269Ac1988cfcf' // CDP Vault CollateralPoolId "0x43474f0000000000000000000000000000000000000000000000000000000000" CGO -]; -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - xdc: { tvl: sumTokensExport({ owners: Vaults, tokens: [ADDRESSES.xdc.WXDC, '0x8f9920283470f52128bf11b0c14e798be704fd15']}) }, -} diff --git a/projects/fathom-dex/index.js b/projects/fathom-dex/index.js deleted file mode 100644 index 921bfb37c6e..00000000000 --- a/projects/fathom-dex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - xdc: { - tvl: getUniTVL({ factory: "0x9fAb572F75008A42c6aF80b36Ab20C76a38ABc4B", useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/fathom-lending/index.js b/projects/fathom-lending/index.js deleted file mode 100644 index 92bf5e6ae12..00000000000 --- a/projects/fathom-lending/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const PoolAddressesProviderRegistry = "0xDAb3B99eb3569466750c436d6F4c99d57850Cc89" -const { aaveExports } = require('../helper/aave') - -module.exports = { - xdc: aaveExports(undefined, PoolAddressesProviderRegistry, undefined, ['0x7fa488a5C88E9E35B0B86127Ec76B0c1F0933191'], { - v3: true, abis: { - getAllATokens: "function getAllFmTokens() view returns (tuple(string symbol, address tokenAddress)[])", - } - }), -}; \ No newline at end of file diff --git a/projects/fathom-vault/index.js b/projects/fathom-vault/index.js deleted file mode 100644 index 526925be5b2..00000000000 --- a/projects/fathom-vault/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const FathomVaultFactoryAddress = "0x0c6e3fd64D5f33eac0DCCDd887A8c7512bCDB7D6"; -const FXD = ADDRESSES.xdc.FXD; - -async function tvl(api) { - const vaults = await api.call({ target: FathomVaultFactoryAddress, abi: "address[]:getVaults", }); - const queue = (await api.multiCall({ abi: "address[]:getDefaultQueue", calls: vaults })).flat() - queue.push(...vaults) - - return api.sumTokens({ owners: queue, tokens: [FXD] }) -} - -module.exports = { - xdc: { tvl, }, -} diff --git a/projects/fbtc/index.js b/projects/fbtc/index.js deleted file mode 100644 index 2a2bb3173ea..00000000000 --- a/projects/fbtc/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens } = require('../helper/chain/bitcoin') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -async function tvl() { - return sumTokens({ owners: await bitcoinAddressBook.fbtc() }) -} - -module.exports = { - timetravel: false, - bitcoin: { tvl } -} diff --git a/projects/fcondex/index.js b/projects/fcondex/index.js deleted file mode 100644 index 73c66369fff..00000000000 --- a/projects/fcondex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - mantle: { - tvl: getUniTVL({ - factory: "0x3eF942017d51BA257c4B61BE2f8f641209C8b341", - useDefaultCoreAssets: true, - fetchBalanes: true, - }), - }, -}; diff --git a/projects/fdoge/index.js b/projects/fdoge/index.js deleted file mode 100644 index 88bb0528be0..00000000000 --- a/projects/fdoge/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const token = "0xEb0a2D1b1a33D95204af5d00f65FD9e349419878"; -const shares = "0xBda29437C8e5dC8BF6a2305D442A3742da7FB033"; -const masonry = "0xDd1Fa691D2fd01FE9206b15350462b712B4AE371"; -const rewardPool = "0x5331bE243A6AA35253b8bAe3E12157C6F5B61aDE"; -const pool2LPs = [ - "0xd0EE9183F8717819c071bD3BDB77df37B7D4d16B", // FDOGE-WFTM spLP - "0xbc9eF8F482ACf57CDa927f6Af39f5c513593aDFb", // SDOGE-WFTM spLP -]; - -module.exports = { - deadFrom: 1648765747, - hallmarks: [ - [1645488000, "Rug Pull"] - ], - misrepresentedTokens: true, - ...tombTvl(token, shares, rewardPool, masonry, pool2LPs, "fantom", undefined, false, pool2LPs[1]) -} diff --git a/projects/fedex/index.js b/projects/fedex/index.js deleted file mode 100644 index f66baf6dcb7..00000000000 --- a/projects/fedex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - op_bnb: { - tvl: getUniTVL({ - factory: "0xfb3AD00B272449AF3ea44e5C6ADbdfaB1655A046", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/feederfinance/index.js b/projects/feederfinance/index.js deleted file mode 100644 index 7a760cf3eff..00000000000 --- a/projects/feederfinance/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { yieldHelper } = require('../helper/yieldHelper') -const { pool2 } = require('../helper/pool2') -const { staking } = require('../helper/staking') - -const abis = { - poolLength: "uint256:vaultsLength", - poolInfo: "function vaultInfo(uint256) view returns (address vault, uint256 blockNumber, uint256 createdAt)", - wantLockedTotal: "uint256:tokenBalance", - want: "address:want", -} - -const getPoolIds = i => i.vault - -async function getTokens({ api, poolInfos, }) { - const poolIds = poolInfos.map(getPoolIds) - return api.multiCall({ - abi: abis.want, - calls: poolIds, - }) -} - -module.exports = yieldHelper({ - project: 'feeder-finance', - chain: 'fantom', - masterchef: '0x9962a5d77159ab474a3fce3d0534be7dde143d26', - nativeToken: '0x5d5530eb3147152fe78d5c4bfeede054c8d1442a', - abis, - poolFilter: i => i, - getTokens, - getPoolIds, -}) - -module.exports = { - bsc: { - tvl:() => ({}), - pool2: pool2('0xd90A8878a2277879600AA2cba0CADC7E1a11354D', '0xcF3ED0670C671034C58F6b771757a8529238CA3a'), - staking: staking('0xeb9902a19fa1286c8832bf44e9b18e89f682f614', '0x67d66e8ec1fd25d98b3ccd3b19b7dc4b4b7fc493'), - }, - fantom: module.exports.fantom -}; diff --git a/projects/fees-wtf/index.js b/projects/fees-wtf/index.js deleted file mode 100644 index 4803eb2be8e..00000000000 --- a/projects/fees-wtf/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const WTF = "0xA68Dd8cB83097765263AdAD881Af6eeD479c4a33"; -const stakingContract = "0x0bf0e1678eaa36cd2d705cab3ce8020de443056c"; -const WTF_ETH_univ2 = '0xab293dce330b92aa52bc2a7cd3816edaa75f890b' -const WTF_ETH_univ2_staking = '0xf0c51dc9a85d00c1c1bebfbb2d1465a39f4702d8' - -module.exports = { - methodology: `TVL for fees.wtf consists of the staking of WTF and pool2 of uni-v2 WTF-WETH.`, - ethereum:{ - tvl: () => ({}), - staking: staking(stakingContract, WTF), - pool2: pool2(WTF_ETH_univ2_staking, WTF_ETH_univ2), - } -} \ No newline at end of file diff --git a/projects/fegex/index.js b/projects/fegex/index.js deleted file mode 100644 index 172bb6d37a4..00000000000 --- a/projects/fegex/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { staking } = require("../helper/staking"); - -const stakingContractETH = "0x4a9D6b95459eb9532B7E4d82Ca214a3b20fa2358"; -const FEG_ETH = "0x389999216860ab8e0175387a0c90e5c52522c945"; - -const stakingContractBSC = "0xF8303c3ac316b82bCbB34649e24616AA9ED9E5F4"; -const FEG_BSC = "0xacfc95585d80ab62f67a14c566c1b7a49fe91167"; - -module.exports = { - timetravel:true, - misrepresentedTokens: true, - ethereum: { - staking: staking(stakingContractETH, FEG_ETH) - }, - bsc: { - staking: staking(stakingContractBSC, FEG_BSC), - tvl: async ()=>({}), - }, - methodology: - "We count liquidity of FEG token staked on ETHEREUM and BSC chains through their Staking Contracts", -}; diff --git a/projects/fei/index.js b/projects/fei/index.js deleted file mode 100644 index 7eb9e75f94f..00000000000 --- a/projects/fei/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs'); - -async function tvl(api) { - const owners = [ - '0xBFfB152b9392e38CdDc275D818a3Db7FE364596b', // GenesisGroup.sol [OLD] - '0xa08A721dFB595753FFf335636674D76C455B275C', // EthReserveStabilizer.sol [OLD] - '0x17305f0e18318994a57b494078CAC866A857F7b6', // EthReserveStabilizer.sol - '0xe1578B4a32Eaefcd563a9E6d0dc02a4213f673B7', // EthBondingCurve.sol [OLD] - '0xB783c0E21763bEf9F2d04E6499abFbe23AdB7e1F', // EthBondingCurve.sol - '0xDa079A280FC3e33Eb11A78708B369D5Ca2da54fE', // EthPCVDripper.sol [OLD] - - // Holders of FEI-ETH Uni V2 LP - '0x15958381E9E6dc98bD49655e36f524D2203a28bD', // EthUniswapPCVDeposit.sol - '0x5d6446880fcd004c851ea8920a628c70ca101117', // EthUniswapPCVDepost.sol [OLD] - '0x9b0C6299D08fe823f2C0598d97A1141507e4ad86', // EthUniswapPCVDeposit.sol [OLD] - - // Holders of stETH - '0xAc38Ee05C0204A1E119C625d0a560D6731478880', // EthLidoPCVDeposit.sol - - // Holders of aWETH - '0x5B86887e171bAE0C2C826e87E34Df8D558C079B9', // AavePCVDeposit.sol - - // Holders of cETH - '0x4fCB1435fD42CE7ce7Af3cB2e98289F79d2962b3', // EthCompoundPCVDeposit.sol - - // Holders of cDAI - '0xe0f73b8d76D2Ad33492F995af218b03564b8Ce20', // DaiCompoundPCVDeposit.sol - - // Holders of INDEX - '0x0ee81df08B20e4f9E0F534e50da437D24491c4ee', // IndexSnapshotDelegator.sol - - // Holders of aRAI - '0xd2174d78637a40448112aa6B30F9B19e6CF9d1F9', // AaveRaiPCVDeposit.sol - - // Holders of RAI in fuse pool 9 - '0x9aAdFfe00eAe6d8e59bB4F7787C6b99388A6960D', // RaiFusePcvDeposit.sol - - // Holders of FEI-DPI Sushi LP - '0x902199755219A9f8209862d09F1891cfb34F59a3', // DpiSushiPcvDeposit.sol - - // Holders of DPI in Fuse pool 19 - '0x3dD3d945C4253bAc5B4Cc326a001B7d3f9C4DD66', // DpiFusePcvDeposit.sol - ] - const tokens = [ - '0x94b0a3d511b6ecdb17ebf877278ab030acb0a878', // FEI-ETH Uni V2 LP (NOTE: this counts both FEI and ETH, but only the FEI doesn't count as PCV) - ADDRESSES.ethereum.STETH, // stETH - '0x030ba81f1c18d280636f32af80b9aad02cf0854e', // aWETH - '0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5', // cETH - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643', // cDAI - '0x0954906da0Bf32d5479e25f46056d22f08464cab', // INDEX - '0xc9BC48c72154ef3e5425641a3c747242112a46AF', // aRAI - '0x752F119bD4Ee2342CE35E2351648d21962c7CAfE', // RAI in Fuse pool 9 - '0x8775aE5e83BC5D926b6277579c2B0d40c7D9b528', // FEI-DPI Sushi LP (NOTE: this counts both the FEI and the DPI, but only the FEI doesn't count as PCV) - '0xF06f65a6b7D2c401FcB8B3273d036D21Fe2a5963', // DPI in Fuse pool 19 - nullAddress - ] - return sumTokens2({ api, owners, tokens, }) -} - -module.exports = { - ethereum: { tvl }, -}; -module.exports.hallmarks = [ - [1651325520, "Exploit $80M FEI"], -] \ No newline at end of file diff --git a/projects/felix-usdhl/index.js b/projects/felix-usdhl/index.js deleted file mode 100644 index 24363097034..00000000000 --- a/projects/felix-usdhl/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - ethereum: { - tvl: staking('0x36f586A30502AE3afb555b8aA4dCc05d233c2ecE', '0x866a2bf4e572cbcf37d5071a7a58503bfb36be1b') - - } -} \ No newline at end of file diff --git a/projects/felix-vanilla/index.js b/projects/felix-vanilla/index.js deleted file mode 100644 index 6eee2fb3a11..00000000000 --- a/projects/felix-vanilla/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const morphoBlueAdapter = require("../morpho-blue/index.js"); - -const tvl = async (api) => { - await morphoBlueAdapter.hyperliquid.tvl(api); - - const felixVaultAddresses = [ - "0x835febf893c6dddee5cf762b0f8e31c5b06938ab", - "0xfc5126377f0efc0041c0969ef9ba903ce67d151e", - "0x9c59a9389d8f72de2cdaf1126f36ea4790e2275e", - "0x2900ABd73631b2f60747e687095537B673c06A76", - "0x9896a8605763106e57A51aa0a97Fe8099E806bb3", - "0x66c71204B70aE27BE6dC3eb41F9aF5868E68fDb6", - ]; - - const assets = await api.multiCall({ - abi: "function asset() view returns (address)", - calls: felixVaultAddresses, - }); - - const totalAssets = await api.multiCall({ - abi: "function totalAssets() view returns (uint256)", - calls: felixVaultAddresses, - }); - - assets.forEach((asset, i) => { - if (asset && totalAssets[i]) { - api.add(asset, totalAssets[i] * -1); - } - }); -}; - -module.exports = { - methodology: - "Felix Vanilla represents direct lending markets TVL calculated as Total Morpho Blue TVL minus Felix Vaults TVL. This captures the portion of Morpho Blue markets accessed through Felix's direct lending interface rather than through managed vaults.", - doublecounted: true, - hyperliquid: { - tvl, - }, -}; diff --git a/projects/felix-vaults/index.js b/projects/felix-vaults/index.js deleted file mode 100644 index 3275a81b8e2..00000000000 --- a/projects/felix-vaults/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getMorphoVaultTvl } = require("../helper/morpoho"); - -const hyperliquidConfig = { - governor: "0x2157f54f7a745c772e686AA691Fa590B49171eC9", -} - -module.exports = { - doublecounted: true, - hyperliquid: { tvl: getMorphoVaultTvl(hyperliquidConfig.governor, { - vaults: [ - '0x835febf893c6dddee5cf762b0f8e31c5b06938ab', - '0xfc5126377f0efc0041c0969ef9ba903ce67d151e', - '0x9c59a9389d8f72de2cdaf1126f36ea4790e2275e', - '0x2900ABd73631b2f60747e687095537B673c06A76', - '0x9896a8605763106e57A51aa0a97Fe8099E806bb3', - '0x66c71204B70aE27BE6dC3eb41F9aF5868E68fDb6' - ] - }) }, -} diff --git a/projects/felix/index.js b/projects/felix/index.js deleted file mode 100644 index 2d4e9de3a23..00000000000 --- a/projects/felix/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getLiquityV2Tvl } = require('../helper/liquity') - -module.exports = { - hyperliquid: { - tvl: getLiquityV2Tvl('0x9De1e57049c475736289Cb006212F3E1DCe4711B') - }, -} \ No newline at end of file diff --git a/projects/fence/index.js b/projects/fence/index.js deleted file mode 100644 index 98def749c85..00000000000 --- a/projects/fence/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Fence.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0xF92971B4D9e6257CF562400ed81d2986F28a8c26', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/fenix-finance/index.js b/projects/fenix-finance/index.js deleted file mode 100644 index 2ef4c35f169..00000000000 --- a/projects/fenix-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - blast: { - factory: "0x7a44CD060afC1B6F4c80A2B9b37f4473E74E25Df", - fromBlock: 1586090, - isAlgebra: true, - }, -}); diff --git a/projects/fenix-v2/index.js b/projects/fenix-v2/index.js deleted file mode 100644 index 25e428c98eb..00000000000 --- a/projects/fenix-v2/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - blast: { - tvl: getUniTVL({ - factory: '0xa19c51d91891d3df7c13ed22a2f89d328a82950f', - useDefaultCoreAssets: true, - hasStablePools: true - }) - }, -}; \ No newline at end of file diff --git a/projects/fenrirfinance/index.js b/projects/fenrirfinance/index.js deleted file mode 100644 index fe038d5f562..00000000000 --- a/projects/fenrirfinance/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports.bsc = compoundExports2({ comptroller: '0x56b4B49f31517be8DacC2ED471BCc20508A0e29D' }) diff --git a/projects/ferdyflip/index.js b/projects/ferdyflip/index.js deleted file mode 100644 index 4cd1250d46a..00000000000 --- a/projects/ferdyflip/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -// https://docs.ferdyflip.xyz/developers/contracts/platform -const config = { - avax: { - tokens: [ADDRESSES.avax.WAVAX, nullAddress], owners: ['0x20AfbaC35B333dA4fE7230CC60946F88ee87aAA3', '0xe0a69f4d29c891b9c5c7368b591ed3109bcb80f7'], - }, - base: { - tokens: [ADDRESSES.base.WETH, nullAddress], owners: ['0x3b6014e4b38791444a352D687022D6d6d79Eb99c'], - }, - mantle: { - tokens: [ADDRESSES.mantle.WMNT, nullAddress], owners: ['0x559036D9466C93d8Ca3c2232626548e62ceBC07c'], - }, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - start: '2023-02-09', //Fri Feb 10 2023 - tvl: sumTokensExport(config[chain]), - }; -}); diff --git a/projects/ferro/index.js b/projects/ferro/index.js deleted file mode 100644 index 2b99bf4c3df..00000000000 --- a/projects/ferro/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const SWAP_3FER_ADDR = '0xe8d13664a42B338F009812Fa5A75199A865dA5cD'; -const SWAP_2FER_ADDR = '0xa34C0fE36541fB085677c36B4ff0CCF5fa2B32d6'; -const SWAP_LCRO_WCRO_ADDRESSES = '0x1578C5CF4f8f6064deb167d1eeAD15dF43185afa'; - -const tokens = { - // DAI - "0xF2001B145b43032AAF5Ee2884e456CCd805F677D": [ - SWAP_3FER_ADDR, - ], - // USDC - [ADDRESSES.cronos.USDC]: [ - SWAP_3FER_ADDR, - SWAP_2FER_ADDR, - ], - // USDT - [ADDRESSES.cronos.USDT]: [ - SWAP_3FER_ADDR, - SWAP_2FER_ADDR, - ], - // LCRO - "0x9fae23a2700feecd5b93e43fdbc03c76aa7c08a6": [ - SWAP_LCRO_WCRO_ADDRESSES, - ], - // WCRO - [ADDRESSES.cronos.WCRO_1]: [ - SWAP_LCRO_WCRO_ADDRESSES, - ], - // LATOM-ATOM - [ADDRESSES.cronos.ATOM]: ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], - '0xac974ee7fc5d083112c809ccb3fce4a4f385750d': ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], - '0xD42E078ceA2bE8D03cd9dFEcC1f0d28915Edea78': ['0x6A41732eaDBE15e9c9FcA2cfF1299c6321AA104B'], -}; - -async function tvl(api) { - const tokensAndOwners = Object.entries(tokens).map(([token, owners]) => owners.map(owner => [token, owner])).flat() - return sumTokens2({ api, tokensAndOwners }) -} - -module.exports = { - methodology: 'sum of ferro stablecoin pool contracts balance', - start: '2022-04-29', - cronos: { - tvl, - } -} \ No newline at end of file diff --git a/projects/ferrum/index.js b/projects/ferrum/index.js deleted file mode 100644 index 706710b1376..00000000000 --- a/projects/ferrum/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const stakingContracts = [ - //Staking v1.0 - "0x71f3e1a61c14d6f4b6d2a72a13fc6fe13d8a86a9", - "0x16BBCf93a0f4bB27a15eE8937B58928D6158eBe9", - "0x41ea5097f3ea49c00ccfb35e74763d29766daddf", - //Staking v2.0 - "0x45972d73d35a315c0d8357846303209991b84ccb", - "0xeee410b42bc3a71271f191579858cf7e3cbb2e70", - "0xbD5c104AD40EF137D6810E6CCC0b2b7185410374", - "0x143D7eE3Fab601264248C2C3F45bE430451e353f", - //Staking v3.0 - "0x4eccea6360a4fc63ab4b37d4895bcc64e40cd9c4", - "0xa9ac39abc7fcfac10321ceba05050f099afb8042", - "0x840f8f2978521cafa659f390532de235633a15ec", - "0x1f4bccd90c65135e17287058b667c0a004f443cd", - //Staking v3.1 - "0x08cd09c8e42edffefc56c7fe33c547701fccb5c9", - "0x34fc4e1b8456ea8340902f3d7168c536db5b977d", - //Staking iron mountain - "0x96add70053eac0534899c4c51e818add70d96f7a", - "0x3844a75a2d81f7da0af24ef996b17ce0a18de361", - "0x2a300082aafe41509e3465447c6a3ac08556e5d7", -]; - -const FRM = "0xE5CAeF4Af8780E59Df925470b050Fb23C43CA68C"; - -const stakingPoolContract = "0x11E075725d061DeB6981b19C4ea30983B4E2e070"; -const FRM_DFYN_LP = "0x0C77b6682b6fFfFe9599B41E39eBa1c1bCf923D8"; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(stakingContracts, FRM), - tvl: (async) => ({}), - }, - polygon: { - pool2: pool2(stakingPoolContract, FRM_DFYN_LP), - }, - methodology: "Counts liquidty on the staking and pool2 only", -}; diff --git a/projects/fiamma/index.js b/projects/fiamma/index.js deleted file mode 100644 index cb2d2780131..00000000000 --- a/projects/fiamma/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const axios = require("axios") - -const btc_locked = async (api) => { - const response = (await axios.post('https://bridge-api.fiammachain.io', { "jsonrpc": "2.0", "id": 1, "method": "frontend_queryBridgeTVL", "params": {} })).data - const locked = response.result.total_tvl / 1e8 - api.addCGToken('bitcoin', locked) -} - -module.exports = { - methodology: "Fiamma BTC TVL represents the total amount of Bitcoin bridged across all chains through the Fiamma Bridge, a trust‑minimized bridge built on the BitVM2 protocol.", - bitcoin: { - tvl: btc_locked, - } - }; \ No newline at end of file diff --git a/projects/fiatdao/abi.json b/projects/fiatdao/abi.json deleted file mode 100644 index c5bb61c36ae..00000000000 --- a/projects/fiatdao/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "underlierToken": "address:underlierToken", - "underlierScale": "uint256:underlierScale", - "token": "address:token", - "tokenScale": "uint256:tokenScale", - "fairPrice": "function fairPrice(uint256, bool net, bool face) view returns (uint256)", - "balanceOf": "function balanceOf(address account, uint256 id) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/fiatdao/index.js b/projects/fiatdao/index.js deleted file mode 100644 index d50accceba5..00000000000 --- a/projects/fiatdao/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json') - -const { sumTokens2, } = require("../helper/unwrapLPs") -const { getConfig } = require('../helper/cache') - - -const STAKING_CONTRACT = "0xe98ae8cD25CDC06562c29231Db339d17D02Fd486" -const STAKING_NFT = "0xE9F9936a639809e766685a436511eac3Fb1C85bC" -const RGT = "0xD291E7a03283640FDc51b121aC401383A46cC623" -const YFI = ADDRESSES.ethereum.YFI -const MKR = ADDRESSES.ethereum.MKR -const BOND = "0x0391D2021f89DC339F60Fff84546EA23E337750f" -const UMA = "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828" -const WSOHM = "0xca76543cf381ebbb277be79574059e32108e3e65" -const WSOHM_FDT_SLP = "0x2e30e758b3950dd9afed2e21f5ab82156fbdbbba" -const FDT_GOHM = "0x75b02b9889536B617d57D08c1Ccb929c523945C1" - -// Protocol TVL -async function tvl(api) { - - // Launch Ceremony - await sumTokens2({ api, owners: [STAKING_CONTRACT, STAKING_NFT], tokens: [RGT, YFI, MKR, BOND, UMA, WSOHM_FDT_SLP, FDT_GOHM,], resolveLP: true }) - const wsOHMBal = await api.call({ abi: 'erc20:balanceOf', target: WSOHM, params: STAKING_CONTRACT }) - api.add('0x0ab87046fbb341d058f17cbc4c1133f25a20a52f', wsOHMBal) - - const metadata = (await getConfig('fiatdao', 'https://raw.githubusercontent.com/fiatdao/changelog/main/metadata/metadata-mainnet.json')) - const allVaults = Object.keys(metadata) - const tokensAll = await api.multiCall({ abi: abi.token, calls: allVaults, }) - const tokens = [] - const vaults = [] - - tokensAll.forEach((output, i) => { - if (output !== ADDRESSES.null) { - vaults.push(allVaults[i]) - tokens.push(output) - } - }) - - const tokenScales = await api.multiCall({ abi: abi.tokenScale, calls: vaults, }) - const underliers = await api.multiCall({ abi: abi.underlierToken, calls: vaults, }) - const underlierScales = await api.multiCall({ abi: abi.underlierScale, calls: vaults, }) - - const erc20Metadata = [] - const erc1155Metadata = [] - - underliers.forEach((token, i) => { - const underlier = token - const vault = vaults[i] - const scale = underlierScales[i] / (tokenScales[i] * 1e18) - metadata[vault].tokenIds.forEach(id => { - if (id === '0') { - erc20Metadata.push({ vault, scale, underlier, tokenCall: { target: tokens[i], params: vault }, priceCall: { target: vault, params: [0, false, false] } }) - return; - } - erc1155Metadata.push({ vault, scale, underlier, tokenCall: { target: tokens[i], params: [vault, id] }, priceCall: { target: vault, params: [id, false, false] } }) - }) - }) - - const erc20Balances = await api.multiCall({ abi: 'erc20:balanceOf', calls: erc20Metadata.map(i => i.tokenCall), }) - const erc20Prices = await api.multiCall({ abi: abi.fairPrice, calls: erc20Metadata.map(i => i.priceCall), }) - const erc1155Balances = await api.multiCall({ abi: abi.balanceOf, calls: erc1155Metadata.map(i => i.tokenCall), permitFailure: true}) - const erc1155Prices = await api.multiCall({ abi: abi.fairPrice, calls: erc1155Metadata.map(i => i.priceCall), permitFailure: true }) - - erc20Balances.forEach((output, i) => { - api.add(erc20Metadata[i].underlier, erc20Metadata[i].scale * output * erc20Prices[i]) - }) - - erc1155Balances.forEach((output, i) => { - if (!output || !erc1155Prices[i]) { - return; - } - api.add(erc1155Metadata[i].underlier, erc1155Metadata[i].scale * output * erc1155Prices[i]) - }) - -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL includes fair value of collateral backing outstanding $FIAT and the initial FDT Jubilee event', - ethereum: { tvl }, - hallmarks: [ - [1635959960, "FDT Jubilee starts"], - [1639380013, "FDT Jubilee ends"], - [1649604096, "Protocol Launch"] - ] -} diff --git a/projects/fibonacci-dex/index.js b/projects/fibonacci-dex/index.js deleted file mode 100644 index a98cb93c906..00000000000 --- a/projects/fibonacci-dex/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - formnetwork: { - factory: "0xbd799BE84dd34B1242e1f7736A6441d6b1540e8b", - fromBlock: 1, - isAlgebra: true, - }, -}) \ No newline at end of file diff --git a/projects/figure-markets-democratized-prime/index.js b/projects/figure-markets-democratized-prime/index.js deleted file mode 100644 index ef516b0c68b..00000000000 --- a/projects/figure-markets-democratized-prime/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { queryV1Beta1 } = require('../helper/chain/cosmos.js'); - -// node test.js projects/figure-markets-democratized-prime/index.js - -// Contracts holding the pool collateral -const demoPrimePools = [ - "scope1qp4lyqj9xkp570uj9l0sf6vhh46q599mcf", - "scope1qpjqqp93nfn537acqgl6aauhj6ws8xk5ug", - "scope1qq4ghl8h8dv5ugdyty66acmsc0ksld5llq", - "scope1qqq6xkv4g9y50649l0r96us54aasd4ur5l", - "scope1qz6rjfu4ympyxs5wd2nzpa3z0t7s0tw3ud", - "scope1qz8xvt4mckfyssyln509g5ck3ejs7aq9yc", - "scope1qzh44upjuvzyh25usrsl6w3rv9yqxs9w6n", -] - -const getBalances = async () => { - const balances = {} - await Promise.all(demoPrimePools.map(async pool => { - const poolHash = (await queryV1Beta1({ - chain: 'provenance', - url: `metadata/v1/scope/${pool}/record/pool-details` - })).records[0]?.record?.outputs[0]?.hash - if (poolHash) { - const poolInfo = JSON.parse(poolHash) - let asset = poolInfo.leveragePool.asset - let collateral = poolInfo.currentPeriod.totalOfferAmount - poolInfo.currentPeriod.totalLoanAmount - let borrowed = poolInfo.currentPeriod.totalLoanAmount - if (asset === 'YLDS') { - collateral = poolInfo.collateralValue - } - balances[asset] = { - collateral, - borrowed - } - } - })) - return balances -} - -const tvl = async (api) => { - const balances = await getBalances() - Object.keys(balances).map(token => api.add(token, balances[token].collateral)) - return sumTokens2({ api }) -} - -const borrowed = async (api) => { - const balances = (await getBalances()) - Object.keys(balances).map(token => {api.add(token, balances[token].borrowed)}) - return sumTokens2({ api }) -} - -module.exports = { - timetravel: false, - doublecounted: true, - misrepresentedTokens: true, - methodology: 'TVL is calculated based on the total amount of collateral pledged to all lending pools.', - provenance: { - tvl, - borrowed, - } -} diff --git a/projects/figure-markets/index.js b/projects/figure-markets/index.js deleted file mode 100644 index df857d89110..00000000000 --- a/projects/figure-markets/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { queryV1Beta1 } = require('../helper/chain/cosmos.js'); - -const paginationLimit = 1000; - -const figureMarketsExchangeID = '1' - -const lockedTokensQuery = (nextKey) => - `exchange/v1/market/${figureMarketsExchangeID}/commitments?pagination.limit=${ - paginationLimit - }${ - nextKey ? `&pagination.key=${nextKey}` : "" - }`; - -const getLockedTokens = async (key, api) => { - const nextTokens = await queryV1Beta1({ - chain: 'provenance', - url: lockedTokensQuery(key) - }) - nextTokens.commitments.map((c) => - c.amount.map((a) => { - api.add(a.denom, a.amount) - }) - ); - let nextKey = nextTokens.pagination.next_key; - if (nextKey) { - nextKey = nextKey.replace(/\+/g, "-").replace(/\//g, "_"); - return getLockedTokens(nextKey, api); - } -}; - -// Contracts holding the pool collateral -const demoPrimePools = [ - "scope1qp4lyqj9xkp570uj9l0sf6vhh46q599mcf", - "scope1qpjqqp93nfn537acqgl6aauhj6ws8xk5ug", - "scope1qq4ghl8h8dv5ugdyty66acmsc0ksld5llq", - "scope1qqq6xkv4g9y50649l0r96us54aasd4ur5l", - "scope1qz6rjfu4ympyxs5wd2nzpa3z0t7s0tw3ud", - "scope1qz8xvt4mckfyssyln509g5ck3ejs7aq9yc", - "scope1qzh44upjuvzyh25usrsl6w3rv9yqxs9w6n", -] - -const collateralizedAssets = 'pm.sale.pool.3dxq3fk9llvhrqqwhodiap' - -const getPoolsCollateralValue = async (api) => { - const collateralTotal = (await Promise.all(demoPrimePools.map(async pool => { - const poolHash = (await queryV1Beta1({ - chain: 'provenance', - url: `metadata/v1/scope/${pool}/record/pool-details` - })).records[0]?.record?.outputs[0]?.hash - if (poolHash) { - const poolInfo = JSON.parse(poolHash) - if (poolInfo.leveragePool.collateralAssets.length > 0 && poolInfo.leveragePool.collateralAssets[0] === collateralizedAssets) { - return poolInfo.collateralValue - } - } - }))).reduce((acc, cur) => acc += cur || 0, 0) - api.add(collateralizedAssets, collateralTotal) -} - -const tvl = async (api) => { - await getLockedTokens(null, api) - await getPoolsCollateralValue(api) - return sumTokens2({ api }) -} - -module.exports = { - timetravel: true, - misrepresentedTokens: true, - methodology: "Figure Markets TVL is the sum of all tokens locked within the Figure Markets protocol contracts.", - provenance: { tvl }, -} \ No newline at end of file diff --git a/projects/filament-v2/index.js b/projects/filament-v2/index.js deleted file mode 100644 index 738c103000a..00000000000 --- a/projects/filament-v2/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const FILAMENT_V2_CONTRACTS = { - USDC_CONTRACT: '0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1', - FILAMENT_DIAMOND_CONTRACT: '0xB28EAb5253f6a0f8a5B0a1120d9C03Db8Fc10C2f', - FILAMENT_DEPOSIT_CONTRACT: '0x7540F45b330D489491f7e873E0993F117bDDB56F', -} - -module.exports = { - sei: { - tvl: sumTokensExport({ owners: [FILAMENT_V2_CONTRACTS.FILAMENT_DIAMOND_CONTRACT, FILAMENT_V2_CONTRACTS.FILAMENT_DEPOSIT_CONTRACT], tokens: [FILAMENT_V2_CONTRACTS.USDC_CONTRACT] }), - }, -} diff --git a/projects/filament/index.js b/projects/filament/index.js deleted file mode 100644 index 5b23d63341e..00000000000 --- a/projects/filament/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - sei: { - tvl: () => ({}), - }, - deadFrom: '2024-12-24', -} \ No newline at end of file diff --git a/projects/filda/index.js b/projects/filda/index.js deleted file mode 100644 index c1e56fb6905..00000000000 --- a/projects/filda/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - heco: compoundExports2({ comptroller: '0xb74633f2022452f377403B638167b0A135DB096d', cether: '0x824151251b38056d54a15e56b73c54ba44811af8'}), - iotex: compoundExports2({ comptroller: '0x55E5F6E48FD4715e1c05b9dAfa5CfD0B387425Ee',}), - bsc: compoundExports2({ comptroller: '0xF0700A310Cb14615a67EEc1A8dAd5791859f65f1',}), - rei: compoundExports2({ comptroller: '0xEc1e6e331e990a0D8e40AC51f773e9c998ec7BC3',}), - polygon: compoundExports2({ comptroller: '0xfBE0f3A3d1405257Bd69691406Eafa73f5095723',}), - arbitrum: compoundExports2({ comptroller: '0xF67EF5E77B350A81DcbA5430Bc8bE876eDa8D591',}), - elastos: compoundExports2({ comptroller: '0xE52792E024697A6be770e5d6F1C455550265B2CD',}), - kava: compoundExports2({ comptroller: '0xD2CBE89a36df2546eebc71766264e0F306d38196',}), - bittorrent: compoundExports2({ comptroller: '0xE52792E024697A6be770e5d6F1C455550265B2CD',}), - hallmarks: [ - ['2023-04-24', 'Protocol was hacked'], - ], -}; diff --git a/projects/filet/abi.js b/projects/filet/abi.js deleted file mode 100644 index 45f869d9025..00000000000 --- a/projects/filet/abi.js +++ /dev/null @@ -1,7 +0,0 @@ -const filetFVMAbi = "function minePoolMap(uint256) view returns (tuple(address tokenAddress, uint256 expireType, uint256 actionType, uint256 canSell, address[] minerList, uint256 stakingPrice, uint256 tokenRate, uint256 FILRate, uint256 tokenPrecision, uint256 miniPurchaseAmount, uint256 hasSoldOutToken) mPool, bool isEntity)" -const filetBSCAbi = "function minePoolMap(uint256) view returns (tuple(address tokenInterface, address tokenAddress, uint256 expireType, uint256 actionType, tuple(uint256 canSell, uint256 canNotSell) maxMiningPower, address earlyRedeemFundAccount, address redeemFundAccount, address minerAccount, uint256 stakingPrice, uint256 tokenRate, uint256 FILRate, uint256 tokenPrecision, address recievePaymentAccount, uint256 miniPurchaseAmount, uint256 hasSoldOutToken, uint256 lockInterval, uint256[] poolThredhold, uint256[] serviceFeePercent) mPool, bool isEntity)" -const FiletBSCCurrentAbi = "function minePoolMap(uint256) view returns (tuple(address tokenInterface, address tokenAddress, uint256 expireType, uint256 actionType, tuple(uint256 canSell, uint256 canNotSell) maxMiningPower, address earlyRedeemFundAccount, address redeemFundAccount, address profitFundAccount, address minerAccount, uint256 stakingPrice, uint256 tokenRate, uint256 FILRate, uint256 tokenPrecision, address recievePaymentAccount, uint256 miniPurchaseAmount, uint256 maxPurchaseAmount, uint256 hasSoldOutToken, uint256 lockInterval, uint256[] poolThredhold, uint256[] serviceFeePercent, uint256 lendhubExtraRatio) mPool, bool isEntity)" - -module.exports = { - filetFVMAbi, filetBSCAbi, FiletBSCCurrentAbi -} \ No newline at end of file diff --git a/projects/filet/index.js b/projects/filet/index.js deleted file mode 100644 index a45d4d59a09..00000000000 --- a/projects/filet/index.js +++ /dev/null @@ -1,88 +0,0 @@ - -const abi = require("./abi.js") -const { fetchURL } = require('../helper/utils') - - -const BigNumber = require("bignumber.js") -const { nullAddress } = require("../helper/tokenMapping"); -const { get } = require("../helper/http"); - -//bsc staking con -const filetStakingCon_BSC = "0x9c821defD3BBb07C5c786C3bB039051364Fa6F39"; -const filetStakingConFlexible_BSC = "0xE989ef3118C685603B86123569340438ab670505"; -//bsc FILE con -const filetFILECon_BSC = "0xA8F19840e08dC3f134FF45062b953a2B14E02F5A" -const filetStorageCon_FVM = "0xFca90089d63D099c80A4ae91edCdfC904c2afa8e"; -const filetNativeCon = "0xBfd5BB742940a5b059710F4d1216db1F1287F4e0"; - -const filetStakingCon_HECO = "0x62C7aaCdCCEc32A2E33d5fa535B374f8a4a42566"; -const filetStakingConFlexible_HECO = "0x64F23Eb153D7496Fc31C1b38a41068995354773E" - -const poolOnFVM180 = 4010 -const poolOnFVM360 = 4011 - -// filet -const filetAPI = "https://api.filet.finance/pledge/ext/tx/pledgeTxAll" -const minerList = "https://api.filet.finance/pledge/pool/querySpList" -const { sumTokens2 } = require('../helper/unwrapLPs') - - -const getMinersList = async () => { - const resp = await get(minerList) - return resp.data.map(({minerId}) => { - - let bytes = Buffer.alloc(20); - bytes.writeUint8(0xff, 0); - bytes.writeBigUint64BE(BigInt(minerId), 12); - return '0x' + bytes.toString('hex') - }); -} - -// - -module.exports = { - timetravel: false, - heco: { - tvl: async () => { - const tvlData = await fetchURL(filetAPI) - return { - ["filecoin"]: new BigNumber(tvlData.data.data.hecoTvl), - } - } - }, - bsc: { - tvl: async () => { - - const tvlData = await fetchURL(filetAPI) - return { - ["filecoin"]: new BigNumber(tvlData.data.data.bscTvl), - } - - } - }, - filecoin: { - tvl: async (api) => { - - const filetMpool180 = await api.call({ target: filetStorageCon_FVM, abi: abi.filetFVMAbi, params:[poolOnFVM180] }); - const filetMpool360 = await api.call({ target: filetStorageCon_FVM, abi: abi.filetFVMAbi, params:[poolOnFVM360] }); - - const filetNative_hasSoldOutToken = await api.call({ target: filetNativeCon, abi: "uint256:hasSoldOutToken", params:[] }); - api.add(nullAddress, filetMpool180.mPool.hasSoldOutToken) - api.add(nullAddress, filetMpool360.mPool.hasSoldOutToken ) - api.add(nullAddress, filetNative_hasSoldOutToken ) - - // getMinersList - const minerList = await getMinersList(); - let balances = await sumTokens2({ owner: filetStorageCon_FVM, tokens:[nullAddress], api, }); - return sumTokens2({balances, api, owners: minerList, tokens: [nullAddress]}); - }, - }, - mixin: { - tvl: async (api) => { - const tvlData = await fetchURL(filetAPI) - return { - ["filecoin"]: new BigNumber(tvlData.data.data.mixinTvl), - } - } - } -} diff --git a/projects/filliquid/index.js b/projects/filliquid/index.js deleted file mode 100644 index 0e9283eb60b..00000000000 --- a/projects/filliquid/index.js +++ /dev/null @@ -1,10 +0,0 @@ -async function tvl(api) { - // https://github.com/FILL-Lab/FILLiquid/blob/main/contracts/FILLiquid.sol - const res = await api.call({ abi: 'uint256:getTVL', target: '0xA25F892cF2731ba89b88750423Fc618De0959C43'}) - api.addGasToken(res) -} - -module.exports = { - methodology: 'Get the total amount of pledge and account balance of fil in the statistical contract', - filecoin: { tvl } -} diff --git a/projects/fin/index.js b/projects/fin/index.js deleted file mode 100644 index 61e7ca3a453..00000000000 --- a/projects/fin/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { sumTokens, } = require('../helper/chain/cosmos'); - -async function tvl() { - const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); - const blacklist = [ - 'kujira1hs95lgvuy0p6jn4v7js5x8plfdqw867lsuh5xv6d2ua20jprkgesw2pujt', - 'kujira1gl8js9zn7h9u2h37fx7qg8xy65jrk9t4zpa6s7j5hdlanud2uwxshqq67m' - ] - let owners = [ - ...contracts["kaiyo-1"].fin.map(x => x.address), - ] - - owners = owners.filter(item => { - return !blacklist.includes(item); - }) - - return sumTokens({ owners, chain: 'kujira' }) -} - -module.exports = { - timetravel: false, - kujira: { - tvl, - }, -} - diff --git a/projects/finceptor/index.js b/projects/finceptor/index.js deleted file mode 100644 index 856cb3bf5a4..00000000000 --- a/projects/finceptor/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const FINC_TOKEN_CONTRACT = '0xA856098dCBc1b2B3a9C96C35c32bC4f71E49AEd2'; -const FINCEPTOR_STAKING_AMOUNTS_CONTRACT = '0xA8a15EC4D496521D3a4B70e3cC2c15fF1701E3BE'; - -async function staking(api) { - const stakedBalance = await api.call({ abi: 'uint256:totalStaked', target: FINCEPTOR_STAKING_AMOUNTS_CONTRACT, }) - api.add(FINC_TOKEN_CONTRACT, stakedBalance) -} - -module.exports = { - methodology: 'gets the total number of FINC tokens locked in all active staking contracts of Finceptor.', - bsc: { - tvl: () => ({}), - staking, - } -} \ No newline at end of file diff --git a/projects/finext-finance/index.js b/projects/finext-finance/index.js deleted file mode 100644 index 957cdcb3546..00000000000 --- a/projects/finext-finance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokensExport } = require('../helper/unwrapLPs') - -const FINX = "0xb6943825E461C6d8f2DDF17307C0571972f169FB"; -const GENESIS_POOL = "0x0711c9f411FFc4Fe331256E83ee8C910a997A16a"; -const USDC = ADDRESSES.arbitrum.USDC; -const WETH = ADDRESSES.arbitrum.WETH; - -module.exports = { - methodology: "Calculator USDC and WETH staked to genesis pool contract", - arbitrum: { - tvl: sumTokensExport({ owner: GENESIS_POOL, tokens: [USDC, WETH]}) - }, -} diff --git a/projects/finnexus/index.js b/projects/finnexus/index.js deleted file mode 100644 index f0923b51b77..00000000000 --- a/projects/finnexus/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const config = { - ethereum: [ - // ['0xef9cd7882c067686691b6ff49e650b43afbbcc6b', '0x919a35A4F40c479B3319E3c3A2484893c06fd7de'], - [ADDRESSES.ethereum.USDC, '0xff60d81287BF425f7B2838a61274E926440ddAa6'], - [ADDRESSES.ethereum.USDT, '0xff60d81287BF425f7B2838a61274E926440ddAa6'], - [ADDRESSES.ethereum.FRAX, '0x6f88e8fbF5311ab47527f4Fb5eC10078ec30ab10'], - ], - wan: [ - // ['0xC6F4465A6a521124C8e3096B62575c157999D361', '0xe96E4d6075d1C7848bA67A6850591a095ADB83Eb'], - ['0x11e77E27Af5539872efEd10abaA0b408cfd9fBBD', '0x297FF55afEF50C9820d50eA757B5bEBa784757AD'], - ], - bsc: [ - // ['0xdfd9e2a17596cad6295ecffda42d9b6f63f7b5d5', '0xf2E1641b299e60a23838564aAb190C52da9c9323'], - [ADDRESSES.bsc.BUSD, '0xA3f70ADd496D2C1c2C1Be5514A5fcf0328337530'], - [ADDRESSES.bsc.USDT, '0xA3f70ADd496D2C1c2C1Be5514A5fcf0328337530'], - ], -} - -module.exports = { - hallmarks: [ - ['2021-5-17', 'FinNexus erc20 contract is hacked'], - ], -} - -Object.keys(config).forEach(chain => { - const tokensAndOwners = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ chain, tokensAndOwners, }) - } -}) - - diff --git a/projects/fire/index.js b/projects/fire/index.js deleted file mode 100644 index 9021e42e275..00000000000 --- a/projects/fire/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x66A0be112EFE2cc3bc2f09Fa2aCaaf9f593B0265', - '0xa6F617f873684ED062C9Df281145250b3E4EE2D2', - ], - }, - bitcoin: { - owners: bitcoinAddressBook.fire - }, - ripple: { - owners: [ - 'r49iM5WS92URBo2w5BFPuKtxNPNTZPCjS2', - 'rhxenffiDqbzaxDtbR9kSEukpjFsA3wvw5', - ] - }, - solana: { - owners: ['EXm3bWhUFXpNtvAgnbQyCMtg89NjSwZzme8RCcs7JPCb'] - }, - cardano: { - owners: [ - // 'addr1q8wz6tfmp9yaeuy6xyamwrg4eg9hknu2pfyxwh0uhfcpa9wjyjpuv567rtwkxvt88mms37rxtgnxjnhrx65njr8cvmfqxzqye2', - 'addr1qxmsmmjh668w66h4xjvrkyl8wkqcpdnpkn5qhv9yuendnfa0stadpn6g73vwrjs06udq2rnmlpr9twejzdrd7nghk5msus5aqd', - ] - } -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/firebird/index.js b/projects/firebird/index.js deleted file mode 100644 index afb57192207..00000000000 --- a/projects/firebird/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { uniTvlExport } = require('../helper/unknownTokens.js') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const FACTORY = '0x5De74546d3B86C8Df7FEEc30253865e1149818C8'; -const stablePool = "0x01C9475dBD36e46d1961572C8DE24b74616Bae9e" -const stablePoolTokens = [ADDRESSES.polygon.USDT, ADDRESSES.polygon.USDC, ADDRESSES.polygon.DAI] - -async function tvl(api) { - return sumTokens2({ api, owner: stablePool, tokens: stablePoolTokens, }) -} - -const uniTvl = uniTvlExport('chain', FACTORY).chain.tvl - -module.exports = { - methodology: "Includes liquidity on all the pools on the uniswap fork plus the liquidity in the 3FBird stableswap pool", - misrepresentedTokens: true, - polygon: { tvl: sdk.util.sumChainTvls([tvl, uniTvl]) }, -}; \ No newline at end of file diff --git a/projects/firebot/index.js b/projects/firebot/index.js deleted file mode 100644 index 1063d28b069..00000000000 --- a/projects/firebot/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') -const { sumTokensExport: ogSumExport } = require('../helper/unwrapLPs') - -const FBX_TOKEN_CONTRACT = '0xD125443F38A69d776177c2B9c041f462936F8218'; -const FIRE_VAULT_CONTRACT = '0x960d43BE128585Ca45365CD74a7773B9d814dfBE'; -const EP_TOKEN_CONTRACT = '0x60Ed6aCEF3a96F8CDaF0c0D207BbAfA66e751af2'; -const FBX_LP = '0xcffbfa978ac3fb10e829ca6b763c307daafe8a77' -const EP_FBX_LP = '0x41D9DE53EBF26F766229E42Aa02904eB2495E397' - -module.exports = { - polygon: { - tvl: () => 0, - staking: sumTokensExport({ - tokensAndOwners: [ - [EP_TOKEN_CONTRACT, EP_TOKEN_CONTRACT], - [FBX_TOKEN_CONTRACT, FIRE_VAULT_CONTRACT], - ], - lps: [EP_FBX_LP], - coreAssets: [FBX_TOKEN_CONTRACT], - restrictTokenRatio: 100, - }), - pool2: ogSumExport({ - tokensAndOwners: [ - [FBX_LP, '0x92a9180af33531A5d78d81D90AFc0523dc6c62c9'], - ], - }), - }, - methodology: 'Counts the number of FBX and EP tokens in the Vault contracts.' -}; diff --git a/projects/firedao/abi.json b/projects/firedao/abi.json deleted file mode 100644 index 4f168ac4e8a..00000000000 --- a/projects/firedao/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "want": "address:want", - "balanceOf": "uint256:balanceOf", - "vaults": "function vaults(address) view returns (address)", - "balance": "uint256:balance" -} \ No newline at end of file diff --git a/projects/firedao/index.js b/projects/firedao/index.js deleted file mode 100644 index cf8c96326e7..00000000000 --- a/projects/firedao/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); - -const controllerV1 = "0x71908d6faA4c4Ae8717bCe5839b805cC807Ba302"; -const controllerV2 = "0xF3CbD482Dd5Ac5aB9A0FF9baa68DdaD2f08B1c2f"; - -const strategiesContractsV1 = [ - // strategy DAI V1 - "0x1534A23d885C5a78607CFE1C1AC40669C8b79DB7", - // strategy USDC V1 - "0xCEb3b75e0e3B4EAD10a959753e3Def4F7D93D383", - // strategy USDT V1 - "0x5B8fCD142617E790038491E30eE8CE68c3B1EDE2", -]; - -const strategiesContractsV2 = [ - // strategy DAI V2 - "0x87E2Bb2f2695c7EAFb02Fd7dB1a4EF7d7B179C4E", - // strategy USDC V2 - "0xe68a4365D3Bdeed31F0dF6dAD633bCb1CEF322d8", - // strategy USDT V2 - "0x898fEbAba28b945dc432fcAa897FD9231a1FeD9d", -]; - -async function calcTvl(balances, strategiesContracts, controller) { - const wants = ( - await sdk.api.abi.multiCall({ - abi: abi.want, - calls: strategiesContracts.map((strat) => ({ - target: strat, - })), - }) - ).output.map((token) => token.output); - - const balanceStrategy = ( - await sdk.api.abi.multiCall({ - abi: abi.balanceOf, - calls: strategiesContracts.map((strat) => ({ - target: strat, - })), - }) - ).output.map((bal) => bal.output); - - const vaults = ( - await sdk.api.abi.multiCall({ - abi: abi.vaults, - calls: wants.map((want) => ({ - target: controller, - params: want, - })), - }) - ).output.map((vault) => vault.output); - - const vaultBalance = ( - await sdk.api.abi.multiCall({ - abi: abi.balance, - calls: vaults.map((vault) => ({ - target: vault, - })), - }) - ).output.map((bal) => bal.output); - - wants.forEach((token, idx) => { - sdk.util.sumSingleBalance(balances, token, balanceStrategy[idx]); - sdk.util.sumSingleBalance(balances, token, vaultBalance[idx]); - }); -} - -async function ethTvl() { - const balances = {}; - - /*** Version 1 ***/ - await calcTvl(balances, strategiesContractsV1, controllerV1); - /*** Version 2 ***/ - await calcTvl(balances, strategiesContractsV2, controllerV2); - - return balances; -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: ethTvl, - }, - methodology: - "Counts liquidty on the Vaults trouggh Controller Contracts", -}; diff --git a/projects/firefly/index.js b/projects/firefly/index.js deleted file mode 100644 index 5e6b5086ccb..00000000000 --- a/projects/firefly/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3") - - -module.exports = uniV3Export({ - manta: { factory: "0x8666EF9DC0cA5336147f1B11f2C4fC2ecA809B95", fromBlock: 1776716, }, -}) \ No newline at end of file diff --git a/projects/firoza-finance/index.js b/projects/firoza-finance/index.js deleted file mode 100644 index bd41ead4e77..00000000000 --- a/projects/firoza-finance/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumERC4626Vaults } = require('../helper/erc4626'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const POOL_API_URL = "https://firoza.finance/api/pools"; - -async function tvl(api) { - const poolAddresses = await getConfig('firoza', POOL_API_URL); - const assets = await api.multiCall({ abi: 'address:asset', calls: poolAddresses}) - return sumTokens2({ api, tokensAndOwners2: [assets, poolAddresses] }) -} - -async function borrowed(api) { - const poolAddresses = await getConfig('firoza', POOL_API_URL); - const assets = await api.multiCall({ abi: 'address:asset', calls: poolAddresses}) - await sumERC4626Vaults({ api, calls: poolAddresses, isOG4626: true, }); - const calls = assets.map((target, i) => ({ target, params: poolAddresses[i] })); - const tokenBals = await api.multiCall({ abi: 'erc20:balanceOf', calls }) - tokenBals.forEach((bal, i) => api.add(assets[i], bal * -1)) - return sumTokens2({ api }) -} - - -module.exports = { - methodology: "TVL counts the tokens deposited in the Firoza Finance pools.", - islm: { - tvl, - borrowed: () => ({}), - }, - hallmarks: [ - [1688169600, "Launch on ISLM"] - ], - deadFrom: '2025-02-09', -}; \ No newline at end of file diff --git a/projects/fisclend/index.js b/projects/fisclend/index.js deleted file mode 100644 index 89dbab0a7d2..00000000000 --- a/projects/fisclend/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -const tvlExports = { - apechain: compoundExports2({comptroller: '0xd11443B079D62700061F7311fC48C40B30BCEA91', cether: '0xB1974B31b60C7134978e5574F5f1fC8A16535b5D'}), - wc: compoundExports2({comptroller: '0xE3de48DCF4968B419BB55421D6B5bF2c049DaFB2', cether: '0xCD04992D1D8d42BB432AD794103c3B498016Da88'}), - sonic: compoundExports2({comptroller: '0x65E8768B86350875DDE19A791f06FfB7a4ADA71b', cether: '0x0B19823EF1F4a6B1f7c52336F428F1a92e9f645E'}), -} - -Object.keys(tvlExports).forEach(key => tvlExports[key].borrowed = () => ({})) - -module.exports = tvlExports -module.exports.deadFrom = 1735862400 -module.exports.hallmarks = [ - [1735862400, "Rug Pull"] -] \ No newline at end of file diff --git a/projects/fiva/index.js b/projects/fiva/index.js deleted file mode 100644 index 95e2813f75a..00000000000 --- a/projects/fiva/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const { sumTokens} = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); -const plimit = require("p-limit"); -const { call } = require('../helper/chain/ton'); -const { sleep } = require('../helper/utils'); - -const syEvaaMinter = "EQDi9blCcyT-k8iMpFMYY0t7mHVyiCB50ZsRgyUECJDuGvIl" // Evaa USDT (maturity 2025-06-01) - -// i2 pools -const tsTON01Sep2025 = "EQAPICp-A_2QNEb7xiBwAoeypEnhrtY5tJ_1vGGujjVvflTl" -const USDTSlpSyMinter01Sep2025 = "EQDLqPppdVfv4bVqV6bpCYwmDUVCsem2LV5zda3fMIKgCxkH" -const TONSlpSyMinter01Sep2025 = "EQBeLuWFjniPGnAyy7gVKJkA1mXptxP-dgBswKIY5su6NHFd" -const USDe01Sep2025 = "EQDafE9flDXaRCnhrprgPj_sJNJb502Dov1GDruIRjarHscs" -const tsUSDe01Sep2025 = "EQC57U5O4_OGLSEgX498PpmNqSYzcXx63wvOdtkCoe5LHcfo" - -const syEvaaMinter01Sep2025 = "EQBY5JE96x_U5fSSsAzBj8d-_ZbK-5AihJ2rzjTZAtNqsntL" - -// Torch stgUSD contracts -const stgUSDWallet01Sep2025 = "EQB7mAJdOoatcYNB6dXL722-you09EjGIMEV3nUIN9WQ5jq7" -const ytStgUSD01Sep2025 = "EQBZU_ZFAl8_nACqkJ_Gl6fKEyAJ0uNiMc2borzmrF2KM_Bp" - -// i3 pools -const tsTON18Dec2025 = "EQBoiugW7Q6X4r6hEfN-r-9ZI8Fmc3s9qRGysPeP-CEjdp9P" -const USDTSlpSyMinter18Dec2025 = "EQBbmjEHGkEDofbig93IAOE-aiQ_4caa1fVcn97GBjfNzV-Z" -const TONSlpSyMinter18Dec2025 = "EQBrHC-Fhg9_YupfujOuC2OTeVkkDrgpyHM63gfBdqYYe_pt" -const USDe18Dec2025 = "EQA8xzTSbgG8yMGPAC4te9c9YrezJ3X3vQ6dxhodXU0KIWeH" -const tsUSDe18Dec2025 = "EQBxUy6vYBo3zb0v1XvJP2kePQQ7D2447i5EymEdvyTAJlVi" - -// const syEvaaMinter18Dec2025 = "" // will be deployed after EVVA update - -// Torch stgUSD contracts -const stgUSDWallet18Dec2025 = "EQDNpKHypIEdGafseDPOJSFfG7d3ykd9X6dDd6fRvu5mIC6a" -const ytStgUSD18Dec2025 = "EQDNmcwxpWdjMV6yLQOTZWPJGJWeWlPWhHz-esDgB2OhXnka" - -const indexPrecision = 10 ** 6 - -const _rateLimited = plimit(1) -const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) -const rateLimitedCall = rateLimited(call); - -async function getSuppliedToEVAAJettons(api, evaaSyMinters) { - // Handle both single address and array of addresses - const minters = Array.isArray(evaaSyMinters) ? evaaSyMinters : [evaaSyMinters]; - - let totalAdjustedUSDT = 0; - - for (const evaaSyMinter of minters) { - const suppliedUSDTToEvaa = await rateLimitedCall({ - target: evaaSyMinter, - abi: 'get_total_evaa_supplied', - params: [] - }); - - await sleep(1000 * (2 * Math.random() + 3)); // 3-5 second delay - - const indexData = await rateLimitedCall({ - target: evaaSyMinter, - abi: 'get_index', - params: [] - }); - - const adjustedUSDT = suppliedUSDTToEvaa * indexData[0] / 10 ** 3 / indexPrecision; - totalAdjustedUSDT += adjustedUSDT; - - // Add additional delay between different addresses - if (minters.length > 1) { - await sleep(1000 * (Math.random() + 2)); // Additional 2-3 seconds - } - } - api.add(ADDRESSES.ton.USDT, totalAdjustedUSDT); -} - -async function getTorchStgUSD(api, stgUSDWallet, ytStgUSD) { - // Get stgUSD balance from the smart contract wallet - const stgUSDBalance = await rateLimitedCall({ - target: stgUSDWallet, - abi: 'get_wallet_data', - params: [] - }); - - await sleep(1000 * (2 * Math.random() + 3)); // 3-5 second delay - - // Get index from YT contract - const indexData = await rateLimitedCall({ - target: ytStgUSD, - abi: 'get_index', - params: [] - }); - - // Convert stgUSD to USDT using the provided formula - const adjustedUSDT = stgUSDBalance[0] * indexData[0] / indexPrecision; - - api.add(ADDRESSES.ton.USDT, adjustedUSDT); -} - -async function tvl(api) { - // balances in the SY minter smart contracts - await sumTokens({ - api, - owners: [ - USDTSlpSyMinter01Sep2025, - TONSlpSyMinter01Sep2025, - USDe01Sep2025, - tsUSDe01Sep2025, - tsTON01Sep2025, - tsTON18Dec2025, - USDTSlpSyMinter18Dec2025, - TONSlpSyMinter18Dec2025, - USDe18Dec2025, - tsUSDe18Dec2025 - ], - tokens: [ADDRESSES.null], - }) - - // Evaa tvl - balance in the EVVA protocol supplied by SY minter smartcontract - await getSuppliedToEVAAJettons(api, [syEvaaMinter, syEvaaMinter01Sep2025]); - - // // Get Torch StgUSD balance - await getTorchStgUSD(api, stgUSDWallet01Sep2025, ytStgUSD01Sep2025); - await getTorchStgUSD(api, stgUSDWallet18Dec2025, ytStgUSD18Dec2025); -} - -module.exports = { - methodology: 'Counts FIVA smartcontract balance as TVL. EVAA USDT: Counts amount of USDT supplied to EVAA protocol by SY minter smartcontract.', - ton: { - tvl - } -} diff --git a/projects/fixes-coins/index.js b/projects/fixes-coins/index.js deleted file mode 100644 index 7a6b5611b79..00000000000 --- a/projects/fixes-coins/index.js +++ /dev/null @@ -1,29 +0,0 @@ -// Fixes Inscription Protocol - 𝔉rc20 Treasury Pool: https://fixes.world/ -const { callCadence } = require("../helper/chain/flow"); - -let queryTVLCode = ` -import FixesTVL from 0xd2abb5dbf5e08666 - -access(all) -fun main(): UFix64 { - return FixesTVL.getAllLockedCoinFlowValue() -} -`; - -async function tvl() { - try { - const flowTokenTVL = await callCadence(queryTVLCode, true); - return { flow: flowTokenTVL }; - } catch (error) { - throw new Error("Couln't query scripts of Fixes coins. Error: " + error.message); - } -} - -module.exports = { - timetravel: false, - methodology: - "Counting the $FLOW token locked in Fixes Coins' Bonding Curve, and Fixes Coins' LockDrop Pool.", - flow: { - tvl, - }, -}; diff --git a/projects/fixes-frc20-staking/index.js b/projects/fixes-frc20-staking/index.js deleted file mode 100644 index c3c371fb1d6..00000000000 --- a/projects/fixes-frc20-staking/index.js +++ /dev/null @@ -1,32 +0,0 @@ -// Fixes Inscription Protocol - Staking Pool: https://fixes.world/ -const { callCadence } = require("../helper/chain/flow"); - -let queryTVLCode = ` -import FixesTVL from 0xd2abb5dbf5e08666 - -access(all) -fun main(): UFix64 { - return FixesTVL.getAllStakedFlowValue() -} -`; - -async function tvl() { - try { - const flowTokenTVL = await callCadence(queryTVLCode, true); - return { flow: flowTokenTVL }; - } catch (error) { - console.error(error.message); - throw new Error( - "Couln't query scripts of fixes 𝔉rc20 treasury pool. Error: " + error.message - ); - } -} - -module.exports = { - timetravel: false, - methodology: - "Counting the 𝔉rc20 tokens staked by users in the Fixes inscription protocol, and tokens locked by unstaking are not counted.", - flow: { - tvl, - }, -}; diff --git a/projects/fixes-frc20/index.js b/projects/fixes-frc20/index.js deleted file mode 100644 index 626d8109518..00000000000 --- a/projects/fixes-frc20/index.js +++ /dev/null @@ -1,31 +0,0 @@ -// Fixes Inscription Protocol - 𝔉rc20 Treasury Pool: https://fixes.world/ -const { callCadence } = require("../helper/chain/flow"); - -let queryTVLCode = ` -import FixesTVL from 0xd2abb5dbf5e08666 - -access(all) -fun main(): UFix64 { - return FixesTVL.getAllTreasuryFlowValue() -} -`; - -async function tvl() { - try { - const flowTokenTVL = await callCadence(queryTVLCode, true); - return { flow: flowTokenTVL }; - } catch (error) { - throw new Error( - "Couln't query scripts of fixes 𝔉rc20 treasury pool. Error: " + error.message - ); - } -} - -module.exports = { - timetravel: false, - methodology: - "Counting the flow tokens locked in the treasury pool of each 𝔉rc20 token in the Fixes inscription protocol.", - flow: { - tvl, - }, -}; diff --git a/projects/fizzswap-v2/index.js b/projects/fizzswap-v2/index.js deleted file mode 100644 index 69e76d21f5c..00000000000 --- a/projects/fizzswap-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - silicon_zk: '0xCB72354080A1d3B8A48425B889025d0799c52095' -}) diff --git a/projects/fizzswap-v3/index.js b/projects/fizzswap-v3/index.js deleted file mode 100644 index 2c294cc195d..00000000000 --- a/projects/fizzswap-v3/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -async function v3Tvl(api) { - const factory = '0x2aeEC787Be499ef6f68e527B64FADF969D048042'; - const WETH = ADDRESSES.silicon_zk.WETH.toLowerCase(); - - const fromBlock = 1; - const eventAbi = 'event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, uint256 exid)'; - const topics = [ - '0x20a108faf9dc51ca2b459a109d08568e65a9cb87569b6b3a334c275d504ff94f', - ]; - - const logs = await getLogs({ - api, - target: factory, - topics, - fromBlock, - eventAbi, - onlyArgs: true, - }) - - return sumTokens2({ - api, ownerTokens: logs.map(i => { - return [[(i.token0.toLowerCase() == WETH) ? ADDRESSES.null : i.token0, i.token1], i.pool] - }), - }) -} - -module.exports = { - silicon_zk: { - tvl: v3Tvl, - }, -} \ No newline at end of file diff --git a/projects/flair-dex/index.js b/projects/flair-dex/index.js deleted file mode 100644 index 77dbe379d8a..00000000000 --- a/projects/flair-dex/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0x634e02EB048eb1B5bDDc0CFdC20D34503E9B362d) address and whitelisted tokens address to find and price liquidity pool pairs`, - avax: { - tvl: getUniTVL({ - factory: "0x634e02EB048eb1B5bDDc0CFdC20D34503E9B362d", - hasStablePools: true, - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/flame-dex/index.js b/projects/flame-dex/index.js deleted file mode 100644 index 4a9baa7bafa..00000000000 --- a/projects/flame-dex/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokens2, } = require('../helper/chain/tezos') - -module.exports = { - tezos: { - tvl: async () => { - return sumTokens2({ owners: ['KT1PRtrP7pKZ3PSLwgfTwt8hD39bxVojoKuX'], includeTezos: true,}) - }, - } -} \ No newline at end of file diff --git a/projects/flamedefi/index.js b/projects/flamedefi/index.js deleted file mode 100644 index 6e489529c06..00000000000 --- a/projects/flamedefi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const exports1 = require('../flame-dex/index.js') - -module.exports = { - methodology: 'tokens on flame dex are counted as tvl. Protocol abandoned?', - ...exports1 -} \ No newline at end of file diff --git a/projects/flamincome.js b/projects/flamincome.js deleted file mode 100644 index 9b000dd94ab..00000000000 --- a/projects/flamincome.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require('./helper/unwrapLPs') - -const abis = { - balance: "erc20:balance", - token: "address:token", -} - -const vaults = { - // "VaultBaselineUSDT": "0x54bE9254ADf8D5c8867a91E44f44c27f0c88e88A", - // "VaultBaselinewBTC": "0x1a389c381a8242B7acFf0eB989173Cd5d0EFc3e3", - // "VaultBaselinewETH": "0x1E9DC5d843731D333544e63B2B2082D21EF78ed3", - // "VaultBaselineDAI": "0x163D457fA8247f1A9279B9fa8eF513de116e4327", - // "VaultBaselineUNI-V2[WBTC]": "0x743BC5cc8F52a84fF6e06E47Bc2af5324f5463D6", - /* "VaultBaselinerenBTC": "0xB0B3442b632175B0b7d9521291c51060722C4e8C", - "VaultBaselineTUSD": "0xa322AEa77769666453377CC697fbE4C6390b9942", - "VaultBaselineyCRV": "0x5e7B4de4aC8e319fB2ec4bF9Fa98192346f8C99B", - "VaultBaselinesBTC": "0x681D3261CC6d2A18b59f8B53219b96F06BcEeB69", - "VaultBaselineUSDC": "0x3f7E3d82bdDc28d3Eb04F0d0A51e9Fc82db581f0", - "VaultBaselineyDAI": "0x79A2e8C1120d6B5fBfaBD3f7a39CF8473A635742", - "VaultBaselinecrvBTC": "0x483A47247d5cBd420A9c5d2838Ec89776ba8B56B", - "VaultBaselineOKB": "0x272C8dF3E8068952606046c1389fc1e2320FCCfd", - "VaultBaselinecrvRenWBTC": "0x10d0A001EeDC62b2A483EB9DFA0bb021aC61d55b", - "VaultBaselinecrvRenWSBTC": "0x483A47247d5cBd420A9c5d2838Ec89776ba8B56B", */ -} - -async function tvl(api) { - const contracts =Object.values(vaults) - const tokens = await api.multiCall({ abi: abis.token, calls: contracts}) - const bals = await api.multiCall({ abi: abis.balance, calls: contracts}) - api.addTokens(tokens, bals) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - } -} diff --git a/projects/flamingo-lend/index.js b/projects/flamingo-lend/index.js deleted file mode 100644 index 03517df36a8..00000000000 --- a/projects/flamingo-lend/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { post } = require('../helper/http') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const endpoint = 'https://explorer.onegate.space/api' - -const whitelistedTokens = new Set([ - '0x68b938cc42b6a2d54fb9040f5facf4290ebb8c5f', '0xd3a41b53888a733b549f5d4146e7a98d3285fa21', - '0xd2a4cff31913016155e38e474a2c06d08be276cf', '0x4548a3bcb3c2b5ce42bf0559b1cf2f1ec97a51d0', -]) - - -async function getBalances(address) { - const data = await post(endpoint, { - "jsonrpc": "2.0", "id": 1, "params": - { - "Address": address, "Limit": 10, "Skip": 0 - - }, "method": "GetAssetsHeldByAddress" - }) - return data.result.result -} - -async function tvl(api) { - // https://explorer.onegate.space/accountprofile/0x799bbfcbc97b5a425e14089aeb06753cb3190560 - const accounts = ['0x03217e03834e48ac6b7b0053af23d3663090875a', '0x799bbfcbc97b5a425e14089aeb06753cb3190560'] - for (const account of accounts) { - const data = await getBalances(account) - data.forEach(i => { - if (!whitelistedTokens.has(i.asset.toLowerCase())) return; - api.add(i.asset, i.balance) - }) - } - return sumTokens2({ api }) -} - -module.exports = { - neo: { tvl } -} \ No newline at end of file diff --git a/projects/flamingo.js b/projects/flamingo.js deleted file mode 100644 index 21d9f6fb6a0..00000000000 --- a/projects/flamingo.js +++ /dev/null @@ -1,52 +0,0 @@ -// adapter.js -const { get } = require('./helper/http'); - -async function tvl() { - const data = await get( - 'https://flamingo-us-1.b-cdn.net/flamingo/analytics/daily-latest/tvl_data' - ); - const { pool_usd, flund_usd, lend_usd } = data.tvl_data; - - // Parse strings to floats and sum them - // const totalUsd = - // parseFloat(pool_usd) - // parseFloat(flund_usd) + // FLUND is backed by platforms own token: https://medium.com/flamingo-finance/flamingo-finance-announces-flamingo-flund-single-stake-9be434d0999d - // parseFloat(lend_usd); // will be tracked under a new listing - - return { tether: +pool_usd }; -} - -module.exports = { - hallmarks: [ - [1638525600, "N3 migration start"], - [1641117600, "100% minting on N3"], - [1641808800, "First IDO"], - //[1648116000, "First reverse pool"], - // [1650276000, "Binance N3 support"], - // [1651140000, "FLUND single stake"], - [1654085699, "Advanced Trade launched"], - [1656410400, "Mobile App"], - [1656677699, "Fiat Onramper launched"], - //[1660047299, "First limit order trades on OrderBook+"], - // [1668428099, "Wave 1 of new liquidity pools"], - // [1671192899, "Wave 2 of new liquidity pools"], - // [1673352899, "USD Stablecoin FUSD & Flamingo Lend"], - // [1676463299, "FUSD Pool Bonus released"], - // [1682424899, "New landing and Get Started pages"], - // [1685621699, "Flamingo Ambassador Program launched"], - // [1687263299, "Expands to 14 EVM chains"], - //[1695644099, "Flamingo Finance 3.0"], - // [1705580099, "New roadmap announced"], - // [1712232899, "Dashboard-athon"], - [1727093699, "Wave 3 of new liquidity pools"], - // [1734524099, "OrderBook+ 2.0 live on Testnet"], - // [1741263299, "OrderBook+ 2.0 live on Mainnet"], - // [1742904899, "FLOCKS released"] - ], - methodology: `TVL is obtained by making calls to the Flamingo Finance API "https://flamingo-us-1.b-cdn.net/flamingo/analytics/daily-latest/tvl_data".`, - misrepresentedTokens: true, - timetravel: false, - neo: { - tvl - } -}; diff --git a/projects/flapdotsh/index.js b/projects/flapdotsh/index.js deleted file mode 100644 index 289eb41a3c4..00000000000 --- a/projects/flapdotsh/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const portal = [ - "0xe2ce6ab80874fa9fa2aae65d277dd6b8e65c9de0", -]; - -const tokens = [coreAssets.null]; - -module.exports = { - bsc: { - tvl: sumTokensExport({ owners: portal, tokens }) - }, -}; \ No newline at end of file diff --git a/projects/flare-asset/index.js b/projects/flare-asset/index.js deleted file mode 100644 index 8434b297965..00000000000 --- a/projects/flare-asset/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { sumTokens } = require('../helper/sumTokens'); -const { post } = require('../helper/http') - -const agentVaults = [ - '0xe56f464c23760d563dd4c73dADA05159aE71FC50', // Au - '0xA69bF2eC0eF91A29B5da634BD4958AA32BaD9fe3', // Bifrost - '0x7CeC6EC27F3A0f0a37B1847E5Af3E99A7499A0bC', // Atlas - '0x0F6AB40fE44aA3AB15B8ff96Df98C6F5865F048E', // NORTSO - '0x8eA74D78A03F20597cEE115176f7f8b65271c87A', // OD - '0x09011d2A11A40DB855Cb00B3AA5a0F5F3bd485FD', // WK -] - -const agentPools = [ - '0xf45c1a5Ef4fB09F1c33f772175b2fec229D1885B', // Au - '0x3A06584A47972fF7005301b5A44c7D2214A4d3b4', // Bifrost - '0x0e647177Df92A75e16D4043EE4bbA9CcCae874A6', // Atlas - '0xd6af7ef36732A5A71121363bE380AB6C8e9F72e0', // NORTSO - '0x71eE56f6B793386cECf536CD566ff50FE558f70E', // OD - '0xa7F4335e5233C50e1022c2607dfE83c3d73d516B', // WK -] - -const coreVault = "rfkXSaCZKTg1EZzec2rLDyrWHxRVJdtVXj" -const escrowAccount = "rMLNvZR9dascY5jtCfCv3whAp8HdUSZAQ" - -async function XRPLLocked(api) { - const baseTokens = await sumTokens({ api, owner: coreVault, chain: 'ripple' }) - - // escrows - const response = await post('https://s1.ripple.com:51234', - { "method": "account_objects", "params": [{ - "account": coreVault, - "ledger_index": "validated", - "type": "escrow" - }] - } - ) - if (response.result.error === 'actNotFound') return baseTokens; - const escrowed = response.result.account_objects.filter( - (obj) => obj.LedgerEntryType === 'Escrow' && obj.Destination === escrowAccount - ).reduce((acc, escrow) => acc + (+escrow.Amount / 1e6), 0) - - return { - "ripple": baseTokens.ripple + escrowed, - } -} - -async function flareTvl(api) { - return sumTokens2({ - api, - tokensAndOwners: [ - ...agentVaults.map(v => ["0xe7cd86e13AC4309349F30B3435a9d337750fC82D", v]), // USDT0 in agent vaults - ...agentPools.map(p => ["0x1D80c49BbBCd1C0911346656B529DF9E5c2F783d", p]), // WFLR in agent pools - ], - }) -} - -module.exports = { - methodology: "Value of USDT0 and WFLR held in Agent's vaults and pools together with XRP tokens locked on XRPL either in core vault or in the escrows.", - flare: { tvl: flareTvl }, - ripple: { tvl: XRPLLocked }, -} diff --git a/projects/flare-loans/index.js b/projects/flare-loans/index.js deleted file mode 100644 index d1badc87dd7..00000000000 --- a/projects/flare-loans/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports={ - methodology: "We count all WSGB on 0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f and all EXFI on 0x4595fc96262057f9b0d4276ff04de8f2f44e612e, which are backing the stablecoin", - songbird: { - tvl: sumTokensExport({tokensAndOwners: [ - [ADDRESSES.songbird.WSGB, '0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f'], - [ADDRESSES.songbird.EXFI,'0x4595fc96262057f9b0d4276ff04de8f2f44e612e'] - ]}) - } -} \ No newline at end of file diff --git a/projects/flareWatermelon/index.js b/projects/flareWatermelon/index.js deleted file mode 100644 index 16f9a663f70..00000000000 --- a/projects/flareWatermelon/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x4d86Aa688ba56e1971Baf8C2CBCb44D980587894" - -async function tvl(time, ethBlock, { flare: block }) { - return sumTokens2({ tokens: [nullAddress], owner: contract, block, chain: 'flare', }) -} - -module.exports = { - methodology: `We count the FLR on ${contract}`, - flare: { - tvl - } -} \ No newline at end of file diff --git a/projects/flarefarm/flare.js b/projects/flarefarm/flare.js deleted file mode 100644 index 6b18d43e936..00000000000 --- a/projects/flarefarm/flare.js +++ /dev/null @@ -1,76 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumUnknownTokens } = require("../helper/unknownTokens"); - -const WFLR = ADDRESSES.flare.WFLR -const APS = '0xfF56Eb5b1a7FAa972291117E5E9565dA29bc808d' -const HLN = '0x140D8d3649Ec605CF69018C627fB44cCC76eC89f' - -const LPs ={ - WFLR_APS_LP: '0xef24D5155818d4bD16AF0Cea1148A147eb620743', - WFLR_eUSDT_LP: '0x7520005032F43229F606d3ACeae97045b9D6F7ea', - HLN_WFLR_LP: '0x02C6b5B1fbE01Da872E21f9Dab1B980933B0EF27', - HLN_APS_LP: '0x87E0E33558c8e8EAE3c1E9EB276e05574190b48a', - WFLR_eETH_LP: '0x32fd7858393918A984DA6ee279EcA27f630a1C02', - HLN_eUSDT_LP: '0x9bD53eCB4B7C09f41a336F85C345aa8DcAFdf52C', - eUSDT_APS_LP: '0x980Db8443D19B64B1d4616980ebbD44e7DD30C2E', - HLN_eETH_LP: '0x71b738DB182C780E2FFA5A09b5cc6dB92556E27B', - eETH_APS_LP: '0x05B623fd361109D0e47169eBa9e0514c80c40409', - WFLR_eQNT_LP: '0x80A08BbAbB0A5C51A9ae53211Df09EF23Debd4f3', - HLN_eQNT_LP: '0xEd920325b7dB1e909DbE2d562fCD07f714395e10', - eQNT_APS_LP: '0x33E2354928002766C27F7424EcA6f9B133E922a5', - WFLR_BNZ_LP: '0x2C934BbBD152A40419d3330e4d79f362Bc6691D6', - sFLR_WFLR_LP: '0x7E8EB77Feb4b3Fe2C58B493DF6Ce38875806bebb', - sFLR_eUSDT_LP: '0xDf243D5631A68fDa74Db6572D7649aD341470c82', - sFLR_eETH_LP: '0x68cB5Bf8c9A54d664d9b6b483fC6A6401448223e', - sFLR_eQNT_LP: '0xb7C6F8cff4D5B7266225f624e03a27BE0998C726', - sFLR_HLN_LP: '0x6CbF760115F66502838B5622423D68DBCb4A9757', - sFLR_APS_LP: '0xf06eeBF7A66C80760Bd8343A6BCe84c9D61879ee', -} - -const chain = 'flare' - -// farms which reward APS -// [LP token address, farm address] -async function farmTvl(timestamp, ethblock, { [chain]: block }) { - const tokens = [ - [LPs.WFLR_eUSDT_LP, "0x22beb4c7166DbAa0A33052A770C3b358cAbE9089"], - [LPs.WFLR_APS_LP, "0x3DA590b357Cf17a413ec8db70FeB02119AfE707f"], - [LPs.HLN_WFLR_LP, "0xd3a273329bab3e263015C1C2ab79C3731769a5b0"], - [HLN, "0x660cc88B7924a0c727cA6a1a9F0B81D239966928"], - [LPs.HLN_APS_LP, "0x2de4bC38f012DC90478f570083d3Da45B05659A9"], - [HLN, "0xC296d1D1E3396bCCDeD32143ca715bAB0A9998cC"], - [LPs.WFLR_eETH_LP, "0x66b65b586Fcaf70375498720C85F4C84013497fB"], - [LPs.HLN_eUSDT_LP, "0xc357123725Db711b7B85882e3475125EC34220a8"], - [LPs.eUSDT_APS_LP, "0x437a586B04e8F0ed9E32d31aE897eaDEd8150Aea"], - [LPs.HLN_eETH_LP, "0x71b738DB182C780E2FFA5A09b5cc6dB92556E27B"], - [LPs.eETH_APS_LP, "0x05B623fd361109D0e47169eBa9e0514c80c40409"], - [LPs.WFLR_eQNT_LP, "0xc786B4a2F9c314743Ed713184e5c94c244fF6c8D"], - [LPs.HLN_eQNT_LP, "0x02321f8030208de54dBd3e2DbdEfbd07cc88Ad6D"], - [LPs.eQNT_APS_LP, "0x5E69aD043AE8941969617aeF4487f15445D774C6"], - [LPs.WFLR_BNZ_LP, "0x8246A727510F471f8a61CBc218B60e5cf85739F6"], - [HLN, "0x9032Cf50B469Eec548654E060d1c14fe5AA7038b"], - [LPs.sFLR_WFLR_LP, "0xeb4ed8662828735E2871493b957b29fD5Cb44fEB"], - [LPs.sFLR_eUSDT_LP, "0x31b3086D005a266864C014d4Ae09F5fc0F9Ea15d"], - [LPs.sFLR_eETH_LP, "0x03a9Fed1a21382d84c0c57eebba7DF293aca4e65"], - [LPs.sFLR_eQNT_LP, "0xcE5D8BB190eE88A96A23e69A50670907873f00e9"], - [LPs.sFLR_HLN_LP, "0xd06FFFb1908EAcC059d94cbA4004091dE4164e51"], - ]; - - return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, }) -} - -// farms where APS is one part of the pair -async function pool2(timestamp, ethblock, { [chain]: block }) { - const tokens = [ - ['0xef24D5155818d4bD16AF0Cea1148A147eb620743', "0x3DA590b357Cf17a413ec8db70FeB02119AfE707f"], - ['0x87E0E33558c8e8EAE3c1E9EB276e05574190b48a', "0x2de4bC38f012DC90478f570083d3Da45B05659A9"], - [LPs.sFLR_APS_LP,'0xded2decC3028B700B8d124292868F195bb8F6467'] - - ] - return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, }) -} - -module.exports = { - tvl: farmTvl, - pool2, -}; \ No newline at end of file diff --git a/projects/flarefarm/index.js b/projects/flarefarm/index.js deleted file mode 100644 index a083ac9f7a8..00000000000 --- a/projects/flarefarm/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const songbird = require('./songbird.js') -const flare = require('./flare.js') - -// node test projects/flarefarm/index.js - -module.exports = { - misrepresentedTokens: true, - methodology: `Gets token balance from the smart contract address holding the user deposits. These addresses are are labele "tokensAndOwners". SFIN staked to earn more SFIN is labeles as "staking" category`, - songbird, - flare -} \ No newline at end of file diff --git a/projects/flarefarm/songbird.js b/projects/flarefarm/songbird.js deleted file mode 100644 index fbf8159073b..00000000000 --- a/projects/flarefarm/songbird.js +++ /dev/null @@ -1,92 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumUnknownTokens } = require("../helper/unknownTokens"); -const { staking } = require('../helper/staking') -const WSGB = ADDRESSES.songbird.WSGB -const CANARY_DOLLAR = ADDRESSES.songbird.CAND - const EXFI = ADDRESSES.songbird.EXFI; - const SFIN = ADDRESSES.songbird.SFIN; - -const chain = 'songbird' - -const LPs ={ - SGB_CAND_LP: '0x47C830E141234d029D953dF39B13d7728eB9f2d4', - EXFI_CAND_LP: '0xB5BF334B8Cc30B8B13fc035d171D77A217aaB091', - SFIN_CAND_LP: '0x48195Ca4D228ce487AE2AE1335B017a95493Ade6', - EXFI_SGB_LP: '0xC6D2f9e21bcD963B42D85379581003be1146b3Aa', - EXFI_SFIN_LP: '0xcD15C231b8A0Bae40bD7938AE5eA8e43f1e9a15F', - SGB_COOT_LP: '0x07852D5C7fd1d630Dd79148A195aaAF72241680D', - SFIN_SGB_LP: '0x5D4e155CA27e8DAd4E4aceE48F83B6E0E4AFEec0', - SGB_ExXDC_LP: '0x3233642aCf7664a69c33e5a6FFAb321608d7A65f', - EXFI_ExXDC_LP: '0xc41aA3ac0e6efcb780cd4696E7eC3B8193BB46E1', - SGB_ExUSDT_LP: '0x3b3C6d96EB6fd413f889573df6f0bd234B298D0C', - SGB_ExETH_LP: '0x8741083F971d5d96Be7F007528424d5732d9cDea', - SFIN_ExXDC_LP: '0x23e228B819b360B7028265d742905A4f61Ee2A43' -} - - -// farms which reward SFIN -// [LP token address, farm address] -async function farmTvl(timestamp, ethblock, { [chain]: block }) { - const tokens = [ - [WSGB, "0x6BA0F675EB2f169D15764D5cf10C4EF0e9e059f2"], - [EXFI, "0xc9231AB30b2B39c1f7f79132D7a44bBF0F8144B0"], - [CANARY_DOLLAR, "0x32b36B0A8B74Ac9212946a99e0af727848D5A3A1"], - [LPs.EXFI_SGB_LP, "0x02785B7CE6Eb9A5858561DDAB64cCBE5c478b730"], - [LPs.SGB_COOT_LP, "0x50756c69CAC800a3fA03d130721CDa02Aa0fEF69"], - [LPs.EXFI_CAND_LP, "0x864201b2227Ee23f0875c5D3Fc49F4F0ec59aC19"], - [LPs.SGB_CAND_LP, "0x921E8f58cF517d289c01BCBE800c2d31838c1a28"], - [EXFI, "0xad72C1483bBAB54B7f4e0024f6D4b437a69DA48b"], - [EXFI, "0xbEDfFd817383147616131ED38B7030277609d8B7"], - [EXFI, "0x6FD8A1a58645aaB92Aa6858b42a8dd985714fE15"], - [EXFI, "0x7e48Db2b486Cf90150421cBdcA401B86833F5333"], - [LPs.SGB_CAND_LP, "0xc387818C274a365D973AAb8287498350757D7b1f"], - [LPs.EXFI_CAND_LP,'0x53Fb520ea993C58dB5035b3a00FABB0dc8fE3CA4'], - [LPs.SGB_CAND_LP,'0xb4bD741343727EcBdACDE37124D869104b0AcAf8'], - [LPs.EXFI_SGB_LP,'0x1d1FAD6faAFc6a5Cd6652fFA7BA43F9E4fa75C0d'], - [EXFI, '0xD02C3e166223EE78F4d0ae99F5396142b48D97FE'], - [WSGB, '0x745d8896629842ef8E44D269f89A7A873086A6F2'], - [EXFI, "0x61128b44C299b0f7a752BF6278f44f1EcefD9109"], - [LPs.SGB_ExXDC_LP,'0xF81B465C562ED3f54Aea772D8A56FAF93884ea2E'], - [EXFI, "0x3B346b0b091fA8813f60Cd6e81b95b63375e22f5"], - [LPs.EXFI_ExXDC_LP, "0xa275DD75C1182055C7039b839cC0Da017c78933a"], - [EXFI,"0x74C09E58AB2fb74dF729000e36D338016396ee67"], - [LPs.SGB_ExUSDT_LP,"0xf2773bb7aa49FE3da03D327Abc0C49dB296133f3"], - [LPs.SGB_ExETH_LP,"0xa26e3420adbBAB053657D0b732A61B386576cC7D"], - [EXFI, '0xb78EBd4B13A2202068618BF98F952C0271159107'], - [LPs.SGB_CAND_LP, '0x6734b6e84195Df55E171c305D021101b5601B112'], - [LPs.EXFI_CAND_LP, '0x646262202Ffe1dE7d429802087F24D075121Ed8c'], - [LPs.EXFI_SGB_LP, '0xa3Eb6580bA9A0D6104EAAc63c077A185b6084b5f'], - [EXFI, '0x0a45bBE7e88B812e3DaB08B30093aF9b2A25477b'], - [EXFI, '0x645b0743A9899c1844b2036ffA443652737bc786'], - ]; - - return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, }) -} - -// farms where SFIN is one part of the pair -async function pool2(timestamp, ethblock, { [chain]: block }) { - const tokens = [ - [LPs.EXFI_SFIN_LP, "0x0732f6B4aBE5dB2127E671E4B218d340b6af169c"], - [LPs.EXFI_SFIN_LP, "0x3b343A6FC05B699F48CBe6FF127C0af8e2aA9EEE"], - [LPs.EXFI_SFIN_LP, "0x782BdE5353FAcFab1eBeC1803f2a575346193B30"], - [LPs.SFIN_CAND_LP, "0xc5478a1d5914cF9D0Ee20Da21459502eCb7E1646"], - [LPs.SFIN_CAND_LP, "0x9185D70f17eC13897D780601708b1b1F36A75d32"], - [LPs.EXFI_SFIN_LP, "0xD262AFf2Bb76f05cf470a7D935E717eEbA8ef799"], - [LPs.SFIN_SGB_LP, "0x2379FD47f100828382fFeaF26381Ba6608f7Bf73"], - [LPs.SFIN_SGB_LP, "0xC1ecfEA1148f9506FF10E9Ecf76F40884b4987Cc"], - [LPs.EXFI_SFIN_LP, "0xDa78E41813Cc2468bAA74ad3E84b35b7FedF42bD"], - [LPs.EXFI_SFIN_LP, '0x696E746d34703c9d640438Cc466eF58bCb7ce7c7'], - [LPs.SFIN_CAND_LP, '0x53828fF47a6d110416a884668566c6E7806d0613'], - [LPs.SFIN_SGB_LP, '0x0CC30B8D3d0246f691B35Ef3dA5Bf2A71CBdbceF'], - [LPs.EXFI_SFIN_LP,"0x0E437e1c7371b2ac0f3040e2B5866c9cb2e6EA64"], - [LPs.EXFI_SFIN_LP,"0xBdeF97BEb0a9f949b3542E60E89e66C354D299Ae"], - [LPs.SFIN_ExXDC_LP,"0x9E7d575014489B3557D3c53E837b772E7A1EB27c"], - ] - return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, }) -} - -module.exports = { - tvl: farmTvl, - pool2, - staking: staking(['0x554742076743b366504972F86609d64fd18BDC34', '0xd0dbAFF52224C0882cfaf1765f347Cb5e4364FA1','0xfe21dE68CbFB3dcBda28Ee8aB465dbA2039bc1f6'], SFIN), -}; \ No newline at end of file diff --git a/projects/flarex/index.js b/projects/flarex/index.js deleted file mode 100644 index 354ed6ab72d..00000000000 --- a/projects/flarex/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') - -const v1 =getUniTVL({ factory: '0x0eAC91966b12b81db18f59D8e893b9ccef7e2c30', useDefaultCoreAssets: true }) -const v2 =getUniTVL({ factory: '0x7a39408809441814469A8Fb3F5CFea1aA2774fB6', useDefaultCoreAssets: true }) - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0x7a39408809441814469A8Fb3F5CFea1aA2774fB6 - songbird, 0x28b70f6Ed97429E40FE9a9CD3EB8E86BCBA11dd4 - flare) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - songbird: { - tvl:sdk.util.sumChainTvls([v1,v2]) - }, - flare:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x28b70f6Ed97429E40FE9a9CD3EB8E86BCBA11dd4' }), - } -} \ No newline at end of file diff --git a/projects/flashpulse/index.js b/projects/flashpulse/index.js deleted file mode 100644 index 46da0dcaecd..00000000000 --- a/projects/flashpulse/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - pulse: { tvl: getUniTVL({ factory: '0xD2871d0d39A9cb0cB0505309A5C1F521df25a987', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/flashstake-old/index.js b/projects/flashstake-old/index.js deleted file mode 100644 index 6af7c3ed7da..00000000000 --- a/projects/flashstake-old/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0xb0aeae6e204bd95911ead25263d7078954fb7fb0', - topics: ['0x4f2ce4e40f623ca765fc0167a25cb7842ceaafb8d82d3dec26ca0d0e0d2d4896'], - eventAbi: 'event PoolCreated (address pool, address token)', - onlyArgs: true, - fromBlock: 12030855, - }) - return api.sumTokens({ tokensAndOwners: logs.map(log => [log.token, log.pool]) }) -} - -module.exports = { - ethereum: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/flashstake/index.js b/projects/flashstake/index.js deleted file mode 100644 index a66ebba28a6..00000000000 --- a/projects/flashstake/index.js +++ /dev/null @@ -1,76 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { staking } = require('../helper/staking') -// const { getLogs } = require('../helper/cache/getLogs') -const { getConfig } = require('../helper/cache') - -const config = { - ethereum: { protocol: '0x78b2d65dd1d3d9fb2972d7ef467261ca101ec2b9', fromBlock: 15233959, }, - optimism: { protocol: '0x78b2d65dd1d3d9fb2972d7ef467261ca101ec2b9', fromBlock: 31242674, }, - arbitrum: { protocol: '0x78b2d65dd1d3d9fb2972d7ef467261ca101ec2b9', fromBlock: 68227883, }, -} - -let configData - -async function getData() { - if(!configData) configData = getConfig('flashstake', 'https://api.flashstake.io/helper/whitelistedStrategies') - return configData -} - -module.exports = { - doublecounted: true, - start: '2022-08-01', - hallmarks: [ - [1659312000, "Protocol Launch"], - [1666641600, "Optimism Launch"], - [1674604800, "Flash Capacitor Launch"], - [1676484000, "Flido Launch"], - [1680022800, "Arbitrum Launch"], - [1684443600, "Rocket Pool Launch"] - ] -}; - - -Object.keys(config).forEach(chain => { - // const { fromBlock, protocol, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - // const logs = await getLogs({ - // api, - // fromBlock, - // topics: ['0xc775f148b1505cf5c3c3158b3bd09e79026cae37c17f0851eff0cac3a39027fb'], - // target: protocol, - // eventAbi: 'event StrategyRegistered(address indexed strategy, address indexed principal, address indexed _fTokenAddress)', - // }) - const data = await getData() - const strategy = Object.keys(data[chain]) - const [ - principal, - bals, - bals2, - ] = await Promise.all([ - api.multiCall({ abi: 'address:getPrincipalAddress', calls: strategy}), - api.multiCall({ abi: 'uint256:getPrincipalBalance', calls: strategy}), - api.multiCall({ abi: 'uint256:getYieldBalance', calls: strategy}), - ]) - bals.forEach((bal, i) => sdk.util.sumSingleBalance(balances,principal[i],bal, api.chain)) - bals2.forEach((bal, i) => sdk.util.sumSingleBalance(balances,principal[i],bal, api.chain)) - return balances - } - } - - if (chain === 'ethereum') { - module.exports.ethereum.pool2 = staking([ - "0xcb1205ac28693beda01e0b66e9b4d06231609bfd", - "0x57d551a18aae2c9de6977425f1df34dcd5db4977", - ], '0xb1c33de7a914f4d9ba293a055822cbc6e662a698') - module.exports.ethereum.staking = staking("0xb89494ab70001a2f25372b5e962046908188feea", '0xb1f1f47061a7be15c69f378cb3f69423bd58f2f8') - } - - if (chain === 'arbitrum') { - module.exports.arbitrum.pool2 = staking([ - "0xee376e38198E42f7fABf03856039805a45292014", - "0x1426CAcb9accb1C6E763C9aFdBa81f69eA076DC4", - ], '0xBC57A6567A0655B1e2805961FC4F20e6a1ff55BD') - } -}) diff --git a/projects/flashtrade/index.js b/projects/flashtrade/index.js deleted file mode 100644 index 943832c20b3..00000000000 --- a/projects/flashtrade/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); - -async function tvl() { - return sumTokens2({ owner: '81xGAvJ27ZeRThU2JEfKAUeT4Fx6qCCd8WHZpujZbiiG', }); -} - -module.exports = { - timetravel: false, - methodology: - "tvl is the usd equivalent value of all the assets in our pools.", - solana: { - tvl - }, -}; diff --git a/projects/flast-protocol/index.js b/projects/flast-protocol/index.js deleted file mode 100644 index 9f22dd9dff2..00000000000 --- a/projects/flast-protocol/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs") - -module.exports = { - methodology: "Value of user deposited ETH on Flast Protocol is considered as TVL", - hallmarks: [ - [1712880000, "Rug Pull"] - ], - blast: { - tvl: sumTokensExport({ owner: '0x7474796140775d8719584AA9923102ad7bf56490', tokens: [nullAddress] }), - }, -} \ No newline at end of file diff --git a/projects/flat-money-v2/index.js b/projects/flat-money-v2/index.js deleted file mode 100644 index 8426cd832d6..00000000000 --- a/projects/flat-money-v2/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const config = { - optimism: '0x86C7b9640302082B0dF78023F930d8612bFcaD3f', - arbitrum: '0x29fAD9d44C550e5D8081AB35763797B39d75b858', -} - -Object.keys(config).forEach(chain => { - const vault = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const collateral = await api.call({ abi: 'address:collateral', target: vault }) - return api.sumTokens({ tokensAndOwners: [[collateral, vault]] }) - } - } -}) \ No newline at end of file diff --git a/projects/flat-money/index.js b/projects/flat-money/index.js deleted file mode 100644 index 1a8b77407a5..00000000000 --- a/projects/flat-money/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const config = { - base: '0x95Fa1ddc9a78273f795e67AbE8f1Cd2Cd39831fF', -} - -Object.keys(config).forEach(chain => { - const vault = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const collateral = await api.call({ abi: 'address:collateral', target: vault }) - return api.sumTokens({ tokensAndOwners: [[collateral, vault]] }) - } - } -}) \ No newline at end of file diff --git a/projects/flatcoin/index.js b/projects/flatcoin/index.js deleted file mode 100644 index 7955bcdcc18..00000000000 --- a/projects/flatcoin/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const owner = 'TV8ndiKP98SF537BM9XvEbzkY2TerXNzEs' -const token = ADDRESSES.tron.USDT - -module.exports = { - tron: { - tvl: sumTokensExport({tokensAndOwners: [[token, owner]], }), - }, -} diff --git a/projects/flaunch/index.js b/projects/flaunch/index.js deleted file mode 100644 index f6b1d07e99c..00000000000 --- a/projects/flaunch/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - base: { - tvl: async (api) => { - return { - [`base:${ADDRESSES.base.WETH}`]: await api.call({ target: "0x000000000d564d5be76f7f0d28fe52605afc7cf8", abi: "uint:underlyingETHBalance" }) - } - } - } -} \ No newline at end of file diff --git a/projects/flex-powercity-io/index.js b/projects/flex-powercity-io/index.js deleted file mode 100644 index abca4499e35..00000000000 --- a/projects/flex-powercity-io/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLiquityTvl } = require("../helper/liquity.js"); -const { sumTokensExport } = require("../helper/unknownTokens.js"); - -// TroveManager holds total system collateral (deposited HEX) -const TROVE_MANAGER_ADDRESS = "0xC2D0720721d48cE85e20Dc9E01B8449D7eDd14CE"; -const HEX_ADDRESS = ADDRESSES.pulse.HEX; - -// Staking holds LQTY tokens and receive share of protocol revenue -const STAKING_ADDRESS = "0xCeC2c718ceFdb3A515D3CC22e430b46933922CE4"; -const FLEX_ADDRESS = "0x9c6fA17D92898B684676993828143596894AA2A6"; - -const HEXDC_FARMING_ADDRESS = "0x63D134B47692d154C78053117D803e22cB1F7593"; -const LP_HEXDC_HEX_ADDRESS = "0x9756F095DfA27D4c2EAE0937a7b8a6603D99Affb"; - -const FLEX_FARMING_ADDRESS = "0x74F8A9dFefe855Dc97a4A4962b7c6cEc074aED62"; -const LP_FLEX_HEX_ADDRESS = "0x476d63aB94B4E86614Df0C3D5A27E9e22631D062"; -const lps = [LP_HEXDC_HEX_ADDRESS, LP_FLEX_HEX_ADDRESS] - -module.exports = { - start: '2024-05-01', - methodology: "Total Value Locked includes all Troves, Stability Pool, Staking Pool and LP Farming Pools", - pulse: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS, { collateralToken: HEX_ADDRESS }), - staking: sumTokensExport({ owner: STAKING_ADDRESS, tokens: [FLEX_ADDRESS], lps, useDefaultCoreAssets: true, }), - pool2: sumTokensExport({ owners: [HEXDC_FARMING_ADDRESS, FLEX_FARMING_ADDRESS], tokens: lps, useDefaultCoreAssets: true, }), - } -} \ No newline at end of file diff --git a/projects/flexa.js b/projects/flexa.js deleted file mode 100644 index 51692aeb18f..00000000000 --- a/projects/flexa.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens } = require('./helper/unwrapLPs') - -async function tvl(_, block) { - return sumTokens({}, [ - ['0xff20817765cb7f73d4bde2e66e067e58d11095c2', '0x706D7F8B3445D8Dfc790C524E3990ef014e7C578'], - ], block) -} - -module.exports = { - ethereum: { tvl } -} diff --git a/projects/flexdao/index.js b/projects/flexdao/index.js deleted file mode 100644 index 5ffabacb978..00000000000 --- a/projects/flexdao/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { staking } = require('../helper/staking') - -// DAO from Coinflex utility token FLEX -// https://coinflex.com/support/2-2-9-flexdao - -const FLEX = '0x98Dd7eC28FB43b3C4c770AE532417015fa939Dd3' -const veFLEX = '0xA9bB3b5334347F9a56bebb3f590E8dF97fC091f9' -const coingeckoId = 'flex-coin' -const chain = 'smartbch' -const decimals = 18 - -module.exports = { - methodology: 'Counting all FLEX tokens staked in the DAO', - [chain]: { - tvl: ()=>({}), - staking: staking(veFLEX, FLEX, chain, coingeckoId, decimals) - }, -}; diff --git a/projects/flexperp/index.js b/projects/flexperp/index.js deleted file mode 100644 index ca611a73236..00000000000 --- a/projects/flexperp/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const FDX = "0xE248c0bCE837B8dFb21fdfa51Fb31D22fbbB4380"; -const LFDX = "0x8ae234597bf9670aa854e3928a2b016AF2cbA33b"; -const AEROLP = "0x789e4612f6c2b1c851493f015de0b32b567c281d"; -const fdxStakingAddress = "0xbD5E6070E1dd19Bd3af24A46caE2634dA9f22e5B"; -const stfdxlpStakingAddress = "0xF00e53B7F3112834625f5AD5d47dA0e6E427E660"; -const vaultStorageAddress = "0x1375653D8a328154327e48A203F46Aa70B6C0b92"; - -async function baseTvl(api) { - const flpUnderlyings = [ - ADDRESSES.base.USDC, - ADDRESSES.base.WETH, - ADDRESSES.ethereum.cbBTC // cbBTC - ]; - - // Fetch base TVL from FLP pool - await api.sumTokens({ owner: vaultStorageAddress, tokens: flpUnderlyings }); -} - -async function staking(api) { - // Fetch LFDX total supply (staked FDX) - const lfdxTotalSupply = await api.call({ abi: "erc20:totalSupply", target: LFDX }); - api.add(FDX, lfdxTotalSupply); -} - -async function pool2(api) { - // Fetch AEROLP balances from staking contract - await api.sumTokens({ owner: stfdxlpStakingAddress, tokens: [AEROLP] }); -} - -module.exports = { - start: '2025-02-20', - base: { - tvl: baseTvl, - staking, - pool2, - }, -}; diff --git a/projects/flipster/index.js b/projects/flipster/index.js deleted file mode 100644 index a73d5360ec4..00000000000 --- a/projects/flipster/index.js +++ /dev/null @@ -1,126 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xd49417f37cED33aBA35DDAbf208D5bFcD87b4eBe', - '0x25F6710AF9866971A3CCaaf8895e286F6ccDa9F6', - '0x711948E4d826A37Aa564C41c7B50de7E45c9Ee44', - '0x8C50172e1534826F40C288A41793cFc57bB37538', - '0xd157bD19Ea0953f8B29E34b4Bee08fC4cba2B6a4', - ], - }, - tron: { - owners: [ - 'TA6SbszfFYC7NYt48viCM9LMD5F5E1Gbi8', - 'TL3gWBCybJbvJt8CaLyxzUvQvyFYkCbmQR', - 'TApVQ5DRptVNyhxRpFn9DgYv6mgqtyPRjn', - 'TS5Btew8Wrk85cFx2kJ4gC28JsrFLXpJjU', - ] - }, - bitcoin: { - owners: bitcoinAddressBook.flipster - }, - arbitrum: { - owners: [ - '0xa9b686EE77EfC18e7a08c48FA823CAA0cfDd754E' - ] - }, - optimism: { - owners: [ - '0x27605eb3BAae062459e1291A65137Da109B1440D' - ] - }, - ripple: { - owners: [ - 'rDjLFq7ZxUx9iYQ1jV5MYbLHnBsSkyfqj3' - ] - }, - sonic: { - owners: [ - '0xeeebcdf3ddd52d4Ab34EFA127a0d6b74385062Ac' - ] - }, - solana: { - owners: [ - 'FgQygQyFJ5SB8idVQcee6v1uGoQbJMyVhW8BFPTAEpat' - ] - }, - avax: { - owners: [ - '0x04723FcDAD0d2A201EbBeD043714fD52651e0C5e' - ] - }, - bsc: { - owners: [ - '0xCD47f02B261426Ab734Be9271156327327407E43' - ] - }, - polygon: { - owners: [ - '0xfA705a98FA89134F460Bf79457D4fbd3d8E118d9' - ] - }, - ton: { - owners: [ - 'EQDQpuuVQI6Vzpewyll_xSP_SAlSNjXo9RngD9y99C8MVJri', - 'EQBlnb9GCDGnJ5XEqamHL7Sj5_0wJ4MGja5T6PKlwVAISgrW', - ] - }, - algorand: { - owners: [ - 'WECLYJ4ERN445J4Y4IDRV274HMFG7MJ3A2IWOUCHSUKEQNORIVW7QEKKNY' - ] - }, - base: { - owners: [ - '0x8f4B87cE14F234163ed28AE7D79E138f07a71638' - ] - }, - blast: { - owners: [ - '0xa63b24599110BB34c029164baB8F14013C4D877A' - ] - }, - celo: { - owners: [ - '0xECfa1357a76499FF04C8306a869d518f2dD6297f' - ] - }, - // conflux: { - // owners: [ - // 'cfx:aajnh5j7c85prg3nf8kyg3hdawy4unyvf6bhdr1fkz' - // ] - // }, - cosmos: { - owners: [ - 'cosmos1gcsur9g2vxagmyr0u7pc9kcvtyd7zuyen3n5x7' - ] - }, - klaytn: { - owners: [ - '0x61e57F94FD0239EC568db7c4dd778f168c737682' - ] - }, - near: { - owners: [ - 'd09904357488c186e9105396dc32f1a1180bf9870a09c037b3282372e337e770' - ] - }, - sui: { - owners: [ - '0xfcdde971bdb9105fc3cb1c95ca468e8b88d23c6594162b2d2b1dadf16acf5b3a' - ] - }, - aptos: { - fungibleAssets: [ADDRESSES.aptos.USDt], - owners: [ - '0x0613f31af70ce983b9dca574e033a52351fd2e67b1959bf48574c6e9c956f95e' - ] - } -} - -module.exports = cexExports(config) -module.exports.methodology = 'All reserves information can be found here https://flipster.io/support/proof-of-reserves.' diff --git a/projects/float-capital/abi.json b/projects/float-capital/abi.json deleted file mode 100644 index b4f0aae209e..00000000000 --- a/projects/float-capital/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "exchangeRateStored": "uint256:exchangeRateStored" -} \ No newline at end of file diff --git a/projects/float-capital/index.js b/projects/float-capital/index.js deleted file mode 100644 index 18520aec8b5..00000000000 --- a/projects/float-capital/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const vaults = [ - "0xce5da4bebBA980BeC39da5b118750A47a23D4B85", - "0x595b1408C9c2BF121c7674E270Ca7aCc0bBf100C", - "0x694c240e63CF60a2cD2d38d84D902744640AcCDA", - "0x92f29DfceA469ab498ade826FB41d065482B6abA", - "0xB26289Bee42Aa1ad51466dc28e68ab89f0541A7f", - "0x1372276638bFc1FCe909B05783D91e526B801669", - "0x38c23db64e4a22A9f277216a34A88f5a1fB3Cf5e", -]; -const amDAI = "0x27f8d03b3a2196956ed754badc28d73be8830a6e"; -const avaults = [ - "0xefE423827b87751f9EB91A90a78edc624601565b", - "0x621cda10820555adAe8506eeC296cB9621E491Ff", - "0x47a21F14794b6229cc2a1ddfe4498C9e48f1C16c", -]; -const avDAI = "0x47afa96cdc9fab46904a55a6ad4bf6660b53c38a"; - -async function polyTvl(api) { - return sumTokens2({ api, owners: vaults, token: amDAI}) -} - - -async function avaxTvl(api) { - await sumTokens2({ api, owners: avaults, token: avDAI}) - await sumTokens2({ api, owner: '0xcD62196CC117EA7fd9525ADe37e44d01209e8EBB', token: '0xc988c170d0E38197DC634A45bF00169C7Aa7CA19'}) - return sumTokens2({ api, owner: '0xEb2A90ED68017Ac1B068077C5D1537f4C544036C', token: '0x835866d37afb8cb8f8334dccdaf66cf01832ff5d'}) -} - -module.exports = { - polygon: { - tvl: polyTvl, - }, - avax: { - tvl: avaxTvl, - }, - methodology: `Gets the tokens on markets`, -}; diff --git a/projects/float/abi.json b/projects/float/abi.json deleted file mode 100644 index 2db08afdb70..00000000000 --- a/projects/float/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "stakeToken": "address:stakeToken" -} \ No newline at end of file diff --git a/projects/float/index.js b/projects/float/index.js deleted file mode 100644 index 39205c5a6a2..00000000000 --- a/projects/float/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const multiplier_pool_single = [ - "0x52eadaFf8E3d816CE205691D1D703e08d369F576", - "0x432573cf5b10eb9A160624ca2725199DC1b56e3e", -]; - -// adding some old phases, which still hold certain % of tvl -const multiplier_pool_slp = [ - // BANK/ETH sLP - "0x726FF99C3f2aa0B0debadE809D2Ac75C5DfA3736", - // FLOAT/ETH sLP - "0xE73cf1bBC792c796826f9E57263483fd3DD38d50", - // BANK-ETH sLPPhase2Pool - "0xd04F4759A2cc28A5AE33287534CAA4dfcE90B9C3", - // BANK-ETH sLPPhase4Pool - "0x08D7e47Beb0470fc683bbdE7d836c5dcd48754F2", - // FLOAT-ETH sLPPhase4Pool - "0xCD817491872bdB33e0D21589bd92DbfF43387CA4", -]; - -const ethTvl = async (api) => { - const owners = multiplier_pool_single.concat(multiplier_pool_slp); - const tokens = await api.multiCall({ abi: abi.stakeToken, calls: owners }) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], }) -} - -module.exports = { - ethereum: { - tvl: ethTvl - } -}; diff --git a/projects/flokifi-locker/index.js b/projects/flokifi-locker/index.js deleted file mode 100644 index 0fce0d1c144..00000000000 --- a/projects/flokifi-locker/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const { getConfig, getCache, setCache, } = require('../helper/cache'); -const { sumUnknownTokens, getLPList, } = require("../helper/cache/sumUnknownTokens"); - -const project = 'flokifi-locker' - -const chains = { - 'ethereum': 1, - 'bsc': 56, - 'arbitrum': 42161, - 'optimism': 10, - 'polygon': 137, - 'fantom': 250, - 'avax': 43114, - 'okexchain': 66, - 'kcc': 321, - 'cronos': 25, - 'evmos': 9001, - 'op_bnb': 204, - 'base': 8453, - 'dogechain': 2000, - 'blast': 81457, -} - -async function fetch(chainId) { - const response = await getConfig(`${project}/${chainId}`, 'https://api.flokifi.com/tokens/vault-pairs-tvl?chainId=' + chainId); - return response.tokensAndVaults; -} - -function splitPairs(pairs) { - let uniV3NFTHolders = []; - const tokensAndOwners = []; - for (let i = 0; i < pairs.length; i++) { - const pair = pairs[i]; - if (pair.isV3) uniV3NFTHolders.push(pair.vaultAddress.toLowerCase()) - else tokensAndOwners.push([pair.tokenAddress.toLowerCase(), pair.vaultAddress]); - } - uniV3NFTHolders = [...new Set(uniV3NFTHolders)]; // remove duplicates - return { tokensAndOwners, uniV3NFTHolders }; -} - -async function tvl(api) { - const chain = api.chain - const pairs = await fetch(chains[chain]); - let cache = getCache(project, chain) || {} - const { tokensAndOwners, uniV3NFTHolders } = splitPairs(pairs); - let lpList = await getLPList({ lps: tokensAndOwners.map(i => i[0]), ...api, cache, api, }) - const balances = await sumUnknownTokens({ - tokensAndOwners: tokensAndOwners.filter(i => lpList.includes(i[0])), - api, useDefaultCoreAssets: true, - }); - await setCache(project, chain, cache) - - return balances; -} - -Object.keys(chains).forEach(chain => { - module.exports[chain] = { tvl } -}) - -module.exports.misrepresentedTokens = true diff --git a/projects/floor-dao/api.js b/projects/floor-dao/api.js deleted file mode 100644 index 606277d1561..00000000000 --- a/projects/floor-dao/api.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('./index') -const { ohmStaking } = require('../helper/treasury') - -module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/floor-dao/index.js b/projects/floor-dao/index.js deleted file mode 100644 index 92baadf74a1..00000000000 --- a/projects/floor-dao/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, sumTokensExport, } = require('../helper/unwrapLPs') -const sdk = require("@defillama/sdk"); -// https://docs.floor.xyz/fundamentals/treasury - -const WETH = ADDRESSES.ethereum.WETH -const USDC = ADDRESSES.ethereum.USDC - -const NFTX_LP_STAKING = '0x688c3e4658b5367da06fd629e41879beab538e37' -const treasury = '0x91E453f442d25523F42063E1695390e325076ca2' -const floorTreasury2 = "0xa9d93a5cca9c98512c8c56547866b1db09090326"; -const stakingAddress = '0x759c6de5bca9ade8a1a2719a31553c4b7de02539' -const FLOOR = '0xf59257E961883636290411c11ec5Ae622d19455e' - -module.exports.methodology = 'Using ohmTvl for staking and treasury core TVL, and adding xPUNK and xPUNKWETH balances using 1:1 mapping with PUNK and PUNK-WETH sushi LP' - -module.exports = { - ethereum: { - tvl: async (_, block) => { - const vaults = [0, 24, 27, 298, 392,] - const stakingInfo = await sdk.api2.abi.multiCall({ - target: NFTX_LP_STAKING, - abi: abis.vaultStakingInfo, - calls: vaults.map(i => ({ params: i})), - block, - }) - const stakingBalances = await sdk.api2.abi.multiCall({ - target: NFTX_LP_STAKING, - abi: abis.balanceOf, - calls: vaults.map(i => ({ params: [i, treasury]})), - block, - }) - const balances = {} - stakingBalances.forEach((bal,i) => sdk.util.sumSingleBalance(balances,stakingInfo[i][0],bal)) - return sumTokens2({ balances, block, owners: [treasury, floorTreasury2], tokens: [WETH, USDC], resolveLP: true, }) - }, - staking: sumTokensExport({owner: stakingAddress, tokens: [FLOOR]}) - } -} - -const abis = { - vaultStakingInfo: "function vaultStakingInfo(uint256) view returns (address stakingToken, address rewardToken)", - balanceOf: "function balanceOf(uint256 vaultId, address addr) view returns (uint256)", -} \ No newline at end of file diff --git a/projects/flooring-io/index.js b/projects/flooring-io/index.js deleted file mode 100644 index fb49f1e5dd8..00000000000 --- a/projects/flooring-io/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owner: '0x3eb879cc9a0Ef4C6f1d870A40ae187768c278Da2', - tokens: ['0xb6a37b5d14d502c3ab0ae6f3a0e058bc9517786e', '0xfd1b0b0dfa524e1fd42e7d51155a663c581bbd50', '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d'], - fetchCoValentTokens: true, - resolveNFTs: true, - blacklistedTokens: ['0x102c776DDB30C754dEd4fDcC77A19230A60D4e4f', '0x9b947Cc819b00AF2e377C025C3f386fbf3C0055c'], - }), - - staking: sumTokensExport({ owner: '0x3eb879cc9a0Ef4C6f1d870A40ae187768c278Da2', tokens: ['0x102c776DDB30C754dEd4fDcC77A19230A60D4e4f'], }), - // pool2: sumTokensExport({ owner: '0xe34139463ba50bd61336e0c446bd8c0867c6fe65', resolveUniV3: true,}), - } -} \ No newline at end of file diff --git a/projects/florence-finance/index.js b/projects/florence-finance/index.js deleted file mode 100644 index c191bf482b7..00000000000 --- a/projects/florence-finance/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ETH_ARB_BRIDGE = "0xcee284f754e854890e311e3280b767f80797180d"; -const ETH_FLR = "0x5e5d9aeec4a6b775a175b883dca61e4297c14ecb"; -const ETH_EURS = "0xdb25f211ab05b1c97d595516f45794528a807ad8"; - -const ARB_FLR = "0x9b6226dd0191a77d032f56a6d383044ee99944c3"; -const ARB_AGEUR = "0xfa5ed56a203466cbbc2430a43c66b9d8723528e7"; - -const BASE_FLR = "0x4ee4bea687D5cE6245198db136D32aeC02806A83"; -const BASE_EURC = "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42"; - -async function getTotalSupply(token, { api }) { - const totalSupply = await api.call({ - abi: "function totalSupply() external view returns (uint256)", - target: token, - }); - return totalSupply; -} - -async function getBorrowedOnEthereum(api) { - const [flrSupply, flrInBridgeCustody] = await Promise.all([getTotalSupply(ETH_FLR, { api }), await api.call({ - abi: "function balanceOf(address account) view returns (uint256)", - target: ETH_FLR, - params: [ETH_ARB_BRIDGE], - })]); - - const borrowed = flrSupply - flrInBridgeCustody; //Subtract FLR in bridge custody to avoid double counting accross chains - - api.add(ETH_EURS, borrowed / 1e16); //18 decimals (FLR) -> 2 decimals (EURS) -} - -async function getBorrowedOnArbitrum(api) { - const borrowed = await getTotalSupply(ARB_FLR, { api }); //FLR that are bridged to Ethereum are burned by the Arbitrum bridge. So there is no need to subtract here. - api.add(ARB_AGEUR, borrowed); //Decimals of FLR and agEUR are both 18. No conversion needed. -} - -async function getBorrowedOnBase(api) { - const borrowed = await getTotalSupply(BASE_FLR, { api }); //FLR on Base are not multi-chain so there is no need to subtract anything yet. - api.add(BASE_EURC, borrowed / 1e12); //12 decimals (FLR) -> 2 decimals (EURC) -} - -module.exports = { - methodology: - "The Florin token (FLR) is minted whenever a new loan is funded and burned when a loan matures and is repaid. Since the Florin token is 1:1 redeemable for EUR the borrowed amount is denominated in the protocols treasuries EUR stablecoin of the respective chain. Consequently the total supply of Florin equals the amount borrowed through the protocol. To avoid double counting, the amount of FLR held in the bridge contract is subtracted from the total supply. ", - ethereum: { borrowed: getBorrowedOnEthereum, tvl: () => ({}) }, - arbitrum: { borrowed: getBorrowedOnArbitrum, tvl: () => ({}) }, - base: { borrowed: getBorrowedOnBase, tvl: () => ({}) }, -}; \ No newline at end of file diff --git a/projects/flow/index.js b/projects/flow/index.js deleted file mode 100644 index 35b08110e19..00000000000 --- a/projects/flow/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { trySumTokens } = require("../helper/chain/cardano"); -const { get } = require("../helper/http"); -const poolAddressesURL = "https://surflending.org/api/getPoolAddresses"; - -async function tvl() { - let poolAddresses = await get(poolAddressesURL); - let addresses = Object.values(poolAddresses.poolAddresses).flatMap( - (entry) => [entry.poolAddress, entry.vaultUTxOsAddress] - ); - let assetsLocked = await trySumTokens({ - owners: addresses, - }); - return assetsLocked; -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - }, -}; diff --git a/projects/flowx-finance-clmm/index.js b/projects/flowx-finance-clmm/index.js deleted file mode 100644 index 0046f31ba95..00000000000 --- a/projects/flowx-finance-clmm/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const tvl = async (api) => { - const rawPoolInfos = await sui.getDynamicFieldObjects({ parent: "0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc" }) - const poolInfos = rawPoolInfos.map((i) => i.fields) - - poolInfos.forEach(({ reserve_x, reserve_y, coin_type_x, coin_type_y }) => { - const nameX = coin_type_x?.fields?.name; - const nameY = coin_type_y?.fields?.name; - - if (nameX && reserve_x) api.add(nameX.startsWith("0x") ? nameX : "0x" + nameX, reserve_x); - if (nameY && reserve_y) api.add(nameY.startsWith("0x") ? nameY : "0x" + nameY, reserve_y) - }) -} - -module.exports = { - sui: { tvl } -} \ No newline at end of file diff --git a/projects/flowx-finance/index.js b/projects/flowx-finance/index.js deleted file mode 100644 index 03c6d8d5abf..00000000000 --- a/projects/flowx-finance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const sui = require("../helper/chain/sui"); - -async function suiTVL() { - const { api } = arguments[3]; - - const poolInfo = ( - await sui.getDynamicFieldObjects({ - parent: - "0xd15e209f5a250d6055c264975fee57ec09bf9d6acdda3b5f866f76023d1563e6", - }) - ).map((i) => i.fields.value.fields); - poolInfo.forEach(({ reserve_x, reserve_y }) => { - api.add( - reserve_x.type.replace(">", "").split("<")[1], - reserve_x.fields.balance - ); - api.add( - reserve_y.type.replace(">", "").split("<")[1], - reserve_y.fields.balance - ); - }); -} - -module.exports = { - sui: { - tvl: suiTVL, - }, -}; diff --git a/projects/flrbank/index.js b/projects/flrbank/index.js deleted file mode 100644 index 2ffff43c6a1..00000000000 --- a/projects/flrbank/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - flare: { - tvl: sumTokensExport({ owners: ['0x194726F6C2aE988f1Ab5e1C943c17e591a6f6059', '0x90679234FE693B39BFdf5642060Cb10571Adc59b'], token: ADDRESSES.flare.WFLR}) - } -} \ No newline at end of file diff --git a/projects/fluid-protocol/index.js b/projects/fluid-protocol/index.js deleted file mode 100644 index d9537addb7e..00000000000 --- a/projects/fluid-protocol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens } = require("../helper/chain/fuel") - -async function tvl(api) { - const contractId = '0xb18340bfe68c0b3a4fbd3a3ae2c014be94c16569b7f360cf53efe1b7023e545e' - - return sumTokens({ api, owner: contractId }) -} - -module.exports = { - fuel: { tvl }, - timetravel: false, -} diff --git a/projects/fluid/index.js b/projects/fluid/index.js deleted file mode 100644 index 802e33f6194..00000000000 --- a/projects/fluid/index.js +++ /dev/null @@ -1,101 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const methodologies = require("../helper/methodologies"); -const abi = { - getOverallTokensDataLegacy: - "function getOverallTokensData(address[] tokens_) view returns ((uint256 borrowRate, uint256 supplyRate, uint256 fee, uint256 lastStoredUtilization, uint256 storageUpdateThreshold, uint256 lastUpdateTimestamp, uint256 supplyExchangePrice, uint256 borrowExchangePrice, uint256 supplyRawInterest, uint256 supplyInterestFree, uint256 borrowRawInterest, uint256 borrowInterestFree, uint256 totalSupply, uint256 totalBorrow, uint256 revenue, (uint256 version, (address token, uint256 kink, uint256 rateAtUtilizationZero, uint256 rateAtUtilizationKink, uint256 rateAtUtilizationMax) rateDataV1, (address token, uint256 kink1, uint256 kink2, uint256 rateAtUtilizationZero, uint256 rateAtUtilizationKink1, uint256 rateAtUtilizationKink2, uint256 rateAtUtilizationMax) rateDataV2) rateData)[] overallTokensData_)", - getOverallTokensData: - "function getOverallTokensData(address[] tokens_) view returns ((uint256 borrowRate, uint256 supplyRate, uint256 fee, uint256 lastStoredUtilization, uint256 storageUpdateThreshold, uint256 lastUpdateTimestamp, uint256 supplyExchangePrice, uint256 borrowExchangePrice, uint256 supplyRawInterest, uint256 supplyInterestFree, uint256 borrowRawInterest, uint256 borrowInterestFree, uint256 totalSupply, uint256 totalBorrow, uint256 revenue, uint256 maxUtilization, (uint256 version, (address token, uint256 kink, uint256 rateAtUtilizationZero, uint256 rateAtUtilizationKink, uint256 rateAtUtilizationMax) rateDataV1, (address token, uint256 kink1, uint256 kink2, uint256 rateAtUtilizationZero, uint256 rateAtUtilizationKink1, uint256 rateAtUtilizationKink2, uint256 rateAtUtilizationMax) rateDataV2) rateData)[] overallTokensData_)", -}; - -const config = { - liquidity: "0x52aa899454998be5b000ad077a46bbe360f4e497", - ethereum: { - liquidityResolver: (block) => { - if (block < 19992056) { - return "0x741c2Cd25f053a55fd94afF1afAEf146523E1249"; - } - return "0xD7588F6c99605Ab274C211a0AFeC60947668A8Cb"; - }, - weETH: ADDRESSES.ethereum.WEETH, - zircuit: "0xF047ab4c75cebf0eB9ed34Ae2c186f3611aEAfa6", - weETHs: "0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88", - }, - arbitrum: { - liquidityResolver: (block) => "0x46859d33E662d4bF18eEED88f74C36256E606e44", - }, - base: { - liquidityResolver: (block) => "0x35A915336e2b3349FA94c133491b915eD3D3b0cd", - }, - polygon: { - liquidityResolver: (block) => "0x98d900e25AAf345A4B23f454751EC5083443Fa83", - }, - plasma: { - liquidityResolver: (block) => "0x4b6Bb77196A7B6D0722059033a600BdCD6C12DB7", - }, -}; - -async function getListedTokens(api) { - return await api.call({ - target: config[api.chain].liquidityResolver(api.block), - abi: "function listedTokens() public view returns (address[] memory listedTokens_)", - }); -} - -async function tvl(api) { - const tokens = await getListedTokens(api); - const chain = api.chain; - - if (chain == "ethereum") { - // add WeETH deployed to Zircuit - api.add( - config.ethereum.weETH, - await api.call({ - target: config.ethereum.zircuit, - abi: "function balance(address, address) public view returns (uint256 balance)", - params: [config.ethereum.weETH, config.liquidity], - }) - ); - // add WeETHs deployed to Zircuit - api.add( - config.ethereum.weETHs, - await api.call({ - target: config.ethereum.zircuit, - abi: "function balance(address, address) public view returns (uint256 balance)", - params: [config.ethereum.weETHs, config.liquidity], - }) - ); - } - - return api.sumTokens({ - owner: config.liquidity, - tokens: [ - ADDRESSES.null, - ...tokens.filter( - (t) => t.toLowerCase() !== ADDRESSES.GAS_TOKEN_2.toLowerCase() - ), - ], - }); -} - -async function borrowed(api) { - const tokens = await getListedTokens(api); - const borrowed = await api.call({ - target: config[api.chain].liquidityResolver(api.block), - abi: api.chain == "ethereum" && api.block < 19992056 ? abi.getOverallTokensDataLegacy : abi.getOverallTokensData, - params: [tokens], - }); - api.add( - tokens, - borrowed.map((x) => x.totalBorrow) - ); -} - -module.exports = { - methodology: methodologies.lendingMarket, - ethereum: { tvl, borrowed }, - arbitrum: { tvl, borrowed }, - base: { tvl, borrowed }, - polygon: { tvl, borrowed }, - plasma: { tvl, borrowed }, -}; -// node test.js projects/fluid/index.js diff --git a/projects/fluidity-money/index.js b/projects/fluidity-money/index.js deleted file mode 100644 index 8acb56eb3c4..00000000000 --- a/projects/fluidity-money/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getTokenSupplies } = require("../helper/solana") -const ATOKENS_ETHEREUM = ['0x028171bCA77440897B824Ca71D1c56caC55b68A3', '0x101cc05f4A51C0319f570d5E146a8C625198e636', '0xd4937682df3C8aEF4FE912A96A74121C0829E664']; -const APOOL_ETHEREUM = ['0xFC66c25dbDb0606e7F9cA1d2754Eb0A0f8306dA9', '0x5E88f6dc0aa126FA28A137B24d0B4d7231352a0B', '0xB7a2930e66D84Da74CdcFE4f97FaE9fC8f1114e8']; -const ATOKENS_ARBITRUM = ['0x6ab707Aca953eDAeFBc4fD23bA73294241490620', '0x625E7708f30cA75bfd92586e17077590C60eb4cD', '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', '0x724dc807b04555b71ed48a6896b6f41593b8c637']; -const APOOL_ARBITRUM = ['0xad7e2165FEa1d29030dF806cE4d530fa7a44511B', '0x23E7f09Fae0933db01420173726d18Dae809022C', '0xB7D37C5b15CDF29265C20668c20cD78586c423A8', '0x91beB5C41dF001175b588C9510327D53f278972A']; -const COMPOUND_ETHEREUM = [ - ['0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9', '0x372025203D25589eC3aDAd82652De78eC76fFabC'], - ['0x39AA39c021dfbaE8faC545936693aC917d5E7563', '0xE87Adc9D382Eee54C1eDE017D6E5C1324D59F457'], -]; -async function tvl_eth(api) { - await sumTokens2({ api, tokensAndOwners: COMPOUND_ETHEREUM }) - await sumTokens2({ api, tokensAndOwners2: [ATOKENS_ETHEREUM, APOOL_ETHEREUM] }) -} - -async function tvl_arb(api) { - await sumTokens2({ api, tokensAndOwners2: [ATOKENS_ARBITRUM, APOOL_ARBITRUM] }) -} - -async function tvl_sol(api) { - const fUSDC = 'Ez2zVjw85tZan1ycnJ5PywNNxR6Gm4jbXQtZKyQNu3Lv' - const res = await getTokenSupplies([fUSDC]) - api.add(fUSDC, res[fUSDC]) -} - -module.exports = { - methodology: "Value of stablecoins + interest accrued in pools. TVL on Solana is equal to the total supply of fUSDC.", - ethereum: { - tvl: tvl_eth, - }, - arbitrum: { - tvl: tvl_arb, - }, - solana: { - tvl: tvl_sol, - } -}; // node test.js projects/fluidity-money/index.js \ No newline at end of file diff --git a/projects/fluidtokens/index.js b/projects/fluidtokens/index.js deleted file mode 100644 index 529e02f3192..00000000000 --- a/projects/fluidtokens/index.js +++ /dev/null @@ -1,119 +0,0 @@ -const { - getAddressesUTXOs, - getTxsMetadata, - getTxsRedeemers, -} = require("../helper/chain/cardano/blockfrost"); -const { PromisePool } = require("@supercharge/promise-pool"); -const { get } = require("../helper/http"); - -const smartContractAddress = - "addr1wxzqzlncct5g0686c07lyuq3q3j2a0t8l88uwdznw99k9asz6z0hq"; - -const tvl_onchain = async () => { - let utxos = await getAddressesUTXOs(smartContractAddress); - - let utxosWithRedeemer = []; // Only the UTXO with redeemer have actually been taken and are and active loan - - const { errors } = await PromisePool.withConcurrency(10) - .for(utxos) - .process(async (utxo) => { - const redeemer = await getTxsRedeemers(utxo.tx_hash); - if (redeemer.length > 0) utxosWithRedeemer.push(utxo); - }); - - if (errors && errors.length) throw errors[0]; - - let loanDetails = []; - - const { errors: errors1 } = await PromisePool.withConcurrency(10) - .for(utxosWithRedeemer) - .process(async (utxo) => { - const details = await getTxsMetadata(utxo.tx_hash); - loanDetails.push(details[0].json_metadata); - }); - - if (errors1 && errors1.length) throw errors1[0]; - - const TVL = loanDetails.reduce((x, y) => { - return x + parseInt(y.AMOUNT); - }, 0); - return { - cardano: TVL / 1e6, - }; -}; - -async function tvl() { - const dataOffers = await get("https://api.fluidtokens.com/get-available-collection-offers"); - let SC_offers_tvl = 0; - - dataOffers.forEach((i) => { - SC_offers_tvl += parseInt(i.offerData.loanAmnt); - }); - - const repay_tvl = parseInt(await get("https://api.fluidtokens.com/get-total-available-repayments")); - - const pools_tvl= parseInt(await get("https://api.fluidtokens.com/get-total-available-pools")); - - const boosted_tvl= await get("https://api.fluidtokens.com/get-ft-stats"); - - const boosted=parseInt(boosted_tvl.bs_available_volume)+parseInt(boosted_tvl.bs_active_volume); - -const lending_v3 = await get("https://api.fluidtokens.com/get-tvl"); - -const principal = lending_v3.collectionOfferPools.principal; -const collateral = lending_v3.loans.collateral; - -// Sum and convert to integer -const total_v3 = Math.floor(principal + collateral); - - return { - // cardano: (SC_offers_tvl+repay_tvl+pools_tvl+boosted) / 1e6, - cardano: (SC_offers_tvl+pools_tvl+boosted+total_v3) / 1e6, - }; -} - -async function staking() { - const data = await get("https://api.fluidtokens.com/get-ft-stats"); - let staking = parseInt(data.staking_tvl); - - return { - cardano: (staking) / 1e6, - }; -} - -async function borrowed() { - const data = await get("https://api.fluidtokens.com/get-ft-stats"); - let SC_tvl = parseInt(data.active_loans_volume); - - - const dataOffers = await get("https://api.fluidtokens.com/get-available-collection-offers"); - let SC_offers_tvl = 0; - - - const lending_v3 = await get("https://api.fluidtokens.com/get-tvl"); -const lent = lending_v3.loans.principal; - - - dataOffers.forEach((i) => { - SC_offers_tvl += parseInt(i.offerData.loanAmnt); - }); - - return { - cardano: (SC_tvl+lent) / 1e6, - }; -} - - -module.exports = { - methodology: "Count active loaned out ADA as tvl", - timetravel: false, - cardano: { - tvl, - borrowed, - staking - }, - hallmarks: [ - ["2023-01-01", "Count only active loans"], - ["2023-06-27", "ADA loaned out is counted under borrowed"], - ], -}; diff --git a/projects/fluity/index.js b/projects/fluity/index.js deleted file mode 100644 index 47ef61763d2..00000000000 --- a/projects/fluity/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getLiquityTvl } = require("../helper/liquity"); -const TROVE_MANAGER_ADDRESS = "0xe041c4099C0d6dcfC52C56A556EE4289D2E4b7C5"; - -module.exports = { - bsc: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS) - } -} diff --git a/projects/flux-exchange/index.js b/projects/flux-exchange/index.js deleted file mode 100644 index 25fe65e5617..00000000000 --- a/projects/flux-exchange/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -const FTMVault = "0xc050733A325eEe50E544AcCbD38F6DACEd60ea6D"; -const FTMStaking = "0x136F1bD4Bb930cD931Ed30310142c2f03a946AC0"; -const WFTM = ADDRESSES.fantom.WFTM; - -// ZKSYNC -const zkSyncVault = "0x09Aa1138dfdfF855Df18DDAf08e92186D213700e"; -const zkSyncStaking = "0xFae2784FaE4D47316B487Bc0087a7C78D4809753"; -const WETH = ADDRESSES.era.WETH; - -module.exports = { - fantom: { - staking: staking(FTMStaking, WFTM), - tvl: gmxExports({ vault: FTMVault }) - }, - era: { - staking: staking(zkSyncStaking, WETH), - tvl: gmxExports({ vault: zkSyncVault }) - } -}; \ No newline at end of file diff --git a/projects/flux-protocol/index.js b/projects/flux-protocol/index.js deleted file mode 100644 index 134a4b794c9..00000000000 --- a/projects/flux-protocol/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { queryAddresses, sumTokens } = require("../helper/chain/radixdlt"); - -const FLUX_COMPONENT = - "component_rdx1czgv2hx5lq4v5tjm32u69s5dw8ja0d4qeau2y5vktvaxlrmsfdy08u"; -const LSU_POOL = - "component_rdx1cppy08xgra5tv5melsjtj79c0ngvrlmzl8hhs7vwtzknp9xxs63mfp"; -const LSU_LP = - "resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf"; - -async function tvl(api) { - //get the token amounts of collaterals used in the STAB Protocol - const fluxTokens = await sumTokens({ owners: [FLUX_COMPONENT], api }); - - //Flux contains XRD and LSULP. sumTokens automatically api.add()s these, but LSULP is not priced, so we need to add it manually. - //First we get the LSULP amount. - const lsuLpAmount = - fluxTokens[ - "radixdlt:resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf" - ]; - - //LSULP is a pool of staked XRD, so the value of LSULP can be denominated in XRD. - //We calculate the value of 1 LSULP by getting the total value of the pool in XRD, and dividing by the total supply of LSULP. - const items = await queryAddresses({ addresses: [LSU_LP, LSU_POOL] }); - - const lsuLpItem = items.find((item) => item.address === LSU_LP); - const lsuPoolItem = items.find((item) => item.address === LSU_POOL); - - const totalLsulpSupply = lsuLpItem.details.total_supply; - const lsuPoolXrdValue = lsuPoolItem.details.state.fields[4].value; - - //calculate the value of 1 LSULP in XRD - const lsuLpMultiplier = lsuPoolXrdValue / totalLsulpSupply; - - //add LSULP value to tvl - api.add( - ADDRESSES.radixdlt.XRD, - lsuLpAmount * lsuLpMultiplier - ); - - //as said previously, sumTokens automatically performs api.add(), so we subtract the LSULP amount to be sure. - //This is not strictly necessary right now, as LSULP is not priced by DefiLlama, - //but if it were priced, it would be counted twice without subtracting here. - api.add(LSU_LP, -1 * lsuLpAmount); -} - -module.exports = { - methodology: - "Calculates TVL using the amount of collateral locked to borrow fUSD using CDPs (Flux Generators). Does not count fUSD locked in Stability Pools (Flux Reservoirs).", - radixdlt: { tvl }, - misrepresentedTokens: true, - timetravel: false, -}; diff --git a/projects/flux/index.js b/projects/flux/index.js deleted file mode 100644 index c6662fd03ac..00000000000 --- a/projects/flux/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const sdk = require('@defillama/sdk') - -// data taken from https://config.cdn.whoops.world/flux/mainnet.json -const config = { - bsc: { reportContract: '0x4b2542dEE16CF8Eacf9D5C8F457F0F433FBccAF3' }, - okexchain: { reportContract: '0xfE8d959e0bE8B4e1D53382C691575344abD43F46' }, - polygon: { reportContract: '0x6233CbDf22dAC3f9aa74f7aCb88E9F286782f46B' }, - // heco: { reportContract: '0x9CA69bb48ef2f4DA6a9351BeB50984DB263BF839' }, - arbitrum: { reportContract: '0x6233CbDf22dAC3f9aa74f7aCb88E9F286782f46B' }, - ethereum: { reportContract: '0x02DC57283fB5ebB5442839010013F5771F16078D' }, - conflux: { reportContract: '0x6233CbDf22dAC3f9aa74f7aCb88E9F286782f46B' } -} - -const getFluxTVLDetail = 'function getFluxTVLDetail() view returns (uint256 totalSupply, uint256 totalBorrow, uint256 totalStaked)' - -module.exports = { - misrepresentedTokens: true, - deadFrom: '2022-12-07', -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (_, _b, {[chain]: block}) => { - const { reportContract } = config[chain] - const { output: { totalSupply, totalBorrow, } } = await sdk.api.abi.call({ - target: reportContract, - chain, block, - abi: getFluxTVLDetail, - }) - - return { - tether: (totalSupply - totalBorrow) / 1e18 - } - }, - borrowed: () => ({}), // bad debt - - /*async (_, _b, {[chain]: block}) => { - const { reportContract } = config[chain] - const { output: { totalBorrow, } } = await sdk.api.abi.call({ - target: reportContract, - chain, block, - abi: getFluxTVLDetail, - }) - - return { - tether: totalBorrow / 1e18 - } - },*/ - staking: async (_, _b, {[chain]: block}) => { - const { reportContract } = config[chain] - const { output: { totalStaked, } } = await sdk.api.abi.call({ - target: reportContract, - chain, block, - abi: getFluxTVLDetail, - }) - - return { - tether: totalStaked / 1e18 - } - }, - } -}) - diff --git a/projects/fluxbeam-xyz/index.js b/projects/fluxbeam-xyz/index.js deleted file mode 100644 index 547e3a561dd..00000000000 --- a/projects/fluxbeam-xyz/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getConnection, decodeAccount, sumTokens2 } = require('../helper/solana') -const sdk = require('@defillama/sdk') -const { PublicKey } = require("@solana/web3.js") - -async function tvl(api) { - throw new Error('Try to find tvl some other way, too many tokenaccount calls and it is overwhelming the system') - const connection = getConnection() - - const programPublicKey = new PublicKey('FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X') - const programAccounts = await connection.getProgramAccounts(programPublicKey, { - filters: [{ dataSize: 324 } ] - }); - sdk.log('#pools', programAccounts.length) - - const tokenAccounts = programAccounts.map((account) => { - const i = decodeAccount('fluxbeam', account.account) - return [i.tokenAccountA, i.tokenAccountB] - }).flat().map(i => i.toString()) - return sumTokens2({ tokenAccounts, allowError: true }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, - isHeavyProtocol: true, -} -3 \ No newline at end of file diff --git a/projects/fluxfinance/index.js b/projects/fluxfinance/index.js deleted file mode 100644 index e63ad31fea9..00000000000 --- a/projects/fluxfinance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { lendingMarket } = require("../helper/methodologies"); -const { compoundExports, } = require("../helper/compound"); - -const comptroller = "0x95Af143a021DF745bc78e845b54591C53a8B3A51"; - -module.exports = { - methodology: `${lendingMarket}. TVL is calculated by getting the market addresses from comptroller and calling the getCash() on-chain method to get the amount of tokens locked in each of these addresses, then we get the price of each token from coingecko.`, - ethereum: compoundExports(comptroller), -}; diff --git a/projects/fluxtra/index.js b/projects/fluxtra/index.js deleted file mode 100644 index 10111a4b4b2..00000000000 --- a/projects/fluxtra/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') - -const ADDRESSES = { - LSD_CONTRACT: 'mantra1e7kn2n6p9qsxxkght69s485dxeln29u8kq75r06lywmv9j7kh4lqq4cyeh', -} - -async function tvl(api) { - const data = await queryContract({ chain: 'mantra', contract: ADDRESSES.LSD_CONTRACT, data: { state: {} } }) - api.add('uom', data.tvl_utoken) -} - -module.exports = { - methodology: "Liquidity on LSD staking", - mantra: { tvl }, -}; diff --git a/projects/fluxusbase/index.js b/projects/fluxusbase/index.js deleted file mode 100644 index 9df25afdda0..00000000000 --- a/projects/fluxusbase/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'base': '0x27c2d144b106B26Be3d0dEB6c14c5CFA2e9a507C' -}, { - hasStablePools: true, -}) \ No newline at end of file diff --git a/projects/fndzdao/index.js b/projects/fndzdao/index.js deleted file mode 100644 index 3fde7a46341..00000000000 --- a/projects/fndzdao/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') -const { get } = require('../helper/http') -const { getConfig } = require('../helper/cache') -const sdk = require('@defillama/sdk') -const chain = 'bsc' -const getTrackedAssetsAbi = "address[]:getTrackedAssets" - -async function tvl(_, _b, {[chain]: block }) { - const res = await getConfig('fndzdao', 'https://api.fndz.io/tvl') - const vaults = res.result.chains[0].vault_addresses; - const { output: tokens } = await sdk.api.abi.multiCall({ - abi: getTrackedAssetsAbi, - calls: vaults.map(i => ({ target: i})), - chain, block, - }) - const toa = tokens.map(({ input: { target }, output}) => output.map(i => ([i, target]))).flat() - return sumTokens2({ chain, block, tokensAndOwners: toa, }) -} - -module.exports = { - timetravel: false, - bsc: { - tvl, - staking: staking('0x4910638b88c40Ee382CEd72A4056E2f859Bd4658', '0x7754c0584372d29510c019136220f91e25a8f706', chain) - }, -}; \ No newline at end of file diff --git a/projects/fodl/abi.json b/projects/fodl/abi.json deleted file mode 100644 index b4c99b67af8..00000000000 --- a/projects/fodl/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getPositionsMetadata": "function getPositionsMetadata(address[] positions) returns (tuple(uint256 supplyAmount, uint256 borrowAmount, uint256 collateralUsageFactor, uint256 principalValue, uint256 positionValue, address positionAddress, address platformAddress, address supplyTokenAddress, address borrowTokenAddress)[] assetsData)", - "tokenByIndex": "function tokenByIndex(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/fodl/index.js b/projects/fodl/index.js deleted file mode 100644 index 49b7a76d45b..00000000000 --- a/projects/fodl/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const abi = require('./abi.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); -const { sliceIntoChunks } = require('../helper/utils'); - -module.exports = { - ethereum: { - tvl: () => ({}), - }, - polygon: { - tvl: () => ({}), - }, - bsc: { - tvl: () => ({}), - } -} - -module.exports.deadFrom = '2023-01-01' - -// taken from https://app.fodl.finance/config.json -// const config = { -// ethereum: { -// position_nft: '0x70febba7d45cfe6d99847ba4ccc393373b1ea8aa', -// lens_contract: '0x080155C42b0854C3A718B610cC5183e963851Afb', -// pool2: [ -// ['0xa5c475167f03b1556c054e0da78192cd2779087f', '0xf958a023d5b1e28c32373547bdde001cad17e9b4'], -// ['0xce7e98d4da6ebda6af474ea618c6b175729cd366', '0xa7453338ccc29e4541e6c6b0546a99cc6b9eb09a'], -// ], -// staking: [ -// ['0x4c2e59d098df7b6cbae0848d66de2f8a4889b9c3', '0x7e05540A61b531793742fde0514e6c136b5fbAfE'], -// ], -// }, -// polygon: { -// position_nft: '0x7243c51c24b302b01094785f3c826f9311525613', -// lens_contract: '0xbfE6971Fc6F195bcacB72beE3427f5b4d8C3dc07', -// pool2: [ -// ['0x2fc4dfcee8c331d54341f5668a6d9bcdd86f8e2f', '0xea7336c408ec8012e6b97368198512597e49c88a'], -// ], -// }, -// bsc: { -// position_nft: '0x4c2e59d098df7b6cbae0848d66de2f8a4889b9c3', -// lens_contract: '0x6032035731c9F0b2E53Da63ca15444375E946559', -// }, -// } - -// module.exports = { -// methodology: "FODL leverages users positions on Aave and Compound. The fodl lens contract is used to get the positions metadata, especially supplyAmount and supplyTokenAddress, which counts as the TVL of the position of the user. Pool2 TVL are the tokens locked in the SUSHI pools", -// }; - -// Object.keys(config).forEach(chain => { -// const { position_nft, lens_contract, pool2, staking, } = config[chain] -// module.exports[chain] = { -// tvl: async (_, _b, { [chain]: block }, { api }) => { -// const allPositions = await api.fetchList({ lengthAbi: 'erc20:totalSupply', itemAbi: abi.tokenByIndex, target: position_nft, }) -// for (const positions of sliceIntoChunks(allPositions, 50)) { -// const data = await api.multiCall({ abi: abi.getPositionsMetadata, calls: sliceIntoChunks(positions, 10).map(i => ({ params: [i] })), target: lens_contract, }) -// data.forEach(j => { -// j.forEach(i => api.add(i.supplyTokenAddress, i.supplyAmount)) -// }) -// } -// } -// } - -// if (pool2) -// module.exports[chain].pool2 = sumTokensExport({ tokensAndOwners: pool2, chain, }) - -// if (staking) -// module.exports[chain].staking = sumTokensExport({ tokensAndOwners: staking, chain, }) -// }) - diff --git a/projects/folks-finance/index.js b/projects/folks-finance/index.js deleted file mode 100644 index 484e2de9687..00000000000 --- a/projects/folks-finance/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { toUSDTBalances } = require("../helper/balances"); -const { v1TvlUsd, v1BorrowedBalancesUsd } = require("./v1"); -const { v2BorrowedBalancesUsd, v2TvlUsd } = require("./v2"); - -/* Get total deposits */ -async function tvl() { - const v1Tvl = await v1TvlUsd(); - const v2Tvl = await v2TvlUsd(); - - return toUSDTBalances(v1Tvl + v2Tvl); -} - -async function borrowedBalances() { - const v1BorrowedBalances = await v1BorrowedBalancesUsd(); - const v2BorrowedBalances = await v2BorrowedBalancesUsd(); - - return toUSDTBalances(v1BorrowedBalances + v2BorrowedBalances); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - algorand: { - tvl, - borrowed: borrowedBalances, - }, -}; diff --git a/projects/folks-finance/utils.js b/projects/folks-finance/utils.js deleted file mode 100644 index 2596d6ca6d0..00000000000 --- a/projects/folks-finance/utils.js +++ /dev/null @@ -1,106 +0,0 @@ -const { lookupApplications } = require("../helper/chain/algorand"); -const { encodeAddress } = require("../helper/chain/algorandUtils/address"); - -function fromIntToBytes8Hex(num) { - return num.toString(16).padStart(16, "0"); -} - -function encodeToBase64(str, encoding = "utf8") { - return Buffer.from(str, encoding).toString("base64"); -} - -function parseOracleValue(base64Value) { - const value = Buffer.from(base64Value, "base64").toString("hex"); - // first 8 bytes are the price - const price = BigInt("0x" + value.slice(0, 16)); - - return price; -} - -function parseOracleAdapterValue(base64Value) { - const value = Buffer.from(base64Value, "base64").toString("hex"); - // first 8 bytes are if Tinyman - const isTinyman = Number(`0x${value.slice(0, 16)}`); - // next 16 bytes are asset ids - const asset0Id = Number(`0x${value.slice(16, 32)}`); - const asset1Id = Number(`0x${value.slice(32, 48)}`); - - // check if LP token is Tinyman or Pact - if (isTinyman) { - // next 32 bytes are tinyman pool address - const poolAddress = encodeAddress(Buffer.from(value.slice(48, 112), "hex")); - return { provider: "Tinyman", asset0Id, asset1Id, poolAddress }; - } else { - // next 8 bytes are pact pool app id - const poolAppId = Number(`0x${value.slice(48, 64)}`); - return { provider: "Pact", asset0Id, asset1Id, poolAppId }; - } -} - -function getParsedValueFromState(state, key, encoding = "utf8") { - const encodedKey = encoding ? encodeToBase64(key, encoding) : key; - const keyValue = state.find((entry) => entry.key === encodedKey); - if (keyValue === undefined) return; - const { value } = keyValue; - if (value.type === 1) return value.bytes; - if (value.type === 2) return BigInt(value.uint); - return; -} - -async function getAppState(appId) { - const res = await lookupApplications(appId); - return res.application.params["global-state"]; -} - -/** - * Calculate the sqrt of a bigint (rounded down to nearest integer) - * @param value value to be square-rooted - * @return bigint sqrt - */ -function sqrt(value) { - if (value < BigInt(0)) - throw Error("square root of negative numbers is not supported"); - - if (value < BigInt(2)) return value; - - function newtonIteration(n, x0) { - const x1 = (n / x0 + x0) >> BigInt(1); - if (x0 === x1 || x0 === x1 - BigInt(1)) return x0; - return newtonIteration(n, x1); - } - - return newtonIteration(value, BigInt(1)); -} - -/** - * Calculates the LP price - * @param r0 pool supply of asset 0 - * @param r1 pool supply of asset 1 - * @param p0 price of asset 0 - * @param p1 price of asset 1 - * @param lts circulating supply of liquidity token - * @return bigint LP price - */ -function calcLPPrice(r0, r1, p0, p1, lts) { - return BigInt(2) * (sqrt(r0 * p0 * r1 * p1) / lts); -} - -function isTinymanLPTokenPool(pool) { - return "poolAppAddress" in pool; -} - -function isPactLPTokenPool(pool) { - return "poolAppId" in pool; -} - -module.exports = { - fromIntToBytes8Hex, - encodeToBase64, - parseOracleValue, - parseOracleAdapterValue, - getParsedValueFromState, - getAppState, - isTinymanLPTokenPool, - isPactLPTokenPool, - calcLPPrice, -}; diff --git a/projects/folks-finance/v1/constants.js b/projects/folks-finance/v1/constants.js deleted file mode 100644 index 99b36d48df7..00000000000 --- a/projects/folks-finance/v1/constants.js +++ /dev/null @@ -1,137 +0,0 @@ -const pools = [ - { - // Algo - appId: 686498781, - assetId: 0, - assetDecimals: 6, - }, - { - // gALGO - appId: 794055220, - assetId: 793124631, - assetDecimals: 6, - }, - { - // USDC - appId: 686500029, - assetId: 31566704, - assetDecimals: 6, - }, - { - // USDt - appId: 686500844, - assetId: 312769, - assetDecimals: 6, - }, - { - // goBTC - appId: 686501760, - assetId: 386192725, - assetDecimals: 8, - }, - { - // goETH - appId: 694405065, - assetId: 386195940, - assetDecimals: 8, - }, - { - // gAlgo3 - appId: 694464549, - assetId: 694432641, - assetDecimals: 6, - }, - // USDC-gALGO TMP1.1 - { - appId: 805843312, - assetId: 794948880, - assetDecimals: 6, - poolAppAddress: - "3WT6YVLQY2WSQ6VLX73MJB7BI3CGBDTB2KKAAFZ2CZQJUFUCIOMUN2K24U", - }, - // ALGO-gALGO PLP - { - appId: 805846536, - assetId: 794882756, - assetDecimals: 6, - poolAppId: 794882684, - }, - { - // Algo-gAlgo3 TMP1.1 - appId: 743679535, - assetId: 694683000, - assetDecimals: 6, - poolAppAddress: - "WNA4H7Y3UGEVNEVVFU2TUDLMOMLWSV72UF6SYYRBOQ7IGDW4ZIOKYWNIWU", - }, - { - // Algo-gAlgo3 PLP - appId: 743685742, - assetId: 701364134, - assetDecimals: 6, - poolAppId: 701363946, - }, - { - // Algo-USDC TMP1.1 - appId: 747237154, - assetId: 552647097, - assetDecimals: 6, - poolAppAddress: - "FPOU46NBKTWUZCNMNQNXRWNW3SMPOOK4ZJIN5WSILCWP662ANJLTXVRUKA", - }, - { - // Algo-USDC PLP - appId: 747239433, - assetId: 620996279, - assetDecimals: 6, - poolAppId: 620995314, - }, - { - // USDC-USDt TMP1.1 - appId: 776179559, - assetId: 552888874, - assetDecimals: 6, - poolAppAddress: - "I37JDCOJCK2JSPRMV5HHFHQ54YU6J6VWCBCDNULIT5ZJWO357R2DJLGIBM", - }, - { - // USDC-USDt PLP - appId: 776176449, - assetId: 701273234, - assetDecimals: 6, - poolAppId: 701273050, - }, - { - // Planets - appId: 751285119, - assetId: 27165954, - assetDecimals: 6, - }, - { - // goBTC-gALGO PLP - appId: 818026112, - assetId: 807805560, - assetDecimals: 6, - poolAppId: 807805342, - }, - { - // goETH-gALGO PLP - appId: 818028354, - assetId: 807804381, - assetDecimals: 6, - poolAppId: 807804196, - }, -]; - -const oracleAppId = 956833333; -const oracleAdapterAppId = 751277258; -const oracleDecimals = 14; -const tinymanValidatorAppId = 552635992; - -module.exports = { - pools, - oracleAppId, - oracleAdapterAppId, - oracleDecimals, - tinymanValidatorAppId, -}; diff --git a/projects/folks-finance/v1/index.js b/projects/folks-finance/v1/index.js deleted file mode 100644 index 1556c8f164b..00000000000 --- a/projects/folks-finance/v1/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const { getAppGlobalState } = require("../../helper/chain/algorand"); - -const { pools } = require("./constants"); -const { getPrices } = require("./prices"); - -let pricesCache, borrowedCache; - -async function getCachedPrices() { - if (!pricesCache) pricesCache = getPrices(); - return pricesCache; -} - -async function getTotalPoolDepositsUsd(prices) { - const promises = pools.map(async (pool) => { - const state = await getAppGlobalState(pool.appId); - const totalDeposits = state.total_deposits; - const numericDeposits = isNaN(Number(totalDeposits)) - ? 0 - : Number(totalDeposits); - const depositAmountUsd = numericDeposits * prices[pool.assetId]; - - return depositAmountUsd; - }); - - const depositsAmountUsd = await Promise.all(promises); - const totalDepositsUsd = depositsAmountUsd.reduce((a, b) => a + b, 0); - - return totalDepositsUsd; -} - -/* Get total deposits */ -async function tvl() { - const prices = await getCachedPrices(); - - const [depositsAmountUsd, borrowsAmountUsd] = await Promise.all([ - getTotalPoolDepositsUsd(prices), - borrowed(), - ]); - - return depositsAmountUsd - borrowsAmountUsd; -} - -/* Get total borrows */ -async function borrowed() { - if (!borrowedCache) borrowedCache = _borrowed(); - return borrowedCache; - - async function _borrowed() { - const prices = await getCachedPrices(); - - const promises = pools.map(async (pool) => { - const state = await getAppGlobalState(pool.appId); - const borrowAmount = state.total_borrows; - const numericBorrowAmount = isNaN(Number(borrowAmount)) - ? 0 - : Number(borrowAmount); - const borrowAmountUsd = numericBorrowAmount * prices[pool.assetId]; - - return borrowAmountUsd; - }); - - const borrowsAmountUsd = await Promise.all(promises); - const totalBorrowsUsd = borrowsAmountUsd.reduce((a, b) => a + b, 0); - return totalBorrowsUsd; - } -} - -module.exports = { - v1TvlUsd: tvl, - v1BorrowedBalancesUsd: borrowed, -}; diff --git a/projects/folks-finance/v1/prices.js b/projects/folks-finance/v1/prices.js deleted file mode 100644 index 5599ce32b40..00000000000 --- a/projects/folks-finance/v1/prices.js +++ /dev/null @@ -1,114 +0,0 @@ -const { - lookupAccountByID, - lookupApplications, -} = require("../../helper/chain/algorand"); -const { - oracleAppId, - oracleAdapterAppId, - pools, - tinymanValidatorAppId, - oracleDecimals, -} = require("./constants"); -const { - getAppState, - getParsedValueFromState, - fromIntToBytes8Hex, - parseOracleValue, - parseOracleAdapterValue, - calcLPPrice, -} = require("../utils"); - -async function getTinymanLPPrice(validatorAppId, poolAddress, p0, p1) { - const res = await lookupAccountByID(poolAddress); - const { account } = res; - - const state = account["apps-local-state"]?.find( - (app) => app.id === validatorAppId - )?.["key-value"]; - if (state === undefined) - throw new Error( - `Unable to find Tinyman Pool: ${poolAddress} for validator app ${validatorAppId}.` - ); - const r0 = BigInt(getParsedValueFromState(state, "s1") || 0); - const r1 = BigInt(getParsedValueFromState(state, "s2") || 0); - const lts = BigInt(getParsedValueFromState(state, "ilt") || 0); - - return calcLPPrice(r0, r1, p0, p1, lts); -} - -async function getPactLPPrice(poolAppId, p0, p1) { - const res = await lookupApplications(poolAppId); - const state = res.application.params["global-state"]; - - const r0 = BigInt(getParsedValueFromState(state, "A") || 0); - const r1 = BigInt(getParsedValueFromState(state, "B") || 0); - const lts = BigInt(getParsedValueFromState(state, "L") || 0); - - return calcLPPrice(r0, r1, p0, p1, lts); -} - -/* Get prices from oracle */ -async function getPrices() { - const oracleState = await getAppState(oracleAppId); - const oracleAdapterState = await getAppState(oracleAdapterAppId); - const prices = {}; - - let price; - for (const pool of pools) { - const base64Value = getParsedValueFromState( - oracleAdapterState, - fromIntToBytes8Hex(pool.assetId), - "hex" - ); - - // check if liquidity token - if (base64Value !== undefined) { - const oracleAdapterValue = parseOracleAdapterValue(base64Value); - - const price0 = parseOracleValue( - String( - getParsedValueFromState( - oracleState, - fromIntToBytes8Hex(oracleAdapterValue.asset0Id), - "hex" - ) - ) - ); - const price1 = parseOracleValue( - String( - getParsedValueFromState( - oracleState, - fromIntToBytes8Hex(oracleAdapterValue.asset1Id), - "hex" - ) - ) - ); - - price = - oracleAdapterValue.provider === "Tinyman" - ? await getTinymanLPPrice( - tinymanValidatorAppId, - oracleAdapterValue.poolAddress, - price0, - price1 - ) - : await getPactLPPrice(oracleAdapterValue.poolAppId, price0, price1); - } else { - price = parseOracleValue( - String( - getParsedValueFromState( - oracleState, - fromIntToBytes8Hex(pool.assetId), - "hex" - ) - ) - ); - } - - prices[pool.assetId] = Number(price) / 10 ** oracleDecimals; - } - - return prices; -} - -module.exports = { getPrices }; diff --git a/projects/folks-finance/v2/constants.js b/projects/folks-finance/v2/constants.js deleted file mode 100644 index 799943b23a7..00000000000 --- a/projects/folks-finance/v2/constants.js +++ /dev/null @@ -1,143 +0,0 @@ -const pools = [ - // ALGO - { - appId: 971368268, - assetId: 0, - fAssetId: 971381860, - }, - // gALGO - { - appId: 971370097, - assetId: 793124631, - fAssetId: 971383839, - }, - // xALGO - { - appId: 2611131944, - assetId: 1134696561, - fAssetId: 2611138444, - }, - // tALGO - { - appId: 3073474613, - assetId: 2537013734, - fAssetId: 3073480070, - }, - // USDC - { - appId: 971372237, - assetId: 31566704, - fAssetId: 971384592, - }, - // USDt - { - appId: 971372700, - assetId: 312769, - fAssetId: 971385312, - }, - // GARD - { - appId: 1060585819, - assetId: 684649988, - fAssetId: 1060587336, - }, - // EURS - { - appId: 1247053569, - assetId: 227855942, - fAssetId: 1247054501, - }, - // goBTC - { - appId: 971373361, - assetId: 386192725, - fAssetId: 971386173, - }, - // goETH - { - appId: 971373611, - assetId: 386195940, - fAssetId: 971387073, - }, - // WBTC - { - appId: 1067289273, - assetId: 1058926737, - fAssetId: 1067295154, - }, - // WETH - { - appId: 1067289481, - assetId: 887406851, - fAssetId: 1067295558, - }, - // WAVAX - { - appId: 1166977433, - assetId: 893309613, - fAssetId: 1166979636, - }, - // WSOL - { - appId: 1166980669, - assetId: 887648583, - fAssetId: 1166980820, - }, - // WLINK - { - appId: 1216434571, - assetId: 1200094857, - fAssetId: 1216437148, - }, - // GOLD - { - appId: 1258515734, - assetId: 246516580, - fAssetId: 1258524377, - }, - // SILVER - { - appId: 1258524099, - assetId: 246519683, - fAssetId: 1258524381, - }, - // OPUL - { - appId: 1044267181, - assetId: 287867876, - fAssetId: 1044269355, - }, - // WMPL - { - appId: 1166982094, - assetId: 1163259470, - fAssetId: 1166982296, - }, - // ISOLATED_ALGO - { - appId: 3184317016, - assetId: 0, - fAssetId: 3184331013, - }, - // ISOLATED_USDC - { - appId: 3184324594, - assetId: 31566704, - fAssetId: 3184331239, - }, - // ISOLATED_TINY - { - appId: 3184325123, - assetId: 2200000000, - fAssetId: 3184331789, - }, -]; - -const oracleAppId = 1040271396; -const oracleDecimals = 14; - -module.exports = { - pools, - oracleAppId, - oracleDecimals, -}; diff --git a/projects/folks-finance/v2/index.js b/projects/folks-finance/v2/index.js deleted file mode 100644 index 5524ebf84e5..00000000000 --- a/projects/folks-finance/v2/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const { getAppState, getParsedValueFromState } = require("../utils"); -const { pools } = require("./constants"); -const { getCachedPrices } = require("./prices"); - -function parseUint64s(base64Value) { - const value = Buffer.from(base64Value, "base64").toString("hex"); - - // uint64s are 8 bytes each - const uint64s = []; - for (let i = 0; i < value.length; i += 16) { - uint64s.push(BigInt("0x" + value.slice(i, i + 16))); - } - return uint64s; -} - -async function retrievePoolInfo({ poolAppId, poolAssetId }) { - const state = await getAppState(poolAppId); - - if (state === undefined) - return { - depositsUsd: 0, - borrowsUsd: 0, - }; - - const prices = await getCachedPrices(); - const price = prices[poolAssetId]; - if (price === undefined) return { depositsUsd: 0, borrowsUsd: 0 }; - - const varBor = parseUint64s(String(getParsedValueFromState(state, "v"))); - const stblBor = parseUint64s(String(getParsedValueFromState(state, "s"))); - const interest = parseUint64s(String(getParsedValueFromState(state, "i"))); - - const variableBorrowAmountUsd = Number(varBor[3]) * price; - const stableBorrowAmountUsd = Number(stblBor[8]) * price; - const borrowsAmountUsd = variableBorrowAmountUsd + stableBorrowAmountUsd; - const depositsAmountUsd = Number(interest[3]) * price; - - // combine - return { - depositsUsd: depositsAmountUsd, - borrowsUsd: borrowsAmountUsd, - }; -} - -async function getPoolsInfo() { - const promises = pools.map(async (pool) => - retrievePoolInfo({ poolAppId: pool.appId, poolAssetId: pool.assetId }) - ); - const poolsInfo = await Promise.all(promises); - - return poolsInfo.reduce( - (acc, poolInfo) => { - acc.totalDepositsUsd += poolInfo.depositsUsd; - acc.totalBorrowsUsd += poolInfo.borrowsUsd; - return acc; - }, - { totalDepositsUsd: 0, totalBorrowsUsd: 0 } - ); -} - -/* Get total deposits */ -async function tvl() { - const { totalDepositsUsd, totalBorrowsUsd } = await getPoolsInfo(); - - return totalDepositsUsd - totalBorrowsUsd; -} - -/* Get total borrows */ -async function borrows() { - const { totalBorrowsUsd } = await getPoolsInfo(); - - return totalBorrowsUsd; -} - -module.exports = { - v2TvlUsd: tvl, - v2BorrowedBalancesUsd: borrows, -}; diff --git a/projects/folks-finance/v2/prices.js b/projects/folks-finance/v2/prices.js deleted file mode 100644 index 20766ca93fa..00000000000 --- a/projects/folks-finance/v2/prices.js +++ /dev/null @@ -1,92 +0,0 @@ -const { oracleAppId, oracleDecimals } = require("./constants"); -const { - getAppState, - getParsedValueFromState, - fromIntToBytes8Hex, - parseOracleValue, -} = require("../utils"); - -function decodeUint64(data, decodingMode = "safe") { - if ( - decodingMode !== "safe" && - decodingMode !== "mixed" && - decodingMode !== "bigint" - ) { - throw new Error(`Unknown decodingMode option: ${decodingMode}`); - } - - if (data.byteLength === 0 || data.byteLength > 8) { - throw new Error( - `Data has unacceptable length. Expected length is between 1 and 8, got ${data.byteLength}` - ); - } - - // insert 0s at the beginning if data is smaller than 8 bytes - const padding = Buffer.allocUnsafe(8 - data.byteLength); - padding.fill(0); - - const buf = Buffer.concat([padding, Buffer.from(data)]); - - const num = buf.readBigUInt64BE(); - const isBig = num > Number.MAX_SAFE_INTEGER; - - if (decodingMode === "safe") { - if (isBig) { - throw new Error( - `Integer exceeds maximum safe integer: ${num.toString()}. Try decoding with "mixed" or "safe" decodingMode.` - ); - } - return Number(num); - } - - if (decodingMode === "mixed" && !isBig) { - return Number(num); - } - - return num; -} - -let pricesCache; - -async function getCachedPrices() { - if (!pricesCache) pricesCache = getPrices(); - return pricesCache; -} - -/* Get prices from oracle */ -async function getPrices() { - const oracleState = await getAppState(oracleAppId); - - const prices = {}; - - // get the assets for which we need to retrieve their prices - const assets = oracleState - .filter(({ key }) => { - // remove non asset ids global state - key = Buffer.from(key, "base64").toString("utf8"); - return ( - key !== "updater_addr" && - key !== "admin" && - key !== "tinyman_validator_app_id" - ); - }) - .map(({ key }) => { - // convert key to asset id - return decodeUint64(Buffer.from(key, "base64"), "safe"); - }); - - // retrieve asset prices - assets.forEach((assetId) => { - const assetPrice = parseOracleValue( - String( - getParsedValueFromState(oracleState, fromIntToBytes8Hex(assetId), "hex") - ) - ); - - prices[assetId] = Number(assetPrice) / 10 ** oracleDecimals; - }); - - return prices; -} - -module.exports = { getCachedPrices }; diff --git a/projects/folks-galgo/index.js b/projects/folks-galgo/index.js deleted file mode 100644 index 42804a463de..00000000000 --- a/projects/folks-galgo/index.js +++ /dev/null @@ -1,30 +0,0 @@ - -const { getAssetInfo } = require("../helper/chain/algorand") - -const gAlgoAssetId = 793124631 -const gAlgo3Assetd = 694432641 - -module.exports = { - timetravel: false, - algorand: { - tvl: async () => { - const infos = await Promise.all([gAlgoAssetId, gAlgo3Assetd].map(getAssetInfo)) - let total = 0 - infos.forEach(i => total += i.circulatingSupply / (10 ** i.decimals)) - return { algorand: total } - }, - }, -}; - -module.exports.hallmarks = [ - [1664553600, "Algorand Governance Recommitment"], //5 - [1672502400, "Algo Gov"], //6 - [1680278400, "Algo Gov"], //7 - [1688140800, "Algo Gov"], //8 - [1696089600, "Algo Gov"], //9 - [1704038400, "Algo Gov"], //10 - [1711900800, "Algo Gov"], //11 - [1719763200, "Algo Gov"], //12 - [1727712000, "Algo Gov"], //13 - [1735660800, "Algo Gov"], //14 -] \ No newline at end of file diff --git a/projects/folks-ultraswap/constants.js b/projects/folks-ultraswap/constants.js deleted file mode 100644 index 22e6468fe4e..00000000000 --- a/projects/folks-ultraswap/constants.js +++ /dev/null @@ -1,15 +0,0 @@ -const POOL_MANAGER_APP_ID = 971350278; - -const ULTRASWAP_UP_LOAN_APP_ID = 1202382736; -const ULTRASWAP_DOWN_LOAN_APP_ID = 1202382829; - -const ORACLE_APP_ID = 1040271396; -const ORACLE_DECIMALS = 14; - -module.exports = { - POOL_MANAGER_APP_ID, - ULTRASWAP_UP_LOAN_APP_ID, - ULTRASWAP_DOWN_LOAN_APP_ID, - ORACLE_APP_ID, - ORACLE_DECIMALS, -}; diff --git a/projects/folks-ultraswap/index.js b/projects/folks-ultraswap/index.js deleted file mode 100644 index 74b4dcc1a7e..00000000000 --- a/projects/folks-ultraswap/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const { toUSDTBalances } = require("../helper/balances"); -const { searchAccountsAll } = require("../helper/chain/algorand"); -const { - ULTRASWAP_UP_LOAN_APP_ID, - ULTRASWAP_DOWN_LOAN_APP_ID, -} = require("./constants"); -const { userLoanInfo, retrieveLoanInfo } = require("./loan-info"); -const { loanLocalState } = require("./loan-local-state"); -const { retrievePoolManagerInfo } = require("./pool-manager"); -const { getCachedPrices } = require("./prices"); - -async function calculateTvlOnUltraswapLoan(loanAppId, poolManagerInfo, prices) { - const accountsWithLoans = await searchAccountsAll({ - appId: loanAppId, - searchParams: { exclude: "assets,created-assets,created-apps" }, - }); - - const loanInfo = await retrieveLoanInfo(loanAppId); - - let totalCollateralUsd = 0; - let totalBorrowUsd = 0; - - for (const accountWithLoans of accountsWithLoans) { - const state = accountWithLoans["apps-local-state"]?.find( - ({ id }) => id === loanAppId - )?.["key-value"]; - const localState = loanLocalState(state); - - const loan = userLoanInfo(localState, poolManagerInfo, loanInfo, prices); - totalCollateralUsd += loan.totalCollateralBalanceValue; - totalBorrowUsd += loan.totalBorrowBalanceValue; - } - - return { totalCollateralUsd, totalBorrowUsd }; -} - -let data - -async function getUltraswapData() { - if (!data) { - data = _getUltraswapData(); - } - return data; -} - -async function _getUltraswapData() { - const prices = await getCachedPrices(); - const poolManagerInfo = await retrievePoolManagerInfo(); - - const ultraswapUpTvl = await calculateTvlOnUltraswapLoan( - ULTRASWAP_UP_LOAN_APP_ID, - poolManagerInfo, - prices - ); - const ultraswapDownTvl = await calculateTvlOnUltraswapLoan( - ULTRASWAP_DOWN_LOAN_APP_ID, - poolManagerInfo, - prices - ); - - const totalBorrowUsd = - ultraswapUpTvl.totalBorrowUsd + ultraswapDownTvl.totalBorrowUsd; - const totalCollateralUsd = - ultraswapUpTvl.totalCollateralUsd + ultraswapDownTvl.totalCollateralUsd; - - return { totalBorrowUsd, totalCollateralUsd }; -} - -async function tvl() { - const { totalBorrowUsd, totalCollateralUsd } = await getUltraswapData(); - - return toUSDTBalances(totalCollateralUsd + totalBorrowUsd); -} - -async function borrowed() { - const { totalBorrowUsd } = await getUltraswapData(); - - return toUSDTBalances(totalBorrowUsd); -} - -module.exports = { - timetravel: false, - doublecounted: true, - misrepresentedTokens: true, - algorand: { tvl, borrowed }, -}; diff --git a/projects/folks-ultraswap/loan-info.js b/projects/folks-ultraswap/loan-info.js deleted file mode 100644 index 20e97402753..00000000000 --- a/projects/folks-ultraswap/loan-info.js +++ /dev/null @@ -1,149 +0,0 @@ -const { - getParsedValueFromState, - getAppState, - mulScale, - unixTime, - ONE_16_DP, - SECONDS_IN_YEAR, - expBySquaring, - mulScaleRoundUp, - divScaleRoundUp, - ONE_14_DP, - fromIntToByteHex, -} = require("./utils"); - -function calcBorrowInterestIndex(birt1, biit1, latestUpdate) { - const dt = BigInt(unixTime()) - latestUpdate; - return mulScale( - biit1, - expBySquaring(ONE_16_DP + birt1 / SECONDS_IN_YEAR, dt, ONE_16_DP), - ONE_16_DP - ); -} - -function calcBorrowBalance(bbtn1, biit, biitn1) { - return mulScaleRoundUp( - bbtn1, - divScaleRoundUp(biit, biitn1, ONE_14_DP), - ONE_14_DP - ); -} - -async function retrieveLoanInfo(loanAppId) { - const state = await getAppState(loanAppId); - if (state === undefined) throw Error("Could not find Loan"); - - const paramsBase64Value = String(getParsedValueFromState(state, "pa")); - const paramsValue = Buffer.from(paramsBase64Value, "base64").toString("hex"); - const canSwapCollateral = Boolean(BigInt("0x" + paramsValue.slice(96, 98))); - - const pools = {}; - for (let i = 0; i < 63; i++) { - const poolBase64Value = String( - getParsedValueFromState(state, fromIntToByteHex(i), "hex") - ); - const poolValue = Buffer.from(poolBase64Value, "base64").toString("hex"); - - for (let j = 0; j < 3; j++) { - const basePos = j * 84; - const poolAppId = Number("0x" + poolValue.slice(basePos, basePos + 16)); - // add pool - if (poolAppId > 0) { - pools[poolAppId] = { - poolAppId, - assetId: Number("0x" + poolValue.slice(basePos + 16, basePos + 32)), - }; - } - } - } - - // combine - return { canSwapCollateral, pools }; -} - -function userLoanInfo(localState, poolManagerInfo, loanInfo, prices) { - const { pools: poolManagerPools } = poolManagerInfo; - const { pools: loanPools } = loanInfo; - - // collaterals - let totalCollateralBalanceValue = 0; - - localState.collaterals.forEach(({ poolAppId, fAssetBalance }) => { - const isColPresent = poolAppId > 0; - if (!isColPresent) return; - - const poolInfo = poolManagerPools[poolAppId]; - const poolLoanInfo = loanPools[poolAppId]; - if (poolInfo === undefined || poolLoanInfo === undefined) - throw Error("Could not find collateral pool " + poolAppId); - - const { depositInterestIndex } = poolInfo; - const { assetId } = poolLoanInfo; - const assetPrice = prices[assetId]; - if (assetPrice === undefined) - throw Error("Could not find asset price " + assetId); - - const assetBalance = mulScale( - fAssetBalance, - depositInterestIndex, - ONE_14_DP - ); - const balanceValue = Number(assetBalance) * assetPrice; - - totalCollateralBalanceValue += balanceValue; - }); - - // borrows - let totalBorrowBalanceValue = 0; - - localState.borrows.forEach( - ({ - poolAppId, - borrowBalance: oldBorrowBalance, - latestBorrowInterestIndex, - stableBorrowInterestRate, - latestStableChange, - }) => { - const isBorPresent = oldBorrowBalance > BigInt(0); - if (!isBorPresent) return; - - const poolInfo = poolManagerPools[poolAppId]; - const poolLoanInfo = loanPools[poolAppId]; - if (poolInfo === undefined || poolLoanInfo === undefined) - throw Error("Could not find borrow pool " + poolAppId); - - const { assetId } = poolLoanInfo; - const assetPrice = prices[assetId]; - if (assetPrice === undefined) - throw Error("Could not find asset price " + assetId); - - const isStable = latestStableChange > BigInt(0); - const borrowInterestIndex = isStable - ? calcBorrowInterestIndex( - stableBorrowInterestRate, - latestBorrowInterestIndex, - latestStableChange - ) - : poolInfo.variableBorrowInterestIndex; - const borrowBalance = calcBorrowBalance( - oldBorrowBalance, - borrowInterestIndex, - latestBorrowInterestIndex - ); - - const borrowBalanceValue = Number(borrowBalance) * assetPrice; - - totalBorrowBalanceValue += borrowBalanceValue; - } - ); - - return { - totalCollateralBalanceValue, - totalBorrowBalanceValue, - }; -} - -module.exports = { - retrieveLoanInfo, - userLoanInfo, -}; diff --git a/projects/folks-ultraswap/loan-local-state.js b/projects/folks-ultraswap/loan-local-state.js deleted file mode 100644 index 9dd470276a6..00000000000 --- a/projects/folks-ultraswap/loan-local-state.js +++ /dev/null @@ -1,48 +0,0 @@ -const { encodeAddress } = require("../helper/chain/algorandUtils/address"); -const { parseUint64s, getParsedValueFromState } = require("./utils"); - -function loanLocalState(state) { - // standard - const userAddress = encodeAddress( - Buffer.from(String(getParsedValueFromState(state, "u")), "base64") - ); - const colPls = parseUint64s(String(getParsedValueFromState(state, "c"))); - const borPls = parseUint64s(String(getParsedValueFromState(state, "b"))); - const colBals = parseUint64s(String(getParsedValueFromState(state, "cb"))); - const borAms = parseUint64s(String(getParsedValueFromState(state, "ba"))); - const borBals = parseUint64s(String(getParsedValueFromState(state, "bb"))); - const lbii = parseUint64s(String(getParsedValueFromState(state, "l"))); - const sbir = parseUint64s(String(getParsedValueFromState(state, "r"))); - const lsc = parseUint64s(String(getParsedValueFromState(state, "t"))); - - // custom - const collaterals = []; - const borrows = []; - for (let i = 0; i < 15; i++) { - // add collateral - collaterals.push({ - poolAppId: Number(colPls[i]), - fAssetBalance: colBals[i], - }); - - // add borrow - borrows.push({ - poolAppId: Number(borPls[i]), - borrowedAmount: borAms[i], - borrowBalance: borBals[i], - latestBorrowInterestIndex: lbii[i], - stableBorrowInterestRate: sbir[i], - latestStableChange: lsc[i], - }); - } - - return { - userAddress, - collaterals, - borrows, - }; -} - -module.exports = { - loanLocalState, -}; diff --git a/projects/folks-ultraswap/pool-manager.js b/projects/folks-ultraswap/pool-manager.js deleted file mode 100644 index ceaa7fabaf5..00000000000 --- a/projects/folks-ultraswap/pool-manager.js +++ /dev/null @@ -1,75 +0,0 @@ -const { POOL_MANAGER_APP_ID } = require("./constants"); -const { - getAppState, - getParsedValueFromState, - unixTime, - mulScale, - ONE_16_DP, - SECONDS_IN_YEAR, - expBySquaring, - fromIntToByteHex, -} = require("./utils"); - -function calcBorrowInterestIndex(birt1, biit1, latestUpdate) { - const dt = BigInt(unixTime()) - latestUpdate; - return mulScale( - biit1, - expBySquaring(ONE_16_DP + birt1 / SECONDS_IN_YEAR, dt, ONE_16_DP), - ONE_16_DP - ); -} - -function calcDepositInterestIndex(dirt1, diit1, latestUpdate) { - const dt = BigInt(unixTime()) - latestUpdate; - return mulScale(diit1, ONE_16_DP + (dirt1 * dt) / SECONDS_IN_YEAR, ONE_16_DP); -} - -async function retrievePoolManagerInfo() { - const state = await getAppState(POOL_MANAGER_APP_ID); - if (state === undefined) throw Error("Could not find Pool Manager"); - - const pools = {}; - for (let i = 0; i < 63; i++) { - const poolBase64Value = String( - getParsedValueFromState(state, fromIntToByteHex(i), "hex") - ); - - const poolValue = Buffer.from(poolBase64Value, "base64").toString("hex"); - - for (let j = 0; j < 3; j++) { - const basePos = j * 84; - const poolAppId = Number("0x" + poolValue.slice(basePos, basePos + 12)); - - // add pool - if (poolAppId > 0) { - const vbir = BigInt("0x" + poolValue.slice(basePos + 12, basePos + 28)); - const vbiit1 = BigInt( - "0x" + poolValue.slice(basePos + 28, basePos + 44) - ); - const dir = BigInt("0x" + poolValue.slice(basePos + 44, basePos + 60)); - const diit1 = BigInt( - "0x" + poolValue.slice(basePos + 60, basePos + 76) - ); - const lu = BigInt("0x" + poolValue.slice(basePos + 76, basePos + 84)); - - const depositInterestIndex = calcDepositInterestIndex(dir, diit1, lu); - const variableBorrowInterestIndex = calcBorrowInterestIndex( - vbir, - vbiit1, - lu - ); - - pools[poolAppId] = { - depositInterestIndex, - variableBorrowInterestIndex, - }; - } - } - } - - return { pools }; -} - -module.exports = { - retrievePoolManagerInfo, -}; diff --git a/projects/folks-ultraswap/prices.js b/projects/folks-ultraswap/prices.js deleted file mode 100644 index 1ba60599efa..00000000000 --- a/projects/folks-ultraswap/prices.js +++ /dev/null @@ -1,92 +0,0 @@ -const { ORACLE_APP_ID, ORACLE_DECIMALS } = require("./constants"); -const { - getAppState, - getParsedValueFromState, - fromIntToBytes8Hex, - parseOracleValue, -} = require("./utils"); - -function decodeUint64(data, decodingMode = "safe") { - if ( - decodingMode !== "safe" && - decodingMode !== "mixed" && - decodingMode !== "bigint" - ) { - throw new Error(`Unknown decodingMode option: ${decodingMode}`); - } - - if (data.byteLength === 0 || data.byteLength > 8) { - throw new Error( - `Data has unacceptable length. Expected length is between 1 and 8, got ${data.byteLength}` - ); - } - - // insert 0s at the beginning if data is smaller than 8 bytes - const padding = Buffer.allocUnsafe(8 - data.byteLength); - padding.fill(0); - - const buf = Buffer.concat([padding, Buffer.from(data)]); - - const num = buf.readBigUInt64BE(); - const isBig = num > Number.MAX_SAFE_INTEGER; - - if (decodingMode === "safe") { - if (isBig) { - throw new Error( - `Integer exceeds maximum safe integer: ${num.toString()}. Try decoding with "mixed" or "safe" decodingMode.` - ); - } - return Number(num); - } - - if (decodingMode === "mixed" && !isBig) { - return Number(num); - } - - return num; -} - -let pricesCache; - -async function getCachedPrices() { - if (!pricesCache) pricesCache = getPrices(); - return pricesCache; -} - -/* Get prices from oracle */ -async function getPrices() { - const oracleState = await getAppState(ORACLE_APP_ID); - - const prices = {}; - - // get the assets for which we need to retrieve their prices - const assets = oracleState - .filter(({ key }) => { - // remove non asset ids global state - key = Buffer.from(key, "base64").toString("utf8"); - return ( - key !== "updater_addr" && - key !== "admin" && - key !== "tinyman_validator_app_id" - ); - }) - .map(({ key }) => { - // convert key to asset id - return decodeUint64(Buffer.from(key, "base64"), "safe"); - }); - - // retrieve asset prices - assets.forEach((assetId) => { - const assetPrice = parseOracleValue( - String( - getParsedValueFromState(oracleState, fromIntToBytes8Hex(assetId), "hex") - ) - ); - - prices[assetId] = Number(assetPrice) / 10 ** ORACLE_DECIMALS; - }); - - return prices; -} - -module.exports = { getCachedPrices }; diff --git a/projects/folks-ultraswap/utils.js b/projects/folks-ultraswap/utils.js deleted file mode 100644 index 420420d2fed..00000000000 --- a/projects/folks-ultraswap/utils.js +++ /dev/null @@ -1,130 +0,0 @@ -const { lookupApplications } = require("../helper/chain/algorand"); -const { encodeAddress } = require("../helper/chain/algorandUtils/address"); - -const ONE_4_DP = BigInt(1e4); -const ONE_14_DP = BigInt(1e14); -const ONE_16_DP = BigInt(1e16); -const SECONDS_IN_YEAR = BigInt(365 * 24 * 60 * 60); - -function fromIntToBytes8Hex(num) { - return num.toString(16).padStart(16, "0"); -} - -function fromIntToByteHex(num) { - return num.toString(16).padStart(2, "0"); -} - -function encodeToBase64(str, encoding = "utf8") { - return Buffer.from(str, encoding).toString("base64"); -} - -function parseUint64s(base64Value) { - const value = Buffer.from(base64Value, "base64").toString("hex"); - - // uint64s are 8 bytes each - const uint64s = []; - for (let i = 0; i < value.length; i += 16) { - uint64s.push(BigInt("0x" + value.slice(i, i + 16))); - } - return uint64s; -} - -function parseOracleValue(base64Value) { - const value = Buffer.from(base64Value, "base64").toString("hex"); - // first 8 bytes are the price - const price = BigInt("0x" + value.slice(0, 16)); - - return price; -} - -function parseOracleAdapterValue(base64Value) { - const value = Buffer.from(base64Value, "base64").toString("hex"); - // first 8 bytes are if Tinyman - const isTinyman = Number(`0x${value.slice(0, 16)}`); - // next 16 bytes are asset ids - const asset0Id = Number(`0x${value.slice(16, 32)}`); - const asset1Id = Number(`0x${value.slice(32, 48)}`); - - // check if LP token is Tinyman or Pact - if (isTinyman) { - // next 32 bytes are tinyman pool address - const poolAddress = encodeAddress(Buffer.from(value.slice(48, 112), "hex")); - return { provider: "Tinyman", asset0Id, asset1Id, poolAddress }; - } else { - // next 8 bytes are pact pool app id - const poolAppId = Number(`0x${value.slice(48, 64)}`); - return { provider: "Pact", asset0Id, asset1Id, poolAppId }; - } -} - -function getParsedValueFromState(state, key, encoding = "utf8") { - const encodedKey = encoding ? encodeToBase64(key, encoding) : key; - const keyValue = state.find((entry) => entry.key === encodedKey); - if (keyValue === undefined) return; - const { value } = keyValue; - if (value.type === 1) return value.bytes; - if (value.type === 2) return BigInt(value.uint); - return; -} - -async function getAppState(appId) { - const res = await lookupApplications(appId); - return res.application.params["global-state"]; -} - -function unixTime() { - return Math.floor(Date.now() / 1000); -} - -function mulScale(n1, n2, scale) { - return (n1 * n2) / scale; -} - -function mulScaleRoundUp(n1, n2, scale) { - return mulScale(n1, n2, scale) + BigInt(1); -} - -function divScale(n1, n2, scale) { - return (n1 * scale) / n2; -} - -function divScaleRoundUp(n1, n2, scale) { - return divScale(n1, n2, scale) + BigInt(1); -} - -function expBySquaring(x, n, scale) { - if (n === BigInt(0)) return scale; - - let y = scale; - while (n > BigInt(1)) { - if (n % BigInt(2)) { - y = mulScale(x, y, scale); - n = (n - BigInt(1)) / BigInt(2); - } else { - n = n / BigInt(2); - } - x = mulScale(x, x, scale); - } - return mulScale(x, y, scale); -} - -module.exports = { - ONE_4_DP, - ONE_14_DP, - ONE_16_DP, - SECONDS_IN_YEAR, - fromIntToByteHex, - fromIntToBytes8Hex, - encodeToBase64, - parseUint64s, - parseOracleValue, - parseOracleAdapterValue, - getParsedValueFromState, - getAppState, - unixTime, - mulScale, - mulScaleRoundUp, - divScale, - divScaleRoundUp, - expBySquaring, -}; diff --git a/projects/folks-xalgo/constants.js b/projects/folks-xalgo/constants.js deleted file mode 100644 index f753eaebfaa..00000000000 --- a/projects/folks-xalgo/constants.js +++ /dev/null @@ -1,12 +0,0 @@ -const xAlgoAssetId = 1134696561; -const algoAssetId = 0; - -const oracleAppId = 1040271396; -const oracleDecimals = 14; - -module.exports = { - xAlgoAssetId, - algoAssetId, - oracleAppId, - oracleDecimals, -}; diff --git a/projects/folks-xalgo/index.js b/projects/folks-xalgo/index.js deleted file mode 100644 index 16e7eee71d9..00000000000 --- a/projects/folks-xalgo/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getAssetInfo } = require("../helper/chain/algorand"); -const { getCachedPrices } = require('./prices'); -const { xAlgoAssetId, algoAssetId } = require('./constants'); - -module.exports = { - timetravel: false, - algorand: { - tvl: async () => { - const prices = await getCachedPrices(); - const xAlgoPrice = prices[xAlgoAssetId]; - const algoPrice = prices[algoAssetId]; - - const info = await getAssetInfo(xAlgoAssetId); - const totalXAlgo = info.circulatingSupply / 10 ** info.decimals; - const totalAlgo = totalXAlgo * xAlgoPrice / algoPrice; - return { algorand: totalAlgo }; - }, - }, -}; diff --git a/projects/folks-xalgo/prices.js b/projects/folks-xalgo/prices.js deleted file mode 100644 index 70df9a9b563..00000000000 --- a/projects/folks-xalgo/prices.js +++ /dev/null @@ -1,92 +0,0 @@ -const { oracleAppId, oracleDecimals } = require("./constants"); -const { - getAppState, - getParsedValueFromState, - fromIntToBytes8Hex, - parseOracleValue, -} = require("./utils"); - -function decodeUint64(data, decodingMode = "safe") { - if ( - decodingMode !== "safe" && - decodingMode !== "mixed" && - decodingMode !== "bigint" - ) { - throw new Error(`Unknown decodingMode option: ${decodingMode}`); - } - - if (data.byteLength === 0 || data.byteLength > 8) { - throw new Error( - `Data has unacceptable length. Expected length is between 1 and 8, got ${data.byteLength}` - ); - } - - // insert 0s at the beginning if data is smaller than 8 bytes - const padding = Buffer.allocUnsafe(8 - data.byteLength); - padding.fill(0); - - const buf = Buffer.concat([padding, Buffer.from(data)]); - - const num = buf.readBigUInt64BE(); - const isBig = num > Number.MAX_SAFE_INTEGER; - - if (decodingMode === "safe") { - if (isBig) { - throw new Error( - `Integer exceeds maximum safe integer: ${num.toString()}. Try decoding with "mixed" or "safe" decodingMode.` - ); - } - return Number(num); - } - - if (decodingMode === "mixed" && !isBig) { - return Number(num); - } - - return num; -} - -let pricesCache; - -async function getCachedPrices() { - if (!pricesCache) pricesCache = getPrices(); - return pricesCache; -} - -/* Get prices from oracle */ -async function getPrices() { - const oracleState = await getAppState(oracleAppId); - - const prices = {}; - - // get the assets for which we need to retrieve their prices - const assets = oracleState - .filter(({ key }) => { - // remove non asset ids global state - key = Buffer.from(key, "base64").toString("utf8"); - return ( - key !== "updater_addr" && - key !== "admin" && - key !== "tinyman_validator_app_id" - ); - }) - .map(({ key }) => { - // convert key to asset id - return decodeUint64(Buffer.from(key, "base64"), "safe"); - }); - - // retrieve asset prices - assets.forEach((assetId) => { - const assetPrice = parseOracleValue( - String( - getParsedValueFromState(oracleState, fromIntToBytes8Hex(assetId), "hex") - ) - ); - - prices[assetId] = Number(assetPrice) / 10 ** oracleDecimals; - }); - - return prices; -} - -module.exports = { getCachedPrices }; diff --git a/projects/folks-xalgo/utils.js b/projects/folks-xalgo/utils.js deleted file mode 100644 index f8f88b2f7d4..00000000000 --- a/projects/folks-xalgo/utils.js +++ /dev/null @@ -1,39 +0,0 @@ -const { lookupApplications } = require("../helper/chain/algorand"); - -function fromIntToBytes8Hex(num) { - return num.toString(16).padStart(16, "0"); -} - -function encodeToBase64(str, encoding = "utf8") { - return Buffer.from(str, encoding).toString("base64"); -} - -function parseOracleValue(base64Value) { - const value = Buffer.from(base64Value, "base64").toString("hex"); - // first 8 bytes are the price - const price = BigInt("0x" + value.slice(0, 16)); - - return price; -} - -function getParsedValueFromState(state, key, encoding = "utf8") { - const encodedKey = encoding ? encodeToBase64(key, encoding) : key; - const keyValue = state.find((entry) => entry.key === encodedKey); - if (keyValue === undefined) return; - const { value } = keyValue; - if (value.type === 1) return value.bytes; - if (value.type === 2) return BigInt(value.uint); - return; -} - -async function getAppState(appId) { - const res = await lookupApplications(appId); - return res.application.params["global-state"]; -} - -module.exports = { - fromIntToBytes8Hex, - parseOracleValue, - getParsedValueFromState, - getAppState, -}; diff --git a/projects/folks-xchain/constants.js b/projects/folks-xchain/constants.js deleted file mode 100644 index 3fb042494cf..00000000000 --- a/projects/folks-xchain/constants.js +++ /dev/null @@ -1,349 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const HubPoolAbi = { - getDepositData: "function getDepositData() view returns (uint16 optimalUtilisationRatio, uint256 totalAmount, uint256 interestRate, uint256 interestIndex)", - getVariableBorrowData: "function getVariableBorrowData() view returns (uint32 vr0, uint32 vr1, uint32 vr2, uint256 totalAmount, uint256 interestRate, uint256 interestIndex)", - getStableBorrowData: "function getStableBorrowData() view returns (uint32 sr0, uint32 sr1, uint32 sr2, uint32 sr3, uint16 optimalStableToTotalDebtRatio, uint16 rebalanceUpUtilisationRatio, uint16 rebalanceUpDepositInterestRate, uint16 rebalanceDownDelta, uint256 totalAmount, uint256 interestRate, uint256 averageInterestRate)" -} -const HubPools = { - 'avax': [ - { // USDC - poolAddress: "0x88f15e36308ED060d8543DA8E2a5dA0810Efded2", - tokenAddress: ADDRESSES.avax.USDC, - }, - { // AVAX - poolAddress: "0x0259617bE41aDA4D97deD60dAf848Caa6db3F228", - tokenAddress: ADDRESSES.null, - chainPoolAddress: '0xe69e068539Ee627bAb1Ce878843a6C76484CBd2c', - }, - { // sAVAX - poolAddress: "0x7033105d1a527d342bE618ab1F222BB310C8d70b", - tokenAddress: ADDRESSES.avax.SAVAX, - chainPoolAddress: '0x23a96D92C80E8b926dA40E574d615d9e806A87F6', - }, - { // wETH_ava - poolAddress: "0x795CcF6f7601edb41E4b3123c778C56F0F19389A", - tokenAddress: ADDRESSES.avax.WETH_e, - chainPoolAddress: '0x0e563B9fe6D9EF642bDbA20D53ac5137EB0d78DC', - }, - { // BTCb_ava - poolAddress: "0x1C51AA1516e1156d98075F2F64e259906051ABa9", - tokenAddress: ADDRESSES.avax.BTC_b, - chainPoolAddress: '0xef7a6EBEDe2ad558DB8c36Df65365b209E5d57dC', - }, - { // SolvBTC - poolAddress: "0x307bCEC89624660Ed06C97033EDb7eF49Ab0EB2D", - tokenAddress: '0xbc78D84Ba0c46dFe32cf2895a19939c86b81a777', - }, - { // JOE - poolAddress: "0x5e5a2007a8D613C4C98F425097166095C875e6eE", - tokenAddress: ADDRESSES.avax.JOE, - chainPoolAddress: '0x3b1C2eC8B7cdE241E0890C9742C14dD7867aA812', - }, - { // ggAVAX - poolAddress: "0xAdA5Be2A259096fd11D00c2b5c1181843eD008DC", - tokenAddress: '0xA25EaF2906FA1a3a13EdAc9B9657108Af7B703e3', - chainPoolAddress: '0xe53189D00D1b4F231A2a208a7967E0dCaE8Db073', - }, - { - // SHIB - poolAddress: '0x9f59642C6733397dF5c2696D3Ac9ceb431b1b573', - tokenAddress: '0x2f643d728926C20269f0A04931dd7b4b6B650204', - }, - { // aUSD - poolAddress: '0xc7DdB440666c144c2F27a3a5156D636Bacfc769C', - tokenAddress: ADDRESSES.mantle.AUSD, - chainPoolAddress: '0x666aea026bC606220ec6eb83a83D81881fA48e0f', - }, - { // savUSD - poolAddress: '0xE6B7713854620076B5716E2743262D315bf8609D', - tokenAddress: '0x06d47F3fb376649c3A9Dafe069B3D6E35572219E', - chainPoolAddress: '0xe396E1246B7341Eb6EDA05DCfef9EaB9E661f80C', - }, - { // USDt_ava - poolAddress: '0xA1E1024c49c77297bA6367F624cFbEFC80E697c6', - tokenAddress: ADDRESSES.avax.USDt, - chainPoolAddress: '0x66dD1c6bEAdFFcA88365BAdE7928323672323d11', - }, - { // YBTCB - poolAddress: '0x13A21bC65844CD530098Ab15431c57078ea90737', - tokenAddress: '0x2cd3CdB3bd68Eea0d3BE81DA707bC0c8743D7335', - }, - { // USDe_ava - poolAddress: '0x5431e7f480C4985e9C3FaAcd3Bd1fc7143eAdEFa', - tokenAddress: '0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34', - chainPoolAddress: '0x07C911b5a1657126B14C25e697E3d00f3a134A23', - }, - { // sUSDe_ava - poolAddress: '0x94307E63eF02Cf9B39894553f14b21378Ef20adB', - tokenAddress: '0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2', - chainPoolAddress: '0x1C7EC7198F297119D4e9f359d91127c8B2f9A9D2', - }, - { // EURC_ava - poolAddress: '0x3F87F3B301f031ba59C479EDF067621DcC72DDca', - tokenAddress: '0xc891eb4cbdeff6e073e859e987815ed1505c2acd', - chainPoolAddress: '0xe47285cc79A8de62DFaED52Abe919B87973294C8', - }, - { // tETH - poolAddress: '0x5FE123B659FC5242f46884C37550F05Ef08C816a', - tokenAddress: '0xd09ACb80C1E8f2291862c4978A008791c9167003', - }, - { // tAVAX - poolAddress: '0x3F63A6401e6354a486e6a38127409fD16e222B59', - tokenAddress: '0x14A84F1a61cCd7D1BE596A6cc11FE33A36Bc1646', - chainPoolAddress: '0x0aeE2B84bd3E280CFcc9325917bFA0Bb20F3cdC6', - }, - ], - 'ethereum': [ - // excluding USDC cause bridged - // excluding SolvBTC cause bridged - // excluding SHIB cause bridged - // excluding YBTCB cause bridged - // excluding tETH cause bridged - { // ETH_eth - poolAddress: "0xB6DF8914C084242A19A4C7fb15368be244Da3c75", - tokenAddress: ADDRESSES.null, - chainPoolAddress: '0xe3B0e4Db870aA58A24f87d895c62D3dc5CD05883', - }, - { // wBTC_eth - poolAddress: "0x9936812835476504D6Cf495F4F0C718Ec19B3Aff", - tokenAddress: ADDRESSES.ethereum.WBTC, - chainPoolAddress: "0xb39c03297E87032fF69f4D42A6698e4c4A934449", - }, - { - // ATH_eth - poolAddress: '0x391201cEC4F80e69C87Dee364d599c1FCAE3c363', - tokenAddress: '0xbe0Ed4138121EcFC5c0E56B40517da27E6c5226B', - chainPoolAddress: '0x91461B9117B3644609EeB0889ecc89Cab4644bb2', - }, - { - // pyUSD_eth - poolAddress: '0x279b3E185F64e99141d4CE363657A5F3B5B32Fb9', - tokenAddress: '0x6c3ea9036406852006290770BEdFcAbA0e23A0e8', - chainPoolAddress: '0xff785fb7BfBbe03eD09089f73151AE563B211723', - }, - { - // rlUSD_eth - poolAddress: '0x7178bF2a8A50153549e0d95A4C6Cb816448840F0', - tokenAddress: '0x8292bb45bf1ee4d140127049757c2e0ff06317ed', - chainPoolAddress: '0x7967B0fe720E676f41640855a203B409cEcc8f92', - }, - { - // wstETH_eth - poolAddress: '0xe7897052FAC4bfF9EB3ABc073CBC1e17Fce5709C', - tokenAddress: ADDRESSES.ethereum.WSTETH, - chainPoolAddress: '0xB3ABD8cc35619b907F3f2E974Fe3d43956AA7cda', - }, - { - // weETH_eth - poolAddress: '0x4E6dD5E35638008cdB1E9004F3E952bCDd920E6D', - tokenAddress: ADDRESSES.ethereum.WEETH, - chainPoolAddress: '0x63BCB60165E7EC30F03883Fcb800AEf304EE7eEa', - }, - { - // USDt_eth - poolAddress: '0xf51a72b92cB9C16376Da04f48eF071c966B9C50B', - tokenAddress: ADDRESSES.ethereum.USDT, - chainPoolAddress: '0x12d4FeDD9cE1b4d7dB90b07366284ac1675a5a90', - }, - { - // SYRUP_eth - poolAddress: '0xD4F87eb6cc8795e727F7DbC1e2C6c3452ad0010c', - tokenAddress: '0x643C4E15d7d62Ad0aBeC4a9BD4b001aA3Ef52d66', - chainPoolAddress: '0x3aEa5E1f27935Ed59424F35Ea801420d804219E4', - }, - ], - 'base': [ - // excluding USDC cause bridged - // excluding SolvBTC cause bridged - // excluding SHIB cause bridged - { // ETH_base - poolAddress: "0x51958ed7B96F57142CE63BB223bbd9ce23DA7125", - tokenAddress: ADDRESSES.null, - chainPoolAddress: '0xe3B0e4Db870aA58A24f87d895c62D3dc5CD05883', - }, - { // cbBTC_base - poolAddress: "0x9eD81F0b5b0E9b6dE00F374fFc7f270902576EF7", - tokenAddress: ADDRESSES.base.cbBTC, - chainPoolAddress: '0x50d5Bb3Cf57D2fB003b602A6fD10F90baa8567EA', - }, - { - // AERO_base - poolAddress: '0xb5327c35E083248E3a0f79122FaB3b6018e5584a', - tokenAddress: '0x940181a94a35a4569e4529a3cdfb74e38fd98631', - chainPoolAddress: '0x7Ace2Bc1C79954B56C65C7B326035C4468ac12BB', - }, - { - // cbETH_base - poolAddress: '0x0b09E1Ffd28040654021A85A49284597F3d0e41C', - tokenAddress: ADDRESSES.base.cbETH, - chainPoolAddress: '0x31A324D233AB3E73A6e1039D64907bBb2742606C', - }, - { - // wstETH_base - poolAddress: '0xC96820695217c7dd8F696f8892de76F7a48432CB', - tokenAddress: ADDRESSES.base.wstETH, - chainPoolAddress: '0x7c7961E590B7e005540B72238b739ae513B605fB', - }, - { - // weETH_base - poolAddress: '0xf727EC8D6e565328f2cf0Ff8aC4e7c9e7f8d24B2', - tokenAddress: ADDRESSES.base.weETH, - chainPoolAddress: '0x8D9aad601f384C596B9e2b9124a73b278DB4C51C', - }, - { - // VIRTUAL_base - poolAddress: '0x331a1938f94af7bB41d57691119Aee416495202a', - tokenAddress: '0x0b3e328455c4059EEb9e3f84b5543F74E24e7E1b', - chainPoolAddress: '0x9009c929873f0e68dbc253b16aC4c3E4426E6E35', - }, - { - // KAITO_base - poolAddress: '0x04C8B9d8AF87a6D670B646125B2D99740D8eBa5E', - tokenAddress: '0x98d0baa52b2D063E780DE12F615f963Fe8537553', - chainPoolAddress: '0x123f831a762A165107EE2e07416f4AA713dA9bFD', - }, - ], - 'bsc': [ - // excluding SolvBTC cause bridged - // excluding YBTCB cause bridged - // excluding SHIB cause bridged - { // BNB - poolAddress: "0x89970d3662614a5A4C9857Fcc9D9C3FA03824fe3", - tokenAddress: ADDRESSES.null, - chainPoolAddress: '0x5f2F4771B7dc7e2F7E9c1308B154E1e8957ecAB0', - }, - { // ETHB_bsc - poolAddress: "0x18031B374a571F9e060de41De58Abb5957cD5258", - tokenAddress: ADDRESSES.bsc.ETH, - chainPoolAddress: '0x4Db12F554623E4B0b3F5bAcF1c8490D4493380A5', - }, - { // BTCB_bsc - poolAddress: "0xC2FD40D9Ec4Ae7e71068652209EB75258809e131", - tokenAddress: ADDRESSES.bsc.BTCB, - chainPoolAddress: '0x12Db9758c4D9902334C523b94e436258EB54156f', - }, - ], - 'arbitrum': [ - // excluding USDC cause bridged - // excluding SolvBTC cause bridged - // excluding SHIB cause bridged - { // ETH_arb - poolAddress: "0x44E0d0809AF8Ee37BFb1A4e75D5EF5B96F6346A3", - tokenAddress: ADDRESSES.null, - chainPoolAddress: '0x37d761883a01e9F0B0d7fe59EEC8c21D94393CDD', - }, - { // ARB - poolAddress: "0x1177A3c2CccDb9c50D52Fc2D30a13b2c3C40BCF4", - tokenAddress: ADDRESSES.arbitrum.ARB, - chainPoolAddress: '0x1b2a8d56967d00700DD5C94E27B1a116a1deF8Df', - }, - { // wBTC_arb - poolAddress: '0x3445055F633fEF5A64F852aaCD6dA76143aCA109', - tokenAddress: ADDRESSES.arbitrum.WBTC, - chainPoolAddress: '0x2d1c07209696456b7901949fdf81037016d541A5', - }, - { // tBTC_arb - poolAddress: '0xdd9eFBf83572f5387381aD3A04b1318221d545A2', - tokenAddress: '0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40', - chainPoolAddress: '0xDF2da9288C4D0aDF6c52CCbb5062b8C73fb19111', - }, - { // wstETH_arb - poolAddress: '0x9f0c0aDEc9fd4ef946aCe1e2b4F32e49aE45C8F3', - tokenAddress: ADDRESSES.arbitrum.WSTETH, - chainPoolAddress: '0x74416b0121DAadFeb2A9C2306827CCf80a6EE097', - }, - { // weETH_arb - poolAddress: '0x78B4e5cda33C898b546dB7925162879E7bd2A9d1', - tokenAddress: ADDRESSES.arbitrum.weETH, - chainPoolAddress: '0x624363570A6b6Fee5531CcA341b794B286Af091c', - }, - { // rsETH_arb - poolAddress: '0x60f2682Ab38e3C9a51b07fbd69f42Ad2Cfe731db', - tokenAddress: ADDRESSES.berachain.rsETH, - chainPoolAddress: '0xC0a3536E0b6799014A14664bA4370BBd5D0c7590', - }, - { - // USDT0_arb - poolAddress: '0x1b5a1dCe059E6069Ed33C3656826Ad04bE536465', - tokenAddress: ADDRESSES.arbitrum.USDT, - chainPoolAddress: '0xe69e068539Ee627bAb1Ce878843a6C76484CBd2c', - } - ], - 'polygon': [ - // excluding USDC cause bridged - { // POL - poolAddress: "0x481cF0c02BF17a33753CE32f1931ED9990fFB40E", - tokenAddress: ADDRESSES.null, - chainPoolAddress: '0x4Db12F554623E4B0b3F5bAcF1c8490D4493380A5', - }, - { // wBTC_pol - poolAddress: "0x7054254933279d93D97309745AfbFF9310cdb570", - tokenAddress: ADDRESSES.polygon.WBTC, - chainPoolAddress: '0x1A40208E9506E08a6f62DbCCf8de7387743179E9', - }, - { // wETH_pol - poolAddress: "0x88Ae56886233C706409c74c3D4EA9A9Ac1D65ab2", - tokenAddress: ADDRESSES.polygon.WETH_1, - chainPoolAddress: '0x2e6e4603536078bd7661338F06FB93cf6F9b7A98', - }, - { // wstETH_pol - poolAddress: '0xD77b920A9c05B3e768FEaE0bcB5839cd224328fE', - tokenAddress: ADDRESSES.polygon.WSTETH, - chainPoolAddress: '0xa526f90c0CAab6A0E6085830e75b084cd3c84000', - }, - { // LINK_pol - poolAddress: '0x84C420D5e077cF0ed8a20c44d803C380172eD5D5', - tokenAddress: '0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39', - chainPoolAddress: '0x63ad90A703e95e39be7CB9e460C2b05870c982B8', - }, - { // MaticX - poolAddress: '0x59023eFDB22B9d8b2C7aeD842aC1fd2f6110e5B5', - tokenAddress: ADDRESSES.polygon.MATICX, - chainPoolAddress: '0xCB66564d0cF3D28B26a1b6D4eCb830D6E216a75a', - }, - { - // aUSD_pol - poolAddress: '0x34f1BA5808EB5Bf60c9B1C343d86e410466F4860', - tokenAddress: ADDRESSES.mantle.AUSD, - spokeAddress: '0xaB07AfCf16fecdCC3D83dB7513c7839aEd626322', - }, - { - // USDt_pol - poolAddress: '0x11f82b5Ea7408Ff257F6031E6A3e29203557A1DD', - tokenAddress: ADDRESSES.polygon.USDT, - chainPoolAddress: '0xf2ee689fd3f7A7358bEDA46f83E7968Ad894abF0', - } - ], - 'sei': [ - { // SEI - poolAddress: "0x63EFdA4bf91Ba13D678C58AF47304e6180dD46DF", - tokenAddress: ADDRESSES.null, - chainPoolAddress: '0x5f2F4771B7dc7e2F7E9c1308B154E1e8957ecAB0', - }, - { // iSEI - poolAddress: "0x2B7995fd223dCf3A660Cc5a514349E3fa7B16168", - tokenAddress: "0x5Cf6826140C1C56Ff49C808A1A75407Cd1DF9423", - chainPoolAddress: '0x4Db12F554623E4B0b3F5bAcF1c8490D4493380A5', - }, - { // USDT0_sei - poolAddress: "0x213299AC40Ce76117C2c4B13945D9d935686BB85", - tokenAddress: "0x9151434b16b9763660705744891fA906F660EcC5", - chainPoolAddress: '0x12Db9758c4D9902334C523b94e436258EB54156f', - }, - { // wETH_sei - poolAddress: "0x9A102080970043B96773c15E6520d182565C68Ff", - tokenAddress: "0x160345fc359604fc6e70e3c5facbde5f7a9342d8", - chainPoolAddress: '0x802063A23E78D0f5D158feaAc605028Ee490b03b', - }, - { // wBTC_sei - poolAddress: "0x7Cd4afD7F4DB51A0bF06Bf4630752A5B28e0B6C1", - tokenAddress: ADDRESSES.bsc.WBTC, - chainPoolAddress: '0x7218Bd1050D41A9ECfc517abdd294FB8116aEe81', - }, - ] -} - -module.exports = { - HubPoolAbi, - HubPools, -}; diff --git a/projects/folks-xchain/index.js b/projects/folks-xchain/index.js deleted file mode 100644 index 65c4d9f9073..00000000000 --- a/projects/folks-xchain/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const sdk = require('@defillama/sdk') -const { HubPools, HubPoolAbi, } = require("./constants"); - -async function tvl(api) { - const tokensAndOwners = [] - const HubPoolsChain = HubPools[api.chain] ?? [] - HubPoolsChain.forEach(pool => { - if (pool.chainPoolAddress) tokensAndOwners.push([pool.tokenAddress, pool.chainPoolAddress]) - if (pool.poolAddress) tokensAndOwners.push([pool.tokenAddress, pool.poolAddress]) - }) - - return api.sumTokens({ tokensAndOwners }) -} - -async function borrowed(api) { - const HubPoolsChain = HubPools[api.chain] - let chainApi = api - if (api.chain !== 'avax') { - chainApi = new sdk.ChainApi({ chain: 'avax', timestamp: api.timestamp }) - await chainApi.getBlock() - } - const targets = HubPoolsChain.map(pool => pool.poolAddress) - - const [varBorrowsData, stableBorrowsData] = await Promise.all([ - await chainApi.multiCall({ calls: targets, abi: HubPoolAbi.getVariableBorrowData, }), - await chainApi.multiCall({ calls: targets, abi: HubPoolAbi.getStableBorrowData, }) - ]); - - HubPoolsChain.forEach((pool, idx) => { - api.add(pool.tokenAddress, Number(varBorrowsData[idx][3]) + Number(stableBorrowsData[idx][8])) - }) - return api.getBalances() -} - -module.exports = { - methodology: "In Folks Finance's xChain lending native assets remain on their native chains while crosschain assets like USDC are pooled together, which can be accessed equally from all connected networks. TVL counts for each pool: deposited, borrowed variable and borrowed stable total amounts.", -} - -Object.keys(HubPools).forEach(chain => { - module.exports[chain] = { tvl, borrowed, } -}) \ No newline at end of file diff --git a/projects/follows/index.js b/projects/follows/index.js deleted file mode 100644 index affd1f26ec5..00000000000 --- a/projects/follows/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { PublicKey } = require('@solana/web3.js'); -const { getConnection } = require('../helper/solana'); - -async function tvl() { - const programId = new PublicKey( - 'FoLLukXuiZ5kSq3YWCxEmRUt7yDiE9WJCnh76sdC8RTc' - ); - const connection = getConnection(); - - const accounts = await connection.getProgramAccounts(programId, { - filters: [{ - dataSize: 88 - }], - dataSlice: { offset: 0, length: 0 } - }); - - return { - solana: accounts.reduce((tvl, { account }) => { - return tvl + account.lamports / 1e9; - }, 0), - }; -} - -module.exports = { - timetravel: false, - methodology: - 'To fetch the total supply of deposited SOL into the Follows Program', - solana: { - tvl, - }, -}; diff --git a/projects/fomo3d/index.js b/projects/fomo3d/index.js deleted file mode 100644 index 85b181b92d1..00000000000 --- a/projects/fomo3d/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); -const Fomo3D = [ - "0x4e8ecF79AdE5e2C49B9e30D795517A81e0Bf00B8", - "0xA62142888ABa8370742bE823c1782D17A0389Da1", -]; - -module.exports = { - methodology: "TVL includes a Fomo3D farm contracts", - ethereum: { - tvl: sumTokensExport({ owners: Fomo3D, tokens: [coreAssets.null] }), - }, -}; diff --git a/projects/fomogame/index.js b/projects/fomogame/index.js deleted file mode 100644 index 2f60bd52dfb..00000000000 --- a/projects/fomogame/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); -const Fomo3D = [ - "0xba8be5277A06D2635553b331eAa0BCB6f4bDB809" -]; - -module.exports = { - methodology: "TVL includes a Fomo3D farm contracts", - matchain: { - tvl: sumTokensExport({ owners: Fomo3D, tokens: [coreAssets.null] }), - }, -}; diff --git a/projects/foodcourt/index.js b/projects/foodcourt/index.js deleted file mode 100644 index ef20f699f04..00000000000 --- a/projects/foodcourt/index.js +++ /dev/null @@ -1,19 +0,0 @@ - - -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0xc801C7980c8C7900Bc898B1F38392b235fF64097', - useDefaultCoreAssets: true, - }), - }, - reichain: { - tvl: getUniTVL({ - factory: '0xC437190E5c4F85EbBdE74c86472900b323447603', - useDefaultCoreAssets: true, - }), - } -} diff --git a/projects/footballdotfun/index.js b/projects/footballdotfun/index.js deleted file mode 100644 index 166d865bd7a..00000000000 --- a/projects/footballdotfun/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - base: { - tvl: sumTokensExport({ - owner: '0x9da1bB4e725ACc0d96010b7cE2A7244Cda446617', - tokens: [ADDRESSES.base.USDC] - }) - } -}; diff --git a/projects/footballmanager/index.js b/projects/footballmanager/index.js deleted file mode 100644 index 4b015697e44..00000000000 --- a/projects/footballmanager/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { masterchefExports, } = require("../helper/unknownTokens") - -module.exports = masterchefExports({ - chain: 'arbitrum', - masterchef: '0x7c9a900a82a252d833ebc222421d6e13dcc09269', - nativeToken: '0xBFCAd87Eb74E5855D72808aBa3d7DD2d790FFEfD', - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address lpToken, uint256, uint256, uint256)" -}) - -module.exports = { - arbitrum: { - tvl: () => 0 - } -} -module.exports.deadFrom = '2023-02-09' \ No newline at end of file diff --git a/projects/forcedao/index.js b/projects/forcedao/index.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/projects/forge-game/index.js b/projects/forge-game/index.js deleted file mode 100644 index 836208b84ce..00000000000 --- a/projects/forge-game/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/ton'); -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - methodology: 'Counts the pre-market wallet size as the TVL.', - timetravel: false, - ton: { - tvl: sumTokensExport({ owner: 'UQAGNpAAIaDrvGWdUCB7ycc_S5tLO0S6PPK0UkrrQb27AWKM', tokens: [ADDRESSES.null]}), - } -} \ No newline at end of file diff --git a/projects/forge-sx-dex/index.js b/projects/forge-sx-dex/index.js deleted file mode 100644 index f22a590975e..00000000000 --- a/projects/forge-sx-dex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - arbitrum: { - tvl: getUniTVL({ factory: '0x2f0a2b314eecc6ba33b3dd4f46816a2196c8af3a', useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/forge/index.js b/projects/forge/index.js deleted file mode 100644 index a1bff39c857..00000000000 --- a/projects/forge/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { uniV3Export, uniV3GraphExport } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - evmos: { factory: '0xf544365e7065966f190155F629cE0182fC68Eaa2', fromBlock: 12367456, }, -}) - -// back-up -// module.exports = { -// evmos: { tvl: uniV3GraphExport({ graphURL: 'https://subgraph.satsuma-prod.com/09c9cf3574cc/orbital-apes/v3-subgraph/api', name: 'forge-evmos' }) } -// } \ No newline at end of file diff --git a/projects/forgesx/index.js b/projects/forgesx/index.js deleted file mode 100644 index 137edbb990c..00000000000 --- a/projects/forgesx/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const FORGE_SOL = '0x4938D2016e7446a24b07635611bD34289Df42ECb' -const USDC_TOKEN = ADDRESSES.arbitrum.USDC - -module.exports = { - methodology: 'counts the number of USDC tokens deposited as collateral in the Forge.sol contract.', - start: '2023-04-04', - arbitrum: { - tvl: sumTokensExport({ owner: FORGE_SOL, tokens: [USDC_TOKEN]}), - } -}; \ No newline at end of file diff --git a/projects/forgeyields/index.js b/projects/forgeyields/index.js deleted file mode 100644 index fe11e5aed95..00000000000 --- a/projects/forgeyields/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') -const ADDRESSES = require('../helper/coreAssets.json'); -const { multiCall } = require('../helper/chain/starknet'); - -const totalAssetsABI = { - "type": "function", - "name": "total_assets", - "inputs": [ - { - "name": "token_gateway", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view", - "customInput": "address" - -} - - -async function fetcher() { - const apiUrl = 'https://api.forgeyields.com/strategies' - return get(apiUrl) -} - -const totalAssetsProvider = "0x2d0ee5bf4445712c414d58544c9d522a537e4292fa3c3ad36e68bd177a378b8" - -async function tvl(api) { - const strategies = await getConfig('forgeyields', undefined, { fetcher }) - - const calls = strategies - .map(strategyInfo => { - const tokenGateway = strategyInfo.token_gateway_per_domain - .find(domain => domain.domain === 'starknet') - ?.token_gateway; - return { - abi: totalAssetsABI, - target: totalAssetsProvider, - params: [tokenGateway] - } - }) - .filter(call => call.params[0]) - - const totalAssets = await multiCall({ calls }) - - let callIndex = 0 - for (const strategyInfo of strategies) { - const tokenGateway = strategyInfo.token_gateway_per_domain - .find(domain => domain.domain === 'starknet') - ?.token_gateway; - - if (tokenGateway) { - const underlying = ADDRESSES.starknet[strategyInfo.underlyingSymbol] - api.add(underlying, totalAssets[callIndex]) - callIndex++ - } - } -} -module.exports = { - methodology: 'Compute the total assets under management for each strategy.', - starknet: { - tvl - }, -} diff --git a/projects/forlend/index.js b/projects/forlend/index.js deleted file mode 100644 index 9d64a9f4cdb..00000000000 --- a/projects/forlend/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - findora: compoundExports2({ comptroller: '0x3b056De20d662B09f73bDb28Ea6fa7b7aC82259C', }), -} diff --git a/projects/form-l2/index.js b/projects/form-l2/index.js deleted file mode 100644 index 2c87d7b730e..00000000000 --- a/projects/form-l2/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x4e259ee5f4136408908160dd32295a5031fa426f", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/forta/index.js b/projects/forta/index.js deleted file mode 100644 index 3974efb36f4..00000000000 --- a/projects/forta/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - polygon: { - tvl: () => 0, - staking: sumTokensExport({ owner: '0xd2863157539b1d11f39ce23fc4834b62082f6874', tokens: ['0x9ff62d1fc52a907b6dcba8077c2ddca6e6a9d3e1'] }) - } -} \ No newline at end of file diff --git a/projects/forthewin/index.js b/projects/forthewin/index.js deleted file mode 100644 index ab3b1179839..00000000000 --- a/projects/forthewin/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { get } = require("../helper/http"); - -async function tvl() { - const data = await get( - "https://api.forthewin.network/mainnet/tokens/liquidity/TOTAL/1" - ); - return { - tether: data.data[0] - }; -} - -module.exports = { - hallmarks: [], - methodology: `TVL is obtained by making calls to the Forthewin Network API.`, - misrepresentedTokens: true, - timetravel: false, - neo: { - tvl - } -}; diff --git a/projects/fortifi/index.js b/projects/fortifi/index.js deleted file mode 100644 index 86eb8750a81..00000000000 --- a/projects/fortifi/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping") - -const vaults = [ - '0x432963C721599Cd039ff610Fad447D487380D858', // FortiFi AVAX Stability Vault (ffAvaSV) - '0x853e7A9dcc5037cD624834DC5f33151AA49d2D73', // FortiFi WAVAX LST MultiYield (ffWavaxLST) -] - -const abi = { - getTokenInfo: "function getTokenInfo(uint256 _tokenId) view returns ((uint256 deposit, ((address strategy, address depositToken, address router, address oracle, bool isFortiFi, bool isSAMS, uint16 bps, uint8 decimals) strategy, uint256 receipt)[] positions))", -} - -async function tvl(api) { - for (const vault of vaults) { - const token = await api.call({ abi: 'address:depositToken', target: vault }).catch(() => nullAddress) - const data = await api.fetchList({ lengthAbi: 'nextToken', itemAbi: abi.getTokenInfo, target: vault }) - api.add(token, data.map(d => d.deposit)) - } -} - -module.exports = { - avax: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/fortress-lending/index.js b/projects/fortress-lending/index.js deleted file mode 100644 index 9e1ff2321b1..00000000000 --- a/projects/fortress-lending/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { compoundExports } = require("../helper/compound"); - -const {tvl:lendingTvl, borrowed} = compoundExports("0x67340bd16ee5649a37015138b3393eb5ad17c195", "0xE24146585E882B6b59ca9bFaaaFfED201E4E5491") - -module.exports = { - deadFrom: '2023-02-16', - bsc: { - tvl: sdk.util.sumChainTvls([lendingTvl]), - borrowed - }, -}; - -module.exports.bsc.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/fortress/api.js b/projects/fortress/api.js deleted file mode 100644 index c96db138dea..00000000000 --- a/projects/fortress/api.js +++ /dev/null @@ -1,9 +0,0 @@ -const index = require('./index') - -module.exports = { - avax: { - tvl: () => 0, - staking: index.avax.staking, - } -} - diff --git a/projects/fortress/index.js b/projects/fortress/index.js deleted file mode 100644 index d398d87ac62..00000000000 --- a/projects/fortress/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0xb8e8d2E97C5F4594F65CCe0f5888C641C7A3a056"; -module.exports = ohmTvl(treasuryAddress, [ - [ADDRESSES.avax.WAVAX, false], - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], - ["0x3e5f198b46f3de52761b02d4ac8ef4ceceac22d6", true], - ["0x2a91134162e2da1394df9e5e64608109d73ed3a0", true], -], "avax", "0x4D8ba74820e2d6EaD2Ea154586CB7dfbA8A691aa", "0xf6d46849db378ae01d93732585bec2c4480d1fd5", undefined, undefined, true) diff --git a/projects/fortube-v3/index.js b/projects/fortube-v3/index.js deleted file mode 100644 index f4f6a8b161b..00000000000 --- a/projects/fortube-v3/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const utils = require('../helper/utils'); - -const url = 'https://api.for.tube/api/v1/bank/public/markets/TVL' - -const tvl = async (api) => { - const { data } = await utils.fetchURL(url) - return api.addUSDValue(Math.round(data.data)) -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { tvl } -} - - diff --git a/projects/fortube/abi.json b/projects/fortube/abi.json deleted file mode 100644 index 3f8abc76845..00000000000 --- a/projects/fortube/abi.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "getCollateralMarketsLength": "uint256:getCollateralMarketsLength", - "collateralTokens": "function collateralTokens(uint256) view returns (address)", - "mkts": "function mkts(address) view returns (uint256 accrualBlockNumber, int256 supplyRate, int256 demondRate, address irm, uint256 totalSupply, uint256 supplyIndex, uint256 totalBorrows, uint256 borrowIndex, uint256 totalReserves, uint256 minPledgeRate, uint256 liquidationDiscount, uint256 decimals)", - "underlying": "address:underlying", - "getAllMarkets": "address[]:getAllMarkets", - "APR": "uint256:APR", - "APY": "uint256:APY", - "totalBorrows": "uint256:totalBorrows" -} \ No newline at end of file diff --git a/projects/fortube/index.js b/projects/fortube/index.js deleted file mode 100644 index 82c7420926c..00000000000 --- a/projects/fortube/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const abi = require("./abi.json"); -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') - -const ForTube = "0xE48BC2Ba0F2d2E140382d8B5C8f261a3d35Ed09C"; -const ForTubeV2 = "0x936E6490eD786FD0e0f0C1b1e4E1540b9D41F9eF"; - -const config = { - ethereum: '0x936E6490eD786FD0e0f0C1b1e4E1540b9D41F9eF', - bsc: '0xc78248D676DeBB4597e88071D3d889eCA70E5469', - okexchain: '0x33d6D5F813BF78163901b1e72Fb1fEB90E72fD72', - iotex: '0xF8C5965BfBAE9c429F91BA357d930Ed78ffd4cF9', - polygon: '0x4Ac2735652944FE5C3dD95807287643502e5dE51', -} - -Object.keys(config).forEach(chain => { - const owner = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const markets = await api.call({ - abi: abi.getAllMarkets, - target: owner, - }) - const erc20AssetsV2 = await api.multiCall({ - abi: abi.underlying, - calls: markets, - }) - const toa = erc20AssetsV2.map(i => ([i, owner])) - toa.push([nullAddress, owner]) - - if (chain === 'ethereum') { - const erc20Assets = await api.fetchList({ - itemAbi: abi.collateralTokens, - lengthAbi: abi.getCollateralMarketsLength, - target: ForTube, - }) - toa.push([nullAddress, ForTube]) - erc20Assets.forEach(i => toa.push([i, ForTubeV2])) - } - - return sumTokens2({ api, tokensAndOwners: toa }) - } - } -}) diff --git a/projects/fortunafi/index.js b/projects/fortunafi/index.js deleted file mode 100644 index 907b59b8a93..00000000000 --- a/projects/fortunafi/index.js +++ /dev/null @@ -1,40 +0,0 @@ - -const config = { - canto: { - fbill: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08', - fCOIN: '0x855EA9979189383ef5A85eB74Ed3a02E2604EA81', - ifBill: '0x45bafad5a6a531Bc18Cf6CE5B02C58eA4D20589b', - }, - arbitrum: { - fbill: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08', - fCOIN: '0x108Ec61bd5A91F5596F824832524C6b6002E3F03', - ifBill: '0x45bafad5a6a531Bc18Cf6CE5B02C58eA4D20589b', - }, - blast: { - fbill: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08', - fCOIN: '0xE85Ae7e8Fa0Ee69426019b7D3E77843673807ABE', - ifBill: '0x45bafad5a6a531Bc18Cf6CE5B02C58eA4D20589b', - }, - ethereum: { - fBill: '0x108Ec61bd5A91F5596F824832524C6b6002E3F03', - ifBill: '0x4B57e1E3fd684d3bb82A0652c77FD7412dF6a2A5', - fCOIN: '0x2378aC4EEAAe44695E1e3d0fcAEEd6ba8b0F5108', - ifCOIN: '0xA6d0f5bb034312f9a4fC565e916B84c264160994', - fHOOD: '0x62C5e58001f91E65C420c4dc4c2F2FAA2264f846', - ifHOOD: '0x7fC6B348368c34013aaC4a7888883b886226E95e', - fSPQQQ: '0x3010E93c37092991E9C1Cc7f7Eeed44148836657', - ifSPQQQ: '0x6D34113F41d5C3b327b6417fC17Ea449C71eA6f4', - fHV1: '0xD71412e045825d52b38355F8ade1230DD2E393e4', - ifHV1: '0xE7638CB7ad2384D635d2C49AeBE76cfbcceC50ed' - }, -} - -Object.keys(config).forEach(chain => { - const tokens = Object.values(config[chain]) - module.exports[chain] = { - tvl: async (api) => { - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: tokens}) - api.add(tokens, supplies) - } - } -}) diff --git a/projects/fortunedao.js b/projects/fortunedao.js deleted file mode 100644 index 7cfc8f44864..00000000000 --- a/projects/fortunedao.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { ohmTvl } = require('./helper/ohm') - -module.exports=ohmTvl("0xC8F249cDCDCBBa52d0908Dd201F20Af926710a9c", [ - ["0xF2001B145b43032AAF5Ee2884e456CCd805F677D", false], - ["0x88ef5a29eEc8BAAAb8c1111A57Ad2FCeC8aD6109", true], -], "cronos", "0xAFfB721B859db8300F7a13d8E80E7b74845Fe47a", "0xcA558149225Fb386B9c26716e8C35a650C74d35e", -()=>ADDRESSES.ethereum.DAI, undefined, false) diff --git a/projects/fortunedao/api.js b/projects/fortunedao/api.js deleted file mode 100644 index 3ff57ec34ea..00000000000 --- a/projects/fortunedao/api.js +++ /dev/null @@ -1,8 +0,0 @@ -const index = require('../fortunedao.js') - -module.exports = { - cronos: { - tvl: () => 0, - staking: index.cronos.staking, - } -} \ No newline at end of file diff --git a/projects/fountain-fi/index.js b/projects/fountain-fi/index.js deleted file mode 100644 index 10085ec3229..00000000000 --- a/projects/fountain-fi/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const sui = require("../helper/chain/sui"); - -const SBUCK_FOUNTAIN_ID = - "0xbdf91f558c2b61662e5839db600198eda66d502e4c10c4fc5c683f9caca13359"; -const SPARKLING_SBUCK_FLASK_ID = - "0xc6ecc9731e15d182bc0a46ebe1754a779a4bfb165c201102ad51a36838a1a7b8"; - -async function tvl(api) { - const object = await sui.getObject(SBUCK_FOUNTAIN_ID); - const staked = object.fields.staked; - - // calculate sBUCK price - const flask = await sui.getObject(SPARKLING_SBUCK_FLASK_ID); - const buck_reserve = flask.fields.reserves; - const sbuck_supply = flask.fields.sbuck_supply.fields.value; - const sbuck_to_buck_price = Number(buck_reserve) / Number(sbuck_supply); - - const exchangd_buck = sbuck_to_buck_price * staked; - - api.add(ADDRESSES.sui.BUCK, exchangd_buck); -} - -module.exports = { - timetravel: false, - sui: { - tvl: () => ({}), - staking: tvl, - }, -}; \ No newline at end of file diff --git a/projects/four-meme/index.js b/projects/four-meme/index.js deleted file mode 100644 index aade92ebd33..00000000000 --- a/projects/four-meme/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const config = { - bsc: { - owners: Object.values({ - tokenManager: "0xEC4549caDcE5DA21Df6E6422d448034B5233bFbC", - tokenManager2: "0x5c952063c7fc8610FFDB798152D69F0B9550762b", - }), - tokens: [ADDRESSES.null, ADDRESSES.bsc.USDT,], - }, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: sumTokensExport(config[chain]) } -}) \ No newline at end of file diff --git a/projects/fourdex/index.js b/projects/fourdex/index.js deleted file mode 100644 index 6972d080875..00000000000 --- a/projects/fourdex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - op_bnb: { - tvl: getUniTVL({ - factory: "0x0f93649C2BA0F64fA939eCe899f1afD0b15C7Bd2", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/fpex/index.js b/projects/fpex/index.js deleted file mode 100644 index 8f3d9d3ca9f..00000000000 --- a/projects/fpex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -// \projects\fpex\index.js -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - flare: { factory: '0xb06df504137c3f393f0f089ebcad5ae7db592c6f', fromBlock: - 44097841, }, // Chain id: 14 (Flare) -}) \ No newline at end of file diff --git a/projects/fpi/index.js b/projects/fpi/index.js deleted file mode 100644 index 99d24c8518e..00000000000 --- a/projects/fpi/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const frax = ADDRESSES.ethereum.FRAX -const fxs = ADDRESSES.ethereum.FXS - -async function tvl(api){ - const balances = {} - // owner 0x6a7efa964cf6d9ab3bc3c47ebddb853a8853c502 - const lpOwned = await api.call({ abi: "function totalBalanceOf(address) view returns (uint256)", target:"0x7287488f8df7dddc5f373142d4827aaf92aac845", params: ["0x921852ba77cbceaa29e986e45ef2207f6e664df2"] }) - const supply = await api.call({ abi: "function totalSupply() view returns (uint256)", target:"0xdb7cbbb1d5d5124f86e92001c9dfdc068c05801d" }) - const fraxInPool = await api.call({ abi: "function balanceOf(address) view returns (uint256)", params:["0xf861483fa7e511fbc37487d91b6faa803af5d37c"], target: frax }) - balances[frax] = lpOwned/supply * fraxInPool - balances[fxs] = await api.call({ abi: "function balanceOf(address) view returns (uint256)", params:["0x6a7efa964cf6d9ab3bc3c47ebddb853a8853c502"], target: fxs }) - - return balances -} - -module.exports={ - ethereum:{ - tvl - } -} \ No newline at end of file diff --git a/projects/fractal-protocol/index.js b/projects/fractal-protocol/index.js deleted file mode 100644 index f9a087873f4..00000000000 --- a/projects/fractal-protocol/index.js +++ /dev/null @@ -1,158 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { userInfo } = require('../pendle/abi.json'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -//Fractal Addresses ETH -const FRACTAL_VAULT_CONTRACT_ETH = '0x3EAa4b3e8967c02cE1304C1EB35e8C5409838DFC'; -const FRACTAL_YIELD_RESERVE_ETH = '0xbA83B569e99B6afc2f2BfE5124460Be6f36a4a56'; - -//Token Addresses ETH -const USDC_ETH = ADDRESSES.ethereum.USDC; - -//Fractal Addresses ARB -const FRACTAL_VAULT_CONTRACT_ARB = '0x80e1a981285181686a3951B05dEd454734892a09' -const FRACTAL_YIELD_RESERVE_ARB = '0x7d7068fB0398906C693DBFc425584FD5b58c4B60' -const FRACTAL_CHRONOS_POOL = '0x468B6e0f89fa727A47d9512021050797B4875D6d' -const FRACTAL_CAMELOT_POOL = '0xf011B036934b58A619D2822d90ecd726126Efdf2' -const FRACTAL_CAMELOT_NITRO_POOL = '0x5d209809d3284309cC34B9D092f88fFc690de6c2' - -//Token Addresses Arb -const USDC_ARB = ADDRESSES.arbitrum.USDC -const USDF_ARB = '0xae48b7C8e096896E32D53F10d0Bf89f82ec7b987' - -//Fractal Addresses All Chains -const FRACTAL_FIREBLOCKS_OWNER = '0x931250786dFd106B1E63C7Fd8f0d854876a45200' - -//Other Addresses -const CHRONOS_GAUGE = '0xDb1759d287d13b409fA80505b623e48cB9cc44Fc' - -//Loans ETH -const ETH_LOANS = [ - '0x60f5A25DfdaBc3BfB3702bCB0142213CEaF1e89a' -] - -//Loans AVAX -const AVAX_LOANS = [ - '0x9297c3B0Eb3DB1Cc72E99cF641CE418a2c3791D9', - '0x1952ae434FA8B5E9c9a1374951e5fd9ae7BD75C7', - '0x9C7629E3bAD32631F3977eF7710415158208E057', - '0x3f2ebE04329B96CBfF6E9911c64fC0c1Fc609d9C', - '0x337dBC3d0C948F8Ef516F6678C3D63d11300Dc10', - '0x595b16Aab6E43664Bf5F2DF0E34fEF1A8e7a2692' -] - -const abis = { - getTokenPrice: "uint256:getTokenPrice", - exchangeRateStored: "uint256:exchangeRateStored", - getVirtualPrice: "uint256:getVirtualPrice", - principalToken: "address:principalToken", - lockedLiquidityOf: "function lockedLiquidityOf(address account) view returns (uint256)", - getDebt: "function getDebt() view returns (uint256 interestDebtAmount, uint256 grossDebtAmount, uint256 principalDebtAmount, uint256 interestOwed, uint256 applicableLateFee, uint256 netDebtAmount, uint256 daysSinceFunding, uint256 currentBillingCycle, uint256 minPaymentAmount, uint256 maxPaymentAmount)", - userInfo: "function userInfo(address account) view returns (uint256 totalDepositAmount, uint256 rewardDebtToken1, uint256 rewardDebtToken2, uint256 pendingRewardsToken1, uint256 pendingRewardsToken2)" -} - -// Define the function -async function getLoanDebt(loans, api) { - const loanDebts = await api.multiCall({ abi: abis.getDebt, calls: loans }) - loanDebts.map((loanDebt) => api.add(USDC_ETH, loanDebt.principalDebtAmount, { skipChain: true })) - return api.getBalances() -} - -const getEthTvl = async (api) => { - return sumTokens2({ owners: [FRACTAL_YIELD_RESERVE_ETH, FRACTAL_VAULT_CONTRACT_ETH], tokens: [USDC_ETH,], api }) -}; - -const getEthLoans = async (api) => { - return getLoanDebt(ETH_LOANS, api) -} - -const getArbTvl = async (_, _b, { arbitrum: block }, { api }) => { - // const usdfPrice = await api.call({ target: FRACTAL_VAULT_CONTRACT_ARB, abi: abis.getTokenPrice, }) - - const [ - chronosLpBalance, usdcBalanceChronosPool, usdfBalanceChronosPool, usdcBalanceCamelotPool, usdfBalanceCamelotPool, - ] = await api.multiCall({ - abi: 'erc20:balanceOf', calls: [ - { target: CHRONOS_GAUGE, params: FRACTAL_FIREBLOCKS_OWNER }, - { target: USDC_ARB, params: FRACTAL_CHRONOS_POOL }, - { target: USDF_ARB, params: FRACTAL_CHRONOS_POOL }, - { target: USDC_ARB, params: FRACTAL_CAMELOT_POOL }, - { target: USDF_ARB, params: FRACTAL_CAMELOT_POOL }, - ] - }) - - const camelotUserInfo = await api.call({ - target: FRACTAL_CAMELOT_NITRO_POOL, - abi: abis.userInfo, - params: FRACTAL_FIREBLOCKS_OWNER, - }) - - const [ - chronosLpTokenSupply, camelotLpTokenSupply, - ] = await api.multiCall({ - abi: 'erc20:totalSupply', calls: [ - FRACTAL_CHRONOS_POOL, FRACTAL_CAMELOT_POOL, - ] - }) - - api.add(USDC_ARB, usdcBalanceChronosPool * chronosLpBalance / chronosLpTokenSupply) - api.add(USDC_ARB, usdcBalanceCamelotPool * camelotUserInfo.totalDepositAmount / camelotLpTokenSupply) - // api.add(USDF_ARB, usdfBalanceChronosPool * chronosLpBalance / chronosLpTokenSupply) - // api.add(USDF_ARB, usdfBalanceCamelotPool * camelotUserInfo.totalDepositAmount / camelotLpTokenSupply) - - return sumTokens2({ api, tokens: [USDC_ARB], owners: [FRACTAL_YIELD_RESERVE_ARB, FRACTAL_VAULT_CONTRACT_ARB] }) -}; - -const getAvaxTvl = async (_, _b, { avax: block }, { api }) => { - const strategy = '0x9fea225c7953869e68b8228d2c90422d905e5117' - const nUSDLP = '0xCA87BF3ec55372D9540437d7a86a7750B42C02f4' - const nUSDSwap = '0xed2a7edd7413021d440b09d654f3b87712abab66' - const synapseMiniChef = '0x3a01521f8e7f012eb37eaaf1cb9490a5d9e18249' - const { amount } = await api.call({ - target: synapseMiniChef, params: [1, strategy], - abi: userInfo, - }) - const price = await api.call({ - target: nUSDSwap, abi: abis.getVirtualPrice, - }) - const synapseBalance = amount * price / 1e36 - - return { tether: synapseBalance } -} - -const getAvaxLoans = async (_, _b, { avax: block }, { api }) => { - return getLoanDebt(AVAX_LOANS, api) -} - -const getPolygonTvl = async (_, _b, { polygon: block }, { api }) => { - const strategy = '0x894cB5e24DDdD9ececb27831647ae869541Af28F' - const nUSDLP = '0x7479e1bc2f2473f9e78c89b4210eb6d55d33b645' - const nUSDSwap = '0x85fcd7dd0a1e1a9fcd5fd886ed522de8221c3ee5' - const synapseMiniChef = '0x7875af1a6878bda1c129a4e2356a3fd040418be5' - const { amount } = await api.call({ - target: synapseMiniChef, params: [1, strategy], - abi: userInfo, - }) - const price = await api.call({ - target: nUSDSwap, abi: abis.getVirtualPrice, - }) - return { tether: amount * price / 1e36 } -} - - -module.exports = { - ethereum: { - tvl: getEthTvl, - borrowed: getEthLoans - }, - arbitrum: { - tvl: getArbTvl - }, - avax: { - tvl: getAvaxTvl, - borrowed: getAvaxLoans - }, - polygon: { - tvl: getPolygonTvl - } -}; diff --git a/projects/fractional-art.js b/projects/fractional-art.js deleted file mode 100644 index 43b3a90e2bb..00000000000 --- a/projects/fractional-art.js +++ /dev/null @@ -1,56 +0,0 @@ -const { getLogs } = require('./helper/cache/getLogs') -const { sumTokens2 } = require('./helper/unwrapLPs') -const { isArtBlocks } = require('./helper/nft') - -async function tvl(api) { - const factory = '0x85aa7f78bdb2de8f3e0c0010d99ad5853ffcfc63' - const logs = await getLogs({ - api, - target: factory, - topics: ['0xf9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e'], - eventAbi: 'event Mint (address indexed token, uint256 id, uint256 price, address vault, uint256 vaultId)', - onlyArgs: true, - fromBlock: 12743932, - }) - const artBlockOwners = [] - const tokensAndOwners = logs.map(log => [log.token, log.vault]).filter(([token, vault]) => { - if (isArtBlocks(token)) { - artBlockOwners.push(vault) - return false - } - return true - }) - - await sumTokens2({ api, owners: artBlockOwners, resolveArtBlocks: true, }) - - return sumTokens2({ - api, tokensAndOwners, blacklistedTokens: [ - '0x9ef27de616154ff8b38893c59522b69c7ba8a81c', - '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', - ] - }) -} -async function tvlLPDA(api) { - const factory = '0x32e8ab1e243d8d912a5ae937635e07e7e451d2ae' - const logs = await getLogs({ - api, - target: factory, - topics: ['0x4a08e09eb1f4b221a4d4faff944c52d3bb85486dd0f7e647977d35b406e16e43'], - eventAbi: 'event CreatedLPDA(address indexed vault, address indexed token, uint256 _id, tuple(uint32 startTime, uint32 endTime, uint64 dropPerSecond, uint128 startPrice, uint128 endPrice, uint128 minBid, uint16 supply, uint16 numSold, uint128 curatorClaimed, address curator) _lpdaInfo)', - onlyArgs: true, - fromBlock: 16125170, - }) - - return sumTokens2({ - api, tokensAndOwners: logs.map(log => [log.token, log.vault]), blacklistedTokens: [ - '0x9ef27de616154ff8b38893c59522b69c7ba8a81c', - ], - }) -} - -module.exports = { - ethereum: { tvl: tvl }, - methodology: `TVL is value of nfts in the vaults` -} - - diff --git a/projects/fractit-fleet/index.js b/projects/fractit-fleet/index.js deleted file mode 100644 index a8faf356787..00000000000 --- a/projects/fractit-fleet/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const CONTRACTS = { - plume: { - FVH_contract: "0x4b87dF81A498ed204590f9aF25b8889cd0cBC5f7", - pUsd: "0xdddD73F5Df1F0DC31373357beAC77545dC5A6f3F", - }, - botanix: { - FVH_contract: "0x81f1C1521DdCA5efA45d96c51384098E8AB1C916", - pUsd: "0x42725b4D9270CFe24F6852401fdDa88248CB4dE9", - }, -}; - -async function tvl(api, chainName) { - const { FVH_contract, pUsd } = CONTRACTS[chainName]; - - const balance = await api.call({ - abi: 'erc20:balanceOf', - target: pUsd, - params: [FVH_contract], - }); - - api.add(pUsd, balance); -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: "TVL counts the amount of pUsd locked in FVH_contract on each chain.", - start: 1, - - plume_mainnet: { - tvl: async (api) => tvl(api, "plume"), - }, - btnx: { - tvl: async (api) => tvl(api, "botanix"), - }, -}; diff --git a/projects/fragmetric/index.js b/projects/fragmetric/index.js deleted file mode 100644 index d0ef134886b..00000000000 --- a/projects/fragmetric/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); - -async function tvl() { - return sumTokens2({ - tokenAccounts: [ - // fragSOL Fund - "C4EHVbBhbBGdxZNCJEuKWghYTTjwoPibwo1dcu74hvFM", - "9aCT9JwuyXj9wzoabwRwgtpGBgDHfpmK8ncEzgRpGPM6", - "4GzQxHyDdGrVPjEj1cz75R5TmrCkXHMCcUw1t9LpyDcK", - "Fi69jARfww4TGod9ESLWfSqRf9Vq5vfFNy8K4V8uCGSN", - "5S7qzbgAgWm1AWrm5zUqnoHisc1W72Bsb9CgunLBqu3q", - // fragSOL NTP - "HSKvv9UFCn4c6Jq3j8iiJfFgXFjRE6dr6QhWX2KD8gGU", - "3KdpoeWuwaXLuukf56p8e1FtDKjY8pCmtZdmZejUctwP", - "9grKYUmguSLVC9RHW1xKcLpiAphJrmcDkTVTCg9ebpFz", - "EbMiibdEBswBKxATPtYEiaRcx7uzJvyWvexVzUJ6iyje", - "A2WHeVfyxSF9jQSt7uhvwfvBUqFd7SCVMFbkhVf2rHTG", - // fragJTO Fund - "DvKHN9YNoWERUNcxpEfUvd1UmPwHjoDgyDiwWntMfba4", - // Jito JTO Vault - "3Fz1WVV7N3h5VScoveHyote6Y129F3Gmc3PcfnBuSbV3", - // fragBTC Fund - "B5eYu4dKBS8bTvLdeZungomcaQx52rDprdKEcyHzgbBD", - "9fvyDGfUJta9ShCagSHZirWTX4TxU4aTQVc9ndUbSoCz", - "C14KEN37y1jei1RFxcKLP46AQkgpUokEmp45GvX8Ch9P", - ], - solOwners: [ - "3H22A3T3CMyoGzAURZ4szV5Hmt64Dooo5g9Ns8h1kYy7", - ] - }) -} - -module.exports = { - timetravel: false, - doublecounted: true, - solana: { tvl }, - methodology: 'TVL is calculated by summing all restaked assets.', -}; diff --git a/projects/frakt/index.js b/projects/frakt/index.js deleted file mode 100644 index 6e280a96e71..00000000000 --- a/projects/frakt/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); -const { getConfig } = require('../helper/cache') - -let data - -async function getData() { - if (!data) data = getAllData() - return data - - - async function getAllData() { - const programId = 'A66HabVL3DzNzeJgcHYtRRNW1ZRMKwBfrdSR4kLsZ9DJ' - const provider = getProvider() - const idl = await getConfig('frakt-idl', 'https://raw.githubusercontent.com/frakt-solana/frakt-sdk/master/src/loans/idl/nft_lending_v2.json') - const program = new Program(idl, programId, provider) - const pbPools = await program.account.priceBasedLiquidityPool.all() - const liquidityPools = await program.account.liquidityPool.all() - const solOwners = [...liquidityPools.map(i => i.account.liqOwner), ...pbPools.map(i => i.account.liqOwner)].map(i => i.toString()) - const poolsTVL = (await sumTokens2({ solOwners }))['solana:' + ADDRESSES.solana.SOL] ?? 0 - const loans = await program.account.loan.all() - - const loanSum = loans.filter(i => i.account.loanStatus.activated).reduce((a, i) => a + +i.account.originalPrice, 0) - const lpStaked = liquidityPools.reduce((a, i) => a + +i.account.amountOfStaked, 0) - const pbLPStaked = pbPools.reduce((a, i) => a + +i.account.amountOfStaked, 0) - - const tvl = loanSum + poolsTVL - const borrowed = lpStaked + pbLPStaked - poolsTVL - return { tvl, borrowed } - } -} - -const tvl = async () => { - return { ['solana:' + ADDRESSES.solana.SOL]: (await getData()).tvl } -}; - -const borrowed = async () => { - return { ['solana:' + ADDRESSES.solana.SOL]: (await getData()).borrowed } -} - -module.exports = { - timetravel: false, - methodology: 'Tvl is sum of sol in pools not yet lent out + value of locked NFTs', - solana: { - tvl, - borrowed, - } -}; diff --git a/projects/francium.js b/projects/francium.js deleted file mode 100644 index 41ec5368a87..00000000000 --- a/projects/francium.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require('./helper/http') - -const url = "https://francium-data.s3-us-west-2.amazonaws.com/tvl/liquidity.json" - -const tvl = async (api) => { - const { data } = await get(url) - const poolLiqArray = data.farm.map(pool => pool.liquidityLocked); - const lendArray = data.lend.map(pool => pool.available); - const tvl = [...poolLiqArray, ...lendArray, data.old].reduce((a, b) => a + b, 0); - return api.addUSDValue(Math.round(tvl)) -} - -module.exports = { - hallmarks:[[1667865600, "FTX collapse"]], - misrepresentedTokens: true, - timetravel: false, - methodology: 'Value of total LP tokens locked + deposits that are not borrowed.', - solana: { tvl }, -}; diff --git a/projects/frankencoin/index.js b/projects/frankencoin/index.js deleted file mode 100644 index c340b6dc736..00000000000 --- a/projects/frankencoin/index.js +++ /dev/null @@ -1,114 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { stakings } = require("../helper/staking.js"); -const { cachedGraphQuery } = require('../helper/cache') - -// @dev: mapping of XCHF, VCHF to its Bridges -const XCHFBridge = ["0xb4272071ecadd69d933adcd19ca99fe80664fc08", "0x7bbe8F18040aF0032f4C2435E7a76db6F1E346DF"]; -const VCHFBridge = ["0x79d4f0232A66c4c91b89c76362016A1707CFBF4f", "0x3b71ba73299f925a837836160c3e1fec74340403"]; - -// @dev: all relevant addresses across all supported chains -const ChainAddressMap = { - ethereum: { - frankencoin: '0xB58E61C3098d85632Df34EecfB899A1Ed80921cB', - equity: '0x1bA26788dfDe592fec8bcB0Eaff472a42BE341B2', - savingsV2: '0x3BF301B0e2003E75A3e86AB82bD1EFF6A9dFB2aE', - savingsReferral: '0x27d9AD987BdE08a0d083ef7e0e4043C857A17B38', - }, - polygon: { - bridgedFrankencoin: '0xD4dD9e2F021BB459D5A5f6c24C12fE09c5D45553', - bridgedSavings: '0xB519BAE359727e69990C27241Bef29b394A0ACbD', - }, - arbitrum: { - bridgedFrankencoin: '0xD4dD9e2F021BB459D5A5f6c24C12fE09c5D45553', - bridgedSavings: '0xb41715e54e9f0827821A149AE8eC1aF70aa70180', - }, - optimism: { - bridgedFrankencoin: '0xD4dD9e2F021BB459D5A5f6c24C12fE09c5D45553', - bridgedSavings: '0x6426324Af1b14Df3cd03b2d500529083c5ea61BC', - }, - base: { - bridgedFrankencoin: '0xD4dD9e2F021BB459D5A5f6c24C12fE09c5D45553', - bridgedSavings: '0x6426324Af1b14Df3cd03b2d500529083c5ea61BC', - }, - avalanche: { - bridgedFrankencoin: '0xD4dD9e2F021BB459D5A5f6c24C12fE09c5D45553', - bridgedSavings: '0x8e7c2a697751a1cE7a8DB51f01B883A27c5c8325', - }, - gnosis: { - bridgedFrankencoin: '0xD4dD9e2F021BB459D5A5f6c24C12fE09c5D45553', - bridgedSavings: '0xbF594D0feD79AE56d910Cb01b5dD4f4c57B04402', - }, - sonic: { - bridgedFrankencoin: '0xD4dD9e2F021BB459D5A5f6c24C12fE09c5D45553', - bridgedSavings: '0x4E104918908293cd6A93E1A9bbe06C345d751235', - }, -}; - - -async function tvl(api) { - // @dev: register bridged token as collateral for backing and TVL - const tokensAndOwners = [XCHFBridge, VCHFBridge]; - - // @dev: query of positions from minting hubs via frankencoin graph (ponder) - const { mintingHubV1PositionV1s: positionV1s } = await cachedGraphQuery('frankencoinV1', 'https://ponder.frankencoin.com', '{ mintingHubV1PositionV1s { items { position collateral } } }'); - const { mintingHubV2PositionV2s: positionV2s } = await cachedGraphQuery('frankencoinV2', 'https://ponder.frankencoin.com', '{ mintingHubV2PositionV2s { items { position collateral } } }'); - - // @dev: mapping of positions from minting hubs - positionV1s?.items?.forEach(i => tokensAndOwners.push([i.collateral, i.position])); - positionV2s?.items?.forEach(i => tokensAndOwners.push([i.collateral, i.position])); - - return sumTokens2({ api, tokensAndOwners, }); -} - -module.exports = { - ethereum: { - tvl, - staking: stakings( - [ChainAddressMap.ethereum.savingsV2, ChainAddressMap.ethereum.savingsReferral], - ChainAddressMap.ethereum.frankencoin - ), - }, - polygon: { - staking: stakings( - [ChainAddressMap.polygon.bridgedSavings], - ChainAddressMap.polygon.bridgedFrankencoin - ), - }, - arbitrum: { - staking: stakings( - [ChainAddressMap.arbitrum.bridgedSavings], - ChainAddressMap.arbitrum.bridgedFrankencoin - ), - }, - optimism: { - staking: stakings( - [ChainAddressMap.optimism.bridgedSavings], - ChainAddressMap.optimism.bridgedFrankencoin - ), - }, - base: { - staking: stakings( - [ChainAddressMap.base.bridgedSavings], - ChainAddressMap.base.bridgedFrankencoin - ), - }, - avax: { - staking: stakings( - [ChainAddressMap.avalanche.bridgedSavings], - ChainAddressMap.avalanche.bridgedFrankencoin - ), - }, - xdai: { - staking: stakings( - [ChainAddressMap.gnosis.bridgedSavings], - ChainAddressMap.gnosis.bridgedFrankencoin - ), - }, - sonic: { - staking: stakings( - [ChainAddressMap.sonic.bridgedSavings], - ChainAddressMap.sonic.bridgedFrankencoin - ), - }, - start: '2023-10-28', -}; \ No newline at end of file diff --git a/projects/franklinTempleton-finance/index.js b/projects/franklinTempleton-finance/index.js deleted file mode 100644 index b6ed87881d0..00000000000 --- a/projects/franklinTempleton-finance/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { getResources } = require("../helper/chain/aptos") -const { getAssetSupply } = require("../helper/chain/stellar") - -const BENJI = { - stellar: '', - arbitrum: '0xb9e4765bce2609bc1949592059b17ea72fee6c6a', - polygon: '0x408a634b8a8f0de729b48574a3a7ec3fe820b00a', - avax: '0xe08b4c1005603427420e64252a8b120cace4d122', - base: '0x60cfc2b186a4cf647486e42c42b11cc6d571d1e4', - ethereum: '0x3ddc84940ab509c11b20b76b466933f40b750dc9' -} - -const stellarTvl = async (api) => { - api.addUSDValue(await getAssetSupply('BENJI-GBHNGLLIE3KWGKCHIKMHJ5HVZHYIK7WTBE4QF5PLAKL4CJGSEU7HZIW5')) -} - -const evmTVL = async (api) => { - const [decimals, totalSupply] = await Promise.all([ - api.call({ target: BENJI[api.chain], abi: 'erc20:decimals' }), - api.call({ target: BENJI[api.chain], abi: 'erc20:totalSupply' }) - ]) - - api.addUSDValue((totalSupply / Math.pow(10, decimals))) -} - -Object.keys(BENJI).forEach((chain) => { - module.exports[chain] = { tvl: chain === 'stellar' ? stellarTvl : evmTVL }; -}); - -module.exports.misrepresentedTokens = true; - - -module.exports.aptos = { - tvl: async (api) => { - const res = await getResources('0x7b5e9cac3433e9202f28527f707c89e1e47b19de2c33e4db9521a63ad219b739', api.chain) - const supply = res.find(i => i.type === '0x1::fungible_asset::ConcurrentSupply').data.current.value - api.addUSDValue(supply/1e9) - } -} \ No newline at end of file diff --git a/projects/frax-ETH/index.js b/projects/frax-ETH/index.js deleted file mode 100644 index 7f6bfee2d58..00000000000 --- a/projects/frax-ETH/index.js +++ /dev/null @@ -1,120 +0,0 @@ -const { get } = require("../helper/http"); -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk") - -const abi = { - coins: "function coins(uint256 arg0) view returns (address)", - get_balances: "function get_balances() view returns (uint256[2])", - lockedLiquidityOf: "function lockedLiquidityOf(address account) view returns (uint256)", - redemptionQueueAccounting: "function redemptionQueueAccounting() view returns (uint128 etherLiabilities, uint128 unclaimedFees)", - get_balances2: "function get_balances() view returns (uint256[])", -} - -/** - * Config Ethereum - */ - -const frxETH = "0x5E8422345238F34275888049021821E8E08CAa1f" -const treasury = "0x8306300ffd616049FD7e4b0354a64Da835c1A81C"; -const minter = "0xbAFA44EFE7901E04E39Dad13167D089C559c1138"; -const redeemer = "0x82bA8da44Cd5261762e629dd5c605b17715727bd" -const st_frxETH = "0x4d9f9D15101EEC665F77210cB999639f760F831E"; -const frxeth_ng = '0x9c3B46C0Ceb5B9e304FCd6D88Fc50f7DD24B31Bc' -const stakingProxyConvex_1 = '0x32a2849100ed63878ba8ee6e924EB052A57ecB44' -const stakingProxyConvex_2 = '0x74da8EB74DD94Dbd3B501eb16D8CB2C5222dBDa9' -const stakingConvex_1 = "0x68921998fbc43B360D3cF14a03aF4273CB0cFA44" -const stakingConvex_2 = "0xB4fdD7444E1d86b2035c97124C46b1528802DA35" - -const url = "https://api.frax.finance/v2/frxeth/validators" - -/** - * Config Fraxtal - */ - -const wfrxETH = "0xFC00000000000000000000000000000000000006" -const treasury_2 = "0x0ae0548Ef97d3eC699cF375e2467E24B2f35847c" -const ezwfrxETH = "0x6e9b6660b94fa74A8087D7ee14Dc28698249D242" - -const unwrapperCRV = async (api, lps, treasury) => { - const [supplies, token0s, token1s, poolBalances, balanceOfs] = await Promise.all([ - api.multiCall({ calls: lps.map((lp) => ({ target: lp.pool })), abi: "erc20:totalSupply" }), - api.multiCall({ calls: lps.map((lp) => ({ target: lp.pool, params: [0] })), abi: abi.coins }), - api.multiCall({ calls: lps.map((lp) => ({ target: lp.pool, params: [1] })), abi: abi.coins }), - api.multiCall({ calls: lps.map((lp) => ({ target: lp.pool })), abi: abi.get_balances }), - api.multiCall({ calls: lps.map((lp) => ({ target: lp.pool, params: [treasury], skip: lp.balance !== undefined })), abi: "erc20:balanceOf" }), - ]) - - lps.forEach((lp, i) => { - const supply = supplies[i] - const token0 = token0s[i] - const token1 = token1s[i] - const poolBalance = poolBalances[i] - const balanceOf = lp.balance !== undefined ? lp.balance : balanceOfs[i]; - api.add(token0, balanceOf * poolBalance[0] / supply, { skipChain: true }) - api.add(token1, balanceOf * poolBalance[1] / supply, { skipChain: true }) - }) -}; - -const unwrapperCRVCVX = async (api, lps, treasury) => { - const balanceOfs = await api.multiCall({ calls: lps.map((lp) => ({ target: lp.staker, params: [lp.user] })) , abi: abi.lockedLiquidityOf }) - return unwrapperCRV(api, lps.map((lp, i) => ({...lp, balance: balanceOfs[i]})), treasury) -} - -const treasuryAssets = async (api, treasury) => { - await Promise.all([ - unwrapperCRV(api, [{ pool: st_frxETH }, { pool: frxeth_ng }], treasury), - unwrapperCRVCVX(api, [ - { user: stakingProxyConvex_1, staker: stakingConvex_1, pool: st_frxETH }, - { user: stakingProxyConvex_2, staker: stakingConvex_2, pool: frxeth_ng } - ], treasury) - ]) - - api.add(frxETH, await api.call({ target: frxETH, params: [treasury], abi: 'erc20:balanceOf' })) - api.add(ADDRESSES.ethereum.WETH, (await sdk.api.eth.getBalance({ target: treasury })).output) -} - -const redeemerAssets = async (api, redeemer) => { - const unclaimed = await api.call({ target: redeemer, abi: abi.redemptionQueueAccounting }) - api.add(ADDRESSES.ethereum.WETH, unclaimed.unclaimedFees) - api.add(ADDRESSES.ethereum.WETH, (await sdk.api.eth.getBalance({ target: redeemer })).output) -} - -const validatorsAssets = async (api) => { - const { validators } = await get(url) - const balances = validators.map((r) => r.balanceDec * Math.pow(10, 18)) - const totalBalance = balances.reduce((acc, balance) => acc + balance, 0); - api.add(ADDRESSES.ethereum.WETH, totalBalance) -} - - -const ethTvl = async (api) => { - await Promise.all([ - treasuryAssets(api, treasury), // frxETH Treasury - redeemerAssets(api, redeemer), // frxETH redeemer - validatorsAssets(api) // validators - ]) - - api.add(ADDRESSES.ethereum.WETH, (await sdk.api.eth.getBalance({ target: minter })).output) // frxETH Minter - api.removeTokenBalance(frxETH) -}; - -const fraxtalTvl = async (api) => { - const [supply, token0, token1, poolBalance, balanceOf] = await Promise.all([ - api.call({ target: ezwfrxETH, abi: "erc20:totalSupply" }), - api.call({ target: ezwfrxETH, params: [0], abi: abi.coins }), - api.call({ target: ezwfrxETH, params: [1], abi: abi.coins }), - api.call({ target: ezwfrxETH, abi: abi.get_balances2 }), - api.call({ target: ezwfrxETH, params: [treasury_2], abi: "erc20:balanceOf" }), - ]) - - api.add(token0 === wfrxETH ? frxETH : token0, balanceOf * poolBalance[0] / supply) - api.add(token1 === wfrxETH ? frxETH : token1, balanceOf * poolBalance[1] / supply) - api.add(frxETH, (await sdk.api.eth.getBalance({ target: treasury })).output) - api.removeTokenBalance(frxETH) -} - -module.exports = { - methodology: "TVL represents all the on-chain assets backing frxETH", - ethereum: { tvl: ethTvl }, - fraxtal: { tvl: fraxtalTvl } -}; diff --git a/projects/frax-bamm/index.js b/projects/frax-bamm/index.js deleted file mode 100644 index e39224285e5..00000000000 --- a/projects/frax-bamm/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') - -module.exports = { - methodology: "Sums the TVL of all Bamms Deployed via the factory", -}; - -const config = { - fraxtal: { - factory: "0x19928170D739139bfbBb6614007F8EEeD17DB0Ba" - } -}; - - -Object.keys(config).forEach(chain => { - const { factory, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const bamms = await api.fetchList({ lengthAbi: 'bammsLength', itemAbi: 'bamms', target: factory }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: bamms }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: bamms }) - const pairs = await api.multiCall({ abi: 'address:pair', calls: bamms }) - const ownerTokens = bamms.map((v, i) => [[token0s[i], token1s[i], pairs[i]], v]) - return sumUnknownTokens({ api, ownerTokens, useDefaultCoreAssets: true, lps: pairs }) - }, - borrowed: async (api) => { - const bamms = await api.fetchList({ lengthAbi: 'bammsLength', itemAbi: 'bamms', target: factory }) - const pairs = await api.multiCall({ abi: 'address:pair', calls: bamms }) - const sqrtRenteds = await api.multiCall({ abi: 'uint256:sqrtRented', calls: bamms }) - const rentedMultipliers = await api.multiCall({ abi: 'uint256:rentedMultiplier', calls: bamms }) - pairs.forEach((pair, i) => { - const balance = sqrtRenteds[i] * rentedMultipliers[i] / 1e18 - api.add(pair, balance) - }) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: pairs, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/frax-rwa/index.js b/projects/frax-rwa/index.js deleted file mode 100644 index a02b3c67db0..00000000000 --- a/projects/frax-rwa/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - ethereum: { - factories: [ - { factory: "0x10f2773F54CA36d456d6513806aA24f5169D6765", fromBlock: 21636725 }, - { factory: "0xc4B490154c91C140E5b246147Eb1d6973b7b035D", fromBlock: 21636725 }, - ], - blacklistedTokens: [ADDRESSES.ethereum.FRAX,] - }, -} - -Object.keys(config).forEach(chain => { - const { factories, blacklistedTokens} = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const toa = [] - for (const { factory, fromBlock } of factories) { - const res = await getLogs2({ factory, fromBlock, api, eventAbi: 'event CustodianDeployed (address indexed custodianAddr, address indexed custodianTkn, uint256 mintCap, uint256 _mintFee, uint256 _redeemFee)' }) - res.forEach(i => toa.push([i.custodianTkn, i.custodianAddr])) - } - return api.sumTokens({ tokensAndOwners: toa, blacklistedTokens,}) - } - } -}) \ No newline at end of file diff --git a/projects/frax-swap/index.js b/projects/frax-swap/index.js deleted file mode 100644 index 5c9e5fe2adc..00000000000 --- a/projects/frax-swap/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require("@defillama/sdk") - -const fx = (chain, ...factories) => ({ - [chain]: { - tvl: sdk.util.sumChainTvls(factories.map(factory => getUniTVL({ factory }))) - }, -}) - -/* Missing -https://facts.frax.finance/pools/0x2397321b301B80A1C0911d6f9ED4b6033d43cF51 -https://facts.frax.finance/pools/0xf2B9155E3C9756a18EF6572fC99B39F88a9fFf25 -https://facts.frax.finance/pools/0x247b71D57Ac80883364599ad5c9D74ea5EDc8660 (2k tvl) -*/ - -module.exports = { - ...fx("ethereum", "0xb076b06f669e682609fb4a8c6646d2619717be4b", "0x43ec799eadd63848443e2347c49f5f52e8fe0f6f"), - ...fx("arbitrum", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", "0x8374A74A728f06bEa6B7259C68AA7BBB732bfeaD"), - ...fx("avax", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", "0xf77ca9B635898980fb219b4F4605C50e4ba58afF"), - ...fx("bsc", "0xa007a9716dba05289df85A90d0Fd9D39BEE808dE", "0xf89e6CA06121B6d4370f4B196Ae458e8b969A011"), - ...fx("dogechain", "0x67b7DA7c0564c6aC080f0A6D9fB4675e52E6bF1d"), - ...fx("fantom", "0xF55C563148cA0c0F1626834ec1B8651844D76792", "0xDc745E09fC459aDC295E2e7baACe881354dB7F64"), - ...fx("moonbeam", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", "0x51f9DBEd76f5Dcf209817f641b549aa82F35D23F"), - ...fx("polygon", "0xc2544A32872A91F4A553b404C6950e89De901fdb", "0x54F454D747e037Da288dB568D4121117EAb34e79"), - ...fx("fraxtal", "0xe30521fe7f3beb6ad556887b50739d6c7ca667e6"), -}; diff --git a/projects/fraxfinance/index.js b/projects/fraxfinance/index.js deleted file mode 100644 index acb073dfecc..00000000000 --- a/projects/fraxfinance/index.js +++ /dev/null @@ -1,172 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { staking, } = require("../helper/staking"); -const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); - -const USDC = ADDRESSES.ethereum.USDC; -const FXS = ADDRESSES.ethereum.FXS; -const FRAX_3CRV = '0xd632f22692fac7611d2aa1c0d552930d43caed3b' -const T_3CRV = '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490' - -const veFXS_StakingContract = "0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0"; -const INVESTOR_AMO = '0xb1748c79709f4ba2dd82834b8c82d4a505003f27' - -const POOL_STAKING_CONTRACTS = [ - "0xD875628B942f8970De3CcEaf6417005F68540d4f", - "0xa29367a3f057F3191b62bd4055845a33411892b6", - "0xda2c338350a0E59Ce71CDCED9679A3A590Dd9BEC", - "0xDc65f3514725206Dd83A8843AAE2aC3D99771C88", -]; -const LP_ADDRESSES = [ - //Uniswap FRAX/WETH LP - "0xFD0A40Bc83C5faE4203DEc7e5929B446b07d1C76", - //Uniswap FRAX/USDC LP - "0x97C4adc5d28A86f9470C70DD91Dc6CC2f20d2d4D", - //Uniswap FRAX/FXS LP - "0xE1573B9D29e2183B1AF0e743Dc2754979A40D237", - //Uniswap FXS/WETH LP - "0xecBa967D84fCF0405F6b32Bc45F4d36BfDBB2E81", -]; - -async function get3CRVRatio(api) { - const [ - frax3crvSupply, - bal_3crv, - ] = await Promise.all([ - api.call({ abi: 'erc20:totalSupply', target: FRAX_3CRV, }), - api.call({ abi: 'erc20:balanceOf', target: T_3CRV, params: FRAX_3CRV, }), - ]) - return bal_3crv / frax3crvSupply -} - -async function addFrax3CRV(api, balances) { - const vault = '0x49ee75278820f409ecd67063D8D717B38d66bd71' - const [ - frax3crvBal, - ratio3CRV, - ] = await Promise.all([ - api.call({ abi: 'uint256:FRAX3CRVInVault', target: vault }), - get3CRVRatio(api), - ]) - sdk.util.sumSingleBalance(balances, T_3CRV, ratio3CRV * frax3crvBal, api.chain) -} - -async function addyFrax3CRV(api, balances) { - const vault = '0x72170Cdc48C33a6AE6B3E83CD387ca3Fb9105da2' - const yFRAX3CRV = '0xB4AdA607B9d6b2c9Ee07A275e9616B84AC560139' - const [ - yfrax3crvBal, - pricePerShare, - ratio3CRV, - ] = await Promise.all([ - api.call({ abi: 'uint256:yvCurveFRAXBalance', target: vault }), - api.call({ abi: 'uint256:pricePerShare', target: yFRAX3CRV }), - get3CRVRatio(api), - ]) - sdk.util.sumSingleBalance(balances, T_3CRV, yfrax3crvBal * ratio3CRV * (pricePerShare / 1e18), api.chain) - return sumTokens2({ balances, api, owner: vault, tokens: [USDC] }) -} - - -async function addCvxFRAX_BP(api, balances) { - const convexFRAXBP = '0x7e880867363A7e321f5d260Cade2B0Bb2F717B02' - const crvFRAX = '0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC' - const crvFRAXPool = '0xdcef968d416a41cdac0ed8702fac8128a64241a2' - const [ - cvxFraxBal, - usdcBal, - poolSupply, - ] = await Promise.all([ - - api.call({ abi: 'erc20:balanceOf', target: convexFRAXBP, params: INVESTOR_AMO }), - api.call({ abi: 'erc20:balanceOf', target: USDC, params: crvFRAXPool }), - api.call({ abi: 'erc20:totalSupply', target: crvFRAX }), - ]) - sdk.util.sumSingleBalance(balances, USDC, usdcBal * cvxFraxBal / poolSupply, api.chain) -} - -async function addCvxFXSFRAX_BP(api, balances) { - const userAccount = '0x2AA609715488B09EFA93883759e8B089FBa11296' - const vault = '0x963f487796d54d2f27ba6f3fbe91154ca103b199' - const crvFRAX = '0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC' - const crvFRAXPool = '0xdcef968d416a41cdac0ed8702fac8128a64241a2' - const [ - cvxFraxBal, - usdcBal, - poolSupply, - ] = await Promise.all([ - api.call({ abi: 'function lockedLiquidityOf(address) view returns (uint256)', target: vault, params: userAccount }), - api.call({ abi: 'erc20:balanceOf', target: USDC, params: crvFRAXPool }), - api.call({ abi: 'erc20:totalSupply', target: crvFRAX }), - ]) - sdk.util.sumSingleBalance(balances, USDC, usdcBal * cvxFraxBal / poolSupply, api.chain) -} - - -async function addUSDCPools(api, balances) { - return sumTokens2({ - balances, api, owners: [ - '0x3C2982CA260e870eee70c423818010DfeF212659', - '0x1864Ca3d47AaB98Ee78D11fc9DCC5E7bADdA1c0d', - '0x2fE065e6FFEf9ac95ab39E5042744d695F560729', - ], tokens: [USDC] - }) -} - -async function addInvestorAMO(api, balances) { - return sumTokens2({ - balances, - api, owner: INVESTOR_AMO, - tokens: Object.values({ - Synapse: '0x0f2d719407fdbeff09d87557abb7232601fd9f29', - 'Wrapped BTC': ADDRESSES.ethereum.WBTC, - 'USD Coin': ADDRESSES.ethereum.USDC, - 'PAX': '0x8e870d67f660d95d5be530380d0ec0bd388289e1', - ZigZag: '0xc91a71a1ffa3d8b22ba615ba1b9c01b2bbbf55ad', - 'Governance OHM': '0x0ab87046fbb341d058f17cbc4c1133f25a20a52f', - 'Aave interest bearing USDC': '0xbcca60bb61934080951369a648fb03df4f96263c', - Perpetual: '0xbc396689893d065f41bc2c6ecbee5e0085233447', - Hop: '0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc', - 'Ethereum Name Service': '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', - 'Curve.fi DAI/USDC/USDT': '0x6c3f90f043a72fa612cbac8115ee7e52bde6e490', - 'Saddle DAO': '0xf1dc500fde233a4055e25e5bbf516372bc4f6871', - Ether: nullAddress, - TrueUSD: ADDRESSES.ethereum.TUSD, - 'Gelato Network Token': '0x15b7c0c907e4c6b9adaaaabc300c08991d6cea05', - 'Staked Aave': '0x4da27a545c0c5b758a6ba100e3a049001de870f5', - 'Convex Token': ADDRESSES.ethereum.CVX, - 'Curve DAO Token': ADDRESSES.ethereum.CRV, - 'Bend Token': '0x0d02755a5700414b26ff040e1de35d337df56218', - 'Binance USD': ADDRESSES.ethereum.BUSD, - 'Alchemix USD': '0xbc6da0fe9ad5f3b0d58160288917aa56653660e9', - 'Staked CvxCrv': '0xaa0c3f5f7dfd688c6e646f66cd2a6b66acdbe434', - }), - }) -} - -const ethereumTvl = async (api) => { - let balances = {}; - - await Promise.all([ - addFrax3CRV(api, balances), - addyFrax3CRV(api, balances), - addUSDCPools(api, balances), - addInvestorAMO(api, balances), - addCvxFXSFRAX_BP(api, balances), - ]) - return balances -}; - -module.exports = { - doublecounted: true, - ethereum: { - staking: staking(veFXS_StakingContract, FXS), - pool2: staking(POOL_STAKING_CONTRACTS, LP_ADDRESSES), - tvl: ethereumTvl, - }, - hallmarks: [ - [1651881600, "UST depeg"], - ], - methodology: - "Counts liquidty as the Collateral USDC on all AMOs, USDC POOLs, FRAX3CRV and FEI3CRVs through their Contracts", -}; \ No newline at end of file diff --git a/projects/fraxlend/index.js b/projects/fraxlend/index.js deleted file mode 100644 index 33e5fa9be63..00000000000 --- a/projects/fraxlend/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { fraxlendExports } = require('../helper/fraxlend'); - -const registry_config = { - fraxtal: { blacklistedTokens: [ADDRESSES.fraxtal.FRAX], registry: '0x8c22EBc8f9B96cEac97EA21c53F3B27ef2F45e57', }, - ethereum: { blacklistedTokens: [ADDRESSES.ethereum.FRAX], registry: '0xD6E9D27C75Afd88ad24Cd5EdccdC76fd2fc3A751', }, - arbitrum: { blacklistedTokens: [ADDRESSES.arbitrum.FRAX], registry: '0x0bD2fFBcB0A17De2d5a543ec2D47C772eeaD316d' }, -} - -module.exports = fraxlendExports(registry_config) \ No newline at end of file diff --git a/projects/fraxtal/index.js b/projects/fraxtal/index.js deleted file mode 100644 index a4b210071c5..00000000000 --- a/projects/fraxtal/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x34C0bD5877A5Ee7099D0f5688D65F4bB9158BDE2", - "0x36cb65c1967A0Fb0EEE11569C51C2f2aA1Ca6f6D", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/free-protocol/index.js b/projects/free-protocol/index.js deleted file mode 100644 index 599f8d53a0b..00000000000 --- a/projects/free-protocol/index.js +++ /dev/null @@ -1,103 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - merlin: { - tvl: sumTokensExport({ - owners: [ - '0xA6E02b4445dB933FCD125a449448326d6505B189', - '0x79af88101aB5589aB0f92a2bbAbe2bAe1c602806', - '0xD5f051fF82D90D086B57842e6Aae8f2FAa80Cb1c', - '0xE12382e046DB998DE89aF19Ca799CbB757106781', - ], - tokens: [ - ADDRESSES.merlin.WBTC_1, - '0xC5BD913eE3BEFD4721C609177F29a8770ACD7242', - '0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71', - ], - }), - }, - ethereum: { - tvl: sumTokensExport({ - owners: [ - '0x1B5668Ca8edfC8AF5DcB9De014b4B08ed5d0615F', - '0x3111653DB0e7094b111b8e435Df9193b62C2C576', - '0xd6572c7cd671ecf75d920adcd200b00343959600', - '0xa97Fe3E9c1d3Be7289030684eD32A6710d2d02bA', - '0xeea3A032f381AB1E415e82Fe08ebeb20F513c42c', - ], - tokens: [ - ADDRESSES.ethereum.USDC, - '0x7122985656e38bdc0302db86685bb972b145bd3c', - ADDRESSES.ethereum.USDT, - '0x7122985656e38BDC0302Db86685bb972b145bD3C', - ] - }) - }, - arbitrum: { - tvl: sumTokensExport({ - owners: [ - '0xC178AE294bC3623e6dfDF07C9ca79c6dB692f032', - '0xBA43F3C8733b0515B5C23DFF46F47Af6EB46F85C', - ], - tokens: [ - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC_CIRCLE, - ] - }) - }, - manta: { - tvl: sumTokensExport({ - owners: [ - '0x19727db22Cba70B1feE40337Aba69D83c6741caF', - ], - tokens: [ - ADDRESSES.berachain.STONE, - ] - }) - }, - bsc: { - tvl: sumTokensExport({ - owners: [ - '0x40a25786937eCc0643e78ca40Df02Db4dff27bb0', - '0xF8aeD4da2598d3dF878488F40D982d6EcC8B13Ad', - '0xBA43F3C8733b0515B5C23DFF46F47Af6EB46F85C', - '0x0A80028d73Faaee6e57484E3335BeFda0de7f455', - ], - tokens: [ - ADDRESSES.ethereum.FDUSD, - ADDRESSES.bsc.BTCB, - ADDRESSES.ethereum.FDUSD, - '0x4aae823a6a0b376De6A78e74eCC5b079d38cBCf7', - ] - }) - }, - polygon: { - tvl: sumTokensExport({ - owners: [ - '0x7Ab202c0161357Ca4C8FD2E09AdFcD45F3aAfb41', - ], - tokens: [ - '0x4f64a90409b8361cde7c3103e87e9c8511501c5a', - '0x57912d26a5285bc5d614bbf4e9be0e42406ede54', - ] - }) - }, - kroma: { - tvl: () => ({}) - }, - hemi: { - tvl: sumTokensExport({ - owners: [ - '0x25aB3Efd52e6470681CE037cD546Dc60726948D3', - ], - tokens: [ - '0xF469fBD2abcd6B9de8E169d128226C0Fc90a012e', - '0x9BFA177621119e64CecbEabE184ab9993E2ef727', - '0xF9775085d726E782E83585033B58606f7731AB18', - '0x93919784C523f39CACaa98Ee0a9d96c3F32b593e', - '0x78E26E8b953C7c78A58d69d8B9A91745C2BbB258', - ] - }) - } -}; \ No newline at end of file diff --git a/projects/freebie/index.js b/projects/freebie/index.js deleted file mode 100644 index 36b9e1909fc..00000000000 --- a/projects/freebie/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getTokenPrices } = require('../helper/unknownTokens') -const sdk = require("@defillama/sdk"); -const { staking } = require('../helper/staking') - -const token = '0x9bedce29f79076b21dd04958a9fd4b22f63fd86d' - -async function frbVault(api) { - const balances = { - ['avax:'+token]: await api.call({ abi: 'uint256:balanceVault', target: token, }) - } - const { updateBalances } = await getTokenPrices({ ...api, useDefaultCoreAssets: true, lps: ['0xa862ff4a1d2393818dbdbfbeb33bf5e35e9156f0'], allLps: true, }) - updateBalances(balances) - return balances -} - -const stakedFRB = staking("0xcc2F243FA7bBcab3BD951E8aE40730173af88b83", "0x9BedCE29F79076b21DD04958a9Fd4B22F63fD86D") - -module.exports = { - misrepresentedTokens: true, - avax: { - tvl: () => 0, - staking: sdk.util.sumChainTvls([frbVault,stakedFRB]) - } -}; diff --git a/projects/freeliquid/index.js b/projects/freeliquid/index.js deleted file mode 100644 index cf59fe8b3e7..00000000000 --- a/projects/freeliquid/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { staking } = require("../helper/staking"); - -const stakingContracts = [ - "0x5E4935fe0f1f622bfc9521c0e098898e7b8b573c", - "0x975Aa6606f1e5179814BAEf22811441C5060e815" -]; -const FL = "0xffed56a180f23fd32bc6a1d8d3c09c283ab594a8"; - -const lpStakingContract_USDFL = "0x001F7C987996DBD4f1Dba243b0d8891D0Bf693A2"; -const lpStakingContract_FL = "0x34e2B546D1819fE428c072080829028aF36540DD"; - -const pool2Lps_USDFL = [ - //USDFL-DAI - "0xA8216F6eb1f36E1dE04D39C3BC7376D2385f3455", - //USDFL-USDN - "0x85790C03400b7F6d35895dBB7198c41ecDe4a7F7", - //USDFL-USDT - "0xeDf7a6fB0d750dd807375530096Ebf2e756eaEE0", - //USDFL-USDC - "0x481c830edC1710E06e65c32bd7c05ADd5516985b", -]; - -const pool2Lps_FL = [ - //DAI-FL - "0xc869935EFE9264874BaF7940449925318f193322", - //USDFL-FL - "0xF03756E7a2B088A8c5D042C764184E8748dFA10d", - //USDT-FL - "0x6E35996aE06c45E9De2736C44Df9c3f1aAb781af", - //USDC-FL - "0xeC314D972FC771EAe56EC5063A5282A554FD54a2" -]; - -module.exports = { - ethereum: { - staking: staking(stakingContracts, FL), - pool2: staking( [lpStakingContract_USDFL, lpStakingContract_FL], [...pool2Lps_USDFL, ...pool2Lps_FL]), - tvl: async => ({}) - }, - methodology: - "Counts liquidity on the Save through StakingReward Contracts", -}; diff --git a/projects/freeriver/index.js b/projects/freeriver/index.js deleted file mode 100644 index 566c4561fcb..00000000000 --- a/projects/freeriver/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - moonriver: { - tvl: getUniTVL({ factory: '0x52abD262B13bef4E65Ff624880E8A0595a17af48', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/freestyle/index.js b/projects/freestyle/index.js deleted file mode 100644 index 184862c600c..00000000000 --- a/projects/freestyle/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { request, } = require("graphql-request"); - -const freestyleConfig = { - base: { - token: ADDRESSES.base.USDC, - start: 1700006400, - graphUrl: "https://api.goldsky.com/api/public/project_cm2x72f7p4cnq01x5fuy95ihm/subgraphs/bmx_analytics_base/0.8.2/gn", - accountSource: '0x6D63921D8203044f6AbaD8F346d3AEa9A2719dDD' - }, - mode: { - token: ADDRESSES.mode.USDC, - start: 1700006400, - graphUrl: "https://api.goldsky.com/api/public/project_cm2x72f7p4cnq01x5fuy95ihm/subgraphs/bmx_analytics_mode/0.8.2/gn", - accountSource: '0xC0ff4B56f62f20bA45f4229CC6BAaD986FA2a904' - } -} - -async function tvl(api) { - const { token, graphUrl, start, accountSource } = freestyleConfig[api.chain] - - const query = ` - query stats($from: String!, $to: String!) { - dailyHistories( - where: { - timestamp_gte: $from - timestamp_lte: $to - accountSource: "${accountSource}" - } - ) { - timestamp - platformFee - accountSource - tradeVolume - deposit - withdraw - } - } - ` - const { dailyHistories } = await request(graphUrl, query, { - from: start.toString(), - to: api.timestamp.toString(), - }); - - let total = dailyHistories.reduce((acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), 0); - - api.add(token, total) -} - -Object.keys(freestyleConfig).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/frenpets/index.js b/projects/frenpets/index.js deleted file mode 100644 index bed2de01830..00000000000 --- a/projects/frenpets/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); -const contract = "0x0e22B5f3E11944578b37ED04F5312Dfc246f443C"; - -module.exports = { - methodology: "We counts tvl and staking from the main diamond contract", - misrepresentedTokens: false, - base: { - tvl: sumTokensExport({ owners: [contract], tokens: [coreAssets.null] }), - staking: staking(contract, "0xFF0C532FDB8Cd566Ae169C1CB157ff2Bdc83E105"), - }, -}; diff --git a/projects/frensly/index.js b/projects/frensly/index.js deleted file mode 100644 index 40fce56b5f3..00000000000 --- a/projects/frensly/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x66fA4044757Fb7812EF5b8149649d45d607624E0" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl - } -} \ No newline at end of file diff --git a/projects/frfi/index.js b/projects/frfi/index.js deleted file mode 100644 index 16ebeacb40a..00000000000 --- a/projects/frfi/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { fetchURL } = require("../helper/utils"); -const { toUSDTBalances } = require("../helper/balances"); - -const tvl = (chain) => async () => { - return {} - /* - const response = await fetchURL( - `https://backend-api-prod.frfi.io/autofarm?chainId=${chain}&$limit=100` - ); - const data = response?.data?.data; - const result = - data?.reduce((acc, item) => acc + (item?.strategyTVL ?? 0), 0) ?? 0; - return toUSDTBalances(result); */ -}; - -module.exports = { - timetravel: false, - bsc: { tvl: tvl('56') }, - polygon: { tvl: tvl('137') }, - ethereum: { tvl: tvl('1') }, - kava: { tvl: tvl('2222') }, -}; - -module.exports.deadFrom = '2023-05-09' \ No newline at end of file diff --git a/projects/friend3/index.js b/projects/friend3/index.js deleted file mode 100644 index 2d7a00eceeb..00000000000 --- a/projects/friend3/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, sumTokensExport } = require("../helper/unwrapLPs"); - -const config = { - bsc: '0x1e70972EC6c8a3FAe3aC34C9F3818eC46Eb3BD5D', - op_bnb: '0x2C5bF6f0953ffcDE678A35AB7d6CaEBC8B6b29F0', -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ tokens: [nullAddress], owner: config[chain] }) - } -}) \ No newline at end of file diff --git a/projects/friendly-market/index.js b/projects/friendly-market/index.js deleted file mode 100644 index a5ad2fcfb45..00000000000 --- a/projects/friendly-market/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { compoundV3Exports } = require('../helper/compoundV3') - -module.exports = compoundV3Exports({ - nibiru: { - markets: [ - '0x37a1efd3a3f37e01a856f836e5f680efed6a1714', // NIBI Market - '0xb63de139c110468976f105f4f35a66869f45ba00', // USDC Market - '0xfa5e2c325e482e52cf2a86c394759283feeea3bc', // ETH Market - '0xf10ed85db0a6e9d9e8dd8df4e227ab55f87a0ec6', // stNIBI Market - ], - } - -}) diff --git a/projects/friendroom/index.js b/projects/friendroom/index.js deleted file mode 100644 index 9b2dce9a616..00000000000 --- a/projects/friendroom/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x9BD0474CC4F118efe56f9f781AA8f0F03D4e7A9c" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - ethereum: { - tvl - } -} diff --git a/projects/friendtech/index.js b/projects/friendtech/index.js deleted file mode 100644 index 0b9e3f6880d..00000000000 --- a/projects/friendtech/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xcf205808ed36593aa40a44f10c7f7c2f67d4a4d4" -const clubs = "0x201e95f275f39a5890c976dc8a3e1b4af114e635" - -async function tvl(api) { - return sumTokens2({ tokens: [ - nullAddress, - "0x0bD4887f7D41B35CD75DFF9FfeE2856106f86670" - ], owners: [ - contract, - clubs - ], api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract} and FRIEND on ${clubs}`, - base: { - tvl - } -} \ No newline at end of file diff --git a/projects/friendtech33/index.js b/projects/friendtech33/index.js deleted file mode 100644 index e8ec288b5ba..00000000000 --- a/projects/friendtech33/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - base: { - tvl: () => ({}), - staking: staking('0x6F82D82e6FEcB6d0dAF08b8fFD9772d596582F4A', '0x3347453Ced85bd288D783d85cDEC9b01Ab90f9D8') - } -} \ No newline at end of file diff --git a/projects/friendzy-gg/index.js b/projects/friendzy-gg/index.js deleted file mode 100644 index 6ab013d2cb9..00000000000 --- a/projects/friendzy-gg/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { sumTokens2, } = require("../helper/solana"); - -async function tvl() { - const textEncoder = new TextEncoder(); - const [bank] = PublicKey.findProgramAddressSync( - [textEncoder.encode("bank")], - new PublicKey('FrenAezyygcqNKaCkYNzBAxTCo717wh1bgnKLqnxP8Cq') - ); - return sumTokens2({ solOwners: [bank.toBase58()] }) -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -}; diff --git a/projects/frigg-eco/index.js b/projects/frigg-eco/index.js deleted file mode 100644 index 56ff97f3df4..00000000000 --- a/projects/frigg-eco/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const sdk = require('@defillama/sdk'); -const ROUTER_ADDRESS = "0x96418df8b474e90e49183cc23fa41e4ad8b0ddbe" - -const bonds = [ - '0x90D53b872ce6421122B41a290aCdD22a5eD931bd', // agatobwe - https://www.agatobwe.eco/ -] - -async function tvl(_, block) { - const calls = bonds.map(i => ({ target: i })) - - const [ - { output: data }, - { output: supply }, - { output: decimals }, - ] = await Promise.all([ - sdk.api.abi.multiCall({ - block, - abi: 'function tokenData(address) view returns (address issuer, uint256 issuancePrice, uint256 expiryPrice, address issuanceTokenAddress)', - target: ROUTER_ADDRESS, - calls: bonds.map(i => ({ params: i})) - }), - sdk.api.abi.multiCall({ calls, block, abi: 'erc20:totalSupply', }), - sdk.api.abi.multiCall({ calls, block, abi: 'erc20:decimals', }), - ]) - - const total = data.reduce((acc, { output: { issuancePrice }}, i) => { - const val = (issuancePrice / 1e8) * supply[i].output / (10**decimals[i].output) - return val + acc - }, 0) - - return { - tether: total - } -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'Gets the value of all tokens managed through frigg.eco universe', - ethereum: { - tvl - }, -} \ No newline at end of file diff --git a/projects/friktion/index.js b/projects/friktion/index.js deleted file mode 100644 index adb615a06d3..00000000000 --- a/projects/friktion/index.js +++ /dev/null @@ -1,11 +0,0 @@ - -module.exports = { - hallmarks: [ - [1674838800, "Sunset Protocol"] - ], - timetravel: false, - deadFrom: 1674838800, - methodology: - "TVL is scraped from the window.friktionSnapshot variable in app.friktion.fi and saved to the GitHub repo at Friktion-Labs/mainnet-tvl-snapshots. The data is the same as what is displayed on the app", - solana: { tvl: () => ({}) }, -}; diff --git a/projects/fringe-v2/index.js b/projects/fringe-v2/index.js deleted file mode 100644 index 374fb2e88fd..00000000000 --- a/projects/fringe-v2/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getExports } = require("../fringe/utils"); - -getExports({ - arbitrum: "0x5855F919E89c5cb5e0052Cb09addEFF62EB9339A", - optimism: "0x088F23ac0c07A3Ce008FB88c4bacFF06FECC6158", - polygon: "0x286475366f736fcEeB0480d7233ef169AE614Fe4", - ethereum: "0x70467416507B75543C18093096BA4612a9261DB8", - era: "0x8f1d37769a56340542Fb399Cb1cA49d46Aa9fec8", - base: "0x36a327E6db347fC7431509C02122A829Dc559BFE" -}, module.exports) \ No newline at end of file diff --git a/projects/fringe/index.js b/projects/fringe/index.js deleted file mode 100644 index 50af2ffba3b..00000000000 --- a/projects/fringe/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getExports } = require("./utils") - -getExports({ - ethereum: "0x46558DA82Be1ae1955DE6d6146F8D2c1FE2f9C5E", -}, module.exports) \ No newline at end of file diff --git a/projects/fringe/utils.js b/projects/fringe/utils.js deleted file mode 100644 index ffd4fd5df30..00000000000 --- a/projects/fringe/utils.js +++ /dev/null @@ -1,33 +0,0 @@ - -function getExports(config, exportsObj) { - - Object.keys(config).forEach(chain => { - const pit = config[chain] - exportsObj[chain] = { - tvl: async (api) => { - const { lendingTokens, projectTokens, bTokens } = await getConfig(api) - const ownerTokens = bTokens.map((v, i) => [[lendingTokens[i]], v]) - ownerTokens.push([lendingTokens, pit]) - ownerTokens.push([projectTokens, pit]) - return api.sumTokens({ ownerTokens }) - }, - borrowed: async (api) => { - const { lendingTokens, bTokens } = await getConfig(api) - const bals = await api.multiCall({ abi: 'uint256:totalBorrows', calls: bTokens }) - api.addTokens(lendingTokens, bals) - return api.getBalances() - }, - } - - async function getConfig(api) { - const lendingTokens = await api.fetchList({ lengthAbi: 'lendingTokensLength', itemAbi: 'lendingTokens', target: pit }) - const projectTokens = await api.fetchList({ lengthAbi: 'projectTokensLength', itemAbi: 'projectTokens', target: pit }) - const bTokens = (await api.multiCall({ target: pit, calls: lendingTokens, abi: 'function lendingTokenInfo(address) view returns (bool isListed, bool isPaused, address bLendingToken)' })).map(i => i.bLendingToken) - return { lendingTokens, projectTokens, bTokens } - } - }) -} - -module.exports = { - getExports -} \ No newline at end of file diff --git a/projects/frog-nation-farm/index.js b/projects/frog-nation-farm/index.js deleted file mode 100644 index 5e035306d05..00000000000 --- a/projects/frog-nation-farm/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const frog = "0xFA5c941BC491Ee6Dc1E933f38d01d8B5D5637205"; -const masterchef = "0x254D43bD428DA1420Ee043cD30bDA455f353c241"; - -module.exports = { - ...masterChefExports(masterchef, "fantom", frog) -} \ No newline at end of file diff --git a/projects/frogge-fi/index.js b/projects/frogge-fi/index.js deleted file mode 100644 index e4dade6ae1c..00000000000 --- a/projects/frogge-fi/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - eos_evm: { - tvl: getUniTVL({ factory: '0xe725dDEBfc425b9AfF7e4fcA094ac9f4dcA35C89', useDefaultCoreAssets: true, }) - } -} diff --git a/projects/froggy-protocol/index.js b/projects/froggy-protocol/index.js deleted file mode 100644 index 1c95aec213b..00000000000 --- a/projects/froggy-protocol/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { yieldHelper, } = require("../helper/yieldHelper") - -const masterchef = '0x6c8eE277A958751c97e8d0AFfEbbB8478bC755ce' -const froggy = '0x5217483171b2550C74234C583620C355b74b3095' - -module.exports = yieldHelper({ - project: 'froggy-ink', - chain: 'era', - masterchef: masterchef, - nativeToken: froggy, - abis: { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 , uint256 , uint256 , uint256 , uint256 , uint256 , uint256 amount, uint256 , address strat)', - poolLength: 'function poolLength() view returns (uint256)', - getReservesABI: 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)', - }, - useDefaultCoreAssets: true, -}) - -module.exports = { - era: { - tvl: () => ({}), - }, - hallmarks: [ - ['2023-06-15', 'Rug Pull ?'], - ], - deadFrom: '2023-06-15' -} \ No newline at end of file diff --git a/projects/frogswap-farm/index.js b/projects/frogswap-farm/index.js deleted file mode 100644 index db4e97932e0..00000000000 --- a/projects/frogswap-farm/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: "degen", - masterchef: "0xaB42EE05ceb48AC8f4d5782E4512D987694802b9", - nativeTokens: ["0x7D4F462895AD2A6856cb6e94055B841C3cA55987"], - useDefaultCoreAssets: true, - poolInfoABI: "function poolInfo(uint256) view returns (address)", - getToken: (i) => i, -}); \ No newline at end of file diff --git a/projects/frogswap-kekchain/index.js b/projects/frogswap-kekchain/index.js deleted file mode 100644 index bc370b6339a..00000000000 --- a/projects/frogswap-kekchain/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('kekchain', '0xfe0139503a1B97F7f6c2b72f4020df7A6c1EE399') -module.exports = { - kekchain: { tvl: () => ({}), }, - deadFrom: '2023-09-30', -} \ No newline at end of file diff --git a/projects/frogswap/index.js b/projects/frogswap/index.js deleted file mode 100644 index 00080b30b09..00000000000 --- a/projects/frogswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('degen', '0xA994635243b55468B9C421559516BdE229E0930B') \ No newline at end of file diff --git a/projects/frontrun-market/index.js b/projects/frontrun-market/index.js deleted file mode 100644 index 27cafc8c2c3..00000000000 --- a/projects/frontrun-market/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const targetAddress = '0x849F4081899305A1Fd24aAC84db5174EB60DC28e'; -const config = { - ethereum: { - tokens: [ - ADDRESSES.ethereum.SDAI, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.null, - ], - }, - blast: { - tokens: [ADDRESSES.blast.USDB, ADDRESSES.null,], - }, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: sumTokensExport({ owner: targetAddress, tokens: config[chain].tokens }), - }; -}); diff --git a/projects/frostfinance/abi.json b/projects/frostfinance/abi.json deleted file mode 100644 index 5602fe73e03..00000000000 --- a/projects/frostfinance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accTUNDRAPerShare, uint16 withdrawFeeBP)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/frostfinance/index.js b/projects/frostfinance/index.js deleted file mode 100644 index 4be5c188545..00000000000 --- a/projects/frostfinance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const masterChefTUNDRA = "0x87f1b38D0C158abe2F390E5E3482FDb97bC8D0C5"; -const TUNDRA = "0x21c5402C3B7d40C89Cc472C9dF5dD7E51BbAb1b1"; - -const masterChefEXP = "0x02941a0Ffa0Bb0E41D9d96314488d2E7652EDEa6"; -const EXP = "0xf57b80a574297892b64e9a6c997662889b04a73a"; - -const masterChefDUNE = "0xCEA209Fafc46E5C889A8ad809e7C8e444B2420C0"; -const DUNE = "0x314f3bee25e49ea4bcea9a3d1321c74c95f10eab"; - -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - -const common = { chain: 'avax', nativeTokens: [TUNDRA, EXP, DUNE] } - -module.exports = mergeExports([ - masterchefExports({ ...common, masterchef: masterChefDUNE, }), - masterchefExports({ ...common, masterchef: masterChefEXP, }), - masterchefExports({ ...common, masterchef: masterChefTUNDRA, }), -]) \ No newline at end of file diff --git a/projects/frozen-walrus/index.js b/projects/frozen-walrus/index.js deleted file mode 100644 index 7acffb6eb89..00000000000 --- a/projects/frozen-walrus/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const wlrTokenAddress = "0x395908aeb53d33A9B8ac35e148E9805D34A555D3"; -const wshareTokenAddress = "0xe6d1aFea0B76C8f51024683DD27FA446dDAF34B6"; -const masonryAddress = "0x38B0b6Ef43c4262659523986D731f9465F871439"; -const treasuryAddress = "0xDb8618e899FD9fa4B8E6DBd1E00BCA89E4DaF9cd"; -const rewardPool = '0x752FEacFdA5c3B440Fd6D40ECf338a86b568c2d2' -const chain = 'avax' -const { tombTvl } = require('../helper/tomb'); - -const ftmLPs = [ - "0x82845B52b53c80595bbF78129126bD3E6Fc2C1DF", // tombFtmLpAddress - "0x03d15E0451e54Eec95ac5AcB5B0a7ce69638c62A", //tshareFtmLpAddress -]; - -module.exports = { - ...tombTvl(wlrTokenAddress, wshareTokenAddress, rewardPool, masonryAddress, ftmLPs, chain, undefined, true, ftmLPs[1]) -}; \ No newline at end of file diff --git a/projects/fstswap/index.js b/projects/fstswap/index.js deleted file mode 100644 index 2923ab98af8..00000000000 --- a/projects/fstswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0x9A272d734c5a0d7d84E0a892e891a553e8066dce', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/ftm-frens/index.js b/projects/ftm-frens/index.js deleted file mode 100644 index ea62dc6b12d..00000000000 --- a/projects/ftm-frens/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const frens = "0x4cC23f962d872938d478803c4499079517dB2666"; -const maserchef = "0x48C2913b014B34979585281df22c6ffbcc53862b"; - -module.exports = { - ...masterChefExports(maserchef, "fantom", frens, false) -} \ No newline at end of file diff --git a/projects/fuel/index.js b/projects/fuel/index.js deleted file mode 100644 index 617fa74d2db..00000000000 --- a/projects/fuel/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xAEB0c00D0125A8a788956ade4f4F12Ead9f65DDf", - "0xa4cA04d02bfdC3A2DF56B9b6994520E69dF43F67", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/fufuture/index.js b/projects/fufuture/index.js deleted file mode 100644 index 100ab42684c..00000000000 --- a/projects/fufuture/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getLogs2, getAddress, } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -async function tvl(api) { - const { factory, fromBlock, optionsTrade } = config[api.chain] - const privateLogs = await getLogs2({ api, factory, fromBlock, extraKey: 'private-pool', topics: ['0x321e5276dc2982b3e95825088a15cf891d1f691c70b6236b506afa3810ec0297'] }) - const publicLogs = await getLogs2({ api, factory, fromBlock, extraKey: 'public-pool', topics: ['0x53aad570e9fba02f275a68e410f634e241c8301d036a94761d71bcba65941a36'] }) - const logs = privateLogs.concat(publicLogs) - const ownerTokens = [] - const allTokens = [] - logs.forEach(({ topics }) => { - const token = getAddress(topics[2]) - const pool = getAddress(topics[3]) - ownerTokens.push([[token], pool]) - allTokens.push(token) - }) - ownerTokens.push([allTokens, optionsTrade]) - return sumTokens2({ api, ownerTokens, permitFailure: true }) -} - -module.exports = { - methodology: "The world's first decentralized currency standard Perpetual options Transaction agreement", -}; - -const config = { - bsc: { factory: '0x0CB5274a8Ff86b7b750933B09aba8B5eb3660977', fromBlock: 33366630, optionsTrade: '0x1e933E0957e6236E519e64CD13f967146Fcb4755' }, - arbitrum: { factory: '0x0CB5274a8Ff86b7b750933B09aba8B5eb3660977', fromBlock: 162984841, optionsTrade: '0x1e933E0957e6236E519e64CD13f967146Fcb4755' }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/fujidao-v2/index.js b/projects/fujidao-v2/index.js deleted file mode 100644 index dd832d0c0d7..00000000000 --- a/projects/fujidao-v2/index.js +++ /dev/null @@ -1,137 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - ethereum: [ - { borrowFactory: '0x24E72207a078558BF9018dcF97D7f580E79B9221', startBlock: 17690796 }, - { yieldFactory: '0xc349fd29AeD02ec862DfC03AF16e786798d8Aa1b', startBlock: 17812787 }, - ], - xdai: [ - { borrowFactory: '0xeAcb50131a46a7b8C750c03ba336f2632fDb0344', startBlock: 28911067 }, - { yieldFactory: '0xf3AC23Fd2437394FDfD257Ac5931cA8fBc8B573C', startBlock: 29161909 }, - - ], - arbitrum: [ - { borrowFactory: '0x2855666fbc5f526269b1f5dc73dfc8e11acb67f1', startBlock: 101069692 }, - { borrowFactory: '0x2bb069a248Ba1c62062143462AE7bDB5C4360E3d', startBlock: 110400709 }, - { yieldFactory: '0x1cbf7f06c04226488B4D5b2d5EA5C8B965130500', startBlock: 115128235}, - ], - optimism: [ - { borrowFactory: '0xC377e6e13426739f14E411dD88Af8056e2DcabA4', startBlock: 105577184 }, - { borrowFactory: '0x1cbf7f06c04226488B4D5b2d5EA5C8B965130500', startBlock: 106780843 }, - { yieldFactory: '0x0D766AC0F6cE0591b073CB61A808b83f38F71340', startBlock: 107435743 }, - ], - polygon: [ - { borrowFactory: '0x157A03942e4F88c0357e4Afc1da46E9Cc12DB1D5', startBlock: 43896122 }, - { borrowFactory: '0x6Ed2428624da78cfE2daeC70BE171D1752cDEfF8', startBlock: 44986739 }, - { yieldFactory: '0x645650030cDea7e2BC91F170261Ac5cd8DF50fD3', startBlock: 45583153 }, - ], -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const factories = config[chain] - const bfactories = factories.filter( factory => factory.hasOwnProperty('borrowFactory')) - const yfactories = factories.filter( factory => factory.hasOwnProperty('yieldFactory')) - - module.exports[chain] = { - tvl: async (api) => { - let blogs = []; - for (let i = 0; i < bfactories.length; i++) { - const { borrowFactory, startBlock } = bfactories[i]; - const interlogs = await getLogs({ - api, - target: borrowFactory, - topics: ['0x89d38637357ca536d5c3f7cfcf4738f465b8b6bf51af92d02cb9fa8eb093f368'], - eventAbi: 'event DeployBorrowingVault (address indexed vault, address indexed asset, address indexed debtAsset, string name, string symbol, bytes32 salt)', - onlyArgs: true, - fromBlock: startBlock, - extraKey: 'borrow-vault' - }) - interlogs.forEach(log => { - blogs.push(log); - }) - } - - let ylogs = []; - for (let i = 0; i < yfactories.length; i++) { - const { yieldFactory, startBlock } = yfactories[i]; - const interlogs = await getLogs({ - api, - target: yieldFactory, - topics: ['0x14ae025703048a936103023525911fe390af421a739fbf9971e78f41abafb32e'], - eventAbi: 'event DeployYieldVault (address indexed vault, address indexed asset, string name, string symbol, bytes32 salt)', - onlyArgs: true, - fromBlock: startBlock, - extraKey: 'yield-vault' - }) - interlogs.forEach(log => { - ylogs.push(log); - }) - } - - const bvaults = blogs.map(log => log.vault) - const yvaults = ylogs.map(log => log.vault) - const vaults = bvaults.concat(yvaults) - - const bassets = blogs.map(log => log.asset) - const yassets = ylogs.map(log => log.asset) - const assets = bassets.concat(yassets) - - const debtAssets = blogs.map(log => log.debtAsset) - - const [bals, debtBals] = await Promise.all([ - api.multiCall({ abi: 'uint256:totalAssets', calls: vaults, permitFailure: true }), - api.multiCall({ abi: 'uint256:totalDebt', calls: bvaults, permitFailure: true, }) - ]) - - vaults.map((_, i) => { - const asset = assets[i] - const bal = bals[i] - if (!bal) return - api.add(asset, bal) - }) - - bvaults.map((_, i) => { - const debtAsset = debtAssets[i] - const debtBal = debtBals[i] - if (!debtBal) return - api.add(debtAsset, debtBal * -1) - }) - }, - borrowed: async (api) => { - let logs = []; - for (let i = 0; i < bfactories.length; i++) { - const { borrowFactory, startBlock } = bfactories[i]; - const interlogs = await getLogs({ - api, - target: borrowFactory, - topics: ['0x89d38637357ca536d5c3f7cfcf4738f465b8b6bf51af92d02cb9fa8eb093f368'], - eventAbi: 'event DeployBorrowingVault (address indexed vault, address indexed asset, address indexed debtAsset, string name, string symbol, bytes32 salt)', - onlyArgs: true, - fromBlock: startBlock, - extraKey: 'borrow-vault' - }) - interlogs.forEach(log => { - logs.push(log); - }) - } - const vaults = logs.map(log => log.vault) - const debtAssets = logs.map(log => log.debtAsset) - - const [bals, debtBals] = await Promise.all([ - api.multiCall({ abi: 'uint256:totalAssets', calls: vaults, permitFailure: true }), - api.multiCall({ abi: 'uint256:totalDebt', calls: vaults, permitFailure: true }) - ]) - - vaults.forEach((_, i) => { - const debtBal = debtBals[i] - const debtAsset = debtAssets[i] - if (!debtBal) return - api.add(debtAsset, debtBal) - }) - } - } -}) \ No newline at end of file diff --git a/projects/fujidao/abi.json b/projects/fujidao/abi.json deleted file mode 100644 index c8c85b799a5..00000000000 --- a/projects/fujidao/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalSupply": "function totalSupply(uint256 _assetID) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/fujidao/arbitrum.js b/projects/fujidao/arbitrum.js deleted file mode 100644 index c7ed72b24f9..00000000000 --- a/projects/fujidao/arbitrum.js +++ /dev/null @@ -1,18 +0,0 @@ -// The provided address should be the FujiERC1155 contract that returns -// totalSupply() for token `ids` indicated. -const arbitrumContracts = { - weth: [{ - name: "ArbitrumF1155Core_VaultsWETH", - address: "0x3E57e261F1420f11688783534dd4a462a6B63bbc", - ids: [0, 2], - }], - usdc: [{ - name: "ArbitrumF1155Core_VaultsUSDC", - address: "0x3E57e261F1420f11688783534dd4a462a6B63bbc", - ids: [4], - }], -}; - -module.exports = { - arbitrumContracts, -}; \ No newline at end of file diff --git a/projects/fujidao/ethereum.js b/projects/fujidao/ethereum.js deleted file mode 100644 index 60c29090b7e..00000000000 --- a/projects/fujidao/ethereum.js +++ /dev/null @@ -1,20 +0,0 @@ -// The provided address should be the FujiERC1155 contract that returns -// totalSupply() for token `ids` indicated. -const ethereumContracts = { - weth: [ - { - name: "MainnetF1155Core_VaultsETH", - address: "0x1Cf24e4eC41DA581bEe223E1affEBB62a5A95484", - ids: [0, 2, 4], - }, - { - name: "MainnetF1155Fuse_VaultsETH", - address: "0xa2d62f8b02225fbFA1cf8bF206C8106bDF4c692b", - ids: [0, 2], - }, - ], -}; - -module.exports = { - ethereumContracts, -}; diff --git a/projects/fujidao/fantom.js b/projects/fujidao/fantom.js deleted file mode 100644 index 9099df9e640..00000000000 --- a/projects/fujidao/fantom.js +++ /dev/null @@ -1,29 +0,0 @@ -// The provided address should be the FujiERC1155 contract that returns -// totalSupply() for token `ids` indicated. -const fantomContracts = { - fantom: [ - { - name: "FantomF1155Core_VaultsFTM", - address: "0xB4E2eC87f8E6E166929A900Ed433c4589d721D70", - ids: [0, 2], - }, - ], - wbtc: [ - { - name: "FantomF1155Core_VaultsWBTC", - address: "0xB4E2eC87f8E6E166929A900Ed433c4589d721D70", - ids: [4], - }, - ], - weth: [ - { - name: "FantomF1155Core_VaultsWETH", - address: "0xB4E2eC87f8E6E166929A900Ed433c4589d721D70", - ids: [6,8], - }, - ], -}; - -module.exports = { - fantomContracts, -}; diff --git a/projects/fujidao/index.js b/projects/fujidao/index.js deleted file mode 100644 index 8f865dc3838..00000000000 --- a/projects/fujidao/index.js +++ /dev/null @@ -1,118 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {sumTokens} = require('../helper/unwrapLPs'); -const abi = require('./abi.json'); -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js'); -const {ethereumContracts} = require('./ethereum'); -const {fantomContracts} = require('./fantom'); -const {polygonContracts} = require('./polygon'); -const {arbitrumContracts} = require('./arbitrum'); -const {optimismContracts} = require('./optimism'); - -// const weth = ADDRESSES.ethereum.WETH; -// const wbtc = ADDRESSES.ethereum.WBTC; -// const ftm = ADDRESSES.ethereum.FTM; -// const matic = ADDRESSES.ethereum.MATIC; -// const usdc= ADDRESSES.ethereum.USDC; - -const marketsupply = async (contract, block, chain) => { - return await sdk.api.abi.multiCall( - { - abi: abi.totalSupply, - calls: (contract.ids).map( id => ({ - target:(contract.address), - params: [id] - })), - block, - chain - } - ); -} - -const allMarketSupplies = async (contracts, block, chain) => { - let allMarkets; - for (let index = 0; index < contracts.length; index++) { - if (!allMarkets) { - allMarkets = await marketsupply(contracts[index], block, chain); - } else { - let temp = allMarkets.output; - let response = await marketsupply(contracts[index], block, chain); - response = response.output; - allMarkets.output = temp.concat(response); - } - } - return allMarkets.output.reduce((t,v) => t.plus(v.output), BigNumber(0)).toFixed(0); -} - -async function eth(_timestamp, block){ - const supplies = await allMarketSupplies(ethereumContracts.weth, block, "ethereum"); - - return { - [`ethereum:${ADDRESSES.ethereum.WETH}`]: supplies - } -} - -async function fantom(_timestamp, ethBlock, chainBlocks){ - const ftmSupplies = await allMarketSupplies(fantomContracts.fantom, chainBlocks.fantom, "fantom"); - const wbtcSupplies = await allMarketSupplies(fantomContracts.wbtc, chainBlocks.fantom, "fantom"); - const wethSupplies = await allMarketSupplies(fantomContracts.weth, chainBlocks.fantom, "fantom"); - - return { - [`fantom:${ADDRESSES.fantom.WFTM}`]: ftmSupplies, - [`fantom:${ADDRESSES.fantom.WBTC}`]: wbtcSupplies, - [`fantom:${ADDRESSES.fantom.WETH}`]: wethSupplies, - } -} - -async function polygon(_timestamp, ethBlock, chainBlocks){ - const maticSupplies = await allMarketSupplies(polygonContracts.matic, chainBlocks.polygon, "polygon"); - const wbtcSupplies = await allMarketSupplies(polygonContracts.wbtc, chainBlocks.polygon, "polygon"); - const wethSupplies = await allMarketSupplies(polygonContracts.weth, chainBlocks.polygon, "polygon"); - const usdcSupplies = await allMarketSupplies(polygonContracts.usdc, chainBlocks.polygon, "polygon"); - console.log(maticSupplies, wbtcSupplies, wethSupplies, usdcSupplies) - return { - [`polygon:${ADDRESSES.polygon.WMATIC_2}`]: maticSupplies, - [`polygon:${ADDRESSES.polygon.WBTC}`]: wbtcSupplies, - [`polygon:${ADDRESSES.polygon.WETH_1}`]: wethSupplies, - [`polygon:${ADDRESSES.polygon.USDC_CIRCLE}`]: usdcSupplies, - } -} - -async function arbitrum(_timestamp, ethBlock, chainBlocks){ - const wethSupplies = await allMarketSupplies(arbitrumContracts.weth, chainBlocks.arbirtum, "arbitrum"); - const usdcSupplies = await allMarketSupplies(arbitrumContracts.usdc, chainBlocks.arbirtum, "arbitrum"); - - return { - [`arbitrum:${ADDRESSES.arbitrum.WETH}`]: wethSupplies, - [`arbitrum:${ADDRESSES.arbitrum.USDC_CIRCLE}`]: usdcSupplies, - } -} - -async function optimism(_timestamp, ethBlock, chainBlocks){ - const wethSupplies = await allMarketSupplies(optimismContracts.weth, chainBlocks.optimism, "optimism"); - const usdcSupplies = await allMarketSupplies(optimismContracts.usdc, chainBlocks.optimism, "optimism"); - return { - [`optimism:${ADDRESSES.optimism.WETH}`]: wethSupplies, - [`optimism:${ADDRESSES.optimism.USDC_CIRCLE}`]: usdcSupplies, - } -} - -module.exports = { - timetravel: false, - methodology: "Counts on-chain balance of receipt tokens in F1155 contracts for all vaults.", - ethereum:{ - tvl:eth - }, - fantom:{ - tvl: fantom - }, - polygon: { - tvl: polygon - }, - arbitrum: { - tvl: arbitrum - }, - optimism: { - tvl: optimism - }, -} \ No newline at end of file diff --git a/projects/fujidao/optimism.js b/projects/fujidao/optimism.js deleted file mode 100644 index 67c85c8ec27..00000000000 --- a/projects/fujidao/optimism.js +++ /dev/null @@ -1,18 +0,0 @@ -// The provided address should be the FujiERC1155 contract that returns -// totalSupply() for token `ids` indicated. -const optimismContracts = { - weth: [{ - name: "optimismF1155Core_VaultsWETH", - address: "0x3E57e261F1420f11688783534dd4a462a6B63bbc", - ids: [0], - }], - usdc: [{ - name: "optimismF1155Core_VaultsUSDC", - address: "0x3E57e261F1420f11688783534dd4a462a6B63bbc", - ids: [2], - }], -}; - -module.exports = { - optimismContracts, -}; \ No newline at end of file diff --git a/projects/fujidao/polygon.js b/projects/fujidao/polygon.js deleted file mode 100644 index f24ab5544e3..00000000000 --- a/projects/fujidao/polygon.js +++ /dev/null @@ -1,28 +0,0 @@ -// The provided address should be the FujiERC1155 contract that returns -// totalSupply() for token `ids` indicated. -const polygonContracts = { - matic: [{ - name: "PolygonF1155Core_VaultsMATIC", - address: "0x03BD587Fe413D59A20F32Fc75f31bDE1dD1CD6c9", - ids: [0, 2], - }], - wbtc: [{ - name: "PolygonF1155Core_VaultsWBTC", - address: "0x03BD587Fe413D59A20F32Fc75f31bDE1dD1CD6c9", - ids: [4, 6], - }], - weth: [{ - name: "PolygonF1155Core_VaultsWETH", - address: "0x03BD587Fe413D59A20F32Fc75f31bDE1dD1CD6c9", - ids: [8, 10], - }], - usdc: [{ - name: "PolygonF1155Core_VaultsUSDC", - address: "0x03BD587Fe413D59A20F32Fc75f31bDE1dD1CD6c9", - ids: [16, 18], - }], -}; - -module.exports = { - polygonContracts, -}; diff --git a/projects/fulcrom/index.js b/projects/fulcrom/index.js deleted file mode 100644 index 9f53c9cc65e..00000000000 --- a/projects/fulcrom/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const CRO_VAULT_ADDR = '0x8C7Ef34aa54210c76D6d5E475f43e0c11f876098'; -const ZKSYNC_VAULT_ADDR = '0x7d5b0215EF203D0660BC37d5D09d964fd6b55a1E'; -const CRO_ZKEVM_VAULT_ADDR = '0xdDDf221d5293619572616574Ff46a2760f162075'; - -function fulExports({ vault, }) { - return async (api) => { - const tokenAddresses = await api.fetchList({ - target: vault, - lengthAbi: abis.whitelistedTokenCount, - itemAbi: abis.whitelistedTokens, - }) - - return sumTokens2({ api, owner: vault, tokens: tokenAddresses, }) - } -} - -const abis = { - whitelistedTokenCount: 'uint256:whitelistedTokenCount', - whitelistedTokens: 'function whitelistedTokens(uint256) view returns (address)' -} - -module.exports = { - cronos: { - tvl: fulExports({ vault: CRO_VAULT_ADDR, }), - }, - era: { - tvl: fulExports({ vault: ZKSYNC_VAULT_ADDR, }), - }, - cronos_zkevm: { - tvl: fulExports({ vault: CRO_ZKEVM_VAULT_ADDR, }), - }, -} diff --git a/projects/funbear/index.js b/projects/funbear/index.js deleted file mode 100644 index 067aaed0a48..00000000000 --- a/projects/funbear/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const FUNB = 'ethereum:0xd86c0b9b686f78a7a5c3780f03e700dbbad40e01'; -const stakeContractAddresses = { - unlockedStake: '0x1C4f227A2c7F62f88a7907cBF027403603A81A64', - yearlyStake: '0xb991FAeF710f2ae699c425a92482Fc5D3Ae0cCD7', -} - -async function staking(api) { - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: Object.values(stakeContractAddresses) }) - supplies.forEach(i => api.add(FUNB, i, { skipChain: true })) - return api.getBalances() -} - -module.exports = { - methodology: 'TVL counts staked FUNB coins on the platform itself.', - kava: { - tvl: () => 0, - staking, - } -}; diff --git a/projects/funbeast/index.js b/projects/funbeast/index.js deleted file mode 100644 index 67b32643cda..00000000000 --- a/projects/funbeast/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Astar Exchange Tvl Calculation", - astar: { - tvl: getUniTVL({ factory: '0xb99978440F310658C5E69D5042724327EF6D3CE7', useDefaultCoreAssets: true }), - } -}; diff --git a/projects/fundex/index.js b/projects/fundex/index.js deleted file mode 100644 index ad99f429edb..00000000000 --- a/projects/fundex/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - optimism: '0x043c26c2afae80e1c8aa7d341f6f725f4fa9183b', - arbitrum: '0x7b5B4c5e381c7Dc116BF9dA8dDd1c96a3bd6C1cb', - kava: '0xF28EFDEc09D15c6e206Ba15E7B4Ce13326d0ca90', -} - -module.exports = { - hallmarks: [ - [1680134400, "Rugpull"] - ], - deadFrom: '2023-03-30' -}; - -Object.keys(config).forEach(chain => { module.exports[chain] = {tvl} }) - -async function tvl(api) { - const factory = config[api.chain] - const tokens = await api.call({ abi: 'address[]:getTokens', target: factory }) - const owners = await api.multiCall({ abi: 'function assetOf(address) view returns (address)', target: factory, calls: tokens }) - return sumTokens2({ api, tokensAndOwners: tokens.map((t, i) => ([t, owners[i]])) }) -} diff --git a/projects/fungify/index.js b/projects/fungify/index.js deleted file mode 100644 index 2c92b7a8c5c..00000000000 --- a/projects/fungify/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -const cExports = compoundExports2({ comptroller: '0xf9c70750bF615dE83fE7FF62D30C7faACD8f8Ba0', cether: '0x70C4F75ebaF99e24d775C91867b1a844da6eF6FD', }) -module.exports = { - ethereum: { - tvl: cExports.tvl, - borrowed, - }, -}; - -async function borrowed(...args) { - const res = await cExports.borrowed(...args) - const { api } = args[3] - const ethKeys = Object.keys(res).filter(key => key.startsWith('ethereum:')).map(key => key.replace('ethereum:', '')) - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: ethKeys, permitFailure: true }) - ethKeys.forEach((key, idx) => { - if (decimals[idx]) return; - res[`ethereum:${key}`] = res[`ethereum:${key}`] / 1e18 - }) - return res -} \ No newline at end of file diff --git a/projects/furucombo/index.js b/projects/furucombo/index.js deleted file mode 100644 index e411dd4ce63..00000000000 --- a/projects/furucombo/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const factory = '0xFD1353baBf86387FcB6D009C7b74c1aB2178B304' -const fromBlock = '29080112' - -const tvl = async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event FundCreated (address indexed newFund, address comptroller, address shareToken, address vault)', - onlyArgs: true, - fromBlock, - }) - - const tokens = await api.multiCall({ abi: 'address[]:getAssetList', calls: logs.map(l => l.newFund) }) - const ownerTokens = tokens.map((t, i) => [t, logs[i].vault]) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - deadFrom: '2024-12-09', - polygon : { tvl : () => ({}) } -} diff --git a/projects/furylabsfinance/index.js b/projects/furylabsfinance/index.js deleted file mode 100644 index 988a2af541a..00000000000 --- a/projects/furylabsfinance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const furyToken = "0xB1822A7ee73DD7de6Eda328A0681f8E1779CC4B6"; -const masterchef = "0x23e2DA1657C2b552185d7AF485d6f4825f68200a"; - -module.exports = { - methodology: `Counts tokens held in the masterchef contract(0x23e2DA1657C2b552185d7AF485d6f4825f68200a)`, - ...masterChefExports(masterchef, "fantom", furyToken, false) -} // node test.js projects/furylabsfinance/index.js \ No newline at end of file diff --git a/projects/fusefi-lending/index.js b/projects/fusefi-lending/index.js deleted file mode 100644 index a3e80b5e524..00000000000 --- a/projects/fusefi-lending/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - fuse: compoundExports2({ comptroller: '0x26a562B713648d7F3D1E1031DCc0860A4F3Fa340'}), - hallmarks: [ - [1648684800, "Ola Finance exploit"] - ] -} - -module.exports.fuse.borrowed = () => ({}) \ No newline at end of file diff --git a/projects/fusefi-v3/index.js b/projects/fusefi-v3/index.js deleted file mode 100644 index e1819c64ce5..00000000000 --- a/projects/fusefi-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const factory = '0xaD079548b3501C5F218c638A02aB18187F62b207' - -module.exports = uniV3Export({ - fuse: { factory, fromBlock: 27175571 } -}) diff --git a/projects/fusefi/index.js b/projects/fusefi/index.js deleted file mode 100644 index f66c14ab691..00000000000 --- a/projects/fusefi/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const swap = require("./swap"); -const { stakings } = require("../helper/staking"); - -const VOLT_TOKEN = ADDRESSES.fuse.VOLT.toLowerCase(); -const VOLT_BAR = "0x97a6e78c9208c21afaDa67e7E61d7ad27688eFd1".toLowerCase(); -const VOLT_VOTE_ESCROW = "0xB0a05314Bd77808269e2E1E3D280Bff57Ba85672".toLowerCase() - -module.exports = { - misrepresentedTokens: true, - fuse: { - tvl: swap.tvl, - staking: stakings([VOLT_BAR, VOLT_VOTE_ESCROW], VOLT_TOKEN), - } -}; diff --git a/projects/fusefi/swap.js b/projects/fusefi/swap.js deleted file mode 100644 index f86527ed8f3..00000000000 --- a/projects/fusefi/swap.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - tvl: getUniTVL({ - factory: '0x1998E4b0F1F922367d8Ec20600ea2b86df55f34E', - useDefaultCoreAssets: true, - }) -} - - diff --git a/projects/fuseon/index.js b/projects/fuseon/index.js deleted file mode 100644 index 30e63013f30..00000000000 --- a/projects/fuseon/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const {uniTvlExport} = require('../helper/unknownTokens.js') - -module.exports = uniTvlExport('plasma', '0x07A91205ee7d5a5d59B707B89Ef0c3434357e52B', { hasStablePools: true}) diff --git a/projects/fusion/index.js b/projects/fusion/index.js deleted file mode 100644 index fb58ca8aa84..00000000000 --- a/projects/fusion/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// Set Helpers - -const { stakings } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getUniTVL, sumUnknownTokens } = require("../helper/unknownTokens"); -const { mergeExports } = require("../helper/utils"); - -// Set NULL, Factories - -const nullAddress = ADDRESSES.null; -const dexFactory = "0x9550b0c83AD5a58898cD4267987Af67e7E52bF55"; // 87, 250 -const dexFactoryClassic = "0x9fAEd210e14F95a15b89C0D09D1a55519aC2F26d"; // 61 - -// Set SNT Addresses - -const sntNovaNetwork = "0x657a66332a65b535da6c5d67b8cd1d410c161a08"; // 87 ~> WSNT -const sntFantom = "0x69D17C151EF62421ec338a0c92ca1c1202A427EC"; // 250 -const sntClassic = "0x5D33f65Cc32CAB4065074E8fb1c08Df727e7F7cB"; // 61 - -// Set NUSD Addresses - -const nusdNovaNetwork = ADDRESSES.nova.NUSD; // 87 -const nusdFantom = ADDRESSES.fantom.nUSD; // 250 -const nusdClassic = "0xab1E9D7551c1B161cedf96AeaC66b95bc5cCd7d4"; // 61 - -// Set Staking Protocols - -const callStaking = "0xe9749a786c77A89fd45dAd3A6Ad1022eEa897F97"; // 87, 250 -const callStakingV2 = "0x1eEAF2AC0fA5D608CC803014DB9A943a80Eaa8eB"; // 87, 250 -const callStakingClassic = "0x3C7360A48Ceb3C985D611aA9D0de6d6d9Df96D09"; // 61 -const bondStaking = "0xaaBaB0FB0840DFfFc93dbeed364FB46b1ffD92EE"; // 87, 250 -const bondStakingClassic = "0x7d9c6eC5Cd1fC08b3a9B168dE6c988649270e1af"; // 61 -const liquidStaking = "0x2A3605d98e26Ee6f682084d8E8018f71d867dcB3"; // 87, 250 -const liquidStakingClassic = "0x5bD915b4DDfE26D9Ba8Ad795231D7B068ADdc03E"; // 61 -const incomeStaking = "0x1bF49Db5Cb35575483dB2E630510fac8d8F177b9"; // 87 -const incomeStakingClassic = "0xb6B824D46B3Bd0698E5180bDb010a2C2bf012e1d"; // 61 - -// Set Farm Addresses - -const yieldFarms = "0x00501ed66d67b1127809e54395f064e256b75b23"; // 87, 250 -const yieldFarmsClassic = "0x9599ceBf169A1F3503996CBf90deA38C515ddd54"; // 61 - -// Calculate TVL - -const dexTVL = { - - // Nova Network - // nova: { - // tvl: getUniTVL({ - // factory: dexFactory, - // useDefaultCoreAssets: true, - // }), - // }, - nova: { - tvl: () => ({}), - }, - - // Fantom Opera - fantom: { - tvl: getUniTVL({ - factory: dexFactory, - useDefaultCoreAssets: true, - }), - }, - - // Ethereum Classic - ethereumclassic: { - tvl: getUniTVL({ - factory: dexFactoryClassic, - useDefaultCoreAssets: true, - }), - }, - -}; - -// Exports - -const stakingExports = { - - // Nova Network - // nova: { - // staking: async (_, _b, { nova: block }) => - // sumTokens2({ - // owners: [callStaking, callStakingV2, bondStaking, liquidStaking, incomeStaking], - // tokens: [nullAddress, sntNovaNetwork, nusdNovaNetwork], - // lps: [yieldFarms], - // chain: "nova", - // block, - // }), - // }, - - nova: { - staking: () => ({}), - }, - - // Fantom Opera - fantom: { - staking: async (_, _b, { fantom: block }) => - sumTokens2({ - owners: [callStaking, callStakingV2, bondStaking, liquidStaking, incomeStaking], - tokens: [nullAddress, sntFantom, nusdFantom], - lps: [yieldFarms], - chain: "fantom", - block, - }), - }, - - // Ethereum Classic - ethereumclassic: { - staking: async (_, _b, { ethereumclassic: block }) => - sumTokens2({ - owners: [callStakingClassic, bondStakingClassic, liquidStakingClassic, incomeStakingClassic], - tokens: [nullAddress, sntClassic, nusdClassic], - lps: [yieldFarmsClassic], - chain: "ethereumclassic", - block, - }), - }, - - methodology: `Fusion calculates all LPs across the different compatible chains to determine the TVL, and uses CoinGecko to determine the USD - denomination. Staking is calculated separately using all staking contracts across the different networks, and CoinGecko to determine - the USD denomination of the TVL. Visit https://fusion.novanetwork.io/ for more information or https://info.fusion.novanetwork.io/ for - in-depth analytics (available exclusively on Nova Network).`, - -}; - -module.exports = mergeExports([dexTVL, stakingExports]); diff --git a/projects/fusionx-fi/index.js b/projects/fusionx-fi/index.js deleted file mode 100644 index 5c28a365896..00000000000 --- a/projects/fusionx-fi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - mantle: { - tvl: getUniTVL({ - factory: "0xe5020961fa51ffd3662cdf307def18f9a87cce7c", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/fusionx-v3/index.js b/projects/fusionx-v3/index.js deleted file mode 100644 index ff3f1093c31..00000000000 --- a/projects/fusionx-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - mantle: { factory: '0x530d2766D1988CC1c000C8b7d00334c14B69AD71', fromBlock: 2646 }, -}) diff --git a/projects/future-swap/index.js b/projects/future-swap/index.js deleted file mode 100644 index ba2738761a2..00000000000 --- a/projects/future-swap/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") -const { sumUnknownTokens } = require("../helper/unknownTokens") - -const FindoraStableCoins = { - BNB_BUSD: ADDRESSES.findora.BUSD_b, - BNB_USDT: ADDRESSES.findora.USDT_b, - ETHEREUM_USDC: ADDRESSES.findora.USDC_e, - ETHEREUM_USDT: ADDRESSES.findora.USDT_e, -}; - -const FutureSwapContracts = { - USDF: "0x7cdA16774fA183212889d7221fffF29f8b7e664b", - Farm: "0x2EC17007a70d2e37DBCEB4EEa05c2e5a5e6B73cA", -}; - -const abiPools = `function getPools() view returns (tuple(address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accRewardPerShare)[])`; - -async function farmStakings(api) { - const pools = await api.call({ target: FutureSwapContracts.Farm, abi: abiPools, }) - - return sumUnknownTokens({ api, tokens: pools.map(i => i.lpToken), owner: FutureSwapContracts.Farm, blacklistedTokens: [FutureSwapContracts.USDF], resolveLP: true, useDefaultCoreAssets: true, }) -} - -module.exports = { - findora: { - start: '2023-02-22', // 2023-02-22 01:26:52 UTC - methodology: `Sum of liqudities backed USDF; and tokens values staked in the FutureSwap Farm.`, - tvl: sumTokensExport({ - owner: FutureSwapContracts.USDF, - tokens: Object.values(FindoraStableCoins), - }), - staking: farmStakings, - }, -}; diff --git a/projects/futureswap/index.js b/projects/futureswap/index.js deleted file mode 100644 index f1c17278489..00000000000 --- a/projects/futureswap/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(timestamp, block) { - - const contracts = [ - "0x91a154F9AD33da7e889C4b6fE4A9F9C3Fc6B6081", - // "0x8fA7490cedB7207281a5ceabee12773046dE664E", - "0xd1Ed35A3Ee043683A1833509dE8f2C1A0d8777B7", - ]; - - const tokens = [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDC, - ]; - return sumTokens2({ block, tokens, owners: contracts }) -} - -async function arbitrum(timestamp, _, { arbitrum: block }) { - - const contracts = [ - "0xf7ca7384cc6619866749955065f17bedd3ed80bc", - "0x85DDE4A11cF366Fb56e05cafE2579E7119D5bC2f", - ]; - - const tokens = [ - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.WBTC, - ]; - return sumTokens2({ block, tokens, owners: contracts, chain: 'arbitrum' }) -} - -async function avax(timestamp, _, { avax: block }) { - - const contracts = [ - "0x9F6054971d530eb0AE2B52a788dA94E5Da2f4546", - "0x08Ef39B0D87D91D1F3e3b3E6793a4bA13a764420", - ]; - - const tokens = [ - ADDRESSES.avax.JOE, - ADDRESSES.avax.USDC, - ADDRESSES.avax.WAVAX, - ]; - return sumTokens2({ block, tokens, owners: contracts, chain: 'avax',}) -} - -module.exports = { - start: '2021-01-01', // unix timestamp (utc 0) specifying when the project began, or where live data begins - ethereum: { tvl }, - arbitrum: { tvl: arbitrum }, - avax: { tvl: avax }, -}; diff --git a/projects/fuzion-bonds/index.js b/projects/fuzion-bonds/index.js deleted file mode 100644 index 729af65388b..00000000000 --- a/projects/fuzion-bonds/index.js +++ /dev/null @@ -1,31 +0,0 @@ - -const { queryContract, sumTokens } = require('../helper/chain/cosmos') - -async function tvl() { - const data = { fuzion_chain_config: { chain_name: "kujira", network_type: "Mainnet" } } - const fuzionConfig = await queryContract({ contract: "kujira13rj43lsucnel7z8hakvskr7dkfj27hd9aa06pcw4nh7t66fgt7qsc4qm6v", chain: 'kujira', data: data }) - const bondsContract = fuzionConfig.chain_config.chain_contracts.find(({ contract_name }) => contract_name === "BONDS_FUNGIBLE_TOKEN").contract_address - const bondsFlowsContract = fuzionConfig.chain_config.chain_contracts.find(({ contract_name }) => contract_name === "BONDS_FLOWS").contract_address - const owners = [ - bondsContract, - bondsFlowsContract - ] - - return sumTokens({ owners, chain: 'kujira' }) -} - -async function staking() { - const data = { fuzion_chain_config: { chain_name: "kujira", network_type: "Mainnet" } } - const fuzionConfig = await queryContract({ contract: "kujira13rj43lsucnel7z8hakvskr7dkfj27hd9aa06pcw4nh7t66fgt7qsc4qm6v", chain: 'kujira', data: data }) - const stakeContract = fuzionConfig.chain_config.chain_contracts.find(({ contract_name }) => contract_name === "CW4_STAKE_GOVERNANCE").contract_address - const owners = [stakeContract] - - return sumTokens({ owners, chain: 'kujira' }) -} - - -module.exports = { - kujira: { - tvl, staking, - }, -} \ No newline at end of file diff --git a/projects/fuzion-ignition/index.js b/projects/fuzion-ignition/index.js deleted file mode 100644 index 808a4d86cd4..00000000000 --- a/projects/fuzion-ignition/index.js +++ /dev/null @@ -1,22 +0,0 @@ - -const { queryContract, sumTokens } = require('../helper/chain/cosmos') - - -async function tvl() { - const data = { fuzion_chain_config: { chain_name: "kujira", network_type: "Mainnet" } } - const fuzionConfig = await queryContract({ contract: "kujira13rj43lsucnel7z8hakvskr7dkfj27hd9aa06pcw4nh7t66fgt7qsc4qm6v", chain: 'kujira', data: data }) - const ignitionContract = fuzionConfig.chain_config.chain_contracts.find(({ contract_name }) => contract_name === "IGNITION_FUNGIBLE_TOKEN").contract_address - const ignitionFlowsContract = fuzionConfig.chain_config.chain_contracts.find(({ contract_name }) => contract_name === "IGNITION_FLOWS").contract_address - const owners = [ - ignitionContract, - ignitionFlowsContract - ] - - return sumTokens({ owners, chain: 'kujira' }) -} - -module.exports = { - kujira: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/fuzion-plasma/index.js b/projects/fuzion-plasma/index.js deleted file mode 100644 index ba37a274eea..00000000000 --- a/projects/fuzion-plasma/index.js +++ /dev/null @@ -1,20 +0,0 @@ - -const { queryContract, sumTokens } = require('../helper/chain/cosmos') - - -async function tvl() { - const data = { fuzion_chain_config: { chain_name: "kujira", network_type: "Mainnet" } } - const fuzionConfig = await queryContract({ contract: "kujira13rj43lsucnel7z8hakvskr7dkfj27hd9aa06pcw4nh7t66fgt7qsc4qm6v", chain: 'kujira', data: data }) - const plasmaContract = fuzionConfig.chain_config.chain_contracts.find(({ contract_name }) => contract_name === "OTC_FUNGIBLE_TOKEN").contract_address - const owners = [ - plasmaContract - ] - - return sumTokens({ owners, chain: 'kujira' }) -} - -module.exports = { - kujira: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/fuzzfinance/index.js b/projects/fuzzfinance/index.js deleted file mode 100644 index 550ea7e20cb..00000000000 --- a/projects/fuzzfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const fuzz = "0x984b969a8e82f5ce1121ceb03f96ff5bb3f71fee"; -const masterchef = "0x847b46ed6c3df75e34a0496ef148b89bf5eb41b1"; - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'harmony': '0x5245d2136dc79Df222f00695C0c29d0c4d0E98A6' -}, { staking: { harmony: [masterchef, fuzz, ] }, }) \ No newline at end of file diff --git a/projects/fvm/index.js b/projects/fvm/index.js deleted file mode 100644 index 3dfbc9e99fe..00000000000 --- a/projects/fvm/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - fantom: { - tvl: getUniTVL({ - factory: '0x472f3C3c9608fe0aE8d702f3f8A2d12c410C881A', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - } -} diff --git a/projects/fwx-dex/index.js b/projects/fwx-dex/index.js deleted file mode 100644 index 42496072ef9..00000000000 --- a/projects/fwx-dex/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - misrepresentedTokens: true, - avax: { - tvl: getUniTVL({ - factory: '0x2131Bdb0E0B451BC1C5A53F2cBC80B16D43634Fa', - useDefaultCoreAssets: true, - }) - }, - base: { - tvl: getUniTVL({ - factory: '0x3512DA8F30D9AE6528e8e0787663C14Fe263Fbea', - useDefaultCoreAssets: true, - }) - } -}; \ No newline at end of file diff --git a/projects/fwx/index.js b/projects/fwx/index.js deleted file mode 100644 index ce83a3532fe..00000000000 --- a/projects/fwx/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { getConfig } = require('../helper/cache') - -module.exports = { - avax: { - tvl, - }, - base: { - tvl, - }, - bsc: { - tvl, - } -} - -const dexes = { - avax: [ - "0x82E90fB94fd9a5C19Bf38648DD2C9639Bde67c74", // xliplessDex - ], - base: [ - "0xaf5a41Ad65752B3CFA9c7F90a516a1f7b3ccCdeD" // perp - ], - bsc: [ - "0x562a73AcfFcc13b349e3d55D105Ae1498C79702e" // perp - ] -} - -async function tvl(api) { - const { assets } = await getConfig('fwx/' + api.chain, "https://analytics.fwx.finance/api/assets?chain_id=" + api.chainId) - - let tokensAndOwners = []; - for (let i = 0; i < assets.length; i++) { - const asset = assets[i] - const tokenAddr = asset.token_address - const poolAddr = asset.pool_address - const coreAddr = asset.core_address - const dexAddrs = dexes[api.chain] - - if (poolAddr != "") { - tokensAndOwners.push( - [tokenAddr, poolAddr], - ); - } - - if (coreAddr != "") { - tokensAndOwners.push( - [tokenAddr, coreAddr], - ); - } - - for (let i = 0; i < dexAddrs.length; i++) { - const dexAddr = dexAddrs[i] - tokensAndOwners.push( - [tokenAddr, dexAddr], - ); - } - } - - return api.sumTokens({ tokensAndOwners }) -} diff --git a/projects/fx-Protocol/index.js b/projects/fx-Protocol/index.js deleted file mode 100644 index f298492261a..00000000000 --- a/projects/fx-Protocol/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const treasuries = [ - "0x0e5CAA5c889Bdf053c9A76395f62267E653AFbb0", - "0xED803540037B0ae069c93420F89Cd653B6e3Df1f", - "0xcfEEfF214b256063110d3236ea12Db49d2dF2359", - "0x781BA968d5cc0b40EB592D5c8a9a3A4000063885", - "0x38965311507D4E54973F81475a149c09376e241e", - "0x63Fe55B3fe3f74B42840788cFbe6229869590f83", - "0xdFac83173A96b06C5D6176638124d028269cfCd2" -] -const uniBTC = "0x004E9C3EF86bc1ca1f0bB5C7662861Ee93350568"; -const uniBTC_Genesis_Gauge = "0x1D20671A21112E85b03B00F94Fd760DE0Bef37Ba" -const fxUSD_stabilityPool = "0x65C9A641afCEB9C0E6034e558A319488FA0FA3be" -const FxProtocol_PoolManager = "0x250893CA4Ba5d05626C785e8da758026928FCD24" -const FxProtocol_PoolManager_AaveV3Strategy = "0xFd3A6540e21D0E285f88FBFd904883B23e08F5C8" -const FxProtocol_PoolManager_AaveV3Strategy_USDC = "0x376aa9086060740f444c4E7A5411ff235816Aa0C" -module.exports = { - doublecounted: true, - ethereum: { - tvl, - pool2: getGaugeTvl, - }, -}; - -async function getGaugeTvl(api) { - const gauges = await api.fetchList({ lengthAbi: 'n_gauges', itemAbi: 'gauges', target: '0xe60eB8098B34eD775ac44B1ddE864e098C6d7f37' }) - - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: gauges, permitFailure: true }) - const bals = await api.multiCall({ abi: 'uint256:totalSupply', calls: gauges, permitFailure: true }) - tokens.forEach((token, i) => { - if (token && bals[i]) - api.add(token, bals[i]) - }) -} - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:baseToken', calls: treasuries }) - const tokensAndOwners = [ - [uniBTC, uniBTC_Genesis_Gauge], - [ADDRESSES.ethereum.USDC, fxUSD_stabilityPool], - [ADDRESSES.ethereum.WSTETH, FxProtocol_PoolManager], - [ADDRESSES.ethereum.WBTC, FxProtocol_PoolManager], - ["0xc035a7cf15375ce2706766804551791ad035e0c2", FxProtocol_PoolManager_AaveV3Strategy], - ["0x98c23e9d8f34fefb1b7bd6a91b7ff122f4e16f5c", FxProtocol_PoolManager_AaveV3Strategy_USDC], - ] - tokens.forEach((v, i) => tokensAndOwners.push([v, treasuries[i]])) - return api.sumTokens({ tokensAndOwners }) -} \ No newline at end of file diff --git a/projects/fxdao/api.js b/projects/fxdao/api.js deleted file mode 100644 index 323a3c7372f..00000000000 --- a/projects/fxdao/api.js +++ /dev/null @@ -1,28 +0,0 @@ -const { rpc, Networks, Address, xdr, Asset, scValToNative } = require('@stellar/stellar-sdk'); - -const VAULTS_CONTRACT_ID = "CCUN4RXU5VNDHSF4S4RKV4ZJYMX2YWKOH6L4AKEKVNVDQ7HY5QIAO4UB"; -const rpcUrl = 'https://soroban-rpc.creit.tech/'; -const server = new rpc.Server(rpcUrl); - -async function tvl(api) { - const response = await server.getContractData( - Asset.native().contractId(Networks.PUBLIC), - xdr.ScVal.scvVec([ - xdr.ScVal.scvSymbol('Balance'), - new Address(VAULTS_CONTRACT_ID).toScVal(), - ]), - rpc.Durability.Persistent - ); - const balance = scValToNative(response.val.value().val()).amount; - const parsedBalance = Number(balance) / 1e7; - api.addCGToken('stellar', parsedBalance); - return api.getBalances() -} - -module.exports = { - timetravel: false, - methodology: `Takes the total amount of XLMs locked in the Vaults contract, the XLMs are the collateral of the issued assets by the protocol.`, - stellar: { - tvl, - }, -}; diff --git a/projects/fxdao/index.js b/projects/fxdao/index.js deleted file mode 100644 index d90f5cb24e0..00000000000 --- a/projects/fxdao/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - methodology: `Takes the total amount of XLMs locked in the Vaults contract, the XLMs are the collateral of the issued assets by the protocol.`, - ...getExports("fxdao", ['stellar']) -}; diff --git a/projects/fxdx/index.js b/projects/fxdx/index.js deleted file mode 100644 index df991145e8e..00000000000 --- a/projects/fxdx/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const sdk = require('@defillama/sdk') -const { gmxExports } = require("../helper/gmx") -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const vaultOp = "0x10235996C4DAbCE8430a71Cbc06571bd475A1d0C"; -const customWETHOp = "0xd158b0f013230659098e58b66b602dff8f7ff120"; - -const VaultBase = "0x1ce0EBd2b95221b924765456fdE017B076E79dbe"; -const customWETHBase ="0xd6c5469A7cc587E1E89A841FB7c102FF1370C05F"; - -const wethTvlOp = sumTokensExport({ owner: customWETHOp, tokens: [nullAddress]}) -const fxdxTVLOp = gmxExports({ vault: vaultOp, blacklistedTokens: [customWETHOp] }) - -const wethTvlBase = sumTokensExport({ owner: customWETHBase, tokens: [nullAddress]}) -const fxdxTVLBase = gmxExports({ vault: VaultBase, blacklistedTokens: [customWETHBase] }) - -module.exports = { - optimism: { - tvl: sdk.util.sumChainTvls([fxdxTVLOp, wethTvlOp]), - }, - base:{ - tvl: sdk.util.sumChainTvls([fxdxTVLBase, wethTvlBase]), - } -}; diff --git a/projects/fxswap/index.js b/projects/fxswap/index.js deleted file mode 100644 index c0b9732830e..00000000000 --- a/projects/fxswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - functionx: { - tvl: getUniTVL({ - factory: '0x9E229BE3812228454499FAf771b296bedFe8c904', useDefaultCoreAssets: true, - }) - }, -}; diff --git a/projects/fyde/index.js b/projects/fyde/index.js deleted file mode 100644 index 802dfef06c9..00000000000 --- a/projects/fyde/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const FYDE_CONTRACT = "0x87Cc45fFF5c0933bb6aF6bAe7Fc013b7eC7df2Ee"; -const RESTAKING_AGGREGATOR = "0x3f69F62e25441Cf72E362508f4d6711d53B05341"; -const DEPOSIT_ESCROW = "0x63ec950633Eb85797477166084AD0a7121910470"; -const ORACLE = "0x05198327206123E89c24ABd9A482316449bD2aEe" -const WETH = ADDRESSES.ethereum.WETH; -const YIELDMANAGER = "0xB615A7E4D1Ed426470Ac2Df14F3153fA2DcCC3ba" -const PTTOKENS = ["0x1c085195437738d73d75DC64bC5A3E098b7f93b1", "0x6ee2b5e19ecba773a352e5b21415dc419a700d1d"] - -async function tvl(api) { - const tokens = await api.fetchList({ lengthAbi: 'getAssetsListLength', itemAbi: 'assetsList', target: FYDE_CONTRACT }) - const bals = await api.multiCall({ abi: 'function totalAssetAccounting(address) view returns (uint256)', calls: tokens, target: FYDE_CONTRACT }) - - // add restaking aggregator TVL - const amountStakedETH = await api.call({ - abi: 'erc20:totalSupply', - target: RESTAKING_AGGREGATOR, - params: [], - }); - - api.add(WETH, amountStakedETH) - - // add tokens deployed to yield module. Check which token from tokens is a yield-token, map to the underlying and - // add balances to TVL - const response = await api.multiCall({ - target: ORACLE, - calls: tokens, - abi: 'function yieldTokenToToken(address) external view returns (address)', - }) - const decimals = await api.multiCall({ abi: 'uint8:decimals', calls: tokens}) - - for (let i = 0; i < tokens.length; i++) { - if (response[i] !== ADDRESSES.null) { - const balance = bals[i] / 10 ** (decimals[i] - 18) - api.add(response[i], balance) - } else - api.add(tokens[i], bals[i]) - } - - // add assets in the deposit escrow - const tokensEscrow = await api.fetchList({ lengthAbi: 'getAssetListLength', itemAbi: 'assetList', target: DEPOSIT_ESCROW }) - return api.sumTokens({ ownerTokens: [ - [tokensEscrow, DEPOSIT_ESCROW], - [PTTOKENS, YIELDMANAGER], - ],}) -} - -module.exports = { - methodology: 'Read out balances from internal accounting for each asset in Fyde, the YieldModule and the DepositEscrow. Add ETH staked in LRT Aggregator.', - ethereum: { - tvl - } -}; \ No newline at end of file diff --git a/projects/g8keep/index.js b/projects/g8keep/index.js deleted file mode 100644 index c41239e8583..00000000000 --- a/projects/g8keep/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumUnknownTokens } = require('../helper/unknownTokens') - -const config = { - base: { factory: '0x3C0B43867Cd04fEdfD6a95497e5ea7e3aFF8cCaE', fromBlock: 21977940 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event TokenDeployed (address indexed token, address indexed pair, address indexed deployer, string symbol)', fromBlock, }) - const tokens = logs.map(log => log.pair) - return sumUnknownTokens({api, owner: factory, tokens, useDefaultCoreAssets: true, lps: tokens}) - } - } -}) - -module.exports.doublecounted = true -module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/gable/index.js b/projects/gable/index.js deleted file mode 100644 index 824e2f7bf4f..00000000000 --- a/projects/gable/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { queryAddresses, transformLSUs, } = require('../helper/chain/radixdlt'); -const { getUniqueAddresses, } = require('../helper/tokenMapping'); - -module.exports = { - misrepresentedTokens: true, - radixdlt: { - tvl: async (api) => { - - const data = await queryAddresses({ - addresses: ["component_rdx1cpmh7lyg0hx6efv5q79lv6rqxdqpuh27y99nzm0jpwu2u44ne243ws"] - }); - - let owners = []; - - data.forEach((c) => { - owners.push(c.details.state.fields.find((i) => i.field_name === 'liquidity_pool_vault').value); - owners.push(c.details.state.fields.find((i) => i.field_name === 'lsu_vault').value); - }); - - owners = getUniqueAddresses(owners) - - if (!owners.length) return api.getBalances() - - let items = await queryAddresses({ addresses: owners }) - - items.forEach((item) => { - const { resource_address, balance } = item.details; - api.add(resource_address, +balance.amount); - }); - - return transformLSUs(api) - }, - }, - timetravel: false, -} \ No newline at end of file diff --git a/projects/gacha/index.js b/projects/gacha/index.js deleted file mode 100644 index 7f6fd13de83..00000000000 --- a/projects/gacha/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const config = { - abstract: { - gacha: '0x3272596F776470D2D7C3f7dfF3dc50888b7D8967', - fromBlock: 1476305, - }, -} - -const abi = { - getConfig: 'function getConfig() view returns (tuple(uint256 currentSupply, uint256 currentPoolId, address owner, address uniswapRouter, address paymentToken, address entropy, address feeWallet, uint16 feeBPS, uint16 referralBPS, uint256 referralClaimThreshold))', - getPools: 'function getPool(uint256) view returns (tuple(uint256,uint256,uint256,address token,uint256,uint16,uint16[]))', -} - -async function tvl(api) { - const { gacha } = config[api.chain] - const { currentPoolId } = await api.call({ abi: abi.getConfig, target: gacha }) - const _tokens = await api.fetchList({ lengthAbi: abi.getConfig, itemAbi: abi.getPools, target: gacha, field: 'token', itemCount: currentPoolId, startFromOne: true, }) - - const tokens = [ - ADDRESSES.abstract.WETH, // weth - ADDRESSES.abstract.USDC, // usdc - ]; - - tokens.push(..._tokens) - return api.sumTokens({ owner: gacha, tokens }) -} - -module.exports = { - methodology: 'TVL consists of total token balances held by the Gacha contract pools.', -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/gaia-dao/index.js b/projects/gaia-dao/index.js deleted file mode 100644 index 2b922a6cc5a..00000000000 --- a/projects/gaia-dao/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const gaia = "0x9f6aEDcA032b1092E08b848FC9D6F29139370837"; -const stakingAdd = "0x89884B045Ed93067b28C2554a9CB877a41a8fA73"; -const treasury = "0x15E5A559e67Cb6CAB391821635B351D43E2371b2"; -const treasuryTokens = [ - [ADDRESSES.avax.USDC_e, false], // USDC - [ADDRESSES.avax.WAVAX, false], // WAVAX - [ADDRESSES.avax.WETH_e, false], // WETH - ["0x6Ca7AAc252FeD4894132Ae6E6d96bFc739d9FC3a", true] // GAIA USDC JLP -]; - -module.exports = { - ...ohmTvl(treasury, treasuryTokens, "avax", stakingAdd, gaia) -} \ No newline at end of file diff --git a/projects/gaib/index.js b/projects/gaib/index.js deleted file mode 100644 index 762e07f5f70..00000000000 --- a/projects/gaib/index.js +++ /dev/null @@ -1,118 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const mainnetContracts = { - ethereum: [ - { - token: '0xd5255Cc08EBAf6D54ac9448822a18d8A3da29A42', // USDC - poolToken: '0xd5255Cc08EBAf6D54ac9448822a18d8A3da29A42' // AIDollarAlphaUSDC Pool - }, - { - token: '0xDc45e7027A0489FE6C2E4A0735097d8E6952A340', // USDT - poolToken: '0xDc45e7027A0489FE6C2E4A0735097d8E6952A340' // AIDollarAlphaUSDT Pool - }, - { - token: '0x66a1E37c9b0eAddca17d3662D6c05F4DECf3e110', // USR - poolToken: '0x5D976F56343e33A6a4d6e26AF7d59358d1359dd4' // AIDollarAlphaUSR Pool - }, - { - token: '0xaD55aebc9b8c03FC43cd9f62260391c13c23e7c0', // CUSDO - poolToken: '0x17D02bCA29BD9E8cF4A39B25C9C902e6bF00AA54' // AIDollarAlphaCUSDO Pool - } - ], - arbitrum: [ - { - token: ADDRESSES.arbitrum.USDC_CIRCLE, // USDC - poolToken: '0xd5255Cc08EBAf6D54ac9448822a18d8A3da29A42' // AIDollarAlphaUSDC Pool - }, - { - token: ADDRESSES.arbitrum.USDT, // USDT - poolToken: '0xDc45e7027A0489FE6C2E4A0735097d8E6952A340' // AIDollarAlphaUSDT Pool - } - ], - base: [ - { - token: ADDRESSES.base.USDC, // USDC - poolToken: '0xd5255Cc08EBAf6D54ac9448822a18d8A3da29A42' // AIDollarAlphaUSDC Pool - } - ], - sei: [ - { - token: '0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392', // USDC - poolToken: '0xd5255Cc08EBAf6D54ac9448822a18d8A3da29A42' // AIDollarAlphaUSDC Pool - }, - { - token: '0x9151434b16b9763660705744891fA906F660EcC5', // USDT - poolToken: '0xDc45e7027A0489FE6C2E4A0735097d8E6952A340' // AIDollarAlphaUSDT Pool - } - ], - sty: [ - { - token: '0xF1815bd50389c46847f0Bda824eC8da914045D14', // USDC - poolToken: '0xd5255Cc08EBAf6D54ac9448822a18d8A3da29A42' // AIDollarAlphaUSDC Pool - } - ], - bsc: [ - { - token: '0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d', // USD1 - poolToken: '0xd5255Cc08EBAf6D54ac9448822a18d8A3da29A42' // AIDollarAlphaUSD1 Pool - }, - { - token: '0x55d398326f99059ff775485246999027b3197955', // USDT - poolToken: '0xDc45e7027A0489FE6C2E4A0735097d8E6952A340' // AIDollarAlphaUSDT Pool - } - ] -}; - -const totalAssetsABI = "function totalAssets() external view returns (uint256)"; - -async function tvl(api) { - const chain = api.chain; - - const poolsForChain = mainnetContracts[chain]; - - if (!poolsForChain || poolsForChain.length === 0) { - console.warn(`No configured contract data for chain: ${chain}. Skipping TVL calculation.`); - return {}; - } - - const calls = poolsForChain.map(poolInfo => ({ - target: poolInfo.poolToken, - })); - - const totalAssetsAmounts = await api.multiCall({ - abi: totalAssetsABI, - calls: calls, - }); - - totalAssetsAmounts.forEach((amount, index) => { - const underlyingToken = poolsForChain[index].token; - api.add(underlyingToken, amount); - }); - - return api.getBalances(); -} - -module.exports = { - methodology: 'Counts the total underlying assets (e.g., USDC, USDT, USR, CUSDO, USD1) reported by GAIB protocol pool contracts using their `totalAssets()` function across supported mainnet chains.', - start: 1715490671, - timetravel: true, - misrepresentedTokens: false, - - ethereum: { - tvl, - }, - arbitrum: { - tvl, - }, - base: { - tvl, - }, - sei: { - tvl, - }, - sty: { - tvl, - }, - bsc: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/gainsNetwork.js b/projects/gainsNetwork.js deleted file mode 100644 index e8e99abbf5e..00000000000 --- a/projects/gainsNetwork.js +++ /dev/null @@ -1,86 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { pool2 } = require("./helper/pool2"); -const { staking } = require("./helper/staking"); -const { sumTokens2, nullAddress } = require("./helper/unwrapLPs"); - -const tokens = { - polygon: { - DAI: ADDRESSES.polygon.DAI, - USDC: ADDRESSES.polygon.USDC_CIRCLE, - WETH: ADDRESSES.polygon.WETH_1 - }, - arbitrum: { - DAI: ADDRESSES.arbitrum.DAI, - USDC: ADDRESSES.arbitrum.USDC_CIRCLE, - WETH: ADDRESSES.arbitrum.WETH - }, - base: { - USDC: ADDRESSES.base.USDC, - }, -}; - -async function polyTvl(api) { - const tokensAndOwners = [ - [tokens.polygon.DAI, "0x91993f2101cc758D0dEB7279d41e880F7dEFe827"], // gDAI - [tokens.polygon.USDC, "0x29019Fe2e72E8d4D2118E8D0318BeF389ffe2C81"], // gUSDC - [tokens.polygon.WETH, "0x1544E1fF1a6f6Bdbfb901622C12bb352a43464Fb"], // gETH - [tokens.polygon.DAI, "0x209A9A01980377916851af2cA075C2b170452018"], // Diamond - [tokens.polygon.WETH, "0x209A9A01980377916851af2cA075C2b170452018"], // Diamond - [tokens.polygon.USDC, "0x209A9A01980377916851af2cA075C2b170452018"], // Diamond - ]; - return sumTokens2({ api, tokensAndOwners }); -} -async function arbiTvl(api) { - const tokensAndOwners = [ - [tokens.arbitrum.DAI, "0xd85E038593d7A098614721EaE955EC2022B9B91B"], // gDAI - [tokens.arbitrum.USDC, "0xd3443ee1e91aF28e5FB858Fbd0D72A63bA8046E0"], // gUSDC - [tokens.arbitrum.WETH, "0x5977A9682D7AF81D347CFc338c61692163a2784C"], // gETH - [tokens.arbitrum.DAI, "0xFF162c694eAA571f685030649814282eA457f169"], // Diamond - [tokens.arbitrum.USDC, "0xFF162c694eAA571f685030649814282eA457f169"], // Diamond - [tokens.arbitrum.WETH, "0xFF162c694eAA571f685030649814282eA457f169"], // Diamond - ]; - return sumTokens2({ api, tokensAndOwners }); -} -async function baseTvl(api) { - const tokensAndOwners = [ - [tokens.base.USDC, "0xad20523A7dC37bAbc1CC74897E4977232b3D02e5"], // gUSDC - [tokens.base.USDC, "0x6cD5aC19a07518A8092eEFfDA4f1174C72704eeb"], // Diamond - ]; - return sumTokens2({ api, tokensAndOwners }); -} - -async function apeTvl(api) { - // `0x00000000000f7e000644657dC9417b185962645a` is gTrade's own version of wAPE - // All trading and depositing happens in native tokens and held in custom non-rebasing wAPE - return sumTokens2({ owner: '0x00000000000f7e000644657dC9417b185962645a', tokens: [nullAddress], api}); -} -// node test.js projects/gainsNetwork.js -module.exports = { - hallmarks: [ - [1672531200,"Launch on Arbitrum"], - [1705553229,"Launched gETH and gUSDC"], - [1727650801,"Launch on Base"], - [1732233600,"Launch on ApeChain"], - ], - polygon: { - tvl: polyTvl, - pool2: pool2( - "0x33025b177A35F6275b78f9c25684273fc24B4e43", - "0x6e53cb6942e518376e9e763554db1a45ddcd25c4", - "polygon", - ), - staking: staking('0xfb06a737f549eb2512eb6082a808fc7f16c0819d', '0xE5417Af564e4bFDA1c483642db72007871397896'), - }, - arbitrum: { - tvl: arbiTvl, - staking: staking(['0x6b8d3c08072a020ac065c467ce922e3a36d3f9d6', '0x7edDE7e5900633F698EaB0Dbc97DE640fC5dC015'], '0x18c11fd286c5ec11c3b683caa813b77f5163a122'), - }, - base: { - tvl: baseTvl, - staking: staking(['0x28efAa11199DAF45AA8fBf95f920e5bc090DCbF3'], '0xFB1Aaba03c31EA98A3eEC7591808AcB1947ee7Ac'), - }, - apechain: { - tvl: apeTvl, - staking: staking(['0x6dCD75474F9BDE2793cb3Da00b8959fb27BFa9d5'], '0xe31C676d8235437597581b44c1c4f8A30e90b38a'), - }, -}; diff --git a/projects/galador-io/index.js b/projects/galador-io/index.js deleted file mode 100644 index 6e98786ece2..00000000000 --- a/projects/galador-io/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - mantle: { - tvl: getUniTVL({ factory: '0x6F602b6F11F174c627813262fA713F334ca20aA6', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/galaswap-v3/index.js b/projects/galaswap-v3/index.js deleted file mode 100644 index 3cef0252ba0..00000000000 --- a/projects/galaswap-v3/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { get } = require('../helper/http') - -module.exports = { - misrepresentedTokens: true, - gala: { - tvl: async (api) => { - const data = await get('https://dex-backend-prod1.defi.gala.com/coin-gecko/tickers') - api.addUSDValue(data.map(i => +i.liquidity_in_usd).reduce((acc, i) => acc + i, 0)) - }, - }, -} diff --git a/projects/galatea/index.js b/projects/galatea/index.js deleted file mode 100644 index 96aee8d8779..00000000000 --- a/projects/galatea/index.js +++ /dev/null @@ -1,7 +0,0 @@ -/*** This Protocol seems hacked/rugged. It's a case for study and analyze ***/ - -module.exports = { - misrepresentedTokens: true, - deadFrom: 1648765747, - cronos: { tvl: () => ({ }) }, -}; diff --git a/projects/galaxygoggle/index.js b/projects/galaxygoggle/index.js deleted file mode 100644 index 1c558cf2ea6..00000000000 --- a/projects/galaxygoggle/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { staking } = require("../helper/staking"); - -const GgStaking = "0xBD79c01140CeE7040f8F5E935B72e13540a801b6" -const gg = "0xF2F7CE610a091B94d41D69f4fF1129434a82E2f0" - -const bscGG = "0xcAf23964Ca8db16D816eB314a56789F58fE0e10e"; -const bscStaking = "0x97209Cf7a6FccC388eEfF85b35D858756f31690d"; - -module.exports = { - avax:{ - tvl: () => 0, - staking: staking(GgStaking, gg) - }, - bsc: { - tvl: () => 0, - staking: staking(bscStaking, bscGG, "bsc", `avax:${gg}`) - }, - deadFrom: "2022-01-11", - methodology: - "Counts tokens on the treasury for tvl and staked GG for staking", -}; diff --git a/projects/gale/index.js b/projects/gale/index.js deleted file mode 100644 index c2bd95d4e8e..00000000000 --- a/projects/gale/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const config = { - bsc: { - windmillContract: "0x0b374F3C618FF06583E7C4a1207bcaF22343737E", - tokenContract: "0x627E86E9eC832b59018Bf91456599e752288Aa97", - liquidityContract: "0x1fC3152de89b0c6c36F0d330b7Be369d6dDB219F", - vaultContract: "0x973Abe726E3e37bbD8501B2D8909Fa59535Babdd", - busd: ADDRESSES.bsc.BUSD, - } -} - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking(config.bsc.windmillContract, config.bsc.tokenContract), - }, - methodology: - "Counts tokens on the windmill for tvl", -}; diff --git a/projects/gale/windmillABI.json b/projects/gale/windmillABI.json deleted file mode 100644 index df47a3059a3..00000000000 --- a/projects/gale/windmillABI.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalBurned": "uint256:totalBurned" -} \ No newline at end of file diff --git a/projects/galoswap/index.js b/projects/galoswap/index.js deleted file mode 100644 index 65a3e9dac41..00000000000 --- a/projects/galoswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -const sdk = require("@defillama/sdk"); - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ factory: '0x48E571C645bbeD451b7C58650E643F534fCaB693', useDefaultCoreAssets: true, hasStablePools: true }), - }, - methodology: "Counts liquidity in pools", -}; \ No newline at end of file diff --git a/projects/gambit-financial/index.js b/projects/gambit-financial/index.js deleted file mode 100644 index cc06448b27a..00000000000 --- a/projects/gambit-financial/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - bsc: { - tvl: sumTokensExport({ owner: '0xc73A8DcAc88498FD4b4B1b2AaA37b0a2614Ff67B', tokens: [ - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.ETH, - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT, - ]}) - }, -} diff --git a/projects/gambit/index.js b/projects/gambit/index.js deleted file mode 100644 index 1b97ff15b81..00000000000 --- a/projects/gambit/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const SimpleGToken = { - era: "0x0729e806f57CE71dA4464c6B2d313E517f41560b", - arbitrum: "0xAC29F414FB40BA4e29Ab8504a55cBfFD315D2430" -} -const Treasury = { - era: "0x1fb8611064a09469F808263C398623A86e7Aa883", - arbitrum: "0x15c80BbC0D05656002BD922BFbf46e185BCa5A9e" -} -const Staking = { - arbitrum: "0x05027E21F6cEfb38970f4e0c04cD6DacA15aCBcE", -} - -const CNG_ADDRESS = { - ethereum: "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", - arbitrum: '0x4e7e5023656863E26f50E2E6E59489A852C212c1', -} - -module.exports = { - methodology: `Count the USDC that has been deposited on Gambit`, - era: { - tvl: sumTokensExport({ owners: [SimpleGToken.era, Treasury.era], tokens: [ADDRESSES.era.USDC], }), - }, - arbitrum: { - tvl: sumTokensExport({ - owners: [SimpleGToken.arbitrum, Treasury.arbitrum], - tokens: [ADDRESSES.arbitrum.USDC_CIRCLE], - }), - staking: sumTokensExport({ owners: [Staking.arbitrum], tokens: [CNG_ADDRESS.arbitrum], }), - }, -}; diff --git a/projects/gamblefi/index.js b/projects/gamblefi/index.js deleted file mode 100644 index 753272d6070..00000000000 --- a/projects/gamblefi/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const betifystaking = "0x335CAC92af7015BE7802170B62Ebc4C74900484d"; -const betify = "0xD465b6B4937D768075414D413e981Af0b49349Cc"; -const treasury = "0x596a6DFf0CF36fABf75EDeB6aA2992C950Ff14bA"; -const dao = "0xEe376093ccDB3D81f226C2290868219687226845"; -const revenueShare = "0x40822C8E1389dE62980691bF0AFBd5B8D1D56cB7"; - -async function tvl(api) { - return api.sumTokens({ owners: [treasury, dao, revenueShare], tokens: [ - "0xf2001b145b43032aaf5ee2884e456ccd805f677d", - "0x76f0adfff61fd9a542a36a98b96909ec7d3a8c53", - "0xe2c5275d86D2fB860F19a2CbBED9967d39AA73e8", - ADDRESSES.cronos.WCRO_1, - "0x3e7dfdd82965515e9b6398d91b991f5d4c830ef6", - ] }) -} -module.exports = { - cronos: { - tvl, - staking: staking(betifystaking, betify), - }, - methodology: - "Counts tokens on the treasury for tvl and staked BETIFY for staking", -}; diff --git a/projects/gametheory/index.js b/projects/gametheory/index.js deleted file mode 100644 index 9683ff22d48..00000000000 --- a/projects/gametheory/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { unknownTombs } = require("../helper/unknownTokens") - -const token = "0x60787C689ddc6edfc84FCC9E7d6BD21990793f06" -const rewardPool = "0x820c3b6d408Cff08C8a31C9F1461869097ba047c" -const lps = [ - "0x168e509FE5aae456cDcAC39bEb6Fd56B6cb8912e", - "0xF69FCB51A13D4Ca8A58d5a8D964e7ae5d9Ca8594" -] - -module.exports = unknownTombs({ - lps, - token, - shares: [ - '0x56EbFC2F3873853d799C155AF9bE9Cb8506b7817', - '0xFfF54fcdFc0E4357be9577D8BC2B4579ce9D5C88', - ], - rewardPool, - masonry: [ - '0x83641aa58e362a4554e10ad1d120bf410e15ca90', - '0x670433FB874d4B7b94CF1D16E95fa241474E6787' - ], - chain: 'fantom', - useDefaultCoreAssets: true, -}) diff --git a/projects/gaming-dex/index.js b/projects/gaming-dex/index.js deleted file mode 100644 index 110ea3801f0..00000000000 --- a/projects/gaming-dex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -module.exports = { - defiverse: { - tvl: onChainTvl('0x2FA699664752B34E90A414A42D62D7A8b2702B85', 87620), - }, - oas: { - tvl: onChainTvl('0xfb6f8FEdE0Cb63674Ab964affB93D65a4a7D55eA', 4522800), - } -}; diff --git a/projects/gammaswap-deltaswap/index.js b/projects/gammaswap-deltaswap/index.js deleted file mode 100644 index c59fd0ceab4..00000000000 --- a/projects/gammaswap-deltaswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - arbitrum: { - tvl: getUniTVL({ factory: "0xcb85e1222f715a81b8edaeb73b28182fa37cffa8", }), - }, - base: { - tvl: getUniTVL({ factory: "0x9a9a171c69cc811dc6b59bb2f9990e34a22fc971", }), - }, - ethereum: { - tvl: getUniTVL({ factory: "0x5fbe219e88f6c6f214ce6f5b1fcaa0294f31ae1b", }), - }, -}; diff --git a/projects/gammaswap-v2/index.js b/projects/gammaswap-v2/index.js deleted file mode 100644 index c26d9dd1136..00000000000 --- a/projects/gammaswap-v2/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { - factories: [ - { factory: '0xfd513630f697a9c1731f196185fb9eba6eaac20b', fromBlock: 173451651 }, - ], - deltaswapFactory: '0xcb85e1222f715a81b8edaeb73b28182fa37cffa8' - }, - base: { - factories: [ - { factory: '0xfd513630f697a9c1731f196185fb9eba6eaac20b', fromBlock: 12475877 }, - ], - deltaswapFactory: '0x9a9a171c69cc811dc6b59bb2f9990e34a22fc971' - }, - ethereum: { - factories: [ - { factory: '0xfd513630f697a9c1731f196185fb9eba6eaac20b', fromBlock: 19961383 }, - ], - deltaswapFactory: '0x5fbe219e88f6c6f214ce6f5b1fcaa0294f31ae1b' - }, -} - -Object.keys(config).forEach(chain => { - const { factories, deltaswapFactory } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - for (const { factory, fromBlock } of factories) { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event PoolCreated (address indexed pool, address indexed cfmm, uint16 indexed protocolId, address implementation, address[] tokens, uint256 count)', - onlyArgs: true, - fromBlock, - }) - const _ownerTokens = logs.map(i => [[...i.tokens, i.cfmm], i.pool]) - ownerTokens.push(..._ownerTokens) - } - const blacklistedTokens = [] - if (deltaswapFactory) { - const pairs = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: deltaswapFactory}) - blacklistedTokens.push(...pairs) - } - return sumTokens2({ ownerTokens, api, resolveLP: true, blacklistedTokens, }) - } - } -}) \ No newline at end of file diff --git a/projects/gammaswap-yieldtokens/index.js b/projects/gammaswap-yieldtokens/index.js deleted file mode 100644 index d4a45fb5c29..00000000000 --- a/projects/gammaswap-yieldtokens/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { cachedGraphQuery } = require("../helper/cache") -const { sumTokens2 } = require("../helper/unwrapLPs") - -const config = { - base: 'https://api.goldsky.com/api/public/project_clut9lukx80ry01xb5ngf1zmj/subgraphs/vaults-v1-base/prod/gn' -} - -module.exports = { - methodology: - 'Sum of all liquidity provided to uni v3 pools, excluding GammaSwap vaults', -} - -const firstPageQueryNoBlock = ` - query { - vaults(first: 1000, orderBy: id, orderDirection: asc) { id } - } -` - -Object.keys(config).forEach(chain => { - const endpoint = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const res = await cachedGraphQuery('gammaswap/yt-' + chain, endpoint, firstPageQueryNoBlock) - const vaults = res.vaults.map(v => v.id) - return sumTokens2({ api, owners: vaults, resolveUniV3: true }) - } - } -}) diff --git a/projects/gammaswap/index.js b/projects/gammaswap/index.js deleted file mode 100644 index 2b3d893e3e0..00000000000 --- a/projects/gammaswap/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const config = { - arbitrum: { - factories: [ - { factory: '0xe048ccE443E787c5b6FA886236De2981D54E244f', fromBlock: 132429931 }, - ], - }, -} - -Object.keys(config).forEach(chain => { - const { factories } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - for (const { factory, fromBlock } of factories) { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event PoolCreated (address indexed pool, address indexed cfmm, uint16 indexed protocolId, address implementation, address[] tokens, uint256 count)', - onlyArgs: true, - fromBlock, - }) - const _ownerTokens = logs.map(i => [[...i.tokens, i.cfmm], i.pool]) - ownerTokens.push(..._ownerTokens) - } - return sumTokens2({ ownerTokens, api, resolveLP: true, }) - } - } -}) - -module.exports.arbitrum.staking = staking("0x9b4D784E1cCaf038AEa4BFa837262704caF78B66", "0xb08d8becab1bf76a9ce3d2d5fa946f65ec1d3e83") \ No newline at end of file diff --git a/projects/gamutexchange/index.js b/projects/gamutexchange/index.js deleted file mode 100644 index 74960ea3687..00000000000 --- a/projects/gamutexchange/index.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - kava: { - tvl, - }, -}; - -async function tvl(api) { - const pools = await api.fetchList({ lengthAbi:'allPoolsLength' , itemAbi: 'allPools', target: '0xbD4C56E952c238389AEE995E1ed504cA646D199B'}) - const poolAbi = "function getPoolTokensAndBalances() view returns (address[] tokens, uint256[] balances)" - const poolDatas = await api.multiCall({ abi: poolAbi, calls: pools }) - const tokens = poolDatas.map(pool => pool.tokens).flat() - return api.sumTokens({ owner: '0x923A7273480e73439b73b065d096c58034968504', tokens,}) -} diff --git a/projects/garbi/index.js b/projects/garbi/index.js deleted file mode 100644 index 4be6336f732..00000000000 --- a/projects/garbi/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const sdk = require('@defillama/sdk') -const { stakings } = require('../helper/staking') -const GARBI = '0x5fd71280b6385157b291b9962f22153fc9e79000' - -async function tvl(api) { - const balances = {} - - const singleFarms = [ - '0x12a7144114354f319bba86acd8d17e912dd4634d', - '0x6baeb427e39da7550bff5b638686e1e39f327554', - ] - - const farmTokens = await api.multiCall({ abi: 'address:want', calls: singleFarms }) - const farmBal = await api.multiCall({ abi: 'uint256:totalShare', calls: singleFarms }) - - farmTokens.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, farmBal[i], api.chain)) - - const pools = [ - '0xb68b1c9a7dc9a437d6ee597ae31d80005206a919', - '0x3d5ddde5b8790cc294d03433bbe9cad194c002a5', - '0x4685befdc633a4067e65d422520e99c34c09b4d2', - '0x26cf5ba5b29f23f20fa82ba684f15e1eb5bf4874', - ] - - const base = await api.multiCall({ abi: 'address:base', calls: pools }) - const bDecimals = await api.multiCall({ abi: 'erc20:decimals', calls: base }) - const tokens = await api.multiCall({ abi: 'address:token', calls: pools }) - const tDecimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) - const reserves = await api.multiCall({ abi: 'function getTotalReserve() returns (uint256, uint256)', calls: pools }) - - reserves.forEach(([baseBal, tokenBal], i) => { - if (tDecimals[i] !== bDecimals[i]) { - baseBal = baseBal / (10 ** (18 - bDecimals[i])) - tokenBal = tokenBal / (10 ** (18 - tDecimals[i])) - } - sdk.util.sumSingleBalance(balances, base[i], baseBal, api.chain) - sdk.util.sumSingleBalance(balances, tokens[i], tokenBal, api.chain) - }) - - const repoList = [ - '0x08E4983dA044AA8a8D3121913Ee0d368A3ff9aE4', - '0x9E9C654ce87C0bB58D5df7835AC69A202A1deb9b', - '0xa9D63685d81D29bF8D74c122380dF98A7C0a00a2' - ] - - - const repos = await api.multiCall({ abi: 'function getCapacityByToken() returns (uint256)', calls: repoList }) - const repoTokens = await api.multiCall({ abi: 'address:base', calls: repoList }) - const repoTokenDecimals = await api.multiCall({ abi: 'erc20:decimals', calls: repoTokens }) - - repos.forEach((repoTokenBal, i) => { - repoTokenBal = repoTokenBal / (10 ** (18 - repoTokenDecimals[i])); - sdk.util.sumSingleBalance(balances, repoTokens[i], repoTokenBal, api.chain) - }) - - return balances -} - -const stakingContracts = [ - // stakingContract1 = - "0xa8d4324b1fc6442fd47414c809f4b54bfc3babc6", - // stakingContract2 - "0x1fb501f09a99844e9c9b4598e50010986f6b17b2", - // stakingContract3 - "0xfb66e862693c0676ac44e436d11c43ecda198eca" -]; - -module.exports = { - doublecounted: true, - arbitrum: { - tvl, - staking: stakings(stakingContracts, GARBI) - } -} \ No newline at end of file diff --git a/projects/garble-money/index.js b/projects/garble-money/index.js deleted file mode 100644 index fc68b907fb7..00000000000 --- a/projects/garble-money/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require('../helper/sumTokens') - -module.exports = { - tron: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [nullAddress, 'TCdY8kA7XsZ5UUw8jEgbVRbS2MVttrY9AC'], - [ADDRESSES.tron.USDT, 'TYaaJsD44isGwQUbvHNuii8nAnTKSxPcND'], - [ADDRESSES.tron.USDD, 'TWupFtHWnURhDNrWBfB2tK3zD4uALurBgk'], - [ADDRESSES.tron.JM, 'TK76Z1mJQHN98WsuUUKeDZnNhwRsj6p5wo'], - ] - }), - }, -}; diff --git a/projects/gard/index.js b/projects/gard/index.js deleted file mode 100644 index 0e9e2598618..00000000000 --- a/projects/gard/index.js +++ /dev/null @@ -1,54 +0,0 @@ - -const { searchAccountsAll, sumTokens, tokens, getAppGlobalState, } = require('../helper/chain/algorand') - -const treasuryAddress = "MTMJ5ADRK3CFG3HGUI7FS4Y55WGCUO5CRUMVNBZ7FW5IIG6T3IU2VJHUMM" -const v2TreasuryAddress = "52O7EFC7TQPGSSM7HE6NDXMUUYM2W5OI4IOCDPTYJLPUYDO7BMNK5SCPEY" - -const gardId = 684649988 -const gardPriceValidatorId = 684650147 -const v2GardPriceValidatorId = 890603991 -const gAlgoId = 793124631 -// const sgardGardId = 890603920 - -async function treasury() { - const balances = await sumTokens({ owner: treasuryAddress, blacklistedTokens: [tokens.gard] }) - return sumTokens({ balances, owner: v2TreasuryAddress, }) -} - -async function tvl() { - let algoBal = 0 - let gAlgoBal = 0 - const validators = [gardPriceValidatorId, v2GardPriceValidatorId] - await Promise.all(validators.map(async (appId) => { - // Find accounts that are opted into the GARD price validator application - // These accounts correspond to CDP opened on the GARD protocol - const accounts = await searchAccountsAll({ appId }) - for (const account of accounts) { - algoBal += account.amount - if (account['total-assets-opted-in'] == 1) - account['assets'].filter(i => i['asset-id'] === gAlgoId).forEach(i => gAlgoBal += i.amount) - } - })) - return { 'algorand:1': algoBal, ['algorand' + gAlgoId]: gAlgoBal } -} - -async function staking() { - const stakingGARDId = 890604041 - const state = await getAppGlobalState(stakingGARDId) - let gardBal = 0 - const keys = ["NL", "NLL", "3M", "6M", "9M", "12M"] - keys.forEach(k => gardBal += state[k] || 0); - return { ['algorand:' + gardId]: gardBal } -} - -module.exports = { - hallmarks: [ - ['2022-10-06', 'Gard V2 mainnet launch'], - ], - timetravel: false, - algorand: { - tvl, - // treasury, - staking, - } -} diff --git a/projects/garden/index.js b/projects/garden/index.js deleted file mode 100644 index e686e319710..00000000000 --- a/projects/garden/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport, nullAddress } = require("../helper/sumTokens"); -const sdk = require("@defillama/sdk"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); -const { methodology } = require("../allinx.js"); - -const SEED_TOKEN_ADDRESS = "0x86f65121804D2Cdbef79F9f072D4e0c2eEbABC08"; // SEED TOKEN (Garden's Governance Token) Address -const STAKING_CONTRACT_ADDRESS = "0xe2239938Ce088148b3Ab398b2b77Eedfcd9d1AfC"; -const COBI_EVM_ADDRESSES = ["0x3fDEe07b0756651152BF11c8D170D72d7eBbEc49"]; -const COBI_STARKNET_ADDRESSES = ["0x047AEEC489b9f722A3afB8482109538CeFA547C096141b04f808214826E8Fc71"]; -const UNICHAIN_WBTC = "0x927B51f251480a681271180DA4de28D44EC4AfB8"; -const HYPEREVM_UBTC = "0x9FDBdA0A5e284c32744D2f17Ee5c74B284993463"; -const STARKNET_WBTC = "0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"; - -module.exports = { - bitcoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.garden }), - ]), - }, - ethereum: { - tvl: sumTokensExport({ - owners: COBI_EVM_ADDRESSES, - tokens: [ - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.USDC, - "0x20157dbabb84e3bbfe68c349d0d44e48ae7b5ad2", - ADDRESSES.ethereum.cbBTC, - nullAddress, - ], - }), - }, - arbitrum: { - tvl: sumTokensExport({ - owners: COBI_EVM_ADDRESSES, - tokens: [ - ADDRESSES.arbitrum.WBTC, - "0x050c24dbf1eec17babe5fc585f06116a259cc77a", - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDC_CIRCLE, - ], - }), - staking: sumTokensExport({ - owners: [STAKING_CONTRACT_ADDRESS], - tokens: [SEED_TOKEN_ADDRESS], - }), - }, - berachain: { - tvl: sumTokensExport({ - owners: COBI_EVM_ADDRESSES, - tokens: [ADDRESSES.corn.LBTC], - }), - }, - base: { - tvl: sumTokensExport({ - owners: COBI_EVM_ADDRESSES, - tokens: [ADDRESSES.base.USDC, ADDRESSES.base.cbBTC, nullAddress], - }), - }, - unichain: { - tvl: sumTokensExport({ - owners: COBI_EVM_ADDRESSES, - tokens: [ADDRESSES.unichain.USDC, UNICHAIN_WBTC] - }) - }, - hyperliquid: { - tvl: sumTokensExport({ - owners: COBI_EVM_ADDRESSES, - tokens: [HYPEREVM_UBTC] - }) - }, - starknet: { - tvl: sumTokensExport({ - owners: COBI_STARKNET_ADDRESSES, - tokens: [STARKNET_WBTC] - }) - } -}; - diff --git a/projects/gardensdao/index.js b/projects/gardensdao/index.js deleted file mode 100644 index d9261a3f905..00000000000 --- a/projects/gardensdao/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const SUBGRAPH_GARDENS_XDAI = "G4EbcSW588SUy8CdprPPxCN69VN8mxvnwt4oyR6YpGza"; -const { cachedGraphQuery } = require('../helper/cache') - -const ALL_ORGS_GQL = ` - query allOrgs($lastId: ID) { - organizations(first: 1000, where: { id_gt: $lastId, active: true }) { - id - token { - name - id - } - config { - conviction { - requestToken { - id - name - } - fundsManager - } - } - proposalCount - active - } - } -` - -async function tvl(api) { - const orgs = await cachedGraphQuery('gardensdao', SUBGRAPH_GARDENS_XDAI, ALL_ORGS_GQL, { fetchById: true}) - const toa = [] - orgs.forEach(({config: { conviction } = {}} = {}) => { - const token = conviction?.requestToken.id - const owner = conviction?.fundsManager - if (token && owner) - toa.push([token, owner]) - }) - return api.sumTokens({ tokensAndOwners: toa }) - -} - -module.exports = { - xdai: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/garuda-defi/factoryTvl.js b/projects/garuda-defi/factoryTvl.js deleted file mode 100644 index ca919bac814..00000000000 --- a/projects/garuda-defi/factoryTvl.js +++ /dev/null @@ -1,281 +0,0 @@ -const { queryContract, queryContracts, sumTokens, queryContractWithRetries } = require('../helper/chain/cosmos') -const { PromisePool } = require('@supercharge/promise-pool') -const { transformDexBalances } = require('../helper/portedTokens') - -const CONFIG = { - CONCURRENCY: 10, - MAX_ERROR_RATE: 0.15, // error rate threshold - MIN_LIQUIDITY_USD: 15, // Minimum $15 liquidity - MIN_RESERVE_THRESHOLD: 1000000, // Minimum reserve amount - MAX_RETRIES: 3, - RETRY_DELAY: 100 // 1 second -} - -async function getAllPairs(factory, chain) { - let allPairs = [] - let currentPairs; - let previousQueryStr = null; - const limit = 20; - - do { - let queryStr; - if (allPairs.length === 0) { - queryStr = `{"pairs": {"limit": ${limit}}}`; - } else { - const lastPair = allPairs[allPairs.length - 1]; - const startAfter = [lastPair.asset1, lastPair.asset2]; - queryStr = `{"pairs": {"pagination": {"limit": ${limit}, "start_after": ${JSON.stringify(startAfter)}}}}`; - } - - if (queryStr === previousQueryStr) { - break; - } - - previousQueryStr = queryStr; - try { - currentPairs = (await queryContract({ contract: factory, chain, data: queryStr })).pairs - allPairs.push(...currentPairs) - } catch (error) { - break; - } - - } while (currentPairs && currentPairs.length > 0) - - return allPairs -} - -function hasMinimumLiquidity(reserve1, reserve2) { - const r1 = Number(safeBalanceToString(reserve1)) - const r2 = Number(safeBalanceToString(reserve2)) - - return r1 >= 0 && r2 >= 0 -} - -async function getPairPoolSafe(pair, chain, retryCount = 0) { - try { - const pairRes = await queryContractWithRetries({ - contract: pair.contract, - chain, - data: { pool: {} } - }) - - if (!hasMinimumLiquidity(pairRes.reserve1, pairRes.reserve2)) { - return { - type: 'low_liquidity', - pair: pair.contract, - reserves: [pairRes.reserve1, pairRes.reserve2] - } - } - - const assetsPair = [] - let addr1 = pairRes.asset1.cw20 || pairRes.asset1.native - assetsPair.push({ addr: addr1, balance: pairRes.reserve1 }) - - let addr2 = pairRes.asset2.cw20 || pairRes.asset2.native - assetsPair.push({ addr: addr2, balance: pairRes.reserve2 }) - - return { type: 'success', data: assetsPair } - - } catch (error) { - if (retryCount < CONFIG.MAX_RETRIES) { - await new Promise(resolve => setTimeout(resolve, CONFIG.RETRY_DELAY)) - return getPairPoolSafe(pair, chain, retryCount + 1) - } - - const errorType = error.message.includes('timeout') ? 'timeout' : - error.message.includes('rate limit') ? 'rate_limit' : - error.message.includes('not found') ? 'not_found' : 'unknown' - - return { - type: 'error', - pair: pair.contract, - error: error.message, - errorType - } - } -} - -function safeBalanceToString(balance) { - if (balance === null || balance === undefined) { - return '0'; - } - - if (typeof balance === 'string' || typeof balance === 'number') { - return balance.toString(); - } - - if (typeof balance === 'bigint') { - return balance.toString(); - } - - if (typeof balance === 'object' && balance.toString && typeof balance.toString === 'function') { - return balance.toString(); - } - - if (typeof balance === 'object') { - if (balance.value !== undefined) return balance.value.toString(); - if (balance.amount !== undefined) return balance.amount.toString(); - if (balance.balance !== undefined) return balance.balance.toString(); - try { - return JSON.stringify(balance); - } catch (e) { - return '0'; - } - } - - return '0'; -} - -function getFactoryTvl(factory) { - return async () => { - const allPairs = await getAllPairs(factory, "terra") - - if (allPairs.length === 0) { - return {} - } - - - const { results, errors } = await PromisePool - .withConcurrency(CONFIG.CONCURRENCY) - .for(allPairs) - .process(async (pair) => { - return await getPairPoolSafe(pair, "terra") - }) - - const successful = results.filter(r => r.type === 'success') - const lowLiquidity = results.filter(r => r.type === 'low_liquidity') - const failed = results.filter(r => r.type === 'error') - - - const totalProcessed = allPairs.length - const totalErrors = failed.length + errors.length - const errorRate = totalErrors / totalProcessed - - if (errorRate > CONFIG.MAX_ERROR_RATE) { - const errorsByType = {} - failed.forEach(f => { - errorsByType[f.errorType] = (errorsByType[f.errorType] || 0) + 1 - }) - - const errorSummary = Object.entries(errorsByType) - .map(([type, count]) => `${type}: ${count}`) - .join(', ') - - throw new Error( - `High error rate detected: ${(errorRate * 100).toFixed(1)}% ` + - `(${totalErrors}/${totalProcessed} pairs failed) on terra. ` + - `Error breakdown: ${errorSummary}` - ) - } - - const validPairs = successful.map(r => r.data) - - const data = validPairs - .filter(assets => { - if (!assets || assets.length < 2) return false - const token0 = assets[0]?.addr - const token1 = assets[1]?.addr - const balance0 = Number(safeBalanceToString(assets[0]?.balance || 0)) - const balance1 = Number(safeBalanceToString(assets[1]?.balance || 0)) - - return token0 && token1 && token0 !== token1 && (balance0 > 0 || balance1 > 0) - }) - .map((assets) => ({ - token0: assets[0].addr, - token0Bal: safeBalanceToString(assets[0].balance), - token1: assets[1].addr, - token1Bal: safeBalanceToString(assets[1].balance), - })) - - if (data.length === 0) { - return {} - } - - const nativeTokens = new Set() - const cw20Tokens = new Set() - const ibcTokens = new Set() - - data.forEach(({ token0, token1 }) => { - [token0, token1].forEach(token => { - if (token.startsWith('terra1') && token.length > 50) { - cw20Tokens.add(token) - } else if (token.startsWith('ibc/')) { - ibcTokens.add(token) - } else if (token.startsWith('u') && token.length < 10) { - nativeTokens.add(token) - } - }) - }) - - const coreTokens = new Set([ - ...nativeTokens, - ...ibcTokens, - ]) - - if (coreTokens.size === 0) { - data.forEach(({ token0, token1 }) => { - coreTokens.add(token0) - coreTokens.add(token1) - }) - } - - const safeData = data.map(item => ({ - ...item, - token0Bal: String(item.token0Bal || '0'), - token1Bal: String(item.token1Bal || '0') - })) - try { - const result = transformDexBalances({ - data: safeData, - withMetadata: false, - chain: "terra", - coreTokens, - restrictTokenRatio: 0 - }) - - return result - - } catch (error) { - const balances = {} - - safeData.forEach(({ token0, token0Bal, token1, token1Bal }) => { - const isCoreToken0 = coreTokens.has(token0.replace('ibc/', '')) - const isCoreToken1 = coreTokens.has(token1.replace('ibc/', '')) - - const bal0 = parseFloat(token0Bal || '0') - const bal1 = parseFloat(token1Bal || '0') - - if ((isCoreToken0 && isCoreToken1) || (!isCoreToken0 && !isCoreToken1)) { - if (bal0 > 0) { - balances[token0] = (balances[token0] || 0) + bal0 - } - if (bal1 > 0) { - balances[token1] = (balances[token1] || 0) + bal1 - } - } else if (isCoreToken0) { - if (bal0 > 0) { - balances[token0] = (balances[token0] || 0) + (bal0 * 2) - } - } else { - if (bal1 > 0) { - balances[token1] = (balances[token1] || 0) + (bal1 * 2) - } - } - }) - - const finalBalances = {} - Object.entries(balances).forEach(([token, balance]) => { - if (balance > 0) { - finalBalances[`terra:${token}`] = balance.toString() - } - }) - - return finalBalances - } - } -} - -module.exports = { - getFactoryTvl, - CONFIG -} \ No newline at end of file diff --git a/projects/garuda-defi/index.js b/projects/garuda-defi/index.js deleted file mode 100644 index 0b23e5dae63..00000000000 --- a/projects/garuda-defi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getFactoryTvl } = require('./factoryTvl') - -const FACTORY_CONTRACT = 'terra1ypwj6sw25g0qcykv7mzmcvsndvx56r3yrgkaw3fds7yzwl7fwwcsnxkeh7'; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the GARUDA DEX", - terra: { tvl: getFactoryTvl(FACTORY_CONTRACT) } -} \ No newline at end of file diff --git a/projects/garuda-staking/index.js b/projects/garuda-staking/index.js deleted file mode 100644 index c82832db097..00000000000 --- a/projects/garuda-staking/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { nullAddress } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: async (api) => ({ - [nullAddress]: await api.call({ target: '0x3802c218221390025bceabbad5d8c59f40eb74b8', abi: 'uint256:totalSupply'}) - }) - } -} \ No newline at end of file diff --git a/projects/gasline/index.js b/projects/gasline/index.js deleted file mode 100644 index 4d582cae059..00000000000 --- a/projects/gasline/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const config = { - blast: { gasline: '0xD5400cAc1D76f29bBb8Daef9824317Aaf9d3C0a1', gas: '0x5d61c3f602579873Bb58d8DF53a9d82942de5267', weth: ADDRESSES.blast.WETH, }, - bsc: { gasline: '0x35138Ddfa39e00C642a483d5761C340E7b954F94', gas: '0xd0245a9fe3D8366e8c019ce9CE4cAdFF0cEabB76', weth: ADDRESSES.bsc.WBNB, }, -} - -Object.keys(config).forEach(chain => { - const {gasline, gas, weth} = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owner: gasline, tokens: [weth] }), - staking: staking(gasline, gas, chain), - borrowed: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: gasline}) - api.addGasToken(supply) - }, - } -}) diff --git a/projects/gasp-xyz/index.js b/projects/gasp-xyz/index.js deleted file mode 100644 index 68a7c6e4302..00000000000 --- a/projects/gasp-xyz/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -// taken from https://gasp-stash-prod-dot-direct-pixel-353917.oa.r.appspot.com/affirmed-network/list -const config = { - ethereum: '0x79d968d9017B96f202aD4673A2c1BBbdc905A4ca', - arbitrum: '0x3aDdEb54ddd43Eb40235eC32DfA7928F28A44bb5', - base: '0x308e483afDD225D6cb7bF4d44B8e4a03DFD9c0De', -} - -Object.keys(config).forEach(chain => { - const owner = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owner, fetchCoValentTokens: true }) - } -}) \ No newline at end of file diff --git a/projects/gaspump/index.js b/projects/gaspump/index.js deleted file mode 100644 index 364e2792333..00000000000 --- a/projects/gaspump/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { fetchURL } = require('../helper/utils'); - -async function fetchTvl(api) { - const response = await fetchURL("https://api.gas111.com/api/v1/internal/tokens/balances-list") - for (const pool of response.data) { - api.add(ADDRESSES.ton.TON, pool.bonding_curve_balance) - } -} - - -module.exports = { - methodology: ` - Each token launched via gaspump has a bonding curve. The TVL is the sum of all bonding curve balances. - It is slightly different from the address balance, which is composed from curve balance + fees accumulated. - `.trim(), - timetravel: false, - ton: { - tvl: fetchTvl - } -} diff --git a/projects/gassswap/index.js b/projects/gassswap/index.js deleted file mode 100644 index b8d22486e86..00000000000 --- a/projects/gassswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - - blast: { - tvl: getUniTVL({ - factory: "0x9637ac15c3830d9b32378593693f968cc33eecb1", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/gasturbo-io-dex/index.js b/projects/gasturbo-io-dex/index.js deleted file mode 100644 index 8181f05a117..00000000000 --- a/projects/gasturbo-io-dex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('arbitrum', '0x7e299DdF7E12663570dBfA8F3F20CB54f8fD04fA') \ No newline at end of file diff --git a/projects/gate-io/index.js b/projects/gate-io/index.js deleted file mode 100644 index 0292d65d103..00000000000 --- a/projects/gate-io/index.js +++ /dev/null @@ -1,1681 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); - -const config = { - "ethereum": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x234ee9e35f8e9749a002fc42970d570db716453b", - "0xD793281182A0e3E023116004778F45c29fc14F19", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x246a2ecd9626f9eda55fffbff5216ed417a904f5", - "0x840760aed6bbd878c46c5850d3af0a61afcd09c8", - "0x35b31ae2604dd81d9456205025ea02418dba8242", - "0xd87C8e083AECc5405B0107c90D8E0C7F70996B84", - "0x60618B3c6E3164c4a72d352Bde263A5D15f9F7eE", - "0xa4992ccf2a74132936b87cbf28b5d52304ba3be7", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1f92332145465f3e536b7be301dde8d420478387", - "0x2bea9375c50f41f828c4e8eb0da3194449b5f062", - "0x54c82d26624e85000d1387ee7c9580c3c6d7b5b7", - "0x0fc73ffb9a0ded685234428e103d26b3762df460", - "0x7750fe679d47a9e00575ad46043297a234e83fa2", - "0xa2df23519a6059dbc6f027f6cf8e59bdaecaf56f", - "0x4bbe1961bd0a6cd1fe3cd8947be15bd8ae2ee562", - "0xd793281182a0e3e023116004778f45c29fc14f19", - "0x354e0184a6a6e634ccb07388e2617e05e427563c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421", - "0xf379a3d1ab6625eef34347d054cfaeafdf8f24a7", - "0x9bbe47fe66b3580551aac3124cf9fc6560252b19", - "0xaaac1183d07c69f5befd22a06211690e953dca17" - ] - }, - "avax": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xD793281182A0e3E023116004778F45c29fc14F19", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - ] - }, - "arbitrum": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xD793281182A0e3E023116004778F45c29fc14F19", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421", - "0xf379a3d1ab6625eef34347d054cfaeafdf8f24a7" - ] - }, - "polygon": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xD793281182A0e3E023116004778F45c29fc14F19", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xa4992ccf2a74132936b87cbf28b5d52304ba3be7", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x54c82d26624e85000d1387ee7c9580c3c6d7b5b7", - "0x1f92332145465f3e536b7be301dde8d420478387", - "0x7750fe679d47a9e00575ad46043297a234e83fa2", - "0x0fc73ffb9a0ded685234428e103d26b3762df460", - "0xa2df23519a6059dbc6f027f6cf8e59bdaecaf56f", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421", - "0xf379a3d1ab6625eef34347d054cfaeafdf8f24a7" - ] - }, - "fantom": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xD793281182A0e3E023116004778F45c29fc14F19", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xa4992ccf2a74132936b87cbf28b5d52304ba3be7", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "bsc": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xD793281182A0e3E023116004778F45c29fc14F19", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xa4992ccf2a74132936b87cbf28b5d52304ba3be7", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421", - "0xf379a3d1ab6625eef34347d054cfaeafdf8f24a7" - ] - }, - "optimism": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xD793281182A0e3E023116004778F45c29fc14F19", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "era": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x234ee9e35f8e9749a002fc42970d570db716453b", - "0xD793281182A0e3E023116004778F45c29fc14F19", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x85FAa6C1F2450b9caEA300838981C2e6E120C35c", - "0xeb01f8cdae433e7b55023ff0b2da44c4c712dce2", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - bitcoin: { - owners: bitcoinAddressBook.gateIo, - }, - "tron": { - "owners": [ - "TBA6CypYJizwA9XdC7Ubgc5F1bxrQ7SqPt", - "TCYpJ6MMzd9ytoUvD82HnS58iV75QimPh6", - "TDHkXgDHEiK5WhaKTccJenZKRyUMTxoREx", - "TN1K2zNVA399AHbp51yyPPfjaD9JNLfQpo", - "TUt2HuZFZvXAMmF9uh7BqujvMXsZ4F1pif", - "TCr9697xxWMbZznvpJh8uVQzAQR9cLXZm9", - "TDyR4wBeodpigiKmnwyBQC8UfsCH1T25XF", - "THhVZfr2Q4J3spWK84Je4ALiFyrnnSq6nN", - "TZJNuEg5VaYLR9kdQfjj7WE6jh4vt9JMp2", - "TYAavN2xCDro5Gdip8UU6W9oQmM43rNxzQ", - "TLsUUQZCkcrBRxEKqZbpekdq9LWfmnndPg" - ] - }, - "cardano": { - "owners": [ - "DdzFFzCqrhseMuShaXzLDGDBa8jGEjdEjNc83jouqdqBQzk5R52MedutUq3QGdMPiauR5SjbttqdBjDA5g6rf3H6LjpvK3dFsf8yZ6qo", - "DdzFFzCqrhtBatWqyFge4w6M6VLgNUwRHiXTAg3xfQCUdTcjJxSrPHVZJBsQprUEc5pRhgMWQaGciTssoZVwrSKmG1fneZ1AeCtLgs5Y", - "addr1qyzppj9mh28q9d7x070j7aphnn6dx5lsh203zukzs7q68jqf08fcmxg8h9tvx8m529hjjnm9g3pt8vlkh95em7nup32sm78295", - "addr1q9lqxlvk2dk8sffhr56gc4c4lckpv56l4r7wwh474caywurve9ssnt966vmezsfsppfm5sxgu5sqxacp8t7kpjzp9yxqn24ckj" - ] - }, - "solana": { - "owners": [ - "u6PJ8DtQuPFnfmwHbGFULQ4u4EgjDiyYKjVEsynXq2w", - "HiRpdAZifEsZGdzQ5Xo5wcnaH3D2Jj9SoNsUzcYNK78J", - // "CLNEVwuSAiGsvPtE74yLhda4beNfd8qfZXVKkUcAJZDL", - // "CVMV7614DjSjY114GwHhG1HNFXofceziDpuGz7VjDD5K", - "G9XFfWz6adb9wFDKN2v7HfmJDgAc2hirrTwBmca4w26C", - // "E2tbmDk29G6jHdrgwHC6kXGFfDsyrXUyWjD3e3ZB4oNp", - // "EnYo9PZuYwhJNi2hnk5AgsJaoNegscFF5CJkSPx1f7td", - // "HMbkbJVNitT3t4EtaDJeUtwfTFGYcjU6vhE7h7dqxDzJ" - "Egf5D8NKBivJavLKmCssE93J7X6fKvEPQwFTWLZUnaSN" - ] - }, - "ripple": { - "owners": [ - "rHcFoo6a9qT5NHiVn1THQRhsEGcxtYCV4d", - "rLzxZuZuAHM7k3FzfmhGkXVwScM4QSxoY7", - "rNnWmrc1EtNRe5SEQEs9pFibcjhpvAiVKF", - "rNu9U5sSouNoFunHp9e9trsLV6pvsSf54z", - "rhnS6iYGnrmh8NEgEKq3sBgF4FMLD9dHGf" - ] - }, - "starknet": { - "owners": [ - "0x00e91830f84747f37692127b20d4e4f9b96482b1007592fee1d7c0136ee60e6d", - "0x016dd5370bfa06e862508e8b81b8f676327b55404231bfb5b34c1df10ddd8963" - ] - }, - "algorand": { - "owners": [ - "BVMEUTF37WNEQ6GYCZISRFHGLEMOKT5OCPPTTJXVED6JBSXKF6YJJRZRI4", - "7BL55CRKRASIQI263JQ5H5A4JJQFSHL7RWXMCKM6YDZAIJVEZQ76SXF2S4", - // "YGR5VO4VWBTWPWZKXBPNBPUGCM5BLP7DVAH2AF6LXAZBM5QKQGAXY5IXII" // getting account not found error - ] - }, - "base": { - "owners": [ - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0xa4992ccf2a74132936b87cbf28b5d52304ba3be7", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x1f92332145465f3e536b7be301dde8d420478387", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "litecoin": { - "owners": [ - "LaH52f9sspcacPMf2Z7mU5tkhKcWJxvAgA", - "LYyhXjiwi7qcrf1QVwdPpFSptwRZ8L8PuW", - "Lc3BUJTitygdVPCyiBTwA2HephzBKnHPaH", - "LNyjBuigbWcHYQYbVKxk15u3Ux23QvEnS9", - "LQFZFmkrmxuyL5TCjuVxngM4wRFdM2a9EW", - "MQ4wXRL6etqkEPrLm4f1FKu2eXTM7EMgXo", - "LZZH8R24wpRVN9g2qM9Rh2BmfcTvThDtpE" - ] - }, - "manta": { - "owners": [ - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "mantle": { - "owners": [ - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "polkadot": { - "owners": [ - "1JVrK16XZm9vyZjHoYVPjtZ35LvTQ4oyufMoUFTFpAUhath", - "16ccyj8JqnP8d2DSaifgek6kSSBAu5cGtd4mu2uXTg4H6mSU", - "14ooXLY2gmiUTVym9SnKxNwEgcoikXzMEav2kiLjr7pPPHPR", - "1665ypcQXKmqXtjE9yuWsZqK5MQmBQokFjPGLq5SvoKAWBjQ", - "123tA7zfH9XdqHX5v9W4mB4VfmrjE95yJvdvMbpWv5V851rX", - "15NtvAi8CGHrbaUBvXdki8GXc5YfHM9yTv6HGmaYDetLH2ob", - "15dZTKqG6YZiQNiisMZP1DT4J6J9bmEEC4Bkz24nMC1ccRe2" - ] - }, - "scroll": { - "owners": [ - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "sei": { - "owners": [ - "sei1xunyznpjmj9jv5e2zwngp2qrzmulr2gg45sg0h", - "sei155svs6sgxe55rnvs6ghprtqu0mh69kehwl7mxz", - "sei1jm068whkhkxk48gx80ppm2m0nwy677prmjk402", - "sei1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9vsqw3v" - ] - }, - "stacks": { - "owners": [ - "SP33XEHK2SXXH625VG6W6665WBBPX1ENQVKNEYCYY", - "SP15R31KXD5C0N9ESSG7B28M3DP6ZQE2GSED759B3", - "SP3RWVFCERVDYEE1F9630H13P0Q0GEAGDC9MW9BJ0" - ] - }, - "taiko": { - "owners": [ - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421", - "0xf379a3d1ab6625eef34347d054cfaeafdf8f24a7" - ] - }, - "acala": { - "owners": [ - "21B6SER8NUWRVZcNM8LjAkYoVvms1EN1sKCfxJgTtN7MWpWm", - "26VDZeYLgh8QBcG5e3TvRkkzuHc7SuuUn2c63sLY6E19vDaU", - "24gQ7Fx4XgTk262QCmaZjPbV9UEfJNHZ7zTLuYmkUfmGCMwH", - "25FVW68A3B38AAWpyrRzV8vn4vybqBTBMKdbRc1YrCqD64b7" - ] - }, - "aelf": { - "owners": [ - "2ZwykiMYYMPx7NUodb4Z9VRzYqLrrxEpPcVuNKwT3kSQaSerQW", - "21Te3eubq6Yc7kv2FzVUvBLiyQnTZVe7nXodvexsKSZYBeoYuR", - "MTCNynuhCFJsFAwExEsXWe6tnydfnyv7WqA1SxVfsE9DT3YiG" - ] - }, - "aeternity": { - "owners": [ - "ak_6sssiKcg7AywyJkfSdHz52RbDUq5cZe4V4hcvghXnrPz4H4Qg", - "ak_2tNbVhpU6Bo3xGBJYATnqc62uXjR8yBv9e63TeYCpa6ASgEz94", - "ak_2UHGyGVYKx8L7EgPw88x3Dm2CK9WerYSTVWDf6RLuNEUxKu6q8" - ] - }, - "agoric": { - "owners": [ - "agoric155svs6sgxe55rnvs6ghprtqu0mh69keh3wdjs4", - "agoric1jm068whkhkxk48gx80ppm2m0nwy677pryr9uea", - "agoric1xunyznpjmj9jv5e2zwngp2qrzmulr2gg29rpeq", - "agoric1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9npn88m" - ] - }, - "ailayer": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "airdao": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "alephium": { - "owners": [ - "17R6Ptkz9i1LhiKyMhnitUMkgFygGeeQUFZvRx6GgV8Fc", - "13fKFYVSosvQZKhPP8izubADEn6q9a4np3uqw3YWjA6Hk", - "133kTjVSJA9VDrybSVCWahbQ5BQ5WevtLmHoGKp83dGPT" - ] - }, - "apechain": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "aptos": { - "owners": [ - "0x0cf869189c785beaaad2f5c636ced4805aeae9cbf49070dc93aed2f16b99012a", - // address not found - // "0x8b88f330e9ee14c6571d6707c48858bdd126d715c5df145eee58f4f4f6217898", - // "0x107ffec1dd5c5faa26dbff442253ae9fc2cb026e3e9b55a6613c10cc90904a40" - ] - }, - "arbitrum_nova": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0xa4992ccf2a74132936b87cbf28b5d52304ba3be7", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "archway": { - "owners": [ - "archway155svs6sgxe55rnvs6ghprtqu0mh69kehkcnf25", - "archway1jm068whkhkxk48gx80ppm2m0nwy677prr4m8ru", - "archway1xunyznpjmj9jv5e2zwngp2qrzmulr2ggdna6rp", - "archway1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn95hdua6" - ] - }, - "astar": { - "owners": [ - "WEo9Gi7T28niGb3pTwcHFDgGW4PjKDQvcS1stTxa68v73nQ", - "bYvGgqKmEkmQKEm7P4oYFRsfrteAzksqKqRyT82mx2iWSZt", - "Zk6pJF3cE67Eo15g7BSqtGMv3XC2T8xBHggq8ZFAPnpnpnY", - "aKCD8R97ifVNsVWTC2sbdbeqWG8ZGJaQcrwMBo3XvrmgR4N" - ] - }, - "aura": { - "owners": [ - "aura155svs6sgxe55rnvs6ghprtqu0mh69kehc9c0z6", - "aura1jm068whkhkxk48gx80ppm2m0nwy677prdgsptj", - "aura1xunyznpjmj9jv5e2zwngp2qrzmulr2ggrwkut0", - "aura1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn962x645" - ] - }, - "aurora": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "band": { - "owners": [ - "band155svs6sgxe55rnvs6ghprtqu0mh69keh6u00ct", - "band1jm068whkhkxk48gx80ppm2m0nwy677pr038p3r", - "band1xunyznpjmj9jv5e2zwngp2qrzmulr2ggphpu37", - "band1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9cn3609" - ] - }, - "beam": { - "owners": [ - "11d33ef5b07f977a51dc3aad64c49abf56c759c0059a468926b82a133a15b39d7bc" - ] - }, - "bifrost": { - "owners": [ - "c2TQGFWqK1WsKzWizpdf9V6uzCgnVqw7Yz9Va7G2wjQPHTY", - "hLaXgNj9XdVZNeE1uwpv9hJKM2wEBPQ2GPZb8mLEodCnpB2", - "fXm5HnSzWxqPrQYae4UDnXnZXfV5dmUNEEpSpCYdFPK4z69", - "g6rU7xYW1YDXvtyMiutyXs5UzQRcSw6bZR4xsSLznTFxfxW" - ] - }, - "binance": { - "owners": [ - "bnb155svs6sgxe55rnvs6ghprtqu0mh69kehphsppd", - "bnb1jm068whkhkxk48gx80ppm2m0nwy677pr56c0g9", - "bnb1nj68zufj3axulhletk4qut5ztn30fah9nhscg0", - "bnb1hv30rmjgu0wvtyyrzvm6njs8u2dc5l6aydw3gh", - "bnb1r4vvasqg7tsh9u4kl68ywskg3rq8juf6f640jz", - "bnb1agsyvgg2m45p5pef5xaetemhwcp3v84qgprhzq", - "bnb1hpcfdtv84srdq7n9a7mhnnmd3jwuda97dqzftu", - "bnb19yhugy8qzps8rur4mnp6tnz8w6nh7qrqz05yj0", - "bnb1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9rcw5kr" - ] - }, - "bitchain": { - "owners": [ - "1G47mSr3oANXMafVrR8UC4pzV7FEAzo3r9", - "18AV9vQZYm6yvG1W5JadaHSHR2b2xzujLf", - "1EkkGXR7dTbZbrKFKoe6YEP4gj4GzMeKvw", - "1HpED69tpKSaEaWpY3Udt1DtcVcuCUoh2Y", - "14kmvhQrWrNEHbrSKBySj4qHGjemDtS3SF", - "162bzZT2hJfv5Gm3ZmWfWfHJjCtMD6rHhw", - "3HroDXv8hmzKRtaSfBffRgedKpru8fgy6M", - "1FLKsCiEsABS7LysfDA8R181TQ6eLjoxPv" - ] - }, - "bitcoincash": { - "owners": [ - "1G47mSr3oANXMafVrR8UC4pzV7FEAzo3r9", - "18AV9vQZYm6yvG1W5JadaHSHR2b2xzujLf", - "1EkkGXR7dTbZbrKFKoe6YEP4gj4GzMeKvw", - "1HpED69tpKSaEaWpY3Udt1DtcVcuCUoh2Y", - "14kmvhQrWrNEHbrSKBySj4qHGjemDtS3SF", - "162bzZT2hJfv5Gm3ZmWfWfHJjCtMD6rHhw", - "3HroDXv8hmzKRtaSfBffRgedKpru8fgy6M", - "1FLKsCiEsABS7LysfDA8R181TQ6eLjoxPv" - ] - }, - /* - "bitgert": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - */ - "bitkub": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "bittensor": { - "owners": [ - "5CNChyk2fnVgVSZDLAVVFb4QBTMGm6WfuQvseBG6hj8xWzKP", - "5HgKqPsEz17fBVCvd5cgWbGbapBXCn48p8LHjjvAub2kvVyd", - "5FsWP1GxpzT11xyFBojKpE75pzp54ESDA6BYbRMPJ2nsCZE5", - "5GSbmqT4LV2PA3TfxtakZySNkTZ1b3bqPRMo7UbBfZrp6d8k" - ] - }, - "bittorrent": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "blast": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "boba": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "bone": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - // "bouncebit": { - // "owners": [ - // "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - // "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - // "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - // "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - // ] - // }, - "bsquared": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "btr": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "callisto": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - /* - "canto": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - */ - "celestia": { - "owners": [ - "celestia155svs6sgxe55rnvs6ghprtqu0mh69kehje7a6w", - "celestia1jm068whkhkxk48gx80ppm2m0nwy677pr85knnx", - "celestia1xunyznpjmj9jv5e2zwngp2qrzmulr2ggfjswnm", - "celestia1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9skqgdq" - ] - }, - "celo": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "chainx": { - "owners": [ - "5PwXDxpqSNF8oZN99EFY1PbFURdrsTmiHJ38sYYhdSKw5fjn", - "5VFeMNx3kas7Vc1rS9NjGPoSsnU7K9KBC1SYy7CmqJDjV5iE", - "5U1vHpXs74mqUAGbmxLoKmyE3RqbhQrsmJU4LqsnbH3nezDb" - ] - }, - "chz": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "clv": { - "owners": [ - "jHCPYN1HbjjwkKZnLYHYDS5onRwjVHSgTmkU7mDcxQFQ1C3BR", - "jHHhfVRQp3xZj1cS3qCfQh61yqJZjj8DvgTsXrnH2c7HobQWB", - "jHFtr32pXtwu4r6CNPvn3zirU5VCHaac12RiniTiEzZ3useUz", - "jHGTwRrzdQSUSzAgoB1dUkUBkzwwE7PmdFku3EWx3N67rmDRT" - ] - }, - "cmp": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "concordium": { - "owners": [ - "3rzzW6gBVMWXajrh3QLE8aFtmGQbdVFvCmKrcxsYBQxnfywfrR" - ] - }, - "conflux": { - "owners": [ - "cfx:aasusb60hfktf87fx1jg8m4cnnhebrew92f4swayt0", - "cfx:aase06fdw4cdrsrazhhzebshu9z2ds4zvu8j9zv3ad", - "cfx:aat80d5bu6rp5redv18g4yec8bv8ssheee8c9zur0a" - ] - }, - "core": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "cosmos": { - "owners": [ - "cosmos155svs6sgxe55rnvs6ghprtqu0mh69kehrn0dqr", - "cosmos1jm068whkhkxk48gx80ppm2m0nwy677prk78rft", - "cosmos1hpcfdtv84srdq7n9a7mhnnmd3jwuda970ya92j", - "cosmos19yhugy8qzps8rur4mnp6tnz8w6nh7qrqqttgnp", - "cosmos1xunyznpjmj9jv5e2zwngp2qrzmulr2ggccp7fk", - "cosmos1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9pu3chd", - "cosmos10v2gu0vvdeuv8pexnl98lmyva4cq8jkaa4845c" - ] - }, - "cronos": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0xa4992ccf2a74132936b87cbf28b5d52304ba3be7", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "cube": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "dash": { - "owners": [ - "XqjxbhVwksb7WXG5iJSh3bWnKSpvEYjG1P", - "XpSb6n51bAp9knuqBgxKPm4rX4dy3rjSjY", - "XsW53Lonn2fAPX7QPvnrjXugSqCbDcmBpj", - "XeSckx4kUZapSYT2B5HfabX575ETHqUX8i", - "XfiSpp6vf1tWEDMdReptNBy6ZYU3Gbozpo", - "7iaS3jCJWm5xRf7PvoLAm4eHFNhH3FETUG", - "Xq2AhTN8psQ2GHaTX6UMGXooHjgLGjFNkp" - ] - }, - "defichain": { - "owners": [ - "8W8yVQDEaQiJ5PB4Hy8CvKj9pBtD3zqkhb", - "8UqbzUnJQhwLKepomMdqGVHE1ohFpnzjSr", - "8VRBbA5ReQXCq9VS6m9s9G2AnUjd74nwQn" - ] - }, - "doge": { - "owners": [ - "DLCDJhnh6aGotar6b182jpzbNEyXb3C361", - "DJtqonMkvsVr8rVr4Pdf5zYfZrnaLSdnwi", - "DKRg7bL5s1NbWp1VMKhP1gbw6mqydnoX2u", - "DMxKkM6Y7jLrmahRGdUCRmPVVdMCZh7QKy", - "D8tsTxMVpGGWpc333my1Gpzt9sP4YQjoDx", - "DAAhXpPfziaCcGweJMWE4RSucLcee7NcqL", - "A8c3xNz2mqsDLFwv5KL5fpH12QEwDaoTXo", - "DKURQTetAa5ieMAUPo9gxmHcLXpwes8kH1" - ] - }, - "dydx": { - "owners": [ - "dydx155svs6sgxe55rnvs6ghprtqu0mh69keh22pfq5", - "dydx1jm068whkhkxk48gx80ppm2m0nwy677prl8f8fu", - "dydx1xunyznpjmj9jv5e2zwngp2qrzmulr2gg3p06fp", - "dydx1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9g9luh6", - "dydx10v2gu0vvdeuv8pexnl98lmyva4cq8jka5vf350" - ] - }, - "dymension": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "edg": { - "owners": [ - "hp7fFnvDbtF2PPydXhf33kXZULyqgUTJVYH7FkZVoKtfhoD", - "o8Enfv8XpWDiS3gvSprJ3xixqBEHN1vDCwhCpQdhfDh5EPb", - "mKRLHKrNoqZYup1VAwVbgoDD1on8pPzZAnx4Vqr66yoMFSJ", - "mtWj7VwtJQwgzJSGFnvMS8W8UYifdZcnVyCaZ5eTe3kF4Jj" - ] - }, - "elastos": { - "owners": [ - "EKk4HeHnLvMpxFiSbjVizcrCB1nVt39Bwe", - "EWwQTNN6ehrVLBh4imEYtQr61txBE2ARUk", - "Eb1wiohh195bcZrsPowoMdNRmaaJk4wbai", - "EftXuMPJRVxKjFKQ2Z3oiayi5hL4v56u5R", - "EdGT5d52SZhYASQpMdCydpnv1iiS4j2YoA" - ] - }, - "elrond": { - "owners": [ - "erd1p4vy5n9mlkdys7xczegj398xtyvw2nawz00nnfh4yr7fpjh297cqtsu7lw", - "erd1lptaaz323qjgsg67mfsa8aquffs9j8tl3khvz2v7creqgf4yeslsf2u99c", - "erd1cx3a4wu4kpnk0ke2hp0dp05xzvapt0lr4q86q97thqepvas2sxqsnh0533" - ] - }, - "elys": { - "owners": [ - "elys155svs6sgxe55rnvs6ghprtqu0mh69kehrnk2dp", - "elys1jm068whkhkxk48gx80ppm2m0nwy677prk77yyf", - "elys1xunyznpjmj9jv5e2zwngp2qrzmulr2ggcccey5", - "elys1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9pugl60" - ] - }, - "energyweb": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "enuls": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "eos": { - "owners": [ - "gateiowallet", - "ha2tanbqg4ge", - "eos32signhw1" - ] - }, - "eos_evm": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "equilibrium": { - "owners": [ - "cg3QZnNBPvXUiaAJzXqR1Ria2egcLXgmmRu9wGa2nQk5aV7FP", - "cg8igunJcEk6hGCxhpkYCginE43SayNKELcZMN8grcbyNtcg9", - "cg6usTPiL5jS36gj2PUeqzMciJE58pphJgaQcDp8513jVAtc8", - "cg7UxrDtRbE1REmDTAZWGk6x1Dgp5MdrvuuarjsMsNaoS4eUp" - ] - }, - "ergo": { - "owners": [ - "9iKFBBrryPhBYVGDKHuZQW7SuLfuTdUJtTPzecbQ5pQQzD4VykC", - "9gQYrh6yubA4z55u4TtsacKnaEteBEdnY4W2r5BLcFZXcQoQDcq", - "9f5WpnpDCAWHXk4HYARp7NKBJV58QSkCKAC2vucsaVBjPgKsght" - ] - }, - "ethereumclassic": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x246a2ecd9626f9eda55fffbff5216ed417a904f5", - "0x840760aed6bbd878c46c5850d3af0a61afcd09c8", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0x4bbe1961bd0a6cd1fe3cd8947be15bd8ae2ee562", - "0xd793281182a0e3e023116004778f45c29fc14f19", - "0x35b31ae2604dd81d9456205025ea02418dba8242", - "0x354e0184a6a6e634ccb07388e2617e05e427563c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "ethf": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x54c82d26624e85000d1387ee7c9580c3c6d7b5b7", - "0x7750fe679d47a9e00575ad46043297a234e83fa2", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xd793281182a0e3e023116004778f45c29fc14f19", - "0x354e0184a6a6e634ccb07388e2617e05e427563c" - ] - }, - "etlk": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "etn": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "evmos": { - "owners": [ - "evmos1p5rs093e2te0hfva6phjksj6eeqtfyh7ma0cjz", - "evmos1r39hpgukssmtng9feafqt3u8awqmk4vv7vvwtl", - "evmos1ezptzyd8tsxx2l79qlqyl07d9nycfur36wpmyf", - "evmos1ll4s7cv8rtxmfqudl3k4pqhsv0nn3eppwgmrq9" - ] - }, - "filecoin": { - "owners": [ - "f1d7mq36vf6osdhcd32i6k3wyb223mdjlxnafnala", - "f1z7izlq5yv2wkrt6ks4fnzscesnd6kntt6vovqai", - "f1pbcpx47wwpb5za2stdz3skfcplmk6zxi7hwv3sy" - ] - }, - "findora": { - "owners": [ - "fra1p4vy5n9mlkdys7xczegj398xtyvw2nawz00nnfh4yr7fpjh297cqsxfv7v", - "fra1lptaaz323qjgsg67mfsa8aquffs9j8tl3khvz2v7creqgf4yeslsjufhy6", - "fra1cx3a4wu4kpnk0ke2hp0dp05xzvapt0lr4q86q97thqepvas2sxqsgp6xsn" - ] - }, - "flare": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "flow": { - "owners": [ - "0xb65cb9286d8eab6c", - "0x4f45575f29f5dffb", - "0xa008dc1bf48aa10d" - ] - }, - "ftn": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "fuel": { - "owners": [ - "0x778c29331c90bc9d986dd790c6ed7225e1b9d0857952d4be81e91f0dfbc57a2e", - "0x188f36048cd9353bdd3809e349d20deab4cacad709d7cce64f2a417e55d27ec5", - "0xdd8861e6d56cfde6c3a017e246e0ff26d29ff30d08eef4e927d221a6a0b765c1" - ] - }, - "fuse": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "fusion": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "gochain": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "harmony": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x246a2ecd9626f9eda55fffbff5216ed417a904f5", - "0x840760aed6bbd878c46c5850d3af0a61afcd09c8", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "heco": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "heiko": { - "owners": [ - "hJFVeb7Z8zaQSPwjw8x6rRySFtxzk4KJrUCGs1pk71CQGyqd1", - "hJLomiXgMJo2R5zPeRsE3gyeTJKpzVzrKNugH7PQBD4J5NwfD", - "hJKa3eyGAfGw94YePmgC7kMpETyCUtGQ1xChnV85By388Z6px" - ] - }, - "hpb": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "hydra": { - "owners": [ - "HMaF9nmaCNua4vExqCTDb5iTfHYxdL6K8q", - "HLGsesLe2g8cKBtiJaxqwFGXruN1QGJji2", - "HLrTFYdmGNiUpgZLdzUsp21UdaQNh7E8Tb" - ] - }, - "hyperliquid": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "icon": { - "owners": [ - "hx548ad28ef8d6caed7f27f6001fb7a654ad8cca40", - "hx5130e85046609cda7c6f579c09946bcf6c86d81b", - "hx46a0528308c53c8d3e40f17b08f2c3fcfafb94d6", - "hxce12bc670be0e35dbb6ffb8935648d87fbd74154", - "hxffd3f84a64d2673b8b7564dd5307d16624553a3e" - ] - }, - "icp": { - "owners": [ - "8fe706db7b08f957a15199e07761039a7718937aabcc0fe48bc380a4daf9afb0", - "8f079b740ca593e6741e8a552f06352d0e6c844f6fd75533e3bd575ec76cb147", - "6463450788218283a2959d7cf4e1bfbaf422753e5c4596b593ed9d3f4cf20497" - ] - }, - "injective": { - "owners": [ - "inj155svs6sgxe55rnvs6ghprtqu0mh69kehf6cfjm", - "inj1s52g6m4h96lxyug2hejrqs6ffu26cuf5ym5mgq", - "inj1jm068whkhkxk48gx80ppm2m0nwy677pruhs8mn", - "inj1xunyznpjmj9jv5e2zwngp2qrzmulr2ggj3k6mw", - "inj1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9t4xu94", - "inj10v2gu0vvdeuv8pexnl98lmyva4cq8jkahus3xq" - ] - }, - "interlay": { - "owners": [ - "wd7oNzH5QHFCkwjRmAKXdkjyhcRmJ5QX1CTLB4M2FZSkcUFEd", - "wdD7W7hCcbTpjdn5UTEeq1kBu1nbYX64U7Ajb9ugKmJeQsYz5", - "wdBJgfJcLSTA5UFqo1xmUKP2PFyE6NYSYT8ar1b7Y9kQX9o1v", - "wdBsn48nRwwjTcLLDo3cu58MgBRy2uMcAgTm6XeMLXHUU3aH7" - ] - }, - "iotex": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x246a2ecd9626f9eda55fffbff5216ed417a904f5", - "0x840760aed6bbd878c46c5850d3af0a61afcd09c8", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "islm": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "kadena": { - "owners": [ - "k:0d584a4cbbfd9a4878d816512894e65918e54fae13df39a6f520fc90caea2fb0", - "k:f857de8a2a882488235eda61d3f41c4a60591d7f8daec1299ec0f20426a4cc3f", - "k:c1a3dabb95b06767db2ab85ed0be86133a15bfe3a80fa017cbb83216760a8181" - ] - }, - "kardia": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "karura": { - "owners": [ - "obmvFLKbtkyBSoSY4agQx1xCxVGts6yVS6QiwPrxevNxE7f", - "tuu3fTXv7NwsVT9pyhsfxE9cKKXLYeSQ9VppW3wAWpBMM7B", - "s75bGsFm6iHhyDUPhpWyb4drVx5C12Wk7M5gBV9YxaHdova", - "sgAz73MGbHfr3huAnfwjLPvmxh1ipC8ySXLCEiwvVeEXeBn" - ] - }, - "kava": { - "owners": [ - "kava155svs6sgxe55rnvs6ghprtqu0mh69kehlxmsky", - "kava1jm068whkhkxk48gx80ppm2m0nwy677pr2tn7lv", - "kava1hpcfdtv84srdq7n9a7mhnnmd3jwuda97n3fcu4", - "kava19yhugy8qzps8rur4mnp6tnz8w6nh7qrqu7l49x", - "kava1xunyznpjmj9jv5e2zwngp2qrzmulr2ggyd4rl3", - "kava1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9af99p2" - ] - }, - "kintsugi": { - "owners": [ - "a3aWepSsLfy67vUAAaKCiSnCj7G72feeTCgfKCBLivBWWTdFW", - "a3fpmwrzYzBi6cWossEKuhnQvWcwH7LBv7Q4jHjzo83QJs1ys", - "a3e1xVUQGqB3SSzaCRxSZ1RFQkoZpxnZzTMuz9RS1WVAR9BBL", - "a3eb3tJaNLfcpb54dD3HymAahgGJmVbjcgh6EfUfot2EN2oJB" - ] - }, - "klaytn": { - "owners": [ - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "kroma": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "kusuma": { - "owners": [ - "CspNJ5uJ9WcF6Nf6sJY9YRQL3dWZmKrMnmd2qY4BXMTGEgi", - "JBwViD7cN8aw92NPnRjQYdbjQTm1SsKGWB38QC8PPFFfLuc", - "DdCg75U3jH69QL1jDG7WybLxk9KLWM1gokBay77qng6dbhT", - "GP83KcqTMTvmcngxWYNiBU5yb6JruFPcU2Hz5dLmq1MwqGs", - "GxDS9nvxr3JuhH7jbPoTvoNu3qFPiR1qoCYW8s99N5JqhT5", - "GS988ESnKUHMYixhAZJLJjQkpBEGRN3AdEJbY7CXxauxoQo", - "J5VsgNemdBg2bfvHresAtBZdxE67WrS656Caup3MgsBE2y7", - "ErJ8h2WUY35Eb1cDMTCZgnht2kT2gKdKeNnw21tDDmRxSXL", - "HfQVohDHuXHr1Y9y3fZdNNANKhMHn4ndcVXaCN3rWW94hN7" - ] - }, - "linea": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "lisk": { - "owners": [ - "lskqov47at3sqaaf9bg38kymku92rcdax7refhpk3", - "lsko9dq4zcp7yu5fvr2owm672sxdpc5swapv3dbyk", - "lskwqe5qassrz55474rux63537nwasf53va79hczs" - ] - }, - "lukso": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "manta_atlantic": { - "owners": [ - "dfWrWfp3dJ7FNXyLCEW8gvmknvAyi9FTa5gFZeGUD7GaSbUXa", - "dfcAdoEAqcKsME1yuXRFtBmxzKXoxaw12zPeyjq8HK8UEzgZ6", - "dfaMpLqaZTKCh4VkE69NXVQoUZiSWSPP7LMWEbWZVhaEMH5hW", - "dfavujfkexon5CaEesEDxFA8mVBBSyCYjZggV7ZoJ57JJAbVb" - ] - }, - "matchain": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "merlin": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "meter": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "metis": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "mode": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "moonbeam": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "moonriver": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "naka": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "near": { - "owners": [ - "0d584a4cbbfd9a4878d816512894e65918e54fae13df39a6f520fc90caea2fb0", - "f857de8a2a882488235eda61d3f41c4a60591d7f8daec1299ec0f20426a4cc3f", - "c1a3dabb95b06767db2ab85ed0be86133a15bfe3a80fa017cbb83216760a8181" - ] - }, - "neo": { - "owners": [ - "AJN2SZJuF7j4mvKaMYAY9N8KsyD4j1fNdf", - "AVZNcHPDYuDj9rJCUZuN3A8DirNk8QPBEr", - "AZdusiiouLSqSEU19cccWNeZUXzsZEk2UB", - "AeWW4GQRKhKZYuvXnMicsLFqnekdpSofk6", - "AbtREY69Lm4mz71x7Rsnna53ig8zzXRrXK" - ] - }, - "neo3": { - "owners": [ - "NTWC7Hh5VYMQ5K8YJbyCLbmJ4RhfQ1Ej64", - "NY8VmiQ8if23Cr7Fe6xwXZ4a59JTVXHDCN", - "NcSZPD4ToU3v1C8NPK13hibCnZcPEqHD1a" - ] - }, - "neon_evm": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "neutron": { - "owners": [ - "neutron155svs6sgxe55rnvs6ghprtqu0mh69keh8vx06y", - "neutron1jm068whkhkxk48gx80ppm2m0nwy677prjpwpnv", - "neutron1xunyznpjmj9jv5e2zwngp2qrzmulr2ggu8gun3", - "neutron1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn99rc6d2" - ] - }, - "nibiru": { - "owners": [ - "nibi155svs6sgxe55rnvs6ghprtqu0mh69keh5kt5fs", - "nibi1jm068whkhkxk48gx80ppm2m0nwy677prpmr6qc", - "nibi1xunyznpjmj9jv5e2zwngp2qrzmulr2gg0a98q9", - "nibi1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9ke4p77" - ] - }, - "nuls": { - "owners": [ - "NULSd6Hge2GxNKwYRxxvnQynMK2gKt5YAVANR", - "NULSd6Hgd9SJyzE6cmFmPQQ6VcpcQPLvbM4K2", - "NULSd6HgdY5zjfxhHhQMyGnJmxZREDxr8Zhh1" - ] - }, - "oas": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "oasis": { - "owners": [ - "oasis1qppfyeugxmxdx5m4gpasg4xqg296zcdndy0k2zsg", - "oasis1qqz86qv538ff9y4exy6g3j724mq68wj7pu55rgwt", - "oasis1qp8f5gh8zgad5t47hc40ayw37ptcszrtsq6eh5de" - ] - }, - "okexchain": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "ontology": { - "owners": [ - "AJN2SZJuF7j4mvKaMYAY9N8KsyD4j1fNdf", - "AVZNcHPDYuDj9rJCUZuN3A8DirNk8QPBEr", - "AWGrHN1DUAo6Ao3yTHu4tUHZonPNAy9ZmU", - "AM1te97HdmaereEMgtLg7YvfUP624Ra4iF", - "ASPPqj8yCcCV2sWHQZwsYfWZS2FMfd3PF7", - "AZdusiiouLSqSEU19cccWNeZUXzsZEk2UB", - "AeWW4GQRKhKZYuvXnMicsLFqnekdpSofk6", - "AbtREY69Lm4mz71x7Rsnna53ig8zzXRrXK" - ] - }, - "op_bnb": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "orai": { - "owners": [ - "orai155svs6sgxe55rnvs6ghprtqu0mh69kehsqewps", - "orai1jm068whkhkxk48gx80ppm2m0nwy677pr9d3qgc", - "orai1xunyznpjmj9jv5e2zwngp2qrzmulr2ggtthag9", - "orai1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9j08mk7" - ] - }, - "osmosis": { - "owners": [ - "osmo155svs6sgxe55rnvs6ghprtqu0mh69kehtguak3", - "osmo1jm068whkhkxk48gx80ppm2m0nwy677pr795nle", - "osmo1xunyznpjmj9jv5e2zwngp2qrzmulr2ggsrjwly", - "osmo1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9f8zgpl" - ] - }, - "parallel": { - "owners": [ - "DVhKTLv9mkh42BZRKJTmWRjlT64T3zmm9SD8kMrqL7A", - "-FfeiiqIJIgjXtph0_QcSmBZHX-NrsEpnsDyBCakzD8", - "waPau5WwZ2fbKrhe0L6GEzoVv-OoD6AXy7gyFnYKgYE" - ] - }, - /* - "persistence": { - "owners": [ - "persistence155svs6sgxe55rnvs6ghprtqu0mh69kehdlf7w8", - "persistence1jm068whkhkxk48gx80ppm2m0nwy677prcjps80", - "persistence1xunyznpjmj9jv5e2zwngp2qrzmulr2ggk58d8j", - "persistence1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn90shtef" - ] - }, - */ - "pokt": { - "owners": [ - "ab04976668dd739f34df43e912d20dc487ac85d2", - "63755480647460bf0a5865caa76361d106bddf24", - "bd6cbae77b9016b4b932805485a1c7be77e5a059" - ] - }, - "polkadex": { - "owners": [ - "esm4teFDTrvy4VJ8msKTQmAywumeinGjzsrFzmTEB5FBiiekE", - "esrP1mfLgB9b3BLnVAEac2BC9K8UyDxHTnZfQs1tFH75X81FT", - "espaCKGkQ28vP1pYoixhFKp2dZK7X5QfY8XWfihKTfYqdQFGd", - "esq9Hi6vVXdVm9u3EW3Yg5ZMvUmrTcDqAMrgvEkZG35uaJ6tp" - ] - }, - "polygon_zkevm": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "proton": { - "owners": [ - "gatedeposit", - "gateiocold" - ] - }, - "radixdlt": { - "owners": [ - "account_rdx16y5vw2latcyn7h2leujsc0th2junpgxnafx0aqrher4yw7pmnmfyx8", - "account_rdx16xkm9wvwcwq0q8ly6hm6m86s90zcqxeexhnzn8l9jkgtk3t8z7j2yz", - "account_rdx169r653rp86kepz28wrzlxzy6ll2use5jmew5rz9h24uyj9cjqtl38n" - ] - }, - "reef": { - "owners": [ - "5CNChyk2fnVgVSZDLAVVFb4QBTMGm6WfuQvseBG6hj8xWzKP", - "5HgKqPsEz17fBVCvd5cgWbGbapBXCn48p8LHjjvAub2kvVyd", - "5FsWP1GxpzT11xyFBojKpE75pzp54ESDA6BYbRMPJ2nsCZE5", - "5GSbmqT4LV2PA3TfxtakZySNkTZ1b3bqPRMo7UbBfZrp6d8k" - ] - }, - "rei": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "rollux": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "ronin": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "rsk": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "rvn": { - "owners": [ - "RQLJqxjLPzB6Rb2hKb7bHbACFNhpq11zhv", - "RP2wM3JQEHQ8frgSnydDdkiGSzWscgUihs", - "RS6RHc3BR9F9Jat21DTkyXZ6Nm5VrLUKxt", - "RD2y1DJ97gAoMcDdnMxZpbAV317MvAuu8A", - "REJo55LKJ8UV9H8F2wVncBcWVULwtsoiKn", - "RPcWwibXTyz1BMM58P9FWXTDDfZExE78SG" - ] - }, - "secret": { - "owners": [ - "secret155svs6sgxe55rnvs6ghprtqu0mh69kehpkmyal", - "secret1jm068whkhkxk48gx80ppm2m0nwy677pr5mn25h", - "secret1xunyznpjmj9jv5e2zwngp2qrzmulr2gg6a4h52", - "secret1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9re9323" - ] - }, - "shibarium": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "shiden": { - "owners": [ - "WEo9Gi7T28niGb3pTwcHFDgGW4PjKDQvcS1stTxa68v73nQ", - "bYvGgqKmEkmQKEm7P4oYFRsfrteAzksqKqRyT82mx2iWSZt", - "Zk6pJF3cE67Eo15g7BSqtGMv3XC2T8xBHggq8ZFAPnpnpnY", - "aKCD8R97ifVNsVWTC2sbdbeqWG8ZGJaQcrwMBo3XvrmgR4N" - ] - }, - "songbird": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "sora": { - "owners": [ - "cnRnnKrqCX9TEZvCgVuiXbPbE1jmA3R55W6cLeKC43U8nVoma", - "cnX6uTGxQqN5DFxrPnpqirPoRR6bQV6cYQp1kjsr8FL2au8KM", - "cnVJ5ztN8gMQZ6SciMYxNA2dufHDxLYzckms1bZHLdmnhBbm7", - "cnVsBPiYEBqywEX798donumyCajxtsNAEz73G7cX91Jre5TfS" - ] - }, - "stafi": { - "owners": [ - "313h29qADPFh49f1QT8xwmD3xnCoZ4fDkijz797UWv4EKqmx", - "36Mp9ZxNXbsfkCJihNGACmRFN933zkCgfS9QChmYimx2jPEb", - "34YzhBN6NbD1ag53G6NoWQFjcKfbrCam1Pzf4PCm7Di91dtJ", - "358661YBt5nPikZU3BEEG9b2XnQYP1kPEjAuaSSZUkn5uMJq" - ] - }, - "starcoin": { - "owners": [ - "0x5aeae9cbf49070dc93aed2f16b99012a", - "0xd126d715c5df145eee58f4f4f6217898", - "0xc2cb026e3e9b55a6613c10cc90904a40" - ] - }, - "stellar": { - "owners": [ - "GBC6NRTTQLRCABQHIR5J4R4YDJWFWRAO4ZRQIM2SVI5GSIZ2HZ42RINW", - "GBJ746LVE2LFZ5OA2QEQUE35QHHI3OXZ75RH4USXY2GBFAKCBKQG3HKU", - "GCLP5OZ4SFU4X2MD4BGZKC7FFJY3NGM3Y6TVULOWLUNNWHEFNUJGAW5Y", - "GCE2HXJTGSI66KBPEVQYFU7N4KWAGRIG4TJPZTPWRGVSH2MZCC4EAY63", - "GBOL3FQURYYBAPWMAGMY5IS3ZFQRYOLBANZTVGGFL5MAN545QB5NAEUT" - ] - }, - "sui": { - "owners": [ - "0x62f36b79d7ea8ae189491854edd9318b29c75346792177b230a95f333ffa53ad", - "0x7ce04f66dca33c786c7375f73c4f7459e16b8a80cbbdd055e3782b3e176fa3d3", - "0x019b848f4511b354c314a4e5c1a40dbc247fe5d29c6bcb3495badb01751d549a" - ] - }, - "syscoin": { - "owners": [ - "ScM7oHdCXXZistSxPr7YjxyZ8tUf3HG8c2", - "Sb3kJNCGMpnm8A6hsEdB68XdLWHhkXietE", - "SSKc2QEBRfs7baYW7CVk4ZRsNz7n28P2j3", - "SbdKu3VPbXNddemLCe9CxuGa7BL538hBCx" - ] - }, - "tara": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "telos": { - "owners": [ - "gateioiotlos" - ] - }, - "tenet": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "terra": { - "owners": [ - "terra155svs6sgxe55rnvs6ghprtqu0mh69keh9h4dzr", - "terra1f62zqvvm6y2vlp6rhn94k9spsuqmh727twq8e4", - "terra1jm068whkhkxk48gx80ppm2m0nwy677prs6artt", - "terra1xunyznpjmj9jv5e2zwngp2qrzmulr2gg7um7tk", - "terra1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn98ctc4d" - ] - }, - "tezos": { - "owners": [ - "tz1hjem5Rpf4KAVbwMLJet75TDb8HjAKnTYk", - "KT18yTsDxUbVrenxZsbFSx6Ai72hRHod9pHV", - "tz1RRVLD5LEu8iaoTMGc5L1NiyiEGuSUtAwX", - "KT1PuUGWvCypTrNu7yweWCzpX6zyuy6nq6Wu", - "tz1fw6VKhBZ8N7HAvCwvXSkTvQ7YcUk3w9AK" - ] - }, - "theta": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x246a2ecd9626f9eda55fffbff5216ed417a904f5", - "0x840760aed6bbd878c46c5850d3af0a61afcd09c8", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "thorchain": { - "owners": [ - "thor155svs6sgxe55rnvs6ghprtqu0mh69keh95kk4u", - "thor1jm068whkhkxk48gx80ppm2m0nwy677prse7cu5", - "thor1xunyznpjmj9jv5e2zwngp2qrzmulr2gg7lc9uf", - "thor1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn98mgrzj" - ] - }, - "thundercore": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "tomochain": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x246a2ecd9626f9eda55fffbff5216ed417a904f5", - "0x840760aed6bbd878c46c5850d3af0a61afcd09c8", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "ton": { - "owners": [ - "0:3addd84bf73267312a477049fd9b8db761bf39c585c150f8e6f9451347af2b6c", - "0:09c592c5b17a555c1ace781f38303e5a115978f57cf22773b280d14028e7dd92", - "0:16ea6a34f0d704b6fac9b7592e003f6f28ae5d1a8a6ba9d1650e4dd30ab8eada" - ] - }, - "umee": { - "owners": [ - "umee155svs6sgxe55rnvs6ghprtqu0mh69keh39jjy3", - "umee1jm068whkhkxk48gx80ppm2m0nwy677pryg6ude", - "umee1xunyznpjmj9jv5e2zwngp2qrzmulr2gg2wupdy", - "umee1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9n2v8nl" - ] - }, - "vana": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "vechain": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0x246a2ecd9626f9eda55fffbff5216ed417a904f5", - "0x840760aed6bbd878c46c5850d3af0a61afcd09c8", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "velas": { - "owners": [ - "u6PJ8DtQuPFnfmwHbGFULQ4u4EgjDiyYKjVEsynXq2w", - "HiRpdAZifEsZGdzQ5Xo5wcnaH3D2Jj9SoNsUzcYNK78J", - "E2tbmDk29G6jHdrgwHC6kXGFfDsyrXUyWjD3e3ZB4oNp" - ] - }, - "venom": { - "owners": [ - "0:9f4fb4d07e97542c2200672b2819c1c3987c48a353c655858ba525c7e51bbfc7", - "0:595972816072851da891322300897c5e71255d2f2dbd1ca721568b6ac1e761db", - "0:c6c2f45369f7a281ed9771fcb2dc62863a2625e963074159af527169e470de29" - ] - }, - "vinu": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "vite": { - "owners": [ - "vite_f262f48ec1097880c83aa079dfb0baef5e68c4ff6c0b807b0a" - ] - }, - "waves": { - "owners": [ - "3P7LZSuVDv5pQS7NSCE1LyGCbQihzk1fQ2r", - "3PJL6FBmbQrYpvtWjRJEETAF7ngZ1cB4Hcj", - "3PMb9uuJm5VB9VUzNLhZGScEK8m7zGwDED3" - ] - }, - "wax": { - "owners": [ - "gateioiowaxp" - ] - }, - "wemix": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "xdc": { - "owners": [ - "0x0D0707963952f2fBA59dD06f2b425ace40b492Fe", - "0x1C4b70a3968436B9A0a9cf5205c787eb81Bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "xlayer": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "xpla": { - "owners": [ - "xpla155svs6sgxe55rnvs6ghprtqu0mh69keha5h3ts", - "xpla1jm068whkhkxk48gx80ppm2m0nwy677prgellzc", - "xpla1xunyznpjmj9jv5e2zwngp2qrzmulr2ggxlezz9", - "xpla1n5ukn9q2r5vrgt6su0e6cvm5lyxe2cn9lmfyu7" - ] - }, - "zeta": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421", - "0xcf6f5ec73942314c3ec864202b40dcbb1f9477a0" - ] - }, - "zilliqa": { - "owners": [ - "zil1e9k0rdjgh0khx06veut6ghwkggue6snmrlyg4w", - "zil1melkmjzv6v784dlk30rhx2ck4zccqpprsdd3jt", - "zil12zn46cppzsg0thgn7e66ugjd3c25hcl0acjaud", - "zil1jcmadzrm6w49gegqw94esdkyhfq75y4fxl9wrv", - "zil12acrew80f00m4v3cs4hw9yawx7m74fwdwtmdj5" - ] - }, - "zircuit": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "zkfair": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x6596da8b65995d5feacff8c2936f0b7a2051b0d0", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xc882b111a75c0c657fc507c04fbfcd2cc984f071", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, - "zklink": { - "owners": [ - "0x0d0707963952f2fba59dd06f2b425ace40b492fe", - "0x85faa6c1f2450b9caea300838981c2e6e120c35c", - "0x1c4b70a3968436b9a0a9cf5205c787eb81bb558c", - "0xffeb0f61871acdb4838dfc6d5082f063e738e421" - ] - }, -}; - -const unsupportedChains = ['aeternity', 'beam', 'binance', 'bitchain', 'bitcoincash', 'bittensor', 'bone', 'callisto', 'chainx', 'clv', 'concordium', 'conflux', 'cmp', 'dash', 'cube', 'defichain', 'edg', 'elastos', 'elys', 'equilibrium', 'evmos', 'filecoin', 'findora', 'flow', 'fusion', 'heiko', 'hydra', 'hyperliquid', 'icon', 'icp', 'interlay', 'kadena', 'karura', 'kava', 'kintsugi', 'kusuma', 'manta_atlantic', 'lisk', 'neo', 'neo3', 'near', 'nibiru', 'nuls', 'ontology', 'oasis', 'parallel', 'pokt', 'polkadex', 'proton', 'reef', 'rvn', 'shiden', 'sora', 'stafi', 'starcoin', 'syscoin', 'stellar', 'telos', 'thorchain', 'velas', 'venom', 'vite', 'waves', 'wax', 'zilliqa', 'secret', 'etn', 'tara', 'zkfair', - 'vinu', 'rollux', 'syscoin', 'aelf', 'ailayer', 'heco', -] - -unsupportedChains.forEach(chain => delete config[chain]); - -module.exports = mergeExports([ - cexExports(config), - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddresses: ['0x287a66c7d9cba7504e90fa638911d74c4dc6a147', '0xbcf03ce48091e6b820a7c33e166e5d0109d8e712', '0x7a3f9b7120386249528c93e5eb373b78e54d5ba9'], sleepTime: 20_000, size: 200, proxy: true }) } }, -]); diff --git a/projects/gauntlet/index.js b/projects/gauntlet/index.js deleted file mode 100644 index c5cfff21502..00000000000 --- a/projects/gauntlet/index.js +++ /dev/null @@ -1,261 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); -const axios = require('axios'); - -const configs = { - methodology: 'Counts all assets that are deposited in all vaults curated by Gauntlet.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0xC684c6587712e5E7BDf9fD64415F23Bd2b05fAec', - ], - aera: [ - '0x7c8406384f7a5c147a6add16407803be146147e4', - '0x3d6eef6a92b15361697698695334e98c5db91d6b', - '0x14c79c24b2a82ce36e3f3d693aeea17e268f5a98', - '0xf33f452d45929c25a819832a3f79efa416885ce1', - '0x8624f61cc6e5a86790e173712afdd480fa8b73ba', - '0xd243c77814729b0b5d351966c3ebf0ab852d2cde', - '0xaa1fb27fafff6010f963e610d0e2e00c665c5898', - '0xb6d391b63447774523a6f391d8b4703f102ee57d', - '0xff8432ea93ce82ef9a8a7fbd2ed160ad9eda732e', - '0x321301f1b2b3f6a67df4b581d7e7ebd205a021d9', - '0x8d7c89fbc143406f257cf12213a26066f2c64503', - '0xa12f2ae0287ebba60bd54da11a01cbf769fd7027', - '0x564bc596affd8eb9c5065bc37835d801f3830c9e', - '0x9ecf0d8dcc0076dd153749bece0762acae1c9049', - '0x296448fd860f94509a0d8d07226b65c6f0210852', - '0x8447d80cd573922cb34a8e40e64533ef7d650e1f', - '0xba0ffe7a6122e13c38d9a81ee30dc71eb4e9ad96', - '0xfc57d3c100deec9940d5078a75fc0462f88b10fa', - '0x6c25ae178ac3466a63a552d4d6509c3d7385a0b8', - '0xd065f89b0d379cce0bc375f8dafde01fb9af6f5a', - '0x5b0c6067a60055eae107f1363b597d67d023175a', - '0x63b036eb8c38e71fca531f30f411ac805ce550b5', - '0x8697b83daa544e55a568163af14666f7383d993b', - '0x66b08c35a0fd624e420add6b21cc66fa81f3e5b3', - '0x8c8fb9957ef787d273f4fa200371a2c235c6c63e', - '0x8fc3df1cd63d62959eafc164d803b9a51e8765a1', - '0xe6a185896c861fa61175b54de752978c374e4507', - '0xf60c7aa098ac3be4f3532034dd2a49e068d333d4', - '0x9f1210a391c6186c5b85ac9e09ca220092c1289f', - '0x744bff6ca503955d87fa6a90b866d8f952805c43', - '0x47562b3738c439b80fe4012e6d40c8acb51ce136', - '0x17a6f4e1fdb26b3355f240530a25bb78f43e1287', - '0x2e2e57bb1272acb11a5a0da677ddbcb8c9906255', - '0x2c9f8043d4b6a37489eea91437c14d206acddeb9', - ], - symbiotic: [ - '0xc10A7f0AC6E3944F4860eE97a937C51572e3a1Da', - '0xB8Fd82169a574eB97251bF43e443310D33FF056C', - '0xaF07131C497E06361dc2F75de63dc1d3e113f7cb', - '0x81bb35c4152B605574BAbD320f8EABE2871CE8C6', - '0x65B560d887c010c4993C8F8B36E595C171d69D63', - '0x3ba6930bac1630873f5fd206e293ca543fcea7a2', - '0x9e405601B645d3484baeEcf17bBF7aD87680f6e8', - '0xbA60b6969fAA9b927A0acc750Ea8EEAdcEd644B7', - ], - mellow: [ - '0x8327b8BD2561d28F914931aD57370d62C7968e40', - ], - erc4626: [ - '0xeea3edc017877c603e2f332fc1828a46432cdf96', - ], - }, - base: { - morphoVaultOwners: [ - '0x5a4E19842e09000a582c20A4f524C26Fb48Dd4D0', - '0xFd144f7A189DBf3c8009F18821028D1CF3EF2428', - ], - aera: [ - '0x9f3ef866e769624d9a7a687a669d226c1e327b4d', - '0xcd971b604d1ac4882f8720f5e1270f8b18c91de4', - '0x318be682bbbd0cfd07b276706e86e10f221f79b6', - '0x76f8022dbd50e8228967b8a71a14c08870498c32', - '0xb013ea0b7e6be494d930291503de2354902ae607', - '0xa97da897855443f839cc52ab816bc334096c5ada', - '0xc9e979f8b74c02953eeb4aaaf1f7e52cecfbfbcc', - '0x67107e64e4ebed8f16c96f2ddf26cb731261fe2f', - '0xa187de2d347070be563417ac1fe100a45a3924ce', - '0x280218bcdef1cee7036a884f61baccf5f935fd87', - '0xd8c5efd74dd4060ce983cbb051dcda881bbd25fb', - '0x0baafdbe8a709f5d9d586db916e907f82f2d474d', - '0xe4cc837ceb5631d442de23c357ab50f05f113f58', - '0xb053805a64c50ed2a51a6d80a28000e3419be09d', - '0xdb223128a4524ce733c575421267dc56992c796d', - '0x70f6fd99a43fce03648b20d44b9f0cd2b14eea68', - '0x94bca6d21907b8275daa3803fe432cd916c4fdd2', - ] - }, - polygon: { - morphoVaultOwners: [ - '0xC684c6587712e5E7BDf9fD64415F23Bd2b05fAec', - ], - }, - unichain: { - morphoVaultOwners: [ - '0x9E33faAE38ff641094fa68c65c2cE600b3410585', - '0x5a4E19842e09000a582c20A4f524C26Fb48Dd4D0', - ], - }, - hyperliquid: { - morphoVaultOwners: [ - '0x09346F40e324458A8E211C5317981C78FAcDEc57', - '0xB47f11484e19f1914D32fd393b17671221C10F1F', - ], - }, - katana: { - morphoVaultOwners: [ - '0x5D8C96b76A342c640d9605187daB780f8365F69f', - ], - }, - } -} - -// --- Drift Solana TVL logic --- -const ADDRESSES = require('../helper/coreAssets.json') -const { getMultipleAccounts, getProvider } = require('../helper/solana') -const { Program, BN } = require("@project-serum/anchor") -const { PublicKey } = require("@solana/web3.js") - -const TOKEN_INFO = { - USDC: { - mint: ADDRESSES.solana.USDC, - decimals: 6, - }, - SOL: { - mint: ADDRESSES.solana.SOL, - decimals: 9, - }, - jitoSOL: { - mint: 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn', - decimals: 9, - }, - JTO: { - mint: 'jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL', - decimals: 9, - }, - WIF: { - mint: 'EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm', - decimals: 6, - }, - DRIFT: { - mint: 'DriFtupJYLTosbwoN8koMbEYSx54aFAVLddWsbksjwg7', - decimals: 6, - }, - INF: { - mint: '5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm', - decimals: 9, - }, - dSOL: { - mint: 'Dso1bDeDjCQxTrWHqUUi63oBvV7Mdm6WaobLbQ7gnPQ', - decimals: 9, - }, - JLP: { - mint: '27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4', - decimals: 6, - }, - cbBTC: { - mint: 'cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij', - decimals: 8, - }, - USDS: { - mint: 'USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA', - decimals: 6, - }, - BONK: { - mint: ADDRESSES.solana.BONK, - decimals: 5, - }, -} - -function getTokenInfo(marketIndex) { - switch (marketIndex) { - case 0: return TOKEN_INFO.USDC - case 1: return TOKEN_INFO.SOL - case 6: return TOKEN_INFO.jitoSOL - case 9: return TOKEN_INFO.JTO - case 10: return TOKEN_INFO.WIF - case 15: return TOKEN_INFO.DRIFT - case 16: return TOKEN_INFO.INF - case 17: return TOKEN_INFO.dSOL - case 19: return TOKEN_INFO.JLP - case 27: return TOKEN_INFO.cbBTC - case 28: return TOKEN_INFO.USDS - case 32: return TOKEN_INFO.BONK - default: return undefined - } -} - -const VAULT_USER_ACCOUNTS = [ - 'Fu8AWYqw7bPZJAxumXJHs62BQZTMcsUkgGdwoh4v3js2', // hJLP 1x (USDC) - '3fFkCDe3DU3qVK8FD5fBYumK1bjGKA7uTvVPP53j3ydA', // hJLP 2x (USDC) - 'DMbboHpxpJjTic3CMVRCiJFYKaEEz6izMgE9vB6GBSxv', // Gauntlet Basis Alpha (USDC) - '7Lka2kKagwTvTWNas2UtPaFiwpgs7r9BJtUEzQBB4DxT', // hJLP 1x (JLP) - '4UF8DgbH8hGmtfFhV369bkwMyRJbJDGN3UtYCZoeKqN3', // SOL Plus - '3u3biLVaLsbeQaXKq3Dt7c4di5Un2rqza4QXnFRmVZ7t', // cbBTC Plus - 'EC2w198qubUWA2Xf73hz2d7vFKNaQc1XN7SYYqXbfLKQ', // dSOL Plus - '4Kayz1HkWJiEcYQgyQkXDC8Y6CeCoV5MYFXg3KwaL9ii', // jitoSOL Plus - '68oTjvenFJfrr2iYPtBTRiFyXA8N2pXdHDP82YvuhLaC', // DRIFT Plus - 'GYxrPXFhCQamBxUc4wMYHnB235Aei7GZsjFCfZgfYJ6b', // Carrot hJLP - 'FbbcWcg5FfiPdBhkxuBAeoFCyVN2zzSvNPyM7bRiSKAL', // JTO Plus -] - -async function tvl(api) { - const accounts = await getMultipleAccounts(VAULT_USER_ACCOUNTS) - const idl = require("../knightrade/drift_idl.json") - const programId = new PublicKey('dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH') - const provider = getProvider() - const program = new Program(idl, programId, provider) - - for (let i = 0; i < accounts.length; i++) { - const account = accounts[i]; - if (!account) continue; - const userData = program.coder.accounts.decode("User", account.data); - for (let j = 0; j < userData.spotPositions.length; j++) { - const spotPosition = userData.spotPositions[j]; - if (!new BN(spotPosition.scaledBalance).isZero()) { - const marketIndex = spotPosition.marketIndex - const balanceType = Object.keys(spotPosition.balanceType ?? {})?.[0] - const scaledBalance = new BN(spotPosition.scaledBalance) - const token = getTokenInfo(marketIndex) - if (!token) continue; - const balance = scaledBalance - .mul(new BN(balanceType === 'deposit' ? 1 : -1)) - .div(new BN(10).pow(new BN(token.decimals - 9))); - api.add(token.mint, balance.toString()) - } - } - } -} - -async function megavaultTvl(api) { - const url = "https://indexer.dydx.trade/v4/vault/v1/megavault/historicalPnl?resolution=hour"; - const { data } = await axios.get(url, { headers: { 'Accept': 'application/json' } }); - const pnlArr = data.megavaultPnl; - if (!pnlArr || !pnlArr.length) return; - const currentTvl = Number(pnlArr[pnlArr.length - 1].equity); - - // Report as USD Coin using coingecko identifier - api.add('coingecko:usd-coin', (currentTvl * 1e6).toFixed(0)); -} - -async function combinedEthereumTvl(api) { - // First, get the existing curator TVL - const curatorExport = getCuratorExport(configs); - if (curatorExport.ethereum && curatorExport.ethereum.tvl) { - await curatorExport.ethereum.tvl(api); - } - - // Then add MegaVault TVL - console.log("Adding MegaVault TVL to ethereum..."); - await megavaultTvl(api); - console.log("MegaVault TVL added to ethereum"); -} - -module.exports = { - ...getCuratorExport(configs), - solana: { tvl }, - ethereum: { tvl: combinedEthereumTvl }, - timetravel: false, - methodology: configs.methodology, -} diff --git a/projects/gaur/index.js b/projects/gaur/index.js deleted file mode 100644 index 6abbc965694..00000000000 --- a/projects/gaur/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { tombTvl } = require('../helper/tomb'); - -const bond = "0x046cb616d7a52173e4Da9efF1BFd590550aa3228"; -const share = "0x66ec6e9f61ac288f5ba661cd9a2dbe3abf9871c9"; -const boardroom = "0x73c34f572a428c0fc298e9a2ae45d01e87713e8f"; -const rewardPool = "0x4d24484a5944b6a8e2bc9af74c6d44c47767b150"; -const pool2lps = [ - '0xe34973e9c89a9a1d2886379ce52d32dde296ca22', - '0x9f4daa971e76e3d0c68c9983125e35c0f89b077a', - '0xe61Db569E231B3f5530168Aa2C9D50246525b6d6', - '0x062b7d86c51aa3b2ec998272b5bd0609e95b3661', - '0xfd0cd0c651569d1e2e3c768ac0ffdab3c8f4844f', - '0xa111c17f8b8303280d3eb01bbcd61000aa7f39f9', -]; - -module.exports = { - ...tombTvl(bond, share, rewardPool, boardroom, pool2lps, "cronos", undefined, true, pool2lps[1]) -}; \ No newline at end of file diff --git a/projects/gdao.js b/projects/gdao.js deleted file mode 100644 index df31a6e9504..00000000000 --- a/projects/gdao.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens } = require('./helper/unwrapLPs'); -const { staking } = require('./helper/staking'); - -const liquidityMinesAddress = '0x4DaC3e07316D2A31baABb252D89663deE8F76f09'; -const loyaltyMineAddress = '0xda58927f4065f1d02a6ea850c2aac49d7362a643'; - -const stakedTokens = [ - ADDRESSES.ethereum.LINK, //link - ADDRESSES.ethereum.UNI, //uni - ADDRESSES.ethereum.AAVE, //aave - ADDRESSES.ethereum.WBTC, //wbtc - ADDRESSES.ethereum.WETH, //weth - ADDRESSES.ethereum.SNX, //snx - ADDRESSES.ethereum.USDC, //usdc - ADDRESSES.ethereum.YFI, //yfi -]; - -const GDAOLP = '0x4d184bf6f805ee839517164d301f0c4e5d25c374'; -const gdaoToken = '0x515d7E9D75E2b76DB60F8a051Cd890eBa23286Bc'; - -async function tvl(ts, block) { - const balances = {} - const tao = stakedTokens.map(t => [t, liquidityMinesAddress]) - return sumTokens(balances, tao, block) -} - - -module.exports = { - methodology: 'TVL counts tokens deposited in the Liquidity Mining program.', - ethereum: { - tvl, - staking: staking(loyaltyMineAddress, gdaoToken), - pool2: staking(loyaltyMineAddress, GDAOLP), - } -} diff --git a/projects/gdl/index.js b/projects/gdl/index.js deleted file mode 100644 index 6cb0f923c5d..00000000000 --- a/projects/gdl/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); - -// avax addresses below. -const GDL_USD_POOL = '0x3CE2B891071054ee10d4b5eD5a9446f9016F90d8'; -const USDT = '0xde3a24028580884448a5397872046a019649b084'; - -const GDL_DAI_POOL = '0x9D43f28C5Fce24D0c8B653E5c5859E0421Af7783'; -const DAI = '0xba7deebbfc5fa1100fb055a87773e1e99cd3507a'; - -const GDL_ETH_POOL = '0xed986f982269e0319F710EC270875dE2b2A443d2'; -const ETH = '0xf20d962a6c8f70c731bd838a3a388d7d48fa6e15'; - -const GDL_POOL = '0x34C8712Cc527a8E6834787Bd9e3AD4F2537B0f50'; -const GDL = '0xd606199557c8ab6f4cc70bd03facc96ca576f142'; - -module.exports = { - avax:{ - tvl: sumTokensExport({ tokensAndOwners: [ - [USDT, GDL_USD_POOL], - [DAI, GDL_DAI_POOL], - [ETH, GDL_ETH_POOL], - [GDL, GDL_POOL], - ]}), - }, -}; diff --git a/projects/gearbox/index.js b/projects/gearbox/index.js deleted file mode 100644 index 0d5bbf548cf..00000000000 --- a/projects/gearbox/index.js +++ /dev/null @@ -1,577 +0,0 @@ -/** - ** - ** - ** - ** This file has been generated from source code in https://github.com/Gearbox-protocol/defillama repo - ** Binary release: https://github.com/Gearbox-protocol/defillama/releases/tag/v1.6.5 - ** - ** - ** - **/ - - var ethers = require("ethers"); - var getLogs = require("../helper/cache/getLogs"); - - // src/adapter/constants.ts - var ADDRESS_PROVIDER_V300 = { - ethereum: "0x9ea7b04da02a5373317d745c1571c84aad03321d", - arbitrum: "0x7d04eCdb892Ae074f03B5D0aBA03796F90F3F2af", - optimism: "0x3761ca4BFAcFCFFc1B8034e69F19116dD6756726", - sonic: "0x4b27b296273B72d7c7bfee1ACE93DC081467C41B", - }; - - // src/adapter/pools/abi.ts - var poolAbis = { - getAddressOrRevert: - "function getAddressOrRevert(bytes32 key, uint256 _version) view returns (address result)", - getPools: "function getPools() view returns (address[])", - underlyingToken: "function underlyingToken() view returns (address)", - }; - - // src/adapter/pools/index.ts - async function getPools(block, api) { - const target = ADDRESS_PROVIDER_V300[api.chain]; - if (!target) { - return []; - } - const contractsRegisterAddr = await api.call({ - block, - abi: poolAbis["getAddressOrRevert"], - target, - params: [ - // cast format-bytes32-string "CONTRACTS_REGISTER" - "0x434f4e5452414354535f52454749535445520000000000000000000000000000", - 0, - ], - }); - let pools = await api.call({ - abi: poolAbis["getPools"], - target: contractsRegisterAddr, - block, - }); - pools = pools.filter( - (p) => p !== "0xB8cf3Ed326bB0E51454361Fb37E9E8df6DC5C286" - ); - const underlyings = await api.multiCall({ - abi: poolAbis["underlyingToken"], - calls: pools.map((target2) => ({ target: target2 })), - block, - }); - const balances = await api.multiCall({ - abi: "erc20:balanceOf", - calls: pools.map((p, i) => ({ target: underlyings[i], params: [p] })), - permitFailure: true, - }); - return balances.map((b, i) => ({ - addr: pools[i], - token: underlyings[i], - bal: b, - })); - } - - // src/adapter/v1/abi.ts - var v1Abis = { - getAddressOrRevert: - "function getAddressOrRevert(bytes32 key, uint256 _version) view returns (address result)", - getCreditManagers: "function getCreditManagers() view returns (address[])", - version: "function version() view returns (uint256)", - underlyingToken: "function underlyingToken() view returns (address)", - calcTotalValue: - "function calcTotalValue(address creditAccount) view returns (uint256 total)", - filtersV1: [ - "event CloseCreditAccount(address indexed owner, address indexed to, uint256 remainingFunds)", - "event OpenCreditAccount(address indexed sender, address indexed onBehalfOf, address indexed creditAccount, uint256 amount, uint256 borrowAmount, uint256 referralCode)", - "event RepayCreditAccount(address indexed owner, address indexed to)", - "event TransferAccount(address indexed oldOwner, address indexed newOwner)", - "event LiquidateCreditAccount(address indexed owner, address indexed liquidator, uint256 remainingFunds)", - ], - creditFilter: "function creditFilter() view returns (address addr)", - }; - - // src/adapter/v1/index.ts - async function getV1TVL(block, api) { - const creditManagers = await getCreditManagersV1(block, api); - if (!creditManagers[0]) return []; - const caValues = await Promise.all( - creditManagers.map((cm) => getV1CAs(cm.addr, block, api)) - ); - return creditManagers.map((cm, i) => ({ - addr: cm.addr, - token: cm.underlying, - bal: caValues[i], - })); - } - async function getCreditManagersV1(block, api) { - const contractsRegisterAddr = await api.call({ - block, - abi: v1Abis["getAddressOrRevert"], - target: ADDRESS_PROVIDER_V300[api.chain], - params: [ - // cast format-bytes32-string "CONTRACTS_REGISTER" - "0x434f4e5452414354535f52454749535445520000000000000000000000000000", - 0, - ], - }); - const creditManagers = await api.call({ - abi: v1Abis["getCreditManagers"], - target: contractsRegisterAddr, - block, - }); - const versions = await api.multiCall({ - abi: v1Abis["version"], - calls: creditManagers.map((target) => ({ target })), - block, - }); - const v1Managers = []; - for (let i = 0; i < creditManagers.length; i++) { - const addr = creditManagers[i]; - const version = versions[i]; - if (version === "1") { - v1Managers.push(addr); - } - } - const underlyings = await api.multiCall({ - abi: v1Abis["underlyingToken"], - calls: v1Managers.map((target) => ({ target })), - block, - }); - return v1Managers.map((addr, i) => ({ addr, underlying: underlyings[i] })); - } - async function getV1CAs(creditManager, block, api) { - if (creditManager === "0x4C6309fe2085EfE7A0Cfb426C16Ef3b41198cCE3") { - return "0"; - } - const eventsByDate = []; - const accounts = /* @__PURE__ */ new Set(); - const addToEvents = (e, address, operation) => { - eventsByDate.push({ - time: e.blockNumber * 1e5 + e.logIndex, - address, - operation, - }); - }; - const cf = await api.call({ - abi: v1Abis["creditFilter"], - target: creditManager, - block, - }); - const cm = new ethers.Contract(creditManager, v1Abis["filtersV1"]); - const topics = []; - cm.interface.forEachEvent((e) => topics.push(e.topicHash)); - const rawLogs = await getLogs.getLogs({ - target: creditManager, - fromBlock: 13854983, - toBlock: block, - api, - topics: [topics], - }); - const logs = rawLogs.map((log) => ({ - ...cm.interface.parseLog(log), - blockNumber: log.blockNumber, - logIndex: log.logIndex, - })); - logs.forEach((log) => { - switch (log.name) { - case "OpenCreditAccount": - addToEvents(log, log.args.onBehalfOf, "add"); - break; - case "CloseCreditAccount": - case "LiquidateCreditAccount": - case "RepayCreditAccount": - addToEvents(log, log.args.borrower, "delete"); - break; - case "TransferAccount": - addToEvents(log, log.args.oldOwner, "delete"); - addToEvents(log, log.args.newOwner, "add"); - break; - } - }); - eventsByDate - .sort((a, b) => { - return a.time - b.time; - }) - .forEach((e) => { - if (e.operation === "add") { - accounts.add(e.address); - } else { - accounts.delete(e.address); - } - }); - const openCAs = Array.from(accounts.values()).map( - (borrower) => - logs.find((log) => log.args?.onBehalfOf === borrower)?.args.creditAccount - ); - const totalValue = await api.multiCall({ - abi: v1Abis["calcTotalValue"], - target: cf, - calls: openCAs.filter( - (i) => i !== "0xaBBd655b3791175113c1f1146D3B369494A2b815" - ), - // filtered out address throwing error - block, - }); - return totalValue.reduce((a, c) => a + BigInt(c), BigInt(0)).toString(); - } - - // src/adapter/v2/abi.ts - var v2Abis = { - calcTotalValue: - "function calcTotalValue(address creditAccount) view returns (uint256 total)", - getAddressOrRevert: - "function getAddressOrRevert(bytes32 key, uint256 _version) view returns (address result)", - getCreditManagersV2List: - "function getCreditManagersV2List() view returns (tuple(address addr, string name, uint256 cfVersion, address creditFacade, address creditConfigurator, address underlying, address pool, uint256 totalDebt, uint256 totalDebtLimit, uint256 baseBorrowRate, uint256 minDebt, uint256 maxDebt, uint256 availableToBorrow, address[] collateralTokens, tuple(address targetContract, address adapter)[] adapters, uint256[] liquidationThresholds, bool isDegenMode, address degenNFT, uint256 forbiddenTokenMask, uint8 maxEnabledTokensLength, uint16 feeInterest, uint16 feeLiquidation, uint16 liquidationDiscount, uint16 feeLiquidationExpired, uint16 liquidationDiscountExpired, tuple(address token, uint16 rate, uint16 quotaIncreaseFee, uint96 totalQuoted, uint96 limit, bool isActive)[] quotas, tuple(address interestModel, uint256 version, uint16 U_1, uint16 U_2, uint16 R_base, uint16 R_slope1, uint16 R_slope2, uint16 R_slope3, bool isBorrowingMoreU2Forbidden) lirm, bool isPaused)[])", - creditFacade: "function creditFacade() view returns (address addr)", - filtersV2: [ - "event OpenCreditAccount(address indexed onBehalfOf, address indexed creditAccount, uint256 borrowAmount, uint16 referralCode)", - "event CloseCreditAccount(address indexed borrower, address indexed to)", - "event LiquidateCreditAccount(address indexed borrower, address indexed liquidator, address indexed to, uint256 remainingFunds)", - "event TransferAccount(address indexed oldOwner, address indexed newOwner)", - "event LiquidateExpiredCreditAccount(address indexed borrower, address indexed liquidator, address indexed to, uint256 remainingFunds)", - ], - }; - - // src/adapter/v2/index.ts - async function getV2TVL(block, api) { - const creditManagers = await getCreditManagersV210(block, api); - if (!creditManagers[0]) return []; - const caValues = await Promise.all( - creditManagers.map((cm) => getV2CAs(cm.addr, block, api)) - ); - return creditManagers.map((cm, i) => ({ - addr: cm.addr, - token: cm.underlying, - bal: caValues[i], - })); - } - async function getCreditManagersV210(block, api) { - const dataCompressor210 = await api.call({ - abi: v2Abis["getAddressOrRevert"], - target: ADDRESS_PROVIDER_V300[api.chain], - params: [ - // cast format-bytes32-string "DATA_COMPRESSOR" - "0x444154415f434f4d50524553534f520000000000000000000000000000000000", - 210, - ], - block, - }); - return api.call({ - // IDataCompressorV2_10__factory.createInterface().getFunction("getCreditManagersV2List").format(ethers.utils.FormatTypes.full) - abi: v2Abis["getCreditManagersV2List"], - target: dataCompressor210, - block, - }); - } - async function getV2CAs(creditManager, block, api) { - const fromBlock = 13854983; - const eventsByDate = []; - const accounts = /* @__PURE__ */ new Set(); - const creditFacade = await api.call({ - abi: v2Abis["creditFacade"], - target: creditManager, - block, - }); - const ccLogs = await getLogs.getLogs({ - target: creditManager, - fromBlock, - toBlock: block, - api, - onlyArgs: true, - eventAbi: "event NewConfigurator(address indexed newConfigurator)", - }); - const ccAddrs = ccLogs.map((l) => l[0]); - const cfAddrs = []; - for (let cca of ccAddrs) { - const cfLogs = await getLogs.getLogs({ - target: cca, - fromBlock, - api, - onlyArgs: true, - eventAbi: "event CreditFacadeUpgraded(address indexed newCreditFacade)", - }); - const cfs = cfLogs.map((l) => l[0]); - cfAddrs.push(...cfs); - } - const addToEvents = (e, address, operation) => { - eventsByDate.push({ - time: e.blockNumber * 1e5 + e.logIndex, - address, - operation, - ca: e.args.creditAccount ? e.args.creditAccount : null, - cf: creditFacade, - }); - }; - const logs = []; - for (let cfAddr of cfAddrs) { - const cf = new ethers.Contract(cfAddr, v2Abis["filtersV2"]); - const topics = []; - cf.interface.forEachEvent((e) => topics.push(e.topicHash)); - const rawLogs = await getLogs.getLogs({ - target: cfAddr, - fromBlock, - api, - topics: [topics], - }); - const cfLogs = rawLogs.map((log) => ({ - ...cf.interface.parseLog(log), - blockNumber: log.blockNumber, - logIndex: log.logIndex, - })); - logs.push(...cfLogs); - } - logs.forEach((log) => { - switch (log.name) { - case "OpenCreditAccount": - addToEvents(log, log.args.onBehalfOf, "add"); - break; - case "CloseCreditAccount": - case "LiquidateCreditAccount": - case "LiquidateExpiredCreditAccount": - addToEvents(log, log.args.borrower, "delete"); - break; - case "TransferAccount": - addToEvents(log, log.args.oldOwner, "delete"); - addToEvents(log, log.args.newOwner, "add"); - break; - } - }); - eventsByDate - .sort((a, b) => { - return a.time - b.time; - }) - .forEach((e) => { - if (e.operation === "add") { - accounts.add(e.address); - } else { - accounts.delete(e.address); - } - }); - const openCAs = Array.from(accounts.values()).map( - (borrower) => - logs - .sort((a, b) => b.blockNumber - a.blockNumber) - .find((log) => log.args?.onBehalfOf === borrower).args.creditAccount - ); - const totalValue = await api.multiCall({ - abi: v2Abis["calcTotalValue"], - target: creditFacade, - calls: openCAs, - }); - return totalValue[0] - ? totalValue.reduce((a, c) => a + BigInt(c), BigInt(0)).toString() - : "0"; - } - - // src/adapter/v31/constants.ts - var LEGACY_MARKET_CONFIGURATORS = { - ethereum: [ - "0x354fe9f450F60b8547f88BE042E4A45b46128a06", - // Chaos Labs - "0x4d427D418342d8CE89a7634c3a402851978B680A", - // K3 - ], - arbitrum: [ - "0x01023850b360b88de0d0f84015bbba1eba57fe7e", - // "Chaos Labs", - ], - optimism: [ - "0x2a15969CE5320868eb609680751cF8896DD92De5", - // "Chaos Labs", - ], - sonic: [ - "0x8FFDd1F1433674516f83645a768E8900A2A5D076", - // "Chaos Labs", - ], - }; - var DEFILLAMA_COMPRESSOR_V310 = "0x81cb9eA2d59414Ab13ec0567EFB09767Ddbe897a"; - - // src/adapter/v31/abi.ts - var iAddressProviderAbi = { - getAddressOrRevert: - "function getAddressOrRevert(bytes32 key, uint256 _version) view returns (address result)", - }; - var iDefillamaCompressorAbi = { - getLegacyCreditManagers: - "function getCreditManagers(address[] memory configurators) external view returns (address[] memory creditManagers)", - getCreditManagers: - "function getCreditManagers() external view returns (address[] memory creditManagers)", - getLegacyPools: - "function getPools(address[] memory configurators) external view returns (tuple(address pool, address underlying, uint256 availableLiquidity, uint256 totalBorrowed)[] memory pools)", - getPools: - "function getPools() external view returns (tuple(address pool, address underlying, uint256 availableLiquidity, uint256 totalBorrowed)[] memory pools)", - getCreditAccounts: - "function getCreditAccounts(address creditManager, uint256 offset, uint256 limit) external view returns (tuple(address creditAccount, uint256 debt, tuple(address token, uint256 balance)[] tokens)[] memory data)", - }; - var abi_default = { - ...iAddressProviderAbi, - ...iDefillamaCompressorAbi, - }; - - // src/adapter/v31/utils.ts - function mergePools(a, b) { - const pools = a.map((p) => p.addr.toLowerCase()); - return [...a, ...b.filter((p) => !pools.includes(p.addr.toLowerCase()))]; - } - function accountToTokenAndOwner(account) { - return account.tokens - .filter((t) => BigInt(t.balance) > 1n) - .map((t) => ({ - addr: account.creditAccount.toLowerCase(), - token: t.token.toLowerCase(), - bal: t.balance, - })); - } - - // src/adapter/v31/implementation.ts - async function getV310PoolsBorrowed(block, api) { - const pools = await loadPools(block, api); - return pools.map((pool) => ({ - addr: pool.pool, - bal: pool.totalBorrowed, - token: pool.underlying, - })); - } - async function getV310PoolsAvailable(block, api) { - const pools = await loadPools(block, api); - return pools.map((pool) => ({ - addr: pool.pool, - bal: pool.availableLiquidity, - token: pool.underlying, - })); - } - async function getV310CreditAccounts(block, api) { - const cms = await loadCreditManagers(block, api); - const allAccounts = []; - for (const cm of cms) { - let accounts = await loadCreditAccounts(block, api, cm); - accounts = accounts.filter((a) => Number(a.debt) !== 0); - allAccounts.push(...accounts); - } - return allAccounts.flatMap(accountToTokenAndOwner); - } - async function loadPools(block, api) { - const legacyMcs = LEGACY_MARKET_CONFIGURATORS[api.chain]; - const promises = [ - api.call({ - abi: abi_default.getPools, - target: DEFILLAMA_COMPRESSOR_V310, - params: [], - block, - }), - ]; - if (legacyMcs?.length) { - promises.push( - api.call({ - abi: abi_default.getLegacyPools, - target: DEFILLAMA_COMPRESSOR_V310, - params: [legacyMcs], - block, - }) - ); - } - const allPools = await Promise.all(promises); - return allPools.flat(); - } - async function loadCreditManagers(block, api) { - const legacyMcs = LEGACY_MARKET_CONFIGURATORS[api.chain]; - const promises = [ - api.call({ - abi: abi_default.getCreditManagers, - target: DEFILLAMA_COMPRESSOR_V310, - params: [], - block, - }), - ]; - if (legacyMcs?.length) { - promises.push( - api.call({ - abi: abi_default.getLegacyCreditManagers, - target: DEFILLAMA_COMPRESSOR_V310, - params: [legacyMcs], - block, - }) - ); - } - const allCMs = await Promise.all(promises); - return allCMs.flat(); - } - async function loadCreditAccounts(block, api, creditManager, limit = 1e3) { - let offset = 0; - let creditAccounts = []; - const result = []; - do { - creditAccounts = await loadCreditAccountsPage( - block, - api, - creditManager, - offset, - limit - ); - result.push(...creditAccounts); - offset += limit; - } while (creditAccounts.length === limit); - return result; - } - async function loadCreditAccountsPage( - block, - api, - creditManager, - offset, - limit - ) { - const creditAccounts = await api.call({ - abi: abi_default.getCreditAccounts, - target: DEFILLAMA_COMPRESSOR_V310, - params: [creditManager, offset, limit], - block, - }); - return creditAccounts; - } - - // src/adapter/index.ts - async function tvl(_timestamp, _block, _, { api }) { - const allBalances = []; - const block = await api.getBlock(); - const legacyPools = await getPools(block, api); - const poolsV310 = await getV310PoolsAvailable(block, api); - const pools = mergePools(legacyPools, poolsV310); - allBalances.push(...pools); - if (api.chain === "ethereum") { - const v1Balances = await getV1TVL(block, api); - const v2Balances = await getV2TVL(block, api); - allBalances.push(...v1Balances, ...v2Balances); - } - const v310Balances = await getV310CreditAccounts(block, api); - allBalances.push(...v310Balances); - for (const i of allBalances) { - api.add(i.token, i.bal); - } - } - async function borrowed(_timestamp, _block, _, { api }) { - const block = await api.getBlock(); - const borrowed2 = await getV310PoolsBorrowed(block, api); - for (const { token, bal } of borrowed2) { - api.add(token, bal); - } - } - var adapter_default = { - ...Object.fromEntries( - [ - "ethereum", - "arbitrum", - "optimism", - "sonic", - "bsc", - "hemi", - "lisk", - "etlk", - "plasma", - ].map((n) => [n, { tvl, borrowed }]) - ), - hallmarks: [[1666569600, "LM begins"]], - methodology: `Retrieves the tokens in each Gearbox pool & value of all Credit Accounts (V1/V2/V3) denominated in the underlying token.`, - misrepresentedTokens: true, - }; - - module.exports = adapter_default; - \ No newline at end of file diff --git a/projects/geist/index.js b/projects/geist/index.js deleted file mode 100644 index 2f608f91b66..00000000000 --- a/projects/geist/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { aaveExports } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -const stakingContract = "0x49c93a95dbcc9A6A4D8f77E59c038ce5020e82f8"; -const GEIST = "0xd8321aa83fb0a4ecd6348d4577431310a6e0814d"; - -const stakingContractPool2 = "0xE40b7FA6F5F7FB0Dc7d56f433814227AAaE020B5"; -const GEIST_WFTM_spLP = "0x668AE94D0870230AC007a01B471D02b2c94DDcB9"; - -module.exports = { - deadFrom: '2023-10-18', - methodology: methodologies.lendingMarket, - fantom: { - ...aaveExports("", "0x4CF8E50A5ac16731FA2D8D9591E195A285eCaA82",), - staking: staking(stakingContract, GEIST), - pool2: pool2(stakingContractPool2, GEIST_WFTM_spLP), - }, - hallmarks: [ - [1665090175, "BSC Bridge hacker deposits coins"] - ], -}; - -module.exports.fantom.borrowed = () => ({}) // bad debt diff --git a/projects/gemini/index.js b/projects/gemini/index.js deleted file mode 100644 index ab6f4cc3931..00000000000 --- a/projects/gemini/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { cexExports } = require('../helper/cex') - -const config = { - bitcoin: { - owners: [ - "bc1quq29mutxkgxmjfdr7ayj3zd9ad0ld5mrhh89l2", - "3Kzh9qAqVWQhEsfQz7zEQL1EuSx5tyNLNS", - "3MgEAFWu1HKSnZ5ZsC8qf61ZW18xrP5pgd", - "38UmuUqPCrFmQo4khkomQwZ4VbY2nZMJ67" - ] - }, - ethereum: { - owners: [ - "0xF51710015536957A01f32558402902A2D9c35d82", - "0xd24400ae8BfEBb18cA49Be86258a3C749cf46853", - "0x07Ee55aA48Bb72DcC6E9D78256648910De513eca", - "0xAFCD96e580138CFa2332C632E66308eACD45C5dA", - "0x61EDCDf5bb737ADffE5043706e7C5bb1f1a56eEA" - ], - }, -} - -module.exports = { - ...cexExports(config), methodology: 'https://www.gemini.com/trust-center/' -} diff --git a/projects/gemkeeper.js b/projects/gemkeeper.js deleted file mode 100644 index 2e5f1b7d9fb..00000000000 --- a/projects/gemkeeper.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -const { staking, stakingPricedLP } = require("./helper/staking.js"); -const xBlingContract = "0x25070fA2244b41EA39B964DBFA9E0ab70A886e72" -const BlingAddr = "0x72Ad551af3c884d02e864B182aD9A34EE414C36C" -const wRoseBlingLP = "0xb29553faf847ba5b79b6ae13fa82d0b216faf626" -module.exports = { - oasis: { - tvl: getUniTVL({ factory: '0xa7200334f652425A12BF2f7e4F0F5409CCA4d963', useDefaultCoreAssets: true }), - staking: stakingPricedLP(xBlingContract,BlingAddr,"oasis",wRoseBlingLP,"oasis-network") - } -}; \ No newline at end of file diff --git a/projects/gemmine/index.js b/projects/gemmine/index.js deleted file mode 100644 index 2138d1259dc..00000000000 --- a/projects/gemmine/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0xf3C01F6D7ec85682FCAAfE438B8C6A3a54C7164C', - nativeToken: '0x1e2a499fAefb88B2d085d7036f3f7895542b09De' -}) \ No newline at end of file diff --git a/projects/gemswap/index.js b/projects/gemswap/index.js deleted file mode 100644 index 49c8d251942..00000000000 --- a/projects/gemswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - hallmarks: [ - [1681430400,"Rug Pull"] - ], - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ - factory: '0x065c8703132F2A38Be3d2dbF7Be6BE455930560c', - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/genesis-dao/index.js b/projects/genesis-dao/index.js deleted file mode 100644 index 060d5973b47..00000000000 --- a/projects/genesis-dao/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const genAddress = '0x99999999999997fceB5549c58aB66dF52385ca4d'; -const sGenAddress = '0x8888888888888e9b808caA0a8BB7e2268fd17351'; - -async function stakedGen(api) { - const sGenSupply = await api.call({ - abi: 'erc20:totalSupply', - target: sGenAddress - }); - - api.add(genAddress, sGenSupply) -} - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: stakedGen - } -}; diff --git a/projects/genesis-lrt/index.js b/projects/genesis-lrt/index.js deleted file mode 100644 index b7ab940d5b2..00000000000 --- a/projects/genesis-lrt/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const staked = await api.call({ abi: 'uint256:totalAssets', target: '0xf073bAC22DAb7FaF4a3Dd6c6189a70D54110525C' }) - api.add(ADDRESSES.null, staked) -} - -module.exports = { - hallmarks: [ - [1714953600, "Genesis Merges with InceptionLRT"] - ], - doublecounted: true, - ethereum: { tvl: tvl, } -} diff --git a/projects/genesis/abi.json b/projects/genesis/abi.json deleted file mode 100644 index f163c37aeda..00000000000 --- a/projects/genesis/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accGenesisPerShare, uint16 depositFeeBP)" -} \ No newline at end of file diff --git a/projects/genesis/index.js b/projects/genesis/index.js deleted file mode 100644 index 1c5d5153ca4..00000000000 --- a/projects/genesis/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const {masterChefExports} = require('../helper/masterchef') - -const GENESIS = "0x2638bE7B0d033A59cbcA9139B470503F0a711379" -module.exports={ - deadFrom: 1648765747, - misrepresentedTokens: true, - methodology: "Tokens in masterchef", - ...masterChefExports("0xbf0929439Ea073d55DE8bd0F6e0293Ec30e42Df8", "cronos", GENESIS) -} diff --git a/projects/genesys/index.js b/projects/genesys/index.js deleted file mode 100644 index 5d1e00de67d..00000000000 --- a/projects/genesys/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x18cD511b4ad613308Bd0C795e85Fbd8BE1a0aF94', - nativeToken: '0xf8b234a1ce59991006930de8b0525f9013982746' -}) \ No newline at end of file diff --git a/projects/genius-yield/index.js b/projects/genius-yield/index.js deleted file mode 100644 index b0b4cf95a4f..00000000000 --- a/projects/genius-yield/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokensExport, } = require('../helper/chain/cardano') - -const gens = 'dda5fdb1002f7389b33e036b6afee82a8189becb6cba852e8b79b4fb0014df1047454e53' -const nmkr = '5dac8536653edc12f6f5e1045d8164b9f59998d3bdc300fc928434894e4d4b52' -const ntx = 'edfd7a1d77bcb8b884c474bdc92a16002d1fb720e454fa6e993444794e5458' -const emp = '6c8642400e8437f737eb86df0fc8a8437c760f48592b1ba8f5767e81456d706f7761' -const gensx = 'fbae99b8679369079a7f6f0da14a2cf1c2d6bfd3afdf3a96a64ab67a0014df1047454e5358' - -const staking = 'addr1w8r99sv75y9tqfdzkzyqdqhedgnef47w4x7y0qnyts8pznq87e4wh' - -const orders = [ - 'addr_vkh1ahllvc7n0lzljafmcs3zurdzhlsg4fydkzph6tpjnt0tx0asedu', // v1.0 - 'addr_vkh14rtl7h85cytjwq5gxuhe4j8peedhtzhptfu9r3qkvxjgcz7xfs0' // v1.1 -] - -module.exports = { - timetravel: false, - cardano: { - staking: sumTokensExport({ owner: staking, tokens: [gens, nmkr, ntx, emp, gensx]}), - tvl: (sumTokensExport({ owners : orders })) - } -}; diff --git a/projects/genius/genius-abi.json b/projects/genius/genius-abi.json deleted file mode 100644 index 164f70954b6..00000000000 --- a/projects/genius/genius-abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "basicLockedSupply": "function basicLockedSupply() view returns (uint256)", - "advLockedSupply": "function advLockedSupply() view returns (uint256)" -} diff --git a/projects/genius/genius-stability-abi.json b/projects/genius/genius-stability-abi.json deleted file mode 100644 index 40c117a97b7..00000000000 --- a/projects/genius/genius-stability-abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalSettledGenitos": "function totalSettledGenitos() view returns (uint256)" -} diff --git a/projects/genius/index.js b/projects/genius/index.js deleted file mode 100644 index d9ae1ac7393..00000000000 --- a/projects/genius/index.js +++ /dev/null @@ -1,108 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -/* Genius staking operates on two models: -* - Direct staking with GENI token. -* - Policy: Basic (basicLockedMinersSupply()) -* Lower APR, no penalties for early or late end staking. -* - Policy: Advanced (advLockedMinersSupply()) -* Higher APR, penalties for early or late end staking. -* - Debt based staking with deposited collateral -* Collateral deposits enables GENI borrow. -* GENI is locked back in the pool when the collateral debt is settled -* Locked GENI are waiting for collateral to be settled for it. -* While it's waiting it is generating yield. -* -* `Staking` and `mining` are used interchangeably in Genius -* -* Genius TVL is the sum of all locked supported collateral in the debt pool -* The list of supported collateral is provided. -* -* */ -const sdk = require("@defillama/sdk"); -const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') - -const geniusAbi = require("./genius-abi.json"); -const stabilityAbi = require("./genius-stability-abi.json"); - -/* Genius staking contract*/ -const GENIUS_CONTRACT = "0x444444444444C1a66F394025Ac839A535246FCc8"; -/* Genius stability pool / debt contract*/ -const STABILITY_POOL = "0xDCA692d433Fe291ef72c84652Af2fe04DA4B4444"; - -/* Native currencies and ERC-20 tokens approved for collateral*/ -const STABILITY_POOL_COLLATERAL_ADDRESSES = { - "bsc": { - "BUSD": ADDRESSES.bsc.BUSD, - "BNB": nullAddress, - }, - "ethereum": { - "DAI": ADDRESSES.ethereum.DAI, - "ETH": nullAddress, - }, - "avax": { - "USDC": ADDRESSES.avax.USDC, - "AVAX": nullAddress, - }, - "polygon": { - "DAI": ADDRESSES.polygon.DAI, - "MATIC": nullAddress, - }, - "pulse": { - "DAI": ADDRESSES.pulse.DAI, - "PLS": nullAddress - } -}; - -async function tvl(api) { - return sumTokens2({ api, owner: STABILITY_POOL, tokens: Object.values(STABILITY_POOL_COLLATERAL_ADDRESSES[api.chain])}) -} - -async function staking(api) { - // return sumTokens2({ api, owner: STABILITY_POOL, tokens: [GENIUS_CONTRACT]}) - const balances = {}; - /* Collect Basic miner locked */ - const basicLockedMinersSupply = await api.call({ - target: GENIUS_CONTRACT, - abi: geniusAbi.basicLockedSupply - }); - /* Collect Advanced miner locked */ - const advLockedMinersSupply = await api.call({ - target: GENIUS_CONTRACT, - abi: geniusAbi.advLockedSupply - }); - /* Collect settled GENI in stability pool (locked waiting for collateral return) */ - const totalSettledGenitos = await api.call({ - target: STABILITY_POOL, - abi: stabilityAbi.totalSettledGenitos - }); - sdk.util.sumSingleBalance(balances, GENIUS_CONTRACT, basicLockedMinersSupply, api.chain); - sdk.util.sumSingleBalance(balances, GENIUS_CONTRACT, advLockedMinersSupply, api.chain); - sdk.util.sumSingleBalance(balances, GENIUS_CONTRACT, totalSettledGenitos, api.chain); - return balances; -} - -module.exports = { - methodology: -`Staking: counts the number of GENI tokens locked in Basic and Advanced miners per chain. -TVL: counts total number of value locked of all collateral tokens and native in the debt pool per chain. -`, - ethereum: { - staking, - tvl - }, - bsc: { - staking, - tvl - }, - polygon: { - staking, - tvl - }, - avax: { - staking, - tvl - }, - pulse: { - staking, - tvl - }, -}; diff --git a/projects/genshiro/api.js b/projects/genshiro/api.js deleted file mode 100644 index ac573fa4966..00000000000 --- a/projects/genshiro/api.js +++ /dev/null @@ -1,287 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); -const BN = require("bn.js"); - -const types = { - AccountInfo: { - nonce: "Index", - consumers: "RefCount", - providers: "RefCount", - }, - Address: "AccountId", - Asset: { - 0: "AssetIdInnerType", - }, - AssetData: { - id: "Asset", - lot: "FixedU128", - price_step: "FixedU128", - maker_fee: "FixedU128", - taker_fee: "FixedU128", - multi_asset: "Option", - multi_location: "Option", - debt_weight: "DebtWeightType", - buyout_priority: "u64", - asset_type: "AssetType", - is_dex_enabled: "bool", - }, - AssetId: "Asset", - AssetIdInnerType: "u64", - AssetMetrics: { - period_start: "Duration", - period_end: "Duration", - returns: "Vec", - volatility: "FixedNumber", - correlations: "Vec<(Asset, FixedNumber)>", - }, - AssetName: "Vec", - AssetType: { - _enum: { - Native: null, - Physical: null, - Synthetic: null, - Lp: "PoolId", - }, - }, - Balance: "u64", - BalanceOf: "Balance", - BalancesAggregate: { - total_issuance: "Balance", - total_debt: "Balance", - }, - BestPrice: { - ask: "Option", - bid: "Option", - }, - BlockNumber: "u64", - CapVec: { - head_index: "u32", - len_cap: "u32", - items: "Vec", - }, - ChainId: "u8", - ChunkKey: "u64", - Currency: { - _enum: ["UNKNOWN", "Usd", "Eq", "Eth", "Btc", "Eos", "Dot", "Crv"], - }, - DataPoint: { - price: "u64", - account_id: "AccountId", - block_number: "BlockNumber", - timestamp: "u64", - }, - DebtWeightType: "i128", - DebtWeightTypeInner: "i128", - DepositNonce: "u64", - Duration: { - secs: "u64", - nanos: "u32", - }, - FinancialMetrics: { - period_start: "Duration", - period_end: "Duration", - assets: "Vec", - mean_returns: "Vec", - volatilities: "Vec", - correlations: "Vec", - covariances: "Vec", - }, - FixedI64: "i64", - FixedNumber: "u128", - FixedU128: "u128", - Keys: "SessionKeys3", - LookupSource: "AccountId", - MarginState: { - _enum: { - Good: null, - SubGood: null, - MaintenanceStart: "u64", - MaintenanceIsGoing: "u64", - MaintenanceTimeOver: "u64", - MaintenanceEnd: null, - SubCritical: null, - }, - }, - Number: "FixedU128", - OperationRequest: { - account: "AccountId", - authority_index: "AuthIndex", - validators_len: "u32", - block_num: "BlockNumber", - }, - OperationRequestDexCorridor: { - asset: "Asset", - order_id: "OrderId", - price: "FixedI64", - authority_index: "AuthIndex", - validators_len: "u32", - block_num: "BlockNumber", - }, - OperationRequestDexDeleteOrder: { - asset: "Asset", - order_id: "OrderId", - price: "FixedI64", - who: "AccountId", - buyout: "Option", - authority_index: "AuthIndex", - validators_len: "u32", - block_num: "BlockNumber", - }, - OperationRequestLiqFm: { - authority_index: "AuthIndex", - validators_len: "u32", - block_num: "BlockNumber", - }, - Order: { - order_id: "OrderId", - account_id: "AccountId", - side: "OrderSide", - price: "FixedI64", - amount: "FixedU128", - created_at: "u64", - expiration_time: "u64", - }, - OrderType: { - _enum: { - Limit: "FixedI64", - Market: null, - }, - }, - OrderId: "u64", - OrderSide: { - _enum: ["Buy", "Sell"], - }, - PoolId: "u32", - PoolInfo: { - owner: "AccountId", - pool_asset: "AssetId", - assets: "Vec", - amplification: "Number", - fee: "Permill", - admin_fee: "Permill", - balances: "Vec", - total_balances: "Vec", - }, - PoolTokenIndex: "u32", - PortfolioMetrics: { - period_start: "Duration", - period_end: "Duration", - z_score: "u32", - volatility: "FixedNumber", - value_at_risk: "FixedNumber", - }, - Price: "u128", - PriceLog: { - latest_timestamp: "Duration", - prices: "CapVec", - }, - PricePayload: { - public: "[u8; 33]", - asset: "Asset", - price: "FixedI64", - block_number: "BlockNumber", - }, - PricePeriod: { - _enum: ["Min", "TenMin", "Hour", "FourHour", "Day"], - }, - PricePoint: { - block_number: "BlockNumber", - timestamp: "u64", - last_fin_recalc_timestamp: "Timestamp", - price: "u64", - data_points: "Vec", - }, - PriceUpdate: { - period_start: "Duration", - time: "Duration", - price: "FixedNumber", - }, - ProposalStatus: { - _enum: ["Initiated", "Approved", "Rejected"], - }, - ProposalVotes: { - votes_for: "Vec", - votes_against: "Vec", - status: "ProposalStatus", - expiry: "BlockNumber", - }, - ResourceId: "[u8; 32]", - SignedBalance: { - _enum: { - Positive: "Balance", - Negative: "Balance", - }, - }, - SubAccType: { - _enum: ["Bailsman", "Borrower", "Lender"], - }, - Timestamp: "u64", - TotalAggregates: { - collateral: "Balance", - debt: "Balance", - }, - TransferReason: { - _enum: [ - "Common", - "InterestFee", - "MarginCall", - "LiquidityFarming", - "BailsmenRedistribution", - "TreasuryEqBuyout", - "TreasuryBuyEq", - "Subaccount", - "Lock", - "Unlock", - "Claim", - "CurveFeeWithdraw", - ], - }, - UserGroup: { - _enum: ["Unknown", "Balances", "Bailsmen", "Borrowers", "Lenders"], - }, - UnsignedPriorityPair: "(u64, u64)", - VestingInfo: { - locked: "Balance", - perBlock: "Balance", - startingBlock: "BlockNumber", - }, -}; - -const ASSETS = [ - { token: "ethereum", code: "6648936" }, - { token: "polkadot", code: "6582132" }, - { token: "curve-dao-token", code: "6517366" }, - { token: "eos", code: "6647667" }, - //{ token: "genshiro", code: "1734700659" }, - { token: "dai", code: "6578537" }, - { token: "tether", code: "1970496628" }, - { token: "binance-usd", code: "1651864420" }, - { token: "usd-coin", code: "1970496611" }, - { token: "binancecoin", code: "6450786" }, - { token: "wrapped-bitcoin", code: "2002941027" }, -]; - -const PRECISION = new BN(1_000_000_000); - -async function tvl() { - const provider = new WsProvider("wss://node5.genshiro.io"); - const api = await ApiPromise.create({ provider, types }); - - const queries = ASSETS.map(({ code }) => { - return [api.query.eqAggregates.totalUserGroups, ["Balances", { 0: code }]]; - }); - - const balances = await api.queryMulti(queries); - - const result = ASSETS.reduce((acc, { token }, i) => { - return { - ...acc, - [token]: new BN(balances[i].collateral).div(PRECISION).toNumber(), - }; - }, {}); - - return result; -} - -module.exports = { - genshiro: { tvl }, -}; diff --git a/projects/genshiro/index.js b/projects/genshiro/index.js deleted file mode 100644 index e220933f9c7..00000000000 --- a/projects/genshiro/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - // ...getExports("genshiro", ['genshiro']), - genshiro: { - tvl: async () => ({}), - }, - deadFrom: '2023-05-26', -} \ No newline at end of file diff --git a/projects/gensokishi/index.js b/projects/gensokishi/index.js deleted file mode 100644 index e0c76178d79..00000000000 --- a/projects/gensokishi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { stakings } = require("../helper/staking") - -module.exports={ - polygon:{ - staking: stakings([ - "0x1b2430aeedececafb52a3ff8cc8321e9426fc82c", "0x8B55fFfcF528D89fDEfEEac670d24Ae384ca083b" - ], "0xa3c322ad15218fbfaed26ba7f616249f7705d945", "polygon"), - tvl:()=>({}) - } -} \ No newline at end of file diff --git a/projects/geode/index.js b/projects/geode/index.js deleted file mode 100644 index 75656dbe8d9..00000000000 --- a/projects/geode/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const PORTAL = { - address: "0x4fe8C658f268842445Ae8f95D4D6D8Cfd356a8C8" -}; - -async function avax(api) { - - const planetType = 5; - const planetIds = await api.call({ target: PORTAL.address, params: planetType, abi: 'function getIdsByType(uint256 _type) view returns (uint256[])', }) - - - // Find hosted derivative total Supplies, multiply with pricePerShare - const supplies = await api.multiCall({ calls: planetIds, target: "0x6026a85e11bd895c934af02647e8c7b4ea2d9808", abi: "function totalSupply(uint256 id) view returns (uint256)", }) - const prices = await api.multiCall({ calls: planetIds, target: "0x6026a85e11bd895c934af02647e8c7b4ea2d9808", abi: "function pricePerShare(uint256 _id) view returns (uint256)", }) - - supplies.forEach((supply, i) => api.addGasToken(supply * prices[i] / 1e18)) - - // Find DWP addresses and count only Avax(index:0) balances, excluding gAVAX(index:1) balances - const dwpAddresses = await api.multiCall({ calls: planetIds, target: PORTAL.address, abi: 'function planetWithdrawalPool(uint256 _id) view returns (address)', }) - const dwpOwnedIdle = await api.multiCall({ calls: dwpAddresses.map((dwpOfId) => ({ target: dwpOfId, params: 0, })), abi: 'function getTokenBalance(uint8 index) view returns (uint256)', }) - api.addGasToken(dwpOwnedIdle) -} - -module.exports = { - methodology: - "All Staking Derivatives are included to the TVL with relative underlying price. Also counted the Avax within the Dynamic Withdrawal Pools.", - doublecounted: true, - hallmarks: [[1658869201, "Launch of yyAVAX"]], - avax: { - tvl: avax, - }, -}; diff --git a/projects/get-protocol/index.js b/projects/get-protocol/index.js deleted file mode 100644 index 1c1249b487d..00000000000 --- a/projects/get-protocol/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking"); - -const stakingContractEthereum = "0x3e49e9c890cd5b015a18ed76e7a4093f569f1a04"; -const getTokenAddressEthereum = "0x8a854288a5976036a725879164ca3e91d30c6a1b"; -const stakingContractPolygon = "0x3e49e9c890cd5b015a18ed76e7a4093f569f1a04"; -const getTokenAddressPolygon = "0xdb725f82818De83e99F1dAc22A9b5B51d3d04DD4"; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(stakingContractEthereum, getTokenAddressEthereum), - }, - polygon: { - tvl: () => ({}), - staking: staking(stakingContractPolygon, getTokenAddressPolygon), - }, -}; diff --git a/projects/gfs/index.js b/projects/gfs/index.js deleted file mode 100644 index 0bab7a8c907..00000000000 --- a/projects/gfs/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumUnknownTokens } = require("./../helper/unknownTokens"); - -function pool2(api) { - return sumUnknownTokens({ api, useDefaultCoreAssets: true, tokensAndOwners:[["0x19f3cb6a4452532793d1605c8736d4a94f48752c", "0x1ba725d2ba56482f11fee3642f1c739d25018e4d",]] }) -} - -module.exports = { - iotex: { - tvl: () => ({}), - pool2, - }, -} \ No newline at end of file diff --git a/projects/gft/index.js b/projects/gft/index.js deleted file mode 100644 index 0fcae3b6961..00000000000 --- a/projects/gft/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumUnknownTokens } = require("./../helper/unknownTokens"); - -const gfsBonusStackPool = "0x4346a618c2e3fd4cfa821e91216eaf927bd46ddd"; -const gfs = "0x5d0f4ca481fd725c9bc6b415c0ce5b3c3bd726cf"; - -function pool2(api) { - return sumUnknownTokens({ api, useDefaultCoreAssets: true, tokensAndOwners:[ - ["0x53bdd401a871bd0f84e94619edcc0c24489d4aab", "0xde5914a97cc5066751624f053d719f67a4d69383",], - [gfs, gfsBonusStackPool,], - ] }) -} - -module.exports = { - iotex: { - tvl: () => ({}), - pool2, - }, -}; \ No newline at end of file diff --git a/projects/ggpVault/index.js b/projects/ggpVault/index.js deleted file mode 100644 index e5f37a28eec..00000000000 --- a/projects/ggpVault/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - avax: { - tvl: sumERC4626VaultsExport({ vaults: ['0xdF34022e8a280fc79499cA560439Bb6f9797EbD8', '0x36213ca1483869c5616be738Bf8da7C9B34Ace8d'], isOG4626: true }) - }, -}; diff --git a/projects/ghast/index.js b/projects/ghast/index.js deleted file mode 100644 index a4d45c7d0d5..00000000000 --- a/projects/ghast/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { - lendingPools: { - BTC: '0x711b36a726486bd910a819eb7930e60a1afcac7b', - USDC: '0xb8bc618e49201B68C1D594aA458aeBFF22B03c35', - WETH: '0x5d99d1d2e9f3a5f3d8f5dd5ce533b3635590c384', - } - } -} - -Object.keys(config).forEach(chain => { - const { lendingPools } = config[chain] - const pools = Object.values(lendingPools) - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:TOKEN', calls: pools}) - const gmdTokens = await api.multiCall({ abi: 'address:gmdTOKEN', calls: pools}) - const ownerTokens = pools.map((v, i) => [[tokens[i],gmdTokens[i],], v]) - return sumTokens2({ api, ownerTokens, }) - }, - /* borrowed: async (api) => { - const tokens = await api.multiCall({ abi: 'address:gmdTOKEN', calls: pools}) - const bals = await api.multiCall({ abi: 'uint256:totalBorrows', calls: pools}) - api.addTokens(tokens, bals) - }, */ - } -}) \ No newline at end of file diff --git a/projects/ghost-ex/index.js b/projects/ghost-ex/index.js deleted file mode 100644 index 40a6fac188c..00000000000 --- a/projects/ghost-ex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - blast: { - tvl: getUniTVL({ - factory: "0xbf246e99a848d9bf592c216118973204162d9650", - useDefaultCoreAssets: true, - }), - }, -} diff --git a/projects/ghost/index.js b/projects/ghost/index.js deleted file mode 100644 index 241dcc08e51..00000000000 --- a/projects/ghost/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); -const { getConfig } = require("../helper/cache"); - -async function tvl(api) { - const chain = api.chain - const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); - const vaultContracts = contracts["kaiyo-1"].ghostVault; - const marketContracts = contracts["kaiyo-1"].ghostMarket; - for (const contract of vaultContracts) { - const { deposited, borrowed } = await queryContract({ contract: contract.address, chain, data: { status: {} } }) - api.add(contract.config.denom, deposited - borrowed) - } - - for (const contract of marketContracts) { - const { deposited } = await queryContract({ contract: contract.address, chain, data: { status: {} } }) - api.add(contract.config.collateral_denom, deposited) - } - return api.getBalances() -} - -async function borrowed(api) { - const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); - const vaultContracts = contracts["kaiyo-1"].ghostVault; - const chain = api.chain - for (const contract of vaultContracts) { - const { borrowed } = await queryContract({ contract: contract.address, chain, data: { status: {} } }) - api.add(contract.config.denom, borrowed) - } - return api.getBalances() -} - -module.exports = { - timetravel: false, - kujira: { - tvl, - borrowed, - }, -}; diff --git a/projects/ghostmarket.js b/projects/ghostmarket.js deleted file mode 100644 index 862e22b2cac..00000000000 --- a/projects/ghostmarket.js +++ /dev/null @@ -1,36 +0,0 @@ -const axios = require("axios"); - - -async function tvl() { - const query = { - "id": 1, - "jsonrpc": "2.0", - "method": "invokefunction", - "params": [ - "0x9b049f1283515eef1d3f6ac610e1595ed25ca3e9", - "balanceOf", - [{"type": "Hash160", "value": "b91888ba149f267ad91817822bf2adaa0e3aa697"}] - ] - }; - - const options = { - method: "post", - url: "http://seed2.neo.org:10332", - data: query, - }; - - const response = await axios(options); - const gm_amount = response.data.result.stack[0].value; - return {ghostmarket: parseFloat(gm_amount / 10 ** 8)}; -} - -module.exports = { - - methodology: `TVL is obtained by making calls on NEO N3 RPC node.`, - misrepresentedTokens: true, - timetravel: false, - neo: { - tvl: () => ({}), - staking: tvl - } -} diff --git a/projects/gibxswap/index.js b/projects/gibxswap/index.js deleted file mode 100644 index 16293f9d44d..00000000000 --- a/projects/gibxswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') - -const swapMiningStakingContract = "0xC31A355277228C1bf9A88599647faEaaE664Ea1f"; -const X = "0xAe28714390e95B8dF1Ef847C58AEaC23ED457702"; - -module.exports = { - misrepresentedTokens: true, - bsc: { - staking: staking(swapMiningStakingContract, X), - tvl: getUniTVL({ factory: '0x97bCD9BB482144291D77ee53bFa99317A82066E8', useDefaultCoreAssets: true }), - }, - methodology: - "Factory address on BSC (0x97bCD9BB482144291D77ee53bFa99317A82066E8) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", -}; diff --git a/projects/ginfinance.js b/projects/ginfinance.js deleted file mode 100644 index c4e66281af7..00000000000 --- a/projects/ginfinance.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -module.exports = { - boba: { - tvl: getUniTVL({ factory: '0x06350499760aa3ea20FEd2837321a84a92417f39', useDefaultCoreAssets: true }), - } -}; \ No newline at end of file diff --git a/projects/ginsengswap/index.js b/projects/ginsengswap/index.js deleted file mode 100644 index 071ac850d89..00000000000 --- a/projects/ginsengswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - conflux: { factory: '0x62aa0294cb42aae39b7772313eadfa5d489146ec', fromBlock: 119633031 }, -}) diff --git a/projects/giveth/index.js b/projects/giveth/index.js deleted file mode 100644 index 037887fd0cd..00000000000 --- a/projects/giveth/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { sumTokens, sumTokens2 } = require("../helper/unwrapLPs"); -const { sumUnknownTokens } = require("../helper/unknownTokens"); - -const GIV = "0x900db999074d9277c5da2a43f252d74366230da0"; -const xdaiGIV = "0x4f4f9b8d5b4d0dc10506e5551b0513b61fd59e75"; - -async function mainnetStaking(ts, block) { - const balances = {}; - const tokensAndOwners = [ - [GIV, "0x4B9EfAE862a1755F7CEcb021856D467E86976755"], // Mainnet LM - ]; - await sumTokens(balances, tokensAndOwners, block); - return balances; -} - -async function mainnetPools(_, block) { - const toa = [ - [GIV, "0xbeba1666c62c65e58770376de332891b09461eeb"], // GIV / DAI Unipool - [GIV, "0xc3151A58d519B94E915f66B044De3E55F77c2dd9"], // Angel Vault - [GIV, "0x7819f1532c49388106f7762328c51ee70edd134c"], // GIV / ETH Balancer - ]; - return sumTokens2({ tokensAndOwners: toa, block }); -} - -async function stakingXDAI() { - const balance = await sumUnknownTokens({ - owners: ["0x24F2d06446AF8D6E89fEbC205e7936a602a87b60"], // GIV Garden - tokens: [xdaiGIV], - chain: "xdai", - }); - return balance; -} - -async function poolXDAI() { - const balance = await sumUnknownTokens({ - owners: [ - "0x08ea9f608656A4a775EF73f5B187a2F1AE2ae10e", // GIV / HNY - "0x55FF0cef43F0DF88226E9D87D09fA036017F5586", // GIV / ETH - "0xB7189A7Ea38FA31210A79fe282AEC5736Ad5fA57", // GIV / XDAI - ], - tokens: [xdaiGIV], - chain: "xdai", - }); - return balance; -} - -module.exports = { - methodology: "Counts GIV staked in all farms", - ethereum: { - tvl: () => ({}), - staking: mainnetStaking, - pool2: mainnetPools, - }, - xdai: { - tvl: () => ({}), - staking: stakingXDAI, - pool2: poolXDAI, - }, -}; diff --git a/projects/giza/arma.js b/projects/giza/arma.js deleted file mode 100644 index d2e8e72469a..00000000000 --- a/projects/giza/arma.js +++ /dev/null @@ -1,105 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const ADDRESSES = require('../helper/coreAssets.json'); - -// Base chain protocol addresses -const BASE_PROTOCOLS = { - aavePoolDataProvider: '0xd82a47fdebB5bf5329b09441C3DaB4b5df2153Ad', // Aave V3 Pool Data Provider - tokens: [ - "0xf42f5795D9ac7e9D757dB633D693cD548Cfd9169", // FLUID USDC - "0xb125E6687d4313864e53df431d5425969c15Eb2F", // COMPOUND USDC - "0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22", // MOONWELL USDC - "0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca", // MORPHO MOONWELL FLAGSHIP USDC - "0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183", // MORPHO STEAKHOUSE USDC - "0xB7890CEE6CF4792cdCC13489D36D9d42726ab863", // MORPHO UNIVERSAL USDC - "0xeE8F4eC5672F09119b96Ab6fB59C27E1b7e44b61", // MORPHO GAUNTLET USDC PRIME - "0x616a4E1db48e22028f6bbf20444Cd3b8e3273738", // MORPHO SEAMLESS USDC - "0xBeeFa74640a5f7c28966cbA82466EED5609444E0", // Morpho: morpho_smokehouse_usdc - "0x0A1a3b5f2041F33522C4efc754a7D096f880eE16", // Euler: usdc - ] -}; - -// Plasma chain protocol addresses -const PLASMA_PROTOCOLS = { - aavePoolDataProvider: '0xf2D6E38B407e31E7E7e4a16E6769728b76c7419F', // Aave V3 Pool Data Provider - tokens: [ - "0x1DD4b13fcAE900C60a350589BE8052959D2Ed27B", // FLUID USDT0 - "0xa5EeD1615cd883dD6883ca3a385F525e3bEB4E79", // Euler RE7 CORE USDT0 - "0xfeE02E3904DfcF323851163E3b8847952f168b2e", // Euler Frontier EtherFi USDT0 - "0xB0004aD99F0e383cC413bA69ACff7c229D930112", // Euler Frontier ETHENA USDT0 - ] -}; - -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", -}; - -async function baseTvl(api) { - // For Base chain - const owners = await getConfig('giza/arma/' + api.chain, 'https://api.arma.xyz/api/v1/8453/smart-accounts'); - - api.log(`[Arma] Found ${owners.length} smart accounts on Base`); - - // Get aUSDC token from Aave Pool Data Provider - const USDC = ADDRESSES.base.USDC; - const aaveReserveData = await api.call({ - target: BASE_PROTOCOLS.aavePoolDataProvider, - abi: abi.getReserveTokensAddresses, - params: [USDC] - }); - - const allTokens = [ - ...BASE_PROTOCOLS.tokens, - aaveReserveData.aTokenAddress // Add the actual aUSDC token - ]; - - // Build tokensAndOwners array for each token-owner combination - const tokensAndOwners = []; - allTokens.forEach(token => { - owners.forEach(owner => { - tokensAndOwners.push([token, owner]); - }); - }); - - return api.sumTokens({ - tokensAndOwners, - permitFailure: true - }); -} - -async function plasmaTvl(api) { - // For Plasma chain - const owners = await getConfig('giza/arma/' + api.chain, 'https://api.arma.xyz/api/v1/9745/smart-accounts'); - - api.log(`[Arma] Found ${owners.length} smart accounts on Plasma`); - - // Get aUSDT0 token from Aave Pool Data Provider - const USDT0 = ADDRESSES.plasma.USDT0; - const aaveReserveData = await api.call({ - target: PLASMA_PROTOCOLS.aavePoolDataProvider, - abi: abi.getReserveTokensAddresses, - params: [USDT0] - }); - - const allTokens = [ - ...PLASMA_PROTOCOLS.tokens, - aaveReserveData.aTokenAddress // Add the actual aUSDT0 token - ]; - - // Build tokensAndOwners array for each token-owner combination - const tokensAndOwners = []; - allTokens.forEach(token => { - owners.forEach(owner => { - tokensAndOwners.push([token, owner]); - }); - }); - - return api.sumTokens({ - tokensAndOwners, - permitFailure: true - }); -} - -module.exports = { - base: { tvl: baseTvl }, - plasma: { tvl: plasmaTvl } -}; diff --git a/projects/giza/index.js b/projects/giza/index.js deleted file mode 100644 index f5017986573..00000000000 --- a/projects/giza/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const arma = require('./arma'); -const pulse = require('./pulse'); - -module.exports = { - methodology: 'TVL is calculated by querying onchain balances of Giza smart wallet accounts across DeFi lending protocols for the Arma product, and Pendle PT token holdings for the Pulse product.', - ...arma, - ...pulse, -} diff --git a/projects/giza/pulse.js b/projects/giza/pulse.js deleted file mode 100644 index 3a79ee2bb2d..00000000000 --- a/projects/giza/pulse.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getConfig } = require('../helper/cache'); - -// Arbitrum Pendle PT token addresses (all ETH PT tokens) -const ARBITRUM_PT_TOKENS = [ - "0xab7f3837e6e721abbc826927b655180af6a04388", // PT weETH - "0x3362c1265a0522f321253708c9fb176f2274fa8d", // PT rETH - "0x71fbf40651e9d4278a74586afc99f307f369ce9a", // PT wstETH - "0xc9bfc3afd592cc5a3305aec09aaaa6b9bb4c12d0", // PT rsETH - "0xd8d5fbbaad1e80aa0352b2029a594caeff6cf1ec", // PT uniETH -]; - -async function arbitrumTvl(api) { - // For Arbitrum chain - fetch smart accounts from Pulse API - const owners = await getConfig('giza/pulse/' + api.chain, 'https://api.usepulse.xyz/api/v1/42161/smart-accounts'); - - api.log(`[Pulse] Found ${owners.length} smart accounts on Arbitrum`); - - // Build tokensAndOwners array for each PT token-owner combination - const tokensAndOwners = []; - ARBITRUM_PT_TOKENS.forEach(token => { - owners.forEach(owner => { - tokensAndOwners.push([token, owner]); - }); - }); - - return api.sumTokens({ - tokensAndOwners, - permitFailure: true - }); -} - -module.exports = { - arbitrum: { tvl: arbitrumTvl } -}; diff --git a/projects/gizadao/index.js b/projects/gizadao/index.js deleted file mode 100644 index f5832bba8a0..00000000000 --- a/projects/gizadao/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const transforms = { - [ADDRESSES.fantom.DAI]: ADDRESSES.ethereum.DAI, // DAI -} - -const treasury = "0x6e273a49Ba8F77d03C0CF5a190f226DcA7D46E9F" -module.exports = ohmTvl(treasury, [ - //DAI - [ADDRESSES.fantom.DAI, false], - //spirit LP - ["0x9026711a2097252a198e6602a052117eaa5f3cab", true], - //spirit LP - ["0x9733f6ac1fb1d750cc28261bbbbf902d239c1e36", true], - ], - "fantom", - "0xF5aB479d02336917bA84981fb8C3999147FcC12B", - "0x3389492f36642f27F7bF4a7749fb3FC2c8fbB7EE", - addr => (transforms[addr.toLowerCase()] ? transforms[addr.toLowerCase()] : `fantom:${addr}`) ,) \ No newline at end of file diff --git a/projects/glacier-finance/index.js b/projects/glacier-finance/index.js deleted file mode 100644 index 859bdaf0207..00000000000 --- a/projects/glacier-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { staking } = require('../helper/staking'); - -module.exports = { - avax: { - tvl: getUniTVL({ factory: '0xaC7B7EaC8310170109301034b8FdB75eCa4CC491', useDefaultCoreAssets: true, hasStablePools: true }), - staking: staking("0xed1eE3f892fe8a13A9BE02F92E8FB7410AA84739", "0x3712871408a829C5cd4e86DA1f4CE727eFCD28F6"), - }, -}; diff --git a/projects/glide-finance/index.js b/projects/glide-finance/index.js deleted file mode 100644 index 595483b0556..00000000000 --- a/projects/glide-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0xaAbe38153b25f0d4b2bDa620f67059B3a45334e5) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - elastos: { - tvl: getUniTVL({ factory: '0xaAbe38153b25f0d4b2bDa620f67059B3a45334e5', useDefaultCoreAssets: true }), - staking: stakingPricedLP("0x7F5489f77Bb8515DE4e0582B60Eb63A7D9959821", "0xd39eC832FF1CaaFAb2729c76dDeac967ABcA8F27", "elastos", "0xbeeAAb15628329C2C89Bc9F403d34b31fbCb3085", "elastos") - } -} diff --git a/projects/glif/index.js b/projects/glif/index.js deleted file mode 100644 index d12ad966d55..00000000000 --- a/projects/glif/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping"); -const { get } = require("../helper/http"); -const { sumUnknownTokens } = require("../helper/unknownTokens"); - -const INDEXER_API = "https://events.glif.link/pool/0/tvl"; - -// Base network ERC4626 vault address for ICNT tokens -const BASE_ICNT_VAULT = "0xAeD7C2eD7Bb84396AfCB55fF72c8F8E87FFb68f3"; - -module.exports = { - methodology: - "This TVL calculation combines GLIF's two pools: (1) Filecoin pool (on Filecoin network) and (2) Impossible Cloud Network pool (on Base network). For the Filecoin pool, tvl tracks the total amount of FIL deposited into the protocol, and the total amount of locked FIL collateral by borrowers, to arrive at TVL. For the Impossible Cloud Network pool, tvl tracks the total ICNT assets locked in the pool.", - filecoin: { - tvl: async (api) => { - let url = INDEXER_API; - url += `?timestamp=${api.timestamp}`; - // this call is too costly to perform on chain in this environment, - // we wrapped the tvl in a server that derives the information directly on-chain - // but serves it in a more efficient manner to not overload defillama frontend - // github repo: https://github.com/glifio/pools-metrics - const { tvl } = await get(url); - // this gets our tvl in attoFIL (wei denominated) without double counting - api.add(nullAddress, tvl); - }, - }, - base: { - tvl: async (api) => { - // Get the total assets from the ERC4626 vault - const totalAssets = await api.call({ - abi: "function totalAssets() view returns (uint256)", - target: BASE_ICNT_VAULT, - }); - - // Get the underlying asset address from the vault - const asset = await api.call({ - abi: "function asset() view returns (address)", - target: BASE_ICNT_VAULT, - }); - - // Add the ICNT tokens to the balance - api.add(asset, totalAssets); - - // Use sumUnknownTokens to handle pricing of the unknown ICNT token - return sumUnknownTokens({ - api, - useDefaultCoreAssets: true, - resolveLP: true - }); - }, - }, - timetravel: true, - start: '2023-03-01', // 2023-03-01 - hallmarks: [ - ], -}; diff --git a/projects/gliquid/index.js b/projects/gliquid/index.js deleted file mode 100644 index 44dd8a23557..00000000000 --- a/projects/gliquid/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/* const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - hyperliquid: { - factory: "0x10253594A832f967994b44f33411940533302ACb", - fromBlock: 4347220, - isAlgebra: true, - }, -}); - */ - -const { uniV3GraphExport } = require("../helper/uniswapV3") - - -const config = { - hyperliquid: 'https://api.goldsky.com/api/public/project_cmb20ryy424yb01wy7zwd7xd1/subgraphs/analytics/v1.0.0/gn' -} - -Object.keys(config).forEach(chain => { - const graphURL = config[chain] - module.exports[chain] = { - tvl: uniV3GraphExport({ graphURL, name: 'gliquid-'+chain}) - } -}) \ No newline at end of file diff --git a/projects/glitter-finance/index.js b/projects/glitter-finance/index.js deleted file mode 100644 index e72c3ee1ec4..00000000000 --- a/projects/glitter-finance/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { treasuryExports, } = require("../helper/treasury") - -const ETHEREUM_VAULT = "0xa234acbd98a917f6dda69298e0e7290380006cf1"; -const ARBITRUM_VAULT = "0x446c264ed8888dad27f5452094d2ceadb1e038ea"; -const ZKEVM_VAULT = "0x175355fa6fa82f1bb6868cd885da13069c4e861c"; -const POLYGON_VAULT = "0x72decebe0597740551396d3c9e7546cfc97971e9"; -const AVALANCHE_VAULT = "0xa234acbd98a917f6dda69298e0e7290380006cf1"; -const BINANCE_VAULT = "0x446c264ed8888dad27f5452094d2ceadb1e038ea"; -const OPTIMISM_VAULT = "0x446c264ed8888dad27f5452094d2ceadb1e038ea"; - -module.exports = { - hallmarks: [ - [1661337600, "SPL Vault Migration (V2 Expansion)"], - ], - timetravel: false, - methodology: - "TVL counts tokens and native assets locked in Glitter-Finance bridge vaults. CoinGecko is used to find the price of tokens in USD.", - ...treasuryExports({ - solana: { - owners: ['7xCU4nvqu3Nz3BBQckKzibp3kBav4xbkuqQ3WM9CBHdJ'], - }, - algorand: { - owner: 'R7VCOR74LCUIFH5WKCCMZOS7ADLSDBQJ42YURFPDT3VGYTVNBNG7AIYTCQ', - }, - ethereum: { - tokensAndOwners: [['0x68f0c0003f1826c4e9646df7e1ecf3707fee0581', ETHEREUM_VAULT]], - }, - }), -}; diff --git a/projects/globiancedex/index.js b/projects/globiancedex/index.js deleted file mode 100644 index 34b1d2fdc5f..00000000000 --- a/projects/globiancedex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - xdc: { - tvl: getUniTVL({ - factory: '0xA8334Aae58e5bDee692B26679c1817F9c42f8f51', - useDefaultCoreAssets: true, - }) - }, -} \ No newline at end of file diff --git a/projects/gloom/index.js b/projects/gloom/index.js deleted file mode 100644 index 1bfb448f748..00000000000 --- a/projects/gloom/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'sonic': '0x385AC659B50dF7f90755f974409D02dc21ea8bB0' -}, { - abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, hasStablePools: true, -}) \ No newline at end of file diff --git a/projects/gloop/index.js b/projects/gloop/index.js deleted file mode 100644 index 65e94cc26b1..00000000000 --- a/projects/gloop/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const LENDING_POOL_ADDRESS = "0x9BE2e5739B1a6A175d36Ce043f44E66965a433EB"; -const GMI_TOKEN_ADDRESS = "0xAad4187a81689AF72d91966c8119756E425cD7CF"; - -const supportedTokens = [ - "0x47c031236e19d024b42f8AE6780E44A573170703", // GM_BTC_ADDRESS - "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", // GM_ETH_ADDRESS - "0x09400D9DB990D5ed3f35D7be61DfAEB900Af03C9", // GM_SOL_ADDRESS - ADDRESSES.arbitrum.USDC_CIRCLE, // USDC_ADDRESS -]; - -const abi = { - "treasuryVaults": "function treasuryVaults(uint256) view returns (bytes32)", - "vaults": "function vaults(bytes32) view returns (address bank, address token, uint256 weight, address oracle, bool active)", -} - -async function tvl(api) { - // GMI Index TVL - const treasuryVaults = await api.fetchList({ lengthAbi: 'x', itemCount: 4, itemAbi: abi.treasuryVaults, target: GMI_TOKEN_ADDRESS }) - const vaults = await api.multiCall({ abi: abi.vaults, calls: treasuryVaults, target: GMI_TOKEN_ADDRESS }) - const tokensAndOwners = vaults.map(vault => [vault.token, vault.bank]) - - // Get GM Lending TVL by calling totalUnderlying for each supported token - tokensAndOwners.push([ADDRESSES.arbitrum.USDC_CIRCLE, '0xfe81b0866a8fbbd7c00f5aab84e4e531ea7591c2']) // USDC Lending Pool - supportedTokens.forEach(t => tokensAndOwners.push([t, LENDING_POOL_ADDRESS])) - return api.sumTokens({ tokensAndOwners}) -} - -async function borrowed(api) { - // Get total borrowed by calling totalBorrows with USDC address - const totalBorrowed = await api.call({ - abi: "function totalBorrows(address) view returns (uint256)", - target: LENDING_POOL_ADDRESS, - params: [ADDRESSES.arbitrum.USDC_CIRCLE], - }); - - api.add(ADDRESSES.arbitrum.USDC_CIRCLE, totalBorrowed); -} - -module.exports = { - methodology: - "Gloop TVL consists of two parts: (1) GMI Index TVL from totalControlledValue(true) which tracks the total USD value of GM tokens in the index, and (2) GM Lending TVL from totalUnderlying() for each supported token (GM BTC, GM ETH, GM SOL, USDC) in the lending pools.", - // A little after Lending Pool contract was deployed - start: 1744340400, - arbitrum: { - tvl, - borrowed, - }, -}; - diff --git a/projects/glorifinance/index.js b/projects/glorifinance/index.js deleted file mode 100644 index 497c0616224..00000000000 --- a/projects/glorifinance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { compoundExports2, } = require('../helper/compound') - -const { mergeExports } = require("../helper/utils") -const { yieldHelper, } = require("../helper/yieldHelper") - -const lend = compoundExports2({ comptroller: '0xe0AEDC2a4126fad95A53039330c4dD15B63Fa8C6' }) - - -const contract = '0xCc0F161f84b4A1Bddf03BFc41C0ffbEf82f30022' -const token = '0xDF74D76e25FAB06c2CdbA4ebb0e6c82823378bD4' -const abis = { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, address xlpToken, address strat, uint256 amount, uint256 share)', -} - -const arbi_helper = yieldHelper({ - project: 'glori-finance', - chain: 'arbitrum', - masterchef: contract, - nativeToken: token, - abis, -}) - -module.exports = mergeExports([ - arbi_helper, - { arbitrum: lend, } -]) -module.exports.deadFrom='2024-04-30', -module.exports.arbitrum.borrowed = () => ({}) // bad debt diff --git a/projects/glowswap-io/index.js b/projects/glowswap-io/index.js deleted file mode 100644 index c456b179a39..00000000000 --- a/projects/glowswap-io/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - bsquared: { factory: '0x02eAFbE9dE030f69aF02B7D3F2f69B28016f3C83', fromBlock: 1 }, -}) \ No newline at end of file diff --git a/projects/gluon-gold/index.js b/projects/gluon-gold/index.js deleted file mode 100644 index 2dea38f0f5d..00000000000 --- a/projects/gluon-gold/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ergo: { - tvl: sumTokensExport({ - owners: [ - 'U2Jtp6oeBTnbGS7ed2PvkudukZYRBBSfi557aCmzQtYxoQzbYeTw82vRjtVCke3FQ7iK8PjEFwjBjFDH8ZAXhqjCZ33kZDrRS92kUJPGe1zZsSeJcMz6y4QVsVrhpnmgxmmCKo9ut2bQa96ExLUBojZznoW56qGbKut9U58QeowdtgMuHPxnUF4Srgucn3kUvd2aWVydGjNdRFzDVCArz9iqBNejbcfcJNSqyzJX88KBTTQwYKcxkNtkBF5ZzUMiAZVmymzmAnHUob8HRzVhD19sTEdKF3TEaiPhyWVUKgtUApXuAwwygxH8FCfrknESQFWXQdeniVs3aHPxeqPRyaeqAhkUjBRSSsZqjXYaXfoCbVN7mkQyYNMPcQ9qptQY1yBZBEh2EFZHbWuYBeCYFGb1R64HPinTkyEPAT76xhUCrqPCcejzLNAfHffZj3G7nB83jPewAi8Jzf9ApT73R8FnzEwJeWWznKYKViyB357W28NNGThwZDgJu7VxxnJf1X2HYfE6yywCfidhUwwstcBUT1yFDXHxSzF84eWwufTKCoA36ZRgjct3FvvM2A4pnQCzDjwLGVFPapHJK15JVgGFXCmYNxtAnhhEZTfSJXemVuBQ9HceB88WRPJzQ8bvvUdDWJzAxdseLVseZec1nzufW6uj1MS7F9ri2hCfzwxJmGA42ycWcaqdmCFSmuJAQtbnAbEaYKaWXi1Rw3ksiuiWPfWCyGmdKTXALA8wb5LrJz5oRgxQ9mmcWmg38nRMMqepHmhSEEFVjFQTP6GdQ7sq2Smke3g26yEzTJrySEbBxDUey2gytnuhLhff3e2dWpDeUbpgHsBw3TWMriYKZrUNDFBTr6ii6efPrjiPphZx1RsMuUYhKucbTviPq4q71nm15wpySA1rC2M4vuNRMwMmMLfepAFPh4nH63mNixDnTJrcdETBDhZr8Km62cpj3BGWHtbcMYyk7NmshwvpD3Eym6PCDLrdLAjCDN6MtSCAHvfRQS4Sm49aCmHt7r17kAfNt8GccWDUErhhtNymRUff8wya5Grrrfzx7Ynp54HuDJ9EcR6aaE6buNzfqxrnuaLGedcBwWkaoAMrKoLDAmyPcYskEcNMrENLk3JRdSdRpXERVjAQs6hCZV65mVYVgnYx9YgcvatKnMNGu3sHgQUBdxgHHfzDNqdxhrwfuUZ38xPGv8soo7yvz8ahhnEddLhvwdm9x73SM6Cb1CXupy1gNz8dgkDP6TVshDPGbtcAqCXpsdUL9ZzzWQPUv67dzMEAcHaz7deo8wgrhGc6qtG2Vfg3bnAWk5JtUV5bV9v4zRdLKrvEiqCCxXgoztAh9DhgeMFr5RAGWwmUBJbrn5jMBK6ijj9MEoRdfcymDJtpbbU1uTUkjSAw2gnpAeXLsmbgL4wTZWBhqBRGWyEk6Xw4oKFwV4KKVvfYEXiDg9vSQqF2xbxeGh5w5s6KvqyWKjn9EWMHeRWX5xhrwsAUMXKDAn2eX4e74zNovGprUTDF6tpQYeeqrhxgqnLJ4PgnTkeJT7XxJANZCnqbdt2jnWiKsKUyv6WMHiZeuGFzFxjg8Kvj1DVrmtM347tE9xufxteMECTXiRHHDM1r9VXsdZuRBsHsdmY9i5K2uHCLwXproCHu4TyP3NS7PXjY6Rz1Ltk1PEuqabUc1Gr59vs6MB3dqxKZjRKVu7aSRCxamFaUhSuCdy8raqpaX7tCHmD8zTPTLEQgzZnNq9bFePiuNfGXCZMVrw1wcnjrs39uh1kL1j7nYAAGRE79b4rnAJwRxZdpL7X9Jr7MuQrsVSjwFhFpvUfoZ1yY7hj6uKxPvZwQMVVrmqfFxEJNrCfgUabNZQLvRA6UuZbsg9BGLYtkfNJjLEpRJWiwJqKhnYC28DKmq4a7s29UN1wyePnKHNwAxDv7dzhdhZJa1XS7p4PgKKKzu24mDSKrHC1qnfcgTHQDbebNyveX8UEB2wwRgXLxoHsGmbWgTnnoW1P2x5m1nQomtU82W544iB1i48qc28wXLjdDk3x3P11VZVphRupHUa7y7F5KiG6UsnA87tHs6UB4K6C3dp59YvSdUCNW9khhHkT8mg4VVpLSvihwy8B2FBBTsXDaSnhNAmgx2SyHGXLTfZAdfhw8CSZRHxgeGif5upYSTxzfbH1QRUm6g4CwGScfyKM9D5nXKewfXrb6VZPJpDPXUxQnMaQ8wM1AgUMw3sX7TJJmYmfeWrnR8uhaLY7RFh3gAWfGCRr6SLMoKyez32DKH7gTGsj1ymM39JRuDKugMt5TW1LhhYuiAGX8zH5GnyPqMSNfVZiJYsh1ZPqF3AVkmTgd7VGR8ZBGyFUcrrw98kDMsQ3vBpYgCAwBGRvoA8cs4hvCF3udSRoqiPVXyDG8sS49GV74Jr4VHV7TTTBBdY8V6WPhL9cxHbzoMGYDFE9DN86b5jPK8Avu7Tjw9gKYUaUWmFbvr7xS1oG5fWHSmQ9uXeBzfi2kGBZDCiqcpBymBqzphePVFkvRHhAQiERMwF5LSZwo67joCHiPDNLV1uFG4wXCR5RxVpdjE2jxd8qCqJSub691AWWVDdRBK2i9zXByh5QAQtUTFPRuNHTyTcpA7Yaz1usgGSfQFPe2meQjjwkYy6Gnz53ynboPmP83v2BSwFZFNnubA55nVJPdqfJDUY4bRspJYMASWUzDECQKipgxeFjUtnZVAhNaDj7iCmPZ6WGFBgF4pULYqY1AoP33hcooQ8rdRDdJ7iidRowYVNMgb8QHC7XgHYFRrUDPBDQ6aefp58rYHv2BJrVdz3z1Jn8dAsyhx2eW6kf9URqB5ygAwTWSiogSfsQxye4eSF9o7pA5eDLQRsgN41Qm6M1ZfVkEktYLb7WSKxLesggCgPng8S7CKqp98WYf2h3FyTPukDSkc84SSfxFg6DQKRkdKhcGYd7aNBgNG3H4AkFgBe62Cjtor2QDJCYmTDnfb92adShmDdGvqZw2Tsj8XEw1TfCSH2ZqMUYNbGbATc2ZQK5daXHXwviqo4DjrEURWXUiepNifVHLt8W1WvAYLfKJHwPa3aBq9qQX7ik51KrLmLAdXhFofrmoAAuN6E9rULFUsTcp7xMHEKyAL7WjfwRGgortnMyhhtVfVqHAtiZmvGuppFHjYw7zFg6Shy6GhTPinzcPLwuiYSCLxU4SzvoANLvhMDRDgHuph8C3BVB3UjunEazhu1ctvTnoRLwqAQELDBsgW6bwQo7kLj2Lfrc88WUnDyxjsDphRsbJAaSWTAcNA3aYhKYjrxS5uhMa9C77NYRKPJPuQGw5MtiSjSojXtyfcWuyJAyvs9Cvra41FqiMhqtummsMbhUMZttfe5nGQcvnDUZZorR9TJXphpQn4GaGbRskU1g6HMdfCtAvhBbyccMjfk8LAJm7XPhsh1fGKC2Y8xKfRxhbystVmjzZ9Zt7XQdafhDKfHt21d7mw4pLPzEZoNNtgHwK3BKZv3b7AS2hsrBu6ct8cPnCcm4Y2iVNrpcZ6x7TLMupJRoyYwrPw9d3XNcDWMDMrqHEsM5d54hee1mQZk7Pyo6mEk4J6DNFh3u7GjfPtZwz9t6L7hUex93nqbvVcF5uTHpX8iw2kZdYgp9bH2HbNrMnL1Myx9XCLybzadAmRhGGRKVz9QtpoUGrNWcfYR5SAdvAUiKmudnakqzUe2F1Y45G1HbkQjbWfFHtDqTXcWoVdL3rzNzekZybbGjobSUoJyCwTEh3cSZJditQAQhQ9P93YW6MkpFQ2FtmS8SWZKy2PxMMec7i2ugCU5zBKPkNrugSgZr2TWejUE74Vr4MHvs5U7pS6b7obrVLkEuDWGCdnR4BDcvBFVPTNKPUUUXBw291nqEMoAWTxWYYSZhwkY6p9ftcx2y1Kq7P2RPiDZg1HYciuDdfGFNgmTYv', - ], - tokens: [ADDRESSES.null], - }) - } -} diff --git a/projects/glyph-fi/index.js b/projects/glyph-fi/index.js deleted file mode 100644 index 8f2617e94ee..00000000000 --- a/projects/glyph-fi/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave') - -module.exports = { - fraxtal: aaveExports("fraxtal", "0xcD0c5BA79018F37898A58eF56d197828d84f36Ad"), -} \ No newline at end of file diff --git a/projects/glyph-v4/index.js b/projects/glyph-v4/index.js deleted file mode 100644 index 1313cce0736..00000000000 --- a/projects/glyph-v4/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - core: { factory: '0x74EfE55beA4988e7D92D03EFd8ddB8BF8b7bD597', fromBlock: 15770796, isAlgebra: true }, -}) \ No newline at end of file diff --git a/projects/gmcash/abi.json b/projects/gmcash/abi.json deleted file mode 100644 index 1695a7e2cdf..00000000000 --- a/projects/gmcash/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 accGmcPerShare, bool isStarted)", - "poolLength": "uint256:poolLength" -} - diff --git a/projects/gmcash/index.js b/projects/gmcash/index.js deleted file mode 100644 index 1ecfdeb0628..00000000000 --- a/projects/gmcash/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { masterchefExports, sumTokensExport, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - -const masterChefCASH = "0xa4De1bCf1CBFc0d675c7a49Cd7d6aD132a35F15d"; -const CASH = "0x654C908305021b2eaF881cEe774ECe1D2BCac5fc"; - -const masterChefSHARE = "0x18ac4eB45E3eE74bDeD0B97E0D08f2A3ca992F7e"; -const SHARE = "0x0f96d8c1277BD75A251238af952A7A99Db1320E3"; - -const boardroom = "0x9D0047E9D09245cb18d2D3Ec7D48515A067086B1" -const nativeTokens = [CASH, SHARE] -const chain = 'arbitrum' - -const lps = [ - '0x694c9e9d7778e2a9e4a0dc7d112141b130ebacd3', - '0x85c4afd95c8dcea58fa608e34bf344a54647f84b', -] - -module.exports = mergeExports([ - masterchefExports({ chain, nativeTokens, masterchef: masterChefCASH, useDefaultCoreAssets: true, lps, }), - masterchefExports({ chain, nativeTokens, masterchef: masterChefSHARE, useDefaultCoreAssets: true, lps, }), - { - arbitrum: { staking: sumTokensExport({ owner: boardroom, tokens: nativeTokens, lps, })} - } -]) \ No newline at end of file diff --git a/projects/gmd/index.js b/projects/gmd/index.js deleted file mode 100644 index 7148a96e563..00000000000 --- a/projects/gmd/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking"); - -const abi = 'uint256:totalUSDvaults'; - -const arbitrum_vault = "0xA7Ce4434A29549864a46fcE8662fD671c06BA49a"; -const arbitrum_vault2 = "0x8080B5cE6dfb49a6B86370d6982B3e2A86FBBb08"; -const arbitrum_staking = "0x48c81451d1fddeca84b47ff86f91708fa5c32e93"; -const arbitrum_GMD = "0x4945970EfeEc98D393b4b979b9bE265A3aE28A8B"; -const arbitrum_esGMD = "0x49E050dF648E9477c7545fE1779B940f879B787A"; - -const avax_vault = "0x5517c5F22177BcF7b320A2A5daF2334344eFb38C" -const avax_staking = "0x4f2c414b76fd9cd45c000af7a449ade4125740ce"; -const avax_GMD = "0x1FE70939c2cEc8F31E8F7729442658586B469972"; -const avax_esGMD = "0xeE788a8b015376eC0185e1e40140af03029C8763"; - -const calculateTvl = async (vaults, chain, block) => { - const balances = {}; - const bals = await sdk.api2.abi.multiCall({ - abi, - calls: vaults, - chain, - block, - }); - - bals.forEach((i) => - sdk.util.sumSingleBalance(balances, 'tether', i / 1e18, 'coingecko') - ); - - return balances; -}; - -module.exports = { - misrepresentedTokens: true, - methodology: 'staked gmd + vault balance', - arbitrum: { - staking: staking(arbitrum_staking, [arbitrum_esGMD, arbitrum_GMD]), - tvl: async (ts, _, { arbitrum: block }) => - calculateTvl( - [arbitrum_vault, arbitrum_vault2], - 'arbitrum', - block - ), - }, - avax: { - staking: staking(avax_staking, [avax_esGMD, avax_GMD]), - tvl: async (ts, _, { avax: block }) => - calculateTvl( - [avax_vault], - 'avax', - block - ), - }, -}; - - - diff --git a/projects/gmsvaults/index.js b/projects/gmsvaults/index.js deleted file mode 100644 index 3208fe7ed41..00000000000 --- a/projects/gmsvaults/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); - -const base_vault = "0xe1515D3A8c503a0fc68015844a9fc742D1c80927"; -const base_staking = "0x3D893CC2C70242907cAac245D04C565056174EF7"; -const base_GMS = "0x13dE6E0290C19893949650fe6fdf9CDfFAFa6040"; - -module.exports = { - doublecounted: true, - methodology: 'staked gms + vault balance', - base: { - staking: staking(base_staking, base_GMS), - tvl: staking(base_vault, '0x2D5875ab0eFB999c1f49C798acb9eFbd1cfBF63c'), - }, -}; \ No newline at end of file diff --git a/projects/gmx-v2/index.js b/projects/gmx-v2/index.js deleted file mode 100644 index 943535ae730..00000000000 --- a/projects/gmx-v2/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { gmxExportsV2 } = require("../helper/gmx"); -const { sumTokens2 } = require("../helper/solana"); - -module.exports = { - hallmarks: [[1742137957, "Launch on Solana"]], - arbitrum: { - tvl: gmxExportsV2({ - eventEmitter: "0xc8ee91a54287db53897056e12d9819156d3822fb", - fromBlock: 107737756, - }), - }, - avax: { - tvl: gmxExportsV2({ - eventEmitter: "0xDb17B211c34240B014ab6d61d4A31FA0C0e20c26", - fromBlock: 32162455, - }), - }, - solana: { - tvl: () => - sumTokens2({ owner: "CTDLvGGXnoxvqLyTpGzdGLg9pD6JexKxKXSV8tqqo8bN" }), - }, - btnx: { - tvl: gmxExportsV2({ - eventEmitter: "0xAf2E131d483cedE068e21a9228aD91E623a989C2", - fromBlock: 117906, - }), - }, -}; diff --git a/projects/gmx/index.js b/projects/gmx/index.js deleted file mode 100644 index 155699ddc35..00000000000 --- a/projects/gmx/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - -//Arbitrum -// const arbitrumApiEndpoint = 'https://gmx-server-mainnet.uw.r.appspot.com/tokens' -const arbitrumVault = '0x489ee077994B6658eAfA855C308275EAd8097C4A'; -const arbitrumStaking = '0x908C4D94D34924765f1eDc22A1DD098397c59dD4'; -const arbitrumGMX = ADDRESSES.arbitrum.GMX; -//Avalanche -// const avalancheApiEndpoint = 'https://gmx-avax-server.uc.r.appspot.com/tokens' -const avalancheVault = '0x9ab2De34A33fB459b538c43f251eB825645e8595' -const avalancheStaking = '0x2bD10f8E93B3669b6d42E74eEedC65dd1B0a1342' -const avalancheGMX = '0x62edc0692BD897D2295872a9FFCac5425011c661' - -module.exports = { - arbitrum: { - staking: staking(arbitrumStaking, arbitrumGMX, "arbitrum", "gmx", 18), - tvl: gmxExports({ vault: arbitrumVault, }) - }, - avax:{ - staking: staking(avalancheStaking, avalancheGMX, "avax", "gmx", 18), - tvl: gmxExports({ vault: avalancheVault, }) - }, - hallmarks:[ - [1641556800, "Avalanche GMX Launch"] - ], - -}; diff --git a/projects/gnd-protocol/index.js b/projects/gnd-protocol/index.js deleted file mode 100644 index 07a7c728776..00000000000 --- a/projects/gnd-protocol/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -async function tvl(api) { - const farm = '0xd8769d8826149b137af488b1e9ac0e3afdbc058a' - await sumTokens2({ api, owner: farm, resolveUniV3: true, }) - const tokens = Object.keys(api.getBalances()).map(i => i.replace(/arbitrum:/gi, '')) - return sumTokens2({ api, owner: farm, tokens, }) - -} -module.exports = { - arbitrum: { - tvl, - staking: staking('0x535ec56479892d9C02fe2Bb86CeBF7ed62E81131', ['0x40ea7f6d6964413d4a26a0a268542dae9f55768e', '0x40ea7f6d6964413d4a26a0a268542dae9f55768e']) - } -} \ No newline at end of file diff --git a/projects/gnosis/index.js b/projects/gnosis/index.js deleted file mode 100644 index 3067b2421b1..00000000000 --- a/projects/gnosis/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokensExport } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -module.exports = { - start: '2020-01-23', // Thu, 23 Jan 2020 20:30:23 GMT - ethereum: { tvl: sdk.util.sumChainTvls([ - '0xc59b0e4de5f1248c1140964e0ff287b192407e0c', - '0x6f400810b62df8e13fded51be75ff5393eaa841f', - ].map(addTvl)), } -}; - -function addTvl(owner) { - const tokens = [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.GNO, - ADDRESSES.ethereum.YFI, - ADDRESSES.ethereum.sUSD, - ADDRESSES.ethereum.UNI, - '0xa1d65E8fB6e87b60FECCBc582F7f97804B725521', - '0xc00e94cb662c3520282e6f5717214004a7f26888', - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.SUSHI, - '0x22eEab2f980E8ed7824f8EA548C9595564a0F0e4', - '0xe2f2a5c287993345a840db3b0845fbc70f5935a5', - ADDRESSES.ethereum.TUSD, - ADDRESSES.ethereum.USDT, - '0x0b38210ea11411557c13457D4dA7dC6ea731B88a', - '0x84cA8bc7997272c7CfB4D0Cd3D55cd942B3c9419', - ] - - return sumTokensExport({ owner, tokens, }) -} diff --git a/projects/goat-protocol/index.js b/projects/goat-protocol/index.js deleted file mode 100644 index 3819b1c83ed..00000000000 --- a/projects/goat-protocol/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { staking } = require('../helper/staking') - -const GOA_TOKEN_CONTRACT = '0x8c6Bd546fB8B53fE371654a0E54D7a5bD484b319'; -const REWARD_POOL_CONTRACT = '0xAD9CE8580a1Cd887038405275cB02443E8fb88aC'; - -const config = { - sonic: 146, - arbitrum: 42161, -}; - -module.exports = { - doublecounted: true, - hallmarks: [ - [1732186800, "Multistrategies Launch"] - ], -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const res = await getConfig('goat-protocol', `https://api.goat.fi/vaults`); - const multistrategies = Object.values(res.data[config[chain]]); - const calls = multistrategies.map(multistrategy => multistrategy.address); - return api.erc4626Sum({ calls, isOG4626: true, }) - } - } -}) - -module.exports.arbitrum.staking = staking(REWARD_POOL_CONTRACT, GOA_TOKEN_CONTRACT) \ No newline at end of file diff --git a/projects/goat-tech/index.js b/projects/goat-tech/index.js deleted file mode 100644 index 695c6a3478a..00000000000 --- a/projects/goat-tech/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const configs = { - ETH_LOCKER: "0x957d6ff09368fcb01ca886f8e937368c6a4c760e", - wstETH_LOCKER: "0x90075915714235a3816cf6ee4fe703c2e36a566a", - weETH_LOCKER: "0x76e38de3d19b90afffc4253d1556b83c063e2ae8", - ezETH_LOCKER: "0x05cca71e1f44e721fc16bbbcda6c62091d240deb", - weETH: ADDRESSES.arbitrum.weETH, -}; - -module.exports = { - methodology: "Total staking", - arbitrum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.arbitrum.WETH, configs.ETH_LOCKER], - [ADDRESSES.blast.ezETH, configs.ezETH_LOCKER], - [ADDRESSES.arbitrum.WSTETH, configs.wstETH_LOCKER], - [configs.weETH, configs.weETH_LOCKER], - ], - }), - }, -}; diff --git a/projects/goatswap-v2/index.js b/projects/goatswap-v2/index.js deleted file mode 100644 index b644e4d9c07..00000000000 --- a/projects/goatswap-v2/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") -module.exports={ - goat:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xbF8c8B5D27e76890416eA95a50d4732BB4906741' }), - }, -} diff --git a/projects/goatswap-v3/index.js b/projects/goatswap-v3/index.js deleted file mode 100644 index 87bf0165967..00000000000 --- a/projects/goatswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - goat: { factory: "0x3D9c7F529005017aFD0a7fc2CF97D0baF72C5418", fromBlock: 108410 }, -}) diff --git a/projects/goatswap/index.js b/projects/goatswap/index.js deleted file mode 100644 index f2c0939b579..00000000000 --- a/projects/goatswap/index.js +++ /dev/null @@ -1,154 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, } = require("../helper/solana"); -const { - PublicKey, -} = require("@solana/web3.js"); -const programId = 'Goats192jeQq3r2sn8pe69LyJtisLMfEoq8LyDienct1'; - -function getPoolAuthority(pool) { - return PublicKey.findProgramAddressSync( - [Buffer.from("pair_authority"), - pool.toBuffer()], - new PublicKey(programId) - )[0].toString() -} - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, programId, provider) - const accounts = await program.account.pair.all() - const poolAuthorities = accounts.map(i => getPoolAuthority(i.publicKey)) - return sumTokens2({ solOwners: poolAuthorities, }) -} - -module.exports = { - methodology: 'Add all the SOL in the pools, NFT value is not included in tvl', - timetravel: false, - solana: { - tvl, - }, -}; - -const idl = { - version: '0.1.0', - name: 'goatswap', - instructions: [], - accounts: [ - { - name: 'pair', - type: { - kind: 'struct', - fields: [ - { - name: 'bump', - type: 'u8' - }, - { - name: 'owner', - type: 'publicKey' - }, - { - name: 'collectionVerification', - type: { - defined: 'CollectionVerification' - } - }, - { - name: 'poolType', - type: { - defined: 'PoolType' - } - }, - { - name: 'bondingCurve', - type: { - defined: 'BondingCurve' - } - }, - { - name: 'spotPrice', - type: 'u64' - }, - { - name: 'delta', - type: 'u64' - }, - { - name: 'feeBps', - type: 'u32' - }, - { - name: 'assetRecipient', - type: { - option: 'publicKey' - } - }, - { - name: 'nfts', - type: 'u32' - } - ] - } - } - ], - types: [ - { - name: 'BondingCurve', - type: { - kind: 'enum', - variants: [ - { - name: 'Linear' - }, - { - name: 'Exponential' - } - ] - } - }, - { - name: 'PoolType', - type: { - kind: 'enum', - variants: [ - { - name: 'Token' - }, - { - name: 'Nft' - }, - { - name: 'Trade' - } - ] - } - }, - { - name: 'CollectionVerification', - type: { - kind: 'enum', - variants: [ - { - name: 'Collection', - fields: [ - { - name: 'collection', - type: 'publicKey' - } - ] - }, - { - name: 'Goatkeeper', - fields: [ - { - name: 'goatkeeper', - type: 'publicKey' - } - ] - } - ] - } - } - ], - errors: [] -} \ No newline at end of file diff --git a/projects/goatup/index.js b/projects/goatup/index.js deleted file mode 100644 index 7906e195f40..00000000000 --- a/projects/goatup/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const USDCE = ADDRESSES.goat.USDC -const USDT = ADDRESSES.goat.USDT -const BTC = ADDRESSES.goat.WBTC - -const GPLP = "0x3349BdABbC6A4185ea167EcbA379CB70d6191d9e"; -function tvl(api) { - return sumTokens2({ api, owners: [GPLP], tokens: [USDCE, USDT, BTC] }) -} - -module.exports = { - goat: { - tvl, - } -} - diff --git a/projects/goblin-aptos/index.js b/projects/goblin-aptos/index.js deleted file mode 100644 index 71a577a0317..00000000000 --- a/projects/goblin-aptos/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const { function_view, getResource } = require("../helper/chain/aptos"); - -const vaults = [ - '0x77d56ce63cf4d8c36a60a8a8f29e11ebbf7a1c0e22d6cd069d7f2e950d2fd0bd', // APT-USDC - '0x7a6ef286a6d3f482dcb56d683678dadc7a18be133bf5f01626d5164a52e68eeb', // APT-USDt - '0xab8fdae5dd99a4379362c01218cd7aef40758cd8111d11853ce6efd2f82b7cad', // USDt-USDC - '0x41cfdef11efd671cbcffa66f57716ee5698308b233359481d52d6dac34b42af2', // APT-kAPT - '0xfee3dc8a7d53e4ababf77033bb429ecbcaf2d58ba6c2809ab0f503bb14098ea7', // USDt-USDC private - '0xb60a7fb8a217de3d44085cf37c680a99100e393005081545a5e237797e71952f', // APT-USDC private -]; -async function getVaultsLiquidity() { - const vaultResources = await Promise.all(vaults.map(vault => getResource(vault, '0x19bcbcf8e688fd5ddf52725807bc8bf455a76d4b5a6021cfdc4b5b2652e5cd55::vaults::Vault'))); - const vaultsLiquidityList = await Promise.all(vaultResources.map(({position_id}) => function_view({ - functionStr: "0x8b4a2c4bb53857c718a04c020b98f8c2e1f99a68b0f57389a8bf5434cd22e05c::router_v3::get_amount_by_liquidity", - args: [position_id], - type_arguments: [], - }))); - return {vaultResources, vaultsLiquidityList}; -} - -async function _getCoinInfo(faType) { - const coinInfo = await function_view({ - functionStr: "0x1::coin::paired_coin", - args: [faType], - type_arguments: [], - }); - - if (coinInfo.vec.length > 0) { - const address = coinInfo.vec[0].account_address; - const module = Buffer.from(coinInfo.vec[0].module_name.replace('0x', ''), 'hex').toString('utf-8'); - const struct = Buffer.from(coinInfo.vec[0].struct_name.replace('0x', ''), 'hex').toString('utf-8'); - - return (address + "::" + module + "::" + struct); - } else { - return null; - } -} - -module.exports = { - timetravel: false, - methodology: "Counts the total vault position in the corresponding liquidity pool on Hyperion.", - aptos: { - tvl: async (api) => { - const {vaultResources, vaultsLiquidityList} = await getVaultsLiquidity(); - - for (const [index, vaultResource] of vaultResources.entries()) { - const coin1 = await _getCoinInfo(vaultResource.token_a.inner) || vaultResource.token_a.inner; - const coin2 = await _getCoinInfo(vaultResource.token_b.inner) || vaultResource.token_b.inner; - - api.add(coin1, vaultsLiquidityList[index][0]); - api.add(coin2, vaultsLiquidityList[index][1]); - } - }, - }, -}; - diff --git a/projects/goblin-dex/index.js b/projects/goblin-dex/index.js deleted file mode 100644 index 2fa08a931fe..00000000000 --- a/projects/goblin-dex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const { staking } = require('../helper/staking') - -module.exports = uniV3Export({ - smartbch: { factory: '0x08153648C209644a68ED4DC0aC06795F6563D17b', fromBlock: 14169895 }, - base: { factory: '0xE82Fa4d4Ff25bad8B07c4d1ebd50e83180DD5eB8', fromBlock: 21481309 }, - bsc: { factory: '0x30D9e1f894FBc7d2227Dd2a017F955d5586b1e14', fromBlock: 42363117 }, -}) - -module.exports.smartbch.staking = staking('0xfA3D02c971F6D97076b8405500c2210476C6A5E8','0x56381cb87c8990971f3e9d948939e1a95ea113a3') -module.exports.bsc.staking = staking('0xb4d117f9c404652030f3d12f6de58172317a2eda','0x701aca29ae0f5d24555f1e8a6cf007541291d110') -module.exports.base.staking = staking('0x866932399DEBdc1694Da094027137Ebb85D97206','0xcdba3e4c5c505f37cfbbb7accf20d57e793568e3') diff --git a/projects/goblin/abi.json b/projects/goblin/abi.json deleted file mode 100644 index da1e948a365..00000000000 --- a/projects/goblin/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accgoblinPerShare, uint16 depositFeeBP, uint256 lpSupply)" -} \ No newline at end of file diff --git a/projects/goblin/index.js b/projects/goblin/index.js deleted file mode 100644 index b8bf460cc29..00000000000 --- a/projects/goblin/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const {masterChefExports} = require('../helper/masterchef') - -const GOBLIN = "0x81570aB82533cbd5DB529d29596180eF688c52ba" -module.exports={ - misrepresentedTokens: true, - methodology: "Tokens in masterchef", - ...masterChefExports("0x0a05f6022D6e051539b190Bff7E484068A7dd0a4", "fantom", GOBLIN) -} -module.exports.deadFrom = '2022-05-09' \ No newline at end of file diff --git a/projects/goblingold.js b/projects/goblingold.js deleted file mode 100644 index 09d5b1905a1..00000000000 --- a/projects/goblingold.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getProvider, } = require('./helper/solana') -const { Program, } = require("@project-serum/anchor"); -const vaults = { - "BTC": "FvqYV2Cg7s7iWKUBTWkyybKuz1m85ny6ijDqDXEXVyNv", - "ETH": "u11s7BKVbYncjcMJX2HjKeahfRuzNovQWtcpJhCTP1x", - "MNGO": "E5znWeT1pEiMXpko8JUNvGfs1X6cuupHZB2PeDhx5mt8", - "ORCA": "9b2J1JjsvnkLc9ZQmARDbq7EMhCDzr4QG4fAR6TfZkTK", - "RAY": "6w6NRsDUnBieNiVBHoixEqqfGnr2wXdoSWWZRn7S36db", - "SAMO": "g5S5WcsYn9CJE6VSwaCoaESZq3Da9Mn7gvt1MB2MFmU", - "SRM": "3MvY3Tk3PmQhEeHqyfJA9gDBq83MUM92rgbhLeY27JLv", - "USDC": "ATJpBsXbhio5c5kqgMHmAfFDdjsS3ncZmZyZzNY87XqZ", - "USDT": "ATpgW6RzUvEt13rU9NMj1HsmEeW2zC9a1k5AQbako8md", - "WSOL": "CNJrJumoPRxvCaQZ2MJTEUUitwwen955JsxiUvoJa7Wp", - "mSOL": "7reMieMkh3MCJXQqmnv9xhCBcy3B5qaGbhf6HC8kZFyc", - "soETH": "B7TjXfMHG6sun7KdGFb4sWVCKikTKuaYitbosKc37vVf", - "stSOL": "47hnvWxWo4PpPNqPF78cJ4abjpT45qY9of8hokeLzEUX" -} - -async function tvl(api) { - - const provider = getProvider() - const programId = 'GGo1dnYpjKfe9omzUaFtaCyizvwpAMf3NhxSCMD61F3A' - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const data = await program.account.vaultAccount.fetchMultiple(Object.values(vaults)) - data.forEach(i => api.add(i.inputMintPubkey.toString(), i.currentTvl)) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} diff --git a/projects/goblinscash/api.js b/projects/goblinscash/api.js deleted file mode 100644 index 988beab608d..00000000000 --- a/projects/goblinscash/api.js +++ /dev/null @@ -1,8 +0,0 @@ -const index = require('./index') - -module.exports = { - smartbch: { - tvl: () => 0, - staking: index.smartbch.staking, - } -} \ No newline at end of file diff --git a/projects/goblinscash/index.js b/projects/goblinscash/index.js deleted file mode 100644 index b72b8959c93..00000000000 --- a/projects/goblinscash/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumUnknownTokens } = require('../helper/unknownTokens') -const { stakingPricedLP } = require("../helper/staking"); - -const goblinStaking = "0x48B8aCe692ad8BD2E3139C65bFf7d28c048F8f00"; -const GOB = "0x56381cB87C8990971f3e9d948939e1a95eA113a3"; - -const treasuryAddress = "0x259D4CBA522A15AA5Db641D0E06d6f7Aa040D89f"; -const flexUSD = ADDRESSES.smartbch.flexUSD; -const GOB_flexUSD_MLP = "0xC20A4f3012bA2Df47544d4926B19604Fa777FB01"; -const GOB_BCH_MLP = "0x86b0fd64234a747681f0235b6cc5fe04a4d95b31"; -const chain = "smartbch" - -module.exports = { - misrepresentedTokens: true, - smartbch: { - staking: stakingPricedLP(goblinStaking, GOB, chain, GOB_flexUSD_MLP, "flex-usd", false, 18), - tvl: async (_, _b, { [chain]: block }) => { - return sumUnknownTokens({ chain, block, owner:treasuryAddress, tokens: [GOB_flexUSD_MLP, GOB_BCH_MLP, flexUSD], useDefaultCoreAssets: true }) - } - }, - methodology: - "Counts flexUSD and MistSwap's LP tokens (GOB-flexUSD, GOB-WBCH) on the treasury contract towards TVL and staked GOB tokens towards staking", -}; diff --git a/projects/gogocoin/index.js b/projects/gogocoin/index.js deleted file mode 100644 index db9d4cb22f9..00000000000 --- a/projects/gogocoin/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { - pool2 -} = require('../helper/pool2'); - -const USDC_POOL_STAKING_CONTRACT = '0x7FCf0f2dcEc385FCCEd98240A8A4bEC8e91da7D1' -const GOVERNANCE_STAKING_CONTRACT = '0xd46206003FfB72Fe5FEB04373328C62e2bF864f9' -const LP_TOKEN_USDC = '0xe33Dd0C0534189b66B9872425189399e2B9c169D' -const LP_STAKING_CONTRACT = '0x5dc4ffc0f9c2261dcaae7f69e1a8837afbd577bc' -const GOGOCOIN = '0xdD2AF2E723547088D3846841fbDcC6A8093313d6' -const USDC = ADDRESSES.polygon.USDC -const chain = 'polygon' - -async function chainTVL(timestamp, block, chainBlocks) { - const balances = {} - const transform = i => `polygon:${i}`; - - const USDCPool = await sdk.api.abi.call({ - target: USDC_POOL_STAKING_CONTRACT, - abi: "uint256:totalSupply", - chain: chain, - block: chainBlocks[chain] - }) - - sdk.util.sumSingleBalance(balances, transform(USDC), USDCPool.output) - return balances -} - -async function stakingX(timestamp, block, chainBlocks) { - const balances = {} - const transform = i => `polygon:${i}`; - - const totalGOGOLocked = await sdk.api.abi.call({ - target: GOVERNANCE_STAKING_CONTRACT, - abi: "uint256:getTotalLockedGogo", - chain: chain, - block: chainBlocks[chain] - }) - - sdk.util.sumSingleBalance(balances, transform(GOGOCOIN), totalGOGOLocked.output) - - return balances -} - -async function pool2X(...args) { - const transform = i => `polygon:${i}`; - return pool2(LP_STAKING_CONTRACT, LP_TOKEN_USDC, chain, transform)(...args) -} - -module.exports = { - start: '2021-12-01', - polygon: { - staking: stakingX, - pool2: pool2X, - tvl: chainTVL, - }, - methodology: "We count liquidity that it is in our USDC-GOGO Liquidity Pool, we also count the total locked USDC in our USDC Staking contract and we count the numbers of GOGOs staked in our GOGO Staking contract.", -} \ No newline at end of file diff --git a/projects/gogopool/index.js b/projects/gogopool/index.js deleted file mode 100644 index faaac0f7760..00000000000 --- a/projects/gogopool/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const GGAVAX_CONTRACT = '0xA25EaF2906FA1a3a13EdAc9B9657108Af7B703e3'; -const GGP_STAKING_CONTRACT = '0xB6dDbf75e2F0C7FC363B47B84b5C03959526AecB'; -const MINIPOOL_MANAGER_CONTRACT = '0xb84fA022c7fE1CE3a1F94C49f2F13236C3d1Ed08'; - -const ggAVAXTotalAssetsAbi = "function totalAssets() view returns (uint256)"; -const AvaxInMinipoolsABI = "function getTotalAVAXLiquidStakerAmt() view returns (uint256)"; -const GGPStakedAbi = "function getTotalGGPStake() view returns (uint256)"; - -const wavax = ADDRESSES.avax.WAVAX; -const ggp = "0x69260B9483F9871ca57f81A90D91E2F96c2Cd11d"; - -async function tvl(api) { - const avax_lst_side = await api.call({ abi: ggAVAXTotalAssetsAbi, target: GGAVAX_CONTRACT }); - // Minipool operators are matched with LST AVAX 1:1 - const avax_minipool_side = await api.call({ abi: AvaxInMinipoolsABI, target: MINIPOOL_MANAGER_CONTRACT }); - - // Minipool operators must deposit GGP in the protocol to be matched with AVAX - const ggp_staked = await api.call({ abi: GGPStakedAbi, target: GGP_STAKING_CONTRACT }); - - const AVAX_TVL = parseFloat(avax_lst_side) + parseFloat(avax_minipool_side); - const GGP_tvl = ggp_staked; - - api.addTokens([wavax, ggp], [AVAX_TVL, GGP_tvl]) // add tokens to api (balances) -} - -module.exports = { - methodology: "GoGoPool TVL = AVAX on the LST side + AVAX on the Minipool side + GGP staked by GGP operators.", - avax: { - tvl, - } -} \ No newline at end of file diff --git a/projects/goku-money/index.js b/projects/goku-money/index.js deleted file mode 100644 index d4350292659..00000000000 --- a/projects/goku-money/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const COLLATERALS = { - [ADDRESSES.manta.USDC]: { - activePool: "0x50ef8B64c02B7913f15CbCDF0E7F44CC261195D6", - defaultPool: "0xac84B99F253F05b00bff36a06fA1CA5f5754E80F", - }, - [ADDRESSES.manta.USDT]: { - activePool: "0x74242b001869037594c8b59b191DF7284c6A3801", - defaultPool: "0xF42cE1F6F90Ea3B6254E2390B7E9467Fb1584AAA", - }, - // TIA - "0x6Fae4D9935E2fcb11fC79a64e917fb2BF14DaFaa": { - activePool: "0x00A14CF3A66De2D4585F399Ed4240d0F2730fFCB", - defaultPool: "0x6851255D2CEc9D66502282D3C6F11f552186eDA7", - }, - [ADDRESSES.manta.WETH]: { - activePool: "0xd58300481551F2bB81343abB5C6288fEaCC72Be4", - defaultPool: "0x2C903a6858374925f5020B8EA2D88E545515eD4D", - }, - // MANTA - "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5": { - activePool: "0xEBC3E41176C1d63E8B99271cD75dD3FBa907CbAf", - defaultPool: "0x64a602a31030D531Ca0dF336A811ab0247b87165", - }, - // wUSDM - "0xbdAd407F77f44F7Da6684B416b1951ECa461FB07": { - activePool: "0xdf4A63E03A327E1Fc68460622937A7BcC300e66b", - defaultPool: "0xF79BA93C02dD2B0529eF254075428aAdb2416595", - }, - // STONE - [ADDRESSES.berachain.STONE]: { - activePool: "0x5Ee4DC855Ca71158CB0516a27e01bDB18C05D923", - defaultPool: "0x558a64CB6e2e335Fc468ab3215d5c7Fe5dF26F31", - }, -} - -function getCollateralOwnersAndToken() { - const tokensAndOwners = [] - for (const [collateral, collateralInfo] of Object.entries(COLLATERALS)) { - const { activePool, defaultPool } = collateralInfo - tokensAndOwners.push([collateral, activePool]) - tokensAndOwners.push([collateral, defaultPool]) - } - return tokensAndOwners; -} - - -module.exports = { - start: '2023-10-31', // 01 Nov 2023 - methodology: "Total locked collateral assets (in ERC-20 form) in ActivePool and DefaultPool, plus total staked GAI in StabilityPool", - manta: { - tvl: sumTokensExport({ - tokensAndOwners: [ - ...getCollateralOwnersAndToken(), - ] - }), - }, -}; diff --git a/projects/gold-dao/index.js b/projects/gold-dao/index.js deleted file mode 100644 index 2e7cc85adcd..00000000000 --- a/projects/gold-dao/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { toUSDTBalances } = require("../helper/balances"); -const { get } = require('../helper/http') - -async function tvl() { - const url = 'https://teiwz-pqaaa-aaaap-ag7hq-cai.raw.icp0.io/gold_nft_metrics'; - const data = await get(url); - return toUSDTBalances(data.tvl); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "TVL counts gold bar owned by gold dao and convert gram to usd price using Forex Public Data", - icp: { - tvl, - }, -} diff --git a/projects/goldbank/index.js b/projects/goldbank/index.js deleted file mode 100644 index fbb33cb9a4e..00000000000 --- a/projects/goldbank/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { compoundExports } = require("../helper/compound"); -const unitroller = "0x537A09Fd99Fc7eF737d297cDEeAB3b7f9602308c"; - -module.exports = { - hallmarks: [ - ['2023-06-11', 'Project rugged'], - ], - deadFrom: '2023-06-11', - methodology: - "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - arbitrum: { - ...compoundExports(unitroller), - }, -}; - -module.exports.arbitrum.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/golden-finance/index.js b/projects/golden-finance/index.js deleted file mode 100644 index aa062bbd2f4..00000000000 --- a/projects/golden-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -const zetaVault = "0xea8bC5EF6327f666823AefC56Cd2afe47cD2d0d7"; - -module.exports = { - zeta: { - tvl: gmxExports({ vault: zetaVault }), - }, -}; diff --git a/projects/golden-otter-hub/index.js b/projects/golden-otter-hub/index.js deleted file mode 100644 index 66935c0f122..00000000000 --- a/projects/golden-otter-hub/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') - -const GOLDEN_OTTER = '0x57268aFa4E496684611aAFB1E20D2116283C487e'; -const OTTERVERSE = '0xBD179ad384a11Ac2162c0E808212ee3699D18447'; - -const LEGACY_STAKING_CONTRACT = '0xc631A1A2E53984b461556b030A532BB83Bf49aEb'; -const OTTV_STAKING_CONTRACT = '0x566c5441de4e952bc40aEE33004e42Da2Bc1e982'; - -const PAIR_GOTR_WLD = '0xccbbace82078705cab7f49b22fbdebfc3eb58840'; -const PAIR_OTTV_WLD = '0x9704d4c477a865ca359605d701aeffa1c4553e81'; - -const staking = async (api) => { - return sumUnknownTokens({ - tokensAndOwners: [ - [GOLDEN_OTTER, LEGACY_STAKING_CONTRACT], - [OTTERVERSE, OTTV_STAKING_CONTRACT], - ], - lps: [PAIR_GOTR_WLD, PAIR_OTTV_WLD], - api, - useDefaultCoreAssets: true, - }); -}; - -module.exports = { - methodology: 'TVL is calculated by checking the balances of GOLDEN_OTTER and OTTERVERSE tokens staked in their respective contracts, and valuing them using their LP pairs against WLD.', - wc: { - tvl: () => ({}), - staking, - } -}; diff --git a/projects/goldenasset/index.js b/projects/goldenasset/index.js deleted file mode 100644 index 8e6dd54ffa2..00000000000 --- a/projects/goldenasset/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { fetchURL } = require('../helper/utils'); - -const PRICE_DISCOUNT = 0.098; - -module.exports = { - misrepresentedTokens: true, - start: 1727914080, // Protocol launch: October 3, 2024 UTC - - sei: { - tvl: async (api) => { - // The timestamp here is a number (seconds since epoch) - // 1. Fetch the total token supply - const totalSupply = await api.call({ - abi: 'erc20:totalSupply', - target: '0x372B2dC06478AA2c8182EeE0f12eA0e9A15E2913', - }); - - // 2. Fetch the historical price - const url = `https://api.goldenasset.org/prices/gem?adjustTo=2024-12-03`; - const response = await fetchURL(url); - const { price: currentPrice, history } = response.data; - - // 3. Convert the timestamp to an ISO date string at UTC 00:00 - const dateVal = new Date(Number(api.timestamp) * 1000); - if (isNaN(dateVal.getTime())) { - throw new Error(`Invalid timestamp: ${api.timestamp}`); - } - const isoDateKey = dateVal - .toISOString() - .split('T')[0] + 'T00:00:00.000Z'; - - // 4. Retrieve the historical price from the history (fallback to currentPrice) - const rawPrice = history[isoDateKey] !== undefined - ? history[isoDateKey] - : currentPrice; - - // 5. Apply the discount - const price = rawPrice * (1 - PRICE_DISCOUNT); - - // 6. Calculate TVL in USD - const supply = totalSupply / 1e18; - return { 'usd-coin': supply * price }; - }, - }, -}; diff --git a/projects/goldfinch/abi.json b/projects/goldfinch/abi.json deleted file mode 100644 index 868971d5c41..00000000000 --- a/projects/goldfinch/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "totalLoansOutstanding": "uint256:totalLoansOutstanding", - "pools": "function pools(address) view returns (uint256 totalMinted, uint256 totalPrincipalRedeemed, bool created)", - "assets": "uint256:assets" -} \ No newline at end of file diff --git a/projects/goldfinch/index.js b/projects/goldfinch/index.js deleted file mode 100644 index 5e9293655e9..00000000000 --- a/projects/goldfinch/index.js +++ /dev/null @@ -1,136 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { sumTokens } = require("../helper/unwrapLPs"); -const abi = require("./abi.json"); -const BigNumber = require("bignumber.js"); -const { getLogs } = require('../helper/cache/getLogs') - -const seniorPoolAddress = "0x8481a6EbAf5c7DABc3F7e09e44A89531fd31F822"; -const gfFactoryAddress = "0xd20508E1E971b80EE172c73517905bfFfcBD87f9"; -const poolTokensAddress = "0x57686612C601Cb5213b01AA8e80AfEb24BBd01df"; -const V2_START = 13097274; -const USDC = ADDRESSES.ethereum.USDC; -let _trancheAddresses - -const getTranchedPoolAddresses = async (api) => { - if (!_trancheAddresses) _trancheAddresses = _get() - return _trancheAddresses - - async function _get() { - const logs = await getLogs({ - target: gfFactoryAddress, - api, - fromBlock: V2_START, - topic: "PoolCreated(address,address)", - }); - return logs.map((l) => "0x" + l.topics[1].substr(26)); - } -}; - -/** - * This metric represents DeFiLlama's "base" definition of Total Value Locked. It includes - * only USDC balances in the protocol (that is, in the `SeniorPool` and in all `TranchedPool`s). - */ -const tvl = async (api) => { - const tranchedPoolAddresses = await getTranchedPoolAddresses(api); - return api.sumTokens({ tokens: [USDC], owners: [seniorPoolAddress, ...tranchedPoolAddresses]}) -}; - -/** - * This metric supplements the "base" `tvl()` metric, by additionally counting value that has - * been borrowed through the protocol. - * - * Goldfinch considers the protocol's Total Value Locked to be the sum of `tvl()` and `borrowed()`. - * - * This metric does not include the interest gains of Backers of `TranchedPool`s (though those - * interest gains are reflected in the USDC balance of `TranchedPool`s in `tvl()`, before - * that balance is withdrawn). This metric also does not reflect "writedowns" in the value of - * the principal of Backers of `TranchedPool`s, as there is no such writedown mechanic for Backers. - * Only the `SeniorPool` has a writedown mechanic -- which is reflected in this metric (via - * `SeniorPool.assets()`). - */ -const borrowed = async (api) => { - const ethBlock = api.block - const _seniorPoolUsdcBalances = {}; - await sumTokens( - _seniorPoolUsdcBalances, - [seniorPoolAddress].map((pool) => [USDC, pool]), - ethBlock - ); - const seniorPoolUsdcBalance = new BigNumber(_seniorPoolUsdcBalances[USDC] || 0); - - const balances = {}; - - const tranchedPoolAddresses = await getTranchedPoolAddresses(api); - - const poolStats = ( - await sdk.api.abi.multiCall({ - calls: tranchedPoolAddresses.map((tranchedPoolAddress) => ({ - target: poolTokensAddress, - params: tranchedPoolAddress, - })), - abi: abi.pools, - ethBlock, - }) - ).output; - - const totalInvested = await poolStats.reduce((sum, thisPoolStats) => { - return sum - .plus(new BigNumber(thisPoolStats.output.totalMinted)) - .minus(new BigNumber(thisPoolStats.output.totalPrincipalRedeemed)); - }, new BigNumber(0)); - - const seniorAssets = new BigNumber( - ( - await sdk.api.abi.call({ - abi: abi.assets, - target: seniorPoolAddress, - ethBlock, - }) - ).output - ); - - const seniorLoansOutstanding = new BigNumber( - ( - await sdk.api.abi.call({ - abi: abi.totalLoansOutstanding, - target: seniorPoolAddress, - ethBlock, - }) - ).output - ); - - // `totalInvested` reflects the senior pool's investments. So we subtract out - // `seniorLoansOutstanding`, to avoid double-counting given the inclusion of - // `SeniorPool.totalLoansOutstanding()` in the definition of `SeniorPool.assets()`. - // - // We also subtract out `seniorPoolUsdcBalance`, which is included in `SeniorPool.assets()`, - // and which we do not want to count in this metric so that this metric is properly - // supplementary to, and not double-counting vis-a-vis, `tvl()`. - // - // Note that for (a) a tranched pool that is open and whose principal hasn't been drawndown - // yet, and for (b) a tranched pool that has had principal repaid but not yet withdrawn, there - // is a double-counting phenomenon for such a pool: the pool's USDC balance counted by - // `tvl()`, and its principal counted by `totalInvested`. We do not worry about preventing - // that double-counting, because it is transient; it disappears once the pool is drawndown - // (in the case of (a)) or withdrawn from (in the case of (b)). - const borrowed = totalInvested - .plus(seniorAssets) - .minus(seniorLoansOutstanding) - .minus(seniorPoolUsdcBalance); - - sdk.util.sumSingleBalance(balances, USDC, String(borrowed)); - - return balances; -}; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl, - borrowed, - }, - methodology: - "The base TVL metric counts only excess USDC liquidity in the Senior Pool, and USDC in all the Borrower Pools. " + - "The Borrowed TVL component additionally counts loans made by the Senior Pool and the Backers of all Borrower Pools.", -}; diff --git a/projects/goldilocks/index.js b/projects/goldilocks/index.js deleted file mode 100644 index cf39929dfce..00000000000 --- a/projects/goldilocks/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const HONEY_ADDRESS = ADDRESSES.berachain.HONEY -const GOLDISWAP_ADDRESS = '0xb7E448E5677D212B8C8Da7D6312E8Afc49800466' -const RUSD_ADDRESS = '0x09D4214C03D01F49544C0448DBE3A27f768F2b34' -const RUSDVAULT_ADDRESS = '0x8f65453BF050233d3BD6a08A5Eb53C1fD73312EC' -const UNIBTC_ADDRESS = '0xC3827A4BC8224ee2D116637023b124CED6db6e90' -const UNIBTCVAULT_ADDRESS = '0x8742DB52a4EAEFE88bE5D3431980E221aaAA1EE3' -const RSETH_ADDRESS = ADDRESSES.berachain.rsETH -const RSETHVAULT_ADDRESS = '0xE4dC8142CEd52C547384032e43379b0514341c22' - -async function tvl(api) { - const goldiswapBal = await api.call({ - abi: 'erc20:balanceOf', - target: HONEY_ADDRESS, - params: [GOLDISWAP_ADDRESS] - }) - api.add(HONEY_ADDRESS, goldiswapBal) - - const rusdvaultBal = await api.call({ - abi: 'erc20:balanceOf', - target: RUSD_ADDRESS, - params: [RUSDVAULT_ADDRESS] - }) - api.add(RUSD_ADDRESS, rusdvaultBal) - - const unibtcvaultBal = await api.call({ - abi: 'erc20:balanceOf', - target: UNIBTC_ADDRESS, - params: [UNIBTCVAULT_ADDRESS] - }) - api.add(UNIBTC_ADDRESS, unibtcvaultBal) - - const rsethvaultBal = await api.call({ - abi: 'erc20:balanceOf', - target: RSETH_ADDRESS, - params: [RSETHVAULT_ADDRESS] - }) - api.add(RSETH_ADDRESS, rsethvaultBal) -} - -module.exports = { - methodology: "The TVL metric counts the amount of Honey in Goldiswap and the amount of the deposit token in the rUSD, uniBTC, and rsETH Goldivaults.", - berachain: { - tvl - } -} \ No newline at end of file diff --git a/projects/goldlink/index.js b/projects/goldlink/index.js deleted file mode 100755 index 84a749b7bf9..00000000000 --- a/projects/goldlink/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - methodology: 'Delta neutral farming in GMX Vault', - start: '2024-05-25', - doublecounted: true, - arbitrum: { - tvl: sumERC4626VaultsExport({ vaults: ['0xd8dd54df1a7d2ea022b983756d8a481eea2a382a',], isOG4626: true, }), - }, - avax: { - tvl: sumERC4626VaultsExport({ vaults: ['0xbE6eB54D1e96CC59338BE9A281d840AcE82df095',], isOG4626: true, }), - } -} \ No newline at end of file diff --git a/projects/goldsand/index.js b/projects/goldsand/index.js deleted file mode 100644 index e49d7daaccf..00000000000 --- a/projects/goldsand/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { getLogs2 } = require("../helper/cache/getLogs"); -const { nullAddress } = require("../helper/tokenMapping"); - -function customCacheFunction({ cache, logs }) { - logs = logs.filter(log => (log.funderAccountAddress !== '0x22B35d437b3999F5C357C176adEeC1b8b0F35C13') && (log.recipient !== '0x22B35d437b3999F5C357C176adEeC1b8b0F35C13')) - if (!cache.logs) cache.logs = [] - let sum = cache.logs[0] ?? 0 - sum = logs.reduce((acc, curr) => acc + Number(curr.amount), sum) - cache.logs = [sum] - return cache -} - -module.exports = { - methodology: 'TVL is the sum of deposits minus the sum of withdrawals. Since there is no liquid staking token (yet) and deposited ETH greater than 32 is automatically staked in the beacon chain, the contract balance itself is not the TVL.', - hallmarks: [ - [1732231247, "Privately staked funds deposited to contract."], - ], - timetravel: false, - ethereum: { - tvl: async (api) => { - // Get Funded events - const [fundedLogs] = await getLogs2({ - api, - target: "0x6659423929E1a00119fc3F79C8e4F443cc6fd36f", - extraKey: 'Funded', - eventAbi: "event Funded (address indexed funder, uint256 indexed amount)", - fromBlock: 20966151, - customCacheFunction, - }) - - // Get FundedOnBehalf events - const [fundedOnBehalfLogs] = await getLogs2({ - api, - target: '0x6659423929E1a00119fc3F79C8e4F443cc6fd36f', - extraKey: 'FundedOnBehalf', - eventAbi: 'event FundedOnBehalf(address funder, address funderAccountAddress, uint256 amount)', - fromBlock: 20966151, - customCacheFunction, - }) - - // Get ETHWithdrawnForUser events - const [withdrawnForUserLogs] = await getLogs2({ - api, - target: '0x6659423929E1a00119fc3F79C8e4F443cc6fd36f', - extraKey: 'ETHWithdrawnForUser', - eventAbi: 'event ETHWithdrawnForUser(address recipient, address requestedBy, uint256 amount)', - fromBlock: 20966151, - customCacheFunction, - }) - - api.addGasToken((fundedLogs + fundedOnBehalfLogs - withdrawnForUserLogs).toString()) - }, - }, -} diff --git a/projects/goldstation-dex-v3/index.js b/projects/goldstation-dex-v3/index.js deleted file mode 100644 index 849813e57b4..00000000000 --- a/projects/goldstation-dex-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - - -module.exports = uniV3Export({ - avax: { factory: "0xF72f4652785a5186EDF7b93a9cfd246FeFc0ef5c", fromBlock: 52760680, }, -}) diff --git a/projects/goldstation-dex/index.js b/projects/goldstation-dex/index.js deleted file mode 100644 index 5b00a45bf49..00000000000 --- a/projects/goldstation-dex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - klaytn: { - tvl: getUniTVL({ factory: '0x347E5ce6764DF9DF85487BEA523D3e242762aE88', useDefaultCoreAssets: false }), - staking: sumTokensExport({ tokensAndOwners: [ - ['0x4836cc1f355bb2a61c210eaa0cd3f729160cd95e', '0x4d55B04AC52b2CA41ad04337FF13CbAefbdC8954'], - ]}) - }, -} diff --git a/projects/goldstation-rwa/index.js b/projects/goldstation-rwa/index.js deleted file mode 100644 index c909ffcc895..00000000000 --- a/projects/goldstation-rwa/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const KAIA_GPC = '0x27397bfbefd58a437f2636f80a8e70cfc363d4ff'; -const AVALANCHE_GPC = '0x1b27D7A06DeEa4d5CB4fd60c164153C90f64281D'; - -async function kaiaGpcTotalSupply(api) { - const supply = await api.call({ abi: 'erc20:totalSupply', target: KAIA_GPC }) - api.add(KAIA_GPC, supply) -} - -async function avalancheTotalSupply(api) { - const supply = await api.call({ abi: 'erc20:totalSupply', target: AVALANCHE_GPC }) - api.add(AVALANCHE_GPC, supply) -} - -module.exports = { - klaytn: { - tvl:kaiaGpcTotalSupply, - }, - avax: { - tvl: avalancheTotalSupply, - } -} - diff --git a/projects/goldstation-staking/index.js b/projects/goldstation-staking/index.js deleted file mode 100644 index 8a2dba4ab12..00000000000 --- a/projects/goldstation-staking/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const klayStakingContract = '0x6569B14043c03537B5B125F5Ac5De3605a47dC76'; - -async function tvl(api) { - const totalStaked = await api.call({ target: klayStakingContract, abi: "uint256:totalStaked", }); - api.addGasToken(totalStaked); -} - -module.exports = { - klaytn: { tvl } -} - diff --git a/projects/goledo/index.js b/projects/goledo/index.js deleted file mode 100644 index cfafc8c6f22..00000000000 --- a/projects/goledo/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { aaveV2Export } = require('../helper/aave'); -const methodologies = require('../helper/methodologies'); -const { staking } = require('../helper/unknownTokens') - -const stakingContract = "0x7d236c0486c9579507C67B36d175990CAb5100fC"; -const stakedToken = "0xa4B59aA3De2af57959C23E2c9c89a2fCB408Ce6A"; - -const stakingContractPool2 = "0x80161779e4d5EcBC33918ca37f7F263DDc480017"; -const stakedToken_WrappedCurrency_spLP = "0x93D4Be3C0B11fe52818cD96A5686Db1E21D749ce"; -const lendingpool = "0x9aeba63d77d25c95dadd057db74741517862f360"; - -module.exports = { - methodology: methodologies.lendingMarket, - conflux: { - ...aaveV2Export(lendingpool), - staking: staking({ owner: stakingContract, tokens: [stakedToken], lps: [stakedToken_WrappedCurrency_spLP], useDefaultCoreAssets: true, }), - pool2: staking({ owner: stakingContractPool2, tokens: [stakedToken_WrappedCurrency_spLP], lps: [stakedToken_WrappedCurrency_spLP], useDefaultCoreAssets: true, }), - }, - hallmarks:[ - [1671415334, "Goledo Creation timestamp"] - ], -}; -module.exports.conflux.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' diff --git a/projects/golff-finance/index.js b/projects/golff-finance/index.js deleted file mode 100644 index 43c41818bb9..00000000000 --- a/projects/golff-finance/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const config = { - ethereum: { comptroller: '0xf22874F4aC836f23379f5dbd08dCA79afC523396', cether: '0x1b658a5804ee3985723114eeed6a9a22d18caa42' }, - bsc: { comptroller: '0x75fc5839108DAf601431801Ce960bbF44c476d1a', cether: '0x3920923abe2852a62e5e88a2651d192dda5709a4' }, - heco: { comptroller: '0x8bB3e552968ba906F19C217DFE98341AD9F03230', cether: '0x571fc95e14424aceb040bf68e23f92eec280042c' }, -} - - -Object.keys(config).forEach(chain => { - module.exports[chain] = compoundExports2(config[chain]) - // delete module.exports[chain].borrowed // removed because it is higher than deposited, probably will never be repaid -}) - -module.exports.bsc.borrowed = () => ({}) -module.exports.ethereum.borrowed = () => ({}) -module.exports.heco.borrowed = () => ({}) - -module.exports.deadFrom = '2022-12-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/gomble/index.js b/projects/gomble/index.js deleted file mode 100644 index 0e4cf9e66d2..00000000000 --- a/projects/gomble/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const stakingContractAddress = '0xAB8c9Eb287796F075C821ffafBaC5FeDAa4604d5'; -const testAuctionContractAddress = '0xe619F1DF06EeaAF443dFC5c09cc96e2C7C91d130'; - -async function tvl(api) { - const tokens = await api.call({ abi: 'address[]:getRegisteredTokens', target: stakingContractAddress }) - const vTokens = await api.multiCall({ abi: 'function getRegisteredVToken(address) view returns (address)', calls: tokens, target: stakingContractAddress }) - await api.sumTokens({ owners: [stakingContractAddress, testAuctionContractAddress], tokens: vTokens.concat(tokens).concat([ADDRESSES.null]) }); -} - -module.exports = { - bsc: { - tvl, - }, -} diff --git a/projects/gondi-v2/index.js b/projects/gondi-v2/index.js deleted file mode 100644 index df2f807072d..00000000000 --- a/projects/gondi-v2/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport, } = require('../helper/unwrapLPs'); - -// https://docs.gondi.xyz/protocol-contracts -const multiSourceLoan = "0x478f6F994C6fb3cf3e444a489b3AD9edB8cCaE16"; -const userVault = "0x14a6Dcebb2Bb73aae1b199CCAadA75247b81976D"; - -module.exports = { - methodology: `Counts the floor value of all deposited NFTs with Chainlink price feeds.`, - ethereum: { - tvl: sumTokensExport({ owners: [multiSourceLoan, userVault], resolveNFTs: true, }), - } -} diff --git a/projects/gondi-v3/index.js b/projects/gondi-v3/index.js deleted file mode 100644 index 38ebb7ee33f..00000000000 --- a/projects/gondi-v3/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport, } = require('../helper/unwrapLPs'); - -// https://docs.gondi.xyz/protocol-contracts -const multiSourceLoan = "0xf65b99ce6dc5f6c556172bcc0ff27d3665a7d9a8"; -const userVault = "0x823de2c44369e94cac3da789ad4b6493e27e4bfe"; - -module.exports = { - methodology: `Counts the floor value of all deposited NFTs with Chainlink price feeds.`, - ethereum: { - tvl: sumTokensExport({ owners: [multiSourceLoan, userVault], resolveNFTs: true, }), - } -} diff --git a/projects/gondi/index.js b/projects/gondi/index.js deleted file mode 100644 index 862ffefb54b..00000000000 --- a/projects/gondi/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport, } = require('../helper/unwrapLPs'); - -// Vaults -const multiSourceLoan = "0xCa5a494Ca20483e21ec1E41FE1D9461Da77595Bd"; - -module.exports = { - methodology: `Counts the floor value of all deposited NFTs with Chainlink price feeds.`, - ethereum: { - tvl: sumTokensExport({ owners: [multiSourceLoan], resolveNFTs: true, }), - } -} diff --git a/projects/goober/abis.js b/projects/goober/abis.js deleted file mode 100644 index bfc5b2e7225..00000000000 --- a/projects/goober/abis.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - artGobblers: { - gooBalance: "function gooBalance(address user) view returns (uint256)", - }, - goober: { - reserves: "function getReserves() view returns (uint256 _gooReserve, uint256 _gobblerReserve, uint32 _blockTimestampLast)", - }, -}; diff --git a/projects/goober/index.js b/projects/goober/index.js deleted file mode 100644 index 50942a954e2..00000000000 --- a/projects/goober/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const abis = require("./abis"); - -module.exports = { - start: '2022-11-14', - methodology: - "Counts GOO balance of the vault then sums it with the total multiplier reserve based on the vaults pricing of a multiplier in GOO", -} - -module.exports["ethereum"] = { - tvl: async (api) => { - const gooberReserves = await api.call({ - target: "0x2275d4937b6bFd3c75823744d3EfBf6c3a8dE473", - abi: abis.goober.reserves, - }); - const gooBalance = await api.call({ - target: "0x60bb1e2AA1c9ACAfB4d34F71585D7e959f387769", - params: ["0x2275d4937b6bFd3c75823744d3EfBf6c3a8dE473"], - abi: abis.artGobblers.gooBalance, - }); - - const poolPricePerMult = gooberReserves._gooReserve / gooberReserves._gobblerReserve - - const gobbersInGoo = +gooberReserves._gooReserve - - return { - "0x600000000a36F3cD48407e35eB7C5c910dc1f7a8": +gooBalance + gobbersInGoo, - }; - }, -}; diff --git a/projects/good-ghosting/index.js b/projects/good-ghosting/index.js deleted file mode 100644 index e3009397887..00000000000 --- a/projects/good-ghosting/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require("../helper/cache"); - -const apiUrl = "https://goodghosting-api.com/v1/games"; - -const chainIdMap = { - ethereum: 1, - polygon: 137, - celo: 42220, - base: 8453, -}; - -const contractVersions = { - v200: ["2.0"], - v001: "0.0.1", - v002: "0.0.2", - v003: "0.0.3", -}; - -const isV2Game = (contractVersion) => { - const baseContractVersion = contractVersion.slice(0, 3); - - if (contractVersions.v200.indexOf(baseContractVersion) !== -1) { - return true; - } - return false; -} - -async function tvl(api) { - const gameData = await getConfig("good-ghosting", apiUrl) - const ownerTokens = [] - Object.values(gameData) - .filter((game) => game.networkId == chainIdMap[api.chain]) - .map((game) => { - const tokens = [game.depositTokenAddress, game.liquidityTokenAddress, game.gaugeLiquidityTokenAddress].filter(i => i) - ownerTokens.push([tokens, game.id]) - - if (isV2Game(game.contractVersion)) - ownerTokens.push([tokens, game.strategyController]) - }) - return sumTokens2({ api, ownerTokens}) -} - -module.exports = { - methodology: "counts the amount of interest bearing tokens owned by the smart game contract", - polygon: { tvl }, - celo: { tvl }, - base: {tvl} -}; diff --git a/projects/gooddollar/abi.json b/projects/gooddollar/abi.json deleted file mode 100644 index aed721a93cf..00000000000 --- a/projects/gooddollar/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "currentPriceDAI": "uint256:currentPriceDAI", - "totalDelegated": "uint256:totalDelegated" -} \ No newline at end of file diff --git a/projects/gooddollar/index.js b/projects/gooddollar/index.js deleted file mode 100644 index bf06b1bde37..00000000000 --- a/projects/gooddollar/index.js +++ /dev/null @@ -1,96 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require('./abi.json'); -const BigNumber = require("bignumber.js"); -const { sumTokens } = require("../helper/unwrapLPs"); - -const tokens = { - aUSDC: "0xbcca60bb61934080951369a648fb03df4f96263c", - DAI: ADDRESSES.ethereum.DAI, - cDAI: "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", - Gfuse: "0x495d133B938596C9984d462F007B676bDc57eCEC", // GoodDollar on Fuse - FUSE: "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d", // Fuse on Mainnet -}; - -const FUSE_STAKING = '0xA199F0C353E25AdF022378B0c208D600f39a6505'; -const GOV_STAKING = '0xFAF457Fb4A978Be059506F6CD41f9B30fCa753b0'; -const GOV_STAKING_V2 = '0xB7C3e738224625289C573c54d402E9Be46205546'; -const RESERVE_ADDRESS = '0xa150a825d425B36329D8294eeF8bD0fE68f8F6E0'; -const AAVE_STAKING_V2 = '0x3ff2d8eb2573819a9ef7167d2ba6fd6d31b17f4f'; -const COMPOUND_STAKING = '0xD33bA17C8A644C585089145e86E282fada6F3bfd'; -const COMPOUND_STAKING_V2 = '0x7b7246c78e2f900d17646ff0cb2ec47d6ba10754'; -const COMMUNITY_SAFE = '0x5Eb5f5fE13d1D5e6440DbD5913412299Bc5B5564'; -const GOODDOLLAR_DECIMALS = 2; - -async function eth(timestamp, ethBlock) { - const balances = {}; - await sumTokens(balances, [ - [tokens.aUSDC, AAVE_STAKING_V2], - [tokens.cDAI, COMPOUND_STAKING], - [tokens.cDAI, COMPOUND_STAKING_V2], - [tokens.cDAI, RESERVE_ADDRESS] - ], ethBlock) - - return balances; -} - -async function fuseStaking(timestamp, ethBlock, chainBlocks) { - const gdStaked = (await sdk.api.erc20.balanceOf({ - target: tokens.Gfuse, - chain: 'fuse', - owner: GOV_STAKING, - block: chainBlocks['fuse'], - })).output; - - const gdStakedV2 = (await sdk.api.erc20.balanceOf({ - target: tokens.Gfuse, - chain: 'fuse', - owner: GOV_STAKING_V2, - block: chainBlocks['fuse'], - })).output; - - const sumGdStaked = BigNumber(gdStaked).plus(gdStakedV2); - const gdInDAI = await convertGoodDollarsToDai(sumGdStaked, ethBlock); - - const balances = {}; - sdk.util.sumSingleBalance(balances, tokens.DAI, Number(gdInDAI)); - - return balances; -} - -// Required until GoodDollar lists on CoinGecko -async function convertGoodDollarsToDai(gdAmount, ethBlock) { - const gdPriceInDAI = (await sdk.api.abi.call({ - target: RESERVE_ADDRESS, - abi: abi.currentPriceDAI, - block: ethBlock - })).output; - - return await new BigNumber(gdPriceInDAI).times(gdAmount).div(10 ** GOODDOLLAR_DECIMALS); -} - -async function fuse(timestamp, ethBlock, chainBlocks) { - const fuseAmount = (await sdk.api.abi.call({ - abi: abi.totalDelegated, - chain: 'fuse', - target: FUSE_STAKING, - block: chainBlocks['fuse'] - })).output; - - const balances = {}; - sdk.util.sumSingleBalance(balances, tokens.FUSE, Number(fuseAmount)); - - return balances; -} - -module.exports = { - methodology: `Aggregation of funds staked in our contracts on Ethereum and Fuse, funds locked in reserve backing G$ token and community treasury. G$ value was converted to USD based on current price at the reserve.`, - misrepresentedTokens: true, - ethereum: { - tvl: eth - }, - fuse: { - staking: fuseStaking, - tvl: () => ({}), - }, -} \ No newline at end of file diff --git a/projects/goodentry/index.js b/projects/goodentry/index.js deleted file mode 100644 index ad43614d5bc..00000000000 --- a/projects/goodentry/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('../helper/abis/aave.json'); -const { getLogs } = require('../helper/cache/getLogs') - -const addressesProviderRegistry = '0x01b76559D512Fa28aCc03630E8954405BcBB1E02'; -const balanceOfAbi = "function balanceOf(address account) view returns (uint256)"; -const getLpAbi = "function getLendingPool() view returns (address)"; -const getReserveDataAbi = "function getReserveData(address asset) view returns (uint256 reserveConfigurationMap, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id)"; -const getUnderlyingAbi = "function getTokenAmounts(uint amount) external view returns (uint token0Amount, uint token1Amount)"; -const token0Abi = "function TOKEN0() view returns (address token, uint8 decimals)"; -const token1Abi = "function TOKEN1() view returns (address token, uint8 decimals)"; -// v2 getReserves ABI -const vaultReservesAbi = "function getReserves() view returns (uint baseAmount, uint quoteAmount, uint valueX8)"; -const factory = "0xddec418c1a825ac09ad83cc1a28a2c5bcd746050" - -async function tvl(api) { - // GoodEntry v1 - const addressesProviders = await api.call({ target: addressesProviderRegistry, abi: abi["getAddressesProvidersList"], }) - const validAddressesProviders = addressesProviders.filter((ap) => ap != ADDRESSES.null) - const lendingPools = await api.multiCall({ calls: validAddressesProviders, abi: getLpAbi, }) - const aTokens = await api.multiCall({ calls: lendingPools, abi: abi["getReservesList"], }) - - const ge = {} - lendingPools.forEach((v, i) => { - ge[v] = { aTokens: aTokens[i] } - }) - - await Promise.all( - Object.keys(ge).map(async (pool) => { - const aTokens = ge[pool].aTokens; - const aTokenAddresses = (await api.multiCall({ abi: getReserveDataAbi, calls: aTokens, target: pool })).map(i => i.aTokenAddress) - const bals = (await api.multiCall({ abi: balanceOfAbi, calls: aTokenAddresses.map((v, i) => ({ target: aTokens[i], params: v })) })) - const underlyings = await api.multiCall({ abi: getUnderlyingAbi, calls: aTokens.map((v, i) => ({ target: v, params: bals[i] })), permitFailure: true, }) - const token0s = await api.multiCall({ abi: token0Abi, calls: aTokens, permitFailure: true, }) - const token1s = await api.multiCall({ abi: token1Abi, calls: aTokens, permitFailure: true, }) - underlyings.forEach((v, i) => { - if (v) { - api.add(token0s[i].token, v.token0Amount) - api.add(token1s[i].token, v.token1Amount) - } else { - api.add(aTokens[i], bals[i]) - } - }) - }) - ) - - const logs = await getLogs({ api, target: factory, eventAbi: 'event VaultCreated(address vault, address baseToken, address quoteToken, address vaultUpgradeableBeacon)', onlyArgs: true, fromBlock: 155743986, }) - const vaults = logs.map(log => log.vault) - - // GoodEntry v2 - let reserves = await api.multiCall({ calls: vaults, abi: vaultReservesAbi }) - reserves.forEach((v, i) => { - api.add(logs[i].baseToken, v.baseAmount) - api.add(logs[i].quoteToken, v.quoteAmount) - }) - -} - - -module.exports = { - methodology: - "For GoodEntry v1, counts the tokens locked in the Aave lending pool fork. For v2, calls a dedicated getReserves() function on the vault.", - hallmarks: [ - [1701376109, "V2 Launch"] - ], - arbitrum: { tvl, } -}; \ No newline at end of file diff --git a/projects/goose-farm/index.js b/projects/goose-farm/index.js deleted file mode 100644 index 3da68cd42f5..00000000000 --- a/projects/goose-farm/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const chainList = [ - {symbol: 'bsc', address: '0x0874f961178879cdbde3500544c49f864f232899', decimals: 18,}, - {symbol: 'ethereum', address: '0xe8a01d8dac4af19ec7a22cf87f3d141ce6e7e9fb', decimals: 6}, - {symbol: 'arbitrum', address: '0x0874F961178879cDbDe3500544C49F864F232899', decimals: 6}, - {symbol: 'op_bnb', address: '0x857aB0b4F236F7DD7E5AC5F96C0bbEbF230c2D3B', decimals: 18}, -] - -const getTvl = async (api, chain) => { - const lpToken= await api.call({ abi: 'address:lpToken', target: chain.address}) - const token= await api.call({ abi: 'address:token', target: chain.address}) - const supply= await api.call({ abi: 'uint256:totalSupply', target: lpToken}) - const price= await api.call({ abi: 'uint256:price', target: lpToken}) - api.addTokens(token, supply * price/Math.pow(10, chain.decimals)); -} - -const tvlFunctions = chainList.reduce((acc, chain) => { - acc[chain.symbol] = { - tvl: async (api) => getTvl(api, chain) - } - return acc; -}, {}); - -module.exports = { - ...tvlFunctions, -}; \ No newline at end of file diff --git a/projects/goose.js b/projects/goose.js deleted file mode 100644 index 112bb44cbd0..00000000000 --- a/projects/goose.js +++ /dev/null @@ -1,18 +0,0 @@ - -const { getConfig } = require('./helper/cache') -const { sumUnknownTokens } = require('./helper/unknownTokens') - -async function tvl(api) { - let data = await getConfig('goosedefi', 'https://api.goosedefi.com/vaults/getGusdVaultsData') - const pools = data.map(i => i.stratAddress) - const tokens = data.map(i => i.stakeTokenAddress) - // const tokens = await api.multiCall({ abi: 'address:pairAddress', calls: pools}) - const bals = await api.multiCall({ abi: 'uint256:wantLockedTotal', calls: pools}) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true, }) -} - -module.exports = { - misrepresentedTokens: true, - bsc: { tvl }, -}; diff --git a/projects/goosefx-v2/index.js b/projects/goosefx-v2/index.js deleted file mode 100644 index ae5b751a8f2..00000000000 --- a/projects/goosefx-v2/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2, } = require('../helper/solana') - -async function tvl() { - return sumTokens2({ owner: 'ALfS4oPB5684XwTvCjWw7XddFfmyTNdcY7xHxbh2Ui8s'}) -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/goosefx/index.js b/projects/goosefx/index.js deleted file mode 100644 index 06e73eb3998..00000000000 --- a/projects/goosefx/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2, } = require('../helper/solana') - -async function tvl() { - return sumTokens2({ tokenAccounts: ["8cMk8SxSY6b3a4wGhEF5rgXfsmUuqwPqpqhkH7z1gvXZ","6hDS2kFxSJCHcgX3WYwPULzrQrhSSQWTVDfxAToLKsAv","HJuwvd1bBPWr1fV1EKNnzgR7Kn3znU2WzwiGphb8Mv92", "Af6DjX1eRjfmnF1Lfe99FTgLUMKTVrsyf7CY2Kx9kzbT", "DA2nEQnCZFGhAZSQ5jKUHL4REPG57ixEMeTQAfWuWmJX", "294A1PmDuLHrmgcPKHoQd9GgrJxQ6y2WkpPhSVgbkUoD"] }) -} - -async function staking() { - return sumTokens2({ tokenAccounts: ['D9DhGq6MctzCzABhFybyuj3KHj3QbeG5H3JzXMGysY3T'] }) -} - -module.exports = { - timetravel: false, - solana: { - tvl, staking, - }, -} \ No newline at end of file diff --git a/projects/goplus-locker-v2/index.js b/projects/goplus-locker-v2/index.js deleted file mode 100644 index 7168cdf56fb..00000000000 --- a/projects/goplus-locker-v2/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const { vestingHelper } = require("../helper/unknownTokens") - -const abi = { - nextLockId: "function nextLockId() view returns (uint256)", - locks: "function locks(uint256) view returns (uint256 lockId, address token, bool isLpToken, address pendingOwner, address owner, uint24 tgeBps, uint24 cycleBps, uint256 amount, uint256 startTime, uint256 endTime, uint256 cycle, uint256 unlockedAmount, bytes32 feeNameHash)" -} - -const CONFIG = { - base: { - contracts: [ - { - address: "0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b", - } - ], - }, - ethereum: { - contracts: [ - { - address: "0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b", - } - ], - }, - bsc: { - contracts: [ - { - address: "0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b" - }, - { - address: "0x7AA03D4b9051cF299e7A2272953D0590FEE485A4" - } - ], - }, - arbitrum: { - contracts: [ - { - address: "0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b" - } - ], - }, -} - -async function tvl(api) { - const chain = api.chain - const contracts = CONFIG[chain].contracts - - for (const { address: contract } of contracts) { - const lockInfos = await api.fetchList({ lengthAbi: abi.nextLockId, itemAbi: abi.locks, target: contract }) - const tokens = lockInfos.filter(i => i.isLpToken).map(i => i.token) - const balance = await vestingHelper({ - cache: {}, - useDefaultCoreAssets: true, - owner: contract, - tokens: [...new Set(tokens)], - block: api.block, chain: api.chain, - }) - api.addBalances(balance) - } -} - -module.exports = { - methodology: "Calculates the total value LP tokens locked in the protocol's vesting contracts", - base: { tvl }, - ethereum: { tvl }, - bsc: { tvl }, - arbitrum: { tvl }, -} - diff --git a/projects/goplus-locker-v3/index.js b/projects/goplus-locker-v3/index.js deleted file mode 100644 index 279924f983a..00000000000 --- a/projects/goplus-locker-v3/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getCoreAssets } = require('../helper/tokenMapping'); - -const config = { - ethereum: { - locker: ['0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52'] - }, - bsc: { - locker: ['0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52'] - }, - base: { - locker: ['0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52'] - }, - arbitrum: { - locker: ['0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52'] - } -}; - -module.exports = { - misrepresentedTokens: true, - methodology: "Tracks the total value of assets locked in GoPlus Locker V3 contracts across multiple chains", -}; - -Object.keys(config).forEach(chain => { - const { locker } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const uniV3WhitelistedTokens = await getCoreAssets(api.chain); - await sumTokens2({ api, owners: locker, resolveUniV3: true, uniV3WhitelistedTokens, }); - return api.getBalancesV2().clone(2).getBalances() - }, - }; - }); \ No newline at end of file diff --git a/projects/gplx/index.js b/projects/gplx/index.js deleted file mode 100644 index dda68608d4f..00000000000 --- a/projects/gplx/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - hallmarks: [ - [1687320000, "Token supply compromise"], - [1692835200, "Protocol relauch"] - ], - pulse:{ - tvl: gmxExports({ vault: '0x4a305E6F8724Cb5F0106C8CdC90e9C6CA6429083', }) - } -}; \ No newline at end of file diff --git a/projects/grace/index.js b/projects/grace/index.js deleted file mode 100644 index 5e1b6cdf1fd..00000000000 --- a/projects/grace/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const CORE_CONTRACTS = { - base:'0x1522ad0a3250eb0f64e0acfe090ca40949330cc1', - ethereum:'0x164dd1f4174020642967bea521e56fc776742b49' -} - -async function tvl(api) { - const pools = await api.fetchList({ lengthAbi: 'poolCount', itemAbi: 'poolList', target: CORE_CONTRACTS[api.chain] }) - const collaterals = await api.fetchList({ lengthAbi: 'collateralCount', itemAbi: 'collateralList', target: CORE_CONTRACTS[api.chain] }) - const poolUnderlyings = await api.multiCall({ abi: 'address:asset', calls: pools }) - const collateralUnderlyings = await api.multiCall({ abi: 'address:asset', calls: collaterals }) - return api.sumTokens({ tokensAndOwners2: [[...poolUnderlyings, ...collateralUnderlyings], [...pools, ...collaterals]] }) -} - -async function borrowed(api) { - const pools = await api.fetchList({ lengthAbi: 'poolCount', itemAbi: 'poolList', target: CORE_CONTRACTS[api.chain] }) - const poolUnderlyings = await api.multiCall({ abi: 'address:asset', calls: pools }) - const borrowed = await api.multiCall({ abi: 'uint256:totalDebt', calls: pools }) - api.add(poolUnderlyings, borrowed) -} - -module.exports = { - methodology: 'Fetches the list of pools and collaterals from the Core and sums up their balances', - base: { - tvl, borrowed - }, - ethereum: { - tvl, borrowed - }, -}; \ No newline at end of file diff --git a/projects/gracy-staking/index.js b/projects/gracy-staking/index.js deleted file mode 100644 index 8f2c226a8ce..00000000000 --- a/projects/gracy-staking/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { stakings } = require("../helper/staking"); - -/** Ethereum Mainnet */ -const ETHEREUM_GRACY_TOKEN_CONTRACT = "0x7c95e7ad2b349dc2f82d0f1117a44b561fa2699a"; -const STAKING_CONTRACT_SEASON_1 = "0x76A2A3ebeCc73871cc24e4807C4cBA57D03b0b2c"; -const STAKING_CONTRACT_SEASON_2 = "0xa0EE760C52b10d2A21E563526248CA389D9C47E6"; -const STAKING_CONTRACT_SEASON_3 = "0xAb6aD663b42c7031b52737cbcBF9f70cb88fD9FC"; -const STAKING_CONTRACT_SEASON_4 = "0x4f1043ABb51648E817b8e62EcABc157F91E61c52"; -const STAKING_CONTRACT_SEASON_5 = "0x6e05d3a61f5026EEa67d0a82843d5E82eb3E2608"; -const STAKING_CONTRACT_SEASON_6 = "0xE5ff1432DC7BE35CC73216A8cc468608398AD433"; -const STAKING_CONTRACT_SEASON_7 = "0x908c41C339DAAaC0be4440ba2CFbA4fFb0093a4A"; -const STAKING_CONTRACT_SEASON_8 = "0x2D5D48c72222DDdAE37317aa03a6BC5a5734f028"; - -/** Base Mainnet */ -const BASE_GRACY_TOKEN_CONTRACT = "0xc5449Fafc8711B6fa68192586c9Aa9302503b939"; -const STAKING_CONTRACT_SEASON_9 = "0xE63F62Ba055003aEDB394Dc3e7056fAF49bf97b1"; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: stakings([STAKING_CONTRACT_SEASON_1, STAKING_CONTRACT_SEASON_2, STAKING_CONTRACT_SEASON_3, STAKING_CONTRACT_SEASON_4, STAKING_CONTRACT_SEASON_5, STAKING_CONTRACT_SEASON_6, STAKING_CONTRACT_SEASON_7, STAKING_CONTRACT_SEASON_8, - ], ETHEREUM_GRACY_TOKEN_CONTRACT), - }, - base: { - staking: stakings([STAKING_CONTRACT_SEASON_9], BASE_GRACY_TOKEN_CONTRACT), - }, -}; diff --git a/projects/grafun/index.js b/projects/grafun/index.js deleted file mode 100644 index fcbeaadee98..00000000000 --- a/projects/grafun/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') -module.exports = { - methodology: "TVL is calculated by aggregating the market value of BNB tokens held within the Token Sale Factory smart contract.", - bsc: { - tvl: sumTokensExport({ owner: '0x8341b19a2A602eAE0f22633b6da12E1B016E6451', token: nullAddress }) - }, - ethereum: { - tvl: sumTokensExport({ owner: '0xb8540a7d74Cc4912443e8c4B2064B640FC763c4f', token: nullAddress }) - } -}; diff --git a/projects/granite/index.js b/projects/granite/index.js deleted file mode 100644 index 8053e46e99f..00000000000 --- a/projects/granite/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens } = require('../helper/chain/stacks') - -async function tvl() { - return sumTokens({ - owners: [ - 'SP35E2BBMDT2Y1HB0NTK139YBGYV3PAPK3WA8BRNA.state-v1', - ] - }) -} - -module.exports = { - methodology: 'aeUSDC and sBTC currently in the Vault', - timetravel: false, - stacks: { - tvl, - }, -} diff --git a/projects/grape-finance/index.js b/projects/grape-finance/index.js deleted file mode 100644 index 6a2164ea145..00000000000 --- a/projects/grape-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { pool2 } = require("../helper/pool2"); -const { staking } = require("../helper/staking"); - -const grape = "0x5541D83EFaD1f281571B343977648B75d95cdAC2"; -const wine = "0xC55036B5348CfB45a932481744645985010d3A44"; -const rewardpool = "0x28c65dcB3a5f0d456624AFF91ca03E4e315beE49"; -const boardroom = "0x3ce7bC78a7392197C569504970017B6Eb0d7A972"; - -const LPTokens = [ - "0x00cB5b42684DA62909665d8151fF80D1567722c3", // WINE-MIM - "0xb382247667fe8CA5327cA1Fa4835AE77A9907Bc8", // GRAPE-MIM - "0xd3d477Df7f63A2623464Ff5Be6746981FdeD026F" // GRAPE-WINE -] - -module.exports = { - avax:{ - tvl: async () => ({}), - pool2: pool2(rewardpool, LPTokens, "avax"), - staking: staking(boardroom, wine) - } -} \ No newline at end of file diff --git a/projects/graphene/index.js b/projects/graphene/index.js deleted file mode 100644 index 80359a8a1d7..00000000000 --- a/projects/graphene/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const CONFIG = { - base: { - fromBlock: 5314581, - controller: "0xfbF069Dbbf453C1ab23042083CFa980B3a672BbA", - }, - fantom: { - fromBlock: 69969086, - controller: "0xf37102e11E06276ac9D393277BD7b63b3393b361", - }, - mantle: { - fromBlock: 18438182, - controller: "0x7900f766F06e361FDDB4FdeBac5b138c4EEd8d4A", - }, - iotaevm: { - fromBlock: 1936296, - controller: "0x0E4d23092A4a12caAd0E22e0892EcEC7C09DC51c", - }, -}; - -const abi = { - pairs: "function pairs() view returns (address[2][])" -} - -const tvl = async (api) => { - const { controller } = CONFIG[api.chain] - const tokens = (await api.call({ target: controller, abi: abi.pairs })).flat() - return sumTokens2({ api, owner: controller, tokens }) -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/grappa-finance/grappa-ethereum.js b/projects/grappa-finance/grappa-ethereum.js deleted file mode 100644 index 9dfd7ea0243..00000000000 --- a/projects/grappa-finance/grappa-ethereum.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2, } = require('../helper/unwrapLPs') - -const grappa = '0xe5fc332620c8ba031d697bd45f377589f633a255'; - -module.exports = async function ethereumTvl(api) { - const numTokens = await api.call({ abi: 'function lastAssetId() view returns (uint8)', target: grappa }) - let params = [] - for (let id = 1; id <= numTokens; id++) params.push(id) - const tokens = await api.multiCall({ abi: 'function assets(uint8) view returns (address)', calls: params, target: grappa }) - // get all owners - const numEngines = await api.call({ abi: 'function lastEngineId() view returns (uint8)', target: grappa }) - params = [] - for (let id = 1; id <= numEngines; id++) params.push(id) - let owners = await api.multiCall({ abi: 'function engines(uint8) view returns (address)', calls: params, target: grappa }) - - return sumTokens2({ tokens: tokens, owners, api }) -} \ No newline at end of file diff --git a/projects/grappa-finance/index.js b/projects/grappa-finance/index.js deleted file mode 100644 index 622c471c1f4..00000000000 --- a/projects/grappa-finance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ethereumTvl = require('./grappa-ethereum'); - -module.exports = { - ethereum: { - start: '2023-02-04', - tvl: ethereumTvl, - }, - hallmarks: [ - [1677196800, "Hashnote vault launch"], - ] -} - \ No newline at end of file diff --git a/projects/grassland-finance/index.js b/projects/grassland-finance/index.js deleted file mode 100644 index 8f5097ecd41..00000000000 --- a/projects/grassland-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const wild = "0x54c6960fbb3e6572377980277057cf08ccad646b"; -const masterchef = "0x68B279Cfaf1b0CDE999B5590C3Cb5F74AEc1eF6a"; - -module.exports = { - ...masterChefExports(masterchef, "polygon", wild, false) -} \ No newline at end of file diff --git a/projects/grave/index.js b/projects/grave/index.js deleted file mode 100644 index dda9c9f03a9..00000000000 --- a/projects/grave/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakingPricedLP } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const GRAVE = "0x3700a92dd231F0CaC37D31dBcF4c0f5cCb1db6Ca" -const GSHARE = "0xffe04bf98c7111360bf7a6c56b343915543cd941" -const GenMasterchef = "0x6ee714a7c17309b57b85a61a161621acb66dbbd9" -const ASYLUM = "0xDa1fe319C8C295A26102f40b680bF4beB7afF6c4" -const GShareRewardPool = "0xF051dB01326355303A24bEa002409dcD71d396a0" - -const graveAvaxLp = "0x10e882acfae3cf63e96741fabc41c19025e7be2a" -const gShareAvaxLp = "0xae427ad7a54f5490ef76b3bde3663b0e45c7a102" - - -async function atvl(api) { - return api.sumTokens({ owner: GenMasterchef, tokens: [ - ADDRESSES.avax.WAVAX, - ADDRESSES.avax.USDC_e, - ADDRESSES.avax.JOE, - "0x070092b3A985f9E5424351D68730c9A318ad96eb", - ]}) -} - -const pool2LPs = [ - graveAvaxLp, - gShareAvaxLp, - ]; - -module.exports = { - avax:{ - tvl: atvl, - pool2: pool2(GShareRewardPool,pool2LPs,"avax"), - staking: stakingPricedLP(ASYLUM, GSHARE, "avax", gShareAvaxLp, "wrapped-avax") - } -}; \ No newline at end of file diff --git a/projects/gravis-finance/index.js b/projects/gravis-finance/index.js deleted file mode 100644 index 777f2204735..00000000000 --- a/projects/gravis-finance/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0x4a3b76860c1b76f0403025485de7bfa1f08c48fd', - useDefaultCoreAssets: true, - }), - }, - polygon: { - tvl: getUniTVL({ - factory: '0x17c1d25d5a2d833c266639de5fbe8896bdbeb234', - useDefaultCoreAssets: true, - }), - }, - heco: { - tvl: getUniTVL({ - factory: '0x4a3B76860C1b76f0403025485DE7bfa1F08C48fD', - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/gravita-protocol/index.js b/projects/gravita-protocol/index.js deleted file mode 100644 index d142e717cfe..00000000000 --- a/projects/gravita-protocol/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { sumERC4626Vaults } = require("../helper/erc4626"); - -const ADMIN_ADDRESSES = { - arbitrum: "0x4928c8F8c20A1E3C295DddBe05095A9aBBdB3d14", - era: "0x441F6b484FD60C31b3ca9c61014030b0403F805a", - ethereum: "0xf7Cc67326F9A1D057c1e4b110eF6c680B13a1f53", - linea: "0xC8a25eA0Cbd92A6F787AeED8387E04559053a9f8", - optimism: "0x326398De2dB419Ee39F97600a5eeE97093cf3B27", - polygon_zkevm: "0x6b42581aC12F442503Dfb3dff2bC75ed83850637", - mantle: "0x4F39F12064D83F6Dd7A2BDb0D53aF8be560356A6", -}; - -const erc4626Vaults = { - ethereum: [ - "0xBB22d59B73D7a6F3A8a83A214BECc67Eb3b511fE", // WETH Vault - constellation - "0x1DB1Afd9552eeB28e2e36597082440598B7F1320", // RPL Vault - constellation - ] -} - -async function tvl(api) { - const adminContract = ADMIN_ADDRESSES[api.chain]; - const vaults = erc4626Vaults[api.chain] ?? [] - const collAddresses = await api.call({ abi: "address[]:getValidCollateral", target: adminContract, }); - const activePool = await api.call({ abi: "address:activePool", target: adminContract, }); - await sumTokens2({ api, tokens: collAddresses, owner: activePool, }); - await sumERC4626Vaults({ api, calls: vaults, isOG4626: true,}); -} - -module.exports = { - methodology: - "Adds up the total value locked as collateral on the Gravita platform", - start: '2023-05-16', // Tuesday, May 15, 2023 17:00 GMT -}; - -Object.keys(ADMIN_ADDRESSES).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/gravity-bridge/index.js b/projects/gravity-bridge/index.js deleted file mode 100644 index f983b4b967e..00000000000 --- a/projects/gravity-bridge/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getBalance2 } = require("../helper/chain/cosmos.js"); -const { sumTokensExport } = require('../helper/unwrapLPs') - -const erc20Contracts = [ - - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, // USDT - ADDRESSES.ethereum.WBTC, // WBTC - ADDRESSES.ethereum.WETH, // WETH - ADDRESSES.ethereum.WSTETH, // wstETH - "0xEa5A82B35244d9e5E48781F00b11B14E627D2951", // ATOM - "0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9", // WLUNC - "0xfB5c6815cA3AC72Ce9F5006869AE67f18bF77006", // pSTAKE - "0x45804880De22913dAFE09f4980848ECE6EcbAf78", // PAXG - "0xc0a4Df35568F116C370E6a6A6022Ceb908eedDaC", // UMEE - "0x44017598f2AF1bD733F9D87b5017b4E7c1B28DDE", // stkATOM - "0x817bbDbC3e8A1204f3691d14bB44992841e3dB35", // CUDOS - "0x467719aD09025FcC6cF6F8311755809d45a5E5f3", // AXL - "0x77E06c9eCCf2E797fd462A92B6D7642EF85b0A44", // WTAO - ADDRESSES.ethereum.INU, // SHIB - "0x35a532d376FFd9a705d0Bb319532837337A398E7", // WDOGE - "0x93581991f68DBaE1eA105233b67f7FA0D6BDeE7b", // WEVMOS - ADDRESSES.ethereum.LINK, // LINK - "0xa670d7237398238DE01267472C6f13e5B8010FD1", // SOMM - "0xd3E4Ba569045546D09CF021ECC5dFe42b1d7f6E4", // MNW - "0xd23Ed8cA350CE2631F7EcDC5E6bf80D0A1DeBB7B", // PLQ - "0x07baC35846e5eD502aA91AdF6A9e7aA210F2DcbE", // EROWAN - "0xA0b73E1Ff0B80914AB6fe0444E65848C4C34450b", // CRO - "0xe28b3B32B6c345A34Ff64674606124Dd5Aceca30", // INJ - "0x4c11249814f11b9346808179Cf06e71ac328c1b5", // ORAI - ADDRESSES.ethereum.BUSD, // BUSD - "0x147faF8De9d8D8DAAE129B187F0D02D819126750", // GEO - ADDRESSES.ethereum.STETH, // stETH - "0xD8912C10681D8B21Fd3742244f44658dBA12264E", // PLU - "0x4f6103BAd230295baCF30f914FDa7D4273B7F585", // KI - "0xed0d5747A9AB03a75fBfEC3228cd55848245B75d", // NGM - ADDRESSES.ethereum.MATIC, // MATIC - "0x892A6f9dF0147e5f079b0993F486F9acA3c87881", //xFUND - ADDRESSES.ethereum.FRAX, //FRAX - "0xaea46A60368A7bD060eec7DF8CBa43b7EF41Ad85", //FET - "0x467719aD09025FcC6cF6F8311755809d45a5E5f3", //AXL - "0x2B89bF8ba858cd2FCee1faDa378D5cd6936968Be", //WSCRT - ADDRESSES.ethereum.BUSD, //BUSD - "0x4c11249814f11b9346808179Cf06e71ac328c1b5", //ORAI - "0xa693B19d2931d498c5B318dF961919BB4aee87a5", //WUST - "0xBA11D00c5f74255f56a5E366F4F77f5A186d7f55", //BAND - "0x4547254E6E3195cE57Bc50352193A25c2F4B8FCf", //STARS - "0x7bE48633D86AA9821284B01030b8a3F9B06eA876", //HUAHUA - "0x6982508145454Ce325dDbE47a25d4ec3d2311933", //PEPE - "0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9", //WLUNC - "0x43373AE537945085Ee1001928E96204034bF55e6", //USDC2 - "0x76C4A2B59523eaE19594c630aAb43288dBB1463f", //IRIS - -]; - -const GRAVITY_BRIDGE_CONTRACT = "0xa4108aa1ec4967f8b52220a4f7e94a8201f2d906"; - -module.exports = { - methodology: 'Counts the tokens locked in the Gravity Bridge contract on Ethereum chain.', - ethereum: { - tvl: sumTokensExport({ owner: GRAVITY_BRIDGE_CONTRACT, tokens: erc20Contracts, }), - }, - gravitybridge: { - tvl, - } -}; - -async function tvl(api) { - const bals = await getBalance2({ chain: 'gravitybridge', owner: 'gravity16n3lc7cywa68mg50qhp847034w88pntqzx3ksm'}) - Object.entries(bals).forEach(([key, val]) => { - if (key.startsWith('gravity0x')) { - // these tokens are already counted on ethereum side - // api.add(key.replace('gravity', ''), val, { skipChain: true}) - } else { - api.add(key, val) - } - }) -} \ No newline at end of file diff --git a/projects/gravity-finance/index.js b/projects/gravity-finance/index.js deleted file mode 100644 index 5fc62afe8e6..00000000000 --- a/projects/gravity-finance/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'polygon': '0x3ed75AfF4094d2Aaa38FaFCa64EF1C152ec1Cf20' -}) \ No newline at end of file diff --git a/projects/gravity/index.js b/projects/gravity/index.js deleted file mode 100644 index 4b3f07b365f..00000000000 --- a/projects/gravity/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x7983403dDA368AA7d67145a9b81c5c517F364c42", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/greenhouse/index.js b/projects/greenhouse/index.js deleted file mode 100644 index e23be373603..00000000000 --- a/projects/greenhouse/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport, } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('polygon', '0x75ED971834B0e176A053AC959D9Cf77F0B4c89D0') diff --git a/projects/gridex/index.js b/projects/gridex/index.js deleted file mode 100644 index 0eb75c4fff9..00000000000 --- a/projects/gridex/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); -const { stakings } = require("../helper/staking"); - -const stakingContract = ["0x035E9062286FD19460B3E22970ebB5691EED2C25"]; -const GDX = ["0x2F27118E3D2332aFb7d165140Cf1bB127eA6975d"]; -const factory = "0x32d1F0Dce675902f89D72251DB4AB1d728efa19c"; - -module.exports = { - methodology: `Counts the tokens locked on order book grid`, - hallmarks: [ - [1672531200, "GDX Airdrop #1"], - [1677628800, "GDX Airdrop #2"], - [1678838400, "Maker Rewards Launch"], - [1679616000, "GDX Airdrop #3"], - [1682294400, "GDX Staking Launch"], - [1682550000, "GDX Airdrop #4"], - ], -}; - -const config = { - arbitrum: { - factory, - fromBlock: 64404349, - hasStaking: true, - }, - linea: { - factory, - fromBlock: 98996, - hasStaking: false, - }, - polygon: { - factory, - fromBlock: 44421440, - hasStaking: false, - }, - optimism: { - factory, - fromBlock: 94046133, - hasStaking: false, - }, - base: { - factory, - fromBlock: 2047839, - hasStaking: false, - }, -}; - -Object.keys(config).forEach((chain) => { - const { factory, fromBlock, hasStaking } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: [ - "0xfe23981920c53fdfe858f29ee2c426fb8bf164162938c157cdf27bac46fccab7", - ], - eventAbi: - "event GridCreated (address indexed token0, address indexed token1, int24 indexed resolution, address grid)", - onlyArgs: true, - fromBlock, - }); - - const ownerTokens = logs.map((i) => [[i.token0, i.token1], i.grid]); - return sumTokens2({ api, ownerTokens }); - }, - staking: hasStaking ? stakings(stakingContract, GDX) : undefined, - }; -}); diff --git a/projects/grim/config.json b/projects/grim/config.json deleted file mode 100644 index 75945207568..00000000000 --- a/projects/grim/config.json +++ /dev/null @@ -1,538 +0,0 @@ -{ - "telos": [ - "0x5E9054c2eeCB9Dd9BC5818E9aE314070c92a9Dbb", - "0x8cAC1868B06A6B53181E497611c8496a96D72A8c", - "0x4Dc1B8dEee2aA42b2e6eC2c6C53d7f7D3fac3e9A", - "0x60DC3d4a7866E1F2802Fc851aC2AF12da4D65Cf1", - "0xB3e34c8046AFC1F7dE0F6f2C0d3140647AD58b30", - "0x6272593eEE38eC7F7F80f971250F39F34FE839ab", - "0x7AfB0Bc08873219d2b8F4Ee44312102e0a1A91d5", - "0xD52C0c24F47D06C5c3Bf41A610d7b591980e201c", - "0x69FE9896f7653BB1961bfCE4D01F3416f59f803E", - "0xaa5eE9cFc6c53419845867d5c4fE361c59D2a9bc", - "0x37CE0654FA0A5D7720b488f18B7c11f5b721BEC3", - "0x9a8d575B3f1Fc91Db2F29c4E87E48F528A3510B9", - "0x0Be694BBA360a5c375622aAf9e31EE82a95b680B", - "0xEcb20d5691E4eac894F4BD8f2A84b2c76BD49f67", - "0xFB65Af3cF542E356C16065467937BF90BB7B54BB", - "0xEC45eDc98243f9DaB8E8C738Aa51910075A0d90F", - "0x87EFdAe3fE46a861ec96fD5ffB5e4C5DDc8f9e79", - "0xeDb1A44fCBC18B0bc8998112b9a987E417bbb23b", - "0xF9c03F4042d4A5F2807A93381A8F7d68e93FD9B2", - "0x173630Ff7c7763DbcD9B38b03c2870B5d51dDB80", - "0xB0c5d5b4a59Ac769f54114D836e1530991da3863", - "0x9F8F4Ffe23Ff4bD7D64F82e60B046002dDCB6684", - "0x4b742d7f8E6E6911a9674EBB00cD6DEEf3091Afa", - "0xdf86120116F04E004f7EDF9B67e40452e08D5774" - ], - "polygon": [ - "0xEfA6e06B557ECF6b328bFffC361D559F4476c26b", - "0xa12e5A6f7968AE09a28e88D978Cae050751C06A5", - "0xBcDd8E50e2109cea403c9a7b88cdBD4c6F8F2045", - "0x00187581AAD2bf25724774676a6B22021Fe8b0C9", - "0x7F37f76d390eCFf2e9832C83fA70c1A1a53C40d8", - "0xbf5953bA9CD32c44e19795c17bC50Ff7369759e5", - "0x553F75622cF944b85f17Be3B53Cd17CE40798984", - "0x289Eb918eaD4cddaeCDE64f946569115E01Ba958", - "0x94118a1752cE651e8e4Ea21620C4da46D8f143d4" - ], - "fantom": [ - "0x54369163e3dE8D993A93f45946DFdadFED1E7Eb4", - "0x5a1d96F0ee43167B58234Bb81e008d3892639f0a", - "0x8Cf9E920AEF195C8D9024269699D762b0685C89c", - "0x6ab4a69a6E43D50f265F0619962F989B6615b7BC", - "0x3ae73a25532be8a67bAa2Cf2aDB765d63443d80D", - "0xAc38fB48A022971112019a40f2AcbB5b77bFB891", - "0x3e2e5AEf7Cea5606204d79616D0cdf8D5AcE385e", - "0x23869f49B5093aaaD5EDaF839B2C37707216b741", - "0x26CE39D79C3F13c6131B8B45577C87f9bB562857", - "0xB92D48c8896965c6eA7a04725F08564A2313D101", - "0x8410903237F9929146dcE683e7921CEA50547689", - "0x053365e9aeB14424a58c14117FEb6D760c0384e9", - "0x7964cd13E81F3B72d9E24FeA428772C29048f715", - "0x7d5196ed6F7E30B43297d5356ba31f3DE7a66827", - "0x66334e72Ba358b79cC2EBd0282c1d8949BFC7564", - "0x61f5d294D71Be47BB0Cb1C2430ECE5605EBA3734", - "0x4Bd6372d9b6e76ef55268b03e80C35b5BF743B62", - "0x40c3C7E16c5faFBAcD2F4f6A58858850d59a5a8e", - "0x30D89125F2b90942Ad77a7631481E0B49f449c13", - "0xb2cf157bA7B44922B30732ba0E98B95913c266A4", - "0xfD6DDdf0C9e6C5a7A518e6Cbfbc222cb2991a2B3", - "0x462aDf50aE6195f46430177450CdFB6eC742A0E5", - "0xf990AC8242FdB9De467A6e5E2b01CC08dC654717", - "0xD94C7DEd80CfA4650Dc61Ab483AF74df0d96f745", - "0x4edC791ddE70914B2C9179934ECaedFd539e1b0c", - "0xb6662bb1b66B75bE8A0cecFe5af08A1DcD46Cf82", - "0xc6493cE516CD3586bB77b41E1A410c6d8B0A305B", - "0x91B7c20330321095668Af86Fa746A7F1852fB190", - "0x6Cec287a3bF06b0d142777B2514FA419910BBC26", - "0x937576F8D178c2ea422b71016800916a1770c439", - "0x60Eba06eD584D1F1bd6620905Da36332D85422e6", - "0x104Bc733788AF33E674a676a227d273806AD958d", - "0xa3e348136D9F8A14300380225756BA6eAF40265d", - "0x18B19e727016409d7f76B0414A84c216Acd99185", - "0x2174f2aB95368B668971f0Ec015F82392d3ceAc1", - "0x6AbAb058747283B3E95BD987AB83B95e689Be3eE", - "0xfBBb8aeB8865fd776485Fd45bc96665E239c908a", - "0x21a5484D889DdEBCb9d192b5B96A794CA4147c91", - "0x7e8D2d029199a86950c733CbbC6d8160Cd21486C", - "0x883D002b2147CE081894f74a846F81FF97b141c2", - "0x10149fDf20A92822a5cBAf21eF9a4484238769F2", - "0x3E4Ea4d16233A5D5236739a8fe632b6b5848DA9e", - "0x54788611767AF25f0De57411354F111B5D9C6DEf", - "0xec0965D89C9E237b9BF0c8f6ed1e09314f5097E0", - "0xa0E9d69249E6AF75779EaB029d1ea3BaA7F2b381", - "0x9200Ac9C17EF8Ad1Ea16fDc63B8460e1F10d8eF4", - "0x9B30315e701945eBB855326f53335F717E4921d2", - "0xE1F9d163C2Fc5761a2860ae590E748BBEfAf39dA", - "0x9f68852dD559484e6BE2d034CEBfBF5d62B54449", - "0xc68048525bfC1a49910e740424399E10eef6dff9", - "0x829C25Bb47f35C02150E2cBBD0C962E5b7B02687", - "0x7f0f5C79b64d0544549c8FfDA52576d00963B15E", - "0x5253ea466157a498d195E1aDB3e19a6F5a97dEfb", - "0xc53103820Bbbeb0BE0592022C3d4d806D07F8610", - "0x43b99CC4384b3F0B384e81D8db2C763fBD6fd314", - "0x127Da0f069bc55410E551bf574438E757Df695dc", - "0x3cfdD338061fEE8523c75e372fc7D88033141eC4", - "0xBc9cad78f31F213A7a91C6f7C589081983398733", - "0xeC6F0E53597fb2e6d4b1a2B48743D52B662CDa24", - "0xbF1fB5E256c7C8D262e866EF20beFc72eD9fA633", - "0x3d9f39Bb535650b04d4B5Eb23bbA8609C117a695", - "0x3FB82257BBBA5A56aE748f1e1BE8A06127D45069", - "0x67769663Ea046dD2F3747827755ADd1694eff9d5", - "0xe30d25c275dA2cb8a8911BFB7cE9e59E227F80E0", - "0xD2752EB1794C4a1b7891feF1e1376B9C9c2FB2DA", - "0x56AFfc8EB077182157e90106B7924e089E86adcD", - "0xeC649a0Fc3D6af24d21ae9059DA1FFF4c9e6E727", - "0x94118a1752cE651e8e4Ea21620C4da46D8f143d4", - "0xe0BA4Bd9211e840e3B7b8B46816f247484916fE2", - "0xa21dD344EA44306e32582EB372B1e91B196e62FB", - "0xEA751A395725E54251308AE2DC5741E5EB4Bb5D0", - "0x67c35B10BB74e035EE062bbCa570c42B11893c71", - "0xa8D2Bee3C6FBc33c77814C208A420A3A8862c09B", - "0x77B76f8a50b4Beb89210E1e6194299243F334B03", - "0xEd83EFF17258cbB2d2a22579D1B001A8e9ae2e83", - "0xd70755B67dE0DeDC0fa749D47fF59ff61bB46933", - "0xdFE426842d07957c9e661794822dB12adc20b856", - "0xeDb1A44fCBC18B0bc8998112b9a987E417bbb23b", - "0xc9e80a3b7D26FF46b8A2F22D4a09E94f42e33039", - "0x126905C4708E55759A63F97D4D47c9E94FcEcB24", - "0x203166db0B7bdDa7a04440c7A0C1E8a8eEd0f11f", - "0xF9cDc12e329247639AC20fC2a2B9CCcAB0d85A4e", - "0xD82d0Cd391b8A1DEa50B9b4E79F02AA66Ee4BeDE", - "0x43691B5a3099365a32644c4216d9EA65cCD41B51", - "0x61373471A5CFaA25C3C7c291d8dc9b45989a8886", - "0x26D27a565865133c8Be4b7B28A1633B4D61bA852", - "0x73f0a7723c193C365Ae413D419EfD6E8e618Bbfe", - "0xb2229CC7a41CC7e5c3564982Cd48B06afFB49a09", - "0x97Fe4cFAeeCA2d0Cb54d8c88bD2D951eEb0C8Da4", - "0x1Bfe85c94bE740C9A8bd4423CfC03EdaB01E17D1", - "0x450b1f5D7872797A5704b1DBdc4042e22E28A495", - "0x6f5362bCAd5F3028FFb9D4575ef17D3e02AaE84b", - "0xe31d2Dba9ec60D0aE5653E967775D7113F75f3bF", - "0x207EC95A4d29b0AEAc7806f3B9FDd39Ce14b5Ff9", - "0x7a1467bb7026baD391d191D49a8B22D0c1E1DDF5", - "0xe9831B5A49D0193002ef4289E8a500438D26EdcC", - "0x341292523DFC4c46300B578D8E7825a83F092a09", - "0x2CeC649c9B5373dA72eF384A8c8340eFfAdcEaE2", - "0x6300ad0C0f0658caFB4D54688aeC30566f71A631", - "0x1A15885096CFE677E2Cd36e64A5FD4f8Fe7e96E1", - "0x8aD0A5159812A3A091E52F0Ee1FDFB8808Be238A", - "0x39768e3055399f05838Fd119eda229655610428b", - "0x373070fAaC2C75eE58Fda6f951a68494219dCda2", - "0x10CA611E52EAeA024535344BD3e1d651b9FaC184", - "0x8B0717362e7ddAf29d38235EB512Fd25C7A1E068", - "0x32C761d3B89e1878753279A4852a919950d448B9", - "0xb76F8dB409F3fe3F0cAA8E4922eEa6896a1A6171", - "0x71cb11349C43b482F654E5F38DC0331B3dD991FB", - "0x0626BE90ed887BC23AF94b546b49CF49521fE0d8", - "0x6c825D8AC98B98f7Ce2d4122154ece3f14188975", - "0x4080D6A1c828456aC4a9AdC8B60df6F4DE942B25", - "0x02392c98D9460DbfD564C04cFC6621d349B90C79", - "0x17cD27740580eA4F5773d4aa50D9E93579b02Dd5", - "0x4F25b50fd0aC12169323c07B693ad9aad6771670", - "0x259a7B98b07e0A8e3d51062901827F50D1462485", - "0x315E0B4C53EDE4DD721C8aad67794678595693F7", - "0x86B9e162C777ea108e7df6461Dd2644cA3A5fe32", - "0xd9F87DeC7dE788BcFc808Cd1c309dB37D977ACCA", - "0x15800c351a38d56d012189f21231e170c48a9764", - "0x86f50144077A62e2b2dd8514B3F06a7bC416eaE6", - "0xA74C821C224A85559c5bba7B76147bBcffEE32f4", - "0x7172A3F5453f453a6D0fb77327ae9209CFC5B519", - "0xd924B1adb80bf30fA49e54EAF9631cFFbBF29fc5", - "0x553899EAf7627bD4DDe54939F5d7791cc0986a9e", - "0xA74e3842b68a71789c8861F418d4F7c61b5f4f61", - "0x4096a34E71045d7B46205dBcf537a4bABD1fbA4B", - "0x89133D25aA5a1d935C5143A3Fc129E7FBdDc9F2c", - "0x0c2AEd118c234aB8adA5a268600FCde97211E9E0", - "0x35B04ADBa055f93AfB55C4aDcb1733E027007dC0", - "0x0b9A63D20dC2F104494FdCd9EdBd7e40d572f349", - "0xE315E491676170e2bE9ebAb022892b500e88E01b", - "0x10aA9E9446ed31B75df5B7F301235A7C5087b711", - "0x4Ea0C774620de22650F15f8f62B333780381DfDD", - "0xDFB65caDda2101a7B6c0B90D296d6A9c1B724A14", - "0x940C9Ba3113fcF75B87Dd46eB03DD023fc600816", - "0x0385131a643d2Eb15765297E0b48207aadbb0A5A", - "0x9883D89F48f0B4A88039cac78eD2A3081A66c2DC", - "0x2f5e44871ccbe7F53e4a812dF76e6417A2b36665", - "0xBabEC3e43C72b85741DEe9F3b6e98af83DF62FEc", - "0x8f4ce599b7A6c647913D7Ef111295d3a4bC8c006", - "0x19F823835650524571B2Efd83971Dc827ab7364A", - "0xe524fB2ad520aF3eD9Dce6D8Ea6E81b6752beFb2", - "0xBB0e625446F7519677db2aa0B5fc9949940b3D3b", - "0xe45C42ED2fa8bC48317c75227a91D8B49198FeD3", - "0x6B889C90D0Bfb856857a83ed02214A02FEE7fA46", - "0x0Cdb6366D8aE177AA273a866865baF4e058cdeB9", - "0x70b07305d17ad51ac8A81eaeDbbc2dA5DB12Fa84", - "0x3579a2711862e561973CbF28bC492b167CEBb8CF", - "0xf44b9aBCc5100DC22B33ac719c632bd1EEC5274d", - "0xDD8ed6392AF61e76BF3f17132A071756fDd094eE", - "0x8d008Aa4FF29733Bf09032cfd45979cE63c71969", - "0x55EcC8387232729ace7b15cD4EB55aaBF392F154", - "0xF20Cd3f92B99B4Bdc21b3C2ED7608267d4089abf", - "0x2487568947Dd2d03292a7F2Bd59485AaC8F00Afc", - "0x2Cb16567F59560C8F818B2Aa5d4b3fE7ab72d6dD", - "0x8208EBc031aBA6e13E7277cea54b42b7Ff6269DE", - "0x5e0c0d6EB53E35BA899b81fdb950ccCB0afAADcc", - "0x530578de626D4F3FDD716affe2e9bEd31A3b54A1", - "0xd1144236E50D257Cc23dA09d514aE4F8eC5C3607", - "0x2561b21335aE1223c61676F73e62d139f1bC88ef", - "0x946669cCBf544D35D272A04289A9AA55E19c1520", - "0x01F62c0FdB59bD820AdB0B45Ddb239a7e7EfCD20", - "0xBBcAD6595590EFB8c4b091298619919A7a51Cf7F", - "0x2D5B68eCdb083E26441EB73C16B86e0E7680DA66", - "0xCa88601ca582F5FA7AfBA26ECc47383E6B1770C2", - "0xA99Bc656A29993C05E6bCafd19A5D4c697277E1B", - "0xEeC83505C7136b4AE8bA9819222f3755A2A8cEF7", - "0xC7d681D00CF8f0C31a8ca9636E1f7058E4a465A4", - "0x6837701b116C74072deE9D8a26B62707b72e3329", - "0xb7754aE3b8044eC15CFe3491201288f1295D40d1", - "0x449A4000d69e46326B938185FfA2a7438A0Ba44b", - "0x99DF7acF2d2A8249B7F2Be131e9911903E0Bfc38", - "0x52614De8e8e2cD217de8AFC63c464205CbDEfE48", - "0x8Ed73DC3Bccc840C43E283740331371e6faC5E88", - "0xB2d955761fB9d481a3A42F17546211447E364DB6", - "0x5bCf5D988A373Bbd591D292F689f5D43d3FDA377", - "0x796Eb8E202ff1c1Db58B1716474e5f7562B07Aac", - "0x551CfDC850427E10522881E3BAe34ee256aCB65e", - "0xf97bd1cE45BF292e1588d4F0f2F7174CC2c81690", - "0x8302a17FC82Ab4Bc7BFa9595372fc89439b413D4", - "0x78292feeac11A682483aDD73660868466b3DC66D", - "0x23C424D3492f809DC3BC473918B12D4F914E97D8", - "0xa028F33b854F58Be522A24E57C32b9226aBD4dd8", - "0xb546841A83d1e3c10E814B280419c33a9e5B7c09", - "0xCAFc0bbeec46292689D881e6dFD02656FeFDBC8a", - "0x2a3CAfeaa0d6ccAe2c99bA285B1c1D3Cf3e8e3e0", - "0xbA1cB80d6Fd52e3174B9DaA0f7752eBe4773500B", - "0x485EFB09b1cddf8750f1abB96c712305D5d7d22a", - "0x3F36BA3a1C951122c59fe8e2EEa9F25D8cd266a2", - "0x9F8230c74E0F8E3c82505eEC20dDB4bd37Fbe7e9", - "0x5Cdd4df7C06a570C2733b2621F65bccc030D22fb", - "0x094Da2a7aa92Db16979F8c740a000F017C78E586", - "0x4db4F7eB136b78a21F6a49FAB2a07AC5454358D2", - "0x534d07b6d997d56d526bB0568F5c0a0875fA7491", - "0xe72bEeDEBc22042B3c054C9d985EF70F3F21C07F", - "0x4B4AC2115c7be54858341A357438089C360D0391", - "0x42443f195F8b0E25150E48965cDa520fDEEf1EC6", - "0x52A6ED8Af9a7587CD7c8097e55Ab51EA167FD1d5", - "0xE75a233bc8d59873CD5a443A7A7a14a18f80de04", - "0xfBdfabdEE0b082f92944cBf7321D901010a05Ff6", - "0x727f490Bd0fD299B98e6118Dbe3762c60241145d", - "0xeCe1E1a00159e831786337a0369eddeb41b44ce3", - "0xC44454116b12424c3CEF37CB4Cd314Be393F4414", - "0xaa6e92d650CD1008423f9502413cD3EB382E80bF", - "0xaaC80725AF8d74B5dCD0462B54bE6959faa49106", - "0x52eca7b8a6681d3541D44677CB7bf6436efaB104", - "0x43309fFccF1ecB86273f363c04b43Da25f2B9211", - "0xf18913fA8a97f703895aFe8102c06EC48a32E543", - "0xd8dC5856143d20A1C4534EAc565805BB23f88e71", - "0x666110FEF0cCee100CD154931aa1349312cb6C86", - "0x19AC1DA1172696c10bE21a3FE8E2f917913Fa2CE", - "0xccB4A945974316E21e333D1d2e81740831caD5Fc", - "0x8594c9e8Fdfe9Fa9D725cC4894E28484675C0894", - "0xa7793ea1aD45Be33EFA1Ea3C7d4ddD6746bc2176", - "0xd60055f132862dcF3Ed08880D8E11c1650BFb5c8", - "0x8C6d98751B4f6a6727F9dFd9670B3978A5762ac5", - "0x29e15bDAE0C0375A4412A83E9f95F7DfD0643Bc5", - "0x2B4a0737e3664A38597118D140E95D56cA022d97", - "0x5707742Df139ec717348E2eBa519891a6F523DD3", - "0x4A7D10BaF5207e866D4667314227123CEF785A01", - "0x48D681d5B9ED09DE4ee2453F26f6973D70611763", - "0xbce9282fe66b7Fc1B7823B884d97492D37530a36", - "0x55b7c199Bac27abbC5ec20B3c3f84d64878e3759", - "0xc98B1FeB7C339f29ca26182e820C9b09A588eAEe", - "0x0B28F99AB08151a751a6B2d5784e68F0796e36e0", - "0x3c50858ba3b778b6dbbe0b034f7ab23dcda37468", - "0xD6B7c1135D62f6EDF2F1d1Af003f3e6baD7deB00", - "0x66AF592fB516b1d8d337B2295B1D6Bade22cb681", - "0x84b106BE2A1b2781d3D560e8304c4197B6F2B40F", - "0xd6F57998B71A8FfE4cb085Ff015f40f75aD5a79E", - "0xE72B57B0c7567a5bE542F6B5ffF1BcB591D7B251", - "0x336dd54Acef3E913D5B59cb2e6fa139e528E8c58", - "0xaF01fC708f1d9bfc07DBcC74590afD005F551AF9", - "0x95c1A7Bc770E33dC1A9AB093a5Ca618Ff96852Fb", - "0x351e0322A75D96F2072c54E22f6013ED76F55FbC", - "0x5c695cf06CC40f0e4692ad4D0b096eF7C4b7ff00", - "0x50ADF00864c443a95253AD3C9ba90E6c0232881B", - "0xE2de4D4d19f6712f0d2836b477c311B627C96565", - "0x1C4C0040c99c0CAe55a66B028ae6644585d10094", - "0x29d237174Fe36eC20c3894251335ca2254b4C4C7", - "0x9cc639E3935b7650439212EC88946580292b5D09", - "0x6b654b20C5fb665d51DEDae98E421EBb0C0348b3", - "0x88249D5728492FFaD4Fb12B0539C9B88A05C3b41", - "0xcE677B9121Ed80429855376F4187bcc24D69dBe7", - "0x922615E9CD49bEf0dcdcdA5a3D650A300fae7d2a", - "0x22cA92B6Ce964c6E64A21Dc15198253231251dA0", - "0x522564885EB8d2b7bDc55Ee289563e1d5b09e8A9", - "0xAc2eAfdBDA2ca4d264A276Ca715081FB7c5fE2AA", - "0x31C5420cB9de6F5A317Efe7c10ab1bC440536dfc", - "0x0e1C794Fb817a20246439C093EBB41321729058a", - "0x8f8854b7782E190912adb538DCecd88fCC8e0909", - "0x01d17C8038cb21A43AFE1da372119A4e18717aFF", - "0x7A1885eC42597B1783dD5754c7a42AE60a5202E1", - "0x6a8673dAF590871198fe073B09D8a3fEAc73Bd3e", - "0x3bdF1D7723bCb1B544b137d3b0C8c38336e06621", - "0x3815a4883b1050D274AFeAf73FAfa41c47941C38", - "0x44a5B6be893cf8071A83aF8c8d81587C09422867", - "0x42A34bDCF4edf2B73Af56803e10654c65aDa3DCe", - "0x47A38879E95B271f8E6DA29006e619aE11eD5A1D", - "0xb1A7c9EcA5079D8Fa7073FB4B0A1150FA67dbf63", - "0x2B6e966230dfD7312979BB754f379c172dc39994", - "0x8bc41d77d5CbD1c7d8F7833Ba08dB5e559D53098", - "0x4ed0c0D87Ed8d52Bda0FfC5eEc393486eF09E8E6", - "0x2DCC96c2ff52E8BA8728C171A581EcE8665Cd34A", - "0x95a272b0672d85330baB132272A36D381F80Af98", - "0x93a2B600aD0dFE4Ba5b464DE30D164D1827F71c7", - "0x61f97F988FAB7c18c61c42d12e2D77612D5eb852", - "0x95dB548c3b9Ec3b310c4667BB6B4c490A5445A0e", - "0x48873b66d6Ec8ed753E1eFc733dA141c87772E5D", - "0x75F38c244dcf0C9214a1a75a423b10e896E1b2eB", - "0x92F9800229eb401106bbF273ECfE7F324620C5E8", - "0x3f24344DDc1C4b0A1D0D6d25260d50E6cF43c975", - "0x92eD2703e4EBC9363b894c645359bCCA5C1950A6", - "0xfa40006daBf692ccC12a5374352509D479f8dFA1", - "0xF1933ABb109bE140c03116aE2774Cf34c3A0eb39", - "0xC31E5c0a413Db0359765F3F88ef1052f802d9ed2", - "0x045A61547d592ea8e394607e601ec81167dDB2bd", - "0x3EF9c9e59dE3F53392dD75e1d0604b3cF85620D4", - "0xa5d08837b1160E83563de264551AFc0273C34B75", - "0x33177e16213d23CbB30e18C0011F5536943AbC83", - "0x75D1Bd5c18c7c4C9362Cd1A845C8c543E27c9f69", - "0x15B83d1A952ce0aCd31C57CA27a288217893991D", - "0x3c6870b4990c8dA73eF18eF25ce34432Cf127554", - "0x9b6F180AaDdF31fe0167aE931c9988548349Fb0D", - "0x39d61795F74377A2Bb69eeF09832c08263C25cc9", - "0x6D26C46086838602E398b0b660871FB961542433", - "0xA350c82529dFdc4Bd8C40086e5aBFd2C00f405a8", - "0xBFb23Ed072c442442f0f049Aa030885483517d36", - "0xD68Bf8eCbA2bc0002F0A8C6cDBE19283b7064C3A", - "0x234eadBA601E874fcED396758875f146992Cf72B", - "0x04aD31904B7cc9d84e6d924972146ABbeB22909b", - "0x420A8E998BC2cc0df14ec8DCf4076aE560B3Ed68", - "0xbCB81BFe71478d182eE612CF71Cb8b68DEC5E84A", - "0xB08a10588E5A8e89f0FaEBfFd18f0AC9eb984022", - "0x2a8d600aa656102Df55017fBA42e404a365bEb4b", - "0xBb381e6d0F3ed77bD47ecB7e9f5C21b800B3a9C6", - "0xbB398185E4b1587F666db8913Aa039fe1663Fd23", - "0xbD76310784908874E0F1f7DfcF2A8fB02594bE6F", - "0x7A729a3B63b9360C4939f8232235801b506c7240", - "0xbCAe8d211969279Eb1e07930e7da4670fe0c10e7", - "0x82D666B8113b7f4dBA99A7982518D6f4d50e771f", - "0xf34E317438C1F6fe863128bD43AB416203c7Cc0F", - "0xF447B93c108d50dc7D52593cB753702A283319aE", - "0xEf52fA3F031235289bd3088ef37c0c9471F99338", - "0x6c9a53d7BdA34815A80cCB6d239142354F39c232", - "0xCe4c5530A150FdB155F02cE42c8791234Bd93688", - "0x3a1FC65e730e3f00a43c58d3770D8a9a38aFEAa5", - "0x4Bc563ead4469C453d526ad603E5223e5B3EDfE4", - "0x24E68643e173BE75C9847ACE5B1aB02Ff2d347B3", - "0x6b6F8CfdF536C71Cc0820387259f181026E964ad", - "0x117325Ad73BFb95e6653baAc3114EF2Ec2f142C4", - "0xAF68D39a0AE64b88AE39A7531A54131946db380E", - "0xFA1054Bb918727B36008CCA64978CD83db230ae0", - "0xc094897bcf7aF2943f439E20ED3A7DcBd7b1C843", - "0xCF3Dfe76608bC47038bB47813081689Fc9a18299", - "0x739b2ea6824Ad2d5D1aF230E9fbc13FBb2E4746a", - "0x1DDE0476FA03c89CD4797169db7034231375F164", - "0xD67C2c733D9cAe58353c49A33Af6DDC206fCee9c", - "0x30B133b801cC60D0676b4c22E961E1718DE15ac9", - "0xf4F4fFCDDAe6B7a1B5B2e0d8eA0Dfd27F013D830", - "0xAF1986Efa7080f4546c2750f08f8Eb0BC714cdb8", - "0xE7D0a4950f44D845846Dd0BA499401ef9E6C310d", - "0x75831D954222abC150359D7A6ee495895Daa26f7", - "0xA321473aE338dd6B83BD20BAeB4D31fBBf1ff34C", - "0x95373F5C8A4FdFf72Cc9E9E0c0eB3b77eF10Ebec", - "0x5086D9849CdB2529a8E1cdB5AfC467aC5018A97d", - "0x89d5410F417858576197d6659D6680b532de7cAD", - "0x1473807Bb1F4328AD27b99d7846C9Df0bB7D46A0", - "0xA2186e410F61Bf1B5f84DD0b11AF281E55825264", - "0xAAfE784942216c8cA73cb0305d6d756B64c56bE2", - "0x4272955b14A1982dc90bec2fa9026941B318809f", - "0xACE58eF4c8350a20Db8cf2f7A452057f809F942F", - "0xe476e01732779Cd1c14b6E084Eb6D7abd10E4815", - "0x8D3c7311497489eBAcF0822f185779A5C7056F8b", - "0xD76f809CDEE95E8961E185003384315191E4F391", - "0x18ef2B849789a2BC790230A8280a6C899C791397", - "0xBac80a35E86fB2c31FfaFC12dF70cfc032D2fA5E", - "0x991C2C63ABfaA999B1Cb5Cb4B05237BCfcD3E1d8", - "0xcf256e5e665ae67ecd921da7b8c983427036c769", - "0xab3c0ab53ccc8d19a93fb331579ad98101f2bd14", - "0xafdb6f52bfacf17c676873115f50f2d3ebaef771", - "0x2Bf3b14711bDc8739e65D188d48E004645C9ed41", - "0x9E58c1F325f8D1Ba6a43E808588d67Ae6b4b6d34", - "0xe08B10E92D22339785038a494E39e98A62104A91", - "0x5B51dFF90Fe87E22A9170ddB74A979bEcEd880dB", - "0xD2B0009B3a222dF065d9DE766f2b2E01bC2a9825", - "0x6D04758840C946f0BFDB98599AdA4F0f68dE2247", - "0xf8b25F0D1Cfa1cbC3dD13c8a871643D14B81e7A4", - "0x5a06B00442E8bb2F1D7E8A191a27e0455369e9ca", - "0xF2D657a80C0246D81dF0ee02Aa3799b1cCc3F251", - "0x20Ed528e8fdbDCa16423f89dDcc848FfDbF2C14d", - "0xb157A23429fB6CaF15BE8aFA001c409C21A121c2", - "0x5bd1bcA04AE6F64842C4B8bd04fb464Fb7925195", - "0xAAE38D7D9987415Ee7502d2579092c559f1E767E", - "0x6518DCa3565fb7f6328284A6fb167968BA38BAE2", - "0x55A53C8491A3CCFB8084CB4Ea48884478c57346c", - "0xcc359d3C834760E587B579607fA3351dc4253e60", - "0xEe237BC2973963d5ADC121c542E2e508A049c18D", - "0xd835e8182372416E87bD904544501F485D6687cE", - "0xa7739978e6c7DA30D858e636ad2aCea4e912f482", - "0xd226F4F0a217A73035746E657b292c88EeE7daF3", - "0xc6595CEcD11f91517c7774357A0a824472b850D5", - "0x39475a68B88415B17324d06676B550A83BF2C70b", - "0x4636E1B72076732b16ea99DE639692Ea05a34893", - "0x3ED98536D5971D4EAC1881ffc8AbDDa2E2bc2ab4", - "0xA3Af04BaA3e418c4cE64DB8bC2d6FBCb1265f824", - "0x34dC8f8136E62B9323FB434D11CE26bAeFaaD3C3", - "0xAef0652343C154662F17D8b7AA86d2b2DE01D012", - "0x62b16eBF03C5aA31aF040a4C31D2d6b67107d92e", - "0x561078c9521519a71B512FBECa07F6C06AfE2e9b", - "0xc17f3e0cc8f8c270F9665d287fceAEeb228062F7", - "0x40FcDfB0d8f1c3B70745e5d6f62611783B22Ae0F", - "0x3aDb0D0F7569D7934ebB21088031D7663427EbC0", - "0x88e2641212047313d5AE5c01E4EaB4A2eAfBbC28", - "0x08B3361d3f0d51BB7D02894b3496ed771ca811e6", - "0xd1bE0B3c6F71adcF173bF3bD38AD260569B1Ed37", - "0x039C681B4CD27243e79C447BAEa6103f4c7A18e2", - "0x3eFfEc22EF5705a0Db035FE98E55df8b0D1F5076", - "0x6086765f5eaB32E5673629d8A33D5d28671182D4", - "0x8054A73E9e641E465d92CAA16B5Fd4a214C46Be3", - "0x46EebF35206BD1D0e11e89c5AB10b5Fd9DC759B6", - "0x1F72FbbB85591Edf28C73bE614f2F83381bbB95b", - "0x3DE1633fBc6A7B7CDe144f2A805A1c68ae5048f4", - "0xcec7b076BA94378d03e13D5898F9EF0f41394BEE", - "0xdA65AEDCE13c13a98dF8b872Af3596Bd22bC26E3", - "0xb7145dE7F5537D07D7Cc3410691D105566A5E434", - "0x18C5C07a9F68c82de678470a9E9306Ffc3e9Ced6", - "0x26f47811f74f67e0Dc00494406685d07A3255C96", - "0x8582267c3a2bb11fCcF1eBB1c9Af128e94B024E0", - "0x48eF177C15d091A038176cD262638bE999E138D6", - "0x40F7E873Ebefa5BB762341a8DD63f06d9A332D56", - "0x0d5Ecb27D1574E3B574d6D8c93C628d17348c99B", - "0x52692fF7230Bb3a11B77B09a63682F6Ef4d43B1c", - "0x177Bd708eB4880d2f0e0E319F48BF1308CFe6494", - "0x55BcAe2D9797184b30D0480A1F6aC3763AEdd9a5", - "0xFDc10560bd833B763352C481f5785Dd69C803429", - "0xC7abe55e5532ddA1943bbe5A94bD837dcd96e233", - "0xCce2E2ea6169449715D1B3E74c776335Cece21d6", - "0x7216e8395C37aE8A17665Aaeb8563ef81d6041A8", - "0x662bDd5cb8Aefc78361C653117Fd9a0f896e0246", - "0xfd5E8252d377f20dc53ABDc12B7A21704CC8A566", - "0xf17C4842D9b52C733a127591296B26FaA8F0d30b", - "0xCC0C4D49E2b104a24b6b6c35660fE8e5AEe1bA47", - "0x3a5138Cd818913169E6a5506a39ff1B0A18cA880", - "0x99e76A57337192B70BeC637e75fdd60251AC7Fb9", - "0x613dcbc575034eB8dbBF3FD5AF90697C241F4C73", - "0xEddA6eEd092736B15610767C6d3D7a1D2FCCb5EF", - "0xE7d661aCa8752Ac8A3C7dA51e4D8C468FeA0a76e", - "0xDe0A2585f0b2Fe4DE98C56DAF53389dDe8C315d2", - "0x9E6f53c29870C436F4eDC200714713549ADA274f", - "0x7BE6c15780390aa8335b356693d82411Fc26B6d9", - "0x45A3cac1d1620B28b8bED91d1bc0Eaf0323916A1", - "0x184bcF123cFF6af3F5Bb39BEE3E2a882c1497d6a", - "0x5cB9f1A5A184f56DE000B5Cf7492F1839451a742", - "0x1B589B49A02960973C8A1C2F5ab6e56023a6bbca", - "0x8F73C2eB80a0A6E83C6d74161f4872d5B9076A1C", - "0xaA4d006b4062650Ab4824f5E44187F10dbc6F100", - "0xc10c76ab2fcc743b783378ad5c192ade0ad70912", - "0x5fe9F73b79106f78552d3D846776300b9aDDd535" - ], - "kava": [ - "0xE9dfDD6Db5577504630aF0d59F6DA0fE58A7A543", - "0xA58580B3Ee8997A6F351b558Ba66785AFC9cF4aD", - "0xA066F4f1B3326a24EE88e0703b480E47fA28617c", - "0xD468F11f00133f843152eFE796094cF7da3C0CeF", - "0x144779e1D5d2177084e8DC58C703C7683a41c8Ad", - "0xC1D17E608236b7338c91ef6909Ed5631823d0631", - "0x83A369A0D21cCcC9594B35eA2EDb578737e2125E", - "0xfB8eDeD3e963C1Ba0e5215DB124848400C7a69dA" - ], - "arbitrum": [ - "0xC536FEDe5427cbF80A891eCABA1F4A67104c6bBf", - "0xAA23927C9ae3061517a6AD63d2F97E40d0357638", - "0x6b66F96cA6f9b27B87682c3FA6D628d509a550D9", - "0x4e3569d91F08402a6215cfA80E2CaA646d704242", - "0xCdE69123119036D088Ef45c6A28C4cECa697f52F", - "0xCfFfE2214D71835b23b8EFCB53253C56F2E4F86C", - "0xacC52DB471106b0cb4681958B9c40A2067C9F4b1", - "0x2228E92aF2bE0adeb69Fa5DF677E442BEf9a1343", - "0x77922ECD7618a4cEE460d2e45836827f1A35dee7", - "0xD6Ce8A5021C7731119Bb7ac714408ba38eFE450A", - "0xcc4373Ff112Bc16e56Fc57C4c75b90EaD04A16a9", - "0xC37b270a403057F3Fac0BEe873D72F8AdE086a3b", - "0x155fFdab92888d2600c1ff4cEBe9dB88f546890f", - "0xD71aA46F14e8CD63a18E3BBe778752D2a5E0cDD2", - "0xF3466b8dB66A3Fc6bb7cA22E3029E3f3F9f247AB", - "0xfe71D131b449e854bA6b3173ada393D41e58275f", - "0xf07355A90b03bfbf262CfBdB5DcABA6B6D77B23f", - "0x93f4f49411284636215C4CCf9120EC9C573a4235", - "0x7692a071Ab5267656333635e97E65b6F2734421E", - "0x1D8308b7cD5eD3762E0871EC2ef6b5b7d5DcDc47", - "0xc93E5392e1F2de59c822FB105AB10d75A547C895", - "0x488F3e4582cAaf0417b1051174861235726fbAb4", - "0x13AaeDC6d4Fb37Ebb71EC5612BfCC64Ff352E948", - "0x4dfC3Cc8275e71ecB9C060e0358044910Ecd572A", - "0x114Bc9fb8c6A0a92348C0Fb59a0ec3984a469b39", - "0x43AbE4df66235Cd8F11F8ef7931ca5330EC32c80", - "0xdD35cd7Bf20e22bbf6DF92221618202259e88661", - "0x15dF484c8caE85c895AcDD9198c3c01FEcd18938", - "0x622502B553AEaCC6D82d39f6AbedAb877B502ed9", - "0x6375B4C1eF33FE9A2dD4EFf936812f93c330134e", - "0x0bcACf155ceB5F5a3A8a61049934E3D79E65c13B", - "0x7c98B83925ea2574E688808Bc1cfB1F82F3Af559", - "0x0289dfF687B38b04eaE6887D1CB68a9F08B3e4f5", - "0xF4771304A5C01E5267b4E8Bc964042485ACaE5D8", - "0x48C0069565e2265b2D5586F762577DE38dc7778D", - "0x9E89e79DF8fEb31EB0d529586201A5541978CbE5", - "0x5E173F6Bf035cFf25029dee6003e8CC18Ac65D7e" - ], - "avax": [ - "0xdFE426842d07957c9e661794822dB12adc20b856", - "0x9aBE7c2062780e7ff8cd9E48bddc54c44107bB62", - "0x852e297f5fD64bB97da1Ce0eDfFB807dDe6f3296", - "0xF9cDc12e329247639AC20fC2a2B9CCcAB0d85A4e", - "0x6D254E5a833A62119631A75A52bEE7c9fb131199", - "0x9495651be0CAE17125091E86DdEf35C4D46085E7", - "0xe7EAbBF65BE5ecFf390124e0FABf15048C4442F5", - "0xFB65Af3cF542E356C16065467937BF90BB7B54BB", - "0xBA3D12D3a11ec109504518c7C284f39fD1626B6D", - "0x87EFdAe3fE46a861ec96fD5ffB5e4C5DDc8f9e79", - "0xf7afb8BBB576E883a6f8fA178b01d9D1E6233635", - "0xF57b11637EeE8e199A1CeE403F0A9efe0B9c968f", - "0x992804e457CBa7EC1f08c8EEE2536eE4a5c38304", - "0xc9dbE91fa4306208dFa092eCc6C1952AfF964bb3", - "0x507f9CB0A7269602588c184BcEB2e0Fdb1bA62Ce", - "0xc33e491BF463F410eF530DB307c384CE4Fa5B52B", - "0xc03edF8e71170985b0E7217C530BBEab83396F32", - "0xD468F11f00133f843152eFE796094cF7da3C0CeF", - "0xEA1A8b0D746b7ab2479655fB49ddFe9381b6d96C", - "0xCD2d3dF9b116E4f8A40271aD3838cDc581B20405", - "0xBa5702F3B09F9DD43b6915D67F5f98AfA2c4ef14", - "0xa638BC40082C2233a9285580d9176E7c0784e7A8", - "0x91bABb9e0CBdc9E7b6B04c03B8DC15E1Da92E143", - "0x7848B2163f0BE2Fc7c855021a8f0A59b2697934A", - "0x7B13baABa686990746153B08D420002Aa6eA2d75", - "0x81e9C6F53aD8576Ba9D73DEad9D48be91151d3da", - "0x8c0e385725070491F42f2b453559C478d9825763" - ] -} \ No newline at end of file diff --git a/projects/grim/index.js b/projects/grim/index.js deleted file mode 100644 index fcc2c6723be..00000000000 --- a/projects/grim/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const config = require('./config.json') - -Object.keys(config).forEach(chain => { - const pools = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:want', calls: pools}) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: pools}) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/grizzly-trade-derivatives-v2/index.js b/projects/grizzly-trade-derivatives-v2/index.js deleted file mode 100644 index f7fddc6dd7c..00000000000 --- a/projects/grizzly-trade-derivatives-v2/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const config = { - bsc: "0x350593457926b11BC9923f16FA06C1b7D10f4b56", -}; - -Object.keys(config).forEach((chain) => { - const target = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.call({ abi: "address[]:getAssetList", target }); - return api.sumTokens({ owner: target, tokens }); - }, - }; -}); diff --git a/projects/grizzly-trade/index.js b/projects/grizzly-trade/index.js deleted file mode 100644 index e2f16a31bf5..00000000000 --- a/projects/grizzly-trade/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - bsc: { - tvl: gmxExports({ vault: '0x606E4922b259fe28c10e6731e8317705AA1e253B', }) - }, -} \ No newline at end of file diff --git a/projects/grizzlyfi/index.js b/projects/grizzlyfi/index.js deleted file mode 100644 index 6c5b24ec49f..00000000000 --- a/projects/grizzlyfi/index.js +++ /dev/null @@ -1,245 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { stakings } = require("../helper/staking"); -const { unwrapLPsAuto } = require("../helper/unwrapLPs"); -const { BigNumber } = require("bignumber.js"); - -const abiGrizzly = "uint256:grizzlyStrategyDeposits" -const abiStandard = "uint256:standardStrategyDeposits" -const abiStable = "uint256:stablecoinStrategyDeposits" -const abiFarm = "uint256:totalDeposits" -const abiYearn = "uint256:totalAssets" -const abiV3 = "function getUnderlyingBalances() view returns (uint256, uint256)" - -const lpReservesAbi = 'function balances(uint256 index) view returns (uint256)' -const tokenAbi = 'function coins(uint256 index) view returns (address)' -const lpSuppliesAbi = "uint256:totalSupply" -const transformAddress = i => 'bsc:' + i - -const pcsHives = [ - // PCS hives - { - hive: "0xDa0Ae0710b080AC64e72Fa3eC44203F27750F801", - token: "0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16" - }, - { - hive: "0x8D83Ad61Ae6eDE4274876EE9ad9127843ba2AbF7", - token: "0xEc6557348085Aa57C72514D67070dC863C0a5A8c" - }, - { - hive: "0xE4Dbb05498C42A6E780e4C6F96A4E20a7D7Cb1d6", - token: "0x7EFaEf62fDdCCa950418312c6C91Aef321375A00" - }, - { - hive: "0x66B1bACAB888017cA96abBf28ad8d10B7A7B5eC3", - token: "0x2354ef4DF11afacb85a5C7f98B624072ECcddbB1" - }, - { - hive: "0x9F45E2181D365F9057f67153e6D213e2358A5A4B", - token: "0x66FDB2eCCfB58cF098eaa419e5EfDe841368e489" - }, - { - hive: "0x3cbF1d01A650e9DB566A123E3D5e42B9684C6b6a", - token: "0xEa26B78255Df2bBC31C1eBf60010D78670185bD0" - }, - { - hive: "0x6fc2FEed99A97105B988657f9917B771CD809f40", - token: "0xF45cd219aEF8618A92BAa7aD848364a158a24F33" - }, - // Biswap hives - { - hive: "0x0286A72F055A425af9096b187bf7f88e9f7D96A9", - token: "0x8840C6252e2e86e545deFb6da98B2a0E26d8C1BA" - }, - { - hive: "0xB07a180735657a92d8e2b77D213bCBE5ab819089", - token: "0xa987f0b7098585c735cD943ee07544a84e923d1D" - }, - { - hive: "0xe178eaDBcb4A64476B8E4673D99192C25ef1B42e", - token: "0x63b30de1A998e9E64FD58A21F68D323B9BcD8F85" - }, -]; - -const farms = [ - { - hive: "0x3641676bFe07F07DD2f79244BcdBb751f95F67Ca", - token: "0x2b702b4e676b51f98c6b4af1b2cafd6a9fc2a3e0" - }, - { - hive: "0xF530B259fFf408aaB2B02aa60dd6fe48FCDC2FC9", - token: "0x352008bf4319c3b7b8794f1c2115b9aa18259ebb" - }, -] - -const stableHives = [ - { - hive: "0x7Bf5005F9a427cB4a3274bFCf36125cE979F77cb", - token: "0x36842f8fb99d55477c0da638af5ceb6bbf86aa98", - swap: "0x169f653a54acd441ab34b73da9946e2c451787ef" - }, - { - hive: "0x7E5762A7D68Fabcba39349229014c59Db6dc5eB0", - token: "0xee1bcc9f1692e81a281b3a302a4b67890ba4be76", - swap: "0x3efebc418efb585248a0d2140cfb87afcc2c63dd" - }, - { - hive: "0xCCf6356C96Eadd2702fe6f5Ef99B1C0a3966EDf7", - token: "0x1a77c359d0019cd8f4d36b7cdf5a88043d801072", - swap: "0xc2f5b9a3d9138ab2b74d581fc11346219ebf43fe" - }, -] - -const yearnHives = [ - // Thena hives - { - hive: "0x5Aa6dd6bA3091ba151B4E5c0C0c4f06335e91482", - token: "0xa97e46dc17e2b678e5f049a2670fae000b57f05e" - }, - { - hive: "0x38b2f5038F70b8A4a54A2CC8d35d85Cc5f0794e4", - token: "0xc8da40f8a354530f04ce2dde98ebc2960a9ea449" - }, - { - hive: "0x3dF96fE4E92f38F7C931fA5A00d1f644D1c60dbF", - token: "0x075e794f631ee81df1aadb510ac6ec8803b0fa35" - }, - { - hive: "0x9Ce89aba449135539A61C57665547444a92784aB", - token: "0x3c552e8ac4473222e3d794adecfa432eace85929" - }, - { - hive: "0xc750432473eABE034e84d373CB92f16e6EB0d273", - token: "0x3ec80a1f547ee6fd5d7fc0dc0c1525ff343d087c" - }, - { - hive: "0xf01F9e8A5C6B9Db49e851e8d72B70569042F0e1C", - token: "0x63db6ba9e512186c2faadacef342fb4a40dc577c" - }, - { - hive: "0xF7DE4A13669CB33D54b59f35FE71dFcD67e4635E", - token: "0x34b897289fccb43c048b2cea6405e840a129e021" - } -] - -const pcsV3 = [ - { - hive: "0x25223015ee4dbaf9525ddd43797cae1dcd83f6b5", - token0: ADDRESSES.bsc.USDT, - token1: ADDRESSES.bsc.BUSD - }, - { - hive: "0x9eab3bf245da9b6d8705b1a906ee228382c38f93", - token0: ADDRESSES.bsc.USDT, - token1: ADDRESSES.bsc.USDC - }, - { - hive: "0x76ab668d93135bcd64df8e4a7ab9dd05fac4cdbf", - token0: ADDRESSES.bsc.USDC, - token1: ADDRESSES.bsc.BUSD - } -] - -async function tvl(api) { - const balances = api.getBalances(); - - const getHive = i => i.hive - - const [hiveBalancesGrizzly, - hiveBalancesStandard, - hiveBalancesStable, - stableHiveBalancesGrizzly, - stableHiveBalancesStandard, - stableHiveBalancesStable, - farmBalances, - yearnBalances, - pcsV3Balances] = await Promise.all([ - api.multiCall({ calls: pcsHives.map(getHive), abi: abiGrizzly, }), - api.multiCall({ calls: pcsHives.map(getHive), abi: abiStandard, }), - api.multiCall({ calls: pcsHives.map(getHive), abi: abiStable, }), - api.multiCall({ calls: stableHives.map(getHive), abi: abiGrizzly, }), - api.multiCall({ calls: stableHives.map(getHive), abi: abiStandard, }), - api.multiCall({ calls: stableHives.map(getHive), abi: abiStable, }), - api.multiCall({ calls: farms.map(getHive), abi: abiFarm, }), - api.multiCall({ calls: yearnHives.map(getHive), abi: abiYearn, }), - api.multiCall({ calls: pcsV3.map(getHive), abi: abiV3, }), - ]); - - hiveBalancesGrizzly.map((b, i) => { - const token = pcsHives[i].token - api.add(token, b) - api.add(token, hiveBalancesStandard[i]) - api.add(token, hiveBalancesStable[i]) - }); - - const lpPositionsStable = stableHiveBalancesGrizzly.map((b, i) => { - const grizzly = new BigNumber(b); - const standard = new BigNumber(stableHiveBalancesStandard[i]); - const stable = new BigNumber(stableHiveBalancesStable[i]); - - return { - balance: grizzly.plus(standard).plus(stable).toString(), - token: stableHives[i].token, - swap: stableHives[i].swap - } - }); - - farmBalances.forEach((b, i) => api.add(farms[i].token, b)); - yearnBalances.forEach((b, i) => api.add(yearnHives[i].token, b)); - - pcsV3Balances.forEach((b, i) => { - api.add(pcsV3[i].token0, b[0]) - api.add(pcsV3[i].token1, b[1]) - }); - - await unwrapStablePcsLPs(balances, lpPositionsStable, api) - await unwrapLPsAuto({ ...api, balances, }) - return balances; -} - -async function unwrapStablePcsLPs(balances, lpPositions, api) { - lpPositions = lpPositions.filter(i => +i.balance > 0) - const swaps = lpPositions.map(i => i.swap) - - const [ - lpReserves0, - lpReserves1, - lpSupplies, - tokens0, - tokens1, - ] = await Promise.all([ - api.multiCall({ abi: lpReservesAbi, calls: swaps.map(i => ({ target: i, params: [0] })) }), - api.multiCall({ abi: lpReservesAbi, calls: swaps.map(i => ({ target: i, params: [1] })) }), - api.multiCall({ abi: lpSuppliesAbi, calls: lpPositions.map(i => i.token), }), - api.multiCall({ abi: tokenAbi, calls: swaps.map(i => ({ target: i, params: [0] })), }), - api.multiCall({ abi: tokenAbi, calls: swaps.map(i => ({ target: i, params: [1] })), }), - ]) - - - lpPositions.map((lpPosition, i) => { - const token0 = tokens0[i].toLowerCase() - const token1 = tokens1[i].toLowerCase() - const supply = lpSupplies[i] - const _reserve0 = lpReserves0[i] - const _reserve1 = lpReserves1[i] - - const token0Balance = BigNumber(lpPosition.balance).times(BigNumber(_reserve0)).div(BigNumber(supply)) - sdk.util.sumSingleBalance(balances, transformAddress(token0), token0Balance.toFixed(0)) - const token1Balance = BigNumber(lpPosition.balance).times(BigNumber(_reserve1)).div(BigNumber(supply)) - sdk.util.sumSingleBalance(balances, transformAddress(token1), token1Balance.toFixed(0)) - }) -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl, - staking: stakings( - [ - "0x6F42895f37291ec45f0A307b155229b923Ff83F1", - "0xB80287c110a76e4BbF0315337Dbc8d98d7DE25DB" - ], - "0xa045e37a0d1dd3a45fefb8803d22457abc0a728a", - ) - } -}; diff --git a/projects/grokswap/index.js b/projects/grokswap/index.js deleted file mode 100644 index 996f30a929d..00000000000 --- a/projects/grokswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - op_bnb: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: "0x01D434704aFf3edDb37eFB49f4bFE697e67b3BD0", - }), - }, -}; diff --git a/projects/groprotocol/index.js b/projects/groprotocol/index.js deleted file mode 100644 index 73622d82076..00000000000 --- a/projects/groprotocol/index.js +++ /dev/null @@ -1,63 +0,0 @@ -// Adapter for Gro Protocol : https://gro.xyz - -const { sumTokens2, } = require("../helper/unwrapLPs"); - -const { stakings } = require("../helper/staking"); -const { sumERC4626VaultsExport } = require("../helper/erc4626"); - -// Gro Protocol Token Addresses -const GRO = "0x3Ec8798B81485A254928B70CDA1cf0A2BB0B74D7"; // Governance Token, not counted for TVL unless staked in pools -const GVT = "0x3ADb04E127b9C0a5D36094125669d4603AC52a0c"; // Protocol token representing share of assets, fully count -const PWRD = "0xf0a93d4994b3d98fb5e3a2f90dbc2d69073cb86b"; // Protocol token representing share of assets, fully count - -// Gro Protocol LP Pool Addresses -const P1_UNI_GRO_GVT = "0x2ac5bC9ddA37601EDb1A5E29699dEB0A5b67E9bB"; // Count non-GVT assets and only if staked -const P2_UNI_GRO_USDC = "0x21C5918CcB42d20A2368bdCA8feDA0399EbfD2f6"; // Count only if staked -const P4_CRV_PWRD_TCRV = "0xbcb91E689114B9Cc865AD7871845C95241Df4105"; // Count non-PWRD assets and only if staked -const P5_BAL_GRO_WETH = "0x702605f43471183158938c1a3e5f5a359d7b31ba"; // Count only if staked - -// Contract Addresses -const GROTokenStaker1 = "0x001C249c09090D79Dc350A286247479F08c7aaD7"; -const GROTokenStaker2 = "0x2E32bAd45a1C29c1EA27cf4dD588DF9e68ED376C"; - -async function tvl(api) { - const tokens = [PWRD, GVT] - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) - api.add(tokens, supplies) -} - -async function pool2(api) { - return sumTokens2({ - api, - owners: [GROTokenStaker1, GROTokenStaker2], - tokens: [ - P4_CRV_PWRD_TCRV, - P1_UNI_GRO_GVT, - P2_UNI_GRO_USDC, - P5_BAL_GRO_WETH, - ], - }) -} - -const labs = [ - "0x57DaED1ee021BE9991F5d30CF494b6B09B5B449E", // USDC - "0x5E57E11483A3F60A76af3045303604522059dA2a", // DAI - "0x471F4B4b9A97F82C3a25b034B33A8E306eE9Beb5", // USDT - "0x2Eb05cfFA24309b9aaf300392A4D8Db745d4E592", // USDC - "0x6063597B9356B246E706Fd6A48C780F897e3ef55", // DAI - "0x6EF44077a1F5e10cDfcCc30EFb7dCdb1d5475581", // USDT -] - -module.exports = { - ethereum: { - pool2, - staking: stakings([GROTokenStaker1, GROTokenStaker2], GRO), - tvl, - }, - avax: { - tvl: sumERC4626VaultsExport({ vaults: labs, tokenAbi: 'token', balanceAbi: 'totalAssets' }), - }, - start: '2021-05-28', // 28-05-2021 12:19:07 (UTC) - methodology: - "Assets held within the GRO Protocol - either within the PWRD or Vault (GVT) products, or staked in the Gro Protocol pools. Avax TVL is the sum of tokens locked in Gro Labs.", -}; diff --git a/projects/groveswap/index.js b/projects/groveswap/index.js deleted file mode 100644 index 4367ef66bc6..00000000000 --- a/projects/groveswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingUnknownPricedLP } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x0ed713989f421ff6f702b2e4e1c93b1bb9002119', }), - staking: stakingUnknownPricedLP('0x9db65123aa185811e50f8b626a7d4799c39ea4d5', '0xf33893de6eb6ae9a67442e066ae9abd228f5290c', 'bsc', '0xe27f915a8a9ca6c31b193311ae76b8738b926d17'), - }, - ethereum: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x6c565c5bbdc7f023cae8a2495105a531caac6e54', }), - }, - grove: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x401e7e28e0C679E1a3242ac6CD93C9c56208A260', }), - } -} \ No newline at end of file diff --git a/projects/growi-hf/index.js b/projects/growi-hf/index.js deleted file mode 100644 index 50d4994929a..00000000000 --- a/projects/growi-hf/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { get } = require("../helper/http"); -const ADDRESSES = require('../helper/coreAssets.json') - -const VAULT_ADDRESS = "0x1e37a337ed460039d1b15bd3bc489de789768d5e"; - -async function tvl(api) { - const data = await get("https://stats-data.hyperliquid.xyz/Mainnet/vaults"); - const growiVault = data.find((d) => d.summary?.vaultAddress?.toLowerCase() === VAULT_ADDRESS); - api.add(ADDRESSES.ethereum.USDC,+growiVault.summary.tvl * 1e6, { skipChain: true }); -} -module.exports = { - methodology: "TVL is calculated directly from Hyperliquid API by getting GrowiHF Vault TVL.", - timetravel: false, - hyperliquid: { tvl }, - misrepresentedTokens: true -}; \ No newline at end of file diff --git a/projects/growthdefi/abi.json b/projects/growthdefi/abi.json deleted file mode 100644 index c257b74be8e..00000000000 --- a/projects/growthdefi/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCakePerShare)", - "poolLength": "uint256:poolLength", - "symbol": "string:symbol", - "reserveToken": "address:reserveToken", - "totalReserve": "uint256:totalReserve", - "state": "function state() view returns (address _masterChef, uint256 _pid, address _rewardToken, address _routingToken, address _reserveToken, address _treasury, address _collector, address _exchange, uint256 _minimalGulpFactor, uint256 _forceGulpRatio, uint256 _performanceFee, bool _emergencyMode)" -} \ No newline at end of file diff --git a/projects/growthdefi/abis/belt.json b/projects/growthdefi/abis/belt.json deleted file mode 100644 index 5440edfe92d..00000000000 --- a/projects/growthdefi/abis/belt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "totalSupply": "uint256:totalSupply", - "balances": "function balances(int128 arg0) view returns (uint256 out)", - "coins": "function coins(int128 arg0) view returns (address out)", - "sharesToAmount": "function sharesToAmount(uint256 _shares) view returns (uint256)", - "token": "address:token" -} \ No newline at end of file diff --git a/projects/growthdefi/abis/psm.json b/projects/growthdefi/abis/psm.json deleted file mode 100644 index f8c5fb22ef4..00000000000 --- a/projects/growthdefi/abis/psm.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "peggedToken": "address:peggedToken" -} \ No newline at end of file diff --git a/projects/growthdefi/index.js b/projects/growthdefi/index.js deleted file mode 100644 index 2f226e0b8a0..00000000000 --- a/projects/growthdefi/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json") - -const config = { - bsc: { - autoGem: "0xE02CE329281664A5d2BC0006342DC84f6c384663", - DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - pools: [ - "0x13e7a6691fe00de975cf27868386f4ae9aed3cdc", - "0xc2e8c3c427e0a5baaf512a013516aecb65bd75cb", - ], - singlePSM: ADDRESSES.bsc.BUSD, - }, - fantom: { - DAI: ADDRESSES.fantom.DAI, - pools: [ - "0x30463d33735677b4e70f956e3dd61c6e94d70dfe", - "0xaebd31E9FFcB222feE947f22369257cEcf1F96CA", - ], - }, - avax: { - DAI: ADDRESSES.avax.DAI, - singlePSM: ADDRESSES.avax.USDC_e, - autoGem: "0x65764167EC4B38D611F961515B51a40628614018", - } -} - -const tvl = async (api) => { - const { pools = [], autoGem, DAI, singlePSM } = config[api.chain] ?? {} - - const stakeLpTokens = (await api.multiCall({ abi: abi.state, calls: pools, })).map((stkLp) => stkLp._reserveToken); - const stakeLpTokens_bal = (await api.multiCall({ abi: abi.totalReserve, calls: pools, })) - api.add(stakeLpTokens, stakeLpTokens_bal) - if (autoGem) await api.sumTokens({ tokens: [singlePSM], owner: autoGem }) - - if (api.chain === 'avax') { - const bal = await api.call({ abi: 'uint256:totalReserve', target: '0x88Cc23286f1356EB0163Ad5bdbFa639416e4168d' }) - api.add(DAI, bal) - } else if (api.chain === 'fantom') { - const bal = await api.call({ abi: 'uint256:totalReserve', target: '0xA561fa603bf0B43Cb0d0911EeccC8B6777d3401B' }) - const want = await api.call({ abi: 'address:want', target: '0x3f569724cce63f7f24c5f921d5ddcfe125add96b' }) - const wantBal = await api.call({ abi: 'uint256:balance', target: '0x3f569724cce63f7f24c5f921d5ddcfe125add96b' }) - const lQDRBal = await api.call({ abi: 'erc20:balanceOf', target: '0x3ae658656d1c526144db371faef2fff7170654ee', params: '0x814c66594a22404e101fecfecac1012d8d75c156' }) - api.add('0x10b620b2dbAC4Faa7D7FFD71Da486f5D44cd86f9', lQDRBal) - api.add(DAI, bal) - api.add(want, wantBal) - } -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/grvt-io/index.js b/projects/grvt-io/index.js deleted file mode 100644 index 184772bea17..00000000000 --- a/projects/grvt-io/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 325, }), - }, -} diff --git a/projects/gryphon-staking/index.js b/projects/gryphon-staking/index.js deleted file mode 100644 index 81fff79cf19..00000000000 --- a/projects/gryphon-staking/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); - -const config = { - injective: { - nAssets: [ - { name: "nINJ", asset: "inj13xlpypcwl5fuc84uhqzzqumnrcfpptyl6w3vrf", coingeckoId: "injective-protocol" }, - { name: "nATOM", asset: "inj1ln2tayrlh0vl73cdzxryhkuuppkycxpna5jm87", coingeckoId: "cosmos" } - ], - } -} -module.exports = { - timetravel: false, -}; - -Object.keys(config).forEach(chain => { - const { nAssets } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - for (const { asset, coingeckoId } of nAssets) { - const { total_supply, decimals } = await queryContract({ contract: asset, chain, data: { token_info: {} } }) - api.add(coingeckoId, total_supply / 10 ** decimals, { skipChain: true }) - } - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/gt3/index.js b/projects/gt3/index.js deleted file mode 100644 index d3b547c26cd..00000000000 --- a/projects/gt3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens'); - -module.exports = uniTvlExports({ - polygon: '0x2d7360Db7216792cfc2c73B79C0cA629007E2af4' -}) \ No newline at end of file diff --git a/projects/gton.js b/projects/gton.js deleted file mode 100644 index c25c3e403f9..00000000000 --- a/projects/gton.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require("./helper/unwrapLPs"); -const { staking } = require('./helper/staking') - -const gton = "0xC1Be9a4D5D45BeeACAE296a7BD5fADBfc14602C4".toLowerCase(); -const stakingContract = "0xB0dAAb4eb0C23aFFaA5c9943d6f361b51479ac48"; -const treasury = "0xB3D22267E7260ec6c3931d50D215ABa5Fd54506a"; -const chain = 'fantom' - -module.exports = { - fantom: { - tvl: sumTokensExport({ chain, owner: treasury, tokens: [ - nullAddress, - '0xddcb3ffd12750b45d32e084887fdf1aabab34239', - '0x841fad6eae12c286d1fd18d1d525dffa75c7effe', - '0x5cc61a78f164885776aa610fb0fe1257df78e59b', - ADDRESSES.fantom.WFTM, - '0xb688e18f34e6e424c44b247318f22367ed7df3e2', - ADDRESSES.fantom.renBTC, - '0x1E4F97b9f9F913c46F1632781732927B9019C68b', - '0x657A1861c15A3deD9AF0B6799a195a249ebdCbc6', - '0xc3f069d7439baf6d4d6e9478d9cc77778e62d147', - ADDRESSES.fantom.fUSDT, - '0xf16e81dce15b08f326220742020379b855b87df9', - ]}), - staking: staking([stakingContract, treasury,], gton, chain), - } -}; \ No newline at end of file diff --git a/projects/guacswap/index.js b/projects/guacswap/index.js deleted file mode 100644 index aa0775ef62f..00000000000 --- a/projects/guacswap/index.js +++ /dev/null @@ -1,212 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, idl.metadata.address, provider) - const data = await program.account.pool.all() - return sumTokens2({ tokenAccounts: data.map(({account: i}) => [i.poolXAccount.toString(), i.poolYAccount.toString()]).flat()}) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} - -const idl = { - version: '0.1.1', - name: 'guacswap', - instructions: [], - accounts: [ - { - name: 'pool', - type: { - kind: 'struct', - fields: [ - { - name: 'tokenX', - type: 'publicKey' - }, - { - name: 'tokenY', - type: 'publicKey' - }, - { - name: 'poolXAccount', - type: 'publicKey' - }, - { - name: 'poolYAccount', - type: 'publicKey' - }, - { - name: 'admin', - type: 'publicKey' - }, - { - name: 'projectOwner', - type: 'publicKey' - }, - { - name: 'tokenXReserve', - type: { - defined: 'Token' - } - }, - { - name: 'tokenYReserve', - type: { - defined: 'Token' - } - }, - { - name: 'selfShares', - type: { - defined: 'Token' - } - }, - { - name: 'allShares', - type: { - defined: 'Token' - } - }, - { - name: 'buybackAmountX', - type: { - defined: 'Token' - } - }, - { - name: 'buybackAmountY', - type: { - defined: 'Token' - } - }, - { - name: 'projectAmountX', - type: { - defined: 'Token' - } - }, - { - name: 'projectAmountY', - type: { - defined: 'Token' - } - }, - { - name: 'mercantiAmountX', - type: { - defined: 'Token' - } - }, - { - name: 'mercantiAmountY', - type: { - defined: 'Token' - } - }, - { - name: 'lpAccumulatorX', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'lpAccumulatorY', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'constK', - type: { - defined: 'Product' - } - }, - { - name: 'price', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'lpFee', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'buybackFee', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'projectFee', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'mercantiFee', - type: { - defined: 'FixedPoint' - } - }, - { - name: 'farmCount', - type: 'u64' - }, - { - name: 'bump', - type: 'u8' - } - ] - } - }, - ], - types: [ - { - name: 'FixedPoint', - type: { - kind: 'struct', - fields: [ - { - name: 'v', - type: 'u128' - } - ] - } - }, - { - name: 'Token', - type: { - kind: 'struct', - fields: [ - { - name: 'v', - type: 'u64' - } - ] - } - }, - { - name: 'Product', - type: { - kind: 'struct', - fields: [ - { - name: 'v', - type: 'u128' - } - ] - } - }, - ], - errors: [], - metadata: { - address: 'Gswppe6ERWKpUTXvRPfXdzHhiCyJvLadVvXGfdpBqcE1', - } -} diff --git a/projects/guale/index.js b/projects/guale/index.js deleted file mode 100644 index cfcb1f12198..00000000000 --- a/projects/guale/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const VAULTS = [ - // GUALE-CLMUSDC_USDT - "0x6a84f7ba493c4d6590696b782b0f0fb2588fbdc2", - // GUALE-CLMWBTC_WETH - "0xea89fd775cc0203b79a5cb5710d66a6145ea391d", - // GUALE-CLMWETH_USDC - "0x6077e51a48a1ee3f8fa975dc23041cf248b180c7", -].map(a => a.toLowerCase()) - -const abi = { - // Returns the addresses of the two underlying tokens (token0, token1) - wants: "function wants() view returns (address token0, address token1)", - // Returns the total balances of those two tokens (amount0, amount1) - // across the whole system (vault + strategy + positions) - balances: "function balances() view returns (uint256 amount0, uint256 amount1)", -} - -async function tvl(api) { - // Call wants() and balances() on all vaults - const wants = await api.multiCall({ abi: abi.wants, calls: VAULTS }) - const bals = await api.multiCall({ abi: abi.balances, calls: VAULTS }) - - // Sum token0/token1 for each vault. DefiLlama helpers will convert to USD and handle decimals. - for (let i = 0; i < VAULTS.length; i++) { - const w = wants[i] - const b = bals[i] - - // Support return values as arrays or named objects, depending on RPC/codec - const t0 = (Array.isArray(w) ? w[0] : w.token0).toLowerCase() - const t1 = (Array.isArray(w) ? w[1] : w.token1).toLowerCase() - const a0 = Array.isArray(b) ? b[0] : b.amount0 - const a1 = Array.isArray(b) ? b[1] : b.amount1 - - await api.add(t0, a0) - await api.add(t1, a1) - } -} - -module.exports = { - methodology: - "Sum the underlying balances of each CLM vault by calling balances(), and obtain token addresses via wants(). This captures TVL including funds held in the strategy / concentrated position.", - arbitrum: { tvl }, -} \ No newline at end of file diff --git a/projects/gud-tech/index.js b/projects/gud-tech/index.js deleted file mode 100644 index 450d69d2e8e..00000000000 --- a/projects/gud-tech/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - zircuit: { factory: '0xF9D8fC35C11cF6acd3D04CA1C3F7F4Fa65e20dCf', fromBlock: 6586739, missing: ['0xfd418e42783382e86ae91e445406600ba144d162']}, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, missing = [] } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event TokenStakabilityChanged(address token, bool enabled)', fromBlock, }) - const tokens = logs.map(i => i.token).concat(missing) - return sumTokens2({ api, owner: factory, tokens, permitFailure: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/gudchain/index.js b/projects/gudchain/index.js deleted file mode 100644 index acb4646fd8e..00000000000 --- a/projects/gudchain/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const launchBridge = "0xd759e176DEF0F14e5C2D300238d41b1CBB5585BF"; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owner: launchBridge, - tokens: [ - ADDRESSES.null, - ADDRESSES.ethereum.STETH, - ADDRESSES.bsc.wBETH, - ADDRESSES.ethereum.METH, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.SDAI, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC - ] - }) - } -}; diff --git a/projects/gullnetwork-amm/index.js b/projects/gullnetwork-amm/index.js deleted file mode 100644 index 441fa41b475..00000000000 --- a/projects/gullnetwork-amm/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - manta: { tvl: getUniTVL({ factory: '0x31a78894a2B5dE2C4244cD41595CD0050a906Db3', useDefaultCoreAssets: true, }) } -} \ No newline at end of file diff --git a/projects/gullnetwork/index.js b/projects/gullnetwork/index.js deleted file mode 100644 index 5bb2792497d..00000000000 --- a/projects/gullnetwork/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const FACTORY_SINGLETON_ADDR = '0xFc6387f581d2A827F183A9ea68f07063F99744dE' - -const getStakingVaultTvl = async (api, stakingVaultFactory) => { - if (!stakingVaultFactory) return - const vaults = await api.fetchList({ lengthAbi: 'length', itemAbi: 'stakingVaults', target: stakingVaultFactory }) - const stakedTokens = await api.multiCall({ calls: vaults, abi: 'address:stakedToken' }) - await api.sumTokens({ tokensAndOwners2: [stakedTokens, vaults] }) -} - -const getRewardTvl = async (api, rewardFactory) => { - if (!rewardFactory) return - const stakeRewarders = await api.fetchList({ lengthAbi: 'uint:stakeRewarderLength', itemAbi: 'stakeRewarders', target: rewardFactory }) - const tokensAndOwners = [] - await Promise.all(stakeRewarders.map(async (stakeRewarder) => { - const rewardTokens_ = await api.fetchList({ lengthAbi: 'rewardLength', itemAbi: 'rewardTokens', target: stakeRewarder }) - tokensAndOwners.push(...rewardTokens_.map(token => [token, stakeRewarder])) - })) - await api.sumTokens({ tokensAndOwners }) -} - -const tvl = async (api) => { - const { stakingVaultFactory = FACTORY_SINGLETON_ADDR, rewardFactory } = config[api.chain] - await getStakingVaultTvl(api, stakingVaultFactory) - await getRewardTvl(api, rewardFactory) -} - -module.exports = { - start: '2024-03-19', // May-17-2024 12:45:31 PM +UTC - methodology: 'GullNetwork TVL including total values of assets staked in our staking vaults, and assets in the liquidity pool.', -} - -const config = { - ethereum: {}, - bsc: {}, - manta: { - rewardFactory: '0x2a18164B5e84d9C1B03ddbb5A1982A35cF75E506' - }, - base: {}, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/gumball/index.js b/projects/gumball/index.js deleted file mode 100644 index 640cf4bd221..00000000000 --- a/projects/gumball/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getTokenPrices } = require("../helper/unknownTokens"); -const sdk = require('@defillama/sdk') - -const abi = { - gbtPrice: "uint256:currentPrice", - deployLength: "function totalDeployed() view returns (uint256)", - baseToken: "function BASE_TOKEN() view returns (address base_token)", - deployInfo: "function deployInfo(uint256) view returns(address gbt, address gnft, address xgbt, bool allowed)" -} - -const GumballFactoryContractArbitrum = '0xf5cfBaF55036264B902D9ae55A114d9A22c42750' - -async function token0CallFn({ api, calls }) { - return calls.map(i => ({ - input: i, - output: i.target - })) -} -async function token1CallFn({ api, calls }) { - return api.multiCall({ abi: abi.baseToken, calls, withMetadata: true, }) -} -async function reservesCallFn({ api, calls }) { - const baseBals = await api.multiCall({ abi: 'uint256:baseBal', calls, }) - const gbtBals = await api.multiCall({ abi: 'uint256:gbtBal', calls, }) - return baseBals.map((val, i) => { - const reserves = [gbtBals[i], val] - reserves._reserve0 = reserves[0] - reserves._reserve1 = reserves[1] - return { - input: calls[i], - output: reserves, - } - }) -} - -async function tvl(api) { - let items = await api.fetchList({ itemAbi: abi.deployInfo, lengthAbi: abi.deployLength, target: GumballFactoryContractArbitrum }) - items = items.filter(i => i.allowed) - // let prices = await api.multiCall({ abi: abi.gbtPrice, calls: items.map(i => i.gbt) }) - let baseTokens = await api.multiCall({ abi: abi.baseToken, calls: items.map(i => i.gbt) }) - const lps = items.map(i => i.gbt) - const nftCalls = items.map(i => ({ target: i.gnft, params: i.xgbt })) - const { balances, updateBalances, } = await getTokenPrices({ - chain: api.chain, block: api.block, useDefaultCoreAssets: true, - allLps: true, lps, token0CallFn, token1CallFn, reservesCallFn, - }) - const nftBalances = await api.multiCall({ abi: 'erc20:balanceOf', calls: nftCalls, }) - nftBalances.forEach((val, i) => { - sdk.util.sumSingleBalance(balances, items[i].gbt.toLowerCase(), val, api.chain) - }) - const toa = [] - items.forEach((val, i) => { - const owners = [val.xgbt] - owners.forEach(o => { - toa.push([baseTokens[i], o]) - toa.push([val.gbt, o]) - }) - }) - - await sumTokens2({ api, tokensAndOwners: toa, balances, }) - await updateBalances(balances) - return balances -} - -module.exports = { - arbitrum: { - tvl, - }, - methodology: 'Value of base token * 2 (nfts in pools are valued equal to base tokens in pool) + staked nft tokens' -} \ No newline at end of file diff --git a/projects/gxypad/index.js b/projects/gxypad/index.js deleted file mode 100644 index 64cf72344b3..00000000000 --- a/projects/gxypad/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ - factory: '0xdCBA2077FE5261753AB29Cc886Bd5CFe1786a7D6', - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/gyro.js b/projects/gyro.js deleted file mode 100644 index d9818ba516c..00000000000 --- a/projects/gyro.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { ohmTvl } = require('./helper/ohm') - -module.exports=ohmTvl("0x8B1522402FECe066d83E0F6C97024248Be3C8c01", [ - [ADDRESSES.bsc.USDT, false], - [ADDRESSES.bsc.BUSD, false], - ["0x5ca063a7e2bebefeb2bdea42158f5b825f0f9ffb", true], - ["0xa5399084a5f06d308c4527517bbb781c4dce887c", true] -], "bsc", "0xe9c178cfdfeb917a46429714e5d51f6d4f296b75", "0x1b239abe619e74232c827fbe5e49a4c072bd869d") -module.exports.bsc.tvl = () => 0 \ No newline at end of file diff --git a/projects/gyroscope/index.js b/projects/gyroscope/index.js deleted file mode 100644 index 0b5c0993707..00000000000 --- a/projects/gyroscope/index.js +++ /dev/null @@ -1,180 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); - -module.exports = { - doublecounted: true, - methodology: "sum of all the tokens locked in CLPs" -} - -const abis = { - poolCreated: "event PoolCreated (address indexed pool)", - getPoolId: "function getPoolId() view returns (bytes32)", - getVault: "address:getVault", - getPoolTokens: "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)", - getPools: "function getPools() view returns (address[])", - getTokenInfo: "function getTokenInfo() view returns (address[] tokens, tuple(uint8 tokenType, address rateProvider, bool paysYieldFees)[] tokenInfo, uint256[] balancesRaw, uint256[] lastBalancesLiveScaled18)" -} - -const blacklistedTokens = [ - '0xe07f9d810a48ab5c3c914ba3ca53af14e4491e8a', // GYD ethereum -] - -const getGyroPools = async (api, factories) => { - for (const { factory, fromBlock } of factories) { - const logs = await getLogs({ api, target: factory, eventAbi: abis.poolCreated, onlyArgs: true, fromBlock }) - const poolAddresses = logs.map(log => log.pool); - if (poolAddresses.length === 0) continue; - - const [poolIds, vaults] = await Promise.all([ - api.multiCall({ abi: abis.getPoolId, calls: poolAddresses }), - api.multiCall({ abi: abis.getVault, calls: poolAddresses }), - ]); - - const poolData = await api.multiCall({ abi: abis.getPoolTokens, calls: poolIds.map((poolId, i) => ({ target: vaults[i], params: poolId })) }); - poolData.forEach(({ tokens, balances }) => { api.addTokens(tokens, balances) }) } - blacklistedTokens.forEach(token => api.removeTokenBalance(token)); - return api.getBalances(); -} - -const getBalancerPools = async (api, factories) => { - if (!factories.length) return; - const pools = (await api.multiCall({ calls: factories.map(({ factory }) => ({ target: factory })), abi: abis.getPools })).flat() - const poolsDatas = await api.multiCall({ calls: pools, abi: abis.getTokenInfo }) - - poolsDatas.forEach(({ tokens, balancesRaw }) => { - tokens.forEach((t, i) => { - api.add(t, balancesRaw[i]) - }) - }) -} - -async function tvl(api) { - const { gyroFactory, balancerFactory = [] } = config[api.chain]; - await getGyroPools(api, gyroFactory) - await getBalancerPools(api, balancerFactory) -} - -const config = { - polygon: { - gyroFactory: [ - { - name: "Gyro 2-CLP Factory", - factory: "0x5d8545a7330245150bE0Ce88F8afB0EDc41dFc34", - fromBlock: 31556084, - }, - { - name: "Gyro 3-CLP Factory", - factory: "0x90f08B3705208E41DbEEB37A42Fb628dD483AdDa", - fromBlock: 31556094, - }, - { - name: "Gyro E-CLP Factory", - factory: "0xD4204551BC5397455f8897745d50Ac4F6beE0EF6", - fromBlock: 35414865, - }, - { - name: "Gyro E-CLP V2 Factory", - factory: "0x1a79A24Db0F73e9087205287761fC9C5C305926b", - fromBlock: 41209677, - }, - ] - }, - base: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0x15e86be6084c6a5a8c17732d398dfbc2ec574cec", - fromBlock: 13035219, - }, - ], - balancerFactory: [ - { - name: "Gyro E-CLP V2 Factory - Balancer", - factory: "0x5F6848976C2914403B425F18B589A65772F082E3", - fromBlock: 27590349, - }, - ] - }, - sei: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0xB438ea246cefA9241305aD62E5D307D014baF7Fa", - fromBlock: 117480059, - }, - ] - }, - avax: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0x41E9ac0bfed353c2dE21a980dA0EbB8A464D946A", - fromBlock: 50484541, - }, - ] - }, - optimism: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0x9b683ca24b0e013512e2566b68704dbe9677413c", - fromBlock: 97253023, - }, - ], - balancerFactory: [ - { - name: "Gyro E-CLP V2 Factory - Balancer", - factory: "0x22625eEDd92c81a219A83e1dc48f88d54786B017", - fromBlock: 133969692, - }, - ] - }, - ethereum: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0x412a5B2e7a678471985542757A6855847D4931D5", - fromBlock: 17672894, - }, - ] - }, - arbitrum: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0xdca5f1f0d7994a32bc511e7dba0259946653eaf6", - fromBlock: 124858976, - }, - ] - }, - polygon_zkevm: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0x5D56EA1B2595d2dbe4f5014b967c78ce75324f0c", - fromBlock: 5147666, - }, - ] - }, - xdai: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0x5d3Be8aaE57bf0D1986Ff7766cC9607B6cC99b89", - fromBlock: 33759936, - }, - ] - }, - sonic: { - gyroFactory: [ - { - name: "Gyro E-CLP V2 Factory", - factory: "0x5364296D19d453D73f84a94e78681A430e620c5f", - fromBlock: 5143648, - }, - ] - } -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/gysr/index.js b/projects/gysr/index.js deleted file mode 100644 index c2ce3604c3f..00000000000 --- a/projects/gysr/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const config = { - ethereum: { factory: '0xcada3423d33259a94c1ed1a7aeecb73b87d0b684', fromBlock: 11143895, v2PoolFactory: '0xc517a08aee9ca160a610752e50a6ed8087049091', }, - polygon: { v2PoolFactory: '0x3cf6920b8fcbea07700ce4a7c2f009bb785b0742', }, - optimism: { v2PoolFactory: '0x51e03c97570e80824c9c4da7db94fc1b648f11b8', }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, v2PoolFactory, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (factory) { - const logs = await getLogs({ api, target: factory, eventAbi: 'event GeyserCreated (address indexed user, address geyser)', onlyArgs: true, fromBlock, }) - const geysers = logs.map(log => log.geyser) - const tokens = await api.multiCall({ abi: 'address:token', calls: geysers }) - const bals = await api.multiCall({ abi: 'uint256:totalStaked', calls: geysers, permitFailure: true, }) - api.addTokens(tokens, bals.map(i => i ?? 0)) - } - - if (v2PoolFactory) { - const pools = await api.fetchList({ lengthAbi: 'uint256:count', itemAbi: 'function list(uint256) view returns (address)', target: v2PoolFactory, }) - const stakingTokens = await api.multiCall({ abi: 'address[]:stakingTokens', calls: pools }) - const bals = await api.multiCall({ abi: 'address[]:stakingTotals', calls: pools, permitFailure: true, }) - stakingTokens.forEach((tokens, i) => { - api.addTokens(tokens, bals[i] ?? tokens.map(() => 0)) - }) - } - return sumTokens2({ api, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/h2-finance/index.js b/projects/h2-finance/index.js deleted file mode 100644 index 6f884585f9c..00000000000 --- a/projects/h2-finance/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports= uniTvlExport('cronos_zkevm', '0x50704Ac00064be03CEEd817f41E0Aa61F52ef4DC') \ No newline at end of file diff --git a/projects/h2-v3/index.js b/projects/h2-v3/index.js deleted file mode 100644 index 6e444b0a3a6..00000000000 --- a/projects/h2-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - cronos_zkevm: { - factory: "0x301cbe34dd38Cf69295Bf2698DC9be3B9EECEdFa", - fromBlock: 79, - }, -}); \ No newline at end of file diff --git a/projects/h2odata/index.js b/projects/h2odata/index.js deleted file mode 100644 index 7c63863ffbc..00000000000 --- a/projects/h2odata/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const ocean = "0x967da4048cD07aB37855c090aAF366e4ce1b9F48"; -const oceanCollateralJoin = "0x13288BD148160f76B37Bea93861cA61BAea120D1"; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: oceanCollateralJoin, tokens: [ocean], }), - } -}; \ No newline at end of file diff --git a/projects/hackenai/index.js b/projects/hackenai/index.js deleted file mode 100644 index 86e2b6fde47..00000000000 --- a/projects/hackenai/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const HAI_base = '0x73e2a6320314883ff8cc08b53f1460a5f4c47f2c'.toLowerCase() - -const staking = async (api) => { - const pools = await getConfig('hackenAI', 'https://api.atomica.org/srm-production-v2/v2/pool/list') - const owners = pools.filter(pool => pool.chainId === api.chainId && pool.capitalToken?.address.toLowerCase() === HAI_base).map(pool => pool.id) - return api.sumTokens({ owners, token: HAI_base }) -} - -module.exports = { - base: { - tvl: () => ({}), staking, - }, - methodology: 'We count the HAI staked in the Flash Pools contracts' -} \ No newline at end of file diff --git a/projects/hades-money/index.js b/projects/hades-money/index.js deleted file mode 100644 index f1389c2562c..00000000000 --- a/projects/hades-money/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const hades = "0x88C37E0bc6a237e96bc4A82774A38BBc30efF3Cf"; -const hellshare = "0xEfB15eF34f85632fd1D4C17FC130CcEe3D3D48aE"; -const masonry = "0x686A9472B839e8601c81335D0B088b33082BC2f7"; -const hellsharerewardpool = "0xcd66208ac05f75069C0f3a345ADf438FB3B53C1A"; - -const pool2LPs = [ - "0xCD1cc85DC7b4Deef34247CCB5d7C42A58039b1bA", //HELLSHARE-METIS - "0x586f616Bb811F1b0dFa953FBF6DE3569e7919752" // HADES-METIS -] - -module.exports = { - metis: { - tvl: async () => ({}), - staking: staking(masonry, hellshare), - pool2: pool2(hellsharerewardpool, pool2LPs, "metis") - } -} \ No newline at end of file diff --git a/projects/hadesswap/index.js b/projects/hadesswap/index.js deleted file mode 100644 index 13afb19cfe9..00000000000 --- a/projects/hadesswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - timetravel: false, - misrepresentedTokens: true, - hallmarks: [ - ['2023-06-01', 'Chain is abandoned'], - ], - deadFrom: '2023-06-01', - polis: { - tvl: () => 0 - }, -} diff --git a/projects/hadouken-fi-dex/index.js b/projects/hadouken-fi-dex/index.js deleted file mode 100644 index fcf8d7cfc5d..00000000000 --- a/projects/hadouken-fi-dex/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { cachedGraphQuery } = require("../helper/cache") - -const endpoint = "https://graph-multi-http-hadouken.hadouken.finance/subgraphs/name/balancer-mainnet" - -const query = `query { - tokens { id name symbol } -}` - -async function tvl(api) { - const { tokens } = await cachedGraphQuery('haduken-fi-dex', endpoint, query) - return sumTokens2({ - api, owner: '0x4f8bdf24826ebcf649658147756115ee867b7d63', tokens: tokens - .filter(i => !i.symbol.startsWith('HDK-')) - .map(i => i.id) - }) -} - -module.exports = { - methodology: "sum of token value in vault excluding the hadouken wrapped tokens", - godwoken_v1: { tvl } -} \ No newline at end of file diff --git a/projects/hadouken-fi-lending/index.js b/projects/hadouken-fi-lending/index.js deleted file mode 100644 index e7a80719676..00000000000 --- a/projects/hadouken-fi-lending/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave'); - -module.exports = { - godwoken_v1: aaveExports('godwoken_v1', '0x10797360711178183455cCa40533FfB62a17C60f') -}; \ No newline at end of file diff --git a/projects/haedal-amm/index.js b/projects/haedal-amm/index.js deleted file mode 100644 index 570a986902f..00000000000 --- a/projects/haedal-amm/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sui = require('../helper/chain/sui') - -async function suiTVL(api) { - const poolObjectID = '0x3b822ea230e2f63860b05d4166ddce7133c0d04838d8f93ce02a88098fe0c609' - const {fields:{pools:{fields: {contents:listPool}}}} = await sui.getObject(poolObjectID) - for( const pool of listPool){ - const {fields:{value: pool_id}} = pool - const {type,fields:{coins:{fields:{base_coin, quote_coin}}}} = await sui.getObject(pool_id) - const [coinA, coinB] = type.replace('>', '').split('<')[1].split(', ') - api.add(coinA, base_coin) - api.add(coinB, quote_coin) - } -} - -module.exports = { - sui: { - tvl: suiTVL, - } -} \ No newline at end of file diff --git a/projects/haedal-vault/bytes.js b/projects/haedal-vault/bytes.js deleted file mode 100644 index 4a5ba12641b..00000000000 --- a/projects/haedal-vault/bytes.js +++ /dev/null @@ -1,30 +0,0 @@ -const hexToBytes = (hex) => Array.from(Buffer.from(hex.replace(/^0x/, ""), 'hex')); - -const textToBytes = (value) => new TextEncoder().encode(value); - -const toU64 = (value) => toLittleEndian(BigInt(value), 8) - -function toLittleEndian(bigint, size) { - let result = new Uint8Array(size); - let i = 0; - while (bigint > 0) { - result[i] = Number(bigint % BigInt(256)); - bigint = bigint / BigInt(256); - i += 1; - } - return result; -} - -function desU64(data, offset = 0) { - const dataView = new DataView(Uint8Array.from(data).buffer); - let value1 = dataView.getUint32(offset, true); - let value2 = dataView.getUint32(offset + 4, true); - return (BigInt(value2) << BigInt(32)) | BigInt(value1); -} - -module.exports = { - hexToBytes, - toU64, - textToBytes, - desU64, -}; diff --git a/projects/haedal-vault/index.js b/projects/haedal-vault/index.js deleted file mode 100644 index 600a99f5ef2..00000000000 --- a/projects/haedal-vault/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const axios = require("axios"); -const suiTx = require("./suiTx"); - -async function suiTVL(api) { - const packageId = "0x8462eb7e1c52018f42f2dd2c33605f7212ad8702739a5eaacb0e1a0106f3dc6a"; - const resp = await axios.get("https://haedal.xyz/api/v3/sui/vaults/pools?category=haedal&order_by=tvl&id=&coin_type="); - const vaultList = resp?.data?.data?.list; - - for (const vault of vaultList) { - const { coin_type_a, coin_type_b, lp_type, id, clmm_pool } = vault; - const [coinA, coinB] = await suiTx.getVaultTokenBalance(packageId, [lp_type, coin_type_a, coin_type_b], id, clmm_pool); - api.add(coin_type_a, coinA); - api.add(coin_type_b, coinB); - } -} - -module.exports = { - sui: { - tvl: suiTVL, - } -}; diff --git a/projects/haedal-vault/suiTx.js b/projects/haedal-vault/suiTx.js deleted file mode 100644 index 669548c2d35..00000000000 --- a/projects/haedal-vault/suiTx.js +++ /dev/null @@ -1,164 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { hexToBytes, toU64, textToBytes, desU64 } = require('./bytes'); -const sui = require("../helper/chain/sui"); - -const DUMMY_SENDER = '0x0000000000000000000000000000000000000000000000000000000000000000'; - -const ProgrammableTransactionIndex = 0; -const ObjectIndex = 1; -const SharedObjectIndex = 1; -const MoveCallIndex = 0; -const StructIndex = 7; -const InputIndex = 1; - -async function getVaultTokenBalance(packageId, typeParams, vaultId, poolId) { - - const txBlockBytes = buildGetVaultAssetsTxBytes(packageId, typeParams, vaultId, poolId); - - const inspectionResult = await sui.call( - 'sui_devInspectTransactionBlock', - [DUMMY_SENDER, Buffer.from(txBlockBytes).toString('base64')], - { withMetadata: true } - ); - - if (inspectionResult?.effects?.status?.status !== 'success') { - throw new Error(JSON.stringify(inspectionResult, null, 2)); - } - - const returnValues = inspectionResult.results[0].returnValues; - const coinAData = returnValues[0][0]; - const coinBData = returnValues[1][0]; - const coinA = desU64(Uint8Array.from(coinAData)).toString(); - const coinB = desU64(Uint8Array.from(coinBData)).toString(); - return [coinA, coinB] -} - -function buildGetVaultAssetsTxBytes(packageId, typeParams, vaultId, poolId) { - const kind = { - "ProgrammableTransaction": { - "inputs": [{ - "Object": { - "SharedObject": { - "objectId": vaultId, - "initialSharedVersion": 0, - "mutable": true - } - }, - }, { - "Object": { - "SharedObject": { - "objectId": poolId, - "initialSharedVersion": 0, - "mutable": true - } - }, - }], - "commands": [{ - "MoveCall": { - "package": packageId, - "module": "pool", - "function": "get_vault_assets", - "typeArguments": typeParams, - "arguments": [{ - "Input": 0, - }, { - "Input": 1, - }] - } - }] - } - }; - - const moduleArg = textToBytes(kind.ProgrammableTransaction.commands[0].MoveCall.module); - const functionArg = textToBytes(kind.ProgrammableTransaction.commands[0].MoveCall.function); - - const typeArgs = kind.ProgrammableTransaction.commands[0].MoveCall.typeArguments.map(t => { - const parsed = parseSuiAddress(t); - return { - address: parsed.address, - module: parsed.module, - name: parsed.name, - typeParams: parsed.typeParams || [] - }; - }); - - let bytes = [ - ProgrammableTransactionIndex, - kind.ProgrammableTransaction.inputs.length, - ]; - - bytes = bytes.concat([ - ObjectIndex, - SharedObjectIndex, - ...hexToBytes(kind.ProgrammableTransaction.inputs[0].Object.SharedObject.objectId), - ...toU64(kind.ProgrammableTransaction.inputs[0].Object.SharedObject.initialSharedVersion), - kind.ProgrammableTransaction.inputs[0].Object.SharedObject.mutable ? 1 : 0, - ]); - - bytes = bytes.concat([ - ObjectIndex, - SharedObjectIndex, - ...hexToBytes(kind.ProgrammableTransaction.inputs[1].Object.SharedObject.objectId), - ...toU64(kind.ProgrammableTransaction.inputs[1].Object.SharedObject.initialSharedVersion), - kind.ProgrammableTransaction.inputs[1].Object.SharedObject.mutable ? 1 : 0, - ]); - - bytes = bytes.concat([ - kind.ProgrammableTransaction.commands.length, - MoveCallIndex, - ...hexToBytes(kind.ProgrammableTransaction.commands[0].MoveCall.package), - moduleArg.length, - ...moduleArg, - functionArg.length, - ...functionArg, - ]); - - bytes = bytes.concat([ - typeArgs.length, - ]); - - for (const typeArg of typeArgs) { - const typeModule = textToBytes(typeArg.module); - const typeName = textToBytes(typeArg.name); - - bytes = bytes.concat([ - StructIndex, - ...hexToBytes(typeArg.address), - typeModule.length, - ...typeModule, - typeName.length, - ...typeName, - typeArg.typeParams.length, - ]); - } - bytes = bytes.concat([ - kind.ProgrammableTransaction.commands[0].MoveCall.arguments.length, - InputIndex, - kind.ProgrammableTransaction.commands[0].MoveCall.arguments[0].Input, - 0, - InputIndex, - kind.ProgrammableTransaction.commands[0].MoveCall.arguments[1].Input, - 0, - ]); - - return Uint8Array.from(bytes); -} - -function parseSuiAddress(str) { - const STRUCT_REGEX = /^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/; - const structMatch = str.match(STRUCT_REGEX); - if (structMatch) { - return { - address: structMatch[1], - module: structMatch[2], - name: structMatch[3], - typeParams: [], - }; - } - - throw new Error(`Encountered unexpected token when parsing type args for ${str}`); -} - -module.exports = { - getVaultTokenBalance, -}; diff --git a/projects/haedal/index.js b/projects/haedal/index.js deleted file mode 100644 index 215c35897f3..00000000000 --- a/projects/haedal/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const sui = require('../helper/chain/sui') - -const ADDRESSES = require('../helper/coreAssets.json') - -async function suiTVL(api) { - - const walCoinType = '0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL' - - const suiStakingObjectID = '0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca' - const { fields: suiStaking } = await sui.getObject(suiStakingObjectID) - - const walStakingObjectID = '0x9e5f6537be1a5b658ec7eed23160df0b28c799563f6c41e9becc9ad633cb592b' - const { fields: walStaking } = await sui.getObject(walStakingObjectID) - - const suiAmount = +suiStaking.total_staked + +suiStaking.total_rewards - +suiStaking.total_protocol_fees - - +suiStaking.uncollected_protocol_fees - +suiStaking.total_unstaked + +suiStaking.unclaimed_sui_amount; - - const walAmount = +walStaking.total_staked + +walStaking.total_rewards - +walStaking.collected_protocol_fees - - +walStaking.uncollected_protocol_fees - +walStaking.total_unstaked + +walStaking.unclaimed_wal_amount; - - api.add(walCoinType, walAmount); - api.add(ADDRESSES.sui.SUI, suiAmount); -} - -module.exports = { - sui: { - tvl: suiTVL, - } -} \ No newline at end of file diff --git a/projects/hai/index.js b/projects/hai/index.js deleted file mode 100644 index 9a2ba44a3ca..00000000000 --- a/projects/hai/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const config = { - optimism: { factory: '0xfe7987b1ee45a8d592b15e8e924d50bfc8536143', fromBlock: 116055146 } -} - -module.exports = { - start: '2024-03-07', // globalDebtCeiling raised > 0 -}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ api, target: factory, eventAbi: 'event DeployCollateralJoin (bytes32 indexed _cType, address indexed _collateral, address indexed _collateralJoin)', onlyArgs: true, fromBlock, }) - const tokensAndOwners = logs.map(log => [log._collateral, log._collateralJoin]) - return api.sumTokens({ tokensAndOwners }) - } - } -}) diff --git a/projects/haiko/index.js b/projects/haiko/index.js deleted file mode 100644 index 5533c10fe79..00000000000 --- a/projects/haiko/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { sumTokens } = require("../helper/chain/starknet"); - -const MarketManager = - "0x38925b0bcf4dce081042ca26a96300d9e181b910328db54a6c89e5451503f5"; -const ReplicatingStrategy = - "0x2ffce9d48390d497f7dfafa9dfd22025d9c285135bcc26c955aea8741f081d2"; - -async function tvl(api) { - const tokens = await getConfig( - "haiko", - "https://app.haiko.xyz/api/v1/tokens?network=mainnet" - ); - return sumTokens({ - api, - owners: [MarketManager, ReplicatingStrategy], - tokens: tokens.map((t) => t.coingeckoAddress), - }); -} - -module.exports = { - methodology: - "Value of deposits in LP positions and Strategy Vaults, an automation layer that provides and rebalances pool liquidity on behalf of LPs.", - starknet: { - tvl, - }, - hallmarks: [ - ['2025-05-13', 'Project sunset announcement'], - ], -}; diff --git a/projects/hakka.js b/projects/hakka.js deleted file mode 100644 index a38048ed25f..00000000000 --- a/projects/hakka.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2, nullAddress, sumTokensExport } = require('./helper/unwrapLPs') - -const HAKKA_ADDRESSES = { - 1: '0x0E29e5AbbB5FD88e28b2d355774e73BD47dE3bcd', - 56: '0x1d1eb8e8293222e1a29d2c0e4ce6c0acfd89aaac', -} -const thirdFloorAddress = '0x66be1bc6C6aF47900BBD4F3711801bE6C2c6CB32' -const BHS_USDC_DAI_HAKKA_BPT = '0x1B8874BaceAAfba9eA194a625d12E8b270D77016' -const BHS_USDC_DAI_HAKKA_POOL = '0x6EE6683Cb9b44810369C873679f8073bCBE52F27' -const BHS_HAKKA_BPT = '0xaE95D3198d602acFB18F9188d733d710e14A27Dd' -const BHS_HAKKA_POOL = '0x3792ee68E736b8214D4eDC91b1B3340B525e00BF' -const hakkaGuildBank = '0x83D0D842e6DB3B020f384a2af11bD14787BEC8E7' -const sHakka = '0xd9958826Bce875A75cc1789D5929459E6ff15040' -const intelligenceETH = ['0x0F2fd95c221770d108aCD5363D25b06Bdc43140B'] -const intelligenceBSC = ['0xD8B3fF98025Cf203Ba6D7Bb2d25DBeEF9539E6FB', '0x517Ef6281a9b3dc4Ef6B0318Bc5EDFDCf677d29D', '0x0A3e364eE37bac9E6aFF9E864E65B4603D5BC5D4'] -const BSC_BHS_ADDRESS = '0x75192D6f3d51554CC2eE7B40C3aAc5f97934ce7E' - -async function ethereum(api) { - const toa = [ - [nullAddress, thirdFloorAddress], // thirdFloor - // guild bank - [nullAddress, hakkaGuildBank], - [ADDRESSES.ethereum.MKR, hakkaGuildBank], - ['0x35101c731b1548B5e48bb23F99eDBc2f5c341935', hakkaGuildBank], - [ADDRESSES.ethereum.USDC, hakkaGuildBank], - ] - - return sumTokens2({ tokensAndOwners: toa, api, }) -} -async function bsc(api) { - const toa = [ - [ADDRESSES.bsc.BUSD, BSC_BHS_ADDRESS], // thirdFloor - [ADDRESSES.bsc.USDT, BSC_BHS_ADDRESS], // thirdFloor - ] - - return sumTokens2({ tokensAndOwners: toa, api }) -} - -module.exports = { - ethereum: { - tvl: ethereum, - pool2: sumTokensExport({ - tokensAndOwners: [ - [BHS_USDC_DAI_HAKKA_BPT, BHS_USDC_DAI_HAKKA_POOL], - [BHS_HAKKA_BPT, BHS_HAKKA_POOL], - ] - }), - staking: sumTokensExport({ owners: [sHakka, ...intelligenceETH], tokens: [HAKKA_ADDRESSES[1]] }), - }, - bsc: { - tvl: bsc, - staking: sumTokensExport({ owners: intelligenceBSC, tokens: [HAKKA_ADDRESSES[56]], }), - } -} diff --git a/projects/hakura/index.js b/projects/hakura/index.js deleted file mode 100644 index 0741d03bc31..00000000000 --- a/projects/hakura/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const abi = require("../helper/abis/morpho.json"); -const { mergeExports } = require("../helper/utils") -const ADDRESSES = require("../helper/coreAssets.json") -const { yieldHelper, } = require("../helper/yieldHelper") - -const getMetrics = async (api, borrowed) => { - const morphoCompoundMainnetLens = '0x67A9de639760bE73C4A9EecE303942ff25a0144d' - const markets = await api.call({ target: morphoCompoundMainnetLens, abi: abi.morphoLens.getAllMarkets, }); - const underlyings = (await api.multiCall({ abi: abi.cToken.underlying, calls: markets, permitFailure: true })).map(i => i ?? ADDRESSES.null) - const balancesTotalBorrow = await api.multiCall({ calls: markets, target: morphoCompoundMainnetLens, abi: abi.morphoLens.getTotalMarketBorrow }) - const multiplier = borrowed ? 1 : -1 - api.add(underlyings, balancesTotalBorrow.map(b => b.poolBorrowAmount * multiplier)) - api.add(underlyings, balancesTotalBorrow.map(b => b.p2pBorrowAmount * multiplier)) - - if (!borrowed) { - const balancesTotalSupply = await api.multiCall({ calls: markets, target: morphoCompoundMainnetLens, abi: abi.morphoLens.getTotalMarketSupply }) - api.add(underlyings, balancesTotalSupply.map(b => b.poolSupplyAmount)) - api.add(underlyings, balancesTotalSupply.map(b => b.p2pSupplyAmount)) - - } - - return api.getBalances() -} - -const fetchTvl = (borrowed) => { - return async (api) => { - return getMetrics(api, borrowed) - } -} - -const contract = '0x2c7674027e7f1A9ba7e7d107Ad33EAb3ee7948c2' -const token = '0x17ffD1D55A5D9D73f6a337aA35109a63B405dE21' -const abis = { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, uint256 accSushiPerShare, uint256 amount)', -} -const getTokenBalances = ({ api, poolInfos, poolIds }) => { - let balances = [] - for (const info of poolInfos) - balances.push(info.amount) - return balances -} - -const hakura_helper = yieldHelper({ - project: 'hakura', - chain: 'optimism', - masterchef: contract, - nativeToken: token, - abis, - poolFilter: i => i, - getTokenBalances -}) - -module.exports = mergeExports([ - hakura_helper, - { - optimism: { - tvl: fetchTvl(false), - borrowed: fetchTvl(true), - } - } -]) diff --git a/projects/hakuswap/index.js b/projects/hakuswap/index.js deleted file mode 100644 index bf33fab3220..00000000000 --- a/projects/hakuswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'avax': '0x2Db46fEB38C57a6621BCa4d97820e1fc1de40f41' -}, { - staking: { avax: ['0xa95C238B5a72f481f6Abd50f951F01891130b441', '0x695Fa794d59106cEbd40ab5f5cA19F458c723829']} -}) \ No newline at end of file diff --git a/projects/hakutora/index.js b/projects/hakutora/index.js deleted file mode 100644 index 66bdbf3e6ac..00000000000 --- a/projects/hakutora/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Hakutora.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x76c303fA012109eCBb34E4bAf1789c3e9FbEb3A4', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/halodao/index.js b/projects/halodao/index.js deleted file mode 100644 index d0d38ac378b..00000000000 --- a/projects/halodao/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { pool2 } = require('../helper/pool2') - -const ethPools = [ - { - // USDC:XSGD - lpToken: "0x64DCbDeb83e39f152B7Faf83E5E5673faCA0D42A", - token0: "0x70e8de73ce538da2beed35d14187f6959a8eca96", - token1: ADDRESSES.ethereum.USDC, - }, - { - // USDC:TCAD - lpToken: "0xE15E50fF9d52beC41D53d3173F2ed40834D455f4", - token0: "0x00000100F2A2bd000715001920eB70D229700085", - token1: ADDRESSES.ethereum.USDC, - }, - { - // USDC:TAUD - lpToken: "0x11816335DEe6763e2A7B6080b2b2980Eac7F85E4", - token0: "0x00006100F7090010005F1bd7aE6122c3C2CF0090", - token1: ADDRESSES.ethereum.USDC, - }, - { - // USDC:TGBP - lpToken: "0x2ED09E2961D72659E4002ba8C2BaDfedC7db19B7", - token0: "0x00000000441378008ea67f4284a57932b1c000a5", - token1: ADDRESSES.ethereum.USDC, - }, -]; - -const polyPools = [ - { - //xSGD:USDC - lpToken: "0x8123C64D6607412C7Ac9E880f12245ef22558b14", - token0: "0x769434dca303597c8fc4997bf3dab233e961eda2", - token1: ADDRESSES.polygon.USDC, - }, - { - //wTCAD:USDC - lpToken: "0xaEad273bc7E17DD6951ceD3264B1dBa8A19114C2", - token0: "0x6d3cC56DFC016151eE2613BdDe0e03Af9ba885CC", - token1: ADDRESSES.polygon.USDC, - }, - { - //wTAUD:USDC - lpToken: "0x95AB308bE1e209eB6FfdD3279B5ea71D365AD30B", - token0: "0xe4F7761b541668f88d04fe9F2E9DF10CA613aEf7", - token1: ADDRESSES.polygon.USDC, - }, - { - //wTGBP:USDC - lpToken: "0xbF772a745533f6bAd97C58D2cb6B241eF7487242", - token0: "0x81A123f10C78216d32F8655eb1A88B5E9A3e9f2F", - token1: ADDRESSES.polygon.USDC, - }, -]; - -const arbiPools = [ - { - //fxPHP-USDC - lpToken: "0x90b48bb20048786b167473dfeec443142d043cf7", - token0: ADDRESSES.arbitrum.USDC, - token1: "0x3d147cD9aC957B2a5F968dE9d1c6B9d0872286a0", - }, - { - //fxAUD-USDC - lpToken: "0xd5ad9eed5c5f28d83933779cd7e677e112991f51", - token0: ADDRESSES.arbitrum.USDC, - token1: "0x7E141940932E3D13bfa54B224cb4a16510519308", - }, -]; - -async function tvl(api) { - let pools = [] - switch (api.chain) { - case 'ethereum': pools = ethPools; break; - case 'polygon': pools = polyPools; break; - case 'arbitrum': pools = arbiPools; break; - } - const ownerTokens = pools.map(pool => [[pool.token0, pool.token1], pool.lpToken]) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - ethereum: { - tvl, - //staking: staking(rnbwEthPool, rnbwEthToken), - pool2: pool2('0x9cFf4A10b6Fb163a4DF369AaFed9d95838222ca6', '0x3E8E036Ddfd310B0838d3CC881A9fa827778845D'), - }, - polygon: { - tvl, - //staking: staking(wrnbwPolyPool, wrnbwPolyToken), - }, - arbitrum: { - tvl, - }, -}; diff --git a/projects/halotrade-v3/index.js b/projects/halotrade-v3/index.js deleted file mode 100644 index 7987242427c..00000000000 --- a/projects/halotrade-v3/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') -const { sumTokens2 } = require('../helper/unwrapLPs') - -module.exports = { - aura: { tvl }, -} - -async function tvl(api) { - const pools = await getConfig('halo-trade/uni-v3-pools', undefined, { - fetcher: async () => { - let page = 0 - let size = 100 - let hasMore = true - const pools = [] - do { - const { data: { res: { results } } } = await get(`https://api.halotrade.zone/api/v1/evm/univ3/halo-pool/poolList?page=${page}&pageSize=${size}`) - page++ - hasMore = results.length === size - pools.push(...results.map(i => i.poolContractAddr)) - } while (hasMore) - return pools - } - }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - const ownerTokens = pools.map((v, i) => [[token0s[i], token1s[i]], v]) - return sumTokens2({ api, ownerTokens }) -} \ No newline at end of file diff --git a/projects/halotrade/index.js b/projects/halotrade/index.js deleted file mode 100644 index 9c8d1af110f..00000000000 --- a/projects/halotrade/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getFactoryTvl } = require('../terraswap/factoryTvl') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - aura: { - tvl: getFactoryTvl("aura18qwll06qjgkfl5s5ym4rtpz8jy2tl849ghgx402tm4w9v55wu5asn0mqhv",) - }, -} // node test.js projects/hallotrade/index.js \ No newline at end of file diff --git a/projects/hamburger/index.js b/projects/hamburger/index.js deleted file mode 100644 index 648dc4f1390..00000000000 --- a/projects/hamburger/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: getUniTVL({ factory: '0x989CF6bFA8997E8A01Fa07F3009392d1C734c719', useDefaultCoreAssets: true, hasStablePools: true, }), - }, -} diff --git a/projects/hana-finance/index.js b/projects/hana-finance/index.js deleted file mode 100644 index fb9a3b73d3d..00000000000 --- a/projects/hana-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -const config = { - taiko: { - "addressProviderRegistry": "0x47EC2cEF8468dbaC060410E2BDde35A3B8f725e5", - "poolDataProvider":"0x9E3D95b518f68349464da1b6dbd0B94DB59addc1", - } -}; - -const data = {}; -Object.keys(config).forEach((chain) => { - data[chain] = aaveExports(chain, config[chain]["addressProviderRegistry"], undefined, [config[chain]["poolDataProvider"]]); -}); - - -module.exports = data; \ No newline at end of file diff --git a/projects/handlefi-fxpreps/index.js b/projects/handlefi-fxpreps/index.js deleted file mode 100644 index fc5bb9d7bde..00000000000 --- a/projects/handlefi-fxpreps/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { gmxExports } = require('../helper/gmx') -const perpsVault = "0x1785e8491e7e9d771b2A6E9E389c25265F06326A" - -const fxTokens = { - "fxAUD": "0x7E141940932E3D13bfa54B224cb4a16510519308", - "fxPHP": "0x3d147cD9aC957B2a5F968dE9d1c6B9d0872286a0", - "fxUSD": "0x8616E8EA83f048ab9A5eC513c9412Dd2993bcE3F", - "fxEUR": "0x116172B2482c5dC3E6f445C16Ac13367aC3FCd35", - "fxKRW": "0xF4E8BA79d058fFf263Fd043Ef50e1010c1BdF991", - "fxCNY": "0x2C29daAce6Aa05e3b65743EFd61f8A2C448302a3", - "fxCHF": "0x8C414cB8A9Af9F7B03673e93DF73c23C1aa05b4e", - "fxCAD": "0x398B09b68AEC6C58e28aDe6147dAC2EcC6789737", - "fxGBP": "0x1AE27D9068DaDf10f611367332D162d184ed3414", - "fxJPY": "0x95e0e6230e9E965A4f12eDe5BA8238Aa04a85Bc6", - "fxSGD": "0x55a90F0eB223f3B2C0C0759F375734C48220decB", -} - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: gmxExports({ vault: perpsVault,blacklistedTokens: Object.values(fxTokens) }) - }, -} \ No newline at end of file diff --git a/projects/handlefi-hsp/index.js b/projects/handlefi-hsp/index.js deleted file mode 100644 index 857ff4d8544..00000000000 --- a/projects/handlefi-hsp/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") - -const hspPool = "0x5CE8dDD04F3576C93eDdDf0eb58bf2c7f643Ad0A" -const fxTokens = { - usd: "0x8616E8EA83f048ab9A5eC513c9412Dd2993bcE3F", -} - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ owner: hspPool, tokens: [] }), - }, - methodology: "TVL on arbitrum is the sum of all handle synthetic perpetuals (hSP) deposits", -} diff --git a/projects/handlefi/index.js b/projects/handlefi/index.js deleted file mode 100644 index afce90cae45..00000000000 --- a/projects/handlefi/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs") -const { staking } = require("../helper/staking") - -const treasuryContract = "0x5710B75A0aA37f4Da939A61bb53c519296627994" -const WETH_FOREX_sushi_LP = '0x9745e5cc0522827958ee3fc2c03247276d359186' -const LP_staking_contract = '0x5cdeb8ff5fd3a3361e27e491696515f1d119537a' - -async function tvl(api) { - return sumTokens2({ api, owner: treasuryContract, tokens: [ADDRESSES.arbitrum.WSTETH, ADDRESSES.arbitrum.WETH] }) -} - -module.exports = { - arbitrum: { - tvl, - pool2: staking(LP_staking_contract, WETH_FOREX_sushi_LP) - }, - methodology: `TVL on arbitrum is sum of all collateralTokens (weth only atm) provided in vaults to mint any fxTokens on arbitrum. TVL on mainnet is given by collateral provided to Rari Fuse pools #72 and #116 against WETH, FEI, DAI, USDC, USDT, FRAX for now.`, -} diff --git a/projects/handofgod/index.js b/projects/handofgod/index.js deleted file mode 100644 index 533a07967b8..00000000000 --- a/projects/handofgod/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const hogGenesisAddress = '0x2e585b96a2ef1661508110e41c005be86b63fc34' -const rewardPoolAddress = '0xa7141905e2972c295577882552bede5406daf5ec' -const masonryAddress = "0xf156C473F4423B7013C612Da0ACD9DDcC33DB3EA" -const ghogToken = "0x0e899dA2aD0817ed850ce68f7f489688E4D42D9D" -const hogPool = "0x784dd93f3c42dcbf88d45e6ad6d3cc20da169a60" -const ghogPool = "0xd1cb1622a50506f0fddf329cb857a0935c7fbbf9" -const hogOsGauge = "0x4331Cb6903D9c6C0723721A77435a610E1e933Cf" -const ghogOsGauge = "0x5342E272769e797e4bF34698437Eb28bF49c315d" - -const genesisTokens = [ - "0xb1e25689d55734fd3fffc939c4c3eb52dff8a794", // OS 19% - "0x79bbf4508b1391af3a0f4b30bb5fc4aa9ab0e07c", // Anon 10% - "0x44e23b1f3f4511b3a7e81077fd9f2858df1b7579", // Mclb 9% - "0xa04bc7140c26fc9bb1f36b1a604c7a5a88fb0e70", // SWPx 11% - ADDRESSES.sonic.STS, // stS 7% - ADDRESSES.sonic.scUSD, // scUSD 7% - "0x4eec869d847a6d13b0f6d1733c5dec0d1e741b4f", // Indi 4% - "0x9fdbc3f8abc05fa8f3ad3c17d2f806c1230c4564", // Goglz 4% - "0x2d0e0814e62d80056181f5cd932274405966e4f0", // Beets 2% -] - -async function getLPBalances(api) { - // Get balances from both gauge contracts - const [hogOsBalance, ghogOsBalance] = await Promise.all([ - api.call({ - target: hogOsGauge, - params: [rewardPoolAddress], - abi: 'erc20:balanceOf' - }), - api.call({ - target: ghogOsGauge, - params: [rewardPoolAddress], - abi: 'erc20:balanceOf' - }) - ]) - - // Add LP balances - api.add(hogPool, hogOsBalance) - api.add(ghogPool, ghogOsBalance) - - return api.getBalances() -} - -module.exports = { - methodology: "TVL consists of genesis pools. Pool2 includes HOG-OS LP and GHOG-OS LP balances in the Elysium. Staking includes GHOG tokens locked in the Sanctum.", - sonic: { - tvl: async (api) => { - return api.sumTokens({ - tokens: genesisTokens, - owner: hogGenesisAddress, - }) - }, - pool2: async (api) => { - return getLPBalances(api) - }, - staking: async (api) => { - return api.sumTokens({ - tokens: [ghogToken], - owner: masonryAddress, - }) - } - }, -}; \ No newline at end of file diff --git a/projects/hanji/index.js b/projects/hanji/index.js deleted file mode 100644 index 875b850e9db..00000000000 --- a/projects/hanji/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const lobsConfigs = [ - { - factory: '0xfb2Ab9f52804DB8Ed602B95Adf0996aeC55ad6Df', - fromBlock: 6610800, - }, - { - factory: '0x8f9949CF3B79bBc35842110892242737Ae11488F', - fromBlock: 21922459, - }, -]; - -const vaultConfigs = [ - { - factory: '0x0A3AA8f23c2125E91292b5F2b1F7b154a3FB1582', - fromBlock: 7059590, - }, -]; - -const createdLOBEventAbi = "event OnchainCLOBCreated(address indexed creator, address OnchainCLOB, address tokenXAddress, address tokenYAddress, bool supports_native_eth, uint256 scaling_token_x, uint256 scaling_token_y, address administrator, address marketmaker, address pauser, bool should_invoke_on_trade, uint64 admin_commission_rate, uint64 total_aggressive_commission_rate, uint64 total_passive_commission_rate, uint64 passive_order_payout)" -const createdVaultEventAbi = "event LPManagerCreated(address indexed creator, address lpManager, address lpManagerImplementation, address liquidityToken)" - -async function tvl(api) { - const ownerTokens = []; - for (const { factory, fromBlock } of lobsConfigs) { - const lobCreatedLogs = await getLogs2({ api, factory, eventAbi: createdLOBEventAbi, fromBlock, }) - ownerTokens.push(...lobCreatedLogs.map(log => [[log.tokenXAddress, log.tokenYAddress], log.OnchainCLOB])) - } - for (const { factory, fromBlock } of vaultConfigs) { - const vaultCreatedLogs = await getLogs2({ api, factory, eventAbi: createdVaultEventAbi, fromBlock, }) - const lpManagers = vaultCreatedLogs.map(log => log.lpManager); - const tokenInfos = await api.fetchList({ lengthAbi: 'getTokensCount', itemAbi: "function tokens(uint256) view returns (address tokenAddress, bool isActive, uint16 targetWeight, uint16 lowerBoundWeight, uint16 upperBoundWeight, uint8 decimals, uint24 oracleConfRel, bytes32 oraclePriceId)", calls: lpManagers, groupedByInput: true, }) - lpManagers.forEach((lpManager, i) => { - const tokens = tokenInfos[i].map(i => i.tokenAddress) - ownerTokens.push([tokens, lpManager]) - }) - } - - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - etlk: { tvl } -} \ No newline at end of file diff --git a/projects/harbor-protocol.js b/projects/harbor-protocol.js deleted file mode 100644 index 6d57effb649..00000000000 --- a/projects/harbor-protocol.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - deadFrom: "2024-09-17", - // hallmarks: [[1692403200, "Exploit on Harbor Protocol"]], - comdex: { tvl: () => ({}) } -} \ No newline at end of file diff --git a/projects/harbor/index.js b/projects/harbor/index.js deleted file mode 100644 index c4e33afdc01..00000000000 --- a/projects/harbor/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave'); - -module.exports = { - bsc: aaveExports("", "0x31406A8c12813b64bF9985761BA51412B92fFb4E"), -} diff --git a/projects/hard.js b/projects/hard.js deleted file mode 100644 index a203103454f..00000000000 --- a/projects/hard.js +++ /dev/null @@ -1,26 +0,0 @@ -const { queryV1Beta1 } = require('./helper/chain/cosmos'); -const chain = 'kava' - -const tvl = async (api) => { - const [deposited, borrowed] = await Promise.all([ - queryV1Beta1({ chain, url: 'hard/v1beta1/total-deposited' }), - queryV1Beta1({ chain, url: 'hard/v1beta1/total-borrowed' }) - ]) - deposited.supplied_coins.forEach(({ denom, amount }) => api.add(denom, amount)) - borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount * -1)) -} - - - -const borrowed = async (api) => { - const borrowed = await queryV1Beta1({ chain, url: 'hard/v1beta1/total-borrowed' }) - borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount)) -} - -module.exports = { - timetravel: false, - kava: { - tvl, - borrowed - } -} diff --git a/projects/hardswap/index.js b/projects/hardswap/index.js deleted file mode 100644 index 25d8c5c3191..00000000000 --- a/projects/hardswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ kava: { factory: '0xD6E4170C9097A5B5C85E8A39111bF37E47C90076', fromBlock: 14523198, } }) \ No newline at end of file diff --git a/projects/harmonix/index.js b/projects/harmonix/index.js deleted file mode 100644 index de186f2f340..00000000000 --- a/projects/harmonix/index.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - start: '2024-03-01', // Friday, March 1, 2024 12:00:00 AM - methodology: "Aggregates total value of each Harmonix vault" -} - -const config = { - arbitrum: "0x3363A85c31cf13a96802e2935724232767420135", - ethereum: "0xC7C8Cdd1E9817Fc98AD1b05cD3633c6471A9473b", - base: "0x45dC73fB760f2382Cfd11e28C0Dd0a3A8d3E4C31", - hyperliquid: "0x8085C67f122B7C7c7AB06864ac359536640f5E28" -} - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const bal = await api.call({ abi: 'uint256:getVaultsTVL', target: factory }) - api.addCGToken("tether", bal/1e6) - } - } -}) diff --git a/projects/harmony-swap/index.js b/projects/harmony-swap/index.js deleted file mode 100644 index 93d1e4e2ec1..00000000000 --- a/projects/harmony-swap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export, uniV3GraphExport } = require("../helper/uniswapV3"); - -module.exports = { - harmony: { tvl: uniV3GraphExport({ graphURL: 'GVkp9F6TzzC5hY4g18Ukzb6gGcYDfQrpMpcj867jsenJ', name: 'harmony-swap' }) } -} \ No newline at end of file diff --git a/projects/harvest.js b/projects/harvest.js deleted file mode 100644 index 5b847c5e776..00000000000 --- a/projects/harvest.js +++ /dev/null @@ -1,56 +0,0 @@ -const { getConfig } = require('./helper/cache') -const { sumTokens2 } = require('./helper/unwrapLPs') -const { staking } = require('./helper/staking') - -// historical tvl on https://ethparser-api.herokuapp.com/api/transactions/history/alltvl?network=eth -const endpoint = "https://api.harvest.finance/vaults?key=41e90ced-d559-4433-b390-af424fdc76d6" -const chains = { - ethereum: 'eth', - arbitrum: 'arbitrum', - base: 'base', - polygon: 'matic', - era: 'zksync' -} - -const tvl = async (api) => { - const response = await getConfig('harvest', endpoint) - const rawVaults = Object.values(response[chains[api.chain]]).map(i => i.vaultAddress) - const strategies = await api.multiCall({ abi: 'address:strategy', calls: rawVaults, permitFailure: true }) - - const vaults = rawVaults.map((vault, i) => { - const strategy = strategies[i] - if (!strategy) return null - return { vault, strategy } - }).filter(Boolean) - - const tokensV = await api.multiCall({ abi: 'address:underlying', calls: vaults.map(({ vault }) => ({ target: vault })), permitFailure: true }) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: vaults.map(({ strategy }) => ({ target: strategy })), permitFailure: true }) - const bals2 = await api.multiCall({ abi: 'uint256:underlyingBalanceWithInvestment', calls: vaults.map(({ vault }) => ({ target: vault })), permitFailure: true }) - - tokens.forEach((token, i) => { - if (!token) token = tokensV[i] - if (token) api.add(token, bals2[i]) - }) - - const apVaults = Object.values(response[chains[api.chain]]).filter(i => i.isIPORVault).map(i => i.vaultAddress) - const apTokens = await api.multiCall({ abi: 'address:asset', calls: apVaults, permitFailure: true }) - const apBals = await api.multiCall({ abi: 'uint256:totalAssets', calls: apVaults, permitFailure: true }) - - apTokens.forEach((token, i) => { - if (token) api.add(token, apBals[i]) - }) - - return sumTokens2({ api, resolveLP: true, owners: vaults.map(({ vault }) => vault), resolveUniV3: api.chain !== 'base' && api.chain !== 'era', permitFailure: true }) -} - -Object.keys(chains).forEach((chain) => { - module.exports[chain] = { - tvl, - ...(chain === 'ethereum' && { - staking: staking( - '0x8f5adC58b32D4e5Ca02EAC0E293D35855999436C', - '0xa0246c9032bc3a600820415ae600c6388619a14d' - ), - }), - }; -}); \ No newline at end of file diff --git a/projects/harvest/api.js b/projects/harvest/api.js deleted file mode 100644 index 4236a13518d..00000000000 --- a/projects/harvest/api.js +++ /dev/null @@ -1,3 +0,0 @@ -const indexExports = require('../harvest') - -module.exports = indexExports \ No newline at end of file diff --git a/projects/harvestflow/index.js b/projects/harvestflow/index.js deleted file mode 100644 index 271cffeece5..00000000000 --- a/projects/harvestflow/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { get } = require('../helper/http'); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const ADDRESSES = require("../helper/coreAssets.json"); -const BigNumber = require('bignumber.js'); - -const toToken = value => BigNumber(value).times(1e6).toFixed(0); - -const lendingNFTAddress = { - 'plume_mainnet': [ - '0xFa262942987D408f7fF12F7f3f0DcF09f07cb0e2', - '0x12E4222d6C899Bb9b05C33293d77F9Be1AF24276' - ], - 'polygon': '0x9d6d53b5bc498200503bc7abcbdec2b8a009460a' -} - -async function withdraw(network) { - const url = `https://harvestflow-api-production.up.railway.app/token-events/total/${network}`; - const data = await get(url); - return data.totalAmount -} - -async function plumeTvl(_, _1, _2, { api }) { - const network = 'plume_mainnet'; - const token = ADDRESSES.plume_mainnet.pUSD; - const withdrawAmount = await withdraw(network); - const sumTokensResult = await sumTokens2({ - api, - owners: [lendingNFTAddress[network]].flat(), - tokens: [token], - }); - const contractBalance = sumTokensResult[`${network}:${token.toLowerCase()}`] || 0; - const result = Math.round(withdrawAmount + contractBalance); - const valueInSmallestUnit = toToken(result); - api.add(token, valueInSmallestUnit); - return api.getBalances(); -} - -async function polygonTvl(_, _1, _2, { api }) { - const network = 'polygon'; - const token = ADDRESSES.polygon.USDT; - const result = await withdraw(network); // Already withdrawed - const valueInSmallestUnit = toToken(result); - api.add(token, valueInSmallestUnit); - return api.getBalances(); -} - -const CONFIG = { - plume_mainnet: { - tvl: plumeTvl - }, - polygon: { - tvl: polygonTvl - }, -}; - -module.exports={ - ...CONFIG, -} \ No newline at end of file diff --git a/projects/hashai/index.js b/projects/hashai/index.js deleted file mode 100644 index 1243184b656..00000000000 --- a/projects/hashai/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking } = require('../helper/staking'); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const contracts = [ - '0xd2fe354cfebaa06f2140f13b66d0b3e1fc3ceec0', - '0x27cc372757ca955ebf93bd577cd95c4e12f5c14b', -]; - -const hashai = '0x292fcDD1B104DE5A00250fEBbA9bC6A5092A0076'; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: contracts, - token: coreAssets.null - }), - staking: staking(contracts, hashai), - }, -}; diff --git a/projects/hashdaofinance/index.js b/projects/hashdaofinance/index.js deleted file mode 100644 index bc2a67459e6..00000000000 --- a/projects/hashdaofinance/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { sumTokensExport } = require("../helper/unknownTokens") -const { staking } = require('../helper/staking') - -const config = { - arbitrum: { - contract: '0x90d11b8de2b30a84cB7e6cf6188581Ec08b1Bf82', - lp: '0x8dC6EFD57A13B7ba3ff7824c9708DB24d3190703', - chef: '0xb557c071BAe7DC3aa2366Cd0FC0477B45Eb696f1', - vHash: '0x958882fda110febd41536e45034bebff2a815006', - hash: '0x2e80259c9071b6176205ff5f5eb6f7ec8361b93f', - }, - optimism: { - contract: '0xF96aad4942D8A0394158Fd960003397690fB795D', - lp: '0xb426aE40E43be57215ba7DAA06Cbc5d48eD35Dcf', - chef: '0xEAB4C6C26A1F296E8E0033ffB817D5311C51299d', - vHash: '0x9D66c32E137E618BEE9669Ae096FD59ba925AaA5', - hash: '0x2e80259c9071b6176205ff5f5eb6f7ec8361b93f', - isPool2: true, - }, - bsc: { - contract: '0x882105478F2193001f8Fed8399aF93f31CC42F85', - lp: '0xc970cdEBe5cF52eA416C5160Dc64A17Db134feE9', - chef: '0x2b9c8B76176957A0448279Da9B8cDEbE94Becd19', - vHash: '0xb557c071BAe7DC3aa2366Cd0FC0477B45Eb696f1', - hash: '0xb4e0E46cC733106F8f5B9845e2011B128A1EA39a', - isPool2: true, - }, -} - -Object.keys(config).forEach(chain => { - const { contract, lp, chef, hash, vHash, isPool2,} = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const owners = await api.call({ target: contract, abi: "function getAllPools() public view returns(address[] memory list)" }) - const tokens = await api.multiCall({ abi: "function getPoolTokens(address _pool) public view returns(address[] memory list)", target: contract, calls: owners }) - return sumTokens2({ api, ownerTokens: tokens.map((v, i) => [v, owners[i]]), }) - } - } - if (chef && lp) - module.exports[chain].pool2 = isPool2 ? sumTokensExport({ owner: chef, tokens: [lp], useDefaultCoreAssets: true, }) : staking(chef, lp) - - if (hash && vHash) - module.exports[chain].staking = staking(vHash, hash, undefined, 'arbitrum:'+config.arbitrum.hash) -}) \ No newline at end of file diff --git a/projects/hashflow/dataCache.json b/projects/hashflow/dataCache.json deleted file mode 100644 index 3c43aa2da06..00000000000 --- a/projects/hashflow/dataCache.json +++ /dev/null @@ -1,560 +0,0 @@ -{ - "ethereum": [ - { - "pool": "0xc312f7fca5bf9f7a6ef539febb28a6061d6bf9c1", - "tokens": [ - "0x514910771af9ca656af840dff83e8264ecf986ca", - "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "0x4d224452801aced8b2f0aebe155379bb5d594381", - "0x92d6c1e31e14520e676a687f0a93788b716beff5", - "0xd533a949740bb3306d119cc777fa900ba034cd52", - "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0x0000000000000000000000000000000000000000", - "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "0x3845badade8e6dff049820680d1f14bd3903a5d0", - "0x4e15361fd6b4bb609fa63c81a2be19d873717870", - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0x0f5d2fb29fb7d3cfee444a200298f468908cc942", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" - ] - }, - { - "pool": "0xb6260b8b0bcdcbb7a57f86b074a7e03a095106f0", - "tokens": [ - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0x0000000000000000000000000000000000000000", - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0x6b175474e89094c44da98b954eedeac495271d0f" - ] - }, - { - "pool": "0xd0cd2141774c2b0f86858a63e8b83b41bdc77a57", - "tokens": [ - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xdac17f958d2ee523a2206206994597c13d831ec7" - ] - }, - { - "pool": "0xd8e13e0e1169f116ea707a4a40455a49a96586e1", - "tokens": [ - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xdac17f958d2ee523a2206206994597c13d831ec7" - ] - }, - { - "pool": "0xffe842f6789cdc75b7ae8a447bae9e9a4443ff15", - "tokens": [ - "0x0000000000000000000000000000000000000000" - ] - }, - { - "pool": "0x545bb409cf9d9e5ab7d888658cbc8bd8b926d667", - "tokens": [ - "0x2c537e5624e4af88a7ae4060c022609376c8d0eb", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" - ] - }, - { - "pool": "0x36a48980a7277f4f2099cd08504c9e44a565dec8", - "tokens": [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" - ] - }, - { - "pool": "0x93bca59e8e384a83e93a8dfd11042e3ed82d9867", - "tokens": [ - "0x5faa989af96af85384b8a938c2ede4a7378d9875", - "0xdac17f958d2ee523a2206206994597c13d831ec7" - ] - }, - { - "pool": "0xe8a8700fafd46cbe81aa983d180fe2ee89d3e401", - "tokens": [ - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0x2a8e1e676ec238d8a992307b495b45b3feaa5e86", - "0xdac17f958d2ee523a2206206994597c13d831ec7" - ] - }, - { - "pool": "0x4ba77325aa4452602ceef86fee44df9cdb050289", - "tokens": [] - }, - { - "pool": "0xb5ae0c6897cc7313311e0c301ae0c9388170891d", - "tokens": [ - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0x0000000000000000000000000000000000000000", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0" - ] - }, - { - "pool": "0xbfa899c1ad97229d9c604e9ea927c7acb988c05c", - "tokens": [ - "0x0f5d2fb29fb7d3cfee444a200298f468908cc942", - "0x92d6c1e31e14520e676a687f0a93788b716beff5", - "0x4d224452801aced8b2f0aebe155379bb5d594381", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0x514910771af9ca656af840dff83e8264ecf986ca", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0x3845badade8e6dff049820680d1f14bd3903a5d0", - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce", - "0xb3999f658c0391d94a37f7ff328f3fec942bcadc", - "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", - "0xd533a949740bb3306d119cc777fa900ba034cd52", - "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", - "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", - "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "0x0000000000000000000000000000000000000000", - "0x4e15361fd6b4bb609fa63c81a2be19d873717870" - ] - }, - { - "pool": "0xfe895436dbbdf64930c4480136f851e41d7db948", - "tokens": [ - "0x5faa989af96af85384b8a938c2ede4a7378d9875", - "0xdac17f958d2ee523a2206206994597c13d831ec7" - ] - }, - { - "pool": "0x5afe266ab4e43c32bad5459fe8df116dd5541222", - "tokens": [ - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0x0000000000000000000000000000000000000000", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xb3999f658c0391d94a37f7ff328f3fec942bcadc", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0x6b175474e89094c44da98b954eedeac495271d0f" - ] - }, - { - "pool": "0xb7335b3735307b364ee9bed6e4fe8d279d9dcaa3", - "tokens": [ - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" - ] - }, - { - "pool": "0x3334a3128c26872f5d59a88a5d2c560f7d11db97", - "tokens": [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" - ] - }, - { - "pool": "0xa9058f0dd86066c7735344c232a4ba3c4622d888", - "tokens": [ - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", - "0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0x0000000000000000000000000000000000000000", - "0x6b175474e89094c44da98b954eedeac495271d0f" - ] - }, - { - "pool": "0x7d9af957bb728595a9d2405b33b03f7282e91899", - "tokens": [] - }, - { - "pool": "0xe794ffecc16a8e5f5c7d7818322ba7fe41a63f72", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" - ] - } - ], - "polygon": [ - { - "pool": "0xd4aca3eb8cac22b30f49cd122586b2a6b94ec38a", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" - ] - }, - { - "pool": "0x2ad89af11955ac2627f0a112f017d50536d75cfe", - "tokens": [] - }, - { - "pool": "0x5b0e634823ac8490a4bc22040d6e42ce38808672", - "tokens": [] - }, - { - "pool": "0xeb3ecdf9a792769c5a1d5f998f70f684e858d30c", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" - ] - }, - { - "pool": "0x55443e8dffb64c5b2127f4211e79460a142cff02", - "tokens": [] - }, - { - "pool": "0x012566234e737f3c8aaa892be36100240e952345", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" - ] - }, - { - "pool": "0xdb654136fd25246736872c3a4c751075e7a3f79a", - "tokens": [ - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" - ] - }, - { - "pool": "0xb959416953dd179c7a4b1a464673625ae5a87845", - "tokens": [] - }, - { - "pool": "0xb6a2d4377a6e01d09898807c9dba7b38a088a6e5", - "tokens": [] - }, - { - "pool": "0xdfe0295618c385375dd14ede49328bf4c9653a65", - "tokens": [ - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" - ] - }, - { - "pool": "0x84ea0b90566eec9bc4509ae1a67cd6cc94242c6f", - "tokens": [ - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - "0x0000000000000000000000000000000000000000" - ] - }, - { - "pool": "0x5bbe4ab57b924f6876b992e141bf8766b5441421", - "tokens": [ - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" - ] - }, - { - "pool": "0x2ae3af14d125fa0a48eb5a9a9aff7fcf40e46b92", - "tokens": [] - }, - { - "pool": "0x42e5f7a008bc628bb947b74eb5c0724dc6dc5134", - "tokens": [] - }, - { - "pool": "0x8c9ce945bf0db0a16dcfd293f1b53dd64beb8121", - "tokens": [ - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619" - ] - }, - { - "pool": "0xfd346b1f88da9d51639e01bd3b7b96c51eff06ce", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" - ] - } - ], - "bsc": [ - { - "pool": "0xd120e9d5c839e4ed6e8a0caa2ad4bf406594bccb", - "tokens": [ - "0x55d398326f99059ff775485246999027b3197955", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "0xe9e7cea3dedca5984780bafc599bd69add087d56" - ] - }, - { - "pool": "0x75cd1617bb1bd1ec0fea557c192f7736dad83780", - "tokens": [] - }, - { - "pool": "0x80c31eb5024ab5730a1d18a0ac5766181fefe39e", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x55d398326f99059ff775485246999027b3197955", - "0xe9e7cea3dedca5984780bafc599bd69add087d56" - ] - }, - { - "pool": "0xab57578b5e86234999897eb0be2ac22c9b4d01dc", - "tokens": [] - }, - { - "pool": "0x64b4fa6761e8bf60e68fe8c5c97f96ad28f1956d", - "tokens": [ - "0x55d398326f99059ff775485246999027b3197955", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "0xe9e7cea3dedca5984780bafc599bd69add087d56" - ] - }, - { - "pool": "0xff20c5c4d31c3f9decbcdc4aea9f396b36255843", - "tokens": [ - "0x55d398326f99059ff775485246999027b3197955", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "0xe9e7cea3dedca5984780bafc599bd69add087d56" - ] - }, - { - "pool": "0x67dbc25672b448d1cfdb06ea66233679de3b3315", - "tokens": [ - "0xe9e7cea3dedca5984780bafc599bd69add087d56", - "0x0000000000000000000000000000000000000000" - ] - }, - { - "pool": "0x2d9db645a8f645e53a17939eec41d7b786238e03", - "tokens": [ - "0x2170ed0880ac9a755fd29b2688956bd959f933f8", - "0x55d398326f99059ff775485246999027b3197955", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", - "0xe9e7cea3dedca5984780bafc599bd69add087d56", - "0x0000000000000000000000000000000000000000" - ] - }, - { - "pool": "0x7286f5be4e531f6ea7660c739108d95aa2fef959", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x44ec807ce2f4a6f2737a92e985f318d035883e47", - "0x55d398326f99059ff775485246999027b3197955", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "0xe9e7cea3dedca5984780bafc599bd69add087d56" - ] - }, - { - "pool": "0x8357056305aa00a893666aeabf555ce5ff4264c0", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x55d398326f99059ff775485246999027b3197955", - "0xe9e7cea3dedca5984780bafc599bd69add087d56" - ] - }, - { - "pool": "0xef763609e773a911a897a93e29c4aefb2bf40221", - "tokens": [] - }, - { - "pool": "0x22d17be4d4fad3034ad23a9dece4ea5fdf8ba66b", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x55d398326f99059ff775485246999027b3197955", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "0xe9e7cea3dedca5984780bafc599bd69add087d56" - ] - } - ], - "arbitrum": [ - { - "pool": "0xbfaabce766c86d9c5d70d2cb9d10bab6729197e5", - "tokens": [ - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" - ] - }, - { - "pool": "0x2e8c2e078091b4b85be1e1fd3074227d02fa0b3c", - "tokens": [ - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" - ] - }, - { - "pool": "0xb5c23bcdccd7b1fe93385387fa539d123f243ec8", - "tokens": [] - }, - { - "pool": "0x58a17639d60131d6c490c8bf8f35fb6a2ef3f110", - "tokens": [ - "0x0000000000000000000000000000000000000000" - ] - }, - { - "pool": "0x9511574172c02cd1961b4d2abb001f0ae734eb0c", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" - ] - }, - { - "pool": "0x46c0fe865545353311d61e247201a1de3ca0e62e", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" - ] - }, - { - "pool": "0x1e91011bf7caf4942f199236227ba4858ae389f6", - "tokens": [ - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" - ] - } - ], - "avax": [ - { - "pool": "0xe75abd1e50ee369b3bef03dfd5e6e4e8ef2f4731", - "tokens": [] - }, - { - "pool": "0x7a2428c8a108a02e36408098171b7fd5234cc570", - "tokens": [] - }, - { - "pool": "0x17e85ca901629709112a35c46e9872fc14d5912c", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ] - }, - { - "pool": "0xe45c838553c3f3d0ce5e67bf8a6ec8fcfa153c46", - "tokens": [ - "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ] - }, - { - "pool": "0xae3a27de3646be3860776c7e38a2b724a945c86f", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ] - }, - { - "pool": "0x27a1c0e072a6b5f972a392ec061858e5bc9c8ec0", - "tokens": [] - }, - { - "pool": "0x8bce660ecd23e6ad9098469f92fadebb4f5ed182", - "tokens": [] - }, - { - "pool": "0x76856360104c3171e25cffa6d8cc2b3a6c467fd9", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ] - }, - { - "pool": "0x21929db310a0ea8c1433c168979fa040e92b0a4d", - "tokens": [] - }, - { - "pool": "0xbb276e3e5cf1fb23b8c9cdd83ae8dab54b6d3475", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ] - }, - { - "pool": "0x8ce05b3d9024cb901ea1d0ff95c1a678391ee93e", - "tokens": [] - }, - { - "pool": "0x52c3cac381faf7ac75a37fa9be6112a38402f984", - "tokens": [ - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ] - }, - { - "pool": "0xc0d76d179e6a50bc2b91f64eae6e5c7f2d931107", - "tokens": [ - "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", - "0xc7198437980c041c805a1edcba50c1ce5db95118" - ] - } - ], - "optimism": [ - { - "pool": "0x9b36962c3b2fb8e4a329d3f5aaa50e5991cf332e", - "tokens": [ - "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58" - ] - }, - { - "pool": "0xa1399135768e4ffb247dcb3c92146c4956a2f329", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58" - ] - }, - { - "pool": "0x2c6d381d80fbf86cc747724e67f15a871dd776b0", - "tokens": [ - "0x0000000000000000000000000000000000000000" - ] - }, - { - "pool": "0x6452f2a3f740abd36f166658f9abedb95e071a19", - "tokens": [ - "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58" - ] - }, - { - "pool": "0x5774ecb37cc2889f890fd6ed90db14905a2a26a8", - "tokens": [ - "0x0000000000000000000000000000000000000000", - "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58" - ] - } - ] -} \ No newline at end of file diff --git a/projects/hashflow/index.js b/projects/hashflow/index.js deleted file mode 100644 index 7561200aad8..00000000000 --- a/projects/hashflow/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require('../helper/http') -const { sumTokens } = require("../helper/unwrapLPs"); -let dataCache = require('./dataCache.json') - -const chainIds = { - ethereum: 1, - polygon: 137, - bsc: 56, - arbitrum: 42161, - avax: 43114, - optimism: 10, -} - -let dataCacheUpdating - -async function updateDataCache() { - const null_addr = ADDRESSES.null; - const allChainData = {} - - for (const chain of Object.keys(chainIds)) { - const chainId = chainIds[chain] - const url = `https://api.hashflow.com/internal/pools?networkId=${chainId}&lp=${null_addr}` - const pools_response = await get(url) - // const pools_response = data[chain] - pools_response.pools = pools_response.pools.filter(i => !i.name.startsWith('HFT Bridge')) - allChainData[chain] = pools_response.pools.map(pool => - ({ - pool: pool.pool, - tokens: pool.tokens.map(t => t.token.address) - }) - ) - - // const blacklisted = ['0x5e1fed30b85fcfcd725902bb5de0d50901faa70d', '0xa97a7a07e063bb812e1ae22a98a18d1dbb5176f4', ] - // allChainData[chain] = allChainData[chain].filter(i => !blacklisted.includes(i.pool.toLowerCase())) - } - - require('fs').writeFileSync(__dirname + '/dataCache.json', JSON.stringify(allChainData, null, 2)) - dataCache = allChainData -} - -function chainTvl(chain) { - return async (timestamp, ethBlock, { [chain]: block }) => { - // if (!dataCacheUpdating) dataCacheUpdating = updateDataCache() - // await dataCacheUpdating - - const pools = dataCache[chain] - const tokensAndOwners = pools.map(p => p.tokens.map(t => [t, p.pool])).flat() - return sumTokens({}, tokensAndOwners, block, chain); - } -} - - module.exports.methodology = 'Hashflow TVL is made of all pools token balances. Pools and their tokens are retrieved by Hashflow HTTP REST API.' -module.exports.broken = 'Server IP is blocked, so api call fails' - - -Object.keys(chainIds).forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } -}) \ No newline at end of file diff --git a/projects/hashkey-exchange/index.js b/projects/hashkey-exchange/index.js deleted file mode 100644 index 656cb42e39b..00000000000 --- a/projects/hashkey-exchange/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - avax: { - owners: [ - "0xb016ebc8a1440aff7bf098b8f165af65eb898738", - "0xa108b99c315c22673f7f5b5ca172a21628cf8334", - "0xB7D06ea243337d98C93c11Fd114cDd50768F264e", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.hashkeyExchange - }, - ethereum: { - owners: [ - "0x7ffbafdc1e4f0a4b97130b075fb4a25f807a1807", // cold 1 - "0xee1bf4d7c53af2beafc7dc1dcea222a8c6d87ad9", // cold 2 - "0xffe15ff598e719d29dfe5e1d60be1a5521a779ae", - // "0x7269bc4a66c755b951f068626201090f0c3098e9", // bosera funds https://www.bosera.com/english/index.html - "0x48ee4a557e291c2a48d227e8a8dbe2217a825682", - "0x0100dc5672f702e705fc693218a3ad38fed6553d", - ], - }, - litecoin: { - owners: [ - "ltc1qh6w8epz4ycm2smpmnhfauqach28qr4ge6jffyv", - "LSNjwQ1RGR5rbVDzCwrWiMQF8rdqVRGcPu", - "ltc1q4qexj7a62h9uxkk0wyt55s0v8qkrc2vqdsnv02", - ], - }, - polygon: { - owners: [ - "0xecd094b51bafbd7bffdf1f4fef067c5d197a1b75", - "0xee4f6df29617f00b12f85ee56c68962cbeac16aa", - ], - }, - doge: { - owners: [ - "DEovrjDhPB36kwvbyNtiYVrbWv1ahR1jQv", - "D5qVwCrcNwNFyt4Ju4ASVKxbiYHMnjcGyj", - "DNq9QyJTg2DTqpBemA66qVtk3VRPR6QpvH", - ], - }, - solana: { - owners: [ - "HwEiRVn4ryKsTq6jECQHepLtUv2GVBfdibC4JjTDj8Su", - "C9nsmzfv4cjkDJ8CgxSdFZnnRR1MwTyuYr6ip4nL5q3u", - ], - }, - ton: { - owners: [ - "UQDd4CJlAR48mUvAJpPagHqp3AaZOs8st6Vs3tpRLbFuURT4", - "UQDFHcps8sIKIA8Uts9n33vUhxiTPQFdtPZsGgTUlsWNVFeL", - ], - }, - arbitrum: { - owners: [ - "0xF04671a9Fd6470aA01C35f713C4ae75458920592", - ], - }, - optimism: { - owners: [ - "0x1557601DBA8A9Bbe3a18471A6fdb0416E2db0Ea3", - ], - }, - polkadot: { - owners: [ - "16ceMbQrLZgd9mTyxe72s5KZtUcFcLDx4Kr6diijxVU21RoA", - ], - }, - aptos: { - owners: [ - "0x846763265925e39951ad4f795cae687f9f22466583332f7c9e3ab1943fdad8b8", - ], - }, - tron: { - owners: [ - "TR9ahL7bk9jUKzgsEPdAhssYkKPW6T45N8", - "TQV6pEPGuyVxjUF6AJRtTELuaXaa9qLnoy", - ], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/hashkey/index.js b/projects/hashkey/index.js deleted file mode 100644 index feed4e4a7f5..00000000000 --- a/projects/hashkey/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - "0x5569fd6991d1802dbee9bdd67e763fe7be67c7a9", - "0xcBEA7739929cc6A2B4e46A1F6D26841D8d668b9E", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.hashkey, - }, - litecoin: { - owners: [ - "ltc1qzjsgswkenmy9v6vm2jvkddeczwfuy9q7rshtxh", - "LXeSRVh6WPan3u5AxEZkvvn1srKnN5BiAm", - ], - }, - optimism: { - owners: [ - "0x5691a157ce38f1b362ab4a686ec7616fb04ba6f1", - "0xC7556Bb9EB188888b1cce25c3587C36Be0809EC4", - ], - }, - arbitrum: { - owners: [ - "0x03248f4759Ef5c4FdDd959aa07a5294e00B03e44", - "0x25a58cee7928b3d6c1d392ebe1a97318aa5ff2f2", - ], - }, - avax: { - owners: [ - "0x9bc72c8bb18d27bad9d0936be5d5e68fe2d37a29", - ], - }, - polygon: { - owners: [ - "0xAa0400E5a90f697230638DbE76D9C49e4aC745B4", - ], - }, - tron: { - owners: [ - "TYs8Aupg4iXDhifXm1kaCb1MfMcPjLn5RE", - "TZBcnxpRJcYJkbVMCi6g69BZmTmNACQxpD", - ], - }, - bsc: { - owners: [ - "0x8d13018cf3a136c4c6f6fad37ba880b4677a91d4", - "0x6a276a58c5194ef196b58442f627dba070cb37bf", - ], - }, - solana: { - owners: [ - "GDui3zpJC1xdnddCM2Vjp5Hnj97pQH1gDAHctyavx5iQ", - "CrK188sdwoXzMCukUhwDdZmE3fEjsMfESwz8P8o5XbgT", - ], - }, - ton: { - owners: [ - "UQBmo9W_9TZNlVzzH6f_L8CIC4N5GrYs3o8sjUsLXRzLHEU2", - "UQDxsCGvjT-wPp-R-OePbXl4UwsVZs-02PItnmzaAuUxXAi2", - ], - }, - scroll: { - owners: [ - "0x08c974911e29a7b23899139fb53fdb99aa6cab76", - "0xdd261309c5b32c006f6ad9a0f16b872392479cdb", - ], - }, -} - -module.exports = cexExports(config) diff --git a/projects/hashking/index.js b/projects/hashking/index.js deleted file mode 100644 index 8f4c16feec3..00000000000 --- a/projects/hashking/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - filecoin: { - tvl: async (api) => { - const owner = '0xe012f3957226894b1a2a44b3ef5070417a069dc2' - const validators = await api.call({ target: owner, abi: 'function beneficiarys() public view returns (address [] memory)'}) - const bals = await api.multiCall({ abi: 'uint256:totalStakingFil', calls: validators}) - bals.forEach(i => api.add(nullAddress, i)) - const wFILContract = "0xD9A724840a46370c01a50C1E511087ab3a07FB53" - const totalSupply = await api.call({ target: wFILContract, abi: 'uint256:totalSupply'}) - const liquidStakingContract = "0xe012F3957226894B1a2a44b3ef5070417a069dC2" - api.add(nullAddress, totalSupply) - return sumTokens2({ api, owners: [owner, liquidStakingContract,], tokens: [nullAddress]}) - } - } -} \ No newline at end of file diff --git a/projects/hashmix/index.js b/projects/hashmix/index.js deleted file mode 100644 index 35dc9084fe5..00000000000 --- a/projects/hashmix/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const POOL = "0x587A7eaE9b461ad724391Aa7195210e0547eD11d"; -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const { get } = require("../helper/http"); -const BigNumber = require("bignumber.js"); -const { sdk } = require("@defillama/sdk"); - -// async function tvl(api) { -// const totalBorrows = await api.call({ -// target: POOL, -// abi: "uint256:totalBorrows", -// }); -// const totalReserves = await api.call({ -// target: POOL, -// abi: "uint256:totalReserves", -// }); -// api.add(nullAddress, totalBorrows); -// api.add(nullAddress, totalReserves * -1); -// -// return sumTokens2({ api, owner: POOL, tokens: [nullAddress] }); -// } - -async function tvl(api) { - let tvl = await get("https://fvm.hashmix.org/fevmapi/tvl"); - api.add(nullAddress, tvl.data); - return sumTokens2({ api, owner: POOL, tokens: [nullAddress] }); -} - -/* async function tvl1(api) { - - const balances = {}; - const bal = await sdk.api2.eth.getBalance({ target: POOL, chain: api.chain, decimals: api.decimals }); - const totalBorrows = await sdk.api2.abi.call({ - target: POOL, - abi: "uint256:totalBorrows", - chain: api.chain, - }); - const totalReserves = await sdk.api2.abi.call({ - target: POOL, - abi: "uint256:totalReserves", - chain: api.chain, - }); - - - let b = new BigNumber.BigNumber(bal.output); - b = b.plus(new BigNumber.BigNumber(totalBorrows)).minus(new BigNumber.BigNumber(totalReserves)); - - sdk.util.sumSingleBalance( - balances, - nullAddress, - b.toFixed(0), - api.chain - ); - - return balances; -} */ - -module.exports = { - methodology: - "HashMix FIL Liquid Staking Protocol is a decentralized staking protocol on Filecoin, connecting FIL holders and miners in the ecosystem.", - filecoin: { - tvl, - }, -}; diff --git a/projects/hashnote/index.js b/projects/hashnote/index.js deleted file mode 100644 index 9d73821f96e..00000000000 --- a/projects/hashnote/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { call } = require('../helper/chain/near') -const { get } = require("../helper/http"); - -const CONFIG = { - ethereum: '0x136471a34f6ef19fE571EFFC1CA711fdb8E49f2b', - bsc: "0x8D0fA28f221eB5735BC71d3a0Da67EE5bC821311", - near: 'usyc.near', - noble: 'uusyc' -} - -const USYC = CONFIG.ethereum - -const ethTvl = async (api, token) => { - const supply = await api.call({ target: token, abi: 'erc20:totalSupply' }) - api.add(USYC, supply, { skipChain: true }) -} - -const bscTvl = async (api, token) => { - const supply = await api.call({ target: token, abi: 'erc20:totalSupply' }) - api.add(USYC, supply, { skipChain: true }) -} - -const nearTvl = async (api, token) => { - const supply = await call(token, 'ft_total_supply', {}); - api.add(USYC, supply, { skipChain: true }); -} - -const nobleTvl = async (api, token) => { - const res = await get(`https://rest.cosmos.directory/noble/cosmos/bank/v1beta1/supply/by_denom?denom=${token}`); - api.add(USYC, parseInt(res.amount.amount), { skipChain: true }); -} - -Object.entries(CONFIG).forEach(([chain, address]) => { - module.exports[chain] = { - tvl: async (api) => { - if (chain === 'bsc') { - return bscTvl(api, address); - } else if (chain === 'near') { - return nearTvl(api, address); - } else if (chain === 'noble') { - return nobleTvl(api, address); - } else { - return ethTvl(api, address); - } - } - }; -}); \ No newline at end of file diff --git a/projects/hashport/index.js b/projects/hashport/index.js deleted file mode 100644 index dd4f2b68633..00000000000 --- a/projects/hashport/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { get } = require('../helper/http'); -const { log } = require("@defillama/sdk"); - -const HEDERA_MIRROR_NODE_URL = 'https://mainnet-public.mirrornode.hedera.com' - -const CONFIG = { - ethereum: "0x367e59b559283C8506207d75B0c5D8C66c4Cd4B7", - polygon: "0xf4C0153A8bdB3dfe8D135cE3bE0D45e14e5Ce53D", - bsc: "0x9021926Be887355B76e60F4148eBB6b3f1fFAfCc", - avax: "0xd8df34A071179fe8CEF910Ae0B43cdE49D611B49", - optimism: "0x6Da4e99b62B8D910e1688E34121CD8D50B7c0C3e", - arbitrum: "0x984BB007b41a865bd8a9Db9CA919000FBab5893a", - fantom: "0x475B21ADe54B9494D8201e0330cA7994081f4E0F", - moonbeam: "0x617D29b4bae43b3AA3D63b7f61177600036d2F6b", - base: "0x0f3414b61B902513e04E76cA4d1a7B003D09F54b", - cronos: "0x36DAaFd7C305677905A643CF1a0c74a281c6413c", - aurora: "0x3b32202A662353DCb4DbB983aDBdF2AB49181506", - hedera: '0.0.540219', -} - -const hederaTokens = {} - -const hederaTVL = async (address, paginationPath = '') => { - try { - let path = `/api/v1/accounts/${address}/tokens?limit=100&order=desc` - if (paginationPath) { - path = paginationPath - } - const { tokens, links } = await get(`${HEDERA_MIRROR_NODE_URL}${path}`) - tokens.forEach(token => { - hederaTokens[`hedera:${token.token_id}`] = String(token.balance) - }) - if (links?.next) { - return hederaTVL(address, links.next) - } - } catch (error) { - log(error) - } - return hederaTokens -} - -const evmTVL = async (api, token, useCoValent = true) => { - const totalBalances = await sumTokens2({ api, owner: token, fetchCoValentTokens: useCoValent }) - return totalBalances -} - -Object.entries(CONFIG).forEach(([chain, address]) => { - module.exports[chain] = { - tvl: async (api) => { - if (chain === 'hedera') { - return hederaTVL(address) - } - if (chain == 'cronos' || chain == 'aurora') return evmTVL(api, address, false) - return evmTVL(api, address); - } - }; -}); diff --git a/projects/hashstack/abi.js b/projects/hashstack/abi.js deleted file mode 100644 index ec655540a92..00000000000 --- a/projects/hashstack/abi.js +++ /dev/null @@ -1,48 +0,0 @@ -const assetToken = [ - { - "name": "get_underlying_asset", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "_underlyingAsset", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" - }, - { - "name": "rToken_underlying_asset", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "_underlyingAsset", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" - }, - { - "name": "totalSupply", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "totalSupply", - "type": "Uint256" - } - ], - "stateMutability": "view" - } -] - - -const assetTokenAbi = {} -assetToken.forEach(i => assetTokenAbi[i.name] = i) - -module.exports = { - assetTokenAbi -} \ No newline at end of file diff --git a/projects/hashstack/index.js b/projects/hashstack/index.js deleted file mode 100644 index 8d533fe976b..00000000000 --- a/projects/hashstack/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { multiCall, sumTokens, } = require("../helper/chain/starknet"); -const { assetTokenAbi } = require("./abi"); - -const supplyTokens = [ - "0x1320a9910e78afc18be65e4080b51ecc0ee5c0a8b6cc7ef4e685e02b50e57ef", - "0x436d8d078de345c11493bd91512eae60cd2713e05bcaa0bb9f0cba90358c6e", - "0x5fa6cc6185eab4b0264a4134e2d4e74be11205351c7c91196cb27d5d97f8d21", - "0x3bcecd40212e9b91d92bbe25bb3643ad93f0d230d93237c675f46fac5187e8c", - "0x19c981ec23aa9cbac1cc1eb7f92cf09ea2816db9cbd932e251c86a2e8fb725f", - "0x7514ee6fa12f300ce293c60d60ecce0704314defdb137301dae78a7e5abbdd7" -] - -const debtTokens = [ - "0x2614c784267d2026042ab98588f90efbffaade8982567e93530db4ed41201cf", - "0x1ef7f9f8bf01678dc6d27e2c26fb7e8eac3812a24752e6a1d6a49d153bec9f3", - "0x12b8185e237dd0340340faeb3351dbe53f8a42f5a9bf974ddf90ced56e301c7", - "0x21d8d8519f5464ec63c6b9a80a5229c5ddeed57ecded4c8a9dfc34e31b49990", - "0x7eeed99c095f83716e465e2c52a3ec8f47b323041ddc4f97778ac0393b7f358", - "0x1bdbaaa456c7d6bbba9ff740af3cfcd40bec0e85cd5cefc3fbb05a552fd14df" -] - -async function tvl(api) { - const underlyings = await multiCall({ calls: supplyTokens, abi: assetTokenAbi.rToken_underlying_asset, }); - return sumTokens({ api, tokensAndOwners: underlyings.map((u, i) => [u, supplyTokens[i]]) }) -} - -async function borrowed(api) { - const borrowed = await multiCall({ calls: debtTokens, abi: assetTokenAbi.totalSupply, }); - const underlyings = await multiCall({ calls: debtTokens, abi: assetTokenAbi.get_underlying_asset, }); - api.addTokens(underlyings, borrowed); -} - -module.exports = { - methodology: - "Value of user supplied asset on Hashstack is considered as TVL", - starknet: { - tvl, - borrowed, - }, - hallmarks: [ - [1701066795, "Hashstack Mainnet launch"], - ] -}; diff --git a/projects/hatom-booster/index.js b/projects/hatom-booster/index.js deleted file mode 100644 index 4f07e1bc0f1..00000000000 --- a/projects/hatom-booster/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { call } = require('../helper/chain/elrond') - -const boosterContractAddress = 'erd1qqqqqqqqqqqqqpgqw4dsh8j9xafw45uwr2f6a48ajvcqey8s78sstvn7xd' -const htm = 'HTM-f51d55' - -const staking = async (api) => { - const totalStaked = await call({ - target: boosterContractAddress, - abi: 'getTotalStake', - responseTypes: ['number'] - }) - api.addTokens([htm], [totalStaked.toString()]) -}; - -module.exports = { - timetravel: false, - elrond: { - tvl: () => ({}), - staking - }, -}; diff --git a/projects/hatom-lending/index.js b/projects/hatom-lending/index.js deleted file mode 100644 index fa9d79e7467..00000000000 --- a/projects/hatom-lending/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sumTokens, call, } = require('../helper/chain/elrond') -const { cachedGraphQuery } = require('../helper/cache') -const { nullAddress } = require('../helper/tokenMapping') - -const hatom = 'HTM-f51d55' - -async function getMoneyMarkets() { - const { queryMoneyMarket: res } = await cachedGraphQuery('hatom-TVLLendingProtocolQuery', 'https://mainnet-api.hatom.com/graphql', ` - query QueryMoneyMarket { - queryMoneyMarket { - address - underlying { - name - decimals - id - } - } - } - `) - res.forEach(i => { - if (i.underlying.id === 'EGLD') i.underlying.id = nullAddress - }) - return res -} - -const tvl = async () => { - const moneyMarkets = await getMoneyMarkets() - return sumTokens({ owners: moneyMarkets.map(i => i.address), }) -}; - -const borrowed = async (api) => { - const moneyMarkets = await getMoneyMarkets() - const tokens = moneyMarkets.map(i => i.underlying.id) - const bals = await Promise.all(moneyMarkets.map(i => call({ target: i.address, abi: 'getTotalBorrows', responseTypes: ['number'] }))) - api.addTokens(tokens, bals) -}; - -module.exports = { - timetravel: false, - elrond: { - tvl, - borrowed, - }, -}; diff --git a/projects/hatom-liquid-staking/index.js b/projects/hatom-liquid-staking/index.js deleted file mode 100644 index db9ff8b7bca..00000000000 --- a/projects/hatom-liquid-staking/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { call, } = require("../helper/chain/elrond"); - -const ADDRESSES = require('../helper/coreAssets.json'); - -const tvl = async () => { - return { ['elrond:' + ADDRESSES.null]: await call({ target: 'erd1qqqqqqqqqqqqqpgq4gzfcw7kmkjy8zsf04ce6dl0auhtzjx078sslvrf4e', abi: 'getCashReserve', responseTypes: ['number'] }) } -}; - -module.exports = { - timetravel: false, - elrond: { - tvl, - }, -}; diff --git a/projects/hatom-tao-bridge/index.js b/projects/hatom-tao-bridge/index.js deleted file mode 100644 index dc7376e19f8..00000000000 --- a/projects/hatom-tao-bridge/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { post } = require('../helper/http') - -const TREASURY_ADDRESS = "5HZAAREPzwBc4EPWWeTHA2WRcJoCgy4UBk8mwYFWR5BTCNcT"; - -const TAO_STATS_SUBQUERY = "https://api.subquery.network/sq/TaoStats/bittensor-indexer"; - -const taoQuery = async () => { - const query = `{ - query{ - account(id: "${TREASURY_ADDRESS}"){ - id - nodeId - balanceTotal - balanceStaked - balanceFree - address - } - } - }`; - - const variables = {}; - - return post(TAO_STATS_SUBQUERY, { - query, - variables, - }); -}; - -module.exports = { - timetravel: false, - bittensor: { - tvl: async () => { - const { data: { query: { account: { balanceTotal } } } } = await taoQuery(); - return { - bittensor: balanceTotal / 1e9, - }; - }, - }, -} diff --git a/projects/hatom-tao-liquid-staking/index.js b/projects/hatom-tao-liquid-staking/index.js deleted file mode 100644 index 92a65f4f77c..00000000000 --- a/projects/hatom-tao-liquid-staking/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { call } = require("../helper/chain/elrond"); - -const taoLiquidStakingAddress = - "erd1qqqqqqqqqqqqqpgqhykmg59ny8tem37m0gng3ygwtphmefyz78ssfecn6q"; -const wtao = "WTAO-4f5363"; -const swtao = "SWTAO-356a25"; - -const tvl = async (api) => { - const cash = await call({ - target: taoLiquidStakingAddress, - abi: "getCash", - responseTypes: ["number"], - }); - api.addTokens([wtao], [cash.toString()]); -}; - -module.exports = { - timetravel: false, - elrond: { - tvl, - }, -}; diff --git a/projects/hats-v2/index.js b/projects/hats-v2/index.js deleted file mode 100644 index 89690b4da4b..00000000000 --- a/projects/hats-v2/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - ethereum: { masterchef: '0xc570c434ba30a2fa5c07e590833246e18aa6b0a3',}, - polygon: { masterchef: '0xa80d0a371f4d37afcc55188233bb4ad463af9e48',}, - bsc: { masterchef: '0xd978eb90eb1b11213e320f4e6e910eb98d8df1e4',}, - arbitrum: { masterchef: '0xa80d0a371f4d37afcc55188233bb4ad463af9e48',}, - optimism: { masterchef: '0xa80d0a371f4d37afcc55188233bb4ad463af9e48',}, -} - -Object.keys(config).forEach(chain => { - const { masterchef } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const vaults = await api.fetchList({ lengthAbi: 'uint256:getNumberOfVaults', itemAbi: 'function hatVaults(uint256) view returns (address)', target: masterchef}) - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) - const tokensAndOwners = [] - tokens.forEach((token, i) => { - tokensAndOwners.push([token, vaults[i]]) - tokensAndOwners.push([token, masterchef]) - }) - return sumTokens2({ api, tokensAndOwners,}) - } - } -}) \ No newline at end of file diff --git a/projects/hats/index.js b/projects/hats/index.js deleted file mode 100644 index 24838621d5c..00000000000 --- a/projects/hats/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const abi = require('../helper/abis/masterchef.json') - -const vault = '0x571f39d351513146248AcafA9D0509319A327C4D' // vault address -module.exports = { - ethereum: { - tvl: async (api) => { - const info = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: vault}) - return sumTokens2({ api, owner: vault, tokens: info.map(i => i.lpToken)}) - } - } -} \ No newline at end of file diff --git a/projects/haven1-hlend/index.js b/projects/haven1-hlend/index.js deleted file mode 100644 index 4c8c1284472..00000000000 --- a/projects/haven1-hlend/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -const REGISTRY = "0x989CdA7ea2953F9AF743C7cc51B8fA71d156aE27"; -const DATA_HELPERS = ["0x91e097513f45D4aA93E6acBa20272AA769fa9D27"]; - -const lending = aaveExports( - "haven1", - REGISTRY, - undefined, - DATA_HELPERS, - { v3: true } -); - -module.exports = { - methodology: "Counts the tokens locked in Haven1 contracts that are used as collateral or to generate yield. Borrowed tokens are excluded, so only assets directly locked in the protocol are counted. This prevents inflating TVL through recursive lending.", - haven1: { - ...lending, - }, -}; diff --git a/projects/haven1/index.js b/projects/haven1/index.js deleted file mode 100644 index bed5553f8ea..00000000000 --- a/projects/haven1/index.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Haven1 adapter for DefiLlama. - * - * Tracks total value locked (TVL) from: - * - DEX liquidity; - * - Flexible Staking; - * - Voting Escrow. - * - * Additionally, tracks currently vesting H1. - * - * Note: Both Flexible Staking and Voting Escrow support deposits of multiple - * H1 variants (1:1 pegged). One such variant, Escrow H1 (esH1), is only - * transferable between users and the staking contracts, and does not have a - * market price on the DEX. Therefore, for valuation purposes, esH1 is treated - * as equivalent to wH1. - */ - -// ----------------------------------------------------------------------------- -// Imports - -const { uniV3Export } = require("../helper/uniswapV3"); -const { - haven1: { WH1 }, -} = require("../helper/coreAssets.json"); - -// ----------------------------------------------------------------------------- -// Constants - -const ABI = { - totalSupply: "uint256:totalSupply", - supply: "uint256:supply", - balanceOf: "function balanceOf(address account) view returns (uint256)", -}; - -const DEX = { - factory: "0xEf3D1d7d3B10Ff716b1b22C9536bd22Dd0fE60ab", - fromBlock: 13273, -}; - -const STAKING = { - flex: "0x708E6dd0452D2C245e7d461c6c8B70F587ca3167", - ve: "0xac488B7E18Cef83aC300E9ffD9324BAa5BB62a13", -}; - -const STAKING_CONFIG = [ - { abi: ABI.totalSupply, target: STAKING.flex }, - { abi: ABI.supply, target: STAKING.ve }, -]; - -const VESTING = [ - "0x082a8510207F32Ff77a382693099738971Cc3116", - "0xCbe5524F1D2c27FCB8DE3459FE22c07e41bd7020", - "0x7ca74DD1C8639b907D462330a491bc950a2ca27B", - "0x9B8CC775B021173b7B33CB03ac70DF6822D55c87", - "0xB57Eb63F41AF6f8353ad68B55037f833975De407", - "0x11EB7042F155F0A9490C44594cE4aD39aF76E44b", - "0x3ca1323c8A07a5B7Af825eB60eE247A784C471cE", - "0x0D75c5DaA3a4BF52dA23C146BF8631faBD1A0D64", - "0xf3335F316E038150065057bCa19c2180CdfeDbf2", - "0xFCF78447ac98ee611367692D36fC9b053c684E7f", - "0xD5415fc7fFfc5d5ad7bB29E948276c1Ee5F1CEA0", - "0x3Ca451F30f46A0d5cCBc7ba5e1661d69B2c5ED5B", - "0x6e608C8f7a9543E54Ea3A39df0b702bcdA89896E", - "0xdA29bacE9Be56Eb8994300cE39A4535B2dC76bed", - "0x246B2cf745D03026d8c6Bab6bFf552c9Ac53CD4D", - "0xadc31F1D239094A2731E0F2FcF912Cb5A2499F34", - "0xFB97d9E72BBea40F00e456db8F981667Eafde276", -]; - -const VESTING_CALLS = VESTING.map(addr => { - return { target: WH1, params: [addr] }; -}); - -// ----------------------------------------------------------------------------- -// TVL - -const dexTVL = uniV3Export({ - haven1: { factory: DEX.factory, fromBlock: DEX.fromBlock }, -}); - -async function staking(api) { - const balances = await Promise.all(STAKING_CONFIG.map(cfg => api.call(cfg))); - api.add(WH1, balances); -} - -async function vesting(api) { - const result = await api.multiCall({ - abi: ABI.balanceOf, - calls: VESTING_CALLS, - permitFailure: true, - }); - - api.add(WH1, result); -} - -// ----------------------------------------------------------------------------- -// Exports - -module.exports = { - methodology: - "TVL includes DEX liquidity, tokens staked in flexible and voting escrow contracts, and tokens vesting.", - haven1: { - tvl: dexTVL.haven1.tvl, - staking, - vesting, - }, -}; diff --git a/projects/hawksight/index.js b/projects/hawksight/index.js deleted file mode 100644 index d7b253f4e68..00000000000 --- a/projects/hawksight/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { fetchURL } = require('../helper/utils') -const { sumTokens2 } = require('../helper/solana') - - -async function tvl() { - const res = await fetchURL('https://api.hawksight.co/data/hawksight_tvl') - return {'usd': res.data} -} - -module.exports = { - timetravel: false, - methodology: 'Sums the total value locked of all strategies in Hawksight', - solana: { - tvl, - staking: () => sumTokens2({ tokenAccounts: ['2eFeetCpZJprr67F2dToT52BbSkdeqKZT6hmVdVG14eU']}) - } -} \ No newline at end of file diff --git a/projects/hbarsuite-dex/index.js b/projects/hbarsuite-dex/index.js deleted file mode 100644 index 660228abcd1..00000000000 --- a/projects/hbarsuite-dex/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { get } = require('../helper/http') - -const nodes = [ - 'https://mainnet-sn1.hbarsuite.network', - 'https://mainnet-sn2.hbarsuite.network', - 'https://mainnet-sn3.hbarsuite.network', - 'https://mainnet-sn4.hbarsuite.network', - 'https://mainnet-sn5.hbarsuite.network', - 'https://mainnet-sn6.hbarsuite.network', - 'https://mainnet-sn7.hbarsuite.network', - 'https://mainnet-sn8.hbarsuite.network' -] - -const tvl = async (api) => { - const randomModes = nodes[Math.floor(Math.random() * nodes.length)] - const pools = await get(randomModes + '/dex/analytics/tickers?unique=true') - pools.forEach(({ liquidity_in_usd }) => { api.addUSDValue(Math.floor(liquidity_in_usd)) }) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: 'The calculated TVL is the current USD sum of all pools and nft-pools under HbarSuite Protocol.', - hedera: { tvl }, -} \ No newline at end of file diff --git a/projects/hbtc.js b/projects/hbtc.js deleted file mode 100644 index 9fc2122d582..00000000000 --- a/projects/hbtc.js +++ /dev/null @@ -1,9 +0,0 @@ -async function tvl(api) { - const hbtc = '0x0316EB71485b0Ab14103307bf65a021042c6d380' - const supply = await api.call({ abi: 'erc20:totalSupply', target: hbtc }) - api.add(hbtc, supply) -} - -module.exports = { - ethereum: { tvl } -} diff --git a/projects/headstarter/index.js b/projects/headstarter/index.js deleted file mode 100644 index 481a39a61cd..00000000000 --- a/projects/headstarter/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const STAKING_CONTRACT = "0x000000000000000000000000000000000070eac5"; -const HST = ADDRESSES.hedera.HST; - -const ENTITIES = [ - { - token: "0x000000000000000000000000000000000048fda4", - contracts: [ - "0x00000000000000000000000000000000004e3387", - "0x00000000000000000000000000000000004e3395", - "0x00000000000000000000000000000000004d6daa", - "0x0000000000000000000000000000000000575c04", - ], - }, - { - token: ADDRESSES.hedera.STEAM, - contracts: [ - "0x00000000000000000000000000000000005737f0", - "0x00000000000000000000000000000000005737e1", - "0x0000000000000000000000000000000000571a8d", - "0x0000000000000000000000000000000000571a8a", - "0x000000000000000000000000000000000056d9ea", - "0x0000000000000000000000000000000000575c04", - ], - }, - { - token: ADDRESSES.hedera.HLQT, - contracts: [ - "0x00000000000000000000000000000000005cb45b", - "0x00000000000000000000000000000000005cb45f", - "0x0000000000000000000000000000000000575c04", - ], - }, - { - token: HST, - contracts: [ - "0x00000000000000000000000000000000000f5ad1", - "0x00000000000000000000000000000000000fc16c", - "0x0000000000000000000000000000000000101201", - "0x0000000000000000000000000000000000575c04", - ], - }, -]; - -const getTokensAndOwners = (entities) => { - return entities.map(({ token, contracts}) => contracts.map(i => [token, i])).flat(); -}; - -const tvl = async (api) => { - const tokensAndOwners = getTokensAndOwners(ENTITIES); - return sumTokens2({api, tokensAndOwners }); -}; - -const staking = async (api) => { - const poolCounter = await api.call({ - abi: 'uint256:poolCounter', - target: STAKING_CONTRACT - }); - - let totalStaked = 0; - - // Query each pool to get totalDeposit - for (let i = 0; i < poolCounter; i++) { - const poolInfo = await api.call({ - abi: 'function getPoolInfo(uint256) view returns (uint256 rate, uint256 totalDeposit, uint256 startDate, uint256 endDate, uint256 lockPeriodInDays, uint256 hardCap, uint256 lastUpdateTime, uint256 rewardBalance, uint256 penaltyRate)', - target: STAKING_CONTRACT, - params: [i] - }); - - totalStaked += Number(poolInfo.totalDeposit); - } - - // Add the totalStaked HST tokens to the result - api.add(HST, totalStaked); - - return api.getBalances(); -}; - -module.exports = { - methodology: "We count the HST tokens locked in the HeadStarter contracts.", - hedera: { - tvl, - staking, - }, -}; diff --git a/projects/hebeswap/index.js b/projects/hebeswap/index.js deleted file mode 100644 index efb2c6426e8..00000000000 --- a/projects/hebeswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0x09fafa5eecbc11C3e5d30369e51B7D9aab2f3F53) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - ethereumclassic: { - tvl: getUniTVL({ - factory: '0x09fafa5eecbc11C3e5d30369e51B7D9aab2f3F53', - useDefaultCoreAssets: true, - }) - } -} \ No newline at end of file diff --git a/projects/hectagon/index.js b/projects/hectagon/index.js deleted file mode 100644 index 5f616dac6cf..00000000000 --- a/projects/hectagon/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const BUSD_ADDRESS = ADDRESSES.bsc.BUSD; -const gHECTA = '0x7d31ed03c2442f9ffc4f22d90772ee1f32fa9b0d' -const chain = 'bsc' -const HECTA_ADDRESS = "0x343915085b919fbd4414F7046f903d194c6F60EE"; -const TREASURY_ADDRESS = "0x4059c4a0b8a2B528C4f2E101A3bB8fB169aBa4fB"; -const HECTA_BUSD_ADDRESS = "0xc7cee4cea7c76e11e9f5e5e5cbc5e3b798a1c4d0"; - -module.exports = { - methodology: - "Total Value Lock in Hectagon protocol is calculated by sum of: Treasury locked value", - bsc: { - tvl: (_, _b, {[chain]: block}) => sumTokens2({ chain, block, owner: TREASURY_ADDRESS, tokens: [HECTA_BUSD_ADDRESS, BUSD_ADDRESS,]}), - staking: staking(gHECTA, HECTA_ADDRESS, chain), - }, -}; diff --git a/projects/hector-lendng/index.js b/projects/hector-lendng/index.js deleted file mode 100644 index 5dae96e3405..00000000000 --- a/projects/hector-lendng/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -const { compoundExports } = require("../helper/compound"); -const { nullAddress } = require("../helper/tokenMapping"); - -module.exports = { - fantom: compoundExports('0x56644FA0fCfA09b2a04F659E499847611A8AD176', 'fantom', '0xbb2d100865d4286c94D72d78523747abf84669E9', nullAddress) -}; -module.exports.fantom.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/hector/abi.json b/projects/hector/abi.json deleted file mode 100644 index 597588d24eb..00000000000 --- a/projects/hector/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt, uint256 boostMultiplier)", - "want": "address:want", - "lpToken": "function lpToken(uint256) view returns (address)", - "poolInfo": "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)" -} \ No newline at end of file diff --git a/projects/hector/api.js b/projects/hector/api.js deleted file mode 100644 index 606277d1561..00000000000 --- a/projects/hector/api.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('./index') -const { ohmStaking } = require('../helper/treasury') - -module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/hector/contracts.json b/projects/hector/contracts.json deleted file mode 100644 index 6335747ac56..00000000000 --- a/projects/hector/contracts.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "tokenHolders": { - "ethereum": { - "blacklistedTokens": [], - "owners": [ - "0x4bfb33d65f4167ebe190145939479227e7bf2cb0" - ] - }, - "fantom": { - "blacklistedTokens": [ - "0x5C4FDfc5233f935f20D2aDbA572F770c2E377Ab0", - "0x74e23df9110aa9ea0b6ff2faee01e740ca1c642e" - ], - "owners": [] - }, - "bsc": { - "blacklistedTokens": [ - "0xe98803E5cE78Cf8AAD43267d9852A4057423Cb1d", - "0x80d209227cf0a64e1fcbe62c7a80b8e691f0ef4d", - "0x1d6cbdc6b29c6afbae65444a1f65ba9252b8ca83", - "0x638eebe886b0e9e7c6929e69490064a6c94d204d" - ], - "owners": [] - } - } -} \ No newline at end of file diff --git a/projects/hector/index.js b/projects/hector/index.js deleted file mode 100644 index 238149e35a6..00000000000 --- a/projects/hector/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { staking } = require('../helper/staking') -const contracts = require("./contracts.json"); -const { sumTokens2, unwrapLPsAuto } = require("../helper/unwrapLPs"); -const abi = require("./abi.json"); -const { genericUnwrapCvx } = require("../helper/unwrapLPs"); - -async function walletBalances(api) { - const { owners = [], blacklistedTokens } = contracts.tokenHolders[api.chain] - return sumTokens2({ api, owners, fetchCoValentTokens: true, blacklistedTokens, tokenConfig: { onlyWhitelisted: false, } }) -} -async function deployedBalances(api) { - switch (api.chain) { - case "bsc": - return getPancakeDeposits(api, "0xa5f8c5dbd5f286960b9d90548680ae5ebff07652", [2, 4, 14], "0x3cdf52cc28d21c5b7b91d7065fd6dfe6d426fcc5",); - case "ethereum": - return getConvexDeposits(api, "0xf403c135812408bfbe8713b5a23a04b3d48aae31", [61, 64], "0x4bfb33d65f4167ebe190145939479227e7bf2cb0",); - } -} -async function getConvexDeposits(api, target, poolIds, owner,) { - let poolInfos = await api.multiCall({ abi: abi.poolInfo, target, calls: poolIds, }) - return Promise.all(poolInfos.map(i => genericUnwrapCvx(api.getBalances(), owner, i.crvRewards, api.block, api.chain))) -} - -async function getPancakeDeposits(api, target, poolIds, owner,) { - const [balance, lpToken] = await Promise.all([ - api.multiCall({ abi: abi.userInfo, target, calls: poolIds.map(i => ({ params: [i, owner] })), }), - api.multiCall({ abi: abi.lpToken, target, calls: poolIds, }) - ]); - lpToken.forEach((v, i) => api.add(v, balance[i].amount)) -} - -module.exports = { - ethereum: { tvl, }, - fantom: { - tvl, - staking: staking('0xd12930c8deedafd788f437879cba1ad1e3908cc5', '0x5C4FDfc5233f935f20D2aDbA572F770c2E377Ab0') - }, - bsc: { tvl, } -}; - -async function tvl(api) { - const calls = [ - walletBalances(api), - deployedBalances(api), - ] - await Promise.all(calls) - - await unwrapLPsAuto({ api, }) -} diff --git a/projects/hedge/index.js b/projects/hedge/index.js deleted file mode 100644 index 72ce5dd6014..00000000000 --- a/projects/hedge/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const { getProvider, getConnection, sumTokens2, decodeAccount, } = require("../helper/solana"); -const { Program, } = require("@project-serum/anchor"); -const { PublicKey, } = require("@solana/web3.js"); -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require("bignumber.js"); - -const programId = 'HedgeEohwU6RqokrvPU4Hb6XKPub8NuKbnPmY7FoMMtN' -const reserves = { - cusdc: 'BgxfHJDzm44T7XG68MYKx7YisTjZu73tVovyZSjJMpmw', - cusdt: '8K9WC8xoh2rtQNY7iEGXtPvfbDCi563SdWhCAhuMP2xE', -} - -async function tvl() { - const provider = getProvider() - const connection = getConnection() - const reserveInfo = {} - for (const reserve of Object.values(reserves)) { - const [info] = await connection.getMultipleAccountsInfo([new PublicKey(reserve)]) - const { info: { liquidity: { mintPubkey, marketPrice, }, collateral }} = decodeAccount('reserve', info) - reserveInfo[collateral.mintPubkey.toString()] = { price: marketPrice/1e18, key: mintPubkey.toString(), } - } - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const vaultTypes = await program.account.vaultType.all() - const psmAccounts = await program.account.psmAccount.all() - const tokensAndOwners = psmAccounts.map(i => [i.account.collateralMint.toString(), i.publicKey.toString()]) - let balances = {} - vaultTypes.forEach(({ account }) => { - let token = account.collateralMint.toString() - let balance = +account.collateralHeld - const { key, price} = reserveInfo[token] || {} - if (key) { - token = key - balance = BigNumber(price * balance).toFixed(0) - } - sdk.util.sumSingleBalance(balances, 'solana:'+token, balance ) - }) - return sumTokens2({ balances, tokensAndOwners, }) -} - -async function staking() { - const provider = getProvider() - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const stakingPools = await program.account.stakingPool.all() - const balances = {} - stakingPools.forEach(({ account, }) => { - sdk.util.sumSingleBalance(balances, 'solana:'+account.stakedTokenMint.toString(), +account.deposits) - }) - return balances -} - -module.exports = { - timetravel: false, - solana: { - tvl, - staking - }, - methodology: - "TVL is equal to the Collateral Value + assets in PSM. Staking adds Amount of HDG staked * HDG price" -}; \ No newline at end of file diff --git a/projects/hedgefarm/index.js b/projects/hedgefarm/index.js deleted file mode 100644 index badd044ae19..00000000000 --- a/projects/hedgefarm/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const sdk = require("@defillama/sdk") - -const vaults = [ - '0xdE4133f0CFA1a61Ba94EC64b6fEde4acC1fE929E', // ALPHA1_V1_CONTRACT - '0x60908a71fbc9027838277f9f98e458bef2a201da', // ALPHA1_V2_CONTRACT -] -const v2Vaults = [ - '0x3C390b91Fc2f248E75Cd271e2dAbF7DcC955B1A3', // ALPHA2_CONTRACT -] - -const ALPHA1_ABI = "uint256:totalBalance"; -const ALPHA2_ABI = "uint256:getLastUpdatedModulesBalance"; - -async function tvl(api) { - const [tokenv1, tokenv2, balv1, balv2] = await Promise.all([ - api.multiCall({ abi: 'address:token', calls: vaults }), - api.multiCall({ abi: 'address:baseToken', calls: v2Vaults, }), - api.multiCall({ abi: ALPHA1_ABI, calls: vaults, }), - api.multiCall({ abi: ALPHA2_ABI, calls: v2Vaults, }), - ]) - const balances = {}; - tokenv1.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, balv1[i], api.chain)) - tokenv2.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, balv2[i], api.chain)) - - return balances; -} - -module.exports = { - methodology: 'Gets the total balance in the Alpha #1 contract from IOU total supply and price per share and in the Smart Farmooor (Alpha #2) from the total balance.', - avax: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/hedgehog-markets/eclipse.js b/projects/hedgehog-markets/eclipse.js deleted file mode 100644 index 4ada1af7f9a..00000000000 --- a/projects/hedgehog-markets/eclipse.js +++ /dev/null @@ -1,115 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection, runInChunks, decodeAccount } = require("../helper/solana"); - -async function tvl(api) { - const connection = getConnection("eclipse"); - - const tokenAccounts = []; - - await addP2PDepositTokenAccounts(); - await addParimutuelDepositTokenAccounts(); - await addParlayDepositTokenAccounts(); - - // Sum balances from token accounts, gracefully handling accounts that have been closed. - { - const sleepTime = tokenAccounts.length > 2000 ? 2000 : 200; - - api.log("total token accounts: ", tokenAccounts.length, "sleepTime: ", sleepTime); - - const accounts = await runInChunks( - tokenAccounts, - (chunk) => connection.getMultipleAccountsInfo(chunk), - { sleepTime }, - ); - - for (const [i, data] in accounts.entries()) { - if (data == null) { - continue; - } - - try { - const { mint, amount } = decodeAccount("tokenAccount", data); - - api.add(mint.toString(), amount.toString()); - } catch (e) { - throw new Error(`Error decoding account: ${tokenAccounts[i]}`, { cause: e }); - } - } - } - - return api.getBalances(); - - async function addP2PDepositTokenAccounts() { - const programId = new PublicKey("P2PototC41acvjMc9cvAoRjFjtaRD5Keo9PvNJfRwf3"); - - const result = await connection.getProgramAccounts(programId, { - encoding: "base64", - // We only care about the market addresses. - dataSlice: { offset: 0, length: 0 }, - filters: [ - // Market accounts have a discriminator of 3 at offset 0. - { memcmp: { offset: 0, bytes: "4" } }, - ], - }); - - for (const { pubkey } of result) { - // Market deposit account. - const [deposit] = PublicKey.findProgramAddressSync( - [Buffer.from("deposit"), pubkey.toBuffer()], - programId, - ); - - tokenAccounts.push(deposit); - } - } - - async function addParimutuelDepositTokenAccounts() { - const programId = new PublicKey("PARrVs6F5egaNuz8g6pKJyU4ze3eX5xGZCFb3GLiVvu"); - - const result = await connection.getProgramAccounts(programId, { - encoding: "base64", - // We only care about the market addresses. - dataSlice: { offset: 0, length: 0 }, - filters: [ - // Market accounts have a discriminator of 3 at offset 0. - { memcmp: { offset: 0, bytes: "4" } }, - ], - }); - - for (const { pubkey } of result) { - // Market deposit account. - const [deposit] = PublicKey.findProgramAddressSync( - [Buffer.from("deposit"), pubkey.toBuffer()], - programId, - ); - - tokenAccounts.push(deposit); - } - } - - async function addParlayDepositTokenAccounts() { - const programId = new PublicKey("PLYaNRbQs9GWyVQdcLrzPvvZu7NH4W2sneyHcEimLr7"); - - const result = await connection.getProgramAccounts(programId, { - encoding: "base64", - // We only care about the market addresses. - dataSlice: { offset: 0, length: 0 }, - filters: [ - // Market accounts have a discriminator of 3 at offset 0. - { memcmp: { offset: 0, bytes: "4" } }, - ], - }); - - for (const { pubkey } of result) { - // Market deposit account. - const [deposit] = PublicKey.findProgramAddressSync( - [Buffer.from("deposit"), pubkey.toBuffer()], - programId, - ); - - tokenAccounts.push(deposit); - } - } -} - -module.exports = tvl; diff --git a/projects/hedgehog-markets/index.js b/projects/hedgehog-markets/index.js deleted file mode 100644 index dcd01dc6a23..00000000000 --- a/projects/hedgehog-markets/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const solana = require("./solana"); -const eclipse = require("./eclipse"); - -module.exports = { - timetravel: false, - solana: { tvl: solana }, - eclipse: { tvl: eclipse }, - methodology: "TVL consists of deposits made into Hedgehog Markets.", -}; diff --git a/projects/hedgehog-markets/solana.js b/projects/hedgehog-markets/solana.js deleted file mode 100644 index 4eac0d409ab..00000000000 --- a/projects/hedgehog-markets/solana.js +++ /dev/null @@ -1,141 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getProvider, sumTokens2, getConnection, decodeAccount } = require("../helper/solana"); -const { Program } = require("@project-serum/anchor"); - -async function tvl(api) { - const connection = getConnection("solana"); - const provider = getProvider("solana"); - - const tokenAccounts = []; - const owners = []; - - await getClassicMarketTokenAccounts(); - await addP2PDepositTokenAccounts(); - await addP2PLuloBalances(); - await addParlay(); - await addParimutuel(); - - const balances = api.getBalances(); - - await sumTokens2({ owners, balances }); - - return sumTokens2({ tokenAccounts, balances }); - - async function getClassicMarketTokenAccounts() { - const classicMarketProgramId = "D8vMVKonxkbBtAXAxBwPPWyTfon8337ARJmHvwtsF98G"; - const idl = await Program.fetchIdl(classicMarketProgramId, provider); - - const program = new Program(idl, classicMarketProgramId, provider); - const markets = await program.account.market.all(); - const collateralAccounts = markets.map(({ account }) => account.marketCollateral); - tokenAccounts.push(...collateralAccounts); - } - - async function addP2PDepositTokenAccounts() { - const programId = new PublicKey("P2PototC41acvjMc9cvAoRjFjtaRD5Keo9PvNJfRwf3"); - - const result = await connection.getProgramAccounts(programId, { - encoding: "base64", - // We only care about the market addresses. - dataSlice: { offset: 0, length: 0 }, - filters: [ - // Market accounts have a discriminator of 3 at offset 0. - { memcmp: { offset: 0, bytes: "4" } }, - ], - }); - - for (const { pubkey } of result) { - // Market deposit account. - const [deposit] = PublicKey.findProgramAddressSync( - [Buffer.from("deposit"), pubkey.toBuffer()], - programId, - ); - - tokenAccounts.push(deposit); - } - } - - async function addParlay() { - const programId = new PublicKey("PLYaNRbQs9GWyVQdcLrzPvvZu7NH4W2sneyHcEimLr7"); - const poolOwner = "8Y46GkrbUqXnbs6kPD6SWr44NjcKPEWYzvpAn8UB5duR"; - owners.push(poolOwner); - - const accounts = await connection.getProgramAccounts(programId, { - // We only care about: - // - mint address (69..101) - // - entry count (101..105) - // - entry cost (105..113) - dataSlice: { offset: 69, length: 44 }, - filters: [ - // Market accounts have a discriminator of 3 at offset 0. - { memcmp: { offset: 0, bytes: "4" } }, - // Open markets have a state of 0 at offset 149. - { memcmp: { offset: 149, bytes: "1" } }, - ], - }); - - accounts.forEach(({ account }) => { - const data = decodeAccount("hhParlay", account); - - api.add(data.mint.toString(), Number(data.entryCount) * Number(data.entryCost)); - }); - } - - async function addP2PLuloBalances() { - // https://github.com/Hedgehog-Markets/hedgehog-program-library/blob/master/p2p/idl.json - const programId = new PublicKey("P2PzLraW8YF87BxqZTZ5kgrfvzcrKGPnqUBNhqmcV9B"); - const poolOwner = "J9EH18EWSo8s69gouHGNy5zFHkhcHRbb9zBZXwSG4cHy"; - owners.push(poolOwner); - - const accounts = await connection.getProgramAccounts(programId, { - // We only care about: - // - mint address (73..105) - // - yes amount (113..121) - // - no amount (121..129) - dataSlice: { offset: 73, length: 56 }, - filters: [ - // Market accounts have a discriminator of 3 at offset 0. - { memcmp: { offset: 0, bytes: "4" } }, - // Open markets have a state of 0 at offset 129. - { memcmp: { offset: 129, bytes: "1" } }, - ], - }); - - accounts.forEach(({ account: { data } }) => { - const mint = new PublicKey(data.slice(0, 32)).toString(); - const yesAmount = Number(data.readUInt8(40)); - const noAmount = Number(data.readUInt8(48)); - api.add(mint, yesAmount + noAmount); - }); - } - - async function addParimutuel() { - const programId = new PublicKey("PARrVs6F5egaNuz8g6pKJyU4ze3eX5xGZCFb3GLiVvu"); - const poolOwner = "3SAUPiGiATqv8TBgvzSJqpLxLGF6LbJamvimueJQT7WT"; - owners.push(poolOwner); - - const accounts = await connection.getProgramAccounts(programId, { - filters: [ - // Market accounts have a discriminator of 3 at offset 0. - { memcmp: { offset: 0, bytes: "4" } }, - // Open markets have a state of 0 at offset 149. - { memcmp: { offset: 149, bytes: "1" } }, - ], - }); - - accounts.forEach(({ account: { data } }) => { - const token = new PublicKey(data.slice(69, 69 + 32)).toString(); - // Amounts is a u64 array with u8 length prefix at offset 131. - const amountsLen = data.readUint8(131); - - let amounts = []; - for (let i = 0; i < amountsLen; i++) { - amounts.push(data.readBigUint64LE(132 + i * 8).toString()); - } - - api.add(token, amounts); - }); - } -} - -module.exports = tvl; \ No newline at end of file diff --git a/projects/hedgehog/index.js b/projects/hedgehog/index.js deleted file mode 100644 index d653a25bb06..00000000000 --- a/projects/hedgehog/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const WETH = ADDRESSES.ethereum.WETH; -const USDC = ADDRESSES.ethereum.USDC; -const OSQTH = "0xf1B99e3E573A1a9C5E6B2Ce818b617F0E664E86B"; - -const VAULT_MATH = "0x2b1cb93B8fe1B6fB3810Ab294D681865421C4E37"; - -async function tvl(api) { - const fundBalances = await api.call({ abi: 'function getTotalAmounts() view returns (uint256, uint256, uint256)', target: VAULT_MATH }) - api.addTokens([WETH, USDC, OSQTH], fundBalances) -} - -module.exports = { - doublecounted: true, - methodology: - "Counts the amount of wETH, USDC & oSQTH in the strategy-controlled pools and treasury", - ethereum: { tvl, }, -}; diff --git a/projects/hedgey/index.js b/projects/hedgey/index.js deleted file mode 100644 index e88c79186f4..00000000000 --- a/projects/hedgey/index.js +++ /dev/null @@ -1,136 +0,0 @@ -const { isWhitelistedToken } = require('../helper/streamingHelper') - -const BASE_CONFIG = { - tokenVesting: "0x2CDE9919e81b20B4B33DD562a48a84b54C48F00C", - votingVesting: "0x1bb64AF7FE05fc69c740609267d2AbE3e119Ef82", - tokenLockUp: "0x1961A23409CA59EEDCA6a99c97E4087DaD752486", - votingTokenLockUp: "0x73cD8626b3cD47B009E68380720CFE6679A3Ec3D", - boundTokenLockUp: "0xA600EC7Db69DFCD21f19face5B209a55EAb7a7C0", - boundVotingTokenLockUp: "0xdE8465D44eBfC761Ee3525740E06C916886E1aEB", -}; - -const CONFIG = { - ethereum: { ...BASE_CONFIG }, - arbitrum: { ...BASE_CONFIG }, - optimism: { ...BASE_CONFIG }, - polygon: { ...BASE_CONFIG }, - avax: { ...BASE_CONFIG }, - base: { ...BASE_CONFIG }, - bsc: { ...BASE_CONFIG }, - linea: { ...BASE_CONFIG }, - mode: { ...BASE_CONFIG, - votingTokenLockUp: "0xA600EC7Db69DFCD21f19face5B209a55EAb7a7C0", - boundVotingTokenLockUp: "0x38E74A3DA3bd27dd581d5948ba19F0f684a5272f" - }, - berachain: { ...BASE_CONFIG, - votingTokenLockUp: "0xA600EC7Db69DFCD21f19face5B209a55EAb7a7C0", - boundVotingTokenLockUp: "0x38E74A3DA3bd27dd581d5948ba19F0f684a5272f" - }, - era: { - tokenVesting: "0x04d3b05BBACe50d6627139d55B1793E2c03C53F0", - votingVesting: "0xa824f42d4B6b3C51ab24dFdb268C232216a2D691", - tokenLockUp: "0x1e290Ad7efc6E9102eCDB3D85dAB0e8e10cA690f", - votingTokenLockUp: "0x815a28bB9A5ea36C03Bc6B21072fb4e99D66b6f4", - boundTokenLockUp: "0xa83DFE7365A250faB1c3e10451676Af5DEF36E08", - boundVotingTokenLockUp: "0xc7EEFF556C4999169E96195b4091669C1ecA5C23", - }, -}; - -const abis = { - totalSupply: "erc20:totalSupply", - tokenByIndex: "function tokenByIndex(uint256) view returns (uint256)", - plans: "function plans(uint256) view returns (address token, uint256 amount, uint256 start, uint256 cliff, uint256 rate, uint256 period)", - planEnd: "function planEnd(uint256 planId) view returns (uint256 end)", -}; - -const cacheData = {}; - -const fetchTokens = async (api, owner, tokensIds) => { - if (!owner || !tokensIds.length) return []; - const batchSize = 200; - - const batches = []; - for (let i = 0; i < tokensIds.length; i += batchSize) { - batches.push(tokensIds.slice(i, i + batchSize)); - } - - const batchResults = await Promise.all( - batches.map(batch => - api.multiCall({ - calls: batch.map(id => ({ target: owner, params: [id] })), - abi: abis.plans, - permitFailure: true - }) - ) - ); - - const tokens = batchResults.flat().map((batchData, index) => batchData?.token).filter(Boolean); - return tokens; -}; - - -const fetchVestingData = async (api) => { - const config = CONFIG[api.chain]; - if (!config) return; - - const contractKeys = Object.keys(config); - - const tokenIdsByContract = await Promise.all( - contractKeys.map((contractKey) => - api.fetchList({ - itemAbi: abis.tokenByIndex, - lengthAbi: abis.totalSupply, - target: config[contractKey], - permitFailure: true, - excludeFailed: true, - }) - ) - ); - - const tokensByContract = await Promise.all( - contractKeys.map((contractKey, index) => - fetchTokens(api, config[contractKey], tokenIdsByContract[index]) - ) - ); - - const rawTokens = [...new Set(tokensByContract.flat().map(t => t.toLowerCase()))] - const symbols = await api.multiCall({ calls: rawTokens, abi: 'erc20:symbol', permitFailure: true }) - const tokens = rawTokens.map((token, index) => { - if (!symbols[index]) return null; - return { token, symbol: symbols[index] } - }).filter(Boolean) - - cacheData[api.chain] = { owners: Object.values(config), tokens } - return cacheData[api.chain] -}; - -const computeBalances = async (api, isVesting) => { - if (!cacheData[api.chain]) return; - const { owners, tokens } = cacheData[api.chain] - - const whitelisted = [] - const notWhitelisted = [] - - tokens.forEach(({ token, symbol }) => { - if (isVesting) { - notWhitelisted.push(token) - } else if (isWhitelistedToken(symbol, token, isVesting)) { - whitelisted.push(token) - } - }) - - return api.sumTokens({ owners, tokens: isVesting ? notWhitelisted: whitelisted }) -}; - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - if (!cacheData[api.chain]) await fetchVestingData(api); - await computeBalances(api, false); - }, - vesting: async (api) => { - if (!cacheData[api.chain]) await fetchVestingData(api); - await computeBalances(api, true); - }, - }; -}); \ No newline at end of file diff --git a/projects/hegic/index.js b/projects/hegic/index.js deleted file mode 100644 index e88591eed5a..00000000000 --- a/projects/hegic/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const poolsV8888 = { - ETH_CALL: "0xb9ed94c6d594b2517c4296e24A8c517FF133fb6d", - ETH_PUT: "0x790e96E7452c3c2200bbCAA58a468256d482DD8b", - WBTC_CALL: "0xfA77f713901a840B3DF8F2Eb093d95fAC61B215A", - WBTC_PUT: "0x7A42A60F8bA4843fEeA1bD4f08450D2053cC1ab6", -}; - -const tokens = { - ETH: ADDRESSES.null, - WBTC: ADDRESSES.ethereum.WBTC, - WETH: ADDRESSES.ethereum.WETH, - USDC: ADDRESSES.ethereum.USDC, - HEGIC: "0x584bc13c7d411c00c01a62e8019472de68768430", -}; - -const arbitrum = { - hergeCoverPool: "0xd47Ef934e301E0ee3b1cE0e3EEbCb64De8b231BE", - hergePayoff: "0x822C0E3aFbCfbD166833F44AD82f28354a57cf28", - hergeOperationalTreasury: "0xec096ea6eB9aa5ea689b0CF00882366E92377371", - HEGIC: "0x431402e8b9de9aa016c743880e04e517074d8cec", - USDC: ADDRESSES.arbitrum.USDC, - hardcoreStakeAndCover: "0x60898dfA3C6e8Ba4998B5f3be25Fb0b0b69d5D5d", - hardcoreOperationalTreasury: "0xB0F9F032158510cd4a926F9263Abc86bAF7b4Ab3", -}; - -async function ethTvl(api) { - return sumTokens2({ - api, tokensAndOwners: [ - [nullAddress, '0x878f15ffc8b894a1ba7647c7176e4c01f74e140b'], - [ADDRESSES.ethereum.WBTC, '0x20DD9e22d22dd0a6ef74a520cb08303B5faD5dE7'], - [tokens.WBTC, poolsV8888.WBTC_CALL], - [tokens.USDC, poolsV8888.WBTC_PUT], - [tokens.USDC, poolsV8888.ETH_PUT], - [tokens.WETH, poolsV8888.ETH_CALL], - ], - }); -} - -async function arbiTvl(api) { - return sumTokens2({ - api, tokensAndOwners: [ - [arbitrum.USDC, arbitrum.hardcoreOperationalTreasury], - [arbitrum.USDC, arbitrum.hardcoreStakeAndCover], - [arbitrum.USDC, arbitrum.hergeOperationalTreasury], - [arbitrum.USDC, arbitrum.hergePayoff], - [arbitrum.HEGIC, arbitrum.hergeCoverPool], - ], - }); -} - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - arbitrum: { - tvl: arbiTvl, - }, - methodology: `TVL for Hegic is calculated using the HEGIC tokens deposited into Stake & Cover pool on Arbitrum and pools liquidity in USDC, ETH and WBTC`, -}; diff --git a/projects/helio-money/index.js b/projects/helio-money/index.js deleted file mode 100644 index 1aa57d5fbdb..00000000000 --- a/projects/helio-money/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unknownTokens"); -const axios = require('axios'); - -const lisLPs = [ - "0xe8f4644637f127aFf11F9492F41269eB5e8b8dD2", // Lista LP Stable-LP - "0xFf5ed1E64aCA62c822B178FFa5C36B40c112Eb00", // Lista LP aSnBNB-WBNB - "0x4b2D67Bf25245783Fc4C33a48962775437F9159c", // Lista LP aUSDT-LISTA - "0xC23d348f9cC86dDB059ec798e87E7F76FBC077C1", // Lista LP aHAY-USDT - "0xF6aB5cfdB46357f37b0190b793fB199D62Dcf504", // Lista LP UV-17-THE - "0x1Cf9c6D475CdcA67942d41B0a34BD9cB9D336C4d", // Lista LP sAMM-HAY/FRAX - "0x9eb77a54a33069a319d91f493e6b1c9066fb38f7" // Lista LP pancake lisUSD/USDT - - ]; - - -const abi = { - lpToken: "address:lpToken", - totalSupply: "uint256:totalSupply", -}; - -const pool2 = async (api) => { - const [lisLpTokens, lisLpBalances] = await Promise.all([ - api.multiCall({calls: lisLPs.map((lis) => ({ target: lis })), abi: abi.lpToken }), - api.multiCall({calls: lisLPs.map((lis) => ({ target: lis })), abi: abi.totalSupply }), - ]); - - - lisLPs.forEach((_lp, i) => { - - api.add(lisLpTokens[i], lisLpBalances[i]) - }) - - - -} - -module.exports = { - methodology: "The TVL is calculated by summing the values of tokens held in the specified vault addresses", - hallmarks: [ - [1669939200, "aBNBc exploit"], - //[1670544000,"aBNBc to AnkrBNB swap & HAY buyback"] - ], - bsc: { - tvl: async (api) => { - let tokensAndOwners; - try { - const { data } = await axios.get('https://api.lista.org/api/defiLlama/cdp-vault-list'); - if (data && data.code === '000000000' && Array.isArray(data.data)) { - tokensAndOwners = data.data; - } else { - throw new Error('Invalid API response'); - } - } catch (e) { - // fallback to static if API fails - tokensAndOwners = [ - [ADDRESSES.null, "0x986b40C2618fF295a49AC442c5ec40febB26CC54"], - ["0xB0b84D294e0C75A6abe60171b70edEb2EFd14A1B", "0x6F28FeC449dbd2056b76ac666350Af8773E03873"], - ["0xB0b84D294e0C75A6abe60171b70edEb2EFd14A1B", "0x91e49983598685DD5ACAc90CEb4061A772f6E5Ae"], - [ADDRESSES.bsc.ETH, "0xA230805C28121cc97B348f8209c79BEBEa3839C0"], - [ADDRESSES.bsc.wBETH, "0xf45C3b619Ee86F653805E007fE211B7e930E0b3B"], - [ADDRESSES.bsc.wBETH, "0xA230805C28121cc97B348f8209c79BEBEa3839C0"], - [ADDRESSES.bsc.BTCB, "0xad9eAAe95617c39019aCC42301a1dCa4ea5b6f65"], - [ADDRESSES.blast.ezETH, "0xd7E33948e2a43e7C1ec2F19937bf5bf8BbF9BaE8"], - [ADDRESSES.blast.weETH, "0x2367f2Da6fd39De6944218CC9EC706BCdc9a6918"], - [ADDRESSES.scroll.STONE, "0x876cd9a380Ee7712129b52f8293F6f06056c3104"], - ["0x4aae823a6a0b376De6A78e74eCC5b079d38cBCf7", "0xA94AA72e033b39AD7CD448f38Bc1eda5B52f7079"], - ["0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC", "0x157c9a692ee99C39272856055957083a928cE299"], - ["0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C", "0xf8Ca8D2B59A97125751af1069d4a5C4F7eB7A677"], - ["0x1346b618dC92810EC74163e4c27004c921D446a5","0x03DB750d6212C6a0BCa9258E8cB7cf46dfD63067"], - [ADDRESSES.bsc.USDT, "0xAd406CcF75f9E6216fA4349635B0cD77D0059b1f"], - [ADDRESSES.ethereum.FDUSD,"0x2202a491752Fee0E616F06A89E2eF416E2Fcd7e9"], - ["0x7788A3538C5fc7F9c7C8A74EAC4c898fC8d87d92", "0x98b167359566c1ea05335D52794C7Eb6f8E6739a"], - ["0xfd5840cd36d94d7229439859c0112a4185bc0255","0xf76D9cFD08dF91491680313B1A5b44307129CDa9"], - ["0xf9C4FF105803A77eCB5DAE300871Ad76c2794fa4", "0xEA44dDC58eC6b4902E19A353c554B6A4F32b9e6E"], - ["0x7c1cCA5b25Fa0bC9AF9275Fb53cBA89DC172b878", "0x8A016f1896dC2939fFDbB60f6E42bCc245e2bB0b"], - ["0x581FA684D0Ec11ccb46B1d92F1F24C8A3F95C0CA", "0x605356cc9f725e6744A51E78CD49E6029DcC4404"], - ["0x7dc91cbd6cb5a3e6a95eed713aa6bf1d987146c8", "0x3cd434f0A58018B87eF1D2436cb710ca46F0fC43"], - ["0x5A110fC00474038f6c02E89C707D638602EA44B5", "0x8B35291ecF29fD36BA405A03C9832725f2E9e164"], - ["0x917AF46B3C3c6e1Bb7286B9F59637Fb7C65851Fb", "0xB53e69b662a2d10343f857eBa9e3b6158Acf632F"], - [ADDRESSES.bsc.BTCB, "0x1AfA1589a634BE568D7872dCF1bbE6F79e11FaD5"], - ]; - } - return sumTokensExport({ tokensAndOwners })(api); - }, - pool2, - staking: staking('0xd0C380D31DB43CD291E2bbE2Da2fD6dc877b87b3','0xFceB31A79F71AC9CBDCF853519c1b12D379EdC46') - }, -}; - -// execute with `node test.js projects/helio-money` \ No newline at end of file diff --git a/projects/heliosprime/abi.json b/projects/heliosprime/abi.json deleted file mode 100644 index 54ef09b97a1..00000000000 --- a/projects/heliosprime/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getComponents": "address[]:getComponents" -} \ No newline at end of file diff --git a/projects/heliosprime/index.js b/projects/heliosprime/index.js deleted file mode 100644 index 93cecba02e8..00000000000 --- a/projects/heliosprime/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const EDP = "0x7633da43dfd4ee5a5da99740f077ca9d97aa0d0e" - -const ethTvl = async (api) => { - const tokens = await api.call({ target: EDP, abi: "address[]:getComponents" }) - return api.sumTokens({ tokens, owner: EDP}) -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - methodology: - "We count liquidity on the pool2, and it counts the staking of native token separtly", -}; diff --git a/projects/heliswap/index.js b/projects/heliswap/index.js deleted file mode 100644 index a6c26debbd9..00000000000 --- a/projects/heliswap/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const axios = require("axios"); - -const urlConfigs = { - graphQLUrl: "https://heliswap-prod-362307.oa.r.appspot.com/query", - tokenListUrl: "https://heliswap-api.ey.r.appspot.com/tokens/whitelisted/", -}; - -const axiosConfig = { - url: urlConfigs.graphQLUrl, - method: "post", -}; - -const getWhitelistedTokenAddresses = async () => { - const response = await axios(urlConfigs.tokenListUrl); - const { data: whitelistedTokens } = response; - - return whitelistedTokens; -}; - -const tvl = async () => { - let totalTVL = 0; - - const whitelistedAddresses = await getWhitelistedTokenAddresses(); - - const { url, method } = axiosConfig; - const requestData = { - query: `query getWhitelistedPools($tokens: [String]!) { - poolsConsistingOf(tokens: $tokens) { - tvl - } - }`, - variables: { - tokens: whitelistedAddresses, - }, - }; - - const requestObject = { - url, - method, - data: requestData, - }; - - const { - data: { data: { poolsConsistingOf }} - } = await axios(requestObject); - - totalTVL = poolsConsistingOf.reduce((acc, pool) => (isNaN(+pool.tvl) || +pool.tvl > 1e8) ? acc : acc + +pool.tvl, 0) - - return { tether: totalTVL }; -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - hedera: { - tvl, - }, -}; diff --git a/projects/helius-sol/index.js b/projects/helius-sol/index.js deleted file mode 100644 index 97dc4ee5b99..00000000000 --- a/projects/helius-sol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('3wK2g8ZdzAH8FJ7PKr2RcvGh7V9VYson5hrVsJM5Lmws', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/helix-markets/index.js b/projects/helix-markets/index.js deleted file mode 100644 index e5c1206e4a2..00000000000 --- a/projects/helix-markets/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { get } = require('../helper/http') -const { toUSDTBalances } = require('../helper/balances') - -module.exports = { - misrepresentedTokens: true, - icp: { tvl }, -} - -async function tvl() { - const url = 'https://dgw.helixic.io/api/v1/tvl'; - try { - const data = await get(url); - let totalVolumeNotional = 0; - data.forEach(asset => { - totalVolumeNotional += parseFloat(asset.volumeNotional); - }); - return toUSDTBalances(totalVolumeNotional); - } catch (error) { - console.error('Error fetching TVL:', error); - return toUSDTBalances(0); - } -} \ No newline at end of file diff --git a/projects/helix/index.js b/projects/helix/index.js deleted file mode 100644 index 0c201cfb9c7..00000000000 --- a/projects/helix/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); - -const BLOCK_START = 19068863; -const HELIX_FACTORY_CONTRACT = '0x274515B23B9c4Dd616C88A6C5D715F5C88A4cc36'; - -async function borrowed(api) { - const logs = await getLogs({ - target: HELIX_FACTORY_CONTRACT, - api, - fromBlock: BLOCK_START, - eventAbi: 'event DealCreated(address indexed deal, address indexed dealWallet, address indexed dealManager, address borrower, uint256 dbPrjId)', - onlyArgs: true - }) - const deals = logs.map(i => i.deal) - const bals = await api.multiCall({ abi: 'uint256:dealTVL', calls: deals}) - const tokens = await api.multiCall({ abi: 'address:dealCurrency', calls: deals}) - api.add(tokens, bals) - return api.getBalances() -} - -module.exports = { - ethereum: { - tvl: () => ({}), - borrowed, - } -}; \ No newline at end of file diff --git a/projects/helmetinsure/index.js b/projects/helmetinsure/index.js deleted file mode 100644 index 6ab1df8eb16..00000000000 --- a/projects/helmetinsure/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - polygon: { factory: '0x021297e233550eDBa8e6487EB7c6696cFBB63b88', fromBlock: 17072457 }, - bsc: { factory: '0x021297e233550eDBa8e6487EB7c6696cFBB63b88', fromBlock: 3369565 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ api, target: factory, eventAbi: abi.OptionCreated, onlyArgs: true, fromBlock, }) - const ownerTokens = [] - logs.forEach(log => { - const { _collateral, _underlying, long, short } = log - ownerTokens.push([[_collateral, _underlying], long]) - ownerTokens.push([[_collateral, _underlying], short]) - }) - return sumTokens2({ api, ownerTokens, permitFailure: true, }) - } - } -}) - -const abi = { - "Burn": "event Burn(address indexed seller, address _creator, address indexed _collateral, address indexed _underlying, uint256 _strikePrice, uint256 _expiry, uint256 vol)", - "Exercise": "event Exercise(address indexed buyer, address indexed _collateral, address indexed _underlying, uint256 _strikePrice, uint256 _expiry, uint256 volume, uint256 vol, uint256 fee, uint256 amt)", - "GovernorshipTransferred": "event GovernorshipTransferred(address indexed previousGovernor, address indexed newGovernor)", - "Mint": "event Mint(address indexed seller, bool _private, address indexed _collateral, address indexed _underlying, uint256 _strikePrice, uint256 _expiry, address long, address short, uint256 vol)", - "OptionCreated": "event OptionCreated(address indexed creator, address indexed _collateral, address indexed _underlying, uint256 _strikePrice, uint256 _expiry, address long, address short, uint256 count)", - "Settle": "event Settle(address indexed seller, address _creator, address indexed _collateral, address indexed _underlying, uint256 _strikePrice, uint256 _expiry, uint256 vol, uint256 col, uint256 fee, uint256 und)", - "allLongs": "function allLongs(uint256) view returns (address)", - "allShorts": "function allShorts(uint256) view returns (address)", - "burn": "function burn(address longOrShort, uint256 volume) returns (address, address, uint256)", - "calcExerciseAmount": "function calcExerciseAmount(address _long, uint256 volume) view returns (uint256)", - "createOption": "function createOption(bool _private, address _collateral, address _underlying, uint256 _strikePrice, uint256 _expiry) returns (address long, address short)", - "emitSettle": "function emitSettle(address seller, address _creator, address _collateral, address _underlying, uint256 _strikePrice, uint256 _expiry, uint256 vol, uint256 col, uint256 fee, uint256 und)", - "exercise": "function exercise(address long, address[] path) returns (uint256 vol, uint256 fee, uint256 amt)", - "exercise_": "function exercise_(address buyer, address _creator, address _collateral, address _underlying, uint256 _strikePrice, uint256 _expiry, uint256 volume, address[] path) returns (uint256 vol, uint256 fee, uint256 amt)", - "getConfig": "function getConfig(bytes32 key, uint256 index) view returns (uint256)", - "governor": "address:governor", - "initialize": "function initialize(address governor_)", - "length": "uint256:length", - "longs": "function longs(address, address, address, uint256, uint256) view returns (address)", - "mint": "function mint(bool _private, address _collateral, address _underlying, uint256 _strikePrice, uint256 _expiry, uint256 volume) returns (address long, address short, uint256 vol)", - "mint_": "function mint_(address sender, bool _private, address _collateral, address _underlying, uint256 _strikePrice, uint256 _expiry, uint256 volume) returns (address long, address short, uint256 vol)", - "pack_maturity_expiry": "function pack_maturity_expiry(uint256 maturity, uint256 expiry) pure returns (uint256)", - "productImplementations": "function productImplementations(bytes32) view returns (address)", - "renounceGovernorship": "function renounceGovernorship()", - "setConfig": "function setConfig(bytes32 key, uint256 index, uint256 value)", - "settle": "function settle(address _creator, address _collateral, address _underlying, uint256 _strikePrice, uint256 _expiry, uint256 volume) returns (uint256 vol, uint256 col, uint256 fee, uint256 und)", - "settle_": "function settle_(address sender, address short, uint256 volume) returns (uint256 vol, uint256 col, uint256 fee, uint256 und)", - "settleable": "function settleable(address seller, address short) view returns (uint256 vol, uint256 col, uint256 fee, uint256 und)", - "shorts": "function shorts(address, address, address, uint256, uint256) view returns (address)", - "transferGovernorship": "function transferGovernorship(address newGovernor)", - "unpack_expiry": "function unpack_expiry(uint256 maturity_expiry) pure returns (uint256)", - "unpack_maturity": "function unpack_maturity(uint256 maturity_expiry) pure returns (uint256)", - "upgradeProductImplementationsTo": "function upgradeProductImplementationsTo(address _implLongOption, address _implShortOption)" -} \ No newline at end of file diff --git a/projects/helper/aave.js b/projects/helper/aave.js deleted file mode 100644 index 7c64679a427..00000000000 --- a/projects/helper/aave.js +++ /dev/null @@ -1,286 +0,0 @@ -const { getLogs } = require('./cache/getLogs') -const ADDRESSES = require('./coreAssets.json') -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js'); -const abi = require('./abis/aave.json'); -const { getChainTransform, getFixBalancesSync, } = require('../helper/portedTokens') -const { sumTokens2 } = require('../helper/unwrapLPs'); -const methodologies = require('./methodologies'); - -async function getV2Reserves(block, addressesProviderRegistry, chain, dataHelperAddress, abis = {}) { - let validProtocolDataHelpers - if (dataHelperAddress === undefined) { - const addressesProviders = ( - await sdk.api.abi.call({ - target: addressesProviderRegistry, - abi: abi["getAddressesProvidersList"], - block, - chain - }) - ).output; - - const protocolDataHelpers = ( - await sdk.api.abi.multiCall({ - calls: addressesProviders.map((provider) => ({ - target: provider, - params: "0x0100000000000000000000000000000000000000000000000000000000000000", - })), - abi: abi["getAddress"], - block, - chain - }) - ).output; - - validProtocolDataHelpers = protocolDataHelpers.filter( - (helper) => - helper.output !== ADDRESSES.null - ).map(p => p.output); - } else { - validProtocolDataHelpers = dataHelperAddress - } - - const aTokenMarketData = ( - await sdk.api.abi.multiCall({ - calls: validProtocolDataHelpers.map((dataHelper) => ({ - target: dataHelper, - })), - abi: abis.getAllATokens || abi["getAllATokens"], - block, - chain - }) - ).output; - - let aTokenAddresses = []; - aTokenMarketData.map((aTokensData) => { - aTokenAddresses = [ - ...aTokenAddresses, - ...aTokensData.output.map((aToken) => aToken[1]), - ]; - }); - - const underlyingAddressesData = ( - await sdk.api.abi.multiCall({ - calls: aTokenAddresses.map((aToken) => ({ - target: aToken, - })), - abi: abi["getUnderlying"], - block, - chain - }) - ).output; - - const reserveAddresses = underlyingAddressesData.map((reserveData) => reserveData.output); - - return [aTokenAddresses, reserveAddresses, validProtocolDataHelpers[0]] -} - -async function getTvl(balances, block, chain, v2Atokens, v2ReserveTokens, transformAddress) { - const balanceOfUnderlying = await sdk.api.abi.multiCall({ - calls: v2Atokens.map((aToken, index) => ({ - target: v2ReserveTokens[index], - params: aToken, - })), - abi: "erc20:balanceOf", - block, - chain - }); - sdk.util.sumMultiBalanceOf(balances, balanceOfUnderlying, true, transformAddress) -} - -async function getBorrowed(balances, block, chain, v2ReserveTokens, dataHelper, transformAddress, v3 = false) { - const reserveData = await sdk.api.abi.multiCall({ - calls: v2ReserveTokens.map((token) => ({ - target: dataHelper, - params: [token], - })), - abi: v3 ? abi.getTotalDebt : abi.getHelperReserveData, - block, - chain - }); - - reserveData.output.forEach((data, idx) => { - const quantity = v3 ? data.output : BigNumber(data.output.totalVariableDebt).plus(data.output.totalStableDebt).toFixed(0) - sdk.util.sumSingleBalance(balances, transformAddress(data.input.params[0]), quantity) - }) -} - -function aaveChainTvl(_chain, addressesProviderRegistry, transformAddressRaw, dataHelperAddresses, borrowed, v3 = false, { abis = {}, oracle, blacklistedTokens = [], hasV2LPs = false, } = {}) { - return async (api) => { - const chain = api.chain - const block = api.block - const balances = {} - const { transformAddress, fixBalances, v2Atokens, v2ReserveTokens, dataHelper, updateBalances } = await getData({ oracle, chain, block, addressesProviderRegistry, dataHelperAddresses, transformAddressRaw, abis, }) - if (borrowed) { - await getBorrowed(balances, block, chain, v2ReserveTokens, dataHelper, transformAddress, v3); - } else { - await getTvl(balances, block, chain, v2Atokens, v2ReserveTokens, transformAddress); - } - if (updateBalances) updateBalances(balances) - fixBalances(balances) - Object.keys(balances).forEach((key) => { - if (!blacklistedTokens.length) return; - if (blacklistedTokens.some(i => new RegExp(i, 'gi').test(key))) { - delete balances[key] - } - }) - if (hasV2LPs) await sumTokens2({ block, resolveLP: true, balances, chain, }) - return balances - } -} -function aaveExports(_chain, addressesProviderRegistry, transform = undefined, dataHelpers = undefined, { oracle, abis, v3 = false, blacklistedTokens = [], hasV2LPs = false, } = {}) { - return { - tvl: aaveChainTvl(_chain, addressesProviderRegistry, transform, dataHelpers, false, v3, { oracle, abis, blacklistedTokens, hasV2LPs, }), - borrowed: aaveChainTvl(_chain, addressesProviderRegistry, transform, dataHelpers, true, v3, { oracle, abis, hasV2LPs, blacklistedTokens, }) - } -} - -module.exports = { - methodology: methodologies.lendingMarket, - aaveChainTvl, - getV2Reserves, - getTvl, - aaveExports, - getBorrowed, - aaveV2Export, -} - -const cachedData = {} - -async function getData({ oracle, chain, block, addressesProviderRegistry, dataHelperAddresses, transformAddressRaw, abis, }) { - let dataHelperAddressesStr - if (dataHelperAddresses && dataHelperAddresses.length) dataHelperAddressesStr = dataHelperAddresses.join(',') - const key = `${chain}-${block}-${addressesProviderRegistry}-${dataHelperAddresses}-${oracle}` - if (!cachedData[key]) cachedData[key] = _getData() - return cachedData[key] - - async function _getData() { - sdk.log('get aava metadata:', key) - - const transformAddress = transformAddressRaw || await getChainTransform(chain) - const fixBalances = await getFixBalancesSync(chain) - const [v2Atokens, v2ReserveTokens, dataHelper] = await getV2Reserves(block, addressesProviderRegistry, chain, dataHelperAddresses, abis) - let updateBalances - - if (oracle) { - const params = { chain, block, target: oracle, } - const [ - baseCurrency, baseCurrencyUnit, prices, - ] = await Promise.all([ - sdk.api2.abi.call({ ...params, abi: oracleAbis.BASE_CURRENCY, }), - sdk.api2.abi.call({ ...params, abi: oracleAbis.BASE_CURRENCY_UNIT, }), - sdk.api2.abi.call({ ...params, abi: oracleAbis.getAssetsPrices, params: [v2ReserveTokens], }), - ]) - - const baseToken = transformAddress(baseCurrency) - updateBalances = balances => { - v2ReserveTokens.map(i => `${chain}:${i.toLowerCase()}`).forEach((token, i) => { - if (!balances[token]) return; - const balance = balances[token] * prices[i] / baseCurrencyUnit - delete balances[token] - sdk.util.sumSingleBalance(balances, baseToken, balance) - }) - return balances - } - } - - return { transformAddress, fixBalances, v2Atokens, v2ReserveTokens, dataHelper, updateBalances, } - } -} - -const oracleAbis = { - BASE_CURRENCY: "address:BASE_CURRENCY", - BASE_CURRENCY_UNIT: "uint256:BASE_CURRENCY_UNIT", - getAssetsPrices: "function getAssetsPrices(address[] assets) view returns (uint256[])", -} - -function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyUnit, abis = {}, fromBlock, blacklistedTokens = [], isAaveV3Fork } = {}) { - if (isAaveV3Fork && !abis.getReserveData) - abis.getReserveData = "function getReserveData(address asset) view returns (((uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))" - - async function tvl(api) { - const data = await getReservesData(api) - const tokensAndOwners = data.map(i => ([i.underlying, i.aTokenAddress])) - if (!useOracle) - return sumTokens2({ tokensAndOwners, api, blacklistedTokens }) - const balances = {} - const res = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(i => ({ target: i[0], params: i[1] })) }) - - res.forEach((v, i) => { - sdk.util.sumSingleBalance(balances, data[i].currency, v * data[i].price, api.chain) - }) - return balances - } - - async function borrowed(api) { - const balances = api.getBalances() - const data = await getReservesData(api) - const supplyVariable = await api.multiCall({ - abi: 'erc20:totalSupply', - calls: data.map(i => i.variableDebtTokenAddress), - }) - const supplyStable = await api.multiCall({ - abi: 'erc20:totalSupply', - calls: data.map(i => i.stableDebtTokenAddress), - }) - data.forEach((i, idx) => { - let value = +supplyVariable[idx] + +supplyStable[idx] - if (useOracle) { - sdk.util.sumSingleBalance(balances, i.currency, value * i.price, api.chain) - } else { - sdk.util.sumSingleBalance(balances, i.underlying, value, api.chain) - } - }) - return sumTokens2({ api, balances }) - } - - async function getReservesData(api) { - if (fromBlock) return getReservesDataFromBlock(api) - const tokens = await api.call({ abi: abiv2.getReservesList, target: registry }) - const data = await api.multiCall({ abi: abis.getReserveData ?? abiv2.getReserveData, calls: tokens, target: registry, }) - data.forEach((v, i) => v.underlying = tokens[i]) - if (useOracle) { - let currency = baseCurrency - let unit = baseCurrencyUnit - - const addressProvider = await api.call({ abi: abiv2.getAddressesProvider, target: registry }) - const oracle = await api.call({ abi: abiv2.getPriceOracle, target: addressProvider }) - - if (!currency) currency = await api.call({ abi: abiv2.BASE_CURRENCY, target: oracle }) - if (!unit) unit = await api.call({ abi: abiv2.BASE_CURRENCY_UNIT, target: oracle }) - - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) - // const currencyDecimal = await api.call({ abi: 'erc20:decimals', target: currency }) - const currencyDecimal = 18 - const prices = await api.call({ abi: abiv2.getAssetsPrices, target: oracle, params: [tokens] }) - prices.forEach((v, i) => { - data[i].price = (v / unit )/ (10 ** (decimals[i] - currencyDecimal)) - data[i].currency = currency - }) - } - return data - } - - async function getReservesDataFromBlock(api) { - const logs = await getLogs({ - api, - target: registry, - topics: ['0x3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f'], - fromBlock, - eventAbi: 'event ReserveInitialized (address indexed underlying, address indexed aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress)', - onlyArgs: true, - }) - return logs - } - - const abiv2 = { - getReservesList: "address[]:getReservesList", - getAddressesProvider: "address:getAddressesProvider", - BASE_CURRENCY: "address:BASE_CURRENCY", - BASE_CURRENCY_UNIT: "uint256:BASE_CURRENCY_UNIT", - getPriceOracle: "address:getPriceOracle", - getAssetsPrices: "function getAssetsPrices(address[]) view returns (uint256[])", - getReserveData: "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))", - } - - return { tvl, borrowed, } -} \ No newline at end of file diff --git a/projects/helper/abis/aave.json b/projects/helper/abis/aave.json deleted file mode 100644 index b1d21bc3aae..00000000000 --- a/projects/helper/abis/aave.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "getTotalDebt": "function getTotalDebt(address asset) view returns (uint256)", - "getReservesList": "address[]:getReservesList", - "getAMMReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))", - "getCurrentTokens": "address[]:getCurrentTokens", - "getReserveData": "function getReserveData(address _reserve) view returns (uint256 totalLiquidity, uint256 availableLiquidity, uint256 totalBorrowsStable, uint256 totalBorrowsVariable, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 utilizationRate, uint256 liquidityIndex, uint256 variableBorrowIndex, address aTokenAddress, uint40 lastUpdateTimestamp)", - "getReserveConfigurationData": "function getReserveConfigurationData(address _reserve) view returns (uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, address interestRateStrategyAddress, bool usageAsCollateralEnabled, bool borrowingEnabled, bool stableBorrowRateEnabled, bool isActive)", - "getReserves": "address[]:getReserves", - "getAddressesProvidersList": "address[]:getAddressesProvidersList", - "getAddress": "function getAddress(bytes32 id) view returns (address)", - "getAllATokens": "function getAllATokens() view returns (tuple(string symbol, address tokenAddress)[])", - "getUnderlying": "address:UNDERLYING_ASSET_ADDRESS", - "getReserveDataV2": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - "getBPool": "address:bPool", - "getHelperReserveData": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - "getReserveTotalBorrows": "function getReserveTotalBorrows(address _reserve) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/helper/abis/balancer.json b/projects/helper/abis/balancer.json deleted file mode 100644 index 2e6197a9c0d..00000000000 --- a/projects/helper/abis/balancer.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "getPoolTokens": "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)", - "getPoolId": "function getPoolId() view returns (bytes32)", - "getVault": "address:getVault", - "bPool": "address:bPool", - "getCurrentTokens": "address[]:getCurrentTokens" -} \ No newline at end of file diff --git a/projects/helper/abis/compound.json b/projects/helper/abis/compound.json deleted file mode 100644 index 6ad80ad72db..00000000000 --- a/projects/helper/abis/compound.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "markets": "function markets(address) view returns (bool isSupported, uint256 blockNumber, address interestRateModel, uint256 totalSupply, uint256 supplyRateMantissa, uint256 supplyIndex, uint256 totalBorrows, uint256 borrowRateMantissa, uint256 borrowIndex)", - "totalBorrows": "uint256:totalBorrows", - "borrowRatePerBlock": "uint256:borrowRatePerBlock", - "supplyRatePerBlock": "uint256:supplyRatePerBlock", - "underlying": "address:underlying", - "getCash": "uint256:getCash", - "isCToken": "boolean:isCToken", - "getAllMarkets": "address[]:getAllMarkets", - "getUnderlyingPrice": "function getUnderlyingPrice(address _pToken) view returns (uint256)", - "oracle": "address:oracle" -} \ No newline at end of file diff --git a/projects/helper/abis/cream.json b/projects/helper/abis/cream.json deleted file mode 100644 index bf41dfa67d1..00000000000 --- a/projects/helper/abis/cream.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "underlying": "address:underlying", - "exchangeRateStored": "uint256:exchangeRateStored" -} \ No newline at end of file diff --git a/projects/helper/abis/dodo.json b/projects/helper/abis/dodo.json deleted file mode 100644 index a7e8072fa0f..00000000000 --- a/projects/helper/abis/dodo.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_BASE_TOKEN_": "address:_BASE_TOKEN_", - "_QUOTE_TOKEN_": "address:_QUOTE_TOKEN_" -} \ No newline at end of file diff --git a/projects/helper/abis/erc20.json b/projects/helper/abis/erc20.json deleted file mode 100644 index afbcc0c269c..00000000000 --- a/projects/helper/abis/erc20.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "symbol": "string:symbol", - "name": "string:name" -} \ No newline at end of file diff --git a/projects/helper/abis/factory.json b/projects/helper/abis/factory.json deleted file mode 100644 index d18345c456e..00000000000 --- a/projects/helper/abis/factory.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "allPairs": "function allPairs(uint256) view returns (address)", - "token0": "address:token0", - "token1": "address:token1", - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)", - "allPairsLength": "uint256:allPairsLength" -} \ No newline at end of file diff --git a/projects/helper/abis/kslp.js b/projects/helper/abis/kslp.js deleted file mode 100644 index 5672ceaa031..00000000000 --- a/projects/helper/abis/kslp.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - getPoolCount: 'uint256:getPoolCount', - pools: 'function pools(uint256) view returns (address)', - getCurrentPool: "function getCurrentPool() view returns (uint256 _reserve0, uint256 _reserve1)", - tokenA: "address:tokenA", - tokenB: "address:tokenB", -} \ No newline at end of file diff --git a/projects/helper/abis/masterchef.json b/projects/helper/abis/masterchef.json deleted file mode 100644 index d753ca9013d..00000000000 --- a/projects/helper/abis/masterchef.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accFishPerShare, uint16 depositFeeBP)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/helper/abis/morpho.json b/projects/helper/abis/morpho.json deleted file mode 100644 index b21a65d7e6a..00000000000 --- a/projects/helper/abis/morpho.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "cToken": { - "underlying": "address:underlying" - }, - "morphoLens": { - "getAllMarkets": "address[]:getAllMarkets", - "getTotalMarketSupply": "function getTotalMarketSupply(address _poolTokenAddress) view returns (uint256 p2pSupplyAmount, uint256 poolSupplyAmount)", - "getTotalMarketBorrow": "function getTotalMarketBorrow(address _poolTokenAddress) view returns (uint256 p2pBorrowAmount, uint256 poolBorrowAmount)" - }, - "morphoAaveV3": { - "marketsCreated": "address[]:marketsCreated", - "market": "function market(address underlying) returns (tuple( tuple(uint128 poolIndex, uint128 p2pIndex) supply, tuple(uint128 poolIndex, uint128 p2pIndex) borrow) indexes, tuple( tuple(uint256 scaledDelta, uint256 scaledP2PTotal) supply, tuple(uint256 scaledDelta, uint256 scaledP2PTotal) borrow) deltas, address underlying, tuple( bool isP2PDisabled, bool isSupplyPaused, bool isSupplyCollateralPaused, bool isBorrowPaused, bool isWithdrawPaused, bool isWithdrawCollateralPaused, bool isRepayPaused, bool isLiquidateCollateralPaused, bool isLiquidateBorrowPaused, bool isDeprecated) pauseStatues, bool isCollateral, address variableDebtToken, uint32 lastUpdateTimestamp, uint16 reserveFactor, uint16 p2pIndexCursor, address aToken, address stableDebtToken, uint256 idleSupply)" - }, - "morphoBlueFunctions": { - "underlying": "address:underlying", - "idToMarketParams": "function idToMarketParams(bytes32 Id) returns (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv)", - "market": "function market(bytes32 input) returns (uint128 totalSupplyAssets, uint128 totalSupplyShares, uint128 totalBorrowAssets, uint128 totalBorrowShares, uint128 lastUpdate, uint128 fee)" - }, - "metaMorphoFunctions": { - "withdrawQueueLength": "function withdrawQueueLength() view returns (uint256)" - }, - "pool": {} -} diff --git a/projects/helper/abis/solidlyVeNft.json b/projects/helper/abis/solidlyVeNft.json deleted file mode 100644 index 37ff7ddd0dc..00000000000 --- a/projects/helper/abis/solidlyVeNft.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tokensOfOwner": "function tokensOfOwner(address) view returns (uint256[])", - "ownerToNFTokenIdList": "function ownerToNFTokenIdList(address, uint256) view returns (uint256)", - "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address _owner, uint256 _tokenIndex) view returns (uint256)", - "locked": "function locked(uint256 _tokenId) view returns (tuple(int128 amount, uint256 end, bool isPermanent))", - "lockedSimple": "function locked(uint256 _tokenId) view returns (tuple(int128 amount, uint256 end))" -} \ No newline at end of file diff --git a/projects/helper/abis/uniswap.js b/projects/helper/abis/uniswap.js deleted file mode 100644 index 35ff8f01654..00000000000 --- a/projects/helper/abis/uniswap.js +++ /dev/null @@ -1,4 +0,0 @@ - -const factory = require('./factory.json'); - -module.exports = factory \ No newline at end of file diff --git a/projects/helper/acala/api.js b/projects/helper/acala/api.js deleted file mode 100644 index f1e9876daef..00000000000 --- a/projects/helper/acala/api.js +++ /dev/null @@ -1,196 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api") -const sdk = require('@defillama/sdk') -const { getCoreAssets } = require("../tokenMapping") - - -const api = {} - -const providers = { - karura: [ - // Taken from https://wiki.acala.network/integrate/integration-1/networks - "wss://karura-rpc.aca-api.network", - "wss://rpc-karura.luckyfriday.io", - "wss://karura-rpc.dwellir.com", - ], - polkadot: [ - "wss://polkadot-rpc.dwellir.com", - "wss://polkadot.api.onfinality.io/public-ws", - "wss://rpc.polkadot.io", - ], - kusama: [ - "wss://kusama-rpc.polkadot.io", - "wss://kusama.api.onfinality.io/public-ws", - "wss://kusama-rpc.dwellir.com", - ], - acala: [ - "wss://acala-rpc.aca-api.network", - ], - heiko: [ - "wss://heiko-rpc.parallel.fi", - "wss://parallel-heiko.api.onfinality.io/public-ws", - ], - parallel: [ - "wss://parallel-rpc.dwellir.com", - "wss://rpc.parallel.fi", - "wss://parallel.api.onfinality.io/public-ws", - ], - kintsugi: [ - "wss://api-kusama.interlay.io/parachain" - ], - interlay: [ - "wss://api.interlay.io:443/parachain" - ], -} - -async function getAPI(chain) { - if (!api[chain]) { - const provider = new WsProvider(providers[chain]); - api[chain] = ApiPromise.create({ provider }) - } - - await api[chain].isReady - return api[chain] -} - -const fixMapping = { - parallel: { - 101: { geckoId: 'polkadot', decimals: 10, }, - 108: { geckoId: 'acala', decimals: 12, }, - // 104: { geckoId: 'acala-dollar', decimals: 12, }, - 114: { geckoId: 'moonbeam', decimals: 18, }, - }, - heiko: { - 113: { geckoId: 'moonriver', decimals: 18, }, - 100: { geckoId: 'kusama', decimals: 12, }, - // 103: { geckoId: 'acala-dollar', decimals: 12, }, - 102: { geckoId: 'tether', decimals: 6, }, - 107: { geckoId: 'karura', decimals: 12, }, - 119: { geckoId: 'kintsugi', decimals: 12, }, - 121: { geckoId: 'kintsugi-btc', decimals: 8, }, - 123: { geckoId: 'genshiro', decimals: 9, }, - - } -} - -async function getTokenPrices({ api, chain = '' }) { - if (!['heiko', 'parallel'].includes(chain)) throw new Error('Chain not supported') - - const geckoMapping = fixMapping[chain] - const metadatas = await api.query.assets.metadata.entries(); - const assets = await api.query.assets.asset.entries(); - const nativeAssetId = (await api.consts.currencyAdapter.getNativeCurrencyId).toNumber(); - const allAssets = metadatas.map(([{ args }, metadata]) => { - const [assetId] = args; - const { symbol, decimals } = metadata; - return { - assetId: assetId.toNumber(), - symbol: symbol.toHuman().toString(), - decimals: decimals.toNumber() - }; - }) - allAssets.push({ - assetId: nativeAssetId, - symbol: nativeAssetId === 0 ? 'HKO' : 'PARA', // hard code, cuz rpc is not available in subquery - decimals: 12 - }) - - const totalSupplies = {} - assets.map(([{ args }, asset]) => { - const [assetId] = args; - totalSupplies[assetId] = +asset.toJSON().supply - }) - - const lpTokens = allAssets?.filter(asset => asset.symbol.startsWith('LP-')) || []; - const lpTokenMappings = lpTokens - .map(token => { - const symbols = token.symbol.replace('LP-', '').split(/\/(.*)/s); - const assets = symbols.map(symbol => allAssets.find(asset => asset.symbol === symbol)).slice(0, 2) - return { token, assets } - }) - - const lpTokenPools = (await api.query.amm.pools.multi( - lpTokenMappings.map(mapping => mapping.assets.map(i => i.assetId)) - )).map(i => i.toJSON()) - - const lpTokenPoolsReverse = (await api.query.amm.pools.multi( - lpTokenMappings.map(mapping => mapping.assets.map(i => i.assetId).reverse()) - )).map(i => i.toJSON()) - - const prices = {} - const balances = {} - const coreAssets = Object.keys(geckoMapping) - lpTokenPools.forEach((data, i) => { - let mapping = lpTokenMappings[i] - let lpAssetId = mapping.token.assetId - let baseAsset = mapping.assets[0].assetId - let quoteAsset = mapping.assets[1].assetId - let baseAmount, quoteAmount - - if (data) { - baseAmount = +data.baseAmount - quoteAmount = +data.quoteAmount - } else { - quoteAmount = +lpTokenPoolsReverse[i].baseAmount - baseAmount = +lpTokenPoolsReverse[i].quoteAmount - } - - const coreToken1 = coreAssets.includes('' + baseAsset) - const coreToken2 = coreAssets.includes('' + quoteAsset) - if (coreToken1 && coreToken2) { - prices[lpAssetId] = { ...geckoMapping[baseAsset], price: baseAmount * 2 / totalSupplies[lpAssetId] } - sdk.util.sumSingleBalance(balances, baseAsset, baseAmount) - sdk.util.sumSingleBalance(balances, quoteAsset, quoteAmount) - } else if (coreToken1) { - prices[lpAssetId] = { ...geckoMapping[baseAsset], price: baseAmount * 2 / totalSupplies[lpAssetId] } - prices[quoteAsset] = { ...geckoMapping[baseAsset], price: baseAmount / quoteAmount } - sdk.util.sumSingleBalance(balances, baseAsset, baseAmount * 2) - } else if (coreToken2) { - prices[lpAssetId] = { ...geckoMapping[quoteAsset], price: quoteAmount * 2 / totalSupplies[lpAssetId] } - prices[baseAsset] = { ...geckoMapping[quoteAsset], price: quoteAmount / baseAmount } - sdk.util.sumSingleBalance(balances, quoteAsset, quoteAmount * 2) - } else { - sdk.util.sumSingleBalance(balances, baseAsset, baseAmount) - sdk.util.sumSingleBalance(balances, quoteAsset, quoteAmount) - } - }) - - function updateBalances(balances) { - Object.keys(balances).forEach(token => { - if (geckoMapping && geckoMapping[token]) { - const { decimals, geckoId, } = geckoMapping[token] - sdk.util.sumSingleBalance(balances, geckoId, balances[token] / 10 ** decimals) - delete balances[token] - return; - } - - if (!prices[token]) return; - const { geckoId, decimals, price } = prices[token] - sdk.util.sumSingleBalance(balances, geckoId, price * balances[token] / (10 ** decimals)) - delete balances[token] - }) - return balances - } - - updateBalances(balances) - - return { - updateBalances, balances, prices, - } -} - - -async function addTokenBalance({ balances, amount, chain, tokenArg, api, wallet, }) { - const coreAssets = getCoreAssets(chain) - const getTokenName = tokenJson => { - tokenJson = tokenJson.toJSON() - if (tokenJson.token && coreAssets.includes(tokenJson.token.toLowerCase())) return tokenJson.token - return chain + ':' + JSON.stringify(tokenJson).replace(/(\{|\}|\s|")/g, '') - } - sdk.util.sumSingleBalance(balances, getTokenName(tokenArg), amount) -} - -module.exports = { - getAPI, - getTokenPrices, - addTokenBalance, -} diff --git a/projects/helper/acala/dex.js b/projects/helper/acala/dex.js deleted file mode 100644 index 6a422b62983..00000000000 --- a/projects/helper/acala/dex.js +++ /dev/null @@ -1,33 +0,0 @@ - -const { getAPI, } = require('./api') -const { transformDexBalances } = require('../portedTokens') -const { getCoreAssets } = require('../tokenMapping') - - -async function dex(chain) { - const api = await getAPI(chain) - const data = await api.query.dex.liquidityPool.entries(); - - const coreAssets = getCoreAssets(chain) - const dexData = [] - - const getTokenName = tokenJson => { - tokenJson = tokenJson.toJSON() - if (tokenJson.token && coreAssets.includes(tokenJson.token.toLowerCase())) return tokenJson.token - return chain + ':' + JSON.stringify(tokenJson).replace(/(\{|\}|\s|")/g, '') - } - data.forEach(([token, amount]) => { - dexData.push({ - token0: getTokenName(token.args[0][0]), - token0Bal: +amount[0], - token1: getTokenName(token.args[0][1]), - token1Bal: +amount[1], - }) - }) - - return transformDexBalances({ chain, data: dexData }) -} - -module.exports = { - dex -} \ No newline at end of file diff --git a/projects/helper/acala/interlay-api.js b/projects/helper/acala/interlay-api.js deleted file mode 100644 index 9dcab28e2e8..00000000000 --- a/projects/helper/acala/interlay-api.js +++ /dev/null @@ -1,82 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); -const sdk = require('@defillama/sdk'); - -const api = {}; - -const providers = { - kintsugi: [ - "wss://api-kusama.interlay.io/parachain", - "wss://kintsugi-rpc.dwellir.com", - ], - interlay: [ - "wss://api.interlay.io/parachain", - "wss://interlay-rpc.dwellir.com", - ], -}; - -async function getAPI(chain) { - if (!api[chain]) { - const provider = new WsProvider(providers[chain]); - const apiOptions = { - provider, - noInitWarn: true, - }; - api[chain] = ApiPromise.create(apiOptions); - } - - await api[chain].isReady; - return api[chain]; -} - -// common tokens/assets used in dex and lending -const ccyMapping = { - kintsugi: { - token: { - KSM: { geckoId: "kusama", decimals: 12 }, - KINT: { geckoId: "kintsugi", decimals: 12 }, - KBTC: { geckoId: "kintsugi-btc", decimals: 8 }, - }, - foreignAsset: { - 3: { ticker: "USDT", geckoId: "tether", decimals: 6 }, - 5: { ticker: "VKSM", geckoId: "voucher-ksm", decimals: 12 }, - }, - }, - interlay: { - token: { - DOT: { geckoId: "polkadot", decimals: 10 }, - INTR: { geckoId: "interlay", decimals: 10 }, - IBTC: { geckoId: "interbtc", decimals: 8 }, - }, - foreignAsset: { - 2: { ticker: "USDT", geckoId: "tether", decimals: 6 }, - 3: { ticker: "VDOT", geckoId: "voucher-dot", decimals: 10 }, - }, - }, -}; - -function addTokenBalance({ balances, atomicAmount, chain, ccyArg }) { - const ccyJson = ccyArg.toJSON(); - - let ccy; - if (ccyJson.token) { - ccy = ccyMapping[chain].token[ccyJson.token]; - } - - if (ccyJson.foreignAsset) { - ccy = ccyMapping[chain].foreignAsset[ccyJson.foreignAsset]; - } - - if (ccy === undefined) { - sdk.log("Skip token/asset, missing details for: ", ccyArg.toString()); - return; - } - - const amount = atomicAmount / (10 ** ccy.decimals) - - return sdk.util.sumSingleBalance(balances, ccy.geckoId, amount); -} - -module.exports = { - getAPI, - addTokenBalance, -}; \ No newline at end of file diff --git a/projects/helper/acala/lcdot.js b/projects/helper/acala/lcdot.js deleted file mode 100644 index 279e927c008..00000000000 --- a/projects/helper/acala/lcdot.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getAPI } = require('./api') - - -async function staking(chain) { - const api = await getAPI(chain) - const data = await api.query.tokens.totalIssuance( { LiquidCrowdLoan: '13' } ) - - return { - polkadot: data/1e10 - } -} - -module.exports = { - staking, -} \ No newline at end of file diff --git a/projects/helper/acala/lending.js b/projects/helper/acala/lending.js deleted file mode 100644 index 9b087ed6d6f..00000000000 --- a/projects/helper/acala/lending.js +++ /dev/null @@ -1,20 +0,0 @@ -const { transformBalances } = require('../portedTokens'); -const { getAPI, addTokenBalance } = require('./api') - -async function lending(chain){ - const api = await getAPI(chain) - - const data = await api.query.loans.totalPositions.entries(); - const balances = {} - - for (let i = 0; i < data.length; i++) { - const [_token, amount] = data[i]; - addTokenBalance({ balances, chain, tokenArg: _token.args[0], amount: amount.collateral }) - } - - return transformBalances(chain, balances) -} - -module.exports = { - lending -} diff --git a/projects/helper/acala/liquidStaking.js b/projects/helper/acala/liquidStaking.js deleted file mode 100644 index 011916cfbc1..00000000000 --- a/projects/helper/acala/liquidStaking.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getAPI, } = require('./api') - - -const getTotalStaking = async (api) => { - const toBond = await api.query.homa.toBondPool(); - const stakingLedgers = await api.query.homa.stakingLedgers.entries(); - let totalInSubAccount = 0; - - stakingLedgers.map(item => { - const ledge = item[1].unwrapOrDefault(); - totalInSubAccount += +ledge.bonded.unwrap() - }) - - return +toBond + +totalInSubAccount -} - -async function staking(chain) { - const api = await getAPI(chain) - - const total = await getTotalStaking(api) - if (chain === 'acala') - return { - polkadot: +total / 1e10, - } - return { - kusama: +total / 1e12, - } -} - -module.exports = { - staking, - getTotalStaking, -} \ No newline at end of file diff --git a/projects/helper/allium.js b/projects/helper/allium.js deleted file mode 100644 index f9f89ae79e2..00000000000 --- a/projects/helper/allium.js +++ /dev/null @@ -1,107 +0,0 @@ -require('dotenv').config() -const axios = require("axios"); -const pLimit = require("p-limit"); -const { getEnv } = require('./env'); - -// Lightweight retry function to replace async-retry -const retry = async (fn, options = {}) => { - const { retries = 3, minTimeout = 1000, maxTimeout = 10000, randomize = false } = options; - - for (let attempt = 0; attempt <= retries; attempt++) { - try { - return await fn((error) => { - throw error; // bail function - immediately throw the error - }); - } catch (error) { - if (attempt === retries) { - throw error; - } - - // Calculate delay with exponential backoff and optional randomization - let delay = Math.min(minTimeout * Math.pow(2, attempt), maxTimeout); - if (randomize) { - delay = delay * (0.5 + Math.random() * 0.5); - } - - await new Promise(resolve => setTimeout(resolve, delay)); - } - } -}; - -const _rateLimited = pLimit(3) -const rateLimited = (fn) => (...args) => _rateLimited(() => fn(...args)) - -const token = {} - -const HEADERS = () => ({ - "Content-Type": "application/json", - "X-API-KEY": getEnv('ALLIUM_API_KEY'), -}) - -async function startAlliumQuery(sqlQuery) { - const query = await axios.post(`https://api.allium.so/api/v1/explorer/queries/phBjLzIZ8uUIDlp0dD3N/run-async`, { - parameters: { - fullQuery: sqlQuery - } - }, { - headers: HEADERS() - }) - - return query.data["run_id"] -} - -async function retrieveAlliumResults(queryId) { - const results = await axios.get(`https://api.allium.so/api/v1/explorer/query-runs/${queryId}/results?f=json`, { - headers: HEADERS() - }) - return results.data.data -} - -async function _queryAllium(sqlQuery) { - const _response = retry( - async (bail) => { - if (!token[sqlQuery]) { - try { - token[sqlQuery] = await startAlliumQuery(sqlQuery); - } catch (e) { - console.log("query run-async", e); - throw e - } - } - - if (!token[sqlQuery]) { - throw new Error("Couldn't get a token from allium") - } - - const statusReq = await axios.get(`https://api.allium.so/api/v1/explorer/query-runs/${token[sqlQuery]}/status`, { - headers: HEADERS() - }) - - const status = statusReq.data - if (status === "success") { - return retrieveAlliumResults(token[sqlQuery]) - } else if (status === "failed") { - console.log(`Query ${sqlQuery} failed`, statusReq.data) - bail(new Error(`Query ${sqlQuery} failed, error ${JSON.stringify(statusReq.data)}`)) - return; - } - throw new Error("Still running") - }, - { - retries: 15, - maxTimeout: 1000 * 60 * 2, // 2 minutes - minTimeout: 1000 * 10, // 10 seconds - randomize: true, - } - ); - - return await _response -} - -const queryAllium = rateLimited(_queryAllium); - -module.exports = { - queryAllium, - startAlliumQuery, - retrieveAlliumResults -} \ No newline at end of file diff --git a/projects/helper/atv-helper.js b/projects/helper/atv-helper.js deleted file mode 100644 index 1ec7d25e1a7..00000000000 --- a/projects/helper/atv-helper.js +++ /dev/null @@ -1,343 +0,0 @@ -const { sumTokens2 } = require('./unwrapLPs'); - -/** - * Calculate cumulative TVL for multiple vaults with fallback strategy - * @param {Object} api - DefiLlama API object - * @param {Array} vaultConfigs - Array of vault configuration objects - * @returns {Object} Balances object - */ -async function getAtvCumulativeTvl(api, vaultConfigs) { - const tokensAndOwners = []; - - for (const config of vaultConfigs) { - const { address: vaultAddress, type: vaultType = 'ATV-111', additionalTokens = [] } = config; - const tokens = await getAtvVaultTokens(api, vaultAddress, vaultType, additionalTokens); - - tokens.forEach(token => { - tokensAndOwners.push([token, vaultAddress]); - }); - } - - return sumTokens2({ api, tokensAndOwners }); -} - -/** - * Generic helper for Aarna ATV vault TVL calculation - * Supports both individual vault tracking and cumulative protocol TVL - */ - -/** - * Get tokens held by an ATV vault with different strategies - * @param {Object} api - DefiLlama API object - * @param {string} vaultAddress - Address of the ATV vault - * @param {string} vaultType - Type of vault: 'ATV-802', 'ATV-808', 'ATV-111' - * @param {Array} additionalTokens - Additional hardcoded tokens (for ATV-111) - * @returns {Array} Array of token addresses - */ -async function getAtvVaultTokens(api, vaultAddress, vaultType = 'ATV-111', additionalTokens = []) { - // Always try to get dynamic tokens from vault contract - const [_, inputTokens] = await api.call({ - abi: ATV_ABIS.getInputToken, - target: vaultAddress, - permitFailure: true, - }); - - const uTokens = await api.call({ - abi: ATV_ABIS.getUTokens, - target: vaultAddress, - permitFailure: true, - }); - - // Combine dynamic tokens - const dynamicTokens = [] - .concat(inputTokens || []) - .concat(uTokens || []); - - let allTokens = dynamicTokens; - - // For ATV-111 vaults, add additional hardcoded tokens (compound/aave USDC) - if (vaultType === 'ATV-111') { - allTokens = dynamicTokens.concat(additionalTokens); - } - - // Remove duplicates and filter out null/undefined - const finalTokens = [...new Set(allTokens.filter(Boolean))]; - - // If no dynamic tokens found and vault type doesn't support fallback, return empty - if (finalTokens.length === 0 && vaultType !== 'ATV-111') { - return []; - } - - // For ATV-111, always include additional tokens even if dynamic fetch fails - return vaultType === 'ATV-111' && finalTokens.length === 0 ? additionalTokens : finalTokens; -} - -/** - * Calculate TVL for a single ATV vault with fallback strategy - * @param {Object} api - DefiLlama API object - * @param {string} vaultAddress - Address of the ATV vault - * @param {string} vaultType - Type of vault: 'ATV-802', 'ATV-808', 'ATV-111' - * @param {Array} additionalTokens - Additional tokens for ATV-111 vaults - * @returns {Object} Balances object - */ -async function getAtvVaultTvl(api, vaultAddress, vaultType = 'ATV-111', additionalTokens = []) { - const tokensAndOwners = []; - const tokens = await getAtvVaultTokens(api, vaultAddress, vaultType, additionalTokens); - - tokens.forEach(token => { - tokensAndOwners.push([token, vaultAddress]); - }); - - return sumTokens2({ api, tokensAndOwners }); -} - -/** - * Calculate cumulative TVL across multiple ATV vaults (legacy function) - * @param {Object} api - DefiLlama API object - * @param {Array} vaultAddresses - Array of vault addresses - * @param {Array} fallbackTokens - Fallback tokens if dynamic fetching fails - * @returns {Object} Balances object - */ -async function getAtvCumulativeTvlLegacy(api, vaultAddresses, fallbackTokens = []) { - const tokensAndOwners = []; - - for (const vaultAddress of vaultAddresses) { - const tokens = await getAtvVaultTokens(api, vaultAddress, 'ATV-111', fallbackTokens); - - tokens.forEach(token => { - tokensAndOwners.push([token, vaultAddress]); - }); - } - - return sumTokens2({ api, tokensAndOwners }); -} - -/** - * Generate a complete DeFiLlama export for ATV vaults - * Note: Individual vault breakdowns must be separate projects due to DeFiLlama constraints - * @param {Object} config - Configuration object - * @param {string} config.methodology - Methodology description - * @param {Object} config.vaults - Vault configuration object (can be nested by chain) - * @param {Array|Object} config.fallbackTokens - Fallback tokens (can be array or object by chain) - * @param {Object} config.storageContracts - Storage contracts by chain and vault (optional) - * @param {boolean} config.doublecounted - Whether TVL is double counted - * @returns {Object} DeFiLlama export object - */ -function generateAtvExport(config) { - const { - methodology = 'TVL is calculated as the value of all input and yield-bearing tokens held in ATV vault contracts.', - vaults = {}, - fallbackTokens = [], - storageContracts = {}, - doublecounted = false, - chains = ['ethereum'] - } = config; - - const exportObject = { - doublecounted, - methodology, - }; - - // Add chain-specific exports (only cumulative TVL due to DeFiLlama constraints) - chains.forEach(chain => { - // Handle both old structure (vaults directly) and new structure (vaults.chain) - const chainVaults = vaults[chain] || vaults; - const chainStorageContracts = storageContracts[chain] || {}; - - // Extract vault addresses and create vault configs with proper typing - let vaultConfigs = []; - if (Array.isArray(chainVaults)) { - vaultConfigs = chainVaults.map(vaultAddress => ({ - address: vaultAddress, - type: 'ATV-111', // Default type - additionalTokens: fallbackTokens[chain] || fallbackTokens - })); - } else { - vaultConfigs = Object.entries(chainVaults).map(([vaultKey, vaultData]) => { - const vaultAddress = vaultData.address || vaultData; - return { - address: vaultAddress, - type: vaultKey, // Use the key (e.g., 'ATV-802', 'ATV-808', 'ATV-111') as vault type - additionalTokens: vaultKey === 'ATV-111' ? (fallbackTokens[chain] || fallbackTokens) : [], - storage: chainStorageContracts[vaultKey] - }; - }); - } - - exportObject[chain] = { - // Total cumulative TVL with direct method support - tvl: async (api) => { - // Check if we have storage contracts configured for direct method - const hasStorageContracts = vaultConfigs.some(config => - config.storage && !config.storage.startsWith('STORAGE_ADDRESS') - ); - - if (hasStorageContracts) { - // Use mixed approach: direct where available, fallback otherwise - let totalUsd = 0; - const fallbackVaults = []; - - for (const config of vaultConfigs) { - if (config.storage && !config.storage.startsWith('STORAGE_ADDRESS')) { - const tvlInUsd = await api.call({ - abi: ATV_ABIS.calculatePoolInUsd, - target: config.storage, - params: [config.address], - permitFailure: true, - }); - - if (tvlInUsd) { - totalUsd += Number(tvlInUsd) / 1e18; - } else { - fallbackVaults.push(config); - } - } else { - fallbackVaults.push(config); - } - } - - // Add direct USD value - if (totalUsd > 0) { - api.addUSDValue(totalUsd); - } - - // Process fallback vaults if any - if (fallbackVaults.length > 0) await getAtvCumulativeTvl(api, fallbackVaults); - - - return api.getBalances(); - } else { - // Use fallback method for all vaults - return getAtvCumulativeTvl(api, vaultConfigs); - } - }, - }; - }); - - return exportObject; -} - -/** - * Generate a single vault export for individual vault projects - * @param {Object} config - Configuration object - * @returns {Object} DeFiLlama export object - */ -function generateSingleVaultExport(config) { - const { - methodology = 'TVL is calculated as the value of all input and yield-bearing tokens held in this ATV vault contract.', - vaultAddress, - storageContract = null, - fallbackTokens = [], - vaultType = 'ATV-111', - doublecounted = false, - chain = 'ethereum' - } = config; - - return { - doublecounted, - methodology, - [chain]: { - tvl: async (api) => { - // Check if storage contract is configured and valid - if (storageContract && storageContract !== 'STORAGE_ADDRESS_TO_BE_FILLED') { - // Try direct method first - const tvlInUsd = await api.call({ - abi: ATV_ABIS.calculatePoolInUsd, - target: storageContract, - params: [vaultAddress], - permitFailure: true, - }); - - if (tvlInUsd) { - const usdValue = Number(tvlInUsd) / 1e18; - api.addUSDValue(usdValue); - return api.getBalances(); - } - - // If direct method failed, fall back to token-based method - return await getAtvVaultTvl(api, vaultAddress, vaultType, fallbackTokens); - } else { - // Use fallback token-based method - return await getAtvVaultTvl(api, vaultAddress, vaultType, fallbackTokens); - } - }, - } - }; -} - -/** - * Standard ABI definitions for ATV vaults - */ -const ATV_ABIS = { - getInputToken: 'function getInputToken() view returns (address[], address[])', - getUTokens: 'function getUTokens() view returns (address[])', - // Direct TVL calculation from storage contract - calculatePoolInUsd: 'function calculatePoolInUsd(address afiContract) view returns (uint256)', -}; - -/** - * Calculate TVL directly from storage contract (preferred method) - * @param {Object} api - DefiLlama API object - * @param {string} storageContract - Address of the storage contract - * @param {string} vaultAddress - Address of the ATV vault - * @returns {Object} Balances object with USD value - */ -async function getAtvVaultTvlDirect(api, storageContract, vaultAddress) { - const tvlInUsd = await api.call({ - abi: ATV_ABIS.calculatePoolInUsd, - target: storageContract, - params: [vaultAddress], - permitFailure: true, - }); - - if (!tvlInUsd) { - // Return empty balances if call failed - return api.getBalances(); - } - - // Convert from wei to USD (assuming the contract returns value in wei scale) - // If contract returns direct USD value, remove the division by 1e18 - const usdValue = Number(tvlInUsd) / 1e18; - api.addUSDValue(usdValue); - return api.getBalances(); -} - -/** - * Calculate cumulative TVL for multiple vaults using direct method - * @param {Object} api - DefiLlama API object - * @param {Array} vaultConfigs - Array of {vault, storage} objects - * @returns {Object} Balances object with total USD value - */ -async function getAtvCumulativeTvlDirect(api, vaultConfigs) { - let totalUsd = 0; - - for (const config of vaultConfigs) { - const tvlInUsd = await api.call({ - abi: ATV_ABIS.calculatePoolInUsd, - target: config.storage, - params: [config.vault], - permitFailure: true, - }); - - if (tvlInUsd) { - // Convert from wei to USD (assuming the contract returns value in wei scale) - // If contract returns direct USD value, remove the division by 1e18 - totalUsd += Number(tvlInUsd) / 1e18; - } - } - - api.addUSDValue(totalUsd); - return api.getBalances(); -} - -module.exports = { - getAtvVaultTokens, - getAtvVaultTvl, - getAtvCumulativeTvl, - getAtvCumulativeTvlLegacy, - getAtvVaultTvlDirect, - getAtvCumulativeTvlDirect, - generateAtvExport, - generateSingleVaultExport, - ATV_ABIS, -}; diff --git a/projects/helper/balancer.js b/projects/helper/balancer.js deleted file mode 100644 index b0b1e1308bb..00000000000 --- a/projects/helper/balancer.js +++ /dev/null @@ -1,201 +0,0 @@ -const { sumTokens2 } = require("./unwrapLPs"); -const { getLogs } = require("./cache/getLogs"); -const { cachedGraphQuery } = require("./cache"); - -function onChainTvl( - vault, - fromBlock, - { - blacklistedTokens = [], - preLogTokens = [], - onlyUseExistingCache, - permitFailure, - } = {} -) { - return async (api) => { - let poolRegisteredKey = "PoolRegistered"; - let tokensRegisteredKey = "TokensRegistered"; - - // there is some bug in the cache, this will force reset it - if ( - vault.toLowerCase() === "0xba12222222228d8ba445958a75a0704d566bf2c8" && - api.chain === "xdai" - ) { - poolRegisteredKey = "PoolRegistered-xdai"; - tokensRegisteredKey = "TokensRegistered-xdai"; - } - const logs = await getLogs({ - api, - target: vault, - topics: [ - "0x3c13bc30b8e878c53fd2a36b679409c073afd75950be43d8858768e956fbc20e", - ], - fromBlock, - eventAbi: - "event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, uint8 specialization)", - onlyArgs: true, - extraKey: poolRegisteredKey, - onlyUseExistingCache, - }); - const logs2 = await getLogs({ - api, - target: vault, - topics: [ - "0xf5847d3f2197b16cdcd2098ec95d0905cd1abdaf415f07bb7cef2bba8ac5dec4", - ], - fromBlock, - eventAbi: - "event TokensRegistered(bytes32 indexed poolId, address[] tokens, address[] assetManagers)", - onlyArgs: true, - extraKey: tokensRegisteredKey, - onlyUseExistingCache, - }); - - const tokens = logs2.map((i) => i.tokens).flat(); - tokens.push(...preLogTokens); - const pools = logs.map((i) => i.poolAddress); - blacklistedTokens = [...blacklistedTokens, ...pools]; - - return sumTokens2({ - api, - owner: vault, - tokens, - blacklistedTokens, - permitFailure, - }); - }; -} - -function v3Tvl( - vault, - fromBlock, - { - blacklistedTokens = [], - preLogTokens = [], - onlyUseExistingCache, - permitFailure, - } = {} -) { - return async (api) => { - const regsistedEvents = - "event PoolRegistered(address indexed pool, address indexed factory, (address token, uint8 tokenType, address rateProvider, bool paysYieldFees)[] tokenConfig, uint256 swapFeePercentage, uint32 pauseWindowEndTime, (address pauseManager, address swapFeeManager, address poolCreator) roleAccounts, (bool enableHookAdjustedAmounts, bool shouldCallBeforeInitialize, bool shouldCallAfterInitialize, bool shouldCallComputeDynamicSwapFee, bool shouldCallBeforeSwap, bool shouldCallAfterSwap, bool shouldCallBeforeAddLiquidity, bool shouldCallAfterAddLiquidity, bool shouldCallBeforeRemoveLiquidity, bool shouldCallAfterRemoveLiquidity, address hooksContract) hooksConfig, (bool disableUnbalancedLiquidity, bool enableAddLiquidityCustom, bool enableRemoveLiquidityCustom, bool enableDonation) liquidityManagement)"; - - const logs = await getLogs({ - api, - target: vault, - fromBlock, - eventAbi: regsistedEvents, - onlyArgs: true, - extraKey: "PoolRegistered", - topics: [ - "0xbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad", - ], - onlyUseExistingCache, - permitFailure, - }); - - const pools = logs.map((i) => i.pool); - - const getPoolTokenInfoAbi = - "function getPoolTokenInfo(address pool) view returns (address[] tokens, (address token, uint8 tokenType, address rateProvider, bool paysYieldFees)[] tokenInfo, uint256[] balancesRaw, uint256[] lastLiveBalances)"; - - try { - const res = await api.multiCall({ - target: vault, - abi: getPoolTokenInfoAbi, - calls: pools.map((pool) => ({ params: [pool] })), - permitFailure: true, - }); - - const tokenBalances = []; - for (const r of res) { - if (!r || !Array.isArray(r.tokens)) continue; - r.tokens.forEach((t, i) => { - const bal = r.balancesRaw?.[i]; - if (bal != null) tokenBalances.push([t, bal]); - }); - } - - if (!tokenBalances.length) throw new Error("null value of tokens"); - - const blSet = new Set([...blacklistedTokens, ...pools].map((s) => s.toLowerCase())); - // eslint-disable-next-line no-const-assign - tokenBalances = tokenBalances.filter(([t]) => !blSet.has(String(t).toLowerCase())); - - await api.addTokens(tokenBalances); - - return api.getBalances(); - } catch { - const tokens = [ - ...logs.map((i) => i.tokenConfig.map((i) => i.token)).flat(), - ...preLogTokens, - ]; - - blacklistedTokens = [...blacklistedTokens, ...pools].map((i) => - i.toLowerCase() - ); - return api.sumTokens({ owner: vault, tokens, blacklistedTokens }); - } - }; -} - - function v1Tvl(bPoolFactory, fromBlock, { blacklistedTokens = [] } = {}) { - return async (api) => { - let poolLogs = await getLogs({ - target: bPoolFactory, - topic: "LOG_NEW_POOL(address,address)", - fromBlock, - api, - eventAbi: - "event LOG_NEW_POOL (address indexed caller, address indexed pool)", - onlyArgs: true, - }); - - const pools = poolLogs.map((i) => i.pool); - const tokens = await api.multiCall({ - abi: "address[]:getCurrentTokens", - calls: pools, - }); - const ownerTokens = tokens.map((v, i) => [v, pools[i]]); - return sumTokens2({ - api, - ownerTokens, - blacklistedTokens: [...blacklistedTokens, ...pools], - }); - }; - } - -function balV2GraphExport({ - vault, - blacklistedTokens = [], - graphURL, - name, - permitFailure, -}) { - return async (api) => { - if (!graphURL) { - throw new Error("graphURL is required"); - } - if (!name) { - throw new Error("name is required (it is used as id for caching)"); - } - const query = `{ tokens(first: 1000) { address } }`; - const tokens = (await cachedGraphQuery(name, graphURL, query)).tokens.map( - (t) => t.address - ); - return sumTokens2({ - api, - owner: vault, - tokens, - blacklistedTokens, - permitFailure, - }); - }; -} - -module.exports = { - onChainTvl, - v1Tvl, - balV2GraphExport, - v3Tvl, -}; diff --git a/projects/helper/balances.js b/projects/helper/balances.js deleted file mode 100644 index 3e51e086769..00000000000 --- a/projects/helper/balances.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('./coreAssets.json') -const BigNumber = require("bignumber.js"); - -const usdtAddress = ADDRESSES.ethereum.USDT; - -const toUSDT = (value, times = 1e6) => BigNumber(value).times(times).toFixed(0); - -const toUSDTBalances = (value, times = 1e6) => ({ - [usdtAddress]: toUSDT(value, times), -}); - -module.exports = { - toUSDT, - toUSDTBalances, - usdtAddress, -}; diff --git a/projects/helper/bitcoin-book/21Co.js b/projects/helper/bitcoin-book/21Co.js deleted file mode 100644 index f5c4e25efb8..00000000000 --- a/projects/helper/bitcoin-book/21Co.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - '1HTGi4tfXSEtcXD4pk6S3vBs3s64hWY1pW', - '12WZhMFFLHQ4rCMSkeBfbJXRk7aGWyBh1M' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/ainn-layer2.js b/projects/helper/bitcoin-book/ainn-layer2.js deleted file mode 100644 index adcec5f7ec0..00000000000 --- a/projects/helper/bitcoin-book/ainn-layer2.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = [ - "bc1q6dtp7ayaj5k2zv0z5ayhkdsvmtvdqgyaa9zs53", - "3H8cmLndtkBs7kiHByhHAddTzy8taUwYPt", - "bc1pepsapf26n8y2f4uftlmhy60ksghx6rqlxdcj4uacfqrkcg6pmncs52rzuu", - "bc1qu4ru2sph5jatscx5xuf0ttka36yvuql7hl5h4c", - "1JA46eiDpfx589wawn5RvtEXgwc518QfhZ", - "bc1qaajdlp5yrj5f77wq2ndtfqnmsamvvxhpy95662zkzykn9qhvdgys580hcs", - "368vZZKUWDFZRLWMFNRJzHo1HnibNeAJir", - "33hE9Wq65kjbiLsGD1NYwwNatP6hbsZv5H", - "32GU8Jux7SbsEbaAaLUnEQmc6JemLF6BUb", - "3CP5WJ2JSLCew7SETWUe5FxpBGrekMBiwk", - "39Fvw2Ho1fEkyDsos5sNTN5iMJZKzTL526", - "3Kptt4TZZRcjuGH8ikoQ8mV1TVxq45dnuS", - "3G4sMXWAAVTvTXTksr8u9zuu7W8RKsicEz", - "335DRGzLLG2tu4H4PnFBHYAwcj5pvV8zei", - "bc1qqg3cdyadq25zn99sdprr4lgpsxg2za998eygy8", - "bc1qw4vp94e9egkaxc04qsu5z9aq5pqpku2p6pzer8", - "bc1q3q7afjarz7l6v49538qs2prffhtawf38ss85k8", - "bc1q3smt9ut40eld6tgn42sdlp9yrx98s90unqw3pl" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/allo.js b/projects/helper/bitcoin-book/allo.js deleted file mode 100644 index b8d3311f0b9..00000000000 --- a/projects/helper/bitcoin-book/allo.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = [ - "bc1pn87rjuhzl3sr9tffhgx3nrrq7rhyxg7y58dl0uk5kyhmkfj26ssqz76lfc", - "bc1pu64y7m8hdekc5h4xtdl8ru9g3ct5n6mghmaqs8qtqecznccvy38s8tvdv4", - "bc1pjgn7m39vu02el3xpk2rtgt5kww8g5tkhmc55zevjld4n6cc9tuyq6akrq0", - "bc1pn29hejmt2mrslsa0ttfknp268qrpsmc7wqmw4ddxqytctzjl50ws2yrpmt", - "bc1pkpddzz2px40f803qug3l28c7d99qvvjkccgzj7tc80xx29pkd2vq3lqrg3", - "bc1p23su0d2sxwg95c7ny0p5vn4vf83jmvhyzacw3srjv84hmvynkacqe52r9d", - "bc1pn6rqr5z8yu5z9qphs0ccmcnt2c8ye04e3f2590rdxsd2mga0harq9k4207" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/arkham-exchange.js b/projects/helper/bitcoin-book/arkham-exchange.js deleted file mode 100644 index 334cc7e1919..00000000000 --- a/projects/helper/bitcoin-book/arkham-exchange.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - 'bc1qlnkyrrupehgw5evu43erlgkhhagv0uj3yyhacvc65n3ud6qeas0sa958ps' -] diff --git a/projects/helper/bitcoin-book/avalanche-btc.js b/projects/helper/bitcoin-book/avalanche-btc.js deleted file mode 100644 index ac1edf073ea..00000000000 --- a/projects/helper/bitcoin-book/avalanche-btc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - 'bc1q2f0tczgrukdxjrhhadpft2fehzpcrwrz549u90', // https://prnt.sc/unrBvLvw3z1t -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/avalon-cedefi.js b/projects/helper/bitcoin-book/avalon-cedefi.js deleted file mode 100644 index 5786a599fc8..00000000000 --- a/projects/helper/bitcoin-book/avalon-cedefi.js +++ /dev/null @@ -1,4 +0,0 @@ -// Avalon CeDefi Bitcoin addresses -// Note: Bitcoin TVL tracking is currently disabled in avalon-finance-cedefi adapter -// Previous addresses were FBTC reserves already tracked by the fbtc adapter -module.exports = [] diff --git a/projects/helper/bitcoin-book/backpack.js b/projects/helper/bitcoin-book/backpack.js deleted file mode 100644 index 9684134be09..00000000000 --- a/projects/helper/bitcoin-book/backpack.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - "bc1pmrsvpcv8k5m5ts5js4jl0z30wndv2j90f3gm08et0xueftpwhxesjzfyea", - "bc1qhv0g0jmt9pp578hkx4w8vus62sgwuc22z0vjpftgcf34533h2dwsrxmxds", - "bc1q0gw7fexuwthyf9wwzrjn4h0flj5veflwgzdxx0727gt9upfk0cfqfjv42k", - "bc1qfpk3fj2u9kaw8qq96snm72dws5hyxxym5tf8tn", - - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bevm.js b/projects/helper/bitcoin-book/bevm.js deleted file mode 100644 index 35666effefa..00000000000 --- a/projects/helper/bitcoin-book/bevm.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - "bc1p43kqxnf7yxcz5gacmqu98cr2r5gndtauzrwpypdzmsgp7n3lssgs5wruvy", - "bc1p2s98z85m7dwc7agceh58j54le0nedmqwxvuuj4ex4mwpsv52pjxqkczev9", -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/biconomy-cex.js b/projects/helper/bitcoin-book/biconomy-cex.js deleted file mode 100644 index ac3d3c548cf..00000000000 --- a/projects/helper/bitcoin-book/biconomy-cex.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1qx70fn2550vhjetc748wmg4lzv5gy7t56ns92v8" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bigone.js b/projects/helper/bitcoin-book/bigone.js deleted file mode 100644 index 1c05303a86b..00000000000 --- a/projects/helper/bitcoin-book/bigone.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - 'bc1qu02z43yduyjx6saeea4l54qqulvz568qnzgaes', - '1L5D4Eq2RkEKuN717Gc817MH1Sxs5WwMQh' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bima-cdp.js b/projects/helper/bitcoin-book/bima-cdp.js deleted file mode 100644 index 7eaabdd3ce5..00000000000 --- a/projects/helper/bitcoin-book/bima-cdp.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1q8q5ngue8697flt8yc52xrfppecf47jghhlvq8v96ukeaqz694y7q2tzca9" - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/binance-btc.js b/projects/helper/bitcoin-book/binance-btc.js deleted file mode 100644 index ee46fb4aa6f..00000000000 --- a/projects/helper/bitcoin-book/binance-btc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - '3LYJfcfHPXYJreMsASk2jkn69LWEYKzexb' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/binance.js b/projects/helper/bitcoin-book/binance.js deleted file mode 100644 index f16d1fd9821..00000000000 --- a/projects/helper/bitcoin-book/binance.js +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = [ - '1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw', - '1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7', - '32bhzEniykYRFADVaRM5PYswsjC23cxtes', - '34GUzCVLbdkMQ2UdVTaA4nxPwoovVS7y2J', - '34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP', - '34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo', - '36zSLdRv1jyewjaC12fqK5fptn7PqewunL', - '38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn', - '38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE', - '395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ', - '39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v', - '3AQ8bAh88TQU7JV1H3ovXrwsuV6s3zYZuN', - '3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry', - '3CySuFKbBS29M7rE5iJakZRNqb3msMeFoN', - '3E97AjYaCq9QYnfFMtBCYiCEsN956Rvpj2', - '3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B', - '3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA', - '3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ', - '3JJmF63ifcamPLiAmLgG96RA599yNtY3EQ', - '3JqPhvKkAPcFB3oLELBT7z2tQdjpnxuDi9', - '3Jy7A2rThtU9xm4o8gR3a9pvQuxXnRNuNF', - '3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a', - '3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH', - '3LtrsjtyLsHoG8WQMe2RFw3de4pLTQZNcY', - '3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6', - '3Me9QACjioepv2L2oKTC9QQ87NH6vFe1Zj', - '3NPL82eaehTFh4r3StpHqVQBTnZJFaGsyy', - '3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa', - '3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb', - '3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA', - 'bc1qdtmav38lca8yu3rrcknnqx5242cckgxqws7m72', - 'bc1q32lyrhp9zpww22phqjwwmelta0c8a5q990ghs6', - 'bc1q78ufzeu8w8fwvxuphrdlg446xhyptf28fkatu5', - 'bc1q7t9fxfaakmtk8pj7tdxjvwsng6y9x76czuaf5h', - 'bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h', - // added on the 27/08/2024 - '3PXBET2GrTwCamkeDzKCx8DeGDyrbuGKoc', - '3QK5vQ9hucSg8ZC8Vizq83qEWeHFLAWMud', - '3F3HXxeNpmAovCMByiwC6MYHcogZCJtgRt', - '32BgTv3NSYbMsBTwDbNNN2GKZPCTJSkqDv', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bing-cex.js b/projects/helper/bitcoin-book/bing-cex.js deleted file mode 100644 index 781b29484ca..00000000000 --- a/projects/helper/bitcoin-book/bing-cex.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = [ - 'bc1qr8e6kmev99jxnk7hpyhex434t59ke5tpvmnyd3', - 'bc1qzzn5tszxn3ha87xfke540k8pr4favsk9cusakq', - 'bc1q302u45q2hqafhdaehkkzqkf0l0vkz5l7exx307', - 'bc1q3h8dk28faa94e9gmw4p0lvywqkw2sazyt3pl05', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitfinex.js b/projects/helper/bitcoin-book/bitfinex.js deleted file mode 100644 index 34cc9d09cbe..00000000000 --- a/projects/helper/bitcoin-book/bitfinex.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - '1Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g', // BTC hot wallet - '3JZq4atUahhuA9rLhXLMhhTo133J9rF97j', // BTC cold wallet - 'bc1qgdjqv0av3q56jvd82tkdjpy7gdp9ut8tlqmgrpmv24sq90ecnvqqjwvw97', // BTC cold wallet -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitget-bgBTC.js b/projects/helper/bitcoin-book/bitget-bgBTC.js deleted file mode 100644 index 678c6b384fc..00000000000 --- a/projects/helper/bitcoin-book/bitget-bgBTC.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - 'bc1pvwjkr0724ckucdvrtxjzml9ka7jnzzjaejvwfnn8a2avvpnljthseg2a0e', - 'bc1pxw4gtelg3lkmatdjmjxsp2kx22t44wyk0snkszhvw4prpygz8ajqaw03fs' - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitget.js b/projects/helper/bitcoin-book/bitget.js deleted file mode 100644 index 2a348415732..00000000000 --- a/projects/helper/bitcoin-book/bitget.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = [ - '1FWQiwK27EnGXb6BiBMRLJvunJQZZPMcGd', - '1GDn5X4R5vjdSvFPrq1MJubXFkMHVcFJZv', - '3GbdoiTnQrJYatcr2nhq7MYASSCWEKmN6L', - '3HcSp9sR23w6MxeRrLqqyDzLqThtSMaypQ', - '3MdofQ2ouxom9MzC9kKazGUShoL5R3cVLG', - '3Jxc4zsvEruEVAFpvwj818TfZXq5y2DLyF', //add on 12/01/2024 - '3KUwtHc5UhWQ76z6WrZRQHHVTZMuUWiZcU', // add on 27/05/2024 - '3H6JnFoz5jcoATKQ83BuQ3cUUCHswqfgtG', // add on 27/05/2024 - '3AZHcgLnJL5C5xKo33mspyHpQX7x4H5bBw', // add on 27/05/2024 - '3DSST4myyyRbiGzgCBE1RVHY7GRjDCh4n9', // add on 27/05/2024 - '3Nu84pbqfcfaFztQ74qc9ni2PH5HGM1bzS', // add on 27/05/2024 - '34hatYbZ27CLLoZWhuJHzBgoTCwXEv8GwT', // add on 27/05/2024 - '3Gm1h16ov9cH4o4mChapGUai61K1bAXL3c', - '1PX5L73e5325fdrSwDHNTuq8RMM9JKR34q', - '1PPyiSbdQeo83ezje6Yv8L3UWpDcx4NtSB', - '1NZc5p5YQ21tGjVrurzczq56SVq2tiH6dt' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitkub-cex.js b/projects/helper/bitcoin-book/bitkub-cex.js deleted file mode 100644 index 860ee4efe5d..00000000000 --- a/projects/helper/bitcoin-book/bitkub-cex.js +++ /dev/null @@ -1,37 +0,0 @@ -module.exports = [ - "15ZAumgvBkRBpBkvuB699FszE8KW7sUqof", - "3JgjA1xMGhjfwuS2RK7zomuesTbCt4bLyE", - "3Q4Yt1QPe3hfyHok78PCowKd5rJG1hUvjH", - "36u1EMxV4NGMwEoS6WLSHHqww7kM2AGfVR", - "bc1qnh70mytjrnykrlufhz4tsgc3dfphrgsefwm0zx", - "1VHhZ3vZ2rhrT8a5QCt5Sd23Y5APBk9QU", - "bc1qlsg4ph439lemctx2vx6ydpc5sx8d2trv8ry25u", - "1iqw8qwMDcwkkw7AiEXqsxwQQ4qgmRpoP", - "bc1qxj30n45488xf7jc8lrx0val5d36ty7dql495j8", - "12ken5PwHeA6YnD3272S1beaSdGN46cEBh", - "bc1q85sqvgccu9d26mfw8j50y6evmyund0d7sg7rc89csyu3uh0c7f6s5g30nw", - "3AavzRkkbhtQjFJ3CLwA3FPoazxsFZM5go", - "bc1que2ellarxvz4f9pa88f6etejvj9mtsmlse22k8nzygnht6h4tlvqtpk9lf", - "33PkD3DjT6YYao2NbAS7bqFRy6nCTdGXBf", - "18DDXRwzkWvjg87P4fk9CB5k3AC25kxBsU", - "bc1qx8mpvyhk098tnvxe67nj6tc5tf89vurxe6zluf", - "bc1q6tzshzl2f70xmrppxt565prggw897l2nx83ddpts8uqr0m3f2u4q0md0ul", - "32tgDscLHVDZ8xXjnC3QF85qYqat7SXRVN", - "bc1qmclnshk905yfhdfdnzvvzvcpdtxp88dk0mh4vw406dvcq8wjf99qazjm7n", - "bc1q5czmcet3mmkrqy3kmjl90w7dsh284gz9w2pyuzk4lhdzgf0y668sdwcyes", - "bc1q0yqgck69v4d0qf6zzrz49s8ndg9svwdjxua90afe93hkfaud3y4sqeae3c", - "bc1ql55wwe27lgus6yhjkjnuc3dapyzd0vl9349qew3kv4ngl3ne2gvq04td8x", - "3KVbHg9kPNnxrpTJ1CZkfqFsKQM5MWTTyM", - "bc1qc4q0xpeyc6fn77y4nk9hvgg5ulu8akgrswkdpa677vttl4mrrj6sv7qznw", - "bc1q8k3gnwzmplcdhhph2lxg94d8f3ny9fzdwu9ng8qfzplz4q06pg3sysqd3s", - "bc1qgyuw6rmhx6zykg3hnexgzuvkjy0lkwqjmx8m3vwrwql6v7qarpaqsxefkt", - "bc1q3923w0z09hw0kj5nnreu53ckx8jwm09kjd7uz2uqrggrhne54l0su7tml6", - "bc1ql2p9u59z2latfrf50uf33s2zh4xyp088pe4phf5p2ha0mtanxkrsl0xtae", - "bc1qzvuccq7d7z48y5990ecvxwnkwfwvdwxwjx7lg2", - "bc1q809j4zgpppx906gyk5mx7n499u7dsx3q7hmaydx4ze8pjxed0jyq32ehqj", - "bc1q8j67stj9mfse4rxmmjcy2tg44qkayqjkwwyx2yk05va5eradtftqqj4pex", - "bc1q275ytzvet94dc8szxh3pqhrnmcyn9mdsyhx93me3mxfpapwjqu4q9tl9fn", - "bc1qgdy96rwdv4x8t0plptv7756x4hlxgmra6g9nl38k2yk4k6dd766q9kc9lf", - "bc1qjpt89yyna4w9pu0l2zyv7zl0fzv7ghx6u7u2mchmg6wtyq8vdsmqdjdlu2", - "bc1q3uemzcassz2jxswh37wd0jw2l38v7yuq60cj46ftgmkpcs38xh0svv4gq9" -]; diff --git a/projects/helper/bitcoin-book/bitlayer-bridge.js b/projects/helper/bitcoin-book/bitlayer-bridge.js deleted file mode 100644 index d8b58e52923..00000000000 --- a/projects/helper/bitcoin-book/bitlayer-bridge.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = [ - "132Cka5Vdw9FcFX3eb28xikKAMvhuMJGwi", - "bc1p87c2auxxj372evzhd5f5huddtrladtkn3z4p94ew32qvwcsgujestjj45r", - "bc1puqn6dw6etk6yg8zruvf2s94cmhxkfncsaumwhtfhu5qy3e6m94sq37eq66", - "bc1pvnh3zy48ml3nhzhqrtc7endhj9rrtrv5puy2775p3jwka8y99aqsz78uu2", - "bc1pxpp82hc4t4flkyqtjdnzr3q72qh9st78gfge50vzlrjtp9c6yn4s5zq5vk", - "bc1p7agkadaau66jtva9n8k5pg3lsctuyqur8a2l5y9hzwqkh5nlmd0skuhws3", - "bc1q6are922g2ltnmdll0mesrmdzn5w2xguu7czred", - "bc1qcpw6j7j72peplt0j34cd8uu5a886t6kkm57zgn", - "bc1p4yc7cs24v5z5fxxdlj50zke0f3jwnngklswrpfcea9r3egmsmc6qvxjwpu" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitmake.js b/projects/helper/bitcoin-book/bitmake.js deleted file mode 100644 index 9e7ad5a81fd..00000000000 --- a/projects/helper/bitcoin-book/bitmake.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - // wallet provide by a bitmake team - "3F12ncAyx4VkfpvnS7ZxdpggFx4p9RKfVe" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitmark.js b/projects/helper/bitcoin-book/bitmark.js deleted file mode 100644 index fe27815ffb6..00000000000 --- a/projects/helper/bitcoin-book/bitmark.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "37RJkdkzPXCMYSTq74berJYj9FmNn7wFP5" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitmex.js b/projects/helper/bitcoin-book/bitmex.js deleted file mode 100644 index 373032a01e7..00000000000 --- a/projects/helper/bitcoin-book/bitmex.js +++ /dev/null @@ -1,221 +0,0 @@ -module.exports = [ - "3BMEXqGpG4FxBA1KWhRFufXfSTRgzfDBhJ", - "3BMEXxSMT2b2kvsnC4Q35d2kKJZ4u9bSLh", - "3BMEXfK7c3STqJjYmy2VQTGtzD3QAXNz3T", - "3BMEXiuRhJpLMfKh64G6M9orH9tWvn2H3o", - "3BMEXN9w646RK9cu9n8BzqD9H2znozaA4P", - "3BMEXXmSdDVTgVh6yZwaU5tBG75tjSfu9n", - "3BMEXwZGidWWMpNj1TfcB5U9UaiUxGpvXR", - "3BMEXoBTq1gvcMdMMBMdufs9KCk7drChow", - "3BMEXNLUsMrq927zDscUueuwWKjjCtrJdz", - "3BMEXUdS3RQdrz5iz9sQEhCpeoeWbQn7Ud", - "3BMEXTSAXi7XUsRZs2NqvnCas5xTt7dunz", - "3BMEXmXRzq5P9y49riiFCAQinjBJDLjBcK", - "3BMEXBYZrEw4aD2CsD7daq9NpXr5NR7UkL", - "3BMEXWsu4CEzbdYocHi7JdkwRrzpn1dFA2", - "3BMEXxk6S7nQ1dvhHgZff4turaac8Pttur", - "3BMEXamEuqXoefJk6Ud9FQhwLDgbV6hWQZ", - "bc1qmexes846z67cac8a93pgp7f9qlr7m0x63mkyvz85fp49dgqmz9xq74dapt", - "3BMEXeFtNdKTxPY361GKqh9bJP7ntULcNC", - "bc1qmexf4f4rfejcj8d9pkrkfyc8yrp9zjys7txqswgxuxrevjhmfgzsmarcsp", - "bc1qmexc6mvxvf09ed3wtsr78ng4ap4hzrejut243hwp5tjjaea34htsyxxsgy", - "3BMEXnNxVoHaHrWcndZaTQknPMWxG2xDyJ", - "3BMEXnt4D5QftorEMiGobquaQwYH1SNTMN", - "3BMEXWUFWK58CCbEpCS7P8BkBbE62QMC8t", - "3BMEX5L5ug17eBFD3iXtYjQQ8TS1CpxMFR", - "bc1qmex8falnm7g4rvpgvdma7htgwjgfm98mj25r88794rk2ll4uasqszp7qmn", - "bc1qmexpudcs3teafyvm0vyydk9k34tw7a6874jz3njzl5p9gy7hxr8s72ym5a", - "bc1qmexdzxht8j3j7xt66fd4kv4yt33qv9jxw468g5dwu8jm7qsl5s0qzy72mu", - "bc1qmex72cmznz8tq0h5ytrw92tz5y2y4dw23fmm6u0csg55eree7cussnx987", - "bc1qmex0207wfx4va9s36vyrx7mzfvz8625wj8kwc3a35ru2wnd4lnws26nv9q", - "3BMEX9tEPAUU34e9xB6xXtWhZ2CKHwbxL4", - "bc1qmexnu46epvpx42gewau66sfencqq42jc0dp7g0hvncwfhe3uuzns0d8wwh", - "3BMEXhQimQ9MyzAPofUsNhjr8paEdm1nUd", - "bc1qmexjqatszu0grvm6ypwzfha70qgu3lm5jhuumz6gjus8tp5jxvks5yeh22", - "3BMEX66GPC9jL3vRjVq2522cU9n39HEAXY", - "3BMEXpqTbaMUWDPMBTVHFvj5JcNgkunij2", - "bc1qmexs039ax3smlfy7gcpv75sksrul5pzye0arhjc3gy9unfnkqh0qu5n8j7", - "3BMEXeHNH5NtxXx6DLjje9bvrsTGh995GN", - "bc1qmex2zagwkus3lvkqes2tafeyh9rkwmzga787lnpah98rlmc5c3qslqq0fu", - "bc1qmexvrw0a8y7ch0k3drhu05xcc4vlxq8wav74kn99qppxldex944q74kc9l", - "3BMEXgvEvKGRRSgox5cUvuqrwbKi7LLfzx", - "3BMEX5jadtCE6fkqRBHueTBQNJMY1djV2y", - "bc1qmex992nvknthg9a3pykmh0xs286y5smqcrndrg7xv3zt39yrwreqv4hy8s", - "bc1qmexqp93tenm3nrkkk7vp7fgadp2r47gn6ensp4evtcjrarxasmjqmfqtlj", - "3BMEXmzhx5wLw9y3EUo31yJhTrdzeaoUVG", - "bc1qmexqgyr2zfw7vzzuftuh9q043mfh4da7rhjc09meuze2jrld5sqsy63684", - "bc1qmexwnyf7ksc5xejeffscsmux7yf20hzt6sjtjns235t6tadnlajqvtyp0h", - "bc1qmex5pr63gjuye9yjpm4krtn2uc5p8vf3gzty3975v9mrkde080dsmck2we", - "bc1qmexcuuhznmeu7jswjqj87hsdytv59fw9gfctkwt2a5stfg4988us65r96f", - "3BMEXFiKphkwJAZJd2BVFUDs6j7RNHT8Rh", - "3BMEXzKBAWqV8LdDHpvULZnPFk4HfQ4JHD", - "3BMEXBbfrJcWGPJwYbtYxwingx5BK61Qob", - "3BMEXNMVjkEad9eHPKJt1fjBb7fh4fGrNq", - "3BMEXY8Wf4Y6V5Cy5L9HHmDG1EBzLc6o1u", - "3BMEXPLQD2LjDuZ8PrDxZstmNp5jzYqRin", - "3BMEXzr7WeUPmhQQEcttF1SpdfZogVTrQm", - "3BMEXHrjRmEGYToeGijpk8xPxV9Uv3R7ZG", - "3BMEXaERPKK7TCk8JN6TYgEJ5bQ61xC7i6", - "bc1qmex88hwycd0wwcgxd50huhj3zjl9d603heugnkladvq9k3n6uwds7rmdxn", - "3BMEX97gY1QiN3Afyjq1wYyW21KEgzpuzY", - "bc1qmexx7dczgfajm0hgwsk5ndkwsln0dhqm8yvve797qsw78a2tm4lq0ajal2", - "3BMEXzoCrvLVa5F8eWpU9HmfmfAEuszfbv", - "3BMEXFwKNBRwask4tHuoVm1RjQagFwifHt", - "3BMEXrJysZ9jShA1CrVpj9cqSdt2X82SV2", - "3BMEXWr6Ycz4pbYMZLw4JdViMdPV4WStwk", - "bc1qmexwrvjsqhsfq3mtthqpn5wvdeumsrsl578v5lat286azdm3uczsg6c4gj", - "3BMEXHremtrcPRBNXENHYd5ZQiD4ZM2o47", - "3BMEXihtCzaoEa9CowD1pyUATLvBTjHq3C", - "3BMEXbEZH1VtMi1evSXoRxbdhYREtVns9v", - "bc1qmexywf3xzxasq8r4yepmggea4mnrehxmxgsrg5evrjrmc3d60l0sdtrxwg", - "3BMEX3K5dxeHvf7UX338JhbMCgxGqboZWg", - "3BMEXZtv6wnDRmhNptLLFKnDRV2tJwpWmQ", - "3BMEXrm8soBkWUEdupryGYkJtvPWVVuCZ3", - "bc1qmexmaeekc3emgqgrg0etu5ncf5n4tepkyn33yu2p2d00y8p9ewvseslk9n", - "bc1qmexdm3enas9y2j2fhyr43264rjeyll7qddzf622scnzzf5ezs4tqk3ckaj", - "3BMEXqkc78VdmDzyR6usPVAJbJ5snBNAjb", - "bc1qmex8s0xqlc3t2c0pm50enusfu7rwtnmt7pp673pwm6pcx537p5dqwpury6", - "3BMEXZX6EPajHjNsrfhhyWcH5tJ1e5Urhz", - "bc1qmexx8cdsty67jc6gferczjtrgfeghlk889emnw2ne6kn929s4e8qc49u04", - "bc1qmex38gkv260tadt56eefes84cwqss4ulchkk45447jw7xdc5af0s9ytg6g", - "bc1qmex95jvpsjlf9w29nj03k6lyfpqd9tajt5crqrjjfupx5kjac7pqr8jy4d", - "3BMEXGVFZYW6cHX5UzUkJZWCkK1GB4xobH", - "3BMEXsoDf2sHdASp6YwtKcN6vg4LNFNGGR", - "3BMEXFJS1RCvU8NbxySPdHnZUhtjwd58eP", - "3BMEXtt8et9fPzDuM62f4S3YRjgK5pAsA7", - "bc1qmexccpssvxu94lzksgkch2djmyflg3p8fqh9j6pj9kzqgpkghxwqpn8tgm", - "3BMEXPZ9b9HScivJYazKK99i9G2Qarigtm", - "3BMEXMD27DFDHcxMjvPhXimKBR7wfJvhMg", - "3BMEXEqEgiUtcoaFdYQpXfMwAEdKZrJAwn", - "3BMEXxwW9DpPPbhjZ1qQQ9uaLVi8jnnhmM", - "3BMEX41534P68S2zRVgAFPFoFM4m5krLNd", - "3BMEXkX6xNE49rQLHwtSgmEGKEYaVPg3Xv", - "3BMEXZUeXF4an2FRZKLbMwbACGYFU7YGGi", - "3BMEXSutghiGieg7TMj1nmM2P1HHP17WEm", - "bc1qmex5qmxfy80ghzz8x0xrvzsk72fx90eu7tjyqttacpwzptjk466qxff09l", - "3BMEXQwuacbqN5wyNL8EN95JBQT5m1CmFB", - "3BMEXZdQ9xm4XscUTNm4KfFJzRFQDTGhBH", - "3BitMEXfty7z8hSEqbcEJc7h26HYJ15iAX", - "3BMEXPgwQdipUV3yjxTgRntNGYRzekeHyf", - "3BMEXjcP3XJEYqyCvLEZt6T5khhzm3ZXBW", - "bc1qmexaqrn7kvfdkn936rf7zupc4tpvtpdf4rvn292ncrtfq7ewxarqpsv60g", - "bc1qmexdv8jpjx0jf5zpe7pux5fzmzkw8fact33xe0m2vqa705azadjqt2fgc9", - "3BMEXYSjgVkkHoQ3ceMpRJAvawZshQKu5f", - "bc1qmexhac7ds5n3zttazplpqsjsynqdqwah7ruvh69emq26qlnuwuuq3gsx04", - "bc1qmexnyrxdvj6kq3l7j9hzknu07v90ly63j4ndea6curxkjx9r3t7se04wxq", - "bc1qmex8rpr0agawfdqpwq7vahj308h0vp3yurkgx0pzag00kfs25v5s5mlasy", - "3BMEXmxGuG6mpaAcxmGuNDSe16BUmj3fbG", - "3BMEXewrdv7yEYhzs82uvzC4ZUNfpo25hv", - "3BMEXF8BG1962vqGWNnZkxdZfTPKuLCJws", - "3BMEXUNVDzvNVsvDYrJDKeMUu5YLNbRHd1", - "bc1qmexnchsjwpzz80f3xrep52g0st0rec5k56mwpze3s9mzvcla0cjsp9z0xd", - "3BMEXx1ahXz25pqKP1pwgVkSW1zk6QDsqa", - "bc1qmexunrn42u8vh9r6n99k0k92hqcjnlpmemaxpmf5vctrsrl0j9lqh6jnsq", - "3BMEXwJHzyiQrGs9rfN1MffRueSVsdFTJv", - "3BMEXSzmSqs6SQVD2P2ko6oK83jhV6hzDG", - "3BMEXHTR2RBDY4JHtQc6sK9Lq686EyzQm8", - "bc1qmexd4xusypmsagfjw9sy2ql6xa0ajn8wtje4rgj997azdhs2xsrq0xsf3e", - "3BMEXLzkyaQ9YZrTMEiLZM5ggnM8LzQoTR", - "bc1qmexawz0u0hn2d6axqu7hxlcq7zmm4lgf0rcenpk3jjt68xjm4u7swerys5", - "3BMEX47o9H6526RykeA1m2XHvBWRvnTRJY", - "3BMEXPSCCN9XukLRfaV7LpFrJ859VFzJWS", - "3BMEXsiaEsoUMDzbtSexC2LTYVMKeYgfVA", - "3BMEXKKVMXvXf7Tk6iUcPcebgpB7s3k6kB", - "3BMEXhPJjwf5S8hf8ugyX8jT7mMPHVaBeH", - "3BMEX2wwpT4arJNGAjM3VmQo3aZRwwQCio", - "3BMEXokv2vPoEKPn7YWEhXoPYyZuzauLXJ", - "bc1qmexlhs66rku4zurr2pme2qm52lea8pvjh62spejdfpkxpyx69qgq9p3eeu", - "3BMEXuvuJhYJEHzPepdSJCDhqH912mcskS", - "3BMEX1xjUV1uCEvADhGZzK4Ebvkpoercqa", - "3BMEXDdPT94Zb9VMrc62uZvyeXbxBcWe5X", - "bc1qmexmv4uu8qatxpsyca32vytaszx3sy5xendryjqpr7300zjuucrsjhjwz7", - "bc1qmex3v4zg3glv625e3qxw7pmrh23mmea2lluvrmn0srr8c4u056es7u888q", - "3BMEXMetRZGuYmwTtKpJ3DHjDzUrAsZUk3", - "bc1qmexqqm522vfxdc40yhp5yf6qha62cluj5mn0p0wgmfxvtjl6wxfszryjqr", - "3BMEXT8hq8ncUYECL2gG6xJRTtdDbvsqJu", - "3BMEX9BjhiEewWbdkWHw2wFPNuiNNDrwak", - "3BMEXyvTUSdP8RPWWADGYxBVhenatbm64y", - "bc1qmexfpl4fl84uafq0p6uu68ycm3d3vd84lxtw58jswkn0xna8lfysw39j46", - "3BMEXQmRHctNB3FQstZhmBPQ9UWgrKqQR7", - "3BMEX29w1YdMFntJgCjQ9CNYDfp9fcRB4D", - "bc1qmexvdrxv9eepfqnsl2s73sulgzqk2ywsyfnp3nmwsttpfxzj95aqrxzran", - "bc1qmexxlarae5vetgcc0thzv3vdm9p6nrg0nt6h2d3rxg9cncdmef7qz5ufee", - "3BMEXSHGPjvSgSrCAwbWN81Jurq59UjaL6", - "bc1qmex0764wf0gvlcsrwsfh68dm3pq4zja077rfgr9s39pf37l3a8ps7vqqyx", - "bc1qmexx5knmj89cxwsk45qvpc56f86w6e9drusgtg6xt89avlyd4vuq7vv7g3", - "3BMEXysBjf2UhmcbYmBDV6P6HWTAzQecun", - "3BMEXQjniAqJAgee6RR9s8x1ueT4kriUhp", - "3BMEXCeiFK3u7LeG7U3Sood2YeMDU79coR", - "3BMEXybyFAZvqD1xyQ3EetsU6M8otLjQM5", - "3BMEXvSN5zVZoFF7xBcsMcRcjcdFhntJTp", - "3BMEXZRX1iEqVmvLGVQNAiaax4eik46VEr", - "bc1qmexssht4v6dcplze48chqcjzpps8fj8mftr5acjuwmkta8q5hd5sxacttr", - "bc1qmex2427lrrr99skyc00fga84zcwnzguyjtkqrve6y8277f20ygnstk8gym", - "3BMEXHNtvtED76KhQyAE8FWAu7KynqpYND", - "3BMEXtSHCtamHesxb3jcqbyjQUmj6S8XNa", - "3BMEXS8pAJndvajxah1qJLUShvJ7iibAQt", - "bc1qmexvvvaftk89syv2wjqkpkzm9f6gk9zu8ttx2jve5fnzdzl353uskr57va", - "3BMEXjTWNUQkUVhVyZUspapELEJBqHKg6y", - "3BMEXodUKPiLhpDXfBcpZt9b9Tdvx3Z5iP", - "3BMEXVNRX854PZZAx3FtPmr5sCYyTZJoXU", - "bc1qmexfzzj8zy36xp0y97talsplk303me9jru5lvdjxekn0uwjy7zgqt3tdw5", - "3BMEXXTRAFpg4frYiCrayB2UQtZ8mQz7X4", - "3BMEXiGG8a7Y3zL28U8tLGpp9DMQbRWddu", - "bc1qmexwa9nhec72la620v4dkhn98rv787wnwvdv4llczwd60f8ltt3s526jev", - "3BMEXPToT7a38Fxi3L9Eok4Ro2gwgmP6MR", - "bc1qmex73wkf8ksakasj3d26xu360r5w0a97vs9pal5atzw7hqe3nsmsfgzzyn", - "bc1qmex6kxxwqj00dd95mkt8twuywq3ymhngz0ve8cfwhwnpg3trh7kqh8205f", - "bc1qmexs4aqkpw47sr4q34wmkz2m52yyafrse8l0lu49ws7psvh92wfq09c6kq", - "3BMEXPPeNGUh7oCWHnC9CJfZhADpGUUsVy", - "3BMEXvPeoWNXLv38zNy9rzAmKKJzJUVjvk", - "3BMEXywDULkZebkmDB3tErytwjfV172BBc", - "3BMEXTqKM74PPnvyX4EEx8TFmn5q3BHytk", - "bc1qmexugrsu5u0ny9zyz78zu3d0w40k23tx8r672ha40x3knczyg9gshc9zec", - "3BMEXxYrTZMsNiAEwVQ42KjdAQWRhxBaLK", - "bc1qmex8qwtdjapzvp3v837xwzzk05vshrd7je9rfh0pfucada3cp9pqh828gk", - "3BMEXLJeRQXrgARNz1Pe4cAi3bzSYp6zrd", - "bc1qmexhgyx74v4jqf8447fw0wst006ag0zg99gu5enrhx9q4qvlnc4q2x9972", - "bc1qmexun0cs4he3rslgxszg6na26h9qd3r52ufnzq5yma4a2l22cqmqnh7hq5", - "bc1qmex4tp33n5asegsw9lyyqw8t58c4uaf7xr2scar3vax6cand4j7qgaa7je", - "3BMEXUjEKSKfHnv6KMooRGwLhKfGE1EBdw", - "bc1qmexmyhh0ty7zqlntnt92julkn2wcru7jylte9qd8gdp6c02m9u9s6s88rp", - "3BMEX8hsTc3qjvfRfcNoCHrSYYVP8EGZ9V", - "3BMEXwZENuNuAwrd8NYo6dgdq3TRv1JfNQ", - "bc1qmex9dplqwgnh7yhr85h7pju477y2yk2jwpm0enjzh8uxvty43qsq960hxq", - "3BMEXe3esVPTWMtPnNmtZmfAuUTnMTG3eo", - "3BMEXnGcZpkRQZDSShGt94zw2mQc3k89mt", - "bc1qmexna6j5lrazkavs8t9kkh3l0pz5ckhapc6f95x4d4n0m7p8f9msrndvwn", - "bc1qmexgj2782tju95ew5md27l49wne0r30dp40mjxu7h4uh28u6skeshpremg", - "3BMEXk65jAh9guBqYuFbt1bApEYaTjzki7", - "bc1qmex6fvpe24n0krqmf3fraqe4mzpqumenayghsffyy7wqmv489z2qe9v3jk", - "bc1qmexld7dhhssgksg5sdvrmp09hefw6muz5vq3h469aur0cunk0pmq7mq0lc", - "bc1qmex2dvr0ke4v590cwu86rdnz8vznsel50rn53td0g4zfwzdll4rq96su8q", - "bc1qmex358v968yl9vch85wepv6hx9w5kahn4psxn9az8fsn5wjk9uyslzef72", - "3BMEXniirhvGm3rfmZo49J1duij8rg3rmJ", - "bc1qmexn9v7f6khuk4evrzz8ku88ka4ynp7c4nz583j36kz5f9ttweysd9sx9l", - "bc1qmexl608k6dz9yk96u94agf4ffnxa8uanrru5wvrnc4fr8k522haqy88zad", - "bc1qmexcxugtjjcqww7ceanv92wtlr3nvlmnprnel2t7zgt00z0l0e4q23ly38", - "3BMEXTwfmZMMeiSWEFXUB3UiAgG7iCTjYp", - "bc1qmexks0mkdue8d6a5w7p4zzf7s2hswezlkvda78m3yezxcvpa0dnqqmlq9y", - "3BMEXQ4GVTwXtrLaZp2xQxsDY8uRi91CFi", - "bc1qmexcy8044y7uzssgfh3jwl97epmm5hp3wzjwmg3p0qhavcwwda0sexaqhv", - "bc1qmex2z9s4cnqytje7l0awzxjzxat3l0qkwse08p62v70x9fle89xsp82h3z", - "bc1qmex3swjvkut8rs2dlk8hhhcg2z4dpeckyxv0my90dz6ntrvcgnvsqcynte", - "3BMEXSiAVEC7G6Jr3akHDkPBrcQ1XnpzuE", - "3BMEXv3oQvm5sVY2Mns5qgLQBDgTFJpzkU", - "3BMEX8p4yVjYmViTxMZus3U42kyd2AtidL", - "3BMEXsjo8EVyL9XhJ9A1wYQLndxo8a2Ng6", - "3BMEXAvvXcQxZkroZxQAf5wWGAB2LCSSdd", - "bc1qmexez8dexhyftnty5yjq8tjgskl7pj9ap57daumfktdamwt0t9uss9lhjd", - "bc1qmexhx7syqshz075rfgeds3vuzklg0qgdwungghsamey52g04970sh84kh9", - "bc1qmex0s3n55gg8zasgmztmkudgv393es605xwgzzupcw9hsela9n6sgypkwq", - "bc1qmex50mhedkh5rewpd3c0ldz6f88c5a4dz7s7u5n4jtpzcvf9vsvqtg3wk6", - "3BMEXk9V2Vbj79A4JgAUo7V8cEhua4QqgE", - "3BMEXXTiTWnEJ9D4FSnjMQyRJQhHB17VGx", - "3BMEXXy7yH5viqjjh7PCAR7WNCPE1F4H3G", - "3BMEXD6G3WMUbMR27DQVLBcmZHMuiKie8d", - "3BMEXKjhrEtLUaBHMbowXuFfyRzo832dU9", - "bc1qmexfaq7ldjgs0pjntlye62dtzc53899sk6lz2v2q2w2nux0u7gwsl4mq8s", - "bc1qchctnvmdva5z9vrpxkkxck64v7nmzdtyxsrq64", - "bc1qk4m9zv5tnxf2pddd565wugsjrkqkfn90aa0wypj2530f4f7tjwrqntpens" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitrue-cex.js b/projects/helper/bitcoin-book/bitrue-cex.js deleted file mode 100644 index 8c35ff36dce..00000000000 --- a/projects/helper/bitcoin-book/bitrue-cex.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "18uhzy546Qz7CxRNkHohg4W9VSkfTkbSvY", - "bc1pty75p9ejqvpzd3e9zg8eq973txu3eqxg2evmx7mm8wxxln72fyfqs2jass", - "bc1pfwf7eszm57uqlnfuctxl688aypzpes2dyc6eekxzwyfytte7xtdsyug6xw" // babylon staked btc by users - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitstable-finance.js b/projects/helper/bitcoin-book/bitstable-finance.js deleted file mode 100644 index 4f62f4b7d6d..00000000000 --- a/projects/helper/bitcoin-book/bitstable-finance.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "bc1p36wvtxursam9cq8zmc9ppvsqf9ulefm7grvlfc4tzc5j83rcggsqh6nxw5", // Native(BTC) - "bc1p0uw83vg0h32v7kypyvjn9nextku2h7axjdeefy2ewstevnqffaksjzhrdf", // BRC20 deposit - "bc1pvngqf24g3hhr5s4ptv472prz576uye8qmagy880ydq5gzpd30pdqtua3rd" // BRC20 farm -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitunix-cex.js b/projects/helper/bitcoin-book/bitunix-cex.js deleted file mode 100644 index f0daa7428e0..00000000000 --- a/projects/helper/bitcoin-book/bitunix-cex.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "bc1qxh9ruwejxz7ztzxejafd74tyxg4sgfeqxun42f", - "bc1qhjfnumgcsqsx6grxa7mfl7rr5g3u8xl4gtt7tr", - "bc1qkvrddql6hh00apslzsxnysl75hhnm5fpqdah37" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bitvenus.js b/projects/helper/bitcoin-book/bitvenus.js deleted file mode 100644 index 60563624c69..00000000000 --- a/projects/helper/bitcoin-book/bitvenus.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - // '3FdoFGYYcD1EU7ekrt2x2u2mFrjmxouMJG', - // '358pjjkYRG8exw2BKZnn7Q9s6SCb7wZEWN', - // '3C1ykoWkHBMZwmY8PUUMVxtJJSBkZBCtN8', - 'bc1qrm2a7u9xyeffvulm6e589qvesmt0v0rjxqfkhv', - 'bc1qvht34dma2uy23l9j862nnqr38a42kjr66e6lec' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/blofin-cex.js b/projects/helper/bitcoin-book/blofin-cex.js deleted file mode 100644 index 7e607e9d184..00000000000 --- a/projects/helper/bitcoin-book/blofin-cex.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = [ - "1Jw4meLNYAaDcNxJwQdMTRVw74hGPcuV8W", - "bc1q6377fdmkvkhgzpw8drgu76jxulsl5wmmgwtrxu", - "1PM8huQVFSirUT7eAwNm3rBBYTsDRzCaf3", - "1LNZ4tzv6FzQ3mUHBkuUqwb232Miu9541h", - "bc1q2kvvk4dfp9g0z5v9cw5ajqnvt78gh4jwfyyn9s", - "18obUe1Br36ZcY8GsPDTrrLSjhURpy5A3M", - "bc1qxgdghfmmmxfsegpda7sw9kdj7h2qq8djgdee8m", - "15Zvb1QArGReWEDc2PTHgaUodAkyRYNnA2", - "bc1qje5d5esrgu03d80k0g4kwjn8kvektlcmvk8gk4", - "1EiHy6dJRR9gbuyjNvTqg76aZtHG1Ao3PK", - "bc1qtssyj8zfs6hzfvr67r86ptl7wykf352md0637r", - "19Q7qteD5pKEGVA5ajoQ2bBRNn1MxiyEYb", -]; diff --git a/projects/helper/bitcoin-book/boringdao.js b/projects/helper/bitcoin-book/boringdao.js deleted file mode 100644 index 0cd7f4217c4..00000000000 --- a/projects/helper/bitcoin-book/boringdao.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - '33ZibwpiZe4bM5pwpAdQNqqs2RthLkpJer' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bsquaredBRC20.js b/projects/helper/bitcoin-book/bsquaredBRC20.js deleted file mode 100644 index 1398765ff1e..00000000000 --- a/projects/helper/bitcoin-book/bsquaredBRC20.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1q97ctqygjgj0ljxgge4q735ujxvlad8smass7f0axc6x3ggffr8xqwn69hc" // Bitcoin Multisig Addresses -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bsquaredBTC.js b/projects/helper/bitcoin-book/bsquaredBTC.js deleted file mode 100644 index 3e0bebbd4b5..00000000000 --- a/projects/helper/bitcoin-book/bsquaredBTC.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = [ - "bc1qva5m5e7da2zm590z03tdnj42u9q2uye3hgrehwrzgg8j4kxq9seq9rvw0m", // Bitcoin Multisig Addresses - "bc1qjv2lfrv672rqagycs5zdsggmury0cz2vufek46jj86ddqynyp2qsxm3qfs", // Bitcoin Multisig Addresses - - // Bitcoin Custodian Addresses - "131fpYjELat58RVzPp2A9Bo8oNuKiP4vxg", - "14UwPgMLZY6rLZRDxxvmNWQ9rMkg2iraHG", - "1Fh3uu6UjtWWrPMEph2kMK1FQ6zor3ovQZ", - "1Eyg5NRf5dTPeFGZ5CPJ5o6v1a3dYpeZsi", - "155FvRapVDRbFYxaxGxJ9eCQjgr7X2yC6g", - "bc1q745ywhqsssknaw8s5ycgkv0gulddnasn4tfsjwgm66tvgp2pqpys0zjzt8", - "bc1q07er4xwsv209cfjsvsl3fjmpvcx462dvpjrjpj", - "3457drt2r5UrEFAST68ywRQwWeMb3XmLyh", - "bc1pg05lsdyzx8j5wastzk0svu84hdrvkel2zfq560a7the5vvjyp27svxwgyx", - "bc1q3ke6xz4smr2hmwuyf9cd5zs975h2y9395th5haf3g0hl6ga9ak9smj8ndw", - "bc1qh6u403822hwm7mhncn2dw8pyaup2mwv4p4j8ckfe9p5zj3wdxyeszpsck8", - "bc1qmvvnxu7739hk9xvgtk4evsx9ycm20ae25gfand", - "3LcCJLivWmaomMyhnyt4pqg8iWi2ECU92T", - "bc1q2rs75dywjdcakvm0r433e8f5r4k3e09jnd0gxl", - "bc1qchv7lyyyvf7v98pqfxk8h0x3w2dd7v6e89c7hk", - "bc1qd459g807zre4r4nelgmvkef5ddxcv5yh04vakt", - "bc1que9dvsgwlm6vr5chrxm2gu586c5alnq3uxa4e2", - "bc1qnp5dfweymkfyl3wzmzqxjyq0ejf2cnpynnfkmr", - "bc1qe0srwsmxx2z0mkksqxx72nsgc9m2lvj4777aq8", - "bc1qsxdn6hwlsezptz5urppq63qchp8lc5pfpv0fa4" -] diff --git a/projects/helper/bitcoin-book/btse.js b/projects/helper/bitcoin-book/btse.js deleted file mode 100644 index f827da29cc5..00000000000 --- a/projects/helper/bitcoin-book/btse.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1qaxyju6n2x2tednv8e7hgnhnz44vrfcmuhjxpfk" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/bybit.js b/projects/helper/bitcoin-book/bybit.js deleted file mode 100644 index 2df32214f8a..00000000000 --- a/projects/helper/bitcoin-book/bybit.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = [ - "bc1q2qqqt87kh33s0er58akh7v9cwjgd83z5smh9rp", - "bc1q9w4g79ndel72lygvwtqzem67z6uqv4yncvqjz3yn8my9swnwflxsutg4cx", - "bc1qjysjfd9t9aspttpjqzv68k0ydpe7pvyd5vlyn37868473lell5tqkz456m", - "1GrwDkr33gT6LuumniYjKEGjTLhsL5kmqC", - "bc1qs5vdqkusz4v7qac8ynx0vt9jrekwuupx2fl5udp9jql3sr03z3gsr2mf0f", - // added on the 15th of july 2024. - "bc1qa2eu6p5rl9255e3xz7fcgm6snn4wl5kdfh7zpt05qp5fad9dmsys0qjg0e", - "16jVbMCcqq1deKrMB3esL2HPso7kvqUsec", - "1A724HfXFFpuUJPMjXwRoGTF9tj29E2aYs", - "1FkhbrtAgP2q7MYjLF8gL4JH3MuzdpwAis", - "1LrsskS2hmLvevKiqASDymS8xRmJ7Gp83u", - "1Ko6Sbu8VgZaQNZMfRgNjR8zVzVN9wL7aX", - "12rFmDggwCNrRL6vuPEjzCDSskTRPjDajP", - "14ug9BVtGnxY8ezvd5cr1PXHeXBYXkpsdw", - "139RYdfv7vNtbnK88juMR3s4pgwvB4db9Y", - "1KHch51TT2eazxYkUXtr38GXtPTjf8Mue", - "bc1qpz86ltanq6042k36rs0yl0wjpd6tgu8fwckan7", - "bc1q7enk8z5gkuzk2sla4vnmzh5qq8jq6wptx0pty5", - "bc1qmv30sf5tnlx52x6vszl0gmey7vae6elzpm2zxw", - "bc1q59nmn5v9tz36talq7g090yue5kf7actqr62f96kakte70eu2948sw6ddxr", - "12XZMdaAGmcHf4ocFSqpd8jFd1WH7RHUPs", - "1DLeNApsHNNzUMNZJVoXeyEY5sdp8vzx3w", -]; diff --git a/projects/helper/bitcoin-book/cake-defi.js b/projects/helper/bitcoin-book/cake-defi.js deleted file mode 100644 index 624456f3928..00000000000 --- a/projects/helper/bitcoin-book/cake-defi.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "3GcSHxkKY8ADMWRam51T1WYxYSb2vH62VL" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/chakra.js b/projects/helper/bitcoin-book/chakra.js deleted file mode 100644 index cb266e59e8f..00000000000 --- a/projects/helper/bitcoin-book/chakra.js +++ /dev/null @@ -1,2227 +0,0 @@ -module.exports = [ - 'bc1pxl0qkdw4a3k9pmuj4nmq4ukx0vjl08trglj8t7cu47yel5zq2sdsyg2wmx', - 'bc1pnftjkef9uzqzzxh67370jd9hwyceq29z77flla46nuxml3ca9k2qt8mdk2', - 'bc1pp9jsp9gd42z0209jenkp60lh5ejgfxgjwxp3tfexcfqu5pcfzw8qsen4x2', - 'bc1pj8mqr8rkufs4lahnplfqsvpwly8d0uy7cfamx8e69xwwnklk2jqqcaradk', - 'bc1przagcuq9w7g82ct60vfkgkugn7pfc99m8254ejl84pajhvd6q0qsn20mcv', - 'bc1p4zq63urdn0kwazluez8ahur6pfrgyztwn2vpjyy8350j8fc9zj7qssxqz3', - 'bc1pj2ft77hjanus5sp5upv20hdv35yajnh8txzct7n2ydg3pd3a6rdqpcn4ug', - 'bc1pp7rtha88ja0fmy200vzml26gztjm96sy0cu8fr5ncquy7g8dv4zqpkl2w9', - 'bc1p7pg8yvkc2qz8d05734lhcm629khel40p3l0x44tuuj0dwgcazzqq30pegg', - 'bc1p7tvenf74kyrnwfn5rhrgky5f8m5dk2hs78m47yxejtn7xjslk80ssxxar3', - 'bc1pqa00um7l0vxe6a082vx6vqtv2zj7e5pmagtr9z7aumgpyha0yces56vyq6', - 'bc1p8ql5x9s4jfcysqrfdy4dz37v27n33rzk84hs2qyvsr4wc0qhg9qshmu6ds', - 'bc1pvyupae6aahseapcpwzudx9ztmcve8ajqeveumvzypjssemzuvczsespanu', - 'bc1pd5w73c9w2cfaktxfytd5lysnk5dasrp6snndrkgzkwah03mmy8ussg5w4f', - 'bc1pa5tnchz4hud3nez59u074l955syk09r6s2s7u6udl9hlc0tydjjqp8gvdf', - 'bc1p9lhx0a6ush7c8f3zvneyvu9cs4a5uhpeah9tu7tpn8qd0r040zsq8dq5x2', - 'bc1psa5w6puzv9tvqssqelu028khjwzqgtmd5hnjxdxssrce2ktjzs4qu3jcpv', - 'bc1pnyzmddgj8u7v9uxhjc0hd0nn2086s34aeq6m8tanljlh6saxcvfqtxmr3k', - 'bc1p6yc3sezasphs2ttp0eafypvj8ltq09lpjq508k2jwlxl244zdavq6l0k3x', - 'bc1pv8kpr3y93j4j9nvl6te2qvlqfce8zaw242tx4crzz45cq6m279jsdwhess', - 'bc1ptp4rkf58rcv0984qt8vlprkf9hfda7x6gde5gwgm3nmpejl6c4dsg9jkgx', - 'bc1pqhrhrl76qfyamanpptk76wd068wm2dakw843cvy4zll6wd9q9t5qremauq', - 'bc1pgfvr4mdcs6p2packv4demptah7ljjkgew2q0mykknhrdgn3s8lyq4vu3vv', - 'bc1pevu8e9dw86tcst69j3y0nmxfjk4ravjln2xf8yca9q99w4z9jgqsxux8ju', - 'bc1pqm4nnug236ux3057qjwpw9hapjzg2enhh0dqpujn5hdssthtwdpszj7u3z', - 'bc1pk238q3jm4ghsq4lafyvcy5mze0ufsm5d42haqekp0gak5cflsv9qnx0puc', - 'bc1ptag678du7exrv34pc4d47y98tzegse7n3njmv4k9grpjcxjckd7stn0ka3', - 'bc1pu0h93g6cvsua7ggmccqg2z0nm2ycrjwnuyndp37synyxvncmh0zqlk0sz5', - 'bc1pe8zfmgxtcf7ktv8n6276zr0ysr3w4lm9cauq7eu4vfgyem6mnxesxcuse5', - 'bc1pyuzcl3alwq3dmkvqk7fnzvn6zwu62rjs6vzqe7pzpm88fgpxhg9qmzqeuw', - 'bc1q4nard6ndnh57xev095hqnrfh5lxxycwuewcwcc', - 'bc1qak5ch78tcpfmztcldgr5tlgnd4t59p6cuqjcnf', - 'bc1qn8gnv8y7u92tnqyzdnmtdvzyzszahn7js97jjj', - 'bc1q397395pz4ktvucdq7uj3jv424sx7ygm94kvfr6', - 'bc1pa7hk6q3sp66euxtvdvfe6xjskjsll7mpp3alm920xnr6jhy08dfscc6nrj', - 'bc1p7a4hwvvy44wt0mltkv4fmhuz5lt587ruqeyhvt5wp320304lhmdskkzh9u', - 'bc1pj2h9dgwn6lkgnhh4pckaj7a44mh6rnjcvnfpv76jlqh9hmltt8qq87qrsw', - 'bc1psqjef0lqvp7dvl3nr4dntk7m9yng4mp22yvkgqsl7utr7z4u9cwqffs44e', - 'bc1pnpv6gj9ufmq62jepc9uqey6yfzuzuksegkrt8ftnmh3fk42jdsksm7s0hq', - 'bc1p874e3rk8xs62pzsrpzxy986yf50k82ytcrdnrsvltdprcj3yp9rsz498je', - 'bc1pjthg04x7wvvq56znwkvfdw79vplprczp5dctpsnqx08jmurk7nuqtjx8an', - 'bc1p4pfgf8v540ay4297jwa07mnel85utw6slnjy94ax7h4j8t4zurys9hstqw', - 'bc1p2rd4z0avhftxxrwqgczwyr4jlr2exypdp9cnjup3wamwcm609zssv8znqg', - 'bc1pl3aff7d04ukpeeef2662rjf444ncf4g0u2mnepljddzz2jzw5yxsrjjyvc', - 'bc1pne6mtsu2f83yg9pdttpne095tnf3ekvrlx3wlajwn98tdv8xu79qmxmvpf', - 'bc1pzgwkmkkh0qdw6t67pasp49ydhmxekg385trdt529le32srk8zrdqrejtne', - 'bc1puhrvwrfjryfjq86lcx099d4lcdamml6snyqkqh7hfpn2rzdzc6fqzrkejj', - 'bc1phqgr25tert9u42glk22tgfqflw3vjfp5g54a8cu67japy0re96fsxd4er7', - 'bc1p77e4h9f3scelzut6tnq7lht85lqddcz4g0fu2zgrrr5yk4z4qlsq5f0a6v', - 'bc1pdxt4pr6y5cmzg6yd2e2fw9kwkguea33a9drqevdcz3mhmmjq08ls355all', - 'bc1pl0k0lggxhsnza2rm35enjy57f4tnqdcun7yuluw5p5vchlwdgt0sm3juyt', - 'bc1pmc8yrng60gmpa5uzm5d6hefwkeqgk2yr73mskuq8a6tu985cmt8sapm45p', - 'bc1pv869cl4sm6f0z5cdmfx4ndunzf3x2matgxhm9hmjuv2ntm4cpl2sa3qqvp', - 'bc1pd9e7njc90mdv7jxffq9kjs4mzqhpcl497p4qf48uuw0qc4jx5vgqlql5l0', - 'bc1pwam7788m42tqku5xg6nkntety4fe72turs2h3m8sh7dct3jeqlhq3pf0wf', - 'bc1pwzqwvzsw7260sxxu0pmqwjv2z0dgv6urqv3ya5rgequqlf8ltxusk7jntv', - 'bc1pp4ktfjves5e323pkrd4d50lcrl558u7afdfe6awtmeucvcyrv6dquugft7', - 'bc1p6rp4yszvcd5c2ntkzt6xejr2zv45y0n92j6kfm3u66vdzhg6gu2sq8g3ax', - 'bc1pacacjt6js4n65qwwms0x0u6u8htwdxe3tmwfvpehypzp08js88rsl48zve', - 'bc1p4xuceqfytlqrt2clsm6v2pe6uuvxsy5xu320mhtld8xa3jvj9x2shj8agr', - 'bc1pvur07pveccdu6a5rqh7u0dv2pg2aa8zktlelwslg6krm32a0h7hq28075u', - 'bc1pdstx9stfytpu52cj4el3ex6hl22n8yrlc803kxcs5ztrqf479wzqaqzzx2', - 'bc1p75xmu0gc3j0wxx8ve2r6004q9m5jskmu8tszdh28d2v0n8ldewzqhjrtnr', - 'bc1p63dm73sfg8qx7eadmqpj92pjfgg8fpfz6vjnr34sd8lrhqtwx8es68nrrz', - 'bc1pt46ngxcvhx96pr2pr2efxdjrez92jzgfqyml7sj69d6cl87q709slmkj3g', - 'bc1py48jd2xlxz2xk9a0tga4f03velnd6xffg5tnkldlkku4ud356r3q0fpjk8', - 'bc1pny0uj4f2hn2hgfz86jhvzj0nr98sz5senrcfgf4g3mugy3r3zl5sywhkgy', - 'bc1pgemhw9xx493wl9h2eqwgvr732ewe9dk9zfq3exzkaua0hj33a5rsu928nx', - 'bc1px5s3v0rpsuh2msuj6eft24jhkqkyxj0jpzw4vs52ude46nf6q7qsrkxavv', - 'bc1pfchlhr0rl5ruhtjst99ft9vdsjhuegz3j3hvqk3e3lnmwwzk32eq6tj2mw', - 'bc1pu9h2vwp4a5jta9r760msfta73mrep7d8gc75xwawjxx8nhvmluuqywg58k', - 'bc1p64w0hxsppgpmewk80fy5c7p9f652v3plxjf8kpkan5nl0tykeyzqerqjkk', - 'bc1ps0enq83ssc5xflgddh7w7usyapn80r9r62c8zhezx5gcwkd95g6sq5zff3', - 'bc1pz7f9mfhym4qts7uj8yucpcwu34xz44v5khemanl89g3c0r3sa6jqkvczrx', - 'bc1pnfn5x283red2kfthg42682wrmsm8lcgznfszhz52hmele906ejsqu2m6cx', - 'bc1p2duk8yuuxy70kclyupm968mll5ep5drmfa0umtmz3aymq5gu6avqgt9rcm', - 'bc1pqfhjgytf39urds4z5ptp2a5upmtlz0lux05wq480rvcvx9k94kts9qmedv', - 'bc1pl6zy43j8me89c9jqygsahu4sq89yge9ve2kz0asumwnkmk4373ws0h3tt7', - 'bc1pvaazyyuwk04fq6skxnkyh3crxfeepzzctuznzmtzyjp6x3klq6lsfa8ma4', - 'bc1p3g8n3aj52225dym3jmypg8u4cf3x3s49c5rzjvj6ygtl82v42qaq76qqa6', - 'bc1pgs95cjhpq5uedepr6ghvhx9upwdmrq3c67xt2drhkv2etjjlqnsqvxsu69', - 'bc1p8r84f5a6vvtl0gedshjzp4rv5mx88ra3etqch9du65fmqwglu0zst80e44', - 'bc1p348nh5crmn6zj66a9k4cjmrlrkszj4vaq33sgr6jzhtpyh2qcezspgep7h', - 'bc1pdhc4g25eysun4st2rhhfsusnk4ekhxp85xr2x4uq859tyxnap94sua2k4h', - 'bc1phzxznmd5yqp7x07kkes6q7sjcalnyd9pjddrfhywwv23ca7994jquww9fx', - 'bc1p7ekf7lt6f3alzzh8gkyjrv0xthp8r9gz28qa4wpam4lv432wn8nquwpuan', - 'bc1p7laa0uystmcyaekgmfy2767ndj6s4y86szdm6m8fta7nv4plywmsx5ln58', - 'bc1pa0xe6ahttju3kfr63fq4vmg67xy9sdw2enwsvmmjk8aem70mc5esh7k8et', - 'bc1pv98t2u3tx493ly278hdrkh4spdxe6a8hk9ev94ku5kf062eh7rwswdqm5g', - 'bc1pyzw7rk30ttw3yc36azwmmyfekyw8vpx7cj09has5xy76sv8gzleqdatxdg', - 'bc1pyjcncf6jsz5xcqmw6jhdvay025gygle6r6arhpu7dkpqufh9c9wqyvprju', - 'bc1pu5wre7gar0d8tgslaeu5epj62yvx667wuaun2n589nx55xzf42csg34qsq', - 'bc1plpjxvkkhj9qfuqnrjtnyvwxfm9j4rdq4jtwhu34anm8etzkyfc2s94vzw3', - 'bc1p0tnltsu0qz29xluwntvvcr29aw230tdhqygwg5mru8qqhdvw580sqlznpx', - 'bc1pdcgcjztkqgnrhnm9xqdv87qtqhtr7vxdvpmpux8xzefeypqw39vs9a5z9j', - 'bc1pkkn0trywnslz5datc3lz087rgzd8z9644svwykpl2983lzkw9xyqspd2d5', - 'bc1pl30rp47rlxrfrtlplzz94kt7g2cr9lhjcygwfjp3tqqt0td7arwq5e25wg', - 'bc1pp05cfg3xdueaqvrl3kdcw3p83e7jy8tm8l0taxzhssmrv9tjlhqq5qkjm8', - 'bc1p3puq5p5yuz0jpy6equy7rwd2t28wzau8s5s7cwqm9n4w4nhd0tqqn6jjtj', - 'bc1p57j2tjs0ypujgjkdufur6xecmcvdte8k8tn9y6sxu0retxrn7hqqj6ncdf', - 'bc1pqhewzz5mgu4c90lkekp40ncnxtn9eleuvyk92u4l7djq69nwqyuqluwzcj', - 'bc1prx9e9mcwgp4zy9vwcp8dypgmgmese5rjhjeg9y5kxty3ez3lmk8s409uc3', - 'bc1ps0266nkjsz8wu97c927hntcmavzt6xfjve4uzehql9vh7un6cr4q6r06jh', - 'bc1p5337zpuhtpeccnq2ky7lgwzz4m8uwrvs785l4afflj2722x0e5hq5sjdn5', - 'bc1pjnv5znssndchjz3qst7ln0lvsqpyw3eml5pczavd465de9uktzgsvvftwr', - 'bc1pmq3y9hctw5w0j4382kh92j5yckjpuy66vy2u8q8vq425rk03x6qqpzdvh4', - 'bc1prx5de0k5hzgn85yq9mumv9pxnygey55v5fj3qd0234av38d0ek3sjk5k4m', - 'bc1pz63qe35d25ve7nztqdfy4x764zv9dfa33qqym3050p6yh6mk7xfsyk036w', - 'bc1pt4e9zqn3ulhztv5zv2xdsuen64mgn0krry27m7l5t6jsqaj33puq76yswh', - 'bc1pmf6sk2vlrjxrk0mm45q8dg78600czek4g38py9mt53gqt7dduvaqaacks5', - 'bc1pfh7yx8ks4e40rzsg6c5qdkax56ar9mpc7jflxkj8qgkgf6qnqtys32qylh', - 'bc1pzjsy40ch0yrh88ugdxnxd3za79qjkl077vdp4tazpjalsulzqy0qfx4t9n', - 'bc1pmqe4pz8em9djs55rtwupm63ksphlea7fpresr7vhwdgfwq9dln9spl07c7', - 'bc1pq6wxqycalncq6uskj47s5azx7sjl9q5gegfzyyunhu6qn66gppwslu3jwk', - 'bc1p4mv3p55y55jsqtx68dg7swu676mg4vk0zxatvddekyqjdf99lh6qw746z4', - 'bc1psuv33g5ae2alnyxngp36ucaf99q858d8kqwjl2zx2gz2dfh4gtaqz4r0an', - 'bc1pmavfsx7wthpr534paphewspktgkzjvg8986atg5lwsj0h5yjvw8qvlmckh', - 'bc1p5y9m4fhrwh2aruaf92vqamp296p376n7zd50hfll0glmf58detdsh47n7n', - 'bc1pudw3zmahe2qk43gquwja24dw5jj08sem2pjqtwqwddzrfhkw2djqhrjfkp', - 'bc1pdps6wc5aesqp496lpum78tvk03v7a0sx6jutj3raev7hc2gd4rtqyl8mr8', - 'bc1pa38cglkzzskdch4ax6z6vl5da90ca0lv5zt6lfqasljec60hh7mqvade8n', - 'bc1ps9xkycj4yv0fmsnql02zhf45ymkfays3p795ljpydp50qrwdl83s930nzq', - 'bc1psgt2v7r78zcuyhnr4n5p77zrnvf8eej3knkqg5dm62nzx4rxwftqyajluu', - 'bc1pxyhz7uky9jc62uahcyw932hx4cayk7vmy40axhctypqhee7xqtssx2tn0s', - 'bc1pqx2yk4kjp4vavadptf0vuk0qy9l6xejwkhsjcgmp4d6jpz9xq48s8murmc', - 'bc1p4jjzjylj5j9z0kznpgf8n37grrax9q7hch9zweclm54zjtk3t4jq9lmjty', - 'bc1pj7f85h0905m4k4s9k3u3pnderhh3kqqscmzpxsss4prm2v2x7upquezlk7', - 'bc1ppgqr4p8x9j0falssfppv3t9lc6e3zm464vs3sps7hqqguplxsh8qa2uww8', - 'bc1pne6n0a62cefy82wrwlkg3nasl6p0edtteh2vtpyjs8epe9tfqtjqfy5tdt', - 'bc1pzgc3djs00crekqlpm5nrfefydhkwx9k7n7dd8ldk4y09jcdush9svt3gt3', - 'bc1ph02t9cy6xdqtq3y8eeu33mfqkcdnhd7x72mwmxfwlhg2v4rn6a2qnsprrg', - 'bc1pm6ygunqn5frxs4rfcars6fhyx3ekh2aetucvsdp6sq9ktary2veq63lyrh', - 'bc1p4pzz9755vuty5u0w82d9k398h08dlm97nr67vp4pj0c2vr7kvzcs7lvt6h', - 'bc1p6p9wsa4xgxffem4pecnsv9xqdnkwfglq9nmz23a55dcvjahpylasn4x405', - 'bc1p7uc7yqew82fzlhfrx06pcfntavza7n8kr0mk4dl0y8vc2vjngzfqacu2jn', - 'bc1pkze8ew0fmr55ldwerc0nf8u78h5fryg0c8ft7k9eh8vwtt604f3sd2d9ls', - 'bc1p7csnymmm29h45r25lw28vjq6nvdu9245fyzlm9ls8kdxz65p7n0q5h7lzs', - 'bc1pkfjen0lj4t4tp0ff4x3vsj03yxye98c5zk60ju559rmcned8nw3q4vtqeh', - 'bc1pmdfv4u5m53ad66ewz4jm6dphgvf9x0sdaxqeygdszwht67r6yc2qtyuz94', - 'bc1p8u9nu5tqdwj2agler7yfxyjvwawpg99qq57yxgkl6uzalr4mtems47te9z', - 'bc1pysf2ulajuh668agfglzc7hxl4hgng6suk5u27cgadvvf2hx7ckuq0ka3d7', - 'bc1p50jtsv2jjnsf62sepmksa43pc07feg8v8ez5q62yskdkly3ukqtqvktt8c', - 'bc1prd5ltcsu4rhmwe3wawpeudtzpt5f7xcnp8yla3fxt5g2l5sz7f7sr8p9t5', - 'bc1p3r59km6mg760jgcpzftz3ckve6w8g5qv0nnte3ajw0j6epxhhhhqzqkmym', - 'bc1p5qp8dsa3mg7q2jxudmez6q83ceu86nduwrddfy0slu6ze3dcrq4qfhp0yv', - 'bc1p83ggjdaaj6dc8davgc8kykdj43l6dppa255eskc0k9k7uczaegts3hvtns', - 'bc1pgrt28ph0vky6yhrjqcv74kckfkd753qms26lncdvvlkn4xudzgts9d0kqp', - 'bc1pthefst3f4fqnx6ux6klspat7cz43srganhmcsv6jkmua3gjx0jzsvfye0g', - 'bc1pe5yl3ps0q2k53t8td8fsc2d9f8jy47qa0tsk3fnpfp3ws8r92flsz276we', - 'bc1pxxmf0hm674e8k4ck0ej4thf2v4t2879qdkh28x8ncrgkxgxjhzxss3mdnf', - 'bc1pmnvhxwmghhcl5ucn4y4706eenn4t8sls80wul6r8lpamvz7nmgas7a7yjl', - 'bc1pfxzh6826f7m58fv2cw88eh3h4247rst6wmadrguaqu6cz3ahkelqgtvwc8', - 'bc1pfdcwmlwd6uf0v2xqu9mv6ngn643xvjnvl6x98upc2q62u234mr3qeqm8dq', - 'bc1pqs8u7mggrmu9w674wwm0vutvvj6fn6ptajwes03n7enshfq44s8sd0thfq', - 'bc1pqykt8748q4tkhggyqf0qgj63nupfxf0cu0c39gv7gyfu4sxkz5xqfpxlm0', - 'bc1px76g80nknyqd7jtt5028l02r0wa3dcn6m4za9hqsmjv20l3enqwqjw3wpy', - 'bc1pn9ch7e7rnsdea82jkmtdw7yn65wqarvgd46cvu5kzpxprmkvsq2qkfrtja', - 'bc1p5zq0ds0zz0yjpn39u4klj7na99wqc6v2ks6xe3c29c4r5d47yx8svn6djm', - 'bc1pefv4crs72muveu2zepwtjvh0nt7kz8f8lgatfvmvd0uskcng76zsmjqnyl', - 'bc1p5fu4x8yavvnqnk8a7tladh00f950l4y3xssgh6fj9qmdgh56aulsvee6eu', - 'bc1pfshdwlsaxa8eawtjjwr7wgpy3m0ta3y5m467mhtwkpv0afw3cvhq5alnj9', - 'bc1pkujnjxlyt5amwt0mru4nkhc8zgdf9evlyrqxtuc7qjwhrysqvy6q6khlw5', - 'bc1p73cyqn7ktdgukgap6h0w9dt4su0npquv2er8t6mwswty2040u9nsfa650f', - 'bc1punshkj7yqdmega5uw4tktun0nqnhzalu4g3l598u4gz0xxfuv2vsqr5ua2', - 'bc1pgn6ge3wnp345rmlkyzpakw48gvm66skywrmdhfg36mp5agpjrfksf45crf', - 'bc1pxa8pjexjhkn9hxf7s3n94m5jkdpazl228x62marwnwpc4r984avqfxhaet', - 'bc1ppwleazev9hquk5dy3ald46st8qjcy5v5x9a2gwm26tmdy5jheyvs66j0n5', - 'bc1p2pmrvmqqjzqwfq756cwnkj26244zqqysce3200syku4jasv7zcks6seq03', - 'bc1pw9htynya2wwgnaw04un9aceq8vlk84dnx7ajgpudy4mkl63fvllsyyxej3', - 'bc1p4npude5v5s6ru2dm670j8rt6g0f94vve8ug3nfa7yd2qrdqhqtwsxgkuan', - 'bc1p2du775tr8e9qg8jv983nj4vr86k43vmt4zehlr9dswe52xreulpsyjnyup', - 'bc1pgrdzruuv3ncnx5g66w6sxrztf8lkz3ns9k3kl5cdvpqj9vq0mjkq62ala2', - 'bc1pzzrraenqjjx9xkpjjq7plcek83dr3ys4fhvhx00488dy7snndursf2lwg0', - 'bc1pckplra3ysgdax8uc3ctw7whqj6y9jsn82ssrg538vl49v7zp384qpc8h0j', - 'bc1pn65nupzatpdqz5prfew5u5zkjplrr4dlr9666f5da9whju6027nqpeyy7y', - 'bc1pmenfjywpsp3n83zv2sq4402m4cad27rq3zcawrylv7jpsgxt8f0q52cvak', - 'bc1pl9f5vdkhutd9ksv3aehq84s7c626l33ukmsndlhjlcv7naejczqs3vamlz', - 'bc1p6veqam82ks6t8lnh9rmwh8c6p6qhfc6rnhd0809nq4j6n887payqy3x2da', - 'bc1py37ux5zjt5g8q3h7qx0vs6rw9gxtdj5se3m76szs8wwqf33hxels7hclld', - 'bc1pqh5fzeaghuas5y79z6cg2kg6sqj25ty8az93m65a8pmtcskmlcss47zfun', - 'bc1pxgw4nmrqarqg6cfk87zzxdvrcq3g35en8dve8sdsjtcpkpsar0rs2yf0qg', - 'bc1p8fudewhlw54rzhgw27nltk8y3xl2kq3m7xxjtp2js4xy6dv7p3vsmhzdaw', - 'bc1pxn9whp33rs4x46yv8rux8049ehc6e0ks7ganntjc4n6u4q7k7uasv9avn3', - 'bc1p26f6f3k4dlzarvelzypuvxfvn90le0svry05l878ztf8rukup0yq793tzt', - 'bc1p0nahvgu0e46mtg40eddverknurtjnrufxduzmm2emek8nmksstpqdyelw3', - 'bc1pe05ahukeuq9kg9evg9fvs34kquku4dmetack79k8l8srlm2r9x6sm0caz2', - 'bc1pkpk5fzr9enyc8zyasl3g3y7fyz5asrqg56ycsfpgw0w3x7p954xsdqfs4p', - 'bc1p942zmt4gmc0j6uaemy90zn0cxfr27zs8s8u2ln3ctu7sdcrvplesv0kqpw', - 'bc1pr8e0qy7ms9vu8k3g9ldqsudhmqedsdmd74yxgphgs29gf0nges7q26f5mg', - // cap 3 - 'bc1px73yykg3wfm74umz2f49gu9akk3g32l4776kj6m0k053944qlt9ss60p58', - 'bc1pmr7lkv52g7aq62r8czqjcvs53vz825zk20yzfaw4azruseugeggqxwr98p', - 'bc1p5qht37v7zxnm4hshsykmy7yxf0kqq36w2xhc9mz9fhnm59xgd3mq55fxem', - 'bc1pajxeut9kg9vwza8e4p5l2kywj8txzczxhlwkk9f6n2geg396mszsxyu4x2', - 'bc1p9yjpkzs8ftn98rvx2e4plhhw49hm36au9fvxg79jl6h923c23fzsjqd4xf', - 'bc1pa7fnwuakgr7svtne9j2ju4zd4pph7jnak9f84kvqlwan5spkqpgsve74t0', - 'bc1pssdvma8yfzajxl3uc7xd2hhd58888le05m38qwqnl2err03h79ms86lplc', - 'bc1pg5lt2pe2lkhd8r0pssazs86gjqr4jz23wwtq7c8cymrdz9ldgytqye30xl', - 'bc1prveqyfgrz9ku8lsuu2gezcmu8n4c0kamndyfxuam37wemy0ph0ustwvx7a', - 'bc1p8ly5j2us85f9h0urdms4an4tl3ldyw8wr7sadusn8qumxyuyxwzqk6a3pu', - 'bc1p6cesp3del2f4pxw5tan86twfrxeca52xms6xjz2hzw9drvx608ps2tagpe', - 'bc1p670s3pttdfvthuvw8g78x6ra3ye7yr8cm2fuqk4tlzqxqlqrwh8s8s4kgl', - 'bc1ptvg47kdvkdmx9arltpvduerkedjttg96slkut7nazqd0xpr2muhqy4qs9f', - 'bc1pckn0393my49e5875dgctj50jve6c9cxj7ssqfsr7znwckk5nfwyqfuecvy', - 'bc1p26gn2fsp8cg8nawjzp9u40lw8gk7r09ymdhkd5xyny0yp993aa6qn38256', - 'bc1ppy4xjkf56nzfkzm67gcvu9e3l93fg4kle7ykcfth5urjwmr8ez5q2puhev', - 'bc1pt64j94uwr44j84fedtg6sh0ydyvnsjzysapqc8hk9vku4mvfr4uqh0znyy', - 'bc1pxljm8tmuwq7hsfguj023myhcraqf5eut34z2e0qu5q4l8rhaw5cskzcup2', - 'bc1p60l2uz38ckkh2g04xatgx4zd0xrel8awy20rvvy5a6u469dkutzqtyft56', - 'bc1p7hp9ratwwj724j6lw6tq63dsaexp2pv2wtkhd8v46hvwx7cd63sqdkmuxr', - 'bc1ptjeug9wp9pgm30sjcjxrl44rznu50ra08xzrp7n4mpzak4u0u4dst3rkud', - 'bc1pnecr5rkk86efqv929whw3hnhqpkz3rgeh20y9ekzmg60ppqfmyws0prhua', - 'bc1pewl25pneve9sesad3grzd30d2j7rtxf5utxvcax5fkr67js7z2eq4faan3', - 'bc1ph8740mu7fsgvkuhmm43kwkrl26qwucxs6ptwgp9zzd5585ccv33qanz782', - 'bc1ptdx07yx2p5dnnmuxvkse5rxda9vh3kpv2zjfv4ywn8g3x3sgfepqm3acfj', - 'bc1p4wzzn7nqeafs6u67sern3lysuj9n90wlxrl4fc4w4mn4sz7xrzhstsaps0', - 'bc1p4chh7mhjetqtgkjfl2m8rcrh86rr520cyelprucfl3vlw2ds5wdsqj0zrp', - 'bc1pcv7clklkf5jzl6jv6r8z2ztklnf2nduggev6gumuyt3qasd6s4sqz7guuw', - 'bc1pmj0hev54qug28wluzvwrns0d9h4lj55e4qwyfrxxh3qyfh2fgthsf6n84d', - 'bc1pdz3tf8nnq3w8lxn6jlf9fnl5y7y4wy0y4d5j0jd5wwgsphc94ansqd7pnh', - 'bc1plcy9vqlep89ghsk809s3al3pmgx3gg90fu8g4vln35rpnsywezrqxltt9h', - 'bc1pm8hn8qa0yae9rm82dkp2kjrze39c03tjmyw5stnmc2k02uvu9vlqt9krvs', - 'bc1puty73g57p8rc7e3qzrfsaxpurv6tj8j0sqkaphkvus32ax8qh8qqrvv6zy', - 'bc1p4snlw30exhvtrxfdxmv6plwgzh0rf96660hr6srl6hvh94k5tyrsdy3c36', - 'bc1pkh4dkrz0x6s7f9rwjghmncptltyvw2p5n3dw9sz9txnu7wuyjy0szyeh43', - 'bc1palsgkgrzny8c6qrl5qgucgnzftsxezvl93vf8pv3p4458makayqswwkvlp', - 'bc1psksdj93ppus0ngt3xk8pkuwsg8kd9ej88vahe9ql6gh98hsmn7gsp064sj', - 'bc1pccsl8u3gpzjqg3rxcg75y65tjvzwa9dr0u2l2dt6wjhnw08r8q7qqw6z7q', - 'bc1prytnvamkfr8fsxe9vsux02d74eyhfqexlhchp4mpthntsrjec8uqjszpp0', - 'bc1pfxxulwq7wlr53tmzt0xe24entxvuc6p0wd5fclpynzm43ky4e7xqccduk3', - 'bc1ptw9zyw0zmhxxrnf3usn93tupvmu0qnxft8czfxnfwmtq0nd92fhsv8yewq', - 'bc1p2xn69z9sx2ae6pex85999hhchfw7k0gs4232vfn0ucgcfvtm8kvqdtnk5e', - 'bc1p8mxvay4xz67jyqzf36er86q54mt6g65dacnnuq9zscc2z7f03lpscfhvtr', - 'bc1plg9u96y3wu7h27zfnf2u6knzj272rxaarf8q6mhsgld3t5qdtlhsua6wyg', - 'bc1pca8suwpv0xr650phcmc6f0vuz7m27hrcdchlxxjn5nhmyzanvfpsxjzawn', - 'bc1phzwd2p3l9jtgn7p2n33dxu6h23dxq50fg3rk3ny7m7nhkxdxla3sapeje9', - 'bc1pxnqf50dazkvnjqp5ejf8039cetykcukl4xfhsundgn72eljhfm5qjpmnxv', - 'bc1png995wl5jxa05kq0v2fq3hf87furln0223y7q6g8aqjwrmh4cntqhpfv7g', - 'bc1p72q8nu8y5qan8xh52ykta4tldz30smwk2xngmur8qzqk9wqd55lsmdkgyc', - 'bc1pa4cqq3a0faaqxcprwmc62u270fgjxjwy8x4ly5r35fd4t2yy2t5q0r9uxq', - 'bc1p7lhjnvcxu5wtlxss9kuvjvkj97ej3vd4sc9c85qapgwzmx29n5zq02ue4y', - 'bc1pgvq6u3q37n7rtsuruaedvljs9r3lt73r3ly9ds7manrjgxzv3clqcd9whq', - 'bc1paqeh5pp538v0gprgt2mjd0ahmpusnla58n6j8nzpqqsx2qpjsk6qaeghyx', - 'bc1pchpn9c37vkq48wq9t6kmafq2yxlepxj6czqh0dc6grqtauvm3h2q4q92d6', - 'bc1pn0v9h2m7w22fdxpyvj809dpaj7q8tvzgjakcum768kfayyhuuu5qcw3092', - 'bc1pxgz0gjatzgsj76rl8qeth4qdy57hr79j95jvsa0z389c6xnjg5kq6xeurz', - 'bc1prhn3zw0dqw5cnjnzfrnmqsz8x7wvn7vc6l7uy4q59xcnklqh6h0sm7d0qg', - 'bc1plkvse8j3n42gycg5sa29gm6vp4qttp7fm0uwlpzvh579skl2r2xqqqk9tc', - 'bc1pk54c6jsgnu5kc0ftlyj89f5gvrw8pj5qlgngg4arz8rg58r8pvkqrcyewu', - 'bc1pt5g3c9mlskc7zl5wzmm0jksjkhr6w6k6zxex9tddavjl0jjmuqhsx7amy4', - 'bc1p4nmpnl4hfky803qvlxfdt8e6e548rh52s7tt7tf34kr5cecwj3ns97jcw5', - 'bc1p5ajju86lazv3z2cfpa8xfldcykd47y5crm7auy3fpglt85hnmn3qvlpmnm', - 'bc1pzzdvtlatxaqyrfc244v6vklpwmgqgwg949fk8ye7zq73rjgnsc4qkqv6yz', - 'bc1ptx0dvufjk25hnsyz6y96njjumvyqsy4y4uwaxe6hhres8jq2t8gsq2fg5v', - 'bc1pq6lr6hhqu7ejd2pmctmet2rqjq5gl0kl74eqk3n7umvuqshlc8tq5ck6sg', - 'bc1pa5pqkstnehd62e6z422x8reuhp3sk0xtv4na3tpacqrfky38asdsunmahp', - 'bc1petjzyxhrgpjm4urg0ldrqg2dkn0n74g2gll20ajumuhdxgmnhu9qwjzuue', - 'bc1pedeshmmapux06yu2024kkrwplt20an40cphrve2gxyh9eqd68x6qm0nd95', - 'bc1p7pyjh4lz4xm69cgf0ly93a83hds3jl542xgeye5m6wvg0zgprz8qr2h6mv', - 'bc1pet4lcmmumd7sdp2pvvg9z7gld9glwtv0mnhgqvuelc0wzlahehhslupmff', - 'bc1pnekalfmcfclee4w0h26czt2tk3jhazs7tuwrws6g36twnmg2rppqsl97qv', - 'bc1p5n6zrhj3zk5ncfwafl43dqmrmqwfze2955pnqzr72ps5h6str3zq6xwnts', - 'bc1pqjmedz5lwfwnkk70rspn5c2jps2r4crt9m90yzaydwke56sp6eeq6yk66y', - 'bc1pcjhml2frksl3yvx9qyv37d59pfcejht90hpxkq4p2d6j5ulg24squpxp66', - 'bc1pvmer093r98wxuxu6qu5xxg6wrftlp7fpjvqfw93qhdr5gxe2x88snp69vr', - 'bc1p05jgmz5hrj3a7kh2husedult6dpulfk6ms75743v5npznnh257fqz2lwpl', - 'bc1p05vpee84knuq2kr9a6j7jrftjhqjrl0c4mrgy6szdjtcerrpq76s62lzkc', - 'bc1p4tl57gxjj0w8md54es3e5xy3hullnstyt0fak8v9urcp0fk0zxaqyjqhr9', - 'bc1p5vmf43qfxncmxahmh46zjyau0lzqr5mf3fdx6gh920snhn0ru2zstsn0dk', - 'bc1pnuzga0q3kxr2jdpv2jdjufqwl8y3hgcrucmx85rfaalk6h2lq26s7wwjuc', - 'bc1p6yan8wgxhmmhzf5fqdzk6aycev7d5g4r2tzjsd993gtp5gxhcq8qhfpa0d', - 'bc1p5jak805vytrx3gau3t4hkj7npxv40gyugfw3nrs50wla9weqt76sqq7xdw', - 'bc1p9sqfdrkmgmyraqc99npmz2vv2qwqf63rwm56z622le6346zc63rqd80k9w', - 'bc1pn9zmpv5p9cnaefewuzs0d0rnngmasfuff8qzwqsvz6xx8nagjevsmtvkt9', - 'bc1pxz0q4tp8z4m5dnd4g5pafnym7855qr3qeuaxhxaztp5zp3pmmnts00zqln', - 'bc1ph0fxdlcnvp2nv597w30lexl3vawlv3rarw3c4rkwm4y4z379mgxqfmues2', - 'bc1prec7v3s02sfaxe9kd8s0dlguwd36x8nm8z59pcpm7qak7lf9z7xsw5nl6z', - 'bc1p3p35286qensre04k8dg6n5w2wz9mvjzm4magl2dtz6nnget7ml8s6gc29a', - 'bc1pac6dpcxzx96gppj3cdg605papuw7h5tke97urtaje4zj2lc73awse2llnd', - 'bc1paefgwk58cxfjvneg27nuc6ycw3m88s4nd5f4p9gysjqlyankt6yqlzmtsk', - 'bc1pdveqtq70syzudul95zwqms3gx5v2mhwlejw244gcuatqlawxl25qnnkxll', - 'bc1ppsth59uafqhy6flu59892tsukepymkg32t3ut5g9d4g65q7dru6qugatd4', - 'bc1p2nh43vlzpvef0y4hv6penc4j79ugrxx00l2yjsv5u0nk0n53mdssyk2l5m', - 'bc1p7l8tnrlmem2n6qu5edzlywz9mw7zalc9wn9u57zjc4htv3aujcassls3p9', - 'bc1p4st25l9zft4rw6205gpp073k7xg56pek5ejy6zhjlr8xrwll8adqkqje9n', - 'bc1pd95gg2kk03yx07947daqj5teta8hx4xprq6czguw7jperrgkjkvqny52dx', - 'bc1pmxpt3vtssvzu4y5xecuucnekalhn2tv68sg2ykc87w5ngnje958s3lcx0z', - 'bc1pvf2aw8zw85eug6v5j8jfn038haqt4l3mj5v3rn47q3gparqfvmys00zax6', - 'bc1p932wczq276wqj2rsn2yzqa7c09xa5jkcagpvvqgnrp4qv3c0rpmq9xuvk3', - 'bc1pw5xgeahx6rsjdchqcec30h5zlw0ekwta4zhtx7z6amvksr2altxst5k3f0', - 'bc1ptp0tr34x9892r20dqevqxgk80mvwllmdw0v04g5skdt2zdzqpj0snlrt3r', - 'bc1p8spsn7pszt05358jlm9f6c30275hekh6e8lcwth0ld0874mrl9vs9yyj3a', - 'bc1p093c66cfx4r4nvaxzgmlr0gjt3yrmzwa98v22pvwqnzrdqermvas7vr0xw', - 'bc1prqr72hlrr5g9rgedk6pgee92cvdwyx38nqaleg873en9kvratqaq7qul86', - 'bc1pks2tezhz3fv43equqrwhphxg9pf76ju2rlvat9zs2ml22t6aew7q4vusla', - 'bc1pr6k0kyeczstu3rxu9v6sw2m03a8gmz7ags454ujeplx0pxcsmrqs8ey0jd', - 'bc1p2w5fgqehmn86ffxlsn46sykh8w5rm5n0mcn0vtgvdkn6wjy5z98s9g3whj', - 'bc1peql6jfk0yy34h3uq9qtnmt8fs0mnck0dtx3zd0s2sankuhcv7gyq3eduwx', - 'bc1p0fy8pmwe5e9dyfxakkuf0hmy24tnxtjxtrvvgex3tvayw8nnxlnswjvlwj', - 'bc1pkxq2ku975yrau43tedpzfs9ffud2u5yzwhgvkka2z0vvefd5lfwq762qpx', - 'bc1pk94ryxvftm9kdjadpxsxwv629m392w6u47qmmjt09mshxhq4aw5sernje9', - 'bc1pcs3ce74fd0shdd9aqurrhl6esx76mswe5u2fgz24pc6953yxmj3sm03dul', - 'bc1p75ap32f2qvyex0s8m8cpqrjzfrqam47auufwyr526udvlw0urvasa822lt', - 'bc1pvlf3qmd0xls9r8gscwas93zzaadnc0yg3n3zgjz9xudcx9jp23ns9njf2c', - 'bc1p4cs99050n5u6gw609yxw3gk78xyaqxz9ryu8ght6mqjffy7987psr8rhws', - 'bc1ptcx02cr87p4mqqjs52ntkufk5779tk2jaay7vw6affn8s224c8xsy737da', - 'bc1pklzdssehpkeqr3yh0k27tc0fwjwlqmur754thmm7dnclw72v00es6dd6jx', - 'bc1pk2jpqll5ztcnqppqgyt6gm3l8pe422fqh9ewdgff46uu97eqykzqd766nu', - 'bc1pjfvg0l3x5tl62gq2xgwk63xsh8vq2k2lz8fup7pfv3f3chtuvraqephvzt', - 'bc1p4mlq6a9djjv55xqzaks5c956cznp0a60aqyqe88x5v7vag7hdk9q6wdkyx', - 'bc1partaf65t0yte9eupyumf7cm9nmk9s24t8s8dyk4kztr8fuxldcfsyu36ds', - 'bc1phk6uvrty6azzlldkvj7zws5naujxnr3anxs85md3snjh7uvx0t8qc6sjx8', - 'bc1p6avyxyxm5veyduqzz77cckl3u25xl8c7kwm780vfhlgl3a9qfxsqasx8c0', - 'bc1phlt7dy699flz7rqgvs9daltukxt8u6zyas6trdxj9e2ykkwjuzlse7crpv', - 'bc1pj9ar2uqyel6g6tjrvwpz4xxtn2903et4sue07mqdwyjuyl7hg5dqgq9xem', - 'bc1pv0zlwkhpju45ks83psy2jstph2qj38wgua4mwzpmyge0nrwdwjtq4er55p', - 'bc1pd7v0e037qhhfclqvhnnve08grna4znlxz4l0uk96rem7zs76xjlstjhcp8', - 'bc1pjhl7tvs2g5dwqgga025kxh8xgfyn5gfjkt3fn93g4zfz4euvpunsfylzp8', - 'bc1pwnj50yytwc6lx6xjyud2m76f3xeqqattn4e33m8ndzejqhyrl35sxad479', - 'bc1pmyxlsjecjp5m638ncarcwqg6qqua2y8hrh4acqne5xq56thydqsqg2t6mj', - 'bc1p9dmnpdga98cjvs0j8ghshyyjps23a20lkdepww7j0mrtwa7pyx5snqnx6d', - 'bc1pcswg83nmpdhv6sy49k7gl4uzk2ww7g5dsl7r7ks7hj9h3mxvgnkqu8rg4d', - 'bc1pdfn52ydmf9l83rzpmrna2srf6a9j9t6ylux9gcx8q5kyeuje8nhsngxrrd', - 'bc1pjdpmpdsza98d5zxwvafy8qxgmcju5dht70wxh28737vhtlygqhysr30m4a', - 'bc1p7z5t2hy32lpla9drwggmgvufkccnuwn3smx2xjchkxwh86enfj4qah5mtp', - 'bc1pnel9d6r9rgtqan8pksxp39eud839xz5h3n92aht5n5tcgxvlzzaqkdhsr9', - 'bc1pdzjyvhjvr0c6fl0r8rqmv4pqpu5v972sy9hkuwx470gu2k4m958svvp9p0', - 'bc1psgwupn0nx9fuwxr3yfcsd2juq45l4pthuqysfj69zw2y0ekva4xs9x9k8m', - 'bc1pct7e3u0ulu35qk60e7a6egsz4885wuq8cl3xgkfnu7z4zdvake9sla5jv3', - 'bc1p5568xmr2zds4z0w9wj9x0c07hy4zxq8ftgc233tgq9an34gxzwns4mdpyk', - 'bc1pgnthv3ax3fenuk7dy79wzhwt2e9f62vxle7nfvxwj90z09hvxa8su2cuzl', - 'bc1p3q0ssr4hjzx07s8x5wfucc4ndvwm42d2c29z74yp4dgqk8txxqass9mwze', - 'bc1pvsnjqq3at0kz03mhxdevyajpsp9lghy66flmmxlp3zcdrlshjhmq992h4d', - 'bc1pdjanmezrm7r3xezg90dq38c90gagr40g80q6tj5hfwe7lcya3kqq9k4xmv', - 'bc1pgn8pzk8np5mu3avumj5pkmfa9zx7kz5053xe57n420hws4cgtz6sp3vd6c', - 'bc1pw9enk88z0l0r70slprx2sl0p6hs9y5jhzxlxvwx9gsp6p9dqvp9qhkhevy', - 'bc1pdrgshmrme7vfwt6kazy5wa9vtymyw0gddxqch37aq4vm3axq9xsq40a03x', - 'bc1pm0tv5qzaqkdw26wfewtf48kze20kew0pkzsrcq0vqtstfxd20zysglfcmu', - 'bc1p93d8wg4zuqcqhyfjp2j52q87azuaqwj30h8zg0xuxtc6nwsv59lqkz3xsn', - 'bc1pk5n4k3qk7wpfkmhu9ph9u2vev3eh7k4fgkqs4seqt9gzvtjv2wtsdpqpgf', - 'bc1ptmk2ezsqxj3fwd3cryvf449j94tplr45mpun56uh9fahvnc2ta9qy5j4m4', - 'bc1pmypc043jn6kx7dumj5nsqz6ua8ftlt8lghqs3e3zcwplqxkrz3msrht94u', - 'bc1pxwfpvr5lqkyeul4df5x78ygrzvefp3z5pwjgf9r4ua8w7n9gc3ws90qyy3', - 'bc1pzg3qggtls64cuj69sjxfzfsgajyw2t8s54tpxg56p3zvtweerxrq68qnau', - 'bc1pqhycnukevj67rxct7wdcfuuxn8c700tuvu0pxruspvy5xumvayvq4udfv9', - 'bc1pwg68709ef0tjxkhl9vrj8tg6c4xdxl2sp62tlzazanvr730raylsvyysm8', - 'bc1ppnmrn3tke4tpj7fhhqer9q26wazctefdnyz4jly04mjatxvp3easya89qk', - 'bc1pvuty5mccd5cxx5s28cf40x799w6y0j4586ny83tzwzhc9j7l9lcswkfcrq', - 'bc1p6m76w9grx7ea6d6fas6ee9jkqcmuq8k4qtd4d25llzk67hyp6mkqpfvmzc', - 'bc1pv96wnrc8gyurl2zcavdfw6302rs3vp7me7j0pm0dk2vjhxaux49s8pkqrq', - 'bc1pkr7x7vv8v6nluhafymuuqr9qn2n28ykwtdd58xjx5469pv0f6q4sna0mpn', - 'bc1p50apxaw3g0l5xwv7jcrttjdvgtfywsy5x9rnd9pfhhyveuxak5gq8067nd', - 'bc1pxtfdfmsm488k84mnsahlnr74sag5x4wfp0mhcp0k6z3rcg2h95ns68sdn5', - 'bc1ps7ymmeg5x35ytna9jhsn7743dm7xj0ng49u3ag8ypxcqh6u5kzhscjwxz4', - 'bc1pjqd4gzzas7tarjh0fa8kje7s77w86nsy2dc39wjt7pn3lzwey44sxund5r', - 'bc1pw8z09e6hydz65jgenzzy60rf5ectafu2jks8zmkwzvvx3e4zva2qeusqh2', - 'bc1pyfwwyd8hqz8nmc6a7h9rudgphl9nlj08c7zf0lhu9ugy98v8ke9q8vunaw', - 'bc1p456z2mkn56fhgqml5c7qf75savg3cw8drhu33pferu8e5sr7jwsstwfy99', - 'bc1pcfmgtr3ksgh4g0s9q3lks3ksuedxw4zezdgru8ewfjptlsagxc4syygeq7', - 'bc1pdr637zkxea549qqns9x8t7w20he8uvs9ct6vtpcre3zysnlplass2ymvyd', - 'bc1pcdq2mykq9zfa9kcjej8hylzv478vuzn2dclw58zh6y8d0qmmfqms8knxs7', - 'bc1prt2c9z07ew4s4yv33634n2xhj8p7hdvlr2w37ur39jxlc07en0jsj6t5tu', - 'bc1p6p8cvmq4axs23v23hjk7hf44e484enzq4n5ggw5xqezt4arknk6s8vytx4', - 'bc1pv7hmph2e4yekx76ssnu89rdqkyy2n3zm98n086y9km2cjg46xgys72wfsy', - 'bc1pw6hje92e5faqk09fwdftu0pmqma5yw9w5qwcdfhd7qcc9phuqrasu4q70c', - 'bc1ppkw58em656s9mys5dh3gaz8ftde0cvej99vawxkegrh9vmcy93hqukaf2h', - 'bc1pyt254tvjql9rm56l3auv2z8kp59p7y2gctrr6c7z9ud7gegkhmjss729uz', - 'bc1pkkrjr7lr7q6pntmts3ugn9antr008yvzcky3ljq5r9mhq49t0z4sxur2v7', - 'bc1p7w90pjkd8z9zehljhk6vhlu94ljjr5d7aypzuy7hajun4wyesvvqan764v', - 'bc1pyqmj095km9a7xs2ec7fsfkn9vhrlpf98zdjmgv9p5fpwlwe5tr3sc5hau3', - 'bc1phefwpn4u6qt3ezgz9hwfu8uc5q8a8rcceqh8d0us56u6qwwam9yqzv3uy7', - 'bc1p55cvl9hwzeske4358nv34vu36pknm2y79aqsp0td5slm5g0lnp4qyjfrya', - 'bc1pxmewawekvks063fyccynvc395vf295mlxesz0ezglmct9rrh3dtslxgy3h', - 'bc1pn8d5lp47xs77kghpn9hpsmma0stsgfyyfy69d42rfh8ysvxv3t9qf003hq', - 'bc1pmzg9lhpp0l5gxn2nuffthlex7whrmyyknww667j3f6ynuej4pl4q3ev6uk', - 'bc1pnln4agkc7vsfjr27qq3vkha302hyr7x60w3e0l8ny9cdzxfjgz8qz5zv83', - 'bc1p2uyt30dh8qcpxjmqnskga9z2qeyd2wxkakn95225q2y0f52jdtqs2y6jue', - 'bc1pxmpk8enp99vuv4y8h4tuhgz95wvumslmw6tnndqxatujyaya5kcqmslg2c', - 'bc1pvkdmxtfww74jnu4g5fzjzx3kl9jjzwslk568kzm8lddzu5tft78sacp9d5', - 'bc1pmpzhac06pjnt25ppddpr6kf9mqnwyzd73fjqscv7s7l9rnqulswqu40t3e', - 'bc1p7q0wxwnztndmpnflpk6kclea8vlg6nu8e4qh2yyv7usft5e7c3hqzcrq0z', - 'bc1pv7f2hfppwakhlg8lwepzrk0pvjhmxznss5xza9a6zcamxl4yevnqg50h6x', - 'bc1purcvcd0r6se2yczpujynk2rs7t54qusc05alajgnc9wq6jf2nevqrpacz5', - 'bc1pl66rxulws8t4qrfeguge4lrwgfn03mkv6qm89l49wh49mjsm5n7s0ggpsy', - 'bc1pyqux85p4tlzfk0tmpr4fkjzsu3a2krw48p2d4n2k6zxlwgzjdm7sskg0wq', - 'bc1pzuem09ng928hxqu08yzg6al9pd0v0xj30c0rzlpvrugekv37rzgqrmuhqm', - 'bc1pjlqfr8r84k63kyccuusstgr2dchp2xycx8fqgdsjpmv730cktxeqnqj46v', - 'bc1pyltna3zmna7lxssjwj9er87aeur9h4hwdzuy6xcaqlem9xat43rq62rvjy', - 'bc1pt2jpdt7wf8ewz4xfltu6e47074mvh0l63me6az0wqjsle7g9jtgsyx7xtq', - 'bc1p7cre3w0frf495twarkhxnh8ehd3mmetw5xz4rq7kgeshxx20t3ns977l69', - 'bc1p0ujtq7wzsjr90qauy9lj8n9znas25ljwzwgj6a6gl3a6ganyuwxqrj5ql4', - 'bc1pcjj47zw95agrdmp872ahmlyaz3xladxw7sxpvef4uuww70v8h8es89ry5z', - 'bc1phadrah86el2qcjw8tc5cagfsms734ekn776jupqktxg0v9cx6v3q64lfp4', - 'bc1pqdpqwzayx44w7eaccv77mjne2rq3ranxevrmngue6nqdjmxlgtqsx03p6v', - 'bc1pgwwrtgvfrxlt6clt3c0ee6k33ea4n0wymt5mvkc3thn2dktmuysqvrc00t', - 'bc1p53fw6ph8jnt0hy88jla4y7p6kanm40lmhye5vnpz9pchjzn5euvs56t7a4', - 'bc1ptec6k6l6czn46dztnl9t558433ykp95uvjxqv7xygddm0m9s7sgsj70sp0', - 'bc1prpfv43tscty66hd37wgdpzvzprhw74wnzvwn6aejtf9hpe4rnhvqthgzy2', - 'bc1p9722ffaktwfwuamjn9vk5w4u3p98n0a9m77nyaayk4gplydpjmxqstwwqt', - 'bc1pta6gjwdqj9vnpa7ppuz4trhhw7twkd90sfjwhl2lf4lrjf0wzz0s4txtuj', - 'bc1pkuqcq2v98rdfmyl7zwgqh6h8y476d4epuw8pjdqtxs2zke0znjxq4z6da8', - 'bc1ptrvxjkvy08jw0vx3fnhqgxpk5dmkam00wg95g98grq5hzmtmrxgqp34ccw', - 'bc1pzs8gqdq9qs63nn4wkmq5j60mce4t34k3p3v6vvknauhk4ft0nhtqfmv8fg', - 'bc1p0pdu3k8ws0harv0juhy2jjvtk6jp8sgcr35qk02fkyv3uk0lx66qxt9gzc', - 'bc1pp3vxpr8qx5tvelg9mxplr6xwg8zt2gwyf2q7x7phuucp3gndxyps3utrch', - 'bc1pm5m9xy6elk29zhq6yk5rg3y9p0ez4kcqqqqjq86zqvtwhqks37ssx2wzm9', - 'bc1pl4qz06xdtuxr7eprt5wfe4dy4mwt5c9zency9ztqant5ljhk2djq3226jj', - 'bc1p35844gytp45nqep42mm5v7zppzt8wem6k0a5dxt4sqear3qzu2xs4g47sd', - 'bc1pnxquplar6z4jkavtrjncdvzjxwww7hqtsfle42tjkhsp2gy78r6s7lfdxz', - 'bc1plrqf302svkhtahv0srf9wk49shjauv4j76vtrxn7we7c32pyae6swafaux', - 'bc1pykpcds82th74a29yj0dw3xsje76jgznpj05xe8xw9uu9ef8ed6tq08xlgt', - 'bc1pwj2w5p2tlm3f0s7vx5wsvp0zpdv5cj60hnjppwndtl7j24jan3js8ar04u', - 'bc1pmnqv7rna0tdhfkdprlw5qnfpmkr37mety34ypsqkz4gzdj2ah5rqsf03s8', - 'bc1pdm3x8zc06xh3k0hr9dsv2a7dwjre3jmwme0rufvyeqk8cq6q5grqmrcjuf', - 'bc1pmer9etlmke5vlrzvhxsu0qacud7eccrjjfmz5qcd2qpdqwe39als9xf2pm', - 'bc1pptup5ckan0udmudfjcxqxsgfsu3w0x34zmskwjrldwx59r6f4ezsuf5rmn', - 'bc1pgp5p9253sc84e6cygxkrdaresnqxjs4u5nnxqdxgs7smqehv93csmp8stj', - 'bc1p7ahh239eashzpg8xzzegfmf4j58ayw6hdencaahfp9umev53fwsqs6rz3n', - 'bc1pedqhlupg9mlcudynj2fkv7044tncxxkm64ehd864qw8g8cecqujqwg0f82', - 'bc1p09hvm8fa2akew8af2hlk38hw4x7ks6uwa8x4yactz4wm4vev3yzsjamsy0', - 'bc1pknl08nq9f38nxge252we550x4w0ls5z0ycuwrnx9h9hfses4mg9qtmsx73', - 'bc1pc7c2t63rdk0wmacalukxlgqz7cqqqrqg4dh2knfgrna6llwx8vts76wykr', - 'bc1pxmtc5j3nhpj74vyka7we6ktjmg4pl20eel7r79k2qd9sgw3suw3skw56wy', - 'bc1phkefjd7h57g847waz6uvuuk0mm2uqs949qaz3ut3xpzq80apv4tscf0x6e', - 'bc1pe853kyf7ywpg5zptrzce03quqlp8lfgmzz56v9vy7dy4dpyupy6se2sl42', - 'bc1pv78v5k4vw2fjwnpprcfvk9400mqmj7k9dfmfuadzmzrg3ep89rvskwcqsm', - 'bc1ph95yy0wxg4udcykgfuw8leuz0gcrgc9gx6qehwphttvxd2r4znfqt7gu5r', - 'bc1pfhpspeuvqc0zrcq0u4ev4090uucdf9fn2cskwg0jc2n8cy28x8jqqyd7w7', - 'bc1psva4eghz3tds8fcs97kkcmmq5khnugswevgz5u5rk65zed6qjjgq5rchu3', - 'bc1puggdcecxkv564xl7pr70yhfc593ee0fzpwl73tvaq2punef47h3qaz7qel', - 'bc1p2vdx7qqqxf439sv8jlfhvkpjzh6lp5u0pkl63h53uy3zw4lq39qsrfx00p', - 'bc1pazxgmxnjrgpphq46zl8m4n26aqqhkdaa53glwxyhc737zlufvuzqr6xsev', - 'bc1p7lvcnrxdejfewxnej3aen3spqn5whffghswypyjj46axy4v3p2aqgud5yj', - 'bc1pdxusx39aqur5nzxplp4vq9z3dd3sewxf6ndaxusf53wjlwka3ckqz47wtn', - 'bc1p7mw26yzzt2fkh8qmwsd4ch0qd6mgycfsf9fctpfjkycugdcnempqcsu9mk', - 'bc1pzhjwldh0zdwv4x0emtac8uzrukt336d78uxg05vj86f768helfzq68ugqt', - 'bc1p2tuusv3f4p39svm4kztcnfk49hll5r8mj3t02ur55cwzgrzxq8ps22r78q', - 'bc1pl2nk6k0p3wkzudam5a7kfztkujkwkc3057zs9dqqklgwrfcjusvqyqscg8', - 'bc1ps5gsyfmnh8f5ppt5j3n6y3whnfvu7j0xh30u29l86en5znqct4cs9umus4', - 'bc1pnqtww8cuyh4ul0h2p5jgj9krpdpnkfawl8r7ynr0s2kcqfk6snaswyxu2z', - 'bc1p5chfnk48yzgwh0sg9yu5ndlq9uqwyhndhdac5gsxrwma5vhe4u8q7rgqnw', - 'bc1pslrnaanl8fxuvhkpk4624ft99dtgqq2kw6t4pew4cafjzfsr9y2q0t7ggr', - 'bc1p7ymstluquql4u73cgvwwcm440lqllptuhnye5kqeytvwvc89nwcswmxnya', - 'bc1p006ts6egely05j6rmcplaqcs5203e6lwr3vjsearsr5sq6l48w2se42gyk', - 'bc1ptemfk6p36l62p79t9mqnfp9dtx5e5ycawlwpfl9wf9k09cxc8fgq9hsfk4', - 'bc1pka2aj2ttex06drf3ggr00szlfq0k559v32q8xxvnul92py3ewjzqqzxmkz', - 'bc1p0kf69gwq8slrt50djsklur7dgp2fupnn43gquwnqmq2n5tf94x2scnmnhv', - 'bc1p2h2602h694e93z4ry7dtw5zh67pwyt9ggxcd30dcxjrnhtt7fu2s4andkv', - 'bc1pj6zxnlvec5yevrtqzyf4na32qyvpk2yv794wdqnwmwuunl9lhznsv2mgwp', - 'bc1p023q0jxn3w4fq2e3rvcf04y98g9zlyjzh2xmc87zqm9jk37mamss30dzsu', - 'bc1pwte4mzjau7mkx9cce0y2mnh96jek3td5trrshrq2552z20qkh42smrs2u4', - 'bc1pc3trzh6eeq6g58nz2348z00rwkm46fkyy9zutjp9yyzn6lzl7tms5hwhn0', - 'bc1ppell44x7l9xa44uet445n3h57n5980lv2qkw9z9yhtqmuzpy4lrsdy5vsm', - 'bc1pzc2yqafpr44vfdpgjrajgtp4nrtnunr5tw26xz023e265fpt7kas38h0w9', - 'bc1pzxvfnehv2yx6qy8m2f5g46usyenne5wnnlmg654pytfxcndzxncq46arez', - 'bc1pd2heygclga0c5cxegjqzsm60yl6qc9fs954sup0kzg3c36n7qgaszuuzgv', - 'bc1pnnsn8kytj8cja6h2u6rd0j95ww66ekhudhnktthtr7rglu9rycpq4c6x95', - 'bc1pnltpy437yfpg00g6u89gqn8r9qhdq709cnvgdqn9glmd6pt4z89sr488kd', - 'bc1pfqnwqn8vklzsyakkqsvyhgwcqd7c5rgjt3zljgjznrqdqsjxrl9q4w57rx', - 'bc1pjceax8p2aw7s8wsacwsz89j4qcgtuknq3rfl2pp6r0s6ce8v5e2q8snl8f', - 'bc1pkwmwdm07e5kqw0r3dn3m0u76h6a6ljkcsuypzt0jg9cvxwrx58xqatgcna', - 'bc1pr3gx99gd55zkzpx2y8taxd8yradew032jsqs4364pjv3g5xjd2kss3ae8k', - 'bc1pty3smgaamcsqsw57cjyvrg3j50ztcfcsa7mvc57ncf9cpp9watwqfnrz77', - 'bc1pv6zu6nke5na6zt44pv7e423aqfsddhhwjdhdz70kn9ngsgssfc8strp5wp', - 'bc1pjhqs0za0903p5l5l5ux4d3qpzgcej7lgmj7zufywh0dxgsdnzwlqqqmvg2', - 'bc1pn4mu0rvr7ugaj23qyyxcj9kj4ms6xcq8kz777etpdsu52mrza33qca9f9k', - 'bc1ps35dgqsfdnp92t3sczth54rjdet8r4jd3rm6f2ud8uzfflmd8kvsgc0xl0', - 'bc1ppk84a87jmu772myp0th6ydrq34972hujsdmjv653pmx9fxxfazmsz953n6', - 'bc1pru2aewv0u0g6w87xwf2kmq2sev0rx08zgpypgwraccwt8knv8e6s3vae2h', - 'bc1pgkh7nfe2l5543pk7r2c0cd82yp4qnkxla7sj9eyr6l2ysf7xv99qnq3nc3', - 'bc1ptg5e4af7d6dyswmykj9pfedgcrhv8mpnrlmxn5gw8fepusyn3ehsmxr0a3', - 'bc1pdx8sralug9qjzhpkdeum42dk86zq6vqtyqexetay0gk8dewzu2kq36vefz', - 'bc1pv65ll6h79ye2vc9cxtk0u0dm93v5n3gezsrn3grga3kkhut6e8hqegpvp7', - 'bc1pf3wcczcntfchcr36mp87fx46cltdaa5yg5hnxqx0ln2jnre8rryqkg4t56', - 'bc1pgqt93ptsw9xlgf4xqr4k6wtjfsztam6jsg9ad8mt7l0v3ny7enzq97hcl5', - 'bc1p5mr8cwtjwfyaldxsrpqml4a4jrq2ss6x98yraf2d3hqcu3c7rldq6e05hl', - 'bc1p2w87kftxjtxdfwul2rtjmr66sw9mdhas467pxkah6y3cwynscmvsa79v5m', - 'bc1pj609cy58du63dag06ljdf5z4k9wtpdv95cwxkasf4fwtatj4ymqqtlh5qg', - 'bc1pgmn70wn2n8t2zkgr857mm3zaf7yqjnuv076v53neum6299zkqevsy5ujfr', - 'bc1p84kxy08fqe3nqqcjqxya7zc59wwe8h92uehwj5c6698dugax9ptsw72r3l', - 'bc1pp3ng2vlsh447grrjt0acdvqdj2wcs5uw4x9kyzymq5ua6xtgmpmq7yly6u', - 'bc1pfkx52ptkcj774jendnw6ssdqh86vypy6zmryx4zptglz8gs2wmkseqx6h8', - 'bc1pxntyh9rj2jk22s8329gyzyu4zhcg9j04se467mz2llrgzkhmxfcsnw03qg', - 'bc1py3aw4rzkru6cv9u4xj99gufufauj0ezhsvwcj6rzw6s66tlm7r6s8gy8un', - 'bc1p7qltt278dvgee0rmdmjyfljullgw4ptz3rq7wp2sfcuwkvqujjssswm4zp', - 'bc1pd8n52vc6lf5sdza6p2979pdtu7adnhkgnmvu8ae6ux26l9zekwqs980lra', - 'bc1pmrsu0cevtdwtg2luvkfj6ej4jflxc37umd9265w2mqp5dwtfcsesphdrdd', - 'bc1p5587pmv6c7gtc7vtfycy2cjnu22ppe2yzgdl30mkpn8x4k6xwt5stcgy5c', - 'bc1p0xmse5e4rq0juxw9ahz4ne9v4p80t84lue46a7u4t9lczjympx2qlj87yf', - 'bc1p3hjvwxxwkkh5dwn2sc8zqv9qgl0xre5hj7fvfpfaecl6as2ww86q84294j', - 'bc1pcgqu6yxtw27405p2z8kk9adwsykzz954ujf0flym0j95mwvspphqrdklma', - 'bc1p2e7zf373kkkmgp3t7texdwegfmk2wg9v0827dq87zp0dhdaug4rq9knjay', - 'bc1pa5fp7uz4ysg260vvz74n7yghe4505wgyzedut6z3r4ajhyplfl2qumg3nt', - 'bc1pjkaxgevap4w9p65qzvwjx5kahz0p3mngepzpg9wzdte4a3mt4t5sxe88tf', - 'bc1pnfzv9m40kwmzux4pxljmd54qkxteguy9lkdgywda8j4pfssj4h8sm44v5k', - 'bc1p5rfevzz6jret4gsx9l2u8f3e8w7n35zdw6tdntyewh7wfkvcnensyfr7fj', - 'bc1pm2pkgxq8frdtxz9zng74p73s84plt5wf5udcsf5p3qykgukc9stqwdcczl', - 'bc1pr7uxu6f2rxt0a42yr7vre6lzqt6w07jepk73csmg8sdr75rqpj5smypzw6', - 'bc1ps7qzv9ul8602vp7yfnu9dr6457mg0pkl4d7emdjhg65c6kz56fqs2ej36v', - 'bc1pft3qp9vv8d65f6hy66p5ur5suse357fj4z00us98f6ajuxpy5v2qpsx089', - 'bc1padnp5u5x36tzv8kyw6ckn5wgmd0thuc7mst4w3my734963m0p3wsp93xq4', - 'bc1pvcwmlllxqckewlttez7872xev5pl63ce4rh34gn0elfqaljv868s0v30dc', - 'bc1phvs456kmfctdhv6hygr2hresfgw8ufcmmtd03ye40gzex26tz8zqq3z7tl', - 'bc1p0rh2uu7200x72gu2f5fn65aacxv758wsexjaggsxjygf3aws83gqrndqkc', - 'bc1pdjn7qd4t8p28y3d0j8wcv5akqjyg3wu5q3690k0ppp7pkh4dn7ps8rj7tq', - 'bc1pheny7amc6xsfgl42gqgxqvymypc98tu0gyfag468va93mcv0z4cqlyrrv6', - 'bc1pq4q8p4chxxpcyhnrkjetqn3dvhmwu4g788stgwwa6mfc4a2xsndsj02yu2', - 'bc1p677ldgt8c65lt8l7wl0e6qpz3zfd6j3vgv6xgztydlmduqq6zeuqnga9sh', - 'bc1pa0d6rkmuztq2le7ntd92mlag0z6etpxknq9fspzvw2kprytp43kq6zfnq7', - 'bc1pftxezv5qul52xtamym0dxqxdqwwgv5acqah3qflqh6el2zh92wss96wtrq', - 'bc1pssh09fsw250r8xmew2m6jy0zlfffratfag48p07xchw0vacsv4gsyzf4ed', - 'bc1p0qjzprtgp8tglswh7675u8vjtr6f9rqcazeac9yhxs6qzq50hv9q7pkkay', - 'bc1p649auvxunfqezjudxk7pydrnnne3ttnxllj6wkjjfukp32gxcf6sagqwce', - 'bc1ppzv6ejd9lc8rjvhl4kkz0jfhf595hzg9ly02sgcyj5htt9ukp0uqgxk3a5', - 'bc1pvhypjvsqjygjqdpgz3smw7jjgk46dyahafcpe8qnrlu6eep535ls8a4h8x', - 'bc1pjnyltm96gl89ragzuefm7n9zm6p8z8z0mw5w7gxnpa3038gacq8s2xjc25', - 'bc1p4uvt00mjws7g08rs8f3gk4hx28cztjvwze6p0c4sy5kvs892663sk609z4', - 'bc1pa7tkhwqe0e8766w67uydljgyz9scd3g7xy7xu7uhqy9zw8ufv4kqrdjyk0', - 'bc1ps7ncgkr4g8s7x5u9crur2h4k78uk6n9u0mwqjx4ka8d6djdyckascyvc25', - 'bc1pmy040qeut2fkvy9f3xlkumm7jky3awqhecvg66er5hec90q0l9vqqw6aj0', - 'bc1papcprqhhuf48e5x0s79z6pqpe76hq0yke0j7h99z9cfqw2muatxqxekclu', - 'bc1pf590pl0sja0ln4fsed5sd72f5mdq34lhlh0cjrnwu7saj2m7g6dqxcx87z', - 'bc1pzsqfk6g9e0w5hwhv3m0zak5rxcee28zu9ugz20cp03dtxazv5mzsmqq5w3', - 'bc1p7ga309ntxpv8rwnwz896q6acqwmhkhrxzwxy8kxhdad2puusznjsyfyzmk', - 'bc1pmxqls5gd0kn4p309rt48en4ledl9gcukpudy8cxuu20zkxmk0x7sywpgpj', - 'bc1pa6t73jr5wv9jvl7c89r3dtckqvcqkhtgce4t5gft8v2s4j26k5uqxg047n', - 'bc1pcd28epmqjhlve7lpsgezqxdz7fh4c3mwlr0t9hwvn5xk0vdhdqsqa5f45a', - 'bc1pafyvuf4kxem3u9ezjjt3jqj8j5muzswxhzugfflp6wrgl6mtaa4s7z5584', - 'bc1p4ylw8jvmgtesv8439p3ahhk9x6hduqz92ar9ej6d5ult3gvsndgsgpvjng', - 'bc1pkw085s98j3wsqfsk6ghl9e0ckzxlhahhu37az9j6qrk53755ujrsc90nva', - 'bc1pswxs924q5t24yvvemauja7dvwlduz0nutkq6eu0ug9ptm74kcyys4hrwpe', - 'bc1px8ghvnmj7lg79nw7tler4wxqgl5txfvq7nehpdjt07t7daf0vv0qk30jwu', - 'bc1pjaxy2l8mesfr57myj8q4ajl2s3x9f3rl5e0ktvy94mmynyg39waqqjw9zg', - 'bc1pvglnyqz9vawt74f5jvqx49f84pe37kny8kg78t6dfq9kyl9f5j7sfhywsz', - 'bc1prr8qa2eu5kkahlvrwau02cnjn3h3hptp0p37cj8vrek6682ugxaq3c27dq', - 'bc1p5egps97lezt7e0kdmt99nghdrmt3p2hm5um57yedqd4l9k733pusq9xu0g', - 'bc1p9sjgeztelm32rnk24pfw9yw0zjtrphfwgks2hxg5mlzp5q6djp8q8kvuvr', - 'bc1phzd3v76lgv2dhu89jc03rj4zjuaze38pq0tcy75vk8t2cj8ee55qx8je94', - 'bc1phesu76383cx57eg80z65lr94w8h063aq8yvz5wxeqpvn9vglugesvc5p5j', - 'bc1p8x4ntdgql5s4clsvwh04hhmj7njxdzthtf3xtdhtpgffsvkfhw8q7e0lrp', - 'bc1pr364ek9mh6tzvh4nvhe735ja6php05wkmlelq700n4cukwx75lhsazk2tu', - 'bc1pu0f8s69xv2wqyj82wszt8mzpftqk6hyysfd9dlnkv8zcqj2xeclsj0cy8l', - 'bc1pf9rdna4ug2e44u5x7q4qptm6vjxwn93nmu28xjf368rl6rhlzp5ssnw0d2', - 'bc1ppyrskaf06dxmcw4zedsj349zsfrr9fe7ck9pvdd4cvyv7ntjp9wqwxxjeq', - 'bc1pd4g6wem0tg98fz28v49u3dqzg4k8fhg8e3s7x60p9xzlmljqhklskvhe9q', - 'bc1pgkkdrvudn6v9wsqwz9fevqaq2we2c7qhcj8wcjrwjdrcmvsz03cqcl39c5', - 'bc1p557acdhw8qxajg7q2gmkmaf7yd9lns8wq3r3ywxpnwf66mgkjycqgamhv0', - 'bc1pzul2k7an8q8vzmn3w3jsl4gxw9yqveeenkuwcdjtucs64n8je6ds8aak3t', - 'bc1pkn63h5utrwle45mmllkl8avnnptfh9ef53qkn62022gt63ywvu4qlg65ph', - 'bc1p5ulg5wqcljrlyank5jh6w7x8hmmhdrg9v6l3m5a8gmmwh60g20pq3j307j', - 'bc1p2pvdsaq0zq5rnlm7pnqerg3yw6ajq7nuxal396j90kjh66xzwyhs6ed9u7', - 'bc1p32p4pknra7wz76rgkdxpyacsektkqm4ygfs369wsnalucsyhxe7ql058ul', - 'bc1pfz7cwvcvzpwly7ca35vc30ucxsm2p4ttyjn76anfv6u63y0ha6hqgw04q8', - 'bc1pqjlmmu2afwy9f7xfpl7ytnqvg0ksest8tzq805d82ht0rwckgmgsg2qr0c', - 'bc1px3dpv5vzp6xj5vcyuyqz9r96fnas0acmrl35wwu0u2fygu3fl94skm4dgp', - 'bc1p237ev25rm50jkyps56avcw49u7elp70vec36g2l4gl7mejt38j2sufemfd', - 'bc1py9jr3qjquuq720wqgkvuuczepxdlj0dvurpmzgum8vm3u5ufdhqqla85z9', - 'bc1pe9gecc828v90rf5n7dm4tcv7jtqjq5d0e8xqeea7whxauq2sldussq0zsl', - 'bc1p3enrsfqzsfy2p3yk6eyclmhdnsu3n4ju8dwrtjg9wcmr76wukj0qutfz66', - 'bc1pguz2pad7nn878n3cf58fq0t6n35zaw72ngfwkut8m4uahpsqfa7snxaymh', - 'bc1phngst8thnxvxf4njjpghp3y22386a8n9mlkgnjr3xdwzkyayutgsdfejx4', - 'bc1plkffql6wn2083672g8klwnqccczh7u5fr3h9e8ja5hkz4wg70rcq64cgh4', - 'bc1pwc9cz4zqvl8e08ej3mjhr65stazpln56yc70m76r26p9yaq42nesedrpdm', - 'bc1plnkgg629wa7atrd0h9u9m6q7ql2h82fpuz79akwys82mltma027qcpvhuw', - 'bc1pq4wgrsjdjef8cwlxd63zhexsdc83w03fyg7545uhs6yth2rgmr6q3qxwu8', - 'bc1pttln6sz2ayqexcjafdxyn58nyfatlcp0d0jnmckl8sv2avwfrxnsc5wvjn', - 'bc1pq84e0k0g25zheellpdtssrgmffusz08u34hw8trvcw5jsz3y8r7q4fcl6e', - 'bc1ph3nj7ag4wv485qqerzz72d0qe0xh42rxv6cn8pnmmtn8xk72hyfq8rvku3', - 'bc1pw9y8pn32ys3pxqk8ewgca74q64j0gwhnx3943ewna5v0dtzcmqmqadjxtw', - 'bc1p6fs4zfw3394trqar8qy5f669zdmeyd9nqpkgfwz0g9wh5tznjawsmhhweu', - 'bc1pqw4gnhs980ap3lq6dupucxsx0qhdu94zqxy4m3crtcm7sqrjc4tqjrcuuy', - 'bc1p95kmunznuh823utarhkas08wh9zsqw5ceshz3qtqrprfyn5znrkst744zy', - 'bc1ppernct4gxuyy0zaxkxnprc5x5h33zjylep4ayss47p2f4qrqjd3swutn4p', - 'bc1p2aj30zrmmrevs0zy0wuhfjupwtpasntfauvke63rvxcaptndknfqarenpj', - 'bc1pzfufj5hl3rukn02ztsq4gp7ftz4ndn9uxvvgy62fyvhgvfjeeuwqnhgcth', - 'bc1pngfunc2vyjkgpkgwqkqww6pz85zhv6cw6rlj8sw28v27d8lfg3xqqp5tvh', - 'bc1pz3affd66r2wreg24n5qjhzjff6vd9yyhrkpgsz79lkjpgu3g053sjeuzgj', - 'bc1padm32p3vxdhpek5633wy2t5t5dsylhzg93k8jlqjpapvr54klmssjh56df', - 'bc1ptuth4ehdz5nw8umy64qf83qn9536y0ccjmdny90aeup948lsw4wqx6tdyr', - 'bc1pqf7p9g4n09as897qs6wmpy5c02tm6xkzkpp3jwzf7eq7camy837s4tx4hw', - 'bc1p2h9lspkjg0x9ue5rnfh2qxp8z5mq78wl3034llpdwmr8mz3wa4hspyhc47', - 'bc1p396tp04mq99q89s2v2e0jsk97k5mhlpgm0g9tv4cezk72futn7vq8jqtnw', - 'bc1pk4xqgyzyumlt577gv3n7pamzg9e9xphe4n4lsp8c8lzg3t4rhapqje5nvg', - 'bc1p5tv8f3hd9jcexnrsrtuf9yxmshtqv2jpj4kdma4kcr5qlredcyrqyucmuz', - 'bc1p4tju5509klfx9jgkdqausaj6z9j8twfdg45w0rg7k4snqul8whss67r49t', - 'bc1ph4759dznfnfm9wra5hctvspqvwt6khmv4mhevz2mr7kx420uychsra970m', - 'bc1p9v63tz5adj2g0ppglenangyfjczqjwfrv3256sey8kra4v3cvg6qlpuhrc', - 'bc1per0p84pul3sjwhs5frmq5rh4xtlv6ty9g4jcgfyr5hrgqdfuqy3snfq95f', - 'bc1p780rzaana8jj0cd6uupyhghewat2e6pthrjaxlkfw5uepkgn28kqrdp4kq', - 'bc1p2kjltr4fp845aeepl359mp7vs47j6s9a9xk8ffvfux98p2tnkv3s7drtfs', - 'bc1pnt4avjw59hkq94dpnkrp7qm0mykmhg7v94wccuu6an0znw4xa0gsmlfdxm', - 'bc1pmkln4xl8zj383umglpcv4ua40gugsthycwj2tfjtaftuydstvwtqghk8qa', - 'bc1pd428qspvaqmtffr4au9ddan9yhuj5exsp6jt503g249zccsns4fqymlnm6', - 'bc1pkafkf6s0l4yyx8p3csk9ujuguev9chcj3hx6pznqj5tqxtmw4s7stf0svc', - 'bc1pm6s7mnu00xc8afuxpxx0l0t9vlc328e44lejda53wwuw5pfzy7vqp9caqq', - 'bc1pq2cv5h8efj0q3w6j3lcp7anl0hsaywjjrsansyhmmw08pl8tn38qu73alv', - 'bc1pjryhher7fpq05dq0f9dwngswqmpavnazl35rvkg032evmseeu44q8vrx40', - 'bc1pfeluypk5qwnfyr7evhlltey0yw7zsjz244sdw63teshdthgrmwsq8v2zhk', - 'bc1pgdp667s8lyv46smdnvhj4skux5nkmnx2a242kyxfawagatj2ln4qhuzhsr', - 'bc1pzep05tpvqud2pnpyky6sha6y6r2pnexwwlwxnuetetymnsvtzqsshkhsjs', - 'bc1pyh0ryrvzek2s7wpz6g6f4hh0paahacxmhdgcl5hqqrzmrwa6xk6qnw23nv', - 'bc1p46z6hx65cl0kgexe8322ta3wj7n6d4vz2v3qkr3cl0t7kw2v3j7qyqa6qk', - 'bc1p2ds3vnuy0ytw2u3k5e2scwe7yrnfa28ajctpd2erl7gje09dgxsqs3n864', - 'bc1p00fpem8c4q9kfpezqdrdl573ap28gveh2s4d3d63lvzf9jjq8xcqulml0a', - 'bc1p3n38e98v05tku798y3ekmlqf7q8huhllhzj5manfdf4ksgzrhkzqu34rkv', - 'bc1pedhen8gq2gf3jt7gyn9f8zq2f66jxl9y83achg92zjulvvaqvhnsw2qyv2', - 'bc1pze63tq5pf7tmnre227tn84yeqm2fplc6fhqhalu4vtxadlmq3fkqw02r5u', - 'bc1p7xnqsp85qqcyk6cmnnaq6qfvythl8j8jwh8a326dn5g5jr83wvhsnretgk', - 'bc1pny33wz79myncm6gcxr4wgnkn637xmqejqh9n6d4w4yv85en3u77qqjpd6e', - 'bc1prvluvnph4v36wuye62vejplhpu8nkyjv438d8naw4jztplvzw4dsxuf783', - 'bc1pe2efk6v84njvss25x5hagrsphsdvj0r9uygkxke0yfls345t2j4qvxwkxx', - 'bc1pq8ruxhh9u8exdk0w5z6zz2jtdf94kwpkweenmn6ygzxqg2vljpnqhvf6wg', - 'bc1pvfmx8mur82k9fx7q6hmgsmntukf8qvh0wtd8y750me9a95g8lqsq0ksu5l', - 'bc1pxkrm0j956yu5l5tljamx559jhfaxk7c630tdy9tlnfgevuwp670swy2d7m', - 'bc1pzc0rpmqyclkeqwks7wewq9afnykvupgtfquw4gutj6uday45yjdsc9r4uu', - 'bc1p6p4gvfcrlh44j93mhamduuzvyr7ezyg0fd5p6q3drg6qnnn4adxsnkjmye', - 'bc1p2hme44vjq2e4fxv38u7gv2fvtcgt3ja6y6k9g0usp0lzsjs5jtds7t7taw', - 'bc1pum78ujgtj6884sx2q3ye47nssd9lfznexfu5lxtkeax46tnklq2s8xrkzm', - 'bc1p7frxq4c2g5swzhelcx3xdfdkgxqnaaz5xaqs3q83h4gl40fwlx4q9umlyc', - 'bc1pg39jm8gzjyhmcyyw00lqfs0u83c7grp8zsdsttjwemdjz6mmnm7qud3wyg', - 'bc1pe2nhcmm9pvcqfudep2t9n54wzzhnplnsxp0jxxka789e27p3582s6pfht8', - 'bc1pgae3tyweaa5qd5czshxm2yh3v25q4t3fj030hh2pl64mxs6fwl6q6xt3gx', - 'bc1ps94nyps7tjjt3r2dvpxkxsds7lc6zg50wdpgkxu352pw7svfcy0q0n8ff6', - 'bc1pftvcfatnjs0reqd7ht8q45flzf2tjn22hcgn65hu3x2y5wh0txdslxz9xf', - 'bc1pxn7nht46qk79gu64f72ljkc0nusw8y6790fpecpespe67mv35l2sd0x305', - 'bc1pwtxvjty24zjsmtucuzxl2g8djtyt0u84kkhvmncdara97sxc0gys077yft', - 'bc1p9pt50nc8ujhy9gxysskrvk8j5gky3nyxpycxlr2n6v707dh0fk3ssyxhjh', - 'bc1p989mxkms82ztlwtlwuhrgcglxump3yhltqf4hy6kwg2qeg8ys8vq6klg79', - 'bc1p4cl8f32l5vmz2na30k2hxdx8djg2lcw9elxz2k45s8rws5jj35lslhhnqy', - 'bc1p9mg7dhctae22csxk5j0uy434x7jxueuq87ppcs5npsaa3kcm5a0sete8hr', - 'bc1pklqa0rwwdqce0wa5wn7l3lvslguu8suffv0wjxj6kx4c33n6uqxszgvepr', - 'bc1pxll06yfq3mwl6hz0h6fp6wsfcv4xwytte5zlgjgsvpq0jzz5hmpqlnlk5d', - 'bc1pc8js2p28282gvjw8vwpq0ps7w04pdjvx57mags29udamw73hrqls35dq9l', - 'bc1pph37e27k3ssm737fedlpsra794n5p29q7au98vxc6ntm6al0h40q83anah', - 'bc1ppx4yt0ukn8rpu8synzhzwcrvv9tcn0xc2cuaznvx2k80rk58merq4wq8mj', - 'bc1p2e3yjpjsm50vnv47hn5j4fepvfxcl0ha0ljvdlpzm2ze6sh963qstz3sqq', - 'bc1px3j0yvkh7qy6p5g86fqdu0jmk9cy3lrcvzxf28sp3uhg5a28juds4fvw8n', - 'bc1p6yala2kf77c3urre69ln3n7mdrv2udptty2gfc5yzzfytmcnkhqstm2uh2', - 'bc1pezpglnkd2dg63huk9ahhu4j0asp6z53lqgwwlp5030dqxf5ahvhqzysl9y', - 'bc1pf8ruje87k3rwu8y99qdzuw34yscjdc8n9cte5tnv3au9wy8wwkvqxwau88', - 'bc1p37hyq62wl7vzltpclk8r6qaeypxxgv0qf4jr7fl4l5qnt3unnmjqg7f940', - 'bc1p9q5xkax96hwtcn8le80fx3eyacja8k6xslxg80r7phfhsyvps23qx0cfuk', - 'bc1p2989qq2t4k5zvsnr688d9mma5d2v5xf3jdy2wgd2vahx68qe0m3sxs4xm8', - 'bc1pvjk3rxpjen2z7fn638ngfh0mdv29ud7wdgvptp4njya54dunmesqz3sup2', - 'bc1p8lm2y73lvr7dgtng228xx74hc38st73amygvk6cg238mx7n5x0wsrpd4pn', - 'bc1prf53z94halzgc29cgzpvwy2t3svdrytq4fyjgydk5tn77rayxmms2qq8q8', - 'bc1pkngwflk3kk3yktwz7y63s32pmrjn5ndsynn3nzd2ry0vp39xpppqleyur5', - 'bc1pyhgklu8uejlxn20n6ffkwqgsqp3u5rny7x9tppf2dhdafgeavwgsksn30v', - 'bc1pq6skvxwphwny4xte236wgqgpnzstgclvqxk4k9z4hgt6j9eqxfesdzza5v', - 'bc1p24atc2kptgdk73mgphv22lww2r3m462c0pte94u3ledzvy25s6xs23tlg9', - 'bc1p0tqynxkrku2akram3jp8fyv7kz0d8e26jugc9f3gjyppt36yvwzs8jruaa', - 'bc1pyxnqmfklufkm8mrcurmjvs748pfqz2lvt94ad877u3txyexjfkwsuqu0st', - 'bc1p0h2lygmz5yt6n859hr3lrk27jc2vtrgrrmxjwhk69zrmdchdqt9qwa7qt8', - 'bc1p9yn95mzfvzyes3cehfaxs9ax3wru2whrfp26tufa7yz4rsdpz4tsp9dq9u', - 'bc1pde9hxaf32tds6qqhaxrhpxn53gycchgzhf2gzgzhvvkk7jsr0xaqn3a9j3', - 'bc1p0yqnuv554vvfsvy3k909dprsepzu0jjes7k6dshvsvh0afrpuhfshd2r9r', - 'bc1pag3c8pp3t66jdfdcscx2zvj7gc3chc0l788ldsaw28hx262hexuquv2j28', - 'bc1pe9gn85dpv08ak06y3h0rctwh5tqj5x6xzesm8zfjqq7uuyyrhu9s24hezd', - 'bc1papxmk5kvp4frp5s6tnplc5zpunq476tzav87jxq6xgp6skvspkzs9adpra', - 'bc1ps5v7huguavr6y039fpcgqc3j7qkzdwmuqkucde37fw04ppmer3dq4957cg', - 'bc1pk4kasrnvzqk75e8p974lmuqm0dpg0cc8lx05cpf6yuf5p8yv800sg27e90', - 'bc1pe7zkzmzgv30r7amnc7tr8r9rjzvhgraf39j559evz7nkvqh8ht6qgjfj7j', - 'bc1p8tpj3g3ds3drp5daeg783j2tjpew8pdz98gnpmee6uj6l8ukf40qlpsvua', - 'bc1p2edvuq7493tvjeyrf3s3qyvakxsqfurvl6xzuazh4hnld908k93ssa96zm', - 'bc1p85eweta5rr34xj3kj77hkacgvhksf6k7mv09v76220jzezjr3yxsdl5ugp', - 'bc1pfqw4dze3k9spju3v4yxxv65t7fe09tta4jgfh0t9h02fjq0cxg0qmzrfqu', - 'bc1plafg3vaap0ulvl2r2mtaz97220sxelzd5mn87gsc9vf5m508lq3sz9vx8s', - 'bc1pl8c08aqsx90kzczkvwyu84gke59692ttk4ghh77sp9cpmynlmqhs0j423a', - 'bc1p0v3a8mc0yytwt26zxyjjscvw3apy56tra7hd0vhdrnuggy5pxgaqspf88d', - 'bc1p927pm4zl7t2qqrh77dmyl2vpesx0gm50ll7u26rp0nle4y8g3tcqn4ecuy', - 'bc1pnwu72ud69pleph0mcjqht0ckt57wkzqrn6n4yd3ltkkc9rpujj0qgswzhr', - 'bc1px3w3hyhlaxdlwacmzxlsdmaqymzqamcgwrzsslvr7jv62s9x8cwsf3umca', - 'bc1pavzq4xs02kqndgxhtw5e2h0sge85nqx2djgp92sd68fhsm0n09sq675553', - 'bc1pszzqthpe9zgws95580sp7uxylrdycq9p6ynxuuph8qvgjtuq6hdsqdgyqs', - 'bc1pddcp6s2z04n4dduljl25qrw8w9s7wy0k4zyp4r63uggc95z0jz9qhurtaw', - 'bc1phnsnnk2red4m46r5d8q7rxjj5asas8a24whc6ksm9zryk66czvus77m7v7', - 'bc1p6qlp254a34haw4yfgg9knqmulctamnldn5mv9r9lupc2e27prpeqmcd78u', - 'bc1pet3xftasta80uwvt366fz5py4ranhpq4zjnsrtacw67mtjzcn3kqw3msml', - 'bc1p26j6m2z3588th0u33as6a4gy9undawswga8405hq23ak2y6mz6eqhnrdpg', - 'bc1pk2cl9d5qz4zpw3fxtcpjqdgecg9s7du9gvj8ygfnnawcn3pmrvuqvjd9v7', - 'bc1pe7yh9y8z0u7t3hxds2ege2uhe3lwtz50mj6fuqn0yv97xazyer4qwva8f4', - 'bc1pujnqpa0auf9p0granvy477gu7y4tcwt2scrayzshgnr0lxx5ddes70hgj3', - 'bc1pr0k9wnm78qrhy9zxjxxm7tywv8xc72dqp9jz2gsz0cgtyj20rmkqctwr7g', - 'bc1ptmv4xztjcnlzh9y8fns79784zwjctxqfum8zwygmukd2qywsfvxq3vm9ly', - 'bc1passv8s0jsh5rwfrkmtpq9mxdfxng9vaguz0vf9nx0rg2u3w2xxxqht25d7', - 'bc1pcx4rgvxdv4alt36n6430aqxa4nqq5gjtmlfeqaehs4q65fg5yn0qp4lfg4', - 'bc1p9xp2nz48r5qul435w8ezh5pc2teqhkgunwtlu5wqffjqgde7vvrsjeusec', - 'bc1pf5ajz80htn2xawhz0urw9phz478yrk6fu274gt5gwlg8st03uglqpua3gk', - 'bc1pslhqk09v6l7g9gxlzu7sk7gdjwstf90k9ga80dgpe7cs0lt8ftksghavfs', - 'bc1ppw0pqsnzct3ydrcya0zffap5pzd8arappv5c76yddkg4g9z98flqllc9dp', - 'bc1p57lm9wgtvrqvqpmsl42gd7fuj7a880z905srj87sh4kex8pmmv8qskrn8n', - 'bc1pcfmkzd92jkgn5ccq58rvxgclnhwznul7spl3xyj07242jexv4ggqp7dxu6', - 'bc1pyd5vqy48fc2dkqd9gwpmqh32pvz4rpem99unzvzqghlzj06403eqkgmnrw', - 'bc1pwk34avuw0eezncy3vpx42asffe49466peushvw2ume28p55rfykq8cca5n', - 'bc1pnj9k9lxufc2wand8qmpq93xyclajgpmmtlcdxxrrwwv0dlejj82q2tz708', - 'bc1prkuk46zha0tynl4ye8wunpr4z077wfr79gn7wlf7repuj4k2segqgskxy2', - 'bc1p43elyt4xu6675uqgg90knlqsatl2efwe8rxctdpd7vyu0nmx2wsqy5kn4v', - 'bc1pudep5uxq94f33uuma0kcglyfm9uhzl0v324ajdgvd2p4250ja5hqra6c94', - 'bc1pwwx2gdpnglxz5g55jc43zjv8gw5wj0gl8jmudmzezwlmr5eknfmqxhewqv', - 'bc1pftkxdl9r0p58z2gtr3qrm2zalsy55skfupwlxpnagwcdk8a69k4syl7q0z', - 'bc1pcp9df4pzu9286kulz90dd7rvjqsp7j96n8d99avcv6y6d52tpkgs9dssnw', - 'bc1pa0cmdxw6wpyt74wl70mwx8xvmnguch7vxlt765c9zv9fphrrntsq8l58ze', - 'bc1pkh59u05ayelaau7ed7vhnttd8ne8k490eynxgn6mlzzl8qe74s6sy6hf9j', - 'bc1prtsvk869ppkyezjr5gfh0md5rd4f67uapv8jkyfwfsfzeh9ue47qe4hdxs', - 'bc1psnfhufxkagpzf5wxuf0uph9ewfj3v6e7dst6m69rjuzj6jkge05qu9fgj3', - 'bc1ps8u2rqyz7hmvlwlp4pltut0wx3yfs0nfljsgsetdwe9aw6mwrgqsy98c34', - 'bc1pqll3wtcqghpt4kwdkq2su8xecrt0k2a7khwsvgzh76pwfmpcav9swsculg', - 'bc1p6znqe43w23psy9ph6u3c5qay9f046h67mm3e6fnd09pq9hxvpwlq7p5p2s', - 'bc1pvhsfaq4rfw2lrr56rjr5hm6fkpekurs89lh2xtuetm7fyjx9nm9qzxvnwp', - 'bc1p6ah9jk8f646j9dugguryg9c32asvjdwk72erkfe6avnxkzfkn2jsrsgym9', - 'bc1p873jgpcamw4jm3zulshfw3x6vc5hxpzv6twgrnjf6k97lef2ax7q77qsut', - 'bc1p92yzefhg4zhtgg6ja4xtz9rmjnl0d2v26880y4ca0qu9p2kq7uaq92tync', - 'bc1pnh4uwlmqp56wvrg45ff83dlu09aev70trm9znrkzsc4rnwaprstqh0c8xk', - 'bc1pjtmkcudjaey6pve3qps8htpss6epmlf3xa53xx085gj25plezqrskgejky', - 'bc1pl9kqpnnaswvwhdxyvwpszwlqyhsfvtsnhfqwvmdd0mm8rzw805lqmu2zuc', - 'bc1pp7e5hgwh2vl52zmtsg2szvp0ls6wp6673du2qrmh3fy25u25qw9s400mfg', - 'bc1py80nuvk2m4xns6xg5l0k2wdtg7hath6lghcrupcahr8knlyr6daqljsrqd', - 'bc1pmqepnfttfrjfzrgg8expazwlnhq8z5velc4yfketswy8x70qpvkswkzxvc', - 'bc1pfh24d0aej2sxlck7saq4e446dkd8lnmqlltpp9d5tp5klaqpfzeqjqhyw0', - 'bc1pf8aw2ktm7wqyt0pw3gfv83rvj9gsg4k59ug6zxsqhj24crhsg20sjws8sk', - 'bc1pn7964f7usyktfl9l5nglv4zl99892ecureesftprzetdlcnqxl9sy95lc9', - 'bc1p6zs0wsd622avlh4r63tllma9j9sjc3ggealwjh3axa9gxe0s5snqdgqx7w', - 'bc1p93qdxz7t7na9ttvx4qrfd068znpftq9yp8w2487zp49rym92c9dqz8ppvr', - 'bc1p7drwu6ahwg8lxtfumyry39e2kysam6fk5l44xff6d6h39uh86w6skqtgy5', - 'bc1pm6n64jew63cm9fxvkn65aynw2l27khp0s8s8eqxl647zqje82t6sv0csp0', - 'bc1pcyftl5v96ap8w24x8c5ew7csggafvwufuvwgxn5hax6pvceamdas0gm2k3', - 'bc1p5rxhyx93jjzllkg5694uqhfdmz9ulmzcx9ly0tndq74qdlw6m60sft9ak0', - 'bc1p9yyplz4tsytkv548jxcqphntj7n2dyl9fzlxrcnngmzl6j4txvhs4whjwe', - 'bc1pfnqw4k4ecpe9w4n3rdgp9stuqaln95vf8ymwwema3h77e2p3fhgqf08zcz', - 'bc1pg4p4kxs84y39nlwsmxn3kd97g06wy63zdmngq9kceqpdctn8v3cqc00ddr', - 'bc1pk3cct9032h204zpqu3cywc8mak9pscys9hgkcqywhkw2js0jdw4saydwxv', - 'bc1p5dqqeq8mmdydadn5cmw8cr4vphlj4wfphcew7rhkcdyqrlxx7uzqxrsxf6', - 'bc1pku0da7v2ngkpmsxlhgku4m2gh2kfnp596y2ura0j4mf5a0xfs82qpfqnmy', - 'bc1pn9muhfua9s62rcswgfvnuvlkqn56hhxuu6yxqc40c7ktamr5tp8syc478k', - 'bc1ppg6yaewsrtpecmw3l8ayjhlxdygkflwuqmhl6sdrprrzqmtuafks5rn4wl', - 'bc1pcfe83gn6sdlmlv5tggeq60zw5pe0j0puaxrdsemsw3wtcck9myqqsjvjkx', - 'bc1puuquc4zzusldlmf5sd0ym6hhyh8a6zqufxf8qu2dxsyqlqa7zstssm88dq', - 'bc1p9vgpwl6pssk50vcfcys36f8yq7rllc007pg9xulvmyn5686qghhqhczsqr', - 'bc1pewyp27d8td020sq5f6gcepszsqz69zre3894fymst4rfawudr7fsa2h8au', - 'bc1p2vlx46mxmzeep743p7n6584ywjq8agpy9mvg5z5gsq26ch306wxs84rxkx', - 'bc1p453r94wgvd4qydu5ayqtaxujdqj6xzlfqupm0cwhpv00cs69v3zq76xldm', - 'bc1pvtdjphcexuuhyjwzgdfq73hed6dhd8xwa04rtq9gl7zxtaej6syqlq5320', - 'bc1pmspq2ref5mt3lxlzwgq7e088cwju2y9yj8260t7g8k0y80lzln5qwqke6t', - 'bc1pm8uzu7ffl6hazddrjz2wq6ns8dtzdexngpj4wd2sqlme8t0jvrgqau2x3e', - 'bc1przd2rhcnewnscngzxsxp5yz5p9k88hlknyl29k7vgq2djq49a7ms8q23xh', - 'bc1puelp7em5krt64c54ay7q4r5z0wg5p39uf50y669elykder235fxsxq3yfu', - 'bc1peje8rnywzmca66p577prd93z7uwrz70wuesjxa8m8aqrngp4kxpqf3ef45', - 'bc1pxg6t8qy309y8ehkzp87xlwf76c7ue7u2u9qzw4c7ghsu6t4h26hq248k6h', - 'bc1phu9zk846z64ysn8u9lfkx9pzf6na6nq8uycd03rmjs6434z2ndesyfrvpw', - 'bc1prwc6zc70spq3n3sjqtkx8we58dcg4lcxghwlch6muz0tsjnsd69swry2tz', - 'bc1p6tdu7nkaxhuee8n7zv6j9jtmv56mdd8a6fa57p72f36ltqp0dp3qe6dzwu', - 'bc1pqq5m5nc938xdacw3msdva4hx45vmamgzjfrpz42nyg5lrlsq99nqtsklph', - 'bc1p6uzm2e837zyqwe2awg0dpvsfa4akk0xehcdq70c94xqfaqhe9j4sz3kjk7', - 'bc1pj3xa6mfqv4krrfl0vmyf9zjvhpcsphtauvllv5e0unrnqseke56qz7kt69', - 'bc1pzllsl9d36pff8cq5klfnhn3p2vhl80mhwg5u8cql60dldfj9gr7q7selqz', - 'bc1pr9muzns9lafvyxl5qa2xse5ydgpcvjxxqjd8tewelgaa3v5fufhstsuqer', - 'bc1p0huwn4v8dsp959d3u5te8t6d992cy3uwwkj365els6qn7tudl8lsfqxg7l', - 'bc1p7n5rmt74nz2h870em276w48rcv7t7kgs6lxrajdcv93p6h6pwpuqhxuy85', - 'bc1ptkfcymqjd5ehw2t3trz6etu9rvcn0rryarkx6dwqy3s575x6twjswarwj8', - 'bc1pqnezmvet0l0ef3aan8cf3nampn72ah9qjn9da5a5qw4ljrlxjmpstes3h5', - 'bc1ptrl567f60nswqf7s6mz2vs5swj7c85zzys49xl505elll2rpszzskkmeqv', - 'bc1pu0wufndhwk2xa9vs5hesxj0dqknl37zzpuu766dgp3waxvwspqxs6f9hq0', - 'bc1puswt8zcdmg7zysajyxff4w2wwkzh8wtlcwgamuvhnyawr9lv40zskwxgh5', - 'bc1pl672vsqzvq6n52r8ltqp3yysmlwyh3tqgkpssyef89es3ts2ny9sfavpuj', - 'bc1p53d9ren0ytuh65gpkzn5mdq6fqye33k5daf09t46e7q538payx6s6emfxd', - 'bc1pywezkydczan6evpqsv2p76xy3y0z9hukjp4truf7glcv97gv6zssg02l2s', - 'bc1paf56ayvszfw98qx0e7xc0l8ygzuwt8qwnm0m23gps5efprvxgzjqdt5n6k', - 'bc1pnswdwtwwts3fglgmk45t8lmgvt5780hgjdff488cuukjnrua4tespj6t8w', - 'bc1p9rjdnmppms4j4g720zl65y6459qknqyqnh4whczdv5aauuuxh2jqwtlc9k', - 'bc1pfwf2hfylprwxxeeazauq896pa0cap38xtjcpxl29s9mpmzsg8xcq6h73sx', - 'bc1pd6s7cp4c6zdxzslk4exquyf8xujhuv8rm505fut70kf7z8vrwn4qmnd2eh', - 'bc1pepm4h223es4xs4h6w55f7ydeccm2kerx4mgffvhml8x836lmljusxd4maj', - 'bc1plmnedpm8fs8asevrwl03wx8sstsr9krk7dvvt9qy2ryyrhktudnslcdre9', - 'bc1pg7ntrvvr93shrn7lncnzz8fja38kk7fqq398mcww8dsq8ngyph4sc4gdyh', - 'bc1putp83u3saqptzxlvmfs2ldr2v3k7w5h6cpr0780n6shg0uyef3nqe64lyk', - 'bc1phkpad7qh45qv5fxpt479d5hs575jryq4u8jasqdmndmpnrgs922sh79e9f', - 'bc1pdpunm0rwr50yerfres8hu2hlrk7d3cqnteyuuyrkwhjs7aahv52qfmq3ed', - 'bc1pqnfak3zeqd44dycstxzs9wj2tf9ec9d3v8l5z4ref59gmzms7t7ss6cv5k', - 'bc1p46t72jvwknytr67d444jrjs4322z4z88rfmdt3aesqv0kmxrag9qa3ykmr', - 'bc1prqtx6dz3ujkhrh99vywlhc29m95w3jpyahvkyu3zrfgyhh53q66qsr65va', - 'bc1ppedswh5hn89ehpj2srcr05kcc0yskfwuzk8j5myc3mnt3qw0d7zsgwy8p6', - 'bc1prvcezqavsz8rymmez7mtyremsxwwvs9u2jkdzmnel0mp507tweyspd8luc', - 'bc1plce0nafqhx9apc7llnuu2lrflm5ezzvrxvxyph9g652ewtggm5nse8c04w', - 'bc1p36tjzzcwv3r79h4q559a3778fkddcsju3y87enqj0slx8zuh66vqf4d8jq', - 'bc1p2vh6pwdehq04rtm6e7gv7kckddj2mtqxekpmwajcw5nrxjqt888qnv46ta', - 'bc1p5sjstu4txplzjfqrrhjzfc6gudrdeh0fkpdgc5fvtdnwzemv5qesdrm3vf', - 'bc1pnv7ntcuqedexfa29shkktup82dmgycl6fhtuukm3ysepjfqp4qdqv80n8r', - 'bc1phr5z65p7lvu33rdc9a02mgdx3wnart8lavr60wf7n4s04qf9rwtqcatd7x', - 'bc1pv57tzfsrm0p68788e68d8wz0rahgqzscmw7zzc00u42fne70f65szuaxnt', - 'bc1pr9n3fgm2ar0t5gjpjt6u9dtw2dyvcpn8ax58fwry44yxdqpvscxsn8ejkc', - 'bc1pnqyytpdnfvakmr5nh6emcjnhqnxh9z94674k7z2y8zr05zrw8egqmk9fcm', - 'bc1pe3an2yh72wxva6m9gsf3ds7nm95mqsk4affc7xj9zue7m3zgwgmsfpsqxj', - 'bc1pv8unzcdqkpezavs4wpqwd8asypg9g389s724x0yn0unfhkx9g6psqhryjz', - 'bc1pm73ty6xd95xu96hjxetqmuydh8prk7e4daepg8w6n9t0uhnxez7qyfeye4', - 'bc1p9fyvcd5deqks7d0l6h38wzyglvlyhp6077f8rtzw95ut0g5gaussy2kj6m', - 'bc1p3rl6gauq9srgx9l39zy37vkfluvynfkdp7gtw3h5250h7tjnpfzslkzhwy', - 'bc1pe2dq05emu90krwshwdfnscr9mhtdc0ushxwdw2l9ntaxqzk5qy4slxm6fj', - 'bc1pngq7m0fmf7c54mccgcsxufqh7zszfqksd8ed55eh6mm050wak9lq2azyz4', - 'bc1pxjfk6knsqr75a9st7v6fkmve76jkufqz3hyrwyanauyqmlq5q7qs58p43c', - 'bc1pweqvl0eqzxmy7e3frktx8h9gefha7r733qptuku895lxrxl08kuq2s7jxn', - 'bc1pjtr5g90kh4793ajqq8dd27vrlvpf2j47p3xkaga5ryedcvpx5mwsyl3v79', - 'bc1pkn4rz05m4cfkw3mjhh9z43477868xdjrzz0dxjwkjrq565cdxx7sw2reag', - 'bc1ps3rdaf6g3hnqz347dw8ljk0z4y407tcdkk82e84eqrqdsjkesrlqdel9mw', - 'bc1peg094ja76hqj5d9y93rdgrls7uf29rrus3nrkyqqz4ms9ang638sdj32jh', - 'bc1pkfhwtr4rn6nyl7ct2yxxglq60qr0nusr2zm5t7kp98mu3w2uh3dqzvkjjn', - 'bc1pytd8ayd6fut06azy090e7g35xla9pcd2lkje202cm2p9h6g6sddqmt4ctd', - 'bc1punpttta0euqh529h6jcw9h3aszag7pf89kpf2mzw2t3pfcwa0zjqp66sjq', - 'bc1pk9kgvykk5l8409an8nk477g33gn4wawhwyup4smqf3ht0czedm6sqxyqkn', - 'bc1pu24tqazhmrgsv7w0kzm60v84cn0mvjfumltnvl5n5j7l85yxmmrs8rqa78', - 'bc1p8sduagt8hwnkc3sz8a3ss5vqe75sd7lp3r5ux6ywmlu0c08677jsp8xy5r', - 'bc1prmy5agjlp6glvr8eeh3rgkfzvfse9kcn5jw3lene256ht2dmqmxskxn47c', - 'bc1p9pfde9lpvptkxku9je3e59fle6jh3u03x68lg9tyrl4jkf7ve34qysmppz', - 'bc1pgjcqynw7u7s69y6384vxwl7t6u87xg4z4chm4mumncfr0xh0xp3shcsp0s', - 'bc1pljkmur34sez8y4asrk3w9v357vatvacspakgl2psdhhrg3zhehdsp3k5ge', - 'bc1pwfhvxgzkpcn4r6sl732spfy2ppfm7xds5j3cd7l093zx5n8j4j6scpwzn7', - 'bc1pf56cfl2fugk3rr8gn2v0w5qlhd98szwcrsays45ncgyzjhyyzp6sc3f6xr', - 'bc1pvzxfw0gtln544w5j9upl5usqyqxta2fcet88dd5658zvjgy9yucq6vccla', - 'bc1pkhjh99j6hh703a4d6k7zwdaqsj3kk0llquemq4qguhs5023384aqjyam3v', - 'bc1p3dtgk9yfkj83ru8yxan2mssd6ajn55z89y7a2wqpxwjxlm6yf6jqs2fxka', - 'bc1pwv4avw5n8r968ds7gar2prre6cng53nlzpyvcwp39sz8hz4qpcqqe29aj9', - 'bc1ptw7t4ahzwvun40p89j8vav880ky9trfp4c8pjvfgthqwrt6zem8sefnkce', - 'bc1pgfke95rd8tn7wg9f3nzjlwytschl8mqle26zjwn8lthvary57n2sw9shxt', - 'bc1p89c2yqhsdhgkpw463gvc7at6yxajj52av23exjsgykmhlwt3rpws6jdq50', - 'bc1p8sjqjturwayk6d88at3ypwcegzmjx0wyhwdsrttnrugh7t328pxq3x5gt9', - 'bc1pjpxvl3v0dfkjhhugjds3lnjg0j3g7kdwjjwke725jft3hhe8v8yqm00mnl', - 'bc1pvhde7d0h8h33mnhjj23vfjjr8l4kuu6xk3v2lmzj6532egsysqsqtdaqme', - 'bc1pnhd0pq7a26hsvhav0psdgqkk9we26cf3cdcmka270yxw0a4es54q33wa6e', - 'bc1phpu50k7rh0sdv2ezhuznkjrz6rzm6n4jt5lr9aezccs9uhqn9mfs9falq2', - 'bc1p4jq328ew2e0zptqgq9gza4tcyjg2hknvdxtsft5cxnayg6dsapsqwugnf7', - 'bc1p5l5xl460ezjnd0j9t7fpj9qdpl38hepuprgagt9fp3rj527tn5zq5r2jsv', - 'bc1p6n86rrjqvla82dypv75s29ndugev6mt0j0qwwhgkn9guw3zvvq9qz6phss', - 'bc1pt7pwq3en6na0g9n9d69ple2c0m6534fcwhh7nzd45m7qvztvl5mq6za46x', - 'bc1pg8ddz3lgdyzezlrrc0xv6ur2e5l94ymz3rqhzeq6v7wa7r0haqusgpvzqm', - 'bc1p4aq7du7juypnclpjush9wnr8y432zn4q4n0wx8sfhr6rx0pasacsaf8d6w', - 'bc1p3sggrqwl0d9kknq4lmlllcr3eq62rjp0r3je9acyx9xql07envyqntr8cy', - 'bc1p3may9yjw6lwm80mlfx7g9z8rxgyd09q40k7qnlkwhmzntjjk6lcs6hupym', - 'bc1pexjyhtc4gl5ngafr5pp9xya9q6h8x5kj386jld3vlemy7vjx834qf2lpws', - 'bc1pnlwlh2gd93g8smc3j2paaff3xdpxlqaqrym6ya77mflfkc3xs6dq0j572h', - 'bc1pntgtj3kk8yf9pq5qh30rvmn4zsfcjgzz29ch60pszt35df3jpgms9zyt5g', - 'bc1pwr93d94pfy02q9n6evc0d474fpjyz0se6fewf9le9sk2hzjgxknsvhpx9f', - 'bc1pvzzttfpzmwy7dpr4e5nv6uewrvv727mjhv4pzwv0kprq9xr60dvsv6kys9', - 'bc1pe39kat0zkgy89przhe2ff367v20276jtqal3g2jmyew7rfkzluas6uqs53', - 'bc1pg2f3h2vvs33t7fp2nf2ml9xpyxh98a0fc7mu889tvmwc678wjl8qmevpws', - 'bc1ps5e635jjfcme8ygylusqwfk48zf0552al376apmaqdvm3ekvyfps8zcthj', - 'bc1p9d94cj3s9f9pw7p80au6rqvpsvn7aafjgsz5tcwnlmh5lfca8rrsp2m0m8', - 'bc1p8v7qxmwt5vgz5tp2s9ay9en2sluj76fua4nzdjk2zlz5k3d087jszzvwat', - 'bc1pxqsvu5zzp87cvweqm4ukx38c4lcq6tsk6q02gvhe9d62clgx0znsgc8haj', - 'bc1pj6yhajkas7guvt2we6nmh89sqlnxkdxnhkrpnvk8acc89s6fjvfqz82px6', - 'bc1p0jrejp9fdujzw733vyxt6hs3q6q96yamu07nmvu84rakqutg380q3dlx0z', - 'bc1pa3dc5qjugg3y66fugahr3uydk9m2vv2sf34j9zhsk5e033zftmmsurr38f', - 'bc1pppffv2fgmryyrv3e2qs5x5dj95xaj478e2s95celpxf7twjyt6ksdlsx2v', - 'bc1plculyece6g7d2vvmgpm3d384uxlq65z4jd2sfsrvh7svwatjaxwsuj3gfu', - 'bc1pjmxynyrn2h3zd6t8mjskp5xfayrsnplmnvvutvl2pl8kxj5l25tqc3enkq', - 'bc1p2wcyqn4lcs58k38g6vhkm2rtefx9m9n2m2np76dtf6u83m3hlq6qstl0jz', - 'bc1ptkpw0zuy9207p4zvmwsdk3kyc5eafzl7ld7zna96z5syx9vhvhtqwvhpwa', - 'bc1p2kzdcaxdrvuz2grejk0ylkel387a5anr6xerqjf7e9us86u88kcq5ftk4a', - 'bc1pjtr0l29e2ghxduh0gh9jlj5v6uetp26666pmce299edevprpqjzqafahdp', - 'bc1p6uugyyp79dj5czgttrgq2fhavdtgr309skp0jejs4tnjnlxh8e2sek6pgw', - 'bc1pmarkag47jclzfgee3fes78m77u5mshgwn7h4adnay39k88mg7u4qth9ug6', - 'bc1pmdx3antnsmmlq7r9rufngtzwck94gqqml6st8nv0gmtj24u9dsjsevy8a0', - 'bc1ps89jfj65ephxq22kgnjsm4hufdxrf7eksam4kkku8r0gv2skztjq2ar9y9', - 'bc1pruzxxz84e3t6d2edrh24vd7av372v05t0aa30s36nnvq6p29rzrqeywjwl', - 'bc1p78dgz0mtzwxunvpen7a0ng2ey58z609v3fem5muvg7gdmqguay2qx77n6a', - 'bc1p05xcu6v7v84w235fvlpm2era3cljz3t0knyvzy932y6jv2hjse8sqt2l8h', - 'bc1pk6tj6tffsdw0ke3fllj6u8eafs6pwxd26em963ntewtdgx0mexksy6ds20', - 'bc1pqz2sduvdhqpuhk69g2w2u2uc5knwqza8hkyatfs5fg7nulek9j5svpn7gm', - 'bc1pd6q4dv5nmhcpx7ecnhljmu4h7szrxu9gqhanydjqwk792y8z2a0qj4l0gh', - 'bc1pv839nmpxvh7n4gemxeemhxagh62uuecwx0urvvex5n2d05txdq7sqvdjfk', - 'bc1p6865f9xtpe6ncjh8y9e76a03jj2s95rwy9503jd28tlksqspnruqun75df', - 'bc1p47cg4uhyaz74yhkk0ha0wjhr8xsfrjcm70fvewm4yezuexdaawmsnf4pzx', - 'bc1p29mx6h5p80fg623cknr33y6npnmw73ms6zdg89538hpdq7ng8utswa2lck', - 'bc1pg9jyr4ahpmvw7su4vsdypthglgk8j4c96gp0hrzymek89rytchyqpncx7u', - 'bc1pzzpkkfmjsf75zx0welvfhyru4xxvk5pucs0vrdlueyfc3mcjlq9sqcu9s2', - 'bc1paksx8j45dhtu5lgarsz57xhf0mnytxn9al0yqkjk3r584zdpcqxqqaeh7v', - 'bc1pvrw4x9ln7668c9przpkeg95lzysj9ukcdxa2v7yyz6rnpwjs9vlqhccyfx', - 'bc1p2hg0we6xefcfdt09sfwgxaqm2l2qhwj8wm5rsdrtujcwlzs9mncqtmf767', - 'bc1pus4a8nx4guuq6zvdja6gk2cv90ckjr793h6s27gyhwevsu9rsa4qhkwptw', - 'bc1p6lyxe04l73xwtch6wkwdpu0vgz8f40wle787qrnhyqsuya7t98dqwfp49x', - 'bc1p06xjlrmhlyhwpxwssax8pmxgewh2y44wrvqmyc8r34hxzp9rsu6sk6upa5', - 'bc1pt5ljexu5ucshrwvd7807nwealelhfj8gtjhv0tkh4xjsw3z7wk0szxc562', - 'bc1ptze5c73p8x6nhhsjuhvds6t3a3xm80048u7k4hxx2rn843dmw83s3tvdrj', - 'bc1pj37ufur8e2udymmrt8ee3m80lkm93umclnzyg9qcd9kaztv4r03qmarjd4', - 'bc1pj7edu2kahcy8prf3c935rrm3c748hlls45kk84yxae3khnl0e59q9ns6x0', - 'bc1pzmgvh97jg733aex4753mx0ah7tqqs93flfe70cdpyvg5hpq50slqtr6ght', - 'bc1p4havj4f9qxvxzd70e2wyz7rzlyfr0fnqk6d0yn4ks2yjrs970lsqy6pe70', - 'bc1p0ykpd0n0cyfggp83unsv55ypf27znra2tgtgljl3mzj8glfvsxcs2yql7m', - 'bc1pmqt4ur0y7sdqydr45mzpy2ll5e3xrqf4wrfal842cyw0rf4d747sk8thwn', - 'bc1pkguyvv43m34mgpph865d5mmesyfmzymmxqt9ex4ewyakh554uwgstalzud', - 'bc1pkewdy7ees4e7wkd7w5z98z02w6edf0rlnpmekdp37m3ttt6sqz4qgsj264', - 'bc1pem9ud098dxe8x6ytu8la78jkmdkkyhu3xcmvg8r7d7qkcks4v9xqsdusjx', - 'bc1py642vlh97zlgv8ezuukhfyfam3n4rpnf8gzazw304v4kvkjgx2tqedth2j', - 'bc1p57zkyepmlk4q8fuk5ghruhq6ha48lnnfl9celjetlfg0hyujf7lq9gu92k', - 'bc1pflfd44je7y2jj4dg67lzfvx892mcszxv9h0pp7z0majvkefc49xq9823yf', - 'bc1pdtynt40gzwqqm9cy04ksn80lxthxawhh2a3phsw6sqnzg8j7cmlssd6u5r', - 'bc1p4c2q70mljcwgyus8c0ht7knml84kskudqflug8mzdqcvevk8n69sscj42r', - 'bc1p65hx0xc2f4xp5mzyla050zqguw4p887eymu90z2pj6us4xpyhljqrq3ssf', - 'bc1phts9v7k9gr65nv7x6cznxums3kkrq0mtfx3ctqta3jx3saq9w9csmhe6hw', - 'bc1p9ue3hh9e8ulxvrs6utrfdfk4uq0expgg6kwp9p59fuz7hjdl0lrqvpjupg', - 'bc1pwdvlvlgglkmp08fhathyfdumkpy478a5r8qf6wgydaf943waskpqcnl5e0', - 'bc1pdlxw48hvh0f5axe3xq4h7aw0zc805u20q3lw0tcjmvvpsqrvx9lshplgk0', - 'bc1pc2p0uj2wy9vh5l9x2rg5x8g76dajxlvlm4pqkrs9hqlylrkagsjqyy3e02', - 'bc1p2f43d5xh0mr4d5vudrhyzxuv38k0nd99k34zvvepw2lxrxyftupqr44zly', - 'bc1pmpnvnece09efs5n6evzk0y8lajmuqyctygl6wqwmppujz7rx7xqqcs0l9q', - 'bc1pnk9849p9htufzskdcnn3teclmwntn60x79gvvgjhsgu8vcwghaasvcn87x', - 'bc1puyv3mtu8x5l59ujpxqvt3xr2geuhvtlmfveem2y3rnq8slrmkq0stg64uh', - 'bc1p0wnkhf2yzjk6r24urt3l75n94ead7k08ktudsvuuytx7amt2cz6slyh3r0', - 'bc1pwevlpl92ggut0ml4y0cr07qklk58726q44z64a7xgrrpelj20d9qk7cx4f', - 'bc1pzq2ekzwg49eu6sgkkp65sxhk0javl6586c9zssda0s9f0ea48y8qyyj00z', - 'bc1pdmtwu44chk30lsgj3z6qg4t72h6axsq9rlplppmp9yw06vs56p9q3t4frw', - 'bc1pp86cu4rxw7hlkla6v3289g3vjrcratukf3r8vekxfn74ywhqq0rqr4nkej', - 'bc1ps986ssqzvrj6ysh5rvva5cl8vad37hse2pgptd4a0txhlfu77jms956dlp', - 'bc1pkep6awfz623ufp8dn25jlnsx8283xs3l4rtj3aygzphmdpx0uags0ua4kn', - 'bc1puuyetydr8npfz7wq64u52kewlw37v7qc48sjaqtfhqedeyqn32mq2jcn37', - 'bc1p5f5ccca4qxscr6n6e5ef9cru65j744haegxejhshpcdeh82w759s7n5pq3', - 'bc1p99uf3ssxjkwmt4pmc28fmpf6kvqdnyl8zng5wvayk7gpsdy9h8wq7hwtqe', - 'bc1pp58akfkwn4n4e92ruwgp6s3n5mn6t3k86f8wytm3jz2ma8erqqes7xjltz', - 'bc1p96d78ym97vnmfg08u6r7tfp8uamef6cwy07apmkdf9asjrt9kalsgjs8uf', - 'bc1pqr0hapsrx8a9ua52la8xjjgv5spsuls0w3jqmjf5deaunxctwtfqhy0mx7', - 'bc1pyz9alfcct9ly90qtlz44hnnu7kx84aa7kaa3h6ufcv0n4kel5m8shl9j06', - 'bc1pc3yvcp45ewsftesep3g5z2vfzq7q2p35saqc055s6w36n5l89sas4syqru', - 'bc1pdjckvjuejmq5fv2x7dl9zg03qprxk6sfzz405l9l5f9qxuq5ftsqj2lmqc', - 'bc1ps7jychcgxgf4n7zeu4s6xzc34v5ydtls7cu2q879gy67e037uv7skm6f5w', - 'bc1pvmqms56ljkr5g0hhd22a34pa3552r8eycsk2wlawv0g0ke6zg4pqahga7p', - 'bc1ptrr30cptrntegm7tqfeuh0hcvszfngl5j8sxngw93cusrmk3hdlqkzmtq4', - 'bc1p2hrha5jm5d3f000tuhcf3aleum3m9xw484zyupj264l6gvqy257q2q9wmp', - 'bc1p7ks7gahnff2ze605lkfmat052vyeunv2579ac4xw34kjcxczx0nsh492ra', - 'bc1pekrfdkqp5ng5kht0974fe9sxr26xy03eegk6mft49a6lr4mzp6uqfc7zpu', - 'bc1pjppjxh2upduhx5y23ahufuc3pm8xycxudj30avuy2026883pt8fq5ue9ly', - 'bc1p8kjy8g8plvt9kdwvvx52z0vdpll0vatur70xdgj3ktcpkwjzk7nsc62zrh', - 'bc1psup5tdvss5cjhj8tpatkh8027u5z4yf2x3lgqva6fcreetvgvvkqfhu04v', - 'bc1prcwfjnfs5kytyzha5kkhl7kvjll6mkljuphra3tayxl4rp9kzncqsjthca', - 'bc1pn0t3gnppwvend3zyrpa9z6tfl0k3xtclg3dw863cxw88z64fhf6snftcp6', - 'bc1pe2jqyw0v2xp7fz3p9n7lmv43dczs6r3w2xy5p902k38maa4ketsqalrz0l', - 'bc1pufssugm0q83awnk73d8zspkwdjxew3axs7d5ej7aueuhyt7glwvscq4fls', - 'bc1pu0j6zsglmx60psfh9vcgpkzyf552stv2wwtzy5dsdf589nghmj3sv4u7wh', - 'bc1pr30wpw5qealzj33exwa7ey5p38msypp4tlw5vkhlmufcuqrd0wzsx4ay84', - 'bc1p0and0xyl7f72844aamdaehjx500p9xfu6gxvcxzvwc2dzu4ht44s9gsuar', - 'bc1p4td9y05qtp9rwy5fczfunph7utsmw2zl0waey7gfkyfddky4lles6yppay', - 'bc1pxdhx6vkgp7xjptgz29xj0xd6p7jgtlg04xf8pvsael0wtef4wqes7tegu6', - 'bc1ps2g50urtmkd473xc8mugqpmdlgzpsa224g7mjettzfe86qd6wnqs0zc0q7', - 'bc1pf43pqfuhsvk9k53jhmjgnrjmqevsdzj328etft358wzvyesxv7vqwjjuuj', - 'bc1pyk6y7lqxn94zzxy27rvelqzyfk3zqzacxkj6v6q6h6uxutus2muq9h6qy3', - 'bc1p7ngydy8tx6y8rrvseezja99aygmlpwuwsnshse5m9q4yfc9tx04qrynx3d', - 'bc1prkw6e2f8898lrxthx3pz8gny5x6q3yqgapty9almauswux84hteq04umz0', - 'bc1pj4mzxq84ljgjct4p8gwlwee3ku4a546hgvx7gqtegc8nutjurs0qdukeg9', - 'bc1ph76x8ejy77ep5mrgem6scsa6uk5uhnr2l3maqpqy95gf3s4qvy8qky6tat', - 'bc1pz3cql8sq5c6xdnrjmmca2vza4hsck6w0yqr8a6v29gezklvr3nrs3wnqkt', - 'bc1p2un7jha7f74kl2xysp959mqw46a56czy6pl8lfmfn0hzyavrlcesldqk36', - 'bc1pvlp2j2qpde6sezdap3vjxgdwyf8g542tqjlz2n477m6j0fagw0fsgsyft7', - 'bc1pnurgc90v686mlpqucgj4er8vx5c0wcu32ye8p0n0dsrsyxnysz5q7zsuw7', - 'bc1pfsept3yj6p2gfgf3azxg682kj77xpzj26uegsk0cc0j9fku5ynzq82493p', - 'bc1psu0qgleefylnw70hldsv76nckx0vnu6km8zd3gkqxeaycnkjamqsqet0ly', - 'bc1pt6glq4ppk7kpdgpch879zl7pswfykfc3epyyhfclxwp80skh4e7qvjnzn0', - 'bc1pr0eafs9m6qhg37cw4zey5xkekxqrwnt82aykfsyt7ucj93gndtysrzpae5', - 'bc1pctkw3zjsfswgzesx5lhnhp2zgqxg5tq5tnreggvme6lzdd3leq0qf2fft9', - 'bc1pzu4pmf2fsjz2ye847wqnt0s4rke58dfljewaxyltywm7u84uxt6qnevvcq', - 'bc1prj5jdcxppln79jxa0qxfm9wyv79r8uq3n0lluluusdw3203fp84snutzch', - 'bc1pskh7en4vrwg3acwmynasxcafyrfneqgantw6uhzvqsp8gw0hzy2s68l8lq', - 'bc1p42tyhgt8wx9h36mj87zgqpcqec2ljssjswn23ppuum8fnqk67e7q96k0te', - 'bc1pts9mhymmfg03z77jxszuy05dgd3ewkc2q08233e37393vtpes63skqexyd', - 'bc1pf4azn4r8sys8f47dae9246jhcxk7vgphexuyzhdfssjm0dtgwx9qpyfa0a', - 'bc1p30cwlw3juh28q36ap372gzh5eu7gs6c8fp4clzetm6knate5wrsqdeewrr', - 'bc1pmx8ekj9l42pucm69cmqkweuy2eknqw589prvgh08ytegdsq28udsllrhxc', - 'bc1p4qfnsg6namru0u5ujep876xke0vmlk3fgfp345m9qawtvn6c9llq324kwn', - 'bc1ppzujgd9etgpjnv05ewyvmsagyndz4zv2ycyhump33p7f06kudneqr73se9', - 'bc1pm33wmkzptfvjjlw5lar0wlqwvdvsy2r8f8azhgn0jzpq98eg3juqk77uut', - 'bc1pyd2r09jhdxv4netdph6jqqujr7w4v4n7zgpwx93sy93ukprrea2qscyyqq', - 'bc1p7emt8scx0d35gwtljwmu9smvgp8emr233rhvsk394rhaj2ueqrksuugfu8', - 'bc1petwkycr7dnykm3fjxfh7536cge4z0vta0hw2x78q3w22uf2dwg3s84q6e2', - 'bc1pnvv5sma90uvdu8e8p59e4s8ypz357dgh000t8q0p757dzkq78fkqc729pu', - 'bc1pvt6sgr3elrmwmlrvjjh3lwaxdrvuj7x2vppp9ufky78hjf302fsqmvjm0l', - 'bc1p85jrw6jrehgl63832mmxs03jh0lyg7hfl0024dcxknuwpgseklcq57wmnt', - 'bc1p87976l0zsalgps9ec675fa7fvhmw4fl9pf3ehnafupkqaa06tzvsxvsu3y', - 'bc1pc05kx76dcvhdktdhvnju2vhvrntqd70fp3hypzmf70efpq5mut6q8fk7t9', - 'bc1ptjf5a96e63jhzhcw958curm2n0udfftfjmlp2yf6z5f8nsqeaqss4lh3nk', - 'bc1pvl6c3yn9678a254wldsc9nhvaw2yxv0t5z5vpjrhfk5ygj78pgtsarlc93', - 'bc1pvcpt87rsyuwtd8z8eg3tx7xxmcq9tnyx6jkzw7pd9ar3cej792psameppg', - 'bc1p8mxm808dtxwd6v73lvm8mqc8jk9k2lvr4m50hx3kg43930kmfavs2xl4tc', - 'bc1p2afv7a30scmxan000k03984hwxzf9x6uv7wmkfxhl7q6f8tgyzgq33gytk', - 'bc1pg5k336s542nea9gkyc842e6n4n5gss02n3wmak8c60z3r85zhdyql9xacp', - 'bc1pladlfl0ja762uxuwf9cyvka84kxwtr657pys8hyhpd375w8acdjs5gajta', - 'bc1pv44elx479rcpr3zw3wm329qancwvmj9see6npmgkhp0f5yvrwzvqsx04gv', - 'bc1p50ec64v5wvc7dqtzlmmam08pygwlq6hyaeuvkdwwsveehx7s98cqt5m5h4', - 'bc1ptucezmwjuueug46sx9l4wf7hmuxw4g8xla2294z49lfrnzr70g9qpvzmh5', - 'bc1plkukg2vwu3kvj2gxh8szeewzhhmk30yecq302d2c7wrpsdjkwfwqxnj640', - 'bc1psxtf7cw34jktxdt5g5hydt87fns4p7x3qs8st8qmsnvjgg0gyehqd35km8', - 'bc1p4gwg274fns4g67g5h8lzc5qypvh2quyngjed9lfrjymyet78f9mqpsdh47', - 'bc1p07lkg59wtl5f67yvlycan7nv4gga67pq9gsljdzvasfhs6u02n2qxmgl09', - 'bc1pd939e48v8cgzefx533axv9d7vzadm94yh8f93e99fk7m8cdcg5hsf4vp7d', - 'bc1pr0ssrgstd9y4ars3ks7fadcanc2jy9283d7d6dqcsr8q6jqwjmeq3f9fgd', - 'bc1p7w5edmu8me8uw3h5kzs29c87aj0gyw9snkap46nkcx0ywn5xh90qhenvm7', - 'bc1puv4lhtukkuvkfcmtm38257ecpc39mm42f2h38pge4cykn7s3z9fsua5qzy', - 'bc1p42al7nkseh74cz9yc3qn4mrly3vqv8xlykxtrgak8d2wsak7cnqsu4ypt2', - 'bc1pf76mcfdy9tnu58s5g5ej4v6dmdyrqnjwlvlqca62ymecfnhqh4tqfdr6du', - 'bc1prdhygp2fmv4wlrr8t2tryvpcq7d4wrzy2q83k7jsksf6em26y2xslujrk8', - 'bc1p0r2d67jdfreyqxfgs2ywpedm0kengf3tgcpchft4f6r2csyk9ysq4rjh3q', - 'bc1p2w8s5dftsqylap3k9c7lxyu77jzhatcyduc2xspyah3wztrrgjtqgru0en', - 'bc1py2ker94htjym422lupss0vkc794udnulk2cpth275ax2w2chgpdsuuhs2q', - 'bc1pc6pfp38k92jxa6m2mn2vpc53p5380hfdqsa43gvkz5p53et08s0shwv6y9', - 'bc1p4uc96vts7k4twkyslfgjmsnd7ft4rzuq0hm3je0jhhmdsw0t3qjq0yhmrn', - 'bc1pjpqf2waep8t8ujqjx5ly78y306uxadlj2qafpwnhg4p0huzs4hashfs2xx', - 'bc1p69vqw635a7drd9sufa4yxdf7huk84p59zqj88ues2pzgcgq2t6rqap6daz', - 'bc1pcgu4ks2n7du0pd2tmy447zqadny7khfnahajzd4k4hywgpcu09ksmhjhkx', - 'bc1pnf8vp5wep895u3q76nazqyn9gghgac8cq0ezj7lqw0r7ug6gpsdqzgnkfe', - 'bc1pyw4kww4rcmunz5gkh5f7jh50sh2gd5gw6mmsxkpf3th0vk6us0gq3hcpym', - 'bc1ptent8vdwjvym948n2v0llhlyz8csg5g745gm4hkenua5sp02vc9sdvjvca', - 'bc1pzf4eyah8u7clkjsvq2rhqfwafsh5q52f55gnx0su4tqjhs2m83sq6v69sa', - 'bc1pvnqnguhsp4j3m456s7dh8dqluh5z8ew5hw5h93kdspy5naydkgxs00zekk', - 'bc1ps7yc7vzym3fy8ccsap9w9xcdel482lqpu6k863nk0jvxm5x0fhxqjtj2mp', - 'bc1pqv6vnj2ch3rcg32qq6sxnyq9vkvsgcvu38sqnmjgey5xtg2ycq5she3qc9', - 'bc1p5lt474mj0newptk4vwaayeeh38c7rwjnjg84y68gcy6hspg0nk5qdjvnpx', - 'bc1pw4558lhf4rlkeuugutfjmj05kgn76j7wy8we2ljlwlufkpmrs6lqsceelg', - 'bc1phk7vf46fyk3s98n6lagv6aaj9qnuk2u0y9979j9dp3tmp4nnkvusge73vh', - 'bc1p3papkjspjqln85ndzdmhccx42jfa9gty9q6j9hn2sdsq33sdks0q2lg6tu', - 'bc1pe9hk4tkrjml9pwkcyl62l6apudkggk2f8cqxu5qkzsp2d9kguksqnwnh3q', - 'bc1pnwqefa4z0zz8nyfc7y94qgzkuqwjp2c5wcm8d5th4ygzg32nj62qpzsfue', - 'bc1p5fcnrhl03z7xpvj0stylwgpt8jupkfs3prjk8d3trsgxalm50azsvsvwre', - 'bc1pl33wu8dh4vt6afsr3jr47298dsg5cjjjflfx7fylsl37y9zzaxastamse8', - 'bc1pe02f8skmcccqsmqmqwyakec8chsnl6p0x38yv6n30599687jk3gq72e449', - 'bc1pfelj84j5ted5twcvr79sfva89yxrxmkjemx93tc57xwx29l7khyqym3rdu', - 'bc1p5l627c88c5yu6eyerx7tptqmde5hzxdkmdpszkvqhzq9fgm8tkjs8y6lkz', - 'bc1p7s32twefk8ev5az4qvmh8cy7j50dx4ay56ke07rhy5sscnyvqq7qcze7rs', - 'bc1p73mfhvp3x4dpau7ck8mh5c5p068ayec0hzmgvjvxk9hcjxnfuhxq20hqvd', - 'bc1pz4nhjn5uz2rdzdkzu7zxvggs96xyaurqy859jzxmccvea2gh53js29np20', - 'bc1pl2cgdqwnww4cd3uc0rjvug3vca8m2n6sc6e3fyv3uegxmtd9cfkqtzpwvu', - 'bc1p364y9ydfj25yttc5a74v3r578nxcsk7gjnnmlhhqrtjpgwx0mwkq8u3c2l', - 'bc1prwve8c322evcp35wwh26rdpzkp9yvmdqkyqewmx83zpeps4dfansn8dyus', - 'bc1pfwaqqhs44my3u9xya70fsp4xxr7xnfd2np235tknvqgnvstfmsrq456qmm', - 'bc1ptrpcfx63xl4ulj00xvvhgs60zz70qvqltcx7ht4fjm92a6m4vpmqhwjrx8', - 'bc1pg7j0ppd3waktjh28ez5wts9f6fw6kj465064dg2pt8pyqtme6dqswdy9mu', - 'bc1pt9n0da6hdz2zjghm77226x8n82x54f25a80e9rnq30aw7sgfck8qnhjskd', - 'bc1p7l3flukmg8tk60f3lm0teku3mp3sue5rr3v52ju0x6mcj3qyg7hqscqav0', - 'bc1p6duxwva4gkekpdkrmquvcquqs824k8majkjt900gy7r89jjkym2s06gf83', - 'bc1p7csw4xhlunyxrk5tt4jjd8fwp9rxd09mcnnszevxd59ecmrgrdlqhsx3kh', - 'bc1plkuaadh9z2yqnqez7fd2r0quhyflsjmvl0pf9vrlcpvs6kda7c8qzfelaj', - 'bc1pzda53v0agjj0yyyu8zlanfr6tys7ma043af80zam44h0ph92m00qs66c3w', - 'bc1pt0gkgxtrvjnecxcdhakacyymrwl0gep3u4wmxkfh9g8wn5qgvazsjfzvts', - 'bc1pvekxald2mejnsc55jzy3gm5z6arx5mrujx7smmyqvmm2xevz7haq2ex8c3', - 'bc1pljaudz8n3kjmsur3rh6muggumqvrudrcsyjrc7zdjwcgmr8uvvhqxxel4e', - 'bc1py4kv8ee2urjy3fc58rfgylgqtqeckrugzrkgrjtgx76t3lx38k5swuu4ln', - 'bc1pwynqyun69vfc0k45gght0gtxgart205kc3xzz8q5u89vcmgp3d7qv073wv', - 'bc1pmc5lupjw6s7vg0rpnjksms7uy7ml2jvs82rk4fpl7qea0vene9ksuljxpc', - 'bc1ps0ezg5g4pvn9zknx0v2an8y7qywzv7k3l8n7qcmthfsv9349twpqf25t2z', - 'bc1pknex9pu5758ex0az6fkcl88yfu3k70x8fvhdwc9ak85gqegytlzq48cle9', - 'bc1p2fhf9cmuffu2xmfxr5rc03pdx9ej3e3e6d6ls4npj6wz7a4eqxvqj2qfry', - 'bc1pfkjmp89tyc3gj4lhx4jscl6ep3pdea05njsrckyhw948rkj9xxtqch5ucj', - 'bc1pfhcuemr7uq02keak42nj6nqa7huvlhkzplcfrfhhte3cw3paqtds2luqa7', - 'bc1pue6lh6kvchkw4zgfltk4rkg4f74t7w08defkhlxg0d0ys4q6k72qt469mm', - 'bc1puhcn4kvwn7uhurqxkj3cmnuuykyup7uhwt94pluhdxv339a48hesupqdkw', - 'bc1p6uk22jhary0mwn45372sh9zcql8350tkzp7f6qce8auyt3qszykqszm8nq', - 'bc1pkvqpehea6u26vw8tn6qned6nphe3jtpew92v6lgythgl9eh6qzjsrky5th', - 'bc1p2tlajc9f3tyrpqwtclfcfm3u6cey8es3uaafkhah5m3qwze8dvaqdaenwa', - 'bc1p6ckhtcvf23adp8trnn7kxfp9alteqgrk3qgzczshyfyfy98p6vhsnyaqzl', - 'bc1ppjfnrgkudhcgkyqllmp3repdnervr5qamp59plvp55t47q6zvqvqm53k76', - 'bc1ppa6zr8jlum0dpnl3620sxae4kanctujjfrzr2k79wlrpxfpf0uks96fy86', - 'bc1pduuxmdkp26vpf4mpwswzmls8gvh4avude7rngu386ygh6czgy26sycrf3w', - 'bc1p4l3esssvsknaufzeh2u335jjyqjqzhcqg4hadnq28907rmujxtvs7mlls3', - 'bc1p94s3ksd9lql0lkzzeekc9ukh59f7d9eq58a34u556knuw93syy3qtz86rs', - 'bc1ppc4a5nfee3fmsz8zkrstw9e6qaenakz623y5d23wlmm55mx39cqqeed504', - 'bc1pezlhpxn2umhgyxhvre34urhhajrxfg8rw73fk29pwe2w859vrgqqa2snf3', - 'bc1pmcanlzf4mwy73zlvcjrlasegt92s98xf7mhuk9sjse2puyyv6mcqsqwm35', - 'bc1phq4ww6h89zhpuqt5c43dj6ex8d9sm9zt8a53tkw8ndtjl343jz4qfmt88k', - 'bc1padwcr9a5sxv6ty97k545dxusdgw73ph4nc3u46vr6c2dn59q24sqxsfwez', - 'bc1p5vhyupttqkvh96f38g30wwgkxnrew7wh7c06cxyc3tvjvsuvx3zq2jwecd', - 'bc1pt5lyu4hlutnses2v4ewr8k9a67emcwtaklzwnmhvnmgdyn5z8h0sqwudp6', - 'bc1ppwtqqu2yd4atx4xkxxe2yu406etkq30c4y4zux9awvx7smrdhwlscmd8h2', - 'bc1prlxmrd3rr9gy3qvwvjt79d0qj7haxmcdwwhy3qmzl27r9h3t2hvsc7y72h', - 'bc1pp7x6w5spz8lnxyn5xnmetq83yq7xu8pn0e3xtn2pyz5q9lr7rqzsgy2ptn', - 'bc1pwjwx4j65p0kqjrkllfga0zgef4ph7nxgvz35s9un8avnt7mkjekqnvfclk', - 'bc1px8y5rgvkqgp5ya0kem7vz0mm85388ggdj09ymaj7rap3zrdv7j5s5tazje', - 'bc1p5j2j0utl9qlgkep2ygcjk6u70yqyr8lu5ww5d6ux6ha8072mnk3s4tchnu', - 'bc1p4dt6p5vc9h0y3u26y6zw0md732vwejp76c3y2nq82szxt8eyawrsauxy6q', - 'bc1pqhs3j42l850fknx9kq4fezry0sc4u9unmavy5ct40727e5llsm4stjfusf', - 'bc1p8sz04uprnnw0l587raajnngwvx6f40hmuenvjn0fhpc5gpe6ralsth5dgd', - 'bc1pcv8cljpp3m0j22d0cn0wnx8cf4hr64jhu3yceqjz0q9awr4xpx8s3rn6hy', - 'bc1pgkpmdayzh9xvm93k5c28qld4k6620fr44040q9gpsla3dx4zzlxqx6qyxk', - 'bc1p0zgqeqvs6lxftqqkczhp2fp96hw9eaus3d8auzq3qcldu402m47sdkpyup', - 'bc1pg6yzuyv0hezm44ex47a2fqqv2kfv9v43ttkpt8fg5u4gns9ths7saufpju', - 'bc1p24svszlkwcj7gclrw69t4t3qn7q7uexsh7yy6e7fvnz7fk2p29hq8xhq7r', - 'bc1py77xcqahmxs4alxufrhrrh6swtr79alsslhyev76g2skd8kzm7dqhpjm9n', - 'bc1pld7ujcn0fzf759upcgm3efclku2z6xq5vv54s4rwmj9dmrf075tq5969aa', - 'bc1prmzut3dq5sjf2ee3700y0tac2clv3z3can0pasys2ww5q4z2alus7vzj54', - 'bc1pyp58hmmyyws38gjuykjpkwa2mkxrhdsgfg4fywuwdc23p57cyl3qjp5s9s', - 'bc1pyk6eq7eys50txq08ty447xthhz2xne6ltjkk7sajyynhp3am40jqr9u0kx', - 'bc1pau5hm90x9nennpz6ydd29dnln0rg2mysx7gtyz28qz5qezhfyp3sdp3vz8', - 'bc1p6ejmjdwurfca99nyn9g9fv8wr49wvlvyn5d2ne8r5rcgjaxj2a8sewwfqg', - 'bc1pkygwezl2xscfpfvpym3xtfnc87w2h5q7956m6tp549vmtrt4p9uqcqvd57', - 'bc1pfm7mlhevds6mdaw803ffzxv4mnshu6cuuvjkj7vvrxu9hmenj02st2649u', - 'bc1pjrf0k7clvguj5qqkvaeh5edez02fr4unyxrqqhhe9mr4eh6vwcws6wk22h', - 'bc1psust2x652g0uj6648rnl05sjscgafk9zkkfve7dpwczv4t42vzhs20v4ny', - 'bc1phvrm27ztqyhu3wqgt4wnlqfnefv3vhtahumcvje4xl3eqanzvrfsdhyuvx', - 'bc1p56wdxvr4df3sum3hrpkjmgjph35j4gavjvem4z0u4fyr98zyvejsm73rcg', - 'bc1p3ervngq7ry0rkfyemljx2txelqg094y2xhl79j7rcc90kkzj0a8stqgd2u', - 'bc1pfjfmwr55jlard98qsynvtna6nct62dvq9el5t5lgh2chs64mxf4qectsx6', - 'bc1py7627utpvnz64xagah63d5gat5vh26r5rnn2wy0a7d9wxm8f9heqm5aagw', - 'bc1pdgdckgygwd085u7cvdzzajnxl8dgw4hw9m9snqy8x8qjvlezhqksar9hm3', - 'bc1plj4fqmtd009khqfa8u0xty35u5z82lct669aythdvdrga256pk7q2psrr3', - 'bc1pucl20kk840y5ka4q20lafn6lkf2tw302mul2wz8cez5c803fdjrqz3456f', - 'bc1p6tephfw25nffw3zk8emfsmwa2e7rxmgzuf8fu6ur669u0mu73rdsmxs40p', - 'bc1pd55t2tza2lyuev9zuhxp93kh3h2565kgngdmduq0kcxklmad9jhsr3xp7k', - 'bc1pry0kt6l7wd8j9fgq79yh7yf33nw4mt7xhatetkhgpqjhv6gpck7q3avd70', - 'bc1pyu7cdh4r04ha0z3ua5c24ufxjdy4vu6va0erjdnq2qp8dl082kmqqvga9j', - 'bc1pz3e64sywrht8de64xdc65aeu97jzlasccrnv7q3kca43mewqy8cq9z3w0q', - 'bc1pr33hsda2eq48ulh00tmulhg2ageg5cfg09c3yacc3ywrxpez4zqqczl35f', - 'bc1pgkx5253lsym9a6t6e80l452mwftw704up865rhathaeymutdatqslkmjrd', - 'bc1pmf35g9ue84kk7efzaaqugtz3v4fxx7kwec9hupaskuz5cknatpeqdn87jp', - 'bc1pzt6g9fnrtwwn5xrtth3hez44hw0e9lqgzgmxsv5z3f760sldkfrsvr4plw', - 'bc1p3hjcdv6f0p3g7jwffayd6wgljdhuse5stsq8vgp4309p75addxpq604f66', - 'bc1pkdwcq7rjeyt5wwm807d0x5z6x22drsah9ffcsfeqreevr9y6ugjsp0wtck', - 'bc1pglk2tmk5u64gph3gj792qz2cxhahpn5883nzmlxalxzqw9ke34rs87wh6q', - 'bc1p2pxwed4sqpnwt8gucgg7pmt5dkcvlh5qzxcs4nhf849mnkkfhjhq33mfkc', - 'bc1pfe70sl72ch4cdyagvvxljl566y46alvdfn3vfe5y53scuza799tqf275vs', - 'bc1pf6k73q49ck6q0sssk0auv7humavv380upc670hut5r5fu7lpq8kspwndpa', - 'bc1pxmj6ggtgkmhvahmqvxhfgfqhcnahjnns6ctvh2z8u8we0l0vanpqc658s4', - 'bc1pmky6hd5q282d6hz9wrqyzsfnv0zshd0a3l48nuwyd9emjnqnhvts28jtd7', - 'bc1phuwdle04t0m9auvdxfmxke046ewpcxldndtqmu5tcqnrt8dv2spqyaqx03', - 'bc1pwymyajtn5sktcwckwakpcgqlpdp520sw5d7nla0d56wnqvr7amhq74dkr3', - 'bc1psjpc9crw4pupxqf8st0a5puwe3v20dzl8lrlcrtk0wa44ay95vgsmhyvze', - 'bc1pssl4e20gwm8f3a4lrphkmhfgvlqd3s3xl6xnzmj7vvaexd3p6pms635w23', - 'bc1p8n68wljr0zrfllgpysam2lt0rgx5rsqvhuh5x59mcdwax0pmcp2s3339k9', - 'bc1pumml48pafme8xrn7cla5qr8rjg5jlljnkava4z0vx7sv206qp4kq8vc0pj', - 'bc1pj7uzjpymf055r4ksyu909fkyjv7nz6wca4m4dp6y0gnnj7vzrqgsutyrgv', - 'bc1pc4xrl00t0hxp5m5gvg5dskcwr07xdqakr9sy0ltrep3ul6288mxstyaes9', - 'bc1p3rql4hmhdxqa7z92we3cxrsld5hrwsy9ykhf6hcn8v6ndtvsj5dskg5mhl', - 'bc1pm2nmh5hs5xvxglfrhvpacwmqvswjc8xkv60vn8lxxm5qx2ldvvsq5ench9', - 'bc1p9yyzjcte8z2430e8wuyrd3qalw8xe455rxnqt2dcmthf0q5mjd7s058nlh', - 'bc1p6hla6gtvjx60k0ejkq6z3lpdt4yp5654jxqd2dq4d59g5a2qekzsx0fyf8', - 'bc1pczkz3epvk5hzzg5tf7j0qs8cqugyfrz28rltr23wmcrsen82f9yqkffj6t', - 'bc1pcmqhzzh9je7rv7pev47xd5kjx23ht7dgz8cr3rrlw8amrc8gd72qglhphf', - 'bc1p38wuj9zlqll8ken6t4raftldth64tw4n7vyddmuucvk36us02vns4zvu2m', - 'bc1pgd5ajxe3vsnmc66r7kqc6syfg6qyzgzmmyy0tdjnpustmgvcsqrqm0vn89', - 'bc1przu78pejvx4906kv5fxjzmlszwp4fukxe7rmfrkvfgukncmlcfvsj8u600', - 'bc1pg2c6f75kmaq6j8fuutt6lnvuh6v7dt6h46v0gfg3cgada2u4t65ql4x49s', - 'bc1p2c2sftd9rjw4z8zgtf0vzkxqelmtn5wzj65kc664zu3rjj2rru6q9gsvj8', - 'bc1p2c7exz075js6pqtgukmdn0jlpdx3jfsrcc6mjjqhsccw4y7lkcyq3d9lf5', - 'bc1p4vnasty7wq7ceshhlfxmyt272xsja569a7vvqfqjhy022ytj9f3s8qeumn', - 'bc1pctmn0ceelqwpl8w9xz9hgdz5v84m6apc5sx2rntkcwzt5mffnwps5acsmt', - 'bc1pvnwhgprvurxzc7nmscvjfgnsgm72scjtwufg8yg8uk4ql2pxs2wqxw5ggk', - 'bc1pjd4gyfqxurnrxamnyynvxgt7jl0yd0epz669f3q95sj4sr908jask4cwen', - 'bc1pajzphysva7sqxrajxqdhssrfpv6hjv647qpclyjqkjgn328kr4pspvq3nk', - 'bc1p6v83msec6kh0hj2wl8ws8kh3a043tn2k3z80fc8glvm5k8q9x90qf0zwc8', - 'bc1php9hqkn0c28vpkl57us63dkwhv49e7kaatep3ja3xyfv2vd96hhq4vyr7j', - 'bc1puunkgx9c0yjh7wd80gx8upx79ndge6rv9k0j8he0s9lled5xufgqsg6v8u', - 'bc1p0y6lxuhpkt0ykv4t5k7vlc7wg3w0aa9z96p4w204v04esjesu2es59nfwl', - 'bc1pmpaf9nzpw2kczzu2hchvpaeqjerkzw9kmspppmmzmn0hj8g6suxqrvlusm', - 'bc1pc49cm82f23nypm0p3vn54fylfzuhku6y2d5xglv8vefgmv3w7r5sslhxme', - 'bc1pjq2742n494f5tunuy2ar5ku3unm4n2dzwmzt8cmfyv4f34en05esmhzfna', - 'bc1p3sqsw4wqvrh4ngypc2m6hqqnhl33h58m4afxtgs7ls0v0llu33uqpt3k76', - 'bc1pw24catc5sw5yg8yw0jqhdzyrewkaugstujasu3e9pvg6z5r30aqq9urd27', - 'bc1pe6eta8dj6appj2nkxn7rtztluwslu6l6ll8md62dmjjdy2m6e42qlynmfn', - 'bc1px35l86nf0nu5g5wfzah6393h4p7veuvtyyn6dmqmm3k0duwd0sqqk07k5l', - 'bc1pqp430tn33lmpxfw3fcnmx37nr4y8td2l2ucmvcvrn5algru4nslsddqalk', - 'bc1pj6fttcmeqjl64u6uxt7h5r0f5fc3xjzvdxmhdejjgkd7zay373cqpzgzh2', - 'bc1p84xg5jhf3cntw60g74sxnrefl97fsscgwyvrjhcmex4nstyg5c5q9h5p2k', - 'bc1par4g8zmk09j00em3szmpd3qnv4z855dac8qchr0vjgt06urgpgks9k2r7w', - 'bc1p2sp0a8rvl0g8kwm3tmunwd3x4u8cn0fh4hejwe8523cyymq6ffpskllyxk', - 'bc1pfj64axv7fvrvd4yxr35fsdkfecr4jsn0c460pge8tcyvl6apm52q62vkrs', - 'bc1py6q6nxqeccw3p2upnqdpu2v6cq76hnwa52lcj0smwjd2geljmfzs9cpfwc', - 'bc1p2fzdyclgdzzah7q4ruqe235949atlfx8v4nv3k9k5ydas8klr26s77qqq7', - 'bc1pyrqj3xanwqtqx9k4v5r83nkjtkh45lemdhckzq6t9uw23pm7a95qaxnqtz', - 'bc1pfjysy28kxvnp9xl8vsfm2g6fy0lcq62rxrkt9mjrt4hc96fns6wqpn8me4', - 'bc1plgnh6seqksjr34r344ml6jekgzyhm3htnut70wy7cskxx2f6me2qtj2q98', - 'bc1pz0r3lsqkxmw2aauyalfkqy5l5hvwle5k58g53k9gf08r5qepfrps0r6hua', - 'bc1p7zm54pc7l8d7ycdvs2r0sqw5dfpqfchq54h9dnnr8nuf7pqjsvmse8fxal', - 'bc1p85h2grsr6qad2v8gn8y0pk3gz0c6pffgnwsqtcnrq5n33yhap8hqkmphtu', - 'bc1pcu6tz4xsj633y3klyl8ungavjzkmyeupnfn7rslkfrmvrccfw97qfrlhxn', - 'bc1ppz7cjawqvkeg4ts0emhyfp4awe6jf9pg7vajt5n8c939tth6gyzqsjclgh', - 'bc1ph2407k2dlf4gmsv88vztppefmqnpf3s4alnkq3rta0jk2whxh35qz65rnv', - 'bc1pqgxf0j0shw089yvl22x4p94uqqjtqhx4nuzrq7ewwxvsz3583mtsugupc8', - 'bc1pgc0mvwr5upsdh0uar229qd5gzqr4hjrfkf0mfwee8ekqyrv959zspz7pg7', - 'bc1pvrwp7lfzavhh94s95uakcx6f25mzt0jyyl7y7hse24efcexe0dksgeva89', - 'bc1p74muwr99vxkfkf9f4gjs9rpzxmalyyews89x8r7uu4e87zztnv2qfmr2rm', - 'bc1p8e355e03s2tdjmle92zefjvucgycqtxanrux7wex3rwerpgsp56qzjywp9', - 'bc1pa7ye64k549lrr6tjd5gfp0hw28mztsq6s2rnfl2c92qtz8x2pqhqq9hs8e', - 'bc1pmfchfps744xfj7zgtmdr36lvyq0x9sgde0u6pkw9n4xl5xnt9j7qa2tlc2', - 'bc1paqzrc6f6zqzjesdh0fy9ws3kz3c9783mjl3m0cy0438f79hr55mqwdwhaj', - 'bc1pkvtqg3tt5hl0yfjuzz7kyvkrsq7jn9s69rrjjj25v0tyv98lfstsaxjyuh', - 'bc1p9gnc5zycglrawnvgta0mut5e9sy3d68jlrw7d9nypgna095z23xqlmn4ka', - 'bc1py9j4j7lvkaszkmdllz4au4ure5pnh7tw3z9u5xck72l6s93tkwcqj9h7s7', - 'bc1pj6yp9wzfkcjdtv7q37c3fpngvcd8gfe8qnakgdv4uflywad7vd2sggc0dr', - 'bc1pf75d324cn0zukcn3y7344p6mqktwv0frnrudxq50reet2yyrygnqyx9krn', - 'bc1pflumgdunknpsyvwg4txlyhmraqenj4cscz9a0rlkxsdu4h247w2s8ej7pf', - 'bc1pv9x6ewdgmv0rdt8yhyzwfpddmn36e7hgec66dspjcgpz00zkk7dqhvnh97', - 'bc1p6tft22xxgxap84slunjvpmufzvezyzsnpwqm8z4qj4ylyxxqgx2q8e8u22', - 'bc1pakld2fe2t4qza5g3gk4qew8ywp5hn38tv9ngunp6vhqce976mevskpy6fq', - 'bc1pfujac9pwcjtx9j6nesefatjstgu2jtnave78l7pfd0gaz4cgysusqn0j7m', - 'bc1pj55nhtx9w8vrfy2vns2m6v60js2nwgeq74t8fx8z5mverv4lxvdq52y27m', - 'bc1p0y3up8vzus8xq683arjdy9yylaxj4v6czm6zvy8ccjfc7y8453kssllpf4', - 'bc1p40ndfm2hfx7un9rw2aed8kkwqvmuarmc6amzt05v2cynh4us76tscmdqke', - 'bc1pdxq56ejx89p2nrc4pmdjjgphr6ywr93p054duajeekf080m0e2xsarrv69', - 'bc1pyfmzth0k7nuqt7a4c2rfzmdsyky04ur222585c408nth7ntmu6ws9zs80q', - 'bc1plg3vjhaccqhlpycjvghqeeh0dv86f9zz78az6ruagpyzx9cslw4q06lmxy', - 'bc1p6e02er7mgkhj8hlfngg4hfnnv8xq45afl3ssexk248x50c8jpxlq8fh3jf', - 'bc1pv9hvnyh2nxuvj670pxgclfr7dy5elcypccadf5pqv8wu8dxhjkxqxa2k4l', - 'bc1phsrep06yly5tfpjym3vc785cplg5k0ag3ze29q3w96jsu7jhgf3qw4q4fu', - 'bc1pjwcd9j6t77w0nk43tlm26jlsvdrw3d7env35wxsx2fm6fkcz3rzskvf3hl', - 'bc1pa6whe5k3rsn8pl7s3dsjawdzt7pauyf8wttrlrckrscs2j5pahxswrjzg7', - 'bc1pc4uzw5773lvw5muvanjgm04z0zc9yhffessdd406rr77mutzt05s8z8wkj', - 'bc1pyexnashw7adeky8m2ysy53pgckkskrn0pm5j8fzwsdzyhl5d4j8sqmht3f', - 'bc1p5wlas49cxyspd8cwezueselkmgruqrgruqy6tcxmkdmgyq74gyhqfker4u', - 'bc1pf6vzh54tvnlgwhk8h68783xgcly9jxxwx9xudctms47qujvccehqkqp79j', - 'bc1pf7yh6u7jkccx6le32kjfsfuj6nkmfktm7aqc3sfy5uvxh3l78m2sswzwjm', - 'bc1ppupgqx0x6jy7sh8xwjf4gnzwhp4ham0dp062tade9rhztrwgxk0svytr2v', - 'bc1pcu0qt6rcmhx4qt3ekse94wlv6el3dp8fd5x5pl0n7tfk76erfvss2rxle9', - 'bc1ppyhh5ahv7vekmxz9j39hw3fl3g9at5e02uyzgduvrj53hvfhc0rqjd5v8z', - 'bc1peqyc2aeqsswz8ths0s62q6fwn0xaynuul6my40jzga8v356wd5lsrh6hc4', - 'bc1ppvp5fwkud5desukhr5rpnxl5g7kgje0djrtmpqaedc2lkv9tkxqq90hggl', - 'bc1psp7wwjrnt5cfzwkswz465rhcxddskuext2xr8mfuh4zp65anplxqclhxyv', - 'bc1pyjnvnanez83msl0akl9kyhnf9mryzejhrvrzslfsvwsp7ngd7vfqlrqtl4', - 'bc1pk8h2azau5p445nw764eqstymvh9n6e988hf7m2vpmnkrnu3w5v4sj0rrxm', - 'bc1pkm8rhvv0wmaw8tpmmsm64s9j0nyk04xzqw5upua7kt0eklpzrugsdt3uah', - 'bc1ppgk8xhjr9y5mk0vhtrr8fj4gd2rfpynvjvnml3jwv3j2wsd9c5ws8zprue', - 'bc1p8d8ywtj8n466d83f48fjflyat5spe44jyq332vrjhy4a66ey8jzq5en2x3', - 'bc1pd3xefxhetqngg7tfw4la4swnaewkt8dzvzfljved27mguxs8csuseexpgf', - 'bc1pegktaqlnkte7u3fq22ceyqtc42qrd0h7g5f6tvscdf7hyhn2k2asha58kj', - 'bc1p44q8fp9rcr52y0kxzhdw9j4kn50cc7gpvx8vsxw27sdcvhsv0hfslc4ds6', - 'bc1p85qhame800sd6vzktuhauywpgwcm62km9e7xcssswyxwsnwks44ql2l39c', - 'bc1ph52qg0fv6ncg5jpkh78kft234gfryjdmhuzf07egkuvca9mhq8ds0sumxd', - 'bc1puhmqpyz8fdvnw8v5hwyhmkcdhsqhdpcuwzu5s69zr0vm32l6wjnsu59xpn', - 'bc1pse4pfltw8at2wkm8r5y6q3gdm5y8znnmw9sm3prjl5k88cmpfj2sy4x7ad', - 'bc1p3p5y2lpvegs4449p20prkkk2sj0nvd774pf5cvft5xlg0t9pceusznzgz9', - 'bc1puczkxy5ff444wgkss6ajtt9zv3y4fh7svr2gzv4ca9qk7nlae02sn7yj29', - 'bc1pkmhpc2hl6ylfhld6zlvmc7ap6uyqe3s8x9cyf6aje6j2f87edzlsz0kn5g', - 'bc1p6ys72fyz84wmpax97qytn79acevusza0v7htmceqxc73pr6td6tsg22h9s', - 'bc1pnsl0rsuu4nk5y2c79wkar6exq9enk9cwt6thz8q667wyddt63w6s2k0fee', - 'bc1psec0uuj0hp9l7wch97uan3wygv0pt0xx99s9lsz7004d652dzq6sfjdvdm', - 'bc1phdyz3c0ys9p8kg8wmneg5tnwuv4w8mstwp6k24y00qu0nv027cas7yg2hy', - 'bc1pzrszgu0g90e6mmmj75f2dtsyszq33tqwr03r46v8hv2ndtf7039s8vjzpq', - 'bc1pszr9pdts9jjp2wdjx8nqjvdnyfy4vngsgzrugfkmzyh0u8azt36sqst4y2', - 'bc1p74smhmh8dpgyzmvdhgla4vw9mana0ar56lns27pja8kv6kznsfpsh8z0ru', - 'bc1p8vawcvccs9zjksjhywgm47erqj44kg7lvmha9tzd9zkvlr5jrntqdvtlqt', - 'bc1pknk32dw5cs8xekyc30ntc8tdrgek08t0jhuz8j9tm7jsjm77vvysd4l90n', - 'bc1p446hkww8lf002t4wt56ku0far8xg346v00ly4ch9vmhkhszxjcns3cj06f', - 'bc1pql3n9mfdmp2jhhhdh4dk4gjesgefxddsuwgt9e38x6ptwcxnyc3q7vy8p4', - 'bc1psrrm05tnks24v84ss7juwrwmkky5nat3ued5ndq6gm9tpyuuv2mqq8ysyy', - 'bc1pnwhkhkkre3wtn78wjx6ewwmhvfqftauwvlyexdfmx66xqejdyjhqlhc68n', - 'bc1p9u8hr2zt37wg0z2t7zenpl8tk0gdjjzcx9js2k44kt7v7ny27ukslj4w7s', - 'bc1p3gpg05jhp7t6s4tcamuy79ll23uxhwg7c9k2w5uwdkzppa8kqv9sd4wk6w', - 'bc1pyfm27klqtj09qq3nj37vrrgtq76juggrcu8j7a9jg0t244wcfktsfxwkze', - 'bc1pk48fhxzt5kt2ra7m2e9627qj0lejzfzfs8jz3ynj7sswskx93eeq8yyzwq', - 'bc1pv0mgepm98548vkc08uufqryklce5qq03kq5cpagwfwcjr7vlpsks42jraw', - 'bc1p92r96pdt400spd792f78dptwyckyx93u8rn6kkra2svau5ck2x3sd65kh4', - 'bc1pxm62rdrrxxf8m0t3mepp832ay3lfxzj9letkrm9gvqvdy0k2l3eqwngwa3', - 'bc1px58zapc36nus7ecxjz9kxxudnx9zxvdwgzhagnaywwdqeh3u75kqqll22s', - 'bc1p2cl2nfsycl7j80yw8f0fjnjrpusaypqs4g4s7g80u5vdqqx5q8ksr5re0t', - 'bc1pyjkq737hpk2p5y49esvgjmwhszc7hedear68dmgkgm9vuar7eazq0d3r26', - 'bc1p0dc3tm9u9llf9t2kvhv6fn7sl4znsc5s0wa4c00qlqzw4sgk7kyq7mteag', - 'bc1pxq8xay04ma2nukfa7tqe9xsl7kjl8tdztq8a6al5h6qpsx8v308syj04ld', - 'bc1p4p3mspge0j8hwvslpqwc09r4dkcspk05lxfkvvf2amq2smds79aqvm2f9v', - 'bc1psyqrq2peu7qgrser8zc5euca06dfy3gadfdxt8yfs0xvmzu8cq8syncwl5', - 'bc1p47qejj9thgay75446dh8j4cr0m6gv62ssz35f4wt2frwdepxdt7shge44n', - 'bc1pzkzct3dplhe9nl7n2rdt95sd3ycs2ktxyg8w4qutermc4j36hpwsecczqd', - 'bc1px4vd3f8rf90au2j77ly6xdhzvw9ff9gvfz8zptkxf5me7fl006as6gck7z', - 'bc1p0pxj2r2vpghzs7mhzvje8hsx6uy59cnqqkdr6vcazekn98p59y9sj5raq5', - 'bc1pt62ghm6g5tnee9flmfa3pe6pnnm2h3ec4rkhlmearnpvghg9lz9q3raw7r', - 'bc1p7jae0kg8ckdgwpzedzcs3rvwwcv6fxlh9jn4leevxrjwf6vpwpksrzhvj0', - 'bc1pw0f67mhq78vxz5x6d3gthcvkm4wgs656an5z55yd9ep70dzrquasq73p73', - 'bc1ps7ecm8jvdt78fltltz63ylu53na6qytf6rh80yuqewsdqgrcs3aqgcf5e6', - 'bc1p240gumy96hutd5eawjplh5levxy8vs57vnl2u9dh6j5hu2u2rsqqazvhrn', - 'bc1paft5tacpgen7tfe09jvrtskf9j580h80783ddy0pmpueqnleqs9qmazydg', - 'bc1pgmfqfrz7qjyef8ylf7apwtsf6syzmgehsk894cs8pvsq6g0lu5zs2gnk4e', - 'bc1ptg50red55s0xh5hpdvzxqtvd7yp8uqclrz22ey62z3ej3rmdrp7sn6jhfj', - 'bc1pfqzphjyh2c7h0ugwm4lcae3rd098elm4lqylu0qpvx6z82xphv5qwrld2h', - 'bc1pepgkrfys8sva5lj2gerhhnwaxpg8zpwh4cphsdhyq4lhws9sqj5s04099d', - 'bc1plj4jdnj8t0mdth3uu0fnzsmq53cmema4khy38ga6tv5df2jzrscs4aqwdx', - 'bc1paak2v24qk8ktd2feec2cvx4qvj4d5hdrngyjxn5wwy2uap8t2gnqj8jhhh', - 'bc1pvfdncg0v4lrvlvhxklzpmsj83hg7r3ekahqkqh07dvu56yqv3p9q82d9zq', - 'bc1pw35tl7z8sxju0ynx3v3jha66mdeqhse8xfr43q6l4cfyg5mc9twqplx8fu', - 'bc1pztv8p3rpt469c5807x0ju4y6706a30lh349zp6da3l0vyq52lrfszrx8q4', - 'bc1p24am4ll0uaksgrngkajjydnjsz8cpkm3jlz7dedu7eclf0ffu7hqklzshn', - 'bc1pkzmfw4y6ksdct0kuxl89km5c6693xztf4clk25ea7t2w2d5leh0s2g08qj', - 'bc1pykakedg84hy7wtxnkhk3tr29nz00pltn5m892cm986el5mdm6kss5nayvk', - 'bc1pq0h3zyf57qdvpphc8rngz6axmm09ua658a4dea9hw93w9n8t807swt3t9l', - 'bc1pl0hlelcnvpef74x26fdj7m8hjtng7jngw9zmplr8pepzpmkzv5ws0cq4au', - 'bc1p9sce58skemqgzgp3w335w2pexfp2rmzvyr00t229segnq8eefldsencsxe', - 'bc1p070cpf0chfajtget8g263rpct2v5h9wygsklpktf2gxhjgp6e28sv0z6lx', - 'bc1pxf7493tl0dykzfydcnjdz9cftwynj6465k58qkw8j6jcekavxggs680v3l', - 'bc1p2s2psedudl5s8cdmkkmvrhsgw8v5alp0hrm7ufd5d773xq7m89gq82sta0', - 'bc1pgl7r8ak6puvkv9q9nx8srjekjw7hpptaq5ufaqz2udleje7wvngqqspytf', - 'bc1p0tffp7rs4aasj9lm5j4pdn69kudt33d64yr6mg3l2rhdn0zrzd5shw26sa', - 'bc1puqtm0k6dqk8yykxljrj2mt3cpprqw5px06txha7lquf8w9y6azlqjcz0d7', - 'bc1paaeess9c6qsyyt9fwh4pthcxlf4m35608rdnkmephg69wza0zs9q9u4s78', - 'bc1p7adhm585zayu3q8pa2l5dc5tznu7vu0x9zypu7zlqfrn9z5f8ahqcuhrn4', - 'bc1p2mg0j4lpjpguvzk29p2elgcc9dy0mlnj7qyka86da49xc4t692tsjfga8l', - 'bc1pfyg7afvmxr6puv7jv6ugx9ruewn7p6lj4u4jlsckgumz3m655ensjgj4na', - 'bc1pksvxj9r042unvwvfv08tr3h650jlpx4kjzvjegnsev0f650d5acqxnqv7u', - 'bc1p277wm6r98npv7d7e097fgeh6nzfudcp5x49rvrt5xzj6adjd3jmq8jekjt', - 'bc1pzzv42797e7r7rqafmq5fkg85j5wqurh4aj2qlqj4246c67skmhxsq30sqq', - 'bc1pek74uy46grx8vu07mx97zwffnaquuvdysuar2f24qnas034tyvmscz6779', - 'bc1pq7lwh9zn4gae0xq0hg20z32e2z8gnpcf8yaks8uurgf34vf9d3rsw8h8r7', - 'bc1pxfq782fd2rdss07cx8q4r2ctfaerpeckhphz8va47359r7vvkpwqa26ag0', - 'bc1p09gjlqrt4laal3rqwa3tfc26ja2y2ajeg0xt3unn2yxhlkqflduq3wc8mh', - 'bc1p0wln5yupmlyy6utjnnjgw05fpdmcagql77pm0cduws3cm87eq2dqctvc6e', - 'bc1p8kdv2dyjlx7j9x274tn3dna75xqu3w4ud8d0rjvg3vfmdztu45ks9nup3n', - 'bc1pmnpx9csx3jsuvjjpp7nd2xglvdnmyrx8nzayl55h7u062kzf9xlsyjh4q6', - 'bc1p96a0vpnmrc8l79kuhseczw906j38ulde7uqzc5087n48wzt9ugcqcg0u6s', - 'bc1pp47fdc2y0tehkhgshmceqhvmltspjfcz5qka90lz3ds8x653dcks2y9xmw', - 'bc1pj6fc5l9zwc85g5fpnrqhctmrhvujc8zev0r92g3czlqnv0uvh42swtfvs4', - 'bc1ppyutgft3fz7rjvwk8z6tgfesqnmstxdr78pv62c4np2vkqtgxekqmefkuj', - 'bc1p5p5jzp4aut3clnppfglz38ztr407vun4pzj3llaa2yw4vyms667qgl85ha', - 'bc1p7x65s58gcc2f07xjwutnn7g2c39qq6t7pv8qa3pwfays5nf5jkusgwypaz', - 'bc1pr4av6xujwd4zf99e9dta4x5dc9wwf3j6rvpgc3jkcjy8q6dnzwxswq5guh', - 'bc1pvhkm0cfaaqdmft3epmcsqvwrrttntf78x6m7yyks0zc88xn7hgws26azn6', - 'bc1pq0p5pssvtg4ct07w56f64d4wudpgwar7yl8ly060hqt5sl2w9ncq5zahqk', - 'bc1p8epalgdp7r5xch3v34wd9f9u8ml85ufzflurmsk2trgy6jyx0eeszv3apq', - 'bc1pk6y0az3fqfunfqr7czknlq47mhjax40p3djy5u8xwzzzhnjazulqhj5sgs', - 'bc1pklq63jkc7jcjw35gxaeje7jtvdatkrk0tmwm6sh70q9xvx8ylx7s7jqjv8', - 'bc1pt7lpcnjr8qex02cy4w02cnt6jz3fyxqvtx5rzxfaqkweyg5zfytqq3ddf9', - 'bc1pj0gaaaddrajhtes3kau764unqldvxdewgm7w3yxnn65vdge280cq74meu9', - 'bc1pc9rz4jmmmm3fma7k480swc2gte5sa28glwnk0sfv93e09lmnl4mqfcd5a3', - 'bc1p8uh9vy7a70aj4e8mgdwxcte50uy68lzu83wcdjtl3q3echhmr0sqt8rd9t', - 'bc1pj5kayg4fpklmqfswk40nqel6tr0wrqrjf2390xmtkpzpq8qw5mwszzhn55', - 'bc1pcwvxhwk2r6m9dw85vgp6h6gd0xyj8fd8s57axu4p7eck42w3kvws4r286a', - 'bc1prv4ztm6u7p23fgh8s0c83lu5vuew3vkt5sdg5cxvmdpxdkph5cnq55w759', - 'bc1pe23sk2l2yszsnhu0cvl6r0jujq8690xrvxl9dwh6j786v2ralqxscd439v', - 'bc1pu7tadm30gw83aynm0vr4ta9ngcw8ftvystxvh0q3k3hpz5rnjzhqtpzn56', - 'bc1ptnzrd4ttdttesuqypsya7rcmg3xeuduv2rzel6n4khs4av3t9llsrv733v', - 'bc1pc42p9c8v3cpc0tncjzjfe6s43889hgzsec05jq5jgzfftw9c3xkqtwfhvt', - 'bc1pr3cfvu2txuw66eaepcyjnrfewn4gx2gv7jj7v62j7x583psfr5dq6gv9n3', - 'bc1paked3kwx4nftvj2x27c4pkpam3drdv6hcgj5g3flkacgawn7jyxq0zz8sq', - 'bc1phw0ypg8szvkveqdxdas27vevak8ded46cffcqtc9r08rtm63vhxqtqzhtc', - 'bc1pedv4rajnu96ldzwcdt32pqh9lxfp60hme2n7ync00w9qpyx4t9sqw3ycdp', - 'bc1pvc9m8xk04h3xddnsnk6rrmc0hse7gnsdwlyn8etgsay260m7ewns945fta', - 'bc1pur5v9eeyqpl39mp5wnmazkqrc25kee357frcylj4c2njzp2pflqspwusph', - 'bc1pr7gmp95wcjfc9e6ya9947zpzqpnn849mvztpwvvqn2aw2vk9qylqhkpkgw', - 'bc1pczedkchje8l2pcsm03swkhdvwdeavn39w2xwdg0aqktg099le7kqss5js5', - 'bc1pdz2pe6xw8l9snrnf0tgup6ptc0x8q22q27zlyfvm33tnlpqujp3s9c6mvg', - 'bc1pwp88cxytmp52e628f753n2yqvs8gf27rtfqkz05y0kpj5pfakg2qu5awqz', - 'bc1pke9aacezepmqtqrqsekk7fmyd4gfel28z8vv2r8ksrtc3y5vvw3qlpj5el', - 'bc1puagptary0p8ykuua965z5e9c0xapeqz50zea7k78lgaayvdlhjsq5s88ty', - 'bc1peqr4p2akv0rqucka34fr3293ehv5vk8el6a420mvfl7u99q4gk7scjlhn2', - 'bc1pcvcxdfrw3u57wdur02a9ul58zc5tr0ae5zdfazh4rhjgvzhnvlgqw85gjf', - 'bc1pt98lmv7eahz9343lxw3qs0a6gylj8dz9jutwuz9ucj9zweea8krs229hdm', - 'bc1pfchm264pfxw0nd932qfdr79rgep5ul57agm49v8fjdkdfmzfnk0sdm27ys', - 'bc1pm6kzpdt8lwquy5k0n7n0rzkht363gjkc8j7sew7xcldw86uzc6qqrgmxdy', - 'bc1p0k8rmsyk8sg3jq8jvak7zc7hr2g30477nv6kupl64clz9ky4h8pq60r5jl', - 'bc1ps9su7pghhghrq40hqudavujkp7sfvxqm8dcgwjzxl9gpu7zvf3jqpzfhjm', - 'bc1p0whvh7zep5z59udemrrzdc5w44tq2ht6luaqzy5naa97guw4z8nqswmkjh', - 'bc1plag7yhz0d5gxz9z6rkv58vzk5met0kgd4h8m305fe4shyc68nq9q5s2x6j', - 'bc1phqnua8m82gyc7j6j48wk3uaa6p04lvc29jglhk4ggg6wkhp4uu2s5kftv9', - 'bc1pp2dnxjm7a7lk4pa0epfax9rd4s87xw7hpgdxxjg2y9phwqlnha4sprye7n', - 'bc1p6shet8yenqznynt4meftetqkg9aj7acndgh6ecy8lcw8z8433xysp376qz', - 'bc1p9pt5pekyx2egdvmdgq9ap84qr4syhwryqkqgkax4acqgm3mhgrasprduq5', - 'bc1pwm6794tqxr3lc6348wy4z74ssj00tscnxmvd889kskac4jte95ps5v6nf8', - 'bc1pm7tnkc3c33h0xc3ry63w72hq3yfc39typagczzryu22w9p3ash8srnkvtz', - 'bc1pv0amvarvk0ft44zs8zlqe4rznw6x7gp86u48syqx7mkph4n2ureqxc3x5n', - 'bc1p3n66vj5qata55jlyjcv3rcjrwy2tgmwjd2n5y83alpztcp2uvmqqze79xs', - 'bc1petshrrt2u3gzfe04nfwun8ksu7xsnx648r3ky3jqxq0wwqj2x3hqckuvt6', - 'bc1puaj5d76cd7cw5l6nrvqqt86wgg3yyughyg976yadspwh8aetzf9qf76j4q', - 'bc1pqpj7mc27m4eq7ns95p58zx0c80sy40x05w9twujfef69ur5nue5s78t97m', - 'bc1pm9lp5evmzrr0edehgdpqqzmgr966uaxjf22m35mjj28rdsr0a5dqr2mwe5', - 'bc1psf34cgkrxs29lwc9lyv9a8adfvufemhgg4jqkk34vnglgfd7px6qvvgpqq', - 'bc1ph8cejfdk2j3ldk9aqywnj7xrnx0v24he0sf982nkdez9509awuasdfpdam', - 'bc1pz8hdpx0r2dzjqxkwaenulxjezwz3vmh823ehrzk06g5gll65g3es38f7d6', - 'bc1pgjfcqenfvfaeu94ftcgpnyt4kw5ted9rcqfe6n55mec6nqsfdr4spkf3gt', - 'bc1pzfvwpr8ancxnr868hgjy96lfykm59t7rjkr8xd6gx7l86jwkshdsl2ln2s', - 'bc1pltpr9uwy4f8rm64px473q84a9cghppx0fk4n80mhdxtjmgzgn8kscg7wm8', - 'bc1p3fxjqxexmqdr3sswzwa7t52d4qadexp0ru9czc7s0v8k9kk4spxqx2guea', - 'bc1penavaxm0hfuulxjprtsdmqn2x9wxs4aut53xswvqpga3x7rjw9ps88m3c6', - 'bc1pqt25anhef05urfp8y8qtqr6lk922gecja4era57pf0ujgukwpajq88px3t', - 'bc1pqmedya57zg28c2ae7qd67ua82ul4gd7nayftwuxwjx7euhnhu49qpmwjts', - 'bc1psgvx46lkx86qd20eckvg92ah4ksngntuevhypz02ch85sacwdsuqtffl4z', - 'bc1pj5n8e73n2fp6h5z7r624y85vs8hccfxq2r4fth8jjx3psa4qu6yspnewc3', - 'bc1p5d3vs7hp5ldvzjpqft55vezdhwv8tugunxhunfwt454vpsd8zgjs2ykfup', - 'bc1p78dzevaa8v4w0wzgv4mfw3xjdszlkqhm6pmq578l478dvrn57dvsrl2pme', - 'bc1ptr5et40v70zw5n62xr9xjhtmqwpag8uyr5uc34y4rjmlfhd5e8ys2aed7a', - 'bc1pq00nz60nhzkszfz2zghgsljsaa36ww3ead3fvy2r3j4z33ffc8uqpaeqj9', - 'bc1p6p2dj7dt4kn9x4xqa37ernke0aj508thxf7f4230thhms8ehhukqxleazh', - 'bc1ps6z56yehle0s2nt7anlxpmzkld6ywjpehlrn48xnagaa9e9x4kxqzl0u5k', - 'bc1pqmt0e0q4q3n3v5nlzfn9zp4m5lxkgz96lg0yqqmvd2kf4hztq8uqp4dckn', - 'bc1pnez6m0dywuc5x7ucnlgn63fujcvs3ntel53acxwwa2j6q00cnt5sgkusmy', - 'bc1p3zw7wywh4upj0gd5dzmzy3dmuqv2g7z202hs7m6ve8x5kwqnrrcqe709u9', - 'bc1phfdd403w9e9xq4lx0tsyw55sz5z0mexwtf79d9wmhac8n7vmz5lsq6amyu', - 'bc1px926j4sg5pxpulgl5ptl0e040cxeh75l6n6q75sn7a5nk4r8rnxsuwkegf', - 'bc1pejv8c3uwgk9vyy4cpn62227e9h05wnsagu08pueh4qqp6ughzvzs0qkypq', - 'bc1plten9grmergen9xlxdyxnnafxv6mpxzradlsnumr52k9sdcdwu3sqtx7tj', - 'bc1pq7a5cfr9zghsydzsfflrkgkns9u2zlspzr87222fu63m7utftqdq2eldxa', - 'bc1pqsv08t05sjs505xg3wjs07fem02nm653hlne5ke9k3cggewuzngqsl6p5r', - 'bc1pudll32guxevsayk6g2f5tv9nagujtt7s2xsajudvmkry6mcl4tcqj6ykxx', - 'bc1pp4ja6fmj488wcrqcs63fcsjuf77hpye0gqpyu3hysafdsyezwm9qjmrgpq', - 'bc1pafp3gtjj060ng48xpyr3mv0thlmsz6yf7a6ge839s0gza4xg6rhs3l2asz', - 'bc1p67y67ej0mszgentmvv57lhdl3jykvdcsy28q3qamm0eqwckjssuqml2xdc', - 'bc1pk6v36ajdzpml3pdz27nyg2rvshun220w45xevn7gq8htjdm8dncssc5z87', - 'bc1pcaf9d02r47su0jqrkq57l8wnkxvqfh007ky3jtll87ccfdj2huus2y77z8', - 'bc1pmfhn9hjqf24vzhkmcxd33fjap239r0pghakuwrqcnrg95na0g6kqulg50p', - 'bc1p5nx97kk7t0mvtedtggj4sa6yeqm56q9h0dgng7jqw3ce0tey65ushul93t', - 'bc1pdravsvcylky6te2rcmpjl802uyejjpdem4kxe7tfk6umnvazrmxs8xnnrs', - 'bc1p8kf3nfe498ar9qt52gkqsfpd37pnr7a2uqa0q3zqxvdaqctu4n3sy0v26y', - 'bc1p6tznt3u4lk6apxswxg36mk2d6z6e2xk7384f2kucua5wnu3yjntsnma3aw', - 'bc1prudvtzy9dqmhuaxee0lu8423t7fv6k604gyjsnshlqae4n8h6h5sl726qq', - 'bc1pluh37c8ced3xakg45nnc6842dvurdtakzguuwuxy3gaapnzv2sqsfvwu8r', - 'bc1psgqcygzyga8wpl4p3kyar7jsr7csdjact3pgcgqmy0hz84x3zwvq7a28er', - 'bc1pc57d5l42l0a5ca9c3r6m0jwhxwuqj7vs34k845y6nqrrj89338pskwf65e', - 'bc1pq3x7pkkcsy0v53307q4s35d5zcwrz3h9lrk8m7xcacgthl4x7yuqgffcel', - 'bc1p5glt87k558h4t4hk5d2gnwvem896483qp64cm4rey0jcgu2633qq7dykzp', - 'bc1pzjk0yvkz3lkk4w5ehyl7eqydl57sh0gs49yw7449c72n8mhpf54qv9eag7', - 'bc1pp94958lqm5w6ls76sddj55ak5hdf92yqzkz3qtdzwjsyh3j8extst422gw', - 'bc1pcxz588ac9rjcxdn4l3gve5ha9h7pv9p7srf2hymkkyvllmwdqyssunkdst', - 'bc1ppsgqdknsrley09js7pj6zm02ayjprunecl7l27gcym8684z5q3gq29gvwq', - 'bc1pq4xdjeg5fm6pvhw5jf4tkw4zh7g26v8pmj2ftxh4law92ygmerzqxdhrwz', - 'bc1p540hsfjg3tsrt37xtumjyk88cdqurxkjtz7hw0srhqay6ya9gsgqkuszsm', - 'bc1pejqatygf6xtttfvucvmvdhljnne7kh24fuhp9gc5mrk4nssnv5sqpajwps', - 'bc1p7uvspl6qt47eqyhe2azd6teulyy3ldm7kf65mjqan2wqnmwdquts36jg8p', - 'bc1pktcjahn3jda5t2zvh9knk44mse2gfvj9rxyfamqydz5x22rfnlus3jwz6u', - 'bc1pa9grs6wng9negv2rp0y3p7dnatvcym0mng9vvrjnkzs622nhk9jqak8dqe', - 'bc1phs0shgl8uj9uv0c4yyf80vsj0ptt2sww7daxu2tagpcgu2xfhw0qw54z5p', - 'bc1pecmtald0gq6xl97ddwm9e8xunr3ut0ssp20qptxvt6vy5c7g2tqqtmhzng', - 'bc1pcapsxmlv6j53d0lknkav8l0xdn232y58ym8wfeqszm0frg9at82qxqz4md', - 'bc1pd03w0la40qle3v9mh8qvv8kdd69fd8nvusyufczqr8k4llrenu2qmujxgc', - 'bc1pacnak64enz2u6pnawspxfya3825fee74zmh4aw7wwyy8eakm5rds0fardw', - 'bc1pdyerdal38qutfyxkmxau5rgt2n2q0x9wr7d44hht0vnyusrwjjmq8et98f', - 'bc1pec6uvys8hvf69nfjdezdarflcdzyphej3ypyrd5sc8nsph8tqa2q5w8pkf', - 'bc1plrvxzujel6t9ntpsd6yj8nrk0sc37325uefvzq6eua8xwddadcnsvgu2x0', - 'bc1pncckqrdhcyqdlqtje08svf67mam0f3844yyv5w5c89kcnhlgmj0s9cj577', - 'bc1pmf6qq38jgkptl8s86kaxdk6xsj5q78ur8x8tamnxq754wrau8t7qlrylql', - 'bc1pkqdswf06dt47q63fg3s278fvk0896ylc6ddff07nqgxtpf2mxpqsm7ca3w', - 'bc1paa3rh02rm73fqu5wdwufjnt4chd4tpf5qggyhe3eqxx34p6vwtwspjpn8y', - 'bc1paj7h80raslxp4chugeq35a8akan60au5vecveqmmzssvt4rsv4jqayv4gf', - 'bc1pfhqvqkua50z8s6xzjpe5tja69qh9y8gsucflegq8qrrpwc8g7s2sarw39v', - 'bc1pljk2dm94yrgh25um6vy9hllxsuwv579uujpf9mz7j488ze2338rstshtzf', - 'bc1pdfm0wrmgwvlsv2c4kcsjxctuph2fc00aawt7rq5phv93sucvqrqst7e98r', - 'bc1pdzv4thm3tayud0d9w5x3nlu0n0lad0dld58yekafmpwsnpcqr87sg73gzh', - 'bc1p9x584g4x300pvnqpkgfytkur8dnu3spsc7tl3em2up6cndzj0p6svm4ljm', - 'bc1pecme0f6qprrx2uqur3t063exq65sm4klk4ktz9pzrqdgezewqptsrqzder', - 'bc1pk3cz94tqdutk9qsm5pryzggala44f2htze33n55qgquzfh45u56qhdqrz3', - 'bc1pesc80s5cnsew4nv7pvgsjh990zqq3v6ea3gsm7lrvy2lk8t4rwesceslf3', - 'bc1pn3vfaaykhengvq0j2alw25ka95ue6sxuu36pmagct35lwda6eksqhfege7', - 'bc1p8hs94famh8q926p7k5vj8hxcqw97aq2f90v7lvl6g54x024pl68skdcc22', - 'bc1pgdl5md8zkp8sst7rl4x276sk4xdh9v0sdwq0atah2nmf7ewygd4qyeqg0h', - 'bc1pt54em3fgtlj2l2npyd9j6v9rkse4g4q0kaqhd0nfmcw8tfskrw6q25kxcw', - 'bc1pk2u0x67qa9nwp82yh9jp940mjzsc9uryas9vd37nwxav2v6kgfms2fh9md', - 'bc1pgty3epszkcv4zs0nt5g3wt5ze7da0egtzgyfzyrlq6uwggxrkyxszwrfw0', - 'bc1pxq5y7a943qld5rtsg6ndwe9flzcc6vq6qsqs3sgtegjdmmy5l40s0f84n5', - 'bc1pa7tnvxpe23q0z2c648durejzpz8c55lnwaft3z7f2vlh4h84c9ms9fwygh', - 'bc1ps53h86m8qyepj3syr842l62wrr56mrp67s8m2l3ka2y58u62rvhq59ujc9', - 'bc1p706ktvdghk84dzsf0kc23xhtc6lk893jme8h6kuv6r7mzehpd7fs0uymj4', - 'bc1plrdfqv239jjk9k47qry3693dsz9d3q86fj3mtnsyz02ky7uzq7dsxgcm5m', - 'bc1pt7qkcp9wxjtm4lw4jcpndr0f4jy2hg39pgtu2shf8wy0r936qzfq997lfn', - 'bc1p0xul57mz8qg52mahjutug3qp6tr506gjfjq47rews3v6he0uplhs2eemhj', - 'bc1phvs5qhkev4dj7xvcf6pe8cex44uu8jz856x9rg6l66ty73dqklpq4tgr20', - 'bc1pmhhh5qaglmh9nsqw4as70hducjg4ysf0h7eaye906swehxfk7cls5j9984', - 'bc1p5pdnwglz35hg0sat3dnehfwzhxg02c4kyknh4dagyps3qgx0gypqj9wvyt', - 'bc1pvj200xkay9r9ljy5epqg05r74akkj7ld50ls3sft4mc6jwp2cn5qzdlk0v', - 'bc1peagf9jew5lu5hdtxaevecn7j8wuheqemku3trnwm8rkjuvf3nfmqr97kew', - 'bc1plpjc9hqt8s2m7gv6x58p2razel4h9f73y2pajy6rqqk8ac7lu7xs6t80rf', - 'bc1phqf7cq5eay62zwqnlk258e60hf0tmng8gmvaccnytpqd6dpls95qq5z909', - 'bc1pw6ke44dkqv8x2fecjudtdxxxfpsqv9rl5dgkfeadj87tlkzsyxtqlankw7', - 'bc1p32a6ana5yqyt9lepnr269j6cux8hqlmz5w82txxhxlvyn65mcgnqm0fefm', - 'bc1ppwyr45jmdz9qsuq9sf6ergq0273t9kxz4tc4s5kev9r9p4c70q8qvec3yx', - 'bc1p3cuwsrekzuykkytzchqwum5lw57ks44f6u9lewn8c43mx4sk9pdqnclqlw', - 'bc1p8zvs79ukv88hhsh2hzstmtnad9uzsdarsx4e9h7y4hg5lzcwfkxs2hz550', - 'bc1pt5gy8n2ghp9vfxlde9n8xwa8t3ytfnce4zfnxsntpmctnddt5crsn8kac8', - 'bc1pmhhke8x8cm7clwcdzct8a86jmjaxwhrz0v58mtwdp3gm6sq28tds3ff3yp', - 'bc1p4495eajpm6x467838ychuc7eaxd79mwn7enyxtr6mcwy2te9kq7spgvy8j', - 'bc1pjlcz27hn9dake6rlmz93knus5nw9auzgp2k4wl86x7unaugsg2ms9f3cwl', - 'bc1pkydu5fhex6lk5du7q6xrel877ayhkjegt9ytswt566e5uxp8nvhqystssj', - 'bc1pvd2tjdjlhzdu8mkr6uapqavy4lqt3ms0pync3f2r5kaex9fyq96sswvv7u', - 'bc1ptpfpxw4r84sk43qw788z6yvjq24fjgfyaswzcts0qyvtc3srp0vq920us6', - 'bc1pnf2ad2ccvwjxx5e38q6r0nm9f5jsue6h4hss6xh9hyahvqx0mcls4fj3rg', - 'bc1prexk8rmmf8ul8uhw8xnwgkugdh60r7jjgr7l26ux3jgxkqup5j8sg4pp8d', - 'bc1pxntp4zsclq6969u3ed55glmkgwng9dat9d8axjhk860c7u0lnnxqyuka32', - 'bc1p3vkfjxaca88fknwgdu56xst26lelr3yk45yzv07g079d0a9nhnwsyksg90', - 'bc1p4pajywqctu08pe76uxsks05y8k5au77zarzfdsjps6taekd2tm7s5lx35n', - 'bc1pc0tufqfjq2ewq83053r4wkmjl2rg0rhkcd32jgujxecyvxxwaapsagywqg', - 'bc1pa5mca3rgs69uugphk58zq33tp7nh9p3d27vxq5t0scq3z8d07t2szx8evy', - 'bc1ptnrpwxnnmwyyxntjsv406xapnfx5aqaq0jcjna0ga7wkz0uaqmws4ac6rf', - 'bc1prjvm2gu9qkqjjksadsxqmm6femra8xrlfgnxd4w8k7ndws9rxfhs6eec4a', - 'bc1p908qh63dvzqt8hl3k6agwmhdx98ytthvechyezu0504m3eml6kvsjet36a', - 'bc1p4twhadsnzplk7mlxlycs8c3n7l3t7lg058ktmct3q009dcsupm0su3t4zu', - 'bc1pttcjsl929q685ntv45dzccn9qgfdzfrw5js545hrw5jj988n3mzqtcsw28', - 'bc1ptetq3erkzahfsekvcrjhka4s0c3vj7rxlf48qkjhr42dn5lx7p2q74u89h', - 'bc1p6j6ttwv2wsuun0mhy9tsvjglq5yqw2yy43h97cy6te3xgv4jrzfszh5t85', - 'bc1pnz0m98wv0kzdpcuuygjax7expqdamuc3w5juval5xtldj7gka7uq20tnq2', - 'bc1pcguvzng7yvdnuyntqygrtsce2rkyhxn3tnx7kwcltxnavhryy9cqtshuqf', - 'bc1pdgfzhgdyv2rwz0rzvxy45ctqh6df2rcrvex5kunz8pgae30ktlqskv78qq', - 'bc1p0jchrzwyzpgk8ksjz77gcdhxypmsj35kgvc249mau8gr0k9rpdvqpylxcm', - 'bc1pcg3w97n2yyt94yryqmqpxfdjyw4zpa0gp9z6aflxr77wsszv528s40tdq2', - 'bc1ptvad8yc5g0r543hhrk53aagpveqeavk2afps0ejwdyv48uzs6zns4u2z0k', - 'bc1prtrma3ne35m7wnmlvrpufkjzml7crtlgu8eaznsyk4sech3y90yspye4kx', - 'bc1pcgqmljue5z9pff9jdekytepegrxzlte6cg6svx0zxukld6zr874qn9mylu', - 'bc1pq3usutfaqrf4lgqk5glh2u8kxmdr8ddzeml686edak40ng3d8k2q6kqqeu', - 'bc1pd22qhq9sxt30q2fvkqmj2anduwwyeyleanpmnt9r09dxdv8ruucs0zyz70', - 'bc1pzy6fhztz5tsestc48lmthsl9zvuale58fe6rw9g9lf6lfe2nhwjs5l8jq8', - 'bc1pjkrgp5j9uapns49lfvn3lg6c72evd9n7lgt0gu6u4rcrc4g2jkjqmmcu3h', - 'bc1pwd9vp20jpyw549nct8wlgdtdx0w5wx8wg3qfy8hja5hkledvuceqk9w8qy', - 'bc1pg9lyrnyqthnc4w2x6jytdfrgu853fusgcph92q3chwjna0cenhystqj0cc', - 'bc1pst2upxksqp7lwtqw9htc3zqwwcqx0ze32gy8xzdl3706daxh4ykqaa8k2y', - 'bc1pp99xgqvep4pcpqtmwrcnrsd67ahxupfartfj2zgks4d48upnzwaq5gdgkj', - 'bc1pf4xx969ym8wwk5k3u8hyj254ruya9ty8pp2v0m4ef3e73xj845yq05p6me', - 'bc1pttmyvq60wkz5azqrtr960q42alyfwwxd9usfe6yvjqw5mg0cfqhqnws95k', - 'bc1ptx6euazpp4l82j0fyulve6um57g0sym87dgvcyk53x7qtjd4edxseeksfn', - 'bc1p34luf6anvfmljzuwa4k9xaunm6tleqqlg0qfxcnk0d7hru2vcdjqk0e9u6', - 'bc1p4cl34u59wgc6r4px8ge4fr86jhg27rqjpt6780zhntpje26pwqrsedz839', - 'bc1p473quqh47dlpvdpf66njzc65teaaqdl5klans3z8xqeu5zvzjqfs9vgcva', - 'bc1pvk6rcpnyte7tgd7c80ceksvq6892qex7cv9pdzdktp6dkq4ad2mss3n3c0', - 'bc1ppgasvm4dk2el45jw4cfkz7ldjamyzxemaj39mk9p90sd9x355ucqtlunml', - 'bc1pae60555ygx5q0v9g4e95vhlertg4wzxgwanqgu8tj0sekdqva9msgmar9x', - 'bc1pygmks9ncp7qatc68xdymzqhfapj0cxvacf052yu74j98jhfyqekqs644mt', - 'bc1pkjn6jaum5spegjz73xmrxlyt3f004j4ftt2ew0d6jns2t9sckqaq3f890s', - 'bc1pgxrwzfqlzahh60nm8dzcl69fkwadz6lmc2mtan4txw67gm6f5mzsaems4k', - 'bc1pg2m2c86cfqzryjeee4wf6t2k6smm99548hzd8gswls0lznte6ttserhvyh', - 'bc1p0q566ayukshmmjgkjzr5pmy4zxv5kg4t276akw2l06upvs2kvgfqujrzpl', - 'bc1p6sl34r200vht2endg49ttamrq7sg8lemzlrl9pc378lmh4mn6mvqllk2np', - 'bc1p78awv5ez5fa8x0qv8qys03nfweqjv6y7h6mxmvnn8ufqdy0y2qqsm0zfaw', - 'bc1p05hssmsmgvy7exc6eaxqyz9sfda5tzdf4n50dlm67stzpaws7kcqsk98dl', - 'bc1prhtlmtgvzv9j8dwg3np0t53t424awedaw403mhld7lwn4fjv6c4q9ta2c5', - 'bc1puqewvdjt6j8fr6vydkxwez3y5hggmtvrp3jx40whh9sxc526ck9qr8cn3t', - 'bc1pchlg057nl26dkgnw3ug3c5p49tzsl2t06qxgaveyqvkyhyg6kjvqdlz3zn', - 'bc1p9mnwv7janw79gw6h9k7765stsjyl8eppry9w043v43jzachcwg7q3x4hvl', - 'bc1pg8g7cwd3tduvx3lg6kjmkykugp6fyq9ause3a8ay7h4g2d7sz8vqecc8et', - 'bc1pvxajvafh83862kl0d0w3mzjcwvue4xzz6vyjtxe4t6la0f2ava9s3efct2', - 'bc1p366542yp30n430knxken5nlxzk8kfk9kf3u3evpvlk7wrzsu53zqy4cuy5', - 'bc1ppggpked283slcupygquthtsygj7u7l64ey8406ru7e7xahvv2vwscd8uuu', - 'bc1pnp9vupx2tgdnhku4qgmq5yrkgauah4tz2f04zrst405n6khun8dql34l8p', - 'bc1p7s9lmd55p2ucrcmwlungxae6mvrzqqh2ac0h25zyhlydmdzdh8hsltlwgg', - 'bc1pngrqedlrm4ysp69mh35zdrmpw49n2glmmnczljgp8q0juztvnhxshxn25m', - 'bc1p9q5dl9khz42q5n62n5tuecr3zvwjhgdky7rqmh0rj4wfpj0svkeqlj3tpk', - 'bc1ptllzpsajv3kzn6kxzjvz9xpaem2tw4uc22gygkyw5lllek07cpls0kqr6r', - 'bc1p7e3jj0q0z7kjh2dtd3kd8gqfhj9r2pps8svpjyre8lcq42redamq3pc2d2', - 'bc1pxu7lmm35jut8zcfx59e0hq25mc7v5fypeuau22x8nghulsk0tajql92ms3', - 'bc1ppjhjqswhtt0w46z4l6hjp3ztgqjh52xurjnlhkragy7zemyhzhjscpqzjw', - 'bc1pwj7t9l77j0pecstxnmnv6cxh8ltsh32lwdwqnfzkhqm452rnghgqx8w7na', - 'bc1pkljdq2tlxyh6l9vd5nddm6dyz37mdqmk6j3sx8zjl4t8nv4sw2lspkyvsd', - 'bc1pxkvg6dmn4lx38mkxullahd0rk8qqfvwllr7mmtzav37jjavjkqqs5de29f', - 'bc1pys65ddfjh8eeele67z7em5m66f3eu3ztnedzuksjukrpy753uv9q3h6r25', - 'bc1pqkhm2eu7wsxlahxcgj3qpderyfcv9a9gvx6fwykfx98zqxj8dcpsfghus0', - 'bc1pj0wzzjruzjezkxdupfjjhh4arf4d7spsqj2u8uldpc7gcdxs4lrq3vue5v', - 'bc1p6ugztsykt0nvvsa9v57wnpn4m6a8k0xk5wvvscjsgjkcv83chdesftcqhl', - 'bc1pxwv7k55m54qxpra4c3h6eahd5gukt5chp6k2selnmn0atxxfw7rsukjp37', - 'bc1p4y3fhe33j495m5j9lrakplv7a2f32xh3cx6f57z03qcjed49gmssch0ymm', - 'bc1puy3wdxg7fg5lm3h22jpvf5zlsfae44cpe9n0ydh98rd3lzhqsugspgf6u0', - 'bc1pvs0sp6augclzgxs66ufyfc5cwf754knsd65wpjkcezz364d94j5qw97s35', - 'bc1ppn2rxp5fwh32wkt4hrkswa3jy7yd2mcg74y5lj9fm30u0ahlpvqse8w5l8', - 'bc1pt0kmfd825lsmayvmv5v7evq77gvfpd47uukkfvt0d3hdd97tdc2s79psm9', - 'bc1pfcyqw3hgsgetvsz8kr2jt4vs595t0hj2wphwfmxqchm0aen46dnsgkgcfw', - 'bc1pc6msjansxaf7zvt6s686vgyw3lk9c57uceh3stxsf7uk0ultc4cqjg4lj4', - 'bc1pz0q8d9p0yra6e2078th3c9h2v5t6vg8gque76udqms0nfqcnqqwsrvl9c5', - 'bc1p5qrchfjd5flc94rf8zmu9k0z6p42zxtr0w9fv9tmjqt78nsa0xcsnzc6n7', - 'bc1pnm95rzvnwkr3cky26axqp3za5je705xza223vf0fv6lp8panmrcs844he2', - 'bc1phjp5ef2amhqw6qx4sv455d22ktztyns0gllkvmgrtxk7svg2duksnl6ca3', - 'bc1pz2twlfvclq59n6rg68njnnl94sctl5kzgkcm8ajvrc0jea4s5v7sje6zqp', - 'bc1p3yxhvfvulqespv3nzh85muhky30wzjrv3ft3xrxpav57x6m44pls8ksws9', - 'bc1pqx33h5kgt2zfghxlcyxgq8v3k7lgyuq673qjwp9x7zwre043adks04wymc', - 'bc1p54d3tnp0hew3kx5xm2ff6ran2uheath2n7dv39s39h74xnyewq6smxz9ym', - 'bc1pjmdvcsu6vgrhglyj3hp9562uqxun3jv0fhes95gh9mrm02v0naqsl37sqz', - 'bc1p4ale2hav7lc2t54m8v5rvmncjy64kzvrmwudn629xpasvqf9q6js65qme3', - 'bc1pykutm77t9m0n8lwfjpx602p0p2mglak79hunp2rxtulr9pcrx29sy947x6', - 'bc1p6yqcnpzqrhqtuy5mw0mxm8q4m5yn7798vca377k2n2erk00xt2nsx5wc6l', - 'bc1pl8q4pusq34lqhzmmwwwxl3jxdqe0gfsr40q3tpa0s0pnrxh5zh7qyfmtkp', - 'bc1pxrnwsznlwks2de28c4zltz8geu5evsxrtd9aat809jpu3xcwq2qqdfsjwe', - 'bc1pk6kta4dcw3h5v25qxk99qzkherxxnc8wmwej7kxagcg0q6f4re5qcqnqsp', - 'bc1p8at7f3vsl4w6d2yjszuy669zrgffx2s0r9c72uql7wvthx9z9x6sn3lhmk', - 'bc1p497f6kquk62jsk4td3y9aytcweae39s34uvlq295j3wp3hkwzshqetsdx0', - 'bc1p8wkvjfvwcah7nefg7yna0tg6sapjajs0e75a0awf95a2hjvklraqqpw6wd', - 'bc1p0snlk8z9p5fqpt4nxgvrlu4e7zpefrm7tfnf9el0pep2mu3lhlnsec3ljr', - 'bc1p23yfj82h89w076td8pepdpgs4rx4r93f6ru86wr6npnrp0t998mq6k0e00', - 'bc1pjy3fr708pzu7zem3tsgzlpycpcv2t4qnmay74h7s74uy95dvp6zqgsqd83', - 'bc1p0ql0hve83nk3um5wwrydw9f8tfjm6hs85fd8j5kmvz8lhxdy42jq0zdwrj', - 'bc1p2lxmjk2svvg3vye03w3xm7c4rxp2tp8edx88jftchmj3n52wthwqfdr82j', - 'bc1pc7n7gnjulxlmurd7l553hmcdsddgdujwl6snwdp0j39mlc72m3zqnfmg2k', - 'bc1plmf6puanj8rqxplkxpnqvfk9aygpagl64ds3fsjsxhjtfhut9hkqy6m5h3', - 'bc1ply5g5s8davjh82nmrhuj0hl7l6ysar0gvwcmf8df6cpx7ltxz5aqqdv3a3', - 'bc1pxwvqpfq3r8cky4ct90g4jwfgg3axyvkqmqll8d2ywy69qnssz45qls0c6j', - 'bc1pu4zxp7q4epvgavgrf7tazltcqvcu2udl9e9rjhx9983hukkv7a3qxcrj75', - 'bc1p3qkey4w53phmt4fqxxhjswfldssyrld5fwxu4v4g9wk3t7tuj07qq8m7a3', - 'bc1pfse6r50yushx432yffwekj68lfewus0zugltqemrk2pd5fs0tess2aflyn', - 'bc1ps87hz4dpq5jt586dfwffwrh0vxklrndejy2g2jqjllh609rjjjcq8dp4aa', - 'bc1phrkfqgn6lj0w9lma5ucqtrl2h4whe4g3pgktxq38d03q67hgzcvqv6j6mn', - 'bc1p5xc06jcxlrt3f0vaxd772cxy7qvanwrw4s98xkgykaztr6ac26wsfcvn9q', - 'bc1pkqxlf36anyu24lf4msppyn5ls3kskg7gxxse87qred6cexh0wmasvxdzjc', - 'bc1pavvjcn55swul8u8kguhnc9224vkan5s4w5mwlgjex7pywfdgkywq37pz49', - 'bc1p92ksste8mgnar9vgxlc5yj9c56u4lknfj2swjd39t3k9s6ddfqes5quff7', - 'bc1pn886qw06sgta3l2d0tz0cdnp7j38v9fdn8dj5s2ganct3p8gsrgsr9qgzr', - 'bc1pcl6z6he4u45daky7y5nc20gpu0dr6g9ffzh2z58tca38c9wqgrqsqg627j', - 'bc1pqfvcn8ltkn2lgal663pxl2ztnp936ytd44y2y2mqexzxvql6eyxsxtdun9', - 'bc1ptwsvqhxmuf9fn8djy0afwrrwud64f599q80xzu82t7wpqylw8ftsv995x9', - 'bc1pvn4k7m9nzstskkgcfmc9rpz8s8766frln9f9ajzwkptm8egdk0gq7qx2l0', - 'bc1phspzycwr50mj8gl9lvg5g4d8uqn8m47q4kf8xyeppjs5xhmm2gvsnyar9f', - 'bc1p8f6a34cecnv7gyp4gz5g909rsk8m3lspzyhfasw6gjceru3yfkes7zc6n5', - 'bc1p72kcp2qt5uzkdznya67ltehrlvg3jzzu3rml6kyals6c6uutzgkqcw03jd', - 'bc1phg9f4ska8ht8a62uk3m7m9f7t2j68dz9mg9ta2qcau7hp9kfh5hsjlvkma', - 'bc1p0wenzg80aklzhtmldeayywenje0njactylcfdefyayypuydyffesw5pkx8', - 'bc1psgfld7evtvpmkngdwgrpv2ya2jpa28v6vfwcn6vndyxefa3nk3js0hse0q', - 'bc1pcr3rtuwkp9puef5us3dv9z6kysylsv4e2acgj7avrq5hjuak6lgsa0vudw', - 'bc1p70tnt73egmnz3rgx86j6r39etl563lc6my9j5dtx9thda8cwnezqy903j8', - 'bc1pjjnqu090mmv9mwz2e8mpztk5aexdhq4vvw0njga948zvjzh5n3kqa8uu6r', - 'bc1p8js6enxs6drtm9wuzvxy42aaz8af3ptjwtt9crkgu8avua20rejqj2p8yu', - 'bc1p3zcjcp6zws2hk7ul3dhrruvcv45a0lq5c2m0aceyzqtk28t3lhusqrw2hd', - 'bc1pzajaukauvka6je0jhtfwpvf52gh63r5mr5uz5nrs4cpucr4fmyfqdupdqt', - 'bc1p9qjqr87ehpvdyq77w9m4dssc27lhwx6zslwf7wlvf4syz22jgqgq8aajv3', - 'bc1pw36cs264sg93f3utpvesqwszrxgqepmk7alusc9tcj70pec050ssp40g9f', - 'bc1pdhjcm7nl5xhr07akhgeu3zgrq3xf6k6666lqsct2qnqwt6ktusdse29060', - 'bc1plvu9svza4ss97zn4z83xqfjyuhvw5upqg807uem5g4rcj2k4mzkskkr3x5', - 'bc1p5xujdsd7jer2pw5v6w5lr8w54dgn436mv00jygtafadkvfv8c6sq0ywfkj', - 'bc1pdhupjj9d8gwev6zuggkxug2t9f4hw4wqmfe3sfvwcfd2hmqq58dqf9jql4', - 'bc1pw4q5zw7yfl9t40rtlx8ggk4jklrg9dyc8v4cxv8enlhjda2peg8srtgg4u', - 'bc1psh97u7hv7ntrryra64jkymarrfxy8q9l0h8r8k4k7y8rrl7lcvvqq90nxf', - 'bc1p2eexfdmn4wn0u292u4qlwxu98e6qgkgqqsk529t778mr32gphn0sx8wk3s', - 'bc1pntvd2tzfqsng8wd3ee8ty6ayzp0zn3a6mwr93l2enrcp0w0xswas8vqvks', - 'bc1pd8enuntrw762j678j700emjardwkr7fn89ufn96m44dnassv5u3qnnkjqy', - 'bc1p3tvu2aydvjua8sfr9cckdhtgsvz9q3hufdccc2cfqezva7tmxvhs86erd6', - 'bc1ptcfwh0fnl9crcx43tmljz7r4j2qxl5ref2zl47095a50k89drz6s6n0mcz', - 'bc1pfavl6mc0970sk3zye4zk5crud8fphr2wh0gtjrkl35ppwvrpa8pssry6ph', - 'bc1panrtcpa898ptt2xz03lyu39h5lvmfx3z5l6d3fzw397v5lwuqxysqrwpl2', - 'bc1pxlcxve3m453gjga4gxrmldaqcx9c043dedrhcnhmnsv38qurj7ns9y7zse', - 'bc1pvq68u4rlwtafzpvz8gya0y2ntjuqt9xfussxych3yu8dsmh0n8vq8vd3uc', - 'bc1pjr4e428y2ynjqgxefd40zwtynu74n5mrsk6ujwh9qhcswgfxlnmszqqhhu', - 'bc1pls5kh60ddw9fq7r6t3zggqfxr5ujluqctn5d5w33tvcavgkumafs7whf8a', - 'bc1ppdx6mym6zj34yt24pg04q5npqxk2v2tgv0h0gnvsnt0974ztejhsp6pvau', - 'bc1p6s8ja530p7mfu5aht0xrqqr572udasm35nxjm6fxrty90ap8qulq6fpgsd', - 'bc1pwce3wnjtcgyze55fcnddc3cn9npr7qnxldcmjlv2pp9k86gv24jsm9yl9w', - 'bc1pjqddh40gdnw77cdg0tn02ksfx7duk22r9e8whf2j4vh75hwu0p9smweccc', - 'bc1pcvktr3dusyqpmvvcyy4arnxzdk0yrc78t7678eeq32ac46anda8sdw878f', - 'bc1pkudmeflsua5e457ezppkx8v7257dtt884wj8jx2elu3qglf3wc9szf430w', - 'bc1p3xxn0pmnra7zpyenf77598w9mypewqjcd74xdsztktcwhe6hwh5s9zuhft', - 'bc1pjk95ue34tg0t6fmw9ty3r6uc6u400lqy6rzdmst5nmzw9rcwzxmssqn869', - 'bc1pj5n5ud8h2ksqzv9re3c53rd7zkw48cwz8uvqyrc5lpdkf2qvfhnqa70y2c', - 'bc1pzgkmqhtkxqan5vutwn0rlmfzmucnlcsvaps42squsgq5pxyzzh0sr7rpup', - 'bc1pg2upuhz8pp6l76qk3elu8rm029nmymvhz6ft3zm9napuqr4y4v7sswgzky', - 'bc1p5fhtqqe8rax526c49z73jdhx8tzq3vya2fdqsl3t5wkdyg7nx3tqg9kzlk', - 'bc1p7s9za8qsg6h5apdcjths8teq2etvzt6v2pxggyuntkn9d52xn7nsjrzd0h', - 'bc1p68dmdmcqkdn6m7lw8dryhy3c005jy29p9hfma8lagwwx9zaqpuyqn9a6hr', - 'bc1p2zkhhwhtekn3zd7jklgngjkldm2r7pe496qwel59jj9lpf4pcu3q84cpv2', - 'bc1p6aglvfvs47fkuuwsgt7zjjwrksa3ancs932mmr86zug0u0d73h8sfx7g9v', - 'bc1plukrfeackm0xnj4al32d8tntg6a2fyda3g55ejqzu520afya724qyyuc9a', - 'bc1pa9p6fjxg2ljz2mfet8zktrppg3g6k0j34z6mdfc9av4azwf76rzsezsh0z', - 'bc1pes5ttlq2eaw3uqdg6zyrq6cpqnmc9s58u63jz0qf2cv0tuv9wgcstzrezv', - 'bc1p5lq299c4pm78pz6l8522nv02y94rvsuanr8txucekvp4pnmkmd2q4dqwm9', - 'bc1pu0vruztq3n9g2mdnaql0lr5uzgerz44xsq5dygzqs8c74450hwpqm6udhq', - 'bc1prcs28xynjj080dmyamqnntqj405545vghqkanhvdlcy9nr63n8vsch5unf', - 'bc1p47m0p389ja22rm3ejqwyryz8lzfsuzk9hcntqhr6axkmnj6q0y7sllfr70', - 'bc1psw3pn9v4mvl4a67t42wtecxuqqennkawj22rq95hndlweexs8zhslxqvl8', - 'bc1ptnmkmp4yf2vxdecf5jv254usm0egp6ajz5thnzpc2vrmc8gwxgkswmr7mt', - 'bc1p4uhna3u0mef07j43jj6alnzh7dw8slx6guswlq45c393fh6xweuq2ggjqg', - 'bc1p5txr55rsnx2cdunxr8wdawqrg2g4z6p32nm5kglf8j6jumwgazxs5j2vv2', - 'bc1pnvsnnfp8vcc023wv8w4zw5jefp3mpsud79ydrssmy74c4a30ttqqaqjr33', - 'bc1pq6x8ylspfvfldcgus7897xs6vemvzrg2cn625acjjftp79swgqeqdta2ds', - 'bc1pjz54ga4gjhfrjasyyfh9f8vfjcyuku3p8j4qwphjrn9q32f6wduqn8xqss', - 'bc1pgr9h7p3ckd5y8fjm7gnmhhr30ju7y0m7xwhmqu8xxqwzwe6eleks2zxyqf', - 'bc1p4hnhzq5zkqwssqn0d5tpgrs8dy3s3uv3atd0f0r64wuy2y6tpjnsxn7r0t', - 'bc1pqqh3lnphnqvchr356z8eafu89vjwc7zlrfevyhnhzrqcymjekarqnv6mwt', - 'bc1p2742d6vcjngyxhkaz7ukgknu9s2x33jprzl52cnyvpnnge7z383qgp4u28', - 'bc1p4ql4xe6lpz0pe77834ph0sw89e79cyk2ev3dp2gtrdqnd6p8v7mqn33nut', - 'bc1pnpvpqy5tg0azxclaar98vcf652zgg6hwgf8xessfk9ra64uamuhq0s8sc5', - 'bc1pd4zjn077c44e43pfmz5ez7tx7fyx0v0kxgcv8xqrf8l4t05umctq924z8z', - 'bc1p49ffqe3j4f5jqc3avwnqp8uy45mszvfjg4vcsxclgrmnjnlug0zqh60xfj', - 'bc1puldv6dfe009avgtv2h5zmfws0lu428w9tg0957lv2snp6wxc3u2qkmf08h', - 'bc1p2jhjjnyudnjqdu2fe0tpwyrn6pvw8gn5ezq9gs8c45e93cfewc8q0q00xm', - 'bc1ppjn0jdfpr2g29qc4vu2z69c2vzjr40wnxsp8r60gp5eksnh88pusu0ujtv', - 'bc1p609jddxkn0gj4gdt73xwtulpw8r0nvde3pydlqwyf8fmcp094zxqh8ffa6', - 'bc1pmm8n3gzpz0hayc8l0fyezzltejfhtmtc5sr7a2uqd8t2f8q358jqvuvt3r', - 'bc1ppfyyu427xp2h3xxm4t7z2tqa6rg3fmndnqes6k05vnxmju5n4tps05venj', - 'bc1p6d7zy9f8prmfu04q48d37eeysn30uvl8c6zr9t569uczmd4d4a0spkmuy2', - 'bc1pppydj4zwc4h7unzeagkmr4hypzvp6tfrqs0sf69rk4jn73vwphtq8fa09g', - 'bc1psjysdan7ezddfqaaevv2y4k7w2jl2e2g2dh0ggqxm88sztxh6cpshj3mm3', - 'bc1pxzqmwn7jnrrwlp47mx7e447cxdanl5srcpwydnsvxr67ctvkpklqm7fvpx', - 'bc1pweldke3gcymlun3m7n39e258cpwz8vqthln4md77udvreaz8vzeq4t95xs', - 'bc1p89hu8yxsnuut49wltn06dz3u23d9vsze70dk52erufkzep5au7dqfq90g7', - 'bc1plsg6zz50fz3gs8h0tz5e0cw28qms278xfgwvsay747y5wp2826ts9mxv5p', - 'bc1p46fg0gmv50rsa8vd5jwfyu4274hnj5g96futyqdlu8uf57fd2udqr6plne', - 'bc1pvyejsj64jsyqsn8qrnlrt57cvrtrxv5cg3ha8pavau5kg8hz7gyskm47ax', - 'bc1pr374kkjfmewfhgq20n52qs44t2pdd78anpxdd4m7ydzrn2lxmq6qk8z5rs', - 'bc1pzxkpv09nz2vmlu95d939vfk0uwu34vyda6n5l5qgdcyvud7txcusk9rn0r', - 'bc1pdpxkerlrkdrz70f4mrtlemqtc4w9ww6q7msugaxq4vuez384js2q564vxu', - 'bc1pqlpxyhr2l4s5c32k0dzemfyq5yr8zgh88lrc68a94z3mvuwpfp0q6zepze', - 'bc1pk3venhqklz4n3d6k4958gl6eeug3lq33yjyvpvlwk7ceqewq320s6s5rff', - 'bc1pch9vdt2fp0qe0x5eg7edknjaarg4gymn0hvmy03zujax7stqm9lqwd36u5', - 'bc1p9zje7fy2ny88ewujscvgqtyz3yw288g7ula4jf2pp4896eacemdquqq7rw', - 'bc1pj24uwacvm28pf38rkcg3fjqvq7fu6zrv5zsk7qmducvl3zl9m2ussgt4ut', - 'bc1p4khrgn2lewmpwzdrte8ap4wxa3zwhvhlz2uarshesn0y6d22a7xq70y2sm', - 'bc1p25j6nry73s2hxyf7jwckaanmj0nknnm87au2zgp5xhs6cn7fqgrqxcj4lj', - 'bc1pxxdgfhu90l303gm4ndkjp3td9j66g3qykdzseh87zwck8pnm7hfqaygwsl', - 'bc1phytkzl289v8045m8zknj6c4cqlptnyxxps7mheyjm0ses5y5vtsqg90zzr', - 'bc1p5ah4fv30rv5z0g7u6c00dky07hll3m487hqfkc6vehqrzd7grjeqtjs5n3', - 'bc1p5llygh7h4ax0rm80v5cm8dcsqygsmv2c5xvxux37mtcek9ljk8vqxxxyru', - 'bc1p9nlwjkky68dtjsz7krjujk7pwkpm539zs08kd5979hktjw7cl06sjkh76m', - 'bc1pd4tz0e5sn9s6chpf82z97f68e2q73l753zmk99p83aktmvmh3c8sc5qjhx', - 'bc1p3m3nl20u0vsj2ylxllxv3kjxg4kyhrpn5d83fv529k97qlkr48sqj3t2yn', - 'bc1pt7tsgv8lh9cvpsefsdgmjjx57sjg0qj5ae38txqu9p4kae7p85ds4glr0z', - 'bc1ppw8cf33p3l7sf9yufue4tesax439ukv93rn08ejj0h4gu5zlz3zqs7u5x2', - 'bc1psgpl0rm70jzdcy7zgmy97cyf625ga9g2lafjgkzkxyqf7edg4d6su3ypr0', - 'bc1ppyk94e968tf23k970ar8jp7xdlxmfptl6jg4e75sps09xhq644mq6rl0uw', - 'bc1pzvmnwjsj3yekhh3ay2423j95dt9lnmqfud4l9y8pygr0udc77hjqg66fgm', - 'bc1p7fctjtjnns7lxzve9vrdxq8sv3t784cz07j8nuklpad57vk6vl3qvvz46e', - 'bc1p34ys2mulhwen2ftw37rxg8vk50lnq8sj6fkeqnjgrgkkrhh3h0ks6e7h7h', - 'bc1pcc389qjz5qrqqaxdexphmmfv8r7uu3yu5wgu75ce758np7f8x8fqnzz3ws', - 'bc1pg5c5qcsm5w28xu7xl7j8d2qcufs0jwx667y56y3hth8284nd2grquy5lj9', - 'bc1pvhrwvfazwxxczczear5gvkfxz66qjg4s3v3s008q8akxxhjz4qhqj7w6q0', - 'bc1pc53llf3d2x35jxcjgaj07nwzllrykk7j3we9xxqp8dg2afkwez9q2w75m6', - 'bc1p5llv0663xv4c27qcusumvuzu0dpxh6a3n7lrsz9l3w5tgahrd0ds7l4ec9', - 'bc1pu7rcwyhkn2tpu5rmsg8hqvtm4qjdnu5pjc6rtjs57g62pm70gvkqjz2ev2', - 'bc1p4z4ktct2ascyu6lcpaehqurjj6lfa28h3tt6qf270uzwa52n5t2qrd7xju', - 'bc1p7znnw2xg8udpu5zpdlaztq86z3qtkpyaawcaml3vlngs9mvaf3hqmf95gw', - 'bc1pf4l0e0w5m68ty2a7cwhxjtzk7ylczwtutdkhga0yt7wpwz4psp7qg5f4mp', - 'bc1pcwun6ay5qvd0snq07jx35ectrd8he4vdsmurrckq5qhujx0079fsverkcc', - 'bc1p27rn3sxhzmlagzeghu70978lvklhv3mfs6tj63s7tqurzhunyx6q24qsls', - 'bc1pfhq464klk55dwsd4cx0re2eeuanqdyle6vvvs2pjk9efvyz508ns8evcu0', - 'bc1pgzj63axq0r23r5ncmmmxxumqwnz03sewfp0t6w5qhguwfznmfa8s0rtyve', - 'bc1prshpg4n0lk5n4a0wt8z2r7g7pv687uhtwmekxta0v3ch0hmlxdhsg4cpru', - 'bc1pma9zyn8uxqfprfk363hhw9tk757hu3rt2e0v3dd4mu4sr3slvf8q67mlpg', - 'bc1pksl5yjcw2hv756crmszmcuen89n8y25k8dthc8lqmvqnu7zruaqslp29ym', - 'bc1p7faj7hnzkwwd7nyee38r274h6uh2gsl6na0rw2zq8gdg7sgxsa2q3fu3lv', - 'bc1p0gwqh6gxjwncp5qjel0dfgduhjkml68xn398nwkcpde04s9r2jdqxyx92u', - 'bc1p9ycpumjnj6tg6gd046agx5wm6ljx4yp0pjpvvdp0t5r9gpwwn2psq69nzn', - 'bc1p4g40vgtnf6upydxyp2z3ps0v2s78dtysrw2fgwmlvkxpg5nkxmtsjepau0', - 'bc1p6yrms3fw5fl8y5gu793vrleav9cg05mjlxz5x43pqw2aey62zecqxx3jrj', - 'bc1pn0jc24la557zuc3xywvd47pw5ulj3q58l6asvtgnel67chl7452qsg03gg', - 'bc1pcqe8lfx2qz657dnjzr70jx5tgy242htehagazmknulfclk9ur78qc0f4c9', - 'bc1pmj6l5cvjd2r2wsql4jrc4rex4nmlmu42mxzwzan5lj6njyywmkpq23slvd', - 'bc1p4wfrf99w2xpq9hwnwzlsr0qqf03phr836wxpgau69h6u7r8c962qpfm9xr', - 'bc1puz9pqxcn7tmau5gapx4gwvzfkl5kanj0gd2udvpz259upxg9cfjq8pjgyw', - 'bc1pjy78zsff53d3z03tygn0v3e5ef5utdc0y6y09cuw7n0s7ea3839q990yhg', - 'bc1pjn0zy4cndmxnnj435gj5y2vft05u48dwv2l5s9l829guun60m9rqk6ea24', - 'bc1phddy4hjphxnpxrj9rn8hn9p8v2ple42x7mmwxy0ag820c6q8v3gqddrg60', - 'bc1pwal0l3cvmtj8xrc5ntzhyyf9rwxnlhus7d3j7wp3ryaesd986jtqqa4hgp', - 'bc1pv3a5drhse6zcnmhwmrlwxl2uzekradwu8eetcn8xp8jnkwh73e2s0p89u7', - 'bc1pfcd7as4f0ldj5lv287cpr0hg5yg2q57ccwell35n2de72tnrvtdq8m620m', - 'bc1p6s9ewc2alshmq9s7h6tuvvcvrewxuddx7f22uxxu7k4sewsyj64s6s4ks4', - 'bc1p4j8r6q4xl05u3daplrtndqrstdha9hd2gukzwytry5hu9pgzultq9c4sn9', - 'bc1p3cw2qpyetqad50uwx49lktsr0nut8van7vtyg0587dfa4ez4qf4s3z8cqq', - 'bc1pz4uvma2kg2tghafdp07c9vupn8cpj4mwu6zw89r4vscd59td3mtq0ldwj8', - 'bc1p3hmw2pl08s5ssz0rv4qusvj69uz3znfrfp4acz3ww0vwek27t5ns7dx8g7', - 'bc1pdej6gyesjz0n4xexgz0w9w2r73dqr4rpdxa4fjmfw2984rhnn4xq4vrc6p', - 'bc1plsz4p5cy4yrfy5q3g5vzcuqxsparpvc98evnxmzcqvkj9p7fygys0yhda3', - 'bc1p25tpzctvazx3n0exwh2h6z8tvtrerapxk0kj38jemsr3wjjq0h9q5aq22s', - 'bc1pszald0cjkd7paevl2m0fyy43ktcscnmzawlzzf39fvttvml2xdkqgc6t7s', - 'bc1px2tptt6qa336a2ufxjwy344dnp09l5wp64h22ufsk8h49rvgrtystaxypl', - 'bc1p0ndheztg3ha40w32zukzxtj9ma6uwaykya5v4ukt4suclf0e674q7f82jt', - 'bc1pq6e9tch4xdqflgfhk5zgfz94xzm4mzddp9w9q8leqtvy9vasa7esdyx4yh', - 'bc1pe8t5w4l0p8v9t3hgvk6xj7j0haslq3h3s83mqxyslpygj07t3qxswxr37n', - 'bc1pm7x48ftez2ueg79y505fgy9vqjcxglfghqdpzkn9pe8qkdcr8qaqu9u9fx', - 'bc1pj4s6t56hzrdc0qnz99u3nwuttwwawc9xj78gw4cm6hwzuedgznuqsxtqg3', - 'bc1pdpelj2gehxxmrxqzf980wmwgfffnthw3muvsccpk8ms0en5r274s75agpu', - 'bc1pup46xavg8egvzqecnfkgn6dpxu74jhs6p8mjpkjc0n7t6hlq0hnsrk5hd4', - 'bc1p2nj5qavzru6uta705k37axrghswp42f7kdqhre8nmuuywfdkx85qtwxcuq', - 'bc1pk9ry75u0d99qwhs4ynul30xfmkfgwzq2cddxn5k2qek8uqm02h0sev22mt', - 'bc1pfl08ethnczmxpq0kajpm5ew39smvmna2xsdg3yfuuk77ld4ajcjqrcl3lg', - 'bc1pyq5zp5589e3ttemrpg6q7uf8tcpwuara2pfqgem3j47xtju0mycsmgd6jk', - 'bc1p8tjgq4mh5rh590lxccaxka8l5cr8qnmwwxqqw2fj0t8l0laradkqwzgy6a', - 'bc1pjs84jrng8hn9c4dgtqllurckfg2uku0uuagnttxmw26cv5kll5lq096z8r', - 'bc1pccwade3985pxrr3meykvd9mtx04dlzxedlkzwh8y8ew5q66klvrqg5mnhk', - 'bc1p0j6v6wkkdlldte8nxutndqqnyhmhszd2ljv9qtu950x3pktafk5sg95qgm', - 'bc1p4rwfd4sre5h4s9sz68w8qada7evthd3lkxlz0ae5t58kal22qpwsmy6swq', - 'bc1pcmylug7a54hg2stuy4xcjty6n6g6cetvml9m6v34u7axj28j09hqdzkj5v', - 'bc1pz52wmvmxssy4u5mpfufw4ap7kaac5m9upnenmzjx9mjqff2xy23q3qmf30', - 'bc1pqa7mta6levrdpfpp08qss068g8pwhd7fgfqj5j5zfgs29xkdkvkq69zdfg', - 'bc1pfakttu3pefht0n3va685l3xyl2vg6hxvzzgzmxj8ggrg3hsft9uqxvzml3', - 'bc1pquj0w88vjcgcuyrxclx07jmazrx8kthpjxfxrypc0wv6emakt5eqcf6ytm', - 'bc1p2pf4fmk7ygealkde4npfedc8cm4g2rnhvem0zc4zlrlvxfcjxjdsyj2kgv', - 'bc1phz7k8mfzvrhl2cqzvcnedpn39e4hjlu36g54srxhlza9sh3c93nsgra9g4', - 'bc1puujcaaumksz0zdrgaxahnytfep922kgsl40wj3g4sg7tf7rxv8nq5ay8zm', - 'bc1pzvckzplq68dz0u0v97esxc063640dq8fah42v4hd3wq39ychfpwsv7use7', - 'bc1pfx3938sdvkylz5rjgemvae4jfy2lvtdfnemgfevedp2vtk0q0npqp28efv', - 'bc1ppkryqg6kq73atsnz2pnzungfyr6ayhhfkjgd6fgcnnfv7hqpve9stwsat3', - 'bc1pyq8fxfh5zxgm9dmsekyxgm7mezerrf4rg9mhzjl2vena4dystq5spzy5lj', - 'bc1pcsq4gc5dxmcwarjavj4r8ncnehm5xgkyrtnjupeueauhj6wykrgqj04yq0', - 'bc1p9j64vgmzs75y9tm07mvevwaeves8eyzycpwyfz5txjnw5p7fr5astvvyye', - 'bc1p9u43avj6u0nf3vevy4c0drfve5c2w906dgz9x6w2wx7xak0j6n8ss0t2p0', - 'bc1p9r2sj8rtdykaq6n9m80d05qrw4xpm3d4etckk2t7mjqrwtcslx4qdvhsy3', - 'bc1p27c3vaw302qhsyptk6gtl3m0vljauq4dnq38nhsphq8d3wygn27q6lmdgv', - 'bc1phvsnfqfz4dj5v45u75zxmdhqjchvw4rzk30hxpaamnrldduejdsqfckq79', - 'bc1p4xu93awrd76w5jj9aafu8kzfdx3mzfkags77l3v63yxcn0ne6x6sx8luhz', - 'bc1pkllkf4vzvcgs34d6cfj7fc3zankpeuvx8c02pstccawem3jvv9xse5x3k4', - 'bc1p9n7ffh8637fvtxczf9lyjqylnj6gahchs337zlh5pm7m5h737assneeecu', - 'bc1pnjzrmygvu5px75qdlfxcfh0zkwuza5c0uptwulwjqh2lrgyw2z7snynxrt', - 'bc1paj5g066zfq4rsvzfwqazex95cq2svy49tpnlt95ex0yw5el25pyqkq6wkl', - 'bc1plkkkq8yz5pwl984l46nz9vx03lyvrudwpxheu5c0dt22ktxqsdxs3jww3u', - 'bc1pr63f8msjp5vc3q3dr7ehpxeykg0fq323v08jtvz83c6vsthc520qf559rh', - 'bc1pmzervjhxxkk485j53gq0zrx9gxzjgts5s0cgh2rdm2ulf0a837nqek8hgm', - 'bc1p6reaf4thx3exatmjazqg8e3rr9ren4kgs9nzg4y54pnfvmmp7luscr05f8', - 'bc1pxsa097ef7j4l09a0v7xeepfy4a98n7anh3d6clgy873qz2dvt5msqhyxpz', - 'bc1pg6jn5q4nccdex9nuhmshaqm7rglh7hf8wfcewjunt8tn9zplcx5qu3tqjs', - 'bc1pzatedgjr9mc99wyqd6vl7dvl2r02pjtvhyf0e3fc3mg80q9wqpaqgeseks', - 'bc1pccpkwdyyg9rmzmrkdvk64eh0ua6huw5mlytvjuh98p4r6mnttxzqd6uujn', - 'bc1pa3yec965gsu2pmka2m46zh4sq2mmszzq75z0ypfp92zzusmg5s5qar5k7s', - 'bc1peucveyzk2anseau5epg9hj5rd03t46fkrh5eeyqd4xh3s7kxsydqy5xjqc', - 'bc1p8z8swv0ugyy45kpyr37l9qkzsmkm4llseuqfna9ze880tuzrduzsuvgnaa', - 'bc1phpdwae7rx6tdd8wjjr0enf4yyxc7yjxehm4ujt0g8urckhekddmq3amkps', - 'bc1plhkvppd35r0dk5fkzgd5gct89hp9xd6p8edy7ahf5gnaxy49uj6s2xh5w6', - 'bc1pcu389kpd6zh4v0p52k8p66hh5kac5h23deye7d0lu27rdwwn96kq6gple7', - 'bc1pksf5aunqvuuxrh2cdzypv84xqwd5fc6jwplwlp57tdwumveezz3qzfjzyw', - 'bc1pm79htsspqwg5pkfr4cj0gfkt50qlzk303dzt2ghs7chndey6n60srvtxge', - 'bc1pr4zfxf00tnwukfas7fvdv8llhzlxjyueyhmg2tq2wnhw9qeqm8wqlw65nu', - 'bc1ppx89g77xgqy27f3wkkjyeuw76l54uz4nchnucnsg4r4ak2ytmwgqp8x80e', - 'bc1p93vpfq3kfqzcxk0pwcazgk8032x6c9nw699a3m2wtf88pcvyegnsyctqum', - 'bc1pmqkwjgu3nkqwyeccuclymyyn7ghvud29yjrc554p2g8sw0h5v8kstadu6c', - 'bc1p5uu8re8dr7fy4ntks6em05g2z3ct9g2ay0ccpc5sqquqw6ntzknqsnh9kg', - 'bc1p9qyurwnnmnzxc9swyszl3m4sr272mmfewygq2yae3vxtll3f4k0srjk7ml', - 'bc1p6rjsngceewz96eyn5larww99p52yt7zj9uwym7yz83ljgfrzc4jsuyffn5', - 'bc1pftcm3eqcs0y2z92tn9fnltydkpm22l02cnlhqt9hf9eudurlyf0qukxyxq', - 'bc1pnqn3l40cj659035vgnygvutv04zu6qp8sq50wttgrf3xfum3jwps6fxl7a', - 'bc1pgcat9q6c8z7g4pa3xslsys7pd0vr0hfdtgspujd9e9u5mnur9trstz8qhj', - 'bc1pvcwqr2q077hj8yck3uxjdmysmnpspksjgyw9uky9jr7w2lkzau0skyu6fp', - 'bc1pazpsg5dyycuh9w30pnkpp5j0l4kcxz926nujwt3j7a5trj97u4nqyk2tvp', - 'bc1pe6vjzxpsw6jha0c25medf8zpy2z03xqruele6835nkypgheup5as5u4dzx', - 'bc1ptjp8t699t6tqhtsk25a4vfvm8un9z7frg4a5ex9esgsy0p68q8vsjl3f5d', - 'bc1p09eecy0j6l6yaq0frgdjukhtqr4jkgs6nru4kuk93ndsry9pvkzqz4neck', - 'bc1p0m37e6t7w50wegq4tve6d2v6sj0va027fapqrnacdm3v8n4f467sefsxdz', - 'bc1pzn75wqyp6hn02pnq3e8v8dc2nvywzrmcjcrapwwgvymv27alzg9s0g83t3', - 'bc1pxyxc9t8cz3qf345eu5sdze2revwgu735rqwwh8af36hus5r605pqnyck69', - 'bc1pns9zxqhuklscqfzg66yjw246uhk74nmlqv0mmlakc2lefx7mlf4qn40zlp', - 'bc1p08d40glrlh629rqvwp9wd5t5dzr9evm3847zcnswz9alry9gxlcsuefsls', - 'bc1p96g6jvlkuvjcpc0rgsppj36q7ul9nyqt30sng334ey0jrl22uatqcn6w2w', - 'bc1p9ruwtdk4aveuqlnynth2tdasl9ha3gmed23k3uj4ydygfjlzmy9shavjqp', - 'bc1pelarnmq5u3k3v8u923eqpd0zgn39eekunmurhcrzwehd2a8uhllq6x76xa', - 'bc1ps40qs8gq7lpqgq3t56u32n06dwxchvqdzh99ydx882ccp0uq63gsr9cvy7', - 'bc1p5dt86z4zeut9u8nh9p43vlzgawylw8mnq7fvyrpvg0fqhj4hg4jqmywfrd', - 'bc1pxpk0rsxruj6rk5lpefa5zh7w5ec9e06gh9nge63m264ll0t6tt6sg775f6', - 'bc1pjknyuhf8xj36squ9lgxpqam3s9qgh0krasrrht7v7hdfnvqgvrlq9avaj7', - 'bc1p9w0cyveev8dlmjrjune95nkytwemjc8xxhv6xtvyuv59kzxnacusgep6zc', - 'bc1p6up5u3kvzksnxfes8u0ux35uzr6d4r738lkxmwwpzdvha9ltzyns96mde0', - 'bc1pnr54myjm7pup4lrtudhajempz3c9t3r0v6s0688d3799t5lt6u6su34aan', - 'bc1p0x05x3r0gx7353fwng7mehdmsn2cvq4d82kvw2yrzu9fscnehers20vmsq', - 'bc1p7el2e9akt63c7z5h8x44skppwhdc04ld47cyp6g4sj57z4e52tpq7pg0yl', - 'bc1pvuw7htlmg4emee4y3wkv32sqgprlcajlm7rk96rkqkawssxl3mkqzjyh9j', - 'bc1pnaky3xt6jteuh0q0ew46mdx20xudppcvknh5exgekyyplr72regsnjgew4', - 'bc1p5h23xyn7e90ya2uvtmqpmw3mrcahz0ktl3w57shn3kute7dj534q5xjr0k', - 'bc1p7vgzqvvpnjyhcxt8a89zlpz2nxqzuq25r4dk5je889zyesxuwqlqj399a3', - 'bc1pfcd4yypvh3x6hgmdajmzwxyvydeljky4ueua84dxlcr5uvgc53esagfmyw', - 'bc1p2fyvyvxvgn9uulhnyaczuyhtwglsvhcsw7rsvptz7enzywwjvdsq6qlzzy', - 'bc1pwh40gsptwu590j0al23hwa68y4ptqkmraje00m4el7ngfkgv8wgs09d4xx', - 'bc1p2cldshhxnj0fkwr7rz7tjqyn7rupz8nafwwljrfaam8n8y9tzuas473l2w', - 'bc1pz836d8x4qxs527nfle8rs2yvwme3xw6g72m2wakwegcz7nkceqwqtn8ckp', - 'bc1pdmkvzjcd9k9zxppsyrtpy0hklxfc3cd2wdqfheu7kj749gyhalyszp6t8x', - 'bc1p26l9n68f9za4fzxq0vsy5tz2l3rxvkenpagefd9p6045aykwnrfsfawpd9', - 'bc1pa806c2ewelpyh3er0kln35yty40k6f5lv3qmnlykr9d6js8e5mds3nehg5', - 'bc1p8eg9uc5gupjgp9f8xz5fls6920f74s4qqew9yusyrmesnq76t9equkh95q', - 'bc1plzqu6wf2fr9x8f40jxp2rv7092daew2r707wclxx6y6gxf5v5yqq4ksvkq', - 'bc1pgpr8jqal9avulr5crs7s43h9sruh3r6fmfkjm752v9mnwnxw66gs5fev89', - 'bc1psp5murlkxghvr3vqvvz9nlrve7j35smqrywm5yfj6uunxwxuyy7q6jzyjj', - 'bc1pu43kmh7dchftyak7kxkpe3y6y2l0y7334vapjgvh464yhsmcn3wqma5qyu', - 'bc1phrr75wn2f8f3pm250ufu8f4ma28e5k7tfakqqmt36ymnkx3vgh0sxvlx9q', - 'bc1p4ua3pss96fhdwvthv7hu9j65v90frcmcpss8vecdmwmarn30z5qsawufz9', - 'bc1pjcfhcmn7swgunhgvsypz2wlxalsczcvwtsqn5skmnttf2rg7gd0qsdys2m', - 'bc1p5n2q32gytmaatv0w2m2kns6esmmt4v0ekwxmqyuskl6fjg06l2xq0900eh', - 'bc1pxmcwy8fdwutu9s9z0qhdsa6gua8978yxe05k53w90e2c5ga4n2cs853xye', - 'bc1pf3dnz3zf8m00ec4c2ywkv79jahuxmygjhmgnzl5rak6u7nmw8lwqcfn9x7', - 'bc1pja0z4nedz5f7ap0tayx0j9d08lexu78tmv8t0qcgreqdgqw2pnds93uhhd', - 'bc1p4ew7dshmlcsc0fyr02s7v2netwec9lmsjrn4jha6hjfyjssh7xlqjlcmmg', - 'bc1px3q3kehg7mstq73ynv3fnugxn9k8sxwhz3y7re5jjslh07yf4dpsq7gwmf', - 'bc1p74q6de4agh7u4kgdcf8f2j20k9gn5j0z25sazygk6mk85v4yjffqywx0rl', - 'bc1pmzeaersnk7xr4n8hzdnnzklwzc884yus9sanntjmkhng5sqf24fs74gsst', - 'bc1p32xsn2zgs38w0h2jytzuz92v7g3sdd3yyw48yzp9y0hgxenme44snja7jh', - 'bc1prr6jerhav33unyydnl6rm5glh0xtdmnvh2ljn77wq5a2l6vsldls9u5mmq', - 'bc1pny3fdjmh8xs5gwcsy94ymr7a7lmn0zhe3cheuunanan0vhejh3csa4wn5h', - 'bc1pgpqlfmugn84khdt5qjlcrq3g4dm7k2kjvjnva5k9umejza7tfhpsmt7rf6', - 'bc1pg4j7x5uddfnjjjdh28wpk8wwjfdpfyers4vnfw48je9n8lzl9amq85n0cd', - 'bc1pnpwnqf5qfkw45ef7e9w7g3eprucmq86z8eunte9syxn4g339w9ksctan42', - 'bc1pl02lj3angsh9t9x9jyp5924kq0qnm5xknxeqjkge9h4u6du5w8kqkwpgyx', - 'bc1prsn4qs623gksy2wjs2lx9y8yu3ljlrfr6zhulg4de8fn9w7tj92sq8dnny', - 'bc1p8m8yps35tav9xe27kkgyl9a8cy0js66u94cykegmzq32tfunpscqyuvf5t', - 'bc1p537seqlcpyptknwrdajt7ghlr38k2lhkptugyx35skfvfzaqgk6sxa6j8x', - 'bc1pj078hf3ahntahfswr86ran8p0mpnvj2s4j9lcveytk9pwgjaztcqxz8q5t', - 'bc1p3yadm23zyskf64q7my8pen654teta8fk48xn2xpmtt7w4dr0sdeq548jm5', - 'bc1pkwl0yp67qyj226z93825gfekl8gnz7x2jglq5vpeym0ph2qjlexqdtcqye', - 'bc1pgmtdvweekd5xlzj6n9y3rvgrjspj6s4p2ha46ds0gw9jmzky3ajqthup5n', - 'bc1pdz2n509kpf0d7nge909lfnj2rzhau9263m9sysatun9p7a7lrw4spuvn9p', - 'bc1p9ga2ex8znzq85fl3cx7p6en55de7ugc0pjh806psuw3ne6afqpfs6rg88p', - 'bc1pz62mm3xznzkrpcakn5nq9s8tk4dfhlzu20m932rp233wydrkmgjskzf65x', - 'bc1p4uudaw0jdt9gj8fa4eqvwu9wpmls8crpuc00u6c2ud7j49mt9ycqafyypd', - 'bc1pp076ln9yydjvr4pdvaf008jmsl44dmfp29g2czjen5dnyn0wr55ssqq9yf', - 'bc1pguk3yx3cx5fv6nul8s2mjc86sga5cn8se58kxrtzg3uqm0malensc6y4nq', - 'bc1p86puqm4nf59merxfg7rxndt5lt3tq37c3ec8t8xthtm3mr2wkecs8qun5d', - 'bc1p7j4przr20qj8hke9x42qkurpguz8erjsl6flgntaq3c7n9e2eppselp3ej', - 'bc1p8475au3wf6jl8skmjzfhv7df5q093p6nvfuy83kvcue6falvz3lsgcgfk8', - 'bc1p5ep9g6s9ju6qz6rky0zxnj5jm5layvf0nsrggj8amjgwzxrnnddqjjhaqa', - 'bc1pc63rwjmaxejlf39sls2gwafd0ef83x2rc65km0jcqpqsx2508d4qys9cyp', - 'bc1pyjc9ngmcve2t2ww4vq6ph7fl4hs9vl7xprp6qtursdrahpz0w4xst3j5at', - 'bc1pl5u2gl5vtx846v3z4f73q0afuymdue905lwdl2dnf5q0kf9f6z3ssluxt7', - 'bc1pmkdug7q8wqakgrwnsp55he268n6mddst38n77f0nkd7hpx86vjhshakcqr', - 'bc1pmny9vx2suwr4a4yxj7j0xm5quaxn9zr7y69945p9mnkdzvmfk7dq4tfuak', - 'bc1pmenp2760ha6nmxna76cjwer8cm8erkc9t609fj54hqx9cqa5flpqs78r94', - 'bc1p523rq06nttp9rrjcn2zrs9lyptrr2gm0ll0rpmmr4exysfn6j7vqpteyxg', - 'bc1pfej5ggyee5xu0x8pgwsqxlkn22aw9y8jvep3l2s0ju202snq7zksfv0xye', - 'bc1pffrjhgh4f3ssuwaajzrd75prscz49kl9702fvfl5yznz9tj2czysc9xfm3', - 'bc1plefcr87theqzzdhgdspc7rdcj0gwy7w544weewudwu92rhl7txhq52tsn2', - 'bc1pal3r95n6czwfdv7we7qyle0s43cds69hsmtvwcwg95hw6ux4ca0sdpx76y', - 'bc1psnmjhhmp0l4rvjt3yreaf293evq5ca2736ddmrl8r4efjyxc2d0q0sf9pw', - 'bc1pgp2snnt82y5kcuucskmu637skt88hcmwfuw7jukwurfzu00xfmzq7aduzl', - 'bc1plp5gxlklk664xdh9d3su69df6mtm4nkrq5xfydp9ka8w6z94c23qa6yg50', - 'bc1p34m0akh5lapch5v07mcr2szs6nkwp0u7l64pj44are9aqm7yqfqs9ynvgt', - 'bc1pgr0gpnp9kn3277qqx5f9psnl8sd0yufp04rzzv67nwdth9ncghes0x0mgj', - 'bc1pkr3x67094sarvwcy9l05shjczxskk45gq7eveurxpds3hqm08uqqawenjn', - 'bc1p0sas0ly6gulcxu6z0uznyllreqwsan635qvx4d6xdggdw34lc65q7tdzf3', - 'bc1pmy9mj0ghgqdal0qhy4z6m7wwp8varfz623j3wsf37kfzpvmsxussyr6n00', - 'bc1phmamzsjftuz7u5hv7vncfs3dcfgh8e8xd3lqss8yhum8g8m4rqyq52vcaq', - 'bc1pjtqughcwtcv6j0hg25gv34xk5pn40makmqlrr46yxaqrsl4lvceswj6ykc', - 'bc1pd7zpaxy4h6r8cchmwczdu5tq9pun09l8kmn45y5ys0r6hccmrcwqc8v4gf', - 'bc1ptkgv70vdn9uymn8qqv0e9s437lm6l0rq0fqj5t6ec6qn5tqutzfsz8uq7a', - 'bc1ppjrc8j72384pwjdm3fk8kdhmyd8vjgan0682vl2ua8k4yxj858gs7yjnnf', - 'bc1pl2jmyw864g7vv2anghtf4c7shrc5jq97e24f7emmjdj7ktq6q37qrzn0zu', - 'bc1pe0xyj63z7yvdgcsdmqt4urdfm2xey30mqk4mnjmxljyzc7yy7y0s9w7edt', - 'bc1ph7z335s94gs0ysvu2sw0e82h7aw2k0smase62c9376yv6resmhuqwq2vl7', - 'bc1pszt4lgddtdhrh057ahw6u6qr7t4q3xej5wnfp3zd248ju7gplkcsqqzxdv', - 'bc1p9jwh42vergz9nyjmxk440mct37ux76nz5434xvsjhh2ekjfgmjtqhly8h3', - 'bc1p3l6gzhh4mgxrqj4muqkgvk462v6zdewn38cck0ye4ckxuc5uf57sqzwq6q', - 'bc1p5xn70e9pc6kv8qky8tr6anjlkahvygc2e7ej90m2yu46smgdurkqlmfgg8', - 'bc1plgvnm5rq2au7dz4tuf8xw0d79x2h7859f9g9ek98du50cccn586ssye22p', - 'bc1pt7a7tnrj5cd7snjpw09rcks3clm88krunks9guh956t0trm43evqasql3n', - 'bc1p5auc0c4qhlshrsshasux2tujen0ajcs75lmk83nrnss74kv633tsg2y47q', - 'bc1pkqwps7m80g6fguph9jgmepk56nart05msajk4gul397c0vjqncpszgw9uv', - 'bc1pcw0hn5xy63nm54m4uzxxzsem458xfj0gx4s5vj5yrhdu3xhr0jhsw0ewcr', - 'bc1p7hxs7s02qlxdtcjdladk0c85yx8dez63jz8qdakk3z523gc6ushqhpv77z', - 'bc1pftffhkqzmfmf0zlauhm0ewxkxl2qwdfzf5tytvdxsuht7thn0yqqzuujkd', - 'bc1pynrvffj50g9tgs0vn2eyyts4gd8whycg55d6pvea0nwz87kf87zsf4puhu', - 'bc1p20jep92gr8mcptfc6nervyframrzshxrx5ye3t6llp6fdmdukfnq9zwuwn', - 'bc1pr09t5u25lr4aplwxvuucvy742x4e48egshq8eczx24vlh9aktrkqrzpz99', - 'bc1pakxha5a3va4rn79txschreud9qr9unwd5rd5xf3aejzn568llpeq00mep3', - 'bc1pwhkhs68k6q54d2vm4y9nrzm0pxmggjxre7p4kj7wm7acyudytyvqpye2d3', - 'bc1plexf7qqt6zzpdc2pex74cqpvrpjhgcqn7h6lp7d9f4y7cu0zql7qmfnd5e', - 'bc1pykfq8clmyau89y3mvt6lsm0rw42hydhk4fpwk3t2f9kmv0dsxfesqts67m', - 'bc1pxzlzq5pazg9wf5cwd4qm42ldv0pamzhjdlnkgchpxup0rm7f9ars6xzq96', - 'bc1p5tv5hdfd737lmtvglj6a5era9uukjsxterlv2ne6e4pktfqhw2vsjrw9xr', - 'bc1pv339ydahcrc5l4t805rhhwagg6pdep6zlgfe4z84kltp4ykux2nswxryk3', - 'bc1p6vgyvlqq300aclfjmx5p2kuvfgkznq8a603j9p7fu7ersarh4w6sdpqv83', - 'bc1pyvghuecx32ml9wpq9przj5y35kenjkn3khl3j5r33g03n8hx7r6q7r7t9g', - 'bc1pq4rr2pu5uux5098rdp7qpe2akyef85u3hchfaltr5epa6r0yemcqkrcxp6', - 'bc1pdcymtfpqfscerv787gkkksjcpsjj7977dzl9rsadvj7fxfwvvzrssxleje', - 'bc1p6uegtrdhdq8tdxe9rhekctmkm2l0gv5atrucdkd482m22r5nx8gq64jzwv', - 'bc1pysm0uhnk9sky4dmr0nk8d99tks0c5p3n6mex4dagvjuyl74l3k0s9sqvrd', - 'bc1pa0qrlxqshjgc6ytgycgwfdzkz0svy5tm744cwnc8q2whdtgcjjtsxzkqfy', - 'bc1p3zdj5r6gfq6l3nexxjnyylwtk3szntwcs99j7pedyvjp930ya7sqs0yjdz', - 'bc1pej7arsqqgc0ucggue2xlr2yqfv9re2eemctskqwqv93mz980gyws6m44kt', - 'bc1pqgexvgnln9g3jv9cdk5gfuwk94qx0cazx55fndzks0gjpd0hjctsuqc3al', - 'bc1p2yxq7kzue2nmlu92gezng4z32x6g5ka7k6trftj8a42zl9c64jgshkqm58', - 'bc1pkd9arump85yy9nyjng3lgm0272y8ne44z3j65v3k3r8pyzv37zmqp4apgk', - 'bc1ppw9czgjcmk3t38xezc4me90dq6e7yyf2gt00mnn5q4c5esv6l9csh563qn', - 'bc1p3fc28a90j6ayx0snpfwkc98447xdvqv6euv6rswt4dd22yxmx32s38yzk3', - 'bc1psen0kgkez4n0jpekukflet2yqmjm8gq5vqcdxdv69lm6szld8q0sz0a5t6', - 'bc1pnmwyse5x69ya6gkpj32wvcu3w4z2v9vqpl59cu9qa945j4ddhf5seemt8m', - 'bc1p50k8fpwxcz70w97fcxxr3hr7e6tlvmyw2alxu6vm7um2d6mnqzgq7cx8v3', - 'bc1p3fxcl9cf75n9c6rd3c6zgna8xwzsjq2zjvdx0v6xnt9rswqtyk7suqknvc', - 'bc1puaujxwps4w9jukr77v3ypswwq6cpgmnmdqfhks383av3v6kawglqsjukly', - 'bc1p5ls64xdx47r20ygvewucs05q003cttwuwj7t2uvauypf0aeny0fsu7kwum', - 'bc1paw036hyuzup8zkc4y8ts2s8ndlh6eyv5n8jjyl9394pr7vqlr6ssnw4l8k', - 'bc1peu0sxm2u2wqk6gx2ap96n4hfqlnpts4g84m7uae6ejsjgj24zhus6q3ws2', - 'bc1pjxmtvrys0gx8kaxxdju3fr75ueg48g7ugk5h4pjuy2ltf36enptsg83wkx', - 'bc1p2zk8d9f8wcyg7gr5yq6n2gyedryjny4d7y6pmv7zzl7zjex0kakswc8tnn', - 'bc1pf2p8pcmnv7ssekf0uvx55acuvs40kehly5430trmcufftw0jupgstya0e2', - 'bc1pdf6yyvz5w6zqesc8t5geenxra23mkv2xnd465wras9jt8ed5kz4syg3wp5', - 'bc1p2andmz4475q7yl2xdurnm33fkun8tdmepf60qgrl09rnzz9uttzqd634r8', - 'bc1pdg95fqjg7a66sj8tnppgpj8j9ukh0qqxd6fcf0apt9wwqwd5ws2sdxkry6', - 'bc1pg402ucm2cz2a0et4mkmxmkr3j75720zepdtpee4lqtdy55l5yn8scj3t70', - 'bc1pfyu87rcnnp95qmxz3l6f6grk40ut8ka7h9z5n3ummr4x6tcxxzlqralu4m', - 'bc1peruv2eealm9zn0ksxlx55e05nwxydw87rsg8xvf35sudrla03zhsmgssx7', - 'bc1pjelvgqecnarwe8m94kyssty9wg2kvdvwzqa9nmgwpz88gxnm5ucsd08vvy', - 'bc1pnhvhpev9cjdfff99aupnjwrvpxpxqznyxvrvjx2apsgpmqmmn2wqdfgn38', - 'bc1p6m56r8asvq33mh84dr4f7nxg20zmxz5dy76zulavtv60d45dppksszrx39', - 'bc1pedh6ntet5my440ullz4cd9cpxqd770urahcjy4dmp2396tmjlrss2df9gt', - 'bc1p7nxjhxwz42au8czxsjctuz0rersy5fqh4488k0rrale72ccgwcyqkpnvxj', - 'bc1pgn4jl6ckx07jcwp36pvg258ztedpkyh7msc9tt9vgswdep8rfqzqygdfnh', - 'bc1pwd2u606q4ft5ueh7gkzfrhxzffq37hspvj68rkjx6x8jngy6rfnqwjrlt4', - 'bc1p6x895u4l5pjdvasvr3afv9zv3gp6ky4t79gdjsv2j0587wavf9xsvw744t', - 'bc1pp4dwfps0squ4dr4srj4t0938rllfsefnjctun8aky5xvpctn9hxqre6jhx', - 'bc1puy9jknghzw4d96hux8kxun27ch94fjn23zdqlgkwx6c803ydsvhqka8mmg', - 'bc1pd059ap923050am3xhau8tg496qnu92wd0kqqd9uazkst0jfy83nsjj8jkc', - 'bc1pe85nk65mpylrqshfqe95d2pvxgp7na0xu6vemf0j2360uu2ea2sqlvdc2f', - 'bc1p3yggawdq8zc3mfqylhq2zjw4sxf9lnncmdpw9x203kjzet0ujqlsvwdr8h', - 'bc1pgzkf3c4347esf5efh88r43htdksqyp6txu2uh4s2pjlrptnywkmsh4zapx', - 'bc1pycz25aklxpysyp0y5nysze322h4a6sz6xp0nlnchh0kffkmtyhaselugw4', - 'bc1puv874pw4dj8zhrcemhqmf4n5c7uyp4rnpgv24l57yl3x3spdrd7sr69w8d', - 'bc1prju0dgjr6xnlj0wzp2r6tdv0u83m2q0e6s4kaxf5jyl2jzx47ddskjy5ey', - 'bc1p6vmqe86enggjam383339g2crqfd9gfjeysd4f2tchugt7d7y6dxsaww8mm', - 'bc1pwxsnwklg6eecmnzygdla5r3uhan9dqa683h6uasfgl98a47h03cqqpjsc6', - 'bc1p0knup6t8nkjajhn03sfyh0v2fj3e8u34t7kvxh294cs0nt20ky0qh7ar9x', - 'bc1pjzrh5apj0xwpdpvxh4neyfhr6myddw4m9xu9kvjh72rdyrnez2ds2vyed5', - 'bc1pa8vvjr54ah70scu98v6f89fce6y2gupkrca0hzlscsqgvgxyl49s8nj9sq', - 'bc1phttpm7ww0cw8f8l604r5dqkczt32et07j4fydxq63xrjjs4tf9tqvjl67h', - 'bc1pytfzru0pd567lvdcvg2nxekp8wdl97wjmwc8ql4e7akvfzlmg4js2jnha0', - 'bc1p23xhj86jarvkwzw8em8h4xhc65v6sy0rkmc4xs0gugr5gvggt6jqteye98', - 'bc1p33xu5xld4sj44q5snc9ngpe6tc54ckz6tyz97zd66ghee29shl3q97apcm', - 'bc1puxnck2gxx0ty9qxkwmfnu299assvu7k9720ndngxkfagqqvg9x2sl3rf8n', - 'bc1ph8f5d7tnskx0et8evhxeehxj82u5wd06qmfzfmsxgfdlefuh64ysh4axyz', - 'bc1p6l95u0ufnqfrnkf3288hxy8h5rzx098l50e8le759qv40997q4wqev6sqv', - 'bc1prygcq7u72pvgzm4d3n9srx33j43dnrwgyp674vux0e8jwjsf0egsumkkwk', - 'bc1purxfjs9rmgwgdgs8emz96ez4k88z8tresrd26z3xh0keuvuc5h2sgf6hv8', - 'bc1p3tf3yfg8cdvwmtaqk62qhey23jjpzjyzz6vggpn2w2cndg8k3w6q6u8nwl', - 'bc1pv9rjswk3w0qg8fn9e0phzfufsxchmyvqdy5e73ux2tjc4plnwhyq24xm8k', - 'bc1p6u97m5ve5deglchq4jpnwym7s70whw9e6lpraw8nygw4lkzuz8asj7h8qj', - 'bc1p07z0jt9m6epy2udmnmqrsagpjpw8z8qr4azz7dnl5sem6pfyez3qe8m0md', - 'bc1pttyq3ccv4w959ll29jk2gk8p9vmkss9wj3fmjd2mlt622sl2ljkqc8agpj', - 'bc1pq34x8ahnmqc8satp6gg8k3vg7zg4w8qgjyqteq7mltmfmq0f85dquv7m79', - 'bc1pdhnthm5e2npuplaw9aa2hqj8jj43davu7hysndk04vntaehmf4kqe748ck', - 'bc1prw2p3ju7vmytq55fkz3rtn5tqe5pe6t9tjrert8r4c2wgudfzl4qdd3yn8', - 'bc1pxrkfxv8nuvglznn9cvkfhpl8fdgxdnv8nwhdvdmhut4t6ucr4gzs0hfyzs', - 'bc1pw2f2pwckcwm09ahzu89lrfqpc5jmnuqpdyyq4c90arz475dsrrjskfx03y', - 'bc1phha7w579mufl8l88yfj6fpk7pdwnn0lh927qqhknlf4297m0s0yqutnh8g', - 'bc1pz028qrsk2apzzap3k0uehw22c3tq5v23zlxetwfpevrnmuwmmglq6t77xg', - 'bc1ppvfknf46ac5apg2uepaulhdkhj74y6fa2jnj8sstz0sg8shxtvxqgwdm48', - 'bc1p0zm6nngc7gfek3ypaey8m6fenf2aqsy7ekjq9et9h5cs7k48dwdsuzgdg0', - 'bc1pf4vrrs7zjygkxa8fz4x97f4wvj3t0kvf36z8ylva5qpmdf3cfv9qexaydh', - 'bc1pj5fck0vyzgrw3j3cnku0qzdps7ncs89dzu5dnanc4p90fzqqc05s04rads', - 'bc1pyh2plmezjzhflc638wqafe9kdte50w3tv66rc0866gxuef7dq5aq4s87c2', - 'bc1peh7shwz6y2fsy832s7ffx9fynlz0yagc7n506lnms32yqc7ekwasfdua6a', - 'bc1p74kn857hxzw8pfssza8zsmtt74w7j5pmhfgqnz8lh47fky3wlx4sk3qk0v', - 'bc1phpda0xr02h87xzmyacm5vh6jxvnrpc3qphjpecgenrvwy7elnxvsqsa9nj', - 'bc1py2m7xrkw4rtqrajf4p9nmvcmp8ulhy98rn6rxke46vmvez8jddwqzmrnze', - 'bc1p6nmecs2af8nd7hwsmt5xavhuge2vnl3rqtv2tu2eg059t0rtdy6qpulh5n', - 'bc1p3rqpmfghptqs4ukf324scs7kqxr9qw0wupmnd8xgz28lmmm2kufqhsjj0v', - 'bc1pdx8e6encs08rqpjeywe8kazxl6exxsay6cr4wrnmf0mltk5uqnhqs69z58', - 'bc1p3p50mxhmpqqwjltxl28v4jta06hpstazv8tlu384w869fex5hdmq8uvq3k', - 'bc1pgs8vr8m8dtkxunnzeppfqtjst7card4ty5kjnjpcq8pw8v33tynsk3hjdv', - 'bc1p5w3nejgqlkca0veuz8whelrxk2xzm2s58902l2kn4ahecfesydaqahxvh0', - 'bc1p4jfgn8n7vwkfeceypvjn4phg62tnln6luzkd39xe4c0awleefcuq22h5zf', - 'bc1pzwm2098dx54dwajj2n9z7azfv6lq2kn30qkfhef8z6rclhh2jkwsanv55x', - 'bc1p6n2ezr4z27r2c9jy3633hx6s7hlaskjvlr6pw295ycurzxgwt6sqjvu0m9', - 'bc1prdrdhgdgsjvrhpslq743wrva2kn8wds0rhj5elngc84cycajpkkshmzgml', - 'bc1pkqv8z8n6hgfe8ym240prq638xx9sn2xuqlph04em52n2xxrn954ste4aln', - 'bc1phknrycyemqgm3r9754pf3gn2hm2an69eqsypu9fcnvfu56dsjdrqels6tc', - 'bc1plqvesppw3djkn5dqxn73xec9s0xk8kp8v0ztpe9xvfp90svx6uas0zafdr', - 'bc1pnag5ynqguersuldlc0q25tyk8za7ar6jp5ecfhy9w88umsg2760secjncm', - 'bc1pelugygv377yc208309m04445pd993fjsatajcgkyy320a4fwj8mqa8yhlt', - 'bc1p9qdf3meuvsxma4t78dznteusgc9nljecx9tpsar4qs6u89fq0gmq24sjk4', - 'bc1pmhrwm6jjkpf44mq4pl32y6nnzq22l4ypu0cnsa2gg6fwtczy0tdqje8h0y', - 'bc1pnvuk2fzy3gyt5mthep0h8hnw9ye3ttngn3yeyd07d67ck9jfrllq5qnr84', - 'bc1pmvnc94ldhn0457achmse234gsqln87lw5e3wt4kj3ft57eyexj9s0etm9t', - 'bc1pf2etuczshaqxgeqrjq387ypag6e96vqd82asplzpa36mc7ll8e8qlxfxel', - 'bc1ppaq2hfny4eusgnml329fl3c4ku90er3rzq7f9hpd5a77m2spwt7qx47vsy', - 'bc1pdyn6hgl7wtjmf93l3xkm52a6zffxarxgw2ure86ddqhz6mdnhunscm5mrj', - 'bc1pkuv5hjywjkgg0xmetcwamadljjdl7az6uepxheu3x66ad6c5utaqzqwaql', - 'bc1pddvzdhar06ln20t6wrrekvg8tdat9xgdy4egtlr82fl553veeseqtaem74', - 'bc1plegu2atvert6sw8078ydsrskmeau2555tpwzmrh53ha2269njc0sxg3kpl', - 'bc1pryukm6w54adqy2g5qjwpuvjnd4y08s5xkqkqh3g7ff32rn3rc94qrseedv', - 'bc1pe7r3cwav5g4cp4yunmnr7h3n0tunss4zjv5f3lgwcjrmjlj35seqcfuhqy', - 'bc1pazdz9q50juq4algnlqaeujcj63vns3veep3umegkhjp5vf90xl4qhz08w2', - 'bc1psg2t3vt3ljp36jupfqr3nkvnhvsxvywh83pmr5ngl50lx5hz63yq07rrlh', - 'bc1pg9wd9xswmwpqq0u4j8djsum6ln5zvvqrnrum6fa8fzsc5g6t74lqtusplp', - 'bc1ppnt2lwgr482n5nh4nq03hcd75taax3mg6qxmcvjzsd0v7fts5d5qmzn0kt', - 'bc1pnz2wlkrmr3ysy3ldvefcjkwfhu2ce6mf38tvqs082mfvuvf99zysmtkwyu', - 'bc1p53ptd9dr8avw0v989yp78qv9rpq9lzkx6zsjpnnsc99vwkzlklmquts522', - 'bc1pprgvujm68xxesu5dmwe42yl2k0x7klghx4c69pa40hwlhx3y36qq4xxx2y', - 'bc1pjh56cqd43untgndwxd4dquuyu0ym7vea6r2k7nz4jdg3p035ny2se0djzw', - 'bc1ptzqu49lfl93m8f3wykujqw8cs45exmve3cd3yg9quydcu48wycgqhhxval', - 'bc1pje57rckyv344475ae6jek9dr07af0k7y3ews278ac3r3t9my63wsp83nky', - 'bc1pwrx00356nneqfxhpycqxfgavmnfhc0j5x4ld9z3f40h2aazzurdqn6kj2n', - 'bc1padqha953gerna0clhgnghlhqk2uz479wap9ftdgegajdq89dhhdq004c4u', - 'bc1p84g9pe943hzdfddyy65r0hrtcnarnqjs4qn66pj068da6c78ee8swtdpgx', - 'bc1p6ycc9vtgg09wzzcu39hq97wrg2ggw94hn9llhyt8vwghg5v78lkqhzlv6t', - 'bc1pjf2thrzcx3g8yquf7pj0ced57jfg9gndjvk96lyrr6pfmwjkdlwqum4l9c', - 'bc1pn23tnue4764na6e82scv9n5tm8gfgsd5v29yj5dscwa8t48ca7kszafy7a', - 'bc1pw6y8vk6aesl9qnctxv5p7l2tev79l594p3dm76jcjhhe8wyjfc0sd344md', - 'bc1p078f7jcexft9j44jqnhamu84h2al7alsze7kdnaljzhx4acp6y5s40srn3', - 'bc1pc47zn6tnlqy7xeryra55lrgyawxrctyq2mysmfj84dpke2c2qqms0n06hc', - 'bc1p7tfxamku98pzvzn4hj0gh79xtds6vwghqf647xukarqy7rcujt4sz5rre5', - 'bc1puxs2edn2j9nutumrfpv00qqhztlwxpet0qpfgg7s9tcn8kwe057saxrpmw', - 'bc1p5ahlzhrzsxm2kh460sr2d59x7fzsqt6kpml8j67c4gea5r7c63escs7g3h', - 'bc1phjte3tazrh88vgu57wkljejkzedvj0pgppqchducpxm465ejt8dqaqva9c', - 'bc1p58xalhmtam2qelasa0j5s37xsfjsfmnvezmvshv6vnz49hv0avqqyegv0r', - 'bc1p3fc7lpx008e8heav83nush9m7x6ktdnl2mf42n2pemgun8ew22zqgssl4n', - 'bc1pms9u0xfe7aytjlsj808una0prmnsj8h95ekv7wg6yfusfea0h5aqekxery', - 'bc1p77v8knduumr9z65xw58ty2nnxsumyspxd2mla4n78q06sd7jut8qp6y5dx', - 'bc1p3klzu6zh0wfzca6w44pf4uwq2f3vmdptmxh9efnkndd2a7qw0qls00q2mq', - 'bc1ptacgey53urcmtgl7qmzdwjruq29fzksdr0tf35p6ummyn4su48cqvuussa', - 'bc1pkjjmgxwrqkyhf2c7asrdxmxpndeyuq36wlcety5clvufqwhrrt7qgw59dd', - 'bc1pasvdk60surtnkv6qh9cd0k8uvp5y0smnxns7cvaxzgtlwu2uqcas4uzp37', - 'bc1pnncv6fw69d55aur2p3x06xesclex2f9gjzx7lxh3g8v879khmuqq3xgjsq', - 'bc1pw8937zezmu4s42gn6fq3ndtng2xsq5an7v4hhg2g4e590p4wj5lqtr8v5f', - 'bc1prl6ep6ne7rqg64fup48vpqu70leqz9c5f8l0k54gdchf92rkgdcsnlxf6x', - 'bc1pfz8gddruugafnlyffy92vy0awvgfh95ydmp4sl9py8qgmwfzvh4sey9ydy', - 'bc1p4rpw0tzr2uqzwelhe3g5auaefjepr9nyg88m8x8dy8fvd8jrcgcskexeph', - 'bc1p54f836cy0reqa7ctjl94umrtcv75sl0je3vwt4kdn6cx5vkdqd8qx8vktw', - 'bc1p45xednxj7ukrs2ezu77hw5taunv9jw02tj34qaxm6qdl97zw9fesu2hf6x', - 'bc1pxtxwj73v9n62jakrvq63sgzdy5k7jeh2dnfnx4jrzyevujy9404s4q3kxn', - 'bc1px8rke2jwsx2kfrzydnw284y5rg9xg0jy2qg7hygr6ftkq5vv768q4699av', - 'bc1pe47r4gk66u6ju0uvd0cwamuak2zcm6vm6u3sl783dq536h6h7rgszlp5ah', - 'bc1p9xuqyhap7txqye7zwqj5elalgyj5x5v5vun0dr9xr3yy236auswqwwq4ns', - 'bc1ps35u2f47fqc8m8swuw88de3fzakdsnk80w9xjw3wzatlcak37lwsy63dnu', - 'bc1puv5zdqw45ew6gkhy2wnz5ceyw5anp7f2ryqjs5a4g8ljpt9tdsusm6gf76', - 'bc1p00ftpj7ktpgw5wxfntca0sxenvnvmsgyqx8lyktufc9eqp4kr4eq0lss8u', - 'bc1pvav3syspg90zkrtsfvjp8526qfr9r4qedk0pqzxt633kmp8te85qv95p3w', - 'bc1p6pt88p2tw942e8f96z4tlh093jlstz0yxy476n9evx27xnfrj44sqh3zx4', - 'bc1p59zavt3r0v5shxkl7a77kz93mgw9kh5sfmtrmpr8ugmaumak37yqn0n5qe', - 'bc1pvr5ggylulpvct9zn3jal398wpfmgjs0p2dp0sjd8fj7385ts4pvq4zvk23', - 'bc1pl8jdylje2v0cdc7mexlkjh2rajk9ly4l5xl9rna2eyjn5d44nyysj4tvy9', - 'bc1pdd8ggxrjlf69drcatukevyh0m2vecyt9e7z7ra83whvdg4umv4msahd598', - 'bc1pjkghpqpxqt2xdnf9kg8phczdc847dxnjmvdf08d8z3w9djjdyx6qlujzll', - 'bc1pcfsgvud4k4ng5pqq8y482r83zv0yygat9dkzq52v8kg2enykcxlsyjxxjl', - 'bc1pfz2qzzc879hc4xnnkrr52cv38wgjpvcf8uxuh65hdk8n5ygpgk5searhee', - 'bc1p782ag0384vszpsapvenpmh2pvm49ncwrsq88t6nz8ehzvxlel9msv4s67m', - 'bc1pn7tc6u8amrg8ht6a70ykp5ea8lcntclvqfllndszqgx2gtt9h4msmpcn9c', - 'bc1p7dakkc9dpl4dmfzvc6ta5p23unnl9qetxlslefndwpcxq259rg7qhzk278', - 'bc1pxgs2d4mpz6tvs9clkj759q8cgsyglg56kr08vdkmvxvmyxjhpuqstt599v', - 'bc1pdn76ap000w32xqjfsdu2n0yg5uuxvtej9gnewmdeauuhqrl6xxmqmg3xt7', - 'bc1pwf9qfvx3ul40te45m2ex254mxq04l37m84ts324lkr6m4qyjcccqlfczyt', - 'bc1phh2z220vfq9wx958ym25ucc3nywg8ydu265gr7r2h9yyzw32a2xqpeqj42', - 'bc1pvdgrj6m0c8jddrqy33ncz5dwzyfp6ul6yhzfkxsx5aetp4eq3emqexytf8', - 'bc1pu4423sdl5463m4hm7jf0l0yz5f56wk2fj6ltamgj7sjr7avhp8tq8j8z3m', - 'bc1prs55frjm22697v2ujxx63385rphsvs7tx9z6mtvl60q3f2yh4w8s4aufj8', - 'bc1pmtvt5wfpdxrrwsg23hhhwsw5kxf7hs6z47wwrrpa0r76qqlktyysz94xnx', - 'bc1pn877aqs352x8rvr29dff0lzmmrzfnh3kf3jph52tq3j8rwn7fjxqf3x3pz', - 'bc1pax44twghgk5tq554hfpfhk5hugkhuhpl6fga3t7h5dgqfcn65z2spf7l5c', - 'bc1plqp7vq3ueda6908le4f8azj9e3czp2cah6c8y3zvc6k39sw7sa6sp0wlka', - 'bc1pnuucy5w6mh9g4eq55h8394a78e40ytmwz4nrw2enqx4800c044qqpqhl6j', - 'bc1pnvem4cvktzgw6zxq60x7wcdljluauvsx7gp48dtxfqe68s35pdvsyfnqjn', - 'bc1pdpeyqeauua9yjv3yrr3nc32wq2j3dxy6trkrhrn9ncxqn8c9nxcqu40l9h', - 'bc1p64mhea79tmllw2kuykc23dyyqarva3tl7lsn8cx4ejvc4csx4mlq07zprc', - 'bc1pl0kpcm6psfxavhcscaplf5sv85gg3m7r0qe7q9vulutrfndzezmqudmx7v', - 'bc1p4m3lyw8kehjq35zlzac8vlk6ytrzhv6euc3g9t9nxvk07qnrdmnq3mmjv4', - 'bc1palv6jnlmlqn99q4ldzclgl0h53wmuzvlq76jgnjtdjdv2tx5mmpsplmg68', - 'bc1psvgq4zew7revgstvvs89nf6zk8wx6up8yj5kahwa63f7qk05ls0q7y9wss', - 'bc1ppkxamtrslym6hvevaewnjjfzplaytuuctklpdhhctutjcsxkzy2qhn7slg', - 'bc1puxusccggwntmuadqv767sy3wxu5m5dk3s5dja44azj5ghlfcv7esw0xq6p', - 'bc1p7q8zkwupxfl3w3q2jjcagwgs36h8mwakggzj30u8q66vtxl8mwssnqr72q', - 'bc1pxhwc9xxyc6w5f5jnngxtkmazsry93nfh4j8tyjx8s408drdwsevqykktw4', - 'bc1phzfutlzv56a33xjd0k2gl9faxzl0nhdvzz9upgl9cqezzft3jm6sewk2uv', - 'bc1pv0r584d7c95gkx6k707psat4luc67msfpmckkvdqfyhydllaxu9s5el436', - 'bc1p8ay5ew45k3pnay6qw2lcl8fyuj8vmc3uczz7xt6mhxs80mflv43sg60a00', - 'bc1p0xdfvxrw0jm2h0ga000lmxtxaze8jn7vfhvv6lmw8n9h242t4v2qk4xjk5', - 'bc1p4m6ejwuwjhfzz94nxfgrzjuqqxcmgve4vj4ey7tzn5m9v23nyafqpes4hl', - 'bc1pwe0v76gch3h6cee2eljgnhwrwn9zkxwar25nden33dxgjc995qcs2k2e7z', - 'bc1ps2gfwh8v7dhenz30jwpr3xcxwd9538xsqn0vdsd8gpuc4hzjgy7snxhcvp', - 'bc1pxrr895mugdaanyeeejz5re6tg54ac5w3rxwj8f30atkju49dljuqzhl7wr', - 'bc1pyw837p3lg0slvnp6vj79unk4zhsgh7ypy5cg9hnmsl9m5qh055zq23lyzm', - 'bc1p9v44w4ln35tpe0ggqm2n4cs2hlhmlzwjcctlke28zdhad9rp29wswuw49g', - 'bc1p8zfvp20drnr0mw3gnh8yd88s2jems5kjc9a2u7hy7x36kmkgjrmqskhuly', - 'bc1p5je72vevln76z2ccegmm9ayh8akk0ucfq70thcvpw5vct44u63tq5u7vyr', - 'bc1pvkrhsr6mpm0sgrq4rvx6m7uk7uar0rjrp4cegut94eqhgfsdkhxquahd77', - 'bc1ppnlftma8gev5ds00v97xdna3a5k79ufww2vyerug0d276n3zt6zse8nqau', - 'bc1pc3rzsyk2rx86t3mrlragnymjf4685llzav40glyxuhw9zt05j3ms3h5wz5', - 'bc1py5pkv9sxgwudcz9prt20xfffh4e8t2p5xw88py27hlpfply47ats22c4y0', - 'bc1pagjh7vxnv577d3f9eqzkcd8tgc6srykys9rgukgyte32nz9z0x3qkmg5yp', - 'bc1p57gc0hvmw30q3v8h94whslj32h5q436ftkjtrh00y4wuv0tt47sq2wkade', - 'bc1p3lg9x2600xmna55hrgf77r4zx8ltxt3x9egr9zxxt596xyr2nt9qf9enec', - 'bc1pc30px7aryevq4mghkj7ytp34a06e0psjjzwvxqly3h8swvknp9yste47m3', - 'bc1pwkc77fssc9m7w5uw83ezt7z5798gusfvh2aep7kl8pzqa5hr6tvs3l2ka6', - 'bc1phgad4uyt35pdy5vvevvjfspqwg6xnh8tywue688lfjxzjec35huqsw7rpn', - 'bc1pn453ejn6dqpqr06npnq8njz7w8suu7jf2wf9056vrjd7laa69kmqfckpz7', - 'bc1p2l2x9s7yvun27xutqd75tetfn0w07eu7haepqfnzdls8hr796n8s6fhheg', - 'bc1pnpmhl3srastmxrnuu8lyey6qe7fthkkpuuen63cthgt0uwqwkkdqtcte9p', - 'bc1pz83r0veyzsgym76wflv3l0exquy5h46ykwgq3lc6pnqqamstjy8qhrpagt', - 'bc1p9ujscj46hn5d6nqkq0syv62hl7wj0k4m63wfhf2ne4qpwj5qdf4q9evd4w', - 'bc1pxjcxp5jrex5swm0huprs0h3cx5pywcgsykwnglp8s3s2gep3dj3qaxlzvx', - 'bc1p6lcnkexgzzj4whzwu96l47y23kzphlfj82aup73ax3pprdwvl3ns36ttr6', - 'bc1pw80rt6tu5d40aue64lh7eelqgyum6y6r7auacwrjk9yerkam8w6s95t63x', - 'bc1pm4z8xtxyrwktquetd7t0wu2rdsex6zjqrrluuhx3njlekrt039jqr0uz8g', - 'bc1prcwwfm9cxazz6z2ljz4n3nhqv0jfhvg4ed7qm97ynz2axr9g3qyqnhjkc2', - 'bc1pxsah25f66axv3uz6n7jttc8f7xh4q5njtlsgerhf67artudl9j9q289463', - 'bc1pa3yth3m6zheq0k2ckqlzsrvcmtdefn2j32u7u0es0vgndj9q2czqphage7', - 'bc1ped68t67t8yk9pe0f2pd84dxxvuulf7ahwcfk0hadx6m4vfq5cypqm09wrk', - 'bc1p0udpd4sfclysym4ex0x7rwrnxzsjvlpa9fk9av4e2ywr02q6p0wsqk57tj', - 'bc1pe32ytfeahzp030cvreg2htufzwhhykw7akk4vefd4vjkkhnyxv6qrk05p8', - 'bc1padt6sgas00edgesju2ce70l56zusq6d7h4p4xgq0nursga0qqzhqj6spk5', - 'bc1phrpwxyauk26h6rayl86fmjvsgfs8yq32x55fd9zvacf6rr5u0j0q4ct4nl', - 'bc1p4d4wq659nvecy08844h0gg79a79tg6wxhznxgtanq2pumtustrvqerhp4w', - 'bc1p8t9ghjgqw46lu6qfxn0jpc7e8lgcr0j9fvsa63e8d665mhrrmjdsttuvwy', - 'bc1p4ynfnkhrt0m3fyjcp69rryp5qee830gnjzls8mg2ptqpt52q73dsgywthc', - 'bc1p6jrtxy4t9aezqv9rgf847kw6nlhdqy88g3tgddds99n5d5expqts3kceg0', - 'bc1p5rr99pz99zg5rrnck9x8t8c9uxvtd5qfez3huglgv26amsupa96stnkk9f', - 'bc1p5msl4th83xacy8sw8u8k0znfhyqqdk9eqq0n805t3y5usuqmcgxqucxv83', - 'bc1pg4dpep60cgntcyzjuns5vmalshhphndeqrp0kpd8fxz6yt9s0tws39ehky', - 'bc1pvwwxkm9jkkfu6cns4gygsxf49v7pt93cmjr82tfcjdquwltq04zqw59qwc', - 'bc1pjx68s6dk9xvqnwvuc3tthz5kuhseptz4s0w3sk5tftmjs5x6ds2qj9vndn', - 'bc1pm2u3gqe544tl7cr0ea8aazve69sp5nkpfdzadr2e260e652r39ksxndney', - 'bc1pw5ls9fr90kddqamprchykkcflqc45g3swur2efxwz53pegzv3hgqmrt9ds', - 'bc1pane2m0z8ymreh67xkathhrst8jm4ljw53nkq3da23fmmf6gm522sf03t55', - 'bc1pmzsjlfwsrfkm6xcq6nay6agx3uxvu87kh5vwaqy9gx5rr8l03vrskr0gds', - 'bc1pk9zqlfjjn9h5vathr63qejscpd4ljsgetjd3zk8uskt3cu3g3z5qrsr2ht', - 'bc1p5zdcgdk5edp6y8zr7dny4lhjqucfjs53750396sdhewkawpy22ess84kk4', - 'bc1p9tt8f4kregqyq55uvgkhyst4sa2mlu6vw68kksnzgqjx9824fy6s3zq7hp', - 'bc1p2avzn4532avveyjgsvlp4efrsm27y390nk3hdxltw9zk5j8r4smqhshyr5', - 'bc1p3haghg60y5jw3dpqn0tz4mx8fp9fu06j0yhzjyhj7l6appywyd4sr6eprj', - 'bc1peg5t029ejm0dzg38pe5nv6rv4e3w25drxcsr664z7vy88nyhpdqqkq6a9a', - 'bc1p72r70w9uhkmftpwkf6qfknpdftcaljyrjlgd36qnluf5wx8eup7sk4kc4u', - 'bc1pqlja2gkl04jcagms942e8z0v8lxdmdxt9w7mqmdygzrqthhwk99sfhl6yq', - 'bc1pc9xzztm74w4zqm8yg690v9r50shyr9vkckufzjs4m4cdxwvf0tzsnk7ewd', - 'bc1p4jxwz3cvfyhgr9dsqnlenp676u9rderu9yvq7re6nyrzseqmw95sph63xc', - 'bc1pvfpg5v2ze70h03td8yc3ecvn6p3t5velj90ngrf2xcdf0kz54utqg6eeuw', - 'bc1pun2370d5c7lg3grc88f6s5p9pycnp6804zpn6waqfd2y5vxrgnksard60z', - 'bc1pdw74npe0yqfxqqmu56dlqvystzsnvlj77w3h404sayrp5w9zz9tsc45y9j', - 'bc1pv8mu9cfpyqrgmz63jtlxsmr7tw2vtpq9pj52a0mzp4vnh049aqeqpp7ule', - 'bc1pfta7kn83dqv893m4hvdev272eyerqt4p7wc76m6z6p9x9wkekkgqsq82sn', - 'bc1pu6vychqpd29rdvcakzsskumc6t3ct0jhcc7gk3gsadrqsk3q5daqtxfyny', - 'bc1p2rffxpdhxvufa8flvgetky286rrzn4u5e2m6kt2nwzzryl7jlpwsxzp9k3', - 'bc1p09y5fjrdcxh56du0wukpy40lqrsdyqdwlq3g3fpgpsqm6jpyrjhq85yjmf', - 'bc1p4kp4p4l00sw75aw733uukm3nmjstxnjgs4nqd9ah4xkhz5vnnknqj2yplj', - 'bc1pj2q2e6ctv4gznn7ymgpedcj4qpwvgyfcvkju8mn0gl08nqhshtes9sfc8n', - 'bc1pqkx2mw0y2tte7f6724a65crpp2lqkjp3sl8zll3uglmun2kakavqhak47u', - 'bc1p3fsnykumz4grrcaep37xu4eywflehuy0kuzvzrhrdz9vx8ljzmjquq08x3', - 'bc1pfpn0v8fend47qdzjd65ll0wxjena8naueetf3k48lzq0uqeh946qvtm3jz', - 'bc1p6zxvxfuksu5t3rxusukgr3kzkqwwry440zlr56k9n9dhus3aup0qh78mpy', - 'bc1p4mtdpt4q83h4jv8fhfkzrfcg3hkz8mfln0wdrhd3xk4qv2g7exwq4zy4cr', - 'bc1p33dzk43j8djjp0pajenefnyvytw67ppkkf6gj376e0nnsqz0e2vs9xrsue', - 'bc1phg9pptky4ldjlcyp650sqlqsrzp780d373degl2npa8gaamjac8sjywcn9', - 'bc1pftx7hqw76p47qfdl3y8nmtajh2clpxme62ltfh9gnnckyrzzay9smzq0a7', - 'bc1p7yhq02qj2tfz3mgnfmttn6w7garrgetk9g4cfp3udkpsqgy89wasq9gdy2', - 'bc1p3vxsmd8pyzvh8c0j0s8re8tlpv98ewn8qnp58juq40ndkrh3yems7nvys6', - 'bc1p7jjwzjpykr2y4pgaejv8ju0rngqy9djzlj36jmjah9hdd84u5n4qqdsq5u', - 'bc1phmcsjz6vsfz63zchzxau877n0wwqz2wfd3t937yeq94uct2vjw3snlwpf7', - 'bc1p9xh359eu37ywynud40hkn5q67yxnz4nhc5uu5mjav69p2gxx9ycq6a7pew', - 'bc1p3ad80amjmadfzdr79xc4s9zqjdxaensslnwyc8ze7lxr6jdnp7fq6zunfv', - 'bc1p7s59sktks4rhev3hw7g9gulz3tj9ttm8wdn5kfm79ddgz8jrrztq3pfya4', - 'bc1p5lfr0sppja5jlfjkds43vtstvzkxmnsagfhtchfsgk93e8e8ktsqp4076q', - 'bc1pjcpvvlg550w7up87g4ayrlaydrlq7h2587wvxcnm97za6q7euqeqg5cnes', - 'bc1pnkvl5s9nsv6she08zq32t78wtcffelhr4mdavw6psw9djfek5z3qhf2hav', - 'bc1pje9u9shrnjx3ymg45lmle7kaeu948ypd5dwnm5s8pch2njy3dehqq7a57e', - 'bc1pykm2afhjyrjuqc37f3uwdggepau97ljk5tv99prlqg54rpejwwsqzjtklk', - 'bc1phn7hzqk0d5km24qagethuh63re6x3esr0szs7f8wvt6afjdv940q9gdh09', - 'bc1prev3smc7n2rlek6pdktdeg4fegy4hr75tvhpwqj0qu794qmn8w5s6yetnl', - 'bc1pungg73vdjmrxevy6jfxggrmemf3mkva9ztr4u8j3sq52nzjpsyssanx6yp', - 'bc1p2ltevrwc2s5se683qxm0zceva5d0c2lasjn6087mw5hph56zk3hqfs3c9q', - 'bc1prrcj4dz3cvzkn3305k7xa9lc4wmnkk9a855jw322l2lvvvzsezmsveg9ld', - 'bc1pa96tlu8jclfkz75rn0ggfdxtfxca9jmgu09fvscep7xmu7hc5znsdzcsr8', - 'bc1psjln9er9upyy8m552zexfgqrj3ah9pe6rjy5uk9shf36d04qa2uqfqk7am', - 'bc1psymgd4x8lt2aq3xsv6687xr2l8c7d8eqjpqvy3dl8tkzzxve9v3s534yjv', - 'bc1p9w2pxlz9hkw2mwvvk4khc3ezqa4x2npptrxqa5wysdfejarn5gyq79ec7v', - 'bc1pe4xh3j29h9fcgzjnyx6gsfwd249a0mp4qu90gkzs0k60gxj5ezqqmsmmey', - 'bc1py9agj7amgqu0378mypddsp6quawpzdtk2ryeclr7nue94y8ffgcshd30gg', - 'bc1p4pp78da3a2hv3hf9ztpmxxc3kqxecm2eep5mdrzgkzfmkmsrs37qt3zk4v', - 'bc1pe3z4h5gyhpyn38x7yx04zwduq0d6e8ctlzm9a45kdcw8t96wcnksldt60w', - 'bc1putufhuxaanf80r9u2ct2ay583h9dsawl45sp6wq6vs6gg37g5ttsd3s9c4', - 'bc1p8y6xzvxa49qygp4eyslcxz4z0rmm2attrffu7m6k5eh3e4envkyqg8hmdg', - 'bc1prs56u7473g26gtjqxzmjl6k07akdnxrhleyvg2kk6kdjurts99gszvq6a3', - 'bc1pf76uhesvxzyjrn6g30lyrn22r96u0k7zyy8avfqwulx6f0u0exqqjerca2', - 'bc1pr3tq23pntrn3970lk4k4gwjgn503ls3lx4f3dv7nudy5234429gqhmcptq', - 'bc1pxfcuk7m40ww5gd50wl2dcwvqqxyjmpx8ejg9m8zmds58wnxxklasxr2qrj', - 'bc1pygh6a33pgg079kya4l3lsfzslj0qmr0j0jqu6xycssy0jxhj59hsruzlhu', - 'bc1pxd7tjtxqcevnnx5nvpd2zkr9fkvxxfznkl0gucck8tmulvxe69asxgrkn7', - 'bc1pwhz0wc4hw8xw65xdjjvnyyrz68w3a6wy7e09a0fj69p0wvmnxymsrjc59x', - 'bc1p7rwrt0yyxup5uxe6vdjxfna7zp52yj4nul9r7qy7gzwdppv72ursz643d4', - 'bc1p073j0k642jre5mvhxz70y4rjyngcc5zwylj9f0k8ua2swm77p5xsjtle68', - 'bc1phqcjzxshcnxazlx3rmkw8wul9s4fqk26c54kqmzw4q0sfwzdtp6qevte47', - 'bc1pqrpr886mnrtt3aypqy6a9hrv0vc6arly57sq5wg40gr229yre7ssh7vvk2', - 'bc1p0pvu2mxwx5k7rtpytcdhf47qpp9k4r62c0awy26efs4wtyw6z7eqecupk2', - 'bc1pdl3xxsz4fdzd0dl4sn8wwcvcn22fd95m3sjpug00lxes93nq6aqs3e8fy7', - 'bc1pumuwgzqtr93ygatvtv36ywktzlnuezyfx4gww8w75agtu4agt79qksnqj5', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/coin8.js b/projects/helper/bitcoin-book/coin8.js deleted file mode 100644 index 3a6b585d40c..00000000000 --- a/projects/helper/bitcoin-book/coin8.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = [ - '114atFBQoi2nWP5EQKUxmDyiY22Bs4SHkC', - '13FTY8oRv6ccsQv4HxmTKSLLvhNBBy5F6x', - '1HvVJPnwzHYoQsZyDYBBw1NiH5EuTFDzCB', - '1JPkYurLo1CdXShwbUfc8C6LdrXBcYmBrp', - '1KdC8jfRX6am6WCtqZP2UV98Czaxmtp6c', - '1KxZyrF1SqfNw38fgzYSQhW22JKoJieVtU', - 'bc1q4w3drxrdhcsxlrhrqpl7kecesn53pf455muj30', - '1NW9M4ExnX5DGmdnrp5c3iDU2WNt69RNL3' - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/coinbase-btc.js b/projects/helper/bitcoin-book/coinbase-btc.js deleted file mode 100644 index 45698889095..00000000000 --- a/projects/helper/bitcoin-book/coinbase-btc.js +++ /dev/null @@ -1,171 +0,0 @@ -module.exports = [ - "1KT28eYoKDnxMzqZKNGPGt29wM1zywTpes", - "17VKeknApQDBsnhbiCGnciTf6GReEw6eWe", - "15yVaYH6gBjGQSMY4pHEd3sSv8f9qb158C", - "1E7BdM4DN8XoxtHvgj54gFzKH7iT7oauxd", - "1DFrm8kj3gdqRmxrr1Ku6gbR8Ahk4t9RKS", - "18GPfVxpUYdwPgk9hnU2hf8QvU8xeV7NJw", - "1DgVS8NYtYx4fhNZxy4rKckbMKddxVtcB7", - "1USHcnLUZE36qrePZ5xwaCfGvn3e3ZuKd", - "12SS1txJCH35yZcCFWkjj1J3E6qZmnGdfy", - "1B4mArKTFG3MwfCKQQBbj9whmWEbkWT6Nb", - "17rioDCrChkrAhQme4DY6qM7ZwFa1k4ynx", - "1Fqjws9XoUXvX6NpVzyN7B3T3Lbo8YoZnu", - "1GWworxdf3j2AxnRTPDYM2i2ZCs58BKRvT", - "1Gt5eggU21cRiM34GT2C6rZGZeE8DEFkPW", - "1Ja2vGqGacCUN2KDe3fAPQ2DcdWWR8BbTX", - "14v3Wxj1hikko4mvQoD4XRCWaWswi6EHCE", - "1LmzBfvfYWM1mv3tArvzgSsQVZrWPVfn4h", - "1N6o5GUX5W2EGbiePQF5K1TgodQha11Ptu", - "19p5HXhgn32ruRsst8ALXL1ifsEJkH2gtt", - "1LEZSSKQWB3qMbSgaqgasrJBpwbDLVXn4Q", - "18JEq8pUTxQXjGtECkZvtgD2knHPNXfmsW", - "1NpCu7BDNdYMbX966Pyo5yrumKWULCaRht", - "1ErAm7M96EiDtJjFvWR6H212mTPQccXSYn", - "1PQ6JLBjxmsUEUt3VGHadnX2ce4j4d5sNf", - "1MrdDiXvQr6zNhpJFyW4WmBEmwfRHKqW2c", - "1MuE3LWhzBun3qu4JgqRVD2McyVt72e2q", - "1FaFAjdfcGb3gbTcjqu6AepjvkmMxY8wZp", - "1C5sxLP2StLKDEcZY6nGJaWKdiE2RUiQxa", - "1Ewasv3ENZ3MYA2Y62QUq1DwpP9YZeeARn", - "18GyScU8NhtEchgKaRqW4FLaRnv49uJ25J", - "1JVqmH7maLHphVE52KCFgvUUzsJwUznojX", - "17X6gYVAcWRMkuTqNmxkzeSGTYVphM3rU3", - "1DaVorvtkSZqReePqrn5gMgFB3V1FWp9ju", - "1BJwbvzGUadWfpzrr8x8TFJfGXZN3V56Nk", - "1JPr4eAmv9Jevdkzq3Co4BJH2NKfKxBtiB", - "18jPkbXhhYuiby7sJ2CqjTqRG97SKV16Zk", - "1BU4VCYqbwFDzRhx9W2Z6o9CAarK8cVjqX", - "1HGq9e5MWyg3VpvAnFuMnMxaVzMHjLU9ar", - "1Jo8jtA86pBACoTN2PSCCKxaWLbhNKkTRq", - "1BPX5f7VDWXT7eL2S1gDeuML7PkYyPJHwV", - "152o5BtXp1QWv5rAaLPbuuGHMLHfoqTCRD", - "1G5xoA9Kjj3BsuzfG2SLu5sacZXBEXt9f4", - "1C9pvoWG5bKJ2XXJVbVBZi4MiGSHJoPBzJ", - "1FXnA4HVECh3R3PNTxv76CHFhmroQdWL3P", - "17mNviehqbrB15cqkGeAqCTmJmDiQnjLaG", - "1MVy4pDRK9ZRrWxTh1vzS3avVfF2BnVTeb", - "1MiWCodHBWgspN7EwFSH53qPgHyaLTeiqs", - "1GBy36rfzyj1ELHhCK6UF64SPkmjFKchh3", - "1Ak9DkmMqYDMA5fZ2qCCnaXsckNppf4oNn", - "13L7SXjyKy1XQdVC8owHUw3ncMKbBg4GFj", - "1Bg2MzLGWJRP38Mbash9gNYjQh2w7RopjE", - "1L1yv5BTgoFosJbMZhfBvs7AoV5FYyWq3J", - "1NMZWLzqi3VenL1wE3D9KvDoD3D56Gk3kw", - "18cX5PWx9hgL4aj6b3Ait6QtMpQR3EaoVx", - "1Nhzva3f7c8YTx8xUij8bw6tgUKpf4Lrmk", - "1BxczZexsRYSCf7429kVWA6WrmkwLhSVX8", - "13qiaWP34Dd7WAKaQ11vbygMeuKE6qDe8t", - "1rGP9Lmm5VAumNokywWofsSntSEixvvEh", - "16x19HvUXrHsPBxAZ6B3hqPyciTQpGipL", - "1D9AhLWZHe9QhRLbHuzJJbwWGhLkezjSd6", - "1MJiW7RMJr89k5eJNQHKjw6XZpgHbAQTYZ", - "17NGHdoLfHTEpVFWqrPV57AzgtvZvWn6t8", - "1JGPynSxBb4A5C9eJoymeEjCZqSarZbx2a", - "1DNpjTXvPp6hucDS47kusy6QgoJQLNFRgs", - "1La2sCcFSZ8ka7ewvnQ1LoxDrKgWRxtgA9", - "1LmGRyNcVUVMnu51U4sAJb2kRUaLiLTq7w", - "1HPFXBKk8YT8gqsQmmKSxiaHKdPJqQnpQK", - "15JvxDYNe3cwXpMjwUJXa1QCELMuWE89KU", - "1NY6kCt8TQ5UjqwnRsNwiTRhysCJPUjAMJ", - "1PpytYA9QS32wVo5iwB6249dkHYczBysKy", - "14oE3AH7bfFjxh6VCdS1fe1ftfzWxbku3f", - "1DLds4nzALbMzVsEP4dz9xeJ1KGZUaLuvF", - "1PjCMndggvocXTnzdXF69255mhafXXYcAg", - "1EcMpVHfVmvuutJnKWLHqgvoWgdHkrzefW", - "1GMoT1SUX4Byy4xJQyfeLsqs47kXv9BMfU", - "1PtBVTLRKNxXXymUaPLCFCiEHb3qHCZ17", - "16Z3cN7BLqQDwrEK7ZKyFPYEBT7BTiAQ1R", - "12zYAn772nKcBCdrxf9FUmBfThxY5anRfr", - "18tBNx2YNt4LEH5wBMHYRKef9ZmFtH6pZJ", - "1G8TDzR3gR3edQDj1WoBbVN7uXrYZGCWiM", - "1M1JA3WofaeCmuQRbGpWGRxuA4BZY64Tnw", - "1GtCqpFSvH1jxrSH8GmpK94o6NwFqGYE2q", - "1MJLWCneHUgswuysdygkAAuHTzN5nzWUxs", - "1Da8kjDcDnbRjmfP9bofyn2bci3yA5Ydo4", - "1PJCUKNUbDwrQh9UKC2U4G1Lqr6uKZHdYo", - "1PtJCHiKePReMwEjKMaYQJmSRMCumB5vzq", - "13zUwqjsgvgvS42P8KPemxHKLmtbhNkbKE", - "19xpgqDqutznZLLTjt68RQNujyoyRZFqVn", - "1Gw7iG6x5Zu4GrjMd3zbSmD5Gm3usyYKDp", - "1JNoPvhh79LKvwu1JfaQk7AuiZZsJ7CYUd", - "1PUjr6oBpGhBEsrWyLUpyhHg9xmXYPFCuN", - "1ACytsRyFDBZBAjWsjiWetP2TmT89Mo38w", - "1DuUS9uy6CbgNtHm5tVWT5JWr61tkAg8Rf", - "1Boxv42rbm9jjNj57bH4BYxQwas1Mu12i1", - "19Ut3pGaMp7AYqj1iVE5AU73iitBoorqH7", - "13xx8Bhjaqpw5M2HwVSq4qwy1tp1i9kjfk", - "1CxV4VuLq5AXMhn2AfXGht3BgqZgiL3qPV", - "12SVpwnHfPWW8tGWtYZqQPnB8uELFFHdiT", - "1MRaMfo1PEAS9M5aLnPozGfQSCoVApwcPy", - "19qbCkijxqmNC9oDDuDzQUbCHPzKTCjhGq", - "1MsBr6zpuMbVGjJ2umgp4tPpBBtjEMPjJn", - "1HabK7ERKNu1rkaQVSL7ckKoxEjhngi4jx", - "1JjD9HVDJ8bTMdzixf8QneTBeZm9B8fKcJ", - "14c3RFzd5JuHjKZPgkncdUzAKj8VbxzWLm", - "18i6W6eNTK25QWstkEjKvn15mEHNzaKypL", - "bc1qajq0scurgsp5qadp7fmd84f6ru8dgazmtytyfl", - "bc1qkqu7akp4lf3vmkde5l4ydp596wp8fm93m9yptd", - "1xT8bWnZzS339nQLnrdqBW6yz8Nt5KjLC", - "1A8rnTb2a8tSdpEbFHoUkoXcummHLT8zPo", - "1JeMAqbNEEx6J7T7A1PtPvWNAVPRqjxRxD", - "1CD6c7TCFzP9auR5YDf3dEoVNBHUGq5Vtg", - "1CgpdCJAkEQrzgqRh4C2EkyKsGCZxDFPEa", - "1N5UhuNVqq9UbfvYUV1G4koC5aH6HJLhQ3", - "1Dc3jM5jHD7HnEdcE1jLBsMwDoomJv58F9", - "1ARc8c4VRjtmKmDNWS8nYwGkuh1ebHvuSJ", - "1DmL69VECTEMALtgoRC9UgES92zNUh49rR", - "1LB4YZ6Y3opWGt8akmUaHdD2Fws1sHvwTX", - "1MiJkjLoYaNbyFRVjufCfqPgAMTVvdwLcz", - "1DcT53DwBAVBDBCZsyUFWRFBrvnccfbWeB", - "1MHVeLgm16xPVUo2E3aQmHtadHcSFkYYXX", - "1MVwsXefDNzB4P61Wt22bHU5x7DDuAj8tZ", - "17xryMuSJ8EFLTjYS3uJpBeFJptRFbxZxz", - "196H79DoLKyUWfhoowzk46HWzw8kHZN6hb", - "1KqNT2sf1oSjukKcKJekeeJG1yzoJW4CCG", - "1JHvNih9nPjHZXrNA1nAey5SrkmCgD3VtW", - "1My5XugM2jDfnGGceLHRuBYorQPVkVUxxw", - "161o2LEvcemxyY9fS5XMQfGeudjXPdZJ8v", - "1DHUsvfcZyKuNMUbUGxCdCjDn9XFzeiza3", - "1356wkYPJo1ea8zT7jxyBc7krQNR8yFQut", - "1Dx4twaVMGqU8pX1T419oqmh2M5djPHpY8", - "13Stav9t2piQUeU9xHw6tK9CnvVQZE6umR", - "1Pwsu94JkQta6GQusaJopf8SS7jYmydb67", - "1FprAosJemf7TDvLGaTHbUWms3Z1uLUwJS", - "1Q6SUUiqG6xEaFpa3G1X8LbVPwoHJVqJgo", - "1NKLjLtc3DMgDb9pYopUEu2qVS2aRzPdBa", - "18Uy894AoJ7AB9gyoP7KYbqX8VdeC2NyoR", - "16Kq38c8PEimjAMqzEaDP7ti7UtNXYZVhK", - "1JkMq7Z37w6mB56GTUpVRkd9GaLJRMoupo", - "1GRPLmxdDMhZVA4a5ebpPMdkRDZRue6MGg", - "1HW5eZekUAk43rF7J6sC1VxLnxRL96dNyd", - "1A7S9pCyDxr5yNs4BhQPDC5Jb7BGXVpGnY", - "18vCH3tswWcYTLt6dMzyfoA7Rnmk96yMBh", - "1CWmjdid41v5i2xsQfX6R5ci89YyqsYPtA", - "18kbraMvkVj6RhFGgjmNMG8EFTHvTXg53o", - "1KJtsPotDbyuNtmKdtPeU9dNXjo7oZMhL5", - "17cXTUqATKdiUhxzt3XeFTEkrFhskuUGnq", - "bc1q0d3k8zue8z5ztqt0r35rsd7gua5z4ser6gt46c", - "12DezRFkKToAiLTDNru1g7FuvtAWMwCZ7N", - "1L9DJnkNc7QgSGR6HP44GNWitXf9ThBsxa", - "19XkhJXEerC7gHAKDTwUSsA4tgKHTphWFW", - "13sJPz6jk6khxKns9dntVhxhgV1tdz5aYz", - "1FTPvwsYbPeQUv8Y6as7f1azK37KUGYqL", - "1LZbQvTUvnpWHW24qqAoxxakAEKhxNdN7u", - "1N69yC9ebV7HbCnxv5KyMZPzQThfFqCNyS", - "1DHicF5BapBkoQaso3oUXmhgDeczu87KJK", - "1AELypJG2aQNHCGoJ4kE5ixxUa6DKBea5n", - "14sk4psjHiLVzW1jHcVomuSWmYUyi9DCN8", - "1Lm1Gsk9i3vATdfKymGt8PEdepezwfALua", - "1Pewc7mGPs4jnP4QdjmrWMxmeWExDzoKhC", - "17WMFWuq8SmStQdtxvYD8ff4AFM6T3VWtL", - "17jy2TiNzWuqHERVyvvugAJmaTfDSNrtdA", - "1BSq2Xdor8jRVdPStdt9Uin4SZDAMX3hyq", - "1GD46968iV6NKAgnSe2j9VK1Lu1ubQDmaf", - "1NwB1irAUYbpzGqMcsrJeX4ACGfTPWcMtM", - "1K9K1b8gV62yZtJrzUdawrQCEwbvdQqWBA", - "17bu1aKoNPUXpqA1XjjEPrNU4LT5DTX5Yd", - "169Be5ikC5BBXb59GaJZPjgtnp9Zni7ia7", - "1EN2dtK3bRW23NykRyXY2DuDsxVxvZCkhy", - "1AkBonkaDh5fGa7yNfF9aDYqaKk1Hhw2SL", -]; diff --git a/projects/helper/bitcoin-book/coinbase-ltc.js b/projects/helper/bitcoin-book/coinbase-ltc.js deleted file mode 100644 index 0952bb39198..00000000000 --- a/projects/helper/bitcoin-book/coinbase-ltc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = [ - "LTbMyvoyfSuQNqG5cGihin6BCbiZay11rU", - "LVeXnSCw2ci7qq2EGcNwjZqhQ73KrJHNJE", - "ltc1qhac8t52gdh8fzeft4ygzxn05nluwwecjrzel99", - "LP3k3DmN21xmCay3b5yReLKQKvViCnDPhi", -]; diff --git a/projects/helper/bitcoin-book/coindcx.js b/projects/helper/bitcoin-book/coindcx.js deleted file mode 100644 index 4522d9ea5ac..00000000000 --- a/projects/helper/bitcoin-book/coindcx.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = [ - '12hGEyxk4zMLquxiMiFrkvYSohsXz2D3uZ', - 'bc1qz22hegkllltcydg3pz3an6h352mjmyp7n2vhd9', - '1MzSJodjNmACPKyj9VUv9X55Pby87osLhc', - 'bc1qucl4n347qc6e48w85xdxcv86sm3an8fr250hhm', - '1F6CrpEnHEZh6gQtJ7cf1MtK7Y8GYKoP4i', - 'bc1qn2xm6agnanuyuwfcfw92el7nvt2lpsqr5s5c0w', - '17mxRZ9WeXigSwg3Cm62HxeATnuUphMxGL', - 'bc1qffg4ya27430vv5ymg2lhf4mj7tvtc3ur5qyyq3', - '1JV3umtGC6H6tFUVoFyV5KwbJDscUwrtX7', - 'bc1qhlyrdhfqry06nj902p9dxdftm4pxkhdqeum8y8', - '1KXxS6QnzpB8mSLm5kmXJXqvZF7wVvQDCw', - 'bc1qedxsgzuj8ga644gwlqw4nw7f3xncq4g2rskmzu', - '12T8i8tpeczk5JGf8ppZf1w6SFBRwEa9y4', - 'bc1qpl5kqjkugyncr72a4fhxvm0360ehfdl27e00ja', - '1PRwacjHVksLNTkSYNkiWkRgTm1yDSgLMG', - 'bc1q7c9ylgjsyc0yaxwm84jjh6avfajzfe7dhk6e0e', - '1477uXZ1NfUaaZZdnztQ7h8ftGRpuWQPfA', - 'bc1qygg2x02cfy0e6r7798v4qrcjjkzm8tl5t0xkwf', - 'bc1qljm7vwdgdy6ca97stsyjyl3zdjtkdsdm8vnh8f', - 'bc1qqhwh3tcg5duwq7hdlnlr5n2tg2uq755cwmkjqn', - 'bc1qqe4g7sjxzk90nsgj0mwufwcdtd7kufg7k32xch', - '1avi3SkWKGLis8dGCP9JUnFfVeheP8wkt', - 'bc1qmulc2ju4kykj24xuw0fu73h9h3usa897xhaucz', // - '3Dm2TL1pt1VzeBCq9jgvQG81QPv19PyReh' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/coinex.js b/projects/helper/bitcoin-book/coinex.js deleted file mode 100644 index 9acf95e7852..00000000000 --- a/projects/helper/bitcoin-book/coinex.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = [ - /* all empty addresses - '189myj1KAbiCWfqWhT6Td4noANKBuag3QN', - '1C2Pxf3ghtKyM4mKC3xSLKrN33YcKnKF2a', - '1JZw5HYSoAEfvGGVQ4U2JihZaQkjcXrr2i', - '16M3n9p6CLATDnpsJNTjCn22AaxzErxg5V', - '15cYMF4jcRwpcbjENMdMizCzAmd7Pc51So', - '18JQXgQ4GjZAuYCy1fNAFGHVEAWUui2q9h', - '1LGbUy11yMaNC9s73q7vEad8JTZyczCima', - '1DGXwH2gzBYM6UrVE57DaaQ3hJJm3s32YK', - '152GodsXfK5kYMdH4spzYD3Ttm1u2oNipN', - '18oxoXCq5mah3GjLjGCS3BRTQxxN7738rL', - '1H21g458T25SnAzvFDJiBrcyhfwHiCH5YF', - '14BhR6aE8Fkt2c8E1m2ydx76fBz5kpt62K', - '1Ef59jZsv87uAcwBZdDhNxiSbCceQ6bFTA', - '14ukjw4r3UFC5A8yvG7yt2GdvLUHEWtskS', - '141TDnaiLEW1vE5xd42Dw8HEhDCA2qrZTr', - '1Ew9SPwBHY8GjHd3uBxhtGcvVmyBN7PHcw', - '1LYrQCjUf54vf9G4qwFpJQ9RCyL2DprPqQ', - */ - 'bc1qqz623jyqdsh2w5y5kdmzk2ws6mzr2mt2etv5gx', - '31nXEifPqiUL3hqfTP5epd93s3ShNLnWL4' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/coinsquare.js b/projects/helper/bitcoin-book/coinsquare.js deleted file mode 100644 index 1452f7562d4..00000000000 --- a/projects/helper/bitcoin-book/coinsquare.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = [ - '1P7cDFGeWm6ezez6XGXTAjvm8qcsGiMXe7', - 'bc1q0k5rpdwf7wnq3fuk7dfjqd59p3ke7ufqmlkfp4', - 'bc1qdstretw2uvhjen7hvgaya3nsjgr430x9jhqf4a', - 'bc1qez6ezccleuac4dnj5cpexz5mz3j0j3j655j6qn', - 'bc1qg6a9kpmge0fdwtrymjvq3cydfzgpcge7e05e7z', - 'bc1qg8fywv20ztsp0edtf53zpsnxeu5cqxrmdwmtjd', - 'bc1qm5mqpgtt2ufucfdvhu5xcdgs3vzehwu62wsyqy', - 'bc1qmkkejzrq7ayfjpy7w8gmkhd3uwcy7nryr5apch', - 'bc1qsjc50kf72r4q44ac28v3vrukaxjg4w30rh0cmm', - 'bc1qyz9mssutu8xxcgjvsucz38qvxt7hxwtnm5eh8k', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/coinw.js b/projects/helper/bitcoin-book/coinw.js deleted file mode 100644 index c81128c1b94..00000000000 --- a/projects/helper/bitcoin-book/coinw.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - '14Z9KSmCo1UjvBiXj2j9er35GmGmaFxsmE', - '1KYBKqRjGbRynSiyoiHndULssXrEeWhvU8', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/crypto-com.js b/projects/helper/bitcoin-book/crypto-com.js deleted file mode 100644 index f092053a2a7..00000000000 --- a/projects/helper/bitcoin-book/crypto-com.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = [ - 'bc1qpy4jwethqenp4r7hqls660wy8287vw0my32lmy', - '3LhhDLBVWBZChNQv8Dn4nDKFnCyojG1FqN', - '3QsGsAXQ4rqRNvh5pEW55hf3F9PEyb7rVq', - 'bc1qr4dl5wa7kl8yu792dceg9z5knl2gkn220lk7a9', - 'bc1q4c8n5t00jmj8temxdgcc3t32nkg2wjwz24lywv', - '14m3sd9HCCFJW4LymahJCKMabAxTK4DAqW', - 'bc1qjqy709gqpse60hdsm2d2v0dzzu7yp5dej7fdrpl2x3taccvujq4s0vzsyd', - 'bc1qcdqj2smprre85c78d942wx5tauw5n7uw92r7wr' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/cygnus.js b/projects/helper/bitcoin-book/cygnus.js deleted file mode 100644 index 5efcc35ce66..00000000000 --- a/projects/helper/bitcoin-book/cygnus.js +++ /dev/null @@ -1,24 +0,0 @@ -// https://drive.google.com/drive/folders/17sUsAkpTq_1TPw2uNSPEg1rIeqMN-zn4 -// https://wiki.cygnus.finance/whitepaper/cygnus-omnichain-liquidity-validation-system-lvs/cygnus-lvs-integration/clbtc/security-transparency-and-risk-management - -module.exports = [ - 'bc1q54s2l5ky92fdsu0xscps0044je9nx2sh2mqss8', - 'bc1qvelcezj27u3m8s0l0a5rql56manc4t839hxzzv', - 'bc1qhze05vp40ywwpgw6sd7d3mgvc03hxa6l896k0z', - 'bc1q45n4al3rhlg5m3k54ue0nu9w4apaw9eyndtd3k', - 'bc1qmrvc9cqwgrez8vn4lyql696vsppymyhxat4eeg', - 'bc1qatjrpuhf4u7956yvpnt9txfvmtf73ee92hc3d4', - 'bc1qgv692f4xs0q0uxeaj7pfldw6a0tv39tltfl8yn', - 'bc1qs96nx6qunenlwcqs8yftd0ktqess85pu9dgq7n', - 'bc1qds987h4jvcxz6f6fvafjceme2gnn9ymejvxckj', - 'bc1que7nlpgp2ht9tufazsr336gx7manvwrllmq6my', - 'bc1qdrs2j8dklgrjtwve57p2aswzqspcwg0s03gja4', - 'bc1qqsydcxgylkddccq0m42ahun7gghwhtpxekmfa9', - 'bc1qldwk72rfel4022puypzp6a65vat2g7esncmqul', - 'bc1qh5f8dujvxx7h443j6myv9l0jaguw2n52nplxwa', - 'bc1qve59z5wkhg60wfmwyq23vxtyy2ytpk626x78nv', - 'bc1qhrswrm3kx996404yxudde8x353klfsmqet3dx4', - 'bc1qdu45tr94607y4935y8cgqgaa6w69am4qk32pqa', - 'bc1qcjmn5knawm8kf0s74488mz0psa7yrrvz5xzhq7', - 'bc1qkyekxghyh99kky9wt3ch2hn2uley2ld5ee0ng4', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/deribit.js b/projects/helper/bitcoin-book/deribit.js deleted file mode 100644 index ebc32591705..00000000000 --- a/projects/helper/bitcoin-book/deribit.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = [ - // from https://insights.deribit.com/exchange-updates/proof-of-reserves-deribit/ - "bc1qa3phj5uhnuauk6r62cku6r6fl9rawqx4n6d690", - "bc1qtq5zfllw9fs9w6stnfgalf9v59fgrcxxyawuvm", - "1MDq7zyLw6oKichbFiDDZ3aaK59byc6CT8", - "1932eKraQ3Ad9MeNBHb14WFQbNrLaKeEpT", - "13JJ1nxDeX5fMsDeyGHiLoK8rF2ayGq1cX", - "1MdrdcEzfiJdvs6eVSwUx6bWboPX8if5U3", - "35WHp4Hid61peyH4tuhNunwRj2gtNB41Lo", - "34ZHV8dd6uucEUABUydWpKi6F4qKQntEUf", - // added on the 26/06/2024 - "bc1qzwhw94uldd3c8736lsxrda6t6x56030f8zk8nr", - "bc1qrmuxak470z7zch5f3gz05dc6h4ngwqdq4wx80w", - "bc1qf6lm99tp5p27hsmyskve236nsv32lnfwt4h8wk", - "14HeA1YRUiJGb95HVpVTBuavMUBYGk6y7R", - "bc1q78c4tk53hx28ladm3j7cn8x7yw6gnh38ur8j47", - "bc1q2qkuk5hr6yjw2jshtrfqw29tyy3x62rqk3ep6x", - "bc1qdk5y6mztxustg20zqgtfn88cec3f9u8la7dk4f", - "bc1qws342rlkhszh58rtn35zrw7w076puz83gkcufy", -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/elSalvador.js b/projects/helper/bitcoin-book/elSalvador.js deleted file mode 100644 index ba5ef8fda8a..00000000000 --- a/projects/helper/bitcoin-book/elSalvador.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - '32ixEdVJWo3kmvJGMTZq5jAQVZZeuwnqzo' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/esbtc.js b/projects/helper/bitcoin-book/esbtc.js deleted file mode 100644 index ddbe2976e25..00000000000 --- a/projects/helper/bitcoin-book/esbtc.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = [ - "bc1qyyd3hmvtlfe7cu3z5gl8r6khkfsjclaure6pqp", - "bc1qn6fmj0k4vvsg53ul7mna4uewl3dhf28n29fax9", - "bc1qyxm20t8cu5j3f9nztulgj3dj4w3w50jw452paf", - "19cDEYKy121uMe5aAmxkU7F3Szc4nTJofZ", - "bc1pcrd8gxsawgkuvvugtj60h68l7d2s7jawmvx35agjtnqht7vxaqgswfcuz6", - "3PhznGRAyDhRmGMuCeeDVnoBdheAVPgZRE", - "bc1q82lh692mdaqk20v7yvjvqu37kqr0p4kkjts8u7", - "bc1p8sxvyaggl7jncn7wepee7dhnrqd6cdm0s4lfj678zcv78vxanvtsep59pp", - "bc1qng7d8tmppa93udc7vzycf5rgz4v7wqvyq9ejnu", - "bc1q47f9adeejzem4v3l4ene9y8v3tdxdc8wgw86d5", - "bc1qdm8nyz9t4944lxeq9zp2dzj5vt0hydl32rffqy", - "bc1qrd4j46ul0mg0ct90edraq2ngl7v554xwhgssasprlw4clsqyezwslm6xme", - "bc1qzuy2x4zdc5a355ffwwl6m008rp572t649dey2g", - "bc1qukffcxw37j6fllq3ahqn85m3gjr6mqy6mswerf", - "bc1p2xx7jtrg32ww2wjqrz809yvq562gtcw8g93qeg0yw4gfkgqagjhsds06rq", - "bc1qcjfm6r689vldvrg0l2a2jq4n3kq9wnhxylvy58", - "bc1q42uxazz20um9p994jrn5ep8sxs9zzl85fl5lkn", - "bc1p5x4cngw6a3k7dgknc9cqt9u49yacf5u9jju00237eflv69auxezqzlk39a", - "bc1q7vy874473j2a367cy29e6vyzlf7nclrudjrefy", - "bc1qqec97tjj5k49pkcl2ge9kdcs5md0332fpp05q3", - "bc1pd8uz60psy486dxl4rmqznrcgg422ql43qthu2qd9h8pdnwwk4yns6j2h0g", - "1M3Y4dgeg8zVdQ41BXTaWyFUUmc2e6fF2b", - "13r8PhQ9Gk1KavpJzjc8ELjEw3kBQKLRHq", - "1NVuvqYpZPnWSd5Fvx15dq6u39ongzxLL2", - "1KVpuCfhftkzJ67ZUegaMuaYey7qni7pPj", - "1QJt83Cb6S6Tm5chFwyn46XSBGYbS8unXB", - "39C7fxSzEACPjM78Z7xdPxhf7mKxJwvfMJ", - "35KHekskDvZY9uSrBKkfvq9pa8njiNYrja", - "1AfCc4F9c4VTYSE31PUe2kUEKs6ZxiDjxm", - "bc1qxpae7fyhqj3886fn7scnn3ln3tp5qqll2g6yqq", - "bc1q773em34zkr6ccvn5euam29tg2ct056ychpayrh", - "bc1qf9nwqp05m85fdlt60c95mf8txtw5vk029ahela", - "bc1qvz02c57tfxnpgxk029sz0cf6xmp0e94w53xdll" -] diff --git a/projects/helper/bitcoin-book/exmo.js b/projects/helper/bitcoin-book/exmo.js deleted file mode 100644 index 4980d3916ad..00000000000 --- a/projects/helper/bitcoin-book/exmo.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - 'bc1qa6ztklpcshk048mv5f2f877rudmyv2jaq05n5k', - 'bc1qgq64fzjjk4rsh008rdq542hve5vmz2uaep7lmx' - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/fastex.js b/projects/helper/bitcoin-book/fastex.js deleted file mode 100644 index bcd87353da3..00000000000 --- a/projects/helper/bitcoin-book/fastex.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - 'bc1qs7yen7ljpvyw7vn58ql6zfaddqf4rcjalsgmt5' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/fbi-dprk.js b/projects/helper/bitcoin-book/fbi-dprk.js deleted file mode 100644 index f0913effe25..00000000000 --- a/projects/helper/bitcoin-book/fbi-dprk.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = [ - //source https://www.fbi.gov/news/press-releases/fbi-identifies-cryptocurrency-funds-stolen-by-dprk - "3LU8wRu4ZnXP4UM8Yo6kkTiGHM9BubgyiG", - "39idqitN9tYNmq3wYanwg3MitFB5TZCjWu", - "3AAUBbKJorvNhEUFhKnep9YTwmZECxE4Nk", - "3PjNaSeP8GzLjGeu51JR19Q2Lu8W2Te9oc", - "3NbdrezMzAVVfXv5MTQJn4hWqKhYCTCJoB", - "34VXKa5upLWVYMXmgid6bFM4BaQXHxSUoL" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/fetchers.js b/projects/helper/bitcoin-book/fetchers.js deleted file mode 100644 index aea5fd32fd8..00000000000 --- a/projects/helper/bitcoin-book/fetchers.js +++ /dev/null @@ -1,236 +0,0 @@ -const { getConfig, getCache, setCache, } = require('../cache') -const axios = require('axios'); -const { getEnv } = require('../env') -const { get } = require('../http') -const sdk = require('@defillama/sdk') - -const abi = { getQualifiedUserInfo: 'function getQualifiedUserInfo(address _user) view returns ((bool locked, string depositAddress, string withdrawalAddress) info)' } - -module.exports = { - btcfi_cdp: async () => { - const target = "0x0000000000000000000000000000000000000100"; - const api = new sdk.ChainApi({ chain: 'bfc' }) - const round = await api.call({ abi: 'uint32:current_round', target }) - - const utxoVault = await api.call({ abi: 'function registration_info(address target, uint32 pool_round) view returns (address, string, string, address[], bytes[])', target, params: [target, round] }) - const vault = await api.call({ abi: 'function vault_addresses(uint32 pool_round) view returns (string[])', target, params: round }); - vault.push(utxoVault[2]) - - return vault - }, - bedrock: async () => { - const API_URL = 'https://raw.githubusercontent.com/Bedrock-Technology/uniBTC/refs/heads/main/data/tvl/reserve_address.json' - const { btc } = await getConfig('bedrock.btc_address', API_URL) - return btc - }, - exsatCreditStaking: async () => { - const { data: response } = await axios.post('https://rpc-us.exsat.network/v1/chain/get_table_rows', { - json: true, - code: "custody.xsat", - scope: "custody.xsat", - table: "custodies", - limit: "100", - show_payer: true - }) - return response.rows.map(row => row.data.btc_address); - }, - fbtc: async () => { - const api = new sdk.ChainApi({ chain: 'ethereum' }) - const staticAddresses = await getConfig('fbtc', undefined, { - fetcher: async () => { - const token = getEnv('FBTC_ACCESS_TOKEN') - const { result } = await get('https://fbtc.phalcon.blocksec.com/api/v1/extension/fbtc-reserved-addr', { - headers: { - 'access-token': token - } - }) - return result.map(r => r.address) - } - }) - - const users = await api.call({ abi: 'address[]:getQualifiedUsers', target: '0xbee335BB44e75C4794a0b9B54E8027b111395943' }) - const userInfos = await api.multiCall({ abi: abi.getQualifiedUserInfo, target: '0xbee335BB44e75C4794a0b9B54E8027b111395943', calls: users }) - userInfos.forEach(i => staticAddresses.push(i.depositAddress)) - return Array.from(new Set(staticAddresses)) - }, - - b14g: async () => { - - return getConfig('b14g/bit-addresses', undefined, { - fetcher: async () => { - const btcTxHashLockApi = 'https://api.b14g.xyz/restake/marketplace/defillama/btc-tx-hash' - const { data: { result } } = await get(btcTxHashLockApi) - const hashes = result.map(r => r.txHash) - const hashMap = await getCache('b14g/hash-map', 'core',) ?? {} - for (const hash of hashes) { - if (hashMap[hash]) continue; - const addresses = [] - const tx = await get(`https://mempool.space/api/tx/${reserveBytes(hash.slice(2))}`) - let vinAddress = tx.vin.map(el => el.prevout.scriptpubkey_address); - tx.vout.forEach(el => { - if (el.scriptpubkey_type !== "op_return" && !vinAddress.includes(el.scriptpubkey_address)) { - addresses.push(el.scriptpubkey_address) - } - }) - hashMap[hash] = addresses - } - await setCache('b14g/hash-map', 'core', hashMap) - return [...new Set(Object.values(hashMap).flat())] - } - }) - - function reserveBytes(txHashTemp) { - let txHash = '' - if (txHashTemp.length % 2 === 1) { - txHashTemp = '0' + txHashTemp - } - txHashTemp = txHashTemp.split('').reverse().join('') - for (let i = 0; i < txHashTemp.length - 1; i += 2) { - txHash += txHashTemp[i + 1] + txHashTemp[i] - } - return txHash - } - }, - coffernetwork: async () => { - - return getConfig('coffer-network-v0.1', undefined, { - fetcher: async () => { - const { data: { addresses, } } = await get('https://aapi.coffer.network/v1/stats/addresses?network=mainnet') - return addresses - } - }) - }, - - lombard: async () => { - const API_URL = 'https://mainnet.prod.lombard.finance/api/v1/addresses' - const BATCH_SIZE = 1000 - const blacklisted = new Set([ // blacklisted addresses , using the corresponding amount in LFBTC here 0x838f0c257ab27856ee9be57f776b186140834b58 , token : 0xfe4ecd930a1282325aef8e946f17c0e25744de45 - 'bc1phz9f27wshtset37f96xl266w9zaq0wdmls749qad2rj3zz4zc8psmgts3w', - 'bc1pkzlqekjjylsrt9eh57pcd8ynz5w4jv6k3wlj39x8y59fhm4pjdxs9xvs46', - 'bc1pntj998mddtc4ketfvh8jhvn4tgrvv5870hsfpwhttxwtgv4mrvmqmr6s3f', - 'bc1pt3rf4ml95sfc8svqjtl8d6h5hjkej60ruvtfry44g35uchjt2seqxx7tfm', - 'bc1pwffr0etqcg3awczl6lfs4dne987y64rgnnael577yj02jvuvnrssqyxdsj', - ]) - - return getConfig('lombard', undefined, { - fetcher: async () => { - let allAddresses = []; - let offset = 0; - let batchNumber = 1; - let hasMore = true; - - while (hasMore) { - const { addresses: data, has_more } = await get(`${API_URL}?limit=${BATCH_SIZE}&offset=${offset}`); - const newAddresses = data.map(a => a.btc_address); - - allAddresses.push(...newAddresses); - sdk.log(`Batch ${batchNumber} completed: ${newAddresses.length} addresses`); - - hasMore = has_more; - offset += BATCH_SIZE; - batchNumber++; - } - - return allAddresses.filter(i => !blacklisted.has(i)) - } - }) - }, - solvBTCLST: async () => { - const API_URL = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/bitcoin.json' - return Object.values(await getConfig('solv-protocol/solv-btc-lst', API_URL)).flat(); - }, - pumpBTC: async () => { - const API_URL = 'https://dashboard.pumpbtc.xyz/api/dashboard/asset/tokenowners' - return getConfig('pumpbtc/v2', undefined, { - fetcher: async () => { - const { data } = await axios.get(API_URL) - return data.data.bitcoin.owners - } - }) - }, - tBTC: async () => { - // return [ - // "bc1qr5laxd2pyptae847tt32qddujtws305s8ej278", - // "bc1qwetfspn7fp4dgsh44y4dzwx5y8e3tlc7v0mhf5", - // "bc1qprkyx79jxvpe69mewfmlat8ydavuth95ppec5m", - // "bc1q63r464arzp9709tqc2z3hkmcna0lrmzv7sekl5", - // "bc1q0w68p8gh5egxjjd9edlyqkncns7veexcurqut9", - // "bc1qlgtalpnsfqsc6wxdm6uvjjdd9ujgq0a8x4yslh", - // "bc1qpdx8zrkjsjd8mjhaznnz0atz6v9f2upda9xgyn", - // "bc1qtd8mplu4n7evnmzqtrtt7ljs0rl00th42kcgj5", - // "bc1qyghykrhmkk5ztn4l5pjaqywpsxkg6e9rdm22mt", - // "bc1q04phgdeyx7nneh2ux4ynxhew4vwqfduk3wt6hc" - // ] - const API_URL = 'https://api.tbtcscan.com/tbtc/proof-of-funds' - const { wallets } = await getConfig('tbtc/wallets', API_URL) - return wallets.filter(i => +i.walletBitcoinBalance > 0).map(wallet => wallet.walletBitcoinAddress) - }, - exsatBridge: async () => { - const API_URL = 'https://raw.githubusercontent.com/exsat-network/exsat-defillama/refs/heads/main/bridge-bitcoin.json' - const API2_URL = 'https://rpc-us.exsat.network/v1/chain/get_table_rows' - - const config = await getConfig('exsat', API_URL) - const custody_addresses = config['custody_addresses']; - const custody_ids = config['custody_ids']; - const owners = [...custody_addresses]; - - for (let custody_id of custody_ids) { - let lower_bound = null; - let hasMore = true; - - while (hasMore) { - const { data: response } = await axios.post(API2_URL, { - "json": true, - "code": "brdgmng.xsat", - "scope": custody_id, - "table": "addrmappings", - "lower_bound": lower_bound, - "upper_bound": null, - "index_position": 1, - "key_type": "", - "limit": "100", - "reverse": false, - "show_payer": true - }); - - const addrs = response.rows.map(row => row.data.btc_address); - owners.push(...addrs); - - hasMore = response.more; - lower_bound = response.next_key; - } - } - return owners - }, - dlcLink: async () => { - const config = await getConfig('dlc-link', 'https://api.dlc.link/v1/ibtc/proof-of-reserve') - const addresses = [] - config.chains.forEach(c => { - addresses.push(...(c.vaultAddresses ?? [])) - }) - return addresses - }, - solvBTC: async () => { - const API_URL = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solvbtc.json' - const res = await getConfig('solv-protocol/solv-btc-non-lst', API_URL) - return res.bitcoin - }, - - btnx: async () => { - const staticAddresses = await getConfig('btnx', undefined, { - fetcher: async () => { - const { data } = await axios.get('https://sidecar.botanixlabs.com/api/addressList', { - }) - return data.map(address => address) - } - }) - - return Array.from(new Set(staticAddresses)) - }, - zeusZBTC: async () => { - const API_URL = 'https://indexer.zeuslayer.io/api/v2/chainlink/proof-of-reserves' - const data = await getConfig('zeus/zbtc', API_URL) - const list = data.result.map(item => item.address) - return list - }, -} \ No newline at end of file diff --git a/projects/helper/bitcoin-book/fire.js b/projects/helper/bitcoin-book/fire.js deleted file mode 100644 index bf91f24ca24..00000000000 --- a/projects/helper/bitcoin-book/fire.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = [ - 'bc1q36c0rp4ydl6uvvguhw9nr7njm49addzkgftqev', - 'bc1q3z0khuld6nd7esv46nxj9ketteqw9qz86peyeh', - 'bc1q4hz59t7v0uxujuyrhp9679uppur7ke9u3vshvd', - 'bc1qdlrh7ycyqxe62vk5m70y353vmep9ullxx5j9ar', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/flipster.js b/projects/helper/bitcoin-book/flipster.js deleted file mode 100644 index 7ec436017ad..00000000000 --- a/projects/helper/bitcoin-book/flipster.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "31iAUikiV7yKEYBzbA1iHPcanHNsLBFe8C" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/garden.js b/projects/helper/bitcoin-book/garden.js deleted file mode 100644 index 87357870209..00000000000 --- a/projects/helper/bitcoin-book/garden.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "bc1qhww67feqfdf6xasjat88x5stqa6vzx0c6fgtnj", - "bc1qs0vw6ahdv2xc9a5jkgqdpawmmc6eq6hqr50e7e", - "bc1qj3h9wazx6dh3lkm6u8cka8krdm36tujtgw0uv9" // current cobi -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/gate-io.js b/projects/helper/bitcoin-book/gate-io.js deleted file mode 100644 index fa9707bcecf..00000000000 --- a/projects/helper/bitcoin-book/gate-io.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = [ - '14kmvhQrWrNEHbrSKBySj4qHGjemDtS3SF', - '162bzZT2hJfv5Gm3ZmWfWfHJjCtMD6rHhw', - '1EkkGXR7dTbZbrKFKoe6YEP4gj4GzMeKvw', - '1G47mSr3oANXMafVrR8UC4pzV7FEAzo3r9', - '1HpED69tpKSaEaWpY3Udt1DtcVcuCUoh2Y', - '3HroDXv8hmzKRtaSfBffRgedKpru8fgy6M', - '1ECeVF6wfbiihCRrrpRnkbwrWsZfYmixMG', - '1FhncfokiSDagazXbuVqKQ6ew4oyDmAzhG', - '1FLKsCiEsABS7LysfDA8R181TQ6eLjoxPv', - '1L1SN3BxXaXEAzzGcWqjF9svxmN6F2mBoR', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/hashkey-exchange.js b/projects/helper/bitcoin-book/hashkey-exchange.js deleted file mode 100644 index c0d02875855..00000000000 --- a/projects/helper/bitcoin-book/hashkey-exchange.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = [ - "bc1qqe394jlqq86muq23d4vrnhzzvcv8jnepgt8lx7", - "bc1qvf35autwy0knhh3sj7suupmw3w94r4r9c2ry5z", // 2025-03-07 - "1NfJSiqBw4fb74KgVQrPsk5W5aqitAD1Xv", - // "bc1qlrawqecuwgpzzwh04pkhtfsqsk33kald22ds3c", // bosera funds https://www.bosera.com/english/index.html - "18oxobhCNKnHjb7nEFDmPdXbCZthFWezrm", - "bc1q9d5lq9psmkx9rtgewjgez7csg45faak2cccew8", // 2025-05-26 -] diff --git a/projects/helper/bitcoin-book/hashkey.js b/projects/helper/bitcoin-book/hashkey.js deleted file mode 100644 index 9dbb016d3ba..00000000000 --- a/projects/helper/bitcoin-book/hashkey.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - "bc1qyvppkaa74d9jvtz664a6uxmj09hf0eyg3uhx4h", - "1DywJMqHHMWuP7xyfkRqJZCEe7GdEKFRcp" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/hibt.js b/projects/helper/bitcoin-book/hibt.js deleted file mode 100644 index 24ca126ecd3..00000000000 --- a/projects/helper/bitcoin-book/hibt.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1qpxntlx09kqvpwl7vmjw9f28yvytdqkdx8xh63w" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/hope-money.js b/projects/helper/bitcoin-book/hope-money.js deleted file mode 100644 index 3bc94a71f0a..00000000000 --- a/projects/helper/bitcoin-book/hope-money.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - '15PYHP5ZW29B3o19jFNKz6RyRdHCtzJj5H', - '16BLcAyJR8unm8RpQT9PGTwh5uPpZEf2ut', - '3JoCB8ifwhL4YKo9rCYMgVGbqxBqnpQpdS', - '179fgM9yyTHj4ZCTfAcGhUFiQMXuPx5xrF', - '1LaC3Xt8RZWYH1pjcvXxrWxLvXe7iR3ybe' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/hotbit.js b/projects/helper/bitcoin-book/hotbit.js deleted file mode 100644 index 2ac17bafc87..00000000000 --- a/projects/helper/bitcoin-book/hotbit.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "1MiFZMJkFMhMrubjjo6f5oEhh7XgSwXWgp" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/hotcoin.js b/projects/helper/bitcoin-book/hotcoin.js deleted file mode 100644 index 2b33d68befb..00000000000 --- a/projects/helper/bitcoin-book/hotcoin.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "1DTxysZCJYZuHse8cYjZLdgciUAAsX23fy" - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/huobi.js b/projects/helper/bitcoin-book/huobi.js deleted file mode 100644 index ee1188524dc..00000000000 --- a/projects/helper/bitcoin-book/huobi.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = [ - "12qTdZHx6f77aQ74CPCZGSY47VaRwYjVD8", - "143gLvWYUojXaWZRrxquRKpVNTkhmr415B", - // '1KVpuCfhftkzJ67ZUegaMuaYey7qni7pPj', this wallet is backing USDD acording here https://prnt.sc/i3cFaak7H9Y8. For that reason, it should not included as HTX. - //These 3 addresses has 48,555 #Bitcoin. This is only less than 3% of the total high value assets we have, including btc, usd, stablecoins, T-bills.. According to Justin Sun https://twitter.com/justinsuntron/status/1590311559242612743 - "14XKsv8tT6tt8P8mfDQZgNF8wtN5erNu5D", - "1LXzGrDQqKqVBqxfGDUyhC6rTRBN5s8Sbj", - "1HckjUpRGcrrRAtFaaCAUaGjsPx9oYmLaZ", // add on 08/08/2023 (we defillama) - "1L15W6b9vkxV81xW5HDtmMBycrdiettHEL", // add on 08/08/2023 (we defillama) - "14o5ywJJmLPJe8egNo7a5fSdtEgarkus33", // add on 08/08/2023 (we defillama) - "1BuiWj9wPbQwNY97xU53LRPhzqNQccSquM", // add on 08/08/2023 (we defillama) - "1AQLXAB6aXSVbRMjbhSBudLf1kcsbWSEjg", // add on 23/02/2024 (we defillama) - "1ENWYLQZJRAZGtwBmoWrhmTtDUtJ5LseVj", -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/imbtc.js b/projects/helper/bitcoin-book/imbtc.js deleted file mode 100644 index e92993a2c36..00000000000 --- a/projects/helper/bitcoin-book/imbtc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - '3JMjHDTJjKPnrvS7DycPAgYcA6HrHRk8UG', '3GH4EhMi1MG8rxSiAWqfoiUCMLaWPTCxuy' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/index.js b/projects/helper/bitcoin-book/index.js deleted file mode 100644 index b8b7bcc7423..00000000000 --- a/projects/helper/bitcoin-book/index.js +++ /dev/null @@ -1,273 +0,0 @@ -const ainn = require('./ainn-layer2.js') -const allo = require('./allo.js') -const avalanche = require('./avalanche-btc.js') -const fetchers = require('./fetchers.js') -const bevm = require('./bevm.js') -const binance = require('./binance.js') -const binance2 = require('./binance-btc.js') -const bitstable = require('./bitstable-finance.js') -const boringdao = require('./boringdao.js') -const bsquaredBTC = require('./bsquaredBTC.js') -const bsquaredBRC20 = require('./bsquaredBRC20.js') -const elSalvador = require('./elSalvador.js') -const garden = require('./garden.js') -const hopeMoney = require('./hope-money.js') -const krakenBTC = require('./kraken-btc.js') -const lorenzo = require('./lorenzo.js') -const lorenzo2 = require('./lorenzo-enzoBTC.js') -const merlin = require('./merlin.js') -const multibit = require('./multibit.js') -const obelisk = require('./obelisk.js') -const roup = require('./roup.js') -const tronBTC = require('./tron-btc.js') -const wbtc = require('./wbtc.js') -const xlink = require('./xlink.js') -const xlinkLST = require('./xlinkLST.js') -const xrgb = require('./xrgb.js') -const imbtc = require('./imbtc.js') -const twentyOneCo = require('./21Co.js') -const avalonCedefi = require('./avalon-cedefi.js') -const pstakeBTC = require('./pstake-btc.js') -const biconomy = require('./biconomy-cex.js') -const bigone = require('./bigone.js') -const bingCex = require('./bing-cex.js') -const bitfinex = require('./bitfinex.js') -const bitget = require('./bitget.js') -const bitmake = require('./bitmake.js') -const bitmark = require('./bitmark.js') -const bitmex = require('./bitmex.js') -const bitunixCex = require('./bitunix-cex.js') -const bitvenus = require('./bitvenus.js') -const blofinCex = require('./blofin-cex.js') -const btse = require('./btse.js') -const bybit = require('./bybit.js') -const cakeDefi = require('./cake-defi.js') -const coindcx = require('./coindcx.js') -const coinex = require('./coinex.js') -const coinsquare = require('./coinsquare.js') -const coinw = require('./coinw.js') -const cryptoCom = require('./crypto-com.js') -const deribit = require('./deribit.js') -const fbiDprk = require('./fbi-dprk.js') -const mtGoxEntities = require('./mt-gox-entities.js') -const silkroadFBIEntities = require('./silkroad-fbifunds-entities.js') -const fastex = require('./fastex.js') -const fire = require('./fire.js') -const flipster = require('./flipster.js') -const gateIo = require('./gate-io.js') -const hashkey = require('./hashkey.js') -const hashkeyExchange = require('./hashkey-exchange.js') -const hibt = require('./hibt.js') -const hotbit = require('./hotbit.js') -const huobi = require('./huobi.js') -const kleverExchange = require('./klever-exchange.js') -const korbit = require('./korbit.js') -const kraken = require('./kraken.js') -const kucoin = require('./kucoin.js') -const latoken = require('./latoken.js') -const maskex = require('./maskex.js') -const mento = require('./mento.js') -const mexcCex = require('./mexc-cex.js') -const mtGox = require('./mt-gox.js') -const nbx = require('./nbx.js') -const nonkyc = require('./nonkyc.js') -const okcoin = require('./okcoin.js') -const okex = require('./okex.js') -const phemex = require('./phemex.js') -const pionexCex = require('./pionex-cex.js') -const probit = require('./probit.js') -const robinhood = require('./robinhood.js') -const rosenBridge = require('./rosen-bridge.js') -const rskBridge = require('./rsk-bridge.js') -const silkroad = require('./silkroad.js') -const swissborg = require('./swissborg.js') -const toobit = require('./toobit.js') -const indiaCovid = require('./india-covid.js') -const wooCEX = require('./woo-cex.js') -const bitlayerBridge = require('./bitlayer-bridge.js') -const arkhamExchange = require('./arkham-exchange.js') -const chakra = require('./chakra.js') -const nerveNetworkBridge = require('./nervenetworkbridge.js') -const nexusbtc = require('./nexusbtc') -const tapbit = require('./tapbit-cex.js') -const jbtc = require('./jbtc') -const bitkub = require('./bitkub-cex.js') -const coin8 = require('./coin8.js') -const bitrue = require('./bitrue-cex.js') -const cygnus = require('./cygnus.js') -const unitbtc = require('./unit-btc.js') -const backpack = require('./backpack.js') -const coinbasebtc = require('./coinbase-btc.js') -const coinbaseltc = require('./coinbase-ltc.js') -const prosper = require('./prosper.js') -const hotcoin = require('./hotcoin.js') -const orangex = require('./orangex.js') -const exmo = require('./exmo.js') -const esbtc = require('./esbtc.js') -const bimaCdp = require('./bima-cdp.js') -const tzbtc = require('./tezos-btc.js') -const tothemoon = require('./tothemoon.js') -const indodax = require('./indodax.js') -const river = require('./river.js') -const xbtc = require('./okx-xbtc.js') -const leadbtc = require('./leadbtc.js') -const bitgetBtc = require('./bitget-bgBTC.js') -const magicEden = require('./magic-eden.js') - -const p2pb2b = ['39BFtTzZjj6o2s7eewefFQxqM4617VmhEK'] -const teleswap = [ - '3CAQAw7m95axbY761Xq8d9DADhjNaX9b8o', // POLYGON_LOCKER - '3KLdeu9maZAfccm3TeRWEmUMuw2e8SLo4v', // BNB_LOCKER - '3E2hwnq5BsmP1ea6JUhjdKZjh2wy4NuQ8T', // BSQUARED_LOCKER - '31uHNFfbejkbUD2B26o2CARfU1ALJ6x6Ag', // BOB_LOCKER - '3LNsey3ceG9ZHkQ7bcfAjwnew7KVujHt29', // BRC20_LOCKER -] - -const ssiProtocol = [ - '1BH4rZH7ptWyjim6fLJDp9t8Jp2DgXiBDM' -] - -const bitomato = [ - 'bc1qgmtx3caf8rlxmzw703ga2sljv3rkkj39e4ysk9', -] - -const lbank = [ - '1MZwhQkkt9wy8Mwm4rx5W3AYiDCJLasffn', -] - -const stacksSBTC = [ - // https://docs.stacks.co/concepts/sbtc/clarity-contracts/sbtc-deposit - 'bc1pl033nz4lj7u7wz3l2k2ew3f7af4sdja8r25ernl00thflwempayswr5hvc', - 'bc1prcs82tvrz70jk8u79uekwdfjhd0qhs2mva6e526arycu7fu25zsqhyztuy', -] - -const magpie = [ - '1FoGLbVfpN6e35J45vXSwqsTSajcSxXcYF', - 'bc1ppgxcpqq7vm5ckl3unryndeqheut8lanjtpng9jwxjdv6m53w9wuqx4fqy8' -] - -module.exports = { - ...fetchers, - hemiBTC: ['16NuSCxDVCAXbKs9GRbjbHXbwGXu3tnPSo', '1GawhMSUVu3bgRiNmejbVTBjpwBygGWSqf'], - cygnus, - magpie, - stacksSBTC, - bitomato, - bitlayerBridge, - teleswap, - ssiProtocol, - ainn, - allo, - avalanche, - bevm, - bimaCdp, - binance, - binance2, - bitstable, - boringdao, - bsquaredBTC, - bsquaredBRC20, - elSalvador, - garden, - hopeMoney, - krakenBTC, - lorenzo, - lorenzo2, - merlin, - multibit, - obelisk, - roup, - tronBTC, - wbtc, - xlink, - xlinkLST, - xrgb, - imbtc, - twentyOneCo, - avalonCedefi, - pstakeBTC, - biconomy, - bigone, - bingCex, - bitfinex, - bitget, - bitgetBtc, - bitmake, - bitmark, - bitmex, - bitunixCex, - bitvenus, - blofinCex, - btse, - bybit, - cakeDefi, - coindcx, - coinex, - coinsquare, - coinw, - cryptoCom, - deribit, - fbiDprk, - mtGoxEntities, - silkroadFBIEntities, - fastex, - fire, - flipster, - gateIo, - hashkey, - hashkeyExchange, - hibt, - hotbit, - huobi, - kleverExchange, - korbit, - kraken, - kucoin, - latoken, - maskex, - mento, - mexcCex, - mtGox, - nbx, - nonkyc, - okcoin, - okex, - phemex, - pionexCex, - probit, - robinhood, - rosenBridge, - rskBridge, - silkroad, - swissborg, - toobit, - indiaCovid, - wooCEX, - p2pb2b, - arkhamExchange, - chakra, - nerveNetworkBridge, - nexusbtc, - tapbit, - jbtc, - bitkub, - coin8, - bitrue, - unitbtc, - backpack, - coinbasebtc, - coinbaseltc, - prosper, - lbank, - hotcoin, - orangex, - exmo, - esbtc, - tzbtc, - tothemoon, - indodax, - river, - xbtc, - leadbtc, - magicEden, -} diff --git a/projects/helper/bitcoin-book/india-covid.js b/projects/helper/bitcoin-book/india-covid.js deleted file mode 100644 index ec4208aeecc..00000000000 --- a/projects/helper/bitcoin-book/india-covid.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1q220k2449fau0pxu9hfn28q3w4k99ep9hwsa5fa" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/indodax.js b/projects/helper/bitcoin-book/indodax.js deleted file mode 100644 index e60c9395c3e..00000000000 --- a/projects/helper/bitcoin-book/indodax.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - "bc1q38fx9nxc0urh6dln2950j3eetedhwml0xhlfce", - "bc1qvnk8xkw9esmujpjz00hs4706j3803s9nf5z2px", - "bc1qxc0x4fvkzarw5xmazcly9j8qj7nyt30mk2f3dm", - "bc1q6jt6s62d4hkw5gc5zmzgd6556e23k2xpanedsp", - "bc1qcygfu0neqgne5ptet9ea4ktm64xh6qklvhwvef", -]; diff --git a/projects/helper/bitcoin-book/jbtc.js b/projects/helper/bitcoin-book/jbtc.js deleted file mode 100644 index bf147722d1e..00000000000 --- a/projects/helper/bitcoin-book/jbtc.js +++ /dev/null @@ -1,4 +0,0 @@ - -module.exports = [ - 'bc1qmukuv7j57umsd5tgg9fw88eqap57rzphkfckyp', -] diff --git a/projects/helper/bitcoin-book/klever-exchange.js b/projects/helper/bitcoin-book/klever-exchange.js deleted file mode 100644 index 6c2d7acf097..00000000000 --- a/projects/helper/bitcoin-book/klever-exchange.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - 'bc1qze8pn5vywzk8enqdr9ve28lyas23kurzd37027', - 'bc1qgy5zyuvsw5wnt5lrx3m62tt2pmdl69avd5vw6n', - 'bc1qk4l4u3lh7rrufsw0z6vmkln5kesf0a9q0srnkr' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/korbit.js b/projects/helper/bitcoin-book/korbit.js deleted file mode 100644 index ccdfbe18b48..00000000000 --- a/projects/helper/bitcoin-book/korbit.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = [ - '1JtAupan5MSPXxSsWFiwA79bY9LD2Ga1je', - '3E8BTrBB7jxAemyUqSnN4YFLMC22cShZJZ', - '3GoBetHTvfnaRNQbR4yy5YNUjX4d8mTQKK', - 'bc1q09j44e0xxxusj3zsan20x7tuvtumxfv9smlq27t0nwp57gxf7htqq6m9lj', - 'bc1q0uffd8egas4w87dxq998ttfl6j3jtw6k7cafce9v4mvr5qc9tvfq9czqk9', - 'bc1q33m8td986p3vcnap9zqpx3d8v8zujtkvqacsya5xfvf945vmvxzqth4h4t', - 'bc1q3yn06lfl8ayjukya52ksff0uaveurfc8lm3ftdgu8ywvwanx8lqswj7w9u', - 'bc1q4sv2fxlp6w08wkq8ywmughxkm7n75d2fmrgnmvwun6rhepyknjxqm99v4x', - 'bc1q7fww9657ts2au45wh0ed39rjze6ja93z0498z4j89pqjky266wzs0sz8ka', - 'bc1q9pnwfyd4jtkulyk4w057wsdjhykaw6fftw06k2cn2m3y7jlsfe2qvxvm8e', - 'bc1qa8may4g0yzezjyesqcq0mwggy5wwzl0yhs0a8tk9ucej5qg6ujfqscv2jq', - 'bc1qgkx4ee8ac3as5y4ddhw6uedyk9adsywdzgc0fzxv304lcrh4qs9sn96agt', - 'bc1qku6z53kuyaj9r898kj6esqnwz7wke82mwgw43vhu33ld7sx3200s2u9p9x', - 'bc1ql0p3klhr2d8z07ja3t5d5dnxrenhp4gcjeszxpfflr08zaqqx5zqpkeqnl', - 'bc1qnerwvz93pcj653r5yd4hnd2d7np2drhdhyruj7qdvl3psc5wnf0q6x9me4', - 'bc1qs9ut74nue7vjknz2eqxegmtuzqhjzx9y8tzjymvlg05v8a5ffr5qz402cx', - 'bc1qsk6h7d2l7e7r2a8krlxjn6wdnhhszyrtzcugdsfa5zz4syajzl5spd52h5', - 'bc1qsmqvkwrsy5xw2hm885l5fv7s2hxzauz5fn9jayfmd86305wehrts2lztgs', - 'bc1qtlen0nuvln3aqcn2r3nljshdmzakq7z5z4rexpk23mj8u8lmc8ysc29jct', - 'bc1qzdt5z4f46jak59jku5jmvv3f2ru20htqs7jhy0whazgd5v4626eq4vkxqz', - 'bc1qzu4lnzfpskwsvnyvzud9a7ru4d2ft7whqvl5d3kskxxhgeupnjjquzvt97', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/kraken-btc.js b/projects/helper/bitcoin-book/kraken-btc.js deleted file mode 100644 index cb54d312afc..00000000000 --- a/projects/helper/bitcoin-book/kraken-btc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1qqwf6hexnnswmj6yuhz5xyj20frtp8exv7mclck" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/kraken.js b/projects/helper/bitcoin-book/kraken.js deleted file mode 100644 index c0892982605..00000000000 --- a/projects/helper/bitcoin-book/kraken.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = [ - 'bc1qnhmemsqfhycvp6g50v732h7wfwdt68el4ux5ttu8xwsrzngmxv0qr55aga', - 'bc1qa5aux0l2c3l99tpmd9c85770kqpksg3g6dxaw03jj6lphnwy4lqq68xfgc', - 'bc1q3gqqnn9hr0uachfk6rv3qhf3pp9z8a4z63ksc5qu0c2vvtykqd9qj3fyum', - 'bc1qplr053c80nzlqapuatfslyhmns6sfn32qzz3xkdn36jjryw8vsys8y7wlc', - 'bc1qhxv3pg2hsnw3m9jukuc6erjwwd03rzwhd2k6zh5uf6s2lwpuv3rq9zefru', - 'bc1q08n37tm63z3f0myqe6zjx7ymtng8c9qedpwpplq95qkmx0cpke7qyz4y8v', - 'bc1q02cq8du8r7ktuy5l0ltc4cv82xnaw4upaaw8y4rq6uycdp0k5nmquljtzk', - 'bc1qcf9qe8ytx5qlcq0ft4vm2xm3fyfvurrkende46hpmwwnzpctfu3szxpve2', - 'bc1qrj5vg73fxs6h6pmdjld387j5szkswc2y39rfutw8gl93h647wpksukyln9', - 'bc1q9hqaqzyf6zsd330pkvtq5uxcxprzr368zdsxx5srtep7kepx523q2gd0ef', - 'bc1q36l8mssxdlncj7njkqvayv3jumked9jdtjxete66cxnzluf4j0msjm4w80', - 'bc1qs8cyln26t2f5rwu2frnqvtltfxt0qqql0elmhrpsexlzveap82eqtyvsgu', - 'bc1qcds58swh4g6zsdmws9ltcdpqz4l44utu5wv9vfpmemps3whgdacqkakrk0', - 'bc1q75tsfq2c5cqp2ss32qksmnzd9yea2mjsjktdmrz900dcmg43ck4s66sgjx', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/kucoin.js b/projects/helper/bitcoin-book/kucoin.js deleted file mode 100644 index b5a3d8fba00..00000000000 --- a/projects/helper/bitcoin-book/kucoin.js +++ /dev/null @@ -1,161 +0,0 @@ -module.exports = [ - "bc1q04p5psjsp7j80sq6u4djgqk3c7pk6n93q43ply", - "38fJPq4dYGPoJizEUGCL9yWkqg73cJmC2n", - "bc1q0243pvcnutwtm3m6t005402yk8utq4kfqqghhu", - "bc1q080rkmk3kj86pxvf5nkxecdrw6nrx3zzy9xl7q", - "bc1q07yhcr2qmwkc32z4gfaemtjtx90am6e6rpl9sg", - "bc1q224fr84g5xqvp2lkwmzvyec9frwk5w5f5v5w38", - "bc1q204dfzksn4l0rhhajm9fyd5h92dac8tnuur8jp", - "37nA3mMvQwPGVh6BKdLXKBiPjLFVbRLZEp", - "bc1q0h72mfwgtsnfkcmpsnt3kmrrp4z5x3v469mz0k", - "bc1q0l84mekaaszjfst7lswaheu7gcymv2h2k8z6fl", - "bc1q2hpdg7pwghz9um27hqsmv2sg3f8f9fwtjvdenx", - "bc1q3yy6h7x9wtffu8f7hpkhlyssw3s28xzj0nydye", - "bc1q3kwpxug0q0w55qjrfrcykxu2yn02xhzn49fnxw", - "bc1q2wxfd36s204jkpfmez2u0nh7540cctur2v27ht", - "bc1q3g7sltlncshtqcu9wyhqavzxlfa4tj97whapup", - "bc1q4jszmgxml90ernkn3l908sn4hr94zk6wynp788", - "bc1q3sevrnv8khxe6fnl87ad8e4fjefu7rmp39pxl6", - "bc1q4xt86cp0xf6zsrfsgspnfm8579ksurxppae66a", - "bc1q4f8uwyargzd8eajj2vrdjz4l0hvhjdlpmchstm", - "bc1q3fzjrvlvsl6j58x38gzk0c8dgvfudsqcsdqyry", - "bc1q5h4ucvz7qqnhypekhd8jusc8z8msytxflzfs8s", - "bc1q5ty9r24qftnx7c0vw0y76d5kneekse7hl878yv", - "bc1q6z680y2fkmmu49ykm0dm0temp25p034p034fme", - "bc1q5qsadcuj0at2xk4lfca5zull8mkgwfm06qduq4", - "bc1q80elat9h0nfhuzvuvn4yl2nh0eqxwfzas5afnv", - "bc1q6dr8nqmgm5qvuukuf5ux3m0fdthnhx033uv3vr", - "bc1q6tj4wm295pndmx4dywkg27rj6vqfxl5gn8j7zr", - "bc1q5w44vqvfpnwzpclwhdmx98uenwdtdfd85qtw34", - "bc1q82qe6w4afzt2l94wn4d9e0uchj8t2x2dtdf2pu", - "bc1q5cza73vpzhrsruy4e7gudvq6xv6vfs9hjs5pl3", - "bc1qa482xwlzz479nyep2ve0z6t9t29dg0zem9wqt2", - "bc1q8yja3gw33ngd8aunmfr4hj820adc9nlsv0syvz", - "bc1q9uddlcfqdyh6dlu3pptchazr0va0cshnqss2yk", - "bc1qa8jaa3pss396sx52hkft5ta2dey69fkrt8mfsc", - "bc1q9020xphp6ukc4j72hy52gk2nxujwt4kr8dq6eu", - "bc1q8jjlupqcvxv25usqu8hvlnd8ym0stcpq4jfy9x", - "bc1q98mvmv9nl4p744tdf2zh3uzv30yea2njy0le9d", - "bc1q9hrcsckdwrezlw7gspefeyk9nyqmwpy3ea8wwx", - "bc1qa3h4re6gf6qmmesjqfzn0vu2rmc6e00s4gjjle", - "bc1q9wvygkq7h9xgcp59mc6ghzczrqlgrj9k3ey9tz", - "bc1qfyr7tvv0a2dcq6xp4dgr5nemfmnak2e2scn6hg", - "bc1qdhqxc3h6dnc6x0k8emtcnuyt8aspy83w0g9xht", - "bc1qfcuvuaam666pv777ad59wwue5l7j36hr95f8gv", - "bc1qf3wwg8dayutammv2e6lahudyc7j2ef579hyx3m", - "bc1qamlau4w545vsjsmnhzmztlv3sy4tu6v9cnxtcg", - "bc1qea6uvmc2kqndhewtlnc9duh5aa30ptvp3mhk9h", - "bc1qgrxsrmrhsapvh9addyx6sh8j4rw0sn9xtur9uq", - "bc1qcyjkktrvwatdqyvpm04vs3k2x5r4ystnw7msrk", - "bc1qggwgcwnjvlma9hr569jhgx2yuncaaq0ace5ywp", - "bc1qartr66auwm2tlcjp7cqgs8cx4p6q7lydrtwf4p", - "bc1qkrewa0m37wjmkcgs0w2gh9zhjqclkq74ckt4x4", - "bc1qk947xflcafthv8k6gx7m2cvwzqzy68kl5npkyw", - "bc1qh573eaggrqexqx7xzm4e57k6sm9r7zpuxwqxzn", - "bc1qj5gnrfdmcftzxgrwcdts4plw4kaydjs5kq560l", - "bc1qlldl5qma9glxwt3j06eef05590uyy2td3ye90c", - "bc1qhafun32xkhxpec8dq3kpxyq5x9ur437mj4dusy", - "bc1qh6tqdv9k2pew6vyvrmg76ae55n5rwa2djmyyyk", - "bc1qjxv6j2sv6za57khvvd5yu9jxkv3g3qvxh6sach", - "bc1qjefrh2gf28g6x56eeausc30gxewamj7qwtzfpg", - "bc1qhs4u46ygdskuljadnxn6thqsrjw3nf9r8nfclm", - "bc1qnl68wnf3d6jz532dl65hj9urw9j2432fjg03nr", - "bc1qnetky45z2vguazzczuy7x2446vsjn4ku76d5k8", - "bc1qlw4dv8nt5uc35dkmftlt3nt0rl0cte4he998qt", - "bc1qnvdx4dt8kn68csvcqvdtnlzw8hadapk9e9k857", - "bc1qnqhcfntmlh2nnu5rp25szqgxw7v3783xrgcd44", - "bc1qp22u6u75j2nvvhychyfd9uxr6s2jkf5p985rct", - "bc1qnxn6352sn9mm6dxgmfrn43fgtu0l2kcx2y3ddh", - "bc1qm882j3900we3eewa5fdw4hlwlnef35phmsn7x8", - "bc1qpafgjjmqlv32m6m6qpte2ldlz0wcuj3ajyt8gd", - "bc1qmtvfu97nlrl8qtujvj5jg47dc0p3w8sun6esaf", - "bc1qr9hf2v2gf6haq7tsvckel7u6ja46fnqfkt6u5p", - "bc1qpuhnd3gqhqlezgcuuhc2ywfw2w03uyz0seg802", - "bc1qr77hw0dek5f8uvmeazd3egym2m3npjf2nvrza5", - "bc1qpdfchk5j5tvkwf0z4kpftysv88h5szz4ms8try", - "bc1qprpm6caxcuewnme4at7h2skhv2rury274a0vln", - "bc1qq9u67zacfe3vz40e36nltn3agt9hf75g7av2xx", - "bc1qrf9llyljmwy8egcjjsw0z0a8n5sgjlhcemezcl", - "bc1qqx0udc7ndr77yg4v7rwuugnwk8n8xqaydmakfu", - "bc1qqg92jrprgh0vdq3pd8wctnzqyuwn5kp20hhfh6", - "bc1qpnmkhx9ndgnk639wh5gyuex4nsx7s8t8d33pzt", - "bc1qtcxldruuuhvk8zjmw3a3dpwfvu2d0m9qyctv82", - "bc1qtlgfyl9yjyluwzyyayp2fs0r4kcjtv2axsmzl8", - "bc1qs84j4s45nztsx9759vkha0wvvx28dlqk7p2n5y", - "bc1qteec4z0tcvv40r6py855gg77rwnhe9ege42x0t", - "bc1qrt7rkpswpgmcag7txzf6ps9mvepwgndshqdx6d", - "bc1quqy97s6lj3mty7hdp4at7uvmlzssh57jezx85v", - "bc1qseaaa4hnexjugx26p605getpdnkwy3up64uws9", - "bc1qudtghe07cfslxyv36zk5ums65c32xcw0nz6zhg", - "bc1qsfdf47l3ftsqv2muvfftnulcp4qwzypuxm9k30", - "bc1qul97gsvkpfju6fa53cezzxx5wmv4t8rl6gdt62", - "bc1qv3v2u78m6vec2jqe7w0esm6rccmysccdvkpr3t", - "bc1qwjftm2nl65gmevmutfqe8q7k0aaahlxt3a9wam", - "bc1qvh0zexe6422t85x3kzgvms9fd984606uhf44ug", - "bc1qvj8a4kjq888c2l22pdgjx3cgaq94vm3hjzyq6l", - "bc1qwgzyz8xpwdrx54rsm5p74ksc6wkxr8y4ncejwh", - "bc1qvvqafwsqr2rquyvym4l6rtt7ayukpmw2sfxn7f", - "bc1qvkzdg9x58zyupept40zcjhmztn3l2flqss2f4x", - "bc1quyayxjg0r68wsj6c2zcu3f7nnj9um5pwdgr36m", - "bc1qw83c8j8pf2azegtyeszqqdaafgqj4hl3xcdy95", - "bc1qwxg6gra5g9tlvztr9qphzpruch30ka40e4tl48", - "bc1qz0q4hyn5k8plleax2g52jsr0k07vgtqcr634g3", - "bc1qz0nfyvylrvn9h2rqm7lcegzv79du2p5jezgept", - "bc1qxfgeqygy229hrjrwmklzgwme70h8mmrjcyueag", - "bc1qyz4zr7cv2922cjua9xrezsda82gl8z653w6ru4", - "bc1qxnsr0al2lw7hqg90j05x9s0gxm5g4skmcslrut", - "bc1qymcn42gst8jvcu4y9c6tf6ngfs38j66hd5zvhs", - "bc1qzghz50r66hlp4wufyy55m5a3jjl5grkmetygsg", - "bc1qyatvzh0ndg464ph7txwjw6kgkczw8kw03lcgg7", - "bc1qy8054ua06akklh6avf06crt4u2hu4skasr5ead", - "bc1qy7uquly0ha78lmn47hedd7e0swkmwpyft9j7e2", - "bc1qzy4lg8yg6dsn0dppx3a4kq8tqe2hhrh6af3778", - "bc1qzkqzmlj47z0ww253xu2egewcw4wagz6qfa6fr8", - "bc1qydk2vq7l28c9dymdvlavluxtfgsjjj400ad8l7", - "bc1q0ge5ws9a035pmsdej3rjg7ur8u8s9h7d7xq7k7", - "bc1qa3pty8tw96lfetqgpkp69a2yhsdgncludpr4at", - "bc1qcgyxma95r8ld5209zw3czl7q6vpwtarfdxey3v", - "bc1q09z0s2fqakarl3zxhyytvajsa9ghflyjrwedlx", - "bc1qg9c0wgvkmp5xraqz7cuqr6xdml2v3c9hn4mate", - "bc1qyzy3xjf0jwunc5d8ka4z490n22c9alw55y4fn8", - "bc1qyky6unhmlspznhcqh4e0rpnxctz0veff50slf6", - "bc1qeaawmks4c7ku8fmahcv4khgssemvzq5f5twhp7", - "3JpvPJyGtMe55tes5dtFx25Pqf3qqq2TsZ", - "bc1qlld0ntz5flvpwkqyguuj4q8589dqxu62cradda", - "bc1qqvmvtj83gf6k5s2muu8dhmzqgr5mm8fkxsvlw8", - "bc1qcsktrhtfypevjq4ha7kaz2tz336kqdqpmt8u5e", - "bc1qw8hfvp6ryqsmc40u4qmq8jqp494tquspr0es95", - "bc1qtf2pnk9v7e2rq5kwjdpfwgvvp993n29qm89qt9", - "bc1qhs3gehw0zswxd8r7fdlg5c0hc443gt3jwrtvz0", - "bc1qd8ps8rnf8g9nk3ynk6n6n64f469zt5zyct33k2", - "bc1qvzcqf0hnc2u4hcgxufn5506vpvy0nlt55umhxg", - "bc1qm2p6f0etq637dwewuryjqhzdrjxmfzvqxskq8h", - "bc1qux5vms0p6tu534fx0yjhdpj7cc2kp58nnkmasj", - "3BGKdoLQdYVRPkR349Ji2kJ3fxw9Crhkar", - "bc1qepwdk09ujk3zs0fh6g3xx8d7hfyzkj6lx7lxyy", - "bc1qap6e9mkqvpt9zrll95vep0rmgep049awhcuxnp", - "bc1qfr43n0hm5v6v38262u2ju9qtlhvqaf6sj7l6ae", - "bc1qlq7p204s9m275mu2sk9sqtehhat7t9jwa2e2nd", - "bc1qryf4tdqxdjk9alch2yy0znvz83pr7gmzdq2e44", - "bc1qsly0c85g4zqdvte3f7wzzerg99g7lw8q0jhwk5", - "bc1q2j8aktg5l0qyll8hx6qc4ghh0ln0w2m85k9gcc", - "bc1qkm56dxh76eczkj5ep9sst4f3dm0cc0m4prxvy0", - "bc1q247tm46ptl3wya3gy62y8hvaza9n3qdgqwf9ng", - "bc1qrkx2ermvazypxtan8ugvkks6yfjvq2r2m3faxl", - "35T6at7miWoR8GraWESUqGcwo3E4P6rw1E", - "33Ese6S6Q1b5X8WZZdQkkh17GTKjk5br6U", - "36vxozNCoXVxhRwJd1L4SJnPGrJ2L7Wzdw", - "bc1qn03wennyt30kgyuz3nrjy5cjvmlgprefxwg0kw", - "3QESSfkEUt6zceS46D2XsCTQET2WFmDpxs", - "bc1qa9spz2wpej3sjpg4pr9gmtp80l632q4qae8a7w", - "bc1q7fuvzqkdqhvxnlx5egq8wccrgur6ngnnxfeqp3", - "bc1qkdshpukyzuwwak368rcse72a4ugf229yj92e94", - "bc1qr926kf2enm9jzu2xuwrxt58gr5ed76c9f6hc0j", - "bc1qsvqjz33c8y3px7lczczawwfnzvzv0tkufup025", - "bc1q9pz8jnuzrgyrh4yehfpxvakf2jk4z72szwfmyn", - "bc1q05xzfmg7gvel98z8vz9p24t2fceftrw7qrt69m", - "bc1qux5vms0p6tu534fx0yjhdpj7cc2kp58nnkmasj", - "bc1q0ge5ws9a035pmsdej3rjg7ur8u8s9h7d7xq7k7", - "bc1q8sel9l9uuw5a4nkw85wjy0k43ak5u68dpf8mcp", - "bc1qsy79x8zarsdtrydcm62e4uep0ectcp9rlugchq", -]; diff --git a/projects/helper/bitcoin-book/latoken.js b/projects/helper/bitcoin-book/latoken.js deleted file mode 100644 index 220be747b8b..00000000000 --- a/projects/helper/bitcoin-book/latoken.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "bc1q48amr6l7dvacdppgucvnswwuyleaqh4dus8z8h", - "bc1q2cgh9nxn7cqmqhk4hc5fu6mju8nzy9a20qqqh8", //cold - "bc1qw5fc9ml9vm4xq5c6xkcdu3vtwyw4gdn8lw0uwq" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/leadbtc.js b/projects/helper/bitcoin-book/leadbtc.js deleted file mode 100644 index a94e6f0339c..00000000000 --- a/projects/helper/bitcoin-book/leadbtc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - 'bc1ps0es0ycqk5ljgmraku7cyh3h6ksuylxvqpfgd8ut4ce4vvjksukq6pcah7' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/lorenzo-enzoBTC.js b/projects/helper/bitcoin-book/lorenzo-enzoBTC.js deleted file mode 100644 index 5fb25b9422a..00000000000 --- a/projects/helper/bitcoin-book/lorenzo-enzoBTC.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = [ - 'bc1qndzgrwj3y2lhcklme4t72jxq3df2h05vjdgzpp', - 'bc1qa4yfx2meqadqwpmqznlct0t2j6pt5tw5xrpz06', - 'bc1qnvgmve5gs89ugf4n94jzqgan202dve5dtrj220', - 'bc1qrdnqpvyx5g40ta0wg9js7ky8qx5qglnxyf72qx', - '19KdJBkptNL7RJYgsWFvGr8BqGaeV9xEpg', - '14eK85UFbR74KADFXkPXKyEDrroiVVGmxX', - - 'bc1pr6pga0d44xm3t8z36qnya6sfznsm8fwkn507x6gqt86xtnvm4h4sj2zqus', - '19wFRSr3GYHmVQtnmbkx7Wkjw3jZdyYB9a', - 'bc1qyd4g2r0n0p9u775z7062rz8j88xxy27kmmh5aj', - - - // new batched TVL - 'bc1q4cgxdkr6kypy4nxf24zy4l2rjuuavdnflnnfs0', - 'bc1qdkkv0aqfjqzfj4lszrwnl5ywlm2c8d6uvds26s', - 'bc1ql70zgt8lmnk2n7z8usdc2cv6kp39722rrj6u4p', - 'bc1q4kfty7afjs4yse4c3pqwah4eh082e4e0f8fdt4', - 'bc1q4zqnzrapnvcdye8cl4fymtyz0udk4t60rynx7j', - - 'bc1q2y8q75u3v7y79ay93anmp069kt33tajfly2vv2', - 'bc1qxqyclhjklh2u6qjcf4h0yzt2nw2hf6ah4k7tmw', - 'bc1q6al9468v9tjyrrnu3ahzpt4dfdfaehfst2np05', - 'bc1qurmwjnqmwntzshpevcmpd7ul72hdsnj9wn6wpu', - '3FChYicLZ7sD37f7NR2kGHwKCewSgdpzYd', - 'bc1qjasqm3y6uytk3xklqdzf72rjqan74hf5m7pv0f', - 'bc1qnaq02d5c94tvml8gn7634shtjr6adkp3g40vhjktl7j2yseu70zs2nmnyu', - '1EFjtdZtgn6XyEgwTn5hbZGHxp8amJw38s', - 'bc1qaxe3lqg0ztsthfsjqwx23j8vgpwjd5750sq6st', - 'bc1qfx66vlxvmunep6eyyht4ahrer5premffmra86l', - 'bc1qq6py06647kvjctncmm8q4ctl4f4qmtk68fq4dc' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/lorenzo.js b/projects/helper/bitcoin-book/lorenzo.js deleted file mode 100644 index c673d856e87..00000000000 --- a/projects/helper/bitcoin-book/lorenzo.js +++ /dev/null @@ -1,73 +0,0 @@ -module.exports = [ - "bc1qaf6laj9m7jteztyz4lulrtcjtpusfcfnd7r7xn", - "bc1qf6cj2z2e2mzuvfrl80vgt53k7jc2vf36ckahgy", - "bc1q5hc68n6krnzgzswf7rknha2aqxzrzup4vlhce8", - "bc1qpxpmr3zdjulqnwa3jdvm83tpaek6dv3kc75ms7", - "bc1qaml9d9mqgfhsfuaa2ymutdl4psj8c2undx9n72", - "bc1qutgngqyrflxrfmk9k28ucvq0s2v8a43nwfwv02", - "bc1qrx3fpr5j6sprxett45c2kl9p4pajyxep0mapfd", - "bc1q00t2ntm46c2nfvcer6ukj6npaxjurujthse4qq", - "bc1q3pzhncle68gct6me08kn5kf9awkevt6ettwrmg", - "bc1qw6cvwx8ajprmp2lzkhrsps2qx4k9r2pj4xj98x", - - //btc script-address after lorenzo stake to babylon - //cap 1, Delegate to Lorenzo FP(db9160428e401753dc1a9952ffd4fa3386c7609cf8411d2b6d79c42323ca9923) - "bc1pjy5mq7vlqkq6nldxghauq0sqgh3hjdrp2adl7tcalkavt9ly5g8q3zkymk", - "bc1pck8hnfa76k9gqtddyjvt0syzlxj5atfr5g0dk0ktmdr9u9h2gnesge0f5v", - - //cap2, Delegate to Lorenzo FP(db9160428e401753dc1a9952ffd4fa3386c7609cf8411d2b6d79c42323ca9923) - "bc1pf2x7w0wwutvj5qznrxygpv5wcj3nvzq9dqhpmkyfk84nkg778q0qa605e8", - "bc1pstunan5nv657dqx32tdup3y8uxq6eja6z3d4kukspjpq23gxf4zqdce4hn", - - //cap2, Delegate to BSquaredNetwork FP(2f8ec74d558fe7a97d10be230bf1485db9be675228abfbf957ba050c714b679a) - "bc1py54xje6lxdd8ej9hqxdxnp5dyjwu2eda2rxa2yuaptv3lrw3t2tscly6y7", - "bc1pydkry09hpqqv4hxrrlrgpddky4u39xrpqd0xvsf9smjpd65s49qqnq5zel", - - //cap2, Delegate to ChainUp FP(31287a9728f7b11863b9c56fc4cca103f0473dcgitdc6746ed7f79050d3adff644b) - "bc1p6dltgypr57fc648txjj7zwk6k605ca9x2ul0pycld22x86jcvxmsg7547j", - "bc1pw8za3k5upa565n0kv55e89a8l0hkzpnfenj767j0cwfu7rn83yhqvuehcd", - - //cap2, Delegate to Lombard FP(609b4b8e27e214fd830e69a83a8270a03f7af356f64dde433a7e4b81b2399806) - "bc1pa56692v3hxguvu8vgu5d7dh9twlj7wm87qvzvxdru3rnluv8nmdqk58ewz", - //other vault bitcoin address - "bc1pu2e56xlz284s5lh9am2k2ys2lhtau5mgq6j9fgljxt7tegsgtp3spmvk0w", - - // cap3 - "bc1pd8z0x5a34w3s3nvyzfjn5z9qchg52wm2exktqev76uc5mjq9lsxq6wsf0m", - "bc1pm3k5ssdpw7lyzqy4ndqvgs6mvanw046sktw79xfmw0znvrng2wps8qw6zy", - - // cap1, BBN target stake script address - "bc1pzr98tfuzxxjwkk3fq9k86ar98ttnj6zpf4x62099avdupj443x9qv5xdax", - // cap3, BBN target stake script address - "bc1pcrqesnduvztc080dvu0wdm6jzjvuf24g0kamn6p2h2ru0jmssljq69n7mv", - // cap3, BBN target stake script address - "bc1prku5dse3ps3hkyjn5lpu0qcypcmqmhqhh8wfuztpck5h5unx5wjq9mpjjv", - // cap3, BBN target stake script address - "bc1p9yrhpkm6klag7r0xq8f93degehxc086tnv2lsckg54cl2yl5wyeqdhx8v6", - - // Babylon unstake relay address - "bc1p9ta9m4h6z5hz5mvu2450qqrd5x507a25c4uper8nkxllhs94x7msv77l0s", - "bc1plh54q8p2e870cc9yunza4509ulna54dara2vz38c44f0jdgce4rseupqy7", - "bc1p8lqq8u7rlr38fgttp2hypz9t2vl4r486gkm67mkawyn769e7njmqhyz0tn", - - // Ceffu - 'bc1qjvvw0rur4jl503yu9umwpzlryyg6rr8j97nz80', - - // Cobo - 'bc1pj9r40wqjwscrqxma2a52sjt8c8pk975m4fjawekf43lk0v34e4qqt4xm9n', - 'bc1pxwcre508c6fkafuyt65utjv8enul2dmc79rhufq7u22tgtx26u0qajmflu', - // staking gathering address - 'bc1p9mcc69rz8wdcc4yxxg0uj9qygpsepc6628pzq5l3a08u76d6f3pq246syk', - // other - '36tKXKVAUqEkMx9NyErJv4c3KVEJNnJJYT', - - // small balances left - 'bc1ppwfa95ug52ufc2azau5wn8qvlss8xkmf8jutydg0azkwegks7wfs7cd98n', - 'bc1q606v608m2nrpzlqjn9gfwlsaw4dwxhjp82mrps', - '1FopykmQHhF51JwZ5co9nEDuQHHL6PqCTn', - '1EVosahWYJKUj5b861eiHWvwZxfq5SuXqk', - 'bc1pzd6luyardlle9f7lul2y8fl72c22p6vxspc4k4g4gzgjf8975s0sr042yt', - - 'bc1q4jnycjnu2322hjk20e56qymu4pwk0kpgds62y0' - -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/magic-eden.js b/projects/helper/bitcoin-book/magic-eden.js deleted file mode 100644 index 4785f7509d3..00000000000 --- a/projects/helper/bitcoin-book/magic-eden.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - '3P4WqXDbSLRhzo2H6MT6YFbvBKBDPLbVtQ' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/maskex.js b/projects/helper/bitcoin-book/maskex.js deleted file mode 100644 index 22f1111072f..00000000000 --- a/projects/helper/bitcoin-book/maskex.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - // this wallet was collected from https://blog.maskex.com/news/announcements/embracing-transparency-maskex-reveals-wallet-addresses - "39DUz1NCkLu25GczWiAjjgZBu4mUjKbdNA" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/mento.js b/projects/helper/bitcoin-book/mento.js deleted file mode 100644 index 2a3f5957985..00000000000 --- a/projects/helper/bitcoin-book/mento.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - '38EPdP4SPshc5CiUCzKcLP9v7Vqo5u1HBL', - '3KWX93e2zPPQ2eWCsUwPAB6VhAKKPLACou' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/merlin.js b/projects/helper/bitcoin-book/merlin.js deleted file mode 100644 index 41e18b132c3..00000000000 --- a/projects/helper/bitcoin-book/merlin.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = [ - "bc1qtu66zfqxj6pam6e0zunwnggh87f5pjr7vdr5cd", - "15zVuow5e9Zwj4nTrxSH3Rvupk32wiKEsr", - "bc1q4gfsheqz7ll2wdgfwjh2l5hhr45ytc4ekgxaex", - "bc1qua5y9yhknpysslxypd4dahagj9jamf90x4v90x", - "bc1qm64dsdz853ntzwleqsrdt5p53w75zfrtnmyzcx", - "1EEU18ZvWrbMxdXEuqdii6goDKbAbaXiA1", - "bc1qptgujmlkez7e6744yctzjgztu0st372mxs6702", - "16LDby5cWxzQqTFJrA1DDmbwABumCQHteG", - "bc1qq3c6kehun66sdek3q0wmu540n3vg0hgrekkjce", - "124SzTv3bBXZVPz2Li9ADs9oz4zCfT3VmM", - "bc1qyqt9zs42qmyf373k7yvy0t3askxd927v304xlv", - "bc1qgxdqf7837dxe8xkhvctgc499kwh5xw7ap3uwhs", // add on 25/02/2024 - "bc1pruhkl5exjt0z824cafauf750f5g08azuvgcjctv0enz5csayaj7ss3j5wc", // add on 25/02/2024 - "bc1q97vmervc8x9hzr4z4yvzn3x4rk74se6e8x8sgy", // add on 25/02/2024 - "bc1q2lzqzjcq472x8v0kgdcn4m5y8cq95ysnxm6vemu0qsuqgzyge06sqmqdal", // add on 25/02/2024 - "bc1qcmj5lkumeycyn35lxc3yr32k3fzue87yrjrna6", //nft_vault_address; - "bc1qq76dy32nnk5sha36etg6pdj94vl5zrskavux2f", // add on 12/05/2024 - "36n825H7orW1u8yWmvR4zs2CWfmkY2rkpK", // add on 12/05/2024 - "bc1p35l88j3ashhktg75tjctt6pacrgpyr93ldt7yw484dm4expq073qk4n0a0", // add on 12/05/2024 - "bc1pahkqca39mfcfay7nueczyhn9v8wq96x7mp4pjxpsdpsnurxzuwuqnhsdg3", // this wallet was provide by merlin team chain on the 14/08/2024 - "1A7oMBdQir24ESgk8LDccM4MUKJx6d2mCw", // this wallet was provide by merlin team chain on the 14/08/2024 - "bc1q0hgd38zjp2v2rahqverkmdaak4vc8fynyatqet", - "3BN9ECDCAjgxaQUmJCBCM7JtJZaCeB6rL6", - "17z6W1Eq1A7hWcWQiDxUcFTZBVCMsYrLye", - "1McbLy27nLVzJ4ubMnFm3jxnQ3nbq2mpr2", - "17vH7EX655n5L4iPAfVXPn3rVzZbrgKYBC", - "3Qjmb6Z9i3ySgG7uHFyngRX96PJhYsFZv8", - "17Wy2634mL7jsSxVjRQS8k2NexVwRh8jXA" -] diff --git a/projects/helper/bitcoin-book/mexc-cex.js b/projects/helper/bitcoin-book/mexc-cex.js deleted file mode 100644 index 0e5bf74aaf2..00000000000 --- a/projects/helper/bitcoin-book/mexc-cex.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "13uZyaPbt4rTwYQ8xWFySVUzWH3pk2P5c7", - 'bc1qrlsks7xe755m05zfreyjdxn34rypc4lnghtcwc', - '35C2L1pCgwzBHNcDcVL1a5RuoefeWqyjAR' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/mt-gox-entities.js b/projects/helper/bitcoin-book/mt-gox-entities.js deleted file mode 100644 index 862186f0808..00000000000 --- a/projects/helper/bitcoin-book/mt-gox-entities.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - // https://www.reddit.com/r/CryptoCurrency/comments/li1fw7/btc_silkroad_stash_seized_nov_2020_by_the_feds/ - "bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6", - 'bc1qmxjefnuy06v345v6vhwpwt05dztztmx4g3y7wp', - 'bc1qf2yvj48mzkj7uf8lc2a9sa7w983qe256l5c8fs', - 'bc1qe7nk2nlnjewghgw4sgm0r89zkjzsurda7z4rdg' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/mt-gox.js b/projects/helper/bitcoin-book/mt-gox.js deleted file mode 100644 index a0581b19997..00000000000 --- a/projects/helper/bitcoin-book/mt-gox.js +++ /dev/null @@ -1,81 +0,0 @@ -module.exports = [ - "17Tf4bVQaCzwWrDWGRPC97RLCHnU4LY8Qr", - "1BzK87zuqidZn489Wb2oLSktrjKrX7TLKe", - "1Drshi4RAuvxk4T6Bkq959ZvLbvy7b1wvD", - "1EiiKCCnFgHjEvPZdu29qqgdBm8zTvpU3U", - "14p4w3TRCd6NMRSnzTmgdvQhNnbrAmzXmy", - "12KkeeRkiNS13GMbg7zos9KRn9ggvZtZgx", - "12T4oSNd4t9ty9fodgNd47TWhK35pAxDYN", - "15kNZcrhxeFZgVVLK2Yjzd69tRidbFdJEZ", - "1LS5EFRRMDgMQusW6zokQUHjzNUfy6HHCQ", - "1FrV9hv1AW34BGJvobJatyzUWYDWB9epRW", - "1HdKXsNQtzDcfB6PGM7DWTgX9vhBWsz1ak", - "1Fu4YgM3Y9CxvioGPqkSzkydAC8MVaPN1D", - "1G23Uzwj55k2A9TRwaTknqGav66oDTkWCu", - "1GkZQcDy8V6pmHFZqUBUBCnN9dc2hoWasD", - "1Hm6XDmhKCHz68wDEYTapN9MEanke8iwUk", - "15SeCwVCFx5cWyrcdD1Zp1D1zxjH2SELPg", - "15U4VsmWG1cdXAtizvQsW4r7iMxzp64Tgu", - "16jZZkMYqjUWUtQ9DfDvHdH5ko5BcnH9XQ", - "16w6sZBDP58yyeyZAcvnxcEGJpwR9amM6g", - "19Cr4zXpKw43xLJhFZW9iv4DDNtQk2TDeB", - "1GyDutntMuYyA2vQGW5HFcKLfx4cbDdbJq", - "17etv2L3nhk6SCcWSNW4eoZkBy84izAm17", - "18ok25NTkdrUzdByFJCNVsqVYkujZ8aP45", - "199Yxz2TJGtND3QKsHTptTJivqSaUZBvku", - "1AZu7TQmKBAes2duNDctYwjAB9nhHczUnA", - "17KcBp8g76Ue8pywgjta4q8Ds6wK4bEKp7", - "1LLc8aA9C9LLULGbYCYSFKXgxKP2DXdCqP", - "1CZsoJfkknbnW5fKrt1oR7N1ALE5WmDGP1", - "1DedUxzgwErg4ipNi988wPgLk5thwciKcc", - "1H4K3dGfNbAN4AUfyUrpkGpjrd83sntDpV", - "13sXfpp2V16nnxYvW9FHHoBdMa3k98uJw8", - "13Wv5hGhubAWgSPWtXYh6s1s7HX2N1psYg", - "14mP6caC5dFhHdVAPCjPKM8Nm36MBDR5pM", - "155FsTtEFq4eGCcBxDseuwLKPbmtWbyHJR", - "156HpsWfgkWYLT63uhTAGUSUF3ZMnB9WWj", - "15QcKCa84ZCHxbsqXDoKhi5XbmQB8jPEAd", - "1EK8vW7UYaYHKiW4TZmYJKtwcZLM14VjvP", - "1Hb8DmmvvtTYv5RBLuGtDxznkZwVpd5Vjy", - "1HuPVqz2xvf1rdNFUqd62vRTyxP3jeX9Ch", - "13xGCc4TPSYY9GYxBGVNox82KxyjkFnxMX", - "13ahgw8sM95EDbugT3tdb8TYoMU46Uw7PX", - "1439q4Na8v88kPBqoyg8F4ueL9SYr8ANWj", - "13dXFMyG22EsUsvaWhCqUo7SXuX7rBPog6", - "14USZ558Rr28AZwdJQyciSQkN4JT1cEoj2", - "1FhRuUkk8Bfx8FJDemtxhKAR4F8GCNKrXG", - "1Mm9brripN4RPTzkGnRrbt5uDWdqbfk2iX", - "1LueUjEuBgc7cQhsWT8zAfTjcWmrNBZXaR", - "1LXi3x7hyt17cxncscGE887WCrC6XDNZ4P", - "19KiFrafXEyJCUDYFEv3B6tBUwyfFo7kNU", - "18YDgRhxsomuBZ1g9d8Y1JuRmxDhF8Bvff", - "18hcZVFPqDNAovJmb9vA6hEJrDz6uWXNGh", - "1BDZBTb4KE5oq6wAgA6EvAe3uCFRrAbPao", - "195HvmjXgoF3M5vFaBC8swZPhwrE7VhxRD", - "18KDS3q6a4YV9Nn8jcyMvNoVPfcrfemeag", - "19c8sUa54yQuRTVDfJa3iDkkCaFkzBJLPB", - "1B6kJM75iu5ty1HAHMMz6tT1HhjoGNTCa9", - "18M1Z337NqLtK9V69bssnQUYsvb7hmfSFS", - "19eihBKk6e5YD2QXAe4SVUsxRLLnTDKsfv", - "1C5aU4Xnpd3txbxehk46UZgiuNB8QdpHCH", - "1BXyJc6BVuTFnHQCcjiWX2xmCPNVfaSZeb", - "1Ar6meJQCkNoC9wnPcyRNNpzX5fBDaGcKd", - "1CRjKZJu8LvTutnSKq4zTJ4yiqrzMAArYW", - "1HweN9p41BY2RBunsPqyVuheEq7gVoxA9u", - "1HX4s3JeFU3x1eQgPNQVAdx6FoCtbb1hr8", - "1HzEPuenagLEWj68igDXBBXrzc293RuR5V", - "1JtgU6Uo1RAt5eiMf34EehyatUezBQP36C", - "1JVmoJT3471FjsX5H4hAeR1RyrDgpkHbpm", - "1JVU43LNKXqa9W5fCh8tppxDDEWgfeNg46", - "1JztCg7eKSkb1vi7NzGJynXpLZmoaFtYud", - "1KFDUSZuapMv7YaDmL6cyrHTQhma1MtFYs", - "1MkyfwJf7uhWTmVGGQXfcT5ip31DoHMxsz", - "1LzwbLgdKd4eFLkpRdeajkH1YJkVCip2zj", - "1MPJJzRaT8vLhowNB4dVyWRxxu79dq7WkB", - "1MvpYtqgBH7CXbTutrSVCTNHPzm9vakuRy", - "1N5X4kcZ56uRh24XrZoztS9Vb8G7j1Joop", - "1Pq7hooZbEAz5y3QMnqFY8C5xqTdrjUwcA", - "1PRXQEoL8vzEzoJJ9hbtAP6NaV2daccAUn", - "1PxGTuJzDx1ceFHx4Z5CHaWuhiPBNovmZD", - "1NA3Tj4b1jtx9eGELe31Jw4DrzTqKP3ayH" //https://www.cryptoground.com/mtgox-cold-wallet-monitor/ -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/multibit.js b/projects/helper/bitcoin-book/multibit.js deleted file mode 100644 index d9c9bf3c7a2..00000000000 --- a/projects/helper/bitcoin-book/multibit.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - 'bc1p6r6hx759e3ulvggvd9x3df0rqh27jz59nvfjd2fzmh3wqyt6walq82u38z', // hot wallet - 'bc1pyyms2ssr0hagy5j50r5n689e6ye0626v3c98j5fw0jk6tz3vrgts7nt56g', // cold wallet - 'bc1qmcrpqanjnrw58y0fvq08fqchgxv5aylctew7vxlkalfns3rpedxsx4hxpu', // cold wallet -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/nbx.js b/projects/helper/bitcoin-book/nbx.js deleted file mode 100644 index b8d0715362a..00000000000 --- a/projects/helper/bitcoin-book/nbx.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - 'bc1qd79ypayqr03lmvcqc40udn6yuq4mve34ychy6a', - 'bc1qgxrcuzn62qjk3e3echysa9srg87la26x0qn2sa', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/nervenetworkbridge.js b/projects/helper/bitcoin-book/nervenetworkbridge.js deleted file mode 100644 index 0e2d9ef953c..00000000000 --- a/projects/helper/bitcoin-book/nervenetworkbridge.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - 'bc1q7l4q8kqekyur4ak3tf4s2rr9rp4nhz6axejxjwrc3f28ywm4tl8smz5dpd', - 'bc1qzhwyexqzfz4d0mu7ktdad63wfssg08cek9sgjp' -] diff --git a/projects/helper/bitcoin-book/nexusbtc.js b/projects/helper/bitcoin-book/nexusbtc.js deleted file mode 100644 index 421da88d6cf..00000000000 --- a/projects/helper/bitcoin-book/nexusbtc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = [ - '31oxjGsmepoq2cipeGQ2zKZRRBCf1m3kAC', - '15VcywQLk9bR7kXJR1xvA6U16GBJ6nzPm6', - '116EytSxns3SaGU16YQLbw4P7bgbNvtpPk', - 'bc1qjav0ce3rc5n6espfjndrxck4s44sv66nagccsfqgu7yvwh539nlq6myyad', - 'bc1q39u0yxprsz6ucq93pgtxksk7ncr4900ypvkwcw', - 'bc1qy05dur0c4rk78r4mpl4r99glt9x6vs2w756gud', - ] - \ No newline at end of file diff --git a/projects/helper/bitcoin-book/nonkyc.js b/projects/helper/bitcoin-book/nonkyc.js deleted file mode 100644 index efdc101acd1..00000000000 --- a/projects/helper/bitcoin-book/nonkyc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - // "bc1qy8xx8fcsmdlc447ls4wzw2tn3y6c6cy64wckhz" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/obelisk.js b/projects/helper/bitcoin-book/obelisk.js deleted file mode 100644 index 11c63492697..00000000000 --- a/projects/helper/bitcoin-book/obelisk.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = [ - 'bc1p0tr3dgulgpx43dkktjxy8z2azz6yvx4j7s0lelj67tlwct0wnqtqeakfer', - '14ejzLtUSMsjZE8Pp2LUhX3Pf7BbXPeZyP', - 'bc1qy4pkldj4dqxtqypz6awwj7y8vahkht8uqhdlw3', - 'bc1qjnhtrjgr4y0new266twr6x6703lshszuey8zwm', - 'bc1quxgdtm6n9zau50n6aptcyn55gm0r5xjhvl8399', - 'bc1qt887udazek8rl89ck43nar4397a8qkp9qe9qdp', - 'bc1qunzwmk6gkx3ugxd4kmult6vl8vlws0w2jfume8jhnyxmz47ucy4qkhqwu6', -] diff --git a/projects/helper/bitcoin-book/okcoin.js b/projects/helper/bitcoin-book/okcoin.js deleted file mode 100644 index 41c3c4daa9e..00000000000 --- a/projects/helper/bitcoin-book/okcoin.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - // we only added wallets with more than 0.1 BTC - "bc1q2s3rjwvam9dt2ftt4sqxqjf3twav0gdx0k0q2etxflx38c3x8tnssdmnjq", -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/okex.js b/projects/helper/bitcoin-book/okex.js deleted file mode 100644 index 2c7e77ec427..00000000000 --- a/projects/helper/bitcoin-book/okex.js +++ /dev/null @@ -1,187 +0,0 @@ -module.exports = [ - '1LnoZawVFFQihU8d8ntxLMpYheZUfyeVAK', - '1JQULE6yHr9UaitLr4wahTwJN7DaMX7W1Z', - '1DcT5Wij5tfb3oVViF8mA8p4WrG98ahZPT', - '1CY7fykRLWXeSbKB885Kr4KjQxmDdvW923', - 'bc1quhruqrghgcca950rvhtrg7cpd7u8k6svpzgzmrjy8xyukacl5lkq0r8l2d', - '16rF2zwSJ9goQ9fZfYoti5LsUqqegb5RnA', - '1FY6RL8Ju9b6CGsHTK68yYEcnzUasufyCe', - '1MbNM3jwxMjRzeA9xyHbMyePN68MY4Jxb', - '1Lj2mCPJYbbC2X6oYwV6sXnE8CZ4heK5UD', - '178E8tYZ5WJ6PpADdpmmZd67Se7uPhJCLX', - '1BsdDaJtgFZrLfzEXvh6cD4VhtHHSHhMea', - '14kHu26yWkVD8qAnBfcFXHXxgquNoSpKum', - '1AumBaQDRaCC3cKKQVRHeyvoSPWNdDzsKP', - '1DnHx95d2t5URq2SYvVk6kxGryvTEbTnTs', - '13rCGm4Z3PDeYwo5a7GTT4jFYnRFBZbKr1', - '15Exz1BAVan4Eweagy1rcPJnfyc6KJ4GvL', - '18QUDxjDZAqAJorr4jkSEWHUDGLBF9uRCc', - '1M6E6vPaYsuCb34mDNS2aepu2aJyL6xBG4', - '1CE8chGD6Nu8qjcDF2uR1wMKyoWb8Kyxwz', - '1FTgXfXZRxMQcKSNeuFvWYVPsNgurTJ7BZ', - '13jTtHxBPFwZkaCdm6BwJMMJkqvTpBZccw', - '1FfgXrQUjX5nQ4zsiLBWjvFwW61jQHCqn', - '1DVTB9YKi4KNjyEbAHPp17T8R1Pp17nSmA', - '162z6mSSHzfTqb2Sn3NUk5r1Y2oGoCMCoM', - '3KbDzhb8B5pUU7Wk1y26J8D4cxYLmxJsca', - '3A8tCFwWyHQey1npTAWYTtrjLPKLXpSpLd', - '33a278YeJBRvQuemSo6yeugafqdS4x98TM', - 'bc1qc3g2dx3fn9s27v92n555r2tzhkxhad2wc0wm0ahlgpmhsr325mpssz80s6', - '3ABQAsnVgK8gDCBtWeEuoRvG3zdgABrDHQ', - '3AWGaggM87Nnhit5DwYYfXyvzW1NYutCw2', - '3QLVSDvh1r9u28PDWUDyg3nR7HqxrUZ4jA', - '3QFtYbR22en2AizTb7JVFA9bL2rf1fbNJr', - 'bc1qrp6msfnqxrl2gp4phmq6mcz995xc6m8n6fn8nygjfg8p63ncy4gsp3xn0e', - '31qq3eDdNyvyoDGrNYAAN5GU2BagDNANFf', - '3BdEq8vnX1o1J4Zpwj6wkPh5FxrgxLAibr', - '3AVMfb3vJi9CbQEGyoHmpgptgbJioyKykQ', - '3MYUxfT4mx8imVz7R8bVs71NisrYnmjUbT', - '3FS1EFCqZM7KEhsVoiNu7NC8658Kq4oCiY', - '3BiWZUFxpjJN6W93Fz3aCcCPBTrpYWwyoS', - '3NiufwUuJZnUHmgSopESaeLBJkALzJMcgk', - '3JcWcMPtxGaCuhKeucTMe1V865t7UhrNnT', - 'bc1qh0w73elagqvhfkkulrah0s2epdp922d3e6r8w43uz0e8ujafcjeqcz8lwa', - '3MWakirPr7MnizUAtWuDJmt919PZciSBvi', - '3LEV2xDk8D7uy4PVEGFZUm9fcT6XvCvHen', - '3FR7ZCHv26jaWWzv7EBPAXGgBpFuVFUnH3', - '38X48VjATu2AHowPzHefNqVvKyheGzVv8k', - '3AgGgHDcqd9sxYiagskZH3EPswwqza1TXd', - '3CGKuMZrkQQd4zj8FsTmDhineKACFpQBZX', - '32hhwGNtGTZ4J1LLz7p6o55Kxm7mzgREJ4', - '3E9GBso3ipQb2fbT3PNbeqgj8RkgJcR4X5', - '34MdsKf8zE6NeAy98TS1yxUTEoBkDT2ZwZ', - '3J7F1pczapCk1sRef6Hmvh9NfU6QiV3w55', - 'bc1qdk55vq5vrzt44pn93t9e3rwecw2dy4pcwc5gwugdjm3sh9xuqu3qzcwt4h', - '3PDMVx1YRhySaPEtCV2AT1aEq9DwgPU4uq', - '33j5fuJc14aff3Z6vHZBxaHEKMdNmKbRxQ', - 'bc1qvg6drx4rdcv85pteka94eskh740wrtgulg3tp7gcmm43vgund4sss4vzyq', - '3QUyiuBQF46KAMM7wdnDnu8GKVQYieRQ1N', - '35D2tNKFmqiVrvXan6tdxgatZoCBimASmZ', - '35Wvz1krBwzgQ7REXS7iJp3Qz7k3rmFNNF', - '3LMYZ3jPoKW2jscuT8fj8Nh4d66W3uX8us', - 'bc1q37nz0uheu4997ufs84efw7jw248mk9v83sgpmvsr6nawhaadx5lq2hclpt', - '3Mkfqxh6BuYCAiKxuvVWKn64N2xvReB3wM', - '3ANAufFoSaVJefhAZ7h9qViqdfJKoCWvbC', - 'bc1qnw79hhts8r84gykqkctyhu3j4gckll9gqxktzqgx5a54m347zf7qxhcyn8', - '3MYrRpUhNWxB8Ydk9gvMou5yZNtXNynxcT', - '3LFcssbNQRmRCCEUSbpDA5yzhsFH5waDoe', - '3NEwT3x6nrab6Wxddwb7jbWY8KYqJkewGA', - '35uFYLvWLQuEo6GxSGHT8JigaoUyqmNJjE', - '3DWvnsbAJJTLufQ4AhQY7LsVQrKoLjEHXQ', - '3PdNS2nqeE6G7cTcVmGjAVjz6HaPcX2FGj', - 'bc1qwkkedj4nzep7dw05s335x6n23520eq955mpcwypftn5q4n9japmqejkxlp', - '3Qae3YK3eKSoM57jpVYjvWkS7E2KnPFHSU', - '34HVDP9RFA9MpopGQ4TutLLVMFhhJFM9AX', - '39ZEaLMDxWi5EWx9cQ2W3ixDP8rWHhz8GY', - '39XwkmkcMAakYG9E564F6RZcp1RSMhUw8X', - '3QpVtFcEdVPTWqZbo8cSZwRgbHMbSEDoeP', - '3PHu7Z1dtRYbeum2SNWFCA4Fmq8r3UeXdQ', - '39AabFsw5ew4QcAC7zpeNkuk58FoZnJkvy', - '3NXxvFdsXK8DPRuGKbhNsvtP5FoL1s6hzF', - '3Jg623UZuqvvFLYbBsqqYiBCAyWUQUDG8k', - '3DgW9QH2GoVVoqwJd3paooAScy2vusEJDu', - 'bc1q8nne4amt4wjdaa0yxuzyw949xjd7fh2w9whh4uvh6haf6c5n2kvswnxk0e', - '38jFY6wBwBpFHtM4L88jF5o155SRVvr2wT', - '3CtTopUBx6QZomCjQDvbW65RtgsWn8g9LS', - '3KPPCAsWf6dxamkMBTeH2svaTVS7xgeL9q', - '3HoEwvrqYRnrizFN7gTg5ouSbV3Tek9pab', - '33yFzhVfaY9phULdN8kBfz2UfyUVZhFHNH', - '3Akts59LQNb7GU3gtHQcxh2r9zDfyUE2FJ', - '3EdYLLYiYpoLt9sEQ9KQQ3LbF56YRoiFPw', - '3GGLdxjaqvaguzTX9z4UTYaCoeu6sUyvNi', - '3M8Xbr9vobCoxMCWwxsS9doTP6HNQvx3op', - '3LcquVjVeDpFn1oJBs6mu2H5cc3EVCcJ2i', - '34Nr2xntQYxtnBARQmzswbuB1hNhnKvkoV', - '373oyKosqPkcYEsF7ipbw13WwDmvoNGgpG', - '34dhaAMB9sCBidT1LpjpbmZjkecsDpGhxH', - '3NRgSpzcsGA5mkjKinjTgBzfBYc9CBGXwW', - '3FMAKm9fEXfNXYtb6qBGaJvG3DRKtvPy5E', - '365S7mJV4MVqBfutYw65KuURCiohnMhzWh', - '3JJ4LULa6VtcVVxZC9tsNN9JM693mcrCeE', - '3CB7RwASFyWfYNCSWrri8crPhfK6yynMQ9', - '3HzYEwURshSeJZJn1ak5ioHKQV5rfZPXY8', - 'bc1qvusjx72vh3qkvw36jdqvl6sdye8ne8hfdaveejprj6xc24mpd8wsrf6w07', - '36U5xAL6FzFetzebPNT1ZQnANEk1TurVJr', - '3LkDsn4LZgYnMqZF2wAXCVs6kc72xpNLLz', - '3Gmt31zvMb52fJRRvLV3Pr3XTeDvVjGHAr', - '3DdCY3f5Ky92nSen5M2M2bzbBLUhMWafG6', - 'bc1qck2mvm6wp8xqxlk98eyl89kgwtmgw02cgqwsjstkg4uerqpqclxq6se9wu', - '3BexyYLsJQuN96qDRsnrU9yACnUSxxjWXx', - 'bc1qt5t0qhww0w7uaczxn9du7yu2l2hgpnen06r42u98du3cs6tqvezqatj38e', - '36PCQLrcXhNG3BZPeaND3zCW7cHgzDVYp3', - '3KGGtqwaQahxaN4GovThCyNdg6THK17Lrv', - '3FLnTqeKpK8CXiEA39b77pCT85sVWJXzN5', - '3AL5dD3jvpDHu8Qn7yZxGdpztWxieKxF4R', - '3G7e21FgygBmWDRMykauLANpuBK8iKqXpJ', - '3Kg2JcNnBczmHSX3udTfrKdqDy1gkrVZak', - '3QJBNEMY6TezfEBXGoc5PUKoLSCcWUd1Y5', - '3QQ8Cotsxbs9qrAyqLKaPjofzvcy5qipCY', - '34SG5K1QrntsigARCZJxNv8NwfSmQxPsDi', - '37Pd5nJZyXwjoGSwKW3ivWfeaW8VSjCey4', - '39J18vgfymGnJ2EYp6fb13rHNKBASbuMtf', - '3JwZq9s3yBhi8FikgYu2RvhjyBAhnSiLgy', - '3H4T7yRpphtyzpDUEiwBTtBa3fBMvHaKUZ', - 'bc1qrysu5ykl5pdlk7d9j0z5rwak5h9rus6cx2udc0s9tqhf5842nqgsdtgtly', - '3JqwqaLxqnDqXuJuKKp41UFSiFR1CuqznP', - '3JqzTCvFxye7nrVWGTBH2CNqZ7bbFppBww', - '3KWKbaAsf5qmbyBHXnVH6YqBgP4ZcNkUsc', - '3FbmQz3WvASHgCQUz3C2JmGdkd1gQFLdC2', - '3FMrfjg6zD3CTXSHLAiRcn3RFyBR8MMFR9', - '3KeFqqpbJawWvAudsi4q8Zx9Lewponyyht', - '32G39DN4kb9Sd6hk8RKySDf1QVFmQeAwtU', - '3BqZtfY5wZk7qHQaQJ4gBmqGLnakH8ybRy', - '3K1WNLse7M28jbowGsZmNaMV9FsM9yW3fE', - '351qZH3E9rwXg5ZDY3tgvsYhkm9CnYV25N', - '321DUXbk9gEEKG72DU2TcADDyfZXkX3fHP', - '3E5jAXsSi5x7oj6GQuM6WQPuVZaXeYd3sU', - '3HEBzhigBkmhVf7kx1KFXif42AqQWr8KH6', - '39smXTQdqD2W767ipLishHV4diSV4xNFxA', - '3GQ4DGB2tfS6YrwfVg9MF7KBRCLWkugLWR', - '3AEKc9AokfB1nBvsdS8LVFJysZSQBJRrny', - '3G3Sis7s9Jjex2Pcaerh17HvSJ19qHNuMg', - '33YfoFAdobotJkMPUqSh2ms9frvRRfRzpu', - '3G38Zn3mvixfamrKJJtsubiEL5gCQAGnSo', - '3KTFyMGHcjWjWE1UqZRM3T4WnHuQt95iRo', - '3JQmpJYkZrVczaNDCyQoLe6JXV3vGFY8ce', - '36EMwG1FHCrp2MLm474CnE9rTQDWFF1uTF', - '392Bq5jWV8NWUTdV59VCqoYviY5KP9q9Ee', - '3G1no1sZwQuNYd5H3m6seWw9oy4E4Yu1pP', - '3K376tvxysV4XDtTTEUF47Xc8LHdjof6kR', - '39ciFiDp9yj1vLSxHh6c13DiVFhcBab7NT', - '3DUGtYyorAm9vhpo3KbMURMiR2CByP6BoM', - '3DeCWk98Wp6bG9apmqCCqTfRc8uVdQ1vyw', - 'bc1qpkgxexfg8ah0j0ffk3ge3d4para29r8ugx02ch7daja3s8u4247qw2d2jq', - '3BnCzXEqQi7VDMfCaGY9zbSySuy5uQUaRp', - '3GkiKw8DBm3nSqjL1mZLJdp4yq6WEkkyoR', - '3LTvYTkSk2jq4a6mPVMadJ9vzv1V6RMDGq', - '34Fg3q75hcnjyCoL5FLPKaDM1bewFCPKsv', - '357DauGAnsbGpMgAApUqTFHCgyE2kXA9SD', - '3K1sq7TwuVEbvyADV2oNz6DYX2EhWSrVxC', - '3LWHs1HvAF362RHUc6MKL4jUPWcTw382pj', - '35oBhEfzDyCMz4KY6j49iu8xjtbHQ9GL7H', - '3CZTmeG25AXcjYurJ59mcFR3BvS4onF61M', - '3C766rkZjRvmvhGmyGeH2x33ciUrZHarvE', - '3DXZB5fAv4ujHv3dfBPnU6qaDR4HDUEuwY', - '3LnMEFH8kYMeZ8d524cj4RgXMVmniHaBSF', - 'bc1q2gp7s58gf75sg5g8v6ah8z90ghk8dqksa62u27gmz850cnaclshsfjvlr0', - '3Ca537VX1HufiVRfKVogWcD85RV3iuFs53', - '3BxyyKih6788xBQKk8aMg1cD3qP1x7Gqgr', - '3LceSbWiDHYvy59BW2swjiEQZkqvaijcsz', - '3MjPfBpz8oDcEJZphpBuiwRnvCAASFsgT1', - '3DdvsQoGp4wtvCAbyNBEZjCoWoWQL6TssG', - '32ZB86r6jT4DkAtnYYSHP99xtcai8LePLP', - '36yNiwCxiEtubUpzBLGPeSBCbubCy9i3QW', - '3GQUyZH3EPoaHFzjWr5peAKSQFNGxxmVw1', - '37wL3HQgir55T4o2Lv4Ygrsgat5W7iPnnd', - '38qt6S3zQKizRnafitwEdz4dTj1fx72dgY', - '3EqD1B8pMgdRE9iPEgUXAzpcyxihW4tbgA', - '3P7a4wgoTDKn8F2g2VB62pHiV22XzJGGbd', - '3FyaksZvXsZxEShwdpNMK7awgDE4kBuKmN', - '36CVsC2nLzvFejTuBXvCFnt3p5QsKaGzwh', - '3BjsuL5pVVWBFSMtoB9cg2d2hsJzJFpo3B', - '34w5Da4HJ54AWTZVo8JrujhV1v8iRZho3e', - '3DuUe32HgxGg8RQ5sFk9drcKRVmwNCAHhV', - '3MoQyLh75Niz1s573waSP8pc95sqQcdJXd', - '3Bvj92ASRnTnqj9kdABSgXJgrBDy6XEgzq', - 'bc1qxe6nlda4y4h6ekj7jm9klr6vn6h9pmy8pn6yzycceqzj08532z4qxxrlza' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/okx-xbtc.js b/projects/helper/bitcoin-book/okx-xbtc.js deleted file mode 100644 index 2a93a2c0ede..00000000000 --- a/projects/helper/bitcoin-book/okx-xbtc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - 'bc1q7mvqd5apnrngm36rwqlgk7nwkt5kwc37thzgd79puh55wscr42mqct7lss' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/orangex.js b/projects/helper/bitcoin-book/orangex.js deleted file mode 100644 index 936ea034603..00000000000 --- a/projects/helper/bitcoin-book/orangex.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - "17k46YbLif28mDx56VK33zPxGN2B2oJFaW", - "1C7bgas1p8Xp58EXLipn85j2VLG9FQX9Bv", - "1Dbn3vrKwsMQfz1Wn4Gpz5nPW75k8LAqLM", - "1DsLvEYefkTFyZCLfiSucJRjEL5Qm2Moic", - "1EJ7W8ZTULqcacqrtgWxptRqyPwro9DVoi" - ] diff --git a/projects/helper/bitcoin-book/phemex.js b/projects/helper/bitcoin-book/phemex.js deleted file mode 100644 index 5484d441778..00000000000 --- a/projects/helper/bitcoin-book/phemex.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "3PiGxVdpMjWSsH8X8BypdwcsmPW5cmE4Ta", - "bc1qw6mntl39vdtle2fczl8dzds43x02z556yp3249", - "39rotuMW6jxjPrZ3Fn7DJJkPZZstWZh6ck", -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/pionex-cex.js b/projects/helper/bitcoin-book/pionex-cex.js deleted file mode 100644 index 67bbfc5aa1a..00000000000 --- a/projects/helper/bitcoin-book/pionex-cex.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = [ - "bc1qs0jdyydyd4kv7fwqre4suhz33mcuy3838xdsla", - "1JkmFSbqijbrv6JdyVx2hNwyE8nzEy3Cs5", - "bc1qctq0v0vecjxp4de66znkh0dcczkvuqjwwt0za4", - "1KH7cEFwFvKfnx7KjMaQUescVSigz3FMaJ", - "bc1qeplx7cy5xx37m9mtrh9qefeuswansr0c9mvewa", - "1BgvqcFm2cYRg8HCrd4qWnC7iA6tQqoeme", - "bc1qw5lxcrk7l2xsy2wx5mapdz58g29xde4x56le3s", - "1A4Ag6y473avEbjVm5N4HAqiVCE6NxLRCS", - "bc1qvdf8f85dn69csyka5tzjezsl66hdhmmfgwgfzz", - "1PDgKsiQo8hkA5pxYBwS1ooXv9jFNJCFh5", - "bc1q7wufvquhtmmd7eepjdu76lumj6efmfl2p6sgch", - "1CNEXYtt6WYZuMwJF7AjNYr39nxbrUTRoh", - "bc1q0jkkjr2qr4wl3v399algvsjuk8g7vlm3yaqufu", - "17UcdCaVWpmgpuZsKfKdWRUUViAzoQFY3H", - "bc1qguymjgurnywqac3rrplr2nmkl26cf5jyyq3vkv", - "1D9YPYQevtEsk26exBjCY2pKfhDsXTxJEE", - "bc1qs5lsnltqwdvledqvgrf82prja04ej4xk2z7ktu", - "bc1qcc2h0dw6t79y4czk8newhazwgzlygyfawu7k30", - "bc1q7d9lknwmc7tnwcemapkymggne2sv0hxkg84vg6", - "bc1q9a67xl67smtue0ajutxttsla25a45x6fdpwccp", - "bc1qtww74le5349we4ncvf9m7lpu5lpe9f4j9y39ey", - "bc1qn47hrlrkjnm7fvlt250ah62y4vlx6vgtulx93k", - "bc1q6vw4d86dvqe3jcldg8yxzc3c74hzve2w757mcl", - "bc1q3fddfzf3kp4x2htd9ghhytz29vfnd6k066wl43", - "bc1qzrxjhl47atjfc63tme0nzurc4d9hqpugvv80rs", - "bc1q52rewzm8plc404uexqxp0kqtqzenmnz0u2ucf6", - "bc1qqrmpk72h9d4jrx63vqzz88uf8qsue6m7wm23jf", - "bc1qn8vnl94k2dsvgntqtrj4jttshqyxt95073s8x9", - "bc1qxx3ehup2yet758ve8ft483tq9u5anw2k0trqps", - "bc1qcwk60napcfcljv6phg69gfyfmp3emsgdj9cn5v", - "bc1q4rtnrtnu829eet3m27huh6ld7x0xczjxd5dg5r", - "bc1q7vfv3h99vxwu300qej6x2qdfsn58kq6nc9hec6" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/probit.js b/projects/helper/bitcoin-book/probit.js deleted file mode 100644 index a68a94a01ad..00000000000 --- a/projects/helper/bitcoin-book/probit.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "19EgVpboqNjortWyhJSDAGRvHDtduqiSfr", - "19AtrEvJv7UY75tvWkXMxLUAYibxpZhFfN", - "17PpCEuQUT7xxP1ocfhvFdwQyrB5dG1dQP" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/prosper.js b/projects/helper/bitcoin-book/prosper.js deleted file mode 100644 index c308ac3a87b..00000000000 --- a/projects/helper/bitcoin-book/prosper.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1qcrdvx3dvq35kawsp02033pwla244rr6hptg982" //https://app.prosper-fi.com/stats#dao-treasury - ] diff --git a/projects/helper/bitcoin-book/pstake-btc.js b/projects/helper/bitcoin-book/pstake-btc.js deleted file mode 100644 index ae061728a9a..00000000000 --- a/projects/helper/bitcoin-book/pstake-btc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1qajcp935tuvqakut95f0sc9qm09hxjj6egexl9d", "bc1pzq0ve6e7j6jt4ckx8uzdjyddrfda9ew8dxvrjmkxmfnj9yz68zeqgqh9cl", "bc1pjp9pg0d6wcejlg576st4s8d424zx443mdumdhvjcxx5ehnfk4xcqyru7ay", "bc1px92pntcj0wd5076nnymp787a7qczsaauuefgntxngdwvkd584xgsaagem2", "bc1pxhkczd3jq9nq50p2xll99edhxlx5dj6ztgw5pgtzszjtlvg7tl4s8ttf04", "bc1pxhe0dvtg7q06st7n7k0s6235ed4dhhawhhewpz7f4a0dmcrch09q2shl8y" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/river.js b/projects/helper/bitcoin-book/river.js deleted file mode 100644 index dbef664ad72..00000000000 --- a/projects/helper/bitcoin-book/river.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1qnques8jtyh2t3egwxzjys7ct26sexnujsfsrjz", -]; diff --git a/projects/helper/bitcoin-book/robinhood.js b/projects/helper/bitcoin-book/robinhood.js deleted file mode 100644 index 784b2493ee5..00000000000 --- a/projects/helper/bitcoin-book/robinhood.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "bc1qprdf80adfz7aekh5nejjfrp3jksc8r929svpxk", - "bc1qmxcagqze2n4hr5rwflyfu35q90y22raxdgcp4p", - "bc1ql49ydapnjafl5t2cp9zqpjwe6pdgmxy98859v2" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/rosen-bridge.js b/projects/helper/bitcoin-book/rosen-bridge.js deleted file mode 100644 index 064b7f1c73f..00000000000 --- a/projects/helper/bitcoin-book/rosen-bridge.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1qs0852en99dfctv0egj2qxnmc79mhjgn9ap975t" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/roup.js b/projects/helper/bitcoin-book/roup.js deleted file mode 100644 index 7ebc03299dc..00000000000 --- a/projects/helper/bitcoin-book/roup.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = [ - 'bc1pv5lu5aklz64sye9f4zmnjkfg8j6s2tllu3fem4cs9t0hcrnz5e7qy0qw6e', - 'bc1p2tncs8egnj8e6qt46np3qla70mfx4telu92v4c9hp3pg8khqp37s9lvmfx', - 'bc1phnxqw4gfq349wm2xcqgqk77544ssqwa6ycuhjh7hdxks4mtjg33qrfenw5', - 'bc1pfsu3ts4equ7rdy63dgt7shkqlu2n5kw8p0z7p7c8lsrh2yqg40fsvz4ev3' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/rsk-bridge.js b/projects/helper/bitcoin-book/rsk-bridge.js deleted file mode 100644 index ec8e5bcabc0..00000000000 --- a/projects/helper/bitcoin-book/rsk-bridge.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "3GQ87zLKyTygsRMZ1hfCHZSdBxujzKoCCU" -] diff --git a/projects/helper/bitcoin-book/silkroad-fbifunds-entities.js b/projects/helper/bitcoin-book/silkroad-fbifunds-entities.js deleted file mode 100644 index 862186f0808..00000000000 --- a/projects/helper/bitcoin-book/silkroad-fbifunds-entities.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - // https://www.reddit.com/r/CryptoCurrency/comments/li1fw7/btc_silkroad_stash_seized_nov_2020_by_the_feds/ - "bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6", - 'bc1qmxjefnuy06v345v6vhwpwt05dztztmx4g3y7wp', - 'bc1qf2yvj48mzkj7uf8lc2a9sa7w983qe256l5c8fs', - 'bc1qe7nk2nlnjewghgw4sgm0r89zkjzsurda7z4rdg' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/silkroad.js b/projects/helper/bitcoin-book/silkroad.js deleted file mode 100644 index 862186f0808..00000000000 --- a/projects/helper/bitcoin-book/silkroad.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - // https://www.reddit.com/r/CryptoCurrency/comments/li1fw7/btc_silkroad_stash_seized_nov_2020_by_the_feds/ - "bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6", - 'bc1qmxjefnuy06v345v6vhwpwt05dztztmx4g3y7wp', - 'bc1qf2yvj48mzkj7uf8lc2a9sa7w983qe256l5c8fs', - 'bc1qe7nk2nlnjewghgw4sgm0r89zkjzsurda7z4rdg' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/swissborg.js b/projects/helper/bitcoin-book/swissborg.js deleted file mode 100644 index 2c855338ca1..00000000000 --- a/projects/helper/bitcoin-book/swissborg.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = [ - '18DowXoMUQT5EU8zPTDTrq4hrwmi8ddCcc', - 'bc1qfu6su3qz4tn0et634mv7p090a0cgameq6rdvuc', - 'bc1qutkfwnuq4v0zdkenqt5vyuxlrmsezldzue5znc', - '1Mgs8zLJ7JyngcNRUscayyPHnnYJpJS5x2', - 'bc1qc8ee9860cdnkyej0ag5hf49pcx7uvz89lkwpr9', - '1JgXCkk3gjmgfgjT2vvnjpvqfvNNTFCRpM', - 'bc1qkgrz5mgsvze06mkexdqghw8udkcv88mmuvaxzz', - '1J2xea7M6N2XiQCuN4TuiLPV1TQ2eAwzoa', - 'bc1qhtvsrdu6a8jddqjnudugvzhqwdg8kdyjf2yfl6', - 'bc1qv20znwswjzrqffjdkfl2ydahs8439d57r8ctrd', - '19zShA6yNj4xf6TF3kQLozfNW3dwEbFikY', -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/tapbit-cex.js b/projects/helper/bitcoin-book/tapbit-cex.js deleted file mode 100644 index efd5be2de2e..00000000000 --- a/projects/helper/bitcoin-book/tapbit-cex.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - "1HSRxFoxC7HYbNutGyxCNXmGT1FG3M2Bt3", - "1PUvhYpjgvgjzmiwSCuGNqKQjKde29eFbH" - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/tezos-btc.js b/projects/helper/bitcoin-book/tezos-btc.js deleted file mode 100644 index da90c81336f..00000000000 --- a/projects/helper/bitcoin-book/tezos-btc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - "3NKsqccxthpCaVwraPnCWrabRV5aCcTfNM", - "bc1qfezcal3rf7azajs75c96qaelmuqkpsust6g0qs6jja578amw0lpq98vnd2", - "bc1qn4xndkgx0df9jwv79uwrlreaq3luwh3thu5s2traqp3z9kufst6qqwh5tf" - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/toobit.js b/projects/helper/bitcoin-book/toobit.js deleted file mode 100644 index a3332409f9e..00000000000 --- a/projects/helper/bitcoin-book/toobit.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = [ - "3926KKKCqcLaWpAau73TMo19sNv23s1wji", - "bc1qj89dz9wt08gp5745xgc0dtda2llrnwv2r2ysdcm9dslqllxwtn6qwlf2rj", - "bc1q9weww8ec0pr96rdnehrskk6gyeuzynvn3wkv80", - "bc1qfmg6286zvzes77359tnmvuqxftqxkz4l842yy5", - "bc1qqdme8aca3xrpuy6y5nn2rxpyqwsm52sy89pup5", - "bc1q6ln9rpknwmvaur2qrfeqztz7kjz003kzr3h30n", - "bc1qzzr6f2yh649nytecxt8z9nlex0nxrkxletelf0eqdf56tfuzn3wshthqg9" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/tothemoon.js b/projects/helper/bitcoin-book/tothemoon.js deleted file mode 100644 index 0edb3641968..00000000000 --- a/projects/helper/bitcoin-book/tothemoon.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1q50uxvgu5paqj22fg27s352wggev70xs9f8lhnk" - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/tron-btc.js b/projects/helper/bitcoin-book/tron-btc.js deleted file mode 100644 index debb9f64836..00000000000 --- a/projects/helper/bitcoin-book/tron-btc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = [ - // On the 23/10/2024 , defillma receive a PoR from Tron/HTX team with the respective BTC collateral backing BTC on tron chain - "1NBX1UZE3EFPTnYNkDfVhRADvVc8v6pRYu", - "14NEbSYdjumn9h4spMjbp3PdUpeXuM5PBZ" -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/unit-btc.js b/projects/helper/bitcoin-book/unit-btc.js deleted file mode 100644 index f8822aad05d..00000000000 --- a/projects/helper/bitcoin-book/unit-btc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - 'bc1pdwu79dady576y3fupmm82m3g7p2p9f6hgyeqy0tdg7ztxg7xrayqlkl8j9', - ] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/wbtc.js b/projects/helper/bitcoin-book/wbtc.js deleted file mode 100644 index 3fe67c4ea76..00000000000 --- a/projects/helper/bitcoin-book/wbtc.js +++ /dev/null @@ -1,341 +0,0 @@ - module.exports = [ - // WALLETS FROM HERE https://wbtc.network/dashboard/audit - "31oMgrBjhbAr1ZZjFUFYfDT1ZYvx3Qp9qL", - "31qyn946XELbPKMaSWhk2SfFN8ikqLJ1GY", - "31rYKY9PysQgRoc6eB9fwJ3e89F5dcvRM4", - "31sADuWnUApAxzXJZTaEziCn9DhZVUajwK", - "31sW8NHLr9MELRdoGPWrEk6wBd1pj2uzkB", - "31x6dwHmXYHqd7YiwvJNPX8ryvDj8Cdht1", - "32Cav9GPxma3wRprn2FtPQ7gxmCZ8ZEmzv", - "32Ks4Rtb1A5NtzexGq6zEeqHta6hoqvCZW", - "32Ver3t9feJgByfNLF8pggtNFPMf22iC3Q", - "32fN3YjNhtAzUjBHfTVFtiPBFPgy1MkBAC", - "32hJnfPp6ZDnmkJ3tosoo6PvEemFr1z1Bd", - "32hPQh4EMBS14BMutrW2WJ4V76yxuXHJdF", - "32iT1QaoQD61rZgCNLccNqAdbnx4HwgvZE", - "32m8wzKabRRF7o6JRXN1srLSA5FzND769o", - '32oLNY3suWAZvYTBeAaFFSk32rJtS8w9i8', - '32okkzumvdoocdjN18SzbnTTNd2omQvvt3', - '337ot6fHGs4NCZwg2cKwShhrYX46g8ACtQ', - '33K5r4QntjmmD4mzSHq3WQJQtf4Dw8jvcZ', - '33PbQFD2eAouKnKVTBvZTFWE2pRzLgJdro', - '33ZA8VjwL2oucQceCP9WLEVunLkLvhaaPb', - '33epzdB4nk3FWHtUpHMQrzTWxiehSti11v', - '33gNdUGQTBT7cUbNx4892keGA2L64ixrfJ', - '33jqiX8NtPd8empn7ibEc2tn25GUx8iUE8', - '33xpP9NhBBmQt3XS1mD2g4pi1FZNuUFVR8', - '343uVxqsriiveWxekC6s3mNaERzsbfke3h', - '34CyVpeNgNNEoBdEoSSH6aTjrUZDavaUtr', - '34MPipmU3suumfX7WxTUTxmLX2uVK1Np8R', - '34MSicAL7qVGkevFPLwyc9KohGzoUSnu3Q', - '34Qg9U75RNPqAmZzF2amJ1XNGQyVek7HkQ', - '34whRPeeSYTPcihybfXmkG2uoShUdT3d2d', - '3573rMHLB3VABY7VaXMWhRoCBVspLGC4xV', - '35AY8sKs3yt3FbZpsmAtgvSXBZtvqqwc8e', - '35HfRwMwqB7sNTwijoG4fGHBmfWMm48aaB', - '35LMppVy98ofPKeUXUk79FUSkVC8yiXHUF', - '35QASqiGmQmHoccRc8pk9EtPVDFZDrFA59', - '35ULMyVnFoYaPaMxwHTRmaGdABpAThM4QR', - '35bXvntqjj5LnEpRVqU9bLcAPtT9crggYj', - '35cv1mcZBJkvkjY2KQSdmbo7Mq7E2yEVZD', - '35dn2Sfsi9qmqZke8SfSVcaggED9uJYQhn', - '35sfxCN1Gz37dq9KkpTfW56W59CK46JMY6', - '36RYMHxKrvNvrFcovZVXEQWC11LLbPE56V', - '36U3VfLRN9kbQQXRGwP5SGUYebSB3MqVnp', - '36ZsF5YgJDW25eZKS6gnZMqW4gr6wv9xp1', - '36h9DtMdqYWTxSg1yys2exZPFQoQXv8QRL', - '36jGhq48YgvjJWtEpqrc57QzXcBJQyCsS7', - '36jYq75ewM9AMTfnKRTwkPBBWwJtGg4CsE', - '36m2gCFRpkikK6AXUQGKLabKmd8PMjwx1Z', - '371SbkDHpTvRuYTwayWsBNsXK93Tj4sDAd', - '37Tgw6PStVEAyfAJT8yEvLAcxkoRYK3hDz', - '37Tob2tV9LRVzJng6Z4YCLyPsmq8n2xMQi', - '37aZoS67WApGWTDsn2rYDsxebhTdZSR1sh', - '37hV1tJYctQLPin7vCSjpDL34PpiiUTyTx', - '37kFT7mcJqgkqKbd66VbgkHSQgnys2V7hp', - '38EovPeRhGniW3cpYLJwptCqJkx9Y1Pg7G', - '38J1ce6tPUgy958VBkGGa2AmFU3LQLJ2Gv', - '38R6URq21qncKbYiiRXPi2MVx8xYRgDtWD', - '38b9cazfu4SxqoahgdiHEMSo1aNDdKquRm', - '38bzm6nhQMFJe71jJw1U7CbgNrVNpkonZF', - '39P2pJ9EmN3qmPAm1TTZPzp6T5LSsJq3eQ', - '39RMkGSQUQjifV2TpgRNYW73JK38xwA3NJ', - '39WQqCosC8ZD4S9XBPHRnnRUeVRvNctnnm', - '39e7mxbeNmRRnjfy1qkphv1TiMcztZ8VuE', - '39mayj82aZdb6UWs9qQAZZrC3VzfxUQP7c', - '39pEDUwFFj28sN5muXrmT5mAbDJSf6qEL2', - '39ydxDT3H6KygeXQn8f1tYXk6BtCTrsutw', - '3A25qkpmhCrYGEZh39wc71u89dSXGCYSvd', - '3A2wJ7LBiR4NhPbJSLNVfzZk6vDeYYPrit', - '3A37hJV9JPWR4UMCXC3QvKSeVGiRwgGtiU', - '3AKea5UYSyMc2oRRdQYhkn57nXWMm5woDz', - '3APCmmVbkpKSmLkTbGUvdPUyfqA4CZ25a4', - '3ARRJS9VNVkMdiESpxq2AGfpZUQRUvdGgd', - '3AdKaaTBFPQgpFen9YERPmrfV7QVvkYQfp', - '3AfJyKGXVBUcaWdyJeWxsasq1dHPw8pRZz', - '3Agd6vor95XcHvf1MPKE69KEpNbZTKD6JF', - '3B9UDWZNPdtL81JLnnPEJoiurcmaGx8DZm', - '3BCWh8prqQDsZDi6Pmvut9HJrhii1Vk7Ak', - '3BCm2gVB29QDFLWt768jjTwKoe1N1QVwSU', - '3BJJ68V6H1CoEx4MWdhqVk2kFpPUNVbs3T', - '3BPbdokvatbZEFJHuVUstG9zeSDLr5RdvL', - '3BTqdvZt5MYYWLAGXt8psAMSAa8Gh2AVPA', - '3CDy1xZavmpd27jV6TZm5teH8U6hrdXRES', - '3CPEGQzA227hHR2jUf66MdgBJ5wPnDdaW9', - '3CQBneh4TJtHGUP4QS3mfJc75NoiGgKwV3', - '3CdzzKFGY7ZahrMCM1tBgoxrgSPUWX4RVY', - '3Cr3vRcZD5q4XbXCVTo8sFCN9Xb7z5isth', - '3CrWGaRncSudU3EZPEhvWqeU2PG1xutr5x', - '3CuoRMhRXvsxdYsNL4kmKDJyAhaDB7SmBn', - '3CxK8MVHuqXW85z4MF7A4FYk8k6jKPFgPW', - '3DDUy5Ze4TaqKFpktAhHcmmffz9KKGtTrb', - '3DJNy9xMcMsNdmdipTgqME3TJCRkv7uS2g', - '3DhbEcm1SuJjTRxZBXxHyceYGm7GdRB2pM', - '3DiJgisVit4pqj4ByKxi5p1qdjGDxpGfR4', - '3ERNo3RAgP8o5jqELPKUEV47ADm4JtvKBd', - '3EedqW1fD4QRFmrPgkZZZvzHRzj9f4xVSX', - '3EmKqHZhXic3TymhuY8NLS7Bdk91erm4V7', - '3Epe1CixppBP9QSQ7DkvsWNKsgifTaxMY2', - '3ErNFK17MbH3GAGfakMwTrKo8uHmBuuVX1', - '3EuEvwodW88xEuwecsLb76x16tLxcUZAxx', - '3FDtvkk7hpZq5GuEJxt3Ps95vjtdDEfJ4T', - '3FFgKaYkEf1M73QtzuY9DGqC7VeM2sAQhT', - '3FHRnMSaGMAaLcoHbA5EVcEuYVxTEZdTyp', - '3FKkCxSZe1c4xZiVyJVBTbvzs9Lj1snqVC', - '3FVsTChmR7WYgfnU3CAmrrD3kqmaRMaJCC', - '3GE2pWumzKXnNMA9PFggsBwyk7NYSJvGGg', - '3GTk9xdRHnPQ61Pm7Jnv2Z8hsXv5FMVyeY', - '3HFrW63zQ58PypYhSYgHB2gij5VirsyRAm', - '3HGSCuXjnfEncUCPQ4GzNrv3BHcmLZFdeT', - '3HHLh4HSK8wj1w3YW9i4Chdnuybgadhpz1', - '3HM8YGKhwwnZKmrUEoGroEgaG3dv8xkVZz', - '3HVCDPPbAqiRwRjXhvu7PSDkLGgEajexuH', - '3HaHcbNmhJKgJ3dtbm2tg8XH87BJkRx7QE', - '3HauLvRoUBueiiLwebk19w6rnUTYJkdwNW', - '3Hdj2n5DEKPGsRd5md85exAXdwnRbomWTy', - '3HpHptRrwK5x9i7uULvk116QhsAnRJfJb8', - '3HziaqLNy8PpyQFLdwr2yxCjwEjRUjN6Eg', - '3J37HnDBzWN1sm65mbD9U5zvKrp2bzhuYJ', - '3JDewabYE785vTmaQe3MuHvUvEZJQTx8HU', - '3JMDjCYxxi5MF3aXRx8Dg13Rign3masTXj', - '3JcNkH5QWYuSfiQYADq4yV2hAYnQ8KC74t', - '3Jj1juATP11jHfBvRiu3BbzdJCNeRskqzJ', - '3JqwUY7pUwEWu2hz6mwzZKSQnvKyRRXCQM', - '3JvmhjuxvLVM8NQzAwwMvzWAK6zDLQ5Aor', - '3K2mpXMDFe7cT1baogitkRGeXqCYeDw6J5', - '3K43ux5cCAxfKgymq5eHnHS1toC9nrERbT', - '3KAGrSyTsKLckBgN7AiAfojbScfjGAHwFz', - '3KT7jvZyvhok3fkZt8Y9w8tcqpyQW5Jg8s', - '3KTeq879YjzhqkAXzZmdapJAVC6qz5qEth', - '3KWe9k7TG2j7xNw8BP9YHXBeHy1knC1xGS', - '3KXKTXR9YxHuhm863nqnSrKznkYtcx7wC7', - '3KeG7RzDwGaTywRfQgPCQaeyMgi7C89eQc', - '3KwPoNu1FxihhyRKjv1VG6C3FPy8vgjyse', - '3Kx4doXvL4UhDrKJqn8FoS5wVU3VeS9ebM', - '3LScoRmRA3kknxF5dLxz6wfw3z4LXRiVyT', - '3LbLR4uiq7RFrWgDKHfdgktAC88qtwY2Li', - '3LrxWneLHwvbNrMKXorkc17wxHqCCpNGkq', - '3MJ4rpTvuiTxYhTppNx7NokNUDZg26ofi1', - '3MLH54DXCtmydRocRZz9pEkfTTGWribBa3', - '3MM2BiaXBACfKUtVsyNr2RDXyNEhunez6v', - "3MPcUSHeWCSxCUsJtTS2L2zZfWLvorNFef", - "3MUJjyx13waUriNPkVnemdoJAiJT6nBmef", - "3MkzCjZjodyaBXz7W8i9NTjduEdykdkd89", - "3MnCLWSq31hetgbVA1Xn1VxVVb31SPeSKa", - '3Muz5dT5EguQgTiXgQ1eqJYNkjjQuSMgsb', - "3MwfxJqsy943oqYhbdKiaBrFSK9xbyiAi9", - "3MzRi499Cbcr4795iRnznfC97EFji23h7n", - "3NW5tDLFceDb1a75QkGampkuuceZ3YPMUX", - "3NfBFZRgKfHVJy7rSTutZyGpa5M2GpRdwu", - "3NmVi1xVYZj5YXU8wcQyoUfcVRCLcYhqqQ", - "3NsC2NXzKum7sVWQLQ3YYB3o9JbTz5FoaV", - "3P4EDeK5fxCLEQzM7iQ7n95DWgG1cXSaqG", - "3PRCCQMdWwjEKy89iVdL8LouknsgygwWpL", - "3PRHbh8ajUXv5wPD11CxFRs1hWBo8vR3zW", - "3PfcB36gDa47YkrbRtzZSwmrKSMsBSrhr6", - "3PkGNCt85M3aNQkBqiT5Psgmz8FjNujEKK", - "3PnoF45bZhJcPKGLf4nQzyQVAEFsxBxQQa", - "3PxV5m54ZwMDheUyFecvRVQHJK7WG1t49V", - "3Py2iN5SEwSCtT5QHkDU1qhbvmdmMZ8cpK", - "3PyK2LYBfYMUXsa8sMhTSHQZ8StQy3Xoz8", - "3QSd3JjJ35VAf5Shv3EPVpGCi5eVMQr6dk", - "3QWaxXXXbobqpWprekwzANeFuNrYXmaNXU", - "3QbVP6bTSXN2tXG66MTKtHtiJ1coKXnrjP", - "3QdyHj1i4y5CywEFWJ5PwoqGzDxGyJGPeb", - "3QjqS6A7uyoCx1vcXQoqtLatubFmsHe1ps", - "3QmVyCw6YnEvt1jXLeF5863uHPLRaKhWs5", - 'bc1q02kjkf8gp628thqdfrm54tay5pjw05w297d6p6ez5andhp9gf0nqjaa2e4', - 'bc1q02py7892mlqafaz9wevclp8ve4dl4z6hy4sqp973sz2u4fvpxnmqnzfc2f', - 'bc1q09z8m23n7w7gtqsxpgwun0zvra9jwzf4z9c48cezq36q3zvmsuyqdmyjkn', - 'bc1q0vac8d7jkyds2ux4jqwu6mu943z8keyxq4twaw8p8md8j8rtj94s9wrrl8', - 'bc1q20yv979atkvtmecs5kj88a0pmf85ht500pmp7p2ztd54tz0u60psj7c702', - 'bc1q26ds9juuyjtsek5czqasrvmptf46xan2hfyx88jqzpz2pzly3p6qrwd6e6', - 'bc1q2az30y4lst2x9wlu77kzzdym8n9qr77n0kqmevs4ahf7dmzw624sck5vm5', - 'bc1q2ssdu5v40zmntqc76kaxw0xf67eathhpg59xczh9vpp2qlf3mdrsgr49s8', - 'bc1q2vlwakkk247pnppptdv3kgxj23yptykyd3ge9vvlk2w8h98v7pysmmknxv', - 'bc1q2wyzh5ex2cr7wcth0zsm7ueycg2rkfw28fy2g6axky6r9su9zcls8qngt2', - 'bc1q32phcv5dhwkw59xljxsz2nw8g4he4ssduw7c6d3d6005skfy9gysa6crgk', - 'bc1q35fxxu53qsmv77cjt6ucdj5wu4r8rae8eakq5j5v8nzgjtcmnpvqp6g3sf', - 'bc1q3aqsr7dsajmslelacclkgmmyhd7t6hkeevpw50f5areathvfmwnq4nwt3y', - 'bc1q3cpmjfcfkh8t47q99y5wgwxzvhsw8lywzgvnvnlrlwe6h8xcqw7qjwf646', - 'bc1q3cpz06gvfatn0rgamwk7lws7c7qyt4napdr6h7fsj54zg2fy9wtsahl7xt', - 'bc1q3eff85qd4rhuu8gvn933fvtzg0ys3y5amchq8wzhhylhqvfh8kxsu4kde7', - 'bc1q3l6qerg2gyzxpuk0mmhswkgedrqcqe3eesyhatwauyv980syulfspttjcs', - 'bc1q3qw5de93m5ukxra5md872kjyl29arplm8c4vrh9jggsxp88kk2zs74u39g', - 'bc1q3uzg46kmqexn04rkhsd74t34225tqv88xp3jglr2hpxxu5ujrwyq9amgrx', - 'bc1q424nhx6tpljt65aren3q5hmsx4dwt22g9574lpjnlvtc309gtkhqdtwcss', - 'bc1q47vlc3v9vfqh2sr8f47ukaws408wcr95r27t26y9qxgc72yzg9hs58yzek', - 'bc1q4agva2hg94cdr7xdeg4e7wekq0vkrqggn4kqruns85e69xtx750s7dc2hy', - 'bc1q4ma898qglhvqsjs725emwtmayr0pwj9nmgguqac44styjpjc04ws8hwp7k', - 'bc1q4nalse7wwqe6sx3slmkyywetlzn3tdud77jesadx02v885qjs74spqtg5w', - 'bc1q4xmshjnx7up2940zld0dls42jnec86drca3ph7cjhtsdlfgq3ycsntpvpw', - 'bc1q5anhs0xpsayee84r5yqazljkfn9k92d6dkjfpyq509sfmsdkhfts2vh8l8', - 'bc1q5d93mqzlntc95687tq2un302rnfa6vnlnche7pdxzuypyl2cewnsqrzxc2', - 'bc1q5nzdfhdjv6dh5r2pgdmtxhvkan8stl2h7zrhth908slszrzu2snqm3ds3q', - 'bc1q5qv0gtcfdumqrf9fjhd82uud7whpsam7j9e2dq3k9jy3mj2rm3aq8yj3u9', - 'bc1q5rxwzkcl9hux2ltuppg5jl4c4ld52l3hk7kq8g6qqnjluk6kq5xqp5dpzd', - 'bc1q68r3tjqwch4q5nyqf03a3n3ugcef75klsmqfa4g72k63npwn59hqj2d6hh', - 'bc1q6aw25ef99245cxc4l9m5nvn5fel6tmrze3nfxtstv08yf5jkdvfs5rrajc', - 'bc1q6xdt8tmlp5p6exvsmuf62yswm4vnk0rmm950sdhlqgyxluahv3qqquz3uh', - 'bc1q6z0cm8gzhxz87e5xdlvkpnldj9zspustx7hedll73zg4n0hqemhsrm4d8l', - 'bc1q7awsmqawsstwlxtt48lt6y2hv2qjsju85jgz07yr4hhdcu5df0sqwxc63z', - 'bc1q7h0eyvjp58p5wz563p04lhjt2nef9q089mcdchr9jzz74lq5wzusqckmj2', - 'bc1q7trechgv0g6kgwdcu3wsxkqn9lrc6edzdgvdvpt9a9rg04l7gtvs26hps3', - 'bc1q866pgqwgxvuqvqmkmcfh8n52dtgz3fv3nh5cq3mufqv0ssz8q93qc2eadh', - 'bc1q86aapgzcr7078499tlhp4aatylujug9d2rxwccaekmjgv8j6f93qljjhx6', - 'bc1q89mxkg0dhr3m6vs2gzr3wqccwpzrmnpsldnjc22ztldhqueawtzsq82ydf', - 'bc1q8nr29r27mlkvj0duseshuw5vueywt4640tyrt9jusrk0c9kz2klqg4n66l', - 'bc1q8qlz3znvuq0mk62j0dld5hj3a5uf2y06tcuvtz2x3gffs6gxejnsx2hfk7', - 'bc1q8sw5c5sx3s0r5tujaq6hahnjq88yvrdhepss7qdfaz5evjux6nls63mnuw', - 'bc1q8xamcp8xc3rdh4vqtexgrqfmwlkw0mkruz3gkwaw027erjsrnd0see34cc', - 'bc1q8znctxhsh6knhp07z7ufw8zusucef9vxq7rjrhgf0wecxl7aqcrqz06gmu', - 'bc1q93hcme2prs7upr9zkdakl85jje3leg8g2qf70kstacjuyzy95xkq7h35ft', - 'bc1q99gvfs8e2fsd8zw74wdg4fmfg46n2uf5pjlpt87h93qar044rspsxwck6k', - 'bc1q9eammdvuqyhswd3wqp84d56ah0hyuus62smarhsdw3l3rycjgrhqsskvuq', - 'bc1q9j8l760q75cep90p9gq6dsj3p9d55ewpwkhcmw8dnzcd7tmfg03sc0vmqh', - 'bc1q9xlm3uydvuu3nn8dan0zqyr7e6p3pjh7gxnw7jyv0tujl44dgt6sedtus3', - 'bc1qagrn5sn73azr85navkf0ukh336qvktfunejkzauu9adsuvfvpklq6qut3m', - 'bc1qasluf865jx838k9nad2r2rnp04w3txqtyu7kapuxrv0m7rv90sxqhvjxuv', - 'bc1qc342v9mt8j354pjyaqkweu9nrztcj6cc8udgyezk7dxhjddjcn8q7w9fuc', - 'bc1qc46r9xy82z23s6q9lglhzf60fdxxq5y26x34kdx7dx8549mdtu4slym95w', - 'bc1qcd7jv45swrxgwlj55gfnlxf3tvsm4ek0yer4xac5a909jtxzrgvqyv5v0p', - 'bc1qd7dd9qc0pehqx5a2arlpmlgh30xpfufx9hpf2kfrnpqz2x7jl0xqpmcru6', - 'bc1qd8wk5eesxtynkrjx42temma0spfy0955tr5e5lp267aqhalvpjwq79l4yh', - 'bc1qdj65qknp4cnvxagp0pqnjl3g7d3s8gzxqzrrlh6gutju0ytdfwmsfeetdt', - 'bc1qdt0gu9n7ykyvyhe4v7cmftugsn5qw59rm4tdxn4f8vxs6s694n8qp9u2az', - 'bc1qe46f05uenszej6hvzmxjw8fxyskc6utv4cueeaa77jjea87vjh7ql8wgd5', - 'bc1qe4we3wxhj4f0wy40ftfxfvawmt4hgkgvtmpnn3lv5wme8yzfrltsckhg9g', - 'bc1qer4qvha5nxz09qn7gt7xntvrz2crnaxrd7ju4nmcjm7r9uerc9xqa9gdxd', - 'bc1qesmtfxs4n4ws86242uqpztseyh7l5tgswd0zce5nggaky44t9c4sfwczj2', - 'bc1qetecvjtaya283z7zk9lftqtv03ajx27ekz6uxjpscpap7crkvgmst355jn', - 'bc1qeuz6l0qusf9pd923v8w086j8umn765a7hqvu4su0dfq90ckym47qhvaux3', - 'bc1qezmmhc5k7ccnc6q7l8dhkg9phcnehysq2y3ahdzzcweph5ang9xs0egasc', - 'bc1qf5p8wp6neu0raugt6t7zhm6vjhy3taf8q7rqwuhgdmdnhvpz2c7s8xtrtx', - 'bc1qfcxzh8ag5pv37qywg8wylherg64k7skz0qm0ghc36x7awrd8xszsfxc4k3', - 'bc1qfenuya7nskcjlyxpg0gttrjap9e5gtncxga0vvl8rekyeup55n0slzlhr8', - 'bc1qfeuww8le80ae7qat3kpzspsh7pa8na3qx9fuc4qpdt3w5q3dkavsc02wk4', - 'bc1qfn70w8peuvvywupd8u667g832necv3w6sqellzvd7aaj8l52nhhsfzs6a4', - 'bc1qfpwewuyg8erj2cejamms0682v7ncgdgufdq8efa0maef3uzunkgsvdwyzm', - 'bc1qfugah0e9fw9ze34dpqf22yxqxnxh49wrcq9d3kuqc9dydfhn4pjsjqfpky', - 'bc1qg0amsvtlglecc6x46rzjprjh7wscjzlgqu6n52zw9nz0cck2r5sqwew946', - 'bc1qg54vzuplejd6ymxlma6q7rfyc9zqqes8wvz4xs09mhpclak9z73sf3x3km', - 'bc1qgs30czhkxhxn5qsunlzac0xeznyaxg267p5t8gjupzg7u97vz4zqyuf60l', - 'bc1qgsgj3dh8dztq05v9dzethjcpjqtptm5tsrruprz4w7awzpfrku8qjjegyc', - 'bc1qgxww03juwr8vfp28tzpmyyku3j6hxrgpl0v6natkk2ucwu4weweskcqvnl', - 'bc1qh4r87gzpcx3lz7faz349yvp8yr6zyr2706m2xzsuwcwlptkqsj6svkaqtf', - 'bc1qhagykgzhhh7yt5knsypklpqsgdelrvw5vz73erujapcgh3x5wxrq8c0y9x', - 'bc1qhgfkccy09hr7hlky0jeyz89afan8qh66wa26t4se4mlqda6298hqrtk5zr', - 'bc1qhkw43w4cvzec3836hqrdmxksm20l35yk7gnvysqprd6gareztfsq4uplfs', - 'bc1qhm46vtwep0awkdphurmc2ku3lfp8l7z9f6wn9va42lc3z24zd2fsvnvzk3', - 'bc1qhpnmnswf8ls2q97vg4qzlr2a6c2xpr46zp59e7q9uh5j59ask2ysld0euq', - 'bc1qj2dz58v8etgq3aud24yrgffk73d9cue80kfswl58d5w4vvhdfsyskxtll5', - 'bc1qj38tl824hkgl7qluy32lklp6qfd9d9zqa9qlyeh28khfh9grxwastu3xnw', - 'bc1qj8vt7h7ufrgqlhhcu22vl3jrvx3kluml57kha352k9fex23jphvsuwme6r', - 'bc1qjgua88vymvkctq9t4mcd4q4mlqnr3r07lylp90f7epc9p6qcv6asteyjec', - 'bc1qjpgs63vqgfkalm8janwmelw4mr4wg50axnmx5ueh4ru2xnl3lg7q80yl32', - 'bc1qk8plwr04uu6mvpcf3wtfmg579ztqn59q7yfx39drl9r97q4wcx2q43rvw3', - 'bc1qk9fhnvv7a0nxzxxj503v7mfy3uwdugymj09ugkrda5895cfxa5vsnzp8l5', - 'bc1qkd53jhtmhwv74x2c8hnnfzspatcjdzk0h3f2czqzrav0yxpd5y4szkslrs', - 'bc1qkn3s4hzjthfmt68sk30m69knjauwphsha2paqzexjjmlfc6h7f3sggfn52', - 'bc1qksptar8mpay2mfwzwep3aqxevnc8jj8d4rd82v3v0hm5p3y93w2q5eufa8', - 'bc1ql26wgacxjhuefzcph2wpsyftqzd07kzkczv60d85hj7280qkrz2qlgrhf7', - 'bc1ql33nnw3ngcf343jtmzpe8ps8809nqe0530rv6neu7cefkz6dtcfqn3wzav', - 'bc1qlg2gcz8hzfdt49jgs0438c7ahg4967nfkflzj3m0r5dz3xz7njrqpxxj2j', - 'bc1qlnz5vejmvv6sdy9k3c7a07nlf6c053g0ren0m8kmmsrx677nyllsg6qr2m', - 'bc1qltg30ayn5wexka07ta2x5dnfjf20rqnemf4sfnsase082yfqetfq0s20hv', - 'bc1qmfjm5hlgjfw3tc6cz77nzjcc5xg5mjhrlm6kqewczapae2yhucrs5c0qvf', - 'bc1qmfwcwfntr2adas7yz5l3wn6pnm8rj55l8fk5vgny34wld6d0vfcsg48tta', - 'bc1qmfwq5cjm55m0kcfemjyv6rj8nfunslfjtuhyqawksw892dhvu6wscem2t5', - 'bc1qmmdfeczme4q99ccpmgfx3zxwwwff9nnjhdux47hucwttrjdpqj9s2x8rds', - 'bc1qmur9p99tzxtrq0232tl6nssyejrmwet3m265xg0cgl7uh2qxsy7q0m8fvu', - 'bc1qn3r3kqf90txgcsdxzu2s0p5avp79axlf98lzrwlmpnmxc3ak0vwsuxrepa', - 'bc1qn8w83eglpp7xdtgyjaysgrve5cjjr2yfhsq2x5xyn6cmvup0uwlsq2t5xl', - 'bc1qnpnpcn4gwssvkjpe27zzfex2t997l7garmc2s8fenmk0fpydek2s6zp9yz', - 'bc1qp24kgu3r5n3q6k03230yj6dzr4styppjlvtr3ptdsd7sxql8pcgqwall05', - 'bc1qp27x9j8damzuxc0x7cqkcaf39q4825aafmx3g6mlvh2wd5tzr8kscsjplw', - 'bc1qp6cmqa7hgdean0z8jl7uf20rzf7wgvstmjlxekft3l2vn22zwl2qhunr3h', - 'bc1qparrejjdyc8hcd7hgljlx53wy7ncrjkaz670w3ef0ade369y22eqkujzy0', - 'bc1qpdthtpfcmju642wq4eqxl4uz5hfgtztvtv7u6wrdepnkdsugueusujpg76', - 'bc1qpp5wu443kdfur2vhzwms8d46gq8c2vgu692sgyn79z56gkq4mkvs07gjkd', - 'bc1qpvvt2md0t7435mc8dmlgd5euyc0636vlw8ew25e8pf83uc68km5qpvqpfx', - 'bc1qpwtgr4rld3wr39r762ngvuk8qgvgkrrxra4jdnmn06z4nfgh4vtsluyd3t', - 'bc1qq3p9mqvegpadextyqzxy46ukf5yxc7ej50ksq3w63f895q0t8rzsfe5jym', - 'bc1qqces3upduq6e0c2w0k6mr9n4tkgvzkggteuatqc4eyxawwkuxzpsfgdxzh', - 'bc1qqjmfwnxrjx0khaxf8qa6ccnz7s94k9wa8lelpdy2fn6jf9ffks8s5r4frd', - 'bc1qqlm6edz9azp0d6y4mjc8j8an4q8du2jajgwj65mmz6nkk53yannqvtnvnn', - 'bc1qqlus6fyt05kewddukpge8u0lszp4ffn49mqnr3pvrh2whptf2fhsy6ynmn', - 'bc1qqvf7qq7wvx6pkp5aqvzdxs0rgqkjgqe7ev63hnppxq05t6v3w5ysskzjs5', - 'bc1qr20qujcyr87y3uk2fgkq93u0jtzl6wa4el90we4txgcwgx6avxzsuj0wcx', - 'bc1qr6cvgewvlts5f9wa8u3cpnlmth0mzn0x96ap34hknpaayuyknrlssqfq3n', - 'bc1qrm7nze8cqyazdlhmw8ffeusxucqtvyw3pvtple0047tdkupdnmustkla3w', - 'bc1qrsayv4jq9uf6rpmwsxan3yqxuqtyelwt7k8298ejl8h9tkrunthspnlm6y', - 'bc1qs0q2svqpeaka6f8jakx74j4rydxdmxq4wz7xfy45m6t8xfxzy0zsckrym5', - 'bc1qs48aaups6tzwcs372yqhakcjakfgf6w6aguj0w7gex75vrnjegmsp5hx8n', - 'bc1qsgthnvghgs9wl87kzhkx9xda4xyu35cxfteupjnvxv3zuvgtdyzs9a23te', - 'bc1qsln2s8xu7sv84wj5sv2pjnfpev8lkcqpzmzukmygcll26vf0kwfs6awzkj', - 'bc1qsp7twu469a8p3enevzwdnjhrcmtmc7ljydqxxp4p69u4ggj9wazqa9gsgw', - 'bc1qsrms3khzhupjxph0u2sy6sz8c9q4g6nqm3dy53nrlagw3lc5zmsstg8pft', - 'bc1qsuzvly8z6kr080at2twdlfs8j87gu08kmwlfstafm2lajdvfclyqtvq00a', - 'bc1qsva32zdzx7cd9996qdlxkpl0dnyk4s44myx53zpetf4u7rfg89fswjzza5', - 'bc1qsw4hj3dvqcvtntvsflx8474f52nt6zer5k9pyem6n6g27p8nc4xsrj5fxc', - 'bc1qszmwz85wktn6k7tg953pugtedmssguaavl8qukv77s5u0g5mx3tsmw6pg4', - 'bc1qt3mw55ccejx97tyjdl9dhe60wvextxddg8udxz9n8q8efwhr37wseag63j', - 'bc1qt4ck5563ra7r3xjqlfqm7au407q2dmc0p6wvgyzy239nyyn4vsesfwwsa2', - 'bc1qteyfers4wvfhp6apw4s720tzvp9xafkvvfh7k0sxmu8vrxvt2m5snw45v8', - 'bc1qu4g30hr7lz3qd9jn68x4f2ycl3s533jdtv96g5n96d40kac5l5tshhkvq5', - 'bc1qu5k2h4y9cynds4j3t5d94xg78zpzhx3elk6w93e28xmxrnn37wuql9xf4t', - 'bc1quljnxvuryumd7c44u7f8dwflas5aghecg8ln029v2s7ffezun86qn0wyng', - 'bc1quryt5u9j5rec96c4h6xxatn74nqcen244q3dtgwtpjkma36vvrmq9mjecg', - 'bc1quxy0mlwssdmzsxgk2ct42p09ef7mc9qwmpdjuzy9f3h3ye2k6jzsvmmrsh', - 'bc1quywrhxx6t7mkqshcll3q99qrqlal73l668wldgrcxpa4yvuj2x3qrhsg9m', - 'bc1quzwyq3wewr74vvgwa6nqfj6n6rsc2tsh046glq0n76x9alcpgmzsf24s6x', - 'bc1qv0u3a7jdaygq680cu52puk4xrrr4ckpjqqgg88x66cmfnrfj5c4sre60e9', - 'bc1qv837fuujjlu50z3l6y48vxkv4vd09vve58t92welmxy9lnu5l2usp6hd0j', - 'bc1qva8lqtdcemj9swc6trk4je45xzckqhs3fthst2hy0k3plywfeq5s639wn0', - 'bc1qvfmnrg59p8a3csj032uyzl3mdtv5y46g3mx33krz5kweyvq78f5swvdmna', - 'bc1qvqaqr0jyxf3nphux7gla78dqa9psfpyy0v8med9t63f0x6n2k40s7knecs', - 'bc1qvtckv82yw4efeu9ez8y37rne5ghzxeqjl3cqnsyxf4gm3zhuhc8swt5u3h', - 'bc1qwdgyle9p2gcvyn22sg2tg6jaqkxewjz5xfj229p989dcteu42adqnau2lw', - 'bc1qwfeq7rehmzm5434vaa485s98788cmyyrac2w65nulvucsg7cueesly7x05', - 'bc1qwfydpavg240d4j87nrg0ayqhfzwrt9revzw7a9dpyxujnlpu2xus07f6ud', - 'bc1qwvrrxxqhc6l9zd8rwj39sl8n39v69tju9sfc59dqxl3fjx8jnfqswzs93f', - 'bc1qwwkwppejx79uszdgfrpaaqc24wepvjy729xhx2zyd3qyf3ftfqrs672m9d', - 'bc1qx8xlxd6qnmqprgjs6yr4nd870tt4d8yuupwq4qhl3hh24ulpmk4qem46px', - 'bc1qxfkxl66ee59xpxr30tcexvh9zgtvf7gwtyauj29n6txj7c7a9e9quhcaaz', - 'bc1qxlj7ls9zptgj779w0gzfvt8chpl29xdcv5qjqdw7g462uf0c90wsvkw74y', - 'bc1qxnxp0qdzx07jw3tskcp79xzs7p6p2wpwx4sn7myrx8vgj42f4prsrlcknw', - 'bc1qxqnj2gdznm37yhdw679nx6rqs44hkd2lddj2gn4uyaa5htmjvmzsyjcu7d', - 'bc1qxtf7mx5scgetaaz30w6ngndq8xctegjacvphz2tgky5r9et0q5uqwyks8t', - 'bc1qxu9s6qy6hld9uvd75em9t550q7ppezsmkheldsyny0pzj9yd7e6sqg3qv6', - 'bc1qy30syv0sqafmkt2m4h6lf9tjeddurh9cypa9p8wras2hfjf4y4uqzdz5sk', - 'bc1qy6tfy7k9cjp40m2lcq2s8wrsn88jdn3ffj5ph7uvwxuamfntaylqk38dwp', - 'bc1qyc4v5dtapyta9mcu5n5t9va72rzd9g75z83qxxm90ne4vzhgleeqf9lcfl', - 'bc1qyd5989kz0jgayxelnz7wlnnk5gyn36v7cecjrkgvph4260aew2rsqzx3ua', - 'bc1qyujyd6q7dtnh76wchgavwgxpklkwm73vqllududlx2uunx28zdhsxnvd47', - 'bc1qyvpmf6uv8xgxrvcwc5w630d4vg2s9ztpd64fe0e9ylxtuy34e4lqnmv3sq', - 'bc1qzck7505r8ahwq9g4xuwr60lpflxv5h75y0jntgasd0t9g7psvmqsr902f8', - 'bc1qzgw25sgrn45909quqlydd9729ksj32mfcvwzl44ekf2kkgctz09qvr779j', - 'bc1qzha6dcp9mq8ne7s3cxgp052qzux3jg25fp7cxpshrz0a0005h3gs30vqpf', - 'bc1qzk7gnzhyqcl9x7f52lckdhlznv94k87gpm3fsafvn487euaymmasz95cwa', - 'bc1qztewvcfe424fxat7s2uautmy5ctnsnurul474e2emexfnlj6upsqem0g8d', -]; \ No newline at end of file diff --git a/projects/helper/bitcoin-book/woo-cex.js b/projects/helper/bitcoin-book/woo-cex.js deleted file mode 100644 index d633c3db58d..00000000000 --- a/projects/helper/bitcoin-book/woo-cex.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = [ - 'bc1qh78w4qq9v2dqntjtxne97kp9u2485jdqrfsghh', - 'bc1qm4hycszv0v0qel3swxqyp57nkpnnrda4rc55lm' -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/xlink.js b/projects/helper/bitcoin-book/xlink.js deleted file mode 100644 index 605481c046c..00000000000 --- a/projects/helper/bitcoin-book/xlink.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = [ - "bc1pylrcm2ym9spaszyrwzhhzc2qf8c3xq65jgmd8udqtd5q73a2fulsztxqyy", - "bc1qh604n2zey83dnlwt4p0m8j4rvetyersm0p6fts", - "31wQsi1uV8h7mL3QvBXQ3gzkH9zXNTp5cF", - "bc1q9hs56nskqsxmgend4w0823lmef33sux6p8rzlp", - "32jbimS6dwSEebMb5RyjGxcmRoZEC5rFrS", - "bc1qlhkfxlzzzcc25z95v7c0v7svlp5exegxn0tf58", - "3MJ8mbu4sNseNeCprG85emwgG9G9SCort7", - "bc1qeph95q50cq6y66elk3zzp48s9eg66g47cptpft", - "bc1qfcwjrdjk3agmg50n4c7t4ew2kjqqxc09qgvu7d", - "1882c4wfo2CzNo4Y4LCqxKGQvz7BsE7nqJ", - "1KGnLjKyqiGSdTNH9s6okFk2t5J7R6CdWt", - "bc1qt2kjf5guf4dvv4mvnswyk8ksaeuh5xyhc5gz64", - "19GTEWTnVgenpDWSdQEAT9LJqMFQ7Yogsu", - "bc1qxmwuugmcnn5k3hz22cxephy2vkevvt2knsd6u4", - "1617Cf4qmjqVyiN5weQRo8sZvQvyDjshKP", -] \ No newline at end of file diff --git a/projects/helper/bitcoin-book/xlinkLST.js b/projects/helper/bitcoin-book/xlinkLST.js deleted file mode 100644 index efad41974e4..00000000000 --- a/projects/helper/bitcoin-book/xlinkLST.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1p78mvfa550t7acg6wm9cl9543zf68ulhqkxex5pvhv8wnw4qpl3gqmpjy2s" -]; \ No newline at end of file diff --git a/projects/helper/bitcoin-book/xrgb.js b/projects/helper/bitcoin-book/xrgb.js deleted file mode 100644 index 67462641682..00000000000 --- a/projects/helper/bitcoin-book/xrgb.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = [ - "bc1ptm05s4f6f8j78zhx62lzx0dep07f2597nlgeltmm4sjn5stdu6gq4sxg2w" -] \ No newline at end of file diff --git a/projects/helper/cache.js b/projects/helper/cache.js deleted file mode 100644 index 8966c69068b..00000000000 --- a/projects/helper/cache.js +++ /dev/null @@ -1,169 +0,0 @@ -const sdk = require('@defillama/sdk') -const Bucket = "tvl-adapter-cache"; -const axios = require('axios') -const graphql = require('./utils/graphql') - -function getKey(project, chain) { - return `cache/${project}/${chain}.json` -} - -function getFileKey(project, chain) { - return `${Bucket}/${getKey(project, chain)}` -} - -function getLink(project, chain) { - return `https://${Bucket}.s3.eu-central-1.amazonaws.com/${getKey(project, chain)}` -} - -async function getCache(project, chain, { _ } = {}) { - const Key = getKey(project, chain) - const fileKey = getFileKey(project, chain) - - try { - const json = await sdk.cache.readCache(fileKey) - if (!json || Object.keys(json).length === 0) throw new Error('Invalid data') - return json - } catch (e) { - try { - const { data: json } = await axios.get(getLink(project, chain)) - await sdk.cache.writeCache(fileKey, json) - return json - } catch (e) { - sdk.log('failed to fetch data from s3 bucket:', Key) - // sdk.log(e) - return {} - } - } -} - -async function setCache(project, chain, cache, { _ } = {}) { - const Key = getKey(project, chain) - - try { - await sdk.cache.writeCache(getFileKey(project, chain), cache) - } catch (e) { - sdk.log('failed to write data to s3 bucket: ', Key) - sdk.log(e) - } -} - -const configCache = {} -let lastCacheReset = Date.now() -const cacheResetInterval = 1000 * 30 // 30 seconds - -function resetCache() { - if (Date.now() - lastCacheReset > cacheResetInterval) { - Object.keys(configCache).forEach(key => delete configCache[key]) - lastCacheReset = Date.now() - } -} - -async function _setCache(project, chain, json) { - if (!json || json?.error?.message) return; - const strData = typeof json === 'string' ? json : JSON.stringify(json) - let isValidData = strData.length > 42 - if (isValidData) // sometimes we get bad data/empty object, we dont overwrite cache with it - await setCache(project, chain, json) -} - -async function getConfig(project, endpoint, { fetcher } = {}) { - resetCache() - if (!project || (!endpoint && !fetcher)) throw new Error('Missing parameters') - const key = 'config-cache' - const cacheKey = getKey(key, project) - if (!configCache[cacheKey]) configCache[cacheKey] = _getConfig() - return configCache[cacheKey] - - async function _getConfig() { - try { - let json - if (endpoint) { - json = (await axios.get(endpoint)).data - } else { - json = await fetcher() - } - if (!json) throw new Error('Invalid data') - await _setCache(key, project, json) - return json - } catch (e) { - // sdk.log(e) - sdk.log(project, 'tryng to fetch from cache, failed to fetch data from endpoint:', endpoint) - return getCache(key, project) - } - } -} - -async function configPost(project, endpoint, data) { - if (!project || !endpoint) throw new Error('Missing parameters') - const key = 'config-cache' - const cacheKey = getKey(key, project) - if (!configCache[cacheKey]) configCache[cacheKey] = _configPost() - return configCache[cacheKey] - - async function _configPost() { - try { - const { data: json } = await axios.post(endpoint, data) - await _setCache(key, project, json) - return json - } catch (e) { - // sdk.log(e) - sdk.log(project, 'tryng to fetch from cache, failed to fetch data from endpoint:', endpoint) - return getCache(key, project) - } - } -} - - -async function cachedGraphQuery(project, endpoint, query, { api, useBlock = false, variables = {}, fetchById, safeBlockLimit, headers, } = {}) { - if (!project || !endpoint) throw new Error('Missing parameters') - endpoint = sdk.graph.modifyEndpoint(endpoint) - const key = 'config-cache' - const cacheKey = getKey(key, project) - if (!configCache[cacheKey]) configCache[cacheKey] = _cachedGraphQuery() - return configCache[cacheKey] - - async function _cachedGraphQuery() { - try { - let json - if (useBlock && !variables.block && !fetchById) { - if (!api) throw new Error('Missing parameters') - variables.block = await api.getBlock() - } - if (!fetchById) - json = await graphql.request(endpoint, query, { variables, headers }) - else - json = await graphFetchById({ endpoint, query, params: variables, api, options: { useBlock, safeBlockLimit, headers } }) - if (!json) throw new Error('Empty JSON') - await _setCache(key, project, json) - return json - } catch (e) { - // sdk.log(e) - sdk.log(project, 'trying to fetch from cache, failed to fetch data from endpoint:', endpoint) - return getCache(key, project) - } - } -} - - -async function graphFetchById({ endpoint, query, params = {}, api, options: { useBlock = false, safeBlockLimit = 500, headers } = {} }) { - if (useBlock && !params.block) - params.block = await api.getBlock() - safeBlockLimit - endpoint = sdk.graph.modifyEndpoint(endpoint) - - let data = [] - let lastId = "" - let response; - do { - const res = await graphql.request(endpoint, query, { variables: { ...params, lastId }, headers }) - Object.keys(res).forEach(key => response = res[key]) - data.push(...response) - lastId = response[response.length - 1]?.id - sdk.log(data.length, response.length) - } while (lastId) - return data -} - - -module.exports = { - getCache, setCache, getConfig, configPost, cachedGraphQuery, graphFetchById, -} \ No newline at end of file diff --git a/projects/helper/cache/compound.js b/projects/helper/cache/compound.js deleted file mode 100644 index 2bfa8f10487..00000000000 --- a/projects/helper/cache/compound.js +++ /dev/null @@ -1,69 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') - -const sdk = require('@defillama/sdk'); -const abi = require('../abis/compound.json'); -const { nullAddress, } = require('../unwrapLPs'); -const { getChainTransform, getFixBalancesSync, } = require('../portedTokens'); - - -function compoundExports(comptroller, { blacklistedTokens = [], transformAdress, abis = {}} = {}) { - let response - abis = { ...abi, ...abis } - - async function _getCompoundV2Tvl(api) { - if (!response) response = _internal() - return response - - async function _internal() { - const balances = { - tvl: {}, - borrowed: {}, - } - const chain = api.chain ?? 'ethereum' - blacklistedTokens = blacklistedTokens.map(i => i.toLowerCase()) - if (!transformAdress) transformAdress = await getChainTransform(chain) - const fixBalances = getFixBalancesSync(chain) - - let markets = await api.call({ - target: comptroller, - abi: abis.getAllMarkets, - }) - - let underlying = await api.multiCall({ - abi: abis.underlying, - calls: markets, - }) - let borrowed = await api.multiCall({ - abi: abis.totalBorrows, - calls: markets, - }) - let values = await api.multiCall({ - abi: abis.getCash, - calls: markets, - }) - underlying = underlying.map((token, i) => { - if (!token || token === ADDRESSES.GAS_TOKEN_2) token = nullAddress - token = transformAdress(token) - sdk.util.sumSingleBalance(balances.tvl,token,values[i]) - sdk.util.sumSingleBalance(balances.borrowed,token,borrowed[i]) - }) - - balances.tvl = fixBalances(balances.tvl) - balances.borrowed = fixBalances(balances.borrowed) - - return balances - } - } - - return { - tvl: async (api) => (await _getCompoundV2Tvl(api)).tvl, - borrowed: async (api) => (await _getCompoundV2Tvl(api)).borrowed, - } -} - - -module.exports = { - compoundExports, -}; - - diff --git a/projects/helper/cache/getLogs.js b/projects/helper/cache/getLogs.js deleted file mode 100644 index 0747efbe158..00000000000 --- a/projects/helper/cache/getLogs.js +++ /dev/null @@ -1,191 +0,0 @@ - -const { getCache, setCache, } = require('../cache'); -const sdk = require('@defillama/sdk') -const ethers = require("ethers") - -const cacheFolder = 'logs' - -async function getLogs({ target, - topic, keys = [], fromBlock, toBlock, topics, - api, eventAbi, onlyArgs = false, extraKey, skipCache = false, onlyUseExistingCache = false, customCacheFunction, skipCacheRead = false, compressType, }) { - if (!api) throw new Error('Missing sdk api object!') - if (!target) throw new Error('Missing target!') - if (!fromBlock) throw new Error('Missing fromBlock!') - if (onlyUseExistingCache) - toBlock = 1e11 - else - await api.getBlock() - - const block = api.block - const chain = api.chain ?? 'ethereum' - - if (chain === 'xlayer') onlyUseExistingCache = true // xlayer rpcs severely limit the number of logs that can be fetched, so we need to use the cache - - - if (!toBlock) toBlock = block - if (!toBlock) throw new Error('Missing toBlock!') - - let iface - - if (eventAbi) { - iface = new ethers.Interface([eventAbi]) - if (!topics?.length) { - const fragment = iface.fragments[0] - topics = undefined - topic = `${fragment.name}(${fragment.inputs.map(i => i.type).join(',')})` - } - } - - target = target.toLowerCase() - const key = extraKey ? `${chain}/${target}-${extraKey}` : `${chain}/${target}` - - let cache = await _getCache(key) - let response - const fetchNewData = (cache.fromBlock && (cache.toBlock + 2) > toBlock) || onlyUseExistingCache - - // if no new data nees to be fetched if the last fetched block is within 2 blocks of the current block - if (!customCacheFunction && fetchNewData) - response = cache.logs.filter(i => i.blockNumber < toBlock && i.blockNumber >= fromBlock) - else - response = await fetchLogs() - - if (!eventAbi) return response - if (customCacheFunction) return cache.logs - - return response.map((log) => { - const res = iface.parseLog(log) - if (onlyArgs) return res.args - res.topics = log.topics.map(i => `0x${i.slice(26)}`) - res.blockNumber = log.blockNumber - return res - }) - - async function fetchLogs() { - cache.fromBlock = fromBlock - fromBlock = cache.toBlock ?? fromBlock - - // remove tuple baseType from type - // ex: CreateMarket(bytes32,tuple(address,address,address,address,uint256)) -> CreateMarket(bytes32,(address,address,address,address,uint256)) - if (eventAbi) { - const fragment = iface.fragments[0] - if (!topics?.length) { - const fragment = iface.fragments[0] - topic = `${fragment.name}(${fragment.inputs.map(i => i.baseType === 'tuple' ? i.type.replace('tuple', '') : i.type).join(',')})` - } - } - let logs = (await sdk.api.util.getLogs({ - chain, target, topic, keys, topics, fromBlock, toBlock, - })).output - - if (!customCacheFunction) - cache.logs = cache.logs.concat(logs) - else { - logs = logs.map(i => iface.parseLog(i)) - if (onlyArgs) logs = logs.map(i => i.args) - customCacheFunction({ cache, logs }) - } - cache.toBlock = toBlock - - const logIndices = new Set() - - // remove possible duplicates - if (!customCacheFunction) - cache.logs = cache.logs.filter(i => { - let key = (i.transactionHash ?? i.hash) + (i.logIndex ?? i.index) - if (!(i.hasOwnProperty('logIndex') || i.hasOwnProperty('index')) || !(i.hasOwnProperty('transactionHash') || i.hasOwnProperty('hash'))) { - sdk.log(i, i.logIndex, i.index, i.transactionHash) - throw new Error('Missing crucial field') - } - if (logIndices.has(key)) return false - logIndices.add(key) - return true - }) - - if (!skipCache) { - - const whitelistedFields = ['topics', 'data', 'hash', 'index', 'blockNumber'] - if (compressType === 'v1') { - cache.logs.forEach(i => { - i.hash = i.hash ?? i.transactionHash - i.index = i.index ?? i.logIndex - Object.keys(i).forEach(key => { - if (!whitelistedFields.includes(key)) { - delete i[key] - } - }) - }) - } - await _setCache(cacheFolder, key, cache) - } - - return cache.logs - } - - async function _setCache(cacheFolder, key, cache) { - const chunkSize = 1e5 - - // default case if there are less than 100_000 logs - if (cache.logs.length < chunkSize) return setCache(cacheFolder, key, cache) - - - let allLogs = cache.logs - cache.logs = allLogs.slice(0, chunkSize) - allLogs = allLogs.slice(chunkSize) - cache.hasMore = allLogs.length > 0 - await setCache(cacheFolder, key, cache) - - let index = 0 - - while (allLogs.length) { - const logs = allLogs.splice(0, chunkSize) - allLogs = allLogs.slice(chunkSize) - const chunkKey = `${key}-${index}` - const hasMore = allLogs.length > 0 - await setCache(cacheFolder, chunkKey, { logs, hasMore }) - sdk.log(`Saved ${logs.length} logs to cache: ${chunkKey}, has more: ${hasMore}`) - index++ - } - } - - async function _getCache(key) { - const defaultRes = { - logs: [], - hasMore: false, - } - - if (skipCache || skipCacheRead) return defaultRes - - let cache = await getCache(cacheFolder, key, { checkIfRecent: true, }) - let hasMore = cache.hasMore - let index = 0 - - // if there are more than 100_000 logs, we need to fetch them in chunks - while (hasMore) { - sdk.log(`Fetching more logs for ${key} from cache: ${index}`) - const extraLogs = await getCache(cacheFolder, `${key}-${index}`, { checkIfRecent: true, }) - index++ - hasMore = extraLogs.hasMore - cache.logs = cache.logs.concat(extraLogs.logs) - sdk.log(cache.logs.length, 'logs fetched from cache', extraLogs.logs.length, 'more logs', extraLogs.hasMore ? 'and more to come' : 'no more logs') - } - - - // set initial structure if it is missing / reset if from block is moved to something older - if (!cache.logs || fromBlock < cache.fromBlock) { - return defaultRes - } - - return cache - } -} - -async function getLogs2({ factory, target, topic, keys = [], fromBlock, toBlock, topics, api, eventAbi, onlyArgs = true, extraKey, skipCache = false, onlyUseExistingCache = false, customCacheFunction, skipCacheRead = false, transform = i => i, compressType, }) { - const res = await getLogs({ target: target ?? factory, topic, keys, fromBlock, toBlock, topics, api, eventAbi, onlyArgs, extraKey, skipCache, onlyUseExistingCache, customCacheFunction, skipCacheRead, compressType, }) - return res.map(transform) -} - -module.exports = { - getLogs, - getLogs2, - getAddress: s => "0x" + s.slice(26, 66), -} \ No newline at end of file diff --git a/projects/helper/cache/sumUnknownTokens.js b/projects/helper/cache/sumUnknownTokens.js deleted file mode 100644 index eb7b1e90a08..00000000000 --- a/projects/helper/cache/sumUnknownTokens.js +++ /dev/null @@ -1,427 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js') - -const symbol = 'string:symbol' -const token0 = 'address:token0' -const token1 = 'address:token1' -const kslpABI = require('../abis/kslp.js'); -const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' - -const { getChainTransform, stripTokenHeader, getFixBalances, getFixBalancesSync, } = require('../portedTokens') -const { getCoreAssets } = require('../tokenMapping') -const { sumTokens2, nullAddress, } = require('../unwrapLPs') -const { isLP, getUniqueAddresses, log } = require('../utils') - -async function getLPData({ - block, - chain = 'ethereum', - lps = [], // list of token addresses (all need not be LPs, code checks and filters out non LPs) - allLps = false, // if set true, assumes all tokens provided as lps are lps and skips validation/filtering - abis = {}, - lpFilter = isLP, -}) { - lps = getUniqueAddresses(lps) - const pairAddresses = allLps ? lps : await getLPList({ lps, chain, block, lpFilter, }) - const pairCalls = pairAddresses.map((pairAddress) => ({ target: pairAddress, })) - let token0Addresses, token1Addresses - - [token0Addresses, token1Addresses] = await Promise.all([ - sdk.api.abi.multiCall({ abi: abis.token0ABI || token0, chain, calls: pairCalls, block, }).then(({ output }) => output), - sdk.api.abi.multiCall({ abi: abis.token1ABI || token1, chain, calls: pairCalls, block, }).then(({ output }) => output), - ]); - const pairs = {}; - // add token0Addresses - token0Addresses.forEach((token0Address) => - pairs[token0Address.input.target] = { - token0Address: token0Address.output.toLowerCase(), - } - ) - token1Addresses.forEach((token1Address) => { - if (!pairs[token1Address.input.target]) pairs[token1Address.input.target] = {} - pairs[token1Address.input.target].token1Address = token1Address.output.toLowerCase() - }) - return pairs -} - -async function getLPList({ lps, chain, block, lpFilter = isLP, cache = {}, }) { - lps = lps.filter(i => i !== nullAddress) - if (!cache.symbol) cache.symbol = {} - lps = lps.filter(i => i) - const callArgs = lps.filter(i => !cache.symbol[i]).map(t => ({ target: t })); - (await sdk.api.abi.multiCall({ calls: callArgs, abi: symbol, block, chain, permitFailure: true, })).output - .forEach(i => cache.symbol[i.input.target] = i.output) - return lps.filter(i => lpFilter(cache.symbol[i], i, chain)) -} - -async function getTokenPrices({ - api, - block, - chain = 'ethereum', - abis = {}, // if some protocol uses custom abi instead of standard one - useDefaultCoreAssets = false, // use pre-defined list - coreAssets = [], // list of tokens that can used as base token to price unknown tokens against (Note: order matters, is there are two LPs for a token, the core asset with a lower index is used) - blacklist = [], // list of tokens to ignore/blacklist - whitelist = [], // if set, tvl/price is computed only for these tokens - lps = [], // list of token addresses (all need not be LPs, code checks and filters out non LPs) - transformAddress, // function for transforming token address to coingecko friendly format - allLps = false, // if set true, assumes all tokens provided as lps are lps and skips validation/filtering - minLPRatio = 0.5, // if a token pool has less that this percent of core asset tokens compared to a token pool with max tokens for a given core asset, this token pool is not used for price calculation - restrictTokenRatio = 10, // while computing tvl, an unknown token value can max be x times the pool value, default 100 times pool value - log_coreAssetPrices = [], - log_minTokenValue = 1e6, // log only if token value is higer than this value, now minimum is set as 1 million - lpFilter, // override the default logic for checking if an address is LP based on it's symbol - token0CallFn, - token1CallFn, - reservesCallFn, - cache = {}, -}) { - if (!api) - api = new sdk.ChainApi({ block, chain, }) - else { - chain = api.chain - block = api.block - } - if (!cache.pairData) cache.pairData = {} - let counter = 0 - if (!transformAddress) - transformAddress = await getChainTransform(chain) - - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - - coreAssets = coreAssets.map(i => i.toLowerCase()) - blacklist = blacklist.map(i => i.toLowerCase()) - whitelist = whitelist.map(i => i.toLowerCase()) - lps = getUniqueAddresses(lps) - const pairAddresses = (allLps && !lpFilter) ? lps : await getLPList({ lps, chain, block, lpFilter, cache }) - const toCall = (pairAddress) => ({ target: pairAddress, }) - const pairCalls = pairAddresses.map(toCall) - const pairs = cache.pairData; - const token0Calls = pairAddresses.filter(i => !pairs[i] || !pairs[i].token0Address).map(toCall) - const token1Calls = pairAddresses.filter(i => !pairs[i] || !pairs[i].token1Address).map(toCall) - - - let token0Addresses, token1Addresses, reserves - - if (token0CallFn) { - token0Addresses = token0CallFn({ chain, block, calls: token0Calls, api, }) - } else { - token0Addresses = api.multiCall({ abi: abis.token0ABI || token0, chain, calls: token0Calls, block, withMetadata: true, }) - } - - if (token1CallFn) { - token1Addresses = token1CallFn({ chain, block, calls: token1Calls, api }) - } else { - token1Addresses = api.multiCall({ abi: abis.token1ABI || token1, chain, calls: token1Calls, block, withMetadata: true, }) - } - - if (reservesCallFn) { - reserves = reservesCallFn({ chain, block, calls: pairCalls, api, }) - } else { - reserves = api.multiCall({ abi: abis.getReservesABI || getReserves, chain, calls: pairCalls, block, withMetadata: true, }) - } - - [token0Addresses, token1Addresses, reserves] = await Promise.all([token0Addresses, token1Addresses, reserves]); - - // add token0Addresses - token0Addresses.forEach((token0Address) => { - const tokenAddress = token0Address.output.toLowerCase(); - - const pairAddress = token0Address.input.target.toLowerCase(); - pairs[pairAddress] = { - ...(pairs[pairAddress] || {}), - token0Address: tokenAddress, - } - }); - - // add token1Addresses - token1Addresses.forEach((token1Address) => { - const tokenAddress = token1Address.output.toLowerCase(); - const pairAddress = token1Address.input.target.toLowerCase(); - pairs[pairAddress] = { - ...(pairs[pairAddress] || {}), - token1Address: tokenAddress, - } - }); - - const prices = {} - const pairBalances = {} - - for (let i = 0; i < reserves.length; i++) { - const pairAddress = reserves[i].input.target.toLowerCase(); - const pair = pairs[pairAddress]; - pairBalances[pairAddress] = {} - const token0Address = pair.token0Address.toLowerCase() - const token1Address = pair.token1Address.toLowerCase() - const reserveAmounts = reserves[i].output - if (coreAssets.includes(token0Address) && coreAssets.includes(token1Address)) { - sdk.util.sumSingleBalance(pairBalances[pairAddress], token0Address, Number(reserveAmounts[0])) - sdk.util.sumSingleBalance(pairBalances[pairAddress], token1Address, Number(reserveAmounts[1])) - } else if (coreAssets.includes(token0Address)) { - sdk.util.sumSingleBalance(pairBalances[pairAddress], token0Address, Number(reserveAmounts[0]) * 2) - if (!blacklist.includes(token1Address) && (!whitelist.length || whitelist.includes(token1Address))) { - setPrice(prices, token1Address, reserveAmounts[0], reserveAmounts[1], token0Address) - } - } else if (coreAssets.includes(token1Address)) { - if (!reserveAmounts) log('missing reserves', pairAddress) - sdk.util.sumSingleBalance(pairBalances[pairAddress], token1Address, Number(reserveAmounts[1]) * 2) - if (!blacklist.includes(token0Address) && (!whitelist.length || whitelist.includes(token0Address))) { - setPrice(prices, token0Address, reserveAmounts[1], reserveAmounts[0], token1Address) - } - } else { - const isWhitelistedToken0 = !blacklist.includes(token0Address) - const isWhitelistedToken1 = !blacklist.includes(token1Address) - if (isWhitelistedToken0 && isWhitelistedToken1) { - sdk.util.sumSingleBalance(pairBalances[pairAddress], token0Address, Number(reserveAmounts[0])) - sdk.util.sumSingleBalance(pairBalances[pairAddress], token1Address, Number(reserveAmounts[1])) - } else if (isWhitelistedToken0) { - sdk.util.sumSingleBalance(pairBalances[pairAddress], token0Address, Number(reserveAmounts[0]) * 2) - } else if (isWhitelistedToken1) { - sdk.util.sumSingleBalance(pairBalances[pairAddress], token1Address, Number(reserveAmounts[1]) * 2) - } - } - } - - // set price of tokens that are not directly paired against core assets but with tokens that are paired against core tokens - - for (let i = 0; i < reserves.length; i++) { - const pairAddress = reserves[i].input.target.toLowerCase(); - const pair = pairs[pairAddress]; - const token0Address = pair.token0Address.toLowerCase() - const token1Address = pair.token1Address.toLowerCase() - const reserveAmounts = reserves[i].output - if ((coreAssets.includes(token0Address) && coreAssets.includes(token1Address)) - || coreAssets.includes(token0Address) - || coreAssets.includes(token1Address) - ) { // ignore these cases as tokens are already taken care of here - } else { - const isWhitelistedToken0 = !blacklist.includes(token0Address) - const isWhitelistedToken1 = !blacklist.includes(token1Address) - if (isWhitelistedToken0 && prices[token0Address] && !prices[token1Address]) { - pairBalances[pairAddress] = {} - const [coreTokenAmountInLP, tokenPrice, coreAsset,] = prices[token0Address] - const newCoreAmount = coreTokenAmountInLP * tokenPrice / 10 // we are diluting the amount of core tokens intentionally - const newTokenAmount = reserveAmounts[1] / 10 // also divided by 10 to keep price steady - // setPrice(prices, token1Address, newCoreAmount, newTokenAmount, coreAsset) - sdk.util.sumSingleBalance(pairBalances[pairAddress], token0Address, Number(reserveAmounts[0]) * 2) - } else if (isWhitelistedToken1 && prices[token1Address] && !prices[token0Address]) { - pairBalances[pairAddress] = {} - const [coreTokenAmountInLP, tokenPrice, coreAsset,] = prices[token1Address] - const newCoreAmount = coreTokenAmountInLP * tokenPrice / 10 // we are diluting the amount of core tokens intentionally - const newTokenAmount = reserveAmounts[0] / 10 // also divided by 10 to keep price steady - // setPrice(prices, token0Address, newCoreAmount, newTokenAmount, coreAsset) - sdk.util.sumSingleBalance(pairBalances[pairAddress], token1Address, Number(reserveAmounts[1]) * 2) - } - } - } - - if (!lpFilter && customLPHandlers[chain]) { // we want to handle custom LPs but dont want to end up in recorsive loop, hence this check - for (const customOptions of Object.values(customLPHandlers[chain])) { - const options = { ...arguments[0], ...customOptions } - const { prices: customPrices, pairBalances: customPairBalances, pairs: customPairs } = await getTokenPrices(options) - // add custom LP data to existing data - Object.entries(customPairs).forEach(([key, value]) => pairs[key] = value) - Object.entries(customPrices).forEach(([key, value]) => prices[key] = value) - Object.entries(customPairBalances).forEach(([key, value]) => pairBalances[key] = value) - } - } - - filterPrices(prices) - const balances = {} - Object.keys(pairBalances).forEach(key => addBalances(pairBalances[key], balances, { pairAddress: key })) - const fixBalances = getFixBalancesSync(chain) - fixBalances(balances) - - return { - pairs, - updateBalances, - pairBalances, - prices, - balances, - } - - function setPrice(prices, address, coreAmount, tokenAmount, coreAsset) { - if (prices[address] !== undefined) { - const currentCoreAmount = prices[address][0] - const currentCoreAsset = prices[address][2] - // core asset higher on the list has higher preference - if (coreAssets.indexOf(currentCoreAmount) < coreAssets.indexOf(coreAsset)) return; - if ((currentCoreAsset === coreAsset) && coreAmount < currentCoreAmount) return; - } - if (Number(tokenAmount) > 0) - prices[address] = [Number(coreAmount), Number(coreAmount) / Number(tokenAmount), coreAsset, +Number(tokenAmount)] - } - - function getAssetPrice(asset) { - const assetIndex = coreAssets.indexOf(asset.toLowerCase()) - if (assetIndex === -1 || !log_coreAssetPrices[assetIndex]) return 1 / 1e18 - return log_coreAssetPrices[assetIndex] - } - - async function updateBalances(balances, { resolveLP = true, skipConversion = false, onlyLPs = false, } = {}) { - let lpAddresses = [] // if some of the tokens in balances are LP tokens, we resolve those as well - log('---updating balances-----') - const finalBalances = onlyLPs ? {} : balances - counter = 0 - Object.entries(balances).forEach(([address, amount = 0]) => { - const token = stripTokenHeader(address) - const price = prices[token]; - if (pairBalances[token]) { - lpAddresses.push(token) - return; - } - if (!price || skipConversion) return; - let tokenAmount = price[1] * +amount - const coreAsset = price[2] - const tokensInLP = price[3] - const coreTokenAmountInLP = price[0] - const maxAllowedAmount = coreTokenAmountInLP * restrictTokenRatio - // if (tokenAmount * getAssetPrice(coreAsset) > log_minTokenValue) - // sdk.log(`[converting balances] token vaule (in millions): ${(tokenAmount * getAssetPrice(coreAsset) / 1e6).toFixed(4)}, token value higher than pool: ${+amount > +tokensInLP} token: ${token} counter: ${++counter}`) - - if (tokenAmount > maxAllowedAmount) {// use token amount in pool if balances amount is higher than amount in pool - log(`[converting balances] Value to LP ratio: ${tokenAmount / tokensInLP} token: ${token} counter: ${++counter}`) - sdk.util.sumSingleBalance(balances, transformAddress(coreAsset), BigNumber(maxAllowedAmount).toFixed(0)) - balances[address] = BigNumber((tokenAmount - maxAllowedAmount) / price[1]).toFixed(0) - } else { - sdk.util.sumSingleBalance(balances, transformAddress(coreAsset), BigNumber(tokenAmount).toFixed(0)) - delete balances[address] - } - }) - - if (!resolveLP) { - fixBalances(balances) - return balances - } - - if (lpAddresses.length) { - const totalBalances = (await sdk.api.abi.multiCall({ - abi: 'erc20:totalSupply', calls: lpAddresses.map(i => ({ target: i })), block, chain - })).output - - totalBalances.forEach((item) => { - const token = item.input.target - const address = transformAddress(token) - const ratio = +item.output > 0 ? (+(balances[address]) || 0) / +item.output : 0 - addBalances(pairBalances[token], finalBalances, { ratio, pairAddress: token, skipConversion, }) - delete balances[address] - }) - } - - fixBalances(finalBalances) - return finalBalances - } - - function addBalances(balances, finalBalances, { skipConversion = false, pairAddress, ratio = 1 }) { - if (ratio > 1) { - console.log(`There is bug in the code. Pair address: ${pairAddress}, ratio: ${ratio}`) - ratio = 1 - } - Object.entries(balances).forEach(([address, amount = 0]) => { - const price = prices[address]; - // const price = undefined; // NOTE: this is disabled till, we add a safeguard to limit LP manipulation to inflate token price, like mimimum core asset liquidity to be 10k - if (price && !skipConversion) { - const coreTokenAmountInLP = price[0] - const coreAsset = price[2] - const tokensInLP = price[3] - let tokenAmount = price[1] * +amount - const maxAllowedAmount = coreTokenAmountInLP * restrictTokenRatio - // if (tokenAmount * getAssetPrice(coreAsset) * ratio > log_minTokenValue) - // sdk.log(`[resolve LP balance] token vaule (in millions): ${(tokenAmount * getAssetPrice(coreAsset) * ratio / 1e6).toFixed(4)}, token value higher than pool: ${+amount > +tokensInLP} LP Address: ${pairAddress} token: ${address} ratio: ${ratio} counter: ${++counter}`) - - if (tokenAmount > maxAllowedAmount) {// use token amount in pool if balances amount is higher than amount in pool - log(`[converting balances] Value to LP ratio: ${tokenAmount / tokensInLP} LP Address: ${pairAddress} ratio: ${ratio} token: ${address} counter: ${++counter}`) - sdk.util.sumSingleBalance(balances, transformAddress(coreAsset), BigNumber(maxAllowedAmount * ratio).toFixed(0)) - } else { - sdk.util.sumSingleBalance(balances, transformAddress(coreAsset), BigNumber(tokenAmount * ratio).toFixed(0)) - } - } else { - if ((coreAssets.includes(address)) && (+amount * getAssetPrice(address) * ratio > log_minTokenValue)) - sdk.log(`[resolve LP balance] token vaule (in millions): ${(+amount * getAssetPrice(address) * ratio / 1e6).toFixed(4)}, LP Address: ${pairAddress} core token: ${address} ratio: ${ratio} counter: ${++counter}`) - sdk.util.sumSingleBalance(finalBalances, transformAddress(address), BigNumber(+amount * ratio).toFixed(0)) - } - }) - } - - // If we fetch prices from pools with low liquidity, the value of tokens can be absurdly high, so we set a threshold that if we are using a core asset to determine price, - // the amount of said core asset in a pool from which price is fetched must be at least 0.5% of the amount of core asset tokens in pool with highest core asset tokens - function filterPrices(prices) { - const maxCoreTokens = {} - Object.values(prices).forEach(([amount, _, coreAsset]) => { - if (!maxCoreTokens[coreAsset] || maxCoreTokens[coreAsset] < +amount) - maxCoreTokens[coreAsset] = +amount - }) - - Object.keys(prices).forEach(token => { - const priceArry = prices[token] - const [amount, _, coreAsset] = priceArry - if (!maxCoreTokens[coreAsset]) throw new Error('there is bug in the code') - const lpRatio = +amount * 100 / maxCoreTokens[coreAsset] - if (lpRatio < minLPRatio) delete prices[token] // current pool has less than 0.5% of tokens compared to pool with highest number of core tokens - }) - } -} - -async function sumUnknownTokens({ api, tokensAndOwners = [], balances, - coreAssets = [], owner, tokens, chain = 'ethereum', block, restrictTokenRatio, blacklist = [], skipConversion = false, onlyLPs, minLPRatio, - log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, cache = {}, resolveLP = false, abis, - ownerTokens = [], allLps = false, -}) { - if (api) { - chain = api.chain ?? chain - block = api.block ?? block - if (!balances) balances = api.getBalances() - } else if (!balances) { - balances = {} - } - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - blacklist = getUniqueAddresses(blacklist) - if (!tokensAndOwners.length) - if (owners.length) - tokensAndOwners = owners.map(o => tokens.map(t => [t, o])).flat() - else if (owner) - tokensAndOwners = tokens.map(t => [t, owner]) - else if (ownerTokens.length) - ownerTokens.forEach(([tokens, owner]) => tokens.forEach(i => tokensAndOwners.push([i, owner]))) - tokensAndOwners = tokensAndOwners.filter(t => !blacklist.includes(t[0])) - await sumTokens2({ api, balances, chain, block, tokensAndOwners, skipFixBalances: true, resolveLP, abis }) - const { updateBalances, } = await getTokenPrices({ cache, coreAssets, lps: [...tokensAndOwners.map(t => t[0]), ...lps,], chain, block, restrictTokenRatio, blacklist, log_coreAssetPrices, log_minTokenValue, minLPRatio, abis, allLps, }) - await updateBalances(balances, { skipConversion, onlyLPs }) - const fixBalances = await getFixBalances(chain) - fixBalances(balances) - return balances -} - -// sushi constant product LP -const SCPLP = { - lpFilter: (symbol, addr, chain) => symbol === 'SCPLP', - abis: { - getReservesABI: "function getAssets() external view returns (uint _reserve0, uint _reserve1)", - }, -} -const syncswap = { - lpFilter: (symbol, addr, chain) => ['scroll', 'era'].includes(chain) && /(cSLP|sSLP)$/.test(symbol), - abis: { - getReservesABI: "function getReserves() external view returns (uint _reserve0, uint _reserve1)", - }, -} -const customLPHandlers = { - kava: { SCPLP, }, - klaytn: { - kslp: { - lpFilter: (symbol, addr, chain) => chain === 'klaytn' && symbol === 'KSLP', - abis: { - getReservesABI: kslpABI.getCurrentPool, - token0ABI: kslpABI.tokenA, - token1ABI: kslpABI.tokenB, - }, - } - }, - scroll: { syncswap, }, - era: { syncswap, }, -} - -module.exports = { - getTokenPrices, sumUnknownTokens, getLPData, getLPList, -} \ No newline at end of file diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js deleted file mode 100644 index b2edf4eff7a..00000000000 --- a/projects/helper/cache/uniswap.js +++ /dev/null @@ -1,166 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') - -const uniswapAbi = require('../abis/uniswap') -const { getCache, setCache, } = require('../cache'); -const { transformBalances, transformDexBalances, } = require('../portedTokens') -const { getCoreAssets, normalizeAddress, } = require('../tokenMapping') -const { sliceIntoChunks, sleep } = require('../utils') -const sdk = require('@defillama/sdk') - -const cacheFolder = 'uniswap-forks' - -function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, - useDefaultCoreAssets = false, - fetchBalances = false, - abis = {}, - chain: _chain = 'ethereum', - queryBatched = 0, - waitBetweenCalls, - hasStablePools = false, - stablePoolSymbol = 'sAMM', - permitFailure = false, -}) { - - let updateCache = false - - const abi = { ...uniswapAbi, ...abis } - - return async (api) => { - let chain = api?.chain - if (!chain) - chain = _chain - // console.log(await api.call({ target: factory, abi: 'address:factory' })) - factory = normalizeAddress(factory, chain) - blacklist = (blacklistedTokens || blacklist).map(i => normalizeAddress(i, chain)) - const key = `${factory}-${chain}` - - if (!coreAssets && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - - let cache = await _getCache(cacheFolder, key, api) - - const _oldPairInfoLength = cache.pairs.length - const length = await api.call({ abi: abi.allPairsLength, target: factory, }) - - sdk.log(chain, ' No. of pairs: ', length) - sdk.log('cached info', cache.pairs.length) - const pairCalls = [] - for (let i = _oldPairInfoLength; i < length; i++) - pairCalls.push(i) - - const calls = await api.multiCall({ abi: abi.allPairs, calls: pairCalls, target: factory }) - - const [ - token0s, token1s - ] = await Promise.all([ - api.multiCall({ abi: abi.token0, calls }), - api.multiCall({ abi: abi.token1, calls }), - ]) - let symbols - if (hasStablePools) { - symbols = await api.multiCall({ abi: 'erc20:symbol', calls, }) - cache.symbols.push(...symbols) - } - - cache.pairs.push(...calls) - cache.token0s.push(...token0s) - cache.token1s.push(...token1s) - - updateCache = updateCache || cache.pairs.length > _oldPairInfoLength - - if (updateCache) - await setCache(cacheFolder, key, cache) - - if (cache.pairs.length > length) - cache.pairs = cache.pairs.slice(0, length) - - let reserves = [] - if (queryBatched) { - const batchedCalls = sliceIntoChunks(cache.pairs, queryBatched) - for (const calls of batchedCalls) { - reserves.push(...await api.multiCall({ abi: abi.getReserves, calls, permitFailure, })) - if (waitBetweenCalls) await sleep(waitBetweenCalls) - } - } else if (fetchBalances) { - const calls = [] - cache.pairs.forEach((owner, i) => { - calls.push({ target: cache.token0s[i], params: owner }) - calls.push({ target: cache.token1s[i], params: owner }) - }) - const bals = await api.multiCall({ abi: abi.balanceOf ?? 'erc20:balanceOf', calls, permitFailure, }) - for (let i = 0; i < bals.length; i++) { - reserves.push({ _reserve0: bals[i] ?? 0, _reserve1: bals[i + 1] ?? 0 }) - i++ - } - } else - reserves = await api.multiCall({ abi: abi.getReserves, calls: cache.pairs, permitFailure }) - - - const balances = {} - if (coreAssets) { - const data = [] - reserves.forEach((dat, i) => { - if (!dat) return; - const { _reserve0, _reserve1 } = dat - if (hasStablePools && cache.symbols[i].startsWith(stablePoolSymbol)) { - sdk.log('found stable pool: ', stablePoolSymbol) - sdk.util.sumSingleBalance(balances, cache.token0s[i], _reserve0) - sdk.util.sumSingleBalance(balances, cache.token1s[i], _reserve1) - } else { - data.push({ - token0: cache.token0s[i], - token1: cache.token1s[i], - token1Bal: _reserve1, - token0Bal: _reserve0, - }) - } - }) - return transformDexBalances({ balances, chain, data, coreAssets, blacklistedTokens: blacklist }) - } - - const blacklistedSet = new Set(blacklist) - reserves.forEach(({ _reserve0, _reserve1 }, i) => { - if (!blacklistedSet.has(cache.token0s[i].toLowerCase())) sdk.util.sumSingleBalance(balances, cache.token0s[i], _reserve0) - if (!blacklistedSet.has(cache.token1s[i].toLowerCase())) sdk.util.sumSingleBalance(balances, cache.token1s[i], _reserve1) - }) - - return transformBalances(chain, balances) - } - - async function _getCache(cacheFolder, key, api) { - let cache = await getCache(cacheFolder, key) - if (cache.pairs) { - for (let i = 0; i < cache.pairs.length; i++) { - if (!cache.pairs[i]) { - cache.pairs[i] = await api.call({ abi: abi.allPairs, target: factory, params: i }) - updateCache = true - } - let pair = cache.pairs[i] - if (!cache.token0s[i]) { - cache.token0s[i] = await api.call({ abi: abi.token0, target: pair }) - updateCache = true - } - if (!cache.token1s[i]) { - cache.token1s[i] = await api.call({ abi: abi.token1, target: pair }) - updateCache = true - } - } - // if (cache.pairs.includes(null) || cache.token0s.includes(null) || cache.token1s.includes(null)) - // cache.pairs = undefined - } - - if (!cache.pairs || (hasStablePools && (!cache.symbols || !cache.symbols.length))) { - cache = { - pairs: [], - token0s: [], - token1s: [], - symbols: [], - } - } - return cache - } -} - -module.exports = { - getUniTVL -} \ No newline at end of file diff --git a/projects/helper/cache/vestingHelper.js b/projects/helper/cache/vestingHelper.js deleted file mode 100644 index b08dd2109e2..00000000000 --- a/projects/helper/cache/vestingHelper.js +++ /dev/null @@ -1,46 +0,0 @@ -const sdk = require('@defillama/sdk'); - -const { stripTokenHeader, getFixBalancesSync, } = require('../portedTokens') -const { getCoreAssets } = require('../tokenMapping') -const { sumTokens2, } = require('../unwrapLPs') -const { getUniqueAddresses, sliceIntoChunks, sleep, log } = require('../utils') -const { getTokenPrices, getLPList } = require('./sumUnknownTokens') - -async function vestingHelper({ - coreAssets = [], owner, tokens, chain = 'ethereum', block, restrictTokenRatio, blacklist = [], skipConversion = false, onlyLPs, minLPRatio, - log_coreAssetPrices = [], log_minTokenValue = 1e6, useDefaultCoreAssets = false, cache = {}, -}) { - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - - tokens = getUniqueAddresses(tokens) - blacklist = getUniqueAddresses(blacklist) - tokens = tokens.filter(t => !blacklist.includes(t)) - const chunkSize = chain === 'polygon' ? 250 : 10000 // polygon has a lower gas limit - const chunks = sliceIntoChunks(tokens, chunkSize) - const finalBalances = {} - for (let i = 0; i < chunks.length; i++) { - log('resolving for %s/%s of total tokens: %s (chain: %s)', i + 1, chunks.length, tokens.length, chain) - let lps = await getLPList({ lps: chunks[i], chain, block, cache }) // we count only LP tokens for vesting protocols - const balances = await sumTokens2({ chain, block, owner, tokens: lps }) - const lpBalances = {} - Object.entries(balances).forEach(([token, bal]) => { - if (bal && bal !== 0) - lpBalances[stripTokenHeader(token)] = bal - else - delete balances[token] - }) - lps = lps.filter(lp => lpBalances[lp]) // we only care about LPs that are still locked in the protocol, we can ignore withdrawn LPs - const { updateBalances } = await getTokenPrices({ cache, coreAssets, lps, allLps: true, chain, block, restrictTokenRatio, blacklist, log_coreAssetPrices, log_minTokenValue, minLPRatio }) - await updateBalances(balances, { skipConversion, onlyLPs }) - Object.entries(balances).forEach(([token, bal]) => sdk.util.sumSingleBalance(finalBalances, token, bal)) - if (i > 3 && i % 2 === 0) await sleep(1000) - } - const fixBalances = getFixBalancesSync(chain) - fixBalances(finalBalances) - return finalBalances -} - -module.exports = { - vestingHelper, -} \ No newline at end of file diff --git a/projects/helper/cex.js b/projects/helper/cex.js deleted file mode 100644 index 261d1a5a03a..00000000000 --- a/projects/helper/cex.js +++ /dev/null @@ -1,326 +0,0 @@ -const ADDRESSES = require('./coreAssets.json') -const { nullAddress } = require('./unwrapLPs') -const { sumTokensExport } = require('../helper/sumTokens') -const sdk = require('@defillama/sdk') - -const defaultTokens = { - ethereum: [ - nullAddress, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WEETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.TUSD, // TUSD - ADDRESSES.ethereum.BUSD, // BUSD - ADDRESSES.ethereum.MATIC, // MATIC - ADDRESSES.ethereum.INU, // SHIBA INU - '0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b', // CRO - '0x9be89d2a4cd102d8fecc6bf9da793be995c22541', // BBTC - '0x7a58c0be72be218b41c608b7fe7c5bb630736c71', // PEOPLE - '0x69af81e73a73b40adf4f3d4223cd9b1ece623074', // MASK - '0x9d65ff81a3c488d585bbfb0bfe3c7707c7917f54', // SSV - '0x111111111117dc0aa78b770fa6a738034120c302', // 1INCH - '0x3597bfd533a99c9aa083587b074434e61eb0a258', // DENT - '0x8a2279d4a90b6fe1c4b30fa660cc9f926797baa2', // CHR - ADDRESSES.ethereum.LIDO, // LIDO - ADDRESSES.ethereum.MKR, // MKR - ADDRESSES.ethereum.CRV, // CRV - '0x92d6c1e31e14520e676a687f0a93788b716beff5', // DYDX - ADDRESSES.ethereum.FTM, // FTM - ADDRESSES.ethereum.SUSHI, // SUSHI - '0x15d4c048f83bd7e37d49ea4c83a07267ec4203da', // GALA - '0x3845badade8e6dff049820680d1f14bd3903a5d0', // SAND - '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', // MANA - '0x3506424f91fd33084466f402d5d97f05f8e3b4af', // CHZ - '0x4d224452801aced8b2f0aebe155379bb5d594381', // APE - '0x6c6ee5e31d828de241282b9606c8e98ea48526e2', // HOT - '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c', // ENJ - '0xbbbbca6a901c926f240b89eacb641d8aec7aeafd', // LRC - '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', // ENS - '0x45804880de22913dafe09f4980848ece6ecbaf78', // PAXG - '0xf411903cbc70a74d22900a5de66a2dda66507255', // VRA - ADDRESSES.ethereum.UNI, // UNI - ADDRESSES.ethereum.AAVE, // AAVE - '0xc944e90c64b2c07662a292be6244bdf05cda44a7', // GRT - '0x4a220e6096b25eadb88358cb44068a3248254675', // QNT - '0xf34960d9d60be18cC1D5Afc1A6F012A723a28811', // KCS - '0xa2cd3d43c775978a96bdbf12d733d5a1ed94fb18', //XCN - '0xE66747a101bFF2dBA3697199DCcE5b743b454759', //GT - '0x3883f5e181fccaF8410FA61e12b59BAd963fb645', //THETA - '0x1a4b46696b2bb4794eb3d4c26f1c55f9170fa4c5', //BITDAO - '0x6f259637dcd74c767781e37bc6133cd6a68aa161', //HT - '0xba9d4199fab4f26efe3551d490e3821486f135ba', //CHSB - '0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c', //UTK - '0xd13c7342e1ef687c5ad21b27c2b65d772cab5c8c', //UOS - '0x90b831fa3bebf58e9744a14d638e25b4ee06f9bc', //MIMO - '0x408e41876cccdc0f92210600ef50372656052a38', //REN - '0xC581b735A1688071A1746c968e0798D642EDE491', //EURO-T - '0x4da27a545c0c5b758a6ba100e3a049001de870f5', //aAAVE - '0xa06bc25b5805d5f8d82847d191cb4af5a3e873e0', //aLINK - ADDRESSES.ethereum.STETH, //stETH - '0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599', //STmatic - '0xc00e94cb662c3520282e6f5717214004a7f26888', //COMP - '0x1c48f86ae57291f7686349f12601910bd8d470bb', //USDK - '0x4691937a7508860f876c9c0a2a617e7d9e945d4b', // WOO - '0x19de6b897ed14a376dda0fe53a5420d2ac828a28', // BGB bitget token - '0x0316EB71485b0Ab14103307bf65a021042c6d380', // HBTC (Houbi BTC) https://explorer.btc.com/btc/address/12qTdZHx6f77aQ74CPCZGSY47VaRwYjVD8 / https://www.htokens.finance/en-us/assets - '0x6be61833fc4381990e82d7d4a9f4c9b3f67ea941', // HTB (Hotbit cex token) - '0x75231f58b43240c9718dd58b4967c5114342a86c', // OKB (OKX cex token) - '0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3', // LEO (bitfinex cex token) - ADDRESSES.ethereum.BNB, // WBNB - '0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206', // NEXO ,(Nexo cex token) - '0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44', //kp3r - '0xcf0c122c6b73ff809c693db761e7baebe62b6a2e', //FLOKI ETH CHAIN - '0x11eef04c884e24d9b7b4760e7476d06ddf797f36', //MX TOKEN, mecx exchange token - '0xa4be4cDC552891a6702E1aE9645EF445179a4463', //FON - '0x356A5160F2B34BC8d88FB084745465eBBbed0174', //invi - '0x9813037ee2218799597d83D4a5B6F3b6778218d9', //bone - '0xf3b9569F82B18aEf890De263B84189bd33EBe452',//caw - // '0x04abeda201850ac0124161f037efd70c74ddc74c',//nest -- old token, hacked - '0x9d71CE49ab8A0E6D2a1e7BFB89374C9392FD6804',//nvir - '0x5b649C07E7Ba0a1C529DEAabEd0b47699919B4a2',//sgt - '0x4385328cc4d643ca98dfea734360c0f596c83449', - '0xbc396689893d065f41bc2c6ecbee5e0085233447', //perp - '0xd7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b', //NXM - '0xaaef88cea01475125522e117bfe45cf32044e238', // GF - '0x949d48eca67b17269629c7194f4b727d4ef9e5d6', // MC - '0xbb0e17ef65f82ab018d8edd776e8dd940327b28b', // AXS - ADDRESSES.ethereum.FXS, // FXS - '0xd417144312dbf50465b1c641d016962017ef6240',// cqt - '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', //VEGA - '0xcccd1ba9f7acd6117834e0d28f25645decb1736a', //ecox - '0x25ec98773d7b4ced4cafab96a2a1c0945f145e10', // stUSDT - '0x3c3a81e81dc49A522A592e7622A7E711c06bf354', // MNT - '0x61e90a50137e1f645c9ef4a0d3a4f01477738406', // LOKA - '0x64d0f55Cd8C7133a9D7102b13987235F486F2224', // BORG - '0x925206b8a707096Ed26ae47C84747fE0bb734F59', //WBT - ADDRESSES.ethereum.FDUSD, // FDUSD, - ADDRESSES.ethereum.SDAI, //sdai - '0x12970e6868f88f6557b76120662c1b3e50a646bf', //LADYS - '0x1e2f15302b90edde696593607b6bd444b64e8f02', //SHIRYO-INU - '0x14fee680690900ba0cccfc76ad70fd1b95d10e16', //$PALL - '0x9ce84f6a69986a83d92c324df10bc8e64771030f', //chex - '0x68a47fe1cf42eba4a030a10cd4d6a1031ca3ca0a', //tet - '0x329c6e459ffa7475718838145e5e85802db2a303', //emaid - '0x3a856d4effa670c54585a5d523e96513e148e95d', //trias - '0x1495bc9e44af1f8bcb62278d2bec4540cf0c05ea', //deia - '0x4cff49d0a19ed6ff845a9122fa912abcfb1f68a6', //wtk - "0x23878914efe38d27c4d67ab83ed1b93a74d4086a", //aEthUSDT - "0x4d5f47fa6a74757f35c14fd3a6ef8e3c9bc514e8", // aEthWETH - "0x98c23e9d8f34fefb1b7bd6a91b7ff122f4e16f5c", // aEthUSDC - "0x6982508145454ce325ddbe47a25d4ec3d2311933", // PEPE - ADDRESSES.ethereum.METH, //METH - ADDRESSES.mantle.cmETH, // CMETH - "0x54d2252757e1672eead234d27b1270728ff90581", // BITGET TOKEN, NEW - ADDRESSES.ethereum.USDe, // USDE - "0x136471a34f6ef19fe571effc1ca711fdb8e49f2b", //USYC - "0x7712c34205737192402172409a8f7ccef8aa2aec", // BUIDL - '0xaf6186b3521b60e27396b5d23b48abc34bf585c5', // GUSD - STABLE FROM GATE,IO EXCHANGE - ], - tron: [ - nullAddress, - ADDRESSES.tron.USDT, // USDT - ADDRESSES.tron.USDC, // USDC - // 'TFptbWaARrWTX5Yvy3gNG5Lm8BmhPx82Bt', //wbt - ADDRESSES.tron.TUSD, - 'TThzxNRLrW2Brp9DcTQU8i4Wd9udCWEdZ3', // stUSDT - 'TUPM7K8REVzD2UdV4R5fe5M8XbnR2DdoJ6', // HTX - ], - polygon: [ - nullAddress, - ADDRESSES.polygon.USDT, // USDT - ADDRESSES.polygon.WMATIC_1, // WMATIC - ADDRESSES.polygon.WETH_1, // WETH - ADDRESSES.polygon.QUICK, // QUICK - ADDRESSES.polygon.WBTC, //WBTC - ADDRESSES.polygon.USDC, //USDC - ADDRESSES.polygon.DAI, //DAI - '0x2AB0e9e4eE70FFf1fB9D67031E44F6410170d00e', //xen - '0x0169ec1f8f639b32eec6d923e24c2a2ff45b9dd6', //ALGB - '0xd0258a3fd00f38aa8090dfee343f10a9d4d30d3f', //voxel - ], - algorand: [], - solana: [ - ADDRESSES.solana.USDC, // USDC - ADDRESSES.solana.USDT, // USDT - ], - bsc: [ - nullAddress, - ADDRESSES.bsc.BTCB, // BTCB - ADDRESSES.bsc.ETH, // BTCE - '0xfd5840cd36d94d7229439859c0112a4185bc0255', // vUSDT - ADDRESSES.bsc.BETH, // BETH - '0x95c78222b3d6e262426483d42cfa53685a67ab9d', // vBUSD - '0x7083609fce4d1d8dc0c979aab8c869ea2c873402', // BDOT - '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', // CAKE - ADDRESSES.bsc.USDT, // BUSDT - ADDRESSES.bsc.BUSD, // BUSD - '0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe', // BXRP - ADDRESSES.bsc.USDC, // B-USDC - ADDRESSES.bsc.BTUSD, // B-TUSD - '0x2859e4544c4bb03966803b044a93563bd2d0dd4d', // SHIB - '0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', // ADA - '0x4691937a7508860f876c9c0a2a617e7d9e945d4b', // WOO - '0xc748673057861a797275CD8A068AbB95A902e8de', // BabyDoge - '0xAC51066d7bEC65Dc4589368da368b212745d63E8', // ALICE - '0xfb5B838b6cfEEdC2873aB27866079AC55363D37E', // FLOKI - '0x352Cb5E19b12FC216548a2677bD0fce83BaE434B', // BTT - '0xAD29AbB318791D579433D831ed122aFeAf29dcfe', // FTM - '0x02ff5065692783374947393723dba9599e59f591',// yoshi - ADDRESSES.bsc.TUSD, //TUSD - '0x965f527d9159dce6288a2219db51fc6eef120dd1', //BSW - '0xa2120b9e674d3fc3875f415a7df52e382f141225', //ata - '0x44ec807ce2f4a6f2737a92e985f318d035883e47', //HFT - ADDRESSES.ethereum.FDUSD, //FDUSD - '0xeac9873291ddaca754ea5642114151f3035c67a2', //dcb - '0xaaa9214f675316182eaa21c85f0ca99160cc3aaa', //qanx - '0x2d060ef4d6bf7f9e5edde373ab735513c0e4f944', //aitech - '0x47c454ca6be2f6def6f32b638c80f91c9c3c5949', //gfall - '0xfe1d7f7a8f0bda6e415593a2e4f82c64b446d404', //blp - '0xe9d78bf51ae04c7e1263a76ed89a65537b9ca903', // GMEX - '0x59769630b236398c2471eb26e6a529448030d94f', //NKYC nonkyc exchange token - '0xbf5140a22578168fd562dccf235e5d43a02ce9b1', // UNI - '0x25d887ce7a35172c62febfd67a1856f20faebb00', //pepe - '0x2024b9be6b03f2a57d3533ae33c7e1d0b0b4be47', //Bitcointry exchange token BTTY - ], - eos: [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], - ["core.vaulta", "A", "vaulta"], - ], - arbitrum: [ - nullAddress, - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.arbitrum.DAI, // DAI - '0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b', //aidoge - '0x3082cc23568ea640225c2467653db90e9250aaa0', //rdnt - '0x088cd8f5ef3652623c22d48b1605dcfe860cd704', //vela - ADDRESSES.arbitrum.LPT, //lpt - '0x51fc0f6660482ea73330e414efd7808811a57fa2', //premia - '0x25d887ce7a35172c62febfd67a1856f20faebb00', //pepe - ], - avax: [ - nullAddress, - ADDRESSES.avax.USDt, // USDT - ADDRESSES.avax.USDC, // USDC - ADDRESSES.avax.DAI, // DAI - '0xabc9547b534519ff73921b1fba6e672b5f58d083', // WOO - ADDRESSES.avax.USDC_e, //USDC.e - ], - near: [ - 'usdt.tether-token.near', - ], - optimism: [ - nullAddress, - ADDRESSES.optimism.OP, //OP - ADDRESSES.optimism.USDT, //USDT - ADDRESSES.optimism.USDC, //USDC - ADDRESSES.optimism.DAI, // DAI - '0x217d47011b23bb961eb6d93ca9945b7501a5bb11' //thales - ], - linea: [ - nullAddress, - ADDRESSES.linea.USDT, //bridge usdt - ADDRESSES.linea.USDC, //usdc bridge - ADDRESSES.linea.DAI //dai bridge - ], - flare: [ - nullAddress, - ADDRESSES.flare.WFLR, - ], - celo: [ - nullAddress, - ADDRESSES.celo.CELO, //celo - ADDRESSES.celo.cUSD, //cUSD - ], - moonbeam: [ - nullAddress, - ADDRESSES.telos.USDT, //usdt - "0x8f552a71efe5eefc207bf75485b356a0b3f01ec9", //usdc - ], - moonriver: [ - nullAddress, - ADDRESSES.moonriver.USDT, //usdt - ], - kava: [ - nullAddress, - ADDRESSES.kava.USDT, - ADDRESSES.kava.USDt, - ADDRESSES.kava.USDC - ], - cronos: [ - nullAddress, - ADDRESSES.cronos.USDC, - ADDRESSES.cronos.USDT, - ADDRESSES.cronos.WBTC, - "0xe44fd7fcb2b1581822d0c862b68222998a0c299a" //weth - ], - ton: [ - nullAddress, - ADDRESSES.ton.USDT, - ADDRESSES.ton.TON_1, - ADDRESSES.ton.TON_2, - ADDRESSES.ton.TON_3, - ], - sui: [], - aptos: [ - ADDRESSES.aptos.APT, - ADDRESSES.aptos.USDC, - ADDRESSES.aptos.USDT, - ADDRESSES.aptos.USDt - ], - mantle: [ - nullAddress, - ADDRESSES.mantle.USDC, - ADDRESSES.mantle.USDT, - ADDRESSES.mantle.cmETH, - ADDRESSES.mantle.mETH, - ADDRESSES.mantle.WETH, - ADDRESSES.mantle.WMNT, - ADDRESSES.mantle.USDe, - ADDRESSES.mantle.sUSDe, - ADDRESSES.mantle.AUSD, - ADDRESSES.mantle.FBTC - ], - klaytn: [nullAddress, ADDRESSES.klaytn.USDT_1,] -} - -function cexExports(config) { - const chains = Object.keys(config).filter(i => i !== 'bep2') - const exportObj = { - timetravel: false, - } - chains.forEach(chain => { - let { tokensAndOwners, owners, tokens, blacklistedTokens, fungibleAssets } = config[chain] - - if (!tokensAndOwners && !tokens && chain !== 'solana') { - tokens = defaultTokens[chain] - if (!tokens) { - // log(chain, 'Missing default token list, counting only native token balance',) - tokens = [nullAddress] - } - } - - const options = { ...config[chain], owners, tokens, chain, blacklistedTokens } - if (chain === 'solana') options.solOwners = owners - if (chain === 'ton') options.onlyWhitelistedTokens = true - if (chain === 'aptos' && Array.isArray(fungibleAssets)) options.fungibleAssets = fungibleAssets - exportObj[chain] = { tvl: sumTokensExport(options) } - }) - if (config.bep2) { - exportObj.bsc = exportObj.bsc ?? { tvl: () => ({}) } - const bscTvl = exportObj.bsc.tvl - exportObj.bsc.tvl = sdk.util.sumChainTvls([ - bscTvl, sumTokensExport({ ...config.bep2 }) - ]) - } - return exportObj -} - -module.exports = { - cexExports, - defaultTokens, -} diff --git a/projects/helper/chain/acala.js b/projects/helper/chain/acala.js deleted file mode 100644 index f63d8d148e3..00000000000 --- a/projects/helper/chain/acala.js +++ /dev/null @@ -1,30 +0,0 @@ -const sdk = require('@defillama/sdk') -const { post } = require('../http') -const { sleep } = require('../utils') - -const endpoint = 'https://acala.api.subscan.io/api/v2/scan/search' - -async function getBalance(key) { - const data = await post(endpoint, { key }, { - headers: { - 'Content-Type': 'application/json', - 'X-API-Key': 'f89d810db5ef4c4fbc83b987dc2ffcda' - } - }) - return +(data?.data?.account?.balance ?? 0) -} - -async function sumTokens({ balances = {}, owners = [] }) { - let total = 0 - for (const owner of owners) { - const balance = await getBalance(owner) - total += balance - await sleep(3000) - } - sdk.util.sumSingleBalance(balances, 'acala', total) - return balances -} - -module.exports = { - sumTokens -} \ No newline at end of file diff --git a/projects/helper/chain/aelf.js b/projects/helper/chain/aelf.js deleted file mode 100644 index a7c44bfe19c..00000000000 --- a/projects/helper/chain/aelf.js +++ /dev/null @@ -1,22 +0,0 @@ -const sdk = require('@defillama/sdk') -const { get } = require('../http') - - -async function getBalance(key) { - const data = await get(`https://explorer.aelf.io/api/viewer/balances?address=${key}`) - return +(data?.data?.[0]?.balance ?? 0) -} - -async function sumTokens({ balances = {}, owners = [] }) { - let total = 0 - for (const owner of owners) { - const balance = await getBalance(owner) - total += balance - } - sdk.util.sumSingleBalance(balances, 'aelf', total) - return balances -} - -module.exports = { - sumTokens -} \ No newline at end of file diff --git a/projects/helper/chain/aeternity.js b/projects/helper/chain/aeternity.js deleted file mode 100644 index 1ca93d824b1..00000000000 --- a/projects/helper/chain/aeternity.js +++ /dev/null @@ -1,29 +0,0 @@ -const axios = require('axios'); -const sdk = require('@defillama/sdk') - -const endpoint = 'https://mainnet.aeternity.io/v2/accounts'; // Replace with the appropriate endpoint - -async function getBalance(address) { - try { - const response = await axios.get(`${endpoint}/${address}`); - const balance = response.data.balance; - return balance; - } catch (error) { - console.error('Error fetching token balance:', error); - return 0; - } -} - -async function sumTokens({ balances = {}, owners = [] }) { - let total = 0; - for (const owner of owners) { - const balance = await getBalance(owner); - total += balance; - } - sdk.util.sumSingleBalance(balances, 'aeternity', total); - return balances; -} - -module.exports = { - sumTokens -}; \ No newline at end of file diff --git a/projects/helper/chain/alephium.js b/projects/helper/chain/alephium.js deleted file mode 100644 index b7320e9fb91..00000000000 --- a/projects/helper/chain/alephium.js +++ /dev/null @@ -1,92 +0,0 @@ -const axios = require("axios"); -const basex = require("base-x"); - -const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; -const bs58 = basex(ALPHABET); - -const EXPLORER_API_HOST = "https://backend.mainnet.alephium.org"; -const NODE_API_HOST = "https://node.mainnet.alephium.org"; - -async function getAlphBalance(address) { - return (await axios.get(`${EXPLORER_API_HOST}/addresses/${address}/balance`)) - .data; -} - -async function getTokensBalance(address) { - return ( - await axios.get(`${EXPLORER_API_HOST}/addresses/${address}/tokens-balance`) - ).data; -} - -async function contractMultiCall(payload) { - const result = ( - await axios.post(`${NODE_API_HOST}/contracts/multicall-contract`, { - calls: payload, - }) - ).data; - return result.results.map((r) => tryGetCallResult(r)); -} - -function tryGetCallResult(result) { - if (result.type === "CallContractFailed") { - throw new Error(`Failed to call contract, error: ${result.error}`); - } - return result; -} - -async function getTokenInfo(tokenId) { - const [metadata] = ( - await axios.post(`${EXPLORER_API_HOST}/tokens/fungible-metadata`, [tokenId]) - ).data; - - return metadata; -} - -function contractIdFromAddress(address) { - const decoded = bs58.decode(address); - - if (decoded.length == 0) throw new Error("Address string is empty"); - const addressType = decoded[0]; - const addressBody = decoded.slice(1); - - if (addressType == 0x03) { - return Buffer.from(addressBody).toString("hex"); - } else { - throw new Error(`Invalid contract address type: ${addressType}`); - } -} - -function hexToBinUnsafe(hex) { - const bytes = []; - for (let i = 0; i < hex.length; i += 2) { - bytes.push(parseInt(hex.slice(i, i + 2), 16)); - } - return new Uint8Array(bytes); -} - -function addressFromContractId(contractId) { - const hash = hexToBinUnsafe(contractId); - const bytes = new Uint8Array([0x03, ...hash]); - return bs58.encode(bytes); -} - -async function sumTokens({ owners = [], owner }) { - if (owner) owners = [owner]; - let total = 0 - for (const owner of owners) - total += (await getAlphBalance(owner)).balance / 1e18 - - return { - alephium: total - } -} - -module.exports = { - sumTokens, - getAlphBalance, - getTokensBalance, - getTokenInfo, - contractIdFromAddress, - addressFromContractId, - contractMultiCall, -}; diff --git a/projects/helper/chain/algorand.js b/projects/helper/chain/algorand.js deleted file mode 100644 index fae1cc29bcd..00000000000 --- a/projects/helper/chain/algorand.js +++ /dev/null @@ -1,253 +0,0 @@ -// documentation: https://developer.algorand.org/docs/get-details/indexer/?from_query=curl#sdk-client-instantiations - -const axios = require('axios') -const { getApplicationAddress } = require('./algorandUtils/address') -const { RateLimiter } = require("limiter"); -const coreAssets = require('../coreAssets.json') -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js'); -const stateCache = {} -const accountCache = {} -const assetCache = {} - -const geckoMapping = Object.values(coreAssets.algorand) -const axiosObj = axios.create({ - baseURL: "https://mainnet-idx.algonode.cloud", - timeout: 300000, -}); - -const indexerLimiter = new RateLimiter({ tokensPerInterval: 10, interval: "second" }); - -async function lookupApplications(appId) { - return (await axiosObj.get(`/v2/applications/${appId}`)).data -} - -async function lookupAccountByID(accountId) { - return (await axiosObj.get(`/v2/accounts/${accountId}`)).data -} - -async function searchAccounts({ appId, limit = 1000, nexttoken, searchParams, }) { - const response = (await axiosObj.get('/v2/accounts', { - params: { - ...searchParams, - 'application-id': appId, - limit, - next: nexttoken, - } - })) - return response.data -} - -async function lookupApplicationsCreatedByAccount(accountId) { - return (await axiosObj.get(`/v2/accounts/${accountId}/created-applications`)).data -} - -async function searchAccountsAll({ appId, limit = 1000, searchParams = {}, sumTokens = false, api }) { - const accounts = [] - let nexttoken - do { - const res = await searchAccounts({ appId, limit, nexttoken, searchParams, }) - nexttoken = res['next-token'] - accounts.push(...res.accounts) - } while (nexttoken) - if (sumTokens && api) { - sdk.log('sumTokens', accounts.length) - for (const account of accounts) { - api.add('1', account.amount) - for (const asset of (account.assets ?? [])) { - api.add(asset['asset-id']+'', asset.amount) - } - } - } - return accounts -} - -const withLimiter = (fn, tokensToRemove = 1) => async (...args) => { - await indexerLimiter.removeTokens(tokensToRemove); - return fn(...args); -} - -async function sumTokens({ owner, owners = [], tokens = [], token, balances, api, blacklistedTokens = [], tinymanLps = [], blacklistOnLpAsWell = false, tokensAndOwners = [], }) { - if (!balances) { - balances = api ? api.getBalances() : {} - } - if (owner) owners = [owner] - if (token) tokens = [token] - if (tokensAndOwners.length) owners = tokensAndOwners.map(i => i[1]) - const accounts = await Promise.all(owners.map(limitedGetAccountInfo)) - accounts.forEach(({ assets }, i) => { - if (tokensAndOwners.length) tokens = [tokensAndOwners[i][0]] - assets.forEach(i => { - if (!tokens.length || tokens.includes(i['asset-id'])) - if (!blacklistedTokens.length || !blacklistedTokens.includes(i['asset-id'])) - sdk.util.sumSingleBalance(balances, i['asset-id'], BigNumber(i.amount).toFixed(0), 'algorand') - }) - }) - if (tinymanLps.length) { - await Promise.all(tinymanLps.map(([lp, unknown]) => resolveTinymanLp({ balances, lpId: lp, unknownAsset: unknown, blacklistedTokens: blacklistOnLpAsWell ? blacklistedTokens : [] }))) - } - return balances -} - -async function getAssetInfo(assetId) { - if (!assetCache[assetId]) assetCache[assetId] = _getAssetInfo() - return assetCache[assetId] - - async function _getAssetInfo() { - const { data: { asset } } = await axiosObj.get(`/v2/assets/${assetId}`) - const reserveInfo = await limitedGetAccountInfo(asset.params.reserve) - const assetObj = { ...asset.params, ...asset, reserveInfo, } - assetObj.circulatingSupply = assetObj.total - reserveInfo.assetMapping[assetId].amount - assetObj.assets = { ...reserveInfo.assetMapping } - delete assetObj.assets[assetId] - return assetObj - } -} - -async function getAssetInfoWithoutReserve(assetId) { - if (!assetCache[assetId]) assetCache[assetId] = _getAssetInfo() - return assetCache[assetId] - - async function _getAssetInfo() { - const { data: { asset } } = await axiosObj.get(`/v2/assets/${assetId}`) - const assetObj = { ...asset.params, ...asset, } - return assetObj - } -} - -async function resolveTinymanLp({ balances, lpId, unknownAsset, blacklistedTokens, }) { - const lpBalance = balances['algorand:' + lpId] - if (lpBalance && lpBalance !== '0') { - const lpInfo = await getAssetInfo(lpId) - let ratio = lpBalance / lpInfo.circulatingSupply - if (unknownAsset && lpInfo.assets[unknownAsset]) { - ratio = ratio * 2 - Object.keys(lpInfo.assets).forEach((token) => { - if (!blacklistedTokens.length || !blacklistedTokens.includes(token)) - if (token !== unknownAsset) - sdk.util.sumSingleBalance(balances, token, BigNumber(lpInfo.assets[token].amount * ratio).toFixed(0), 'algorand') - }) - } else { - Object.keys(lpInfo.assets).forEach((token) => { - if (!blacklistedTokens.length || !blacklistedTokens.includes(token)) - sdk.util.sumSingleBalance(balances, token, BigNumber(lpInfo.assets[token].amount * ratio).toFixed(0), 'algorand') - }) - } - } - delete balances[lpId] - delete balances['algorand:' + lpId] - return balances -} - -async function getAccountInfo(accountId) { - if (typeof accountId === 'number') { // it is an application id - accountId = getApplicationAddress(accountId) - } - if (!accountCache[accountId]) accountCache[accountId] = _getAccountInfo() - return accountCache[accountId] - - async function _getAccountInfo() { - const { data: { account } } = await axiosObj.get(`/v2/accounts/${accountId}`) - if (!account.assets) account.assets = [] - if (account.amount) account.assets.push({ amount: account.amount, 'asset-id': '1', }) - account.assetMapping = {} - account.assets.forEach(i => { - i['asset-id'] = '' + i['asset-id'] - account.assetMapping[i['asset-id']] = i - }) - return account - } -} - -const tokens = { - usdc: 31566704, - usdt: 312769, - wBtc: 1058926737, - wEth: 887406851, - wBtcGoBtcLp: 1058934626, - wEthGoEthLp: 1058935051, - xUsdGoUsdLp: 1081974597, - usdtGoUsdLp: 1081978679, - wusdcGoUsdLp: 1242543501, - wusdtGoUsdLp: 1242550568, - goUsd: 672913181, - usdcGoUsdLp: 885102318, - gard: 684649988, - gold$: 246516580, - silver$: 246519683, - ASAGold: 1241944285 -}; - -// store all asset ids as string -Object.keys(tokens).forEach(t => tokens[t] = '' + tokens[t]) - -async function getAppGlobalState(marketId) { - if (!stateCache[marketId]) stateCache[marketId] = _getAppGlobalState() - return stateCache[marketId] - - async function _getAppGlobalState() { - let response = await lookupApplications(marketId); - let results = {} - response.application.params["global-state"].forEach(x => { - let decodedKey = Buffer.from(x.key, "base64").toString("binary") - results[decodedKey] = x.value.uint - if (x.value.type === 1) results[decodedKey] = Buffer.from(x.value.bytes, "base64").toString("binary") - }) - - return results - } -} - -async function getPriceFromAlgoFiLP(lpAssetId, unknownAssetId) { - let lpInfo = await getAssetInfo(lpAssetId) - if (lpInfo['unit-name'] !== 'AF-POOL') throw new Error('No, this is not an AlgoFi LP') - - const unknownAssetQuantity = lpInfo.reserveInfo.assets.find(i => i['asset-id'] === '' + unknownAssetId).amount - for (const i of lpInfo.reserveInfo.assets) { - const id = i['asset-id'] - if (geckoMapping.includes(id)) { - return { - price: i.amount / unknownAssetQuantity, - geckoId: 'algorand:' + id, - decimals: 0, - } - } - } - - throw new Error('Not mapped with any whitelisted assets') -} - -async function lookupTransactionsByID(searchParams = {}) { - const urlParams = new URLSearchParams(searchParams).toString(); - return (await axiosObj.get(`/v2/transactions?${urlParams}`)).data -} - -const limitedGetAccountInfo = withLimiter(getAccountInfo) - -async function getApplicationBoxes({ appId, limit = 1000, nexttoken, }) { - const response = (await axiosObj.get(`/v2/applications/${appId}/boxes`, { - params: { - limit, - next: nexttoken, - } - })) - return response.data.boxes -} - -module.exports = { - tokens, - getAssetInfo: withLimiter(getAssetInfo), - getAssetInfoWithoutReserve: withLimiter(getAssetInfoWithoutReserve), - searchAccountsAll, - getAccountInfo: limitedGetAccountInfo, - sumTokens, - getApplicationAddress, - lookupApplications: withLimiter(lookupApplications), - lookupAccountByID: withLimiter(lookupAccountByID), - lookupTransactionsByID: withLimiter(lookupTransactionsByID), - searchAccounts: withLimiter(searchAccounts), - getAppGlobalState: getAppGlobalState, - getPriceFromAlgoFiLP, - lookupApplicationsCreatedByAccount: withLimiter(lookupApplicationsCreatedByAccount), - getApplicationBoxes, -} \ No newline at end of file diff --git a/projects/helper/chain/algorandUtils/address.js b/projects/helper/chain/algorandUtils/address.js deleted file mode 100644 index ecfe3b0666a..00000000000 --- a/projects/helper/chain/algorandUtils/address.js +++ /dev/null @@ -1,72 +0,0 @@ -const base32 = require('hi-base32'); -const sha512 = require('js-sha512'); - -const ALGORAND_CHECKSUM_BYTE_LENGTH = 4; -const ALGORAND_ADDRESS_LENGTH = 58; -const PUBLIC_KEY_LENGTH = 32 - -const APP_ID_PREFIX = Buffer.from('appID'); - -/** - * encodeAddress takes an Algorand address as a Uint8Array and encodes it into a string with checksum. - * @param address - a raw Algorand address - * @returns the address and checksum encoded as a string. - */ -function encodeAddress(address) { - // compute checksum - const checksum = genericHash(address) - .slice( - PUBLIC_KEY_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, - PUBLIC_KEY_LENGTH - ); - const addr = base32.encode(concatArrays(address, checksum)); - - return addr.toString().slice(0, ALGORAND_ADDRESS_LENGTH); // removing the extra '====' -} - -/** - * Get the escrow address of an application. - * @param appID - The ID of the application. - * @returns The address corresponding to that application's escrow account. - */ -function getApplicationAddress(appID) { - const toBeSigned = concatArrays(APP_ID_PREFIX, encodeUint64(appID)); - const hash = genericHash(toBeSigned); - return encodeAddress(new Uint8Array(hash)); -} - -function concatArrays(...arrs) { - const size = arrs.reduce((sum, arr) => sum + arr.length, 0); - const c = new Uint8Array(size); - - let offset = 0; - for (let i = 0; i < arrs.length; i++) { - c.set(arrs[i], offset); - offset += arrs[i].length; - } - - return c; -} - -function encodeUint64(num) { - const isInteger = typeof num === 'bigint' || Number.isInteger(num); - - if (!isInteger || num < 0 || num > BigInt('0xffffffffffffffff')) { - throw new Error('Input is not a 64-bit unsigned integer'); - } - - const buf = Buffer.allocUnsafe(8); - - buf.writeBigUInt64BE(BigInt(num)); - - return new Uint8Array(buf); -} - -function genericHash(arr) { - return sha512.sha512_256.array(arr); -} - -module.exports = { - encodeAddress, - getApplicationAddress, -} \ No newline at end of file diff --git a/projects/helper/chain/aptos.js b/projects/helper/chain/aptos.js deleted file mode 100644 index 3003f4ff620..00000000000 --- a/projects/helper/chain/aptos.js +++ /dev/null @@ -1,244 +0,0 @@ -const sdk = require('@defillama/sdk') - -const http = require('../http') -const { getEnv } = require('../env') -const coreTokensAll = require('../coreAssets.json') -const { transformBalances } = require('../portedTokens') -const { log, getUniqueAddresses } = require('../utils') -const { GraphQLClient } = require("graphql-request"); - - -const endpoint = () => getEnv('APTOS_RPC') -const movementEndpoint = () => getEnv('MOVE_RPC') - -const endpointMap = { - aptos: endpoint, - move: movementEndpoint, -} - - -async function aQuery(api, chain = 'aptos') { - return http.get(`${endpointMap[chain]()}${api}`) -} - -async function getResources(account, chain = 'aptos') { - const data = [] - let lastData - let cursor - do { - let url = `${endpointMap[chain]()}/v1/accounts/${account}/resources?limit=9999` - if (cursor) url += '&start=' + cursor - const res = await http.getWithMetadata(url) - lastData = res.data - data.push(...lastData) - sdk.log('fetched resource length', lastData.length) - cursor = res.headers['x-aptos-cursor'] - } while (lastData.length === 9999) - return data -} - -async function getResource(account, key, chain = 'aptos') { - if (typeof chain !== 'string') chain = 'aptos' - let url = `${endpointMap[chain]()}/v1/accounts/${account}/resource/${key}` - const { data } = await http.get(url) - return data -} - -async function getFungibles(tokenAddress, owners, balances) { - if (!owners?.length) return; - - await Promise.all( - owners.map(async (ownerRaw) => { - const owner = ownerRaw.toLowerCase(); - const url = `${endpointMap['aptos']()}/v1/accounts/${owner}/balance/${tokenAddress}`; - - const tokenAmount = await http.get(url); - if (!tokenAmount) return; - sdk.util.sumSingleBalance(balances, tokenAddress, tokenAmount) - }) - ); -} - -function dexExport({ - account, - poolStr, - token0Reserve = i => i.data.coin_x_reserve.value, - token1Reserve = i => i.data.coin_y_reserve.value, - getTokens = i => i.type.split('<')[1].replace('>', '').split(', '), -}) { - return { - timetravel: false, - misrepresentedTokens: true, - aptos: { - tvl: async (api) => { - const chain = api.chain - const balances = {} - let pools = await getResources(account, chain) - pools = pools.filter(i => i.type.includes(poolStr)) - log(`Number of pools: ${pools.length}`) - const coreTokens = Object.values(coreTokensAll[chain] ?? {}) - pools.forEach(i => { - const reserve0 = token0Reserve(i) - const reserve1 = token1Reserve(i) - const [token0, token1] = getTokens(i) - const isCoreAsset0 = coreTokens.includes(token0) - const isCoreAsset1 = coreTokens.includes(token1) - const nonNeglibleReserves = reserve0 !== '0' && reserve1 !== '0' - - if (isCoreAsset0 && isCoreAsset1) { - sdk.util.sumSingleBalance(balances, token0, reserve0) - sdk.util.sumSingleBalance(balances, token1, reserve1) - } else if (isCoreAsset0) { - sdk.util.sumSingleBalance(balances, token0, reserve0) - if (nonNeglibleReserves) - sdk.util.sumSingleBalance(balances, token0, reserve0) - } else if (isCoreAsset1) { - sdk.util.sumSingleBalance(balances, token1, reserve1) - if (nonNeglibleReserves) - sdk.util.sumSingleBalance(balances, token1, reserve1) - } - }) - - return transformBalances(chain, balances) - } - } - } -} - -async function getBalance(account, token, chain = 'aptos') { - let url = `${endpointMap[chain]()}/v1/accounts/${account}/balance/${token}` - return await http.get(url) -} - -async function sumTokens({ balances = {}, owners = [], blacklistedTokens = [], tokens = [], api, chain = 'aptos' }) { - if (api) chain = api.chain - const uniqueOwners = getUniqueAddresses(owners, true) - const validTokens = tokens.filter(token => !blacklistedTokens.includes(token)); - - for (const owner of uniqueOwners) { - const balancesPerToken = await Promise.all( - validTokens.map(token => getBalance(owner, token)) - ); - - validTokens.forEach((token, index) => { - sdk.util.sumSingleBalance(balances, token, balancesPerToken[index]); - }); - } - - return transformBalances(chain, balances) -} - -async function getTableData({ table, data, chain = 'aptos' }) { - const response = await http.post(`${endpointMap[chain]()}/v1/tables/${table}/item`, data) - return response -} - -async function function_view({ functionStr, type_arguments = [], args = [], ledgerVersion = undefined, chain = 'aptos' }) { - let path = `${endpointMap[chain]()}/v1/view` - if (ledgerVersion !== undefined) path += `?ledger_version=${ledgerVersion}` - const response = await http.post(path, { "function": functionStr, "type_arguments": type_arguments, arguments: args }) - return response.length === 1 ? response[0] : response -} - -function hexToString(hexString) { - if (hexString.startsWith('0x')) hexString = hexString.slice(2); - const byteLength = hexString.length / 2; - const byteArray = new Uint8Array(byteLength); - - for (let i = 0; i < byteLength; i++) { - const hexByte = hexString.substr(i * 2, 2); - byteArray[i] = parseInt(hexByte, 16); - } - - const decoder = new TextDecoder('utf-8'); - const stringValue = decoder.decode(byteArray); - - return stringValue -} - -function sumTokensExport(options) { - return async (api) => sumTokens({ ...api, api, ...options }) -} - -const graphQLClient = new GraphQLClient("https://api.mainnet.aptoslabs.com/v1/graphql"); - -// Query to get the latest block. -const latestBlockQuery = `query LatestBlock { - block_metadata_transactions(order_by: {version: desc}, limit: 1) { - block_height - } -}`; - -// Query to get a block. -const blockQuery = `query Block($block: bigint) { - block_metadata_transactions(limit: 1, where: {block_height: {_eq: $block}}) { - timestamp - version - } -}`; - -// Query to get a block range. -const blockRangeQuery = `query Block($firstBlock: bigint, $limit: Int) { - block_metadata_transactions(limit: $limit, where: {block_height: {_gte: $firstBlock}}, order_by: {block_height: asc}) { - timestamp - version - } -}`; - -// Given a timestamp, returns the transaction version that is closest to that timestamp. -const timestampToVersion = async (timestamp, minBlock = 0, chain = 'aptos') => { - if (chain !== 'aptos') throw new Error('Unsupported chain'); - let left = minBlock; - let right = await graphQLClient.request(latestBlockQuery).then(r => Number(r.block_metadata_transactions[0].block_height)); - let middle; - while (left + 100 < right) { - middle = Math.round((left + right) / 2); - const middleBlock = await graphQLClient.request(blockQuery, { block: middle }).then(r => r.block_metadata_transactions[0]); - const middleBlockDate = new Date(middleBlock.timestamp); - if (middleBlockDate.getTime() === timestamp.getTime()) { - return Number(middleBlock.version); - } - if (timestamp.getTime() < middleBlockDate.getTime()) { - right = middle; - } else { - left = middle + 1; - } - } - const blocks = await graphQLClient.request( - blockRangeQuery, - { firstBlock: left, limit: right - left } - ).then(r => r.block_metadata_transactions); - const mappedBlocks = blocks.map((e) => ({ - version: Number(e.version), - delta: Math.abs(timestamp.getTime() - new Date(e.timestamp).getTime()) - })); - mappedBlocks.sort((a, b) => a.delta - b.delta); - return mappedBlocks[0].version; -} - -async function functionViewWithApiKey({ functionStr, type_arguments = [], args = [], ledgerVersion = undefined, apiKey = undefined, chain = 'aptos' }) { - let path = `${endpointMap[chain]()}/v1/view` - if (ledgerVersion !== undefined) path += `?ledger_version=${ledgerVersion}` - const headers = { - "Authorization": "Bearer " + apiKey - } - const response = await http.post(path, { "function": functionStr, "type_arguments": type_arguments, arguments: args }, {headers: headers}) - return response.length === 1 ? response[0] : response -} - -module.exports = { - endpoint: endpoint(), - endpointMap, - dexExport, - aQuery, - getResources, - getResource, - coreTokensAptos: Object.values(coreTokensAll['aptos']), - sumTokens, - sumTokensExport, - getTableData, - function_view, - hexToString, - timestampToVersion, - functionViewWithApiKey -}; diff --git a/projects/helper/chain/astar.js b/projects/helper/chain/astar.js deleted file mode 100644 index 8598f8e2e88..00000000000 --- a/projects/helper/chain/astar.js +++ /dev/null @@ -1,30 +0,0 @@ -const sdk = require('@defillama/sdk') -const { post } = require('../http') -const { sleep } = require('../utils') - -const endpoint = 'https://astar.api.subscan.io/api/v2/scan/search' - -async function getBalance(key) { - const data = await post(endpoint, { key }, { - headers: { - 'Content-Type': 'application/json', - 'X-API-Key': 'f89d810db5ef4c4fbc83b987dc2ffcda' - } - }) - return +(data?.data?.account?.balance ?? 0) -} - -async function sumTokens({ balances = {}, owners = [] }) { - let total = 0 - for (const owner of owners) { - const balance = await getBalance(owner) - total += balance - await sleep(3000) - } - sdk.util.sumSingleBalance(balances, 'astar', total) - return balances -} - -module.exports = { - sumTokens -} \ No newline at end of file diff --git a/projects/helper/chain/bifrost.js b/projects/helper/chain/bifrost.js deleted file mode 100644 index 2977c8e2004..00000000000 --- a/projects/helper/chain/bifrost.js +++ /dev/null @@ -1,30 +0,0 @@ -const sdk = require('@defillama/sdk') -const { post } = require('../http') -const { sleep } = require('../utils') - -const endpoint = 'https://bifrost.api.subscan.io/api/v2/scan/search' - -async function getBalance(key) { - const data = await post(endpoint, { key }, { - headers: { - 'Content-Type': 'application/json', - 'X-API-Key': 'f89d810db5ef4c4fbc83b987dc2ffcda' - } - }) - return +(data?.data?.account?.balance ?? 0) -} - -async function sumTokens({ balances = {}, owners = [] }) { - let total = 0 - for (const owner of owners) { - const balance = await getBalance(owner) - total += balance - await sleep(3000) - } - sdk.util.sumSingleBalance(balances, 'bifrost', total) - return balances -} - -module.exports = { - sumTokens -} \ No newline at end of file diff --git a/projects/helper/chain/bitcoin.js b/projects/helper/chain/bitcoin.js deleted file mode 100644 index 99b90d94e9b..00000000000 --- a/projects/helper/chain/bitcoin.js +++ /dev/null @@ -1,162 +0,0 @@ -const sdk = require('@defillama/sdk') -const { get, post } = require('../http') -const { getEnv } = require('../env') -const { getUniqueAddresses } = require('../tokenMapping') -const { RateLimiter } = require("limiter"); -const { sliceIntoChunks, sleep } = require('../utils'); - -const url = addr => 'https://blockstream.info/api/address/' + addr -const url2 = addr => 'https://rpc.ankr.com/http/btc_blockbook/api/address/' + addr -const url3 = addrs => 'https://blockchain.info/multiaddr?active=' + addrs.join('|') - -const delay = 3 * 60 * 60 // 3 hours -const balancesNow = { - -} - -const bitcoinCacheEnv = getEnv('BITCOIN_CACHE_API') - - -const limiter = new RateLimiter({ tokensPerInterval: 1, interval: 10_000 }); - -async function cachedBTCBalCall(owners, retriesLeft = 2) { - try { - const res = await post(bitcoinCacheEnv, { addresses: owners, network: 'BTC' }) - return res - } catch (e) { - console.error('cachedBTCBalCall error', e.toString()) - if (retriesLeft > 0) { - return await cachedBTCBalCall(owners, retriesLeft - 1) - } - throw e - } -} - -async function getCachedBitcoinBalances(owners) { - const chunks = sliceIntoChunks(owners, 700) - sdk.log('bitcoin cache api call: ', owners.length, chunks.length) - let sum = 0 - let i = 0 - for (const chunk of chunks) { - const res = await cachedBTCBalCall(chunk) - sdk.log(i++, sum / 1e8, res / 1e8, chunk.length) - sum += +res - } - return sum -} - -async function _sumTokensBlockchain({ balances = {}, owners = [], forceCacheUse, }) { - if (bitcoinCacheEnv && owners.length > 51) { - if (owners.length > 1000) forceCacheUse = true - try { - const res = await getCachedBitcoinBalances(owners) - sdk.util.sumSingleBalance(balances, 'bitcoin', res / 1e8) - return balances - - } catch (e) { - if (forceCacheUse) throw e - sdk.log('bitcoin cache error', e.toString()) - } - } - console.time('bitcoin' + owners.length + '___' + owners[0]) - const STEP = 50 - for (let i = 0; i < owners.length; i += STEP) { - const { addresses } = await get(url3(owners.slice(i, i + STEP))) - for (const addr of addresses) - sdk.util.sumSingleBalance(balances, 'bitcoin', addr.final_balance / 1e8) - await sleep(10000) - } - - console.timeEnd('bitcoin' + owners.length + '___' + owners[0]) - return balances -} - -const withLimiter = (fn, tokensToRemove = 1) => async (...args) => { - await limiter.removeTokens(tokensToRemove); - return fn(...args); -} - -const sumTokensBlockchain = withLimiter(_sumTokensBlockchain) - -async function getBalanceNow(addr) { - if (balancesNow[addr]) return balancesNow[addr] - try { - - const { chain_stats: { - funded_txo_sum, spent_txo_sum, - } } = await get(url(addr)) - - balancesNow[addr] = (funded_txo_sum - spent_txo_sum) / 1e8 - - } catch (e) { - sdk.log('bitcoin balance error', addr, e.toString()) - - const { balance } = await get(url2(addr)) - balancesNow[addr] = balance - } - - return balancesNow[addr] -} - -async function sumTokens({ balances = {}, owners = [], timestamp, forceCacheUse, }) { - if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp - owners = getUniqueAddresses(owners, 'bitcoin') - const now = Date.now() / 1e3 - - if (!timestamp || (now - timestamp) < delay) { - try { - await sumTokensBlockchain({ balances, owners, forceCacheUse }) - return balances - } catch (e) { - sdk.log('bitcoin sumTokens error', e.toString()) - } - } - if (forceCacheUse) throw new Error('timestamp is too old, cant pull with forceCacheUse flag set') - - for (const addr of owners) - sdk.util.sumSingleBalance(balances, 'bitcoin', await getBalance(addr, timestamp)) - return balances -} - -// async function getBalance(addr, timestamp) { -// const now = Date.now() / 1e3 -// let balance = await getBalanceNow(addr) - -// if (!timestamp || (now - timestamp) < delay) return balance - -// let endpoint = `https://btc.getblock.io/${getEnv('GETBLOCK_KEY')}/mainnet/blockbook/api/v2/balancehistory/${addr}?fiatcurrency=btc&groupBy=86400&from=${timestamp}` - -// const response = await get(endpoint) -// response.forEach(({ sent, received }) => balance += sent / 1e8 - received / 1e8) -// sdk.log('bitcoin balance', addr, balance) -// return balance -// } - -// get archive BTC balance -async function getBalance(addr, timestamp) { - const endpoint = url(addr) + '/txs' - const txs = await get(endpoint) - - let balance = 0 - for (const tx of txs) { - if (tx.status.block_time <= timestamp) { - for (const vin of tx.vin) { - if (vin.prevout.scriptpubkey_address === addr) { - balance -= vin.prevout.value / 1e8 - } - } - - for (const vout of tx.vout) { - if (vout.scriptpubkey_address === addr) { - balance += vout.value / 1e8 - } - } - } - } - - return balance -} - -module.exports = { - sumTokens -} diff --git a/projects/helper/chain/bittensor.js b/projects/helper/chain/bittensor.js deleted file mode 100644 index 2278ee65473..00000000000 --- a/projects/helper/chain/bittensor.js +++ /dev/null @@ -1,38 +0,0 @@ -const sdk = require('@defillama/sdk') -const { post } = require('../http') - -const TAO_STATS_SUBQUERY = "https://api.subquery.network/sq/TaoStats/bittensor-indexer"; - -async function getBalance(key) { - const query = `{ - query{ - account(id: "${key}"){ - id - nodeId - balanceTotal - balanceStaked - balanceFree - address - } - } - }`; - - - const { data: { query: { account: { balanceTotal } } } } = await post(TAO_STATS_SUBQUERY, { query, variables: {}, }); - return balanceTotal/1e9 -} - - -async function sumTokens({ balances = {}, owners = [] }) { - let total = 0 - for (const owner of owners) { - const balance = await getBalance(owner) - total += balance - } - sdk.util.sumSingleBalance(balances, 'bittensor', total) - return balances -} - -module.exports = { - sumTokens -} \ No newline at end of file diff --git a/projects/helper/chain/brc20.js b/projects/helper/chain/brc20.js deleted file mode 100644 index 4c46bec528b..00000000000 --- a/projects/helper/chain/brc20.js +++ /dev/null @@ -1,31 +0,0 @@ -const { getEnv } = require("../env") -const { get } = require("../http") -const { getUniqueAddresses, sleep } = require("../utils") -const { transformBalances } = require("../portedTokens") - -async function sumTokens({ owner, owners = [], blacklistedTokens = [], api }) { - if (owner) - owners.push(owner) - owners = getUniqueAddresses(owners, true) - for (const o of owners) { - const { data: { detail } } = await get(`https://open-api.unisat.io/v1/indexer/address/${o}/brc20/summary`, { - params: { start: 0, limit: 99 }, - // headers: { 'Authorization': getEnv('UNISAT_AUTH') } - }) - for (const t of detail) { - if (blacklistedTokens.includes(t.ticker)) continue - api.add(t.ticker, +t.availableBalanceSafe) - } - await sleep(1000) - } - return transformBalances(api.chain, api.getBalances()) -} - -function sumTokensExport(args) { - return (api) => sumTokens({ ...args, api }) -} - -module.exports = { - sumTokens, - sumTokensExport, -} diff --git a/projects/helper/chain/cardano.js b/projects/helper/chain/cardano.js deleted file mode 100644 index 95d81d56853..00000000000 --- a/projects/helper/chain/cardano.js +++ /dev/null @@ -1,203 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { post } = require("../http"); -const { getUniqueAddresses, nullAddress } = require("../tokenMapping"); -const { getAssets, getAddressesUTXOs } = require("./cardano/blockfrost"); -const { PromisePool } = require("@supercharge/promise-pool"); - -async function getAda(address) { - const amount = await getAssets(address); - return amount.find((i) => i.unit === "lovelace")?.quantity ?? 0; -} - -async function getAdaInAddress(address) { - return (await getAda(address)) / 1e6; -} - -async function getTokenBalance(token, owner) { - const assets = await getAssets(owner); - return assets.find((i) => i.unit === token)?.quantity ?? 0; -} - -async function sumTokens({ owners, balances = {} }) { - const { results, errors } = await PromisePool.withConcurrency(4) - .for(owners) - .process(getAda); - - if (errors && errors.length) throw errors[0]; - - for (const balance of results) - sdk.util.sumSingleBalance(balances, "cardano", balance / 1e6); - return balances; -} - -async function getTokenPrice(address) { - const endpoint = "https://monorepo-mainnet-prod.minswap.org/graphql?TopPools"; - const { - data: { - topPools: [pool], - }, - } = await post(endpoint, { - query: - "query TopPools($asset: String, $favoriteLps: [InputAsset!], $limit: Int, $offset: Int, $sortBy: TopPoolsSortInput) { topPools( asset: $asset favoriteLps: $favoriteLps limit: $limit offset: $offset sortBy: $sortBy ) { assetA { currencySymbol tokenName ...allMetadata } assetB { currencySymbol tokenName ...allMetadata } reserveA reserveB lpAsset { currencySymbol tokenName } totalLiquidity reserveADA }} fragment allMetadata on Asset { metadata { name ticker decimals }}", - variables: { - asset: address, - offset: 0, - limit: 20, - sortBy: { - column: "TVL", - type: "DESC", - }, - }, - }); - if (pool.assetA.metadata) throw new Error("It is not paired against cardano"); - if (+pool.reserveA < 1e9) return 0; // less than 1000 ADA in pool, return price as 0 - return pool.reserveA / pool.reserveB; // price in cardano -} - -async function sumTokens2({ - owners = [], - balances = {}, - owner, - tokens = [], - blacklistedTokens = [], - scripts = [], -}) { - if (owner) owners = [owner]; - tokens = tokens.map((i) => (i === nullAddress ? "lovelace" : i)); - owners = getUniqueAddresses(owners, "cardano"); - blacklistedTokens = getUniqueAddresses(blacklistedTokens, "cardano"); - tokens = getUniqueAddresses(tokens, "cardano"); - const { results, errors } = await PromisePool.withConcurrency(4) - .for(owners) - .process(getAssets); - - if (errors && errors.length) throw errors[0]; - - const { results: resultsUTXOs, errors: errorsUTXOs } = - await PromisePool.withConcurrency(2) - .for(scripts) - .process(getAddressesUTXOs); - - if (errorsUTXOs && errorsUTXOs.length) throw errorsUTXOs[0]; - - resultsUTXOs.flat().map(addBalances); - results.map(addBalances); - return balances; - - function addBalances(bals) { - if (bals.amount) bals = bals.amount; - bals.forEach(({ unit, quantity }) => { - if (+quantity < 10) { - // sdk.log('Ignoring: ', unit, quantity) - return; - } - const isWhitelisted = !tokens.length || tokens.includes(unit); - const isBlacklisted = blacklistedTokens.includes(unit); - if (!isBlacklisted && isWhitelisted) - sdk.util.sumSingleBalance(balances, unit, quantity, "cardano"); - }); - } -} - -function sumTokensExport({ - owners, - balances, - owner, - tokens, - blacklistedTokens, - scripts, -}) { - return async () => - sumTokens2({ owners, balances, owner, tokens, blacklistedTokens, scripts }); -} - -// Best-effort variant: ignores 404s from getAssets/getAddressesUTXOs -async function trySumTokens({ - owners = [], - balances = {}, - owner, - tokens = [], - blacklistedTokens = [], - scripts = [], -}) { - // normalize inputs the same way as sumTokens2 - if (owner) owners = [owner]; - tokens = tokens.map((i) => (i === nullAddress ? "lovelace" : i)); - owners = getUniqueAddresses(owners, "cardano"); - blacklistedTokens = getUniqueAddresses(blacklistedTokens, "cardano"); - tokens = getUniqueAddresses(tokens, "cardano"); - - const is404 = (e) => - e?.raw?.response?.status === 404 || - e?.response?.status === 404 || - e?.status === 404; - - // Wrap handlers so a 404 returns empty results instead of erroring - const safeGetAssets = async (addr) => { - try { - return await getAssets(addr); - } catch (e) { - if (is404(e)) { - // optional: console.warn(`Ignoring 404 for owner ${addr}`) - return []; - } - throw e; - } - }; - - const safeGetAddressesUTXOs = async (script) => { - try { - return await getAddressesUTXOs(script); - } catch (e) { - if (is404(e)) { - // optional: console.warn(`Ignoring 404 for script ${script}`) - return []; - } - throw e; - } - }; - - // Run pools with safe handlers - const { results, errors } = await PromisePool.withConcurrency(4) - .for(owners) - .process(safeGetAssets); - - const { results: resultsUTXOs, errors: errorsUTXOs } = - await PromisePool.withConcurrency(2) - .for(scripts) - .process(safeGetAddressesUTXOs); - - // If any non-404 errors happened, still surface them - const non404 = [...(errors || []), ...(errorsUTXOs || [])].filter( - (e) => !is404(e) - ); - if (non404.length) throw non404[0]; - - // Aggregate - resultsUTXOs.flat().map(addBalances); - results.map(addBalances); - return balances; - - function addBalances(bals) { - if (bals?.amount) bals = bals.amount; - if (!Array.isArray(bals)) return; - bals.forEach(({ unit, quantity }) => { - if (+quantity < 10) return; - const isWhitelisted = !tokens.length || tokens.includes(unit); - const isBlacklisted = blacklistedTokens.includes(unit); - if (!isBlacklisted && isWhitelisted) { - sdk.util.sumSingleBalance(balances, unit, quantity, "cardano"); - } - }); - } -} - -module.exports = { - getAdaInAddress, - sumTokens, - getTokenBalance, - getTokenPrice, - sumTokens2, - sumTokensExport, - trySumTokens, -}; diff --git a/projects/helper/chain/cardano/blockfrost.js b/projects/helper/chain/cardano/blockfrost.js deleted file mode 100644 index 928b04f1187..00000000000 --- a/projects/helper/chain/cardano/blockfrost.js +++ /dev/null @@ -1,97 +0,0 @@ -const axios = require('axios') - -const axiosObj = axios.create({ - baseURL: 'https://cardano-mainnet.blockfrost.io/api/v0', - headers: { - 'project_id': 'mai'+'nnetcxT8VaeCgVMzMTSe'+'zZijWlVkyh6XytpS', - 'Content-Type': 'application/json' - }, - timeout: 300000, -}) - -async function getAddressesUTXOs(address) { - const utxos = [] - let page = 1 - let response - do { - response = await axiosObj.get(`addresses/${address}/utxos?page=${page}`) - response = response.data - utxos.push(...response) - page++ - } while (response.length) - return utxos -} - -async function getAssets(address) { - return (await axiosObj.get(`addresses/${address}`)).data.amount -} - - -async function assetsAddresses(address) { - const addresses = [] - let page = 1 - let response - - do { - response = await axiosObj.get(`assets/${address}/addresses`, { - params: { count: 100, page, } - }) - response = response.data - addresses.push(...response) - page++ - } while (response.length) - return addresses -} - -async function addressesUtxosAssetAll(address, asset) { - - const addresses = [] - let page = 1 - let response - do { - response = await axiosObj.get(`/addresses/${address}/utxos/${asset}`, { - params: { count: 100, page, } - }) - response = response.data - addresses.push(...response) - page++ - } while (response.length) - return addresses -} - -async function getTxUtxos(tx_hash) { - const { data } = await axiosObj.get(`txs/${tx_hash}/utxos`) - return data -} - -async function getTxsRedeemers(utxo) { - const { data } = await axiosObj.get(`txs/${utxo}/redeemers`) - return data -} - -async function getTxsMetadata(utxo) { - const { data } = await axiosObj.get(`txs/${utxo}/metadata`) - return data -} - -async function getScriptsDatum(datumHash) { - const { data } = await axiosObj.get(`scripts/datum/${datumHash}`) - return data -} - -async function getTokensMinted(tokenId){ - const {data} = await axiosObj.get(`assets/${tokenId}`) - return Number(data.quantity) -} - -module.exports = { - getAssets, - getAddressesUTXOs, - getTxUtxos, - getTxsRedeemers, - getTxsMetadata, - assetsAddresses, - addressesUtxosAssetAll, - getTokensMinted, - getScriptsDatum, -} diff --git a/projects/helper/chain/cardano/index.js b/projects/helper/chain/cardano/index.js deleted file mode 100644 index 5dee9cb3c3f..00000000000 --- a/projects/helper/chain/cardano/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const axios = require('axios') - -const axiosObj = axios.create({ - baseURL: 'https://cardano-mainnet.blockfrost.io/api/v0', - headers: { - 'project_id': 'mai'+'nnetcxT8Vae'+'CgVMzMTSezZijWlVkyh6XytpS', - 'Content-Type': 'application/json' - }, - timeout: 300000, -}) - -async function getAddressesUTXOs(address) { - const utxos = [] - let page = 1 - let response - do { - response = await axiosObj.get(`addresses/${address}/utxos?page=${page}`) - response = response.data - utxos.push(...response) - page++ - } while (response.length) - return utxos -} - -async function getTxsRedeemers(utxo) { - const { data } = await axiosObj.get(`txs/${utxo}/redeemers`) - return data -} - -async function getTxsMetadata(utxo) { - const { data } = await axiosObj.get(`txs/${utxo}/metadata`) - return data -} - -module.exports = { - getAddressesUTXOs, - getTxsRedeemers, - getTxsMetadata, -} diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js deleted file mode 100644 index 82caac0c229..00000000000 --- a/projects/helper/chain/cosmos.js +++ /dev/null @@ -1,367 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { transformBalances } = require("../portedTokens"); -const { get, post } = require("../http"); -const { PromisePool } = require("@supercharge/promise-pool"); -const { log, sleep } = require("../utils"); -const ADDRESSES = require('../coreAssets.json') - -// where to find chain info -// https://proxy.atomscan.com/chains.json -// https://cosmos-chain.directory/chains/cosmoshub -// https://cosmos-chain.directory/chains -// https://celestia.publicnode.com/ -// https://api.axelarscan.io/api/getTVL -const endPoints = { - crescent: "https://mainnet.crescent.network:1317", - osmosis: "https://rest-osmosis.ecostake.com", - cosmos: "https://cosmoshub-lcd.stakely.io", - kujira: "https://kujira-rest.publicnode.com", - comdex: "https://rest.comdex.one", - terra: "https://terra-classic-lcd.publicnode.com", - terra2: "https://terra-lcd.publicnode.com", - umee: "https://umee-api.polkachu.com", - orai: "https://lcd.orai.io", - juno: "https://juno.api.m.stavr.tech", - cronos: "https://rest.mainnet.crypto.org", - chihuahua: "https://rest.cosmos.directory/chihuahua", - stargaze: "https://rest.stargaze-apis.com", - quicksilver: "https://rest.cosmos.directory/quicksilver", - persistence: "https://rest.cosmos.directory/persistence", - // secret: "https://rpc.ankr.com/http/scrt_cosmos", - secret: "https://lcd-secret.keplr.app", - // chihuahua: "https://api.chihuahua.wtf", - injective: "https://injective-rest.publicnode.com", - migaloo: "https://migaloo-api.polkachu.com", - fxcore: "https://fx-rest.functionx.io", - xpla: "https://dimension-lcd.xpla.dev", - kava: "https://api2.kava.io", - neutron: "https://rest-solara.neutron-1.neutron.org", - quasar: "https://quasar-api.polkachu.com", - gravitybridge: "https://gravity-api.polkachu.com", - sei: "https://sei-api.polkachu.com", - aura: "https://lcd.aura.network", - archway: "https://api.mainnet.archway.io", - sifchain: "https://sifchain-api.polkachu.com", - nolus: "https://lcd.nolus.network", - nibiru: "https://lcd.nibiru.fi", - bostrom: "https://lcd.bostrom.cybernode.ai", - joltify: "https://lcd.joltify.io", - milkyway: "https://lcd.mainnet.milkyway.zone:443", - kopi: "https://rest.kopi.money", - noble: "https://noble-api.polkachu.com", - mantra: "https://api.mantrachain.io", - elys: "https://api.elys.network", // https://api.elys.network/#/Query/ElysAmmPoolAll - pryzm: "https://api.pryzm.zone", - // agoric: 'https://as-proxy.gateway.atomscan.com/agoric-lcd', - agoric: 'https://agoric-api.polkachu.com/', - band: 'https://laozi1.bandchain.org/api', - celestia: 'https://celestia-rest.publicnode.com', - dydx: 'https://dydx-rest.publicnode.com', - carbon: 'https://api.carbon.network', - evmos: 'https://evmos-api.polkachu.com', - regen: 'https://rest-regen.ecostake.com', - sommelier: 'https://sommelier-rpc.polkachu.com', - stride: 'https://stride-api.polkachu.com', - babylon: 'https://babylon-api.polkachu.com', - milkyway_rollup: 'https://archival-rest-moo-1.anvil.asia-southeast.initia.xyz', - titan: 'https://titan-lcd.titanlab.io', - provenance: 'https://api.provenance.io', - xion: 'https://api.xion-mainnet-1.burnt.com', - embr: 'https://rest-embrmainnet-1.anvil.asia-southeast.initia.xyz', - civitia: 'https://rest-civitia-1.anvil.asia-southeast.initia.xyz', - echelon_initia: 'https://rest-echelon-1.anvil.asia-southeast.initia.xyz', - inertia: 'https://rest.inrt.fi' -}; - -const chainSubpaths = { - crescent: "crescent", - osmosis: "osmosis", - provenance: 'provenance', - comdex: "comdex", - umee: "umee", - kava: "kava", - joltify: "joltify", -}; - -// some contract calls need endpoint with higher gas limit -const highGasLimitEndpoints = { - // 'sei1xr3rq8yvd7qplsw5yx90ftsr2zdhg4e9z60h5duusgxpv72hud3shh3qfl': "https://rest.sei-apis.com", -} - -function getEndpoint(chain, { contract } = {}) { - const highGasEndpoint = highGasLimitEndpoints[contract] - if (contract && highGasEndpoint) return highGasEndpoint - if (!endPoints[chain]) throw new Error("Chain not found: " + chain); - return endPoints[chain]; -} - -async function query(url, block, chain) { - block = undefined; - let endpoint = `${getEndpoint(chain)}/wasm/${url}`; - if (block !== undefined) { - endpoint += `&height=${block - (block % 100)}`; - } - return (await get(endpoint)).result; -} - -async function queryV1Beta1({ chain, paginationKey, block, url, api } = {}) { - if (api) { - chain = api.chain - } - const subpath = chainSubpaths[chain] || "cosmos"; - let endpoint = `${getEndpoint(chain)}/${subpath}/${url}`; - if (block !== undefined) { - endpoint += `?height=${block - (block % 100)}`; - } - if (paginationKey) { - const paginationQueryParam = `pagination.key=${paginationKey}`; - if (block === undefined) { - endpoint += "?"; - } else { - endpoint += "&"; - } - endpoint += paginationQueryParam; - } - return get(endpoint) -} - -async function getTokenBalance({ token, owner, block, chain }) { - let denom = token.native_token?.denom; - if (denom) return getDenomBalance({ denom, owner, block, chain }); - token = token.token.contract_addr; - return getBalance({ token, owner, block, chain }); -} - -function getToken(token) { - let denom = token.native_token?.denom; - return denom ? denom : token.token.contract_addr; -} - -async function getBalance({ token, owner, block, chain } = {}) { - const data = await queryContract({ - contract: token, - block, - chain, - data: { - balance: { address: owner }, - }, - }); - - return Number(data.balance); -} - -async function sumCW20Tokens({ balances, tokens, owner, block, chain, api, } = {}) { - if (api) { - if (!chain) chain = api.chain; - if (!balances) balances = api.getBalances(); - } else { - if (!balances) balances = {}; - } - await Promise.all( - tokens.map(async (token) => { - const balance = await getBalance({ token, owner, block, chain, }); - sdk.util.sumSingleBalance(balances, token, balance, chain); - }) - ); - return balances; -} - -async function getDenomBalance({ denom, owner, block, chain } = {}) { - let endpoint = `${getEndpoint(chain)}/bank/balances/${owner}`; - if (block !== undefined) { - endpoint += `?height=${block - (block % 100)}`; - } - let data = await get(endpoint) - data = chain === 'terra' ? data.balances : data.result - const balance = data.find((balance) => balance.denom === denom); - return balance ? Number(balance.amount) : 0; -} - -async function getBalance2({ balances = {}, owner, block, chain, tokens, blacklistedTokens, api, } = {}) { - const subpath = "cosmos"; - let endpoint = `${getEndpoint( - chain - )}/${subpath}/bank/v1beta1/balances/${owner}?pagination.limit=1000`; - if (block) { - endpoint += `?height=${block - (block % 100)}`; - } - const { - balances: data, - } = await get(endpoint); - for (let { denom, amount } of data) { - if (blacklistedTokens?.includes(denom)) continue; - if (tokens && !tokens.includes(denom)) continue; - if (api) api.add(denom, amount); - else - sdk.util.sumSingleBalance(balances, denom.replaceAll('/', ':'), amount); - } - return balances; -} - -// LP stuff -async function totalSupply({ token, block, chain } = {}) { - const data = await query( - `contracts/${token}/store?query_msg={"token_info":{}}`, - block, - chain - ); - return data.total_supply; -} - -async function lpMinter({ token, block, chain } = {}) { - const data = await query( - `contracts/${token}/store?query_msg={"minter":{}}`, - block, - chain - ); - return data.minter; -} - -async function queryContract({ contract, chain, data, api }) { - if (api) chain = api.chain; - if (typeof data !== "string") data = JSON.stringify(data); - data = Buffer.from(data).toString("base64"); - return ( - await get( - `${getEndpoint(chain, { contract })}/cosmwasm/wasm/v1/contract/${contract}/smart/${data}` - ) - ).data; -} - -const multipleEndpoints = { - sei: [ - "https://sei-api.polkachu.com", - "https://sei-rest.brocha.in", - "https://rest.sei-apis.com", - "https://sei-m.api.n0ok.net", - "https://sei-api.lavenderfive.com", - "https://api-sei.stingray.plus" - ], -} - -async function queryContractWithRetries({ contract, chain, data }) { - const rpcs = multipleEndpoints[chain] - if (rpcs === undefined) { - return queryContract({ contract, chain, data }) - } - if (typeof data !== "string") data = JSON.stringify(data); - data = Buffer.from(data).toString("base64"); - for (let i = 0; i < rpcs.length; i++) { - try { - return ( - await get( - `${rpcs[i]}/cosmwasm/wasm/v1/contract/${contract}/smart/${data}` - ) - ).data; - } catch (e) { - if (i >= rpcs.length - 1) { - throw e - } - } - } -} - -async function queryManyContracts({ contracts = [], chain, data, permitFailure = false }) { - const parallelLimit = 25 - const { results, errors } = await PromisePool - .withConcurrency(parallelLimit) - .for(contracts) - .process(async (contract) => queryContract({ contract, chain, data })) - - if (!permitFailure && errors && errors.length) throw errors[0] - - return results -} - - -async function queryContracts({ chain, codeId, }) { - const res = [] - const limit = 100 - let paginationKey - - do { - let endpoint = `${getEndpoint(chain)}/cosmwasm/wasm/v1/code/${codeId}/contracts?pagination.limit=${limit}${paginationKey ? `&pagination.key=${encodeURIComponent(paginationKey)}` : ''}` - const { contracts, pagination } = await get(endpoint) - paginationKey = pagination.next_key - res.push(...contracts) - } while (paginationKey) - - return res -} - -function getAssetInfo(asset) { - return [ - asset.info.native_token?.denom ?? asset.info.token?.contract_addr, - Number(asset.amount), - ]; -} - -async function unwrapLp({ balances, lpBalance, lpToken, block, chain } = {}) { - const pair = await lpMinter({ token: lpToken, chain, block }); - const { assets, total_share } = await query( - `contracts/${pair}/store?query_msg={"pool":{}}`, - block - ); - const [token0, amount0] = getAssetInfo(assets[0]); - const [token1, amount1] = getAssetInfo(assets[1]); - balances[token0] = - (balances[token0] ?? 0) + (amount0 * lpBalance) / total_share; - balances[token1] = - (balances[token1] ?? 0) + (amount1 * lpBalance) / total_share; -} - -async function queryContractStore({ - contract, - queryParam, - block, - chain = false, -}) { - if (typeof queryParam !== "string") queryParam = JSON.stringify(queryParam); - const url = `contracts/${contract}/store?query_msg=${queryParam}`; - return query(url, block, chain); -} - -async function sumTokens({ balances, owners = [], chain, owner, tokens, blacklistedTokens, api, }) { - if (api) { - if (!chain) chain = api.chain; - if (!balances) balances = api.getBalances(); - } else { - if (!balances) balances = {}; - } - if (!tokens?.length || (tokens?.length === 1 && tokens[0] === ADDRESSES.null)) tokens = undefined; - if (owner) owners = [owner] - log(chain, "fetching balances for ", owners.length); - let parallelLimit = 25; - if (chain === 'osmosis') parallelLimit = 5; - - const { errors } = await PromisePool.withConcurrency(parallelLimit) - .for(owners) - .process(async (owner, i) => { - await getBalance2({ balances, owner, chain, tokens, blacklistedTokens, api, }) - if (chain === 'osmosis' && owners.length > 100) - await sleep(3000) - }); - - if (errors && errors.length) throw errors[0]; - return transformBalances(chain, balances); -} - -module.exports = { - endPoints, - totalSupply, - getBalance, - getBalance2, - getDenomBalance, - unwrapLp, - query, - queryV1Beta1, - queryContractStore, - queryContract, - queryManyContracts, - queryContracts, - sumTokens, - getTokenBalance, - getToken, - sumCW20Tokens, - queryContractWithRetries, -}; diff --git a/projects/helper/chain/crossfi.js b/projects/helper/chain/crossfi.js deleted file mode 100644 index 2a7186d83df..00000000000 --- a/projects/helper/chain/crossfi.js +++ /dev/null @@ -1,23 +0,0 @@ -const { ChainApi } = require('@defillama/sdk'); - -const CHAIN_CONFIG = { - rpc: 'https://rpc.mainnet.ms', - chainId: 'crossfi', - name: 'CrossFi', - decimals: 18, - blockExplorerUrl: 'https://scan.mainnet.ms', - blockExplorerApiUrl: 'https://scan.mainnet.ms/api', - blockTime: 2, - gasToken: 'XFI', - nativeCurrency: { - name: 'CrossFi', - symbol: 'XFI', - decimals: 18 - } -}; - -ChainApi.addChain(CHAIN_CONFIG); - -module.exports = { - CHAIN_CONFIG -}; \ No newline at end of file diff --git a/projects/helper/chain/doge.js b/projects/helper/chain/doge.js deleted file mode 100644 index c26c16ffdba..00000000000 --- a/projects/helper/chain/doge.js +++ /dev/null @@ -1,30 +0,0 @@ -const sdk = require('@defillama/sdk') -const { get } = require('../http') -const plimit = require('p-limit') -const { sleep } = require('../utils') - -const url = addr => 'https://doge1.trezor.io/api/v2/address/' + addr -const _rateLimited = plimit(1) -const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) -const getBalance = rateLimited(_getBalance) - -async function _getBalance(addr) { - const { balance } = await get(url(addr), { - headers: { - 'User-Agent': 'Thunder Client (https://www.thunderclient.com)', - } - }) - await sleep(2000) - return +balance -} - -async function sumTokens({ api, owners = [] }) { - for (const owner of owners) { - const balance = await getBalance(owner) - api.addCGToken('dogecoin', balance / 1e8) - } -} - -module.exports = { - sumTokens -} \ No newline at end of file diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js deleted file mode 100644 index d557b5d2b7b..00000000000 --- a/projects/helper/chain/elrond.js +++ /dev/null @@ -1,114 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') -const { get } = require('../http') -const { transformBalances } = require('../portedTokens') -const sdk = require('@defillama/sdk') -const { post } = require('../http') -const { getEnv } = require('../env') -const { getUniqueAddresses, sleep } = require('../utils') -const { default: PromisePool } = require('@supercharge/promise-pool') - -const call = async ({ target, abi, params = [], responseTypes = [] }) => { - const data = await post(getEnv('MULTIVERSX_RPC') + '/query', { scAddress: target, funcName: abi, args: params, }) - - const response = data.returnData.map(parseResponses) - return responseTypes.length === 1 ? response[0] : response - - // https://github.com/multiversx/mx-sdk-js-core/blob/main/src/smartcontracts/resultsParser.ts - function parseResponses(item, idx) { - const buffer = Buffer.from(item || "", "base64") - switch (responseTypes[idx]) { - case 'number': return parseNumber(buffer) - default: throw new Error('Unknown/unsupported data type') - } - } - - function parseNumber(buffer) { - // https://github.com/juanelas/bigint-conversion/blob/master/src/ts/index.ts#L63 - buffer = new Uint8Array(buffer) - let bits = 8n - - let ret = 0n - for (const i of buffer.values()) { - const bi = BigInt(i) - ret = (ret << bits) + bi - } - return ret.toString() - } -}; - -const chain = 'elrond' - -async function getElrondBalance(address) { - const { data: { account: { balance } } } = await get(`${getEnv('MULTIVERSX_RPC')}/address/${address}`) - return balance -} -const nullAddress = ADDRESSES.null - -async function getTokens({ address, balances = {}, tokens = [], blacklistedTokens = [], whitelistedTokens = [], }) { - const res = await get(`${getEnv('MULTIVERSX_RPC')}/accounts/${address}/tokens?size=1000`) - res.filter(i => i.type === 'FungibleESDT') - .forEach(i => { - const token = i.identifier - if (tokens.length && !tokens.includes(token)) return; // sum only whitelistedTokens - if (whitelistedTokens.length && !whitelistedTokens.includes(token)) return; // sum only whitelistedTokens - if (blacklistedTokens.includes(token)) return; // skip blacklisted tokens - return sdk.util.sumSingleBalance(balances, token, i.balance, chain) - }) - return balances -} - -async function sumTokens({ owner, owners = [], tokens = [], balances = {}, blacklistedTokens = [], tokensAndOwners = [], whitelistedTokens = [] }) { - if (owner) owners.push(owner) - owners = getUniqueAddresses(owners, true) - if (tokensAndOwners.length) { - await Promise.all(tokensAndOwners.map(([token, owner]) => sumTokens({ owners: [owner], tokens: [token], balances, blacklistedTokens, whitelistedTokens, }))) - return balances - } - - const { errors } = await PromisePool - .withConcurrency(5) - .for(owners) - .process(async i => { - await getTokens({ address: i, balances, tokens, blacklistedTokens, whitelistedTokens, }) - if (owners.length > 10) await sleep(5000) - }) - - if (errors.length) throw errors[0] - - if ((!tokens.length || tokens.includes(nullAddress)) && (!whitelistedTokens.length || whitelistedTokens.includes(nullAddress)) && (!blacklistedTokens.length || !blacklistedTokens.includes(nullAddress))) { - - const { errors } = await PromisePool - .withConcurrency(5) - .for(owners) - .process(async i => { - const bal = await getElrondBalance(i) - sdk.util.sumSingleBalance(balances, nullAddress, bal, chain) - if (owners.length > 10) await sleep(5000) - }) - - if (errors.length) throw errors[0] - } - return transformBalances(chain, balances) -} - -async function getNFTs(address) { - const res = await get(`${getEnv('MULTIVERSX_RPC')}/accounts/${address}/nfts?size=1000`) - return res -} - -async function getTokenData(token) { - const data = await get(`https://api.multiversx.com/tokens/${token}`) - return data -} - -function sumTokensExport(...args) { - return () => sumTokens(...args) -} - -module.exports = { - sumTokens, - call, - getNFTs, - getTokenData, - sumTokensExport, -} \ No newline at end of file diff --git a/projects/helper/chain/eos.js b/projects/helper/chain/eos.js deleted file mode 100644 index 4122653edab..00000000000 --- a/projects/helper/chain/eos.js +++ /dev/null @@ -1,78 +0,0 @@ -const { post } = require('../http') - -const RPC_ENDPOINTS = { - 'eos': 'https://eos.greymass.com', - 'wax': 'https://wax.greymass.com', - 'telos': 'https://telos.greymass.com', -} - -async function getEosBalance(account_name, chain = "eos") { - return post(`${RPC_ENDPOINTS[chain]}/v1/chain/get_account`, { account_name, }) -} - -async function get_currency_balance(code, account, symbol, chain = "eos") { - const data = await post(`${RPC_ENDPOINTS[chain]}/v1/chain/get_currency_balance`, { code, account, symbol }) - if (!data.length) return 0 - return Number(data[0].split(" ")[0]); -} - -/** - * Get symbol precision - * - * @example - * - * get_precision("EOS"); - * // => 4 - * get_precision("4,EOS"); - * // => 4 - * get_precision("8,WAX"); - * // => 8 - */ -function get_precision(symbol) { - if (symbol.includes(",")) return symbol.split(",")[0]; - if (symbol == "EOS") return 4; - if (symbol == "TLOS") return 4; - if (symbol == "WAX") return 8; - return 4; -} - -// native staked CPU/Net & REX should be counted as liquid balance -async function get_staked(account_name, symbol, chain = "eos") { - const response = await post(`${RPC_ENDPOINTS[chain]}/v1/chain/get_account`, { account_name }) - try { - let refunding = 0; - if(response.refund_request){ - refunding += parseFloat(response.refund_request.cpu_amount); - refunding += parseFloat(response.refund_request.net_amount); - } - return refunding + (response.voter_info.staked / (10 ** get_precision(symbol))) - } catch (e) { - return 0; - } -} - -async function get_account_tvl(accounts, tokens, chain = "eos") { - const balances = {} - - // support single or multiple accounts - for (const account of Array.isArray(accounts) ? accounts : [accounts]) { - for (const [code, symbol, id] of tokens) { - const balance = await get_currency_balance(code, account, symbol, chain); - - // support native staking as balance - const staked = code == "eosio.token" ? await get_staked(account, symbol, chain) : 0; - - // support adding same balance from multiple accounts - if (balances[id]) balances[id] += balance + staked; - else balances[id] = balance + staked; - } - } - return balances; -} - -module.exports = { - getEosBalance, - get_staked, - get_currency_balance, - get_account_tvl, -} \ No newline at end of file diff --git a/projects/helper/chain/ergo.js b/projects/helper/chain/ergo.js deleted file mode 100644 index 1ca8efd45ec..00000000000 --- a/projects/helper/chain/ergo.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') -const axios = require("axios") -const sdk = require('@defillama/sdk') -const chain = 'ergo' - -const API_HOST = 'https://api.ergoplatform.com/api/v1' - -const nullAddress = ADDRESSES.null - -async function queryTree({ address, params = {}}) { - const { data } = await axios.get(`${API_HOST}/boxes/unspent/byErgoTree/${address}`, { - params, - }) - return data -} - -async function getTokens({ address, balances = {}, tokens = [], blacklistedTokens = [] }) { - const { data: { confirmed: { nanoErgs, tokens: tokenData}}} = await axios.get(`${API_HOST}/addresses/${address}/balance/total`) - tokenData.push({ tokenId: nullAddress, amount: nanoErgs ?? 0 }) - tokenData.forEach(({ tokenId, amount }) => { - if (tokens.length && !tokens.includes(tokenId)) return; // sum only whitelistedTokens - if (blacklistedTokens.includes(tokenId)) return; // skip blacklisted tokens - sdk.util.sumSingleBalance(balances, tokenId, amount, chain) - }) -} - -async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedTokens = [], tokensAndOwners = [], owner,}) { - if (owner) owners = [owner] - if (tokensAndOwners.length) { - await Promise.all(tokensAndOwners.map(([token, owner]) => sumTokens({ owners: [owner], tokens: [token], balances, blacklistedTokens, }))) - return balances - } - - await Promise.all(owners.map(i => getTokens({ address: i, balances, tokens, blacklistedTokens, }))) - return balances -} - -function sumTokensExport(args) { - return () => sumTokens(args) -} - -module.exports = { - sumTokens, - sumTokensExport, -} \ No newline at end of file diff --git a/projects/helper/chain/flow.js b/projects/helper/chain/flow.js deleted file mode 100644 index 33e5c9c6f78..00000000000 --- a/projects/helper/chain/flow.js +++ /dev/null @@ -1,31 +0,0 @@ -// const sdk = require('@defillama/sdk') - -const { post } = require('../http') -const { getEnv } = require('../env') - -const endpoint = () => getEnv('FLOW_RPC') - -async function callCadenceScript(script, isNumber = false) { - const queryCodeBase64 = Buffer.from(script, "utf-8").toString("base64"); - const response = await post( - `${endpoint()}/v1/scripts`, - { script: queryCodeBase64 }, - { - headers: { "content-type": "application/json" }, - } - ); - let resEncoded = response; - let resString = Buffer.from(resEncoded, "base64").toString("utf-8"); - let resJson = JSON.parse(resString); - - if (isNumber) { - return Number(resJson.value); - } else { - return resJson; - } -} - -module.exports = { - endpoint: endpoint(), - callCadence: callCadenceScript, -}; diff --git a/projects/helper/chain/fuel.js b/projects/helper/chain/fuel.js deleted file mode 100644 index 43ead7d6cc4..00000000000 --- a/projects/helper/chain/fuel.js +++ /dev/null @@ -1,55 +0,0 @@ - -const { GraphQLClient, } = require('graphql-request') -const { transformBalances } = require('../portedTokens') -const { fuel: { query }} = require('./rpcProxy') -const client = new GraphQLClient('https://mainnet.fuel.network/v1/graphql') - -async function sumTokens({ api, owner, owners, token, tokens = [], tokensAndOwners = [] }) { - if (token) - tokens = [token] - if (owner) - owners = [owner] - - if (owners.length && !tokens.length) { - await addAllTokenBalances({ api, owners }) - } else if (owners.length) - tokensAndOwners = tokens.map(token => owners.map(owner => [token, owner])).flat() - - tokensAndOwners = getUniqueToA(tokensAndOwners) - - if (tokensAndOwners.length) { - const query = tokensAndOwners.map(([token, owner], i) => `q${i}: contractBalance( - contract: "${owner}" asset: "${token}" - ) { contract assetId amount}`).join('\n'); - - const results = await client.request(`{${query}}`) - Object.values(results).forEach(i => api.add(i.assetId, i.amount)) - } - - return transformBalances('fuel', api.getBalances()) - - function getUniqueToA(toa) { - toa = toa.map(i => i.join('-').toLowerCase()) - toa = new Set(toa) - return [...toa].map(i => i.split('-')) - } -} - -async function addAllTokenBalances({ api, owners = [] }) { - - for (const owner of owners) { - const query = `contractBalances( - filter: { contract: "${owner}" }, first: 1000 - ) { nodes { assetId amount } }` - - const results = await client.request(`{${query}}`) - results.contractBalances.nodes.forEach(node => { - api.add(node.assetId, node.amount); - }) - } -} - -module.exports = { - sumTokens, - query, -} \ No newline at end of file diff --git a/projects/helper/chain/hbar.js b/projects/helper/chain/hbar.js deleted file mode 100644 index ca1adf46b9f..00000000000 --- a/projects/helper/chain/hbar.js +++ /dev/null @@ -1,36 +0,0 @@ -const http = require('../http') -const BigNumber = require('bignumber.js') -const sdk = require('@defillama/sdk') - -const HBAR_API_V1 = 'https://mainnet-public.mirrornode.hedera.com/api/v1' - -async function getHBARBalance(address, timestamp) { - const tsString = timestamp ? `×tamp=${timestamp}` : '' - const response = await http.get(`${HBAR_API_V1}/balances?account.id=${address}${tsString}`) - return response.balances[0].balance -} - -async function getCurrentBlock() { - const { blocks: [{ number }]} = await http.get(HBAR_API_V1+'/blocks?limit=1&order=desc') - return number -} - -async function addHBarBalance({ balances = {}, address, timestamp }) { - let balance = await getHBARBalance(address, timestamp) - balance = BigNumber(balance).shiftedBy(-1 * 8).toFixed(0) - sdk.util.sumSingleBalance(balances, 'hedera-hashgraph', balance) - return balances -} - -async function sumTokens({ balances = {}, owners = [], timestamp }) { - if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp - const promises = owners.map(address => addHBarBalance({ timestamp, balances, address})) - await Promise.all(promises) - return balances -} - -module.exports = { - addHBarBalance, - sumTokens, - getCurrentBlock, -} \ No newline at end of file diff --git a/projects/helper/chain/hedera/hederaTokenSupply.js b/projects/helper/chain/hedera/hederaTokenSupply.js deleted file mode 100644 index 047f3d3be05..00000000000 --- a/projects/helper/chain/hedera/hederaTokenSupply.js +++ /dev/null @@ -1,36 +0,0 @@ -const http = require('../../http') - -const HEDERA_MIRROR_NODE_URL = 'https://mainnet-public.mirrornode.hedera.com' - -/** - * Gets the total supply for a specific Hedera token - * @param {string} tokenId - The token ID in Hedera format (e.g., "0.0.123456") - * @returns {Promise} - The total supply adjusted for decimals - */ -async function getHederaTokenSupply(tokenId) { - try { - // Ensure the token ID is properly formatted - const formattedTokenId = tokenId.includes('.') ? tokenId : `0.0.${tokenId}` - - // Fetch token data from Hedera Mirror Node - const tokenData = await http.get(`${HEDERA_MIRROR_NODE_URL}/api/v1/tokens/${formattedTokenId}`) - - if (!tokenData) { - console.error(`Token ${formattedTokenId} not found`) - return 0 - } - - // Calculate the actual total supply based on decimals - const decimals = tokenData.decimals || 0 - const totalSupply = tokenData.total_supply ? (tokenData.total_supply / (10 ** decimals)) : 0 - - return totalSupply - } catch (error) { - console.error(`Error fetching supply for token ${tokenId}:`, error) - return 0 - } -} - -module.exports = { - getHederaTokenSupply -} diff --git a/projects/helper/chain/icx.js b/projects/helper/chain/icx.js deleted file mode 100644 index 7a4468b25bc..00000000000 --- a/projects/helper/chain/icx.js +++ /dev/null @@ -1,76 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') -const { post } = require("../http"); -const BigNumber = require('bignumber.js'); -const { getUniqueAddresses } = require("../tokenMapping"); -const { transformBalances } = require("../portedTokens"); -const { sleep } = require("../utils"); - -const icxApiEndpoint = 'https://ctz.solidwallet.io/api/v3'; - -const LOOP = new BigNumber('1000000000000000000'); - -function toInt(s) { - return parseInt(s, 16) -} - -function toHex(value) { - return new BigNumber(value).div(LOOP); -} - -async function getICXBalance(address) { - let response = await post(icxApiEndpoint, { - jsonrpc: '2.0', - method: 'icx_getBalance', - id: 1234, - params: { address } - }) - return response.result -} - -async function call(address, method, params, { parseInt, parseHex } = {}) { - let response = await post(icxApiEndpoint, { - jsonrpc: '2.0', - method: 'icx_call', - id: 1234, - params: { - to: address, - dataType: 'call', - data: { - method: method, - params: params - } - } - }) - if (parseInt) response.result = toInt(response.result) - if (parseHex) response.result = toHex(response.result) - return response.result -} - -async function sumTokens({ api, owner, owners = [], tokens = [] }) { - if (owner) owners.push(owner) - owner = getUniqueAddresses(owners, 'icon') - tokens = getUniqueAddresses(tokens, 'icon') - const toa = owners.map(owner => tokens.map(t => [t, owner])).flat() - for (const [token, owner] of toa) { - let balance - if (token && token !== ADDRESSES.null) - balance = await call(token, 'balanceOf', { _owner: owner }, { parseInt: true }) - else - balance = await getICXBalance(owner) - await sleep(100) - api.add(token ?? ADDRESSES.null, balance) - } - return transformBalances('icon', api.getBalances()) -} - -function sumTokensExport(params) { - return (api) => sumTokens({ ...params, api }) -} - -module.exports = { - toInt, - call, - toHex, - sumTokens, - sumTokensExport, -} \ No newline at end of file diff --git a/projects/helper/chain/injective.js b/projects/helper/chain/injective.js deleted file mode 100644 index 433525f4f99..00000000000 --- a/projects/helper/chain/injective.js +++ /dev/null @@ -1,49 +0,0 @@ -const { getNetworkInfo, Network } = require('@injectivelabs/networks') -const { protoObjectToJson, IndexerGrpcSpotApi, IndexerGrpcDerivativesApi, ChainGrpcBankApi } = require('@injectivelabs/sdk-ts') - -const { sliceIntoChunks } = require('../utils') -let clients = {} - -const TYPES = { - BANK: 'BANK', - SPOT: 'SPOT', - DERIVATIVES: 'DERIVATIVES', -} - -const p2j = str => JSON.parse(protoObjectToJson(str)) - -function getClient(type = TYPES.SPOT) { - if (!clients[type]) { - const network = getNetworkInfo(Network.Mainnet) - if (type === TYPES.SPOT) - clients[type] = new IndexerGrpcSpotApi(network.indexer); - else if (type === TYPES.DERIVATIVES) - clients[type] = new IndexerGrpcDerivativesApi(network.indexer) - else if(type === TYPES.BANK) - clients[type] = new ChainGrpcBankApi(network.grpc) - else - throw new Error('Unknown type') - } - return clients[type] -} - -async function getMarkets({ type = TYPES.SPOT, marketStatus = 'active' } = {}) { - const markets = await getClient(type).fetchMarkets({ marketStatus, }) - return p2j(markets) -} - -async function getOrders({ type = TYPES.SPOT, marketIds }) { - const chunks = sliceIntoChunks(marketIds, 20) - const response = [] - for (const chunk of chunks) - response.push(...await getClient(type).fetchOrderbooksV2(chunk)) - return response -} - -module.exports = { - TYPES, - getClient, - p2j, - getMarkets, - getOrders, -} diff --git a/projects/helper/chain/iota.js b/projects/helper/chain/iota.js deleted file mode 100644 index b3d80fcee88..00000000000 --- a/projects/helper/chain/iota.js +++ /dev/null @@ -1,53 +0,0 @@ - -const sdk = require('@defillama/sdk') - -const http = require('../http') -const { getEnv } = require('../env') -const { sliceIntoChunks } = require('../utils') - - -const endpoint = () => getEnv('IOTA_RPC') - -async function getObject(objectId) { - return (await call('iota_getObject', [objectId, { - "showType": true, - "showOwner": true, - "showContent": true, - }])).content -} - -async function getObjects(objectIds) { - if (objectIds.length > 9) { - const chunks = sliceIntoChunks(objectIds, 9) - const res = [] - for (const chunk of chunks) res.push(...(await getObjects(chunk))) - return res - } - const { - result - } = await http.post(endpoint(), { - jsonrpc: "2.0", id: 1, method: 'iota_multiGetObjects', params: [objectIds, { - "showType": true, - "showOwner": true, - "showContent": true, - }], - }) - return objectIds.map(i => result.find(j => j.data?.objectId === i)?.data?.content) -} - -async function call(method, params, { withMetadata = false } = {}) { - if (!Array.isArray(params)) params = [params] - const { - result, error - } = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method, params, }) - if (!result && error) throw new Error(`[iota] ${error.message}`) - if (['iotax_getAllBalances'].includes(method)) return result - return withMetadata ? result : result.data -} - -module.exports = { - endpoint: endpoint(), - call, - getObject, - getObjects -}; diff --git a/projects/helper/chain/libre.js b/projects/helper/chain/libre.js deleted file mode 100644 index 32743bbe9da..00000000000 --- a/projects/helper/chain/libre.js +++ /dev/null @@ -1,94 +0,0 @@ -const { get, post, } = require('../http') -const CHAIN_RPC = 'https://lb.libre.org'; -const API_URL = 'https://dashboard-api.libre.org'; - -async function getTableRows({ - json = true, - code, - scope, - table, - lower_bound = '', - upper_bound = '', - index_position = 1, - key_type = '', - limit = -1, - reverse = false, - show_payer = false, -}) { - const data = await post( - `${CHAIN_RPC}/v1/chain/get_table_rows`, - { - json, - code, - scope, - table, - lower_bound, - upper_bound, - index_position, - key_type, - limit, - reverse, - show_payer, - } - ); - return data; -} - -async function getFullTable({ - code, - scope, - table, - lower_bound, - upper_bound, -}) { - let { rows, more, next_key } = await getTableRows({ - code, - scope, - table, - lower_bound, - upper_bound, - limit: -1 - }) - - if (more) { - rows = rows.concat(await getFullTable({ - code, - scope, - table, - lower_bound: next_key, - upper_bound - })) - } - - return rows -} - -async function getCurrencyBalance(code, account, symbol) { - const data = await post( - CHAIN_RPC + '/v1/chain/get_currency_balance', - JSON.stringify({ - code, - account, - symbol - }) - ); - return data; -} - -async function getExchangeRates() { - return get(`${API_URL}/exchange-rates`); -} - -async function getTokenUSDPrice(tokenSymbol) { - tokenSymbol = tokenSymbol.toUpperCase(); - const tokens = getExchangeRates(); - return tokens[tokenSymbol]; -} - -module.exports = { - getTableRows, - getFullTable, - getTokenUSDPrice, - getExchangeRates, - getCurrencyBalance, -} \ No newline at end of file diff --git a/projects/helper/chain/litecoin.js b/projects/helper/chain/litecoin.js deleted file mode 100644 index b8c42f51c1d..00000000000 --- a/projects/helper/chain/litecoin.js +++ /dev/null @@ -1,41 +0,0 @@ -const sdk = require('@defillama/sdk') -const { get } = require('../http') -const { PromisePool } = require('@supercharge/promise-pool') - -// const url = addr => 'https://chainz.cryptoid.info/ltc/api.dws?q=getbalance&a=' + addr -const url1 = addr => 'https://ltc.tokenview.io/api/address/balancetrend/ltc/' + addr -const url = addr => 'https://litecoinspace.org/api/address/' + addr - -async function getBalance(addr) { - try { - const {chain_stats} = await get(url(addr)) - return (chain_stats.funded_txo_sum - chain_stats.spent_txo_sum) / 1e8 - } catch (e) { - console.error(e) - return getBalance1(addr) - } -} - -async function getBalance1(addr) { - // return get(url(addr)) - const {data} = await get(url(addr)) - return +Object.values(data[0])[0] -} - -async function sumTokens({ balances = {}, owners = [] }) { - let total = 0 - - await PromisePool - .withConcurrency(5) - .for(owners) - .process(async owner => { - const balance = await getBalance(owner) - total += balance - }) - sdk.util.sumSingleBalance(balances, 'litecoin', total) - return balances -} - -module.exports = { - sumTokens -} \ No newline at end of file diff --git a/projects/helper/chain/massa.js b/projects/helper/chain/massa.js deleted file mode 100644 index 2341b1986e4..00000000000 --- a/projects/helper/chain/massa.js +++ /dev/null @@ -1,129 +0,0 @@ -const axios = require("axios"); - -// https://github.com/massalabs/massa-web3/blob/main/packages/massa-web3/src/web3/PublicApiClient.ts -const RPC_ENDPOINT = "https://mainnet.massa.net/api/v2"; -const client = axios.create({ baseURL: RPC_ENDPOINT }); - -async function request(method, params) { - params.forEach((param) => { - if (param.key) - param.key = convertUnit8ArrayToNumberArray(param.key); - }) - - const response = await client.post("/", { - jsonrpc: "2.0", - method, - params: [params], - id: 1, - }) - - return response.data.result; - - function convertUnit8ArrayToNumberArray(unit8Array) { - return Array.from(unit8Array, (byte) => byte) - } -} - -function u8ArrayToString(array) { - let str = ""; - for (const byte of array) { - str += String.fromCharCode(byte); - } - return str; -} - -function strToBytes(str) { - if (!str.length) { - return new Uint8Array(0); - } - return new Uint8Array(Buffer.from(str, 'utf-8')); -} - -function bytesToStr(bytes) { - return u8ArrayToString(bytes).replace(/\0/g, ''); -} - - -/** - * Converts a Uint8Array into an unsigned 64-bit integer (u64) BigInt. - * - * @param arr - The array to convert - * @param offset - The optional offset in the Uint8Array at which to start reading the u64 value (default: 0) - * - * @returns The deserialized u64 BigInt value - * - */ -function bytesToU64(arr, offset = 0) { - if (!arr?.length) return '0' - arr = new Uint8Array(arr); - const view = new DataView(arr.buffer); - return view.getBigUint64(offset, true); -} - -/** - * Converts a Uint8Array into an unsigned 256-bit integer (u256) BigInt. - * - * @param arr - The array to convert - * @param offset - The optional offset in the Uint8Array at which to start reading the u256 value (default: 0) - * - * @returns The deserialized u256BigInt value - * - */ -function bytesToU256(arr, offset = 0) { - if (!arr?.length) return '0' - arr = new Uint8Array(arr); - const view = new DataView(arr.buffer, offset); - const p0 = view.getBigUint64(0, true); - const p1 = view.getBigUint64(8, true); - const p2 = view.getBigUint64(16, true); - const p3 = view.getBigUint64(24, true); - return (p3 << 192n) | (p2 << 128n) | (p1 << 64n) | p0; -} - - -async function queryKey(addresses, key, transform = val => u8ArrayToString(val)) { - const res = await request('get_datastore_entries', addresses.map((address) => ({ address, key: strToBytes(key) }))) - return res.map((entry) => transform(entry.candidate_value)); -} - -const bytesToBigInt = (bytes) => { - try { - return bytesToU256(bytes); - } catch (e) { - return bytesToU64(bytes); - } -}; - -async function getTokenBalances(tokenAddresses, ownerAddresses) { - const params = tokenAddresses.map((tokenAddress, i) => ({ - address: tokenAddress, - key: strToBytes(`BALANCE${ownerAddresses[i]}`) - })) - const res = await request('get_datastore_entries', params) - return res.map((entry) => bytesToBigInt(entry.candidate_value).toString()); -} - -function convertUnit8ArrayToNumberArray(unit8Array) { - return Array.from(unit8Array, (byte) => byte) -} - - -async function getAddresssDataStoreKeys(address, prefix, is_final) { - const res = await request('get_addresses_datastore_keys', [{ - address: address, - prefix: convertUnit8ArrayToNumberArray(prefix), - is_final: is_final, - }]); - - return res[0].keys; - -} - -module.exports = { - queryKey, - u8ArrayToString, - getTokenBalances, - getAddresssDataStoreKeys, - bytesToStr, - bytesToBigInt, -}; \ No newline at end of file diff --git a/projects/helper/chain/mvc.js b/projects/helper/chain/mvc.js deleted file mode 100644 index 3cfd3edf4ad..00000000000 --- a/projects/helper/chain/mvc.js +++ /dev/null @@ -1,10 +0,0 @@ -const { get } = require('../http') - -async function getMvcBalance(addr) { - const res = await get(`https://mainnet.mvcapi.com/address/${addr}/balance`) - return res.confirmed -} - -module.exports = { - getMvcBalance, -} \ No newline at end of file diff --git a/projects/helper/chain/near.js b/projects/helper/chain/near.js deleted file mode 100644 index 645f1b1e4c2..00000000000 --- a/projects/helper/chain/near.js +++ /dev/null @@ -1,166 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') -const axios = require("axios") -const { default: BigNumber } = require("bignumber.js") -const sdk = require('@defillama/sdk') - -function transformAddress(addr) { - const bridgedAssetIdentifier = ".factory.bridge.near"; - if (addr.endsWith(bridgedAssetIdentifier)) - return `0x${addr.slice(0, addr.length - bridgedAssetIdentifier.length)}`; - if (addr.endsWith('.near')) - return `near:${addr}` - return addr -} - -const endpoints = [ - "https://rpc.mainnet.near.org", - "https://near.lava.build" -] - -const tokenMapping = { - 'wrap.near': { name: 'near', decimals: 24, }, - 'meta-pool.near': { name: 'staked-near', decimals: 24, }, - [ADDRESSES.near.LINA]: { name: 'linear-protocol', decimals: 24, }, - "storage.herewallet.near": { name: 'here-staking', decimals: 24, }, - 'usn': { name: 'usn', decimals: 18, }, - 'aurora': { name: 'ethereum', decimals: 18, }, - 'token.skyward.near': { name: 'skyward-finance', decimals: 18, }, - 'dbio.near': { name: 'debio-network', decimals: 18, }, - // 'hak.tkn.near': { name: '', }, // Hakuna matata - 'meta-token.near': { name: 'meta-near', decimals: 24 }, - 'v3.oin_finance.near': { name: 'oin-finance', decimals: 8, }, - 'usdt.tether-token.near': { name: 'tether', decimals: 6, }, - 'eth-0xdac17f958d2ee523a2206206994597c13d831ec7.omft.near': { name: 'tether', decimals: 6 }, - // 'gems.l2e.near': { name: '', }, // https://www.landtoempire.com/ - // 'nd.tkn.near': { name: '', }, // nearDog - // 'gold.l2e.near': { name: '', }, // https://www.landtoempire.com/ - 'token.v2.ref-finance.near': { name: 'ref-finance', decimals: 18, }, - // 'myriadcore.near': { name: '', }, // Myria - // '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near': { name: 'dai', decimals: 18 }, - // 'a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near': { name: 'usd-coin', decimals: 6 }, - // 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near': { name: 'tether', decimals: 6 }, - // '2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near': { name: ADDRESSES.ethereum.WBTC, decimals: 0 }, - // 'aaaaaa20d9e0e2461697782ef11675f668207961.factory.bridge.near': { name: 'aurora-near', decimals: 18 }, - [ADDRESSES.near.BURROW]: { name: 'burrow', decimals: 18 }, - [ADDRESSES.near.PARAS]: { name: 'paras', decimals: 18 }, - [ADDRESSES.near.PEMBROCK]: { name: 'pembrock', decimals: 18 }, - 'token.sweat': { name: 'sweatcoin', decimals: 18 }, - 'v2-nearx.stader-labs.near': { name: 'stader-nearx', decimals: 24 }, - '17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1': { name: 'usd-coin', decimals: 6 }, - 'edge-fast.near': { name: 'edge-video-ai', decimals: 24 }, - '802d89b6e511b335f05024a65161bce7efc3f311.factory.bridge.near': { name: 'linear-protocol-lnr', decimals: 18 }, - 'ftv2.nekotoken.near': { name: 'neko', decimals: 24 }, - 'token.lonkingnearbackto2024.near': { name: 'lonk-on-near', decimals: 8 }, - 'blackdragon.tkn.near': { name: 'black-dragon', decimals: 24 }, - 'gear.enleap.near': { name: 'near-tinker-union-gear', decimals: 18 }, - 'token.0xshitzu.near': { name: 'shitzu', decimals: 18 }, - 'purge-558.meme-cooking.near': { name: 'forgive-me-father', decimals: 18 }, - 'mpdao-token.near': { name: 'meta-pool-dao', decimals: 6 }, - 'kat.token0.near': { name: 'nearkat', decimals: 18 }, - 'btc.omft.near': { name: 'bitcoin', decimals: 8 }, -} - -function shouldRetry(error) { - if (!error.response) return true; - const retriable = [400, 429, 500, 504]; - return retriable.includes(error.response.status); -} - -async function rpcRequest(payload) { - let lastError; - - for (const url of endpoints) { - try { - return await axios.post(url, payload, { validateStatus: status => status < 400 }); - } catch (err) { - if (!shouldRetry(err)) throw err; - lastError = err; - } - } - throw lastError; -} - -async function view_account(account_id) { - const payload = { - jsonrpc: "2.0", - id: "1", - method: "query", - params: { - request_type: "view_account", - finality: "final", - account_id - } - }; - - const result = await rpcRequest(payload); - if (result.data.error) throw new Error(`${result.data.error.message}: ${result.data.error.data}`); - return result.data.result; -} - -async function call(contract, method, args = {}) { - const payload = { - jsonrpc: "2.0", - id: "1", - method: "query", - params: { - request_type: "call_function", - finality: "final", - account_id: contract, - method_name: method, - args_base64: Buffer.from(JSON.stringify(args)).toString("base64") - } - }; - - const result = await rpcRequest(payload); - if (result.data.error) throw new Error(`${result.data.error.message}: ${result.data.error.data}`); - return JSON.parse(Buffer.from(result.data.result.result).toString()); -} - -async function getTokenBalance(token, account) { - return call(token, "ft_balance_of", { account_id: account }) -} - -async function addTokenBalances(tokens, account, balances = {}) { - if (!Array.isArray(tokens)) tokens = [tokens] - const fetchBalances = tokens.map(token => addAsset(token, account, balances)) - await Promise.all(fetchBalances) - return balances -} - -async function addAsset(token, account, balances = {}) { - let balance = await getTokenBalance(token, account) - return sumSingleBalance(balances, token, balance) -} - -function sumSingleBalance(balances, token, balance) { - const { name, decimals, } = tokenMapping[token] || {} - - if (name) { - if (decimals) - balance = balance / (10 ** decimals) - - balances[name] = +(balances[name] || 0) + balance - return - } - - sdk.util.sumSingleBalance(balances, transformAddress(token), BigNumber(balance).toFixed(0)) - return balances -} - -async function sumTokens({ balances = {}, owners = [], tokens = []}) { - tokens = tokens.filter(i => i !== 'aurora') - await Promise.all(owners.map(i => addTokenBalances(tokens, i, balances))) - const bals = await Promise.all(owners.map(view_account)) - const nearBalance = bals.reduce((a,i) => a + (i.amount/1e24), 0) - sdk.util.sumSingleBalance(balances,'coingecko:near',nearBalance) - return balances -} - -module.exports = { - view_account, - call, - addTokenBalances, - getTokenBalance, - sumSingleBalance, - sumTokens, -}; diff --git a/projects/helper/chain/obyte.js b/projects/helper/chain/obyte.js deleted file mode 100644 index 509a84746e1..00000000000 --- a/projects/helper/chain/obyte.js +++ /dev/null @@ -1,283 +0,0 @@ -const utils = require('../utils') - -const OBYTE_HUB_ENDPOINT = "https://obyte.org/api"; -const TOKEN_REGISTRY_AA_ADDRESS = "O6H6ZIFI57X3PLTYHOCVYPP5A553CYFQ"; - -/** - * @param {number} timestamp - unix timestamp in seconds from epoch of the moment in time for which the balances are requested - * @param {string} address - the Obyte address of the base AA for which the balances are fetched - * - * @return {Promise} the balances of all assets of all AAs that are based on the base AA identified by address - */ -async function fetchBaseAABalances(timestamp, address) { - if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp - /* - * { - * "subject": "GS23D3GQNNMNJ5TL4Z5PINZ5626WASMA", - * "addresses": { - * "67XYBBBME57DZMJPLOYNXSIMAIDHGUDW": { - * "assets": { - * "3XF+1slNoFxIVPvRupR5uf9AXluOm92nobzKyCCSE3c=": { - * "balance": 829, - * "burned": false, - * "selfIssued": false, - * "selfIssuedUncapped": false - * }, - * "base": { - * "balance": 36262, - * "burned": false, - * "selfIssued": false, - * "selfIssuedUncapped": false - * } - * } - * }, - * "TBLLH5DGDX6KU5UGHG4WDH4N7IC5FPKP": { - * ... - * }, - * } - * } - */ - const fetched = await utils.fetchURL(` https://api.charts.obyte.app/baseagents/${address}/balances?ts=${timestamp}`) - return fetched.data -} - -/** - * A reducer applied on a list of response objects returned by fetchBaseAABalances() to calculate the total. - * This reducer excludes locked in assets that were issued by the same autonomous agent. - * - * @example - * const balancesV1 = wait fetchBaseAABalances(timestamp, 'GS23D3GQNNMNJ5TL4Z5PINZ5626WASMA') - * const balancesV2 = wait fetchBaseAABalances(timestamp, '2JYYNOSRFGLI3TBI4FVSE6GFBUAZTTI3') - * const tvl = [balancesV1, balancesV2].reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) - * - * @param {object} assetMetadata asset metadata (eg. decimals) mapped to the asset id (asset unit hash) - * @param {object} exchangeRates asset/USD exchange rates mapped to assetId_USD keys - * @return {function(number, object)} reducer function to be used with Array.reduce() where each element in the array is - * a result of a fetchBaseAABalances() call - */ -function summingBaseAABalancesToTvl(assetMetadata, exchangeRates) { - - const summingAssetTvl = (total, [asset, assetDetails]) => { - if (!assetMetadata?.hasOwnProperty(asset)) return total - - const decimals = assetMetadata[asset].decimals ?? 0 - const baseCurrency = (asset === "base") ? "GBYTE" : asset - const usdRate = exchangeRates[`${baseCurrency}_USD`] ?? 0 - const usdValue = assetDetails.balance / Math.pow(10, decimals) * usdRate - // sdk.log(` ${assetMetadata[asset]?.symbol ?? asset} = ${usdValue.toFixed(2)}`) - return total + usdValue - } - - const summingAddressTvl = (total, [address, addressDetails]) => { - // sdk.log(`${address}:`) - return total + Object.entries(addressDetails.assets) - .filter(([asset, assetDetails]) => !assetDetails.selfIssued) - .reduce(summingAssetTvl, 0) - } - - const summingBaseAATvl = (total, balances) => { - return total + Object.entries(balances.addresses).reduce(summingAddressTvl, 0) - } - - return summingBaseAATvl -} - -/** - * @return {Promise} fetches all exchange rates traded on Oswap v1 and v2 plus a few externally defined tokens such as GBYTE-USD or BTC-USD - */ -async function fetchOswapExchangeRates() { - /* - * { - * "BTC_USD": 29832, - * "GBYTE_BTC": 0.0004509, - * "GBYTE_USD": 13.4512488, - * "+X9n1ni9OpH/0PFXdmeB4f16wSxSivW4/qcyOt1UEDI=_USD": 88.2777158012621, - * "/1ReF/OW7wud1rqomgWMSeaetx8WjyD6eSTnGurTftU=_USD": 0.22874160911121644 - * } - */ - const fetched = await utils.fetchURL("https://v2-data.oswap.io/api/v1/exchangeRates") - return fetched.data -} - -/** - * @return {Promise} fetches assets traded on Oswap v1 - */ -async function fetchOswapV1Assets() { - /* - * { - * "O2-GBYTE-USDC": { - * "asset_id": "cQZVAFFh0Aaj5kMMydWoTqcMDxpfzGzEZhhEaQSVbHA=", - * "decimals": 0, - * "description": "Oswap v2 LP shares GBYTE-USDC", - * "symbol": "O2-GBYTE-USDC", - * "supply": 5026551 - * } - * } - */ - const fetched = await utils.fetchURL("https://v1-data.oswap.io/api/v1/assets") - const assets = fetched.data - return Object.values(assets).reduce((map, asset) => { - map[asset.asset_id] = asset - return map - }, {}) -} - -/** - * @return {Promise} fetches assets traded on Oswap v2 - */ -async function fetchOswapV2Assets() { - /* - * { - * "O2-GBYTE-USDC": { - * "asset_id": "cQZVAFFh0Aaj5kMMydWoTqcMDxpfzGzEZhhEaQSVbHA=", - * "decimals": 0, - * "description": "Oswap v2 LP shares GBYTE-USDC", - * "symbol": "O2-GBYTE-USDC", - * "supply": 5026551 - * } - * } - */ - const fetched = await utils.fetchURL("https://v2-data.oswap.io/api/v1/assets") - const assets = fetched.data - return Object.values(assets).reduce((map, asset) => { - map[asset.asset_id] = asset - return map - }, {}) -} - -async function fetchOswapAssets() { - const [assets1, assets2] = await Promise.all([ - fetchOswapV1Assets(), - fetchOswapV2Assets() - ]) - return { - ...assets1, - ...assets2 - } -} - -/** - * @return {Promise} fetches assets traded on Oswap v2 - */ -async function fetchOstableAssets() { - /* - * { - * "IUSD": { - * "asset_id": "eCpmov+r6LOVNj8KD0EWTyfKPrqsG3i2GgxV4P+zE6A=", - * "decimals": 4, - * "description": "Stable+ token for bonded stablecoin (VLKI3XMMX5YULOBA6ZXBXDPI6TXF6V3D)", - * "symbol": "IUSD", - * "supply": 61172.4893, - * "last_gbyte_value": 0.08233341192937123 - * }, - * } - */ - const fetched = await utils.fetchURL("https://data.ostable.org/api/v1/assets") - const assets = fetched.data - return Object.values(assets).reduce((map, asset) => { - map[asset.asset_id] = asset - return map - }, {}) -} - -/** - * Exchange rates of assets traded on Ostable. - * @example - * { - * { "ymCWKx3kZg06i9oG5c1n3K+BdsCz4uE32hZ94sT3CsU=_base": 2.91381565819933e-06 } - * } - * - * @return {Promise} map of asset pairs issued on Ostable to their exchange rate. - */ -async function fetchOstableExchangeRates() { - /* - * { - * { - * "market_name": "GB2S-GBYTE", - * "quote_symbol": "GBYTE", - * "base_symbol": "GB2S", - * "quote_id": "base", - * "base_id": "ymCWKx3kZg06i9oG5c1n3K+BdsCz4uE32hZ94sT3CsU=", - * "lowest_price_24h": 0, - * "highest_price_24h": 0, - * "last_price": 2.91381565819933e-06, - * "quote_volume": 0, - * "base_volume": 0, - * "first_trade_date": "2020-10-09T10:26:11.000Z" - * } - * } - */ - - const fetched = await utils.fetchURL("https://data.ostable.org/api/v1/tickers") - const tickers = fetched.data - return Object.values(tickers).reduce((map, ticker) => { - const currencyPair = `${ticker.base_id}_${ticker.quote_id}` - map[currencyPair] = ticker.last_price - return map - }, {}) -} - -/** - * Exchange rates of assets in USD traded on Ostable. - * @example - * { - * { "ymCWKx3kZg06i9oG5c1n3K+BdsCz4uE32hZ94sT3CsU=_USD": 42.12 } - * } - * - * @return {Promise} map of asset pairs issued on Ostable to their exchange rate in USD. - */ -async function fetchOstableExchangeRatesInUSD() { - const [oswapRates, ostableRates] = await Promise.all([ - fetchOswapExchangeRates(), - fetchOstableExchangeRates() - ]) - - const gbyteUsd = oswapRates["GBYTE_USD"] - - const ostableRatesInUSD = Object.entries(ostableRates) - .filter(([currencyPair, price]) => currencyPair.endsWith("_base")) - .reduce((map, [currencyPair, price]) => ({...map, [currencyPair.replace("_base", "_USD")]: price * gbyteUsd})) - - return { - "GBYTE_USD": gbyteUsd, - ...ostableRatesInUSD - } -} - -function getAaStateVars(address, var_prefix) { - return utils.postURL(`${OBYTE_HUB_ENDPOINT}/get_aa_state_vars`, { address, var_prefix })?.then(({ data }) => data?.data); -} - -function executeGetter(address, getter, args) { - return utils.postURL(`${OBYTE_HUB_ENDPOINT}/execute_getter`, { address, getter, args })?.then(({ data }) => data?.data?.result); -} - -function getBalances(addresses) { - return utils.postURL(`${OBYTE_HUB_ENDPOINT}/get_balances`, { addresses })?.then(({ data }) => data?.data); -} - -async function getDecimalsByAsset(asset) { - if (asset === 'base' || asset === 'GBYTE') return 9; - - const descHash = await getAaStateVars(TOKEN_REGISTRY_AA_ADDRESS, `current_desc_${asset}`).then(vars => vars?.[`current_desc_${asset}`]); - - if (descHash) { - return getAaStateVars(TOKEN_REGISTRY_AA_ADDRESS, `decimals_${descHash}`).then(vars => vars?.[`decimals_${descHash}`] ?? 0); - } else { - return 0; - } -} - -module.exports = { - fetchBaseAABalances, - fetchOswapExchangeRates, - fetchOswapAssets, - fetchOstableAssets, - fetchOstableExchangeRatesInUSD, - summingBaseAABalancesToTvl, - getAaStateVars, - executeGetter, - fetchOswapV2Assets, - getDecimalsByAsset, - getBalances -} diff --git a/projects/helper/chain/polkadot.js b/projects/helper/chain/polkadot.js deleted file mode 100644 index 2480774910a..00000000000 --- a/projects/helper/chain/polkadot.js +++ /dev/null @@ -1,25 +0,0 @@ -const sdk = require('@defillama/sdk') -const { post } = require('../http') -const { sleep } = require('../utils') -const { getEnv } = require('../env') - -const endpoint = 'https://polkadot.api.subscan.io/api/v2/scan/search' - -async function getBalance(key) { - const data = await post(endpoint, { key }, { headers: { 'x-api-key': getEnv('SUBSCAN_API_KEY') }}) - return +(data?.data?.account?.balance ?? 0) -} - -async function sumTokens({ balances = {}, owners = [] }) { - let total = 0 - for (const owner of owners) { - const balance = await getBalance(owner) - total += balance - } - sdk.util.sumSingleBalance(balances, 'polkadot', total) - return balances -} - -module.exports = { - sumTokens -} \ No newline at end of file diff --git a/projects/helper/chain/proton.js b/projects/helper/chain/proton.js deleted file mode 100644 index 587f1182fff..00000000000 --- a/projects/helper/chain/proton.js +++ /dev/null @@ -1,129 +0,0 @@ -const { get, post, } = require('../http') -const CHAIN_RPC = 'https://proton.eoscafeblock.com'; -const SWAP_CONTRACT = 'proton.swaps'; -const ORACLES_CONTRACT = 'oracles'; - -async function getTableRows({ - json = true, - code, - scope, - table, - lower_bound = '', - upper_bound = '', - index_position = 1, - key_type = '', - limit = -1, - reverse = false, - show_payer = false, -}) { - try { - const data = await post( - CHAIN_RPC + '/v1/chain/get_table_rows', - JSON.stringify({ - json, - code, - scope, - table, - lower_bound, - upper_bound, - index_position, - key_type, - limit, - reverse, - show_payer, - }) - ); - return data; - } catch (e) { - console.error(e); - } -} - - -async function getFullTable ({ - code, - scope, - table, - lower_bound, - upper_bound, -}) { - let { rows, more, next_key } = await getTableRows({ - code, - scope, - table, - lower_bound, - upper_bound, - limit: -1 - }) - - if (more) { - rows = rows.concat(await getFullTable({ - code, - scope, - table, - lower_bound: next_key, - upper_bound - })) - } - - return rows -} - -async function getCurrencyBalance(code, account, symbol) { - try { - const data = await post( - CHAIN_RPC + '/v1/chain/get_currency_balance', - JSON.stringify({ - code, - account, - symbol - }) - ); - return data; - } catch (e) { - console.error(e); - } -} - -async function getAllOracleData(lower_bound) { - try { - return await getFullTable({ - code: ORACLES_CONTRACT, - scope: ORACLES_CONTRACT, - table: 'data', - limit: -1, - lower_bound: lower_bound, - }); - } catch (e) { - return []; - } -} - -async function getAllSwapPools(lower_bound) { - try { - return await getFullTable({ - code: SWAP_CONTRACT, - scope: SWAP_CONTRACT, - table: 'pools', - limit: -1, - lower_bound: lower_bound, - }); - } catch (e) { - return []; - } -} - -async function getTokenPriceUsd(tokenSymbol, tokenContract) { - const tokens = await get('https://api.protonchain.com/v1/chain/exchange-rates/info') - const token = tokens.find(token => token.symbol === tokenSymbol && token.contract === tokenContract) - const exchangeRate = token.rates.find(rate => rate.counterCurrency === 'USD') - return exchangeRate.price -} - -module.exports = { - getTableRows, - getCurrencyBalance, - getAllOracleData, - getAllSwapPools, - getTokenPriceUsd -} \ No newline at end of file diff --git a/projects/helper/chain/provenance.js b/projects/helper/chain/provenance.js deleted file mode 100644 index 734c5a7c0b7..00000000000 --- a/projects/helper/chain/provenance.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Token Mapping for Provenance. Note that - * YLDS is pending on CoinGecko, but is a stablecoin. - * Additionally, LRWA and REIT are also 1:1 with USD - */ -const tokenMapping = { - hash: "hash-2", - "eth.figure.se": "ethereum", - "usd.trading": "usd-coin", - "usdc.figure.se": "usd-coin", - // "ylds.fcc": "ylds", - "usdt.figure.se": "tether", - "xrp.figure.se": "ripple", - "sol.figure.se": "solana", - "btc.figure.se": "bitcoin", - "uni.figure.se": "uniswap", - "lrwa.figure.markets": "usd-coin", - "link.figure.se": "chainlink", - 'reit.figure.markets': "usd-coin", -}; - -/** - * Denoms are listed as their base unit. For example, HASH is returned as - * nhash, and needs to be converted to it's CoinGecko Value. - * We do this by querying the denom metadata and using the provided - * exponent and base unit to convert. - * @param tokenObject An object with key: token name (in base units) - * and value: amount of tokens - * Example: { - * nhash: 100000000 - * } - */ -const convertToCoinGeckoApiId = async (tokenObject) => - await Promise.all( - Object.keys(tokenObject).map(async (t) => { - // Get the denom exponent information - const response = await fetch( - `https://api.provenance.io/cosmos/bank/v1beta1/denoms_metadata/${t}` - ); - const denomExponent = (await response.json()).metadata?.denom_units[1] - // If a denom is present and we have mapped the token to the CoinGecko Equivalent... - if (denomExponent && tokenMapping[denomExponent.denom]) { - // Map these tokens to coingecko - const key = tokenMapping[denomExponent.denom] - if (tokenObject[key]) { - const incomingAmount = BigInt(tokenObject[t]) / BigInt(Math.pow(10, denomExponent.exponent)) - const newVal = BigInt(tokenObject[key]) + incomingAmount - tokenObject[key] = newVal.toString(); - } else { - tokenObject[key] = (BigInt(tokenObject[t]) / BigInt(Math.pow(10, denomExponent.exponent))).toString(); - } - delete tokenObject[t]; - } - }) - ); - -// Map tokens. If they exist in coingecko, add to coingecko. -// Otherwise, keep in provenance -const mapTokens = (tokens, coin, api) => - Object.values(tokenMapping).includes(coin) ? - api.addCGToken(coin, tokens[coin]) : api.add(coin, tokens[coin]) - -module.exports = { - tokenMapping, - convertToCoinGeckoApiId, - mapTokens, -} \ No newline at end of file diff --git a/projects/helper/chain/radixdlt.js b/projects/helper/chain/radixdlt.js deleted file mode 100644 index 5ca6b9bba59..00000000000 --- a/projects/helper/chain/radixdlt.js +++ /dev/null @@ -1,157 +0,0 @@ - -const { getUniqueAddresses, } = require('../tokenMapping') -const { getFixBalancesSync } = require('../portedTokens') -const { sliceIntoChunks } = require('../utils') -const BigNumber = require('bignumber.js') -const { post } = require('../http') -const sdk = require('@defillama/sdk') -const ADDRESSES = require('../coreAssets.json') - -const chain = 'radixdlt' - - -const ENTITY_DETAILS_URL = `https://mainnet.radixdlt.com/state/entity/details` - -async function sumTokens({ owner, owners = [], api, transformLSU = false, blacklistedTokens = [] }) { - const blacklistSet = new Set(blacklistedTokens.map(i => i.toLowerCase())) - const fixBalances = getFixBalancesSync(chain) - - if (owner) owners.push(owner) - owners = getUniqueAddresses(owners) - if (!owners.length) return api.getBalances() - sdk.log('fetching tokens for ', owners.length, 'addresses') - - let items = await queryAddresses({ addresses: owners }) - items.forEach((item) => { - item.fungible_resources.items.forEach(({ resource_address, amount }) => { - if (blacklistSet.has(resource_address.toLowerCase())) return; - api.add(resource_address, +amount) - }); - }); - if (transformLSU) await transformLSUs(api) - return fixBalances(api.getBalances()) -} - -async function queryAddresses({ addresses = [], miscQuery = {} }) { - let items = [] - const chunks = sliceIntoChunks(addresses, 20) - for (const chunk of chunks) { - const body = { - ...miscQuery, - "addresses": chunk, - "opt_ins": { "explicit_metadata": ["name"] } - } - let data = await post(ENTITY_DETAILS_URL, body) - items.push(...data.items) - } - return items -} - - -/** - * queryLsus takes a list of addresses as argument. - * The return value is a dictionary with the lsu address and it's valuation in xrd. - * Example response: - * - * { - resource_rdxabc1: { - totalSupplyOfStakeUnits: '48921317.41255863564527699', - validatorAddress: 'validator_rdx1s0lz5v68gtqwswu7lrx9yrjte4ts0l2saphmplsz68nsv2aux0xvfq', - xrdRedemptionValue: 1.0087202808923446 - }, - resource_rdx1cde1: { - totalSupplyOfStakeUnits: '27022271.985429161792201709', - validatorAddress: 'validator_rdx1s0g5uuw3a7ad7akueetzq5lpejzp9uw5glv2qnflvymgendvepgduj', - xrdRedemptionValue: 1.0087163411719327 - } - } - This function does not validate that list received is a proper LSU resources list, - If no LSU resources used, this call could result in empty or partial returns. -**/ -async function queryLiquidStakeUnitDetails(addresses = []) { - addresses = addresses.filter(i => i !== ADDRESSES.radixdlt.XRD) - let lsuRedemptionValues = {} - - const chunks = sliceIntoChunks(addresses, 20) - for (const chunk of chunks) { - let body = { - "addresses": chunk, - "aggregation_level": "Vault", - "explicit_metadata": ["validator"] - } - try { - let data = await post(ENTITY_DETAILS_URL, body) - let validators = [] - for (const lsuResource of data.items) { - let v = lsuResource.metadata.items.filter(metadataItem => metadataItem.key === "validator") - if (v !== undefined && v.length > 0) { - let validator = v[0] - if (validator.value.typed.type === "GlobalAddress" && validator.value.typed.value.startsWith("validator_")) { - lsuRedemptionValues[lsuResource.address] = { - "totalSupplyOfStakeUnits": lsuResource.details.total_supply, - "validatorAddress": validator.value.typed.value - } - validators.push(validator.value.typed.value) - } else { - console.log(`Validator: ${validator} is not a valid or it might not exist`) - } - } else { - console.log(`resource: ${lsuResource.address} doesn't seem to be an LSU resource`) - } - - } - - if (validators.length == 0) { - continue - } - - let validatorsDetailsBody = { - "addresses": validators, - "aggregation_level": "Vault" - } - let validatorsData = await post(ENTITY_DETAILS_URL, validatorsDetailsBody) - for (const validator of validatorsData.items) { - let stakeUnitResourceAddress = validator.details.state.stake_unit_resource_address - let stakeXrdVaultAddress = validator.details.state.stake_xrd_vault.entity_address - - let xrdStakeResource = validator.fungible_resources.items.filter(item => item.resource_address === ADDRESSES.radixdlt.XRD) - let xrdStakeVault = xrdStakeResource[0].vaults.items.filter(vault => vault.vault_address === stakeXrdVaultAddress) - let xrdStakeVaultBalance = new BigNumber(xrdStakeVault[0].amount) - - let totalSupplyOfStakeUnits = new BigNumber(lsuRedemptionValues[stakeUnitResourceAddress]["totalSupplyOfStakeUnits"]) - let xrdRedemptionValue = xrdStakeVaultBalance / totalSupplyOfStakeUnits - lsuRedemptionValues[stakeUnitResourceAddress]["xrdRedemptionValue"] = xrdRedemptionValue - } - } catch (error) { - console.log("There was an error getting the xrd redemption value. Check that all addressed used are LSU resource addresses") - return {} - } - } - return lsuRedemptionValues -} - -function sumTokensExport({ ...args }) { - return async (api) => sumTokens({ ...args, api, }) -} - -async function transformLSUs(api) { - const balances = api.getBalances() - const tokens = Object.keys(balances).filter(i => i.startsWith('radixdlt:resource_')).map(i => i.replace('radixdlt:', '')) - if (tokens.length) { - const lsuRedemptionValues = await queryLiquidStakeUnitDetails(tokens) - Object.entries(lsuRedemptionValues).forEach(([lsuResourceAddress, { xrdRedemptionValue }]) => { - const bals = balances[`radixdlt:${lsuResourceAddress}`] * xrdRedemptionValue - api.add(ADDRESSES.radixdlt.XRD, bals) - delete balances[`radixdlt:${lsuResourceAddress}`] - }) - } - return api.getBalances() -} - -module.exports = { - queryAddresses, - queryLiquidStakeUnitDetails, - sumTokens, - sumTokensExport, - transformLSUs, -} diff --git a/projects/helper/chain/rpcProxy.js b/projects/helper/chain/rpcProxy.js deleted file mode 100644 index a976c0f36a0..00000000000 --- a/projects/helper/chain/rpcProxy.js +++ /dev/null @@ -1,79 +0,0 @@ -const axios = require('axios') -const { getEnv } = require('../env') - -const client = axios.create({ - baseURL: getEnv('RPC_PROXY_URL'), - timeout: 30000, -}) - - -module.exports = { - stellar: { - tokenBalance: async ({ token, address }) => { - const { data } = await client.get(`/stellar/token-balance/${token}/${address}`) - return data - }, - nativeBalance: async (address) => { - const { data } = await client.get(`/stellar/balances/${address}`) - return data - }, - blendBackstopTvl: async (backstopId) => { - const { data } = await client.get(`/stellar/blend-get-backstop/${backstopId}`) - return data - }, - blendPoolInfo: async (backstopId) => { - const { data } = await client.get(`/stellar/blend-get-pool-data/${backstopId}`) - return data - }, - }, - fuel: { - query: async ({ contractId, abi, method, params = [] }) => { - const { data } = await client.post('/fuel/query', { contractId, abi, method, params}) - return data - } - }, - ripple: { - gatewayBalances: async ({ account, hotwallet }) => { - const { data } = await client.post('/ripple/gateway_balances', { account, hotwallet }) - return data - } - }, - drift: { - vaultTvl: async (vault, version) => { - const { data } = await client.get('/drift/vault_tvl', { params: { vault, version } }) - return data - } - }, - injective: { - mitoVaultQuery: async ({ address }) => { - const { data } = await client.get('/injective/mito-vault/' + address) - return data - }, - getMarkets: async (body) => { - const { data } = await client.post('/injective/orderbook/markets', body) - return data - }, - getOrders: async (body) => { - const { data } = await client.post('/injective/orderbook/orders', body) - return data - }, - }, - kamino: { - tvl: async () => { - const { data } = await client.get('/kamino/tvl') - return data - }, - }, - beacon: { - balance: async (addresses = []) => { - const { data } = await client.get('/beacon/total_staked', { params: { withdrawal_credentials: addresses.join(',') } }) - return data.total_balance * 1e9 - }, - }, - sui: { - query: async ({ target, contractId, typeArguments, sender }) => { - const { data } = await client.post('/sui/query', { target, contractId, typeArguments, sender }) - return data - } - } -} \ No newline at end of file diff --git a/projects/helper/chain/secret.js b/projects/helper/chain/secret.js deleted file mode 100644 index 4f97db6353a..00000000000 --- a/projects/helper/chain/secret.js +++ /dev/null @@ -1,71 +0,0 @@ -const { endPoints } = require('./cosmos'); -const EnigmaUtils = require('../utils/enigma') -const host = endPoints.secret -const { toBase64, fromBase64, fromUtf8, } = EnigmaUtils -const axios = require('axios') -let client - -function getClient() { - if (!client) client = new SecretClient(host) - return client -} - -async function queryContract({ contract, data, } = {}) { - return getClient().queryContractSmart({contract, data,}) -} -async function getContracts(codeId) { - return getClient().getContracts(codeId) -} - - -module.exports = { - queryContract, - getContracts, -} - -class SecretClient { - constructor(nodeURL) { - this.nodeURL = nodeURL - this.codeHashes = {} - this.enigmautils = new EnigmaUtils(nodeURL) - } - - async getContracts(codeId) { - const path = `/compute/v1beta1/contracts/${codeId}`; - const { contract_infos } = (await this.get(path)); - return contract_infos.map(({ contract_address, ContractInfo: { code_id, creator, label } }) => ({ - address: contract_address, - code_id, creator, label, - })); - } - - async queryContractSmart({ contract, data }) { - const contractCodeHash = await this.getCodeHashByContractAddr(contract); - const encrypted = await this.enigmautils.encrypt(contractCodeHash, data); - const nonce = encrypted.slice(0, 32); - const encoded = toBase64(encrypted); - const path = `/compute/v1beta1/query/${contract}`; - let responseData = (await this.get(path, { query: encoded })).data - // By convention, smart queries must return a valid JSON document (see https://github.com/CosmWasm/cosmwasm/issues/144) - return JSON.parse(fromUtf8(fromBase64(fromUtf8(await this.enigmautils.decrypt(fromBase64(responseData), nonce))))); - - } - - async get(api, queryParams = {}) { - const { data } = await axios.get(this.nodeURL + api, { params: queryParams }) - return data - } - - async getCodeHashByContractAddr(contract) { - if (!this.codeHashes[contract]) - this.codeHashes[contract] = fetchCodeHash(this) - - return this.codeHashes[contract] - - async function fetchCodeHash(obj) { - const { code_hash } = await obj.get(`/compute/v1beta1/code_hash/by_contract_address/${contract}`) - return code_hash - } - } - -} \ No newline at end of file diff --git a/projects/helper/chain/stacks-api.js b/projects/helper/chain/stacks-api.js deleted file mode 100644 index 337a54c8858..00000000000 --- a/projects/helper/chain/stacks-api.js +++ /dev/null @@ -1,39 +0,0 @@ -const stacks = require('@stacks/transactions') -const { STACKS_MAINNET, } = require('@stacks/network') -const { createApiKeyMiddleware, createFetchFn } = require('@stacks/common') - -const k = '260ff2d24e32b02' -+'e69c516779e3ddbf5' -const apiMiddleware = createApiKeyMiddleware({ - ['api'+ - 'Key']: k, -}); - - -const customFetchFn = createFetchFn(apiMiddleware); -STACKS_MAINNET.client.fetch = customFetchFn - -const { bufferCVFromString, fetchCallReadOnlyFunction, uintCV, principalCV,tupleCV, } = stacks - -const senderAddress = 'ST2F4BK4GZH6YFBNHYDDGN4T1RKBA7DA1BJZPJEJJ' - -async function call({ target, abi, inputArgs = [], }) { - const [contractAddress, contractName] = target.split('.') - const result = await fetchCallReadOnlyFunction({ network: STACKS_MAINNET, contractAddress, contractName, functionName: abi, functionArgs: inputArgs.map(toClairty), senderAddress, client: STACKS_MAINNET.client, }); - return stacks.cvToValue(result) - - function toClairty(arg) { - if (arg.type.startsWith('(tuple')) return tupleCV(arg.value) - switch (arg.type) { - case 'string': return bufferCVFromString(arg.value) - case 'uint': return uintCV(arg.value) - case 'number': return uintCV(arg.value) - case 'principal': return principalCV(arg.value) - default: throw new Error(`Unknown type ${arg.type}`) - } - } -} - -module.exports = { - call, -} diff --git a/projects/helper/chain/stacks.js b/projects/helper/chain/stacks.js deleted file mode 100644 index 579e39dbe7a..00000000000 --- a/projects/helper/chain/stacks.js +++ /dev/null @@ -1,52 +0,0 @@ -const { get, } = require('../http') -const { nullAddress } = require('../tokenMapping') -const { getFixBalancesSync } = require('../portedTokens') -const sdk = require('@defillama/sdk') -const chain = 'stacks' - -const STACKS_API = 'https://stacks-node-api.mainnet.stacks.co/extended/v1/address' - -async function getStacksBalances(address) { - const url = `${STACKS_API}/${address}/balances` - return get(url) -} - -async function addStacks(address, balances = {}) { - const stx_balance = (await getStacksBalances(address)).stx.balance - sdk.util.sumSingleBalance(balances, nullAddress, stx_balance, chain) - return balances -} - -async function addTokens(address, { balances = {}, tokens = [], blacklistedTokens = [] }) { - const { - fungible_tokens, stx, - } = await getStacksBalances(address) - - if ((!tokens.length || tokens.includes(nullAddress)) && (!blacklistedTokens.length || !blacklistedTokens.includes(nullAddress))) - sdk.util.sumSingleBalance(balances, nullAddress, stx.balance, chain) - - Object.keys(fungible_tokens) - .filter(token => { - if (tokens.length && !tokens.includes(token)) return false - if (blacklistedTokens.length && blacklistedTokens.includes(token)) return false - return true - }) - .forEach(token => sdk.util.sumSingleBalance(balances, token, fungible_tokens[token].balance, chain)) -} - -async function sumTokens({ owner, owners = [], tokens = [], balances = {}, blacklistedTokens = [], tokensAndOwners = [] }) { - if (tokensAndOwners.length) { - await Promise.all(tokensAndOwners.map(([token, owner]) => addTokens(owner, { tokens: [token], balances, blacklistedTokens, }))) - return balances - } - if (owner) owners = [owner] - - await Promise.all(owners.map(i => addTokens(i, { balances, tokens, blacklistedTokens, }))) - const transform = getFixBalancesSync(chain) - return transform(balances) -} - -module.exports = { - sumTokens, - addStacks, -} \ No newline at end of file diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js deleted file mode 100644 index 60262dc101b..00000000000 --- a/projects/helper/chain/starknet.js +++ /dev/null @@ -1,195 +0,0 @@ -// https://www.starknetjs.com/docs/API/contract -// https://playground.open-rpc.org/?uiSchema%5BappBar%5D%5Bui:splitView%5D=false&schemaUrl=https://raw.githubusercontent.com/starkware-libs/starknet-specs/master/api/starknet_api_openrpc.json&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:darkMode%5D=true&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false -// https://docs.alchemy.com/reference/starknet-getevents -const { getUniqueAddresses } = require('../tokenMapping') -const { Contract, validateAndParseAddress, number, hash, CallData } = require('starknet') -const abi = require('../../10kswap/abi') -const axios = require('axios') -const plimit = require('p-limit') -const { sliceIntoChunks, sleep } = require('../utils') -const { getUniTVL } = require('../cache/uniswap') -const { getCache } = require('../cache') -const { getEnv } = require('../env') -const ADDRESSES = require('../coreAssets.json') - -const _rateLimited = plimit(1) -const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) - -const STARKNET_RPC = getEnv('STARKNET_RPC') - -function formCallBody({ abi, target, params = [], allAbi = [] }, id = 0) { - if ((params || params === 0) && !Array.isArray(params)) - params = [params] - const contract = new Contract([abi, ...allAbi,], target, null) - const requestData = contract.populate(abi.name, params) - requestData.entry_point_selector = hash.getSelectorFromName(requestData.entrypoint) - requestData.contract_address = requestData.contractAddress - delete requestData.contractAddress - delete requestData.entrypoint - if (abi.customInput === 'address') requestData.calldata = params.map(i => i.slice(2)) - return getCallBody(requestData, id) - - function getCallBody(i) { - return { jsonrpc: "2.0", id, method: "starknet_call", params: [i, "latest"] } - } -} - -function parseOutput(result, abi, allAbi, { permitFailure = false, responseObj = {} } = {}) { - if (!result) { - let errorMessage = responseObj.error?.data?.revert_error ?? responseObj.error?.message ?? 'Call failed' - if (permitFailure) return null - throw new Error(`Starknet call failed: ${errorMessage}`) - } - - let response = new CallData([abi, ...allAbi]).parse(abi.name, result) - // convert BigInt to string - for (const key in response) { - if (typeof response[key] === 'bigint') response[key] = response[key].toString() - } - - if (abi.outputs.length === 1 && !abi.outputs[0].type.includes('::')) { - response = response[abi.outputs[0].name] - if (abi.outputs[0].type === 'Uint256') return +response - switch (abi.customType) { - case 'address': return validateAndParseAddress(response) - case 'Uint256': return +response - } - } - return response -} - -async function call({ abi, target, params = [], allAbi = [], permitFailure = false } = {}, ...rest) { - const { data } = await axios.post(STARKNET_RPC, formCallBody({ abi, target, params, allAbi })) - return parseOutput(data.result, abi, allAbi, { permitFailure, responseObj: data }) -} - -async function multiCall({ abi: rootAbi, target: rootTarget, calls = [], allAbi = [], permitFailure = false }) { - if (!calls.length) return [] - calls = calls.map((callArgs) => { - if (typeof callArgs !== 'object') { - if (!rootTarget) return { target: callArgs, abi: rootAbi, allAbi, } - return { target: rootTarget, params: callArgs, abi: rootAbi, allAbi, } - } - const { target, params, abi } = callArgs - return { target: target || rootTarget, params, abi: abi || rootAbi } - }) - const callBodies = calls.map(formCallBody) - const allData = [] - const chunks = sliceIntoChunks(callBodies, 25) - for (const chunk of chunks) { - await sleep(200) - const { data } = await axios.post(STARKNET_RPC, chunk) - allData.push(...data) - } - - const response = [] - allData.forEach((i) => { - const { result, id } = i - const abi = calls[id].abi ?? rootAbi - response[id] = parseOutput(result, abi, allAbi, { permitFailure, responseObj: i }) - }) - return response -} - -const balanceOfABI = { - "name": "balanceOf", - "type": "function", - "inputs": [ - { - "name": "account", - "type": "felt" - } - ], - "outputs": [ - { - "name": "balance", - "type": "Uint256" - } - ], - "stateMutability": "view", - "customInput": 'address', -} - -function replaceNull(i) { - return i === ADDRESSES.null ? ADDRESSES.starknet.ETH : i -} - -async function sumTokens({ owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], token, ownerTokens = [], api, }) { - - tokens = tokens.map(replaceNull) - tokensAndOwners = tokensAndOwners.map(i => [replaceNull(i[0]), i[1]]) - if (token) tokens = [token] - if (owner) owners = [owner] - - owners = getUniqueAddresses(owners, 'starknet') - blacklistedTokens = getUniqueAddresses(blacklistedTokens, 'starknet') - - if (!tokensAndOwners.length) { - if (!owners.length && owner) - owners = [owner] - - tokensAndOwners = tokens.map(t => owners.map(o => ([t, o]))).flat() - } - if (ownerTokens.length) { - ownerTokens.forEach(([tokens, o]) => tokens.forEach(t => tokensAndOwners.push([t, o]))) - } - - tokensAndOwners = getUniqueToA(tokensAndOwners, 'starknet') - tokensAndOwners = tokensAndOwners.filter(i => !blacklistedTokens.includes(i[0])) - const res = await multiCall({ abi: balanceOfABI, calls: tokensAndOwners.map(i => ({ target: i[0], params: i[1] })) }) - res.forEach((v, i) => api.add(tokensAndOwners[i][0], +v)) - return api.getBalances() - - - function getUniqueToA(toa, chain) { - toa = toa.map(i => i.join('¤')) - return getUniqueAddresses(toa, chain).map(i => i.split('¤')) - } -} - -const api = { - chain: 'starknet', -} - -const defaultAbis = { - allPairsLength: abi.factory.allPairsLength, - allPairs: abi.factory.allPairs, - token0: abi.pair.token0, - token1: abi.pair.token1, - getReserves: abi.pair.getReserves, - balanceOf: balanceOfABI, -} - -function dexExport({ factory, abis = {}, fetchBalances = false }) { - return () => getUniTVL({ factory, abis: { ...defaultAbis, ...abis }, fetchBalances })(api, undefined, undefined, { api, }) -} - -module.exports = { - call: rateLimited(call), - multiCall: rateLimited(multiCall), - parseAddress: validateAndParseAddress, - sumTokens: rateLimited(sumTokens), - number, - dexExport, -} - -// WIP -async function getLogs({ fromBlock, topic, target }) { - const cache = await getCache('starknet-logs', topic) - fromBlock = cache.toBlock || fromBlock - const { data: { result: to_block } } = await axios.post(STARKNET_RPC, { "id": 1, "jsonrpc": "2.0", "method": "starknet_blockNumber" }) - const params = { - filter: { - from_block: fromBlock, - to_block, - keys: [topic], - "address": target, - } - } - - const body = { jsonrpc: "2.0", id: 1, method: "starknet_getEvents", params } - const { data } = await axios.post(STARKNET_RPC, body) -} - -api.call = module.exports.call -api.multiCall = module.exports.multiCall diff --git a/projects/helper/chain/stellar.js b/projects/helper/chain/stellar.js deleted file mode 100644 index e5c8038b4a1..00000000000 --- a/projects/helper/chain/stellar.js +++ /dev/null @@ -1,57 +0,0 @@ -const { get } = require('../http') -const { transformBalances } = require('../portedTokens') -const { stellar } = require('./rpcProxy') - -async function getAssetSupply(asset) { - const [assetCode, assetIssuer] = asset.split('-') - const { _embedded: { records } } = await get(`https://horizon.stellar.org/assets?asset_code=${assetCode}&asset_issuer=${assetIssuer}`) - let supply = 0 - for (const { balances } of records) { - supply += +balances.authorized - supply += +balances.authorized_to_maintain_liabilities - } - return supply -} - -async function addUSDCBalance(api, account) { - const { trustlines } = await get(`https://api.stellar.expert/explorer/public/contract/${account}/value`) - const usdc = trustlines.find(({ asset }) => asset === 'USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN-1') - if (usdc) { - api.addCGToken('usd-coin', usdc.value / 1e7) - } -} - - -async function sumTokens(config) { - const { api, owners = [], owner, ...rest } = config - if (owners?.length) { - for (const owner of owners) - await sumTokens({ ...rest, owner, api, skiTransform: true }) - return transformBalances(api.chain, api.getBalances()) - } else { - const { trustlines } = await get(`https://api.stellar.expert/explorer/public/account/${owner}/value`) - trustlines.forEach(({ asset, value }) => { - api.add(asset, value) - }) - } - if (config.skiTransform) return api.getBalances() - return transformBalances(api.chain, api.getBalances()) - -} - -/** - * Read the "balance" function of a token for a given address - * @param {string} token - * @param {string} address - * @returns {Promise} - */ -async function getTokenBalance(token, address) { - return stellar.getTokenBalance({ token, address }) -} - -module.exports = { - getAssetSupply, - addUSDCBalance, - sumTokens, - getTokenBalance -} \ No newline at end of file diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js deleted file mode 100644 index 28f9e66caa5..00000000000 --- a/projects/helper/chain/sui.js +++ /dev/null @@ -1,210 +0,0 @@ - -const sdk = require('@defillama/sdk') - -const http = require('../http') -const { getEnv } = require('../env') -const { transformDexBalances } = require('../portedTokens') -const { sliceIntoChunks, getUniqueAddresses } = require('../utils') - -//https://docs.sui.io/sui-jsonrpc - -const endpoint = () => getEnv('SUI_RPC') -const graphEndpoint = () => getEnv('SUI_GRAPH_RPC') - -async function getObject(objectId) { - return (await call('sui_getObject', [objectId, { - "showType": true, - "showOwner": true, - "showContent": true, - }])).content -} - -async function fnSleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -async function queryEvents({ eventType, transform = i => i }) { - let filter = {} - if (eventType) filter.MoveEventType = eventType - const items = [] - let cursor = null - do { - const { data, nextCursor, hasNextPage } = await call('suix_queryEvents', [filter, cursor], { withMetadata: true, }) - cursor = hasNextPage ? nextCursor : null - items.push(...data) - } while (cursor) - return items.map(i => i.parsedJson).map(transform) -} - -async function getObjects(objectIds) { - if (objectIds.length > 9) { - const chunks = sliceIntoChunks(objectIds, 9) - const res = [] - for (const chunk of chunks) res.push(...(await getObjects(chunk))) - return res - } - const { - result - } = await http.post(endpoint(), { - jsonrpc: "2.0", id: 1, method: 'sui_multiGetObjects', params: [objectIds, { - "showType": true, - "showOwner": true, - "showContent": true, - }], - }) - return objectIds.map(i => result.find(j => j.data?.objectId === i)?.data?.content) -} - -async function getDynamicFieldObject(parent, id, { idType = '0x2::object::ID' } = {}) { - return (await call('suix_getDynamicFieldObject', [parent, { - "type": idType, - "value": id - }])).content -} - -async function getDynamicFieldObjects({ parent, cursor = null, limit = 48, items = [], idFilter = i => i, addedIds = new Set(), sleep }) { - if (sleep) await fnSleep(sleep) - const { - result: { data, hasNextPage, nextCursor } - } = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method: 'suix_getDynamicFields', params: [parent, cursor, limit], }) - sdk.log('[sui] fetched items length', data.length, hasNextPage, nextCursor) - const fetchIds = data.filter(idFilter).map(i => i.objectId).filter(i => !addedIds.has(i)) - fetchIds.forEach(i => addedIds.add(i)) - const objects = await getObjects(fetchIds) - items.push(...objects) - if (!hasNextPage) return items - return getDynamicFieldObjects({ parent, cursor: nextCursor, items, limit, idFilter, addedIds, sleep }) -} - -async function call(method, params, { withMetadata = false } = {}) { - if (!Array.isArray(params)) params = [params] - const { - result, error - } = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method, params, }) - if (!result && error) throw new Error(`[sui] ${error.message}`) - if (['suix_getAllBalances'].includes(method)) return result - return withMetadata ? result : result.data -} - -async function multiCall(calls) { - return Promise.all(calls.map(i => call(...i))) -} - - -function dexExport({ - account, - poolStr, - token0Reserve = i => i.fields.coin_x_reserve, - token1Reserve = i => i.fields.coin_y_reserve, - getTokens = i => i.type.split('<')[1].replace('>', '').split(', '), - isAMM = true, - eventType, - eventTransform, -}) { - return { - timetravel: false, - misrepresentedTokens: true, - sui: { - tvl: async (api) => { - const data = [] - let pools - if (!eventType) { - pools = await getDynamicFieldObjects({ parent: account, idFilter: i => poolStr ? i.objectType.includes(poolStr) : i }) - } else { - pools = await queryEvents({ eventType, transform: eventTransform }) - pools = await getObjects(pools) - } - sdk.log(`[sui] Number of pools: ${pools.length}`) - pools.forEach(i => { - const [token0, token1] = getTokens(i) - if (isAMM) { - data.push({ - token0, - token1, - token0Bal: token0Reserve(i), - token1Bal: token1Reserve(i), - }) - } else { - api.add(token0, token0Reserve(i)) - api.add(token1, token1Reserve(i)) - } - }) - - if (!isAMM) return api.getBalances() - - return transformDexBalances({ chain: 'sui', data }) - } - } - } -} - - -async function sumTokens({ owners = [], blacklistedTokens = [], api, tokens = [], }) { - owners = getUniqueAddresses(owners, true) - const bals = await call('suix_getAllBalances', owners) - const blacklistSet = new Set(blacklistedTokens) - const tokenSet = new Set(tokens) - bals.forEach(i => { - if (blacklistSet.has(i.coinType)) return; - if (tokenSet.size > 0 && !tokenSet.has(i.coinType)) return; - api.add(i.coinType, i.totalBalance) - }) - return api.getBalances() -} - -function sumTokensExport(config) { - return (api) => sumTokens({ ...config, api }) -} - -async function queryEventsByType({ eventType, transform = i => i }) { - const query = `query GetEvents($after: String, $eventType: String!) { - events(first: 50, after: $after, filter: { eventType: $eventType }) { - pageInfo { - endCursor - hasNextPage - } - nodes { - contents { - json - } - } - } -}` - const items = [] - let after = null - do { - const { events: { pageInfo: { endCursor, hasNextPage }, nodes } } = await sdk.graph.request(graphEndpoint(), query, { variables: { after, eventType } }) - after = hasNextPage ? endCursor : null - items.push(...nodes.map(i => i.contents.json).map(transform)) - } while (after) - return items -} - - -async function getTokenSupply(token) { - const query = `{ - coinMetadata(coinType:"${token}") { - decimals - symbol - supply - } -}` - const { coinMetadata: { supply, decimals } } = await sdk.graph.request(graphEndpoint(), query) - return { supply, decimals, normalized: supply / 10 ** decimals } -} - -module.exports = { - endpoint: endpoint(), - call, - multiCall, - getObject, - getObjects, - queryEvents, - getDynamicFieldObject, - getDynamicFieldObjects, - dexExport, - sumTokens, - sumTokensExport, - queryEventsByType, - getTokenSupply, -}; diff --git a/projects/helper/chain/supra.js b/projects/helper/chain/supra.js deleted file mode 100644 index 3de41328a8c..00000000000 --- a/projects/helper/chain/supra.js +++ /dev/null @@ -1,73 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') -const sdk = require("@defillama/sdk"); -const http = require("../http"); -const { getEnv } = require("../env"); -const rpcURL = () => getEnv("SUPRA_RPC"); - -const MAX_NUM_OF_ITEMS_IN_PAGINATION_REQUEST = 10; -const COIN_INFO_STRUCT_TYPE = - "0x0000000000000000000000000000000000000000000000000000000000000001::coin::CoinInfo"; - -const sendGetRequest = async (endpoint) => { - return await http.get(`${rpcURL()}${endpoint}`); -}; - -const sendPostRequest = async (endpoint, data) => { - return await http.post(`${rpcURL()}${endpoint}`, data); -}; - -const getAccountAllResources = async (accountAddress) => { - let allResourcesList = []; - let endpointWithoutCursor = `/rpc/v1/accounts/${accountAddress}/resources?count=${MAX_NUM_OF_ITEMS_IN_PAGINATION_REQUEST}`; - let resData = (await sendGetRequest(endpointWithoutCursor)).Resources; - while (resData.resource.length != 0) { - allResourcesList.push(...resData.resource); - let endpointWithCursor = `${endpointWithoutCursor}&start=${resData.cursor}`; - resData = (await sendGetRequest(endpointWithCursor)).Resources; - } - return allResourcesList; -}; - -const getResourceData = async (accountAddress, resourceType) => { - let endpoint = `/rpc/v1/accounts/${accountAddress}/resources/${resourceType}`; - let resData = await sendGetRequest(endpoint); - if (!resData.result[0]) { - throw new Error( - `${resourceType} resource not found on ${accountAddress} address` - ); - } - return resData.result[0]; -}; - -const invokeViewFunction = async ( - functionIdentifier, - typeArguments, - functionArguments -) => { - let endpoint = "/rpc/v1/view"; - let data = { - function: functionIdentifier, - type_arguments: typeArguments, - arguments: functionArguments, - }; - return (await sendPostRequest(endpoint, data)).result; -}; - -const getTableItemByKey = async (tableHandle, keyType, valueType, key) => { - let endpoint = `/rpc/v1/tables/${tableHandle}/item`; - let data = { - key_type: keyType, - value_type: valueType, - key: key, - }; - return (await sendPostRequest(endpoint, data)).data; -}; - -module.exports = { - rpcURL, - getAccountAllResources, - getResourceData, - invokeViewFunction, - getTableItemByKey, - COIN_INFO_STRUCT_TYPE, -}; \ No newline at end of file diff --git a/projects/helper/chain/tezos.js b/projects/helper/chain/tezos.js deleted file mode 100644 index a0c60de4434..00000000000 --- a/projects/helper/chain/tezos.js +++ /dev/null @@ -1,116 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') -const http = require('../http') -const sdk = require('@defillama/sdk') -const { PromisePool } = require('@supercharge/promise-pool') - -const RPC_ENDPOINT = 'https://api.mainnet.tzkt.io' - -const usdtAddressTezos = ADDRESSES.tezos.USDt -const transformAddressDefault = t => t == "tezos" ? "coingecko:tezos" : 'tezos:' + t - -const tokenBlacklist = [ - 'KT18quSVkqhbJS38d5sbRAEkXd5GoNqmAoro', - 'KT1TtaMcoSx5cZrvaVBWsFoeZ1L15cxo5AEy', - 'KT19oivKN2qzeWgCs886BbttSVYtkcJHRtuQ', - 'KT1AhSVv4Se1j3Hf5Y6a56vBV44zNzjP91D2', - 'KT1Gf5JGXC1M8GMji58pKraXiRLkzW2NRK1s', - 'KT1R52Gk7LzWvyV41oP9dRUbboHs4yVTXAZT', - 'KT1LVnyY5cSCVpFMGXzqVsWNiSkJYA8w1rZk', - 'KT1T9kFJD5fKAT4LAZWjYBCaWNbD7cw1CUju', - 'KT1JXxK3bd39ayLiiBdKm2cdReYnVSG3bkzK', - 'KT1FR9ij18K3dDExgFMBs7ppxfdGYzHiPo7c', - 'KT1GhX6MzTHKcjkMTg1mwCPzam12HRjsp6Sf', - 'KT1C9X9s5rpVJGxwVuHEVBLYEdAQ1Qw8QDjH', - 'KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-16', -] - -async function getTokenBalances(account, includeTezosBalance = true, { balances = {}, transformAddress = transformAddressDefault } = {}) { - const response = await http.get(`${RPC_ENDPOINT}/v1/tokens/balances?account=${account}&sort.desc=balance&offset=0&limit=40&select=balance,token.id%20as%20id,token.contract%20as%20contract,token.tokenId%20as%20token_id`) - response.forEach((item) => { - let token = item.contract.address - if (item.token_id !== '0') token += '-' + item.token_id - - if (!tokenBlacklist.includes(token)) - sdk.util.sumSingleBalance(balances, transformAddress(token), item.balance) - }) - - if (includeTezosBalance) - sdk.util.sumSingleBalance(balances, transformAddress('tezos'), await getTezosBalance(account)) - - return balances -} - -async function getTezosBalance(account) { - const balance = await http.get(`${RPC_ENDPOINT}/v1/accounts/${account}/balance`) - return +balance / 10 ** 6 -} - -async function getStorage(account) { - return http.get(`${RPC_ENDPOINT}/v1/contracts/${account}/storage`) -} - -async function getBigMapById(id, limit = 1000, offset = 0, key, value) { - const response = await http.get( - `${RPC_ENDPOINT}/v1/bigmaps/${id}/keys?limit=${limit}&offset=${offset}` + (key ? `&key=${key}` : '') + (value ? `&value=${value}` : '') - ); - let map_entry; - const mapping = {}; - for (map_entry of response) { - if (typeof map_entry.key === 'object' && map_entry.hash) map_entry.key = map_entry.hash; - mapping[map_entry.key] = map_entry.value; - } - return mapping; -} - -async function addDexPosition({ balances = {}, account, transformAddress }) { - return getTokenBalances(account, true, { balances, transformAddress }) -} - -async function resolveLPPosition({ balances = {}, owner, lpToken, transformAddress = transformAddressDefault, ignoreList = [] }) { - const LPBalances = await getTokenBalances(owner, false, { transformAddress: i => i }) - if (!LPBalances[lpToken]) return balances - const data = await getStorage(lpToken) - const admin = data.admin || data.exchangeAddress - const total_supply = data.total_supply || data.totalSupply - - if (ignoreList.includes(admin)) - return balances - - const tokenBalances = await getTokenBalances(admin, false, { transformAddress: i => i }) - const ownershipRatio = LPBalances[lpToken] / total_supply - Object.keys(tokenBalances).forEach(token => { - const balance = tokenBalances[token] * ownershipRatio - sdk.util.sumSingleBalance(balances, transformAddress(token), balance) - }) - return balances -} - -async function sumTokens({ owners = [], balances = {}, includeTezos = false }) { - const { errors } = await PromisePool.withConcurrency(5) - .for(owners) - .process(async item => { - await getTokenBalances(item, includeTezos, { balances }) - }) - - if (errors && errors.length) - throw errors[0] - - return balances -} - -async function sumTokens2({ owners = [], balances = {}, includeTezos = false }) { - return sumTokens({ owners, balances, includeTezos }) -} - -module.exports = { - RPC_ENDPOINT, - usdtAddressTezos, - sumTokens2, - getStorage, - sumTokens, - getTokenBalances, - addDexPosition, - resolveLPPosition, - getBigMapById, - getTezosBalance, -} diff --git a/projects/helper/chain/ton.js b/projects/helper/chain/ton.js deleted file mode 100644 index 016bc841f36..00000000000 --- a/projects/helper/chain/ton.js +++ /dev/null @@ -1,151 +0,0 @@ -const { get, post, } = require('../http') -const ADDRESSES = require('../coreAssets.json') -const plimit = require('p-limit') -const _rateLimited = plimit(1) -const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) -const { sumTokens2 } = require('../unwrapLPs') -const tonUtils = require('../utils/ton') - -const { getUniqueAddresses, sleep, sliceIntoChunks } = require('../utils') - -async function getTonBalance(addr) { - const res = await get(`https://toncenter.com/api/v3/account?address=${addr}`) - return res.balance -} - -async function getJettonBalances(addr) { - const response = await get(`https://tonapi.io/v2/accounts/${addr}/jettons?currencies=usd`) - - const res = {} - response.balances.forEach(val => { - res[val.jetton.address] = { balance: val.balance, price: val.price.prices.USD, decimals: val.jetton.decimals } - }) - - return res -} - -async function _sumTokensAccount({ api, addr, tokens = [], onlyWhitelistedTokens = false, useTonApiForPrices = true, }) { - if (onlyWhitelistedTokens && tokens.length === 1 && tokens.includes(ADDRESSES.ton.TON)) return; - const { balances } = await get(`https://tonapi.io/v2/accounts/${addr}/jettons?currencies=usd`) - await sleep(1000 * (3 * Math.random() + 3)) - tokens = tokens.map((a) => { - if (a === ADDRESSES.ton.TON) return ADDRESSES.ton.TON - return tonUtils.address(a).toString() - }) - balances.forEach(({ balance, price, jetton }) => { - const address = tonUtils.address(jetton.address).toString() - if (onlyWhitelistedTokens && !tokens.includes(address)) return; - if (!useTonApiForPrices) { - api.add(address, balance) - return; - } - const decimals = jetton.decimals - price = price?.prices?.USD - if (!decimals || !price) { - api.add(address, balance) - return; - } - const bal = balance * price / 10 ** decimals - api.add('tether', bal, { skipChain: true }) - }) -} - -async function getTokenRates({ tokens = [] }) { - const { rates } = await get(`https://tonapi.io/v2/rates?` + ( - new URLSearchParams({ tokens: tokens.join(','), currencies: "usd" }) - ).toString()); - - const tokenPrices = {}; - - tokens.forEach(tokenAddress => { - if (rates[tokenAddress]) { - const usdPrice = rates[tokenAddress].prices.USD; - tokenPrices[tokenAddress] = usdPrice; - } - }); - - return tokenPrices -} - -async function getJettonsInfo(tokens){ - const result = [] - for (let chunk of sliceIntoChunks(tokens, 100)) { - result.push(...(await post("https://tonapi.io/v2/jettons/_bulk", {"account_ids": chunk}))["jettons"]) - } - return result -} - -const sumTokensAccount = rateLimited(_sumTokensAccount) - -async function sumTokens({ api, tokens, owners = [], owner, onlyWhitelistedTokens = false, useTonApiForPrices = true }) { - if (!api) throw new Error('api is required') - - if (owner) owners.push(owner) - owners = getUniqueAddresses(owners, api.chain) - - if (tokens.includes(ADDRESSES.null)) await addTonBalances({ api, addresses: owners }) - if (onlyWhitelistedTokens && tokens.length === 1 && tokens.includes(ADDRESSES.ton.TON)) return sumTokens2({ api, }) - - for (const addr of owners) { - await sleep(1000 * (3 * Math.random() + 7)) - await sumTokensAccount({ api, addr, tokens, onlyWhitelistedTokens, useTonApiForPrices }) - } - return sumTokens2({ api, }) -} - -function sumTokensExport({ ...args }) { - return (api) => sumTokens({ api, ...args }) -} - -async function call({ target, abi, params = [], rawStack = false, }) { - const requestBody = { - "address": target, - "method": abi, - "stack": params - } - const { ok, result } = await post('https://toncenter.com/api/v2/runGetMethod', requestBody) - if (!ok) { - throw new Error("Unknown"); - } - const { exit_code, stack } = result - if (exit_code !== 0) { - throw new Error('Expected a zero exit code, but got ' + exit_code) - } - - if (rawStack) return stack - - stack.forEach((i, idx) => { - if (i[0] === 'num') { - stack[idx] = parseInt(i[1], 16) - } - }) - - return stack -} - -async function addTonBalances({ api, addresses }) { - api.log('Fetching TON balances', { addresses: addresses.length }) - const chunks = sliceIntoChunks(addresses, 399) - let i = 0 - for (const chunk of chunks) { - api.log('Fetching TON balances', { chunk: i++, chunks: chunks.length }) - const { accounts } = await get('https://toncenter.com/api/v3/accountStates?address=' + encodeURIComponent(chunk.join(',')) + '&include_boc=false') - accounts.forEach(({ balance }) => { - api.add(ADDRESSES.null, balance) - }) - if (addresses.length > 199) { - await sleep(3000) - } - } -} - -module.exports = { - addTonBalances, - getTonBalance, - getTokenRates, - sumTokens, - sumTokensExport, - call, - getJettonBalances, - getJettonsInfo, -} \ No newline at end of file diff --git a/projects/helper/chain/tron.js b/projects/helper/chain/tron.js deleted file mode 100644 index 79718f2681d..00000000000 --- a/projects/helper/chain/tron.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getEnv } = require('../env') -const { get, post, } = require('../http') - -async function getStakedTron(account) { - const data = await get(`https://apilist.tronscan.org/api/vote?candidate=${account}`) - return data.totalVotes -} - - -// not used anywhere? -async function getTrxBalance(account) { - const data = await post(getEnv('TRON_RPC')+'/wallet/getaccount', { - address: account, - visible: true, - }) - return data.balance + (data.frozen?.reduce((t, { frozen_balance }) => t + frozen_balance, 0) ?? 0) -} - -module.exports = { - getStakedTron, - getTrxBalance, -} diff --git a/projects/helper/chain/utils/ton-address.js b/projects/helper/chain/utils/ton-address.js deleted file mode 100644 index d704c7d4369..00000000000 --- a/projects/helper/chain/utils/ton-address.js +++ /dev/null @@ -1,237 +0,0 @@ -const bounceable_tag = 0x11; -const non_bounceable_tag = 0x51; -const test_flag = 0x80; - -function crc16(data) { - const poly = 0x1021; - let reg = 0; - const message = Buffer.alloc(data.length + 2); - message.set(data); - for (let byte of message) { - let mask = 0x80; - while (mask > 0) { - reg <<= 1; - if (byte & mask) { - reg += 1; - } - mask >>= 1; - if (reg > 0xffff) { - reg &= 0xffff; - reg ^= poly; - } - } - } - return Buffer.from([Math.floor(reg / 256), reg % 256]); -} - -function parseFriendlyAddress(src) { - if (typeof src === "string" && !Address.isFriendly(src)) { - throw new Error("Unknown address type"); - } - const data = Buffer.isBuffer(src) ? src : Buffer.from(src, "base64"); - // 1byte tag + 1byte workchain + 32 bytes hash + 2 byte crc - if (data.length !== 36) { - throw new Error("Unknown address type: byte length is not equal to 36"); - } - // Prepare data - const addr = data.subarray(0, 34); - const crc = data.subarray(34, 36); - const calcedCrc = (0, crc16)(addr); - if (!(calcedCrc[0] === crc[0] && calcedCrc[1] === crc[1])) { - throw new Error("Invalid checksum: " + src); - } - // Parse tag - let tag = addr[0]; - let isTestOnly = false; - let isBounceable = false; - if (tag & test_flag) { - isTestOnly = true; - tag = tag ^ test_flag; - } - if (tag !== bounceable_tag && tag !== non_bounceable_tag) - throw "Unknown address tag"; - isBounceable = tag === bounceable_tag; - let workchain = null; - if (addr[1] === 0xff) { - // TODO we should read signed integer here - workchain = -1; - } else { - workchain = addr[1]; - } - const hashPart = addr.subarray(2, 34); - return { isTestOnly, isBounceable, workchain, hashPart }; -} -class Address { - static isAddress(src) { - return src instanceof Address; - } - static isFriendly(source) { - // Check length - if (source.length !== 48) { - return false; - } - // Check if address is valid base64 - if (!/[A-Za-z0-9+/_-]+/.test(source)) { - return false; - } - return true; - } - static isRaw(source) { - // Check if has delimiter - if (source.indexOf(":") === -1) { - return false; - } - let [wc, hash] = source.split(":"); - // wc is not valid - if (!Number.isInteger(parseFloat(wc))) { - return false; - } - // hash is not valid - if (!/[a-f0-9]+/.test(hash.toLowerCase())) { - return false; - } - // has is not correct - if (hash.length !== 64) { - return false; - } - return true; - } - static normalize(source) { - if (typeof source === "string") { - return Address.parse(source).toString(); - } else { - return source.toString(); - } - } - static parse(source) { - if (Address.isFriendly(source)) { - return this.parseFriendly(source).address; - } else if (Address.isRaw(source)) { - return this.parseRaw(source); - } else { - throw new Error("Unknown address type: " + source); - } - } - static parseRaw(source) { - let workChain = parseInt(source.split(":")[0]); - let hash = Buffer.from(source.split(":")[1], "hex"); - return new Address(workChain, hash); - } - static parseFriendly(source) { - if (Buffer.isBuffer(source)) { - let r = parseFriendlyAddress(source); - return { - isBounceable: r.isBounceable, - isTestOnly: r.isTestOnly, - address: new Address(r.workchain, r.hashPart), - }; - } else { - let addr = source.replace(/-/g, "+").replace(/_/g, "/"); // Convert from url-friendly to true base64 - let r = parseFriendlyAddress(addr); - return { - isBounceable: r.isBounceable, - isTestOnly: r.isTestOnly, - address: new Address(r.workchain, r.hashPart), - }; - } - } - constructor(workChain, hash) { - this.toRawString = () => { - return this.workChain + ":" + this.hash.toString("hex"); - }; - this.toRaw = () => { - const addressWithChecksum = Buffer.alloc(36); - addressWithChecksum.set(this.hash); - addressWithChecksum.set( - [ - this.workChain, - this.workChain, - this.workChain, - this.workChain, - ], - 32 - ); - return addressWithChecksum; - }; - this.toStringBuffer = (args) => { - let testOnly = - args && args.testOnly !== undefined ? args.testOnly : false; - let bounceable = - args && args.bounceable !== undefined ? args.bounceable : true; - let tag = bounceable ? bounceable_tag : non_bounceable_tag; - if (testOnly) { - tag |= test_flag; - } - const addr = Buffer.alloc(34); - addr[0] = tag; - addr[1] = this.workChain; - addr.set(this.hash, 2); - const addressWithChecksum = Buffer.alloc(36); - addressWithChecksum.set(addr); - addressWithChecksum.set((0, crc16)(addr), 34); - return addressWithChecksum; - }; - this.toString = (args) => { - let urlSafe = - args && args.urlSafe !== undefined ? args.urlSafe : true; - let buffer = this.toStringBuffer(args); - if (urlSafe) { - return buffer - .toString("base64") - .replace(/\+/g, "-") - .replace(/\//g, "_"); - } else { - return buffer.toString("base64"); - } - }; - if (hash.length !== 32) { - throw new Error("Invalid address hash length: " + hash.length); - } - this.workChain = workChain; - this.hash = hash; - Object.freeze(this); - } - equals(src) { - if (src.workChain !== this.workChain) { - return false; - } - return src.hash.equals(this.hash); - } -} - -const addressToInt = (address) => { - return BigInt(`0x${address.toRawString().replace("0:", "")}`); -}; - -const intTo256BitHex = (n) => { - // Convert the BigInt to a hexadecimal string - const hex = n.toString(16); - // Pad with leading zeros to ensure it is 64 characters (256 bits) - return hex.padStart(64, "0"); -}; - -const convertIntToAddress = (uint) => { - const addressString = `0:${intTo256BitHex(uint)}`; - return Address.parseRaw(addressString); -}; - -const compareAddress = (a, b) => { - if (!a || !b) { - return false; - } - - try { - const parsedA = typeof a === "string" ? Address.parse(a) : a; - const parsedB = typeof b === "string" ? Address.parse(b) : b; - - return parsedA.equals(parsedB); - } catch { - return false; - } -}; - -module.exports = { - addressToInt, - convertIntToAddress, - compareAddress, -}; \ No newline at end of file diff --git a/projects/helper/chain/waves.js b/projects/helper/chain/waves.js deleted file mode 100644 index cbc99b0d881..00000000000 --- a/projects/helper/chain/waves.js +++ /dev/null @@ -1,152 +0,0 @@ -const axios = require('axios') -const { get } = require('../http') -const { transformBalances } = require('../portedTokens') -const API_HOST = "https://nodes.wavesnodes.com/"; // https://docs.waves.tech/en/waves-node/node-api/#api-of-pool-of-public-nodes - -const axiosObj = axios.create({ - baseURL: API_HOST, - headers: { - "User-Agent": "defillama", - "Content-Type": "application/json", - }, - timeout: 10000, -}); - -/** - * Get detailed information about a given asset. [See fields descriptions](https://docs.waves.tech/en/blockchain/token/#custom-token-parameters) - * @param {string} assetId - Asset ID base58 encoded - * @returns {{ - * assetId: string, - * issueHeight: number, - * issueTimestamp: number, - * issuer: string, - * issuerPublicKey: string, - * name: string, - * description: string, - * decimals: number, - * reissuable: boolean, - * quantity: number, - * scripted: boolean, - * minSponsoredAssetFee: number, - * originTransactionId: string - * }} Asset details - */ -async function assetDetails(assetId) { - const response = await axiosObj.get(`/assets/details/${assetId}`); - return response.data; -} - -/** - * Get detailed information about a WAVES. [See fields descriptions](https://docs.waves.tech/en/blockchain/account/account-balance) - * @param {string} address - Address base58 encoded - * @returns {{ -* address: string, -* regular: number, -* generating: number, -* available: number, -* effective: number -* }} Waves balance details -*/ -async function wavesBalanceDetails(address) { - const response = await axiosObj.get(`/addresses/balance/details/${address}`); - return response.data; -} - -/** - * Get balance about asset. [See fields descriptions](https://docs.waves.tech/en/blockchain/account/account-balance) - * @param {string} address - Address base58 encoded - * @param {string} assetId - assetId base58 encoded - * @returns {{ -* address: string, -* assetId: string, -* balance: number -* }} Asset balance -*/ -async function assetBalance(address, assetId) { - const response = await axiosObj.get(`/assets/balance/${address}/${assetId}`); - return response.data; -} - - -/** - * Evaluates the provided expression, taking into account the deployed dApp contract - * @param {string} contract - Address of the deployed dApp contract - * @returns {{ - * address: string, - * expr: number, - * result: { type: string, value: string} - * }} Evaluated data - */ -async function scriptEvaluate(contract, expr) { - const response = await axiosObj.post(`/utils/script/evaluate/${contract}`, { - expr, - }); - return response.data; -} - -/** - * Read account data entries by a given key - * @param {string} address - Address base58 encoded - * @param {string} key - Data key - * @returns {{ - * key: string, - * type: string, - * value: any - * }} Data value - */ -async function data(address, key) { - const response = await axiosObj.get(`/addresses/data/${address}/${key}`); - return response.data; -} - -/** - * Read account data entries by given keys or a regular expression - * @param {string} address - Address base58 encoded - * @param {string} matches - Data key - * @returns {[{ -* key: string, -* type: string, -* value: any -* }]} Data values -*/ -async function dataSearch(address, matches) { - const response = await axiosObj.get(`/addresses/data/${address}?matches=${matches}`); - return response.data; -} - -async function sumTokens({ owners, api, includeWaves = true, blacklistedTokens = [] }) { - blacklistedTokens = new Set(blacklistedTokens) - await Promise.all( - owners.map(async (owner) => { - const { balances } = await get(API_HOST + `assets/balance/${owner}`); - balances.forEach(({ assetId, balance }) => { - if (blacklistedTokens.has(assetId)) return; - api.add(assetId, balance) - }) - }) - ) - if (includeWaves) - await Promise.all( - owners.map(async (owner) => { - const { balance } = await get(API_HOST + `addresses/balance/${owner}`); - api.addCGToken('waves', balance / 1e8) - }) - ) - return transformBalances('waves', api.getBalances()) -} - -async function call({ target, key}) { - const { value } = await await get(API_HOST + `addresses/data/${target}/${key}`) - return value; -} - -module.exports = { - call, - assetDetails, - wavesBalanceDetails, - dataSearch, - assetBalance, - scriptEvaluate, - data, - sumTokens, -}; diff --git a/projects/helper/chain/zilliqa.js b/projects/helper/chain/zilliqa.js deleted file mode 100644 index 709b8a9050a..00000000000 --- a/projects/helper/chain/zilliqa.js +++ /dev/null @@ -1,286 +0,0 @@ -const { post } = require('../http') -const BigNumber = require('bignumber.js') - -const ZILLIQA_API = 'https://api.zilliqa.com/' // Mainnet API - -async function call(query) { - return post(ZILLIQA_API, query) -} - -function formQuery(args) { - if (Array.isArray(args)) return args.map(formQuery) - - let { - id, - jsonrpc = '2.0', - method = 'GetSmartContractSubState', - params - } = args - - if (!id) id = `${params[1]}-${params[0]}` - - return { id, jsonrpc, method, params, } -} - -async function getContractState(contract, method, args = []) { - if (contract.startsWith('0x')) contract = contract.slice(2) - return call({ - params: [contract, method, ...args] - }) -} - -async function getBalance(token, address) { - if (token.startsWith('0x')) token = token.slice(2) - const { - result: { - balances - } - } = await call(formQuery({ - params: [ - token, - 'balances', - [address] - ] - })) - return balances[address] -} - -async function getZilliqaBalance(address) { - if (address.startsWith('0x')) address = address.slice(2) - const { - result: { - balance - } - } = await call(formQuery({ method: 'GetBalance', params: [address] })) - return BigNumber(balance).shiftedBy(-1 * 12) -} - -async function getBalances(tokens, addresses, balances = {}) { - if (!Array.isArray(tokens)) tokens = [tokens] - if (!Array.isArray(addresses)) addresses = [addresses] - - const query = tokens - .map(token => - addresses.map(addr => formQuery({ - id: `${token}-${addr}`, - params: [ - token.startsWith('0x') ? token.slice(2) : token, - 'balances', - [addr] - ] - }) - )).flat() - - const data = await call(query) - - data.forEach((response) => { - const { id, result } = response - if (!result) return - let token = id.split('-')[0] - const tokenRef = TOKENS[token] - let decimals = 0 - - if (tokenRef && tokenRef.decimals) - decimals = tokenRef.decimals - - if (tokenRef && tokenRef.coingeckoId) - token = tokenRef.coingeckoId - else - token = `zilliqa:${token}` - - if (!balances[token]) - balances[token] = BigNumber(0) - - const balancesSum = Object.values(result.balances) - .reduce((sum, i) => sum.plus(BigNumber(i).shiftedBy(decimals * -1)), BigNumber(0)) - - balances[token] = balances[token].plus(balancesSum) - }) - - return balances -} - -async function sumTokens({ owners, }) { - const balances = await Promise.all(owners.map(getZilliqaBalance)) - return { - zilliqa: balances.reduce((a, i) => a + +i, 0), - } -} - -// taken from https://swap.xcadnetwork.com/_next/data/E6YkkwWJMYjzQhGDTm38j/pool-overview.json -const TOKENS = { - '0x153feaddc48871108e286de3304b9597c817b456': { - name: 'XCAD Token', - symbol: 'XCAD', - decimals: 18, - contractAddress: '0x153feaddc48871108e286de3304b9597c817b456', - coingeckoId: 'xcad-network' - }, - '0x327082dd216ff625748b13e156b9d1a5d3dd41f2': { - name: 'dXCAD Token', - symbol: 'dXCAD', - decimals: 18, - contractAddress: '0x327082dd216ff625748b13e156b9d1a5d3dd41f2' - }, - '0x818ca2e217e060ad17b7bd0124a483a1f66930a9': { - name: 'Zilliqa-bridged USDT token', - symbol: 'zUSDT', - decimals: 6, - contractAddress: '0x818ca2e217e060ad17b7bd0124a483a1f66930a9', - coingeckoId: 'tether' - }, - '0x201C44B426D85fB2c382563483140825Fd81b9b5': { - name: 'Opulous', - symbol: 'zOPUL', - decimals: 18, - contractAddress: '0x201C44B426D85fB2c382563483140825Fd81b9b5', - coingeckoId: 'opulous' - }, - '0x31bFa2054B7199F936733f9054DBCE259a3c335a': { - name: 'Lunr Token', - symbol: 'Lunr', - decimals: 4, - contractAddress: '0x31bFa2054B7199F936733f9054DBCE259a3c335a', - coingeckoId: 'lunr-token', - }, - '0x9945a0da3dc74e364da4ea96946c99336013eeb5': { - name: 'Heroes Of Lowhelm', - symbol: 'HOL', - decimals: 5, - contractAddress: '0x9945a0da3dc74e364da4ea96946c99336013eeb5' - }, - '0xbf79e16872fad92c16810ddd2a7b9b6858c7b756': { - name: 'CARBON Token', - symbol: 'CARB', - decimals: 8, - contractAddress: '0xbf79e16872fad92c16810ddd2a7b9b6858c7b756', - coingeckoId: 'carbon-labs' - }, - '0x3a683fdc022b26d755c70e9ed7cfcc446658018b': { - name: 'PackagePortal Token', - symbol: 'PORT', - decimals: 4, - contractAddress: '0x3a683fdc022b26d755c70e9ed7cfcc446658018b', - coingeckoId: 'packageportal', - }, - '0x91228A48AEA4E4071B9C6444Eb08B021399CfF7c': { - name: 'Unifees Token', - symbol: 'FEES', - decimals: 4, - contractAddress: '0x91228A48AEA4E4071B9C6444Eb08B021399CfF7c', - coingeckoId: 'unifees' - }, - '0xa3eAFd5021F6B9c36fD02Ed58aa1d015F2238791': { - name: 'ZILStream Token', - symbol: 'STREAM', - decimals: 8, - contractAddress: '0xa3eAFd5021F6B9c36fD02Ed58aa1d015F2238791', - coingeckoId: 'zilstream' - }, - '0xa845C1034CD077bD8D32be0447239c7E4be6cb21': { - name: 'Governance ZIL', - symbol: 'gZIL', - decimals: 15, - contractAddress: '0xa845C1034CD077bD8D32be0447239c7E4be6cb21', - coingeckoId: 'governance-zil' - }, - '0xb393C898b3d261C362a4987CaE5a833232AA666E': { - name: 'Score', - symbol: 'SCO', - decimals: 4, - contractAddress: '0xb393C898b3d261C362a4987CaE5a833232AA666E', - coingeckoId: 'score-token', - }, - '0x173Ca6770Aa56EB00511Dac8e6E13B3D7f16a5a5': { - name: 'XSGD', - symbol: 'XSGD', - decimals: 6, - contractAddress: '0x173Ca6770Aa56EB00511Dac8e6E13B3D7f16a5a5', - coingeckoId: 'xsgd', - }, - '0xaCb721d989c095c64A24d16DfD23b08D738e2552': { - name: 'REDChillies Token', - symbol: 'REDC', - decimals: 9, - contractAddress: '0xaCb721d989c095c64A24d16DfD23b08D738e2552', - coingeckoId: 'redchillies', - }, - '0x75fA7D8BA6BEd4a68774c758A5e43Cfb6633D9d6': { - name: 'Wrapped Bitcoin', - symbol: 'zWBTC', - decimals: 8, - contractAddress: '0x75fA7D8BA6BEd4a68774c758A5e43Cfb6633D9d6', - coingeckoId: 'bitcoin', - }, - '0x2cA315F4329654614d1E8321f9C252921192c5f2': { - name: 'Ethereum', - symbol: 'zETH', - decimals: 18, - contractAddress: '0x2cA315F4329654614d1E8321f9C252921192c5f2', - coingeckoId: 'ethereum' - }, - '0x4268C34dA6Ad41a4cDeAa25cdEF6531Ed0c9a1A2': { - name: 'BLOX', - symbol: 'BLOX', - decimals: 2, - contractAddress: '0x4268C34dA6Ad41a4cDeAa25cdEF6531Ed0c9a1A2', - coingeckoId: 'blox-token' - }, - '0x2fc7167c3Baff89E2805Aef72636ccD98eE6Bbb2': { - name: 'DeMons', - symbol: 'DMZ', - decimals: 18, - contractAddress: '0x2fc7167c3Baff89E2805Aef72636ccD98eE6Bbb2' - }, - '0x32339fa037f7ae1DfFF25e13c6451a80289D61F4': { - name: 'Brokoli', - symbol: 'zBRKL', - decimals: 18, - contractAddress: '0x32339fa037f7ae1DfFF25e13c6451a80289D61F4', - coingeckoId: 'brokoli', - }, - '0xC6Bb661eDA683BdC792b3e456A206a92cc3cB92e': { - name: 'DUCKDUCK', - symbol: 'DUCK', - decimals: 2, - contractAddress: '0xC6Bb661eDA683BdC792b3e456A206a92cc3cB92e', - coingeckoId: 'duckduck-token', - }, - '0x9bd504b1445fdb8f4a643453ec1459bb9a2f988a': { - name: 'XIDR', - symbol: 'XIDR', - decimals: 6, - contractAddress: '0x9bd504b1445fdb8f4a643453ec1459bb9a2f988a' - }, - '0x54aE64e2092749fb8d25470ffc1d4D6A19c6f2Ab': { - name: 'Okipad', - symbol: 'Oki', - decimals: 5, - contractAddress: '0x54aE64e2092749fb8d25470ffc1d4D6A19c6f2Ab' - }, - '0x083196549637fAf95C91EcCD157E60430e69E1A7': { - name: 'Sparda Wallet', - symbol: 'SPW', - decimals: 4, - contractAddress: '0x083196549637fAf95C91EcCD157E60430e69E1A7', - coingeckoId: 'sparda-wallet', - }, - '0x4306f921c982766810cf342775fd79aa2d0d0e24': { - name: 'Wrapped ZIL', - symbol: 'wZIL', - decimals: 12, - contractAddress: '0x4306f921c982766810cf342775fd79aa2d0d0e24', - coingeckoId: 'zilliqa', - }, -} - - -module.exports = { - call, - formQuery, - getContractState, - getBalance, - getZilliqaBalance, - getBalances, - sumTokens, -} \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json deleted file mode 100644 index 931194b33d1..00000000000 --- a/projects/helper/chains.json +++ /dev/null @@ -1,462 +0,0 @@ -[ - "abstract", - "acala", - "ace", - "aelf", - "aeternity", - "agoric", - "ailayer", - "airdao", - "aleph_zero", - "alephium", - "algorand", - "alv", - "ancient8", - "ao", - "apechain", - "aptos", - "arbitrum", - "arbitrum_nova", - "archway", - "area", - "artela", - "assetchain", - "astar", - "astrzk", - "aura", - "aurora", - "avax", - "babylon", - "band", - "base", - "basecamp", - "beam", - "berachain", - "bevm", - "bfc", - "bifrost", - "binance", - "bitchain", - "bitci", - "bitcoin", - "bitcoincash", - "bitgert", - "bitindi", - "bitkub", - "bitrock", - "bittensor", - "bittorrent", - "blast", - "bob", - "boba", - "boba_avax", - "boba_bnb", - "bone", - "borrowed", - "bostrom", - "botanix", - "bouncebit", - "bsc", - "bsquared", - "btn", - "btnx", - "btr", - "bytomsidechain", - "callisto", - "camp", - "candle", - "canto", - "carbon", - "cardano", - "celestia", - "celo", - "chainflip", - "chainx", - "chihuahua", - "chromia", - "chz", - "civitia", - "clover", - "clv", - "cmp", - "comdex", - "concordium", - "conflux", - "constellation", - "core", - "corn", - "cosmos", - "coti", - "crab", - "crescent", - "cronos", - "cronos_zkevm", - "crossfi", - "csc", - "cube", - "curio", - "cyeth", - "darwinia", - "dash", - "dchainmainnet", - "defichain", - "defichain_evm", - "defiverse", - "degen", - "dexalot", - "dexit", - "dfk", - "dfs", - "doge", - "dogechain", - "dsc", - "duckchain", - "dydx", - "dymension", - "echelon", - "echelon_initia", - "eclipse", - "edg", - "elastos", - "elrond", - "elsm", - "elys", - "embr", - "empire", - "energi", - "energyweb", - "eni", - "enuls", - "eon", - "eos", - "eos_evm", - "equilibrium", - "era", - "ergo", - "eteria", - "ethereum", - "ethereumclassic", - "ethf", - "ethpow", - "etlk", - "etn", - "europa", - "eventum", - "everscale", - "evmos", - "fantom", - "fhe", - "filecoin", - "findora", - "firechain", - "flame", - "flare", - "flow", - "fluence", - "formnetwork", - "fraxtal", - "fsc", - "ftn", - "fuel", - "functionx", - "fuse", - "fusion", - "gala", - "gatelayer", - "genesys", - "genshiro", - "goat", - "gochain", - "godwoken", - "godwoken_v1", - "goerli", - "gravity", - "gravitybridge", - "grove", - "ham", - "harmony", - "haven1", - "heco", - "hedera", - "heiko", - "hela", - "hemi", - "hoo", - "hpb", - "hsk", - "hydra", - "hydradx", - "hydragon", - "hyperliquid", - "icon", - "icp", - "idex", - "imx", - "inertia", - "inevm", - "initia", - "injective", - "ink", - "interlay", - "iota", - "iotaevm", - "iotex", - "islm", - "jbc", - "joltify", - "juno", - "kadena", - "karak", - "kardia", - "karura", - "katana", - "kava", - "kcc", - "kekchain", - "kinto", - "kintsugi", - "klaytn", - "kopi", - "kroma", - "kujira", - "kusama", - "lac", - "lachain", - "lamden", - "lbry", - "lens", - "libre", - "lightlink_phoenix", - "linea", - "liquidchain", - "lisk", - "litecoin", - "loop", - "lukso", - "lung", - "manta", - "manta_atlantic", - "mantle", - "mantra", - "map", - "massa", - "matchain", - "mayachain", - "meer", - "merlin", - "meta", - "meter", - "metis", - "mezo", - "migaloo", - "milkomeda", - "milkomeda_a1", - "milkyway", - "milkyway_rollup", - "mint", - "mixin", - "mode", - "moonbeam", - "moonriver", - "morph", - "move", - "mtt_network", - "multivac", - "muuchain", - "mvc", - "mxczkevm", - "nahmii", - "naka", - "namada", - "near", - "neo", - "neo3", - "neon_evm", - "neox", - "neutron", - "new", - "nibiru", - "noble", - "nolus", - "nos", - "nova", - "nuls", - "oas", - "oasis", - "obyte", - "occ", - "odyssey", - "ogpu", - "okexchain", - "omax", - "ontology", - "ontology_evm", - "onus", - "op_bnb", - "optimism", - "orai", - "ore", - "osmosis", - "ox_chain", - "ozone", - "palette", - "palm", - "parallel", - "parex", - "peaq", - "penumbra", - "perennial", - "persistence", - "pg", - "pgn", - "planq", - "plasma", - "plume", - "plume_mainnet", - "pokt", - "polis", - "polkadex", - "polkadot", - "polygon", - "polygon_zkevm", - "polynomial", - "pool2", - "posi", - "prom", - "proton", - "provenance", - "pryzm", - "pulse", - "q", - "qom", - "quasar", - "qubic", - "quicksilver", - "radixdlt", - "rari", - "rbn", - "real", - "redstone", - "reef", - "regen", - "rei", - "reichain", - "renec", - "reya", - "ripple", - "rollux", - "ronin", - "rpg", - "rsk", - "rss3_vsl", - "rvn", - "saakuru", - "saga", - "sanko", - "sapphire", - "scroll", - "secret", - "sei", - "shape", - "shibarium", - "shiden", - "shido", - "shimmer_evm", - "sifchain", - "silicon_zk", - "smartbch", - "solana", - "sommelier", - "somnia", - "soneium", - "songbird", - "sonic", - "soon", - "soon_base", - "soon_bsc", - "sophon", - "sora", - "spn", - "sseed", - "stacks", - "stafi", - "staking", - "starcoin", - "stargaze", - "starknet", - "stellar", - "step", - "stratis", - "stride", - "sty", - "sui", - "supra", - "svm", - "swan", - "swellchain", - "sx", - "sxr", - "syscoin", - "tac", - "taiko", - "tara", - "telos", - "tenet", - "terra", - "terra2", - "tezos", - "theta", - "thorchain", - "thundercore", - "titan", - "tlchain", - "tombchain", - "tomochain", - "ton", - "tron", - "ubiq", - "ultra", - "ultron", - "umee", - "unichain", - "unit0", - "vana", - "vechain", - "velas", - "venom", - "verus", - "vinu", - "vision", - "vite", - "vive", - "wan", - "water", - "waves", - "wax", - "wc", - "wemix", - "winr", - "xai", - "xdai", - "xdc", - "xion", - "xlayer", - "xp", - "xpla", - "xpr", - "xrplevm", - "xsat", - "yomi", - "zeniq", - "zero_network", - "zeta", - "zilliqa", - "zircuit", - "zkcro", - "zkfair", - "zklink", - "zksync", - "zora", - "zyx", - "xone" -] diff --git a/projects/helper/compound.js b/projects/helper/compound.js deleted file mode 100644 index eee33c2a430..00000000000 --- a/projects/helper/compound.js +++ /dev/null @@ -1,60 +0,0 @@ -const abi = require('./abis/compound.json'); -const { sumTokens2, nullAddress, } = require('./unwrapLPs') -const methodologies = require('./methodologies'); - -// returns [{cToken, underlying}] -async function getMarkets(comptroller, api, cether, cetheEquivalent = nullAddress, blacklist = [], abis = {}) { - - if (cether) { - if (!Array.isArray(cether)) cether = [cether] - cether = new Set(cether.map(i => i.toLowerCase())) - } - const blacklistSet = new Set([...blacklist].map(i => i.toLowerCase())) - const cTokens = (await api.call({ abi: abis.getAllMarkets, target: comptroller })).map(i => i.toLowerCase()) - const underlyings = await api.multiCall({ abi: abi.underlying, calls: cTokens, permitFailure: true }) - - const markets = [] - underlyings.forEach((underlying, i) => { - const cToken = cTokens[i] - if (cether?.has(cToken)) underlying = cetheEquivalent - if (blacklistSet.has(cToken)) return; - if (underlying) markets.push({ cToken, underlying }) - else throw new Error(`Market rugged, is that market CETH? ${cToken}`) - }) - return markets; -} - -function _getCompoundV2Tvl(comptroller, cether, cetheEquivalent, borrowed = false, { blacklistedTokens = [], abis = {}, } = {}) { - abis = { ...abi, ...abis } - return async (api) => { - let markets = await getMarkets(comptroller, api, cether, cetheEquivalent, blacklistedTokens, abis) - const cTokens = markets.map(market => market.cToken) - const tokens = markets.map(market => market.underlying) - if (!borrowed) - return sumTokens2({ api, tokensAndOwners2: [tokens, cTokens], blacklistedTokens, resolveLP: true, }) - - let v2Locked = await api.multiCall({ calls: cTokens, abi: borrowed ? abis.totalBorrows : abis.getCash, }) - api.add(tokens, v2Locked) - - blacklistedTokens.forEach(token => api.removeTokenBalance(token)) - - return sumTokens2({ api, resolveLP: true, }); - } -} - -function compoundExports(comptroller, cether, cetheEquivalent = nullAddress, { blacklistedTokens = [], abis = {}, } = {}) { - return { - tvl: _getCompoundV2Tvl(comptroller, cether, cetheEquivalent, false, { blacklistedTokens, abis, }), - borrowed: _getCompoundV2Tvl(comptroller, cether, cetheEquivalent, true, { blacklistedTokens, abis, }) - } -} - -function compoundExports2({ comptroller, cether, cetheEquivalent = nullAddress, blacklistedTokens = [], abis = {}, }) { - return compoundExports(comptroller, cether, cetheEquivalent, { blacklistedTokens, abis, }) -} - -module.exports = { - methodology: methodologies.lendingMarket, - compoundExports, - compoundExports2, -}; diff --git a/projects/helper/compoundV3.js b/projects/helper/compoundV3.js deleted file mode 100644 index a0748609417..00000000000 --- a/projects/helper/compoundV3.js +++ /dev/null @@ -1,42 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { lendingMarket } = require("./methodologies"); -const { sumTokens2 } = require('./unwrapLPs') - -module.exports = { - compoundV3Exports: config => { - const abi = { - numAssets: 'uint8:numAssets', - getAssetInfo: "function getAssetInfo(uint8 i) view returns (tuple(uint8 offset, address asset, address priceFeed, uint64 scale, uint64 borrowCollateralFactor, uint64 liquidateCollateralFactor, uint64 liquidationFactor, uint128 supplyCap))", - } - - const exportsObj = { - methodology: `${lendingMarket}. TVL is calculated by getting the market addresses from comptroller and calling the totalsCollaterals() on-chain method to get the amount of tokens locked in each of these addresses, then we get the price of each token from coingecko.`, - }; - Object.keys(config).forEach(chain => { - const { markets } = config[chain] - - async function borrowed(api) { - const balances = {} - const tokens = await api.multiCall({ abi: 'address:baseToken', calls: markets }) - const bals = await api.multiCall({ abi: 'uint256:totalBorrow', calls: markets }) - bals.forEach((v, i) => sdk.util.sumSingleBalance(balances, tokens[i], v, api.chain)) - return balances - } - - async function tvl(api) { - const toa = [] - await Promise.all(markets.map(async (m, i) => { - const items = await api.fetchList({ lengthAbi: abi.numAssets, itemAbi: abi.getAssetInfo, target: m }) - const tokens = items.map(i => i.asset) - const baseToken = await api.call({ abi: 'address:baseToken', target: m }) - tokens.push(baseToken) - toa.push([tokens, m]) - })) - return sumTokens2({ api, ownerTokens: toa }) - } - exportsObj[chain] = { tvl, borrowed } - }) - return exportsObj - } -}; - diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json deleted file mode 100644 index 833d90da914..00000000000 --- a/projects/helper/coreAssets.json +++ /dev/null @@ -1,2677 +0,0 @@ -{ - "null": "0x0000000000000000000000000000000000000000", - "GAS_TOKEN_2": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "ethereum": { - "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "WSTETH": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - "STETH": "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", - "WEETH": "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", - "sfrxETH": "0xac3e018457b222d93114458476f3e3416abbe38f", - "USDC": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "LINK": "0x514910771af9ca656af840dff83e8264ecf986ca", - "MATIC": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", - "BAT": "0x0d8775f648430679a709e98d2b0cb6250d2887ef", - "RETH": "0xae78736cd615f374d3085123a210448e74fc6393", - "USDT": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "UNI": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", - "AAVE": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "WBTC": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "SNX": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - "YFI": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", - "DAI": "0x6b175474e89094c44da98b954eedeac495271d0f", - "SAI": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", - "SDAI": "0x83f20f44975d03b1b09e64809b757c47f942beea", - "FXS": "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0", - "cvxFXS": "0xfeef77d3f69374f66429c91d732a244f074bdf74", - "cvxCRV": "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", - "vlCVX": "0x72a19342e8f1838460ebfccef09f6585e32db86e", - "CVX": "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", - "FRAX": "0x853d955aCEf822Db058eb8505911ED77F175b99e", - "BNB": "0xb8c77482e45f1f44de1745f52c74426c631bdd52", - "tBTC": "0x18084fba666a33d37592fa2633fd49a74dd93a88", - "USX": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", - "SAFE": "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", - "TOKE": "0x2e9d63788249371f1dfc918a52f8d799f4a38c94", - "TUSD": "0x0000000000085d4780B73119b644AE5ecd22b376", - "BUSD": "0x4fabb145d64652a948d72533023f6e7a623c7c53", - "INU": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", - "LIDO": "0x5a98fcbea516cf06857215779fd812ca3bef1b32", - "MKR": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", - "CRV": "0xd533a949740bb3306d119cc777fa900ba034cd52", - "CRVUSD": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", - "FTM": "0x4e15361fd6b4bb609fa63c81a2be19d873717870", - "GNO": "0x6810e776880C02933D47DB1b9fc05908e5386b96", - "LUSD": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", - "sUSD_OLD": "0x57ab1e02fee23774580c119740129eac7081e9d3", - "sUSD": "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", - "sUSDe": "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - "sUSDS": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", - "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "cbETH": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", - "FDUSD": "0xc5f0f7b66764f6ec8c8dff7ba683102295e16409", - "EETH": "0x35fa164735182de50811e8e2e824cfb9b6118ac2", - "EUSD": "0x939778D83b46B456224A33Fb59630B11DEC56663", - "EBTC": "0x657e8C867D8B37dCC18fA4Caead9C45EB088C642", - "AEVO": "0xB528edBef013aff855ac3c50b381f253aF13b997", - "STONE": "0x4d831e22f062b5327dfdb15f0b6a5df20e2e3dd0", - "USDM": "0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C", - "PRISMA": "0xdA47862a83dac0c112BA89c6abC2159b95afd71C", - "FXN": "0x365accfca291e7d3914637abf1f7635db165bb09", - "USDe": "0x4c9edd5852cd905f086c759e8383e09bff1e68b3", - "ETHFI": "0xFe0c30065B384F05761f15d0CC899D4F9F9Cc0eB", - "METH": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", - "USD0": "0x73A15FeD60Bf67631dC6cd7Bc5B6e8da8190aCF5", - "deUSD": "0x15700B564Ca08D9439C58cA5053166E8317aa138", - "EIGEN": "0xec53bF9167f50cDEB3Ae105f56099aaaB9061F83", - "LBTC": "0x8236a87084f8B84306f72007F36F2618A5634494", - "cbBTC": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "BTCN": "0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6", - "POL": "0x455e53cbb86018ac2b8092fdcd39d8444affc3f6", - "WSOL": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", - "WAVES": "0x0Fb765ddBD4d26AC524AA5990B0643D0Ab6Ac2fE" - }, - "fantom": { - "WFTM": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", - "WBTC": "0x321162cd933e2be498cd2267a90534a804051b11", - "WETH": "0x4e15361fd6b4bb609fa63c81a2be19d873717870", - "USDC": "0x04068da6c83afcfa0e13ba15a6696662335d5b75", - "USDC_L0": "0x28a92dde19D9989F39A49905d7C9C2FAc7799bDf", - "fUSDT": "0x049d68029688eabf473097a2fc38ef61633a3c7a", - "DAI": "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", - "MIM": "0x82f0b8b456c1a451378467398982d4834b6829c1", - "renBTC": "0xdbf31df14b66535af65aac99c32e9ea844e14501", - "cUSD": "0xe3a486c1903ea794eed5d5fa0c9473c7d7708f40", - "anyUSDC": "0x95bf7e307bc1ab0ba38ae10fc27084bc36fcd605", - "nUSD": "0xc5cd01e988cd0794e05ab80f2bcdbdf13ce08bd3", - "nICE": "0x7f620d7d0b3479b1655cefb1b0bc67fb0ef4e443" - }, - "csc": { - "WCET": "0xe6f8988d30614afe4f7124b76477add79c665822", - "USDT": "0x398dca951cd4fc18264d995dcd171aa5debda129" - }, - "europa": { - "USDP": "0x73d22d8a2D1f59Bf5Bcf62cA382481a2073FAF58", - "WBTC": "0xcb011E86DF014a46F4e3AC3F3cbB114A4EB80870", - "SKL": "0xE0595a049d02b7674572b0d59cd4880Db60EDC50", - "ETHC": "0xD2Aaa00700000000000000000000000000000000", - "USDT": "0x1c0491E3396AD6a35f061c62387a95d7218FC515", - "USDC": "0x5F795bb52dAC3085f578f4877D450e2929D2F13d", - "DAI": "0xD05C4be5f3be302d376518c9492EC0147Fa5A718" - }, - "avax": { - "WAVAX": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "SAVAX": "0x2b2c81e08f1af8835a78bb2a90ae924ace0ea4be", - "USDC": "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", - "EURC": "0xc891eb4cbdeff6e073e859e987815ed1505c2acd", - "DAI": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", - "USDT_e": "0xc7198437980c041c805a1edcba50c1ce5db95118", - "USDt": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "BTC_b": "0x152b9d0fdc40c096757f570a51e494bd4b943e50", - "WBTC_e": "0x50b7545627a5162F82A992c33b87aDc75187B218", - "USDC_e": "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "WETH_e": "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", - "JOE": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", - "ZERO": "0x008e26068b3eb40b443d3ea88c1ff99b789c10f7", - "qiAVAX": "0xaf2c034c764d53005cc6cbc092518112cbd652bb", - "xJOE": "0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33", - "LVTX": "0x574679ec54972cf6d705e0a71467bb5bb362919d", - "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", - "UTY": "0xdbc5192a6b6ffee7451301bb4ec312f844f02b4a" - }, - "bsc": { - "WBNB": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - "BTCB": "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", - "BETH": "0x250632378e573c6be1ac2f97fcdf00515d0aa91b", - "wBETH": "0xa2E3356610840701BDf5611a53974510Ae27E2e1", - "BUSD": "0xe9e7cea3dedca5984780bafc599bd69add087d56", - "BTUSD": "0x14016e85a25aeb13065688cafb43044c2ef86784", - "USDC": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "USDT": "0x55d398326f99059ff775485246999027b3197955", - "ETH": "0x2170ed0880ac9a755fd29b2688956bd959f933f8", - "AURA": "0x23c5d1164662758b3799103effe19cc064d897d6", - "C98": "0xaec945e04baf28b135fa7c640f624f8d90f1c3a6", - "NMX": "0xd32d01a43c869edcd1117c640fbdcfcfd97d9d65", - "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "MAHA": "0xce86f7fcd3b40791f63b86c3ea3b8b355ce2685b", - "valBUSD": "0xaed19dab3cd68e4267aec7b2479b1ed2144ad77f", - "valUSDC": "0xa6fdea1655910c504e974f7f1b520b74be21857b", - "valUSDT": "0x5f7f6cb266737b89f7af86b30f03ae94334b83e9", - "SPICE": "0x42586ef4495bb512a86cf7496f6ef85ae7d69a64", - "iZi": "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", - "iUSD": "0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d", - "beltBNB": "0xa8bb71facdd46445644c277f9499dd22f6f0a30c", - "Belt4": "0x9cb73f20164e399958261c289eb5f9846f4d1404", - "beltBTC": "0x51bd63f240fb13870550423d208452ca87c44444", - "beltETH": "0xaa20e8cb61299df2357561c2ac2e1172bc68bc25", - "YGG": "0x13ab6739368a4e4abf24695bf52959224367391f", - "IVN": "0x6a46d878401f46b4c7f665f065e0667580e031ec", - "ankrBNB": "0xe85afccdafbe7f2b096f268e31cce3da8da2990a", - "aBNBb": "0xbb1aa6e59e5163d8722a122cd66eba614b59df0d", - "TUSD": "0x40af3827f39d0eacbf4a168f8d4ee67c121d11c9", - "WBTC": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c", - "weETH": "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", - "DAI": "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", - "FDUSD": "0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409", - "USD1": "0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d" - }, - "polygon": { - "WMATIC": "0xfd28c7cea3c50a060cb4c0059e453c6d4dd9829d", - "WMATIC_1": "0x0000000000000000000000000000000000001010", - "WMATIC_2": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - "MATICX": "0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6", - "USDC": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "USDC_CIRCLE": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", - "QUICK": "0xb5c064f955d8e7f38fe0460c556a72987494ee17", - "WBTC": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - "USDT": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - "DAI": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "WETH": "0x6cacfaf65b1b1f9979acf463a393a112d0980982", - "WETH_1": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "WSTETH": "0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD", - "DINO": "0xaa9654becca45b5bdfa5ac646c939c62b527d394", - "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", - "RADIO": "0x613a489785c95afeb3b404cc41565ccff107b6e0", - "YIN": "0x794baab6b878467f93ef17e2f2851ce04e3e34c8", - "BNB": "0x5c4b7ccbf908e64f32e12c6650ec0c96d717f03f", - "BUSD": "0x9c9e5fd8bbc25984b178fdce6117defa39d2db39", - "WORK": "0x6002410dda2fb88b4d0dc3c1d562f7761191ea80", - "FRAX": "0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89", - "WSOL": "0xd93f7E271cB87c23AaA73edC008A79646d1F9912", - "GOVI": "0x43df9c0a1156c96cea98737b511ac89d0e2a1f46", - "DSC": "0x5D4E735784293a0A8D37761AD93C13A0DD35c7E7", - "DGC": "0xf7E2D612F1A0ce09ce9fC6FC0b59C7fD5b75042F" - }, - "xdai": { - "WXDAI": "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d", - "USDC": "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83", - "GNO": "0x9c58bacc331c9aa871afd802db6379a98e80cedb", - "WETH": "0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1", - "USDT": "0x4ecaba5870353805a9f068101a40e0f32ed605c6", - "DAI": "0x44fa8e6f47987339850636f88629646662444217", - "UNI": "0x4537e328bf7e4efa29d05caea260d7fe26af9d74", - "MATIC": "0x7122d7661c4564b7c6cd4878b06766489a6028a2", - "WBTC": "0x8e5bbbb09ed1ebde8674cda39a0c169401db4252", - "ETHIX": "0xec3f3e6d7907acda3a7431abd230196cda3fbb19", - "SDAI": "0xaf204776c7245bF4147c2612BF6e5972Ee483701", - "XHOPR": "0xD4fdec44DB9D44B8f2b6d529620f9C0C7066A2c1", - "DAI_1": "0x678df3415fc31947da4324ec63212874be5a82f8", - "sDAI": "0xaf204776c7245bf4147c2612bf6e5972ee483701" - }, - "okexchain": { - "USDC": "0xc946daf81b08146b1c7a8da2a851ddf2b3eaaf85", - "WOKT": "0x8f8526dbfd6e38e3d8307702ca8469bae6c56c15", - "USDT": "0x382bb369d343125bfb2117af9c149795c6c65c50", - "BTCK": "0x54e4622dc504176b3bb432dccaf504569699a7ff", - "ETHK": "0xef71ca2ee68f45b9ad6f72fbdb33d707b872315c", - "OKB": "0xdf54b6c6195ea4d948d03bfd818d365cf175cfc2", - "CHE": "0x8179d97eb6488860d816e3ecafe694a4153f216c", - "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c" - }, - "heco": { - "WHT": "0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f", - "BETH": "0xb6f4c418514dd4680f76d5caa3bb42db4a893acb", - "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "DAI_HECO": "0x3d760a45d0887dfd89a2f5385a236b29cb46ed2a", - "USDC_HECO": "0x9362bbef4b8313a8aa9f0c9808b80577aa26b73b", - "COMP": "0xce0a5ca134fb59402b723412994b30e02f083842", - "DOGE": "0x40280e26a572745b1152a54d1d44f365daa51618", - "TUSD": "0x5ee41ab6edd38cdfb9f6b4e6cf7f75c87e170d98", - "XRP": "0xa2f3c2446a3e20049708838a779ff8782ce6645a", - "USDT": "0xa71edc38d189767582c38a3145b5873052c3e47a", - "ADA": "0x843af718ef25708765a8e0942f89edeae1d88df0" - }, - "hoo": { - "wHOO": "0x3eff9d389d13d6352bfb498bcf616ef9b1beac87" - }, - "harmony": { - "JEWEL": "0x72cb10c6bfa5624dd07ef608027e366bd690048f", - "MIS": "0xd74433b187cf0ba998ad9be3486b929c76815215", - "WONE": "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a", - "xJEWEL": "0xa9ce83507d872c5e1273e745abcfda849daa654f", - "AVAX": "0xb12c13e66ade1f72f71834f2fc5082db8c091358", - "VIPER": "0xea589e93ff18b1a1f1e9bac7ef3e86ab62addc79" - }, - "optimism": { - "OP": "0x4200000000000000000000000000000000000042", - "WETH": "0x121ab82b49b2bc4c7901ca46b8277962b4350204", - "WETH_1": "0x4200000000000000000000000000000000000006", - "WSTETH": "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - "BitANT": "0x5029c236320b8f15ef0a657054b84d90bfbeded3", - "FEI": "0x35d48a789904e9b15705977192e5d95e2af7f1d3", - "alUSD": "0xcb8fa9a76b8e203d8c3797bf438d8fb81ea3326a", - "FXS": "0x67ccea5bb16181e7b4109c9c2143c24a1c2205be", - "FRAX": "0x2e3d870790dc77a83dd1d18184acc7439a53f475", - "gOHM": "0x0b5740c6b4a97f90ef2f0220651cca420b868ffb", - "sUSD": "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9", - "sETH": "0xe405de8f52ba7559f9df3c368500b6e6ae6cee49", - "USDT": "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - "USDC": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "USDC_CIRCLE": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - "DAI": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "WBTC": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "weETH": "0x5a7facb970d094b6c7ff1df0ea68d99e6e73cbff", - "ezETH": "0x2416092f143378750bb29b79ed961ab195cceea5" - }, - "moonriver": { - "WMOVR": "0xe3c7487eb01c74b73b7184d198c7fbf46b34e5af", - "USDT": "0xb44a9b6905af7c801311e8f4e76932ee959c663c", - "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "ETH": "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", - "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "BEPRO": "0xcb4a593ce512d78162c58384f0b2fd6e802c2c47", - "MOVR": "0xffffffff98e37bf6a393504b5adc5b53b4d0ba11", - "BNC": "0xffffffff3646a00f78cadf8883c5a2791bfcddc4", - "KSM": "0xffffffffc6deec7fc8b11a2c8dde9a59f8c62efe" - }, - "moonbeam": { - "WGLMR": "0x5f6c5c2fb289db2228d159c69621215e354218d7", - "USDC": "0x6a2d262d56735dba19dd70682b39f6be9a931d98", - "STELLA": "0x0e358838ce72d5e61e0018a2ffac4bec5f4c88d2", - "BUSD": "0x692c57641fc054c2ad6551ccc6566eba599de1ba", - "GLINT": "0xcd3b51d98478d53f4515a306be565c6eebef1d58", - "FRAX": "0x322e86852e492a7ee17f28a78c663da38fb33bfb", - "MAI": "0xdfa46478f9e5ea86d57387849598dbfb2e964b02", - "USDT": "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c", - "WETH": "0x6959027f7850adf4916ff5fdc898d958819e5375", - "WBTC": "0xe57ebd2d67b462e9926e04a8e33f01cd0d64346d", - "MOVR": "0x1d4c2a246311bb9f827f4c768e277ff5787b7d7e", - "xcUSDT": "0xffffffffea09fb06d082fd1275cd48b191cbcd1d", - "BEPRO": "0x4edf8e0778967012d46968ceadb75436d0426f88", - "stDOT": "0xfa36fe1da08c89ec72ea1f0143a35bfd5daea108", - "VGLMR": "0xffffffff99dabe1a8de0ea22baa6fd48fde96f6c", - "FIL": "0xffffffffcd0ad0ea6576b7b285295c85e94cf4c1" - }, - "arbitrum": { - "WETH": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - "WBTC": "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - "DAI": "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - "USDC": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - "USDC_CIRCLE": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - "LINK": "0xf97f4df75117a78c1a5a0dbb814af92458539fb4", - "USDT": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - "ARBY": "0x09ad12552ec45f82be90b38dfe7b06332a680864", - "ARB": "0x912ce59144191c1204e64559fe8253a0e49e6548", - "MIM": "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", - "renBTC": "0xdbf31df14b66535af65aac99c32e9ea844e14501", - "DFL": "0x31635a2a3892daec7c399102676e344f55d20da7", - "FEI": "0x4a717522566c7a09fd2774ccedc5a8c43c5f9fd2", - "nUSD": "0x2913e812cf0dcca30fb28e6cac3d2dcff4497688", - "LPT": "0x289ba1701c2f088cf0faf8b3705246331cb8a839", - "APEX": "0x61a1ff55c5216b636a294a07d77c6f4df10d3b56", - "LIQD": "0x93c15cd7de26f07265f0272e0b831c5d7fab174f", - "fsGLP": "0x1addd80e6039594ee970e5872d247bf0414c8903", - "fGLP": "0x4e971a87900b931ff39d1aad67697f49835400b6", - "GMX": "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a", - "WSTETH": "0x5979D7b546E38E414F7E9822514be443A4800529", - "plvGLP": "0x5326e71ff593ecc2cf7acae5fe57582d6e74cff1", - "USDe": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34", - "FRAX": "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F", - "sUSDe": "0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2", - "ETHFI": "0x7189fb5B6504bbfF6a852B13B7B82a3c118fDc27", - "weETH": "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", - "GOVI": "0x07e49d5de43dda6162fa28d24d5935c151875283" - }, - "fuse": { - "WFUSE": "0x0be9e53fd7edac9f859882afdda116645287c629", - "USDC": "0x620fd5fa44be6af63715ef4e65ddfa0387ad13f5", - "WETH": "0xa722c13135930332eb3d749b2f0906559d2c5b99", - "WBTC": "0x33284f95ccb7B948d9D352e1439561CF83d8d00d", - "DAI": "0x94ba7a27c7a95863d1bdc7645ac2951e0cca06ba", - "USDT": "0xfadbbf8ce7d5b7041be672561bba99f79c532e10", - "KNC": "0x43b17749b246fd2a96de25d9e4184e27e09765b0", - "BUSD": "0x6a5f6a8121592becd6747a38d67451b310f7f156", - "null": "0x0000000000000000000000000000000000000000", - "USDC_2": "0x28c3d1cd466ba22f6cae51b1a4692a831696391a", - "USDT_2": "0x68c9736781e9316ebf5c3d49fe0c1f45d2d104cd", - "VOLT": "0x34ef2cc892a88415e9f02b91bfa9c91fc0be6bd4", - "FUSD_3": "0xce86a1cf3cff48139598de6bf9b1df2e0f79f86f", - "WETH_2": "0x5622f6dc93e08a8b717b149677930c38d5d50682", - "BNB": "0x6acb34b1df86e254b544189ec32cf737e2482058", - "BNB_2": "0x117c0419352ddb6fe575a67faa70315bdc4a93f3", - "USDT_3": "0x3695dd1d1d43b794c0b13eb8be8419eb3ac22bf7", - "USDC_3": "0xc6bc407706b7140ee8eef2f86f9504651b63e7f9", - "WETH_3": "0x2f6f07cdcf3588944bf4c42ac74ff24bf56e7590", - "WSTETH": "0x2931b47c2cee4febad348ba3d322cb4a17662c34", - "EZETH": "0x8bf40e191ac82bc09d946629655a6b8baf8f063e", - "ULTRAETHS": "0xb10ed6e3810c95a380e4f3e448af1755fa3368cf", - "DAI_2": "0x2502f488d481df4f5054330c71b95d93d41625c2 ", - "SFUSE": "0xb1dd0b683d9a56525cc096fbf5eec6e60fe79871" - }, - "evmos": { - "WEVMOS": "0xd4949664cd82660aae99bedc034a0dea8a0bd517", - "STEVMOS": "0x2c68d1d6ab986ff4640b51e1f14c716a076e44c4", - "STATOM": "0xb5124fa2b2cf92b2d469b249433ba1c96bdf536d", - "ATOM": "0xc5e00d3b04563950941f7137b5afa3a534f0d6d6", - "STRIDE": "0x8fa78ceb7f04118ec6d06aac37ca854691d8e963", - "axlRETH": "0xe60ce2dfa6d4ad37ade1dcb7ac4d6c3a093b3a7e", - "USDT_CEL": "0xb72a7567847aba28a2819b855d7fe679d4f59846", - "AXL_WETH": "0x50de24b3f0b3136c50fa8a3b8ebc8bd80a269ce5", - "USDC": "0x51e44ffad5c2b122c8b635671fcc8139dc636e82", - "tBTC": "0x8d395affc1767141387fff45af88a074614e7ccf", - "renBTC": "0xb1a8c961385b01c3aa782fba73e151465445d319", - "ceUSDC": "0xe46910336479f254723710d57e7b683f3315b22b", - "DAI": "0x63743acf2c7cfee65a5e356a4c4a005b586fc7aa", - "USDT": "0x7ff4a56b32ee13d7d4d405887e0ea37d61ed919e", - "ceUSDT": "0xb72a7567847aba28a2819b855d7fe679d4f59846", - "WETH": "0x5842c5532b61acf3227679a8b1bd0242a41752f2", - "WBTC": "0xf80699dc594e00ae7ba200c7533a07c1604a106d", - "FRAX": "0xe03494d0033687543a80c9b1ca7d6237f2ea8bd8", - "DIFF": "0x3f75ceabcdfed1aca03257dc6bdc0408e2b4b026", - "AXL_USDC": "0x15c3eb3b621d1bff62cba1c9536b7c1ae9149b57" - }, - "oasis": { - "WETH": "0x3223f17957ba502cbe71401d55a0db26e5f7c68f", - "ceUSDT": "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", - "USDT": "0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8", - "USDC": "0xe8a638b3b7565ee7c5eb9755e58552afc87b94dd", - "wROSE": "0x21c718c22d52d0f3a789b752d4c2fd5908a8a733", - "WROSE": "0x5c78a65ad6d0ec6618788b6e8e211f31729111ca", - "TULIP": "0x9e832cae5d19e7ff2f0d62881d1e33bb16ac9bdc", - "ceUSDC": "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c" - }, - "kcc": { - "BUSD": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "KUS": "0x4a81704d8c16d9fb0d7f61b747d0b5a272badf14", - "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "BNB": "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", - "DAI": "0xc9baa8cfdde8e328787e29b4b078abf2dadc2055", - "WBTC": "0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0", - "ETH": "0xf55af137a98607f7ed2efefa4cd2dfe70e4253b1", - "WKCS": "0x4446fc4eb47f2f6586f9faab68b3498f86c07521", - "MJT": "0x2ca48b4eea5a731c2b54e7c3944dbdb87c0cfb6f", - "USDT": "0x0039f574ee5cc39bdd162e9a88e3eb1f111baf48", - "USDC": "0x980a5afef3d17ad98635f6c5aebcbaeded3c3430", - "BTCK": "0xfa93c12cd345c658bc4644d1d4e1b9615952258c", - "sKCS": "0x00ee2d494258d6c5a30d6b6472a09b27121ef451" - }, - "metis": { - "Metis": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000", - "WMETIS": "0x71802e8f394bb9d05a1b8e9d0562917609fd7325", - "m_USDT": "0xbb06dca3ae6887fabf931640f67cab3e3a16f4dc", - "WETH": "0x420000000000000000000000000000000000000a", - "m_USDC": "0xea32a96608495e54156ae48931a7c20f0dcc1a21", - "BNB": "0x2692be44a6e38b698731fddf417d060f0d20a0cb", - "WBTC": "0xa5b55ab1daf0f8e1efc0eb1931a957fd89b918f4", - "BUSD": "0x12d84f1cfe870ca9c9df9785f8954341d7fbb249", - "rAVAX": "0xe253e0cea0cdd43d9628567d097052b33f98d611", - "rFTM": "0xa9109271abcf0c4106ab7366b4edb34405947eed", - "DAI": "0x4651b38e7ec14bb3db731369bfe5b08f2466bd0a", - "RELAY": "0xfe282af5f9eb59c30a3f78789eeffa704188bdd4", - "FTM": "0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8", - "MATIC": "0x4b9d2923d875edf43980bf5ddddede3fb20fc742", - "SYN": "0x67c10c397dd0ba417329543c1a40eb48aaa7cd00", - "BORING": "0x226d8bfb4da78ddc5bd8fd6c1532c58e88f9fd34", - "m_WBTC": "0x433e43047b95cb83517abd7c9978bdf7005e9938", - "m_AAVE": "0xd1f0a4e5444eed0fbcd6624dcef7ef33043e6168" - }, - "mezo": { - "MUSD": "0xdD468A1DDc392dcdbEf6db6e34E89AA338F9F186", - "BTC": "0x7b7C000000000000000000000000000000000000", - "MEZO": "0x7B7c000000000000000000000000000000000001", - "mUSDC": "0x04671C72Aab5AC02A03c1098314b1BB6B560c197", - "mUSDT": "0xeB5a5d39dE4Ea42C2Aa6A57EcA2894376683bB8E", - "mDAI": "0x1531b6e3d51BF80f634957dF81A990B92dA4b154", - "mFBTC": "0x812fcC0Bb8C207Fd8D6165a7a1173037F43B2dB8", - "mSolvBTC": "0xa10aD2570ea7b93d19fDae6Bd7189fF4929Bc747", - "mswBTC": "0x29fA8F46CBB9562b87773c8f50a7F9F27178261c", - "mT": "0xaaC423eDC4E3ee9ef81517e8093d52737165b71F", - "mUSDe": "0xdf6542260a9F768f07030E4895083F804241F4C4", - "mcbBTC": "0x6a7CD8E1384d49f502b4A4CE9aC9eb320835c5d7" - }, - "celo": { - "CELO": "0x471ece3750da237f93b8e339c536989b8978a438", - "cUSD": "0x765de816845861e75a25fca122bb6898b8b1282a", - "ETHIX": "0x9995cc8f20db5896943afc8ee0ba463259c931ed", - "mCELO": "0x7d00cd74ff385c955ea3d79e47bf06bd7386387d", - "mcUSD": "0x918146359264c492bd6934071c6bd31c854edbc3", - "mCEUR": "0xe273ad7ee11dcfaa87383ad5977ee1504ac07568", - "USDC": "0xcebA9300f2b948710d2653dD7B07f33A8B32118C", - "aaUSDC": "0xb70e0a782b058bfdb0d109a3599bec1f19328e36", - "asUSDC": "0xcd7d7ff64746c1909e44db8e95331f9316478817", - "axlUSDC": "0xeb466342c4d449bc9f53a865d5cb90586f405215", - "USDGLO": "0x4f604735c1cf31399c6e711d5962b2b3e0225ad3", - "cUSDC": "0x93db49be12b864019da9cb147ba75cdc0506190e", - "cUSDT": "0xcfffe0c89a779c09df3df5624f54cdf7ef5fdd5d", - "WBTC": "0xbaab46e28388d2779e6e31fd00cf0e5ad95e327b", - "WETH": "0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207", - "atUST": "0xed193c4e69f591e42398ef54dea65aa1bb02835c", - "DAI": "0x90ca507a5d4458a4c6c6249d186b6dcb02a5bccd", - "NCT": "0x02de4766c272abc10bc88c220d214a26960a7e92", - "cMCO2": "0x32a9fe697a32135bfd313a6ac28792dae4d9979d", - "USDT": "0x617f3112bf5397d0467d315cc709ef968d9ba546", - "STEUR": "0x004626A008B1aCdC4c74ab51644093b155e59A23", - "USDT_1": "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e" - }, - "boba": { - "WETH": "0xd203de32170130082896b4111edf825a4774c18e", - "BOBA": "0xa18bf3994c0cc6e3b63ac420308e5383f53120d7", - "USDC": "0x66a2a913e447d6b4bf33efbec43aaef87890fbbc", - "USDT": "0x5de1677344d3cb0d7d465c10b72a8f60699c062d", - "DAI": "0xf74195bb8a5cf652411867c5c2c5b8c2a402be35", - "BUSD": "0x461d52769884ca6235b685ef2040f47d30c94eb5", - "FRAX": "0x7562f525106f5d54e891e005867bf489b5988cd9", - "WBTC": "0xdc0486f8bf31df57a952bcd3c1d3e166e3d9ec8b", - "OMG": "0xe1e2ec9a85c607092668789581251115bcbd20de", - "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd" - }, - "findora": { - "WCET": "0xE6f8988d30614afE4F7124b76477Add79c665822", - "WBNB_b": "0xabc979788c7089b516b8f2f1b5ceabd2e27fd78b", - "WETH_b": "0x008a628826e9470337e0cd9c0c944143a83f32f3", - "USDT_b": "0x93edfa31d7ac69999e964dac9c25cd6402c75db3", - "USDC_b": "0xda33ef1a7b48bebbf579ee86dfa735a9529c4950", - "BUSD_b": "0xe80eb4a234f718edc5b76bb442653827d20ebb2d", - "WBTC_b": "0x07efa82e00e458ca3d53f2cd5b162e520f46d911", - "FRA": "0x0000000000000000000000000000000000001000", - "USDC_e": "0x2e8079e0fe49626af8716fc38adea6799065d7f7", - "USDT_e": "0x0632baa26299c9972ed4d9affa3fd057a72252ff" - }, - "milkomeda": { - "WADA": "0xae83571000af4499798d1e3b0fa0070eb3a3e3f9", - "USDT": "0xab58da63dfdd6b97eaab3c94165ef6f43d951fb2", - "WBTC": "0x48aeb7584ba26d3791f06fba360db435b3d7a174", - "BNB": "0x7f27352d5f83db87a5a3e00f4b07cc2138d8ee52", - "WETH": "0x5950f9b6ef36f3127ea66799e64d0ea1f5fdb9d1", - "DAI": "0x41eafc40cd5cb904157a10158f73ff2824dc1339", - "USDC": "0x5a955fddf055f2de3281d99718f5f1531744b102", - "sUSDC": "0x42110a5133f91b49e32b671db86e2c44edc13832", - "BUSD": "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", - "BLUES": "0x8c008bba2dd56b99f4a6ab276be3a478cb075f0c" - }, - "bittorrent": { - "USDT_t": "0xdb28719f7f938507dbfe4f0eae55668903d34a15", - "USDC_t": "0x935faa2fcec6ab81265b301a30467bbc804b43d3", - "WBTT": "0x23181f21dea5936e24163ffaba4ea3b316b57f3c", - "USDD_t": "0x17f235fd5974318e4e2a5e37919a209f7c37a6d1", - "USDC_e": "0xae17940943ba9440540940db0f1877f101d39e8b", - "TRX": "0xedf53026aea60f8f75fca25f8830b7e2d6200662", - "ETH": "0x1249c65afb11d179ffb3ce7d4eedd1d9b98ad006", - "USDT_e": "0xe887512ab8bc60bcc9224e1c3b5be68e26048b8b", - "KNC_e": "0xe467f79e9869757dd818dfb8535068120f6bcb97", - "WBTC_e": "0x9888221fe6b5a2ad4ce7266c7826d2ad74d40ccf", - "USDC_b": "0xca424b845497f7204d9301bd13ff87c0e2e86fcf", - "USDT_b": "0x9b5f27f6ea9bbd753ce3793a07cba3c74644330d" - }, - "klaytn": { - "WKLAY": "0x57d1a61e4fd09fbf16e35b04959e94dcf2032974", - "WKLAY_1": "0x19aac5f612f524b754ca7e7c41cbfa2e981a4432", - "BORA": "0x02cbe46fb8a1f579254a9b485788f2d86cad51aa", - "DAI": "0xcb2c7998696ef7a582dfd0aafadcd008d03e791a", - "USDC": "0x608792deb376cce1c9fa4d0e6b7b44f507cffa6a", - "USDT": "0x5c13e303a62fc5dedf5b52d66873f2e59fedadc2", - "pUSD": "0x168439b5eebe8c83db9eef44a0d76c6f54767ae4", - "KSD": "0x4fa62f1f404188ce860c8f0041d6ac3765a72e67", - "KASH": "0xce40569d65106c32550626822b91565643c07823", - "oBUSD": "0x210bc03f49052169d5588a52c317f71cf2078b85", - "WBTC": "0x981846be8d2d697f4dfef6689a161a25ffbab8f9", - "WETH": "0x98a8345bb9d3dda9d808ca1c9142a28f6b0430e1", - "KDAI": "0x5c74070fdea071359b86082bd9f9b3deaafbe32b", - "oUSDC": "0x754288077d0ff82af7a5317c7cb8c444d421d103", - "oUSDT": "0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167", - "oWBTC": "0x16d0e1fbd024c600ca0380a4c5d57ee7a2ecbf9c", - "oETH": "0x34d21b1e550d73cee41151c77f3c73359527a396", - "oXRP": "0x9eaefb09fe4aabfbe6b1ca316a3c36afc83a393f", - "KSP": "0xc6a2ad8cc6e4a7e08fc37cc5954be07d499e7654", - "WBNB": "0xac9c1e4787139af4c751b1c0fadfb513c44ed833", - "BUSD": "0xe2765f3721dab5f080cf14ace661529e1ab9ade7", - "WAVAX": "0x45830b92443a8f750247da2a76c85c70d0f1ebf3", - "SOL": "0xfaa03a2ac2d1b8481ec3ff44a0152ea818340e6d", - "aUSDC_Wormhole_": "0x2b72d65941e657c1305b65fa330ffdde7b397239", - "aUSDC": "0x61fbbfd5416c45f297a8e69ba113789c75f8841c", - "aUSDT": "0x2eadfda6d830547b5168ba88c13d24156a026ce5", - "aUSDT_Wormhole_": "0x98aedff55dcc2e7a7d1899b325d1680527dd2742", - "aDAI": "0x2ff5371dad5c6ef76d55213b7c5a519f6654ba17", - "aDAI_Wormhole_": "0xe9a88c33abf71c902f7581321d05e6516cbca761", - "USDK": "0xd2137fdf10bd9e4e850c17539eb24cfe28777753", - "NPT": "0xe06597d02a2c3aa7a9708de2cfa587b128bd3815", - "USDT_1": "0xd077a400968890eacc75cdc901f0356c943e4fdb", - "stKaia": "0x42952B873ed6f7f0A7E4992E2a9818E3A9001995" - }, - "nova": { - "NUSD": "0x1f5396f254ee25377a5c1b9c6bff5f44e9294fff" - }, - "aurora": { - "WETH": "0x274d83086c356e0cfc75933fbf838ca10a7e8274", - "USDC_e": "0xb12bfca5a55806aaf64e99521918a4bf0fc40802", - "USDT_e": "0x4988a896b1227218e4a686fde5eabdcabd91571f", - "NEAR": "0xc42c30ac6cc15fac9bd938618bcaa1a1fae8501d", - "AURORA": "0x8bec47865ade3b172a928df8f990bc7f2a3b9f79", - "FRAX": "0xda2585430fef327ad8ee44af8f1f989a2a91a3d2", - "nUSD": "0x07379565cd8b0cae7c60dc78e7f601b34af2a21c", - "sUSDC": "0x42cc1cbf253f89be6814a0f59f745b40b69b6220", - "sBUSD": "0xd5e98caeb396dabe5a102bb9256b552944e3401f" - }, - "dfk": { - "WJEWEL": "0xccb93dabd71c8dad03fc4ce5559dc3d89f67a260", - "xJEWEL": "0x77f2656d04e158f915bc22f07b779d94c1dc47ff", - "FTM": "0x2df041186c844f8a2e2b63f16145bc6ff7d23e25" - }, - "cronos": { - "WCRO": "0xca2503482e5d6d762b524978f400f03e38d5f962", - "WCRO_1": "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23", - "USDC": "0xc21223249ca28397b4b6541dffaecc539bff0c59", - "WBTC": "0x062e66477faf219f25d27dced647bf57c3107d52", - "SVN": "0x654bac3ec77d6db497892478f854cf6e8245dca9", - "USDT": "0x66e428c3f67a68878562e79a0234c1f83c208770", - "CRX": "0xe243ccab9e66e6cf1215376980811ddf1eb7f689", - "TUSD": "0x87efb3ec1576dec8ed47e58b832bedcd86ee186e", - "ALI": "0x45c135c1cdce8d25a3b729a28659561385c52671", - "AKT": "0x39a65a74dc5a778ff93d1765ea51f57bc49c81b3", - "SHIB": "0xbed48612bc69fa1cab67052b42a95fb30c1bcfee", - "ATOM": "0xb888d8dd1733d72681b30c00ee76bde93ae7aa93", - "ELON": "0x02dccaf514c98451320a9365c5b46c61d3246ff3" - }, - "velas": { - "WVLX": "0xe41c4324dcbd2926481101f8580d13930aff8a75", - "ETH": "0x85219708c49aa701871ad330a94ea0f41dff24ca", - "_MATIC": "0x6ab0b8c1a35f9f4ce107ccbd05049cb1dbd99ec5", - "WBTC": "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", - "_BNB": "0x2b8e9cd44c9e09d936149549a8d207c918ecb5c4", - "FTM": "0xc9b3aa6e91d70f4ca0988d643ca2bb93851f3de4", - "USDC": "0xe2c120f188ebd5389f71cf4d9c16d05b62a58993", - "USDT": "0x01445c31581c354b7338ac35693ab2001b50b9ae", - "BUSD": "0xc111c29a988ae0c0087d97b33c6e6766808a3bd3", - "BAMBOO": "0x300a8be53b4b5557f48620d578e7461e3b927dd0", - "_AVAX": "0x525bd1f949ffa2a0c5820f3b6fe61bb897466ff7", - "SWAPZ": "0x9b6fbf0ea23faf0d77b94d5699b44062e5e747ac", - "DAI": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "sVLX": "0xaadbaa6758fc00dec9b43a0364a372605d8f1883", - "VLX": "0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39", - "ETH_1": "0x380f73bad5e7396b260f737291ae5a8100baabcd", - "USDT_1": "0x4b773e1ae1baa4894e51cc1d1faf485c91b1012f", - "ADA": "0x3611fbfb06ffbcef9afb210f6ace86742e6c14a4" - }, - "telos": { - "WTLOS": "0xd102ce6a4db07d247fcc28f366a623df0938ca9e", - "WTLOS_1": "0xdc2393dc10734bf153153038943a5deb42b209cd", - "ETH": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "WBTC": "0xf390830df829cf22c53c8840554b98eafc5dcbc2", - "USDC": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "USDT": "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73", - "STLOS": "0xb4b01216a5bc8f1c8a33cd990a1239030e60c905", - "sBUSD": "0x017043607270ecbb440e20b0f0bc5e760818b3d8", - "syUSDC": "0xe6E5f3d264117E030C21920356641DbD5B3d660c" - }, - "reichain": { - "BNB": "0xf8ab4aaf70cef3f3659d3f466e35dc7ea10d4a5d", - "kBUSD": "0xdd2bb4e845bd97580020d8f9f58ec95bf549c3d9" - }, - "solana": { - "SOL": "So11111111111111111111111111111111111111112", - "BONK": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", - "USDC": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "USDT": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", - "pSOL": "9EaLkQrbjmbbuZG9Wdpo8qfNUEjHATJFSycEmw6f1rGX", - "APT": "6LNeTYMqtNm1pBFN8PfhQaoLyegAH8GD32WmHU9erXKN", - "DAI": "EjmyN6qEC1Tf1JxiG1ae7UTJhUxSwk1TCWNWqxWV4J6o", - "apUSDC": "eqKJTf1Do4MDPyKisMYqVaUFpkEFAs3riGF3ceDH2Ca", - "USDCbs": "FCqfQSujuPxy6V42UvafBhsysWtEq1vhjfMN1PUbgaxA", - "aeUSDC": "DdFPRnccQqLD4zCHrBqdY95D6hvw6PLWp9DEXj1fLCL9", - "aaUSDC": "8Yv9Jz4z7BUHP68dz8E8m3tMe6NKgpMUKn8KVqrPA6Fr", - "afUSDC": "Grk6b4UMRWkgyq4Y6S1BnNRF4hRgtnMFp7Sorkv6Ez4u", - "abUSDC": "8XSsNvaKU9FDhYWAv7Yc7qSNwuJSzVrXBNEk7AFiWF69", - "USDTbs": "8qJSyQprMC57TWKaYEmetUR3UUiTP2M3hXdcvFhkZdmv", - "abUSDT": "E77cpQ4VncGmcAXX16LHFFzNBEBb2U7Ar7LBmZNfCgwL", - "aeUSDT": "Bn113WT6rbdgwrm12UJtnmNqGqZjY4it2WoUQuQopFVn", - "aaUSDT": "FwEHs3kJEdMa2qZHv7SgzCiFXUQPEycEXksfBkwmS8gj", - "BUSDbs": "5RpUwQ8wtdPCZHhu6MERp2RGrpobsbZ6MH5dDHkUjs2", - "VSOL": "vSoLxydx6akxyMD9XEcPvGYNGq6Nn66oqVb3UkGkei7", - "PUMP": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", - "JUP": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "bSOL": "bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1", - "dSOL": "Dso1bDeDjCQxTrWHqUUi63oBvV7Mdm6WaobLbQ7gnPQ", - "JupSOL": "jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v", - "BNSOL": "BNso1VUJnh4zcfpZa6986Ea66P6TCp59hvtNJ8b1X85", - "bbSOL": "Bybit2vBJGhPF52GBdNaQfUJ6ZpThSgHBobjWZpLPb4B", - "JitoSOL": "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn" - }, - "soon": { - "USDT": "742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9", - "USDC": "ExYxyorY2x3h8gLcuypnHFQV3F36rmMkQVn7HHV8KjtA", - "DAI": "9ZqSLnPMAUnuegB1WTp1k17JgwFGKc925f8VqD2SC9K7", - "WBTC": "5YMPvTWDoZ7T7rNEsUR2EDFgZ96A96KrvEP2ia3Ph96h", - "WETH": "So11111111111111111111111111111111111111112", - "SOL": "ERFzpDteGNo8LTDKW1WwVGrkRMmA2y9WZHXNHxMA6BSV" - }, - "soon_base": { - "ETH": "So11111111111111111111111111111111111111112", - "USDT": "J87bysZjwfS3n6KR21cwbdPZVJWNSFcXpWF5kiChAwQH", - "USDC": "BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo", - "DAI": "FkvCG5DcuYCQ1BnPH4ZzTkCdk3VzutgyDAFBec4qAjhh", - "cbETH": "7e92r2doXdundQd4P85NANenQynDP2dawpmszKCZyRZh" - }, - "soon_bsc": { - "BNB": "So11111111111111111111111111111111111111112", - "USDT": "s8cRDxnp3VxjB6khRnGDdxv6QbCUPyY9Vn1bgSQQsnG", - "USDC": "5odzAHDpDETYhupMkc6kjiYen3K2nrf8oPmvqmsoNW4L", - "ETH": "H3xpFH1yN5E1zFdAoBrC9Y7m7RfJUeQNLvkHi8kNf9Qu" - }, - "camp": { - "WCAMP": "0x3bd5C81a8Adf3355078Dc5F73c41d3194B316690", - "ETH": "0xb55066f2793773B3784f8c57c415a8b5932B33Cd", - "USDC": "0x977fdEF62CE095Ae8750Fd3496730F24F60dea7a" - }, - "astar": { - "WASTR_1": "0xaeaaf0e2c81af264101b9129c00f4440ccf0f720", - "WASTR": "0xecc867de9f5090f55908aaa1352950b9eed390cd", - "WETH": "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c", - "WBTC": "0xad543f18cff85c77e140e3e5e3c3392f6ba9d5ca", - "BNB": "0x7f27352d5f83db87a5a3e00f4b07cc2138d8ee52", - "SDN": "0x75364d4f779d0bd0facd9a218c67f87dd9aff3b4", - "MATIC": "0xdd90e5e87a2081dcf0391920868ebc2ffb81a1af", - "USDC": "0x6a2d262d56735dba19dd70682b39f6be9a931d98", - "USDT": "0x3795c36e7d12a8c252a20c5a7b455f7c57b60283", - "nativeUSDT": "0xffffffff000000000000000000000001000007c0", - "DOT": "0xffffffffffffffffffffffffffffffffffffffff", - "DAI": "0x6de33698e9e9b787e09d3bd7771ef63557e148bb", - "MUUU": "0xc5bcac31cf55806646017395ad119af2441aee37", - "NIKA": "0x6df98e5fbff3041105cb986b9d44c572a43fcd22", - "oUSD": "0x29f6e49c6e3397c3a84f715885f9f233a441165c", - "KGL": "0x257f1a047948f73158dadd03eb84b34498bcdc60", - "LAY": "0xc4335b1b76fa6d52877b3046eca68f6e708a27dd", - "lUSDT": "0x430d50963d9635bbef5a2ff27bd0bddc26ed691f", - "nASTR": "0xe511ed88575c57767bafb72bfd10775413e3f2b0", - "lUSDC": "0xc404e12d3466accb625c67dbab2e1a8a457def3c", - "lDAI": "0x4dd9c468a44f3fef662c35c1e9a6108b70415c2c", - "aBaiUsdc": "0xdbd71969ac2583a9a20af3fb81fe9c20547f30f3", - "aDaiUsdc": "0x9914bff0437f914549c673b34808af6020e2b453", - "aBusdUsdc": "0x347e53263f8fb843ec605a1577ec7c8c0cac7a58", - "aUsdtUsdc": "0x02dac4898b2c2ca9d50ff8d6a7726166cf7bcfd0", - "BUSD": "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", - "lBUSD": "0xb7ab962c42a8bb443e0362f58a5a43814c573ffb", - "BAI": "0x733ebcc6df85f8266349defd0980f8ced9b45f35", - "ATID": "0x5271d85ce4241b310c0b34b7c2f1f036686a6d7c", - "JPYC": "0x431d5dff03120afa4bdf332c61a6e1766ef37bdb", - "aUSD": "0xffffffff00000000000000010000000000000001", - "vDOT": "0xFfFfFfff00000000000000010000000000000008", - "ASTR": "0xffffffff00000000000000010000000000000010" - }, - "astarzk": { - "WETH": "0xe9cc37904875b459fa5d0fe37680d36f1ed55e38", - "USDC": "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035", - "USDT": "0x1e4a5963abfd975d8c9021ce480b42188849d41d", - "WBTC": "0xea034fb02eb1808c2cc3adbc15f447b93cbe08e1", - "DAI": "0xc5015b9d9161dca7e18e32f6f25c4ad850731fd4", - "MATIC": "0xa2036f0538221a77a3937f1379699f44945018d0", - "wstETH": "0x5d8cff95d7a57c0bf50b30b43c7cc0d52825d4a9", - "weETH": "0xcd68dff4415358c35a28f96fd5bf7083b22de1d6" - }, - "cardano": { - "ADA": "ADA" - }, - "functionx": { - "WFX": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd", - "PUNDIX": "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", - "PURSE": "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", - "USDT": "0xeceeefcee421d8062ef8d6b4d814efe4dc898265" - }, - "clv": { - "WCLV": "0x1376c97c5c512d2d6f9173a9a3a016b6140b4536", - "WETH": "0xa1c3767c93e7b51ecb445fdbae1494dfc654e524", - "WBTC": "0x30bebbc0b6b357945ac30660e025c1532b9c7804", - "USDT": "0xf91193a62879279d6b8f209f89b6418e3c0e5cbf", - "USDC": "0x4a52f069cb00905d996a0d7b811d78e60b4cb09e" - }, - "tron": { - "null": "0x0000000000000000000000000000000000000000", - "USDT": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", - "USDC": "TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8", - "USDD": "TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn", - "JM": "TVHH59uHVpHzLDMFFpUgCx2dNAQqCzPhcR", - "JST": "TCFLL5dx5ZJdKnWuesXxi1VPwjLVmWZZy9", - "BTC": "TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9", - "LTC": "TR3DLthpnDdCGabhVDbD3VMsiJoCXY3bZd", - "DOGE": "THbVQp8kMjStKNnf2iCY6NEzThKMK5aBHg", - "SUN": "TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S", - "SUN_1": "TKkeiboTkxXKJpbmVFbv4a8ov5rAfRDMf9", - "WBTT": "TKfjV9RNKJJCqPvBtK8L7Knykh7DNWvnYt", - "BUSD": "TMz2SWatiAtZVVcH2ebpsbVtYwUPT9EdjH", - "WTRX": "TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR", - "BTT": "TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4", - "TUSD": "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", - "USDJ": "TMwFHYXLJaRUPeW6421aqXL4ZEzPRFGkGT", - "ETH": "THb4CqiFdwNHsWsQCs4JhzwjMWys4aqCbF" - }, - "lachain": { - "wLA": "0x3a898d596840c6b6b586d722bfadcc8c4761bf41" - }, - "theta": { - "WTFUEL": "0x4dc08b15ea0e10b96c41aec22fab934ba15c983e", - "TDROP": "0x1336739b05c7ab8a526d40dcc0d04a826b5f8b03" - }, - "zyx": { - "WZYX": "0xc9e1aea009b0bae9141f3dc7523fb42fd48c8656" - }, - "ubiq": { - "WUBQ": "0x1fa6a37c64804c0d797ba6bc1955e50068fbf362" - }, - "cosmos": { - "ATOM": "uatom" - }, - "terra2": { - "LUNA": "uluna", - "ASTRO": "terra1nsuqsk6kh58ulczatwev87ttq2z6r3pusulg9r24mfj2fvtzd4uq3exn26" - }, - "terra": { - "LUNA": "uluna", - "UST": "uusd" - }, - "crescent": { - "BCRE": "ubcre", - "CRE": "ucre" - }, - "bostrom": { - "BOOT": "boot" - }, - "orai": { - "ORAI": "orai", - "USDT": "orai12hzjxfh77wl572gdzct2fxv2arxcwh6gykc7qh" - }, - "juno": { - "JUNO": "ujuno" - }, - "osmosis": { - "ION": "uion", - "OSMO": "uosmo" - }, - "kujira": { - "KUJI": "ukuji", - "USK": "factory/kujira1qk00h5atutpsv900x202pxx42npjr9thg58dnqpa72f2p7m2luase444a7/uusk", - "FUZION": "factory/kujira1sc6a0347cc5q3k890jj0pf3ylx2s38rh4sza4t/ufuzn" - }, - "injective": { - "INJ": "inj", - "USDT": "factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q6zlut7gtkzknkk773jecujwsdkgq882akqksk" - }, - "comdex": { - "CMDX": "ucmdx", - "CMST": "ucmst" - }, - "near": { - "JUMBO": "token.jumbo_exchange.near", - "PARAS": "token.paras.near", - "LINA": "linear-protocol.near", - "PEMBROCK": "token.pembrock.near", - "BURROW": "token.burrow.near" - }, - "multivac": { - "WMTV": "0x8e321596267a4727746b2f48bc8736db5da26977", - "USDT": "0x2f9c74d3c42023c533437c9ee743d4a6329e78df", - "USDC": "0xea1199d50ee09fa8062fd9da3d55c6f90c1babd2" - }, - "tomochain": { - "WTOMO": "0xb1f66997a5760428d3a87d68b90bfe0ae64121cc", - "TOMO": "0xc054751bdbd24ae713ba3dc9bd9434abe2abc1ce", - "USDT": "0xbbbfab9dcc27771d21d027f37f36b67cc4a25db0", - "USDC": "0x20cc4574f263c54eb7ad630c9ac6d4d9068cf127", - "ETH": "0x9ede19ede2baf93d25fba4c8f58577e008b8f963", - "SAROS": "0xb786d9c8120d311b948cf1e5aa48d8fbacf477e2" - }, - "ethereumclassic": { - "WETC": "0x82A618305706B14e7bcf2592D4B9324A366b6dAd" - }, - "cube": { - "WCUBE": "0x9d3f61338d6eb394e378d28c1fd17d5909ac6591", - "ETH": "0x57eea49ec1087695274a9c4f341e414eb64328c2", - "BTC": "0x040ea5c10e6ba4badb6c433a365ccc4968697230", - "USDT": "0x79f1520268a20c879ef44d169a4e3812d223c6de", - "USDC": "0x00f0d8595797943c12605cd59bc0d9f63d750ccf", - "DAI": "0x3a1f6e3e6f26e92bb0d07841eb68f8e84f39751e", - "O3": "0xee9801669c6138e84bd50deb500827b776777d28" - }, - "elastos": { - "WELA": "0x517e9e5d46c1ea8ab6f78677d6114ef47f71f6c4", - "bnbBUSD": "0x9f1d0ed4e041c503bd487e5dc9fc935ab57f9a57" - }, - "energyweb": { - "WEWT": "0x6b3bd0478df0ec4984b168db0e12a539cc0c83cd" - }, - "milkomeda_a1": { - "WALGO": "0xaf86e6c5fd9daf53e5100ed38bab2572609fca27", - "USDC": "0x2421db204968a367cc2c866cd057fa754cb84edf", - "USDt": "0x32564ae38e5dbf316958ce25a6ad2a2249ebcc2d", - "USDT": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "BLUES": "0xc9baa8cfdde8e328787e29b4b078abf2dadc2055", - "BUSD": "0x8dc0dfa2aec0d4410c8c60c5f9cd0cd37b05a06a", - "DAI": "0x150d2421e09eea31beaa68b7a248700eeceda87a" - }, - "ultron": { - "wULX": "0x3a4f06431457de873b588846d139ec0d86275d54", - "wULX_1": "0xb1183357745d3fd7d291e42a2c4b478cdb5710c6", - "wETH": "0x2318bf5809a72aabadd15a3453a18e50bbd651cd", - "wBTC": "0xd2b86a80a8f30b83843e247a50ecdc8d843d87dd", - "BUSD": "0xc7cac85c1779d2b8ada94effff49a4754865e2e4", - "uUSDT": "0x97fdd294024f50c388e39e73f1705a35cfe87656", - "uUSDC": "0x3c4e0fded74876295ca36f62da289f69e3929cc4" - }, - "bitgert": { - "WBRISE": "0x0eb9036cbe0f052386f36170c6b07ef0a0e3f710", - "LUNG": "0xc3b730dd10a7e9a69204bdf6cb5a426e4f1f09e3", - "YPC": "0x11203a00a9134db8586381c4b2fca0816476b3fd" - }, - "echelon": { - "WECH": "0xadee5159f4f82a35b9068a6c810bdc6c599ba6a8" - }, - "rei": { - "WREI": "0x2545af3d8b11e295bb7aedd5826021ab54f71630", - "USDT": "0x988a631caf24e14bb77ee0f5ca881e8b5dcfcec7", - "WBTC": "0x8059e671be1e76f8db5155bf4520f86acfdc5561", - "fWETH": "0x5b07f2582d0cc26e400d56266aebb201c93560ed" - }, - "tombchain": { - "TOMB": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000", - "LIF3": "0x4200000000000000000000000000000000000108", - "FTM": "0x4200000000000000000000000000000000000006", - "TSHARE": "0x4200000000000000000000000000000000000101", - "USDC": "0x4200000000000000000000000000000000000100", - "LSHARE": "0x4200000000000000000000000000000000000109" - }, - "rsk": { - "WRBTC": "0x967f8799af07df1534d48a95a5c9febe92c53ae0", - "WRBTC1": "0x542fDA317318eBF1d3DEAf76E0b632741A7e677d", - "ETHs": "0x1d931bf8656d795e50ef6d639562c5bd8ac2b78f", - "rUSDT": "0xef213441a85df4d7acbdae0cf78004e1e486bb96" - }, - "polis": { - "WPOLIS": "0x6fc851b8d66116627fb1137b9d5fe4e2e1bea978" - }, - "kekchain": { - "wKEK": "0x54bd9d8d758ac3717b37b7dc726877a23aff1b89" - }, - "aptos": { - "APT": "0x1::aptos_coin::AptosCoin", - "USDC": "0x5e156f1207d0ebfa19a9eeff00d62a282278fb8719f4fab3a586a0a2c0fffbea::coin::T", - "USDT": "0xa2eda21a58856fda86451436513b867c97eecb4ba099da5775520e0f7492e852::coin::T", - "USDY": "0xcfea864b32833f157f042618bd845145256b1bf4c0da34a7013b76e42daa53cc::usdy::USDY", - "WBTC": "0xae478ff7d83ed072dbc5e264250e67ef58f57c99d89b447efd8a0a2e8b2be76e::coin::T", - "ETH": "0xcc8a89c8dce9693d354449f1f73e60e14e347417854f029db5bc8e7454008abb::coin::T", - "USDC_1": "0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T", - "USDA": "0x1000000fa32d122c18a6a31c009ce5e71674f22d06a581bb0a15575e6addadcc::usda::USDA", - "USDC_2": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC", - "USDT_2": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT", - "WETH": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::WETH", - "SOL": "0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T", - "ST_APT": "0x84d7aeef42d38a5ffc3ccef853e1b82e4958659d16a7de736a29c55fbbeb0114::staked_aptos_coin::StakedAptosCoin", - "ST_APT2": "0xd11107bdf0d6d7040c6c0bfbdecb6545191fdf13e8d8d259952f53e1713f61b5::staked_coin::StakedAptos", - "CELER_BNB": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::BnbCoin", - "CELER_BUSD": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::BusdCoin", - "CELER_USDC": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::UsdcCoin", - "CELER_USDT": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::UsdtCoin", - "CELER_DAI": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::DaiCoin", - "CELER_ETH": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::WethCoin", - "CELER_WBTC": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::WbtcCoin", - "amAPT": "0x111ae3e5bc816a5e63c2da97d0aa3886519e0cd5e4b046659fa35796bd11542a::amapt_token::AmnisApt", - "zWBTC": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::WBTC", - "zWETH": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::WETH", - "USDt": "0x357b0b74bc833e95a115ad22604854d6b0fca151cecd94111770e5d6ffc9dc2b", - "USDC_3": "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b", - "MOON": "0xd71e041f0d9c871e68604699aa109ead5643ced548f9d216ddb89702968e5458::moon_coin::MoonCoin", - "CELL": "0x2ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12", - "stApt": "0x111ae3e5bc816a5e63c2da97d0aa3886519e0cd5e4b046659fa35796bd11542a::stapt_token::StakedApt", - "zUSDT": "0x50788befc1107c0cc4473848a92e5c783c635866ce3c98de71d2eeb7d2a34f85::usdt_coin::USDTether" - }, - "dogechain": { - "WWDOGE": "0xb7ddc6414bf4f5515b52d8bdd69973ae205ff101", - "DC": "0x7b4328c127b85369d9f82ca0503b000d09cf9180", - "USDC": "0x85c2d3bebffd83025910985389ab8ad655abc946", - "DAI": "0xb3306f03595490e5cc3a1b1704a5a158d3436ffc", - "ETH": "0xb44a9b6905af7c801311e8f4e76932ee959c663c", - "USDT": "0x7f8e71dd5a7e445725f0ef94c7f01806299e877a", - "WBTC": "0xd0c6179c43c00221915f1a61f8ec06a5aa32f9ec", - "FRAX": "0x10d70831f9c3c11c5fe683b2f1be334503880db6", - "BUSD": "0x332730a4f6e03d9c55829435f10360e13cfa41ff", - "BNB": "0x1fc532187b4848d2f9c564531b776a4f8e11201d", - "QUICK": "0xb12c13e66ade1f72f71834f2fc5082db8c091358", - "MATIC": "0xdc42728b0ea910349ed3c6e1c9dc06b5fb591f98", - "WETH": "0x9f4614e4ea4a0d7c4b1f946057ec030bee416cbb" - }, - "canto": { - "WCANTO": "0x826551890dc65655a0aceca109ab11abdbd7a07b", - "USDC": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd", - "USDT": "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", - "NOTE": "0x4e71a2e537b7f9d9413d3991d37958c0b5e1e503", - "ETH": "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", - "ATOM": "0xeceeefcee421d8062ef8d6b4d814efe4dc898265", - "cINU": "0x7264610a66eca758a8ce95cf11ff5741e1fd0455" - }, - "ontology_evm": { - "WONG": "0xd8bc24cfd45452ef2c8bc7618e32330b61f2691b" - }, - "algorand": { - "XET": "283820866", - "SMILE": "300208676", - "ALGF": "463554836", - "GOMINT": "441139422", - "STKE": "511484048", - "YLDY": "226701642", - "COSG": "571576867", - "PBTC": "744665252", - "USDC": "31566704", - "HDL": "137594422", - "VEST": "700965019", - "CCT": "657291910", - "BUY": "137020565", - "STBL": "841126810", - "STBL_1": "465865291", - "GOBTC": "386192725", - "ARCC": "163650", - "ZONE": "444035862", - "PLANETS": "27165954", - "GALGO": "793124631", - "GOETH": "386195940", - "OPUL": "287867876", - "B3X": "663905154", - "OCTO": "559219992", - "MCAU": "6547014", - "RIO": "2751733", - "BOARD": "342889824", - "ALGO": "1", - "XGLI": "607591690", - "NXS": "403499324", - "ADAO": "692085161", - "DEFLY": "470842789", - "CHOICE": "297995609", - "USDT": "312769", - "GARD": "684649988" - }, - "shiden": { - "WSDN": "0x0f933dc137d21ca519ae4c7e93f87a4c8ef365ef", - "USDC": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "USDT": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "JPYC": "0x735abe48e8782948a37c7765ecb76b98cde97b0f", - "STND": "0x722377a047e89ca735f09eb7cccab780943c4cb4", - "ETH": "0x765277eebeca2e31912c9946eae1021199b39c61", - "BNB": "0x332730a4f6e03d9c55829435f10360e13cfa41ff", - "BUSD": "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a" - }, - "tezos": { - "USDtz": "KT1LN4LPSqTMS7Sd2CJw4bbDGRkMv2t68Fy9", - "CTez": "KT1SjXiUX63QvdNMcM2m492f7kuf8JxXRLp4", - "UP": "KT1TgmD7kXQzofpuc9VbTRMdZCS2e6JDuTtc", - "KALAM": "KT1A5P4ejnLix13jtadsfV9GCnXLMNnab8UT", - "wWBTC": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-19", - "wMATIC": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-11", - "MYH": "KT1BB1uMwVvJ1M3vVHXWALs1RWdgTp1rnXTR", - "kUSD": "KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV", - "USDT_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-3", - "PXL": "KT1F1mn2jbqQCJcsNgYKVAQjvenecNMY2oPK", - "WBTC_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-1", - "kDAO": "KT1JkoE42rrMBP9b2oDhbx6EUr26GcySZMUH", - "STKR": "KT1AEfeckNbdEYwaMKkytBwPJPycz7jdSGea", - "wXTZ": "KT1VYsVfmobT7rsMVivvZ4J8i3bPiqz12NaH", - "MATIC_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-4", - "hDAO": "KT1AFA2mwNUMNd4SsujE1YYp29vd8BZejyKW", - "WRAP": "KT1LRboPna9yQY9BrjtQYDS1DVxhKESK4VVd", - "wBUSD": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-1", - "USDt": "KT1XnTn74bUtxHfDtBmm2bGZAQfhPbvKWR8o", - "ETHtz": "KT19at7rQUvyjxnZ2fBv7D9zc8rkyG7gAoU8", - "wUSDC": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-17", - "QUIPU": "KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb", - "wWETH": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-20", - "USDC_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-2", - "PLENTY": "KT1GRSvLoikDsXujKgZPsGLX8k8VvR2Tq95b", - "wUSDT": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-18", - "wDAI": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-5", - "SMAK": "KT1TwzD6zV3WeJ39ukuqxcfK2fJCnhvrdN1X", - "LINK_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-5", - "DOGA": "KT1Ha4yFVeyzw6KRAdkzq6TxDHB97KG4pZe8", - "WETH_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY", - "INSTA": "KT19y6R8x53uDKiM46ahgguS6Tjqhdj2rSzZ", - "GIF": "KT1XTxpQvo7oRCqp85LikEZgAZ22uDxhbWJv", - "UNO": "KT1ErKVqEhG9jxXgUG2KGLW3bNM7zXHX8SDF", - "uUSD": "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW", - "YOU": "KT1Xobej4mc6XgEjDoJoHtTKgbD1ELMvcQuL", - "USDS": "KT1REEb5VxWRjcHm5GzDMwErMmNFftsE5Gpf", - "tzBTC": "KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn", - "BUSD": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-7", - "DAI": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-6", - "PAUL": "KT19DUSZw7mfeEATrbWVPHRrWNVbNnmfFAE6", - "XTZ": "tezos", - "USDT_cg": "tether", - "XTZ_1": "KT1UpeXdK6AJbX58GJ92pLZVCucn2DR8Nu4b", - "XTZ_2": "KT1PnUZCp3u2KzWr93pn4DD7HAJnm3rWVrgn", - "LINK": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-10", - "AAVE": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ", - "WBTC": "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW-2", - "UUSD": "KT1XRPEPXBZK25R3HTZP2O1X7XDMMMFOCKNW", - "ETH": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" - }, - "hpb": { - "WHPB": "0xbe05ac1fb417c9ea435b37a9cecd39bc70359d31" - }, - "godwoken": { - "WCKB": "0xe934f463d026d97f6ce0a10215d0ac4224f0a930", - "USDC": "0xc3b946c53e2e62200515d284249f2a91d9df7954", - "USDC_bsc": "0xa21b19d660917c1de263ad040ba552737cfcef50", - "USDT": "0x07a388453944bb54be709ae505f14aeb5d5cbb2c", - "USDT_bsc": "0x5c30d9396a97f2279737e63b2bf64cc823046591", - "WBTC_eth": "0x7818fa4c71dc3b60049fb0b6066f18ff8c720f33", - "BTCB_bsc": "0x3f8d2b24c6fa7b190f368c3701ffcb2bd919af37" - }, - "godwoken_v1": { - "WCKB": "0xc296f806d15e97243a08334256c705ba5c5754cd", - "pCKB": "0x7538c85cae4e4673253ffd2568c1f1b48a71558a", - "ETH": "0x9e858a7aaedf9fdb1026ab1f77f627be2791e98a", - "BNB_bsc": "0xbadb9b25150ee75bb794198658a4d0448e43e528", - "WBTC_eth": "0x82455018f2c32943b3f12f4e59d0da2faf2257ef", - "BTCB_bsc": "0xef2439e020509259fa603c34b35a81ffe676cfb4", - "WETH": "0xb66954619363145a05ef835547449eb9050d82f6", - "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "USDC_bsc": "0xfa307cfdea89dc197a346c338a98ac85d517af6e", - "USDT_bsc": "0xdff2facdfe47c1d5b51f18231f900949f1d5988f", - "DAI": "0x765277eebeca2e31912c9946eae1021199b39c61", - "USDT": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "BUSD": "0xcd7bc9fc617a4f82ec1c8359d1c8610b90e3b44c", - "WBTC": "0xb44a9b6905af7c801311e8f4e76932ee959c663c" - }, - "waves": { - "BNB": "5UYBPpq4WoU5n4MwpFkgJnW3Fq4B1u3ukpK33ik4QerR", - "BUSD": "8DLiYZjo3UUaRBTHU7Ayoqg4ihwb6YH1AfXrrhdjQ7K1", - "SWOP": "Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT", - "MKR": "E4rss7qLUcawCvD2uMrbLeTMPGkX15kS3okWCbUhLNKL", - "VIRES": "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p", - "ENJ": "EfwRV6MuUCGgAUchdsF4dDFnSpKrDW3UYshdaDy4VBeB", - "BTC": "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS", - "DAI": "8zUYbdB8Q6mDhpcXYv52ji8ycfj4SDX4gJXS7YY3dA4R", - "WEST": "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8", - "FTM": "4GZH8rk5vDmMXJ81Xqfm3ovFaczqMnQ11r7aELiNxWBV", - "ATOM": "47cyc68FWJszCWEwMWVsD9CadjS2M1XtgANuRGbEW8UH", - "CRO": "HLckRcg7hJ3Syf3PrGftFijKqQMJipf81WY3fwvHCJbe", - "YFI": "BLRxWVJWaVuR2CsCoTvTw2bDZ3sQLeTbCofcJv7dP5J4", - "APE": "2GBgdhqMjUPqreqPziXvZFSmDiQVrxNuGxR1z7ZVsm4Z", - "CRV": "3KhNcHo4We1G5EWps7b1e5DTdLgWDzctc8S6ynu37KAb", - "LINK": "2bbGhKo5C31iEiB4CwGuqMYwjD7gCA9eXmm51fe2v8vT", - "AAVE": "7TMu26hAs7B2oW6c5sfx45KSZT7GQA3TZNYuCav8Dcqt", - "NSBT": "6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g", - "WBTC": "5zoDNRdwVXwe7DveruJGxuJnqo7SYhveDeKb8ggAuC34", - "MANA": "Aug9ccbPApb1hxXSue8fHuvbyMf1FV1BYBtLUuS5LZnU", - "SHIB": "GVxGPBtgVWMW1wHiFnfaCakbJ6sKgZgowJgW5Dqrd7JH", - "FTT": "2Fh9m3dNQXycHdnytEaETN3P1gDT7ij5U4HjMqQBeaqN", - "UNI": "4YmM7mj3Av4DPvpNpbtK4jHbpzYDcZuY6UUnYpqTbzLj", - "SAND": "8YyrMfuBdZ5gtMWkynLTveRvGb6LJ4Aff9rpz46UUMW", - "MATIC": "HcHacFH51pY91zjJa3ZiUVWBww54LnsL4EP3s7hVGo9L", - "GRT": "A1uMqYTzBdakuSNDv7CruWXP8mRZ4EkHwmip2RCauyZH", - "ENNO": "7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg", - "ETH": "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu", - "LTC": "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk", - "WX": "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on", - "AXS": "ATQdLbehsMrmHZLNFhUm1r6s14NBT5JCFcSJGpaMrkAr", - "USDN": "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", - "UST": "2thtesXvnVMcCnih9iZbJL3d2NQZMfzENJo8YFj6r5jU", - "LUNA": "6QUVF8nVVVvM7do7JT2eJ5o5ehnZgXUg13ysiB9JiQrZ", - "WAVES": "WAVES" - }, - "songbird": { - "WSGB": "0x02f0826ef6ad107cfc861152b32b52fd11bab9ed", - "CAND": "0x70ad7172ef0b131a1428d0c1f66457eb041f2176", - "SFIN": "0x0D94e59332732D18CF3a3D457A8886A2AE29eA1B", - "EXFI": "0xc348f894d0e939fe72c467156e6d7dcbd6f16e21" - }, - "energi": { - "WNRG": "0xa55f26319462355474a9f2c8790860776a329aa4" - }, - "nahmii": { - "ETH": "0x4200000000000000000000000000000000000006", - "NII": "0x595dba438a1bf109953f945437c1584319515d88" - }, - "curio": { - "CGT": "0x134ebab7883dfa9d04d20674dd8a8a995fb40ced" - }, - "gochain": { - "WGO": "0xcc237fa0a4b80ba47992d102352572db7b96a6b5", - "USDC": "0x97a19ad887262d7eca45515814cdef75acc4f713", - "FAST": "0x67bbb47f6942486184f08a671155fcfa6cad8d71" - }, - "smartbch": { - "WBCH": "0x3743ec0673453e5009310c727ba4eaf7b3a1cc04", - "LAW": "0x0b00366fbf7037e9d75e4a569ab27dab84759302", - "flexUSD": "0x7b2b3c5308ab5b2a1d9a94d20d35ccdf61e05b72", - "DAIQUIRI": "0x24d8d5cbc14fa6a740c3375733f0287188f8df3b", - "bcUSDT": "0xbc2f884680c95a02cea099da2f524b366d9028ba", - "_CATS": "0x265bd28d79400d55a1665707fa14a72978fa6043" - }, - "palm": { - "DAI": "0x4c1f6fcbd233241bf2f4d02811e3bf8429bc27b8", - "WETH": "0x726138359c17f1e56ba8c4f737a7caf724f6010b" - }, - "syscoin": { - "WSYS": "0xd3e822f3ef011ca5f17d82c956d952d8d7c3a1bb", - "USDC": "0x2bf9b864cdc97b08b6d79ad4663e71b8ab65c45c", - "ETH": "0x7c598c96d02398d89fbcb9d41eab3df0c16f227d", - "USDT": "0x922d641a426dcffaef11680e5358f34d97d112e1" - }, - "rollux": { - "WSYS": "0x4200000000000000000000000000000000000006", - "USDC": "0x368433cac2a0b8d76e64681a9835502a1f2a8a30", - "WETH": "0xaa1c53afd099e415208f47fcfa2c880f659e6904", - "USDT": "0x28c9c7fb3fe3104d2116af26cc8ef7905547349c", - "WBTC": "0x2a4dc2e946b92ab4a1f7d62844eb237788f9056c", - "ETH": "0xaa1c53afd099e415208f47fcfa2c880f659e6904", - "BTC": "0x2a4dc2e946b92ab4a1f7d62844eb237788f9056c" - }, - "vision": { - "USDT": "0x1db6cdc620388a0b6046b20cd59503a0839adcff", - "VBTC": "0x4dE4B92C12dD4584873e72447573382C41da5597", - "VETH": "0x9261Bb697FE632dd4746c78406E955123085Bf4C", - "VBNB": "0xf6515Ce2ab3482C84Daaef961793bdFa3266b8ad", - "WVS": "0x79ffbc4fff98b821d59dbd7b33f91a2783006b6f" - }, - "kava": { - "WKAVA": "0xc86c7c0efbd6a49b35e8714c5f59d99de09a225b", - "USDC": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "USDT": "0xb44a9b6905af7c801311e8f4e76932ee959c663c", - "USDt": "0x919C1c267BC06a7039e03fcc2eF738525769109c", - "WBTC": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "DAI": "0x765277eebeca2e31912c9946eae1021199b39c61", - "SUSHI": "0x7c598c96d02398d89fbcb9d41eab3df0c16f227d", - "ETH": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "BUSD": "0x332730a4f6e03d9c55829435f10360e13cfa41ff", - "BNB": "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a", - "WETH": "0xc13791da84f43525189456cfe2026c60d3b7f706", - "axlUSDC": "0xeb466342c4d449bc9f53a865d5cb90586f405215", - "axlUSDT": "0x7f5373ae26c3e8ffc4c77b7255df7ec1a9af52a6", - "axlDAI": "0x5c7e299cf531eb66f2a1df637d37abb78e6200c7", - "USX": "0xdb0e1e86b01c4ad25241b1843e407efc4d615248" - }, - "sx": { - "WSX": "0xaa99be3356a11ee92c3f099bd7a038399633566f", - "WETH": "0xa173954cc4b1810c0dbdb007522adbc182dab380", - "USDC": "0xe2aa35c2039bd0ff196a6ef99523cc0d3972ae3e", - "WMATIC": "0xfa6f64dfbad14e6883321c2f756f5b22ff658f9c", - "DAI": "0x53813cd4acd7145a716b4686b195511fa93e4cb7", - "SHARK": "0x7dc31a2fcbfbad1ed4519111fd33f78316bcbc81" - }, - "meter": { - "MTRG": "0x228ebbee999c6a7ad74a6130e81b12f9fe237ba3", - "WMTR": "0x160361ce13ec33c993b5cca8f62b6864943eb083", - "USDC_eth": "0xd86e243fc0007e6226b07c9a50c9d70d78299eb5", - "MTR": "0x6abaedab0ba368f1df52d857f24154cc76c8c972", - "BUSD_bsc": "0x24aa189dfaa76c671c279262f94434770f557c35", - "TFUEL": "0x75fd6f7edcc5e7a8100ead3d29ccd844153ef0f3", - "USDT_eth": "0x5fa41671c48e3c951afc30816947126ccc8c162e" - }, - "callisto": { - "WCLO": "0xf5ad6f6edec824c7fd54a66d241a227f6503ad3a", - "BUSDT": "0xbf6c50889d3a620eb42c0f188b65ade90de958c4", - "ccETC": "0xccc766f97629a4e14b3af8c91ec54f0b5664a69f", - "ccETH": "0xcc208c32cc6919af5d8026dab7a3ec7a57cd1796", - "ccBNB": "0xccde29903e621ca12df33bb0ad9d1add7261ace9", - "SOY": "0x9fae2529863bd691b4a7171bdfcf33c7ebb10a65" - }, - "thundercore": { - "null": "0x0000000000000000000000000000000000000000", - "WTT": "0x413cefea29f2d07b8f2acfa69d92466b9535f717", - "TT_USDT": "0x4f3c8e20942461e2c3bdd8311ac57b0c222f2b82", - "TT_ETH": "0x6576bb918709906dcbfdceae4bb1e6df7c8a1077", - "TT_USDC": "0x22e89898a04eaf43379beb70bf4e38b1faf8a31e", - "TT_BUSD": "0xbeb0131d95ac3f03fd15894d0ade5dbf7451d171", - "veTT": "0xc3c857a9e5be042c8acf4f2827aa053e93b5d039" - }, - "conflux": { - "WCFX": "0x14b2d3bc65e74dae1030eafd8ac30c533c976a9b", - "USDC": "0x6963efed0ab40f6c3d7bda44a05dcf1437c44372", - "USDT": "0xfe97e85d13abd9c1c33384e796f10b73905637ce", - "WBTC": "0x1f545487c62e5acfea45dcadd9c627361d1616d8", - "ETH": "0xa47f43de2f9623acb395ca4905746496d2014d57" - }, - "muuchain": { - "WMUU": "0x875358f6194d7c622d6355455f3137cceb2955c4" - }, - "iotex": { - "WIOTX": "0xa00744882684c3e4747faefd68d283ea44099d03", - "ELK": "0xe1ce1c0fa22ec693baca6f5076bcdc4d0183de1c", - "ioUSDT": "0x6fbcdc1169b5130c59e72e51ed68a84841c98cd1", - "USDT_matic": "0x3cdb7c48e70b854ed2fa392e21687501d84b3afc", - "ioUSDC": "0x3b2bf2b523f54c4e454f08aa286d03115aff326c", - "USDC_matic": "0xc04da3a99d17135857bb937d2fbb321d3b6c6a81", - "USDT_b": "0x42c9255d5e522e83b16ea11a3ba04c2d3afca079", - "USDC_b": "0x037346e5a5722957ac2cab6ceb8c74fc18cea91d", - "BUSD_bsc": "0x84abcb2832be606341a50128aeb1db43aa017449", - "ioBUSD": "0xacee9b11cd4b3f57e58880277ac72c8c41abe4e4", - "DAI_matic": "0x62a9d987cbf4c45a550deed5b57b200d7a319632", - "ioDAI": "0x1cbad85aa66ff3c12dc84c5881886eeb29c1bb9b", - "anyXIM": "0xd6070ae98b8069de6b494332d1a1a81b6179d960", - "XIM": "0xec690cdd448e3cbb51ed135df72301c3265a8f80", - "CYC": "0x4d7b88403aa2f502bf289584160db01ca442426c", - "ioETH": "0x0258866edaf84d6081df17660357ab20a07d0c80", - "ioWBTC": "0xc7b93720f73b037394ce00f954f849ed484a3dea", - "GFT": "0x17df9fbfc1cdab0f90eddc318c4f6fcada730cf2", - "METX": "0x4752456e00def6025c77b55a88a2f8a1701f92f9", - "iMAGIC": "0x490cfbf9b9c43633ddd1968d062996227ef438a9", - "BNB_bsc": "0x97e6c48867fdc391a8dfe9d169ecd005d1d90283", - "ZOOM": "0x86702a7f8898b172de396eb304d7d81207127915", - "WMATIC": "0x8e66c0d6b70c0b23d39f4b21a1eac52bba8ed89a", - "CIOTX": "0x99b2b0efb56e62e36960c20cd5ca8ec6abd5557a" - }, - "ronin": { - "WRON": "0xe514d9deb7966c8be0ca922de8a064264ea6bcd4", - "AXS": "0x97a9107c1793bc407d6f527b77e7fff4d812bece", - "SLP": "0xa8754b9fa15fc18bb59458815510e40a12cd2014", - "WETH": "0xc99a6a985ed2cac1ef41640596c5a5f9f4e19ef5", - "USDC": "0x0b7007c13325c48911f73a2dad5fa5dcbf808adc", - "LRON": "0xcad9e7aa2c3ef07bad0a7b69f97d059d8f36edd2" - }, - "arbitrum_nova": { - "WETH": "0x722e8bdd2ce80a4422e880164f2079488e115365", - "DAI": "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - "USDT": "0x52484e1ab2e2b22420a25c20fa49e173a26202cd", - "USDC": "0x750ba8b76187092b0d1e87e28daaf484d1b5273b" - }, - "ethpow": { - "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "BHC": "0x0c9f28fbdfd79f7c00b805d8c63d053c146d282c", - "WETHW": "0x7bf88d2c0e32de92cdaf2d43ccdc23e8edfd5990", - "USDC": "0x25de68ef588cb0c2c8f3537861e828ae699cd0db", - "USDT": "0x2ad7868ca212135c6119fd7ad1ce51cfc5702892", - "WBTC": "0x4bbd68d8b1f25ae7b460e3347c637fe9e7338e0c", - "ETH": "0x34a9c05b638020a07bb153bf624c8763bf8b4a86", - "DAI": "0x0b35d852dcb8b59eb1e8d3182ebad4e96e2df8f0", - "BNB": "0xbd1563046a90f18127fd39f3481fd8d6ab22877f", - "BUSD": "0xf61eb8999f2f222f425d41da4c2ff4b6d8320c87" - }, - "xdc": { - "WXDC": "0x951857744785e80e2de051c32ee7b25f9c458c42", - "USDC.e": "0x2a8e898b6242355c290e1f4fc966b8788729a4d4", - "xUSDT": "0xd4b5f10d61916bd6e0860144a91ac658de8a1437", - "XSP": "0x36726235dadbdb4658d33e62a249dca7c4b2bc68", - "FXD": "0x49d3f7543335cf38fa10889ccff10207e22110b5" - }, - "kardia": { - "WKAI": "0xaf984e23eaa3e7967f3c5e007fbe397d8566d23d" - }, - "empire": { - "USDC": "0xc61a71c75ed4742dcae74b8cac27a37d46fc6751" - }, - "boba_bnb": { - "USDC": "0x9f98f9f312d23d078061962837042b8918e6aff2", - "BOBA": "0x4200000000000000000000000000000000000006", - "BNB": "0x4200000000000000000000000000000000000023" - }, - "boba_avax": { - "USDC_e": "0x126969743a6d300bab08f303f104f0f7dbafbe20", - "WBOBA": "0x26c319b7b2cf823365414d082698c8ac90cbba63", - "AVAX": "0x4200000000000000000000000000000000000023" - }, - "omax": { - "WOMAX": "0xfebabc6a9b2ec46d6357879b8bf39b593f11a5b9", - "OMAX": "0x373e4b4E4D328927bc398A9B50e0082C6f91B7bb" - }, - "wemix": { - "WWEMIX": "0x7d72b22a74a216af4a002a1095c8c707d6ec1c5f", - "WEMIX_": "0x8e81fcc2d4a3baa0ee9044e0d7e36f59c9bba9c1", - "KLAY": "0x461d52769884ca6235b685ef2040f47d30c94eb5", - "ETH": "0x765277EebeCA2e31912C9946eAe1021199B39C61", - "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d" - }, - "tlchain": { - "WTLC": "0x422b6cdf97c750a0edcddc39c88f25379e59e96e" - }, - "zeniq": { - "WZENIQ": "0x74dc1c4ec10abe9f5c8a3eabf1a90b97cdc3ead8" - }, - "dexit": { - "WDXT": "0x414b8baf9950c87804cf7e23bb43a58ae7e1e202" - }, - "step": { - "WFITFI": "0xb58a9d5920af6ac1a9522b0b10f55df16686d1b6", - "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "USDT": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "ETH": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "BNB": "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73" - }, - "flare": { - "WFLR": "0x1d80c49bbbcd1c0911346656b529df9e5c2f783d" - }, - "ibc": { - "JUNO": "EFF323CC632EC4F747C61BCE238A758EFDB7699C3226565F7C20DA06509D59A5", - "JUNO_1": "167E3D88D71B7D2F6308D3EF93FC3DD51932B2D9672D72B71418F61CBC5F5717", - "AXL_2": "C0E66D1C81D8AAF0E6896E05190FDFBC222367148F86AC3EA679C28327A763CD", - "STRD": "3FDD002A3A4019B05A33D324B2F29748E77AF501BEA5C96D1F28B2D6755F9F25", - "BNB": "DADB399E742FCEE71853E98225D13E44E90292852CD0033DF5CABAB96F80B833", - "AXLWETH": "F1806958CA98757B91C3FA1573ECECD24F6FA3804F074A6977658914A49E65A3", - "AKT": "799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098", - "HUA": "E7807A46C0B7B44B350DA58F51F278881B863EC4DCA94635DAB39E52C30766CB", - "ATOM": "961FA3E54F5DCCA639F37A7C45F7BBE41815579EF1513B5AFBEFCFEB8F256352", - "ATOM_1": "C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9", - "ATOM_2": "27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2", - "USDC": "B3504E092456BA618CC28AC671A71FB08C6CA0FD0BE7C8A5B5A3E2DD933CC9E4", - "USDC_1": "E1616E7C19EA474C565737709A628D6F8A23FF9D3E9A7A6871306CF5E0A5341E", - "USDC_2": "B559A80D62249C8AA07A380E2A2BEA6E5CA9A6F079C912C3A9E9B494105E4F81", - "GRAV": "C950356239AD2A205DE09FDF066B1F9FF19A7CA7145EA48A5B19B76EE47E52F7", - "SCRT": "A358D7F19237777AF6D8AD0E0F53268F8B18AE8A53ED318095C14D6D7F3B2DB5", - "AXL": "903A61A498756EA560B85A85132D3AEE21B5DEDD41213725D22ABF276EA6945E", - "AXL_1": "C01154C2547F4CB10A985EA78E7CD4BA891C1504360703A37E1D7043F06B5E1F", - "DOT": "624BA9DD171915A2B9EA70F69638B2CEA179959850C1A586F6C485498F29EDD4", - "DOT_1": "B37E4D9FB5B30F3E1E20A4B2DE2A005E584C5C822C44527546556AE2470B4539", - "ETH": "1B38805B1C75352B28169284F96DF56BDEBD9E8FAC005BDCC8CF0378C82AA8E7", - "CMST": "9EC8A1701813BB7B73BFED2496009ABB2C8BF187E6CDFA788D77F68E08BC05CD", - "OSMO": "EA7DF7F779C7F14E07172E5713E07356B55F01496CA649DDE46CF8FBF1A8466D", - "OSMO_1": "47BD209179859CDE4A2806763D7189B6E6FE13A17880FE2B42DE1E6C1E329E23", - "OSMO_2": "0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B", - "INJ": "5A76568E079A31FA12165E4559BA9F1E9D4C97F9C2060B538C84DCD503815E30", - "XPRT": "B786E7CBBF026F6F15A8DA248E0F18C62A0F7A70CB2DABD9239398C8B5150ABB", - "G-USDC": "CD01034D6749F20AAC5330EF4FD8B8CA7C40F7527AB8C4A302FBD2A070852EE1", - "STARS": "987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4", - "STARS_1": "4F393C3FCA4190C0A6756CE7F6D897D5D1BE57D6CCB80D0BC87393566A7B6602", - "CMDX": "3607EB5B5E64DD1C0E12E07F077FF470D5BC4706AFCBC98FE1BA960E5AE4CE07", - "CMDX_1": "EA3E1640F9B1532AB129A571203A0B9F789A7F14BB66E350DCBFA18E1A1931F0", - "EVMOS": "F3AA7EF362EC5E791FE78A0F4CCC69FEE1F9A7485EB1A8CAB3F6601C00522F10", - "EVMOS_1": "16618B7F7AC551F48C057A13F4CA5503693FBFF507719A85BC6876B8BD75F821", - "LUNA": "DA59C009A0B3B95E0549E6BF7B075C8239285989FF457A8EDDBB56F10B2A6986", - "AXLUSDC": "BFF0D3805B50D93E2FA5C0B2DDF7E0B30A631076CD80BC12A48C0E95404B4A41", - "AXLUSDC_1": "EAC38D55372F38F1AFD68DF7FE9EF762DCF69F26520643CF3F9D292A738D8034", - "AXLUSDC_2": "295548A78785A1007F232DE286149A6FF512F180AF5657780FC89C009E2C348F", - "AXLUSDT": "57503D7852EF4E1899FE6D71C5E81D7C839F76580F86F21E39348FC2BC9D7CE2", - "UST": "B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C", - "UST_1": "6F4968A73F90CF7DE6394BF937D6DF7C7D162D74D839C13F53B41157D315E05F", - "G-WETH": "DBF5FA602C46392DE9F4796A0FC7D02F3A8A3D32CA3FAA50B761D4AA6F619E95", - "LUNA_1": "4627AD2524E3E0523047E35BB76CC90E37D9D57ACF14F0FCBCEB2480705F3CB8", - "LUNC": "B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395", - "IST": "CA1261224952DF089EFD363D8DBB30A8AB6D8CD181E60EE9E68E432F8DE14FE3", - "USDT": "CBF67A2BCF6CAE343FDF251E510C8E18C361FC02B23430C121116E0811835DEF", - "USDT_1": "F2331645B9683116188EF36FC04A809C28BD36B54555E8705A37146D0182F045", - "ATOM_3": "27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2", - "AKT_1": "799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098", - "LUNA_2": "B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395", - "OSMO_3": "0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B", - "UST_2": "B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C", - "AXL_USDC_1": "F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349", - "AXL_USDC_2": "E21808AEBCB7E02F594897100186C126E3BC9A36B0974196AF116750A4573F06", - "BLD": "11F940BCDFD7CFBFD7EDA13F25DA95D308286D441209D780C9863FD4271514EB", - "G-WETH_boot": "B6CAD3F7469F3FAD18ED2230A6C7B15E654AB2E1B66E1C70879C04FEF874A863", - "ATOM_boot": "15E9C5CF5969080539DB395FA7D9C0868265217EFC528433671AAF9B1912D159", - "OSMO_boot": "13B2C536BB057AC79D5616B8EA1B9540EC1F2170718CAFF6F0083C966FFFED0B", - "GRAV_boot": "C23D820C5B6009E544AFC8AF5A2FEC288108AEDBFAEFDBBDD6BE54CC23069559", - "JUNO_boot": "8D9262E35CAE362FA74AE05E430550757CF8D842EC1B241F645D3CB7179AFD10", - "TIA": "D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877", - "TIA1": "773B4D0A3CD667B2275D5A4A7A2F0909C0BA0F4059C0B9181E680DDF4965DCC7", - "AXL_WETH": "A585C2D15DCD3B010849B453A2CFCB5E213208A5AB665691792684C26274304D", - "EVMOS_boot": "4B322204B4F59D770680FE4D7A565DDC3F37BFF035474B717476C66A4F83DD72", - "BABY": "B0BEE773CEF718E8B6D2892A27D57FEFB00BD8B2E698367B5CC96A4F36148726", - "INIT": "37A3FB4FED4CA04ED6D9E5DA36C6D27248645F0E22F585576A1488B8A89C5A50" - }, - "starknet": { - "STRK": "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", - "DAI": "0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", - "DAI_1": "0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad", - "USDC": "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", - "USDT": "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8", - "WBTC": "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac", - "ETH": "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", - "WSTETH": "0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2", - "WSTETH_1": "0x0057912720381af14b0e5c87aa4718ed5e527eab60b3801ebf702ab09139e38b", - "LUSD": "0x070a76fd48ca0ef910631754d77dd822147fe98a569b826ec85e3c33fde586ac", - "RETH": "0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610", - "UNO": "0x0719b5092403233201aa822ce928bd4b551d0cdb071a724edd7dc5e5f57b7f34", - "NSTSTRK": "0x04619e9ce4109590219c5263787050726be63382148538f3f936c22aa87d2fc2", - "ZEND": "0x00585c32b625999e6e5e78645ff8df7a9001cf5cf3eb6b80ccdd16cb64bd3a34", - "NSTR": "0x00c530f2c0aa4c16a0806365b0898499fba372e5df7a7172dc6fe9ba777e8007", - "BROTHER": "0x03b405a98c9e795d427fe82cdeeeed803f221b52471e3a757574a2b4180793ee", - "XSTRK": "0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a", - "SSTRK": "0x0356f304b154d29d2a8fe22f1cb9107a9b564a733cf6b4cc47fd121ac1af90c9", - "EKUBO": "0x075afe6402ad5a5c20dd25e10ec3b3986acaa647b77e4ae24b0cbc9a54a27a87" - }, - "ton": { - "TON": "0x0000000000000000000000000000000000000000", - "TON_1": "EQDQoc5M3Bh8eWFephi9bClhevelbZZvWhkqdo80XuY_0qXv", - "TON_2": "Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF", - "TON_3": "EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c", - "TON_4": "EQCajaUU1XXSAjTD-xOV7pE49fGtg4q8kF3ELCOJtGvQFQ2C", - "USDC": "EQC61IQRl0_la95t27xhIpjxZt32vl1QQVF2UgTNuvD18W-4", - "oUSDT": "EQC_1YoM8RBixN95lz7odcF3Vrkc_N8Ne7gQi7Abtlet_Efi", - "ETH": "EQAW42HutyDem98Be1f27PoXobghh81umTQ-cGgaKVmRLS7-", - "MATIC": "EQBq4d4GPyBoh-Pjnf3wxUyQSS28WY2Yt-7cPAG8FHpWpNRX", - "ORC": "EQDCIEo0HUUYsAV-lTMviOd-GkSXfVPsNZMGjRaNOA_6--FD", - "MEGA": "EQBf6-YoR9xylol_NwjHrLkrTFAZJCX-bsd-Xx_902OaPaBf", - "WEMIX": "EQCf7Nb341dxOE3N0jimngRxGEV8T3zo-eU2EZVs_nchNhhZ", - "jUSDT": "EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA", - "USDT": "EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs", - "NOT": "EQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsM__NOT", - "jUSDC": "EQB-MPwrd1G6WKNkLz_VnV6WqBDd142KMQv-g1O-8QUA3728", - "stTON": "EQDNhy-nxYFgUqzfUzImBEP67JqsyMIcyk2S5_RwNNEYku0k", - "tsTON": "EQC98_qAmNEptUtPc7W6xdHh_ZHrBUFpw5Ft_IzNU20QAJav", - "TONUSDT_DEDUST": "EQA-X_yo3fzzbDbJ_0bzFWKqtRuZFIRa1sJsveZJ1YpViO3r", - "TON_STORM": "EQCNY2AQ3ZDYwJAqx_nzl9i9Xhd_Ex7izKJM6JTxXRnO6n1F", - "USDT_STORM": "EQCup4xxCulCcNwmOocM9HtDYPU8xe0449tQLp6a-5BLEegW", - "CATI": "EQD-cvR0Nz6XAyRBvbhz-abTrRC6sI5tvHvvpeQraV9UAAD7", - "DOGS": "EQCvxJy4eG8hyHBFsZ7eePxrRsUQSFE_jpptRAYBmcG_DOGS", - "USDe": "EQAIb6KmdfdDR7CN1GBqVJuP25iCnLKCvBlJ07Evuu2dzP5f", - "tsUSDe": "EQDQ5UUyPHrLcQJlPAczd_fjxn8SLrlNQwolBznxCdSlfQwr", - "PT_tsUSDe_01Sep2025": "EQDb90Bss5FnIyq7VMmnG2UeZIzZomQsILw9Hjo1wxaF1df3" - }, - "defichain": { - "DFI": "DFI", - "DUSD": "DUSD", - "ETH": "ETH", - "BTC": "BTC", - "USDC": "USDC", - "USDT": "USDT" - }, - "elrond": { - "EGLD": "0x0000000000000000000000000000000000000000", - "WEGLD": "WEGLD-bd4d79", - "USDC": "USDC-c76f1f" - }, - "bitindi": { - "WBNI": "0x15E162205421dc3A47b15A1A740FbF5EAbB77921" - }, - "core": { - "WCORE": "0x40375c92d9faf44d2f9db9bd9ba41a3317a2404f", - "WCORE_1": "0x191e94fa59739e188dce837f7f6978d84727ad01", - "USDT": "0x900101d06a7426441ae63e9ab3b9b0f63be145f1", - "USDC": "0xa4151b2b3e269645181dccf2d426ce75fcbdeca9", - "coreBTC": "0x8034aB88C3512246Bf7894f57C834DdDBd1De01F" - }, - "crab": { - "WCRAB": "0x2d2b97ea380b0185e9fdf8271d1afb5d2bf18329" - }, - "lung": { - "WLUNG": "0xf51666bcb4b787df919395258fb1d9556f4e357b" - }, - "loop": { - "WLOOP": "0x3936D20a39eD4b0d44EaBfC91757B182f14A38d5" - }, - "rpg": { - "WRPG": "0x71d9cfd1b7adb1e8eb4c193ce6ffbe19b4aee0db", - "USDT": "0x8e8816a1747fddc5f8b45d2e140a425d3788f659" - }, - "map": { - "BUSD": "0x35bf4004c3fc9f509259d4942da6bae3669e1db1", - "WMAPO": "0x13cb04d4a5dfb6398fc5ab005a6c84337256ee23", - "USDC": "0x9f722b2cb30093f766221fd0d37964949ed66918", - "ETH": "0x05ab928d446d8ce6761e368c8e7be03c3168a9ec", - "ROUP": "0x3e76deF74d4187B5a01aBE4E011Bd94d9f057d94", - "WROUP": "0x5a1c3f3aaE616146C7b9bf9763E0ABA9bAFc5eaE", - "ORDI": "0xB719e46B6eB5b23E2759526CdE24589d87097733", - "WORDI": "0x9CA528368964cFb92cfFdd51dCcED25E27ACCef9", - "RATS": "0xcAF17cDdb80F72484e5A279921b98a0a9A2391ee", - "WRATS": "0x6369414F2b0e973c7E85A362141aA1430bc30056", - "CSAS": "0x640a4C0AaA4870BaDE2F646B7Da87b3D53819C4f", - "WSAS": "0x141b30Dd30FAFb87ec10312d52e5dbD86122FE14", - "BTCS": "0x0e2cA3e003f3c73C8cC18ec244d46DB9d4c4DCEB", - "WBTCS": "0xBE81B9390D894fEBf5e5D4Ea1486a003C1e8dc63", - "MMSS": "0x0fBb3B3Fb1e928f75B3Ed8b506bAb4503373fdca" - }, - "bone": { - "WBONE": "0xcda1fa23ff3b9b7172be82237bf662efb69437e9" - }, - "era": { - "WETH": "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", - "USDC": "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4", - "WBTC": "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", - "USDT": "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", - "BUSD": "0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181", - "DAI": "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656", - "ZK": "0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E", - "USDM": "0x7715c206A14Ac93Cb1A6c0316A6E5f8aD7c9Dc31" - }, - "polygon_zkevm": { - "WETH": "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9", - "USDC": "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035", - "USDC_CIRCLE": "0x37eaa0ef3549a5bb7d431be78a3d99bd360d19e5" - }, - "eos_evm": { - "WEOS": "0xc00592aA41D32D137dC480d9f6d0Df19b860104F", - "ETH": "0x922d641a426dcffaef11680e5358f34d97d112e1", - "USDC": "0x765277eebeca2e31912c9946eae1021199b39c61", - "USDT": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "WBTC": "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73" - }, - "oas": { - "WOAS": "0x5200000000000000000000000000000000000001" - }, - "enuls": { - "WNULS": "0x217dffF57E3b855803CE88a1374C90759Ea071bD" - }, - "sui": { - "USDC": "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN", - "CELO": "0xa198f3be41cda8c07b3bf3fee02263526e535d682499806979a111e88a5a8d0f::coin::COIN", - "WMATIC": "0xdbe380b13a6d0f5cdedd58de8f04625263f113b3f9db32b3e1983f49e2841676::coin::COIN", - "BNB": "0xb848cce11ef3a8f62eccea6eb5b35a12c4c2b1ee1af7755d02d7bd6218e8226f::coin::COIN", - "WETH": "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN", - "USDT": "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN", - "WBTC": "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN", - "BTC": "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC", - "WAVAX": "0x1e8b532cca6569cab9f9b9ebc73f8c13885012ade714729aa3b450e0339ac766::coin::COIN", - "WFTM": "0x6081300950a4f1e2081580e919c210436a1bed49080502834950d31ee55a2396::coin::COIN", - "WGLMR": "0x66f87084e49c38f76502d17f87d17f943f183bb94117561eb573e075fdc5ff75::coin::COIN", - "SOL": "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN", - "USDC_SOL": "0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN", - "USDC_ARB": "0xe32d3ebafa42e6011b87ef1087bbc6053b499bf6f095807b9013aff5a6ecd7bb::coin::COIN", - "USDC_BNB": "0x909cba62ce96d54de25bec9502de5ca7b4f28901747bbf96b76c2e63ec5f1cba::coin::COIN", - "BUCK": "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK", - "SUI": "0x2::sui::SUI", - "USDC_CIRCLE": "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC", - "ETH": "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH", - "DEEP": "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP", - "suiUSDT": "0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068::usdt::USDT", - "USDY": "0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY", - "WAL": "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL" - }, - "grove": { - "WGRV": "0xE85f139488c689038028a3EB8fC38dcC29D4C340" - }, - "fxcore": { - "FX": "FX", - "USDT": "usdt" - }, - "xpla": { - "XPLA": "axpla" - }, - "xp": { - "wXP": "0x8c290B96768210Dc1Ab64970Ff62F0F97be00431" - }, - "chihuahua": { - "HUAHUA": "uhuahua" - }, - "filecoin": { - "WFIL": "0xce5805cf6c84f71d2897f632e0aa60d2430ccd2a", - "USDT": "0x422849B355039bC58F2780cc4854919fC9cfaF94" - }, - "pulse": { - "WPLS": "0xa1077a294dde1b09bb078844df40758a5d0f9a27", - "PLSX": "0x95B303987A60C71504D99Aa1b13B4DA07b0790ab", - "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", - "USDC": "0x15D38573d2feeb82e7ad5187aB8c1D52810B1f07", - "USDT": "0x0Cb6F5a34ad42ec934882A05265A7d5F59b51A2f", - "HEX": "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39", - "DAI": "0xefd766ccb38eaf1dfd701853bfce31359239f305", - "sDAI": "0x30fcb23a906493371b1721c8feb8815804808d74" - }, - "onus": { - "WONUS": "0x4c761e48d1e735af551cc38abcbdce1d7faac6e4" - }, - "stacks": { - "WSTX": "SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.wstx-token-v4a", - "WSTX_1": "SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wstx-token::wstx", - "WSTX_2": "SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.wstx", - "ABTC": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc", - "WBTC": "SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin::wrapped-bitcoin", - "stSTX": "SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token::ststx", - "USDT": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-susdt::bridged-usdt", - "aeUSDC": "SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc", - "aBTC": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc::bridged-btc" - }, - "neon_evm": { - "WNEON": "0xb14760c064a1b9eaf9ec5a8a421971e40a51b59c" - }, - "tenet": { - "WTENET": "0xd6cb8a253e12893b0cf39ca78f7d858652cca1fe" - }, - "manta": { - "WETH": "0x0Dc808adcE2099A9F62AA87D9670745AbA741746", - "USDC": "0xb73603c5d87fa094b7314c74ace2e64d165016fb", - "USDT": "0xf417f5a458ec102b90352f697d6e2ac3a3d2851f", - "WBTC": "0x305E88d809c9DC03179554BFbf85Ac05Ce8F18d6" - }, - "mantle": { - "WMNT": "0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8", - "WETH": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111", - "USDT": "0x201eba5cc46d216ce6dc03f6a759e8e766e956ae", - "USDC": "0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9", - "cmETH": "0xE6829d9a7eE3040e1276Fa75293Bde931859e8fA", - "mETH": "0xcDA86A272531e8640cD7F1a92c01839911B90bb0", - "FBTC": "0xC96dE26018A54D51c097160568752c4E3BD6C364", - "AUSD": "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a", - "USDe": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34", - "sUSDe": "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" - }, - "linea": { - "WETH": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", - "WETH_1": "0x0000000000000000000000000000000000000001", - "USDC": "0x176211869cA2b568f2A7D4EE941E073a821EE1ff", - "USDT": "0xA219439258ca9da29E9Cc4cE5596924745e12B93", - "DAI": "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5", - "rzETH": "0xbf5495efe5db9ce00f80364c8b423567e58d2110" - }, - "base": { - "WETH": "0x4200000000000000000000000000000000000006", - "USDbC": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", - "USDC": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", - "DAI": "0x50c5725949a6f0c72e6c4a641f24049a917db0cb", - "USDT": "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", - "rETH": "0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c", - "wstETH": "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", - "cbBTC": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "cbETH": "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22", - "ETHFI": "0x6C240DDA6b5c336DF09A4D011139beAAa1eA2Aa2", - "weETH": "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", - "WBTC": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c" - }, - "sei": { - "SEI": "usei", - "WSEI": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7", - "WETH": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/4tLQqCLaoKKfNFuPjA9o39YbKUwhR1F8N29Tz3hEbfP2", - "USDCet": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/Hq4tuDzhRBnxw3tFA5n6M52NVMVcC19XggbyDiJKCD6H", - "USDCso": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/9fELvUhFo6yWL34ZaLgPbCPzdk9MD1tAzMycgH45qShH", - "USDCar": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/7edDfnf4mku8So3t4Do215GNHwASEwCWrdhM5GqD51xZ", - "USDTet": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/HktfLoADCk9mnjv7XJiN4YXK9ayE6xinLzt8wzcsR2rY", - "USDTbs": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/871jbn9unTavWsAe83f2Ma9GJWSv6BKsyWYLiQ6z3Pva", - "WBTC": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/7omXa4gryZ5NiBmLep7JsTtTtANCVKXwT9vbN91aS1br", - "USDC": "0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1", - "USDT": "0xB75D0B03c06A926e488e2659DF1A861F860bD3d1" - }, - "op_bnb": { - "WBNB": "0x4200000000000000000000000000000000000006", - "USDT": "0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3", - "ETH": "0xe7798f023fc62146e8aa1b36da45fb70855a77ea", - "FDUSD": "0x50c5725949a6f0c72e6c4a641f24049a917db0cb" - }, - "archway": { - "ARCH": "aarch" - }, - "migaloo": { - "WHALE": "uwhale" - }, - "mvc": { - "SPACE": "0x0000000000000000000000000000000000000000", - "USDT": "7d8706c7f657730201ff3334064f83deb2fdec8a", - "MSP": "b2d75931958114e48c9927160f80363eae78e2dc" - }, - "wan": { - "WWAN": "0xdabD997aE5E4799BE47d6E69D9431615CBa28f48" - }, - "alv": { - "WALV": "0xcb3e9919c56eff1004e54175a01e39163a352129" - }, - "dsc": { - "WDSC": "0x1c5d8992da64c8d56ea413dd6f723061c29a7c0b" - }, - "secret": { - "SECRET": "uscrt", - "WSCRT": "secret1k0jntykt7e4g3y88ltc60czgjuqdy4c9e8fzek", - "ATOM": "secret14mzwd0ps5q277l20ly2q3aetqe3ev4m4260gf4", - "DAI": "secret1vnjck36ld45apf8u4fedxd5zy7f5l92y3w5qwq", - "USDC": "secret1h6z05y90gwm4sqxzhz4pkyp36cna9xtp7q0urv", - "USDT": "secret18wpjn83dayu4meu6wnn29khfkwdxs7kyrz9c8f" - }, - "sseed": { - "WETH": "0x4200000000000000000000000000000000000006", - "USDC": "0xc316c8252b5f2176d0135ebb0999e99296998f2e", - "SUPR": "0x6ea1ffcbd7f5d210db07d9e773862b0512fa219b", - "oUSDT": "0x1217BfE6c773EEC6cc4A38b5Dc45B92292B6E189" - }, - "aura": { - "AURA": "uaura", - "WAURA": "0xDE47A655a5d9904BD3F7e1A536D8323fBD99993A", - "USDT": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd" - }, - "shibarium": { - "WETH": "0x8ed7d143ef452316ab1123d28ab302dc3b80d3ce", - "BONE_0": "0xc76f4c819d820369fb2d7c1531ab3bb18e6fe8d8", - "BONE_1": "0x213c25900f365f1be338df478cd82bef7fd43f85", - "BONE_2": "0x6c19a35875217b134e963ca9e61b005b855cad21", - "BONE_3": "0x1b2f364032f12bd8a4c89e672e6272de03ae2680", - "BONE_4": "0xa2899c776baaf9925d432f83c950d5054a6cf59c", - "BONE_5": "0x839FdB6cc98342B428E074C1573ADF6D48CA3bFd", - "DAI": "0x50c5725949a6f0c72e6c4a641f24049a917db0cb" - }, - "nos": { - "BTC": "0x111808AbE352c8003e0eFfcc04998EaB26Cebe3c", - "ETH": "0x43bDa480DE297A14cec95bFb1C6A313615f809Ef", - "USDT": "0xf1612388D43A6b00316CA05ca358BC1a2e7b8E97" - }, - "kroma": { - "WETH": "0x4200000000000000000000000000000000000001", - "USDC": "0x49A5010110a358d9069282873F3e7eCf6B41DC10", - "USDT": "0x0Cf7c2A584988871b654Bd79f96899e4cd6C41C0", - "WEMIX": "0x3720b1dc2c8dde3bd6cfcf0b593d0a2bbcac856e" - }, - "radixdlt": { - "XRD": "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd", - "WETH": "resource_rdx1th88qcj5syl9ghka2g9l7tw497vy5x6zaatyvgfkwcfe8n9jt2npww" - }, - "shimmer_evm": { - "WSMR": "0xBEb654A116aeEf764988DF0C6B4bf67CC869D01b", - "WSMR1": "0x1074010000000000000000000000000000000000", - "WSMR2": "0x6c890075406c5df08b427609e3a2ead1851ad68d", - "ETH": "0xa158a39d00c79019a01a6e86c56e96c461334eb0", - "WBTC": "0x1cdf3f46dbf8cf099d218cf96a769cea82f75316", - "USDT": "0xc0E49f8C615d3d4c245970F6Dc528E4A47d69a44" - }, - "renec": { - "RENEC": "So11111111111111111111111111111111111111112", - "REUSD": "4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3" - }, - "beam": { - "WMC": "0xD51BFa777609213A653a2CD067c9A0132a2D316A", - "USDC": "0x76BF5E7d2Bcb06b1444C0a2742780051D8D0E304", - "USDT": "0x999f90f25a2922ae1b21A06066F7EDEbedad42a9" - }, - "bfc": { - "WBFC": "0x1c1b06405058AbE02e4748753aeD1458BEFEE3B9", - "UnifiedETH": "0x6c9944674C1D2cF6c4c4999FC7290Ba105dcd70e", - "UnifiedBNB": "0xB800EaF843F962DFe5e145A8c9D07A3e70b11d7F", - "UnifiedUSDC": "0x640952E7984f2ECedeAd8Fd97aA618Ab1210A21C", - "UnifiedMATIC": "0x21ad243b81eff53482F6F6E7C76539f2CfC0B734", - "UnifiedUSDT": "0x3eA8654d5755e673599473ab37d92788B5bA12aE", - "UnifiedDAI": "0xcDB9579Db96EB5C8298dF889D915D0FF668AfF2a", - "WITCH": "0xB1f3A83597Bce2AD842c29bD750AE17afc474137", - "SAT": "0x17102AC78a02a98fC78B0c29B7b0506f035A99E5", - "BIFI": "0x047938C3aD13c1eB821C8e310B2B6F889b6d0003", - "WBTC": "0x7b8FAC5F29E101BaaB33c5f9c39d4F85ba2cc7C1", - "BTCB": "0xd267F821F1b8344B5A63626c8c824697194A173E", - "BitcoinUSD": "0x6906Ccda405926FC3f04240187dd4fAd5DF6d555", - "BtcUSD": "0x6906Ccda405926FC3f04240187dd4fAd5DF6d555", - "cbBTC": "0x74B73Fd2eE237e9219dF30dfFDB206D237cbFC00" - }, - "scroll": { - "WETH": "0x5300000000000000000000000000000000000004", - "USDT": "0xf55bec9cafdbe8730f096aa55dad6d22d44099df", - "USDC": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4", - "STONE": "0x80137510979822322193FC997d400D5A6C747bf7", - "WBTC": "0x3c1bca5a656e69edcd0d4e36bebb3fcdaca60cf1", - "ETHFI": "0x056a5fa5da84ceb7f93d36e545c5905607d8bd81", - "BOLD": "0x03569cc076654f82679c4ba2124d64774781b01d" - }, - "darwinia": { - "RING": "0xe7578598aac020abfb918f33a20fad5b71d670b4" - }, - "pg": { - "WPG": "0x0cf4071940782b640d0b595cb17bdf3e90869d70" - }, - "ethf": { - "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" - }, - "eon": { - "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "ZEN": "0xF5cB8652a84329A2016A386206761f455bCEDab6", - "WBTC": "0x1d7fb99AED3C365B4DEf061B7978CE5055Dfc1e7" - }, - "elsm": { - "WLAVA": "0xd80Ef77B0289732e13D1769850B5A70eCC196777", - "PYR": "0xa801b1a7846156d4c81bd188f96bfcb621517611" - }, - "edg": { - "WEDG": "0x457dE4e275A6b3C0D3750519221dD1dF19d54f01" - }, - "meer": { - "MEER_1": "0x470cBFB236860eb5257bBF78715FB5bd77119C2F", - "MEER_2": "0x457dE4e275A6b3C0D3750519221dD1dF19d54f01" - }, - "mode": { - "STONE": "0x80137510979822322193fc997d400d5a6c747bf7", - "WETH": "0x4200000000000000000000000000000000000006", - "USDC": "0xd988097fb8612cc24eeC14542bC03424c656005f", - "USDT": "0xf0F161fDA2712DB8b566946122a5af183995e2eD", - "WBTC": "0xcdd475325d6f564d27247d1dddbb0dac6fa0a5cf" - }, - "zilliqa": { - "WZIL": "0x94e18ae7dd5ee57b55f30c4b63e2760c09efb192", - "USDT": "0x2274005778063684fbb1bfa96a2b725dc37d75f9", - "stZIL": "0x097c26f8a93009fd9d98561384b5014d64ae17c2", - "gZIL": "0x03a79429acc808e4261a68b0117acd43cb0fdbfa", - "XCAD": "0xccf3ea256d42aeef0ee0e39bfc94baa9fa14b0ba" - }, - "fsc": { - "WFSC": "0xb582fD9d0D5C3515EEB6b02fF2d6eE0b6E45E7A7" - }, - "lightlink_phoenix": { - "WETH": "0x7ebef2a4b1b09381ec5b9df8c5c6f2dbeca59c73", - "USDC": "0xbCF8C1B03bBDDA88D579330BDF236B58F8bb2cFd", - "USDC.e": "0x18fB38404DADeE1727Be4b805c5b242B5413Fa40", - "USDT": "0x808d7c71ad2ba3FA531b068a2417C63106BC0949", - "USDT.e": "0x6308fa9545126237158778e74AE1b6b89022C5c0", - "WBTC": "0x46a5e3fa4a02b9ae43d9df9408c86ed643144a67", - "LL": "0xd9d7123552fA2bEdB2348bB562576D67f6E8e96E" - }, - "jbc": { - "USDT": "0xFD8Ef75c1cB00A594D02df48ADdc27414Bd07F8a", - "USDC": "0x55b25214363306686e1f5424d5f96fb330f51d4c", - "ETH": "0x17Fc6A15d85414fb7058ee7f54496763B8594344", - "OP": "0x0D89386044FF9975deCe36E8b85b6222B7B40A2c", - "BNB": "0xE6Af001741A2de21aEa4Bb1DA17d32d7f579c6a1", - "JFIN": "0x2cd11cdBeD000B5a680C015F2825569Bc5d8CF88", - "KUB": "0x28953231bc533bE90f5FDf9CE62Ac259018ee847", - "JUSDT": "0x24599b658b57f91E7643f4F154B16bcd2884f9ac" - }, - "chainx": { - "WBTC": "0x09Ff8E49D0EA411A3422ed95E8f5497D4241F532" - }, - "airdao": { - "SAMB": "0x2b2d892c3fe2b4113dd7ac0d2c1882af202fb28f", - "BUSD": "0x7a477aa8ed4884509387dba81ba6f2b7c97597e2", - "USDC": "0xFF9F502976E7bD2b4901aD7Dd1131Bb81E5567de" - }, - "acala": { - "DOT": "0x0000000000000000000100000000000000000002", - "LDOT": "0x0000000000000000000100000000000000000003", - "USDC": "0x07DF96D1341A7d16Ba1AD431E2c847d978BC2bCe" - }, - "new": { - "NEW": "0xf4905b9bc02ce21c98eac1803693a9357d5253bf" - }, - "zeta": { - "USDC": "0x05BA149A7bd6dC1F937fA9046A9e05C05f3b18b0", - "USDC_1": "0x0cbe0dF132a6c6B4a2974Fa1b7Fb953CF0Cc798a", - "USDT": "0x7c8dDa80bbBE1254a7aACf3219EBe1481c6E01d7", - "USDT_1": "0x91d4F0D54090Df2D81e834c3c8CE71C6c865e79F", - "ETH": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "BNB": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "BTC": "0x13A0c5930C028511Dc02665E7285134B6d11A5f4", - "WZETA": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf" - }, - "blast": { - "USDB": "0x4300000000000000000000000000000000000003", - "fwWETH": "0x66714db8f3397c767d0a602458b5b4e3c0fe7dd1", - "fwUSDB": "0x866f2c06b83df2ed7ca9c2d044940e7cd55a06d6", - "WETH": "0x4300000000000000000000000000000000000004", - "ezETH": "0x2416092f143378750bb29b79eD961ab195CcEea5", - "weETH": "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", - "BLAST": "0xb1a5700fA2358173Fe465e6eA4Ff52E36e88E2ad" - }, - "chz": { - "WCHZ": "0x721ef6871f1c4efe730dce047d40d1743b886946", - "WCHZ_1": "0x677F7e16C7Dd57be1D4C8aD1244883214953DC47" - }, - "bitrock": { - "WBR": "0x413f0e3a440aba7a15137f4278121450416882d5", - "BR": "0xde67d97b8770dc98c746a3fc0093c538666eb493" - }, - "btn": { - "BTN": "0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58" - }, - "area": { - "AREA": "0x298b6a733cd34e41ca87b264d968c8ca7b0b9931", - "WAREA": "0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf" - }, - "defiverse": { - "OAS": "0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351", - "USDC": "0x7c6b91D9Be155A6Db01f749217d76fF02A7227F2", - "WBTC": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - "ETH": "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea" - }, - "xai": { - "XAI": "0x36be1fd6ff2a6beb34b500a04f89103a524516d8", - "USDC": "0x300a7b57dc85b6a9776e249614abf0fe5c9905fb", - "WXAI": "0x3fb787101dc6be47cfe18aeee15404dcc842e6af", - "WETH": "0xbee82cfdaff4a6aa4e4793cb81eb1c2e79ac463c", - "USDC_1": "0x1e3769bd5fb2e9e9e7d4ed8667c947661f9a82e3" - }, - "merlin": { - "SATS": "0x4dcb91cc19aadfe5a6672781eb09abad00c19e4c", - "RATS": "0x69181a1f082ea83a152621e4fa527c936abfa501", - "ORDI": "0x0726523eba12edad467c55a962842ef358865559", - "USDT": "0x967aec3276b63c5e2262da9641db9dbebb07dc0d", - "USDC": "0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe", - "WBTC": "0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA", - "WBTC_1": "0xB880fd278198bd590252621d4CD071b1842E9Bcd" - }, - "ftn": { - "USDC": "0x4237e0A5b55233D5B6D6d1D9BF421723954130D8", - "stFTN": "0x780fb5aca83f2e3f57ee18cc3094988ef49d8c3d", - "mUSDC": "0x4b7708ee3ccbd3f9af68208e69ad31f611e1befe", - "mUSDT": "0xb7dc5eca6de5cb9b46ac405d3d4596333714f3f7" - }, - "q": { - "WBTC": "0xde397e6C442A3E697367DecBF0d50733dc916b79", - "WDAI": "0xDeb87c37Dcf7F5197026f574cd40B3Fc8Aa126D1", - "WUSDC": "0x79Cb92a2806BF4f82B614A84b6805963b8b1D8BB", - "WETH": "0xd56F9ffF3fe3BD0C7B52afF9A42eb70E05A287Cc", - "ELK": "0xeEeEEb57642040bE42185f49C52F7E9B38f8eeeE", - "QUSD": "0xE31DD093A2A0aDc80053bF2b929E56aBFE1B1632", - "WQ": "0xd07178e3eCbC78De110Df84fe1A979D5f349784a" - }, - "zklink": { - "WBTC": "0xda4aaed3a53962c83b35697cd138cc6df43af71f", - "USDT": "0x2f8a25ac62179b31d62d7f80884ae57464699059", - "USDC": "0x1a1a3b2ff016332e866787b311fcb63928464509", - "WETH": "0x8280a4e7D5B3B658ec4580d3Bc30f5e50454F169" - }, - "kinto": { - "WETH": "0x7526B5318Cbe690FBd3eC8DD7ad122f4F1b1d76F" - }, - "bevm": { - "WBTC": "0xB5136FEba197f5fF4B765E5b50c74db717796dcD", - "USDT": "0xa67ED736649F2958A35fd249a584151056b4b745" - }, - "degen": { - "WDEGEN": "0xeb54dacb4c2ccb64f8074eceea33b5ebb38e5387" - }, - "imx": { - "WIMX": "0x3A0C2Ba54D6CBd3121F01b96dFd20e99D1696C9D", - "ETH": "0x52a6c53869ce09a731cd772f245b97a4401d3348", - "USDC": "0x6de8acc0d406837030ce4dd28e7c08c5a96a30d2" - }, - "sapphire": { - "WOAS": "0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019", - "USDT": "0x9ca066f00e55b90623efe323feb2a649686538b6" - }, - "rss3_vsl": { - "WRSS": "0xe27d019909738d98ab7f850c05ee07806c30c71d" - }, - "svm": { - "BTC": "0x5db252ead05C54B08A83414adCAbF46Eaa9E0337" - }, - "islm": { - "ISLM": "0xeC8CC083787c6e5218D86f9FF5f28d4cC377Ac54", - "DAI": "0xc5e00d3b04563950941f7137b5afa3a534f0d6d6", - "ETH": "0xeceeefcee421d8062ef8d6b4d814efe4dc898265", - "WBTC": "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", - "USDT": "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", - "AXLUSDC": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd", - "USDC": "0x0ce35b0d42608ca54eb7bcc8044f7087c18e7717" - }, - "xlayer": { - "WOKB": "0xe538905cf8410324e03a5a23c1c177a474d59b2b", - "WBTC": "0xea034fb02eb1808c2cc3adbc15f447b93cbe08e1", - "WETH": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c", - "USDT": "0x1E4a5963aBFD975d8c9021ce480b42188849D41d", - "USDC": "0x74b7f16337b8972027f6196a17a631ac6de26d22" - }, - "genesys": { - "WGSYS": "0xAa7aE83eb30DDdd14A017D4222121776317EA8Ba" - }, - "zora": { - "USDzC": "0xcccccccc7021b32ebb4e8c08314bd62f7c653ec4" - }, - "ancient8": { - "WETH": "0x4200000000000000000000000000000000000006" - }, - "karak": { - "USDC": "0xa415021bc5c4c3b5b989116dc35ae95d9c962c8d", - "rsETH": "0xf948aacec00289fc33d8226391f7e04bb457ad49", - "WETH": "0x4200000000000000000000000000000000000006" - }, - "bsquared": { - "WBTC": "0x4200000000000000000000000000000000000006", - "USDT": "0x681202351a488040fa4fdcc24188afb582c9dd62", - "USDC": "0xe544e8a38add9b1abf21922090445ba93f74b9e5", - "ETH": "0xD48d3A551757ac47655fCe25BDE1B0B6b1Cb2a5A", - "MATIC": "0xc3ee2Df14B1Bc526c24ED802f1873d49664a0d5c", - "FDUSD": "0xC2Fe4f673455Ef92299770a09CDB5E8756A525D5", - "BSTONE": "0x7537C1F80c9E157ED7AFD93a494be3e1f04f1462", - "ORDI": "0xa0f4470B714677AEEcE0d20074c540b3Cf6a477E", - "SATS": "0x7eBFcE05E418C380a2b6EB0F65995cA04ef4bc00", - "UBTC": "0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2" - }, - "planq": { - "WPLANQ": "0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a", - "USDC": "0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265", - "USDC_1": "0x75E20C5d4aade76143b8b74d1C5E2865347f9d3B" - }, - "lac": { - "LAC": "0x2911a1ab18546cb501628be8625c7503a2a7db54", - "WETH": "0x42c8c9c0f0a98720dacdaeac0c319cb272b00d7e", - "WBTC": "0xf54b8cb8eeee3823a55dddf5540ceaddf9724626", - "USDT": "0x7dc8b9e3b083c26c68f0b124ca923aaec7fbee39", - "USDC": "0x51115241c7b8361eee88d8610f71d0a92cee5323" - }, - "bob": { - "WETH": "0x4200000000000000000000000000000000000006", - "WBTC": "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3", - "USDT": "0x05d032ac25d322df992303dca074ee7392c117b9", - "USDC": "0xe75d0fb2c24a55ca1e3f96781a2bcc7bdba058f0", - "STETH": "0x85008aE6198BC91aC0735CB5497CF125ddAAc528", - "STONE": "0x96147a9ae9a42d7da551fd2322ca15b71032f342", - "RETH": "0xb5686c4f60904ec2bda6277d6fe1f7caa8d1b41a", - "TBTC": "0xbba2ef945d523c4e2608c9e1214c2cc64d4fc2e2", - "SolvBTC": "0x541fd749419ca806a8bc7da8ac23d346f2df8b77", - "SolvBTC_BBN": "0xCC0966D8418d412c599A6421b760a847eB169A8c", - "FBTC": "0xc96de26018a54d51c097160568752c4e3bd6c364", - "satUSD": "0x78Fea795cBFcC5fFD6Fb5B845a4f53d25C283bDB", - "uniBTC": "0x236f8c0a61dA474dB21B693fB2ea7AAB0c803894", - "pumpBTC": "0x1fcca65fb6ae3b2758b9b2b394cb227eae404e1e" - }, - "btr": { - "ETH": "0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2", - "WBTC": "0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f", - "USDT": "0xfe9f969faf8Ad72a83b761138bF25dE87eFF9DD2", - "USDC": "0x9827431e8b77E87C9894BD50B055D6BE56bE0030" - }, - "taiko": { - "USDC": "0x07d83526730c7438048D55A4fc0b850e2aaB6f0b", - "USDT": "0x2def195713cf4a606b49d07e520e22c17899a736", - "USDC_e": "0x19e26b0638bf63aa9fa4d14c6baf8d52ebe86c5c", - "DAI": "0x7d02A3E0180451B17e5D7f29eF78d06F8117106C", - "TAIKO": "0xA9d23408b9bA935c230493c40C73824Df71A0975", - "LRC": "0xd347949f8c85d9f3d6b06bfc4f8c2e07c161f064", - "WETH": "0xA51894664A773981C6C112C43ce576f315d5b1B6" - }, - "stellar": { - "XLM": "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA", - "USDC": "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75", - "EURC": "CDTKPWPLOURQA2SGTKTUQOWRCBZEORB4BWBOMJ3D3ZTQQSGE5F6JBQLV" - }, - "lukso": { - "WLYX": "0x2db41674f2b882889e5e1bd09a3f3613952bc472", - "sLYX": "0x8a3982f0a7d154d11a5f43eec7f50e52ebbc8f7d" - }, - "defichain_evm": { - "DFI": "0x49febbf9626b2d39aba11c01d83ef59b3d56d2a4", - "USDT": "0xff0000000000000000000000000000000000000d", - "USDC": "0xff00000000000000000000000000000000000003", - "ETH": "0xff00000000000000000000000000000000000001", - "DUSD": "0xff0000000000000000000000000000000000000f" - }, - "ailayer": { - "ABTC": "0x1470a4831F76954686BfB4dE8180F7469EA8dE6F", - "bBTC": "0xEAa3C2fa77c306592750C9220a8f52DA8A849Ede" - }, - "mint": { - "WETH": "0x4200000000000000000000000000000000000006", - "USDC": "0xb62F35B9546A908d11c5803ecBBA735AbC3E3eaE", - "USDT": "0x05D032ac25d322df992303dCa074EE7392C117b9", - "WBTC": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3" - }, - "fraxtal": { - "WETH": "0xA8a59D73388D0c4344a7b0Ba287ddb654227c38a", - "FRAX": "0xfc00000000000000000000000000000000000001", - "WFRAX": "0xFc00000000000000000000000000000000000002" - }, - "aeternity": { - "WAE": "ct_J3zBY8xxjsRr3QojETNw48Eb38fjvEuJKkQ6KzECvubvEcvCa", - "WETH": "ct_WVqAvLQpvZCgBg4faZLXA1YBj43Fxj91D33Z8K7pFsY8YCofv", - "WBTC": "ct_26Q5MYFKE4z4GaYLmhZiZ9AHsSVqVNZiiyzySSHTorWyr4od4K", - "USDT": "ct_2AiMceYFXnUdA6A9Lu2ZQ2tr2TpfbGVfkxLfBnceoWgHTKZYvc", - "USDC": "ct_U1i8dzJTVWdnU2cv59TZQfLFpLfjqf7MQQC5ygSMKphn8Yew2" - }, - "etlk": { - "OGV1WXTZ": "0x3571aed54ccea5b69b00516d5a149a6baea77118", - "WXTZ": "0xc9B53AB2679f573e480d01e0f49e2B5CFB7a3EAb", - "STXTZ": "0x01F07f4d78d47A64F4C3B2b65f513f15Be6E1854", - "USDC": "0x796ea11fa2dd751ed01b53c372ffdb4aaa8f00f9", - "USDT": "0x2c03058c8afc06713be23e58d2febc8337dbfe6a", - "WETH": "0xfc24f770f94edbca6d6f885e12d4317320bcb401", - "LBTC": "0xecAc9C5F704e954931349Da37F60E39f515c11c1", - "WBTC" : "0xbfc94cd2b1e55999cfc7347a9313e88702b83d0f" - }, - "rari": { - "WETH": "0xf037540e51d71b2d2b1120e8432ba49f29edfbd0", - "USDC_e": "0xfbda5f676cb37624f28265a144a48b0d6e87d3b6" - }, - "real": { - "RWA": "0x4644066f535ead0cde82d209df78d94572fcbf14", - "USDC": "0xc518A88c67CECA8B3f24c4562CB71deeB2AF86B7" - }, - "saakuru": { - "WOAS": "0x557a526472372f1F222EcC6af8818C1e6e78A85f", - "USDC_e": "0x739222D8A9179fE05129C77a8fa354049c088CaA" - }, - "bouncebit": { - "wstBBTC": "0x8f083eafcbba2e126ad9757639c3a1e25a061a08", - "BBUSD": "0x77776b40C3d75cb07ce54dEA4b2Fd1D07F865222" - }, - "reya": { - "WETH": "0x6b48c2e6a32077ec17e8ba0d98ffc676dfab1a30", - "USDC": "0x3B860c0b53f2e8bd5264AA7c3451d41263C933F2", - "RUSD": "0xa9f32a851b1800742e47725da54a09a7ef2556a3" - }, - "neutron": { - "NTRN": "untrn" - }, - "noble": { - "USDC": "uusdc", - "USDY": "ausdy", - "ausdy": "ausdy" - }, - "ripple": { - "XRP": "XRP" - }, - "polynomial": { - "USDC": "0x17C9D8Cef7Ef072844EEaEdE1F9f54C7E3fa8743", - "fxUSDC": "0x2369eb4a76d80fbeaa7aa73e1e1f9eaee88c07f4", - "SDAI": "0x615172e47c0C5A6dA8ea959632Ac0166f7a59eDc", - "sUSDe": "0x2A06DEAc3E863c23DD6a89Eeacd80aBA9E08B77B", - "USD0": "0x6224dC817dC4D5c53fcF3eb08A4f84C456F9f38f", - "solvBtc": "0x035B6f6E50D8c250d80E3f919bBcC76aD2884c94", - "wstEth": "0xb825f0997824Fe07DaB51Fa7Da9f4c864F19eb82", - "wETH": "0x6225bC323f277e3D342Ec600d132aCc7beDA1fc0", - "weETH": "0xb1987E120E827339380bf429a82550f46AcAB8b4" - }, - "cronos_zkevm": { - "wzkCRO": "0xc1bf55ee54e16229d9b369a5502bfe5fc9f20b6d", - "ETH": "0x898b3560affd6d955b1574d87ee09e46669c60ea", - "USDC": "0xaa5b845f8c9c047779bedf64829601d8b264076c" - }, - "neox": { - "WGAS": "0x008cd7f573998cb841a5d82a857ed1f0ce03a653", - "WGAS_1": "0xde41591ed1f8ed1484ac2cd8ca0876428de60eff" - }, - "gravity": { - "wG": "0xbb859e225ac8fb6be1c7e38d87b767e95fef0ebd", - "WETH": "0xf6f832466Cd6C21967E0D954109403f36Bc8ceaA", - "USDC_e": "0xfbda5f676cb37624f28265a144a48b0d6e87d3b6" - }, - "idex": { - "0xfbda5f676cb37624f28265a144a48b0d6e87d3b6": "0xfbda5f676cb37624f28265a144a48b0d6e87d3b6", - "USDC": "0xD56768A659D4c7e2a0a18b6D96F1f74Ce3566b97" - }, - "etn": { - "WETN": "0x138dafbda0ccb3d8e39c19edb0510fc31b7c1c77" - }, - "bitkub": { - "KKUB": "0x67ebd850304c70d983b2d1b93ea79c7cd6c3f6b5" - }, - "shape": { - "WETH": "0x4200000000000000000000000000000000000006", - "WETH_1": "0x48A9B22b80F566E88f0f1DcC90Ea15A8A3bAE8a4" - }, - "hela": { - "hUSDC": "0xf5b85320a772b436cb8105441a3db9ba29437b4a", - "hUSDT": "0xd3442073fa7ccf8a7c39d95dc125cd59497aa078", - "WHLUSD": "0x3a035615e101373fa9ba21c5bea7fe4026fc40b4" - }, - "lisk": { - "USDT": "0x05d032ac25d322df992303dca074ee7392c117b9", - "WETH": "0x4200000000000000000000000000000000000006", - "LSK": "0xac485391eb2d7d88253a7f1ef18c37f4242d1a24" - }, - "flow": { - "WFLOW": "0xd3bF53DAC106A0290B0483EcBC89d40FcC961f3e", - "ankrFLOWEVM": "0x1b97100eA1D7126C4d60027e231EA4CB25314bdb", - "USDC_e": "0x7f27352d5f83db87a5a3e00f4b07cc2138d8ee52", - "stgUSDC": "0xf1815bd50389c46847f0bda824ec8da914045d14", - "USDF": "0x2aabea2058b5ac2d339b163c6ab6f2b6d53aabed", - "WETH": "0x2f6f07cdcf3588944bf4c42ac74ff24bf56e7590" - }, - "matchain": { - "MAT": "0x44a83a012B926853DFc1BBE2ec5BEf37126067e8", - "USDT": "0xB6dc6C8b71e88642cEAD3be1025565A9eE74d1C6", - "WBNB": "0x4200000000000000000000000000000000000006" - }, - "fuel": { - "USDC": "0x286c479da40dc953bddc3bb4c453b608bba2e0ac483b077bd475174115395e6b", - "ETH": "0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07", - "USDT": "0xa0265fb5c32f6e8db3197af3c7eb05c48ae373605b8165b6f4a51c5b0ba4812e", - "sDAI": "0x9e46f919fbf978f3cad7cd34cca982d5613af63ff8aab6c379e4faa179552958", - "mBTC": "0xaf3111a248ff7a3238cdeea845bb2d43cf3835f1f6b8c9d28360728b55b9ce5b", - "METH": "0xafd219f513317b1750783c6581f55530d6cf189a5863fd18bd1b3ffcec1714b4", - "RZETH": "0x91b3559edb2619cde8ffb2aa7b3c3be97efd794ea46700db7092abeee62281b0" - }, - "wc": { - "USDC_e": "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1", - "WLD": "0x2cFc85d8E48F8EAB294be644d9E25C3030863003", - "WBTC": "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3", - "WETH": "0x4200000000000000000000000000000000000006", - "WARS": "0x0DC4F92879B7670e5f4e4e6e3c801D229129D90D", - "LAC": "0x0fe75cae44e409af8c9e631985d6b3de8e1138de" - }, - "apechain": { - "WAPE": "0x48b62137EdfA95a428D35C09E44256a739F6B557", - "sDAI": "0xA2235d059F80e176D931Ef76b6C51953Eb3fBEf4", - "ApeETH": "0xcF800F4948D16F23333508191B1B1591daF70438" - }, - "zircuit": { - "WETH": "0x4200000000000000000000000000000000000006" - }, - "hedera": { - "XSAUCE": "0x00000000000000000000000000000000001647e8", - "USDC": "0x000000000000000000000000000000000006f89a", - "KARATE": "0x000000000000000000000000000000000022d6de", - "HBARX": "0x00000000000000000000000000000000000cba44", - "SAUCE": "0x00000000000000000000000000000000000b2ad5", - "WHBAR": "0x0000000000000000000000000000000000163b5a", - "DOVU": "0x000000000000000000000000000000000038b3db", - "HLQT": "0x00000000000000000000000000000000005c9f70", - "HST": "0x00000000000000000000000000000000000ec585", - "PACK": "0x0000000000000000000000000000000000492a28", - "STEAM": "0x000000000000000000000000000000000030fb8b", - "USDC_HTS": "0x0000000000000000000000000000000000101ae3", - "USDT_HTS": "0x0000000000000000000000000000000000101af0", - "DAI_HTS": "0x0000000000000000000000000000000000101af5", - "WBTC_HTS": "0x0000000000000000000000000000000000101afb", - "WETH_HTS": "0x000000000000000000000000000000000008437c", - "BONZO": "0x00000000000000000000000000000000007e545e" - }, - "morph": { - "WETH": "0x5300000000000000000000000000000000000011", - "USDT": "0xc7d67a9cbb121b3b0b9c053dd9f469523243379a", - "USDC": "0xe34c91815d7fc18a9e2148bcd4241d0a5848b693", - "WBTC": "0x803dce4d3f4ae2e17af6c51343040dee320c149d" - }, - "eclipse": { - "ETH": "So11111111111111111111111111111111111111112", - "ETH_1": "9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP", - "SOL": "BeRUj3h7BqkbdfFU7FBNYbodgf8GCHodzKvF9aVjNNfL", - "USDC": "AKEWE7Bgh87GPp171b4cJPSSZfmZwQ3KaqYqXoKLNAEE", - "WIF": "841P4tebEgNux2jaWSjCoi9LhrVr9eHGjLc758Va3RPH", - "TIA": "9RryNMhAVJpAwAGjCAMKbbTFwgjapqPkzpGMfTQhEjf8", - "USDT": "CEBP3CqAbW4zdZA57H2wfaSG1QNdzQ72GiQEbQXyW9Tm" - }, - "unit0": { - "UNIT": "0xcf43f7703d9b4e8835f977ef364b4014fa7e856e", - "USDC": "0xEb19000D90f17FFbd3AD9CDB8915D928F4980fD1", - "USDT": "0xb303d80db8415FD1d3C9FED68A52EEAc9a052671", - "WETH": "0x1B100DE3F13E3f8Bb2f66FE58c1949c32E71248B", - "WBTC": "0x9CE808657ba90C65a2700b1cA5D943eC72834B52" - }, - "rbn": { - "WRBNT": "0x6ed1f491e2d31536d6561f6bdb2adc8f092a6076", - "LQDX": "0x0233971bd2de29e81029336c46997055df3b5282" - }, - "shido": { - "WSHIDO": "0x8cbaffd9b658997e7bf87e98febf6ea6917166f7", - "USDC": "0xeE1Fc22381e6B6bb5ee3bf6B5ec58DF6F5480dF8" - }, - "ace": { - "USDC_e": "0x71ee6485cf72b9c3bf183528a2241474f21b2efa" - }, - "tara": { - "WTARA": "0x5d0fa4c5668e5809c83c95a7cef3a9dd7c68d4fe", - "USDM": "0xc26b690773828999c2612549cc815d1f252ea15e" - }, - "corn": { - "wBTCN": "0xda5dDd7270381A7C2717aD10D1c0ecB19e3CDFb2", - "CORN": "0x44f49ff0da2498bCb1D3Dc7C0f999578F67FD8C6", - "USDT0": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", - "USDC_e": "0xDF0B24095e15044538866576754F3C964e902Ee6", - "wETH": "0x485BBC4F98c071C9BD74Ac255262E61F866f071a", - "weETH": "0x85aDfA60dDf86b67E6fD493Bd2c774b2eD772D14", - "LBTC": "0xecAc9C5F704e954931349Da37F60E39f515c11c1" - }, - "sonic": { - "wS": "0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38", - "WS_1": "0x832497895f05100e53f42dfa8fc758b4866b183a", - "USDC_e": "0x29219dd400f2Bf60E5a23d13Be72B486D4038894", - "WETH": "0x309C92261178fA0CF748A855e90Ae73FDb79EBc7", - "STS": "0xe5da20f15420ad15de0fa650600afc998bbe3955", - "scETH": "0x3bcE5CB273F0F148010BbEa2470e7b5df84C7812", - "scUSD": "0xd3DCe716f3eF535C5Ff8d041c1A41C3bd89b97aE", - "USDT": "0x6047828dc181963ba44974801ff68e538da5eaf9", - "LBTC": "0xecAc9C5F704e954931349Da37F60E39f515c11c1", - "WBTC": "0x0555e30da8f98308edb960aa94c0db47230d2b9c" - }, - "vinu": { - "USDT": "0xC0264277fcCa5FCfabd41a8bC01c1FcAF8383E41", - "ETH": "0xDd4b9b3Ce03faAbA4a3839c8B5023b7792be6e2C", - "VINU": "0x00c1E515EA9579856304198EFb15f525A0bb50f6", - "WVC": "0xEd8c5530a0A086a12f57275728128a60DFf04230" - }, - "sophon": { - "ETH": "0x72af9f169b619d85a47dfa8fefbcd39de55c567d", - "USDT": "0x6386da73545ae4e2b2e0393688fa8b65bb9a7169", - "USDC": "0x9aa0f72392b5784ad86c6f3e899bcc053d00db4f", - "WSTETH": "0x60d02f185f80644e1a5ae35497736dd31d1b078b", - "WEETH": "0x5e9fc50b44988b66ba84500f8bc32c0493fe8f8d", - "DAI": "0x88171a5bbacd92ca5e25575c5904581c80b025dd", - "SDAI": "0xeccbb9360d235548473cb8c752735f68e652439b" - }, - "ink": { - "WETH": "0x4200000000000000000000000000000000000006" - }, - "duckchain": { - "WTON": "0x7F9308E8d724e724EC31395f3af52e0593BB2e3f" - }, - "qom": { - "WQOM": "0xa26dfBF98Dd1A32FAe56A3D2B2D60A8a41b0bDF0" - }, - "vana": { - "WVANA": "0x00eddd9621fb08436d0331c149d1690909a5906d", - "USDC_e": "0xf1815bd50389c46847f0bda824ec8da914045d14" - }, - "crossfi": { - "WXFI": "0xC537D12bd626B135B251cCa43283EFF69eC109c4" - }, - "water": { - "wWATER": "0xC807C5FfFf748eF435Ddb99b181846Edd1e70041" - }, - "kopi": { - "uasusdc": "uasusdc", - "ucusdc": "ucusdc", - "uasusdtinj": "uasusdtinj", - "ucusdtinj": "ucusdtinj" - }, - "swellchain": { - "WETH": "0x4200000000000000000000000000000000000006", - "uBTC": "0xb5668713E9BA8bC96f97D691663E70b54CE90b0A", - "stBTC": "0xf6718b2701D4a6498eF77D7c152b2137Ab28b8A3", - "SWELL": "0x2826D136F5630adA89C1678b64A61620Aab77Aea", - "swBTC": "0x1cf7b5f266A0F39d6f9408B90340E3E71dF8BF7B", - "uBTC_1": "0xFA3198ecF05303a6d96E57a45E6c815055D255b1", - "USDT": "0xb89c6ED617f5F46175E41551350725A09110bbCE", - "USDC": "0x99a38322cAF878Ef55AE4d0Eda535535eF8C7960", - "weETH": "0xA6cB988942610f6731e664379D15fFcfBf282b44", - "rswETH": "0x18d33689AE5d02649a859A1CF16c9f0563975258", - "swETH": "0x09341022ea237a4DB1644DE7CCf8FA0e489D85B7", - "pzETH": "0x9cb41CD74D01ae4b4f640EC40f7A60cA1bCF83E7", - "ezETH": "0x2416092f143378750bb29b79eD961ab195CcEea5", - "rsETH": "0xc3eACf0612346366Db554C991D7858716db09f58", - "wstETH": "0x7c98E0779EB5924b3ba8cE3B17648539ed5b0Ecc", - "USDe": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34", - "sUSDe": "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - "ENA": "0x58538e6A46E07434d7E7375Bc268D3cb839C0133" - }, - "elys": { - "uelys": "uelys" - }, - "soneium": { - "WETH": "0x4200000000000000000000000000000000000006", - "USDC": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", - "USDT": "0x3A337a6adA9d885b6Ad95ec48F9b75f197b5AE35", - "ASTAR": "0x2cae934a1e84f693fbb78ca5ed3b0a6893259441", - "vASTR": "0x60336f9296c79da4294a19153ec87f8e52158e5f" - }, - "odyssey": { - "WDIONE": "0xf21cbaf7bd040d686bd390957770d2ea652e4013" - }, - "mantra": { - "uom": "uom" - }, - "verus": { - "VERUS": "i5w5MuNik5NtLcYmNzcvaoixooEebB6MGV", - "DAI": "iGBs4DWztRNvNEJBt4mqHszLxfKTNHTkhM", - "MAKER": "iCkKJuJScy4Z6NSDK7Mt42ZAB2NEnAE1o4", - "ETH": "i9nwxtKuVYX4MSbeULLiK2ttVi6rUEhh4X", - "TBTC": "iS8TfRPfVpKo5FVfSUzfHBQxo9KuzpnqLU", - "USDT": "i9oCSqKALwJtcv49xUKS2U2i79h1kX6NEY" - }, - "spn": { - "WETH": "0x1fB719f10b56d7a85DCD32f27f897375fB21cfdd", - "ARB": "0xA2555701754464d32D9624149E3fDb459F3c8DE4", - "USDC_e": "0x6c030c5cc283f791b26816f325b9c632d964f8a1", - "FLY": "0x80eFAD50D395671C13C4b1FA2969f7a7Aa9EF7b3", - "WBTC": "0x6e142cdaefa4ba7786e8d1ff74968db67c3b910d" - }, - "occ": { - "WEDU": "0xd02e8c38a8e3db71f8b2ae30b8186d7874934e12", - "BLEND": "0x526e8a66e357ffeaeeec6d7be1e5ea44a788dd1d", - "USDT": "0x7277cc818e3f3ffbb169c6da9cc77fc2d2a34895", - "USDC": "0x836d275563bab5e93fd6ca62a95db7065da94342", - "WETH": "0xa572bf655f61930b6f0d4546a67cd1376220081a", - "WBTC": "0xac0313f97398b585f23f8e50952f10d62350697c" - }, - "artela": { - "WART": "0xadcd43c78a914c6b14171ab1380bcfcfa25cd3ad", - "WART_1": "0x891986cf778004c86c5f2d8c18198635f725a5ce" - }, - "fluence": { - "WFLT": "0x236501327e701692a281934230af0b6be8df3353" - }, - "swan": { - "SWAN": "0xBb4eC1b56cB624863298740Fd264ef2f910d5564" - }, - "plume": { - "USDC_e": "0x3938A812c54304fEffD266C7E2E70B48F9475aD6", - "USDT": "0xA849026cDA282eeeBC3C39Afcbe87a69424F16B4", - "WETH": "0x626613B473F7eF65747967017C11225436EFaEd7" - }, - "plume_mainnet": { - "PayUSD": "0xe9e8330a71912F03E54E7D93795acD9a56f070Aa", - "pETH": "0x39d1F90eF89C52dDA276194E9a832b484ee45574", - "pUSD": "0xdddD73F5Df1F0DC31373357beAC77545dC5A6f3F", - "USCC": "0x4c21B7577C8FE8b0B0669165ee7C8f67fa1454Cf", - "USDC_e": "0x78adD880A697070c1e765Ac44D65323a0DcCE913", - "USDC": "0x222365EF19F7947e5484218551B56bb3965Aa7aF", - "USDT": "0xda6087E69C51E7D31b6DBAD276a3c44703DFdCAd", - "USTB": "0xE4fA682f94610cCd170680cc3B045d77D9E528a8", - "WETH": "0xca59cA09E5602fAe8B629DeE83FfA819741f14be", - "WPLUME": "0xEa237441c92CAe6FC17Caaf9a7acB3f953be4bd1" - }, - "abstract": { - "WETH": "0x3439153eb7af838ad19d56e1571fbd09333c2809", - "WETH_1": "0x66De4D3Ad9A490e4f090D60bFF1B82723150abB3", - "USDC": "0x84A71ccD554Cc1b02749b35d22F684CC8ec987e1", - "USDT": "0x0709F39376dEEe2A2dfC94A58EdEb2Eb9DF012bD" - }, - "zero_network": { - "WETH": "0xac98b49576b1c892ba6bfae08fe1bb0d80cf599c", - "WBTC": "0xf1f9e08a0818594fde4713ae0db1e46672ca960e", - "USDC": "0x6a6394f47dd0baf794808f2749c09bd4ee874e70", - "USDT": "0x6386da73545ae4e2b2e0393688fa8b65bb9a7169" - }, - "redstone": { - "WETH": "0x4200000000000000000000000000000000000006", - "USDC_e": "0xd5d59fc063e7548b6015a36feb10b875924a19be" - }, - "parex": { - "WPRX": "0x0b4231f1b076b78b04ab46c455b9129af70541d5", - "USDT": "0x64c22c9a13143dda17c0477d7959d084bc566334" - }, - "sxr": { - "WSX": "0x3E96B0a25d51e3Cc89C557f152797c33B839968f", - "USDC": "0x6629ce1cf35cc1329ebb4f63202f3f197b3f050b" - }, - "berachain": { - "WBERA": "0x6969696969696969696969696969696969696969", - "WBTC": "0x0555e30da8f98308edb960aa94c0db47230d2b9c", - "USDe": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34", - "rsETH": "0x4186BFC76E2E237523CBC30FD220FE055156b41F", - "STONE": "0xEc901DA9c68E90798BbBb74c11406A32A70652C3", - "rswETH": "0x850CDF416668210ED0c36bfFF5d21921C7adA3b8", - "sUSDe": "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - "USDC": "0x549943e04f40284185054145c6E4e9568C1D3241", - "HONEY": "0xFCBD14DC51f0A4d49d5E53C2E0950e0bC26d0Dce", - "WETH": "0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590", - "WFBTC": "0xA18717e22dfAbB36f0242259df4e9E563b6Ec70a" - }, - "stratis": { - "WSTRAX": "0xeA705D2DbD8DE7Dc70Db7B531D0F620d9CeE9d18" - }, - "silicon_zk": { - "WETH": "0xe66863b695a392507f5d68b6a7b8aa8218914059", - "USDT": "0x1e4a5963abfd975d8c9021ce480b42188849d41d", - "USDC": "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035", - "WBTC": "0xea034fb02eb1808c2cc3adbc15f447b93cbe08e1", - "DAI": "0xc5015b9d9161dca7e18e32f6f25c4ad850731fd4" - }, - "unichain": { - "WETH": "0x4200000000000000000000000000000000000006", - "DAI": "0x20CAb320A855b39F724131C69424240519573f81", - "UNI": "0x8f187aA05619a017077f5308904739877ce9eA21", - "USDC": "0x078D782b760474a361dDA0AF3839290b0EF57AD6" - }, - "sty": { - "WIP": "0x1514000000000000000000000000000000000000", - "USDC_e": "0xf1815bd50389c46847f0bda824ec8da914045d14" - }, - "formnetwork": { - "WETH": "0xb1b812b664c28E1bA1d35De925Ae88b7Bc7cdCF5", - "USDC": "0xFBf489bb4783D4B1B2e7D07ba39873Fb8068507D", - "USDT": "0xFA3198ecF05303a6d96E57a45E6c815055D255b1", - "WBTC": "0x0dc95Af5156fb0cC34a8c9BD646B748B9989A956" - }, - "hyperliquid": { - "WHYPE": "0x5555555555555555555555555555555555555555", - "wstHYPE": "0x94e8396e0869c9f2200760af0621afd240e1cf38", - "USDe": "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34", - "USDT0": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" - }, - "hsk": { - "WHSK": "0xb210d2120d57b758ee163cffb43e73728c471cf1", - "USDT": "0xf1b50ed67a9e2cc94ad3c477779e2d4cbfff9029", - "USDC": "0x054ed45810dbbab8b27668922d110669c9d88d0a" - }, - "saga": { - "USDC": "0xfc960c233b8e98e0cf282e29bde8d3f105fc24d5", - "USDT": "0xc8fe3c1de344854f4429bb333affaef97ef88cea", - "WETH": "0xeb41d53f14cb9a67907f2b8b5dbc223944158ccb", - "UNI": "0x4e33613add93463e82a14080021f2ffaf1e062cf", - "SAGA": "0xa19377761fed745723b90993988e04d641c2cffe" - }, - "hemi": { - "WETH": "0x4200000000000000000000000000000000000006", - "USDC_e": "0xad11a8BEb98bbf61dbb1aa0F6d6F2ECD87b35afA", - "DAI": "0x6c851f501a3f24e29a8e39a29591cddf09369080", - "USDT": "0xbb0d083fb1be0a9f6157ec484b6c79e0a4e31c2e", - "WBTC": "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3", - "rsETH": "0xc3eACf0612346366Db554C991D7858716db09f58" - }, - "move": { - "USDT": "0x447721a30109c662dde9c73a0c2c9c9c459fb5e5a9c92f03c50fa69737f5d08d", - "USDC": "0x83121c9f9b0527d1f056e21a950d6bf3b9e9e2e8353d0e95ccea726713cbea39", - "WBTC": "0xb06f29f24dde9c6daeec1f930f14a441a8d6c0fbea590725e88b340af3e1939c", - "ETH": "0x908828f4fb0213d4034c3ded1630bbd904e8a3a6bf3c63270887f0b06653a376" - }, - "mtt_network": { - "USDC": "0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265", - "USDT": "0x78a39b9101983D2009Ff14773E8e47Ca3a23BBfD" - }, - "winr": { - "WINR": "0xd77b108d4f6cefaa0cae9506a934e825becca46e", - "WINR_1": "0xbf6fa9d2bf9f681e7b6521b49cf8eccf9ad8d31d", - "USDC": "0x59edbb343991d30f77dcdbad94003777e9b09ba9", - "ARB": "0xF2857668777135E22f8CD53C97aBf8821b7F0bdf", - "USDT": "0x0381132632E9E27A8f37F1bc56bd5a62d21a382B", - "ETH": "0xE60256921AE414D7B35d6e881e47931f45E027cf", - "SOL": "0x5B20DcAB6B91f157A39036c6c0e6F16e56d74CDb" - }, - "perennial": { - "USDC_e": "0x39CD9EF9E511ec008247aD5DA01245D84a9521be" - }, - "goat": { - "USDT": "0xE1AD845D93853fff44990aE0DcecD8575293681e", - "USDC": "0x3022b87ac063DE95b1570F46f5e470F8B53112D8", - "WBTC": "0xbC10000000000000000000000000000000000000", - "WETH": "0x3a1293Bdb83bBbDd5Ebf4fAc96605aD2021BbC0f", - "BTCB": "0xfe41e7e5cB3460c483AB2A38eb605Cda9e2d248E", - "DOGEB": "0x1E0d0303a8c4aD428953f5ACB1477dB42bb838cf", - "ArtBTC": "0x02F294cC9Ceb2c80FbA3fD779e17FE191Cc360C4", - "ArtDOGEB": "0xa3027972E2bf168d3Df12a1533f073b330126f34", - "ArtBTCB": "0x941508f0B823f1BC40a9beEFCE5e544E525a94c3", - "uBTC": "0x78E26E8b953C7c78A58d69d8B9A91745C2BbB258" - }, - "supra": { - "SUPRA": "0x1::supra_coin::SupraCoin", - "dexUSDC": "0x8f7d16ade319b0fce368ca6cdb98589c4527ce7f5b51e544a9e68e719934458b::hyper_coin::DexlynUSDC" - }, - "prom": { - "USDT": "0x7e942605B5028E3B751dBB5Ef8afC5CF85a5A7eD", - "USDC": "0xd9c95e2ad330E11D7Dfa58f18504049f625E955e", - "USDT_1": "0x6064C9028d069a7822d30EF17065A57524A5FcAb", - "WPROM": "0x04A21a38D5E275d6023B27504beB3095dC43B0C0" - }, - "mxczkevm": { - "WMXC": "0xcBCE60BAD702026d6385E5f449e44099A655d14f", - "WETH": "0x623676Ec0a440f2Fe6308b8bdaC9482ee1b64796", - "USDT": "0x30B7FB8CC9749029bc81d8fB3B4e9E0a529A7b44", - "USDC": "0x7c55B4842d13C5fbA418e8f65BF5BE3E47A4ac2d", - "DAI": "0xac790d98Ec71e713880488adBe23F441aebBa846" - }, - "haven1": { - "WH1": "0xB041be50694f3018912c18c710e7BBB931002598", - "hETH": "0xa4E7604d7A3f9f7A2eE79723cae4122a72Bc6984", - "hUSDT": "0x73A6258c102c636A1b54F400637018cE0E984825", - "hUSDC": "0x33B67ED2b733576572C19D744a365181d97f936c", - "cbBTC": "0x61cd868eE83319dbc16616D34084904a369D5338", - "esH1": "0xC6414DC21b94f88e7aD43b92d98E27EcA6e97cbE", - "hsETH": "0x750008544Ce5a197eA88A6679962ADA79210c194", - "hcbETH": "0x0A7a6384E0640C3Efd5587635E201cb960819456" - }, - "nibiru": { - "NIBI": "unibi", - "WNIBI": "0x0CaCF669f8446BeCA826913a3c6B96aCD4b02a97", - "stNIBI": "0xcA0a9Fb5FBF692fa12fD13c0A900EC56Bb3f0a7b", - "stNIBI.nibi": "tf/nibi1udqqx30cw8nwjxtl4l28ym9hhrp933zlq8dqxfjzcdhvl8y24zcqpzmh8m/ampNIBI", - "USDC": "0x0829F361A05D993d5CEb035cA6DF3446b060970b", - "USDT": "0x43F2376D5D03553aE72F4A8093bbe9de4336EB08", - "WETH": "0xcdA5b77E2E2268D9E09c874c1b9A4c3F07b37555", - "AXV": "0x7168634Dd1ee48b1C5cC32b27fD8Fc84E12D00E6" - }, - "babylon": { - "BABY": "ubbn" - }, - "ogpu": { - "wOGPU": "0x4714383dF98d792DB7b9e16EBa90df75CBF0388d" - }, - "aleph_zero": { - "WETH": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", - "USDC": "0x18d25B4e18165c97e1285212e5d1f80eDD6d3Aa7", - "USDT": "0xD648529D4803d3467bA8850577BEd4e4b8Ae583C", - "USDC_e": "0x18d25B4e18165c97e1285212e5d1f80eDD6d3Aa7" - }, - "lens": { - "WGHO": "0x6bdc36e20d267ff0dd6097799f82e78907105e2f", - "USDC": "0x88f08e304ec4f90d644cec3fb69b8ad414acf884", - "ETH": "0xe5ecd226b3032910ceaa43ba92ee8232f8237553" - }, - "hydradx": { - "USDC": "0x0000000000000000000000000000000100000016", - "USDT": "0x000000000000000000000000000000010000000a", - "WBTC": "0x0000000000000000000000000000000100000013", - "DOT": "0x0000000000000000000000000000000100000005", - "vDOT": "0x000000000000000000000000000000010000000f", - "tBTC": "0x00000000000000000000000000000001000f453d" - }, - "katana": { - "KAT": "0x7f1f4b4b29f5058fa32cc7a97141b8d7e5abdc2d", - "AUSD": "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a", - "bvUSD": "0x876aac7648d79f87245e73316eb2d100e75f3df1", - "LBTC": "0xecAc9C5F704e954931349Da37F60E39f515c11c1", - "VB_WETH": "0xEE7D8BCFb72bC1880D0Cf19822eB0A2e6577aB62", - "VB_USDC": "0x203A662b0BD271A6ed5a60EdFbd04bFce608FD36", - "VB_USDT": "0x2DCa96907fde857dd3D816880A0df407eeB2D2F2", - "VB_USDS": "0x62D6A123E8D19d06d68cf0d2294F9A3A0362c6b3", - "VB_WBTC": "0x0913DA6Da4b42f538B445599b46Bb4622342Cf52", - "wstETH": "0x7Fb4D0f51544F24F385a421Db6e7D4fC71Ad8e5C", - "weETH": "0x9893989433e7a383Cb313953e4c2365107dc19a7", - "MORPHO": "0x1e5eFCA3D0dB2c6d5C67a4491845c43253eB9e4e", - "POL": "0xb24e3035d1FCBC0E43CF3143C3Fd92E53df2009b", - "SUSHI": "0x17BFF452dae47e07CeA877Ff0E1aba17eB62b0aB", - "YFI": "0x476eaCd417cD65421bD34fca054377658BB5E02b", - "uADA": "0xa3A34A0D9A08CCDDB6Ed422Ac0A28a06731335aA", - "uSOL": "0x9B8Df6E244526ab5F6e6400d331DB28C8fdDdb55", - "uSUI": "0xb0505e5a99abd03d94a1169e638B78EDfEd26ea4", - "uXRP": "0x2615a94df961278DcbC41Fb0a54fEc5f10a693aE" - }, - "titan": { - "atkx": "atkx", - "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/usdc": "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/usdc", - "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/usdt": "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/usdt", - "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/eth": "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/eth", - "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/sol": "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/sol", - "factory/titan1eyfccmjm6732k7wp4p6gdjwhxjwsvje44j0hfx8nkgrm8fs7vqfsalaj2e/wbtc": "factory/titan1eyfccmjm6732k7wp4p6gdjwhxjwsvje44j0hfx8nkgrm8fs7vqfsalaj2e/wbtc" - }, - "xrplevm": { - "XRP": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - "WXRP": "0x7C21a90E3eCD3215d16c3BBe76a491f8f792d4Bf", - "USDC": "0xa16148c6ac9ede0d82f0c52899e22a575284f131", - "WETH": "0x50498dc52bcd3daeb54b7225a7d2fa8d536f313e" - }, - "btnx": { - "USDC_E": "0x29ee6138dd4c9815f46d34a4a1ed48f46758a402" - }, - "vechain": { - "WVET": "0xd8ccdd85abdbf68dfec95f06c973e87b1b5a9997", - "VVET": "0x45429a2255e7248e57fce99e7239aed3f84b7a53", - "VTHO": "0x0000000000000000000000000000456e65726779" - }, - "eni": { - "USDT": "0xdc1a8a35b0baa3229b13f348ed708a2fd50b5e3a", - "WEGAS": "0x6d1e851446f4d004ae2a72f9afed85e8829a205e" - }, - "peaq": { - "WPEAQ": "0x3cD66d2e1fac1751B0A20BeBF6cA4c9699Bb12d7" - }, - "tac": { - "WTAC": "0xB63B9f0eb4A6E6f191529D71d4D88cc8900Df2C9", - "TON": "0xb76d91340f5ce3577f0a056d29f6e3eb4e88b140", - "tsTON": "0xd44f691aed69fe43180b95b6f82f89c18fb93094", - "WETH": "0x61d66bc21fed820938021b06e9b2291f3fb91945", - "USDT0": "0xaf988c3f7cb2aceabb15f96b19388a259b6c438f" - }, - "hydragon": { - "WHYDRA": "0x900e563a74be93807e8a4a3b52d72a351badd6bf", - "LYDRA": "0x0000000000000000000000000000000000001013", - "USDC": "0xbbf6f2d2d462185df545c744974b7eb6ddadfcfd", - "WBTC": "0xb8043294eff43bcd01bd33968c7ae9dbc6a4bf8b" - }, - "bitci": { - "WBITCI": "0xe0d0f25b5fcfa4d3edd9c2186451d9e04c4b9f11" - }, - "alephium": { - "USDT": "556d9582463fe44fbd108aedc9f409f69086dc78d994b88ea6c9e65f8bf98e00", - "USDC": "722954d9067c5a5ad532746a024f2a9d7a18ed9b90e27d0a3a504962160b5600", - "WETH": "19246e8c2899bc258a1156e08466e3cdd3323da756d8a543c7fc911847b96f00", - "WBTC": "383bc735a4de6722af80546ec9eeb3cff508f2f68e97da19489ce69f3e703200" - }, - "somnia": { - "WSOMI": "0x046ede9564a72571df6f5e44d0405360c0f4dcab", - "USDC": "0x28BEc7E30E6faee657a03e19Bf1128AaD7632A00" - }, - "plasma": { - "USDT0": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" - }, - "xone": { - "WXOC": "0x4eabbaBeBbb358660cA080e8F2bb09E4a911AB4E", - "WETH": "0x8F2C3ab64976F2e69a788C04C956f661619c4066", - "WBNB": "0xE3159D4753C4126aFe1F5cCaf4D90ae2524Bf7E9", - "WTRX": "0x1b2bE62A0da2Dc8Cb725Fe6cCb8282160D017b9B", - "USDC": "0x02D45d684A233F3bA0C55fE941854FC0E5235fE1", - "USDT": "0xb575796D293f37F112f3694b8ff48D711FE67EC7", - "USDH": "0x26df50102098C19aB4374b2D5572a1bCde38f160" - } -} diff --git a/projects/helper/curators/configs.js b/projects/helper/curators/configs.js deleted file mode 100644 index 23e8361c70f..00000000000 --- a/projects/helper/curators/configs.js +++ /dev/null @@ -1,250 +0,0 @@ -const { allAbi, abi, assets } = require("./vesu") - -const ABI = { - owner: 'address:owner', - decimals: 'uint8:decimals', - totalSupply: 'uint256:totalSupply', - ERC4626: { - asset: 'address:asset', - totalAssets: 'uint256:totalAssets', - }, - aera: { - assetRegistry: 'address:assetRegistry', - numeraireToken: 'address:numeraireToken', - value: 'uint256:value', - }, - morpho: { - CreateMetaMorphoEvent: 'event CreateMetaMorpho(address indexed metaMorpho, address indexed caller, address initialOwner, uint256 initialTimelock, address indexed asset, string name, string symbol, bytes32 salt)', - }, - euler: { - getProxyListLength: 'uint256:getProxyListLength', - proxyList: 'function proxyList(uint256) view returns (address)', - creator: 'address:creator', - }, - silo: { - CreateSiloVaultEvent: 'event CreateSiloVault(address indexed vault, address incentivesController, address idleVault)', - }, - boringVault: { - hook: 'address:hook', - accountant: 'address:accountant', - base: 'address:base', - getRate: 'uint256:getRate', - }, - symbiotic: { - collateral: 'address:collateral', - totalStake: 'uint256:totalStake', - }, -} - -const MorphoConfigs = { - ethereum: { - vaultFactories: [ - { - address: '0xa9c3d3a366466fa809d1ae982fb2c46e5fc41101', - fromBlock: 18925584, - }, - { - address: '0x1897a8997241c1cd4bd0698647e4eb7213535c24', - fromBlock: 21439510, - }, - ], - }, - base: { - vaultFactories: [ - { - address: '0xA9c3D3a366466Fa809d1Ae982Fb2c46E5fC41101', - fromBlock: 13978134, - }, - { - address: '0xFf62A7c278C62eD665133147129245053Bbf5918', - fromBlock: 23928808, - }, - ], - }, - polygon: { - vaultFactories: [ - { - address: '0xa9c87daB340631C34BB738625C70499e29ddDC98', - fromBlock: 66931118, - }, - ], - }, - wc: { - vaultFactories: [ - { - address: '0x4DBB3a642a2146d5413750Cca3647086D9ba5F12', - fromBlock: 9025733, - }, - ], - }, - corn: { - vaultFactories: [ - { - address: '0xe430821595602eA5DD0cD350f86987437c7362fA', - fromBlock: 253027, - }, - ], - }, - unichain: { - vaultFactories: [ - { - address: '0xe9EdE3929F43a7062a007C3e8652e4ACa610Bdc0', - fromBlock: 9316789, - }, - ], - }, - hyperliquid: { - vaultFactories: [ - { - address: '0xec051b19d654C48c357dC974376DeB6272f24e53', - fromBlock: 1988677, - }, - ], - }, - katana: { - vaultFactories: [ - { - address: '0x1c8De6889acee12257899BFeAa2b7e534de32E16', - fromBlock: 2741420, - }, - ], - }, - plume_mainnet: { - vaultFactories: [ - { - address: '0x2525D453D9BA13921D5aB5D8c12F9202b0e19456', - fromBlock: 1912478, - }, - ], - }, - arbitrum: { - vaultFactories: [ - { - address: '0x878988f5f561081deEa117717052164ea1Ef0c82', - fromBlock: 296447195, - }, - ], - }, -} - -const EulerConfigs = { - ethereum: { - vaultFactories: [ - '0x29a56a1b8214d9cf7c5561811750d5cbdb45cc8e', - ], - }, - base: { - vaultFactories: [ - '0x7f321498a801a191a93c840750ed637149ddf8d0', - ], - }, - unichain: { - vaultFactories: [ - '0xbad8b5bdfb2bcbcd78cc9f1573d3aad6e865e752', - ], - }, - swellchain: { - vaultFactories: [ - '0x238bf86bb451ec3ca69bb855f91bda001ab118b9', - ], - }, - sonic: { - vaultFactories: [ - '0xf075cc8660b51d0b8a4474e3f47edac5fa034cfb', - ], - }, - berachain: { - vaultFactories: [ - '0x5c13fb43ae9bae8470f646ea647784534e9543af', - ], - }, - avax: { - vaultFactories: [ - '0xaf4b4c18b17f6a2b32f6c398a3910bdcd7f26181', - ], - }, - bob: { - vaultFactories: [ - '0x046a9837A61d6b6263f54F4E27EE072bA4bdC7e4', - ], - }, - bsc: { - vaultFactories: [ - '0x7f53e2755eb3c43824e162f7f6f087832b9c9df6', - ], - }, - tac: { - vaultFactories: [ - '0x2b21621b8Ef1406699a99071ce04ec14cCd50677', - ], - }, - plasma: { - vaultFactories: [ - '0x42388213C6F56D7E1477632b58Ae6Bba9adeEeA3', - ], - }, - linea: { - vaultFactories: [ - '0x84711986fd3bf0bfe4a8e6d7f4e22e67f7f27f04', - ], - }, - arbitrum: { - vaultFactories: [ - '0x78df1cf5bf06a7f27f2acc580b934238c1b80d50', - ], - }, -} - -const SiloConfigs = { - sonic: { - vaultFactories: [ - { - address: '0x7867f2b584e91d7c3798f4659b6fffa3631ea06a', - fromBlock: 21718349, - }, - { - address: '0x02BbB86731EC6aA81B52961e14dD1AebE5171b1d', - fromBlock: 32865457, - } - ], - }, - ethereum: { - vaultFactories: [ - { - address: '0xe7Ed54e4e432Cf85024f8D4434cB3756338469B0', - fromBlock: 22666249, - } - ] - }, - arbitrum: { - vaultFactories: [ - { - address: '0x451b35b2dF223a7Ef71c4ecb451C1C15019e28A5', - fromBlock: 345527587, - } - ] - }, - avax: { - vaultFactories: [ - { - address: '0x77cbCB96fFFe44d344c54A5868C49ad1C5AaAC6A', - fromBlock: 64052773, - } - ] - } -} - -const VesuConfigs = { - allAbi, - abi, - assets, - singleton: '0x000d8d6dfec4d33bfb6895de9f3852143a17c6f92fd2a21da3d6924d34870160', -} - -module.exports = { - ABI, - MorphoConfigs, - EulerConfigs, - SiloConfigs, - VesuConfigs, -} diff --git a/projects/helper/curators/index.js b/projects/helper/curators/index.js deleted file mode 100644 index ee50044e2b9..00000000000 --- a/projects/helper/curators/index.js +++ /dev/null @@ -1,270 +0,0 @@ -const { getLogs2 } = require("../../helper/cache/getLogs") -const { ABI, MorphoConfigs, EulerConfigs, SiloConfigs, VesuConfigs } = require('./configs') -const { multiCall } = require('../chain/starknet') - -function isOwner(owner, owners) { - for (const item of owners) { - if (String(item).toLowerCase() === String(owner).toLowerCase()) { - return true - } - } - return false -} - -async function getMorphoVaults(api, owners) { - let allVaults = [] - for (const factory of MorphoConfigs[api.chain].vaultFactories) { - const vaultOfOwners = ( - await getLogs2({ - api, - eventAbi: ABI.morpho.CreateMetaMorphoEvent, - target: factory.address, - fromBlock: factory.fromBlock, - }) - ).filter(log => isOwner(log.initialOwner, owners)).map((log) => log.metaMorpho) - allVaults = allVaults.concat(vaultOfOwners) - } - return allVaults -} - -async function getEulerVaults(api, owners) { - let allVaults = [] - for (const factory of EulerConfigs[api.chain].vaultFactories) { - const getProxyListLength = await api.call({ - abi: ABI.euler.getProxyListLength, - target: factory, - permitFailure: true, - }); - if (getProxyListLength) { - const lists = [] - for (let i = 0; i < Number(getProxyListLength); i++) { - lists.push(i); - } - const proxyAddresses = await api.multiCall({ - abi: ABI.euler.proxyList, - calls: lists.map(index => { - return { - target: factory, - params: [index], - } - }), - }) - const proxyCreators = await api.multiCall({ - abi: ABI.euler.creator, - calls: proxyAddresses, - }); - for (let i = 0; i < proxyAddresses.length; i++) { - if (isOwner(proxyCreators[i], owners)) { - allVaults.push(proxyAddresses[i]) - } - } - } - } - return allVaults -} - -async function getSiloVaults(api, owners) { - let allVaults = [] - for (const factory of SiloConfigs[api.chain].vaultFactories) { - const siloVaults = ( - await getLogs2({ - api, - eventAbi: ABI.silo.CreateSiloVaultEvent, - target: factory.address, - fromBlock: factory.fromBlock, - }) - ).map((log) => log.vault) - const siloVaultsOwners = await api.multiCall({ - abi: ABI.owner, - calls: siloVaults, - }) - for (let i = 0; i < siloVaultsOwners.length; i++) { - if (isOwner(siloVaultsOwners[i], owners)) { - allVaults.push(siloVaults[i]) - } - } - } - return allVaults -} - -async function getCuratorTvlErc4626(api, vaults) { - const assets = await api.multiCall({ abi: ABI.ERC4626.asset, calls: vaults, permitFailure: true, }) - const totalAssets = await api.multiCall({ abi: ABI.ERC4626.totalAssets, calls: vaults, permitFailure: true, }) - for (let i = 0; i < assets.length; i++) { - if (!assets[i] || !totalAssets[i]) continue; - api.add(assets[i], totalAssets[i]); - } -} - -async function getCuratorTvlAeraVault(api, vaults) { - const assetRegistries = await api.multiCall({ abi: ABI.aera.assetRegistry, calls: vaults, permitFailure: true }) - const existedVaults = [] - const existedRegistries = [] - for (let i = 0; i < vaults.length; i++) { - if (assetRegistries[i]) { - existedVaults.push(vaults[i]) - existedRegistries.push(assetRegistries[i]) - } - } - const assets = await api.multiCall({ abi: ABI.aera.numeraireToken, calls: existedRegistries }) - const values = await api.multiCall({ abi: ABI.aera.value, calls: existedVaults, permitFailure: true }) - api.add(assets, values.map(v => v || 0)) -} - -async function getCuratorTvlVesuVault(api, vaults) { - const poolAssets = vaults.map((pool_id) => VesuConfigs.assets.map((asset) => ({ pool_id, asset }))).flat(); - const calls = poolAssets.map(({ pool_id, asset }) => ({ target: VesuConfigs.singleton, params: [pool_id, asset] })) - const assetStates = await multiCall({ calls, abi: VesuConfigs.abi.asset_config_unsafe, allAbi: VesuConfigs.allAbi }); - assetStates.forEach((res, index) => { - const { reserve } = res['0'] - api.add(poolAssets[index].asset, reserve); - }); -} - -async function getCuratorTvlBoringVault(api, vaults) { - let filterHookVaults = [] - const hooks = await api.multiCall({ abi: ABI.boringVault.hook, calls: vaults, permitFailure: true }) - for (let i = 0; i < vaults.length; i++) { - if (hooks[i]) { - filterHookVaults.push({ - vault: vaults[i], - hook: hooks[i], - }) - } - } - - let filterAccountantVaults = [] - const accountants = await api.multiCall({ abi: ABI.boringVault.accountant, calls: filterHookVaults.map(filterVault => filterVault.hook), permitFailure: true }) - for (let i = 0; i < filterHookVaults.length; i++) { - if (accountants[i]) { - filterAccountantVaults.push({ - vault: filterHookVaults[i].vault, - hook: filterHookVaults[i].hook, - accountant: accountants[i], - }) - } - } - const assets = await api.multiCall({ abi: ABI.boringVault.base, calls: filterAccountantVaults.map(filterVault => filterVault.accountant) }) - const rates = await api.multiCall({ abi: ABI.boringVault.getRate, calls: filterAccountantVaults.map(filterVault => filterVault.accountant) }) - const supplies = await api.multiCall({ abi: ABI.totalSupply, calls: filterAccountantVaults.map(filterVault => filterVault.vault) }) - const decimals = await api.multiCall({ abi: ABI.decimals, calls: filterAccountantVaults.map(filterVault => filterVault.accountant) }) - for (let i = 0; i < assets.length; i++) { - if (assets[i]) { - api.add(assets[i], rates[i] * supplies[i] / 10**(Number(decimals[i]))) - } - } -} - -async function getCuratorTvlSymbioticVault(api, vaults) { - const assets = await api.multiCall({ abi: ABI.symbiotic.collateral, calls: vaults, permitFailure: true }) - const existedVaults = [] - for (let i = 0; i < vaults.length; i++) { - if (assets[i]) { - existedVaults.push({ - vault: vaults[i], - asset: assets[i], - }) - } - } - const totalStakes = await api.multiCall({ abi: ABI.symbiotic.totalStake, calls: existedVaults.map(vault => vault.vault), permitFailure: true }) - api.add(assets, totalStakes.map(v => v || 0)) -} - -async function getNested4626Vaults(api, vaults) { - const vaultAsset = await api.multiCall({ abi: ABI.ERC4626.asset, calls: vaults, permitFailure: true }) - const nestedVaultAsset = await api.multiCall({ abi: ABI.ERC4626.asset, calls: vaultAsset, permitFailure: true }) - const totalAssets = await api.multiCall({ abi: ABI.ERC4626.totalAssets, calls: vaults, permitFailure: true }) - for (let i = 0; i < vaults.length; i++) { - const resolvedAsset = nestedVaultAsset[i] || vaultAsset[i] - if (!resolvedAsset) continue - api.add(resolvedAsset, totalAssets[i]) - } -} - -async function getCuratorTvl(api, vaults) { - const allVaults = { - morpho: vaults.morpho ? vaults.morpho : [], - euler: vaults.euler ? vaults.euler : [], - silo: vaults.silo ? vaults.silo : [], - } - - // dynamic get vaults list from event logs - if (vaults.morphoVaultOwners) { - allVaults.morpho = allVaults.morpho.concat(await getMorphoVaults(api, vaults.morphoVaultOwners)) - } - if (vaults.eulerVaultOwners) { - allVaults.euler = allVaults.euler.concat(await getEulerVaults(api, vaults.eulerVaultOwners)) - } - if (vaults.siloVaultOwners) { - allVaults.silo = allVaults.silo.concat(await getSiloVaults(api, vaults.siloVaultOwners)) - } - - await getCuratorTvlErc4626(api, allVaults.morpho) - await getCuratorTvlErc4626(api, allVaults.euler) - await getCuratorTvlErc4626(api, allVaults.silo) - - // mellow.finance vaults - if (vaults.mellow) { - await getCuratorTvlErc4626(api, vaults.mellow) - } - - // aera.finance vaults - if (vaults.aera) { - await getCuratorTvlAeraVault(api, vaults.aera) - } - - // vesu.xyz vaults - if (vaults.vesu) { - await getCuratorTvlVesuVault(api, vaults.vesu) - } - - // turtle.club vaults - boring vaults - if (vaults.turtleclub) { - await getCuratorTvlBoringVault(api, vaults.turtleclub) - } - - // turtle.club vaults - ERC626 vaults - if (vaults.turtleclub_erc4626) { - await getCuratorTvlErc4626(api, vaults.turtleclub_erc4626) - } - - // symiotic.fi - if (vaults.symbiotic) { - await getCuratorTvlSymbioticVault(api, vaults.symbiotic) - } - - // custom ERC4626 vaults { - if (vaults.erc4626) { - await getCuratorTvlErc4626(api, vaults.erc4626) - } - - // nested 4626 vaults - if (vaults.nestedVaults) { - await getNested4626Vaults(api, vaults.nestedVaults) - } -} - -function getCuratorExport(configs) { - const exportObjects = { - // these tvl are double count - doublecounted: true, - - // methodology - methodology: configs.methodology ? configs.methodology : 'Count all deposited assets in curated vaults.', - } - - for (const [chain, vaultConfigs] of Object.entries(configs.blockchains)) { - exportObjects[chain] = { - tvl: async (api) => { - return getCuratorTvl(api, vaultConfigs) - } - } - } - - return exportObjects -} - -module.exports = { - getCuratorTvl, - getCuratorExport, -} \ No newline at end of file diff --git a/projects/helper/curators/vesu.js b/projects/helper/curators/vesu.js deleted file mode 100644 index 8446085a0d3..00000000000 --- a/projects/helper/curators/vesu.js +++ /dev/null @@ -1,110 +0,0 @@ -const ADDRESSES = require('../coreAssets.json') - -const allAbi = [ - { - type: "function", - name: "decimals", - inputs: [], - outputs: [ - { - type: "core::integer::u8", - }, - ], - state_mutability: "view", - }, - { - "type": "function", - "name": "asset_config_unsafe", - "inputs": [ - { - "name": "pool_id", - "type": "felt" - }, - { - "name": "asset", - "type": "felt" - } - ], - "outputs": [ - { - "type": "(vesu::data_model::AssetConfig, core::integer::u256)" - } - ], - "state_mutability": "view", - "customInput": "address" - }, - { - "type": "struct", - "name": "vesu::data_model::AssetConfig", - "members": [ - { - "name": "total_collateral_shares", - "type": "core::integer::u256" - }, - { - "name": "total_nominal_debt", - "type": "core::integer::u256" - }, - { - "name": "reserve", - "type": "core::integer::u256" - }, - { - "name": "max_utilization", - "type": "core::integer::u256" - }, - { - "name": "floor", - "type": "core::integer::u256" - }, - { - "name": "scale", - "type": "core::integer::u256" - }, - { - "name": "is_legacy", - "type": "core::bool" - }, - { - "name": "last_updated", - "type": "core::integer::u64" - }, - { - "name": "last_rate_accumulator", - "type": "core::integer::u256" - }, - { - "name": "last_full_utilization_rate", - "type": "core::integer::u256" - }, - { - "name": "fee_rate", - "type": "core::integer::u256" - } - ] - }, -] - -const abi = {} -allAbi.forEach(i => abi[i.name] = i) - -const assets = [ - ADDRESSES.starknet.ETH, - ADDRESSES.starknet.WBTC, - ADDRESSES.starknet.USDC, - ADDRESSES.starknet.USDT, - ADDRESSES.starknet.WSTETH, - ADDRESSES.starknet.WSTETH_1, - ADDRESSES.starknet.STRK, - ADDRESSES.starknet.XSTRK, - ADDRESSES.starknet.SSTRK, - ADDRESSES.starknet.EKUBO, - "0x498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada", // CASH - "0x02019e47A0Bc54ea6b4853C6123FfC8158EA3AE2Af4166928b0dE6e89f06De6C" // rUSDC -]; - -module.exports = { - abi, - allAbi, - assets, -} diff --git a/projects/helper/env.js b/projects/helper/env.js deleted file mode 100644 index 55e9d514af9..00000000000 --- a/projects/helper/env.js +++ /dev/null @@ -1,88 +0,0 @@ - -const BOOL_KEYS = [ - 'HISTORICAL', - 'LLAMA_DEBUG_MODE', - 'STORE_IN_R2', - 'IS_RUN_FROM_CUSTOM_JOB', -] - -const _yek = "b523cf66-7a5a-4fe8-8d67-f604fd0492c2" // bifrost - -const DEFAULTS = { - EVMOS_MULTICALL_CHUNK_SIZE: "3", // evmos reduced gas limit, this is a workaround to make multicall work - STARKNET_RPC: 'https://starknet-mainnet.public.blastapi.io', - COVALENT_KEY: 'ckey_72cd3b74b4a048c9bc671f7c5a6', - // SOLANA_RPC: 'https://mainnet.helius-rpc.com/?api-key=0109717a-77b4-498a-bc3c-a0b31aa1b3bf', - SOLANA_RPC: "https://api.mainnet-beta.solana.com", - SOON_RPC: "https://rpc.mainnet.soo.network/rpc", - SOON_BASE_RPC: "https://rpc.soonbase.soo.network/rpc", - SOON_BSC_RPC: "https://rpc.svmbnbmainnet.soo.network/rpc", - ECLIPSE_RPC: 'https://mainnetbeta-rpc.eclipse.xyz', - APTOS_RPC: 'https://fullnode.mainnet.aptoslabs.com', - SUI_RPC: 'https://sui-rpc.publicnode.com', - SUI_GRAPH_RPC: 'https://sui-mainnet.mystenlabs.com/graphql', - MULTIVERSX_RPC: 'https://api.multiversx.com', - ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', - SUBSCAN_API_KEY: 'ca3ba5ed1ff44b689c5f81dfc6b1644b', - RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", - FLOW_RPC: 'https://rest-mainnet.onflow.org', - CAMP_RPC: 'https://rpc.camp.raas.gelato.cloud', - LULO_API_KEY: '', - TRON_RPC: 'https://api.trongrid.io', - MOVE_RPC: 'https://mainnet.movementnetwork.xyz', - SUPRA_RPC: 'https://rpc-mainnet.supra.com', - FLAME_RPC: "https://rpc.flame.astria.org", - BASECAMP_RPC: "https://rpc.basecamp.t.raas.gelato.cloud", - BERACHAIN_ARCHIVAL_RPC: "https://bera.blockscout.com/api/eth-rpc", - PLUME_RPC: "https://rpc.plume.org", - NIBIRU_RPC: "https://evm-rpc.archive.nibiru.fi/", - IOTA_RPC: "https://api.mainnet.iota.cafe", - KAVA_ARCHIVAL_RPC: "https://evm.kava.io", - BIFROST_P_RPC: "wss://api-bifrost-polkadot.n.dwellir.com/"+_yek, - BIFROST_K_RPC: "wss://api-bifrost-kusama.n.dwellir.com/"+_yek, - HYDRAGON_RPC: "https://rpc-mainnet.hydrachain.org", - TAC_RPC: "https://rpc.tac.build", - FRAXTAL_RPC: "https://rpc.frax.com", - TAC_RPC_MULTICALL: "0xcA11bde05977b3631167028862bE2a173976CA11", - ABSTRACT_RPC_MULTICALL: "0xcA11bde05977b3631167028862bE2a173976CA11", - BITCI_RPC_MULTICALL: "0x777238B119cD07e6849b0817f284532DC0F9F8D9", // bitci multicall3 - XONE_RPC: 'https://rpc.xone.org', -} - -const ENV_KEYS = [ - ...BOOL_KEYS, - ...Object.keys(DEFAULTS), - 'GETBLOCK_KEY', - 'LOFTY_API', - 'SOLANA_RPC_CLIENT', - 'OLYMPUS_GRAPH_API_KEY', - 'SUMMER_HISTORY_ENDPOINT', - 'SUMMER_AJNA_ENDPOINT', - 'SUMMER_CONFIRMED_VAULTS_ENDPOINT', - 'ETHEREUM_TOKENS_ENDPOINT', - 'FBTC_ACCESS_TOKEN', - 'UNISAT_AUTH', - 'RPC_PROXY_URL', - 'BLACKSAIL_API_KEY', - 'BITCOIN_CACHE_API', - 'DEBANK_API_KEY', - 'SMARDEX_SUBGRAPH_API_KEY', - 'PROXY_AUTH', - 'ALLIUM_API_KEY', -] - -Object.keys(DEFAULTS).forEach(i => { - if (!process.env[i]) process.env[i] = DEFAULTS[i] // this is done to set the chain RPC details in @defillama/sdk -}) - - -function getEnv(key) { - if (!ENV_KEYS.includes(key)) throw new Error(`Unknown env key: ${key}`) - const value = process.env[key] ?? DEFAULTS[key] - return BOOL_KEYS.includes(key) ? !!value : value -} - -module.exports = { - ENV_KEYS, - getEnv, -} diff --git a/projects/helper/erc4626.js b/projects/helper/erc4626.js deleted file mode 100644 index 75f7b5535e7..00000000000 --- a/projects/helper/erc4626.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require("./unwrapLPs") - -async function sumERC4626Vaults({ api, ...options }) { - await api.erc4626Sum({ ...options }) - return api.getBalances() -} - -function sumERC4626VaultsExport({ vaults, ...options }) { - return async (api) => { - await sumERC4626Vaults({ ...options, api, calls: vaults }) - return sumTokens2({ api }) // hack to transform tokens - } -} - -function sumERC4626VaultsExport2({ vaults, ...options }) { - return async (api) => { - await sumERC4626Vaults({ isOG4626: true, ...options, api, calls: vaults }) - return sumTokens2({ api }) // hack to transform tokens - } -} - -module.exports = { - sumERC4626Vaults, - sumERC4626VaultsExport, - sumERC4626VaultsExport2, -} \ No newline at end of file diff --git a/projects/helper/fraxlend.js b/projects/helper/fraxlend.js deleted file mode 100644 index 2799e87eece..00000000000 --- a/projects/helper/fraxlend.js +++ /dev/null @@ -1,45 +0,0 @@ -const { sumTokens2 } = require("./unwrapLPs") - -const abi = { - asset: "address:asset", - collateralContract: "address:collateralContract", - getAllPairAddresses: "address[]:getAllPairAddresses", - totalAssets: "uint256:totalAsset", - totalCollateral: "uint256:totalCollateral", - totalBorrow: 'function totalBorrow() view returns (uint128 amount, uint128 shares)', -} - -function fraxlendExports(config) { - const exports = { - methodology: 'Gets the pairs from the REGISTRY_ADDRESS and adds the collateral amounts from each pair', - } - - Object.keys(config).forEach(chain => { - let { registry, blacklistedTokens = [] } = typeof config[chain] === 'string' ? { registry: config[chain] } : config[chain] - - async function tvl(api) { - const pairs = await api.call({ target: registry, abi: abi.getAllPairAddresses, chain: api.chain }) - const assets = await api.multiCall({ abi: abi.asset, calls: pairs }) - const collaterals = await api.multiCall({ abi: abi.collateralContract, calls: pairs }) - const tokens = collaterals.concat(assets) - const owners = pairs.concat(pairs) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens, }) - } - - async function borrowed(api) { - const pairs = await api.call({ target: registry, abi: abi.getAllPairAddresses, chain: api.chain }) - const assets = await api.multiCall({ abi: abi.asset, calls: pairs }) - const bals = (await api.multiCall({ abi: abi.totalBorrow, calls: pairs })).map(i => i.amount) - api.add(assets, bals) - } - - exports[chain] = { - tvl, borrowed, - } - }) - - - return exports -} - -module.exports = { fraxlendExports } \ No newline at end of file diff --git a/projects/helper/getChainList.js b/projects/helper/getChainList.js deleted file mode 100644 index 3c40a4f9689..00000000000 --- a/projects/helper/getChainList.js +++ /dev/null @@ -1,100 +0,0 @@ -const fs = require('fs') -const path = require('path') -/* -const projectsFolder = path.join(__dirname, '..') - -const files = fs.readdirSync(projectsFolder, { withFileTypes: true }) -const whitelistedKeys = require('./whitelistedExportKeys.json') -const sdk = require('@defillama/sdk') - -const projectNames = [] -const rModules = [] -const projectMissingChainNames = [] -const keysCount = {} -const chainCount = {} - - -files.forEach(i => { - if (['config', 'helper'].includes(i.name)) return; - let fPath - try { - if (i.isFile()) { - fPath = path.join(projectsFolder, i.name) - rModules.push(getModule(fPath, i.name)) - projectNames.push(i.name) - return; - } - fPath = path.join(projectsFolder, i.name, 'index.js') - if (checkFileExistsSync(fPath)) { - rModules.push(getModule(fPath, i.name)) - projectNames.push(i.name) - return; - } - sdk.log('Adapter wrong? ', i.name) - } catch (e) { - // console.error(e) - sdk.log('error in', i.name) - } -}) - - -function getModule(fPath, projectName) { - let module = require(fPath) - delete module.hallmarks - if (typeof module.tvl === 'function') { - const chainsWithTVL = Object.keys(module).filter(chain => typeof module[chain] === 'object' && typeof module[chain].tvl === 'function') - if (chainsWithTVL.length) sdk.log('I am confused:', projectName, chainsWithTVL) - else module.ethereum = { tvl: module.tvl } - delete module.tvl - } - - Object.keys(module).filter(k => typeof module[k] !== 'object') - .forEach(i => { - addKey(i, projectName) - delete module[i] - }) - - Object.keys(module).forEach(chain => { - Object.keys(module[chain]).forEach(key => addKey(key, `${projectName}-${chain}`)) - }) - return module -} - -function addKey(key, label) { - if (whitelistedKeys.includes(key)) return; - if (!keysCount[key]) keysCount[key] = [] - keysCount[key].push(label) -} - - - -rModules.forEach((module, i) => { - if (!Object.keys(module).length) return projectMissingChainNames.push(projectNames[i]) - Object.keys(module).forEach(chain => { - if (!chainCount[chain]) chainCount[chain] = [] - chainCount[chain].push(projectNames[i]) - }) -}) - -const chainCountTable = Object.keys(chainCount).map((chain) => [chain, chainCount[chain].length, chainCount[chain]]).sort((a, b) => b[1] - a[1]) -const keyCountTable = Object.keys(keysCount).map((key) => [key, keysCount[key].length, keysCount[key]]).sort((a, b) => b[1] - a[1]) -console.table(chainCountTable) -console.table(keyCountTable) -const chainNames = chainCountTable.map(([chain]) => chain) - -fs.writeFileSync(path.join(__dirname, 'chains.json'), JSON.stringify(chainNames, null, 2)) - -function checkFileExistsSync(filepath) { - let flag = true; - try { - fs.accessSync(filepath, fs.constants.F_OK); - } catch (e) { - flag = false; - } - return flag; -} - */ - -const chainNames = require('./chains.json') -chainNames.sort() -fs.writeFileSync(path.join(__dirname, './chains.json'), JSON.stringify(chainNames, null, 2)) \ No newline at end of file diff --git a/projects/helper/getUniSubgraphTvl.js b/projects/helper/getUniSubgraphTvl.js deleted file mode 100644 index d48eefa6f8d..00000000000 --- a/projects/helper/getUniSubgraphTvl.js +++ /dev/null @@ -1,37 +0,0 @@ -const { request, gql } = require("graphql-request"); -const { toUSDTBalances } = require('../helper/balances'); -const { blockQuery, getBlock, } = require('./http') -const sdk = require('@defillama/sdk') - -function getChainTvl(graphUrls, factoriesName = "uniswapFactories", tvlName = "totalLiquidityUSD", blockCatchupLimit = 500) { - const graphQuery = gql` -query get_tvl($block: Int) { - ${factoriesName}( - block: { number: $block } - ) { - ${tvlName} - } -} -`; - return (chain) => { - return async (api) => { - await api.getBlock() - const block = api.block - let uniswapFactories - const endpoint = sdk.graph.modifyEndpoint(graphUrls[chain]) - - if (!blockCatchupLimit) { - uniswapFactories = (await request(endpoint, graphQuery, { block, }))[factoriesName]; - } else { - uniswapFactories = (await blockQuery(endpoint, graphQuery, { api, blockCatchupLimit, }))[factoriesName]; - } - - const usdTvl = Number(uniswapFactories[0][tvlName]) - return toUSDTBalances(usdTvl) - } - } -} - -module.exports = { - getChainTvl, -} \ No newline at end of file diff --git a/projects/helper/gmx.js b/projects/helper/gmx.js deleted file mode 100644 index fb204ef75ff..00000000000 --- a/projects/helper/gmx.js +++ /dev/null @@ -1,49 +0,0 @@ -const { sumTokens2 } = require('./unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -function gmxExports({ vault, blacklistedTokens = [], abis = {}, permitFailure = false, }) { - abis = { ...defaultAbis, ...abis} - return async (api) => { - const tokenAddresses = await api.fetchList({ - target: vault, - lengthAbi: abis.allWhitelistedTokensLength, - itemAbi: abis.allWhitelistedTokens, - }) - - return sumTokens2({ api, owner: vault, tokens: tokenAddresses, blacklistedTokens, permitFailure, }) - } -} - -const defaultAbis = { - allWhitelistedTokensLength: 'uint256:allWhitelistedTokensLength', - allWhitelistedTokens: 'function allWhitelistedTokens(uint256) view returns (address)', - EventLog1: "event EventLog1(address msgSender, string eventName, string indexed eventNameHash, bytes32 indexed topic1, tuple(tuple(tuple(string key, address value)[] items, tuple(string key, address[] value)[] arrayItems) addressItems, tuple(tuple(string key, uint256 value)[] items, tuple(string key, uint256[] value)[] arrayItems) uintItems, tuple(tuple(string key, int256 value)[] items, tuple(string key, int256[] value)[] arrayItems) intItems, tuple(tuple(string key, bool value)[] items, tuple(string key, bool[] value)[] arrayItems) boolItems, tuple(tuple(string key, bytes32 value)[] items, tuple(string key, bytes32[] value)[] arrayItems) bytes32Items, tuple(tuple(string key, bytes value)[] items, tuple(string key, bytes[] value)[] arrayItems) bytesItems, tuple(tuple(string key, string value)[] items, tuple(string key, string[] value)[] arrayItems) stringItems) eventData)", -} - - -function gmxExportsV2({ eventEmitter, fromBlock, blacklistedTokens = [], abis = {} }) { - // https://github.com/gmx-io/gmx-synthetics/blob/main/contracts/market/MarketFactory.sol#L87C19-L87C31 - // https://github.com/gmx-io/gmx-synthetics/tree/main/deployments/arbitrum - abis = { ...defaultAbis, ...abis} - return async (api) => { - const logs = await getLogs({ - api, - target: eventEmitter, - topics: ['0x137a44067c8961cd7e1d876f4754a5a3a75989b4552f1843fc69c3b372def160', '0xad5d762f1fc581b3e684cf095d93d3a2c10754f60124b09bec8bf3d76473baaf',], // need both else too many logs - eventAbi: defaultAbis.EventLog1, - onlyArgs: true, - fromBlock, - }) - - const ownerTokens = logs.map(i => { - const [market, index, long, short] = i[4].addressItems.items.map(i => i.value) - return [[long, short, ], market] - }) - return api.sumTokens({ownerTokens, blacklistedTokens, }) - } -} - -module.exports = { - gmxExports, - gmxExportsV2, -} diff --git a/projects/helper/heroku-api.js b/projects/helper/heroku-api.js deleted file mode 100644 index 1cbe02f416c..00000000000 --- a/projects/helper/heroku-api.js +++ /dev/null @@ -1,41 +0,0 @@ -const { get } = require('./http') -const endpoint = "https://sushi-analytics.llama.fi" - -let data -async function getData() { - if (!data) data = get(endpoint) - return data -} - -function getTvl(protocol, chain) { - return async (timestamp) => { - if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp - if (Math.abs(Date.now() / 1000 - timestamp) > 3600) { - throw new Error("Can't refill adapters moved to heroku") - } - const data = await getData() - if (data[protocol]?.[chain] === undefined) { - throw new Error(`Data for protocol ${protocol} on chain ${chain} is undefined on heroku`) - } - return data[protocol][chain] - } -} - -function getExports(protocol, chains, exportKeys = []) { - const chainTvls = chains.reduce((obj, chain) => { - obj[chain] = { - tvl: getTvl(protocol, chain) - } - exportKeys.forEach(key => { - obj[chain][key] = getTvl(`${protocol}-${key}`, chain) - }) - return obj - }, {}) - - return chainTvls -} - -module.exports = { - getExports -} - diff --git a/projects/helper/historicalApi.js b/projects/helper/historicalApi.js deleted file mode 100644 index cb71809292f..00000000000 --- a/projects/helper/historicalApi.js +++ /dev/null @@ -1,27 +0,0 @@ -const { toUSDTBalances } = require('./balances') - -// getCurrent: ()=>number -// getHistorical: ()=>[{date, totalLiquidityUSD}] -async function getApiTvl(timestamp, getCurrent, getHistorical) { - if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp - if (Math.abs(timestamp - Date.now() / 1000) < 3600) { - const tvl = await getCurrent() - return toUSDTBalances(tvl) - } else { - const historical = await getHistorical() - let closest = historical[0] - historical.forEach(dayTvl => { - if (Math.abs(dayTvl.date - timestamp) < Math.abs(closest.date - timestamp)) { - closest = dayTvl - } - }) - if (Math.abs(closest.date - timestamp) > 3600 * 24) { // Oldest data is too recent - throw new Error("Too old") - } - return toUSDTBalances(closest.totalLiquidityUSD) - } -} - -module.exports = { - getApiTvl -} \ No newline at end of file diff --git a/projects/helper/http.js b/projects/helper/http.js deleted file mode 100644 index c99e1c8ac74..00000000000 --- a/projects/helper/http.js +++ /dev/null @@ -1,111 +0,0 @@ -const axios = require("axios") -const { request, GraphQLClient, } = require("graphql-request") -const sdk = require('@defillama/sdk') -const { getEnv } = require('./env') - -const getCacheData = {} - -async function getCache(endpoint) { - if (!getCacheData[endpoint]) getCacheData[endpoint] = get(endpoint) - return getCacheData[endpoint] -} - -async function getBlock(timestamp, chain, chainBlocks, undefinedOk = false) { - if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp - if (chainBlocks[chain] || (!getEnv('HISTORICAL') && undefinedOk)) { - return chainBlocks[chain] - } else { - if (chain === "celo") { - return Number((await get("https://explorer.celo.org/api?module=block&action=getblocknobytime×tamp=" + timestamp + "&closest=before")).result.blockNumber); - } else if (chain === "moonriver") { - return Number((await get(`https://blockscout.moonriver.moonbeam.network/api?module=block&action=getblocknobytime×tamp=${timestamp}&closest=before`)).result.blockNumber); - } - return sdk.api.util.lookupBlock(timestamp, { chain }).then(blockData => blockData.block) - } -} - -async function get(endpoint, options) { - try { - const data = (await axios.get(endpoint, options)).data - return data - } catch (e) { - sdk.log(e.message) - throw new Error(`Failed to get ${endpoint}`) - } -} - -async function getWithMetadata(endpoint) { - return axios.get(endpoint) -} - -async function post(endpoint, body, options) { - try { - const data = (await axios.post(endpoint, body, options)).data - return data - } catch (e) { - sdk.log(e.message) - throw new Error(`Failed to post ${endpoint}`) - } -} - -async function graphQuery(endpoint, graphQuery, params = {}, { api, timestamp, chain, chainBlocks, useBlock = false } = {}) { - - endpoint = sdk.graph.modifyEndpoint(endpoint) - if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp - if (api) { - if (!timestamp) timestamp = api.timestamp - if (!chain) chain = api.chain - if (useBlock && !params.block) - params.block = (await api.getBlock()) - 200 - - } - if (useBlock && !params.block) - params.block = await getBlock(timestamp, chain, chainBlocks) - return request(endpoint, graphQuery, params) -} - -function extractIndexedBlockNumberFromError(errorString) { - const patterns = [ - /Failed to decode.*block\.number.*has only indexed up to block number (\d+)/, - /missing block: \d+, latest: (\d+)/ - ]; - - for (const pattern of patterns) { - const match = errorString.match(pattern); - if (match) return +match[1]; - } - - return null; -} - -async function blockQuery(endpoint, query, { api, blockCatchupLimit = 500, }) { - endpoint = sdk.graph.modifyEndpoint(endpoint) - const graphQLClient = new GraphQLClient(endpoint) - await api.getBlock() - const block = api.block - try { - const results = await graphQLClient.request(query, { block }) - return results - } catch (e) { - e.chain = api.chain - if (!block) throw e - const errorString = e.toString() - const indexedBlockNumber = extractIndexedBlockNumberFromError(errorString); - if (!indexedBlockNumber) throw e; - sdk.log('Block catchup detected: subgraph indexed up to', indexedBlockNumber, 'but requested block was', block, 'falling back to indexed block') - if (block - blockCatchupLimit > indexedBlockNumber) - throw e - return graphQLClient.request(query, { block: indexedBlockNumber }) - } -} - - -module.exports = { - get, - getCache, - post, - blockQuery, - graphQuery, - getBlock, - getWithMetadata, -} diff --git a/projects/helper/iziswap.js b/projects/helper/iziswap.js deleted file mode 100644 index 69d4aab3662..00000000000 --- a/projects/helper/iziswap.js +++ /dev/null @@ -1,54 +0,0 @@ -const { sumTokens2 } = require("./unwrapLPs") -const { getCache, setCache, } = require('../helper/cache') -const ADDRESSES = require('../helper/coreAssets.json') - -function iziswapExport({ poolHelpers, blacklistedTokens = [], blacklistedPools = [], }) { - return async (api) => { - const isMerlin = api.chain === 'merlin' - const toa = [] - const chunkSize = 10 - - for (const manager of poolHelpers) { - let foundLastPool = false - const poolMetaData = [] - const key = `${api.chain}-${manager}` - const { allPools = [], allPoolMetas = [], } = (await getCache('iziswap', key) ?? {}) - let i = allPools.length + 1 - do { - const calls = [] - for (let j = i; j < i + chunkSize; j++) - calls.push(j) - i += chunkSize - const poolMetas = await api.multiCall({ target: manager, abi: abi.poolMetas, calls, }) - for (const output of poolMetas) { - if (output.tokenX === ADDRESSES.null && output.fee === '0') { - foundLastPool = true - break; - } - poolMetaData.push(output) - } - } while (!foundLastPool) - - const poolCalls = poolMetaData.map(i => ({ params: [i.tokenX, i.tokenY, i.fee] })) - const pools = await api.multiCall({ target: manager, abi: abi.pool, calls: poolCalls, }) - - allPools.push(...pools) - allPoolMetas.push(...poolMetaData.map(i => ({ tokenX: i.tokenX, tokenY: i.tokenY }))) - allPools.forEach((output, i) => toa.push([allPoolMetas[i].tokenX, output], [allPoolMetas[i].tokenY, output],)) - await setCache('iziswap', key, { allPools, allPoolMetas, }) - } - - return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens, permitFailure: !isMerlin, sumChunkSize: isMerlin ? 10 : 100, sumChunkSleep: 1000, blacklistedOwners: blacklistedPools, }) - } -} - -const abi = { - liquidities: "function liquidities(uint256) view returns (int24 leftPt, int24 rightPt, uint128 liquidity, uint256 lastFeeScaleX_128, uint256 lastFeeScaleY_128, uint256 remainTokenX, uint256 remainTokenY, uint128 poolId)", - liquidityNum: "uint256:liquidityNum", - pool: "function pool(address tokenX, address tokenY, uint24 fee) view returns (address)", - poolMetas: "function poolMetas(uint128) view returns (address tokenX, address tokenY, uint24 fee)", -} - -module.exports = { - iziswapExport -} \ No newline at end of file diff --git a/projects/helper/karpatkey.js b/projects/helper/karpatkey.js deleted file mode 100644 index 0ef36a7b578..00000000000 --- a/projects/helper/karpatkey.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumSingleBalance } = require("@defillama/sdk/build/generalUtil") -const { fetchURL } = require("./utils") - -const MONTH = 30 * 24 * 3600e3 - -const chainMapping = { - "Gnosis": "xdai", - "Avalanche": "avax", - "Binance": "bsc" -} - -async function karpatKeyTvl(api, daoName, tokenToExclude) { - const { data } = await fetchURL("https://aumapi.kpk.dev/our_daos_token_details") - let date = new Date(api.timestamp * 1e3) - let monthlyData = data.tokens.filter(t => t.year_month === `${date.getFullYear()}_${date.getMonth() + 1}` && t.dao === daoName) - while (monthlyData.length === 0) { - if (api.timestamp * 1e3 - date.getTime() > 3 * MONTH) { - throw new Error(`Treasury snapshot too outdated`) - } - date = new Date(date.getTime() - MONTH) - monthlyData = data.tokens.filter(t => t.year_month === `${date.getFullYear()}_${date.getMonth() + 1}` && t.dao === daoName) - } - const balances = {} - monthlyData.forEach(bal => { - if (tokenToExclude !== bal.token_symbol && bal.value) { - const chain = chainMapping[bal.blockchain] ?? bal.blockchain.toLowerCase() - // api.log(`Adding ${bal.token_symbol} on ${chain} with address ${bal.token_address} and value ${bal.value}`) - sumSingleBalance(balances, chain + ':' + bal.token_address, bal.value) - } else { - api.log(`Skipping ${bal.token_symbol}`) - } - }) - return balances -} - -module.exports = { - karpatKeyTvl -} \ No newline at end of file diff --git a/projects/helper/liquity.js b/projects/helper/liquity.js deleted file mode 100644 index f226c945af2..00000000000 --- a/projects/helper/liquity.js +++ /dev/null @@ -1,27 +0,0 @@ -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') - -function getLiquityTvl(TROVE_MANAGER_ADDRESS, { nonNativeCollateralToken = false, abis = {}, collateralToken, } = {}) { - return async (api) => { - const activePool = await api.call({ target: TROVE_MANAGER_ADDRESS, abi: abis.activePool ?? "address:activePool", }) - const defaultPool = await api.call({ target: TROVE_MANAGER_ADDRESS, abi: "address:defaultPool", }) - let token = nullAddress - if (collateralToken) token = collateralToken - else if (nonNativeCollateralToken) token = await api.call({ target: TROVE_MANAGER_ADDRESS, abi: abis.collateralToken ?? "address:collateralToken", }) - return sumTokens2({ api, owners: [activePool, defaultPool], tokens: [token] }) - } -} - -function getLiquityV2Tvl(CollateralRegistry, { abis = {}, } = {}) { - return async (api) => { - const troves = await api.fetchList({ lengthAbi: abis.totalCollaterals ?? 'totalCollaterals', itemAbi: abis.getTroveManager ?? 'getTroveManager', target: CollateralRegistry }) - const activePools = await api.multiCall({ abi: abis.activePool ?? 'address:activePool', calls: troves }) - const defaultPools = await api.multiCall({ abi: abis.defaultPoolAddress ?? 'address:defaultPoolAddress', calls: activePools }) - const tokens = await api.multiCall({ abi: abis.collToken ?? 'address:collToken', calls: activePools }) - return sumTokens2({ api, tokensAndOwners2: [tokens.concat(tokens), activePools.concat(defaultPools)] }) - } -} - -module.exports = { - getLiquityTvl, - getLiquityV2Tvl, -}; diff --git a/projects/helper/masterchef.js b/projects/helper/masterchef.js deleted file mode 100644 index a389f9565b5..00000000000 --- a/projects/helper/masterchef.js +++ /dev/null @@ -1,332 +0,0 @@ -const sdk = require('@defillama/sdk'); -const abi = require('./abis/masterchef.json') -const { unwrapUniswapLPs, unwrapLPsAuto, isLP } = require('./unwrapLPs') -const tokenAbi = 'address:token' -const token0Abi = 'address:token0' -const token1Abi = 'address:token1' -const getReservesAbi = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' -const userInfoAbi = 'function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)' -const { default: BigNumber } = require('bignumber.js'); -const { getChainTransform, } = require('../helper/portedTokens'); - -async function getPoolInfo(masterChef, block, chain, poolInfoAbi = abi.poolInfo) { - const poolLength = ( - await sdk.api.abi.call({ - abi: abi.poolLength, - target: masterChef, - block, - chain, - }) - ).output; - - const poolInfo = ( - await sdk.api.abi.multiCall({ - block, - calls: Array.from(Array(Number(poolLength)).keys()).map(i => ({ - target: masterChef, - params: i, - })), - abi: poolInfoAbi, - chain, - }) - ).output; - - return poolInfo -} - -async function getSymbolsAndBalances(masterChef, block, chain, poolInfo) { - const [symbols, tokenBalances] = await Promise.all([ - sdk.api.abi.multiCall({ - block, - calls: poolInfo.map(p => ({ - target: p.output[0] - })), - abi: 'erc20:symbol', - chain, - permitFailure: true, - }), - sdk.api.abi.multiCall({ - block, - calls: poolInfo.map(p => ({ - target: p.output[0], - params: masterChef - })), - abi: 'erc20:balanceOf', - chain, - permitFailure: true, - }) - ]) - return [symbols, tokenBalances] -} - -function isYV(symbol) { - return symbol.includes('yv') -} - -async function addFundsInMasterChef(balances, masterChef, block, chain = 'ethereum', transformAddress = undefined, poolInfoAbi = abi.poolInfo, ignoreAddresses = [], includeLPs = true, excludePool2 = false, stakingToken = undefined) { - const poolInfo = await getPoolInfo(masterChef, block, chain, poolInfoAbi) - if (!transformAddress) transformAddress = await getChainTransform(chain) - const [symbols, tokenBalances] = await getSymbolsAndBalances(masterChef, block, chain, poolInfo); - - const lpPositions = []; - const lpTokens = []; - - symbols.output.forEach((symbol, idx) => { - const balance = tokenBalances.output[idx].output; - const token = symbol.input.target; - if (ignoreAddresses.some(addr => addr.toLowerCase() === token.toLowerCase()) || symbol.output === null) { - return - } - if (isLP(symbol.output, symbol.input.target, chain)) { - if (includeLPs && balance && !excludePool2) { - lpPositions.push({ - balance, - token - }); - } - else if (includeLPs && balance && excludePool2) { - lpTokens.push(token); - } - } else { - sdk.util.sumSingleBalance(balances, transformAddress(token), balance) - } - }) - - if (excludePool2) { - const [token0, token1, balance] = await Promise.all([ - sdk.api.abi.multiCall({ - calls: lpTokens.map(p => ({ - target: p - })), - abi: token0Abi, - block, - chain - }), - sdk.api.abi.multiCall({ - calls: lpTokens.map(p => ({ - target: p - })), - abi: token1Abi, - block, - chain - }), - sdk.api.abi.multiCall({ - calls: lpTokens.map(p => ({ - target: p, - params: masterChef - })), - abi: "erc20:balanceOf", - block, - chain - }) - ]); - - [token0, token1, balance].forEach((_, idx) => { - if (lpTokens[idx] === undefined || token0.output[idx].output.toLowerCase() === stakingToken.toLowerCase() || token1.output[idx].output.toLowerCase() === stakingToken.toLowerCase()) { - return - } - lpPositions.push({ - balance: balance.output[idx].output, - token: balance.output[idx].input.target - }); - }); - } - - - await unwrapUniswapLPs( - balances, - lpPositions, - block, - chain, - transformAddress - ); -} - -function masterChefExports(masterChef, chain, stakingTokenRaw, tokenIsOnCoingecko = true, poolInfoAbi = abi.poolInfo, includeYVTokens = false) { - const stakingToken = stakingTokenRaw.toLowerCase(); - let balanceResolve; - - async function getTvl(timestamp, ethBlock, {[chain]: block}) { - const transformAddress = await getChainTransform(chain); - - const poolInfo = await getPoolInfo(masterChef, block, chain, poolInfoAbi) - const [symbols, tokenBalances] = await getSymbolsAndBalances(masterChef, block, chain, poolInfo); - - const balances = { - staking: {}, - pool2: {}, - tvl: {} - } - - const lpPositions = []; - - await Promise.all(symbols.output.map(async (symbol, idx) => { - const balance = tokenBalances.output[idx].output; - const token = symbol.input.target.toLowerCase(); - if (token === stakingToken) { - sdk.util.sumSingleBalance(balances.staking, transformAddress(token), balance) - } else if (isLP(symbol.output, symbol.input.target, chain)) { - lpPositions.push({ - balance, - token - }); - } else if (includeYVTokens && isYV(symbol.output)) { - let underlyingToken = (await sdk.api.abi.call({ - target: token, - abi: tokenAbi, - block, - chain, - })).output; - sdk.util.sumSingleBalance(balances.tvl, transformAddress(underlyingToken), balance) - } else { - sdk.util.sumSingleBalance(balances.tvl, transformAddress(token), balance) - } - })); - - const [token0, token1] = await Promise.all([ - sdk.api.abi.multiCall({ - calls: lpPositions.map(p => ({ - target: p.token - })), - abi: token0Abi, - block, - chain - }), - sdk.api.abi.multiCall({ - calls: lpPositions.map(p => ({ - target: p.token - })), - abi: token1Abi, - block, - chain - }), - ]); - - const pool2LpPositions = [] - const outsideLpPositions = [] - lpPositions.forEach((position, idx) => { - if (token0.output[idx].output.toLowerCase() === stakingToken || token1.output[idx].output.toLowerCase() === stakingToken) { - pool2LpPositions.push(position); - } else { - outsideLpPositions.push(position); - } - }) - await Promise.all([unwrapUniswapLPs( - balances.tvl, - outsideLpPositions, - block, - chain, - transformAddress - ), unwrapUniswapLPs( - balances.pool2, - pool2LpPositions, - block, - chain, - transformAddress - )]); - - if (!tokenIsOnCoingecko && pool2LpPositions.length) { - const response = (await sdk.api.abi.multiCall({ - calls: pool2LpPositions.map(p => ({ - target: stakingToken, - params: [p.token] - })), - abi: "erc20:balanceOf", - block, - chain - })).output - const maxPool2ByToken = response.reduce((max, curr) => { - if (BigNumber(curr.output).gt(max.output)) { - return curr - } - return max - }); - const poolAddress = maxPool2ByToken.input.params[0].toLowerCase() - const poolReserves = await sdk.api.abi.call({ - block, - chain, - abi: getReservesAbi, - target: poolAddress - }) - const posToken0 = token0.output.find(t => t.input.target.toLowerCase() === poolAddress).output; - const posToken1 = token1.output.find(t => t.input.target.toLowerCase() === poolAddress).output; - let price, otherToken; - if (posToken0.toLowerCase() === stakingToken) { - price = poolReserves.output[1] / poolReserves.output[0] - otherToken = transformAddress(posToken1) - } else { - price = poolReserves.output[0] / poolReserves.output[1] - otherToken = transformAddress(posToken0) - } - const transformedStakingToken = transformAddress(stakingToken) - Object.values(balances).forEach(balance => { - Object.entries(balance).forEach(([addr, bal]) => { - if (addr.toLowerCase() === transformedStakingToken) { - balance[otherToken] = BigNumber(bal).times(price).toFixed(0) - delete balance[addr] - } - }) - }) - } - - return balances - } - - function getTvlPromise(key) { - return async (ts, _block, chainBlocks) => { - if (!balanceResolve) - balanceResolve = getTvl(ts, _block, chainBlocks) - return (await balanceResolve)[key] - } - } - - return { - methodology: "TVL includes all farms in MasterChef contract", - [chain]: { - staking: getTvlPromise("staking"), - pool2: getTvlPromise("pool2"), - // masterchef: getTvlPromise("tvl"), - tvl: getTvlPromise("tvl"), - } - }; -} - -const standardPoolInfoAbi = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accWeVEPerShare)' - -async function getUserMasterChefBalances({ balances = {}, masterChefAddress, userAddres, block, chain = 'ethereum', transformAddress, excludePool2 = false, onlyPool2 = false, pool2Tokens= [], poolInfoABI = abi.poolInfo, getLPAddress = null }) { - if (!transformAddress) - transformAddress = await getChainTransform(chain) - - const tempBalances = {} - const poolLength = (await sdk.api.abi.call({ abi: abi.poolLength, target: masterChefAddress, block, chain, })).output - const dummyArray = Array.from(Array(Number(poolLength)).keys()) - const poolInfoCalls = dummyArray.map(i => ({ target: masterChefAddress, params: i, })) - const userInfoCalls = dummyArray.map(i => ({ target: masterChefAddress, params: [i, userAddres], })) - const lpTokens = (await sdk.api.abi.multiCall({ block, calls: poolInfoCalls, abi: poolInfoABI, chain, })).output - .map(a => getLPAddress ? getLPAddress(a.output) : (a.output && a.output[0])) - const userBalances = (await sdk.api.abi.multiCall({ block, calls: userInfoCalls, abi: userInfoAbi, chain, })).output - .map(a => a.output[0]) - - userBalances.forEach((balance, idx) => { - if (isNaN(+balance) || +balance <= 0) return; - tempBalances[transformAddress(lpTokens[idx])] = balance - }) - - await unwrapLPsAuto({ balances: tempBalances, chain, block, transformAddress, excludePool2, onlyPool2, pool2Tokens }) - - Object.keys(tempBalances).forEach(key => sdk.util.sumSingleBalance(balances, key, tempBalances[key])) - - return balances -} - - -module.exports = { - addFundsInMasterChef, - masterChefExports, - getPoolInfo, - isLP, - standardPoolInfoAbi, - getSymbolsAndBalances, - isYV, - getUserMasterChefBalances, -} diff --git a/projects/helper/methodologies.js b/projects/helper/methodologies.js deleted file mode 100644 index a10038dd291..00000000000 --- a/projects/helper/methodologies.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - lendingMarket : "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.", -} \ No newline at end of file diff --git a/projects/helper/morpoho.js b/projects/helper/morpoho.js deleted file mode 100644 index 397610e769c..00000000000 --- a/projects/helper/morpoho.js +++ /dev/null @@ -1,65 +0,0 @@ -const { getLogs2 } = require("./cache/getLogs"); - -const config = { - base: { - morphoFactory: "0xA9c3D3a366466Fa809d1Ae982Fb2c46E5fC41101", - governor: "0x8b621804a7637b781e2BbD58e256a591F2dF7d51", - startBlock: 15620450, - }, - optimism: { - morphoFactory: "0x3Bb6A6A0Bc85b367EFE0A5bAc81c5E52C892839a", - governor: "0x17C9ba3fDa7EC71CcfD75f978Ef31E21927aFF3d", - startBlock: 131331972, - }, - hyperliquid: { - morphoFactory: "0xec051b19d654c48c357dc974376deb6272f24e53", - governor: "0x17C9ba3fDa7EC71CcfD75f978Ef31E21927aFF3d", - startBlock: 1988677, - }, -} - -function getMorphoVaultTvl(governor, { - morphoFactory, - startBlock, - vaults, -} = {}) { - return async (api) => { - let morphoVaults = [] - - if (vaults) { - morphoVaults = vaults - } else { - morphoFactory = morphoFactory ?? config[api.chain].morphoFactory - startBlock = startBlock ?? config[api.chain].startBlock - - if (!governor) { - throw new Error("Morpho Vaults TVL requires a governor address"); - } - if (!morphoFactory || !startBlock) { - throw new Error("Morpho Vaults TVL requires a morphoFactory and startBlock"); - } - - governor = governor.toLowerCase(); - - const allVaults = ( - await getLogs2({ - api, - factory: morphoFactory, - eventAbi: - "event CreateMetaMorpho(address indexed metaMorpho, address indexed caller, address initialOwner, uint256 initialTimelock, address indexed asset, string name, string symbol, bytes32 salt)", - fromBlock: startBlock, - }) - ).map((log) => log.metaMorpho); - const owners = await api.multiCall({ abi: 'address:owner', calls: allVaults }) - morphoVaults = allVaults.filter((_, i) => owners[i].toLowerCase() === governor); - } - - return api.erc4626Sum({ calls: morphoVaults, isOG4626: true, }) - } - -} - - -module.exports = { - getMorphoVaultTvl -} diff --git a/projects/helper/nft.js b/projects/helper/nft.js deleted file mode 100644 index dc16b8f2499..00000000000 --- a/projects/helper/nft.js +++ /dev/null @@ -1,45 +0,0 @@ -const sdk = require('@defillama/sdk') -const whitelistedNFTs = require('./whitelistedNfts.js') -const { getUniqueAddresses } = require('./utils') - -const { AB_COLLECTIONS, AB_OLD_COLLECTIONS } = whitelistedNFTs -const ART_BLOCKS = '0xa7d8d9ef8D8Ce8992Df33D8b8CF4Aebabd5bD270'.toLowerCase() -const ART_BLOCKS_OLD = '0x059edd72cd353df5106d2b9cc5ab83a52287ac3a'.toLowerCase() - -async function sumArtBlocks({ balances = {}, api, owner, owners = [] }) { - if (owner) owners = [owner] - if (!owners.length) return balances - owners = getUniqueAddresses(owners) - let nftIds = (await api.multiCall({ abi: 'function tokensOfOwner(address) view returns (uint256[])', calls: owners, target: ART_BLOCKS, })).flat() - const nftIds_old = (await api.multiCall({ abi: 'function tokensOfOwner(address) view returns (uint256[])', calls: owners, target: ART_BLOCKS_OLD, })).flat() - - addIds(nftIds, AB_COLLECTIONS) - addIds(nftIds_old, AB_OLD_COLLECTIONS) - - return balances - - function addIds(ids, collections) { - if (!ids.length) return; - collections.map(i => { - const [_, start, end] = i.split(':') - return { label: i, start: +start, end: +end } - }).forEach(({ label, start, end}) => { - ids.forEach((id) => { - id = +id - if (id >= start && id <= end) sdk.util.sumSingleBalance(balances, label, 1, api.chain) - }) - }) - - } -} - -function isArtBlocks(collectionAddress) { - collectionAddress = collectionAddress.toLowerCase() - return [ART_BLOCKS, ART_BLOCKS_OLD].includes(collectionAddress) -} - -module.exports = { - sumArtBlocks, - isArtBlocks, - whitelistedNFTs, -} \ No newline at end of file diff --git a/projects/helper/ohm.js b/projects/helper/ohm.js deleted file mode 100644 index 79502966dfe..00000000000 --- a/projects/helper/ohm.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking, } = require('./staking') -const { sumTokens2 } = require('./unwrapLPs') - -function ohmTvl(treasury, treasuryTokens, chain = 'ethereum', stakingAddress, stakingToken) { - const tvl = async (api) => { - const tokens = treasuryTokens.map(t => t[0]) - return sumTokens2({ api, tokens, owner: treasury, resolveLP: true, }) - } - return { - [chain]: { - tvl, - staking: staking(stakingAddress, stakingToken) - } - } -} - -module.exports = { - ohmTvl -} - diff --git a/projects/helper/pact.js b/projects/helper/pact.js deleted file mode 100644 index 4189b965902..00000000000 --- a/projects/helper/pact.js +++ /dev/null @@ -1,27 +0,0 @@ -const { post } = require('./http') -const { prepareExecCmd } = require('./utils/pact') - -async function fetchLocal(localCmd, apiHost) { - if (!apiHost) throw new Error(`Pact.fetch.local(): No apiHost provided`); - - const { pactCode, meta = mkMeta("", "", 0, 0, 0, 0), networkId } = localCmd - const cmd = prepareExecCmd(pactCode, meta, networkId); - const res = await post(`${apiHost}/api/v1/local`, cmd) - return res; -} - -function mkMeta(sender, chainId, gasPrice, gasLimit, creationTime, ttl) { - return { - creationTime: creationTime, - ttl: ttl, - gasLimit: gasLimit, - chainId: chainId, - gasPrice: gasPrice, - sender: sender - }; -} - -module.exports = { - fetchLocal, - mkMeta, -} \ No newline at end of file diff --git a/projects/helper/pool2.js b/projects/helper/pool2.js deleted file mode 100644 index 82589cad5f6..00000000000 --- a/projects/helper/pool2.js +++ /dev/null @@ -1,26 +0,0 @@ -const { _BASE_TOKEN_, _QUOTE_TOKEN_ } = require('./abis/dodo.json') -const { sumTokensExport, sumTokens2, } = require('./unwrapLPs'); -const { sumTokensExport: uSumExport } = require('./unknownTokens') - -function pool2(stakingContract, lpToken) { - if (!Array.isArray(stakingContract)) stakingContract = [stakingContract] - if (!Array.isArray(lpToken)) lpToken = [lpToken] - if (arguments.length === 2) return uSumExport({ tokens: lpToken, owners: stakingContract, useDefaultCoreAssets: true }) - return pool2s(stakingContract, lpToken) -} - -function pool2s(stakingContracts, lpTokens) { - return async (api) => { - return sumTokens2({ api, tokens: lpTokens, owners: stakingContracts, resolveLP: true}) - } -} - -function pool2UniV3({ stakingAddress, }) { - return sumTokensExport({ owner: stakingAddress, resolveUniV3: true }) -} - -module.exports = { - pool2, - pool2s, - pool2UniV3, -} \ No newline at end of file diff --git a/projects/helper/portedTokens.js b/projects/helper/portedTokens.js deleted file mode 100644 index 3193e96c164..00000000000 --- a/projects/helper/portedTokens.js +++ /dev/null @@ -1,242 +0,0 @@ -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); -const { - normalizeAddress, - getCoreAssets, - stripTokenHeader, - transformTokens, - fixBalancesTokens, - ibcChains, -} = require('./tokenMapping'); -const { svmChains } = require("./svmChainConfig"); - -async function transformInjectiveAddress() { - return addr => { - if (addr.startsWith('ibc:')) return addr - if (addr.includes('ibc/')) return addr.replace(/.*ibc\//, 'ibc/').replace(/\//g, ':') - addr = addr.replace(/\//g, ':') - if (addr.startsWith('peggy0x')) - return `ethereum:${addr.replace('peggy', '')}` - if (addr.startsWith('injective:') || addr.startsWith('ethereum:')) return addr - return `injective:${addr}`; - }; -} - -function fixBalances(balances, mapping, { chain, } = {}) { - const removeUnmapped = false - - Object.keys(balances).forEach(token => { - let tokenKey = stripTokenHeader(token, chain) - tokenKey = normalizeAddress(tokenKey, chain) - const { coingeckoId, decimals } = mapping[tokenKey] || {}; - if (!coingeckoId) { - if (removeUnmapped && (tokenKey.startsWith('0x') || token.startsWith(chain + ':'))) { - sdk.log(`Removing token from balances, it is not part of whitelist: ${tokenKey}`); - delete balances[token]; - } - return; - } - const currentBalance = balances[token]; - delete balances[token]; - sdk.util.sumSingleBalance( - balances, - coingeckoId, - +BigNumber(currentBalance).shiftedBy(-1 * decimals) - ); - }); - - return balances; -} - -async function getFixBalances(chain) { - return getFixBalancesSync(chain) -} - -function getFixBalancesSync(chain) { - const dummyFn = i => i; - return fixBalancesMapping[chain] || dummyFn; -} - -const fixBalancesMapping = {}; - -for (const chain of Object.keys(fixBalancesTokens)) { - if (!fixBalancesMapping[chain]) - fixBalancesMapping[chain] = b => fixBalances(b, fixBalancesTokens[chain], { chain }) -} - -const chainTransforms = { - injective: transformInjectiveAddress, -}; - -function transformChainAddress( - mapping = {}, - chain, - { skipUnmapped = false, chainName = "" } = {} -) { - - return addr => { - if (['solana'].includes(chain)) { - return mapping[addr] ? mapping[addr] : `${chain}:${addr}` - } - if (!addr.startsWith('0x')) return addr - addr = addr.toLowerCase(); - if (!mapping[addr] && skipUnmapped) { - sdk.log("Mapping for addr %s not found in chain %s, returning garbage address", addr, chain); - return "0x1000000000000000000000000000000000000001"; - } - if (chain === 'ethereum') return mapping[addr] ? mapping[addr] : addr - return mapping[addr] || `${chain}:${addr}`; - }; -} - -async function getChainTransform(chain) { - if (chainTransforms[chain]) - return chainTransforms[chain]() - - if (transformTokens[chain]) - return transformChainAddress(transformTokens[chain], chain) - - return addr => { - if (addr.includes('ibc/')) return addr.replace(/.*ibc\//, 'ibc/').replace(/\//g, ':') - if (addr.startsWith('coingecko:')) return addr - if (addr.startsWith(chain + ':') || addr.startsWith('ibc:')) return addr - - addr = normalizeAddress(addr, chain).replace(/\//g, ':') - const chainStr = `${chain}:${addr}` - if ([...ibcChains, 'ton', 'mvc', 'defichain', 'waves'].includes(chain)) return chainStr - if (chain === 'cardano' && addr === 'ADA') return 'coingecko:cardano' - if (chain === 'near' && addr.endsWith('.near')) return chainStr - if (chain === 'aeternity' && addr.startsWith('ct_')) return chainStr - if (chain === 'tron' && addr.startsWith('T')) return chainStr - if (chain === 'stacks' && addr.startsWith('SP')) return chainStr - if (chain === 'tezos' && addr.startsWith('KT1')) return chainStr - if (chain === 'terra2' && addr.startsWith('terra1')) return chainStr - if (chain === 'aura' && addr.startsWith('aura')) return chainStr - if (chain === 'massa' && addr.startsWith('AS1')) return chainStr - if (chain === 'verus' && addr.startsWith('i')) return chainStr - if (chain === 'algorand' && /^\d+$/.test(addr)) return chainStr - if (addr.startsWith('0x') || ['kava', ...svmChains].includes(chain)) return chainStr - return addr - }; -} - -async function transformBalances(chain, balances) { - const transform = await getChainTransform(chain) - const fixBalances = await getFixBalances(chain) - Object.entries(balances).forEach(([token, value]) => { - delete balances[token] - sdk.util.sumSingleBalance(balances, transform(token), value) - }) - fixBalances(balances) - return balances -} - -async function transformDexBalances({ api, chain, data, balances, restrictTokenRatio = 5, withMetadata = false, blacklistedTokens = [], coreTokens }) { - - if (api) { - balances = api.getBalances() - chain = api.chain - } else if (!balances) balances = {} - if (!coreTokens) - coreTokens = new Set(getCoreAssets(chain)) - - blacklistedTokens.forEach(i => coreTokens.delete(i)) - - const prices = {} - data.forEach(i => { - i.token0 = normalizeAddress(i.token0, chain) - i.token1 = normalizeAddress(i.token1, chain) - i.token0Bal = +i.token0Bal - i.token1Bal = +i.token1Bal - priceToken(i) - }) - // sdk.log(prices) - data.forEach(addTokens) - updateBalances(balances) - - blacklistedTokens.forEach(i => delete balances[i]) - - if (!withMetadata) - return transformBalances(chain, balances) - return { - prices, - updateBalances, - balances: await transformBalances(chain, balances), - } - - function addTokens({ token0, token0Bal, token1, token1Bal }) { - const isCoreToken0 = coreTokens.has(token0.replace('ibc/', '')) - const isCoreToken1 = coreTokens.has(token1.replace('ibc/', '')) - if ((isCoreToken0 && isCoreToken1) || (!isCoreToken0 && !isCoreToken1)) { - sdk.util.sumSingleBalance(balances, token0, token0Bal) - sdk.util.sumSingleBalance(balances, token1, token1Bal) - } else if (isCoreToken0) { - sdk.util.sumSingleBalance(balances, token0, token0Bal * 2) - } else { - sdk.util.sumSingleBalance(balances, token1, token1Bal * 2) - } - } - - function updateBalances(balances) { - Object.entries(balances).forEach(([token]) => { - let bal = +balances[token] // this is safer as token balance might change while looping when two entries for same token exist - const tokenKey = normalizeAddress(token, chain) - if (!prices[tokenKey]) return; - const priceObj = prices[tokenKey] - const { coreToken, price } = priceObj - delete balances[token] - if (bal > priceObj.convertableTokenAmount) { - const unconverted = bal - priceObj.convertableTokenAmount - const convertible = priceObj.convertableTokenAmount - priceObj.convertableTokenAmount = 0 - sdk.util.sumSingleBalance(balances, tokenKey, unconverted) - sdk.util.sumSingleBalance(balances, coreToken, convertible * price) - return - } - - priceObj.convertableTokenAmount -= bal - sdk.util.sumSingleBalance(balances, coreToken, bal * price) - }) - } - - function priceToken({ token0, token0Bal, token1, token1Bal }) { - const isCoreToken0 = coreTokens.has(token0) - const isCoreToken1 = coreTokens.has(token1) - if (isCoreToken0 && isCoreToken1) return; - if (!isCoreToken0 && !isCoreToken1) return; - if (isCoreToken0) setPrice(token1, token1Bal, token0, token0Bal) - else setPrice(token0, token0Bal, token1, token1Bal) - } - - function setPrice(token, tokenBal, coreToken, coreTokenBal) { - if (+tokenBal === 0 || +coreTokenBal === 0) return; - if (!prices[token]) { - prices[token] = { - coreToken, - coreTokenBal, - tokensInCorePool: tokenBal, - convertableTokenAmount: tokenBal * restrictTokenRatio, - price: coreTokenBal / tokenBal - } - return; - } - - const priceObj = prices[token] - priceObj.convertableTokenAmount += tokenBal * restrictTokenRatio - if (tokenBal > priceObj.tokensInCorePool) { // i.e current pool has more liquidity - priceObj.tokensInCorePool = tokenBal - priceObj.coreToken = coreToken - priceObj.coreTokenBal = coreTokenBal - priceObj.price = coreTokenBal / tokenBal - } - } -} - -module.exports = { - getChainTransform, - getFixBalances, - stripTokenHeader, - getFixBalancesSync, - transformBalances, - transformDexBalances, -}; diff --git a/projects/helper/proxyRequest.js b/projects/helper/proxyRequest.js deleted file mode 100644 index e397dd27bf7..00000000000 --- a/projects/helper/proxyRequest.js +++ /dev/null @@ -1,25 +0,0 @@ -const axios = require('axios'); -const https = require('https'); -const { getEnv } = require('./env'); - -const agent = new https.Agent({ - rejectUnauthorized: false -}); - -async function fetchThroughProxy(rawUrl) { - const url = new URL(rawUrl) - const response = await axios({ - method: 'get', - url: `https://pr.oxylabs.io:7777${url.pathname}${url.search}`, - httpsAgent: agent, - headers: { - 'Proxy-Authorization': 'Basic ' + Buffer.from(getEnv('PROXY_AUTH')).toString('base64'), - Host: url.host - } - }); - return response.data -} - -module.exports = { - fetchThroughProxy -} diff --git a/projects/helper/saddle.js b/projects/helper/saddle.js deleted file mode 100644 index 90752b27047..00000000000 --- a/projects/helper/saddle.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2 } = require('./unwrapLPs') -const { getLogs } = require('./cache/getLogs') - -const swapStorageABI = "function swapStorage() view returns (uint256 initialA, uint256 futureA, uint256 initialATime, uint256 futureATime, uint256 swapFee, uint256 adminFee, address lpToken, address feeCollector)" -function saddleExports(config) { - const exports = {} - - Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x0838512b7934222cec571cf3fde1cf3e9e864bbc431bd5d1ef4d9ed3079093d9'], - fromBlock, - eventAbi: 'event NewSwapPool (address indexed deployer, address swapAddress, address[] pooledTokens)', - onlyArgs: true, - }) - - const blacklistedTokens = (await api.multiCall({ abi: swapStorageABI, calls: logs.map(i => i.swapAddress)})).map(i => i.lpToken) - return sumTokens2({ api, ownerTokens: logs.map(i => [i.pooledTokens, i.swapAddress]), blacklistedTokens, }) - } - } - }) - - - return exports -} - -module.exports = { - saddleExports, -}; diff --git a/projects/helper/solana.js b/projects/helper/solana.js deleted file mode 100644 index 6c093de8fd0..00000000000 --- a/projects/helper/solana.js +++ /dev/null @@ -1,443 +0,0 @@ -const ADDRESSES = require('./coreAssets.json') -const http = require('./http') -const { transformBalances: transformBalancesOrig, transformDexBalances, } = require('./portedTokens.js') -const { getUniqueAddresses } = require('./tokenMapping') -const { Connection, PublicKey, Keypair, StakeProgram, } = require("@solana/web3.js") -const { AnchorProvider: Provider, Wallet, } = require("@project-serum/anchor"); -const { sleep, sliceIntoChunks, log, } = require('./utils') -const { decodeAccount } = require('./utils/solana/layout') - -const sdk = require('@defillama/sdk'); -const { endpointMap, endpoint } = require('./svmChainConfig.js') - -/** Address of the SPL Token program */ -const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA') - -/** Address of the SPL Token 2022 program */ -const TOKEN_2022_PROGRAM_ID = new PublicKey('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb') - -/** Address of the SPL Associated Token Account program */ -const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL') - -const blacklistedTokens_default = [ - 'CowKesoLUaHSbAMaUxJUj7eodHHsaLsS65cy8NFyRDGP', - '674PmuiDtgKx3uKuJ1B16f9m5L84eFvNwj3xDMvHcbo7', // $WOOD - 'SNSNkV9zfG5ZKWQs6x4hxvBRV6s8SqMfSGCtECDvdMd', // SNS - 'A7rqejP8LKN8syXMr4tvcKjs2iJ4WtZjXNs1e6qP3m9g', // ZION - '2HeykdKjzHKGm2LKHw8pDYwjKPiFEoXAz74dirhUgQvq', // SAO - 'EP2aYBDD4WvdhnwWLUMyqU69g1ePtEjgYK6qyEAFCHTx', //KRILL - 'C5xtJBKm24WTt3JiXrvguv7vHCe7CknDB7PNabp4eYX6', //TINY - '5fTwKZP2AK39LtFN9Ayppu6hdCVKfMGVm79F2EgHCtsi', //WHEY -] - -let connection = {} -let provider = {} - - -function getConnection(chain = 'solana') { - if (!connection[chain]) connection[chain] = new Connection(endpointMap[chain](true)) - return connection[chain] -} - -function getProvider(chain = 'solana') { - if (!provider[chain]) { - const dummy_keypair = Keypair.generate(); - const wallet = new Wallet(dummy_keypair); - - provider[chain] = new Provider(getConnection(chain), wallet) - } - return provider[chain] -} - - -function getAssociatedTokenAddress(mint, owner, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) { - if (typeof programId === 'string') programId = new PublicKey(programId) - if (typeof mint === 'string') mint = new PublicKey(mint) - if (typeof owner === 'string') owner = new PublicKey(owner) - if (typeof associatedTokenProgramId === 'string') associatedTokenProgramId = new PublicKey(associatedTokenProgramId) - const [associatedTokenAddress] = PublicKey.findProgramAddressSync([owner.toBuffer(), programId.toBuffer(), mint.toBuffer()], associatedTokenProgramId); - return associatedTokenAddress.toString() -} - - -async function getTokenSupplies(tokens, { api } = {}) { - // const sleepTime = tokens.length > 2000 ? 2000 : 200 - const sleepTime = 200 - const connection = getConnection() - tokens = tokens.map(i => typeof i === 'string' ? new PublicKey(i) : i) - const res = await runInChunks(tokens, chunk => connection.getMultipleAccountsInfo(chunk), { sleepTime }) - const response = {} - res.forEach((data, idx) => { - if (!data) { - sdk.log(`Invalid account: ${tokens[idx]}`) - return; - } - try { - data = decodeAccount('mint', data) - response[tokens[idx].toString()] = data.supply.toString() - if (api) api.add(tokens[idx].toString(), data.supply.toString()) - } catch (e) { - sdk.log(`Error decoding account: ${tokens[idx]}`) - } - }) - return response -} - -async function getTokenAccountBalances(tokenAccounts, { individual = false, allowError = false, chain = 'solana' } = {}) { - // const sleepTime = tokenAccounts.length > 2000 ? 2000 : 200 - const sleepTime = 200 - log('total token accounts: ', tokenAccounts.length, 'sleepTime: ', sleepTime) - tokenAccounts.forEach((val, i) => { - if (typeof val === 'string') tokenAccounts[i] = new PublicKey(val) - }) - const connection = getConnection(chain) - const balancesIndividual = [] - const balances = {} - const debugData = [] - const res = await runInChunks(tokenAccounts, chunk => connection.getMultipleAccountsInfo(chunk), { sleepTime }) - res.forEach((data, idx) => { - - if (!data) { - sdk.log(`Invalid account: ${tokenAccounts[idx]}`) - if (allowError) return; - else throw new Error(`Invalid account: ${tokenAccounts[idx]}`) - } - - try { - - data = decodeAccount('tokenAccount', data) - const mint = data.mint.toString() - const amount = data.amount.toString() - debugData.push({ account: tokenAccounts[idx].toString(), mint, amount }) - if (individual) - balancesIndividual.push({ mint, amount }) - else - sdk.util.sumSingleBalance(balances, mint, amount) - - } catch (e) { - if (individual) - balancesIndividual.push({ mint: 'error', amount: 0 }) - - sdk.log(`Error decoding account: ${tokenAccounts[idx]}`) - if (allowError) return; - else throw new Error(`Error decoding account: ${tokenAccounts[idx]}`) - } - - }) - - // console.log('debugData:', JSON.stringify(debugData)) - - return individual ? balancesIndividual : balances -} - -async function getMultipleAccounts(accountsArray, { api } = {}) { - const chain = api?.chain ?? 'solana' - const connection = getConnection(chain) - if (!accountsArray.length) return [] - accountsArray.forEach((val, i) => { - if (typeof val === 'string') accountsArray[i] = new PublicKey(val) - }) - return runInChunks(accountsArray, chunk => connection.getMultipleAccountsInfo(chunk)) -} - -function exportDexTVL(DEX_PROGRAM_ID, getTokenAccounts, chain = 'solana', { coreTokens } = {}) { - return async () => { - if (!getTokenAccounts) getTokenAccounts = _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, chain, allowError: true, })) - - const data = [] - for (let i = 0; i < results.length; i = i + 2) { - const tokenA = results[i] - const tokenB = results[i + 1] - data.push({ token0: tokenA.mint, token0Bal: tokenA.amount, token1: tokenB.mint, token1Bal: tokenB.amount, }) - } - - return transformDexBalances({ chain, data, blacklistedTokens: blacklistedTokens_default, coreTokens }) - } - - async function _getTokenAccounts() { - const connection = getConnection() - - const programPublicKey = new PublicKey(DEX_PROGRAM_ID) - const programAccounts = await connection.getParsedProgramAccounts(programPublicKey); - const tokenAccounts = [] - - programAccounts.forEach((account) => { - if (DEX_PROGRAM_ID === '9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP' && account.account.space < 324) { - return; - } - const tokenSwap = decodeAccount('tokenSwap', account.account); - tokenAccounts.push(tokenSwap.tokenAccountA.toString()) - tokenAccounts.push(tokenSwap.tokenAccountB.toString()) - }); - - return tokenAccounts - } -} - -function sumTokensExport({ tokenAccounts, owner, owners, tokens, solOwners, blacklistedTokens, allowError, tokensAndOwners, ...rest }) { - return (api) => sumTokens2({ api, chain: api.chain, tokenAccounts, owner, owners, tokens, solOwners, blacklistedTokens, allowError, tokensAndOwners, ...rest }) -} - -function getEndpoint(chain) { - return endpointMap[chain]() -} - -async function sumTokens2({ - api, - balances, - tokensAndOwners = [], - tokens = [], - owners = [], - owner, - tokenAccounts = [], - solOwners = [], - blacklistedTokens = [], - allowError = false, - computeTokenAccount = false, - chain = 'solana', -}) { - - if (api) chain = api.chain - if (!balances) { - if (api) balances = api.getBalances() - else balances = {} - } - - const endpoint = getEndpoint(chain) - blacklistedTokens.push(...blacklistedTokens_default) - if (!tokensAndOwners.length) { - if (owner) tokensAndOwners = tokens.map(t => [t, owner]) - if (owners.length) tokensAndOwners = tokens.map(t => owners.map(o => [t, o])).flat() - } - if (!tokensAndOwners.length) { - const _owners = getUniqueAddresses([...owners, owner].filter(i => i), chain) - - if (_owners.length) { - const data = await getOwnerAllAccounts(_owners) - const tokenBalances = {} - for (const item of data) { - if (blacklistedTokens.includes(item.mint) || +item.amount < 1e6) continue; - sdk.util.sumSingleBalance(tokenBalances, item.mint, item.amount) - } - await transformBalances({ tokenBalances, balances, chain, }) - } - } - - tokensAndOwners = tokensAndOwners.filter(([token]) => !blacklistedTokens.includes(token)) - // - - if (computeTokenAccount) { - const computedTokenAccounts = computeTokenAccounts(tokensAndOwners) - tokenAccounts.push(...computedTokenAccounts) - } else if (tokensAndOwners.length) { - tokensAndOwners = getUnique(tokensAndOwners) - log('total balance queries: ', tokensAndOwners.length) - await runInChunks(tokensAndOwners, async (chunk) => { - const tokenBalances = await getTokenBalances(chunk, chain) - transformBalances({ tokenBalances, balances, chain, }) - }, { sleepTime: 400 }) - } - - if (tokenAccounts.length) { - tokenAccounts = getUniqueAddresses(tokenAccounts, chain) - - const tokenBalances = await getTokenAccountBalances(tokenAccounts, { allowError, chain }) - await transformBalances({ tokenBalances, balances, chain, }) - } - - if (solOwners.length) { - const solBalance = await getSolBalances(solOwners) - sdk.util.sumSingleBalance(balances, `${chain}:` + ADDRESSES.solana.SOL, solBalance) - } - - blacklistedTokens.forEach(i => delete balances[`${chain}:` + i]) - - return balances - - function getUnique(tokensAndOwners) { - const set = new Set() - tokensAndOwners.forEach(i => { - set.add(i.join('$')) - }) - return [...set].map(i => i.split('$')) - } - - async function getOwnerAllAccounts(owners) { - sdk.log('fetching sol token balances for', owners.length, 'owners', chain,) - return runInChunks(owners, async (chunk) => { - const body = chunk.map(i => formOwnerBalanceQuery(i)) - const tokenBalances = await http.post(endpoint, body) - return tokenBalances.map(i => i.result.value).flat().map(i => ({ - account: i.pubkey, - mint: i.account.data.parsed.info.mint, - amount: i.account.data.parsed.info.tokenAmount.amount, - uiAmount: i.account.data.parsed.info.tokenAmount.uiAmount, - decimals: i.account.data.parsed.info.tokenAmount.decimals, - })) - - }) - } - - function formOwnerBalanceQuery(owner, programId = TOKEN_PROGRAM_ID) { - return { - jsonrpc: "2.0", - id: 1, - method: "getTokenAccountsByOwner", - params: [ - owner, - { programId: String(programId) }, - { encoding: "jsonParsed", }, - ], - } - } - - async function getSolBalances(accounts, { chain } = {}) { - const connection = getConnection(chain) - - const balances = await runInChunks(accounts, async (chunk) => { - chunk = chunk.map(i => typeof i === 'string' ? new PublicKey(i) : i) - const accountInfos = await connection.getMultipleAccountsInfo(chunk) - return accountInfos.map(account => account?.lamports ?? 0) - }) - return balances.reduce((a, b) => a + +b, 0) - } - - function computeTokenAccounts(tokensAndOwners) { - tokensAndOwners.forEach(([token, account], i) => { - if (typeof token === 'string') tokensAndOwners[i][0] = new PublicKey(token) - if (typeof account === 'string') tokensAndOwners[i][1] = new PublicKey(account) - }) - const programBuffer = TOKEN_PROGRAM_ID.toBuffer() - return tokensAndOwners.map(([mint, owner]) => { - return PublicKey.findProgramAddressSync( - [owner.toBuffer(), programBuffer, mint.toBuffer(),], - ASSOCIATED_TOKEN_PROGRAM_ID - )[0] - }) - } - - async function getTokenBalances(tokensAndAccounts, chain) { - const endpoint = getEndpoint(chain) - const body = tokensAndAccounts.map(([token, account], i) => formTokenBalanceQuery(token, account, i)) - const tokenBalances = await http.post(endpoint, body); - const balances = {} - tokenBalances.forEach(({ result: { value } = {} } = {}) => { - if (!value) return; - value.forEach(({ account: { data: { parsed: { info: { mint, tokenAmount: { amount } } } } } }) => { - sdk.util.sumSingleBalance(balances, mint, amount) - }) - }) - return balances - - function formTokenBalanceQuery(token, account, id = 1) { - return { - jsonrpc: "2.0", - id, - method: "getTokenAccountsByOwner", - params: [ - account, - { mint: token, }, - { encoding: "jsonParsed", }, - ], - } - } - } -} - -async function transformBalances({ tokenBalances, balances = {}, chain = 'solana' }) { - await transformBalancesOrig(chain, tokenBalances) - for (const [token, balance] of Object.entries(tokenBalances)) - sdk.util.sumSingleBalance(balances, token, balance) - return balances -} - -function readBigUInt64LE(buffer, offset) { - const first = buffer[offset]; - const last = buffer[offset + 7]; - if (first === undefined || last === undefined) { - throw new Error(); - } - const lo = first + buffer[++offset] * 2 ** 8 + buffer[++offset] * 2 ** 16 + buffer[++offset] * 2 ** 24; - const hi = buffer[++offset] + buffer[++offset] * 2 ** 8 + buffer[++offset] * 2 ** 16 + last * 2 ** 24; - return BigInt(lo) + (BigInt(hi) << BigInt(32)); -} - -async function getStakedSol(solAddress, api) { - const stakeAccounts = await getConnection().getProgramAccounts(StakeProgram.programId, { - filters: [{ - memcmp: { bytes: solAddress, offset: 4 + 8 } - }], - dataSlice: { offset: 0, length: 1 } // we dont care about the data, just the lamports - }) - const totalStakedSol = stakeAccounts.reduce((tvl, { account }) => { return tvl + account.lamports }, 0) - if (api) { - api.add(ADDRESSES.solana.SOL, totalStakedSol) - return api - } - return totalStakedSol -} - -async function getSolBalanceFromStakePool(address, api) { - const connection = getConnection() - if (typeof address === 'string') address = new PublicKey(address) - const accountInfo = await connection.getAccountInfo(address); - const deserializedAccountInfo = decodeAccount('stakePool', accountInfo) - return api.add(ADDRESSES.solana.SOL, +deserializedAccountInfo.totalLamports) -} - -async function runInChunks(inputs, fn, { chunkSize = 99, sleepTime } = {}) { - const chunks = sliceIntoChunks(inputs, chunkSize) - const results = [] - for (const chunk of chunks) { - results.push(...(await fn(chunk) ?? [])) - if (sleepTime) await sleep(sleepTime) - } - - return results.flat() -} - -function i80f48ToNumber(i80f48) { - if (i80f48.value) i80f48 = i80f48.value - // Create a mask with the lower 48 bits set to 1 - const mask = BigInt((1n << 48n) - 1n) - - // Shift right by 48 bits to get the integer part - const integerPart = BigInt(i80f48) >> BigInt(48) - - // Use bitwise AND to get the fractional part - const fractionalPart = BigInt(i80f48) & mask - - // Convert to regular numbers and add together - return Number(integerPart) + Number(fractionalPart) / Number(1n << 48n) -} - -module.exports = { - endpoint: endpoint(), - getMultipleAccounts, - exportDexTVL, - getProvider, - getConnection, - sumTokens2, - sumTokensExport, - transformBalances, - readBigUInt64LE, - decodeAccount, - blacklistedTokens_default, - getStakedSol, - getSolBalanceFromStakePool, - getTokenSupplies, - TOKEN_PROGRAM_ID, - ASSOCIATED_TOKEN_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID, - getAssociatedTokenAddress, - i80f48ToNumber, - runInChunks, - getTokenAccountBalances, -}; diff --git a/projects/helper/staking.js b/projects/helper/staking.js deleted file mode 100644 index 594ff8295c5..00000000000 --- a/projects/helper/staking.js +++ /dev/null @@ -1,88 +0,0 @@ -const sdk = require('@defillama/sdk'); -const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' -const token0Abi = 'address:token0' -const token1Abi = 'address:token1' -const { default: BigNumber } = require('bignumber.js'); -const { getChainTransform, getFixBalances, } = require('./portedTokens') -const { sumTokens2 } = require('../helper/unwrapLPs') - - -function staking(stakingContract, stakingToken, _chain = "ethereum", transformedTokenAddress = undefined, decimals = undefined) { - if (!Array.isArray(stakingContract)) stakingContract = [stakingContract] - if (!Array.isArray(stakingToken)) stakingToken = [stakingToken] - return stakings(stakingContract, stakingToken, _chain, transformedTokenAddress, decimals) -} - -function stakings(stakingContracts, stakingToken, _chain = "ethereum", transformedTokenAddress = undefined, decimals = undefined) { - return async (_, _b, cb, { chain, block } = {}) => { - - if (!chain) { - chain = _chain - block = cb[chain] - } - - if (!Array.isArray(stakingToken)) stakingToken = [stakingToken] - let transformAddress = transformedTokenAddress - if (typeof transformedTokenAddress === 'string') transformAddress = i => transformedTokenAddress - const balances = await sumTokens2({ chain, block, tokens: stakingToken, owners: stakingContracts, transformAddress, }) - - if (decimals) { - Object.keys(balances).forEach(key => { - balances[key] = BigNumber(balances[key]/ (10 ** decimals)).toFixed(0) - }) - } - return balances - } -} - -function stakingPricedLP(stakingContract, stakingToken, chain, lpContract, coingeckoIdOfPairedToken, stakedTokenIsToken0 = false, decimals=18) { - return stakingUnknownPricedLP(stakingContract, stakingToken, chain, lpContract, ()=>coingeckoIdOfPairedToken, decimals) -} - -function stakingUnknownPricedLP(stakingContract, stakingToken, chain, lpContract, transform, decimals) { - return async (timestamp, _ethBlock, {[chain]: block}) => { - if (!transform) transform = await getChainTransform(chain) - - const [bal, reserveAmounts, token0, token1] = await Promise.all([ - sdk.api.erc20.balanceOf({ - target: stakingToken, - owner: stakingContract, - chain, - block, - }), - ...[getReserves, token0Abi, token1Abi].map(abi=>sdk.api.abi.call({ - target: lpContract, - abi, - chain, - block - }).then(o=>o.output)) - ]) - let token, stakedBal; - if(token0.toLowerCase() === stakingToken.toLowerCase()){ - token = token1; - stakedBal = BigNumber(bal.output).times(reserveAmounts[1]).div(reserveAmounts[0]).toFixed(0); - }else { - stakedBal = BigNumber(bal.output).times(reserveAmounts[0]).div(reserveAmounts[1]).toFixed(0); - token = token0 - } - if(decimals !== undefined){ - stakedBal = Number(stakedBal)/(10**decimals) - } - - const balances = { - [transform(token)]: stakedBal - } - - const fixBalances = await getFixBalances(chain) - fixBalances(balances) - - return balances - } -} - -module.exports = { - staking, - stakings, - stakingPricedLP, - stakingUnknownPricedLP -} diff --git a/projects/helper/streamingHelper.js b/projects/helper/streamingHelper.js deleted file mode 100644 index 441ba2ffffe..00000000000 --- a/projects/helper/streamingHelper.js +++ /dev/null @@ -1,119 +0,0 @@ -const ADDRESSES = require('./coreAssets.json') -const { getUniqueAddresses } = require('./tokenMapping') -let stableTokens = ['USDC', 'USDT', 'DAI', 'WETH', 'WFTM', 'WGLMR', 'WBNB', 'WAVAX', 'JCHF', 'JEUR', 'WBTC', 'AGDAI', 'JPYC', - 'MIMATIC', 'WXDAI', 'EURS', 'JGBP', 'CNT', 'USD+', 'AMUSDC', 'RAI', 'SLP', 'SDAM3CRV', 'AMDAI', 'TUSD', 'RAI', 'UNI-V2', 'SLP', 'ScUSDC', - 'cUSDC', 'iDAI', 'FTM', 'yUSDC', 'cDAI', 'MATIC', 'UST', 'stETH', 'USD', 'mUSD', 'iUSDC', 'aDAI', 'AGEUR', 'BCT', 'WMATIC', - 'DAI.e', 'USDC.e', 'USDT.e', 'BUSD', 'WKAVA', 'axlUSDC', -].map(i => i.toUpperCase()) - -function isStableToken(symbol = '', address = '') { - return stableTokenAddresses.includes(address.toLowerCase()) || stableTokens.includes(symbol.toUpperCase()) -} - -async function getWhitelistedTokens({ api, tokens, isVesting }) { - tokens = getUniqueAddresses(tokens, api.chain) - let symbols = [] - if (!['solana', 'sui', 'aptos'].includes(api.chain)) { - symbols = await api.multiCall({ abi: 'string:symbol', calls: tokens, permitFailure: true}) - } - tokens = tokens.filter((v, i) => isWhitelistedToken(symbols[i], v, isVesting)) - return tokens -} - -function isWhitelistedToken(symbol, address, isVesting) { - const isStable = isStableToken(symbol, address) - return isVesting ? !isStable : isStable -} - -const stableTokenAddresses = [ - // native token - ADDRESSES.null, - - // metis - ADDRESSES.metis.m_USDC, - ADDRESSES.metis.BUSD, - - // avax - ADDRESSES.avax.DAI, - ADDRESSES.avax.USDC_e, - ADDRESSES.avax.USDC, - '0x0f577433Bf59560Ef2a79c124E9Ff99fCa258948', - - // xdai - ADDRESSES.xdai.WXDAI, - ADDRESSES.xdai.USDT, - '0x91f8490eC27cbB1b2FaEdd29c2eC23011d7355FB', - - // fantom - ADDRESSES.fantom.DAI, - '0x6Fc9383486c163fA48becdEC79d6058f984f62cA', - ADDRESSES.fantom.USDC, - ADDRESSES.fantom.WFTM, - - // ethereum - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.FRAX, - '0xe2f2a5C287993345a840Db3B0845fbC70f5935a5', - ADDRESSES.ethereum.WETH, - - // polygon - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.USDC, - '0xC2DbaAEA2EfA47EBda3E572aa0e55B742E408BF6', - ADDRESSES.polygon.WMATIC_1, - '0x4198A31A98dB56b48AEBa6103F7C23679B9794F3', - - // bsc - '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.USDC, - - // arbitrum - ADDRESSES.optimism.DAI, - ADDRESSES.arbitrum.WETH, - '0x662d0f9Ff837A51cF89A1FE7E0882a906dAC08a3', - ADDRESSES.arbitrum.USDC, - '0x64343594Ab9b56e99087BfA6F2335Db24c2d1F17', - ADDRESSES.arbitrum.USDT, - - // optimism - ADDRESSES.optimism.DAI, - ADDRESSES.optimism.USDC, - - // meter - ADDRESSES.meter.MTR, - ADDRESSES.meter.USDC_eth, - ADDRESSES.meter.BUSD_bsc, - ADDRESSES.meter.USDT_eth, - '0x687A6294D0D6d63e751A059bf1ca68E4AE7B13E2', - - ADDRESSES.solana.SOL, - ADDRESSES.solana.USDC, - ADDRESSES.solana.USDT, - - ADDRESSES.sui.SUI, - ADDRESSES.sui.USDC, - ADDRESSES.sui.WETH, - ADDRESSES.sui.USDT, - - ADDRESSES.aptos.APT, - ADDRESSES.aptos.USDC, - ADDRESSES.aptos.USDC_1, - ADDRESSES.aptos.USDC_2, - ADDRESSES.aptos.USDT, - ADDRESSES.aptos.USDT_2, - - -].map(i => i.toLowerCase()) - -module.exports = { - stableTokens, - stableTokenAddresses, - isStableToken, - isWhitelistedToken, - getWhitelistedTokens, -} \ No newline at end of file diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js deleted file mode 100644 index e7cf0c8d7f2..00000000000 --- a/projects/helper/sumTokens.js +++ /dev/null @@ -1,185 +0,0 @@ -const { ibcChains, getUniqueAddresses } = require('./tokenMapping') -const { get, post, } = require('./http') -const { sumTokens2: sumTokensEVM, nullAddress, } = require('./unwrapLPs') -const sdk = require('@defillama/sdk') - -const helpers = { - "eos": require("./chain/eos"), - "ton": require("./chain/ton"), - "ergo": require("./chain/ergo"), - "elrond": require("./chain/elrond"), - "cardano": require("./chain/cardano"), - "algorand": require("./chain/algorand"), - "cosmos": require("./chain/cosmos"), - "solana": require("./solana"), - "aptos": require("./chain/aptos"), - "sui": require("./chain/sui"), - "tezos": require("./chain/tezos"), - "zilliqa": require("./chain/zilliqa"), - "near": require("./chain/near"), - "bitcoin": require("./chain/bitcoin"), - "litecoin": require("./chain/litecoin"), - "polkadot": require("./chain/polkadot"), - "acala": require("./chain/acala"), - "bifrost": require("./chain/bifrost"), - "aelf": require("./chain/aelf"), - "aeternity": require("./chain/aeternity"), - "alephium": require("./chain/alephium"), - "hedera": require("./chain/hbar"), - "stacks": require("./chain/stacks"), - "starknet": require("./chain/starknet"), - "brc20": require("./chain/brc20"), - "doge": require("./chain/doge"), - "bittensor": require("./chain/bittensor"), - "fuel": require("./chain/fuel"), - "radixdlt": require("./chain/radixdlt"), - "stellar": require("./chain/stellar"), -} - - -// some chains support both evm & non-evm, this is to handle if address provided is not evm -const altEVMHelper = { - "astar": require("./chain/astar"), - "evmos": helpers.cosmos, -} - -const geckoMapping = { - bep2: 'binancecoin', - ripple: 'ripple', -} - -const specialChains = Object.keys(geckoMapping) - -async function getBalance(chain, account) { - switch (chain) { - case 'ripple': return getRippleBalance(account) - case 'bep2': - // info: https://docs.bnbchain.org/api-swagger/index.html - const balObject = (await get(`https://dex.binance.org/api/v1/account/${account}`)).balances.find(i => i.symbol === 'BNB') - return +(balObject?.free ?? 0) - default: throw new Error('Unsupported chain') - } -} - -function sumTokensExport(options) { - return async (api) => sumTokens( - { ...api, api, ...options } - ) -} - -async function sumTokens(options) { - let { chain, owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], balances = {}, token, api } = options - if (api && !specialChains.includes(chain)) { - chain = api.chain - } - if (chain === 'bsc' && (owners[0] ?? '').startsWith('bnb')) chain = 'bep2' - - if (token) tokens = [token] - if (owner) owners = [owner] - const evmAddressExceptions = new Set(['tron', 'xdc']) - const nonEvmOwnerFound = !evmAddressExceptions.has(chain) && owners.some(o => !o.startsWith('0x')) - const isAltEvm = altEVMHelper[chain] && nonEvmOwnerFound - console.log('chain:', chain, 'isAltEvm:', isAltEvm, 'nonEvmOwnerFound:', nonEvmOwnerFound) - - if (!ibcChains.includes(chain) && !helpers[chain] && !specialChains.includes(chain) && !isAltEvm) { - if (nonEvmOwnerFound) throw new Error('chain handler missing: ' + chain) - return sumTokensEVM(options) - } - - - if (!isAltEvm) - owners = getUniqueAddresses(owners, chain) - else - owners = [...new Set(owners)] // retain case sensitivity - - blacklistedTokens = getUniqueAddresses(blacklistedTokens, chain) - if (!['eos'].includes(chain)) - tokens = getUniqueAddresses(tokens, chain).filter(t => !blacklistedTokens.includes(t)) - - if (!tokensAndOwners.length) { - if (!owners.length && owner) - owners = [owner] - - tokensAndOwners = tokens.map(t => owners.map(o => ([t, o]))).flat() - } - - options.tokensAndOwners = getUniqueToA(tokensAndOwners, chain) - options.owners = owners - options.tokens = tokens - options.blacklistedTokens = blacklistedTokens - let helper = helpers[chain] || altEVMHelper[chain] - - if (ibcChains.includes(chain) && nonEvmOwnerFound) helper = helpers.cosmos - - if (helper) { - switch (chain) { - case 'cardano': - case 'solana': return helper.sumTokens2(options) - case 'eos': return helper.get_account_tvl(owners, tokens, 'eos') - case 'tezos': options.includeTezos = true; break; - } - - const balances = await helper.sumTokens(options) - - if (chain === 'bitcoin' && options.includeBRC20) { - options.balances = balances - return helpers.brc20.sumTokens(options) - } - return balances - - } else if (!specialChains.includes(chain)) { - if (ibcChains.includes(chain)) return sumTokensEVM(options) - throw new Error('chain handler missing!!!') - } - - const geckoId = geckoMapping[chain] - const balanceArray = await Promise.all(owners.map(i => getBalance(chain, i))) - sdk.util.sumSingleBalance(balances, geckoId, balanceArray.reduce((a, i) => a + +i, 0)) - return balances - - function getUniqueToA(toa, chain) { - toa = toa.map(i => i.join('¤')) - return getUniqueAddresses(toa, chain).map(i => i.split('¤')) - } -} - -async function getRippleBalance(account) { - const body = { "method": "account_info", "params": [{ account }] } - const res = await post('https://s1.ripple.com:51234', body) - if (res.result.error === 'actNotFound') return 0 - return res.result.account_data.Balance / 1e6 -} - -async function addRippleTokenBalance({ account, api, whitelistedTokens }) { - - if (Array.isArray(whitelistedTokens) && whitelistedTokens.length) - whitelistedTokens = new Set(whitelistedTokens.map(i => i.toLowerCase())) - const body = { - "method": "account_lines", - "params": [{ - account, - ledger_index: "validated" - }] - } - const res = await post('https://s1.ripple.com:51234', body) - if (res.result.error === 'actNotFound') return {} - - - // Add token balances - if (res.result.lines) { - res.result.lines.forEach(line => { - const tokenKey = `${line.currency}.${line.account}` - if (whitelistedTokens && !whitelistedTokens.has(tokenKey.toLowerCase())) return; - api.add(tokenKey, parseFloat(line.balance)) - }) - } - - return api.getBalances() -} - -module.exports = { - nullAddress, - sumTokensExport, - sumTokens, - addRippleTokenBalance, -} diff --git a/projects/helper/sushi-server/adapterMapping.js b/projects/helper/sushi-server/adapterMapping.js deleted file mode 100644 index 41348179e0c..00000000000 --- a/projects/helper/sushi-server/adapterMapping.js +++ /dev/null @@ -1,110 +0,0 @@ -module.exports = { - hourlyRun: [ - [ - { - 'fxdao': '/fxdao/api.js', - 'harvest': '/harvest.js', - 'astar-dapps-staking': '/astar-dapps-staking/api', - 'injective-orderbook': '/injective-orderbook/api', - 'lisa': '/lisa/api', - }, - { - 'bifrost-staking': '/bifrost-staking/api', - 'bifrost-dex': '/bifrost-dex/api', - 'bifrost-liquid-crowdloan': '/bifrost-liquid-crowdloan/api', - }, - // { - // 'blend-pools': '/blend-pools/api.js', // moved to rpc proxy - // 'blend-pools-v2': '/blend-pools-v2/api.js', // moved to rpc proxy - // 'blend-backstop': '/blend-backstop/api.js', // moved to rpc proxy - // 'blend-backstop-v2': '/blend-backstop-v2/api.js', // moved to rpc proxy - // 'genshiro': '/genshiro/api', - // 'streamflow': '/streamflow/index', - // 'hydradex-v3': '/hydradex-v3/index.js', // project is dead, there is a new chain hydragon - // 'parallel-staking': '/parallel-staking/api', - // 'parallel-crowdloan': '/parallel-crowdloan/api', - // 'parallelamm': '/parallelamm/api', - // 'parallel-lending': '/parallel-lending/api', - // 'parallel-stream': '/parallel-stream/api', - // 'polkadex': '/polkadex/api', // dead/paused ?? - // }, - { - 'interlay-btc': '/interlay-btc/api', - 'interlay-staking': '/interlay-staking/api', - 'interlay-collateral': '/interlay-collateral/api', - 'interlay-dex': '/interlay-dex/api', - 'interlay-lending': '/interlay-lending/api', - }, - { - 'hydradx': '/hydradx/api.js', - }, - { - 'manta-atlantic-stake': '/manta-atlantic-stake/api', - 'mantadex': '/mantadex/api', - }, - { - 'acala-staking': '/acala-staking/api', - 'acala-lcdot': '/acala-lcdot/api', - 'tapio': '/tapio/api', - 'acala-lending': '/acala-lending/api', - 'acala-dex': '/acala-dex/api', - }, - { - 'karura-lending': '/karura-lending/api', - 'karura-staking': '/karura-staking/api', - 'taiga': '/taiga/api', - 'karura-dex': '/karura-dex/api', - }, - { - 'kintsugi': '/kintsugi/api', - 'jewelswap-lev-farming': '/jewelswap-lev-farming/index', - 'jewelswap-nft': '/jewelswap-nft/index', - - }, - { - 'newbitcoin': '/newbitcoin/index', - 'nemoswap': '/nemoswap/index', - 'stackingdao': '/stackingdao/api', - 'stacks': '/stacks/api', - }, - ], - ], - bulky: [ - [{ - // 'quantumx-network': '/quantumx-network/index', - 'polkadot': '/treasury/polkadot-api', - 'stackswap': '/stackswap/api', - 'velar-amm': '/velar-amm/api', - 'alexlab': '/alexlab/api', - 'satoshi-dex': '/satoshi-dex/api', - 'raydium': '/raydium/index', - 'vitcswap': '/vitcswap/api', - 'defichain-loans': '/defichain-loans', - // 'kamino': '/kamino/api', - // '1inch': '/1inch/apiCache', - 'izumi': '/izumi/api', - // 'summer-fi': '/summer-fi/index', - // 'sunswap-v2': '/sunswap-v2/index', - unicrypt: '/unicrypt/apiCache', - deeplock: '/deeplock/apiCache', - pinksale: '/pinksale/apiCache', - 'team-finance': '/team-finance/apiCache', - synthetix: '/synthetix/apiCache', - dxsale: '/dxsale/apiCache', - blum: '/blum/api', - 'yodeswap': '/yodeswap/api', - 'dogeswap-org': '/dogeswap-org/api', - - // breaks often - // 'equilibrium': '/equilibrium/api', - // 'hydradex': '/hydradex.js', - - // chain down? - // 'parallel-staking': '/parallel-staking/api', - // 'parallel-crowdloan': '/parallel-crowdloan/api', - // 'parallelamm': '/parallelamm/api', - // 'parallel-lending': '/parallel-lending/api', - // 'parallel-stream': '/parallel-stream/api', - }], - ], -} diff --git a/projects/helper/sushi-trident.js b/projects/helper/sushi-trident.js deleted file mode 100644 index 41f35e8d6ec..00000000000 --- a/projects/helper/sushi-trident.js +++ /dev/null @@ -1,62 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokens2, } = require('./unwrapLPs') -const { log } = require('./utils') - -function getTridentTVLFromFactories({ chain, factories}) { - return async (ts, _block, { [chain]: block }) => { - const toa = [] - for (let factory of factories) { - const pairLength = (await sdk.api.abi.call({ target: factory, abi: abis.totalPoolsCount, chain, block })).output - if (pairLength === null) - throw new Error("allPairsLength() failed") - - log(chain, ' No. of pairs: ', pairLength) - - let pairNums = Array.from(Array(Number(pairLength)).keys()) - let pairs = (await sdk.api.abi.multiCall({ abi: abis.getPoolAddress, chain, calls: pairNums.map(num => ({ target: factory, params: [num] })), block })).output - const pairCalls = pairs.map(result => ({target: result.output})) - const { output: tokens } = await sdk.api.abi.multiCall({ - abi: abis.getAssets, - calls: pairCalls, - chain, block, - }) - tokens.forEach(({ output, input: { target } }) => output.forEach(t => toa.push([t, target]))) - } - return sumTokens2({ chain, block, tokensAndOwners: toa }) - } -} - -function getTridentTVL({ chain, factory}) { - return async (ts, _block, { [chain]: block }) => { - const pairLength = (await sdk.api.abi.call({ target: factory, abi: abis.totalPoolsCount, chain, block })).output - if (pairLength === null) - throw new Error("allPairsLength() failed") - - log(chain, ' No. of pairs: ', pairLength) - - let pairNums = Array.from(Array(Number(pairLength)).keys()) - let pairs = (await sdk.api.abi.multiCall({ abi: abis.getPoolAddress, chain, calls: pairNums.map(num => ({ target: factory, params: [num] })), block })).output - const pairCalls = pairs.map(result => ({target: result.output})) - const { output: tokens } = await sdk.api.abi.multiCall({ - abi: abis.getAssets, - calls: pairCalls, - chain, block, - }) - - const toa = [] - tokens.forEach(({ output, input: { target } }) => output.forEach(t => toa.push([t, target]))) - return sumTokens2({ chain, block, tokensAndOwners: toa }) - } -} - -// taken from https://github.com/pangea-protocol/pangea-core/tree/main/deployments/abis -const abis = { - totalPoolsCount: "uint256:totalPoolsCount", - getPoolAddress: "function getPoolAddress(uint256 idx) view returns (address pool)", - getAssets: "address[]:getAssets", -} - -module.exports = { - getTridentTVLFromFactories, - getTridentTVL, -} diff --git a/projects/helper/svmChainConfig.js b/projects/helper/svmChainConfig.js deleted file mode 100644 index 95156017a51..00000000000 --- a/projects/helper/svmChainConfig.js +++ /dev/null @@ -1,24 +0,0 @@ -/** I created this file to get around circular dependency issues */ - -const { getEnv } = require("./env") - -const endpoint = (isClient) => { - if (isClient) return getEnv('SOLANA_RPC_CLIENT') ?? getEnv('SOLANA_RPC') - return getEnv('SOLANA_RPC') -} - -const endpointMap = { - solana: endpoint, - renec: () => getEnv('RENEC_RPC'), - eclipse: () => getEnv('ECLIPSE_RPC'), - soon: () => getEnv('SOON_RPC'), - soon_base: () => getEnv('SOON_BASE_RPC'), - soon_bsc: () => getEnv('SOON_BSC_RPC'), -} -const svmChains = Object.keys(endpointMap) - -module.exports = { - endpoint, - endpointMap, - svmChains, -} \ No newline at end of file diff --git a/projects/helper/token.js b/projects/helper/token.js deleted file mode 100644 index fc5c848fa93..00000000000 --- a/projects/helper/token.js +++ /dev/null @@ -1,152 +0,0 @@ -const axios = require("axios") -const { getEnv } = require('./env') -const { getUniqueAddresses } = require('./utils') -const { get } = require('./http') -const { getCache, setCache, } = require('./cache') -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') - -async function covalentGetTokens(address, api, { - onlyWhitelisted = true, - useCovalent = false, - skipCacheRead = false, - ignoreMissingChain = false, -} = {}) { - const chainId = api?.chainId - const chain = api?.chain - if (!chainId) throw new Error('Missing chain to chain id mapping:' + api.chain) - if (!address) throw new Error('Missing adddress') - - if (['mantle', 'blast'].includes(chain)) useCovalent = true - - if (!useCovalent) { - if (!ankrChainMapping[chain]) { - if (ignoreMissingChain) return Object.values(ADDRESSES[chain] ?? []).concat([ADDRESSES.null]) - throw new Error('Chain Not supported: ' + chain) - } - const tokens = await ankrGetTokens(address, { onlyWhitelisted, skipCacheRead, }) - return tokens[ankrChainMapping[chain]] ?? [] - } - - const timeNow = +Date.now() - const THREE_DAYS = 3 * 24 * 3600 * 1000 - const project = 'covalent-cache' - const key = `${address}/${chain}` - const cache = (await getCache(project, key)) ?? {} - if (!cache.timestamp || (cache.timestamp + THREE_DAYS) < timeNow) { - cache.data = await _covalentGetTokens() - cache.timestamp = timeNow - await setCache(project, key, cache) - } - - return cache.data - - async function _covalentGetTokens() { - const { - data: { items } - } = await get(`https://api.covalenthq.com/v1/${chainId}/address/${address}/balances_v2/?&key=${getEnv('COVALENT_KEY')}`) - let table = {} - items - .filter(i => +i.balance > 0) - .forEach(i => table[i.contract_name || 'null'] = i.contract_address) - return items - .filter(i => +i.balance > 0) - .map(i => i.contract_address.toLowerCase()) - } -} - -const ankrTokenCalls = {} - -const ankrChainMapping = { - ethereum: 'eth', - base: 'base', - bsc: 'bsc', - arbitrum: 'arbitrum', - optimism: 'optimism', - fantom: 'fantom', - polygon: 'polygon', - polygon_zkevm: 'polygon_zkevm', - era: 'zksync_era', // ankr has issues - avax: 'avalanche', - flare: 'flare', - xdai: 'gnosis', - linea: 'linea', - rollux: 'rollux', - scroll: 'scroll', - syscoin: 'syscoin', - moonbeam: 'moonbeam' // ankr has issues -} - -async function ankrGetTokens(address, { onlyWhitelisted = true, skipCacheRead = false } = {}) { - address = address.toLowerCase() - - if (!ankrTokenCalls[address]) ankrTokenCalls[address] = _call() - return ankrTokenCalls[address] - - async function _call() { - const project = 'ankr-cache' - const key = onlyWhitelisted ? address : `${address}/all` - const timeNow = Math.floor(Date.now() / 1e3) - const THREE_DAYS = 3 * 24 * 3600 - const cache = (await getCache(project, key)) ?? {} - if (!skipCacheRead && cache.timestamp && (timeNow - cache.timestamp) < THREE_DAYS) - return cache.tokens - - sdk.log('Pulling tokens for ' + address) - - try { - const cachedTokens = cache?.tokens ?? {} - const problemChains = ['zksync_era', 'moonbeam'] - const problemChainSet = new Set(problemChains) - const options = { - method: 'POST', - url: `https://rpc.ankr.com/multichain/${getEnv('ANKR_API_KEY')}`, - params: { ankr_getAccountBalance: '' }, - headers: { accept: 'application/json', 'content-type': 'application/json' }, - data: { - jsonrpc: '2.0', - method: 'ankr_getAccountBalance', - params: { - blockchain: Object.values(ankrChainMapping).filter(c => !problemChainSet.has(c)), - onlyWhitelisted, - nativeFirst: true, - skipSyncCheck: true, - walletAddress: address - }, - id: 42 - }, - timeout: 30000, // 30 seconds timeout - }; - const tokens = cache.tokens ?? {} - const { data: { result: { assets } } } = await axios.request(options) - const tokenCache = { timestamp: timeNow, tokens, } - for (const asset of assets) { - const { contractAddress, blockchain } = asset - if (!tokens[blockchain]) tokens[blockchain] = [] - tokens[blockchain].push(contractAddress ?? ADDRESSES.null) - } - problemChains.forEach(chain => { - if (cachedTokens[chain]) tokens[chain] = cachedTokens[chain] - }) - - // Remove duplicates - for (const [chain, values] of Object.entries(tokens)) { - tokens[chain] = getUniqueAddresses(values) - } - // tokens.eth = await getETHTokens(address, onlyWhitelisted) - - await setCache(project, key, tokenCache) - return tokens - } catch (e) { - sdk.log('Error fetching tokens for ' + address, e) - if (cache.tokens) - return cache.tokens - throw e - } - } -} - -module.exports = { - covalentGetTokens, - ankrChainMapping, -} diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js deleted file mode 100644 index 43f477f1842..00000000000 --- a/projects/helper/tokenMapping.js +++ /dev/null @@ -1,279 +0,0 @@ -let coreAssets = require('./coreAssets.json') -const { svmChains } = require('./svmChainConfig') -const ADDRESSES = coreAssets -const nullAddress = ADDRESSES.null - -coreAssets = JSON.parse(JSON.stringify(coreAssets)) - -// Multichain bridge info: https://bridgeapi.anyswap.exchange/v2/serverInfo/all -// IBC info - https://github.com/PulsarDefi/IBC-Cosmos/blob/main/ibc_data.json -// O3swap - https://agg.o3swap.com/v1/tokens_all -// wanchain - https://wanscan.org/tokens -// chainge - https://openapi.chainge.finance/open/v1/base/getSupportTokens,https://openapi.chainge.finance/open/v1/base/getSupportChains -// TODO: get celer info -// Alexar info: https://api.axelarscan.io/cross-chain/tvl -// coingecko coins: https://api.coingecko.com/api/v3/coins/list?include_platform=true -// gravity bridge for IBC: https://api.mintscan.io/v2/assets/gravity-bridge -// 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', 'provenance', 'comdex', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', 'sei', 'archway', 'migaloo', 'secret', 'aura', 'xpla', 'bostrom', 'joltify', 'nibiru', - 'kopi', 'elys', "pryzm", "mantra", 'agoric', 'band', - 'celestia', 'dydx', 'carbon', 'milkyway', 'regen', 'sommelier', 'stride', 'prom', 'babylon', 'xion' -] -const caseSensitiveChains = [...ibcChains, ...svmChains, 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', 'mvc', 'renec', 'doge', 'stellar', 'massa', - 'eclipse', 'acala', 'aelf', 'aeternity', 'alephium', 'bifrost', 'bittensor', 'verus', -] - -const transformTokens = { - // Sample Code - // cronos: { - // "0x065de42e28e42d90c2052a1b49e7f83806af0e1f": "0x123", // CRK token is mispriced - // [ADDRESSES.cronos.TUSD]: ADDRESSES.ethereum.TUSD, - // }, -} -const ibcMappings = { - // Sample Code - // 'ibc/CA1261224952DF089EFD363D8DBB30A8AB6D8CD181E60EE9E68E432F8DE14FE3': { coingeckoId: 'inter-stable-token', decimals: 6, }, - // 'ibc/5A76568E079A31FA12165E4559BA9F1E9D4C97F9C2060B538C84DCD503815E30': { coingeckoId: 'injective-protocol', decimals: 18, }, -} - -const fixBalancesTokens = { - ozone: { - // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain - }, - camp: { - [ADDRESSES.camp.WCAMP]: { coingeckoId: "camp-network", decimals: 18 }, // Wrapped CAMP (ERC-20 wrapper of native CAMP) - [ADDRESSES.camp.ETH]: { coingeckoId: "ethereum", decimals: 18 }, // Wrapped ETH - [ADDRESSES.camp.USDC]: { coingeckoId: "usd-coin", decimals: 18 }, // Wrapped USDC - }, - mezo: { - [ADDRESSES.mezo.MUSD]: { coingeckoId: "mezo-usd", decimals: 18 }, - [ADDRESSES.mezo.BTC]: { coingeckoId: "bitcoin", decimals: 18 }, - [ADDRESSES.mezo.mUSDC]: { coingeckoId: "usd-coin", decimals: 18 }, - [ADDRESSES.mezo.mUSDT]: { coingeckoId: "tether", decimals: 18 }, - [ADDRESSES.mezo.mDAI]: { coingeckoId: "dai", decimals: 18 }, - [ADDRESSES.mezo.mSolvBTC]: { coingeckoId: "solv-protocol-btc", decimals: 18 }, - [ADDRESSES.mezo.mT]: { coingeckoId: "threshold-network-token", decimals: 18 }, - [ADDRESSES.mezo.mUSDe]: { coingeckoId: "ethena-usde", decimals: 18 }, - [ADDRESSES.mezo.mcbBTC]: { coingeckoId: "coinbase-wrapped-btc", decimals: 18 }, - }, - plasma: { - [nullAddress]: { coingeckoId: "plasma", decimals: 18 }, // Native XPL - '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { coingeckoId: "plasma", decimals: 18 }, // Native XPL - '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb': { coingeckoId: "usdt0", decimals: 6 }, // USDT0 - '0x9895D81bB462A195b4922ED7De0e3ACD007c32CB': { coingeckoId: "ethereum", decimals: 18 }, // Wrapped ETH - }, - goat: { - '0x3a1293Bdb83bBbDd5Ebf4fAc96605aD2021BbC0f': { coingeckoId: "ethereum", decimals: 18 }, // Wrapped ETH - }, - botanix: { - '0x3292c42e8E9Ab3C6a12CFdA556BbCB6f113B1E28': { coingeckoId: "ethereum", decimals: 18 }, // Wrapped ETH - }, - provenance: { - nhash: { coingeckoId: 'hash-2', decimals: 9 }, - 'uusd.trading': { coingeckoId: 'usd-coin', decimals: 6 }, - 'uusdc.figure.se': { coingeckoId: 'usd-coin', decimals: 6 }, - 'uylds.fcc': { coingeckoId: 'usd-coin', decimals: 6 }, - 'nbtc.figure.se': { coingeckoId: 'bitcoin', decimals: 9 }, - 'neth.figure.se': { coingeckoId: 'ethereum', decimals: 9 }, - 'uusdt.figure.se': { coingeckoId: 'tether', decimals: 6 }, - 'nlink.figure.se': { coingeckoId: 'chainlink', decimals: 9 }, - 'nsol.figure.se': { coingeckoId: 'solana', decimals: 9 }, - 'nuni.figure.se': { coingeckoId: 'uniswap', decimals: 9 }, - 'uxrp.figure.se': { coingeckoId: 'ripple', decimals: 6 }, - 'ulrwa.figure.markets': { coingeckoId: 'usd-coin', decimals: 6 }, - 'ureit.figure.markets': { coingeckoId: 'usd-coin', decimals: 6 }, - SOL: { coingeckoId: 'solana', decimals: 0 }, - ETH: { coingeckoId: 'ethereum', decimals: 0 }, - USDT: { coingeckoId: 'tether', decimals: 0 }, - BTC: { coingeckoId: 'bitcoin', decimals: 0 }, - USDC: { coingeckoId: 'usd-coin', decimals: 0 }, - USD: { coingeckoId: 'usd-coin', decimals: 0 }, - YLDS: { coingeckoId: 'usd-coin', decimals: 0 }, - 'pm.sale.pool.3dxq3fk9llvhrqqwhodiap': { coingeckoId: 'usd-coin', decimals: 0 }, - }, - neo: { - '0x68b938cc42b6a2d54fb9040f5facf4290ebb8c5f': { coingeckoId: 'tether', decimals: 6 }, - '0xd3a41b53888a733b549f5d4146e7a98d3285fa21': { coingeckoId: 'ethereum', decimals: 18 }, - '0xd2a4cff31913016155e38e474a2c06d08be276cf': { coingeckoId: 'gas', decimals: 8 }, - '0x4548a3bcb3c2b5ce42bf0559b1cf2f1ec97a51d0': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, - }, - chromia: { - '9bacd576f40b6674aa76b8bfa1330077a3b94f581bfdb2ef806122c384dcdf25': { coingeckoId: 'usd-coin', decimals: 18 }, - }, - somnia: { - '0x936ab8c674bcb567cd5deb85d8a216494704e9d8': { coingeckoId: 'ethereum', decimals: 18 } - } -} - -ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) - -function getUniqueAddresses(addresses, chain = 'ethereum') { - - const toLowerCase = !caseSensitiveChains.includes(chain) - const set = new Set() - addresses.forEach(i => { - if (typeof i !== 'string') i = i.toString() - set.add(toLowerCase ? i.toLowerCase() : i) - }) - return [...set] -} - -function normalizeMapping(mapping, chain) { - if (caseSensitiveChains.includes(chain)) return; - Object.keys(mapping).forEach( - key => (mapping[key.toLowerCase()] = mapping[key]) - ); -} - -for (const [chain, mapping] of Object.entries(transformTokens)) - normalizeMapping(mapping, chain) - -for (const [chain, mapping] of Object.entries(fixBalancesTokens)) - normalizeMapping(mapping, chain) - -for (const [chain, mapping] of Object.entries(coreAssets)) - coreAssets[chain] = Object.values(mapping).map(i => stripTokenHeader(i, chain)) - -function getCoreAssets(chain = 'ethereum') { - const tokens = [ - coreAssets[chain] || [], - Object.keys(transformTokens[chain] || {}), - Object.keys(fixBalancesTokens[chain] || {}), - ].flat() - let addresses = getUniqueAddresses(tokens, chain) - if (ibcChains.includes(chain)) addresses.push(...coreAssets.ibc.map(i => 'ibc/' + i)) - if (anyswapTokenBlacklist[chain]) addresses = addresses.filter(i => !anyswapTokenBlacklist[chain].includes(i)) - return addresses -} - -function normalizeAddress(address, chain, extractChain = false) { - if (!chain && extractChain && address.includes(':')) chain = address.split(':')[0] - if (chain === 'sei' && address?.startsWith('0x')) return address.toLowerCase() - if (caseSensitiveChains.includes(chain)) return address - return address.toLowerCase() -} - -function stripTokenHeader(token, chain) { - if (chain === 'aptos') return token.replace(/^aptos:/, '') - token = normalizeAddress(token, chain); - if (chain && !token.startsWith(chain)) return token; - return token.indexOf(":") > -1 ? token.split(":").slice(1).join(':') : token; -} - -const eulerTokens = [ - "0x1b808f49add4b8c6b5117d9681cf7312fcf0dc1d", - "0xe025e3ca2be02316033184551d4d3aa22024d9dc", - "0xeb91861f8a4e1c12333f42dce8fb0ecdc28da716", - "0x4d19f33948b99800b6113ff3e83bec9b537c85d2", - "0x5484451a88a35cd0878a1be177435ca8a0e4054e", - "0x64ad6d2472de5ddd3801fb4027c96c3ee7a7ee82", - // 4626 wrapped eTokens - "0x60897720aa966452e8706e74296b018990aec527", - "0x3c66B18F67CA6C1A71F829E2F6a0c987f97462d0", - "0x4169Df1B7820702f566cc10938DA51F6F597d264", - "0xbd1bd5c956684f7eb79da40f582cbe1373a1d593", -] - -const anyswapTokenBlacklist = { - ethereum: [ADDRESSES.ethereum.FTM], - fantom: [ - ADDRESSES.fantom.anyUSDC, - ADDRESSES.fantom.fUSDT, - ADDRESSES.fantom.USDC, - ADDRESSES.fantom.fUSDT, - ADDRESSES.fantom.DAI, - ADDRESSES.fantom.MIM, - ADDRESSES.fantom.nICE - ], - harmony: [ADDRESSES.harmony.AVAX], - kcc: [ - ADDRESSES.moonriver.USDC, - ADDRESSES.moonriver.ETH, - ADDRESSES.kcc.DAI, - ADDRESSES.kcc.WBTC - ], - moonriver: [ - ADDRESSES.moonriver.USDT, - ADDRESSES.moonriver.USDC, - ADDRESSES.moonriver.ETH - ], - arbitrum: [ADDRESSES.arbitrum.MIM], - shiden: [ - ADDRESSES.telos.ETH, - ADDRESSES.telos.USDC, - ADDRESSES.shiden.JPYC, - ADDRESSES.shiden.ETH, - ADDRESSES.dogechain.BUSD, - ADDRESSES.shiden.BUSD - ], - telos: [ - ADDRESSES.telos.ETH, - ADDRESSES.telos.WBTC, - ADDRESSES.telos.USDC, - ADDRESSES.telos.USDT - ], - syscoin: [ - ADDRESSES.syscoin.USDC, - ADDRESSES.syscoin.ETH, - ADDRESSES.syscoin.USDT - ], - boba: [ADDRESSES.boba.BUSD], - velas: [ - ADDRESSES.moonriver.ETH, - ADDRESSES.moonriver.USDC - ], - dogechain: [ - ADDRESSES.moonriver.USDT, - ADDRESSES.dogechain.BUSD, - ADDRESSES.dogechain.MATIC - ], - kava: [ - ADDRESSES.telos.ETH, - ADDRESSES.moonriver.USDT, - ADDRESSES.telos.USDC, - ADDRESSES.shiden.ETH, - ADDRESSES.syscoin.ETH, - ADDRESSES.moonriver.USDC, - ADDRESSES.dogechain.BUSD - ], - step: [ - ADDRESSES.moonriver.USDC, - ADDRESSES.telos.ETH, - ADDRESSES.telos.USDC, - ADDRESSES.telos.USDT - ], - godwoken_v1: [ - ADDRESSES.moonriver.USDC, - ADDRESSES.shiden.ETH, - ADDRESSES.telos.ETH, - ADDRESSES.moonriver.USDT - ], - milkomeda_a1: [ADDRESSES.telos.ETH], - wemix: [ - ADDRESSES.boba.BUSD, - ADDRESSES.shiden.ETH, - ADDRESSES.moonriver.USDC - ], - eos_evm: [ - ADDRESSES.syscoin.USDT, - ADDRESSES.shiden.ETH, - ADDRESSES.telos.ETH, - ADDRESSES.telos.USDT - ], -} - -module.exports = { - nullAddress, - caseSensitiveChains, - transformTokens, - fixBalancesTokens, - normalizeAddress, - getCoreAssets, - ibcChains, - stripTokenHeader, - getUniqueAddresses, - eulerTokens, -} \ No newline at end of file diff --git a/projects/helper/tomb.js b/projects/helper/tomb.js deleted file mode 100644 index 7473d16b0cd..00000000000 --- a/projects/helper/tomb.js +++ /dev/null @@ -1,93 +0,0 @@ -const { staking, stakingUnknownPricedLP } = require("./staking"); -const { pool2 } = require("./pool2"); -const sdk = require("@defillama/sdk"); -const token0Abi = 'address:token0' -const token1Abi = 'address:token1' -const { default: BigNumber } = require("bignumber.js"); - -function tombTvl(token, share, rewardPool, masonry, pool2LPs, chain = "ethereum", transform = undefined, tokensOnCoingecko = true, lpWithShare = undefined) { - if (transform === undefined) transform = addr => `${chain}:${addr}`; - if (tokensOnCoingecko) { - return { - [chain]: { - tvl: async () => ({}), - staking: staking(masonry, share, chain), - pool2: pool2(rewardPool, pool2LPs, chain, transform) - } - } - } - else if (!tokensOnCoingecko) { - const pool2 = async (timestamp, block, chainBlocks) => { - let balances = {}; - token = token.toLowerCase(); - share = share.toLowerCase(); - block = chainBlocks[chain]; - const pool2Balances = (await sdk.api.abi.multiCall({ - calls: pool2LPs.map(p => ({ - target: p, - params: rewardPool - })), - abi: "erc20:balanceOf", - block, - chain - })).output; - const supplies = (await sdk.api.abi.multiCall({ - calls: pool2LPs.map(p => ({ - target: p - })), - abi: "erc20:totalSupply", - block, - chain - })).output; - const pool2Token0 = (await sdk.api.abi.multiCall({ - calls: pool2LPs.map(p => ({ - target: p - })), - abi: token0Abi, - block, - chain - })).output; - const pool2Token1 = (await sdk.api.abi.multiCall({ - calls: pool2LPs.map(p => ({ - target: p - })), - abi: token1Abi, - block, - chain - })).output; - - for (let i = 0; i < pool2LPs.length; i++) { - let listedToken; - const token0 = pool2Token0[i].output.toLowerCase(); - const token1 = pool2Token1[i].output.toLowerCase(); - if (token0 === token || token0 === share) { - listedToken = token1; - } - else if (token1 === token || token1 === share) { - listedToken = token0; - } - const listedTokenBalance = (await sdk.api.erc20.balanceOf({ - target: listedToken, - owner: pool2LPs[i], - block, - chain - })).output; - const balance = BigNumber(pool2Balances[i].output).times(listedTokenBalance).div(supplies[i].output).times(2).toFixed(0); - sdk.util.sumSingleBalance(balances, transform(listedToken), balance); - } - return balances - } - - return { - [chain]: { - tvl: async () => ({}), - staking: stakingUnknownPricedLP(masonry, share, chain, lpWithShare), - pool2 - } - } - } -} - -module.exports = { - tombTvl -} \ No newline at end of file diff --git a/projects/helper/traderJoeV2.js b/projects/helper/traderJoeV2.js deleted file mode 100644 index a80a48a61ad..00000000000 --- a/projects/helper/traderJoeV2.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require("./unwrapLPs") - -function joeV2Export(config) { - const exports = { - methodology: 'We count the token balances in in different liquidity book contracts', - } - - Object.keys(config).forEach(chain => { - let factory = config[chain] - let blacklistedTokens = [] - if (typeof factory !== 'string' && typeof factory.factory === 'string') { - blacklistedTokens = factory.blacklistedTokens || [] - factory = factory.factory - } - - exports[chain] = { - tvl: async (api) => { - const pools = await api.fetchList({ target: factory, itemAbi: 'getLBPairAtIndex', lengthAbi: 'getNumberOfLBPairs', }) - const tokenA = await api.multiCall({ abi: 'address:getTokenX', calls: pools, }) - const tokenB = await api.multiCall({ abi: 'address:getTokenY', calls: pools, }) - - const toa = [] - tokenA.map((_, i) => { - toa.push([tokenA[i], pools[i]]) - toa.push([tokenB[i], pools[i]]) - }) - return sumTokens2({ api, tokensAndOwners: toa, blacklistedTokens, permitFailure: true, }) - } - } - }) - - return exports -} - - -module.exports = { - joeV2Export, -} diff --git a/projects/helper/treasury.js b/projects/helper/treasury.js deleted file mode 100644 index bec9e35b11c..00000000000 --- a/projects/helper/treasury.js +++ /dev/null @@ -1,163 +0,0 @@ -const ADDRESSES = require('./coreAssets.json') -const { sumTokensExport, nullAddress } = require('./sumTokens') -const { ankrChainMapping } = require('./token') -const { defaultTokens } = require('./cex') -const { getUniqueAddresses } = require('./utils') -const sdk = require('@defillama/sdk') -const axios = require('axios') -const { getEnv } = require('./env') - -const ARB = ADDRESSES.arbitrum.ARB; -const API_URL_COMPLEX = `https://pro-openapi.debank.com/v1/user/all_complex_protocol_list` - -const ACCESSKEY = getEnv('DEBANK_API_KEY') - -const debankToLlamaChain = { - eth: 'ethereum', - op: 'optimism', - arb: 'arbitrum', - avax: 'avax', - bsc: 'bsc', - ftm: 'fantom', - sonic: 'sonic', - base: 'base', - matic: 'polygon', - frax: 'fraxtal', - mnt: 'mantle' -}; - -function getLlamaChain(debankChain) { - return debankToLlamaChain[debankChain] || debankChain; -} - -function treasuryExports(config) { - const { isComplex, complexOwners = [], ...chains } = config; - - const exportObj = {}; - - let fetchPromise = null; - - async function getComplexData() { - if (!fetchPromise) { - fetchPromise = Promise.all( - complexOwners.map(id => - axios.get(API_URL_COMPLEX, { - params: { id, is_all: true }, - headers: { - 'accept': 'application/json', - 'AccessKey': ACCESSKEY, - }, - }).then(r => ({ id, tokens: r.data })) - ) - ); - } - return fetchPromise; - } - - Object.keys(chains).forEach(chain => { - let { ownTokenOwners = [], ownTokens = [], owners = [], tokens = [], blacklistedTokens = [] } = config[chain] - const tvlConfig = { permitFailure: true, ...config[chain] }; - - if (chain === 'solana') { - tvlConfig.solOwners = owners; - } else if (config[chain].fetchCoValentTokens !== false) { - if (ankrChainMapping[chain]) { - tvlConfig.fetchCoValentTokens = true; - if (!tvlConfig.tokenConfig) tvlConfig.tokenConfig = { onlyWhitelisted: false }; - } else if (defaultTokens[chain]) { - tvlConfig.tokens = [tokens, defaultTokens[chain]].flat(); - } - } - - tvlConfig.blacklistedTokens = [...ownTokens, ...blacklistedTokens]; - - if (chain === 'arbitrum') tvlConfig.tokens = [...tokens, ARB]; - if (!Array.isArray(tvlConfig.tokens)) tvlConfig.tokens = []; - - const baseExport = { tvl: sumTokensExport(tvlConfig) }; - - const complexExport = isComplex ? { - [chain]: { - tvl: async (api) => { - if (!complexOwners.length) return api.getBalances(); - const data = await getComplexData(); - if (!data.length) return api.getBalances(); - - const blacklist = new Set(getUniqueAddresses([...ownTokens, ...blacklistedTokens], false)); - - for (const entry of data) { - for (const token of entry.tokens || []) { - if (getLlamaChain(token.chain) !== chain) continue; - for (const { asset_token_list = [], pool } of token.portfolio_item_list || []) { - for (const { id: rawId, decimals, amount } of asset_token_list) { - if (!rawId) continue; - const addr = rawId === 'eth' ? nullAddress : rawId.toLowerCase(); - if (blacklist.has(addr)) continue; - api.add(addr, amount * 10 ** decimals); - if (pool && pool.id) api.removeTokenBalance(pool.id.toLowerCase()); - } - } - } - } - return api.getBalances(); - } - } - } : null; - - if (isComplex) { - exportObj[chain] = { - tvl: sdk.util.sumChainTvls([baseExport.tvl, complexExport[chain].tvl]) - }; - } else { - exportObj[chain] = baseExport; - } - - if (ownTokens.length > 0) { - const { solOwners, ...other } = config[chain]; - const opts = { - ...other, - owners: [...owners, ...ownTokenOwners], - tokens: ownTokens, - chain, - uniV3WhitelistedTokens: ownTokens, - }; - exportObj[chain].ownTokens = sumTokensExport(opts); - } - }); - - return exportObj; -} - -function ohmStaking(exports) { - const dummyTvl = () => ({}) - const newExports = {} - Object.entries(exports).forEach(([chain, value]) => { - if (typeof value === 'object' && typeof value.tvl === 'function') { - newExports[chain] = { ...value, tvl: dummyTvl } - } else { - newExports[chain] = value - } - }) - return newExports -} - -function ohmTreasury(exports) { - const dummyTvl = () => ({}) - const newExports = {} - Object.entries(exports).forEach(([chain, value]) => { - if (typeof value === 'object' && typeof value.staking === 'function') { - newExports[chain] = { ...value, } - delete newExports[chain].staking - } else { - newExports[chain] = value - } - }) - return newExports -} - -module.exports = { - nullAddress, - treasuryExports, - ohmTreasury, - ohmStaking, -} diff --git a/projects/helper/uniswapV3.js b/projects/helper/uniswapV3.js deleted file mode 100644 index 127172522ff..00000000000 --- a/projects/helper/uniswapV3.js +++ /dev/null @@ -1,85 +0,0 @@ -const { sumTokens2 } = require('./unwrapLPs') -const { getLogs } = require('./cache/getLogs') -const { cachedGraphQuery } = require('./cache') - -const uniswapConfig = { - eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool)', - topics: ['0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118'], -} - -const algebraConfig = { - eventAbi: 'event Pool (address indexed token0, address indexed token1, address pool)', - topics: ['0x91ccaa7a278130b65168c3a0c8d3bcae84cf5e43704342bd3ec0b59e59c036db'], -} - -function uniV3Export(config) { - const exports = {} - - Object.keys(config).forEach(chain => { - let { factory: target, fromBlock, topics, eventAbi, isAlgebra, blacklistedTokens = [], permitFailure, sumChunkSize, filterFn, } = config[chain] - if (!topics) topics = isAlgebra ? algebraConfig.topics : uniswapConfig.topics - if (!eventAbi) eventAbi = isAlgebra ? algebraConfig.eventAbi : uniswapConfig.eventAbi - - exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target, - topics, - fromBlock, - eventAbi, - onlyArgs: true, - }) - - if (filterFn) - blacklistedTokens.push(... await filterFn(api, logs)) - - - return sumTokens2({ api, ownerTokens: logs.map(i => [[i.token0, i.token1], i.pool]), blacklistedTokens, permitFailure: permitFailure || logs.length > 2000, sumChunkSize, }) - } - } - }) - - - return exports -} - -function uniV3GraphExport({ blacklistedTokens = [], graphURL, name, minTVLUSD = 0, poolName = 'pools'}) { - return async (api) => { - if (!name) throw new Error('name is required for uniV3GraphExport') - const size = 1000 - // let lastId = '' - // let pools - - const minTvlFilter = minTVLUSD ? `totalValueLockedUSD_gt: ${minTVLUSD}` : '' - - const graphQueryPagedWithBlock = ` - query poolQuery($lastId: String, $block: Int) { - pools(block: { number: $block } first:${size} where: {id_gt: $lastId totalValueLockedUSD_gt: ${minTVLUSD}}) { - id - token0 { id } - token1 { id } - } - } - ` - const graphQueryPagedWithoutBlock = ` - query poolQuery($lastId: String) { - ${poolName}(first:${size} where: {id_gt: $lastId ${minTvlFilter}}) { - id - token0 { id } - token1 { id } - } - } - ` - // const graphQueryPaged = api.block ? graphQueryPagedWithBlock : graphQueryPagedWithoutBlock - const pools = await cachedGraphQuery(name, graphURL, graphQueryPagedWithoutBlock, { api, useBlock: false, fetchById: true, }) - const ownerTokens = pools.map(i => [[i.token0.id, i.token1.id], i.id]) - await sumTokens2({ api, ownerTokens, blacklistedTokens }) - } -} - - -module.exports = { - uniV3Export, - uniV3GraphExport, -} diff --git a/projects/helper/unknownTokens.js b/projects/helper/unknownTokens.js deleted file mode 100644 index 3778c3ee142..00000000000 --- a/projects/helper/unknownTokens.js +++ /dev/null @@ -1,347 +0,0 @@ - -const sdk = require('@defillama/sdk'); -const masterchefAbi = require('./abis/masterchef.json') -const { getChainTransform, getFixBalances, transformBalances, } = require('./portedTokens') -const { getCoreAssets } = require('./tokenMapping') -const { sumTokens, sumTokens2, nullAddress, } = require('./unwrapLPs') -const { vestingHelper } = require('./cache/vestingHelper') -const { getTokenPrices, sumUnknownTokens, getLPData, } = require('./cache/sumUnknownTokens') -const { getUniTVL } = require('./cache/uniswap') -const { getUniqueAddresses, } = require('./utils') -const stakingHelper = require('./staking') - -function uniTvlExports(config, commonOptions = {}) { - const exportsObj = { - misrepresentedTokens: !commonOptions.useDefaultCoreAssets, - } - Object.keys(config).forEach(chain => { - exportsObj[chain] = uniTvlExport(chain, config[chain],commonOptions )[chain] - }) - if (commonOptions.hallmarks) exportsObj.hallmarks = commonOptions.hallmarks - if (commonOptions.deadFrom) exportsObj.deadFrom = commonOptions.deadFrom - if (typeof commonOptions.staking === 'object') { - Object.entries(commonOptions.staking).forEach(([chain, stakingArgs]) => { - if (!exportsObj[chain]) exportsObj[chain] = {} - exportsObj[chain].staking = stakingHelper.staking(...stakingArgs) - }) - } - return exportsObj -} - -function unknownTombs({ token = [], shares = [], rewardPool = [], masonry = [], lps, chain = "ethereum", coreAssets = [], - useDefaultCoreAssets = false, }) { - let getPrices - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - - if (!Array.isArray(shares) && typeof shares === 'string') - shares = [shares] - if (!Array.isArray(masonry) && typeof masonry === 'string') - masonry = [masonry] - if (!Array.isArray(rewardPool) && typeof rewardPool === 'string') - rewardPool = [rewardPool] - if (!Array.isArray(token) && typeof token === 'string') - token = [token] - - const pool2 = async (timestamp, _block, chainBlocks) => { - let balances = {}; - const block = chainBlocks[chain] - if (!getPrices) - getPrices = getTokenPrices({ block, chain, lps, coreAssets, allLps: true }) - - const { updateBalances } = await getPrices - - const tao = [] - lps.forEach(token => rewardPool.forEach(owner => tao.push([token, owner]))) - - await sumTokens(balances, tao, block, chain, undefined, { resolveLP: true, skipFixBalances: true }) - const fixBalances = await getFixBalances(chain) - await updateBalances(balances) - fixBalances(balances) - return balances - } - - const staking = async (timestamp, _block, chainBlocks) => { - let balances = {}; - const block = chainBlocks[chain] - if (!getPrices) - getPrices = getTokenPrices({ block, chain, lps, coreAssets, allLps: true }) - - const { updateBalances } = await getPrices - - const tao = [] - shares.forEach(token => masonry.forEach(owner => tao.push([token, owner]))) - // token.forEach(t => masonry.forEach(owner => tao.push([t, owner]))) - - await sumTokens(balances, tao, block, chain, undefined, { skipFixBalances: true }) - const fixBalances = await getFixBalances(chain) - await updateBalances(balances) - fixBalances(balances) - return balances - } - - return { - misrepresentedTokens: true, - [chain]: { - tvl: async () => ({}), - staking, - pool2 - } - } -} - -function pool2({ stakingContract, lpToken, chain, transformAddress, coreAssets = [], useDefaultCoreAssets = false, }) { - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - - return async (api) => { - const chain = api.chain - const block = api.block - if (!transformAddress) - transformAddress = await getChainTransform(chain) - - const balances = await sumTokens({}, [[lpToken, stakingContract]], block, chain, transformAddress, { resolveLP: true }) - const { updateBalances } = await getTokenPrices({ block, chain, transformAddress, coreAssets, lps: [lpToken], allLps: true, }) - - await updateBalances(balances, { resolveLP: false, }) - const fixBalances = await getFixBalances(chain) - fixBalances(balances) - return balances - } -} - -function sumTokensExport({ tokensAndOwners = [], - coreAssets = [], owner, tokens, restrictTokenRatio, blacklist = [], skipConversion = false, onlyLPs, minLPRatio, - log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, abis, -}) { - return (api) => sumUnknownTokens({ api, tokensAndOwners, onlyLPs, minLPRatio, coreAssets, owner, tokens, restrictTokenRatio, blacklist, skipConversion, log_coreAssetPrices, log_minTokenValue, owners, lps, useDefaultCoreAssets, abis, }) -} - -function staking({ tokensAndOwners = [], - coreAssets = [], owner, tokens, restrictTokenRatio, blacklist = [], skipConversion = false, onlyLPs, minLPRatio, - log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, -}) { - - return async (api) => { - const { chain, block } = api - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - - const balances = await sumTokens2({ api, owner, tokensAndOwners, owners, tokens, blacklistedTokens: blacklist, }) - const { updateBalances, pairBalances, prices, } = await getTokenPrices({ coreAssets, lps: [...tokensAndOwners.map(t => t[0]), ...lps,], chain, block, restrictTokenRatio, blacklist, log_coreAssetPrices, log_minTokenValue, minLPRatio }) - // sdk.log(prices, pairBalances, balances) - await updateBalances(balances, { skipConversion, onlyLPs }) - const fixBalances = await getFixBalances(chain) - fixBalances(balances) - return balances - } -} - -function masterchefExports({ chain, masterchef, coreAssets = [], nativeTokens = [], lps = [], nativeToken, poolInfoABI = masterchefAbi.poolInfo, poolLengthAbi = masterchefAbi.poolLength, getToken = output => output.lpToken, blacklistedTokens = [], useDefaultCoreAssets = true, }) { - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - let allTvl = {} - if (nativeToken) nativeTokens.push(nativeToken) - nativeTokens = getUniqueAddresses(nativeTokens) - - async function getAllTVL(block) { - if (!allTvl[block]) allTvl[block] = getTVL() - return allTvl[block] - - async function getTVL() { - const transform = await getChainTransform(chain) - const fixBalances = await getFixBalances(chain) - const balances = { - tvl: {}, - staking: {}, - pool2: {}, - } - const { output: length } = await sdk.api.abi.call({ - target: masterchef, - abi: poolLengthAbi, - chain, block, - }) - - const calls = [] - for (let i = 0; i < length; i++) calls.push({ params: [i] }) - const { output: data } = await sdk.api.abi.multiCall({ - target: masterchef, - abi: poolInfoABI, - calls, - chain, block, - }) - - const tokens = data.map(({ output }) => getToken(output).toLowerCase()) - const tokenLPs = [...tokens].filter(i => !nativeTokens.includes(i)) - const tempBalances = await sumTokens2({ chain, block, owner: masterchef, tokens, transformAddress: a => a, blacklistedTokens, skipFixBalances: true, }) - nativeTokens.forEach(nativeToken => { - if (tempBalances[nativeToken]) sdk.util.sumSingleBalance(balances.staking, transform(nativeToken), tempBalances[nativeToken]) - delete tempBalances[nativeToken] - }) - - const { updateBalances, pairs, } = await getTokenPrices({ lps: [...tokenLPs, ...lps], coreAssets, block, chain, minLPRatio: 0.001, }) - Object.entries(tempBalances).forEach(([token, balance]) => { - if (pairs[token]) { - const { token0Address, token1Address } = pairs[token] - if (nativeTokens.includes(token0Address) || nativeTokens.includes(token1Address)) { - sdk.util.sumSingleBalance(balances.pool2, transform(token), balance) - return; - } - } - sdk.util.sumSingleBalance(balances.tvl, transform(token), balance) - }) - - for (const bal of Object.values(balances)) { - await updateBalances(bal) - fixBalances(bal) - } - - return balances - } - } - - async function tvl(_, _b, { [chain]: block }) { - return (await getAllTVL(block)).tvl - } - - async function pool2(_, _b, { [chain]: block }) { - return (await getAllTVL(block)).pool2 - } - - async function staking(_, _b, { [chain]: block }) { - return (await getAllTVL(block)).staking - } - - return { - misrepresentedTokens: true, - [chain]: { - tvl, pool2, staking - } - } -} - -const yieldApis = { - balance: "uint256:balance", - token: "address:token", -} - -async function yieldHelper({ chain = 'ethereum', block, coreAssets = [], blacklist = [], whitelist = [], vaults = [], transformAddress, - useDefaultCoreAssets = false, balanceAPI = yieldApis.balance, tokenAPI = yieldApis.token, api, - restrictTokenRatio, // while computing tvl, an unknown token value can max be x times the pool value, default 100 times pool value -}) { - if (api) { - chain = api.chain - block = api.block - } - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets = getCoreAssets(chain) - - if (!transformAddress) - transformAddress = await getChainTransform(chain) - - const calls = vaults.map(i => ({ target: i })) - const { output: balanceRes } = await sdk.api.abi.multiCall({ - abi: balanceAPI, - calls, - chain, block, - }) - const { output: targets } = await sdk.api.abi.multiCall({ - abi: tokenAPI, - calls, - chain, block, - }) - const tokens = targets.map(i => i.output) - const { updateBalances } = await getTokenPrices({ chain, block, lps: tokens, coreAssets, blacklist, whitelist, transformAddress, restrictTokenRatio, useDefaultCoreAssets, }) - let balances = {} - balanceRes.forEach((data, i) => sdk.util.sumSingleBalance(balances, transformAddress(tokens[i]), data.output)) - await updateBalances(balances) - return transformBalances(chain, balances) -} - -function uniTvlExport(chain, factory, options = {}) { - const exportsObj= { - misrepresentedTokens: !options.useDefaultCoreAssets, - [chain]: { tvl: getUniTVL({ chain, factory, useDefaultCoreAssets: true, ...options }) } - } - return exportsObj -} - -// Default ABI for CLM vaults that expose wants() => (token0, token1) and balances() => (amount0, amount1) -const pairApis = { - balances: 'function balances() view returns (uint256 amount0, uint256 amount1)', - wants: 'function wants() view returns (address token0, address token1)', -} - -// Helper for CLM-style vaults (wants() + balances()) returning two tokens and two balances -async function yieldHelperPair({ - chain = 'ethereum', block, coreAssets = [], blacklist = [], whitelist = [], vaults = [], transformAddress, - useDefaultCoreAssets = false, - balanceAPI = pairApis.balances, - tokenAPI = pairApis.wants, - restrictTokenRatio, -}) { - - if (!balanceAPI || !tokenAPI) - throw new Error('yieldHelperPair requires both balanceAPI and tokenAPI') - - if (!coreAssets.length && useDefaultCoreAssets) - coreAssets.push(...getCoreAssets(chain)) - - if (!transformAddress) - transformAddress = await getChainTransform(chain) - - const calls = vaults.map(i => ({ target: i })) - - const { output: balanceRes } = await sdk.api.abi.multiCall({ abi: balanceAPI, calls, chain, block }) - const { output: tokenRes } = await sdk.api.abi.multiCall({ abi: tokenAPI, calls, chain, block }) - - const allTokens = [] - const allBalances = [] - - balanceRes.forEach((balObj, i) => { - const tokensObj = tokenRes[i]?.output || {} - - const token0 = tokensObj.token0 ?? tokensObj[0] - const token1 = tokensObj.token1 ?? tokensObj[1] - - const amount0 = balObj.output?.amount0 ?? balObj.output?.[0] ?? 0 - const amount1 = balObj.output?.amount1 ?? balObj.output?.[1] ?? 0 - - if (token0) { - allTokens.push(token0) - allBalances.push(amount0) - } - if (token1) { - allTokens.push(token1) - allBalances.push(amount1) - } - }) - - const { updateBalances } = await getTokenPrices({ chain, block, lps: allTokens, coreAssets, blacklist, whitelist, transformAddress, restrictTokenRatio, useDefaultCoreAssets, }) - - const balances = {} - allTokens.forEach((t, idx) => sdk.util.sumSingleBalance(balances, transformAddress(t), allBalances[idx])) - - await updateBalances(balances) - return transformBalances(chain, balances) -} - -// -------------------------------------------------------------------------- - -module.exports = { - nullAddress, - getTokenPrices, - getUniTVL, - unknownTombs, - pool2, - getLPData, - masterchefExports, - vestingHelper, - sumUnknownTokens, - staking, - sumTokensExport, - yieldHelper, - uniTvlExport, - uniTvlExports, - yieldHelperPair, -}; \ No newline at end of file diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js deleted file mode 100644 index 3b8e2429616..00000000000 --- a/projects/helper/unwrapLPs.js +++ /dev/null @@ -1,1214 +0,0 @@ -const ADDRESSES = require('./coreAssets.json') -const sdk = require("@defillama/sdk"); -const ethers = require("ethers"); -const BigNumber = require("bignumber.js"); -const symbol = 'string:symbol' -const { bPool, getCurrentTokens, } = require('./abis/balancer.json') -const { getChainTransform, getFixBalances } = require('./portedTokens') -const { getUniqueAddresses, normalizeAddress } = require('./tokenMapping') -const { isLP, log, sliceIntoChunks, isICHIVaultToken, createIncrementArray, sleep } = require('./utils') -const { sumArtBlocks, whitelistedNFTs, } = require('./nft') -const wildCreditABI = require('../wildcredit/abi.json'); -const slipstreamNftABI = require('../arcadia-finance-v2/slipstreamNftABI.json'); -const { covalentGetTokens, } = require("./token"); -const SOLIDLY_VE_NFT_ABI = require('./abis/solidlyVeNft.json'); -const { tickToPrice } = require('./utils/tick'); -const { queryAllium } = require('./allium'); -const { cachedGraphQuery } = require('./cache'); - -const lpReservesAbi = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' -const lpSuppliesAbi = "uint256:totalSupply" -const token0Abi = "address:token0" -const token1Abi = "address:token1" -const poolPositionAbi = 'function getPoolAndPositionInfo(uint256 tokenId) view returns ((address token0, address token1, uint24 fee, int24 tickSpacing, address hook), uint256 info)' -const getSlot0Abi = 'function getSlot0(bytes32 poolId) view returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee)' -const getPositionLiquidityAbi = 'function getPositionLiquidity(uint256 tokenId) view returns (uint128 liquidity)' - -/* lpPositions:{ - balance, - token -}[] -*/ -async function unwrapUniswapLPs(balances, lpPositions, block, chain = 'ethereum', transformAddress = null, excludeTokensRaw = [], uni_type = 'standard',) { - if (!transformAddress) - transformAddress = await getChainTransform(chain) - const api = new sdk.ChainApi({ chain, block }) - lpPositions = lpPositions.filter(i => +i.balance > 0) - const excludeTokens = excludeTokensRaw.map(addr => addr.toLowerCase()) - const lpTokenCalls = lpPositions.map(i => i.token) - const [ - lpReserves, lpSupplies, tokens0, tokens1, - ] = await Promise.all([ - uni_type === 'standard' ? api.multiCall({ abi: lpReservesAbi, calls: lpTokenCalls, }) : null, - api.multiCall({ abi: lpSuppliesAbi, calls: lpTokenCalls, }), - api.multiCall({ abi: token0Abi, calls: lpTokenCalls, }), - api.multiCall({ abi: token1Abi, calls: lpTokenCalls, }), - ]) - let gelatoPools, gToken0Bals, gToken1Bals - if (uni_type === 'gelato') { - gelatoPools = await api.multiCall({ abi: gelatoPoolsAbi, calls: lpTokenCalls, }) - gToken1Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gelatoPools.map((v, i) => ({ target: tokens0[i], params: v })), }) - gToken0Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gelatoPools.map((v, i) => ({ target: tokens1[i], params: v })), }) - } - lpPositions.map((lpPosition, i) => { - const token0 = tokens0[i].toLowerCase() - const token1 = tokens1[i].toLowerCase() - const supply = lpSupplies[i] - - if (supply === "0") { - return - } - - let _reserve0, _reserve1 - if (uni_type === 'standard') { - _reserve0 = lpReserves[i]._reserve0 - _reserve1 = lpReserves[i]._reserve1 - } else if (uni_type === 'gelato') { - _reserve0 = gToken0Bals[i] - _reserve1 = gToken1Bals[i] - } - - const ratio = lpPosition.balance / supply - if (!excludeTokens.includes(token0)) { - sdk.util.sumSingleBalance(balances, transformAddress(token0), ratio * _reserve0) - } - if (!excludeTokens.includes(token1)) { - sdk.util.sumSingleBalance(balances, transformAddress(token1), ratio * _reserve1) - } - }) -} - -const gelatoPoolsAbi = 'address:pool' - -const PANCAKE_NFT_ADDRESS = '0x46A15B0b27311cedF172AB29E4f4766fbE7F4364' -let uniV4PositionCallCount = 0 // we want to limit these calls as they are expensive -async function unwrapUniswapV4NFTs({ balances = {}, block, chain = 'ethereum', owner, nftAddress, stateViewer, owners, blacklistedTokens = [], whitelistedTokens = [], uniV4ExtraConfig = {} }) { - - nftAddress = nftAddress ?? uniV4ExtraConfig.nftAddress - stateViewer = stateViewer ?? uniV4ExtraConfig.stateViewer - if (!whitelistedTokens.length) whitelistedTokens = uniV4ExtraConfig.whitelistedTokens ?? [] - if (!blacklistedTokens.length) blacklistedTokens = uniV4ExtraConfig.blacklistedTokens ?? [] - - const commonConfig = { balances, owner, owners, chain, block, blacklistedTokens, whitelistedTokens, uniV4ExtraConfig, } - - if (!stateViewer) - switch (chain) { - // https://docs.uniswap.org/contracts/v4/deployments - case 'ethereum': stateViewer = '0x7ffe42c4a5deea5b0fec41c94c136cf115597227'; break; - case 'arbitrum': stateViewer = '0x76Fd297e2D437cd7f76d50F01AfE6160f86e9990'; break; - case 'optimism': stateViewer = '0xc18a3169788F4F75A170290584ECA6395C75Ecdb'; break; - case 'bsc': stateViewer = '0xd13Dd3D6E93f276FAfc9Db9E6BB47C1180aeE0c4'; break; - case 'unichain': stateViewer = '0x86e8631A016F9068C3f085fAF484Ee3F5fDee8f2'; break; - case 'base': stateViewer = '0xA3c0c9b65baD0b08107Aa264b0f3dB444b867A71'; break; - default: throw new Error('missing default uniswap state viewer address chain: ' + chain) - } - - if (!nftAddress) - switch (chain) { - case 'ethereum': nftAddress = '0xbd216513d74c8cf14cf4747e6aaa6420ff64ee9e'; break; - case 'arbitrum': nftAddress = '0xd88F38F930b7952f2DB2432Cb002E7abbF3dD869'; break; - case 'optimism': nftAddress = '0x3C3Ea4B57a46241e54610e5f022E5c45859A1017'; break; - case 'bsc': nftAddress = '0x7A4a5c919aE2541AeD11041A1AEeE68f1287f95b'; break; - case 'unichain': nftAddress = '0x4529A01c7A0410167c5740C487A8DE60232617bf'; break; - case 'base': nftAddress = '0x7C5f5A4bBd8fD63184577525326123B519429bDc'; break; - default: throw new Error('missing default uniswap nft address chain: ' + chain) - } - - if (owners?.length > 1 || (owners?.length === 1 && owners[0].toLowerCase() !== owner.toLowerCase())) throw new Error('owners not supported for uniswap v4, use owner param instead') - if (!commonConfig.uniV4ExtraConfig.positionIds?.length) { - if (!owner) - throw new Error('owner or uniV4ExtraConfig.positionIds param is required for uniswap v4') - - commonConfig.uniV4ExtraConfig.positionIds = await getPositionIds() - } - - await unwrapUniswapV4NFT({ ...commonConfig, nftAddress, stateViewer: stateViewer, }) - - return balances - - async function getPositionIds() { - uniV4PositionCallCount++ - - if (uniV4PositionCallCount > 51) throw new Error('too many uniswap v4 position calls, find some other solution or remove caching, or batch owners') - - const defaultGraphEndpoints = { - ethereum: 'AdA6Ax3jtct69NnXfxNjWtPTe9gMtSEZx2tTQcT4VHu', - base: '6UjxSFHTUa98Y4Uh4Tb6suPVyYxgPHpPEPfmFNihzTHp', - unichain: 'Bd8UnJU8jCRJKVjcW16GHM3FNdfwTojmWb3QwSAmv8Uc', - bsc: '7JTFXJdejseGj6cnTo3V3SNu2AkWyXpGieZm5NL2eYAA', - arbitrum: '655x11nEGRudi5Nh4attV1uMt2YnyFRMaSKRM5QndXLK', - polygon: '2UKncUpdgZeJVyh6Dv8ai2fTL2MQnig8ySh7YkYcHCsL', - optimism: '3Tn7Y1NJAr4ySKm7KFu1dwvH2WM3mHJnXzXAxQsdBDvW', - } - - let endpoint = commonConfig.uniV4ExtraConfig.subgraph ?? defaultGraphEndpoints[chain] - if (!endpoint) throw new Error('missing uniswap v4 subgraph endpoint for chain: ' + chain) - - const query = `query getIds($lastId: String!) { - positions(first:1000 where:{ - id_gt: $lastId - owner_in: ["${owner.toLowerCase()}"] - }) { id }}` - const data = await cachedGraphQuery(`uni-v4-positions/${chain}-${owner}`, endpoint, query, { fetchById: true, }) - const positionIds = data.map(i => i.id) - const verifiedPositionIds = [] - - - // in case the graph is stale or down, we use cached data, to ensure that owners still hold the v4 nfts, verify it on chain - const positionOwners = await sdk.api2.abi.multiCall({ chain, block, abi: 'function ownerOf(uint256) view returns (address)', calls: positionIds, target: nftAddress }) - positionOwners.forEach((pOwner, i) => { - if (pOwner.toLowerCase() === owner.toLowerCase()) verifiedPositionIds.push(positionIds[i]) - }) - - return verifiedPositionIds - } -} - -async function unwrapUniswapV4NFT({ balances, nftAddress, stateViewer, block, chain = 'ethereum', blacklistedTokens = [], whitelistedTokens = [], uniV4ExtraConfig = {}, }) { - - blacklistedTokens = getUniqueAddresses(blacklistedTokens, chain) - whitelistedTokens = getUniqueAddresses(whitelistedTokens, chain) - - let positionIds = uniV4ExtraConfig.positionIds // Univ4's pos mgr does not have tokenOfOwnerByIndex - - const positionsEncoded = (await sdk.api.abi.multiCall({ - block, chain, abi: poolPositionAbi, target: nftAddress, - calls: positionIds.map((position) => ({ params: [position] })), - })).output.map(positionsCall => positionsCall.output) - - const positionsLiquidity = (await sdk.api.abi.multiCall({ - block, chain, abi: getPositionLiquidityAbi, target: nftAddress, - calls: positionIds.map((position) => ({ params: [position] })), - })).output.map(positionsCall => positionsCall.output) - - const positions = positionsEncoded.map((positionInfo, i) => { - const positionInfoBN = new BigNumber(positionInfo[1]); - - //The postionInfo uint256 contains info about poolId, ticks and subscriber - const { tickLower, tickUpper } = extractTicks(positionInfoBN); - return { - token0: positionInfo[0].token0, - token1: positionInfo[0].token1, - fee: positionInfo[0].fee, - tickSpacing: positionInfo[0].tickSpacing, - hook: positionInfo[0].hook, - tickLower: tickLower, - tickUpper: tickUpper, - liquidity: positionsLiquidity[i], - }; - }); - - const lpInfo = {} - positions.forEach(position => lpInfo[getKey(position)] = position) - const lpInfoArray = Object.values(lpInfo) - - const poolInfos = lpInfoArray.map(position => { - const poolId = getPoolId(position); - return poolId; // Array of poolIds matching lpInfoArray indices - }); - - const slot0 = await sdk.api.abi.multiCall({ - block, - chain, - abi: getSlot0Abi, - target: stateViewer, - calls: poolInfos.map(poolId => ({ params: [poolId] })), - }); - - slot0.output.forEach((slot, i) => { - lpInfoArray[i].tick = slot.output.tick; - }); - - positions.map(addV4PositionBalances) - return balances - - function getKey(position) { - let { token0, token1, fee, tickSpacing, hook } = position - token0 = token0.toLowerCase() - token1 = token1.toLowerCase() - hook = hook.toLowerCase() - return `${token0}-${token1}-${fee}-${tickSpacing}-${hook}` - } - - function getPoolId(poolKey) { - const { token0, token1, fee, tickSpacing, hook } = poolKey; - - const abiCoder = new ethers.AbiCoder(); - - const encodedData = abiCoder.encode( - ["address", "address", "uint24", "int24", "address"], - [token0, token1, fee, tickSpacing, hook] - ); - - const poolId = ethers.keccak256(encodedData); - return poolId; - } - - // Convert an unsigned 24-bit value to a signed int24 - function toInt24(unsignedValue) { - // safe for 24-bit values - const value = unsignedValue.toNumber(); - // Check if signed (negative) - if (value & 0x800000) { - // If negative, subtract 2^24 (16777216) to get the signed value - return value - (1 << 24); - } else { - // If positive, return as is - return value; - } - } - - - function extractTicks(poolInfo) { - // shift right by 32 bits and mask with 0xFFFFFF (24 bits) - const tickLowerUnsigned = poolInfo.dividedToIntegerBy(new BigNumber(2).pow(8)).mod(new BigNumber(2).pow(24)); - //shift right by 8 bits and mask with 0xFFFFFF (24 bits) - const tickUpperUnsigned = poolInfo.dividedToIntegerBy(new BigNumber(2).pow(32)).mod(new BigNumber(2).pow(24)); - const tickUpper = toInt24(tickUpperUnsigned); - const tickLower = toInt24(tickLowerUnsigned); - return { tickUpper, tickLower }; - } - - - function addV4PositionBalances(position) { - const token0 = position.token0 - const token1 = position.token1 - const liquidity = position.liquidity - const bottomTick = +position.tickLower - const topTick = +position.tickUpper - const tick = +lpInfo[getKey(position)].tick - const sa = tickToPrice(bottomTick / 2) - const sb = tickToPrice(topTick / 2) - - let amount0 = 0 - let amount1 = 0 - - if (tick < bottomTick) { - amount0 = liquidity * (sb - sa) / (sa * sb) - } else if (tick < topTick) { - const price = tickToPrice(tick) - const sp = price ** 0.5 - - amount0 = liquidity * (sb - sp) / (sp * sb) - amount1 = liquidity * (sp - sa) - } else { - amount1 = liquidity * (sb - sa) - } - - addToken({ balances, token: token0, amount: amount0, chain, blacklistedTokens, whitelistedTokens }) - addToken({ balances, token: token1, amount: amount1, chain, blacklistedTokens, whitelistedTokens }) - } -} - -async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, chain = 'ethereum', owner, nftAddress, owners, blacklistedTokens = [], whitelistedTokens = [], uniV3ExtraConfig = {} }) { - nftAddress = nftAddress ?? uniV3ExtraConfig.nftAddress - const commonConfig = { balances, owner, owners, chain, block, blacklistedTokens, whitelistedTokens, uniV3ExtraConfig, } - // https://docs.uniswap.org/contracts/v3/reference/deployments - if (!nftsAndOwners.length) { - if (!nftAddress) - switch (chain) { - case 'ethereum': - case 'polygon': - case 'optimism': - case 'arbitrum': nftAddress = '0xC36442b4a4522E871399CD717aBDD847Ab11FE88'; break; - case 'bsc': nftAddress = [PANCAKE_NFT_ADDRESS, '0x7b8a01b39d58278b5de7e48c8449c9f4f5170613']; break; - case 'evmos': nftAddress = '0x5fe5daaa011673289847da4f76d63246ddb2965d'; break; - case 'celo': nftAddress = '0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A'; break; - case 'base': nftAddress = '0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1'; break; - case 'blast': nftAddress = '0x434575eaea081b735c985fa9bf63cd7b87e227f9'; break; - case 'sonic': nftAddress = '0x743e03cceb4af2efa3cc76838f6e8b50b63f184c'; break; - case 'flare': nftAddress = '0xD9770b1C7A6ccd33C75b5bcB1c0078f46bE46657'; break; - default: throw new Error('missing default uniswap nft address chain: ' + chain) - } - - if (Array.isArray(nftAddress)) { - await Promise.all(nftAddress.map((addr) => unwrapUniswapV3NFT({ ...commonConfig, nftAddress: addr, }))) - } else - await unwrapUniswapV3NFT({ ...commonConfig, nftAddress, }) - - } else - await Promise.all(nftsAndOwners.map(([nftAddress, owner]) => unwrapUniswapV3NFT({ ...commonConfig, owner, nftAddress, }))) - return balances -} - -const factories = {} - -const getFactoryKey = (chain, nftAddress) => `${chain}:${nftAddress}`.toLowerCase() - -async function unwrapUniswapV3NFT({ balances, owner, owners, nftAddress, block, chain = 'ethereum', blacklistedTokens = [], whitelistedTokens = [], uniV3ExtraConfig = {}, }) { - - blacklistedTokens = getUniqueAddresses(blacklistedTokens, chain) - whitelistedTokens = getUniqueAddresses(whitelistedTokens, chain) - let nftIdFetcher = uniV3ExtraConfig.nftIdFetcher ?? nftAddress - - const factoryKey = getFactoryKey(chain, nftAddress) - if (!factories[factoryKey]) factories[factoryKey] = sdk.api.abi.call({ target: nftAddress, abi: wildCreditABI.factory, block, chain }) - let factory = (await factories[factoryKey]).output - if (factory.toLowerCase() === '0xa08ae3d3f4da51c22d3c041e468bdf4c61405aab') // thruster finance has a bug where they set the pool deployer instead of the factory - factory = '0x71b08f13B3c3aF35aAdEb3949AFEb1ded1016127' - - let positionIds = uniV3ExtraConfig.positionIds - if (!positionIds) { - if (!owners?.length && owner) owners = [owner] - owners = getUniqueAddresses(owners, chain) - const { output: lengths } = await sdk.api.abi.multiCall({ - block, chain, abi: wildCreditABI.balanceOf, - calls: owners.map((params) => ({ target: nftIdFetcher, params, })), - }) - const positionIDCalls = [] - for (let i = 0; i < owners.length; i++) { - const length = lengths[i].output - positionIDCalls.push(...createIncrementArray(length).map(j => ({ params: [owners[i], j] }))) - } - - positionIds = (await sdk.api.abi.multiCall({ - block, chain, abi: wildCreditABI.tokenOfOwnerByIndex, target: nftIdFetcher, - calls: positionIDCalls, - })).output.map(positionIdCall => positionIdCall.output) - } - - const positions = (await sdk.api.abi.multiCall({ - block, chain, abi: wildCreditABI.positions, target: nftAddress, - calls: positionIds.map((position) => ({ params: [position] })), - })).output.map(positionsCall => positionsCall.output) - const lpInfo = {} - positions.forEach(position => lpInfo[getKey(position)] = position) - const lpInfoArray = Object.values(lpInfo) - - const poolInfos = (await sdk.api.abi.multiCall({ - block, chain, abi: wildCreditABI.getPool, target: factory, - calls: lpInfoArray.map((info) => ({ params: [info.token0, info.token1, info.fee] })), - })).output.map(positionsCall => positionsCall.output) - - const slot0 = await sdk.api.abi.multiCall({ block, chain, abi: wildCreditABI.slot0, calls: poolInfos.map(i => ({ target: i })) }) - - slot0.output.forEach((slot, i) => lpInfoArray[i].tick = slot.output.tick) - - positions.map(addV3PositionBalances) - return balances - - function getKey(position) { - let { token0, token1, fee } = position - token0 = token0.toLowerCase() - token1 = token1.toLowerCase() - return `${token0}-${token1}-${fee}` - } - - function addV3PositionBalances(position) { - const token0 = position.token0 - const token1 = position.token1 - const liquidity = position.liquidity - const bottomTick = +position.tickLower - const topTick = +position.tickUpper - const tick = +lpInfo[getKey(position)].tick - const sa = tickToPrice(bottomTick / 2) - const sb = tickToPrice(topTick / 2) - - let amount0 = 0 - let amount1 = 0 - - if (tick < bottomTick) { - amount0 = liquidity * (sb - sa) / (sa * sb) - } else if (tick < topTick) { - const price = tickToPrice(tick) - const sp = price ** 0.5 - - amount0 = liquidity * (sb - sp) / (sp * sb) - amount1 = liquidity * (sp - sa) - } else { - amount1 = liquidity * (sb - sa) - } - - addToken({ balances, token: token0, amount: amount0, chain, blacklistedTokens, whitelistedTokens }) - addToken({ balances, token: token1, amount: amount1, chain, blacklistedTokens, whitelistedTokens }) - } -} - -async function unwrapSlipstreamNFTs({ balances, nftsAndOwners = [], api, owner, nftAddress, owners, blacklistedTokens = [], whitelistedTokens = [], uniV3ExtraConfig = {} }) { - // https://velodrome.finance/security#contracts - // https://aerodrome.finance/security#contracts - const chain = api.chain - if (!nftsAndOwners.length) { - if (!nftAddress) - switch (chain) { - case 'optimism': nftAddress = '0xbB5DFE1380333CEE4c2EeBd7202c80dE2256AdF4'; break; - case 'base': nftAddress = '0x827922686190790b37229fd06084350e74485b72'; break; - case 'swellchain': nftAddress = '0x991d5546C4B442B4c5fdc4c8B8b8d131DEB24702'; break; - default: throw new Error('missing default uniswap nft address chain: ' + chain) - } - - if ((!owners || !owners.length) && owner) - owners = [owner] - owners = getUniqueAddresses(owners, chain) - if (Array.isArray(nftAddress)) - nftsAndOwners = nftAddress.map(nft => owners.map(o => [nft, o])).flat() - else - nftsAndOwners = owners.map(o => [nftAddress, o]) - } - const positionIdsByNftAddress = await getPositionIdsByNftAddress({ api, nftsAndOwners, }) - for (const [nftAddress, positionIds] of Object.entries(positionIdsByNftAddress)) { - await unwrapSlipstreamNFT({ balances, positionIds, nftAddress, api, blacklistedTokens, whitelistedTokens, uniV3ExtraConfig, }) - } - return balances -} - -async function getPositionIdsByNftAddress({ api, nftsAndOwners, }) { - const ownersByNFT = {} - nftsAndOwners.forEach(([nftAddress, owner]) => { - nftAddress = normalizeAddress(nftAddress, api.chain) - if (!ownersByNFT[nftAddress]) ownersByNFT[nftAddress] = new Set() - ownersByNFT[nftAddress].add(normalizeAddress(owner, api.chain)) - }) - - const positionIdsByNftAddress = {} - for (let [nftAddress, owners] of Object.entries(ownersByNFT)) { - owners = Array.from(owners) - const positionIdBalances = await api.multiCall({ abi: 'erc20:balanceOf', target: nftAddress, calls: owners }) - const positionIdCalls = [] - positionIdBalances.forEach((idCount, i) => { - const count = +idCount - if (count > 0) { - positionIdCalls.push(...Array(count).fill(0).map((_, index) => ({ params: [owners[i], index] }))) - } - }) - positionIdsByNftAddress[nftAddress] = await api.multiCall({ - abi: wildCreditABI.tokenOfOwnerByIndex, target: nftAddress, - calls: positionIdCalls, - }) - - if (owners.length > 10) - api.log(`Found ${positionIdsByNftAddress[nftAddress].length} positions for NFT ${nftAddress} owned by ${owners.length} owners`) - } - - return positionIdsByNftAddress -} - -async function unwrapSlipstreamNFT({ api, balances, owner, positionIds = [], nftAddress, blacklistedTokens = [], whitelistedTokens = [], uniV3ExtraConfig = {}, }) { - if (!balances) balances = api.getBalances() - const chain = api.chain - - blacklistedTokens = getUniqueAddresses(blacklistedTokens, chain) - whitelistedTokens = getUniqueAddresses(whitelistedTokens, chain) - let nftIdFetcher = uniV3ExtraConfig.nftIdFetcher ?? nftAddress - - const factoryKey = getFactoryKey(chain, nftAddress) - if (!factories[factoryKey]) factories[factoryKey] = api.call({ target: nftAddress, abi: wildCreditABI.factory, }) - let factory = (await factories[factoryKey]) - - if ((!positionIds || positionIds.length === 0) && owner) { // if positionIds are not provided and owner address is passed - const nftPositions = await api.call({ target: nftIdFetcher, params: owner, abi: 'erc20:balanceOf' }) - positionIds = (await api.multiCall({ - abi: wildCreditABI.tokenOfOwnerByIndex, target: nftIdFetcher, - calls: Array(Number(nftPositions)).fill(0).map((_, index) => ({ params: [owner, index] })), - })) - } - - const positions = (await api.multiCall({ abi: slipstreamNftABI.positions, target: nftAddress, calls: positionIds, })) - - const lpInfo = {} - positions.forEach(position => lpInfo[getKey(position)] = position) - const lpInfoArray = Object.values(lpInfo) - - const poolInfos = (await api.multiCall({ abi: slipstreamNftABI.getPool, target: factory, calls: lpInfoArray.map((info) => ({ params: [info.token0, info.token1, info.tickSpacing] })), })) - - const slot0 = await api.multiCall({ abi: slipstreamNftABI.slot0, calls: poolInfos }) - - slot0.forEach((slot, i) => lpInfoArray[i].tick = slot.tick) - - positions.map(addV3PositionBalances) - return balances - - function getKey(position) { - let { token0, token1, tickSpacing } = position - token0 = token0.toLowerCase() - token1 = token1.toLowerCase() - return `${token0}-${token1}-${tickSpacing}` - } - - function addV3PositionBalances(position) { - const token0 = position.token0 - const token1 = position.token1 - const liquidity = position.liquidity - const bottomTick = +position.tickLower - const topTick = +position.tickUpper - const tick = +lpInfo[getKey(position)].tick - const sa = tickToPrice(bottomTick / 2) - const sb = tickToPrice(topTick / 2) - - let amount0 = 0 - let amount1 = 0 - - if (tick < bottomTick) { - amount0 = liquidity * (sb - sa) / (sa * sb) - } else if (tick < topTick) { - const price = tickToPrice(tick) - const sp = price ** 0.5 - - amount0 = liquidity * (sb - sp) / (sp * sb) - amount1 = liquidity * (sp - sa) - } else { - amount1 = liquidity * (sb - sa) - } - - addToken({ balances, token: token0, amount: amount0, chain, blacklistedTokens, whitelistedTokens }) - addToken({ balances, token: token1, amount: amount1, chain, blacklistedTokens, whitelistedTokens }) - } -} - -function addToken({ balances, token, amount, chain, blacklistedTokens = [], whitelistedTokens = [] }) { - const addr = normalizeAddress(token, chain) - if (blacklistedTokens.length && blacklistedTokens.includes(addr)) return; - if (whitelistedTokens.length && !whitelistedTokens.includes(addr)) return; - sdk.util.sumSingleBalance(balances, token, amount, chain) -} - -const nullAddress = ADDRESSES.null -const gasTokens = [nullAddress, ADDRESSES.GAS_TOKEN_2, '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', - '0x000000000000000000000000000000000000800a', // zksync era gas token -] -const gasTokenSet = new Set(gasTokens) -/* -tokensAndOwners [ - [token, owner] - eg ["0xaaa", "0xbbb"] -] -*/ -async function sumTokens(balances = {}, tokensAndOwners, block, chain = "ethereum", transformAddress, { resolveLP = false, unwrapAll = false, blacklistedLPs = [], skipFixBalances = false, abis = {}, permitFailure = false, sumChunkSize = undefined, sumChunkSleep = 3000 } = {}) { - if (!transformAddress) - transformAddress = await getChainTransform(chain) - - let ethBalanceInputs = [] - - tokensAndOwners = tokensAndOwners.filter(i => { - const token = normalizeAddress(i[0], chain) - if (token !== nullAddress && !gasTokens.includes(token)) - return true - ethBalanceInputs.push(i[1]) - return false - }) - - ethBalanceInputs = getUniqueAddresses(ethBalanceInputs, chain) - - if (ethBalanceInputs.length) { - // if (chain === "tron") { - // const ethBalances = await Promise.all(ethBalanceInputs.map(getTrxBalance)) - // ethBalances.forEach(balance => sdk.util.sumSingleBalance(balances, transformAddress(nullAddress), balance)) - // } else { - const { output: ethBalances } = await sdk.api.eth.getBalances({ targets: ethBalanceInputs, chain, block }) - ethBalances.forEach(({ balance }) => sdk.util.sumSingleBalance(balances, transformAddress(nullAddress), balance)) - // } - } - - let chunks = [tokensAndOwners] - if (sumChunkSize) - chunks = sliceIntoChunks(tokensAndOwners, sumChunkSize) - - let i = 0 - for (const tokensAndOwners of chunks) { - i++ - let call = () => sdk.api.abi.multiCall({ - calls: tokensAndOwners.map(t => ({ - target: t[0], - params: t[1] - })), - permitFailure, - abi: 'erc20:balanceOf', - block, - chain, - }) - - let balanceOfTokens - - try { - - balanceOfTokens = await call() - - } catch (e) { - if (permitFailure) { - sdk.log(`Failed to fetch balances for chunk ${i}/${chunks.length}, retrying...`) - await sleep(1000) - balanceOfTokens = await call() - } else - throw e - } - - - balanceOfTokens.output.forEach((result) => { - const token = transformAddress(result.input.target) - let balance = BigNumber(result.output) - if (result.output === null || isNaN(+result.output)) { - sdk.log('failed for', token, balance, balances[token]) - if (permitFailure) balance = BigNumber(0) - else throw new Error('Unable to fetch balance for: ' + result.input.target) - } - balances[token] = BigNumber(balances[token] || 0).plus(balance).toFixed(0) - }) - if (chunks.length > 3) { - sdk.log(`Processed chunk ${i}/${chunks.length} with ${tokensAndOwners.length} tokens, sleeping for ${sumChunkSleep / 1e3}s to avoid rate limit issues`) - } - if (i < chunks.length) - await sleep(sumChunkSleep) // avoid rate limit issues - } - - - Object.entries(balances).forEach(([token, value]) => { - if (+value === 0) delete balances[token] - }) - - if (resolveLP || unwrapAll) - await unwrapLPsAuto({ balances, block, chain, transformAddress, blacklistedLPs, abis }) - - if (!skipFixBalances && ['astar', 'harmony', 'kava', 'thundercore', 'klaytn', 'evmos'].includes(chain)) { - const fixBalances = await getFixBalances(chain) - fixBalances(balances) - } - - return balances -} - - -const cvx_abi = { - cvxBRP_pid: "uint256:pid", - cvxBRP_balanceOf: "function balanceOf(address account) view returns (uint256)", - cvxBRP_earned: "function earned(address account) view returns (uint256)", - cvxBRP_rewards: "function rewards(address) view returns (uint256)", - cvxBRP_userRewardPerTokenPaid: "function userRewardPerTokenPaid(address) view returns (uint256)", - cvxBRP_stakingToken: "address:stakingToken", - cvxBooster_poolInfo: "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)", - cvxFraxFarm_lockedLiquidityOf: "function lockedLiquidityOf(address) view returns (uint256)", -} - -const cvxBoosterAddress = "0xF403C135812408BFbE8713b5A23a04b3D48AAE31"; -async function genericUnwrapCvx(balances, holder, cvx_BaseRewardPool, block, chain) { - // Compute the balance of the treasury of the CVX position and unwrap - const [ - { output: cvx_LP_bal }, - { output: pool_id } - ] = await Promise.all([ - sdk.api.abi.call({ - abi: cvx_abi['cvxBRP_balanceOf'], // cvx_balanceOf cvx_earned cvx_rewards cvx_userRewardPerTokenPaid - target: cvx_BaseRewardPool, - params: [holder], - chain, block - }), - // const {output: pool_id} = await - sdk.api.abi.call({ - abi: cvx_abi['cvxBRP_pid'], - target: cvx_BaseRewardPool, - chain, block - }) - ]) - const { output: crvPoolInfo } = await sdk.api.abi.call({ - abi: cvx_abi['cvxBooster_poolInfo'], - target: cvxBoosterAddress, - params: [pool_id], - chain, - block: block, - }) - sdk.util.sumSingleBalance(balances, crvPoolInfo.lptoken, cvx_LP_bal, chain) - return balances -} - - -async function unwrapLPsAuto({ api, balances, block, chain = "ethereum", transformAddress, excludePool2 = false, onlyPool2 = false, pool2Tokens = [], blacklistedLPs = [], abis = {} }) { - if (api) { - chain = api.chain ?? chain - block = api.block ?? block - if (!balances) balances = api.getBalances() - } else { - api = new sdk.ChainApi({ chain, block }) - } - - if (!transformAddress) - transformAddress = await getChainTransform(chain) - - pool2Tokens = pool2Tokens.map(token => token.toLowerCase()) - blacklistedLPs = blacklistedLPs.map(token => token.toLowerCase()) - const tokens = [] - const amounts = [] - - Object.keys(balances).forEach(key => { - if (+balances[key] === 0) { - delete balances[key] - return; - } - if (chain === 'ethereum') { - if (!key.startsWith(chain + ':') && !key.startsWith('0x')) return; // token is transformed, probably not an LP - } else if (!key.startsWith(chain + ':')) { - return;// token is transformed, probably not an LP - } - const token = stripTokenHeader(key) - if (!/^0x/.test(token)) return; // if token is not an eth address, we ignore it - if (gasTokenSet.has(token)) return; // if token is a gas token, we ignore it - tokens.push({ output: token }) - amounts.push({ output: balances[key] }) - delete balances[key] - }) - - return _addTokensAndLPs(balances, tokens, amounts) - - async function _addTokensAndLPs(balances, tokens, amounts) { - const symbols = (await sdk.api.abi.multiCall({ - calls: tokens.map(t => ({ target: t.output })), abi: symbol, block, chain, permitFailure: true, - })).output - const lpBalances = [] - symbols.forEach(({ output }, idx) => { - const token = tokens[idx].output - const balance = amounts[idx].output - if (isLP(output, token, chain) && !blacklistedLPs.includes(token.toLowerCase())) - lpBalances.push({ token, balance }) - else - sdk.util.sumSingleBalance(balances, transformAddress(token), balance); - }) - await _unwrapUniswapLPs(balances, lpBalances) - return balances - } - - async function _unwrapUniswapLPs(balances, lpPositions) { - const lpTokenCalls = lpPositions.map(lpPosition => ({ target: lpPosition.token })) - const { output: lpReserves } = await sdk.api.abi.multiCall({ block, abi: abis.getReservesABI || lpReservesAbi, calls: lpTokenCalls, chain, }) - const { output: lpSupplies } = await sdk.api.abi.multiCall({ block, abi: lpSuppliesAbi, calls: lpTokenCalls, chain, }) - const { output: tokens0 } = await sdk.api.abi.multiCall({ block, abi: token0Abi, calls: lpTokenCalls, chain, }) - const { output: tokens1 } = await sdk.api.abi.multiCall({ block, abi: token1Abi, calls: lpTokenCalls, chain, }) - - lpPositions.map(lpPosition => { - try { - let token0, token1, supply - const lpToken = lpPosition.token - const token0_ = tokens0.find(call => call.input.target === lpToken) - const token1_ = tokens1.find(call => call.input.target === lpToken) - const supply_ = lpSupplies.find(call => call.input.target === lpToken) - try { - token0 = token0_.output.toLowerCase() - token1 = token1_.output.toLowerCase() - supply = supply_.output - } catch (e) { - sdk.log('Unable to resolve LP: ', lpToken); - throw e - } - - if (excludePool2) - if (pool2Tokens.includes(token0) || pool2Tokens.includes(token1)) return; - - if (onlyPool2) - if (!pool2Tokens.includes(token0) && !pool2Tokens.includes(token1)) return; - - if (supply === "0") { - return - } - - let _reserve0, _reserve1 - let output = lpReserves.find(call => call.input.target === lpToken); - _reserve0 = output.output._reserve0 || output.output.reserve0 - _reserve1 = output.output._reserve1 || output.output.reserve1 - - const token0Balance = BigNumber(lpPosition.balance).times(BigNumber(_reserve0)).div(BigNumber(supply)).toFixed(0) - const token1Balance = BigNumber(lpPosition.balance).times(BigNumber(_reserve1)).div(BigNumber(supply)).toFixed(0) - sdk.util.sumSingleBalance(balances, transformAddress(token0), token0Balance) - sdk.util.sumSingleBalance(balances, transformAddress(token1), token1Balance) - } catch (e) { - sdk.log(`Failed to get data for LP token at ${lpPosition.token} on chain ${chain}`) - throw e - } - }) - } -} - -function stripTokenHeader(token) { - return token.indexOf(':') > -1 ? token.split(':')[1] : token -} - -async function sumTokens2({ - balances, - tokensAndOwners = [], - tokensAndOwners2 = [], - ownerTokens = [], - token, - tokens = [], - owners = [], - owner, - block, - chain = 'ethereum', - transformAddress, - resolveLP = false, - unwrapAll = false, - blacklistedLPs = [], - blacklistedTokens = [], - blacklistedOwners = [], - skipFixBalances = false, - abis = {}, - api, - resolveUniV3 = false, - resolveUniV4 = false, - resolveSlipstream = false, - uniV3WhitelistedTokens = [], - uniV3nftsAndOwners = [], - resolveArtBlocks = false, - resolveNFTs = false, - resolveVlCVX = false, - permitFailure = false, - fetchCoValentTokens = false, - tokenConfig = {}, - sumChunkSize = undefined, - uniV3ExtraConfig = { - // positionIds - // nftAddress - // nftIdFetcher - }, - uniV4ExtraConfig = { - // positionIds - // nftAddress - // nftIdFetcher - // whitelistedTokens - // blacklistedTokens - }, - resolveIchiVault = false, - solidlyVeNfts = [], - convexRewardPools = [], - auraPools = [], - sumChunkSleep, -}) { - if (api) { - chain = api.chain ?? chain - block = api.block ?? block - if (!balances) balances = api.getBalances() - } else if (!balances) { - balances = {} - api = new sdk.ChainApi({ chain, block }) - } - - const useCurrentBalances = api.timestamp > (Date.now()/1e3 - 3600) - if(fetchCoValentTokens && !useCurrentBalances) { - const chainMap = { - avax: 'avalanche', - xdai: 'gnosis', - } - const sql = `select - token_address -from - ${chainMap[chain] ?? chain}.assets.erc20_token_transfers -where - to_address in (${owners.map(o => `'${o.toLowerCase()}'`).join(',')}) - and block_timestamp < TO_TIMESTAMP(${api.timestamp}) -group by - token_address` - const alltokens = await queryAllium(sql) - tokens = tokens.concat(alltokens.map(t => t.token_address)).concat(["0x0000000000000000000000000000000000000000"]) - } - - if (owner) owners.push(owner) - if (token) tokens.push(token) - tokens = getUniqueAddresses(tokens, chain) - owners = getUniqueAddresses(owners, chain) - if (owners.length) { - for (const token of tokens) { - for (const owner of owners) { - tokensAndOwners.push([token, owner]) - } - } - } - - if (resolveArtBlocks || resolveNFTs) { - if (!api) throw new Error('Missing arg: api') - await sumArtBlocks({ balances, api, owner, owners, }) - } - - if (resolveVlCVX && owners.length && chain === 'ethereum') { - const vlCVXBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: owners, target: ADDRESSES.ethereum.vlCVX }) - vlCVXBals.forEach((v) => sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.vlCVX, v, chain)) - } - - if (fetchCoValentTokens && useCurrentBalances) { - const cTokens = (await Promise.all(owners.map(i => covalentGetTokens(i, api, tokenConfig)))) - cTokens.forEach((tokens, i) => ownerTokens.push([tokens, owners[i]])) - } - - if (resolveNFTs) { - const coreNftTokens = whitelistedNFTs[api.chain] ?? [] - const nftTokens = await Promise.all(owners.map(i => covalentGetTokens(i, api, { onlyWhitelisted: false }))) - nftTokens.forEach((nfts, i) => ownerTokens.push([[nfts, tokens, coreNftTokens].flat(), owners[i]])) - } - - if (solidlyVeNfts.length) { - await Promise.all( - owners.map( - owner => solidlyVeNfts.map(veNftDetails => unwrapSolidlyVeNft({ api, owner, ...veNftDetails })) - ) - .flat() - ) - } - - if (convexRewardPools.length) { - const convexRewardPoolsTokensAndOwners = convexRewardPools.map(poolAddress => { - return owners.map(owner => [poolAddress, owner]) - }).flat(); - await unwrapConvexRewardPools({ api, tokensAndOwners: convexRewardPoolsTokensAndOwners }); - } - - if (auraPools.length) { - const tokensAndOwners = auraPools.map(poolAddress => { - return owners.map(owner => [poolAddress, owner]) - }).flat(); - Promise.all( - tokensAndOwners.map(([pool, owner]) => { - return unwrapAuraPool({ api, auraPool: pool, owner }) - }) - ); - } - - if (ownerTokens.length) { - ownerTokens.map(([tokens, owner]) => { - if (typeof owner !== 'string') throw new Error('invalid config', owner) - if (!Array.isArray(tokens)) throw new Error('invalid config', tokens) - tokens.forEach(t => tokensAndOwners.push([t, owner])) - }) - } - - if (tokensAndOwners2.length) { - const [_tokens, _owners] = tokensAndOwners2 - _tokens.forEach((v, i) => tokensAndOwners.push([v, _owners[i]])) - } - - if (resolveUniV3 || uniV3nftsAndOwners.length || Object.keys(uniV3ExtraConfig).length) - await unwrapUniswapV3NFTs({ balances, chain, block, owner, owners, blacklistedTokens, whitelistedTokens: uniV3WhitelistedTokens, nftsAndOwners: uniV3nftsAndOwners, uniV3ExtraConfig, }) - - if (resolveUniV4 || Object.keys(uniV4ExtraConfig).length) - await unwrapUniswapV4NFTs({ balances, chain, block, owner, owners, blacklistedTokens, whitelistedTokens: uniV3WhitelistedTokens, uniV4ExtraConfig, }) - - if (resolveSlipstream) - await unwrapSlipstreamNFTs({ balances, api, owner, owners, blacklistedTokens, whitelistedTokens: uniV3WhitelistedTokens, nftsAndOwners: uniV3nftsAndOwners, uniV3ExtraConfig, }) - - blacklistedTokens = blacklistedTokens.map(t => normalizeAddress(t, chain)) - tokensAndOwners = tokensAndOwners.map(([t, o]) => [normalizeAddress(t, chain), o]).filter(([token]) => !blacklistedTokens.includes(token)) - tokensAndOwners = getUniqueToA(tokensAndOwners) - - if (blacklistedOwners?.length) { - const blacklistedOwnersSet = new Set(blacklistedOwners.map(o => normalizeAddress(o, chain))) - tokensAndOwners = tokensAndOwners.filter(([_, owner]) => !blacklistedOwnersSet.has(owner)) - } - log(chain, 'summing tokens', tokensAndOwners.length) - - - await sumTokens(balances, tokensAndOwners, block, chain, transformAddress, { resolveLP, unwrapAll, blacklistedLPs, skipFixBalances: true, abis, permitFailure, sumChunkSize, sumChunkSleep, }) - - - if (resolveIchiVault) - await unwrapHypervisorVaults({ api }) - - - if (!skipFixBalances) { - const fixBalances = await getFixBalances(chain) - fixBalances(balances) - } - - return balances - - function getUniqueToA(toa) { - toa = toa.map(i => i.join('-')) - return getUniqueAddresses(toa, chain).map(i => i.split('-')) - } -} - -async function unwrapHypervisorVaults({ api, lps }) { - let chain = api.chain - const balances = api.getBalances() - let tokens = Object.keys(balances).filter(t => t.startsWith(chain + ':')).map(t => t.split(':')[1]) - if (!lps) { - const symbols = (await api.multiCall({ abi: 'erc20:symbol', calls: tokens, permitFailure: true })).map(i => i || '') - lps = tokens.filter((t, i) => isICHIVaultToken(symbols[i], t, chain)) - } - - if (!lps.length) return api.getBalances() - - const [ - token0s, token1s, supplies, uBalances, - ] = await Promise.all([ - api.multiCall({ abi: 'address:token0', calls: lps }), - api.multiCall({ abi: 'address:token1', calls: lps }), - api.multiCall({ abi: 'uint256:totalSupply', calls: lps }), - api.multiCall({ abi: 'function getTotalAmounts() view returns (uint256 token0Bal, uint256 token1Bal)', calls: lps }), - ]) - - lps.forEach((_, i) => { - const lpToken = `${chain}:${lps[i]}` - const bal = balances[lpToken] - if (!bal) return; - const ratio = bal / supplies[i] - const token0Bal = uBalances[i][0] * ratio - const token1Bal = uBalances[i][1] * ratio - api.add(token0s[i], token0Bal) - api.add(token1s[i], token1Bal) - api.removeTokenBalance(lpToken) - }) - - return api.getBalances() -} - -function sumTokensExport({ balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveUniV4, resolveSlipstream, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, logCalls, ...args }) { - return async (api) => sumTokens2({ api, balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveUniV4, resolveSlipstream, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, ...args, }) -} - -async function unwrapAuraPool({ api, chain, block, auraPool, owner, balances, isBPool = false, isV2 = true }) { - if (!api) { - api = new sdk.ChainApi({ chain, block, }) - } - balances = balances || api.getBalances() - const [lpSupply, lpTokens, balancerToken] = await api.batchCall([ - { abi: 'erc20:totalSupply', target: auraPool }, - { abi: 'erc20:balanceOf', target: auraPool, params: owner }, - { abi: 'address:asset', target: auraPool }, - ]); - if (+lpTokens === 0) return balances; - const [vault] = await api.batchCall([ - { abi: 'address:getVault', target: balancerToken }, - ]); - const auraRatio = lpTokens / lpSupply; - return unwrapBalancerToken({ api, chain, block, balancerToken, owner: vault, balances, isBPool, isV2, extraRatio: auraRatio }) -} - -async function unwrapBalancerToken({ api, chain, block, balancerToken, owner, balances, isBPool = false, isV2 = true, extraRatio = 1 }) { - if (!api) { - api = new sdk.ChainApi({ chain, block, }) - } - balances = balances || api.getBalances() - const [lpSupply, lpTokens] = await api.batchCall([ - { abi: 'erc20:totalSupply', target: balancerToken }, - { abi: 'erc20:balanceOf', target: balancerToken, params: owner }, - ]) - if (+lpTokens === 0) return balances - const ratio = lpTokens / lpSupply * extraRatio - - if (isV2) { - const poolId = await api.call({ abi: 'function getPoolId() view returns (bytes32)', target: balancerToken }) - const vault = await api.call({ abi: 'address:getVault', target: balancerToken }) - const [tokens, bals] = await api.call({ abi: 'function getPoolTokens(bytes32) view returns (address[], uint256[],uint256)', target: vault, params: poolId }) - tokens.forEach((v, i) => { - // handle balancer composable metapools case where the pool contains the LP itself, we can skip it for our calc - if (v.toLowerCase() !== balancerToken.toLowerCase()) { - sdk.util.sumSingleBalance(balances, v, bals[i] * ratio, api.chain) - } - }) - } else { - let underlyingPool = balancerToken - if (!isBPool) - underlyingPool = await api.call({ target: balancerToken, abi: bPool, }) - - const underlyingTokens = await api.call({ target: underlyingPool, abi: getCurrentTokens, }) - - const tempBalances = await sumTokens2({ owner: underlyingPool, tokens: underlyingTokens, api, }) - for (const [token, value] of Object.entries(tempBalances)) { - const newValue = BigNumber(value * ratio).toFixed(0) - sdk.util.sumSingleBalance(balances, token, newValue) - } - } - - return balances -} - -async function unwrapMakerPositions({ api, blacklistedTokens = [], whitelistedTokens = [], owner, skipDebt = false }) { - const vaultIds = [] - const chain = api.chain - if (chain && chain !== 'ethereum') throw new Error('Maker protocol not found in chain') - blacklistedTokens = getUniqueAddresses(blacklistedTokens, chain) - whitelistedTokens = getUniqueAddresses(whitelistedTokens, chain) - // taken from https://maker.defiexplore.com/api/users/0x849d52316331967b6ff1198e5e32a0eb168d039d?orderTx=DESC&order=DESC&sortBy=debt - // https://docs.makerdao.com/smart-contract-modules/proxy-module/cdp-manager-detailed-documentation - const PROXY_REGISTRY = '0x4678f0a6958e4D2Bc4F1BAF7Bc52E8F3564f3fE4' - const ds_proxy = await api.call({ abi: 'function proxies(address) view returns (address)', target: PROXY_REGISTRY, params: owner }) - const CDP_MANAGER = '0x5ef30b9986345249bc32d8928b7ee64de9435e39' - const ILK_REGISTRY = '0x5a464C28D19848f44199D003BeF5ecc87d090F87' - const vaultCount = await api.call({ abi: 'function count(address) view returns (uint256)', target: CDP_MANAGER, params: ds_proxy }) - if (vaultCount < 1) return api.getBalances() - vaultIds.push(await api.call({ abi: 'function first(address) view returns (uint256)', target: CDP_MANAGER, params: ds_proxy })) - for (let i = 0; i < vaultCount - 1; i++) { - const [_, nextId] = await api.call({ abi: 'function list(uint256) view returns (uint256,uint256)', target: CDP_MANAGER, params: vaultIds[i] }) - vaultIds.push(nextId) - } - const ilks = await api.multiCall({ abi: 'function ilks(uint256) view returns (bytes32)', calls: vaultIds, target: CDP_MANAGER }) - const urns = await api.multiCall({ abi: 'function urns(uint256) view returns (address)', calls: vaultIds, target: CDP_MANAGER }) - let collaterals = await api.multiCall({ abi: 'function gem(bytes32) view returns (address)', calls: ilks, target: ILK_REGISTRY }) - const vat = await api.call({ abi: 'address:vat', target: CDP_MANAGER }) - const cdpData = await api.multiCall({ abi: 'function urns(bytes32, address) view returns (uint256 collateralBal, uint256 debt)', calls: urns.map((v, i) => ({ params: [ilks[i], v] })), target: vat }) - collaterals = collaterals.map(i => normalizeAddress(i, chain)) - cdpData.forEach(({ collateralBal, debt }, i) => { - if (!skipDebt) - api.add(ADDRESSES.ethereum.DAI, debt * -1) - const collateral = collaterals[i] - if (blacklistedTokens.length && blacklistedTokens.includes(collateral, chain)) return; - if (whitelistedTokens.length && !whitelistedTokens.includes(collateral, chain)) return; - api.add(collateral, collateralBal) - }) - return api.getBalances() -} - -async function unwrap4626Tokens({ api, tokensAndOwners, }) { - const tokens = tokensAndOwners.map(i => i[0]) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(i => ({ target: i[0], params: i[1] })), }) - const assets = await api.multiCall({ abi: 'address:asset', calls: tokens, }) - api.addTokens(assets, bals) - return api.getBalances() -} - -async function unwrapConvexRewardPools({ api, tokensAndOwners }) { - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(([t, o]) => ({ target: t, params: o })) }) - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: tokensAndOwners.map(i => i[0]) }) - api.addTokens(tokens, bals) - return api.getBalances() -} - -function addUniV3LikePosition({ api, token0, token1, liquidity, tickLower, tickUpper, tick }) { - - const sa = tickToPrice(tickLower / 2) - const sb = tickToPrice(tickUpper / 2) - - let amount0 = 0 - let amount1 = 0 - - if (tick < tickLower) { - amount0 = liquidity * (sb - sa) / (sa * sb) - } else if (tick < tickUpper) { - const price = tickToPrice(tick) - const sp = price ** 0.5 - - amount0 = liquidity * (sb - sp) / (sp * sb) - amount1 = liquidity * (sp - sa) - } else { - amount1 = liquidity * (sb - sa) - } - - api.add(token0, amount0) - api.add(token1, amount1) -} - -async function unwrapSolidlyVeNft({ api, baseToken, veNft, owner, hasTokensOfOwnerAbi = false, isAltAbi = false, lockedAbi, nftIdGetterAbi }) { - let tokenIds - const _lockedAbi = lockedAbi || (hasTokensOfOwnerAbi || isAltAbi ? SOLIDLY_VE_NFT_ABI.lockedSimple : SOLIDLY_VE_NFT_ABI.locked) - const _nftIdGetterAbi = nftIdGetterAbi || (isAltAbi ? SOLIDLY_VE_NFT_ABI.tokenOfOwnerByIndex : SOLIDLY_VE_NFT_ABI.ownerToNFTokenIdList) - if (hasTokensOfOwnerAbi) { - tokenIds = await api.call({ abi: SOLIDLY_VE_NFT_ABI.tokensOfOwner, params: owner, target: veNft }) - } else { - const count = await api.call({ abi: 'erc20:balanceOf', target: veNft, params: owner }) - tokenIds = await api.multiCall({ abi: _nftIdGetterAbi, calls: createIncrementArray(count).map(i => ({ params: [owner, i] })), target: veNft }) - } - const bals = await api.multiCall({ abi: _lockedAbi, calls: tokenIds, target: veNft }) - bals.forEach(i => api.add(baseToken, i.amount)) -} - -module.exports = { - PANCAKE_NFT_ADDRESS, - unwrapUniswapLPs, - unwrapSlipstreamNFT, - sumTokens, - genericUnwrapCvx, - unwrapLPsAuto, - isLP, - nullAddress, - sumTokens2, - unwrapBalancerToken, - sumTokensExport, - unwrapMakerPositions, - unwrap4626Tokens, - unwrapConvexRewardPools, - addUniV3LikePosition, - unwrapSolidlyVeNft, - unwrapHypervisorVaults, -} diff --git a/projects/helper/utils.js b/projects/helper/utils.js deleted file mode 100644 index e89d40d0d93..00000000000 --- a/projects/helper/utils.js +++ /dev/null @@ -1,409 +0,0 @@ -const ADDRESSES = require('./coreAssets.json') -const axios = require("axios"); -const sdk = require('@defillama/sdk') -const http = require('./http') -const { getEnv } = require('./env') -const erc20 = require('./abis/erc20.json'); -const { fetchThroughProxy } = require('./proxyRequest'); -const { beacon } = require('./chain/rpcProxy'); - -async function fetchURL(url) { - return axios.get(url) -} - -async function postURL(url, data) { - return axios.post(url, data) -} - -function createIncrementArray(length) { - const arr = [] - for (let i = 0; i < length; i++) - arr.push(i) - - return arr -} - -function getParamCalls(length) { - return createIncrementArray(length).map(i => ({ params: i })) -} - -const LP_SYMBOLS = ['SLP', 'spLP', 'JLP', 'OLP', 'SCLP', 'DLP', 'MLP', 'MSLP', 'ULP', 'TLP', 'HMDX', 'YLP', 'SCNRLP', 'PGL', 'GREEN-V2', 'PNDA-V2', 'vTAROT', 'vEvolve', 'TETHYSLP', 'BAO-V2', 'DINO-V2', 'DFYNLP', 'LavaSwap', 'RLP', 'ZDEXLP', 'lawSWAPLP', 'ELP', 'ICELP', 'LFG_LP', 'KoffeeMug'] -const blacklisted_LPS = new Set([ - '0xb3dc4accfe37bd8b3c2744e9e687d252c9661bc7', - '0xf146190e4d3a2b9abe8e16636118805c628b94fe', - '0xCC8Fa225D80b9c7D42F96e9570156c65D6cAAa25', - '0xaee4164c1ee46ed0bbc34790f1a3d1fc87796668', - '0x93669cfce302c9971169f8106c850181a217b72b', - '0x253f67aacaf0213a750e3b1704e94ff9accee10b', - '0x524cab2ec69124574082676e6f654a18df49a048', -].map(i => i.toLowerCase())) - -function isICHIVaultToken(symbol, token, chain) { - if (symbol === 'ICHI_Vault_LP') return true - if (symbol.startsWith('IV-')) return true - return false -} - -function isLP(symbol, token, chain) { - // sdk.log(symbol, chain, token) - if (!symbol) return false - if (token && blacklisted_LPS.has(token.toLowerCase()) || symbol.includes('HOP-LP-')) return false - if (chain === 'bsc' && ['OLP', 'DLP', 'MLP', 'LP', 'Stable-LP', 'fCake-LP', 'fMDEX LP'].includes(symbol)) return false - if (chain === 'bsc' && ['WLP', 'FstLP', 'BLP', 'DsgLP'].includes(symbol)) return true - if (chain === 'pulse' && ['PLP', 'PLT'].includes(symbol)) return true - if (chain === 'avax' && ['ELP', 'EPT', 'CRL', 'YSL', 'BGL', 'PLP'].includes(symbol)) return true - if (chain === 'ethereum' && ['SSLP'].includes(symbol)) return true - if (chain === 'moonriver' && ['HBLP'].includes(symbol)) return true - if (chain === 'ethpow' && ['LFG_LP'].includes(symbol)) return true - if (chain === 'aurora' && ['wLP'].includes(symbol)) return true - if (chain === 'oasis' && ['LPT', 'GLP'].includes(symbol)) return true - if (chain === 'iotex' && ['MIMO-LP'].includes(symbol)) return true - if (chain === 'base' && ['RCKT-V2'].includes(symbol)) return true - if (chain === 'wan' && ['WSLP'].includes(symbol)) return true - if (chain === 'telos' && ['zLP'].includes(symbol)) return true - if (chain === 'polygon' && ['MbtLP', 'GLP', 'WLP', 'FLP'].includes(symbol)) return true - if (chain === 'polygon' && ['DLP'].includes(symbol)) return false - if (chain === 'ethereum' && (['SUDO-LP'].includes(symbol) || symbol.endsWith('LP-f'))) return false - if (chain === 'dogechain' && ['DST-V2'].includes(symbol)) return true - if (chain === 'harmony' && ['HLP'].includes(symbol)) return true - if (chain === 'klaytn' && ['NLP'].includes(symbol)) return true - if (chain === 'core' && ['GLP'].includes(symbol)) return true - if (chain === 'kardia' && ['KLP', 'KDXLP'].includes(symbol)) return true - if (chain === 'fantom' && ['HLP', 'WLP'].includes(symbol)) return true - if (chain === 'functionx' && ['FX-V2'].includes(symbol)) return true - if (chain === 'mantle' && ['MoeLP'].includes(symbol)) return true - if (chain === 'blast' && ['RING-V2'].includes(symbol)) return true - if (chain === 'fraxtal' && ['FS-V2'].includes(symbol)) return true - if (chain === 'era' && /(ZFLP)$/.test(symbol)) return true // for syncswap - if (chain === 'flare' && symbol.endsWith('_LP')) return true // for enosys dex - if (chain === 'songbird' && ['FLRX', 'OLP'].includes(symbol)) return true - if (chain === 'arbitrum' && ['DXS', 'ZLP',].includes(symbol)) return true - if (chain === 'metis' && ['NLP', 'ALP'].includes(symbol)) return true // Netswap/Agora LP Token - if (chain === 'optimism' && /(-ZS)/.test(symbol)) return true - if (chain === 'arbitrum' && /^(crAMM|vrAMM)-/.test(symbol)) return true // ramses LP - if (chain === 'arbitrum' && /^(DLP|LP-)/.test(symbol)) return false // DODO or Wombat - if (['base', 'sonic',].includes(chain) && /^(v|s)-/.test(symbol)) return true // Equalizer LP - if (chain === 'bsc' && /(-APE-LP-S)/.test(symbol)) return false - if (chain === 'scroll' && /(cSLP|sSLP)$/.test(symbol)) return true //syncswap LP - if (chain === 'btn' && /(XLT)$/.test(symbol)) return true //xenwave LP - if (['fantom', 'nova',].includes(chain) && ['NLT'].includes(symbol)) return true - if (chain === 'ethereumclassic' && symbol === 'ETCMC-V2') return true - if (chain === 'shibarium' && ['SSLP', 'ChewyLP'].includes(symbol)) return true - if (chain === 'omax' && ['OSWAP-V2'].includes(symbol)) return true - if (chain === 'sonic' && symbol.endsWith(' spLP')) return true - let label - - if (symbol.startsWith('ZLK-LP') || symbol.includes('DMM-LP') || (chain === 'avax' && 'DLP' === symbol) || symbol === 'fChe-LP') - label = 'Blackisting this LP because of unsupported abi' - - if (label) { - sdk.log(label, token, symbol) - return false - } - - const isLPRes = LP_SYMBOLS.includes(symbol) || /(UNI-V2|vAMM|sAMM)/.test(symbol) || symbol.split(/\W+/).includes('LP') - - // if (isLPRes && !['UNI-V2', 'Cake-LP'].includes(symbol)) - // sdk.log(chain, symbol, token) - - return isLPRes -} - -function mergeExports(...exportsArray) { - exportsArray = exportsArray.flat() - const exports = {} - - exportsArray.forEach(exportObj => { - Object.keys(exportObj).forEach(key => { - if (typeof exportObj[key] !== 'object') { - exports[key] = exportObj[key] - return; - } - Object.keys(exportObj[key]).forEach(key1 => addToExports(key, key1, exportObj[key][key1])) - }) - }) - - Object.keys(exports) - .filter(chain => typeof exports[chain] === 'object') - .forEach(chain => { - const obj = exports[chain] - Object.keys(obj).forEach(key => { - if (obj[key].length > 1) - obj[key] = sdk.util.sumChainTvls(obj[key]) - else - obj[key] = obj[key][0] - }) - }) - - - return exports - - function addToExports(chain, key, fn) { - if (!exports[chain]) exports[chain] = {} - if (!exports[chain][key]) exports[chain][key] = [] - exports[chain][key].push(fn) - } -} - -async function getBalance(chain, account) { - switch (chain) { - case 'bitcoin': - return (await http.get(`https://chain.api.btc.com/v3/address/${account}`)).data.balance / 1e8 - case 'bep2': - const balObject = (await http.get(`https://api-binance-mainnet.cosmostation.io/v1/account/${account}`)).balances.find(i => i.symbol === 'BNB') - return +(balObject || { free: 0 }).free - default: throw new Error('Unsupported chain') - } -} - -function getUniqueAddresses(addresses, isCaseSensitive = false) { - const set = new Set() - addresses.forEach(i => set.add(isCaseSensitive ? i : i.toLowerCase())) - return [...set] -} - -const DEBUG_MODE = () => getEnv('LLAMA_DEBUG_MODE') -const log = sdk.log - -function sliceIntoChunks(arr, chunkSize = 100) { - const res = []; - for (let i = 0; i < arr.length; i += chunkSize) { - const chunk = arr.slice(i, i + chunkSize); - res.push(chunk); - } - return res; -} - -async function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - - -function stripTokenHeader(token) { - token = token.toLowerCase(); - return token.indexOf(":") > -1 ? token.split(":")[1] : token; -} - -async function diplayUnknownTable({ tvlResults = {}, tvlBalances = {}, storedKey = 'ethereum', tableLabel = 'Unrecognized tokens' }) { - if (!DEBUG_MODE()) return; - const balances = {} - storedKey = storedKey.split('-')[0] - Object.entries(tvlResults.tokenBalances).forEach(([label, balance]) => { - if (!label.startsWith('UNKNOWN')) return; - const token = label?.split('(')[1]?.replace(')', '') - balances[token] = tvlBalances[token] - if (balances[token] === '0') delete balances[token] - }) - - try { - await debugBalances({ balances, chain: storedKey, log, tableLabel, withETH: false, }) - } catch (e) { - // sdk.log(e) - log('failed to fetch prices for', balances) - } -} - -const nullAddress = ADDRESSES.null -async function getSymbols(chain, tokens) { - tokens = tokens.filter(i => i.includes('0x')).map(i => i.slice(i.indexOf('0x'))).filter(i => i !== nullAddress) - const calls = tokens.map(i => ({ target: i })) - const { output: symbols } = await sdk.api.abi.multiCall({ - abi: 'erc20:symbol', - calls, - chain, - }) - - const response = {} - symbols.map(i => response[i.input.target] = i.output) - return response -} - -async function getDecimals(chain, tokens) { - tokens = tokens.filter(i => i.includes('0x')).map(i => i.slice(i.indexOf('0x'))) - const calls = tokens.map(i => ({ target: i })) - const { output: symbols } = await sdk.api.abi.multiCall({ - abi: 'erc20:decimals', - calls, - chain, - }) - - const response = {} - symbols.map(i => response[i.input.target] = i.output) - return response -} - -async function debugBalances({ balances = {}, chain, log = false, tableLabel = '', withETH = true }) { - if (!DEBUG_MODE() && !log) return; - if (!Object.keys(balances).length) return; - - const labelMapping = {} - const tokens = [] - const ethTokens = [] - Object.keys(balances).forEach(label => { - let token = stripTokenHeader(label) - if (chain === 'tron') { - token = label.slice(5) - tokens.push(token) - labelMapping[label] = token - return - } - const blacklistedChains = ['starknet', 'solana', 'sui', 'aptos', 'fuel', 'move'] - if (!token.startsWith('0x') || blacklistedChains.includes(chain)) return; - if (!label.startsWith(chain)) - ethTokens.push(token) - else - tokens.push(token) - labelMapping[label] = token - }) - - if (tokens.length > 400) { - sdk.log('too many unknowns') - return; - } - - const api = new sdk.ChainApi({ chain }) - - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens, permitFailure: true, }) - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens, permitFailure: true, }) - let name = await api.multiCall({ abi: erc20.name, calls: tokens, permitFailure: true, }) - name = name.map(i => i && i.length > 50 ? i.slice(0, 50) + '...' : i) - - let symbolsETH, nameETH - - if (withETH) { - const ethApi = new sdk.ChainApi() - symbolsETH = await ethApi.multiCall({ abi: 'erc20:symbol', calls: ethTokens, permitFailure: true, }) - nameETH = await ethApi.multiCall({ abi: erc20.name, calls: ethTokens, permitFailure: true, }) - } - - let symbolMapping = symbols.reduce((a, i, y) => ({ ...a, [tokens[y]]: i }), {}) - let decimalsMapping = decimals.reduce((a, i, y) => ({ ...a, [tokens[y]]: i }), {}) - let nameMapping = name.reduce((a, i, y) => ({ ...a, [tokens[y]]: i }), {}) - if (withETH) { - symbolMapping = symbolsETH.reduce((a, i, y) => ({ ...a, [ethTokens[y]]: i }), symbolMapping) - nameMapping = nameETH.reduce((a, i, y) => ({ ...a, [ethTokens[y]]: i }), nameMapping) - } - const logObj = [] - Object.entries(balances).forEach(([label, balance]) => { - let token = labelMapping[label] - let name = token && nameMapping[token] || '-' - let symbol = token && symbolMapping[token] || '-' - let decimal = token && decimalsMapping[token] - if (decimal) - balance = (balance / (10 ** decimal)).toFixed(0) - - logObj.push({ name, symbol, balance, label, decimals: decimal }) - }) - - sdk.log('Balance table for [%s] %s', chain, tableLabel) - let filtered = logObj.filter(i => { - const symbol = i.symbol?.toLowerCase() ?? '' - if (/\.(com|net|org|xyz|site|io)/.test(symbol)) return false - if (/claim|access|airdrop/.test(symbol)) return false - return true - }) - if (filtered.length > 300) { - sdk.log('Too many unknowns to display #' + filtered.length, 'displaying first 100') - filtered = filtered.slice(0, 100) - } - if (filtered.length) - console.table(filtered) -} - -function once(func) { - let previousResponse - let called = false - function wrapped(...args) { - if (called) return previousResponse - called = true - previousResponse = func(...args) - return previousResponse - } - return wrapped -} - -function getStakedEthTVL({ withdrawalAddress, withdrawalAddresses, skipValidators = 0, size = 200, sleepTime = 10000, proxy = false }) { - return async (api) => { - - if (!withdrawalAddress && !withdrawalAddresses?.length) - throw new Error('Please provide withdrawalAddress or withdrawalAddresses') - - const addresses = withdrawalAddresses ?? [withdrawalAddress] - api.addGasToken(await beacon.balance(addresses)) - return api.getBalances() - -/* for (const addr of addresses) { - let fetchedValidators = skipValidators; - api.sumTokens({ owner: addr, tokens: [nullAddress] }); - - do { - const url = `https://beaconcha.in/api/v1/validator/withdrawalCredentials/${addr}?limit=${size}&offset=${fetchedValidators}` - let validatorList; - - if (proxy) { - const res = await fetchThroughProxy(url); - validatorList = res.data; - } else { - const res = await http.get(url); - validatorList = res.data; - } - - if (!Array.isArray(validatorList)) { - console.error(`Invalid validator list for ${addr} at offset ${fetchedValidators}`); - break; - } - - const validators = validatorList.map(i => i.publickey); - - fetchedValidators += validators.length; - api.log(`Fetching balances for validators (${addr})`, validators.length); - await addValidatorBalance(validators); - if (sleepTime > 0) await sleep(sleepTime); - } while (fetchedValidators % size === 0); - } - - const bals = api.getBalances() - Object.keys(bals).forEach((i) => { - bals[i] = bals[i] / 1e18 - }) - console.log(api.getBalances(), ) - return api.getBalances(); - - async function addValidatorBalance(validators) { - if (validators.length > 100) { - const chunks = sliceIntoChunks(validators, 100); - for (const chunk of chunks) await addValidatorBalance(chunk); - return; - } - - const { data } = await http.post("https://beaconcha.in/api/v1/validator", { - indicesOrPubkey: validators.join(","), - }); - - data.forEach((i) => api.addGasToken(i.balance * 1e9)); - } */ - }; -} - - -module.exports = { - log, - createIncrementArray, - fetchURL, - postURL, - isLP, - mergeExports, - getBalance, - getUniqueAddresses, - sliceIntoChunks, - sleep, - debugBalances, - stripTokenHeader, - diplayUnknownTable, - getSymbols, - getDecimals, - getParamCalls, - once, - isICHIVaultToken, - getStakedEthTVL, -} diff --git a/projects/helper/utils/enigma.js b/projects/helper/utils/enigma.js deleted file mode 100644 index aa50b5e0530..00000000000 --- a/projects/helper/utils/enigma.js +++ /dev/null @@ -1,119 +0,0 @@ - -const miscreant = require("miscreant"); -const curve25519 = require("curve25519-js"); -const { get } = require('../http') - -// const crypto = require('node:crypto') // -- can be used for node v16 and above -// const hkdf = require("js-crypto-hkdf") // -- needed for node v14 and below -const toBase64 = str => Buffer.from(str).toString('base64') -const fromBase64 = str => Buffer.from(str, 'base64') - - -const cryptoProvider = new miscreant.PolyfillCryptoProvider(); -const hkdfSalt = Uint8Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x4b, 0xea, 0xd8, 0xdf, 0x69, 0x99, 0x08, 0x52, 0xc2, 0x02, 0xdb, 0x0e, 0x00, 0x97, 0xc1, 0xa1, 0x2e, 0xa6, 0x37, 0xd7, 0xe9, 0x6d,]); - -class EnigmaUtils { - constructor(apiUrl) { - this.consensusIoPubKey = null; // cache - this.apiUrl = apiUrl; - this.seed = EnigmaUtils.GenerateNewSeed(); - const { privkey, pubkey } = EnigmaUtils.GenerateNewKeyPairFromSeed(this.seed); - this.privkey = privkey; - this.pubkey = pubkey; - } - static GenerateNewKeyPair() { - return EnigmaUtils.GenerateNewKeyPairFromSeed(EnigmaUtils.GenerateNewSeed()); - } - static GenerateNewSeed() { - return new Uint8Array(Buffer.alloc(32, 0)) // We dont care about true random - } - static GenerateNewKeyPairFromSeed(seed) { - const { private: privkey, public: pubkey } = curve25519.generateKeyPair(seed); - return { privkey, pubkey }; - } - async getConsensusIoPubKey() { - if (this.consensusIoPubKey) return this.consensusIoPubKey - if (!this.getKey) { - this.getKey = get(this.apiUrl + "/reg/tx-key") - } - - const { result: { TxKey }, } = await this.getKey - this.consensusIoPubKey = fromBase64(TxKey); - return this.consensusIoPubKey; - } - async getTxEncryptionKey(nonce) { - // const consensusIoPubKey = await this.getConsensusIoPubKey(); - // const txEncryptionIkm = curve25519.sharedKey(this.privkey, consensusIoPubKey); - // const txEncryptionKey = crypto.hkdfSync("sha256", Uint8Array.from([...txEncryptionIkm, ...nonce]), hkdfSalt, '', 32) - // const { key: txEncryptionKey } = await hkdf.compute(Uint8Array.from([...txEncryptionIkm, ...nonce]), "SHA-256", 32, "", hkdfSalt) - // console.log(txEncryptionKey, 'txEncryptionKey', new Uint8Array(txEncryptionKey)) - const txEncryptionKey = fakeKey - return new Uint8Array(txEncryptionKey) - } - async encrypt(contractCodeHash, msg) { - const nonce = new Uint8Array(Buffer.alloc(32, 0)) // We dont care about true random - const txEncryptionKey = await this.getTxEncryptionKey(nonce); - const siv = await miscreant.SIV.importKey(txEncryptionKey, "AES-SIV", cryptoProvider); - const plaintext = toUtf8(contractCodeHash + JSON.stringify(msg)); - const ciphertext = await siv.seal(plaintext, [new Uint8Array()]); - // ciphertext = nonce(32) || wallet_pubkey(32) || ciphertext - return Uint8Array.from([...nonce, ...this.pubkey, ...ciphertext]); - } - async decrypt(ciphertext, nonce) { - var _a; - if (!((_a = ciphertext) === null || _a === void 0 ? void 0 : _a.length)) { - return new Uint8Array(); - } - const txEncryptionKey = await this.getTxEncryptionKey(nonce); - //sdk.log(`decrypt tx encryption key: ${Encoding.toHex(txEncryptionKey)}`); - const siv = await miscreant.SIV.importKey(txEncryptionKey, "AES-SIV", cryptoProvider); - const plaintext = await siv.open(ciphertext, [new Uint8Array()]); - return plaintext; - } - getPubkey() { - return Promise.resolve(this.pubkey); - } -} - -function toUtf8(str) { - return new TextEncoder().encode(str); -} - -function fromUtf8(data) { - return new TextDecoder("utf-8", { fatal: true }).decode(data); -} - -function toHex(data) { - let out = ""; - for (const byte of data) { - out += ("0" + byte.toString(16)).slice(-2); - } - return out; -} - -function fromHex(hexstring) { - if (hexstring.length % 2 !== 0) { - throw new Error("hex string length must be a multiple of 2"); - } - const out = new Uint8Array(hexstring.length / 2); - for (let i = 0; i < out.length; i++) { - const j = 2 * i; - const hexByteAsString = hexstring.slice(j, j + 2); - if (!hexByteAsString.match(/[0-9a-f]{2}/i)) { - throw new Error("hex string contains invalid characters"); - } - out[i] = parseInt(hexByteAsString, 16); - } - return out; -} - -EnigmaUtils.fromHex = fromHex -EnigmaUtils.toHex = toHex -EnigmaUtils.toUtf8 = toUtf8 -EnigmaUtils.fromUtf8 = fromUtf8 -EnigmaUtils.fromBase64 = fromBase64 -EnigmaUtils.toBase64 = toBase64 - -module.exports = EnigmaUtils - -const fakeKey = new Uint8Array([248, 24, 153, 160, 20, 71, 22, 226, 185, 239, 57, 17, 11, 65, 67, 231, 36, 199, 102, 223, 164, 45, 133, 137, 223, 33, 119, 169, 155, 169, 194, 224]).buffer \ No newline at end of file diff --git a/projects/helper/utils/graphql.js b/projects/helper/utils/graphql.js deleted file mode 100644 index 8860b580cd2..00000000000 --- a/projects/helper/utils/graphql.js +++ /dev/null @@ -1,9 +0,0 @@ -const axios = require("axios"); - -async function request(endpoint, query, { variables, withMetadata = false, headers } = {}) { - const { data: result } = await axios.post(endpoint, { query, variables }, { headers }) - if (result.errors) throw new Error(result.errors[0].message) - return withMetadata ? result : result.data -} - -module.exports = { request } \ No newline at end of file diff --git a/projects/helper/utils/pact.js b/projects/helper/utils/pact.js deleted file mode 100644 index 2c9de0da5b7..00000000000 --- a/projects/helper/utils/pact.js +++ /dev/null @@ -1,123 +0,0 @@ -const blake = require("blakejs") - -function prepareExecCmd(pactCode, meta, networkId) { - const cmdJSON = { - networkId, - payload: { - exec: { - data: {}, - code: pactCode - } - }, - signers: [], - meta, - nonce: JSON.stringify(new Date().toISOString()) - }; - const cmd = JSON.stringify(cmdJSON); - const sigs = attachSig(cmd); - return mkSingleCmd(sigs, cmd); -} - -/** - * Makes a single command given signed data. - * @param sigs {array} - array of signature objects, see 'sign' - * @param cmd {string} - stringified JSON blob used to create hash - * @return valid Pact API command for send or local use. - */ -function mkSingleCmd(sigs, cmd) { - return { - hash: sigs[0].hash, - sigs: [], - cmd - }; -} - -function attachSig(msg) { - var hshBin = hashBin(msg); - var hsh = b64urlEncodeArr(hshBin); - return [{ hash: hsh, sig: undefined }] -} - - -/** - * Perform blake2b256 hashing. - */ -function hashBin(s) { - return blake.blake2b(s, null, 32); -} - -function b64urlEncodeArr(input) { - return b64url.encode(uint8ArrayToStr(input)); -} - -function uint8ArrayToStr(a) { - return String.fromCharCode.apply(null, new Uint16Array(a)); -} - -const b64url = (function () { - - 'use strict'; - - var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_='; - - function InvalidCharacterError(message) { - this.message = message; - } - InvalidCharacterError.prototype = new Error(); - InvalidCharacterError.prototype.name = 'InvalidCharacterError'; - - // encoder - // [https://gist.github.com/999166] by [https://github.com/nignag] - function base64UrlEncode(input) { - var str = String(input); - for ( - // initialize result and counter - var block, charCode, idx = 0, map = chars, output = ''; - // if the next str index does not exist: - // change the mapping table to "=" - // check if d has no fractional digits - // str.charAt (idx | 0) || (map = '=', idx % 1); - str.charAt(idx | 0); - // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 - output += map.charAt(63 & block >> 8 - idx % 1 * 8) - ) { - charCode = str.charCodeAt(idx += 3 / 4); - if (charCode > 0xFF) { - throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range."); - } - block = block << 8 | charCode; - } - return output; - } - - // decoder - // [https://gist.github.com/1020396] by [https://github.com/atk] - function base64UrlDecode(input) { - var str = (String(input)).replace(/[=]+$/, ''); // #31: ExtendScript bad parse of /= - if (str.length % 4 === 1) { - throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); - } - for ( - // initialize result and counters - var bc = 0, bs, buffer, idx = 0, output = ''; - // get next character - buffer = str.charAt(idx++); // eslint-disable-line no-cond-assign - // character found in table? initialize bit storage and add its ascii value; - ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, - // and if not first of each 4 characters, - // convert the first 8 bits to one ascii character - bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 - ) { - // try to find character in table (0-63, not found => -1) - buffer = chars.indexOf(buffer); - } - return output; - } - - return { encode: base64UrlEncode, decode: base64UrlDecode }; - -})() - -module.exports = { - prepareExecCmd -} \ No newline at end of file diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js deleted file mode 100644 index 084636375e0..00000000000 --- a/projects/helper/utils/solana/layout.js +++ /dev/null @@ -1,93 +0,0 @@ - -const { PublicKey } = require("@solana/web3.js"); -const { parseLido, parseLidoValidatorList } = require('./layouts/lido') -const { parsePhoenix } = require('./layouts/phoenix-dex') -const { RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM, RAYDIUM_STABLE_STATE_LAYOUT_V1, RAYDIUM_POSITION_INFO_LAYOUT } = require('./layouts/raydium-layout') -const { INVESTIN_FUND_DATA, } = require('./layouts/investin-layout') -const { MARKET_STATE_LAYOUT_V3, OPEN_ORDERS_LAYOUT_V2, MARKET_STATE_LAYOUT_V3_MINIMAL } = require('./layouts/openbook-layout') -const { ReserveLayout, ReserveLayoutLarix, ReserveLayoutSendit, MintLayout, AccountLayout, TokenSwapLayout, ESOLStakePoolLayout, PARLAY_LAYOUT_PARTIAL, HH_PARI_LAYOUT_PARTIAL, ACCESS_LAYOUT, - METEORA_STABLE_SWAP_LAYOUT, ZEUS_GUARDIAN_SETTING_LAYOUT, -} = require('./layouts/mixed-layout'); -const { SCN_STAKE_POOL, TOKEN_LAYOUT, } = require("./layouts/scnSOL"); -const { SANCTUM_INFINITY } = require("./layouts/sanctum-infinity-layout"); -const { parseSanctumLstStateList } = require("./layouts/sanctum-validators-lsts-layout"); -const { STAKE_POOL_PARTIAL } = require("./layouts/stake-pool-partial-layout"); -const { STAKE_POOL_LAYOUT } = require("./layouts/stakePool"); -const { JITO_VAULT_LAYOUT, VAULT_OPERATOR_DELEGATION_LAYOUT } = require("./layouts/jito-layout"); -const { BYREAL_LIQUIDITY_STATE_LAYOUT_CLMM } = require("./layouts/byreal-layout"); -const { PANCAKESWAP_V3_POOL_LAYOUT } = require("./layouts/pancakeswap-v3-layout"); - -const parseReserve = (info) => { - const pubkey = PublicKey.default - const { data } = info; - const buffer = Buffer.from(data); - const reserve = ReserveLayout.decode(buffer); - - if (reserve.lastUpdate.slot.isZero()) { - return null; - } - - const details = { - pubkey, - account: { - ...info, - }, - info: reserve, - }; - - return details; -} - - -const defaultParseLayout = Layout => info => { - const { data } = info; - const buffer = Buffer.from(data); - return Layout.decode(buffer); -} - -const customDecoders = { - tokenAccount: defaultParseLayout(TOKEN_LAYOUT), - reserve: parseReserve, - senditReserve: defaultParseLayout(ReserveLayoutSendit), - lido: parseLido, - lidoValidatorList: parseLidoValidatorList, - mint: defaultParseLayout(MintLayout), - account: defaultParseLayout(AccountLayout), - tokenSwap: defaultParseLayout(TokenSwapLayout), - larixReserve: defaultParseLayout(ReserveLayoutLarix), - ESOLStakePool: defaultParseLayout(ESOLStakePoolLayout), - investinFund: defaultParseLayout(INVESTIN_FUND_DATA), - openbook: defaultParseLayout(MARKET_STATE_LAYOUT_V3), - 'openbook-minimal': defaultParseLayout(MARKET_STATE_LAYOUT_V3_MINIMAL), - openbookOpenOrders: defaultParseLayout(OPEN_ORDERS_LAYOUT_V2), - // raydiumLPv4: defaultParseLayout(RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4), - raydiumCLMM: defaultParseLayout(RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM), - raydiumPositionInfo: defaultParseLayout(RAYDIUM_POSITION_INFO_LAYOUT), - raydiumLPStable: defaultParseLayout(RAYDIUM_STABLE_STATE_LAYOUT_V1), - scnStakePool: defaultParseLayout(SCN_STAKE_POOL), - fluxbeam: defaultParseLayout(TokenSwapLayout), - phoenix: parsePhoenix, - sanctumInfinity: defaultParseLayout(SANCTUM_INFINITY), - sanctumValidatorLsts: parseSanctumLstStateList, - stakePoolPartial: defaultParseLayout(STAKE_POOL_PARTIAL), - stakePool: defaultParseLayout(STAKE_POOL_LAYOUT), - hhParlay: defaultParseLayout(PARLAY_LAYOUT_PARTIAL), - hhPari: defaultParseLayout(HH_PARI_LAYOUT_PARTIAL), - access: defaultParseLayout(ACCESS_LAYOUT), - jitoVault: defaultParseLayout(JITO_VAULT_LAYOUT), - jitoVaultOperatorDelegation: defaultParseLayout(VAULT_OPERATOR_DELEGATION_LAYOUT), - meteoraStablePool: defaultParseLayout(METEORA_STABLE_SWAP_LAYOUT), - zeusGuardianSetting: defaultParseLayout(ZEUS_GUARDIAN_SETTING_LAYOUT), - byrealCLMM: defaultParseLayout(BYREAL_LIQUIDITY_STATE_LAYOUT_CLMM), - pancakeswapV3Pool: defaultParseLayout(PANCAKESWAP_V3_POOL_LAYOUT) -} - -function decodeAccount(layout, accountInfo) { - if (!accountInfo.data) throw new Error('Missing account data') - if (customDecoders[layout]) return customDecoders[layout](accountInfo) - throw new Error('Layout not found: ' + layout) -} - -module.exports = { - decodeAccount, -} \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/byreal-layout.js b/projects/helper/utils/solana/layouts/byreal-layout.js deleted file mode 100644 index d02e102f4d7..00000000000 --- a/projects/helper/utils/solana/layouts/byreal-layout.js +++ /dev/null @@ -1,70 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, - } = require('./layout-base') - - const BYREAL_REWARD_INFO = struct([ - u8("rewardState"), - u64("openTime"), - u64("endTime"), - u64("lastUpdateTime"), - u128("emissionsPerSecondX64"), - u64("rewardTotalEmissioned"), - u64("rewardClaimed"), - publicKey("tokenMint"), - publicKey("tokenVault"), - publicKey("authority"), - u128("rewardGrowthGlobalX64"), - ]); - -const BYREAL_LIQUIDITY_STATE_LAYOUT_CLMM = struct([ - blob(8), - u8("bump"), - publicKey("ammConfig"), - publicKey("creator"), - publicKey("mintA"), - publicKey("mintB"), - publicKey("vaultA"), - publicKey("vaultB"), - publicKey("observationId"), - u8("mintDecimalsA"), - u8("mintDecimalsB"), - u16("tickSpacing"), - u128("liquidity"), - u128("sqrtPriceX64"), - s32("tickCurrent"), - u16("observationIndex"), - u16("observationUpdateDuration"), - u128("feeGrowthGlobalX64A"), - u128("feeGrowthGlobalX64B"), - u64("protocolFeesTokenA"), - u64("protocolFeesTokenB"), - - u128("swapInAmountTokenA"), - u128("swapOutAmountTokenB"), - u128("swapInAmountTokenB"), - u128("swapOutAmountTokenA"), - - u8("status"), - - seq(u8(), 7, ""), - - seq(BYREAL_REWARD_INFO, 3, "rewardInfos"), - seq(u64(), 16, 'tickArrayBitmap'), - - u64("totalFeesTokenA"), - u64("totalFeesClaimedTokenA"), - u64("totalFeesTokenB"), - u64("totalFeesClaimedTokenB"), - - u64("fundFeesTokenA"), - u64("fundFeesTokenB"), - - u64("startTime"), - - seq(u64(), 15 * 4 - 3, "padding"), - ]) - - module.exports = { - BYREAL_LIQUIDITY_STATE_LAYOUT_CLMM - } - \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/investin-layout.js b/projects/helper/utils/solana/layouts/investin-layout.js deleted file mode 100644 index 3e8fe2799c9..00000000000 --- a/projects/helper/utils/solana/layouts/investin-layout.js +++ /dev/null @@ -1,129 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, BufferLayout, -} = require('./layout-base') -const BN = require("bn.js"); - -function U64F64(property = "u64F64") { - - const layout = BufferLayout.blob(16, property); - - const _decode = layout.decode.bind(layout); - const _encode = layout.encode.bind(layout); - - layout.decode = (buffer, offset) => { - const raw = new BN(_decode(buffer, offset), 10, 'le'); - - return raw / Math.pow(2, 64); - }; - - layout.encode = (key, buffer, offset) => - _encode(key.toBuffer(), buffer, offset); - - return layout; -} - -const INVESTIN_FUND_DATA = struct([ - u8('is_initialized'), - u8('number_of_active_investments'), - u8('no_of_investments'), - u8('signer_nonce'), - u8('no_of_margin_positions'), - u8('no_of_assets'), - u16('position_count'), - - u8('version'), - u8('is_private'), - u16('fund_v3_index'), - seq(u8(), 4, 'padding'), - - u64('min_amount'), - U64F64('min_return'), - U64F64('performance_fee_percentage'), - U64F64('total_amount'), - U64F64('prev_performance'), - - u64('amount_in_router'), - U64F64('performance_fee'), - publicKey('manager_account'), - publicKey('fund_pda'), - seq( - struct([ - u8('is_active'), - seq(u8(), 3, 'index'), - u8('mux'), - u8('is_on_mango'), - seq(u8(), 2, 'padding'), - u64('balance'), - u64('debt'), - publicKey('vault') - ]), - 8, 'tokens' - ), - seq(publicKey(), 10, 'investors'), - - struct([ - publicKey('mango_account'), - seq(u8(), 3, 'perp_markets'), - u8('padding'), - u8('deposit_index'), - u8('markets_active'), - u8('deposits_active'), - u8('xpadding'), - seq(u64(), 2, 'investor_debts'), - seq(u8('padding'), 24), - ], 'mango_positions'), - - - struct([ - u8('is_active'), - u8('is_split'), - u8('hop'), - u8('count'), - u8('token_in_slot'), - u8('token_out_slot'), - seq(u8('padding'), 2), - - publicKey('token_in'), - publicKey('token_out'), - u64('amount_in'), - u64('min_amount_out'), - ], 'guard'), - - seq( - struct([ - u64('price'), - u64('max_base_quantity'), - u64('max_quote_quantity'), - u64('client_order_id'), - u64('expiry_timestamp'), - u8('is_repost_processing'), - u8('perp_market_id'), - u8('side'), - u8('reduce_only'), - u8('limit'), - seq(u8(), 3, 'padding'), - ]), - 2, 'limit_orders' - ), - - struct([ - u64('last_updated'), - publicKey('volt_vault_id'), - u64('total_value_in_ul'), - u64('fc_token_balance'), - u64('ul_token_balance'), - u64('fc_token_debt'), - u64('ul_debt'), - u8('ul_token_slot'), - u8('is_active'), - seq(u8('padding'), 6), - ], 'friktion_vault'), - - seq(u8(), 1864, 'migration_additonal_padding'), -]) - - -module.exports = { - INVESTIN_FUND_DATA, -} - diff --git a/projects/helper/utils/solana/layouts/jito-layout.js b/projects/helper/utils/solana/layouts/jito-layout.js deleted file mode 100644 index ee88d0cbb09..00000000000 --- a/projects/helper/utils/solana/layouts/jito-layout.js +++ /dev/null @@ -1,72 +0,0 @@ -const { - struct, - u8, - u16, - seq, - publicKey, - u64, - } = require("./layout-base"); - -const JITO_VAULT_LAYOUT = struct([ - seq(u8(), 8, "discriminator"), - publicKey("base"), - publicKey("vrtMint"), - publicKey("supportedMint"), - u64("vrtSupply"), - u64("tokensDeposited"), - u64("depositCapacity"), - struct([ - u64("stakedAmount"), - u64("enqueuedForCooldownAmount"), - u64("coolingDownAmount"), - seq(u8(), 256, "reserved"), - ]), - u64("additionalAssetsNeedUnstaking"), - u64("vrtEnqueuedForCooldownAmount"), - u64("vrtCoolingDownAmount"), - u64("vrtReadyToClaimAmount"), - publicKey("admin"), - publicKey("delegationAdmin"), - publicKey("operatorAdmin"), - publicKey("ncnAdmin"), - publicKey("slasherAdmin"), - publicKey("capacityAdmin"), - publicKey("feeAdmin"), - publicKey("delegateAssetAdmin"), - publicKey("feeWallet"), - publicKey("mintBurnAdmin"), - publicKey("metadataAdmin"), - u64("vaultIndex"), - u64("ncnCount"), - u64("operatorCount"), - u64("slasherCount"), - u64("lastFeeChangeSlot"), - u64("lastFullStateUpdateSlot"), - u16("depositFeeBps"), - u16("withdrawalFeeBps"), - u16("nextWithdrawalFeeBps"), - u16("rewardFeeBps"), - u16("programFeeBps"), - u8("bump"), - u8("isPaused"), - u64("lastStartStateUpdateSlot"), - seq(u8(), 251, "reserved"), -]); - -const VAULT_OPERATOR_DELEGATION_LAYOUT = struct([ - seq(u8(), 8, "discriminator"), - publicKey("vault"), - publicKey("operator"), - struct([ - u64("stakedAmount"), - u64("enqueuedForCooldownAmount"), - u64("coolingDownAmount"), - seq(u8(), 256, "reserved"), - ], "delegationState"), - seq(u8(), 256, "reserved"), -]); - -module.exports = { - JITO_VAULT_LAYOUT, - VAULT_OPERATOR_DELEGATION_LAYOUT, -} \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/layout-base.js b/projects/helper/utils/solana/layouts/layout-base.js deleted file mode 100644 index 0c3126aa77c..00000000000 --- a/projects/helper/utils/solana/layouts/layout-base.js +++ /dev/null @@ -1,133 +0,0 @@ - -const BufferLayout = require("buffer-layout"); -const { PublicKey } = require("@solana/web3.js"); -const BN = require("bn.js"); -const { struct, s32, u8, u16, seq, blob, Layout, bits, u32, } = BufferLayout - -const publicKey = (property = "publicKey") => { - const publicKeyLayout = BufferLayout.blob(32, property); - - const _decode = publicKeyLayout.decode.bind(publicKeyLayout); - const _encode = publicKeyLayout.encode.bind(publicKeyLayout); - - publicKeyLayout.decode = (buffer, offset) => { - const data = _decode(buffer, offset); - return new PublicKey(data); - }; - - publicKeyLayout.encode = (key, buffer, offset) => - _encode(key.toBuffer(), buffer, offset); - - return publicKeyLayout; -}; - -/** - * Layout for a 64bit unsigned value - */ -const uint64 = (property = "uint64") => { - const layout = BufferLayout.blob(8, property); - - const _decode = layout.decode.bind(layout); - const _encode = layout.encode.bind(layout); - - layout.decode = (buffer, offset) => { - const data = _decode(buffer, offset); - return new BN( - [...data] - .reverse() - .map((i) => `00${i.toString(16)}`.slice(-2)) - .join(""), - 16 - ); - }; - - layout.encode = (num, buffer, offset) => { - const a = num.toArray().reverse(); - let b = Buffer.from(a); - if (b.length !== 8) { - const zeroPad = Buffer.alloc(8); - b.copy(zeroPad); - b = zeroPad; - } - return _encode(b, buffer, offset); - }; - - return layout; -}; - -const u64 = uint64 - -const uint128 = (property = "uint128") => { - const layout = BufferLayout.blob(16, property); - - const _decode = layout.decode.bind(layout); - const _encode = layout.encode.bind(layout); - - layout.decode = (buffer, offset) => { - const data = _decode(buffer, offset); - return new BN( - [...data] - .reverse() - .map((i) => `00${i.toString(16)}`.slice(-2)) - .join(""), - 16 - ); - }; - - layout.encode = (num, buffer, offset) => { - const a = num.toArray().reverse(); - let b = Buffer.from(a); - if (b.length !== 16) { - const zeroPad = Buffer.alloc(16); - b.copy(zeroPad); - b = zeroPad; - } - - return _encode(b, buffer, offset); - }; - - return layout; -}; -const u128 = uint128 -class OptionLayout extends BufferLayout.Layout { - constructor(layout, property) { - super(-1, property); - this.layout = layout; - this.discriminator = BufferLayout.u8(); - } - encode(src, b, offset = 0) { - if (src === null || src === undefined) { - return this.discriminator.encode(0, b, offset); - } - this.discriminator.encode(1, b, offset); - return this.layout.encode(src, b, offset + 1) + 1; - } - decode(b, offset = 0) { - const discriminator = this.discriminator.decode(b, offset); - if (discriminator === 0) { - return null; - } - else if (discriminator === 1) { - return this.layout.decode(b, offset + 1); - } - throw new Error('Invalid option ' + this.property); - } - getSpan(b, offset = 0) { - const discriminator = this.discriminator.decode(b, offset); - if (discriminator === 0) { - return 1; - } - else if (discriminator === 1) { - return this.layout.getSpan(b, offset + 1) + 1; - } - throw new Error('Invalid option ' + this.property); - } -} - -function option(layout, property) { - return new OptionLayout(layout, property); -} - -module.exports = { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, BufferLayout, option, -} \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/lido.js b/projects/helper/utils/solana/layouts/lido.js deleted file mode 100644 index 3d64f179d7e..00000000000 --- a/projects/helper/utils/solana/layouts/lido.js +++ /dev/null @@ -1,249 +0,0 @@ - -// info taken from https://github.com/lidofinance/solido-sdk -const { deserializeUnchecked } = require('borsh') - -class Lido { - constructor(data) { - Object.assign(this, data); - } -} - -class RewardDistribution { - constructor(data) { - Object.assign(this, data); - } -} - -class FeeRecipients { - constructor(data) { - Object.assign(this, data); - } -} - -class ExchangeRate { - constructor(data) { - Object.assign(this, data); - } -} - -class Metrics { - constructor(data) { - Object.assign(this, data); - } -} - -class LamportsHistogram { - constructor(data) { - Object.assign(this, data); - } -} - -class WithdrawMetric { - constructor(data) { - Object.assign(this, data); - } -} - -class ListHeader { - constructor(data) { - Object.assign(this, data); - } -} - -class SeedRange { - constructor(data) { - Object.assign(this, data); - } -} - -class ValidatorClass { - constructor(data) { - Object.assign(this, data); - } -} - -class AccountList { - constructor(data) { - Object.assign(this, data); - } -} - - -const accountInfoV2Scheme = new Map([ - [ - ExchangeRate, - { - kind: 'struct', - fields: [ - ['computed_in_epoch', 'u64'], - ['st_sol_supply', 'u64'], - ['sol_balance', 'u64'], - ], - }, - ], - [ - LamportsHistogram, - { - kind: 'struct', - fields: [ - ['counts1', 'u64'], - ['counts2', 'u64'], - ['counts3', 'u64'], - ['counts4', 'u64'], - ['counts5', 'u64'], - ['counts6', 'u64'], - ['counts7', 'u64'], - ['counts8', 'u64'], - ['counts9', 'u64'], - ['counts10', 'u64'], - ['counts11', 'u64'], - ['counts12', 'u64'], - ['total', 'u64'], - ], - }, - ], - [ - WithdrawMetric, - { - kind: 'struct', - fields: [ - ['total_st_sol_amount', 'u64'], - ['total_sol_amount', 'u64'], - ['count', 'u64'], - ], - }, - ], - [ - Metrics, - { - kind: 'struct', - fields: [ - ['fee_treasury_sol_total', 'u64'], - ['fee_validation_sol_total', 'u64'], - ['fee_developer_sol_total', 'u64'], - ['st_sol_appreciation_sol_total', 'u64'], - ['fee_treasury_st_sol_total', 'u64'], - ['fee_validation_st_sol_total', 'u64'], - ['fee_developer_st_sol_total', 'u64'], - ['deposit_amount', LamportsHistogram], - ['withdraw_amount', WithdrawMetric], - ], - }, - ], - [ - RewardDistribution, - { - kind: 'struct', - fields: [ - ['treasury_fee', 'u32'], - ['developer_fee', 'u32'], - ['st_sol_appreciation', 'u32'], - ], - }, - ], - [ - FeeRecipients, - { - kind: 'struct', - fields: [ - ['treasury_account', [32]], - ['developer_account', [32]], - ], - }, - ], - [ - Lido, - { - kind: 'struct', - fields: [ - ['account_type', 'u8'], - - ['lido_version', 'u8'], - - ['manager', [32]], - - ['st_sol_mint', [32]], - - ['exchange_rate', ExchangeRate], - - ['sol_reserve_account_bump_seed', 'u8'], - ['stake_authority_bump_seed', 'u8'], - ['mint_authority_bump_seed', 'u8'], - - ['reward_distribution', RewardDistribution], - - ['fee_recipients', FeeRecipients], - - ['metrics', Metrics], - - ['validator_list', [32]], - - ['maintainer_list', [32]], - - ['max_commission_percentage', 'u8'], - ], - }, - ], -]); - -const validatorsSchema = new Map([ - [ - ListHeader, - { - kind: 'struct', - fields: [ - ['account_type', 'u8'], - ['lido_version', 'u8'], - ['max_entries', 'u32'], - ], - }, - ], - [ - SeedRange, - { - kind: 'struct', - fields: [ - ['begin', 'u64'], - ['end', 'u64'], - ], - }, - ], - [ - ValidatorClass, - { - kind: 'struct', - fields: [ - ['vote_account_address', [32]], - ['stake_seeds', SeedRange], - ['unstake_seeds', SeedRange], - ['stake_accounts_balance', 'u64'], - ['unstake_accounts_balance', 'u64'], - ['effective_stake_balance', 'u64'], - ['active', 'u8'], - ], - }, - ], - [ - AccountList, - { - kind: 'struct', - fields: [ - ['header', ListHeader], - ['entries', [ValidatorClass]], - ], - }, - ], -]) - -function parseLido(accountInfo) { - return deserializeUnchecked(accountInfoV2Scheme, Lido, accountInfo.data,); -} - -function parseLidoValidatorList(accountInfo) { - return deserializeUnchecked(validatorsSchema, AccountList, accountInfo.data,); -} - -module.exports = { - parseLido, - parseLidoValidatorList, -} \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/mixed-layout.js b/projects/helper/utils/solana/layouts/mixed-layout.js deleted file mode 100644 index ef72537cfca..00000000000 --- a/projects/helper/utils/solana/layouts/mixed-layout.js +++ /dev/null @@ -1,420 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, BufferLayout, - option, } = require('./layout-base') - -const LastUpdateLayout = BufferLayout.struct( - [uint64("slot"), BufferLayout.u8("stale")], - "lastUpdate" -); - -const ReserveLayout = BufferLayout.struct([ - BufferLayout.u8("version"), - - LastUpdateLayout, - - publicKey("lendingMarket"), - - BufferLayout.struct( - [ - publicKey("mintPubkey"), - BufferLayout.u8("mintDecimals"), - publicKey("supplyPubkey"), - // @FIXME: oracle option - // TODO: replace u32 option with generic equivalent - // BufferLayout.u32('oracleOption'), - publicKey("pythOracle"), - publicKey("switchboardOracle"), - uint64("availableAmount"), - uint128("borrowedAmountWads"), - uint128("cumulativeBorrowRateWads"), - uint128("marketPrice"), - ], - "liquidity" - ), - - BufferLayout.struct( - [ - publicKey("mintPubkey"), - uint64("mintTotalSupply"), - publicKey("supplyPubkey"), - ], - "collateral" - ), - - BufferLayout.struct( - [ - BufferLayout.u8("optimalUtilizationRate"), - BufferLayout.u8("loanToValueRatio"), - BufferLayout.u8("liquidationBonus"), - BufferLayout.u8("liquidationThreshold"), - BufferLayout.u8("minBorrowRate"), - BufferLayout.u8("optimalBorrowRate"), - BufferLayout.u8("maxBorrowRate"), - BufferLayout.struct( - [ - uint64("borrowFeeWad"), - uint64("flashLoanFeeWad"), - BufferLayout.u8("hostFeePercentage"), - ], - "fees" - ), - uint64("depositLimit"), - uint64("borrowLimit"), - publicKey("feeReceiver"), - ], - "config" - ), - - BufferLayout.blob(256, "padding"), -]); - -const ReserveLayoutLarix = BufferLayout.struct( - [ - BufferLayout.u8('version'), - - LastUpdateLayout, - - publicKey('lendingMarket'), - - BufferLayout.struct( - [ - publicKey('mintPubkey'), - BufferLayout.u8('mintDecimals'), - publicKey('supplyPubkey'), - publicKey('feeReceiver'), - BufferLayout.u8("usePythOracle"), - publicKey('params_1'), - publicKey("params_2"), - uint64('availableAmount'), - uint128('borrowedAmountWads'), - uint128('cumulativeBorrowRateWads'), - uint128('marketPrice'), - uint128('ownerUnclaimed'), - ], - 'liquidity', - ), - - BufferLayout.struct( - [ - publicKey('mintPubkey'), - uint64('mintTotalSupply'), - publicKey('supplyPubkey'), - ], - 'collateral' - ), - - BufferLayout.struct( - [ - BufferLayout.u8('optimalUtilizationRate'), - BufferLayout.u8('loanToValueRatio'), - BufferLayout.u8('liquidationBonus'), - BufferLayout.u8('liquidationThreshold'), - BufferLayout.u8('minBorrowRate'), - BufferLayout.u8('optimalBorrowRate'), - BufferLayout.u8('maxBorrowRate'), - BufferLayout.struct( - // TODO: fix flash loan fee wad - [ - uint64('borrowFeeWad'), - uint64('borrowInterestFeeWad'), - uint64("flashLoanFeeWad"), - BufferLayout.u8('hostFeePercentage'), - BufferLayout.u8('hostFeeReceiverCount'), - BufferLayout.blob(32 * 5, 'hostFeeReceivers'), - ], - 'fees', - ), - BufferLayout.u8("depositPaused"), - BufferLayout.u8("borrowPaused"), - BufferLayout.u8("liquidationPaused"), - ], - 'config' - ), - BufferLayout.struct( - [ - publicKey("unCollSupply"), - uint128('lTokenMiningIndex'), - uint128('borrowMiningIndex'), - uint64("totalMiningSpeed"), - uint64("kinkUtilRate"), - ], - 'bonus' - ), - BufferLayout.u8("reentry"), - uint64("depositLimit"), - BufferLayout.u8("isLP"), - BufferLayout.blob(239, 'padding'), - ], -); - -const MintLayout = BufferLayout.struct([ - BufferLayout.u32('mintAuthorityOption'), - publicKey("mintAuthority"), - uint64('supply'), - BufferLayout.u8("decimals"), - BufferLayout.u8("isInitialized"), - BufferLayout.u32("freezeAuthorityOption"), - publicKey("freezeAuthority"), -]); - -const AccountLayout = BufferLayout.struct([ - publicKey('mint'), - publicKey('owner'), - uint64('amount'), - BufferLayout.u32('delegateOption'), - publicKey('delegate'), - BufferLayout.u8('state'), - BufferLayout.u32('isNativeOption'), - uint64('isNative'), - uint64('delegatedAmount'), - BufferLayout.u32('closeAuthorityOption'), - publicKey('closeAuthority'), -]); - -const TokenSwapLayout = BufferLayout.struct([ - BufferLayout.u8("version"), - BufferLayout.u8("isInitialized"), - BufferLayout.u8("bumpSeed"), - publicKey("tokenProgramId"), - publicKey("tokenAccountA"), - publicKey("tokenAccountB"), - publicKey("tokenPool"), - publicKey("mintA"), - publicKey("mintB"), - publicKey("feeAccount"), - BufferLayout.blob(8, "tradeFeeNumerator"), - BufferLayout.blob(8, "tradeFeeDenominator"), - BufferLayout.blob(8, "ownerTradeFeeNumerator"), - BufferLayout.blob(8, "ownerTradeFeeDenominator"), - BufferLayout.blob(8, "ownerWithdrawFeeNumerator"), - BufferLayout.blob(8, "ownerWithdrawFeeDenominator"), - BufferLayout.blob(8, "hostFeeNumerator"), - BufferLayout.blob(8, "hostFeeDenominator"), - BufferLayout.u8("curveType"), - publicKey("curveParameters"), -]) - - -const Hub3Layout = BufferLayout.struct([ - publicKey("issuerKey"), - u64("price"), - u64("totalShares"), - u64("totalFees"), - u8("bump"), - u32("holders"), - u8("migration"), // bool - u64("a"), - u64("b"), - u64("d"), -]) - -const eSOL_feeFields = [u64('denominator'), u64('numerator')]; -const eSOL_rateOfExchangeFields = [u64('denominator'), u64('numerator')]; - -const ESOLStakePoolLayout = BufferLayout.struct([ - // rustEnum(AccountTypeKind, 'accountType'), - u8('accountType'), - publicKey('manager'), - publicKey('staker'), - publicKey('stakeDepositAuthority'), - u8('stakeWithdrawBumpSeed'), - publicKey('validatorList'), - publicKey('reserveStake'), - publicKey('poolMint'), - publicKey('managerFeeAccount'), - publicKey('tokenProgramId'), - u64('totalLamports'), - u64('poolTokenSupply'), - u64('lastUpdateEpoch'), - struct([u64('unixTimestamp'), u64('epoch'), publicKey('custodian')], 'lockup'), - struct(eSOL_feeFields, 'epochFee'), - option(struct(eSOL_feeFields), 'nextEpochFee'), - option(publicKey(), 'preferredDepositValidatorVoteAddress'), - option(publicKey(), 'preferredWithdrawValidatorVoteAddress'), - struct(eSOL_feeFields, 'stakeDepositFee'), - struct(eSOL_feeFields, 'stakeWithdrawalFee'), - option(struct(eSOL_feeFields), 'nextWithdrawalFee'), - u8('stakeReferralFee'), - option(publicKey(), 'solDepositAuthority'), - struct(eSOL_feeFields, 'solDepositFee'), - u8('solReferralFee'), - option(publicKey(), 'solWithdrawAuthority'), - struct(eSOL_feeFields, 'solWithdrawalFee'), - option(struct(eSOL_feeFields), 'nextSolWithdrawalFee'), - u64('lastEpochPoolTokenSupply'), - u64('lastEpochTotalLamports'), - option(struct(eSOL_rateOfExchangeFields), 'rateOfExchange'), - publicKey('treasuryFeeAccount'), - struct(eSOL_feeFields, 'treasuryFee'), - u64('totalLamportsLiquidity'), - u32("maxValidatorYieldPerEpochNumerator") -]); - - -const PARLAY_LAYOUT_PARTIAL = BufferLayout.struct([ - publicKey('mint'), - u32("entryCount"), - u64('entryCost'), -]); - -const HH_PARI_LAYOUT_PARTIAL = BufferLayout.struct([ - publicKey('mint'), - u64("closeTimestamp"), - u64("resolveTimestamp"), - u64("outcomeTimestamp"), - u16("creatorFee"), - u16("platformFee"), - u8('state'), - u8('outcome'), - BufferLayout.seq(u64(), u8().span, 'amounts'), -]); - -const ACCESS_LAYOUT = BufferLayout.struct([ - BufferLayout.u8('tag'), - BufferLayout.u8('bumpSeed'), - uint64('dailyInflation'), - publicKey('tokenMint'), - publicKey('authority'), - uint64('creationTime'), - uint64('totalStaked'), - uint64('totalStakedSnapshot'), - uint64('lastSnapshotOffset'), - uint128('ixGate'), - publicKey('freezeAuthority'), - uint128('adminIxGate'), - BufferLayout.u16('feeBasisPoints'), - uint64('lastFeeDistributionTime'), - BufferLayout.u32('feeRecipientsCount'), - BufferLayout.seq( - BufferLayout.struct([ - publicKey('owner'), - uint64('percentage'), - ]), - 10, - 'recipients' - ), -]); - -const bool = BufferLayout.u8 -// https://github.com/mercurial-finance/stable-swap-n-pool-js/blob/main/src/state.ts#L32 -const METEORA_STABLE_SWAP_LAYOUT = BufferLayout.struct([ - BufferLayout.u8('version'), - bool('isInitialized'), - BufferLayout.u8('nonce'), - u64('amplificationCoefficient'), - u64('feeNumerator'), - u64('adminFeeNumerator'), - BufferLayout.u32('tokenAccountsLength'), - u64('precisionFactor'), - BufferLayout.seq(u64(), 4, 'precisionMultipliers'), - BufferLayout.seq(publicKey(), 4, 'tokenAccounts'), - publicKey('poolMint'), - publicKey('adminTokenMint'), - BufferLayout.struct([ - bool('swapEnabled'), - bool('addLiquidityEnabled'), - ]), -]); - -const ZEUS_GUARDIAN_SETTING_LAYOUT = BufferLayout.struct([ - publicKey("spl_token_escrow_authority"), - publicKey("spl_token_vault_authority"), - - u32("seed"), - u8("status"), - publicKey("guardian_certificate"), - - u64("max_quota"), - u64("available_quota"), - u64("accumulated_amount"), - u64("penalty_rate"), - u8("delegation_removal_lock_days"), - u64("quota_increasing_rate"), - - u64("created_at"), - u64("updated_at"), - - BufferLayout.seq(u8(), 64, "delegate_options"), // Adjust size based on typical vector length - - blob(128, "_padding"), // Ensuring 128-byte padding for safety -]); - -// SendIt Reserve Layout -const ReserveLayoutSendit = BufferLayout.struct([ - BufferLayout.u8("version"), - LastUpdateLayout, - publicKey("lendingMarket"), - - // Liquidity section - publicKey("liquidityMintPubkey"), - BufferLayout.u8("liquidityMintDecimals"), - publicKey("liquiditySupplyPubkey"), - publicKey("liquidityPythOracle"), - publicKey("liquiditySwitchboardOracle"), - uint64("liquidityAvailableAmount"), - uint128("liquidityBorrowedAmountWads"), - uint128("liquidityCumulativeBorrowRateWads"), - uint128("liquidityMarketPrice"), - - // Collateral section - publicKey("collateralMintPubkey"), - uint64("collateralMintTotalSupply"), - publicKey("collateralSupplyPubkey"), - - // Config section - BufferLayout.u8("optimalUtilizationRate"), - BufferLayout.u8("loanToValueRatio"), - BufferLayout.u8("liquidationBonus"), - BufferLayout.u8("liquidationThreshold"), - BufferLayout.u8("minBorrowRate"), - BufferLayout.u8("optimalBorrowRate"), - BufferLayout.u8("maxBorrowRate"), - uint64("borrowFeeWad"), - uint64("flashLoanFeeWad"), - BufferLayout.u8("hostFeePercentage"), - uint64("depositLimit"), - uint64("borrowLimit"), - publicKey("feeReceiver"), - BufferLayout.u8("protocolLiquidationFee"), - BufferLayout.u8("protocolTakeRate"), - uint128("accumulatedProtocolFeesWads"), - uint64("addedBorrowWeightBPS"), - uint128("liquiditySmoothedMarketPrice"), - BufferLayout.u8("reserveType"), - BufferLayout.u8("maxUtilizationRate"), - uint64("superMaxBorrowRate"), - BufferLayout.u8("maxLiquidationBonus"), - BufferLayout.u8("maxLiquidationThreshold"), - uint64("scaledPriceOffsetBPS"), - publicKey("extraOracle"), - BufferLayout.u8("liquidityExtraMarketPriceFlag"), - uint128("liquidityExtraMarketPrice"), - uint128("attributedBorrowValue"), - uint64("attributedBorrowLimitOpen"), - uint64("attributedBorrowLimitClose"), - - // VestingFees - uint128("rewardsPerSlot"), - uint64("lastUpdateSlotVesting"), - BufferLayout.u8("lastHourIndex"), - BufferLayout.seq(uint128(), 72, "hourlyDeltas"), - - // LiquidityIncentives - uint128("incentivesPerSlot"), - uint64("lastUpdateSlotIncentives"), - BufferLayout.u32("dailyDeltasLength"), - BufferLayout.seq(uint128(), 365, "dailyDeltas"), - uint128("cumulativeIncentivesPerShare"), - publicKey("incentiveTokenMint"), - publicKey("incentiveTokenAccount"), - BufferLayout.u8("incentiveTokenDecimals"), - publicKey("tokenProgramId"), - - BufferLayout.blob(17, "padding"), -]); - -module.exports = { - ReserveLayout, ReserveLayoutLarix, ReserveLayoutSendit, MintLayout, AccountLayout, TokenSwapLayout, ESOLStakePoolLayout, - PARLAY_LAYOUT_PARTIAL, HH_PARI_LAYOUT_PARTIAL, ACCESS_LAYOUT, METEORA_STABLE_SWAP_LAYOUT, ZEUS_GUARDIAN_SETTING_LAYOUT, -} - diff --git a/projects/helper/utils/solana/layouts/openbook-layout.js b/projects/helper/utils/solana/layouts/openbook-layout.js deleted file mode 100644 index d3cdb5a7e85..00000000000 --- a/projects/helper/utils/solana/layouts/openbook-layout.js +++ /dev/null @@ -1,136 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, -} = require('./layout-base') - - -class WideBits extends Layout { - constructor(property) { - super(8, property); - this._lower = bits(u32(), false); - this._upper = bits(u32(), false); - } - - addBoolean(property) { - if (this._lower.fields.length < 32) { - this._lower.addBoolean(property); - } else { - this._upper.addBoolean(property); - } - } - - decode(b, offset = 0) { - const lowerDecoded = this._lower.decode(b, offset); - const upperDecoded = this._upper.decode(b, offset + this._lower.span); - return { ...lowerDecoded, ...upperDecoded }; - } - - encode(src, b, offset = 0) { - return ( - this._lower.encode(src, b, offset) + - this._upper.encode(src, b, offset + this._lower.span) - ); - } -} - -const ACCOUNT_FLAGS_LAYOUT = new WideBits(); -ACCOUNT_FLAGS_LAYOUT.addBoolean('initialized'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('market'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('openOrders'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('requestQueue'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('eventQueue'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('bids'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('asks'); - -function accountFlagsLayout(property = 'accountFlags') { - return ACCOUNT_FLAGS_LAYOUT.replicate(property); -} - -const MARKET_STATE_LAYOUT_V3 = struct([ - blob(5), - - accountFlagsLayout('accountFlags'), - - publicKey('ownAddress'), - - u64('vaultSignerNonce'), - - publicKey('baseMint'), - publicKey('quoteMint'), - - publicKey('baseVault'), - u64('baseDepositsTotal'), - u64('baseFeesAccrued'), - - publicKey('quoteVault'), - u64('quoteDepositsTotal'), - u64('quoteFeesAccrued'), - - u64('quoteDustThreshold'), - - publicKey('requestQueue'), - publicKey('eventQueue'), - - publicKey('bids'), - publicKey('asks'), - - u64('baseLotSize'), - u64('quoteLotSize'), - - u64('feeRateBps'), - - u64('referrerRebatesAccrued'), - - publicKey('authority'), - publicKey('pruneAuthority'), - publicKey('consumeEventsAuthority'), - - blob(992), - - blob(7), -]); - - -const MARKET_STATE_LAYOUT_V3_MINIMAL = struct([ - publicKey('baseMint'), - publicKey('quoteMint'), - - publicKey('baseVault'), - u64('baseDepositsTotal'), - u64('baseFeesAccrued'), - - publicKey('quoteVault'), - u64('quoteDepositsTotal'), - u64('quoteFeesAccrued'), -]); - -const OPEN_ORDERS_LAYOUT_V2 = struct([ - blob(5), - - accountFlagsLayout('accountFlags'), - - publicKey('market'), - publicKey('owner'), - - u64('baseTokenFree'), - u64('baseTokenTotal'), - u64('quoteTokenFree'), - u64('quoteTokenTotal'), - - u128('freeSlotBits'), - u128('isBidBits'), - - seq(u128(), 128, 'orders'), - seq(u64(), 128, 'clientIds'), - - u64('referrerRebatesAccrued'), - - blob(7), -]); - - -module.exports = { - MARKET_STATE_LAYOUT_V3_MINIMAL, - MARKET_STATE_LAYOUT_V3, - OPEN_ORDERS_LAYOUT_V2 -} - diff --git a/projects/helper/utils/solana/layouts/pancakeswap-v3-layout.js b/projects/helper/utils/solana/layouts/pancakeswap-v3-layout.js deleted file mode 100644 index 28d6c87af64..00000000000 --- a/projects/helper/utils/solana/layouts/pancakeswap-v3-layout.js +++ /dev/null @@ -1,37 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, -} = require('./layout-base') - -const PANCAKESWAP_V3_POOL_LAYOUT = struct([ - blob(8), - u8("bump"), - publicKey("ammConfig"), - publicKey("creator"), - publicKey("mintA"), - publicKey("mintB"), - publicKey("vaultA"), - publicKey("vaultB"), - publicKey("observationId"), - u8("mintDecimalsA"), - u8("mintDecimalsB"), - u16("tickSpacing"), - u128("liquidity"), - u128("sqrtPriceX64"), - s32("tickCurrent"), - u16("observationIndex"), - u16("observationUpdateDuration"), - u128("feeGrowthGlobalX64A"), - u128("feeGrowthGlobalX64B"), - u64("protocolFeesTokenA"), - u64("protocolFeesTokenB"), - u128("swapInAmountTokenA"), - u128("swapOutAmountTokenB"), - u128("swapInAmountTokenB"), - u128("swapOutAmountTokenA"), - u8("status"), - seq(u8(), 7, "padding"), -]) - -module.exports = { - PANCAKESWAP_V3_POOL_LAYOUT, -} \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/phoenix-dex.js b/projects/helper/utils/solana/layouts/phoenix-dex.js deleted file mode 100644 index 9df740147d2..00000000000 --- a/projects/helper/utils/solana/layouts/phoenix-dex.js +++ /dev/null @@ -1,37 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, -} = require('./layout-base') - -const TOKEN_PARAMS = [ - u32('decimals'), - u32('vaultBump'), - publicKey('mintKey'), - publicKey('vaultKey'), -] - -// https://github.com/Ellipsis-Labs/phoenix-sdk/blob/4663c670bb8951b4cbf5a062c54de5cd638b231c/typescript/phoenix-sdk/src/types/MarketHeader.ts#L35 -const MARKET_STATE_HEADER = struct([ - - u64('discriminant'), - u64('status'), - - struct([ - u64('bidsSize'), - u64('asksSize'), - u64('numSeats'), - ], 'marketSizeParams'), - struct(TOKEN_PARAMS, 'baseParams'), - u64('baseLotSize'), - struct(TOKEN_PARAMS, 'quoteParams'), - u64('quoteLotSize'), -]); - -const parsePhoenix = (account) => { - const { data } = account; - const buffer = Buffer.from(data.slice(0, MARKET_STATE_HEADER.span)); - return MARKET_STATE_HEADER.decode(buffer); -} - -module.exports = { - parsePhoenix, -} \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/raydium-layout.js b/projects/helper/utils/solana/layouts/raydium-layout.js deleted file mode 100644 index b2ac5bbf61d..00000000000 --- a/projects/helper/utils/solana/layouts/raydium-layout.js +++ /dev/null @@ -1,223 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, -} = require('./layout-base') -/* -const RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4 = struct([ - u64("status"), - u64("nonce"), - u64("maxOrder"), - u64("depth"), - u64("baseDecimal"), - u64("quoteDecimal"), - u64("state"), - u64("resetFlag"), - u64("minSize"), - u64("volMaxCutRatio"), - u64("amountWaveRatio"), - u64("baseLotSize"), - u64("quoteLotSize"), - u64("minPriceMultiplier"), - u64("maxPriceMultiplier"), - u64("systemDecimalValue"), - u64("minSeparateNumerator"), - u64("minSeparateDenominator"), - u64("tradeFeeNumerator"), - u64("tradeFeeDenominator"), - u64("pnlNumerator"), - u64("pnlDenominator"), - u64("swapFeeNumerator"), - u64("swapFeeDenominator"), - u64("baseNeedTakePnl"), - u64("quoteNeedTakePnl"), - u64("quoteTotalPnl"), - u64("baseTotalPnl"), - u128("quoteTotalDeposited"), - u128("baseTotalDeposited"), - u128("swapBaseInAmount"), - u128("swapQuoteOutAmount"), - u64("swapBase2QuoteFee"), - u128("swapQuoteInAmount"), - u128("swapBaseOutAmount"), - u64("swapQuote2BaseFee"), - // amm vault - publicKey("baseVault"), - publicKey("quoteVault"), - // mint - publicKey("baseMint"), - publicKey("quoteMint"), - publicKey("lpMint"), - // market - publicKey("openOrders"), - publicKey("marketId"), - publicKey("marketProgramId"), - publicKey("targetOrders"), - publicKey("withdrawQueue"), - publicKey("lpVault"), - publicKey("owner"), - // true circulating supply without lock up - u64("lpReserve"), - seq(u64(), 3, "padding"), -]) - - -const RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4_2 = struct([u64("status"), u64("nonce"), u64("orderNum"), u64("depth"), u64("coinDecimals"), u64("pcDecimals"), u64("state"), u64("resetFlag"), u64("minSize"), u64("volMaxCutRatio"), u64("amountWave"), u64("coinLotSize"), u64("pcLotSize"), u64("minPriceMultiplier"), u64("maxPriceMultiplier"), u64("sysDecimalValue"), struct([u64("minSeparateNumerator"), u64("minSeparateDenominator"), u64("tradeFeeNumerator"), u64("tradeFeeDenominator"), u64("pnlNumerator"), u64("pnlDenominator"), u64("swapFeeNumerator"), u64("swapFeeDenominator"),], "fees"), struct([u64("needTakePnlCoin"), u64("needTakePnlPc"), u64("totalPnlPc"), u64("totalPnlCoin"), u64("poolOpenTime"), u64("punishPcAmount"), u64("punishCoinAmount"), u64("orderbookToInitTime"), u128("swapCoinInAmount"), u128("swapPcOutAmount"), u64("swapTakePcFee"), u128("swapPcInAmount"), u128("swapCoinOutAmount"), u64("swapTakeCoinFee"),], "outPut"), publicKey("tokenCoin"), publicKey("tokenPc"), publicKey("coinMint"), publicKey("pcMint"), publicKey("lpMint"), publicKey("openOrders"), publicKey("market"), publicKey("serumDex"), publicKey("targetOrders"), publicKey("withdrawQueue"), publicKey("tokenTempLp"), publicKey("ammOwner"), u64("lpAmount"), u64("clientOrderId"), seq(u64(), 2, "padding"),]) */ - -const RAYDIUM_REWARD_INFO = struct([ - u8("rewardState"), - u64("openTime"), - u64("endTime"), - u64("lastUpdateTime"), - u128("emissionsPerSecondX64"), - u64("rewardTotalEmissioned"), - u64("rewardClaimed"), - publicKey("tokenMint"), - publicKey("tokenVault"), - publicKey("creator"), - u128("rewardGrowthGlobalX64"), -]) - -const RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM = struct([ - blob(8), - u8("bump"), - publicKey("ammConfig"), - publicKey("creator"), - publicKey("mintA"), - publicKey("mintB"), - publicKey("vaultA"), - publicKey("vaultB"), - publicKey("observationId"), - u8("mintDecimalsA"), - u8("mintDecimalsB"), - u16("tickSpacing"), - u128("liquidity"), - u128("sqrtPriceX64"), - s32("tickCurrent"), - u16("observationIndex"), - u16("observationUpdateDuration"), - u128("feeGrowthGlobalX64A"), - u128("feeGrowthGlobalX64B"), - u64("protocolFeesTokenA"), - u64("protocolFeesTokenB"), - - u128("swapInAmountTokenA"), - u128("swapOutAmountTokenB"), - u128("swapInAmountTokenB"), - u128("swapOutAmountTokenA"), - - u8("status"), - - seq(u8(), 7, ""), - - seq(RAYDIUM_REWARD_INFO, 3, "rewardInfos"), - seq(u64(), 16, 'tickArrayBitmap'), - - u64("totalFeesTokenA"), - u64("totalFeesClaimedTokenA"), - u64("totalFeesTokenB"), - u64("totalFeesClaimedTokenB"), - - u64("fundFeesTokenA"), - u64("fundFeesTokenB"), - - u64("startTime"), - - seq(u64(), 15 * 4 - 3, "padding"), -]) - -const RAYDIUM_STABLE_STATE_LAYOUT_V1 = struct([ - u64("accountType"), - u64("status"), - u64("nonce"), - u64("maxOrder"), - u64("depth"), - u64("baseDecimal"), - u64("quoteDecimal"), - u64("state"), - u64("resetFlag"), - u64("minSize"), - u64("volMaxCutRatio"), - u64("amountWaveRatio"), - u64("baseLotSize"), - u64("quoteLotSize"), - u64("minPriceMultiplier"), - u64("maxPriceMultiplier"), - u64("systemDecimalsValue"), - u64("abortTradeFactor"), - u64("priceTickMultiplier"), - u64("priceTick"), - // Fees - u64("minSeparateNumerator"), - u64("minSeparateDenominator"), - u64("tradeFeeNumerator"), - u64("tradeFeeDenominator"), - u64("pnlNumerator"), - u64("pnlDenominator"), - u64("swapFeeNumerator"), - u64("swapFeeDenominator"), - // OutPutData - u64("baseNeedTakePnl"), - u64("quoteNeedTakePnl"), - u64("quoteTotalPnl"), - u64("baseTotalPnl"), - u64("poolOpenTime"), - u64("punishPcAmount"), - u64("punishCoinAmount"), - u64("orderbookToInitTime"), - u128("swapBaseInAmount"), - u128("swapQuoteOutAmount"), - u128("swapQuoteInAmount"), - u128("swapBaseOutAmount"), - u64("swapQuote2BaseFee"), - u64("swapBase2QuoteFee"), - - publicKey("baseVault"), - publicKey("quoteVault"), - publicKey("baseMint"), - publicKey("quoteMint"), - publicKey("lpMint"), - - publicKey("modelDataAccount"), - publicKey("openOrders"), - publicKey("marketId"), - publicKey("marketProgramId"), - publicKey("targetOrders"), - publicKey("owner"), - seq(u64("padding"), 64, "padding"), -]) - -const KeyLayoutv4 = struct([ - publicKey('vaultA'), - publicKey('vaultB'), - publicKey('mintA'), - publicKey('mintB'), -]) - -const TokenAmountLayout = struct([ - u64('amount'), -]) - -const PositionRewardInfoLayout = struct([u128("growthInsideLastX64"), u64("rewardAmountOwed")]); -const RAYDIUM_POSITION_INFO_LAYOUT = struct([ - blob(8), - u8("bump"), - publicKey("nftMint"), - publicKey("poolId"), - - s32("tickLower"), - s32("tickUpper"), - u128("liquidity"), - u128("feeGrowthInsideLastX64A"), - u128("feeGrowthInsideLastX64B"), - u64("tokenFeesOwedA"), - u64("tokenFeesOwedB"), - - seq(PositionRewardInfoLayout, 3, "rewardInfos"), - - seq(u64(), 8, ""), -]); - - -module.exports = { - RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM, RAYDIUM_STABLE_STATE_LAYOUT_V1, - KeyLayoutv4, TokenAmountLayout, RAYDIUM_POSITION_INFO_LAYOUT -} diff --git a/projects/helper/utils/solana/layouts/sanctum-infinity-layout.js b/projects/helper/utils/solana/layouts/sanctum-infinity-layout.js deleted file mode 100644 index 42dbaeb8a33..00000000000 --- a/projects/helper/utils/solana/layouts/sanctum-infinity-layout.js +++ /dev/null @@ -1,37 +0,0 @@ -const { - struct, - s32, - u8, - u16, - seq, - blob, - Layout, - bits, - u32, - publicKey, - uint64, - u64, - uint128, - u128, - option, -} = require("./layout-base"); - -// https://github.com/igneous-labs/stake-pool-sdk/blob/master/src/stake-pool/schema.ts -const SANCTUM_INFINITY = struct([ - u64("totalSolValue"), - u16("tradingProtocolFeeBps"), - u16("lpProtocolFeeBps"), - u8("version"), - u8("isDisabled"), - u8("isRebalancing"), - u8("padding"), - publicKey("admin"), - publicKey("rebalanceAuthority"), - publicKey("protocolFeeBeneficiary"), - publicKey("pricingProgram"), - publicKey("lpTokenMint"), -]); - -module.exports = { - SANCTUM_INFINITY, -}; diff --git a/projects/helper/utils/solana/layouts/sanctum-validators-lsts-layout.js b/projects/helper/utils/solana/layouts/sanctum-validators-lsts-layout.js deleted file mode 100644 index 46d85aac925..00000000000 --- a/projects/helper/utils/solana/layouts/sanctum-validators-lsts-layout.js +++ /dev/null @@ -1,43 +0,0 @@ -const { - struct, - s32, - u8, - u16, - seq, - blob, - Layout, - bits, - u32, - publicKey, - uint64, - u64, - uint128, - u128, - option, -} = require("./layout-base"); - -const SANCTUM_LST_STATE = struct([ - u8("isInputDisabled"), - u8("poolReservesBump"), - u8("protocolFeeAccumulatorBump"), - seq(u8("padding"), 5), - u64("solValue"), - publicKey("mint"), - publicKey("solValueCalculator"), -]); - -const parseSanctumLstStateList = (account) => { - const { data, space } = account; - const buffer = Buffer.from(data); - const length = space / 80; - return seq( - SANCTUM_LST_STATE, - length, - "lstStateList" - ).decode(buffer); -} - - -module.exports = { - parseSanctumLstStateList, -}; diff --git a/projects/helper/utils/solana/layouts/scnSOL.js b/projects/helper/utils/solana/layouts/scnSOL.js deleted file mode 100644 index cdbbc2a24c9..00000000000 --- a/projects/helper/utils/solana/layouts/scnSOL.js +++ /dev/null @@ -1,63 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, option, -} = require('./layout-base') - - -const TOKEN_LAYOUT = struct([ - publicKey('mint'), - publicKey('owner'), - uint64('amount'), - u32('delegateOption'), - publicKey('delegate'), - u8('state'), - u32('isNativeOption'), - uint64('isNative'), - uint64('delegatedAmount'), - u32('closeAuthorityOption'), - publicKey('closeAuthority') -]) - -const Fee = [ - u64("denominator"), - u64("numerator"), -] - -const Lockup = [ - u64("unixtime"), - u64("epoch"), - publicKey("custodian"), -] - -// https://github.com/igneous-labs/stake-pool-sdk/blob/master/src/stake-pool/schema.ts -const SCN_STAKE_POOL = struct([ - u8("accountType"), - publicKey("manager"), - publicKey("staker"), - publicKey("depositAuthority"), - u8("withdrawBumpSeed"), - publicKey("validatorList"), - publicKey("reserveStake"), - publicKey("poolMint"), - publicKey("managerFeeAccount"), - publicKey("tokenProgramId"), - u64("totalStakeLamports"), - u64("poolTokenSupply"), - u64("lastUpdateEpoch"), - struct(Lockup, "lockup"), - struct(Fee, "fee"), - seq(struct(Fee), 1, "nextEpochFee"), - option(publicKey(), "preferredDepositValidatorVoteAddress"), - option(publicKey(), "preferredWithdrawValidatorVoteAddress"), - struct(Fee, "stakeDepositFee"), - struct(Fee, "withdrawalFee"), - seq(struct(Fee), 1, "nextWithdrawalFee"), - u8("stakeReferralFee"), - option(publicKey(), "solDepositAuthority"), - struct(Fee, "solDepositFee"), - u8("solReferralFee"), -]); - -module.exports = { - TOKEN_LAYOUT, - SCN_STAKE_POOL, -}; \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/stake-pool-partial-layout.js b/projects/helper/utils/solana/layouts/stake-pool-partial-layout.js deleted file mode 100644 index f1742ab38bc..00000000000 --- a/projects/helper/utils/solana/layouts/stake-pool-partial-layout.js +++ /dev/null @@ -1,21 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, option, -} = require('./layout-base') - -const STAKE_POOL_PARTIAL = struct([ - u8("accountType"), - publicKey("manager"), - publicKey("staker"), - publicKey("depositAuthority"), - u8("withdrawBumpSeed"), - publicKey("validatorList"), - publicKey("reserveStake"), - publicKey("poolMint"), - publicKey("managerFeeAccount"), - publicKey("tokenProgramId"), - u64("totalStakeLamports"), -]); - -module.exports = { - STAKE_POOL_PARTIAL, -}; \ No newline at end of file diff --git a/projects/helper/utils/solana/layouts/stakePool.js b/projects/helper/utils/solana/layouts/stakePool.js deleted file mode 100644 index 52b1107d0c9..00000000000 --- a/projects/helper/utils/solana/layouts/stakePool.js +++ /dev/null @@ -1,133 +0,0 @@ -const { - struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, -} = require('./layout-base') - -// https://github.com/solana-labs/solana-program-library/blob/master/stake-pool/js/src/layouts.ts - -const feeFields = [u64('denominator'), u64('numerator')]; - -// https://github.com/solana-labs/solana-program-library/blob/master/stake-pool/js/src/codecs.ts -class OptionLayout extends Layout { - // layout; - // discriminator; - - constructor(layout, property) { - super(-1, property); - this.layout = layout; - this.discriminator = u8(); - } - - encode(src, b, offset = 0) { - if (src === null || src === undefined) { - return this.discriminator.encode(0, b, offset); - } - this.discriminator.encode(1, b, offset); - return this.layout.encode(src, b, offset + 1) + 1; - } - - decode(b, offset = 0) { - const discriminator = this.discriminator.decode(b, offset); - if (discriminator === 0) { - return null; - } else if (discriminator === 1) { - return this.layout.decode(b, offset + 1); - } - throw new Error('Invalid option ' + this.property); - } - - getSpan(b, offset = 0) { - const discriminator = this.discriminator.decode(b, offset); - if (discriminator === 0) { - return 1; - } else if (discriminator === 1) { - return this.layout.getSpan(b, offset + 1) + 1; - } - throw new Error('Invalid option ' + this.property); - } -} - -function option(layout, property) { - return new OptionLayout(layout, property); -} - -class FutureEpochLayout extends Layout { - // layout: Layout; - // discriminator: Layout; - - constructor(layout, property) { - super(-1, property); - this.layout = layout; - this.discriminator = u8(); - } - - encode(src, b, offset = 0) { - if (src === null || src === undefined) { - return this.discriminator.encode(0, b, offset); - } - // This isn't right, but we don't typically encode outside of tests - this.discriminator.encode(2, b, offset); - return this.layout.encode(src, b, offset + 1) + 1; - } - - decode(b, offset = 0) { - const discriminator = this.discriminator.decode(b, offset); - if (discriminator === 0) { - return null; - } else if (discriminator === 1 || discriminator === 2) { - return this.layout.decode(b, offset + 1); - } - throw new Error('Invalid future epoch ' + this.property); - } - - getSpan(b, offset = 0) { - const discriminator = this.discriminator.decode(b, offset); - if (discriminator === 0) { - return 1; - } else if (discriminator === 1 || discriminator === 2) { - return this.layout.getSpan(b, offset + 1) + 1; - } - throw new Error('Invalid future epoch ' + this.property); - } -} - -function futureEpoch(layout, property) { - return new FutureEpochLayout(layout, property); -} - -const STAKE_POOL_LAYOUT = struct([ - u8('accountType'), - publicKey('manager'), - publicKey('staker'), - publicKey('stakeDepositAuthority'), - u8('stakeWithdrawBumpSeed'), - publicKey('validatorList'), - publicKey('reserveStake'), - publicKey('poolMint'), - publicKey('managerFeeAccount'), - publicKey('tokenProgramId'), - u64('totalLamports'), - u64('poolTokenSupply'), - u64('lastUpdateEpoch'), - struct([u64('unixTimestamp'), u64('epoch'), publicKey('custodian')], 'lockup'), - struct(feeFields, 'epochFee'), - futureEpoch(struct(feeFields), 'nextEpochFee'), - option(publicKey(), 'preferredDepositValidatorVoteAddress'), - option(publicKey(), 'preferredWithdrawValidatorVoteAddress'), - struct(feeFields, 'stakeDepositFee'), - struct(feeFields, 'stakeWithdrawalFee'), - futureEpoch(struct(feeFields), 'nextStakeWithdrawalFee'), - u8('stakeReferralFee'), - option(publicKey(), 'solDepositAuthority'), - struct(feeFields, 'solDepositFee'), - u8('solReferralFee'), - option(publicKey(), 'solWithdrawAuthority'), - struct(feeFields, 'solWithdrawalFee'), - futureEpoch(struct(feeFields), 'nextSolWithdrawalFee'), - u64('lastEpochPoolTokenSupply'), - u64('lastEpochTotalLamports'), -]); - -module.exports = { - STAKE_POOL_LAYOUT -} - diff --git a/projects/helper/utils/tick.js b/projects/helper/utils/tick.js deleted file mode 100644 index 16f6591d24e..00000000000 --- a/projects/helper/utils/tick.js +++ /dev/null @@ -1,173 +0,0 @@ - -const import_bn6 = require("bn.js"); - - -const tickToPrice = (tick) => { - const response = Math.pow(1.0001, tick) - - if (response === Infinity) - return tickToPriceBN(tick) - - return response -} - -function tickToPriceBN(tick) { - const sqrtPrice = tickIndexToSqrtPriceX64(tick) / 2 ** 64; - return Math.pow(sqrtPrice, 2); -} - -function signedShiftRight(n0, shiftBy, bitWidth) { - const twoN0 = n0.toTwos(bitWidth).shrn(shiftBy); - twoN0.imaskn(bitWidth - shiftBy + 1); - return twoN0.fromTwos(bitWidth - shiftBy); -} - -function tickIndexToSqrtPricePositive(tick) { - let ratio; - if ((tick & 1) !== 0) { - ratio = new import_bn6("79232123823359799118286999567"); - } else { - ratio = new import_bn6("79228162514264337593543950336"); - } - if ((tick & 2) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("79236085330515764027303304731")), 96, 256); - } - if ((tick & 4) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("79244008939048815603706035061")), 96, 256); - } - if ((tick & 8) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("79259858533276714757314932305")), 96, 256); - } - if ((tick & 16) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("79291567232598584799939703904")), 96, 256); - } - if ((tick & 32) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("79355022692464371645785046466")), 96, 256); - } - if ((tick & 64) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("79482085999252804386437311141")), 96, 256); - } - if ((tick & 128) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("79736823300114093921829183326")), 96, 256); - } - if ((tick & 256) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("80248749790819932309965073892")), 96, 256); - } - if ((tick & 512) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("81282483887344747381513967011")), 96, 256); - } - if ((tick & 1024) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("83390072131320151908154831281")), 96, 256); - } - if ((tick & 2048) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("87770609709833776024991924138")), 96, 256); - } - if ((tick & 4096) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("97234110755111693312479820773")), 96, 256); - } - if ((tick & 8192) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("119332217159966728226237229890")), 96, 256); - } - if ((tick & 16384) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("179736315981702064433883588727")), 96, 256); - } - if ((tick & 32768) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("407748233172238350107850275304")), 96, 256); - } - if ((tick & 65536) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("2098478828474011932436660412517")), 96, 256); - } - if ((tick & 131072) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("55581415166113811149459800483533")), 96, 256); - } - if ((tick & 262144) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("38992368544603139932233054999993551")), 96, 256); - } - return signedShiftRight(ratio, 32, 256); -} - -function tickIndexToSqrtPriceNegative(tickIndex) { - const tick = Math.abs(tickIndex); - let ratio; - if ((tick & 1) !== 0) { - ratio = new import_bn6("18445821805675392311"); - } else { - ratio = new import_bn6("18446744073709551616"); - } - if ((tick & 2) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("18444899583751176498")), 64, 256); - } - if ((tick & 4) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("18443055278223354162")), 64, 256); - } - if ((tick & 8) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("18439367220385604838")), 64, 256); - } - if ((tick & 16) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("18431993317065449817")), 64, 256); - } - if ((tick & 32) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("18417254355718160513")), 64, 256); - } - if ((tick & 64) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("18387811781193591352")), 64, 256); - } - if ((tick & 128) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("18329067761203520168")), 64, 256); - } - if ((tick & 256) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("18212142134806087854")), 64, 256); - } - if ((tick & 512) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("17980523815641551639")), 64, 256); - } - if ((tick & 1024) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("17526086738831147013")), 64, 256); - } - if ((tick & 2048) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("16651378430235024244")), 64, 256); - } - if ((tick & 4096) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("15030750278693429944")), 64, 256); - } - if ((tick & 8192) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("12247334978882834399")), 64, 256); - } - if ((tick & 16384) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("8131365268884726200")), 64, 256); - } - if ((tick & 32768) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("3584323654723342297")), 64, 256); - } - if ((tick & 65536) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("696457651847595233")), 64, 256); - } - if ((tick & 131072) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("26294789957452057")), 64, 256); - } - if ((tick & 262144) !== 0) { - ratio = signedShiftRight(ratio.mul(new import_bn6("37481735321082")), 64, 256); - } - return ratio; -} - -function tickIndexToSqrtPriceX64(tickIndex) { - if (tickIndex > 0) { - return new import_bn6(tickIndexToSqrtPricePositive(tickIndex)); - } - return new import_bn6(tickIndexToSqrtPriceNegative(tickIndex)); -} - - -function asIntN(int, bits = 32) { - return Number(BigInt.asIntN(bits, BigInt(int))); -} - -function i32BitsToNumber(v) { - return asIntN(BigInt(v), 32); -} - -module.exports = { - tickToPrice, - i32BitsToNumber, -} \ No newline at end of file diff --git a/projects/helper/utils/ton.js b/projects/helper/utils/ton.js deleted file mode 100644 index f33e02b2122..00000000000 --- a/projects/helper/utils/ton.js +++ /dev/null @@ -1,232 +0,0 @@ -// https://github.com/ton-org/ton-core/blob/main/src/utils/crc16.ts - -function crc16(data) { - const poly = 0x1021; - let reg = 0; - const message = Buffer.alloc(data.length + 2); - message.set(data); - for (let byte of message) { - let mask = 0x80; - while (mask > 0) { - reg <<= 1; - if (byte & mask) { - reg += 1; - } - mask >>= 1 - if (reg > 0xffff) { - reg &= 0xffff; - reg ^= poly; - } - } - } - return Buffer.from([Math.floor(reg / 256), reg % 256]); -} -const bounceable_tag = 0x11; -const non_bounceable_tag = 0x51; -const test_flag = 0x80; - -function parseFriendlyAddress(src) { - if (typeof src === 'string' && !Address.isFriendly(src)) { - throw new Error('Unknown address type'); - } - - const data = Buffer.isBuffer(src) ? src : Buffer.from(src, 'base64'); - - // 1byte tag + 1byte workchain + 32 bytes hash + 2 byte crc - if (data.length !== 36) { - throw new Error('Unknown address type: byte length is not equal to 36'); - } - - // Prepare data - const addr = data.subarray(0, 34); - const crc = data.subarray(34, 36); - const calcedCrc = crc16(addr); - if (!(calcedCrc[0] === crc[0] && calcedCrc[1] === crc[1])) { - throw new Error('Invalid checksum: ' + src); - } - - // Parse tag - let tag = addr[0]; - let isTestOnly = false; - let isBounceable = false; - if (tag & test_flag) { - isTestOnly = true; - tag = tag ^ test_flag; - } - if ((tag !== bounceable_tag) && (tag !== non_bounceable_tag)) - throw "Unknown address tag"; - - isBounceable = tag === bounceable_tag; - - let workchain = null; - if (addr[1] === 0xff) { // TODO we should read signed integer here - workchain = -1; - } else { - workchain = addr[1]; - } - - const hashPart = addr.subarray(2, 34); - - return { isTestOnly, isBounceable, workchain, hashPart }; -} - -class Address { - - static isAddress(src) { - return src instanceof Address; - } - - static isFriendly(source) { - // Check length - if (source.length !== 48) { - return false; - } - // Check if address is valid base64 - if (!/[A-Za-z0-9+/_-]+/.test(source)) { - return false; - } - - return true; - } - - static isRaw(source) { - // Check if has delimiter - if (source.indexOf(':') === -1) { - return false; - } - - let [wc, hash] = source.split(':'); - - // wc is not valid - if (!Number.isInteger(parseFloat(wc))) { - return false; - } - - // hash is not valid - if (!/[a-f0-9]+/.test(hash.toLowerCase())) { - return false; - } - - // has is not correct - if (hash.length !== 64) { - return false; - } - - return true; - } - - static normalize(source) { - if (typeof source === 'string') { - return Address.parse(source).toString(); - } else { - return source.toString(); - } - } - - static parse(source) { - if (Address.isFriendly(source)) { - return this.parseFriendly(source).address; - } else if (Address.isRaw(source)) { - return this.parseRaw(source); - } else { - throw new Error('Unknown address type: ' + source); - } - } - - static parseRaw(source) { - let workChain = parseInt(source.split(":")[0]); - let hash = Buffer.from(source.split(":")[1], 'hex'); - - return new Address(workChain, hash); - } - - static parseFriendly(source) { - if (Buffer.isBuffer(source)) { - let r = parseFriendlyAddress(source); - return { - isBounceable: r.isBounceable, - isTestOnly: r.isTestOnly, - address: new Address(r.workchain, r.hashPart) - }; - } else { - // eslint-disable-next-line no-useless-escape - let addr = source.replace(/\-/g, '+').replace(/_/g, '\/'); // Convert from url-friendly to true base64 - let r = parseFriendlyAddress(addr); - return { - isBounceable: r.isBounceable, - isTestOnly: r.isTestOnly, - address: new Address(r.workchain, r.hashPart) - }; - } - } - - workChain; - hash; - - constructor(workChain, hash) { - if (hash.length !== 32) { - throw new Error('Invalid address hash length: ' + hash.length); - } - - this.workChain = workChain; - this.hash = hash; - Object.freeze(this); - } - - toRawString = () => { - return this.workChain + ':' + this.hash.toString('hex'); - } - - equals(src) { - if (src.workChain !== this.workChain) { - return false; - } - return src.hash.equals(this.hash); - } - - toRaw = () => { - const addressWithChecksum = Buffer.alloc(36); - addressWithChecksum.set(this.hash); - addressWithChecksum.set([this.workChain, this.workChain, this.workChain, this.workChain], 32); - return addressWithChecksum; - } - - toStringBuffer = (args) => { - let testOnly = (args && args.testOnly !== undefined) ? args.testOnly : false; - let bounceable = (args && args.bounceable !== undefined) ? args.bounceable : true; - - let tag = bounceable ? bounceable_tag : non_bounceable_tag; - if (testOnly) { - tag |= test_flag; - } - - const addr = Buffer.alloc(34); - addr[0] = tag; - addr[1] = this.workChain; - addr.set(this.hash, 2); - const addressWithChecksum = Buffer.alloc(36); - addressWithChecksum.set(addr); - addressWithChecksum.set(crc16(addr), 34); - return addressWithChecksum; - } - - toString = (args) => { - let urlSafe = (args && args.urlSafe !== undefined) ? args.urlSafe : true; - let buffer = this.toStringBuffer(args); - if (urlSafe) { - return buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_'); - } else { - return buffer.toString('base64'); - } - } - -} - -function address(src) { - return Address.parse(src); -} - -module.exports = { - address, - Address, -} \ No newline at end of file diff --git a/projects/helper/valence.js b/projects/helper/valence.js deleted file mode 100644 index 5eaa7ce7d1f..00000000000 --- a/projects/helper/valence.js +++ /dev/null @@ -1,67 +0,0 @@ -const { queryContract } = require("./chain/cosmos"); - -/** - * Query all program configs from the registry contract - * @param {string} registryAddress - The address of the registry contract - * @returns {Promise} - An array of program configs with id and program_config - */ -async function queryValencePrograms(registryAddress) { - const allProgramConfigs = [] - - const lastProgramId = await queryContract({ - contract: registryAddress, - chain: "neutron", - data: `{ - "get_last_id": {} - }` - }); - - let programIdStartIndex = 0; - - while (programIdStartIndex < lastProgramId) { - const programConfigs = (await queryContract({ - contract: registryAddress, - chain: "neutron", - data: `{ - "get_all_configs": { - "limit": 50, - "start": ${programIdStartIndex} - } - }`, - })) - const endId = programConfigs[programConfigs.length - 1].id; - programIdStartIndex = endId + 1; - allProgramConfigs.push(...programConfigs); - } - - return Promise.all(allProgramConfigs.map(async (program)=>{ - const programId=program.id; - const encodedProgramConfig=program.program_config; - const decodedBinaryString = Buffer.from(encodedProgramConfig, 'base64') - return { - id: programId, - program_config: JSON.parse(decodedBinaryString) - } - })) -} - - -/*** - * Extract the account addresses for a given domain and chain from a program config - * The format of programAccounts is [{domain:{chain:address},addr:address}] - */ -function extractAccountsFromProgramConfig(programAccounts,domain,chain) { - let filter = chain - if (filter==="terra2") filter="terra" // handling edge case, in Valence the chain name is configured as "terra" but refers to terra2 (phoenix-1) - return programAccounts.filter((accountConfig)=>domain in accountConfig.domain && accountConfig.domain[domain] === filter).map((accountConfig)=>{ - return accountConfig.addr - }) -} - - - - -module.exports = { - queryValencePrograms, - extractAccountsFromProgramConfig -} \ No newline at end of file diff --git a/projects/helper/whitelistedExportKeys.json b/projects/helper/whitelistedExportKeys.json deleted file mode 100644 index 52d7b2baa27..00000000000 --- a/projects/helper/whitelistedExportKeys.json +++ /dev/null @@ -1,16 +0,0 @@ -[ - "tvl", - "staking", - "methodology", - "pool2", - "misrepresentedTokens", - "timetravel", - "borrowed", - "start", - "doublecounted", - "hallmarks", - "isHeavyProtocol", - "deadFrom", - "ownTokens", - "vesting" -] \ No newline at end of file diff --git a/projects/helper/whitelistedNfts.js b/projects/helper/whitelistedNfts.js deleted file mode 100644 index eda0963a838..00000000000 --- a/projects/helper/whitelistedNfts.js +++ /dev/null @@ -1,107 +0,0 @@ -// Tokens added to this list must have a Chainlink price oracle so that they can be priced. -// They must also implement the abi balanceOf(address) so the number of tokens owned -// by an EOA can be counted. -const ethereum = [ - // Chromie Squiggle - // '0x059edd72cd353df5106d2b9cc5ab83a52287ac3a', - - // Bored Ape Kennel Club - '0xba30e5f9bb24caa003e9f2f0497ad287fdf95623', - - // Azuki - '0xed5af388653567af2f388e6224dc7c4b3241c544', - - // CyberBrokers - '0x892848074ddea461a15f337250da3ce55580ca85', - - // Meebits - '0x7bd29408f11d2bfc23c34f18275bbf23bb716bc7', - - // Wrapped Cryptopunks - '0xb7f7f6c52f2e2fdb1963eab30438024864c313f6', - - // Mutant Ape Yacht Club - '0x60e4d786628fea6478f785a6d7e704777c86a7c6', - - // VeeFriends - '0xa3aee8bce55beea1951ef834b99f3ac60d1abeeb', - - // Doodles - '0x8a90cab2b38dba80c64b7734e58ee1db38b8992e', - - // goblintown.wtf - '0xbce3781ae7ca1a5e050bd9c4c77369867ebc307e', - - // Cool Cats - '0x1a92f7381b9f03921564a437210bb9396471050c', - - // Forgotten Runes Wizards Cult - '0x521f9c7505005cfa19a8e5786a9c3c9c9f5e6f42', - - // Nouns - '0x9c8ff314c9bc7f6e59a9d9225fb22946427edc03', - - // LobsterDAO - '0x026224a2940bfe258d0dbe947919b62fe321f042', - - // Milady Maker - '0x5af0d9827e0c53e4799bb226655a1de152a425a5', - - // CloneX - '0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b', - - // Otherdeed for Otherside - '0x34d85c9cdeb23fa97cb08333b511ac86e1c4e258', - - // MoonBirds - '0x23581767a106ae21c074b2276d25e5c3e136a68b', - - // World of Women - '0xe785e82358879f061bc3dcac6f0444462d4b5330', - - // Pudgy Penguins - '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', - - // CrypToadz - '0x1cb1a5e65610aeff2551a50f76a87a7d3fb649c6', - - // CryptoDickbutts - '0x42069abfe407c60cf4ae4112bedead391dba1cdb', - - // Bored Ape Yacht Club - '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', - - // DigiDaigaku Genesis - '0xd1258db6ac08eb0e625b75b371c023da478e94a9', - - // Decentraland - '0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d', - - // Sandbox's LANDs - '0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38', - - // BEANZ - '0x306b1ea3ecdf94ab739f1910bbda052ed4a9f949', - - // Wrapped Ether rock - '0xa3f5998047579334607c47a6a2889bf87a17fc02', - - // DeGods - '0x8821BeE2ba0dF28761AffF119D66390D594CD280', - - // Captains - '0x769272677faB02575E84945F03Eca517ACc544Cc', - '0xE012Baf811CF9c05c408e879C399960D1f305903', // KODA - '0x790B2cF29Ed4F310bf7641f013C65D4560d28371', // Otherdeed - '0x3bf2922f4520a8BA0c2eFC3D2a1539678DaD5e9D', // ON1 - '0x39ee2c7b3cb80254225884ca001F57118C8f21B6', // Potatoz -].map(i => i.toLowerCase()) - -const AB_OLD_COLLECTIONS = ["0x059edd72cd353df5106d2b9cc5ab83a52287ac3a:0:999999","0x059edd72cd353df5106d2b9cc5ab83a52287ac3a:1000000:1999999","0x059edd72cd353df5106d2b9cc5ab83a52287ac3a:2000000:2999999"] -const AB_COLLECTIONS = ["0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:78000000:78999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:13000000:13999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:163000000:163999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:159000000:159999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:23000000:23999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:138000000:138999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:143000000:143999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:129000000:129999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:173000000:173999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:215000000:215999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:53000000:53999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:119000000:119999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:204000000:204999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:98000000:98999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:304000000:304999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:8000000:8999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:121000000:121999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:282000000:282999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:137000000:137999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:100000000:100999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:7000000:7999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:255000000:255999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:22000000:22999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:131000000:131999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:233000000:233999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:147000000:147999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:145000000:145999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:12000000:12999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:72000000:72999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:141000000:141999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:28000000:28999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:64000000:64999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:76000000:76999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:74000000:74999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:27000000:27999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:11000000:11999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:114000000:114999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:118000000:118999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:367000000:367999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:89000000:89999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:95000000:95999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:162000000:162999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:139000000:139999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:112000000:112999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:3000000:3999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:116000000:116999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:334000000:334999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:59000000:59999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:40000000:40999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:29000000:29999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:37000000:37999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:35000000:35999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:4000000:4999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:120000000:120999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:214000000:214999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:39000000:39999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:225000000:225999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:117000000:117999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:130000000:130999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:17000000:17999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:41000000:41999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:108000000:108999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:62000000:62999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:172000000:172999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:164000000:164999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:232000000:232999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:152000000:152999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:21000000:21999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:103000000:103999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:250000000:250999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:134000000:134999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:228000000:228999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:9000000:9999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:10000000:10999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:73000000:73999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:135000000:135999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:113000000:113999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:77000000:77999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:339000000:339999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:104000000:104999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:16000000:16999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:333000000:333999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:206000000:206999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:328000000:328999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:267000000:267999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:19000000:19999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:174000000:174999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:149000000:149999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:25000000:25999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:63000000:63999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:209000000:209999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:281000000:281999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:144000000:144999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:284000000:284999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:368000000:368999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:140000000:140999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:142000000:142999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:341000000:341999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:68000000:68999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:96000000:96999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:32000000:32999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:253000000:253999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:203000000:203999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:189000000:189999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:301000000:301999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:124000000:124999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:337000000:337999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:133000000:133999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:86000000:86999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:371000000:371999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:90000000:90999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:217000000:217999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:122000000:122999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:191000000:191999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:330000000:330999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:364000000:364999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:123000000:123999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:106000000:106999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:294000000:294999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:30000000:30999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:136000000:136999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:26000000:26999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:109000000:109999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:50000000:50999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:261000000:261999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:227000000:227999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:146000000:146999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:42000000:42999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:102000000:102999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:84000000:84999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:309000000:309999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:125000000:125999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:165000000:165999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:101000000:101999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:110000000:110999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:160000000:160999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:105000000:105999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:57000000:57999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:18000000:18999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:65000000:65999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:126000000:126999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:52000000:52999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:92000000:92999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:321000000:321999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:226000000:226999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:31000000:31999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:20000000:20999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:313000000:313999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:14000000:14999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:51000000:51999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:320000000:320999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:70000000:70999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:180000000:180999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:34000000:34999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:127000000:127999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:167000000:167999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:48000000:48999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:256000000:256999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:15000000:15999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:83000000:83999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:336000000:336999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:44000000:44999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:99000000:99999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:289000000:289999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:67000000:67999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:6000000:6999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:156000000:156999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:56000000:56999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:344000000:344999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:69000000:69999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:150000000:150999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:276000000:276999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:5000000:5999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:296000000:296999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:97000000:97999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:157000000:157999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:260000000:260999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:212000000:212999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:47000000:47999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:36000000:36999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:329000000:329999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:66000000:66999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:234000000:234999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:91000000:91999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:49000000:49999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:356000000:356999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:93000000:93999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:75000000:75999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:38000000:38999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:46000000:46999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:82000000:82999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:350000000:350999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:88000000:88999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:326000000:326999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:111000000:111999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:351000000:351999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:340000000:340999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:24000000:24999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:107000000:107999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:85000000:85999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:196000000:196999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:272000000:272999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:318000000:318999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:71000000:71999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:87000000:87999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:79000000:79999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:319000000:319999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:33000000:33999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:45000000:45999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:188000000:188999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:338000000:338999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:55000000:55999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:208000000:208999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:216000000:216999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:54000000:54999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:132000000:132999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:60000000:60999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:230000000:230999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:171000000:171999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:153000000:153999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:58000000:58999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:94000000:94999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:366000000:366999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:370000000:370999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:81000000:81999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:353000000:353999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:358000000:358999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:346000000:346999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:178000000:178999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:310000000:310999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:312000000:312999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:154000000:154999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:80000000:80999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:43000000:43999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:151000000:151999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:317000000:317999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:354000000:354999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:169000000:169999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:323000000:323999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:314000000:314999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:331000000:331999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:283000000:283999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:222000000:222999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:362000000:362999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:280000000:280999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:265000000:265999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:161000000:161999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:166000000:166999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:347000000:347999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:311000000:311999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:292000000:292999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:235000000:235999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:115000000:115999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:197000000:197999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:61000000:61999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:200000000:200999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:158000000:158999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:205000000:205999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:316000000:316999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:231000000:231999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:343000000:343999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:248000000:248999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:291000000:291999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:355000000:355999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:279000000:279999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:335000000:335999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:277000000:277999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:285000000:285999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:361000000:361999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:213000000:213999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:365000000:365999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:288000000:288999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:286000000:286999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:324000000:324999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:357000000:357999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:264000000:264999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:270000000:270999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:246000000:246999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:332000000:332999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:293000000:293999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:242000000:242999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:185000000:185999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:307000000:307999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:273000000:273999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:275000000:275999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:278000000:278999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:349000000:349999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:229000000:229999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:263000000:263999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:373000000:373999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:308000000:308999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:258000000:258999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:220000000:220999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:207000000:207999999","0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270:359000000:359999999"] - -module.exports = { - ethereum, - AB_OLD_COLLECTIONS, - AB_COLLECTIONS, -}; diff --git a/projects/helper/yieldHelper.js b/projects/helper/yieldHelper.js deleted file mode 100644 index 49cd1e5e54f..00000000000 --- a/projects/helper/yieldHelper.js +++ /dev/null @@ -1,121 +0,0 @@ -const ADDRESSES = require('./coreAssets.json') - -const abi = require("../tenfinance/abi.json") -const { getUniqueAddresses, } = require('../helper/utils') -const { getLPData, getTokenPrices } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') -const { unwrapLPsAuto } = require("./unwrapLPs") - -const allData = {} - -function yieldHelper({ - project, - chain, - masterchef, - blacklistedTokens = [], - nativeToken, - nativeTokens = [], - abis = {}, - poolFilter, - getPoolIds, - getTokens, - getTokenBalances, - useDefaultCoreAssets = false, - getPoolsFn, -}) { - blacklistedTokens = getUniqueAddresses(blacklistedTokens) - if (nativeToken) nativeTokens.push(nativeToken) - nativeTokens = getUniqueAddresses(nativeTokens) - if (!project) throw new Error('Missing project name') - - async function getAllTVL(api) { - const key = `${project}-${chain}-${api.block}` - if (!allData[key]) allData[key] = _getAllTVL() - return allData[key] - - async function _getAllTVL() { - const transform = i => `${chain}:${i.toLowerCase()}` - const balances = { - tvl: {}, - pool2: {}, - staking: {}, - } - - let poolInfos - if (getPoolsFn) { - poolInfos = await getPoolsFn(api) - } else { - poolInfos = await api.fetchList({ - lengthAbi: abis.poolLength || abi.poolLength, - itemAbi: abis.poolInfo || abi.poolInfo, - target: masterchef, - }) - } - - let _poolFilter = i => !blacklistedTokens.includes(i.want.toLowerCase()) && !blacklistedTokens.includes(i.strat?.toLowerCase()) && i.strat !== ADDRESSES.null - let _getPoolIds = i => i.strat - - if (getPoolIds) _getPoolIds = getPoolIds - if (poolFilter) _poolFilter = poolFilter - - poolInfos = poolInfos.filter(_poolFilter) - const poolIds = poolInfos.map(_getPoolIds) - let lockedTotals - - if (getTokenBalances) { - lockedTotals = await getTokenBalances({ api, poolInfos, poolIds, }) - } else { - lockedTotals = await api.multiCall({ - abi: abis.wantLockedTotal || abi.wantLockedTotal, - calls: poolIds, - }) - } - - let tokens - if (getTokens) { - tokens = await getTokens({ poolInfos, api }) - } - else tokens = poolInfos.map(i => i.want.toLowerCase()) - const pairInfos = await getLPData({ lps: tokens, ...api, abis, }) - const blacklistedSet = new Set(...(blacklistedTokens.map(i => i.toLowerCase()))) - tokens.forEach((token, i) => { - if (nativeTokens.includes(token)) { - sdk.util.sumSingleBalance(balances.staking, transform(token), lockedTotals[i]) - } else if (pairInfos[token] && - (nativeTokens.includes(pairInfos[token].token0Address) || nativeTokens.includes(pairInfos[token].token1Address)) - ) { - sdk.util.sumSingleBalance(balances.pool2, transform(token), lockedTotals[i]) - } else { - if (!blacklistedSet.has(token.toLowerCase())) - sdk.util.sumSingleBalance(balances.tvl, transform(token), lockedTotals[i]) - } - }) - - await Promise.all([ - unwrapLPsAuto({ api, balances: balances.tvl, transformAddress: transform, abis, }), - unwrapLPsAuto({ api, balances: balances.pool2, transformAddress: transform, abis, }), - ]) - - const lps = Object.keys(pairInfos) - if (lps.length && useDefaultCoreAssets) { - const { updateBalances } = await getTokenPrices({ lps, ...api, abis, useDefaultCoreAssets, }) - balances.tvl = await updateBalances(balances.tvl) - balances.pool2 = await updateBalances(balances.pool2) - balances.staking = await updateBalances(balances.staking) - } - - return balances - } - } - - return { - misrepresentedTokens: useDefaultCoreAssets, - [chain]: { - tvl: async (api) => (await getAllTVL(api)).tvl, - pool2: async (api) => (await getAllTVL(api)).pool2, - staking: async (api) => (await getAllTVL(api)).staking, - } - } -} - -module.exports = { yieldHelper } \ No newline at end of file diff --git a/projects/hemi-btc/index.js b/projects/hemi-btc/index.js deleted file mode 100644 index 6744c91ae32..00000000000 --- a/projects/hemi-btc/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - timetravel: false, - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.hemiBTC }), - }, -}; \ No newline at end of file diff --git a/projects/hemi-l2/index.js b/projects/hemi-l2/index.js deleted file mode 100644 index 118b597f399..00000000000 --- a/projects/hemi-l2/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x5eaa10F99e7e6D177eF9F74E519E319aa49f191e", - "0x39a0005415256B9863aFE2d55Edcf75ECc3A4D7e", - ], - fetchCoValentTokens: true, - blacklistedTokens: [ - '0xeb964a1a6fab73b8c72a0d15c7337fa4804f484d', // project HEMI token - ], - }), - }, -}; diff --git a/projects/hemi-staking/index.js b/projects/hemi-staking/index.js deleted file mode 100644 index a52964e932b..00000000000 --- a/projects/hemi-staking/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - hemi: { - tvl: sumTokensExport({ - owners: [ - "0x4F5E928763CBFaF5fFD8907ebbB0DAbd5f78bA83", - ], - tokens: [ - '0x7A06C4AeF988e7925575C50261297a946aD204A8', - '0x8154Aaf094c2f03Ad550B6890E1d4264B5DdaD9A', - '0x78E26E8b953C7c78A58d69d8B9A91745C2BbB258', - ADDRESSES.optimism.WETH_1, - ADDRESSES.hemi.DAI, - '0x027a9d301FB747cd972CFB29A63f3BDA551DFc5c', - ADDRESSES.swellchain.rsETH, - ADDRESSES.hemi.USDC_e, - ADDRESSES.hemi.USDT, - '0x6A9A65B84843F5fD4aC9a0471C4fc11AFfFBce4a', - '0x93919784C523f39CACaa98Ee0a9d96c3F32b593e', - '0xAA40c0c7644e0b2B224509571e10ad20d9C4ef28', - '0x0Af3EC6F9592C193196bEf220BC0Ce4D9311527D', - '0x9BFA177621119e64CecbEabE184ab9993E2ef727', - ADDRESSES.swellchain.stBTC, - '0xF9775085d726E782E83585033B58606f7731AB18', - '0xF469fBD2abcd6B9de8E169d128226C0Fc90a012e', - ADDRESSES.bob.WBTC, - '0xe3C0FF176eF92FC225096C6d1788cCB818808b35', - '0xb4818BB69478730EF4e33Cc068dD94278e2766cB', - '0xe85411C030fB32A9D8b14Bbbc6CB19417391F711', - '0x12B6e6FC45f81cDa81d2656B974E8190e4ab8D93', - '0x028DE74e2fE336511A8E5FAb0426D1cfD5110DBb', - '0x8970a6A9Eae065aA81a94E86ebCAF4F3d4dd6DA1', - ] - }), - }, - doublecounted: true, -}; diff --git a/projects/henjin/index.js b/projects/henjin/index.js deleted file mode 100644 index 5aedac92111..00000000000 --- a/projects/henjin/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - taiko: { - factory: "0x42B08e7a9211482d3643a126a7dF1895448d3509", - fromBlock: 400, - isAlgebra: true, - }, - base: { - factory: "0x4963818c35d5793D771bf8091c750b5A71eD101b", - fromBlock: 24813689, - isAlgebra: true, - }, -}); diff --git a/projects/herafinance/index.js b/projects/herafinance/index.js deleted file mode 100644 index 79d2196a44d..00000000000 --- a/projects/herafinance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const stakingContracts = [ - // stakingContract1 = - "0x2508965Ec75498c451B9e325B7A09288f27762D8", - // stakingContract2 - "0x2ec37306801cb2dce6526C71b28916a70a835C03", - // stakingContract3 - omnichain staking - LayerZero - "0x9abB8642ab4B184F2a56340C2766cdc0f357500E", -]; - -const HERA_TOKEN = "0x6F05709bc91Bad933346F9E159f0D3FdBc2c9DCE"; - -module.exports = { - metis: { - staking: stakings(stakingContracts, HERA_TOKEN), - tvl: () => ({}), - }, -}; diff --git a/projects/heraswap/index.js b/projects/heraswap/index.js deleted file mode 100644 index 485c0d0d803..00000000000 --- a/projects/heraswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - onus: { - tvl: getUniTVL({ factory: '0x6CD368495D90b9Ba81660e2b35f7Ea2AcE2B8cD6', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/hercules-v2/index.js b/projects/hercules-v2/index.js deleted file mode 100644 index 967561e2f27..00000000000 --- a/projects/hercules-v2/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport('metis', '0xF38E7c7f8eA779e8A193B61f9155E6650CbAE095') \ No newline at end of file diff --git a/projects/hercules-v3/index.js b/projects/hercules-v3/index.js deleted file mode 100644 index a6218fea93e..00000000000 --- a/projects/hercules-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - metis: { factory: "0xC5BfA92f27dF36d268422EE314a1387bB5ffB06A", fromBlock: 8836412, isAlgebra: true, }, -}) \ No newline at end of file diff --git a/projects/here-staking/index.js b/projects/here-staking/index.js deleted file mode 100644 index e0d77de7150..00000000000 --- a/projects/here-staking/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { call } = require('../helper/chain/near') - -async function tvl() { - const here_balance = await call("storage.herewallet.near", 'ft_total_supply', {}); - return { - near: (here_balance / 1e24) - }; -} - -module.exports = { - near: { - tvl - }, - timetravel: false, -}; \ No newline at end of file diff --git a/projects/hermes-finance/index.js b/projects/hermes-finance/index.js deleted file mode 100644 index 9cb0bd2a3af..00000000000 --- a/projects/hermes-finance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking } = require('../helper/staking'); -const { pool2 } = require('../helper/pool2'); - -const hermes = "0xB15f02F9Da8CD1f99E9dd375F21dc96D25ddd82C"; -const hermesShares = "0xfa4b6db72a650601e7bd50a0a9f537c9e98311b2"; -const hShareRewardPool = "0xDDd0A62D8e5AFeccFB334e49D27a57713DD0fBcc"; -const olympus = "0x02662d2079a3218275bdA1Adf812ab5e324a5b27"; - -const pool2LPs = [ - "0xc58cc1a0f29f1993d089681e4fa03c7f65df1325", // HERMES-WAVAX PGL - "0xC132ff3813De33356C859979501fB212673e395e" // HSHARE-WAVAX PGL -] - -module.exports = { - avax:{ - tvl: async () => ({}), - staking: staking(olympus, hermesShares), - pool2: pool2(hShareRewardPool, pool2LPs, "avax") - } -} \ No newline at end of file diff --git a/projects/hermes-protocol/index.js b/projects/hermes-protocol/index.js deleted file mode 100644 index 8290f24e426..00000000000 --- a/projects/hermes-protocol/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'metis': '0x633a093C9e94f64500FC8fCBB48e90dd52F6668F' -}, { hasStablePools: true, }) - -module.exports.metis.staking = () => ({}) \ No newline at end of file diff --git a/projects/hermes-v2/index.js b/projects/hermes-v2/index.js deleted file mode 100644 index 2ebf35d431c..00000000000 --- a/projects/hermes-v2/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking'); - -const stakerAddress = '0x54De3b7b5D1993Db4B2a93C897b5272FBd60e99E' - -module.exports = { - doublecounted: true, - methodology: 'The sum of All staked Uniswap V3 NFTs and burnt Hermes for staked TVL.', - arbitrum: { - tvl: sumTokensExport({ owner: stakerAddress, resolveUniV3: true}), - staking: staking('0x3A0000000000E1007cEb00351F65a1806eCd937C', '0x45940000009600102A1c002F0097C4A500fa00AB'), - }, -}; diff --git a/projects/hermes/index.js b/projects/hermes/index.js deleted file mode 100644 index 4061c850fc7..00000000000 --- a/projects/hermes/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getUniTVL, staking, } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - 'We calculate liquidity on all pairs with data retreived from the "hermes-defi/hermes-graph" subgraph plus the total amount in dollars of our staking pools xHermes and sHermes.', - harmony: { - tvl: getUniTVL({ - factory: '0xfe5e54a8e28534fffe89b9cfddfd18d3a90b42ca', - useDefaultCoreAssets: true, - }), - staking: staking({ - owners: ['0x28a4e128f823b1b3168f82f64ea768569a25a37f', '0x8812420fb6e5d971c969ccef2275210ab8d014f0'], - tokens: ['0xba4476a302f5bc1dc4053cf79106dc43455904a3'], - useDefaultCoreAssets: true, - lps: ['0x8604197eb7123888b551fe78a8828b895608d093'], - }), - }, -}; diff --git a/projects/hermetica/index.js b/projects/hermetica/index.js deleted file mode 100644 index 41fc1314325..00000000000 --- a/projects/hermetica/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { get, post } = require('../helper/http') - -const USDhContract = 'SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1'; - -function parseClarityInt(hexString) { - // Remove "0x" prefix - let hex = hexString.startsWith("0x") ? hexString.slice(2) : hexString; - - // Skip the first two bytes (Clarity type and metadata) - let numberHex = hex.slice(4); // Remove first 2 bytes (4 hex characters) - - // Convert hex to BigInt - let bigIntValue = BigInt("0x" + numberHex); - - // Handle two’s complement for negative numbers - if (bigIntValue > BigInt("0x7ffffffffffffffffffffffffffffffff")) { - bigIntValue = bigIntValue - BigInt("0x100000000000000000000000000000000"); - } - - return bigIntValue.toString(); // Return as a readable decimal string -} - -module.exports = { - methodology: 'Counts the number of USDh tokens on Stacks and Bitcoin (Runes).', - timetravel: false, - bitcoin: { - tvl: async () => { - const { result: totalSupply } = await get('https://app.hermetica.fi/api/v1/usdh/supply'); - - const [contract_address, contract_name] = USDhContract.split('.'); - const supplyResponse = await post(`https://api.mainnet.hiro.so/v2/contracts/call-read/${contract_address}/${contract_name}/get-total-supply`, - { - sender: contract_address, - arguments: [] - } - ); - const uUSDhSupplyStacks = Number(parseClarityInt(supplyResponse.result)); - - const cleanUsdhSupply = totalSupply.replace(/[^\d.]/g, ''); - const totalUsdhSupply = Number(cleanUsdhSupply); - const totaluUSDhSupply = totalUsdhSupply * (10 ** 8); - - const sUSDhSupplyRunes = totaluUSDhSupply - uUSDhSupplyStacks; - - return { 'hermetica-usdh': sUSDhSupplyRunes / (10 ** 8) } - } - }, - stacks: { - tvl: async () => { - const [contract_address, contract_name] = USDhContract.split('.'); - const supplyResponse = await post(`https://api.mainnet.hiro.so/v2/contracts/call-read/${contract_address}/${contract_name}/get-total-supply`, - { - sender: contract_address, - arguments: [] - } - ); - const supplyOnStacksuUsdh = Number(parseClarityInt(supplyResponse.result)); - - return { 'hermetica-usdh': supplyOnStacksuUsdh / (10 ** 8) } - } - }, - misrepresentedTokens: true -} \ No newline at end of file diff --git a/projects/heroblaze/index.js b/projects/heroblaze/index.js deleted file mode 100644 index 9907b57864a..00000000000 --- a/projects/heroblaze/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - methodology: - "TVL staking is calculated as the sum of the tokens staked in Hero Blaze BEP20 contracts", - misrepresentedTokens: true, - bsc: { - tvl: () => ({}), - staking: staking( - [ - "0x7f385F3d92501ba048B92F715D929Cbf15F98792", - "0xaA0856084Ea21541526307945231338adc809519", - "0x159eeaE61a592A157964f36e68407ED49a4AEf3c", - "0xeB700b4090e1eD4C9d34386f73b4E706C8fe334D", - "0x00A6e93E3ce5300e41E8ed25EBD69C328fD45E5a", - ], - "0x5e7f472B9481C80101b22D0bA4ef4253Aa61daBc" - ), - }, -}; diff --git a/projects/heroes-of-mavia/index.js b/projects/heroes-of-mavia/index.js deleted file mode 100644 index c528061b7dd..00000000000 --- a/projects/heroes-of-mavia/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { staking } = require('../helper/staking') - -const contracts = { - stakingPools: { - ethereum: "0xF2f8D915a4F28Cdb52cbe8F56ecc0f8AE3def54A", - base: "0x21890f88fc8A8b0142025935415017adA358C8C0", - }, - marketPool: { - base: "0xecc312CBDC0884C41FE1579ea33686DdAcc90c42", - }, -}; - -const tokens = { - ethereum: { - MAVIA: "0x24fcFC492C1393274B6bcd568ac9e225BEc93584", - }, - base: { - MAVIA: "0x24fcFC492C1393274B6bcd568ac9e225BEc93584", - }, -}; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(contracts.stakingPools.ethereum, tokens.ethereum.MAVIA), - }, - base: { - staking: staking([contracts.stakingPools.base, contracts.marketPool.base], tokens.base.MAVIA), - }, -}; \ No newline at end of file diff --git a/projects/hex/abi.json b/projects/hex/abi.json deleted file mode 100644 index 4bdfc254c54..00000000000 --- a/projects/hex/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "globalInfo": "function globalInfo() view returns (uint256[13])" -} \ No newline at end of file diff --git a/projects/hex/index.js b/projects/hex/index.js deleted file mode 100644 index 0ddf80bc798..00000000000 --- a/projects/hex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json') - -const HEX = ADDRESSES.pulse.HEX -async function staking(api) { - const globalInfo = await api.call({ abi: abi.globalInfo, target: HEX }) - api.add(HEX, globalInfo[0]) -} - -module.exports = { - ethereum: { - staking: () => ({}), // this is no longer done on ethereum - tvl: () => ({}) - } -} \ No newline at end of file diff --git a/projects/hexal/index.js b/projects/hexal/index.js deleted file mode 100644 index 043012525d5..00000000000 --- a/projects/hexal/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasury = "0xC06A7e21289E35eA94cE67C0f7AfAD4e972117D8"; -const stakingContract = "0x2f6A0D592f7F24D71c4EcA815c94d43AbE190fc3"; -const hexal = "0x57612d60b415ad812da9a7cf5672084796a4ab81"; -const treasuryTokens = [ - [ADDRESSES.bsc.BUSD, false], - [ADDRESSES.bsc.USDC, false], - ["0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", false], - ["0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", false], - [ADDRESSES.bsc.USDT, false], - [ADDRESSES.bsc.WBNB, false], - ["0xc94364d0ffd3c015689f55e167ac359eb93c617e", true] -] - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "bsc", stakingContract, hexal, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/hexaswap/index.js b/projects/hexaswap/index.js deleted file mode 100644 index 583e1cd8c01..00000000000 --- a/projects/hexaswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - telos: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x7853cDd20592aaff59D6e89B59bF67499564C525', - }) - } -} \ No newline at end of file diff --git a/projects/hfione/index.js b/projects/hfione/index.js deleted file mode 100644 index c6a81b167c6..00000000000 --- a/projects/hfione/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - heco: { - tvl: () => ({}), - staking: () => ({}), - }, -}; - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired diff --git a/projects/hi-market/index.js b/projects/hi-market/index.js deleted file mode 100644 index 955c37a014f..00000000000 --- a/projects/hi-market/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xf76550821b62702e95e181aeb77284ce70d4fe90" -const contract_era = "0x4Abb1bFcFb2af3d897B891DA265d94fb6C02B005" - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -async function tvl_era(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract_era, api }) -} - -module.exports = { - methodology: `We count the ETH locked in the contracts`, - ethereum: { tvl }, - base: { tvl }, - arbitrum: { tvl }, - era: { tvl: tvl_era }, -} diff --git a/projects/hibt/index.js b/projects/hibt/index.js deleted file mode 100644 index 659c7b74b6f..00000000000 --- a/projects/hibt/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x89a7f48b79516125c5521d5922a6dc0a085b3b95', - '0x7C32c1b93aC6c9719C9f3c7F8BAAbE502Bbd0F47' - ], - }, - bitcoin: { - owners: bitcoinAddressBook.hibt - }, - tron: { - owners: [ - 'TWVCro8i15sJjmwRKfV53gPnCsgz2ThQSc', - 'TFBzK6KWDiGMGkcK7mg7YH6Ls2Q4ouDFam', - 'TGoPfFBjoZ6wFFia1NAFio21Pi9Sc8KFw5' - ] - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/hidden-hand/index.js b/projects/hidden-hand/index.js deleted file mode 100644 index ffcf2f25d35..00000000000 --- a/projects/hidden-hand/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { cachedGraphQuery } = require('../helper/cache') -const marionette = require('./marionette'); - -const protocol_contracts = { - ethereum: { - v1: { - distributor: "0x0b139682d5c9df3e735063f46fb98c689540cf3a", - vault: "0x9DDb2da7Dd76612e0df237B89AF2CF4413733212", - }, - v2: { - distributor: "0xa9b08B4CeEC1EF29EdEC7F9C94583270337D6416", - vault: "0xE00fe722e5bE7ad45b1A16066E431E47Df476CeC", - harvester: "0xd23aa7EdF42CD3Fc4CD391faAbc0c207B1c86542", - }, - }, - optimism: { - v1: { - distributor: "0x0b139682d5c9df3e735063f46fb98c689540cf3a", - vault: "0x9DDb2da7Dd76612e0df237B89AF2CF4413733212", - }, - v2: { - distributor: "0x7354BB6842E421773E7b78f8875A1B85991677c0", - vault: "0xa9b08B4CeEC1EF29EdEC7F9C94583270337D6416", - harvester: "0x4573F58461acd1a6C743d9CDE34A142Ca18B6873", - }, - }, - arbitrum: { - v2: { - distributor: "0x0A390DE04B7717B078CF5c8A7Eb891130d4a843b", - vault: "0x8d89593c199Cb763bDEF04529F978f82503E4669", - harvester: "0xcA795Dc6f668add4801D2B92cF36C8FBcBEb8Ac4", - }, - }, -}; - -const subgraphs = { - ethereum: { - v1: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand", - v2: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand-v2", - }, - optimism: { - v1: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand-v1-optimism", - v2: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand-v2-optimism", - }, - arbitrum: { - v2: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand-v2-arbitrum", - }, -}; - -async function getTokens(chain, version) { - const graphQuery = ` - { - tokens { - address - } - } - `; - - const { tokens } = await cachedGraphQuery(`hidden-hand/${chain}-${version}`, subgraphs[chain][version], graphQuery); - const addresses = tokens.map((token) => token.address); - - return addresses; -} - -async function tvl(api) { - const { chain } = api - const ownerTokens = [] - - for (const version of Object.keys(protocol_contracts[chain])) { - const tokens = await getTokens(chain, version); - for (const owner of Object.values(protocol_contracts[chain][version])) { - ownerTokens.push([tokens, owner]) - } - } - - return sumTokens2({ api, ownerTokens, permitFailure: true, }); -} - -module.exports = { - methodology: `Sums bribe tokens deposited on Hidden Hand Reward Distributors, Bribe Vaults and Harvester contracts and veTHE deposited in Marionette.`, - ethereum: { tvl }, - optimism: { tvl }, - arbitrum: { tvl }, - bsc: marionette.bsc, -}; diff --git a/projects/hidden-hand/marionette.js b/projects/hidden-hand/marionette.js deleted file mode 100644 index af92074f7e7..00000000000 --- a/projects/hidden-hand/marionette.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const owners = ["0x60443fd265b4a4D51DFE2569569D45DBde393B14", "0x6045648cF69285fC2018Ca8F3ee8844d5e05Ee5d"]; //marionette adapters - - return sumTokens2({ - api, - owners, - solidlyVeNfts: [ - { - isAltAbi: true, - baseToken: "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11", - veNft: "0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D" - }, // veTHENA - ], - permitFailure: true, - }); -} - -module.exports = { - methodology: `Sums veTokens deposited on Hidden Hand Marionette Adapters.`, - bsc: { tvl }, -}; diff --git a/projects/hinkal/hinkalUtils.js b/projects/hinkal/hinkalUtils.js deleted file mode 100644 index d1eb07baeab..00000000000 --- a/projects/hinkal/hinkalUtils.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const ownerByChain = require("./owners.js"); - -const nullAddress = ADDRESSES.null; - -const nativeVolatileChains = ["blast"]; - -const getAllTokenBalances = async (tokenList, chain) => { - let balanceCalls = tokenList.map((token) => ({ - target: token, - params: nativeVolatileChains.includes(chain) - ? ownerByChain[chain].owner ?? "" - : ownerByChain[chain], - })); - - if (nativeVolatileChains.includes(chain)) { - const volatileBalanceCalls = tokenList.map((token) => ({ - target: token, - params: ownerByChain[chain].volatileOwner ?? "", - })); - - balanceCalls = [...balanceCalls, ...volatileBalanceCalls]; - } - - const balances = ( - await sdk.api.abi.multiCall({ - calls: balanceCalls, - abi: "erc20:balanceOf", - chain, - }) - ).output; - - const tokenBalances = balances.map((bal) => { - const token = bal.input.target; - const tokenBalance = bal.output; - - return { - balance: tokenBalance, - address: token, - }; - }); - - const nativeTokenBalance = ( - await sdk.api.eth.getBalance({ - target: nativeVolatileChains.includes(chain) - ? ownerByChain[chain].volatileOwner ?? "" - : ownerByChain[chain], - chain, - }) - ).output; - - tokenBalances.push({ - address: nullAddress, - balance: nativeTokenBalance, - }); - - return tokenBalances.filter((tokenBal) => Number(tokenBal.balance) > 0); -}; - -module.exports = { - getAllTokenBalances, -}; diff --git a/projects/hinkal/index.js b/projects/hinkal/index.js deleted file mode 100644 index 91a310be268..00000000000 --- a/projects/hinkal/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const registryTokensByChain = require("./registryTokens.js"); -const registryTokensWithUnderlyingAddressesByChain = require("./registryTokensWithUnderlyingAddresses.js"); -const { getAllTokenBalances } = require("./hinkalUtils.js"); -const { toUSDTBalances } = require("../helper/balances.js"); - -const tvl = async (_, _1, _2, { chain, api }) => { - const tokenBalances = await getAllTokenBalances( - registryTokensByChain[chain], - chain - ); - - const chainTokensWithUnderlyingAddresses = - registryTokensWithUnderlyingAddressesByChain[chain]; - - const mappedTokens = tokenBalances.map((token) => { - const tokenUnderlyingAddress = chainTokensWithUnderlyingAddresses - ? chainTokensWithUnderlyingAddresses[token.address] - : undefined; - - return { - address: tokenUnderlyingAddress ? tokenUnderlyingAddress : token.address, - balance: token.balance, - }; - }); - - return api.addTokens( - mappedTokens.map((token) => token.address), - mappedTokens.map((token) => token.balance) - ); -}; - -module.exports = { - ethereum: { - tvl, - }, - base: { - tvl, - }, - arbitrum: { - tvl, - }, - optimism: { - tvl, - }, - polygon: { - tvl, - }, - avax: { - tvl, - }, - bsc: { - tvl, - }, - blast: { - tvl, - }, -}; diff --git a/projects/hinkal/owners.js b/projects/hinkal/owners.js deleted file mode 100644 index 893c5de86d2..00000000000 --- a/projects/hinkal/owners.js +++ /dev/null @@ -1,25 +0,0 @@ -const ETHEREUM_OWNER = "0x2ea81946fF675d5Eb88192144ffc1418fA442E28"; -const ARBITRUM_OWNER = "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De"; -const OPTIMISM_OWNER = "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De"; -const POLYGON_OWNER = "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5"; -const AVALANCHE_OWNER = "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De"; -const BNB_OWNER = "0x0036E884Cab4F427193839788EDEBB4B92B9a069"; -const BASE_OWNER = "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De"; -const BLAST_OWNER = "0x9606ebb543972fd8aed764341ead8ec94888b7b7"; -const BLAST_VOLATILE_OWNER = "0xba65d50cf4e6e739b2735338a964c3354faf9b19"; - -const ownerByChain = { - ethereum: ETHEREUM_OWNER, - arbitrum: ARBITRUM_OWNER, - optimism: OPTIMISM_OWNER, - polygon: POLYGON_OWNER, - avax: AVALANCHE_OWNER, - bsc: BNB_OWNER, - base: BASE_OWNER, - blast: { - owner: BLAST_OWNER, - volatileOwner: BLAST_VOLATILE_OWNER, - }, -}; - -module.exports = ownerByChain; diff --git a/projects/hinkal/registryTokens.js b/projects/hinkal/registryTokens.js deleted file mode 100644 index af1b80b4bc6..00000000000 --- a/projects/hinkal/registryTokens.js +++ /dev/null @@ -1,993 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const ETHEREUM_REGISTRY_TOKENS = [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.DAI, - "0x8E870D67F660D95d5be530380D0eC0bd388289E1", - ADDRESSES.ethereum.SDAI, - "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - "0xc4AD29ba4B3c580e6D59105FFf484999997675Ff", - ADDRESSES.ethereum.FRAX, - "0xFC2838a17D8e8B1D5456E0a351B0708a09211147", - "0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC", - "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", - "0xf43211935C781D5ca1a41d2041F397B8A7366C7A", - "0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B", - ADDRESSES.ethereum.CRV, - "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", - "0x5a6A4D54456819380173272A5E8E9B9904BdF41B", - ADDRESSES.ethereum.sUSD, - "0xC25a3A3b969415c80451098fa907EC722572917F", - "0xb2C35aC676F4A002669e195CF4dc50DDeDF6F0fA", - "0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb", - "0xA3D87FffcE63B53E0d54fAa1cc983B7eB0b74A9c", - "0xFCc5c47bE19d06BF83eB04298b026F81069ff65b", - "0x99f5aCc8EC2Da2BC0771c32814EFF52b712de1E5", - "0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6", - "0x051d7e5609917Bd9b73f04BAc0DED8Dd46a74301", - ADDRESSES.ethereum.LUSD, - "0x5E8422345238F34275888049021821E8E08CAa1f", - ADDRESSES.ethereum.CVX, - "0x865377367054516e17014CcdED1e7d814EDC9ce4", - "0x3A283D9c08E8b55966afb64C515f5143cf907611", - "0x06325440D014e39736583c165C2963BA99fAf14E", - "0x4d9f9D15101EEC665F77210cB999639f760F831E", - ADDRESSES.ethereum.RETH, - "0x6c38cE8984a890F5e46e6dF6117C26b3F1EcfC9C", - ADDRESSES.ethereum.cvxCRV, - "0x971add32Ea87f10bD192671630be3BE8A11b8623", - ADDRESSES.ethereum.TUSD, - "0xEcd5e75AFb02eFa118AF914515D6521aaBd189F1", - "0xb40b6608B2743E691C9B54DdBDEe7bf03cd79f1c", - "0x68934F60758243eafAf4D2cFeD27BF8010bede3a", - "0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6", - "0xdf55670e27bE5cDE7228dD0A6849181891c9ebA1", - "0x9D0464996170c6B9e75eED71c68B99dDEDf279e8", - ADDRESSES.ethereum.FXS, - ADDRESSES.ethereum.cvxFXS, - "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9", - "0xB30dA2376F63De30b42dC055C93fa474F31330A5", - "0x828b154032950C8ff7CF8085D841723Db2696056", - "0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86", - "0x87650D7bbfC3A9F10587d7778206671719d9910D", - "0x1cEB5cB57C4D4E2b2433641b95Dd330A33185A44", - "0x4647B6D835f3B393C7A955df51EEfcf0db961606", - "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6", - ADDRESSES.ethereum.LIDO, - "0xb79565c01b7Ae53618d9B847b9443aAf4f9011e7", - ADDRESSES.ethereum.YFI, - "0x29059568bB40344487d62f7450E78b8E6C74e0e5", - ADDRESSES.ethereum.cbETH, - "0x5b6C539b224014A09B3388e51CaAA8e354c959C8", - "0xd7C9F0e536dC865Ae858b0C0453Fe76D13c3bEAc", - "0x326290A1B0004eeE78fa6ED4F1d8f4b2523ab669", - "0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab", - "0xc9C32cd16Bf7eFB85Ff14e0c8603cc90F6F2eE49", - "0x836A808d4828586A69364065A1e064609F5078c7", - "0x43b4FdFD4Ff969587185cDB6f0BD875c5Fc83f8c", - "0x21E27a5E5513D6e65C4f830167390997aA84843a", - "0xdB25f211AB05b1c97D595516F45794528a807ad8", - "0x3D229E1B4faab62F621eF2F6A610961f7BD7b23B", - "0x856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3", - "0x94B17476A93b3262d87B9a326965D1E91f9c13E7", - "0xF95AAa7EBB1620e46221B73588502960Ef63dBa0", - ADDRESSES.ethereum.tBTC, - ADDRESSES.bsc.wBETH, - "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", - "0x39AA39c021dfbaE8faC545936693aC917d5E7563", - "0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2", - "0x0316EB71485b0Ab14103307bf65a021042c6d380", - "0xb19059ebb43466C323583928285a49f558E572Fd", - "0x8e595470Ed749b85C6F7669de83EAe304C2ec68F", - "0x76Eb2FE28b36B3ee97F3Adae0C69606eeDB2A37c", - "0x48759F220ED983dB51fA7A8C0D2AAb8f3ce4166a", - "0x5282a4eF67D9C33135340fB3289cc1711c13638C", - "0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3", - "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D", - "0x49849C98ae39Fff122806C06791Fa73784FB3675", - "0xA0d69E286B938e21CBf7E51D71F6A4c8918f482F", - ADDRESSES.ethereum.CRVUSD, - "0x3835a58CA93Cdb5f912519ad366826aC9a752510", - "0x892D701d94a43bDBCB5eA28891DaCA2Fa22A690b", - "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", - "0x4704aB1fb693ce163F7c9D3A31b3FF4eaF797714", - "0xD2967f45c4f384DEEa880F807Be904762a3DeA07", - "0xEd279fDD11cA84bEef15AF5D39BB4d4bEE23F0cA", - "0xF3A43307DcAFa93275993862Aae628fCB50dC768", - "0xE57180685E3348589E9521aa53Af0BCD497E884d", - "0x1539c2461d7432cc114b0903f1824079BfCA2C92", - "0xd4D620B23E91031fa08045b6083878f42558d6b9", - "0xe17D6212eAa54D98187026A770dee96f7C264feC", - "0xD1BeaD7CadcCC6b6a715A6272c39F1EC54F6EC99", - "0x047c41817954b51309a2bd6f60e47bC115C23f1F", - "0x6853691Ca8Da03Da16194E468068bE5A80F103b0", - "0xCc19786F91BB1F3F3Fd9A2eA9fD9a54F7743039E", - "0x4dE81AD42E9651755716177fAe9911c54F5b055B", - "0x06c1e90eeb34e7Fa6d78B8E58348Ae15C1a615E4", - "0xe50e2fe90745A8510491F89113959a1EF01AD400", - "0x8cB4f56e9bAa398b6F6a6Fb1B2C4E8ca8cda6ae5", - "0xd5bAd7c89028B3F7094e40DcCe83D4e6b3Fd9AA4", - "0x7f3F33B42b9734e61cb44424D130B5f6e09C9Db3", - "0x15780E0e9618c26dA679740C43bEc76830Ff187b", - "0xFc6a9D39b44a174B5Ba708dBaa437632d78B8585", - "0x83BE6565c0758f746c09f95559B45Cfb9a0FFFc4", - "0xfE5716D0C141F3d800995420e1d3fB0D0CFFCC31", - "0x4115150523599D1F6C6Fa27F5A4C27D578Fd8ce5", - "0x49b562bDcd28dB124f6bA51DEB8Ca483563c067a", - "0xBE2bD093B8F342e060E79Fad6059B1057F016Ba4", - "0x3fe43D4ba0a5BAcC800c7E7E782466a27ab108bf", - "0x4dd0cF20237deb5F2bE76340838B9e2D7c70E852", - "0xE0d5f9DA3613C047003b77cAa31270aBE3EdA6b0", - "0xB9911AB699FD781efDA446e7FD995d375B437c8B", - "0x37925b6319cD41014583A6476a7a1d52Ea404b2f", - "0xAE0bFfc3110e69DA8993F11C1CBd9a6eA3d16daF", - "0x42ED016F826165C2e5976fe5bC3df540C5aD0Af7", - "0x1E19CF2D73a72Ef1332C882F20534B6519Be0276", - "0x3FA8C89704e5d07565444009e5d9e624B40Be813", - "0x32296969Ef14EB0c6d29669C550D4a0449130230", - "0x7F86Bf177Dd4F3494b841a37e810A34dD56c829B", - "0xe6b5CC1B4b47305c58392CE3D359B10282FC36Ea", - "0x2863a328A0B7fC6040f11614FA0728587DB8e353", - "0x642431623AE5d73C19fC931aAeA0d4677303880c", - "0xa2847348b58CEd0cA58d23c7e9106A49f1427Df6", - "0xeaCADc656c9394fb09af25AeBc0897fDfFe484A1", - "0x380aAbE019ed2a9C2d632b51eDDD30fd804d0fAD", - "0x101816545F6bd2b1076434B54383a1E633390A2E", - "0x4d224452801ACEd8B2F0aebE155379bb5D594381", - "0x20a61B948E33879ce7F23e535CC7BAA3BC66c5a9", - "0x5870700f1272a1adbb87c3140bd770880a95e55d", - "0x93ce650b8d3a7a7e44121db82a0429a3884db599", - "0xE49127B7AEfc043847caDd85B8a41973854D30f5", - "0x8A31A94bF0926B82083C80E18B331085B84E92D7", - "0xcc26a5246c6a04a85e997d6581c1b4f14363841a", - "0x9a7Ce41c96Db8d792497D7BEe70fAfb7F8393D71", - "0xd4EC67cF6C0Aa65F74eb7F03216Ea23151af21b8", - "0x4F1546Ce825dB85310aC2c2cfb369543d73FD0a2", - "0x394Aa83d0E5D348c7FA39325d2A25993704Faf8f", - "0xD1105d6502d3c562B447A75149B00aD366b3212d", - "0xE08FF1427b199241506FcdCC23fcc24Dd98a4FA9", - "0xC21545c26661ae74b3259B55aE007ACC4Bf5d4e3", - "0x9ee91F9f426fA633d227f7a9b000E28b9dfd8599", - ADDRESSES.ethereum.MATIC, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.EETH, - ADDRESSES.ethereum.WSTETH, - "0xa0Cd8B83B63381895C1854A605315fa7eF50e026", - "0x25aE9BE521898d33c7DF6Ae8c6669Fe038Bb3550", - "0x9434722bf29750B44649eb1b1A10a335d40edFc1", - "0xF2280cBa8e0B9bc9b87b5aFbBeF8C41C20a5ddBe", - "0x5F1894e4b409D7199Ea209b9e43C996640BCB691", - "0xa653510227752632ebf692a77e5032d4afFaB3a2", - "0xA1998B87C2935BDbd7fE6ee48542a59a0435a3Ee", - "0xC8c3031fB628Bdf4eA0F7cA5F96E369Dea07624e", - "0xDc118133332f703e22C0b0FA7E0DD7d1299A7247", - "0x94cc50e4521bd271c1a997a3a4dc815c2f920b41", - "0xfef79304c80a694dfd9e603d624567d470e1a0e7", - "0x8272e1a3dbef607c04aa6e5bd3a1a134c8ac063b", - "0xc794c6a95f30d0ebf7b3bbe85e8a0a95c9e411c1", - "0xaeda92e6a3b1028edc139a4ae56ec881f3064d4f", - "0xacdf0dba4b9839b96221a8487e9ca660a48212be", - ADDRESSES.ethereum.LINK, - "0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32", - "0x04c154b66cb340f3ae24111cc767e0184ed00cc6", - "0xf8fde8a259a3698902c88bdb1e13ff28cd7f6f09", - "0x76237BCfDbe8e06FB774663add96216961df4ff3", - "0x0dE54CFdfeD8005176f8b7A9D5438B45c4F1df1e", - "0xb27D1729489d04473631f0AFAca3c3A7389ac9F8", - "0x38D64ce1Bdf1A9f24E0Ec469C9cAde61236fB4a0", - "0x9961BdBE8B7091E584c2bF9D0a160C583f564A8c", - "0xe2Ed1dAc3A9547BC6057e32bf8133b5268D7d987", - "0x6307e6688819951cf8d6b6066018243d2496952f", - "0xe035e27a8ed6842b478933820f90093d205f7098", - "0x4ef4c7519023f30a78647eeab321d6cfabc2513c", - "0x4253ac4046fbfdafcfe125d067b6d89f6923843e", - "0x67701d67b60a96473bfc4873e7a484035c8609b0", - "0x6685fcfce05e7502bf9f0aa03b36025b09374726", - "0xe3e637f8acc097244a065791142c29fbf5877d18", - "0x1BB9b64927e0C5e207C9DB4093b3738Eef5D8447", - "0xC6fDF0921c480Bd7Af89Ab4461D4aCDA24058a65", - "0x6410ee1f8417a7cE1c3E68E3434c1d6beef6944E", - "0x9456cB3ae9fA8788ac1af4a7A18b339D4028061D", - "0x26dA2546602f63b84B3C4dF36476364f6350706E", - "0x0a3fE1d39E5c60CfdB48Ba2Dc6B7c855289Dec7C", - "0xA27fa5E11B121277423aC0b8b372596f2805e36a", - "0x41e5c3aD70DA89dd7b6AF9Af3cd6861FbC31eA16", - ADDRESSES.ethereum.WEETH, - "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", - ADDRESSES.linea.rzETH, - "0xD9A442856C234a39a81a089C06451EBAa4306a72", - "0xAC0047886a985071476a1186bE89222659970d65", - "0xfb35Fd0095dD1096b1Ca49AD44d8C5812A201677", - "0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966", - "0x730A5E2AcEbccAA5e9095723B3CB862739DA793c", - "0x0ED3A1D45DfdCf85BCc6C7BAFDC0170A357B974C", - "0xB05cABCd99cf9a73b19805edefC5f67CA5d1895E", - "0x253008ba4aE2f3E6488DC998a5321D4EB1a0c905", - "0x391B570e81e354a85a496952b66ADc831715f54f", - "0xC58aa33Ce619c7f7Ac4929DF357D0Ef762edbD23", - "0x7a493be5c2ce014cd049bf178a1ac0db1b434744", - "0x98601E27d41ccff643da9d981dc708cf9eF1F150", - "0xDDFD5e912C1949B4bDb12579002c44B7A83F9E88", - "0xD7DF7E085214743530afF339aFC420c7c720BFa7", - "0x7C2D26182adeEf96976035986cF56474feC03bDa", - "0x4AE5411F3863CdB640309e84CEDf4B08B8b33FfF", - "0x34349c5569e7b846c3558961552d2202760a9789", - "0x029aad400f6092dc735a65be95102efcc2fe64bf", - "0x094be6bd31d7b860f7d2c1f280fd09f0463d7e67", - "0x019e773bE2D65D5fE30bE17547b89500C7C4CD5E", - "0x1346da36093Fdb8013E1125046f0dCBbBF645b3F", - "0x4E0854085bC5a2fa8031ea5819863BD280e610F3", - "0x9Ab43f73054C07b02e02c5468b3eB058ccdAA019", - "0x223026549740E2672b3f05c867Fd2B31207338A2", - "0x3e0A917d4d914e432B82825e6FBEe039b89f4477", - "0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8", - "0x0B925eD163218f6662a35e0f0371Ac234f9E9371", - "0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8", - "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c", - "0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a", - "0x018008bfb33d285247A21d44E50697654f754e63", - "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656", - "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e", - "0xBcca60bB61934080951369a648Fb03DF4F96263C", - "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811", - "0x028171bCA77440897B824Ca71D1c56caC55b68A3", - "0x582d872a1b094fc48f5de31d3b73f2d9be47def1", - "0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3", - "0x3c3a81e81dc49a522a592e7622a7e711c06bf354", - "0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b", - "0x75231f58b43240c9718dd58b4967c5114342a86c", - "0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24", - "0xf57e7e7c23978c3caec3c3548e3d615c346e79ff", - "0xc944e90c64b2c07662a292be6244bdf05cda44a7", - "0xe28b3b32b6c345a34ff64674606124dd5aceca30", - ADDRESSES.ethereum.USDe, - "0xaea46a60368a7bd060eec7df8cba43b7ef41ad85", - "0x4a220e6096b25eadb88358cb44068a3248254675", - "0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce", - "0x57e114b691db790c35207b2e685d4a43181e6061", - ADDRESSES.ethereum.AAVE, - ADDRESSES.ethereum.UNI, - "0xEEda34A377dD0ca676b9511EE1324974fA8d980D", - "0x0d86883faf4ffd7aeb116390af37746f45b6f378", - ADDRESSES.ethereum.USD0, - "0x35d8949372d46b7a3d5a56006ae77b215fc69bc0", - "0x1f7e9321ce32af1f9ea1185fd10d31fea31ffd95", - "0x270B7748CdF8243bFe68FaCE7230ef0fCE695389", - "0x8B2098043Cea715A18E81CC0A6a9d202Cf279014", -]; - -const ARBITRUM_REGISTRY_TOKENS = [ - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.optimism.DAI, - ADDRESSES.arbitrum.MIM, - "0x7f90122BF0700F9E7e1F688fe926940E8839F353", - ADDRESSES.arbitrum.FRAX, - "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978", - "0x64343594Ab9b56e99087BfA6F2335Db24c2d1F17", - "0x641441c631e2F909700d2f41FD87F0aA6A6b4EDb", - ADDRESSES.kava.axlUSDC, - "0xC9B8a3FDECB9D5b218d02555a8Baf332E5B740d5", - ADDRESSES.arbitrum.WSTETH, - "0x8616E8EA83f048ab9A5eC513c9412Dd2993bcE3F", - ADDRESSES.fantom.renBTC, - "0x93FC1235119c554576D8AB23583371fc25B803ee", - "0xaE6aab43C4f3E0cea4Ab83752C278f8dEbabA689", - "0xb1781BF9C582A71269c6098E4155Ea8b15B35305", - "0xf94a05257D3Dd44f30799F03D190988d59aae868", - "0x59bF0545FCa0E5Ad48E13DA269faCD2E8C886Ba4", - "0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1", - "0x8e0B8c8BB9db49a46697F3a5Bb8A308e744821D2", - "0xDbcD16e622c95AcB2650b38eC799f76BFC557a0b", - "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7", - "0x2ce5Fd6f6F4a159987eac99FF5158B7B62189Acf", - "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40", - "0x755D6688AD74661Add2FB29212ef9153D40fcA46", - "0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb", - "0xaB174fFA530C888649C44C4d21C849BBAaBc723F", - "0xae0babD1483ed944BeEd2e112021Ed01301A83aC", - "0xd92Be5A1c565Db5256cDD537B875ED46111Bd8b0", - "0xfC78eAFf2E8290D3d608B689e93ec6954E21B6C2", - "0xB27c433C1cdb1B42E2601Af2d40dD442fbf1cdc3", - "0x9dbbBaecACEDf53d5Caa295b8293c1def2055Adc", - "0x9E75f8298e458B76382870982788988A0799195b", - "0xDa2307A45D298e855415675bF388e2bd64351D5b", - "0xEc7c0205a6f426c2Cb1667d783B5B4fD2f875434", - "0x07Db98358D58Ba9bE90cd0A18cd86AF807ac3B4E", - "0x8cbaAC87FDD9Bb6C3FdB5b3C870b2443D0284fa6", - "0x71c15610F11D669d4A9e02a64e43c6D1E27c6Cad", - "0xBDF4e730ED5152a7AC646BB7b514Ed624E1147C4", - "0xf6a1284Dc2ce247Bca885ac4F36b37E91d3bD032", - "0x994Ff2ab544D00aD4EC0380a1Be8F75f4EC47Cf9", - "0x46034C63ad03254D6E96c655e82393E6C31E07C3", - "0xD496eA90a454eA49e30A8fD9E053C186D4FC897D", - "0xd37025aC6227334C7762AeD5929Ce3272fbb6fdC", - "0xFCb0101503f399B4752E5160ccd5EcE3a71719bd", - "0xa7fC98760331409c1FC0177dECF083cE9d5aed87", - "0x5A8beF2fEb83057bBCcC81cea985a94a62A86208", - "0x5B904f19fb9ccf493b623e5c8cE91603665788b0", - "0xA98070C4a600678a93cEaF4bF629eE255F46f64F", - "0x0594Ec32240C78e056304b4A60f48a67c69179b4", - "0xB2DefC5c3A69abe2B681C714b080A892825B2073", - "0x4D323f77c32EDdC62BF8eAbA11E5C573FD0a2ccd", - "0xeD29730F9FF29ea50D63462D8EC84307d36b8954", - "0x12c997FAdca32dB01E3145DE7Bf9cdB06455391D", - "0x85B10228cd93A6e5E354Ff0f2c60875E8E62F65A", - "0xCF297A94d527A34081Db2A20Eb1c87248cD1ea81", - "0xa0d758b81f8ed6635CDE1DA91C8fe1bD48C28A09", - "0xfd421d60905d2f7cabd49e6a5703a3499367b8f4", - "0xe20F93279fF3538b1ad70D11bA160755625e3400", - "0x4a2f6ae7f3e5d715689530873ec35593dc28951b", - "0xb67c014fa700e69681a673876eb8bafaa36bff71", - ADDRESSES.arbitrum.GMX, - "0x3c6ef5ed8ad5df0d5e3d05c6e607c60f987fb735", - "0x9cb911cbb270cae0d132689ce11c2c52ab2dedbc", - "0x9791d590788598535278552eecd4b211bfc790cb", - "0xade4a71bb62bec25154cfc7e6ff49a513b491e81", - "0xced06c9330b02c378c31c7b12570b1c38abfcea6", - "0x423a1323c871abc9d89eb06855bf5347048fc4a5", - "0xbf6cbb1f40a542af50839cad01b0dc1747f11e18", - "0x5892bA611fdC1598b72a30D087d28c989d429eF7", - "0x3fd4954a851ead144c2ff72b1f5a38ea5976bd54", - "0x8bc65eed474d1a00555825c91feab6a8255c2107", - "0x892785f33cdee22a30aef750f285e18c18040c3e", - "0x36bf227d6bac96e2ab1ebb5492ecec69c691943f", - "0x5402b5f40310bded796c7d0f3ff6683f5c0cffdf", - "0x905dfcd5649217c42684f23958568e533c711aa3", - "0xB7E50106A5bd3Cf21AF210A755F9C8740890A8c9", - "0xc9f52540976385a84bf416903e1ca3983c539e34", - "0x542f16da0efb162d20bf4358efa095b70a100f9e", - "0x59745774ed5eff903e615f5a2282cae03484985a", - "0xce3b19d820cb8b9ae370e423b0a329c4314335fe", - "0x539bdE0d7Dbd336b79148AA742883198BBF60342", - "0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae", - ADDRESSES.arbitrum.ARB, - "0xC3691c157D1B3A431B841230a7B11d5a373097e1", - "0x7Bdc233E5369Ac023b9894645902C9032A72D9Ee", - "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", - "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", - "0x59eC3043D7314B9650294Fd800149b53007f804E", - "0x972c6F2b29638b9AD6955c4F0b0c1239b034f053", - "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19", - "0x886867993080DC3bBFC39CDfc343A0e083bB34E0", - "0xB72ea6F99EfA5BD6Fb400BaA4eFddC3cfB075215", - "0x660108601EED17aF2832A1c0F1D7dE74F560C5ed", - ADDRESSES.arbitrum.LINK, - "0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0", - "0x9623063377ad1b27544c965ccd7342f7ea7e88c7", - "0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91", - "0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60", - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf", - "0x078f358208685046a11C85e8ad32895DED33A249", - "0x724dc807b04555b71ed48a6896b6F41593b8C637", - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", - ADDRESSES.arbitrum.weETH, - ADDRESSES.berachain.rsETH, - ADDRESSES.blast.ezETH, -]; - -const OPTIMISM_REGISTRY_TOKENS = [ - ADDRESSES.optimism.USDC_CIRCLE, - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.USDT, - ADDRESSES.optimism.WETH_1, - ADDRESSES.optimism.WBTC, - ADDRESSES.optimism.DAI, - ADDRESSES.optimism.sUSD, - "0x061b87122Ed14b9526A813209C8a59a633257bAb", - ADDRESSES.optimism.WSTETH, - "0xEfDE221f306152971D8e9f181bFe998447975810", - "0x298B9B95708152ff6968aafd889c6586e9169f1D", - "0x9F2fE3500B1a7E285FDc337acacE94c480e00130", - "0x1337BedC9D22ecbe766dF105c9623922A27963EC", - "0x0994206dfe8de6ec6920ff4d779b0d950605fb53", - ADDRESSES.optimism.sETH, - "0x7Bc5728BC2b59B45a58d9A576E2Ffc5f0505B35E", - "0xB153FB3d196A8eB25522705560ac152eeEc57901", - "0x810D1AaA4Cd8F21c23bB648F2dfb9DC232A01F09", - "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40", - "0x1Dc5c0f8668a9F54ED922171d578011850ca0341", - "0x0892a178c363b4739e5Ac89E9155B9c30214C0c0", - "0xD09B5a0650d68Aae6B1666eE5E770a383d29A97C", - "0x56770b94279539416855fe29Ef14b26438B5e421", - "0x95a05D06Decf8e1Eb93aE09B612FbD342F2F9E2E", - "0x7Ca75bdEa9dEde97F8B13C6641B768650CB83782", - "0x4Fd63966879300caFafBB35D157dC5229278Ed23", - "0xd16232ad60188B68076a235c65d692090caba155", - "0xE54e4020d1C3afDB312095D90054103E68fe34B0", - "0x6dA98Bde0068d10DDD11b468b197eA97D96F96Bc", - "0xbcFa4cfA97f74a6AbF80b9901569BBc8654F4315", - "0x0b28C2e41058EDc7D66c516c617b664Ea86eeC5d", - "0x3f42Dc59DC4dF5cD607163bC620168f7FF7aB970", - "0xFF5318f81Dd791e92d51b8A54fA3538832D2890D", - "0xBE418771bC91F75C4d2BcE1d5E2b7286F50992da", - "0x2e17b8193566345a2Dd467183526dEdc42d2d5A8", - "0x5C2048094bAaDe483D0b1DA85c3Da6200A88a849", - "0xBD08972Cef7C9a5A046C9Ef13C9c3CE13739B8d6", - "0xa1055762336F92b4B8d2eDC032A0Ce45ead6280a", - "0xB720FBC32d60BB6dcc955Be86b98D8fD3c4bA645", - "0x2B47C794c3789f499D8A54Ec12f949EeCCE8bA16", - "0x6e57B9E54ea043a829584B22182ad22bF446926C", - "0xe8B8bfF1E415258eb3d5FA8DeeE9C38406e609cd", - "0x1f8b46abe1EAbF5A60CbBB5Fb2e4a6A46fA0b6e6", - "0x8134A2fDC127549480865fB8E5A9E8A8a95a54c5", - "0xE5F28Fc43Bb40CDF7202ebe406793815b6f07FbD", - "0x4d7959d17B9710BE87e3657e69d946914221BB88", - "0xB280D03909Cc18640621955Cb3bC30948DF2Fa9a", - "0x22D63A26c730d49e5Eab461E4f5De1D8BdF89C92", - "0x19715771E30c93915A5bbDa134d782b81A820076", - "0x0df083de449F75691fc5A36477a6f3284C269108", - "0x3DD9556a521d6e57bE480c94da102fedf0429aba", - "0x107Dbf9c9C0EF2Df114159e5C7DC2baf7C444cFF", - "0x54214d0C7772eb6f71ED4De294b3f809691005C9", - "0xF731390c889d9a2089C5bC1d4640F3BA0708D82B", - "0xbe7dC3d2457BBff03943d962F7E4cEE34DFBA69d", - "0x25DE69dA4469A96974FaE79d0C41366A63317FDC", - "0x06E0A84c71dBD037c618CCf90798474E0e6f9C91", - "0x88F72d1f49Ea88f86fc52bebB0c1d0Ef232AE483", - "0x35775aA87b4CA1c04a6c579c90cE9add09247958", - "0xE2f035f59De6a952FF699b4EDD0f99c466f25fEc", - "0xef8D6dDE0a0f0CCdaDB678366a94D93f1C449689", - "0x2232455bf4622002c1416153EE59fd32B239863B", - "0xdCC5DC90A803928Dc21556590D4620030966270F", - "0x3b4DdC7888F752a96290344a1A926E73b80423c0", - "0xcAa74e50428bDC4Af6A7Ead65fFFf77F0D231E80", - "0x062F29e2b5bD99523DD3508207eb2C2CbAf98D50", - "0x7c2967C20B03a8004ea81e86Ac1847D00e7B4CD1", - "0x52cC5B5CB98C9a7fb8cCe7d4b4e8F41E26ce04a8", - "0x6B47afc8bf3b2e013b5e9178e8015Cc620983b51", - "0x011028aB93B355308E4350D109F42aeCfA075604", - "0x8a21Ea69300Fe56ee19fE974e9791a212114573F", - "0xa85F2DeBc911c54414f99103123965c94e351873", - "0x746c19A336A3131fD85D3AB5F16576b1b047F512", - "0x1973ef31F2A82B3f73b8C9Ee1c440615084d5242", - "0x6Fb45a8183660F30EA1c6cDFDDBFdC7ef7925801", - "0xfE1C64D42B7d6554Cc2ACD0D74e2983a2dE4A62f", - "0x8aD01c3a425987c508A69149185383BAf6F47534", - "0x453f61390ce6DfB668bbF4D93E58c94BB0ae81f3", - "0x1A1F0Db1050D1cAD52eEB72371EbFD7716b53a2f", - "0x718A66F21415a5f75F5e8652e8Be55FCF1D1df05", - "0x1910CCeCC57869F1Ff2337dda001246B92E8418A", - "0xB8Ce10759feb3B63B75557f5f9933bD22127f0eC", - "0x100Cd460D7f549B4cc2Ed35d4ff20ac71B377C96", - "0x2bC96f9e07Edc7F1aA9Aa26E85dc7dd30ACe59a6", - "0x2793AF2c7db9f0A06d2727Dd392Ab4Bb1b82a98D", - "0x00557e194B717dCfEbaE6222091C5F806DF99698", - "0x182fe51442C7D65360eD1511f30be6261c2C20C1", - "0xD019FD6267F93ebE5A92DEBB760135a4F02a75F7", - "0xf92129fE0923d766C2540796d4eA31Ff9FF65522", - "0x79149B500f0d796aA7f85e0170d16C7e79BAd3C5", - "0x92651E1bBfE0f8423119AfC4B0610C747Fa125a1", - "0x738CDf563C41aAF8aA350D0a3c24bF614FfD75dC", - "0x669fBdda8553edeAEdd7272391aC966a8AABEC21", - "0x797c35a8032CE0A8dFcA308ac1b2276359cd463b", - "0xD9E277eA320C53dE06C535f0D922A76a68CB9A9C", - "0x9B280aD674d35008482F94a673f8017B961C29F6", - "0x972F747285c2f32699CEFFEbdcF2Ae74F4b58D0c", - "0x935A64d0825D86c1ca57Fe8f270e635AC1a0878A", - "0xdD84190aF336Ee2831eea88B6783958e8F269de9", - "0xB708038C1b4cF9f91CcB918DAD1B9fD757ADa5C1", - "0x81F2F132465Ffb4B3C5d11f3d94582cC5c281c04", - "0x613f54c8836FD2C09B910869AC9d4de5e49Db1d8", - "0x0980C3171E32c4508f614ceC15A3819B6cCf372c", - "0xf659Fe930eEa70Bc49B6DD53d828CBaD12673a2a", - "0x642F04eCAa00D443fBf2de2AaC9A9e0ACfA4FCE7", - "0x0414BA5d3991a7B901d4e3f18b694a62414aC7Db", - "0x28F4cc9552F578B5C6e3a9204D6277cBa49a9416", - "0x4E60495550071693bc8bDfFC40033d278157EAC7", - "0x6387765fFA609aB9A1dA1B16C455548Bfed7CbEA", - "0xfA09479d72E2b3f8B6dF63399772237Ad6658D76", - "0xc37a0a37664aeB3848f98C5dD5d7AE286A1E9Ebd", - "0x47029bc8f5CBe3b464004E87eF9c9419a48018cd", - "0xe8537b6FF1039CB9eD0B71713f697DDbaDBb717d", - "0x79c912FEF520be002c2B6e57EC4324e260f38E50", - "0xf3C45b45223Df6071a478851B9C17e0630fDf535", - "0xC5c247580A4A6E4d3811c0DA6215057aaC480bAc", - "0xf04458f7B21265b80FC340dE7Ee598e24485c5bB", - "0x8F47041aDbeF5BF321c9F63A0660326614ab6B60", - "0x77b6d0279c9cEF559Ef7c32c31d9a5d8Acb664FE", - "0x8542DD4744edEa38b8a9306268b08F4D26d38581", - "0xDB61f9B480f0a8B817811cFAA89A1c219c355224", - "0x4BE2CBE40521279b8fc561e65Bb842bf73ec3a80", - "0xd22363e3762cA7339569F3d33EADe20127D5F98C", - "0xFd7FddFc0A729eCF45fB6B12fA3B71A575E1966F", - "0x667002F9DC61ebcBA8Ee1Cbeb2ad04060388f223", - "0xe63337211DdE2569C348D9B3A0acb5637CFa8aB3", - "0xF753A50fc755c6622BBCAa0f59F0522f264F006e", - "0x6d5BA400640226e24b50214d2bBb3D4Db8e6e15a", - "0xd25711EdfBf747efCE181442Cc1D8F5F8fc8a0D3", - "0x7B50775383d3D6f0215A8F290f2C9e2eEBBEceb2", - "0xd95E98fc33670dC033424E7Aa0578D742D00f9C7", - "0x1AD06Ca54de04DBe9e2817F4C13eCB406DCbeAf0", - "0x296f55f8fb28e498b858d0bcda06d955b2cb3f97", - "0x73cb180bf0521828d8849bc8CF2B920918e23032", - "0x970D50d09F3a656b43E11B0D45241a84e3a6e011", - "0x1DB2466d9F5e10D7090E7152B68d62703a2245F0", - "0xc40F949F8a4e094D1b49a23ea9241D289B7b2819", - ADDRESSES.optimism.alUSD, - ADDRESSES.moonbeam.MAI, - "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05", - ADDRESSES.optimism.OP, - ADDRESSES.optimism.FRAX, - "0xfdb794692724153d1488ccdbe0c56c252596735f", - "0x1e925De1c68ef83bD98eE3E130eF14a50309C01B", - "0xC03b43d492d904406db2d7D57e67C7e8234bA752", - "0x920cf626a271321c151d027030d5d08af699456b", - "0x484c2D6e3cDd945a8B2DF735e079178C1036578c", - "0x6806411765Af15Bddd26f8f544A34cC40cb9838B", - "0x3E29D3A9316dAB217754d13b28646B76607c5f04", - "0x8aE125E8653821E851F12A49F7765db9a9ce7384", - "0x217D47011b23BB961eB6D93cA9945B7501a5BB11", - "0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED", - ADDRESSES.base.DAI, - "0x79af5dd14e855823fa3e9ecacdf001d99647d043", - "0x9560e827aF36c94D2Ac33a39bCE1Fe78631088Db", - "0x4e720dd3ac5cfe1e1fbde4935f386bb1c66f4642", - "0x29c431806E536Fb22ce2Edc8dd6e3C3A0d5689a8", - "0xDaA24E888432b5aa607105e256919Ddfc8b327E9", - "0xC3691c157D1B3A431B841230a7B11d5a373097e1", - "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", - "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", - "0x59eC3043D7314B9650294Fd800149b53007f804E", - "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19", - "0x6fd9d7ad17242c41f7131d257212c54a0e816691", - "0x76fb31fb4af56892a25e32cfc43de717950c9278", - "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - "0x23ee2343b892b1bb63503a4fabc840e0e2c6810f", - "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6", - "0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1", - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - "0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA", - "0x078f358208685046a11C85e8ad32895DED33A249", - "0x38d693cE1dF5AaDF7bC62595A37D667aD57922e5", - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", - ADDRESSES.berachain.rsETH, - "0x346e03F8Cce9fE01dCB3d0Da3e9D00dC2c0E08f0", -]; - -const POLYGON_REGISTRY_TOKENS = [ - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDC_CIRCLE, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.WBTC, - ADDRESSES.polygon.DAI, - "0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171", - "0x87ff96aba480f1813aF5c780387d8De7cf7D8261", - "0x2088C47Fc0c78356c622F79dBa4CbE1cCfA84A91", - "0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7", - ADDRESSES.fantom.renBTC, - "0xD6DF932A45C0f255f85145f286eA0b292B21C90B", - "0xa3FC7E0021970f5AF674aD837a8dc09e2F12F37B", - "0x7D645CBbCAdE2A130bF1bf0528b8541d32D3f8Cf", - "0x2e1AD108fF1D8C782fcBbB89AAd783aC49586756", - "0x20D3922b4a1A8560E1aC99FBA4faDe0c849e2142", - "0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c", - ADDRESSES.polygon.WMATIC_2, - "0xf8a57c1d3b9629b77b6726a042ca48990A84Fb49", - ADDRESSES.polygon.FRAX, - "0xA691D34Abf93C0A77998e53B564bEcfaf46Dae27", - "0xaA91CDD7abb47F821Cf07a2d38Cc8668DEAf1bdc", - "0x8343091F2499FD4b6174A46D067A920a3b851FF9", - "0x431D5dfF03120AFA4bDf332c61A6e1766eF37BDB", - "0xAd326c253A84e9805559b73A08724e11E49ca651", - "0xE2Aa7db6dA1dAE97C5f5C6914d285fBfCC32A128", - "0x7BDF330f423Ea880FF95fC41A280fD5eCFD3D09f", - "0xE111178A87A3BFf0c8d18DECBa5798827539Ae99", - "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1", - "0x750e4C4984a9e0f12978eA6742Bc1c5D248f40ed", - "0xb5DFABd7fF7F83BAB83995E72A52B97ABb7bcf63", - "0x361a5a4993493ce00f61c32d4ecca5512b82ce90", - "0x2C2D8a078B33bf7782a16AcCE2C5BA6653a90D5f", - "0x172370d5Cd63279eFa6d502DAB29171933a610AF", - "0xdAD97F7713Ae9437fa9249920eC8507e5FbB23d3", - "0x8096ac61db23291252574D49f036f0f9ed8ab390", - "0xA73EdCf18421B56D9AF1cE08A34E102E23b2C4B6", - "0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4", - "0x600743B1d8A96438bD46836fD34977a00293f6Aa", - "0x447646e84498552e62eCF097Cc305eaBFFF09308", - "0xa138341185a9D0429B0021A11FB717B225e13e1F", - "0xb0658482b405496C4EE9453cD0a463b134aEf9d0", - "0xb61Ecec987a9529dbA13a8Dd10ea24446ccBB6ae", - "0xe7CEA2F6d7b120174BF3A9Bc98efaF1fF72C997d", - "0xBed1d474DdA97edcEB7b9af13be4cbf1Bb98A2D3", - "0xfBA3b7Bb043415035220b1c44FB4756434639392", - "0x7BD9757FbAc089d60DaFF1Fa6bfE3BC99b0F5735", - "0xAdf577B69eEaC9Df325536cf1aF106372f2Da263", - "0x81c86081d533f280A8DAaE17F672Fb84B6ed65e3", - "0xbb1b19495b8fe7c402427479b9ac14886cbbaaee", - "0x20759F567BB3EcDB55c817c9a1d13076aB215EdC", - "0x8D9649e50A0d1da8E939f800fB926cdE8f18B47D", - "0xa7de0D88D02B9589d3b02cE52174431275169b77", - "0x40379a439D4F6795B6fc9aa5687dB461677A2dBa", - "0x00e8c0E92eB3Ad88189E7125Ec8825eDc03Ab265", - "0x97B2632DB51967b2AedF4c50FfC3a9D965940bEd", - "0x5A0801BAd20B6c62d86C566ca90688A6b9ea1d3f", - "0x1C480521100c962F7da106839a5A504B5A7457a1", - "0x108c7a293162Adff86DA216AB5F91e56723125dc", - "0x4C98CB046c3eb7e3ae7Eb49a33D6f3386Ec2b9D9", - "0x2520D50bfD793D3C757900D81229422F70171969", - "0x2F4BBA9fC4F77F16829F84181eB7C8b50F639F95", - "0x06b73b12421C667A07877B0740bA299e1de73B15", - "0xa0FdCDDA62C4C6a0109A702a7Efe59B4E8807e3f", - "0x108a7474461dC3059E4a6f9F8c7C8612056195A7", - "0xc65E5b6084FAd2F20e289b0d4e64F450cf386E6c", - "0xf0695B22d8F416FEC35E02668aE01B9EEAF96a0D", - "0xAA7C2879DaF8034722A0977f13c343aF0883E92e", - "0x01a8F2E5BfB8679C82442F90e1166469a2E530c8", - "0xB476B7A027da3D9fB5A5c9CB6078A34f7289B476", - "0x67Ecbe3a67624c80356386413E068bfFc03ad228", - "0xeD2905F595B6Ba103d8dF047Aa6dA3708FE6548b", - "0x1A723371f9dc30653dafd826B60d9335bf867E35", - "0x23c65213458A2dcc1321f84Ab42dCaECD79C2215", - "0x4BDA6C4d2f53B2Cd7F7FAc9287902a9928002e7B", - "0x944A5C12cD4399ABC6883fF1ba40A14c23B2Fd37", - "0xb87e2D83DB70599B14818C931DE0A656bf620e77", - "0x449533BcF3Fc5963515f87c17CDfE762b7Ab89fb", - "0x6F79CA179FE1cD131574a08B96e92744B6649128", - "0x99AB491471FBcB7D9d2b69729462fe223a4cCdab", - "0x2eac840950F1FF53d03A55A0255ea787fE84a4b5", - "0xe7B6CB2BfaB7C886CAA97fd3f181bBDad664A19B", - "0x3eEcd5FeD0900451A95537De7F3543cA4Ed926a7", - "0x2FbE43adaf91EE9A6B8252A017297007Acf696a3", - "0x346c16e7a76D224b9955c0F67e93b413Fc63ba3E", - "0x81cec323bf8c4164c66ec066f53cc053a535f03d", - "0x1d34Db65C4fe0f6A73194DBDC4a44ae05B46e6c5", - "0x04d521e2c414e6d898c6f2599fdd863edf49e247", - "0x8AAc0f2a6cAE626b656Ca16c58A50C87CBBC7ff5", - "0xcdedc76bcc6351275acdef823190453ec43b4edf", - "0x184a51465925ab8a0025e47a00cab6d3769b5487", - "0x964eA598DF006F692105A951a774ff9825a454Fe", - "0x4ec61a96738564CaD591841df0c8B5b6eA785E4C", - "0x3f35705479d9d77c619b2aac9dd7a64e57151506", - "0x4252Da0559960a50FDd50D5bDDe1B78659B7Ea2A", - "0x98b6a5eedc9382e2c4f8a38f985f2e9ac0b0e84c", - "0x3325a25A2608EA723cB5D72E27af65AACFfb810e", - "0xb4d852b92148eaa16467295975167e640e1fe57a", - "0x02203f2351E7aC6aB5051205172D3f772db7D814", - "0xb759b56d82C88806bbcBcD60767E39Af5cc51F32", - "0xBD02973b441Aa83c8EecEA158b98B5984bb1036E", - "0x2C6d11e756986f1537a2c71c851e9a1F7A0008b2", - "0xD74B5df80347cE9c81b91864DF6a50FfAfE44aa5", - "0x5268F5F2a9799f747A55f193d2E266c77653E518", - "0xd17cb0f162f133e339c0bbfc18c36c357e681d6b", - "0xe058e1ffff9b13d3fcd4803fdb55d1cc2fe07ddc", - "0x8711a1a52c34EDe8E61eF40496ab2618a8F6EA4B", - "0x67FEe70c32097c53B5aeAaCdbee7544eaE2194f8", - "0xbe4e30b74b558e41f5837dc86562df44af57a013", - "0x0fC4f2DB534Bf7525710DBf64B7081e1a3A6428f", - ADDRESSES.polygon.MATICX, - "0x40c03Cd0B5D1571608D09e6279B4C63660e431F1", - "0x2ee50c34392e7e7a1d17b0a42328a8d1ad6894e3", - "0x1205f31718499dbf1fca446663b532ef87481fe1", - "0xb95E1C22dd965FafE926b2A793e9D6757b6613F4", - "0x29e38769f23701a2e4a8ef0492e19da4604be62c", - "0x3f69055f203861abfd5d986dc81a2efa7c915b0c", - "0xbfe9584228BBcB21EAA64a878c28c5cBFd0F6304", - "0x74c64d1976157e7aaeeed46ef04705f4424b27ec", - "0x3cc20a6795c4b57d9817399f68e83e71c8626580", - "0xe7806b5ba13d4b2ab3eab3061cb31d4a4f3390aa", - "0xD97FA4474084350D2c96285E1Fca07A9D515c800", - "0x513cdee00251f39de280d9e5f771a6eafebcc88e", - "0xAb4E02911A7d09BC8300F39332F087d51c183038", - "0xa7565dfeb16010153d3368e002ec53cbfaf96e05", - "0x8D0663d2d738e6078Bb77589dE4231eD9fcFd014", - "0xf0ad209e2e969eaaa8c882aac71f02d8a047d5c2", - "0xec74671f95F0942358016da627b912143100DAF2", - "0x2589469b7a72802ce02484f053cb6df869eb2689", - "0xFe2f5e215C0Fe9b5D4fF99cA7cBB5F5a77f5C515", - "0xE193C653B6030a9BB443AE7c6Ef6e35d93348f98", - "0xFbdd194376de19a88118e84E279b977f165d01b8", - "0x9dc8Ee4264923D44F2a33Ea139FC4143C288b172", - "0x1057a796C66ca87EC1e6494f5486006396756083", - "0x350c331F4e5fD9d5D703424F3F14CcC0280B6629", - "0xf742B69Bd460F14EB5d8335e06954eba694B552E", - "0xc44F1103A271BEFF26bB245D760bFbe182CCf121", - "0x195888B86db69C52b54362DB2D71c2d3e411A0bA", - "0x22301937028310Cef6530eF3C3Bfe14581eb679F", - "0x90F06727Ba5016eDcf9D8B5def63a5849EcD132f", - "0xb33eaad8d922b1083446dc23f610c2567fb5180f", - "0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39", - "0x61299774020da444af134c82fa83e3810b309991", - "0x5fe2b58c013d7601147dcdd68c143a77499f5531", - "0xbbba073c31bf03b8acf7c28ef0738decf3695683", - "0xc3c7d422809852031b44ab29eec9f1eff2a58756", - "0x50b728d8d964fd00c2d0aad81718b71311fef68a", - "0x6e4e624106cb12e168e6533f8ec7c82263358940", - "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97", - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - "0xf59036CAEBeA7dC4b86638DFA2E3C97dA9FcCd40", - "0x078f358208685046a11C85e8ad32895DED33A249", - "0xA4D94019934D8333Ef880ABFFbF2FDd611C762BD", - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", - "0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4", - "0x28424507fefb6f7f8E9D3860F56504E4e5f5f390", - "0x5c2ed810328349100A66B82b78a1791B101C9D61", - "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F", - "0x60D55F02A771d515e077c9C2403a1ef324885CeC", - "0x27F8D03b3a2196956ED754baDc28D73be8830A6e", - ADDRESSES.polygon.WSTETH, -]; - -const AVALANCHE_REGISTRY_TOKENS = [ - ADDRESSES.avax.WAVAX, - ADDRESSES.avax.USDC, - ADDRESSES.avax.USDC_e, - ADDRESSES.avax.USDt, - ADDRESSES.avax.USDT_e, - ADDRESSES.avax.DAI, - ADDRESSES.avax.WETH_e, - ADDRESSES.avax.WBTC_e, - ADDRESSES.avax.BTC_b, - "0x111111111111ed1D73f860F57b2798b683f2d325", - "0x130966628846BFd36ff31a822705796e8cb8C18D", - "0x40b393cecf8F7D7Fc79b83e8fA40e850511817f6", - "0x28690ec942671aC8d9Bc442B667EC338eDE6dFd3", - "0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b", - "0xb599c3590F42f8F995ECfa0f85D2980B76862fc1", - "0xF14f4CE569cB3679E99d5059909E23B07bd2F387", - "0x1337BedC9D22ecbe766dF105c9623922A27963EC", - "0x0974D9d3bc463Fa17497aAFc3a87535553298FbE", - "0x1da20Ac34187b2d9c74F729B85acB225D3341b25", - "0x6BF6fc7EaF84174bb7e1610Efd865f0eBD2AA96D", - "0xD79138c49c49200a1Afc935171D1bDAd084FDc95", - "0xb0D2EB3C2cA3c6916FAb8DCbf9d9c165649231AE", - "0xAEA2E71b631fA93683BCF256A8689dFa0e094fcD", - "0x6a4aC4DE3bF6bCD2975E2cb15A46954D9bA43fDb", - "0x943F3B750447AbDd61cdF68AE6c3912cd3bedA04", - "0xd39016475200ab8957e9C772C949Ef54bDA69111", - "0x79F26046D122d2F26B1D37237D5C056fB580447A", - "0x7E5bC7088aB3Da3e7fa1Aa7ceF1dC73F5B00681c", - "0x1205f31718499dBf1fCa446663B532Ef87481fe1", - "0xf4003F4efBE8691B60249E6afbD307aBE7758adb", - "0xe1a8EeA58D63Ea64d00365531D266C2AD1f62FC4", - "0x1dab6560494b04473a0be3e7d83cf3fdf3a51828", - "0x22EafB9C7E2858cfDA712940896464DdAA83d053", - "0xae64d55a6f09e4263421737397d1fdfa71896a69", - "0x68866acc5C940938B373F55F7009f824c7662F5B", - "0xFE15c2695F1F920da45C30AAE47d11dE51007AF9", - "0xf3340EdF16563D52C7E7C576F2fCC8f3D52464aB", - "0x0e0100ab771e9288e0aa97e11557e6654c3a9665", - "0x595786A3848B1de66C6056C87BA91977935fBC46", - "0x32833a12ed3fd5120429fb01564c98ce3c60fc1d", - "0xA27BF4d56870A37e37a687B8ab3740d8487Ee2C6", - "0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c", - "0xFeA7976733f47557860f4483f2147a3e99C76b58", - "0x3D81A269E05e6057e4dF9E2D76E254E65a65Eb66", - "0x454E67025631C065d3cFAD6d71E6892f74487a15", - "0x282B11E65f0B49363D4505F91c7A44fBEe6bCc0b", - ADDRESSES.avax.JOE, - "0x3C2131A02659343d68c211aAa686750bE37d88c4", - "0x813aB5B3FDc59B143C42284665864b24B794C324", - "0xd6070ae98b8069de6b494332d1a1a81b6179d960", - "0x47536f17f4ff30e64a96a7555826b8f9e66ec468", - "0x5947bb275c521040051d82396192181b413227a3", - "0x8ebaf22b6f053dffeaf46f4dd9efa95d89ba8580", - "0x8a0cac13c7da965a312f08ea4229c37869e85cb9", - "0x63a72806098bd3d9520cc43356dd78afe5d386d9", - "0xbec243c995409e6520d7c41e404da5deba4b209b", - "0x44c784266cf024a60e8acf2427b9857ace194c5d", - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97", - "0x8ffDf2DE812095b1D19CB146E4c004587C0A0692", - "0x625E7708f30cA75bfd92586e17077590C60eb4cD", - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", - "0x53f7c5869a859F0AeC3D334ee8B4Cf01E3492f21", - "0xDFE521292EcE2A4f44242efBcD66Bc594CA9714B", - "0x46A51127C3ce23fb7AB1DE06226147F446e4a857", - "0x532E6537FEA298397212F09A61e03311686f548e", - "0x47AFa96Cdc9fAb46904A55a6ad4bf6660B53c38a", -]; - -const BNB_REGISTRY_TOKENS = [ - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.ETH, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.BUSD, - "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", - "0x31e77776b924Cd5f0E624771C9B3d2bD6B9c919E", - "0x577d005912C49B1679B4c21E334FdB650E92C077", - "0x4a9945B75E5c860f511CD223E838b213828a0583", - "0x0827841963Cc8a0515b5baa59782b0a0870b5f88", - "0x684d86518e6E7d622d24854cBb1C179d6C0E3f75", - "0x483653bcF3a10d9a1c334CE16a19471a614F4385", - "0x62ef49280c0f155afd374fC5Efd1F06318648700", - "0x5dc30Bb8D7F02eFEf28f7E637D17Aea13Fa96906", - "0x1542885D6EeD4EE3AC1a110d3f159003a0774101", - "0x804678fa97d91B974ec2af3c843270886528a9E6", - "0x68c39886eA459b4a59758F1e94c3d20C93d47133", - "0x0FB881c078434b1C0E4d0B64d8c64d12078b7Ce2", - "0x2ea77B1d17C9e2a99a2C019abC8eA2f6A59A1044", - "0x63b30de1A998e9E64FD58A21F68D323B9BcD8F85", - "0x6eb020663898c72F8E25958F5f7bcDC732279201", - "0x66FDB2eCCfB58cF098eaa419e5EfDe841368e489", - "0xa4113209bD56f534A24CADc3E3778B5D4B806180", - "0xa987f0b7098585c735cD943ee07544a84e923d1D", - "0xC341DFb9B634a3aD1AEF70B490eA92CACcddf805", - "0x93B32a8dfE10e9196403dd111974E325219aec24", - "0xe47E724c0b4EE9fbC16097AC103b97dc6642fd18", - "0x153dC2eBcB551799b13D4E6Ff84fC34C7AEDf241", - "0x9A10Cc2024744681fBce1F93Aeee3fd7863B1A12", - "0xC7e9d76ba11099AF3F330ff829c5F442d571e057", - "0xD411121C948Cff739857513E1ADF25ED448623f8", - "0x90C97F71E18723b0Cf0dfa30ee176Ab653E89F40", - "0x3F56e0c36d275367b8C502090EDF38289b3dEa0d", - ADDRESSES.bsc.beltBTC, - "0xbCFcE18C5c33463316f93A067b1f50d75b00dc09", - "0x10bf6e7B28b1cfFb1c047D7F815953931e5Ee947", - "0x56ec6031dC969CfA035F6D65e65D8595d5660fB4", - "0x5c73804FeDd39f3388E03F4aa1fE06a1C0e60c8e", - "0x77c9a64C88Ad5e5467B53E20E66AD2F8800BBf3d", - "0x2ecBD508c00Bbc8aA0cdc9100bf3956fCabE7677", - "0xC34Ae91312A3c3F9420691922040a5DEe1698E52", - ADDRESSES.bsc.beltBNB, - "0xeDe45f9dC994a66F1aD1ac68974Abb28086f909d", - "0x6321B57b6fdc14924be480c54e93294617E672aB", - "0xc1fcf50ccaCd1583BD9d3b41657056878C94e592", - ADDRESSES.bsc.Belt4, - "0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE", - "0x0eD7e52944161450477ee417DE9Cd3a859b14fD0", - "0x33D0F945F77660F4A9e56949500265313f6D08fb", - "0x86b481fCe116DCd01fBeBb963f1358bcc466668C", - "0x164fb78cAf2730eFD63380c2a645c32eBa1C52bc", - "0xDA8ceb724A06819c0A5cDb4304ea0cB27F8304cF", - "0x0383E88A19E5c387FeBafbF51E5bA642d2ad8bE0", - "0x9aA83081AA06AF7208Dcc7A4cB72C94d057D2cda", - "0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA", - ADDRESSES.bsc.beltETH, - "0x960eE6caC56912D94cE5c83D7Fb0CD873b5c5099", - "0xD3C480EC7a47596fF8D63396227d1F7dC728A7f0", - "0xe0Af98A11DB57c7282c1f6066d116E13F02BF0E9", - "0xF7369B1D005F2cbB1887233B5aa0CB0B39fB9891", - "0x72fC82b9955f04b20166b0Da7e1af4f893F6316a", - "0x5c15842fCC12313C4f94dFB6fad1Af3f989D33e9", - "0xf867cD98F3762D899F5F26FF5Dd62A5C566A3E0C", - "0x1B6E11c5DB9B15DE87714eA9934a6c52371CfEA9", - "0x9B429B6bb5aBfD97869d6D302676a3885e9b0B2b", - "0x8A420aACA0c92e3f97CDcFdd852e01Ac5b609452", - "0x836C6BffB0B08aCa20b9380330D2532A51aA0eAD", - "0x3ec1FFd5dc29190588608Ae9Fd4f93750e84CDA2", - "0xe2AD2c5702f6c9073f85b00E4743066E1D1035f8", - "0x8840C6252e2e86e545deFb6da98B2a0E26d8C1BA", - "0xEeB87e7bAbF17cA97F0Eb897F24Bf475e0A9Aef7", - "0x6216E04cd40DB2c6FBEd64f1B5830A98D3A91740", - "0x220711F15D09bdDFD1f0ba0dfC905074Ea204C4E", - "0x98a5737749490856b401DB5Dc27F522fC314A4e1", - "0x93DB73f79D4fdc5be42C0bd2812e94A271aDC7e2", - "0x854805dc490271B362cc758D94b69eed157070A5", - "0x8860922Eb2795aB0D57363653Dd7EBf18D7c0A42", - "0xB78b6A0137ad8745784D3B23c16abeA8F527ff54", - "0x754Fd74e22255780a58F125300008781D8318e3A", - "0x49ad051F4263517BD7204f75123b7C11aF9Fd31C", - "0x5D83D13Fa899451b75f7c465C0A2590Bb3f9067f", - "0xac109C8025F272414fd9e2faA805a583708A017f", - "0x3b3bc8AE6dcAcCeaaC3C19E196ebD3341Cfe9c4e", - "0xCa3F508B8e4Dd382eE878A314789373D80A5190A", - "0xbf5140a22578168fd562dccf235e5d43a02ce9b1", - "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", - "0x64048a7eecf3a2f1ba9e144aac3d7db6e58f555e", - "0x90c97f71e18723b0cf0dfa30ee176ab653e89f40", - "0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", - "0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe", - "0x0782b6d8c4551B9760e74c0545a9bCD90bdc41E5", - "0x76a797a59ba2c17726896976b7b3747bfd1d220f", - "0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd", - "0x0eb3a705fc54725037cc9e008bdede697f62f335", - "0xa2b726b1145a4773f68593cf171187d8ebe4d495", - "0x031b41e504677879370e9dbcf937283a8691fa7f", - "0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce", - "0xfb5b838b6cfeedc2873ab27866079ac55363d37e", - "0xfb6115445bff7b52feb98650c87f44907e58f802", - "0x715d400f88c167884bbcc41c5fea407ed4d2f8a0", - "0x2E94171493fAbE316b6205f1585779C887771E2F", - "0x56a7ddc4e848EbF43845854205ad71D5D5F72d3D", - "0x9B00a09492a626678E5A3009982191586C444Df9", - "0x00901a076785e0906d1028c7d6372d247bec7d61", - "0xa9251ca9DE909CB71783723713B21E4233fbf1B1", - ADDRESSES.blast.ezETH, -]; - -const BASE_REGISTRY_TOKENS = [ - ADDRESSES.base.USDC, - ADDRESSES.base.USDbC, - "0x4621b7A9c75199271F773Ebd9A499dbd165c3191", - "0x8Ee73c484A26e0A5df2Ee2a4960B789967dd0415", - "0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93", - ADDRESSES.kava.axlUSDC, - ADDRESSES.optimism.WETH_1, - "0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b", - ADDRESSES.base.DAI, - "0xd07379a755A8f11B57610154861D694b2A0f615a", - ADDRESSES.base.cbETH, - ADDRESSES.base.rETH, - "0x9EaF8C1E34F05a589EDa6BAfdF391Cf6Ad3CB239", - "0xf6C5F01C7F3148891ad0e19DF78743D31E390D1f", - "0x6e53131F68a034873b6bFA15502aF094Ef0c5854", - "0x6DfE79cecE4f64c1a34F48cF5802492aB595257E", - "0xbE3F14312B08E9c6AEe6AeB27B37c08B661A7F83", - "0x5A47993216fa6ACaf93418f9830cee485e82d0ba", - "0xd0c3E7f86338403Df99DEa1996f6C9Ed8f9D3d07", - "0xB614A6E6c21202De79DceB95AE2dd4817DD7e14b", - "0xB62F13126fCD0dD49dE8fF811406554197Bd0E11", - "0x507094549509Efdf63ecA34B795094065cB04008", - "0x8bd6dF821513aECDbbaa29C1d5212b43fdCe7819", - "0x98bEAa72230788572e3e3Be58D91C232dda315d4", - "0x74251C0d0B74Fba6e3B3EDe8533D9Da82B4EC4a4", - "0xc005B9833deBcF5fe6cc5bC9ba4fD74Bb382ae55", - "0xC3a5b142a144135D900FC5Ef2Bb7E92a3bcB46F1", - "0x09139A80454609B69700836a9eE12Db4b5DBB15f", - "0x4Fc0E7cDfe0CF92762eaf3CEE9133239A2197391", - "0x06a613d3a056d4b04D7523C11d82c67Bebf9d850", - "0xFB6864F1c14A90E85398B853701B01ef6a0CA3E5", - "0xf213F2D02837012dC0236cC105061e121bB03e37", - "0x0B25c51637c43decd6CC1C1e3da4518D54ddb528", - "0x44Ecc644449fC3a9858d2007CaA8CFAa4C561f91", - "0x6B87B8663eE63191887F18225F79D9eEb2DE0d34", - "0xb5E331615FdbA7DF49e05CdEACEb14Acdd5091c3", - "0xA6385c73961dd9C58db2EF0c4EB98cE4B60651e8", - "0x7A034374C89C463DD65D8C9BCfe63BcBCED41f4F", - "0x61366A4e6b1DB1b85DD701f2f4BFa275EF271197", - "0xA6F8A6bc3deA678d5bA786f2Ad2f5F93d1c87c18", - "0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d", - "0x323121CD6F6274c9aeB9f87e0664C8FDa5d343A5", - "0xcDAC0d6c6C59727a65F871236188350531885C43", - "0x27a8Afa3Bd49406e48a074350fB7b2020c43B2bD", - "0x82a0c1a0d4EF0c0cA3cFDA3AD1AA78309Cc6139b", - "0x5BfB340FA9305abB164Fb0248D0D82FC3D82C3bb", - "0x3b9860321f03AFe02D3FF9e4Fdd4017DC6F4d7Ca", - "0x1f0dbEcDA414F401dB46464864273CaD19368706", - "0x3E07F263C1Ce5EC2a3f1cA87af56B80B27674D96", - "0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91", - "0x23ee2343b892b1bb63503a4fabc840e0e2c6810f", - "0x940181a94a35a4569e4529a3cdfb74e38fd98631", - "0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7", - "0x99CBC45ea5bb7eF3a5BC08FB1B7E56bB2442Ef0D", - "0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB", - ADDRESSES.blast.ezETH, - "0x1Bc71130A0e39942a7658878169764Bbd8A45993", - ADDRESSES.base.wstETH, -]; - -const BLAST_REGISTRY_TOKENS = [ - ADDRESSES.blast.WETH, - ADDRESSES.blast.USDB, - "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", - "0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7", - "0x96F6b70f8786646E0FF55813621eF4c03823139C", - "0x5ffd9ebd27f2fcab044c0f0a26a45cb62fa29c06", - "0xa4c7aa67189ec5623121c6c94ec757dfed932d4b", - "0x764933fbAd8f5D04Ccd088602096655c2ED9879F", - "0x9e20461bc2c4c980f62f1B279D71734207a6A356", - "0x837fe561e9c5dfa73f607fda679295dbc2be5e40", - "0xb9dfCd4CF589bB8090569cb52FaC1b88Dbe4981F", - "0x42e12d42b3d6c4a74a88a61063856756ea2db357", - "0x76da31d7c9cbeae102aff34d3398bc450c8374c1", - "0x47c337bd5b9344a6f3d6f58c474d9d8cd419d8ca", - "0x216a5a1135a9dab49fa9ad865e0f22fe22b5630a", - ADDRESSES.blast.ezETH, -]; - -const registryTokensByChain = { - ethereum: ETHEREUM_REGISTRY_TOKENS, - arbitrum: ARBITRUM_REGISTRY_TOKENS, - optimism: OPTIMISM_REGISTRY_TOKENS, - polygon: POLYGON_REGISTRY_TOKENS, - avax: AVALANCHE_REGISTRY_TOKENS, - bsc: BNB_REGISTRY_TOKENS, - base: BASE_REGISTRY_TOKENS, - blast: BLAST_REGISTRY_TOKENS, -}; - -module.exports = registryTokensByChain; diff --git a/projects/hinkal/registryTokensWithUnderlyingAddresses.js b/projects/hinkal/registryTokensWithUnderlyingAddresses.js deleted file mode 100644 index f8b4bb45aa6..00000000000 --- a/projects/hinkal/registryTokensWithUnderlyingAddresses.js +++ /dev/null @@ -1,270 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const ETHEREUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { - "0x93ce650b8d3a7a7e44121db82a0429a3884db599": - "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - "0xE49127B7AEfc043847caDd85B8a41973854D30f5": - "0x8dff75976f22db58d7c3fd7b68d782238b0dbe30", - "0x8A31A94bF0926B82083C80E18B331085B84E92D7": - "0x689440f2Ff927E1f24c72F1087E1FAF471eCe1c8", - "0xcc26a5246c6a04a85e997d6581c1b4f14363841a": - "0xcfc25170633581bf896cb6cdee170e3e3aa59503", - "0x9a7Ce41c96Db8d792497D7BEe70fAfb7F8393D71": - "0x7e880867363A7e321f5d260Cade2B0Bb2F717B02", - "0xd4EC67cF6C0Aa65F74eb7F03216Ea23151af21b8": - "0x2932a86df44fe8d2a706d8e9c5d51c24883423f5", - "0x4F1546Ce825dB85310aC2c2cfb369543d73FD0a2": - "0xbD5445402B0a287cbC77cb67B2a52e2FC635dce4", - "0x394Aa83d0E5D348c7FA39325d2A25993704Faf8f": - "0xfb860600f1be1f1c72a89b2ef5caf345aff7d39d", - "0xD1105d6502d3c562B447A75149B00aD366b3212d": - "0x6991C1CD588c4e6f6f1de3A0bac5B8BbAb7aAF6d", - "0xE08FF1427b199241506FcdCC23fcc24Dd98a4FA9": - "0xDeFd8FdD20e0f34115C7018CCfb655796F6B2168", - "0xC21545c26661ae74b3259B55aE007ACC4Bf5d4e3": - "0x9D5C5E364D81DaB193b72db9E9BE9D8ee669B652", - "0xa0Cd8B83B63381895C1854A605315fa7eF50e026": - "0x512a68dd5433563bad526c8c2838c39debc9a756", - "0x25aE9BE521898d33c7DF6Ae8c6669Fe038Bb3550": - "0xecad6745058377744c09747b2715c0170b5699e5", - "0x9434722bf29750B44649eb1b1A10a335d40edFc1": - "0x27cace18f661161661683bba43933b2e6eb1741e", - "0xF2280cBa8e0B9bc9b87b5aFbBeF8C41C20a5ddBe": - "0xbe266d68ce3ddfab366bb866f4353b6fc42ba43c", - "0x5F1894e4b409D7199Ea209b9e43C996640BCB691": - "0x8605dc0c339a2e7e85eea043bd29d42da2c6d784", - "0xa653510227752632ebf692a77e5032d4afFaB3a2": - "0xC94208D230EEdC4cDC4F80141E21aA485A515660", - "0xA1998B87C2935BDbd7fE6ee48542a59a0435a3Ee": - "0x245Ec0d447e7f206B43120Ac292dED5E8bB9fe61", - "0xC8c3031fB628Bdf4eA0F7cA5F96E369Dea07624e": - "0x0404d05F3992347d2f0dC3a97bdd147D77C85c1c", - "0xDc118133332f703e22C0b0FA7E0DD7d1299A7247": - "0xB468dB2E478885B87D7ce0C8DA1D4373A756C138", - "0xC6fDF0921c480Bd7Af89Ab4461D4aCDA24058a65": - "0xAE0bFfc3110e69DA8993F11C1CBd9a6eA3d16daF", - "0x6410ee1f8417a7cE1c3E68E3434c1d6beef6944E": - "0x277d1424a84b35ec0a8108482551b00b4fc1539b", - "0x9456cB3ae9fA8788ac1af4a7A18b339D4028061D": - "0xc2fe9d3c761994897594df63b33b6d843ab7b1cf", - "0x26dA2546602f63b84B3C4dF36476364f6350706E": - "0x0e83df148f69965bfe752250835854b0dbeeaf01", - "0x0a3fE1d39E5c60CfdB48Ba2Dc6B7c855289Dec7C": - "0x35ad1acf0c4be5d4ba11342128d440fdb9e189eb", - "0xA27fa5E11B121277423aC0b8b372596f2805e36a": - "0xe2c422d954db416a69fb29137fe552cce0e160e9", - "0x41e5c3aD70DA89dd7b6AF9Af3cd6861FbC31eA16": - "0x621ef98282ac42d2bf4c20fc73912a16599e12fb", - "0x019e773bE2D65D5fE30bE17547b89500C7C4CD5E": - "0xfb35Fd0095dD1096b1Ca49AD44d8C5812A201677", - "0x1346da36093Fdb8013E1125046f0dCBbBF645b3F": - "0x0ED3A1D45DfdCf85BCc6C7BAFDC0170A357B974C", - "0x4E0854085bC5a2fa8031ea5819863BD280e610F3": - "0x391B570e81e354a85a496952b66ADc831715f54f", - "0x9Ab43f73054C07b02e02c5468b3eB058ccdAA019": - "0x98601E27d41ccff643da9d981dc708cf9eF1F150", - "0x223026549740E2672b3f05c867Fd2B31207338A2": - "0x7C2D26182adeEf96976035986cF56474feC03bDa", - "0x3e0A917d4d914e432B82825e6FBEe039b89f4477": - "0x029aad400f6092dc735a65be95102efcc2fe64bf", - "0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8": - ADDRESSES.ethereum.WETH, - "0x0B925eD163218f6662a35e0f0371Ac234f9E9371": - ADDRESSES.ethereum.WSTETH, - "0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8": - ADDRESSES.ethereum.WBTC, - "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c": - ADDRESSES.ethereum.USDC, - "0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a": - ADDRESSES.ethereum.USDT, - "0x018008bfb33d285247A21d44E50697654f754e63": - ADDRESSES.ethereum.DAI, - "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656": - ADDRESSES.ethereum.WBTC, - "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e": - ADDRESSES.ethereum.WETH, - "0xBcca60bB61934080951369a648Fb03DF4F96263C": - ADDRESSES.ethereum.USDC, - "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811": - ADDRESSES.ethereum.USDT, - "0x028171bCA77440897B824Ca71D1c56caC55b68A3": - ADDRESSES.ethereum.DAI, - "0x8B2098043Cea715A18E81CC0A6a9d202Cf279014": - "0x1f7e9321ce32af1f9ea1185fd10d31fea31ffd95", -}; - -const ARBITRUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { - "0xC3691c157D1B3A431B841230a7B11d5a373097e1": - "0xce5f24b7a95e9cba7df4b54e911b4a3dc8cdaf6f", - "0x7Bdc233E5369Ac023b9894645902C9032A72D9Ee": - "0x971E732B5c91A59AEa8aa5B0c763E6d648362CF8", - "0xCC26A5246C6A04a85E997d6581C1b4f14363841a": - "0xf2ddf89c04d702369ab9ef8399edb99a76e951ce", - "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5": - "0x098ef55011b6b8c99845128114a9d9159777d697", - "0x59eC3043D7314B9650294Fd800149b53007f804E": - "0x95285ea6ff14f80a2fd3989a6bab993bd6b5fa13", - "0x972c6F2b29638b9AD6955c4F0b0c1239b034f053": - "0x93729702Bf9E1687Ae2124e191B8fFbcC0C8A0B0", - "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19": - "0xd6dacdcb438f048cf90e53415872cdb3fcc95421", - "0x886867993080DC3bBFC39CDfc343A0e083bB34E0": - "0x6B7B84F6EC1c019aF08C7A2F34D3C10cCB8A8eA6", - "0xB72ea6F99EfA5BD6Fb400BaA4eFddC3cfB075215": - "0xc2b1df84112619d190193e48148000e3990bf627", - "0x660108601EED17aF2832A1c0F1D7dE74F560C5ed": - "0x7c0ac20c3ca8c6257ea099131081d8199bf6b8f6", - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": - ADDRESSES.arbitrum.WETH, - "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf": - ADDRESSES.arbitrum.WSTETH, - "0x078f358208685046a11C85e8ad32895DED33A249": - ADDRESSES.arbitrum.WBTC, - "0x724dc807b04555b71ed48a6896b6F41593b8C637": - ADDRESSES.arbitrum.USDC_CIRCLE, - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": - ADDRESSES.arbitrum.USDT, - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": - ADDRESSES.optimism.DAI, -}; - -const OPTIMISM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { - "0x29c431806E536Fb22ce2Edc8dd6e3C3A0d5689a8": - "0xc5ae4b5f86332e70f3205a8151ee9ed9f71e0797", - "0xDaA24E888432b5aa607105e256919Ddfc8b327E9": - "0xd53ccbfed6577d8dc82987e766e75e3cb73a8563", - "0xC3691c157D1B3A431B841230a7B11d5a373097e1": - "0x15f52286c0ff1d7a7ddbc9e300dd66628d46d4e6", - "0xCC26A5246C6A04a85E997d6581C1b4f14363841a": - "0x172a5af37f69c69cc59e748d090a70615830a5dd", - "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5": - "0xcb8883d1d8c560003489df43b30612aabb8013bb", - "0x59eC3043D7314B9650294Fd800149b53007f804E": - "0x2eb49a3eff789d7b2286bf17667acbf12d882c17", - "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19": - "0xcea806562b757aeffa9fe9d0a03c909b4a204254", - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": - ADDRESSES.optimism.WETH_1, - "0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA": - ADDRESSES.optimism.WSTETH, - "0x078f358208685046a11C85e8ad32895DED33A249": - ADDRESSES.optimism.WBTC, - "0x38d693cE1dF5AaDF7bC62595A37D667aD57922e5": - ADDRESSES.optimism.USDC_CIRCLE, - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": - ADDRESSES.optimism.USDT, - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": - ADDRESSES.optimism.DAI, -}; - -const POLYGON_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { - "0x9dc8Ee4264923D44F2a33Ea139FC4143C288b172": - "0x0e2f214b8f5d0cca011a8298bb907fb62f535160", - "0x1057a796C66ca87EC1e6494f5486006396756083": - "0x835cA119fA28515B1F184A5Ce5Ccda2B5b0d9F6D", - "0x350c331F4e5fD9d5D703424F3F14CcC0280B6629": - "0x40371aad2a24ed841316ef30938881440fd4426c", - "0xf742B69Bd460F14EB5d8335e06954eba694B552E": - "0xA9249f8667cb120F065D9dA1dCb37AD28E1E8FF0", - "0xc44F1103A271BEFF26bB245D760bFbe182CCf121": - "0x8b397084699cc64e429f610f81fac13bf061ef55", - "0x195888B86db69C52b54362DB2D71c2d3e411A0bA": - "0xc501491b0e4A73B2eFBaC564a412a927D2fc83dD", - "0x22301937028310Cef6530eF3C3Bfe14581eb679F": - "0xfc052e70eb6d94afe464a8ce8f43d203109494f2", - "0x90F06727Ba5016eDcf9D8B5def63a5849EcD132f": - "0x9633e0749faa6ec6d992265368b88698d6a93ac0", - "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97": - ADDRESSES.polygon.WMATIC_2, - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": - ADDRESSES.polygon.WETH_1, - "0xf59036CAEBeA7dC4b86638DFA2E3C97dA9FcCd40": - ADDRESSES.polygon.WSTETH, - "0x078f358208685046a11C85e8ad32895DED33A249": - ADDRESSES.polygon.WBTC, - "0xA4D94019934D8333Ef880ABFFbF2FDd611C762BD": - ADDRESSES.polygon.USDC_CIRCLE, - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": - ADDRESSES.polygon.USDT, - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": - ADDRESSES.polygon.DAI, - "0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4": - ADDRESSES.polygon.WMATIC_2, - "0x28424507fefb6f7f8E9D3860F56504E4e5f5f390": - ADDRESSES.polygon.WETH_1, - "0x5c2ed810328349100A66B82b78a1791B101C9D61": - ADDRESSES.polygon.WBTC, - "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F": - ADDRESSES.polygon.USDC, - "0x60D55F02A771d515e077c9C2403a1ef324885CeC": - ADDRESSES.polygon.USDT, - "0x27F8D03b3a2196956ED754baDc28D73be8830A6e": - ADDRESSES.polygon.DAI, -}; - -const AVALANCHE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": - ADDRESSES.avax.WETH_e, - "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97": - ADDRESSES.avax.WAVAX, - "0x8ffDf2DE812095b1D19CB146E4c004587C0A0692": - ADDRESSES.avax.BTC_b, - "0x625E7708f30cA75bfd92586e17077590C60eb4cD": - ADDRESSES.avax.USDC, - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": - ADDRESSES.avax.USDt, - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": - ADDRESSES.avax.DAI, - "0x53f7c5869a859F0AeC3D334ee8B4Cf01E3492f21": - ADDRESSES.avax.WETH_e, - "0xDFE521292EcE2A4f44242efBcD66Bc594CA9714B": - ADDRESSES.avax.WAVAX, - "0x46A51127C3ce23fb7AB1DE06226147F446e4a857": - ADDRESSES.avax.USDC, - "0x532E6537FEA298397212F09A61e03311686f548e": - ADDRESSES.avax.USDt, - "0x47AFa96Cdc9fAb46904A55a6ad4bf6660B53c38a": - ADDRESSES.avax.USDt, -}; - -const BNB_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { - "0x2E94171493fAbE316b6205f1585779C887771E2F": - ADDRESSES.bsc.ETH, - "0x56a7ddc4e848EbF43845854205ad71D5D5F72d3D": - ADDRESSES.bsc.BTCB, - "0x9B00a09492a626678E5A3009982191586C444Df9": - ADDRESSES.bsc.WBNB, - "0x00901a076785e0906d1028c7d6372d247bec7d61": - ADDRESSES.bsc.USDC, - "0xa9251ca9DE909CB71783723713B21E4233fbf1B1": - ADDRESSES.bsc.USDT, -}; - -const BASE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { - "0x3b9860321f03AFe02D3FF9e4Fdd4017DC6F4d7Ca": - "0x79edc58C471Acf2244B8f93d6f425fD06A439407", - "0x1f0dbEcDA414F401dB46464864273CaD19368706": - "0x93933FA992927284e9d508339153B31eb871e1f4", - "0x3E07F263C1Ce5EC2a3f1cA87af56B80B27674D96": - "0x89289DC2192914a9F0674f1E9A17C56456549b8A", - "0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7": - ADDRESSES.optimism.WETH_1, - "0x99CBC45ea5bb7eF3a5BC08FB1B7E56bB2442Ef0D": - ADDRESSES.base.wstETH, - "0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB": - ADDRESSES.base.USDC, -}; - -const BLAST_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = {}; - -const registryTokensWithUnderlyingAddressesByChain = { - ethereum: ETHEREUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES, - arbitrum: ARBITRUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES, - optimism: OPTIMISM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES, - polygon: POLYGON_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES, - avalanche: AVALANCHE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES, - bsc: BNB_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES, - base: BASE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES, - blast: BLAST_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES, -}; - -module.exports = registryTokensWithUnderlyingAddressesByChain; diff --git a/projects/hipo/index.js b/projects/hipo/index.js deleted file mode 100644 index 2291c97adb9..00000000000 --- a/projects/hipo/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { call } = require('../helper/chain/ton') - -module.exports = { - timetravel: false, - methodology: 'Actual amount of TON staked on Hipo', - hallmarks: [ - [1698685200, 'Hipo Launch'], - [1710821940, 'Hipo v2'], - ], - ton: { - tvl: async () => { - const result = await call({ target: 'EQCLyZHP4Xe8fpchQz76O-_RmUhaVc_9BAoGyJrwJrcbz2eZ', abi: 'get_treasury_state' }) - return { - 'coingecko:the-open-network': result[0] / 1e9, - } - }, - }, -} diff --git a/projects/hippowswap/index.js b/projects/hippowswap/index.js deleted file mode 100644 index b05c5fd65da..00000000000 --- a/projects/hippowswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x8cF9A887e53be909C221A2708E72898546dAB7Cc', - }) - } -}; \ No newline at end of file diff --git a/projects/hits4fun/index.js b/projects/hits4fun/index.js deleted file mode 100644 index 2e5559df35c..00000000000 --- a/projects/hits4fun/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const ADDRESSES = require('../helper/coreAssets.json') - -const VAULT_ADDRESS = '0xDcC2BDbEE24813a4000Afd58252a462ff226bFA1' - -module.exports = { - methodology: 'Counts the amount of ETH in the vault', - start: 1751443965, // Wed Jul 02 2025 08:12:45 GMT+0000 - base: { - tvl: async (api) => { - return sumTokens2({ - api, - tokens: [ - ADDRESSES.null, // Native token - ], - owners: [ - VAULT_ADDRESS, - ] - }) - } - } -} diff --git a/projects/hive-protocol/index.js b/projects/hive-protocol/index.js deleted file mode 100644 index a0b947f9f9f..00000000000 --- a/projects/hive-protocol/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/sumTokens"); - -module.exports = { - bsquared: { tvl: sumTokensExport({ owner: '0xd5B5f1CA0fa5636ac54b0a0007BA374A1513346e', tokens: [nullAddress] }) }, -} \ No newline at end of file diff --git a/projects/hiveswap-pro/index.js b/projects/hiveswap-pro/index.js deleted file mode 100644 index f3940b91f0f..00000000000 --- a/projects/hiveswap-pro/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'map': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], -} // iziswap liquidityManager contracts - - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], }), } -}) \ No newline at end of file diff --git a/projects/hiveswap-v3/index.js b/projects/hiveswap-v3/index.js deleted file mode 100644 index e09faa793ba..00000000000 --- a/projects/hiveswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - map: { factory: '0xFF53fAdeA915cac79b55D912fd373545B890f93B', fromBlock: 25678 }, -}) \ No newline at end of file diff --git a/projects/hiveswap/index.js b/projects/hiveswap/index.js deleted file mode 100644 index a885a86089a..00000000000 --- a/projects/hiveswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens") - -module.exports = uniTvlExport('map', '0x29c3d087302e3fCb75F16175A09E4C39119459B2') \ No newline at end of file diff --git a/projects/hiyield/index.js b/projects/hiyield/index.js deleted file mode 100644 index b68e1481608..00000000000 --- a/projects/hiyield/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const config = { - canto: { - hyVWEAX: '0x0E4289a95207CA653b60B0eB0b5848f29F4C3f72' - }, - avax: { - TREASURY_BILLS: '0x8475509d391e6ee5A8b7133221CE17019D307B3E', - INVESTMENT_GRADE_BONDS: '0xce6050625fe3F79bBfC4d236aBAaBE51AB59e660' - } -} - -const poolInfoABI = "function poolInfo() external view returns(uint256, uint256, uint256, uint256, uint256)" - -Object.keys(config).forEach(chain => { - let pools = config[chain] - pools = Object.values(pools) - module.exports[chain] = { - tvl: async (api) => { - if (chain === 'canto') { - const pool = pools[0] - const supply = await api.call({ abi: "uint256:totalSupply", target: pool }) - const poolInfo= await api.call({ abi: poolInfoABI, target: pool }) - api.addCGToken('tether', supply * poolInfo[4] / 1e36) - } else { - const poolInfos = await api.multiCall({ abi: poolInfoABI, calls: pools}) - let sum = poolInfos.reduce((acc, pool) => acc + pool[0]/1e6, 0) - api.addCGToken('tether', sum) - } - return api.getBalances() - - } - } -}) \ No newline at end of file diff --git a/projects/hliquity/index.js b/projects/hliquity/index.js deleted file mode 100644 index 037b40161c9..00000000000 --- a/projects/hliquity/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking.js"); -const { getLiquityTvl } = require("../helper/liquity"); - -// TroveManager holds total system collateral (deposited HBAR) -const TROVE_MANAGER_ADDRESS = "0x00000000000000000000000000000000005c9f66"; -const STAKING_ADDRESS = "0x00000000000000000000000000000000005c9f30"; -const HLQT_ADDRESS = ADDRESSES.hedera.HLQT - -module.exports = { - start: '2024-06-05', //start date; when protocol went live - methodology: 'Total deposits of HBAR for borrowed HCHF', - hedera: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS), - staking: staking(STAKING_ADDRESS, HLQT_ADDRESS) - } -}; diff --git a/projects/hlp0/index.js b/projects/hlp0/index.js deleted file mode 100644 index 8eb2763bc52..00000000000 --- a/projects/hlp0/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626'); - -const HLP0_VAULT = "0x3D75F2BB8aBcDBd1e27443cB5CBCE8A668046C81"; - -// As the vault is an ERC4626, we can use the helper to get the TVL -const tvl = sumERC4626VaultsExport({ - vaults: [HLP0_VAULT], - balanceAbi: 'totalAssets', - tokenAbi: 'asset', -}); - -module.exports = { - arbitrum: { - tvl, - }, - methodology: "TVL is calculated by summing the total assets of the HLP0 vault on Arbitrum. The HLP0 token is a LayerZero OFT, but the underlying assets are held in the Arbitrum vault.", -}; diff --git a/projects/hodl/index.js b/projects/hodl/index.js deleted file mode 100644 index 696411d9751..00000000000 --- a/projects/hodl/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require('../helper/http') - -const API = 'https://hodl-api.fox.one/api/pools' - -const tvl = async (api) => { - const { data } = await get(API) - data.pools.forEach(({ amount, price }) => { - api.addUSDValue(Math.round(amount * price)) - }) -} - -module.exports = { - misrepresentedTokens: true, - mixin: { tvl } -} diff --git a/projects/hodlify/abi.js b/projects/hodlify/abi.js deleted file mode 100644 index 6fc4d4ee0fa..00000000000 --- a/projects/hodlify/abi.js +++ /dev/null @@ -1,19 +0,0 @@ -const erc4626Abi = { - 'asset': 'function asset() external view returns (address)', - 'totalAssets': 'function totalAssets() public view returns (uint256)' -} - -const stargateLpStakingAbi = { - 'userInfo': 'function userInfo( uint256 ,address ) external view returns (uint256 amount, uint256 rewardDebt)', -} - -const stargatePoolAbi = { - 'amountLPtoLD': 'function amountLPtoLD(uint256 _amountLP) external view returns (uint256)', - 'token': 'function token() external view returns (address)', -} - -module.exports = { - erc4626Abi, - stargateLpStakingAbi, - stargatePoolAbi, -} \ No newline at end of file diff --git a/projects/hodlify/constants.js b/projects/hodlify/constants.js deleted file mode 100644 index 834bd5d21b9..00000000000 --- a/projects/hodlify/constants.js +++ /dev/null @@ -1,38 +0,0 @@ -const contracts = { - optimism: { - vaults: [ - // usdc - '0x034A4072E63aB05aF057e4E9aFC961EA584fB886', // entry - '0xcf038417eac3bEa4be8f296B0Ed994e8410B6eBC', // polygon satellite - '0x81C3b05753A40f7dd93F154eDC4112AF2F3B5B3b', // arbitrum satellite - '0x5135Bd97b41871fC2745FEf24F941D9527B0b450', - '0xD2FBB4Ee4b446766318A1766EA5bF38cAd4E3eEe', - '0xA3c965A249855bff48925E4414A4b7f0920fbfe4', - ], - }, - polygon: { - vaults: [ - '0xFABea2117d95b780077ca8dDf268BcC8c29589ED', // entry - '0x98266478600d4Cae5082d2A185cc6533684dA108', // arbitrum satellite - '0x4a307418cEd78A3f2348FD84e66453Efe0BDD16a', // optimisim satellite - '0x3829d380bc9de2d1d421551f2D45FD81b3e82453', - '0x9212728C3602A811927eFCa7a7628e88458D6525', - '0x976d4B0368aB11b1c2677Dc7e71DA3640206a28d', - ], - }, - arbitrum: { - vaults: [ - // usdc - '0x98fCBbfb97B61e2DA167A69345c58e4126A5167B', // entry - '0x801E78C94d5fffDD6F37684ad5ac68EF3b15E559', // polygon satellite - '0x680924B3B81d918B01D43E80C092CF75C6063681', // optimisim satellite - '0xe45011d955C17c00880300b20cF83Ca297aC8BC9', - '0x691E1f8d698b6156EcdD0064B2e61d4a87aa041b', - '0x867Ca248B3AB3dDF968304046b6346E3dD7aC5d2', - ], - }, -} - -module.exports = { - contracts, -} \ No newline at end of file diff --git a/projects/hodlify/helper.js b/projects/hodlify/helper.js deleted file mode 100644 index 02a7cc0ff5a..00000000000 --- a/projects/hodlify/helper.js +++ /dev/null @@ -1,58 +0,0 @@ -const { erc4626Abi, stargateLpStakingAbi, stargatePoolAbi } = require('./abi'); -const ADDRESSES = require('../helper/coreAssets.json') -const sgETHMapping = { - ethereum: '0x72E2F4830b9E45d52F80aC08CB2bEC0FeF72eD9c', - arbitrum: '0x82CbeCF39bEe528B5476FE6d1550af59a9dB6Fc0', - optimism: '0xb69c8CBCD90A39D8D3d3ccf0a3E968511C3856A0', -} - -// convert stargate lp amount to underlying asset amount -const getStrategyVaultValues = async (api, vaultAddresses) => { - // find the lpStaking contract address for each vault - const lpStakingAddresses = await api.multiCall({ calls: vaultAddresses, abi: 'address:lpStaking', }); - // find the lpStaking poolId for each vault - const lpStakingPoolIds = await api.multiCall({ calls: vaultAddresses, abi: 'uint256:lpStakingPoolId', }); - // find the lp staking pool of each vault - const lpPools = await api.multiCall({ calls: vaultAddresses, abi: 'address:lp', }); - // find the lpAmount - const lpAmounts = (await api.multiCall({ - calls: vaultAddresses.map((vaultAddress, i) => ({ - target: lpStakingAddresses[i], - params: [lpStakingPoolIds[i], vaultAddress], - })), - abi: stargateLpStakingAbi.userInfo, - })).map(([amount]) => amount); - // find the amount of assets convert from lpAmount - const convertedAmounts = await api.multiCall({ - calls: lpPools.map((lpPool, i) => ({ - target: lpPool, - params: [lpAmounts[i]], - })), - abi: stargatePoolAbi.amountLPtoLD, - }); - // find the underlying asset of each lp pool - let assets = await api.multiCall({ calls: lpPools, abi: stargatePoolAbi.token, }); - // map stETH to ETH - const stETH = sgETHMapping[api.chain]?.toLowerCase(); - assets = assets.map((asset) => { - return asset.toLowerCase() === stETH ? ADDRESSES.null : asset; - }); - - return [assets, convertedAmounts]; -} - -// get the underlying asset of each base vault -const getVaultToken = async (api, addresses) => { - return api.multiCall({ calls: addresses, abi: 'address:token', }); -} - -// get the underlying asset of each erc4626 vault -const get4626VaultToken = async (api, addresses) => { - return api.multiCall({ calls: addresses, abi: erc4626Abi.asset, }); -} - -module.exports = { - getVaultToken, - get4626VaultToken, - getStrategyVaultValues, -} \ No newline at end of file diff --git a/projects/hodlify/index.js b/projects/hodlify/index.js deleted file mode 100644 index 0a7450f0920..00000000000 --- a/projects/hodlify/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { getUniqueAddresses } = require("../helper/tokenMapping"); -const { contracts } = require("./constants"); -const { get4626VaultToken, getStrategyVaultValues, getVaultToken } = require("./helper"); - -/** find balance of vault's underlying assets (excl. lp & positions) */ -const getUnderlyingTokenBalance = async (api, vaultAddresses) => { - const vaultTokens = await getVaultToken(api, vaultAddresses); - return api.sumTokens({ tokensAndOwners2: [vaultTokens, vaultAddresses] }) -} - -// find the strategy's vault's lp value -const getStrategyVaultsLpValue = async (api, vaultAddresses) => { - const vaultTokens = await get4626VaultToken(api, vaultAddresses); - await api.sumTokens({ tokensAndOwners2: [vaultTokens, vaultAddresses] }) - const [tokens, balances] = await getStrategyVaultValues(api, vaultAddresses); - api.addTokens(tokens, balances); -} - -const fetchStrategyAddresses = async (api, vaultAddresses) => { - const addresses = await api.multiCall({ - calls: vaultAddresses, - abi: 'address:strategy', - }); - - return getUniqueAddresses(addresses); -} - -const filterAvailableVault = async (api, vaultAddresses) => { - const available = await api.multiCall({ - calls: vaultAddresses, - abi: 'address:token', - permitFailure: true, - }); - - return vaultAddresses.filter((_, i) => available[i] != null) -} - -const aggregateVaultTvl = async (api) => { - const { vaults, } = contracts[api.chain]; - // check is available - const availableVaults = await filterAvailableVault(api, vaults); - const strategies = await fetchStrategyAddresses(api, availableVaults); - await getUnderlyingTokenBalance(api, availableVaults); - await getStrategyVaultsLpValue(api, strategies); -} - -const tvl = async (api) => { - await aggregateVaultTvl(api); - return api.getBalances(); -} - -module.exports = { - doublecounted: true, - start: '2023-09-05', // Tue Sep 05 2023 16:00:00 GMT+0000 - methodology: 'Hodlify TVL including total values of assets deposited in other protocols, and the petty cash in our earning vaults.', - arbitrum: { tvl }, - optimism: { tvl }, - polygon: { tvl }, -} \ No newline at end of file diff --git a/projects/hodltree/index.js b/projects/hodltree/index.js deleted file mode 100644 index 5807c16e165..00000000000 --- a/projects/hodltree/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - methodology: - `Flashloan pools: sum of all available liquidity - Lend-borrow contracts: sum of tokens provided as collateral and tokens provided by lenders - Elastic-Modules: sum of tokens provided by hedgers and amount of tokens to hedge - `, -} - -const config = { - ethereum: { - flashloan: '0x2e5a08c26cb22109e585784c4f99363bb3e199ab', tokensAndOwners: [ - // em - ['0x28e598846febb750effc384853fbce82988eaaa2', '0x95142849d31eaa20b5b9ab746dff27ff400ce6bf'], - [ADDRESSES.ethereum.sUSD, '0xce596bf99d21e46fa91143c03d7a356682b67859'], - [ADDRESSES.ethereum.sUSD, '0xb7ead8c418f3d03bc22dd538c22600abe7209e72'], - ['0xba100000625a3754423978a60c9317c58a424e3D', '0x78E52d69fA8e0F036fFEF0BcDc4C289DB0DF63E2'], - [ADDRESSES.ethereum.USDC, '0x87B46E49681E08E3adDF8A90F6a1fb5183079033'], - [ADDRESSES.ethereum.USDC, '0xcB72e764Ab46535aAD13cbF55b1F06cB15347A95'], - - // lend-borrow - [ADDRESSES.ethereum.WETH, '0xb3e1912fa5d9d219da8c65cda407cc998849428b'], - ['0xBcca60bB61934080951369a648Fb03DF4F96263C', '0x8ac9425260b6da02db07da7980b09525ebf3b6a0'], - ['0x028171bCA77440897B824Ca71D1c56caC55b68A3', '0x45d5a790da3bfa305efca81eac652678ae3a90a6'], - ] - }, - polygon: { - flashloan: '0xCAFDa65B1031535F1766C6b1E3b5efF5520c7C0f', tokensAndOwners: [ - // lend-borrow - [ADDRESSES.polygon.WMATIC_2, '0x2F35d311fd2F0b0dA65FA268B86831279FB4fd98'], - ['0x1a13f4ca1d028320a707d99520abfefca3998b7f', '0xbfb5215aD157Cd6C8B22494dC54Ff4B74bA18C09'], - ['0x27f8d03b3a2196956ed754badc28d73be8830a6e', '0x0Cf91744D15684b91E6705e56f6dC820647B3067'], - ] - }, -} - -Object.keys(config).forEach(chain => { - const { flashloan, tokensAndOwners = [] } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const fTokens = await api.fetchList({ lengthAbi: 'N_TOKENS', itemAbi: 'TOKENS', target: flashloan }) - fTokens.forEach(fToken => tokensAndOwners.push([fToken, flashloan])) - await api.sumTokens({ tokensAndOwners }) - } - } -}) \ No newline at end of file diff --git a/projects/holdr-fi/index.js b/projects/holdr-fi/index.js deleted file mode 100644 index 1e387f592e9..00000000000 --- a/projects/holdr-fi/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -module.exports = { - aurora: { - tvl: onChainTvl('0x364d44dFc31b3d7b607797B514348d57Ad0D784E', 78113009) - }, -} \ No newline at end of file diff --git a/projects/holdstation-swap/index.js b/projects/holdstation-swap/index.js deleted file mode 100644 index acd93bc4dc2..00000000000 --- a/projects/holdstation-swap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - era: { factory: '0x1153D1d27A558471eF051c5D2D075d7D07B84A07', fromBlock: 31199635 }, - berachain: { factory: '0xCaca5910586473646F294d8FA5530cA9E8E3fc38', fromBlock: 782955 }, -}) \ No newline at end of file diff --git a/projects/holdstation/index.js b/projects/holdstation/index.js deleted file mode 100644 index 535e2c7080e..00000000000 --- a/projects/holdstation/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const vaultERA = "0xaf08a9d918f16332F22cf8Dc9ABE9D9E14DdcbC2"; -const vaultBera = '0x6a6E4ad4a5ca14B940Cd6949b1A90f947AE21c19' -const vaultWC = '0x9BD647B2C8Fed689ADd2e7AA8b428d3eD12f75cb' -const vaultBSC = '0x7470C48FBf23067F6F8Ef63f7D9B4A2aA5D0afEf' - -const stakingContractAddressEra = '0x7cF68AA037c67B6dae9814745345FFa9FC7075b1'; -const stakingContractAddressBera = '0xA8dBa750A2D76586a234efB7bDF1d34fdCc48E14' - -const HOLD_ERA = '0xed4040fD47629e7c8FBB7DA76bb50B3e7695F0f2' -const HOLD_BERA = '0xFF0a636Dfc44Bb0129b631cDd38D21B613290c98' - -const usdc = ADDRESSES.era.USDC; -const honey = ADDRESSES.berachain.HONEY -const wld = ADDRESSES.wc.WLD -const usd1 = ADDRESSES.bsc.USD1 - -async function tvl(api) { - return sumTokens2({ api, tokens: [usdc], owners: [vaultERA] }) -} - -async function tvlBera(api) { - return sumTokens2({ api, tokens: [honey], owners: [vaultBera] }) -} - -async function tvlWC(api) { - return sumTokens2({ api, tokens: [wld], owners: [vaultWC] }) -} - -async function tvlBSC(api) { - return sumTokens2({ api, tokens: [usd1], owners: [vaultBSC] }) -} - -module.exports = { - era: { - tvl, - staking: staking([stakingContractAddressEra],[HOLD_ERA]), - }, - berachain: { - tvl: tvlBera, - staking: staking([stakingContractAddressBera],[HOLD_BERA]), - }, - wc: { - tvl: tvlWC - }, - bsc: { - tvl: tvlBSC - } -}; diff --git a/projects/homecoin/index.js b/projects/homecoin/index.js deleted file mode 100644 index f5c5e010e64..00000000000 --- a/projects/homecoin/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const HOME = "0xb8919522331C59f5C16bDfAA6A121a6E03A91F62"; - - -module.exports = { - misrepresentedTokens: true, - deadFrom: '2022-11-09', - ethereum: { - tvl: sumTokensExport({ owner: HOME, tokens: [ADDRESSES.ethereum.USDC] }), - borrowed: ()=>({}), // it's all bad debt - }, - methodology: - "The base TVL metric counts only USDC liquidity in the protocol." + - "The Borrowed TVL component also counts home loans made by the protocol.", -}; diff --git a/projects/honeypop/index.js b/projects/honeypop/index.js deleted file mode 100644 index 98ac88baf7b..00000000000 --- a/projects/honeypop/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = { - ...uniV3Export({ - scroll: { - factory: '0x1d25AF2b0992bf227b350860Ea80Bad47382CAf6', - fromBlock: 14223999 - }, - }) -} diff --git a/projects/honeyswap/index.js b/projects/honeyswap/index.js deleted file mode 100644 index 99d67f7e883..00000000000 --- a/projects/honeyswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - xdai: { - tvl: getUniTVL({ - factory: '0xa818b4f111ccac7aa31d0bcc0806d64f2e0737d7', - useDefaultCoreAssets: true, - blacklist: [ - '0x4f4f9b8d5b4d0dc10506e5551b0513b61fd59e75', - ], - }) - }, - polygon: { - tvl: getUniTVL({ - factory: '0x03daa61d8007443a6584e3d8f85105096543c19c', - useDefaultCoreAssets: true, - blacklist: ['0x8db0a6d1b06950b4e81c4f67d1289fc7b9359c7f'] - }) - }, -} \ No newline at end of file diff --git a/projects/honkswap/index.js b/projects/honkswap/index.js deleted file mode 100644 index 44c5adf8bf8..00000000000 --- a/projects/honkswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') - -const HONK = "0xF2d4D9c65C2d1080ac9e1895F6a32045741831Cd"; -const WBCH = ADDRESSES.smartbch.WBCH; -const FACTORY = "0x34D7ffF45108De08Ca9744aCdf2e8C50AAC1C73C"; - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x34D7ffF45108De08Ca9744aCdf2e8C50AAC1C73C) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - smartbch: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), - } -} diff --git a/projects/hop/index.js b/projects/hop/index.js deleted file mode 100644 index 2118afa3547..00000000000 --- a/projects/hop/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -const chainMapping = { - xdai: 'gnosis', - arbitrum_nova: 'nova' -} -const getChainKey = chain => chainMapping[chain] ?? chain -const isValidAddress = (addr) => /^0x[a-fA-F0-9]{40}$/.test(addr) - -// node test.js projects/hop/index.js -function chainTvl(chain) { - return async (api) => { - let toa = [] - const { bridges, bonders } = await getConfig('hop-protocol', 'https://s3.us-west-1.amazonaws.com/assets.hop.exchange/mainnet/v1-core-config.json') - for (const tokenConstants of Object.values(bridges)) { - const chainConstants = tokenConstants[getChainKey(chain)] - if (chainConstants === undefined) - continue - - let token = chainConstants.l2CanonicalToken ?? chainConstants.l1CanonicalToken; - let bridge = chainConstants.l2SaddleSwap ?? chainConstants.l1Bridge; - toa.push([token, bridge]) - } - if (chain === "ethereum") { - for (const bonder of Object.entries(bonders)) { - const tokenName = bonder[0] - let contractList = [] - for (let i of Object.values(bonder[1])) { - for (let j of Object.values(i)) { - const address = j.toLowerCase().trim() - if (!contractList.includes(address)) { - contractList.push(address) - } - } - } - for (const contract of contractList) { - const token = bridges[tokenName].ethereum.l1CanonicalToken?.trim() - toa.push([token, contract]) - } - } - } - toa = toa.filter(([i, j]) => i && j && j !== ADDRESSES.null && isValidAddress(i) && isValidAddress(j)) - return sumTokens2({ api, tokensAndOwners: toa, }) - } -} - -const chains = ['base', 'ethereum', 'polygon', 'optimism', 'arbitrum', ...Object.keys(chainMapping)] - -chains.forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } -}) \ No newline at end of file diff --git a/projects/hope-lend/index.js b/projects/hope-lend/index.js deleted file mode 100644 index 59a6f6fb5c4..00000000000 --- a/projects/hope-lend/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { aaveExports } = require('../helper/aave'); - -module.exports = { - ethereum: aaveExports("ethereum", "0x53FbcADa1201A465740F2d64eCdF6FAC425f9030", id => id, ['0x17b5896703b36879A037Aa94F08622ab113C0AD4'], { - abis: { - getAllATokens: 'function getAllHTokens() view returns (tuple(string symbol, address tokenAddress)[])', - } - }), - hallmarks: [ - ['2023-10-18', 'Protocol was hacked!'], - ], - deadFrom: '2023-10-18' -}; - -delete module.exports.ethereum.borrowed \ No newline at end of file diff --git a/projects/hope-money/index.js b/projects/hope-money/index.js deleted file mode 100644 index 4e7fbd7f0a3..00000000000 --- a/projects/hope-money/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') -const ADDRESSES = require('../helper/coreAssets.json') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: 'Tokens held in coinbase custody. Reserve info taken from: https://hope.money/gomboc.html', - doublecounted: true, - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.hopeMoney }) }, - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.null, '0x088117eD2b7ac7aE1801Fac4f359E1aeD95ca866'], - [ADDRESSES.null, '0x86Edc8da69261F4d6623B3a2494BA262Dc454B7f'], - [ADDRESSES.null, '0xDaC46e85f075512e9b4EF0cab58B6F21434eB253'], - [ADDRESSES.ethereum.STETH, '0x088117eD2b7ac7aE1801Fac4f359E1aeD95ca866'], - ['0xF1376bceF0f78459C0Ed0ba5ddce976F1ddF51F4', '0x6719f5e18B77C178793e6937d947bb00584E1b9e'] - ] - }) - } -} \ No newline at end of file diff --git a/projects/hope-swap/index.js b/projects/hope-swap/index.js deleted file mode 100644 index 00c5071ad3b..00000000000 --- a/projects/hope-swap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: getUniTVL({ factory: '0x26F53fbADeEb777fb2A122dC703433d79241b64e', useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/hopr/index.js b/projects/hopr/index.js deleted file mode 100644 index d8d3be14df5..00000000000 --- a/projects/hopr/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const wxHOPR_TOKEN_SMART_CONTRACT_ADDRESS = ADDRESSES.xdai.XHOPR; -const SAFE_FACTORY = '0x098B275485c406573D042848D66eb9d63fca311C'; -const HOPR_CHANNELS = '0x693Bac5ce61c720dDC68533991Ceb41199D8F8ae'; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: SAFE_FACTORY, - fromBlock: 29706820, - eventAbi: 'event NewHoprNodeStakeSafe(address instance)' - }); - - const safes = logs.map(log => log.args[0]); - - const owners = [...safes, HOPR_CHANNELS] - return sumTokens2({ api, tokens: [wxHOPR_TOKEN_SMART_CONTRACT_ADDRESS], owners, }) -} - -module.exports = { - xdai: { - tvl: () => ({}), - staking: tvl, - }, - methodology: 'HOPR TVL consists total amount of wxHOPR (wrapped xHOPR) that all users have in their HOPR Safes staked to receive a share of the revenue, and also the total amount of wxHOPR locked in the channels contract.', -}; \ No newline at end of file diff --git a/projects/hopswap/index.js b/projects/hopswap/index.js deleted file mode 100644 index 076eaf43384..00000000000 --- a/projects/hopswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - cronos: { - tvl: getUniTVL({ - factory: '0x918cefF586C00c1fa4726Dc50697172fd87df8e9', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/hord-fi/index.js b/projects/hord-fi/index.js deleted file mode 100644 index 34995631feb..00000000000 --- a/projects/hord-fi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { get } = require('../helper/http') -module.exports = { - timetravel: false, - ethereum: { - tvl: async () => { - const { stats } = await get('https://api.hord.app/validators/stats/latest') - return { ethereum: stats.total_eth_staked } - } - } -} \ No newline at end of file diff --git a/projects/horiza/index.js b/projects/horiza/index.js deleted file mode 100644 index c7992d27e78..00000000000 --- a/projects/horiza/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - arbitrum: { - factory: "0x5b1C257B88537d1Ce2AF55a1760336288CcD28B6", - fromBlock: 130373860, - } -}); diff --git a/projects/horizon/collateral.js b/projects/horizon/collateral.js deleted file mode 100644 index a346db5e07d..00000000000 --- a/projects/horizon/collateral.js +++ /dev/null @@ -1,31 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); -const { getBlock } = require('../helper/http'); - -const graph_endpoint = sdk.graph.modifyEndpoint('3URCfxZm32CHDYikF3eu93YCVpDKQyofm42FUh7KkRY9') -const graphQuery = gql` -query get_tvl($block: Int) { - snxholders(orderBy:collateral,orderDirection:desc,block: { number: $block },first:1000,skip:0, where: {initialDebtOwnership_gt: 0, debtEntryAtIndex_gt: 0}) { - collateral - } -}` - -async function tvl(ts, _block, chainBlocks) { - const block = await getBlock(ts, 'bsc', chainBlocks) - const { snxholders } = await request( - graph_endpoint, - graphQuery, - { block: block - 1000 } - ); - - var totalCollateral = 0; - for (const { collateral } of snxholders) { - totalCollateral += +collateral // sum of every user's collateral - } - - return { 'bsc:0xc0eff7749b125444953ef89682201fb8c6a917cd': totalCollateral * 10 ** 18 }; -} - -module.exports = { - collateral: tvl -} \ No newline at end of file diff --git a/projects/horizon/index.js b/projects/horizon/index.js deleted file mode 100644 index 06ec662fe8c..00000000000 --- a/projects/horizon/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { staking, } = require("../helper/staking"); -const { collateral } = require('./collateral.js'); - -const tokenStaking = [ - { - stakingToken: '0x0409633A72D846fc5BBe2f98D88564D35987904D', // phbToken - rewardToken: '0xc0eff7749b125444953ef89682201fb8c6a917cd', // hzn - stakingContract: '0xa1771DCfb7822C8853D7E64B86E58f7f1eB5e33E' // stakingContract - }, - { - stakingToken: '0xc0eff7749b125444953ef89682201fb8c6a917cd', // hzn - rewardToken: '0xc0eff7749b125444953ef89682201fb8c6a917cd', // hzn - stakingContract: '0x67D5a94F444DF4bBA254645065a4137fc665Bf98' // stakingContract - }, -] -const lpStaking = [ - { - stakingLPToken: '0xdc9a574b9b341d4a98ce29005b614e1e27430e74', // hzn-bnb - rewardToken: '0xc0eff7749b125444953ef89682201fb8c6a917cd', // hzn - stakingContract: '0x84838d0AB37857fAd5979Fcf6BDDf8ddb1cC1dA8' // stakingContract - }, - { - stakingLPToken: '0xc3bf4e0ea6b76c8edd838e14be2116c862c88bdf', // zusd-busd - rewardToken: '0xc0eff7749b125444953ef89682201fb8c6a917cd', // hzn - stakingContract: '0x5646aA2F9408C7c2eE1dC7db813C8B687A959a85' // stakingContract - } -] - -module.exports = { - methodology: 'Counts liquidty on the token staking and lp staking contracts', - bsc: { - tvl: collateral, - staking: staking(tokenStaking.map(i => i.stakingContract), tokenStaking.map(i => i.stakingToken)), - pool2: staking(lpStaking.map(i => i.stakingContract), lpStaking.map(i => i.stakingLPToken)) - }, -}; \ No newline at end of file diff --git a/projects/horizondex/index.js b/projects/horizondex/index.js deleted file mode 100644 index 372bdb75b19..00000000000 --- a/projects/horizondex/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const { mergeExports } = require("../helper/utils"); - -const uniExport = uniV3Export({ - linea: { - factory: "0x9Fe607e5dCd0Ea318dBB4D8a7B04fa553d6cB2c5", - fromBlock: 1150, - }, - base: { - factory: "0x07AceD5690e09935b1c0e6E88B772d9440F64718", - fromBlock: 2053334, - }, -}); - - -const algebraExport = uniV3Export({ - linea: { - factory: "0xec4f2937e57a6F39087187816eCc83191E6dB1aB", - fromBlock: 3395601, - isAlgebra: true, - }, -}); - -module.exports = mergeExports([uniExport, algebraExport]); \ No newline at end of file diff --git a/projects/hot-takes/index.js b/projects/hot-takes/index.js deleted file mode 100644 index e98411a6156..00000000000 --- a/projects/hot-takes/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xfedA2BAE8F800E990fF3f0848eBd7Eb24b4f6408" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the AVAX on ${contract}`, - avax: { - tvl - } -} \ No newline at end of file diff --git a/projects/hotbit/index.js b/projects/hotbit/index.js deleted file mode 100644 index a8d828a135f..00000000000 --- a/projects/hotbit/index.js +++ /dev/null @@ -1,83 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bsc: { - owners: [ - '0xC7029E939075F48fa2D5953381660c7d01570171', - '0xb18fbfe3d34fdc227eb4508cde437412b6233121', - '0x768f2a7ccdfde9ebdfd5cea8b635dd590cb3a3f1', - ], - }, - ethereum: { - owners: [ - '0x562680a4dc50ed2f14d75bf31f494cfe0b8d10a1', - '0xb18fbfe3d34fdc227eb4508cde437412b6233121', - '0x768f2a7ccdfde9ebdfd5cea8b635dd590cb3a3f1' - ] - }, - tron: { - owners: [ - 'TS9b9boewmB6tq874PnVZrKPf4NZw9qHPi', - 'TFPqi7KTRwi2tihwS5dp1QomHowp1x2f45', - ] - }, - bitcoin: { - owners: bitcoinAddressBook.hotbit - }, - ripple: { - owners: ['rJKBidE4Av6ZaFTBcAucZXCpU7QvNXyfpT'] - }, - arbitrum: { - owners: [ - '0xd690a9DfD7e4B02898Cdd1a9E50eD1fd7D3d3442', - '0x768f2a7ccdfde9ebdfd5cea8b635dd590cb3a3f1', - '0xb18fbfe3d34fdc227eb4508cde437412b6233121' - ] - }, - avax: { - owners: [ - '0x6C2e8d4F73f6A129843d1b3D2ACAFF1DB22E3366', - '0x768f2a7ccdfde9ebdfd5cea8b635dd590cb3a3f1', - '0xb18fbfe3d34fdc227eb4508cde437412b6233121' - ] - }, - polygon: { - owners: [ - '0xb34ed85bc0b9da2fa3c5e5d2f4b24f8ee96ce4e9', - '0x768f2a7ccdfde9ebdfd5cea8b635dd590cb3a3f1', - '0xb18fbfe3d34fdc227eb4508cde437412b6233121' - ] - }, - optimism: { - owners: [ - '0xfa6cf22527d88270eea37f45af1808adbf3c1b17', - '0xb18fbfe3d34fdc227eb4508cde437412b6233121', - '0x768f2a7ccdfde9ebdfd5cea8b635dd590cb3a3f1' - - ] - }, - fantom: { - owners: [ - '0xc62A0781934744E05927ceABB94a3043CdCfEA89', - '0x768f2a7ccdfde9ebdfd5cea8b635dd590cb3a3f1', - '0xb18fbfe3d34fdc227eb4508cde437412b6233121' - ] - }, - eos:{ - owners: [ - 'hotbitioeoss', - 'hotbitioeos2' - ] - }, - cronos: { - owners: [ - '0x768f2a7ccdfde9ebdfd5cea8b635dd590cb3a3f1', - '0x4b81c7Ff6912856AFBb40ACb32084A41F019B433', - '0xb18fbfe3d34fdc227eb4508cde437412b6233121' - ] - } -} - -module.exports = cexExports(config) -module.exports.methodology = 'We have collect this wallets from Hotbit Team on the 14/12/22 and added more on the 09/02/2023. We are not counting money in defi Protocols. In this case around $3.1m in Curve (Ethereum chain), around $1.1m in Convex, $1.6m in BendDAO, $960k in PancakeSwap (BSC Chain), $650k in Beefy, $230K in AutoFarm. We are also not counting around $622km in the Telcoin (Polygon) and $516k in Sandbox. We are also not counting around $975k in Wonderland (Avax) and $385k on Homora V2. We are also not counting $624k in Alpaca Finance (Fantom). We may also not count a few small token balances and other small amounts in defi Protocols. This data was collected on 19/04/23' \ No newline at end of file diff --git a/projects/hotcoin/index.js b/projects/hotcoin/index.js deleted file mode 100644 index a140caccd36..00000000000 --- a/projects/hotcoin/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - ethereum: { - owners: [ - "0x10b620f9720C0c6460484A81C59a6297Fa48F817", - "0xbB916e1E722f69d9fdFE6805f3dEDD51353f8E55", - "0x5B5627C9686c5744534C8aa7d9C312DA88794b8E", - ], - }, - tron: { - owners: [ - "TDZu7rwKeMrcXQRfmzA2fQUb1bCYUoJfPw", - "TDVBTADNXp7PuLLXdHyLn1v96Q2Kx1GKYE", - "TXNUMHHvazAEPyjECzAqVrnCwJV559ijYv", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.hotcoin, - }, - scroll: { - owners: [ - "0xB54259245da3578C02591565Fa88a678aD542146", - ], - }, - optimism: { - owners: ["0x1Fa51b8A412b32FB7e4C25082471214f22D0c9D9"], - }, - op_bnb: { - owners: ["0x84B13Be1968cE1caEE7431BD6f84CB2EBc7F8325"], - }, - solana: { - owners: ["78TDoKGTeS7RRoqUrSijS1QVFVmxJvwE2NxYicHFHh3N"], - }, - arbitrum: { - owners: ["0xc2997c47ff647Db91092Cf0ad184E91FB5F80D6F"], - }, - polygon: { - owners: ["0x72a73dC55a7038cb4707F2a23aC2AE705A8Fa888"], - }, - bsc: { - owners: ["0xa1ab382330d6b7a99ee3441e6594e49790294e4e", "0xDCd7eFd91A6afD14168352023fCC8939601ea0bc", "0x6EDA9105761B840F9D24d34Ab1dC28629EcC35fd"], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/hotcross/index.js b/projects/hotcross/index.js deleted file mode 100644 index 28cfa0a693b..00000000000 --- a/projects/hotcross/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getConfig } = require("../helper/cache"); - -const chainKeys = { - ethereum: { - asset: "erc20", - chain: "eth", - }, - bsc: { - asset: "bep20", - chain: "bsc", - }, -}; - -function tvl(chain) { - return async (_t, _e, { [chain]: block }) => { - const assets = await getConfig('hotcross', "https://api.hotcross.com/bridges"); - const tokensAndOwners = assets.map((data) => [ - data[chainKeys[chain].asset], - data[`${chainKeys[chain].chain}BridgeAddress`], - ]); - return sumTokens2({ tokensAndOwners, block, chain }); - }; -} - -const chainTypeExports = () => { - return Object.keys(chainKeys).reduce( - (obj, chain) => ({ ...obj, [chain]: { tvl: tvl(chain) } }), - {} - ); -}; - -module.exports = chainTypeExports(); diff --git a/projects/hotfries/index.js b/projects/hotfries/index.js deleted file mode 100644 index fe69713f5c3..00000000000 --- a/projects/hotfries/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {staking} = require('../helper/staking') - -module.exports={ - bsc:{ - tvl: staking("0x849741B79bc1618b46CF9ec600E94E771DEde601", ADDRESSES.bsc.BUSD) - } -} \ No newline at end of file diff --git a/projects/hotpot-finance/index.js b/projects/hotpot-finance/index.js deleted file mode 100644 index de28d2b149e..00000000000 --- a/projects/hotpot-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const masterchef = "0x3BD6827d09a0aF02fe4B6688E16F6fAB8F14938e"; -const token = "0x00438AE909739f750c5df58b222Fe0Bde900C210"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/houdiniswap/index.js b/projects/houdiniswap/index.js deleted file mode 100644 index 2586d7e86a3..00000000000 --- a/projects/houdiniswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require("../helper/staking") - -module.exports={ - ethereum:{ - tvl:()=>({}), - staking: staking("0x4401c51110e7d3a970Fe48AeaeE8249b181210a1","0x922D8563631B03C2c4cf817f4d18f6883AbA0109") - } -} \ No newline at end of file diff --git a/projects/hourglass/index.js b/projects/hourglass/index.js deleted file mode 100644 index f0ac27afab9..00000000000 --- a/projects/hourglass/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs') - -const ethereum_pitchfxs = '0x11ebe21e9d7bf541a18e1e3ac94939018ce88f0b'; - -const config = { - ethereum: { factory: '0x679619FA685a18782a86dD5850124A75E83daD8F', fromBlock: 19877998 }, - mantle: { factory: '0x624bd5ba06A856C4D5f60c8Ba29eeE1f684Ddf05', fromBlock: 65870976 }, -} - -module.exports = { - methodology: 'TVL accounts for all assets deposited into our boosted vaults. It also includes the amount of FXS time-locked and minted as pitchFXS.', -}; - - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (chain === 'ethereum') - await computePitchfxsTvl(api) - const logs = await getLogs2({ - api, - factory, - eventAbi: 'event NewMaturityCreated (uint256 deploymentIndex, address depositor, address[] receipts)', - fromBlock, - }) - - const vaults = logs.map(log => log.depositor) - const tokens = await api.multiCall({ abi: 'address:getUnderlying', calls: vaults }) - return api.sumTokens({ tokensAndOwners2: [tokens, vaults] }) - } - } -}) - -const computePitchfxsTvl = async (api) => { - const balance = await api.call({ - target: ethereum_pitchfxs, - params: [], - abi: 'erc20:totalSupply', - }); - - api.addToken(ADDRESSES.ethereum.FXS, balance); -} diff --git a/projects/houstonswap/index.js b/projects/houstonswap/index.js deleted file mode 100644 index 549620b8888..00000000000 --- a/projects/houstonswap/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -const getPoolInfo = pool => pool.data.fee_tier.data; - -const token0Reserve = (i) => { - const poolInfos = getPoolInfo(i); - let reserve0Total = 0; - poolInfos.forEach(poolInfo => { - const reserve0 = +poolInfo.value.reserve_x.value - reserve0Total = reserve0Total + reserve0 - }); - - return reserve0Total.toString() -} - -const token1Reserve = (i) => { - const poolInfos = getPoolInfo(i); - let reserve1Total = 0; - poolInfos.forEach(poolInfo => { - const reserve1 = +poolInfo.value.reserve_y.value - reserve1Total = reserve1Total + reserve1 - }); - - return reserve1Total.toString() - -} - -module.exports = dexExport({ - token0Reserve, - token1Reserve, - account: '0xdfa1f6cdefd77fa9fa1c499559f087a0ed39953cd9c20ab8acab6c2eb5539b78', - poolStr: 'pool::Pool<', -}) diff --git a/projects/hover/index.js b/projects/hover/index.js deleted file mode 100644 index ff04855684f..00000000000 --- a/projects/hover/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - kava: compoundExports2({ comptroller: '0x3A4Ec955a18eF6eB33025599505E7d404a4d59eC', cether: '0xb51eFaF2f7aFb8a2F5Be0b730281E414FB487636' }), -} diff --git a/projects/hpdex/index.js b/projects/hpdex/index.js deleted file mode 100644 index 2a4b8f45495..00000000000 --- a/projects/hpdex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (0xE1d563BcFD4E2a5A9ce355CC8631421186521aAA) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - hpb: { - tvl: getUniTVL({ - factory: "0xE1d563BcFD4E2a5A9ce355CC8631421186521aAA", - useDefaultCoreAssets: true, - }) - } -}; diff --git a/projects/hskhodlium/index.js b/projects/hskhodlium/index.js deleted file mode 100644 index c43dfaf8515..00000000000 --- a/projects/hskhodlium/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); - -const HSK_CHAIN = "hsk"; -const HSK_WRAPPED_TOKEN = ADDRESSES.hsk.WHSK.toLowerCase(); -const STAKING_CONTRACT = "0xd30a4ca3b40ea4ff00e81b0471750aa9a94ce9b1"; - -async function tvl() { - const stakingBalance = await sdk.api.eth.getBalance({ - target: STAKING_CONTRACT, - chain: HSK_CHAIN, - }); - - return { - [`${HSK_CHAIN}:${HSK_WRAPPED_TOKEN}`]: stakingBalance.output, - }; -} - -module.exports = { - timetravel: false, - misrepresentedTokens: false, - methodology: "TVL includes all native HSK tokens staked at the main contract on HashKey Chain. Token price is derived from its Ethereum-wrapped version.", - [HSK_CHAIN]: { - tvl, - }, -}; - diff --git a/projects/hswap.js b/projects/hswap.js deleted file mode 100644 index a9caea1d6dc..00000000000 --- a/projects/hswap.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - heco: { - tvl: () => ({}) - } -} - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/hub3-ee/index.js b/projects/hub3-ee/index.js deleted file mode 100644 index 369792591d7..00000000000 --- a/projects/hub3-ee/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection, } = require("../helper/solana"); - - -async function tvl() { - const programId = new PublicKey("2pi53pUUC5S4zyUU6Wrbe6EfYXS9LNcpikpwPFahtQQw"); - const accounts = await getConnection().getProgramAccounts(programId, { - filters: [{ - dataSize: 94 - }], - dataSlice: { offset: 0, length: 1 } // we dont care about the data, just the lamports - }) - - return { - solana: accounts.reduce((tvl, { account }) => { return tvl + account.lamports / 1e9 }, 0) - } -} - - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -}; diff --git a/projects/hubble-exchange/index.js b/projects/hubble-exchange/index.js deleted file mode 100644 index 659c0ec06b2..00000000000 --- a/projects/hubble-exchange/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const chain = 'avax' -const toa = [ - [ADDRESSES.avax.USDC, '0x5c6fc0aaf35a55e7a43fff45575380bcedb5cbc2'], // USDC used for HUSD minting - [ADDRESSES.avax.WAVAX, '0x7648675ca85dfb9e2f9c764ebc5e9661ef46055d'], // AVAX used as collateral - [ADDRESSES.avax.WETH_e, '0x7648675ca85dfb9e2f9c764ebc5e9661ef46055d'], // WETH used as collateral -] - -module.exports = { - avax: { - tvl: async (_, _b, { [chain]: block }) => sumTokens2({ tokensAndOwners: toa, chain, block, }) - } -} \ No newline at end of file diff --git a/projects/hubble/index.js b/projects/hubble/index.js deleted file mode 100644 index 930c6414da6..00000000000 --- a/projects/hubble/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); - -async function tvl() { - const collateralVaultAuthority = 'HZYHFagpyCqXuQjrSCN2jWrMHTVHPf9VWP79UGyvo95L' - const psmVaultAuthority = '8WrqMitrgjzfqaPJ5PK6X3VT6B1Z8rDgQQny2aWwvJ8q' - return sumTokens2({ owners: [collateralVaultAuthority, psmVaultAuthority] }) -} - -async function staking() { - const hbbStakingPoolTokenAndOwner = [ - 'HBB111SCo9jkCejsZfz8Ec8nH7T6THF8KEKSnvwT6XK6', - 'GbjqYShCb3LeyXuxkjLBGcmrWakqePPpMoHraQJcTtJJ' - ] - - const tokensAndOwners = [hbbStakingPoolTokenAndOwner] - return sumTokens2({ tokensAndOwners, }) -} - -module.exports = { - timetravel: false, - solana: { tvl, staking, }, -}; diff --git a/projects/huckleberry-lending/index.js b/projects/huckleberry-lending/index.js deleted file mode 100644 index 3d8df54037e..00000000000 --- a/projects/huckleberry-lending/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -const unitroller = '0xcffef313b69d83cb9ba35d9c0f882b027b846ddc' - -module.exports = { - moonriver: compoundExports2({ comptroller: unitroller, cether: '0x455d0c83623215095849abcf7cc046f78e3edae0' }), -} \ No newline at end of file diff --git a/projects/huckleberry/index.js b/projects/huckleberry/index.js deleted file mode 100644 index 1a9331245ad..00000000000 --- a/projects/huckleberry/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { stakingPricedLP } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - -const dexTVL = getUniTVL({ - factory: '0x017603C8f29F7f6394737628a93c57ffBA1b7256', - useDefaultCoreAssets: true, -}) - -module.exports = { - methodology: "Liquidity on DEX and supplied and borrowed amounts found using the comptroller address(0xcffef313b69d83cb9ba35d9c0f882b027b846ddc)", - misrepresentedTokens: true, - moonriver: { - staking: stakingPricedLP("0x37619cC85325aFea778830e184CB60a3ABc9210B", "0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756", "moonriver", "0xbBe2f34367972Cb37ae8dea849aE168834440685", "moonriver"), - tvl: dexTVL, - }, - clv: { - // tvl: getUniTVL({ factory: '0x4531e148b55d89212E219F612A459fC65f657d7d', useDefaultCoreAssets: true }), - tvl: () => ({}), - }, -} \ No newline at end of file diff --git a/projects/huma/index.js b/projects/huma/index.js deleted file mode 100644 index a174d7192bd..00000000000 --- a/projects/huma/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const abiPool = { - "checkPool": "function checkPool(uint256 poolId_) view returns ((uint256 poolId, address poolAddress, string poolName, uint8 poolStatus, address poolConfigAddress, address poolTimelock))", -} - -const config = { - celo: { - factory: '0x85c8dC49B8DaA709e65dd2182e500E8AC3CaA6C7', - v1Pools: ['0xa190a0ab76f58b491cc36205b268e8cf5650c576'], - }, - polygon: { - v1Pools: ['0xe8926adbfadb5da91cd56a7d5acc31aa3fdf47e5', '0x95533e56f397152b0013a39586bc97309e9a00a7', '0x3EBc1f0644A69c565957EF7cEb5AEafE94Eb6FcE'], - } -} - -module.exports = { - methodology: 'sum all tvls from all pools', - start: '2024-05-21', //2023-05-01 -} - -Object.keys(config).forEach(chain => { - const { factory, v1Pools, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const allTokens = [] - const allOwners = [] - const v1Data = await api.multiCall({ abi: 'function getCoreData() view returns (address uToken, address, address, address)', calls: v1Pools}) - allTokens.push(...v1Data.map(i => i.uToken)) - allOwners.push(...v1Pools) - - if (factory) { - const poolData = await api.fetchList({ lengthAbi: 'poolId', itemAbi: abiPool.checkPool, target: factory, startFromOne: true}) - const pools = poolData.filter(p => p.poolStatus === '1').map(p => p.poolAddress) - const poolConfigs = await api.multiCall({ abi: 'address:poolConfig', calls: pools}) - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: poolConfigs}) - const owners = await api.multiCall({ abi: 'address:poolSafe', calls: pools}) - allTokens.push(...tokens) - allOwners.push(...owners) - } - return api.sumTokens({ tokensAndOwners2: [allTokens, allOwners] }) - }, - borrowed: async (api) => { - const allTokens = [] - const allOwners = [] - const v1Data = await api.multiCall({ abi: 'function getCoreData() view returns (address uToken, address, address, address)', calls: v1Pools}) - const v1Bals = await api.multiCall({ abi: 'uint256:totalPoolValue', calls: v1Pools}) - api.add(v1Data.map(i => i.uToken), v1Bals) - allTokens.push(...v1Data.map(i => i.uToken)) - allOwners.push(...v1Pools) - - if (factory) { - const poolData = await api.fetchList({ lengthAbi: 'poolId', itemAbi: abiPool.checkPool, target: factory, startFromOne: true}) - const pools = poolData.filter(p => p.poolStatus === '1').map(p => p.poolAddress) - const poolConfigs = await api.multiCall({ abi: 'address:poolConfig', calls: pools}) - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: poolConfigs}) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: pools}) - api.add(tokens, bals) - const owners = await api.multiCall({ abi: 'address:poolSafe', calls: pools}) - allTokens.push(...tokens) - allOwners.push(...owners) - } - - const calls = allTokens.map((t, i) => ({ target: t, params: allOwners[i] })) - const tokenBals = (await api.multiCall({ abi: 'erc20:balanceOf', calls, })).map(i => i * -1) // subtract token balance in pools - api.add(allTokens, tokenBals) - } - } -}) \ No newline at end of file diff --git a/projects/humble/index.js b/projects/humble/index.js deleted file mode 100644 index 1394eb24271..00000000000 --- a/projects/humble/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { toUSDTBalances } = require('../helper/balances'); -const { get } = require('../helper/http'); - -async function tvl(){ - const response = await get('https://free-api.vestige.fi/providers?currency=USD') - const data = response.find(p => p.id === 'H2') - return toUSDTBalances(data.tvl); -} - -module.exports = { - deadFrom: '2025-06-01', - timetravel: false, - misrepresentedTokens:true, - algorand:{ tvl } -} diff --git a/projects/hummus-weighted/index.js b/projects/hummus-weighted/index.js deleted file mode 100644 index 09151f93e68..00000000000 --- a/projects/hummus-weighted/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -module.exports = { - metis: { - tvl: onChainTvl('0x95B4F64c2a96F770C1b4216e18ED692C01506437', 7066703), - } -} diff --git a/projects/hummus/index.js b/projects/hummus/index.js deleted file mode 100644 index 46f1395b5ed..00000000000 --- a/projects/hummus/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - metis: { - pools: [ - "0x248fD66e6ED1E0B325d7b80F5A7e7d8AA2b2528b", // main - "0x5b7e71F6364DA1716c44a5278098bc46711b9516", // mai - "0x9D73ae2Cc55EC84e0005Bd35Fd5ff68ef4fB8aC5", // busd - "0x7AA7E41871B06f15Bccd212098DeE98d944786ab", // old - ] - }, -} - -async function tvl(api) { - const { pools } = config[api.chain] - const tokensArray = await api.multiCall({ abi: "address[]:getTokenAddresses", calls: pools }) - const tokens = tokensArray.flat() - const calls = tokensArray.map((t, i) => t.map((token) => ({ target: pools[i], params: token }))).flat() - const owners = await api.multiCall({ abi: "function assetOf(address) view returns (address)", calls }) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], }); -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/hundredfinance/index.js b/projects/hundredfinance/index.js deleted file mode 100644 index eabfe2ca026..00000000000 --- a/projects/hundredfinance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const comptroller = "0x0f390559f258eb8591c8e31cf0905e97cf36ace2" - -module.exports = { - hallmarks: [ - // [1647302400, "Reentrancy attack"], - [1681541920, "Protocol hacked (oc Optimism)"], - - ], - ethereum: compoundExports2({ comptroller, cether: '0xfcd8570ad81e6c77b8d252bebeba62ed980bd64d' }), - arbitrum: compoundExports2({ comptroller, cether: '0x8e15a22853a0a60a0fbb0d875055a8e66cff0235' }), - fantom: compoundExports2({ comptroller, cether: '0xfCD8570AD81e6c77b8D252bEbEBA62ed980BD64D' }), - harmony: compoundExports2({ comptroller, cether: '0xbb93c7f378b9b531216f9ad7b5748be189a55807' }), - moonriver: compoundExports2({ comptroller: "0x7d166777bd19a916c2edf5f1fc1ec138b37e7391", cether: '0xd6fcbccfc375c2c61d7ee2952b329dceba2d4e10' }), - xdai: compoundExports2({ comptroller: "0x6bb6ebCf3aC808E26545d59EA60F27A202cE8586", cether: '0x6edcb931168c9f7c20144f201537c0243b19dca4' }), - polygon: compoundExports2({ comptroller: "0xedba32185baf7fef9a26ca567bc4a6cbe426e499", cether: '0xEbd7f3349AbA8bB15b897e03D6c1a4Ba95B55e31' }), - optimism: compoundExports2({ comptroller: "0x5a5755E1916F547D04eF43176d4cbe0de4503d5d", cether: '0x1A61A72F5Cf5e857f15ee502210b81f8B3a66263' }), -} - -module.exports.optimism.borrowed = () => ({}) diff --git a/projects/hunnyfinance/abi.json b/projects/hunnyfinance/abi.json deleted file mode 100644 index 048f7d2e793..00000000000 --- a/projects/hunnyfinance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "stakingToken": "address:stakingToken", - "balance": "uint256:balance" -} \ No newline at end of file diff --git a/projects/hunnyfinance/index.js b/projects/hunnyfinance/index.js deleted file mode 100644 index 50c176e9f30..00000000000 --- a/projects/hunnyfinance/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const abi = require("./abi.json"); -const { sumUnknownTokens } = require("../helper/unknownTokens"); - -// HUNNY FINANCE -const hunnyToken = "0x565b72163f17849832a692a3c5928cc502f46d69"; - -// POOL2 TOKEN -const hunnybnblpstaking = "0x434Af79fd4E96B5985719e3F5f766619DC185EAe"; - -// STAKING -const stakingContracts = [ - "0x8B2cf8CF0A30082111FB50D9a8FEBfe53C155B50", // AUTO HUNNY HIVE - "0x24320c20499535d0D7a8F6adFb08e5E3f5694417", // HUNNY ACE HIVE - "0x389D2719a9Bcc29583Db89FD9454ADe9e57CD18d" // RETIRED HUNNY HIVE -] - -const farmContracts = [ - // Auto Compounding FARM Contracts - "0x848391a2509646cD380fca7f9c740E6F3B6e516F", // CAKE - "0x76Bd85dA85aA07c6f8565DE0d882356083f37115", // BNB - "0x7969EF7B7D6f79a798e85367C5824B835C2D644F", // BABY - "0x9e84a8f7043601a2Ca497c5cF700FF5E099B55DD", // BUSD - "0xf78b82BFA4596c6862720E3e13E6eaA24B74e4f8", // USDT - // "0x8d58AF27477Aa9B0F79A0F7825689Af015BaC8F2", // BTCB - // "0xeAC4584f446eb608CCd9C173B84a1E277db62C9B", // ETH - "0xb7D43F1beD47eCba4Ad69CcD56dde4474B599965", // CAKE - "0xAD4134F59C5241d0B4f6189731AA2f7b279D4104", // BANANA - "0xc212ba7Dec34308A4cb380612830263387150310", // USDC (Venus) - "0xBcCfD3e2Af166bB28B6b4Dfd6C1BF1F3f7F47632", // USDT (Venus) - "0xe763D7E9a14ADB928766C19DF4bcE580fb6393B3", // BUSD (Venus) - // Booster HIVE Contracts - "0x65003459BF2506B096a9a9C8bC691e88430567D1", // BANANA-BNB - "0xBDb18B0C2fC2dD0DeD494F43c4101E8D23Fb596E", // CAKE-BNB - // Retired HIVE contracts - "0x12180BB36DdBce325b3be0c087d61Fce39b8f5A4", // CAKE-BNB - "0xD87F461a52E2eB9E57463B9A4E0e97c7026A5DCB", // BUSD-BNB - "0x31972E7bfAaeE72F2EB3a7F68Ff71D0C61162e81", // USDT-BNB - "0x3B34AA6825fA731c69C63d4925d7a2E3F6c7f13C", // DOGE-BNB - "0x2ea6676c106e200Eef203331d794c7B4A01CaAB5", // FIL - "0xef43313e8218f25Fe63D5ae76D98182D7A4797CC", // TUSD - "0xdFe440fBe839E9D722F3d1c28773850F99692c76", // BUNNY-BNB - "0xF0D4a0398D6D48B958d0777528D0eE9A24Fb8899", // DOGE-BNB - "0x6c7eFFa3d0694f8fc2D6aEe501ff484c1FE6fcD2", // LINK-BNB - "0x4C8714d28Bf187E4B0aC47B880334090500dAFD4", // USDT-BNB - "0xf36e82E42670DB17f08C9731a45689D9190fB8AC" // BUSD-BNB -]; - -async function tvl(api) { - const tokens = await api.multiCall({ abi: abi.stakingToken, calls: farmContracts }) - const bals = (await api.multiCall({ abi: abi.balance, calls: farmContracts, permitFailure: true})).map(i =>i ?? 0) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, resolveLP: true, lps: tokens, useDefaultCoreAssets: true, }) -} - -async function staking(api) { - const bals = await api.multiCall({ abi: abi.balance, calls: stakingContracts }) - bals.forEach(i => api.add(hunnyToken, i)) - return api.getBalances(); -} - -async function pool2(api) { - const tokens = await api.multiCall({ abi: 'address:token', calls: [hunnybnblpstaking] }) - const bals = await api.multiCall({ abi: abi.balance, calls: [hunnybnblpstaking] }) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, resolveLP: true, lps: tokens, useDefaultCoreAssets: true, }) -} - -module.exports = { - methodology: "TVL is from the pools on Hunny Finance and tokens locked in Hunny DAO treasury", - bsc: { - tvl, - staking, - pool2 - } -} \ No newline at end of file diff --git a/projects/hunnyswap/index.js b/projects/hunnyswap/index.js deleted file mode 100644 index 10b2a38b00f..00000000000 --- a/projects/hunnyswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x0c6A0061F9D0afB30152b8761a273786e51bec6d) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - avax: { - tvl: getUniTVL({ factory: '0x0c6A0061F9D0afB30152b8761a273786e51bec6d', useDefaultCoreAssets: true }), - }, -}; // node test.js projects/hunnyswap/index.js \ No newline at end of file diff --git a/projects/huobi/index.js b/projects/huobi/index.js deleted file mode 100644 index 402d662565e..00000000000 --- a/projects/huobi/index.js +++ /dev/null @@ -1,192 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); - -const config = { - bitcoin: { - owners: bitcoinAddressBook.huobi, - }, - ethereum: { - owners: [ - "0xa929022c9107643515f5c777ce9a910f0d1e490c", - "0x18709e89bd403f470088abdacebe86cc60dda12e", - "0xcac725bef4f114f728cbcfd744a731c2a463c3fc", - "0x0511509A39377F1C6c78DB4330FBfcC16D8A602f", - "0x1205E4f0D2f02262E667fd72f95a68913b4F7462", - "0xE4818f8fDe0C977A01DA4Fa467365B8bF22b071E", - "0x5C985E89DDe482eFE97ea9f1950aD149Eb73829B", - "0xc589b275e60dda57ad7e117c6dd837ab524a5666", - "0x6b2286fc3a9265bab3f064808022aca54de4b6ce", // add on 08/08/2023 (we defillama) - "0x3d655889d197125fb90dcb72e4a287a8410ed1b9", // add on 08/08/2023 (we defillama) - "0x2abc22eb9a09ebbe7b41737ccde147f586efeb6a", // add on 08/08/2023 (we defillama) - "0xa5d7f0f7027fa8f4d1be8042e1e43bbdec36951e", // add on 08/08/2023 (we defillama) - "0xeee28d484628d41a82d01e21d12e2e78d69920da", // add on 08/08/2023 (we defillama) - "0x6748f50f686bfbca6fe8ad62b22228b87f31ff2b", // add on 08/08/2023 (we defillama) - "0x34189c75cbb13bdb4f5953cda6c3045cfca84a9e", // add on 08/08/2023 (we defillama) - "0x1062a747393198f70f71ec65a582423dba7e5ab3", // add on 08/08/2023 (we defillama) - "0xab5c66752a9e8167967685f1450532fb96d5d24f", // add on 08/08/2023 (we defillama) - "0xdb0e89a9b003a28a4055ef772e345e8089987bfd", // add on 08/08/2023 (we defillama) - "0xfdb16996831753d5331ff813c29a93c76834a0ad", // add on 08/08/2023 (we defillama) - "0x46705dfff24256421a05d056c29e81bdc09723b8", // add on 08/08/2023 (we defillama) - "0xfd54078badd5653571726c3370afb127351a6f26", // add on 08/08/2023 (we defillama) - "0x07ef60deca209ea0f3f3f08c1ad21a6db5ef9d33", // add on 08/08/2023 (we defillama) - "0x18916e1a2933cb349145a280473a5de8eb6630cb", // add on 08/08/2023 (we defillama) - "0xfa4b5be3f2f84f56703c42eb22142744e95a2c58", // add on 08/08/2023 (we defillama) - "0x0a98fb70939162725ae66e626fe4b52cff62c2e5", // add on 08/08/2023 (we defillama) - "0x918800e018a0eeea672740f88a60091c7d327a79", // add on 08/08/2023 (we defillama) - "0xadb2b42f6bd96f5c65920b9ac88619dce4166f94", // add on 08/08/2023 (we defillama) - "0x42dc966b7ecc3c6cc73e7bc04862859d5bddce65", // add on 08/08/2023 (we defillama) - "0xe8d8a02601f54acb6fb69537be1f1d7cc76ccd8c", // add on 08/08/2023 (we defillama) - "0xf881bcb3705926cea9c598ab05a837cf41a833a9", // add on 08/08/2023 (we defillama) - "0xa03400e098f4421b34a3a44a1b4e571419517687", - "0x598273ea2cabd9f798564877851788c5e0d5b7b9", // start add on 23/02/2024 (we defillama) - "0x4fb312915b779b1339388e14b6d079741ca83128", - "0x30741289523c2e4d2a62c7d6722686d14e723851", - "0xe93381fb4c4f14bda253907b18fad305d799241a", // end add on 23/02/2024 (we defillama) - "0x6663613FbD927cE78abBF7F5Ca7e2c3FE0d96d18", // add on 22/07/2024 - ], - blacklistedTokens: [ - "0x0316eb71485b0ab14103307bf65a021042c6d380", // HBTC , we already track their backed BTC (1btc wallet on the list) - ], - }, - polygon: { - owners: [ - "0xd70250731a72c33bfb93016e3d1f0ca160df7e42", - "0x9a7ffd7f6c42ab805e0edf16c25101964c6326b6", // add on 23/02/2024 - "0x18709e89bd403f470088abdacebe86cc60dda12e", - "0x2177c77a1f3c4900de7668662706633db4688726", - ], - }, - litecoin: { - owners: [ - "MNky8PL58UjL14mcZm3ESvEkYQkzMY9kfu", - "LYmdXiH1u6UN2bFetfTGnNuFgEG64FWVLU", - "MGZv8pEkrsmpa2YAXRVXTtdCPBMnnR28fY", - "MCRXTQ5uuBh6Qt8t4LuqZNvruZ5SmWXjrY", - ], - }, - solana: { - owners: [ - "88xTWZMeKfiTgbfEmPLdsUCQcZinwUfk25EBQZ21XMAZ", - "BY4StcU9Y2BpgH8quZzorg31EGE4L1rjomN8FNsCBEcx", // add on 23/02/2024 - "8NBEbxLknGv5aRYefFrW2qFXoDZyi9fSHJNiJRvEcMBE", - "5bJcc9eb2XE7mqcET2xDuAdMGuXWybb4YPmAHLjKLhQG", - ], - }, - tron: { - owners: [ - "TYh6mgoMNZTCsgpYHBz7gttEfrQmDMABub", - "TKgD8Qnx9Zw3DNvG6o83PkufnMbtEXis4T", - "TCQQjfccKdMi4CnPAzmZW5TALH4HbwceVb", - "TNaRAoLUyYEV2uF7GUrzSjRQTU8v5ZJ5VR", - "TDToUxX8sH4z6moQpK3ZLAN24eupu2ivA4", - "TCiRCBNFrL6bFKWL94yWQi5hNMGNp1Nu27", - "TGn1uvntAVntT1pG8o7qoKkbViiYfeg6Gj", - "TAuUCiH4JVNBZmDnEDZkXEUXDARdGpXTmX", - "TF2fmSbg5HAD34KPUH7WtWCxxvgXHohzYM", - "THZovMcKoZaV9zzFTWteQYd2f3NEvnzxAM", - // 'TZ1SsapyhKNWaVLca6P2qgVzkHTdk6nkXa', // this wallet is backing USDD acording here https://prnt.sc/lvIQUtCNbk2X. For that reason, it should not included as HTX. - "TDvf1dSBhR7dEskJs17HxGHheJrjXhiFyM", - "TUJGLHo3rq4EAUY1LHRhNkHPX8qmrv9WFs", // add on 08/08/2023 (we defillama) - "TRSXRWudzfzY4jH7AaMowdMNUXDkHisbcd", // add on 08/08/2023 (we defillama) - "TU1ZA8T2g8PvLK8BfM7N94xpmSSpyfxZoK", - "TFTWNgDBkQ5wQoP8RXpRznnHvAVV8x5jLu", // add on 23/02/2024 - "TK86Qm97uM848dMk8G7xNbJB7zG1uW3h1n", - "TT5iK8oqGEyRKJAnRwrLSZ4fM5y77F2LNT", - ], - }, - algorand: { - owners: ["J4AEINCSSLDA7LNBNWM4ZXFCTLTOZT5LG3F5BLMFPJYGFWVCMU37EZI2AM"], - }, - avax: { - owners: [ - "0xe195b82df6a797551eb1acd506e892531824af27", - "0xa77ff0e1c52f58363a53282624c7baa5fa91687d", //start add on 23/02/2024 - "0x18709e89bd403f470088abdacebe86cc60dda12e", - "0x8b6a3587676719a4fecbb24b503a3634c44a44d5", - ], - }, - eos: { - owners: ["vuniyuoxoeub"], - }, - ripple: { - owners: [ - "rKUDvXFJMFu65LqPTH3Yfpii4rbKT9bSQT", - "raC4udvEeeni6aLPHbz9RKjHTQiWxKPfom", - "ra4haepf6fehiCfVvB33j1D7vmv7JJD8M5", // add on 23/02/2024 - "rNPuS242i9ufMPEMusnjYPxyyu4STqSDGq", - "rPzT7GA6vWU3PvYSXBpdP5fQPnzwVLwL24", - ], - }, - arbitrum: { - owners: [ - "0xf2dbc42875e7764edbd89732a15214a9a0deb085", - "0xce7ec11a5f306c6b896526149db1a86c7d1531e2", // add on 23/02/2024 - "0x18709e89bd403f470088abdacebe86cc60dda12e", - "0x82d015d74670d8645b56c3f453398a3e799ee582", - ], - }, - optimism: { - owners: [ - "0x9ef21be1c270aa1c3c3d750f458442397fbffcb6", - "0xe0b7a39fef902c21bad124b144c62e7f85f5f5fa", // add on 23/02/2024 - "0x18709e89bd403f470088abdacebe86cc60dda12e", - "0xd3cc0c7d40366a061397274eae7c387d840e6ff8", - ], - }, - bsc: { - owners: [ - "0xdd3cb5c974601bc3974d908ea4a86020f9999e0c", // add on 23/02/2024 - "0x18709e89bd403f470088abdacebe86cc60dda12e", - "0xafdfd157d9361e621e476036fee62f688450692b", - ], - }, - starknet: { - owners: [ - "0x03fd14213a96e9d90563ebe1b224f357c6481a755ee6f046c8ce9acd9b8654a7", - ], - }, - doge: { - owners: [ - "DRRU8L7fF4k9w7SF3Z6ei8onPCsh9hjGX1", - "9ztZpRN3v9xv5JhAT7MTtmy4DfyMEAG8YU", - "DLzCvKskasu4Adj3XgbyNitKBukBSa5JPP", - ], - }, - cardano: { - owners: [ - "addr1q8wk8rw6xeqzerhahlhweuukkxme0fjsy4xqsqze3m4r8lxavwxa5djq9j80m0lwaneedvdhj7n9qf2vpqq9nrh2x07qfmr8sf", - "addr1q9n8v7e76pt4mmvxqprc4k7nk5nqz4x2flplfr0azq9dtnz5wckfyaph0sj98f7nc5g98q9dv2v8ece9jm8w30upgfvq4zhpjy", - "DdzFFzCqrhsuQV5ohP1EBh9d4UjmmWDb2Vui2s2SACSBDeEW74kHhp3zj9hvLFDb9mK7hRr7fbctu1UYatPaF1omXiXPwf12bn7DQvbT" - ], - }, - core: { - owners: [ - "0x18709e89bd403f470088abdacebe86cc60dda12e", - "0x6635dbb3d78671be495a6d876940752a0c4e7743", - "0x27387a41fd7c6cf86b4c96a54a4a1d8bd0b926bf" - ], - }, - sui: { - owners: [ - "0d9948b61478ec1609b4c00cd0162131109e7fd60d7d2ebb539cb414f3ec7b9d", - "0x1f7b27844f2c4a0262b2c481f7ab956d10ace524c5a7b06c3742cfb8701db714", - ], - }, - ton: { - owners: [ - "EQBf6sUcCkUrRCMzmpOW22P3BOD4XgL_solOp3M4n6Vb8_1c", - "EQC2bRkktc-ZATV_VK8B1dmN3KXZRKiblMiyvFW_aUzNTwxS", - "EQA9Q1P4Wtm5orpfWgV_DTbqoeRUx7h8LCqdx38x5RwIkuS3", - "EQCFr3jo0DXpIBF82mVGFc3zcdRkSAtinhENPFMQ2FqzYqDB" - ], - }, -}; - -module.exports = mergeExports([ - cexExports(config), - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddresses: ['0x08deb6278d671e2a1adc7b00839b402b9cf3375d', '0x39fd78fe6a72faae2ab5f1f053c253b2e3685c15'], size: 200, proxy: true, sleepTime: 20_000 }) } }, -]); - -module.exports.methodology = "We added the wallets from here https://github.com/huobiapi/Tool-Node.js-VerifyAddress/blob/main/snapshot/huobi_por_20230701.csv . We are not tracking 3 wallets, 2 on Heco Chain, 1 on BTTC chain. We also count stUSDT."; -module.exports.hallmarks = [[1723066836, "remove usdd collateral"]]; diff --git a/projects/hurricaneswap.js b/projects/hurricaneswap.js deleted file mode 100644 index 8765c90ba0a..00000000000 --- a/projects/hurricaneswap.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const { staking, stakings } = require("./helper/staking"); -const { getUniTVL } = require('./helper/unknownTokens') - -const masterChefV1 = "0x9984d70D5Ab32E8e552974A5A24661BFEfE81DbE"; -const masterChefV2 = "0x1c9F36FE608190D1fe99e001b596c31871696b24"; -const AVAX = ADDRESSES.avax.WAVAX; - -const stakingConttract_xhctBar = "0x75B797a0ed87F77bB546F3A3556F18fC35a01140"; -const stakingConttract_shctBar = "0xE4aE2E8648B8E84c4A487a559b04e884B822a350"; -const HCT = "0x45C13620B55C35A5f539d26E88247011Eb10fDbd"; - -const chainTvl = getUniTVL({ - factory: '0x7009b3619d5ee60d0665BA27Cf85eDF95fd8Ad01', - useDefaultCoreAssets: true, -}) - -module.exports = { - misrepresentedTokens: true, - avax: { - tvl: sdk.util.sumChainTvls([chainTvl, staking(masterChefV2, AVAX)]), - staking: stakings( - [ - stakingConttract_xhctBar, - stakingConttract_shctBar, - masterChefV2, - masterChefV1, - ], - HCT, - "avax" - ), - }, - methodology: - 'We count TVL from the "0x7009b3619d5ee60d0665BA27Cf85eDF95fd8Ad01" factory address, which includes all pairs data of HurricaneSwap. The staking portion includes the liquidity in the HCTBar (xHCT), StakingReward (sHCT) contract and the WAVAX deposited in pool contract.', -}; diff --git a/projects/hx-finance/index.js b/projects/hx-finance/index.js deleted file mode 100644 index 69fa741dd01..00000000000 --- a/projects/hx-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - hyperliquid: { - factory: "0x41ba59415eC75AC4242dd157F2a7A282F1e75652", - fromBlock: 8953647, - isAlgebra: true, - }, -}); \ No newline at end of file diff --git a/projects/hxro-network/index.js b/projects/hxro-network/index.js deleted file mode 100644 index 526c0c74341..00000000000 --- a/projects/hxro-network/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') -const sdk = require('@defillama/sdk') - -async function staking() { - const esHRXOKey = 'solana:CPwspzHc4bKtBQGNRhpRG9v3qRiPLWP28GrfZepwmBSz' - const balances = await sumTokens2({ - tokenAccounts: [ - '6kU9EA8ApkD3eCYjoR3e8MkJzvjcVb8nTFUQhGKMjA7r', - 'DB8v2eyqQXueoSLYNFoxoBv1DFr7XuhMLtwPUEcrM5KP', - ] - }) - - if (balances[esHRXOKey]) { - sdk.util.sumSingleBalance(balances, 'HxhWkVpk5NS4Ltg5nij2G671CKXFRKPK8vy271Ub4uEK', balances[esHRXOKey], 'solana') - delete balances[esHRXOKey] - } - return balances -} - -module.exports = { - solana: { - tvl: () => 0, staking, - } -} \ No newline at end of file diff --git a/projects/hybra-v2/index.js b/projects/hybra-v2/index.js deleted file mode 100644 index c9faf14e8de..00000000000 --- a/projects/hybra-v2/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'hyperliquid': '0x9c7397c9C5ecC400992843408D3A283fE9108009' -}, { hasStablePools: true, }) - diff --git a/projects/hybra-v3/index.js b/projects/hybra-v3/index.js deleted file mode 100644 index a8a551a721e..00000000000 --- a/projects/hybra-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - hyperliquid: { factory: '0x2dC0Ec0F0db8bAF250eCccF268D7dFbF59346E5E', fromBlock: 6523521, }, -}) \ No newline at end of file diff --git a/projects/hydradex-v3/api.js b/projects/hydradex-v3/api.js deleted file mode 100644 index 95326af5291..00000000000 --- a/projects/hydradex-v3/api.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./index') \ No newline at end of file diff --git a/projects/hydradex-v3/index.js b/projects/hydradex-v3/index.js deleted file mode 100644 index 5ffa05b9b4b..00000000000 --- a/projects/hydradex-v3/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { uniV3GraphExport } = require('../helper/uniswapV3') - -module.exports = { - misrepresentedTokens: true, - methodology: "We count liquidity on the dex, pulling data from subgraph", - hydra: { - tvl: () => ({}), - }, - hydragon: { - tvl: uniV3GraphExport({ graphURL: "https://subgraph.hydrachain.org/subgraphs/name/v3-subgraph", name: 'hydradex-v3', }) - }, -}; diff --git a/projects/hydradex.js b/projects/hydradex.js deleted file mode 100644 index 7c0a338620d..00000000000 --- a/projects/hydradex.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - deadFrom: '2025-07-01', - misrepresentedTokens: true, - methodology: "We count liquidity on the dex, pulling data from subgraph", - hydra: { - tvl: () => ({}), - }, -}; \ No newline at end of file diff --git a/projects/hydradex/api.js b/projects/hydradex/api.js deleted file mode 100644 index 90bb6f3945c..00000000000 --- a/projects/hydradex/api.js +++ /dev/null @@ -1,4 +0,0 @@ - -const hydraExport = require('../hydradex.js') - -module.exports = hydraExport diff --git a/projects/hydradex/getHydraV3SubgraphTvl.js b/projects/hydradex/getHydraV3SubgraphTvl.js deleted file mode 100644 index 54013a2fa5c..00000000000 --- a/projects/hydradex/getHydraV3SubgraphTvl.js +++ /dev/null @@ -1,23 +0,0 @@ -const { graphQuery, } = require("../helper/http"); - -const HOURS_12 = 12 * 3600 - -async function getBlock(endpoint, timestamp) { - if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp - const params = { - timestamp_from: timestamp - HOURS_12 * 2, - timestamp_to: timestamp + HOURS_12 * 2, - } - const query = `query ($timestamp_to: Int, $timestamp_from: Int){ - blocks (orderBy: "timestamp" first:1 orderDirection: "desc" where: { timestamp_lte: $timestamp_to timestamp_gte: $timestamp_from}) { - timestamp - number - } - }` - const { blocks } = await graphQuery(endpoint, query, params) - return blocks[0].number -} - -module.exports = { - getBlock, -}; diff --git a/projects/hydradex/index.js b/projects/hydradex/index.js deleted file mode 100644 index 0a4954dcfd0..00000000000 --- a/projects/hydradex/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - hydra: { factory: '0xd555277891c118109b8bd066249D541FF4f993A4', fromBlock: 363060, }, -}) \ No newline at end of file diff --git a/projects/hydradx/api.js b/projects/hydradx/api.js deleted file mode 100644 index aa8b6aa9ae9..00000000000 --- a/projects/hydradx/api.js +++ /dev/null @@ -1,182 +0,0 @@ -const sdk = require('@defillama/sdk') -const { ApiPromise, WsProvider } = require("@polkadot/api") - -// Omnipool constants -const omnipoolAccountId = "7L53bUTBbfuj14UpdCNPwmgzzHSsrsTWBHX5pys32mVWM3C1" -const stablepoolAccountId = "7JP6TvcH5x31TsbC6qVJHEhsW7UNmpREMZuLBpK2bG1goJRS" -const stablepoolAccountId2 = "7MaKPwwnqN4cqg35PbxsGXUo1dfvjXQ3XfBjWF9UVvKMjJj8" -const stablepoolAccountId3 = "7LVGEVLFXpsCCtnsvhzkSMQARU7gRVCtwMckG7u7d3V6FVvG" -const stablepoolAccountId4 = "167UdiHenqFRAFeb8GxRYGT89BpKi2VPDnUjDFT8H8efqueB" - -const cgMapping = { - DAI: 'dai', - INTR: 'interlay', - GLMR: 'moonbeam', - vDOT: 'voucher-dot', - ZTG: 'zeitgeist', - CFG: 'centrifuge', - BNC: 'bifrost-native-coin', - WETH: 'ethereum', - DOT: 'polkadot', - APE: 'apecoin', - USDC: 'usd-coin', - USDT: 'tether', - ASTR: 'astar', - WBTC: 'wrapped-bitcoin', - iBTC: 'interbtc', - HDX: 'hydradx', - tBTC: 'tbtc', - AAVE: 'aave', - PHA: 'pha', - vASTR: 'bifrost-voucher-astr', - KSM: 'kusama', - KILT: 'kilt-protocol', - SKY: 'sky', - LINK: 'chainlink', - SOL: 'solana', - CRU: 'crust-network', - RING: 'darwinia-network-native-token', - EWT: 'energy-web-token', - UNQ: 'unique-network', - MYTH: 'mythos', - WUD: 'gawun-wud', - // GDOT: 'gigadot' // skip for doublecount -}; - -const RAW_STATIC_XYK_POOL_DATA = [ - [[ "15L6BQ1sMd9pESapK13dHaXBPPtBYnDnKTVhb2gBeGrrJNBx" ], [ 30, 5 ]], // DOT/MYTH - [[ "15BuQdFibo2wZmwksPWCJ3owmXCduSU56gaXzVKDc1pcCcsd" ], [ 1000085, 5 ]], // WUD/DOT - [[ "15nzS2D2wJdh52tqZdUJVMeDQqQe7wJfo5NZKL7pUxhwYgwq" ], [ 5, 252525 ]], // DOT/EWT - [[ "15sjxrJkJRCXs64J7wvxNE3vjJ8CGjDPggqeNwEyijvydwri" ], [ 5, 25 ]], // DOT/UNQ - [[ "12NzWeY2eDLRbdmjUunmLVE3TBnkgFGy3SCFH2hmDbhLs8qB" ], [ 1000082, 5 ]] // WIFD/DOT -]; - -async function omnipoolTvl(api) { - const provider = new WsProvider("wss://hydradx-rpc.dwellir.com"); - const polkadotApi = await ApiPromise.create({ provider }); - await polkadotApi.isReady; - - const processedAssetMetadata = []; - // Use assets.entries() to fetch all registered assets robustly - const allAssets = await polkadotApi.query.assetRegistry.assets.entries() - - for (const [key, metaOpt] of allAssets) { - if (metaOpt.isSome) { - const meta = metaOpt.unwrap() - // Extract assetId from the storage key - // The exact method might vary slightly based on key structure, .args[0] is common - const assetIdFromKey = key.args[0].toNumber() - - if (assetIdFromKey !== 0) { // Skip asset 0 (HDX) as it's handled separately - processedAssetMetadata.push({ - assetId: assetIdFromKey, - symbol: meta.symbol.toHuman(), - decimals: +meta.decimals, - }) - } - } - } - - // Handle HDX (asset ID 0) separately - const hdxBalance = await polkadotApi.query.system.account(omnipoolAccountId) - add('hydradx', hdxBalance.data.free / 1e12) // Assuming HDX decimals is 12 - - for (const { decimals, assetId, symbol } of processedAssetMetadata) { - const cgId = cgMapping[symbol] - if (cgId) { - if (symbol === 'GDOT') { - const issuance = await polkadotApi.query.tokens.totalIssuance(assetId) - add(cgId, Number(issuance) / (10 ** decimals)) - } else { - const bals = await Promise.all([omnipoolAccountId, stablepoolAccountId, stablepoolAccountId2, stablepoolAccountId3].map(accId => - polkadotApi.query.tokens.accounts(accId, assetId) - )) - const total = bals.reduce((acc, bal) => acc + Number(bal.free), 0) / (10 ** decimals) - add(cgId, total) - } - } - } - - // Process balances for the gdot stablepool - const gdotStablePoolAssets = [ - { id: 15, cgKey: 'vDOT' }, // Asset ID 15 is vDOT - { id: 1001, cgKey: 'DOT' }, // Asset ID 1001 is aDOT, treat as DOT for Coingecko - ]; - - for (const asset of gdotStablePoolAssets) { - const balanceData = await polkadotApi.call.currenciesApi.account(asset.id, stablepoolAccountId4); - const freeBalance = balanceData.free.toBigInt(); - - if (freeBalance > 0n) { - const cgId = cgMapping[asset.cgKey]; - const meta = processedAssetMetadata.find(m => m.assetId === asset.id); - - if (cgId && meta && typeof meta.decimals === 'number' && !isNaN(meta.decimals)) { - const readableBalance = Number(freeBalance) / (10 ** meta.decimals); - add(cgId, readableBalance); - } else { - console.warn(`HydraDX: Could not find Coingecko ID or metadata for asset ${asset.id} (${asset.cgKey}) in new stablepool.`); - } - } - } - - // Add XYK Pool TVL using the refined static list - const staticXykPools = RAW_STATIC_XYK_POOL_DATA.map(entry => { - // Basic validation for the entry structure - if (!entry || !entry[0] || !entry[0][0] || !entry[1] || typeof entry[1][0] === 'undefined' || typeof entry[1][1] === 'undefined') { - return null; - } - return { - poolAccountId: entry[0][0], - assetIdA: entry[1][0], - assetIdB: entry[1][1], - }; - }).filter(p => p !== null); - - try { - for (const { poolAccountId, assetIdA, assetIdB } of staticXykPools) { - for (const assetId of [assetIdA, assetIdB]) { - if (typeof assetId !== 'number') { - continue; - } - const tokenInfo = await polkadotApi.query.assetRegistry.assets(assetId); - if (!tokenInfo.isSome) { - continue; - } - const decimals = +tokenInfo.unwrap().decimals; - const rawSymbol = tokenInfo.unwrap().symbol; - const symbol = rawSymbol.isSome ? rawSymbol.unwrap().toUtf8() : null; - - if (!symbol) { - continue; - } - - const coingeckoId = cgMapping[symbol]; - if (!coingeckoId) { - continue; - } - - const balanceEntry = await polkadotApi.query.tokens.accounts(poolAccountId, assetId); - const balance = balanceEntry.free.toBigInt(); - - if (balance > 0n) { - const readableBalance = Number(balance) / (10 ** decimals); - add(coingeckoId, readableBalance); - } - } - } - } catch (error) { - console.error("Error fetching or processing XYK pool TVL from static list:", error); - } - - await polkadotApi.disconnect(); - return api.getBalances(); - - function add(token, bal) { - api.add(token, bal, { skipChain: true }); - } -} - -module.exports = { - hydradx: { tvl: omnipoolTvl}, -} \ No newline at end of file diff --git a/projects/hydradx/index.js b/projects/hydradx/index.js deleted file mode 100644 index 19c6b1e1546..00000000000 --- a/projects/hydradx/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("hydradx", ['hydradx']), -} \ No newline at end of file diff --git a/projects/hydration-lending/index.js b/projects/hydration-lending/index.js deleted file mode 100644 index a419258e76a..00000000000 --- a/projects/hydration-lending/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveV2Export, methodology, } = require('../helper/aave') - -const abis = { - getReserveData: "function getReserveData(address asset) view returns (((uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))", -} - -module.exports = { - methodology, - hydradx: aaveV2Export('0x1b02E051683b5cfaC5929C25E84adb26ECf87B38', { abis }) -} \ No newline at end of file diff --git a/projects/hydrex-univ4/index.js b/projects/hydrex-univ4/index.js deleted file mode 100644 index a6fc90ae0d4..00000000000 --- a/projects/hydrex-univ4/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { get } = require('../helper/http') - -const STRATEGIES_URL = 'https://raw.githubusercontent.com/alma-labs/hydrex-lists/main/strategies/8453.json' - -async function getHydrexUniv4Pools() { - const data = await get(STRATEGIES_URL) - return data - .filter(strategy => strategy.liquidityType === 'uniV4') - .map(strategy => strategy.address) -} - -async function tvlForChain(api) { - const HYDREX_POOLS = await getHydrexUniv4Pools() - if (!HYDREX_POOLS.length) return {} - - const token0s = await api.multiCall({ abi: 'address:token0', calls: HYDREX_POOLS }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: HYDREX_POOLS }) - const totalAmounts = await api.multiCall({ - abi: 'function getTotalAmounts() view returns (uint256 total0, uint256 total1, uint256 totalFee0, uint256 totalFee1)', - calls: HYDREX_POOLS, - }) - - totalAmounts.forEach((amounts, i) => { - api.add(token0s[i], amounts.total0) - api.add(token1s[i], amounts.total1) - }) - - return api.getBalances() -} - -module.exports = { - methodology: 'TVL counts the tokens locked in ALM vaults that Hydrex manages on top of Uniswap V4', - doublecounted: true, - start: '2025-06-17', - base: { tvl: (api) => tvlForChain(api) }, -} \ No newline at end of file diff --git a/projects/hydrex/index.js b/projects/hydrex/index.js deleted file mode 100644 index 8ac2bba089b..00000000000 --- a/projects/hydrex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -const HYDREX_ALGEBRA_FACTORY = "0x36077D39cdC65E1e3FB65810430E5b2c4D5fA29E" - -module.exports = uniV3Export({ - base: { - factory: HYDREX_ALGEBRA_FACTORY, - fromBlock: 31648963, - isAlgebra: true, - blacklistedTokens: ['0x8d9a525463e6891bca541828ddd5c9551d8d6697', '0x995bb7f2fc1c628f029baf04204b7b6ab6667271', '0x893ade07ce949d9686267898a31fb9660c264276'] - } -}); \ No newline at end of file diff --git a/projects/hydro-farm/index.js b/projects/hydro-farm/index.js deleted file mode 100644 index 8260dc4d3e9..00000000000 --- a/projects/hydro-farm/index.js +++ /dev/null @@ -1,94 +0,0 @@ -const { queryContract, endPoints, } = require("../helper/chain/cosmos"); -const { get } = require("../helper/http"); -const { injective: { mitoVaultQuery } } = require("../helper/chain/rpcProxy") - -// Contract -const lrpManager = "inj1rv7ztpa8nkywc89a05eys52fzgezlnzjq3grkz" -const vaultMaster = "inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3" - -async function getAllRegisteredVaults(api) { - let startAfterSubaccount - let results = [] - let loop = true - - while (loop) { - const { registered_vaults } = await queryContract({ - chain: api.chain, - contract: vaultMaster, - data: { - get_registered_vaults: { - start_after_subaccount: startAfterSubaccount, - limit: 30, - } - } - }) - - if (registered_vaults.length === 0) { - loop = false - return results - } - - results.push(...registered_vaults) - const lastOne = results[results.length - 1] - startAfterSubaccount = lastOne.vault.master_subaccount_id - } -} - -async function getMitoLpPrice(api, lrp, vaults) { - const { vault_subaccount_id } = await queryContract({ chain: api.chain, contract: lrp.yield_proxy_address, data: { config: {} } }) - const { vault: { address } } = vaults.find((vault) => vault.vault.master_subaccount_id === vault_subaccount_id) - const res = await mitoVaultQuery({ address }) - return res.lpTokenPrice -} - -async function tvl(api) { - const { lrps } = await queryContract({ chain: api.chain, contract: lrpManager, data: { lrps: { limit: 100 } } }) - const vaults = await getAllRegisteredVaults(api) - - for (const lrp of lrps) { - const { total_supply: lrpTotalSupply } = await queryContract({ chain: api.chain, contract: lrp.lrp_address, data: { token_info: {} } }) - if (+lrpTotalSupply === 0) continue; - - const { contract_info } = await get(`${endPoints[api.chain]}/cosmwasm/wasm/v1/contract/${lrp.yield_proxy_address}`, undefined, api.chain) - const isDojo = contract_info.label.includes("dojo") - const isMito = contract_info.label.includes("mito") - - if (isDojo) { - const asset_infos = lrp.bond_tokens.map((i) => { - if (i.native) return { native_token: { denom: i.native } } - console.error({ lrp, i, contract_info, lrpTotalSupply }) - throw new Error("Unknown asset_infos") - }) - - // get LP contract address - const { contract_addr } = await queryContract({ - chain: api.chain, contract: 'inj1pc2vxcmnyzawnwkf03n2ggvt997avtuwagqngk', data: { - pair: { asset_infos } - } - }) - const { assets, total_share } = await queryContract({ chain: api.chain, contract: contract_addr, data: { pool: {} } }) - const ratio = lrpTotalSupply / total_share - assets.forEach((asset) => { - api.add(getToken(asset), asset.amount * ratio) - }) - - } else if (isMito) { - const lpPrice = await getMitoLpPrice(api, lrp, vaults) - api.addUSDValue(lpPrice * lrpTotalSupply) - } else { - console.error("Unknown lrp type", { lrp, contract_info }) - } - } -} - -module.exports = { - methodology: "Liquidity on hydro-protocol", - misrepresentedTokens: true, - injective: { - tvl, - }, -}; - -function getToken(asset) { - return asset.info.native_token?.denom ?? asset.info.token?.contract_addr -} \ No newline at end of file diff --git a/projects/hydro-lending/index.js b/projects/hydro-lending/index.js deleted file mode 100644 index 21487bd047b..00000000000 --- a/projects/hydro-lending/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const { queryContract, } = require("../helper/chain/cosmos"); -const ADDRESSES = require("../helper/coreAssets.json"); -const BigNumber = require("bignumber.js"); - -// Contract -const loan = "inj1nuw6ala2ra7t457tg4g04k67r94v55mdyq9klr"; - -const inj = "inj"; -const hinj = "inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc" -const hdro = "factory/inj1etz0laas6h7vemg3qtd67jpr6lh8v7xz7gfzqw/hdro" -const usdt = "peggy0xdAC17F958D2ee523a2206206994597C13D831ec7"; - -const USDT_DECIMALS = 6; - -async function getLoanTvl(api) { - const assetStateResponse = await queryContract({ chain: api.chain, contract: loan, data: { asset_states: { limit: 100 } } }); - - let tvl = new BigNumber(0); - for (const assetState of assetStateResponse.asset_states) { - const denom = assetState.denom; - const [ - priceResponse, - assetConfigResponse, - ] = await Promise.all([ - queryContract({ chain: api.chain, contract: loan, data: { usd_price: { denom } } }), - queryContract({ chain: api.chain, contract: loan, data: { asset_config: { denom } } }), - ]); - - const decimals = new BigNumber(assetConfigResponse.decimals); - const price = new BigNumber(priceResponse.price); - const amount = new BigNumber(assetState.collateral.amount); - const amountDownScaled = amount.div(new BigNumber(10).pow(decimals)); - const usdValue = amountDownScaled.times(price); - tvl = tvl.plus(usdValue); - } - return tvl; -} - -function denomToAddress(denom) { - if ("native" in denom) { - return denom.native; - } - - return denom.cw20; -} - -async function borrowed(api) { - const assetStateResponse = await queryContract({ chain: api.chain, contract: loan, data: { asset_states: { limit: 100 } } }); - - for (const assetState of assetStateResponse.asset_states) { - api.add(denomToAddress(assetState.denom), assetState.debt.amount); - } -} - -async function tvl(api) { - const loanTvl = await getLoanTvl(api); - const usdtTvl = loanTvl.times(new BigNumber(10).pow(USDT_DECIMALS)); - api.add( - ADDRESSES.injective.USDT, BigInt(usdtTvl.toFixed(0)) - ); -} - -module.exports = { - methodology: "Liquidity on hydro-protocol", - injective: { - tvl, - borrowed, - }, -}; \ No newline at end of file diff --git a/projects/hydro-protocol/index.js b/projects/hydro-protocol/index.js deleted file mode 100644 index f1ef47df096..00000000000 --- a/projects/hydro-protocol/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { queryContract, } = require("../helper/chain/cosmos"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const hinj = "inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc" -const autoCompound = "inj1mjcg8a73904rj4w7t5qkgn0apua98n059nufma" -const xhdro = "inj1qc2tw477wwuvkad0h3g78xqgwx4k8knat6vz0h" - -async function staking(api) { - const { total_supply } = await queryContract({ chain: api.chain, contract: xhdro, data: { token_info: {} } }) - - return { - 'hydro-protocol-2': total_supply / 1e6 - } -} - -async function tvl(api) { - const { total_supply } = await queryContract({ chain: api.chain, contract: hinj, data: { token_info: {} } }) - const { total_bonded } = await queryContract({ chain: api.chain, contract: autoCompound, data: { state: {} } }) - - api.add( - ADDRESSES.injective.INJ, +total_supply + +total_bonded - ) -} - -module.exports = { - methodology: "Liquidity on hydro-protocol", - injective: { - tvl, - staking, - }, -}; \ No newline at end of file diff --git a/projects/hydrometer/index.js b/projects/hydrometer/index.js deleted file mode 100644 index 2aa19ae7f2b..00000000000 --- a/projects/hydrometer/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'base': '0xF60caCf0A3daa5B6a79ca6594BEF38F85391AE0A' -}, { - deadFrom: 1732734407, - abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, hasStablePools: true, - hallmarks: [ - [1732734407,"Rug Pull"] - ], -}) \ No newline at end of file diff --git a/projects/hydt/index.js b/projects/hydt/index.js deleted file mode 100644 index 977fc48e64a..00000000000 --- a/projects/hydt/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { sumUnknownTokens, nullAddress, } = require('../helper/unknownTokens'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const chain = "bsc"; - -const earn = "0x8e48d5b2Ac80d9861d07127F06BbF02F73520Ced"; -const farm = "0x4590BaD61aE62ACFF33032e3Bf64b52b7264A779"; -const hydt = "0x9810512be701801954449408966c630595d0cd51"; -const reserve = "0xc5161aE3437C08036B98bDb58cfE6bBfF876c177"; -const shydt = "0xab4f1Bb558E564ae294D45a025111277c36C89c0"; - -const bnb = nullAddress; -const controlPair = "0xBB8ae522F812E9E65239A0e5db87a9D738ce957a"; - -async function tvl(_, _b, _cb) { - return sumTokens2({ chain, owner: reserve, tokens: [bnb] }); -} - -async function staking(api) { - // earn - const shydtBal = await api.call({ abi: 'erc20:balanceOf', target: shydt, params: earn, }); - api.add(hydt, shydtBal); - - // farm - const pools = await api.fetchList({ - lengthAbi: 'uint256:poolLength', - itemAbi: 'function poolInfo(uint256) external view returns (address lpToken, uint256 allocPoint, uint256, uint256)', - target: farm, - }); - const lpTokens = []; - pools.forEach(i => { if (i.allocPoint > 0) lpTokens.push(i.lpToken) }); - const calls = lpTokens.map(i => ({ - target: i, - params: farm - })); - const lpBals = await api.multiCall({ abi: 'erc20:balanceOf', calls, }); - lpTokens.forEach((i, index) => api.add(i, lpBals[index])); - - return sumUnknownTokens({ api, lps: [controlPair], resolveLP: true, useDefaultCoreAssets: true, }); -} - -module.exports = { - misrepresentedTokens: true, - methodology: "Retrieving the reserve BNB balance for TVL. Retrieving the staked amounts for HYDT from the earn (HYDT staking) contract and the LP Tokens from the farm contract for staking.", - start: '2023-09-03', - bsc: { - tvl, - staking, - }, -}; diff --git a/projects/hyfi.js b/projects/hyfi.js deleted file mode 100644 index f2ce900d702..00000000000 --- a/projects/hyfi.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumUnknownTokens } = require('./helper/unknownTokens') - -module.exports = { - bsc: { - tvl - } -} - -const poolInfoABI = "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare)" - -async function tvl(api) { - const masterchef = '0x4b7a63837c8cf56e4dcf5140c12388c24030d7df' - const infos = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: poolInfoABI, target:masterchef }) - const tokens = infos.map(i => i.lpToken) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokens.map(i => ({ target: i, params: masterchef})) }) - const symbols = await api.multiCall({ abi: 'string:symbol', calls: tokens}) - const fTokens = [] - const fBals = [] - symbols.forEach((v, i) => { - if (v.startsWith('f')) { - fTokens.push(tokens[i]) - fBals.push(bals[i]) - } else { - api.add(tokens[i], bals[i]) - } - }) - const fuTokens = await api.multiCall({ abi: 'address:token', calls: fTokens}) - const fuBals = await api.multiCall({ abi: 'uint256:balance', calls: fTokens}) - api.addTokens(fuTokens, fuBals) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true, }) -} \ No newline at end of file diff --git a/projects/hylo/index.js b/projects/hylo/index.js deleted file mode 100644 index ff6850de361..00000000000 --- a/projects/hylo/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); - -async function tvl() { - return sumTokens2({ - tokenAccounts: [ - // Hylo Reserves jitoSOL token account - "2Y3TLkdGoJwbdizxqrZmQwNLYJyGKTgzC4tbetbkvQ43", - ] - }) -} - -module.exports = { - timetravel: false, - doublecounted: true, - solana: { tvl }, - methodology: 'TVL is calculated by summing all jitoSOL assets locked in Hylo protocol.', -}; diff --git a/projects/hyloSOL/index.js b/projects/hyloSOL/index.js deleted file mode 100644 index 80f72758bda..00000000000 --- a/projects/hyloSOL/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('hy1oDeVCVRDGkxS26qLVDvRhDpZGfWJ6w9AMvwMegwL', api) - await getSolBalanceFromStakePool('hy1o2kiYu9rUDFqHJSqwJH4j5ZkM23tBJsaEmqkP9sT', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/hyperbeat-lst/index.js b/projects/hyperbeat-lst/index.js deleted file mode 100644 index 516b9c46a2c..00000000000 --- a/projects/hyperbeat-lst/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const axios = require('axios') - -const API_URL = 'https://api.hyperliquid.xyz/info' -const delegator = '0xCeaD893b162D38e714D82d06a7fe0b0dc3c38E0b' -const withdrawManager = '0x9d0B0877b9f2204CF414Ca7862E4f03506822538' -const WHYPE = '0x5555555555555555555555555555555555555555' - -const tvl = async (api) => { - const withdrawable = await api.call({ target: withdrawManager, abi: 'uint256:getLiquidHypeAmount' }) - const { data: delegatedData } = await axios.post(API_URL, { type: "delegatorSummary", user: delegator }) - const { delegated, totalPendingWithdrawal } = delegatedData - const delegatedBalance = ((+delegated + +totalPendingWithdrawal) * 1e18) - api.add(WHYPE, +withdrawable + delegatedBalance) -} - -module.exports = { - hyperliquid: { tvl } -} \ No newline at end of file diff --git a/projects/hyperbeat/index.js b/projects/hyperbeat/index.js deleted file mode 100644 index f3977e868b7..00000000000 --- a/projects/hyperbeat/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626'); - -const liquidHypeStrategist = "0x83a80e5b64086197c01cbb123df2aea79a149c1d" -const oracle = "0x1ceab703956e24b18a0af6b272e0bf3f499aca0f" -const beHype = "0xd8FC8F0b03eBA61F64D08B0bef69d80916E5DdA9" - -const config = { - morphoVaults: { - '0x5eEC795d919FA97688Fb9844eeB0072E6B846F9d': '0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34', - '0x53A333e51E96FE288bC9aDd7cdC4B1EAD2CD2FfA': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', - '0x0571362ba5EA9784a97605f57483f865A37dBEAA': '0xBe6727B535545C67d5cAa73dEa54865B92CF7907', - '0xd19e3d00f8547f7d108abfd4bbb015486437b487': '0x5555555555555555555555555555555555555555', - '0x4346C98E690c17eFbB999aE8e1dA96B089bE320b': '0x9ab96A4668456896d45c301Bc3A15Cee76AA7B8D', - '0xe5ADd96840F0B908ddeB3Bd144C0283Ac5ca7cA0': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', - '0xD3A9Cb7312B9c29113290758f5ADFe12304cd16A': '0x0aD339d66BF4AeD5ce31c64Bc37B3244b6394A77', - '0x3Bcc0a5a66bB5BdCEEf5dd8a659a4eC75F3834d8': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', - '0x51F64488d03D8B210294dA2BF70D5db0Bc621B0c': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', // Re7 USDT0 - '0x182b318A8F1c7C92a7884e469442a610B0e69ed2': '0x5555555555555555555555555555555555555555', // Re7 HYPE - '0x92B518e1cD76dD70D3E20624AEdd7D107F332Cff': '0x5555555555555555555555555555555555555555', // Hyperithm HYPE - '0x264a06Fd7A7C9E0Bfe75163b475E2A3cc1856578': '0x5555555555555555555555555555555555555555', // Gauntlet HYPE - }, - standaloneVaults: { - '0x5e105266db42f78fa814322bce7f388b4c2e61eb': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', // USDT0 - '0x6EB6724D8D3D4FF9E24d872E8c38403169dC05f8': '0xf4D9235269a96aaDaFc9aDAe454a0618eBE37949', // xAUT - '0x81e064d0eB539de7c3170EDF38C1A42CBd752A76': '0x5555555555555555555555555555555555555555', // lstHYPE - '0x441794D6a8F9A3739F5D4E98a728937b33489D29': '0x5555555555555555555555555555555555555555', // liquidHYPE - '0xD66d69c288d9a6FD735d7bE8b2e389970fC4fD42': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', // wVLP - '0x949a7250Bb55Eb79BC6bCC97fCd1C473DB3e6F29': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', // dnHYPE - '0x8858A307a85982c2B3CB2AcE1720237f2f09c39B': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', // dnPUMP - // '0xd8FC8F0b03eBA61F64D08B0bef69d80916E5DdA9': '0x5555555555555555555555555555555555555555', // beHYPE → lst adapter - '0x057ced81348D57Aad579A672d521d7b4396E8a61': '0xb88339CB7199b77E23DB6E890353E22632Ba630f', //hbUSDC - } -} - -const sixDecimalTokens = [ - '0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb', // USDT0 - '0x9ab96a4668456896d45c301bc3a15cee76aa7b8d', // rUSDC - '0xf4d9235269a96aadafc9adae454a0618ebe37949', // xAUT - '0xb88339cb7199b77e23db6e890353e22632ba630f', // USDC -] - -const unwrapBeHype = async (api, underlying, supply) => { - const [lastAnswer, beHypeBalance] = await Promise.all([ - api.call({ target: oracle, abi: 'uint256:lastAnswer' }), - api.call({ target: beHype, params: [liquidHypeStrategist], abi: 'erc20:balanceOf' }) - ]) - - - const beHypeToHypeShare = beHypeBalance * lastAnswer / 1e8 - api.add(underlying, supply-beHypeToHypeShare) // subtraction of beHype’s share present in the vault - api.add(beHype, beHypeBalance) -} - -const tvl = async (api) => { - const { morphoVaults = {}, standaloneVaults = {} } = config - const vaultToUnderlyings = { ...morphoVaults, ...standaloneVaults } - const vaults = Object.keys(vaultToUnderlyings) - const supplies = await api.multiCall({ calls: vaults, abi: 'erc20:totalSupply' }) - - for (const [index, vault] of vaults.entries()) { - const underlying = vaultToUnderlyings[vault].toLowerCase() - const supply = supplies[index] - - if (vault == "0x441794D6a8F9A3739F5D4E98a728937b33489D29") { - await unwrapBeHype(api, underlying, supply); - continue - } - - const scaled = sixDecimalTokens.includes(underlying) ? supply / 1e18 * 1e6 : supply - api.add(underlying, scaled) - } - - return sumERC4626VaultsExport({ vaults: ['0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB', '0xc061d38903b99aC12713B550C2CB44B221674F94'], isOG4626: true })(api) -} - -module.exports = { - doublecounted: true, - methodology: 'Measures TVL by calculating all tokens held by each vault.', - start: 1738368000, - hyperliquid: { tvl } -} \ No newline at end of file diff --git a/projects/hyperbrick/index.js b/projects/hyperbrick/index.js deleted file mode 100644 index cafd22120b2..00000000000 --- a/projects/hyperbrick/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - hyperliquid: '0x4A1EFb00B4Ad1751FC870C6125d917C3f1586600' -}) \ No newline at end of file diff --git a/projects/hypercat/index.js b/projects/hypercat/index.js deleted file mode 100644 index 882f3fd0f43..00000000000 --- a/projects/hypercat/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - hyperliquid: { - factory: '0x1d9DcF8238daf2E078FF639a5Ded6b518BF3E585', - fromBlock: 4548782, - isAlgebra: true, - }, -}) diff --git a/projects/hyperdrive-hl/index.js b/projects/hyperdrive-hl/index.js deleted file mode 100644 index 27d94880d4c..00000000000 --- a/projects/hyperdrive-hl/index.js +++ /dev/null @@ -1,106 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const ethers = require("ethers"); - -const MARKET_LENS = "0x7fB0d63E84D847569ca75A6cdbA283bA1401F9f6"; -const ADDRESS_REGISTRY = "0x86ccFbEc579D491e9b37354187dD48a1a9C7c1E7"; - -const ABI = { - AddressRegistry: { - getAddresses: - "function getAddresses(bytes32[] keys) view returns (address[])", - }, - MarketLens: { - getMarketQuery: - "function getMarketQuery(uint256 marketId) view returns (tuple(address marketAsset, string marketAssetSymbol, uint8 marketAssetDecimals, uint256 maxSupply, uint256 totalShares, uint256 totalAssets, uint256 exchangeRate, uint256 totalReserveAssets, uint256 totalLiabilities, uint256 utilization, uint256 borrowRate, uint256 supplyRate))", - getCollateralAssetsQuery: - "function getCollateralAssetsQuery(uint256 marketId) view returns (tuple(address token, string symbol, uint8 decimals, address priceOracle, uint256 price, uint256 totalSupply, uint256 totalValue, uint256 maxSupply, uint256 maxLTV, uint256 liquidationLTV, uint256 liquidationDiscount)[])", - }, -}; - -const VAULTS = [ - "0x9271A5C684330B2a6775e96B3C140FC1dC3C89be", - "0xaEAAD6d9B096829E5F3804a747C9FDD6677d78f0", - "0x72EE42bd660e4f676106C3718b00af06257c9d35", - "0x7f2b789Ac6D93521FAe86Cbc838eFcfc4F2b004B", - "0x5743AeC1f06E896544D1638E0FEBd15098855CB5", - "0x4d0fF6a0DD9f7316b674Fb37993A3Ce28BEA340e", -]; - -async function lookupAddresses(api, keys) { - return await api.call({ - abi: ABI.AddressRegistry.getAddresses, - target: ADDRESS_REGISTRY, - params: [keys.map((key) => ethers.keccak256(ethers.toUtf8Bytes(key)))], - }); -} - -async function getAllMarkets(api) { - const keys = []; - for (let i = 0; i < 100; i++) { - keys.push( - ethers.keccak256(ethers.toUtf8Bytes(`hyperdrive.market.${i}`)) - ); - } - - const markets = await api.call({ - abi: ABI.AddressRegistry.getAddresses, - target: ADDRESS_REGISTRY, - params: [keys], - permitFailure: true, - }); - - return markets.filter((market) => market !== ADDRESSES.null); -} - -async function tvl(api) { - const markets = await getAllMarkets(api); - const marketIds = markets.map((_, i) => i + 1); - - const marketData = await api.multiCall({ - target: MARKET_LENS, - calls: marketIds, - abi: ABI.MarketLens.getMarketQuery, - }); - const collateralData = await api.multiCall({ - target: MARKET_LENS, - calls: marketIds, - abi: ABI.MarketLens.getCollateralAssetsQuery, - }); - - marketData.forEach((datum, i) => { - api.add(datum.marketAsset, datum.totalAssets); - - const collateralDatum = collateralData[i]; - const totalCollateral = collateralDatum.reduce((previous, current) => { - return previous + BigInt(current.totalValue); - }, 0n); - api.add(datum.marketAsset, totalCollateral); - }); - - return api.erc4626Sum({ calls: VAULTS, permitFailure: true }); -} - -async function borrowed(api) { - const markets = await getAllMarkets(api); - const marketIds = markets.map((_, i) => i + 1); - - const marketData = await api.multiCall({ - target: MARKET_LENS, - calls: marketIds, - abi: ABI.MarketLens.getMarketQuery, - }); - - marketData.forEach((datum) => { - api.add(datum.marketAsset, datum.totalLiabilities); - }); - - return api.getBalances(); -} - -module.exports = { - hyperliquid: { - tvl, - borrowed, - }, - methodology: "Gets the assets deposited across all lending pools.", -}; diff --git a/projects/hyperdrive/index.js b/projects/hyperdrive/index.js deleted file mode 100644 index ab400bb2aa1..00000000000 --- a/projects/hyperdrive/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const ethers = require("ethers") -const { nullAddress } = require('../helper/unwrapLPs') - -const FUTURE_REGISTRY_ADDRESS = "0x6668310631Ad5a5ac92dC9549353a5BaaE16C666" -const GET_POOL_CONFIG_ABI = "function getPoolConfig() view returns (tuple(address baseToken, address vaultSharesToken, address linkerFactory, bytes32 linkerCodeHash, uint256 initialVaultSharePrice, uint256 minimumShareReserves, uint256 minimumTransactionAmount, uint256 circuitBreakerDelta, uint256 positionDuration, uint256 checkpointDuration, uint256 timeStretch, address governance, address feeCollector, address sweepCollector, address checkpointRewarder, tuple(uint256 curve, uint256 flat, uint256 governanceLP, uint256 governanceZombie) fees))"; -const POSITION_ABI = "function position(bytes32 id, address user) view returns (tuple(uint256 supplyShares, uint128 borrowShares, uint128 collateral))"; - -const config = { - ethereum: { registry: '0xbe082293b646cb619a638d29e8eff7cf2f46aa3a', }, - xdai: { registry: '0x666fa9ef9bca174a042c4c306b23ba8ee0c59666', }, - base: {}, - linea: {}, -} - -Object.keys(config).forEach(chain => module.exports[chain] = { tvl }) - -async function tvl(api) { - const { registry = FUTURE_REGISTRY_ADDRESS, } = config[api.chain] - const instances = await api.fetchList({ lengthAbi: 'getNumberOfInstances', itemAbi: 'getInstanceAtIndex', target: registry }) - const vaultNames = await api.multiCall({ abi: 'string:name', calls: instances }) - const vaultConfig = await api.multiCall({ abi: GET_POOL_CONFIG_ABI, calls: instances }) - const vaults = vaultNames.map((name, i) => ({ name, config: vaultConfig[i], address: instances[i] })) - const morphoVaults = [] - const morphoVaultInfos = [] - const tokensAndOwners = [] - - for (const vault of vaults) { - if (vault.name.includes("Morpho")) { - morphoVaults.push(vault.address) - morphoVaultInfos.push(vault) - } else if (vault.config.vaultSharesToken !== nullAddress) { - tokensAndOwners.push([vault.config.vaultSharesToken, vault.address]) - } else { - tokensAndOwners.push([vault.config.baseToken, vault.address]) - } - } - - const mVaults = await api.multiCall({ abi: 'address:vault', calls: morphoVaults}) - const mCollaterals = await api.multiCall({ abi: 'address:collateralToken', calls: morphoVaults}) - const mOracles = await api.multiCall({ abi: 'address:oracle', calls: morphoVaults}) - const mIrms = await api.multiCall({ abi: 'address:irm', calls: morphoVaults}) - const mLltvs = await api.multiCall({ abi: 'uint256:lltv', calls: morphoVaults}) - - const morphoMarketIds = morphoVaultInfos.map((vault, i) => { - const abiCoder = ethers.AbiCoder.defaultAbiCoder(); - const packedIds = abiCoder.encode( - ['address', 'address', 'address', 'address', 'uint256'], - [vault.config.baseToken, mCollaterals[i], mOracles[i], mIrms[i], mLltvs[i]] - ); - return ethers.keccak256(packedIds); - }) - const positionCalls = morphoVaults.map((vault, i) => ({ target: mVaults[i], abi: POSITION_ABI, params: [morphoMarketIds[i], vault], })) - const positions = await api.multiCall({ calls: positionCalls, abi: POSITION_ABI }) - positions.forEach((position, i) => { - api.add(morphoVaultInfos[i].config.baseToken, position.supplyShares / 1e6) - api.add(mCollaterals[i], position.borrowShares * -1 / 1e6) - }) - - return api.sumTokens({ tokensAndOwners }) -} - -module.exports.hallmarks = [ - ['2025-06-17', 'Product is winding down'], //https://x.com/delv_tech/status/1934995962377756801, https://blog.delv.tech/farewell-to-delv/ -] \ No newline at end of file diff --git a/projects/hyperion/index.js b/projects/hyperion/index.js deleted file mode 100644 index fa6a1983fd3..00000000000 --- a/projects/hyperion/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); -const { sleep } = require("../helper/utils"); - -const coinInfoCache = new Map(); -const PAIRED_COIN_DELAY_MS = 1000; -const MAX_RETRIES = 3; -const BASE_BACKOFF_MS = 1000; - -const hexToUtf8 = (hexStr) => Buffer.from(String(hexStr).replace(/^0x/, ''), 'hex').toString('utf-8'); - -const backoffMs = (i) => BASE_BACKOFF_MS * (i + 1) * (i + 1); - -async function callWithRetry(fn) { - let lastErr; - for (let i = 0; i <= MAX_RETRIES; i++) { - const sentinel = Symbol('ERR'); - const res = await fn().catch((e) => { lastErr = e; return sentinel; }); - if (res !== sentinel) return res; - if (i === MAX_RETRIES) throw lastErr; - await sleep(backoffMs(i)); - } -} - -async function _getPoolInfo(offset, limit) { - return function_view({ - functionStr: "0x8b4a2c4bb53857c718a04c020b98f8c2e1f99a68b0f57389a8bf5434cd22e05c::pool_v3::all_pools_with_info", - args: [String(offset), String(limit)], - type_arguments: [], - }); -} - -async function _getCoinInfo(faType) { - if (coinInfoCache.has(faType)) return coinInfoCache.get(faType); - - await sleep(PAIRED_COIN_DELAY_MS); - - const coinInfo = await callWithRetry(() => - function_view({ functionStr: "0x1::coin::paired_coin", args: [faType], type_arguments: [] }) - ); - - if (!coinInfo || !coinInfo.vec || coinInfo.vec.length === 0) { - coinInfoCache.set(faType, null); - return null; - } - - const v = coinInfo.vec[0]; - const out = `${v.account_address}::${hexToUtf8(v.module_name)}::${hexToUtf8(v.struct_name)}`; - coinInfoCache.set(faType, out); - return out; -} - -async function getPoolInfo() { - let offset = 0; - const limit = 100; - let pools = []; - let [data, pager] = await _getPoolInfo(offset, limit); - if (data.length) pools = pools.concat(data); - - while (offset + limit < pager.total) { - offset += limit; - [data, pager] = await _getPoolInfo(offset, limit); - if (data.length) pools = pools.concat(data); - } - return pools; -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - methodology: "Counts the total liquidity in all pools on Hyperion.", - aptos: { - tvl: async (api) => { - const pools = await getPoolInfo(); - api.log(`Hyperion Number of pools: ${pools.length}`); - - for (const pool of pools) { - const coin1 = (await _getCoinInfo(pool.token_a.inner)) || pool.token_a.inner; - const coin2 = (await _getCoinInfo(pool.token_b.inner)) || pool.token_b.inner; - - api.add(coin1, pool.token_a_reserve); - api.add(coin2, pool.token_b_reserve); - } - }, - }, -}; diff --git a/projects/hyperiondex/index.js b/projects/hyperiondex/index.js deleted file mode 100644 index a64b88b44d6..00000000000 --- a/projects/hyperiondex/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { queryContract, sumTokens } = require("../helper/chain/cosmos"); - -const HYPERION_FACTORY_ADDRESS = "titan1g4xlpqy29m50j5y69reguae328tc9y83l4299pf2wmjn0xczq5jsd2hhhu"; - -async function _getPairs(offset = 0, limit = 100, api) { - const { pairs } = await queryContract({ contract: HYPERION_FACTORY_ADDRESS, data: { pairs: { limit, offset } }, api }); - return pairs.map((pair) => pair.contract_addr); -} - -const tvl = async (api) => { - let offset = 0; - const limit = 100; - let pairs = []; - let hasMore = true; - - while (hasMore) { - const data = await _getPairs(offset, limit, api); - pairs.push(...data); - if (data.length < limit) break; - offset += limit; - } - - return sumTokens({ owners: pairs, api }); -} - -module.exports = { - methodology: "Counts the total liquidity in all pools on Hyperion.", - titan: { tvl } -} \ No newline at end of file diff --git a/projects/hyperithm/index.js b/projects/hyperithm/index.js deleted file mode 100644 index ec3214800f1..00000000000 --- a/projects/hyperithm/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Hyperithm.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x16fa314141C76D4a0675f5e8e3CCBE4E0fA22C7c', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/hyperjump/index.js b/projects/hyperjump/index.js deleted file mode 100644 index 04222bb0f83..00000000000 --- a/projects/hyperjump/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORY = { - bsc: "0xac653ce27e04c6ac565fd87f18128ad33ca03ba2", - fantom: "0x991152411A7B5A14A8CF0cDDE8439435328070dF", - metis: "0xAA1504c878B158906B78A471fD6bDbf328688aeB", -}; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: FACTORY.bsc, - useDefaultCoreAssets: true, - }), - }, - fantom: { - tvl: getUniTVL({ - factory: FACTORY.fantom, - useDefaultCoreAssets: true, - }), - }, - metis: { - tvl: getUniTVL({ - factory: FACTORY.metis, - useDefaultCoreAssets: true, - }), - }, -} diff --git a/projects/hyperlend-isolated/index.js b/projects/hyperlend-isolated/index.js deleted file mode 100644 index 9482c0414b6..00000000000 --- a/projects/hyperlend-isolated/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const { fraxlendExports } = require('../helper/fraxlend') -module.exports = fraxlendExports({ hyperliquid: '0xf55AF86c9EC3a7d5fa6367c00a120E6B262f718d'}) \ No newline at end of file diff --git a/projects/hyperlend/index.js b/projects/hyperlend/index.js deleted file mode 100644 index 16b72bb2f6b..00000000000 --- a/projects/hyperlend/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave'); - -module.exports = { - hyperliquid: aaveExports('hyperliquid', '0x24E301BcBa5C098B3b41eA61a52bFe95Cb728b20', undefined, ['0x5481bf8d3946E6A3168640c1D7523eB59F055a29'], { v3: true}) -}; diff --git a/projects/hyperliquid-hlp/index.js b/projects/hyperliquid-hlp/index.js deleted file mode 100644 index 2c819604987..00000000000 --- a/projects/hyperliquid-hlp/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { get } = require("../helper/http"); -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const data = await get("https://stats-data.hyperliquid.xyz/Mainnet/vaults"); - const hlp = data.find((d) => d.summary?.vaultAddress?.toLowerCase() === "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303"); - api.add(ADDRESSES.ethereum.USDC,+hlp.summary.tvl * 1e6, { skipChain: true }); -} - -module.exports = { - hyperliquid: { tvl }, - misrepresentedTokens: true, - //doublecounted: true, -} \ No newline at end of file diff --git a/projects/hyperliquid-perp/index.js b/projects/hyperliquid-perp/index.js deleted file mode 100644 index 4e7268de7f8..00000000000 --- a/projects/hyperliquid-perp/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { post } = require('../helper/http') - -async function tvl(api) { - let data= await post('https://api.hyperliquid.xyz/info', {"type":"tvlBreakdown"}) - data = data.find(i => i.protocol === "Hyperliquid Perps DEX") - data.tokens.forEach(i => api.addCGToken('usd-coin', +i.usdcValue)) -} - -module.exports = { - misrepresentedTokens: true, - hyperliquid: { tvl } -} \ No newline at end of file diff --git a/projects/hyperliquid-spot-orderbook/index.js b/projects/hyperliquid-spot-orderbook/index.js deleted file mode 100644 index 156601b6eb0..00000000000 --- a/projects/hyperliquid-spot-orderbook/index.js +++ /dev/null @@ -1,103 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const axios = require('axios') -const WebSocket = require('ws') - -const USDC = ADDRESSES.ethereum.USDC -const API_URL = 'https://api.hyperliquid.xyz/info' - -const assetsInfos = async () => { - const payload = { "type": "spotMetaAndAssetCtxs" } - const { data } = await axios.post(API_URL, payload) - - return data[0].tokens.map((token) => { - const ctxToken = data[1].find((item) => item.coin.replace("@", "") == token.index); - return { ...token, ...ctxToken }; - }); -} -let ws = null - -const nSigFigs = 2 -const getOrderbooks = async () => { - const assets = await assetsInfos() - return new Promise((resolve, reject) => { - if (!ws) - ws = new WebSocket('wss://api-ui.hyperliquid.xyz/ws'); - let coins = [] - let spotCoins = assets.map(asset => asset.coin).filter(Boolean) - const receivedMessages = new Map(); // Track messages received per coin - let allMids = null - - ws.on('open', () => { - ws.send(JSON.stringify({"method":"subscribe","subscription":{"type":"allMids"}})); - }); - - ws.on('message', (data) => { - const response = JSON.parse(data); - // Check if message is for a specific coin - if (response.channel === "l2Book" && response.data.coin) { - if(!receivedMessages.has(response.data.coin)){ - receivedMessages.set(response.data.coin, response.data); - ws.send(JSON.stringify({"method":"unsubscribe","subscription":{"type":"l2Book","coin":response.data.coin, nSigFigs}})); - - if (coins.every(coin => receivedMessages.has(coin))) { - ws.close(); - resolve({ - books: Array.from(receivedMessages.values()), - allMids: allMids - }); - } - } - } else if (response.channel === "allMids" && allMids === null) { - allMids = response.data.mids - ws.send(JSON.stringify({"method":"unsubscribe","subscription":{"type":"allMids"}})); - coins = Object.keys(allMids).filter(coin => spotCoins.includes(coin)) - coins.forEach(coin => { - const subscriptionMsg = { - method: "subscribe", - subscription: { - type: "l2Book", - coin: coin, - nSigFigs - } - }; - ws.send(JSON.stringify(subscriptionMsg)); - }); - } else if(response.channel !== "subscriptionResponse"){ - // console.log(response) - } - }); - - ws.on('error', (error) => { - reject(error); - }); - - // Add timeout to prevent hanging - setTimeout(() => { - ws.close(); - reject(new Error('WebSocket subscription timed out')); - }, 10000); - }); -} - - -const tvl = async (api) => { - const orderbooks = await getOrderbooks() - let totalBalance = 0 - orderbooks.books.forEach(book => { - const price = orderbooks.allMids[book.coin] - const buySide = book.levels[0].reduce((sum, ask) => sum + Number(ask.sz)*Number(ask.px), 0) - const sellSide = price * book.levels[1].reduce((sum, ask) => sum + Number(ask.sz), 0) - const totalFromCoin = buySide + sellSide - totalBalance += totalFromCoin - }) - - if (ws) ws.close() - - return api.add(USDC, totalBalance * 1e6, { skipChain: true }) -} - -module.exports = { - methodology: 'TVL represents assets locked in limit order on the spot order book', - misrepresentedTokens: true, - hyperliquid: { tvl } -} \ No newline at end of file diff --git a/projects/hyperliquid-spot/index.js b/projects/hyperliquid-spot/index.js deleted file mode 100644 index aa2ea01f040..00000000000 --- a/projects/hyperliquid-spot/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const axios = require('axios') - -const USDC = ADDRESSES.ethereum.USDC -const API_URL = 'https://api.hyperliquid.xyz/info' - -const assetsInfos = async () => { - const payload = { "type": "spotMetaAndAssetCtxs" } - const { data } = await axios.post(API_URL, payload) - - return data[0].tokens.map((token) => { - const ctxToken = data[1].find((item) => item.coin.replace("@", "") == token.index); - return { ...token, ...ctxToken }; - }); -} - -const tvl = async (api) => { - const assets = await assetsInfos() - const payload = { "type": "spotClearinghouseState", "user": "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF" } - const { data } = await axios.post(API_URL, payload) - - const tokens = data.balances.map((token) => { - const tokenHold = assets.find((item) => item.index == token.token) - return { ...token, ...tokenHold } - }) - - const totalBalance = tokens.reduce((sum, token) => { - const total = parseFloat(token.hold || 0); - const markPx = parseFloat(token.markPx || 0); - if(total * markPx > 10e9){ - return sum - } - return sum + (total * markPx); - }, 0); - - return api.add(USDC, totalBalance * 1e6, { skipChain: true }) -} - -module.exports = { - methodology: 'TVL represents assets locked in limit order on the spot order book', - misrepresentedTokens: true, - hyperliquid: { tvl } -} \ No newline at end of file diff --git a/projects/hyperliquid/index.js b/projects/hyperliquid/index.js deleted file mode 100644 index 17404f906cf..00000000000 --- a/projects/hyperliquid/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ tokensAndOwners: [ - [ - ADDRESSES.arbitrum.USDC, - '0xc67e9efdb8a66a4b91b1f3731c75f500130373a4' - ], - [ - ADDRESSES.arbitrum.USDC_CIRCLE, - '0x2Df1c51E09aECF9cacB7bc98cB1742757f163dF7' - ] - ]}) - } -} \ No newline at end of file diff --git a/projects/hyperlock/index.js b/projects/hyperlock/index.js deleted file mode 100644 index 1d7a76babb3..00000000000 --- a/projects/hyperlock/index.js +++ /dev/null @@ -1,42 +0,0 @@ - -const { sumTokens2 } = require("../helper/unwrapLPs") -const { staking } = require('../helper/staking') - -const HYPER = "0xEC73284E4EC9bcea1A7DDDf489eAA324C3F7dd31"; -const THRUST = "0xE36072DD051Ce26261BF50CD966311cab62C596e"; -const HYPER_THRUST = "0x569FcbDa292f1a69AB14e401bAD13Cc0E1DEC790"; - -const BOOSTER = "0x08d46dC9E455c9B97E671b6291a54ba5668B94AC"; -const VOTER_PROXY = "0x70A8075C73A9Ff9616CB5aF6BB09c04844718F27"; -const LOCKER = "0xc1De2d060a18CFfAB121E90118e380629d11977E"; - -const abi = { - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)" -} - -// https://docs.hyperlock.finance/developers/hyperlock-contracts -module.exports = { - doublecounted: true, - blast: { - tvl, - staking: staking(LOCKER, HYPER) - }, -} - -// node test.js projects/hyperlock/index.js -async function tvl(api) { - - // THRUST - const totalSupply = await api.call({ target: HYPER_THRUST, abi: 'erc20:totalSupply' }); - api.add(THRUST, totalSupply); - - // v2 pools - const pools = await api.fetchList({ target: BOOSTER, itemAbi: abi.poolInfo, lengthAbi: abi.poolLength, }); - pools.shift(); // remove the first pool, which is hyperTHRUST/THRUST stable pool - const tokensAndOwners = pools.map(p => [p.lptoken, p.gauge]); - await sumTokens2({ tokensAndOwners, resolveLP: true, api}); - - // v3 pools - await sumTokens2({ api, owners: [VOTER_PROXY], resolveUniV3: true }); -} \ No newline at end of file diff --git a/projects/hyperpie-launchpad/index.js b/projects/hyperpie-launchpad/index.js deleted file mode 100644 index 5750c761966..00000000000 --- a/projects/hyperpie-launchpad/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport, } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - hyperliquid: { - tvl: sumTokensExport({ owner: '0x9246d27EA8059529a615a4ACF35351dF0fa6168e', tokens: [ADDRESSES.hyperliquid.WHYPE] }), - }, -} diff --git a/projects/hyperpie-v2-dex/index.js b/projects/hyperpie-v2-dex/index.js deleted file mode 100644 index 1ef5100d6c9..00000000000 --- a/projects/hyperpie-v2-dex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - 'hyperliquid': '0xeAF40318453a81993569B14b898AAC31Df6133fA' -}, { - hasStablePools: true, -}) \ No newline at end of file diff --git a/projects/hyperpie/abis/mHYPE.json b/projects/hyperpie/abis/mHYPE.json deleted file mode 100644 index 611b8585e59..00000000000 --- a/projects/hyperpie/abis/mHYPE.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalSupply": "uint256:totalSupply", - "exchangeRate": "uint256:getExchangeRateToUnderlying" -} \ No newline at end of file diff --git a/projects/hyperpie/config.js b/projects/hyperpie/config.js deleted file mode 100644 index b659f2ab7bb..00000000000 --- a/projects/hyperpie/config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - hyperliquid: { - mHYPE: "0xdabb040c428436d41cecd0fb06bcfdbaad3a9aa8", - HYPE: "0x0d01dc56dcaaca66ad901c959b4011ec", - HYPE_DECIMALS: 8, - }, -}; \ No newline at end of file diff --git a/projects/hyperpie/index.js b/projects/hyperpie/index.js deleted file mode 100644 index 0cfd193ca6d..00000000000 --- a/projects/hyperpie/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const config = require("./config") -const mHYPEAbi = require("./abis/mHYPE.json"); - -const WEI_DECIMALS = 18; - -async function tvl(api) { - const { mHYPE, HYPE, HYPE_DECIMALS } = config[api.chain] - - const exchangeRateToHype = await api.call({ - abi: mHYPEAbi.exchangeRate, - target: mHYPE - }); - - const totalsupplyMHYPE = await api.call({ - abi: mHYPEAbi.totalSupply, - target: mHYPE - }); - - const totalSupplyHypeInWei = totalsupplyMHYPE * exchangeRateToHype / 10 ** WEI_DECIMALS; - const totalSupplyHype = (totalSupplyHypeInWei * (10 ** HYPE_DECIMALS)) / 10 ** WEI_DECIMALS; - - api.add(HYPE, totalSupplyHype); -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl, - } -}); \ No newline at end of file diff --git a/projects/hyperstable-vaults/index.js b/projects/hyperstable-vaults/index.js deleted file mode 100644 index 2a0a678a42d..00000000000 --- a/projects/hyperstable-vaults/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { getMorphoVaultTvl } = require("../helper/morpoho"); - -const hyperliquidConfig = { - governor: "0x47a2B186Da70d53319936477791d6723BFE9ECab", -} - -module.exports = { - doublecounted: true, - hyperliquid: { tvl: getMorphoVaultTvl(hyperliquidConfig.governor, { - vaults: [ - "0xd2196493Cf0d51276ab509e0ce89015bCB0d77C3", - "0x232E18Cc8d53FDd2d27C68F46f9da156ef889B5d", - "0x61F25b1B4235E0fFf2329037cf514c4F72c8E9fD", - "0xA0c1C328CbE6A51cd981c829D9FC477e48460eab", - "0x266FF1220095D24b13A51f7805d2EC0d7D5ae307", - "0xA2f88BD459CBE5358d78b12109bad9bffD54A4D3", - "0xdbF6D6daBa5534e8C4a0A26d62e568e5e8543DEe", - "0xf48e4F876eef9DfA0A336F21AA8949CDd91F054A", - "0x8167612029F4b6250B19394D98110aFecCd633eF", - "0x6d782386851Cf779375ccFBdF92C9E6A38196EF1", - "0x1730b28C4Dff6E0b412D873c7Eb03A9FBBc90081", - "0xe1C96cE63aa0b59C8D03CC4a33752DE67B944a2E", - "0xd354A0939017c730A86357B4ED2C7Be65f26eF33", - "0xd50D583B3d193D5407CC200493E6EA71aa4a226E", - "0x2564Af8ffa1f4B24892F8B5Cd91e99Fe8Afae560", - "0x16a9C065d05383D7e45824849B902331408d0dF6", - "0x7859c6c6e5F5f072eAB22Cc9484313f91D6B2350", - "0x9f6d209C5490127db486dfE2fEEBe5EACB457062", - "0xF4CFB31c734A4560D074E5ff76Ba438837D29221", - "0x73429B026A39d8F1F3637D419e7945D15fbAEBbC", - "0xB7ca959b1a8D3Aa323c3E26385f1424B81eA3d28", - "0xaa1A2518FC8E05341c15e66909843Dc9c9Bd2f40", - "0xAF4eCbf9C8054046C7cfa39E0915ba3030c8589a", - "0x167d573aF30396815E9696D743E8128067C6b4ae", - "0x8bc48468E3240685D1140e3B72e30d7d548b1Fab", - "0xe99384669663D03cB9eeA5582cdb18dCE2F10001" - ] - }) }, -} diff --git a/projects/hyperstable/index.js b/projects/hyperstable/index.js deleted file mode 100644 index d5d22cbe31e..00000000000 --- a/projects/hyperstable/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const MANAGER = "0x8ADf2532c86aB123228D75Eb9DA5085DC3eAf5b9" -const USH = "0x8ff0dd9f9c40a0d76ef1bcfaf5f98c1610c74bd8" -const USH_ORACLE = "0xDc4ddde1EeaF64d77B23B794b89BfBe281B5Ce35" - -const POOL2_CONFIG = [ - { - stakingContract: "0x830B9cf9520854DDF885f594f9Da93023244BB13", - lpToken: "0x3Bee53e887D52d9CBa177396AA44810904D501fF" - }, - { - stakingContract: "0xD1F03DdbcF8DDF201Dc49E834b33Ff842abd76E0", - lpToken: "0x70ac2feeB9ab4417591a97AD2607DD0E87bb3e33" - }, - { - stakingContract: "0xa656a488023A5D3e52d9c580B31904177DF05060", - lpToken: "0x749eF4ab10aef61151E14C9336B07727ffA5a323" - } -] - -async function tvl(api) { - const logs = await getLogs({ - api, - target: MANAGER, - eventAbi: 'event VaultRegistered(uint8 indexed index, address indexed vaultAddress, address indexed asset, uint256 mcr, uint256 minDebt, uint256 debtCap, uint256 interestIndex)', - fromBlock: 3724000, - }) - - const vaults = logs.map(log => ({ - vault: log.args.vaultAddress, - asset: log.args.asset, - })) - - const totalAssets = await api.multiCall({ - abi: 'function totalAssets() view returns (uint256)', - calls: vaults.map(v => ({ target: v.vault })) - }) - - const balances = {} - vaults.forEach(({ asset }, i) => { - sdk.util.sumSingleBalance(balances, asset.toLowerCase(), totalAssets[i], api.chain) - }) - - return balances -} - -async function pool2(api) { - const tokensAndOwners = POOL2_CONFIG.map(p => ([p.lpToken, p.stakingContract])) - - // Log raw LP token balances before unwrapping - for (const config of POOL2_CONFIG) { - const balance = await api.call({ - target: config.lpToken, - params: [config.stakingContract], - abi: 'erc20:balanceOf' - }) - } - - const balances = await sumTokens2({ api, tokensAndOwners, resolveLP: true }) - return balances -} - -module.exports = { - hyperliquid: { - tvl, - pool2, - }, - methodology: "Counts the total assets posted as collateral for TVL. For borrowed, calculates USH total supply × USH price from the protocol's price oracle (Pyth). Pool2 includes Curve LP positions staked in the protocol's staking contracts.", -}; - \ No newline at end of file diff --git a/projects/hyperswap-v2/index.js b/projects/hyperswap-v2/index.js deleted file mode 100644 index 75f9e5b1e8e..00000000000 --- a/projects/hyperswap-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'hyperliquid': '0x724412C00059bf7d6ee7d4a1d0D5cd4de3ea1C48' -}) \ No newline at end of file diff --git a/projects/hyperswap-v3/index.js b/projects/hyperswap-v3/index.js deleted file mode 100644 index 2158f2c6354..00000000000 --- a/projects/hyperswap-v3/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') - -module.exports = { - hyperliquid: { - tvl - }, -} - -async function tvl(api) { - const ownerTokens = await getConfig('hyperswap-v3/' + api.chain, undefined, { - fetcher: async () => { - let page = 0 - const ownerTokens = [] - let hasMore = false - do { - const { data: { pairs, pageCount } } = await get(`https://api-partner.hyperswap.exchange/api/pairs?page=${page}&maxPerPage=50`, { headers: { - 'x-internal-access' : 1 - }}) - page++ - hasMore = page < pageCount - pairs.forEach(p => { - const pair = p.pairAddress - const token0 = p.token0.token0Address - const token1 = p.token1.token1Address - if (!pair || !token0 || !token1) throw new Error('Invalid pair data') - ownerTokens.push([[token0, token1], pair]) - }) - } while (hasMore) - return ownerTokens - } - }) - return api.sumTokens({ ownerTokens }) -} \ No newline at end of file diff --git a/projects/hypervault/index.js b/projects/hypervault/index.js deleted file mode 100644 index 7105822f875..00000000000 --- a/projects/hypervault/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const POOLINFO = '0xCD3Db0110d3955072134bd16d497a4D3C341F0E6'; - -async function tvl(api) { - const res = await api.call({ target: POOLINFO, abi: "function getTotalValueLockedList() view returns ((address token, uint8 decimals, uint256 amount)[])"}) - res.forEach(i => api.add(i.token, i.amount)) -} - -module.exports = { - deadFrom: '2025-09-26', - hallmarks: [[1758844800, "Rug pull"]], - hyperliquid: { tvl: () => ({ }) }, -} diff --git a/projects/hyperwave/constants.js b/projects/hyperwave/constants.js deleted file mode 100644 index b052cf6e289..00000000000 --- a/projects/hyperwave/constants.js +++ /dev/null @@ -1,92 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); - -// Vault Addresses -const HWLP_VAULT = "0x9FD7466f987Fd4C45a5BBDe22ED8aba5BC8D72d1"; -const HWHYPE_VAULT = "0x4DE03cA1F02591B717495cfA19913aD56a2f5858"; - -// HyperLiquid Multi-Sigs -const MS_1 = "0x128Cc5830214aBAF05A0aC178469a28de56c0BA9"; -const MS_2 = "0x950e6bc9bba0edf4e093b761df05cf5abd0a32e7"; -const MS_3 = "0x4E961B977085B673c293a5C022FdcA2ab3A689a2"; -const MS_4 = "0xc8f969ef6b51a428859f3a606e6b103dc1fb92e9"; -const MS_5 = "0x2cd4aa47e778fe8fa27cdcd4ce2bc99b6bf90f61"; -const MS_ALL = [MS_1, MS_2, MS_3, MS_4, MS_5]; - -// HyperLiquid Vault -const HLP_VAULT = "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303"; - -// Request Configuration -const DELAY = 200; // 200ms delay between requests - -// Token Arrays -const HWLP_VAULT_TOKENS = [ - ADDRESSES.hyperliquid.USDT0, - ADDRESSES.hyperliquid.USDe, - '0xb50A96253aBDF803D85efcDce07Ad8becBc52BD5' // USDHl -]; - -const MAINNET_HWLP_VAULT_TOKENS = [ - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDe, -]; - -const HWHYPE_VAULT_TOKENS = [ - ADDRESSES.hyperliquid.WHYPE, - ADDRESSES.hyperliquid.wstHYPE, - ADDRESSES.null, // HYPE gas token - '0xfFaa4a3D97fE9107Cef8a3F48c069F577Ff76cC1', // stHYPE - '0xfD739d4e423301CE9385c1fb8850539D657C296D', // kHYPE - '0x5748ae796AE46A4F1348a1693de4b50560485562', // LHYPE - '0x4DE03cA1F02591B717495cfA19913aD56a2f5858', // hyHYPE (hypurrfi) - '0x0D745EAA9E70bb8B6e2a0317f85F1d536616bD34', // hHYPE (hyperlend) - '0x311dB0FDe558689550c68355783c95eFDfe25329', // PT-kHYPE (pendle) - '0x31CC92a2f8c02b8F9f427c48f12E21a848e69847', // PT-vkHYPE (pendle) -]; - -const META_MORPHO_VAULTS = [ - { - wallet: HWHYPE_VAULT, - vault: "0x2900ABd73631b2f60747e687095537B673c06A76", - underlying: ADDRESSES.hyperliquid.WHYPE, - decimals: 18, - }, -]; - -// HyperCore Token Configurations -const HYPER_CORE_TOKENS = [ - { - symbol: "USDT0", - address: ADDRESSES.hyperliquid.USDT0, - decimals: 6, - }, - { - symbol: "USDE", - address: ADDRESSES.hyperliquid.USDe, - decimals: 18, - }, - { - symbol: "USDHL", - address: '0xb50A96253aBDF803D85efcDce07Ad8becBc52BD5', - decimals: 6, - } -]; - -const KHYPE_DEPLOYMENTS = { - STAKING_MANAGER: "0x393D0B87Ed38fc779FD9611144aE649BA6082109", - STAKING_ACCOUNTANT: "0x9209648Ec9D448EF57116B73A2f081835643dc7A", -} - -module.exports = { - ADDRESSES, - HWLP_VAULT, - HWHYPE_VAULT, - MS_ALL, - HLP_VAULT, - DELAY, - HWLP_VAULT_TOKENS, - MAINNET_HWLP_VAULT_TOKENS, - HWHYPE_VAULT_TOKENS, - META_MORPHO_VAULTS, - HYPER_CORE_TOKENS, - KHYPE_DEPLOYMENTS, -}; \ No newline at end of file diff --git a/projects/hyperwave/evm/erc20.js b/projects/hyperwave/evm/erc20.js deleted file mode 100644 index b54b4d76c21..00000000000 --- a/projects/hyperwave/evm/erc20.js +++ /dev/null @@ -1,46 +0,0 @@ -const { sumTokens2 } = require('../../helper/unwrapLPs'); -const { HWLP_VAULT, MAINNET_HWLP_VAULT_TOKENS, HWLP_VAULT_TOKENS, HWHYPE_VAULT, HWHYPE_VAULT_TOKENS } = require('../constants'); - -/** - * Calculate TVL for HWHLP vault on HyperLiquid chain - */ -async function hwhlpVaultTvl(api) { - return sumTokens2({ - api, - owner: HWLP_VAULT, - chain: 'hyperliquid', - tokens: HWLP_VAULT_TOKENS, - }); -} - -/** - * Calculate TVL for HWHLP vault on Ethereum mainnet - */ -async function mainnetHwhlpVaultTvl(api) { - return sumTokens2({ - api, - owner: HWLP_VAULT, - chain: 'ethereum', - tokens: MAINNET_HWLP_VAULT_TOKENS - }); -} - - -/** - * Calculate TVL for HWHYPE vault on HyperLiquid chain - */ -async function hwhypeVaultTvl(api) { - return sumTokens2({ - api, - owner: HWHYPE_VAULT, - chain: 'hyperliquid', - tokens: HWHYPE_VAULT_TOKENS, - }); -} - - -module.exports = { - hwhlpVaultTvl, - mainnetHwhlpVaultTvl, - hwhypeVaultTvl, -}; \ No newline at end of file diff --git a/projects/hyperwave/evm/khype.js b/projects/hyperwave/evm/khype.js deleted file mode 100644 index 1b1047cbf62..00000000000 --- a/projects/hyperwave/evm/khype.js +++ /dev/null @@ -1,41 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumUnknownTokens } = require('../../helper/unknownTokens'); -const { KHYPE_DEPLOYMENTS, HWHYPE_VAULT, HWHYPE_VAULT_TOKENS, ADDRESSES } = require('../constants'); - -async function khypeUnstaking(api) { - const nextId = ( - await sdk.api.abi.call({ - target: KHYPE_DEPLOYMENTS.STAKING_MANAGER, - abi: "function nextWithdrawalId(address user) view returns (uint256 nextId)", - chain: "hyperliquid", - params: [HWHYPE_VAULT], - }) - ).output - - const ids = Array.from({ length: Number(nextId) }, (_, i) => i); - const unstakes = await sdk.api.abi.multiCall({ - calls: ids.map(i => ({ - target: KHYPE_DEPLOYMENTS.STAKING_MANAGER, - params: [ - HWHYPE_VAULT, - i - ] - })), - abi: "function withdrawalRequests(address user, uint256 id) view returns ( uint256 hypeAmount, uint256 kHYPEAmount, uint256 kHYPEFee, uint256 bufferUsed, uint256 timestamp)", - chain: 'hyperliquid', - permitFailure: true, - }) - - unstakes.output.forEach((data, i) => { - if (!data.success) return; - // console.log(data.output); - const amount = data.output.hypeAmount; - api.add(ADDRESSES.hyperliquid.WHYPE, amount); - }) - - return sumUnknownTokens({ api, useDefaultCoreAssets: true }); -} - -module.exports = { - khypeUnstaking, -} \ No newline at end of file diff --git a/projects/hyperwave/evm/morpho.js b/projects/hyperwave/evm/morpho.js deleted file mode 100644 index 87ade1ee60f..00000000000 --- a/projects/hyperwave/evm/morpho.js +++ /dev/null @@ -1,40 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumUnknownTokens } = require('../../helper/unknownTokens'); -const { META_MORPHO_VAULTS } = require('../constants'); - -/** - * Process Meta Morpho vault positions - */ -async function processVaults(api) { - const vaults = [...META_MORPHO_VAULTS]; - - const [supplies, rates] = await Promise.all([ - sdk.api.abi.multiCall({ - calls: vaults.map(v => ({ target: v.vault, params: [v.wallet] })), - abi: 'erc20:balanceOf', - chain: 'hyperliquid' - }), - sdk.api.abi.multiCall({ - calls: vaults.map(v => ({ target: v.vault, params: [(10 ** v.decimals).toString()] })), - abi: "function convertToAssets(uint256 shares) view returns (uint256 assets)", - chain: 'hyperliquid' - }), - ]); - - supplies.output.forEach((data, i) => { - const vault = data.input.target; - const decimals = vaults[i].decimals; - const decimalScaling = 10 ** decimals; - const underlying = vaults[i].underlying; - const amount = data.output; - const rate = rates.output[i].output; - const correctedAmount = (amount / decimalScaling) * (rate / decimalScaling) * decimalScaling; - api.add(underlying, correctedAmount); - }); - - return sumUnknownTokens({ api, useDefaultCoreAssets: true }); -} - -module.exports = { - processVaults, -}; \ No newline at end of file diff --git a/projects/hyperwave/hypercore/index.js b/projects/hyperwave/hypercore/index.js deleted file mode 100644 index 552677b676c..00000000000 --- a/projects/hyperwave/hypercore/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const { post } = require('../../helper/http'); -const { sumUnknownTokens } = require('../../helper/unknownTokens'); -const { ADDRESSES, MS_ALL, HLP_VAULT, DELAY, HYPER_CORE_TOKENS } = require('../constants'); - -/** - * Add delay between API requests to avoid rate limiting - */ -const delay = () => new Promise(res => setTimeout(res, DELAY)); - -/** - * Calculate TVL from HyperLiquid HLP vault positions - */ -async function hypercoreHwhlpVaultTvl(api) { - const datas = []; - - for (const eoa of MS_ALL) { - await delay(); - console.log(`Fetching vault data for ${eoa}`); - datas.push(await post('https://api.hyperliquid.xyz/info', { - type: "userVaultEquities", - user: eoa - })); - console.log(`Fetched vault data for ${eoa}`); - } - - const hlpVaults = datas.flatMap(data => - data.filter(v => v.vaultAddress.toLowerCase() === HLP_VAULT.toLowerCase()) - ); - const hlpEquities = hlpVaults.map(v => parseFloat(v.equity)); - const hlpEquityUpscaled = hlpEquities.reduce((sum, equity) => sum + equity * 1e6, 0); // Convert to wei - - api.addTokens([ADDRESSES.arbitrum.USDC_CIRCLE], [hlpEquityUpscaled]); - - return sumUnknownTokens({ api, useDefaultCoreAssets: true }); -} - -/** - * Calculate TVL from HyperCore spot balances - */ -async function hyperCoreSpotBalance(api) { - const datas = []; - - for (const eoa of MS_ALL) { - await delay(); - console.log(`Fetching spot balance for ${eoa}`); - datas.push(await post('https://api.hyperliquid.xyz/info', { - type: "spotClearinghouseState", - user: eoa - })); - console.log(`Fetched spot balance for ${eoa}`); - } - - const balances = datas.flatMap(data => data.balances); - const coinTotals = {}; - - for (const b of balances) { - if (!coinTotals[b.coin]) coinTotals[b.coin] = 0; - coinTotals[b.coin] += parseFloat(b.total); - } - - console.log(coinTotals); - - // Adding other core tokens - const tokens = HYPER_CORE_TOKENS.map(t => t.address); - const amounts = HYPER_CORE_TOKENS.map(t => - coinTotals[t.symbol] ? coinTotals[t.symbol] * 10 ** t.decimals : 0 - ); - console.log('Adding tokens:', tokens, 'with amounts:', amounts); - api.addTokens(tokens, amounts); - - // Adding USDC balance - const usdcBalance = coinTotals['USDC'] ? coinTotals['USDC'] : 0; // USDC is in 6 decimals - api.addUSDValue(usdcBalance); - - return sumUnknownTokens({ api, useDefaultCoreAssets: true }); -} - -module.exports = { - hypercoreHwhlpVaultTvl, - hyperCoreSpotBalance, -}; \ No newline at end of file diff --git a/projects/hyperwave/index.js b/projects/hyperwave/index.js deleted file mode 100644 index 215157e76b1..00000000000 --- a/projects/hyperwave/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const sdk = require('@defillama/sdk'); - -// Import vault TVL calculation functions -const { processVaults } = require('./evm/morpho'); -const { hypercoreHwhlpVaultTvl, hyperCoreSpotBalance } = require('./hypercore/index'); -const { mainnetHwhlpVaultTvl, hwhlpVaultTvl, hwhypeVaultTvl } = require('./evm/erc20'); -const { khypeUnstaking } = require('./evm/khype'); - -module.exports = { - timetravel: false, - methodology: 'TVL represents the sum of tokens deposited in the vault + HLP positions + HyperCore Spot positions.', - doublecounted: false, - ethereum: { tvl: mainnetHwhlpVaultTvl }, - arbitrum: { tvl: hypercoreHwhlpVaultTvl }, - hyperliquid: { - tvl: sdk.util.sumChainTvls([ - hwhlpVaultTvl, - hyperCoreSpotBalance, - hwhypeVaultTvl, - processVaults, - khypeUnstaking, - ]) - }, -}; \ No newline at end of file diff --git a/projects/hyperyield/index.js b/projects/hyperyield/index.js deleted file mode 100644 index bcee7caafa7..00000000000 --- a/projects/hyperyield/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const sdk = require('@defillama/sdk') -const { aaveExports } = require("../helper/aave"); - -const config = { - hyperliquid: ["0xf8b130AaF759C24d91BeC7Dd64e4A82D2CF51194", "0x022F164dDBa35a994ad0f001705e9c187156E244"] -}; - -const data = {}; -Object.keys(config).forEach((chain) => { - const chainExports = config[chain].map((address) => aaveExports(chain, undefined, undefined, [address])) - data[chain] = { - tvl: sdk.util.sumChainTvls(chainExports.map(i => i.tvl)), - borrowed: sdk.util.sumChainTvls(chainExports.map(i => i.borrowed)) - } -}); - -module.exports = data; - diff --git a/projects/hypurrfi-isolated/index.js b/projects/hypurrfi-isolated/index.js deleted file mode 100644 index 46e6dab98aa..00000000000 --- a/projects/hypurrfi-isolated/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const { fraxlendExports } = require('../helper/fraxlend') -module.exports = fraxlendExports({ hyperliquid: '0x5aB54F5Ca61ab60E81079c95280AF1Ee864EA3e7'}) \ No newline at end of file diff --git a/projects/hypurrfi/index.js b/projects/hypurrfi/index.js deleted file mode 100644 index 9e93574a844..00000000000 --- a/projects/hypurrfi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { aaveExports, methodology } = require('../helper/aave') - -module.exports = { - methodology, - hyperliquid: aaveExports(undefined, undefined, undefined, ["0x48684a2316eac7b458ad22c459e12eb1c0fa28c4"], { v3: true, }), -} \ No newline at end of file diff --git a/projects/iTrustfinance/abi.json b/projects/iTrustfinance/abi.json deleted file mode 100644 index 7e8058d689a..00000000000 --- a/projects/iTrustfinance/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalSupply": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/iTrustfinance/index.js b/projects/iTrustfinance/index.js deleted file mode 100644 index b66dd9fd195..00000000000 --- a/projects/iTrustfinance/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const vaults = [ - // sNXM (Nexus Mutual Strategy Vault) - "0xD82c32Dd3585B5bc528688Efa408adA09963C238", - // iNXM (Nexus Mutual Index Vault) - "0xf4104CadE73d699922CC657A97CB1132bC620978", -]; - -/* - * WNXM and NXM have different price at coingecko! what do I should use? - * And in the vaults there are deposited both of them! - */ - -const NXM = "0xd7c49CEE7E9188cCa6AD8FF264C1DA2e69D4Cf3B"; - -const erc20Tokens = [ - //WNXM - "0x0d438f3b5175bebc262bf23753c1e53d03432bde", - //IDLE - "0x875773784Af8135eA0ef43b5a374AaD105c5D39e", - //WETH - ADDRESSES.ethereum.WETH, - //VISR - "0xf938424f7210f31df2aee3011291b658f872e91e", - //BOND - "0x0391D2021f89DC339F60Fff84546EA23E337750f", -]; - -/*** Vaults and staking TVL Portions ***/ -const ethTvl = async (api) => { - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: vaults}) - api.add(NXM, supplies) - return api.sumTokens({ owners: vaults, tokens: erc20Tokens}) -}; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: ethTvl, - }, - methodology: - "We count liquidity of NXM/WNXM deposited on the vaults (iNXM and sNXM) threw their contracts and the staking of other tokens within these vaults", -}; diff --git a/projects/iagon/index.js b/projects/iagon/index.js deleted file mode 100644 index d686a36d85d..00000000000 --- a/projects/iagon/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano") -const { get } = require("../helper/http") -const iagTokenAddress = "5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114494147" -const iagStakingOld = 'addr1w9k25wa83tyfk5d26tgx4w99e5yhxd86hg33yl7x7ej7yusggvmu3' -const iagStakingNew = 'addr1zxkrtm5fcf43ukp8w8kstt65kelawutmht4a0aezl06rp43y2c4s7gthspjk2c4557c9zltqcssl4qz7x5syzf7yknhqma7zxx' -const iagStakingOperators = 'addr1zxkrtm5fcf43ukp8w8kstt65kelawutmht4a0aezl06rp43y2c4s7gthspjk2c4557c9zltqcssl4qz7x5syzf7yknhqma7zxx' -const iagStakingDelegated = 'addr1z8awewqwaek2m7w6c5vyycldf5tykw87w820da273a4smgpy2c4s7gthspjk2c4557c9zltqcssl4qz7x5syzf7yknhq6uv6j0' - -const owners = [iagStakingOld, iagStakingOperators, iagStakingDelegated] - -async function pool2() { - const poolValue = await get('https://api.iagon.com/api/v1/pools/tvl/total') - return { - cardano: parseFloat(poolValue.data.tvl) - } -} - -async function stake() { - const stakedTokens = await sumTokens2({ - owners: owners, - tokens: [iagTokenAddress] - }) - - return stakedTokens -} - -module.exports = { - timetravel: false, - cardano: { - tvl: () => ({}), - pool2, - staking: stake - } -} diff --git a/projects/ibcx/index.js b/projects/ibcx/index.js deleted file mode 100644 index 4bd85f1046b..00000000000 --- a/projects/ibcx/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { endPoints } = require('../helper/chain/cosmos') -const { get } = require('../helper/http') - - -const contractAddresses = [ - "osmo1yhd9tzp09d833u7ray4pc6wwp72aewtt2xwakszn3lzlf2klnlwscjwhxt", // uibcx - "osmo1fw7wc4x7leyf3keud4zdhdnyaanw0sajudg5sgnr93ydjhzmxk6sx84rxe", - "osmo1xqw2sl9zk8a6pch0csaw78n4swg5ws8t62wc5qta4gnjxfqg6v2qcs243k", // stIBCX - "osmo1fd33mtk06awg0v2hhd6djcjvvzcv90s8u03qujcjnlu87wm65xjs305mr4", - "osmo1w2dqd98hzu4ydku5hhv3f0gc468jdlayrqeqedrjxwrq62m7yekqrgvlyu", - "osmo14klwqgkmackvx2tqa0trtg69dmy0nrg4ntq4gjgw2za4734r5seqjqm4gm", -] - -async function tvl(api) { - for (const contractAddress of contractAddresses) { - const contractBalances = (await get(`${endPoints.osmosis}/cosmos/bank/v1beta1/balances/${contractAddress}`)).balances - for (const coin of contractBalances) { - // stUMEE not be listed on coingecko so we convert stUMEE to the corresponding amount of UMEE base on pool stUMEE/UMEE - if (coin.denom == "ibc/02F196DA6FD0917DD5FEA249EE61880F4D941EE9059E7964C5C9B50AF103800F") { - const spotPrice = (await get(`${endPoints.osmosis}/osmosis/gamm/v2/pools/1035/prices?base_asset_denom=ibc/67795E528DF67C5606FC20F824EA39A6EF55BA133F4DC79C90A8C47A0901E17C"e_asset_denom=${coin.denom}`)).spot_price - coin.denom = "ibc/67795E528DF67C5606FC20F824EA39A6EF55BA133F4DC79C90A8C47A0901E17C" // UMEE - coin.amount = coin.amount * spotPrice - } - // stEVMOS not be listed on coingecko so we convert stEVMOS to the corresponding amount of EVMOS base on pool stEVMOS/EVMOS - if (coin.denom == "ibc/C5579A9595790017C600DD726276D978B9BF314CF82406CE342720A9C7911A01") { - const spotPrice = (await get(`${endPoints.osmosis}/osmosis/gamm/v2/pools/922/prices?base_asset_denom=ibc/6AE98883D4D5D5FF9E50D7130F1305DA2FFA0C652D1DD9C123657C6B4EB2DF8A"e_asset_denom=${coin.denom}`)).spot_price - coin.denom = "ibc/6AE98883D4D5D5FF9E50D7130F1305DA2FFA0C652D1DD9C123657C6B4EB2DF8A" // EVMOS - coin.amount = coin.amount * spotPrice - } - api.add(coin.denom, coin.amount) - } - - } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Total TVL on vaults", - osmosis: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/ibtc/index.js b/projects/ibtc/index.js deleted file mode 100644 index f31ee5d6c60..00000000000 --- a/projects/ibtc/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ibtcContract = "0x8154Aaf094c2f03Ad550B6890E1d4264B5DdaD9A"; - -async function tvl(api) { - // 1iBTC=1XBTC=1BTC(exsat)=1BTC - const ibtcTotalSupply = await api.call({ target: ibtcContract, abi: "uint256:totalSupply" }) - api.addCGToken('bitcoin', ibtcTotalSupply / 1e18) -} - -module.exports = { - doublecounted: true, - xsat: { - tvl - }, -} diff --git a/projects/ice-colony/index.js b/projects/ice-colony/index.js deleted file mode 100644 index de30d9b8647..00000000000 --- a/projects/ice-colony/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); -const masterchef = "0xFa0A21fFCd1BB6210160582Cd9E42C7E90668F83"; -const ice = "0x6ad1eEdDf1b1019494E6F78377d264BB2518db6F"; - -module.exports = { - ...masterChefExports(masterchef, "polygon", ice, false) -} \ No newline at end of file diff --git a/projects/ice-dao/index.js b/projects/ice-dao/index.js deleted file mode 100644 index 09c22e9df51..00000000000 --- a/projects/ice-dao/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0x935AEf514141B0CA32849e9686d22CB8b6f1dCAF"; -module.exports = ohmTvl(treasuryAddress, [ -//MIM - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], -//WAVAX - [ADDRESSES.avax.WAVAX, false], -// ICY MIM JLP - ["0x453B5415Fe883f15686A5fF2aC6FF35ca6702628", true], -// MEMO - ["0x136acd46c134e8269052c62a67042d6bdedde3c9", false] - -], "avax", "0xBDe1c85C9fAA18bC6e8EDa1e2d813E63f86fd145", "0x78bF833AaE77EBF62C21A9a5A6993A691810F2e1", addr=> { - if (addr.toLowerCase() === "0x136acd46c134e8269052c62a67042d6bdedde3c9") { - return "avax:0xb54f16fb19478766a268f172c9480f8da1a7c9c3" - } - return `avax:${addr}` -}, undefined, false) \ No newline at end of file diff --git a/projects/icecream-finance/index.js b/projects/icecream-finance/index.js deleted file mode 100644 index c20b8ff5f3d..00000000000 --- a/projects/icecream-finance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const cream = "0xAE21d31a6494829a9E4B2B291F4984AAE8121757"; -const cshare = "0x155f794b56353533E0AfBF76e1B1FC57DFAd5Bd7"; -const masonry = "0x13692700791BD876D8f68b5df910339312Efc14b"; -const rewardPool = "0x6CD5a7Acbe8Ddc57C8aC2EE72f3f957e26D81f51"; -const pool2LPs = [ - "0x00c87ce7188f7652d0c0940274cec5db62f1e825", - "0xbd61dfad83fc19960476abca1324ffd798234c66", - "0xec1e129bbaac3dde156643f5d41fc9b5a59033a7" -] - -module.exports = { - ...tombTvl(cream, cshare, rewardPool, masonry, pool2LPs, "avax", undefined, false, "0xbd61dfad83fc19960476abca1324ffd798234c66") -} \ No newline at end of file diff --git a/projects/icecreamswap-v3/index.js b/projects/icecreamswap-v3/index.js deleted file mode 100644 index 426c5aea73a..00000000000 --- a/projects/icecreamswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - core: { factory: '0xa8a3AAD4f592b7f30d6514ee9A863A4cEFF6531D', fromBlock: 9212906, }, -}) \ No newline at end of file diff --git a/projects/icecreamswap/index.js b/projects/icecreamswap/index.js deleted file mode 100644 index 738a9baeedc..00000000000 --- a/projects/icecreamswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -const config = { - shimmer_evm: '0x24cb308a4e2F3a4352F513681Bd0c31a0bd3BA31', - bob: '0x7b2a5C88AB9367147F6ac384F857CbaDF5aA70a7', - lightlink_phoenix: '0xC87De04e2EC1F4282dFF2933A2D58199f688fC3d', - taiko: '0xC87De04e2EC1F4282dFF2933A2D58199f688fC3d' -} - -const chains = [...Object.keys(config), 'base', 'telos', 'core', 'dogechain', 'fuse', 'xdc', 'bitgert', 'scroll', 'neon_evm', 'blast' ] - -chains.forEach(chain => { - const factory = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ factory: factory ?? '0x9E6d21E759A7A288b80eef94E4737D313D31c13f', useDefaultCoreAssets: true,}) - } -}) diff --git a/projects/iceswap/index.js b/projects/iceswap/index.js deleted file mode 100644 index 26fcdd3422e..00000000000 --- a/projects/iceswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const FACTORY = "0x79b8F15a3bEEcd5014B748499Ec89692665ea368"; - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs. We also have our native token $IKE staking.`, - base: { - tvl: dexTVL, - }, -} \ No newline at end of file diff --git a/projects/ichifarm/abi.json b/projects/ichifarm/abi.json deleted file mode 100644 index 30284047ebf..00000000000 --- a/projects/ichifarm/abi.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "oneTokenCount": "uint256:oneTokenCount", - "oneTokenAtIndex": "function oneTokenAtIndex(uint256 index) view returns (address)", - "assetCount": "uint256:assetCount", - "assetAtIndex": "function assetAtIndex(uint256 index) view returns (address)", - "token0": "address:token0", - "token1": "address:token1", - "getTotalAmounts": "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", - "allVaults": "function allVaults(uint256) view returns (address)", - "collateralTokenAtIndex": "function collateralTokenAtIndex(uint256 index) view returns (address module)", - "collateralTokenCount": "uint256:collateralTokenCount", - "pool": "address:pool", - "foreignTokenAtIndex": "function foreignTokenAtIndex(uint256 index) view returns (address)", - "foreignTokenCount": "uint256:foreignTokenCount", - "moduleCount": "uint256:moduleCount", - "moduleAtIndex": "function moduleAtIndex(uint256 index) view returns (address module)", - "modules": "function modules(address) view returns (string name, string url, uint8 moduleType)", - "owner": "address:owner" -} \ No newline at end of file diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js deleted file mode 100644 index 7bd6b133666..00000000000 --- a/projects/ichifarm/index.js +++ /dev/null @@ -1,277 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require("../helper/staking"); -const abi = require("./abi.json"); -const { sumTokens2, } = require('../helper/unwrapLPs'); - -const ichiLegacy = "0x903bEF1736CDdf2A537176cf3C64579C3867A881"; -const ichi = "0x111111517e4929D3dcbdfa7CCe55d30d4B6BC4d6"; -const xIchi = "0x70605a6457B0A8fBf1EEE896911895296eAB467E"; -const farmContract = "0x275dFE03bc036257Cd0a713EE819Dbd4529739c8"; -const ichiLending = "0xaFf95ac1b0A78Bd8E4f1a2933E373c66CC89C0Ce"; - -const poolWithTokens = [ - // BANCOR - ["0x4a2F0Ca5E03B2cF81AebD936328CF2085037b63B", ["0x903bEF1736CDdf2A537176cf3C64579C3867A881", "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C"]], - // ONE INCH - ["0x1dcE26F543E591c27717e25294AEbbF59AD9f3a5", ["0x903bEF1736CDdf2A537176cf3C64579C3867A881", "0x111111111117dC0aa78b770fA6A738034120C302"]], - // BALANCER - ["0x58378f5F8Ca85144ebD8e1E5e2ad95B02D29d2BB", ["0x903bEF1736CDdf2A537176cf3C64579C3867A881", ADDRESSES.ethereum.WETH]] -] - -module.exports = { - methodology: "Tokens deposited to mint oneTokens excluding oneTokens , Vault deposits", - misrepresentedTokens: true, - doublecounted: true, -} // node test.js projects/ichifarm/index.js - -const defaultEvent = 'event ICHIVaultCreated (address indexed sender, address ichiVault, address tokenA, bool allowTokenA, address tokenB, bool allowTokenB, uint24 fee, uint256 count)' -const defaultTopic = '0xde147f43b6837f282eee187234c866cf001806167325f3ea883e36bed0c16a20' -const algebraEvent = 'event ICHIVaultCreated (address indexed sender, address ichiVault, address tokenA, bool allowTokenA, address tokenB, bool allowTokenB, uint256 count)' -const algebraTopic = '0xc40564e4b61a849e6f9fd666c2109aa6ceffc5a019f87d4d3e0eaaf807b0783e' - -const config = { - ethereum: { - vaultConfigs: [ - { factory: '0x5a40DFaF8C1115196A1CDF529F97122030F26112', fromBlock: 13671610, isAlgebra: false, }, - { factory: '0x8Dd50926e12BD71904bCCc6D86DFA55D42715094', fromBlock: 18754139, isAlgebra: false, }, //PancakeSwap - { factory: '0xEAeC81F0eD4F622D4b389672d9859166C0832b3E', fromBlock: 18870610, isAlgebra: false, }, //Blueprint - ], - oneFactory: '0xD0092632B9Ac5A7856664eeC1abb6E3403a6A36a', - }, - arbitrum: { - vaultConfigs: [ - { factory: '0xfBf38920cCbCFF7268Ad714ae5F9Fad6dF607065', fromBlock: 102858581, isAlgebra: false, }, - { factory: '0x0aC9e4a0423eec93357e2B0F83ef8c6469FD47F7', fromBlock: 254452080, isAlgebra: false, }, // Pancakeswap - { factory: '0xedAc86bc526557c422AB1F6BF848bF0da9fB44A6', fromBlock: 140300509, isAlgebra: false, }, // Ramses - { factory: '0x1Cc05B01f2e52ae3bb29F7A0059Fe112C60aA3f4', fromBlock: 147199960, isAlgebra: false, }, // Horiza - ], - }, - base: { - vaultConfigs: [ - { factory: '0xfBf38920cCbCFF7268Ad714ae5F9Fad6dF607065', fromBlock: 10607512, isAlgebra: false, }, // Equalizer - { factory: '0x51a0D74e1791399cE02aafD9a21dc4637Fe57959', fromBlock: 24832870, isAlgebra: true, }, // Henjin - { factory: '0x2b52c416F723F16e883E53f3f16435B51300280a', fromBlock: 24832870, isAlgebra: true, }, // Hydrex - { factory: '0x28cF3b462a1ADdE87fe7144d110BcF0D464C97b7', fromBlock: 22972345, isAlgebra: true, }, // Kim - { factory: '0x24430E837efB64EF87bb32be03437fc6005EEF74', fromBlock: 22095330, isAlgebra: false, }, // PancakeSwap - { factory: '0xbA096706A850caF1cADAEfE7529Db1343a0c187E', fromBlock: 25174764, isAlgebra: true, }, // Trebleswap - // { factory: '0xaBe5B5AC472Ead17B4B4CaC7fAF42430748ab3b3', fromBlock: 12978552, isAlgebra: false, }, // Uniswap - ] - }, - blast: { - vaultConfigs: [ - { factory: '0xb42D5956cDe4386B65C087CfCD16910aB6114F15', fromBlock: 2247439, isAlgebra: true, }, // Fenix - { factory: '0x9FAb4bdD4E05f5C023CCC85D2071b49791D7418F', fromBlock: 1630201, isAlgebra: false, }, // Uni v3 - ], - }, - bsc: { - vaultConfigs: [ - { factory: '0x131c03ca881B7cC66d7a5120A9273ebf675C241D', fromBlock: 29702590, isAlgebra: false, }, - { factory: '0xAc93148e93d1C49D89b1166BFd74942E80F5D501', fromBlock: 32489803, isAlgebra: true, }, // Thena - { factory: '0x076e46A317DfAE50eEF30dca94Ff41A63118948D', fromBlock: 48359303, isAlgebra: true, }, // Thena V3 - { factory: '0x065356d9f628cDd1bb9F2384E2972CdAC50f51b7', fromBlock: 34595133, isAlgebra: false, }, // Uni v3 - ], - }, - celo: { - vaultConfigs: [ - { factory: '0x9FAb4bdD4E05f5C023CCC85D2071b49791D7418F', fromBlock: 24256269, isAlgebra: false, }, // Uniswap v3 - { factory: '0x8D05f6870106707BaeCFCf5C0570DB7a583eb92A', fromBlock: 27821113, isAlgebra: false, }, // Ubeswap - ] - }, - eon: { - vaultConfigs: [ - { factory: '0x242cd12579467983dc521D8aC46EB13936ab65De', fromBlock: 638510, isAlgebra: false, }, // Ascent - ] - }, - era: { - vaultConfigs: [ - { factory: '0x8a76c26E0089111989C14EF56b9733aa38B94148', fromBlock: 20999423, isAlgebra: false, }, // zkSync Era - ] - }, - /* europa: { - vaultConfigs: [ - { factory: '0x1B0ef045830466171D617dD0F1142aD699A4Cd63', fromBlock: 5607229, isAlgebra: false, }, // Sushi - ] - }, */ - evmos: { - vaultConfigs: [ - { factory: '0x7c6389714719c68caac8ae06bae6e878b3605f6d', fromBlock: 19029984, isAlgebra: false, }, // Forge - ] - }, - fantom: { - vaultConfigs: [ - { factory: '0x932E1908461De58b0891E5022431dc995Cb95C5E', fromBlock: 74304207, isAlgebra: false, }, // Equalizer - { factory: '0x89FFdaa18b296d9F0CF02fBD88e5c633FEFA5f34', fromBlock: 79156621, isAlgebra: true, }, // Spiritswap - ] - }, - flare: { - vaultConfigs: [ - { factory: '0x85a4dd4ed356A7976a8302b1b690202d58583c55', fromBlock: 30879155, isAlgebra: false, }, // SparkDex - ] - }, - fuse: { - vaultConfigs: [ - { factory: '0xfBf38920cCbCFF7268Ad714ae5F9Fad6dF607065', fromBlock: 30026180, isAlgebra: false, }, // Voltage - ] - }, - hedera: { - vaultConfigs: [ - { factory: '0xb62399d23d1c81f08ea445a42d7f15cc12090a71', fromBlock: 59010832, isAlgebra: false, }, // Saucerswap - ] - }, - kava: { - vaultConfigs: [ - { factory: '0x2d2c72C4dC71AA32D64e5142e336741131A73fc0', fromBlock: 8864638, isAlgebra: false, }, // Kinetix - ] - }, - linea: { - vaultConfigs: [ - { factory: '0xb0e7871d53BE1b1d746bBfD9511e2eF3cD70a6E7', fromBlock: 4722347, isAlgebra: false, }, // Linehub - { factory: '0x0248b992ac2a75294b05286E9DD3A2bD3C9CFE4B', fromBlock: 1599561, isAlgebra: true, }, // Lynex - { factory: '0x2592686212C164C1851dF2f62c5d5EC50600195E', fromBlock: 4148753, isAlgebra: false, }, // Metavault - { factory: '0xa29F3D5403D50Ea1BF597E2Ef01791A1Ce4F544E', fromBlock: 5033991, isAlgebra: false, }, // Nile - { factory: '0x6E3eB904966B0158833852cAFD1200c171772b53', fromBlock: 3976012, isAlgebra: false, }, // Uniswap - ] - }, - mantle: { - vaultConfigs: [ - { factory: '0xbBB97d634460DACCA0d41E249510Bb741ef46ad3', fromBlock: 39366721, isAlgebra: false, }, // Cleo - { factory: '0x797ebB6A84367B0409094FEA0D10aC7516432433', fromBlock: 65385973, isAlgebra: false, }, // Crust - ] - }, - mode: { - vaultConfigs: [ - { factory: '0x9FAb4bdD4E05f5C023CCC85D2071b49791D7418F', fromBlock: 12395812, isAlgebra: true, }, // Kim - ] - }, - op_bnb: { - vaultConfigs: [ - { factory: '0xADDA3A15EA71c223a82Af86d4578EF2B076035F1', fromBlock: 13911597, isAlgebra: true, }, // Thena - ] - }, - polygon: { - vaultConfigs: [ - { factory: '0x2d2c72c4dc71aa32d64e5142e336741131a73fc0', fromBlock: 25697834, isAlgebra: false, }, - { factory: '0xb2f44D8545315cDd0bAaB4AC7233218b932a5dA7', fromBlock: 44370370, isAlgebra: false, }, // v2-retro - { factory: '0x11700544C577Cb543a498B27B4F0f7018BDb6E8a', fromBlock: 49227783, isAlgebra: true, }, // QuickSwap - ], - oneFactory: '0x101eB16BdbA37979a771c86e1CAAfbaDbABfc879', - }, - polygon_zkevm: { - vaultConfigs: [ - { factory: '0xe8532Db60408f2d47693dA5b9093D71580B8C23F', fromBlock: 10890417, isAlgebra: false, }, // PancakeSwap - { factory: '0x1721cB3ff3cAF70a79bDE9d771B27646ed8115b1', fromBlock: 11102475, isAlgebra: true, }, // QuickSwap - ] - }, - nibiru: { - vaultConfigs: [ - { factory: '0x63703A4DdFA51B6CffC1Bb40cc73912dF62535FA', fromBlock: 24151937, isAlgebra: false, }, // Uniswap - ] - }, - // real: { - // vaultConfigs: [ - // { factory: '0x860F3881aCBbF05D48a324C5b8ca9004D31A146C', fromBlock: 599247, isAlgebra: false, }, // Pearl - // ] - // }, - rsk: { - vaultConfigs: [ - { factory: '0x8cCd02E769e6A668a447Bd15e134C31bEccd8182', fromBlock: 6753128, isAlgebra: false, }, // Uniswap - ] - }, - scroll: { - vaultConfigs: [ - { factory: '0xb42D5956cDe4386B65C087CfCD16910aB6114F15', fromBlock: 5264782, isAlgebra: false, }, // Metavault - { factory: '0x9FAb4bdD4E05f5C023CCC85D2071b49791D7418F', fromBlock: 4728729, isAlgebra: false, }, // Uniswap - ] - }, - sonic: { - vaultConfigs: [ - { factory: '0x7D18F2D60E4fd6F485419727515807d09A542eb9', fromBlock: 1971740, isAlgebra: false, }, // Equalizer - { factory: '0x34513e8A327987Bb44acF5A925a7f3b4092d8b5F', fromBlock: 1476044, isAlgebra: true, }, // SwapX - ] - }, - taiko: { - vaultConfigs: [ - { factory: '0x9FAb4bdD4E05f5C023CCC85D2071b49791D7418F', fromBlock: 11578, isAlgebra: true, }, // Henjin - ] - }, - zircuit: { - vaultConfigs: [ - { factory: '0x1A58D4CFF22C7E2e0c4cCf4a0010b87822d024A1', fromBlock: 5104000, isAlgebra: true, }, // Ocelex - ] - }, - hemi: { - vaultConfigs: [ - { factory: '0x8cCd02E769e6A668a447Bd15e134C31bEccd8182', fromBlock: 1684964, isAlgebra: false, }, // OKU - ], - }, -} - -Object.keys(config).forEach(chain => { - const { vaultConfigs = [], oneFactory } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const blacklistedTokens = [] - if (oneFactory) { - const oneTokens = await api.fetchList({ lengthAbi: abi.oneTokenCount, itemAbi: abi.oneTokenAtIndex, target: oneFactory }) - const oneTokenOwners = await api.multiCall({ abi: abi.owner, calls: oneTokens }) - const foreignTokens = await api.fetchList({ lengthAbi: abi.foreignTokenCount, itemAbi: abi.foreignTokenAtIndex, target: oneFactory }) - const modulesList = await api.fetchList({ lengthAbi: abi.moduleCount, itemAbi: abi.moduleAtIndex, target: oneFactory }) - const moduleDetails = await api.multiCall({ abi: abi.modules, calls: modulesList, target: oneFactory }) - - const strategiesList = [] - moduleDetails.forEach((data, i) => { - if (data.moduleType == 2) { //modeuleType 2 are strategies - strategiesList.push(modulesList[i]) - } - }) - if (api.chain === 'polygon') { - foreignTokens.push(ichi) - } - - blacklistedTokens.push(...oneTokens.map(i => i.toLowerCase())) - await sumTokens2({ api, tokens: foreignTokens, owners: [oneTokens, strategiesList].flat(), blacklistedTokens }) - const uniV3NFTHolders = [...strategiesList, ...oneTokenOwners] - - await sumTokens2({ api, owners: uniV3NFTHolders, resolveUniV3: true, blacklistedTokens, }) - } - - for (const { factory, fromBlock, isAlgebra } of vaultConfigs) { - const topic = isAlgebra ? algebraTopic : defaultTopic - const eventAbi = isAlgebra ? algebraEvent : defaultEvent - const logs = await getLogs({ api, target: factory, topics: [topic], eventAbi, onlyArgs: true, fromBlock }) - - let vaultBalances = [] - const calls = logs.map(l => l.ichiVault) - - if (api.chain === 'hedera') { - for (let i = 0; i < calls.length; i += 10) { - const batch = calls.slice(i, i + 10) - const res = await api.multiCall({ abi: abi.getTotalAmounts, calls: batch, permitFailure: true }) - vaultBalances.push(...res) - } - } else vaultBalances = await api.multiCall({ abi: abi.getTotalAmounts, calls, permitFailure: true }) - - vaultBalances.forEach((b, i) => { - if (!b) return - const { tokenA, tokenB } = logs[i] - if (!blacklistedTokens.includes(tokenA.toLowerCase())) api.add(tokenA, b.total0) - if (!blacklistedTokens.includes(tokenB.toLowerCase())) api.add(tokenB, b.total1) - }) - } - - return api.getBalances() - } - } -}) - -module.exports.ethereum.pool2 = async (_, block) => { - const toa = [ - ['0x9cd028b1287803250b1e226f0180eb725428d069', farmContract], - ['0xd07d430db20d2d7e0c4c11759256adbcc355b20c', farmContract], - ] - poolWithTokens.forEach(([o, tokens]) => tokens.forEach(t => toa.push([t, o]))) - return sumTokens2({ tokensAndOwners: toa, block, }) -} - -module.exports.ethereum.staking = stakings([xIchi, ichiLending], ichiLegacy) diff --git a/projects/icpex/index.js b/projects/icpex/index.js deleted file mode 100644 index 91340577e15..00000000000 --- a/projects/icpex/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const axios = require('axios') - -const url = 'https://stat.icpex.org/durable/api/pair/query/all/metadata' - -const tvl = async (api) => { - const { data } = await axios.get(url) - data.data.forEach(({ locked }) => { - const { total_usd } = locked - if (!total_usd) return - api.addUSDValue(total_usd) - }) -} - -module.exports = { - misrepresentedTokens: true, - icp: { tvl }, -} \ No newline at end of file diff --git a/projects/icpswap/index.js b/projects/icpswap/index.js deleted file mode 100644 index 291c1d488ac..00000000000 --- a/projects/icpswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ - -const { get } = require('../helper/http') - -module.exports = { - misrepresentedTokens: true, - icp: { tvl }, -} - -async function tvl(api) { - let { tvlUSD } = await get('https://uvevg-iyaaa-aaaak-ac27q-cai.raw.ic0.app/overview') - api.addCGToken('tether', Math.round(tvlUSD)) -} diff --git a/projects/ideamarket/index.js b/projects/ideamarket/index.js deleted file mode 100644 index 8a8ec1f1818..00000000000 --- a/projects/ideamarket/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const stateContract = "0x4e908F706f8935f10C101Ea3D7B2DEfc78df284e" - -async function tvl(api) { - const bals = await api.call({ abi: 'uint256:getTotalDaiReserves', target: stateContract }) - api.add(ADDRESSES.arbitrum.DAI, bals) -} - -module.exports = { - arbitrum: { - tvl - } -} \ No newline at end of file diff --git a/projects/idex-v1/index.js b/projects/idex-v1/index.js deleted file mode 100644 index 6763f7296ab..00000000000 --- a/projects/idex-v1/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - tokens:[nullAddress], - owners: ["0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208"] - }) - } -} \ No newline at end of file diff --git a/projects/idex-v4/index.js b/projects/idex-v4/index.js deleted file mode 100644 index 5d7cd4f8487..00000000000 --- a/projects/idex-v4/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - idex: { - tvl: sumTokensExport({ owners: ['0xF0b08bd86f8479a96B78CfACeb619cfFeCc5FBb5', '0xEE5eB68fa8D213BF12Ed9C21B9d4a04912E569aC'], tokens: [ADDRESSES.rari.USDC_e, '0xD56768A659D4c7e2a0a18b6D96F1f74Ce3566b97',] }), - } -} \ No newline at end of file diff --git a/projects/idex/index.js b/projects/idex/index.js deleted file mode 100644 index c42ef4924e2..00000000000 --- a/projects/idex/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs") -const { getConfig } = require('../helper/cache') -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - ethereum: { custodian: '0xE5c405C5578d84c5231D3a9a29Ef4374423fA0c2', exchange: '0xa36972e347e538e6c7afb9f44fb10dda7bba9ba2', fromBlock: 11068675 }, - bsc: { custodian: '0xC88c5b8951dD877aFE5558A48450d0eF18121283', exchange: '0x8C788aA08A98002413F6350C29c017aefb2c08C7', fromBlock: 4192829 }, - polygon: { - custodian: '0x3bcc4eca0a40358558ca8d1bcd2d1dbde63eb468', exchange: '0x3253A7e75539EdaEb1Db608ce6Ef9AA1ac9126B6', fromBlock: 21258769, }, -} - -Object.keys(config).forEach(chain => { - const { exchange, custodian, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, target: exchange, eventAbi: "event TokenRegistered(address indexed assetAddress, string assetSymbol, uint8 decimals)", fromBlock, onlyUseExistingCache: true, }) - const tokens = logs.map(log => log.assetAddress) - tokens.push(nullAddress) - if (api.chain === 'polygon') { - const assets = await getConfig('idex/polygon', 'https://api-matic.idex.io/v1/assets') - assets.forEach(t => tokens.push(t.contractAddress)) - } - return sumTokens2({ api, tokens, owner: custodian }) - } - } -}) diff --git a/projects/idle/index.js b/projects/idle/index.js deleted file mode 100644 index 3bf6f549226..00000000000 --- a/projects/idle/index.js +++ /dev/null @@ -1,264 +0,0 @@ -const sdk = require('@defillama/sdk') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { eulerTokens } = require('../helper/tokenMapping') -const { getLogs } = require('../helper/cache/getLogs') -const BigNumber = require("bignumber.js"); - -const contracts = { - ethereum: { - wrap4626: [ - '0xcf96f4b91c6d424fb34aa9a33855b5c8ed1fe66d', - '0x79F05f75df6c156B2B98aC1FBfb3637fc1e6f048', - '0xa35B7A9fe5DC4cD51bA47ACdf67B0f41c893329A', - '0xA9F908DA2E3Ec7475a743e97Bb5B06081B688aE4' - ], - v1: [ - '0xC8E6CA6E96a326dC448307A5fDE90a0b21fd7f80', // idleWETHYield - '0x5C960a3DCC01BE8a0f49c02A8ceBCAcf5D07fABe', // idleRAIYield - '0xb2d5CB72A621493fe83C6885E4A776279be595bC', // idleFEIYield - '0x3fe7940616e5bc47b0775a0dccf6237893353bb4', // idleDAIYield - '0x5274891bEC421B39D23760c04A6755eCB444797C', // idleUSDCYield - '0xF34842d05A1c888Ca02769A633DF37177415C2f8', // idleUSDTYield - '0xf52cdcd458bf455aed77751743180ec4a595fd3f', // idleSUSDYield - '0xc278041fDD8249FE4c1Aad1193876857EEa3D68c', // idleTUSDYield - '0x8C81121B15197fA0eEaEE1DC75533419DcfD3151', // idleWBTCYield - '0xDc7777C771a6e4B3A82830781bDDe4DBC78f320e', // idleUSDCBB - '0xfa3AfC9a194BaBD56e743fA3b7aA2CcbED3eAaad' // idleUSDTBB - ], - v3: [ - '0x78751b12da02728f467a44eac40f5cbc16bd7934', // idleDAIYieldV3 - '0x12B98C621E8754Ae70d0fDbBC73D6208bC3e3cA6', // idleUSDCYieldV3 - '0x63D27B3DA94A9E871222CB0A32232674B02D2f2D', // idleUSDTYieldV3 - '0xe79e177d2a5c7085027d7c64c8f271c81430fc9b', // idleSUSDYieldV3 - '0x51C77689A9c2e8cCBEcD4eC9770a1fA5fA83EeF1', // idleTUSDYieldV3 - '0xD6f279B7ccBCD70F8be439d25B9Df93AEb60eC55', // idleWBTCYieldV3 - '0x1846bdfDB6A0f5c473dEc610144513bd071999fB', // idleDAISafeV3 - '0xcDdB1Bceb7a1979C6caa0229820707429dd3Ec6C', // idleUSDCSafeV3 - '0x42740698959761baf1b06baa51efbd88cb1d862b', // idleUSDTSafeV3 - ], - safe: [ - '0x28fAc5334C9f7262b3A3Fe707e250E01053e07b5', // idleUSDTSafe - '0x3391bc034f2935ef0e1e41619445f998b2680d35', // idleUSDCSafe - '0xa14ea0e11121e6e951e87c66afe460a00bcd6a16', // idleDAISafe - ], - cdos: [ - "0xF87ec7e1Ee467d7d78862089B92dd40497cBa5B8", // MATIC - "0xDcE26B2c78609b983cF91cCcD43E238353653b0E", // IdleCDO_clearpool_DAI - "0xd0DbcD556cA22d3f3c142e9a3220053FD7a247BC", - "0x1f5A97fB665e295303D2F7215bA2160cc5313c8E", // - "0x8E0A8A5c1e5B3ac0670Ea5a613bB15724D51Fc37", // Instadapp stETH - "0xf6223C567F21E33e859ED7A045773526E9E3c2D5", // Fasanara Yield vault - ], - credits: [ - "0xf6223C567F21E33e859ED7A045773526E9E3c2D5", // Fasanara Yield vault - ] - }, - polygon: { - v1: [ - "0x8a999F5A3546F8243205b2c0eCb0627cC10003ab", // idleDAIYield - "0x1ee6470CD75D5686d0b2b90C0305Fa46fb0C89A1", // idleUSDCYield - "0xfdA25D931258Df948ffecb66b5518299Df6527C4" // idleWETHYield - ], - cdos: [ - '0xF9E2AE779a7d25cDe46FccC41a27B8A4381d4e52' // Bastion CV - ], - credits: [ - '0xF9E2AE779a7d25cDe46FccC41a27B8A4381d4e52' // Bastion CV - ] - }, - polygon_zkevm: { - cdos: [ - "0x6b8A1e78Ac707F9b0b5eB4f34B02D9af84D2b689" // IdleCDO_clearpool_portofino_USDT - ] - }, - optimism: { - cdos: [ - "0xD2c0D848aA5AD1a4C12bE89e713E70B73211989B", // FalconX - ], - credits: [ - "0xD2c0D848aA5AD1a4C12bE89e713E70B73211989B", // FalconX - ] - }, - arbitrum: { - cdos: [ - "0x3919396Cd445b03E6Bb62995A7a4CB2AC544245D" // Bastion Credit Vault - ], - credits: [ - "0x3919396Cd445b03E6Bb62995A7a4CB2AC544245D" // Bastion Credit Vault - ] - } -} - -const trancheConfig = { - ethereum: { - factory: '0x3c9916bb9498f637e2fa86c2028e26275dc9a631', - fromBlock: 13244388, - }, - polygon_zkevm: { - factory: '0xba43DE746840eD16eE53D26af0675d8E6c24FE38', - fromBlock: 2812767, - }, - optimism: { - factory: '0x8aA1379e46A8C1e9B7BB2160254813316b5F35B8', - fromBlock: 110449062, - } -} - -async function tvl(api) { - const { v1 = [], v3 = [], safe = [], cdos = [], wrap4626 = [], credits = [] } = contracts[api.chain] - const balances = {} - const ownerTokens = [] - - const [ - totalSupplyV1, - totalSupplyV3, - totalSupplySafe, - tokenPriceV1, - tokenPriceV3, - tokenPriceSafe, - tokenV1, - tokenV3, - tokenSafe, - ] = await Promise.all([ - api.multiCall({ abi: 'uint256:totalSupply', calls: v1 }), - api.multiCall({ abi: 'uint256:totalSupply', calls: v3 }), - api.multiCall({ abi: 'uint256:totalSupply', calls: safe }), - api.multiCall({ abi: 'uint256:tokenPrice', calls: v1 }), - api.multiCall({ abi: 'uint256:tokenPrice', calls: v3 }), - api.multiCall({ abi: 'uint256:tokenPrice', calls: safe }), - api.multiCall({ abi: 'address:token', calls: v1 }), - api.multiCall({ abi: 'address:token', calls: v3 }), - api.multiCall({ abi: 'address:token', calls: safe }), - ]) - - // Load tokens decimals - const callsDecimals = [...tokenV1, ...tokenV3, ...tokenSafe].map( t => ({ target: t, params: [] }) ) - const decimalsResults = await api.multiCall({abi: 'erc20:decimals', calls: callsDecimals}) - const tokensDecimals = decimalsResults.reduce( (tokensDecimals, decimals, i) => { - const call = callsDecimals[i] - tokensDecimals[call.target] = decimals - return tokensDecimals - }, {}) - - totalSupplyV1.map( (supply, i) => { - const token = tokenV1[i] - const tokenPrice = tokenPriceV1[i] - const vaultTVL = BigNumber(supply).times(tokenPrice).div(1e18).toFixed(0) - sdk.util.sumSingleBalance(balances, token, vaultTVL, api.chain) - }) - - totalSupplyV3.map( (supply, i) => { - const token = tokenV3[i] - const tokenPrice = tokenPriceV3[i] - const vaultTVL = BigNumber(supply).times(tokenPrice).div(1e18).toFixed(0) - sdk.util.sumSingleBalance(balances, token, vaultTVL, api.chain) - }) - - totalSupplySafe.map( (supply, i) => { - const token = tokenSafe[i] - const tokenPrice = tokenPriceSafe[i] - const vaultTVL = BigNumber(supply).times(tokenPrice).div(1e18).toFixed(0) - sdk.util.sumSingleBalance(balances, token, vaultTVL, api.chain) - }) - - const trancheTokensMapping = {} - const blacklistedTokens = [...eulerTokens] - - const { factory, fromBlock } = trancheConfig[api.chain] ?? {} - if (factory) { - const logs = await getLogs({ - api, - target: factory, - topics: ['0xcfed305fd6d1aebca7d8ef4978868c2fe10910ee8dd94c3be048a9591f37429f'], - eventAbi: 'event CDODeployed(address proxy)', - onlyArgs: true, - fromBlock, - }) - cdos.push(...logs.map(i => i.proxy)) - } - - const [wrap4626Supplies, wrap4626Tokens] = await Promise.all(['uint256:totalSupply', 'address:token'].map( abi => api.multiCall({ abi, calls: wrap4626 }) )) - - const wrap6426Assets = await Promise.all(wrap4626Supplies.map( (supply, i) => api.call({ abi: 'function convertToAssets(uint256 shares) external view returns (uint256 assets)', target: wrap4626[i], params: [supply] }) )) - - wrap6426Assets.map( (value, i) => sdk.util.sumSingleBalance(balances, wrap4626Tokens[i], value, api.chain) ) - - const [ - cdoToken, - aatrances, - bbtrances, - aaprices, - bbprices, - ] = await Promise.all([ - "address:token", - "address:AATranche", - "address:BBTranche", - "uint256:priceAA", - "uint256:priceBB" - ].map(abi => api.multiCall({ abi, calls: cdos }))) - - blacklistedTokens.push(...cdos) - blacklistedTokens.push(...aatrances) - blacklistedTokens.push(...bbtrances) - - const [creditsStrategies, creditsTokens] = await Promise.all(['address:strategy', 'address:token'].map( abi => api.multiCall({ abi, calls: credits }))) - - // Get CDOs contract values - const [ - contractValue, - pendingWithdraws, - pendingInstantWithdraws - ] = await Promise.all([ - api.multiCall({ abi: 'uint256:getContractValue', calls: cdos }), - api.multiCall({ abi: 'uint256:pendingWithdraws', calls: creditsStrategies }), - api.multiCall({ abi: 'uint256:pendingInstantWithdraws', calls: creditsStrategies }), - ]) - - // Count pending withdraws - pendingWithdraws.map( (amount, i) => sdk.util.sumSingleBalance(balances, creditsTokens[i], amount, api.chain)) - pendingInstantWithdraws.map( (amount, i) => sdk.util.sumSingleBalance(balances, creditsTokens[i], amount, api.chain)) - - cdoToken.forEach((token, i) => { - const tokenDecimals = tokensDecimals[token] || 18 - trancheTokensMapping[aatrances[i]] = { - token, - decimals: tokenDecimals, - price: BigNumber(aaprices[i]).div(`1e${tokenDecimals}`).toFixed() - } - trancheTokensMapping[bbtrances[i]] = { - token, - decimals: tokenDecimals, - price: BigNumber(bbprices[i]).div(`1e${tokenDecimals}`).toFixed() - } - - // Get CDOs underlying tokens balances - sdk.util.sumSingleBalance(balances, token, contractValue[i], api.chain) - }) - - const trancheTokensBalancesCalls = [] - - // Process tranche tokens BY balances - if (trancheTokensBalancesCalls.length){ - const trancheTokensBalancesResults = await api.multiCall({ abi: 'erc20:balanceOf', calls: trancheTokensBalancesCalls }) - trancheTokensBalancesResults.forEach( (trancheTokenBalance, i) => { - const trancheToken = trancheTokensBalancesCalls[i].target - const decimals = trancheTokensMapping[trancheToken].decimals - const trancheTokenPrice = trancheTokensMapping[trancheToken].price || 1 - const underlyingToken = trancheTokensMapping[trancheToken].token - const underlyingTokenBalance = BigNumber(trancheTokenBalance || 0).times(trancheTokenPrice).div(`1e18`).times(`1e${decimals}`).toFixed(0) - balances[underlyingToken] = BigNumber(balances[underlyingToken] || 0).plus(underlyingTokenBalance) - }) - } - - return sumTokens2({ api, balances, ownerTokens, blacklistedTokens, }) -} - -module.exports = { - hallmarks: [ - ['2023-03-13', 'Euler was hacked'], - ], -}; - -Object.keys(contracts).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/ifpool/index.js b/projects/ifpool/index.js deleted file mode 100644 index bc1ef673ea1..00000000000 --- a/projects/ifpool/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const validatorContract = ADDRESSES.findora.FRA; -const validatorAddress = "0xb0dC7A676Ab09868eBef78E16e6AEA9e79F0f9Cf"; - -async function coinexTVL(api) { - const validatorInfo = await api.call({ - target: validatorContract, - abi: 'function getValidatorInfo(address validator) view returns (address, uint8, uint256, uint256, uint256, uint256, address[])', - params: [validatorAddress], - }); - api.add(ADDRESSES.findora.WCET, validatorInfo[2]) -} - -module.exports = { - methodology: "Counts staked CET tokens.", - timetravel: false, - csc: { - tvl: coinexTVL, - }, -}; diff --git a/projects/ifswap/index.js b/projects/ifswap/index.js deleted file mode 100644 index 2a04cfdf12d..00000000000 --- a/projects/ifswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require("../helper/staking"); - -const IFS = "0x6925435f9D1CB710abeb680Ec7EF3f8C5E1B2639"; -const FACTORY = "0x44b7864D360BFf7879402E3B860aF47e6e371208"; -const MASTERCHEF = "0xB9C8c5Bf667310a33D4CB675e2f20c7542d8B3B3"; - -module.exports = { - misrepresentedTokens: true, - methodology: - "We count liquidity of all paris through Factory Contract and Pools (single tokens) seccions through MasterChef Contract.", - csc: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }), - // staking: staking(MASTERCHEF, IFS,), - }, -}; diff --git a/projects/ignite-finance/abi.json b/projects/ignite-finance/abi.json deleted file mode 100644 index 33ee85858cd..00000000000 --- a/projects/ignite-finance/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "markdown": "function markdown(address _pair) view returns (uint256)", - "valuation": "function valuation(address _pair, uint256 amount_) view returns (uint256 _value)", - "getCurrentPool": "function getCurrentPool() view returns (uint256, uint256)", - "circulatingSupply": "uint256:circulatingSupply" -} \ No newline at end of file diff --git a/projects/ignite-finance/index.js b/projects/ignite-finance/index.js deleted file mode 100644 index accef28a456..00000000000 --- a/projects/ignite-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - klaytn: { - tvl: async () => ({}), - staking: async () => ({}), - }, - deadFrom: '2022-12-04', - methodology: "Counts tokens on the staking for tvl", -}; diff --git a/projects/iguana-stableswap/index.js b/projects/iguana-stableswap/index.js deleted file mode 100644 index 5e4a401e609..00000000000 --- a/projects/iguana-stableswap/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const factories = [{ target: '0x8676553F78fE2bC2321d4e87E7B825Bb092ED7c8', fromBlock: 16406948, token3: true, },] - -module.exports.etlk = { tvl: async (api) => { - const configs = await Promise.all(factories.map(getTvlConfig)) - return sumTokens2({ api, ownerTokens: configs.flat() }) - - async function getTvlConfig({ target, fromBlock, token3 }) { - let topic = '0xa9551fb056fc743efe2a0a34e39f9769ad10166520df7843c09a66f82e148b97' - let eventAbi = 'event NewStableSwapPair(address indexed swapContract, address indexed tokenA, address indexed tokenB)' - let getOwnTokens = logs => logs.map(i => ([[i.tokenA, i.tokenB], i.swapContract])) - if (token3) { - topic = '0x48dc7a1b156fe3e70ed5ed0afcb307661905edf536f15bb5786e327ea1933532' - eventAbi = 'event NewStableSwapPair(address indexed swapContract, address tokenA, address tokenB, address tokenC, address LP)' - getOwnTokens = logs => logs.map(i => ([[i.tokenA, i.tokenB, i.tokenC], i.swapContract])) - } - - const logs = await getLogs({ - api, - target, - topics: [topic], - fromBlock, - eventAbi, - onlyArgs: true, - }) - - return getOwnTokens(logs) - } -} } \ No newline at end of file diff --git a/projects/iguana-v2/index.js b/projects/iguana-v2/index.js deleted file mode 100644 index 15546e8e6d4..00000000000 --- a/projects/iguana-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'etlk': '0x3eebf549D2d8839E387B63796327eE2C8f64A0C4' -}) \ No newline at end of file diff --git a/projects/iguana-v3/index.js b/projects/iguana-v3/index.js deleted file mode 100644 index 7c5a9ab7d89..00000000000 --- a/projects/iguana-v3/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3GraphExport } = require("../helper/uniswapV3"); - - -module.exports.etlk = { tvl: uniV3GraphExport({ name: 'iguana-etlk', graphURL: 'https://api.studio.thegraph.com/query/86688/exchange-v3-etherlink/version/latest' }) } \ No newline at end of file diff --git a/projects/ilend/index.js b/projects/ilend/index.js deleted file mode 100644 index 05f16be0171..00000000000 --- a/projects/ilend/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') -const ILendPoolContractAddress = "inj1xjkfkfgjg60gh3duf5hyk3vfsluyurjljznwgu"; - -async function tvl(api) { - const config = { chain: api.chain, contract: ILendPoolContractAddress } - - const { supported_tokens: tokens } = await queryContract({ ...config, data: { get_supported_tokens: {} } }) - await Promise.all(tokens.map(async ({ denom }) => { - const bal = await queryContract({ ...config, data: { get_available_liquidity_by_token: { denom } }, }) - api.add(denom, bal) - })) - - return api.getBalances() -} - - -async function borrowed(api) { - const config = { chain: api.chain, contract: ILendPoolContractAddress } - const { supported_tokens: tokens } = await queryContract({ ...config, data: { get_supported_tokens: {} } }) - await Promise.all(tokens.map(async ({ denom }) => { - const bal = await queryContract({ ...config, data: { get_total_borrowed_by_token: { denom } }, }) - api.add(denom, bal) - })) - - return api.getBalances() -} - -module.exports = { - methodology: - "Counts the collateral balance of various tokens in the iLend pool on the Injective chain.", - injective: { - tvl, borrowed, - } -}; diff --git a/projects/ilend_v2/index.js b/projects/ilend_v2/index.js deleted file mode 100644 index 51669b7e2a5..00000000000 --- a/projects/ilend_v2/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') -const ILendPoolContractAddress = "inj1j8pkx3dwsmtgg76shj9jaezxu6v0vj7lpl3dx0"; - -async function tvl(api) { - const config = { chain: api.chain, contract: ILendPoolContractAddress } - - const { supported_tokens: tokens } = await queryContract({ ...config, data: { get_supported_tokens: {} } }) - await Promise.all(tokens.map(async ({ denom }) => { - const bal = await queryContract({ ...config, data: { get_available_liquidity_by_token: { denom } }, }) - api.add(denom, bal) - })) - - return api.getBalances() -} - - -async function borrowed(api) { - const config = { chain: api.chain, contract: ILendPoolContractAddress } - const { supported_tokens: tokens } = await queryContract({ ...config, data: { get_supported_tokens: {} } }) - await Promise.all(tokens.map(async ({ denom }) => { - const bal = await queryContract({ ...config, data: { get_total_borrowed_by_token: { denom } }, }) - api.add(denom, bal) - })) - - return api.getBalances() -} - -module.exports = { - methodology: - "Counts the collateral balance of various tokens in the iLend pool on the Injective chain.", - injective: { - tvl, borrowed, - } -}; diff --git a/projects/illuminate-fi/index.js b/projects/illuminate-fi/index.js deleted file mode 100644 index 7e88295f08d..00000000000 --- a/projects/illuminate-fi/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const market = '0xcd1d02fda51cd24123e857ce94e4356d5c073b3f' - const createMarketLogs = await getLogs({ - api, - target: market, - topics: ['0xb02abdc1b2e46d6aa310c4e8bcab63f9ec42f82c0bba87fefe442f2b21d60871'], - eventAbi: 'event CreateMarket (address indexed underlying, uint256 indexed maturity, address[9] tokens, address element, address apwine)', - onlyArgs: true, - fromBlock: 16973041, - }) - const calls = createMarketLogs.map(i => ({ params: [i.underlying, Number(i.maturity)] })) - const pools = await api.multiCall({ abi: 'function pools(address, uint256) view returns (address)', calls, target: market }) - - // Get the TVL of the base (using the shares token balance) - this counts the amount of base tokens locked in the AMM - const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: pools }) - const sharesTokens = await api.multiCall({ abi: 'address:sharesToken', calls: pools }) - const ownerTokens = pools.map((v, i) => [[baseTokens[i], sharesTokens[i]], v]) - await sumTokens2({ api, ownerTokens, }) - - // Get the TVL of the PTs - this counts the value of the iPTs lent out - const principalTokens = await api.multiCall({ abi: 'address:fyToken', calls: pools }) - const principalTokenDecimals = await api.multiCall({ abi: 'uint256:decimals', calls: pools }) - const oneCalls = principalTokenDecimals.map((v, i) => ({ params: 10 ** v, target: pools[i] })) - let principalTokenPrices = await api.multiCall({ abi: 'function sellFYTokenPreview(uint128) view returns (uint128)', calls: oneCalls, permitFailure: true }) - let i = 0 - for (const pt of principalTokenPrices) { - if (!pt) { - principalTokenPrices[i] = await api.call({ abi: 'function unwrapPreview(uint256) view returns (uint256)', ...oneCalls[i] }) - } - i++ - } - const principalTokenSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: principalTokens }) - - principalTokenSupplies.forEach((supply, i) => api.add(baseTokens[i], supply * +principalTokenPrices[i] / 10 ** principalTokenDecimals[i])) -} - -module.exports = { - doublecounted: true, - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/illuminex/index.js b/projects/illuminex/index.js deleted file mode 100644 index 33f62411553..00000000000 --- a/projects/illuminex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { stakingPricedLP } = require("../helper/staking"); - -const stakingFarmingContractAddress = "0x494847e173D6CE28b6eF7a5596df6Bc7830175e1"; -const ixToken = "0x08Fe02Da45720f754e6FCA338eC1286e860d2d2f"; - -module.exports = { - methodology: "Counts liquidity on illumineX Exchange, as well as IX token single staking together with liquidity mining locked LP", - misrepresentedTokens: true, - start: '2024-01-28', - sapphire: { - tvl: getUniTVL({ factory: '0x045551B6A4066db850A1160B8bB7bD9Ce3A2B5A5', useDefaultCoreAssets: true,}), - staking: stakingPricedLP(stakingFarmingContractAddress, ixToken, "sapphire", "0xf0f7c4e8edb9edcbe200a4eaec384e8a48fc7815", "oasis-network", true), - } -} \ No newline at end of file diff --git a/projects/illuvium/index.js b/projects/illuvium/index.js deleted file mode 100644 index 7a7cdfb72aa..00000000000 --- a/projects/illuvium/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { staking } = require("../helper/staking") - -const ILV_POOL_V2_ADDRESS = "0x7f5f854FfB6b7701540a00C69c4AB2De2B34291D" -const ILV_TOKEN_ADDRESS = "0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E" -const SLP_TOKEN_ADDRESS = "0x6a091a3406E0073C3CD6340122143009aDac0EDa" -const LP_POOL_V1_ADDRESS = "0x8B4d8443a0229349A9892D4F7CbE89eF5f843F72" -const LP_POOL_V2_ADDRESS = "0xe98477bDc16126bB0877c6e3882e3Edd72571Cc2" - -async function ilvStaking(api) { - const ilvPoolTvl = await api.call({ - abi: "function getTotalReserves() view returns (uint256 totalReserves)", - target: ILV_POOL_V2_ADDRESS, - }) - - return { - [ILV_TOKEN_ADDRESS]: ilvPoolTvl, - } -} - -module.exports = { - methodology: `Based on ILV reserves in the ILVPool contract and SLP in SushiLPPool contracts.`, - ethereum:{ - tvl: () => 0, - pool2: staking([LP_POOL_V1_ADDRESS, LP_POOL_V2_ADDRESS], SLP_TOKEN_ADDRESS), - staking: ilvStaking, - }, -} \ No newline at end of file diff --git a/projects/iloop/iloop_sc_mainnet.json b/projects/iloop/iloop_sc_mainnet.json deleted file mode 100644 index 30200dbf2c9..00000000000 --- a/projects/iloop/iloop_sc_mainnet.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "address": "3i8rGP3ex8cjs7YYWrQeE4nWizuaStsVNUXpRGtMbs3H", - "metadata": { - "name": "iloop_sc", - "version": "0.1.0", - "spec": "0.1.0", - "description": "Created with Anchor" - }, - "instructions": [], - "accounts": [ - { - "name": "Reserve", - "discriminator": [ - 43, - 242, - 204, - 202, - 26, - 247, - 59, - 127 - ] - } - ], - "events": [], - "errors": [], - "types": [ - { - "name": "Reserve", - "serialization": "bytemuck", - "repr": { - "kind": "c" - }, - "type": { - "kind": "struct", - "fields": [ - { - "name": "lending_market", - "type": "pubkey" - }, - { - "name": "liquidity_mint", - "type": "pubkey" - }, - { - "name": "liquidity_supply", - "type": "pubkey" - }, - { - "name": "liquidity_supply_amount", - "type": "u64" - }, - { - "name": "liquidity_price", - "type": "u64" - }, - { - "name": "liquidity_price_account", - "type": "pubkey" - }, - { - "name": "liquidity_price_max_age_price_seconds", - "type": "u64" - }, - { - "name": "liquidity_price_updated_at", - "type": "u64" - }, - { - "name": "collateral_mint", - "type": "pubkey" - }, - { - "name": "collateral_supply", - "type": "pubkey" - }, - { - "name": "collateral_supply_amount", - "type": "u64" - }, - { - "name": "borrow_rate", - "type": "u64" - }, - { - "name": "deposit_rate", - "type": "u64" - }, - { - "name": "borrow_enabled", - "type": "u64" - }, - { - "name": "borrowed_amount", - "type": "u64" - }, - { - "name": "borrowed_collateral_amount", - "type": "u64" - }, - { - "name": "max_withdraw_per_day", - "type": "u64" - }, - { - "name": "withdrew_today", - "type": "u64" - }, - { - "name": "last_withdrew_at", - "type": "i64" - }, - { - "name": "margin_rate", - "type": "u64" - }, - { - "name": "optimal_utilization_rate_1", - "type": "u64" - }, - { - "name": "optimal_utilization_rate_2", - "type": "u64" - }, - { - "name": "max_borrow_rate", - "type": "u64" - }, - { - "name": "reserve_factor", - "type": "u64" - }, - { - "name": "max_multiply", - "type": "u64" - }, - { - "name": "max_supply", - "type": "u64" - }, - { - "name": "liquidation_threshold", - "type": "u64" - }, - { - "name": "liquidation_penalty", - "type": "u64" - }, - { - "name": "flash_loan_enabled", - "type": "u64" - }, - { - "name": "utilization_cap", - "type": "u64" - }, - { - "name": "apy", - "type": "u64" - }, - { - "name": "updated_at", - "type": "i64" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/iloop/index.js b/projects/iloop/index.js deleted file mode 100644 index 64523d8dc88..00000000000 --- a/projects/iloop/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { Program, } = require('@coral-xyz/anchor'); -const iloopIdl = require('./iloop_sc_mainnet.json'); -const { sumTokens2, getProvider } = require("../helper/solana"); - -async function tvl() { - const provider = getProvider(); - const iloopProgram = new Program(iloopIdl, provider); - const reserves = await iloopProgram.account.reserve.all(); - const tokenAccounts = reserves.map(({ account }) => account.liquiditySupply.toBase58()); - return sumTokens2({ tokenAccounts }) -} -async function borrowed(api) { - const provider = getProvider(); - const iloopProgram = new Program(iloopIdl, provider); - const reserves = await iloopProgram.account.reserve.all(); - for (const { account } of reserves) { - api.add(account.liquidityMint.toBase58(), account.borrowedAmount) - } -} - -module.exports = { - timetravel: false, - solana: { - tvl, borrowed, - }, - methodology: 'TVL consists of deposits made to the protocol, borrowed tokens are not counted.', -}; diff --git a/projects/imbtc.js b/projects/imbtc.js deleted file mode 100644 index aeb00c96844..00000000000 --- a/projects/imbtc.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens } = require('./helper/chain/bitcoin') -const { imbtc } = require('./helper/bitcoin-book/index.js') - -module.exports = { - ethereum: { tvl: () => ({}) }, - bitcoin: { - tvl: () => sumTokens({ - owners: imbtc, - }) - }, - methodology: `TVL for imBTC consists of the BTC deposits in custody that were used to mint imBTC`, - hallmarks: [ - ['2024-01-31', 'Project ceases operation'], - ], -} diff --git a/projects/imf-money-v2/index.js b/projects/imf-money-v2/index.js deleted file mode 100644 index 0b76d534eb7..00000000000 --- a/projects/imf-money-v2/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getCuratorTvl } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by the IMF.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x6b22171a3eB9CF39C0f3e56C4713F2E30e1Ba262', - ], - }, - } -} - -module.exports = { - doublecounted: true, - methodology: configs.methodology, - ethereum: { - tvl: async (api) => { - - - // v2 - vault on Morpho Blue - await getCuratorTvl(api, configs.blockchains.ethereum) - } - } -} \ No newline at end of file diff --git a/projects/imf-money/index.js b/projects/imf-money/index.js deleted file mode 100644 index d0ae1ecbb8b..00000000000 --- a/projects/imf-money/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - - -module.exports = { - doublecounted: true, - methodology: 'Sums the value of deposited memes', - ethereum: { - tvl: async (api) => { - // v1 - await sumTokens2({api, owner: '0x30F75834cB406b7093208Fda7F689938aCBD1EeB', tokens: [ - '0x6982508145454Ce325dDbE47a25d4ec3d2311933', - '0x698b1d54e936b9f772b8f58447194bbc82ec1933', - '0xaaee1a9723aadb7afa2810263653a34ba2c21c7a', - '0x699ec925118567b6475fe495327ba0a778234aaa', - '0x960fCE8724aA127184B6d13Af41a711755236c77', - ]}); - } - } -} diff --git a/projects/immortal/api.js b/projects/immortal/api.js deleted file mode 100644 index a2a6e489abd..00000000000 --- a/projects/immortal/api.js +++ /dev/null @@ -1,8 +0,0 @@ -const index = require('./index') - -module.exports = { - celo: { - tvl: () => 0, - staking: index.celo.staking, - } -} \ No newline at end of file diff --git a/projects/immortal/index.js b/projects/immortal/index.js deleted file mode 100644 index ff0a7601f9a..00000000000 --- a/projects/immortal/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const immo = "0xE685d21b7B0FC7A248a6A8E03b8Db22d013Aa2eE"; -const stakingContract = "0xA02F4e8dE9A226E8f2F2fe27B9b207fC85CFEED2"; -const treasury = "0xe2adCd126b4275cD75e72Ff7ddC8cF7e43fc13D4"; -const tokens = [ - [ADDRESSES.celo.mcUSD, false], // CUSD - ["0x7d63809EBF83EF54c7CE8dEd3591D4E8Fc2102eE", true] // IMMO-CUSD -] - -module.exports =ohmTvl(treasury, tokens, "celo", stakingContract, immo) diff --git a/projects/immortalx/index.js b/projects/immortalx/index.js deleted file mode 100644 index ace21b098f3..00000000000 --- a/projects/immortalx/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: - "cUSD deposited in the contracts for staking & trading purpose are counted as TVL", - celo: { - tvl: sumTokensExport({ - owners: [ - "0xcABE1D77EC810e2A03720162749b2671621ff49C", // Dex - "0xe61Dc5b75bBd45226FB06aC8F170Cb5624F71D51", // TriggerOrderManager - ], - tokens: [ADDRESSES.celo.cUSD], - }), - }, -}; diff --git a/projects/immutable-zkevm/index.js b/projects/immutable-zkevm/index.js deleted file mode 100644 index 7ef8cdc2176..00000000000 --- a/projects/immutable-zkevm/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: async ({ api }) => - sumTokens2({ - api, - owner: "0xBa5E35E26Ae59c7aea6F029B68c6460De2d13eB6", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/immutablex/index.js b/projects/immutablex/index.js deleted file mode 100644 index 64b16ac03bf..00000000000 --- a/projects/immutablex/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/sumTokens"); -const { stakings } = require("../helper/staking"); - -const owners = ["0x5FDCCA53617f4d2b9134B29090C87D01058e27e9"]; - -const tokens = [ - ADDRESSES.null, - ADDRESSES.ethereum.USDC, - "0xeD35af169aF46a02eE13b9d79Eb57d6D68C1749e", // OMI - "0xccC8cb5229B0ac8069C51fd58367Fd1e622aFD97", // GODS -]; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners, tokens }), - staking: stakings(owners, "0xF57e7e7C23978C3cAEC3C3548E3D615c346e79fF"), - }, - hallmarks: [[1643241600, "OMI migration"]], -}; diff --git a/projects/impact-market/index.js b/projects/impact-market/index.js deleted file mode 100644 index f7e87ade5e8..00000000000 --- a/projects/impact-market/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const PACTTokenAddress = "0x46c9757C5497c5B1f2eb73aE79b6B67D119B0B58" -const CELOTokenAddress = ADDRESSES.celo.CELO -const ARITokenAddress = "0x20677d4f3d0F08e735aB512393524A3CfCEb250C" - -const pactDelegatorContract = "0x8f8BB984e652Cb8D0aa7C9D6712Ec2020EB1BAb4" - -async function treasury(api) { - return api.sumTokens({ - tokensAndOwners: [[CELOTokenAddress, pactDelegatorContract], [ARITokenAddress, pactDelegatorContract]], - }) -} - -async function staking(api) { - return api.sumTokens({ - tokensAndOwners: [[PACTTokenAddress, pactDelegatorContract]], - }) -} - -module.exports = { - celo: { - // treasury, - staking, - tvl: () => ({}) - } -} diff --git a/projects/impermax-v3/index.js b/projects/impermax-v3/index.js deleted file mode 100644 index 0c16d8c344b..00000000000 --- a/projects/impermax-v3/index.js +++ /dev/null @@ -1,227 +0,0 @@ -const sdk = require('@defillama/sdk'); -const axios = require('axios'); -const { sumTokens2, addUniV3LikePosition } = require('../helper/unwrapLPs'); -const { nullAddress } = require('../helper/tokenMapping'); - - -const config = { - arbitrum: { - factories: [ - '0x4FF3262Ba2983Ee8950d9d082f03277a58BF7eb1' - ], - positionsApi: ['https://arbitrum-nftlp-uniswapv3.up.railway.app/positions'] // UniswapV3 - }, - base: { - factories: [ - '0x175712cD666FbcfE8B69866a3088D7bf17a47685', - '0x870fd2c2b502db53d3c9e19ab99725c1129fc120', - ], - positionsApi: [ - 'https://base-nftlp-uniswapv3.up.railway.app/positions', // UniswapV3 - 'https://base-nftlp-aerov3.up.railway.app/positions' // Aerodrome - ] - }, - unichain: { - factories: ['0x50E7116c4a9624a2d562Ee0Ab5209F3834C15E14'], - positionsApi: ['https://unichain-nftlp-uniswapv3.up.railway.app/positions'] - }, - hyperliquid: { - factories: ['0x171d48161223a3ddb4659e093291f8f32f4e95ef'], - positionsApi: ['https://hyperevm-nftlp-hyperswapv3.up.railway.app/positions'] // Hyperswap - - } -}; - -const blacklistedPools = { - arbitrum: [], - base: [], - unichain: [], - hyperliquid: [] -}; - -const abi = { - // Borrowables - underlying: "address:underlying", - totalBalance: "uint256:totalBalance", - totalBorrows: "function totalBorrows() view returns (uint112)", - - // Lending Pools - allLendingPoolsLength: "uint256:allLendingPoolsLength", - allLendingPools: "function allLendingPools(uint256) view returns (address)", - getLendingPool: "function getLendingPool(address) view returns (bool initialized, uint24 lendingPoolId, address collateral, address borrowable0, address borrowable1)", - - // UniV3 pools - slot0: "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)", - slot0Aero: "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, bool unlocked)", -}; - -async function tvl(api) { - const { factories, positionsApi } = config[api.chain]; - const blacklist = blacklistedPools[api.chain] || []; - - // All NFTLP positions - if (positionsApi) { - for (const apiUrl of positionsApi) { - await processUniV3Positions(api, apiUrl); - } - } - - await processBorrowables(api, factories, blacklist); - - return api.getBalances(); -} - -async function processUniV3Positions(api, positionsApiUrl) { - const response = await axios.get(positionsApiUrl); - const positions = response.data; - - if (!Array.isArray(positions) || positions.length === 0) { - api.log(`No positions found with api ${positionsApiUrl}`); - return; - } - - const poolsMap = {}; - positions.forEach(position => { - if (!position.uniswapV3PoolId || position.liquidity === '0') return; - - const poolId = position.uniswapV3PoolId.toLowerCase(); - if (!poolsMap[poolId]) { - poolsMap[poolId] = { - token0: position.token0Id, - token1: position.token1Id, - positions: [] - }; - } - - poolsMap[poolId].positions.push({ - liquidity: position.liquidity, - tickLower: position.tickLower, - tickUpper: position.tickUpper - }); - }); - - // Get tick of all unique pools - const poolAddresses = Object.keys(poolsMap); - - const slot0 = await api.multiCall({ - abi: positionsApiUrl.includes("aerov3") ? abi.slot0Aero : abi.slot0, - calls: poolAddresses, - permitFailure: true - }); - - poolAddresses.forEach((poolAddress, i) => { - const poolData = poolsMap[poolAddress]; - const slotData = slot0[i]; - - if (!slotData || slotData.tick === undefined) { - console.log("Skipping pool no slot0: ", poolAddress); - return; - } - - poolData.positions.forEach(position => { - addUniV3LikePosition({ - api, - token0: poolData.token0, - token1: poolData.token1, - tick: slotData.tick, - liquidity: position.liquidity, - tickLower: position.tickLower, - tickUpper: position.tickUpper - }); - }); - }); -} - -// Same as impermax-v2 adapter -async function processBorrowables(api, factories, blacklist) { - const pools = []; - - await Promise.all(factories.map(async (factory) => { - const lendingPools = await api.fetchList({ - lengthAbi: abi.allLendingPoolsLength, - itemAbi: abi.allLendingPools, - target: factory - }); - - const filteredPools = lendingPools.filter(pool => !blacklist.includes(pool.toLowerCase())); - - const poolData = await api.multiCall({ - target: factory, - abi: abi.getLendingPool, - calls: filteredPools, - permitFailure: true, - }); - - const initializedPools = poolData.filter(pool => pool.initialized); - initializedPools.forEach(i => { - pools.push(i.borrowable0, i.borrowable1); - }); - })); - - const underlyings = await api.multiCall({ - abi: abi.underlying, - calls: pools, - permitFailure: true, - }); - - const tokensAndOwners = pools - .map((owner, i) => [underlyings[i], owner]) - .filter(([token]) => token !== nullAddress); - - return sumTokens2({ api, tokensAndOwners }); -} - -// Same as impermax-v2 adapter -async function borrowed(api) { - const { factories } = config[api.chain] - const blacklist = blacklistedPools[api.chain] - const balances = {} - const borrowables = [] - await Promise.all(factories.map(async (factory) => { - const lendingPools = await api.fetchList({ lengthAbi: abi.allLendingPoolsLength, itemAbi: abi.allLendingPools, target: factory }) - - const filteredPoolData = lendingPools.filter(pool => { - return !blacklist.includes(pool.toLowerCase()) - }) - - const poolData = await api.multiCall({ - target: factory, - abi: abi.getLendingPool, - calls: filteredPoolData, - permitFailure: true, - }) - - poolData.forEach(i => { - borrowables.push(i.borrowable0, i.borrowable1) - }) - })) - - const underlyings = await api.multiCall({ - abi: abi.underlying, - calls: borrowables, - permitFailure: true, - }) - - const borrowed = await api.multiCall({ - abi: abi.totalBorrows, - calls: borrowables, - permitFailure: true, - }) - - underlyings.forEach((v, i) => { - sdk.util.sumSingleBalance(balances, v, borrowed[i], api.chain) - }) - return balances -} - - -const module_exports = {}; - -Object.keys(config).forEach(chain => { - module_exports[chain] = { - tvl, - borrowed - }; -}); - -module.exports = module_exports; diff --git a/projects/impermax/abi.js b/projects/impermax/abi.js deleted file mode 100644 index f1ec86b2fc7..00000000000 --- a/projects/impermax/abi.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - allLendingPools: "function allLendingPools(uint256) view returns (address)", - allLendingPoolsLength: "uint256:allLendingPoolsLength", - getLendingPool: "function getLendingPool(address) view returns (bool initialized, uint24 lendingPoolId, address collateral, address borrowable0, address borrowable1)", - underlying: "address:underlying", - totalBorrows: "function totalBorrows() view returns (uint112)", - } - \ No newline at end of file diff --git a/projects/impermax/impermaxHelper.js b/projects/impermax/impermaxHelper.js deleted file mode 100644 index b748b736bfb..00000000000 --- a/projects/impermax/impermaxHelper.js +++ /dev/null @@ -1,134 +0,0 @@ -const abi = require('./abi') -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') -const { nullAddress } = require('../helper/tokenMapping') - -function impermaxHelper(exportsObj, config, blacklistedPools) { - async function tvl(api) { - const { factories } = config[api.chain] - const blacklist = blacklistedPools[api.chain] - const pools = [] - await Promise.all(factories.map(async (factory) => { - const lendingPools = await api.fetchList({ lengthAbi: abi.allLendingPoolsLength, itemAbi: abi.allLendingPools, target: factory }) - const filteredPools = lendingPools.filter(pool => !blacklist.includes(pool.toLowerCase())) - - const poolData = await api.multiCall({ - chain: api.chain, - target: factory, - abi: abi.getLendingPool, - calls: filteredPools, - permitFailure: true, - }) - - const initialiazedPools = poolData.filter(pool => pool.initialized) - initialiazedPools.forEach(i => { - pools.push(i.collateral, i.borrowable0, i.borrowable1) - }) - })) - - const underlyings = await api.multiCall({ - abi: abi.underlying, - calls: pools, - permitFailure: true, - }) - - const filteredUnderlyings = underlyings.filter(i => i !== nullAddress) - const uSymbols = await api.multiCall({ abi: 'erc20:symbol', calls: filteredUnderlyings }) - - const uvTokens = await getUVTokens(pools, filteredUnderlyings, uSymbols, api) - - const [uToken, totalBalance] = await getUnderlyingPoolsInfo(uvTokens, api) - - const toa = pools.map((v, i) => [underlyings[i], v]) - api.addTokens(uToken, totalBalance) - - return sumTokens2({ - api, tokensAndOwners: toa, resolveLP: true, blacklistedTokens: uvTokens, permitFailure: true, - }) - } - - async function borrowed(api) { - const { factories } = config[api.chain] - const blacklist = blacklistedPools[api.chain] - const balances = {} - const borrowables = [] - await Promise.all(factories.map(async (factory) => { - const lendingPools = await api.fetchList({ lengthAbi: abi.allLendingPoolsLength, itemAbi: abi.allLendingPools, target: factory }) - - // filter out blacklisted pools for the chain - const filteredPoolData = lendingPools.filter(pool => { - return !blacklist.includes(pool.toLowerCase()) - }) - - const poolData = await api.multiCall({ - target: factory, - abi: abi.getLendingPool, - calls: filteredPoolData, - permitFailure: true, - }) - - poolData.forEach(i => { - borrowables.push(i.borrowable0, i.borrowable1) - }) - })) - - const underlyings = await api.multiCall({ - abi: abi.underlying, - calls: borrowables, - permitFailure: true, - }) - - const borrowed = await api.multiCall({ - abi: abi.totalBorrows, - calls: borrowables, - permitFailure: true, - }) - - underlyings.forEach((v, i) => { - sdk.util.sumSingleBalance(balances, v, borrowed[i], api.chain) - }) - return balances - } - - async function getUVTokens(rawPools, underlyings, uSymbols, api) { - var impermaxSymbol; - var stableImpermaxSymbol; - switch (api.chain) { - case 'ethereum': - impermaxSymbol = 'UNI-V2' - return rawPools.filter((_, i) => uSymbols[i] === impermaxSymbol) - - case 'polygon': - case 'arbitrum': - case 'avax': - case 'moonriver': - case 'canto': - case 'era': - case 'fantom': - case 'scroll': - case 'base': - case 'mantle': - case 'optimism': - default: - impermaxSymbol = 'STKD-UNI-V2' - stableImpermaxSymbol = 'STKD-STBL' - return underlyings.filter((_, i) => uSymbols[i] === impermaxSymbol || uSymbols[i] === stableImpermaxSymbol) - } - } - - async function getUnderlyingPoolsInfo(uvTokens, api) { - return Promise.all([ - api.multiCall({ abi: 'address:underlying', calls: uvTokens, permitFailure: true }), - api.multiCall({ abi: 'uint256:totalBalance', calls: uvTokens, permitFailure: true }), - ]) - } - - Object.keys(config).forEach(chain => { - exportsObj[chain] = { borrowed, tvl, } - }) -} - -module.exports = { - impermaxHelper -} - diff --git a/projects/impermax/index.js b/projects/impermax/index.js deleted file mode 100644 index 036cb7ecb50..00000000000 --- a/projects/impermax/index.js +++ /dev/null @@ -1,189 +0,0 @@ -const { impermaxHelper } = require('./impermaxHelper.js') - -const config = { - ethereum: { - factories: [ - '0x8C3736e2FE63cc2cD89Ee228D9dBcAb6CE5B767B' - ] - }, - polygon: { - factories: [ - '0xBB92270716C8c424849F17cCc12F4F24AD4064D6', - '0x7F7AD5b16c97Aa9C2B0447C2676ce7D5CEFEbCd3', - '0x7ED6eF7419cD9C00693d7A4F81c2a151F49c7aC2', - '0x60f57cF15a34fA0Aa25eF37eB827E1a0948966c5' - ] - }, - arbitrum: { - factories: [ - '0x8C3736e2FE63cc2cD89Ee228D9dBcAb6CE5B767B', - '0x9708e0b216a88d38d469b255ce78c1369ad898e6', - '0x97bc7fefb84a4654d4d3938751b5fe401e8771c2', - ] - }, - avax: { - factories: [ - '0x8C3736e2FE63cc2cD89Ee228D9dBcAb6CE5B767B', - '0x9708e0b216a88d38d469b255ce78c1369ad898e6', - '0xc7f24fd6329738320883ba429C6C8133e6492739', - ] - }, - moonriver: { - factories: [ - '0x8C3736e2FE63cc2cD89Ee228D9dBcAb6CE5B767B', - ] - }, - canto: { - factories: [ - '0x9708E0B216a88D38d469B255cE78c1369ad898e6', - ] - }, - era: { - factories: [ - '0x6ce1a2C079871e4d4b91Ff29E7D2acbD42b46E36', - ] - }, - fantom: { - factories: [ - '0x60aE5F446AE1575534A5F234D6EC743215624556', - '0x9b4ae930255CB8695a9F525dA414F80C4C7a945B', - ] - }, - scroll: { - factories: [ - '0x02Ff7B4d96EeBF8c9B34Fae0418E591e11da3099', - '0xFBD17F3AA7d6506601D2bF7e15a6C96081296a01', // scroll stablefactory - ] - }, - base: { - factories: [ - '0x66ca66E002a9CEE8dEfE25dB6f0c6225117C2d9f', - '0x8aDc5F73e63b3Af3fd0648281fE451738D8B9D86', - '0x47183bB55AD0F891887E099Cec3570d3C667cD00' - ] - }, - mantle: { - factories: [ - '0x3047523D5ed0df1545B1C440BdAaB095f1f3cf5C' - ] - }, - optimism: { - factories: [ - '0xa058Ba91958cD30D44c7B0Cf58A369876Fb70B05', - '0x48168439ca4ef9e95975e3e2488bfcbd8fb1a80c' - ] - }, - blast: { - factories: [ - '0x7b816c1ccafa7d3e71e279ed9dc3226484f6ef87', - '0xb3c80cfcdd177e3fce2e66870e4768d1ead89f6c', - '0xfff3C004D115002E0fe8Ef08bBB127aEF5B97bE1' - ] - }, - sonic: { - factories: [ - '0x26fca5916c20D252feEF7A58E39886d3d3112b91', - '0x6e1E988D828D0102BF93434774cd1a2246062564' - ] - }, - linea: { - factories: [ - '0x7A9212D34DD283e952f8f15f084832e9b48ee746' - ] - } -} - -const blacklistedPools = { - ethereum: [ - '0xa00d47b4b304792eb07b09233467b690db847c91', // IMX-WETH - '0x46af8ac1b82f73db6aacc1645d40c56191ab787b', // NDX-ETH - '0x8dcba0b75c1038c4babbdc0ff3bd9a8f6979dd13', // DEFI5-ETH - '0x08650bb9dc722c9c8c62e79c2bafa2d3fc5b3293', // AMP-ETH - '0xdf5096804705d135656b50b62f9ee13041253d97', // YPIE-ETH - ], - polygon: [ - // QuickSwap - "0x5ed3147F07708A269f744B43c489e6Cf3B60aEC4", //DAI-USDT - "0x87B94444d0f2c1e4610A2De8504D5d7b81898221", //QUICK-POLYDOGE - "0x5f819f510ca9b1469e6a3ffe4ecd7f0c1126f8f5", //IMX-ETH [OLD] - "0xb957D5a232EEbD7C4c4B0A1af9F2043430304E65", //rUSD-USDC - "0x23312FCEADb118381C33B34343A61c7812f7a6a3", //IMX-ETH - "0x76483D4Ba1177F69FA1448dB58d2f1dBE0Fb65fa", //IMX-QUICK - "0xD4f5F9643A4368324aC920414781B1c5655BaeD1", //IMX-QUICK - "0x8ce3bf56767dD87E87487f3fae63e557B821Ea32", //IMX-WETH - "0x8ce3bf56767dd87e87487f3fae63e557b821ea32", //IMX-ETH - // Pearl - "0x2712fbb291d8784b7bf75e50f472968d0bd43fc1", //USDR-ETH - "0x7c91c66f7df3d23858937b0d419fd10b72bdc6d3", //USDR-BTC - "0xbde0990EeB2509931a0f73f78010F00191D746BA", //USDR-MATIC - "0x281Db118b0CB2865d9370c98AaC6e42523582AED", //USDR-PEARL - "0x822363B6dFaa8C41c1ADa904F1829143375EA6Da", //USDR-TNGBL - "0x6467FeF60a061f541967415fcBcDFb6Dc964f711", //USDR-IBEX - // Satin - "0x7166f0509bd1deedf90e42046025d929078089b4", //MATIC-LIBERA - "0x06D3AE1Cfe7D3D27B8b9f541E2d76e5f33778923", //SATIN-CASH - "0x3E626179241585235FF7B002cc4dC5439338990e", //IBEX-WETH - "0xCB091859dd1d994d513721fB9722Ca9f8839A825", //ETH-CASH - "0x7b750A5C4c0c7b36D206383353AB3c54DeE74deF", //MATIC-CASH - ], - arbitrum: [ - '0xb7e5e74b52b9ada1042594cfd8abbdee506cc6c5', // IMX-WETH - '0xcc5c1540683aff992201d8922df44898e1cc9806', // IMX-WETH - '0x8884cc766b43ca10ea41b30192324c77efdd04cd', // NYAN-ETH - '0x4062f4775bc001595838fbaae38908b250ee07cf', // SWPR-ETH - ], - avax: [ - // Traderjoe - "0x21249FC0Ad45fB3e33C12BE0fA2B81000A290C5f", //SPELL-AVAX - "0xa34862a7de51a0e1aee6d3912c3767594390586d", //IMX-AVAX OLD - // Pangolin V1 - "0xE9439f67201894C30F1C1c6b362F0e9195FB8e2C", //IMX-AVAX - // Pangolin V2 - "0xde0037aFbE805C00d3CEc67093A40882880779b7", //IMX-AVAX - "0x69c1C44e8742b66D892294a7EEB9aac51891B0EB", //USDC-UST - "0xc6E68d77d0f4FA925A1cF2611dAB6b10900Eaf2B", //UST-AVAX - // Thorus - "0xd60709441b483453e84aD8E1C30F2e9EE116851D", //USDC-THO - // Pangolin - "0xE429Fbdc3275e29cA4c11F9c1EB4C8Cee1fCAda3", //WBTC-USDC - "0xc532a2885027677c4BE61F710F7D41941dBaD1B1", //ETH-AVAX - "0x677dCE0683e6Db30325cD97e8d04D138F34821A6", //PNG-AVAX - "0x65A9a0b25A2397e67Fe688361Bf4113cf4Fa5313", //USDT-AVAX - // Glacier - "0x96f1F13865f11E2EC0E15051415f420dAC440EC1", //WETH-USDT.e - "0x674A38dE6dC83FBde29784C9A974D38a11EbFB37", //BTC.b-AVAX - "0x4ab56108FD36F5da28b56a43b17909f745d560e4", //AVAX-USDT - "0x29327d37Ee0395a22dd419E2E81F3Bf2da066cfe", //GMX-USDC - "0x0d4E0EaFA9002957371a0cadbD3BF168d6D0741A", //fBOMB-AVAX - "0x7AEDD611c361cfc53d14953A6CbDC2d4Cd48AC94", //AVAX-WMEMO - "0x8dc6fae7fedd7a60ecbb27c17af830f5811d773e", //MMTH-BTC.b - ], - moonriver: [ - '0x6ed3bc66dfcc5ac05daec840a75836da935fac97', // IMX-WETH - ], - canto: [], - era: [], - fantom: [ - '0x877a330af63094d88792b9ca28ac36c71673eb1c', // IMX-FTM - '0xb97b6ed451480fe6466a558e9c54eaac32e6c696', // OXD-FTM - ], - scroll: [ - "0x94d81405985A4c34EaC4945d2b98c74258EdD07F", // tkn/chi - stakedlp - "0xE8f4895DF06a0c69A9BA87509EfdBBFBAFe86c2d", // weth/tkn - stakedlp - "0x7c80Be56a6f23A3E598822648baaFD7524fe1239", // chi/wUKRE stakedlp - "0xDD14d0c651C63e1EeA5bd8b250cf99757425D68F", // chi/usdc stakedlp - "0xc90073e1cabcf5069e00c5a6cb10023c9e1d5c4f", // wbtc/eth stakedlp - ], - base: [], - mantle: [], - optimism: [], - blast: [], - sonic: [ - "0xd9de9f15994182518a688933d09787a9a9fb5bc9" // s/shadow stakedlp - ], - linea: [] -} - -module.exports = {} - -impermaxHelper(module.exports, config, blacklistedPools) diff --git a/projects/implsfinance/abi.json b/projects/implsfinance/abi.json deleted file mode 100644 index 184e0f6aa23..00000000000 --- a/projects/implsfinance/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "LPtoken": "address:LPtoken", - "balanceLPinSystem": "uint256:balanceLPinSystem", - "stakingToken": "address:stakingToken" -} \ No newline at end of file diff --git a/projects/implsfinance/index.js b/projects/implsfinance/index.js deleted file mode 100644 index dccd6d653dc..00000000000 --- a/projects/implsfinance/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { sumTokensExport } = require('../helper/unknownTokens') - -const coreRewards = "0xF32c5c83e19640ad414dC5922C0F9182F4695D69"; -const plsRewards = "0xD7ba719d28079253e96b57A6518C41eeA2Be048d"; -const IMPLS = "0x5f63BC3d5bd234946f18d24e98C324f629D9d60e"; - -const vaults = [ - //PulseX DAI/PLS - "0xb098D878471c451Ccb521E391f7C98bD4709bfe9", - - //PulseX PLSX/PLS - "0x97248ba432ED71FC933374884BcF8Ac0C42b5Df9", - - //PulseX HEX/PLS - "0x9A563280F4Cc938e426ec220a2659cF7AE125ab6", - - //Daytona TONI/PLS - "0x3ed45e98b9358E9cd39f06726F382eA1155656f5", - -]; - -/*** Staking of native token IMPLS and IMPLS/PLS LP TVL Portion ***/ -const pool2 = async (api) => { - const staking_lpToken = await api.call({ abi: abi.stakingToken, target: coreRewards, }) - return sumTokens2({ api, tokens: [staking_lpToken], owners: [coreRewards, plsRewards] }) -}; - - -/*** vaults TVL portion ***/ -const plsTvl = async (api) => { - const tokens = await api.multiCall({ abi: abi.LPtoken, calls: vaults}) - const bals = await api.multiCall({ abi: abi.balanceLPinSystem, calls: vaults}) - api.addTokens(tokens, bals) -}; - -module.exports = { - doublecounted: true, - pulse: { - tvl: plsTvl, - staking: sumTokensExport({ owners: [coreRewards, plsRewards], tokens: [IMPLS], useDefaultCoreAssets: true, lps: ['0xf121E6e093E2C070F2d982F85726084A776A963f'] }), - pool2, - }, - methodology: `The TVL is made up of the core rewards yield farm and LP deposits in our auto compounding vault strategies.`, -}; diff --git a/projects/impossiblefi/index.js b/projects/impossiblefi/index.js deleted file mode 100644 index f2e97195491..00000000000 --- a/projects/impossiblefi/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { stakings } = require("../helper/staking"); -const sdk = require('@defillama/sdk') -const { getUniTVL } = require('../helper/unknownTokens') - -const getReserves = 'function getReserves() view returns (uint256 _reserve0, uint256 _reserve1)' -const stakingAddresses = [ - "0x1d37f1e6f0cce814f367d2765ebad5448e59b91b", - "0x1aBd0067f60513F152ff14E9cD26a62c820d022C", - "0xfc652ea2e8a373c16f3d8c5bd25e9898b9699ecb" -] -const idia = "0x0b15ddf19d47e6a86a56148fb4afffc6929bcb89" -module.exports = { - misrepresentedTokens: true, -} - -const config = { - bsc: { - factories: ['0x918d7e714243F7d9d463C37e106235dCde294ffC',], - factoriesWithDiffABI: ['0x4233ad9b8b7c1ccf0818907908a7f0796a3df85f'], - }, - boba: { factoriesWithDiffABI: ['0x7cF0a21D61Bb9215e44ACbA69442dE68ceb2C00D'], }, - aurora: { factoriesWithDiffABI: ['0x45a3a315277Fbc1BCe0611c4398b32E0317Fd7c1'], }, - moonbeam: { factoriesWithDiffABI: ['0x45603612891b6406A06854813e18443fC8ec7C73'], }, - avax: { factoriesWithDiffABI: ['0x45603612891b6406A06854813e18443fC8ec7C73'], }, - kava: { factoriesWithDiffABI: ['0xE2da68886db83cb1b4A9878F1EfA6843f539df69']}, - okexchain: { factoriesWithDiffABI: ['0x2CA5708568003aBa525bFe32C7D6D149D384D874'], }, -}; - -Object.keys(config).forEach(chain => { - const { factories = [], factoriesWithDiffABI = [] } = config[chain] - const exports = [ - ...factoriesWithDiffABI.map(factory => getUniTVL({ chain, factory, useDefaultCoreAssets: false, abis: { getReserves } })), - ...factories.map(factory => getUniTVL({ chain, factory, useDefaultCoreAssets: false })), - ] - module.exports[chain] = { - tvl: sdk.util.sumChainTvls(exports) - } -}) - -module.exports.bsc.staking = stakings(stakingAddresses, idia) diff --git a/projects/in_dex/index.js b/projects/in_dex/index.js deleted file mode 100644 index a18670559f4..00000000000 --- a/projects/in_dex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'hsk': '0x09ee9eCc6E2B458508E05Da7f90E324AE54620D2' -}) diff --git a/projects/inbuilt-finance/index.js b/projects/inbuilt-finance/index.js deleted file mode 100644 index bcd7649f0bb..00000000000 --- a/projects/inbuilt-finance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const token_USDC = ADDRESSES.telos.ETH; -const token_USDT = ADDRESSES.moonriver.USDT; -const masterchef = "0x68DB81eAB568174D54F3fd0d9e035eDe9AAEd3e2"; - -module.exports = { - kava: { - tvl: sumTokensExport({ - owner: masterchef, - tokens: [token_USDC, token_USDT, ] - }), - staking: sumTokensExport({ - owner: masterchef, - tokens: ['0xa0eeda2e3075092d66384fe8c91a1da4bca21788'] - }) - } -} diff --git a/projects/incaswap/index.js b/projects/incaswap/index.js deleted file mode 100644 index 5a6ad6704a6..00000000000 --- a/projects/incaswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens'); - -module.exports = uniTvlExports({ - matchain: '0x1d9e11881Fca0e692B09AF0C0cbE70A643CB06FB' -}) diff --git a/projects/inception-lrt/index.js b/projects/inception-lrt/index.js deleted file mode 100644 index 7e4b82ba77b..00000000000 --- a/projects/inception-lrt/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') - -const CONFIG = [ - '0x814CC6B8fd2555845541FB843f37418b05977d8d', // instETH - '0xc4181dC7BB31453C4A48689ce0CBe975e495321c', // inswETH - '0x36B429439AB227fAB170A4dFb3321741c8815e55', // inankrETH - '0xfE715358368416E01d3A961D3a037b7359735d5e', // incbETH - '0x90E80E25ABDB6205B08DeBa29a87f7eb039023C2', // inETHx - '0x6E17a8b5D33e6DBdB9fC61d758BF554b6AD93322', // inlsETH - '0xd0ee89d82183D7Ddaef14C6b4fC0AA742F426355', // inmETH - '0x4878F636A9Aa314B776Ac51A25021C44CAF86bEd', // inoETH - '0xA9F8c770661BeE8DF2D026edB1Cb6FF763C780FF', // inosETH - '0x1Aa53BC4Beb82aDf7f5EDEE9e3bBF3434aD59F12', // inrETH - '0x295234B7E370a5Db2D2447aCA83bc7448f151161', // insfrxETH - '0xC0660932C5dCaD4A1409b7975d147203B1e9A2B6', // inwbETH - '0xC6Cc133477f63D9c0C53D1eF7DA83fa250778DB4', // inEIGEN - '0x016E074Ca7304b815E29A9b9d8CF7a5603DA2A5f', // inBTC - '0xeFaF124849b11b513C35350CD8643d29DE49c2ba', // insFRAX -] - -const symbioticVaults = [ - '0xf9D9F828989A624423C48b95BC04E9Ae0ef5Ec97', // inwstETHs - '0x06824C27C8a0DbDe5F72f770eC82e3c0FD4DcEc3' // amphrLRT -] - -const wstETH = ADDRESSES.ethereum.WSTETH - -const eventAbis = { - deposit: "event Deposit(address indexed sender, address indexed receiver, uint256 amount, uint256 iShares)", - withdraw:"event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 amount, uint256 iShares)" -} - -const tvl = async (api) => { - for (const vault of symbioticVaults) { - const depositedLogs = await getLogs({ api, extraKey: `deposited-${vault}`, fromBlock: 20126194, target: vault, eventAbi: eventAbis.deposit, onlyArgs: true }) - const withdrawLogs = await getLogs({ api, extrakey: `withdraw-${vault}`, fromBlock: 20126194, target: vault, eventAbi: eventAbis.withdraw, onlyArgs: true }) - - depositedLogs.forEach(e => api.add(wstETH, e[2])); - withdrawLogs.forEach(e => api.add(wstETH, -e[3])); - } - - return api.erc4626Sum({ calls: CONFIG, tokenAbi: 'address:asset', balanceAbi: 'uint256:getTotalDeposited' }) -} - - -module.exports = { - ethereum: { tvl }, - doublecounted: true, - hallmarks: [ - [1714953600, "Genesis Merges with InceptionLRT"], - [1734530420, "Amphor Labs Merges with InceptionLRT"] - ], -} diff --git a/projects/incognito/config.js b/projects/incognito/config.js deleted file mode 100644 index cf467ba2542..00000000000 --- a/projects/incognito/config.js +++ /dev/null @@ -1,76 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const contract = "0x43D037A562099A4C2c95b1E2120cc43054450629"; - -module.exports = { - chains: [ - { - name: "ethereum", - tokens: [ - ADDRESSES.null, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.SAI, - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.INU, - "0x4F9254C83EB525f9FCf346490bbb3ed28a81C667", - "0x4CC19356f2D37338b9802aa8E8fc58B0373296E7", - "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", - ADDRESSES.ethereum.BAT, - "0x55296f69f40Ea6d20E478533C15A6B08B654E758", - ADDRESSES.ethereum.AAVE, - "0x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa", - "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", - "0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d", - "0xf34960d9d60be18cC1D5Afc1A6F012A723a28811", - "0x4c11249814f11b9346808179Cf06e71ac328c1b5", - "0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD", - ], - holders: [contract], - }, - { - name: "bsc", - tokens: [ - ADDRESSES.null, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT, - "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE", - ADDRESSES.bsc.BUSD, - "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", - "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD", - ADDRESSES.bsc.ETH, - ADDRESSES.bsc.BTCB, - "0xbA2aE424d960c26247Dd6c32edC70B295c744C43", - "0xd5d0322b6bAb6a762C79f8c81A0B674778E13aeD", - "0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", - "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", - ADDRESSES.bsc.WBNB, - "0x4338665CBB7B2485A8855A139b75D5e34AB0DB94", - ], - holders: [contract], - }, - { - name: "avax", - tokens: [ADDRESSES.null, ADDRESSES.avax.USDC, ADDRESSES.avax.USDt], - holders: [contract], - }, - { - name: "polygon", - tokens: [ - ADDRESSES.null, - ADDRESSES.polygon.WMATIC_1, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.WBTC, - ADDRESSES.polygon.USDC_CIRCLE, - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.WETH_1, - "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39", - ], - holders: [contract], - }, - { - name: "fantom", - tokens: [ADDRESSES.null, ADDRESSES.fantom.WFTM], - holders: [contract], - }, - ], -}; diff --git a/projects/incognito/index.js b/projects/incognito/index.js deleted file mode 100644 index b2f7002b2e2..00000000000 --- a/projects/incognito/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const config = require("./config"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: - "Calculates the quantity of tokens held within Incognito contracts.", -}; - -config.chains.forEach((chainInfo) => { - const { name: chain, tokens, holders } = chainInfo; - module.exports[chain] = { - tvl: sumTokensExport({ chain, tokens, owners: holders }), - }; -}); diff --git a/projects/increment-lending/index.js b/projects/increment-lending/index.js deleted file mode 100644 index 405f9f153cd..00000000000 --- a/projects/increment-lending/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { fetchURL } = require("../helper/utils"); - -// lending info: https://app.increment.fi/markets -async function borrowed(api) { - const { data: tvls } = await fetchURL("https://app.increment.fi/info/tvl"); - return api.addUSDValue(Math.round(tvls.LendingBorrow)) -} - -const tvl = async (api) => { - const { data: tvls } = await fetchURL("https://app.increment.fi/info/tvl") - return api.addUSDValue(Math.round(tvls.LendingTVL - tvls.LendingBorrow)) -} - -module.exports = { - misrepresentedTokens: true, - methodology: "Counting the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed funds are not counted in the TVL, so only the tokens actually locked in the contracts are counted.", - flow: { tvl, borrowed }, -}; diff --git a/projects/increment-liquidStaking/index.js b/projects/increment-liquidStaking/index.js deleted file mode 100644 index e5c61768005..00000000000 --- a/projects/increment-liquidStaking/index.js +++ /dev/null @@ -1,36 +0,0 @@ -// increment liquid staking link: https://app.increment.fi/staking -const { post } = require('../helper/http') - -let queryLiquidStakingTVLCode = ` -import DelegatorManager from 0xd6f80565193ad727 - -access(all) fun main(): UFix64 { - return DelegatorManager.getTotalValidStakingAmount() -}`; - -const queryCodeBase64 = Buffer.from(queryLiquidStakingTVLCode, 'utf-8').toString('base64'); - -async function tvl() { - try { - const response = await post("https://rest-mainnet.onflow.org/v1/scripts", { "script": queryCodeBase64 }, { - headers: { "content-type": "application/json" }, - }); - let resEncoded = response; - // resString = {"type":"UFix64","value":"96014.17736711"} - let resString = Buffer.from(resEncoded, 'base64').toString('utf-8'); - let resJson = JSON.parse(resString); - let flowTokenTVL = Number(resJson.value); - - return { flow: flowTokenTVL }; - } catch (error) { - throw new Error(`Couln't query scripts of increment liquid staking for flow chain`, error); - } -} - -module.exports = { - timetravel: false, - methodology: "Counting the flow tokens staked by users in the protocol, and tokens locked by unstaking are not counted.", - flow: { - tvl, - }, -}; diff --git a/projects/increment-protocol/index.js b/projects/increment-protocol/index.js deleted file mode 100644 index 108d63ca2a0..00000000000 --- a/projects/increment-protocol/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - methodology: "Counting the value of all tokens locked in the contracts to be used as collateral to trade or provide liquidity.", - era: { tvl: sumTokensExport({ owner: '0xfc840c55b791a1dbaf5c588116a8fc0b4859d227', tokens: [ADDRESSES.era.USDC] }) }, - start: '2024-03-09' // 2024-03-09 09:10 -} \ No newline at end of file diff --git a/projects/increment-swap/index.js b/projects/increment-swap/index.js deleted file mode 100644 index 532c2b41546..00000000000 --- a/projects/increment-swap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { fetchURL } = require("../helper/utils"); - - -// increment swap link: https://app.increment.fi/swap -// swap info: https://app.increment.fi/infos - -async function tvl() { - const { data: tvls } = await fetchURL( - "https://app.increment.fi/info/tvl" - ); - return { - tether: tvls.DexTVL - }; -} -module.exports = { - misrepresentedTokens: true, - methodology: "Counting the tokens locked in SwapPair AMM pools, pulling the data from the https://app.increment.fi/infos ", - flow: { - tvl, - }, -}; diff --git a/projects/indexcoop/index.js b/projects/indexcoop/index.js deleted file mode 100644 index 3cc8dd1477d..00000000000 --- a/projects/indexcoop/index.js +++ /dev/null @@ -1,113 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const dpiAddress = "0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b"; -const ethFliAddress = "0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd"; -const eth2x = "0x65c4C0517025Ec0843C9146aF266A2C5a2D148A2"; -const mviAddress = "0x72e364f2abdc788b7e918bc238b21f109cd634d7"; -const cgiAddress = "0xada0a1202462085999652dc5310a7a9e2bf3ed42"; -const btcFliAddress = "0x0b498ff89709d3838a063f1dfa463091f9801c2b"; -const btc2x = "0xD2AC55cA3Bbd2Dd1e9936eC640dCb4b745fDe759"; -const bedAddress = "0x2aF1dF3AB0ab157e1E2Ad8F88A7D04fbea0c7dc6"; -const dataAddress = "0x33d63Ba1E57E54779F7dDAeaA7109349344cf5F1"; -const gmiAddress = "0x47110d43175f7f2c2425e7d15792acc5817eb44f"; -const icethAddress = "0x7c07f7abe10ce8e33dc6c5ad68fe033085256a84"; -const hyETH = "0xc4506022Fb8090774E8A628d5084EED61D9B99Ee"; -const dsETH = "0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE"; -const wstETH15x = "0xc8DF827157AdAf693FCb0c6f305610C28De739FD"; -const aaveDebtToken = "0xf63b34710400cad3e044cffdcab00a0f32e33ecf"; -const USDC = ADDRESSES.ethereum.USDC -const gtcETH = '0x36c833Eed0D376f75D1ff9dFDeE260191336065e' - -const config = { - ethereum: { - sets: [ - dpiAddress, - eth2x, - btc2x, - mviAddress, - cgiAddress, - bedAddress, - dataAddress, - gmiAddress, - icethAddress, - dsETH, - gtcETH, - hyETH, - ], - aaveLeverageModule: '0x9d08CCeD85A68Bf8A19374ED4B5753aE3Be9F74f'.toLowerCase(), - }, - arbitrum: { - sets: [ - "0x26d7D3728C6bb762a5043a1d0CeF660988Bca43C", // eth2xArb - "0xA0A17b2a015c14BE846C5d309D076379cCDfa543", // eth3xArb - "0x749654601a286833aD30357246400D2933b1C89b", // iEthArb - "0xeb5bE62e6770137beaA0cC712741165C594F59D7", // btc2xArb - "0x3bDd0d5c0C795b2Bf076F5C8F177c58e42beC0E6", // btc3xArb - "0x80e58AEA88BCCaAE19bCa7f0e420C1387Cc087fC", // iBtcArb - "0xE7b1Ce8DfEE3D7417397cd4f56dBFc0d49E43Ed1", // eth2xBtcArb - "0x77f69104145f94a81cec55747c7a0fc9cb7712c3", // btc2xEthArb - ], - aaveLeverageModule: '0x6d1b74e18064172d028c5ee7af5d0ccc26f2a4ae'.toLowerCase(), - }, - base: { - sets: [ - "0xC884646E6C88d9b172a23051b38B0732Cc3E35a6", // eth2xBase - "0x329f6656792c7d34D0fBB9762FA9A8F852272acb", // eth3xBase - "0x186f3d8bb80dff50750babc5a4bcc33134c39cde", // btc2xBase - "0x1F4609133b6dAcc88f2fa85c2d26635554685699", // btc3xBase - "0x0a0fbd86d2deb53d7c65fecf8622c2fa0dcdc9c6", // uSOL/USDC - "0x2f67e4be7fbf53db88881324aac99e9d85208d40", // uSUI/USDC - wstETH15x, - ], - aaveLeverageModule: '0xC06a6E4d9D5FF9d64BD19fc243aD9B6E5a672699'.toLowerCase(), - morphoLeverageModule: '0x9534b6ec541ad182fbee2b0b01d1e4404765b8d7'.toLowerCase(), - }, -} - -Object.keys(config).forEach(chain => { - const { sets, aaveLeverageModule, morphoLeverageModule, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - - const tokens = await api.multiCall({ abi: 'address[]:getComponents', calls: sets }) - const modules = await api.multiCall({ abi: 'address[]:getModules', calls: sets, }) - - const toa = [] - sets.forEach((o, i) => tokens[i].forEach(t => toa.push([t, o]))) - - const aaveLeveragedSets = sets.filter((m, i) => modules[i].some(j => j.toLowerCase() === aaveLeverageModule)) - const auTokens = await api.multiCall({ abi: 'function getEnabledAssets(address) view returns (address[] uToken, address[] vToken)', calls: aaveLeveragedSets, target: aaveLeverageModule }) - const aTokenCalls = [] - const aTokenToSets = [] - auTokens.forEach((o, i) => { - o.uToken.concat(o.vToken).forEach((u) => { - aTokenCalls.push(u) - aTokenToSets.push(aaveLeveragedSets[i]) - }) - }) - const aaveReceiptTokens = await api.multiCall({ abi: 'function underlyingToReserveTokens(address) view returns (address aToken, address variabeDebtToken)', calls: aTokenCalls, target: aaveLeverageModule }) - aaveReceiptTokens.forEach((o, i) => toa.push([o.variabeDebtToken, aTokenToSets[i]])) - - if (api.chain === 'ethereum') { - toa.push([aaveDebtToken, icethAddress]) - const usdcDebt = await api.multiCall({ abi: "function borrowBalanceStored(address account) view returns (uint256)", target: "0x39aa39c021dfbae8fac545936693ac917d5e7563", calls: [ethFliAddress, btcFliAddress] }) - usdcDebt.forEach(i => api.add(USDC, i * -1)) - } - - if (morphoLeverageModule) { - const morphoLeveragedSets = sets.filter((m, i) => modules[i].some(j => j.toLowerCase() === morphoLeverageModule)) - const mResults = await api.multiCall({ abi: 'function getCollateralAndBorrowBalances(address) view returns (uint256 collateralBalance, uint256 borrowBalance, uint256 borrowSharesU256)', calls: morphoLeveragedSets, target: morphoLeverageModule }) - const mTokens = await api.multiCall({ abi: 'function marketParams(address) view returns (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv)', calls: morphoLeveragedSets, target: morphoLeverageModule }) - mTokens.forEach((o, i) => { - api.add(o.loanToken, mResults[i].borrowBalance * -1) - api.add(o.collateralToken, mResults[i].collateralBalance) - }) - - } - - await sumTokens2({ api, tokensAndOwners: toa, blacklistedTokens: sets }) - } - } -}) - diff --git a/projects/indexed/index.js b/projects/indexed/index.js deleted file mode 100644 index 06d1548556a..00000000000 --- a/projects/indexed/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0x592f70cE43a310D15fF59BE1460F38Ab6DF3Fe65', - topics: ['0x3c9399222fcd8c810cad2570e37d7b31aed4013fbfb296e5de17c0935d4159e7'], - eventAbi: 'event NewPool (address pool, address controller, bytes32 implementationID)', - onlyArgs: true, - fromBlock: 11371951, - }) - const pools = logs.map(i => i.pool) - const tokens = await api.multiCall({ abi: 'address[]:getCurrentTokens', calls: pools }) - return sumTokens2({ api, ownerTokens: pools.map((v, i) => [tokens[i], v]) }) -} - -module.exports = { - ethereum: { tvl }, - hallmarks: [ - // ['2021-10-14', 'Protocol was hacked'], - ['2023-03-20', 'Balancing arbitrage'], - ], -} \ No newline at end of file diff --git a/projects/indigo/index.js b/projects/indigo/index.js deleted file mode 100644 index ed0e1050959..00000000000 --- a/projects/indigo/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require('../helper/http') -const { sumTokensExport } = require('../helper/chain/cardano') - -module.exports = { - timetravel: false, - cardano: { - tvl: async () => { - const data = await get('https://analytics.indigoprotocol.io/api/cdps') - return { - cardano: data.reduce((a, i) => a + (i.collateralAmount/1e6), 0) - } - }, - staking: sumTokensExport({ owner: 'addr1wx3r0yl49yteuzwwlv7r0lr2uzq7p6v7nxl9ek645qy5rfgwwzxw6', tokens: ['533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0494e4459']}) - }, -} \ No newline at end of file diff --git a/projects/indodax/index.js b/projects/indodax/index.js deleted file mode 100644 index 72902774149..00000000000 --- a/projects/indodax/index.js +++ /dev/null @@ -1,142 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - avax: { - owners: [ - "0x55d440048abe8b75bfd286edcbe6de14fe9ffff9", - "0x91Dca37856240E5e1906222ec79278b16420Dc92", - "0xF077b0289016CDC8A9AE8196705A37f1AEFA5091", - "0x26B137B3B7A308Ed812F3120E453521c3ce91d82", - "0x442689F3F26cBcCc2E288DaEa986b9d67346149a", - ], - }, - bsc: { - owners: [ - "0x3c02290922a3618a4646e3bbca65853ea45fe7c6", - "0x91Dca37856240E5e1906222ec79278b16420Dc92", - "0x9A768eCB4aadd70A3AA4A0F9748D7c9A98f14e4D", - "0xaBa3002AB1597433bA79aBc48eeAd54DC10A45F2", - "0xF077b0289016CDC8A9AE8196705A37f1AEFA5091", - "0x26B137B3B7A308Ed812F3120E453521c3ce91d82", - "0x442689F3F26cBcCc2E288DaEa986b9d67346149a", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.indodax, - }, - arbitrum: { - owners: [ - "0x3c02290922a3618a4646e3bbca65853ea45fe7c6", - "0x91Dca37856240E5e1906222ec79278b16420Dc92", - "0xF077b0289016CDC8A9AE8196705A37f1AEFA5091", - "0x26B137B3B7A308Ed812F3120E453521c3ce91d82", - "0x442689F3F26cBcCc2E288DaEa986b9d67346149a", - ], - }, - algorand: { - owners: [ - "AXKCE4MXLRGFTUBQY7PMQDBIDNNFRKBERZN2RCYL7RMH6NAEX5SWAERFYY", - "E6X462WQOSYOTSJD7BKPESAZPYFQRTQEJVRP2AWF3QWGYDG2J3VWJMFR4E", - "IAVWTKTCLQOGRGGNJ2DCWEASXD5K247OE3WKGIVTKGNPRURQXBZILTEXEU", - "UIGJ7VRNBLCLLXH6VRVUJRSHWJVCCPK6UURXZAY5POJYAR43N75ZLKRD7M", - ], - }, - base: { - owners: [ - "0x3c02290922a3618a4646e3bbca65853ea45fe7c6", - "0x91Dca37856240E5e1906222ec79278b16420Dc92", - "0xF077b0289016CDC8A9AE8196705A37f1AEFA5091", - "0x26B137B3B7A308Ed812F3120E453521c3ce91d82", - "0x442689F3F26cBcCc2E288DaEa986b9d67346149a", - ], - }, - cardano: { - owners: [ - "addr1q8dgvzrpa385vgs3wr9p3r0ns66327gwpgk6u0y6qp3nzjj3a3hmh3hw4kjhyc2tr2pt6m6jcl2t90s8nkpn6hcx9rrsl9ydew", - "addr1qxd2v6emtjaf53h8qywdux0jrdsny78djgkjvku6c2e3rk8d66hu9tv6g6ugspljr46mtytsyq7hsp8x80z3lcrvz7nq8lrr4x", - "addr1q9nj5y9yuth0yauwjcgl5dws56m652c3hvxnwkhc0pmhuaulecprn0pq0jlf6jk3spp6aheq2m9fpvuj6ehxufjkpm2sk3apes", - ], - }, - eos: { - owners: ["indodaxaccnt", "indodaxwarm1", "ckolov1tdndk"], - }, - ethereum: { - owners: [ - "0x3c02290922a3618a4646e3bbca65853ea45fe7c6", - "0x67f88fd04336a6c9f51e30e829689916b0b687f6", - "0x7b8ffA4fE43d1B476cFf9D0787FC0019Ca54e421", - "0x91Dca37856240E5e1906222ec79278b16420Dc92", - "0xa89aC9db17d4EA6da9f5C4bDFAe5454bf5B14A3f", - "0xC07582a7d47AA748DE45b526839A4eD505C6C370", - "0xF077b0289016CDC8A9AE8196705A37f1AEFA5091", - "0xFfB34a8e0F269073BD58659EBF1670B718f95F16", - "0x26B137B3B7A308Ed812F3120E453521c3ce91d82", - "0x442689F3F26cBcCc2E288DaEa986b9d67346149a", - ], - }, - linea: { - owners: ["0x26B137B3B7A308Ed812F3120E453521c3ce91d82"], - }, - litecoin: { - owners: [ - "ltc1qdtflxzvfem4ltwhn3l3zzajwgu6v8y9syrkm46", - "ltc1qzpxlrscqdzlu0qgdwegkqyedmr4lv55kelcck3", - "ltc1q8lsp224k25umn5h8thygqyvvunwgs7nv24ekxz", - "ltc1qeum4r6y35hx5lttql2zp7vw7y0kg7cu7lcwaeh", - ], - }, - optimism: { - owners: [ - "0x3c02290922a3618a4646e3bbca65853ea45fe7c6", - "0x91Dca37856240E5e1906222ec79278b16420Dc92", - "0xF077b0289016CDC8A9AE8196705A37f1AEFA5091", - "0x26B137B3B7A308Ed812F3120E453521c3ce91d82", - "0x442689F3F26cBcCc2E288DaEa986b9d67346149a", - ], - }, - polygon: { - owners: [ - "0x3c02290922a3618a4646e3bbca65853ea45fe7c6", - "0x51836a753e344257b361519e948ffcaf5fb8d521", - "0x91Dca37856240E5e1906222ec79278b16420Dc92", - "0xF077b0289016CDC8A9AE8196705A37f1AEFA5091", - "0x26B137B3B7A308Ed812F3120E453521c3ce91d82", - "0x442689F3F26cBcCc2E288DaEa986b9d67346149a", - ], - }, - solana: { - owners: [ - "4QXXp184iMKjL1ZTLrGtjMFvR2n2YhpUS1WypmzGaYB3", - "62D255w5Bg6Puq2fcJVdb9KLXAhqDQqQdMAbBRdxobLF", - "EjtCjDWj3HyL1a4dRritZLTtZrwvD3E1AAzp6evMUmVB", - "28RWPC6XPxSxUVjd27KiNRtcHVxKtd6cjms7eBcxiqdV", - "4QuB7hY3H512CLG1orbVrA7HTeXbBYCPxBpNfQ6gs5ru", - ], - }, - sui: { - owners: [ - "0xf0fb50fc82f0468b8c3ab5d7d03e03dd98f7bb46ba8efa4239d8e647643dd58d", - ], - }, - stellar: { - owners: [ - "GB6F7XAPRZYIW6PB6GXPXKTXQ6D6FYBXYUF3ZI7ASBVCZGRIFA26PW5L", - "GBJ2CSDO755C6U6ZAUEXRARHEX27Q6GPQEMX5EH4DV66GN2SX54AJDYK", - "GC4KAS6W2YCGJGLP633A6F6AKTCV4WSLMTMIQRSEQE5QRRVKSX7THV6S", - "GAZQTIWVPRKR7ALBT7TTIBK75YEPEJGHO3VY3K6YOV4WQ5RQ2N3VJNKT", - "GCCEW36L25SWYLNACCLR3IVV4R2EZ4GON5NQPPZ3UTIWAIQX6XTN4WMG", - ], - }, - tron: { - owners: [ - "TNthBvygp9YYR6FYnYdULUHcpzPBoBa2Em", - "TSZWxVKQbrZMzRKg7LLzrixF4eNesn7Gy7", - "TWe5pEnPDetzxgJS4uN26VFg15wWtdcTXc", - "THRtgADavi2epgFFTi129EYK6cgW1H7YbN", - "TWQfKZHArjoQob6i7tBxzdtWGbAqRK1Z6x", - ], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/indx/index.js b/projects/indx/index.js deleted file mode 100644 index 072debf565b..00000000000 --- a/projects/indx/index.js +++ /dev/null @@ -1,161 +0,0 @@ -// INDX Protocol TVL Adapter -// Handles both v2 and v3 index contracts - -const V2_ADDRESSES = [ - "0xe40106154d24a9c1400715366313f1620ecdf114", - "0x652c0bcb86b086a72857ccff7468c0ca7f0e82c1", - "0x5f7f8450ea171d683a21d3c5bb2f31a30985cb97", - "0x763df43d1a852d6debdfda34e569feabf78efbad", - "0xa10939130920bee3238b2a5cabc4bc605cce9a62", - "0xc312f7c7a5cfb8203fcd775f97c04efa4014435c", - "0x33174fbb5d893f2b95f28ad032fd5f80fa4c3542", - "0x8fe2bbc2a60b86bfef0256950636fb03a94b1a44", - "0xd06776e535b87be4ef73e9b072a9b797a2db9f36", - "0x72f2e28e418ceef10a7e78b04163e7ef2132c094", - "0xaf3b9bd14b96d24a9a6c2fa77243b8c488236d6d", - "0xb6f67fc88cc546d4001b17eb3685f0cab9892f65", - "0x14c11a6f813d075148a9964e71f74b602d667d51", - "0x7be276bed3a1a79c11dd5724a92ef38cdd5ddbfa", - "0xd8aa445b33298096f9d3fec4be9e04f03d2bc006", - "0xefeb5a4a3986e44095c44eda5daf1d7aa1539e10", - "0x1feb5976881a3cb7f55c7c87b52bda88c7a00a95", - "0xe5a945b49dbab576e10942f1d3ffbfdf2622b6fc", - "0x7f8be72844d84d12402e9c7037c1e8a9624b4be4", - "0xcc9cd5113fdb3f0436640af976b5aecda0fda4e7", - "0xd903758f5cb1408b9ba5886b343d5be99ab6ec51", - "0x1b3dd50307571622a28b4ec85fa88f5881f4331a", - "0xe260b1001d1d552f66124421826314bce21980de", - "0x9d31b6b36af31a2a657cd9179bb7217b94ebb53b", - "0xeda0dd115da6e45f8a1ccdf84b603e55677d54ab", - "0x1da464820b018b16a329eb0564a1566f24841b61", - "0x0d157f5e55cfe227fe307f5a625777e5457666ea", - "0xbc13052912fc59f8de541b56e7cc23e2cf030cbe", - "0x4cdcab7fde0925a2b6a4a99fe7dfc17012b90bac", - "0xf22856013e1282ca1e4d3d0dc0e0d7a3ecc18edd", - "0xda47a21132f27fcf794547d5542ee9c1a3823140", - "0x004fc5690ade46d581b85a4c443dfdabe4083032", - "0x88cb91ea8b1b2d513ff95c88e5b6d1220549d54c", - "0x0023d4bfde9216399bfe57f44d395dd9d575b5ef", - "0x3ea9d3675ea6f78f173a37082487c4f9c3ccd8d0", - "0x5ca629986190f5cb582c3bb13c94840b3a023c17", - "0xd747b1819e88b608f03d5c923fa86248a129141e", - "0x57bd7e2fcac7e3d31b730e0717525d19ecea8f2e", - "0xd63604d890972d3ed93d9ec3a4db03140c1a2682", - "0x9c75ed9b59fa0570ad24d608e0da12f3bf8e307e", - "0xA09f6E477e935f3145b7fd28091Ad896f941F0c5", - "0xd332d1b508ea2b23918873eef42276af0e46deed", - "0xeb98768f67a3d1378e5a3cbd7848643027c024c6", - "0xd2323d47cc48c4a7799baf90e97a8457740181f9", - "0x758d386be0a363b12ff73b09dec484ead826f8b5", - "0x5c5f9d64c68f3aaa433a551be6a4423d1f1d0e06", - "0x026e4f5c066495c9a282e3f59a94a3ccdf5934d6", - "0x724434b771be9bf2b639cbdc998efc16013170c9", - "0xbaa6c936150750fcc7765950a3092b9e4468f995", - "0x07a643f82fe44b7d58483320e4bf67cf33bc1b4d", - "0x92fd60ba502e3fca3c71b28b58bd194994327fc0", - "0x089e6bd925f11963daea2d4dea8c51c3cf562f75", - "0x4e9A00BDE25901f59272928723FF7934D999Fac1" - -]; - -const V3_ADDRESSES = [ - "0x871fbd1d0cbd80917d4f6fc5b1353d45b3ba68e4", - "0xd860dcd2f8b31dff84030b36c3160295a0d9cb39", - "0xbec4f4b9913f1e4e2fb37597cc61f393530502fd", - "0x3d169a9ceda1ba8cbedbbbd5a8abf976aa5a0f45", - "0xfa064ba05fef454a74c39c2dfbe13f4728b480f7", - "0xde80058973c55e4928be58c502231abef2c453f0" - -]; - -async function tvl(api) { - const tokenBalances = {}; - - // Process v2 contracts - get all numTokens at once - const numTokensCalls = V2_ADDRESSES.map(target => ({ target })); - const numTokensResults = await api.multiCall({ - calls: numTokensCalls, - abi: "uint256:NUM_TOKENS" - }); - - // Build calls for all token addresses and staked amounts - const tokenCalls = []; - const stakedCalls = []; - - for (let contractIndex = 0; contractIndex < V2_ADDRESSES.length; contractIndex++) { - const contractAddress = V2_ADDRESSES[contractIndex]; - const numTokens = Number(numTokensResults[contractIndex]); - - for (let tokenIndex = 0; tokenIndex < numTokens; tokenIndex++) { - tokenCalls.push({ - target: contractAddress, - params: [tokenIndex] - }); - stakedCalls.push({ - target: contractAddress, - params: [tokenIndex] - }); - } - } - - // Get all token addresses and staked amounts at once - const tokenAddresses = await api.multiCall({ - calls: tokenCalls, - abi: "function tokens(uint256) view returns (address)" - }); - - const stakedAmounts = await api.multiCall({ - calls: stakedCalls, - abi: "function totalStaked(uint256) view returns (uint256)" - }); - - // Process v2 results - for (let i = 0; i < tokenAddresses.length; i++) { - const tokenAddress = tokenAddresses[i]; - const stakedAmount = stakedAmounts[i]; - - if (stakedAmount && BigInt(stakedAmount) > 0n) { - if (!tokenBalances[tokenAddress]) { - tokenBalances[tokenAddress] = 0n; - } - tokenBalances[tokenAddress] += BigInt(stakedAmount); - } - } - - // Process v3 contracts - get all index info at once - const v3Calls = V3_ADDRESSES.map(target => ({ target })); - const v3Results = await api.multiCall({ - calls: v3Calls, - abi: "function getIndexInfo() view returns (address indexOwner, address curator, uint256 tokenCount, uint256 activeCount, address[] allTokens, bool[] activeStatus, uint256[] totalStakedAmounts, address[] activeTokensOnly)" - }); - - // Process v3 results - for (const indexInfo of v3Results) { - const [, , , , allTokens, activeStatus, totalStakedAmounts] = indexInfo; - - // Add balances for active tokens only - for (let i = 0; i < allTokens.length; i++) { - if (activeStatus[i] && totalStakedAmounts[i] > 0) { - const token = allTokens[i]; - if (!tokenBalances[token]) { - tokenBalances[token] = 0n; - } - tokenBalances[token] += BigInt(totalStakedAmounts[i]); - } - } - } - - // Add all token balances to the API - for (const [token, balance] of Object.entries(tokenBalances)) { - if (balance > 0) { - api.add(token, balance.toString()); - } - } -} - -module.exports = { - methodology: "TVL is calculated by summing the total staked amounts of all tokens across all INDX index contracts (both v2 and v3)", - base: { - tvl - } -}; diff --git a/projects/inertia-bridge/index.js b/projects/inertia-bridge/index.js deleted file mode 100644 index f1969ed14c1..00000000000 --- a/projects/inertia-bridge/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos.js'); - - -const mappings = { - "l2/1f79a9647aca83c63014709b7d4a69dd0f017b87ce9adf7417a2e2aa1c49044f": { - decimals: 6, id: "celestia", - }, - // "l2/6f04a5de88d7587507e4b93e03999bfabce6e8a4131d94d226ac3a020196bc3d": { - // decimals: 6, id: "", - // }, - "l2/93c226659c42299f98bdca46cf151a604a70be2e6391a61b67ae2311d556a46a": { - decimals: 6, id: "usd-coin", - }, - "l2/c88b68df2060ba982a80d3001afcb2d354031f6901df2391acb4f0e2f545c770": { - decimals: 6, id: "initia", - } -} - -module.exports = { - timetravel: false, - initia: { - tvl: async () => { - const balances = {} - const res = await queryV1Beta1({ - chain: "inertia", - url: "/bank/v1beta1/supply", - }); - - res.supply.map(({ denom, amount }) => { - if (denom in mappings) balances[`coingecko:${mappings[denom].id}`] = amount / 10 ** mappings[denom].decimals - else if (denom.startsWith("ibc/")) balances[`${denom.replace("/", ":")}`] = amount - }) - - return balances - }, - }, -}; \ No newline at end of file diff --git a/projects/inertia/index.js b/projects/inertia/index.js deleted file mode 100644 index d39018ea088..00000000000 --- a/projects/inertia/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { get } = require('../helper/http.js'); - -const assetMap = { - "l2/1f79a9647aca83c63014709b7d4a69dd0f017b87ce9adf7417a2e2aa1c49044f": { - decimals: 6, id: "celestia", - }, - // "l2/6f04a5de88d7587507e4b93e03999bfabce6e8a4131d94d226ac3a020196bc3d": { - // decimals: 6, id: "", - // }, - "l2/93c226659c42299f98bdca46cf151a604a70be2e6391a61b67ae2311d556a46a": { - decimals: 6, id: "usd-coin", - }, - "l2/c88b68df2060ba982a80d3001afcb2d354031f6901df2391acb4f0e2f545c770": { - decimals: 6, id: "initia", - } -} - -async function tvl(isBorrowed) { - const balances = {} - const res = await get('https://rest.inrt.fi/inertia/loan/v1/asset_states') - res.states.map(({ asset_state }) => { - const { denom, share_deposited, share_lent } = asset_state - if (!assetMap[denom]) return - const { decimals, id } = assetMap[denom] - balances[id] = (isBorrowed ? share_lent : (share_deposited - share_lent)) / 10 ** decimals - }) - - return balances -} -module.exports = { - timetravel: false, - inertia: { - tvl: () => tvl(false), - borrowed: () => tvl(true) - } -}; \ No newline at end of file diff --git a/projects/infdex/index.js b/projects/infdex/index.js deleted file mode 100644 index 731d0c17737..00000000000 --- a/projects/infdex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const factory = '0x6701E10b02F4131003510f95419F4EeA59484007' - -module.exports = uniV3Export({ - merlin: { factory, fromBlock: 12099773, } -}) \ No newline at end of file diff --git a/projects/infiniFi/index.js b/projects/infiniFi/index.js deleted file mode 100644 index b5125408f5a..00000000000 --- a/projects/infiniFi/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const registry = '0x7A5C5dbA4fbD0e1e1A2eCDBe752fAe55f6E842B3' - -const abis = { - farmRegistry: 'address:farmRegistry', - getFarms: "function getFarms() external view returns (address[] memory)", - assets: "function assets() external view returns (uint256)", - assetToken: "function assetToken() external view returns (address)" -} - -const tvl = async (api) => { - const farmsRegistry = await api.call({ abi: abis.farmRegistry, target: registry }) - const farms = await api.call({ abi: abis.getFarms, target: farmsRegistry }) - const [balances, tokens] = await Promise.all([ - await api.multiCall({ calls: farms, abi: abis.assets }), - await api.multiCall({ calls: farms, abi: abis.assetToken }) - ]) - - farms.forEach((_, i) => { - api.add(tokens[i], balances[i]) - }) -} - -module.exports = { - methodology: 'TVL of the protocol is the value of all asssets deposited in the protocol kept in the accounting contract', - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/infinite/index.js b/projects/infinite/index.js deleted file mode 100644 index 5b7c53d3aa0..00000000000 --- a/projects/infinite/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const ITP_VAULT_ADDRRESS= '0x23371aEEaF8718955C93aEC726b3CAFC772B9E37' -const ITP_ON_OPTIMISM = "0x0a7B751FcDBBAA8BB988B9217ad5Fb5cfe7bf7A0"; -const VELO_PRICE_ORACLE = "0x395942C2049604a314d39F370Dfb8D87AAC89e16"; -const WETH_TOKEN_ADDRESS = ADDRESSES.optimism.WETH_1; -const VELO_TOKEN_ADDRESS = "0x3c8b650257cfb5f272f799f5e2b4e65093a11a05"; -const OP_TOKEN_ADDRESS = ADDRESSES.optimism.OP; -const USDC_OP_TOKEN_ADDRESS = ADDRESSES.optimism.USDC_CIRCLE; -const ITP_STAKED_ABI = "function getVaultInfo() view returns (uint256, uint256, uint256, uint256, uint256, uint256[], uint256)"; - -const getStakedTVL = async (api) => { - const { chain } = api - let stakedTVL = 0; - if(chain === 'optimism'){ - const fetchVeloPrice = await api.call( { - abi: "function getManyRatesWithConnectors(uint8, address[]) view returns (uint256[] memory rates)", - target: VELO_PRICE_ORACLE, - params: [ - 1, - [ - ITP_ON_OPTIMISM, - VELO_TOKEN_ADDRESS, - WETH_TOKEN_ADDRESS, - OP_TOKEN_ADDRESS, - USDC_OP_TOKEN_ADDRESS, - ], - ], - }) - const price = parseInt(fetchVeloPrice[0]) / Math.pow(10, 18) - - const stakedBalance = await api.call({ - abi: ITP_STAKED_ABI, - target: ITP_VAULT_ADDRRESS, - }); - const staked = parseInt(stakedBalance[0]) / Math.pow(10, 18) - stakedTVL = staked * price - } - api.addUSDValue(stakedTVL) -} - -module.exports = { - optimism: { - tvl: () => ({}), - staking: getStakedTVL - }, -} diff --git a/projects/infinity-hedge-fund/index.js b/projects/infinity-hedge-fund/index.js deleted file mode 100644 index f354c5563af..00000000000 --- a/projects/infinity-hedge-fund/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { staking } = require('../helper/staking') -module.exports = { - base: { - tvl: () => ({}), - staking: staking('0x042Fef60aD51f48C65E6106F9b950178910A3300', '0x3B9728bD65Ca2c11a817ce39A6e91808CceeF6FD'), - } -} diff --git a/projects/infinityPools/index.js b/projects/infinityPools/index.js deleted file mode 100644 index 072a05f215c..00000000000 --- a/projects/infinityPools/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - base: { factory: '0x86342D7bBe93cB640A6c57d4781f04d93a695f08', fromBlock: 24888600, peripheryVault: '0xF8FAD01B2902fF57460552C920233682c7c011a7' } -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, peripheryVault } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, fromBlock, eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, int256 splits, address pool, uint8 decimals0, uint8 decimals1)' }) - const ownerTokens = [] - - for (let { token0, token1, pool } of logs) { - ownerTokens.push([[token0, token1], pool]) - ownerTokens.push([[token0, token1], peripheryVault]) - } - - return sumTokens2({ api, ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/infinitypad/contracts.json b/projects/infinitypad/contracts.json deleted file mode 100644 index fec31c8571f..00000000000 --- a/projects/infinitypad/contracts.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "chains": [ - "bsc", - "celo", - "fuse" - ], - "stakingContractBsc": "0xcf5180580c3c300cd9714d28813d4907123b0490", - "stakingTokenBsc": "0xf07dfc2ad28ab5b09e8602418d2873fcb95e1744", - "stakingTokenLp": "0x1998be7f13608e62eac2da735d88a576db3d9eea" -} \ No newline at end of file diff --git a/projects/infinitypad/index.js b/projects/infinitypad/index.js deleted file mode 100644 index 6e6832ebbd9..00000000000 --- a/projects/infinitypad/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { stakings, staking, } = require("../helper/staking"); -const contracts = require("./contracts.json"); -const { getConfig } = require('../helper/cache'); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -async function fetchBalances(api, contracts) { - const data = contracts[api.chain] - if (!data) return api.getBalances(); - return sumTokens2({ api, tokensAndOwners: Object.values(data).map(c => ([c.tokenAddress, c.tokenHolder])), blacklistedTokens: ['0x3dde01a467f99e58f996de835058c767a3edd2ac']}) -} - -// node test.js projects/infinitypad/index.js -function tvl() { - return async (api) => { - const vestingContracts = (await getConfig('infinitypad', "https://api.infinitypad.com/get-all-vesting-contracts")); - const clientVesting = {}; - for (const vestingContract of vestingContracts) { - if (!clientVesting[vestingContract.chain_name]) { - clientVesting[vestingContract.chain_name] = {}; - } - clientVesting[vestingContract.chain_name][vestingContract.vesting_smart_contract_address] = { - tokenHolder: vestingContract.vesting_smart_contract_address, - tokenAddress: vestingContract.token_address - }; - } - - return fetchBalances(api, clientVesting) - }; -} - -const chainTVLObject = contracts.chains.reduce( - (agg, chain) => ({ ...agg, [chain]: { tvl: tvl(chain) } }), {} -); - -chainTVLObject.bsc.staking = stakings( - [contracts.stakingContractBsc], - contracts.stakingTokenBsc, -); - -chainTVLObject.bsc.pool2 = staking( - [contracts.stakingContractBsc], - [contracts.stakingTokenLp], -); - -module.exports = { - ...chainTVLObject -}; \ No newline at end of file diff --git a/projects/infrared-finance/index.js b/projects/infrared-finance/index.js deleted file mode 100644 index feb976cd954..00000000000 --- a/projects/infrared-finance/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs') - -async function tvl(api) { - - // Get total deposits in the protocol - const totalDeposits = await api.call({ target: "0x9b6761bf2397Bb5a6624a856cC84A3A14Dcd3fe5", abi: 'uint256:deposits', }) - // Add BERA balance to TVL - // Using null address for native token (BERA) - api.add(ADDRESSES.null, totalDeposits) - - - const logs = await getLogs2({ api, factory: '0xb71b3DaEA39012Fb0f2B14D2a9C86da9292fC126', eventAbi: 'event NewVault (address _sender, address indexed _asset, address indexed _vault)', fromBlock: 562092, }) - const vaults = logs.map(log => log._vault) - const assets = await api.multiCall({ abi: 'address:stakingToken', calls: vaults }) - const balances = await api.multiCall({ abi: 'uint256:totalSupply', calls: vaults }) - api.add(assets, balances) -} - -module.exports = { - doublecounted: true, - berachain: { - tvl - }, -} \ No newline at end of file diff --git a/projects/infusion/index.js b/projects/infusion/index.js deleted file mode 100644 index 4b751f0c0ad..00000000000 --- a/projects/infusion/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - base: { - tvl: getUniTVL({ factory: '0x2D9A3a2bd6400eE28d770c7254cA840c82faf23f', hasStablePools: true, useDefaultCoreAssets: true, }), - }, -} diff --git a/projects/infy/index.js b/projects/infy/index.js deleted file mode 100644 index 5a30ffef977..00000000000 --- a/projects/infy/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvlPolygon(time, ethB, { polygon: block }) { - const escrows = ["0xCf311a6606c909Cc5E048FE1f3FF1e63dEec6a26", "0x4fF4C17F24d03Faf9d5097D7E71310AeF71a0f70", "0x9C5dA47ED0281aF302ED1E77a1B961ed980d5385"] - const tokens = [ - ADDRESSES.polygon.WETH_1, //weth - ADDRESSES.polygon.DAI, //dai - ADDRESSES.polygon.USDC, //usdc - ADDRESSES.polygon.USDT, //usdt - "0x2e1AD108fF1D8C782fcBbB89AAd783aC49586756", //tusd - ] - return sumTokens2({ owners: escrows, tokens, chain: 'polygon', block, }) -} - -async function tvlKava(time, ethB, { kava: block }) { - const escrows = [ - "0x858feeb9D751A07aF2D7b5ad7fa996B30261a891", - "0x4dA60d2646a8ed5461457012f5cd7b87905E9e55", - "0xEc12AB0306A3bbDa93aACC2BE931F8A8343bCEA3" - ] - const tokens = [ - ADDRESSES.moonriver.USDC, //weth - ADDRESSES.shiden.ETH, //dai - ADDRESSES.telos.ETH, //usdc - ADDRESSES.moonriver.USDT, //usdt - ] - return sumTokens2({ owners: escrows, tokens, chain: 'kava', block, }) -} -module.exports = { - methodology: `Gets the tokens on escrows for Polygon and Kava`, - polygon: { - tvl: tvlPolygon - }, - kava: { - tvl: tvlKava - } -} \ No newline at end of file diff --git a/projects/init-capital/index.js b/projects/init-capital/index.js deleted file mode 100644 index 1e809208256..00000000000 --- a/projects/init-capital/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { getConfig } = require("../helper/cache"); - -const POOL_DATA_URI = "https://app.init.capital/static/json/pools.json"; - -const tvl = async (api) => { - const allPoolData = await getConfig("init-capital", POOL_DATA_URI); - const chainId = api.getChainId(); - - const tokens = Object.keys(allPoolData[chainId]).map( - (pool) => allPoolData[chainId][pool].underlyingToken - ); - - let pools = []; - - if (chainId === 81457) { - pools = Object.keys(allPoolData[chainId]).map( - (pool) => allPoolData[chainId][pool].rebaseWrapperAddress ?? allPoolData[chainId][pool].poolAddress - ); - } else { - pools = Object.keys(allPoolData[chainId]); - } - - return api.sumTokens({ tokensAndOwners2: [tokens, pools] }); -}; - -const borrowed = async (api) => { - const allPoolData = await getConfig("init-capital", POOL_DATA_URI); - const chainId = api.getChainId(); - const pools = Object.keys(allPoolData[chainId]); - const tokens = Object.keys(allPoolData[chainId]).map( - (pool) => allPoolData[chainId][pool].underlyingToken - ); - - let debts = await api.multiCall({ abi: "uint256:totalDebt", calls: pools }); - - if (chainId === 81457) { - debts = await api.multiCall({ - calls: debts.map((debt, i) => ({ - target: allPoolData[chainId][pools[i]].rebaseWrapperAddress ?? allPoolData[chainId][pools[i]].poolAddress, - params: [debt], - })), - abi: "function toAmt(uint256) returns (uint256)", - }); - } - api.addTokens(tokens, debts); -}; - -module.exports = { - methodology: - "Count all the underlying locked and borrowed under every INIT Lending Pools", - mantle: { - tvl, - borrowed, - }, - blast: { - tvl, - borrowed, - }, -}; diff --git a/projects/initia-dex/index.js b/projects/initia-dex/index.js deleted file mode 100644 index 506566175bb..00000000000 --- a/projects/initia-dex/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { get } = require('../helper/http') -async function tvl(api) { - - let paginationKey = '' - - do { - const { pools, pagination } = await get(`https://dex-api.initia.xyz/indexer/dex/v1/pools?type=ALL&pagination.count_total=true&pagination.key=${paginationKey}&pagination.limit=100`) - paginationKey = pagination.next_key - pools.forEach(pool => { - api.addUSDValue(pool.liquidity/1e6) - }) - } while (paginationKey) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: 'TVL is calculated as the sum of all pool liquidity', - initia: { - tvl - } -} \ No newline at end of file diff --git a/projects/injective-orderbook-spot/index.js b/projects/injective-orderbook-spot/index.js deleted file mode 100644 index 75da5bb07c9..00000000000 --- a/projects/injective-orderbook-spot/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getOrderBookTvl, TYPES } = require('../injective-orderbook/util') - -module.exports = { - timetravel: false, - injective: { - tvl: getOrderBookTvl(TYPES.SPOT), - } -} \ No newline at end of file diff --git a/projects/injective-orderbook/api.js b/projects/injective-orderbook/api.js deleted file mode 100644 index 5e8f376fd63..00000000000 --- a/projects/injective-orderbook/api.js +++ /dev/null @@ -1,40 +0,0 @@ -const { getMarkets, getOrders, TYPES } = require('../helper/chain/injective') -const sdk = require('@defillama/sdk') -const { default: BigNumber } = require('bignumber.js') - -function getOrderBookTvl(typeStr) { - return async (api) => { - const markets = await getMarkets({ type: typeStr }) - const orders = await getOrders({ type: typeStr, marketIds: markets.map(i => i.marketId) }) - const marketObj = {} - for (const market of markets) - marketObj[market.marketId] = market - - for (const order of orders) marketObj[order.marketId].orderbook = order.orderbook - for (const { quoteDenom, baseDenom, orderbook: { buys, sells, } } of markets) { - for (const { price, quantity } of buys) - api.add(quoteDenom, BigNumber(quantity * price).toFixed(0)) - - for (const { quantity } of sells) { - - if (typeStr === TYPES.SPOT) { - api.add(baseDenom, BigNumber(quantity).toFixed(0)) - } else if (typeStr === TYPES.DERIVATIVES) { - const price = buys.length ? buys[0].price : 0 - api.add(quoteDenom, BigNumber(quantity * price).toFixed(0)) - } - } - } - return api.getBalances() - } -} - -module.exports = { - timetravel: false, - injective: { - tvl: sdk.util.sumChainTvls([ - getOrderBookTvl(TYPES.SPOT), - getOrderBookTvl(TYPES.DERIVATIVES), - ]) - } -} diff --git a/projects/injective-orderbook/index.js b/projects/injective-orderbook/index.js deleted file mode 100644 index 7a7a4304fd2..00000000000 --- a/projects/injective-orderbook/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getOrderBookTvl, TYPES } = require('./util') - -module.exports = { - timetravel: false, - injective: { - tvl: getOrderBookTvl(TYPES.DERIVATIVES), - } -} \ No newline at end of file diff --git a/projects/injective-orderbook/util.js b/projects/injective-orderbook/util.js deleted file mode 100644 index 8a0d89ff562..00000000000 --- a/projects/injective-orderbook/util.js +++ /dev/null @@ -1,39 +0,0 @@ -const { injective: { getMarkets, getOrders } } = require('../helper/chain/rpcProxy') - -const TYPES = { - BANK: 'BANK', - SPOT: 'SPOT', - DERIVATIVES: 'DERIVATIVES', -} - -function getOrderBookTvl(typeStr) { - return async (api) => { - const markets = await getMarkets({ type: typeStr }) - const orders = await getOrders({ type: typeStr, marketIds: markets.map(i => i.marketId) }) - const marketObj = {} - for (const market of markets) - marketObj[market.marketId] = market - - for (const order of orders) marketObj[order.marketId].orderbook = order.orderbook - for (const { quoteDenom, baseDenom, orderbook: { buys, sells, } } of markets) { - for (const { price, quantity } of buys) - api.add(quoteDenom, Math.floor(quantity * price)) - - for (const { quantity } of sells) { - - if (typeStr === TYPES.SPOT) { - api.add(baseDenom, Math.floor(quantity)) - } else if (typeStr === TYPES.DERIVATIVES) { - const price = buys.length ? buys[0].price : 0 - api.add(quoteDenom, Math.floor(quantity * price)) - } - } - } - return api.getBalances() - } -} - -module.exports = { - TYPES, - getOrderBookTvl -} \ No newline at end of file diff --git a/projects/injective/index.js b/projects/injective/index.js deleted file mode 100644 index 3c0569a0be5..00000000000 --- a/projects/injective/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - methodology: 'TVL accounts for all liquidity on the Injective chain, using the chain\'s bank module as the source.', - ethereum: { tvl: sumTokensExport({ owner: '0xf955c57f9ea9dc8781965feae0b6a2ace2bad6f3', fetchCoValentTokens: true, blacklistedTokens: ['0xe28b3B32B6c345A34Ff64674606124Dd5Aceca30'], logCalls: true }) }, -}; diff --git a/projects/injera/index.js b/projects/injera/index.js deleted file mode 100644 index 0b7fd40df0b..00000000000 --- a/projects/injera/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokens} = require('../helper/chain/cosmos'); - -const addresses = { - injective: { - redBank: 'inj1dffuj4ud2fn7vhhw7dec6arx7tuyxd56srjwk4', - creditManager: 'inj1da4kst7293x7g43sxdx6hnppkqmr5aaf2hanhj', - params: 'inj1xuf0xk9583ry4wczmxulleuhrw6dqtlnvvcx56' - }, -} - -async function injectiveTVL() { - let balances = {}; - await addRedBankTvl(balances, 'injective'); - return balances; -} - - -async function addRedBankTvl(balances, chain) { - let a = await sumTokens({balances, owners: [addresses[chain].redBank], chain}); - return a -} - -module.exports = { - timetravel: false, - methodology: 'For Injective chain, sum token balances in Bank/Credit Manager smart contracts to approximate net deposits, plus vault underlying assets held', - injective: { - tvl: injectiveTVL, - }, -}; diff --git a/projects/ink-protocol/index.js b/projects/ink-protocol/index.js deleted file mode 100644 index 7b50bf0ef0c..00000000000 --- a/projects/ink-protocol/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const {fetchURL} = require('../helper/utils'); - -async function tvl() { - const coreUrl = 'https://lcd.terra.dev/wasm/contracts/terra1nlsfl8djet3z70xu2cj7s9dn7kzyzzfz5z2sd9/store?query_msg=%7B%22strategy%22:%7B%22sid%22:0%7D%7D' - const interestUrl = 'https://lcd.terra.dev/wasm/contracts/terra1v579mvp2xxw3st7glgaurfla5pxses0jdwedde/store?query_msg=%7B%22total_vault_info%22:%7B%7D%7D' - - const core = await fetchURL(coreUrl) - const interest = await fetchURL(interestUrl) - - return { - 'terrausd': (core.data.result.total_deposit.amount / 1e6) + (interest.data.result.anchor / 1e6) - } -} - -module.exports = { - methodology: 'TVL counts the UST that users deposited into Ink Protocol', - terra: { - tvl: () => ({}), - }, - hallmarks:[ - [1651881600, "UST depeg"], - ] -} - - -module.exports.deadFrom = '2022-05-26' \ No newline at end of file diff --git a/projects/ink/index.js b/projects/ink/index.js deleted file mode 100644 index 960c3f15990..00000000000 --- a/projects/ink/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x88FF1e5b602916615391F55854588EFcBB7663f0", - "0x5d66C1782664115999C47c9fA5cd031f495D3e4F", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/inkswap/index.js b/projects/inkswap/index.js deleted file mode 100644 index 4e3cead06b8..00000000000 --- a/projects/inkswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - ink: '0xBD5B41358A6601924F1Fd708aF1535a671f530A9' -}) \ No newline at end of file diff --git a/projects/inkyswap/index.js b/projects/inkyswap/index.js deleted file mode 100644 index 6f52f46f15b..00000000000 --- a/projects/inkyswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - ink: '0x458C5d5B75ccBA22651D2C5b61cB1EA1e0b0f95D' -}) \ No newline at end of file diff --git a/projects/insrt_finance/index.js b/projects/insrt_finance/index.js deleted file mode 100644 index c17924ebc13..00000000000 --- a/projects/insrt_finance/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const fidenzavault = '0xfCEed70c8E9f38A0c3A0062D40d0Ab06493063a1' -const rockvault = '0x185B6B13Be7cEfa99262AF1F78ae87213E4DDD3d' -const baycvault2 = '0x417c53C3B63a03aeb614b7b625ae84Cfc7eecD1c' -const squigglevault = '0x5D40A087cec071cd3b8A7AF4B45b3D56D6c3f952' -const penguvault = '0x8facab18b9f4cd1a9f90876290c9bfa238cd4e45' -const miladyvault = '0x861ff455dcd810895cb4050460e4b6a47fec3304' -const insrtVaults = [ fidenzavault, rockvault, baycvault2, squigglevault, penguvault, miladyvault ] -const vaulttokens = [nullAddress, '0xa3f5998047579334607c47a6a2889bf87a17fc02', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', '0x524cab2ec69124574082676e6f654a18df49a048', '0x062e691c2054de82f28008a8ccc6d7a1c8ce060d', '0x5Af0D9827E0c53E4799BB226655A1de152A425a5' ] - -async function tvl(api) { - await vaultTvl(api, [punkvault, baycvault, ]) - return sumTokens2({ api, owners: insrtVaults , tokens: vaulttokens, resolveArtBlocks: true, }) -} - -// ERC721 Vaults -const punkvault = "0x70993a6dfe0ef2d5253d6498c18d815a6c139163" -const baycvault = "0x6d0c967b6e24ae33c015595aaa2303001af4055d" - -async function vaultTvl(api, vaults) { - const colls = await api.multiCall({ abi: 'address:collection', calls: vaults}) - const ids = await api.multiCall({ abi: 'uint256[]:ownedTokenIds', calls: vaults}) - api.addTokens(colls,ids.map(i=> i.length)) -} - -module.exports = { - methodology: `Value of all the NFTs held by the insrt finance's vaults`, - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/instadapp-lite/index.js b/projects/instadapp-lite/index.js deleted file mode 100644 index 781623bfe5b..00000000000 --- a/projects/instadapp-lite/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const vaults = [ - { "vault": "0xc383a3833A87009fD9597F8184979AF5eDFad019", "token": ADDRESSES.null }, - { "vault": "0xc8871267e07408b89aA5aEcc58AdCA5E574557F8", "token": ADDRESSES.ethereum.USDC }, - { "vault": "0xEC363faa5c4dd0e51f3D9B5d0101263760E7cdeB", "token": ADDRESSES.ethereum.WBTC }, - { "vault": "0x40a9d39aa50871Df092538c5999b107f34409061", "token": ADDRESSES.ethereum.DAI } -] -const vaultsV2 = ["0xA0D3707c569ff8C87FA923d3823eC5D81c98Be78"] - -async function tvl(api) { - const calls = vaults.map(v => ({ target: v.vault })) - let prices - try { - prices = await api.multiCall({ - calls, - abi: "function getCurrentExchangePrice() public view returns (uint256 exchangePrice_, uint256 newTokenRevenue_)" - }) - } catch { - prices = await api.multiCall({ - calls, - abi: 'uint256:lastRevenueExchangePrice' - }) - } - const supply = await api.multiCall({ - calls, - abi: "erc20:totalSupply" - }) - prices.forEach((price, i)=>api.add(vaults[i].token, price.exchangePrice_*supply[i]/1e18)) - return api.erc4626Sum({ calls: vaultsV2, tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets' }); -} - -module.exports = { - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/instadapp.js b/projects/instadapp.js deleted file mode 100644 index facf14909c2..00000000000 --- a/projects/instadapp.js +++ /dev/null @@ -1,23 +0,0 @@ -const {toUSDTBalances} = require('./helper/balances') -const { get } = require('./helper/http') - -async function fetch() { - const stats = ( - await get( - "https://api.internal.instadapp.io/defi/api/stats/instadapp/overall?limit=1&offset=0" - ) - ).stats[0]; - - return toUSDTBalances(stats.totalSupplied); -} - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - timetravel: false, - ethereum: { - tvl: fetch, - }, - -} -// node test.js projects/instadapp.js \ No newline at end of file diff --git a/projects/instrumental/index.js b/projects/instrumental/index.js deleted file mode 100644 index cedeabd2268..00000000000 --- a/projects/instrumental/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking"); - -// Sushi LP Staking + locking on Mainnet -const STRM_ETH_sushi = "0xb301d7efb4d46528f9cf0e5c86b065fbc9f50e9a"; -const LP_staking = "0xc5124896459d3c219be821d1a9146cd51e4bc759"; -const LP_locking = "0x4f4f6b428af559db1dbe3cb32e1e3500deffa799"; -const STRM = "0x0edf9bc41bbc1354c70e2107f80c42cae7fbbca8"; -const veSTRM = "0x62ae88697782f474b2537b890733cc15d3e01f1d"; - -module.exports = { - ethereum: { - tvl: () => ({}), - pool2: staking([LP_staking, LP_locking], [STRM_ETH_sushi]), - staking: staking(veSTRM, STRM), // vote escrowed STRM, TVL corresponds - }, - methodology: - "Instrumental can be LP'ed and LP can be staked or locked (pool2s). Plus STRM itself can be locked against veSTRM (staking). Vaults coming soon.", -}; diff --git a/projects/insurace/index.js b/projects/insurace/index.js deleted file mode 100644 index e212f2237aa..00000000000 --- a/projects/insurace/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const { getConfig } = require('../helper/cache') - -const config = { - ethereum: { - endpoint: "https://files.insurace.io/public/defipulse/ethPools.json", - INSUR: '0x544c42fBB96B39B21DF61cf322b5EDC285EE7429', - stakingPool: ['0x136D841d4beCe3Fc0E4dEbb94356D8b6B4b93209', '0xaFc3A52BF951c3540883e7156EaBA030E444328b'], - pool2Pool: '0x136D841d4beCe3Fc0E4dEbb94356D8b6B4b93209', - pool2Token: '0x169BF778A5eADAB0209C0524EA5Ce8e7a616E33b', - }, - bsc: { - endpoint: "https://files.insurace.io/public/defipulse/bscPools.json", - INSUR: '0x3192CCDdf1CDcE4Ff055EbC80f3F0231b86A7E30', - stakingPool: ['0xd50E8Ce9D5c1f5228BCC77E318907bB4960578eF', '0x8937f826526076c74401edDCd19a41DE3d09D76d'], - }, - polygon: { - endpoint: "https://files.insurace.io/public/defipulse/polygonPools.json", - INSUR: '0x8a0e8b4b0903929f47C3ea30973940D4a9702067', - stakingPool: ['0xD2171aBb60D2994CF9aCB767F2116Cf47BBF596F', '0xE8DBB5F68DE0aC5d4015737a27977db809cAC27D'], - }, - avax: { - endpoint: "https://files.insurace.io/public/defipulse/avalanchePools.json", - INSUR: '0x544c42fBB96B39B21DF61cf322b5EDC285EE7429', - stakingPool: ['0xF851cBB9940F8bAebd1D0EaF259335c108E9E893', '0x645844f595309deB4637e184B366360807a2D986'], - }, -} - - -Object.keys(config).forEach(chain => { - const { endpoint, INSUR, stakingPool, pool2Pool, pool2Token, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let blacklistedTokens = [] - if (INSUR) blacklistedTokens.push(INSUR) - if (pool2Token) blacklistedTokens.push(pool2Token) - blacklistedTokens = blacklistedTokens.flat() - const { pools } = await getConfig('insurace/'+api.chain, endpoint); - return sumTokens2({ api, blacklistedTokens, tokensAndOwners: pools.map(pool => [pool.PoolToken, pool.StakersPool])}) - } - } - if (INSUR && stakingPool) - module.exports[chain].staking = staking(stakingPool, INSUR) - - if (pool2Pool && pool2Token) - module.exports[chain].pool2 = pool2(pool2Pool, pool2Token) -}) diff --git a/projects/insuredao/index.js b/projects/insuredao/index.js deleted file mode 100644 index e89c80c2542..00000000000 --- a/projects/insuredao/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require('../helper/unwrapLPs'); - -// addresses pools - -const usdc = ADDRESSES.ethereum.USDC; -const insure = "0xd83AE04c9eD29d6D3E6Bf720C71bc7BeB424393E"; - -const VotingEscrow = "0x3dc07E60ecB3d064d20c386217ceeF8e3905916b"; -const vlINSURE = "0xA12ab76a82D118e33682AcB242180B4cc0d19E29"; - -const uni = "0x1b459aec393d604ae6468ae3f7d7422efa2af1ca"; -const uniStaking = "0xf57882cf186db61691873d33e3511a40c3c7e4da"; - -async function staking(api) { - const veinsureBalances = await api.call({ abi: 'uint256:supply', target: VotingEscrow}) - api.add(insure, veinsureBalances) - return api.sumTokens({ owner: vlINSURE, token: insure}) -} - -async function pool2(api) { - return sumTokens2({api, owner: uniStaking, token: uni, resolveLP: true}) -} - -const config = { - ethereum: '0x131fb74c6fede6d6710ff224e07ce0ed8123f144', - arbitrum: '0x968C9718f420d5D4275C610C5c217598a6ade9f9', - optimism: '0x54F23d2fdC1E17D349B1Eb14d869fa4deD6A6D2b', - astar: '0x190dA1B9fA124BD872e9166bA3c7Dd656A11E8F8', -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - const vault = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const bal = await api.call({ - target: vault, - abi: 'uint256:valueAll', - }) - return { [usdc]: bal} - } - } -}) - -module.exports.ethereum.staking = staking -module.exports.ethereum.pool2 = pool2 diff --git a/projects/insuredefi/abi.json b/projects/insuredefi/abi.json deleted file mode 100644 index 5a9ba21a185..00000000000 --- a/projects/insuredefi/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "totalPledge": "uint256:totalPledge", - "totalStake": "uint256:totalStake", - "totalSupply": "uint256:totalSupply", - "balanceOf": "function balanceOf(address account) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/insuredefi/index.js b/projects/insuredefi/index.js deleted file mode 100644 index 2e3c631b6af..00000000000 --- a/projects/insuredefi/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const constant = { - treasuryPool: { - address: "0xF4b2aa60Cd469717857a8A4129C3dB9108f54D74", - } -}; - -let SURE = '0xcb86c6a22cb56b6cf40cafedb06ba0df188a416e'; - - -module.exports = { - start: '2017-12-18', // 2020/10/21 6:34:47 (+UTC) - ethereum: { tvl: sumTokensExport({ owner: constant.treasuryPool.address, token: SURE}) } -}; - diff --git a/projects/integral/index.js b/projects/integral/index.js deleted file mode 100644 index e9f64327e03..00000000000 --- a/projects/integral/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)' - -const sizeTVL = getUniTVL({ factory: '0xC480b33eE5229DE3FbDFAD1D2DCD3F3BAD0C56c6', abis: { getReserves } }) -const sizeTVLArbi = getUniTVL({ factory: '0x717EF162cf831db83c51134734A15D1EBe9E516a', abis: { getReserves } }) - -module.exports = { - ethereum: { tvl: sizeTVL }, - arbitrum: { tvl: sizeTVLArbi }, -}; diff --git a/projects/intentx.js b/projects/intentx.js deleted file mode 100644 index 81ac0842b54..00000000000 --- a/projects/intentx.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { request } = require("graphql-request"); - -const config = { - blast: { token: ADDRESSES.blast.USDB, start: 1710115200, graphUrl: "https://api.goldsky.com/api/public/project_cm0bho0j0ji6001t8e26s0wv8/subgraphs/intentx-blast-analytics-083/latest/gn", accountSource: '0x083267D20Dbe6C2b0A83Bd0E601dC2299eD99015'}, - base: { token: ADDRESSES.base.USDbC, start: 1700006400, graphUrl: "https://api.goldsky.com/api/public/project_cm0bho0j0ji6001t8e26s0wv8/subgraphs/intentx-base-analytics-083/latest/gn", accountSource: '0x8Ab178C07184ffD44F0ADfF4eA2ce6cFc33F3b86'}, - mantle: { token: ADDRESSES.mantle.USDC, start: 1712966400, graphUrl: "https://api.goldsky.com/api/public/project_cm0bho0j0ji6001t8e26s0wv8/subgraphs/intentx-mantle-analytics-083/latest/gn", accountSource: '0xECbd0788bB5a72f9dFDAc1FFeAAF9B7c2B26E456' }, - arbitrum: { token: ADDRESSES.arbitrum.USDC, start: 1712966400, graphUrl: "https://api.goldsky.com/api/public/project_cm0bho0j0ji6001t8e26s0wv8/subgraphs/intentx-arbitrum-analytics-083/latest/gn", accountSource: '0x141269e29a770644c34e05b127ab621511f20109' }, -} - -async function tvl(api) { - const { token, graphUrl, start, accountSource } = config[api.chain] - const from = start.toString() - const to = api.timestamp.toString() - - const query = ` - query stats($from: String!, $to: String!) { - dailyHistories( - where: { - timestamp_gte: $from - timestamp_lte: $to - accountSource: "${accountSource}" - } - ) { - timestamp - platformFee - accountSource - tradeVolume - deposit - withdraw - } - } - ` - const { dailyHistories } = await request(graphUrl, query, { from, to }) - let total = dailyHistories.reduce((acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), 0); - if (api.chain === 'mantle') total /= 1e12 - api.add(token, total) -} - -module.exports = { - start: config.base.start, - hallmarks: [ - [config.base.start, "Open Beta Start"], - [1704200400, "0.8.2 Migration"], - [config.blast.start, "Blast Deploy"], - [config.mantle.start, "Mantle Deploy"], - [1725753600, "0.8.3 Migration"] - ], -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: chain === 'blast' ? () => ({}) : tvl - } -}) diff --git a/projects/intercroneswap/index.js b/projects/intercroneswap/index.js deleted file mode 100644 index d03be82b2c6..00000000000 --- a/projects/intercroneswap/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getUniTVL } = require('../helper/unknownTokens.js') - -const TRON_FACTORY_V2 = 'TPvaMEL5oY2gWsJv7MDjNQh2dohwvwwVwx' -const TRON_FACTORY_V1 = 'TJL9Tj2rf5WPUkaYMzbvWErn6M8wYRiHG7' -const factories = { - bsc: "0xFa51B0746eb96deBC619Fd2EA88d5D8B43BD8230", - bittorrent: "0x0cEE0dFb5C680e3CcAA46FA28D5057f204E24F0a", -} - -function chainTvl(chain) { - module.exports[chain] = { - tvl: getUniTVL({ factory: factories[chain], useDefaultCoreAssets: true, }) - } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true -} - -Object.keys(factories).map(chainTvl) - -module.exports.tron = { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: TRON_FACTORY_V1, useDefaultCoreAssets: true, }), - getUniTVL({ factory: TRON_FACTORY_V2, useDefaultCoreAssets: true, }), - ]) -} \ No newline at end of file diff --git a/projects/interest-curve/index.js b/projects/interest-curve/index.js deleted file mode 100644 index 7477a335d4d..00000000000 --- a/projects/interest-curve/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); - -const INTEREST_CURVE_LENS_PACKAGE = '0x44fce812d2fa8a7ab2322e693c0861113894a32a475e8596fa9a6592b214f5db'; - -const getAllCurvePools = async (chain) => function_view({ functionStr: `${INTEREST_CURVE_LENS_PACKAGE}::lens::getAllPools`, type_arguments: [], args: [], chain }) - -module.exports = { - timetravel: false, - methodology: - "Aggregates TVL in all pools in Interest Curve AMM.", - move: { - tvl: async (api) => { - const allCurvePoolsPage = await getAllCurvePools(api.chain); - allCurvePoolsPage.forEach(pool => { - pool.fas.forEach((fa, index) => { - api.add(fa, pool.balances[index]); - }); - }); - }, - }, -}; \ No newline at end of file diff --git a/projects/interest-dex/index.js b/projects/interest-dex/index.js deleted file mode 100644 index f2eda1eb326..00000000000 --- a/projects/interest-dex/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); - -const INTEREST_V2_LENS_PACKAGE = '0x392afff1596101a33e86ac9465336a4ae2a176664352067b619c7aeef2085a8b'; - -const getAllV2Pools = async (chain) => function_view({ functionStr: `${INTEREST_V2_LENS_PACKAGE}::lens::getAllPools`, type_arguments: [], args: [], chain }) - -module.exports = { - timetravel: false, - methodology: - "Aggregates TVL in all pools in InterestV2's AMM.", - move: { - tvl: async (api) => { - const allV2PoolsPage = await getAllV2Pools(api.chain); - allV2PoolsPage.pools.forEach(pool => { - api.add(pool.fa_x, pool.balance_x); - api.add(pool.fa_y, pool.balance_y); - }); - }, - }, -}; \ No newline at end of file diff --git a/projects/interest-protocol-stable-swap/index.js b/projects/interest-protocol-stable-swap/index.js deleted file mode 100644 index 61cdc92f453..00000000000 --- a/projects/interest-protocol-stable-swap/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const sui = require("../helper/chain/sui") - -const SUI_PACKAGE_ID = '0x50052aca3d7b971bd9824e1bb151748d03870adfe3ba06dce384d2a77297c719'; - -const POW_18 = 1_000_000_000_000_000_000n; - -function normalizeAddress( - value, - forceAdd0x = true, -) { - let address = value.toLowerCase(); - if (!forceAdd0x && address.startsWith('0x')) { - address = address.slice(2); - } - return `0x${address.padStart(32 * 2, '0')}`; -} - -const tvl = async (api) => { - const newPoolEvents = await sui.queryEvents({ - eventType: `${SUI_PACKAGE_ID}::event_wrapper::InterestStableSwapEvent<${SUI_PACKAGE_ID}::events::NewPool>` - }); - - const statesIds = newPoolEvents.map( - (event) => event.pos0.state - ); - - const states = await sui.getObjects(statesIds); - - const decimalsMap = {}; - - states.forEach((state) => { - state.fields.metadata_map.fields.contents.forEach(content => { - const [pkg, module, otw] = content.fields.key.fields.name.split('::'); - decimalsMap[`${normalizeAddress(pkg)}::${module}::${otw}`] = BigInt(content.fields.value.fields.scalar); - }); - }); - - states.forEach((state) => { - state.fields.coins.forEach((typeName, index) => { - const [pkg, module, otw] = typeName.fields.name.split('::'); - - const key = `${normalizeAddress(pkg)}::${module}::${otw}` - api.add(key, BigInt(state.fields.balances[index]) * decimalsMap[key] / POW_18); - }); - }); -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/interest-protocol/index.js b/projects/interest-protocol/index.js deleted file mode 100644 index 084c407d8bf..00000000000 --- a/projects/interest-protocol/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { dexExport } = require('../helper/chain/sui'); - -const getTokens = (pool) => { - const type = pool.type.split('Pool'); - const poolArgs = type[1]; - const tokens = poolArgs.split(','); - return [tokens[1].trim(), tokens[2].split('>')[0].trim()]; -}; - -module.exports = dexExport({ - account: '0x108779144605a44e4b5447118b711f0b17adf6168cc9b08551d33daca58098e3', - poolStr: 'core::Pool', - token0Reserve: i => i.fields.balance_x, - token1Reserve: i => i.fields.balance_y, - getTokens -}); \ No newline at end of file diff --git a/projects/interlay-btc/api.js b/projects/interlay-btc/api.js deleted file mode 100644 index 4353c754771..00000000000 --- a/projects/interlay-btc/api.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getAPI } = require('../helper/acala/api') - -async function tvl(){ - const api = await getAPI('interlay'); - const interlayTVL = {} - - // Fetch total BTC locked (= kBTC minted) - const tokens = await api.query.tokens.totalIssuance.entries() - const iBTCTokenStorageKey = "0x99971b5749ac43e0235e41b0d378691857c875e4cff74148e4628f264b974c80d67c5ba80ba065480001" - for (const t of tokens){ - if(t[0] == iBTCTokenStorageKey){ - interlayTVL.bitcoin = parseInt(t[1])/1e8 - break - } - } - - return interlayTVL -} - - -module.exports = { - timetravel: false, - methodology: "Tracks BTC wrapped in Interlay's interBTC bridge protocol.", - interlay: { tvl } -}; - - diff --git a/projects/interlay-btc/index.js b/projects/interlay-btc/index.js deleted file mode 100644 index 15a96bec4f1..00000000000 --- a/projects/interlay-btc/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports('interlay-btc', ['interlay']), -} \ No newline at end of file diff --git a/projects/interlay-collateral/api.js b/projects/interlay-collateral/api.js deleted file mode 100644 index 8fcab34bd71..00000000000 --- a/projects/interlay-collateral/api.js +++ /dev/null @@ -1,33 +0,0 @@ - -const { getAPI } = require('../helper/acala/api') - -async function tvl(){ - const api = await getAPI('interlay'); - - const interlayTVL = {} - - // Fetch collateral locked to secure kBTC - const collaterals = await api.query.vaultRegistry.totalUserVaultCollateral.entries() - - const collateralStorageKeys = { - polkadot : "0x8402aaa79721798ff725d48776181a44a42c51e2c6fef3b5d83341e8096ff7bfd6bfa4fbbbb302d0f4e13a890467318100000001", - } - - for (const col of collaterals){ - // check against DOT collateral storage key - if(col[0] == collateralStorageKeys.polkadot){ - interlayTVL.polkadot = parseInt(col[1]/1e10) - continue; - } - } - return interlayTVL -} - - -module.exports = { - timetravel: false, - methodology: "Tracks assets locked as collateral by Vaults in Interlay's interBTC bridge protocol.", - interlay: { tvl } -}; - - diff --git a/projects/interlay-collateral/index.js b/projects/interlay-collateral/index.js deleted file mode 100644 index 56f967dec5f..00000000000 --- a/projects/interlay-collateral/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports('interlay-collateral', ['interlay']), -} \ No newline at end of file diff --git a/projects/interlay-dex/api.js b/projects/interlay-dex/api.js deleted file mode 100644 index d35cdb4a723..00000000000 --- a/projects/interlay-dex/api.js +++ /dev/null @@ -1,39 +0,0 @@ -const { getAPI, addTokenBalance } = require('../helper/acala/interlay-api'); - -async function tvl() { - const chain = "interlay"; - const api = await getAPI(chain); - const balances = {}; - const pools = (await api.query.dexGeneral.pairStatuses.keys()).slice(0, 20); - - for (const pool of pools) { - const tokenPair = pool.__internal__args[0] - // const tokenPair = pool.toHuman() - const [token0, token1] = tokenPair; - const info = await api.query.dexGeneral.pairStatuses(tokenPair) - const pairAccount = info.toJSON().trading?.pairAccount; - if (pairAccount === undefined) { - // not active, skip - continue; - } - - const [amount0, amount1] = await Promise.all([ - api.query.tokens.accounts(pairAccount, token0), - api.query.tokens.accounts(pairAccount, token1) - ]); - - addTokenBalance({ balances, chain, atomicAmount: amount0.toJSON().free, ccyArg: token0, }); - addTokenBalance({ balances, chain, atomicAmount: amount1.toJSON().free, ccyArg: token1, }); - } - - return balances; -} - - -module.exports = { - timetravel: false, - methodology: "Tracks TVL on Interlay's DEX.", - interlay: { tvl } -}; - - diff --git a/projects/interlay-dex/index.js b/projects/interlay-dex/index.js deleted file mode 100644 index 76c10be14e6..00000000000 --- a/projects/interlay-dex/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - ...getExports("interlay-dex", ["interlay"]) -} diff --git a/projects/interlay-lending/api.js b/projects/interlay-lending/api.js deleted file mode 100644 index 7372319bf89..00000000000 --- a/projects/interlay-lending/api.js +++ /dev/null @@ -1,51 +0,0 @@ -const { getAPI, addTokenBalance } = require('../helper/acala/interlay-api'); - -// for exchange rate decoding -const FIXEDI128_SCALING_FACTOR = 18; - -async function getBalances() { - const chain = "interlay"; - const api = await getAPI(chain); - const tvlBalances = {}; - const borrowedBalances = {}; - - const data = (await api.query.loans.markets.entries()); - - for (let i = 0; i < data.length; i++) { - const [underlyingId, marketData] = data[i]; - - const isActive = marketData?.toJSON().state == "Active"; - if (!isActive) { - continue; - } - - const lendTokenId = marketData.toJSON().lendTokenId; - - const [issuanceExchangeRate, totalIssuance, totalBorrows] = await Promise.all([ - api.query.loans.exchangeRate(underlyingId.toHuman()[0]).then((rawExchangeRate) => - parseInt(rawExchangeRate) / (10 ** FIXEDI128_SCALING_FACTOR) - ), - api.query.tokens.totalIssuance(lendTokenId), - api.query.loans.totalBorrows(underlyingId.toHuman()[0]), - ]); - - const totalTvl = (totalIssuance * issuanceExchangeRate) - totalBorrows; - addTokenBalance({ balances: tvlBalances, chain, atomicAmount: totalTvl, ccyArg: underlyingId.__internal__args[0] }); - - addTokenBalance({ balances: borrowedBalances, chain, atomicAmount: totalBorrows, ccyArg: underlyingId.__internal__args[0] }); - } - - return { - tvl: tvlBalances, - borrowed: borrowedBalances, - }; -} - -module.exports = { - timetravel: false, - methodology: "Tracks TVL and borrowed amounts for Interlay's lending protocol.", - interlay: { - tvl: async () => (await getBalances()).tvl, - borrowed: async () => (await getBalances()).borrowed, - }, -}; diff --git a/projects/interlay-lending/index.js b/projects/interlay-lending/index.js deleted file mode 100644 index 351347d8da5..00000000000 --- a/projects/interlay-lending/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - ...getExports("interlay-lending", ["interlay", 'interlay'], ['borrowed']) -} diff --git a/projects/interlay-staking/api.js b/projects/interlay-staking/api.js deleted file mode 100644 index 3b30df4adf5..00000000000 --- a/projects/interlay-staking/api.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getAPI } = require('../helper/acala/api') - -async function tvl(){ - - const api = await getAPI('interlay'); - - let voteEscrowTvl = 0 - - // Fetch total BTC locked (= kBTC minted) - const stakers = await api.query.escrow.locked.entries() - - for (const staker of stakers) { - voteEscrowTvl += parseInt(staker[1].amount) / 1e10 - } - return { - "interlay": voteEscrowTvl - } -} - - -module.exports = { - timetravel: false, - methodology: "Tracks INTR vote-escrowed in Interlay. Vote escrowed INTR remain locked until the unlock date, min. 1 week, max 192 weeks.", - interlay: { tvl } -}; - - diff --git a/projects/interlay-staking/index.js b/projects/interlay-staking/index.js deleted file mode 100644 index d3d875a94ef..00000000000 --- a/projects/interlay-staking/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - interlay:{ - staking: getExports('interlay-staking', ['interlay']).interlay.tvl, - tvl: ()=>({}), - } -} diff --git a/projects/international-stable-currency/index.js b/projects/international-stable-currency/index.js deleted file mode 100644 index 13bafc09b15..00000000000 --- a/projects/international-stable-currency/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection, decodeAccount } = require("../helper/solana"); - -async function tvl(api) { - const connection = getConnection(); - const ISC = "J9BcrQfX4p9D1bvLzRNCbMDv8f44a9LFdeqNE4Yk2WMD" - const mint = await connection.getAccountInfo(new PublicKey(ISC)) - const mintInfo = decodeAccount("mint", mint); - api.add(ISC, mintInfo.supply) -} - -module.exports = { - timetravel: false, - methodology: "Supply of ISC multiplied by the price of ISC in USD.", - solana: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/interport-finance/index.js b/projects/interport-finance/index.js deleted file mode 100644 index bc3afb0548f..00000000000 --- a/projects/interport-finance/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { staking } = require('../helper/staking'); - -const usdtVault = '0xEc8DDCb498b44C35EFaD7e5e43E0Caf6D16A66E8'; -const usdcVault = '0x5b45B414c6CD2a3341bE70Ba22BE786b0124003F'; -const usdbVault = '0x5b45B414c6CD2a3341bE70Ba22BE786b0124003F'; -const iUsdtVault = '0xd9eF111006F7477aC6E70dD2B782D8A901f6Ff5b'; -const iUsdcVault = '0x22E7c5d443400eef48F58acdEC67986373cf6c74'; -const defaultVaults = [usdtVault, usdcVault]; -const config = { - era: { vaults: ['0xc724832c5ed81599aE3E4EBC0eC4f87A285B5838'] }, - base: { vaults: [usdcVault] }, - op_bnb: { vaults: [usdtVault] }, - fantom: { vaults: ['0xd0Adc0cdE959616666c4691985df91C60ca3C0F7', '0xb6AB8EeFAE1a2c22Ca6338E143cb7dE544800c6e'] }, - blast: { vaults: [usdbVault] }, - zklink: { vaults: [iUsdtVault, iUsdcVault] }, -} - -module.exports = { - methodology: 'Interport TVL is calculated by summing the USDT and USDC balance of the vaults contracts, ITP token balance in the ITP Revenue Share contract and LP token balance in the LP Revenue Share contract.', -}; - -['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon', 'polygon_zkevm', 'base', 'era', 'optimism', 'linea', 'eon', 'op_bnb', 'scroll', 'manta', 'inevm', 'blast', 'zklink'].forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const vaults = config[chain]?.vaults || defaultVaults - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults]}) - } - } -}); - -module.exports.ethereum.staking = staking('0x5DC6796Adc2420BD0f48e05f70f34B30F2AaD313', '0x2b1D36f5B61AdDAf7DA7ebbd11B35FD8cfb0DE31') -module.exports.ethereum.pool2 = staking('0x646De66c9A08abF0976869DE259E4B12D06F66ac', '0x4db2C7dd361379134140ffb9D85248e8498008E4') diff --git a/projects/intswap/index.js b/projects/intswap/index.js deleted file mode 100644 index 5957f2a21ec..00000000000 --- a/projects/intswap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0xb9a8213d237c768e88bf89d690a9222df439dcc1', - topics: ['0xbc9687dc21b69bf8e01370b9f0ae1625f6bf5244fc230fa3ad4c06350deb634d'], // NewPair event - onlyArgs: true, - fromBlock: 9675402, - }) - - await api.sumTokens({ owners: logs.map(i => '0x' + i.data.slice(-40)), tokens: [ADDRESSES.null] }) - const bal = api.getBalances() - api.add(ADDRESSES.null, bal[api.chain + ':'+ADDRESSES.null ?? 0]) - return bal -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'Sum up all the ETH in pools', - era: { tvl, } -} diff --git a/projects/intuition/index.js b/projects/intuition/index.js deleted file mode 100644 index 4c6e84d2124..00000000000 --- a/projects/intuition/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -const ETHMULTIVAULT = "0x430BbF52503Bd4801E51182f4cB9f8F534225DE5"; // Intuition's EthMultiVault contract address on Base mainnet - -module.exports = { - methodology: "The TVL is calculated based on the current ETH balance held within Intuition's EthMultiVault contract on the Base mainnet.", - base: { - tvl: sumTokensExport({ owner: ETHMULTIVAULT, tokens: [nullAddress] }), - } -} diff --git a/projects/inuswap/index.js b/projects/inuswap/index.js deleted file mode 100644 index f608b398b47..00000000000 --- a/projects/inuswap/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { - getUniTVL -} = require('../helper/unknownTokens') - -const chain = 'dogechain' - -module.exports = { - hallmarks: [ - [1663200000, "Rug Pull"] - ], - deadFrom: '2022-09-15', - dogechain: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xbDe460e12B5dcD955e70da8889754958113E988a', - }), - }, -} \ No newline at end of file diff --git a/projects/invar-finance/abis.js b/projects/invar-finance/abis.js deleted file mode 100644 index 32a3ea6fe44..00000000000 --- a/projects/invar-finance/abis.js +++ /dev/null @@ -1,7 +0,0 @@ -const abis = {}; - -abis.balanceOf = 'function balanceOf(address account, uint256 id) view returns (uint256)'; - -abis.SellingPrice = "uint256:SellingPrice" - -module.exports = abis \ No newline at end of file diff --git a/projects/invar-finance/index.js b/projects/invar-finance/index.js deleted file mode 100644 index 7b1f51ad20a..00000000000 --- a/projects/invar-finance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs.js'); - -const INVARIA2222 = "0x10a92B12Da3DEE9a3916Dbaa8F0e141a75F07126"; - -module.exports = { - methodology: - "Counts the number of staking nfts time the unit price of nft", - ethereum: { - tvl: sumTokensExport({ owner:INVARIA2222, token: ADDRESSES.ethereum.USDC}), - }, - deadFrom: '2023-11-12', -}; diff --git a/projects/invariant/index.js b/projects/invariant/index.js deleted file mode 100644 index 61eed142383..00000000000 --- a/projects/invariant/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') -const { getConfig } = require('../helper/cache') - -const config = { - solana: 'J4uBbeoWpZE8fH58PM1Fp9n9K6f1aThyeVCyRdJbaXqt', - eclipse: 'D4P9HJYPczLFHvxBgpLKooy7eWczci8pr4x9Zu7iYCVN', -} - -module.exports = { - timetravel: false, - methodology: "TVL is a sum of the locked capital in each liquidity pool", -}; - -const tvl = async (api) => { - if (api.chain !== 'eclipse') return sumTokens2({ owner: config[api.chain], api }) - const { tokensData } = await getConfig('invariant/eclipse', 'https://stats.invariant.app/svm/full_snap/eclipse-mainnet') - const tokens = tokensData.map(t => t.address) - return sumTokens2({ owner: config[api.chain], tokens, api }) -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/inverse-finance-firm/abi.json b/projects/inverse-finance-firm/abi.json deleted file mode 100644 index 6213ec3f2d3..00000000000 --- a/projects/inverse-finance-firm/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "balance": "uint:balance", - "collateral": "address:collateral", - "CreateEscrow": "event CreateEscrow(address indexed user, address escrow)", - "AddMarket": "event AddMarket(address indexed market)" -} \ No newline at end of file diff --git a/projects/inverse-finance-firm/index.js b/projects/inverse-finance-firm/index.js deleted file mode 100644 index e7c1941f6e5..00000000000 --- a/projects/inverse-finance-firm/index.js +++ /dev/null @@ -1,57 +0,0 @@ - -const abi = require("./abi.json"); -const { getLogs } = require('../helper/cache/getLogs') -const sdk = require("@defillama/sdk") -const { staking } = require('../helper/staking') - -// Firm -const firmStart = 16159015; -const DBR = '0xAD038Eb671c44b853887A7E32528FaB35dC5D710'; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: DBR, - topics: ['0xc3dfb88ee5301cecf05761fb2728064e5b641524346ae69b9ba80394631bf11f'], - fromBlock: firmStart, - eventAbi: abi.AddMarket, - extraKey: "fix-firm" - }) - - // unique markets - const markets = [...new Set(logs.map(i => i.args.market))] - - let escrows = await Promise.all( - markets.map(async m => { - const logs = await getLogs({ - api, - target: m, - topic: "CreateEscrow(address,address)", - fromBlock: firmStart, - eventAbi: abi.CreateEscrow, - }) - return logs.map(i => i.args.escrow) - }) - ); - escrows = escrows.flat() - const tokens = await api.multiCall({ abi: 'address:token', calls: escrows}) - const tokenBalances = await api.multiCall({ abi: 'uint256:balance', calls: escrows}) - const balances = {} - tokens.forEach((t,i)=>{ - sdk.util.sumSingleBalance(balances, t, tokenBalances[i]) - }) - return balances -} - -module.exports = { - methodology: "Get collateral balances from users personal escrows", - hallmarks: [ - [1707177600, "Launch of sDOLA"], - [1718236800, "CRV liquidation"] - ], - start: '2022-12-10', // Dec 10 2022 - ethereum: { - tvl, - staking: staking("0x1637e4e9941D55703a7A5E7807d6aDA3f7DCD61B", "0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68") - } -}; diff --git a/projects/inverse/abi.json b/projects/inverse/abi.json deleted file mode 100644 index 83c0cf02b34..00000000000 --- a/projects/inverse/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "getAllMarkets": "address[]:getAllMarkets", - "underlying": "address:underlying", - "getCash": "uint256:getCash", - "totalSupply": "uint256:totalSupply", - "supply": "uint256:supply" -} \ No newline at end of file diff --git a/projects/inverse/index.js b/projects/inverse/index.js deleted file mode 100644 index 8720194d30a..00000000000 --- a/projects/inverse/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const ADDRESSES = require('../helper/coreAssets.json') - -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// Anchor -const anchorStart = 11915867; -const comptroller = "0x4dcf7407ae5c07f8681e1659f626e114a7667339"; - -// Stabilizer -const stabilizer = "0x7eC0D931AFFBa01b77711C2cD07c76B970795CDd"; -const dai = ADDRESSES.ethereum.DAI; - -// Vaults -const vaults = [ - "0x89eC5dF87a5186A0F0fa8Cb84EdD815de6047357", // inUSDC->ETH - "0xc8f2E91dC9d198edEd1b2778F6f2a7fd5bBeac34", // inDAI->WBTC - "0x41D079ce7282d49bf4888C71B5D9E4A02c371F9B", // inDAI->YFI - "0x2dCdCA085af2E258654e47204e483127E0D8b277", // inDAI->ETH -]; - -async function vaultsTVL(api) { - const tokens = await api.multiCall({ abi: abi.underlying, calls: vaults}) - const bals = await api.multiCall({ abi: abi.totalSupply, calls: vaults}) - api.add(tokens, bals) -} - -async function stabilizerTVL(api) { - if (api < anchorStart) - return; - - const supply = await api.call({ target: stabilizer, abi: abi["supply"], }) - api.add(dai, supply); -} - -async function tvl(api) { - const compTvl = compoundExports2({ comptroller, cether: ['0x697b4acaa24430f254224eb794d2a85ba1fa1fb8', '0x8e103eb7a0d01ab2b2d29c91934a9ad17eb54b86'], blacklistedTokens: ['0x865377367054516e17014ccded1e7d814edc9ce4']}).tvl - - await Promise.all([ - compTvl(api), - vaultsTVL(api), - stabilizerTVL(api), - ]); - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - methodology: "DOLA curve metapool replaced by DOLA", - hallmarks: [ - // [1648771200, "INV price hack"], - [1655380800, "Inverse Frontier Deprecated"] - ], - start: '2020-12-12', // Dec 12 2020 00:00:00 GMT+0000 - ethereum: { tvl } -}; diff --git a/projects/investin/index.js b/projects/investin/index.js deleted file mode 100644 index 9c66fde9b0b..00000000000 --- a/projects/investin/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getConnection, sumTokens2, decodeAccount, } = require("../helper/solana"); -const { PublicKey, } = require("@solana/web3.js"); - -async function tvl() { - const connection = getConnection() - const accounts = await connection.getProgramAccounts(new PublicKey('8dbbmZXbLsUirEsgaBVcPBEdciESza6L2zkEuer4crR'), { - filters: [{ - dataSize: 3160 - }] - }) - const data = accounts.map(i => decodeAccount('investinFund', i.account)) - const tokenAccounts = data.map(i => { - return i.tokens.filter(i => i.is_active && !i.is_on_mango && +i.balance > 1e4).map(i => i.vault.toString()) - }).flat() - return sumTokens2({ tokenAccounts }) -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/invictus/index.js b/projects/invictus/index.js deleted file mode 100644 index 0d310725410..00000000000 --- a/projects/invictus/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') - -async function staking() { - return sumTokens2({tokenAccounts: ['5EZiwr4fE1rbxpzQUWQ6N9ppkEridNwbH3dU3xUf7wPZ']}) -} - -const treasury = "6qfyGvoUqGB6AQ7xLc4pVwFNdgJSbAMkTtKkBXhLRiV1" -async function tvl() { - return sumTokens2({ owner: treasury }) -} - - -module.exports = { - deadFrom: 1648765747, - timetravel: false, - misrepresentedTokens: true, - doublecounted: true, - solana: { - tvl, - staking - } -} diff --git a/projects/iolend/index.js b/projects/iolend/index.js deleted file mode 100644 index ea6d5126f4e..00000000000 --- a/projects/iolend/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { aaveExports, methodology } = require("../helper/aave"); - -module.exports = { - methodology, - iotaevm: { - ...aaveExports('iotaevm', '0xA9Bb7ebb4F51B0e0BbD0FaE640e32298a0Bcf4A5'), - }, -}; diff --git a/projects/ion-dao/index.js b/projects/ion-dao/index.js deleted file mode 100644 index 1beb1eee81f..00000000000 --- a/projects/ion-dao/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens } = require('../helper/chain/cosmos') - -const chain = 'osmosis' - -const ION_DAO_CONTRACT = - "osmo1yg8930mj8pk288lmkjex0qz85mj8wgtns5uzwyn2hs25pwdnw42sf745wc"; - -async function tvl() { - return sumTokens({ owner: ION_DAO_CONTRACT, chain }) -} - -module.exports = { - timetravel: false, // need to add code to fetch osmosis block - osmosis: { - tvl, - }, -}; diff --git a/projects/ion-protocol/index.js b/projects/ion-protocol/index.js deleted file mode 100644 index fe221169578..00000000000 --- a/projects/ion-protocol/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { lendingMarket } = require("../helper/methodologies"); - -const abi = { - debt: "function debt(address pool) external view returns (uint256)", - totalCollateral: "uint256:totalGem", - totalSupply: "uint256:totalSupply", - underlyingLender: "address:underlying", - underlyingCollateral: "address:GEM", -}; - -async function getMarkets() { - return getConfig('ion-markets', "https://ion-backend.vercel.app/v1/bigbrother/markets"); -} - -async function calculateTvl(api, markets) { - const gems = markets.map((m) => m.gemJoin); - const pools = await api.multiCall({ abi: "address:POOL", calls: gems }); - const tokens = await api.multiCall({ - abi: abi.underlyingLender, - calls: pools, - }); - const gemUnderlyings = await api.multiCall({ - abi: abi.underlyingCollateral, - calls: gems, - }); - return api.sumTokens({ - tokensAndOwners2: [tokens.concat(gemUnderlyings), pools.concat(gems)], - }); -} - -async function calculateBorrowed(api, markets) { - const gems = markets.map((m) => m.gemJoin); - const pools = await api.multiCall({ abi: "address:POOL", calls: gems }); - const tokens = await api.multiCall({ - abi: abi.underlyingLender, - calls: pools, - }); - const ionLens = markets.map((m) => m.ionLens); - const debtCalls = pools.map((pool, index) => ({ - target: ionLens[index], - params: [pool], - })); - - const debt = await api.multiCall({ abi: abi.debt, calls: debtCalls }); - api.add( - tokens, - debt.map((b) => b / 1e27) - ); -} - -const tvl = async (api) => { - const markets = await getMarkets(); - return calculateTvl(api, markets); -}; - -const borrowed = async (api) => { - const markets = await getMarkets(); - return calculateBorrowed(api, markets); -}; - -module.exports = { - methodology: lendingMarket, - ethereum: { - tvl, - borrowed, - }, -}; diff --git a/projects/ionex-v1/index.js b/projects/ionex-v1/index.js deleted file mode 100644 index 1e3ef582d69..00000000000 --- a/projects/ionex-v1/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); -const { mergeExports } = require("../helper/utils"); - -const getExport = factory => uniTvlExport("plasma", factory, { hasStablePools: true, useDefaultCoreAssets: true, }) - -module.exports = mergeExports(['0xbf05db69176E47Bf89A6b19F7492d50751D20452'].map(getExport)) - diff --git a/projects/ionic/index.js b/projects/ionic/index.js deleted file mode 100644 index d43c60a3e5d..00000000000 --- a/projects/ionic/index.js +++ /dev/null @@ -1,31 +0,0 @@ - -const { compoundExports2 } = require("../helper/compound"); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([{ - mode: compoundExports2({ comptroller: '0xfb3323e24743caf4add0fdccfb268565c0685556' }) -}, { - mode: compoundExports2({ comptroller: '0x8fb3d4a94d0aa5d6edaac3ed82b59a27f56d923a' }) - }, { - base: compoundExports2({ comptroller: '0x05c9C6417F246600f8f5f49fcA9Ee991bfF73D13' }) - }, { - bob: compoundExports2({ comptroller: '0x9cFEe81970AA10CC593B83fB96eAA9880a6DF715' }) - }, { - fraxtal: compoundExports2({ comptroller: '0xB5141403e811fFFE02f4d49Ea8d4a7B0b9590658' }) - }, { - optimism: compoundExports2({ comptroller: '0xaFB4A254D125B0395610fdc8f1D022936c7b166B' }) - }, { - lisk: compoundExports2({ comptroller: '0xF448A36feFb223B8E46e36FF12091baBa97bdF60' }) -}]) - -module.exports.mode.borrowed = () => ({}) -module.exports.base.borrowed = () => ({}) -module.exports.bob.borrowed = () => ({}) -module.exports.fraxtal.borrowed = () => ({}) -module.exports.optimism.borrowed = () => ({}) -module.exports.lisk.borrowed = () => ({}) - -module.exports.deadFrom = '2025-02-05' -// module.exports.hallmarks = [ -// [1738713600, "Protocol Exploit"], -// ] \ No newline at end of file diff --git a/projects/ionise-io/index.js b/projects/ionise-io/index.js deleted file mode 100644 index c05b16ceddb..00000000000 --- a/projects/ionise-io/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {compoundExports2} = require('../helper/compound'); - -const replace = { - [ADDRESSES.bsc.BETH]: ADDRESSES.ethereum.WETH, // beth->weth - "0xfb6115445bff7b52feb98650c87f44907e58f802": ADDRESSES.ethereum.AAVE, // aave -} - -module.exports = { - zilliqa: compoundExports2({ comptroller: '0x5F8B5312636Af3bA626C12327a5d8EE4301A65F8', cether: '0x9386c982fcb1aecbd949d04143d8a9e32b4b52bb'}) -} \ No newline at end of file diff --git a/projects/iotabee/index.js b/projects/iotabee/index.js deleted file mode 100644 index e26529ff226..00000000000 --- a/projects/iotabee/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const tvl = async (api) => { - const contracts = await getConfig('iotabee', 'https://dex.iotabee.com/v3/pools/overview') - return sumTokens2({ api, ownerTokens: contracts.map(({ token0, token1, contract }) => [[token0, token1,], contract]) }) -} - -module.exports = { - shimmer_evm: { - tvl - } -} diff --git a/projects/iotube/index.js b/projects/iotube/index.js deleted file mode 100644 index dc82946abb6..00000000000 --- a/projects/iotube/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { tokenSafe: '0xc2e0f31d739cb3153ba5760a203b3bd7c27f0d7a', tokenList: '0x7c0bef36e1b1cbeb1f1a5541300786a7b608aede', }, - iotex: { tokenSafe: '0xc4a29a94f12be03033daa4e6ce9b9678c26275a2', tokenList: '0x59caeb8dc448df0e070b803062cfd9351ad39390', }, - bsc: { tokenSafe: '0xFBe9A4138AFDF1fA639a8c2818a0C4513fc4CE4B', tokenList: '0x0d793F4D4287265B9bdA86b7a4083193E8743b34', }, - polygon: { tokenSafe: '0xA239F03Cda98A7d2AaAA51e7bF408e5d73399e45', tokenList: '0xDe9395d2f4940aA501f9a27B98592589D14Bb0f7', }, -} - -module.exports = { - hallmarks: [ - [1651881600, "UST depeg"], - ], -}; - -Object.keys(config).forEach(chain => { - const { tokenList, tokenSafe, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const [_, tokens] = await api.call({ abi: 'function getActiveItems(uint256 offset, uint8 limit) view returns (uint256 count, address[] items)', target: tokenList, params: [0, 99] }) - return sumTokens2({ api, tokens, owner: tokenSafe }) - } - } -}) - diff --git a/projects/ip/index.js b/projects/ip/index.js deleted file mode 100644 index 1844ce84903..00000000000 --- a/projects/ip/index.js +++ /dev/null @@ -1,101 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { lendingMarket } = require('../helper/methodologies'); - -const vaultSummaryAbi = 'function vaultSummaries(uint96 start, uint96 stop) view returns (tuple(uint96 id, uint192 borrowingPower, uint192 vaultLiability, address[] tokenAddresses, uint256[] tokenBalances)[])' - -async function getVaultData(api, vaultController) { - const cappedTokens = {} - let pullMoreTokens = true - let enabledTokenIndex = 0 - const batchSize = 10 - const allTokens = [] - do { - let calls = [] - for (let i = 0; i < 10; i++) { - calls.push(enabledTokenIndex + i) - } - enabledTokenIndex += batchSize - const tokens = await api.multiCall({ abi: 'function _enabledTokens(uint256) view returns (address)', calls, permitFailure: true, target: vaultController }) - allTokens.push(...tokens.filter(i => i)) - pullMoreTokens = !tokens.some(token => !token) - } while (pullMoreTokens) - - const uTokens = await api.multiCall({ abi: 'address:_underlying', calls: allTokens, permitFailure: true, }) - uTokens.forEach((token, i) => { - if (!token) return; - cappedTokens[allTokens[i].toLowerCase()] = token - }) - - const count = await api.call({ abi: " function vaultsMinted() view returns (uint96)", target: vaultController }) - const calls = [] - for (let i = 1; i <= count; i++) - calls.push({ params: [i, i] }) - - const vaults = (await api.multiCall({ abi: vaultSummaryAbi, target: vaultController, calls, permitFailure: true })).filter(i => i).flat() - - return { cappedTokens, vaults } -} - -async function eth_tvl(api) { - const VaultController = "0x4aaE9823Fb4C70490F1d802fC697F3ffF8D5CbE3" - - const { cappedTokens, vaults } = await getVaultData(api, VaultController) - - vaults.map(vault => { - vault.tokenAddresses.map((token, i) => { - token = cappedTokens[token.toLowerCase()] ?? token - api.add(token, vault.tokenBalances[i]) - }) - }) - - //get reserves - return sumTokens2({ api, owner: '0x2A54bA2964C8Cd459Dc568853F79813a60761B58', tokens: [ADDRESSES.ethereum.USDC] }) -} - -async function op_tvl(api) { - //get reserves - const USDI = "0x889be273BE5F75a177f9a1D00d84D607d75fB4e1" - await api.sumTokens({ owner: USDI, tokens: [ADDRESSES.optimism.USDC, ADDRESSES.optimism.USDC_CIRCLE] }) - - //get collaterals - const positionWrapper = "0x7131FF92a3604966d7D96CCc9d596F7e9435195c".toLowerCase() - const VaultController = "0x05498574BD0Fa99eeCB01e1241661E7eE58F8a85" - const { cappedTokens, vaults } = await getVaultData(api, VaultController) - - vaults.map(vault => { - vault.tokenAddresses.map((token, i) => { - const bal = vault.tokenBalances[i] - if (+bal === 0) return; - token = cappedTokens[token.toLowerCase()] ?? token - token = token.toLowerCase() - if (token === ADDRESSES.optimism.WBTC.toLowerCase()) { - //scale for wbtc decimals - api.add(token, bal / 1e10) - } else if (token === positionWrapper) { - //total is already in usd 1e18 terms, add as DAI, as this is a stablecoin at 1e18 - api.add(ADDRESSES.optimism.DAI, bal) - } else { - api.add(token, bal) - } - }) - }) -} - -module.exports = { - ethereum: { - tvl: eth_tvl - }, - optimism: { - tvl: op_tvl - }, - methodology: `${lendingMarket}. - For Interest Protocol, TVL is USDC Reserve + Total Deposited Collateral Value - Reserve is the amount of USDC held by the USDI contract - Balances are found through VaultController.vaultSummaries(1,VaultController.vaultsMinted()) - Capped tokens converted 1:1 to underlying - Wrapped Uni V3 Positions as implemented report their values to Interest Protocol in USD terms * 1e18, - as such, they are currently listed as DAI in the TVL calculation, - therefore DAI numbers in the TVL should be treated as Uniswap V3 position collateral value, as DAI is not otherwise listed on IP. - ` -}; diff --git a/projects/ipor-fusion/index.js b/projects/ipor-fusion/index.js deleted file mode 100644 index ed271f344f8..00000000000 --- a/projects/ipor-fusion/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const IPOR_GITHUB_ADDRESSES_URL = "https://raw.githubusercontent.com/IPOR-Labs/ipor-abi/refs/heads/main/mainnet/addresses.json"; - -async function tvl(api) { - const config = await getConfig('ipor/assets', IPOR_GITHUB_ADDRESSES_URL); - const chainConfig = config[api.chain]; - if (!chainConfig || !chainConfig.vaults) { - return {}; - } - const calls = chainConfig.vaults.map(vault => vault.PlasmaVault); - return api.erc4626Sum2({ calls }) -} - -module.exports = { - methodology: `Counts the tokens deposited into IPOR Fusion Vaults.`, - ethereum: { tvl }, - arbitrum: { tvl }, - base: { tvl }, - unichain: { tvl }, - ink: { tvl }, - tac: { tvl }, - plasma: { tvl }, - avax: { tvl } -}; diff --git a/projects/ipor/abi.js b/projects/ipor/abi.js deleted file mode 100644 index b206dea50a7..00000000000 --- a/projects/ipor/abi.js +++ /dev/null @@ -1,8 +0,0 @@ -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)", - getBalancesForOpenSwap: " function getBalancesForOpenSwap(address asset) external view returns (uint256 totalCollateralPayFixed, uint256 totalNotionalPayFixed, uint256 totalCollateralReceiveFixed, uint256 totalNotionalReceiveFixed, uint256 liquidityPool)", - getAsset: "address:getAsset", - } -}; diff --git a/projects/ipor/index.js b/projects/ipor/index.js deleted file mode 100644 index 2a506a631e3..00000000000 --- a/projects/ipor/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const { abi } = require("./abi"); -const { getConfig } = require('../helper/cache') - -const IPOR_GITHUB_ADDRESSES_URL = "https://raw.githubusercontent.com/IPOR-Labs/ipor-abi/refs/heads/main/mainnet/addresses.json"; - -const V2DeploymentBlockNumber = 18333744 -async function tvlEthereum(api) { - const { block } = api - - if (!block || block >= V2DeploymentBlockNumber) { - return await calculateTvlForV2(api); - } else { - return await calculateTvlForV1(api); - } -} - -async function calculateTvlForV2(api) { - const chain = api.chain; - const {[chain]: { IporProtocolRouter, pools }} = await getConfig('ipor/assets', IPOR_GITHUB_ADDRESSES_URL); - - // pools with swaps - const poolsWithSwaps = pools.filter(pool => pool.swapsAvailable); - const assets = [...new Set(poolsWithSwaps.map(pool => pool.asset))]; - - const [balances, decimals] = await Promise.all([ - api.multiCall({ abi: abi.getBalancesForOpenSwap, calls: assets, target: IporProtocolRouter }), - api.multiCall({ abi: 'erc20:decimals', calls: assets }) - ]); - - balances.forEach(({ totalCollateralPayFixed, totalCollateralReceiveFixed, liquidityPool }, i) => { - const balance = +totalCollateralPayFixed + +totalCollateralReceiveFixed + +liquidityPool; - api.add(assets[i], balance / (10 ** (18 - decimals[i]))); - }); - - // pools without swaps - const tokensAndOwners = pools.filter(pool => !pool.swapsAvailable).map(pool => [pool.asset, pool.AmmTreasury]); - return api.sumTokens({ tokensAndOwners }); -} - -async function calculateTvlForV1(api) { - const miltonAddresses = [ - '0x28BC58e600eF718B9E97d294098abecb8c96b687', // USDT - '0x137000352B4ed784e8fa8815d225c713AB2e7Dc9', // USDC - '0xEd7d74AA7eB1f12F83dA36DFaC1de2257b4e7523', // DAI - ] - const res = 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 }) - - res.forEach(({ totalCollateralPayFixed, totalCollateralReceiveFixed, liquidityPool }, i) => { - const balance = +totalCollateralPayFixed + +totalCollateralReceiveFixed + +liquidityPool - const decimal = 18 - decimals[i] - api.add(tokens[i], balance / (10 ** decimal)) - }); - - return api.getBalances(); -} - -module.exports = { - 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: tvlEthereum - }, - arbitrum: { - tvl: calculateTvlForV2 - }, - base: { - tvl: calculateTvlForV2 - }, - hallmarks:[ - [1674648000, "Liquidity Mining Start"] - ], -}; diff --git a/projects/ironbank/cerc20.json b/projects/ironbank/cerc20.json deleted file mode 100644 index a374cd8db91..00000000000 --- a/projects/ironbank/cerc20.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "getCash": "uint256:getCash", - "underlying": "address:underlying", - "totalBorrows": "uint256:totalBorrows", - "totalReserves": "uint256:totalReserves" -} \ No newline at end of file diff --git a/projects/ironbank/index.js b/projects/ironbank/index.js deleted file mode 100644 index 4df0b98868c..00000000000 --- a/projects/ironbank/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - start: '2020-09-08', // 09/08/2020 @ 8:00am (UTC) - ethereum: compoundExports2({ - comptroller: '0xAB1c342C7bf5Ec5F02ADEA1c2270670bCa144CbB', - blacklistedTokens: [ - '0x96E61422b6A9bA0e068B6c5ADd4fFaBC6a4aae27', //ibEUR - '0x95dfdc8161832e4ff7816ac4b6367ce201538253', //ibKRW - '0xfafdf0c4c1cb09d430bf88c75d88bb46dae09967', //ibAUD - '0x5555f75e3d5278082200fb451d1b6ba946d8e13b', //ibJPY - '0x1cc481ce2bd2ec7bf67d1be64d4878b16078f309', //ibCHF - '0x69681f8fde45345c3870bcd5eaf4a05a60e7d227', //ibGBP - '0x81d66D255D47662b6B16f3C5bbfBb15283B05BC2', //ibZAR - '0x4e3a36A633f63aee0aB57b5054EC78867CB3C0b8', //old hacked sUSD cream market - ] - }), - fantom: compoundExports2({ comptroller: '0x4250a6d3bd57455d7c6821eecb6206f507576cd2' }), - avax: compoundExports2({ comptroller: '0x2eE80614Ccbc5e28654324a66A396458Fa5cD7Cc' }), - optimism: compoundExports2({ comptroller: '0xE0B57FEEd45e7D908f2d0DaCd26F113Cf26715BF' }), -} - -module.exports.ethereum.borrowed = () => ({}) // bad debt, likely will never be repaid -module.exports.fantom.borrowed = () => ({}) // bad debt, likely will never be repaid \ No newline at end of file diff --git a/projects/ironclad/index.js b/projects/ironclad/index.js deleted file mode 100644 index 05aec5c68fc..00000000000 --- a/projects/ironclad/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { aaveExports } = require('../helper/aave') - -module.exports = { - mode: aaveExports("mode", "0x5C93B799D31d3d6a7C977f75FDB88d069565A55b"), -} -module.exports.mode.borrowed = () => ({}) -module.exports.deadFrom = '2025-02-05' \ No newline at end of file diff --git a/projects/ironfinance/abi-polygon.json b/projects/ironfinance/abi-polygon.json deleted file mode 100644 index 8058482812a..00000000000 --- a/projects/ironfinance/abi-polygon.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "IronSwap": { - "getTokenBalances": "uint256[]:getTokenBalances", - "getTokens": "address[]:getTokens" - }, - - "IronController": { - "getAllMarkets": "address[]:getAllMarkets" - }, - - "rToken": { - "getCash": "uint256:getCash", - "underlying": "address:underlying", - "symbol": "string:symbol" - } -} diff --git a/projects/ironfinance/index.js b/projects/ironfinance/index.js deleted file mode 100644 index 919263a9784..00000000000 --- a/projects/ironfinance/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const sdk = require('@defillama/sdk'); -const abiPolygon = require('./abi-polygon.json'); -const { compoundExports2 } = require('../helper/compound'); - -const Contracts = { - polygon: { - pools: { - is3usd: '0x837503e8a8753ae17fb8c8151b8e6f586defcb57', - ispusd: '0x4a783cd1b4543559ece45db47e07e0cb59e55c09', - isxusd: '0xe440ccc13e6f273c110cf3cf4087c23a66b8e872', - isiron: '0xCaEb732167aF742032D13A9e76881026f91Cd087', - }, - ignoredLps: ['0xb4d09ff3da7f9e9a2ba029cb0a81a989fd7b8f17'], - lend: { - ironController: '0xF20fcd005AFDd3AD48C85d0222210fe168DDd10c', - }, - }, - avax: { - pools: { - is3usd: '0x952BDA8A83c3D5F398a686bb4e8C6DD90072d523', - }, - }, - fantom: { - pools: { - is3usd: '0x952BDA8A83c3D5F398a686bb4e8C6DD90072d523', - }, - lend: { - ironController: '0xDc4C597E36Fc80876801df0309Cc11A7C12E0764', - }, - }, -}; - -async function tvl(api) { - const blacklistedTokensSet = new Set((Contracts[api.chain].ignoredLps || []).map(i => i.toLowerCase())); - const pools = Object.values(Contracts[api.chain].pools); - const tokens = await api.multiCall({ abi: abiPolygon.IronSwap.getTokens, calls: pools }) - const bals = await api.multiCall({ abi: abiPolygon.IronSwap.getTokenBalances, calls: pools }) - bals.forEach((it, i) => { - const _tokens = tokens[i] - it.forEach((balance, j) => { - const token = _tokens[j]; - if (blacklistedTokensSet.has(token.toLowerCase())) return; - api.add(token, balance); - }) - }) - return api.getBalances() -} - -const { tvl: polygonLending, borrowed: polygonBorrowed } = - compoundExports2({ comptroller: Contracts.polygon.lend.ironController, cether: "0xCa0F37f73174a28a64552D426590d3eD601ecCa1" }) -const { tvl: fantomLending, borrowed: fantomBorrowed } = - compoundExports2({ comptroller: Contracts.fantom.lend.ironController, cether: "0xdfce3E14a8c77D32fe2455a9E56424F149E2F271" }) - -module.exports = { - polygon: { - tvl: sdk.util.sumChainTvls([tvl, polygonLending]), - borrowed: polygonBorrowed - }, - avax: { - tvl: tvl, - }, - fantom: { - tvl: sdk.util.sumChainTvls([tvl, fantomLending]), - borrowed: fantomBorrowed - }, - hallmarks: [ - [1652270400, "Re-entrancy Exploit"] - ], -}; diff --git a/projects/ironfinance/utils.js b/projects/ironfinance/utils.js deleted file mode 100644 index 4ff2ae2d745..00000000000 --- a/projects/ironfinance/utils.js +++ /dev/null @@ -1,16 +0,0 @@ -const transformAddress = (chain, address) => { - switch (chain) { - case 'polygon': - return addr => 'polygon:'+addr - case 'fantom': - return addr => 'fantom:'+addr - case 'avax': - return addr => 'avax:'+addr - default: - throw 'Unsupported chain' - } -} - -module.exports = { - transformAddress -} \ No newline at end of file diff --git a/projects/iskra/index.js b/projects/iskra/index.js deleted file mode 100644 index 072b4ce1ed9..00000000000 --- a/projects/iskra/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - klaytn: { - tvl: () => ({}), - staking: staking( - "0xb30d86d84f5b2df67ef962be0c6cf4c39901d416", - "0x17d2628d30f8e9e966c9ba831c9b9b01ea8ea75c" - ), - }, -}; diff --git a/projects/ispolink/index.js b/projects/ispolink/index.js deleted file mode 100644 index f0d422a72ec..00000000000 --- a/projects/ispolink/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require('../helper/staking') -const config = { - ethereum: { ispToken: '0xc8807f0f5ba3fa45ffbdc66928d71c5289249014', ispStaking: '0x8D28b93BfaA4adD716aC8B993e78c3844d8eB01A', }, - bsc: { ispToken: '0xd2e7b964770fcf51df088a5f0bb2d33a3c60cccf', ispStaking: '0xb6506E019CEF6d794c3304134B2b38a23090a0B0', }, - manta: { ispToken: '0xBAb1c57ec0bB0aE81d948503E51d90166459D154', ispStaking: '0x4519cc4A5A43ef66eaBEE810f54E23f655C293Ed', } -}; - -module.exports = { - methodology: 'Counts the number of ISP tokens in the native Ispolink protocols.', -}; - -Object.keys(config).forEach(chain => { - const { ispToken, ispStaking } = config[chain] - module.exports[chain] = { tvl: () => ({}), staking: staking(ispStaking, ispToken) }; -}); diff --git a/projects/issuaa/index.js b/projects/issuaa/index.js deleted file mode 100644 index b6b40250bd1..00000000000 --- a/projects/issuaa/index.js +++ /dev/null @@ -1,17 +0,0 @@ - - -const { getUniTVL } = require('../helper/unknownTokens') - - - -module.exports = { - misrepresentedTokens: true, - scroll: { - tvl: getUniTVL({ - factory: '0xC7e06CAF7880421cD21E98656B4755B3Df61537b', - useDefaultCoreAssets: true, - hasStablePools: true, - fetchBalances: true, // get reserves call fails - }) - } - } \ No newline at end of file diff --git a/projects/iswap-tech/index.js b/projects/iswap-tech/index.js deleted file mode 100644 index bf7ee1822e9..00000000000 --- a/projects/iswap-tech/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - btr: { factory: '0xad2449234455e0992e1423411df0f8b6fed1feae', fromBlock: 1370065, }, -}) \ No newline at end of file diff --git a/projects/ithaca/index.js b/projects/ithaca/index.js deleted file mode 100644 index cdb45d81820..00000000000 --- a/projects/ithaca/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const ITHACA_FUNDLOCK_CONTRACT = '0x4a20d341315b8ead4e5ebecc65d95080a47a7316'; -const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; -const USDC_CONTRACT = ADDRESSES.arbitrum.USDC_CIRCLE; -const ITHACA_WETH_AAVE_STRATEGY_CONTRACT = '0x0916ef55d869d96b2Bab778bFcE15305312c61fc' -const ITHACA_USDC_AAVE_STRATEGY_CONTRACT = '0x7071da72BCCd7dd8AE63C0cF3ea606D8cBb1D8dA' -const AWETH_CONTRACT = '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8' -const AUSDC_CONTRACT = '0x724dc807b04555b71ed48a6896b6F41593b8C637' - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'counts the number of WETH and USDC in Ithaca Fundlock contract', - arbitrum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [WETH_CONTRACT, ITHACA_FUNDLOCK_CONTRACT], - [USDC_CONTRACT, ITHACA_FUNDLOCK_CONTRACT], - [AWETH_CONTRACT, ITHACA_WETH_AAVE_STRATEGY_CONTRACT], - [AUSDC_CONTRACT, ITHACA_USDC_AAVE_STRATEGY_CONTRACT], - ], - }), - } -}; diff --git a/projects/ithil/index.js b/projects/ithil/index.js deleted file mode 100644 index aaf2d876568..00000000000 --- a/projects/ithil/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -const config = { - arbitrum: { - vaults: { - USDCv1: '0x6b416C9727fb248C3097b5c1D10c39a7EBDFf239', - USDTv1: '0x8b002cf7380403329627149aA3D730E633BF1D33', - DAIv1: '0xdC4c8Bfbf326d5F87fCB58D1a6E5B6E23992E61d', - WETHv1: '0xE8FEB169cc9ffbF3873EbfD31e34144672D9D7D0', - WBTCv1: '0xd5687bfa0b5EBc020dc726282cFD94086701DF94', - USDC: '0x2ca95BF88068c7570D020B726CABd3952f647133', - USDT: '0xc8d237311E9D7178b9DcadCE2F154053536B25C1', - DAI: '0xFa475C8ff8909200b9cBC739Ff92A8cA8Dd34275', - FRAX: '0xe64A672e608bbc08F0F471C271f7753C705F0AAF', - WETH: '0x695f4c97D3fa483654340eFFE257bfe9855efE34', - WBTC: '0x597f2B7604e2B1CF001f2BCD882F75d53B1ea586', - } - }, -} -module.exports = { - methodology: 'We calculate the TVL as the sum of (deposits + loans + locked profits - losses) for each vault available', - hallmarks: [ - [1691649008, "private mainnet launch"] - ], -} - -Object.keys(config).forEach(chain => { - const { vaults } = config[chain] - module.exports[chain] = { - tvl: sumERC4626VaultsExport({ vaults: Object.values(vaults), tokenAbi: 'asset', balanceAbi: 'totalAssets' }) - } -}) diff --git a/projects/ivx/index.js b/projects/ivx/index.js deleted file mode 100644 index f724bc8c51c..00000000000 --- a/projects/ivx/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const ivxVault = "0x598eE20d8D372665a96AFba9d3B0Bfd817f1f340" - -module.exports = { - berachain: { - tvl: staking( - [ - ivxVault - ], - [ - ADDRESSES.berachain.HONEY, - ADDRESSES.berachain.WETH, - ADDRESSES.berachain.WBERA, - ADDRESSES.berachain.WBTC, - ]) - }, -} \ No newline at end of file diff --git a/projects/ixswap/index.js b/projects/ixswap/index.js deleted file mode 100644 index 03f24901475..00000000000 --- a/projects/ixswap/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const {getUniTVL} = require("../helper/unknownTokens"); -const {staking} = require('../helper/staking') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const IXS_POLYGON = "0x1BA17C639BdaeCd8DC4AAc37df062d17ee43a1b8" -const IXS_BASE = "0xfe550bffb51eb645ea3b324d772a19ac449e92c5" -const STAKING_CONTRACTS = [ - "0xad644F3cC768bc6dceF97096790e2210D5191cec", // stake bank -] - - -const FUNDS = [ - '0x9546a22c244497b6fb5338e4ff7c74c5accb3ddd', // CKGP -] - -module.exports = { - polygon: { - tvl: getUniTVL({factory: '0xc2D0e0bc81494adB71Ce9Aa350cC875DaE12D81D', blacklistedTokens: [IXS_POLYGON]}), - staking: staking(STAKING_CONTRACTS, IXS_POLYGON), - }, - base: { - tvl: getUniTVL({factory: '0x2eE28d1Bbc2EcB1fFDB83E8055d585E9F0fb757f'}), - staking: staking(['0x44F07B446e14127136f3554A16014b49BC67D9E6'], IXS_BASE), - }, - ethereum: { - tvl: sumTokensExport({ owners: FUNDS, fetchCoValentTokens: true }) - } -} diff --git a/projects/izumi-iziswap-v2/index.js b/projects/izumi-iziswap-v2/index.js deleted file mode 100644 index be731d84d30..00000000000 --- a/projects/izumi-iziswap-v2/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens'); - -const iziswapClassicFactory = { - 'plume_mainnet': '0x88867BF3bB3321d8c7Da71a8eAb70680037068E4', -} - -const blacklistedTokens = [ - ADDRESSES.bsc.iUSD, - '0x1382628e018010035999A1FF330447a0751aa84f', - ADDRESSES.bsc.iUSD, // mantle iUSD - '0x078f712f038A95BeEA94F036cADB49188a90604b', // manta iUSD - ADDRESSES.bsc.iUSD, // merlin iUSD -] - -Object.keys(iziswapClassicFactory).forEach(chain => { - module.exports[chain] = { tvl: getUniTVL({ factory: iziswapClassicFactory[chain], blacklistedTokens }), } -}) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js deleted file mode 100644 index 8222ec8c54c..00000000000 --- a/projects/izumi-iziswap/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { iziswapExport } = require('../helper/iziswap') - -const nullAddress = ADDRESSES.null -const poolHelpers = { - 'bsc': ['0x93C22Fbeff4448F2fb6e432579b0638838Ff9581', - '0xBF55ef05412f1528DbD96ED9E7181f87d8C9F453'], - 'arbitrum': ['0xAD1F11FBB288Cd13819cCB9397E59FAAB4Cdc16F'], - 'era': ['0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F', - '0x483FDE31bcE3DCc168E23a870831b50Ce2cCd1F1'], - 'meter': ['0x07aBf894D5C25E626bb30f75eFC728a1d86BEeDC', - '0x579ffe4A5c8CB2C969aE4E65039B7dBb6951d164'], - 'aurora': ['0x61A41182CD6e94f2A026aE3c0D1b73B1AA579aEa', - '0xE78e7447223aaED59301b44513D1d3A892ECF212'], - // 'ethereumclassic': '0x1D377311b342633A970e71a787C50F83858BFC1B', - 'cronos': ['0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF'], - 'polygon': ['0x1CB60033F61e4fc171c963f0d2d3F63Ece24319c'], - // 'conflux': '0x1502d025BfA624469892289D45C0352997251728', - 'mantle': ['0x611575eE1fbd4F7915D0eABCC518eD396fF78F0c'], - 'ethereum': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'ontology_evm': ['0x344ADD21b136B09051fb061881eC7971c92cE7f7'], - 'ultron' : ['0xAC9788cfea201950dB91d7db6F28C448CF3A4B29'], - 'linea': ['0x1CB60033F61e4fc171c963f0d2d3F63Ece24319c'], - 'kroma': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], - 'manta': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'scroll': ['0x1502d025BfA624469892289D45C0352997251728'], - 'base': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], - 'zkfair': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], - 'zeta': ['0x2db0AFD0045F3518c77eC6591a542e326Befd3D7'], - // 'merlin': ['0x261507940678Bf22d8ee96c31dF4a642294c0467'], // tracked as part of merlinswap - 'blast': ['0x5e7902aDf0Ea0ff827683Cc1d431F740CAD0731b'], - 'zklink': ['0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F'], - 'mode': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'xlayer': ['0xF42C48f971bDaA130573039B6c940212EeAb8496'], - 'bob': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'taiko': ['0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF'], - 'core': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'gravity': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'iotex': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'morph': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'kava': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'hemi': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - 'plume_mainnet': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], -} // iziswap liquidityManager contracts - -const blacklistedTokens = [ - ADDRESSES.bsc.iUSD, - '0x1382628e018010035999A1FF330447a0751aa84f', - ADDRESSES.bsc.iUSD, // mantle iUSD - '0x078f712f038A95BeEA94F036cADB49188a90604b', // manta iUSD - ADDRESSES.bsc.iUSD, // merlin iUSD -] - -const blacklistedPools = { - 'hemi': [ - '0x469a5066578e22a1222cc78b2ccaca602db6bb4a', // bfBTC/hemiBTC - '0x98a3a18583138474aedd2ceec034cba1fa783613', // brBTC/suBTC - '0xe9635693b7606f1914c0cd698065ec84267a62a1', // mBTC/uniBTC - ], - 'taiko': [ - '0x5e1e8c9c77b0de88f1c4597a3c145b0c7abcf485', // mBTC/uniBTC - ] -} - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], blacklistedTokens, blacklistedPools: blacklistedPools[chain], }), } -}) - -module.exports.hallmarks = [ - [1715648400,"End Mode TVL Campaign S1"] -] - -// module.exports.ultron.tvl = () => ({}) // their RPC is rugging us \ No newline at end of file diff --git a/projects/izumi/abi.json b/projects/izumi/abi.json deleted file mode 100644 index b5586ef4e35..00000000000 --- a/projects/izumi/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "factory": "address:factory", - "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)", - "liquidities": "function liquidities(uint256) view returns (int24 leftPt, int24 rightPt, uint128 liquidity, uint256 lastFeeScaleX_128, uint256 lastFeeScaleY_128, uint256 remainTokenX, uint256 remainTokenY, uint128 poolId)", - "pool": "function pool(address, address, uint24) view returns (address)", - "state": "function state() view returns (uint160 sqrtPrice_96, int24 currentPoint, uint16 observationCurrentIndex, uint16 observationQueueLen, uint16 observationNextQueueLen, bool locked, uint128 liquidity, uint128 liquidityX)", - "poolMetas": "function poolMetas(uint128) view returns (address tokenX, address tokenY, uint24 fee)", - "fixRangeMiningInfo": "function getMiningContractInfo() view returns (address tokenX_, address tokenY_, uint24 fee_, tuple(address rewardToken, address provider, uint256 accRewardPerShare, uint256 rewardPerBlock)[] rewardInfos_, address iziTokenAddr_, int24 rewardUpperTick_, int24 rewardLowerTick_, uint256 lastTouchBlock_, uint256 totalVLiquidity_, uint256 startBlock_, uint256 endBlock_)", - "totalNIZI": "uint256:totalNIZI", - "DynamicRangeMiningInfo": "function getMiningContractInfo() view returns (address tokenX_, address tokenY_, uint24 fee_, address iziTokenAddr_, uint256 lastTouchBlock_, uint256 totalVLiquidity_, uint256 totalTokenX_, uint256 totalTokenY_, uint256 totalNIZI_, uint256 startBlock_, uint256 endBlock_)" -} \ No newline at end of file diff --git a/projects/izumi/api.js b/projects/izumi/api.js deleted file mode 100644 index d58b9aa2d9e..00000000000 --- a/projects/izumi/api.js +++ /dev/null @@ -1,37 +0,0 @@ -const { unwrapNFTs } = require('./utils') -const { getConfig: getConfigCache } = require('../helper/cache') - -async function getConfig(chainId) { - const data = await getConfigCache('izumi-liquidbox/'+chainId, `https://izumi.finance/api/v1/farm/compute?chainId=${chainId}`); - return data.data; -} - -const chains = { - 'ethereum': 1, - 'bsc': 56, - 'polygon': 137, - 'arbitrum': 42161, - 'aurora': 1313161554, - 'cronos': 25, -}; - -module.exports = { - // ownTokens: ['IZI', 'IUSD'], -} - -Object.keys(chains).forEach(chain => { - module.exports[chain] = { - tvl: getTvl(chain, false), - pool2: getTvl(chain, true), - } -}) - -function getTvl(chain, isPool2) { - return async (_, _b, { [chain]: block }) => { - const config = await getConfig(chains[chain]); - var contracts - if (isPool2){contracts = config.contracts[chain].pool2} - else {contracts = config.contracts[chain].pools} - return unwrapNFTs({ chain, block, nftAddress: config.liquidityManagers[chain], config: contracts, fixTokens: config.fixTokens[chain] }) - } -} \ No newline at end of file diff --git a/projects/izumi/index.js b/projects/izumi/index.js deleted file mode 100644 index 70ce6ab03e8..00000000000 --- a/projects/izumi/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require('../helper/staking') -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./api') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("izumi", chainKeys, ['pool2']), -} - -module.exports.ethereum.staking = staking('0xb56a454d8dac2ad4cb82337887717a2a427fcd00', '0x9ad37205d608b8b219e6a2573f922094cec5c200') - diff --git a/projects/izumi/utils.js b/projects/izumi/utils.js deleted file mode 100644 index ad89bccb428..00000000000 --- a/projects/izumi/utils.js +++ /dev/null @@ -1,198 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require("@defillama/sdk"); -const abi = require('./abi.json'); -const BigNumber = require('bignumber.js'); -const { get } = require('../helper/http'); -const { nullAddress } = require('../helper/tokenMapping'); - -function point2PoolPriceUndecimalSqrt(point) { - return (1.0001 ** point) ** 0.5; -} - -function _getAmountX(liquidity, leftPt, rightPt, sqrtPriceR, sqrtRate, upper) { - const sqrtPricePrPc = Math.pow(sqrtRate, rightPt - leftPt + 1); - const sqrtPricePrPd = Math.pow(sqrtRate, rightPt + 1); - - const numerator = sqrtPricePrPc - sqrtRate; - const denominator = sqrtPricePrPd - sqrtPriceR; - - if (!upper) { - const amount = new BigNumber(liquidity.times(numerator).div(denominator).toFixed(0, 3)); - return amount; - } else { - const amount = new BigNumber(liquidity.times(numerator).div(denominator).toFixed(0, 2)); - return amount; - } -} - -function _getAmountY(liquidity, sqrtPriceL, sqrtPriceR, sqrtRate, upper) { - const numerator = sqrtPriceR - sqrtPriceL; - const denominator = sqrtRate - 1; - if (!upper) { - const amount = new BigNumber(liquidity.times(numerator).div(denominator).toFixed(0, 3)); - return amount; - } else { - const amount = new BigNumber(liquidity.times(numerator).div(denominator).toFixed(0, 2)); - return amount; - } -} - -function _liquidity2AmountXAtPoint(liquidity, sqrtPrice, upper) { - const amountX = liquidity.div(sqrtPrice); - if (!upper) { - return new BigNumber(amountX.toFixed(0, 3)); - } else { - return new BigNumber(amountX.toFixed(0, 2)); - } -} - -function _liquidity2AmountYAtPoint(liquidity, sqrtPrice, upper) { - const amountY = liquidity.times(sqrtPrice); - if (!upper) { - return new BigNumber(amountY.toFixed(0, 3)); - } else { - return new BigNumber(amountY.toFixed(0, 2)); - } -} - -async function addiZiPositionBalances(params, balances, chain, ) { - const transformAddress = token => `${chain}:${token}` - const tokenX = params.miningInfo.tokenX_ - const tokenY = params.miningInfo.tokenY_ - const rangeLen = Number(params.miningInfo.rewardUpperTick_) - Number(params.miningInfo.rewardLowerTick_) - - const liquidity = new BigNumber(params.miningInfo.totalVLiquidity_).div(rangeLen).div(rangeLen).times(1e6) - - const currentPoint = Number(params.state.currentPoint) - const currentLiqudity = Number(params.state.curliquidity) - const currentLiqudityX = Number(params.state.curliquidityX) - - let amountX = new BigNumber(0) - let amountY = new BigNumber(0) - - const sqrtRate = Math.sqrt(1.0001); - const leftPtNum = Number(params.miningInfo.rewardLowerTick_); - const rightPtNum = Number(params.miningInfo.rewardUpperTick_); - // compute amountY without currentPt - if (leftPtNum < currentPoint) { - const rightPt = Math.min(currentPoint, rightPtNum); - const sqrtPriceR = point2PoolPriceUndecimalSqrt(rightPt); - const sqrtPriceL = point2PoolPriceUndecimalSqrt(leftPtNum); - amountY = _getAmountY(new BigNumber(liquidity), sqrtPriceL, sqrtPriceR, sqrtRate, false); - } - - // compute amountX without currentPt - if (rightPtNum > currentPoint + 1) { - const leftPt = Math.max(currentPoint + 1, leftPtNum); - const sqrtPriceR = point2PoolPriceUndecimalSqrt(rightPtNum); - amountX = _getAmountX(new BigNumber(liquidity), leftPt, rightPtNum, sqrtPriceR, sqrtRate, false); - } - - // compute amountX and amountY on currentPt - if (leftPtNum <= currentPoint && rightPtNum > currentPoint) { - const liquidityValue = new BigNumber(liquidity); - const maxLiquidityYAtCurrentPt = new BigNumber(currentLiqudity).minus(currentLiqudityX); - const liquidityYAtCurrentPt = liquidityValue.gt(maxLiquidityYAtCurrentPt) ? maxLiquidityYAtCurrentPt : liquidityValue; - const liquidityXAtCurrentPt = liquidityValue.minus(liquidityYAtCurrentPt); - const currentSqrtPrice = point2PoolPriceUndecimalSqrt(currentPoint); - amountX = amountX.plus(_liquidity2AmountXAtPoint(liquidityXAtCurrentPt, currentSqrtPrice, false)); - amountY = amountY.plus(_liquidity2AmountYAtPoint(liquidityYAtCurrentPt, currentSqrtPrice, false)); - } - const tokenIZI = params.miningInfo.iziTokenAddr_.toLowerCase() - sdk.util.sumSingleBalance(balances, transformAddress(tokenIZI), new BigNumber(params.totalNIZI).toFixed(0)) - sdk.util.sumSingleBalance(balances, transformAddress(tokenX), new BigNumber(amountX).toFixed(0)) - sdk.util.sumSingleBalance(balances, transformAddress(tokenY), new BigNumber(amountY).toFixed(0)) -} - -async function unwrapiZiswapV3NFTs({ balances = {}, nftsAndOwners = [], block, chain = 'bsc', owner, nftAddress, owners }) { - if (!nftsAndOwners.length) { - if (!nftAddress) - switch (chain) { - case 'bsc': nftAddress = '0x93C22Fbeff4448F2fb6e432579b0638838Ff9581'; break; - default: throw new Error('missing default uniswap nft address') - } - - if (!owners && owner) - owners = [owner] - - if (!owners) { - return balances - } - - - for (let i = 0; i < Object.keys(owners).length; i++) { - let type = Object.keys(owners)[i] - if (!owners[type] || owners[type].length == 0) { - continue - } - else if (type == 'fixRange') { - let ownersUni = getUniqueAddresses(owners[type]) - let nftsAndOwners = ownersUni.map(o => [nftAddress, o]) - await Promise.all(nftsAndOwners.map(([nftAddress, owner]) => unwrapiZiswapFixNFT({ balances, owner, nftAddress, block, chain, }))) - } - else if (type == 'dynamicRange') { - let ownersUni = getUniqueAddresses(owners[type]) - let nftsAndOwners = ownersUni.map(o => [nftAddress, o]) - await Promise.all(nftsAndOwners.map(([nftAddress, owner]) => unwrapiZiswapDynamicNFT({ balances, owner, nftAddress, block, chain, }))) - } - } - } - return balances - - function getUniqueAddresses(addresses) { - const set = new Set() - addresses.forEach(i => set.add(i.toLowerCase())) - return [...set] - } -} - -async function unwrapiZiswapFixNFT({ balances, owner, nftAddress, block, chain = 'bsc', }) { - const miningInfo = (await sdk.api.abi.call({ target: owner, abi: abi.fixRangeMiningInfo, block, chain })).output - const totalNIZI = (await sdk.api.abi.call({ target: owner, abi: abi.totalNIZI, block, chain })).output - const factory = (await sdk.api.abi.call({ target: nftAddress, abi: abi.factory, block, chain })).output - const poolInfo = (await sdk.api.abi.call({ - target: factory, abi: abi.pool, block, chain, params: [miningInfo.tokenX_, miningInfo.tokenY_, miningInfo.fee_] - })).output - if (poolInfo == nullAddress) return balances - const state = (await sdk.api.abi.call({ target: poolInfo, abi: abi.state, block, chain })).output - - let params = { - miningInfo: miningInfo, - state: state, - totalNIZI: totalNIZI, - } - await addiZiPositionBalances(params, balances, chain) - - return balances -} - -async function unwrapiZiswapDynamicNFT({ balances, owner, nftAddress, block, chain = 'bsc', }) { - const transformAddress = token => `${chain}:${token}` - const miningContractInfo = (await sdk.api.abi.call({ target: owner, abi: abi.DynamicRangeMiningInfo, block, chain })).output - const tokenA = miningContractInfo.tokenX_ - const tokenB = miningContractInfo.tokenY_ - const tokenIZI = miningContractInfo.iziTokenAddr_.toLowerCase() - const tokenAAmount = new BigNumber(miningContractInfo.totalTokenX_); - const tokenBAmount = new BigNumber(miningContractInfo.totalTokenY_); - const totalNIZI = Number(miningContractInfo.totalNIZI_ ?? 0); - sdk.util.sumSingleBalance(balances, transformAddress(tokenIZI), new BigNumber(totalNIZI).toFixed(0)) - sdk.util.sumSingleBalance(balances, transformAddress(tokenA), new BigNumber(tokenAAmount).toFixed(0)) - sdk.util.sumSingleBalance(balances, transformAddress(tokenB), new BigNumber(tokenBAmount).toFixed(0)) - - return balances -} - -async function unwrapNFTs({ balances = {}, block, chain = 'bsc', nftAddress, config, }) { - const uniContracts = config.uniContracts - const iZiContracts = config.iZiContracts - if (iZiContracts) await unwrapiZiswapV3NFTs({ balances, chain, block, nftAddress, owners: iZiContracts, }) - if (uniContracts) await sumTokens2({ balances, chain, block, owners: uniContracts, resolveUniV3: true, }) - // to fix balances of token addresses which are not on CoinGecko - // await checkAndFixToken(balances, chain, fixTokens) - return balances -} - -module.exports = { - unwrapiZiswapV3NFTs, - unwrapNFTs -} diff --git a/projects/jade-protocol/index.js b/projects/jade-protocol/index.js deleted file mode 100644 index c7f4aa625a6..00000000000 --- a/projects/jade-protocol/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - ethereum: { tvl: () => 0 } -}; diff --git a/projects/jademoney/index.js b/projects/jademoney/index.js deleted file mode 100644 index 9a592c31730..00000000000 --- a/projects/jademoney/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); - -const jadeContract = "neutron1mdy5fhtwdjagp5eallsdhlx6gxylm8rxqk72wjzg6y5d5kt44ysqprkduw"; -const usdcDenom = "ibc/B559A80D62249C8AA07A380E2A2BEA6E5CA9A6F079C912C3A9E9B494105E4F81"; - -async function tvl(api) { - const data = await queryContract({ contract: jadeContract, chain: "neutron", data: "{\"value\":{}}" }); - api.add(usdcDenom, data); -} - -module.exports = { - methodology: "Queries the Jade.Money contract for the total value of USDC deposits.", - neutron: { - tvl - } -} \ No newline at end of file diff --git a/projects/jadeswap/index.js b/projects/jadeswap/index.js deleted file mode 100644 index e6f02130940..00000000000 --- a/projects/jadeswap/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { getUniTVL, staking } = require("../helper/unknownTokens"); -const sdk = require("@defillama/sdk"); -const uniTvl = getUniTVL({ - factory: "0xb20a6389cA872d094f3c7A8180fE5BAb431BD794", - useDefaultCoreAssets: true, -}); -const masterchef = "0xcC507803A4b832684154C4E395D92A6EDbEAfE52"; -const jade = "0x7c70229F108D3d506Cff8Ea243FFA57344Fc4cE1"; -const wmnt = ADDRESSES.mantle.WMNT; - -module.exports = { - misrepresentedTokens: true, - mantle: { - tvl: sdk.util.sumChainTvls([ - uniTvl, - staking({ - owners: [masterchef], - tokens: [wmnt], - }), - ]), - staking: staking({ - owners: [masterchef], - tokens: [jade], - }), - }, -}; diff --git a/projects/jaguarswap.js b/projects/jaguarswap.js deleted file mode 100644 index 5bbf8f9f8fe..00000000000 --- a/projects/jaguarswap.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('./helper/unknownTokens'); - -module.exports = masterchefExports({ - chain: 'arbitrum', - nativeToken: '0x31535F7A83083E3f34899F356ECC7246FBF2E82D', - masterchef: '0xAd60A8cb60e052196F5B968B4bd4328A67Df27d3', -}) \ No newline at end of file diff --git a/projects/jamfrens/index.js b/projects/jamfrens/index.js deleted file mode 100644 index fb9cb490893..00000000000 --- a/projects/jamfrens/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x3dbea36ced3cd155605b725faf7e3f66dc5d6b2b" -const contract2 = "0xda78c03A7e4C44e570FDB7c6046D3e6387d5fDDC" -const contract3 = "0xF06B6dF2e5aabE6E53Cf496E7063bECbbFb50ABf" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owners: [contract, contract2, contract3], api }) -} - -module.exports = { - methodology: `We count the Matic on the ${contract}, ${contract2}, and ${contract3}`, - polygon: { - tvl - } -} \ No newline at end of file diff --git a/projects/jarvis/abi.json b/projects/jarvis/abi.json deleted file mode 100644 index 0aa44be408e..00000000000 --- a/projects/jarvis/abi.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "SynthereumPoolRegistry_getCollaterals": "address[]:getCollaterals", - "SynthereumPoolRegistry_getSyntheticTokens": "string[]:getSyntheticTokens", - "SynthereumPoolRegistry_getElements": "function getElements(string syntheticTokenSymbol, address collateralToken, uint8 version) view returns (address[])", - "collateralToken": "address:collateralToken", - "totalCollateralAmount": "function totalCollateralAmount() view returns (uint256 usersCollateral, uint256 lpsCollateral, uint256 totalCollateral)", - "SynthereumFixedRateRegistry_getCollaterals": "address[]:getCollaterals", - "SynthereumFixedRateRegistry_getSyntheticTokens": "string[]:getSyntheticTokens", - "SynthereumFixedRateRegistry_getElements": "function getElements(string syntheticTokenSymbol, address collateralToken, uint8 version) view returns (address[])", - "totalPegCollateral": "uint256:totalPegCollateral", - "SynthereumSelfMintingRegistry_getCollaterals": "address[]:getCollaterals", - "SynthereumSelfMintingRegistry_getSyntheticTokens": "string[]:getSyntheticTokens", - "SynthereumSelfMintingRegistry_getElements": "function getElements(string syntheticTokenSymbol, address collateralToken, uint8 version) view returns (address[])", - "getGlobalPositionData": "function getGlobalPositionData() view returns (uint256 totCollateral, uint256 totTokensOutstanding)" -} \ No newline at end of file diff --git a/projects/jarvis/index.js b/projects/jarvis/index.js deleted file mode 100644 index 4bdd6b4dd4b..00000000000 --- a/projects/jarvis/index.js +++ /dev/null @@ -1,118 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -// The synthpoolRegistry addresses can be found in this repo -// https://gitlab.com/jarvis-network/apps/exchange/mono-repo/-/tree/dev/libs/contracts/networks -const contracts = { - polygon: { // 137 - version: 6, synthpoolRegistry: '0xA5BB18ca30fB27045ec0aA4d7039Fc37a7A03BD1', - fixedRateVersion: 1, fixedRateRegistry: '0xBdE9c05FeA7a7fB1173024eac529a9c46bD0307f', - creditLineVersion: 2, selfMintingRegistry: '0x1eA5022a81bd0dF1Bb85085083cDDd1e6A4cf61C' - }, - bsc: { // 56 - version: 5, synthpoolRegistry: '0x930A54D8Af945F6D1BED5AAF63b63fAb50a8197f', - fixedRateVersion: 1, fixedRateRegistry: '0x80eB7668AEC208af0dA10F8BB70ca99F3604E076', - creditLineVersion: 2, selfMintingRegistry: '0xBD8FdDa057de7e0162b7A386BeC253844B5E07A5' - }, - xdai: { // 100 - version: 5, synthpoolRegistry: '0x43a98e5C4A7F3B7f11080fc9D58b0B8A80cA954e', - }, - optimism: { // 10 - version: 6, synthpoolRegistry: '0x811F78b7d6bCF1C0E94493C2eC727B50eE32B974', - creditLineVersion: 2, selfMintingRegistry: '0xBD8FdDa057de7e0162b7A386BeC253844B5E07A5' - }, - avax: { // 43114 - version: 5, synthpoolRegistry: '0x8FEceC5629EED60D18Fd3438aae4a8E69723D190', - }, - arbitrum: { // 42161 - version: 6, synthpoolRegistry: '0xf844826e986a2ad77Bf24a491Fe1D8b9ef2d3B03', - creditLineVersion: 2, selfMintingRegistry: '0x58741E9137a8aF31955D42AEc99a1aD4771EeC23' - } -} - -async function tvl(api) { - const chain = api.chain - const { synthpoolRegistry, version } = contracts[chain] - const { fixedRateRegistry, fixedRateVersion } = contracts[chain] - const { selfMintingRegistry, creditLineVersion } = contracts[chain] - - // Get liquidityPools by calling getElements(synth, collateral, version) - // For v5, the collateral is stored in the liquidity pools directly - // Get collaterals, usually single collat, USDC on polygon, BUSD on BSC, but might be multiple collats later on - - const collaterals = await api.call({ abi: abi["SynthereumPoolRegistry_getCollaterals"], target: synthpoolRegistry, }) - // Get synth token symbols - jEUR, jCHF etc - const syntheticTokens = await api.call({ abi: abi["SynthereumPoolRegistry_getSyntheticTokens"], target: synthpoolRegistry, }) - if (chain === 'polygon' || chain === 'bsc') { - // Get collateral for SynthereumFixedRate Wrappers - const fixedRateCollaterals = await api.call({ abi: abi["SynthereumFixedRateRegistry_getCollaterals"], target: fixedRateRegistry, }) - - // Get synthTokens for SynthereumFixedRate Wrappers - jEUR, jCHF etc. - const fixedRateSynthTokens = await api.call({ abi: abi["SynthereumFixedRateRegistry_getSyntheticTokens"], target: fixedRateRegistry, }) - - // Get fixedRateWrappers by calling SynthereumFixedRateRegistry_getElements - const params_list_fixedRate = fixedRateCollaterals.map(fixedRateCollateral => fixedRateSynthTokens.map(fixedRateSynth => [fixedRateSynth, fixedRateCollateral, fixedRateVersion])).flat().map(i => ({ params: i })) - const elements_obj_fixedRate = await api.multiCall({ abi: abi["SynthereumFixedRateRegistry_getElements"], target: fixedRateRegistry, calls: params_list_fixedRate }) - const fixedRateWrappers = elements_obj_fixedRate.flat(2) - const fixedRateCalls = fixedRateWrappers - const fixedRateCollateralTokens = await api.multiCall({ abi: abi.collateralToken, calls: fixedRateCalls, }) - const fixedRateTotalCollateralAmounts = await api.multiCall({ abi: abi.totalPegCollateral, calls: fixedRateCalls, }) - api.add(fixedRateCollateralTokens, fixedRateTotalCollateralAmounts) - } - - // Get synthereumPools by calling SynthereumPoolRegistry_getElements - const params_list = collaterals.map(collateral => syntheticTokens.map(synth => ({ params: [synth, collateral, version]}))).flat() - const elements_obj = await api.multiCall({ abi: abi["SynthereumPoolRegistry_getElements"], target: synthpoolRegistry, calls: params_list }) - const liquidityPools = elements_obj.flat(2) - - if (version === 6) { - const blacklistedPools = [ - '0x63B5891895A57C31d5Ec2a8A5521b6EE67700f9F', - '0x1493607042C5725cEf277A83CFC94caA4fc6278F', - '0xBC988A0146178825C26c255989cfd5083Bae672C', - '0x8FEceC5629EED60D18Fd3438aae4a8E69723D190', - ].map(i => i.toLowerCase()) - const calls = liquidityPools.filter(i => !blacklistedPools.includes(i.toLowerCase())) - const collateralTokens = await api.multiCall({ abi: abi.collateralToken, calls }) - const totalCollateralAmounts = await api.multiCall({ abi: abi.totalCollateralAmount, calls, permitFailure: true }) - collateralTokens.forEach((data, i) => { - const totalCollateralAmount = totalCollateralAmounts[i] - if (!totalCollateralAmount) return - api.add(data, totalCollateralAmount.totalCollateral) - }) - } else if (version === 5) { - // Get balances of every LiquidityPool and SynthToken Contracts - await sumTokens2({ api, owners: liquidityPools, tokens: collaterals }) - } - - if (chain === 'polygon' || chain === 'bsc' || chain === 'optimism' || chain === 'arbitrum') { - // Get collateral token addresses from self minting registry - const selfMintingCollaterals = await api.call({ abi: abi["SynthereumSelfMintingRegistry_getCollaterals"], target: selfMintingRegistry, }) - // Get synth token symbols - jEUR, jCHF etc - const selfMintingSyntheticTokens = await api.call({ abi: abi["SynthereumSelfMintingRegistry_getSyntheticTokens"], target: selfMintingRegistry, }) - // Get creditLineDerivatives by calling SynthereumSelfMintingRegistry_getElements - const params_list_creditline = selfMintingCollaterals.map(selfMintingCollateral => selfMintingSyntheticTokens.map(selfMintingSynth => ({ params: [selfMintingSynth, selfMintingCollateral, creditLineVersion]}))).flat() - const elements_obj_creditline = await api.multiCall({ - abi: abi["SynthereumSelfMintingRegistry_getElements"], target: selfMintingRegistry, calls: params_list_creditline, - }) - - const creditLineDerivatives = elements_obj_creditline.flat(2) - - const creditLineCalls = creditLineDerivatives - const creditLineCollateralTokens = await api.multiCall({ abi: abi.collateralToken, calls: creditLineCalls, }) - const creditLineTotalCollateralAmounts = await api.multiCall({ abi: abi.getGlobalPositionData, calls: creditLineCalls, }) - creditLineCollateralTokens.forEach((data, i) => { - api.add(data, creditLineTotalCollateralAmounts[i].totCollateral) - }) - } -} - -module.exports = { - methodology: 'Sum all collateral deposited by liquidity providers and users on SynthereumPools (V5 and V6) and FixedRateWrappers' -}; - - -Object.keys(contracts).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/jaspervault/index.js b/projects/jaspervault/index.js deleted file mode 100644 index 6245f285a53..00000000000 --- a/projects/jaspervault/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") -const iBTC_arbitrum = '0x050C24dBf1eEc17babE5fc585F06116A259CC77A' -const WSOL_arbitrum = '0x2bcC6D6CdBbDC0a4071e48bb3B969b06B3330c07' -const UNI_arbitrum = '0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0' -const cbBTC_base = ADDRESSES.ethereum.cbBTC -const USDC_btr = '0xf8c374ce88a3be3d374e8888349c7768b607c755' -const USDT_btr = '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2' -module.exports = { - arbitrum: { - tvl: sumTokensExport({ - owners: [ - '0x34Eda05F73f30B43d4c53cdCE830C27291785F96', // ETH CALL - '0x5ffff66C4BE400185eE9CF903a76e7845b6998d3', // WBTC CALL - '0xD02e2EB6Cda2df3c4b3d4157F15e45573DE5BEDa', // iBTC CALL - '0x5388504406adAB83be8dCc6FE6dF94B3F44EEeeD', // ETH WBTC iBTC PUT - ], - tokens: [ - ADDRESSES.arbitrum.WBTC, - ADDRESSES.null, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.LINK, - UNI_arbitrum, - WSOL_arbitrum, - iBTC_arbitrum - ] - }) - }, - base: { - tvl: sumTokensExport({ - owners: [ - '0x5CDF70b831A84B11FC480528116248BA7F91cc62', // cbBTC CALL - '0x5CFa6c853De2BC1F64e52DaF3478e51aF642860c', // cbBTC PUT - ], - tokens: [ADDRESSES.null, cbBTC_base, ADDRESSES.base.USDC] - }) - }, - btr: { - tvl: sumTokensExport({ - owners: [ - '0xB0c78bcC1508CEe4c487C27e65797d421D95da07', // BTC CALL 0.5H - '0xd3e0c9729d3f379ac3f7326860c5965a3f777294', // BTC PUT 1H-24H - '0x3166cd13b1779cb0234e9b63f42f3e8bb6d7050d' // BTC PUT - ], - tokens: [ - ADDRESSES.null, - USDC_btr, - USDT_btr - ] - }) - } -} diff --git a/projects/javsphere/index.js b/projects/javsphere/index.js deleted file mode 100644 index fc9ac8c4dc0..00000000000 --- a/projects/javsphere/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { staking } = require("../helper/staking.js"); - -const STAKING_BASE = '0xE420BBb4C2454f305a3335BBdCE069326985fb5b' -const FREEZER_BASE = '0x03e225D2bd32F5ecE539005B57F9B94A743ADBFB' -const VESTING_BASE = '0x42a40321843220e9811A1385D74d9798436f7002' -const JAV_BASE = '0xEdC68c4c54228D273ed50Fc450E253F685a2c6b9' -const LEVERAGEX_BASE_EARN = '0xfd916d70eb2d0e0e1c17a6a68a7fbede3106b852' -const LEVERAGEX_BASE_DIAMOND = '0xBF35e4273db5692777EA475728fDbBa092FFa1B3' -const LEVERAGEX_BASE_xJAVVault = '0x96aF2003ab259a56104d639eb6ed9EACe54B1142' - -async function tvl(api) { - const config = await api.fetchList({ lengthAbi: 'tokensCount', itemAbi: "function tokens(uint256) view returns (address asset, bytes32 priceFeed, uint256 targetWeightage, bool isActive)", target: LEVERAGEX_BASE_EARN }) - const tokens = config.map(i => i.asset).concat(JAV_BASE) - return api.sumTokens({ owners: [LEVERAGEX_BASE_EARN, LEVERAGEX_BASE_DIAMOND, LEVERAGEX_BASE_xJAVVault], tokens, }) -} - -module.exports = { - methodology: `TVL of LeverageX Trading platform leveragex.trade (LPs and Traders). TVL from staking and freezer of javsphers native token JAV.`, - hallmarks: [ - [1733837635, "Migration to BASE"], - [1734547635, "Launch of LeverageX.trade"], - ], - base: { - tvl, - staking: staking([STAKING_BASE, FREEZER_BASE], JAV_BASE), - vesting: staking(VESTING_BASE, JAV_BASE) - }, - defichain_evm: { - tvl: () => { }, - staking: () => { }, - }, - defichain: { - tvl: () => { }, - }, -} diff --git a/projects/jax-protocol/index.js b/projects/jax-protocol/index.js deleted file mode 100644 index e7bf371af2a..00000000000 --- a/projects/jax-protocol/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - taiko: compoundExports2({ comptroller: '0x8D86d4070b9432863FE9522B2c931C410085E1d4', cether: '0xdc1af71e6b9b4572cdf7832496efbea06cbecfc5', }), -} \ No newline at end of file diff --git a/projects/jaypeggers/index.js b/projects/jaypeggers/index.js deleted file mode 100644 index 64b372ef40c..00000000000 --- a/projects/jaypeggers/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -module.exports = { - methodology: "Tracks funds locked in the Jay ERC20 contracts on Ethereum", - ethereum: { - tvl: sumTokensExport({ - owners: [ - "0xDA7C0810cE6F8329786160bb3d1734cf6661CA6E", - "0x112E9FdAd728aDFBb1CE407a9CFa9339E1C6E130", - ], - tokens: [coreAssets.null], - }), - }, -}; diff --git a/projects/jbc/index.js b/projects/jbc/index.js deleted file mode 100644 index bd8d385e161..00000000000 --- a/projects/jbc/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { pool2, staking } = require("../helper/unknownTokens"); -const { nullAddress, sumTokensExport, } = require("../helper/unwrapLPs"); - -const tokensAndOwners = [ - [ADDRESSES.arbitrum.fsGLP, '0xe964b6083F24dBC06e94C662b195c22C76923b22'], // GLP - [nullAddress, '0x64f688cACeFe6D4809f1A829c1d0286100196bE0'], // ETH - [ADDRESSES.arbitrum.WBTC, '0xCC13E077F54577cE3Ea52916fDd70305C461A3ED'], // WBTC - [ADDRESSES.arbitrum.USDC, '0xcA2F482B067D354B3cdB6926911f42F5d1f0e872'], // USDC -] -const lpToken = '0x85c6da933a7451bf2a6d836304b30967f3e76e11' - -module.exports = { - hallmarks: [ - [1681516800, "Rug Pull"] - ], - deadFrom: '2023-04-15', - arbitrum: { - tvl: sumTokensExport({ tokensAndOwners }), - pool2: pool2({ stakingContract: '0x0F6f73c7ecCE4FB9861E25dabde79CBA112550b3', lpToken, useDefaultCoreAssets: true, }), - staking: staking({owner: "0xaF70e6DF6d34dbcd284BC4CCa047Bd232110A2CF", tokens: ["0xb67c175701fD60cD670cB9D331368367BF072e47"], lps: [lpToken]}) - } -} \ No newline at end of file diff --git a/projects/jbtc/index.js b/projects/jbtc/index.js deleted file mode 100644 index 5671fa2fb31..00000000000 --- a/projects/jbtc/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport, nullAddress, } = require('../helper/sumTokens') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: 'Total amount of BTC locked in Bitcoin network on wallet bc1qmukuv7j57umsd5tgg9fw88eqap57rzphkfckyp', - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.jbtc }), - }, - ethereum: { - tvl: sumTokensExport({ owners: ['0x7e90Ef7D172843dB68e42FC5fAA8CB7C1803Dcfa'], tokens: [nullAddress] }), - }, -} diff --git a/projects/jediswap-v2/index.js b/projects/jediswap-v2/index.js deleted file mode 100644 index b2b65e9a64c..00000000000 --- a/projects/jediswap-v2/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens } = require('../helper/chain/starknet') -const { cachedGraphQuery } = require('../helper/cache') - -async function tvl(api) { - const query = '{ pools (first: 1000) { poolAddress token0 { tokenAddress } token1 { tokenAddress } }}' - const { pools } = await cachedGraphQuery('starknet-jediswap-v2', 'https://api.v2.jediswap.xyz/graphql', query) - const t = str => str.replace('0x', '0x0') - const ownerTokens = pools.map(pool => [[t(pool.token0.tokenAddress), t(pool.token1.tokenAddress)], t(pool.poolAddress)]) - return sumTokens({ ownerTokens, api }) - // await getLogs({ fromBlock: 535428, topic: '0x27dd458d081c22bd6e76f4dddbc87f11e477b7c5823b13f147d45f91ec098ee', target: factory }).catch(console.error) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - starknet: { - tvl, - } -} \ No newline at end of file diff --git a/projects/jediswap/abi.js b/projects/jediswap/abi.js deleted file mode 100644 index a3ee514e816..00000000000 --- a/projects/jediswap/abi.js +++ /dev/null @@ -1,77 +0,0 @@ -const fabis = [ - { - "inputs": [], - "name": "get_all_pairs", - "outputs": [ - { - "name": "all_pairs_len", - "type": "felt" - }, - { - "name": "all_pairs", - "type": "felt*" - } - ], - "stateMutability": "view", - "type": "function" - } -] - -const pabis = [ - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "name": "address", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function", - "customType": "address" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "name": "address", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function", - "customType": "address" - }, - { - "inputs": [], - "name": "get_reserves", - "outputs": [ - { - "name": "reserve0", - "type": "Uint256" - }, - { - "name": "block_timestamp_last", - "type": "felt" - }, - { - "name": "reserve1", - "type": "Uint256" - }, - ], - "stateMutability": "view", - "type": "function" - }, -] - - -const factory = {} -const pair = {} -fabis.forEach(i => factory[i.name] = i) -pabis.forEach(i => pair[i.name] = i) - -module.exports = { - factory, pair, fabis, pabis, -} \ No newline at end of file diff --git a/projects/jediswap/api.js b/projects/jediswap/api.js deleted file mode 100644 index 73ba41d0bba..00000000000 --- a/projects/jediswap/api.js +++ /dev/null @@ -1,49 +0,0 @@ -// https://www.starknetjs.com/docs/API/contract - -const { call, multiCall, parseAddress, } = require('../helper/chain/starknet') -const { getCache, setCache, } = require('../helper/cache') -const abi = require('./abi') -const { transformDexBalances } = require('../helper/portedTokens') -const factory = '0xdad44c139a476c7a17fc8141e6db680e9abc9f56fe249a105094c44382c2fd' - -async function tvl() { - let { all_pairs } = await call({ target: factory, abi: abi.factory.get_all_pairs }) - - const calls = all_pairs.map(i => parseAddress(i)) - const cache = await getCache('jediswap', 'starknet') ?? {} - if (!cache.token0s) { - cache.token0s = [] - cache.token1s = [] - } - const oldCacheLength = cache.token0s.length - const newCalls = calls.slice(oldCacheLength) - - const _token0s = await multiCall({ abi: abi.pair.token0, calls: newCalls }) - const _token1s = await multiCall({ abi: abi.pair.token1, calls: newCalls }) - const reserves = await multiCall({ abi: abi.pair.get_reserves, calls }) - - cache.token0s.push(..._token0s) - cache.token1s.push(..._token1s) - if (cache.token0s.length > oldCacheLength) await setCache('jediswap', 'starknet', cache) - - - const data = [] - reserves.forEach((reserve, i) => { - data.push({ - token0: cache.token0s[i], - token1: cache.token1s[i], - token0Bal: +reserve.reserve0, - token1Bal: +reserve.reserve1, - }) - }) - - return transformDexBalances({ chain: 'starknet', data }) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - starknet: { - tvl, - } -} \ No newline at end of file diff --git a/projects/jediswap/index.js b/projects/jediswap/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/jediswap/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/jelly/index.js b/projects/jelly/index.js deleted file mode 100644 index 1fb6ea4892d..00000000000 --- a/projects/jelly/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const jelly = "0xf5f06fFa53Ad7F5914F493F16E57B56C8dd2eA80" -const USDC = ADDRESSES.ethereum.USDC -const jellyUsdcLP = "0x64C2F792038f1FB55da1A9a22749971eAC94463E" -const sweetPool = '0xF897C014a57298DA3453f474312079cC6cB140c0' -const royalPool = '0xcC43331067234a0014d298b5226A1c22cb0ac66a' - - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on Sushiswap. Staking accounts for the JELLY locked in our farming contracts', - ethereum: { - pool2: staking([sweetPool, royalPool], [jellyUsdcLP]), - tvl: () => ({}), - }, -} diff --git a/projects/jellybeanswap/index.js b/projects/jellybeanswap/index.js deleted file mode 100644 index 4bb8563154e..00000000000 --- a/projects/jellybeanswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport('bsc', '0x320827adb3f759a386348b325c54803b2b3a7572') \ No newline at end of file diff --git a/projects/jellyverse/index.js b/projects/jellyverse/index.js deleted file mode 100644 index d59b7ad26f1..00000000000 --- a/projects/jellyverse/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') - -module.exports = { - sei: { - tvl, - } -} - -async function tvl(api) { - let tokens = await cachedGraphQuery('jellyverse', 'https://graph.jellyverse.org', `query q($lastId: ID){ - tokens (where: {id_gt: $lastId} first: 1000) { - id - address - pool { id } - } -}`, { fetchById: true }) - const vault = "0xFB43069f6d0473B85686a85F4Ce4Fc1FD8F00875" - tokens = tokens.filter(t => !t.pool).map(t => t.address) - return api.sumTokens({ owner: vault, tokens }) -} diff --git a/projects/jet-protocol-v2-fixed-term/idl.json b/projects/jet-protocol-v2-fixed-term/idl.json deleted file mode 100644 index 2ef08b5344c..00000000000 --- a/projects/jet-protocol-v2-fixed-term/idl.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "version": "0.1.0", - "name": "jet_fixed_term", - "constants": [ - { - "name": "MARKET", - "type": "bytes", - "value": "[109, 97, 114, 107, 101, 116]" - }, - { - "name": "TICKET_ACCOUNT", - "type": "bytes", - "value": "[116, 105, 99, 107, 101, 116, 95, 97, 99, 99, 111, 117, 110, 116]" - }, - { - "name": "TICKET_MINT", - "type": "bytes", - "value": "[116, 105, 99, 107, 101, 116, 95, 109, 105, 110, 116]" - }, - { - "name": "CRANK_AUTHORIZATION", - "type": "bytes", - "value": "[99, 114, 97, 110, 107, 95, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110]" - }, - { - "name": "CLAIM_NOTES", - "type": "bytes", - "value": "[99, 108, 97, 105, 109, 95, 110, 111, 116, 101, 115]" - }, - { - "name": "TICKET_COLLATERAL_NOTES", - "type": "bytes", - "value": "[116, 105, 99, 107, 101, 116, 95, 99, 111, 108, 108, 97, 116, 101, 114, 97, 108, 95, 110, 111, 116, 101, 115]" - }, - { - "name": "UNDERLYING_COLLATERAL_NOTES", - "type": "bytes", - "value": "[117, 110, 100, 101, 114, 108, 121, 105, 110, 103, 95, 99, 111, 108, 108, 97, 116, 101, 114, 97, 108, 95, 110, 111, 116, 101, 115]" - }, - { - "name": "EVENT_ADAPTER", - "type": "bytes", - "value": "[101, 118, 101, 110, 116, 95, 97, 100, 97, 112, 116, 101, 114]" - }, - { - "name": "TERM_LOAN", - "type": "bytes", - "value": "[116, 101, 114, 109, 95, 108, 111, 97, 110]" - }, - { - "name": "TERM_DEPOSIT", - "type": "bytes", - "value": "[116, 101, 114, 109, 95, 100, 101, 112, 111, 115, 105, 116]" - }, - { - "name": "USER", - "type": "bytes", - "value": "[117, 115, 101, 114]" - }, - { - "name": "ORDERBOOK_MARKET_STATE", - "type": "bytes", - "value": "[111, 114, 100, 101, 114, 98, 111, 111, 107, 95, 109, 97, 114, 107, 101, 116, 95, 115, 116, 97, 116, 101]" - }, - { - "name": "MARGIN_USER", - "type": "bytes", - "value": "[109, 97, 114, 103, 105, 110, 95, 117, 115, 101, 114]" - }, - { - "name": "UNDERLYING_TOKEN_VAULT", - "type": "bytes", - "value": "[117, 110, 100, 101, 114, 108, 121, 105, 110, 103, 95, 116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116]" - }, - { - "name": "FEE_VAULT", - "type": "bytes", - "value": "[102, 101, 101, 95, 118, 97, 117, 108, 116]" - } - ], - "instructions": [], - "accounts": [ - { - "name": "Market", - "type": { - "kind": "struct", - "fields": [ - { - "name": "versionTag", - "type": "u64" - }, - { - "name": "airspace", - "type": "publicKey" - }, - { - "name": "orderbookMarketState", - "type": "publicKey" - }, - { - "name": "eventQueue", - "type": "publicKey" - }, - { - "name": "asks", - "type": "publicKey" - }, - { - "name": "bids", - "type": "publicKey" - }, - { - "name": "underlyingTokenMint", - "type": "publicKey" - }, - { - "name": "underlyingTokenVault", - "type": "publicKey" - }, - { - "name": "ticketMint", - "type": "publicKey" - }, - { - "name": "claimsMint", - "type": "publicKey" - }, - { - "name": "ticketCollateralMint", - "type": "publicKey" - }, - { - "name": "underlyingCollateralMint", - "type": "publicKey" - }, - { - "name": "underlyingOracle", - "type": "publicKey" - }, - { - "name": "ticketOracle", - "type": "publicKey" - }, - { - "name": "feeVault", - "type": "publicKey" - }, - { - "name": "feeDestination", - "type": "publicKey" - }, - { - "name": "seed", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "bump", - "type": { - "array": [ - "u8", - 1 - ] - } - }, - { - "name": "orderbookPaused", - "type": "bool" - }, - { - "name": "ticketsPaused", - "type": "bool" - }, - { - "name": "reserved", - "type": { - "array": [ - "u8", - 29 - ] - } - }, - { - "name": "borrowTenor", - "type": "u64" - }, - { - "name": "lendTenor", - "type": "u64" - }, - { - "name": "originationFee", - "type": "u64" - }, - { - "name": "nonce", - "type": "u64" - } - ] - } - } - ], - "types": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/jet-protocol-v2-fixed-term/index.js b/projects/jet-protocol-v2-fixed-term/index.js deleted file mode 100644 index 8ebc7367d52..00000000000 --- a/projects/jet-protocol-v2-fixed-term/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, } = require("../helper/solana"); -const programId = 'JPTermEg2DwrV39xb1Fs7z1VUxcvdPT7mE7cyGsQ4xt'; -const idl = require('./idl.json') - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, programId, provider) - const accounts = await program.account.market.all() - return sumTokens2({ tokenAccounts: accounts.map(i => i.account.underlyingTokenVault.toString()) }) -} - -module.exports = { - methodology: 'Add all the SOL in the pools, NFT value is not included in tvl', - timetravel: false, - solana: { - tvl, - }, -}; diff --git a/projects/jetfuelfinance/index.js b/projects/jetfuelfinance/index.js deleted file mode 100644 index ccd02543223..00000000000 --- a/projects/jetfuelfinance/index.js +++ /dev/null @@ -1,76 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -// const { compoundExports } = require("../helper/compound"); - -// Jetswap section -//const factory = "0x0eb58E5c8aA63314ff5547289185cC4583DfCBD5"; - -/*Vaults found via Jetfuel 1 deployer, some it could not be tracked -* so there is missing a small % of tvl compare to their official site stated amount ~60m - -*/ - - -const abi = { - "token": "address:token", - "balance": "uint256:balance", - "underlying": "address:underlying", - "getCash": "uint256:getCash" -} - - -const vaults = [ - "0x4149531aeD145a15ccc361C469B0c79FE26B4F1c", - "0x1Ae8F478571E7BC7caC067a8FCD298749BE722AE", - "0x06FD5CaB123990a0dd0Ba2130Bfa76Da26C91b43", - "0x7F2E9e374E97f171c9eD3E0910111b15B9045644", - "0xF2F11389cE9cf23c37B03131Df914772BA17e664", - "0x755aAC39603599D2a10C407C3D06deE96999Ae90", - "0xD0B1DC1B39A730D634902c01C61316A97afA31B5", - "0x465A5e8501Bf38898A8AeAd87f0d864AdCc826a4", - "0xED2097330741aC6AA574C0EDa26A7ad41c976fb0", - "0xA10983a758DbD8998215dB48b44A0aDa77C5f7DB", - "0xd1C249dc749E6458813Da36a3dE0Bb4A75cd3104", - "0x229e084E2C88a09aA04eEdbF93c3D728D06DAE58", - "0x229eeDacA481A673cd7F318Dffd35489Fdb3c888", - "0x99cC3060487fA635Cfd9BCFf69417D225b3f0104", - "0x29C12B9cE7df205C944725520718D10aafA78433", - "0x804ef864d199E28C1F48d179FAeb53683B671875", - "0x980edEc0A2a62E3D396A1a60EE8101f5116De316", - "0x4e52Ae85329474EC9e2469bdD1d0491EA2C41254", - "0x032bb900363BE7A2fA566694A7F065F13820EcDA", - "0x6bA6c5aa9b3B24Bb786E31adb4AE36397678a64b", - "0xA6d55074b038a082748c88D9C3E56821C44474ff", -]; - - -// assets lent to fortress lending protocol cannot be retrieved, fortress has bad debt which wont be repaid -const single_side_vault = [ - //wbnb vault - "0x15e84D6eD8997590E02b25d3D3CeEe9686753306", - // eth vault - "0x647db6Dce3C36Ac1a3BA48f0F6B767A6c73E22D2", - // btcb vault - "0xeaa8234D9bf8Dfc6C8c24D3d24BE3cAd256450EF", -]; -//const factoryTvl = uniTvlExport(factory, 'bsc') - -const bscTvl = async (api) => { - const vaultBals = await api.multiCall({ abi: abi.balance, calls: vaults }) - const vaultTokens = await api.multiCall({ abi: abi.token, calls: vaults }) - // const ssBals = await api.multiCall({ abi: abi.balance, calls: single_side_vault }) - // api.add(single_side_assets, ssBals) - const sUnderlyingTokens = (await api.multiCall({ abi: 'address:token', calls: single_side_vault, permitFailure: true })).map(i => i || ADDRESSES.null) - const sStrategies = await api.multiCall({ abi: 'address:strategy', calls: single_side_vault}) - api.add(vaultTokens, vaultBals) - return sumTokens2({ api, resolveLP: true, tokensAndOwners2: [sUnderlyingTokens, sStrategies] }) -}; - - -module.exports = { - bsc: { - tvl: bscTvl, - borrowed: () => ({}) - }, -}; diff --git a/projects/jetmine/index.js b/projects/jetmine/index.js deleted file mode 100644 index 26c8031611d..00000000000 --- a/projects/jetmine/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0xF7711748bF74f2dDC261e745Ff43FdD8abfD1200', - nativeToken: '0x71BE8F5F245c1F5aa5727DFdB36aAD3C71a4c26b' -}) \ No newline at end of file diff --git a/projects/jetprotocol-v2-margin/index.js b/projects/jetprotocol-v2-margin/index.js deleted file mode 100644 index fd21e9d9b89..00000000000 --- a/projects/jetprotocol-v2-margin/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, } = require("../helper/solana"); -const programId = 'JPPooLEqRo3NCSx82EdE2VZY5vUaSsgskpZPBHNGVLZ'; - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, programId, provider) - const accounts = await program.account.marginPool.all() - return sumTokens2({ tokenAccounts: accounts.map(i => i.account.vault.toString()), }) -} - -module.exports = { - methodology: 'Add all the SOL in the pools, NFT value is not included in tvl', - timetravel: false, - solana: { - tvl, - }, -}; - -const idl = {"version":"1.0.0","name":"jet_margin_pool","instructions":[],"accounts":[{"name":"MarginPool","type":{"kind":"struct","fields":[{"name":"version","type":"u8"},{"name":"poolBump","type":{"array":["u8",1]}},{"name":"vault","type":"publicKey"},{"name":"feeDestination","type":"publicKey"},{"name":"depositNoteMint","type":"publicKey"},{"name":"loanNoteMint","type":"publicKey"},{"name":"tokenMint","type":"publicKey"},{"name":"tokenPriceOracle","type":"publicKey"},{"name":"address","type":"publicKey"},{"name":"config","type":{"defined":"MarginPoolConfig"}},{"name":"borrowedTokens","type":{"array":["u8",24]}},{"name":"uncollectedFees","type":{"array":["u8",24]}},{"name":"depositTokens","type":"u64"},{"name":"depositNotes","type":"u64"},{"name":"loanNotes","type":"u64"},{"name":"accruedUntil","type":"i64"}]}}],"types":[{"name":"MarginPoolConfig","type":{"kind":"struct","fields":[{"name":"flags","type":"u64"},{"name":"utilizationRate1","type":"u16"},{"name":"utilizationRate2","type":"u16"},{"name":"borrowRate0","type":"u16"},{"name":"borrowRate1","type":"u16"},{"name":"borrowRate2","type":"u16"},{"name":"borrowRate3","type":"u16"},{"name":"managementFeeRate","type":"u16"},{"name":"reserved","type":"u64"}]}}],"events":[],"errors":[]} \ No newline at end of file diff --git a/projects/jetprotocol.js b/projects/jetprotocol.js deleted file mode 100644 index 1926d56c60f..00000000000 --- a/projects/jetprotocol.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2 } = require("./helper/solana"); - -const debtMapping = { - 'G17Yu6f4emBeRLWS1Y4cNJMTmT5LUGJH95zK6253KoAH': ADDRESSES.solana.USDC, - '5v8QVtwqZjSdJxhCF2xWrAopiyhDgJTdgeQZ5aWmStnE': '2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk', - 'A9S9XVCuNXHnJGFhxBhsTmJNHa6aPccF5NCAGgE4BxGF': ADDRESSES.solana.SOL, - '7SXpzVgqMvDEWkv9jtDUZVjkBPUbn8EUitKwV22WCpxt': '9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E', -} - -async function borrowed(api) { - const allBals = await sumTokens2({ owner: '7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8', }) - - Object.entries(debtMapping).forEach(([key, value]) => { - api.add(value, allBals['solana:'+key] ?? 0) - }) -} - -async function tvl() { - return sumTokens2({ owner: '7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8', blacklistedTokens: Object.keys(debtMapping)}); -} - -// JPv1rCqrhagNNmJVM5J1he7msQ5ybtvE1nNuHpDHMNU -// https://docs.jetprotocol.io/jet-protocol/protocol/smart-contracts -module.exports = { - timetravel: false, - solana: { - tvl, - borrowed, - }, - methodology: - "TVL consists of deposits made to the protocol and like other lending protocols, borrowed tokens are not counted. Coingecko is used to price tokens.", - hallmarks: [ - ['2023-12-12', 'Jet Protocol Holdings, LLC is shutting down'], // https://forum.jetprotocol.io/t/community-update-jet-protocol-holdings-llc-is-shutting-down/1560/21 - ], -}; diff --git a/projects/jetswap/index.js b/projects/jetswap/index.js deleted file mode 100644 index 4168ae4ca66..00000000000 --- a/projects/jetswap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const bscFactory = "0x0eb58E5c8aA63314ff5547289185cC4583DfCBD5"; -const polygonFactory = "0x668ad0ed2622C62E24f0d5ab6B6Ac1b9D2cD4AC7"; -const fantomFactory = "0xf6488205957f0b4497053d6422F49e27944eE3Dd"; - -const WINGS_TOKEN_BSC = "0x0487b824c8261462f88940f97053e65bdb498446"; -const WINGS_TOKEN_POLYGON = "0x845E76A8691423fbc4ECb8Dd77556Cb61c09eE25"; -const WINGS_TOKEN_FANTOM = "0x3D8f1ACCEe8e263F837138829B6C4517473d0688"; - -const MASTER_BSC = "0x63d6EC1cDef04464287e2af710FFef9780B6f9F5"; -const MASTER_POLYGON = "0x4e22399070aD5aD7f7BEb7d3A7b543e8EcBf1d85"; -const MASTER_FANTOM = "0x9180583C1ab03587b545629dd60D2be0bf1DF4f2"; - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': bscFactory, - 'polygon': polygonFactory, - 'fantom': fantomFactory, -}, { - staking: { - bsc: [MASTER_BSC, WINGS_TOKEN_BSC], - polygon: [MASTER_POLYGON, WINGS_TOKEN_POLYGON], - fantom: [MASTER_FANTOM, WINGS_TOKEN_FANTOM], -}}) \ No newline at end of file diff --git a/projects/jewelswap-lev-farming/api.js b/projects/jewelswap-lev-farming/api.js deleted file mode 100644 index 8e562c21b03..00000000000 --- a/projects/jewelswap-lev-farming/api.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("jewelswap-lev-farming", ['elrond']), -} diff --git a/projects/jewelswap-lev-farming/index.js b/projects/jewelswap-lev-farming/index.js deleted file mode 100644 index 483b63bef9e..00000000000 --- a/projects/jewelswap-lev-farming/index.js +++ /dev/null @@ -1,102 +0,0 @@ -const { getNFTs, sumTokens } = require("../helper/chain/elrond"); -const { ResultsParser, AbiRegistry, SmartContract, Address, } = require("@multiversx/sdk-core/out"); -const { ProxyNetworkProvider } = require("@multiversx/sdk-network-providers/out"); -const JEWEL_ONEDEX_FARM_SC_ABI = require("./jewel-onedex-farm.abi.json"); - - -const JEWEL_ONEDEX_FARM_SC_ADDRESS = "erd1qqqqqqqqqqqqqpgqm7exdla3rzshywy99pvlxzkr45wt9kjsdfys7qqpn0"; -const LENDING_POOL_FARMS = "erd1qqqqqqqqqqqqqpgq96n4gxvmw8nxgxud8nv8qmms5namspc5vmusg930sh"; - -const FARMS = "erd1qqqqqqqqqqqqqpgqlnxy2hmvs8qxr6ezq2wmggn7ev62cjp6vmusvdral4"; -const FARMS2 = "erd1qqqqqqqqqqqqqpgqx6833qjac6uqztgsa8jhlztexucke0hrdfys6wd7qt"; - -const jewelOnedexFarmAbiRegistry = AbiRegistry.create(JEWEL_ONEDEX_FARM_SC_ABI); -const jewelOnedexFarmSmartContract = new SmartContract({ - address: new Address(JEWEL_ONEDEX_FARM_SC_ADDRESS), - abi: jewelOnedexFarmAbiRegistry -}); - - -const networkConfigs = { - mainnet: { - id: "mainnet", - chainId: "1", - apiUrl: "https://api.multiversx.com", - gatewayUrl: "https://gateway.multiversx.com", - explorerUrl: "https://explorer.multiversx.com", - apiTimeout: 10000 - } -}; - - -const ELROND_NETWORK = "mainnet"; -const networkConfig = networkConfigs[ELROND_NETWORK]; - -const proxyProvider = new ProxyNetworkProvider(networkConfig.gatewayUrl, { - timeout: networkConfig.apiTimeout -}); - - -async function tvl(api) { - - addNfts(await getNFTs(FARMS)) - addNfts(await getNFTs(FARMS2)) - await oneDexFarm(api) - return sumTokens({ owners: [LENDING_POOL_FARMS, ], balances: api.getBalances() }) - - function addNfts(nfts) { - nfts.forEach(nft => { - let lpToken - switch (nft.collection) { - case "FARM-e5ffde": lpToken = "ALP-2d0cf8"; break; - case "FARM-9ed1f9": lpToken = "ALP-5f9191"; break; - case "FARM-ccefc2": lpToken = "ALP-0fe50a"; break; - case "FARM-795466": lpToken = "ALP-afc922"; break; - case "FARM-b637f0": lpToken = "ALP-713ae8"; break; - case "FARM-83c131": lpToken = "ALP-f7dee1"; break; - default: lpToken = null; - } - if (lpToken) api.add(lpToken, nft.balance) - }) - } -} - -async function oneDexFarm(api) { - const interaction = - jewelOnedexFarmSmartContract.methodsExplicit.viewFarms(); - const query = interaction.check().buildQuery(); - const queryResponse = - await proxyProvider.queryContract(query); - const endpointDefinition = interaction.getEndpoint(); - const { firstValue, returnCode, returnMessage } = - new ResultsParser().parseQueryResponse( - queryResponse, - endpointDefinition - ); - - if (!firstValue || !returnCode.isSuccess()) { - throw Error(returnMessage); - } - - const values = firstValue.valueOf(); - const decoded = values.map((value) => ({ - token0: value.first_token_id.toString(), - token1: value.second_token_id.toString(), - lpAmount: value.lp_token_amount.toFixed(0), - lpSupply: value.lp_token_supply.toFixed(0), - token0Supply: value.first_token_reserve.toFixed(0), - token1Supply: value.second_token_reserve.toFixed(0) - })); - decoded.forEach(({ token0, token1, lpAmount, lpSupply, token0Supply, token1Supply}) => { - const ratio = lpAmount / lpSupply - api.add(token0, token0Supply * ratio) - api.add(token1, token1Supply * ratio) - }) -} - -module.exports = { - timetravel: false, - elrond: { - tvl - } -}; diff --git a/projects/jewelswap-lev-farming/jewel-onedex-farm.abi.json b/projects/jewelswap-lev-farming/jewel-onedex-farm.abi.json deleted file mode 100644 index 8af49b34716..00000000000 --- a/projects/jewelswap-lev-farming/jewel-onedex-farm.abi.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "buildInfo": { - }, - "name": "JewelOnedexFarm", - "constructor": { - "inputs": [], - "outputs": [] - }, - "endpoints": [ - { - "name": "viewFarms", - "mutability": "readonly", - "inputs": [], - "outputs": [ - { - "type": "List" - } - ] - } - ], - "events": [], - "hasCallback": false, - "types": { - "FarmContext": { - "type": "struct", - "fields": [ - { - "name": "farm_id", - "type": "u32" - }, - { - "name": "dex_swap_pool_id", - "type": "u32" - }, - { - "name": "dex_farm_pool_id", - "type": "u32" - }, - { - "name": "min_deposit_base_token", - "type": "TokenIdentifier" - }, - { - "name": "min_deposit_base_amount", - "type": "BigUint" - }, - { - "name": "min_compound_rewards_amount", - "type": "BigUint" - }, - { - "name": "fee_percent", - "type": "u64" - }, - { - "name": "first_token_id", - "type": "TokenIdentifier" - }, - { - "name": "second_token_id", - "type": "TokenIdentifier" - }, - { - "name": "lp_token_id", - "type": "TokenIdentifier" - }, - { - "name": "rewards_token_id", - "type": "TokenIdentifier" - }, - { - "name": "pending_first_token_amount", - "type": "BigUint" - }, - { - "name": "pending_second_token_amount", - "type": "BigUint" - }, - { - "name": "farm_share", - "type": "BigUint" - }, - { - "name": "lp_token_amount", - "type": "BigUint" - }, - { - "name": "current_rewards_amount", - "type": "BigUint" - }, - { - "name": "farm_yearly_reward_amount", - "type": "BigUint" - }, - { - "name": "lp_token_supply", - "type": "BigUint" - }, - { - "name": "first_token_reserve", - "type": "BigUint" - }, - { - "name": "second_token_reserve", - "type": "BigUint" - }, - { - "name": "opened_position_count", - "type": "u32" - } - ] - } - - } -} diff --git a/projects/jewelswap-liq-staking/index.js b/projects/jewelswap-liq-staking/index.js deleted file mode 100644 index e850398fb64..00000000000 --- a/projects/jewelswap-liq-staking/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getTokenData, sumTokens, } = require('../helper/chain/elrond') -const { nullAddress } = require('../helper/tokenMapping') - -module.exports = { - elrond: { tvl} -} - -async function tvl(api) { - const data = await getTokenData('JWLEGLD-023462') - const data2 = await getTokenData('JWLASH-f362b9') - api.add(nullAddress, data.minted - data.burnt) - api.add('JWLASH-f362b9', data2.minted - data2.burnt) -} - diff --git a/projects/jewelswap-nft/api.js b/projects/jewelswap-nft/api.js deleted file mode 100644 index a3af2c0031e..00000000000 --- a/projects/jewelswap-nft/api.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("jewelswap-nft", ['elrond'], ['borrowed']), -} diff --git a/projects/jewelswap-nft/index.js b/projects/jewelswap-nft/index.js deleted file mode 100644 index 20065fe8b91..00000000000 --- a/projects/jewelswap-nft/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const { ResultsParser, AbiRegistry, SmartContract, Address, OptionalValue } = require("@multiversx/sdk-core/out"); -const { ProxyNetworkProvider } = require("@multiversx/sdk-network-providers/out"); -const NFT_LENDING_SC_ABI_JSON = require("./jewel-nft-lending.abi.json"); -const { sumTokens } = require("../helper/chain/elrond"); -const { nullAddress } = require("../helper/tokenMapping"); - - -const LENDING_POOL = "erd1qqqqqqqqqqqqqpgqhpauarfmx75nf4pwxh2fuy520ym03p8e8jcqt466up"; - -const abi = AbiRegistry.create(NFT_LENDING_SC_ABI_JSON); -const nftLendingSmartContract = new SmartContract({ - address: new Address(LENDING_POOL), - abi: abi -}); - -const networkConfigs = { - mainnet: { - id: "mainnet", - chainId: "1", - apiUrl: "https://api.multiversx.com", - gatewayUrl: "https://gateway.multiversx.com", - explorerUrl: "https://explorer.multiversx.com", - apiTimeout: 10000 - } -}; - - -const ELROND_NETWORK = "mainnet"; -const networkConfig = networkConfigs[ELROND_NETWORK]; - -const proxyProvider = new ProxyNetworkProvider(networkConfig.gatewayUrl, { - timeout: networkConfig.apiTimeout -}); - - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - elrond: { - tvl: () => sumTokens({ owners: [LENDING_POOL] }), - borrowed, - } -}; - -async function borrowed(api) { - const commonSettings = await queryNFTDataFromSc(); - api.add(nullAddress, commonSettings.total_loan_amount) - - return api.getBalances() -} - -async function queryNFTDataFromSc() { - const args = [ - OptionalValue.newMissing() - ]; - const interaction = nftLendingSmartContract.methodsExplicit.viewCommonSettings(args); - const query = interaction.check().buildQuery(); - const queryResponse = await proxyProvider.queryContract(query); - const endpointDefinition = interaction.getEndpoint(); - const { - firstValue, - returnCode, - returnMessage - } = new ResultsParser().parseQueryResponse(queryResponse, endpointDefinition); - - if (!firstValue || !returnCode.isSuccess()) { - console.error(returnMessage); - return undefined; - } - - const value = firstValue.valueOf(); - const decoded = { - total_lending_amount: value.total_lending_amount.toFixed(), - total_collateral_amount: value.total_collateral_amount.toFixed(), - total_loan_amount: value.total_loan_amount.toFixed(), - }; - return decoded; -} diff --git a/projects/jewelswap-nft/jewel-nft-lending.abi.json b/projects/jewelswap-nft/jewel-nft-lending.abi.json deleted file mode 100644 index 6c12f761ed9..00000000000 --- a/projects/jewelswap-nft/jewel-nft-lending.abi.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "buildInfo": { - }, - "name": "EpunksNftLending", - "constructor": { - "inputs": [], - "outputs": [] - }, - "endpoints": [ - { - "name": "viewCommonSettings", - "mutability": "readonly", - "inputs": [ - { - "name": "opt_user_address", - "type": "optional
", - "multi_arg": true - } - ], - "outputs": [ - { - "type": "CommonSettings" - } - ] - } - ], - "hasCallback": true, - "types": { - "CommonSettings": { - "type": "struct", - "fields": [ - { - "name": "rewards_pool_rate", - "type": "u64" - }, - { - "name": "epunks_buyback_rate", - "type": "u64" - }, - { - "name": "team_rate", - "type": "u64" - }, - { - "name": "epunks_buyback_wallet", - "type": "Address" - }, - { - "name": "team_wallet", - "type": "Address" - }, - { - "name": "liquidation_wallet", - "type": "Address" - }, - { - "name": "lend_epoch_length", - "type": "u64" - }, - { - "name": "lend_lock_period", - "type": "u64" - }, - { - "name": "liquidation_threshold", - "type": "u64" - }, - { - "name": "lend_grace_period", - "type": "u64" - }, - { - "name": "liquidation_fee", - "type": "u64" - }, - { - "name": "total_lending_amount", - "type": "BigUint" - }, - { - "name": "lend_users", - "type": "u32" - }, - { - "name": "current_lend_epoch_id", - "type": "u32" - }, - { - "name": "lend_epoch_start_timestamp", - "type": "u64" - }, - { - "name": "lend_rewards_pool_amount", - "type": "BigUint" - }, - { - "name": "global_liquidation_rate", - "type": "u64" - }, - { - "name": "global_max_borrow_amount", - "type": "BigUint" - }, - { - "name": "global_collection_max_lend_cap_percent", - "type": "u64" - }, - { - "name": "global_max_borrower_cap_percent", - "type": "u64" - }, - { - "name": "borrow_plan_count", - "type": "u32" - }, - { - "name": "max_borrow_periods", - "type": "List" - }, - { - "name": "borrow_rates", - "type": "List" - }, - { - "name": "accumulated_loan_amount", - "type": "BigUint" - }, - { - "name": "total_loan_amount", - "type": "BigUint" - }, - { - "name": "total_collateral_amount", - "type": "BigUint" - }, - { - "name": "opened_loan_count", - "type": "u32" - }, - { - "name": "loan_owners", - "type": "u32" - }, - { - "name": "last_loan_id", - "type": "u32" - }, - { - "name": "collection_ids", - "type": "List" - }, - { - "name": "collection_collateral_rates", - "type": "List" - }, - { - "name": "collection_trait_counts", - "type": "List" - }, - { - "name": "collection_supplies", - "type": "List" - }, - { - "name": "collection_max_borrow_amounts", - "type": "List" - }, - { - "name": "collection_borrow_amounts", - "type": "List" - }, - { - "name": "collection_max_lend_cap_percents", - "type": "List" - }, - { - "name": "user_borrow_status", - "type": "bool" - } - ] - } - } -} diff --git a/projects/jexchange/index.js b/projects/jexchange/index.js deleted file mode 100644 index 4042c0c7194..00000000000 --- a/projects/jexchange/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokens } = require("../helper/chain/elrond"); -const { getConfig } = require('../helper/cache') - -async function tvl() { - const pools = await getConfig('jexchange-pools', 'https://api.jexchange.io/pools/v3') - const owners = [ - ...pools.map(pool => pool.sc_address), - "erd1qqqqqqqqqqqqqpgqmmxzmktd09gq0hldtczerlv444ykt3pz6avsnys6m9", - "erd1qqqqqqqqqqqqqpgqdh6jeeyamfhq66u7rmkyc48q037kk8n26avs400gg8", - ]; - return sumTokens({ owners }); -} - -async function staking() { - const farms = await getConfig('jexchange-farms', 'https://api.jexchange.io/farms') - const owners = [ - ...farms.map(farm => farm.sc_address), - "erd1qqqqqqqqqqqqqpgq05whpg29ggrrm9ww3ufsf9ud23f66msv6avs5s5xxy", - ]; - return sumTokens({ owners }); -} - -module.exports = { - timetravel: false, - elrond: { - staking, - tvl, - }, -}; diff --git a/projects/jiblend/index.js b/projects/jiblend/index.js deleted file mode 100644 index 849fc5eb677..00000000000 --- a/projects/jiblend/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - jbc: compoundExports2({ - comptroller: '0x603122Cdd36abCD164e448e1f3fbd33730edf35a', - cether: '0xAc3e5aD93DDeac9B32772c8A864B5E73820c5d16', - }) -}; \ No newline at end of file diff --git a/projects/jibswap/index.js b/projects/jibswap/index.js deleted file mode 100644 index aca47389270..00000000000 --- a/projects/jibswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('jbc', '0x4BBdA880C5A0cDcEc6510f0450c6C8bC5773D499') diff --git a/projects/jigsaw/index.js b/projects/jigsaw/index.js deleted file mode 100644 index ac351d53d13..00000000000 --- a/projects/jigsaw/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const {request, gql} = require("graphql-request") - -const BASE_MAINNET_SUBGRAPH_URL = 'https://subgraph.satsuma-prod.com/5b49793e7bcd/jigsaw--557177/jigsaw-protocol/version/v0.0.1/api' - -async function fetchAllSubgraphResults({url, query, field, variables = {}}) { - let skip = 0; - let allResults = []; - let hasMore = true; - while (hasMore) { - const data = await request(url, query, {...variables, skip}); - const results = data[field]; - allResults = [...allResults, ...results]; - if (results.length < 1000) { - hasMore = false; - } else { - skip += 1000; - } - } - return allResults; -} - -async function collaterals(_, _1, _2, {api}) { - const query = gql` - query GetCollaterals { - collaterals { id, amount } - } - `; - const allCollaterals = await fetchAllSubgraphResults({ - url: BASE_MAINNET_SUBGRAPH_URL, - query, - field: "collaterals", - }); - - for (const collateral of allCollaterals) { - const underlyingAddress = collateral.id; - if (!underlyingAddress) continue; - api.add(underlyingAddress, collateral.amount); - } - return api.getBalances(); -} - -module.exports = { - methodology: "TVL includes all collateral locked in the protocol", - ethereum: { - tvl: collaterals, - }, -} \ No newline at end of file diff --git a/projects/jiko/index.js b/projects/jiko/index.js deleted file mode 100644 index c988cdb055e..00000000000 --- a/projects/jiko/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const POOL_PROXY_CONTRACT = "0x4F77497A0f6A8f1C9d577d7E29d4525C8CCC9c8B" -const abi = { - getPools: 'function getAllPools() view returns (tuple(uint128 id, address owner, address stakingToken, address stakingNft, uint256 totalInvested, bool hasLPT, uint256 aSugarDailyRoi, uint256 stPrice, uint256 maxStakedAmount, bool isActive, uint256 liquidationThreshold, uint256 liquidationDelay)[])', - getLocks: 'function getLocksByPool(uint128 _poolId) view returns (tuple(uint256 id, uint128 poolId, uint256 duration, uint256 leverage, uint256 totalShares, uint256 totalStaked, uint8 status)[])', -} - -async function tvl(api) { - // Get all pools in the protocol - const pools = await api.call({ - target: POOL_PROXY_CONTRACT, - abi: abi.getPools - }) - - // Filter active pools - const activePools = pools.filter(pool => pool.isActive) - - // Use multicall to get all locks at once - const allLocks = await api.multiCall({ - target: POOL_PROXY_CONTRACT, - abi: abi.getLocks, - calls: activePools.map(pool => ({ params: [pool.id] })) - }) - - // Process locks and sum totalStaked - activePools.forEach((pool, index) => { - const locks = allLocks[index] - if (locks.length === 0) return; // Skip pools with no locks - - // Sum totalStaked from all locks in the pool - for (const lock of locks) { - api.add(pool.stakingToken, lock.totalStaked) - } - }) -} - -module.exports = { - methodology: "TVL includes all tokens staked in active pools. Uses totalStaked from each pool struct.", - berachain: { - tvl - }, -} \ No newline at end of file diff --git a/projects/jioswap/config.json b/projects/jioswap/config.json deleted file mode 100644 index 5571737425e..00000000000 --- a/projects/jioswap/config.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "meter": { - "jioMeterUSD": { - "address": "0x559Ec9D7D0a80220C8167d6B413d8AA1B26f596D", - "lpToken": "0x4CD99606b98230b039a82bE45165663f6A931A96", - "poolTokens": [ - { - "address": "0x24aa189dfaa76c671c279262f94434770f557c35", - "name": "BUSD" - }, - { - "address": "0xD86e243FC0007e6226B07c9A50C9d70D78299EB5", - "name": "USDC" - }, - { - "address": "0x5fa41671c48e3c951afc30816947126ccc8c162e", - "name": "USDT" - } - ] - } - }, - "godwoken_v1": { - "jioETH": { - "address": "0x0f25e206DAfE6F5bbCE2037b67497D5F017062cd", - "lpToken": "0x3D57dF23702c761f28FEC15B358B4E2F543f343E", - "poolTokens": [ - { - "address": "0x9E858A7aAEDf9FDB1026Ab1f77f627be2791e98A", - "name": "ETH (via Forcebridge from ETH)" - }, - { - "address": "0xB66954619363145a05eF835547449EB9050d82f6", - "name": "WETH (Via Celer CBridge From ETH)" - } - ] - }, - "jio2USD": { - "address": "0x55f676d9a014a83e58D6A9b73265709e071aAE88", - "lpToken": "0xb3D6913CF2D6A8fD9b472ff7526ec11620957C8b", - "poolTokens": [ - { - "address": "0x186181e225dc1Ad85a4A94164232bD261e351C33", - "name": "USDC (via Forcebridge from ETH" - }, - { - "address": "0x53bB26dc8C5EFC6c95C37155aCa487d1D043436a", - "name": "USDC (Via Celer CBridge From ETH)" - } - ] - }, - "jio3fUSD": { - "address": "0xCF60f11627f2fb412EDe8E674a97c893E8dD73d8", - "lpToken": "0xbe6FB8874C6E5800092E7e85bDD8c165ADcD0592", - "poolTokens": [ - { - "address": "0x2c9Fc6087875646112f66a3C92fEF2d158FAa76e", - "name": "DAI (via Forcebridge from ETH)" - }, - { - "address": "0x186181e225dc1Ad85a4A94164232bD261e351C33", - "name": "USDC (via Forcebridge from ETH)" - }, - { - "address": "0x8E019acb11C7d17c26D334901fA2ac41C1f44d50", - "name": "USDT (via Forcebridge from ETH)" - } - ] - }, - "jio4celUSD": { - "address": "0x5abff8841a016631ecB90250D65F53996dda10b0", - "lpToken": "0x83f3CfF88102F498b7170fbd237935152E6909c7", - "poolTokens": [ - { - "address": "0xcD7bC9fC617a4F82eC1c8359D1C8610B90e3B44C", - "name": "BUSD (Via Celer CBridge From BSC)" - }, - { - "address": "0x317F8d18FB16E49a958Becd0EA72f8E153d25654", - "name": "Dai (Via Celer CBridge From ETH)" - }, - { - "address": "0x53bB26dc8C5EFC6c95C37155aCa487d1D043436a", - "name": "USDC (Via Celer CBridge From ETH)" - }, - { - "address": "0x3c790b38f466514ffCB4230e7B2334e52B64c942", - "name": "USDT (Via Celer CBridge From ETH)" - } - ] - }, - "jio3BTC": { - "address": "0x9cFc3396801bbBe1Afb79226f3dD303Ea45018Ce", - "lpToken": "0xdaed14ddca3d1c45fc2be91c148468cbb3880247", - "poolTokens": [ - { - "address": "0x1C428a6539A40eC5Bb481631266a51cd19b233B1", - "name": "WBTC (Via Celer CBridge From ETH)" - }, - { - "address": "0xB44a9B6905aF7c801311e8F4E76932ee959c663C", - "name": "WBTC (Via MultiChain From ETH)" - }, - { - "address": "0x82455018f2c32943b3f12f4e59d0da2faf2257ef", - "name": "WBTC (Via Force Bridge From ETH)" - } - ] - }, - "jio3multiChainUSD": { - "address": "0xB99dA175BfEe98B2cF7B27eF4245C1d19Eeff29a", - "lpToken": "0xb5782C8B400Bf63827053B6e435B678033cbEc3F", - "poolTokens": [ - { - "address": "0x765277EebeCA2e31912C9946eAe1021199B39C61", - "name": "DAI (via Multichain from ETH)" - }, - { - "address": "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D", - "name": "USDC (via Multichain from ETH)" - }, - { - "address": "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f", - "name": "USDT (via Multichain from ETH)" - } - ] - } - }, - "ethereum": { - "jioWRenSBTC": { - "address": "0xc117B388e5951FD7484F4FCbc3a803ACC4632459", - "lpToken": "0xABb76b01FE5Ce41Ec4cE98B8437e17BE6B349211", - "poolTokens": [ - { - "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "name": "WBTC" - }, - { - "address": "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d", - "name": "renBTC" - }, - { - "address": "0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6", - "name": "sBTC" - } - ] - }, - "JioUSDPoolV2": { - "address": "0xB53617cEEA4c2e65c5e40bcA74ca418C2F4C341c", - "lpToken": "0xfd7bE7d03A178908B2dB90b2eFDE0914844AEa5e", - "poolTokens": [ - { - "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "name": "Dai" - }, - { - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "name": "USDC Coin" - }, - { - "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "name": "Tether" - } - ] - }, - "JioALETHPool": { - "address": "0x0a644a073Bc75E38985784AE8bebc8EB11B09e75", - "lpToken": "0x437e52e69C30238B54edE1Ba65019322F873BD36", - "poolTokens": [ - { - "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "name": "WETH" - }, - { - "address": "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6", - "name": "Alchemix ETH" - }, - { - "address": "0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb", - "name": "Synth sETH" - } - ] - }, - "jioD4": { - "address": "0x7fFd58B8DeEF68B1C0A98f2d06D7D35AB45CB407", - "lpToken": "0x7739EEF68C9828Cc8CCD062E94eF4E67746C7Cc7", - "poolTokens": [ - { - "address": "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9", - "name": "Alchemix USD" - }, - { - "address": "0x956F47F50A910163D8BF957Cf5846D573E7f87CA", - "name": "Fei Protocol" - }, - { - "address": "0x853d955aCEf822Db058eb8505911ED77F175b99e", - "name": "Frax" - }, - { - "address": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", - "name": "Liquity USD" - } - ] - }, - "jioSUSDMetaPool": { - "address": "0x2c7B39F034888aEb4Bc6A5c0E0695D93835d40E4", - "lpToken": "0xa6692adc7898Eea5a06BC56678cA2795B850CC78", - "poolTokens": [ - { - "address": "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", - "name": "sUSD" - }, - { - "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "name": "Dai" - }, - { - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "name": "USDC Coin" - }, - { - "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "name": "Tether" - } - ] - } - } -} \ No newline at end of file diff --git a/projects/jioswap/index.js b/projects/jioswap/index.js deleted file mode 100644 index 082928f6afd..00000000000 --- a/projects/jioswap/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const config = require("./config"); - -module.exports = { - misrepresentedTokens: true, - methodology: - "Counts as TVL all the Assets deposited on each chain through different Pool Contracts", -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const toa = []; - const blacklistedTokens = []; - Object.values(config[chain]).forEach( - ({ address, lpToken, poolTokens }) => { - blacklistedTokens.push(lpToken); - poolTokens.forEach((i) => toa.push([i.address, address])); - } - ); - const balances = await sumTokens2({ - tokensAndOwners: toa, - chain, - block, - blacklistedTokens, - }); - return balances; - }, - }; - module.exports.hallmarks = [ - [1661472000, "JioSwap live, all pools opened for deposits"], - ]; -}); diff --git a/projects/jito-restaking/index.js b/projects/jito-restaking/index.js deleted file mode 100644 index 81e9be318c4..00000000000 --- a/projects/jito-restaking/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { sumTokens2, getConnection, decodeAccount, getAssociatedTokenAddress } = require("../helper/solana"); -const { bs58 } = require('@project-serum/anchor/dist/cjs/utils/bytes'); - -const VAULT_PROGRAM_ID = new PublicKey("Vau1t6sLNxnzB7ZDsef8TLbPLfyZMYXH8WTNqUdm9g8"); -const VAULT_DISCRIMINATOR = Buffer.from([2]); - -function getVaultPubkey(vault) { - const [associatedTokenAddress] = PublicKey.findProgramAddressSync([Buffer.from("vault"), vault.base.toBuffer()], VAULT_PROGRAM_ID); - return associatedTokenAddress; -} - -async function tvl(api) { - const connection = getConnection(); - const accounts = await connection.getProgramAccounts( - VAULT_PROGRAM_ID, - { - filters: [ - { - memcmp: { - offset: 0, - bytes: bs58.encode(VAULT_DISCRIMINATOR), - }, - }, - ] - } - ); - - const vaults = accounts.map(i => decodeAccount('jitoVault', i.account)) - - const tokensAndOwners = vaults.map((vault) => { - const vaultPubkey = getVaultPubkey(vault).toBase58(); - const supportedMint = vault.supportedMint.toBase58(); - return [supportedMint, vaultPubkey]; - }); - - - - const fragSOL = [ - ['J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn', 'AkbZvKxUAxMKz92FF7g5k2YLCJftg8SnYEPWdmZTt3mp'], - ['BNso1VUJnh4zcfpZa6986Ea66P6TCp59hvtNJ8b1X85', 'AkbZvKxUAxMKz92FF7g5k2YLCJftg8SnYEPWdmZTt3mp'], - ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', 'AkbZvKxUAxMKz92FF7g5k2YLCJftg8SnYEPWdmZTt3mp'], - ] - - tokensAndOwners.push(...fragSOL) - - return sumTokens2({ - balances: api.getBalances(), tokensAndOwners - }) -} - - - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/jito/index.js b/projects/jito/index.js deleted file mode 100644 index f6ec8831d79..00000000000 --- a/projects/jito/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection } = require("../helper/solana"); - -async function tvl() { - // https://jito.network/staking - const connection = getConnection(); - const account = await connection.getAccountInfo(new PublicKey('Jito4APyf642JPZPx3hGc6WWJ8zPKtRbRs4P815Awbb')) - return { - solana: Number(account.data.readBigUint64LE(258))/1e9 - } -} - -module.exports = { - timetravel: false, - methodology: - "Uses the SPL Stake Pool SDK to fetch the total supply of deposited SOL into the Jito Stake Pool", - solana: { - tvl, - }, -}; diff --git a/projects/jlswap/index.js b/projects/jlswap/index.js deleted file mode 100644 index 03270865074..00000000000 --- a/projects/jlswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - eos_evm: { - tvl: getUniTVL({ factory: '0x84c81cbC482B7BDB02470bB820F5323aa77C50F3', useDefaultCoreAssets: true, }) - } -} diff --git a/projects/jojo/index.js b/projects/jojo/index.js deleted file mode 100644 index 13acd59820b..00000000000 --- a/projects/jojo/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const cbethBase = ADDRESSES.base.cbETH; -const degenBase = "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"; -const mUsdcBase = "0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22"; - -module.exports = { - era: { tvl: sumTokensExport({ tokens: [ADDRESSES.era.USDC], owners: ['0x47eAD228547db8397398C1D3aAfd0847CBEbddeC'], }) }, - bsc: { tvl: sumTokensExport({ tokens: [ADDRESSES.bsc.USDC], owners: ['0x25173BB47CB712cFCDFc13ECBebDAd753090801E'], }) }, - arbitrum: { - tvl: sumTokensExport( - { - tokens: [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.GMX, ADDRESSES.arbitrum.WSTETH], - owners: ['0xcd85998b31C85040C8BA59288eaA8f9beE115B01', '0xa88603625ad55e25674F46f3c831010D53d35E79', '0x0174f6d813Df42C986ADF75ec473a0162faAfcda'] - } - ) - }, - base: { - tvl: sumTokensExport( - { - tokens: [ADDRESSES.base.USDC, ADDRESSES.base.WETH, cbethBase, degenBase, mUsdcBase, ], - owners: ['0x2f7c3cf9d9280b165981311b822becc4e05fe635', '0xf8192489A8015cA1690a556D42F7328Ea1Bb53D0', '0x8B7e1924fF57EEc8EbD87254E4de6Ff397f039D3'] - } - ) - }, -} diff --git a/projects/jolt/index.js b/projects/jolt/index.js deleted file mode 100644 index 2f7648542a7..00000000000 --- a/projects/jolt/index.js +++ /dev/null @@ -1,7 +0,0 @@ - const { methodology, aaveExports } = require('../helper/aave'); - -module.exports = { - methodology, - optimism: aaveExports('optimism', '0x3d8a1ea95ea4afa2469bfb80d94a4f9068670e82', undefined, ["0xe9c0EFeA9236467fa9aaC41E2c728aD47aaD74d3"]), -} - \ No newline at end of file diff --git a/projects/joltify-lending/index.js b/projects/joltify-lending/index.js deleted file mode 100644 index 931d31b53ce..00000000000 --- a/projects/joltify-lending/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos'); -const chain = 'joltify' - -const tvl = async (api) => { - const [deposited, borrowed] = await Promise.all([ - queryV1Beta1({ chain, url: `third_party/jolt/v1beta1/total-deposited/` }), - queryV1Beta1({ chain, url: `third_party/jolt/v1beta1/total-borrowed/` }) - ]); - deposited.supplied_coins.forEach(({ denom, amount }) => api.add(denom, amount)); - borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount * -1)); -} - -const borrowed = async (api) => { - const borrowed = await queryV1Beta1({ chain, url: 'third_party/jolt/v1beta1/total-borrowed/' }) - borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount)) -} - -module.exports = { - timetravel: false, - joltify: { - tvl, - borrowed - } -} \ No newline at end of file diff --git a/projects/joltify-rwa/index.js b/projects/joltify-rwa/index.js deleted file mode 100644 index 7529664e738..00000000000 --- a/projects/joltify-rwa/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos'); -const chain = 'joltify' - -const tvl = async (api) => { - const [pools] = await Promise.all([ - queryV1Beta1({ chain, url: `spv/list_pools` }), - ]); - - pools.pools_info.forEach(async pool => { - api.add(pool.usable_amount.denom, pool.usable_amount.amount); - api.add(pool.escrow_principal_amount.denom, pool.escrow_principal_amount.amount); - api.add(pool.escrow_principal_amount.denom, pool.escrow_interest_amount); - }); -} - -const borrowed = async (api) => { - const [pools] = await Promise.all([ - queryV1Beta1({ chain, url: `spv/list_pools` }), - ]); - - const [price_info] = await Promise.all([ - queryV1Beta1({ chain, url: `third_party/pricefeed/v1beta1/prices` }), - ]); - - pools.pools_info.forEach(async pool => { - const [market, borrowed_denom] = pool.borrowed_amount.denom.split('-'); - const market_id = `${market}:usd`; - const price = price_info.prices.find(price => price.market_id === market_id)?.price; - api.add(borrowed_denom, pool.borrowed_amount.amount * price); - }); -} - -module.exports = { - timetravel: false, - joltify: { - tvl, - borrowed - } -} \ No newline at end of file diff --git a/projects/jones-dao/addresses.js b/projects/jones-dao/addresses.js deleted file mode 100644 index 2588230f71b..00000000000 --- a/projects/jones-dao/addresses.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -module.exports = { - aura: { - locker: "0x3Fa73f1E5d8A792C80F426fc8F84FBF7Ce9bBCAC", - strategy: "0x7629fc134e5a7feBEf6340438D96881C8D121f2c", - }, - glp: { - leverageStrategy: "0x64ECc55a4F5D61ead9B966bcB59D777593afBd6f", - router: "0x2F43c6475f1ecBD051cE486A9f3Ccc4b03F3d713", - stableRewardTracker: "0xEB23C7e19DB72F9a728fD64E1CAA459E457cfaca", - }, - jusdc: { - underlyingVault: "0xB0BDE111812EAC913b392D80D51966eC977bE3A2", - }, - lpStaking: [ - "0x360a766F30F0Ba57d2865eFb32502FB800b14dD3", // JONES-ETH staking rewards - "0x13f6A63867046107780Bc3fEBdeE90E7AfCdfd99", // JONES-USDC staking rewards - "0xBAc58e8b57935A0B60D5Cb4cd9F6C21049595F04", // JETH-ETH staking rewards - "0x7eCe38dBE9D61D0d9Bf2D804A87A7d21b5937a56", // JGOHM-GOHM staking rewards - "0x5723be83199C9Ec68ED0Ac979e98381224870e7f", // JDPX-DPX staking rewards - "0xb94d1959084081c5a11C460012Ab522F5a0FD756", // milliner - ], - lps: [ - "0xe8EE01aE5959D3231506FcDeF2d5F3E85987a39c", // JONES-ETH SLP - "0xa6efc26dAA4bb2b9bF5D23A0bc202A2BaDC2B59E", // JONES-USDC SLP - "0xDF1A6Dd4E5b77d7F2143eD73074bE26c806754c5", // JETH-ETH SLP - "0x292d1587a6Bb37E34574c9AD5993F221D8a5616C", // JGOHM-GOHM SLP - "0xEeB24360C8C7A87933d16B0075E10E1a30Ad65B7", // JDPX-DPX SLP - ], - stakingContracts: [ - "0xf1a26cf6309a59794da29b5b2e6fabd3070d470f", // v1 staking rewards - "0xb94d1959084081c5a11C460012Ab522F5a0FD756", // milliner (masterchef) - "0x8127FFC32A596F9beDE144912F7bfAD6e1C72690", // milliner v3 (masterchef) - "0x0aEfaD19aA454bCc1B1Dd86e18A7d58D0a6FAC38", // minichef (stip rewards) - ], - metaVaultsAddresses: [ - "0x7AA12db079C901400e22a5B912204Dc575ff9C19", - "0x7a82A0ca7A2569d6cD3Df2aFeAF508f6d85Fd2c3", - "0x64F6c761d855A6Eff9EF8b025B0258BDdEde5393", - "0xf3e914c15d0bAa1f6537b0966d6F3394BA260747", - ], - optionVaultAddresses: [ - "0x8883E5bb2920bBE766A2c9e86ad9aA45a573f3F5", - "0x5BA98Ad75AB87eB90fFc2b680bCfC6b9030E1246", - "0xF46Ce0C13577232D5F29D9Bd78a9Cab278755346", - "0x42448fDDCec02124cf6dB19a9f91Dea7bB0e88e5", - ], - smartLpArbFactories: [ - "0xFEFd54D82337d3Dacb5DE53083C22BA41ca76CC5", - "0xb385809cCdB2BD87A5Cd32ad09287399F0318a92", - "0xf965734b1750E64D9a01c991C5E630D279C34fd2", - "0xb754D87BdAb6Cc8c903abC2Bda9cE6B3c9481e60", - "0xB2cBa14C94B30297DBFbCB7517d9105D67bB692d" - ], - tokens: { - aura: "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", - dpx: "0x6C2C06790b3E3E3c38e12Ee22F8183b37a13EE55", - glp: ADDRESSES.arbitrum.fsGLP, - gohm: "0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1", - jones: "0x10393c20975cf177a3513071bc110f7962cd67da", - rdpx: "0x32Eb7902D4134bf98A28b963D26de779AF92A212", - usdc: ADDRESSES.arbitrum.USDC_CIRCLE, - uvrt: "0xa485a0bc44988B95245D5F20497CCaFF58a73E99", - }, -}; diff --git a/projects/jones-dao/index.js b/projects/jones-dao/index.js deleted file mode 100644 index 5b1e2dfd97b..00000000000 --- a/projects/jones-dao/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require("../helper/coreAssets.json"); -const { pool2s } = require("../helper/pool2"); -const { stakings } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const addresses = require("./addresses"); - -const jAssetToAsset = { - "0x662d0f9ff837a51cf89a1fe7e0882a906dac08a3": ADDRESSES.arbitrum.WETH, // jETH - "0x5375616bb6c52a90439ff96882a986d8fcdce421": addresses.tokens.gohm, // jgOHM, - "0xf018865b26ffab9cd1735dcca549d95b0cb9ea19": addresses.tokens.dpx, // jDPX - "0x1f6fa7a58701b3773b08a1a16d06b656b0eccb23": addresses.tokens.rdpx, // jrdpx -}; - -const tokensAndOwners = [ - [addresses.tokens.uvrt, addresses.glp.stableRewardTracker], - [addresses.tokens.uvrt, addresses.glp.router], - [addresses.tokens.glp, addresses.glp.leverageStrategy], -]; - -const abi = { - locker: "function lockedBalances(address _user) view returns (uint256 total, uint256 unlockable, uint256 locked, (uint112 amount, uint32 unlockTime)[] lockData)", - glpManager: "function getLPManagerContracts(uint256 _nonce) view returns (address lp,address viewer,address swapper,address receiver,address priceHelper,address lpManager,address doubleTracker,address singleTrackerZero,address singleTrackerOne,address compounder,address router)" -} - -async function tvl_arbitrum (api) { - const [metavaultTokens, metavaultBalances, optionVaultTokens, optionVaultBalances, jusdcTvl] = - await Promise.all([ - api.multiCall({ abi: "address:depositToken", calls: addresses.metaVaultsAddresses }), - api.multiCall({ abi: "uint256:workingBalance", calls: addresses.metaVaultsAddresses }), - api.multiCall({ abi: "address:asset", calls: addresses.optionVaultAddresses }), - api.multiCall({ abi: "uint256:totalAssets", calls: addresses.optionVaultAddresses }), - api.call({ abi: "uint256:totalAssets", target: addresses.jusdc.underlyingVault }), - ]); - - api.addTokens(metavaultTokens, metavaultBalances); - api.addTokens(optionVaultTokens, optionVaultBalances); - api.addTokens(addresses.tokens.usdc, jusdcTvl); - - for (const factoryAddress of addresses.smartLpArbFactories) { - const contracts = await api.fetchList({ lengthAbi: 'nonce', itemAbi: abi.glpManager, target: factoryAddress, startFromOne: true }) - const lpManagers = contracts.map(c => c.lpManager) - - const [token0s, token1s, aums] = await Promise.all([ - api.multiCall({ abi: "address:token0", calls: lpManagers, permitFailure: true }), - api.multiCall({ abi: "address:token1", calls: lpManagers, permitFailure: true }), - api.multiCall({ abi: "function aum() returns (uint256 amount0, uint256 amount1)", calls: lpManagers, permitFailure: true }) - ]) - - lpManagers.forEach((_lp, i) => { - const token0 = token0s[i] - const token1 = token1s[i] - const aum = aums[i] - if (!token0 || !token1 || !aum) return - api.add(token0, aum.amount0) - api.add(token1, aum.amount1) - }) - } - - return sumTokens2({ api, tokensAndOwners }); -} - -async function tvl_ethereum(api) { - const [leftoverStrategy, total] = await Promise.all([ - api.call({ target: addresses.tokens.aura, params: [addresses.aura.strategy], abi: 'erc20:balanceOf' }), - api.call({ target: addresses.aura.locker, params: [addresses.aura.strategy], abi: abi.locker }).then(res => res.total) - ]); - - [leftoverStrategy, total].forEach((bals) => { - api.add(addresses.tokens.aura, bals) - }); -} - - -module.exports = { - arbitrum: { - tvl: tvl_arbitrum, - staking: stakings(addresses.stakingContracts, addresses.tokens.jones, "arbitrum"), - pool2: pool2s(addresses.lpStaking, addresses.lps, "arbitrum", (addr) => { - addr = addr.toLowerCase(); - return `arbitrum:${jAssetToAsset[addr] ?? addr}`; - }), - }, - - ethereum: { - tvl: tvl_ethereum, - }, -}; diff --git a/projects/joule/index.js b/projects/joule/index.js deleted file mode 100644 index 4bc0d12944d..00000000000 --- a/projects/joule/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const { getResource } = require("../helper/chain/aptos") - -const APTOS_CONTRACT_ADDRESS = "0x2fe576faa841347a9b1b32c869685deb75a15e3f62dfe37cbd6d52cc403a16f6" -const MOVEMENT_CONTRACT_ADDRESS = "0x6a164188af7bb6a8268339343a5afe0242292713709af8801dafba3a054dc2f2" -const APTOS_RESOURCE_ADDRESS = "0x7f83b020b8ab60dbdc4208029fa6aa0804bf5a71eeaca63382d24622b9e6f647" -const MOVEMENT_RESOURCE_ADDRESS = "0x26f1ad9433746c22fe2f59f551a4218e57787683375747793f827a640c28e659" - -function replaceAtWith0x(str) { - if (str.startsWith('@')) { - return '0x' + str.slice(1); - } else { - return str; - } -} - -async function getPoolsData(network) { - let pool_address; - let resource_address; - switch (network) { - case 'aptos': - pool_address = APTOS_CONTRACT_ADDRESS; - resource_address = APTOS_RESOURCE_ADDRESS; - break; - case 'move': - pool_address = MOVEMENT_CONTRACT_ADDRESS; - resource_address = MOVEMENT_RESOURCE_ADDRESS; - break; - } - - const res = await getResource(resource_address, `${pool_address}::pool::PoolConfigsMap`, network) - - const poolConfigsMap = res.pool_configs_map.data; - - return poolConfigsMap.map(item => ({ - coin: replaceAtWith0x(item.key), - total_lend: item.value.total_lend, - total_borrow: item.value.total_borrow - })); -} - -module.exports = { - timetravel: false, - methodology: - "Aggregates TVL for all markets in Joule.", - aptos: { - tvl: async (api) => { - const marketsData = await getPoolsData(api.chain) - marketsData.forEach(({ coin, total_lend }) => { - api.add(coin, total_lend) - }) - }, - borrowed: async (api) => { - const marketsData = await getPoolsData(api.chain) - marketsData.forEach(({ coin, total_borrow }) => { - api.add(coin, total_borrow) - }) - }, - }, - move: { - tvl: async (api) => { - const marketsData = await getPoolsData(api.chain) - marketsData.forEach(({ coin, total_lend }) => { - api.add(coin, total_lend) - }) - }, - borrowed: async (api) => { - const marketsData = await getPoolsData(api.chain) - marketsData.forEach(({ coin, total_borrow }) => { - api.add(coin, total_borrow) - }) - }, - } -}; diff --git a/projects/joystickclub/index.js b/projects/joystickclub/index.js deleted file mode 100644 index 559026ef549..00000000000 --- a/projects/joystickclub/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { default: BigNumber } = require('bignumber.js'); - -const JOYBOT_STAKING_CONTRACT = "0x498B8524c7C309471b65aEAC4f16551776B80e0F" - -const staking = async (api) => { - const total = await api.call({ target: JOYBOT_STAKING_CONTRACT, abi: "uint256:_totalSupply", }) - const floorPrice = 500; // 500 JOY to mint an NFT - return { 'joystick1': BigNumber(total).multipliedBy(floorPrice) } -} - -module.exports = { - deadFrom: '2024-01-01', - methodology: "Total value of NFTs sent to staking contract is counted towards staking metric", - smartbch: { - tvl: () => ({}), - staking: staking, - }, -} diff --git a/projects/jpeg-d/helper/abis.js b/projects/jpeg-d/helper/abis.js deleted file mode 100644 index 2cb49ae718c..00000000000 --- a/projects/jpeg-d/helper/abis.js +++ /dev/null @@ -1,44 +0,0 @@ -const VAULT_ABI = { - totalPositions: "uint256:totalPositions", - nftValueProvider: "address:nftValueProvider", - positionOwner: "function positionOwner(uint256) view returns (address)", - openPositionIndices: - "function openPositionsIndexes() external view returns (uint256[] memory)", -}; - -const STRATEGY_ABI = { - depositAddress: - "function depositAddress(address) external view returns (address)", - isDeposited: - "function isDeposited(address, uint256) external view returns (bool)", -}; - -const APE_STAKING = { - stakedTotal: "function stakedTotal(address) external view returns (uint256)", -}; - -const P2P_APE_STAKING_ABI = { - nextNonce: "function nextNonce() external view returns (uint256)", - offers: - "function offers(uint24) view returns (uint8 offerType, tuple(uint8 collection, uint16 tokenId) mainNft, uint16 bakcTokenId, uint80 apeAmount, uint16 apeRewardShareBps, uint16 bakcRewardShareBps, bool isPaired, uint80 lastSingleStakingRewardPerShare)", -}; - -const ERC721 = { - tokenOfOwnerByIndex: - "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)", -}; - -const PROVIDER_ABI = { - nftType: "function nftTypes(uint256) view returns (bytes32)", - nftTypeValueMultiplier: - "function nftTypeValueMultiplier(bytes32) view returns (uint128 numerator, uint128 denominator)", -}; - -module.exports = { - VAULT_ABI, - P2P_APE_STAKING_ABI, - PROVIDER_ABI, - STRATEGY_ABI, - APE_STAKING, - ERC721, -}; diff --git a/projects/jpeg-d/helper/addresses.js b/projects/jpeg-d/helper/addresses.js deleted file mode 100644 index bc2beb5c870..00000000000 --- a/projects/jpeg-d/helper/addresses.js +++ /dev/null @@ -1,136 +0,0 @@ -// NFT pUSD vaults -const CRYPTO_PUNK_PUSD_VAULT = "0xD636a2fC1C18A54dB4442c3249D5e620cf8fE98F"; -const ETHER_ROCKS_PUSD_VAULT = "0x6837a113aa7393ffbd5f7464e7313593cd2dd560"; -const BAYC_PUSD_VAULT = "0x271c7603aaf2bd8f68e8ca60f4a4f22c4920259f"; -const MAYC_PUSD_VAULT = "0x7b179f9bfbe50cfa401c1cdde3cb2c339c6635f3"; -const DOODLES_PUSD_VAULT = "0x0a36f4bf39ed7d4718bd1b8dd759c19986ccd1a7"; -const PUDGY_PENGUINS_PUSD_VAULT = "0xe793eaedc048b7441ed61b51acb5df107af996c2"; -const AZUKI_PUSD_VAULT = "0x2acd96c8db23978a3dd32448a2477b132b4436e4"; -const CLONEX_PUSD_VAULT = "0xc001f165f7d7542d22a1e82b4640512034a91c7d"; -const AUTOGLYPH_PUSD_VAULT = "0xf42366f60ccc0f454b505fd72fb070e7f23b8171"; -const FIDENZA_PUSD_VAULT = "0x64979eA0e4C7EB440402Fef273483ec8e74146d0"; -const RINGERS_PUSD_VAULT = "0xa699e2f651861ec68e74fe01017ade75a12d5c1b"; -const SQUIGGLES_PUSD_VAULT = "0x266d98307469f86f134ab884afefa98d3b4835b1"; -const OTHERDEED_PUSD_VAULT = "0x09765190845c35fb81efd6952e19c995f6bd6a72"; -const MEEBITS_PUSD_VAULT = "0xf7Fa42b692b8132311B02F9d72af69f9587c447E"; -const BAKC_PUSD_VAULT = "0x3A90dB2E3392A26904da1aA632B4C26A824d296e"; -const MILADY_PUSD_VAULT = "0xDc6634879CEf6eD24EF0273DaA4a12b34e3D09Cc"; - -// NFT pETH vaults -const CRYPTO_PUNK_PETH_VAULT = "0x4e5f305bfca77b17f804635a9ba669e187d51719"; -const CRYPTO_PUNK_PETH_VAULT_B = "0x80711bacf6b3E64deDC4eBA2Ecf9b0Be6c0946f9"; -const ETHER_ROCKS_PETH_VAULT = "0x7Bc8c4D106f084304d6c224F48AC02e6854C7AC5"; -const BAYC_PETH_VAULT = "0xaf5e4c1bfac63e355cf093eea3d4aba138ea4089"; -const BAYC_PETH_VAULT_B = "0xc7848C3E15D0b23a38571c39F98893a056e59A65"; -const MAYC_PETH_VAULT = "0xc45775baa4a6040414f3e199767033257a2a91b9"; -const MAYC_PETH_VAULT_B = "0xe45640363024f6668Aab1D5a0A7545441c2c28DD"; -const DOODLES_PETH_VAULT = "0x229e09d943a94c162a662ba0ffbcad21521b477a"; -const PUDGY_PENGUINS_PETH_VAULT = "0x4b94b38bec611a2c93188949f017806c22097e9f"; -const AZUKI_PETH_VAULT = "0x72695c2af4193029e0669f2c01d84b619d8c25e7"; -const AZUKI_PETH_VAULT_B = "0xaaf36574e4c5b4aC152D350f7687adB661aC3558"; -const CLONEX_PETH_VAULT = "0x46db8fda0be00e8912bc28357d1e28e39bb404e2"; -const AUTOGLYPH_PETH_VAULT = "0xCFd74e932B49eEf26f6527091821aDa8A9A4CbDa"; -const FIDENZA_PETH_VAULT = "0x9C1DceD6C1668c4159cf71C41f54F0fb9C2Dc9Dc"; -const RINGERS_PETH_VAULT = "0x9895a329e1f8F7728a2e60F45Ef017565DdCB535"; -const SQUIGGLES_PETH_VAULT = "0x2a8d4e3bb2e09541bf5d79a1cf8b9dd2b3a1c6ab"; -const OTHERDEED_PETH_VAULT = "0x525a3999b65a7d06dbe1de9b0b5faab1dc72e83c"; -const MEEBITS_PETH_VAULT = "0xD5a4FF073fB6BA54B52CEC0747a69a2EBeD08D3F"; -const BAKC_PETH_VAULT = "0xBF3624e8E72737d632C27eaF814668200F3B0e09"; -const MILADY_PETH_VAULT = "0xdda32416E87c475A0bCBc6C2e74190e7c49c1E5f"; - -const VAULTS_ADDRESSES = [ - // pUSD vaults - CRYPTO_PUNK_PUSD_VAULT, - BAYC_PUSD_VAULT, - MAYC_PUSD_VAULT, - DOODLES_PUSD_VAULT, - PUDGY_PENGUINS_PUSD_VAULT, - AZUKI_PUSD_VAULT, - ETHER_ROCKS_PUSD_VAULT, - CLONEX_PUSD_VAULT, - AUTOGLYPH_PUSD_VAULT, - FIDENZA_PUSD_VAULT, - RINGERS_PUSD_VAULT, - SQUIGGLES_PUSD_VAULT, - OTHERDEED_PUSD_VAULT, - MEEBITS_PUSD_VAULT, - BAKC_PUSD_VAULT, - MILADY_PUSD_VAULT, - // pETH vaults - CRYPTO_PUNK_PETH_VAULT, - CRYPTO_PUNK_PETH_VAULT_B, - BAYC_PETH_VAULT, - BAYC_PETH_VAULT_B, - MAYC_PETH_VAULT, - MAYC_PETH_VAULT_B, - DOODLES_PETH_VAULT, - PUDGY_PENGUINS_PETH_VAULT, - AZUKI_PETH_VAULT, - AZUKI_PETH_VAULT_B, - ETHER_ROCKS_PETH_VAULT, - CLONEX_PETH_VAULT, - AUTOGLYPH_PETH_VAULT, - FIDENZA_PETH_VAULT, - RINGERS_PETH_VAULT, - SQUIGGLES_PETH_VAULT, - OTHERDEED_PETH_VAULT, - MEEBITS_PETH_VAULT, - BAKC_PETH_VAULT, - MILADY_PETH_VAULT, -]; - -const BAYC_VAULTS = [BAYC_PUSD_VAULT, BAYC_PETH_VAULT, BAYC_PETH_VAULT]; -const MAYC_VAULTS = [MAYC_PUSD_VAULT, MAYC_PETH_VAULT, MAYC_PETH_VAULT_B]; -const P2P_APE_STAKING = "0xD4b06218C545C047ac3ACc7cE49d124C172DB409"; -const BAYC_APE_STAKING_STRATEGY = "0x6b2e47560CC810C2Dce3bf2C0Da4310eC0af8831"; -const MAYC_APE_STAKING_STRATEGY = "0x6b2e47560CC810C2Dce3bf2C0Da4310eC0af8831"; -const APE_STAKING = "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9"; -const APE = "0x4d224452801aced8b2f0aebe155379bb5d594381"; - -const LP_STAKING = "0xb271d2c9e693dde033d97f8a3c9911781329e4ca"; -const JPEG = "0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3"; -const JPEG_WETH_SLP = "0xdb06a76733528761eda47d356647297bc35a98bd"; -const STAKING_CONTRACT = "0x3eed641562ac83526d7941e4326559e7b607556b"; - -const helperToNftMapping = { - "0x810fdbc7e5cfe998127a1f2aa26f34e64e0364f4": - "0xb7f7f6c52f2e2fdb1963eab30438024864c313f6", - "0x2be665ee27096344b8f015b1952d3dfdb4db4691": - "0xb7f7f6c52f2e2fdb1963eab30438024864c313f6", - "0x3c5c66f30ce8a66bf6a1c81ca415b6c1c9eeb71e": - "0xb7f7f6c52f2e2fdb1963eab30438024864c313f6", - "0x1de562b03184521f9a699e9290a6d578cd32008d": - "0xa3f5998047579334607c47a6a2889bf87a17fc02", - "0x3d4d8cbd9c1087e9463143cb9762c41f18ac0f03": - "0xa3f5998047579334607c47a6a2889bf87a17fc02", -}; - -const artBlockOwners = new Set( - [ - "0x0d3ac0aba8efb92222bc050509a0c8d2fbfe6489", - "0x126e6da0caefeaf104c6b9d022394a42567d9a38", - "0x14774cf533e38a2c568287228c5ef9fd9bd6a0bf", - "0x9E208146A28A653f6212d2931f316932015A312b", - ].map((i) => i.toLowerCase()) -); - -module.exports = { - VAULTS_ADDRESSES, - BAYC_VAULTS, - MAYC_VAULTS, - P2P_APE_STAKING, - BAYC_APE_STAKING_STRATEGY, - MAYC_APE_STAKING_STRATEGY, - APE_STAKING, - APE, - JPEG, - STAKING_CONTRACT, - JPEG_WETH_SLP, - LP_STAKING, - PETH_WETH_F: "0x374434df400c4b68aad8598e79840d109b6ca40c", - PETH_POOL: "0x1c5f80b6b68a9e1ef25926eee00b5255791b996b", - PUSD_USD_F: "0xF6Cbf5e56a8575797069c7A7FBED218aDF17e3b2", - USD_POOL: "0x8ee017541375f6bcd802ba119bddc94dad6911a1", - helperToNftMapping, - artBlockOwners, -}; diff --git a/projects/jpeg-d/helper/index.js b/projects/jpeg-d/helper/index.js deleted file mode 100644 index f307c68b845..00000000000 --- a/projects/jpeg-d/helper/index.js +++ /dev/null @@ -1,182 +0,0 @@ -const { sumTokens2, nullAddress } = require("../../helper/unwrapLPs"); -const abi = require("./abis"); -const { - VAULTS_ADDRESSES, - BAYC_VAULTS, - MAYC_VAULTS, - BAYC_APE_STAKING_STRATEGY, - MAYC_APE_STAKING_STRATEGY, - APE_STAKING, - P2P_APE_STAKING, - STAKING_CONTRACT, - APE, - JPEG, - PETH_POOL, - USD_POOL, - PETH_WETH_F, - PUSD_USD_F, - artBlockOwners, - LP_STAKING, - helperToNftMapping, -} = require("./addresses"); - -/** - * - * @returns JPEG'd deposit addresses for APE Staking - */ -async function getApeDepositAddresses(api) { - const [baycPositionIndices, maycPositionIndices] = await Promise.all([ - api.multiCall({ - abi: abi.VAULT_ABI.openPositionIndices, - calls: BAYC_VAULTS, - }), - api.multiCall({ - abi: abi.VAULT_ABI.openPositionIndices, - calls: MAYC_VAULTS, - }), - ]); - - const [baycOwners, maycOwners] = await Promise.all([ - api.multiCall({ - abi: abi.VAULT_ABI.positionOwner, - calls: baycPositionIndices - .map((vaultIndices, i) => - vaultIndices.map((nftIndex) => ({ - target: BAYC_VAULTS[i], - params: [nftIndex.toString()], - })) - ) - .flat(), - }), - api.multiCall({ - abi: abi.VAULT_ABI.positionOwner, - calls: maycPositionIndices - .map((vaultIndices, i) => - vaultIndices.map((nftIndex) => ({ - target: MAYC_VAULTS[i], - params: [nftIndex.toString()], - })) - ) - .flat(), - }), - ]); - - const [baycDepositAddresses, maycDepositAddresses] = await Promise.all([ - api.multiCall({ - abi: abi.STRATEGY_ABI.depositAddress, - calls: [...new Set(baycOwners)].map((owner) => ({ - target: BAYC_APE_STAKING_STRATEGY, - params: [owner], - })), - }), - api.multiCall({ - abi: abi.STRATEGY_ABI.depositAddress, - calls: [...new Set(maycOwners)].map((owner) => ({ - target: MAYC_APE_STAKING_STRATEGY, - params: [owner], - })), - }), - ]); - - return Array.from(new Set(baycDepositAddresses)).concat( - Array.from(new Set(maycDepositAddresses)) - ); -} - -/** - * @returns the amount of JPEG locked on JPEG'd (trait or ltv boosts) - */ -async function stakingJPEGD(api) { - const providersAddresses = await api.multiCall({ - abi: "address:nftValueProvider", - calls: VAULTS_ADDRESSES, - }); - - providersAddresses.push(STAKING_CONTRACT); - - return sumTokens2({ owners: providersAddresses, tokens: [JPEG], api }); -} - -/** - * @returns the amount of $APE tokens staked on JPEG'd - */ -async function getStakedApeAmount(api) { - const [apeDepositAddresses, lastNonce] = await Promise.all([ - getApeDepositAddresses(api), - api.call({ - target: P2P_APE_STAKING, - abi: abi.P2P_APE_STAKING_ABI.nextNonce, - }), - ]); - - const [apeStakes, offers] = await Promise.all([ - api.multiCall({ - abi: abi.APE_STAKING.stakedTotal, - target: APE_STAKING, - calls: apeDepositAddresses, - }), - api.multiCall({ - abi: abi.P2P_APE_STAKING_ABI.offers, - target: P2P_APE_STAKING, - calls: new Array(Number(lastNonce)).fill(null).map((_, i) => i), - }), - ]); - - apeStakes.forEach((v) => api.add(APE, v)); - offers.forEach((v) => api.add(APE, v.apeAmount)); -} - -async function vaultsTvl(api) { - // Fetch positions from vaults - const positions = await api.multiCall({ - calls: VAULTS_ADDRESSES, - abi: abi.VAULT_ABI.totalPositions, - }); - let tokens = await api.multiCall({ - abi: "address:nftContract", - calls: VAULTS_ADDRESSES, - }); - tokens = tokens.map((i) => i.toLowerCase()); - const transform = (t) => helperToNftMapping[t.toLowerCase()] || t; - - tokens.forEach((v, i) => { - if (artBlockOwners.has(v)) return; - api.add(transform(v), positions[i]); - }); -} - -async function autocompoundingTvl(api) { - const curveBalApi = "function balances(uint256) view returns (uint256)"; - const [ - ethInPETHFactory, - pethGaugeSupply, - pethGaugeBalance, - usdInPUSDFactory, - pusdGaugeSupply, - pusdGaugeBalance, - ] = await api.batchCall([ - { target: PETH_POOL, abi: curveBalApi, params: [0] }, - { target: PETH_POOL, abi: "erc20:totalSupply" }, - { target: PETH_WETH_F, abi: "erc20:balanceOf", params: [LP_STAKING] }, - { target: USD_POOL, abi: curveBalApi, params: [1] }, - { target: USD_POOL, abi: "erc20:totalSupply" }, - { target: PUSD_USD_F, abi: "erc20:balanceOf", params: [LP_STAKING] }, - ]); - - api.add(nullAddress, (ethInPETHFactory * pethGaugeSupply) / pethGaugeSupply); - api.add( - "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - (usdInPUSDFactory * pusdGaugeBalance) / pusdGaugeSupply - ); -} - -async function tvl(api) { - await Promise.all([ - getStakedApeAmount(api), - vaultsTvl(api), - autocompoundingTvl(api), - sumTokens2({ api, resolveArtBlocks: true, owners: [...artBlockOwners] }), - ]); -} - -module.exports = { tvl, stakingJPEGD }; diff --git a/projects/jpeg-d/index.js b/projects/jpeg-d/index.js deleted file mode 100644 index 7b86f1c40ad..00000000000 --- a/projects/jpeg-d/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { staking } = require("../helper/staking"); -const { tvl, stakingJPEGD } = require("./helper/index"); -const { LP_STAKING, JPEG_WETH_SLP } = require("./helper/addresses"); - -module.exports = { - methodology: `Counts the floor value of all NFTs supplied in the protocol vaults`, - ethereum: { - tvl, - staking: stakingJPEGD, - pool2: staking(LP_STAKING, [JPEG_WETH_SLP]), - }, - hallmarks: [ - [1666003500, "pETH borrows"], - [1669551000, "JPEG LTV boost"], - [1690730000, "pETH-ETH Curve pool drained"], - [1694680200, "pETH Citadel relaunch"], - ], -}; diff --git a/projects/jpgstore/index.js b/projects/jpgstore/index.js deleted file mode 100644 index 2a2549c013f..00000000000 --- a/projects/jpgstore/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getAdaInAddress } = require('../helper/chain/cardano') - -// Offers V1 Contract -const V1_PROTOCOL_SCRIPT_ADDRESS_OFFER = "addr1zxj47sy4qxlktqzmkrw8dahe46gtv8seakrshsqz26qnvzypw288a4x0xf8pxgcntelxmyclq83s0ykeehchz2wtspksr3q9nx"; - -// Ask V1 Contract -const V1_PROTOCOL_SCRIPT_ADDRESS_ASK = "addr1x8rjw3pawl0kelu4mj3c8x20fsczf5pl744s9mxz9v8n7efvjel5h55fgjcxgchp830r7h2l5msrlpt8262r3nvr8ekstg4qrx"; - -// BuySell V2 Contract -const V2_PROTOCOL_SCRIPT_ADDRESS_MAIN = "addr1w999n67e86jn6xal07pzxtrmqynspgx0fwmcmpua4wc6yzsxpljz3"; - -// Offers V2 Contract -const V2_PROTOCOL_SCRIPT_ADDRESS_OFFER = "addr1zxgx3far7qygq0k6epa0zcvcvrevmn0ypsnfsue94nsn3tvpw288a4x0xf8pxgcntelxmyclq83s0ykeehchz2wtspks905plm"; - -async function tvl() { - const V1Locked_Offer = await getAdaInAddress(V1_PROTOCOL_SCRIPT_ADDRESS_OFFER) - const V1Locked_Ask = await getAdaInAddress(V1_PROTOCOL_SCRIPT_ADDRESS_ASK) - const V2Locked_Main = await getAdaInAddress(V2_PROTOCOL_SCRIPT_ADDRESS_MAIN) - const V2Locked_Offer = await getAdaInAddress(V2_PROTOCOL_SCRIPT_ADDRESS_OFFER) - return { - "cardano": V1Locked_Offer + V1Locked_Ask + V2Locked_Main + V2Locked_Offer - } -} - -module.exports = { - timetravel: false, - cardano: { - tvl - } -} diff --git a/projects/jpool.js b/projects/jpool.js deleted file mode 100644 index cf74565be23..00000000000 --- a/projects/jpool.js +++ /dev/null @@ -1,15 +0,0 @@ - -const { getSolBalanceFromStakePool } = require('./helper/solana') - -async function tvl(api) { - // https://jpool.one/pool-info - await getSolBalanceFromStakePool('CtMyWsrUtAwXWiGr9WjHT5fC3p3fgV8cyGpLTo2LJzG1', api) -} - -module.exports = { - timetravel: false, - methodology: "JSOL total supply as it's equal to the SOL staked", - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/jpow/index.js b/projects/jpow/index.js deleted file mode 100644 index 01d26af0bcd..00000000000 --- a/projects/jpow/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { sumTokens2 } = require('../helper/solana'); - -const JPOW_PROGRAM_ID = new PublicKey('3APJcbC2iHEFGv4y6a8Fi5nQ5u75ML85TQreSr7cpRDs'); - -const DEPOSITORY_SEED = "DEPOSITORY"; -const DEPOSITORY_TYPE1_SEED = "DEPOSITORY_TYPE_1"; - -// get collateral tokens supported by JPOW lending protocol -async function fetchCollateralTokens() { - const response = await fetch('https://api.jpow.ai/lending/metrics'); - const data = await response.json(); - return data.assets.map(asset => new PublicKey(asset.contractAddress)); -} - -async function tvl() { - const tokensAndOwners = []; - const collaterals = await fetchCollateralTokens(); - - const [depositoryType1Pda] = PublicKey.findProgramAddressSync( - [Buffer.from(DEPOSITORY_TYPE1_SEED)], - JPOW_PROGRAM_ID - ); - - // get depository of each collateral - for (let i = 0; i < collaterals.length; i++) { - const [depositoryPda] = PublicKey.findProgramAddressSync( - [Buffer.from(DEPOSITORY_SEED), collaterals[i].toBuffer()], - JPOW_PROGRAM_ID - ); - - tokensAndOwners.push([ - collaterals[i], - depositoryPda - ]); - - tokensAndOwners.push([ - collaterals[i], - depositoryType1Pda - ]); - } - return sumTokens2({ tokensAndOwners }); -} - - -module.exports = { - timetravel: false, - solana: { - tvl, - } - }; \ No newline at end of file diff --git a/projects/jswap-finance/index.js b/projects/jswap-finance/index.js deleted file mode 100644 index bce3153e227..00000000000 --- a/projects/jswap-finance/index.js +++ /dev/null @@ -1,13 +0,0 @@ - -const factory = "0xd654CbF99F2907F06c88399AE123606121247D5C" - -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - okexchain: { - tvl: getUniTVL({ - factory, - useDefaultCoreAssets: true, - }) - }, -} diff --git a/projects/juggler-red/index.js b/projects/juggler-red/index.js deleted file mode 100644 index 036a004c3f7..00000000000 --- a/projects/juggler-red/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - optimism: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x0bef94f16ce5b7c83b0bdbd9924cf80239ba9837', - }), - } -}; \ No newline at end of file diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js deleted file mode 100644 index 1a6b08be26f..00000000000 --- a/projects/juice-finance/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// Tokens -const EZETH = ADDRESSES.blast.ezETH; - -const PRO = { - lendingPool: { - usdb: "0x788654040D7E9a8Bb583D7d8CCEA1Ebf1AE4aC06", - weth: "0x60ED5493B35f833189406dFec0b631A6B5B57f66", - }, - collateralManager: { - usdb: "0xaCe661Bf726Bd8aFE6F6594C559A5136489E64f9", - weth: "0x4dEE8034019f03F1a025dbFB4bBC159D7BaA7a0A", - }, -} - -// Lending pools -const LENDING_POOL_USDB = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a"; -const LENDING_POOL_WETH = "0x44f33bC796f7d3df55040cd3C631628B560715C2"; - -// Managers -const COLLATERAL_MANAGER = "0x6301795aa55B90427CF74C18C8636E0443F2100b"; -const COLLATERAL_MANAGER_V2 = "0x105e285f1a2370D325046fed1424D4e73F6Fa2B0"; -const WETH_COLLATERAL_MANAGER = "0x23eBa06981B5c2a6f1a985BdCE41BD64D18e6dFA"; -const EZETH_COLLATERAL_MANAGER = "0xc81A630806d1aF3fd7509187E1AfC501Fd46e818"; -const MUNCHABLE_WETH_COLLATERAL_MANAGER = - "0x32b6C6322939263029A5CF37F14A59ab0A9E277c"; -const WEETH_COLLATERAL_MANAGER = - "0x7E4aFeBe294345d72dE6bB8405C871D7BB6c53d1"; -const USDB_COLLATERAL_MANAGER = - "0xC877B52c628Dba77fC55F1DDb140747155C9b39D"; - -const wethCollateralManagers = [ - COLLATERAL_MANAGER, - COLLATERAL_MANAGER_V2, - WETH_COLLATERAL_MANAGER, - MUNCHABLE_WETH_COLLATERAL_MANAGER, - PRO.collateralManager.weth, -].map((a) => [ADDRESSES.blast.WETH, a]); - -const usdbCollateralManagers = [ - USDB_COLLATERAL_MANAGER, - PRO.collateralManager.usdb, -].map((a) => [ADDRESSES.blast.USDB, a]); - -async function tvl(api) { - - const thrusterV2LPs = [['0x4E4B4A3111d128628c427E78a2abAd1635fE6542', '0x4Ca392f74A4C86F5E521f1d8E915b36ed425B331']]; - const stakedLPCalls = thrusterV2LPs.map(lp => ({ params: [lp[1], lp[0]] })); - const v2Bals = await api.multiCall({ abi: 'function staked(address, address) view returns (uint256)', calls: stakedLPCalls, target: '0xc3ecadb7a5fab07c72af6bcfbd588b7818c4a40e' }); - const v2Tokens = thrusterV2LPs.map(lp => lp[0]); - api.add(v2Tokens, v2Bals); - - const tokens = await api.multiCall({ - abi: "uint256:getTotalSupply", - calls: [LENDING_POOL_USDB, PRO.lendingPool.usdb, LENDING_POOL_WETH, PRO.lendingPool.weth], - }); - - api.add(ADDRESSES.blast.USDB, tokens[0]); - api.add(ADDRESSES.blast.USDB, tokens[1]); - api.add(ADDRESSES.blast.WETH, tokens[2]); - api.add(ADDRESSES.blast.WETH, tokens[3]); - - await sumTokens2({ - api, - resolveLP: true, - tokensAndOwners: [ - [EZETH, EZETH_COLLATERAL_MANAGER], - [ADDRESSES.blast.weETH, WEETH_COLLATERAL_MANAGER], - ...usdbCollateralManagers, - ...wethCollateralManagers, - ], - }); -} - -module.exports = { - blast: { - tvl, - }, -}; diff --git a/projects/juicebox-v1/index.js b/projects/juicebox-v1/index.js deleted file mode 100644 index 8f9403b7da8..00000000000 --- a/projects/juicebox-v1/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -// V1 Juicebox Terminals -const Terminal_V1 = "0xd569D3CCE55b71a8a3f3C418c329A66e5f714431"; -const Terminal_v1_1 = "0x981c8ECD009E3E84eE1fF99266BF1461a12e5c68"; -// Tokens -const ETH = ADDRESSES.null - -module.exports = { - methodology: "Count the value of the Ether in the Juicebox V1 terminals", - ethereum: - { - start: '2021-07-15', // 2021-06-15 17:14:03 (UTC) - tvl: async (_, block) => sumTokens2({ - block, - tokensAndOwners: [ - [ETH, Terminal_V1], - [ETH, Terminal_v1_1], - ] - }) - } -}; diff --git a/projects/juicebox-v2/index.js b/projects/juicebox-v2/index.js deleted file mode 100644 index f9bf57d7596..00000000000 --- a/projects/juicebox-v2/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -// V2 Juicebox Terminals -const Terminal_V2 = "0x7Ae63FBa045Fec7CaE1a75cF7Aa14183483b8397"; -// Tokens -const ETH = ADDRESSES.null - -module.exports = { - methodology: "Count the value of the Ether in the Juicebox V2 terminal", - ethereum: - { - start: '2022-05-29', // 2022-05-29 19:47:23 (UTC) - tvl: async (_, block) => sumTokens2({ - block, - tokensAndOwners: [ - [ETH, Terminal_V2], - ] - }) - } -}; diff --git a/projects/juicebox-v3/index.js b/projects/juicebox-v3/index.js deleted file mode 100644 index b109c4c410f..00000000000 --- a/projects/juicebox-v3/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -// V3 Juicebox Terminals -const Terminal_V3 = "0x594Cb208b5BB48db1bcbC9354d1694998864ec63"; -const Terminal_V3_1 = "0xFA391De95Fcbcd3157268B91d8c7af083E607A5C"; -const Terminal_V3_1_1 = "0x457cD63bee88ac01f3cD4a67D5DCc921D8C0D573"; -const Terminal_V3_1_2 = "0x1d9619E10086FdC1065B114298384aAe3F680CC0"; -// Tokens -const ETH = ADDRESSES.null - -module.exports = { - methodology: "Count the value of the Ether in the Juicebox V3 terminals", - ethereum: - { - start: '2022-09-20', // 2022-10-20 15:04:35(UTC) - tvl: async (_, block) => sumTokens2({ - block, - tokensAndOwners: [ - [ETH, Terminal_V3], - [ETH, Terminal_V3_1], - [ETH, Terminal_V3_1_1], - [ETH, Terminal_V3_1_2], - ] - }) - } -}; diff --git a/projects/jujubefinance/index.js b/projects/jujubefinance/index.js deleted file mode 100644 index d1b233517a2..00000000000 --- a/projects/jujubefinance/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -module.exports = dexExport({ - account: '0x4a45434525e4fc243071250a449494d915719d2b3f9f7b92242196c7f2e88346', - poolStr: 'liquidity_pool::LiquidityPool', -}) diff --git a/projects/julswap/index.js b/projects/julswap/index.js deleted file mode 100644 index d088f68b082..00000000000 --- a/projects/julswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x553990F2CBA90272390f62C5BDb1681fFc899675', - }) - } -}; \ No newline at end of file diff --git a/projects/jumboexchange/index.js b/projects/jumboexchange/index.js deleted file mode 100644 index c268cc8c7d3..00000000000 --- a/projects/jumboexchange/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { call, sumSingleBalance, } = require('../helper/chain/near') - - -const PROJECT_CONTRACT = 'v1.jumbo_exchange.near' - - -async function tvl() { - const balances = {} - let poolIndex = 0 - const numberOfPools = await call(PROJECT_CONTRACT, 'get_number_of_pools', {}) - - do { - const pools = await call(PROJECT_CONTRACT, 'get_pools', { from_index: poolIndex, limit: 100 }) - - pools - .filter(({ shares_total_supply }) => +shares_total_supply > 0) // Token pair must have some liquidity - .map(({ token_account_ids, pool_kind, amounts }) => { - if (!['SIMPLE_POOL', 'STABLE_SWAP'].includes(pool_kind)) throw new Error('Unknown pool kind, add handler') - token_account_ids.forEach((token, index) => { - sumSingleBalance(balances, token, amounts[index]) - }) - }) - - poolIndex += 100 - } while (poolIndex < numberOfPools) - - return balances -} - - -module.exports = { - near: { - tvl, - }, - methodology: 'Summed up all the tokens deposited in their pool' -}; diff --git a/projects/jumpbox/index.js b/projects/jumpbox/index.js deleted file mode 100644 index 01b46fcbe9c..00000000000 --- a/projects/jumpbox/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const JUMPBOX_TOKEN = "0x5B9957A7459347163881d19a87f6DC13291C2B07" -const WETH = "0x4200000000000000000000000000000000000006" -const WRAPPER_STAKING = "0x80d25c6615ba03757619ab427c2d995d8b695162" -const UNISWAP_V3_NFT_MANAGER = "0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1" -const UNISWAP_V3_POOL = "0xe610ddc70eb7f2cff4a18d55b0cf0cef1f6e0f5f" - -async function pool2(api) { - // Get wrapper NFT balance - const wrapperBalance = await api.call({ - target: UNISWAP_V3_NFT_MANAGER, - abi: 'function balanceOf(address owner) view returns (uint256)', - params: [WRAPPER_STAKING] - }) - - if (wrapperBalance == 0) { - return api.getBalances() - } - - // Get all token IDs - const allTokenIds = await api.multiCall({ - target: UNISWAP_V3_NFT_MANAGER, - abi: 'function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)', - calls: Array.from({ length: Number(wrapperBalance) }, (_, i) => ({ params: [WRAPPER_STAKING, i] })) - }) - - // Get all positions - const allPositions = await api.multiCall({ - target: UNISWAP_V3_NFT_MANAGER, - abi: 'function positions(uint256 tokenId) view returns (uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)', - calls: allTokenIds.map(id => ({ params: [id] })) - }) - - // Filter for JUMPBOX-WETH positions - const jumpboxPositions = allPositions.filter(pos => { - const hasJumpbox = pos.token0.toLowerCase() === JUMPBOX_TOKEN.toLowerCase() || pos.token1.toLowerCase() === JUMPBOX_TOKEN.toLowerCase() - const hasWeth = pos.token0.toLowerCase() === WETH.toLowerCase() || pos.token1.toLowerCase() === WETH.toLowerCase() - return hasJumpbox && hasWeth && pos.liquidity > 0 - }) - - if (jumpboxPositions.length === 0) { - return api.getBalances() - } - - // Get pool reserves - const [reserve0, reserve1] = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: [ - { target: JUMPBOX_TOKEN, params: [UNISWAP_V3_POOL] }, - { target: WETH, params: [UNISWAP_V3_POOL] } - ] - }) - - // Get total pool liquidity - const poolLiquidity = await api.call({ - target: UNISWAP_V3_POOL, - abi: 'function liquidity() view returns (uint128)', - }) - - // Calculate total wrapper liquidity - const totalWrapperLiquidity = jumpboxPositions.reduce((sum, pos) => sum + BigInt(pos.liquidity), 0n) - - // Calculate wrapper's share of pool - const share = Number(totalWrapperLiquidity) / Number(poolLiquidity) - - // Add proportional reserves - api.add(JUMPBOX_TOKEN, Math.floor(Number(reserve0) * share)) - api.add(WETH, Math.floor(Number(reserve1) * share)) - - return api.getBalances() -} - -module.exports = { - methodology: "TVL is calculated from the value of JUMPBOX-WETH Uniswap V3 liquidity positions held in the Rebase staking wrapper contract. Users stake V3 LP positions and earn 118% APY.", - - base: { - tvl: () => ({}), - pool2 - } -} diff --git a/projects/jumpdefi/index.js b/projects/jumpdefi/index.js deleted file mode 100644 index ead26216fd4..00000000000 --- a/projects/jumpdefi/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport("telos", "0xff59EBFf3e3F72E8162eA2aB0a0d1C9258692dF5"); diff --git a/projects/junoswap/index.js b/projects/junoswap/index.js deleted file mode 100644 index aecf7cbd984..00000000000 --- a/projects/junoswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require('../helper/http') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - juno: { - tvl: async () => { - return { - tether: 0 - } - } - } -} - -module.exports.deadFrom = '2023-02-03' \ No newline at end of file diff --git a/projects/jupSOL/index.js b/projects/jupSOL/index.js deleted file mode 100644 index c969b322a35..00000000000 --- a/projects/jupSOL/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getStakedSol, getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - // jupSOL - await getSolBalanceFromStakePool('8VpRhuxa7sUUepdY3kQiTmX9rS5vx4WgaXiAnXq4KCtr', api) - - // Jupiter Labs Perpetuals Vault - await getStakedSol('AVzP2GeRmqGphJsMxWoqjpUifPpCret7LqWhD8NWQK49', api) -} - -module.exports = { - timetravel: false, - methodology: 'Total SOL staked in jupSOL and SOL staked from Jupiter Perpetual Exchange', - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/jupiter-lend/index.js b/projects/jupiter-lend/index.js deleted file mode 100644 index fbae7b99bc5..00000000000 --- a/projects/jupiter-lend/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { getProvider, sumTokens2 } = require('../helper/solana') -const { Program } = require("@coral-xyz/anchor"); - -async function getData() { - const LIQUIDITY_IDL_URL = "https://raw.githubusercontent.com/jup-ag/jupiter-lend/refs/heads/main/target/idl/liquidity.json"; - const LIQUIDITY_PROGRAM_ID = "jupeiUmn818Jg1ekPURTpr4mFo29p46vygyykFJ3wZC"; - - const idl = await getConfig('jupiter-lend', LIQUIDITY_IDL_URL) - const provider = getProvider(); - idl.metadata.address = LIQUIDITY_PROGRAM_ID; - const program = new Program(idl, provider); - return ( await program.account.tokenReserve.all()).map(i => i.account) -} - -const EXCHANGE_PRICE_PRECISION = 1e12 -async function tvl() { - const tokenReserves = await getData(); - const tokenAccounts = tokenReserves.map(i => i.vault.toBase58()) - return sumTokens2({ tokenAccounts }) -} -async function borrowed(api) { - const tokenReserves = await getData() - tokenReserves.forEach(i => { - const totalBorrowed = (+i.totalBorrowWithInterest.toString() * +i.borrowExchangePrice.toString() / EXCHANGE_PRICE_PRECISION) + +i.totalBorrowInterestFree.toString() - api.add(i.mint.toBase58(), totalBorrowed) - }) -} - -module.exports = { - solana: { tvl, borrowed, }, -} \ No newline at end of file diff --git a/projects/jupiter-perpetual.js b/projects/jupiter-perpetual.js deleted file mode 100644 index c71cc67a068..00000000000 --- a/projects/jupiter-perpetual.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("./helper/solana"); - -module.exports = { - hallmarks: [ - [1706490000,"launch jup exchange"] - ], - timetravel: false, - methodology: "Calculate sum across all program token accounts", - solana: { - tvl, - }, -}; - -async function tvl() { - return sumTokens2({ owner: 'AVzP2GeRmqGphJsMxWoqjpUifPpCret7LqWhD8NWQK49' }); -} diff --git a/projects/jupiterswap/index.js b/projects/jupiterswap/index.js deleted file mode 100644 index 6c8dd3b9a59..00000000000 --- a/projects/jupiterswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - hallmarks: [ - [1660521600, "incentives not given"] - ], - misrepresentedTokens: true, - methodology: "Factory addresses (0xc08BAEA14C14f25bcafe3e3E05550715505eF3dE for kava) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - kava: { - tvl: getUniTVL({ - factory: '0xc08BAEA14C14f25bcafe3e3E05550715505eF3dE', - useDefaultCoreAssets: true, - }), - } -} diff --git a/projects/justCryptos/index.js b/projects/justCryptos/index.js deleted file mode 100644 index 45c397e526b..00000000000 --- a/projects/justCryptos/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { get } = require('../helper/http'); - -let nowDate = new Date(); -nowDate.setFullYear(nowDate.getFullYear() - 1); -let T = parseInt(nowDate.getTime() / 1000); - -const url = "https://apilist.tronscan.org/api/defiTvl?type=tvlline&project=&startTime=" + T; - -function getItemByName (projectName, listArr) { - for (let i = 0; i < listArr.length; i++) { - if (listArr[i].project === projectName) { - return listArr[i]; - } - } -} - -const tvl = async (api) => { - const pools = await get(url); - let item = getItemByName('Just Cryptos', pools.projects) - return api.addUSDValue(Math.round(item.locked)) -} - -module.exports = { - misrepresentedTokens: true, - tron: { tvl } -} \ No newline at end of file diff --git a/projects/justSwap/index.js b/projects/justSwap/index.js deleted file mode 100644 index 290cfd101e2..00000000000 --- a/projects/justSwap/index.js +++ /dev/null @@ -1,40 +0,0 @@ - -const {getApiTvl} = require('../helper/historicalApi') -const sdk = require('@defillama/sdk') -const { get } = require('../helper/http') - -async function v1(timestamp){ - return getApiTvl(timestamp, async ()=>{ - const r = await get("https://abc.ablesdxd.link/swap/scan/statusinfo") - return Number(r.data.totalLiquidity) - }, async()=>{ - const r = await get("https://abc.ablesdxd.link/swap/scan/liquidityall") - // {liquidity: "0.000000000000000000", time: 1597492800000} - return r.data.map(d=>({ - date: d.time/1000, - totalLiquidityUSD: Number(d.liquidity) - })) - }) -} - -async function v2(timestamp){ - return getApiTvl(timestamp, async ()=>{ - const r = await get("https://pabc.ablesdxd.link/swapv2/scan/getStatusInfo") - return Number(r.data.totalLiquidityUsd) - }, async()=>{ - const r = await get("https://pabc.ablesdxd.link/swapv2/scan/getAllLiquidityVolume") - // {liquidity: "0.000000000000000000", time: 1597492800000} - return r.data.map(d=>({ - date: d.time/1000, - totalLiquidityUSD: Number(d.liquidity) - })) - }) -} - -module.exports = { - misrepresentedTokens: true, - methodology: "We get liquidity from the ablesdxd.link API", - tron:{ - tvl: sdk.util.sumChainTvls([v1,v2]) - } -} diff --git a/projects/justbet/abis.js b/projects/justbet/abis.js deleted file mode 100644 index 0fbfeeb7042..00000000000 --- a/projects/justbet/abis.js +++ /dev/null @@ -1,42 +0,0 @@ -const vaultAdapterAbi = { - inputs: [{ internalType: 'address[]', name: 'bankrollIndexes', type: 'address[]' }], - name: 'getAllDataBatch', - outputs: [ - { - components: [ - { internalType: 'uint256', name: 'vaultIndex', type: 'uint256' }, - { internalType: 'address', name: 'bankrollBytesIdentifier', type: 'address' }, - { internalType: 'address', name: 'vaultAddress', type: 'address' }, - { internalType: 'address', name: 'bankrollTokenAddress', type: 'address' }, - { internalType: 'address', name: 'shareTokenAddress', type: 'address' }, - { internalType: 'address', name: 'controllerAddress', type: 'address' }, - { internalType: 'address', name: 'liquidityManagerAddress', type: 'address' } - ], - internalType: 'struct IVaultAdapter.VaultDetails[]', - name: 'vaultDetails_', - type: 'tuple[]' - }, - { - components: [ - { internalType: 'uint256', name: 'bankrollAmount', type: 'uint256' }, - { internalType: 'uint256', name: 'shareTokenAmount', type: 'uint256' }, - { internalType: 'uint256', name: 'epochAmount', type: 'uint256' }, - { internalType: 'uint256', name: 'totalAmount', type: 'uint256' }, - { internalType: 'uint256', name: 'totalAmountExcluding', type: 'uint256' }, - { internalType: 'uint64', name: 'bankrollTokenPrice', type: 'uint64' }, - { internalType: 'bool', name: 'isProfitEpcoh', type: 'bool' }, - { internalType: 'bool', name: 'isProfitTotal', type: 'bool' }, - { internalType: 'bool', name: 'isProfitTotalExcluding', type: 'bool' } - ], - internalType: 'struct IVaultAdapter.VaultAmounts[]', - name: 'vaultAmounts_', - type: 'tuple[]' - } - ], - stateMutability: 'view', - type: 'function' -}; - -module.exports = { - vaultAdapterAbi -} \ No newline at end of file diff --git a/projects/justbet/index.js b/projects/justbet/index.js deleted file mode 100644 index 11e62c23995..00000000000 --- a/projects/justbet/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { vaultAdapterAbi } = require('./abis') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const WINR_LOCKV2_CONTRACT = "0x7f3E35B41BDF7DBA6a90661918d0EfDDC6C15c3C"; -const WINR_VAULT_ADAPTER_CONTRACT = "0xc942b79E51fe075c9D8d2c7501A596b4430b9Dd7"; - -const JUSTBET_BANKROLL_INDEXES = [ - ADDRESSES.linea.WETH_1, - '0x0000000000000000000000000000000000000006', - '0x0000000000000000000000000000000000000013', - '0x0000000000000000000000000000000000000014', - '0x0000000000000000000000000000000000000015', - '0x0000000000000000000000000000000000000019' -]; - -const tvl = async (api) => { - const poolsDetails = await api.call({ - abi: vaultAdapterAbi, - target: WINR_VAULT_ADAPTER_CONTRACT, - params: [JUSTBET_BANKROLL_INDEXES] - }) - - const tokensAndOwners = [ - [ADDRESSES.null, WINR_LOCKV2_CONTRACT], - ...poolsDetails.vaultDetails_.map(d => [d.bankrollTokenAddress, d.vaultAddress]) - ] - - return sumTokens2({ api, tokensAndOwners, permitFailure: true }) -} - -module.exports = { - winr: { - tvl - }, -}; diff --git a/projects/justlend.js b/projects/justlend.js deleted file mode 100644 index a9e16e882b3..00000000000 --- a/projects/justlend.js +++ /dev/null @@ -1,47 +0,0 @@ -const { unhexifyTarget, } = require('@defillama/sdk/build/abi/tron'); -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens } = require('./helper/sumTokens') - -const comptroller = 'TGjYzgCyPobsNS9n6WcbdLVR9dH7mWqFx7' - -module.exports = { - tron: { - tvl, borrowed, - }, - hallmarks: [ - [1733270400, "TRX token price was increasing over 90%"], - ], -}; - -async function tvl(api) { - const markets = (await api.call({ abi: 'address[]:getAllMarkets', target: comptroller })).map(unhexifyTarget) - const cMarkets = ['TE2RzoSV3wFK99w6J9UnnZ4vLfXYoxvRwP'] - const tokensAndOwners = [] - const otherMarkets = [] - for (let i = 0; i < markets.length; i++) { - if (cMarkets.includes(markets[i])) { - tokensAndOwners.push([ADDRESSES.null, markets[i]]) - } else - otherMarkets.push(markets[i]) - } - - const underlyings = await api.multiCall({ abi: 'address:underlying', calls: otherMarkets }) - underlyings.forEach((t, i) => tokensAndOwners.push([t, otherMarkets[i]])) - return sumTokens({ chain: 'tron', tokensAndOwners }) -} - -async function borrowed(api) { - const markets = (await api.call({ abi: 'address[]:getAllMarkets', target: comptroller })).map(unhexifyTarget) - const cMarkets = ['TE2RzoSV3wFK99w6J9UnnZ4vLfXYoxvRwP'] - const otherMarkets = [] - for (let i = 0; i < markets.length; i++) { - if (!cMarkets.includes(markets[i])) - otherMarkets.push(markets[i]) - } - - const underlyings = await api.multiCall({ abi: 'address:underlying', calls: otherMarkets }) - const uBorrowed = await api.multiCall({ abi: 'uint256:totalBorrows', calls: otherMarkets }) - const cBorrowed = await api.multiCall({ abi: 'uint256:totalBorrows', calls: cMarkets }) - api.add(underlyings, uBorrowed) - api.add(ADDRESSES.null, cBorrowed) -} diff --git a/projects/justlock-io/index.js b/projects/justlock-io/index.js deleted file mode 100644 index e7fd8fd90eb..00000000000 --- a/projects/justlock-io/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http') -module.exports = { - misrepresentedTokens: true, - radixdlt: { tvl }, - timetravel: false, -} - -async function tvl(api) { - const { tvl_usd } = await get('https://api.justlock.io/tvl_by_types') - api.addUSDValue(tvl_usd["FungibleResource-NativePoolUnit"]) - api.addUSDValue(tvl_usd["NonFungibleResource-PrecisionPool"]) - api.addUSDValue(tvl_usd["NonFungibleResource-QuantaSwap"]) -} \ No newline at end of file diff --git a/projects/justmoney/index.js b/projects/justmoney/index.js deleted file mode 100644 index af8ef28f6b1..00000000000 --- a/projects/justmoney/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - bsc: { - tvl: getUniTVL({ - factory: '0xF2Fb1b5Be475E7E1b3C31082C958e781f73a1712', - useDefaultCoreAssets: true, - }), - }, - bittorrent: { - tvl: getUniTVL({ - factory: '0x4dEb2f0976DC3Bf351555524B3A24A4feA4e137E', - useDefaultCoreAssets: true, - }), - }, - ethereum: { - tvl: getUniTVL({ - factory: '0xd36Aba9Ec96523b0A89886c76065852aDFE2Eb39', - useDefaultCoreAssets: true, - }), - }, - polygon: { - tvl: getUniTVL({ - factory: '0xD36ABA9EC96523B0A89886C76065852ADFE2EB39', - useDefaultCoreAssets: true, - }), - }, - tron: { - tvl: getUniTVL({ - factory: 'TBfTeNjh7k8PbkTad8z6WS2vqh7SQZUfQ8', - useDefaultCoreAssets: true, - }), - }, -} diff --git a/projects/juststable/index.js b/projects/juststable/index.js deleted file mode 100644 index 96dfbd7e674..00000000000 --- a/projects/juststable/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); -const ADDRESSES = require('../helper/coreAssets.json'); - -module.exports = { - timetravel: false, - tron: { - tvl: sumTokensExport({ owner: 'TRrY9fXGnfLmcp7ytkLmHiTpvYMHG6zUGF', tokens: [ADDRESSES.tron.WTRX] }) - }, - hallmarks: [ - [1733270400, "TRX token price was increasing over 90%"], - ], -} diff --git a/projects/justyield/index.js b/projects/justyield/index.js deleted file mode 100644 index 0251eed8b47..00000000000 --- a/projects/justyield/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { yieldHelper } = require("../helper/unknownTokens"); -const { getConfig } = require('../helper/cache') - -const chain = "arbitrum"; -const tokenAPI = "address:want" - -module.exports = { - [chain]: { - tvl: async (_, _b, { [chain]: block }) => { - const pools = await getConfig('justyield-arbitrum', 'https://raw.githubusercontent.com/JustYield-Finance/DogeCompounderApi/main/arbitrum_vaults.json'); - const vaults = []; - for(var i = 0; i < pools.length; i++) - vaults.push(pools[i].earnedTokenAddress); - - return yieldHelper({ vaults, chain, block, tokenAPI, useDefaultCoreAssets: true, }) - } - } -} \ No newline at end of file diff --git a/projects/jvault/index.js b/projects/jvault/index.js deleted file mode 100644 index 260a6a9aeba..00000000000 --- a/projects/jvault/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { fetchURL } = require('../helper/utils'); - -async function staking(api) { - - // API is used to get all vaults and their TVLs to avoid scan of all blockchain for matching vaults - // also Jettons values are converted to TON using DEXs prices - const response = await fetchURL("https://jvault.xyz/staking/stake?type=json") - for (const pool of response.data.pools) { - api.add(ADDRESSES.ton.TON, pool.ton_tvl * 1e9) - } -} - - -module.exports = { - methodology: 'Counts balances of all tokens based on DEXs prices in all vaults.', - timetravel: false, - ton: { - tvl: () => ({}), - staking, - } -} diff --git a/projects/k-bit/index.js b/projects/k-bit/index.js deleted file mode 100644 index 4d57bfbc3f0..00000000000 --- a/projects/k-bit/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -const LP_CONTRACT = '0x2fb5AAbf9bbc7303eB48D154F57de5cCe158FC2c'; - -module.exports = { - methodology: "K-BIT Vault is a core component of the K-BIT ecosystem, enabling users to participate in the platform by depositing USDT and receiving KLP tokens in return.", - klaytn: { - tvl: sumERC4626VaultsExport({ vaults: [LP_CONTRACT], isOG4626: true }), - }, -} diff --git a/projects/k3/index.js b/projects/k3/index.js deleted file mode 100644 index 8719972f457..00000000000 --- a/projects/k3/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by K3 Capital.', - blockchains: { - ethereum: { - symbiotic: [ - '0xdC47953c816531a8CA9E1D461AB53687d48EEA26', - ], - }, - bsc: { - eulerVaultOwners: [ - '0x5Bb012482Fa43c44a29168C6393657130FDF0506', - '0x2E28c94eE56Ac6d82600070300d86b3a14D5d71A', - ], - }, - avax: { - eulerVaultOwners: [ - '0xa4dC6C20475fDD05b248fbE51F572bD3154dd03B', - ], - }, - bob: { - eulerVaultOwners: [ - '0xDb81B93068B886172988A1A4Dd5A1523958a23f0', - ], - }, - unichain: { - morphoVaultOwners: [ - '0xe34A3fb26B3121F4E68bE89Ea553BaC2149F975d', - ], - }, - plasma: { - eulerVaultOwners: [ - '0x060DB084bF41872861f175d83f3cb1B5566dfEA3', - ], - }, - arbitrum: { - eulerVaultOwners: [ - '0xAeE4e2E8024C1B58f4686d1CB1646a6d5755F05C', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/k9-finance/index.js b/projects/k9-finance/index.js deleted file mode 100644 index 7c8e195d0b4..00000000000 --- a/projects/k9-finance/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { sumUnknownTokens } = require("../helper/unknownTokens"); - -const vestingSettingsAbi = "function settings() view returns (bool lockedOnly, uint64 backingRatio, uint64 vestingRatio, uint64 vestingPeriod)" - -const BONE_TOKEN = "0x9813037ee2218799597d83D4a5B6F3b6778218d9"; -const BONE_CONTRACT = "0x3358FCA51d7C0408750FBbE7777012E0b67C027F"; - -const REAL_YIELD_STAKING = "0xe13824Fb7b206E585c775B30431600528572C3E7"; -const KNINE_TOKEN = "0x91fbB2503AC69702061f1AC6885759Fc853e6EaE"; - -const FARMING_FABRIC = "0x8ed1A7c4736b5835560b0f9E961B8E3581774D42"; - -const VESTING = "0xf7384ba80A51979eC8cc0F17a843089ffD706f0a"; - -async function tvl(api) { - const bonesBalance = await api.call({ abi: "uint256:getTotalPooledBONE", target: BONE_CONTRACT, }); - // api.addToken(BONE_TOKEN, bonesBalance); - api.addCGToken('bone-shibaswap', bonesBalance / 1e18) -} - -async function pool2(api) { - const poolsAddresses = await api.call({ abi: "address[]:getAllCreatedPools", target: FARMING_FABRIC, }); - - const tokens = await api.multiCall({ abi: "address:pool", calls: poolsAddresses, }); - const bals = await api.multiCall({ abi: "uint256:intermediate", calls: poolsAddresses, }); - api.add(tokens, bals) - return sumUnknownTokens({ api, lps: tokens, useDefaultCoreAssets: true, resolveLP: true, }) -} - -async function vesting(api) { - const vestingSettings = await api.call({ abi: vestingSettingsAbi, target: VESTING, }); - const esKNINEAddress = await api.call({ abi: "address:esKNINE", target: VESTING, }); - - const esKNINEBalance = await api.call({ abi: "erc20:balanceOf", target: esKNINEAddress, params: VESTING, }); - const vestingRatio = vestingSettings[2]; - - const KNINEAmount = esKNINEBalance * vestingRatio / 100 - api.addToken(KNINE_TOKEN, KNINEAmount); - return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: ['0xF3452bCdEcaDa5E08ce56EC3D2BF8e35ECFFFF91'], }) -} -async function staking(api) { - const bal = await api.call({ abi: "erc20:balanceOf", target: KNINE_TOKEN, params: REAL_YIELD_STAKING, }); - - api.addToken(KNINE_TOKEN, bal); - return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: ['0xF3452bCdEcaDa5E08ce56EC3D2BF8e35ECFFFF91'],}) -} - -module.exports = { - methodology: - "Counts the liquidity locked inside the K9 Finance DAO protocol, including: the BONE amount locked at the Liquid Staking, the KNINE amount locked at the Real Yield Staking, the KNINE amount locked at the Vesting, the LP tokens locked at the Farming.", - ethereum: { - tvl, - }, - shibarium: { - staking, - pool2, - vesting, - }, -}; diff --git a/projects/kaDefi/index.js b/projects/kaDefi/index.js deleted file mode 100644 index c38d70cbd09..00000000000 --- a/projects/kaDefi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens'); - -const WkavaKafiLpAddress = "0xA4Bea6f776f483a304FD6980F8F8c861AB24DE07"; -const ERC20ContractWkavaAddress = ADDRESSES.kava.WKAVA; -const ERC20ContractKafiAddress = "0x7356deD08af181869B492fcd641f4aEfB74De3E7"; -const POL_Pool_One = "0xdf65B85E43dBa1F153325e7e4A0682B7DeBBFe0f"; -const POL_Pool_Two = "0x738d2b4b59A0A3AA4086bC44C40a45845bB73FCC"; - -module.exports = { - kava: { - tvl: sumTokensExport({ owners: [POL_Pool_One, POL_Pool_Two], tokens: [ERC20ContractWkavaAddress], }), - staking: sumTokensExport({ owners: [POL_Pool_One, POL_Pool_Two], tokens: [ERC20ContractKafiAddress], useDefaultCoreAssets: true, lps: [WkavaKafiLpAddress], }), - } -}; - - diff --git a/projects/kaco/index.js b/projects/kaco/index.js deleted file mode 100644 index 7e1da4c2d61..00000000000 --- a/projects/kaco/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const KACMasterChefContract = { - bsc: "0x81b71D0bC2De38e37978E6701C342d0b7AA67D59", - shiden: "0x293A7824582C56B0842535f94F6E3841888168C8", -}; -const KACFactory = { - bsc: "0xa5e48a6E56e164907263e901B98D9b11CCB46C47", - shiden: "0xcd8620889c1dA22ED228e6C00182177f9dAd16b7", -}; -const KAC = { - bsc: "0xf96429A7aE52dA7d07E60BE95A3ece8B042016fB", - shiden: ADDRESSES.harmony.AVAX, -}; - - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': KACFactory.bsc, - 'shiden': KACFactory.shiden, -}, { - staking: { - bsc: [KACMasterChefContract.bsc, KAC.bsc], - shiden: [KACMasterChefContract.shiden, KAC.shiden], - }, -}) \ No newline at end of file diff --git a/projects/kaddex/index.js b/projects/kaddex/index.js deleted file mode 100644 index 53e6a671350..00000000000 --- a/projects/kaddex/index.js +++ /dev/null @@ -1,177 +0,0 @@ -const { fetchLocal, mkMeta } = require("../helper/pact"); - -const chainId = "2"; -const network = `https://api.chainweb.com/chainweb/0.0/mainnet01/chain/${chainId}/pact`; -const GAS_PRICE = 0.00000001; -const creationTime = () => Math.round(new Date().getTime() / 1000) - 10; - -const getReserve = (tokenData) => { - return parseFloat(tokenData.decimal ? tokenData.decimal : tokenData); -}; - -const pairTokens = { - "coin:runonflux.flux": { - name: "coin:runonflux.flux", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "FLUX", - code: "runonflux.flux", - }, - }, - "coin:hypercent.prod-hype-coin": { - name: "coin:hypercent.prod-hype-coin", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "HYPE", - code: "hypercent.prod-hype-coin", - }, - }, - "coin:mok.token": { - name: "coin:mok.token", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "MOK", - code: "mok.token", - }, - }, - // "coin:lago.kwUSDC": { - // name: "coin:lago.kwUSDC", - // token0: { - // name: "KDA", - // code: "coin", - // }, - // token1: { - // name: "USDC", - // code: "lago.kwUSDC", - // }, - // }, - "coin:kaddex.kdx": { - name: "coin:kaddex.kdx", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "KDX", - code: "kaddex.kdx", - }, - }, - "coin:kdlaunch.token": { - name: "coin:kdlaunch.token", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "KDL", - code: "kdlaunch.token", - }, - }, - "coin:kdlaunch.kdswap-token": { - name: "coin:kdlaunch.kdswap-token", - token0: { - name: "KDA", - code: "coin", - }, - token1: { - name: "KDS", - code: "kdlaunch.kdswap-token", - }, - }, -}; - -const getPairList = async () => { - const pairList = await Promise.all( - Object.values(pairTokens).map(async (pair) => { - let data = await fetchLocal( - { - pactCode: ` - (use kaddex.exchange) - (let* - ( - (p (get-pair ${pair.token0.code} ${pair.token1.code})) - (reserveA (reserve-for p ${pair.token0.code})) - (reserveB (reserve-for p ${pair.token1.code})) - (totalBal (kaddex.tokens.total-supply (kaddex.exchange.get-pair-key ${pair.token0.code} ${pair.token1.code}))) - )[totalBal reserveA reserveB]) - `, - meta: mkMeta("", chainId, GAS_PRICE, 3000, creationTime(), 600), - }, - network - ); - - return { - reserves: [ - getReserve(data.result.data[1]), - getReserve(data.result.data[2]), - pair.token0.code, - pair.token1.code, - ], - }; - }) - ); - return pairList; -}; - -const getStakedKDXValueInKDA = async (pairList) => { - const stakedData = await fetchLocal( - { - pactCode: `(kaddex.staking.get-pool-state)`, - meta: mkMeta("", chainId, GAS_PRICE, 3000, creationTime(), 600), - }, - network - ); - const stakedValue = getReserve( - (stakedData?.result?.data && stakedData?.result?.data["staked-kdx"]) || 0 - ); - const kdxPool = pairList.find((pair) => pair.reserves[3] === "kaddex.kdx"); - const kdxPrice = kdxPool.reserves[0] / kdxPool.reserves[1] || 0; - const stakedKDXValue = kdxPrice * stakedValue; - return stakedKDXValue; -}; - -const fetchKdaTotal = async (pairList) => { - let totalKda = 0; - for (const pair of pairList) { - const kdaInPool = pair.reserves[0]; - const tokenInPoolInKdaRate = pair.reserves[0] / pair.reserves[1] || 0; - totalKda += - kdaInPool + - tokenInPoolInKdaRate * pair.reserves[1]; /** equal to do (kda*2) */ - } - return totalKda; -}; - -async function tvl() { - const pairList = await getPairList(); - const kdaTotal = await fetchKdaTotal(pairList); - return { - kadena: kdaTotal, - }; -} - -async function staking() { - const pairList = await getPairList(); - const stakedKdxValue = await getStakedKDXValueInKDA(pairList); - return { - kadena: stakedKdxValue, - }; -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - kadena: { - tvl: tvl, - staking: staking - }, -}; diff --git a/projects/kafefinance/index.js b/projects/kafefinance/index.js deleted file mode 100644 index f441288c341..00000000000 --- a/projects/kafefinance/index.js +++ /dev/null @@ -1,12 +0,0 @@ - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - cronos: { - tvl: () => ({}), - }, - moonriver: { - tvl: () => ({}), - }, - deadFrom: '2022-10-01' -} diff --git a/projects/kafidao/index.js b/projects/kafidao/index.js deleted file mode 100644 index e2b8c026364..00000000000 --- a/projects/kafidao/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -const chef = "0x58a8E42C071b9C9d049F261E75DE5568Ef81a427" -module.exports = masterchefExports({ chain: 'kava', masterchef: chef, useDefaultCoreAssets: true, nativeToken: '0x254B63C7481A16bC4080f0Ab369320004f79Cca3', poolInfoABI: 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accKfdPerShare)' }) \ No newline at end of file diff --git a/projects/kagla/abi/addressProvider.json b/projects/kagla/abi/addressProvider.json deleted file mode 100644 index fe8ec1d824f..00000000000 --- a/projects/kagla/abi/addressProvider.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "get_registry": "address:get_registry" -} \ No newline at end of file diff --git a/projects/kagla/abi/registry.json b/projects/kagla/abi/registry.json deleted file mode 100644 index 2008de39a43..00000000000 --- a/projects/kagla/abi/registry.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pool_count": "uint256:pool_count", - "pool_list": "function pool_list(uint256 arg0) view returns (address)", - "get_coins": "function get_coins(address _pool) view returns (address[8])", - "get_balances": "function get_balances(address _pool) view returns (uint256[8])" -} \ No newline at end of file diff --git a/projects/kagla/addresses.js b/projects/kagla/addresses.js deleted file mode 100644 index b51f3ce4cb0..00000000000 --- a/projects/kagla/addresses.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const ADDRESS_PROVIDER_ADDRESS = "0x5a0ad8337E5C6895b3893E80c8333859DAcf7c01" -const KGL_ADDRESS = ADDRESSES.astar.KGL -const VOTING_ESCROW_ADDRESS = "0x432c8199F548425F7d5746416D98126E521e8174" - -module.exports = { - ADDRESS_PROVIDER_ADDRESS, - VOTING_ESCROW_ADDRESS, - KGL_ADDRESS, -} diff --git a/projects/kagla/index.js b/projects/kagla/index.js deleted file mode 100644 index 33ce09c66f9..00000000000 --- a/projects/kagla/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getBalances } = require("./pools"); -const { VOTING_ESCROW_ADDRESS, KGL_ADDRESS, } = require("./addresses"); -const { staking } = require('../helper/staking') - -const START_BLOCK = 724359 - -async function astar(api) { - return getBalances(api) -} - -module.exports = { - start: START_BLOCK, - astar: { - tvl: astar, - staking: staking(VOTING_ESCROW_ADDRESS, KGL_ADDRESS) - }, -}; diff --git a/projects/kagla/pools.js b/projects/kagla/pools.js deleted file mode 100644 index 183c19b00ae..00000000000 --- a/projects/kagla/pools.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const addressProviderABI = require("./abi/addressProvider.json"); -const registryABI = require("./abi/registry.json"); -const { ADDRESS_PROVIDER_ADDRESS, } = require("./addresses"); - -const getBalances = async (api) => { - const registry = await api.call({ target: ADDRESS_PROVIDER_ADDRESS, abi: addressProviderABI["get_registry"], }) - const poolAddresses = await api.fetchList({ lengthAbi: registryABI["pool_count"], itemAbi: registryABI["pool_list"], target: registry }) - - const poolCoinsArray = await api.multiCall({ target: registry, calls: poolAddresses, abi: registryABI["get_coins"], }) - const ownerTokens = poolCoinsArray.map((v, i) => [v.filter(i => i !== nullAddress), poolAddresses[i]]) - return sumTokens2({ api, ownerTokens, blacklistedTokens: poolAddresses }) -} - -module.exports = { - getBalances -} diff --git a/projects/kai/index.js b/projects/kai/index.js deleted file mode 100644 index 366af1f0da1..00000000000 --- a/projects/kai/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); - -const wUsdcVault = { - id: '0x7a2f75a3e50fd5f72dfc2f8c9910da5eaa3a1486e4eb1e54a825c09d82214526', - tType: ADDRESSES.sui.USDC -} -const wUsdtVault = { - id: '0x0fce8baed43faadf6831cd27e5b3a32a11d2a05b3cd1ed36c7c09c5f7bcb4ef4', - tType: ADDRESSES.sui.USDT -} -const SuiVault = { - id: '0x16272b75d880ab944c308d47e91d46b2027f55136ee61b3db99098a926b3973c', - tType: ADDRESSES.sui.SUI -} -const pausedUsdcVault = { - id: '0x5663035df5f403ad5a015cc2a3264de30370650bc043c4dab4d0012ea5cb7671', - tType: ADDRESSES.sui.USDC_CIRCLE -} -const pausedSuiUsdtVault = { - id: '0x7a2e56773ad4d9bd4133c67ed0ae60187f00169b584a55c0204175897e41d166', - tType: ADDRESSES.sui.suiUSDT -} -const usdyVault = { - id: '0x02ec915b35fb958ca9a7d94e57d7254513ff711832ba8aebfc0ac3395152260b', - tType: ADDRESSES.sui.USDY -} -const deepVault = { - id: '0x6e58792dccbaa1d1d708d9a847a7c5b3f90c7878d1b76fd79afa48d31063bca6', - tType: ADDRESSES.sui.DEEP -} -const UsdcVault = { - id: '0x3e8a6d1e29d2c86aed50d6055863b878a7dd382de22ea168177c80c1d7150061', - tType: ADDRESSES.sui.USDC_CIRCLE -} -const suiUsdtVault = { - id: '0xbfcab5f22e253be0768e2cc5e75e170c5266edf7b68c813af0d676e84285681c', - tType: ADDRESSES.sui.suiUSDT -} -const walVault = { - id: '0x4ee20ca2594e137a1388d5de03c0b1f3dd7caddefb4c55b1c7bca15d0fe18c86', - tType: '0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL' -} -const wbtcVault = { - id: '0x5674aae155d38e09edaf3163f2e3f85fe77790f484485f0b480ca55915d7c446', - tType: '0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC' -} -const lbtcVault = { - id: '0x362ce1fc1425ec0bdf958f2023b07cda52c924fa42e4ff88a9a48c595fd8437d', - tType: '0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040::lbtc::LBTC' -} -const xbtcVault = { - id: '0x653beede5a005272526f0c835c272ef37491dc5bff3f8e466175e02675510137', - tType: '0x876a4b7bce8aeaef60464c11f4026903e9afacab79b9b142686158aa86560b50::xbtc::XBTC' -} - -async function tvl(api) { - const vaults = [ - wUsdcVault, wUsdtVault, SuiVault, pausedUsdcVault, pausedSuiUsdtVault, - usdyVault, deepVault, UsdcVault, suiUsdtVault, walVault, wbtcVault, lbtcVault, - xbtcVault - ] - const vaultObjs = await sui.getObjects(vaults.map(v => v.id)) - - for (let i = 0; i < vaults.length; i++) { - const vault = vaults[i] - const vaultObj = vaultObjs[i] - - let tvl = BigInt(vaultObj.fields.free_balance) - for (const strategy of vaultObj.fields.strategies.fields.contents) { - tvl += BigInt(strategy.fields.value.fields.borrowed) - } - - api.add(vault.tType, Number(tvl)) - } -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; - diff --git a/projects/kaiafun/index.js b/projects/kaiafun/index.js deleted file mode 100644 index c045193c922..00000000000 --- a/projects/kaiafun/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); - -// Canonical WKLAY -const WKLAY = '0x19aac5f612f524b754ca7e7c41cbfa2e981a4432'; - -module.exports.klaytn = { - methodology: 'TVL counts Canonical WKLAY coins in KaiaFun\'s Core Contract.', - tvl: sumTokensExport({ - owners: ["0x080f8b793fe69fe9e65b5ae17b10f987c95530bf"], - tokens: [WKLAY] - }), -}; diff --git a/projects/kaiaswap/index.js b/projects/kaiaswap/index.js deleted file mode 100644 index 9433737d09b..00000000000 --- a/projects/kaiaswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'klaytn': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], - -} // liquidityManager contracts - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain] }), } -}) \ No newline at end of file diff --git a/projects/kaidex/index.js b/projects/kaidex/index.js deleted file mode 100644 index 9ed941fe566..00000000000 --- a/projects/kaidex/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -const sdk = require('@defillama/sdk') -const factories = [ - '0x64203f29f4d6a7e199b6f6afbe65f1fa914c7c4e', // v2 - '0xC9567a8B6b622cdc8076C6b4432Ade0e11F50Da1', // v3 -] - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://becoswap.com/info as the source. Staking accounts for the BECO locked in MasterChef (0x20e8Ff1e1d9BC429489dA76B1Fc20A9BFbF3ee7e)', - kardia: { - tvl: sdk.util.sumChainTvls(factories.map(factory => getUniTVL({ - useDefaultCoreAssets: true, - factory, - }))) - }, -}; diff --git a/projects/kaisen/index.js b/projects/kaisen/index.js deleted file mode 100644 index 0be9976071e..00000000000 --- a/projects/kaisen/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: "TVL comes from the Vaults", - blast: { - tvl: sumTokensExport({ - owner: "0xd97cbc833643dc458849d5b96dea100f13b08402", - resolveUniV3: true, - }), - }, -}; diff --git a/projects/kalata/index.js b/projects/kalata/index.js deleted file mode 100644 index b0de3e25e8e..00000000000 --- a/projects/kalata/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const kala = '0x32299c93960bb583a43c2220dc89152391a610c5' -const masterchef = '0x565bCba3eA730ac6987edE126B29DCf499fccEA1' - -async function tvl(api) { - return sumTokens2({ - api, ownerTokens: [ - [[ADDRESSES.bsc.BUSD], '0x2d067575BE1f719f0b0865D357e67925B6f461C5'], // BUSD mint - [[ - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.ETH, - "0x23396cf899ca06c4472205fc903bdb4de249d6fc", - ADDRESSES.bsc.USDC, - "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.BUSD, - "0x5066c68cae3b9bdacd6a1a37c90f2d1723559d18",], masterchef], - ] - }) -} - -module.exports = { - bsc: { - tvl: sdk.util.sumChainTvls([getUniTVL({ factory: '0xa265535863305ce0a2a8ec330c2cec972aca3004', useDefaultCoreAssets: true, }), tvl]), - staking: staking(masterchef, kala), - } -} \ No newline at end of file diff --git a/projects/kalax/index.js b/projects/kalax/index.js deleted file mode 100644 index 19c958045cb..00000000000 --- a/projects/kalax/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs") - -const blastKalax = "0x2F67F59b3629Bf24962290DB9edE0CD4127e606D" -const blastfarms = ['0xE63153C3360aCa0F4e7Ca7A1FC61c2215FAEF5A1', '0xFe899401A1d86cC1113020fb40878c76239142a5',"0x1CB8f6cecf7c8FBB9863417f8371Cb2A076C9115"] -const scrollKalax = "0x1f4F171676f8cb3B1C3FD38867B3B160679F934A" -const scrollFarms = ['0xB99AeDd16714A7393768273F9AbFF4C4F48980eD'] - -async function tvl(api) { - let farms = api.chain === 'blast'?blastfarms:scrollFarms - let kalax = api.chain === 'blast'?blastKalax:scrollKalax - - let pools = (await api.multiCall({ abi: abiInfo.poolInfos, calls: farms })).flat() - if(api.chain === 'blast'){ - pools - .filter((i) => i.assets !== kalax) - .forEach((i) => api.add(i.assets, i.tvl)) - }else{ - pools - .filter((i) => i.assets !== kalax) - .forEach((i)=>{ - if(i.assets === ADDRESSES.linea.WETH_1){ - i.assets =ADDRESSES.null - } - api.add(i.assets, i.tvl) - }) - } - - return sumTokens2({ api, resolveLP: true }) -} - - -const usdt = ADDRESSES.scroll.USDT -const scrollKalaLp = "0x4fc09BE6eB49764CcAE4e95Bd2B93f67a34c0188" -async function staking(api) { - let farms = api.chain === 'blast'?blastfarms:scrollFarms - let kalax = api.chain === 'blast'?blastKalax:scrollKalax - - let pools = (await api.multiCall({ abi: abiInfo.poolInfos, calls: farms })).flat() - if(api.chain === 'blast'){ - pools.filter((i) => i.assets === kalax).forEach((i) => api.add(i.assets, i.tvl)) - }else{ - let pool = pools.find(i=>i.assets === kalax) - let poolTvl = pool.tvl - let sqrtPriceX96 =await api.call({ - abi:abiInfo.state, - target:scrollKalaLp - }) - let p = (sqrtPriceX96 / 2 ** 96) ** 2 - let rate = p * 10**12 - let usdtNum = poolTvl/10**18 * rate * 10**6 - api.add(usdt,usdtNum) - } -} - -module.exports = { - // hallmarks:[ - // [1728777600,'Rugpull'] - // ], - blast: { - tvl, - staking, - }, - scroll:{ - tvl, - staking - } -} - -const abiInfo = { - poolInfos: - "function getPoolTotalTvl() view returns (tuple(uint256 pid, address assets, uint256 tvl)[])", - state: - "function state()external view returns(uint160 sqrtPrice_96)" -} diff --git a/projects/kaleidoswap/index.js b/projects/kaleidoswap/index.js deleted file mode 100644 index 11a3a503f25..00000000000 --- a/projects/kaleidoswap/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { transformDexBalances } = require('../helper/portedTokens') - -const config = { - xai: { factory: '0x6858a6c3484b7b033B748261e550FC20c479b063', fromBlock: 374538 }, - arbitrum: { factory: '0x427a733Bd14a949eA771a558f6934bB0004c0c4E', fromBlock: 181235376 }, -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) - - -async function tvl(api) { - const { factory, fromBlock } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], - eventAbi: 'event PairCreated(address indexed token0, address indexed token1, address pair, uint256 )', - onlyArgs: true, - fromBlock, - }) - const tok0Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: logs.map(i => ({ target: i.token0, params: i.pair })) }) - const tok1Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: logs.map(i => ({ target: i.token1, params: i.pair })) }) - return transformDexBalances({ - chain: api.chain, data: logs.map((log, i) => ({ - token0: log.token0, - token0Bal: tok0Bals[i], - token1: log.token1, - token1Bal: tok1Bals[i], - })) - }) -} \ No newline at end of file diff --git a/projects/kalmy-app/abi.json b/projects/kalmy-app/abi.json deleted file mode 100644 index 307b2644031..00000000000 --- a/projects/kalmy-app/abi.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "vaultDebtVal": "uint256:vaultDebtVal", - "totalToken": "uint256:totalToken", - "reservePool": "uint256:reservePool", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "totalSupply": "uint256:totalSupply", - "totalETH": "uint256:totalETH", - "totalBEP20": "uint256:totalBEP20", - "lpToken": "address:lpToken", - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)", - "pId": "uint256:pid", - "ausdTotalStablecoinIssued": "uint256:totalStablecoinIssued", - "xalpacaTotalSupply": "uint256:supply" -} \ No newline at end of file diff --git a/projects/kalmy-app/index.js b/projects/kalmy-app/index.js deleted file mode 100644 index dec6d900a35..00000000000 --- a/projects/kalmy-app/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs") -const { getConfig } = require("../helper/cache"); -const { nullAddress } = require("../helper/tokenMapping"); - -async function getProcolAddresses(api) { - const chain = api.chain - let key = chain - if (chain === 'fantom') key = 'ftm' - return (await getConfig('kalmy-app/' + chain, - `https://raw.githubusercontent.com/kalmar-io/kalmar-assets/main/data/${key}-kalmar-contract.json` - )) -} - -async function tvl(api) { - const addresses = await getProcolAddresses(api) - - if (api.chain === 'bsc') { - const calls = [] - const tokens = [] - - const tokensAndOwners = addresses['Liquidity'].map((v) => [v['stakingToken'], v['stakingTokenAt']]) - - for (let i = 0; i < addresses['Vaults'].length; i++) { - calls.push(...addresses['Vaults'][i]['workers'].map((worker) => { - return { - target: worker['stakingTokenAt'], - params: [worker['pId'], worker['address']] - } - })) - tokens.push(...addresses['Vaults'][i]['workers'].map((worker) => worker['stakingToken'])) - } - const bals = await api.multiCall({ abi: abi.userInfo, calls }) - api.add(tokens, bals.map(i => i.amount)) - const vaultTokensAndOwners = addresses['Vaults'].map((v) => [v['baseToken'], v['address']]) - tokensAndOwners.push(...vaultTokensAndOwners) - const vBNB = addresses['Vaults'].filter((v) => v['symbol'] === 'iBNB')[0] - if (vBNB) tokensAndOwners.push([nullAddress, vBNB]) - } - return sumTokens2({ api, resolveLP: true, }) -} - - -async function staking(api) { - const addresses = await getProcolAddresses(api) - const tokensAndOwners = addresses['Staking'].map((s) => [s['stakingToken'], s['address']]) - return api.sumTokens({ tokensAndOwners }) -} - -module.exports = { - bsc: { tvl, staking, }, - fantom: { tvl, staking, }, - avax: { tvl, staking, }, -} \ No newline at end of file diff --git a/projects/kamigotchi/index.js b/projects/kamigotchi/index.js deleted file mode 100644 index 1a14a7592d8..00000000000 --- a/projects/kamigotchi/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { get } = require('../helper/http.js'); - -const url = "https://rest-yominet-1.anvil.asia-southeast.initia.xyz/cosmos/bank/v1beta1/supply" - -const ONYX = { - address: "evm/4BaDFb501Ab304fF11217C44702bb9E9732E7CF4", - decimals: 18, - id: "kamigotchi-onyx", -} - -module.exports = { - timetravel: false, - yomi: { - tvl: async () => { - const balances = {} - const res = await get(url) - - res.supply.map(({ denom, amount }) => { - let id; - if (denom.startsWith("evm/")) { - id = `yomi:${denom.replace("evm/", "0x")}` - } else if (denom.startsWith("ibc/")) { - id = denom.replace("/", ":") - } - balances[id] = amount - }) - - return balances - }, - staking: async () => { - const res = await get(url) - const data = res.supply.find(asset => asset.denom == ONYX.address) - - return { - [ONYX.id]: data.amount / 10 ** ONYX.decimals - } - } - }, -}; \ No newline at end of file diff --git a/projects/kamino-lending/index.js b/projects/kamino-lending/index.js deleted file mode 100644 index 6a37a12b93d..00000000000 --- a/projects/kamino-lending/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const { PublicKey } = require('@solana/web3.js'); -const { getConnection, sumTokens2 } = require('../helper/solana'); -const { Program } = require('@project-serum/anchor'); -const kaminoIdl = require('./kamino-lending-idl.json'); -const { MintLayout } = require("../helper/utils/solana/layouts/mixed-layout"); -const { getConfig } = require('../helper/cache') - -async function tvl() { - const connection = getConnection(); - const programId = new PublicKey('KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD'); - const markets = (await getConfig('kamino-lending', 'https://api.kamino.finance/v2/kamino-market')).map(x => x.lendingMarket); - const lendingMarketAuthSeed = 'lma'; - const tokensAndOwners = []; - const ktokens = {}; - - const kaminoLendProgram = new Program(kaminoIdl, programId, { connection, publicKey: PublicKey.unique() }); - for (const market of markets) { - const reserves = await kaminoLendProgram.account.reserve.all([ - { dataSize: 8624 }, - { memcmp: { offset: 32, bytes: market } }, - ]); - - for (const reserveData of reserves) { - const reserve = reserveData.account; - if ( - ktokens[reserve.liquidity.mintPubkey] || - (await isKToken(new PublicKey(reserve.liquidity.mintPubkey), connection)) - ) { - ktokens[reserve.liquidity.mintPubkey] = true; - } else { - ktokens[reserve.liquidity.mintPubkey] = false; - const [authority] = PublicKey.findProgramAddressSync( - [Buffer.from(lendingMarketAuthSeed), new PublicKey(market).toBuffer()], - programId - ); - tokensAndOwners.push([reserve.liquidity.mintPubkey, authority]); - } - } - } - return sumTokens2({ tokensAndOwners }) -} - -async function isKToken(mint, connection) { - const mintInfo = await connection.getAccountInfo(new PublicKey(mint.toString())); - const rawMint = MintLayout.decode(mintInfo.data.slice(0, MintLayout.span)); - const KAMINO_PROGRAM_ID = new PublicKey('6LtLpnUFNByNXLyCoK9wA2MykKAmQNZKBdY8s47dehDc'); - const [expectedMintAuthority] = PublicKey.findProgramAddressSync( - [Buffer.from('authority'), mint.toBuffer()], - KAMINO_PROGRAM_ID - ); - return rawMint.mintAuthority !== null && rawMint.mintAuthority.equals(expectedMintAuthority); -} - -async function borrowed(api) { - const connection = getConnection(); - const programId = new PublicKey('KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD'); - const markets = (await getConfig('kamino-lending', 'https://api.kamino.finance/v2/kamino-market')).map(x => x.lendingMarket); - const ktokens = {}; - - const kaminoLendProgram = new Program(kaminoIdl, programId, { connection, publicKey: PublicKey.unique() }); - - for (const market of markets) { - const reserves = await kaminoLendProgram.account.reserve.all([ - { dataSize: 8624 }, - { memcmp: { offset: 32, bytes: market } }, - ]); - for (const reserveData of reserves) { - const reserve = reserveData.account; - - // Skip kTokens like in the tvl function - if ( - ktokens[reserve.liquidity.mintPubkey] || - (await isKToken(new PublicKey(reserve.liquidity.mintPubkey), connection)) - ) { - ktokens[reserve.liquidity.mintPubkey] = true; - } else { - ktokens[reserve.liquidity.mintPubkey] = false; - - // Calculate borrowed amount using this formula - // liquidity.borrowedAmountSf / 2**60 / 10**liquidity.mintDecimals - const borrowedAmountSf = reserve.liquidity.borrowedAmountSf; - const borrowedAmount = borrowedAmountSf / Math.pow(2, 60) - - api.add(reserve.liquidity.mintPubkey.toString(), borrowedAmount); - } - } - } -} - -module.exports = { - timetravel: false, - solana: { - tvl, - borrowed, - }, - methodology: 'TVL consists of deposits made to the protocol, and borrowed tokens are counted.', -}; diff --git a/projects/kamino-lending/kamino-lending-idl.json b/projects/kamino-lending/kamino-lending-idl.json deleted file mode 100644 index d8c1d17e9ce..00000000000 --- a/projects/kamino-lending/kamino-lending-idl.json +++ /dev/null @@ -1,875 +0,0 @@ -{ - "version": "0.1.0", - "name": "kamino_lending", - "instructions": [], - "accounts": [ - { - "name": "Reserve", - "type": { - "kind": "struct", - "fields": [ - { - "name": "version", - "docs": [ - "Version of the reserve" - ], - "type": "u64" - }, - { - "name": "lastUpdate", - "docs": [ - "Last slot when supply and rates updated" - ], - "type": { - "defined": "LastUpdate" - } - }, - { - "name": "lendingMarket", - "docs": [ - "Lending market address" - ], - "type": "publicKey" - }, - { - "name": "farmCollateral", - "type": "publicKey" - }, - { - "name": "farmDebt", - "type": "publicKey" - }, - { - "name": "liquidity", - "docs": [ - "Reserve liquidity" - ], - "type": { - "defined": "ReserveLiquidity" - } - }, - { - "name": "reserveLiquidityPadding", - "type": { - "array": [ - "u64", - 150 - ] - } - }, - { - "name": "collateral", - "docs": [ - "Reserve collateral" - ], - "type": { - "defined": "ReserveCollateral" - } - }, - { - "name": "reserveCollateralPadding", - "type": { - "array": [ - "u64", - 150 - ] - } - }, - { - "name": "config", - "docs": [ - "Reserve configuration values" - ], - "type": { - "defined": "ReserveConfig" - } - }, - { - "name": "configPadding", - "type": { - "array": [ - "u64", - 150 - ] - } - }, - { - "name": "padding", - "type": { - "array": [ - "u64", - 240 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "LastUpdate", - "docs": [ - "Last update state" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "slot", - "docs": [ - "Last slot when updated" - ], - "type": "u64" - }, - { - "name": "stale", - "docs": [ - "True when marked stale, false when slot updated" - ], - "type": "u8" - }, - { - "name": "placeholder", - "type": { - "array": [ - "u8", - 7 - ] - } - } - ] - } - }, - { - "name": "BigFractionBytes", - "type": { - "kind": "struct", - "fields": [ - { - "name": "value", - "type": { - "array": [ - "u64", - 4 - ] - } - }, - { - "name": "padding", - "type": { - "array": [ - "u64", - 2 - ] - } - } - ] - } - }, - { - "name": "ReserveLiquidity", - "docs": [ - "Reserve liquidity" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "mintPubkey", - "docs": [ - "Reserve liquidity mint address" - ], - "type": "publicKey" - }, - { - "name": "supplyVault", - "docs": [ - "Reserve liquidity supply address" - ], - "type": "publicKey" - }, - { - "name": "feeVault", - "docs": [ - "Reserve liquidity fee collection address" - ], - "type": "publicKey" - }, - { - "name": "availableAmount", - "docs": [ - "Reserve liquidity available" - ], - "type": "u64" - }, - { - "name": "borrowedAmountSf", - "docs": [ - "Reserve liquidity borrowed (scaled fraction)" - ], - "type": "u128" - }, - { - "name": "marketPriceSf", - "docs": [ - "Reserve liquidity market price in quote currency (scaled fraction)" - ], - "type": "u128" - }, - { - "name": "marketPriceLastUpdatedTs", - "docs": [ - "Unix timestamp of the market price (from the oracle)" - ], - "type": "u64" - }, - { - "name": "mintDecimals", - "docs": [ - "Reserve liquidity mint decimals" - ], - "type": "u64" - }, - { - "name": "depositLimitCrossedSlot", - "docs": [ - "Timestamp in slots when the last refresh reserve detected that the liquidity amount is above the deposit cap. When this threshold is crossed, then redemptions (auto-deleverage) are enabled.", - "If the threshold is not crossed, then the timestamp is set to 0" - ], - "type": "u64" - }, - { - "name": "borrowLimitCrossedSlot", - "docs": [ - "Timestamp in slots when the last refresh reserve detected that the borrowed amount is above the borrow cap. When this threshold is crossed, then redemptions (auto-deleverage) are enabled.", - "If the threshold is not crossed, then the timestamp is set to 0" - ], - "type": "u64" - }, - { - "name": "cumulativeBorrowRateBsf", - "docs": [ - "Reserve liquidity cumulative borrow rate (scaled fraction)" - ], - "type": { - "defined": "BigFractionBytes" - } - }, - { - "name": "accumulatedProtocolFeesSf", - "docs": [ - "Reserve cumulative protocol fees (scaled fraction)" - ], - "type": "u128" - }, - { - "name": "accumulatedReferrerFeesSf", - "docs": [ - "Reserve cumulative referrer fees (scaled fraction)" - ], - "type": "u128" - }, - { - "name": "pendingReferrerFeesSf", - "docs": [ - "Reserve pending referrer fees, to be claimed in refresh_obligation by referrer or protocol (scaled fraction)" - ], - "type": "u128" - }, - { - "name": "absoluteReferralRateSf", - "docs": [ - "Reserve referrer fee absolute rate calculated at each refresh_reserve operation (scaled fraction)" - ], - "type": "u128" - }, - { - "name": "padding2", - "type": { - "array": [ - "u64", - 55 - ] - } - }, - { - "name": "padding3", - "type": { - "array": [ - "u128", - 32 - ] - } - } - ] - } - }, - { - "name": "ReserveCollateral", - "docs": [ - "Reserve collateral" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "mintPubkey", - "docs": [ - "Reserve collateral mint address" - ], - "type": "publicKey" - }, - { - "name": "mintTotalSupply", - "docs": [ - "Reserve collateral mint supply, used for exchange rate" - ], - "type": "u64" - }, - { - "name": "supplyVault", - "docs": [ - "Reserve collateral supply address" - ], - "type": "publicKey" - }, - { - "name": "padding1", - "type": { - "array": [ - "u128", - 32 - ] - } - }, - { - "name": "padding2", - "type": { - "array": [ - "u128", - 32 - ] - } - } - ] - } - }, - { - "name": "ReserveConfig", - "docs": [ - "Reserve configuration values" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "status", - "docs": [ - "Status of the reserve Active/Obsolete/Hidden" - ], - "type": "u8" - }, - { - "name": "assetTier", - "docs": [ - "Asset tier -> 0 - regular (collateral & debt), 1 - isolated collateral, 2 - isolated debt" - ], - "type": "u8" - }, - { - "name": "reserved0", - "type": { - "array": [ - "u8", - 2 - ] - } - }, - { - "name": "multiplierSideBoost", - "docs": [ - "Boost for side (debt or collateral)" - ], - "type": { - "array": [ - "u8", - 2 - ] - } - }, - { - "name": "multiplierTagBoost", - "docs": [ - "Reward points multiplier per obligation type" - ], - "type": { - "array": [ - "u8", - 8 - ] - } - }, - { - "name": "protocolTakeRatePct", - "docs": [ - "Protocol take rate is the amount borrowed interest protocol receives, as a percentage" - ], - "type": "u8" - }, - { - "name": "protocolLiquidationFeePct", - "docs": [ - "Cut of the liquidation bonus that the protocol receives, as a percentage" - ], - "type": "u8" - }, - { - "name": "loanToValuePct", - "docs": [ - "Target ratio of the value of borrows to deposits, as a percentage", - "0 if use as collateral is disabled" - ], - "type": "u8" - }, - { - "name": "liquidationThresholdPct", - "docs": [ - "Loan to value ratio at which an obligation can be liquidated, as percentage" - ], - "type": "u8" - }, - { - "name": "minLiquidationBonusBps", - "docs": [ - "Minimum bonus a liquidator receives when repaying part of an unhealthy obligation, as bps" - ], - "type": "u16" - }, - { - "name": "maxLiquidationBonusBps", - "docs": [ - "Maximum bonus a liquidator receives when repaying part of an unhealthy obligation, as bps" - ], - "type": "u16" - }, - { - "name": "badDebtLiquidationBonusBps", - "docs": [ - "Bad debt liquidation bonus for an undercollateralized obligation, as bps" - ], - "type": "u16" - }, - { - "name": "deleveragingMarginCallPeriodSecs", - "docs": [ - "Time in seconds that must pass before redemptions are enabled after the deposit limit is crossed" - ], - "type": "u64" - }, - { - "name": "deleveragingThresholdSlotsPerBps", - "docs": [ - "The rate at which the deleveraging threshold decreases in slots per bps", - "e.g. 1 bps per hour would be 7200 slots per bps (assuming 2 slots per second)" - ], - "type": "u64" - }, - { - "name": "fees", - "docs": [ - "Program owner fees assessed, separate from gains due to interest accrual" - ], - "type": { - "defined": "ReserveFees" - } - }, - { - "name": "borrowRateCurve", - "docs": [ - "Borrow rate curve based on utilization" - ], - "type": { - "defined": "BorrowRateCurve" - } - }, - { - "name": "borrowFactorPct", - "docs": [ - "Borrow factor in percentage - used for risk adjustment" - ], - "type": "u64" - }, - { - "name": "depositLimit", - "docs": [ - "Maximum deposit limit of liquidity in native units, u64::MAX for inf" - ], - "type": "u64" - }, - { - "name": "borrowLimit", - "docs": [ - "Maximum amount borrowed, u64::MAX for inf, 0 to disable borrows (protected deposits)" - ], - "type": "u64" - }, - { - "name": "tokenInfo", - "docs": [ - "Token id from TokenInfos struct" - ], - "type": { - "defined": "TokenInfo" - } - }, - { - "name": "depositWithdrawalCap", - "docs": [ - "Deposit withdrawl caps - deposit & redeem" - ], - "type": { - "defined": "WithdrawalCaps" - } - }, - { - "name": "debtWithdrawalCap", - "docs": [ - "Debt withdrawl caps - borrow & repay" - ], - "type": { - "defined": "WithdrawalCaps" - } - }, - { - "name": "elevationGroups", - "type": { - "array": [ - "u8", - 20 - ] - } - }, - { - "name": "reserved1", - "type": { - "array": [ - "u8", - 4 - ] - } - } - ] - } - }, - { - "name": "WithdrawalCaps", - "docs": [ - "Reserve Withdrawal Caps State" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "configCapacity", - "type": "i64" - }, - { - "name": "currentTotal", - "type": "i64" - }, - { - "name": "lastIntervalStartTimestamp", - "type": "u64" - }, - { - "name": "configIntervalLengthSeconds", - "type": "u64" - } - ] - } - }, - { - "name": "ReserveFees", - "docs": [ - "Additional fee information on a reserve", - "", - "These exist separately from interest accrual fees, and are specifically for the program owner", - "and referral fee. The fees are paid out as a percentage of liquidity token amounts during", - "repayments and liquidations." - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "borrowFeeSf", - "docs": [ - "Fee assessed on `BorrowObligationLiquidity`, as scaled fraction (60 bits fractional part)", - "Must be between `0` and `2^60`, such that `2^60 = 1`. A few examples for", - "clarity:", - "1% = (1 << 60) / 100 = 11529215046068470", - "0.01% (1 basis point) = 115292150460685", - "0.00001% (Aave borrow fee) = 115292150461" - ], - "type": "u64" - }, - { - "name": "flashLoanFeeSf", - "docs": [ - "Fee for flash loan, expressed as scaled fraction.", - "0.3% (Aave flash loan fee) = 0.003 * 2^60 = 3458764513820541" - ], - "type": "u64" - }, - { - "name": "padding", - "docs": [ - "Used for allignment" - ], - "type": { - "array": [ - "u8", - 8 - ] - } - } - ] - } - }, - { - "name": "TokenInfo", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "docs": [ - "UTF-8 encoded name of the token (null-terminated)" - ], - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "heuristic", - "docs": [ - "Heuristics limits of acceptable price" - ], - "type": { - "defined": "PriceHeuristic" - } - }, - { - "name": "maxTwapDivergenceBps", - "docs": [ - "Max divergence between twap and price in bps" - ], - "type": "u64" - }, - { - "name": "maxAgePriceSeconds", - "type": "u64" - }, - { - "name": "maxAgeTwapSeconds", - "type": "u64" - }, - { - "name": "scopeConfiguration", - "docs": [ - "Scope price configuration" - ], - "type": { - "defined": "ScopeConfiguration" - } - }, - { - "name": "switchboardConfiguration", - "docs": [ - "Switchboard configuration" - ], - "type": { - "defined": "SwitchboardConfiguration" - } - }, - { - "name": "pythConfiguration", - "docs": [ - "Pyth configuration" - ], - "type": { - "defined": "PythConfiguration" - } - }, - { - "name": "padding", - "type": { - "array": [ - "u64", - 20 - ] - } - } - ] - } - }, - { - "name": "PriceHeuristic", - "type": { - "kind": "struct", - "fields": [ - { - "name": "lower", - "docs": [ - "Lower value of acceptable price" - ], - "type": "u64" - }, - { - "name": "upper", - "docs": [ - "Upper value of acceptable price" - ], - "type": "u64" - }, - { - "name": "exp", - "docs": [ - "Number of decimals of the previously defined values" - ], - "type": "u64" - } - ] - } - }, - { - "name": "ScopeConfiguration", - "type": { - "kind": "struct", - "fields": [ - { - "name": "priceFeed", - "docs": [ - "Pubkey of the scope price feed (disabled if `null` or `default`)" - ], - "type": "publicKey" - }, - { - "name": "priceChain", - "docs": [ - "This is the scope_id price chain that results in a price for the token" - ], - "type": { - "array": [ - "u16", - 4 - ] - } - }, - { - "name": "twapChain", - "docs": [ - "This is the scope_id price chain for the twap" - ], - "type": { - "array": [ - "u16", - 4 - ] - } - } - ] - } - }, - { - "name": "SwitchboardConfiguration", - "type": { - "kind": "struct", - "fields": [ - { - "name": "priceAggregator", - "docs": [ - "Pubkey of the base price feed (disabled if `null` or `default`)" - ], - "type": "publicKey" - }, - { - "name": "twapAggregator", - "type": "publicKey" - } - ] - } - }, - { - "name": "PythConfiguration", - "type": { - "kind": "struct", - "fields": [ - { - "name": "price", - "docs": [ - "Pubkey of the base price feed (disabled if `null` or `default`)" - ], - "type": "publicKey" - } - ] - } - }, - { - "name": "BorrowRateCurve", - "type": { - "kind": "struct", - "fields": [ - { - "name": "points", - "type": { - "array": [ - { - "defined": "CurvePoint" - }, - 11 - ] - } - } - ] - } - }, - { - "name": "CurvePoint", - "type": { - "kind": "struct", - "fields": [ - { - "name": "utilizationRateBps", - "type": "u32" - }, - { - "name": "borrowRateBps", - "type": "u32" - } - ] - } - }, - { - "name": "AssetTier", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Regular" - }, - { - "name": "IsolatedCollateral" - }, - { - "name": "IsolatedDebt" - } - ] - } - } - ], - "errors": [] -} \ No newline at end of file diff --git a/projects/kamino/api.js b/projects/kamino/api.js deleted file mode 100644 index e41670c7431..00000000000 --- a/projects/kamino/api.js +++ /dev/null @@ -1,15 +0,0 @@ -const { Kamino } = require('@kamino-finance/kliquidity-sdk') -const { getConnection, } = require('../helper/solana') - -async function tvl() { - throw new Error('Using rpc proxy now') - const kamino = new Kamino('mainnet-beta', getConnection()); - const shareData = await kamino.getStrategiesShareData({}); - return { - tether: shareData.reduce((a, i) => a + i.shareData.balance.computedHoldings.totalSum.toNumber(), 0) - }; -} - -module.exports = { - solana: { tvl }, -}; diff --git a/projects/kamino/index.js b/projects/kamino/index.js deleted file mode 100644 index 621644f3003..00000000000 --- a/projects/kamino/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { get } = require('../helper/http') -// const { kamino } = require("../helper/chain/rpcProxy") - -module.exports = { - doublecounted: true, - timetravel: false, - misrepresentedTokens: true, - solana: { tvl } -} - -const excludedTokenSet = new Set(['GECKO', 'PEEP']) - -async function tvl(api) { - const data = await get('https://api.kamino.finance/strategies/metrics?env=mainnet-beta') - data.forEach((i => { - if (excludedTokenSet.has(i.tokenA) || excludedTokenSet.has(i.tokenB)) return; - if (+i.totalValueLocked > 1e8) console.log(i) - api.addUSDValue(+i.totalValueLocked) - })) - // api.addUSDValue(await kamino.tvl()) -} \ No newline at end of file diff --git a/projects/kandyland-finance/index.js b/projects/kandyland-finance/index.js deleted file mode 100644 index 3edb419445e..00000000000 --- a/projects/kandyland-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const kandy = "0x37ded665a387a6f170fb60376b3057f09df6c0ea"; -const stakingContract = "0x0AFaBaba220CD10C50A192bd382D06ebB98fAaf2"; -const treasury = "0xb1CE95694E02126BEeE66bD6614410cA27C00a5e"; -const tokens = [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0x7DEABc1670da88BbC050A9858aCDDE30AEEDcCac", true] // KANDY-MIM JLP -] - -module.exports = { - deadFrom: 1648765747, - ...ohmTvl(treasury, tokens, "avax", stakingContract, kandy, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/kannagi-finance/abi.json b/projects/kannagi-finance/abi.json deleted file mode 100644 index bc8ebbfe262..00000000000 --- a/projects/kannagi-finance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolTvlInfo":"function totalTvl() view returns (tuple(uint256 pid, address want, uint256 tvl)[])", - "reserves":"function getReserves() external view returns (uint _reserve0, uint _reserve1)" -} \ No newline at end of file diff --git a/projects/kannagi-finance/index.js b/projects/kannagi-finance/index.js deleted file mode 100644 index 26c9249b8c5..00000000000 --- a/projects/kannagi-finance/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const {yieldHelper} = require('../helper/yieldHelper'); -const KANA_ADDRESS = "0x26aC1D9945f65392B8E4E6b895969b5c01A7B414"; -const YIELD_ADDRESS= "0x6E415ba5a37761256D13E84B45f4822c179DEF47"; -const USDT_ADDRESS = "era:" + ADDRESSES.era.USDT; - - -function yieldHelperWrapper(){ - const helperReturn = yieldHelper({ - project: 'kannagi-finance', - chain: 'era', - masterchef: YIELD_ADDRESS, - nativeToken: KANA_ADDRESS, - getPoolsFn: async (api) => api.call({ target: YIELD_ADDRESS, abi: abi.poolTvlInfo }), - getTokenBalances: async ({ poolInfos }) => poolInfos.map(poolInfo => poolInfo.tvl), - abis: { - getReservesABI: abi.reserves, - } -}) - -const tvlFun = helperReturn.era.tvl; - -const tvlFunWrapper =async function(api){ - const tvlBalances = await tvlFun(api) - if(tvlBalances[USDT_ADDRESS]!=='0'&&tvlBalances[USDT_ADDRESS]!==undefined){ - let balance = (tvlBalances[USDT_ADDRESS])/1e6; - tvlBalances["tether"] = balance; - delete tvlBalances[USDT_ADDRESS]; - } - return tvlBalances; -} -helperReturn.era.tvl = tvlFunWrapper - -return helperReturn; -} - -module.exports = {...yieldHelperWrapper(), hallmarks:[[1690589340, "Rug"]]}, -module.exports.deadFrom='2023-07-29' diff --git a/projects/kanvas/abi.json b/projects/kanvas/abi.json deleted file mode 100644 index 704e87865c5..00000000000 --- a/projects/kanvas/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "tokenList": "address[]:tokenList", - "tokenParameters": "function tokenParameters(address) view returns (address rewarder, address strategy, uint256 lastRewardTime, uint256 lastCumulativeReward, uint256 storedPrice, uint256 accSKANVASPerShare, uint256 totalShares, uint256 totalTokens, uint128 multiplier, uint16 withdrawFeeBP)" -} \ No newline at end of file diff --git a/projects/kanvas/index.js b/projects/kanvas/index.js deleted file mode 100644 index 2462455e623..00000000000 --- a/projects/kanvas/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const kanvas = "0xe005097ad7eea379ce404011eef68359b052cd0a"; -const stakingAddress = "0x34d2Cfb257cCf7EFDC41DB9a824ac314da80Bae8"; -const artStudio = "0xf15Bf479A5711f9411595C6289a9e7C36F24ad2F"; - -async function tvl(api) { - const tokens = await api.call({ abi: abi.tokenList, target: artStudio, }) - const bals = (await api.multiCall({ abi: abi.tokenParameters, calls: tokens, target: artStudio, })).map(i => i.totalTokens) - api.add(tokens, bals) - return sumTokens2({ api, tokens, owners: [artStudio], resolveLP: true, }) -} - -async function pool2() { - return {} -} - -module.exports = { - deadFrom: '2023-12-01', - kava: { - tvl, - pool2, - staking: staking(stakingAddress, kanvas) - } -} \ No newline at end of file diff --git a/projects/kaoyaswap/index.js b/projects/kaoyaswap/index.js deleted file mode 100644 index 2aefb519bbc..00000000000 --- a/projects/kaoyaswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const MasterChefContract = "0x21F17c2eC5741c1bEb76d50F08171138A6BA97bf"; -const KY = "0xa8a33e365D5a03c94C3258A10Dd5d6dfE686941B"; - -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0xbFB0A989e12D49A0a3874770B1C1CdDF0d9162aA', useDefaultCoreAssets: true }), - staking: staking(MasterChefContract, KY), - } -}; \ No newline at end of file diff --git a/projects/kapaswap/index.js b/projects/kapaswap/index.js deleted file mode 100644 index 6c6b1da13b3..00000000000 --- a/projects/kapaswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - kava: { tvl: getUniTVL({ - factory: '0xAb9F1D773Bde5657BC1492dfaF57b0b9EB59FDDc', - useDefaultCoreAssets: true, - })} -} diff --git a/projects/kapinus/index.js b/projects/kapinus/index.js deleted file mode 100644 index 6a2d5369cab..00000000000 --- a/projects/kapinus/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0x70e881fa43a7124e36639b54162395451cef1922', - abi: 'uint256:allPairs', - useDefaultCoreAssets: true, - }) - }, -}; diff --git a/projects/karak/index.js b/projects/karak/index.js deleted file mode 100644 index b3e20d84828..00000000000 --- a/projects/karak/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require("../helper/unwrapLPs") - -const config = { - ethereum: { v1: { factory: '0x54e44dbb92dba848ace27f44c0cb4268981ef1cc' }, v2: { factory: '0x7A91498D5fA6705d35c9406b752d6D50f49C9510', block: 21189340 }}, - arbitrum: { v1: { factory: '0x399f22ae52a18382a67542b3de9bed52b7b9a4ad' }, v2: { factory: '0xc4B3D494c166eBbFF9C716Da4cec39B579795A0d', block: 261874079 }}, - karak: { v1: { factory:'0xB308474350D75447cA8731B7Ce87c9ee9DA03B1C' }, v2: { factory: '0x1368AE21e85c9FA25f1aB579b6D3C6e20Ad6db04', block: 13814008 }}, - mantle: { v1: { factory: '0x4a2b015CcB8658998692Db9eD4522B8e846962eD'}, v2: { factory: '0x993E140Ba530E8Ffe1135ecef07ce7484f26CAA3', block: 71616200 }}, - bsc: { v1: { factory: '0x4a2b015CcB8658998692Db9eD4522B8e846962eD'}, v2: { factory: '0x93036971877E084DD303463628494c150572856D', block: 43813383 }}, - blast: { v1: { factory: '0x58b5dc145ca2BE84fe087614CFe36055be609BB3'} }, - fraxtal: { v1: { factory: '0xdF922c74CC0dc394022ea002Af5aFaa32348670e'}, v2: { factory: '0x04962047B6a9E8c99C8Da874D34c4285a87d541E', block: 11669871 } }, -} - -const eventAbi = 'event DeployedVault(address operator, address vault, address asset)' - -const karak_v1_tvl = async (api, { factory }) => { - const vaults = await api.call({ abi: 'address[]:getVaults', target: factory }) - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults] }) -} - -const karak_v2_tvl = async (api, { factory, block }) => { - const logs = await getLogs2({ api, target: factory, fromBlock: block, eventAbi }) - const vaults = logs.map(log => log[1]) - const tokens = logs.map(log => log[2]) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults] }) -} - -const tvl = async (api, factories) => { - const { v1, v2 } = factories - if (v1) await karak_v1_tvl(api, v1) - if (v2) await karak_v2_tvl(api, v2) -} - -Object.keys(config).forEach(chain => { - const factories = config[chain] - module.exports[chain] = { tvl: (api) => tvl(api, factories) } -}) diff --git a/projects/karak_chain/index.js b/projects/karak_chain/index.js deleted file mode 100644 index 7c5f871a0a7..00000000000 --- a/projects/karak_chain/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xBA61F25dd9f2d5f02D01B1C2c1c5F0B14c4B48A3", - "0xeeCE9CD7Abd1CC84d9dfc7493e7e68079E47eA73", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/karma-dao/index.js b/projects/karma-dao/index.js deleted file mode 100644 index 3f0144073e5..00000000000 --- a/projects/karma-dao/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); -const treasury = "0xAa50Ba30c9548cB34941C140e9CCe8Cc55829A71"; -const treasuryTokens = [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // mim - ["0x6DB2bCcd11bb8dC29B7598dcf0D3d63cfb52A572", true], // karma-mim jlp -]; -const karma = "0x5ccff6723f592c223e7b31c6872ba999a028653f"; -const stakingcontract = "0x4c9b7D49C86220A91c0c8756940C7c27583dC5EB"; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "avax", stakingcontract, karma, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/karura-dex/api.js b/projects/karura-dex/api.js deleted file mode 100644 index 1af6728b37f..00000000000 --- a/projects/karura-dex/api.js +++ /dev/null @@ -1,6 +0,0 @@ - -const { dex } = require('../helper/acala/dex') - -module.exports = { - karura: { tvl: async () => dex('karura') }, -}; \ No newline at end of file diff --git a/projects/karura-dex/index.js b/projects/karura-dex/index.js deleted file mode 100644 index e663780dfcd..00000000000 --- a/projects/karura-dex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("karura-dex", ['karura']), -} \ No newline at end of file diff --git a/projects/karura-lending/api.js b/projects/karura-lending/api.js deleted file mode 100644 index 42473d35843..00000000000 --- a/projects/karura-lending/api.js +++ /dev/null @@ -1,6 +0,0 @@ - -const { lending } = require('../helper/acala/lending') - -module.exports = { - karura: { tvl: async () => lending('karura') }, -}; \ No newline at end of file diff --git a/projects/karura-lending/index.js b/projects/karura-lending/index.js deleted file mode 100644 index 52e8e983957..00000000000 --- a/projects/karura-lending/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const {getExports} = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("karura-lending", ['karura']) -} \ No newline at end of file diff --git a/projects/karura-staking/api.js b/projects/karura-staking/api.js deleted file mode 100644 index 4207498d92f..00000000000 --- a/projects/karura-staking/api.js +++ /dev/null @@ -1,6 +0,0 @@ - -const { staking } = require('../helper/acala/liquidStaking') - -module.exports = { - karura: { tvl: async () => staking('karura') }, -}; \ No newline at end of file diff --git a/projects/karura-staking/index.js b/projects/karura-staking/index.js deleted file mode 100644 index be2c2de6e1f..00000000000 --- a/projects/karura-staking/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getExports} = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("karura-staking", ['karura']) -} \ No newline at end of file diff --git a/projects/karura-staking/lksmToKsm.js b/projects/karura-staking/lksmToKsm.js deleted file mode 100644 index f4dea4e412b..00000000000 --- a/projects/karura-staking/lksmToKsm.js +++ /dev/null @@ -1,19 +0,0 @@ -async function lksmToKsm(api, amount) { - const toBond = Number(await api.query.homa.toBondPool()); - const bonded = Number( - (await api.query.homa.stakingLedgers(0)).toJSON().bonded - ); - - const totalStaked = toBond + bonded; - - const voidLiquid = Number(await api.query.homa.totalVoidLiquid()); - const totalLKSM = Number( - await api.query.tokens.totalIssuance({ token: "LKSM" }) - ); - - const totalIssued = voidLiquid + totalLKSM; - - return amount * (totalStaked / totalIssued); - } - - module.exports = lksmToKsm; \ No newline at end of file diff --git a/projects/kasavadex/index.js b/projects/kasavadex/index.js deleted file mode 100644 index 9679c4859ce..00000000000 --- a/projects/kasavadex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - hallmarks: [ - [1660521600, "incentives not given"] - ], - misrepresentedTokens: true, - methodology: "Factory addresses (0x8F1fD6Ed57B0806FF114135F5b50B5f76e9542F2 for kava) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - kava: { - tvl: getUniTVL({ - factory: '0x8F1fD6Ed57B0806FF114135F5b50B5f76e9542F2', - useDefaultCoreAssets: true, - }), - } -} diff --git a/projects/kassandra/index.js b/projects/kassandra/index.js deleted file mode 100644 index 8fa473bd840..00000000000 --- a/projects/kassandra/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const abi = require('../aura-finance/abi.json') -const { stripTokenHeader } = require('../helper/tokenMapping') - -const config = { - avax: { factory: '0x878fa1ef7d9c7453ea493c2424449d32f1dbd846', fromBlock: 10087927 }, -} - -const configBalancer = { - polygon: { factory: '0x228885c9d0440Ae640B88fBeE31522CC6a59Fd2F', fromBlock: 42020509 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x2dcffae760adbb49d27552cdcd6cf9835c1a8e4545a5b123f8cac6d5a968b11b'], - eventAbi: 'event LogNewPool(address indexed caller, address indexed pool)', - onlyArgs: true, - fromBlock, - }) - const pools = logs.map(log => log.pool) - const tokens = await api.multiCall({ abi: 'address[]:getCurrentTokens', calls: pools }) - await sumTokens2({ api, ownerTokens: pools.map((pool, i) => [tokens[i], pool]) }) - if (chain === 'avax') { - const balances = api.getBalances() - const allTokens = tokens.flat().map(i => i.toLowerCase()).filter(i => i !== '0xd0f41b1c9338eb9d374c83cc76b684ba3bb71557') - const symbols = await api.multiCall({ abi: 'string:symbol', calls: allTokens, }) - const yrtTokens = allTokens.filter((token, i) => symbols[i] === 'YRT') - const depositTokens = await api.multiCall({ abi: 'address:depositToken', calls: yrtTokens}) - const deposits = await api.multiCall({ abi: 'uint256:totalDeposits', calls: yrtTokens}) - const supply = await api.multiCall({ abi: 'uint256:totalSupply', calls: yrtTokens}) - Object.entries(balances).forEach(([token, balance]) => { - const t = stripTokenHeader(token) - yrtTokens.forEach((yToken, i) => { - if (yToken === t) { - delete balances[token] - sdk.util.sumSingleBalance(balances, depositTokens[i], balance * deposits[i] / supply[i], api.chain) - } - }) - }) - return balances - } - } - } -}) - -Object.keys(configBalancer).forEach(chain => { - const { factory, fromBlock } = configBalancer[chain] - module.exports[chain] = { - tvl: async (api) => { - const managedPoolFactory = await api.call({ target: factory, abi: 'address:managedPoolFactory'}) - const vault = await api.call({ target: managedPoolFactory, abi: 'address:getVault'}) - const logs = await getLogs({ - api, - target: factory, - topics: ['0x3bccd8755c586fb977facb52bc850861b8588643edb28cbfef711671791710e9'], - eventAbi: 'event KassandraPoolCreatedTokens (bytes32 indexed vaultPoolId, string tokenName, string tokenSymbol, address[] tokens)', - onlyArgs: true, - fromBlock, - }) - const poolIds = logs.map(log => log.vaultPoolId) - const data = await api.multiCall({ abi: abi.getPoolTokens, calls: poolIds, target: vault}) - data.forEach(({ tokens, balances}) => api.addTokens(tokens.slice(1), balances.slice(1))) - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/katana-prelaunch/index.js b/projects/katana-prelaunch/index.js deleted file mode 100644 index bacae23a08e..00000000000 --- a/projects/katana-prelaunch/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const vaults = [ - '0xF470EB50B4a60c9b069F7Fd6032532B8F5cC014d', - '0xA5DaB32DbE68E6fa784e1e50e4f620a0477D3896', - '0xe1Ac97e2616Ad80f69f705ff007A4bbb3655544a', - '0x77570CfEcf83bc6bB08E2cD9e8537aeA9F97eA2F', - ]; - - await api.erc4626Sum({ api, calls: vaults, tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets', permitFailure: true }) - await sumTokens2({ - api, - owner: '0x69d210d3b60E939BFA6E87cCcC4fAb7e8F44C16B', - tokens: [ - ADDRESSES.ethereum.WEETH, - ADDRESSES.ethereum.EETH, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.WSTETH, - ], - }) - return await sumTokens2({ - api, - owner: '0x75231079973C23e9eB6180fa3D2fc21334565aB5', - tokens: [ - ADDRESSES.ethereum.LBTC - ], - }) -} - -module.exports = { - ethereum: { - doublecounted: true, - tvl: tvl, - }, - hallmarks: [ - [1751324400, "vbAssets migration to Katana mainnet"] - ] -} diff --git a/projects/katana-ronin.js b/projects/katana-ronin.js deleted file mode 100644 index 2b348925b83..00000000000 --- a/projects/katana-ronin.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens'); - -module.exports = { - ronin: { tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xb255d6a720bb7c39fee173ce22113397119cb930', }) }, - hallmarks:[ - [1653744720, "Ronin Bridge Hack $625m"], - ], -} diff --git a/projects/katana-v3/index.js b/projects/katana-v3/index.js deleted file mode 100644 index 8a260088fb9..00000000000 --- a/projects/katana-v3/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - 'ronin': { factory: '0x1f0b70d9a137e3caef0ceacd312bc5f81da0cc0c', fromBlock: 40105252 }, -}) \ No newline at end of file diff --git a/projects/katana/index.js b/projects/katana/index.js deleted file mode 100644 index 19ec9bab38b..00000000000 --- a/projects/katana/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') - -async function tvl() { - return sumTokens2({ tokenAccounts: [ - '8vyTqVVPmJfqFexRcMBGDAHoSCyZ52RC5sRVhYzbfU4j', - '7zJVLbx3DjjwkoD6eUGk4cgoBv2JR3RW67c3ff8URXYh', - '2CD9R7K7AjAswjTJDmdf9HyUZQztfck1B22h9WUJeTeh', - '377U1dX3mRd96BeoRkpmsJC67wnVDqTpi1u6dALkR9V5', - 'DUrVECpx5EkVW12eWvpjR8Xk2AgNS3epqEQ6p63SujQb', - '6F5XPaeEiAwfmD5Rv9TAt4x7VhVaEU7qV9q6MSrvbozC', - '6sSZcCfPaeKfGnTRXX3Ybd97eqVnYg1TLfytwArfUVz', - 'E2VKdRPvfMXBj3ePMbuZPRz1fwT7z7Gd9pnh8R3n25eW', - 'AV3pjicfiJQoR96mGT9byQLbUAXL2Zi1a74wis9Ezh5S', - '5aJ5NzNmLfVLbqcbvYsW1e1GdEccrkFkLZwLWVLrmm4A', - '2sKjWWYcdBmUQbdHBJXKbJBwHB2G9JB7mRnLYuEtgRcp', - ]}) - -} -module.exports = { - timetravel: false, - methodology: "Snapshots of the TVL from app.katana.so are saved periodically into the statistics repo", - solana: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/katanaswap/index.js b/projects/katanaswap/index.js deleted file mode 100644 index 6ed787cc02a..00000000000 --- a/projects/katanaswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - zeta: { - tvl: getUniTVL({ - factory: "0xc6ef2008a5a717329648420F429dA53d3351cF5E", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/kava-boost/index.js b/projects/kava-boost/index.js deleted file mode 100644 index bd3292446f7..00000000000 --- a/projects/kava-boost/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos'); - -const chain = 'kava' -const blacklisted = new Set(['kava', 'ukava', 'bkava']) - -async function tvl(api) { - const { result: pools } = await queryV1Beta1({ chain, url: '/savings/v1beta1/total_supply' }); - pools - .filter(({ denom }) => !blacklisted.has(denom)) - .forEach(({ denom, amount }) => api.add(denom, amount)) -} - -module.exports = { - timetravel: false, - kava: { tvl } -}; \ No newline at end of file diff --git a/projects/kava-earn/index.js b/projects/kava-earn/index.js deleted file mode 100644 index 633b3ba9e08..00000000000 --- a/projects/kava-earn/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos'); - -const chain = 'kava' - -async function tvl(api) { - const { result: pools } = await queryV1Beta1({ chain, url: '/earn/v1beta1/total_supply' }); - pools.forEach(({ denom, amount }) => api.add(denom, amount)) -} - -module.exports = { - timetravel: false, - kava: { tvl } -}; \ No newline at end of file diff --git a/projects/kava-liquid/index.js b/projects/kava-liquid/index.js deleted file mode 100644 index 1ce3ba68e00..00000000000 --- a/projects/kava-liquid/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos'); - -const chain = 'kava' - -async function tvl(api) { - const { result: pools } = await queryV1Beta1({ chain, url: '/liquid/v1beta1/total_supply' }); - pools.forEach(({ denom, amount }) => api.add(denom, amount)) -} - -module.exports = { - timetravel: false, - kava: { tvl } -}; diff --git a/projects/kava.js b/projects/kava.js deleted file mode 100644 index 5c873cc09dd..00000000000 --- a/projects/kava.js +++ /dev/null @@ -1,12 +0,0 @@ -const { queryV1Beta1 } = require('./helper/chain/cosmos'); - -const chain = 'kava' -async function tvl(api) { - const { total_collateral: pools } = await queryV1Beta1({ chain, url: 'cdp/v1beta1/totalCollateral' }); - pools.forEach(({ amount: { denom, amount} }) => api.add(denom, amount)) -} - -module.exports = { - timetravel: false, - kava: { tvl } -}; \ No newline at end of file diff --git a/projects/kavacave/index.js b/projects/kavacave/index.js deleted file mode 100644 index 64f01857857..00000000000 --- a/projects/kavacave/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const abiGeneral = require("../helper/abis/masterchef.json"); - -const masterChef = { - kava: "0xf17BBB9698b50156Ee437E01e22D7C2080184934" -}; - -async function tvl(api) { - const infos = await api.fetchList({ lengthAbi: abiGeneral.poolLength, itemAbi: abiGeneral.poolInfo, target: masterChef.kava }) - const tokens = infos.map(i => i[0]); - return api.sumTokens({ tokens, owner: masterChef.kava }) -} - -module.exports = { - deadFrom: '2022-10-01', - hallmarks: [ - [1660521600, "incentives not given"] - ], - methodology: - "Staked LP is counted as TVL.", - kava: { - tvl, - }, -}; diff --git a/projects/kavacave/kavaAbi.json b/projects/kavacave/kavaAbi.json deleted file mode 100644 index f2f4bb1dba8..00000000000 --- a/projects/kavacave/kavaAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 emi, uint256 lastRewardTime, uint256 accKavePerShare, uint256 depositFeeBP, uint256 totalcap, uint256 bonusBp, address strat, uint256 sid)" -} \ No newline at end of file diff --git a/projects/kavafc/index.js b/projects/kavafc/index.js deleted file mode 100644 index c1a95ce2b5a..00000000000 --- a/projects/kavafc/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { stakingPricedLP } = require("../helper/staking"); -const { unknownTombs, sumTokensExport } = require("../helper/unknownTokens"); -const { mergeExports } = require("../helper/utils"); - -const stakingValue = sumTokensExport({ - chain: "kava", - owner: "0xa07deE8FF35fE2e2961a7e1006EAdA98E24aE82E", - tokens: ["0x990e157fC8a492c28F5B50022F000183131b9026"], - lps: ["0x09d6561b3795ae237e42f7adf3dc83742e10a2e8"], - useDefaultCoreAssets: true, -}); -const lionLiquidityStake = { - kava: { - staking: stakingValue, - tvl: async () => ({}), - }, -}; - -module.exports = lionLiquidityStake; diff --git a/projects/kavalake/index.js b/projects/kavalake/index.js deleted file mode 100644 index 21871f94356..00000000000 --- a/projects/kavalake/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - timetravel: false, - misrepresentedTokens: false, - methodology: "TVL is calculated based on the amount of WKAVA held in the KavaLake liquid staking vault on Kava EVM.", - kava: { - tvl: sumTokensExport({ - owners: ['0x46ffa1b9a9f027fA958dF9276e3EdCf099A58882'], // KavaLake vault - tokens: [ADDRESSES.kava.WKAVA], // WKAVA - }), - }, -}; diff --git a/projects/kavastarter/index.js b/projects/kavastarter/index.js deleted file mode 100644 index f92076b9654..00000000000 --- a/projects/kavastarter/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens'); - -const KAST_LP = "0x821dd423c744cAa452C0Ae1651a9388009efbE5b"; - -const WKAVA = ADDRESSES.kava.WKAVA; -const KAVASTARTER = "0x32a57dCa514Cc601d3DDEe974f57Db9Dc2CfE83b"; - -const POL_Pool_One = "0x12450E12A7eC069b51b46C92Ac122D90DbD9A99D"; -const POL_Pool_Two = "0x9aedc0D09E0Ede60Ba5B5F969a955937af024c44"; -const POL_Pool_Three = "0x486F6f8cF46EC5CC584ec3f08C494E55a8484111"; - -module.exports = { - kava: { - tvl: sumTokensExport({ owners: [POL_Pool_One, POL_Pool_Two], tokens: [WKAVA] }), - staking: sumTokensExport({ owner: POL_Pool_Three, tokens: [KAVASTARTER], lps: [KAST_LP], useDefaultCoreAssets: true, }) - } -}; diff --git a/projects/kavaswap.js b/projects/kavaswap.js deleted file mode 100644 index dd16b263bf1..00000000000 --- a/projects/kavaswap.js +++ /dev/null @@ -1,21 +0,0 @@ -const { queryV1Beta1 } = require('./helper/chain/cosmos'); -const { transformDexBalances } = require('./helper/portedTokens') - -const chain = 'kava' - -async function tvl() { - const { pools } = await queryV1Beta1({ chain, url: 'swap/v1beta1/pools' }); - - const data = pools.map(({ coins }) => ({ - token0: coins[0].denom, - token1: coins[1].denom, - token0Bal: coins[0].amount, - token1Bal: coins[1].amount - })) - return transformDexBalances({ chain, data }) -} - -module.exports = { - timetravel: false, - kava: { tvl } -} \ No newline at end of file diff --git a/projects/kawa/index.js b/projects/kawa/index.js deleted file mode 100644 index 37def13d6d6..00000000000 --- a/projects/kawa/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - sei: compoundExports2({ comptroller: '0xD527237E176647cbF8A7c7bCeFEfBf9130Bec948', cether: '0x20E56093357d91Ce85B0E3c2f0E4bdc676E94eDB', }) -} \ No newline at end of file diff --git a/projects/kawaiiswap-finance/index.js b/projects/kawaiiswap-finance/index.js deleted file mode 100644 index e9dc9803f7d..00000000000 --- a/projects/kawaiiswap-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef") - -const token = "0x9e236b43D779B385c3279820e322ABAE249D3405"; -const masterchef = "0x1767B9aF34be444e3C727840d8D19dB0256dBCFA"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/kayak-uni-v3/index.js b/projects/kayak-uni-v3/index.js deleted file mode 100644 index 9ed424e05f1..00000000000 --- a/projects/kayak-uni-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - scroll: { factory: '0x359d8BC3c4C70b8b73cf911aA5EfEC004146b663', fromBlock: 8564317, }, -}) diff --git a/projects/kayak/index.js b/projects/kayak/index.js deleted file mode 100644 index 3204e9d4f33..00000000000 --- a/projects/kayak/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - avax: { factory: '0x4df3038C2C7e13F46F0d63eC3AF5728F75Be3775', fromBlock: 46950081, }, - scroll: { factory: '0xA218beD0C2b487599A3799Bc318428e5219A7978', fromBlock: 8563591, }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ - api, - factory, - eventAbi: 'event NewStableSwapPair(address indexed swapContract, address indexed tokenA, address indexed tokenB)', - fromBlock, - }) - - const ownerTokens = logs.map(i => [[i.tokenA, i.tokenB], i.swapContract]) - return sumTokens2({ api, ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/kayen/index.js b/projects/kayen/index.js deleted file mode 100644 index 94b62888fc5..00000000000 --- a/projects/kayen/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - methodology: - "We count liquidity of all paris through Factory Contract and Pools (single tokens) seccions through Factory Contract.", - chz: { - tvl: getUniTVL({ - factory: "0xE2918AA38088878546c1A18F2F9b1BC83297fdD3", - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/kccguru/index.js b/projects/kccguru/index.js deleted file mode 100644 index 5471064b980..00000000000 --- a/projects/kccguru/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const ITVL = { - pool2: "uint256:pool2", - staking: "uint256:staking", - tvl: "uint256:tvl", - usd: "address:usd", -} -const tvlGuru = "0x426a4A4B73d4CD173C9aB78d18c0d79d1717eaA9"; //On-Chain Universal TVL Finder -const USD = ADDRESSES.kcc.USDT; //same as abi.call({target:tvlGuru,abi:ITVL["usd"]}) -//NOTE: USD===kcc:USDT is used explicitly to reduce EVM calls by this adapter. It makes this process faster. -async function pool2(api) { - let _pool2 = await api.call({ target: tvlGuru, abi: ITVL.pool2, }); - api.add(USD, _pool2) -} -async function staking(api) { - let _staking = await api.call({ target: tvlGuru, abi: ITVL.staking, }); - api.add(USD, _staking) -} -async function tvl(api) { - let _tvl = await api.call({ target: tvlGuru, abi: ITVL.tvl, }); - api.add(USD, _tvl) -} -module.exports = { - methodology: "USD-denominated value aggregation of most Locked assets held across kcc.guru's & Kompound Protocol's smart contracts, powered by direct on-chain storage of quantity, pools and prices using ftm.guru's Universal TVL Finder Tool (tvlGuru.sol). More detailed documentation of TVL is available at https://ftm.guru/rawdata/tvl", - kcc: { - pool2: pool2, - staking: staking, - tvl: tvl - }, -} diff --git a/projects/kdex/index.js b/projects/kdex/index.js deleted file mode 100644 index 6a0c7ef5d14..00000000000 --- a/projects/kdex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory addresses (0x9a6d197e85e61c23146F5b7FA55fc8a6EDDD2D57 for kava) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - kava: { - tvl: getUniTVL({ - factory: '0x9a6d197e85e61c23146F5b7FA55fc8a6EDDD2D57', - useDefaultCoreAssets: true, - }), - } -} \ No newline at end of file diff --git a/projects/kdlaunch/index.js b/projects/kdlaunch/index.js deleted file mode 100644 index 2da059a049b..00000000000 --- a/projects/kdlaunch/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { fetchLocal, mkMeta } = require("../helper/pact"); - -const network = (chainId) => `https://api.chainweb.com/chainweb/0.0/mainnet01/chain/${chainId}/pact`; -const creationTime = () => Math.round(new Date().getTime() / 1000) - 10; - -const getReserve = (tokenData) => { - return parseFloat(tokenData.decimal ? tokenData.decimal : tokenData); -} - - -const getTotalStakedKdl = async () => { - const chainId = '1'; - let data = await fetchLocal( - { - pactCode: '(kdlaunch.staking.get-staking-stats)', - meta: mkMeta('', chainId, 0.01, 1000, 28800, creationTime()) - }, - network(chainId) - ); - - if (data.result.status === "success") { - return getReserve(data.result.data.totalStaked); - } - - throw new Error("Total KDL stacked failed"); -} - -async function fetchStakingTvl() { - const stakedKdl = await getTotalStakedKdl(); - return { - kdlaunch: stakedKdl - } -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - kadena: { - tvl: ()=>({}), - staking: fetchStakingTvl, - } -} \ No newline at end of file diff --git a/projects/kdswap/index.js b/projects/kdswap/index.js deleted file mode 100644 index e7ba68df491..00000000000 --- a/projects/kdswap/index.js +++ /dev/null @@ -1,139 +0,0 @@ -const { GraphQLClient, gql } = require('graphql-request') - -const { fetchLocal, mkMeta } = require("../helper/pact"); - -const kdsExchangeContract = 'kdlaunch.kdswap-exchange'; -const kdsExchangeTokenContract = 'kdlaunch.kdswap-exchange-tokens'; -const chainId = "1"; -const network = `https://api.chainweb.com/chainweb/0.0/mainnet01/chain/${chainId}/pact`; -const GAS_PRICE = 0.00000001; -const creationTime = () => Math.round(new Date().getTime() / 1000) - 10; - -const graphQLUrls = { - "kadena": "https://api.kdswap.exchange/graphql", -} - -const getReserve = (tokenData) => { - return parseFloat(tokenData.decimal ? tokenData.decimal : tokenData); -}; - -const getPairTokens = async (url) => { - const graphQLClient = new GraphQLClient(url) - const reserveQuery = gql` - { - pairs { - id - name: id - token0 { - name: tokenSymbol - code - } - token1 { - name: tokenSymbol - code - } - } - } - `; - return graphQLClient.request(reserveQuery) -} - -const isBasePair = (token) => token.code === 'coin' - -const swapToBasePair = (pair) => { - if (isBasePair(pair.token1)) { - return { - ...pair, - token0: { - name: pair.token1.name, - code: pair.token1.code - }, - token1: { - name: pair.token0.name, - code: pair.token0.code - } - } - } - return pair -} - -const normalizeTokens = (items, key) => - items.reduce((result, item) => { - const selectedKey = item[key].replace('_', ':') - const { token0, token1 } = item - return { - ...result, - [selectedKey]: { - name: selectedKey, - token0, - token1, - } - } - }, {}) - - -const getPairList = async (url, grouper) => { - const { pairs } = await getPairTokens(url) - const pairTokens = normalizeTokens(pairs, grouper); - - try { - return await Promise.all( - Object.values(pairTokens).map(async (pairData) => { - const pair = swapToBasePair(pairData) - const data = await fetchLocal( - { - pactCode: ` - (use ${kdsExchangeContract}) - (let* - ( - (p (get-pair ${pair.token0.code} ${pair.token1.code})) - (reserveA (reserve-for p ${pair.token0.code})) - (reserveB (reserve-for p ${pair.token1.code})) - (totalBal (${kdsExchangeTokenContract}.total-supply (${kdsExchangeContract}.get-pair-key ${pair.token0.code} ${pair.token1.code}))) - )[totalBal reserveA reserveB]) - `, - meta: mkMeta("", chainId, GAS_PRICE, 3000, creationTime(), 600), - }, - network - ); - - if (data.result.status === "success") { - return { - reserves: [ - getReserve(data.result.data[1]), - getReserve(data.result.data[2]), - ], - }; - } - return { - reserves: [0, 0] - } - }) - ); - } catch (err) { - throw new Error(err); - } -}; - -const calculateKdaTotal = (pairList) => pairList.reduce((amount, pair) => amount += pair.reserves[0], 0) - -async function fetch() { - const pairList = await getPairList(graphQLUrls['kadena'], 'id'); - const kdaTotal = calculateKdaTotal(pairList); - - /* - * value of each pool taken to be twice the value of its KDA - */ - return { - kadena: 2 * kdaTotal - }; -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "TVL accounts for the liquidity on all KDSWAP AMM pools, with all values calculated in terms of KDA price.", - kadena: { - tvl: fetch, - }, -} \ No newline at end of file diff --git a/projects/kea-credit/index.js b/projects/kea-credit/index.js deleted file mode 100644 index 5e7798f77ea..00000000000 --- a/projects/kea-credit/index.js +++ /dev/null @@ -1,241 +0,0 @@ -const sdk = require("@defillama/sdk"); - -// KEA Credit Contract Addresses on Hedera -const INVOICE_FACTORY_PROXY = "0x79914D3C80246FBC9E40409C4688A4141A3abbCe"; -const INVOICE_NFT_PROXY = "0x28E99733E84dE18fF6f50024F6ad33483B3D7F80"; - -// Token Addresses (Hedera format: 0.0.tokenId) -const TOKENS = { - PIXD_V1: "0.0.9323052", // 0x00000000000000000000000000000000008e422c (0-decimal) - KUSD_V2: "0.0.9590855", // 0x0000000000000000000000000000000000925847 (6-decimal) -}; - -// Pool Status Constants (matching KEA smart contracts) -const POOL_STATUS = { - ACTIVE: 0, // Seeking funding - FUNDED: 1, // Fully funded, loan disbursed - REPAID: 2, // Loan repaid, lenders can withdraw - DEFAULTED: 3, // Loan defaulted - CANCELLED: 4, // Pool cancelled - GRACE_PERIOD: 5, // In grace period (V2 only) -}; - -// Contract ABIs (essential functions only) -const FACTORY_ABI = [ - "function getAllPools() external view returns (address[] memory)", - "function totalPools() external view returns (uint256)", -]; - -const NFT_ABI = [ - "function getNextTokenId() external view returns (uint256)", - "function totalSupply() external view returns (uint256)", -]; - -const POOL_ABI = [ - // V2 Pool ABI (with grace period support) - "function getPoolInfo() external view returns (uint256 nftTokenId, uint256 targetAmount, uint256 minAcceptableAmount, uint256 currentAmount, uint256 disbursedAmount, uint256 interestRate, uint256 maturityDate, address borrower, uint8 status, uint256 gracePeriodDays, uint256 minAcceptabilityPercentage, uint256 platformFeePercentage, address treasuryWallet, bool isGracePeriodExpired)", -]; - -const POOL_V1_ABI = [ - // V1 Pool ABI (simpler structure) - "function getPoolInfo() external view returns (uint256 nftTokenId, uint256 targetAmount, uint256 currentAmount, uint256 interestRate, uint256 maturityDate, address borrower, uint8 status, uint256 platformFeePercentage, address treasuryWallet)", -]; - -/** - * Determine if a token ID represents V1 or V2 - * Our first 12 NFTs are V1, rest are V2 - */ -function getVersionFromTokenId(tokenId) { - return Number(tokenId) <= 12 ? "v1" : "v2"; -} - -/** - * Get token configuration based on version - */ -function getTokenConfig(version) { - return { - address: version === "v1" ? TOKENS.PIXD_V1 : TOKENS.KUSD_V2, - decimals: version === "v1" ? 0 : 6, - symbol: version === "v1" ? "PIXD" : "kUSD", - }; -} - -/** - * Calculate TVL for a single pool based on its status - */ -function calculatePoolTVL(poolInfo, version) { - const status = Number(poolInfo.status || poolInfo[8]); // Handle both V1 and V2 formats - - // Get amounts from pool info (different positions for V1 vs V2) - let currentAmount, targetAmount; - - if (version === "v1") { - // V1: [nftTokenId, targetAmount, currentAmount, interestRate, maturityDate, borrower, status, platformFeePercentage, treasuryWallet] - // V1 stores amounts in 18-decimal format (contract internal format) - targetAmount = poolInfo[1] || poolInfo.targetAmount; - currentAmount = poolInfo[2] || poolInfo.currentAmount; - } else { - // V2: [nftTokenId, targetAmount, minAcceptableAmount, currentAmount, disbursedAmount, ...] - // V2 stores amounts in 6-decimal format (USDC-like format) - targetAmount = poolInfo[1] || poolInfo.targetAmount; - currentAmount = poolInfo[3] || poolInfo.currentAmount; - } - - let tvlAmount = 0; - - switch (status) { - case POOL_STATUS.ACTIVE: - // Active pools: count current invested amount - if (version === "v1") { - // V1: Convert from 18-decimal internal format to USD - // 2400000000000000000000 → 2400 USD - tvlAmount = Number(currentAmount) / 1e18; - } else { - // V2: Convert from 6-decimal format to USD - // 2400000000 → 2400 USD - tvlAmount = Number(currentAmount) / 1e6; - } - break; - - case POOL_STATUS.FUNDED: - // Funded pools: count target amount (fully funded) - if (version === "v1") { - // V1: Convert from 18-decimal internal format to USD - tvlAmount = Number(targetAmount) / 1e18; - } else { - // V2: Convert from 6-decimal format to USD - tvlAmount = Number(targetAmount) / 1e6; - } - break; - - case POOL_STATUS.GRACE_PERIOD: - // Grace period pools: count current amount - if (version === "v1") { - // V1: Convert from 18-decimal internal format to USD - tvlAmount = Number(currentAmount) / 1e18; - } else { - // V2: Convert from 6-decimal format to USD - tvlAmount = Number(currentAmount) / 1e6; - } - break; - - case POOL_STATUS.REPAID: - case POOL_STATUS.CANCELLED: - case POOL_STATUS.DEFAULTED: - // No TVL for completed/cancelled pools - tvlAmount = 0; - break; - - default: - tvlAmount = 0; - } - - return tvlAmount; -} - -/** - * Get pool info using the appropriate ABI based on pool index - * First 12 pools (index 0-11) are V1, rest are V2 - */ -async function getPoolInfoWithVersion(poolAddress, poolIndex) { - // Determine version based on pool index (first 12 are V1) - const version = poolIndex < 12 ? "v1" : "v2"; - const abi = version === "v1" ? POOL_V1_ABI[0] : POOL_ABI[0]; - - const result = await sdk.api.abi.call({ - target: poolAddress, - abi: abi, - chain: "hedera", - }); - - if (result.output) { - const tokenId = Number(result.output[0]); - return { - success: true, - poolInfo: result.output, - version, - tokenId, - }; - } else { - return { success: false, error: "No output from pool call" }; - } -} - -/** - * Main TVL calculation for Hedera - */ -async function hederaTvl() { - const balances = {}; - let totalV1TVL = 0; - let totalV2TVL = 0; - let processedPools = 0; - - // Get total NFTs to understand scale - // Try getNextTokenId first (KEA Credit specific function) - let totalNFTs = 0; - - const nextTokenIdResult = await sdk.api.abi.call({ - target: INVOICE_NFT_PROXY, - abi: NFT_ABI[0], // getNextTokenId - chain: "hedera", - }); - - if (nextTokenIdResult.output !== undefined) { - totalNFTs = Number(nextTokenIdResult.output) - 1; // Next token ID - 1 = current total - } else { - throw new Error("getNextTokenId returned undefined"); - } - - // Get all pool addresses - const poolsResult = await sdk.api.abi.call({ - target: INVOICE_FACTORY_PROXY, - abi: FACTORY_ABI[0], - chain: "hedera", - }); - - if (poolsResult.output === undefined) { - throw new Error( - `Factory getAllPools call failed: ${JSON.stringify(poolsResult)}` - ); - } - - const poolAddresses = poolsResult.output || []; - - // Process each pool - for (let i = 0; i < poolAddresses.length; i++) { - const poolAddress = poolAddresses[i]; - - const poolResult = await getPoolInfoWithVersion(poolAddress, i); - - if (!poolResult.success) { - continue; - } - - const { poolInfo, version, tokenId } = poolResult; - - // Calculate TVL for this pool - const poolTVL = calculatePoolTVL(poolInfo, version); - - if (version === "v1") { - totalV1TVL += poolTVL; - } else { - totalV2TVL += poolTVL; - } - - processedPools++; - } - - const totalTVL = totalV1TVL + totalV2TVL; - - balances["usd-coin"] = totalTVL; - - return balances; -} - -module.exports = { - methodology: - "TVL represents the total value locked in KEA Credit's RWA (Real World Assets) invoice tokenization platform on Hedera. Businesses tokenize their invoices as NFTs and receive funding from lenders through investment pools. TVL calculation includes: (1) Active pools - current invested amounts, (2) Funded pools - fully funded target amounts, (3) Grace period pools - current amounts during grace period. Excludes repaid, cancelled, or defaulted pools. The platform operates with two versions: V1 pools (NFT IDs 1-12) using 0-decimal PIXD tokens, and V2 pools (NFT IDs 13+) using 6-decimal kUSD tokens. Both tokens maintain 1:1 USD parity representing underlying invoice values.", - hedera: { - tvl: hederaTvl, - }, -}; diff --git a/projects/kebab-finance/index.js b/projects/kebab-finance/index.js deleted file mode 100644 index 255c56e3808..00000000000 --- a/projects/kebab-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const poolInfoAbi = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCakePerShare)'; -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'bsc', - masterchef: '0x76FCeffFcf5325c6156cA89639b17464ea833ECd', - nativeToken: '0x7979F6C54ebA05E18Ded44C4F986F49a5De551c2', - poolInfoABI: poolInfoAbi -}) \ No newline at end of file diff --git a/projects/keep.js b/projects/keep.js deleted file mode 100644 index 7ce326ac6c9..00000000000 --- a/projects/keep.js +++ /dev/null @@ -1,55 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { GraphQLClient, } = require('graphql-request') -const utils = require('./helper/utils'); - -async function tvl() { - var q2 = `{ - totalBondedECDSAKeeps { - id - totalAvailable - totalBonded - totalKeepActive - totalKeepOpened - } - } - `; - var endpoint = sdk.graph.modifyEndpoint('8vQM7kTwPoW37U5FWgZLRpcoMyYKExMcHr5JGgnvzxk5'); - var graphQLClient = new GraphQLClient(endpoint) - const results2 = await graphQLClient.request(q2) - var ethStaked = parseFloat(results2.totalBondedECDSAKeeps[0].totalBonded) + parseFloat(results2.totalBondedECDSAKeeps[0].totalAvailable); - const balances = { - ethereum: ethStaked - } - balances['0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa'] = (await sdk.api.erc20.totalSupply({ target: '0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa' })).output - return balances -} - -async function staking(api) { - var q1 = `{ - tokenStakings { - contractAddress - totalStaker - totalTokenStaking - totalTokenSlash - members(first: 5, where: {stakingState: STAKED}, orderBy: amount, orderDirection: desc) { - id - amount - } - } - } - `; - - var endpoint = sdk.graph.modifyEndpoint('Pg2cbxfPGJtqRBwMutR69oapbodKmcXuQRsxPRaK57S'); - var graphQLClient = new GraphQLClient(endpoint) - const results = await graphQLClient.request(q1) - api.addCGToken('keep-network', Math.round(results.tokenStakings[0].totalTokenStaking)) - return api.sumTokens({ owner:'0xCf916681a6F08fa22e9EF3e665F2966Bf3089Ff1', token: '0x85Eee30c52B0b379b046Fb0F85F4f3Dc3009aFEC'}) -} - -module.exports = { - timetravel: false, - ethereum: { - tvl, - staking, - } -} diff --git a/projects/keep3r/abis.js b/projects/keep3r/abis.js deleted file mode 100644 index e9386b3350c..00000000000 --- a/projects/keep3r/abis.js +++ /dev/null @@ -1,6 +0,0 @@ -exports.abis = { - userInfo: "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)", - totalBorrows: "uint256:totalBorrows", - priceRegistry: "function price(address _forex) view returns (uint256)", - totalSupply: "uint256:totalSupply", -} diff --git a/projects/keep3r/index.js b/projects/keep3r/index.js deleted file mode 100644 index 8bbbffe31d5..00000000000 --- a/projects/keep3r/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const abis = require("./abis.js").abis; -const registry = require("./registry.js").registry; -const { staking } = require('../helper/staking'); -const { sumTokens2 } = require("../helper/unwrapLPs.js"); - -async function borrowed(api) { - - const cyTokens = Object.values(registry.cTokens); - const borrowed = await api.multiCall({ calls: cyTokens, abi: abis.totalBorrows, }); - - const ib = Object.values(registry.ibTokens); - for (const idx in borrowed) { - api.add(ib[idx], borrowed[idx]) - } -} - -async function tvl(api) { - const tokens = [ - registry.CVX, - registry.DAI, - registry.KP3R, - registry.SUSHI, - registry.CRV, - registry.CVXCRV, - registry.SPELL, - registry.WETH, - registry.KPR_WETH_SUSHI_POOL, - registry.USDC_ibAUD_POOL, - registry.USDC_ibEUR_POOL, - registry.USDC_ibKRW_POOL, - registry.USDC_ibJPY_POOl, - registry.USDC_ibGBP_POOL, - registry.USDC_ibCHF_POOL, - ].concat(Object.values(registry.ibTokens)) - - await api.sumTokens({ - tokens, owners: [registry.YEARN_DEPLOYER, registry.BOND_TREASURY].concat( - Object.values(registry.cTokens), - Object.values(registry.ibCrvGauges) - ), - }) - await api.sumTokens({ tokens: Object.values(registry.Kp3rV2Klps), owner: registry.KP3RV2, }) - await api.sumTokens({ tokens: Object.values(registry.Kp3rV1Slps), owner: registry.KP3R, }) - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - ethereum: { - tvl, - staking: staking(registry.VKP3R, registry.KP3R), - borrowed - }, -}; diff --git a/projects/keep3r/registry.js b/projects/keep3r/registry.js deleted file mode 100644 index edbe91be213..00000000000 --- a/projects/keep3r/registry.js +++ /dev/null @@ -1,79 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -exports.registry = { - KP3R: "0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44", - KP3RV2: "0xeb02addCfD8B773A5FFA6B9d1FE99c566f8c44CC", - VKP3R: "0x2FC52C61fB0C03489649311989CE2689D93dC1a2", - KPR_LDO_SUSHI_POOL: "0x79e0d4858af8071349469b6589a3c23c1fe1586e", - KPR_WETH_SUSHI_POOL: "0xaf988aff99d3d0cb870812c325c588d8d8cb7de8", - KPR_MM_SUSHI_POOL: "0x18ee956e99cc606530c20d9cadd6af5ece08d89f", - KPR_AMOR_SUSHI_POOL: "0x9c2efb900290402fd2b891170085b9d651bfc5ce", - USDC_ibAUD_POOL: "0x71852e888a601c9bbb6f48172a9bfbd8010aa810", - USDC_ibEUR_POOL: "0x5271d250bf9528981846a9dd94a97cbbe7318817", - USDC_ibKRW_POOL: "0xa42f219d4394216d851d75dcb6b742595146379c", - USDC_ibJPY_POOl: "0xeaebf8736ec441eecec31533ebd3a21d61caa252", - USDC_ibGBP_POOL: "0x8704850232ab7f3490f64b14fd8c8b3e6e411914", - USDC_ibCHF_POOL: "0x1f2bcc260483443a9dd686307bb2809a78400a4f", - BOND_TREASURY: "0xc43b3b33b21dfcef48d8f35e6671c4f4be4ef8a2", - SEUR: "0xd71ecff9342a5ced620049e616c5035f1db98620", - SAUD: "0xF48e200EAF9906362BB1442fca31e0835773b8B4", - SGBP: "0x97fe22E7341a0Cd8Db6F6C021A24Dc8f4DAD855F", - SKRW: "0x269895a3dF4D73b077Fc823dD6dA1B95f72Aaf9B", - SJPY: "0xF6b1C627e95BFc3c1b4c9B825a032Ff0fBf3e07d", - SCHF: "0x0F83287FF768D1c1e17a42F44d644D7F22e8ee1d", - MIM: "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", - CVX: ADDRESSES.ethereum.CVX, - DAI: ADDRESSES.ethereum.DAI, - SUSHI: ADDRESSES.ethereum.SUSHI, - CRV: ADDRESSES.ethereum.CRV, - CVXCRV: ADDRESSES.ethereum.cvxCRV, - SPELL: "0x090185f2135308BaD17527004364eBcC2D37e5F6", - WETH: ADDRESSES.ethereum.WETH, - LDO: ADDRESSES.ethereum.LIDO, - ARMOR: "0x1337def16f9b486faed0293eb623dc8395dfe46a", - HEGIC: "0x584bc13c7d411c00c01a62e8019472de68768430", - MM: "0xa283aA7CfBB27EF0cfBcb2493dD9F4330E0fd304", - YEARN_DEPLOYER: "0x0D5Dc686d0a2ABBfDaFDFb4D0533E886517d4E83", - MASTERCHEF: "0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd", - FF_REGISTRY: "0x5C08bC10F45468F18CbDC65454Cbd1dd2cB1Ac65", - - Kp3rV2Klps: { - KP3R_WETH_1_PERCENT: "0x3f6740b5898c5D3650ec6eAce9a649Ac791e44D7", - }, - - Kp3rV1Slps: { - SUSHI_KP3R_ETH: "0xaf988afF99d3d0cb870812C325C588D8D8CB7De8", - SUSHI_KP3R_LDO: "0x79e0D4858AF8071349469B6589a3c23C1fE1586E", - SUSHI_ARMOR_KP3R: "0x9C2Efb900290402fd2b891170085B9d651bfC5Ce", - SUSHI_KP3R_MM: "0x18EE956E99cC606530C20d9CAdD6AF5EcE08d89F", - SUSHI_KP3R_HEGIC: "0x19bF7b6821473BeA075F207D6269209c856896F6", - }, - - // v2 gauges - ibCrvGauges: { - EUR: "0x19b080FE1ffA0553469D20Ca36219F17Fcf03859", - AUD: "0x3F1B0278A9ee595635B61817630cC19DE792f506", - GBP: "0xD6Ac1CB9019137a896343Da59dDE6d097F710538", - KRW: "0x8461A004b50d321CB22B7d034969cE6803911899", - JPY: "0x8818a9bb44Fbf33502bE7c15c500d0C783B73067", - CHF: "0x9c2C8910F113181783c249d8F6Aa41b51Cde0f0c", - }, - - // Iron Bank Collateral - cTokens: { - CYEUR: "0x00e5c0774a5f065c285068170b20393925c84bf3", - CYJPY: "0x215F34af6557A6598DbdA9aa11cc556F5AE264B1", - CYGBP: "0xecaB2C76f1A8359A06fAB5fA0CEea51280A97eCF", - CYCHF: "0x1b3E95E8ECF7A7caB6c4De1b344F94865aBD12d5", - CYAUD: "0x86BBD9ac8B9B44C95FFc6BAAe58E25033B7548AA", - CYKRW: "0x3c9f5385c288cE438Ed55620938A4B967c080101", - }, - - ibTokens: { - IBEUR: "0x96e61422b6a9ba0e068b6c5add4ffabc6a4aae27", - IBJPY: "0x5555f75e3d5278082200Fb451D1b6bA946D8e13b", - IBGBP: "0x69681f8fde45345C3870BCD5eaf4A05a60E7D227", - IBCHF: "0x1CC481cE2BD2EC7Bf67d1Be64d4878b16078F309", - IBAUD: "0xFAFdF0C4c1CB09d430Bf88c75D88BB46DAe09967", - IBKRW: "0x95dFDC8161832e4fF7816aC4B6367CE201538253", - }, -}; diff --git a/projects/keeper-dao/abi/liquidity.json b/projects/keeper-dao/abi/liquidity.json deleted file mode 100644 index b5a083850a1..00000000000 --- a/projects/keeper-dao/abi/liquidity.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "registeredTokens": "function registeredTokens(uint256) view returns (address)", - "kToken": "function kToken(address _token) view returns (address)", - "tokenByIndex": "function tokenByIndex(uint256) view returns (address)", - "getAllMarkets": "address[]:getAllMarkets", - "balanceOfUnderlying": "function balanceOfUnderlying(address owner) returns (uint256)", - "underlying": "address:underlying" -} \ No newline at end of file diff --git a/projects/keeper-dao/index.js b/projects/keeper-dao/index.js deleted file mode 100644 index 6b1b9b7fcd3..00000000000 --- a/projects/keeper-dao/index.js +++ /dev/null @@ -1,149 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const sdk = require('@defillama/sdk'); -const BigNumber = require('bignumber.js'); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const liquidityAbi = require('./abi/liquidity.json'); - -const LIQUIDITY_POOL_CONTRACTS = { - liquidityPoolContractV3: '0x35fFd6E268610E764fF6944d07760D0EFe5E40E5', - liquidityPoolContractV4: '0x4F868C1aa37fCf307ab38D215382e88FCA6275E2' -} -const HIDING_VAULT_START_BLOCK_NUMBER = 12690306; -const HIDING_VAULT_CONTRACT = '0xE2aD581Fc01434ee426BB3F471C4cB0317Ee672E'; -const COMPOUND_COMPTROLLER_ADDRESS = '0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B'; - -async function getToken(block, index, liquidityPool) { - try { - return (await sdk.api.abi.call({ - block, - target: liquidityPool, - params: [index], - abi: liquidityAbi['registeredTokens'], - })).output - } catch (e) { return null} -} - -async function getAllTokens(block, liquidityPool) { - let tokens = [] - for (let i = 0; ; i++) { - const token = await getToken(block, i, liquidityPool) - - if (!token) { - break; - } - - tokens.push(token) - } - - return tokens; -} - -// Calculates all the token balances in Hiding Vault NFTs minted till the given block -async function getHidingVaultBalances(timestamp, block) { - let hidingVaultBalances = {} - - // Track TVL of Hiding Vaults after it went live - if (block > HIDING_VAULT_START_BLOCK_NUMBER) { - // Get total Hiding Vault NFT count by calling totalSupply on Hiding Vault Contract - // Using erc20 lib as erc721 lib isn't supported yet. - let noOfHidingVaults = (await sdk.api.erc20.totalSupply({ - target: HIDING_VAULT_CONTRACT, - block: block - })).output; - - // numberRange to iterate over indexes of NFTs. Can migrate to any supported util func of erc721 when it is supported. - const indexRange = []; - for (let i = 0; i < +noOfHidingVaults; i++) - indexRange.push(i) - - // Query Hiding Vault Contract's 'tokenByIndex' with index to get individual HidingVaultNFTs - let totalHidingVaultNFTs = (await sdk.api.abi.multiCall({ - target: HIDING_VAULT_CONTRACT, - calls: indexRange.map((index) => ({ - params: [index], - })), - abi: liquidityAbi['tokenByIndex'], - block: block - })).output; - - totalHidingVaultNFTs = totalHidingVaultNFTs.map(hidingVaultNFT => hidingVaultNFT.output); - - // all of Compound's supply & borrow assets adresses - const { output: cTokens } = await sdk.api.abi.call( - { - block, - target: COMPOUND_COMPTROLLER_ADDRESS, - params: [], - abi: liquidityAbi["getAllMarkets"] - } - ) - - // for each of Compound's cTokens get all of hidingVaultNFT balance and the underlying token address - await Promise.all(cTokens.map(async (cTokenAddress) => { - // get the underlying token address - const isCEth = cTokenAddress.toLowerCase() === "0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5" - const { output: token } = isCEth - ? { output: ADDRESSES.null } // ETH has no underlying asset on Compound - : await sdk.api.abi.call( - { - block, - target: cTokenAddress, - params: [], - abi: liquidityAbi["underlying"] - } - ) - - // making a call to get the asset balance for each hidingVaultNFT - const calls = [] - - totalHidingVaultNFTs.forEach(hidingVaultNFT => { - calls.push({ - target: cTokenAddress, - params: [hidingVaultNFT] - }) - }) - - const underlyingBalances = await sdk.api.abi.multiCall({ - abi: liquidityAbi["balanceOfUnderlying"], - calls, - block, - }); - - // accumulating all our hidingVaultNFT balances to calculate the TVL for this cToken - const sumTotal = underlyingBalances.output.map(({ output }) => output).reduce((acc, val) => { - return (new BigNumber(acc).plus(new BigNumber(val))).toString(10) - }, "0") - - hidingVaultBalances[token] = (new BigNumber(hidingVaultBalances[token] || "0").plus(new BigNumber(sumTotal))).toString(10); - })); - } - - return hidingVaultBalances; -} - -// Calculates the token balances in Liquidity Pool Contracts till the given block -async function getLiquidityPoolBalances(timestamp, block, api) { - const toa = [] - - await Promise.all(Object.values(LIQUIDITY_POOL_CONTRACTS).map(async liquidityPool => { - let tokens = await getAllTokens(block, liquidityPool) - tokens.forEach(i => toa.push([i, liquidityPool])) - })) - return toa -} - -async function tvl(api) { - const { timestamp, block } = api - const tokensAndOwners = await getLiquidityPoolBalances(timestamp, block); - const balances = await getHidingVaultBalances(timestamp, block); - - return sumTokens2({ api, balances, tokensAndOwners }); -} - -module.exports = { - start: '2021-01-30', // 01/30/2021 @ 07:28:23 AM +UTC - ethereum: { - tvl - } -}; diff --git a/projects/kefirswap/index.js b/projects/kefirswap/index.js deleted file mode 100644 index cdd05b8a8ae..00000000000 --- a/projects/kefirswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') - -// const KEFIR = "0xf5E547C683f5d72D6A463542d3e2cC13C5470D71" -const FACTORY = "0xeEAbe2F15266B19f3aCF743E69105016277756Fb" -const WKAVA = ADDRESSES.kava.WKAVA - -module.exports = { - hallmarks: [ - [1656806400, "Rug Pull"] - ], - deadFrom: '2022-07-03', - methodology: "Count TVL as liquidity on the dex", - misrepresentedTokens: true, - kava: { - tvl: getUniTVL({ - factory: FACTORY, - useDefaultCoreAssets: true, - }), - } -} diff --git a/projects/kei-finance/index.js b/projects/kei-finance/index.js deleted file mode 100644 index 9baab1b5c3a..00000000000 --- a/projects/kei-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -module.exports = { - ethereum: { - tvl: () => 0, - staking: () => 0, - } -}; diff --git a/projects/keiko/index.js b/projects/keiko/index.js deleted file mode 100644 index 63775a6f307..00000000000 --- a/projects/keiko/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -// Correct contract addresses -const voAddress = '0x67e70761E88C77ffF2174d5a4EaD42B44Df3F64a'; // Vault Operations -const priceFeedAddress = '0x689eca147677167bc86503D90D75b8943089040f'; // Price Feed - -// Collateral token addresses -const validCollaterals = [ - ADDRESSES.hyperliquid.WHYPE, // HYPE - ADDRESSES.hyperliquid.wstHYPE, // wstHYPE - '0x5748ae796AE46A4F1348a1693de4b50560485562', // LHYPE - '0x9b498C3c8A0b8CD8BA1D9851d40D186F1872b44E', // PURR - '0x9FDBdA0A5e284c32744D2f17Ee5c74B284993463' // UBTC -]; - -const balanceOfAbi = "function balanceOf(address account) view returns (uint256)"; -const fetchPriceAbi = "function fetchPrice(address token) view returns (uint256)"; -const decimalsAbi = "function decimals() view returns (uint8)"; - -async function tvl(timestamp, block, chainBlocks, { api }) { - const collateralBalancesPromises = validCollaterals.map(collateral => - api.call({ - target: collateral, - abi: balanceOfAbi, - params: [voAddress], - }) - ); - - const collateralBalances = await Promise.all(collateralBalancesPromises); - - for (let i = 0; i < validCollaterals.length; i++) { - const collateral = validCollaterals[i]; - const balance = collateralBalances[i]; - - api.add(collateral, balance); - } - - return api.getBalances(); -} - -module.exports = { - hyperliquid: { - tvl - }, - methodology: "TVL consists of HYPE, wstHYPE, LHYPE, PURR and UBTC tokens deposited as collateral to mint KEI stablecoin in the protocol's vaults", - start: 1739958540, - timetravel: true, - hallmarks: [ - [1739958540, "Protocol Launch"] - ] -}; \ No newline at end of file diff --git a/projects/kekswap/index.js b/projects/kekswap/index.js deleted file mode 100644 index b791e1ded9a..00000000000 --- a/projects/kekswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('kekchain', '0x558e20804CDFff6d98945b12CE47FeB46D6a4Dc4') -module.exports = { - kekchain: { tvl: () => ({}), }, - deadFrom: '2023-09-30', -} \ No newline at end of file diff --git a/projects/keller-v3/index.js b/projects/keller-v3/index.js deleted file mode 100644 index fccb07e0021..00000000000 --- a/projects/keller-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - scroll: { factory: "0x952aC46B2586737df679e836d9B980E43E12B2d8", fromBlock: 4627488 }, -}) \ No newline at end of file diff --git a/projects/keller/index.js b/projects/keller/index.js deleted file mode 100644 index 20a9d8a8866..00000000000 --- a/projects/keller/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/cache/uniswap.js') -const { staking } = require('../helper/staking.js') - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL shows the sum of tokens deposited in our pools and Staking shows the number of $KELL locked in the Voting Escrow contract.', - scroll: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xbc83f7dF70aE8A3e4192e1916d9D0F5C2ee86367', hasStablePools: true, }), - staking: staking("0x3aC0Bd8433bFC451BB1E1E90CcEF697750512CA2", "0xCF4706120623c527e32493057A4DC0cae5FC8201"), - }, -} \ No newline at end of file diff --git a/projects/kelp-dao/index.js b/projects/kelp-dao/index.js deleted file mode 100644 index 2040d9bc831..00000000000 --- a/projects/kelp-dao/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const DEPOSIT_POOL = "0x036676389e48133B63a802f8635AD39E752D375D"; -const rstETH = '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7' - -const oft_tokens = { - 'arbitrum' : ADDRESSES.berachain.rsETH, - 'optimism' : ADDRESSES.berachain.rsETH, - 'manta' : ADDRESSES.berachain.rsETH, - 'mode' : ADDRESSES.berachain.rsETH, - 'blast' : ADDRESSES.berachain.rsETH, - 'scroll' : '0x65421ba909200b81640d98B979d07487C9781B66', - 'base' : '0x1Bc71130A0e39942a7658878169764Bbd8A45993', - 'linea' : ADDRESSES.berachain.rsETH, - 'xlayer' : '0x1B3a9A689Ba7555F9D7984D7Ad4025574Ed5A0f9', - 'era' : '0x6bE2425C381eb034045b527780D2Bf4E21AB7236', - 'zircuit' : ADDRESSES.berachain.rsETH, - 'swellchain' : ADDRESSES.swellchain.rsETH, - 'hemi' : ADDRESSES.swellchain.rsETH, - 'berachain' : ADDRESSES.berachain.rsETH, - 'sonic' : '0xd75787bA9ABa324420d522BdA84c08c87e5099b1' -} - -async function tvl(api) { - const supplies = await oft_supplies(api) - const config = await api.call({ abi: 'address:lrtConfig', target: DEPOSIT_POOL}) - const tokens = await api.call({ abi: 'address[]:getSupportedAssetList', target: config}) - const bals = await api.multiCall({ abi: 'function getTotalAssetDeposits(address) external view returns (uint256)', calls: tokens, target: DEPOSIT_POOL}) - api.addTokens(tokens, bals); - api.addTokens(rstETH, - supplies) // We subtract the rstETH oft on other chains from ethereum chain to avoid double counting once bridged - return api.getBalances() -} - - -const oft_tvls = async (api, oft) => { - const oft_supply = await api.call({ abi: 'erc20:totalSupply', target: oft}) - api.add(`ethereum:${rstETH}`, oft_supply, { skipChain: true }) -} - -const oft_supplies = async (api) => { - const totalSupplies = await Promise.all( - Object.keys(oft_tokens).map(async (chain) => { - const chainApi = new sdk.ChainApi({ chain, timestamp: api.timestamp}) - // await chainApi.getBlock() - return chainApi.call({ abi: 'erc20:totalSupply', target: oft_tokens[chain] }); - }) - ); - return totalSupplies.reduce((sum, value) => sum + Number(value), 0); -} - -module.exports = { - timetravel: false, - doublecounted: true, - methodology: - "deposited LSTs in deposit pool, node delegator contracts and from them into eigenlayer strategy contracts", - ethereum: { - tvl, - }, -}; - -Object.keys(oft_tokens).forEach((chain) => { - const contract = oft_tokens[chain]; - module.exports[chain] = { - tvl: async (api) => oft_tvls(api, contract), - }; -}); diff --git a/projects/kelp-gain/index.js b/projects/kelp-gain/index.js deleted file mode 100644 index b90a8e23f3d..00000000000 --- a/projects/kelp-gain/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - doublecounted: true, - methodology: "TVL corresponds to the sum of rsETH from all active loans managed by the pool and the rsETH balance held within the pool across all of the GAIN vaults.", - ethereum: { - tvl: sumERC4626VaultsExport({ - vaults: [ - '0xe1B4d34E8754600962Cd944B535180Bd758E6c2e', // Kelp Gain (agETH) - '0xc824A08dB624942c5E5F330d56530cD1598859fD', // High Growth ETH (hgETH) - '0x11eAA7a46afE1023f47040691071e174125366C8', // Grizzly Gain Vault (ggETH) - '0x9694ab1b52E51E56390EC5fD3e6f78DaAE97c312', // Concrete × Movement rsETH Vault (ctMoversETH-20%-Kelp) - '0x4f4f221ff09b01dFD2Ef2206da581262b04B9858' // Concrete × Movement WETH Vault (ctMoveWETH-20%-Kelp) - ], - isOG4626: true - }), - }, -} diff --git a/projects/keom/index.js b/projects/keom/index.js deleted file mode 100644 index 98aa7c928c1..00000000000 --- a/projects/keom/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const { mergeExports } = require("../helper/utils"); - -const config = { - polygon_zkevm: [ - { - comptroller: "0x6EA32f626e3A5c41547235ebBdf861526e11f482", - cether: "0xee1727f5074e747716637e1776b7f7c7133f16b1", - }, - ], - polygon: [ - { - comptroller: "0x5B7136CFFd40Eee5B882678a5D02AA25A48d669F", - cether: "0x7854D4Cfa7d0B877E399bcbDFfb49536d7A14fc7", - }, - ], - manta: [ - { - comptroller: "0x91e9e99AC7C39d5c057F83ef44136dFB1e7adD7d", - cether: "0x8903Dc1f4736D2FcB90C1497AebBABA133DaAC76", - }, - { - comptroller: "0xBAc1e5A0B14490Dd0b32fE769eb5637183D8655d", - cether: "0xd773ffa79258F2D7458F1B74d075F4524Ee3CCa0", - }, - ], - astrzk: [ - { - comptroller: "0xcD906c5f632daFCBD23d574f85294B32E7986fD9", - cether: "0x79D7c05352a900bE30992D525f946eA939f6FA3E", - } - ] -}; - -const data = []; - -Object.values(config).forEach((chain, i) => { - chain.forEach((item) => { - data.push({ [Object.keys(config)[i]]: compoundExports2(item) }); - }); -}); - -module.exports = mergeExports(data); \ No newline at end of file diff --git a/projects/kernel-dao/index.js b/projects/kernel-dao/index.js deleted file mode 100644 index 43ca55a1184..00000000000 --- a/projects/kernel-dao/index.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Kernel DAO contracts - * - * @see https://github.com/Kelp-DAO/kernel-smart-contracts-private/blob/develop/doc/contract-address/Mainnet.md - */ -const ASSET_REGISTRY = '0xd0B91Fc0a323bbb726faAF8867CdB1cA98c44ABB'; - - -async function tvl(api) { - const tokens = await api.call({ abi: 'address[]:getAssets', target: ASSET_REGISTRY}) - const vaults = await api.multiCall({ abi: 'function getVault(address) view returns (address)', calls: tokens, target: ASSET_REGISTRY}) - return api.sumTokens({ tokensAndOwners2: [tokens, vaults]}) -} - -module.exports = { - methodology: 'Calculates total TVL.', - start: 1733817000, - bsc: { - tvl, - } -}; diff --git a/projects/kernel/abi.js b/projects/kernel/abi.js deleted file mode 100644 index d70d466c834..00000000000 --- a/projects/kernel/abi.js +++ /dev/null @@ -1,5 +0,0 @@ -exports.abi = { - numApprovedTokens: "function numApprovedTokens() view returns (uint256)", - approvedTokens: "function approvedTokens(uint256) view returns (address)", - tokens: "function tokens(address) view returns (address vaultToken, address rateProvider, uint256 cap, uint256 deposited, bool paused)" -}; \ No newline at end of file diff --git a/projects/kernel/index.js b/projects/kernel/index.js deleted file mode 100644 index fce117aa7b3..00000000000 --- a/projects/kernel/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const abi = { - tokens: "function tokens(address) view returns (address vaultToken, address rateProvider, uint256 cap, uint256 deposited, bool paused)" -} - -const ASSETS = [ - "0xf02C96DbbB92DC0325AD52B3f9F2b951f972bf00", // krETH - "0x513D27c94C0D81eeD9DC2a88b4531a69993187cF", // ksETH - "0x0bB9aB78aAF7179b7515e6753d89822b91e670C4", // kUSD -] - -const tvl = async (api) => { - const tokens = await api.fetchList({ lengthAbi: 'numApprovedTokens', itemAbi: 'approvedTokens', calls: ASSETS, groupedByInput: true, }); - const assets = [] - const balanceCalls = [] - tokens.forEach((tokens, i) => { - assets.push(...tokens) - balanceCalls.push(...tokens.map(token => ({ target: ASSETS[i], params: token }))) - }) - const balances = (await api.multiCall({ calls: balanceCalls, abi: abi.tokens })).map(i => i.deposited) - api.add(assets, balances) -}; - -module.exports = { - doublecounted: true, - methodology: 'The TVL represents the sum of each LST deposited in the protocol', - ethereum: { - tvl, - }, -}; - diff --git a/projects/ketchupfinance/index.js b/projects/ketchupfinance/index.js deleted file mode 100644 index 2d41734c555..00000000000 --- a/projects/ketchupfinance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0x7bBcD33415984b820D31BBda6339E55A03b5F8cA"; -const token = "0x5D266f324Eb3DD753fF828fA45d80F09D7C75dff"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/kewl/index.js b/projects/kewl/index.js deleted file mode 100644 index 68969126d8e..00000000000 --- a/projects/kewl/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'chz': '0xA0BB8f9865f732C277d0C162249A4F6c157ae9D0', - 'avax': '0xA0BB8f9865f732C277d0C162249A4F6c157ae9D0', - 'arbitrum': '0xA0BB8f9865f732C277d0C162249A4F6c157ae9D0', - 'sonic': '0xA0BB8f9865f732C277d0C162249A4F6c157ae9D0', - 'base': '0x5636A64B835F4E3821C798fdA16E0bA106357646', - 'bsc': '0x5636A64B835F4E3821C798fdA16E0bA106357646', -}) diff --git a/projects/key/index.js b/projects/key/index.js deleted file mode 100644 index ddc6260f068..00000000000 --- a/projects/key/index.js +++ /dev/null @@ -1,88 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { getBlock } = require('../helper/http') - -const GmxkeyToken = '0xc5369c88440AB1FC842bCc60d3d087Bd459f20e4' -const EsGmxkeyToken = '0x3a924611895F8484194C9a791fceFb6fC07ddb85' -const MpkeyToken = '0x40a03B30D0c4D9e5E71164e041EC28CEe6dD9b36' -const GMXkeyGmxMarket = '0xC2e764eBEa35F079b03522D8C9cf7394De4EE15e' -const EsGMXkeyGmxMarket = '0x48dFF3e21843C2A81a4C5CE55535Ac444B55bDbf' -const MPkeyGmxMarket = '0x09861D732Af36Ee33490A09f24A0a3Cb06e035c1' -const UniswapGmxEthPool = '0x80A9ae39310abf666A87C743d6ebBD0E8C42158E' - -function getMarketPrice(api, fromBlock) { - return async (market, defaultPrice) => { - const logs = await getLogs({ - api, - target: market, - topic: 'TakeOrder(address,uint256,address,address,address,uint256,uint256,uint256,bool,uint256)', - eventAbi: 'event TakeOrder(address indexed account, uint256 indexed orderId, address indexed maker, address token, address currency, uint256 price, uint256 amount, uint256 filled, bool bidAsk, uint256 timestamp)', - onlyArgs: true, - skipCache: true, - fromBlock, - }) - - const targetLogs = logs - .map(({ timestamp, price }) => ({ timestamp, price })) - .sort((a, b) => a.timestamp > b.timestamp ? -1 : 1) - .slice(0, 5) - - const sum = targetLogs.reduce((prev, curr) => { - return prev + curr.price - }, 0) - - if (sum === 0) { - return defaultPrice - } - - return sum.div(targetLogs.length).toNumber() / 10 ** 4 - } -} - -function getTvl(gmxPrice, tokenPrice, totalSupply) { - const tokenSupply = totalSupply / 10 ** 18 - return gmxPrice * tokenPrice * tokenSupply -} - -async function getGmxPrice(slot0) { - const priceSqrt = slot0[0] ** 2 - const gmxPriceInEth = priceSqrt / 2 ** 192 - - return 1 / gmxPriceInEth -} - -async function tvl(api) { - const fromBlock = await getBlock(api.timestamp - (48 * 60 * 60), 'arbitrum', {}) - - const slot0 = await api.call({ - abi: 'function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)', - target: UniswapGmxEthPool, - }) - - const [totalSupplyOfGmxkey, totalSupplyOfEsGmxkey, totalSupplyOfMpkey] = await api.multiCall({ - abi: 'erc20:totalSupply', - calls: [GmxkeyToken, EsGmxkeyToken, MpkeyToken], - }) - - const gmxPrice = await getGmxPrice(slot0) - - const marketPrice = getMarketPrice(api, fromBlock) - - const gmxkeyPrice = await marketPrice(GMXkeyGmxMarket, 0.95) - const gmxkeyTvl = getTvl(gmxPrice, gmxkeyPrice, totalSupplyOfGmxkey) - - const esGmxkeyPrice = await marketPrice(EsGMXkeyGmxMarket, 0.5) - const esGmxkeyTvl = getTvl(gmxPrice, esGmxkeyPrice, totalSupplyOfEsGmxkey) - - const mpkeyPrice = await marketPrice(MPkeyGmxMarket, 0.1) - const mpkeyTvl = getTvl(gmxPrice, mpkeyPrice, totalSupplyOfMpkey) - - return { - ethereum: gmxkeyTvl + esGmxkeyTvl + mpkeyTvl, - } -} - -module.exports = { - arbitrum: { - tvl, - } -} diff --git a/projects/keyring/index.js b/projects/keyring/index.js deleted file mode 100644 index 471db63e735..00000000000 --- a/projects/keyring/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Keyring Network.', - blockchains: { - avax: { - eulerVaultOwners: [ - '0x0B50beaE6aac0425e31d5a29080F2A7Dec22754a', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/keysea/index.js b/projects/keysea/index.js deleted file mode 100644 index 17dd4b5eb88..00000000000 --- a/projects/keysea/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const KEYSEA_V1_CONTRACT = "0x28C0C1b47021C9d7BBD26c83eEa448F377F9600a" - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: KEYSEA_V1_CONTRACT, api }) -} - -module.exports = { - methodology: `We count the ETH on ${KEYSEA_V1_CONTRACT}`, - linea: { - tvl - } -} \ No newline at end of file diff --git a/projects/kicks/index.js b/projects/kicks/index.js deleted file mode 100644 index b3ab5e8180a..00000000000 --- a/projects/kicks/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -const STAKING = "0x7f435dC15CD9d686C48B6beD2cB8d32D895cfb93" -const TOKEN = "0xfEB4e9B932eF708c498Cc997ABe51D0EE39300cf" - -module.exports = { - methodology: "TVL counted from the KICKS contracts", - bsc: { - tvl: () => ({}), - staking: async (api) => { - const bal = await api.call({ abi: 'uint256:totalSupply', target: STAKING }) - api.add(TOKEN, bal) - }, - }, -} \ No newline at end of file diff --git a/projects/killswitch/index.js b/projects/killswitch/index.js deleted file mode 100644 index b996afc9515..00000000000 --- a/projects/killswitch/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const axios = require('axios') - -const chains = ['bsc','kcc', 'aurora', 'clv'] -const url = 'https://api.killswitch.finance/ksw/tvl' - -const tvl = async (api) => { - const { data } = await axios.get(url) - return api.addUSDValue(Math.round(data.summary[api.chain])) -} - -module.exports = { - timetravel: false, - doublecounted: true, - misrepresentedTokens: true, -} - -chains.forEach((chain) => { - if (chain === 'clv') return module.exports[chain] = { tvl: () => ({}) }; - module.exports[chain] = { tvl } -}) - diff --git a/projects/kiloex/index.js b/projects/kiloex/index.js deleted file mode 100644 index 5ded2bcbc9b..00000000000 --- a/projects/kiloex/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const owners = ["0x1c3f35F7883fc4Ea8C4BCA1507144DC6087ad0fb", "0xfE03be1b0504031e92eDA810374222c944351356","0xef7aF0804AAB3885da59a8236fabfA19DDc6Cf48","0x49182d209CD5DF1BB6D20b3A924a6968E2716DE7","0x8d47Bce687D4aEbbB827769af93f853314829B1e","0x637142fC3410DdAC81E1Ef206708185323E9e7DA","0x41601Ff5B9e09c2572fE137Dc3f5502584d02B98","0xA586438a641bF1D44938Dabe819249D55E88C040"]; -const opbnb_owners = ["0xA2E2F3726DF754C1848C8fd1CbeA6aAFF84FC5B2", "0x1EbEd4024308afcb05E6938eF8Ebd1ec5d6E8C46", "0x1Bc6F42D6D1680115A52F82DFA29265085E91d93"]; -const manta_owners = ["0xA2E2F3726DF754C1848C8fd1CbeA6aAFF84FC5B2", "0x1EbEd4024308afcb05E6938eF8Ebd1ec5d6E8C46", "0x471C5e8Cc0fEC9aeeb7ABA6697105fD6aaaDFf99","0xa10f74374b8bE9E9C8Fb62c1Dc17B8D4247E332A"]; -const manta_stone_token = ADDRESSES.berachain.STONE; -const manat_manta_token = "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5"; -const taiko_owners = ["0x735D00A9368164B9dcB2e008d5Cd15b367649aD5", "0x235C5C450952C12C8b815086943A7bBCF96bc619","0x2646E743A8F47b8d2427dBcc10f89e911f2dBBaa"]; -const bsquared_owners = ["0xA2E2F3726DF754C1848C8fd1CbeA6aAFF84FC5B2", "0x1EbEd4024308afcb05E6938eF8Ebd1ec5d6E8C46","0xB20Faa4BA0DdEbDe49299557f4F1ebB5532745e3"]; -const base_owners = ["0x43E3E6FFb2E363E64cD480Cbb7cd0CF47bc6b477", "0x7BC8D56cC78cF467C7230B77De0fcBDea9ac44cE","0xdf5ACC616cD3ea9556EC340a11B54859a393ebBB"]; - -module.exports = { - start: '2023-08-02', - bsc: { tvl: sumTokensExport({ owners, tokens: [ - ADDRESSES.bsc.USDT, ADDRESSES.ethereum.FDUSD, ADDRESSES.scroll.STONE, - ADDRESSES.bsc.WBNB, //WBNB - '0xba2ae424d960c26247dd6c32edc70b295c744c43', //DOGE - ADDRESSES.bsc.BTCB, //BTCB - '0xb0b84d294e0c75a6abe60171b70edeb2efd14a1b',//slisBNB - '0x0782b6d8c4551b9760e74c0545a9bcd90bdc41e5',//lisUSD - ADDRESSES.bsc.USDC, //usdc - ADDRESSES.swellchain.stBTC, //stBTC - '0x4aae823a6a0b376de6a78e74ecc5b079d38cbcf7', //SolvBTC - '0x2a3dc2d5daf9c8c46c954b8669f4643c6b1c081a', //uBTC - '0x90869b3a42E399951bd5F5fF278B8CC5ee1Dc0fE', //REX - '0x6386Adc4BC9c21984E34fD916BB349dD861742af', //debox - '0x503Fa24B7972677F00C4618e5FBe237780C1df53' //kilo - ], }) }, - op_bnb: { - tvl: sumTokensExport({ owners: opbnb_owners, tokens: [ - ADDRESSES.op_bnb.USDT, - ADDRESSES.base.DAI, //FDUSD - ADDRESSES.optimism.WETH_1, //WBNB - ADDRESSES.defiverse.USDC, //BTCB - ADDRESSES.defiverse.ETH, //ETH - '0xe3C0FF176eF92FC225096C6d1788cCB818808b35', //oBTC - ] }) - }, - manta: { - tvl: sumTokensExport({ owners: manta_owners, tokens: [ - ADDRESSES.manta.USDT, manta_stone_token, manat_manta_token, - '0x7746ef546d562b443ae4b4145541a3b1a3d75717', //vMANTA - ADDRESSES.manta.USDC, //USDC - ] }) - }, - taiko: { - tvl: sumTokensExport({ owners: taiko_owners, tokens: [ - ADDRESSES.taiko.USDC, - ADDRESSES.taiko.USDC_e, //USDC.e - ] }) - }, - bsquared: { - tvl: sumTokensExport({ owners: bsquared_owners, tokens: [ - ADDRESSES.bsquared.USDT, - ADDRESSES.bsquared.USDC, //USDC - ADDRESSES.bsquared.BSTONE, //BSTONE - ADDRESSES.bsquared.UBTC,//uBTC - ] }) - }, - base: { - tvl: sumTokensExport({ owners: base_owners, tokens: [ - ADDRESSES.base.USDC, //USDC - '0x3b86ad95859b6ab773f55f8d94b4b9d443ee931f', //SolvBTC - ADDRESSES.ethereum.cbBTC,//cbBTC - ADDRESSES.blast.weETH,//weETH - ADDRESSES.base.wstETH,//wstETH - '0xF469fBD2abcd6B9de8E169d128226C0Fc90a012e','0xD2012fc1B913cE50732ebcaa7E601fe37Ac728C6','0x12418783e860997eb99e8aCf682DF952F721cF62','0xe3C0FF176eF92FC225096C6d1788cCB818808b35' - ] }) - }, -}; diff --git a/projects/kim-v2/index.js b/projects/kim-v2/index.js deleted file mode 100644 index bb5564ecfa0..00000000000 --- a/projects/kim-v2/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - mode: { - tvl: getUniTVL({ factory: "0xc02155946dd8C89D3D3238A6c8A64D04E2CD4500", useDefaultCoreAssets: true, }), - }, - base: { - tvl: getUniTVL({ factory: "0x14658340D7D1c112b62509bbF449be1897e8dE01", useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/kim-v4/index.js b/projects/kim-v4/index.js deleted file mode 100644 index 775c89aebaa..00000000000 --- a/projects/kim-v4/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - mode: { - factory: '0xB5F00c2C5f8821155D8ed27E31932CFD9DB3C5D5', - fromBlock: 4823915, - isAlgebra: true, - }, - base: { - factory: '0x2F0d41f94d5D1550b79A83D2fe85C82d68c5a3ca', - fromBlock: 15395969, - isAlgebra: true, - }, -}) diff --git a/projects/kim-vaults/index.js b/projects/kim-vaults/index.js deleted file mode 100644 index a81af95c9d3..00000000000 --- a/projects/kim-vaults/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const STEER_VAULTS = [ - "0x23c17a512d486d6f46db63a8dd5144b352497762", - "0x4236fc0a5c47857777dd1578b7e825c8ccadca88", - "0x4c8d1a52ee90b04ff8ee1257ad12290d89d13e6f", - "0x554310f5d636dfc1122308a10f2b9936681f76de", - "0x5aa27d5d8aff8cd5e683e23812124ace4aa5af7d", - "0x83556d8bba69bdd159f50b2127ccc88bebf73e39", - "0x879f9998c68cdaf28e4808fcc2b4f174c3cc5d97", - "0x8bc0cd048cea0ebff9e81eeb79842c86c501ea3b", - "0x908731366f82668ddd3ae3b2498adf52604e892d", - "0xa212659dd4b71947268ff2037a654ce03730d857", - "0xac8c89516bc4b60621c5326446e33680357bb3d2", - "0xacb9a8676fc6ada472611a62354bf47502969287", - "0xc07df1d13188c081f770944ece48e469b326b2a5", - "0xc40d4d88afc7b03c65391cbfb6f399f464f6ab03", - "0xcf4664fd4d0cabfcbbcbd4b6c2ecb71ac120d0c3" -]; - -async function tvl(api) { - const token0s = await api.multiCall({ abi: 'address:token0', calls: STEER_VAULTS }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: STEER_VAULTS }) - const bals = await api.multiCall({ - abi: 'function getTotalAmounts() view returns (uint256 bal0, uint256 bal1)', - calls: STEER_VAULTS - }) - bals.forEach(({ bal0, bal1 }, i) => { - api.add(token0s[i], bal0) - api.add(token1s[i], bal1) - }) -} - -module.exports = { - mode: { - tvl, - }, -}; diff --git a/projects/kimberlite/abi.json b/projects/kimberlite/abi.json deleted file mode 100644 index b47a8837140..00000000000 --- a/projects/kimberlite/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "depositId": "uint256:depositId", - "lockedToken": "function lockedToken(uint256) view returns (address tokenAddress, address withdrawalAddress, uint256 tokenAmount, uint256 unlockTime, string memory lockName, string memory lockDescription, bool withdrawn)" -} diff --git a/projects/kimberlite/config.js b/projects/kimberlite/config.js deleted file mode 100644 index aa21ddd727b..00000000000 --- a/projects/kimberlite/config.js +++ /dev/null @@ -1,61 +0,0 @@ -const config = { - kimberliteSafeETH: { - chain: "ethereum", - locker: "0x1492AfF2D39fa5fFBF717DE80B15DCf3311B1BAb", - startBlock: 17029807 - }, - kimberliteSafeBSC: { - chain: "bsc", - locker: "0xFb22A44FF24D599600A90eea13B14b5662b10353", - startBlock: 25521834 - }, - kimberliteSafePLS: { - chain: "pulse", - locker: "0x5752Ed96a3Bfe6bdA9A290230e02E5e9E3A6e955", - startBlock: 17366715 - }, - kimberliteSafeMETIS: { - chain: "metis", - locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", - startBlock: 4228174 - }, - kimberliteSafeCORE: { - chain: "core", - locker: "0xCa308C3B5e008148A8665c77073b0335AecF627c", - startBlock: 852565 - }, - kimberliteSafeMATIC: { - chain: "polygon", - locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", - startBlock: 37286221 - }, - kimberliteSafeDOGE: { - chain: "dogechain", - locker: "0x1492AfF2D39fa5fFBF717DE80B15DCf3311B1BAb", - startBlock: 5552716 - }, - kimberliteSafeARB: { - chain: "arbitrum", - locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", - startBlock: 49220342 - }, - kimberliteSafeZkEVM: { - chain: "polygon_zkevm", - locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", - startBlock: 279366 - }, - kimberliteSafeKAVA: { - chain: "kava", - locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", - startBlock: 4533304 - }, - kimberliteSafeApe: { - chain: "apechain", - locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", - startBlock: 7797536 - }, -} - -module.exports = { - config -} diff --git a/projects/kimberlite/index.js b/projects/kimberlite/index.js deleted file mode 100644 index 5f3c70c5beb..00000000000 --- a/projects/kimberlite/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { config } = require('./config') -const abi = require('./abi.json') -const { sumUnknownTokens, } = require('../helper/unknownTokens') - -module.exports = { - methodology: 'Counts TVL of all the tokens locked on the Kimberlite Safe locker smart contracts' -}; - -Object.values(config).forEach(({ chain, locker, startBlock }) => { - module.exports[chain] = { - tvl: async (api) => { - const data = await api.fetchList({ lengthAbi: abi.depositId, itemAbi: abi.lockedToken, target: locker, startFromOne: true, }) - const tokensAndOwners = data - // .filter(i => !i.withdrawn) - .map((i) => [i.tokenAddress, locker]) - return sumUnknownTokens({ api, tokensAndOwners, useDefaultCoreAssets: true, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/kimochifinance/index.js b/projects/kimochifinance/index.js deleted file mode 100644 index 37ce13bca09..00000000000 --- a/projects/kimochifinance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const MasterChefContract = "0xc88264770C43826dE89bCd48a5c8BC5073e482a5"; -const KIMOCHI = "0x4dA95bd392811897cde899d25FACe253a424BfD4"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(MasterChefContract, "bsc", KIMOCHI), - methodology: "TVL includes all farms in MasterChef contract", -}; diff --git a/projects/kinefinance/abi.json b/projects/kinefinance/abi.json deleted file mode 100644 index f715ccbd819..00000000000 --- a/projects/kinefinance/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getAllMarkets": "address[]:getAllMarkets", - "underlying": "address:underlying", - "totalBorrows": "uint256:totalBorrows" -} \ No newline at end of file diff --git a/projects/kinefinance/index.js b/projects/kinefinance/index.js deleted file mode 100644 index 1acca3eee2e..00000000000 --- a/projects/kinefinance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -const config = { - ethereum: { comptroller: '0xbb7d94a423f4978545ecf73161f0678e8afd1a92', cether: '0xa58e822de1517aae7114714fb354ee853cd35780', kMcd: '0xaf2617aa6fd98581bb8cb099a16af74510b6555f' }, - bsc: { comptroller: '0x3c2ddd486c07343b711a4415cdc9ab90ed32b571', cether: '0x5fbe4eb536dadbcee54d5b55ed6559e29c60b055', kMcd: '0x4f1ab95b798084e44d512b8b0fed3ef933177986' }, - polygon: { comptroller: '0xdff18ac4146d67bf2ccbe98e7db1e4fa32b96881', cether: '0xf186a66c2bd0509beaafca2a16d6c39ba02425f9', kMcd: '0xcd6b46443becad4996a70ee3d8665c0b86a0c54c' }, - avax: { comptroller: '0x0ec3126390c606be63a0fa6585e68075f06679c6', cether: '0x0544be6693763d64c02f49f16986ba1390a2fc39', kMcd: '0xcd6b46443becad4996a70ee3d8665c0b86a0c54c' }, -} - -Object.keys(config).forEach(chain => { - const {comptroller, cether, kMcd,} = config[chain] - module.exports[chain] = { - tvl: compoundExports2({ comptroller, cether, blacklistedTokens: kMcd ? [kMcd] : []}).tvl - } -}) \ No newline at end of file diff --git a/projects/kinesis/index.js b/projects/kinesis/index.js deleted file mode 100644 index 80075d5d2b8..00000000000 --- a/projects/kinesis/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const poolAddresses_evmos = [ - //NomadBasePoolAddress - "0x49b97224655AaD13832296b8f6185231AFB8aaCc", - //CelerBasePool - "0xbBD5a7AE45a484BD8dAbdfeeeb33E4b859D2c95C", - //GravityBasePool - "0xc3f87b7841aE962557d17010b285f8BC3C3d4408", - // Old DAI Base Pool - "0xbB3c0ea4Df6C9cd7D0734bb4952D8F27a0361a21", - // Old USDC Base Pool - "0x735cad6e573a1963AC381d86bC06a8976BF8F8a6", - // Old USDT Base Pool - "0x81f47A9BEE24c48DB0D6aCC8D22446F2aBeeFF26", - // New DAI Base Pool - "0x155377C4f5489026cD8340fF350ae6aa082FBE69", - // New USDC Base Pool - "0x35bF604084FBE407996c394D3558E58c90281000", - // New USDT Base Pool - "0x89E9703309DA4aC51C739D7d674F91489830310E", -]; - -// Bridged Nomad Stablecoins -const madUSDC = ADDRESSES.evmos.USDC; -const madUSDT = ADDRESSES.evmos.USDT; -const FRAX = ADDRESSES.evmos.FRAX; - -// Bridged Celer Stablecoins -const ceDAI = "0x940dAAbA3F713abFabD79CdD991466fe698CBe54"; -const ceUSDC = ADDRESSES.evmos.ceUSDC; -const ceUSDT = ADDRESSES.evmos.ceUSDT; - -// Bridged Axelar Stablecoins -const axlDAI = "0x4A2a90D444DbB7163B5861b772f882BbA394Ca67"; -const axlUSDC = ADDRESSES.evmos.AXL_USDC; -const axlUSDT = "0xe01C6D4987Fc8dCE22988DADa92d56dA701d0Fe0"; - -// Bridged Gravity Stablecoins -const gravDAI = ADDRESSES.functionx.PUNDIX; -const gravUSDC = ADDRESSES.functionx.PURSE; -const gravUSDT = ADDRESSES.functionx.USDT; - -module.exports = { - evmos: { - tvl: sumTokensExport({ - owners: poolAddresses_evmos, - tokens: [madUSDC, madUSDT, axlDAI, axlUSDC, axlUSDT, ceDAI, ceUSDC, ceUSDT, gravDAI, gravUSDC, gravUSDT, FRAX], - }), - }, - methodology: - "Counts as TVL all the Assets deposited on EVMOS through different Pool Contracts", -}; diff --git a/projects/kinetic/index.js b/projects/kinetic/index.js deleted file mode 100644 index 5483f6d0104..00000000000 --- a/projects/kinetic/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const sdk = require('@defillama/sdk'); - -module.exports = { - flare: { - tvl: sdk.util.sumChainTvls([ - compoundExports2({ comptroller: '0x8041680Fb73E1Fe5F851e76233DCDfA0f2D2D7c8' }).tvl, - compoundExports2({ comptroller: '0xDcce91d46Ecb209645A26B5885500127819BeAdd', cether: '0xd7291D5001693d15b6e4d56d73B5d2cD7eCfE5c6' }).tvl, - compoundExports2({ comptroller: '0x15F69897E6aEBE0463401345543C26d1Fd994abB' }).tvl - ]), - borrowed: sdk.util.sumChainTvls([ - compoundExports2({ comptroller: '0x8041680Fb73E1Fe5F851e76233DCDfA0f2D2D7c8' }).borrowed, - compoundExports2({ comptroller: '0xDcce91d46Ecb209645A26B5885500127819BeAdd', cether: '0xd7291D5001693d15b6e4d56d73B5d2cD7eCfE5c6' }).borrowed, - compoundExports2({ comptroller: '0x15F69897E6aEBE0463401345543C26d1Fd994abB' }).borrowed - ]) - } -} \ No newline at end of file diff --git a/projects/kinetiq-earn/index.js b/projects/kinetiq-earn/index.js deleted file mode 100644 index 168fe05b5a6..00000000000 --- a/projects/kinetiq-earn/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const kHype = '0xfd739d4e423301ce9385c1fb8850539d657c296d' -const kHypeEarn = '0x9BA2EDc44E0A4632EB4723E81d4142353e1bB160' -const WHYPE = '0x5555555555555555555555555555555555555555' -const accountant = '0x74392Fa56405081d5C7D93882856c245387Cece2' - -const tvl = async (api) => { - const [supply, getRate, balance] = await Promise.all([ - api.call({ target: kHypeEarn, abi: 'erc20:totalSupply' }), - api.call({ target: accountant, abi: 'uint256:getRate' }), - api.call({ target: kHype, abi: 'erc20:balanceOf', params: [kHypeEarn] }), - ]) - - const kHypeBalance = getRate / 1e18 * balance - const whypeBalance = +supply - kHypeBalance - - api.add(WHYPE, whypeBalance) - api.add(kHype, kHypeBalance) -} - -module.exports = { - doublecounted: true, - timetravel: false, - hyperliquid: { tvl } -} \ No newline at end of file diff --git a/projects/kinetiq/index.js b/projects/kinetiq/index.js deleted file mode 100644 index 0a520deef93..00000000000 --- a/projects/kinetiq/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const axios = require('axios'); -const sdk = require('@defillama/sdk') - -const HYPERLIQUID_MAINNET_RPC_URL = 'https://api.hyperliquid.xyz'; - -const kHype = '0xfD739d4e423301CE9385c1fb8850539D657C296D' -const accountant = '0x9209648Ec9D448EF57116B73A2f081835643dc7A' - -const abis = { - kHYPEToHYPE: "function kHYPEToHYPE(uint256 kHYPEAmount) view returns (uint256)", - totalQueuedWithdrawals: "function totalQueuedWithdrawals() view returns (uint256)", -} - -const managers = [ - '0x393D0B87Ed38fc779FD9611144aE649BA6082109', // kHype - '0xaD492f9CADcccE9c3c213edd8aE55c152cD3A3ad', // hiHype - '0xfdd35c5179E8594E237031dd945E0584Af29572b', // flowHype - '0x0c5d890Cf52973aE4A7b10fA7EE18e146d13D87B', // asxnHype - '0x09B4cdA849037D1717e91D201EE416bf1c113895', // hylqHype -] - -const getUserStakingSummary = async (user) => { - const url = `${HYPERLIQUID_MAINNET_RPC_URL}/info`; - const response = await axios.post(url, { type: 'delegatorSummary', user }); - return response.data; -}; - -const tvl = async (api) => { - const [_hypeBalances, _delegatedBalances] = await Promise.all([ - Promise.all(managers.map((m) => sdk.api.eth.getBalance({ target: m, chain: 'hyperliquid' }))), - Promise.all(managers.map((m) => getUserStakingSummary(m))) - ]); - - const buffBalance = await api.call({ target: "0x393D0B87Ed38fc779FD9611144aE649BA6082109", abi: abis.totalQueuedWithdrawals }) - const hypeBalance = await api.call({ target: accountant, params: [buffBalance], abi: abis.kHYPEToHYPE }) - api.addGasToken(hypeBalance) - - managers.forEach((_, index) => { - const hypeBalance = _hypeBalances[index].output - const _delegatedBalance = _delegatedBalances[index] - const { delegated, undelegated, totalPendingWithdrawal } = _delegatedBalance - const delegatedBalance = (+delegated + +undelegated - +totalPendingWithdrawal) * 1e18 - api.addGasToken(+hypeBalance + delegatedBalance) - }) -} - -module.exports = { - timetravel: false, - hyperliquid: { tvl } -} \ No newline at end of file diff --git a/projects/kinetix-derivatives-v2/index.js b/projects/kinetix-derivatives-v2/index.js deleted file mode 100644 index bd5cee17be1..00000000000 --- a/projects/kinetix-derivatives-v2/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const { nullAddress } = require("../helper/unwrapLPs"); - -async function KavaTvl(api) { - const tokens = [nullAddress, ADDRESSES.kava.USDt]; - const owners = ["0xB5CE30B6EBAA252bDEac2F768EF9b1e4Bdf8d120"]; - return api.sumTokens({ owners, tokens }); -} - -module.exports = { - kava: { - tvl: KavaTvl, - }, -}; diff --git a/projects/kinetix-v2/index.js b/projects/kinetix-v2/index.js deleted file mode 100644 index e954dd1f360..00000000000 --- a/projects/kinetix-v2/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - kava: { - tvl: getUniTVL({ - factory: "0xE8E917BC80A26CDacc9aA42C0F4965d2E1Fa52da", - useDefaultCoreAssets: true, - }), - }, - base: { - tvl: getUniTVL({ - factory: "0x8aD3d3e6B1b7B65138bD508E48330B544539b2C3", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/kinetix-v3/index.js b/projects/kinetix-v3/index.js deleted file mode 100644 index 8361c26f38d..00000000000 --- a/projects/kinetix-v3/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { uniV3GraphExport } = require('../helper/uniswapV3') - -module.exports = { - kava: { - tvl: uniV3GraphExport({ - graphURL: 'https://kava-graph-node.metavault.trade/subgraphs/name/kinetixfi/v3-subgraph', - name: 'kinetixfi/kava-v3', - }) - }, - base: { - tvl: uniV3GraphExport({ - graphURL: 'https://api.studio.thegraph.com/query/55804/kinetixfi-base-v3/version/latest', - name: 'kinetixfi/base-v3', - }) - } -} diff --git a/projects/kinetix/index.js b/projects/kinetix/index.js deleted file mode 100644 index 062d667e7cb..00000000000 --- a/projects/kinetix/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { gmxExports } = require('../helper/gmx') -const { staking } = require('../helper/staking'); - -const KAI_ADDRESS_KAVA = "0x52369B1539EA8F4e1eadEEF18D85462Dcf9a3658" -const veKAI_ADDRESS_KAVA = "0x2A0A26D08E2F7A8E86431Ddf6910Fe7cD59b9908" - -module.exports = { - kava: { - tvl: gmxExports({ vault: "0xa721f9f61CECf902B2BCBDDbd83E71c191dEcd8b", }), - staking: staking(veKAI_ADDRESS_KAVA, KAI_ADDRESS_KAVA), - }, -}; \ No newline at end of file diff --git a/projects/king-finance/index.js b/projects/king-finance/index.js deleted file mode 100644 index f42fd8eb208..00000000000 --- a/projects/king-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { staking } = require('../helper/staking') - -const POOL2S = '0x66e5388c84da5a30ebe58eeac73bbceb59c9f1ae' - -module.exports = { - bsc: { - tvl: () => 0, - staking: staking(POOL2S, '0x74f08aF7528Ffb751e3A435ddD779b5C4565e684'), - } -} diff --git a/projects/king/index.js b/projects/king/index.js deleted file mode 100644 index 77e41f8b3b1..00000000000 --- a/projects/king/index.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - methodology: 'Tokens on the king contract', -} - -const config = { - ethereum: '0x8F08B70456eb22f6109F57b8fafE862ED28E6040', -} - -Object.keys(config).forEach(chain => { - const king = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.call({ abi: 'address[]:allTokens', target:king }) - return api.sumTokens({ owner: king, tokens }) - } - } -}) \ No newline at end of file diff --git a/projects/kingdefi/index.js b/projects/kingdefi/index.js deleted file mode 100644 index 233259bc99a..00000000000 --- a/projects/kingdefi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking"); - -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'polygon', - masterchef: '0x445AcaE7E3e6248B9b6ebbb002126211e7836Dd8', - }), - masterchefExports({ - chain: 'bsc', - masterchef: '0x49A44ea2B4126CC1C53C47Ed7f9a5905Cbecae8d', - nativeToken: '0x1446f3cedf4d86a9399e49f7937766e6de2a3aab', - }), - { bsc: { staking: staking('0x98F3b99198E164f50272ea5Ba44Ea76B1a439876', '0x1446f3cedf4d86a9399e49f7937766e6de2a3aab')}} -]) \ No newline at end of file diff --git a/projects/kinto/index.js b/projects/kinto/index.js deleted file mode 100644 index f88f344113a..00000000000 --- a/projects/kinto/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x0f1b7bd7762662B23486320AA91F30312184f70C", - "0x859a53Fe2C8DA961387030E7CB498D6D20d0B2DB", - "0x7870D5398DB488c669B406fBE57b8d05b6A35e42" - ], - fetchCoValentTokens: true, - }), - }, - deadFrom: '2025-09-07', // https://x.com/KintoXYZ/status/1964721235675537573 -}; diff --git a/projects/kintsugi/api.js b/projects/kintsugi/api.js deleted file mode 100644 index f62a416c2e2..00000000000 --- a/projects/kintsugi/api.js +++ /dev/null @@ -1,49 +0,0 @@ - -const { getAPI } = require('../helper/acala/api') - -async function tvl(){ - const api = await getAPI('kintsugi'); - const kintsugiTVL = {} - - // Fetch total BTC locked (= kBTC minted) - const tokens = await api.query.tokens.totalIssuance.entries() - const kBTCTokenStorageKey = "0x99971b5749ac43e0235e41b0d378691857c875e4cff74148e4628f264b974c801fce6bee3ae455b7000b" - for (const t of tokens){ - if(t[0] == kBTCTokenStorageKey){ - kintsugiTVL["kintsugi-btc"] = parseInt(t[1])/1e8 - break - } - } - - // Fetch collateral locked to secure kBTC - const collaterals = await api.query.vaultRegistry.totalUserVaultCollateral.entries() - - const collateralStorageKeys = { - kusama : "0x8402aaa79721798ff725d48776181a44a42c51e2c6fef3b5d83341e8096ff7bf86912b1520d5063e99eae244999431f6000a000b", - kintsugi : "0x8402aaa79721798ff725d48776181a44a42c51e2c6fef3b5d83341e8096ff7bf40a58d492a448a966b0e1f6b9d219c44000c000b" - } - - for (const col of collaterals){ - // check against KSM collateral storage key - if(col[0] == collateralStorageKeys.kusama){ - kintsugiTVL.kusama = parseInt(col[1]/1e12) - continue; - } - // check against KINT collateral storage key - if(col[0] == collateralStorageKeys.kintsugi){ - kintsugiTVL.kintsugi = parseInt(col[1]/1e10) - continue; - } - } - - return kintsugiTVL -} - - -module.exports = { - timetravel: false, - methodology: "Tracks BTC wrapped and assets locked as collateral by Vaults in kBTC bridge protocol.", - kintsugi: { tvl } -}; - - diff --git a/projects/kintsugi/index.js b/projects/kintsugi/index.js deleted file mode 100644 index 2af081add28..00000000000 --- a/projects/kintsugi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports('kintsugi', ['kintsugi']), -} \ No newline at end of file diff --git a/projects/kinza/index.js b/projects/kinza/index.js deleted file mode 100644 index 20436d652a8..00000000000 --- a/projects/kinza/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - methodology: methodologies.lendingMarket, - bsc: aaveExports('bsc', '0x37D7Eb561E189895E5c8601Cd03EEAB67C269189', undefined, ['0x09ddc4ae826601b0f9671b9edffdf75e7e6f5d61'], { v3: true, }), - op_bnb: aaveExports('op_bnb', '0xcf46F77cD75a17900d59676fBe4B88aAdcBA9533', undefined, ['0xBb5f2d30c0fC9B0f71f7B19DaF19e7Cf3D23eb5E'], { v3: true, }), - mantle: aaveExports('mantle', '0xad48812a9d81aCf8De5bfc93c7d6d7165920aBc2', undefined, ['0x18cc2c55b429EE08748951bBD33FF2e68c95ec38'], { v3: true, }), - ethereum: aaveExports('ethereum', '0x37c9E6eEAbE799878FF9d32984A3a0b91243cbC6', undefined, ['0xE44990a8a732605Eddc0870597d2Cf4A2637F038'], { v3: true, }), -}; diff --git a/projects/kittenswap-algebra/index.js b/projects/kittenswap-algebra/index.js deleted file mode 100644 index d96b7a8dfa8..00000000000 --- a/projects/kittenswap-algebra/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { uniV3GraphExport } = require("../helper/uniswapV3") - -const config = { - hyperliquid: 'https://api.goldsky.com/api/public/project_cmcxkn8h7pwwc01x30a5e6t39/subgraphs/cl-analytics-prod/v1.0.0/gn' -} - -Object.keys(config).forEach(chain => { - const graphURL = config[chain] - module.exports[chain] = { - tvl: uniV3GraphExport({ graphURL, name: 'kittenswap-algebra'+chain, blacklistedTokens: ['0x1d25eeeee9b61fe86cff35b0855a0c5ac20a5feb'] }) - } -}) \ No newline at end of file diff --git a/projects/kittenswap-cl/index.js b/projects/kittenswap-cl/index.js deleted file mode 100644 index 4d16bbfac08..00000000000 --- a/projects/kittenswap-cl/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - hyperliquid: { - factory: '0x2E08F5Ff603E4343864B14599CAeDb19918BDCaF', - fromBlock: 2033100, - eventAbi: "event PoolCreated(address indexed token0, address indexed token1, int24 indexed tickSpacing, address pool)", - topics: ['0xab0d57f0df537bb25e80245ef7748fa62353808c54d6e528a9dd20887aed9ac2'], - }, -}) \ No newline at end of file diff --git a/projects/kittenswap/index.js b/projects/kittenswap/index.js deleted file mode 100644 index 202cccba6fd..00000000000 --- a/projects/kittenswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require("../helper/unknownTokens"); -module.exports = uniTvlExports({ - hyperliquid: "0xDa12F450580A4cc485C3b501BAB7b0B3cbc3B31B", -}); diff --git a/projects/kittyfinance/index.js b/projects/kittyfinance/index.js deleted file mode 100644 index 96279eddd05..00000000000 --- a/projects/kittyfinance/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const avaxCat = "0x094BFaC9894d2A2A35771D0BD6d2447689190F32"; -const polyCat = "0xB932D203f83B8417Be0F61D9dAFad09cc24a4715"; -const polyChef = "0xc17c09f7615c660dd5A7C1051E096240CF75685a"; -const avaxChef = "0xb7e2eBb3E667A542cDd07e8d108D5fF618315a18"; -const avaxNursery = "0xDB75c7b1f8D54Fd02C456609F985F5229634429A"; -const polyNursery = "0xA87b3c515C5D50AF8c876709e2A92e5859cd198B"; -const polyLPs = [ - "0xcA75C4aA579c25D6ab3c8Ef9A70859ABF566fA1d", // KITTY-MATIC LP - "0x3C443ca1c986258bEb416cC35FAE95060Ac4Ab13", //CAT-MATIC LP -]; -const avaxLPs = [ - "0xbC61C7eCEf56E40404fC359ef4dfd6E7528f2B09", // KITTY-AVAX LP - "0x2d9A57C484C60241f5340a145a3004c7E4cfE040", // CAT-AVAX LP -]; - -module.exports = { - polygon: { - tvl: async () => ({}), - pool2: pool2(polyChef, polyLPs), - staking: staking(polyNursery, polyCat), - }, - avax: { - tvl: async () => ({}), - pool2: pool2(avaxChef, avaxLPs), - staking: staking(avaxNursery, avaxCat), - }, -}; diff --git a/projects/kittypunch-kona-stableswap/abi.json b/projects/kittypunch-kona-stableswap/abi.json deleted file mode 100644 index 1e5a53712a8..00000000000 --- a/projects/kittypunch-kona-stableswap/abi.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "get_registry": "address:get_registry", - "pool_list": "function pool_list(uint256 arg0) view returns (address)", - "pool_count": "uint256:pool_count", - "get_id_info": "function get_id_info(uint256 arg0) view returns (address addr, bool is_active, uint256 version, uint256 last_modified, string description)", - "get_n_coins": { - "stableswap": "function get_n_coins(address _pool) view returns (uint256[2])", - "stableFactory": "function get_n_coins(address _pool) view returns (uint256)", - "crypto": "function get_n_coins(address _pool) view returns (uint256)", - "cryptoFactory": "function get_n_coins(address _pool) view returns (uint256)", - "triCryptoFactory": "function get_coins(address _pool) view returns (address[3])", - "CurveStableswapFactoryNG": "function get_n_coins(address _pool) view returns (uint256)" - }, - "get_coins": { - "stableswap": "function get_coins(address _pool) view returns (address[8])", - "stableFactory": "function get_coins(address _pool) view returns (address[4])", - "crypto": "function get_coins(address _pool) view returns (address[8])", - "cryptoFactory": "function get_coins(address _pool) view returns (address[2])", - "triCryptoFactory": "function get_coins(address _pool) view returns (address[3])", - "CurveStableswapFactoryNG": "function get_coins(address _pool) view returns (address[])", - "CurveTwocryptoFactoryNG": "function get_coins(address _pool) view returns (address[2])", - "CurveTricryptoFactoryNG": "function get_coins(address _pool) view returns (address[3])" - } -} \ No newline at end of file diff --git a/projects/kittypunch-kona-stableswap/contracts.json b/projects/kittypunch-kona-stableswap/contracts.json deleted file mode 100644 index a678241c218..00000000000 --- a/projects/kittypunch-kona-stableswap/contracts.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "abstract": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0x3439153EB7AF838Ad19d56E1571FBD09333C2809", - "CurveStableswapFactoryNG": "0x288E195322088E615460ccAa0FE0a862C9E06412", - "CurveTwocryptoFactoryNG": "0x9f9F76660d17f76F63a32f6d4920B282d3856f3f", - "CurveTricryptoFactoryNG": "0xA44965EbBcb73163EB838Dc4DFa85F56B04804A6", - "addressProvider": "", - "metapoolBases": {}, - "blacklist": [] - } -} \ No newline at end of file diff --git a/projects/kittypunch-kona-stableswap/index.js b/projects/kittypunch-kona-stableswap/index.js deleted file mode 100644 index 134197f5515..00000000000 --- a/projects/kittypunch-kona-stableswap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -async function tvl(api) { - const factories = Object.values({ - "CurveStableswapFactoryNG": "0x288E195322088E615460ccAa0FE0a862C9E06412", - "CurveTwocryptoFactoryNG": "0x9f9F76660d17f76F63a32f6d4920B282d3856f3f", - "CurveTricryptoFactoryNG": "0xA44965EbBcb73163EB838Dc4DFa85F56B04804A6", - }) - const ownerTokens = [] - const blacklistedTokens = [] - for (const factory of factories) { - const pools = await api.fetchList({ lengthAbi: 'pool_count', itemAbi: 'pool_list', target: factory, }) - let res = 'address[]' - if (factory === '0x9f9F76660d17f76F63a32f6d4920B282d3856f3f') res = 'address[2]' - if (factory === '0xA44965EbBcb73163EB838Dc4DFa85F56B04804A6') res = 'address[3]' - const tokens = await api.multiCall({ abi: 'function get_coins(address) view returns (' + res + ')', calls: pools, target: factory, }) - blacklistedTokens.push(...pools) - ownerTokens.push(...tokens.map((t, i) => [t, pools[i]])) - } - return api.sumTokens({ ownerTokens, blacklistedTokens }) -} - -module.exports = { - abstract: { tvl } -} diff --git a/projects/kittypunch-kona-v2/index.js b/projects/kittypunch-kona-v2/index.js deleted file mode 100644 index 79fc5e5396c..00000000000 --- a/projects/kittypunch-kona-v2/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require("../helper/unknownTokens") - -module.exports = uniTvlExports({ - abstract: "0x7c2e370CA0fCb60D8202b8C5b01f758bcAD41860" -}) \ No newline at end of file diff --git a/projects/kittypunch-stable/abi.json b/projects/kittypunch-stable/abi.json deleted file mode 100644 index 1e5a53712a8..00000000000 --- a/projects/kittypunch-stable/abi.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "get_registry": "address:get_registry", - "pool_list": "function pool_list(uint256 arg0) view returns (address)", - "pool_count": "uint256:pool_count", - "get_id_info": "function get_id_info(uint256 arg0) view returns (address addr, bool is_active, uint256 version, uint256 last_modified, string description)", - "get_n_coins": { - "stableswap": "function get_n_coins(address _pool) view returns (uint256[2])", - "stableFactory": "function get_n_coins(address _pool) view returns (uint256)", - "crypto": "function get_n_coins(address _pool) view returns (uint256)", - "cryptoFactory": "function get_n_coins(address _pool) view returns (uint256)", - "triCryptoFactory": "function get_coins(address _pool) view returns (address[3])", - "CurveStableswapFactoryNG": "function get_n_coins(address _pool) view returns (uint256)" - }, - "get_coins": { - "stableswap": "function get_coins(address _pool) view returns (address[8])", - "stableFactory": "function get_coins(address _pool) view returns (address[4])", - "crypto": "function get_coins(address _pool) view returns (address[8])", - "cryptoFactory": "function get_coins(address _pool) view returns (address[2])", - "triCryptoFactory": "function get_coins(address _pool) view returns (address[3])", - "CurveStableswapFactoryNG": "function get_coins(address _pool) view returns (address[])", - "CurveTwocryptoFactoryNG": "function get_coins(address _pool) view returns (address[2])", - "CurveTricryptoFactoryNG": "function get_coins(address _pool) view returns (address[3])" - } -} \ No newline at end of file diff --git a/projects/kittypunch-stable/contracts.json b/projects/kittypunch-stable/contracts.json deleted file mode 100644 index 85ef4bc6af0..00000000000 --- a/projects/kittypunch-stable/contracts.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "flow": { - "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", - "wrapped": "0xd3bF53DAC106A0290B0483EcBC89d40FcC961f3e", - "CurveStableswapFactoryNG": "0x4412140D52C1F5834469a061927811Abb6026dB7", - "CurveTwocryptoFactoryNG": "0xf0E48dC92f66E246244dd9F33b02f57b0E69fBa9", - "CurveTricryptoFactoryNG": "0xebd098c60b1089f362AC9cfAd9134CBD29408226", - "addressProvider": "", - "metapoolBases": {}, - "blacklist": [] - } -} \ No newline at end of file diff --git a/projects/kittypunch-stable/index.js b/projects/kittypunch-stable/index.js deleted file mode 100644 index bd036ea0ab4..00000000000 --- a/projects/kittypunch-stable/index.js +++ /dev/null @@ -1,23 +0,0 @@ -async function tvl(api) { - const factories = Object.values({ - "CurveStableswapFactoryNG": "0x4412140D52C1F5834469a061927811Abb6026dB7", - "CurveTwocryptoFactoryNG": "0xf0E48dC92f66E246244dd9F33b02f57b0E69fBa9", - "CurveTricryptoFactoryNG": "0xebd098c60b1089f362AC9cfAd9134CBD29408226", - }) - const ownerTokens = [] - const blacklistedTokens = [] - for (const factory of factories) { - const pools = await api.fetchList({ lengthAbi: 'pool_count', itemAbi: 'pool_list', target: factory, }) - let res = 'address[]' - if (factory === '0xf0E48dC92f66E246244dd9F33b02f57b0E69fBa9') res = 'address[2]' - if (factory === '0xebd098c60b1089f362AC9cfAd9134CBD29408226') res = 'address[3]' - const tokens = await api.multiCall({ abi: 'function get_coins(address) view returns (' + res + ')', calls: pools, target: factory, }) - blacklistedTokens.push(...pools) - ownerTokens.push(...tokens.map((t, i) => [t, pools[i]])) - } - return api.sumTokens({ ownerTokens, blacklistedTokens }) -} - -module.exports = { - flow: { tvl } -} diff --git a/projects/kittypunch-v3/index.js b/projects/kittypunch-v3/index.js deleted file mode 100644 index 16de6a8f062..00000000000 --- a/projects/kittypunch-v3/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - flow: { - factory: "0xf331959366032a634c7cAcF5852fE01ffdB84Af0", - fromBlock: 23492663, - blacklistedTokens: [], - }, -}); diff --git a/projects/kittypunch/index.js b/projects/kittypunch/index.js deleted file mode 100644 index 013a8ba469d..00000000000 --- a/projects/kittypunch/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require("../helper/unknownTokens") - -module.exports = uniTvlExports({ - flow: "0x29372c22459a4e373851798bFd6808e71EA34A71" -}) \ No newline at end of file diff --git a/projects/kivach/index.js b/projects/kivach/index.js deleted file mode 100644 index 954fd6cec8e..00000000000 --- a/projects/kivach/index.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Cascading donations to github repositories - * - * Support open-source projects with donations in crypto, and they will automatically - * forward a part of your donation to other open-source projects that made them possible. - * - * @see https://kivach.org/ - */ -const { - getBalances, - fetchOswapExchangeRates, - fetchOswapAssets, - getDecimalsByAsset, -} = require('../helper/chain/obyte') - -const KIVACH_AA_ADDRESS = 'D3B42CWMY3A6I6GHC6KUJJSUKOCBE77U' - -async function totalTvl() { - const [assetMetadata, exchangeRates, balances] = await Promise.all([ - fetchOswapAssets(), - fetchOswapExchangeRates(), - getBalances([KIVACH_AA_ADDRESS]).then((balances) => balances[KIVACH_AA_ADDRESS]) - ]); - - const assetDecimals = {}; - const decimalGetters = []; - - Object.keys(balances).forEach((asset) => { - const decimals = assetMetadata[asset]?.decimals; - - if (decimals !== undefined) { - assetDecimals[asset] = decimals; - } else { - decimalGetters.push(getDecimalsByAsset(asset).then((decimals) => assetDecimals[asset] = decimals)) - } - }); - - await Promise.all(decimalGetters); - - let tvl = 0; - - Object.entries(balances).forEach(async ([asset, { stable: balance = 0 }]) => { - const assetKey = (asset === "base") ? "GBYTE" : asset; - const usdRate = exchangeRates[`${assetKey}_USD`] ?? 0; - const decimals = assetDecimals[asset]; - - if (decimals !== undefined) { - tvl += (balance / 10 ** decimals) * usdRate; - } - }); - - return { tether: tvl } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: - "The TVL is the USD value of all undistributed donations received through Kivach.", - obyte: { - tvl: totalTvl - } -} diff --git a/projects/kizuna/index.js b/projects/kizuna/index.js deleted file mode 100644 index 7c008d7fe90..00000000000 --- a/projects/kizuna/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - mode: { - tvl: getUniTVL({ factory: "0x05CDC3ec49C623dCE7947172fECFc5d3cD8d16cD", useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/kkex/index.js b/projects/kkex/index.js deleted file mode 100644 index 1944a944b1d..00000000000 --- a/projects/kkex/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); - -module.exports = { - zklink: { - tvl: gmxExports({ - vault: "0xC8F6494bD11A12Dd6B676EC87C8b878a1D90e641", - }), - }, -}; diff --git a/projects/klap/index.js b/projects/klap/index.js deleted file mode 100644 index 4c7c3a51079..00000000000 --- a/projects/klap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - deadFrom: "2023-09-17", - methodology: methodologies.lendingMarket, - klaytn: aaveExports('klaytn', '0x969E4A05c2F3F3029048e7943274eC2E762497AB'), -} - -module.exports.klaytn.borrowed = () => ({}) // bad debt diff --git a/projects/klaybank/index.js b/projects/klaybank/index.js deleted file mode 100644 index 4639f8f8a81..00000000000 --- a/projects/klaybank/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { aaveV2Export } = require('../helper/aave') -const { staking } = require('../helper/staking'); - -module.exports = { - klaytn: { - staking: staking('0x32FE0F8d0BC59836028E80bc2ed94AE8E169344B', '0x946bc715501413b9454bb6a31412a21998763f2d'), - ...aaveV2Export('0x4B6Ece52D0EF60aE054f45c45D6bA4F7a0C2cC67') - }, -}; diff --git a/projects/klaylend/index.js b/projects/klaylend/index.js deleted file mode 100644 index a0fe3785877..00000000000 --- a/projects/klaylend/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -const chain = 'klaytn' -const contract = '0x4509Ee1c4CC4e35eA530DC6FfE889B734f581FB8' -const kld = '0xb8c460aD6aC97797A57BDb08D7187b4710B4Fdf8' - -module.exports = masterchefExports({ - chain, - masterchef: contract, - nativeToken: kld, - useDefaultCoreAssets: true, -}) -module.exports.hallmarks = [ - [1662336000, "Rug Pull"] -], -module.exports.deadFrom = 1662336000 \ No newline at end of file diff --git a/projects/klayportal/abi.json b/projects/klayportal/abi.json deleted file mode 100644 index e1a970fdf63..00000000000 --- a/projects/klayportal/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "stakingPoolSum": "uint256:stakingPoolSum" -} \ No newline at end of file diff --git a/projects/klayportal/index.js b/projects/klayportal/index.js deleted file mode 100644 index 6944fe2a4e3..00000000000 --- a/projects/klayportal/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const KlayPortalAddress = "0x67A7F7c9195214FdDE587E98f736466d26FaC5A0"; - -async function tvl(api) { - const data = await api.call({ target: KlayPortalAddress, abi: "uint256:stakingPoolSum", }); - api.addGasToken(data) -} - -module.exports = { - methodology: "TVL is equal to the amount of KLAY staked in the Staking pool", - klaytn: { - tvl: tvl, - }, -}; diff --git a/projects/klaystation/index.js b/projects/klaystation/index.js deleted file mode 100644 index 77e352a215e..00000000000 --- a/projects/klaystation/index.js +++ /dev/null @@ -1,9 +0,0 @@ -async function tvl(api) { - const sKlay = '0xa323d7386b671e8799dca3582d6658fdcdcd940a' - const supply = await api.call({ abi: 'erc20:totalSupply', target: sKlay}) - api.add(sKlay, supply) -} - -module.exports = { - klaytn: { tvl } -} \ No newline at end of file diff --git a/projects/klayswap-v3/index.js b/projects/klayswap-v3/index.js deleted file mode 100644 index 11c97bed5ee..00000000000 --- a/projects/klayswap-v3/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -async function v3Tvl(api) { - const factory = '0xA15Be7e90df29A4aeaD0C7Fc86f7a9fBe6502Ac9'; - const wklay = '0x19aac5f612f524b754ca7e7c41cbfa2e981a4432'; - const klay = ADDRESSES.null; - - const fromBlock = 124342981; - const eventAbi = 'event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, uint256 exid)'; - const topics = [ - '0x20a108faf9dc51ca2b459a109d08568e65a9cb87569b6b3a334c275d504ff94f', - ]; - - const logs = await getLogs({ - api, - target: factory, - topics, - fromBlock, - eventAbi, - onlyArgs: true, - }) - - return sumTokens2({ - api, ownerTokens: logs.map(i => { - return [[(i.token0.toLowerCase() == wklay) ? klay : i.token0, i.token1], i.pool] - }), - }) -} - -module.exports = { - klaytn: { - tvl: v3Tvl, - }, -} \ No newline at end of file diff --git a/projects/klayswap/index.js b/projects/klayswap/index.js deleted file mode 100644 index c64755e3667..00000000000 --- a/projects/klayswap/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens'); -const kslp = require('../helper/abis/kslp'); -const sdk = require('@defillama/sdk') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const singlePoolFactory = '0xD1890D8F02F4C63553658ba49C53A82eb84009e6' - -async function singlePoolTvl(api) { - const pools = await api.fetchList({ lengthAbi: 'uint8:getPoolCount', itemAbi: 'function getPoolAddressByIndex(uint idx) public view returns (address)', target: singlePoolFactory }) - const tokens = await api.multiCall({ abi: 'address:token', calls: pools }) - const toa = tokens.map((val, i) => ([val, pools[i]])) - return sumTokens2({ api, tokensAndOwners: toa}) -} - -const dexTVL = getUniTVL({ - useDefaultCoreAssets: true, - factory: ADDRESSES.klaytn.KSP, - abis: { - allPairsLength: kslp.getPoolCount, - allPairs: kslp.pools, - token0: kslp.tokenA, - token1: kslp.tokenB, - getReserves: kslp.getCurrentPool, - }, - exports -}) - -module.exports = { - methodology: 'TVL counts the liquidity of KlaySwap DEX and staking counts the KSP that has been staked', - klaytn: { - tvl: sdk.util.sumChainTvls([singlePoolTvl, dexTVL,]), - staking: staking('0x2f3713f388bc4b8b364a7a2d8d57c5ff4e054830', ADDRESSES.klaytn.KSP) - }, - misrepresentedTokens: true, -} \ No newline at end of file diff --git a/projects/klend/index.js b/projects/klend/index.js deleted file mode 100644 index 7e361b61c10..00000000000 --- a/projects/klend/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { compoundExports } = require('../helper/compound'); -const { unwrapUniswapLPs } = require('../helper/unwrapLPs'); - -// BSC -const unitroller = "0xA6bEd5B7320941eA185A315D1292492F7Fdd1e5c"; -const kBnb = "0x2C334c6cBC0547e759084bD8D469f933B17Ff481"; -const wbnb = ADDRESSES.bsc.WBNB -const bscPools = [ - "0xf1D447656692d51d4DB7057104Ac6E97029A7790", - "0x95D4D2D88C96cE96c97A912Aa7122715716013D4" -]; -const okexPools = [ - "0x2404c9F6Ba2d4D5c73d86b3E3b9D7F6c70ba3448", - "0x5A74de8e3D0c46c106AB769d50bf9CAF8681D30d" -]; -const lpAbi = 'address:lp' -// OKEX -const okexUnitroller = "0x9589c9c9b7A484F57d69aC09c14EcE4b6d785710"; -const kOkt = "0x4923abEe988f7bB7A9ae136BEBE4A8455e8dE229"; -const wokt = ADDRESSES.okexchain.WOKT - -async function pool2Tvl(balances, chainBlocks, chain, pools) { - - let lpofPools = (await sdk.api.abi.multiCall({ - calls: pools.map(p => ({ - target: p - })), - abi: lpAbi, - block: chainBlocks, - chain: chain - })).output; - - let lpBalances = (await sdk.api.abi.multiCall({ - calls: lpofPools.map(p => ({ - target: p.output, - params: p.input.target - })), - abi: "erc20:balanceOf", - block: chainBlocks, - chain: chain - })).output; - - let lpPositions = []; - for (let i in lpBalances) { - lpPositions.push({ - balance: lpBalances[i].output, - token: lpBalances[i].input.target - }); - } - - await unwrapUniswapLPs(balances, lpPositions, chainBlocks, chain, addr => `${chain}:${addr}`); - -} - -async function bscPool2(timestamp, block, chainBlocks) { - let balances = {}; - await pool2Tvl(balances, chainBlocks.bsc, "bsc", bscPools); - return balances; -} - -async function okexPool2(timestamp, block, chainBlocks) { - let balances = {}; - await pool2Tvl(balances, chainBlocks.okexchain, "okexchain", okexPools); - return balances; -} - -module.exports = { - bsc: { - ...compoundExports(unitroller, kBnb, wbnb), - pool2: bscPool2 - }, - okexchain: { - ...compoundExports(okexUnitroller, kOkt, wokt), - pool2: okexPool2 - } -} -module.exports.bsc.borrowed = () => ({}) -module.exports.okexchain.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/kleros/index.js b/projects/kleros/index.js deleted file mode 100644 index 85cf7f353ed..00000000000 --- a/projects/kleros/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { getBlock } = require('../helper/http') -const sdk = require('@defillama/sdk') - -const graphUrls = { - ethereum: 'ECENsJRfqi6Mwj6kF9diShPzFKkgyyo79aSCkSwAShHL', - xdai: 'Ck26N16xgimEuuuNSJqYVWBKcWSwPmkk36BWZGtfx1ox', -} - -const totalStakedQuery = ` -query($block: Int) { - klerosCounters(block: { number: $block }) { - tokenStaked - } -} -` - -function getStakedTvl(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - - const graphUrl = graphUrls[chain] - const block = await getBlock(timestamp, chain, chainBlocks) - - const { klerosCounters } = await sdk.graph.request( - graphUrl, - totalStakedQuery, - { variables: { block: block - 500 }} - ) - - balances.kleros = klerosCounters[0].tokenStaked / (10 ** 18); - - return balances; - } -} - - -module.exports = { - methodology: "Counts PNK staked in courts", - ethereum: { - tvl: () => ({}), - staking: getStakedTvl('ethereum') - }, - xdai: { - tvl: () => ({}), - staking: getStakedTvl('xdai') - }, -} diff --git a/projects/kleva-lend/index.js b/projects/kleva-lend/index.js deleted file mode 100644 index 6738ed74065..00000000000 --- a/projects/kleva-lend/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const WORKERS_QUERY_URL = "https://kleva.io/static/data.json" - -async function getWorkers() { - return getConfig('kleva', WORKERS_QUERY_URL) -} - -const klayPool = '0xa691c5891d8a98109663d07bcf3ed8d3edef820a' -const wKlay = '0xf6f6b8bd0ac500639148f8ca5a590341a97de0de' - -async function getLendingTVL(data, api) { - const tokensAndOwners = data.lendingPools.map(({ vaultAddress, ibToken: { originalToken }}) => { - if (vaultAddress.toLowerCase() === klayPool) - return [wKlay, klayPool] - return [originalToken.address, vaultAddress] - }) - tokensAndOwners.push([nullAddress, klayPool]) - return sumTokens2({ api, tokensAndOwners }) -} - -async function tvl(api) { - const data = await getWorkers() - return getLendingTVL(data, api) -} - -async function borrowed(api) { - const data = await getWorkers() - const vaults = data.lendingPools.map(({ vaultAddress }) => vaultAddress) - const tokens = await api.multiCall({ abi: 'address:getBaseTokenAddress', calls: vaults}) - const debts = await api.multiCall({ abi: 'uint256:totalDebtAmount', calls: vaults}) - api.addTokens(tokens,debts) -} - -module.exports = { - klaytn: { tvl, borrowed }, -} \ No newline at end of file diff --git a/projects/kleva/FairLaunch.json b/projects/kleva/FairLaunch.json deleted file mode 100644 index e12f8169bc2..00000000000 --- a/projects/kleva/FairLaunch.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "userInfos": "function userInfos(uint256, address) view returns (uint256 amount, uint256 rewardDebt, address fundedBy)" -} \ No newline at end of file diff --git a/projects/kleva/index.js b/projects/kleva/index.js deleted file mode 100644 index 14b0201672b..00000000000 --- a/projects/kleva/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - deadFrom: '2025-01-01', - hallmarks: [[1711929600,'Sunset of Kleva-Farm']], - klaytn: { tvl: () => ({}) }, - doublecounted: true, -} \ No newline at end of file diff --git a/projects/klever-exchange/index.js b/projects/klever-exchange/index.js deleted file mode 100644 index 2c6c205e08b..00000000000 --- a/projects/klever-exchange/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x5a57cfafe8b9e94419cc7d0cb1f4a95c73f40110', - '0x4a5f98e2c2784d359fc0decc8533ae27af0e5974', - '0x5af8da2675dd31beffa2619145957b15e8013f37', - '0x91af50adb57283283c8b442622e95c26d46d911c', - '0x96c38eeed002d3df2e369deffe6cc84688eadb01' - ] - }, - tron: { - owners: [ - 'TKM9AYxWxRe7hESuWmKFXwcDjnb5cQK92E', - 'TMp2qThJSRZbmvFQwuRjyoL8ygykqMZDEo', - 'TPYcvyecPr5TAXRUSjKu2iNJuG6dNHxri3' - ] - }, - bitcoin: { - owners: bitcoinAddressBook.kleverExchange - }, - -} - -module.exports = cexExports(config) diff --git a/projects/klex/index.js b/projects/klex/index.js deleted file mode 100644 index be31f9aab5a..00000000000 --- a/projects/klex/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { onChainTvl } = require("../helper/balancer") - -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { configPost } = require('../helper/cache') - -const V2_ADDRESS = '0xb519Cf56C63F013B0320E89e1004A8DE8139dA27'; // shared by all networks - -function v2(chain) { - return async (time, ethBlock, chainBlocks, param4) => { - const block = chainBlocks[chain] - const { data: v2Tokens } = await configPost('kex/klaytn', 'https://graph-prod.klex.finance/subgraphs/name/klex-staging-2-mainnet', { query: '{ pools { name tokensList address }}' }) - if (!v2Tokens) return onChainTvl('0xb519Cf56C63F013B0320E89e1004A8DE8139dA27', 99368355, { onlyUseExistingCache: true, })(time, ethBlock, chainBlocks, param4) - const tokens = []; - const blacklist = [] - for (const { address, tokensList } of v2Tokens.pools) { - tokens.push(...tokensList) - blacklist.push(address) - } - return sumTokens2({ chain, block, owner: V2_ADDRESS, tokens, blacklistedTokens: blacklist, }) - } -} - -module.exports = { - klaytn: { - tvl: v2("klaytn") - // tvl: onChainTvl('0xb519Cf56C63F013B0320E89e1004A8DE8139dA27', 99368355) - }, -} \ No newline at end of file diff --git a/projects/klima-dao/index.js b/projects/klima-dao/index.js deleted file mode 100644 index 2f822e7da13..00000000000 --- a/projects/klima-dao/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { staking } = require('../helper/staking') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const TOKEN_ABI = { - decimals: "uint8:decimals", - totalSupply: "function totalSupply() view returns (uint256)", -} - -async function fetchBeefyTVL(api) { - const VAULTS = Object.values({ - 'aerodrome-weth-klima': '0x1e96a15afb820d5EF58782fDf0f5A5DF027b3e38', - 'aerodrome-usdc-klima': '0x177ec2e92ed22c1efa964c2b46645172b06f3fe5', - 'aerodrome-cbbtc-klima': '0xC304af1A9a50ED2f9E904e8B2e576c3a593b4F88' - }) - - const tokens = await api.multiCall({ abi: 'address:want', calls: VAULTS }) - const balances = await api.multiCall({ abi: 'uint256:balance', calls: VAULTS }) - api.add(tokens, balances) - return sumTokens2({ api, resolveLP: true}) -} - -module.exports = { - methodology: "TVL counts the TCO2 tokens within the BCT pool on Polygon. On Base chain, TVL consists of liquidity pool deposits in the protocol's Beefy-based autocompounding vaults. Data is pulled from Beefy's API.", - polygon: { - tvl: async (api) => { - // If the current block is earlier than the date BCT was transferred to KlimaDAO, return 0 - if (api.timestamp < 1709828986) return {} - const bctAddress = "0x2F800Db0fdb5223b3C3f354886d907A671414A7F" - const supply = await api.call({ target: bctAddress, abi: TOKEN_ABI.totalSupply }) - api.add(bctAddress, supply) - }, - staking: staking("0x25d28a24Ceb6F81015bB0b2007D795ACAc411b4d", "0x4e78011ce80ee02d2c3e649fb657e45898257815"), - }, - base: { - pool2: fetchBeefyTVL - }, - hallmarks: [ - [1709828986, "BCT administrative control transferred to KlimaDAO"], - [1732153403, "Autocompounder launched"], - ] -}; \ No newline at end of file diff --git a/projects/klondike/abi.json b/projects/klondike/abi.json deleted file mode 100644 index f2cbf8b0f71..00000000000 --- a/projects/klondike/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "allAllowedTokens": "address[]:allAllowedTokens" -} \ No newline at end of file diff --git a/projects/klondike/index.js b/projects/klondike/index.js deleted file mode 100644 index 4e8df2ff23a..00000000000 --- a/projects/klondike/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const stakingContract = "0xAcbdB82f07B2653137d3A08A22637121422ae747"; -const KlonX = "0xbf15797BB5E47F6fB094A4abDB2cfC43F77179Ef"; - -const KlonXWBTCLPKlonXPool = "0x185bDc02aAFbEcDc8DC574e8319228B586764415"; -const WBTC_KlonX_UNI = "0x69cda6eda9986f7fca8a5dba06c819b535f4fc50"; - -const KWBTCWBTCLPKlonXPool = "0x451D00AF6E751537a9A2cFF40CdFB1119cd1fA7d"; -const WBTC_KBTC_UNI = "0x1F3D61248EC81542889535595903078109707941"; - -const KXUSDDAILPKlonXPool = "0xE301F632E573A3F8bd06fe623E4440560ab08692"; -const KXUSD_DAI_UNI = "0x672C973155c46Fc264c077a41218Ddc397bB7532"; - -const fundContracts = [ - //stablFundContract - "0x58285B88951DE1C9a5255DDfdE28A68b30EE7559", - //devFundContract - "0x3BE908C22D21ab32C5A04CFCa3a9A70d4FEfc098", -]; - -async function ethTvl(api) { - const tokenAddresses = await api.call({ abi: abi.allAllowedTokens, target: fundContracts[0], }) - tokenAddresses.push(WBTC_KBTC_UNI, KXUSD_DAI_UNI) - fundContracts.push(KWBTCWBTCLPKlonXPool, KXUSDDAILPKlonXPool) - - return sumTokens2({ api, tokens: tokenAddresses, owners: fundContracts, resolveLP: true }) -} - -module.exports = { - ethereum: { - staking: staking(stakingContract, KlonX), - pool2: pool2(KlonXWBTCLPKlonXPool, WBTC_KlonX_UNI), - tvl: ethTvl, - }, - methodology: "Counts liquidity on the Farms through their Contracts", -}; diff --git a/projects/kmex-io/index.js b/projects/kmex-io/index.js deleted file mode 100644 index bbd6b0e2d4f..00000000000 --- a/projects/kmex-io/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { gmxExports } = require('../helper/gmx') -const { sumTokensExport } = require("../helper/unknownTokens") - -// Kava -const kmexVault = '0x15B29830D5bE7240c7a401fe0B0dA5086C9d84c5'; -const kmexStaking = '0x71dDDafFb0DB6BEDc9495Ef92c5700ec96527BFb'; // Staked KMX, sKMX -const kavaKMX = '0x599b05875866ceB7378452D9F432d5377825F44B'; -const kavaKMXKAVAPool = '0xA08848E7A4dbaEeE8eeAb93a05F437ed9Efa2162' - -module.exports = { - kava: { - staking: sumTokensExport({ owner: kmexStaking, tokens: [kavaKMX],lps: [kavaKMXKAVAPool], useDefaultCoreAssets: true, }), - tvl: gmxExports({ vault: kmexVault, }) - }, -}; diff --git a/projects/knightdex/index.js b/projects/knightdex/index.js deleted file mode 100644 index 4baf3d71203..00000000000 --- a/projects/knightdex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getUniTVL} = require("../helper/unknownTokens"); - -module.exports = { - op_bnb: { - tvl: getUniTVL({factory: "0xAe9F4488CC751637b18070c5453a3b7Acc137a3b", useDefaultCoreAssets: true, }) - }, -} diff --git a/projects/knightrade/drift_idl.json b/projects/knightrade/drift_idl.json deleted file mode 100644 index 70d39e18657..00000000000 --- a/projects/knightrade/drift_idl.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "version": "2.106.0", - "name": "drift", - "instructions": [], - "accounts": [ - { - "name": "User", - "type": { - "kind": "struct", - "fields": [ - {"name": "authority", "docs": ["The owner/authority of the account"], "type": "publicKey"}, - { - "name": "delegate", - "docs": ["An addresses that can control the account on the authority's behalf. Has limited power, cant withdraw"], - "type": "publicKey" - }, - {"name": "name", "docs": ["Encoded display name e.g. \"toly\""], "type": {"array": ["u8", 32]}}, - {"name": "spotPositions", "docs": ["The user's spot positions"], "type": {"array": [{"defined": "SpotPosition"}, 8]}}, - {"name": "perpPositions", "docs": ["The user's perp positions"], "type": {"array": [{"defined": "PerpPosition"}, 8]}}, - {"name": "orders", "docs": ["The user's orders"], "type": {"array": [{"defined": "Order"}, 32]}}, - {"name": "lastAddPerpLpSharesTs", "docs": ["The last time the user added perp lp positions"], "type": "i64"}, - {"name": "totalDeposits", "docs": ["The total values of deposits the user has made", "precision: QUOTE_PRECISION"], "type": "u64"}, - {"name": "totalWithdraws", "docs": ["The total values of withdrawals the user has made", "precision: QUOTE_PRECISION"], "type": "u64"}, - { - "name": "totalSocialLoss", - "docs": ["The total socialized loss the users has incurred upon the protocol", "precision: QUOTE_PRECISION"], - "type": "u64" - }, - { - "name": "settledPerpPnl", - "docs": ["Fees (taker fees, maker rebate, referrer reward, filler reward) and pnl for perps", "precision: QUOTE_PRECISION"], - "type": "i64" - }, - { - "name": "cumulativeSpotFees", - "docs": ["Fees (taker fees, maker rebate, filler reward) for spot", "precision: QUOTE_PRECISION"], - "type": "i64" - }, - {"name": "cumulativePerpFunding", "docs": ["Cumulative funding paid/received for perps", "precision: QUOTE_PRECISION"], "type": "i64"}, - { - "name": "liquidationMarginFreed", - "docs": [ - "The amount of margin freed during liquidation. Used to force the liquidation to occur over a period of time", - "Defaults to zero when not being liquidated", - "precision: QUOTE_PRECISION" - ], - "type": "u64" - }, - {"name": "lastActiveSlot", "docs": ["The last slot a user was active. Used to determine if a user is idle"], "type": "u64"}, - {"name": "nextOrderId", "docs": ["Every user order has an order id. This is the next order id to be used"], "type": "u32"}, - {"name": "maxMarginRatio", "docs": ["Custom max initial margin ratio for the user"], "type": "u32"}, - {"name": "nextLiquidationId", "docs": ["The next liquidation id to be used for user"], "type": "u16"}, - {"name": "subAccountId", "docs": ["The sub account id for this user"], "type": "u16"}, - {"name": "status", "docs": ["Whether the user is active, being liquidated or bankrupt"], "type": "u8"}, - {"name": "isMarginTradingEnabled", "docs": ["Whether the user has enabled margin trading"], "type": "bool"}, - { - "name": "idle", - "docs": [ - "User is idle if they haven't interacted with the protocol in 1 week and they have no orders, perp positions or borrows", - "Off-chain keeper bots can ignore users that are idle" - ], - "type": "bool" - }, - {"name": "openOrders", "docs": ["number of open orders"], "type": "u8"}, - {"name": "hasOpenOrder", "docs": ["Whether or not user has open order"], "type": "bool"}, - {"name": "openAuctions", "docs": ["number of open orders with auction"], "type": "u8"}, - {"name": "hasOpenAuction", "docs": ["Whether or not user has open order with auction"], "type": "bool"}, - {"name": "marginMode", "type": {"defined": "MarginMode"}}, - {"name": "poolId", "type": "u8"}, - {"name": "padding1", "type": {"array": ["u8", 3]}}, - {"name": "lastFuelBonusUpdateTs", "type": "u32"}, - {"name": "padding", "type": {"array": ["u8", 12]}} - ] - } - } - ], - "types": [ - { - "name": "SpotPosition", - "type": { - "kind": "struct", - "fields": [ - { - "name": "scaledBalance", - "docs": [ - "The scaled balance of the position. To get the token amount, multiply by the cumulative deposit/borrow", - "interest of corresponding market.", - "precision: SPOT_BALANCE_PRECISION" - ], - "type": "u64" - }, - {"name": "openBids", "docs": ["How many spot bids the user has open", "precision: token mint precision"], "type": "i64"}, - {"name": "openAsks", "docs": ["How many spot asks the user has open", "precision: token mint precision"], "type": "i64"}, - { - "name": "cumulativeDeposits", - "docs": ["The cumulative deposits/borrows a user has made into a market", "precision: token mint precision"], - "type": "i64" - }, - {"name": "marketIndex", "docs": ["The market index of the corresponding spot market"], "type": "u16"}, - {"name": "balanceType", "docs": ["Whether the position is deposit or borrow"], "type": {"defined": "SpotBalanceType"}}, - {"name": "openOrders", "docs": ["Number of open orders"], "type": "u8"}, - {"name": "padding", "type": {"array": ["u8", 4]}} - ] - } - }, - {"name": "SpotBalanceType", "type": {"kind": "enum", "variants": [{"name": "Deposit"}, {"name": "Borrow"}]}}, - { - "name": "PerpPosition", - "type": { - "kind": "struct", - "fields": [ - { - "name": "lastCumulativeFundingRate", - "docs": [ - "The perp market's last cumulative funding rate. Used to calculate the funding payment owed to user", - "precision: FUNDING_RATE_PRECISION" - ], - "type": "i64" - }, - {"name": "baseAssetAmount", "docs": ["the size of the users perp position", "precision: BASE_PRECISION"], "type": "i64"}, - { - "name": "quoteAssetAmount", - "docs": [ - "Used to calculate the users pnl. Upon entry, is equal to base_asset_amount * avg entry price - fees", - "Updated when the user open/closes position or settles pnl. Includes fees/funding", - "precision: QUOTE_PRECISION" - ], - "type": "i64" - }, - { - "name": "quoteBreakEvenAmount", - "docs": [ - "The amount of quote the user would need to exit their position at to break even", - "Updated when the user open/closes position or settles pnl. Includes fees/funding", - "precision: QUOTE_PRECISION" - ], - "type": "i64" - }, - { - "name": "quoteEntryAmount", - "docs": [ - "The amount quote the user entered the position with. Equal to base asset amount * avg entry price", - "Updated when the user open/closes position. Excludes fees/funding", - "precision: QUOTE_PRECISION" - ], - "type": "i64" - }, - {"name": "openBids", "docs": ["The amount of open bids the user has in this perp market", "precision: BASE_PRECISION"], "type": "i64"}, - {"name": "openAsks", "docs": ["The amount of open asks the user has in this perp market", "precision: BASE_PRECISION"], "type": "i64"}, - { - "name": "settledPnl", - "docs": ["The amount of pnl settled in this market since opening the position", "precision: QUOTE_PRECISION"], - "type": "i64" - }, - { - "name": "lpShares", - "docs": [ - "The number of lp (liquidity provider) shares the user has in this perp market", - "LP shares allow users to provide liquidity via the AMM", - "precision: BASE_PRECISION" - ], - "type": "u64" - }, - { - "name": "lastBaseAssetAmountPerLp", - "docs": ["The last base asset amount per lp the amm had", "Used to settle the users lp position", "precision: BASE_PRECISION"], - "type": "i64" - }, - { - "name": "lastQuoteAssetAmountPerLp", - "docs": ["The last quote asset amount per lp the amm had", "Used to settle the users lp position", "precision: QUOTE_PRECISION"], - "type": "i64" - }, - { - "name": "remainderBaseAssetAmount", - "docs": [ - "Settling LP position can lead to a small amount of base asset being left over smaller than step size", - "This records that remainder so it can be settled later on", - "precision: BASE_PRECISION" - ], - "type": "i32" - }, - {"name": "marketIndex", "docs": ["The market index for the perp market"], "type": "u16"}, - {"name": "openOrders", "docs": ["The number of open orders"], "type": "u8"}, - {"name": "perLpBase", "type": "i8"} - ] - } - }, - { - "name": "Order", - "type": { - "kind": "struct", - "fields": [ - {"name": "slot", "docs": ["The slot the order was placed"], "type": "u64"}, - { - "name": "price", - "docs": [ - "The limit price for the order (can be 0 for market orders)", - "For orders with an auction, this price isn't used until the auction is complete", - "precision: PRICE_PRECISION" - ], - "type": "u64" - }, - { - "name": "baseAssetAmount", - "docs": ["The size of the order", "precision for perps: BASE_PRECISION", "precision for spot: token mint precision"], - "type": "u64" - }, - { - "name": "baseAssetAmountFilled", - "docs": ["The amount of the order filled", "precision for perps: BASE_PRECISION", "precision for spot: token mint precision"], - "type": "u64" - }, - {"name": "quoteAssetAmountFilled", "docs": ["The amount of quote filled for the order", "precision: QUOTE_PRECISION"], "type": "u64"}, - { - "name": "triggerPrice", - "docs": ["At what price the order will be triggered. Only relevant for trigger orders", "precision: PRICE_PRECISION"], - "type": "u64" - }, - { - "name": "auctionStartPrice", - "docs": ["The start price for the auction. Only relevant for market/oracle orders", "precision: PRICE_PRECISION"], - "type": "i64" - }, - { - "name": "auctionEndPrice", - "docs": ["The end price for the auction. Only relevant for market/oracle orders", "precision: PRICE_PRECISION"], - "type": "i64" - }, - {"name": "maxTs", "docs": ["The time when the order will expire"], "type": "i64"}, - { - "name": "oraclePriceOffset", - "docs": ["If set, the order limit price is the oracle price + this offset", "precision: PRICE_PRECISION"], - "type": "i32" - }, - {"name": "orderId", "docs": ["The id for the order. Each users has their own order id space"], "type": "u32"}, - {"name": "marketIndex", "docs": ["The perp/spot market index"], "type": "u16"}, - {"name": "status", "docs": ["Whether the order is open or unused"], "type": {"defined": "OrderStatus"}}, - {"name": "orderType", "docs": ["The type of order"], "type": {"defined": "OrderType"}}, - {"name": "marketType", "docs": ["Whether market is spot or perp"], "type": {"defined": "MarketType"}}, - {"name": "userOrderId", "docs": ["User generated order id. Can make it easier to place/cancel orders"], "type": "u8"}, - { - "name": "existingPositionDirection", - "docs": ["What the users position was when the order was placed"], - "type": {"defined": "PositionDirection"} - }, - {"name": "direction", "docs": ["Whether the user is going long or short. LONG = bid, SHORT = ask"], "type": {"defined": "PositionDirection"}}, - {"name": "reduceOnly", "docs": ["Whether the order is allowed to only reduce position size"], "type": "bool"}, - {"name": "postOnly", "docs": ["Whether the order must be a maker"], "type": "bool"}, - {"name": "immediateOrCancel", "docs": ["Whether the order must be canceled the same slot it is placed"], "type": "bool"}, - { - "name": "triggerCondition", - "docs": ["Whether the order is triggered above or below the trigger price. Only relevant for trigger orders"], - "type": {"defined": "OrderTriggerCondition"} - }, - {"name": "auctionDuration", "docs": ["How many slots the auction lasts"], "type": "u8"}, - {"name": "padding", "type": {"array": ["u8", 3]}} - ] - } - }, - {"name": "OrderStatus", "type": {"kind": "enum", "variants": [{"name": "Init"}, {"name": "Open"}, {"name": "Filled"}, {"name": "Canceled"}]}}, - { - "name": "OrderType", - "type": { - "kind": "enum", - "variants": [{"name": "Market"}, {"name": "Limit"}, {"name": "TriggerMarket"}, {"name": "TriggerLimit"}, {"name": "Oracle"}] - } - }, - {"name": "MarketType", "type": {"kind": "enum", "variants": [{"name": "Spot"}, {"name": "Perp"}]}}, - {"name": "PositionDirection", "type": {"kind": "enum", "variants": [{"name": "Long"}, {"name": "Short"}]}}, - { - "name": "OrderTriggerCondition", - "type": {"kind": "enum", "variants": [{"name": "Above"}, {"name": "Below"}, {"name": "TriggeredAbove"}, {"name": "TriggeredBelow"}]} - }, - {"name": "MarginMode", "type": {"kind": "enum", "variants": [{"name": "Default"}, {"name": "HighLeverage"}]}} - ], - "events": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/knightrade/index.js b/projects/knightrade/index.js deleted file mode 100644 index 2f40c4a3724..00000000000 --- a/projects/knightrade/index.js +++ /dev/null @@ -1,287 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getMultipleAccounts, getProvider, sumTokens2, } = require('../helper/solana') -const { Program, BN, utils } = require("@project-serum/anchor") -const { PublicKey } = require("@solana/web3.js") - -const TOKEN_INFO = { - USDC: { - mint: ADDRESSES.solana.USDC, - decimals: 6, - }, - SOL: { - mint: ADDRESSES.solana.SOL, - decimals: 9, - }, - JLP: { - mint: '27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4', - decimals: 6, - }, - BTC: { - mint: '3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh', - decimals: 8, - }, - ETH: { - mint: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', - decimals: 8, - }, -} - - -function getTokenInfo(isSpotMarket, marketIndex) { - if (isSpotMarket) { - switch (marketIndex) { - case 0: - return TOKEN_INFO['USDC'] - case 1: - return TOKEN_INFO['SOL'] - case 19: - return TOKEN_INFO['JLP'] - } - } - else { - switch (marketIndex) { - case 0: - return TOKEN_INFO['SOL'] - case 1: - return TOKEN_INFO['BTC'] - case 2: - return TOKEN_INFO['ETH'] - } - } - return undefined -} -const provider = getProvider() - -async function tvlJupiter(api, jupiterVaults) { - - // /** - // * Jupiter perp Lend - // */ - const JUP_PERP_PROGRAM_ID = "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu"; - const idl = await Program.fetchIdl(JUP_PERP_PROGRAM_ID, provider); - const perpProgram = new Program(idl, JUP_PERP_PROGRAM_ID, provider); - - for (const walletAddress of jupiterVaults) { - const walletPubkey = new PublicKey(walletAddress); - const accounts = await perpProgram.account.borrowPosition.all([ - { - memcmp: { - offset: 8, // Adjust based on your account structure - bytes: walletPubkey.toBase58(), - }, - }, - ]); - - if (accounts.length === 0) continue; - const account = accounts[0].account; - api.add(TOKEN_INFO['JLP'].mint, account.lockedCollateral); - const BORROW_SIZE_PRECISION = 1000; - api.add(ADDRESSES.solana.USDC, -account.borrowSize / BORROW_SIZE_PRECISION); - } - - // /** - // * Jupiter Earn - // */ - /* - added price support for jupiter earn tokens here: https://github.com/DefiLlama/defillama-server/commit/e496acfb4bec2f8da309da1d18b0f0f9e10cbc3f - */ -} - -async function getDriftTvl(api, vaults) { - const vaultUserAddresses = [ - '3Wg1GaW4Szame9bzKScxM56DHgDAKTq4c9674LPEuNNP', // DeltaNeutral-JLP-USDC-SOL-KT1 - 'FmrEVTqKUG9npwaQBbrHKt1VXL5LJPPhzQazjCh1fwwB', // DeltaNeutral-JLP-USDC-EVM-KT4 - 'J5VbheCue9U4hW7u9DZzwgo5h7BhnBqL8rF9c71MDsfC', // DeltaNeutral-JLP-USDC-SVM-KT5 - 'AcN9Mct9dLYQVDsyQinbbHKbsXYB4Tnaq5DgKwzrWaY4', // DeltaNeutral-JLP-SOL-SVM-KT6 - 'B84ppdVLsqk8L2rGPYkV1R3w1UxL71RCmuDQJHNLZGHT', // DeltaNeutral-JLP-USDC-KT9 - ]; - - const idl = require("./drift_idl.json") - const programId = new PublicKey('dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH') - const program = new Program(idl, programId, provider) - - - for (const account of vaults) { - const authorityPk = new PublicKey(account); - const userPda = PublicKey.findProgramAddressSync( - [ - Buffer.from(utils.bytes.utf8.encode('user')), - authorityPk.toBuffer(), - new BN(0).toArrayLike(Buffer, 'le', 2), - ], - programId, - )[0]; - vaultUserAddresses.push(userPda) - } - - const accounts = await getMultipleAccounts(vaultUserAddresses) - for (const account of accounts) { - const userData = program.coder.accounts.decode("User", account.data); - for (const spotPosition of userData.spotPositions) { - if (!new BN(spotPosition.scaledBalance).isZero()) { - const marketIndex = spotPosition.marketIndex - const balanceType = Object.keys(spotPosition.balanceType ?? {})?.[0] - const scaledBalance = new BN(spotPosition.scaledBalance) - const token = getTokenInfo(true, marketIndex) - if (!token) continue; - const balance = scaledBalance - .mul(new BN(balanceType === 'deposit' ? 1 : -1)) - .div(new BN(10).pow(new BN(token.decimals - 9))); - - api.add(token.mint, balance.toString()) - } - } - for (const perpPosition of userData.perpPositions) { - if (!new BN(perpPosition.baseAssetAmount).isZero()) { - const marketIndex = perpPosition.marketIndex - const token = getTokenInfo(false, marketIndex) - if (!token) continue; - const baseAssetAmount = new BN(perpPosition.baseAssetAmount) - .div(new BN(10).pow(new BN(token.decimals - 9))); - const quoteAssetAmount = new BN(perpPosition.quoteAssetAmount) - api.add(TOKEN_INFO['USDC'].mint, quoteAssetAmount.toString()) - api.add(token.mint, baseAssetAmount.toString()) - } - } - } -} - -async function tvlSolana(api) { - const vaults = [ - 'BKVWqzbwXGFqQvnNVfGiM2kSrWiR88fYhFNmJDX5ccyv', - "GYfHKWyvYN6DLHxZeptq6Drnb6hxqKgaKteMBsMG7u8Q" - ] - - await getDriftTvl(api, vaults); - await tvlJupiter(api, vaults); - - // add wallet balance - return sumTokens2({ api, owners: vaults, }) -} - -async function tvlArbitrum(api) { - const vaults = [ - "0xd468808cc9e30f0ae5137805fff7ffb213984250", - "0x148D779ABAD372C080844F3bF14002a5659858a7", - "0xe15A7A5d2f1B7046af75e239a83d052B8fDb4230", - "0xf13891426ecc002d9b3c9c293bcc176e3ceb04e7", - "0xd51298f8eaf78943a67535a24f4bcb18b787ba0e", - "0x5C83942B7919db30634f9Bc9e0e72aD778852FC8", - "0x34931CeF6b414b08E04AA98b251fBA96B9Ec363c", - "0xA163c206D11d888935f3203C27c4C876eD275fE9", - ]; - const addresses = { - gmWeth: "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", - gmBtc: "0x47c031236e19d024b42f8AE6780E44A573170703", - aaveEthAToken: "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - aaveEthDebtToken: "0x0c84331e39d6658Cd6e6b9ba04736cC4c4734351", - aaveBtcAToken: "0x078f358208685046a11C85e8ad32895DED33A249", - aaveBtcDebtToken: "0x92b42c66840C7AD907b4BF74879FF3eF7c529473", - aaveUsdcAToken: "0x724dc807b04555b71ed48a6896b6F41593b8C637", - aaveUsdcDebtToken: "0xf611aEb5013fD2c0511c9CD55c7dc5C1140741A6", - }; - const v2ReaderAbi = require('./v2_reader_abi.json'); - const v2ReaderAddress = '0xf60becbba223EEA9495Da3f606753867eC10d139'; - const dataStoreAddress = '0xFD70de6b91282D8017aA4E741e9Ae325CAb992d8'; - - const markets = await api.call({ - abi: v2ReaderAbi.getMarkets, - target: v2ReaderAddress, - params: [dataStoreAddress, 0, 32] - }) - - const marketToTokenMap = {}; - for (const market of markets) { - marketToTokenMap[market[0]] = market[1]; - } - await api.sumTokens({ - tokens: [ - // Wallet - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.WETH, - ADDRESSES.null, - ADDRESSES.arbitrum.WBTC, - // GMXv2 Earn - addresses.gmWeth, - addresses.gmBtc, - // Aave - addresses.aaveEthAToken, - addresses.aaveBtcAToken, - addresses.aaveUsdcAToken, - addresses.aaveEthDebtToken, - addresses.aaveBtcDebtToken, - addresses.aaveUsdcDebtToken, - ], - owners: vaults - }) - - // GMXv2 Trade - const calls = vaults.map(vault => ({ params: [dataStoreAddress, vault, 0, 999999999999], })) - const positions = await api.multiCall({ - abi: v2ReaderAbi.getAccountPositions, - target: v2ReaderAddress, - calls, - }); - for (const pos of positions) { - if (!pos) continue; - for (const p of pos) { - if (!p.addresses || !p.numbers) continue; - const flag = p.flags.isLong ? 1 : -1; - // collateral - api.add(p.addresses.collateralToken, p.numbers.collateralAmount); - // pnl = sizeInTokens * tokenPrice - sizeInUsd - api.add(marketToTokenMap[p.addresses.market], p.numbers.sizeInTokens * flag); - api.add(ADDRESSES.arbitrum.USDC_CIRCLE, -p.numbers.sizeInUsd * 1e-24 * flag); - } - } - -} - -async function tvlEthereum(api) { - const vaults = [ - "0x5C83942B7919db30634f9Bc9e0e72aD778852FC8", - ]; - const addresses = { - weth: ADDRESSES.ethereum.WETH, - usdc: ADDRESSES.ethereum.USDC, - usdt: ADDRESSES.ethereum.USDT, - usde: ADDRESSES.ethereum.USDe, - aaveWethAToken: '0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', - aaveUsdcAToken: '0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', - aaveUsdtAToken: '0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a', - aaveUsdeAToken: '0x4F5923Fc5FD4a93352581b38B7cD26943012DECF', - aaveWethDebtToken: '0xeA51d7853EEFb32b6ee06b1C12E6dcCA88Be0fFE', - aaveUsdcDebtToken: '0x72E95b8931767C79bA4EeE721354d6E99a61D004', - aaveUsdtDebtToken: '0x6df1C1E379bC5a00a7b4C6e67A203333772f45A8', - aaveUsdeDebtToken: '0x015396E1F286289aE23a762088E863b3ec465145', - }; - - await api.sumTokens({ - tokens: [ - addresses.weth, - addresses.usdc, - addresses.usdt, - addresses.usde, - addresses.aaveWethAToken, - addresses.aaveUsdcAToken, - addresses.aaveUsdtAToken, - addresses.aaveUsdeAToken, - addresses.aaveWethDebtToken, - addresses.aaveUsdcDebtToken, - addresses.aaveUsdtDebtToken, - addresses.aaveUsdeDebtToken, - ], - owners: vaults - }); -} - -module.exports = { - timetravel: false, - doublecounted: true, - methodology: "Solana: Drift | Arbitrum: Aave, GMX | Ethereum: Aave", - solana: { tvl: tvlSolana }, - arbitrum: { tvl: tvlArbitrum }, - ethereum: { tvl: tvlEthereum }, -}; diff --git a/projects/knightrade/v2_reader_abi.json b/projects/knightrade/v2_reader_abi.json deleted file mode 100644 index 2be1fc0be58..00000000000 --- a/projects/knightrade/v2_reader_abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getAccountPositions": "function getAccountPositions(address dataStore, address account, uint256 start, uint256 end) view returns (((address account, address market, address collateralToken) addresses, (uint256 sizeInUsd, uint256 sizeInTokens, uint256 collateralAmount, uint256 borrowingFactor, uint256 fundingFeeAmountPerSize, uint256 longTokenClaimableFundingAmountPerSize, uint256 shortTokenClaimableFundingAmountPerSize, uint256 increasedAtBlock, uint256 decreasedAtBlock) numbers, (bool isLong) flags)[])", - "getMarkets": "function getMarkets(address dataStore, uint256 start, uint256 end) view returns ((address marketToken, address indexToken, address longToken, address shortToken)[])" -} \ No newline at end of file diff --git a/projects/knightsfantom/index.js b/projects/knightsfantom/index.js deleted file mode 100644 index 7ee5e30641b..00000000000 --- a/projects/knightsfantom/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x2166496575200E170310a34B5F697f7c124fF2C7', - nativeToken: '0xba36266B6565C96BD77815fa898f403Cc06F64cf', -}) \ No newline at end of file diff --git a/projects/knightswap-lending/index.js b/projects/knightswap-lending/index.js deleted file mode 100644 index 1cffb381a69..00000000000 --- a/projects/knightswap-lending/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const {compoundExports2} = require('../helper/compound'); -const methodologies = require('../helper/methodologies'); - -const unitroller_bsc = "0x4f92913b86d5e79593fa2e475a8232b22ef17ed1" - -module.exports = { - bsc:compoundExports2({ comptroller: unitroller_bsc}), - methodology: methodologies.lendingMarket, -} \ No newline at end of file diff --git a/projects/knightswap/index.js b/projects/knightswap/index.js deleted file mode 100644 index 095af313e33..00000000000 --- a/projects/knightswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const bscStaking = "0xE50cb76A71b0c52Ab091860cD61b9BA2FA407414"; -const bscKnight = "0xd23811058eb6e7967d9a00dc3886e75610c4abba"; - -const ftmStaking = "0xb02e3A4B5ebC315137753e24b6Eb6aEF7D602E40"; -const ftmKnight = "0x6cc0e0aedbbd3c35283e38668d959f6eb3034856"; - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0xf0bc2E21a76513aa7CC2730C7A1D6deE0790751f', - 'fantom': '0x7d82F56ea0820A9d42b01C3C28F1997721732218' -}, { - staking: { - bsc: [bscStaking, bscKnight,], - fantom: [ftmStaking, ftmKnight,], - }, -}) \ No newline at end of file diff --git a/projects/knitfinance/index.js b/projects/knitfinance/index.js deleted file mode 100644 index 23aa53e9ef3..00000000000 --- a/projects/knitfinance/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const { get } = require("../helper/http"); -const url = "https://knit-admin.herokuapp.com/api/public/tvl/"; - -const chainConfig = { - bsc: "bsc", - polygon: "matic", - ethereum: "eth", - heco: "heco", - fantom: "fantom", - avax: "avalanche", - kcc: "kcc", - harmony: "harmony", - okexchain: "okexchain", - syscoin: "syscoin", - telos: "telos", - moonriver: "moonriver", - milkomeda: "milkomeda", - moonbeam: "moonbeam", - bitgert: "bitgert", - xdai: "gnosis", - reef: "reef", - kava: "kava" -}; - -const tokenMapping = { - bsc: { - '0xb2a04c839b9f91889f333e661c9c51deaa6e642d': { geckoId: 'dash'}, - '0x28cf5786dbc2e9ecc1e5b8fd8a2fce005f095c06': { geckoId: 'ripple'}, - '0xf3e94c72889afba13ba53898d22717821883e1a5': { geckoId: 'stellar'}, - }, - polygon: { - '0x9485adfdcd26f56f9b55ce189905b27845558850': { geckoId: 'matic-network'}, - '0x96729c6de16693d9c9b2013e22842e3eadcffe31': { geckoId: 'ripple'}, - '0x03c8fb4716ab826041e6d447c0b3916feeefadfe': { geckoId: 'stellar'}, - }, - fantom: { - '0xaafc50ac5c03555085f555a2b7c139b6ee058ca2': { geckoId: 'ripple'}, - '0xe401744b34f44ceefcfa2ba66eae9f1e448f0bd6': { geckoId: 'stellar'}, - }, -} - -const blacklist = [ - '0xef53462838000184f35f7d991452e5f25110b207', -] - -module.exports = { - timetravel: false, -}; - -function addChain(chain) { - module.exports.deadFrom = "2023-02-01" - module.exports[chain] = { - tvl: async (api) => { - const key = chainConfig[chain]; - const mapping = tokenMapping[chain] || {} - let response = await get(url + key); - for (const info of response.data.data.info) { - let token = info.address - let bal = info.balance - if (+info.balance > 0 && !blacklist.includes(token)) { - token = token.toLowerCase() - if (mapping[token]) { - bal /= 10 ** (mapping[token].decimals || 18) - token = mapping[token].geckoId - } - api.add(token, bal) - } - } - }, - }; -} - -Object.keys(chainConfig).map(addChain); diff --git a/projects/know-to-earn.js b/projects/know-to-earn.js deleted file mode 100644 index dd684082189..00000000000 --- a/projects/know-to-earn.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require('./helper/unknownTokens'); -module.exports = { - iotex: { - pool2: sumTokensExport({ owner: '0x74d80963d1f2db8536be25a9b618c6ed7a20d140', tokens: ['0x767eded9032ce68dc4e475addf0059baab936585'], useDefaultCoreAssets: true, }), - tvl: () => ({}), - }, -}; diff --git a/projects/koala-defi/index.js b/projects/koala-defi/index.js deleted file mode 100644 index 94cd493a129..00000000000 --- a/projects/koala-defi/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'polygon', - masterchef: '0xf6948f00FC2BA4cDa934C931628B063ed9091019', - nativeToken: '0x04f2e3ec0642e501220f32fcd9e26e77924929a9', - }), - masterchefExports({ - chain: 'bsc', - masterchef: '0x7b3cA828e189739660310B47fC89B3a3e8A0E564', - nativeToken: '0xb2ebaa0ad65e9c888008bf10646016f7fcdd73c3', - }) -]) \ No newline at end of file diff --git a/projects/koalaswap/index.js b/projects/koalaswap/index.js deleted file mode 100644 index ffdc7d3bca9..00000000000 --- a/projects/koalaswap/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getLogs } = require('../helper/cache/getLogs') - -const FACTORY = '0xcF3Ee60d29531B668Ae89FD3577E210082Da220b' // KoalaSwap factory -const startBlocks = { - unit0: 2291892, -} - -function chainTvl(chain) { - return async (api) => { - const START_BLOCK = startBlocks[chain] - const logs = await getLogs({ - api, - target: FACTORY, - fromBlock: START_BLOCK, - topic: 'PoolCreated(address,address,uint24,int24,address)', - }) - - const pairAddresses = [] - const token0Addresses = [] - const token1Addresses = [] - - for (let log of logs) { - token0Addresses.push(`0x${log.topics[1].substr(-40)}`.toLowerCase()) - token1Addresses.push(`0x${log.topics[2].substr(-40)}`.toLowerCase()) - pairAddresses.push(`0x${log.data.substr(-40)}`.toLowerCase()) - } - - const pairs = {} - token0Addresses.forEach((token0Address, i) => { - const pairAddress = pairAddresses[i] - pairs[pairAddress] = { - token0Address, - } - }) - - token1Addresses.forEach((token1Address, i) => { - const pairAddress = pairAddresses[i] - pairs[pairAddress] = { - ...(pairs[pairAddress] || {}), - token1Address, - } - }) - - const balanceCalls = [] - for (let pair of Object.keys(pairs)) { - balanceCalls.push({ - target: pairs[pair].token0Address, - params: pair, - }) - balanceCalls.push({ - target: pairs[pair].token1Address, - params: pair, - }) - } - - const tokenBalances = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - calls: balanceCalls, - block: api.block, - chain, - }) - - const balances = {} - const transform = (addr) => `${chain}:${addr}` - - sdk.util.sumMultiBalanceOf(balances, tokenBalances, true, transform) - - return balances - } -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL consists of tokens locked in KoalaSwap V3 liquidity pools.', - unit0: { - tvl: chainTvl('unit0'), - }, -} diff --git a/projects/kodiak-v2/index.js b/projects/kodiak-v2/index.js deleted file mode 100644 index b357c103eeb..00000000000 --- a/projects/kodiak-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'berachain': '0x5e705e184d233ff2a7cb1553793464a9d0c3028f' -}) \ No newline at end of file diff --git a/projects/kodiak-v3/index.js b/projects/kodiak-v3/index.js deleted file mode 100644 index 95b059c52a4..00000000000 --- a/projects/kodiak-v3/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const kodiakFactory = '0x5261c5A5f08818c08Ed0Eb036d9575bA1E02c1d6' - -const abis = { - token0: 'address:token0', - token1: 'address:token1', - getDeployers: 'address[]:getDeployers', - getIslands: 'function getIslands(address deployer) view returns (address[])', - getUnderlyingBalances: 'function getUnderlyingBalances() view returns (uint256 amount0Current, uint256 amount1Current)' -} - -const tvl = async (api) => { - const deployers = await api.call({ target: kodiakFactory, abi: abis.getDeployers }) - const islands = (await api.multiCall({ calls: deployers.map((d) => ({ target: kodiakFactory, params: [d] })), abi: abis.getIslands })).flat() - - const [token0s, token1s, balances] = await Promise.all([ - api.multiCall({ calls: islands, abi: abis.token0, permitFailure: true }), - api.multiCall({ calls: islands, abi: abis.token1, permitFailure: true }), - api.multiCall({ calls: islands, abi: abis.getUnderlyingBalances, permitFailure: true }) - ]) - - islands.forEach((_, i) => { - const token0 = token0s[i] - const token1 = token1s[i] - const balance = balances[i] - if (!token0 || !token1 || !balance) return - const { amount0Current, amount1Current } = balance - api.add(token0, amount0Current) - api.add(token1, amount1Current) - }) -} - -module.exports = { - berachain: { tvl } -} \ No newline at end of file diff --git a/projects/kodo-exchange/index.js b/projects/kodo-exchange/index.js deleted file mode 100644 index 59e0d67d2f8..00000000000 --- a/projects/kodo-exchange/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const {uniTvlExport} = require('../helper/unknownTokens.js') - -module.exports = uniTvlExport('taiko', '0x535E02960574d8155596a73c7Ad66e87e37Eb6Bc', { hasStablePools: true}) diff --git a/projects/koffeeswap/abi.json b/projects/koffeeswap/abi.json deleted file mode 100644 index 9a9dc1f8d72..00000000000 --- a/projects/koffeeswap/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "stakingToken": "address:stakingToken", - "token0": "address:token0", - "token1": "address:token1", - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)" -} \ No newline at end of file diff --git a/projects/koffeeswap/index.js b/projects/koffeeswap/index.js deleted file mode 100644 index 26e17a5731d..00000000000 --- a/projects/koffeeswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - kcc: { tvl: getUniTVL({ factory: '0xc0ffee00000e1439651c6ad025ea2a71ed7f3eab', useDefaultCoreAssets: true, }), }, -} diff --git a/projects/kofi-finance/index.js b/projects/kofi-finance/index.js deleted file mode 100644 index cc4a87a5c3a..00000000000 --- a/projects/kofi-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { function_view } = require('../helper/chain/aptos') - -module.exports = { - timetravel: false, - aptos: { - tvl: async () => { - const supply = await function_view({ - "functionStr": "0x2cc52445acc4c5e5817a0ac475976fbef966fedb6e30e7db792e10619c76181f::rewards_manager::get_staked_apt", - "type_arguments": [], - "args": [] - }); - return { - aptos: supply/1e8 - } - } - } -} \ No newline at end of file diff --git a/projects/kogefarm/index.js b/projects/kogefarm/index.js deleted file mode 100644 index 6708969d451..00000000000 --- a/projects/kogefarm/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') -const { getConfig } = require('../helper/cache') - -const kogeMasterChefAddr = '0x6275518a63e891b1bC54FEEBBb5333776E32fAbD' - -// Pool2 -const kogecoinVaultAddr = '0x992Ae1912CE6b608E0c0d2BF66259ab1aE62A657' -const kogecoinMaticVaultAddr = '0xb7D3e1C5cb26D088d619525c6fD5D8DDC1B543d1' -const kogecoinSageVaultAddr = '0x4792b5943a05fc6AF3B20B5F1D1d7dDe33C42980' -const kogecoinIrisVaultAddr = '0x55A2FedB176C09488102596Db21937A753025466' -const kogecoinCollarVaultAddr = '0x64c20BB3D9aCD870f748fe73B6541D500643e490' -const kogecoinShieldVaultAddr = '0x7a9be7CdF26C8311625ed97c174869fcA9b791eC' -const kogecoinBetaVaultAddr = '0xEab5DAC8E6E3da7679b2a01FCD17DBE1Ed519904' -const kogecoinAlphaVaultAddr = '0xD02064bEd4126ACCCe79431A52F206C558479648' -const kogecoinTamagoVaultAddr = '0xA838F1e986b27d7AC5a977c7d0eCbADFFCDC7Bb5' - -const _kogePool2 = [ - kogecoinMaticVaultAddr, - kogecoinSageVaultAddr, - kogecoinIrisVaultAddr, - kogecoinCollarVaultAddr, - kogecoinShieldVaultAddr, - kogecoinBetaVaultAddr, - kogecoinAlphaVaultAddr, - kogecoinTamagoVaultAddr -] - -const config = { - kava: { endpoint: 'https://raw.githubusercontent.com/kogecoin/vault-contracts/main/kava_vault_addresses.json' }, - moonriver: { endpoint: 'https://raw.githubusercontent.com/kogecoin/vault-contracts/main/movr_vault_addresses.json' }, - fantom: { endpoint: 'https://raw.githubusercontent.com/kogecoin/vault-contracts/main/ftm_vault_addresses.json' }, - polygon: { endpoint: 'https://raw.githubusercontent.com/kogecoin/vault-contracts/main/vaultaddresses' }, -} - -const abi = { - strategy: "function strategy() view returns (address)", - balance: "uint256:balance", - token: "address:token", - balanceOfPool: "function balanceOf() view returns (uint256)" -} - -Object.keys(config).forEach(chain => { - const { endpoint } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - let info = await getConfig('kogefarm/' + chain, endpoint); - if (typeof info === 'string') info = JSON.parse(info.replace(/,(\s*[}\]])/g, '$1')); - - let vaults = chain === 'polygon' ? info : info.map(v => v.vault); - if (chain === 'polygon') { - vaults = vaults.filter(v => !_kogePool2.includes(v)); - const [tokens, bals] = await Promise.all([ - api.multiCall({ abi: abi.token, calls: vaults }), - api.multiCall({ abi: abi.balance, calls: vaults }) - ]); - api.addTokens(tokens, bals); - - } else { - const [tokens, strategies] = await Promise.all([ - api.multiCall({ abi: abi.token, calls: vaults }), - api.multiCall({ abi: abi.strategy, calls: vaults }) - ]); - - const balanceOfPools = await api.multiCall({ calls: strategies, abi: abi.balanceOfPool }); - api.addTokens(tokens, balanceOfPools); - } - return sumUnknownTokens({ api, resolveLP: true }); - } - }; -}); - - - -module.exports.polygon.pool2 = async (api) => { - const [tokens, bals] = await Promise.all([ - api.multiCall({ abi: abi.token, calls: _kogePool2 }), - api.multiCall({ abi: abi.balance, calls: _kogePool2 }) - ]) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, resolveLP: true, tokens: ['0x3885503aef5e929fcb7035fbdca87239651c8154'], owner: kogeMasterChefAddr, }) -} - -module.exports.polygon.staking = async (api) => { - return sumUnknownTokens({ api, tokens: ['0x13748d548D95D78a3c83fe3F32604B4796CFfa23'], owner: kogeMasterChefAddr, }) -} \ No newline at end of file diff --git a/projects/kokoa-finance/Helper.json b/projects/kokoa-finance/Helper.json deleted file mode 100644 index e3c0899bc58..00000000000 --- a/projects/kokoa-finance/Helper.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "address": "0x2b170005ADA0e616E78A7fa93ea4473c03A98aa0", - "abi":{ - "getCollateralTVL": "uint256[]:getCollateralTVL", - "getSkokoaTVL": "uint256:getSkokoaTVL", - "getKlayswapLpFarmTVL": "function getKlayswapLpFarmTVL(address pool) view returns (uint256 tvl)", - "getKokonutLpFarmTVL": "function getKokonutLpFarmTVL(address pool) view returns (uint256 tvl)" - } -} \ No newline at end of file diff --git a/projects/kokoa-finance/index.js b/projects/kokoa-finance/index.js deleted file mode 100644 index 9387017b923..00000000000 --- a/projects/kokoa-finance/index.js +++ /dev/null @@ -1,117 +0,0 @@ -const ABI = require("./Helper.json"); -const sdk = require("@defillama/sdk"); -const chain = 'klaytn' - -const { toUSDTBalances } = require("../helper/balances"); -const BigNumber = require("bignumber.js"); - -const HELPER_ADDR = "0x2b170005ADA0e616E78A7fa93ea4473c03A98aa0"; - -const KLAYSWAP_POOLS = [ - { - poolname: `KLAYKOKOA`, - address: `0x53FE8c456C470A7214ed5caAd88c486449f3b196`, - decimal: 18 - }, - { - poolname: `AKLAYKOKOA`, - address: `0x42cA952604ec07293ee463f6c5444C63339D53A0`, - decimal: 18 - } -]; - -const KOKONUT_POOLS = [ - // { - // poolname: 'KLAYKSD', - // address: `0xc513524FDE442f2763c2A2Ba31D9A5c13Bcbab7b`, - // decimal: 18 - // }, - { - poolname: 'AKLAYKSD', - address: `0xB07D6D2534BfF886589064cc77CE025f2F61641a`, - decimal: 18 - }, - { - poolname: `KSD4EYE`, - address: `0xa3A991273Ff9B1B9E0C2fD5e595830890F55D133`, - decimal: 18 - } -] - -const fetchCollateral = async (ts, _block, chainBlocks) => { - const block = chainBlocks[chain] - //calculate TVL sum of all collaterals locked in the protocol vaults - const decimal = 18; - - var sum = new BigNumber(0); - const { output: assetTvlLists } = await sdk.api.abi.call({ - chain, block, - target: HELPER_ADDR, - abi: ABI.abi.getCollateralTVL - }) - for (let assetTvl of assetTvlLists) { - sum = sum.plus(assetTvl); - } - sum = sum.dividedBy(BigNumber(10).pow(decimal * 2)) - return toUSDTBalances(sum.toFixed(2)); -} - -const fetchPool2 = async (ts, _block, chainBlocks) => { - const block = chainBlocks[chain] - // const toa = [ - // ['0x4bFCc93fb85c969a590A2e7D7a4Ad72F0668AFF2', '0x53fe8c456c470a7214ed5caad88c486449f3b196'], // KLAY-KOKOA - // ['0xd52aCC40924C906D3EeAB239D6F6C36B612011af', '0xc8D2b302266f90a713af573dFd4F305CC4C30C92'], // KLAY-KSD - // ] - - // return sumTokens2({ chain, block, tokensAndOwners: toa, resolveLP: true }) - const decimal = 18; - - let klayswapPool2Tvl = BigNumber(0); - for (let pool of KLAYSWAP_POOLS) { - const { output: value } = await sdk.api.abi.call({ - chain, block, - target: HELPER_ADDR, - params: [pool[`address`]], - abi: ABI.abi.getKlayswapLpFarmTVL - }) - klayswapPool2Tvl = klayswapPool2Tvl.plus(value); - } - let kokonutPool2Tvl = BigNumber(0); - for (let pool of KOKONUT_POOLS) { - const { output: value } = await sdk.api.abi.call({ - chain, block, - target: HELPER_ADDR, - params: [pool[`address`]], - abi: ABI.abi.getKokonutLpFarmTVL - }) - kokonutPool2Tvl = kokonutPool2Tvl.plus(value); - } - const totalPool2 = klayswapPool2Tvl.plus(kokonutPool2Tvl).dividedBy(BigNumber(10 ** (decimal * 2))); - return toUSDTBalances(totalPool2.toFixed(2)); -} - -const fetchStakedToken = async (ts, _block, chainBlocks) => { - const block = chainBlocks[chain] - //staked token prices are calculated using real-time KOKOA price from KLAY-KOKOA LP - - let { output: skokoaTvl } = await sdk.api.abi.call({ - chain, block, - target: HELPER_ADDR, - abi: ABI.abi.getSkokoaTVL - }) - const decimal = 18; - skokoaTvl = BigNumber(skokoaTvl).dividedBy(BigNumber(10).pow(decimal * 2)); - return toUSDTBalances(BigNumber(skokoaTvl).toFixed(2)); -} - -// https://github.com/kokoa-finance/kokonutswap-contract -module.exports = { - misrepresentedTokens: true, - klaytn: { - staking: fetchStakedToken, - tvl: fetchCollateral, - pool2: fetchPool2 - }, - methodology: - "tvl is calculated using the total collateral value locked in the protocol. Staked tokens include staked kokoa value. Pool2 includes staked LP tokens" -} \ No newline at end of file diff --git a/projects/kokomo/index.js b/projects/kokomo/index.js deleted file mode 100644 index da8909d969d..00000000000 --- a/projects/kokomo/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { compoundExports, } = require('../helper/compound') - -module.exports = { - hallmarks: [ - [1680264000,"Rug Pull"] - ], - optimism: compoundExports('0x91c471053bA4697B13d62De1E850Cc89EbE23633'), - arbitrum: compoundExports('0x91c471053bA4697B13d62De1E850Cc89EbE23633'), -} - -module.exports.optimism.borrowed = () => ({}) -module.exports.deadFrom = 1680264000 \ No newline at end of file diff --git a/projects/kokomoswap/abi.json b/projects/kokomoswap/abi.json deleted file mode 100644 index 2ce098a22b5..00000000000 --- a/projects/kokomoswap/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accKokomoPerShare)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/kokomoswap/index.js b/projects/kokomoswap/index.js deleted file mode 100644 index 3bad2fefb2b..00000000000 --- a/projects/kokomoswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens.js"); - -const FACTORY = "0x971A5f6Ef792bA565cdF61C904982419AA77989f"; - -module.exports = { - bsc: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: FACTORY, - }), - }, -}; diff --git a/projects/kokonut-swap/abi.json b/projects/kokonut-swap/abi.json deleted file mode 100644 index fbcc0eb5af1..00000000000 --- a/projects/kokonut-swap/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "getPoolPriceInfo": "function getPoolPriceInfo(address swap) view returns (address[] tokens, uint256[] balances, uint256[] prices)", - "getStakedEyePriceInfo": "function getStakedEyePriceInfo() view returns (uint256 balance, uint256 price)", - "getRegisteredPools": "function getRegisteredPools() view returns (tuple(address addr,string name,string symbol,address lpTokenAddress,uint256 lpTokenVirtualPrice,uint256 lpTokenTotalSupply,uint256 adminFee,tuple(address addr,string name,string symbol,uint8 decimals,uint256 balance,uint256 nativeBalance,uint256 allowance,bool isLpToken)[] liquidity,uint256 xcpProfit,uint256 priceScale,uint256 priceOracle)[])", - "getPoolList": "address[]:getPoolList" -} \ No newline at end of file diff --git a/projects/kokonut-swap/index.js b/projects/kokonut-swap/index.js deleted file mode 100644 index 48e99441d57..00000000000 --- a/projects/kokonut-swap/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const abi = require("./abi.json"); -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getUniTVL, } = require("../helper/unknownTokens"); -const { getConfig } = require("../helper/cache"); -const { staking } = require('../helper/staking') - -async function klaytn_tvl(api) { - const { pools } = await getConfig('kokonut-swap', 'https://prod.kokonut-api.com/pools') - const ownerTokens = []; - const blacklistedTokens = [] - for (const pool of pools) { - const { address, coins, lpTokenAddress } = pool - ownerTokens.push([coins, address]) - blacklistedTokens.push(lpTokenAddress) - } - return sumTokens2({ api, ownerTokens, blacklistedTokens, }) -} - -async function polygon_zkevm_tvl(api) { - const ownerTokens = []; - const poolList = await api.call({ target: "0x677bBBAd41D784a4731d902c613f8af43AAb4feb", abi: abi.getRegisteredPools, }) - for (const pool of poolList) { - ownerTokens.push([pool.liquidity.map(t => t.addr), pool.addr]); - } - return sumTokens2({ api, ownerTokens }); -} - -const uniV2TVL = getUniTVL({ factory: '0x4Cf1284dcf30345232D5BfD8a8AAd6734b6941c4', useDefaultCoreAssets: true }); - -async function base_tvl(api) { - const ownerTokens = []; - const poolList = await api.call({ target: "0x03173F638B3046e463Ab6966107534f56E82E1F3", abi: abi.getRegisteredPools, }) - for (const pool of poolList) { - ownerTokens.push([pool.liquidity.map(t => t.addr), pool.addr]); - } - return sumTokens2({ api, ownerTokens }); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - klaytn: { - staking: staking('0xc75456755D68058BF182BCd41c6d9650DB4ce89E', '0xcd670d77f3dcab82d43dff9bd2c4b87339fb3560'), - tvl: klaytn_tvl - }, - polygon_zkevm: { - tvl: polygon_zkevm_tvl - }, - base: { - tvl: sdk.util.sumChainTvls([base_tvl, uniV2TVL]) - }, - methodology: - "tvl is calculated using the total value of protocol's liquidity pool. Staked tokens include staked EYE values. Pool2 includes staked lp tokens eligible for KOKOS emissions" -}; \ No newline at end of file diff --git a/projects/kokoswap/abi.json b/projects/kokoswap/abi.json deleted file mode 100644 index 2ce098a22b5..00000000000 --- a/projects/kokoswap/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accKokomoPerShare)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/kokoswap/index.js b/projects/kokoswap/index.js deleted file mode 100644 index d96661b992d..00000000000 --- a/projects/kokoswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const FACTORY = "0x971A5f6Ef792bA565cdF61C904982419AA77989f"; -module.exports = { - methodology: "TVL could the liquidity on the DEX, pairs are found using the Factory address: '0x971A5f6Ef792bA565cdF61C904982419AA77989f'.", - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: FACTORY, - }), - }, -}; diff --git a/projects/kolibri/index.js b/projects/kolibri/index.js deleted file mode 100644 index b0083ea5dc7..00000000000 --- a/projects/kolibri/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const BigNumber = require("bignumber.js"); -const { toUSDTBalances } = require('../helper/balances'); -const { get } = require("../helper/http"); -const { getConfig } = require('../helper/cache') - -const tvlUrl = 'https://kolibri-data.s3.amazonaws.com/mainnet/totals.json'; - -async function tvl() { - const url = 'https://kolibri-data.s3.amazonaws.com/mainnet/oven-data.json' - await getConfig('kolibri', url) - const { allOvenData } = await get(url) - const filtered = allOvenData.filter(oven => !oven.isLiquidated && +oven.balance > 1e5) - return { - tezos: filtered.reduce((tvl, oven) => tvl + +oven.balance / 1e6, 0) - } -} - -async function pool2() { - const usd_amount = (await get(tvlUrl)).quipuswapFarmBalanceUSD - return { - [ADDRESSES.tezos.USDT_cg]: BigNumber(usd_amount).toFixed(0) - }; -} -module.exports = { - methodology: 'TVL counts the XTZ tokens that are deposited to mint kUSD, and kUSD in the liquidity pool. Borrowed tokens are not counted.', - tezos: { - tvl, - pool2 - } -}; diff --git a/projects/kommunitas/index.js b/projects/kommunitas/index.js deleted file mode 100644 index 556fdb17a92..00000000000 --- a/projects/kommunitas/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { stakings } = require("../helper/staking"); -const KOM_TOKEN_CONTRACT_POLYGON = '0xC004e2318722EA2b15499D6375905d75Ee5390B8'; -const KOM_STAKING_CONTRACT_POLYGON = [ - "0x453d0a593d0af91e77e590a7935894f7ab1b87ec", - "0x8d37b12DB32E07d6ddF10979c7e3cDECCac3dC13", - "0x8d34Bb43429c124E55ef52b5B1539bfd121B0C8D" -]; -const KOM_TOKEN_CONTRACT_ARBITRUM = '0xA58663FAEF461761e44066ea26c1FCddF2927B80'; -const KOM_STAKING_CONTRACT_ARBITRUM = ["0x5b63bdb6051CcB9c387252D8bd2364D7A86eFC70"]; -const KOM_TOKEN_CONTRACT_BSC = '0x3cd886be588685484528cbf6494729922e4e89c6'; -const KOM_STAKING_CONTRACT_BSC = ["0x47fEAab70363fBE9eD3eb5E3037c18361FA7Bb74"]; - -module.exports = { - polygon: { - tvl: () => ({}), - staking: () => ({}), // old KOM token staking contract - }, - arbitrum: { - tvl: () => ({}), - staking: () => ({}), // old KOM token staking contract - }, - bsc: { - staking: stakings(KOM_STAKING_CONTRACT_BSC, KOM_TOKEN_CONTRACT_BSC) - } -}; diff --git a/projects/kongswap/index.js b/projects/kongswap/index.js deleted file mode 100644 index 223ac42b12b..00000000000 --- a/projects/kongswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { get } = require('../helper/http') - -module.exports = { - misrepresentedTokens: true, - icp: { tvl }, -} - -async function tvl(api) { - let { total_tvl } = await get('https://api.kongswap.io/api/pools/totals') - api.addCGToken('tether', Math.round(total_tvl)) -} diff --git a/projects/konverter/contracts.json b/projects/konverter/contracts.json deleted file mode 100644 index 383135ab3c7..00000000000 --- a/projects/konverter/contracts.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "wemix": { - "priceCalculator": "0xdc9cd9f7a3b962857854120dC3a8c75ed8A48b9e", - "stableSwapHelper": "0x164056263dBB527D06B008F263780fC8f1Bd22F5", - "pools": { - "0xa60448B0621335905a65753173D7e6FDFe494Da2": { - "name": "k3Pool", - "isMetaPool": false, - "n_coins": 3, - "poolToken": "0x7D57CeF121AC2371472214d100FF01eC6ddD5fAa", - "underlyingTokens": [ - "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D", - "0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F", - "0x8E81fCc2d4A3bAa0eE9044E0D7E36F59C9BbA9c1" - ] - }, - "0xDacaD9ddF713496012748D35496c0FB09c8d8c15": { - "name": "wcd-k3Pool", - "isMetaPool": true, - "n_coins": 2, - "poolToken": "0xf7FA632AbeEDAD21E59089c5174C47735903506F", - "underlyingTokens": [ - "0x2ec6Fc5c495aF0C439E17268d595286d5f897dD0", - "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D", - "0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F", - "0x8E81fCc2d4A3bAa0eE9044E0D7E36F59C9BbA9c1" - ] - } - } - } -} \ No newline at end of file diff --git a/projects/konverter/index.js b/projects/konverter/index.js deleted file mode 100644 index e70f3873a42..00000000000 --- a/projects/konverter/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const contracts = require("./contracts.json"); - -async function tvl(api) { - const ownerTokens = Object.entries(contracts[api.chain].pools).map(([pool, { underlyingTokens }]) => [underlyingTokens, pool]) - const blacklistedTokens = ownerTokens.map(i => i[1]) - return sumTokens2({ api, ownerTokens, blacklistedTokens }) -} - -module.exports = { - methodology: - "Sum of each liquidity pool's value", - wemix: { - tvl - }, - deadFrom: "2023-12-31", // https://medium.com/@konverter/konverter-service-is-set-to-be-phased-out-bd65dcf6dc34 -}; diff --git a/projects/koone/index.js b/projects/koone/index.js deleted file mode 100644 index ee330b2fdc1..00000000000 --- a/projects/koone/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ factory: '0x6167ce530e710e29d0F32CFe50062028800e5918', useDefaultCoreAssets: true }) - }, - methodology: "Counts liquidity in pools", -}; \ No newline at end of file diff --git a/projects/kopi/index.js b/projects/kopi/index.js deleted file mode 100644 index dc7e08916af..00000000000 --- a/projects/kopi/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens } = require('../helper/chain/cosmos'); - -async function tvl(api) { - return sumTokens({ api, owner: 'kopi14t4jnhmjejj08x5w8f4t0r3lv820gvh85xw8np', blacklistedTokens: [ - // excluding projects own tokens - 'ukopi', - 'ukusd', - ]}) -} - -module.exports = { - kopi: { - tvl - } -}; - diff --git a/projects/koral-finance/index.js b/projects/koral-finance/index.js deleted file mode 100644 index 3438a242a01..00000000000 --- a/projects/koral-finance/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const sui = require("../helper/chain/sui"); - -async function suiTVL() { - const { api } = arguments[3]; - - const vaultInfo = await sui.getObject("0x42d122b64fb242eb3149a3cccd45a8ceb3165140ce3beadca9dc0450be5d5a5d"); - api.add( - "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC", - vaultInfo.fields.supply_usdc - ); - -} - -module.exports = { - sui: { - tvl: suiTVL, - }, -}; diff --git a/projects/korbit/index.js b/projects/korbit/index.js deleted file mode 100644 index 03fb6da66a2..00000000000 --- a/projects/korbit/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x0c01089AEdc45Ab0F43467CCeCA6B4d3E4170bEa', - '0x2864DE013415B6c2C7A96333183B20f0F9cC7532', - '0x8550E644D74536f1DF38B17D5F69aa1BFe28aE86', - '0xd03be958e6b8da2d28ac8231a2291d6e4f0a7ea7', - '0xd6e0F7dA4480b3AD7A2C8b31bc5a19325355CA15', - '0xe5d7ccc5fc3b3216c4dff3a59442f1d83038468c', - '0xe83a48cae4d7120e8ba1c2e0409568ffba532e87', - '0xf0bc8FdDB1F358cEf470D63F96aE65B1D7914953', - ], - }, - bitcoin: { - owners: bitcoinAddressBook.korbit - }, - ripple: { - owners: [ - 'r9WGxuEbUSh3ziYt34mBRViPbqVxZmwsu3', - 'rGU8q9qNCCQG2eMgJpLJJ1YFF5JAbntqau', - 'rGq74nAmw1ARejUNLYEBGxiQBaoNtryEe9', - 'rJRarS792K6LTqHsFkZGzM1Ue6G8jZ2AfK', - 'rNWWbLxbZRKd51NNZCEjoSNovrrx7yiPyt', - 'rsYFhEk4uFvwvvKJomHL7KhdF29r2sw9KD' - ] - } -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/kordfi/index.js b/projects/kordfi/index.js deleted file mode 100644 index e726596da51..00000000000 --- a/projects/kordfi/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens, getStorage } = require("../helper/chain/tezos") -const SIRS = 'KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5' - -async function tvl(api) { - const { lqtAddress, tokenAddress, xtzPool, lqtTotal, tokenPool } = await getStorage(SIRS) - await sumTokens({ - includeTezos: true, balances: api.getBalances(), owners: [ - 'KT1WL6sHt8syFT2ts7NCmb5gPcS2tyfRxSyi', - 'KT19qWdPBRtkWrsQnDvVfsqJgJB19keBhhMX' - ] - }) - - const LPtoken = 'tezos:' + lqtAddress - const lqtBal = api.getBalances()[LPtoken] ?? 0 - const ratio = lqtBal / lqtTotal - api.add(tokenAddress, tokenPool * ratio) - api.add("coingecko:tezos", xtzPool * ratio / 1e6, { skipChain: true }) - - api.removeTokenBalance(LPtoken) - api.removeTokenBalance('KT18j785rB3G4wXxEpqwwG2hJ2iZrjLAbeo7') - - return api.getBalances() -} -module.exports = { - tezos: { tvl }, -} diff --git a/projects/kosmos/index.js b/projects/kosmos/index.js deleted file mode 100644 index d4510b19f89..00000000000 --- a/projects/kosmos/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const bondTellers = ["0x04B07dFBB78d32FF500466c35B4Fe5D615cbe911", "0x8d4439F8AC1e5CCF37F9ACb527E59720E0ccA3E3"]; - -module.exports = { - airdao: { tvl: sumTokensExport({ owners: bondTellers, - tokens: [ADDRESSES.null, ADDRESSES.airdao.USDC, '0x096B5914C95C34Df19500DAff77470C845EC749D'] - }) }, - methodology: `The TVL of Kosmos is equal to the total value of underlying assets locked in the BondTellers contracts.`, -}; diff --git a/projects/koyo/constants.js b/projects/koyo/constants.js deleted file mode 100644 index 0e6898c9e2e..00000000000 --- a/projects/koyo/constants.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const addresses = { - boba: { - treasury: "0x559dBda9Eb1E02c0235E245D9B175eb8DcC08398", - staking: "0xD3535a7797F921cbCD275d746A4EFb1fBba0989F", - feeCollector: "0xc9453BaBf4705F18e3Bb8790bdc9789Aaf17c2E1", - tokens: { - KYO: "0x618CC6549ddf12de637d46CDDadaFC0C2951131C", - BREW: "0x3a93bd0fa10050d206370eea53276542a105c885", - BOBA: ADDRESSES.boba.BOBA, - FRAX: ADDRESSES.boba.FRAX, - USDC: ADDRESSES.boba.USDC, - USDT: ADDRESSES.boba.USDT, - DAI: ADDRESSES.boba.DAI, - }, - vault: '0x2a4409cc7d2ae7ca1e3d915337d1b6ba2350d6a3', - }, - ethereum: { - treasury: "0x47BbF992a25B7fe1D532F8128D514524462731eF", - USDC: ADDRESSES.ethereum.USDC, - } -}; - -module.exports = { - addresses, -}; diff --git a/projects/koyo/index.js b/projects/koyo/index.js deleted file mode 100644 index b6878c4e665..00000000000 --- a/projects/koyo/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const constants = require("./constants"); -const { staking } = require("../helper/staking"); -// const { onChainTvl } = require("../helper/balancer"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - - -module.exports = { - boba: { - // tvl: onChainTvl(constants.addresses.boba.vault, 668337), - tvl: sumTokensExport({ owner: constants.addresses.boba.vault, tokens: Object.values(constants.addresses.boba.tokens)}), - staking: staking(constants.addresses.boba.staking, constants.addresses.boba.tokens.KYO), - }, - methodology: - "Counts the tokens locked on swap pools based on their holdings.", - hallmarks: [ - [1656419883, "Boba adds to FRAX-USDC"], - [1658439731, "Boba removes from FRAX-USDC"], - [1659129231, "Boba adds to USDC-DAI"], - [1665774187, "Boba removes from USDC-DAI"] - ], -}; diff --git a/projects/koyo/utils.js b/projects/koyo/utils.js deleted file mode 100644 index 8e827b998dc..00000000000 --- a/projects/koyo/utils.js +++ /dev/null @@ -1,35 +0,0 @@ -const chainTypeExports = (chainType, chainFn, chains) => { - const chainTypeProps = chains.reduce( - (obj, chain) => ({ - ...obj, - [chain]: { - [chainType]: chainFn(chain), - }, - }), - {} - ); - - return chainTypeProps; -}; - -const chainJoinExports = (cExports, chains) => { - const createdCExports = cExports.map((cExport) => cExport(chains)); - const chainJoins = chains.reduce((obj, chain) => { - - return { - ...obj, - [chain]: Object.fromEntries( - createdCExports.flatMap((cExport) => [ - ...Object.entries(cExport[chain]), - ]) - ), - }; - }, {}); - - return chainJoins; -}; - -module.exports = { - chainTypeExports, - chainJoinExports, -}; diff --git a/projects/kperp-exchange/index.js b/projects/kperp-exchange/index.js deleted file mode 100644 index 8c61e363a73..00000000000 --- a/projects/kperp-exchange/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - kava: { - tvl: () => ({}), - }, - hallmarks: [ - ['2023-02-23', 'Project decided to wind down.'], - ], -}; - -module.exports.deadFrom = '2023-04-13' \ No newline at end of file diff --git a/projects/kraken-btc/index.js b/projects/kraken-btc/index.js deleted file mode 100644 index fee50c310ce..00000000000 --- a/projects/kraken-btc/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -// https://www.kraken.com/kbtc -module.exports = { - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.krakenBTC }) } -} \ No newline at end of file diff --git a/projects/kraken/index.js b/projects/kraken/index.js deleted file mode 100644 index f690c4eb308..00000000000 --- a/projects/kraken/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x2910543af39aba0cd09dbb2d50200b3e800a63d2', // - Cold Wallet - '0xae2d4617c862309a3d75a0ffb358c7a5009c673f', // - Hot Wallet - '0x43984d578803891dfa9706bdeee6078d80cfc79e', // - Internal - '0x66c57bf505a85a74609d2c83e94aabb26d691e1f', // Hot Wallet - '0xda9dfa130df4de4673b89022ee50ff26f6ea73cf', // - Cold Wallet - '0xa83b11093c858c86321fbc4c20fe82cdbd58e09e', // - Hot Wallet - '0x0a869d79a7052c7f1b55a8ebabbea3420f0d1e13', // - Cold Wallet - '0xe853c56864a2ebe4576a807d26fdc4a0ada51919', // - Cold Wallet - '0x267be1c1d684f78cb4f6a176c4911b741e4ffdc0', // - Hot Wallet - '0xfa52274dd61e1643d2205169732f29114bc240b3', // - Internal - '0x53d284357ec70ce289d6d64134dfac8e511c8a3d', // - Cold Wallet - '0x89e51fA8CA5D66cd220bAed62ED01e8951aa7c40', // - Hot Wallet - '0xc6bed363b30df7f35b601a5547fe56cd31ec63da', // - Hot Wallet - '0x29728d0efd284d85187362faa2d4d76c2cfc2612', // - Hot Wallet - '0xe9f7eCAe3A53D2A67105292894676b00d1FaB785', // - Hot Wallet - ], - }, - bitcoin: { - owners: bitcoinAddressBook.kraken, - }, - starknet: { - owners: [ - '0x620102ea610be8518125cf2de850d0c4f5d0c5d81f969cff666fb53b05042d2' - ], - }, -} - -module.exports = cexExports(config) diff --git a/projects/krav/index.js b/projects/krav/index.js deleted file mode 100644 index 01742207557..00000000000 --- a/projects/krav/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const KRAV = '0xbe3111856e4aca828593274ea6872f27968c8dd6' -const config = { - base: { factory: '0xFfD88F38025e02f9d2eB7F0875060F6B4a20980a', fromBlock: 2300044, KRAV: '0xbe3111856e4aca828593274ea6872f27968c8dd6', kravPool: '0x3e558c2378aa7d405b2ed67f510d390bcdbf4d96' }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, KRAV, kravPool } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x5c81c71af616b8773a312ce82b16990e78cb55072a05427bc7fb08bbae50959d'], - eventAbi: 'event QuantoCreated(uint256, int256, address token, address, address, address, address, address, address, address pool, address)', - onlyArgs: true, - fromBlock, - }) - return api.sumTokens({ tokensAndOwners: logs.map(i => [i.token, i.pool]), blacklistedTokens: [KRAV] }) - } - } - if (kravPool) - module.exports[chain].staking = sumTokensExport({ owner: kravPool, tokens: [KRAV]}) -}) - - diff --git a/projects/kriya-clmm/index.js b/projects/kriya-clmm/index.js deleted file mode 100644 index 089aa59221e..00000000000 --- a/projects/kriya-clmm/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const EVENT_FILTER = - "0xf6c05e2d9301e6e91dc6ab6c3ca918f7d55896e1f1edd64adc0e615cde27ebf1::create_pool::PoolCreatedEvent"; - -async function kriyaTVL(api) { - const poolIds = await sui.queryEvents({ - eventType: EVENT_FILTER, - transform: (i) => i.pool_id, - }); - const pools = await sui.getObjects(poolIds); - pools.forEach((i) => { - const [token0, token1] = i.type.split("<")[1].replace(">", "").split(", "); - api.add(token0, i.fields.reserve_x); - api.add(token1, i.fields.reserve_y); - }); -} - -module.exports = { - timetravel: false, - methodology: "Collects TVL for all CLMM pools created on Kriya", - sui: { - tvl: kriyaTVL, - }, -}; diff --git a/projects/kriya-dex-earn/index.js b/projects/kriya-dex-earn/index.js deleted file mode 100644 index 221ad6f2b79..00000000000 --- a/projects/kriya-dex-earn/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { fetchURL } = require("../helper/utils"); - -const vaultsUrl = - "https://api.kriya.finance/defillama/vaults"; - -const kdxStakingUrl = - "https://api.kriya.finance/kdx/metrics"; - -const KDX_TYPE = "0x3b68324b392cee9cd28eba82df39860b6b220dc89bdd9b21f675d23d6b7416f1::kdx::KDX"; -const KDX_DECIMALS = 6; - -async function vaultTVL(api) { - try { - const vaults = (await fetchURL(vaultsUrl))?.data?.data; - for (const vault of vaults) { - if (vault?.vaultType === "KriyaClmm" ) continue; - if (vault?.vaultType === "CetusClmm") { - const tokenX = Number(vault?.info?.tokenXAmount) * 10 ** Number(vault?.info?.pool?.tokenXDecimals); - const tokenY = Number(vault?.info?.tokenYAmount) * 10 ** Number(vault?.info?.pool?.tokenYDecimals); - api.add(vault?.info?.pool?.tokenXType, tokenX); - api.add(vault?.info?.pool?.tokenYType, tokenY); - } else { - const aumBaseTokenReserve = Number(vault?.info?.aumInBaseToken) * 10 ** Number(vault?.info?.tokenXDecimals); - api.add(vault?.info?.tokenXType, aumBaseTokenReserve); - } - } - } catch (error) { - console.log(error); - } -} - -async function staking(api) { - const kdxMetrics = (await fetchURL(kdxStakingUrl))?.data?.data; - const totalStaked = Number(kdxMetrics?.kdxStaked) * 10 ** KDX_DECIMALS; - - api.add(KDX_TYPE, totalStaked); -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: - "Collets all the TVL from the KriyaDEX vaults. The TVL is denominated in USD.", - sui: { - tvl: vaultTVL, - staking, - }, -}; diff --git a/projects/kriya-dex/index.js b/projects/kriya-dex/index.js deleted file mode 100644 index cbd52082e61..00000000000 --- a/projects/kriya-dex/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const sui = require('../helper/chain/sui') - -const EVENT_FILTER = "0xa0eba10b173538c8fecca1dff298e488402cc9ff374f8a12ca7758eebe830b66::spot_dex::PoolCreatedEvent"; - -async function kriyaTVL(api) { - const poolIds = await sui.queryEvents({ eventType: EVENT_FILTER, transform: i => i.pool_id}); - const pools = await sui.getObjects(poolIds) - pools.forEach(i => { - const [token0, token1] = i.type.split('<')[1].replace('>', '').split(', ') - api.add(token0, i.fields.token_x) - api.add(token1, i.fields.token_y) - }) -} - -module.exports = { - timetravel: false, - methodology: "Collects TVL for all pools created on KriyaDEX", - sui: { - tvl: kriyaTVL, - } -} \ No newline at end of file diff --git a/projects/kroma/index.js b/projects/kroma/index.js deleted file mode 100644 index 47252135eb3..00000000000 --- a/projects/kroma/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x827962404D7104202C5aaa6b929115C8211d9596", - "0x31F648572b67e60Ec6eb8E197E1848CC5F5558de", - "0x7e1Bdb9ee75B6ef1BCAAE3B1De1c616C7B11ef6e", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/kromatika/abi.json b/projects/kromatika/abi.json deleted file mode 100644 index d5f66674a0b..00000000000 --- a/projects/kromatika/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "tokenByIndex": "function tokenByIndex(uint256 index) view returns (uint256)", - "tokenIds": "function tokenIds(uint256 index) view returns (uint256)", - "monitors": "function monitors(uint256 index) view returns (address)", - "orders": "function orders(uint256 tokenId) view returns (address owner, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 processed, uint256 tokensOwed0, uint256 tokensOwed1)" -} \ No newline at end of file diff --git a/projects/kromatika/index.js b/projects/kromatika/index.js deleted file mode 100644 index 468562d7f8b..00000000000 --- a/projects/kromatika/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokensExport } = require('../helper/unwrapLPs') -const abi = require("./abi.json"); - -const contracts = { - optimism: { - KROM: "0xf98dcd95217e15e05d8638da4c91125e59590b07", - position: "0x7314Af7D05e054E96c44D7923E68d66475FfaAb8", - }, - ethereum: { - KROM: "0x3af33bef05c2dcb3c7288b77fe1c8d2aeba4d789", - position: "0xd1fdf0144be118c30a53e1d08cc1e61d600e508e", - }, - arbitrum: { - KROM: "0x55ff62567f09906a85183b866df84bf599a4bf70", - position: "0x02c282f60fb2f3299458c2b85eb7e303b25fc6f0", - }, - polygon: { - KROM: "0x14Af1F2f02DCcB1e43402339099A05a5E363b83c", - position: "0x03F490aE5b59E428E6692059d0Dca1B87ED42aE1", - }, -}; - -async function opTvl(api, position) { - const orderIds = await api.fetchList({ target: position, lengthAbi: 'uint256:totalSupply', itemAbi: abi.tokenByIndex, }) - return getTvl({ api, position, orderIds }) -} - -async function getTvl({ api, position, orderIds }) { - const orderRes = await api.multiCall({ abi: abi.orders, calls: orderIds, target: position }) - const balances = {} - orderRes.map(({ token0, token1, tokensOwed0, tokensOwed1, }) => { - sdk.util.sumSingleBalance(balances, token0, tokensOwed0, api.chain) - sdk.util.sumSingleBalance(balances, token1, tokensOwed1, api.chain) - }) - return balances -} - -module.exports = { - methodology: - "Kromatika handles Uniswap-v3 positions for their users who submit limit orders - TVL is amounts of tokens of each LP as well as KROM held by the contract to pay for fees", -}; - -Object.keys(contracts).forEach(chain => { - const {KROM, position} = contracts[chain] - module.exports[chain] = { - tvl: async (api) => { - if (chain === 'optimism') return opTvl(api, position) - const orderIds = [] - const monitors = await api.fetchList({ lengthAbi: 'uint256:monitorsLength', target: position, itemAbi: abi.monitors }) - for (const monitor of monitors) { - const _orderIds = await api.fetchList({ target: monitor, lengthAbi: 'uint256:getTokenIdsLength', itemAbi: abi.tokenIds, }) - orderIds.push(..._orderIds) - } - return getTvl({ api, position, orderIds }) - }, - staking: sumTokensExport({ owner: position, tokens: [KROM]}) - } -}) -// UniswapV3Pool NonfungiblePositionManager has a low level mint method -// this is what UniswapNFT uses and Kromatikaa is also using it; so in a way Kromatika is a different NFT LP manager for UniswapV3 but for limit orders -// users gets Kromatika NFT for their limit position; same as they get Uniswap NFT for their LP; so it is a similar impl from Uniswap, but extended to support limit orders \ No newline at end of file diff --git a/projects/kronos/index.js b/projects/kronos/index.js deleted file mode 100644 index 3b111ecc4cc..00000000000 --- a/projects/kronos/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - deadFrom: '2022-07-01', - misrepresentedTokens: true, - klaytn: { - tvl: () => ({}), - staking: () => ({}), - } -}; diff --git a/projects/kronosdao/index.js b/projects/kronosdao/index.js deleted file mode 100644 index 0c655f857a6..00000000000 --- a/projects/kronosdao/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -const kRONOSMasterChef = "0x30e9f20414515116598D073F3EBA116c68A6f4aC"; -const kronosDaoToken = "0xbeC68a941feCC79E57762e258fd1490F29235D75"; - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0xcc045ebC2664Daf316aa0652E72237609EA6CB4f' -}, { staking: { bsc: [kRONOSMasterChef, kronosDaoToken, ] }, }) \ No newline at end of file diff --git a/projects/krunch/index.js b/projects/krunch/index.js deleted file mode 100644 index 037f7ef753b..00000000000 --- a/projects/krunch/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const KRUNCH_CONTRACT = '0xd3ca6e5035a3275909460EFC61d2A68DbEd3CE4c'; - -module.exports = { - methodology: 'Gets the balance of the USDT invested in the protocol.', - polygon: { - tvl: sumTokensExport({ owner: KRUNCH_CONTRACT, tokens: [ADDRESSES.polygon.USDT] }) - } -}; \ No newline at end of file diff --git a/projects/kryptodex/index.js b/projects/kryptodex/index.js deleted file mode 100644 index bf27680a861..00000000000 --- a/projects/kryptodex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (0x33c04bD4Ae93336BbD1024D709f4A313cC858EBe) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - cronos: { - tvl: getUniTVL({ factory: '0x33c04bD4Ae93336BbD1024D709f4A313cC858EBe', useDefaultCoreAssets: true }), - staking: stakingPricedLP("0x53cE820Ed109D67746a86b55713E30252275c127", "0xF0681BB7088Ac68A62909929554Aa22ad89a21fB", "cronos", "0xD2219106310E46D7FD308c0eC9d9FCc2d2c8a9B5", "crypto-com-chain") - } -} \ No newline at end of file diff --git a/projects/kryptonite/index.js b/projects/kryptonite/index.js deleted file mode 100644 index dc3a8ad3c53..00000000000 --- a/projects/kryptonite/index.js +++ /dev/null @@ -1,136 +0,0 @@ -const { queryContractWithRetries, getToken, getTokenBalance } = require("../helper/chain/cosmos"); - -const getReservesAbi = "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)"; -const totalSupplyAbi = "uint256:totalSupply"; -const decimalsAbi = "uint256:decimals"; -const token0Abi = "address:token0"; -const token1Abi = "address:token1"; - -// node test.js projects/kryptonite/index.js -const config = { - sei: { - coinGeckoId: "sei-network", - hub: "sei1swe2fy3t49j2c2xl8l64ldjaqyr6khmaya60pl5kr4em2v2jp0ysa3xjum", - seilorLps: [ - { - name: "SEILOR-USEI-LP", - lp: "sei1cw59j944v9uvseq3jz67tft7p92yhnff0l52eek3d5qnxj908wpqz4vrr8", - pair: "sei13pzdhenzugwa02tm975g2y5kllj26rf4x4ykpqtrfw2h4mcezmmqz06dfr", - staking: "sei17na3tj5mjnz0f4s3gqa3eqykzp4qk5qz4uvmz7hzak2zwyh5ym7s7ljcay" - }, - { - name: "STSEI-USEI-LP", - lp: "sei1y03a4m9etthj9w5mz7sltqcgh05ss09cjrezstfgqt28sgsvqxwsapqwfx", - pair: "sei1jqkqp7ql0n9edp9e7y86znt0m2h7rstlc2rwfvyxzrj84et9czaq89uqdx", - staking: "sei1x4jr7j63tq37lm8m0pmkdsjjtswsvpvmfhug9az207zp4m9a5j6s04gz0n" - }, - { - name: "STSEI-SEIYAN-LP", - lp: "sei1hxh76ty0fk9esq3qsvrhzz6fsvmh55j59xnduswn6dfnsyjs06vqcye8yf", - pair: "sei1qgyrkxvnydcvtzj8w6e4n2p07pykxw4y25ntncz5a4puz6fd6e9slq6jgk", - staking: "sei1400dydwghdkpxz9tqzv2f9nr7p04tvwawkvxsxf9xqvylec593fs73vr53" - }, - { - name: "SEILOR-USEI-WLP", - lp: "sei1lahjp2h2wchtncxsszpjeu5kr77wmn6uh354hu0l57pym9p3mvys8qnpp6", - lpEvm: "0xe7d76b9affb1f7a7bcf0b9206386d570e16bc17a", - pair: "sei1lahjp2h2wchtncxsszpjeu5kr77wmn6uh354hu0l57pym9p3mvys8qnpp6", - staking: "sei1ckske9cf8kw9ea66n5p3xpnz4ns3ruw052zcyhdsqpm54jjy3t9qjn7c7l", - wrapperLpEvm: true - }, - { - name: "STSEI-USEI-WLP", - lp: "sei16pe95h9uujjdp660tzsuv0utp9zymw926j604lx3p53rsy2tjh3s7ypvnu", - lpEvm: "0xa543dfa5c278d0d8499676e17b7f6bfd8ce18e39", - pair: "sei16pe95h9uujjdp660tzsuv0utp9zymw926j604lx3p53rsy2tjh3s7ypvnu", - staking: "sei1488mn0n3j3dv36nk9t2zkz3c5x8xsmfkmx36qg57z2xnkl6a5tns6stzm6", - wrapperLpEvm: true - } - ], - coinGeckoMap: { - usei: "sei-network", - "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7": "sei-network", // wSEI EVM - sei1xq7g6asf63mkv7t5jkfu6uf8jpzkvwnu4zl2kh4cfvk0ynxvvksqf7z3d2: "sei-network", // bSEI - sei1ln7ntsqmxl8s502f83km9a475zyhcfhpj7v2fsm3pcmckdyys3tsktx9vk: "kryptonite-staked-sei", // stSEI - "0xe5085112160fF75ee89a540Cdba570eAFdAF7f57": "kryptonite-staked-sei", // stSEI EVM - sei10knxlv9e54z0xcywdhtycc63uf970aefeec73ycqwd75ep9nu45sh66m6a: "kryptonite", // SEILOR - "0x89aeC21572F6637cCbd0d66861AAAC46Dd775ed1": "kryptonite", // SEILOR EVM - sei1hrndqntlvtmx2kepr0zsfgr7nzjptcc72cr4ppk4yav58vvy7v3s4er8ed: "seiyan" - } - }, - nibiru: { - coinGeckoId: "nibiru", - hub: "nibi1dvepyy7s2nkfep05c4v6tfkmzqyvz7x3nj6ddj3kkr8nfsmmylhqy7t9a0", - seilorLps: [], - coinGeckoMap: { - unibiru: "nibiru", - nibi1fke5pfygutantkfd9lakf9e8zu06cq43tss6avclm8lhkskr4f3semnvx5: "nibiru" - } - } -}; - -function getCoinGeckoId(chain, denom) { - return config[chain].coinGeckoMap[denom]; -} - -module.exports = { - timetravel: false -}; - -Object.keys(config).forEach(chain => { - const { coinGeckoId, hub, seilorLps } = config[chain]; - - module.exports[chain] = { - tvl: async (api) => { - // Logic for calculating TVL excluding staked LP tokens - const { total_bond_stsei_amount, total_bond_st_amount } = await queryContractWithRetries({ contract: hub, chain, data: { state: {} } }); - api.add(coinGeckoId, (total_bond_stsei_amount ?? total_bond_st_amount) / 10 ** 6, { skipChain: true }); - return api.getBalances(); - }, - pool2: async (api) => { - // Logic for calculating the value of staked LP tokens - for (let { lp, pair, staking, pairInfo, wrapperLpEvm, lpEvm } of seilorLps) { - if (!wrapperLpEvm) { - const lpTokenInfo = await queryContractWithRetries({ contract: lp, chain, data: { token_info: {} } }); - const stakingState = await queryContractWithRetries({ contract: staking, chain, data: { query_staking_state: {} } }); - if (!pairInfo) { - pairInfo = await queryContractWithRetries({ contract: pair, chain, data: { pair: {} } }); - } - const token0Obj = pairInfo.asset_infos[0]; - const token1Obj = pairInfo.asset_infos[1]; - const token0 = getToken(token0Obj); - const token1 = getToken(token1Obj); - const token0Balance = await getTokenBalance({ token: token0Obj, owner: pair, chain }); - const token1Balance = await getTokenBalance({ token: token1Obj, owner: pair, chain }); - const token0Staked = token0Balance * stakingState.total_supply / lpTokenInfo.total_supply / 10 ** 6; - const token1Staked = token1Balance * stakingState.total_supply / lpTokenInfo.total_supply / 10 ** 6; - - api.add(getCoinGeckoId(chain, token0), token0Staked, { skipChain: true }); - api.add(getCoinGeckoId(chain, token1), token1Staked, { skipChain: true }); - } else { - // Logic for calculating the value of staked wrapper EVM LP tokens - const stakingState = await queryContractWithRetries({ contract: staking, chain, data: { query_staking_state: {} } }); - - const [reserveAmounts, totalSupply, token0, token1] = await api.batchCall([ - { target: lpEvm, abi: getReservesAbi }, - { target: lpEvm, abi: totalSupplyAbi }, - { target: lpEvm, abi: token0Abi }, - { target: lpEvm, abi: token1Abi } - ]); - const [token0Decimals, token1Decimals] = await api.batchCall([ - { target: token0, abi: decimalsAbi }, - { target: token1, abi: decimalsAbi } - ]); - - const token0Staked = reserveAmounts[0] * stakingState.total_supply / totalSupply / 10 ** token0Decimals; - const token1Staked = reserveAmounts[1] * stakingState.total_supply / totalSupply / 10 ** token1Decimals; - - api.add(getCoinGeckoId(chain, token0), token0Staked, { skipChain: true }); - api.add(getCoinGeckoId(chain, token1), token1Staked, { skipChain: true }); - } - } - - return api.getBalances(); - } - }; -}); diff --git a/projects/krystal/evm.js b/projects/krystal/evm.js deleted file mode 100644 index d1df977209d..00000000000 --- a/projects/krystal/evm.js +++ /dev/null @@ -1,238 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); - -const config = { - base: { - factories: [ - { - factory: "0x54654bba3fe24f1fc463d31fdb5602b8b0af7dc0", - fromBlock: 29449424 - }, - { - factory: "0xd3de3b39feb0d21fe02c9e385315ddc9ca99dfd5", - fromBlock: 29303413 - }, - { - factory: "0xc8f4d6860e77c9f05a391d3e247a4146c38da203", - fromBlock: 31938923 - }, - { - factory: "0xdf2deefe9e905db881d06b063d3e96c27bcfda7a", - fromBlock: 32253341, - customOwnerFee: true - }, - { - factory: "0x3a35f9fef2ba83702b6e20d79fff96f77c922cf3", - fromBlock: 32588280, - customOwnerFee: true - }, - { - factory: "0x87077592b446e9207c544c5614e19b56bc6970d5", - fromBlock: 33537305, - customOwnerFee: true - } - ], - }, - arbitrum: { - factories: [ - { - factory: "0x54654bba3fe24f1fc463d31fdb5602b8b0af7dc0", - fromBlock: 330479415, - }, - { - factory: "0x92c355c372eb9c1eca92a0962610626a8b2ce975", - fromBlock: 329400485, - }, - { - factory: "0xc8f4d6860e77c9f05a391d3e247a4146c38da203", - fromBlock: 351376737, - }, - { - factory: "0xdf2deefe9e905db881d06b063d3e96c27bcfda7a", - fromBlock: 353725498, - customOwnerFee: true - }, - { - factory: "0x3a35f9fef2ba83702b6e20d79fff96f77c922cf3", - fromBlock: 359319739, - customOwnerFee: true - }, - { - factory: "0x87077592b446e9207c544c5614e19b56bc6970d5", - fromBlock: 365137843, - customOwnerFee: true - } - ] - }, - polygon: { - factories: [ - { - factory: "0x54654bba3fe24f1fc463d31fdb5602b8b0af7dc0", - fromBlock: 70786808 - }, - { - factory: "0xc8f4d6860e77c9f05a391d3e247a4146c38da203", - fromBlock: 73241511, - }, - { - factory: "0xdf2deefe9e905db881d06b063d3e96c27bcfda7a", - fromBlock: 73516877, - customOwnerFee: true - }, - { - factory: "0x3a35f9fef2ba83702b6e20d79fff96f77c922cf3", - fromBlock: 74146941, - customOwnerFee: true - }, - { - factory: "0x87077592b446e9207c544c5614e19b56bc6970d5", - fromBlock: 74819808, - customOwnerFee: true - } - ] - }, - bsc: { - factories: [ - { - factory: "0x54654bba3fe24f1fc463d31fdb5602b8b0af7dc0", - fromBlock: 48703522 - }, - { - factory: "0xc8f4d6860e77c9f05a391d3e247a4146c38da203", - fromBlock: 52127753, - }, - { - factory: "0xdf2deefe9e905db881d06b063d3e96c27bcfda7a", - fromBlock: 52701228, - customOwnerFee: true - }, - { - factory: "0x3a35f9fef2ba83702b6e20d79fff96f77c922cf3", - fromBlock: 54567569, - customOwnerFee: true - }, - { - factory: "0x87077592b446e9207c544c5614e19b56bc6970d5", - fromBlock: 56504339, - customOwnerFee: true - } - ] - }, - ethereum: { - factories: [ - { - factory: "0x54654bba3fe24f1fc463d31fdb5602b8b0af7dc0", - fromBlock: 22374491 - }, - { - factory: "0xc8f4d6860e77c9f05a391d3e247a4146c38da203", - fromBlock: 22788449, - }, - { - factory: "0xdf2deefe9e905db881d06b063d3e96c27bcfda7a", - fromBlock: 22836895, - customOwnerFee: true - }, - { - factory: "0x3a35f9fef2ba83702b6e20d79fff96f77c922cf3", - fromBlock: 22952824, - customOwnerFee: true - }, - { - factory: "0x87077592b446e9207c544c5614e19b56bc6970d5", - fromBlock: 23073168, - customOwnerFee: true - } - ] - }, - ronin: { - factories: [ - { - factory: "0x3f06f7d2ab15f42b92f3e8b266f79d4e831e702b", - fromBlock: 45377320 - }, - { - factory: "0xc8f4d6860e77c9f05a391d3e247a4146c38da203", - fromBlock: 46360967, - }, - { - factory: "0xdf2deefe9e905db881d06b063d3e96c27bcfda7a", - fromBlock: 46556861, - customOwnerFee: true - }, - { - factory: "0x3a35f9fef2ba83702b6e20d79fff96f77c922cf3", - fromBlock: 46876463, - customOwnerFee: true - }, - { - factory: "0x87077592b446e9207c544c5614e19b56bc6970d5", - fromBlock: 47505286, - customOwnerFee: true - } - ] - } -} - -const excludedVaults = ["0xa9d939b440889946E6CEC3E1D4218E069605af6f", "0xC1592E4Ce1FB6B9E278E209483CC9B2107a1736f"] - -const abis = { - getTotalValue: "function getTotalValue() view returns (uint256 totalValue)", - getVaultConfig: "function getVaultConfig() view returns (bool allowDeposit,uint8 rangeStrategyType,uint8 tvlStrategyType,address principalToken,address[] memory supportedAddresses)", - getVaultConfigWithCustomOwnerFee: "function getVaultConfig() view returns (bool allowDeposit,uint8 rangeStrategyType,uint8 tvlStrategyType,address principalToken,address[] memory supportedAddresses,uint16 vaultOwnerFeeBasisPoint)", - eventVaultCreatedTopic: "0xbdbed56de8b743294aafeb7bc338aac69f80294b14d029f6b73168946225f817", - eventVaultCreatedAbi: "event VaultCreated(address owner, address vault, tuple(string name, string symbol, uint256 principalTokenAmount, tuple(bool allowDeposit, uint8 rangeStrategyType, uint8 tvlStrategyType, address principalToken, address[] supportedAddresses) config) params)", - eventVaultCreatedWithCustomOwnerFeeTopic: "0x64ebc17e4f1cfa3b3dc33c6b6e50fd0cb0f9fe4fd739a3742ddfad53b50107c7", - eventVaultCreatedWithCustomOwnerFeeAbi: "event VaultCreated(address owner, address vault, tuple(string name, string symbol, uint256 principalTokenAmount, uint16 vaultOwnerFeeBasisPoint, tuple(bool allowDeposit, uint8 rangeStrategyType, uint8 tvlStrategyType, address principalToken, address[] supportedAddresses) config) params)" -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const vaultAddresses = []; - const vaultAddressesCustomOwnerFee = []; - - for (const { factory, fromBlock, customOwnerFee } of config[chain].factories) { - if (customOwnerFee) { - const logs = await getLogs({ - api, - target: factory, - topics: [abis.eventVaultCreatedWithCustomOwnerFeeTopic], - eventAbi: abis.eventVaultCreatedWithCustomOwnerFeeAbi, - onlyArgs: true, - fromBlock: fromBlock, - }) - logs.forEach(i => { - if (excludedVaults.includes(i.vault)) return; - vaultAddressesCustomOwnerFee.push(i.vault) - }) - } else { - const logs = await getLogs({ - api, - target: factory, - topics: [abis.eventVaultCreatedTopic], - eventAbi: abis.eventVaultCreatedAbi, - onlyArgs: true, - fromBlock: fromBlock, - }) - logs.forEach(i => { - if (excludedVaults.includes(i.vault)) return; - vaultAddresses.push(i.vault) - }) - } - } - - const [vaultConfigs, vaultTotalValues, vaultCustomOwnerFeeConfigs, vaultCustomOwnerFeeTotalValues] = await Promise.all([ - api.multiCall({ abi: abis.getVaultConfig, calls: vaultAddresses }), - api.multiCall({ abi: abis.getTotalValue, calls: vaultAddresses }), - api.multiCall({ abi: abis.getVaultConfigWithCustomOwnerFee, calls: vaultAddressesCustomOwnerFee }), - api.multiCall({ abi: abis.getTotalValue, calls: vaultAddressesCustomOwnerFee }), - ]) - - const principleTokens = vaultConfigs.map(i => i.principalToken) - api.addTokens(principleTokens, vaultTotalValues) - - const principleTokensCustomOwnerFee = vaultCustomOwnerFeeConfigs.map(i => i.principalToken) - api.addTokens(principleTokensCustomOwnerFee, vaultCustomOwnerFeeTotalValues) - } - } -}) diff --git a/projects/krystal/idl/krystal_auto_vault.json b/projects/krystal/idl/krystal_auto_vault.json deleted file mode 100644 index 8df6069e485..00000000000 --- a/projects/krystal/idl/krystal_auto_vault.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "address": "6tgjvHkFUUUbbacEWg225H6AazxoSTso8ix9vkXFScTU", - "metadata": {"name": "krystal_auto_vault", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [ - {"name": "GlobalState", "discriminator": [163, 46, 74, 168, 216, 123, 133, 98]}, - {"name": "UserVault", "discriminator": [23, 76, 96, 159, 210, 10, 5, 22]} - ], - "errors": [], - "types": [ - { - "name": "GlobalState", - "type": { - "kind": "struct", - "fields": [{"name": "admin", "type": "pubkey"}, {"name": "bump", "type": "u8"}, {"name": "operators", "type": {"vec": "pubkey"}}] - } - }, - {"name": "UserVault", "type": {"kind": "struct", "fields": [{"name": "owner", "type": "pubkey"}, {"name": "bump", "type": "u8"}]}} - ], - "events": [] -} \ No newline at end of file diff --git a/projects/krystal/index.js b/projects/krystal/index.js deleted file mode 100644 index 64c9daffdd7..00000000000 --- a/projects/krystal/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { tvl: solanaTvl } = require("./solana.js"); -const evmTvl = require("./evm.js"); - -module.exports = { - solana: { - tvl: solanaTvl, - }, - ...evmTvl, - isHeavyProtocol: true, - methodology: "Sum of all positions' value and tokens in every vaults", -}; diff --git a/projects/krystal/solana.js b/projects/krystal/solana.js deleted file mode 100644 index 0090ffceed9..00000000000 --- a/projects/krystal/solana.js +++ /dev/null @@ -1,119 +0,0 @@ -const { Program } = require("@coral-xyz/anchor"); -const { PublicKey } = require("@solana/web3.js"); -const { - getConnection, - decodeAccount, - TOKEN_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID, -} = require("../helper/solana"); -const idl = require("./idl/krystal_auto_vault.json"); -const { addUniV3LikePosition } = require("../helper/unwrapLPs.js"); -const { getUniqueAddresses } = require("../helper/tokenMapping.js"); -const { get } = require("../helper/http.js"); - -const CLMM_PROGRAM_ID = new PublicKey( - "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK" -); -const POSITION_SEED = Buffer.from("position", "utf8"); - -async function tvl(api) { - const connection = getConnection(); - - const program = new Program(idl, { connection }); - const pools = new Map(); - const pdaPersonalPositionAddressesAll = [] - - // Load all the vaults in the program - const vaults = await program.account.userVault.all(); - - const positions = []; - for (const account of vaults) { - const vault = account.publicKey; - await findClmmPositionsByOwner(connection, vault); - } - - const positionAccountInfos = await connection.getMultipleAccountsInfo(pdaPersonalPositionAddressesAll); - - positionAccountInfos.map((account) => { - if (!account) return; - - positions.push(decodeAccount("raydiumPositionInfo", account)); - }); - - const poolIds = getUniqueAddresses(positions.map((position) => position.poolId.toBase58()), "solana"); - const poolAccounts = await connection.getMultipleAccountsInfo(poolIds.map(i => new PublicKey(i))); - - for (let i = 0; i < poolIds.length; i++) { - const poolId = poolIds[i]; - const poolAccount = poolAccounts[i]; - const poolInfo = decodeAccount("raydiumCLMM", poolAccount); - pools.set(poolId, poolInfo); - } - - for (const position of positions) { - const poolId = position.poolId; - const poolKey = poolId.toBase58(); - - let poolInfo = pools.get(poolKey); - - addUniV3LikePosition({ - api, - token0: poolInfo.mintA.toBase58(), - token1: poolInfo.mintB.toBase58(), - liquidity: position.liquidity.toNumber(), - tickLower: position.tickLower, - tickUpper: position.tickUpper, - tick: poolInfo.tickCurrent, - }); - } - - - async function findClmmPositionsByOwner(connection, owner) { - const [tokenAccounts, token2022Accounts] = await Promise.all([ - connection.getParsedTokenAccountsByOwner(owner, { - programId: TOKEN_PROGRAM_ID, - }), - connection.getParsedTokenAccountsByOwner(owner, { - programId: TOKEN_2022_PROGRAM_ID, - }), - ]); - - const allTokenAccounts = []; - if (tokenAccounts?.value) { - allTokenAccounts.push(...tokenAccounts.value); - } - if (token2022Accounts?.value) { - allTokenAccounts.push(...token2022Accounts.value); - } - - const tokenNftMints = []; - allTokenAccounts.forEach((tokenAccount) => { - const info = tokenAccount.account.data.parsed.info; - if (info.tokenAmount.amount == "1" && info.tokenAmount.decimals == 0) { - tokenNftMints.push(new PublicKey(info.mint)); - } else { - api.add(info.mint, info.tokenAmount.amount) - } - }); - - const pdaPersonalPositionAddresses = tokenNftMints.map(getPdaPersonalPositionAddress) - pdaPersonalPositionAddressesAll.push(...pdaPersonalPositionAddresses) - } -} - - -function getPdaPersonalPositionAddress(nftMint) { - const [pda] = PublicKey.findProgramAddressSync( - [POSITION_SEED, nftMint.toBuffer()], - CLMM_PROGRAM_ID - ); - - return pda; -} - -async function tvlApi(api) { - const res = await get('https://api.krystal.app/solana/v1/lp/tvl') - api.addUSDValue(+res.tvl) -} - -module.exports = { tvl: tvlApi }; \ No newline at end of file diff --git a/projects/kswap/index.js b/projects/kswap/index.js deleted file mode 100644 index ad6d4f15f5e..00000000000 --- a/projects/kswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const factory = '0xEFD3ad14E5cF09b0EbE435756337fb2e9D10Dc1a' // v2 factory address - -module.exports = uniTvlExport('kava', factory) \ No newline at end of file diff --git a/projects/kswapfinance/index.js b/projects/kswapfinance/index.js deleted file mode 100644 index 933fcf7033f..00000000000 --- a/projects/kswapfinance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const factory = "0x60DCD4a2406Be12dbe3Bb2AaDa12cFb762A418c1"; - -module.exports = { - okexchain: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), }, - methodology: - "We count tvl on LiquidityPool(pairs) through factory contract", -}; diff --git a/projects/kton/index.js b/projects/kton/index.js deleted file mode 100644 index 57d80c23016..00000000000 --- a/projects/kton/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { call } = require('../helper/chain/ton'); -const ADDRESSES = require("../helper/coreAssets.json"); -const { BigNumber } = require('bignumber.js'); -// KTON Pool Contract Address -const KTON_POOL_CONTRACT_ADDRESS = "EQA9HwEZD_tONfVz6lJS0PVKR5viEiEGyj9AuQewGQVnXPg0"; -async function getKtonData() { - const stacks = await call({ - target: KTON_POOL_CONTRACT_ADDRESS, - abi: 'get_pool_full_data', - params: [], - rawStack: true, - }); - let newContractVersion = stacks.length === 34; - const formattedStack = stacks.map((i, idx) => { - if (i[0] === 'num') { - if (`${i[1]}`.startsWith('-')) { - return -BigInt(i[1].slice(1)); - } - return BigInt(i[1]); - } - return i; - }); - - const objMapWithNewVersion = ['state', 'halted', 'totalBalance', 'interestRate', 'optimisticDepositWithdrawals', 'depositsOpen', 'instantWithdrawalFee', 'savedValidatorSetHash', 'previousRound', 'currentRound', 'minLoan', 'maxLoan', 'governanceFee', 'accruedGovernanceFee', 'disbalanceTolerance', 'creditStartPriorElectionsEnd', 'poolJettonMinter', 'poolJettonSupply', 'depositPayout', 'requestedForDeposit', 'withdrawalPayout', 'requestedForWithdrawal', 'sudoer', 'sudoerSetAt', 'governor', 'governorUpdateAfter', 'interestManager', 'halter', 'approver', 'controllerCode', 'jettonWalletCode', 'payoutMinterCode', 'projectedTotalBalance', 'projectedPoolSupply']; - - const objMapWithOldVersion = ['state', 'halted', 'totalBalance', 'interestRate', 'optimisticDepositWithdrawals', 'depositsOpen', 'savedValidatorSetHash', 'previousRound', 'currentRound', 'minLoan', 'maxLoan', 'governanceFee', 'poolJettonMinter', 'poolJettonSupply', 'depositPayout', 'requestedForDeposit', 'withdrawalPayout', 'requestedForWithdrawal', 'sudoer', 'sudoerSetAt', 'governor', 'governorUpdateAfter', 'interestManager', 'halter', 'approver', 'controllerCode', 'jettonWalletCode', 'payoutMinterCode', 'projectedTotalBalance', 'projectedPoolSupply']; - const usedObjMap = newContractVersion ? objMapWithNewVersion : objMapWithOldVersion; - const result = formattedStack.reduce((acc, curr, index) => { - acc[usedObjMap[index]] = curr; - return acc; - }, { - instantWithdrawalFee: 0n, - accruedGovernanceFee: 0n, - disbalanceTolerance: 30, - creditStartPriorElectionsEnd: 0n, - poolJettonMinter: '', - poolJettonSupply: 0n, - }); - - const { totalBalance, poolJettonSupply, projectedPoolSupply, projectedTotalBalance } = result; - const tvl = new BigNumber(totalBalance).toNumber(); - return { - tvl - }; - -} - -module.exports = { - timetravel: false, - methodology: 'KTON price is calculated by multiplying the KTON:TON ratio from the pool with the current TON price', - ton: { - tvl: async (api) => { - const ktonData = await getKtonData(); - return api.add(ADDRESSES.ton.TON, ktonData.tvl); - }, - } -}; \ No newline at end of file diff --git a/projects/ktx/index.js b/projects/ktx/index.js deleted file mode 100644 index f71abf3df9d..00000000000 --- a/projects/ktx/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -const bscVault = "0xd98b46C6c4D3DBc6a9Cc965F385BDDDf7a660856"; -const bscStaking = "0x5d1459517ab9FfD60f8aDECdD497ac94DD62d3FD"; -const bscKTC = "0x545356d4d69d8cD1213Ee7e339867574738751CA"; - -const mantleVault = "0x2e488D7ED78171793FA91fAd5352Be423A50Dae1"; -const mantleStaking = "0x1D29411f42bEd70d1567B4B6B4638Ee46Bae7146"; -const mantleKTC = "0x779f4E5fB773E17Bc8E809F4ef1aBb140861159a"; - -const arbitrumVault = "0xc657A1440d266dD21ec3c299A8B9098065f663Bb"; -const arbitrumStaking = "0xC7011480CEa31218cb18b9ADbEF7d78Fc684C935"; -const arbitrumKTC = "0x487f6baB6DEC7815dcd7Dfa2C44a8a17bd3dEd27"; - -module.exports = { - bsc: { - staking: staking(bscStaking, bscKTC), - tvl: gmxExports({ vault: bscVault }), - }, - mantle: { - staking: staking(mantleStaking, mantleKTC), - tvl: gmxExports({ vault: mantleVault }), - }, - arbitrum: { - staking: staking(arbitrumStaking, arbitrumKTC), - tvl: gmxExports({ vault: arbitrumVault }), - }, -}; diff --git a/projects/kucoin/index.js b/projects/kucoin/index.js deleted file mode 100644 index 12b90f75187..00000000000 --- a/projects/kucoin/index.js +++ /dev/null @@ -1,312 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); - -const config = { - ethereum: { - owners: [ - "0x061f7937b7b2bc7596539959804f86538b6368dc", - "0x1692e170361cefd1eb7240ec13d048fd9af6d667", - "0x41e29c02713929f800419abe5770faa8a5b4dadc", - "0x441454b3d857fe365b7defe8cb3e4f498ec91eac", - "0x446b86a33e2a438f569b15855189e3da28d027ba", - "0x45300136662dd4e58fc0df61e6290dffd992b785", - "0x58edf78281334335effa23101bbe3371b6a36a51", - "0x738cf6903e6c4e699d1c2dd9ab8b67fcdb3121ea", - "0x7491f26a0fcb459111b3a1db2fbfc4035d096933", - "0x77f59b595cac829575e262b4c8bbcb17abadb33a", - "0x7b915c27a0ed48e2ce726ee40f20b2bf8a88a1b3", - "0x83c41363cbee0081dab75cb841fa24f3db46627e", - "0x88bd4d3e2997371bceefe8d9386c6b5b4de60346", - "0x9f4cf329f4cf376b7aded854d6054859dd102a2a", - "0xa152f8bb749c55e9943a3a0a3111d18ee2b3f94e", - "0xa649ffc455ac7c5acc1bc35726fce54e25eb59f9", - "0xaa99fc695eb1bbfb359fbad718c7c6dafc03a839", - "0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23", - "0xcad621da75a66c7a8f4ff86d30a2bf981bfc8fdd", - "0xce0d2213a0eaff4176d90b39879b7b4f870fa428", - "0xd6216fc19db775df9774a6e33526131da7d19a2c", - "0xd89350284c7732163765b23338f2ff27449e0bf5", - "0xd91efec7e42f80156d1d9f660a69847188950747", - "0xec30d02f10353f8efc9601371f56e808751f396f", - "0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91", - "0xf8da05c625a6e601281110cba52b156e714e1dc2", - "0xf97deb1c0bb4536ff16617d29e5f4b340fe231df", - "0x0c32131b67a9306a42e5b66f869bc213d40e43f0", - "0x85cef5c097a4df05d27c9fa1a1c1fe16fe691e60", - "0x2c73858225cfbf15fd1b71ff27d006cb96c57e27", - "0x1136a49f3a1e3a3b6b2b6de30f8244d16f18509a", - "0x04f2abb57b53122eb0306418f2220746d06af9fc", - "0x4316e553902c3eab807663001d089fd6554a4566", - "0x10c3d6ef33446e51b6d5c70970f7ad71cc1f42be", - "0x0f75e66731ca8ab3471503562ff964cd40741f41", - "0xe4507d13b059eaf66f7b509b6929f7295690d7cc", - "0x10affefb7ce337348e0b258fffc6a1d5745c2be9", - "0x7ebfa8b1161e66fffec05d7edbb55e1a2c2aebd6", - "0x4a1dffc4e4168fd436dd9d9fb8edb223fa259a68", - "0x0f1836312d18524368d05d537c0fabaff6ca6ccc", - "0x06679e7b7f91487cc9d59779501c414a1b3eb89d", - "0x2933782b5a8d72f2754103d1489614f29bfa4625", - "0xdd276dc5223d0120f9bf1776f38957cc8da23cb0", - "0xE8C15AAD9D4CD3F59C9DFA18828B91A8B2C49596", - "0x37e4d1cd3fe31edf473ebcf3b6a75f419c8839d1", - "0xAA10DB8804D076601999C7CD769E02E44A99D5B2", - "0x3B6D76719A4EA8C53A7A26B50175B8DE23C8E956", - "0xB514C67824443868D3A70352398F524EF6AF6207", - "0x189b24f3EB15dc71b4Fc57C5914e7e9B3246E449", - "0x1B14376EE2D46AE5C27A43D902D96D4F3F264B83", - "0xa2d69adf0b62fa32825d73f086cd4689743543db", - ], - }, - tron: { - owners: [ - "TEWzF5ZsaWMh6sTNDPrYaPJrK8TTMGfwCC", - "TQeNNo5zVarhdKm5EiJSekfNXg6H1tRN4n", - "TRYL7PKCG4b4xRCM554Q5J6o8f1UjUmfnY", - "TSGEXDSRMtzt9swPSgzr8MKefcgEawEdmb", - "TUpHuDkiCCmwaTZBHZvQdwWzGNm5t8J2b9", - "TEHcECc7JU4hudBDoWASXKpGkwQxVe5qUH", - "TKpn4QSQ6Q1fKkF67Ljz2qmnskrLXGi9tP", - "TCSN2TXGLi3KnLTtMY2ch3Hh8jwUtotkYF", - "TGi6HhFtjvwUE2funC8DRvPxdunWSueoS6", - "TJGv1jeHA8QxZ5jjwY8wc4PQ2GHg4772L8", - "TNYEPjMiVJiggES7AYL7mtmuen2oXicbXk", - "TDgzEwCrQr2dNtd16nbbeM3rv1X9mf5aRe", - "TYX2XkYRwFhGX7yFj5vBTYL64LJKmrEyNU", - "TFnRGp3qXe8UARoWxFeWNE9BtdfED5H9hh", - "TXvsE5rsLcY6WcGHSBpw9TPjSN3wgQN3wY", - "TR9QLsnupdJZ3rnR4wtLJ5TGjGgYcsauPv", - "TBov1DfeF1r29p7P2LWQMrP6D9j5ej8wPs", - "TJRu7dW92bmq8kDQyPZUDRTKmALTcJNXdD", - "TGeCMTmmQKBrs8Vmx7YNGbPa2d3ZspDLNN", - "TUpHuDkiCCmwaTZBHZvQdwWzGNm5t8J2b9", - "THyqxuWrRPLZDdvSLVEWLofJ3qYvBhyc4R", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.kucoin, - }, - arbitrum: { - owners: [ - "0x00f3e09abe73aec2d6ad7b8820049b60ebc73f94", - "0x03e6fa590cadcf15a38e86158e9b3d06ff3399ba", - "0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23", - "0xd6216fc19db775df9774a6e33526131da7d19a2c", - "0xf3f094484ec6901ffc9681bcb808b96bafd0b8a8", - "0x17a30350771d02409046a683b18fe1c13ccfc4a8", - "0x84f022eda34826de97abdd25e459c541f4c01eea", - "0x15bd3e3b616a90f2525b20cb8ad958c2a2b7b0a6", - "0xbb36acf8c156f19e9550d1f66b1cdd2cb003b65d", - "0x4358c3cddb2914d16ad3c170a9c17ec7365f9be1", - "0x048ab5a572f86962caa64a98cd7b3da1a01a080a", - "0x2560bcdbf4cb526ce1b8e8a4d5760eda8ec34498", - "0xe4507d13b059eaf66f7b509b6929f7295690d7cc", - "0x2933782b5a8d72f2754103d1489614f29bfa4625", - "0x3a152f8bbe26c1c64a38a02680005814857a63ae", - ], - }, - algorand: { - owners: [ - // added on 23/03/24 - "2X2GV36S66B64URLMRZ4O4IGLWSM5MEKIE6J5VREIZC62GVKCSH25IG4PM", - "IMGMVBZEPMM36AIMWI7FZHG2G44KEESC5ALZHWX7B7SBNBDY6Z7COYMO6U", - "NDVDIGWEP77WQDDU5M6F7AAS77AOFXLML7DNNPUEVLQMKTIFHYTTMAG6OU", - "WBI5LT2BQ7FFYBXW2PEDVB6KBX2F3C77WXBJ2FPVERBXXBUV6SC7XXPGWM", - "YXDKDH5XHXL6OYMH2HYCJCXOZWPOBEUNK5ICFVJRFW3JVQXZ6HQ6QPVQVA", - "T6MXHXMGXURKJ7AD5NCB4IYPLWXYXKKFLLO5KAPJ56GKS7BFXHNHOODZCM", - ], - }, - kcc: { - owners: [ - "0x14ea40648fc8c1781d19363f5b9cc9a877ac2469", - "0x2a8c8b09bd77c13980495a959b26c1305166a57f", - "0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23", - "0xd6216fc19db775df9774a6e33526131da7d19a2c", - ], - }, - near: { - owners: [ - "kucoinc.near", - "e589457354361489a89039b8be6737cbc2db4d13919b6ccf23889a60f3b0d8f3", - "7b865db190b966fe6ea30d0e7cc44ce42c4ea4f159a4b0b937122f166fc3ae28", - ], - }, - eos: { - owners: ["qlwzviixzm1h", "kucoinrise11", "kucoinatwarm"], - }, - optimism: { - owners: [ - "0xa3f45e619cE3AAe2Fa5f8244439a66B203b78bCc", - "0xebb8ea128bbdff9a1780a4902a9380022371d466", - "0xd6216fc19db775df9774a6e33526131da7d19a2c", - ], - }, - solana: { - owners: [ - "BmFdpraQhkiDQE6SnfG5omcA1VwzqfXrwtNYBwWTymy6", - "EkUy8BB574iEVAQE9dywEiMhp9f2mFBuFu6TBKAkQxFY", - "HVh6wHNBAsG3pq1Bj5oCzRjoWKVogEDHwUHkRz3ekFgt", - "3VRJ7acLUS9RYLLgRMenM6BqBVVQpY7xFXa7jKDdYw6M", - "EEnu7YoRDnZ1EHHggnnQoFk7fUjNQrXQw33vgFWwMJn", - "57vSaRTqN9iXaemgh4AoDsZ63mcaoshfMK8NP3Z5QNbs", - "EfwJn8cXCYhcGrsavxWSDbUFHPrCK9gvdCr6AVywFBPg", - "DBmae92YTQKLsNzXcPscxiwPqMcz9stQr2prB5ZCAHPd", - "FZ1t8TZtx7VSCQdBsxvFJiezj9paUBF6Ub7RKA2eTGyE", - "GL8T72PKygWaYrLKtSteN9UUvYYnuC8azNDunk4eaqqQ", - ], - }, - ripple: { - owners: [ - "rLpvuHZFE46NUyZH5XaMvmYRJZF7aory7t", - "rBxszqhQkhPALtkSpGuVeqR6hNtZ8xTH3T", - "rBXAyXMwp2WVPg13nKxUz8iCVn5RjihueQ", - "raxYwsodnM9NjTTc4mFsKMEb8eCn3UH9ZZ", - "rfZ1kn1AUwD8bVMnDsD6ifzw7y2zMRp1Ci", - "rPjmhP2WK4mfTZX9Ywoqz3eMPzfWj2vezU", - ], - }, - bsc: { - owners: [ - "0x1692e170361cefd1eb7240ec13d048fd9af6d667", - "0x17a30350771d02409046a683b18fe1c13ccfc4a8", - "0x3ad7d43702bc2177cc9ec655b6ee724136891ef4", - "0x53f78a071d04224b8e254e243fffc6d9f2f3fa23", - "0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23", - "0xd6216fc19db775df9774a6e33526131da7d19a2c", - "0xf8ba3ec49212ca45325a2335a8ab1279770df6c0", - "0x2933782B5A8D72F2754103D1489614F29BFA4625", - ], - }, - kava: { - owners: [ - "0x1dd9319a115d36bd0f71c276844f67171678e17b", - "0xd6216fc19db775df9774a6e33526131da7d19a2c", - "0xfb6a733bf7ec9ce047c1c5199f18401052eb062d", - ], - }, - starknet: { - owners: [ - "0x0566ec9d06c79b1ca32970519715a27f066e76fac8971bbd21b96a50db826d90", - ], - }, - aptos: { - owners: [ - "0xaa0090c74e4976834ff1b9b9ef945e1c4b6cdb49cccf37c2554ef026081312f1", - "0x7cab5cb050630b957e54f0a9e757cd57fac5b64f64860559930f22e008560cfd", - "0xbb74f7a3f369c84e7d9bf60aeb778c91be8e63d08ad91583340cc8f46d313f72", - ], - }, - base: { - owners: [ - "0x26c8e06590f73c2571d68a41ebccec38e12ddd9f", - "0xcfdb97872667c55c15c255b9af5c715cc4bd8a69", - "0x18b0f4547a89fe4c5fe84f258bea3601fa281e9f", - "0xd2cb829848f8857a589b03fa8b567c5ff0742e18", - "0x17a30350771d02409046a683b18fe1c13ccfc4a8", - "0x2933782b5a8d72f2754103d1489614f29bfa4625", - "0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23", - "0xd6216fc19db775df9774a6e33526131da7d19a2c", - ], - }, - cardano: { - owners: [ - // "addr1q87n2sy2n3k844h98wxt530rr70vhkrg05prkqls60qtpeqq38w20v22ed8lufl5llnz6h3yl0mgcm9h8jsx406t6qssu03", - // "addr1q9vespgxm3dk5kfgg9zgkfae8j5f8r3gnz405tm83tfwgj6enqzsdhzmdfvjss2y3vnmj09gjw8z3x92lghk0zkju39spn4", - // "addr1qywgh46dqu7lq6mp5c6tzldpmzj6uwx335ydrpq8k7rru4q6yhkfqn5pc9f3z76e4cr64e5mf98aaeht6zwf8xl2nc9qr66", - // "addr1q9h4f2vhh5vnqgnsejan3psw6mj3a504fxlqm2eh3262qufesdvfs83ulr22vprsv9mwnt0vgkfwxlflxkns32twqzdqjpq", - // "addr1x9qy3qeu59ngqfwe2uv4qz7n8y2wzzk0n5h3t0r2sdmflrzqfzpnegtxsqjaj4ce2q9axwg5uy9vl8f0zk7x4qmkn7xq27p", - // "addr1x99gcg9us9jfp6gtsrgsenjjreg9ytevv7ha8nvyzuz4ef623ssteqtyjr5shqx3pn89y8js2ghjcea060xcg9c9tjnspxv", - 'addr1q87n2sy2n3k844h98wxt530rr70vhkrg05prkqls60qtpeqq38w20v22ed8lufl5llnz6h3yl0mgcm9h8jsx406t6qssu03ga8', - 'addr1q9vespgxm3dk5kfgg9zgkfae8j5f8r3gnz405tm83tfwgj6enqzsdhzmdfvjss2y3vnmj09gjw8z3x92lghk0zkju39spn42mj', - 'addr1x99gcg9us9jfp6gtsrgsenjjreg9ytevv7ha8nvyzuz4ef623ssteqtyjr5shqx3pn89y8js2ghjcea060xcg9c9tjnspxv0pn', - 'addr1x9qy3qeu59ngqfwe2uv4qz7n8y2wzzk0n5h3t0r2sdmflrzqfzpnegtxsqjaj4ce2q9axwg5uy9vl8f0zk7x4qmkn7xq27ppet', - 'addr1q9h4f2vhh5vnqgnsejan3psw6mj3a504fxlqm2eh3262qufesdvfs83ulr22vprsv9mwnt0vgkfwxlflxkns32twqzdqjpq2na', - ], - }, - sui: { - owners: [ - "0xb18af8bf1b54e5b283ed5a35eb105699fe4d25c1f69c9de1dc8a832676b412bc", - "0xb18af8bf1b54e5b283ed5a35eb105699fe4d25c1f69c9de1dc8a832676b412bc", - "0x13c075644dad21bf10cb12447b825b535c24ddae428e27abc5858d1511e24c6d", - "0xf3bfda04092a842d4c57c61f9d8fb99058792ab2622b2a0c0d83a6ea41de325f", - "0xf3bfda04092a842d4c57c61f9d8fb99058792ab2622b2a0c0d83a6ea41de325f", - "0x13c075644dad21bf10cb12447b825b535c24ddae428e27abc5858d1511e24c6d", - "0x2de3bc906d1fa9c85e44cf9b0642447126879cb776f5ee3749bd2e32247ba52e", - "0xd5ccdf77cab59778ad6c6d599af3819b0281c3fe434f7df4b82290620331bb01", - "0xb18af8bf1b54e5b283ed5a35eb105699fe4d25c1f69c9de1dc8a832676b412bc", - "0xb18af8bf1b54e5b283ed5a35eb105699fe4d25c1f69c9de1dc8a832676b412bc", - "0x2de3bc906d1fa9c85e44cf9b0642447126879cb776f5ee3749bd2e32247ba52e", - "0xd5ccdf77cab59778ad6c6d599af3819b0281c3fe434f7df4b82290620331bb01", - "0x2de3bc906d1fa9c85e44cf9b0642447126879cb776f5ee3749bd2e32247ba52e", - "0xf3bfda04092a842d4c57c61f9d8fb99058792ab2622b2a0c0d83a6ea41de325f", - "0xb18af8bf1b54e5b283ed5a35eb105699fe4d25c1f69c9de1dc8a832676b412bc", - "0xf3bfda04092a842d4c57c61f9d8fb99058792ab2622b2a0c0d83a6ea41de325f", - "0xb18af8bf1b54e5b283ed5a35eb105699fe4d25c1f69c9de1dc8a832676b412bc", - ], - }, - ton: { - owners: [ - // "EQD6_ynJFOsM1qwy1j_oeqD-ISboE-Lk4rr49dZ4CfvwFosp", - // "EQCzflcDPbIdELlQ5hQ7ZYwQw79CW9GTAllgrvfyLbz0_OZs", - // "EQCIjq_nM67Yg2NOzUO6_M-U4VyY4kOUVl0Bt3MiPEEgeYOS", - // "EQAIboOe0Q8hOTSLd2dosjcp0sRPKUyev24zKL5j4t2zdUh7", - // "EQBQdl9SYUJPRwmAbtsYsS2mkgVTCt_V-YHqT-FV60ODr5R-", - // "EQAzmKQhU3Tari2Nu_V71doQmw-kNkXYYRJbQkrWUorGo37z", - // "EQD8ASb2Df-cl2aetHDdAxlCnH2nfIPSx96pmSfZ2guymVQN", - // "EQA8dTRjMrOlgTsBY28tnNnD46gobuMoq03ZE41iPBlZcyg4", - // "EQAt4evTuE0lMe4a7KJIQK7aCAdblI2KsRNT91PCasZYuXVy", - // "EQA1XTRs9vj1Gq7QQX63bm7c1Tv-w4H3XxF8w4qY5Wq6Md5K", - // "EQBA2dHA_GTyN0SelRxTc4BiKcyRrVk2cKbWbQILMcEi3IXK", - // "EQBIE0_RmGpCnoUat8QXld8WaMGLZhGT2ceFJ-WMTmt4j4Ok", - // "EQDhbl3yxSyR_8qdukqF80SCil2PvhAZzZiTBUUw3MclP7mF", - // "EQCRkVC0uUvKIc_AcxsshIoOTpPcAr47aH6r9k75drIrIiqT", - // "EQDf5iNrozngVM3E19nPseH5uf-f6IYXKeEDpEcGzmmG0E8x", - "EQC9N5BK-44oeyiwhC0q4apnRrTswnXDhTETbhhgLALvXUIu", - "EQBvU8pjfThN23s-OOEZXXre2PeNBsvJbnlZ3RaczBZRNSyg", - "EQAOFVD6NvK-2_Oe9RZO1Q-g7r1UdHO7l3rerFqG9uJwG_id", - "EQBzACE3K2aEM-t07gWqwWm1QGPD2MPSeo1ZQsKn6yzhW-wx", - "EQAHzmC35fJVqIw3B_P7x54s-STta0t9CcYyTwuiM4pI-oPB", - "EQDts21W-HlG_4De-hV_4UH3R8g4Mh4ElGuNmIY_du-7ubEe", - // "EQCFFCKVa1zFxPK7G6wvT85RkExkRSj-O_mBm9uaRpVxZf8E", - // "EQCEftTyGnG8LRFQhc7PBO2OcUdy5vq-wri1rGXHYw1QyJbu", - // "EQATx1sxm1gf9RLtsoZcnTrCDRmcMeWU3WQ2vulZDNBLFWNk", - // "EQBysKw2y2jUpOAaUNEmxM9BqUg4iScsiOGgdTZvodwaP-jq", - // "EQC8K85OC_wxIpFTlW98Z2_z-zV86cB-GcKMnGaSMSsfokto", - // "EQDNH6P8W4f68LRScjwuqhee5SgP9btMzoESFu8ewzRuDVCt", - // "EQBPyemREQAlSxBJdWArlJCXtjzcOPBnKiwWz8sw9_8L_1Ee", - "EQAu9AtAct-rFOMumbUh3zLaE9FQMnmYWRi0C--7UIODe4mJ", - // "EQBL9dDz3zQv6eD5Aucrm0qioOjF2zX9SAQtg_z5sKhiWEsl", - "EQDtbfZPcagP_SQqS2_dlgmsKR-QGfAJeOH_EA2pUBCeKUSu", - "EQAFbW09or7s-CYKsLrKcvAC9LoDfqom_f5jEIHilQ8gvA4g", - // "EQC3TvP0xyKgkrU0ugz4k-MgymahgzsWlsEz_ohNPtL6MaCU", - // "EQB4tenLXVbU58tFHcXEWY4UCldJBYx2hRa9aioMvLP74isO", - // "EQCoXkxpimacDL-4KgoxVlc4cRzga3M1_oTapjTGO80S9MXC", - "EQDyoucGvxKV-mOI4wqZxDHOKUrvACcnlG0BOoXfwVVDF57R", - ], - }, - polygon: { - owners: [ - "0x2933782B5A8D72F2754103D1489614F29BFA4625", - ], - }, - polkadot: { - owners: ['165tzcxR1o2EUkpZVr17DxQsdJwtEkB6HAh69hQubmKGL93f'], - }, - avax: { - owners: ['0xD6216FC19DB775DF9774A6E33526131DA7D19A2C', '0x2933782B5A8D72F2754103D1489614F29BFA4625',], - } -}; - -module.exports = mergeExports([ - cexExports(config), - { - ethereum: { - tvl: getStakedEthTVL({ - withdrawalAddress: "0x9f4cf329f4cf376b7aded854d6054859dd102a2a", - size: 200, - sleepTime: 20_000, - proxy: true, - }), - }, - }, -]); diff --git a/projects/kudexfinance/abi.json b/projects/kudexfinance/abi.json deleted file mode 100644 index 3ff59788e8b..00000000000 --- a/projects/kudexfinance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accKudexPerShare, uint16 depositFeeBP, uint256 harvestInterval)" -} \ No newline at end of file diff --git a/projects/kudexfinance/index.js b/projects/kudexfinance/index.js deleted file mode 100644 index f072bff2405..00000000000 --- a/projects/kudexfinance/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { unwrapUniswapLPs, sumTokens2, } = require("../helper/unwrapLPs"); - -const masterChefContract = "0x243e46d50130f346bede1d9548b41c49c6440872"; - -const kccTvl = async (timestamp, ethBlock, { kcc: block }) => { - const chain = 'kcc' - - const poolLength = ( - await sdk.api.abi.call({ - abi: abi.poolLength, - target: masterChefContract, - chain, block, - }) - ).output; - - const toa = []; - const calls = []; - - for (let index = 0; index < poolLength; index++) - calls.push({ params: index }) - - const { output: res } = await sdk.api.abi.multiCall({ - target: masterChefContract, - abi: abi.poolInfo, - calls, - chain, block, - }) - res.map(i => toa.push([i.output[0], masterChefContract])) - return sumTokens2({ chain, block, tokensAndOwners: toa, resolveLP: true, }) -} - -module.exports = { - misrepresentedTokens: true, - methodology: "We count liquidity on the farms (LP tokens) and pools(single tokens) threw masterchef contract", - kcc: { - tvl: kccTvl, - }, -}; \ No newline at end of file diff --git a/projects/kujira/index.js b/projects/kujira/index.js deleted file mode 100644 index 193ad071e47..00000000000 --- a/projects/kujira/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens } = require('../helper/chain/cosmos') -const { getConfig } = require("../helper/cache"); - -const chain = "kujira"; - -async function tvl() { - const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); - const uskContracts = contracts["kaiyo-1"].uskMarket.map(x => x.address) - return sumTokens({ owners: uskContracts, chain }) -} - -module.exports = { - kujira: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/kuma-v1/index.js b/projects/kuma-v1/index.js deleted file mode 100644 index f30d9fdcb8b..00000000000 --- a/projects/kuma-v1/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const KUMA_BERACHAIN_OFT_ADAPTER_USDC = '0x7145855835924a9dFa80f42749E1FF96Eed26BC1'; - -module.exports = { - berachain: { - tvl: sumTokensExport({ owner: KUMA_BERACHAIN_OFT_ADAPTER_USDC, tokens: [ADDRESSES.berachain.USDC]}), - } -} diff --git a/projects/kuma/index.js b/projects/kuma/index.js deleted file mode 100644 index 8b5c2a80fcf..00000000000 --- a/projects/kuma/index.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = { - methodology: "Count supply of KUMA interest-bearing tokens (KIBT)", -}; - -const allAddresses = { - ethereum: { - USK: '0x01bF66BEcDcFD6D59A5Ca18869f494feA086cdfD', - EGK: '0xf2b5C482358dBaA495d442b57c163dbEDBF7868E' - }, - polygon: { - FRK: '0x2cb7285733A30BB08303B917A7a519C88146C6Eb', - USK: '0xA66818b5bda74c081a9582d8aA8929fae77E214a' - }, - linea: { - USK: "0x7a6AA80B49017f3E091574ab5C6977d863ff3865", - }, - telos: { - USK: "0x09B88f74Fb9E243c4A3F4D2FfE3d1BA4287a476c", - } -} - -Object.keys(allAddresses).forEach((chain) => { - const addresses = Object.values(allAddresses[chain]); - - module.exports[chain] = { - tvl: async (api) => { - api.addTokens(addresses, await api.multiCall({ abi: 'erc20:totalSupply', calls: addresses })) - }, - }; -}); \ No newline at end of file diff --git a/projects/kumu-finance/abi.js b/projects/kumu-finance/abi.js deleted file mode 100644 index 4a9cfe72360..00000000000 --- a/projects/kumu-finance/abi.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - poolInfo2: "function poolInfo2(uint256 _pid) view returns (address lpToken, uint256 allocPoint, address strat0, uint256 amount0, uint256 share0, address strat1, uint256 amount1, uint256 share1)", - poolLength: "uint256:poolLength", -} \ No newline at end of file diff --git a/projects/kumu-finance/index.js b/projects/kumu-finance/index.js deleted file mode 100644 index 3039b084756..00000000000 --- a/projects/kumu-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - hallmarks: [ - [1662336000, "Rug Pull"] - ], - deadFrom: '2022-09-25', - klaytn: { - tvl: () => ({}), - staking: () => ({}), - } -} \ No newline at end of file diff --git a/projects/kuraswap-cl/index.js b/projects/kuraswap-cl/index.js deleted file mode 100644 index fdc51f1a827..00000000000 --- a/projects/kuraswap-cl/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - sei: { factory: '0xd0c54c480fD00DDa4DF1BbE041A6881f2F09111e', fromBlock: 161233336 }, -}) \ No newline at end of file diff --git a/projects/kuraswap-legacy/index.js b/projects/kuraswap-legacy/index.js deleted file mode 100644 index d2d71ddd360..00000000000 --- a/projects/kuraswap-legacy/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - sei: { - tvl: getUniTVL({ - factory: '0xAEbdA18889D6412E237e465cA25F5F346672A2eC', - useDefaultCoreAssets: true, - hasStablePools: true - }), - }, -} \ No newline at end of file diff --git a/projects/kurrency/index.js b/projects/kurrency/index.js deleted file mode 100644 index 60540c9cb04..00000000000 --- a/projects/kurrency/index.js +++ /dev/null @@ -1,32 +0,0 @@ -async function tvl(api) { - const { PSM, cdpManager, getCollateralInfo } = config[api.chain] - const ids = await api.call({ abi: abi.getCollateralIds, target: cdpManager }) - const psmTokens = await api.call({ abi: abi.getPSMTokens, target: PSM }) - const psmInfos = await api.multiCall({ abi: abi.getPSMTokenInfo, calls: psmTokens, target: PSM }) - const infos = await api.multiCall({ abi: getCollateralInfo, calls: ids, target: cdpManager }) - infos.forEach(info => api.add(info.token, info.balance)) - psmInfos.forEach((info, i) => api.add(psmTokens[i], info.balance)) -} - -const config = { - wemix: { - cdpManager: '0x1B18d5a2f35B431aACa02B58eE9E4B7FBa9b098d', - PSM: '0xbdd0b6212505bcD15C38839cf338E40aeCd95b13', - getCollateralInfo: "function getCollateralInfo(uint256 collateralId) view returns (tuple(address token, address investor, uint256 balance, uint256 maxLTV, uint256 liquidationLTV, uint256 debtCeiling, uint256 interestRate, uint256 liquidationBonusRate, uint256 lastUpdateTime, uint256 lastVaultId, tuple(uint256 originalDebt, uint256 debt, uint256 debtShare) debtInfo) collateralInfo)", - }, - klaytn: { - cdpManager: '0x1962862De07BCf48680913a47F45A80022e6869a', - PSM: '0x90Da6Ed29eCCA4CFa0BE8Da50623de5aB86c285b', - getCollateralInfo: "function getCollateralInfo(uint256 collateralId) view returns (tuple(address token, address investor, bool isLeverage, uint256 balance, uint256 maxLTV, uint256 liquidationLTV, uint256 debtCeiling, uint256 interestRate, uint256 liquidationBonusRate, uint256 lastUpdateTime, uint256 lastVaultId, tuple(uint256 originalDebt, uint256 debt, uint256 debtShare) debtInfo) collateralInfo)", - } -}; - -const abi = { - "getCollateralIds": "uint256[]:getCollateralIds", - "getPSMTokenInfo": "function getPSMTokenInfo(address token) view returns (tuple(uint256 mintLimit, uint256 minReserve, uint256 balance, uint256 mintAmount, uint256 collateralId, address investor) tokenInfo)", - "getPSMTokens": "address[]:getPSMTokens", -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/kuswap/index.js b/projects/kuswap/index.js deleted file mode 100644 index a3cfcbb6ff4..00000000000 --- a/projects/kuswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - misrepresentedTokens: true, - kcc: { - tvl: getUniTVL({ - factory: '0xAE46cBBCDFBa3bE0F02F463Ec5486eBB4e2e65Ae', - useDefaultCoreAssets: true, - }), - }, -} diff --git a/projects/kuufinance/abi.json b/projects/kuufinance/abi.json deleted file mode 100644 index bf896b0f7ea..00000000000 --- a/projects/kuufinance/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "borrowableBalance": "function borrowableBalance(address _token) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/kuufinance/index.js b/projects/kuufinance/index.js deleted file mode 100644 index 3c6e5cdd050..00000000000 --- a/projects/kuufinance/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokensExport } = require('../helper/unwrapLPs') - -const JITU_CONTRACT_ADDRESS = "0x037BB12721A8876386411dAE5E31ff0c5bA991A8"; - -module.exports = { - deadFrom: 1648765747, - hallmarks: [ - [1633737600, "pausing liquidations program indefinitely"] - ], - avax:{ - tvl: sumTokensExport({ - owner: JITU_CONTRACT_ADDRESS, - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.avax.WETH_e, - ADDRESSES.avax.WBTC_e, - ADDRESSES.avax.USDT_e, - ADDRESSES.avax.DAI, - '0x5947BB275c521040051D82396192181b413227A3' - ] - }), - }, - methodology: `We count as TVL all the assets deposited in JITU contract`, -}; diff --git a/projects/kyber-classic/index.js b/projects/kyber-classic/index.js deleted file mode 100644 index ee1d82f7807..00000000000 --- a/projects/kyber-classic/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const abi = require("../kyber/abi.json"); - -const chains = { - ethereum: { - graphId: "mainnet", - factory: "0x833e4083B7ae46CeA85695c4f7ed25CDAd8886dE" - }, - arbitrum: { - graphId: "arbitrum-one", - factory: "0x51E8D106C646cA58Caf32A47812e95887C071a62" - }, - polygon: { - graphId: "matic", - factory: "0x5F1fe642060B5B9658C15721Ea22E982643c095c" - }, - avax: { - graphId: "avalanche", - factory: "0x10908C875D865C66f271F5d3949848971c9595C9" - }, - bsc: { - graphId: "bsc", - factory: "0x878dFE971d44e9122048308301F540910Bbd934c" - }, - fantom: { - graphId: "fantom", - factory: "0x78df70615ffc8066cc0887917f2Cd72092C86409" - }, - cronos: { - graphId: "cronos", - factory: "0xD9bfE9979e9CA4b2fe84bA5d4Cf963bBcB376974" - }, - optimism: { - graphId: "optimism", - factory: "0x1c758aF0688502e49140230F6b0EBd376d429be5" - }, - aurora: { factory: "0xD9bfE9979e9CA4b2fe84bA5d4Cf963bBcB376974" }, - velas: { factory: "0xD9bfE9979e9CA4b2fe84bA5d4Cf963bBcB376974" }, - oasis: { factory: "0xD9bfE9979e9CA4b2fe84bA5d4Cf963bBcB376974" }, - bittorrent: { factory: "0xD9bfE9979e9CA4b2fe84bA5d4Cf963bBcB376974" }, - linea: { factory: "0x1c758af0688502e49140230f6b0ebd376d429be5" }, - era: { factory: "0x9017f5A42fbe5bCA3853400D2660a2Ee771b241e" }, - scroll: {factory: "0x1c758aF0688502e49140230F6b0EBd376d429be5"} -}; - -function classic(chain) { - const factory = chains[chain].factory - if (!factory) return {} - return getUniTVL({ - chain, factory: chains[chain].factory, abis: { - allPairsLength: abi.allPoolsLength, - allPairs: abi.allPools, - getReserves: abi.getReserves, - }, - }) -} - -module.exports = { - timetravel: false, -}; -Object.keys(chains).forEach(chain => { - module.exports[chain] = { - tvl: classic(chain) - }; -}); diff --git a/projects/kyber/abi.json b/projects/kyber/abi.json deleted file mode 100644 index 545913ac793..00000000000 --- a/projects/kyber/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "getTokenWallet": "function getTokenWallet(address token) view returns (address wallet)", - "allPools": "function allPools(uint256) view returns (address)", - "allPoolsLength": "uint256:allPoolsLength", - "token0": "address:token0", - "token1": "address:token1", - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)" -} \ No newline at end of file diff --git a/projects/kyber/index.js b/projects/kyber/index.js deleted file mode 100644 index 7af279fe43e..00000000000 --- a/projects/kyber/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const sdk = require("@defillama/sdk") -const { cachedGraphQuery } = require("../helper/cache"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const CONFIG = { - ethereum: { graphId: "mainnet" }, - arbitrum: { graphId: "arbitrum-one", blacklistedTokens: ['0x0df5dfd95966753f01cb80e76dc20ea958238c46'] }, // rWETH - polygon: { graphId: "matic" }, - avax: { graphId: "avalanche" }, - bsc: { graphId: "bsc" }, - fantom: { graphId: "fantom" }, - cronos: { graphId: "cronos" }, - optimism: { graphId: "optimism" }, - linea: { graphId: 'linea' }, - base: { graphId: 'base' }, - scroll: { graphId: 'scroll' } -}; - -async function fetchPools(chain) { - let url - - switch (chain) { - case "linea": url = 'https://graph-query.linea.build/subgraphs/name/kybernetwork/kyberswap-elastic-linea'; break; - case "cronos": url = 'https://cronos-graph.kyberengineering.io/subgraphs/name/kybernetwork/kyberswap-elastic-cronos'; break; - case "base": url = 'https://base-graph.kyberengineering.io/subgraphs/name/kybernetwork/kyberswap-elastic-base'; break; - case "scroll": url = 'https://scroll-graph.kyberengineering.io/subgraphs/name/kybernetwork/kyberswap-elastic-scroll'; break; - case "mainnet": url = sdk.graph.modifyEndpoint('4U9PxDR4asVvfXyoVy18fhuj6NHnQhLzZkjZ5Bmuc5xk'); break; - case "arbitrum-one" : url = sdk.graph.modifyEndpoint('C36tj8jSpEHxcNbjM3z7ayUZHVjrk4HRqnpGMFuRgXs6'); break; - case "avalanche": url = sdk.graph.modifyEndpoint('9oMJfc7CL8uDqqQ3T3NFBnFCz9JMwq2YhH9AqojECFWp'); break; - case "bsc": url = sdk.graph.modifyEndpoint('FDEDgycFnTbPZ7PfrnWEZ4iR7T5De6BR69zx1i8gKQRa'); break; - case "fantom": url = sdk.graph.modifyEndpoint('9aj6YZFVL647wFBQXnNKM72eiowP4fyzynQKwLrn5axL'); break; - case "optimism": url = sdk.graph.modifyEndpoint('3Kpd8i7U94pTz3Mgdb8hyvT5o26fpwT7SUHAbTa6JzfZ'); break; - default: url = `https://api.thegraph.com/subgraphs/name/kybernetwork/kyberswap-elastic-${chain}`; - } - let toa = []; - const poolQuery = ` - query pools($lastId: String) { - pools(first: 1000, where: {id_gt: $lastId} ) { - id - token0 { - id - } - token1 { - id - } - } - }`; - const pools = await cachedGraphQuery('kyber/'+chain, url, poolQuery, { fetchById: true, }) - pools.forEach(({ id, token0, token1}) => { - toa.push([token0.id, id]) - toa.push([token1.id, id]) - }) - - return toa; -} - -function elastic(graphId, blacklistedTokens = []) { - return async (api) => { - if (!graphId) return - const pools = await fetchPools(graphId); - return sumTokens2({ api, tokensAndOwners: pools, blacklistedTokens }) - } -} - -module.exports = { - timetravel: false, - hallmarks: [ - ['2023-04-17', 'Kyber team identified a vuln'], - // [1700611200,'Protocol exploit'], - ], -}; - -Object.keys(CONFIG).forEach((chain) => { - const { graphId, blacklistedTokens } = CONFIG[chain] - module.exports[chain] = { tvl: elastic(graphId, blacklistedTokens)} -}) - -module.exports.base.tvl = () => ({}) // setting base to 0 for now as I could not find the graph endpoint \ No newline at end of file diff --git a/projects/kyo-fi-v3/index.js b/projects/kyo-fi-v3/index.js deleted file mode 100644 index a70dbeb3ebd..00000000000 --- a/projects/kyo-fi-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - soneium: { factory: '0x137841043180BBA8EF52828F9030D1b7fE065F95', fromBlock: 1 }, -}) diff --git a/projects/kyotoswap/index.js b/projects/kyotoswap/index.js deleted file mode 100644 index c15b026003b..00000000000 --- a/projects/kyotoswap/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { stakings } = require("../helper/staking"); - -const FACTORY = "0x1c3E50DBBCd05831c3A695d45D2b5bCD691AD8D8"; -const LOCKER = "0xd8e86cfD71A19AcF79B60fB75F0470185C95B06b"; -const KSWAP = "0x29ABc4D03D133D8Fd1F1C54318428353CE08727E"; - -module.exports = { - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: FACTORY, - useDefaultCoreAssets: true, - }), - staking: stakings([LOCKER], KSWAP), - }, -}; diff --git a/projects/kyrios/index.js b/projects/kyrios/index.js deleted file mode 100644 index 6245792aaee..00000000000 --- a/projects/kyrios/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const token = "0xdbf8a44f447cf6fa300fa84c2aac381724b0c6dd" -const masterchef = "0x7aAa607A456607dd03496065ebBAC52f74c905bE"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "fantom", token, false) -} \ No newline at end of file diff --git a/projects/kyros/index.js b/projects/kyros/index.js deleted file mode 100644 index 1282846e560..00000000000 --- a/projects/kyros/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); - -async function tvl() { - return sumTokens2({ - tokenAccounts: [ - "CRFtzwkekKorgdTRSdvsYeqL1vEuVvwGRvweuWCyaRt3", // jitoSOL token account in kySOL Vault address - "HzwDsHJBtuSTRx3VV6bz1R8yrLywxKgfGte7FASXU8Gd", // JTO token account in kyJTO Vault address - ] - }) -} - -module.exports = { - timetravel: false, - doublecounted: true, - solana: { tvl }, - methodology: 'The TVL is calculated by summing all restaked assets.', -}; diff --git a/projects/l2fibank-xyz/index.js b/projects/l2fibank-xyz/index.js deleted file mode 100644 index f72ad4f0bcb..00000000000 --- a/projects/l2fibank-xyz/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { compoundV3Exports } = require('../helper/compoundV3') - -module.exports = compoundV3Exports({ - arbitrum: { - markets: [ - "0x0596355e1d3a467a7b22a9e96e5b0fba494b9f89", // USDT Market - ], - } -}) \ No newline at end of file diff --git a/projects/l2finance/abi.json b/projects/l2finance/abi.json deleted file mode 100644 index aeff187f814..00000000000 --- a/projects/l2finance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "supplyToken": "address:supplyToken", - "syncBalance": "uint256:syncBalance" -} \ No newline at end of file diff --git a/projects/l2finance/index.js b/projects/l2finance/index.js deleted file mode 100644 index 2cb47d1174a..00000000000 --- a/projects/l2finance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const abi = require('./abi.json') -const { getLogs } = require('../helper/cache/getLogs') - -const rollupChain = "0xf86FD6735f88d5b6aa709B357AD5Be22CEDf1A05" -const registry = "0xfe81ab6930a30bdae731fe7b6c6abfbeafc014a8" - -async function tvl(api) { - const strategies = (await getLogs({ - api, - target: registry, - fromBlock: 12283732, - topic: 'StrategyRegistered(address,uint32)' - })).map(s => "0x" + s.data.slice(26, 66)).filter(i => i !== '0x61fc4d40d313eb01483f537a6db2b29fb38aea8d') - const [syncBalances, tokens] = await Promise.all([abi.syncBalance, abi.supplyToken].map(abiMethod => api.multiCall({ abi: abiMethod, calls: strategies }))) - api.addTokens(tokens, syncBalances) - return sumTokens2({ api, owner: rollupChain, tokens: [ - ADDRESSES.ethereum.USDC, //usdc - ADDRESSES.ethereum.DAI, //dai - ADDRESSES.ethereum.BUSD, //busd - ADDRESSES.ethereum.USDT, //usdt - ]}) -} - -module.exports = { - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/l2x/index.js b/projects/l2x/index.js deleted file mode 100644 index 3bcae2300b3..00000000000 --- a/projects/l2x/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - astrzk: { factory: '0x350B0F09EE6659e18a2642d6B25b909d59271e3c', fromBlock: 177553, }, -}) - -module.exports.deadFrom = '2025-03-31' // Astar ZK is shutting down on March 31, 2025: https://docs.astar.network/docs/learn/zkEVM diff --git a/projects/laari-fi/index.js b/projects/laari-fi/index.js deleted file mode 100644 index 28baf4b7855..00000000000 --- a/projects/laari-fi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { yieldHelper, } = require("../helper/yieldHelper") - -const AutoFarmV2 = '0x421fcb1f6dBa9E01C70d4A342D9590547fBf9997' -const Laari = '0x236f9ebE3A40F3b24CEa63a880704c712d5EC760' - -module.exports = yieldHelper({ - project: 'laari-finance', - chain: 'base', - masterchef: AutoFarmV2, - nativeToken: Laari, - useDefaultCoreAssets: true, - abis: { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256, uint256, uint256, uint256, uint256, uint256, uint256 amount, uint256, address strat)', - }, -}) -module.exports.hallmarks=[[1697068800, "Rug Pull"]], -module.exports.deadFrom='2023-10-12' \ No newline at end of file diff --git a/projects/lachain-yield-market.js b/projects/lachain-yield-market.js deleted file mode 100644 index 366e1ecab55..00000000000 --- a/projects/lachain-yield-market.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - deadFrom: '2024-01-01', - misrepresentedTokens: true, - lachain: { tvl: () => ({ }) }, -} - diff --git a/projects/lachainBridge.js b/projects/lachainBridge.js deleted file mode 100644 index bbfe3461eec..00000000000 --- a/projects/lachainBridge.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') - -const config = { - polygon: { - nativeBridge: ['0xE372D290F83c7487bdc925ddA187671bfF9e347b'], tokenBridge: ['0x82E4d5d7F36a22f2FEaaF87eCcDcDA7e0EFc98C3'], tokens: [ADDRESSES.polygon.USDT], - }, - bsc: { - nativeBridge: ['0xC926f267418d69147c88Edf88e93E78F2153f923'], tokenBridge: ['0x6571DD15430a455118EC6e24Dc7820489ED7019b'], tokens: [ADDRESSES.bsc.USDT], - }, - ethereum: { - nativeBridge: ['0xc7fc91a0a93d570738b2af6efb1595c3183809d7'], tokenBridge: ['0xAB49eb8Ca42f42fd7e8b745F2CC5BeDfb78d2D3E'], tokens: [ADDRESSES.ethereum.USDT], - }, - avax: { - nativeBridge: ['0xD4aE8F772dcf2e20b103c740AfD9D9f9E78dbfFC'], tokenBridge: ['0x8783256443217856B716464A068aabdecc3F0b95'], tokens: [ADDRESSES.avax.USDt], - }, - fantom: { - nativeBridge: ['0x012cebA65fD071473a9E0d3C5048702734a1eE5e'], tokenBridge: ['0x73Ec53a1Ee3Ea275D95212b41Dcce8cb9e0206Cd'], tokens: [ADDRESSES.fantom.fUSDT], - }, - arbitrum: { - nativeBridge: ['0xD4aE8F772dcf2e20b103c740AfD9D9f9E78dbfFC'], tokenBridge: ['0x43d92690D302C0e9f2fBD624eb9589F52b5AD115'], tokens: [ADDRESSES.arbitrum.USDT], - }, - harmony: { - nativeBridge: ['0x0A19afbE4519A40Df3b48BE46EDc0720724B4A6B'], tokenBridge: ['0x5DDDc78C8a59CeD4d25a8FD96BF9D9FdA561D0FF'], tokens: ['0x3c2b8be99c50593081eaa2a724f0b8285f5aba8f'], - }, - heco: { - nativeBridge: ['0xbBF0b12A0Be425Db284905A3Cb0Ab72b178b6A4F'], tokenBridge: ['0x334d6D6c5EaE4bf5ec7De39a1547e6bDBdDcfbf3'], tokens: [ADDRESSES.heco.USDT], - }, -} - -Object.keys(config).forEach(chain => { - const { nativeBridge, tokenBridge, tokens} = config[chain] - tokens.push(ADDRESSES.null) - const owners = nativeBridge.concat(tokenBridge) - module.exports[chain] = { - tvl: async (api) => { - return api.sumTokens({ owners, tokens }) - } - } -}) diff --git a/projects/ladao-xocolatl/index.js b/projects/ladao-xocolatl/index.js deleted file mode 100644 index 5b76269ae8e..00000000000 --- a/projects/ladao-xocolatl/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - methodology: "Counts all the tokens being used as collateral in the House of Reserves contracts that back $XOC. $XOC is the first decentralized stablecoin with peg close to the mexican (MXN) peso.", - polygon: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.polygon.WETH_1, '0xd411BE9A105Ea7701FabBe58C2834b7033EBC203'], - [ADDRESSES.polygon.WETH_1, '0x09dFC327364701d73683aCe049B8A5a8Ea27F3E8'], - [ADDRESSES.polygon.WBTC,'0x983A0eC44bf1BB11592a8bD5F91f05adE4F44D81'], - [ADDRESSES.polygon.WMATIC_2,'0xdB9Dd25660240415d95144C6CE4f21f00Edf8168'], - [ADDRESSES.polygon.WSTETH, '0x28C7DF27e5bC7Cb004c8D4bb2C2D91f246D0A2C9'], - [ADDRESSES.polygon.MATICX, '0x102dda5f4621a08dafD327f29f9c815f851846dC'], - ] - }) - }, - bsc: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.bsc.ETH,'0xd411BE9A105Ea7701FabBe58C2834b7033EBC203'], - [ADDRESSES.bsc.WBNB,'0x070ccE6887E70b75015F948b12601D1E759D2024'] - ] - }) - }, -} \ No newline at end of file diff --git a/projects/ladex-exchange/index.js b/projects/ladex-exchange/index.js deleted file mode 100644 index 84f750c5483..00000000000 --- a/projects/ladex-exchange/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const factory_contract = "0xD707d9038C1d976d3a01c770f01CB73a1fd305Cd" - -module.exports = { - deadFrom: '2024-01-01', - lachain: { - tvl: getUniTVL({ factory: factory_contract, useDefaultCoreAssets: true }), - } -}; diff --git a/projects/lagobridge/index.js b/projects/lagobridge/index.js deleted file mode 100644 index 8d674a84298..00000000000 --- a/projects/lagobridge/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const bridgecontract = '0xc6895a02F9dFe64341c7B1d03e77018E24Db15eD'; -const usdc = ADDRESSES.ethereum.USDC -const wbtc = ADDRESSES.ethereum.WBTC - -module.exports = { - methodology: "Tracks funds locked in the Lago Bridge contract on Ethereum", - ethereum: { - tvl: sumTokensExport({ owner: bridgecontract, tokens: [usdc, wbtc,], logCalls: true }) - }, - hallmarks: [ - ['2022-12-23', 'Project is winding down'], - ], -}; diff --git a/projects/lagoon/index.js b/projects/lagoon/index.js deleted file mode 100644 index 9af9542aee8..00000000000 --- a/projects/lagoon/index.js +++ /dev/null @@ -1,223 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); - -const config = { - arbitrum: { - vaults: [ - "0x99CD0b8b32B15922f0754Fddc21323b5278c5261", // Yield Algo Trading - ], - optinProxyFactory: { - address: "0x9De724B0efEe0FbA07FE21a16B9Bf9bBb5204Fb4", - fromBlock: 358686643 - }, - beaconFactory: { - address: "0x58a7729125acA9e5E9C687018E66bfDd5b2D4490", - fromBlock: 324144504 - }, - }, - avax: { - optinProxyFactory:{ - address: "0xC094C224ce0406BC338E00837B96aD2e265F7287", - fromBlock: 65620725 - }, - beaconFactory: { - address: "0x5E231C6D030a5c0f51Fa7D0F891d3f50A928C685", - fromBlock: 62519141 - }, - }, - base: { - vaults: [ - "0xFCE2064B4221C54651B21c868064a23695E78f09", // 722Capital-ETH - "0x8092cA384D44260ea4feaf7457B629B8DC6f88F0", // DeTrade Core USDC - "0xB09F761Cb13baCa8eC087Ac476647361b6314F98", // 722Capital-USDC - ], - optinProxyFactory:{ - address: "0x6FC0F2320483fa03FBFdF626DDbAE2CC4B112b51", - fromBlock: 32988756 - }, - beaconFactory: { - address: "0xC953Fd298FdfA8Ed0D38ee73772D3e21Bf19c61b", - fromBlock: 29100401 - }, - }, - berachain: { - vaults: [], - optinProxyFactory:{ - address: "0x245d1C095a0fFa6f1Af0f7Df81818DeFc9Cfc69D", - fromBlock: 7858746 - }, - beaconFactory: { - address: "0x7CF8cF276450BD568187fDC0b0959D30eC599853", - fromBlock: 4061769 - }, - }, - ethereum: { - vaults: - [ - "0x07ed467acD4ffd13023046968b0859781cb90D9B", // 9Summits Flagship ETH - "0x03D1eC0D01b659b89a87eAbb56e4AF5Cb6e14BFc", // 9Summits Flagship USDC - "0xB09F761Cb13baCa8eC087Ac476647361b6314F98", // 9Summits & Tulipa Capital cbBTC - "0x8092cA384D44260ea4feaf7457B629B8DC6f88F0", // Usual Invested USD0++ in stUSR - "0x66dCB62da5430D800a1c807822C25be17138fDA8", // Unity Trust - "0x71652D4898DE9A7DD35e472a5fe4577eC69d82f2", // Trinity Trust - "0x7895a046b26cc07272b022a0c9bafc046e6f6396", // Noon tacUSN - "0x8245FD9Ae99A482dFe76576dd4298f799c041D61", // Usual Invested USD0++ in USCC & USTB - "0xaf87b90e8a3035905697e07bb813d2d59d2b0951", // Usual Invested USD0++ in TAC - ], - optinProxyFactory:{ - address: "0x8D6f5479B14348186faE9BC7E636e947c260f9B1", - fromBlock: 22940919 - }, - beaconFactory: { - address: "0x09C8803f7Dc251f9FaAE5f56E3B91f8A6d0b70ee", - fromBlock: 22218451 - }, - }, - - katana: { - vaults: [], - optinProxyFactory:{ - address: "0xC094C224ce0406BC338E00837B96aD2e265F7287", - fromBlock: 6025911 - }, - beaconFactory: { - address: "0x37F4B3f0102FDC1ff0C7eF644751052fb276dc6e", - fromBlock: 4544281 - }, - }, - linea: { - optinProxyFactory:{ - address: "0x8D6f5479B14348186faE9BC7E636e947c260f9B1", - fromBlock: 23119208 - }, - }, - mantle:{ - optinProxyFactory:{ - address: "0xc094c224ce0406bc338e00837b96ad2e265f7287", - fromBlock: 82320704 - }, - beaconFactory: { - address: "0x57D969B556C6AebB3Ac8f54c98CF3a3f921d5659", - fromBlock: 79901742, - }, - }, - optimism: { - optinProxyFactory:{ - address: "0xA8E0684887b9475f8942DF6a89bEBa5B25219632", - fromBlock: 141662524 - }, - }, - plasma: { - optinProxyFactory:{ - address: "0xF838E8Bd649fc6fBC48D44E9D87273c0519C45c9", - fromBlock: 2236159 - }, - }, - polygon: { - optinProxyFactory:{ - address: "0x0C0E287f6e4de685f4b44A5282A3ad4A29D05a91", - fromBlock: 76939871 - }, - }, - sonic: { - optinProxyFactory:{ - address: "0x6FC0F2320483fa03FBFdF626DDbAE2CC4B112b51", - fromBlock: 38968917 - }, - beaconFactory: { - address: "0x8846189A4E46997Dd30Fd9e8bE48C1fA1B846920", - fromBlock: 21645993, - } - }, - tac: { - optinProxyFactory:{ - address: "0x66Ab87A9282dF99E38C148114F815a9C073ECA8D", - fromBlock: 2334460 - }, - beaconFactory: { - address: "0x3e39E287B4c94aC18831A63E5a6183Aa42cd85c3", - fromBlock: 1817048, - }, - }, - - unichain: { - vaults: [], - optinProxyFactory:{ - address: "0x6FC0F2320483fa03FBFdF626DDbAE2CC4B112b51", - fromBlock: 22021431 - }, - beaconFactory: { - address: "0xaba1A2e157Dae248f8630cA550bd826725Ff745c", - fromBlock: 14576623 - }, - }, - wc: { - optinProxyFactory:{ - address: "0xC094C224ce0406BC338E00837B96aD2e265F7287", - fromBlock: 16717424 - }, - beaconFactory: { - address: "0x600fA26581771F56221FC9847A834B3E5fd34AF7", - fromBlock: 14294168 - }, - }, -}; - -const vaultsBlacklist = [ - "0xDe7CFf032D453Ce6B0a796043E75d380Df258812", // vault tac 9S, used mostly by another vault: 9s flagship, on Eth mainnet - "0xd6DaBAf70977a867Fa884844FC5DCb21DE81c498", // vault tac 9s. but on TAC chain - "0xd730f24d993398d29dbaa537b6e1bd71a55df775", // test vault with fake totalAssets -] - -function keepVault(vault, vaultBlacklist) { - return vaultBlacklist.indexOf(vault) == -1; -} - -Object.keys(config).forEach((chain) => { - let {vaults, beaconFactory, optinProxyFactory} = config[chain]; - if (!vaults) vaults = []; - module.exports[chain] = { - tvl: async (api) => { - let beaconFactoryVaults = await getBeaconFactoryVaults({api, factory: beaconFactory?.address, fromBlock: beaconFactory?.fromBlock}); - let optinProxyFactoryVaults = await getOptinProxyFactoryVaults({api, factory: optinProxyFactory?.address, fromBlock: optinProxyFactory?.fromBlock}); - beaconFactoryVaults = beaconFactoryVaults.filter((v) => keepVault(v, vaultsBlacklist)); - optinProxyFactoryVaults = optinProxyFactoryVaults.filter((v) => keepVault(v, vaultsBlacklist)); - - return await api.erc4626Sum2({ - calls: [...vaults, ...beaconFactoryVaults, ...optinProxyFactoryVaults], - }) - } -}} -) - - - -const BeaconProxyDeployed = "0xfa8e336138457120a1572efbe25f72698abd5cca1c9be0bce42ad406ff350a2b"; -async function getBeaconFactoryVaults({api, factory, fromBlock}) { - if (!api || !factory || !fromBlock) return []; - const logs = await getLogs({ - api, - target: factory, - topic: BeaconProxyDeployed, - eventAbi: "event BeaconProxyDeployed(address proxy, address deployer)", - onlyArgs: true, - fromBlock: fromBlock, - - - }); - if (!logs) return []; - return logs.map((vault) => vault.proxy); -} -const ProxyDeployed = "0x8b5fd0eb1f997b4ecac1f234109294d6ace2519fc7abeab9f315fef38e2eb1dc"; -async function getOptinProxyFactoryVaults({api, factory, fromBlock}) { - if (!api || !factory || !fromBlock) return []; - const logs = await getLogs({ - api, - target: factory, - topic: ProxyDeployed, - eventAbi: "event ProxyDeployed(address proxy, address deployer)", - onlyArgs: true, - fromBlock: fromBlock, - }); - if (!logs) return []; - return logs.map((vault) => vault.proxy); -} diff --git a/projects/laika-ai/index.js b/projects/laika-ai/index.js deleted file mode 100644 index 0c0b295fb72..00000000000 --- a/projects/laika-ai/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const ADDRESSES_CONFIG = { - bsc: { - LAIKA: '0x1865dc79a9e4b5751531099057d7ee801033d268', - PAIR: '0x712903c3ca65aeeb2e5452d04da090796fcae0df', - staking: '0x0F571BdbCAC2E41503c0cca86E6aE320e9E6093C', - } -} - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking(ADDRESSES_CONFIG.bsc.staking, ADDRESSES_CONFIG.bsc.LAIKA), - pool2: sumTokensExport({ owner: ADDRESSES_CONFIG.bsc.staking, tokens: [ADDRESSES_CONFIG.bsc.PAIR] }), - }, -} diff --git a/projects/laine-sol/index.js b/projects/laine-sol/index.js deleted file mode 100644 index c459d6678e3..00000000000 --- a/projects/laine-sol/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('2qyEeSAWKfU18AFthrF7JA8z8ZCi1yt76Tqs917vwQTV', api) -} - -module.exports ={ - timetravel: false, - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/laminar/index.js b/projects/laminar/index.js deleted file mode 100644 index 5dd2efd2fff..00000000000 --- a/projects/laminar/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - hyperliquid: { - factory: '0x40059A6F242C3de0E639693973004921B04D96AD', - fromBlock: 592235, - blacklistedTokens: ['0x1d25eeeee9b61fe86cff35b0855a0c5ac20a5feb'] - }, -}) \ No newline at end of file diff --git a/projects/lander/index.js b/projects/lander/index.js deleted file mode 100644 index f51e96289bb..00000000000 --- a/projects/lander/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - bsc: compoundExports2({ comptroller: '0x344655CB08a25A7b2501CafB47CdF9490cE7fad3' }) -} diff --git a/projects/landshare/index.js b/projects/landshare/index.js deleted file mode 100644 index e4a702c74f8..00000000000 --- a/projects/landshare/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const LANDSHARE_TOKEN_CONTRACT = '0xA73164DB271931CF952cBaEfF9E8F5817b42fA5C'; -const LANDSHARE_STAKING_CONTRACT = '0x3f9458892fB114328Bc675E11e71ff10C847F93b'; -const LANDSHARE_LP_TOKEN_CONTRACT = '0x13f80c53b837622e899e1ac0021ed3d1775caefa'; -const API_CONSUMER = '0x61f8c9fE835e4CA722Db3A81a2746260b0D77735'; -const USDT = ADDRESSES.bsc.USDT; -const LSRWA_USDT_LP = '0x89bad177367736C186F7b41a9fba7b23474A1b35'; - - -async function tvl(api) { - // RWA property value from on-chain API consumer - const rwaValue = await api.call({ - abi: 'function getTotalValue() view returns (uint256)', - target: API_CONSUMER, - }); - if (Number(rwaValue) > 0) { - api.addUSDValue(Number(rwaValue) / 1e18); - } - } - - -module.exports = { - methodology: 'Counts LP Tokens (LAND-BNB and LSRWA-USDT), staked LAND, and LSRWA TVL', - bsc: { - staking: staking(LANDSHARE_STAKING_CONTRACT, LANDSHARE_TOKEN_CONTRACT), - pool2: pool2s([LANDSHARE_STAKING_CONTRACT], [LANDSHARE_LP_TOKEN_CONTRACT, LSRWA_USDT_LP]), - tvl, - } -}; \ No newline at end of file diff --git a/projects/landx/index.js b/projects/landx/index.js deleted file mode 100644 index ccbf7b646fa..00000000000 --- a/projects/landx/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const tokens = { - SOY: ['0x8A78C1042F24349595f36f1a83091163487f2241', '0xD4630ECeE730DC19d092869f9cdd19204a5A131E'], - RICE: ['0x3356328A3CA51D2664620757bd1c475Ca77FFaB5', '0x0d9554CEebCD34A5796cE09216040e1ed58e1193'], - CORN: ['0x5074c4FA383d63D62d5F531D1CF92125fb39E859', '0x803205486937A151acf0eE14FD14Caf10EF24c39'], - WHEAT: ['0x1B2B0FA9283595F5036C007dD99Ed0aA6de8362E', '0x44C7Aca9C406DED532748194DA0d691808473aC9'] -} - -const oraclePrices = '0xF49A0863D532E6036D693FBACfd2417Aebda8784' -const rentFoundation = '0xc1B9119eA8f8164BE56eB15674107A8d1b09C285' - -async function getCTokensTVL(api) { - const cStrings = Object.keys(tokens) - const xTokens = Object.values(tokens).map(t => t[0]) - const cTokens = Object.values(tokens).map(t => t[1]) - const prices = await api.multiCall({ abi: 'function prices(string memory) public view returns (uint256)', calls: cStrings, target: oraclePrices}) - const cTokenSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: cTokens}) - const availableToClaims = await api.multiCall({ abi: 'function totalAvailableToClaim() public view returns (uint256)', calls: xTokens}) - cTokenSupplies.forEach((val, i) => { - api.add(ADDRESSES.ethereum.USDC, val * prices[i] / 1e9) - api.add(ADDRESSES.ethereum.USDC, availableToClaims[i] * prices[i] / 1e9) - }) -} - -async function getXTokensTVL(api) { - const xTokens = Object.values(tokens).map(t => t[0]) - const prices = await api.multiCall({ abi: 'function getXTokenPrice(address xToken) public view returns (uint256)', calls: xTokens, target: oraclePrices}) - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: xTokens}) - supplies.forEach((val, i) => { - api.add(ADDRESSES.ethereum.USDC, val * prices[i] / 1e6) - }) -} - -async function tvl(api) { - await Promise.all([ - getCTokensTVL(api), - getXTokensTVL(api), - api.sumTokens({ owner: rentFoundation, tokens: [ADDRESSES.ethereum.USDC]}) - ]) -} - -module.exports = { - misrepresentedTokens: true, - ethereum :{ - tvl - } -} \ No newline at end of file diff --git a/projects/lanternswap/index.js b/projects/lanternswap/index.js deleted file mode 100644 index e1243ca8826..00000000000 --- a/projects/lanternswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - kava: { - tvl: () => ({}), - }, - methodology: - "Counts as TVL all the Assets deposited on KAVA through different Pool Contracts", -}; -module.exports.deadFrom = '2023-08-09' \ No newline at end of file diff --git a/projects/laraProtocol/index.js b/projects/laraProtocol/index.js deleted file mode 100644 index cdbecdf0862..00000000000 --- a/projects/laraProtocol/index.js +++ /dev/null @@ -1,18 +0,0 @@ - -const { staking } = require('../helper/staking') - -const LARA_ADDRESS = '0xE6A69cD4FF127ad8E53C21a593F7BaC4c608945e' -const LARA_STAKING_CONTRACT = '0x9B859bEc39B47C8d9C1459046a32d76B1A6883C1' -const STTARA_ADDRESS = '0x37Df886BE517F9c75b27Cb70dac0D61432C92FBE' - -async function tvl(api) { - const stTara = await api.call({ abi: 'erc20:totalSupply', target: STTARA_ADDRESS, }) - api.addGasToken(stTara); -} - -module.exports = { - tara: { - tvl, - staking: staking(LARA_STAKING_CONTRACT, LARA_ADDRESS) - } -}; \ No newline at end of file diff --git a/projects/larix.js b/projects/larix.js deleted file mode 100644 index 631afc5ea55..00000000000 --- a/projects/larix.js +++ /dev/null @@ -1,52 +0,0 @@ -const { getConnection, decodeAccount, } = require("./helper/solana"); -const { PublicKey, } = require("@solana/web3.js"); -const sdk = require('@defillama/sdk'); -let programs = { - main: '7Zb1bGi32pfsrBkzWdqd4dFhUXwp5Nybr1zuaEwN34hy', - bonfida: '3cKREQ3Z7ioCQ4oa23uGEuzekhQWPxKiBEZ87WfaAZ5p', - xsol: '3cKREQ3Z7ioCQ4oa23uGEuzekhQWPxKiBEZ87WfaAZ5p', - larix: '3cKREQ3Z7ioCQ4oa23uGEuzekhQWPxKiBEZ87WfaAZ5p', - stepn: '3cKREQ3Z7ioCQ4oa23uGEuzekhQWPxKiBEZ87WfaAZ5p', - step: '3cKREQ3Z7ioCQ4oa23uGEuzekhQWPxKiBEZ87WfaAZ5p', -} - -let allData - -async function getAllData() { - if (!allData) allData = _getAllData() - return allData - - async function _getAllData() { - const balances = { - tvl: {}, - borrowed: {}, - } - const data = [] - const connection = getConnection() - programs = [...new Set(Object.values(programs))] - for (const program of programs) { - const accounts = await connection.getProgramAccounts(new PublicKey(program), { - filters: [{ - dataSize: 873 - }] - }) - data.push(...accounts.map(i => decodeAccount('larixReserve', i.account))) - } - - const tokenAccounts = [] - data.forEach(({ liquidity: { mintPubkey, borrowedAmountWads, supplyPubkey, availableAmount, } }) => { - tokenAccounts.push(supplyPubkey) - sdk.util.sumSingleBalance(balances.tvl, mintPubkey.toString(), availableAmount, 'solana') - sdk.util.sumSingleBalance(balances.borrowed, mintPubkey.toString(), borrowedAmountWads / 1e18, 'solana') - }) - return balances - } -} - -module.exports = { - timetravel: false, - solana: { - tvl: async () => (await getAllData()).tvl, - borrowed: async () => (await getAllData()).borrowed, - }, -}; \ No newline at end of file diff --git a/projects/laserswap/index.js b/projects/laserswap/index.js deleted file mode 100644 index 714b692e728..00000000000 --- a/projects/laserswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - methodology: `Uses factory(0x23c7FA9A9f81B322684F25b8079e22C37e00b46b) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - thundercore: { - tvl: getUniTVL({ factory: '0x23c7FA9A9f81B322684F25b8079e22C37e00b46b', useDefaultCoreAssets: true }), - }, -} diff --git a/projects/latch/index.js b/projects/latch/index.js deleted file mode 100644 index 2aab05309fe..00000000000 --- a/projects/latch/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const tvl = async (api) => { - const depositPools = [ - '0xFE606EEc8Eb8e6Ad8E8654968a15650F5331a023', - '0x7cC08f23a6E8222c86a62fCE3d4d252dd1b8f90C', - ] - - const proxies = [ - '0xa116b4680b52973426B6D2a92DcC972b8DbcB46F', - '0x97cA296139f114BF3040Cf05D05c240B770c627E' - ] - - const tokens = await api.multiCall({ abi: 'address:ASSET_TOKEN', calls: depositPools }) - const stakingPools = await api.multiCall({ abi: 'address:treasury', calls: depositPools }) - const nextTreasuries = await api.multiCall({ abi: 'address:nextTreasury', calls: stakingPools }) - const withdrawPools = await api.multiCall({ abi: 'address:withdrawPool', calls: stakingPools }) - - await sumTokens2({ api, tokens, owners: depositPools.concat(withdrawPools), }) - return sumTokens2({ api, tokens, owners: nextTreasuries.concat(stakingPools).concat(proxies), fetchCoValentTokens: true, tokenConfig: { onlyWhitelisted: false, } }) -}; - -module.exports = { - ethereum: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/latoken/index.js b/projects/latoken/index.js deleted file mode 100644 index 2bb9f9ef8b1..00000000000 --- a/projects/latoken/index.js +++ /dev/null @@ -1,151 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.latoken - }, - ethereum: { - owners: [ - "0xBC34887050D143F7D3a4ceac5FC1B7Ca6645eD21", //eth hot wallet - "0x7891b20c690605f4e370d6944c8a5dbfac5a451c", //eth cold wallet - "0x127276018F956d996F439c59504f49777687cB6A", //eth cold2 wallet - "0x97fc7Eb57534191F1800073c5c31C0d7d7493e67", //erc20 hot wallet - "0xc00EEbe4E2bE29679781fc5fC350057eE8132BaB", //erc20 subsidy wallet - "0x4114d8D509503592175A8E044594b29EC081dbe0", //eth custody wallet - "0x00343217B01188388C0E3242278231Ace35E1b61", //eth custody2 wallet - "0x9976c40e8186a5E0C2a9D50d55b51F905d10ce52", //eth custody3 wallet - ], - }, - polygon: { - owners: [ - "0x298Bd5Bdd51A13B7ab653FA0DC76681427121fEa", //hot wallet - "0xA614180C69aBF82f3E7AAbB53AD9976EC90aeAC6", //subsidy wallet - "0x298Bd5Bdd51A13B7ab653FA0DC76681427121fEa", //token hot wallet - "0xA614180C69aBF82f3E7AAbB53AD9976EC90aeAC6", //token subsidy wallet - "0xba6c98f1cc6869eccbeb892b7a603f8f02db3b29", //cold wallet - ], - }, - avax: { - owners: ["0xeD8D8f4Ff53915D80987BCD51C2DE582a05b2322"], - }, - cardano: { - owners: [ - "addr1vy9wq3je4xrfhuha4krxfe9sw7q2ll2k7pcfsfdmayvue4qw7dgc9", //hot wallet - "addr1v804l0u7q4ju4eyrd8ykvvdehryn6qyz3n4nh8ucfr8s3pgeskjvu", //subsidy wallet - ], - }, - algorand: { - owners: [ - "ROH5LMHZLKHUGTNAVWNQB5LG4XHBFXM4FKNUUREDAB55UWDH2TY7S35KMU", - "5L26VADNZTMVSLEGTRZJQQO233G5HUBN3H6TECS2LPUL3HUKXF6UT2YGFE" - ], - }, - cosmos: { - owners: [ - "cosmos10zzdw24k8ytenpx95rklhnqnr95qutvhdwj0ez", //hot wallet - ], - }, - bsc: { - owners: [ - "0xBA6C98f1cc6869ECCbeB892b7A603F8F02Db3b29", //cold wallet - "0x6e4F21142CCEb4Ac5681379ab4f422903C90bf21", //hot wallet - "0x9480D1cc3fd4cb7936D114f7d63124107870A7b8", //custody wallet - "0xd76D939B455743e96adbCdf800627b11F3446780", //swap wallet - "0xBA6C98f1cc6869ECCbeB892b7A603F8F02Db3b29", //token cold wallet - "0x6e4F21142CCEb4Ac5681379ab4f422903C90bf21", //token hot wallet - "0x9480D1cc3fd4cb7936D114f7d63124107870A7b8", //token custody wallet - "0xd76D939B455743e96adbCdf800627b11F3446780", //token swap wallet - ], - }, - // celo: { - // owners: ["0xEeC02a6D1a7F9f534b9609c8EE30B9cF9A7fe1B3"], - // }, - elrond: { - owners: ["erd1z5xjeu4xw32jkckhj9jpc9dymj6a9h8yxtch96e43ncp6fhuzpnqshqutj"], - }, - eos: { - owners: ["latokenabbc1", "latokeneos11"], - }, - // energyweb: { - // owners: [ - // "0x26b52C889FCf3B8f449aD1c0F07b8572E6ACE262", //hot wallet - // "0x0F307b17d41acE555620DF5a55Dd5A01637e3b42", //cold wallet - // "0x6fb194fc9806fE320E0CBD658e31F13B1bAa3925", //custody wallet - // ], - // }, - ethereumclassic: { - owners: [ - "0x0ED633983B8bBE458Df116E3F02cd441A909ff40", //hot wallet - "0xBA6C98f1cc6869ECCbeB892b7A603F8F02Db3b29", //cold wallet - ], - }, - // lachain: { - // owners: ["0xEFf6E17Fdc68d56812DA40f7d05FC8cDfd212440"], - // }, - // filecoin: { - // owners: ["f1iy5dvp6ggzhtraxodbfdkbiw5s67mhff4w43pai"], //hot wallet - // }, - // gochain: { - // owners: [ - // "0xA1a0538D556B3E77f7E1340E3Ebd70C649c4bb84", //hot wallet - // "0x1771C9c8d5AF830d322c2E1D2161D002844679EF", //subsidy wallet - // ], - // }, - // injective: { - // owners: [ - // "inj1uyc234cek2ja9ru7a870cmx2lcavt5um2nk6hh", //hot wallet - // ], - // }, - // neo3: { - // owners: ["NMngTcDdCq3cFNHiPBvtim73HLuG3Dzkwb"], - // }, - // proton: { - // owners: ["protonla"], - // }, - polkadot: { - owners: [ - "14Y6v82Rwp7FB7m1K4a6anpjbwRbdFLJWpeePqe4sFpa4yxw", //hot wallet - "14tVS1ETLT8vqwaiCSjiqv55w59xWqUjFy1c5U9z2nauYYsj", //cold wallet - ], - }, - solana: { - owners: [ - "DdAzYR2MyafpvxnpggygmjsYCqxVdW2FkhdEwjCiSi3w", //hot wallet - "EiZxRDuRWF12DuiZ5pgeACrEgaGBjCnnMarhszdqVfGY", //cold wallet - "4eNCYHUsZwtMBjXpDjhzaXp9MmwMd1dSdr9L1kUEuAxC", //cold2 wallet - ], - }, - optimism: { - owners: [ - "0x1C91A83aeFDdFB2C09744b3BeC94D504E26cb56A", //hot wallet - "0x3b28358e9CDde80A24f0f811daD13aB9fc2A0d2A", //subsidy wallet - "0xba6c98f1cc6869eccbeb892b7a603f8f02db3b29", //cold wallet - ], - }, - terra: { - owners: ["terra1zjq4jdvqtruvxgug64rn0p06kvp7r3qpxzrxdg"], //hot wallet - }, - terra2: { - owners: ["terra13x5jkljx69vyak47k9e9u9qetu0sckxpfysrp7"], //hot wallet - }, - tezos: { - owners: [ - "tz2W7hDSZrZg8h57Habj1GdPu674wS2Hpwvj", //hot wallet - ], - }, - tron: { - owners: [ - "TM5nw5CT8S8brdBb1HPV5PCL7DqDaeFnJd", //hot wallet - "TUJrDuFr6ALjtZehcpFRKnBCCo79Gs76ww", //cold wallet - "TFLJixvV4jyxrWar9sne18M5bzS7tVEE8E", //subsidy wallet - ], - }, - zilliqa: { - owners: [ - "zil1rklazrfy5spul4tqzc2jqfvuneszcjrdya6a8y", //hot wallet - ], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/latte/index.js b/projects/latte/index.js deleted file mode 100644 index 9a3edd2a34e..00000000000 --- a/projects/latte/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -const latteToken = "0x8D78C2ff1fB4FBA08c7691Dfeac7bB425a91c81A"; -const lattev2Token = "0xa269A9942086f5F87930499dC8317ccC9dF2b6CB"; -const masterchef = "0xbCeE0d15a4402C9Cc894D52cc5E9982F60C463d6"; - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0x4DcE5Bdb81B8D5EdB66cA1b8b2616A8E0Dd5f807' -}, { staking: { bsc: [masterchef, [latteToken, lattev2Token]] }, }) \ No newline at end of file diff --git a/projects/lava/index.js b/projects/lava/index.js deleted file mode 100644 index c7eca4c44e2..00000000000 --- a/projects/lava/index.js +++ /dev/null @@ -1,101 +0,0 @@ -const methodologies = require("../helper/methodologies"); - -const DATA_PROVIDER_ADDRESS = { - arbitrum: "0x8Cb093763cD2EB1e418eaEFfFC4f20c1665304a2", - base: "0x22d6Ab83EEe06B7EE815420a7F2e737D64E534ef", -}; -const getAllReservesTokensABI = - "function getAllReservesTokens() view returns (tuple(string symbol, address tokenAddress)[])"; -const getReserveDataABI = - "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)"; - -async function getData(api, chain, key, tokens) { - const { reserves, lpReserves } = tokens; - for (const reserve of reserves) { - const reserveData = await api.call({ - abi: getReserveDataABI, - target: DATA_PROVIDER_ADDRESS[chain], - params: [reserve], - }); - - api.add(reserve, reserveData[key]); - } - - const [token0s, token1s, bals, totalSupplies] = await Promise.all([ - api.multiCall({ abi: "address:token0", calls: lpReserves }), - api.multiCall({ abi: "address:token1", calls: lpReserves }), - api.multiCall({ - abi: "function getAssets() view returns (uint256, uint256)", - calls: lpReserves, - }), - api.multiCall({ abi: "uint256:totalSupply", calls: lpReserves }), - ]); - - const lpReserveKeyDataArr = []; - for (const lpReserve of lpReserves) { - const reserveData = await api.call({ - abi: getReserveDataABI, - target: DATA_PROVIDER_ADDRESS[chain], - params: [lpReserve], - }); - - lpReserveKeyDataArr.push(reserveData[key]); - } - - bals.forEach(([v0, v1], i) => { - const v0BN = v0 - const v1BN = v1 - const keyDataBN = lpReserveKeyDataArr[i] - const totalSupplyBN = totalSupplies[i] - - const properV0 = v0BN * keyDataBN / totalSupplyBN - const properV1 = v1BN * keyDataBN / totalSupplyBN - - api.add(token0s[i], properV0); - api.add(token1s[i], properV1); - }); -} - -function lavaTvl(borrowed) { - return async function (api) { - const { chain } = api - const reservesList = await api.call({ - abi: getAllReservesTokensABI, - target: DATA_PROVIDER_ADDRESS[chain], - }); - - const lpReserves = reservesList - .filter((r) => r[0].includes("LP")) - .map(([, a]) => a); - const reserves = reservesList - .filter((r) => !r[0].includes("LP")) - .map(([, a]) => a); - - const tokens = { reserves, lpReserves }; - if (borrowed) { - return getData(api, chain, "totalVariableDebt", tokens); - } else { - return getData(api, chain, "availableLiquidity", tokens); - } - }; -} - -function getMetrics() { - return { - tvl: lavaTvl(false), - borrowed: lavaTvl(true), - }; -} - -module.exports = { - methodology: methodologies.lendingMarket, - arbitrum: getMetrics(), - base: getMetrics(), - hallmarks: [ - // ['2024-03-28', 'Protocol was exploited'], - ["2024-04-01", "Protocol was relaunched"], - ], -}; -module.exports.arbitrum.borrowed = () => ({}) -module.exports.base.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/lavafall/index.js b/projects/lavafall/index.js deleted file mode 100644 index e0f2a130c97..00000000000 --- a/projects/lavafall/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x04f9433A2CD21413Bc5641b84CaE0E40E86f9101', - nativeToken: '0x7A0Ac775d290A7a3016f153d757Fbc3c4De62488', -}) \ No newline at end of file diff --git a/projects/lavarage/index.js b/projects/lavarage/index.js deleted file mode 100644 index 97acad61c04..00000000000 --- a/projects/lavarage/index.js +++ /dev/null @@ -1,197 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getProvider, sumTokens2 } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); -const anchor = require("@project-serum/anchor"); -const bs58 = require('bs58'); - -const solProgramId = "CRSeeBqjDnm3UPefJ9gxrtngTsnQRhEJiTA345Q83X3v"; -const usdcProgramId = "1avaAUcjccXCjSZzwUvB2gS3DzkkieV2Mw8CjdN65uu"; -const stakingProgramId = "85vAnW1P89t9tdNddRGk6fo5bDxhYAY854NfVJDqzf7h"; -const TOKEN_PROGRAM_ID = new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); -const SPL_ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); - -const edgeCaseTimestamps = [ - { start: '2024-04-23', end: 1713885480 }, // 10:32 AM - 10:58 AM ET on April 23, 2024 - { start: '2024-04-23', end: 1713876060 }, // 8:15 AM - 8:41 AM ET on April 23, 2024 -]; - -const idleAccount = new PublicKey("bkhAyULeiXwju7Zmy4t3paDHtVZjNaofVQ4VgEdTWiE"); -const deployedAccount = new PublicKey("6riP1W6R3qzUPWYwLGtXEC23aTqmyAEdDtXzhntJquAh"); -const multisigAccount = new PublicKey("DkPYEECBc28iute8vWvAuAU4xiM91Sht59p7FHZbmNQv"); -const pendingUnstakeAccount = new PublicKey("HTnwdgfXrA6gZRiQsnfxLKbvdcqnxdbuC2FJsmCCVMw9"); -const usdcAddress = new PublicKey(ADDRESSES.solana.USDC); -const iscAddress = new PublicKey("J9BcrQfX4p9D1bvLzRNCbMDv8f44a9LFdeqNE4Yk2WMD"); -const usdcPoolAccount = new PublicKey("9m3wEeK3v5yyqDGMnDiDRR3FjCwZjRVB4n92pieGtTbP"); -const iscPoolAccount = new PublicKey("CrsxVEF7YNGAk9QwwbB2vuesUWoDopfgFAhA9apoCJ2z"); - -function getPositionFilters() { - const sizeFilter = { dataSize: 178 }; - const value = BigInt(9999); - const valueBuffer = Buffer.alloc(8); - valueBuffer.writeBigUInt64LE(value, 0); - const val0Filter = { - memcmp: { - offset: 40, - bytes: bs58.encode(Buffer.from(new Uint8Array(8))), - }, - } - const val9999Filter = { - memcmp: { - offset: 40, - bytes: bs58.encode(valueBuffer), - }, - } - return [ - [sizeFilter, val0Filter], - [sizeFilter, val9999Filter], - ] -} - -async function tvl(api) { - const provider = getProvider(); - for (const programId of [solProgramId, usdcProgramId]) { - - const program = new anchor.Program(lavarageIDL, programId, provider); - const pools = await program.account.pool.all() - const poolMap = {} - pools.forEach((pool) => { - poolMap[pool.publicKey.toBase58()] = pool.account.collateralType.toBase58() - }) - for (const filter of getPositionFilters()) { - const positions = await program.account.position.all(filter) - positions.forEach(({ account }) => { - let { closeStatusRecallTimestamp, pool, collateralAmount, timestamp } = account - const token = poolMap[pool.toBase58()] - const closeTS = closeStatusRecallTimestamp.toNumber() - const ts = timestamp.toNumber() - if ((closeTS && !isWithinEdgeCaseTimeRange(ts)) || !token) return; - api.add(token, collateralAmount.toString()) - }) - } - } - return sumTokens2({ - balances: api.getBalances(), tokenAccounts: [ - getAssociatedTokenAddress(usdcAddress, usdcPoolAccount), - getAssociatedTokenAddress(iscAddress, iscPoolAccount), - ], solOwners: [ - deployedAccount, pendingUnstakeAccount, - ] - }) -} - -function getAssociatedTokenAddress(mint, owner,) { - const [associatedTokenAddress] = PublicKey.findProgramAddressSync([owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()], SPL_ASSOCIATED_TOKEN_PROGRAM_ID); - return associatedTokenAddress; -} - -function isWithinEdgeCaseTimeRange(closeTimestamp) { - return edgeCaseTimestamps.some( - ({ start, end }) => closeTimestamp >= start && closeTimestamp <= end - ); -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -}; - -const lavarageIDL = { - version: "0.1.0", - name: "lavarage", - instructions: [], - accounts: [ - { - name: "pool", - type: { - kind: "struct", - fields: [ - { - name: "interestRate", - type: "u8", - }, - { - name: "collateralType", - type: "publicKey", - }, - { - name: "maxBorrow", - type: "u64", - }, - { - name: "nodeWallet", - type: "publicKey", - }, - { - name: "maxExposure", - type: "u64", - }, - { - name: "currentExposure", - type: "u64", - }, - ], - }, - }, - { - name: "position", - type: { - kind: "struct", - fields: [ - { - name: "pool", - type: "publicKey", - }, - { - name: "closeStatusRecallTimestamp", - type: "u64", - }, - { - name: "amount", - type: "u64", - }, - { - name: "userPaid", - type: "u64", - }, - { - name: "collateralAmount", - type: "u64", - }, - { - name: "timestamp", - type: "i64", - }, - { - name: "trader", - type: "publicKey", - }, - { - name: "seed", - type: "publicKey", - }, - { - name: "closeTimestamp", - type: "i64", - }, - { - name: "closingPositionSize", - type: "u64", - }, - { - name: "interestRate", - type: "u8", - }, - { - name: "lastInterestCollect", - type: "i64", - }, - ], - }, - }, - ], - types: [], - events: [], - errors: [], -}; diff --git a/projects/lazy-summer-protocol/index.js b/projects/lazy-summer-protocol/index.js deleted file mode 100644 index a48938ae55c..00000000000 --- a/projects/lazy-summer-protocol/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const config = { - ethereum: '0x09eb323dBFECB43fd746c607A9321dACdfB0140F', - base: '0x09eb323dBFECB43fd746c607A9321dACdfB0140F', - arbitrum: '0x09eb323dBFECB43fd746c607A9321dACdfB0140F', - sonic: '0xa8E4716a1e8Db9dD79f1812AF30e073d3f4Cf191', -} - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const vaults = await api.call({ abi: 'address[]:getActiveFleetCommanders', target: factory }) - const assets = await api.multiCall({ abi: 'address:asset', calls: vaults }) - const balances = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - api.add(assets, balances) - } - } -}) diff --git a/projects/lazyfi/index.js b/projects/lazyfi/index.js deleted file mode 100644 index 9a4e08f7006..00000000000 --- a/projects/lazyfi/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokens } = require('../helper/chain/near') -async function tvl() { - return sumTokens({ owners: ['app-rewards.lazyfi-wallet.near'], tokens: ['a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near']}) -} - -module.exports = { - timetravel: false, - near: { tvl } -} \ No newline at end of file diff --git a/projects/lazyotter/index.js b/projects/lazyotter/index.js deleted file mode 100644 index e39cfda9702..00000000000 --- a/projects/lazyotter/index.js +++ /dev/null @@ -1,36 +0,0 @@ -// [usdc, weth, wstETH] -const aaveVaults = ["0xF91caE959D134065f39DDaa41d66E254dfaFc6f8", "0x81A47E298d634273Afe43AD58EaC5888983d21c4", "0x22EdDd86Ee6e1dcD2eAb06f80ee39B3c084a1E77"]; - -// [eth/usdc, eth/wbtc, eth/wrsETH, eth/wstETH, usdc/usdt] -const ambientVaultHelper = "0x9b5BD88893d73d114d252Cff7CFd4f2705eEFAe7" -const ambientVaults = ["0x07ab0C3A3D9e286ba790FF57f205970bC462BB21", "0x018B3ac371344735025cB01d79871Be0e4AB351C", "0x7D1E707011bA5be76806037532c266fA6eb0699f", "0xe18acadfb098fbf4017108a5C83Fa901B062a53d", "0xfbB0D0cB3324Ec90c6667D9E2b8B98dB8F73a3e6"] - -// [USDC, USDT, wstETH, weETH, wrsETH, STONE] -const rhoMarketsVault = [ - "0x1BA2A898b5EfB716557696e3E42E6479882fCDE1", - "0x87131c9Bb4878067742dd5D60596ED3b353493FD", - "0xfAe6c6E62bc5374a229960891Ec9707e8671a219", - "0x74a28efb7275c3871aCCaE2917f6EE073039042d", - "0x4220F7297eBa7cE583826eC754A0CBE29E4e6F6f", - "0x235ea5d1EA9407334E0AF8F45BA6c9A69DF9AC18" -] - -async function tvl(api) { - await api.erc4626Sum2({ calls: aaveVaults.concat(rhoMarketsVault), }); - const ambAssets = await api.multiCall({ abi: 'uint256:totalAssets', calls: ambientVaults}) - const calls = ambAssets.map((v, i) => ({ params: [ambientVaults[i], v]})) - const res = await api.multiCall({ abi: 'function previewAmountByAsset(address vault, uint256 assets) view returns (uint256, uint256)', calls, target: ambientVaultHelper}) - const quoteTokens = await api.multiCall({ abi: 'address:quoteToken', calls: ambientVaults}) - const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: ambientVaults}) - for (const i in res){ - api.add(quoteTokens[i], res[i][0]) - api.add(baseTokens[i], res[i][1]) - } -} - -module.exports = { - methodology: "Returns the total assets owned by the LazyOtter Vault on Scroll.", - scroll: { - tvl, - }, -}; diff --git a/projects/lbank-exchange/index.js b/projects/lbank-exchange/index.js deleted file mode 100644 index e43c039bd17..00000000000 --- a/projects/lbank-exchange/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xfa9f7a1cBfBCB688729c522b4F0905CcF4d26D25' - ], - }, - bitcoin: { - owners: bitcoinAddressBook.lbank - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/leNFT/index.js b/projects/leNFT/index.js deleted file mode 100644 index a60280aa184..00000000000 --- a/projects/leNFT/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -async function tvl(api) { - const tradingPoolFactory = "0x197456A4f5c3B3605033270Bc04Bc599916CaBA0"; - const lendingMarket = "0xFAE8371d6b22F6451A64026785e79Bd7B438306F"; - - // Get the logs of trading pool creation - const tradingPoolFactoryLogs = await getLogs({ - api, - target: tradingPoolFactory, - topics: [ - "0xa1311e5e3c1c2207844ec9211cb2439ea0bce2a76c6ea09d9343f0d0eaddd9f6", - ], - fromBlock: 17605911, - eventAbi: - "event CreateTradingPool(address indexed pool, address indexed nft, address indexed token)", - onlyArgs: true, - }); - var ownerTokens = []; - - // Add trading pools - for (const log of tradingPoolFactoryLogs) { - ownerTokens.push([[log.token, log.nft], log.pool]); - } - - // Get the logs of lending pool creation - const lendingMarketLogs = await getLogs({ - api, - target: lendingMarket, - topics: [ - "0xe981a0f3e894fa2788c75d5d18601ca14c7b544c96311cc7c0a022bcc5900ee8", - ], - fromBlock: 17605911, - eventAbi: - "event CreateLendingPool(address indexed lendingPool, address indexed collection, address indexed asset)", - onlyArgs: true, - }); - - // Add lending pools - for (const log of lendingMarketLogs) { - ownerTokens.push([[log.asset, log.collection], log.lendingPool]); - } - - return sumTokens2({ ownerTokens, api }); -} - -module.exports = { - ethereum: { tvl }, -}; diff --git a/projects/leaguedao/api.js b/projects/leaguedao/api.js deleted file mode 100644 index b83e37f2502..00000000000 --- a/projects/leaguedao/api.js +++ /dev/null @@ -1,8 +0,0 @@ -const index = require('./index') - -module.exports = { - ethereum: { - tvl: () => 0, - staking: index.ethereum.staking, - } -} \ No newline at end of file diff --git a/projects/leaguedao/index.js b/projects/leaguedao/index.js deleted file mode 100644 index 9e86c25fd7c..00000000000 --- a/projects/leaguedao/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const leag = "0x7b39917f9562C8Bc83c7a6c2950FF571375D505D"; -const stakingContract = "0x67F60dA0F409AB8427e8a408efc4B137D0BD4e7B"; -const yieldFarmStakingContract = "0x43921eb2E5C78D9e887d3Ecd4620a3Bd606f4F95"; - -//Tokens in Yield Farm Contract -const link = ADDRESSES.ethereum.LINK; -const snx = ADDRESSES.ethereum.SNX; -const ilv = "0x767fe9edc9e0df98e07454847909b5e959d7ca0e"; -const sushi = ADDRESSES.ethereum.SUSHI; -const bond = "0x0391D2021f89DC339F60Fff84546EA23E337750f"; -const xyz = "0x618679df9efcd19694bb1daa8d00718eacfa2883"; -const ionx = "0x02d3a27ac3f55d5d91fb0f52759842696a864217"; -const entr = "0xd779eea9936b4e323cddff2529eb6f13d0a4d66e"; -const leagUsdc = "0x4708713b4b6bd32e41bcb2f9c5901d74fedba447"; - -module.exports = { - ...ohmTvl( - yieldFarmStakingContract, - [ - [link, false], - [snx, false], - [ilv, false], - [sushi, false], - [bond, false], - [xyz, false], - [ionx, false], - [entr, false], - [leagUsdc, false], - ], - "ethereum", - stakingContract, - leag - ), -}; diff --git a/projects/leech-protocol/index.js b/projects/leech-protocol/index.js deleted file mode 100644 index 88335aa9579..00000000000 --- a/projects/leech-protocol/index.js +++ /dev/null @@ -1,115 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -const poolsUrl = "https://pc.leechprotocol.com/pool-data/lama"; - -async function getPoolData(api) { - return getConfig('leech-protocol/' + api.chain, `${poolsUrl}/${api.chainId}`) -} - -async function tvl(api) { - const { items: pools } = await getPoolData(api); - const chain = api.chain - const wantPools = [] - const lpPools = [] - const sslpPools = [] - const biswapPools = [] - const thenaPools = [] - const veloPools = [] - pools.forEach(({ address, name }) => { - switch (chain) { - case 'avax': - if (name === 'strategy-yak') { - wantPools.push(address) - } - break; - case 'optimism': - if (name === 'sushi-opt') { - sslpPools.push(address) - } else if (name === 'velo-opt') { - veloPools.push(address) - } - - break; - case 'bsc': - if (name === 'strategy-thena') { - thenaPools.push(address) - } else if (name === 'strategy-biswap-farm') { - biswapPools.push(address) - } else if (name === 'strategy-venus-supl') { - wantPools.push(address) - } - break; - } - }) - - if (wantPools.length > 0) { - const wTokens = await api.multiCall({ abi: 'address:want', calls: wantPools }) - const wBals = await api.multiCall({ abi: 'uint256:balanceOfUnderlying', calls: wantPools }) - api.addTokens(wTokens, wBals) - } - - if (lpPools.length > 0) { - const wTokens = await api.multiCall({ abi: 'address:lp', calls: lpPools }) - const wBals = await api.multiCall({ abi: 'uint256:balance', calls: lpPools }) - api.addTokens(wTokens, wBals) - await sumTokens2({ api, resolveLP: true, }) - } - - if (thenaPools.length > 0) { - const sslpTokens = await api.multiCall({ abi: 'address:want', calls: thenaPools }) - const sslpBals = await api.multiCall({ abi: 'uint256:balance', calls: thenaPools }) - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: sslpTokens }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: sslpTokens }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: sslpTokens }) - const reserves = await api.multiCall({ abi: 'function getTotalAmounts() public view returns (uint256, uint256)', calls: sslpTokens }) - reserves.forEach(([token0Bal, token1Bal], i) => { - const ratio = sslpBals[i] / supplies[i] - api.add(token0s[i], token0Bal * ratio) - api.add(token1s[i], token1Bal * ratio) - }) - } - - if (sslpPools.length > 0) { - const sslpTokens = await api.multiCall({ abi: 'address:lp', calls: sslpPools }) - const sslpBals = await api.multiCall({ abi: 'uint256:balance', calls: sslpPools }) - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: sslpTokens }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: sslpTokens }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: sslpTokens }) - const reserves = await api.multiCall({ abi: 'function getReserves() public view returns (uint256, uint256)', calls: sslpTokens }) - reserves.forEach(([token0Bal, token1Bal], i) => { - const ratio = sslpBals[i] / supplies[i] - api.add(token0s[i], token0Bal * ratio) - api.add(token1s[i], token1Bal * ratio) - }) - } - - if (veloPools.length > 0) { - const sslpTokens = await api.multiCall({ abi: 'address:LP', calls: veloPools }) - const sslpBals = await api.multiCall({ abi: 'uint256:balance', calls: veloPools }) - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: sslpTokens }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: sslpTokens }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: sslpTokens }) - const reserves = await api.multiCall({ abi: 'function getReserves() public view returns (uint256, uint256)', calls: sslpTokens }) - reserves.forEach(([token0Bal, token1Bal], i) => { - const ratio = sslpBals[i] / supplies[i] - api.add(token0s[i], token0Bal * ratio) - api.add(token1s[i], token1Bal * ratio) - }) - } - - if (biswapPools.length > 0) { - const wTokens = await api.multiCall({ abi: 'address:want', calls: biswapPools }) - const wBals = await api.multiCall({ abi: 'uint256:balance', calls: biswapPools }) - api.addTokens(wTokens, wBals) - await sumTokens2({ api, resolveLP: true, }) - } - - return api.getBalances() -} - -module.exports = { - bsc: { tvl }, - avax: { tvl }, - optimism: { tvl }, -}; \ No newline at end of file diff --git a/projects/leetswap/index.js b/projects/leetswap/index.js deleted file mode 100644 index fd62f571866..00000000000 --- a/projects/leetswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -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: defaultTvl, - base: { tvl: getUniTVL({ factory: '0x169C06b4cfB09bFD73A81e6f2Bb1eB514D75bB19', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'sLS2', }), }, - manta: defaultTvl, - scroll: defaultTvl, -} diff --git a/projects/legion/index.js b/projects/legion/index.js deleted file mode 100644 index faa80f9939c..00000000000 --- a/projects/legion/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - ethereum: { factory: '0xa0BeB0A8C765482c128a2986c063AF5C3171ff2F', fromBlock: 23182742 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: "event NewPreLiquidSaleV2Created(address saleInstance, (uint256 salePeriodSeconds, uint256 refundPeriodSeconds, uint256 lockupPeriodSeconds, uint256 legionFeeOnCapitalRaisedBps, uint256 legionFeeOnTokensSoldBps, uint256 referrerFeeOnCapitalRaisedBps, uint256 referrerFeeOnTokensSoldBps, uint256 minimumInvestAmount, address bidToken, address askToken, address projectAdmin, address addressRegistry, address referrerFeeReceiver) saleInitParams, (uint256 vestingDurationSeconds, uint256 vestingCliffDurationSeconds, uint256 tokenAllocationOnTGERate) vestingInitParams)", fromBlock, }) - const tokensAndOwners = logs.map(i => [i.saleInitParams.bidToken, i.saleInstance]) - return api.sumTokens({ tokensAndOwners }) - } - } -}) \ No newline at end of file diff --git a/projects/lemma/abis/perpLemmaWrapper.json b/projects/lemma/abis/perpLemmaWrapper.json deleted file mode 100644 index 39734a7fa8a..00000000000 --- a/projects/lemma/abis/perpLemmaWrapper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "isUsdlCollateralTailAsset": "bool:isUsdlCollateralTailAsset" -} \ No newline at end of file diff --git a/projects/lemma/abis/perpV2Vault.json b/projects/lemma/abis/perpV2Vault.json deleted file mode 100644 index fc7d1dc3a6a..00000000000 --- a/projects/lemma/abis/perpV2Vault.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getBalanceByToken": "function getBalanceByToken(address trader, address token) view returns (int256)" -} \ No newline at end of file diff --git a/projects/lemma/index.js b/projects/lemma/index.js deleted file mode 100644 index 4f45688f46f..00000000000 --- a/projects/lemma/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const perpV2VaultABI = require('./abis/perpV2Vault.json'); -const perpLemmaWrapperABI = require('./abis/perpLemmaWrapper.json'); -const USDC = ADDRESSES.optimism.USDC; -const PERP_V2_VAULT = "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60"; - -const tokens = [ - ADDRESSES.tombchain.FTM, - ADDRESSES.optimism.WBTC, - "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6", - "0x76FB31fb4af56892A25e32cFC43De717950c9278", - "0x0994206dfe8de6ec6920ff4d779b0d950605fb53", - "0x9e1028F5F1D5eDE59748FFceE5532509976840E0" -]; -const perpLemmaWrappers = [ - "0x29b159aE784Accfa7Fb9c7ba1De272bad75f5674", - "0xe161C6c9F2fC74AC97300e6f00648284d83cBd19", - "0xdd4d71D3563C24E38525661896e1d01Fd8c2c9A5", - "0xFE1EB36d31ead771Fd5E051ee8CC424dB6416567", - "0x119f85ECFcFBC1d7033d266192626202Df7dbDf2", - "0x13c214b430fE304C4C6437F3564A690cd4e4f23B" -]; -//tracks only tvl on optimism (v2) as v1 (on arbitrum) is getting deprecated -async function tvl(timestamp, block, chainBlocks) { - const balances = {}; - const transform = i => `optimism:${i}`; - - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i]; - const perpLemmaWrapper = perpLemmaWrappers[i]; - - const isTailAsset = (await sdk.api.abi.call({ - abi: perpLemmaWrapperABI["isUsdlCollateralTailAsset"], - chain: 'optimism', - target: perpLemmaWrapper, - params: [], - block: chainBlocks['optimism'], - })).output; - - if (isTailAsset) { - //if tail asset than the tokens are in perpLemmaWrapper - const tokenBalance = (await sdk.api.abi.call({ - abi: 'erc20:balanceOf', - chain: 'optimism', - target: token, - params: [perpLemmaWrapper], - block: chainBlocks['optimism'], - })).output; - - sdk.util.sumSingleBalance(balances, transform(token), tokenBalance); - } - else { - //if it is accepted as a collateral on perpetual than fetch the balance from perpetual vault - const tokenBalance = (await sdk.api.abi.call({ - abi: perpV2VaultABI["getBalanceByToken"], - chain: 'optimism', - target: PERP_V2_VAULT, - params: [perpLemmaWrapper, token], - block: chainBlocks['optimism'], - })).output; - - sdk.util.sumSingleBalance(balances, transform(token), tokenBalance); - - } - - const usdcBalancePerpLemmaWrapper = (await sdk.api.abi.call({ - abi: perpV2VaultABI["getBalanceByToken"], - chain: 'optimism', - target: PERP_V2_VAULT, - params: [perpLemmaWrapper, USDC], - block: chainBlocks['optimism'], - })).output; - - sdk.util.sumSingleBalance(balances, transform(USDC), usdcBalancePerpLemmaWrapper); - - } - - return balances; -} - -module.exports = { - optimism: { - tvl: tvl, - } -}; \ No newline at end of file diff --git a/projects/lemonX/index.js b/projects/lemonX/index.js deleted file mode 100644 index bc6051bb817..00000000000 --- a/projects/lemonX/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - core: { - tvl: gmxExports({ vault: '0xC2acC8e5Be6613f53C71AE5E386D39a40a4761aA', }) - }, -} \ No newline at end of file diff --git a/projects/lemonswap/index.js b/projects/lemonswap/index.js deleted file mode 100644 index fde375e6213..00000000000 --- a/projects/lemonswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const token = "0x9477477CdDC4A05419A402A9754725Bc9Ee6a40e" -const masterchef = "0xD2C91aA7ffAb4CE218f7F6fc9AED7029A57C4B97"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/lemuriafinance.js b/projects/lemuriafinance.js deleted file mode 100644 index 4e17e54faf7..00000000000 --- a/projects/lemuriafinance.js +++ /dev/null @@ -1,22 +0,0 @@ - -const { getConfig } = require('./helper/cache') -const { sumUnknownTokens } = require('./helper/unknownTokens') - -async function tvl(api) { - let data = await getConfig('lemuria', 'https://raw.githubusercontent.com/lemuriafinance/lemuria-frontend-pub/main/src/features/configure/vault/milkomeda_pools.js') - data = JSON.parse(data.slice(data.indexOf('[')).replaceAll('\'', '"').replaceAll(/\n\s+(\w+)/g, '"$1"').split('\n').map(i => i.replaceAll(/\s+\/\/.*/g, '').trim()).join('').replaceAll(';', '').replaceAll(/,(\]|\})/g, '$1')) - const pools = data.map(i => i.earnContractAddress) - const tokens = await api.multiCall({ abi: 'address:want', calls: pools}) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: pools}) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true, }) -} - -module.exports = { - misrepresentedTokens: true, - methodology: - 'TVL data is pulled from the Lemuria Financial API "https://api.lemuria.finance/tvl".', - milkomeda: { - tvl - }, -}; diff --git a/projects/lend-lord/index.js b/projects/lend-lord/index.js deleted file mode 100644 index a1ff084cf40..00000000000 --- a/projects/lend-lord/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const LEND_LORD_VAULT_CONTRACT = "0xC6A6fB7238457277E913665e194BA1f041B210f5"; - -async function tvl(api) { - const tokens = await api.call({ abi: abi.getAssets, target: LEND_LORD_VAULT_CONTRACT }) - return sumTokens2({ api, owner: LEND_LORD_VAULT_CONTRACT, tokens }) -} - -async function borrowed(api) { - const tokens = await api.call({ abi: abi.getAssets, target: LEND_LORD_VAULT_CONTRACT }) - const balances = await api.multiCall({ abi: abi.getAssetTotalBorrowBalance, calls: tokens, target: LEND_LORD_VAULT_CONTRACT }) - api.addTokens(tokens, balances) - return api.getBalances() -} - -const abi = { - getAssets: "address[]:getAssets", - getAssetTotalBorrowBalance: "function getAssetTotalBorrowBalance(address) view returns (uint256 amount)", -}; - -module.exports = { - manta: { tvl, borrowed }, -}; diff --git a/projects/lendOS/index.js b/projects/lendOS/index.js deleted file mode 100644 index 1bd38f911e6..00000000000 --- a/projects/lendOS/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { aaveExports } = require('../helper/aave'); -const methodologies = require('../helper/methodologies'); - -module.exports = { - methodology: methodologies.lendingMarket, - neon_evm: aaveExports('', undefined, undefined, ['0x3A1ca459F21D8FAcF9A30bC4773f5dBf07C1191d'], { v3: true, }), - hemi: aaveExports('', undefined, undefined, ['0xfBF6Aab10f696F3BA098BBE4EA9CF2503FC0f358'], { v3: true, }) -} \ No newline at end of file diff --git a/projects/lendexe/index.js b/projects/lendexe/index.js deleted file mode 100644 index b4b942c905f..00000000000 --- a/projects/lendexe/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports } = require('../helper/compound') -const { nullAddress } = require('../helper/tokenMapping') -const { lendingMarket } = require("../helper/methodologies"); - - -const { tvl, borrowed } = compoundExports('0x2c7b7A776b5c3517B77D05B9313f4699Fb38a8d3','0x36e66547e27a5953f6ca3d46cc2663d9d6bdc59e', nullAddress, { blacklistedTokens: ['0x53011e93f21ec7a74cdfbb7e6548f1abce306833'] }) - -const mapping = { - [ADDRESSES.ethereum.USDC]: 6, - [ADDRESSES.ethereum.USDT]: 6, - [ADDRESSES.ethereum.WBTC]: 8, -} -async function borrowedWrapped(api) { - const borrowedRes = await borrowed(api) - Object.entries(mapping).forEach(([t, decimals]) => { - const regex = new RegExp(t, 'gi') - Object.keys(borrowedRes).forEach(key => { - if (regex.test(key)) { - borrowedRes[key] /= 10 ** (18 - decimals) - } - }) - }) - return borrowedRes -} - -module.exports = { - methodology: `${lendingMarket}. TVL is calculated by getting the market addresses from comptroller and calling the getCash() on-chain method to get the amount of tokens locked in each of these addresses, then we get the price of each token from coingecko.`, - ethereum: { - tvl, - borrowed: borrowedWrapped, - } -} \ No newline at end of file diff --git a/projects/lendflare/convexBooster.js b/projects/lendflare/convexBooster.js deleted file mode 100644 index f6de4a279c3..00000000000 --- a/projects/lendflare/convexBooster.js +++ /dev/null @@ -1,119 +0,0 @@ -const sdk = require('@defillama/sdk'); -const BN = require("bignumber.js"); - -const CONVEX_BOOSTER_PROXY = `0x4C3c78cEbc9Cc87436dEEd2782998bC002F2B69f`; - -const convexPools = { - // 3pool - 1: { lpToken: "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", virtualBalance: "0x51CeC58171863ea82cE3B99A190f3843FE7AAbF5", coinId: 2, coinName: "tether", decimals: 6 }, - // sbtc - 2: { lpToken: "0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3", virtualBalance: "0x85b7cc4Fd8767651c752D9ea76fC7dd388e391a0", coinId: 1, coinName: "wrapped-bitcoin", decimals: 8 }, - // ren - 3: { lpToken: "0x49849C98ae39Fff122806C06791Fa73784FB3675", virtualBalance: "0x2D3a0EcA75C429b00627af759a14223c34bF910F", coinId: 1, coinName: "wrapped-bitcoin", decimals: 8 }, - // hbtc - 4: { lpToken: "0xb19059ebb43466C323583928285a49f558E572Fd", virtualBalance: "0x99b496D54848f2a98C4aA0B934f23B0f5c298E31", coinId: 1, coinName: "wrapped-bitcoin", decimals: 8 }, - // seth - 5: { lpToken: "0xA3D87FffcE63B53E0d54fAa1cc983B7eB0b74A9c", virtualBalance: "0x247b24e945d604C896165cCb2F15e190560f2133", coinId: 0, coinName: "ethereum", decimals: 18 }, - // steth - 6: { lpToken: "0x06325440D014e39736583c165C2963BA99fAf14E", virtualBalance: "0xc0E4F5758E218762960bca9706fC7b6Cf337E3c2", coinId: 0, coinName: "ethereum", decimals: 18 }, - // ankreth - 7: { lpToken: "0xaA17A236F2bAdc98DDc0Cf999AbB47D47Fc0A6Cf", virtualBalance: "0x86CA9713762c04E10d2E2057952B91917DC650f2", coinId: 0, coinName: "ethereum", decimals: 18 }, - // reth - 8: { lpToken: "0x53a901d48795C58f485cBB38df08FA96a24669D5", virtualBalance: "0xCCBc7Fcc994Db1D8F5FFF17104532c0e0E78b449", coinId: 0, coinName: "ethereum", decimals: 18 }, - // susd - 9: { lpToken: "0xC25a3A3b969415c80451098fa907EC722572917F", virtualBalance: "0x518802D8764c2823610a619bE95BF089AA121BA5", coinId: 2, coinName: "tether", decimals: 6 }, - // mim - 10: { lpToken: "0x5a6A4D54456819380173272A5E8E9B9904BdF41B", virtualBalance: "0xa91d85B2E9fE1F0371559a9a7DcB1BbE1AcF9587", coinId: 3, coinName: "tether", decimals: 6 }, - // frax - 11: { lpToken: "0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B", virtualBalance: "0x86b26838f03C3724cB9a9D4d165df052c401a257", coinId: 3, coinName: "tether", decimals: 6 }, - // musd - 12: { lpToken: "0x1AEf73d49Dedc4b1778d0706583995958Dc862e6", virtualBalance: "0xEAE58fd59225A192eD897C3C8B382727dc322335", coinId: 3, coinName: "tether", decimals: 6 }, - // ust - 13: { lpToken: "0x94e131324b6054c0D789b190b2dAC504e4361b53", virtualBalance: "0x8856738191DcF0B582e491beA99e880aB734F4e6", coinId: 3, coinName: "tether", decimals: 6 }, - // lusd - 14: { lpToken: "0xEd279fDD11cA84bEef15AF5D39BB4d4bEE23F0cA", virtualBalance: "0x2Cb79C6BB40346A08ad7A7baf65a8b4315876E26", coinId: 3, coinName: "tether", decimals: 6 }, - // alUSD - 15: { lpToken: "0x43b4FdFD4Ff969587185cDB6f0BD875c5Fc83f8c", virtualBalance: "0x6F114A680915b3335c65225b7f61e2021419b24B", coinId: 3, coinName: "tether", decimals: 6 }, - // gusd - 16: { lpToken: "0xD2967f45c4f384DEEa880F807Be904762a3DeA07", virtualBalance: "0x0e44e003cA8B7A2dD0742286FC1a3FaD754a5450", coinId: 3, coinName: "tether", decimals: 6 }, - // usdn - 17: { lpToken: "0x4f3E8F405CF5aFC05D68142F3783bDfE13811522", virtualBalance: "0xa16D36ea387AEE0f625425ADa2540D1A95Dc2440", coinId: 3, coinName: "tether", decimals: 6 }, - // usdk - 18: { lpToken: "0x97E2768e8E73511cA874545DC5Ff8067eB19B787", virtualBalance: "0x83Ec519B6121eA1B6ae05177e7e9f9c046A5Fe20", coinId: 3, coinName: "tether", decimals: 6 }, - // busd - 19: { lpToken: "0x4807862AA8b2bF68830e4C8dc86D0e9A998e085a", virtualBalance: "0x8f48eB0d8C298abbc68Be5deCe86c6fAa4e33497", coinId: 3, coinName: "tether", decimals: 6 }, - // husd - 20: { lpToken: "0x5B5CFE992AdAC0C9D48E05854B2d91C73a003858", virtualBalance: "0x7fB09845695F6Bd88f4A0752e6a539a2209B6707", coinId: 3, coinName: "tether", decimals: 6 }, - // rsv - 21: { lpToken: "0xC2Ee6b0334C261ED60C72f6054450b61B8f18E35", virtualBalance: "0x83d6e9bA460130D82194620Ca0b16D025064d139", coinId: 3, coinName: "tether", decimals: 6 }, - // dusd - 22: { lpToken: "0x3a664Ab939FD8482048609f652f9a0B0677337B9", virtualBalance: "0x7538345c421467a2A58Cbe9FA3DfbDEb6Fb2C15a", coinId: 3, coinName: "tether", decimals: 6 }, - // usdp - 23: { lpToken: "0x7Eb40E450b9655f4B3cC4259BCC731c63ff55ae6", virtualBalance: "0xd8252a4EC16de33fAd1C69f2d3E80E9F7b8ceF12", coinId: 3, coinName: "tether", decimals: 6 }, - // obtc - 24: { lpToken: "0x2fE94ea3d5d4a175184081439753DE15AeF9d614", virtualBalance: "0x47A2eec0D7502Ba1FEc0cAe0eeafF64DCf28af60", coinId: 2, coinName: "wrapped-bitcoin", decimals: 8 }, - // bbtc - 25: { lpToken: "0x410e3E86ef427e30B9235497143881f717d93c2A", virtualBalance: "0xE1C0b5302E5a627141746ACB1025c43f9FE87ca8", coinId: 2, coinName: "wrapped-bitcoin", decimals: 8 }, - // tbtc - 26: { lpToken: "0x64eda51d3Ad40D56b9dFc5554E06F94e1Dd786Fd", virtualBalance: "0x1ACc3ffb27c31C541695Ff75b21569CfaeDCA877", coinId: 2, coinName: "wrapped-bitcoin", decimals: 8 }, - // pbtc - 27: { lpToken: "0xDE5331AC4B3630f94853Ff322B66407e0D6331E8", virtualBalance: "0x0D66b49A68AffdDcDaDDdfE06CD6369307B2BA46", coinId: 2, coinName: "wrapped-bitcoin", decimals: 8 } -} - -async function getTotalSupply(pools, chainBlocks) { - const output = (await sdk.api.abi.multiCall({ - block: chainBlocks.ethereum, - chain: "ethereum", - abi: 'erc20:totalSupply', - calls: Object.keys(pools).map((pid, _) => { - return { - target: pools[pid].virtualBalance - } - }) - })).output.map((result, i) => { - for (let pid of Object.keys(pools)) { - if (pools[pid].virtualBalance == result.input.target) { - pools[pid].totalSupply = (new BN(result.output)); - pools[pid].totalSupplyString = result.output; - } - } - }); - - return pools; -} - -async function calculateTokenAmount(pools, chainBlocks) { - for (let pid of Object.keys(pools)) { - await sdk.api.abi.call({ - block: chainBlocks.ethereum, - chain: "ethereum", - abi: 'function calculateTokenAmount(uint256 _pid, uint256 _tokens, int128 _curveCoinId) view returns (uint256)', - target: CONVEX_BOOSTER_PROXY, - params: [pid, pools[pid].totalSupplyString, pools[pid].coinId] - }).then(result => { - pools[pid].calculateTokenAmount = new BN(result.output); - }).catch(error => { - pools[pid].calculateTokenAmount = new BN(0); - }); - } - - return pools; -} - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const pools = await getTotalSupply(convexPools, chainBlocks).then(pools => { - return calculateTokenAmount(pools, chainBlocks); - }); - Object.keys(pools).map((pid, _) => { - if (convexPools[pid].calculateTokenAmount.isGreaterThan(new BN(0))) { - convexPools[pid].calculateTokenAmount = convexPools[pid].calculateTokenAmount.dividedBy(10 ** convexPools[pid].decimals); - } - sdk.util.sumSingleBalance(balances, convexPools[pid].coinName, +convexPools[pid].calculateTokenAmount) - }); - return balances; -} - -module.exports = { - tvl -}; diff --git a/projects/lendflare/index.js b/projects/lendflare/index.js deleted file mode 100644 index 75b8ed05c0f..00000000000 --- a/projects/lendflare/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const convexBooster = require('./convexBooster.js'); -const supplyBooster = require('./supplyBooster.js'); -const sdk = require('@defillama/sdk') - -module.exports = { - ethereum: { - tvl: sdk.util.sumChainTvls([convexBooster.tvl, supplyBooster.tvl]), - } -}; diff --git a/projects/lendflare/supplyBooster.js b/projects/lendflare/supplyBooster.js deleted file mode 100644 index 0a740c56ff3..00000000000 --- a/projects/lendflare/supplyBooster.js +++ /dev/null @@ -1,48 +0,0 @@ -const sdk = require('@defillama/sdk'); -const BN = require("bignumber.js"); - -const supplyPools = [ - // usdc - { virtualBalance: "0x10A377BA353cd480E43800018a27742054904c1a", decimals: 6, coinName: "usd-coin" }, - // dai - { virtualBalance: "0x2FbE41e4861B5d0936AA01bB32bd3402d34f11fA", decimals: 18, coinName: "dai" }, - // wbtc - { virtualBalance: "0xcc29655C9F9A211fb11c25D905306aa93a685ef3", decimals: 8, coinName: "wrapped-bitcoin" }, - // eth - { virtualBalance: "0x6d18E830A938F0eAF206f1BD80b79a851E5f37A3", decimals: 18, coinName: "ethereum" }, -] - -async function getTotalSupply(pools, chainBlocks) { - const output = (await sdk.api.abi.multiCall({ - block: chainBlocks.ethereum, - chain: "ethereum", - abi: 'erc20:totalSupply', - calls: pools.map((pool, i) => { - return { - target: pool.virtualBalance - } - }) - })).output.map((result, i) => { - for (let p of pools) { - if (p.virtualBalance == result.input.target) { - p.totalSupply = (new BN(result.output)); - p.totalSupplyString = p.totalSupply.toString(); - } - } - }); - - return pools; -} - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const pools = await getTotalSupply(supplyPools, chainBlocks); - for (let pool of pools) - sdk.util.sumSingleBalance(balances, pool.coinName, pool.totalSupply/(10 ** pool.decimals)) - - return balances; -} - -module.exports = { - tvl -}; diff --git a/projects/lendhub/abi.json b/projects/lendhub/abi.json deleted file mode 100644 index c27b10309a8..00000000000 --- a/projects/lendhub/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "getAllMarkets": "address[]:getAllMarkets", - "underlying": "address:underlying", - "getCash": "uint256:getCash", - "valtToken": "address:token", - "totalBorrows": "uint256:totalBorrows" -} \ No newline at end of file diff --git a/projects/lendhub/index.js b/projects/lendhub/index.js deleted file mode 100644 index 232c79efc57..00000000000 --- a/projects/lendhub/index.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - timetravel: false, - // hallmarks: [ - // ['2023-01-12', 'Protocol was hacked'], - // ], - heco: { - tvl: () => ({}), - // borrowed: tvl(true), - borrowed: () => 0, - } -}; - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/lendingpond/index.js b/projects/lendingpond/index.js deleted file mode 100644 index 97e97280a13..00000000000 --- a/projects/lendingpond/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { PromisePool } = require('@supercharge/promise-pool') -const { getAddressesUTXOs, getTxsMetadata } = require("../helper/chain/cardano/blockfrost") - -const scriptAddress = "addr1wxwrp3hhg8xdddx7ecg6el2s2dj6h2c5g582yg2yxhupyns8feg4m" - -const tvl = async () => { - - const utxos = await getAddressesUTXOs(scriptAddress) - let totalLovelaceLocked = 0 - - await PromisePool - .for(utxos) - .withConcurrency(10) - .process( async (utxo) => { - - const metadata = await getTxsMetadata(utxo.tx_hash) - totalLovelaceLocked += metadata.reduce((p, c) => { - let v = 0 - if (c.label == 1) { // all loans have label == 1 - v = parseInt(c?.json_metadata?.Listing?.Principal) - } - return p + v - }, 0) - }) - - return { - cardano: totalLovelaceLocked / 1e6, - } -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/lendle-earn/index.js b/projects/lendle-earn/index.js deleted file mode 100644 index 8b87b3df23a..00000000000 --- a/projects/lendle-earn/index.js +++ /dev/null @@ -1,32 +0,0 @@ -async function tvl(api) { - const abis = { - want: "function want() view returns (address)", - balance: "function balance() external view returns (uint256)", - }; - - const vaults = [ - "0x25ddfB3831b5a1099932E4cA9CD2Ea9cB6665F1B", - "0x32294e130181F31c6286B4B5AaA3697f538C3Bd7", - "0x3ad7d10085C7243a19c6589056A58EB94334CB52", - "0x43703b0FD253e1172A0F18e65d097bd7b120B7bf", - "0x4606E0fED3Daa8D175274103e37C070dA70C53F4", - "0x4fD28eabb44474aF1da36c7c4ea5441616D98076", - "0xB2Be0a666d4c34ded06242178E8138F7CEc72100", - "0xB761673116D7B1840CB94bbF7Adb673b4F4a18b4", - "0xD1d9C7be232920BFD971b2F3B83b1C5EFe4B15d8", - "0xD1FC69F097141189A4d46ee84E11992e6be87Cae", - "0xeB244CC3Fc3C3ca391D453def40CF78eaf3B7373", - ]; - - const wants = await api.multiCall({ abi: abis.want, calls: vaults }); - const balances = await api.multiCall({ abi: abis.balance, calls: vaults }); - vaults.forEach((v, i) => { - api.add(wants[i], balances[i]); - }); -} - -module.exports = { - doublecounted: true, - methodology: 'TVL accounts for all assets deposited into the Vaults.', - mantle: { tvl }, -}; \ No newline at end of file diff --git a/projects/lendle-isolated-markets/index.js b/projects/lendle-isolated-markets/index.js deleted file mode 100644 index 5281395cfe4..00000000000 --- a/projects/lendle-isolated-markets/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const { staking } = require("../helper/staking"); - -const StakingContract = "0x5C75A733656c3E42E44AFFf1aCa1913611F49230"; -const TokenContract = "0x25356aeca4210eF7553140edb9b8026089E49396"; - -const DATA_PROVIDERS_CONTRACTS = [ - "0xaDB43eF86581a517CED608839d4D24E49d41187c", - "0x7E1E69937a38ec0EAb971CD1636943e534C657Ef", - "0x6B99F330Bd277e17a092922Fb8036c9B000F9365", - "0xc156E06e7e94a31250eF2DDeEe338f1E36C3b956", - "0x7e31765855d6251837122e042c02518F4e1Bc3f3", - "0xBE584AfCcAd0882d24F6cF2c27BC997b49A6c367", - "0x60b6642207a157455746cFaF7273B4b2691e5416", - "0x84a04bca517C77d06D2A01b44431Ccff114e82a4", - "0xAba0f27208F05f5063887767c547e12B1235Dc41", - "0xa53480df32d65B76cD6fCb2399786d0CFf65FD54", - "0x79Ef83f6635Ea6BdFB0B3F7022f783ad97019F31", - "0x69d09E0051669072914eC0bB9308aC670e214bD9", - "0x40025ad3f5438aC971e61Ba97F9Ab1B8b818900d" -]; - -const abi = { - getAllReservesTokens: "function getAllReservesTokens() view returns (tuple(string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", -}; - -async function tvl(api) { - const allReservesTokens = await api.multiCall({ - abi: abi.getAllReservesTokens, - calls: DATA_PROVIDERS_CONTRACTS - }); - - const collateralAddresses = allReservesTokens.map(i => i[0].tokenAddress); - const debtAddresses = allReservesTokens.map(i => i[1].tokenAddress); - - const debtReserveDatas = await api.multiCall({ - abi: abi.getReserveData, - calls: DATA_PROVIDERS_CONTRACTS.map((target, i) => ({ target, params: debtAddresses[i] })), - }); - - const collateralReserveDatas = await api.multiCall({ - abi: abi.getReserveData, - calls: DATA_PROVIDERS_CONTRACTS.map((target, i) => ({ target, params: collateralAddresses[i] })), - }); - - api.add(collateralAddresses, collateralReserveDatas.map(i => i.totalAToken)); - api.add(debtAddresses, debtReserveDatas.map(i => i.totalAToken)); - - debtReserveDatas.forEach((debtReserveData, i) => { - const totalStableDebt = +debtReserveData.totalStableDebt || 0; - const totalVariableDebt = +debtReserveData.totalVariableDebt || 0; - const totalBorrowed = totalStableDebt + totalVariableDebt; - - api.add(debtAddresses[i], -totalBorrowed); - }); - - return api.getBalances(); -} - -async function borrowed(api) { - const allReservesTokens = await api.multiCall({ - abi: abi.getAllReservesTokens, - calls: DATA_PROVIDERS_CONTRACTS - }); - - const debtAddresses = allReservesTokens.map(i => i[1].tokenAddress); - - // Get reserve data for this configurator (the configurator address is the reserve) - const debtReserveDatas = await api.multiCall({ - abi: abi.getReserveData, - calls: DATA_PROVIDERS_CONTRACTS.map((target, i) => ({ target, params: debtAddresses[i] })), - }); - - debtReserveDatas.forEach((debtReserveData, i) => { - const totalStableDebt = +debtReserveData.totalStableDebt || 0; - const totalVariableDebt = +debtReserveData.totalVariableDebt || 0; - const totalBorrowed = totalStableDebt + totalVariableDebt; - - api.add(debtAddresses[i], totalBorrowed); - }); - - return api.getBalances(); -} - -module.exports = { - methodology: 'TVL accounts for all assets deposited into the Vaults. Borrowed amounts are calculated as the total amount of tokens borrowed from the lending pools.', - mantle: { - tvl, - borrowed, - staking: staking(StakingContract, TokenContract) - }, -}; diff --git a/projects/lendle-vault-allocator/index.js b/projects/lendle-vault-allocator/index.js deleted file mode 100644 index e1e94068ff8..00000000000 --- a/projects/lendle-vault-allocator/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumERC4626VaultsExport2 } = require('../helper/erc4626') - -const vaults = [ - "0xE12EED61E7cC36E4CF3304B8220b433f1fD6e254", - "0x5A285484126D4e1985AC2cE0E1869D6384027727", - "0xf36a57369362eB1553f24C8ad50873723E6e1173" -]; - -module.exports = { - doublecounted: true, - methodology: 'TVL accounts for all assets deposited into the Vaults.', - mantle: { tvl: sumERC4626VaultsExport2({ vaults }) }, -}; \ No newline at end of file diff --git a/projects/lendle/index.js b/projects/lendle/index.js deleted file mode 100644 index d332dc1e495..00000000000 --- a/projects/lendle/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { aaveV2Export } = require("../helper/aave"); -const { staking } = require("../helper/staking"); - -const LPConfiguratorContract = "0x30D990834539E1CE8Be816631b73a534e5044856"; -const StakingContract = "0x5C75A733656c3E42E44AFFf1aCa1913611F49230"; -const TokenContract = "0x25356aeca4210eF7553140edb9b8026089E49396"; - -module.exports = { - mantle: { - ...aaveV2Export(LPConfiguratorContract, { - fromBlock: 56556, - }), - staking: staking(StakingContract, TokenContract), - }, -}; diff --git a/projects/lendoraprotocol/index.js b/projects/lendoraprotocol/index.js deleted file mode 100644 index 22078344ca9..00000000000 --- a/projects/lendoraprotocol/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const { staking } = require('../helper/staking') - -module.exports = { - scroll: compoundExports2({ - comptroller: '0xA27CDE1F3dcaaF653624049Fc3b1a720eC1D4e91', - cether: '0xBC7fA7C2dF265d073Be6D1c88468AEB5c06ba07c', - }), -}; - - -module.exports.deadFrom = '2023-12-04', - -module.exports.scroll.staking = staking( - ['0xca4fb5541D0f2899549e5f454155E1B34acc9379', '0x578E4f84663260e5C5c64d5310Dd76aA3CEC633c'], - '0x3e6c99915803631D200441CdF6D84786912b0871', - 'scroll' -) - -module.exports.scroll.borrowed = () => ({}) // bad debt diff --git a/projects/lenlen/index.js b/projects/lenlen/index.js deleted file mode 100644 index 93fd933f3ca..00000000000 --- a/projects/lenlen/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { compoundV3Exports } = require('../helper/compoundV3') - -const markets = [ - "0xc9C1B486bB027cD7023019ADA41F17109eE6c722", // USDT Market -] - -const collaterals = [ - ADDRESSES.vision.USDT, -] - -module.exports = compoundV3Exports({ - vision: { - markets, collaterals, - } -}) \ No newline at end of file diff --git a/projects/lens/index.js b/projects/lens/index.js deleted file mode 100644 index 921136ef62f..00000000000 --- a/projects/lens/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 232, }), - }, -} diff --git a/projects/leonicornswap/index.js b/projects/leonicornswap/index.js deleted file mode 100644 index 98789412ddf..00000000000 --- a/projects/leonicornswap/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { getUniTVL } = require("../helper/unknownTokens"); - -const leos = "0x2c8368f8F474Ed9aF49b87eAc77061BEb986c2f1"; -const leon = "0x27E873bee690C8E161813DE3566E9E18a64b0381"; -const factory = "0xEB10f4Fe2A57383215646b4aC0Da70F8EDc69D4F"; -const masterchef = "0x72F8fE2489A4d480957d5dF9924166e7a8DDaBBf"; - -async function staking(timestamp, block, chainBlocks) { - let balances = {}; - let stakingBalance = (await sdk.api.abi.multiCall({ - calls: [ - { - target: leos, - params: masterchef - }, - { - target: leon, - params: masterchef - } - ], - abi: "erc20:balanceOf", - block: chainBlocks.bsc, - chain: "bsc" - })).output; - stakingBalance.forEach(p => { - sdk.util.sumSingleBalance(balances, `bsc:${p.input.target}`, p.output); - }) - return balances; -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), - staking - }, -} \ No newline at end of file diff --git a/projects/lessgas/abi.json b/projects/lessgas/abi.json deleted file mode 100644 index 8099a753055..00000000000 --- a/projects/lessgas/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "totalSupply": "uint256:totalSupply" -} diff --git a/projects/lessgas/index.js b/projects/lessgas/index.js deleted file mode 100644 index 60ccf723eb0..00000000000 --- a/projects/lessgas/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getConfig } = require('../helper/cache') -const HOST = 'https://api2.lessgas.xyz' - -const staking = async (api) => { - let { data: { result } } = await getConfig('lessgas', `${HOST}/llama/staking`) - const tokensAndOwners = result.map(i => [i[1], i[0]]) - return api.sumTokens({ tokensAndOwners }) -} - -module.exports = { - methodology: "Get the amount of tokens in lessgas platform", - map: { - tvl: () => ({}), - staking, - } -}; diff --git a/projects/letsfil/index.js b/projects/letsfil/index.js deleted file mode 100644 index 56818d03074..00000000000 --- a/projects/letsfil/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const sdk = require('@defillama/sdk'); -const ADDRESSES = require('../helper/coreAssets.json') -const LETSFIL_CONTRACT = "0xeD02FD25CA54e06dE121BFD36764C9f65CB6A183"; - - -async function tvl(api) { - - const collateralBalance = await api.call({ - abi: 'function getTvl() external view returns (uint256)', - target: LETSFIL_CONTRACT, - }); - - // await sdk.util.sumSingleBalance(balances, LETSFIL_CONTRACT, collateralBalance, api.chain) - // return balances; - - api.add(ADDRESSES.null,collateralBalance) -} - - - -module.exports = { - timetravel: false, - methodology: 'counts the number of pledge filecoins in the letsfil contract', - filecoin: { - tvl - } -}; diff --git a/projects/levana/index.js b/projects/levana/index.js deleted file mode 100644 index c9bcacd6794..00000000000 --- a/projects/levana/index.js +++ /dev/null @@ -1,83 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') -const { sumTokens } = require('../helper/sumTokens') - -// Blacklist suspicious tokens -const blacklistedTokens = [ - 'ibc:FBB3FEF80ED2344D821D4F95C31DBFD33E4E31D5324CAD94EF756E67B749F668' // yieldeth-wei - is returing the wrong price: price: 155633670 -] - -async function tvl(api) { - const { chain } = api - const { factory } = config[chain] - // Get a list of marketIds from the factory contract - // Iterate over the markets and request the balance of each market's collateral token - const marketIds = await getMarketIds(chain, factory) - const _getMarketAddr = (marketId) => getMarketAddr(chain, factory, marketId) - - const result = await sumTokens({ - chain, - owners: await Promise.all(marketIds.map(_getMarketAddr)), - blacklistedTokens - }) - - // Filter out the blacklisted token from the results - if (result['ibc:FBB3FEF80ED2344D821D4F95C31DBFD33E4E31D5324CAD94EF756E67B749F668']) { - delete result['ibc:FBB3FEF80ED2344D821D4F95C31DBFD33E4E31D5324CAD94EF756E67B749F668'] - } - - return result -} - -async function getMarketIds(chain, factory) { - const market_ids = []; - - // eslint-disable-next-line no-constant-condition - while(true) { - const resp = await queryContract({ - contract: factory, - chain: chain, - data: { markets: { - start_after: market_ids.length ? market_ids[market_ids.length - 1] : undefined, - } } - }); - - if(!resp || !resp.markets) { - throw new Error(`could not get markets on chain ${chain}`); - } - - if(!resp.markets.length) { - break; - } - - market_ids.push(...resp.markets); - } - - return market_ids -} - -async function getMarketAddr(chain, factory, marketId) { - const marketInfo = await queryContract({ - contract: factory, - chain: chain, - data: { market_info: { market_id: marketId } } - }); - - return marketInfo.market_addr; -} - -module.exports = { - timetravel: false, - methodology: "TVL is the sum of deposits into the Liquidity pools combined with the sum of trader collateral for open and pending positions", -} - -const config = { - osmosis: { factory: 'osmo1ssw6x553kzqher0earlkwlxasfm2stnl3ms3ma2zz4tnajxyyaaqlucd45' }, - sei: { factory: 'sei18rdj3asllguwr6lnyu2sw8p8nut0shuj3sme27ndvvw4gakjnjqqper95h' }, - injective: { factory: 'inj1vdu3s39dl8t5l88tyqwuhzklsx9587adv8cnn9' }, - neutron: { factory: 'neutron1an8ls6d57c4qcvjq0jmm27jtrpk65twewfjqzdn7annefv7gadqsjs7uc3' } -} - - -for(const chain of Object.keys(config)) { - module.exports[chain] = { tvl } -} diff --git a/projects/level-money/index.js b/projects/level-money/index.js deleted file mode 100644 index fa021573e06..00000000000 --- a/projects/level-money/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const AUSDC = '0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c'; -const AUSDT = '0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a'; - -const LEVEL_WRAPPED_AUSDC = '0x78c6B27Be6DB520d332b1b44323F94bC831F5e33'; -const LEVEL_WRAPPED_AUSDT = '0xb723377679b807370Ae8615ae3E76F6D1E75a5F2'; - -const LEVEL_STAKING_CONTRACT = '0x7FDA203f6F77545548E984133be62693bCD61497'; -const LEVEL_RESERVE_MANAGERS = ['0x834d9c7688ca1c10479931de906bcc44879a0446', '0x8e7046e27d14d09bdacde9260ff7c8c2be68a41f', '0x7B2c2C905184CEf1FABe920D4CbEA525acAa6f14', '0x21c937d436f2d86859ce60311290a8072368932d', '0x834D9c7688ca1C10479931dE906bCC44879A0446']; -const LEVEL_WRAPPED_TOKENS = [LEVEL_WRAPPED_AUSDC, LEVEL_WRAPPED_AUSDT]; - -const LEVEL_USD_POINTS_FARM = '0x80B73eF4534FE245300017A5197451973559c00f'; - -const LEVEL_USD_USDC_CURVE_LP_TOKEN = '0x1220868672d5b10f3e1cb9ab519e4d0b08545ea4'; - -const TOKEN_CONTRACTS = [ - ADDRESSES.ethereum.USDT, // USDT - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.SDAI, // sDAI - ADDRESSES.ethereum.sUSDe, // sUSD - ADDRESSES.ethereum.USDe, // USDe - ADDRESSES.ethereum.FRAX, // FRAX - "0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776", // stUSD - "0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32", // sFRAX - "0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812", // wUSDM - ADDRESSES.ethereum.USD0, // USD0 - "0x35D8949372D46B7a3D5A56006AE77B215fc69bC0", // USD0++ - ADDRESSES.ethereum.deUSD, // deUSD - "0x5C5b196aBE0d54485975D1Ec29617D42D9198326", // stdeUSD - AUSDC, - AUSDT, - "0x437cc33344a0B27A429f795ff6B469C72698B291", // smart M - "0x8a60e489004ca22d775c5f2c657598278d17d9c2", // USDa (Avalon) - "0x2b66aade1e9c062ff411bd47c44e0ad696d43bd9", // staked USDa (Avalon) - "0x4956b52aE2fF65D74CA2d61207523288e4528f96", // RLP - "0x66a1E37c9b0eAddca17d3662D6c05F4DECf3e110", // USR - "0xfd03723a9a3abe0562451496a9a394d2c4bad4ab", // DYAD, - "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB", // steakUSDC -]; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: [LEVEL_STAKING_CONTRACT, ...LEVEL_RESERVE_MANAGERS, ...LEVEL_WRAPPED_TOKENS], - tokens: TOKEN_CONTRACTS, - }), - pool2: sumTokensExport({ owner: LEVEL_USD_POINTS_FARM, tokens: [LEVEL_USD_USDC_CURVE_LP_TOKEN] }) - } -}; diff --git a/projects/level/index.js b/projects/level/index.js deleted file mode 100644 index 179d2c00f79..00000000000 --- a/projects/level/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { pool2 } = require("../helper/pool2"); - -const Contracts = { - Pool: "0xA5aBFB56a78D2BD4689b25B8A77fd49Bb0675874", - Chef: "0x5ae081b6647aef897dec738642089d4bda93c0e7", - Tokens: { - BTC: ADDRESSES.bsc.BTCB, - ETH: ADDRESSES.bsc.ETH, - WBNB: ADDRESSES.bsc.WBNB, - CAKE: "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - BUSD: ADDRESSES.bsc.BUSD, - USDT: ADDRESSES.bsc.USDT - }, - LVL_BNB_LP: "0x70f16782010fa7ddf032a6aacdeed05ac6b0bc85" -} - -const ContractsArb = { - Pool: "0x32B7bF19cb8b95C27E644183837813d4b595dcc6", - Chef: "0x0180dee5Df18eBF76642e50FaaEF426f7b2874f7", - Tokens: { - ETH: ADDRESSES.arbitrum.WETH, - USDT: ADDRESSES.arbitrum.USDT, - USDC: ADDRESSES.arbitrum.USDC_CIRCLE, - BTC: ADDRESSES.arbitrum.WBTC, - ARB: ADDRESSES.arbitrum.ARB - } -} -async function arbtvl(api) { - return sumTokens2({ api, owner: ContractsArb.Pool, tokens: Object.values(ContractsArb.Tokens)}) -} -async function tvl(api) { - return sumTokens2({ api, owner: Contracts.Pool, tokens: Object.values(Contracts.Tokens) }) -} - -module.exports = { - bsc: { - tvl, - pool2: pool2(Contracts.Chef, Contracts.LVL_BNB_LP) - }, - arbitrum: { tvl: arbtvl }, - // hallmarks: [ - // ['2023-05-01', 'Referral contract exploited'], - // ], -}; diff --git a/projects/levinswap/index.js b/projects/levinswap/index.js deleted file mode 100644 index 38f11885441..00000000000 --- a/projects/levinswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const levin = "0x1698cD22278ef6E7c0DF45a8dEA72EDbeA9E42aa"; -const xlevin = "0xafa57Fb9d8D63Ff8124E17c1495C73bc3a7678D0"; - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'xdai': '0x965769C9CeA8A7667246058504dcdcDb1E2975A5' -}, { staking: { xdai: [xlevin, levin] }, }) \ No newline at end of file diff --git a/projects/levva/config.js b/projects/levva/config.js deleted file mode 100644 index 8eadea8f759..00000000000 --- a/projects/levva/config.js +++ /dev/null @@ -1,86 +0,0 @@ -module.exports = { - arbitrum: { - factories: [ - { - factory: "0x1e36749E00229759dca262cB25Ad8d9B21bEB3F5", - fromBlock: 144171029, - version: "v1", - }, - { - factory: "0x537A3417Fe03e28F4E9640Bece70887a6938ff92", - fromBlock: 208756175, - version: "v1.5", - }, - { - factory: "0x4a805A6dbaCF824D5A39b9f3559aeFb831C1df95", - fromBlock: 220673210, - version: "v1.5", - }, - ], - contractRegistries: [ - { - fromBlock: 257563019, - address: "0x7a923e412B934ceC16042AA28244eE4881f9B722", - } - ], - levvaV2Factories:[], - }, - blast: { - factories: [ - { - factory: "0x1768Faee0A63927FeB81100046f5D63BfE0f08dB", - fromBlock: 501400, - version: "v1.5", - }, - ], - contractRegistries:[], - levvaV2Factories:[], - }, - ethereum: { - factories: [ - { - factory: "0xF8D88A292B0afa85E5Cf0d1195d0D3728Cfd7070", - fromBlock: 19824726, - version: "v1.5", - }, - { - factory: "0xc1aC50D46783387F4236a8364435b5CCEaDd9fe2", - fromBlock: 20725907, - version: "v1.5" - } - ], - contractRegistries: [ - { - fromBlock: 21027804, - address: "0x8Dbc09C0BD6D99AF01B8254432A13E6FF1b214Bd", - } - ], - levvaV2Factories:[ - { - factory: "0x3e104BB4c3777e1Ca3Ab25fF5e9c801Ff9f99559", - fromBlock: 23017890 - } - ], - }, - linea: { - factories: [ - { - factory: "0xF97305253804e7A7796f79aB4f8c8908492A8402", - fromBlock: 9312068, - version: "v1.5" - } - ], - contractRegistries:[], - levvaV2Factories:[], - }, - base: { - factories: [], - contractRegistries:[], - levvaV2Factories:[ - { - factory: "0x391685807Cf005848A0711Deb9Db74209E59662f", - fromBlock: 35095203 - } - ], - } -}; diff --git a/projects/levva/index.js b/projects/levva/index.js deleted file mode 100644 index bdd8a70ebce..00000000000 --- a/projects/levva/index.js +++ /dev/null @@ -1,108 +0,0 @@ -const { getLogs2 } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const config = require("./config"); - -module.exports = { - methodology: - "Counts the number of base and quote tokens in every marginly pool and underlying tokens in every levva vaults", -}; - -Object.keys(config).forEach((chain) => { - const { factories, contractRegistries, levvaV2Factories } = config[chain]; - - module.exports[chain] = { - tvl: async (api) => { - await getPoolTvl(api, factories); - await getVaultTvl(api, contractRegistries); - await getVaultV2Tvl(api, levvaV2Factories); - }, - }; -}); - - -async function getPoolTvl(api, factories){ - const ownerTokens = []; - - for (const { factory, fromBlock, version } of factories) { - let logs; - if (version === "v1") { - // v1.0 contract - logs = await getLogs2({ - api, - target: factory, - eventAbi: - "event PoolCreated(address indexed quoteToken, address indexed baseToken, address uniswapPool, bool quoteTokenIsToken0, address pool)", - fromBlock, - }); - } else { - // v1.5 contract - logs = await getLogs2({ - api, - target: factory, - eventAbi: - "event PoolCreated(address indexed quoteToken, address indexed baseToken, address indexed priceOracle, uint32 defaultSwapCallData, address pool)", - fromBlock, - }); - } - - logs.forEach((i) => - ownerTokens.push([[i.quoteToken, i.baseToken], i.pool]) - ); - } - - await sumTokens2({ api, ownerTokens }); -} - -async function getVaultTvl(api, contractRegistries) { - const LEVVA_VAULT_CONTRACT_TYPE = 2000; - - const vaults = []; - // Retrieve logs from each contract registry to identify vaults - for (const { address, fromBlock } of contractRegistries) { - const logs = await getLogs2({ - api, - target: address, - eventAbi: "event ContractRegistered(uint64 contractType, address contractAddress, bytes data)", - fromBlock, - }); - - // Filter logs to find levva vault contracts - logs.forEach((l) => { - if (Number.parseInt(l.contractType) === LEVVA_VAULT_CONTRACT_TYPE) - vaults.push(l.contractAddress); - }); - } - - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) - const marginlyLent = await api.multiCall({ abi: 'function getLentAmount(uint8 protocol) view returns (uint256)', calls: vaults.map((i) => ({ target: i, params: 0})) }) - const totalLent = await api.multiCall({ abi: 'uint256:getTotalLent', calls: vaults }) - // Add total lent amount to balances - api.add(tokens, totalLent) - // Subtract marginlyLent from balances since it is counted as marginly pool TVL - api.add(tokens, marginlyLent.map(i => i * -1)) - - // Add free amount in ERC4626 - await api.erc4626Sum({ calls: vaults, tokenAbi: 'asset', balanceAbi: 'getFreeAmount' }); -} - -async function getVaultV2Tvl(api, levvaV2Factories){ - const vaults = []; - // Retrieve logs from each levva v2 factory - for (const { factory, fromBlock } of levvaV2Factories) { - const logs = await getLogs2({ - api, - target: factory, - topic: "ContractRegistered", - eventAbi: "event NewVaultDeployed(address asset, address indexed vault, address indexed withdrawalQueue, string lpName)", - onlyArgs: true, - fromBlock, - }); - - logs.forEach((l) => { - vaults.push(l.vault); - }); - } - - // totalAssets of every vault - await api.erc4626Sum({ calls: vaults, tokenAbi: 'asset', balanceAbi: 'totalAssets' }); -} diff --git a/projects/levvy-fi-tokens/index.js b/projects/levvy-fi-tokens/index.js deleted file mode 100644 index 132b87d883d..00000000000 --- a/projects/levvy-fi-tokens/index.js +++ /dev/null @@ -1,27 +0,0 @@ -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://8080-truthful-birthday-xc2vhr.us1.demeter.run/api/v1/token/platform/stats", - '' - ); - return { - cardano: data.totalValueLocked/1e6, - }; - }, - borrowed: async () => { - const data = await post( - "https://8080-truthful-birthday-xc2vhr.us1.demeter.run/api/v1/token/platform/stats", - '' - ); - return { - cardano: data.totalValueBorrowed/1e6, - }; - }, - }, -}; diff --git a/projects/levvy-fi/index.js b/projects/levvy-fi/index.js deleted file mode 100644 index 9dfaba25f1c..00000000000 --- a/projects/levvy-fi/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { post } = require('../helper/http') - -module.exports = { - misrepresentedTokens: true, - cardano: { - tvl: async () => { - const data = await post('https://8080-truthful-birthday-xc2vhr.us1.demeter.run/api/v1/nft/platform/stats', '') - return { - cardano: data.totalValueLocked/1e6, - } - }, - borrowed: async () => { - const data = await post('https://8080-truthful-birthday-xc2vhr.us1.demeter.run/api/v1/nft/platform/stats', '') - return { - cardano: data.totalValueBorrowed/1e6, - } - } - }, -} diff --git a/projects/lexer-markets/index.js b/projects/lexer-markets/index.js deleted file mode 100644 index 17e97405ff9..00000000000 --- a/projects/lexer-markets/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - arbitrum: { - tvl: gmxExports({ vault: "0x355a5a46b27d849d75f65e7766dc1f00faa0be88", }) - }, -}; \ No newline at end of file diff --git a/projects/lfgswap-arbitrum/index.js b/projects/lfgswap-arbitrum/index.js deleted file mode 100644 index da01c748564..00000000000 --- a/projects/lfgswap-arbitrum/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xE5552e0318531F9Ec585c83bDc8956C08Bf74b71', - }) - } -} \ No newline at end of file diff --git a/projects/lfgswap-core/index.js b/projects/lfgswap-core/index.js deleted file mode 100644 index fcc5274e5d8..00000000000 --- a/projects/lfgswap-core/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -const { stakings } = require("../helper/staking"); - -const stakingContracts = [ - "0x00801Df22566E6F1b7Eb2DCaa2c794ca6daD3D0A", - "0xcF17abb2CeA7e96eD1E35E0F3FAC919cFECad2F3", -]; - -const lfgToken = "0xf7a0b80681ec935d6dd9f3af9826e68b99897d6d"; - - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xA1ADD165AED06D26fC1110b153ae17a5A5ae389e', - }), - //staking: stakings(stakingContracts, lfgToken, 'core', undefined, 18) - } -}; \ No newline at end of file diff --git a/projects/lfgswap-xlayer/index.js b/projects/lfgswap-xlayer/index.js deleted file mode 100644 index c01edb6ea1e..00000000000 --- a/projects/lfgswap-xlayer/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('xlayer', '0x0F6DcC7a1B4665b93f1c639527336540B2076449') \ No newline at end of file diff --git a/projects/lfgswap/index.js b/projects/lfgswap/index.js deleted file mode 100644 index c7c55b6ae38..00000000000 --- a/projects/lfgswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xf66cef53c518659bFA0A9a4Aa07445AF08bf9B3a', - }) - } -} \ No newline at end of file diff --git a/projects/libero/index.js b/projects/libero/index.js deleted file mode 100644 index 6c3850f7667..00000000000 --- a/projects/libero/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const owner = "0xb2b11D8DA4cd9c20410de6EB55BAD2734983040E"; -const target = "0x0DFCb45EAE071B3b846E220560Bbcdd958414d78"; -const { staking } = require('../helper/staking') - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking(owner, target), - }, - methodology: "We count all LIBERO deposited into LIBERO BANK, which has been locked by users in exchange for xLIBERO", -}; \ No newline at end of file diff --git a/projects/libre-capital/index.js b/projects/libre-capital/index.js deleted file mode 100644 index 8b850032ca9..00000000000 --- a/projects/libre-capital/index.js +++ /dev/null @@ -1,853 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { queryContract: queryContractCosmos } = require("../helper/chain/cosmos"); -const sui = require("../helper/chain/sui"); -const { call } = require('../helper/chain/near') -const { Connection, PublicKey } = require('@solana/web3.js'); -const { getResource } = require("../helper/chain/aptos"); -const { getTokensMinted } = require("../helper/chain/cardano/blockfrost"); -const { getHederaTokenSupply } = require("../helper/chain/hedera/hederaTokenSupply"); - -const NAV_CONTRACT = "0x0f29d042bb26a200b2a507b752e51dbbc05bf2f6"; -const NAV_ABI = "function getLatestNAV(bytes32 _instrumentId) view returns (uint256 navPerShare, string legalDocumentCID, uint256 timestamp)" - - -const RECEIPT_TOKENS = { - ethereum: { - UMA: { - address: '0xcf2Ca1B21e6f5dA7A2744f89667dE4E450791C79', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '0xcc777c52ee9Ee5A57965a8E56F06211Fad34Fb3B', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - BHMB: { - address: '0x1b62F1B8b04736e8F9ECc8eEaE8B7D5957c74d5d', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - BHMC: { - address: '0xC1Cd4CCd9E74be61EDdd5C06f962657Bd5D57aF3', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: '0xe5631cCF95350948Ba2D4d8c815c05AFBfb47A9F', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - } - }, - polygon: { - UMA: { - address: '0xcf2Ca1B21e6f5dA7A2744f89667dE4E450791C79', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '0xcc777c52ee9Ee5A57965a8E56F06211Fad34Fb3B', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - BHMB: { - address: '0x1b62F1B8b04736e8F9ECc8eEaE8B7D5957c74d5d', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - BHMC: { - address: '0xC1Cd4CCd9E74be61EDdd5C06f962657Bd5D57aF3', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: '0xe5631cCF95350948Ba2D4d8c815c05AFBfb47A9F', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - } - }, - avalanche: { - UMA: { - address: '0xcf2Ca1B21e6f5dA7A2744f89667dE4E450791C79', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '0xcc777c52ee9Ee5A57965a8E56F06211Fad34Fb3B', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: '0xe5631cCF95350948Ba2D4d8c815c05AFBfb47A9F', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - }, - APCA: { - address: '0x1b62F1B8b04736e8F9ECc8eEaE8B7D5957c74d5d', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636653765336666346534363764313238323964396366340000000000000000", - fundName:'Libre SAF VCC - Access Private Credit Feeder' - }, - LDCFA: { - address: '0xC1Cd4CCd9E74be61EDdd5C06f962657Bd5D57aF3', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'Libre SAF VCC - Laser Digital Carry Fund A' - }, - LDCFB: { - address: '0xbee4274F1c5EE0B30fC5AAa7842A434C35BF6f7b', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'Libre SAF VCC - Laser Digital Carry Fund B' - }, - }, - injective: { - UMA: { - address: 'inj1eh6h6vllrvtl6qyq77cv5uwy0hw6e6d8jy4pxy', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: 'inj14h6vrgxfshwp30tjne6xw74la6730mf7wy2j3n', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - }, - APCA: { - address: 'inj1f5zrhkq02fahllqf6g2e37d4aeqfsp63z74t4l', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636653765336666346534363764313238323964396366340000000000000000", - fundName: 'Libre SAF VCC - Access Private Credit Feeder' - }, - LDCFA: { - address: 'inj1qrmw646zfqlq9xxqd5zrvw4yqevxah263l4z27', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3637313739666237366165623037313161373136386634300000000000000000", - fundName: 'Libre SAF VCC - Laser Digital Carry Fund A' - }, - LDCFB: { - address: 'inj1kxucwmm5wc640xl0vswf04a0naxm0m9anmzc76', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3637313761303239366165623037313161373136386634310000000000000000", - fundName: 'Libre SAF VCC - Laser Digital Carry Fund B' - } - }, - sui: { - UMA: { - address: '0xf98b6567fbd8e10403a05c4c3ac2a2c384b8f7cd7430756d23b0021ae28d1398', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '0x5cc264ed730baef1315f36b3ad563798aee6febdcd8bee83f580c0d076e06345', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - LDCFA: { - address: '0xedbdf3711daa627a47c98e17daf0489802d01fcecb0c9b3774e55792db7833e1', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3637313739666237366165623037313161373136386634300000000000000000", - fundName: 'Libre SAF VCC - Laser Digital Carry Fund A' - }, - HLSPC: { - address: '0x8e92364602f481d1824700d220c30dc096008e82fc0353f6f42f7358ed0c3f41', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - } - }, - solana: { - UMA: { - address: '5d3zUSzje2saHwgzwJwFE8SDR8S5sGpE9wHhXdsCfu7j', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '93qLFcpdpMeSdhsw2SnkBehUvMi8UX9idHpV6ZvNuP8e', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - BHMB: { - address: '4VXQrtXmNoRoETY7S6uL8NwwGx15UXJ1FU8Q1wgCHjG6', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - BHMC: { - address: '562Cd8zkXyWJ5ixwY3dKJMRzqToCi2upc12DbyjZ1UwG', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: '2hzQ4sexbsJsSmp1s6gQCKJDmtAx3WnQ3pLZmDJBWpFC', - decimals: 9, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - } - }, - near: { - UMA: { - address: 'libre_instrument_1.near', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: 'libre_instrument_0.near', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - BHMB: { - address: 'libre_instrument_3.near', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - BHMC: { - address: 'libre_instrument_4.near', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: 'libre_instrument_2.near', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - } - }, - aptos: { - UMA: { - address: '0xb78860ec33dd1343a723bbaae7ba9fc858ca59ecb936cab8ab3ee7f35aae7502', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '0xabd58a12ca7f20dd397787bd87b674cc2f8cd7168718d5b7a71daa5d89836079', - decimals: 9, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: '0x7647a37bb1ee1f42953ca4a00f1cf347254d38a2aa31d2e37176bbb94c14cf75', - decimals: 9, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - } - }, - mantra: { - APCA: { - address: 'mantra1vguuxez2h5ekltfj9gjd62fs5k4rl2zy5hfrncasykzw08rezpfsjx4gjx', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636653765336666346534363764313238323964396366340000000000000000", - fundName:'Libre SAF VCC - Access Private Credit Feeder' - }, - LDCFA: { - address: 'mantra1rl8su3hadqqq2v86lscpuklsh2mh84cxqvjdew4jt9yd07dzekyq7vvhrd', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3637313739666237366165623037313161373136386634300000000000000000", - fundName: 'Libre SAF VCC - Laser Digital Carry Fund A' - }, - LDCFB: { - address: 'mantra1vhjnzk9ly03dugffvzfcwgry4dgc8x0sv0nqqtfxj3ajn7rn5ghqjerqcd', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3637313761303239366165623037313161373136386634310000000000000000", - fundName: 'Libre SAF VCC - Laser Digital Carry Fund B' - } - }, - imx: { - UMA: { - address: '0xcf2Ca1B21e6f5dA7A2744f89667dE4E450791C79', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '0x8b37F32749CF339f39bCf5cfF2c880D342ddF64B', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName:' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - APCA: { - address: '0x1b62F1B8b04736e8F9ECc8eEaE8B7D5957c74d5d', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636653765336666346534363764313238323964396366340000000000000000", - fundName:'Libre SAF VCC - Access Private Credit Feeder' - } - }, - hedera: { - UMA: { - address: '0.0.9263363', - decimals: 8, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '0.0.9265281', - decimals: 8, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: '0.0.9265299', - decimals: 8, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - }, - APCA: { - address: '0.0.9265301', - decimals: 8, - underlying: 'security-token', - instrumentId:"0x3636653765336666346534363764313238323964396366340000000000000000", - fundName:'Libre SAF VCC - Access Private Credit Feeder' - }, - LDCFA: { - address: '0.0.9265302', - decimals: 8, - underlying: 'security-token', - instrumentId: "0x3637313739666237366165623037313161373136386634300000000000000000", - fundName:'Libre SAF VCC - Laser Digital Carry Fund A' - }, - LDCFB: { - address: '0.0.9265306', - decimals: 8, - underlying: 'security-token', - instrumentId: "0x3637313761303239366165623037313161373136386634310000000000000000", - fundName:'Libre SAF VCC - Laser Digital Carry Fund B' - } - }, - xdc: { - UMA: { - address: '0xcf2Ca1B21e6f5dA7A2744f89667dE4E450791C79', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '0xcc777c52ee9Ee5A57965a8E56F06211Fad34Fb3B', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: '0xe5631cCF95350948Ba2D4d8c815c05AFBfb47A9F', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - }, - APCA: { - address: '0x1b62F1B8b04736e8F9ECc8eEaE8B7D5957c74d5d', - decimals: 18, - underlying: 'security-token', - instrumentId:"0x3636653765336666346534363764313238323964396366340000000000000000", - fundName:'Libre SAF VCC - Access Private Credit Feeder' - }, - LDCFA: { - address: '0xC1Cd4CCd9E74be61EDdd5C06f962657Bd5D57aF3', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'Libre SAF VCC - Laser Digital Carry Fund A' - }, - LDCFB: { - address: '0xbee4274F1c5EE0B30fC5AAa7842A434C35BF6f7b', - decimals: 18, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'Libre SAF VCC - Laser Digital Carry Fund B' - }, - }, - cardano: { - UMA: { - address: '', // just a placeholder until we get the address - decimals: 8, - underlying: 'security-token', - instrumentId: "0x3636313431343936306633613839373337393633303932640000000000000000", - fundName:'USD I Money Market a sub-fund of Libre SAF VCC' - }, - BHMA: { - address: '', - decimals: 8, - underlying: 'security-token', - instrumentId: "0x3636313431343633306633613839373337393633303932630000000000000000", - fundName: ' BH Master Fund Access a sub-fund of Libre SAF VCC' - }, - HLSPC: { - address: '', - decimals: 8, - underlying: 'security-token', - instrumentId:"0x3636633433643637363564313665353638356639333338340000000000000000", - fundName: 'Libre SAF VCC - HL Scope Private Credit Access A' - }, - APCA: { - address: '', - decimals: 8, - underlying: 'security-token', - instrumentId:"0x3636653765336666346534363764313238323964396366340000000000000000", - fundName:'Libre SAF VCC - Access Private Credit Feeder' - }, - LDCFA: { - address: '', - decimals: 8, - underlying: 'security-token', - instrumentId: "0x3637313739666237366165623037313161373136386634300000000000000000", - fundName:'Libre SAF VCC - Laser Digital Carry Fund A' - }, - LDCFB: { - address: '', - decimals: 8, - underlying: 'security-token', - instrumentId: "0x3637313761303239366165623037313161373136386634310000000000000000", - fundName:'Libre SAF VCC - Laser Digital Carry Fund B' - } - }, -} - -async function getFundPrices() { - const priceMap = {}; - const uniqueInstrumentID= [...new Set( - Object.values(RECEIPT_TOKENS).flatMap(tokens => - Object.values(tokens).map(token => token.instrumentId) - ) - )]; - - const navCalls = uniqueInstrumentID.map(instrumentId => ({ - target: NAV_CONTRACT, - params: [instrumentId] - })); - - const navResults = await sdk.api.abi.multiCall({ - abi: NAV_ABI, - calls: navCalls, - chain: 'optimism' - }); - - navResults.output.forEach((result, i) => { - if (result.success) { - // navPerShare is in the first position of the returned tuple - priceMap[uniqueInstrumentID[i]] = Number(result.output[0]) / 1e6; // Assuming 18 decimals for NAV - } - }); - - return priceMap; -} - -async function ethTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.ethereum)) { - const balance = await sdk.api.erc20.totalSupply({ - target: token.address, - }); - - if (balance?.output) { - const price = fundPrices[token.instrumentId] || 1; - const adjustedBalance = Number(balance.output) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - totalTvl += valueUSD; - } - } - - balances['usd-coin'] = totalTvl; - return balances; -} - -async function polygonTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.polygon)) { - const balance = await sdk.api.erc20.totalSupply({ - target: token.address, - chain: 'polygon' - }); - - if (balance?.output) { - const price = fundPrices[token.instrumentId] || 1; - const adjustedBalance = Number(balance.output) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - totalTvl += valueUSD; - } - } - - balances['usd-coin'] = totalTvl; - return balances; -} - -async function mantraTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.mantra)) { - const supply = await queryContractCosmos({ - contract: token.address, - chain: 'mantra', - data: { - token_info: {} - } - }); - - if (supply?.total_supply) { - const price = fundPrices[token.instrumentId] || 1; - const adjustedBalance = Number(supply.total_supply) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - totalTvl += valueUSD; - } - } - - balances['usd-coin'] = totalTvl; - return balances; -} - -async function suiTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.sui)) { - const receiptTokenObject = await sui.getObject(token.address); - if (receiptTokenObject?.fields?.balance) { - const balance = receiptTokenObject.fields.balance; - const price = fundPrices[token.instrumentId] || 1; - const adjustedBalance = Number(balance) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - totalTvl += valueUSD; - } - } - - balances['usd-coin'] = totalTvl; - return balances; -} - -async function imxTvl({ imx: block }) { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Get total supply of receipt tokens - const supplies = await sdk.api.abi.multiCall({ - abi: 'erc20:totalSupply', - calls: Object.values(RECEIPT_TOKENS.imx).map(i => ({ target: i.address })), - chain: 'imx', - block - }); - - // Map each token's total supply to represent RWA TVL - supplies.output.forEach((supply, i) => { - if (supply?.output) { - const token = Object.values(RECEIPT_TOKENS.imx)[i]; - const price = fundPrices[token.instrumentId] || 1; - const adjustedBalance = Number(supply.output) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - totalTvl += valueUSD; - } - }); - - balances['usd-coin'] = totalTvl; - return balances; -} - -async function avaxTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.avalanche)) { - const balance = await sdk.api.erc20.totalSupply({ - target: token.address, - chain: 'avax' - }); - - if (balance?.output) { - const price = fundPrices[token.instrumentId] || 1; - const adjustedBalance = Number(balance.output) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - totalTvl += valueUSD; - } - } - - balances['usd-coin'] = totalTvl; - return balances; -} - -async function injectiveTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.injective)) { - const supply = await queryContractCosmos({ - contract: token.address, - chain: 'injective', - data: { - token_info: {} - } - }); - - if (supply?.total_supply) { - const balance = supply.total_supply; - const price = fundPrices[token.instrumentId] || 1; - - // Convert balance to human readable and multiply by price - const adjustedBalance = Number(balance) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - - totalTvl += valueUSD; - } - } - - // Return the total value in the format DeFiLlama expects - balances['usd-coin'] = totalTvl; - return balances; -} - -async function solanaTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - const connection = new Connection('https://api.mainnet-beta.solana.com'); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.solana)) { - const tokenPubkey = new PublicKey(token.address); - const supply = await connection.getTokenSupply(tokenPubkey); - - if (supply?.value?.amount) { - const balance = supply.value.amount; - const price = fundPrices[token.instrumentId] || 1; - - // Convert balance to human readable and multiply by price - const adjustedBalance = Number(balance) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - - totalTvl += valueUSD; - } - } - - // Return the total value in the format DeFiLlama expects - balances['usd-coin'] = totalTvl; - return balances; -} - -async function nearTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.near)) { - const supply = await call(token.address, 'ft_total_supply', {}); - - if (supply) { - const balance = supply; - const price = fundPrices[token.instrumentId] || 1; - - // Convert balance to human readable and multiply by price - const adjustedBalance = Number(balance) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - - totalTvl += valueUSD; - } - } - - // Return the total value in the format DeFiLlama expects - balances['usd-coin'] = totalTvl; - return balances; -} - -async function aptosTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Get total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.aptos)) { - // Get the concurrent supply - const supply = await getResource(token.address, '0x1::fungible_asset::ConcurrentSupply'); - - if (!supply) continue; - - // Get total supply and price - const totalSupply = supply.current.value || '0'; - const price = fundPrices[token.instrumentId] || 1; - - // Convert supply to human readable and multiply by price - const adjustedSupply = Number(totalSupply) / (10 ** token.decimals); - const valueUSD = adjustedSupply * price; - - totalTvl += valueUSD; - } - - balances['usd-coin'] = totalTvl; - return balances; -} -async function hederaTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token using the Hedera Mirror Node API - for (const token of Object.values(RECEIPT_TOKENS.hedera)) { - // Get token supply using our helper function - const totalSupply = await getHederaTokenSupply(token.address); - - if (totalSupply > 0) { - const price = fundPrices[token.instrumentId] || 1; - const valueUSD = totalSupply * price; - totalTvl += valueUSD; - } - } - - // Return the total value in the format DeFiLlama expects - balances['usd-coin'] = totalTvl; - return balances; -} - -async function cardanoTvl() { - const balances = {} - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Query total supply for each token - for (const token of Object.values(RECEIPT_TOKENS.cardano)) { - - // Get the total minted amount of the token - const totalMinted = await getTokensMinted(token.address); - - if (totalMinted) { - const price = fundPrices[token.instrumentId] || 1; - const adjustedBalance = Number(totalMinted) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - totalTvl += valueUSD; - } - } - - // Return the total value in the format DeFiLlama expects - balances['usd-coin'] = totalTvl; - return balances; -} - -async function xdcTvl() { - const balances = {}; - let totalTvl = 0; - const fundPrices = await getFundPrices(); - - // Use direct ABI calls to get totalSupply for each token - for (const token of Object.values(RECEIPT_TOKENS.xdc)) { - // Use the standard erc20:totalSupply format with the token address - const supply = await sdk.api.abi.call({ - target: token.address, - abi: 'erc20:totalSupply', - chain: 'xdc', - rpcUrl: 'https://rpc.xinfin.network' - }) - - if (supply?.output) { - const price = fundPrices[token.instrumentId] || 1; - const adjustedBalance = Number(supply.output) / (10 ** token.decimals); - const valueUSD = adjustedBalance * price; - totalTvl += valueUSD; - } - } - - balances['usd-coin'] = totalTvl; - return balances; -} - -module.exports = { - methodology: "TVL represents the total value of institutional funds including 'USD I Money Market', 'BH Master Fund Access', 'Laser Carry', 'Hamilton Lane' and 'Access Private Credit Feeder' sub-funds of Libre SAF VCC. These funds are accessible through receipt tokens deployed across multiple blockchains including Ethereum, Polygon, Aptos, Solana, Near, Sui, Injective, Mantra, Immutable X, Cardano, XDC and Avalanche. The value is calculated by multiplying the total supply of receipt tokens by their respective NAV prices, denominated in their underlying stablecoin value", - ethereum: { tvl: ethTvl }, - polygon: { tvl: polygonTvl }, - injective: { tvl: injectiveTvl }, - sui: { tvl: suiTvl }, - solana: { tvl: solanaTvl }, - near: { tvl: nearTvl }, - mantra: { tvl: mantraTvl }, - imx: { tvl: imxTvl }, - avax: { tvl: avaxTvl }, - aptos: { tvl: aptosTvl }, - hedera: { tvl: hederaTvl }, - cardano: { tvl: cardanoTvl }, - xdc: { tvl: xdcTvl } -} diff --git a/projects/libre-swap/index.js b/projects/libre-swap/index.js deleted file mode 100644 index a3a936a2359..00000000000 --- a/projects/libre-swap/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { getFullTable , getExchangeRates } = require("../helper/chain/libre"); -const { toUSDTBalances } = require('../helper/balances'); - -const SWAP_CONTRACT = 'swap.libre'; - -async function getPoolScopes() { - const pools = await getFullTable({code: SWAP_CONTRACT, scope: SWAP_CONTRACT, table: `swapindex`}); - const result = []; - for (const pool of pools) { - result.push(pool['swap_symbpol'].split(',')[1]); - } - return result; -} - -async function getPoolStats(scope, exchangeRates) { - const stats = await getFullTable({code: SWAP_CONTRACT, scope, table: `stat`}); - if (stats && stats.length) { - const poolStats = stats[0]; - const pool1Quantity = poolStats.pool1.quantity; - const pool2Quantity = poolStats.pool2.quantity; - const [ pool1Amount, pool1Symbol ] = pool1Quantity.split(' '); - const [ pool2Amount, pool2Symbol ] = pool2Quantity.split(' '); - const pool1Rate = exchangeRates[pool1Symbol.toUpperCase()] ?? 0; - const pool2Rate = exchangeRates[pool2Symbol.toUpperCase()] ?? 0; - return parseFloat(pool1Amount) * parseFloat(pool1Rate) - + parseFloat(pool2Amount) * parseFloat(pool2Rate); - } - return 0; -} - -async function getTvl() { - let result = 0; - const [exchangeRates, scopes ] = await Promise.all([ - getExchangeRates(), - getPoolScopes(), - ]) - await Promise.all(scopes.map(async scope => { - const poolTvl = await getPoolStats(scope, exchangeRates); - result += poolTvl; - })) - return toUSDTBalances(result); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: `Total Pool Liquidity on Libre Swap`, - libre: { - tvl: getTvl, - }, -} \ No newline at end of file diff --git a/projects/lido/index.js b/projects/lido/index.js deleted file mode 100644 index f5da85d294f..00000000000 --- a/projects/lido/index.js +++ /dev/null @@ -1,96 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const sol = require('./sol-helpers'); -const { getConnection } = require('../helper/solana'); - -const ethContract = ADDRESSES.ethereum.STETH; - -async function terra(timestamp, ethBlock, chainBlocks) { - return {} -} - -async function eth(timestamp, ethBlock, chainBlocks) { - const pooledETH = await sdk.api.abi.call({ - block: ethBlock, - target: ethContract, - abi: "uint256:getTotalPooledEther" - }) - - const pooledMatic = await sdk.api.abi.call({ - block: ethBlock, - target: "0x9ee91F9f426fA633d227f7a9b000E28b9dfd8599", - abi: "uint256:getTotalPooledMatic", - }) - - return { - [ADDRESSES.null]: pooledETH.output, - [ADDRESSES.ethereum.MATIC]: pooledMatic.output, - } -} - -async function ksm(timestamp, ethBlock, {moonriver: block}) { - const chain = "moonriver" - const pooledCoin = await sdk.api.abi.call({ - block, - chain, - target: "0xffc7780c34b450d917d557e728f033033cb4fa8c", - abi: "uint256:getTotalPooledKSM", - }) - - return { - 'kusama': Number(pooledCoin.output)/1e12, - } -} - -async function dot(timestamp, ethBlock, {moonbeam: block}) { - const chain = "moonbeam" - const pooledCoin = await sdk.api.abi.call({ - block, - chain, - target: ADDRESSES.moonbeam.stDOT, - abi: "uint256:getTotalPooledKSM", - }) - - return { - 'polkadot': Number(pooledCoin.output)/1e10, - } -} - -async function solana(timestamp, ethBlock, chainBlocks) { - const connection = getConnection() - const validatorsBalance = await sol.retrieveValidatorsBalance(connection) - const reserveAccountBalance = await sol.retrieveReserveAccountBalance(connection) - - const totalSolInLamports = validatorsBalance + reserveAccountBalance; - return { - 'solana': totalSolInLamports/1e9 - } -} - -module.exports = { - hallmarks: [ - [1610496000, "Start of incentives for curve pool"], - [1651881600,"UST depeg"], - [1654822801, "stETH depeg"], - [1667865600, "FTX collapse"], - [1684108800, "ETH Withdrawal Activation"] - ], - methodology: 'Staked tokens are counted as TVL based on the chain that they are staked on and where the liquidity tokens are issued, stMATIC is counted as Ethereum TVL since MATIC is staked in Ethereum and the liquidity token is also issued on Ethereum', - timetravel: false, // solana - doublecounted: true, - solana: { - tvl: solana - }, - ethereum: { - tvl: eth - }, - terra: { - tvl: terra - }, - moonriver:{ - tvl: ksm - }, - moonbeam:{ - tvl: dot - }, -} diff --git a/projects/lido/sol-helpers.js b/projects/lido/sol-helpers.js deleted file mode 100644 index 34321ef96ce..00000000000 --- a/projects/lido/sol-helpers.js +++ /dev/null @@ -1,27 +0,0 @@ -const { PublicKey } = require('@solana/web3.js'); -const { decodeAccount } = require('../helper/solana') - -const SOLIDO_ADDRESS = "49Yi1TKkNyYjPAFdR9LBvoHcUjuPX4Df5T5yv39w2XTn"; -const RESERVE_ACCOUNT_ADDRESS = "3Kwv3pEAuoe4WevPB4rgMBTZndGDb53XT7qwQKnvHPfX"; - -async function retrieveValidatorsBalance(connection) { - const accountInfo = await connection.getAccountInfo(new PublicKey(SOLIDO_ADDRESS)); - const deserializedAccountInfo = decodeAccount('lido', accountInfo) - const validatorListAddress = new PublicKey(deserializedAccountInfo.validator_list) - const validatorsInfo = await connection.getAccountInfo(validatorListAddress); - const decodedValInfo = decodeAccount('lidoValidatorList', validatorsInfo) - return decodedValInfo.entries - .map(validator => validator.effective_stake_balance.toNumber()) - .reduce((prev, current) => prev + current, 0) -} - -async function retrieveReserveAccountBalance(connection) { - const accountInfo = await connection.getAccountInfo(new PublicKey(RESERVE_ACCOUNT_ADDRESS)); - const rent = await connection.getMinimumBalanceForRentExemption(accountInfo.data.byteLength); - return accountInfo.lamports - rent; -} - -module.exports = { - retrieveValidatorsBalance, - retrieveReserveAccountBalance -} \ No newline at end of file diff --git a/projects/lien/index.js b/projects/lien/index.js deleted file mode 100644 index 10b4c85ad5b..00000000000 --- a/projects/lien/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -const contracts = [ - "0xE446158503d0F5c70579FCCE774C00E8Db544559", // aggregator1 - "0x5F3b6405dfcF8b21f8dEB4eb6DA44a89a652aCb0", // aggregator2 - "0xCc96397Cb86f98759BdbbF31802b366E7251F350", // aggregator3 - "0xDA6FC5625E617bB92F5359921D43321cEbC6BEf0", // bondmaker - "0x2f84206b5ED3Eb855C886414f3905115DD166614", // GDOTC - "0xaB37e1358b639Fd877f015027Bb62d3ddAa7557E", // Lien Token - "0x54ea75daf8f0c71ef5ac918bd2eda4448e814925", // reserve1 - "0xca18201c57370df5684b7cbad9b1b886e03f198f", // reserve2 - "0x9f6ff467fd6ca8832d9e0eff95c34f4939e7becb", // reserve3 -] - -module.exports = { - start: '2021-04-30', // 30/4/2021 @ 04:00PM (UTC) - ethereum: { tvl: sumTokensExport({ owners: contracts, tokens: [nullAddress]}) } -}; diff --git a/projects/lif3-swap/index.js b/projects/lif3-swap/index.js deleted file mode 100644 index a880a7921dd..00000000000 --- a/projects/lif3-swap/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require("@defillama/sdk") - - -// use fantom to price LIF3 token, tombchain address not on coingecko -const stakingContract = "0x68cDbC441BAD0476db6750D1358F2Ea4dEB0d016" -const LIF3_TOKEN = "fantom:0xbf60e7414ef09026733c1e7de72e7393888c64da" -const stLIF3 = "0x42fc88b94C6C58797D3EA44ED66EEaFFD88E7344" - -async function stakingTvl(timestamp, ethBlock, { tombchain: block }) { - const stakedLIF3 = (await sdk.api.abi.call({ - target: stLIF3, - params: stakingContract, - abi: 'erc20:balanceOf', - block: block, - chain: 'tombchain' - })).output - const balances = { - [LIF3_TOKEN]: stakedLIF3 - } - return balances -} - -module.exports = { - misrepresentedTokens: true, - tombchain: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x69Da8FFe6550A3D78dBff368194d490fB30703f9', }), - staking: stakingTvl - }, - bsc: { tvl: getUniTVL({ factory: '0x3FB1E7D5d9C974141A5B6E5fa4edab0a7Aa15C6A', useDefaultCoreAssets: true, }) }, - polygon: { tvl: getUniTVL({ factory: '0x3FB1E7D5d9C974141A5B6E5fa4edab0a7Aa15C6A', useDefaultCoreAssets: true, }) }, -}; // node test.js projects/lif3-swap/index.js diff --git a/projects/lif3-trade/index.js b/projects/lif3-trade/index.js deleted file mode 100644 index bc4bfb3bb0a..00000000000 --- a/projects/lif3-trade/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - fantom: { - tvl: gmxExports({ vault: '0x58e3018B9991aBB9075776537f192669D69cA930', }) - }, - bsc: { - tvl: gmxExports({ vault: '0x089Bd994241db63a5dc5C256481d1722B23EF8d0', }) - }, -} \ No newline at end of file diff --git a/projects/life/index.js b/projects/life/index.js deleted file mode 100644 index 27705b778cb..00000000000 --- a/projects/life/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const chef = "0xa4Faa5774681AaccE968d5EC7Ff3C3eD0F7ABbEe" -const life = "0x8877E4B70C50CF275C2B77d6a0F69a312F5eE236" - -module.exports = { - ...masterChefExports(chef, "fantom", life, false), -} // node test.js projects/life/index.js \ No newline at end of file diff --git a/projects/lifedao/index.js b/projects/lifedao/index.js deleted file mode 100644 index 6c7f1cbf0ea..00000000000 --- a/projects/lifedao/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x1e63a2eB2827db56d3CB1e1FF17ef1040B2d3D3f" -module.exports = ohmTvl(treasury, [ - //MIM - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], - //wAVAX - [ADDRESSES.avax.WAVAX, false], - //joe LP - ["0xd7cdc2e47ab29a6b651704e39374bb9857f02e02", true], - //joe LP - ["0xdf9abadd06101e4e52128db30b055a7aa78b3537", true], - ], "avax", "0x3C09c500829D09AfEA7575005fcAFBacFcde6902", "0x5684a087C739A2e845F4AaAaBf4FBd261edc2bE8") \ No newline at end of file diff --git a/projects/lifinity-v2/index.js b/projects/lifinity-v2/index.js deleted file mode 100644 index 7debe1a2d3e..00000000000 --- a/projects/lifinity-v2/index.js +++ /dev/null @@ -1,366 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program } = require("@project-serum/anchor"); - -async function getTokenAccounts(programId, idl, chain) { - const provider = getProvider(chain) - const program = new Program(idl, programId, provider) - const data = await program.account.amm.all() - return data.map(({ account: { tokenAAccount, tokenBAccount }}) => ([tokenAAccount, tokenBAccount,])).flat() -} - -const config = { - solana: '2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c', - eclipse: '4UsSbJQZJTfZDFrgvcPBRCSg5BbcQE6dobnriCafzj12', -} - -async function tvl(api) { - const tokenAccounts = await getTokenAccounts(config[api.chain], v2Idl, api.chain) - return sumTokens2({ tokenAccounts, api, }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, - eclipse: { tvl, }, -} - -const v2Idl = { - version: "0.1.1", - name: "lifinity_amm_v2", - instructions: [], - accounts: [ - { - name: "Amm", - type: { - kind: "struct", - fields: [ - { - name: "initializerKey", - type: "publicKey" - }, - { - name: "initializerDepositTokenAccount", - type: "publicKey" - }, - { - name: "initializerReceiveTokenAccount", - type: "publicKey" - }, - { - name: "initializerAmount", - type: "u64" - }, - { - name: "takerAmount", - type: "u64" - }, - { - name: "isInitialized", - type: "bool" - }, - { - name: "bumpSeed", - type: "u8" - }, - { - name: "freezeTrade", - type: "u8" - }, - { - name: "freezeDeposit", - type: "u8" - }, - { - name: "freezeWithdraw", - type: "u8" - }, - { - name: "baseDecimals", - type: "u8" - }, - { - name: "tokenProgramId", - type: "publicKey" - }, - { - name: "tokenAAccount", - type: "publicKey" - }, - { - name: "tokenBAccount", - type: "publicKey" - }, - { - name: "poolMint", - type: "publicKey" - }, - { - name: "tokenAMint", - type: "publicKey" - }, - { - name: "tokenBMint", - type: "publicKey" - }, - { - name: "feeAccount", - type: "publicKey" - }, - { - name: "oracleMainAccount", - type: "publicKey" - }, - { - name: "oracleSubAccount", - type: "publicKey" - }, - { - name: "oraclePcAccount", - type: "publicKey" - }, - { - name: "fees", - type: { - defined: "AmmFees" - } - }, - { - name: "curve", - type: { - defined: "AmmCurve" - } - }, - { - name: "config", - type: { - defined: "AmmConfig" - } - }, - { - name: "ammPTemp1", - type: "publicKey" - }, - { - name: "ammPTemp2", - type: "publicKey" - }, - { - name: "ammPTemp3", - type: "publicKey" - }, - { - name: "ammPTemp4", - type: "publicKey" - }, - { - name: "ammPTemp5", - type: "publicKey" - } - ] - } - } - ], - types: [ - { - name: "AmmFees", - docs: [ - "Encapsulates all fee information and calculations for swap operations" - ], - type: { - kind: "struct", - fields: [ - { - name: "tradeFeeNumerator", - type: "u64" - }, - { - name: "tradeFeeDenominator", - type: "u64" - }, - { - name: "ownerTradeFeeNumerator", - type: "u64" - }, - { - name: "ownerTradeFeeDenominator", - type: "u64" - }, - { - name: "ownerWithdrawFeeNumerator", - type: "u64" - }, - { - name: "ownerWithdrawFeeDenominator", - type: "u64" - }, - { - name: "hostFeeNumerator", - type: "u64" - }, - { - name: "hostFeeDenominator", - type: "u64" - } - ] - } - }, - { - name: "AmmCurve", - type: { - kind: "struct", - fields: [ - { - name: "curveType", - type: "u8" - }, - { - name: "curveParameters", - type: "u64" - } - ] - } - }, - { - name: "AmmConfig", - type: { - kind: "struct", - fields: [ - { - name: "lastPrice", - type: "u64" - }, - { - name: "lastBalancedPrice", - type: "u64" - }, - { - name: "configDenominator", - type: "u64" - }, - { - name: "volumeX", - type: "u64" - }, - { - name: "volumeY", - type: "u64" - }, - { - name: "volumeXInY", - type: "u64" - }, - { - name: "depositCap", - type: "u64" - }, - { - name: "regressionTarget", - type: "u64" - }, - { - name: "oracleType", - type: "u64" - }, - { - name: "oracleStatus", - type: "u64" - }, - { - name: "oracleMainSlotLimit", - type: "u64" - }, - { - name: "oracleSubConfidenceLimit", - type: "u64" - }, - { - name: "oracleSubSlotLimit", - type: "u64" - }, - { - name: "oraclePcConfidenceLimit", - type: "u64" - }, - { - name: "oraclePcSlotLimit", - type: "u64" - }, - { - name: "stdSpread", - type: "u64" - }, - { - name: "stdSpreadBuffer", - type: "u64" - }, - { - name: "spreadCoefficient", - type: "u64" - }, - { - name: "priceBufferCoin", - type: "i64" - }, - { - name: "priceBufferPc", - type: "i64" - }, - { - name: "rebalanceRatio", - type: "u64" - }, - { - name: "feeTrade", - type: "u64" - }, - { - name: "feePlatform", - type: "u64" - }, - { - name: "oracleMainSlotBuffer", - type: "u64" - }, - { - name: "configTemp4", - type: "u64" - }, - { - name: "configTemp5", - type: "u64" - }, - { - name: "configTemp6", - type: "u64" - }, - { - name: "configTemp7", - type: "u64" - }, - { - name: "configTemp8", - type: "u64" - } - ] - } - }, - { - name: "CurveType", - docs: [ - "Curve types supported by the token-swap program." - ], - type: { - kind: "enum", - variants: [ - { - name: "Standard" - }, - { - name: "ConstantProduct" - } - ] - } - } - ], - errors: [] -} diff --git a/projects/lifinity/index.js b/projects/lifinity/index.js deleted file mode 100644 index 292a19019fa..00000000000 --- a/projects/lifinity/index.js +++ /dev/null @@ -1,199 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); - -async function tvl() { - const provider = getProvider() - const programId = 'EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S' - const program = new Program(idl, programId, provider) - const data = await program.account.amm.all() - const tokenAccounts = data.map(({ account: { tokenAAccount, tokenBAccount }}) => ([tokenAAccount, tokenBAccount,])).flat() - return sumTokens2({ tokenAccounts, }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} - -const idl = { - version: '0.1.0', - name: 'lifinity_amm', - instructions: [], - accounts: [ - { - name: 'amm', - type: { - kind: 'struct', - fields: [ - { - name: 'initializerKey', - type: 'publicKey' - }, - { - name: 'initializerDepositTokenAccount', - type: 'publicKey' - }, - { - name: 'initializerReceiveTokenAccount', - type: 'publicKey' - }, - { - name: 'initializerAmount', - type: 'u64' - }, - { - name: 'takerAmount', - type: 'u64' - }, - { - name: 'isInitialized', - type: 'bool' - }, - { - name: 'bumpSeed', - type: 'u8' - }, - { - name: 'freezeTrade', - type: 'u8' - }, - { - name: 'freezeDeposit', - type: 'u8' - }, - { - name: 'freezeWithdraw', - type: 'u8' - }, - { - name: 'baseDecimals', - type: 'u8' - }, - { - name: 'tokenProgramId', - type: 'publicKey' - }, - { - name: 'tokenAAccount', - type: 'publicKey' - }, - { - name: 'tokenBAccount', - type: 'publicKey' - }, - { - name: 'poolMint', - type: 'publicKey' - }, - { - name: 'tokenAMint', - type: 'publicKey' - }, - { - name: 'tokenBMint', - type: 'publicKey' - }, - { - name: 'poolFeeAccount', - type: 'publicKey' - }, - { - name: 'pythAccount', - type: 'publicKey' - }, - { - name: 'pythPcAccount', - type: 'publicKey' - }, - { - name: 'configAccount', - type: 'publicKey' - }, - { - name: 'ammTemp1', - type: 'publicKey' - }, - { - name: 'ammTemp2', - type: 'publicKey' - }, - { - name: 'ammTemp3', - type: 'publicKey' - }, - { - name: 'fees', - type: { - defined: 'FeesInput' - } - }, - { - name: 'curve', - type: { - defined: 'CurveInput' - } - } - ] - } - } - ], - types: [ - { - name: 'FeesInput', - type: { - kind: 'struct', - fields: [ - { - name: 'tradeFeeNumerator', - type: 'u64' - }, - { - name: 'tradeFeeDenominator', - type: 'u64' - }, - { - name: 'ownerTradeFeeNumerator', - type: 'u64' - }, - { - name: 'ownerTradeFeeDenominator', - type: 'u64' - }, - { - name: 'ownerWithdrawFeeNumerator', - type: 'u64' - }, - { - name: 'ownerWithdrawFeeDenominator', - type: 'u64' - }, - { - name: 'hostFeeNumerator', - type: 'u64' - }, - { - name: 'hostFeeDenominator', - type: 'u64' - } - ] - } - }, - { - name: 'CurveInput', - type: { - kind: 'struct', - fields: [ - { - name: 'curveType', - type: 'u8' - }, - { - name: 'curveParameters', - type: 'u64' - } - ] - } - } - ], - errors: [] -} \ No newline at end of file diff --git a/projects/lighter-v2/index.js b/projects/lighter-v2/index.js deleted file mode 100644 index 63889612ee5..00000000000 --- a/projects/lighter-v2/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const config = { - arbitrum: { - owners: ["0x3b4d794a66304f130a4db8f2551b0070dfcf5ca7"], - tokens: [ADDRESSES.arbitrum.USDC_CIRCLE], - }, - ethereum: { - owners: ["0x3b4d794a66304f130a4db8f2551b0070dfcf5ca7"], - tokens: [ADDRESSES.ethereum.USDC], - }, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: sumTokensExport({ ...config[chain] }), - }; -}); - -module.exports.methodology = - "Counts USDC tokens held in the Lighter system wallet on Ethereum and Arbitrum."; diff --git a/projects/lighter/index.js b/projects/lighter/index.js deleted file mode 100644 index 01d67bc2c60..00000000000 --- a/projects/lighter/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0x35642792abc96fa1e9ffe5f2f62a539bb80a8af4', - topic: 'OrderBookCreated(uint8,address,address,address,uint8,uint8)', - fromBlock: 65833710, - eventAbi: 'event OrderBookCreated (uint8 orderBookId, address orderBookAddress, address token0, address token1, uint8 logSizeTick, uint8 logPriceTick)', - onlyArgs: true, - }) - - return sumTokens2({ api, ownerTokens: logs.map(i => [[i.token0, i.token1], i.orderBookAddress]) }) -} - -module.exports = { - arbitrum: { tvl, } -} \ No newline at end of file diff --git a/projects/lightning-network/index.js b/projects/lightning-network/index.js deleted file mode 100644 index 179cc4a6d77..00000000000 --- a/projects/lightning-network/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const { get } = require("../helper/http"); - -const dayHistory = {}; - -async function GetDailyHistory() { - let data = await get('https://bitcoinvisuals.com/static/data/data_daily.csv'); - data = parseCSV(data); - - data.forEach((row) => { - if (!row.capacity_total) return; - dayHistory[row.day] = row.capacity_total; - }); -} - -async function get1MLCapacity() { - try { - const data = await get('https://1ml.com/statistics?json=true') - return data.networkcapacity / 1e8 - } catch (e) { - console.error(e) - return getFromTxStat() - } -} - -async function getFromTxStat() { - const data = await get('https://txstats.com/api/datasources/proxy/1/query?db=p2shinfo&q=SELECT%20last(%22value%22)%20%20%2F%20100000000%20FROM%20%22ln_stats%22%20WHERE%20time%20%3E%3D%20now()%20-%201d%20GROUP%20BY%20time(6h)%20fill(null)&epoch=ms') - return data.results[0].series[0].values.pop()[1] -} - -async function getChannelCapacity(timestamp) { - const day = new Date(timestamp * 1000).toISOString().slice(0, 10) - return dayHistory[day] -} - -async function tvl({ timestamp }) { - const getCurrentTVL = (Date.now() / 1000 - timestamp) < 24 * 3600 // if the time difference is under 24 hours i.e we are not refilling old data - let channelCapacity - - if (getCurrentTVL) { - channelCapacity = await get1MLCapacity() - } else { - await GetDailyHistory(); - channelCapacity = await getChannelCapacity(timestamp) - } - - // if none of our scrape targets worked then throw an error - if (channelCapacity == null) - throw "Unable to determine LN channel capacity." - - return { - bitcoin: channelCapacity - } -} - -module.exports = { - start: '2018-01-20', - bitcoin: { tvl }, -}; - - -function parseCSV(csvData) { - csvData = csvData.replaceAll('\r', '').split('\n').map(i => i.split(',')) - const headers = csvData.shift() - return csvData.map(row => toObject(headers, row)) -} - -function toObject(keys, values) { - const res = {} - keys.forEach((key, i) => { - res[key] = values[i] - }) - return res -} \ No newline at end of file diff --git a/projects/lila-finance/index.js b/projects/lila-finance/index.js deleted file mode 100644 index dbc86ded8a5..00000000000 --- a/projects/lila-finance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const pools_providers = ["0xE4534d76Cc512a14F288453F06F8961740Ae2a1E", '0x993e06adeb3050a1Df385E05a2deb4b15a0DBCBF'] - -async function tvl(api) { - let data = [] - for(const pools_provider of pools_providers){ - const _data = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: 'function poolList(uint256) view returns (uint256 maxAmount, address strategy, address asset, uint64 payoutFrequency, uint32 totalPayments, uint32 rateIndex)', target: pools_provider}) - data = data.concat(_data) - } - data = data.filter(i => i.strategy !== ADDRESSES.null) - const aTokens = await api.multiCall({ abi: 'address:aToken', calls: data.map(i => i.strategy)}) - const ownerTokens = data.map((i, idx) => [[i.asset, aTokens[idx]], i.strategy]) - return api.sumTokens({ ownerTokens, blacklistedTokens: ['0x42c248d137512907048021b30d9da17f48b5b7b2'] }) -} - -module.exports = { - arbitrum: { - tvl, - } -} diff --git a/projects/liminal-money/index.js b/projects/liminal-money/index.js deleted file mode 100644 index 4a30eaf2813..00000000000 --- a/projects/liminal-money/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const axios = require('axios') - -const API_URL = "https://api.liminal.money/api/info/tvl-history"; -const API_ASSET_URL = "https://api.liminal.money/api/info/strategy-assets"; -const MAX_DIFF_MS = 12 * 60 * 60 * 1000; - -const COINGECKO_MAPPING = { - HYPE: "hyperliquid", - BTC: "bitcoin", - ETH: "ethereum", - SOL: "solana", - USDE: "ethena-usde", - PUMP: "pump-fun", - USDC: "usd-coin", - XPL: "plasma" -}; - -async function fetchAssetList() { - const response = await axios.get(API_ASSET_URL); - const assets = response.data.data; - return assets.map(({ _id, perpName, spotName }) => ({ id: _id, perpName, spotName })) -} - -const getClosestRecord = async (api) => { - const targetMs = api.timestamp * 1000; - const { data: { data: records } } = await axios.get(API_URL); - - const closest = records - .map((r) => ({ ...r, diff: Math.abs(new Date(r.timestamp).getTime() - targetMs) })) - .filter((r) => r.diff <= MAX_DIFF_MS) - .reduce((target, curr) => (!target || curr.diff < target.diff ? curr : target), null); - - if (!closest) return null; - - const assetMetaList = await fetchAssetList(); - const { timestamp: ts, totalValueLocked, breakdown } = closest; - - const enrichedAssetBreakdown = breakdown.assetBreakdown.map(item => { - const meta = assetMetaList.find(m => m.id === item.assetId) || {}; - return { ...item, perpName: meta.perpName, spotName: meta.spotName }; - }); - - const enrichedBreakdown = { ...breakdown, assetBreakdown: enrichedAssetBreakdown }; - return { timestamp: ts, totalValueLocked, breakdown: enrichedBreakdown }; -} - -const tvl = async (api) => { - const record = await getClosestRecord(api); - if (!record) return; - const { spotUsdc, perpUsdc, assetBreakdown } = record.breakdown - api.addCGToken('usd-coin', spotUsdc+perpUsdc) - - assetBreakdown.forEach(({ perpName, spotHolding, perpMarginUsed }) => { - const cgName = COINGECKO_MAPPING[perpName] || perpName.toLowerCase(); - api.addCGToken(cgName, spotHolding); - api.addCGToken('usd-coin', perpMarginUsed); - }); -} - -module.exports = { - hyperliquid: { tvl } -} diff --git a/projects/limitless-exchange/index.js b/projects/limitless-exchange/index.js deleted file mode 100644 index c4eb1608ecc..00000000000 --- a/projects/limitless-exchange/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const eventAbi = "event FixedProductMarketMakerCreation(address indexed creator, address fixedProductMarketMaker, address indexed conditionalTokens, address indexed collateralToken, bytes32[] conditionIds, uint256 fee)"; - -const config = [ - { factory: "0x8E50578ACa3C5E2Ef5ed2aA4bd66429B5e44C16E", resolver: "0x15A61459d65D89A25a9e91e0dc9FC69598791505", fromBlock: 13547870 }, - { factory: "0xc397D5d70cb3B56B26dd5C2824d49a96c4dabF50", resolver: "0xc9c98965297bc527861c898329ee280632b76e18", fromBlock: 13547845 }, -]; - -const blacklistedTokens = ['0xd7788ffc73c9ae39ce24dfc1098b375792dd42ac'] - -const getMarkets = async ({ factory, resolver, fromBlock }, api) => { - const logs = await getLogs2({ api, target: factory, eventAbi, fromBlock }); - const tokens = logs.map(i => i.collateralToken) - return api.sumTokens({ owner: resolver, tokens, blacklistedTokens }); -}; - -const tvl = async (api) => { - for (const marketConfig of config) { - await getMarkets(marketConfig, api); - } -}; - -module.exports = { - methodology: "The TVL represents the total amount of tokens deposited in the prediction markets", - base: { tvl } -}; diff --git a/projects/limitless/index.js b/projects/limitless/index.js deleted file mode 100644 index 04cd5775160..00000000000 --- a/projects/limitless/index.js +++ /dev/null @@ -1,155 +0,0 @@ -const { nullAddress, addUniV3LikePosition } = require("../helper/unwrapLPs") -const { graphFetchById } = require('../helper/cache') -const { getUniqueAddresses } = require("../helper/utils") -const sdk = require('@defillama/sdk') - -const config = { - base: { postionManager: '0x6822063E39f1b8F40373402Ac96963B383877B3C', factory: '0x33128a8fC17869897dcE68Ed026d694621f6FDfD', limWETH: '0x845d629D2485555514B93F05Bdbe344cC2e4b0ce', marginContract: '0x536801AaE40cb214c08f178c6727d7594a7c655b', graphEndpoint: 'https://api.studio.thegraph.com/query/71042/limitless-subgraph-base/version/latest', dataProvider: '0x87E697c3EBe41eD707E4AD52541f19292Be81177', lmQuoter: '0xED14586763578147136e55D20a0Ee884Cd8fBC6d', }, - arbitrum: { postionManager: '0xf3B0362a5F210Fd826E74b3b10b269D4044085e5', factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984', limWETH: '0x3a4F8E8512624226d2aC14fE496Bb9A4DdB73a9a', marginContract: '0x3611CD2B957514222a94C93e1A9a5be66b0b2841', graphEndpoint: 'https://api.studio.thegraph.com/query/71042/limitless-subgraph-arbitrum/version/latest', dataProvider: '0x9139929dFbEeDfB03bbF8B59b4005BC631529b14', lmQuoter: '0x2E4a9Eb87375D518F4c4473a845D56AAbf1967FE', }, - linea: { postionManager: '0x726e3116AE07f43A7E1921c635352B75e2DEa4Ad', factory: '0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9', limWETH: '0x5188b47Cb80D1A3E22Cc6221792F199f1Fb0DD3c', }, -} - -const liquidityProvidedQuery = ` -query($lastId: String, $block: Int) { - liquidityProvideds( - first:1000 - block: { number: $block } - where: { id_gt: $lastId } - ) { - id - pool - recipient - liquidity - tickLower - tickUpper - blockTimestamp - } -} -` - -const liquidityWithdrawnQuery = ` -query($lastId: String, $block: Int) { - liquidityWithdrawns( - first:1000 - block: { number: $block } - where: { id_gt: $lastId } - ) { - id - pool - recipient - liquidity - tickLower - tickUpper - blockTimestamp - } -} -` - -Object.keys(config).forEach(chain => { - const { postionManager, factory, limWETH, marginContract, graphEndpoint, } = config[chain] - - module.exports[chain] = { - tvl: async (api) => { - if (limWETH) { - const token = await api.call({ abi: 'address:asset', target: limWETH }) - await api.sumTokens({ owner: limWETH, tokens: [token] }) - } - const allTokens = [] - - const getKey = (token0, token1, fee) => `${token0}-${token1}-${fee}` - if (!graphEndpoint) { - const tokenIds = await api.fetchList({ lengthAbi: 'totalSupply', itemAbi: abi.tokenByIndex, target: postionManager }) - const positionData = await api.multiCall({ calls: tokenIds, abi: abi.positions, target: postionManager }) - const poolData = {} - positionData.forEach(({ token0, token1, tokensOwed0, tokensOwed1, fee, liquidity }) => { - if (liquidity === 0) return; - if (token0 === nullAddress && token1 === nullAddress) return; - poolData[getKey(token0, token1, fee)] = { call: { params: [token0, token1, fee] } } - if (marginContract) { - allTokens.push(token0) - allTokens.push(token1) - } - api.add(token0, tokensOwed0) - api.add(token1, tokensOwed1) - }) - - // fetch tick info from uni v3 pools - const calls = Object.values(poolData).map(i => i.call) - const pools = await api.multiCall({ abi: abi.getPool, calls, target: factory }) - const ticks = await api.multiCall({ abi: abi.slot0, calls: pools, permitFailure: true }) - Object.values(poolData).forEach((data, i) => data.tick = ticks[i]?.tick) - - positionData.forEach(({ token0, token1, tickUpper, tickLower, fee, liquidity }) => { - if (+liquidity === 0) return; - const tick = poolData[getKey(token0, token1, fee)]?.tick - if (!tick) console.log({ token0, token1, fee, tickUpper, tickLower, liquidity }) - if (!tick) return; // pool not found - addUniV3LikePosition({ api, token0, token1, tick, liquidity, tickUpper, tickLower, }) - }) - - } else { - - const provided = await graphFetchById({ - endpoint: graphEndpoint, - query: liquidityProvidedQuery, - api, - options: { - useBlock: true, - safeBlockLimit: 500, - } - }) - const withdrawn = await graphFetchById({ - endpoint: graphEndpoint, - query: liquidityWithdrawnQuery, - api, - options: { - useBlock: true, - safeBlockLimit: 500, - } - }) - - const pools = getUniqueAddresses(provided.map(entry => entry.pool).concat(withdrawn.map(entry => entry.pool))) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools}) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools}) - - const ticks = await api.multiCall({ abi: abi.slot0, calls: pools, permitFailure: true }) - - const poolMap = {} - pools.forEach((pool, index) => { - allTokens.push(token0s[index]) - allTokens.push(token1s[index]) - poolMap[pool] = { - token0: token0s[index], - token1: token1s[index], - tick: ticks[index].tick - } - }) - - const withdrawnBalancesApi = new sdk.ChainApi({ chain: api.chain}) - - provided.forEach(({ pool, tickLower, tickUpper, liquidity }) => { - const { token0, token1, tick } = poolMap[pool.toLowerCase()] - addUniV3LikePosition({ api, token0, token1, tick, liquidity, tickUpper, tickLower, }) - }) - withdrawn.forEach(({ pool, tickLower, tickUpper, liquidity }) => { - const { token0, token1, tick } = poolMap[pool.toLowerCase()] - addUniV3LikePosition({ api: withdrawnBalancesApi, token0, token1, tick, liquidity, tickUpper, tickLower, }) - }) - - const balances = api.getBalancesV2() - const withdrawnBalances = withdrawnBalancesApi.getBalancesV2() - balances.subtract(withdrawnBalances) - } - if (marginContract) return api.sumTokens({ tokens: allTokens, owner: marginContract }) - } - } -}) - - -const abi = { - "tokenByIndex": "function tokenByIndex(uint256 index) view returns (uint256)", - "positions": "function positions(uint256 tokenId) view returns (address owner, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)", - "totalSupply": "uint256:totalSupply", - "getPool": "function getPool(address, address, uint24) view returns (address)", - "slot0": "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)", -} \ No newline at end of file diff --git a/projects/line/index.js b/projects/line/index.js deleted file mode 100644 index 5b6f6e7d594..00000000000 --- a/projects/line/index.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * LINE is a price-protected token. - * It is issued by borrowing against locking a collateral. - * If the token's price on DEXes grows after borrowing, the user will be able to sell it for profit. - * If it falls, the user will be able to repay the loan and get their collateral back (less fees). - * This is what ensures price protection. - * - * @see https://linetoken.org - * - */ - -const { sumUnknownTokens } = require('../helper/unknownTokens'); - -const LINE_CONTRACT_ADDRESS = "0x31f8d38df6514b6cc3C360ACE3a2EFA7496214f6"; -const COLLATERAL_TOKEN_ADDRESS = "0x0b93109d05Ef330acD2c75148891cc61D20C3EF1"; - -const tvl = async (api) => { - const LOAN_NFT_CONTRACT_ADDRESS = await api.call({ - abi: "address:loanNFT", - target: LINE_CONTRACT_ADDRESS, - }); - - return api.sumTokens({ - owners: [LINE_CONTRACT_ADDRESS, LOAN_NFT_CONTRACT_ADDRESS], - tokens: [COLLATERAL_TOKEN_ADDRESS], - }); -} - - -const staking = async (api) => { - const poolAddresses = await api.call({ - abi: "function getAllPools() view returns ((tuple(bool, uint16, uint256, uint256, uint256), address)[])", - target: LINE_CONTRACT_ADDRESS, - }).then(allPools => allPools.map(([_, address]) => address)); - - return sumUnknownTokens({ - owners: [LINE_CONTRACT_ADDRESS], - tokens: poolAddresses, - api, resolveLP: true, - coreAssets: [COLLATERAL_TOKEN_ADDRESS ] - }); -} - -module.exports = { - methodology: 'The TVL is calculated as USD value of the collateral locked for issuing LINE tokens, staked LP tokens of incentivized pools, and the balances of pending orders on the options market.', - kava: { - tvl, - staking - } -} \ No newline at end of file diff --git a/projects/linea/index.js b/projects/linea/index.js deleted file mode 100644 index 9ae2b7c5f51..00000000000 --- a/projects/linea/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xd19d4B5d358258f05D7B411E21A1460D11B0876F", - "0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js deleted file mode 100644 index 5c61f938b8e..00000000000 --- a/projects/lineabank/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); -const { compoundExports2 } = require("../helper/compound") -const { mergeExports } = require("../helper/utils") - -/* LayerBank V2 */ -const v2Config = { - linea: '0x009a0b7C38B542208936F1179151CD08E2943833', - scroll: '0xEC53c830f4444a8A56455c6836b5D2aA794289Aa', - manta: '0xB7A23Fc0b066051dE58B922dC1a08f33DF748bbf', - mode: '0x80980869D90A737aff47aBA6FbaA923012C1FF50', - zklink: '0x4Ac518DbF0CC730A1c880739CFa98fe0bB284959', - bsquared: '0x72f7a8eb9F83dE366AE166DC50F16074076C3Ea6', - bob: '0x77cabFd057Bd7C81c011059F1bf74eC1fBeDa971', - btr: '0xf1E25704e75dA0496B46Bf4E3856c5480A3c247F', - mint: '0x0f225d10dd29D4703D42C5E93440F828bf04D150', - taiko: '0x803a61d82BaD2743bE35Be5dC6DEA0CccE82C056', - bsc: '0x8eFdD7396b83Cd53ae7555224A30c41b1A100ffA', - morph: '0xD48c646CF9B011D97E31770873985ADD8ed7371c', - rsk: '0xc30991623fb2a63E6e1B59A29987E1EEE57447bF', - hemi: '0x16B3A05f1adaCa8F028AAd7C5B0475cC512a0619', -} - -const abis = { - getAllMarkets: "address[]:allMarkets", - totalBorrows: "uint256:totalBorrow", -} - -Object.keys(v2Config).forEach(chain => { - const comptroller = v2Config[chain] - module.exports[chain] = compoundExports2({ comptroller, abis, }) -}) - -module.exports = mergeExports([module.exports, { - linea: compoundExports2({ comptroller: '0x43Eac5BFEa14531B8DE0B334E123eA98325de866', abis, }), -}]) - -/* LayerBank Move */ - -// LayerBank pool contract address -const LAYERBANK_POOL_CONTRACT = "0xf257d40859456809be19dfee7f4c55c4d033680096aeeb4228b7a15749ab68ea"; - -/** - * Fetches pool data from LayerBank -*/ -async function fetchPoolData() { - try { - const poolData = await function_view({ - functionStr: `${LAYERBANK_POOL_CONTRACT}::ui_pool_data_provider_v3::get_reserves_data`, - chain: "move" - }); - return poolData; - } catch (error) { - return [[], {}]; // Return default value in case of error - } -} - -module.exports.move = { - tvl: async (api) => { - // Fetch pool data - const poolData = await fetchPoolData(); - const assets = poolData[0] || []; - - // Calculate TVL for each asset and add to balances - assets.forEach(asset => { - api.add(asset.underlying_asset, asset.available_liquidity); - }); - }, - borrowed: async (api) => { - // Fetch pool data - const poolData = await fetchPoolData(); - const assets = poolData[0] || []; - - // Calculate TVL for each asset and add to balances - assets.forEach(asset => { - api.add(asset.underlying_asset, asset.total_scaled_variable_debt); - }); - } -}; - -/* LayerBank V3 */ - -const v3Abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", -}; - -const v3Config = { - plume_mainnet: [`0xF9642C3B35Cd4Ccd55D22Fb2B35fcc31c5E0B62E`], - hemi: [`0x8D45801736F3504BEfA35ABEf8bc7a1C4d610651`], - nibiru: [`0x7F5f9E5D4643B4333464c18d072167B452C20d28`], - bob: [`0xeb1Bea032d0DDCAFd29fb3b8c33A67BCAfCaFD8c`], - rsk: ['0x47C1ef207d49cfC519F48b8251857CA6BE6c2caf'], -}; - -const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: v3Abi.getAllReservesTokens }); - const calls = [] - - poolDatas.map((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => calls.push({ target: pool, params: tokenAddress })); - }); - const reserveData = await api.multiCall({ abi: isBorrowed ? v3Abi.getReserveData : v3Abi.getReserveTokensAddresses, calls, }) - const tokensAndOwners = [] - reserveData.forEach((data, i) => { - const token = calls[i].params - if (isBorrowed) { - api.add(token, data.totalVariableDebt) - api.add(token, data.totalStableDebt) - } else - tokensAndOwners.push([token, data.aTokenAddress]) - }) - - if (isBorrowed) return api.getBalances() - return api.sumTokens({ tokensAndOwners }) -} - -const v3Exports = {}; - -Object.keys(v3Config).forEach((chain) => { - const poolDatas = v3Config[chain]; - v3Exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - borrowed: (api) => fetchReserveData(api, poolDatas, true), - }; -}); - -module.exports = mergeExports([module.exports, v3Exports]); \ No newline at end of file diff --git a/projects/linear.js b/projects/linear.js deleted file mode 100644 index 3e1bb6a1c9f..00000000000 --- a/projects/linear.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { call } = require('./helper/chain/near') - -async function tvl() { - return { - near: (await call( - ADDRESSES.near.LINA, - 'get_total_staked_balance', - {} - ) / 1e24 ) - }; -} - -module.exports = { - near: { - tvl - }, - timetravel: false, -}; \ No newline at end of file diff --git a/projects/linear/index.js b/projects/linear/index.js deleted file mode 100644 index 8aa7faf081d..00000000000 --- a/projects/linear/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { pool2 } = require("../helper/pool2"); - -const LnCollateralSystemAddress = "0xcE2c94d40e289915d4401c3802D75f6cA5FEf57E"; - -const tokens = { - lUSD: "0x23e8a70534308a4aaf76fb8c32ec13d17a3bd89e", - LINA: "0x762539b45A1dCcE3D36d080F74d1AED37844b878", - bUSD: ADDRESSES.bsc.BUSD, - LPTOKEN: "0x392f351fc02a3b74f7900de81a9aaac13ec28e95", -}; - -const vaultpools = { - bUSD: "0x072F11c46146Ce636691d387BFbF8fD28e818EE8", - lUSD: "0xD36b669491ADFB5cDE87C281dF417148674f88B4", - LP: "0x12efdFF85f717ac1738CF50Be5f4Cdc916b0B8B1", -} - - -async function tvl(api) { - return api.sumTokens({ - tokensAndOwners: [ - [[tokens.LINA], LnCollateralSystemAddress], - [[tokens.bUSD], vaultpools["bUSD"]], - ] - }); -} - -module.exports = { - methodology: "Counts LINA used to collateralize lUSD", - bsc: { - tvl, - pool2: pool2(vaultpools["LP"], "0x392f351fc02a3b74f7900de81a9aaac13ec28e95"), - }, -}; diff --git a/projects/linehub-perps/index.js b/projects/linehub-perps/index.js deleted file mode 100644 index cf4d3d161f6..00000000000 --- a/projects/linehub-perps/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const { nullAddress } = require("../helper/unwrapLPs"); - -async function LineaTvl(api) { - const tokens = [nullAddress, ADDRESSES.linea.USDC]; - const owners = ["0xC94cFd8F4fB8Ef3EB360Ec92e2A9Ca969Cadf095", "0x00744A65cFC59ACBa312Ade7ABf77379A041Ae26"]; - return api.sumTokens({ owners, tokens }); -} - -module.exports = { - linea: { - tvl: LineaTvl, - }, -}; diff --git a/projects/linehub-v2/index.js b/projects/linehub-v2/index.js deleted file mode 100644 index 4bd21a19cda..00000000000 --- a/projects/linehub-v2/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - linea: { - tvl: getUniTVL({ - factory: "0x7811DeF28977060784cC509641f2DD23584b7671", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/linehub-v3/index.js b/projects/linehub-v3/index.js deleted file mode 100644 index 6a555fdd5ea..00000000000 --- a/projects/linehub-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - linea: { factory: '0x6c379d538f2f7cb642851e154a8e572d63238df4', fromBlock: 407280, }, -}) diff --git a/projects/linkswap/index.js b/projects/linkswap/index.js deleted file mode 100644 index 4f8dd3961e5..00000000000 --- a/projects/linkswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - zklink: { - tvl: getUniTVL({ - factory: "0x87929083ac2215cF3CE4936857D314aF6687C978", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/linqai/index.js b/projects/linqai/index.js deleted file mode 100644 index 48aeb835211..00000000000 --- a/projects/linqai/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const stakingPools = [ - "0x786d0536B63f3638bcD17897A98B066D901C27b8", - "0xCB5Dc61Cc672761Ec049dd9349745b418580BC83", - ]; - - const rewardToken = "0xD4F4D0a10BcaE123bB6655E8Fe93a30d01eEbD04"; // LNQ - - module.exports = { - ethereum: { - tvl: async () => ({}), - staking: async (api) => { - const stakingData = stakingPools.map((poolAddress) => [rewardToken, poolAddress]); - return api.sumTokens({ - tokensAndOwners: stakingData, - }); - }, - }, - }; - \ No newline at end of file diff --git a/projects/lioncommerce/index.js b/projects/lioncommerce/index.js deleted file mode 100644 index 7ac71f4b67f..00000000000 --- a/projects/lioncommerce/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { stakingPricedLP } = require("../helper/staking"); -const { unknownTombs, sumTokensExport } = require("../helper/unknownTokens"); -const { mergeExports } = require("../helper/utils"); - -const stakingValue = sumTokensExport({ - chain: "kava", - owner: "0x52b18024e084150e001a34be9c7a41706517d79f", - tokens: ["0x990e157fC8a492c28F5B50022F000183131b9026"], - lps: ["0x09d6561b3795ae237e42f7adf3dc83742e10a2e8"], - useDefaultCoreAssets: true, -}); -const lionStaking = { - kava: { - staking: stakingValue, - tvl: async () => ({}), - }, -}; - -module.exports = lionStaking; diff --git a/projects/liondex/index.js b/projects/liondex/index.js deleted file mode 100644 index 59d75e5109f..00000000000 --- a/projects/liondex/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') -const { sumTokens2,sumTokensExport } = require('../helper/unwrapLPs') - -//const treasure = "0x7fca3bf8adc4e143bd789aecda36c0ce34f1d75b"; -const lionDEXVault = "0x8eF99304eb88Af9BDe85d58a35339Cb0e2a557B6"; -const lionStaking = "0x154E2b1dBE9F493fF7938E5d686366138ddCE017"; -const LION = "0x8ebb85d53e6955e557b7c53acde1d42fd68561ec"; -const fsGLP = ADDRESSES.arbitrum.fsGLP; -const USDC = ADDRESSES.arbitrum.USDC; - - -module.exports = { - deadFrom: "2024-12-14", - methodology: `Counts fsGLP and USDC deposited to lionDEXVault. Staking counts Lion deposited to stakingPool.`, - arbitrum: { - tvl: sumTokensExport({ owners: [lionDEXVault], tokens: [ fsGLP, USDC]}), - staking: staking(lionStaking, LION) - } -} diff --git a/projects/liqee/index.js b/projects/liqee/index.js deleted file mode 100644 index 0845febb9d8..00000000000 --- a/projects/liqee/index.js +++ /dev/null @@ -1,21 +0,0 @@ - -const { compoundExports2 } = require('../helper/compound'); - -let allControllers = { - "ethereum": "0x8f1f15DCf4c70873fAF1707973f6029DEc4164b3", - "bsc": "0x6d290f45A280A688Ff58d095de480364069af110", -} - -module.exports = { - ethereum: compoundExports2({ - comptroller: allControllers.ethereum, abis: { - getAllMarkets: "address[]:getAlliTokens", - } - }), - bsc: compoundExports2({ - comptroller: allControllers.bsc, abis: { - getAllMarkets: "address[]:getAlliTokens", - } - }), - start: '2021-08-24', // Aug-24-2021 11:37:56 AM +UTC -} diff --git a/projects/liquid-bolt/index.js b/projects/liquid-bolt/index.js deleted file mode 100644 index 45317b3401b..00000000000 --- a/projects/liquid-bolt/index.js +++ /dev/null @@ -1,28 +0,0 @@ - -const { getUniTVL } = require('../helper/unknownTokens') - -const factory = { - bsc: "0xBDEc20d9cdf8E222EDd536268A9883a4C2ca172D", - fantom: "0xdE08A0860B5971201f4d621B6eD4bb5BFed454be", - polygon: "0xF301aE81800Aa97f68148531D487696EF939170E", - arbitrum: "0x3D225a66c4A609634fb2c2d75d30Fd6610EBb1BD", -}; - -module.exports = { - methodology: `Uses factory addresses to find and price Liquidity Pools TVL`, - bsc: { - tvl: getUniTVL({ factory: factory.bsc, useDefaultCoreAssets: true, }), - }, - fantom: { - tvl: getUniTVL({ factory: factory.fantom, useDefaultCoreAssets: true, }), - }, - polygon: { - tvl: getUniTVL({ factory: factory.polygon, useDefaultCoreAssets: true, }), - }, - arbitrum: { - tvl: getUniTVL({ factory: factory.arbitrum, useDefaultCoreAssets: true, }), - }, -}; - - - diff --git a/projects/liquid-collective/index.js b/projects/liquid-collective/index.js deleted file mode 100644 index fd56f966404..00000000000 --- a/projects/liquid-collective/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const token = '0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549' - -async function tvl(api) { - const supply = await api.call({ abi: 'uint256:totalUnderlyingSupply', target: token, }); - api.add(ADDRESSES.null, supply) -} - -module.exports = { - methodology: 'Retrieve the total underlying ETH supply', - ethereum: { - tvl - } -} diff --git a/projects/liquid-finance-arch/index.js b/projects/liquid-finance-arch/index.js deleted file mode 100644 index be485a97aeb..00000000000 --- a/projects/liquid-finance-arch/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const STAKING_CONTRACT = - "archway1p3wrpsrxldc6laecc8r3ck52cmg3chu06mmm3thqvt6exy36f79q575rsq"; -const SWAP_CONTRACT = - "archway1ywv0gxrw3kv25kn9f05dtqf6577fer5pc2vewvgcagpm5p8l4kuqc4qfp6"; - -async function tvl(api) { - const { chain } = api; - - const statusStakingInfo = await queryContract({ - contract: STAKING_CONTRACT, - chain, - data: { status_info: {} }, - }); - - const statusSwapInfo = await queryContract({ - contract: SWAP_CONTRACT, - chain, - data: { status_info: {} }, - }); - - api.add(ADDRESSES.archway.ARCH, statusStakingInfo.native.amount); - api.add(ADDRESSES.archway.ARCH, statusSwapInfo.liquidity); -} - -module.exports = { - methodology: - "TVL equals the sum of ARCH staked in the Stake Pool and ARCH in the Instant Unstaking Queue, multiplied by the current ARCH price.", - timetravel: false, - archway: { - tvl, - }, -}; diff --git a/projects/liquid-finance/index.js b/projects/liquid-finance/index.js deleted file mode 100644 index 5621859c947..00000000000 --- a/projects/liquid-finance/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumUnknownTokens, sumTokensExport, staking } = require('../helper/unknownTokens') - -const LIQD_TOKEN = ADDRESSES.arbitrum.LIQD -const LIQD_ETH_TOKEN = '0x73700aeCfC4621E112304B6eDC5BA9e36D7743D3' -const masterchef = '0x2582fFEa547509472B3F12d94a558bB83A48c007' -const WETH_POOL = '0x705ea996D53Ff5bdEB3463dFf1890F83f57CDe97' -const LIQD_STAKING = '0xA1A988A22a03CbE0cF089e3E7d2e6Fcf9BD585A9' -const TREASURY = '0x61fb28d32447ef7F4e85Cf247CB9135b4E9886C2' -const WETH = ADDRESSES.arbitrum.WETH -const chain = 'arbitrum' -const LPs = [ - '0x5dcf474814515b58ca0ca5e80bbb00d18c5b5cf8', - '0xb6a0ad0f714352830467725e619ea23e2c488f37', -] - -async function tvl(_, _b, {[chain]: block }) { - const toa = [] - LPs.map(i => toa.push([i, TREASURY])) // Protocol owned liquidity - toa.push([WETH,TREASURY]) - toa.push([WETH,WETH_POOL]) - return sumUnknownTokens({ chain, block, tokensAndOwners: toa, useDefaultCoreAssets: true, }) -} - -module.exports = { - arbitrum: { - tvl, - pool2: sumTokensExport({ owner: masterchef, tokens: LPs, chain, useDefaultCoreAssets: true, }), - staking: staking({ owner: LIQD_STAKING, tokens: [LIQD_TOKEN], chain, }) - } -} - - diff --git a/projects/liquid-ron/index.js b/projects/liquid-ron/index.js deleted file mode 100644 index 86f550eae03..00000000000 --- a/projects/liquid-ron/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const sdk = require('@defillama/sdk') - -const lronContract = ADDRESSES.ronin.LRON; - -async function lron(timestamp, ethBlock, {ronin:block}) { - const stakedRon = await sdk.api.abi.call({ - block, - chain : "ronin", - target: lronContract, - abi: "uint256:totalAssets" - }) - - return { - "ronin" : Number(stakedRon.output)/1e18, - } -} - -module.exports = { - ronin: { - tvl: lron - }, -} \ No newline at end of file diff --git a/projects/liquidagents/index.js b/projects/liquidagents/index.js deleted file mode 100644 index 87db45ef595..00000000000 --- a/projects/liquidagents/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const sui = require('../helper/chain/sui') - -const CREATE_EVENT_TYPE = '0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::events::Event<0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::liquid_staking::CreateEvent>'; -const INCLUDE_POOL_IDS = [ - '0x14347e46d48e39a33c8d4e63d5e95d513014ceced519d96ce1510b0dfadd6cd6', // JUG_SUI - '0x4f020d1e6d4a5b1269948963587877e7217bcdc5978ddbb393b0ec015f83bbbd', // KOIT_SUI - '0x0ba25d23da5da7fe121a0fd27e9404b3551c6dd1fa3c8887a94ac4e92ca13822', // NEURA_SUI, - '0xfd0de51ed8bbff6629b3ec5aa7da9ae0d4d3a507093f32ecd0911dcf0e9e98fe', // EXP_SUI - '0x51f6687d7c7da1a216b790181fcc79bad0251f6fe754b59f4ec9b809d7bb1a45', // FL_SUI - '0x132ccf683f4b963a7d24a3853fef4bce592ef81a647653f0aa3bc800e9473d93', // NDWS_SUI - '0x4dd83eca8da3a86594a5b8253a1731dad36b323bbbb088b4d160dd2ae8f33ab5', // ROGUE_SUI - '0x84e4c99591f5539cdee09568a650c0a552a95f0b215c2d8b353456eea0fed1f1', // DOGE_SUI' - '0x3e167bc4f32de3702380148144529fbb01e4d2766319eb8ff7ea9b865fd2997b', // GALAXY_SUI -] - -async function tvl() { - const poolIds = (await sui.queryEvents({ - eventType: CREATE_EVENT_TYPE, - transform: (i) => i.event.liquid_staking_info_id, - })).filter((id) => INCLUDE_POOL_IDS.includes(id)); - - let suiAmount = 0; - const data = await sui.getObjects(poolIds); - - data.forEach((pool) => { - if (!pool) return; - suiAmount += pool.fields.storage.fields.total_sui_supply / 10 ** 9; - }); - return { - sui: suiAmount, - } -} - - -module.exports = { - methodology: "Calculates the amount of SUI staked in ecosystem SpringSui LSTs.", - sui: { - tvl, - } -} diff --git a/projects/liquiddriver/abi.json b/projects/liquiddriver/abi.json deleted file mode 100644 index 32b2a27d1a6..00000000000 --- a/projects/liquiddriver/abi.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accLqdrPerShare, uint16 depositFeeBP)", - "poolLength": "uint256:poolLength", - "balanceOf": "uint256:balanceOf", - "lpToken": "function lpToken(uint256) view returns (address)", - "strategies": "function strategies(uint256) view returns (address)", - "get_virtual_price": "uint256:get_virtual_price", - "getPoolTokens": "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)", - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)", - "totalSupply": "uint256:totalSupply", - "exchangeRateStored": "uint256:exchangeRateStored", - "shadowLpToken": "address:lpToken", - "shadowStrategy": "address:strategy", - "getVirtualSupply": "uint256:getVirtualSupply" -} \ No newline at end of file diff --git a/projects/liquiddriver/index.js b/projects/liquiddriver/index.js deleted file mode 100644 index 4477865eb9e..00000000000 --- a/projects/liquiddriver/index.js +++ /dev/null @@ -1,247 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const BigNumber = require("bignumber.js"); - -// --- All sushitokens lp tokens are staked here for LQDR tokens --- -const MASTERCHEF = "0x742474dae70fa2ab063ab786b1fbe5704e861a0c"; -const MINICHEF = "0x6e2ad6527901c9664f016466b8DA1357a004db0f"; -const BSCMINICHEF = "0xD46db083De31c64AF3F680f139A31fF37bac004f"; -const usdcTokenAddress = ADDRESSES.fantom.USDC; -const wftmTokenAddress = ADDRESSES.fantom.WFTM; -const beethovenVaultAddress = "0x20dd72Ed959b6147912C2e529F0a0C651c33c9ce"; - -const LQDR = "0x10b620b2dbac4faa7d7ffd71da486f5d44cd86f9"; -const xLQDR = "0x3Ae658656d1C526144db371FaEf2Fff7170654eE"; - -const shadowChefAddresses = [ - "0x59ab3c33e75C91B2B632d51144e57293EF64E556", // LQDR/FTM" - "0xDC5bDd3966884a2b1cfFd4213DaE925778786f97", // SPIRIT/FTM - "0xFfa8B88160Bd847a3bF032B78c8967DCa877981C", // USDC/FTM - "0x767e4Dc3EA4FF70D97BDEEF086e4B021923E4BdD", // LINSPIRIT/SPIRIT - "0xA7cB4E3Ea2d6B44F4109970d7E9E7B7aBa372Eb5", // WBTC/FTM" - "0x9CD5ab5b2c00560E93Bb89174078a05b03Eb469e", // ETH/FTM" - "0x477A71A9154050DFbC497B9F782CC5169f7BDDf5", // fUSDT/FTM" - "0xc43a1555554FF87f957c0DD5B80ab54951265c2E", // DAI/FTM" - "0xf4987eE98881ded997D1F3389B82ADF99e6592ed", // MIM/FTM" - "0x3F576a5a3eb52e658bc88c23d8478Ac67eC90aeE", // FRAX/FTM" - "0x3Ce75C35AF2DD29D76C7C8521c218c5A0f2826A8", // BIFI/FTM" - "0x71943a80a81c64235fC45DE4BD06638556fC773E", // fUSDT/USDC" - "0x3beFeA69e89931b70B80231389F97A9bF6827B2E", // DAI/USDC" - "0x62A8bB540e52eDfFa5F71B9Ad6BEF52600A1e247", // MIM/USDC" - "0xDcBd61032cF40C16f6d7B124676C89a0e2e874c4", // FRAX/USDC" - "0xBb07eBA448e404B56Ba1273B762d690A57F7f84f", // MAI/USDC" - "0x5bC0F62BfBAc6C5f977BaC73EdC8FbCED89Ba8EC", // BUSD/USDC" - "0x4423Ca3dB49914c13068C484F9D341D636A515dd", // sFTMX/FTM" - "0x22214b00318300e0D046feD2D9CB166cBb48Ba60", // alUSD/USDC" - "0xA8E6F303092F0c345eEc9f780d72A8Bf56C54DF0", // gALCX/FTM" - "0x04C4244F6b497343e2CcD6f3fE992910c8557dCE", // COMB/FTM" - "0x46F8546E33900CcdB5D5FBE80af2449ecAe42128", // FXS/FTM" - "0xD75d45215a5E8E484F1f094f15b2f626A953456e", // TAROT/FTM" - "0x9757fd7d3B6281218E11Bab3b550eab8C4eF5eA9", // RING/FTM" - "0xa0AC54644dfCE40F83F3B1BC941c234532B4B8e1", // CRE8R/FTM" - "0x763caa35565d457AD4231E089C3E8fb3d0fa3d56", // WPGUNK/FTM - "0xf2c00E3ee1c67aAD4169bD041aFd3B7ff98b2775", // wBOMB/FTM - "0x57B57A9a34de8547EC4a26b4bded6e78c92C9A76", // USDC/BOO - "0x948dbcf4595366297E5F2c1baD1593dBBDe875C6", // FTM/gALCX - "0x1c9c9d2A73A07F2cbAaa7C086a2DA70f155667d6", // USDC/MAI - "0x0f45B4A89AAb28f4C4dC2d08ebAD277983d4B67a", // LQDR/FTM - "0x0BF91d2e547A07A41d48817bDD28cb331227d945", // MATIC/FTM - "0x762C8112207820d60FbB9894D429A60c570Ab574", // TOR/FTM - "0xD354908d297ce9a348b417d2e0F561EE7D11de5E", // wsHEC/FTM -]; - -const masterchefTvl = async (_ts, ethBlock, chainBlocks) => { - const balances = {}; - - const transformAddress = i => `fantom:${i}`; - - await addFundsInMasterChef( - balances, - MASTERCHEF, - chainBlocks.fantom, - "fantom", - transformAddress, - abi.poolInfo - ); - - return balances; -}; - -const hundredchefTvl = async (api) => { - const balances = {}; - const transformAddress = i => `fantom:${i}`; - - const hdaiChefAddress = "0x79364E45648Db09eE9314E47b2fD31c199Eb03B9"; - const husdcChefAddress = "0x9A07fB107b9d8eA8B82ECF453Efb7cFb85A66Ce9"; - const hmimChefAddress = "0xeD566B089Fc80Df0e8D3E0AD3aD06116433Bf4a7"; - const hfraxChefAddress = "0x669F5f289A5833744E830AD6AB767Ea47A3d6409"; - - const chefAddressess = [ - hdaiChefAddress, - husdcChefAddress, - hmimChefAddress, - hfraxChefAddress, - ]; - - await Promise.all(chefAddressess.map( async chefAddress => { - const token = await api.call({ - target: chefAddress, - abi: abi.lpToken, - params: 0 - }) - - const exchangeRateStored = await api.call({ - target: token, - abi: abi.exchangeRateStored, - }) - - const strategyAddress = await api.call({ - target: chefAddress, - abi: abi.strategies, - params: 0 - }) - - const strategyBalanace = await api.call({ - target: strategyAddress, - abi: abi.balanceOf, - }) - - sdk.util.sumSingleBalance( - balances, - transformAddress(usdcTokenAddress), - new BigNumber(Number(strategyBalanace)).times(exchangeRateStored).div(chefAddress === husdcChefAddress ? 1e18 : 1e30).toFixed(0) - ); - - })) - - return balances; -}; - -async function getMinichefTvl(api, minichef, balances = {}) { - const [lpTokens, strategies] = await Promise.all([ - api.fetchList({ itemAbi: abi.lpToken, lengthAbi: abi.poolLength, target: minichef}), - api.fetchList({ itemAbi: abi.strategies, lengthAbi: abi.poolLength, target: minichef}), - ]) - - const calls = [] - const callTokens = [] - strategies.forEach((val, i) => { - if (val === ADDRESSES.null) return; - calls.push(val) - callTokens.push(lpTokens[i].toLowerCase()) - } ) - - const balanceOfs = await api.multiCall({ abi: abi.balanceOf, calls }) - - callTokens.forEach((token, i) => sdk.util.sumSingleBalance(balances,token,balanceOfs[i], api.chain)) - - if (api.chain === 'fantom') { - await Promise.all([ - resolveBPT(api, balances), - resolvOperaBPT(api, balances), - ]) - } - - return sumTokens2({ balances, api, - // owner: minichef, tokens: lpTokens, - resolveLP: true, }) -} - -async function shadowChefTvl(api) { - const balances = {} - const [lpTokens, strategies] = await Promise.all([ - api.multiCall({ abi: abi.shadowLpToken, calls: shadowChefAddresses}), - api.multiCall({ abi: abi.shadowStrategy, calls: shadowChefAddresses}), - ]) - - const calls = [] - const callTokens = [] - strategies.forEach((val, i) => { - if (val === ADDRESSES.null) return; - calls.push(val) - callTokens.push(lpTokens[i].toLowerCase()) - } ) - - const balanceOfs = await api.multiCall({ abi: abi.balanceOf, calls }) - - callTokens.forEach((token, i) => sdk.util.sumSingleBalance(balances,token,balanceOfs[i], api.chain)) - - if (api.chain === 'fantom') { - await Promise.all([ - resolveBPT(api, balances), - resolvOperaBPT(api, balances), - ]) - } - - return sumTokens2({ balances, api, - // owner: minichef, tokens: lpTokens, - resolveLP: true, }) -} - -async function resolvOperaBPT(api, balances) { - const key = 'fantom:0xcdf68a4d525ba2e90fe959c74330430a5a6b8226' - const bal = balances[key] - if (!bal) return; - delete balances[key] - - const [tokenBalances, totalSupply] = await Promise.all([ - api.call({ - abi: abi.getPoolTokens, - target: beethovenVaultAddress, - params: ["0xcdf68a4d525ba2e90fe959c74330430a5a6b8226000200000000000000000008"], - }), - api.call({ - abi: abi.totalSupply, - target: '0xcdf68a4d525ba2e90fe959c74330430a5a6b8226', - }), - ]); - const lpTokenRatio = totalSupply === 0 ? 0 : bal / totalSupply - const bptSftmxTvlInFtm = tokenBalances['1'][0] * (100/30)* lpTokenRatio - sdk.util.sumSingleBalance(balances,usdcTokenAddress,bptSftmxTvlInFtm, api.chain) - return balances -} - -async function resolveBPT(api, balances) { - const key = 'fantom:0xc0064b291bd3d4ba0e44ccfc81bf8e7f7a579cd2' - const bal = balances[key] - if (!bal) return; - delete balances[key] - - const [tokenBalances, totalSupply] = await Promise.all([ - api.call({ - abi: abi.getPoolTokens, - target: beethovenVaultAddress, - params: ["0xc0064b291bd3d4ba0e44ccfc81bf8e7f7a579cd200000000000000000000042c"], - }), - api.call({ - abi: abi.getVirtualSupply, - target: '0xc0064b291bd3d4ba0e44ccfc81bf8e7f7a579cd2', - }), - ]); - const sftmTokenAddress = "0xd7028092c830b5C8FcE061Af2E593413EbbC1fc1"; - const lpTokenRatio = totalSupply === 0 ? 0 : bal / totalSupply - const bptSftmxTvlInFtm = tokenBalances['1'][1] * lpTokenRatio - const bptSftmxTvlInFtm1 = tokenBalances['1'][2] * lpTokenRatio - sdk.util.sumSingleBalance(balances,wftmTokenAddress,bptSftmxTvlInFtm, api.chain) - sdk.util.sumSingleBalance(balances,sftmTokenAddress,bptSftmxTvlInFtm1, api.chain) - return balances -} - -module.exports = { - fantom: { - staking: staking(xLQDR, LQDR, "fantom", "fantom:" + LQDR), - tvl: sdk.util.sumChainTvls([ - masterchefTvl, - (api) => getMinichefTvl(api, MINICHEF), - hundredchefTvl, - shadowChefTvl, - ]), - }, - bsc: { - tvl: (api) => getMinichefTvl(api, BSCMINICHEF), - } -}; // node test.js projects/liquiddriver/index.js diff --git a/projects/liquidity-house/index.js b/projects/liquidity-house/index.js deleted file mode 100644 index ddd3087da50..00000000000 --- a/projects/liquidity-house/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: "TVL is the total quantity of USDC held in the contract", - etlk: { - tvl: sumTokensExport({ - owners: ["0x0c532e1e916219007f244e2d8Ef46f8530Ec75DE"], - tokens: [ADDRESSES.etlk.USDC], - }), - }, -}; diff --git a/projects/liquidity-slicing/index.js b/projects/liquidity-slicing/index.js deleted file mode 100644 index 0928513e44e..00000000000 --- a/projects/liquidity-slicing/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ethers } = require('ethers'); - -const abi = { - "checkContract": "function checkContract(uint16,bytes32) view returns (uint256)", - "nodeStates": "function nodeStates(uint256,bytes32) view returns (uint256 totalStaked,uint256,uint256)" -} - - -const MANAGER_CONTRACT_ADDRESS = "0x1F0ea3b63F3Fca05719E54E7469Ef897754eF666"; - -const config = { - manta: { - transformToken: "manta-network", - chainId: 2, - decimals: 18, - delegator: { - "0x89060B31DB21C6cB4e946EaCB28EFefF085C275a": ["0x2847e7f2823a5048f4ae2cd808a5e978aa6ce41fcbb6e7e7bbbb1b64446b0639"] - }, - validator: { - "0xaB21907461313127Ce944F6f168888d93C091363": ["0x8e8103383262ff2256490767e2338ffc452bf602b0addede203da3218cc9d241"] - } - }, - aleo: { - transformToken: "aleo", - chainId: 5, - decimals: 6, - delegator: { - "0x52ade9c48599d71603cf661f98c9b7bd21cfb8ba448efd6204e89096b969c30c": ["0xbb57045a8a9c39dfb06baaf5ed6cb02343a17feecbf63aba9b15a6694476140f"] - }, - validator: { - "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff": ["0x0000000000000000000000000000000000000000000000000000000000000005"] - } - } -}; - -async function tvl(api) { - for (const chain of Object.keys(config)) { - const { transformToken: tokenId, chainId, decimals, delegator, validator, } = config[chain]; - const allConfig = { ...delegator, ...validator }; - - for (const [hostAddr, nodes] of Object.entries(allConfig)) { - const i = await api.call({ abi: abi.checkContract, target: MANAGER_CONTRACT_ADDRESS, params: [chainId, ethers.zeroPadValue(hostAddr, 32)] }); - const calls = nodes.map(v => ({ params: [i, v] })) - const stakes = (await api.multiCall({ abi: abi.nodeStates, calls, target: MANAGER_CONTRACT_ADDRESS })).map(i => i.totalStaked) - stakes.forEach(val => api.addCGToken(tokenId, val / (10 ** decimals))) - } - } -} - -module.exports = { - arbitrum: { - tvl, - } -} diff --git a/projects/liquidloans-io/index.js b/projects/liquidloans-io/index.js deleted file mode 100644 index d8bbd753ce4..00000000000 --- a/projects/liquidloans-io/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getLiquityTvl } = require("../helper/liquity.js") -const { staking } = require("../helper/staking.js") - -module.exports = { - pulse: { - tvl: getLiquityTvl('0xD79bfb86fA06e8782b401bC0197d92563602D2Ab'), - staking: staking('0x853F0CD4B0083eDf7cFf5Ad9A296f02Ffb71C995', '0x9159f1D2a9f51998Fc9Ab03fbd8f265ab14A1b3B') - } -} \ No newline at end of file diff --git a/projects/liquidrium/abi.json b/projects/liquidrium/abi.json deleted file mode 100755 index 1d18d506e2c..00000000000 --- a/projects/liquidrium/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getTotalAmounts": "function getTotalAmounts() view returns (uint256 total0, uint256 total1)" -} \ No newline at end of file diff --git a/projects/liquidrium/index.js b/projects/liquidrium/index.js deleted file mode 100644 index dcd811831b8..00000000000 --- a/projects/liquidrium/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const sdk = require('@defillama/sdk'); -const abi = require('./abi.json'); -const { vaults } = require('./vaults'); 1 - -function calculateValue(amount, decimals) { - return amount / 10 ** decimals; -} -async function tvl(block, chain) { - let balances = {}; - - for (let i = 0; i < vaults.length; i++) { - if (vaults[i].chain == chain) { - const poolTVL = await sdk.api.abi.call({ - target: vaults[i].address, - abi: abi['getTotalAmounts'], - block: block, - chain: vaults[i].chain - }); - - const token0Amount = calculateValue( - poolTVL.output.total0, vaults[i].token1decimal); - const token1Amount = calculateValue( - poolTVL.output.total1, vaults[i].token2decimal); - - sdk.util.sumSingleBalance( - balances, vaults[i].token1Name, token0Amount); - sdk.util.sumSingleBalance( - balances, vaults[i].token2Name, token1Amount); - } - } - - return balances; -} -async function tvlPolygon(timestamp, block, chainBlocks) { - return await tvl(chainBlocks['polygon'], 'polygon'); -} -async function tvlArbitrum(timestamp, block, chainBlocks) { - return await tvl(chainBlocks['arbitrum'], 'arbitrum'); -} -async function tvlEth(timestamp, block, chainBlocks) { - return await tvl(block, 'ethereum'); -} -module.exports = { - polygon: { - tvl: tvlPolygon, - }, - arbitrum: { - tvl: tvlArbitrum, - }, - ethereum: { - tvl: tvlEth, - }, - methodology: 'We iterate through each HyperLiquidrium and get the total amounts of each deposited asset, then multiply it by their USD dollar provided by CoinGecko' -}; \ No newline at end of file diff --git a/projects/liquidrium/vaults.js b/projects/liquidrium/vaults.js deleted file mode 100644 index b49294e83c3..00000000000 --- a/projects/liquidrium/vaults.js +++ /dev/null @@ -1,74 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const vaults = [ - { - name: "usdc-eth", - address: "0xF82aeDC7faA3Fe1F412C71fe5E432690C46cd1bb", - token1: ADDRESSES.ethereum.USDC, - token2: ADDRESSES.ethereum.WETH, - token1decimal: 6, - token2decimal: 18, - token1Name: "usd-coin", - token2Name: "ethereum", - chain: "ethereum" - }, - { - name: "wbtc-eth", - address: "0x3FeE1B1C829DB1250B0e6B8605741E944Ed3A41e", - token1: ADDRESSES.ethereum.WBTC, - token2: ADDRESSES.ethereum.WETH, - token1decimal: 8, - token2decimal: 18, - token1Name: "wrapped-bitcoin", - token2Name: "ethereum", - chain: 'ethereum' - }, - { - name: "eth-usdc", - address: "0x7F6d25dE79559e548f0417aeB1953Ab6D3D85b14", - token1: ADDRESSES.arbitrum.WETH, - token2: ADDRESSES.arbitrum.USDC, - token1decimal: 18, - token2decimal: 6, - token1Name: "ethereum", - token2Name: "usd-coin", - chain: "arbitrum" - }, - { - name: "wbtc-eth", - address: "0x849668517a74535EC5ECc09Fa9A22e0CEf91443E", - token1: ADDRESSES.arbitrum.WBTC, - token2: ADDRESSES.arbitrum.WETH, - token1decimal: 8, - token2decimal: 18, - token1Name: "wrapped-bitcoin", - token2Name: "ethereum", - chain: "arbitrum" - }, - { - name: "matic-usdc", - address: "0xB19e59b77E173363FB7Ce674f1279c76ee237c7A", - token1: ADDRESSES.polygon.WMATIC_2, - token2: ADDRESSES.polygon.USDC, - token1decimal: 18, - token2decimal: 6, - token1Name: "wmatic", - token2Name: "usd-coin", - chain: "polygon" - }, - { - name: "matic-weth", - address: "0x249403E3163aAA88259e0e79A513E999EF8AbEc3", - token1: ADDRESSES.polygon.WMATIC_2, - token2: ADDRESSES.polygon.WETH_1, - token1decimal: 18, - token2decimal: 18, - token1Name: "wmatic", - token2Name: "ethereum", - chain: "polygon" - }, -] - -module.exports = { - vaults - } \ No newline at end of file diff --git a/projects/liquidswap-aptos/index.js b/projects/liquidswap-aptos/index.js deleted file mode 100644 index 927de84c76e..00000000000 --- a/projects/liquidswap-aptos/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const { dexExport, getResources } = require('../helper/chain/aptos') -const sdk = require('@defillama/sdk'); -const { transformDexBalances } = require('../helper/portedTokens'); - -module.exports = { - misrepresentedTokens: true, - aptos: { - tvl: sdk.util.sumChainTvls([ - dexExport({ - account: '0x05a97986a9d031c4567e15b797be516910cfcb4156312482efc6a19c0a30c948', - poolStr: 'liquidity_pool::LiquidityPool', - }).aptos.tvl, - dexExport({ - account: '0x61d2c22a6cb7831bee0f48363b0eec92369357aece0d1142062f7d5d85c7bef8', - poolStr: 'liquidity_pool::LiquidityPool', - }).aptos.tvl - ]) - }, - move: { - tvl: sdk.util.sumChainTvls([ - movePoolsV05Tvl, - movePoolsV1Tvl - ]) - } -} - -async function movePoolsV05Tvl(api) { - const account = '0x3851f155e7fc5ec98ce9dbcaf04b2cb0521c562463bd128f9d1331b38c497cf3' - const poolStr = 'liquidity_pool::LiquidityPool' - const token0Reserve = i => i.data.coin_x_reserve.value - const token1Reserve = i => i.data.coin_y_reserve.value - const chain = api.chain - let pools = await getResources(account, chain) - const resources = await getResources('0x4763c5cfde8517f48e930f7ece14806d75b98ce31b0b4eab99f49a067f5b5ef2', chain) - pools = pools.filter(i => i.type.includes(poolStr)) - api.log(`Number of pools: ${pools.length}`) - const data = [] - const tokenMap = {} - resources.forEach(r => { - if (!r.type.includes('wrapped')) return; - let key = r.type.split('<')[1].replace('>', '') - tokenMap[key] = r.data.metadata?.inner - }) - const getTokens = i => i.type.split('<')[1].replace('>', '').split(', ').map(i => i.includes('wrapped') ? tokenMap[i] : i) - - pools.forEach(i => { - const token0Bal = token0Reserve(i) - const token1Bal = token1Reserve(i) - const [token0, token1] = getTokens(i) - data.push({ - token0, - token1, - token0Bal, - token1Bal, - }) - }) - - return transformDexBalances({ api, data }) -} - -async function movePoolsV1Tvl(api) { - const account = '0xeef5ce9727e7faf3b83cb0630e91d45612eac563f670eecaadf1cb22c3bdfdfb' - const poolStr = 'pool::Pool' - const token0Reserve = i => i.data.coins_x.value - const token1Reserve = i => i.data.coins_y.value - const chain = api.chain - let pools = await getResources(account, chain) - const resources = await getResources('0x4763c5cfde8517f48e930f7ece14806d75b98ce31b0b4eab99f49a067f5b5ef2', chain) - pools = pools.filter(i => i.type.includes(poolStr)) - api.log(`Number of pools: ${pools.length}`) - const data = [] - const tokenMap = {} - resources.forEach(r => { - if (!r.type.includes('wrapped')) return; - let key = r.type.split('<')[1].replace('>', '') - tokenMap[key] = r.data.metadata?.inner - }) - const getTokens = i => i.type.split('<')[1].replace('>', '').split(', ').map(i => i.includes('wrapped') ? tokenMap[i] : i) - - pools.forEach(i => { - const token0Bal = token0Reserve(i) - const token1Bal = token1Reserve(i) - const [token0, token1] = getTokens(i) - data.push({ - token0, - token1, - token0Bal, - token1Bal, - }) - }) - - return transformDexBalances({ api, data }) -} \ No newline at end of file diff --git a/projects/liquidswap/index.js b/projects/liquidswap/index.js deleted file mode 100644 index 11d2cd54603..00000000000 --- a/projects/liquidswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -module.exports={ - methodology: "We are counting all the liquidity on their DEX as TVL, data is sourced from the subgraph at 'https://subgraph.liquidchain.net/subgraphs/name/liquid/exchange'", - liquidchain:{ - tvl: () => ({}) // chain rugged - } -} \ No newline at end of file diff --git a/projects/liquis/abi.json b/projects/liquis/abi.json deleted file mode 100644 index 9cbeb7cc01d..00000000000 --- a/projects/liquis/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)", - "pool": "function pool() view returns (address)", - "tickLower": "function tickLower() view returns (int24)", - "tickUpper": "function tickUpper() view returns (int24)", - "getReserves": "function getReserves(tuple(address pool, int24 tickLower, int24 tickUpper) key) view returns (uint112 reserve0, uint112 reserve1)" -} \ No newline at end of file diff --git a/projects/liquis/index.js b/projects/liquis/index.js deleted file mode 100644 index ebcb942fe07..00000000000 --- a/projects/liquis/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { unwrapBalancerToken } = require('../helper/unwrapLPs') - -const LIQUIS_BOOSTER = "0x631e58246A88c3957763e1469cb52f93BC1dDCF2" -const addresses = { - liq: "0xD82fd4D6D62f89A1E50b1db69AD19932314aa408", - liqLocker: "0x748A0F458B9E71061ca0aC543B984473F203E1CB", - veLIT: "0xf17d23136B4FeAd139f54fB766c8795faae09660", - lit80weth20: "0x9232a548DD9E81BaC65500b5e0d918F8Ba93675C", - voterProxy: "0x37aeB332D6E57112f1BFE36923a7ee670Ee9278b", - lens: "0xb73f303472c4fd4ff3b9f59ce0f9b13e47fbfd19", -}; - -async function tvl(api) { - // Compute TVL of lps - let pools = await api.fetchList({ target: LIQUIS_BOOSTER, itemAbi: abi.poolInfo, lengthAbi: abi.poolLength, }) - const liqPools = pools.map(pool => pool.token); - const poolInputs = pools.map(pool => pool.lptoken); - const poolUnis = await api.multiCall({ calls: poolInputs, abi: abi.pool, }); - const poolUpperTicks = await api.multiCall({ calls: poolInputs, abi: abi.tickUpper, }); - const poolLowerTicks = await api.multiCall({ calls: poolInputs, abi: abi.tickLower, }); - const liqBalances = await api.multiCall({ calls: liqPools, abi: 'erc20:totalSupply', }); - const bunniBalances = await api.multiCall({ calls: poolInputs, abi: 'erc20:totalSupply', }); - const calls = poolUnis.map((pool, i) => ({ params: [[pool, poolLowerTicks[i], poolUpperTicks[i]]] })) - const res = await api.multiCall({ abi: abi.getReserves, calls, target: addresses.lens }) - let tokenCalls = [] - let reserves = res.filter((val, i) => { - if (!(+val.reserve0 || +val.reserve1)) return; // ignore tokens without reserve - tokenCalls.push(poolUnis[i]) - return val - }) - let token0s = await api.multiCall({ abi: 'address:token0', calls: tokenCalls }) - let token1s = await api.multiCall({ abi: 'address:token1', calls: tokenCalls }) - reserves.forEach(({ reserve0, reserve1 }, i) => { - const ratio = liqBalances[i] / bunniBalances[i]; - api.add(token0s[i], reserve0 * ratio) - api.add(token1s[i], reserve1 * ratio) - }) - - // Compute veLIT locked value - const { output: veLitTotalSupply } = await sdk.api.erc20.totalSupply({ target: addresses.veLIT, block: api.block }) - const { output: veBalance } = await sdk.api.erc20.balanceOf({ target: addresses.veLIT, owner: addresses.voterProxy, block: api.block }) - const ratio = veBalance / veLitTotalSupply - const bal = await unwrapBalancerToken({ api, balancerToken: addresses.lit80weth20, owner: addresses.veLIT, }) - Object.entries(bal).forEach(([token, value]) => { - api.add(token, +value * ratio, { skipChain: true, }) - }) -} - -module.exports = { - methodology: "Adds up the total deposited LPs, the total veLIT owned, and the total LIT Locked.", - ethereum: { - tvl, - staking: staking(addresses.liqLocker, addresses.liq) - } -} \ No newline at end of file diff --git a/projects/liquity-v2/index.js b/projects/liquity-v2/index.js deleted file mode 100644 index 1d488160988..00000000000 --- a/projects/liquity-v2/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { getLiquityV2Tvl } = require('../helper/liquity') -const { mergeExports } = require('../helper/utils') - -const config = { - ethereum: '0xd99dE73b95236F69A559117ECD6F519Af780F3f7' -} -const exportsV1 = {} -const exportsV2 = {} - -Object.keys(config).forEach(chain => { - exportsV1[chain] = { - tvl: getLiquityV2Tvl(config[chain]) - } -}) - -const configV2 = { - ethereum: '0xf949982b91c8c61e952b3ba942cbbfaef5386684', -} -Object.keys(configV2).forEach(chain => { - exportsV2[chain] = { - tvl: getLiquityV2Tvl(configV2[chain]) - } -}) - - -module.exports = mergeExports([exportsV1, exportsV2]) - -module.exports.hallmarks = [ - ["2025-02-12", "Issue found in contracts"], - ["2025-05-19", "Liquity V2 relaunch"] -] diff --git a/projects/liquity/index.js b/projects/liquity/index.js deleted file mode 100644 index 835ba9c1ca5..00000000000 --- a/projects/liquity/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { getLiquityTvl } = require("../helper/liquity.js"); - -// TroveManager holds total system collateral (deposited ETH) -const TROVE_MANAGER_ADDRESS = "0xA39739EF8b0231DbFA0DcdA07d7e29faAbCf4bb2"; -const STAKING_ADDRESS = "0x4f9Fbb3f1E99B56e0Fe2892e623Ed36A76Fc605d"; -const LQTY_ADDRESS = "0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D" - -module.exports = { - start: '2021-04-05', - ethereum: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS), - staking: staking(STAKING_ADDRESS, LQTY_ADDRESS) - } -} \ No newline at end of file diff --git a/projects/liquix/index.js b/projects/liquix/index.js deleted file mode 100644 index 5f699b26c41..00000000000 --- a/projects/liquix/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - arbitrum: { - network: "arbitrum", - factory: "0x37215Af590CED3f50a4e3Af8BE903E4307C71C1F", - helper: "0x6376f97fc9bc9a0ebd03fa89eF8a653A79b41e98", - fromBlock: 145653947, - }, - optimism: { - network: "optimism", - factory: "0xd8B3442D24F98497134904e3C6c14F8b15a451de", - helper: "0x391E307C9a67bFcbfEa64f82627c2Ab54b1B96d8", - fromBlock: 112183916, - }, - polygon: { - network: "polygon", - factory: "0x3f28b47050A4B79E515fCfCE2af41744c42084Ae", - helper: "0x43B0281042590D42ae7Cb62Eb1f8e3124113C0BF", - fromBlock: 49963323, - }, - blast: { - network: "blast", - factory: "0xAe2F0EdEE8d02a13889055Aa94BDDA263bEF0520", - helper: "0xEe99ac9893811B3006ce1fceE78cdc7Fd2375724", - fromBlock: 232415, - }, -}; - - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, -}; - -Object.keys(config).forEach((chain) => { - const { factory, helper, fromBlock } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: - "event VaultCreated(string name, address proxyAddress)", - onlyArgs: true, - fromBlock, - }); - const vaults = logs.map(i => i.proxyAddress) - const _balances = await api.multiCall({ abi: 'function totalUnderlying(address vault_) external view returns ((address,uint256)[] memory)', target: helper, calls: vaults, permitFailure: true, }) - for (const balances of _balances) { - if (!balances) continue; - for (const balance of balances) { - api.add(balance[0], balance[1]) - } - } - } - } -}); \ No newline at end of file diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js deleted file mode 100644 index ba336808f92..00000000000 --- a/projects/liqwid/index.js +++ /dev/null @@ -1,135 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/cardano'); -const { graphQuery } = require('../helper/http'); - -module.exports = { - cardano: { - // tvl: sumTokensExport({ scripts: scriptAddresses, }), - tvl, - borrowed, - staking: sumTokensExport({ scripts: ["addr1w8arvq7j9qlrmt0wpdvpp7h4jr4fmfk8l653p9t907v2nsss7w7r4"], }), - methodology: 'Adds up the Ada in the 16 action tokens and batch final token.' - } -}; - -const endpoint = 'https://v2.api.liqwid.finance/graphql' - -const queryAdaLoans = `query($input: LoansInput){ - liqwid { - data { - loans(input: $input) { - page - pagesCount - results { - collaterals { - qTokenAmount - market { - id - } - } - } - } - } - } -} -` - -const query = `query($input: MarketsInput) { - liqwid { - data { - markets(input: $input) { - page - pagesCount - results { - id - asset { - id - currencySymbol - name - decimals - } - supply - liquidity - borrow - utilization - } - } - } - } -} -` - -const tokenMapping = { - Ada: 'lovelace', - DJED: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61446a65644d6963726f555344', - USDM: 'c48cbb3d5e57ed56e276bc45f99ab39abe94e6cd7ac39fb402da47ad0014df105553444d', - DAI: 'dai', - USDC: 'usd-coin', - USDT: 'tether', -} - -const getToken = (market) => tokenMapping[market.id] ?? market.asset.currencySymbol + market.asset.name - -async function tvl(api) { - const getMarkets = async (pageIndex = 0, collectedMarkets = []) => { - const { - liqwid: { - data: { markets }, - }, - } = await graphQuery(endpoint, query, { - input: { - page: pageIndex, - }, - }) - - const allMarkets = [...collectedMarkets, ...markets.results] - - // Check if we've reached the last page - if (pageIndex < markets.pagesCount - 1) { - return await getMarkets(pageIndex + 1, allMarkets) - } - - return allMarkets - } - - const markets = await getMarkets() - markets.forEach((market) => - add(api, market, market.liquidity * 10 ** market.asset.decimals), - ) -} - -function add(api, market, bal) { - const token = getToken(market) - if (["usd-coin", "tether",].includes(token)) bal /= 1e8 - if (["dai",].includes(token)) bal /= 1e6 - api.add(token, bal, { - skipChain: ['usd-coin', 'tether', 'dai'].includes(token) - }) -} - -async function borrowed(api) { - const getMarkets = async (pageIndex = 0, collectedMarkets = []) => { - const { - liqwid: { - data: { markets }, - }, - } = await graphQuery(endpoint, query, { - input: { - page: pageIndex, - }, - }) - - const allMarkets = [...collectedMarkets, ...markets.results] - - // Check if we've reached the last page - if (pageIndex < markets.pagesCount - 1) { - return await getMarkets(pageIndex + 1, allMarkets) - } - - return allMarkets - } - - const markets = await getMarkets() - markets.forEach((market) => { - add(api, market, market.borrow * 10 ** market.asset.decimals) - }) -} diff --git a/projects/lis/index.js b/projects/lis/index.js deleted file mode 100644 index f6e655e46e1..00000000000 --- a/projects/lis/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const MINT_TOKEN_CONTRACT = ADDRESSES.ethereum.WSTETH; -const addresses = [ - "0x19d531fb5369a25a8497e606ba131fa85e2026fc", - "0xa3820605c53922c43d0293bbda8975aedfd2bef8", - "0x5794ca8ec8eafab6da6f3a803f45cc826f9ab4f8", - "0x433242ffec1d52a2d8f8fc99223b6f94443a53a9", - "0x5f34719fdf6ef2808394d27cc46056ad3b2baa41", - "0x2f65ab18a09b19afee58610dee7224175be3e38b", - "0x2ae2cc95da1e90cd94a6fda8a1a16c756ef9aafa" -]; - -async function tvl(api) { - const collateralBalance = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: addresses.map(addr => ({ - target: MINT_TOKEN_CONTRACT, - params: [addr], - })), - }); - - const total = collateralBalance.reduce((a, b) => a + BigInt(b), 0n); - api.add(MINT_TOKEN_CONTRACT, total.toString()); -} - -module.exports = { - ethereum: { - tvl - }, -}; diff --git a/projects/lisa/api.js b/projects/lisa/api.js deleted file mode 100644 index e4f81d80244..00000000000 --- a/projects/lisa/api.js +++ /dev/null @@ -1,16 +0,0 @@ -const { call } = require('../helper/chain/stacks-api') - -module.exports = { - timetravel: false, - stacks: { tvl } -} - -async function tvl() { - const reserveAddr = 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.token-lqstx'; - const registryAddr = 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.lqstx-mint-registry'; - const pending = await call({ target: registryAddr, abi: 'get-mint-requests-pending-amount'}); - const reserve = await call({ target: reserveAddr, abi: 'get-reserve' }); - return { - blockstack: (+reserve.value + +pending.toString()) / 1e6 - } -} \ No newline at end of file diff --git a/projects/lisa/index.js b/projects/lisa/index.js deleted file mode 100644 index f9255ff2d9f..00000000000 --- a/projects/lisa/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("lisa", ['stacks']), -} diff --git a/projects/lisk-l2/index.js b/projects/lisk-l2/index.js deleted file mode 100644 index 9d4cb7703aa..00000000000 --- a/projects/lisk-l2/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') -const config = { - ethereum: { - owners: ['0x2658723bf70c7667de6b25f99fcce13a16d25d08', '0x26dB93F8b8b4f7016240af62F7730979d353f9A7',], - tokens: [nullAddress], - } -} - -Object.keys(config).forEach(chain => { - const { owners, tokens = [], blacklistedTokens, } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens, fetchCoValentTokens: true, blacklistedTokens, }) - } -}) \ No newline at end of file diff --git a/projects/lista-lending/index.js b/projects/lista-lending/index.js deleted file mode 100644 index de99db09379..00000000000 --- a/projects/lista-lending/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const config = { - bsc: { vault: '0x8F73b65B4caAf64FBA2aF91cC5D4a2A1318E5D8C', fromBlock: 48000000, vaultInfo: 'https://api.lista.org/api/moolah/vault/list?page=1&pageSize=1000' } -} -const abi = { - totalAssets: "uint256:totalAssets", - idToMarketParams: "function idToMarketParams(bytes32) view returns (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv)", - market: "function market(bytes32) view returns (uint128 totalSupplyAssets, uint128 totalSupplyShares, uint128 totalBorrowAssets, uint128 totalBorrowShares, uint128 lastUpdate, uint128 fee)" -} - - -async function getMarketIds(api) { - const { vaultInfo } = config[api.chain] - const { data: { list: vaults } } = await getConfig('lista/lending-' + api.chain, vaultInfo) - const ids = vaults.map(vault => vault.collaterals.map(collateral => collateral.id)).flat() - return [...new Set(ids)] -} - -module.exports = { - methodology: "TVL counts the tokens locked in the protocol's vaults", - start: '2025-04-01', - bsc: { - tvl: async (api) => { - const { vault, } = config[api.chain] - const marketIds = await getMarketIds(api) - const marketInfos = await api.multiCall({ target: vault, abi: abi.idToMarketParams, calls: marketIds }) - const tokens = marketInfos.map(i => [i.collateralToken, i.loanToken]).flat() - return api.sumTokens({ tokens, owner: vault }) - }, - borrowed: async (api) => { - const { vault, } = config[api.chain] - const marketIds = await getMarketIds(api) - const marketInfos = await api.multiCall({ target: vault, abi: abi.idToMarketParams, calls: marketIds }) - const loanTokens = marketInfos.map(i => i.loanToken) - const marketInfos2 = await api.multiCall({ target: vault, abi: abi.market, calls: marketIds }) - const borrowedAmounts = marketInfos2.map(market => market.totalBorrowAssets) - api.add(loanTokens, borrowedAmounts) - } - } -} \ No newline at end of file diff --git a/projects/listapie/index.js b/projects/listapie/index.js deleted file mode 100644 index 068b5af1d86..00000000000 --- a/projects/listapie/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const config = { - bsc: { - velista: "0xd0C380D31DB43CD291E2bbE2Da2fD6dc877b87b3", - listapie: "0x76865d4bfa513a3dd7f8a9977f3dd71e8ab2ca97", - lista_token: "0xFceB31A79F71AC9CBDCF853519c1b12D379EdC46" - } -} -const { sumTokensExport } = require('../helper/unwrapLPs'); -async function staking(api) { - const { velista, listapie, lista_token } = config[api.chain]; - - - let bal = await api.call({ abi: 'function balanceOf(address) view returns (uint256)', target: velista, params: [listapie] }); - // (one velista=52lista) - bal = bal / 52 - api.add(lista_token, bal) -} - -module.exports = { - bsc: { - tvl: sumTokensExport({ - tokensAndOwners: [ - ["0xB2Aa63f363196caba3154D4187949283F085a488", "0x76865d4bfa513a3dd7f8a9977f3dd71e8ab2ca97"], // all lp tokens of lista dao held by listapie - ["0x3685502Ea3EA4175FB5cBB5344F74D2138A96708", "0x76865d4bfa513a3dd7f8a9977f3dd71e8ab2ca97"], - ["0x04d6115703b0127888323F142B8046C7c13f857d", "0x76865d4bfa513a3dd7f8a9977f3dd71e8ab2ca97"], - ["0xDf0B9b59E92A2554dEdB6F6F4AF6918d79DD54c4", "0x76865d4bfa513a3dd7f8a9977f3dd71e8ab2ca97"], - ["0x885711BeDd3D17949DFEd5E77D5aB6E89c3DFc8C", "0x76865d4bfa513a3dd7f8a9977f3dd71e8ab2ca97"], - ["0xab092C47b23fBa03Ac1F0EC5F8E94110eb5Fff22", "0x76865d4bfa513a3dd7f8a9977f3dd71e8ab2ca97"], - ["0xFceB31A79F71AC9CBDCF853519c1b12D379EdC46", "0x934c69e35cA3a2774Cc0aa36f5632f1C39f3aC36"], // Lista rush 1 - - ], - resolveLP: true, - }), - staking, - }, -}; - - - - -module.exports.doublecounted = true \ No newline at end of file diff --git a/projects/lithos/index.js b/projects/lithos/index.js deleted file mode 100644 index 69d5ee787e7..00000000000 --- a/projects/lithos/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - plasma: { - tvl: getUniTVL({ - factory: "0x71a870D1c935C2146b87644DF3B5316e8756aE18", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/litxswap/index.js b/projects/litxswap/index.js deleted file mode 100644 index fbe2ba3b8f1..00000000000 --- a/projects/litxswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - pulse: { - factory: "0x24398b6ea5434339934D999E431807B1C157b4Fd", - fromBlock: 17449439, - isAlgebra: true, - }, - bsc: { - factory: "0xbbc7f5605c9cb341d9c41e46ae6ceb30511bdfcf", - fromBlock: 29291639, - isAlgebra: true, - }, -}); diff --git a/projects/lixir/abi.json b/projects/lixir/abi.json deleted file mode 100644 index 72ac78801a5..00000000000 --- a/projects/lixir/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "getRoleMemberCount": "function getRoleMemberCount(bytes32 role) view returns (uint256)", - "getRoleMember": "function getRoleMember(bytes32 role, uint256 index) view returns (address)", - "calculateTotals": "function calculateTotals() view returns (uint256 total0, uint256 total1, uint128 mL, uint128 rL)", - "token0": "address:token0", - "token1": "address:token1", - "balanceOf": "function balanceOf(address account) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/lixir/index.js b/projects/lixir/index.js deleted file mode 100644 index 5d003a73f6c..00000000000 --- a/projects/lixir/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const abi = require('./abi.json') -const { staking } = require('../helper/staking'); - -const oldRegistry = "0x3228f22d98d81A859aCC9890c3874FfF864a8Bd4"; -const newRegistry = "0x18bf8A3eE39Be5730189A0C88D90f744e3c55B20"; -const vault_role = "0x0e2208c692f4f271957e6c9d7c9785b7c2c3a7e329d54eecdfaa3c5f48b0cd51"; -const lixirToken = "0xd0345D30FD918D7682398ACbCdf139C808998709"; - -async function ethTvl(api) { - await vaultTvl(oldRegistry, api); - await vaultTvl(newRegistry, api) -} - -async function vaultTvl(registry, api) { - const count = await api.call({ abi: abi.getRoleMemberCount, target: registry, params: vault_role }) - const calls = [] - for (let i = 0; i < count; i++) - calls.push({ params: [vault_role, i] }) - - - const vaults = await api.multiCall({ abi: abi.getRoleMember, target: registry, calls, }) - const token0s = await api.multiCall({ abi: abi.token0, calls: vaults }) - const token1s = await api.multiCall({ abi: abi.token1, calls: vaults }) - const totals = await api.multiCall({ abi: abi.calculateTotals, calls: vaults }) - - for (let i = 0; i < count; i++) { - api.add(token0s[i], totals[i].total0) - api.add(token1s[i], totals[i].total1) - } -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl: ethTvl, - staking: staking("0x29adccf67821e9236b401df02080bac67f84192d", lixirToken) - } -} \ No newline at end of file diff --git a/projects/llama-airforce/index.js b/projects/llama-airforce/index.js deleted file mode 100644 index e7e783f9188..00000000000 --- a/projects/llama-airforce/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const sdk = require("@defillama/sdk"); -const contracts = { - uCRV1: "0x83507cc8c8b67ed48badd1f59f684d5d02884c81", - uCRV2: "0x4ebad8dbd4edbd74db0278714fbd67ebc76b89b7", - uCRV3: "0xde2bef0a01845257b4aef2a2eaa48f6eaeafa8b7", - uFXS1: "0xf964b0e3ffdea659c44a5a52bc0b82a24b89ce0e", - uFXS2: "0x3a886455e5b33300a31c5e77bac01e76c0c7b29c", - uPRISMA: "0x9bfd08d7b3cc40129132a17b4d5b9ea3351464bd", - uCVX: "0x8659fc767cad6005de79af65dafe4249c57927af", - uBAL: "0x8c4eb0fc6805ee7337ac126f89a807271a88dd67", - pxCvx: "0xBCe0Cf87F513102F22232436CCa2ca49e815C3aC", -}; - -const vaults = [ - contracts.uCRV1, - contracts.uCRV2, - contracts.uCRV3, - contracts.uBAL, - contracts.uFXS1, - contracts.uFXS2, - contracts.uPRISMA, -] - -async function tvl(api,) { - const balances = {}; - - const bals = await api.multiCall({ abi: "uint256:totalUnderlying", calls: vaults }) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: vaults }) - bals.forEach((v, i) => sdk.util.sumSingleBalance(balances, tokens[i], v, api.chain)) - sdk.util.sumSingleBalance(balances, contracts.pxCvx, await api.call({ target: contracts.uCVX, abi: "uint256:totalAssets", }), api.chain) - - return balances; -} - -module.exports = { - ethereum: { - tvl, - }, -}; diff --git a/projects/llamalend-curve/index.js b/projects/llamalend-curve/index.js deleted file mode 100644 index e6725a3850d..00000000000 --- a/projects/llamalend-curve/index.js +++ /dev/null @@ -1,34 +0,0 @@ - -const chainContracts = { - ethereum: "0xeA6876DDE9e3467564acBeE1Ed5bac88783205E0", - arbitrum: "0xcaec110c784c9df37240a8ce096d352a75922dea", - fraxtal: "0xf3c9bdAB17B7016fBE3B77D17b1602A7db93ac66", - optimism: "0x5ea8f3d674c70b020586933a0a5b250734798bef" -} - -const uniq = (arr) => Array.from(new Set(arr)) -module.exports=Object.keys(chainContracts).reduce((all, chain)=> ({ - ...all, - [chain]:{ - tvl: async (_t, _b, _c, {api})=>{ - const markets = await api.fetchList({ lengthAbi: 'market_count', itemAbi: 'controllers', target: chainContracts[chain] }) - const amms = await api.multiCall({ abi: 'address:amm', calls: markets }) - const collat = await api.multiCall({ abi: 'address:collateral_token', calls: markets }) - const borrowTokens = await api.multiCall({ abi: 'address:borrowed_token', calls: markets }) - return api.sumTokens({ tokens: uniq(collat.concat(borrowTokens)), owners: uniq(amms.concat(markets)) }) - }, - borrowed: async (_t, _b, _c, {api})=>{ - const markets = await api.fetchList({ lengthAbi: 'market_count', itemAbi: 'controllers', target: chainContracts[chain] }) - const debt = await api.multiCall({ abi: 'uint:total_debt', calls: markets }) - const borrowTokens = await api.multiCall({ abi: 'address:borrowed_token', calls: markets }) - debt.forEach((d, i)=>{ - api.add(borrowTokens[i], d) - }) - return api.getBalances() - } - } -}), {}) - -module.exports.hallmarks = [ - [1742470655, "Resupply Launch"] -] \ No newline at end of file diff --git a/projects/llamalend/abi.json b/projects/llamalend/abi.json deleted file mode 100644 index 055539e4bf7..00000000000 --- a/projects/llamalend/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalBorrowed": "uint256:totalBorrowed" -} \ No newline at end of file diff --git a/projects/llamalend/index.js b/projects/llamalend/index.js deleted file mode 100644 index 47a846a397c..00000000000 --- a/projects/llamalend/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const sdk = require('@defillama/sdk') -const abi = require("./abi.json"); -const BigNumber = require("bignumber.js"); -const { getLogs } = require('../helper/cache/getLogs') -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') - - -async function getTVL(api, borrowed) { - const PoolFactory = '0x55F9F26b3d7a4459205c70994c11775629530eA5' - const logs = await getLogs({ - api, - target: PoolFactory, - fromBlock: 15819910, - topic: 'PoolCreated(address,address,address)', - }) - const owners = logs.map(i => `0x${i.data.substring(26, 66)}`) - const totalBorrowed = await api.multiCall({ - calls: owners.map(pool => ({target: pool})), - abi: abi.totalBorrowed, - }) - const balances = {} - if (borrowed) { - balances[nullAddress] = BigNumber(0); - for (let pool of totalBorrowed) { - balances[nullAddress] = balances[nullAddress].plus(pool) - } - return balances - } - await sumTokens2({ api, tokens: [nullAddress], owners, balances, }) - return balances -} -async function borrowed(api) { - return await getTVL(api, true) -} -async function tvl(api) { - return await getTVL(api, false) -} - -module.exports = { - start: '2022-10-24', - methodology: 'TVL is calculated by adding up all the ETH in the pools and the totalBorrowed of every pool', - ethereum: { - tvl: tvl, - borrowed: borrowed - } -} \ No newline at end of file diff --git a/projects/llamapay/abi.json b/projects/llamapay/abi.json deleted file mode 100644 index 79d8b22af84..00000000000 --- a/projects/llamapay/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "getLlamaPayContractCount": "uint256:getLlamaPayContractCount", - "getLlamaPayContractByIndex": "function getLlamaPayContractByIndex(uint256) view returns (address)", - "token": "address:token", - "escrows_length": "uint256:escrows_length", - "escrows": "function escrows(uint256 arg0) view returns (address)" -} \ No newline at end of file diff --git a/projects/llamapay/contracts.js b/projects/llamapay/contracts.js deleted file mode 100644 index 49b748feedc..00000000000 --- a/projects/llamapay/contracts.js +++ /dev/null @@ -1,149 +0,0 @@ -const SALARIES_FACTORY_AVALANCHE = '0x7d507b4c2d7e54da5731f643506996da8525f4a3'; -const SALARIES_FACTORY_POLYGON = '0xde1C04855c2828431ba637675B6929A684f84C7F'; -const SALARIES_FACTORY_FANTOM = '0xde1C04855c2828431ba637675B6929A684f84C7F'; -const SALARIES_FACTORY_MAINNET = '0xde1C04855c2828431ba637675B6929A684f84C7F'; -const SALARIES_FACTORY_OPTIMISM = '0xde1C04855c2828431ba637675B6929A684f84C7F'; -const SALARIES_FACTORY_ARBITRUM = '0xde1C04855c2828431ba637675B6929A684f84C7F'; -const SALARIES_FACTORY_BSC = '0xde1C04855c2828431ba637675B6929A684f84C7F'; -const SALARIES_FACTORY_XDAI = '0xde1C04855c2828431ba637675B6929A684f84C7F'; -const SALARIES_FACTORY_METER = '0xc666badd040d5e471d2b77296fef46165ffe5132'; -const SALARIES_FACTORY_METIS = '0x43634d1C608f16Fb0f4926c12b54124C93030600'; - -const VESTING_FACTORY = '0xB93427b83573C8F27a08A909045c3e809610411a'; - -const PAYMENTS_AVALANCHE = '0x4c48F145e0c80d97bFbc983dd2CbEbEE5d84FA0c'; -const PAYMENTS_POLYGON = '0x02266E3b5cE26d62Ea73Ea7f2C542EBc24121c01'; -const PAYMENTS_FANTOM = '0xDa33d4B2753B3C2439cA52678E1A506e4C5294d1'; -const PAYMENTS_MAINNET = '0x056e39bDD2D35F4EB27478369BdAde51e0532b72'; -const PAYMENTS_OPTIMISM = '0xb4E9D1F7b32937f04B856ec1Ca39AC83E9404779'; -const PAYMENTS_ARBITRUM = '0x1564d7bFa4bc921A748Aedb3b71E578672528734'; -const PAYMENTS_BSC = '0x02266E3b5cE26d62Ea73Ea7f2C542EBc24121c01'; - -const NEW_LLAMAPAY_SALARIES_FACTORY_ADDRESS = "0x09c39B8311e4B7c678cBDAD76556877ecD3aEa07" - -module.exports = [ - { - chain: 'avax', - llamapayFactoryAddress: SALARIES_FACTORY_AVALANCHE, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - paymentsContract: PAYMENTS_AVALANCHE, - }, - { - chain: 'polygon', - llamapayFactoryAddress: SALARIES_FACTORY_POLYGON, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - paymentsContract: PAYMENTS_POLYGON, - }, - { - chain: 'fantom', - llamapayFactoryAddress: SALARIES_FACTORY_FANTOM, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - paymentsContract: PAYMENTS_FANTOM, - }, - { - chain: 'ethereum', - llamapayFactoryAddress: SALARIES_FACTORY_MAINNET, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0xcf61782465Ff973638143d6492B51A85986aB347', - paymentsContract: PAYMENTS_MAINNET, - }, - { - chain: 'optimism', - llamapayFactoryAddress: SALARIES_FACTORY_OPTIMISM, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - paymentsContract: PAYMENTS_OPTIMISM, - }, - { - chain: 'arbitrum', - llamapayFactoryAddress: SALARIES_FACTORY_ARBITRUM, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - paymentsContract: PAYMENTS_ARBITRUM, - }, - { - chain: 'bsc', - llamapayFactoryAddress: SALARIES_FACTORY_BSC, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - paymentsContract: PAYMENTS_BSC, - }, - { - chain: 'xdai', - llamapayFactoryAddress: SALARIES_FACTORY_XDAI, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - }, - { - chain: 'meter', - llamapayFactoryAddress: SALARIES_FACTORY_METER, - }, - { - chain: 'metis', - llamapayFactoryAddress: SALARIES_FACTORY_METIS, - }, - { - chain: 'base', - llamapayFactoryAddress: NEW_LLAMAPAY_SALARIES_FACTORY_ADDRESS, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - }, - { - chain: 'blast', - llamapayFactoryAddress: NEW_LLAMAPAY_SALARIES_FACTORY_ADDRESS, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - }, - { - chain: 'cronos', - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - }, - { - chain: 'fraxtal', - llamapayFactoryAddress: NEW_LLAMAPAY_SALARIES_FACTORY_ADDRESS, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - }, - { - chain: 'linea', - llamapayFactoryAddress: NEW_LLAMAPAY_SALARIES_FACTORY_ADDRESS, - }, - { - chain: 'mantle', - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - }, - { - chain: 'scroll', - llamapayFactoryAddress: NEW_LLAMAPAY_SALARIES_FACTORY_ADDRESS, - }, - { - chain: 'zora', - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - }, - { - chain: 'mode', - llamapayFactoryAddress: NEW_LLAMAPAY_SALARIES_FACTORY_ADDRESS, - vestingFactory: VESTING_FACTORY, - vestingFactory_v2: '0x62E13BE78af77C86D38a027ae432F67d9EcD4c10', - }, - { - chain: 'polygon_zkevm', - llamapayFactoryAddress: NEW_LLAMAPAY_SALARIES_FACTORY_ADDRESS, - }, - { - chain: 'sonic', - vestingFactory_v2: "0xB93427b83573C8F27a08A909045c3e809610411a", - llamapayFactoryAddress: "0x09c39B8311e4B7c678cBDAD76556877ecD3aEa07", - }, - { - chain: 'berachain', - vestingFactory_v2: "0x4AcE3EDd57EfF1176a862E7B72Db090ECF2B84Bd", - llamapayFactoryAddress: "0x09c39B8311e4B7c678cBDAD76556877ecD3aEa07", - }, -] \ No newline at end of file diff --git a/projects/llamapay/index.js b/projects/llamapay/index.js deleted file mode 100644 index f0514fb2206..00000000000 --- a/projects/llamapay/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2, } = require('../helper/unwrapLPs') -const { getSymbols } = require('../helper/utils') -const { isWhitelistedToken, } = require('../helper/streamingHelper') -const chainContracts = require('./contracts.js') - -async function calculateTvl(llamapay, vestingContract, vestingContractV2, paymentsContract, api, isVesting) { - let tokensAndOwners = llamapay ? await getTokensAndOwners(llamapay, api, false) : [] - const tokens = tokensAndOwners.map(i => i[0]) - const symbolMapping = await getSymbols(api.chain, tokens) - tokensAndOwners = tokensAndOwners.filter(([token]) => isWhitelistedToken(symbolMapping[token], token, isVesting)) - if (isVesting && vestingContract) - tokensAndOwners.push(...await getTokensAndOwners(vestingContract, api, true)) - if (isVesting && vestingContractV2) - tokensAndOwners.push(...await getTokensAndOwners(vestingContractV2, api, true)) - const balances = await sumTokens2({ tokensAndOwners, api, resolveLP: false, }) // resolveLP: false maybe breaking them down returns too high TVL for some reason - if(paymentsContract && !isVesting) { - return await sumTokens2({ balances, owners: [paymentsContract], fetchCoValentTokens: true, api}) - } - return balances -} - -async function getTokensAndOwners(contract, api, isVestingContract) { - const abis = { - count: isVestingContract ? abi.escrows_length : abi.getLlamaPayContractCount, - vault: isVestingContract ? abi.escrows : abi.getLlamaPayContractByIndex, - } - const llamaPayContracts = await api.fetchList({ lengthAbi: abis.count, itemAbi: abis.vault, target: contract }) - const llamaPayTokens = await api.multiCall({ calls: llamaPayContracts, abi: abi.token, }) - return llamaPayTokens.map((token, i) => ([token, llamaPayContracts[i]])) -} - -chainContracts.forEach(chain => { - module.exports[chain.chain] = { - tvl: async (api) => calculateTvl(chain.llamapayFactoryAddress, chain.vestingFactory, chain.vestingFactory_v2, chain.paymentsContract, api, false), - vesting: async (api) => calculateTvl(chain.llamapayFactoryAddress, chain.vestingFactory, chain.vestingFactory_v2, chain.paymentsContract, api, true), - } -}) \ No newline at end of file diff --git a/projects/llamarisk/index.js b/projects/llamarisk/index.js deleted file mode 100644 index dd8f237dffc..00000000000 --- a/projects/llamarisk/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Llama Risk.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x0FB44352bcfe4c5A53a64Dd0faD9a41184A1D609', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/lndfi/index.js b/projects/lndfi/index.js deleted file mode 100644 index 1489fbc23fd..00000000000 --- a/projects/lndfi/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", -}; - -const CONFIG = { - sonic: ['0x82c7B4aBB462dE2f7bFDE40c05d1fAa3913DbBB3'], - hyperliquid: ['0x0F0E6905B0199393b9102be42f28f71c22e30151'], -}; - -const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: abi.getAllReservesTokens }); - const calls = [] - - poolDatas.map((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => calls.push({ target: pool, params: tokenAddress })); - }); - const reserveData = await api.multiCall({ abi: isBorrowed ? abi.getReserveData : abi.getReserveTokensAddresses, calls, }) - const tokensAndOwners = [] - reserveData.forEach((data, i) => { - const token = calls[i].params - if (isBorrowed) { - api.add(token, data.totalVariableDebt) - api.add(token, data.totalStableDebt) - } else - tokensAndOwners.push([token, data.aTokenAddress]) - }) - - if (isBorrowed) return api.getBalances() - return api.sumTokens({ tokensAndOwners }) -} - -module.exports.methodology = "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending." - -Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - // borrowed: (api) => fetchReserveData(api, poolDatas, true), - borrowed: () => ({}), - }; -}); - -// module.exports.hallmarks = [ -// ['2025-05-10', 'Protocol was hacked'], -// ] diff --git a/projects/lns/index.js b/projects/lns/index.js deleted file mode 100644 index f4119bfd659..00000000000 --- a/projects/lns/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { stakingPricedLP } = require('../helper/staking') - -const xLNS = "0xBE7E034c86AC2a302f69ef3975e3D14820cC7660"; -const LNS = "0x35b3Ee79E1A7775cE0c11Bd8cd416630E07B0d6f"; -const WBCH_LNS_POOL = "0x7f3F57C92681c9a132660c468f9cdff456fC3Fd7"; -const CHAIN = "smartbch"; - -module.exports = { - misrepresentedTokens: true, - methodology: - "LNS tokens locked in the staking contract are counted towards staking.", - smartbch: { - tvl: () => ({}), - staking: stakingPricedLP(xLNS, LNS, CHAIN, WBCH_LNS_POOL, "bitcoin-cash", false, 18) - }, -}; diff --git a/projects/loanshark/index.js b/projects/loanshark/index.js deleted file mode 100644 index a9c6afdea99..00000000000 --- a/projects/loanshark/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const comptroller = '0xEFB0697700E5c489073a9BDF7EF94a2B2bc884a5' -const cether = '0xF017f9CF11558d143E603d56Ec81E4E3B6d39D7F' - -module.exports = { - scroll: compoundExports2({ comptroller, cether, }) -}; diff --git a/projects/lobis.js b/projects/lobis.js deleted file mode 100644 index 444a4e7c517..00000000000 --- a/projects/lobis.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { ohmTvl } = require('./helper/ohm') - -const treasury = "0x873ad91fA4F2aA0d557C0919eC3F6c9D240cDd05" -module.exports = ohmTvl(treasury, [ - //curve - [ADDRESSES.ethereum.CRV, false], - //frax - [ADDRESSES.ethereum.FXS, false], - //Sushi LP - ["0x2734f4a846d1127f4b5d3bab261facfe51df1d9a", true], -], "ethereum", "0x3818eff63418e0a0ba3980aba5ff388b029b6d90", "0xdec41db0c33f3f6f3cb615449c311ba22d418a8d") diff --git a/projects/lobster-protocol/index.js b/projects/lobster-protocol/index.js deleted file mode 100644 index 140567d5740..00000000000 --- a/projects/lobster-protocol/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const DHEDGE_FACTORY_ABI = "function getManagedPools(address manager) view returns (address[] managedPools)"; -const LOBSTER_POOL_ABI = "function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue))"; - -const CONFIG_DATA = { - arbitrum: { - dhedgeFactory: "0xffFb5fB14606EB3a548C113026355020dDF27535", - lobsterManager: "0x6EBb1B5Be9bc93858f71714eD03f67BF237473cB", - } -} - -async function tvl(api) { - const { dhedgeFactory, lobsterManager } = CONFIG_DATA[api.chain]; - - const pools = await api.call({ abi: DHEDGE_FACTORY_ABI, target: dhedgeFactory, params: lobsterManager, }); - const poolSummaries = await api.multiCall({ abi: LOBSTER_POOL_ABI, calls: pools, }) - api.addCGToken('tether', poolSummaries.reduce((acc, p) => acc + +p.totalFundValue/1e18, 0)) -} - -module.exports = { - misrepresentedTokens: true, - start: '2024-01-01', // Sunday 31 December 2023 23:59:59 - methodology: - "Aggregates total value of Lobster protocol vaults on Arbitrum", - arbitrum: { - tvl, - }, - hallmarks: [ - [1710971510, "First Arbitrum Vault Release"], - ], -} \ No newline at end of file diff --git a/projects/lobsterswap/index.js b/projects/lobsterswap/index.js deleted file mode 100644 index bf1d44e952f..00000000000 --- a/projects/lobsterswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0xF936CDe5138282eDC6370F9f5ac70d9a1AFC6F78', useDefaultCoreAssets: true }), - }, - ozone: { - tvl: getUniTVL({ factory: '0xE6E64C926af9ABEc9D819f52c9572AB961CEF6C1', useDefaultCoreAssets: true }), - }, -} diff --git a/projects/lockon/index.js b/projects/lockon/index.js deleted file mode 100644 index d061659ef09..00000000000 --- a/projects/lockon/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const START_TIMESTAMP = 1690340140; // 2023-07-26T02:55:40Z -const config = { - polygon: { - controllerAddress: "0x153e739B8823B277844Ad885A30AC5bD9DfB6E83", - }, - arbitrum: { - controllerAddress: "0xA36c2B06aFc96Ffd52d148Ed6acbB9fe2Ab864Be", - } -} - -function tvlExport({controllerAddress}) { - return async function tvl(api) { - const sets = await api.call({ abi: "address[]:getSets", target: controllerAddress, }) - const tokens = await api.multiCall({ abi: 'address[]:getComponents', calls: sets}) - const ownerTokens = sets.map((set, i) => [tokens[i], set]) - return api.sumTokens({ ownerTokens }) - } - -} - -module.exports.start = START_TIMESTAMP -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: tvlExport(config[chain]) - } -}) diff --git a/projects/locus/index.js b/projects/locus/index.js deleted file mode 100644 index f25a9425a5d..00000000000 --- a/projects/locus/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const sdk = require('@defillama/sdk') -const { sumERC4626VaultsExport } = require('../helper/erc4626') -const { staking } = require('../helper/staking') - -const Locus_Token = "0xe1d3495717f9534db67a6a8d4940dd17435b6a9e" -const stLocus = "0xEcc5e0c19806Cf47531F307140e8b042D5Afb952" - -module.exports = { - doublecounted: true, - // hallmarks: [ - // ['2023-12-30', 'Was hacked for 321k'], // https://twitter.com/Locus_finance/status/1744374506267767267 - // ], -} - -const config = { - ethereum: { - lvTokens: { - xETH: "0x0CD5cda0E120F7E22516f074284e5416949882C2", - xDEFI: "0xB0a66dD3B92293E5DC946B47922C6Ca9De464649", - } - }, - arbitrum: { - lvTokens: { - xARB: "0xF8F045583580C4Ba954CD911a8b161FafD89A9EF", - pendleETH: "0x515f3533a17E2EEFB13313D9248f328C94dBe641" - }, - lvTokens2: { - xUSD: "0x6318938F825F57d439B3a9E25C38F04EF97987D8", - }, - } -} - -Object.keys(config).forEach(chain => { - const { lvTokens, lvTokens2 } = config[chain] - let tvl = sumERC4626VaultsExport({ vaults: Object.values(lvTokens), tokenAbi: 'token', balanceAbi: 'totalAssets' }) - if (lvTokens2) - tvl = sdk.util.sumChainTvls([tvl, sumERC4626VaultsExport({ vaults: Object.values(lvTokens2), tokenAbi: 'wantToken', balanceAbi: 'totalAssets' })]) - module.exports[chain] = { - tvl - } -}) - -module.exports.arbitrum.staking = staking(stLocus, Locus_Token) diff --git a/projects/lodestar-v1/index.js b/projects/lodestar-v1/index.js deleted file mode 100644 index 279e33add69..00000000000 --- a/projects/lodestar-v1/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const controller = '0xa86dd95c210dd186fa7639f93e4177e97d057576' -const cETHER = '0x2193c45244AF12C280941281c8aa67dD08be0a64'.toLowerCase() - -async function getMarkets(api) { - let markets = await api.call({ target: controller, abi: abis.getAllMarkets, }) - markets = markets.filter(i => i.toLowerCase() !== cETHER) - - const tokens = await api.multiCall({ - abi: abis.underlying, - calls: markets, - }) - - markets.push(cETHER) - tokens.push(nullAddress) - return { markets, tokens } -} - -async function tvl(api) { - const { markets, tokens } = await getMarkets(api) - const tokensAndOwners = tokens.map((t, i) => ([t, markets[i]])) - return sumTokens2({ tokensAndOwners, api, }) -} - -async function borrowed(api) { - const { markets, tokens } = await getMarkets(api) - const borrows = await api.multiCall({ - abi: abis.totalBorrows, - calls: markets, - }) - borrows.forEach((a, i) => api.add( tokens[i], a)) -} - -module.exports = { - arbitrum: { - tvl, - borrowed, - } -}; - -const abis = { - getAllMarkets: "address[]:getAllMarkets", - underlying: "address:underlying", - totalBorrows: "uint256:totalBorrows", -} \ No newline at end of file diff --git a/projects/lodestar/index.js b/projects/lodestar/index.js deleted file mode 100644 index 253e36041f4..00000000000 --- a/projects/lodestar/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const controller = '0x92a62f8c4750D7FbDf9ee1dB268D18169235117B' -const cETHER = '0x7A472988bD094a09f045120e78Bb0cEa44558b52'.toLowerCase() - -async function getMarkets(api) { - let markets = await api.call({ target: controller, abi: abis.getAllMarkets, }) - markets = markets.filter(i => i.toLowerCase() !== cETHER) - - const tokens = await api.multiCall({ - abi: abis.underlying, - calls: markets, - }) - - markets.push(cETHER) - tokens.push(nullAddress) - return { markets, tokens } -} - -async function tvl(api) { - const { markets, tokens } = await getMarkets(api) - const tokensAndOwners = tokens.map((t, i) => ([t, markets[i]])) - return sumTokens2({ tokensAndOwners, api, }) -} - -async function borrowed(api) { - const { markets, tokens } = await getMarkets(api) - const borrows = await api.multiCall({ - abi: abis.totalBorrows, - calls: markets, - }) - borrows.forEach((a, i) => api.add( tokens[i], a)) -} - -module.exports = { - // hallmarks: [ - // [1670630400, "pvlGLP collateral exploit"] - // ], - arbitrum: { - tvl, - borrowed, - } -}; - -const abis = { - getAllMarkets: "address[]:getAllMarkets", - underlying: "address:underlying", - totalBorrows: "uint256:totalBorrows", -} \ No newline at end of file diff --git a/projects/lofty/index.js b/projects/lofty/index.js deleted file mode 100644 index 85c4e0563bd..00000000000 --- a/projects/lofty/index.js +++ /dev/null @@ -1,33 +0,0 @@ - -const { toUSDTBalances } = require('../helper/balances'); -const { getEnv } = require('../helper/env'); -const { get } = require('../helper/http'); - -const LoftyTVLApi = "https://partners.lofty.ai/properties/v2/valuations"; - -async function loftyTVL() { - const response = ( - await get(LoftyTVLApi, { - headers: { - 'X-API-Key': getEnv('LOFTY_API') - } - }) - ).data; - - const total = response.reduce((acc, item) => { - acc = acc + item.propertyPrice.currentInvestment; - return acc; - }, 0); - - return toUSDTBalances(total); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - algorand: { - tvl: loftyTVL, - } -}; - -// node test.js projects/lofty/index.js diff --git a/projects/logium/index.js b/projects/logium/index.js deleted file mode 100644 index f8e5e1f0e73..00000000000 --- a/projects/logium/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - - -const { getBlock } = require('../helper/http') -const sdk = require('@defillama/sdk') -// const { Contract } = require('ethers') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') -const USDC = ADDRESSES.ethereum.USDC -const LOGIUM_CORE = '0xc61d1dcceeec03c94d729d8f8344ce3be75d09fe' -const ONE_DAY = 24 * 60 * 60 - -const usdcABI = 'event Transfer(address indexed from, address indexed to, uint256 value)' - -function getProvider(network) { - const chainApi = new sdk.ChainApi(network) - return chainApi.provider -} - -async function tvl(api) { - // const fromBlock = await getBlock(ts - (15 * ONE_DAY), 'ethereum', {}, false) //33 days ago - // const usdcContract = new Contract(USDC, [usdcABI], getProvider('ethereum')) - // const eventFilter = usdcContract.filters.Transfer(LOGIUM_CORE); - - // // TODO: fix this so it works - // const events = await getLogs({ - // target: USDC, - // topics: eventFilter.topics, - // fromBlock, - // toBlock: block, - // api, - // eventAbi: usdcABI, - // skipCache: true, - // }) - - const owners = [LOGIUM_CORE] - // events.forEach(e => { - // if (e.args.from.toLowerCase() !== LOGIUM_CORE) return; - // owners.push(e.args.to) - // }) - return sumTokens2({ api, owners, tokens: [USDC] }) -} - -module.exports = { - ethereum: { - tvl - }, - deadFrom: '2023-11-15', // Project is put on hold: https://twitter.com/LogiumDEX/status/1724100314528092293 -} \ No newline at end of file diff --git a/projects/logx-v2/index.js b/projects/logx-v2/index.js deleted file mode 100644 index b18a283d43f..00000000000 --- a/projects/logx-v2/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - methodology: "Tokens locked in HypCollateral contracts on different chains.", -} - -const config = { - base: ['0xaca5146bc74230e77DAB543d3a14F26c8c63939e',], - arbitrum: ['0x4882520D47491561F51ea96aBC0397776Efc6cFd', '0x1d9B044393804CCFa2da3127470C9F65D4E0E5E6',], - mantle: ['0x4417613C0fe034f7D333BF8a6247EaAAF1d51965', '0x650e8941E4d90b70576fDF1b05dbDc962DA2cab8',], - mode: ['0x4882520D47491561F51ea96aBC0397776Efc6cFd','0x8BF17893f08C570fBA78E9268d3aFc61f42557f1'], - bob: ['0xaca5146bc74230e77DAB543d3a14F26c8c63939e','0x1e7c3B771b27A29116E4Df5a2DCC54FDaAC902db'], - sei: ['0xc010f83ae18dC5f40e888898F6605F075686432e','0x0B3b4FAFDe8baFde82C3BfD38538B7aEe4407498'], - scroll: ['0x1C70cc9F8236C4Ae2ce3d34d4Da4696Aea611f90','0xcfFe53CEd05A750Fa58304c11997a0335dE731b6'], - kroma: ['0xaca5146bc74230e77DAB543d3a14F26c8c63939e','0x1e7c3B771b27A29116E4Df5a2DCC54FDaAC902db'], - taiko: ['0x650e8941E4d90b70576fDF1b05dbDc962DA2cab8','0x1d9B044393804CCFa2da3127470C9F65D4E0E5E6'], - optimism: ['0x650e8941E4d90b70576fDF1b05dbDc962DA2cab8','0x4417613C0fe034f7D333BF8a6247EaAAF1d51965'], - linea: ['0xaca5146bc74230e77DAB543d3a14F26c8c63939e','0x1e7c3B771b27A29116E4Df5a2DCC54FDaAC902db'], - rari: ['0x1C70cc9F8236C4Ae2ce3d34d4Da4696Aea611f90',], - mint: ['0xaca5146bc74230e77DAB543d3a14F26c8c63939e', '0xdB29A58A53Ac438a5E325f1d7a41346aA63b7ece',], - polygon: ['0x1e7c3B771b27A29116E4Df5a2DCC54FDaAC902db', '0xaca5146bc74230e77DAB543d3a14F26c8c63939e',], - abstract: ['0x816B55fF6E204d5825cf2792955daF449E819494',], - apechain: ['0x4Ae1be658c57e5785e6D9a72d3e2214678fD80F2',], - sonic: ['0x4Ae1be658c57e5785e6D9a72d3e2214678fD80F2', '0xaaA97fe165526dC29Cca977eCeA4CFcfe4FE64Cc',], - manta: ['0x88665E6044f5FDeb6d96E1e268546F961Da591a0', '0xaaA97fe165526dC29Cca977eCeA4CFcfe4FE64Cc'], - blast: ['0x60711A4520871AAbE5D9aa8b0E33425659e0d160'], -} - -Object.keys(config).forEach(chain => { - let vault = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (!Array.isArray(vault)) vault = [vault] - const tokens = await api.multiCall({ abi: 'address:wrappedToken', calls: vault }) - return api.sumTokens({ tokensAndOwners2: [tokens, vault] }) - } - } -}) - -module.exports.arbitrum.staking = staking('0x89E86f7d2398e8C1070d321D18c1Ce75aBF09b75', '0x59062301Fb510F4ea2417B67404CB16D31E604BA') \ No newline at end of file diff --git a/projects/logx/index.js b/projects/logx/index.js deleted file mode 100644 index 61684ed77c4..00000000000 --- a/projects/logx/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping") - -module.exports = { - methodology: "USDC.e in the vault", - hallmarks: [ - ['2024-09-10', 'v1 is deprecated'], - ], -} - -const config = { - linea: '0xc5f444d25d5013c395f70398350d2969ef0f6aa0', - mantle: '0x7A74Dd56Ba2FB26101A7f2bC9b167A93bA5e1353', - kroma: '0xC5f444D25D5013C395F70398350d2969eF0F6AA0', - manta: '0x53c6decad02cB6C535a7078B686650c951aD6Af5', - telos: '0x082321F9939373b02Ad54ea214BF6e822531e679', - fuse: '0x082321F9939373b02Ad54ea214BF6e822531e679', - mode: ['0x34b83A3759ba4c9F99c339604181bf6bBdED4C79', '0x082321F9939373b02Ad54ea214BF6e822531e679'], - zklink: ['0x75940cDa18F14D1F97562fc2A6dBCe31CBe03870'] -} - -Object.keys(config).forEach(chain => { - let vault = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (!Array.isArray(vault)) vault = [vault] - const ownerTokens = [] - for (const v of vault) { - const tokens = await api.fetchList({ lengthAbi: 'allWhitelistedTokensLength', itemAbi: 'allWhitelistedTokens', target: v }) - ownerTokens.push([tokens.map(i => { - switch (i.toLowerCase()) { - case '0x000000000000000000000000000000000000800a': return nullAddress - default: return i - } - }), v]) - } - return api.sumTokens({ ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/lolik/index.js b/projects/lolik/index.js deleted file mode 100644 index a26d2d8d656..00000000000 --- a/projects/lolik/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const pooledFTN = await api.call({ target: ADDRESSES.ftn.stFTN, abi: "uint256:getTotalPooledFtn" }) - - return { - 'coingecko:fasttoken': pooledFTN / 1e18, - } -} - -module.exports = { - methodology: 'Staked tokens are counted as TVL based on the chain that they are staked on and where the liquidity tokens are issued', - ftn: { tvl }, -} diff --git a/projects/lolpad/index.js b/projects/lolpad/index.js deleted file mode 100644 index 659cb79a432..00000000000 --- a/projects/lolpad/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - scroll: { 'factory': '0x54E3c605f52B6f297fca5afFC6B9a221fFd65ec2', fromBlock: 4204651, } -}) \ No newline at end of file diff --git a/projects/lolsurprisefinance/index.js b/projects/lolsurprisefinance/index.js deleted file mode 100644 index fa40f2913e6..00000000000 --- a/projects/lolsurprisefinance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0xE1E5B476aa9d85a7df27839f7894406d2528aBBE" -const lol = "0x7AB619B5Bb51eF3ed099A8A81948481Fe5e6099c" - -module.exports = { - ...masterChefExports(masterchef, "bsc", lol) -} \ No newline at end of file diff --git a/projects/lombard-vault/index.js b/projects/lombard-vault/index.js deleted file mode 100644 index aa6ca5674a5..00000000000 --- a/projects/lombard-vault/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const vaults = [ - '0x5401b8620E5FB570064CA9114fd1e135fd77D57c', // Lombard DeFi Vault https://www.lombard.finance/app/vault/ -]; - -const vault1 = ['0x309f25d839a2fe225e80210e110c99150db98aaf']; - -module.exports = { - doublecounted: true, - ethereum: { - tvl: sumTokensExport({ owners: [...vaults, ...vault1], fetchCoValentTokens: true, tokenConfig: { - onlyWhitelisted: false, - }, resolveUniV3: true,}), - }, - base: { - tvl: sumTokensExport({ owners: vaults, fetchCoValentTokens: true, tokenConfig: { - onlyWhitelisted: false, - }, resolveUniV3: true,}), - }, - bsc: { - tvl: sumTokensExport({ owners: vaults, fetchCoValentTokens: true, tokenConfig: { - onlyWhitelisted: false, - }, resolveUniV3: true,}), - }, - sonic: { - tvl: sumTokensExport({ owners: ['0x309f25d839A2fe225E80210e110C99150Db98AAF'], tokens: [ADDRESSES.sonic.LBTC]}), - }, -}; \ No newline at end of file diff --git a/projects/lombard/index.js b/projects/lombard/index.js deleted file mode 100644 index 442960afda3..00000000000 --- a/projects/lombard/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens } = require('../helper/chain/bitcoin') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') -const { sumTokensExport } = require('../helper/unwrapLPs') - -async function tvl() { - return sumTokens({ owners: await bitcoinAddressBook.lombard(), forceCacheUse: true }) -} - -module.exports = { - doublecounted:true, - timetravel: false, - isHeavyProtocol: true, - bitcoin: { tvl }, - ethereum: { tvl: sumTokensExport({ owners: ['0x838f0c257ab27856ee9be57f776b186140834b58'], tokens: ['0xfe4ecd930a1282325aef8e946f17c0e25744de45'] })} -} \ No newline at end of file diff --git a/projects/longdrink/index.js b/projects/longdrink/index.js deleted file mode 100644 index f9af9ce490f..00000000000 --- a/projects/longdrink/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const sdk = require('@defillama/sdk') -const {unwrapUniswapLPs} = require('../helper/unwrapLPs') - -const bev = "0xc7dac962c166a26038ec4bc5d0e2a3fe0ff3ce58" -const l1q = "0xf8d5c25a47d28866b4c1ce285f42997c690f941c" - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - for(const token of [bev, l1q]){ - const supply = await sdk.api.erc20.totalSupply({ - target: token, - block: chainBlocks.bsc, - chain: 'bsc' - }) - balances['bsc:'+token]= supply.output - } - - return balances -} - -const LPstaking = "0x986581a915f8abf4C8E21781a2c45FD4Eb21699D" -const lp = "0x5ab4dc6ec350e546103f6891299b467293c36c3e" - -async function pool2(timestamp, block, chainBlocks) { - const stakedLp = await sdk.api.erc20.balanceOf({ - target: lp, - owner: LPstaking, - block: chainBlocks.bsc, - chain: 'bsc' - }) - const balances = {} - - await unwrapUniswapLPs(balances, [{ - token: lp, - balance: stakedLp.output - }], chainBlocks.bsc, 'bsc', addr=>`bsc:${addr}`) - - return balances; -} - -module.exports = { - bsc: { - tvl, - pool2, - }, -}; \ No newline at end of file diff --git a/projects/looks-rare/index.js b/projects/looks-rare/index.js deleted file mode 100644 index b08d957000f..00000000000 --- a/projects/looks-rare/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const LOOKS = "0xf4d2888d29D722226FafA5d9B24F9164c092421E"; -const tokenDistributor = "0x465a790b428268196865a3ae2648481ad7e0d3b1"; -const stakingContract = "0xbcd7254a1d759efa08ec7c3291b2e85c5dcc12ce"; -const LOOKS_ETH_univ2 = '0xdc00ba87cc2d99468f7f34bc04cbf72e111a32f7' -const LOOKS_ETH_univ2_staking = '0x2a70e7f51f6cd40c3e9956aa964137668cbfadc5' - -// LOOKS staking send the looks token to the tokenDistributor contract -// https://etherscan.io/tx/0xcf9e2d958b2ca04f735e6643c8b3be098ce3befda72957abe94676e2db017dbb - -module.exports = { - methodology: `TVL for LOOKS.RARE consists of the staking of LOOKS and pool2 of uni-v2 LOOKS-WETH.`, - ethereum:{ - tvl: () => ({}), - staking: staking(tokenDistributor, LOOKS), - pool2: pool2(LOOKS_ETH_univ2_staking, LOOKS_ETH_univ2), - } -} \ No newline at end of file diff --git a/projects/loop-finance/index.js b/projects/loop-finance/index.js deleted file mode 100644 index ef9be1d230c..00000000000 --- a/projects/loop-finance/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { queryContract, getTokenBalance, getToken, } = require("../helper/chain/cosmos"); -const { transformDexBalances } = require('../helper/portedTokens') -const TS = require('../terraswap/factoryTvl') - -async function getPairs(chain, factory) { - let data = { pairs: { limit: 30 } } - let pairs = [] - let res - do { - if (pairs.length) { - const lastItem = pairs[pairs.length - 1] - data.pairs.start_after = lastItem.asset_infos - } - res = await queryContract({ data, contract: factory, chain }) - pairs.push(...res.pairs) - } while (res.pairs.length >= 30) - return pairs -} - -const queries = { - "factory0": 'terra16hdjuvghcumu6prg22cdjl96ptuay6r0hc6yns', - "factory1": 'terra10fp5e9m5avthm76z2ujgje2atw6nc87pwdwtww', -} - -function getFactoryTvl(factory) { - return async function tvl(api) { - const chain = api.chain - const pairs = await getPairs(chain, factory) - sdk.log(chain, factory, pairs.length) - const token0s = pairs.map(i => i.asset_infos[0]).map(getToken) - const token1s = pairs.map(i => i.asset_infos[1]).map(getToken) - const token0Bals = await Promise.all(pairs.map(i => getTokenBalance({ chain, owner: i.contract_addr, token: i.asset_infos[0] }))) - const token1Bals = await Promise.all(pairs.map(i => getTokenBalance({ chain, owner: i.contract_addr, token: i.asset_infos[1] }))) - const data = pairs.map((_, i) => ({ - token0: token0s[i], - token1: token1s[i], - token0Bal: token0Bals[i], - token1Bal: token1Bals[i], - })) - return transformDexBalances({ chain, data, }) - } -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - terra: { tvl: sdk.util.sumChainTvls([getFactoryTvl(queries.factory0), getFactoryTvl(queries.factory1)]) }, - juno: { tvl: TS.getFactoryTvl('juno1p4dmvjtdf3qw9394k7zl65eg8g5ehzvdxnvm9hd3ju7a7aslrmdqaspeak') }, - hallmarks: [ - [1651881600, "UST depeg"], - ] -}; diff --git a/projects/looped-hype/index.js b/projects/looped-hype/index.js deleted file mode 100644 index e0ebcff7dbb..00000000000 --- a/projects/looped-hype/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const sanitizeAndValidateEvmAddresses = (addresses) => { - return addresses - .map((address) => address.replace(/_$/, "")) - .filter((address) => /^0x[a-fA-F0-9]{40}$/.test(address)); -}; - -const LHYPE_VAULT_ADDRESS = ['0x5748ae796AE46A4F1348a1693de4b50560485562']; - -const tvl = async (api) => { - const strategies = await getConfig( - 'lhype-tokens', - `https://backend.nucleusearn.io/v1/vaults/underlying_strategies?vault_address=${LHYPE_VAULT_ADDRESS}&chain_id=999` - ); - const hyperevmStrategies = strategies["999"] - const tokens = Object.values(hyperevmStrategies).map((strategy) => strategy.tokenAddress); - const sanitizedTokens = sanitizeAndValidateEvmAddresses([...tokens, ...LHYPE_VAULT_ADDRESS]); - - return sumTokens2({ - owners: LHYPE_VAULT_ADDRESS, - tokens: sanitizedTokens, - api, - resolveLP: true, - permitFailure: true - }); -}; - -module.exports = { - hyperliquid: { tvl } -}; \ No newline at end of file diff --git a/projects/loopfi/index.js b/projects/loopfi/index.js deleted file mode 100644 index 1af9070c45d..00000000000 --- a/projects/loopfi/index.js +++ /dev/null @@ -1,152 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") - -// Prelaunch -const LOOP_PRELAUNCH = "0xaBEEcB1d3414550B30694bB37ac24CAaD0b82aE9" -const LOOP_PRELAUNCH_SCROLL = "0x640befeAd1A7ce841ef878058A7003EC260ebAE8" -const LOOP_PRELAUNCH_BTC = "0x497Fb40D610C29E66d06F3B18Cd9966053abB49A" -const LOOP_PRELAUNCH_YNETH = "0xa67C60AE18BE09F074a6c733a1cc06B63Ae53589" - -// Loop tokens -const lpETH = "0xa684EAf215ad323452e2B2bF6F817d4aa5C116ab" -const lpUSD = "0x0eecBDbF7331B8a50FCd0Bf2C267Bf47BD876054" -const lpBNB = "0xED166436559Fd3d7f44cb00CACDA96EB999D789e" -const lpBTCB = "0xa02fcc8493856b5bd7fA5099f5a631A6cb77fBd1" - -const lpUSDCe = "0x235e49CC709F9e262814795c00eabe73709ef8E2" -const lpXDC = "0xED166436559Fd3d7f44cb00CACDA96EB999D789e" - -const tokens = { - WETH: ADDRESSES.ethereum.WETH, - weETH: ADDRESSES.ethereum.WEETH, - ezETH: ADDRESSES.linea.rzETH, - rsETH: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", - rswETH: "0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0", - uniETH: "0xF1376bceF0f78459C0Ed0ba5ddce976F1ddF51F4", - pufETH: "0xD9A442856C234a39a81a089C06451EBAa4306a72", -} - -const tokensScroll = { - WETH: ADDRESSES.scroll.WETH, - STONE: ADDRESSES.scroll.STONE, - weETH: '0x01f0a31698C4d065659b9bdC21B3610292a1c506', - wrsETH: '0xa25b25548B4C98B0c7d3d27dcA5D5ca743d68b7F', - pufETH: '0xc4d46E8402F476F269c379677C99F18E22Ea030e', -} - -const tokensBtc = { - WBTC: ADDRESSES.ethereum.WBTC, - swBTC: '0x8DB2350D78aBc13f5673A411D4700BCF87864dDE' -} - -const tokensYieldnest = { - ynETH: '0x09db87A538BD693E9d08544577d5cCfAA6373A48' -} - -const spectraVault = "0x9BfCD3788f923186705259ae70A1192F601BeB47" -const spectraLPToken = "0x2408569177553A427dd6956E1717f2fBE1a96F1D" - -const spectraVaultYnETHx = "0x9c5EE26b9623cA864693C575a8fBc8933ae964E7" -const spectraYnETHxLPToken = "0xBc48c48789031A130F957c59e07B7F987aA642dE" - -const clisBNBCDPVault = "0x03C07e6d561b664246058974dB31dbF1c1C0B416" -const clisBNBLPToken = "0x1d9D27f0b89181cF1593aC2B36A37B444Eb66bEE" - -const ynCoBTCkCDPVault = "0xF0F67671151FF8B9F2117BD3ac7406D9D3ee8f45" -const ynCoBTCkLPToken = "0x132376b153d3cFf94615fe25712DB12CaAADf547" - -const spectraUSDVault = "0xbb23b7ACdE2B3A2E6446B16Cd3Dd471b0d80342c" -const spectraUSDLPToken = "0x09d484B738dD85CE3953102453E91507982121d0" - -const pendleTETHCDPVault = "0x1438F04666C48957b1D7673684e4a1E505c80aF6" -const pendleTETHLPToken = "0xBDb8F9729d3194f75fD1A3D9bc4FFe0DDe3A404c" - -const pendleUniETHCDPVault = "0x7A0734Fa26e188483aae3d4332F19404FEA87832" -const pendleUniETHLPToken = "0xbbA9BAaa6b3107182147A12177e0F1Ec46B8b072" - -const pendleRswETHCDPVault = "0x868527fd3Fad53149be0e75eEeaBE4f008D27E81" -const pendleRswETHLPToken = "0xfd5Cf95E8b886aCE955057cA4DC69466e793FBBE" - -const pendlePuffETHCDPVault = "0x314A8cB19b5F245C7f109f50F4FaA06cD70C7Aa4" -const pendlePuffETHLPToken = "0x58612beB0e8a126735b19BB222cbC7fC2C162D2a" - -const spectraInwstETHCDPVault = "0x03d30243138D45383F02BCA884D42068523bdE22" -const spectraInwstETHLPToken = "0x2cd244f1f9a856c251d276103862dd4325985d2a" - -const pendleTETHCDPVault_JAN2026 = "0xb85095c4B18a7d16559A0bFd764F51F0d030587f" -const pendleTETHLPToken_JAN2026 = "0x3DAF20E46708E556570159Eaf98eeE53A1A5b8A4" - -const pendleEUSDeCDPVault = "0x16575edcB68613188D70b194b8FD89Df0f6eDFaE" -const pendleEUSDeLPToken = "0xE93B4A93e80BD3065B290394264af5d82422ee70" - -const pendleSyrupUSDCVault = "0x18C15607C91C6FC51DB6429e7Fdf5f6165dEED83" -const pendleSyrupUSDCLPToken = "0x9a63fa80b5ddfd3cab23803fdb93ad2c18f3d5aa" - -const pendleSUSDfCDPVault = "0x078dbc4815a13acd3c6bb19fcdddb4aefd086137" -const pendleSUSDfLPToken = "0x45f163e583d34b8e276445dd3da9ae077d137d72" - - -async function tvlEthereum(api) { - const calls = [lpETH, lpUSD] - const assets = await api.multiCall({ abi: 'address:asset', calls, }) - const ownerTokens = [ - [Object.values(tokens), LOOP_PRELAUNCH], - [Object.values(tokensBtc), LOOP_PRELAUNCH_BTC], - [Object.values(tokensYieldnest), LOOP_PRELAUNCH_YNETH], - [[spectraLPToken], spectraVault], - [[spectraUSDLPToken], spectraUSDVault], - [[spectraYnETHxLPToken], spectraVaultYnETHx], - [[spectraInwstETHLPToken], spectraInwstETHCDPVault], - [[pendleTETHLPToken], pendleTETHCDPVault], - [[pendleUniETHLPToken], pendleUniETHCDPVault], - [[pendleRswETHLPToken], pendleRswETHCDPVault], - [[pendlePuffETHLPToken], pendlePuffETHCDPVault], - [[pendleTETHLPToken_JAN2026], pendleTETHCDPVault_JAN2026], - [[pendleEUSDeLPToken], pendleEUSDeCDPVault], - [[pendleSyrupUSDCLPToken], pendleSyrupUSDCVault], - [[pendleSUSDfLPToken], pendleSUSDfCDPVault] - ] - assets.forEach((asset, i) => ownerTokens.push([[asset], calls[i]])) - return api.sumTokens({ ownerTokens }) -} - -async function tvlBnb(api) { - const calls = [lpBNB, lpBTCB] - const assets = await api.multiCall({ abi: 'address:asset', calls, }) - const ownerTokens = [ - [[clisBNBLPToken], clisBNBCDPVault], - [[ynCoBTCkLPToken], ynCoBTCkCDPVault] - ] - assets.forEach((asset, i) => ownerTokens.push([[asset], calls[i]])) - return api.sumTokens({ ownerTokens }) -} - -async function tvlXDC(api) { - const calls = [lpUSDCe, lpXDC] - const assets = await api.multiCall({ abi: 'address:asset', calls, }) - const ownerTokens = [] - assets.forEach((asset, i) => ownerTokens.push([[asset], calls[i]])) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - methodology: - "Counts the number of deposited tokens in the Prelaunch Contracts and the tokens provided as collateral in the Loop Protocol", - start: 1718390875, - ethereum: { - tvl: tvlEthereum - }, - bsc: { - tvl: tvlBnb - }, - xdc: { - tvl: tvlXDC - }, - scroll: { - tvl: sumTokensExport({ - owner: LOOP_PRELAUNCH_SCROLL, - tokens: Object.values(tokensScroll), - }) - } -} diff --git a/projects/loopring/index.js b/projects/loopring/index.js deleted file mode 100644 index 33080c885ba..00000000000 --- a/projects/loopring/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x944644Ea989Ec64c2Ab9eF341D383cEf586A5777", - "0x674bdf20A0F284D710BC40872100128e2d66Bd3f", - ], - fetchCoValentTokens: true, - }), - }, - taiko: { - tvl: - sumTokensExport({ - owners: ['0x3e71a41325e1d6B450307b6535EC48627ac4DaCC'], - tokens: [ - ADDRESSES.null, - ADDRESSES.taiko.USDC, - ADDRESSES.taiko.USDT, - ADDRESSES.taiko.DAI, - ADDRESSES.taiko.LRC, - ADDRESSES.taiko.TAIKO - ] - }), - }, - base: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x732771F202ed19Ca8e1844d334e1df5641DC99Fe", - ], - fetchCoValentTokens: true, - }), - } -}; diff --git a/projects/loopscale/index.js b/projects/loopscale/index.js deleted file mode 100644 index e862ecbf5f7..00000000000 --- a/projects/loopscale/index.js +++ /dev/null @@ -1,332 +0,0 @@ -const { PublicKey } = require('@solana/web3.js') -const { Program, AnchorProvider, BN } = require("@coral-xyz/anchor"); -const { getConnection, } = require('../helper/solana'); -const loopscaleIdl = { - "address": "1oopBoJG58DgkUVKkEzKgyG9dvRmpgeEm1AVjoHkF78", - "metadata": {"name": "loopscale", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [ - {"name": "Loan", "discriminator": [20, 195, 70, 117, 165, 227, 182, 1]}, - {"name": "Strategy", "discriminator": [174, 110, 39, 119, 82, 106, 169, 102]} - ], - "events": [], - "errors": [], - "types": [ - { - "name": "Loan", - "serialization": "bytemuck", - "repr": {"kind": "c", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "version", "type": "u8"}, - {"name": "bump", "type": "u8"}, - {"name": "loan_status", "type": "u8"}, - {"name": "borrower", "type": "pubkey"}, - {"name": "nonce", "type": "u64"}, - {"name": "start_time", "type": {"defined": {"name": "PodU64"}}}, - {"name": "ledgers", "type": {"array": [{"defined": {"name": "Ledger"}}, 5]}}, - {"name": "collateral", "type": {"array": [{"defined": {"name": "CollateralData"}}, 5]}} - ] - } - }, - { - "name": "PodU64", - "docs": ["Represents a 64-bit unsigned integer stored as bytes (little-endian)"], - "repr": {"kind": "transparent"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 8]}]} - }, - { - "name": "Ledger", - "serialization": "bytemuck", - "repr": {"kind": "c", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "status", "type": "u8"}, - {"name": "strategy", "type": "pubkey"}, - {"name": "principal_mint", "type": "pubkey"}, - {"name": "market_information", "type": "pubkey"}, - {"name": "principal_due", "type": {"defined": {"name": "PodU64"}}}, - {"name": "principal_repaid", "type": {"defined": {"name": "PodU64"}}}, - {"name": "interest_due", "type": {"defined": {"name": "PodU64"}}}, - {"name": "interest_repaid", "type": {"defined": {"name": "PodU64"}}}, - {"name": "duration", "type": {"defined": {"name": "Duration"}}}, - {"name": "interest_per_second", "type": {"defined": {"name": "PodDecimal"}}}, - {"name": "start_time", "type": {"defined": {"name": "PodU64"}}}, - {"name": "end_time", "type": {"defined": {"name": "PodU64"}}}, - {"name": "apy", "type": {"defined": {"name": "PodU64CBPS"}}} - ] - } - }, - { - "name": "Duration", - "serialization": "bytemuck", - "repr": {"kind": "c", "packed": true}, - "type": {"kind": "struct", "fields": [{"name": "duration", "type": {"defined": {"name": "PodU32"}}}, {"name": "duration_type", "type": "u8"}]} - }, - { - "name": "PodU32", - "docs": ["Represents a 32-bit unsigned integer stored as bytes (little-endian)"], - "repr": {"kind": "transparent"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 4]}]} - }, - { - "name": "PodDecimal", - "docs": [ - "this is the scaled representation of a whole number. The whole number is scaled by 10^18 to avoid floating point errors when performing arithmetic operations." - ], - "repr": {"kind": "c"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 24]}]} - }, - { - "name": "PodU64CBPS", - "docs": ["helper type to store u64 cbps values"], - "repr": {"kind": "c"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 8]}]} - }, - { - "name": "CollateralData", - "serialization": "bytemuck", - "repr": {"kind": "c", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "asset_mint", "type": "pubkey"}, - {"name": "amount", "type": {"defined": {"name": "PodU64"}}}, - {"name": "asset_type", "type": "u8"}, - {"name": "asset_identifier", "type": "pubkey"} - ] - } - }, - { - "name": "Strategy", - "serialization": "bytemuck", - "repr": {"kind": "c", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "version", "type": "u8"}, - {"name": "nonce", "type": "pubkey"}, - {"name": "bump", "type": "u8"}, - {"name": "principal_mint", "type": "pubkey"}, - {"name": "lender", "type": "pubkey"}, - {"name": "originations_enabled", "type": {"defined": {"name": "PodBool"}}}, - {"name": "external_yield_source", "type": "u8"}, - {"name": "interest_per_second", "type": {"defined": {"name": "PodDecimal"}}}, - { - "name": "last_accrued_timestamp", - "docs": ["timestamp interest per second's interest was last accrued"], - "type": {"defined": {"name": "PodU64"}} - }, - { - "name": "liquidity_buffer", - "docs": ["the is the amount of liquidity % that always needs to be in the strategy"], - "type": {"defined": {"name": "PodU64CBPS"}} - }, - {"name": "token_balance", "docs": ["amount of principal in the strategy"], "type": {"defined": {"name": "PodU64"}}}, - { - "name": "interest_fee", - "docs": ["this is the fee charged by and accrued to the manager on the interest accrued via external yield and loans"], - "type": {"defined": {"name": "PodU64CBPS"}} - }, - { - "name": "principal_fee", - "docs": ["this is the fee charged by and accrued to the manager on the origination fee"], - "type": {"defined": {"name": "PodU64CBPS"}} - }, - {"name": "origination_fee", "docs": ["fee charged on origination of new loans"], "type": {"defined": {"name": "PodU64CBPS"}}}, - {"name": "origination_cap", "docs": ["the maximum size of a loan that can be originated"], "type": {"defined": {"name": "PodU64"}}}, - { - "name": "external_yield_amount", - "docs": ["this is the amount of principal currently in external yield. has to always be updated on any new nav action"], - "type": {"defined": {"name": "PodU64"}} - }, - { - "name": "current_deployed_amount", - "docs": ["this is the amount of principal currently deployed in loans"], - "type": {"defined": {"name": "PodU64"}} - }, - { - "name": "outstanding_interest_amount", - "docs": ["this is the interest that has not been repaid yet but accrued"], - "type": {"defined": {"name": "PodU64"}} - }, - {"name": "fee_claimable", "docs": ["this is the amount that has accrued to the manager"], "type": {"defined": {"name": "PodU64"}}}, - {"name": "cumulative_principal_originated", "type": {"defined": {"name": "PodU128"}}}, - {"name": "cumulative_interest_accrued", "type": {"defined": {"name": "PodU128"}}}, - {"name": "cumulative_loan_count", "type": {"defined": {"name": "PodU64"}}}, - {"name": "active_loan_count", "type": {"defined": {"name": "PodU64"}}}, - {"name": "market_information", "type": "pubkey"}, - {"name": "collateral_map", "type": {"array": [{"array": [{"defined": {"name": "PodU64"}}, 5]}, 200]}}, - {"name": "external_yield_accounts", "type": {"defined": {"name": "ExternalYieldAccounts"}}} - ] - } - }, - {"name": "PodBool", "docs": ["Represents a bool stored as a byte"], "repr": {"kind": "transparent"}, "type": {"kind": "struct", "fields": ["u8"]}}, - { - "name": "PodU128", - "docs": ["Represents a 128-bit unsigned integer stored as bytes (little-endian)"], - "repr": {"kind": "c"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 16]}]} - }, - { - "name": "ExternalYieldAccounts", - "repr": {"kind": "c", "packed": true}, - "type": {"kind": "struct", "fields": [{"name": "external_yield_account", "type": "pubkey"}, {"name": "external_yield_vault", "type": "pubkey"}]} - } - ] -} - -const endpoint = 'https://loopscale-pricing-adapters-109615290061.europe-west2.run.app/decompile_mints' - -const creditbookProgram = (connection) => { - const provider = new AnchorProvider( - connection, - { publicKey: PublicKey.default, signTransaction: (tx) => Promise.resolve(tx), signAllTransactions: (txs) => Promise.resolve(txs) }, - AnchorProvider.defaultOptions() - ); - const program = new Program(loopscaleIdl, provider); - return program; -}; - -async function getLoans(connection) { - const loansBorrowed = await creditbookProgram(connection).account.loan.all(); - return loansBorrowed; -} - -function bytesToNumberLE(bytes) { - let result = 0n; // Start with BigInt 0 - for (let i = bytes.length - 1; i >= 0; i--) { - result = (result << 8n) | BigInt(bytes[i]); - - } - - return Number(result); -} - -function getCollateralValuesForLoans(loans) { - const mintBalances = {}; - for(let i = 0; i < loans.length; i++) { - const collateralData = loans[i].account.collateral[0]; - const collateralMint = collateralData.assetMint; - const totalCollateral = new BN(collateralData.amount[0].reverse()).toNumber(); - - mintBalances[collateralMint] = mintBalances[collateralMint] ? mintBalances[collateralMint] + totalCollateral : totalCollateral; - } - return mintBalances; -} - -function getOutstandingBalanceForStrategy(strategy, currentTimestamp) { - // current_deployed_amount - // plus - // interest_outstanding - // plus - // interest_per_second - // times - // (current_timestamp - last_accrued_timestamp) - const lastAccruedTimestamp = bytesToNumberLE(new Uint8Array(strategy.lastAccruedTimestamp[0])); - const interestPerSecond = bytesToNumberLE(new Uint8Array(strategy.interestPerSecond[0])) / 1e18; - const currentDeployedAmount = bytesToNumberLE(new Uint8Array(strategy.currentDeployedAmount[0])); - const outstandingInterestAmount = bytesToNumberLE(new Uint8Array(strategy.outstandingInterestAmount[0])); - const unaccruedInterest = interestPerSecond * (currentTimestamp - lastAccruedTimestamp); - - return currentDeployedAmount + outstandingInterestAmount + unaccruedInterest; -} - -function getOutstandingDebt(strategies) { - const strategyBalances = {}; - const currentTimestamp = Math.floor(Date.now() / 1000); - - for(let i = 0; i < strategies.length; i++) { - const strategy = strategies[i].account; - const mint = strategy.principalMint.toString(); - const outstandingBalance = getOutstandingBalanceForStrategy(strategy, currentTimestamp); - strategyBalances[mint] = strategyBalances[mint] ? strategyBalances[mint] + outstandingBalance : outstandingBalance; - } - - return strategyBalances; -} - -function getIdleCapital(strategies) { - const strategyBalances = {}; - - for(let i = 0; i < strategies.length; i++) { - const strategy = strategies[i].account; - const mint = strategy.principalMint.toString(); - const unusedBalance = getIdleBalanceForStrategy(strategy); - strategyBalances[mint] = strategyBalances[mint] ? strategyBalances[mint] + unusedBalance : unusedBalance; - } - - return strategyBalances; -} - -async function getStrategies(connection) { - const outstandingStrategies = await creditbookProgram(connection).account.strategy.all(); - - return outstandingStrategies; -} - -function getIdleBalanceForStrategy(strategy) { - const amountExternallySupplied = bytesToNumberLE(new Uint8Array(strategy.externalYieldAmount[0])); - const amountHeldByStrategy = bytesToNumberLE(new Uint8Array(strategy.tokenBalance[0])); - - return amountExternallySupplied + amountHeldByStrategy; -} - -async function getDeposits(connection) { - const loans = await getLoans(connection); - const collateralBalances = getCollateralValuesForLoans(loans); - - const strats = await getStrategies(connection); - const idleCapitalBalances = getIdleCapital(strats); - - let rawDeposits = {}; - - for (const obj of [collateralBalances, idleCapitalBalances]) { - for (const [key, value] of Object.entries(obj)) { - rawDeposits[key] = (rawDeposits[key] || 0) + value; - } - } - - rawDeposits = Object.fromEntries( - Object.entries(rawDeposits).filter(([key, value]) => value !== 0) - ); - - const response = await fetch(endpoint, { - method: "POST", - headers: { - "Content-Type": "application/json" - }, - body: JSON.stringify({ - rawBalances: rawDeposits - }) - }); - - const formattedDeposits = await response.json(); - - return formattedDeposits; -} - -async function tvl(api) { - const connection = getConnection(); - const balances = await getDeposits(connection); - const data = Object.entries(balances).map(([mint, balance]) => ({ mint, balance })); - api.addTokens(data.map(d => d.mint), data.map(d => d.balance)); -} - -async function borrowed(api) { - const connection = getConnection(); - const strategies = await getStrategies(connection); - const outstandingDebt = getOutstandingDebt(strategies); - const data = Object.entries(outstandingDebt).map(([mint, balance]) => ({ mint, balance })); - api.addTokens(data.map(d => d.mint), data.map(d => d.balance)); -} - -module.exports = { - doublecounted: false, - timetravel: false, - methodology: - 'TVL is calculated by summing up lending deposits and supplied collateral. Borrowed tokens are included.', - solana: { tvl, borrowed, }, -} diff --git a/projects/loopscale/loopscale.json b/projects/loopscale/loopscale.json deleted file mode 100644 index ceba1b766a2..00000000000 --- a/projects/loopscale/loopscale.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "address": "1oopBoJG58DgkUVKkEzKgyG9dvRmpgeEm1AVjoHkF78", - "metadata": {"name": "loopscale", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [{"name": "Strategy", "discriminator": [174, 110, 39, 119, 82, 106, 169, 102]}, - - {"name": "Loan", "discriminator": [20, 195, 70, 117, 165, 227, 182, 1]}], - "events": [], - "errors": [], - "types": [ - { - "name": "Loan", - "serialization": "bytemuck", - "repr": {"kind": "c", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "version", "type": "u8"}, - {"name": "bump", "type": "u8"}, - {"name": "loan_status", "type": "u8"}, - {"name": "borrower", "type": "pubkey"}, - {"name": "nonce", "type": "u64"}, - {"name": "start_time", "type": {"defined": {"name": "PodU64"}}}, - {"name": "ledgers", "type": {"array": [{"defined": {"name": "Ledger"}}, 5]}}, - {"name": "collateral", "type": {"array": [{"defined": {"name": "CollateralData"}}, 5]}}, - {"name": "weight_matrix", "type": {"array": [{"array": [{"defined": {"name": "PodU32CBPS"}}, 5]}, 5]}}, - {"name": "ltv_matrix", "type": {"array": [{"array": [{"defined": {"name": "PodU32CBPS"}}, 5]}, 5]}}, - {"name": "lqt_matrix", "type": {"array": [{"array": [{"defined": {"name": "PodU32CBPS"}}, 5]}, 5]}} - ] - } - }, - { - "name": "Strategy", - "serialization": "bytemuck", - "repr": {"kind": "c", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "version", "type": "u8"}, - {"name": "nonce", "type": "pubkey"}, - {"name": "bump", "type": "u8"}, - {"name": "principal_mint", "type": "pubkey"}, - {"name": "lender", "type": "pubkey"}, - {"name": "originations_enabled", "type": {"defined": {"name": "PodBool"}}}, - {"name": "external_yield_source", "type": "u8"}, - {"name": "interest_per_second", "type": {"defined": {"name": "PodDecimal"}}}, - { - "name": "last_accrued_timestamp", - "docs": ["timestamp interest per second's interest was last accrued"], - "type": {"defined": {"name": "PodU64"}} - }, - { - "name": "liquidity_buffer", - "docs": ["the is the amount of liquidity % that always needs to be in the strategy"], - "type": {"defined": {"name": "PodU64CBPS"}} - }, - {"name": "token_balance", "docs": ["amount of principal in the strategy"], "type": {"defined": {"name": "PodU64"}}}, - { - "name": "interest_fee", - "docs": ["this is the fee charged by and accrued to the manager on the interest accrued via external yield and loans"], - "type": {"defined": {"name": "PodU64CBPS"}} - }, - { - "name": "principal_fee", - "docs": ["this is the fee charged by and accrued to the manager on the origination fee"], - "type": {"defined": {"name": "PodU64CBPS"}} - }, - {"name": "origination_fee", "docs": ["fee charged on origination of new loans"], "type": {"defined": {"name": "PodU64CBPS"}}}, - {"name": "origination_cap", "docs": ["the maximum size of a loan that can be originated"], "type": {"defined": {"name": "PodU64"}}}, - { - "name": "external_yield_amount", - "docs": ["this is the amount of principal currently in external yield. has to always be updated on any new nav action"], - "type": {"defined": {"name": "PodU64"}} - }, - { - "name": "current_deployed_amount", - "docs": ["this is the amount of principal currently deployed in loans"], - "type": {"defined": {"name": "PodU64"}} - }, - { - "name": "outstanding_interest_amount", - "docs": ["this is the interest that has not been repaid yet but accrued"], - "type": {"defined": {"name": "PodU64"}} - }, - {"name": "fee_claimable", "docs": ["this is the amount that has accrued to the manager"], "type": {"defined": {"name": "PodU64"}}}, - {"name": "cumulative_principal_originated", "type": {"defined": {"name": "PodU128"}}}, - {"name": "cumulative_interest_accrued", "type": {"defined": {"name": "PodU128"}}}, - {"name": "cumulative_loan_count", "type": {"defined": {"name": "PodU64"}}}, - {"name": "active_loan_count", "type": {"defined": {"name": "PodU64"}}}, - {"name": "market_information", "type": "pubkey"}, - {"name": "collateral_map", "type": {"array": [{"array": [{"defined": {"name": "PodU64"}}, 5]}, 200]}}, - {"name": "external_yield_accounts", "type": {"defined": {"name": "ExternalYieldAccounts"}}} - ] - } - }, - {"name": "PodBool", "docs": ["Represents a bool stored as a byte"], "repr": {"kind": "transparent"}, "type": {"kind": "struct", "fields": ["u8"]}}, - { - "name": "PodDecimal", - "docs": [ - "this is the scaled representation of a whole number. The whole number is scaled by 10^18 to avoid floating point errors when performing arithmetic operations." - ], - "repr": {"kind": "c"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 24]}]} - }, - { - "name": "PodU64", - "docs": ["Represents a 64-bit unsigned integer stored as bytes (little-endian)"], - "repr": {"kind": "transparent"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 8]}]} - }, - { - "name": "PodU64CBPS", - "docs": ["helper type to store u64 cbps values"], - "repr": {"kind": "c"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 8]}]} - }, - { - "name": "PodU128", - "docs": ["Represents a 128-bit unsigned integer stored as bytes (little-endian)"], - "repr": {"kind": "c"}, - "type": {"kind": "struct", "fields": [{"array": ["u8", 16]}]} - }, - { - "name": "ExternalYieldAccounts", - "repr": {"kind": "c", "packed": true}, - "type": {"kind": "struct", "fields": [{"name": "external_yield_account", "type": "pubkey"}, {"name": "external_yield_vault", "type": "pubkey"}]} - } - ] -} \ No newline at end of file diff --git a/projects/lootswap/index.js b/projects/lootswap/index.js deleted file mode 100644 index 34e6435d888..00000000000 --- a/projects/lootswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - harmony: { - tvl: getUniTVL({ factory: '0x021AeF70c404aa9d70b71C615F17aB3a4038851A', useDefaultCoreAssets: true }), - }, - hallmarks:[ - [1655991120, "Horizon bridge Hack $100m"], - ], -} \ No newline at end of file diff --git a/projects/lore/index.js b/projects/lore/index.js deleted file mode 100644 index 35520fc0016..00000000000 --- a/projects/lore/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave') - -module.exports = { - scroll: aaveExports("scroll", "0xBc6DE4458b7D6fbf82240ce8cC0CA6a2f4986eb5"), -} diff --git a/projects/lorenzo-bsc-lst/index.js b/projects/lorenzo-bsc-lst/index.js deleted file mode 100644 index 858309511ab..00000000000 --- a/projects/lorenzo-bsc-lst/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); - -async function bscTvl(api) { - const stBTCTokenAddress = ADDRESSES.swellchain.stBTC; - const totalSupply = await api.call({ - abi: 'erc20:totalSupply', - target: stBTCTokenAddress, - }); - - const balances = {}; - sdk.util.sumSingleBalance(balances, 'coingecko:bitcoin', totalSupply / (1e18)); - return balances; -} - -module.exports = { - methodology: "Lorenzo, As the Bitcoin Liquidity Finance Layer", - bsc: { - tvl: bscTvl, - } -}; \ No newline at end of file diff --git a/projects/lorenzo-enzoBTC/index.js b/projects/lorenzo-enzoBTC/index.js deleted file mode 100644 index 1f26d167d71..00000000000 --- a/projects/lorenzo-enzoBTC/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') -const { sumTokensExport } = require("../helper/sumTokens"); - -module.exports = { - methodology: "enzoBTC, Lorenzo Wrapped Bitcoin", - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.lorenzo2 }) } -}; \ No newline at end of file diff --git a/projects/lorenzo/index.js b/projects/lorenzo/index.js deleted file mode 100644 index cf0fbcf01ee..00000000000 --- a/projects/lorenzo/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "Lorenzo, As the Bitcoin Liquidity Finance Layer", - doublecounted:true, - bitcoin: { tvl: sumTokensExport({ owners : bitcoinAddressBook.lorenzo }) } -}; \ No newline at end of file diff --git a/projects/loterra/index.js b/projects/loterra/index.js deleted file mode 100644 index 2a7bd8e055a..00000000000 --- a/projects/loterra/index.js +++ /dev/null @@ -1,12 +0,0 @@ - -module.exports = { - methodology: 'TVL counts the UST that is available as a prize on the protocol.', - terra: { - tvl: () => ({}), - }, - deadFrom: '2022-05-26', - timetravel: false, - hallmarks:[ - [1651881600, "UST depeg"], - ] -} diff --git a/projects/louverture/abi.json b/projects/louverture/abi.json deleted file mode 100644 index c8a97cf1638..00000000000 --- a/projects/louverture/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalNodeValue": "uint256:totalNodeValue" -} \ No newline at end of file diff --git a/projects/louverture/index.js b/projects/louverture/index.js deleted file mode 100644 index 9d39b7ee95f..00000000000 --- a/projects/louverture/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const sdk = require('@defillama/sdk'); -const abi = require('./abi.json'); - - -const nodeManager = '0x3Cf1Dff7CCE2b7291456Bc2089b4bCB2AB5f311A' -const lvtContract = 'avax:0xff579d6259dEDcc80488c9b89d2820bCb5609160' - -async function staking(timestamp, ethBlock, chainBlocks) { - const totalNodeValue = await sdk.api.abi.call({ - target: nodeManager, - abi: abi['totalNodeValue'], - block: chainBlocks.avax, - chain: 'avax' - }); - - - return{ - [lvtContract]: totalNodeValue.output - } -} - - -module.exports = { - start: '2021-12-19', // 19/12/2021 @ 00:00am (UTC) - avax:{ - staking, - tvl: async()=>({}) - } -} - -module.exports.deadFrom = '2022-03-29' \ No newline at end of file diff --git a/projects/love/index.js b/projects/love/index.js deleted file mode 100644 index ec0391bcc38..00000000000 --- a/projects/love/index.js +++ /dev/null @@ -1,22 +0,0 @@ - -module.exports = { - methodology: - "The liquidity on these three pools + the tokens staked on all three chains (PulseChain, Ethereum, and Binance Smart Chain)", -}; - -const config = { - ethereum: { staking: '0xE639E9DC0E302f5dB025713009868c8adE4Ced26' }, - pulse: { staking: '0xDd91E607C919Db74e18C2845e4cfb22793c30b2f' }, - bsc: { staking: '0x1781e00780AfD93a03Bf5f9dED088a8578cE9B09' }, -} - -Object.keys(config).forEach(chain => { - const { staking} = config[chain] - module.exports[chain] = { - tvl: () => ({}), - staking: async (api) => { - const stakingToken = await api.call({ abi: 'address:stakingToken', target: staking}) - return api.sumTokens({ owner: staking, tokens: [stakingToken]}) - } - } -}) \ No newline at end of file diff --git a/projects/lovelyswap-v2/index.js b/projects/lovelyswap-v2/index.js deleted file mode 100644 index ed77cf98482..00000000000 --- a/projects/lovelyswap-v2/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - bsc: '0x7db16925214B2F5D65dB741D59208A1187B9961c', - base: '0x7db16925214B2F5D65dB741D59208A1187B9961c', - polygon: '0x177aeb3727c91c4796766336923c4da431c59637', -}) diff --git a/projects/lowcostswap/index.js b/projects/lowcostswap/index.js deleted file mode 100644 index 4db6c15d410..00000000000 --- a/projects/lowcostswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0x57f70857aB735576ab5216Cd5e58c6dAe72F21D7"; -const token = "0xDBfe47255CbA4A7623985444E730719E9F958E67"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/loxodrome-perp/index.js b/projects/loxodrome-perp/index.js deleted file mode 100644 index 8aded92dff5..00000000000 --- a/projects/loxodrome-perp/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - iotex: { - tvl: gmxExports({ vault: '0x13904291B7d3e87d23070d22Bc34FA514F99Db18' }) - }, -} \ No newline at end of file diff --git a/projects/loxodrome/index.js b/projects/loxodrome/index.js deleted file mode 100644 index e504baf0afc..00000000000 --- a/projects/loxodrome/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const { mergeExports } = require('../helper/utils') - -const exports1 = uniTvlExport('iotex', '0x92bfa051bf12a0aef9a5e1ac8b2aa7dc1b05a406', { hasStablePools: true, }) -const exports2 = uniTvlExport('iotex', '0x9442E8d017bb3dC2Ba35d75204211e60f86fF0F8', { hasStablePools: true, }) - -module.exports = mergeExports(exports1, exports2) \ No newline at end of file diff --git a/projects/lpeth/index.js b/projects/lpeth/index.js deleted file mode 100644 index 2b2ba1f5322..00000000000 --- a/projects/lpeth/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -async function tvl(api) { - const LPETH_CONTRACT = "0xF3a75E087A92770b4150fFF14c6d36FB07796252" - const liabilities = await api.call({ abi: 'uint256:liabilities', target: LPETH_CONTRACT, }) - api.addGasToken(liabilities) -} - -module.exports = { - methodology: 'Counts the amount of deposited ETH in the LPETH contract.', - doublecounted: true, - ethereum: { - tvl - } -} \ No newline at end of file diff --git a/projects/lsdFil/index.js b/projects/lsdFil/index.js deleted file mode 100644 index c2e1e0875e8..00000000000 --- a/projects/lsdFil/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const MINT_TOKEN_CONTRACT = ADDRESSES.filecoin.WFIL; -const MINT_CLUB_BOND_CONTRACT = '0x7187b3B1314375909B775d72fB7214Cb71a7D907'; - - -async function tvl(api) { - const collateralBalance = await api.call({ - abi: 'erc20:balanceOf', - target: MINT_TOKEN_CONTRACT, - params: [MINT_CLUB_BOND_CONTRACT], - }); - - api.add(MINT_TOKEN_CONTRACT, collateralBalance) -} - -module.exports = { - methodology: 'counts the number of MINT tokens in the Club Bonding contract.', - filecoin: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/lsdx/index.js b/projects/lsdx/index.js deleted file mode 100644 index fdc0114b3d6..00000000000 --- a/projects/lsdx/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const FACTORY_CONTRACT = "0x3B4b6B14d07A645005658E6Ea697edb0BD7bf2b1"; - -const ETHx = '0x21ead867c8c5181854f6f8ce71f75b173d2bc16a' -const LSD = '0xfac77a24e52b463ba9857d6b758ba41ae20e31ff' -const LSD_LPs = ['0x3322f41dfa379B6D3050C1e271B0b435b3Ee3303', '0x3ab2ebbe52f4a80098a461cf9ecdade2ed645fc4'] -const abis = { - "getStakingTokens": "function getStakingTokens() view returns (address[])", - "getStakingPoolAddress": "function getStakingPoolAddress(address) view returns (address)", -} - -async function tvl(api) { - const tokens = await api.call({ abi: abis.getStakingTokens, target: FACTORY_CONTRACT, }) - const owners = await api.multiCall({ abi: abis.getStakingPoolAddress, target: FACTORY_CONTRACT, calls: tokens }) - tokens.forEach((v, i) => { - if (v === nullAddress) { - tokens.push(ADDRESSES.ethereum.WETH) - owners.push(owners[i]) - } - }) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens: [...LSD_LPs, ETHx, LSD] }) -} - -module.exports = { - ethereum: { - tvl, - pool2: staking(['0x1D31755E03119311c7F00ae107874dddEC7573f3', '0xE05630Da82604591F002b61F7116429CfDC4B542'], LSD_LPs), - staking: staking(['0xcA73C2aBA8EECb37EA1648999A7b08787b808ee2'], ETHx), - } -}; diff --git a/projects/lst-optimizer/index.js b/projects/lst-optimizer/index.js deleted file mode 100644 index bac315e7d66..00000000000 --- a/projects/lst-optimizer/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const abi = "function totalAssets() view returns (uint256)" - const kETHStrategyAddress = "0xa060a5F83Db8bf08b45Cf56Db370c9383b7B895C"; - const dETHVaultAddress = "0x4c7aF9BdDac5bD3bee9cd2Aa2FeEeeE7610f5a6B"; - - let kETHTvl = await api.call({ abi: abi, target: kETHStrategyAddress }) - let dETHTvl = await api.call({ abi: abi, target: dETHVaultAddress }) - api.add(ADDRESSES.null, kETHTvl) - api.add(ADDRESSES.null, dETHTvl) - return api.getBalances() -} - -module.exports = { - ethereum: { - tvl - } -}; \ No newline at end of file diff --git a/projects/luaswap/index.js b/projects/luaswap/index.js deleted file mode 100644 index 2d07c57acde..00000000000 --- a/projects/luaswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address on tomochain (0x0eAC91966b12b81db18f59D8e893b9ccef7e2c30) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - tomochain: { tvl: getUniTVL({ factory: '0x28c79368257CD71A122409330ad2bEBA7277a396', useDefaultCoreAssets: true, permitFailure: true }) }, - ethereum: { tvl: getUniTVL({ factory: '0x0388C1E0f210AbAe597B7DE712B9510C6C36C857', useDefaultCoreAssets: true }) }, -} diff --git a/projects/luchadores/index.js b/projects/luchadores/index.js deleted file mode 100644 index 589b1a20931..00000000000 --- a/projects/luchadores/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { staking } = require('../helper/staking'); - -// multisigs -const rewardPool_polygon = "0x72104d619BaEDf632936d9dcE38C089CA3bf12Dc"; - -//Contrat de staking, balancer, retro (matic/cash), aero, balanceof de la treso - -// LPs -const WMATIC_LUCHA_Balancer_polygon = "0x924EC7ed38080E40396c46F6206A6d77D0B9f72d"; - -// staking -const luchaStk = "0xC5E9E8574c27747B4D537ef94e2448a3A0525dF4"; -const luchaMaticBalancerStk = "0x1F0ee42D005b89814a01f050416b28c3142ac900"; - -// ERC20 -const LUCHA_polygon = "0x6749441Fdc8650b5b5a854ed255C82EF361f1596"; - -module.exports = { - polygon: { - tvl: () => ({}), - pool2: staking(luchaMaticBalancerStk, WMATIC_LUCHA_Balancer_polygon), - staking: staking([luchaStk, rewardPool_polygon], LUCHA_polygon) - }, - methodology: `- Staking : Players can stake their $LUCHA to earn $MASK and access in-game services or equipment.\r - - Treasury : 100% of the funds collected during the first raffle (purchase of wearable) have been kept in treasury to build a long term economic strategy. Luchadores.io own 60% of LP token to improve liquidity and facilitate user swaps.\r - - Reward Pool : 90% of the revenues generated in the game are redistributed to the players in this wallet (the 10% is shared between treasury and dev)\r` -} \ No newline at end of file diff --git a/projects/lucidly/arbitrumConstants.js b/projects/lucidly/arbitrumConstants.js deleted file mode 100644 index 2f4df9834e9..00000000000 --- a/projects/lucidly/arbitrumConstants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Arbitrum = [ - { - name: "Stable Yield USD", - vault: "0x279CAD277447965AF3d24a78197aad1B02a2c589", - accountant: "0x03D9a9cE13D16C7cFCE564f41bd7E85E5cde8Da6", - teller: "0xaefc11908fF97c335D16bdf9F2Bf720817423825", - lens: "0x074F543E7DaA7C67F77bfD8C41C79127c4dd80d9", - startBlock: 335361063, - baseAsset: ADDRESSES.arbitrum.USDC, - }, -]; - -module.exports = { - boringVaultsV0Arbitrum, -}; diff --git a/projects/lucidly/baseConstants.js b/projects/lucidly/baseConstants.js deleted file mode 100644 index bb98ff13683..00000000000 --- a/projects/lucidly/baseConstants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Base = [ - { - name: "Stable Yield USD", - vault: "0x279CAD277447965AF3d24a78197aad1B02a2c589", - accountant: "0x03D9a9cE13D16C7cFCE564f41bd7E85E5cde8Da6", - teller: "0xaefc11908fF97c335D16bdf9F2Bf720817423825", - lens: "0x074F543E7DaA7C67F77bfD8C41C79127c4dd80d9", - startBlock: 30004947, - baseAsset: ADDRESSES.base.USDC, - }, -]; - -module.exports = { - boringVaultsV0Base, -}; diff --git a/projects/lucidly/ethereumConstants.js b/projects/lucidly/ethereumConstants.js deleted file mode 100644 index 3c21949ad51..00000000000 --- a/projects/lucidly/ethereumConstants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Ethereum = [ - { - name: "Stable Yield USD", - vault: "0x279CAD277447965AF3d24a78197aad1B02a2c589", - accountant: "0x03D9a9cE13D16C7cFCE564f41bd7E85E5cde8Da6", - teller: "0xaefc11908fF97c335D16bdf9F2Bf720817423825", - lens: "0x074F543E7DaA7C67F77bfD8C41C79127c4dd80d9", - startBlock: 22555405, - baseAsset: ADDRESSES.ethereum.USDC, - }, -]; - -module.exports = { - boringVaultsV0Ethereum, -}; diff --git a/projects/lucidly/helperMethods.js b/projects/lucidly/helperMethods.js deleted file mode 100644 index 5a2459d7da4..00000000000 --- a/projects/lucidly/helperMethods.js +++ /dev/null @@ -1,107 +0,0 @@ -async function sumLegacyTvl({ vaults, api, ownersToDedupe = [] }) { - const [assets, bals] = await Promise.all([ - api.multiCall({ - abi: "address:asset", - calls: vaults, - }), - api.multiCall({ - abi: "uint256:totalAssets", - calls: vaults, - }) - ]); - - await deduplicateAndAdd({ vaults, assets, bals, api, ownersToDedupe, type: 'Legacy' }); -} - -async function sumBoringTvl({ vaults, api, ownersToDedupe = [] }) { - - const boringCalls = vaults.map((vault) => ({ - target: vault.lens, - params: [vault.id, vault.accountant], - })); - - const boringBalances = await api.multiCall({ - abi: "function totalAssets(address boringVault, address accountant) view returns (address asset, uint256 assets)", - calls: boringCalls, - }); - - const assets = boringBalances.map(b => b.asset); - const bals = boringBalances.map(b => b.assets); - const vaultAddresses = vaults.map(v => v.id); - const lensAddresses = vaults.map(v => v.lens); - - await deduplicateAndAdd({ - vaults: vaultAddresses, - assets, - bals, - api, - ownersToDedupe, - type: 'Boring', - lensAddresses - }); -} - -async function deduplicateAndAdd({ vaults, assets, bals, api, ownersToDedupe = [], type, lensAddresses }) { - if (!vaults.length || !ownersToDedupe.length) { - assets.forEach((a, i) => api.add(a, bals[i])); - return; - } - - // Prepare all calls at once - const [sharesToIgnore, totalShares] = await Promise.all([ - // Get all shares to ignore in one batch - type === 'Boring' - ? api.multiCall({ - calls: vaults.flatMap((target, idx) => - ownersToDedupe.map(owner => ({ - target: lensAddresses[idx], - params: [owner.id, target], - })) - ), - abi: "function balanceOf(address account, address vault) view returns (uint256)", - }) - : api.multiCall({ - calls: vaults.flatMap(target => - ownersToDedupe.map(owner => ({ - target, - params: [owner.id], - })) - ), - abi: "erc20:balanceOf", - }), - // Get all total supplies in one batch - api.multiCall({ - calls: vaults.map(vault => ({ - target: vault, - })), - abi: "uint256:totalSupply", - }) - ]); - - // Process shares to ignore - const chunkedShares = chunk(sharesToIgnore, ownersToDedupe.length); - const summedShares = chunkedShares.map(shares => - shares.reduce((sum, share) => sum + Number(share), 0) - ); - - // Calculate ratios - const ratios = totalShares.map((share, i) => { - return 1 - summedShares[i] / share; - }); - - assets.forEach((a, i) => api.add(a, bals[i] * ratios[i])); -} - -// Helper function to chunk array -function chunk(array, size) { - const chunks = []; - for (let i = 0; i < array.length; i += size) { - chunks.push(array.slice(i, i + size)); - } - return chunks; -} - -module.exports = { - sumLegacyTvl, - sumBoringTvl, -}; diff --git a/projects/lucidly/index.js b/projects/lucidly/index.js deleted file mode 100644 index 7001787f540..00000000000 --- a/projects/lucidly/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const { boringVaultsV0Ethereum } = require("./ethereumConstants"); -const { boringVaultsV0Arbitrum } = require("./arbitrumConstants"); -const { boringVaultsV0Base } = require("./baseConstants"); -const { sumLegacyTvl, sumBoringTvl } = require("./helperMethods"); - -// Returns list of vault addresses that are deployed based on their start block -function filterActiveLegacyVaults(vaults, blockHeight) { - return vaults - .filter((vault) => vault.startBlock <= blockHeight) - .map((vault) => vault.id) - .filter(Boolean); -} - -// Returns a list of active boring vault objects -function filterActiveBoringVaults(vaults, blockHeight) { - return vaults - .filter((vault) => vault.startBlock <= blockHeight && vault.vault) - .map((vault) => ({ - id: vault.vault, - lens: vault.lens, - accountant: vault.accountant, - teller: vault.teller - })); -} - -async function legacyTvl(api) { - const registryAddress = '0x3C2A24c9296eC8B1fdb8039C937DaC7CBca3976c'; - const pools = await api.call({ - abi: 'function getPoolAddresses() view returns (address[])', - target: registryAddress, - }); - - const tokens = await api.fetchList({ lengthAbi: 'numTokens', itemAbi: 'tokens', calls: pools, groupedByInput: true, }) - const ownerTokens = pools.map((v, i) => [tokens[i], v]); - const balances = await api.sumTokens({ ownerTokens }); - const numericBalances = {}; - for (const [token, amount] of Object.entries(balances)) { - numericBalances[token] = Number(amount); - } - return numericBalances; -} - -async function chainTvl(api, boringVaults, legacyVaults = []) { - const block = await api.getBlock() - - const activeBoringVaults = filterActiveBoringVaults(boringVaults, block); - const activeLegacyVaultAddresses = legacyVaults.length > 0 - ? filterActiveLegacyVaults(legacyVaults, block) - : []; - - const allVaults = [...(legacyVaults || []), ...activeBoringVaults].filter(v => v.id); - - if (activeLegacyVaultAddresses.length > 0) { - await sumLegacyTvl({ - api, - vaults: activeLegacyVaultAddresses, - ownersToDedupe: allVaults, - }); - } - - if (activeBoringVaults.length > 0) { - await sumBoringTvl({ - api, - vaults: activeBoringVaults, - ownersToDedupe: allVaults, - }); - } - - return api.getBalances(); -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - start: 1710745200, - doublecounted: true, - ["ethereum"]: { - tvl: sdk.util.sumChainTvls([ - (api) => chainTvl(api, boringVaultsV0Ethereum), - (api) => legacyTvl(api) - ]) - }, - ["arbitrum"]: { tvl: (api) => chainTvl(api, boringVaultsV0Arbitrum) }, - ["base"]: { tvl: (api) => chainTvl(api, boringVaultsV0Base) }, -}; diff --git a/projects/luckychip/index.js b/projects/luckychip/index.js deleted file mode 100644 index ea86193d098..00000000000 --- a/projects/luckychip/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') -const { staking } = require("../helper/staking"); - -const toa = [ - [nullAddress, '0x45218EDE6f026F0994C55b6Fa3554A8Ea989f819'], - [ADDRESSES.bsc.USDT, '0x682ce0e340A0248B4554E14e834969F2E421dB2D'], -] - -const lcToken = '0x6012C3a742f92103d238F1c8306cF8fbcDEca8B3' -const masterChef = '0x15D2a6FC45aF66A2952dC27c40450C1F06A1eC2b'; - -// node test.js projects/luckychip/index.js -module.exports = { - methodology: 'TVL comes from the tables of LuckyChip for now.', - bsc: { - staking: staking(masterChef, lcToken), - tvl: sumTokensExport({ tokensAndOwners: toa }), - } -} diff --git a/projects/luckystake/index.js b/projects/luckystake/index.js deleted file mode 100644 index b744ec4de09..00000000000 --- a/projects/luckystake/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') - -const ADDRESSES = { - LS_CONTRACT: 'mantra1ua04lz6ztuuhpjt4lfvg4e52rd806hhmajzvjjxrhh70zy3fmvlqppkygu', -} - -async function tvl(api) { - const data = await queryContract({ chain: 'mantra', contract: ADDRESSES.LS_CONTRACT, data: { get_prize_pool: {} } }) - api.add('uom', data.total_staked) -} - -module.exports = { - methodology: "Returns total amount staked in the LuckyStake No Loss Lottery.", - timetravel: false, - mantra: { tvl }, -}; diff --git a/projects/lulo/index.js b/projects/lulo/index.js deleted file mode 100644 index 00d0d97db37..00000000000 --- a/projects/lulo/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getEnv } = require("../helper/env") - -const endpoint = 'http://api.flexlend.fi/stats' - -async function tvl(api) { - const request = { - method: 'GET', - headers: { - accept: 'application/json', - 'x-lulo-api-key': getEnv('LULO_API_KEY'), - }, - } - - const response = await fetch(`${endpoint}?timestamp=${api.timestamp}`, request) - - const { data } = await response.json() - - data.map(d => { - api.add(d.mintAddress, d.tokens) - }) -} - -module.exports = { - doublecounted: true, - timetravel: true, - start: 1704067200, - methodology: - 'Volume is calculated by summing the total USD value of deposited funds in Lulo across all tokens', - solana: { tvl }, -} diff --git a/projects/lume/index.js b/projects/lume/index.js deleted file mode 100644 index 9cc364ff712..00000000000 --- a/projects/lume/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') -const { mergeExports } = require("../helper/utils") - -module.exports = mergeExports([ - masterchefExports({ - chain: 'cronos', - masterchef: '0xF3cCE1bCe378B56BA24Cf661E2bA128303DD8b88', - nativeToken: '0xB3551aCf805D5F90A1Fd7444B6571BdC069F40b2', - poolInfoABI: 'function getPoolInfo(uint256 _pid) external view returns (address lpToken, uint256 _allocPoint)' - }), - masterchefExports({ - chain: 'cronos', - masterchef: '0x21dFe774C313AA92392725ac51693E26072c8099', - nativeToken: '0x6d810420Fcee6478cE73d4f466A094BBAdE11dA6', - poolInfoABI: 'function poolInfo(uint256 _pid) external view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accNovaPerShare, bool isStarted)' - }) -]) diff --git a/projects/lumen-money/index.js b/projects/lumen-money/index.js deleted file mode 100644 index d4541b6c9c3..00000000000 --- a/projects/lumen-money/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - neon_evm: compoundExports2({ - comptroller: "0x252dBa92827744e6d2b01f1c9D77dcD3CBAb4573", - cether: "0x3A81c854dCF6172cE3a7fFF024ECF20d8Ac2A1af", - }), -}; diff --git a/projects/lumenswap/index.js b/projects/lumenswap/index.js deleted file mode 100644 index bde6a54b1e9..00000000000 --- a/projects/lumenswap/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const utils = require("../helper/utils"); -const { getApiTvl } = require("../helper/historicalApi"); - -async function current() { - var tvlAllPools = ( - await utils.fetchURL("https://api.lumenswap.io/amm/known-pools") - ).data.map((t) => t.tvl); - let tvl = 0; - for (let tvlPool of tvlAllPools) { - tvl += parseFloat(tvlPool); - } - return tvl; -} - -function tvl(time) { - return getApiTvl(time, current, async () => { - const dayData = await utils.fetchURL( - "https://api.lumenswap.io/amm/stats/overall" - ); - return dayData.data.map((d) => ({ - date: Math.round(new Date(d.periodTime).getTime() / 1e3), - totalLiquidityUSD: d.tvl, - })); - }); -} - -module.exports = { - methodology: - 'TVL counts the liquidity of the Pools on AMM, data is pulled from the Lumenswap API:"https://api.lumenswap.io/amm/known-pools".', - misrepresentedTokens: true, - stellar: {tvl}, -}; diff --git a/projects/lumi-finance/index.js b/projects/lumi-finance/index.js deleted file mode 100644 index fd0990fc0f4..00000000000 --- a/projects/lumi-finance/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require("@defillama/sdk"); - -const StakeContract = "0xD621813a8C1FA039A66DF647908053D1b4CE1428"; - -const ArbLUAUSD2CRV = "0xd2239b95890018a8f52ffd17d7f94c3a82f05389"; -const Arb2CRV = "0x7f90122bf0700f9e7e1f688fe926940e8839f353"; -const Arb2CRVOldGauge = "0xbF7E49483881C76487b0989CD7d9A8239B20CA41"; - -const Arb2CRVGauge = "0xCE5F24B7A95e9cBa7df4B54E911B4A3Dc8CDAf6f"; -const Arb2CRVLUAUSDLP = "0xD2239B95890018a8f52fFD17d7F94C3A82f05389"; -const ArbLUAUSDMetaPoolGauge = "0x721cac0f4715a29acd76752408636e8a49222c11"; - -const USDCBridged = ADDRESSES.arbitrum.USDC; -const USDT = ADDRESSES.arbitrum.USDT; -const WBTC = ADDRESSES.arbitrum.WBTC; -const LUA = "0xc3aBC47863524ced8DAf3ef98d74dd881E131C38"; -const LUAUSD = "0x1DD6b5F9281c6B4f043c02A83a46c2772024636c"; - -const valuts = { - // curve meta pool - curveLUAUSDMetaPool: "0x12dc6b335f3d1f033F43F29E4ef4727643461755", - - // curve 2crv - curve2CRV: "0xe9949A78006C23d7E2ba9843ea65f3dD7c7406da", - - // curve protocol revenue - curveLUAUSDMetaPoolRevenue: "0x6Ac6cA54604B63d58B3e4BDb1488C340BbBDFE6c", - - // lua-luausd - uniswapLUALUASD: "0x092dCc19bb3Ad1aF654bB1417Bc7b63991baCc01", - - // lua-usdt - uniswapLUAUSDT: "0x749C02E48C96c0BA5f6aD15F26d9cEB270F4124D", - - // lua-wbtc - uniswapLUABTC: "0xc9D8F9A68DaD55209B50EE19CbFEAb3B16d81372", -}; - -const staking = sumTokensExport({ ownerTokens: [[[Arb2CRVGauge, Arb2CRVLUAUSDLP, ArbLUAUSDMetaPoolGauge], StakeContract]] }); - -async function addUniswapPools(api, balances) { - return sumTokens2({ - balances, api, owners: Object.values(valuts), tokens: [ - USDCBridged, - USDT, - WBTC, - ], - resolveUniV3: true, - blacklistedTokens: [LUA, LUAUSD], - }); -} - -async function addyLUAUSD2CRV(api, balances) { - const metaPool2CRVBalance = await api.call({ abi: 'erc20:balanceOf', target: Arb2CRVOldGauge, params: ArbLUAUSD2CRV, }) - sdk.util.sumSingleBalance(balances, Arb2CRV, metaPool2CRVBalance, api.chain) - return sumTokens2({ balances, api, owners: Object.values(valuts), tokens: [Arb2CRV, Arb2CRVGauge] }) -} - -const arb1Tvl = async (api) => { - let balances = {}; - - await Promise.all([ - addUniswapPools(api, balances), - addyLUAUSD2CRV(api, balances), - ]) - return balances -}; - -module.exports = { - methodology: `We count the TVL on the protocol vaults`, - arbitrum: { - staking: staking, - tvl: arb1Tvl, - }, -} \ No newline at end of file diff --git a/projects/lumin-finance/index.js b/projects/lumin-finance/index.js deleted file mode 100644 index 5cca0e9c1dc..00000000000 --- a/projects/lumin-finance/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping"); - -const LUMIN_V1_CONTRACT_ASSET_MANAGER = "0x7f9a5443c1938fCc7b5A0FffA94385CC867A9495" -const LUMIN_V2_CONTRACT = "0x1F00009c0310A4804925695F44355dE5110EC074" - -const abi = { - v1: { - assetIds: "function getRegisteredAssetIDs() view returns (bytes4[] memory)", - asset: "function getAsset(bytes4) view returns ((address, uint8, uint8, uint8, uint256) memory)", - depositOf: "function depositOf(bytes4, address) view returns (uint128, uint128)" - }, - v2: { - stakeStats: "function getStakeStats() view returns ((uint64, uint72, uint24, uint24, uint24, uint24, uint24) memory, (uint64, uint72, uint24, uint24, uint24, uint24, uint24) memory)", - } -} - -async function tvl(api) { - const assetIds = await api.call({ abi: abi.v1.assetIds, target: LUMIN_V1_CONTRACT_ASSET_MANAGER }); - const assetData = await api.multiCall({ abi: abi.v1.asset, calls: assetIds, target: LUMIN_V1_CONTRACT_ASSET_MANAGER }) - const tokens = assetData.map(asset => asset[0]) - return api.sumTokens({ tokens, owner: LUMIN_V1_CONTRACT_ASSET_MANAGER }) -} - -async function borrowed(api) { - const assetIds = await api.call({ abi: abi.v1.assetIds, target: LUMIN_V1_CONTRACT_ASSET_MANAGER }); - const assetData = await api.multiCall({ abi: abi.v1.asset, calls: assetIds, target: LUMIN_V1_CONTRACT_ASSET_MANAGER }) - const tokens = assetData.map(asset => asset[0]) - const deposit = await api.multiCall({ abi: abi.v1.depositOf, target: LUMIN_V1_CONTRACT_ASSET_MANAGER, calls: assetIds.map(i => ({ params: [i, nullAddress] })) }); - tokens.forEach((token, i) => api.add(token, deposit[i][1])) -} -async function staking(api) { - return; // this is broken - const stakingBalance = await api.call({ - abi: abi.v2.stakeStats, - target: LUMIN_V2_CONTRACT, - params: [], - }); - - api.add('0x1FC01117E196800f416A577350CB1938d10501C2', stakingBalance[0][0]) - api.add('0x1FC01117E196800f416A577350CB1938d10501C2', stakingBalance[1][0]) -} - -module.exports = { - methodology: 'Gets v1 total deposits, and v2 staking statistics on-chain.', - arbitrum: { - staking, - tvl, borrowed, - } -} \ No newline at end of file diff --git a/projects/luminous/index.js b/projects/luminous/index.js deleted file mode 100644 index 5f40332bb38..00000000000 --- a/projects/luminous/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const sdk = require('@defillama/sdk') -const { sumTokensExport } = require('../helper/unwrapLPs') -const { nullAddress } = require("../helper/tokenMapping"); - -const stakingWaterContract = "THyHbFrG5wnxdp9Lv7AgwJ4k7Nt1dp2pzj"; -const WATER = "TFMUZn349bztRCCkL2PAmkWfy23Gyn5g5r"; - -const stakingLumiContract = "TZD4xS3AFUixUwE28omTjeepCF6qUuxjCh"; -const LUMI = "TDBNKiYQ8yfJtT5MDP3byu7f1npJuG2DBN"; - -const lumiFarm = "TJ6cgPpkri8cfrEh79TLdU2S16ugKHwAcW"; -const waterLpToken = "TWH6NQ9tr28YoRdKuvcuQquVoEGrscPix4"; - -const waterFarm = "TY9mGUA8q1V9R9kmfUERpcG62SZ42gYuHW"; -const lumiLpToken = "TUhZUbJaVicbQeNXHGBKxVsVuNL94usuoU"; - -async function Pool2(api) { - - const [ - waterLpTokenAmount, - lumiLpTokenAmount, - waterInLp, - lumiInLp, - waterLpTotalSupply, - lumiLpTotalSupply, - ] = await api.batchCall([ - { abi: 'erc20:balanceOf', target: waterLpToken, params: lumiFarm }, - { abi: 'erc20:balanceOf', target: lumiLpToken, params: waterFarm }, - { abi: 'erc20:balanceOf', target: WATER, params: waterLpToken }, - { abi: 'erc20:balanceOf', target: LUMI, params: lumiLpToken }, - { abi: 'erc20:totalSupply', target: waterLpToken, }, - { abi: 'erc20:totalSupply', target: lumiLpToken, }, - ]) - - const [ - { output: trxInWaterLp}, - { output: trxInLumiLp}, - ] = await Promise.all([ - sdk.api.eth.getBalance({ target: waterLpToken, chain: 'tron'}), - sdk.api.eth.getBalance({ target: lumiLpToken, chain: 'tron'}), - ]); - - api.add(WATER, (waterInLp * waterLpTokenAmount) / waterLpTotalSupply) - api.add(LUMI, (lumiInLp * lumiLpTokenAmount) / lumiLpTotalSupply) - api.add(nullAddress, (trxInWaterLp * waterLpTokenAmount) / waterLpTotalSupply) - api.add(nullAddress, (trxInLumiLp * lumiLpTokenAmount) / waterLpTotalSupply) -} - -module.exports = { - tron: { - staking: sumTokensExport({ - tokensAndOwners: [ - [WATER, stakingWaterContract], - [LUMI, stakingLumiContract], - ] - }), - pool2: Pool2, - tvl: (async) => ({}), - }, -}; diff --git a/projects/lunafi/index.js b/projects/lunafi/index.js deleted file mode 100644 index 46a1a5b2399..00000000000 --- a/projects/lunafi/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking'); -const { pool2 } = require('../helper/pool2'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - polygon: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.polygon.WBTC, '0x1311DCADf3330dD0AEB4d03177F9568880Febb34'], - [ADDRESSES.polygon.WETH_1, '0x2Bb91032F277BDc0DA7De271Ba03B3341B73b4c1'], - [ADDRESSES.polygon.USDC, '0x14e849B39CA7De7197763b6254EE57eDBE0F3375'], - ] - }), - pool2: pool2('0x4175acd3d7f128cf41d42826cce2185a5ade7c82', ['0x72CF5ee9ee918a529b25BBcB0372594008178535', '0xE3108CDCfb18E7B3e558b37bfD4473CBDE1Fd05c']), - staking: staking('0xfc604b6fD73a1bc60d31be111F798dd0D4137812', '0x77d97db5615dfe8a2d16b38eaa3f8f34524a0a74'), - } -}; \ No newline at end of file diff --git a/projects/lunggens-dex/index.js b/projects/lunggens-dex/index.js deleted file mode 100644 index f14eef15802..00000000000 --- a/projects/lunggens-dex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -// const { uniTvlExport } = require('../helper/unknownTokens') -// module.exports = uniTvlExport('lung', '0x78725F781C861938Ff11aCedcB0D69Da7Ae4581B') - -module.exports = { - lung: { tvl: () => ({}) }, - deadFrom: '2025-01-13', -} diff --git a/projects/lusd-chickenbonds/index.js b/projects/lusd-chickenbonds/index.js deleted file mode 100644 index 04871287801..00000000000 --- a/projects/lusd-chickenbonds/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const CHICKEN_BOND_MANAGER_CONTRACT = '0x57619FE9C539f890b19c61812226F9703ce37137'; -const LUSD_ADDRESS = ADDRESSES.ethereum.LUSD; - -async function tvl(api) { - const bucketAmounts = await api.call({ - target: CHICKEN_BOND_MANAGER_CONTRACT, - abi: 'function getTreasury() view returns (uint256 _pendingLUSD, uint256 _totalAcquiredLUSD, uint256 _permanentLUSD)', - }) - api.add(LUSD_ADDRESS, [bucketAmounts._pendingLUSD, bucketAmounts._totalAcquiredLUSD, bucketAmounts._permanentLUSD]) -} - -module.exports = { - methodology: 'counts the amount of LUSD tokens in the 3 buckets of the LUSD ChickenBonds protocol.', - ethereum: { - tvl, - }, -}; diff --git a/projects/luxor/api.js b/projects/luxor/api.js deleted file mode 100644 index decdbf5397e..00000000000 --- a/projects/luxor/api.js +++ /dev/null @@ -1,9 +0,0 @@ -const index = require('./index') - -module.exports = { - fantom: { - tvl: () => 0, - staking: index.fantom.staking, - }, - deadFrom: '2023-05-01' -} \ No newline at end of file diff --git a/projects/luxor/index.js b/projects/luxor/index.js deleted file mode 100644 index 4a73eb027c4..00000000000 --- a/projects/luxor/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasury = "0xDF2A28Cc2878422354A93fEb05B41Bd57d71DB24" -const LUX = "0x6671e20b83ba463f270c8c75dae57e3cc246cb2b" - -module.exports=ohmTvl( - treasury, - [ - [ADDRESSES.fantom.DAI, false], - [ADDRESSES.fantom.WFTM, false], - ["0x46729c2AeeabE7774a0E710867df80a6E19Ef851", true], - ["0x951BBB838e49F7081072895947735b0892cCcbCD", true] - ], - "fantom", - "0xf3F0BCFd430085e198466cdCA4Db8C2Af47f0802", - LUX, - (addr) => { - if (addr.toLowerCase() === ADDRESSES.fantom.DAI) { - return ADDRESSES.ethereum.DAI; - } - return `fantom:${addr}`; - } -) diff --git a/projects/luxs.fi/index.js b/projects/luxs.fi/index.js deleted file mode 100755 index a8ec7f176b5..00000000000 --- a/projects/luxs.fi/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const facades = { - polygon: "0x0708542D895C2559001Fa9e4Bc49C3343735e6e2", - arbitrum: "0xE75254f298a5145438595Aa9d6D4327fCD14418D", - bsc: "0xD187937762c6fd4d7a58C71fD810CbfE22E64a84", - optimism: "0x285cAee14514f30bB178FB56c985e43A47d68E75", -}; - -async function tvl(api) { - const vaults = await api.call({ - abi: "function getVaults() external view returns (address[] memory)", - target: facades[api.chain], - }); - - const balances = {}; - const tokens = await api.multiCall({ - abi: "address:token", - calls: vaults, - }); - - const totalBalance = await api.multiCall({ - abi: "function getVaultValueLocked(address _vault) external view returns (uint256)", - calls: vaults.map((address) => ({ - target: facades[api.chain], - params: [address], - })), - chain: api.chain, - }); - - tokens.forEach((t, i) => - sdk.util.sumSingleBalance(balances, t, totalBalance[i], api.chain) - ); - return balances; -} - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: tvl, - }, - optimism: { - tvl: tvl, - }, - polygon: { - tvl: tvl, - }, - bsc: { - tvl: tvl, - }, - methodology: "TVL is counted from the LuxsFi vaults contracts", -}; \ No newline at end of file diff --git a/projects/lybra-v2/index.js b/projects/lybra-v2/index.js deleted file mode 100644 index b4e098f44a7..00000000000 --- a/projects/lybra-v2/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -// VAULTS -const stETHvault = "0xa980d4c0C2E48d305b582AA439a3575e3de06f0E"; -const wstETHvault = "0x5e28B5858DA2C6fb4E449D69EEb5B82e271c45Ce"; -const wbETHvault = "0xB72dA4A9866B0993b9a7d842E5060716F74BF262"; -const rETHvault = "0x090B2787D6798000710a8e821EC6111d254bb958" - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokensAndOwners2: [[ADDRESSES.ethereum.STETH, ADDRESSES.ethereum.WSTETH, ADDRESSES.bsc.wBETH, ADDRESSES.ethereum.RETH], [stETHvault, wstETHvault, wbETHvault, rETHvault]] }), - } -}; diff --git a/projects/lybra/index.js b/projects/lybra/index.js deleted file mode 100644 index bee2811b23f..00000000000 --- a/projects/lybra/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -// Lybra holds total stake collateral (deposited ETH) -const LYBRA_CONTRACT = "0x97de57eC338AB5d51557DA3434828C5DbFaDA371"; - -module.exports = { - start: '2023-04-23', - ethereum: { - tvl: sumTokensExport({ owner: LYBRA_CONTRACT, tokens: [ADDRESSES.ethereum.STETH]}), - } -}; diff --git a/projects/lydia/index.js b/projects/lydia/index.js deleted file mode 100644 index 572dc293017..00000000000 --- a/projects/lydia/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - avax:{ - tvl: getUniTVL({ misrepresentedTokens: true, factory: '0xe0C1bb6DF4851feEEdc3E14Bd509FEAF428f7655', blacklistedTokens: ['0xc1a49c0b9c10f35850bd8e15eaef0346be63e002']}) - }, -} diff --git a/projects/lympo/index.js b/projects/lympo/index.js deleted file mode 100644 index 91a560aa09f..00000000000 --- a/projects/lympo/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const { sumTokens2 } = require('../helper/unwrapLPs') - -const poolsUrl = 'https://api.lympo.io/pools/poolsV2/pools.json'; -const sportTokenAddress = "0x503836c8c3A453c57f58CC99B070F2E78Ec14fC0" - -async function staking(timestamp, _, { polygon: block }) { - const pools = await getConfig('lympo', poolsUrl) - const owners = pools.map(i => i.address) - return sumTokens2({ chain: 'polygon', block, owners, tokens: [sportTokenAddress]}) -} - -module.exports = { - polygon: { - tvl: () => ({}), - staking, - }, - methodology: "TVL is calculated as value of SPORT tokens in Lympo pools staking", -} \ No newline at end of file diff --git a/projects/lynex-v1/index.js b/projects/lynex-v1/index.js deleted file mode 100644 index 57a93b07200..00000000000 --- a/projects/lynex-v1/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); -const { mergeExports } = require("../helper/utils"); - -const getExport = factory => uniTvlExport("linea", factory, { hasStablePools: true, useDefaultCoreAssets: true, }) - -module.exports = mergeExports(['0x6ed7b91c8133e85921f8028b51a8248488b3336c', '0xbc7695fd00e3b32d08124b7a4287493aee99f9ee'].map(getExport)) - diff --git a/projects/lynex/index.js b/projects/lynex/index.js deleted file mode 100644 index 55800a18ef9..00000000000 --- a/projects/lynex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const { staking } = require("../helper/staking"); - -module.exports = uniV3Export({ - linea: { - factory: "0x622b2c98123D303ae067DB4925CD6282B3A08D0F", - fromBlock: 143660, - isAlgebra: true, - }, -}) - -module.exports.linea.staking = staking("0x8D95f56b0Bac46e8ac1d3A3F12FB1E5BC39b4c0c", "0x1a51b19CE03dbE0Cb44C1528E34a7EDD7771E9Af") diff --git a/projects/lynx/index.js b/projects/lynx/index.js deleted file mode 100644 index 4be028482ca..00000000000 --- a/projects/lynx/index.js +++ /dev/null @@ -1,343 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const config = { - // Engine Chips - sonic: { - tokenAndOwnerPair: [ - [ - // wS Token - ADDRESSES.sonic.wS, - // EngineChip (owner) - "0x0e7a7a477ab4dDFB2d7a500D33c38A19372a70Fc" - ], - [ - // AG Token - "0x005851f943ee2957b1748957f26319e4f9edebc1", - // EngineChip (owner) - "0x4461913eCa88EDE2d76B576C8fA5D08535bb714A" - ], - ] - }, - fantom: { - tokenAndOwnerPair: [ - [ - // WFTM Token - ADDRESSES.fantom.WFTM, - // EngineChip (owner) - "0x614aA983f54409D475aeC5D18120FECFD6320eF4" - ], - // [ - // // FTM Token - // ADDRESSES.GAS_TOKEN_2, - // // EngineChip (owner) - // "0x614aA983f54409D475aeC5D18120FECFD6320eF4" - // ], - [ - // USDC Token - "0x2F733095B80A04b38b0D10cC884524a3d09b836a", - // EngineChip (owner) - "0x194609ea1C1D77e66eaB28C48CE266A48f3bC30a", - ], - [ - // SPIRIT Token - "0x5cc61a78f164885776aa610fb0fe1257df78e59b", - // EngineChip (owner) - "0x1401C2C092df468862e23502B88A8795e2e9aecf", - ], - [ - // FSONIC Token - "0x05e31a691405d06708a355c029599c12d5da8b28", - // EngineChip (owner) - "0xCCC0d9d276176FED7E6918dCf99F23DCAaCFcAc5" - ], - [ - // BRUSH Token - "0x85dec8c4b2680793661bca91a8f129607571863d", - // EngineChip (owner) - "0xCBd1A63A84af4BAA9541331420fF98d8Fca3ba1C", - ], - [ - // POLTER Token - "0x5c725631FD299703D0A74C23F89a55c6B9A0C52F", - // EngineChip (owner) - "0x089cD8AC58D9a1488b3cDfDfeb20963e7BB33732", - ], - [ - // fBUX Token - "0x1e2Ea3f3209D66647f959CF00627107e079B870d", - // EngineChip (owner) - "0x86fAcB048FEe156A16104531Bd36CDfF118d8107", - ], - [ - // fTAILS Token - "0x5cF90b977C86415a53CE3B7bE13b26f6abdDfee2", - // EngineChip (owner) - "0x2c241eeFc4b61ed475d7f1DeD112df99E5De0E8F", - ], - [ - // sGOAT Token - "0x43f9a13675e352154f745d6402e853fecc388aa5", - // EngineChip (owner) - "0xa8ddbf9B7E307100ba689C02CC1360112d660206", - ], - [ - // EQUAL Token - "0x3fd3a0c85b70754efc07ac9ac0cbbdce664865a6", - // EngineChip (owner) - "0x59698CA79B8568F25294d6Eab6281667712079eE", - ], - ], - }, - boba: { - tokenAndOwnerPair: [ - [ - // BOBA Token - ADDRESSES.boba.BOBA, - // EngineChip (owner) - "0x9beABD8699E2306c5632C80E663dE9953e104C3f" - ], - [ - // USDC Token - ADDRESSES.boba.USDC, - // EngineChip (owner) - "0xcDD339d704Fb8f35A3a2f7d9B064238D33DC7550" - ], - ] - }, - - // OFT Chips - fuse: { - tokenAndOwnerPair: [ - [ - // WFUSE Token - ADDRESSES.fuse.WFUSE, - // OFTChipAdapter (owner) - "0x962FD1B229c8c775bC2E37A8a90dac4f3C0105B7", - ], - [ - // MST Token - "0x2363Df84fDb7D4ee9d4E1A15c763BB6b7177eAEe", - // OFTChipAdapter (owner) - "0x028815b56433a4AAe10087290d1Ed9Ef7437068F", - ], - [ - // sFUSE Token - ADDRESSES.fuse.SFUSE, - // OFTChipAdapter (owner) - "0x707f3d554B47E17F1FDfb408FE091B39D51929CF", - ], - [ - // VOLT Token - "0xC5E782E2A4E2cFCb7eD454CF5a7b6aa2bB424B90", - // OFTChipAdapter (owner) - "0x094DE4d315198Df981D3a20ceFc3381B2182a572", - ], - ], - }, - linea: { - tokenAndOwnerPair: [ - [ - // veLVC Token - "0xcc22F6AA610D1b2a0e89EF228079cB3e1831b1D1", - // OFTChipAdapter (owner) - "0xc5e782e2a4e2cfcb7ed454cf5a7b6aa2bb424b90", - ], - [ - // LVC Token - "0xcc22F6AA610D1b2a0e89EF228079cB3e1831b1D1", - // OFTChipAdapter (owner) - "0x55f2f3fA843C1755e17eb5F32D29a35c99a3aF09", - ], - ], - }, - arbitrum: { - tokenAndOwnerPair: [ - [ - // stEUR Token - ADDRESSES.arbitrum.ARB, - // OFTChipAdapter (owner) - "0x094DE4d315198Df981D3a20ceFc3381B2182a572", - ], - [ - // stEUR Token - ADDRESSES.celo.STEUR, - // OFTChipAdapter (owner) - "0xc5e782e2a4e2cfcb7ed454cf5a7b6aa2bb424b90", - ], - [ - // TST Token - "0xf5a27e55c748bcddbfea5477cb9ae924f0f7fd2e", - // OFTChipAdapter (owner) - "0xd22c72ab0f4967edb876d84773bff0b60a92e51a", - ], - [ - // EUROs Token - "0x643b34980e635719c15a2d4ce69571a258f940e9", - // OFTChipAdapter (owner) - "0x3552fE61af3F6d3235Dd1CB75402d4281d1FbaC6", - ], - [ - // GRAI Token - "0x894134a25a5faC1c2C26F1d8fBf05111a3CB9487", - // OFTChipAdapter (owner) - "0xBe1fa4177fBf43683434CecD5563DA6Ea00FD474", - ], - [ - // SLIZ Token - "0x463913D3a3D3D291667D53B8325c598Eb88D3B0e", - // OFTChipAdapter (owner) - "0x1E1F546dF45A82F2a29E709C85331E3974dC26b0", - ], - [ - // SCALES Token - "0xe6af844d5740b6b297b6dd7fb2ce299ee9e3d16f", - // OFTChipAdapter (owner) - "0x1E71Fad2d453dAb287Dad8CD003CA24A9d9194EA", - ], - [ - // USDFI Token - "0x249c48e22e95514ca975de31f473f30c2f3c0916", - // OFTChipAdapter (owner) - "0x24d6318B87ABB45B62D981693FCF25A5956F41e2", - ], - [ - // STABLE Token - "0x666966ef3925b1c92fa355fda9722899f3e73451", - // OFTChipAdapter (owner) - "0x2E2a9b820BDDfD54487f8d5A0Dfd5940D5Dac6A9", - ], - [ - // uniBTC Token - "0x6B2a01A5f79dEb4c2f3c0eDa7b01DF456FbD726a", - // OFTChipAdapter (owner) - "0xCf3562bbe462A249a4b2B2a421dF00b93E081066", - ], - ], - }, - optimism: { - tokenAndOwnerPair: [ - [ - // SONNE Token - "0x1db2466d9f5e10d7090e7152b68d62703a2245f0", - // OFTChipAdapter (owner) - "0xc5e782e2a4e2cfcb7ed454cf5a7b6aa2bb424b90", - ], - ], - }, - mantle: { - tokenAndOwnerPair: [ - [ - // aUSD Token - "0xD2B4C9B0d70e3Da1fBDD98f469bD02E77E12FC79", - // OFTChipAdapter (owner) - "0xC5E782E2A4E2cFCb7eD454CF5a7b6aa2bB424B90", - ], - ], - }, - polygon: { - tokenAndOwnerPair: [ - [ - // WMATIC Token - ADDRESSES.polygon.WMATIC_2, - // OFTChipAdapter (owner) - "0x028815b56433a4aae10087290d1ed9ef7437068f", - ], - [ - // MIMATIC Token - "0xa3fa99a148fa48d14ed51d610c367c61876997f1", - // OFTChipAdapter (owner) - "0x7279d1cFf1510E503B6Be64fBBAd64088034504C", - ], - ], - }, - bsc: { - tokenAndOwnerPair: [ - [ - // wBNB Token - ADDRESSES.bsc.WBNB, - // OFTChipAdapter (owner) - "0x67ac4355787fe8313D6cAfd23aEa4463704fBaeC", - ], - [ - // USDT Token - ADDRESSES.bsc.USDT, - // OFTChipAdapter (owner) - "0x7eDb95ba0294EfD054221141FcC8f12F2Ada1129", - ], - [ - // lisUSD Token - "0x0782b6d8c4551B9760e74c0545a9bCD90bdc41E5", - // OFTChipAdapter (owner) - "0x3b7ed1cdf0fc64d95c0d0428b9cc99b6a9a5cb94", - ], - ], - }, - mode: { - tokenAndOwnerPair: [ - [ - // MODE Token - "0xDfc7C877a950e49D2610114102175A06C2e3167a", - // OFTChipAdapter (owner) - "0x3b7ED1cDF0Fc64d95c0D0428b9Cc99b6A9a5CB94", - ], - [ - // ION Token - "0x18470019bF0E94611f15852F7e93cf5D65BC34CA", - // OFTChipAdapter (owner) - "0xD22c72aB0f4967edB876d84773BfF0b60A92e51a", - ], - ], - }, - celo: { - tokenAndOwnerPair: [ - [ - // CELO Token - ADDRESSES.celo.CELO, - // OFTChipAdapter (owner) - "0x7279d1cFf1510E503B6Be64fBBAd64088034504C", - ], - [ - // USDT Token - ADDRESSES.celo.USDT_1, - // OFTChipAdapter (owner) - "0xA36cB6e644cCE5fB98bDa9aa538927B2c934D8fa", - ], - ] - }, - zircuit: { - tokenAndOwnerPair: [ - [ - // ZRC Token - "0xfd418e42783382e86ae91e445406600ba144d162", - // OFTChipAdapter (owner) - "0xa624818151078Ccc936BF056DEf51114808BFE16", - ], - ] - }, - ethereum: { - tokenAndOwnerPair: [ - [ - // WEETh Token - ADDRESSES.ethereum.WEETH, - // OFTChipAdapter (owner) - "0x66Aaf6Da70dA10aC8dC024E668edcade1C8F5b44", - ], - [ - // TUNA Token - "0xadd353fb2e2c563383ff3272a500f3e7134dafe4", - // OFTChipAdapter (owner) - "0x3b7ED1cDF0Fc64d95c0D0428b9Cc99b6A9a5CB94", - ], - ], - } -}; - -Object.keys(config).forEach((chain) => { - const { tokenAndOwnerPair } = config[chain]; - module.exports[chain] = { - tvl: sumTokensExport({ - tokensAndOwners: tokenAndOwnerPair, - }), - }; -}); diff --git a/projects/lyra-v2/index.js b/projects/lyra-v2/index.js deleted file mode 100644 index 1c119dda7ac..00000000000 --- a/projects/lyra-v2/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -const chains = ['ethereum', 'base', 'arbitrum', 'optimism', 'mode', 'blast'] - -async function getOldToA(api) { - const data = await getConfig('lyra-v2/old-contracts', 'https://raw.githubusercontent.com/0xdomrom/socket-plugs/main/deployments/superbridge/prod_lyra-old_addresses.json') - const vaults = Object.values(data[api.chainId+'']?? {}).map(i => i.Vault) - const tokens = await api.multiCall({ abi: 'address:token__', calls: vaults}) - return vaults.map((vault, i) => [tokens[i], vault]) -} -async function getToA(api) { - const data = await getConfig('lyra-v2/contracts', 'https://raw.githubusercontent.com/0xdomrom/socket-plugs/main/deployments/superbridge/prod_lyra_addresses.json') - const vaults = Object.values(data[api.chainId+'']?? {}).map(i => i.Vault) - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults}) - return vaults.map((vault, i) => [tokens[i], vault]) -} - -chains.forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const oldToA = await getOldToA(api) - const toa = await getToA(api) - return sumTokens2({ tokensAndOwners: oldToA.concat(toa), api }) - } - } -}) diff --git a/projects/lyra/index.js b/projects/lyra/index.js deleted file mode 100644 index c84247a7639..00000000000 --- a/projects/lyra/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -const v1_0_Pools = ['0x7Af4e1cE484f40D927b9C90fB6905Df4376fc3F6', '0xd7d974E81382D05E8D9fc6d0d17d0d852e9806dd'] -const v1_1_LiquidityPool = [ - '0x2935CD347B79C319A6464fe3b1087170f142418C', - '0x69B4B35504a8c1d6179fef7AdDCDB37A8c663BC9', - '0x788843DE0Be1598155bFFaAB7Cfa2eCBd542E7f1' -] -const v1_1_ShortCollateral = [ - '0xE722F9aee66F649FBfc8CB0d4F906cb55803553c', - '0x585a72ccecde68dDFE5327B23134723a305D70F3', - '0x0A68E15f8E289b9f1Ad1BCAD524FeA30C6125c2D' -] - -const v1_2_LiquidityPool = [ - '0x5Db73886c4730dBF3C562ebf8044E19E8C93843e', - '0x3C73CD65D708A5C951f0Cc19a4D0Bb6559ae20c5', - '0xA33C1963d74d203DF6bFfDfDa3bFf39a1D76e1D0' - ] - -const v1_2_ShortCollateral = [ - '0x3E86B53e1D7DA7eDbA225c3A218d0b5a7544fDfD', - '0x26cf967e466d9fd60af7d1b78a01c43e75e03b32', - '0xa5ce396616c7D14F61B5B9bbA3A57388Db885b2E' - ] - -const v1_3_arb_ShortCollateral = [ - '0xef4a92fcde48c84ef2b5c4a141a4cd1988fc73a9', //WETH - '0x5a4842c0c1f81ebbae7bb3ec07edf7ae55aac631', //WBTC - ] -const v1_3_arb_LiquidityPool = [ - '0xb619913921356904bf62aba7271e694fd95aa10d', //WETH - '0xec6f3ef9481e7b8484290edbae2cedcdb0ce790e', //WBTC - ] - -const v2_op_ShortCollateral = [ - '0x8512028339bb67aee47c06a298031d91bb7d15ba', //WETH - '0xa95c6d6a2765627a854960e9ee96f607b857385a', //WBTC - '0x292a5929bd150d28eda3c17d9b7c754968b2899d', //OP - '0xa49f2ea43b445f9a2467b7279cfa1f6a0c2e3f4f', //ARB - ] -const v2_op_LiquidityPool = [ - '0xb8e90fd247700de65450aacd4a47b2948dc59fc1', //WETH - '0xacacff03241256304e841e89c13319eae09f14b3', //WBTC - '0x12a4fd54aa321eb16b45310ccb177bd87c6ae447', //OP - '0xdd0d125475453767e65f1a4dd30b62699fdcc9f5', //ARB - ] - -const op_pools = [...new Set([...v1_0_Pools, ...v1_1_LiquidityPool, ...v1_1_ShortCollateral, ...v1_2_LiquidityPool, ...v1_2_ShortCollateral, ...v2_op_ShortCollateral, ...v2_op_LiquidityPool].map(t=>t.toLowerCase()))] - -const arb_pools = [...new Set([...v1_3_arb_ShortCollateral, ...v1_3_arb_LiquidityPool].map(t=>t.toLowerCase()))] - -const op_tokens = [ADDRESSES.optimism.sUSD, ADDRESSES.optimism.sETH, - '0xc5db22719a06418028a40a9b5e9a7c02959d0d08', '0x298b9b95708152ff6968aafd889c6586e9169f1d', - ADDRESSES.optimism.OP, ADDRESSES.optimism.WBTC, - ADDRESSES.optimism.WETH, ADDRESSES.optimism.USDC] - -const arb_tokens = [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.WBTC] - -const L2toL1Synths = { - [ADDRESSES.optimism.sETH]: '0x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - [ADDRESSES.optimism.sUSD]: ADDRESSES.ethereum.sUSD, - '0x298b9b95708152ff6968aafd889c6586e9169f1d': '0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6', - '0xc5db22719a06418028a40a9b5e9a7c02959d0d08': '0xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6' -} - -async function tvlOptimism(api){ - return api.sumTokens({ owners: op_pools, tokens: op_tokens }) -} - -async function tvlArbitrum(api){ - return api.sumTokens({ owners: arb_pools, tokens: arb_tokens }) -} - -module.exports = { - methodology: 'TVL counts the option market locked synth value, along with USDC in safety module.', - optimism:{ - tvl:tvlOptimism - }, - arbitrum:{ - tvl:tvlArbitrum - }, - ethereum:{ - tvl: staking("0x54d59c4596c7ea66fd62188ba1e16db39e6f5472", ADDRESSES.ethereum.USDC), - staking: staking("0xcb9f85730f57732fc899fb158164b9ed60c77d49", "0x01ba67aac7f75f647d94220cc98fb30fcc5105bf") - }, - hallmarks:[ - [1635218174, "Lyra Token"], - [1635822974, "Token Program Start"], - [1655341200, "Lyra V1.1 End"], - [1656291600, "Lyra Avalon Start"], - [1659560056, "OP Rewards Distribution Start"], - [1675080000, "Launch on Arbitrum"] - ] -} diff --git a/projects/lyve/index.js b/projects/lyve/index.js deleted file mode 100644 index ce53e42837b..00000000000 --- a/projects/lyve/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const ADMIN_ADDRESSES = { - linea: "0xcFcd25b5E200d8829c383d293B456a608777a1D8", - ethereum: "0x624ceD7034DFF45D439cDe1f443448A49F067715" -}; - -async function tvl(api) { - const chainAddress = ADMIN_ADDRESSES[api.chain]; - const collAddresses = await api.call({ abi: "address[]:getValidCollateral", target: chainAddress, }); - const pool = await api.call({ abi: 'address:activePool', target: chainAddress }) - return sumTokens2({ api, tokens: collAddresses, owner: pool }) -} - -module.exports = { - methodology: - "Adds up the total value locked as collateral on the Lyve platform", - start: '2023-11-08', -}; - -Object.keys(ADMIN_ADDRESSES).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/m0/index.js b/projects/m0/index.js deleted file mode 100644 index 6e0ae19cc78..00000000000 --- a/projects/m0/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - -const minterGateway = '0xf7f9638cb444d65e5a40bf5ff98ebe4ff319f04e' -const eventAbi = "event MinterActivated(address indexed minter, address indexed caller)" -const abi = 'function collateralOf(address minter_) view returns (uint240)' - -const tvl = async (api) => { - const logs = await getLogs2({ api, target: minterGateway, eventAbi, fromBlock: 19818447, extraKey: 'MinterActivated' }) - const minters = [...new Set(logs.map(log => log.minter))]; - const collateralOf = await api.multiCall({ target: minterGateway, calls: minters, abi }) - api.add(ADDRESSES.ethereum.USDC, collateralOf) -} - -module.exports = { - misrepresentedTokens: true, // the project doesnt actually hold USDC - methodology: "TVL corresponds to the value minted by an institution by depositing short-term T-bills", - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/m11c/index.js b/projects/m11c/index.js deleted file mode 100644 index a0ac1f993d4..00000000000 --- a/projects/m11c/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by M11C.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x71807287926c5195D92D2872e73FC212C150C112', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/macaron-xyz-stable/index.js b/projects/macaron-xyz-stable/index.js deleted file mode 100644 index 0624a26f029..00000000000 --- a/projects/macaron-xyz-stable/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const { factory, fromBlock, } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - topics: ['0x8e74ffd51819fef95a58370a621a4ba82cae11062f357bf636c4cca361812ddf'], - fromBlock, - eventAbi: 'event NewStableSwapPair(address indexed pool, address indexed token0, address indexed token1, uint256 A, uint256 fee, uint256 adminFee)', - onlyArgs: true, - }) - return sumTokens2({ api, ownerTokens: logs.map(({ pool, token0, token1 }) => ([[token0, token1], pool])) }) -} - -const config = { - btr: { factory: '0x584E53b4D07b077fA6cc4302B0b457c04bbCC8Fa', fromBlock: 1736941 }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/macaron-xyz/index.js b/projects/macaron-xyz/index.js deleted file mode 100644 index 7be61a43864..00000000000 --- a/projects/macaron-xyz/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const { mergeExports } = require('../helper/utils') - -module.exports = mergeExports([ - uniTvlExport('btr', '0x05daB9D11A0e14E68862cd08A73A7362Bb93a331'), - uniTvlExport('btr', '0x1037E9078df7ab09B9AF78B15D5E7aaD7C1AfDd0'), -]) \ No newline at end of file diff --git a/projects/macaron/abi.json b/projects/macaron/abi.json deleted file mode 100644 index a8c9939e57e..00000000000 --- a/projects/macaron/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accMacaronPerShare, bool isCLP, address cakeStrategy, address syrupToken)", - "poolLength": "uint256:poolLength", - "stakingToken": "address:stakingToken", - "lpSupply": "uint256:lpSupply", - "token": "address:token", - "balanceOf": "uint256:balanceOf" -} \ No newline at end of file diff --git a/projects/macaron/config.js b/projects/macaron/config.js deleted file mode 100644 index af0703676f7..00000000000 --- a/projects/macaron/config.js +++ /dev/null @@ -1,250 +0,0 @@ -const vaults_bsc = [ - { - "stakingToken": { - "symbol": "CAKE", - "address": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - }, - "contractAddress": "0xCd59d44E94Dec10Bb666f50f98cD0B1593dC3a3A", - "masterchef": "0x73feaa1eE314F8c655E354234017bE2193C9E24E", - }, - { - "stakingToken": { - "symbol": "BAKE", - "address": "0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5", - }, - "contractAddress": "0xBB7ac3eB02c6d012cc8e2d916678De8843Eb8A56", - "masterchef": "0x20eC291bB8459b6145317E7126532CE7EcE5056f", - }, - { - "stakingToken": { - "symbol": "BANANA", - "address": "0x603c7f932ed1fc6575303d8fb018fdcbb0f39a95", - }, - "contractAddress": "0xd474366F6c80230507481495F3C1490e62E3093F", - "masterchef": "0x5c8d727b265dbafaba67e050f2f739caeeb4a6f9", - }, - { - "stakingToken": { - "symbol": "BAKE", - "address": "0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5", - }, - "contractAddress": "0x6dAc44A858Cb51e0d4d663A6589D2535A746607A", - "masterchef": "0x6a8DbBfbB5a57d07D14E63E757FB80B4a7494f81", - } -] - -const choco_pools_bsc = [ - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0xFcDE390bF7a8B8614EC11fa8bde7565b3E64fe0b", - }, - { - "stakingToken": { - "symbol": "CAKE", - "address": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - }, - "contractAddress": "0xCded81aa5Ab3A433CadF77Fd5aC8B6fD973906e1", - "isCLP": true, - "syrupAddresses": "0x009cF7bC57584b7998236eff51b98A168DceA9B0", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0xF69bdcDB577F98753d4890Cc5aCfF3BE00177584", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0x7DB34B681c759918079C67EeF08868225F34fbcB", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0x13ED683DDf483d1f0bd2AE02b01D4d1D451D6c5b", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0x0f819C8E6A7c0F0906CBc84b9b1e6642f9634E61", - }, - { - "stakingToken": { - "symbol": "TAPE", - "address": "0xf63400ee0420ce5b1ebdee0c942d7de1c734a41f", - }, - "contractAddress": "0x903A20CDbAC174250eAcc7437720929f0dE97B99", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0x82cF07a989835b68260989F13Bc853f8fe48ad04", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0xc8De98F603af53a5D52AF6AA153d9e15b0002B2c", - }, - { - "stakingToken": { - "symbol": "SMG", - "address": "0x6bfd576220e8444ca4cc5f89efbd7f02a4c94c16", - }, - "contractAddress": "0xf3D514263239672455306D188DD5f045E61deD03", - }, - { - "stakingToken": { - "symbol": "SMG", - "address": "0x6bfd576220e8444ca4cc5f89efbd7f02a4c94c16", - }, - "contractAddress": "0xC85C50988AEC8d260853443B345CAE63B7432b7A", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0xF60EDbF7D95E79878f4d448F0CA5622479eB8790", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0x99d3334CC9dF44Fb2788C2161FB296fb6Cf14a57", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0xD80bdF70b17bA4fDd0383171623D782D00c8be2E", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0x28D0e8f18FA73824C91ca77e28727d79b815aEF1", - }, - { - "stakingToken": { - "symbol": "TAPE", - "address": "0xf63400ee0420ce5b1ebdee0c942d7de1c734a41f", - }, - "contractAddress": "0xa71aFD72A7ed03d2ad9D08A20cdadf17b067f33a", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xacb2d47827c9813ae26de80965845d80935afd0b", - }, - "contractAddress": "0x765c1a0b22130d0e8a61dbb125c1eec5710383f1", - }, - { - "stakingToken": { - "symbol": "BANANA", - "address": "0x603c7f932ed1fc6575303d8fb018fdcbb0f39a95", - }, - "contractAddress": "0x4f0a992B465C1D8482b4E2a0861B6cAEE8B3171f", - }, - { - "stakingToken": { - "symbol": "BSW", - "address": "0x965F527D9159dCe6288a2219DB51fc6Eef120dD1", - }, - "contractAddress": "0x2a1Bf8e04633e397207d63F234d281fEf781B6F5", - }, - { - "stakingToken": { - "symbol": "CAKE", - "address": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - }, - "contractAddress": "0x7C454456fc9E86EA1cF1e524FF8B8EbA613189E5", - } -] - -const choco_pools_polygon = [ - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xba25b552c8a098afdf276324c32c71fe28e0ad40", - }, - "contractAddress": "0xC200cE4853d97e5f11320Bb8ee17F4D895f5e7BB", - }, - { - "stakingToken": { - "symbol": "QUICK", - "address": "0x831753dd7087cac61ab5644b308642cc1c33dc13", - }, - "contractAddress": "0xDeC7950840a32010410dcfFDC735911151604Ba5", - "isCLP": true, - "syrupAddresses": "0xf28164A485B0B2C90639E47b0f377b4a438a16B1", - }, - { - "stakingToken": { - "symbol": "QUICK", - "address": "0x831753dd7087cac61ab5644b308642cc1c33dc13", - }, - "contractAddress": "0x4b68bA327Cad4d8C4d0Bc783d686d08CFAa5C5D3", - "isCLP": true, - "syrupAddresses": "0xf28164A485B0B2C90639E47b0f377b4a438a16B1", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xba25b552c8a098afdf276324c32c71fe28e0ad40", - }, - "contractAddress": "0xdb5640313fc4c958D3Fb2CF546d57dF142882acf", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xba25b552c8a098afdf276324c32c71fe28e0ad40", - }, - "contractAddress": "0x337CC5daBaf1f874ACec0031d3d682CAF6DD2FC8", - }, - { - "stakingToken": { - "symbol": "MCRN", - "address": "0xba25b552c8a098afdf276324c32c71fe28e0ad40", - }, - "contractAddress": "0xA7661a7aeAF507a7782C230a45a002519cFC158C", - } -] -module.exports = { - bsc: { - masterchef: '0xFcDE390bF7a8B8614EC11fa8bde7565b3E64fe0b', - token: '0xacb2d47827c9813ae26de80965845d80935afd0b'.toLowerCase(), - chocochef: 'https://api.macaronswap.finance/chocofalls?chainId=56', - pools: choco_pools_bsc, - vaults_json: vaults_bsc, - LPs: [ - '0xe8D5d81dac092Ae61d097f84EFE230759BF2e522'.toLowerCase(), - '0xc8f900cd8052862a8a5abf9278ad088611b2bd04'.toLowerCase(), - ], - }, - polygon: { - masterchef: '0xC200cE4853d97e5f11320Bb8ee17F4D895f5e7BB', - token: '0xba25b552c8a098afdf276324c32c71fe28e0ad40'.toLowerCase(), - pools: choco_pools_polygon, - LPs: [ - '0xfc53defcF4e21B868DaCEAA6350D507493F57110'.toLowerCase(), - '0xde84c8f0562eB56A5fc8f07819cEF1FAf9Df3EBc'.toLowerCase(), - ], - } -} diff --git a/projects/macaron/index.js b/projects/macaron/index.js deleted file mode 100644 index 58c43124446..00000000000 --- a/projects/macaron/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const abi = require("./abi.json"); -const config = require("./config"); -const { sumTokensExport, sumTokens2, } = require("../helper/unwrapLPs"); - -function setChainTVL(chain) { - const { masterchef, pools, vaults_json, LPs, token, } = config[chain] - const stakingOwners = [masterchef] - const pool2Owners = [masterchef] - if (vaults_json) { - vaults_json.forEach(pool => { - const symbol = pool.stakingToken?.symbol?.toLowerCase() - const addr = pool.stakingToken.address.toLowerCase() - if (symbol === 'mcrn') - stakingOwners.push(addr) - else if (symbol.includes('mcrn') && symbol.endsWith('lp')) { - LPs.push(addr) - pool2Owners.push(pool.contractAddress.toLowerCase()) - } - }) - } - - const blacklistedTokens = [...LPs, token] - async function tvl(api) { - const tokensAndOwners = [] - - const masterchefPools = await api.fetchList({ target: masterchef, lengthAbi: abi.poolLength, itemAbi: abi.poolInfo }) - - const toaSyrup = [] - const syrupMapping = {} - - // handle masterchef - masterchefPools.forEach(pool => { - const addr = pool.lpToken.toLowerCase() - if (pool.isCLP) { - const syrup = pool.syrupToken.toLowerCase() - toaSyrup.push([syrup, masterchef]) - syrupMapping[syrup] = addr - return; - } - tokensAndOwners.push([addr, masterchef]) - }) - - // handle chocochef and boost pools - if (vaults_json) - pools.push(...vaults_json) - - pools.forEach(pool => { - const masterchef = pool.contractAddress - const addr = pool.stakingToken.address - tokensAndOwners.push([addr, masterchef]) - }) - - - const balanceCalls = toaSyrup.map(([token, address]) => ({ target: token, params: [address] })) - const syrupBalances = await api.multiCall({ abi: 'erc20:balanceOf', calls: balanceCalls, }) - - syrupBalances.forEach((bal, i) => { - api.add(syrupMapping[toaSyrup[i][0]], bal) - }) - - return sumTokens2({ api, tokensAndOwners, blacklistedTokens, resolveLP: true }) - } - - module.exports[chain] = { - tvl, - pool2: sumTokensExport({ tokens: LPs, owners: pool2Owners, resolveLP: true }), - staking: sumTokensExport({ token, owners: stakingOwners, }), - } -} - -Object.keys(config).forEach(setChainTVL) \ No newline at end of file diff --git a/projects/machfi/index.js b/projects/machfi/index.js deleted file mode 100644 index 295f7d84d76..00000000000 --- a/projects/machfi/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - sonic: compoundExports2({comptroller: '0x646F91AbD5Ab94B76d1F9C5D9490A2f6DDf25730', cether: '0x9F5d9f2FDDA7494aA58c90165cF8E6B070Fe92e6'}), -} diff --git a/projects/machinex-cl/index.js b/projects/machinex-cl/index.js deleted file mode 100644 index 93b5039e9f4..00000000000 --- a/projects/machinex-cl/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getConfig } = require('../helper/cache') - -module.exports = { - peaq: { - tvl: async (api) => { - const { pairs } = await getConfig('machinex-cl-peaq', 'https://machinex-api-production.up.railway.app/data') - console.log(pairs.length, pairs.filter(i => !i.hasOwnProperty('stable')).length) - const ownerTokens = pairs.filter(i => !i.hasOwnProperty('stable')).map(i => [[i.token0, i.token1], i.id]) - return api.sumTokens({ ownerTokens }) - } - } -} \ No newline at end of file diff --git a/projects/machinex-legacy/index.js b/projects/machinex-legacy/index.js deleted file mode 100644 index 3fa756be0ca..00000000000 --- a/projects/machinex-legacy/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - peaq: { - tvl: getUniTVL({ - factory: '0xA3f356f0403b4f10345cD95E0C80483FDdD63Ebd', - useDefaultCoreAssets: true, - hasStablePools: true - }), - }, -} \ No newline at end of file diff --git a/projects/madmex/index.js b/projects/madmex/index.js deleted file mode 100644 index e756c8b6bc7..00000000000 --- a/projects/madmex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - polygon: { - tvl: gmxExports({ vault: '0xE990519F19DCc6c1589A544C331c4Ec046593e7A', }) - }, -} \ No newline at end of file diff --git a/projects/maduck/index.js b/projects/maduck/index.js deleted file mode 100644 index ffb12036c14..00000000000 --- a/projects/maduck/index.js +++ /dev/null @@ -1,4 +0,0 @@ - -const { masterchefExports } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ chain: 'bsc', masterchef: '0x944dFb7f7caB8bbA2F74882784742C39b8495F5e', nativeToken: '0xb976d9684412f75f7aee24e56d846fd404b1b329', useDefaultCoreAssets: true, }) \ No newline at end of file diff --git a/projects/maffin/index.js b/projects/maffin/index.js deleted file mode 100644 index adab6c26291..00000000000 --- a/projects/maffin/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const MAFFIN_HUB = "0x6690384822afF0B65fE0C21a809F187F5c3fcdd8"; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: MAFFIN_HUB, - topic: 'PoolCreated(address,address,bytes32)', - eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, bytes32 indexed poolId)', - onlyArgs: true, - fromBlock: 15459725, - }) - return api.sumTokens({ owner: MAFFIN_HUB, tokens: logs.map(log => log.token0).concat(logs.map(log => log.token1)), }) -} -module.exports = { - methodology: `Counts the tokens balances of the MaffinHub contract`, - ethereum: { - tvl, - }, -}; diff --git a/projects/mage/index.js b/projects/mage/index.js deleted file mode 100644 index 8a065cc6822..00000000000 --- a/projects/mage/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { methodology, compoundExports2 } = require("../helper/compound"); -const sdk = require('@defillama/sdk'); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([{ - merlin: compoundExports2({ comptroller: '0xCE3bcCd2b0A457782f79000Be1b534C04B3F5aDD', cether: '0xe3b51f15dc086fba15426b8d42b4cd6feb46968e' }), - methodology, -}, { - merlin: compoundExports2({ comptroller: '0xe7464Caa3fD31A1A8B458a634e72F94A00695d17', }), -} -]) \ No newline at end of file diff --git a/projects/magic-eden/index.js b/projects/magic-eden/index.js deleted file mode 100644 index 2cc92056172..00000000000 --- a/projects/magic-eden/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const { sumTokens: sumBitcoinTokens } = require('../helper/chain/bitcoin'); -const { magicEden } = require('../helper/bitcoin-book/index.js'); -const { sumTokens2: sumSolTokens, } = require('../helper/solana') -const { sumTokens2: sumEvmTokens } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json'); - -const ME_TOKEN_ADDRESS = 'MEFNBXixkEbait3xn9bkm8WsJzXtVsaJEn4c8Sam21u' - -const trustForwarder = [ - '0x5ebc127fae83ed5bdd91fc6a5f5767E259dF5642', -] - -const solanaWallets = [ - // Squads Vault "User Incentives - 'AcG5pZLa5c1A6FT8UkVbUNYvwuEKkAQHt5vgxqNPmdXJ', - // Squads Vault "Euclid" - 'AzcBxq9NMoVxBfvXcuc1Df3vrSwLAa2ZiMstsvSA91jn', - // Squads Vault "Keiko - 'HSR2SbS9ES96oAVzcaSQ4ExbdRRuzUDKEPXE5aQtohGb', - // Squads Vault "MEDAO Security - 'FcfYR3GNuvWxgto8YkXLFbMKaDX4R6z39Js2MFH7vuLX', - //Squads Vault "Ecosystem Development - '7ooPG7PsdDph3EoN2L4D7Rdb7nFh4ezuJ59pTsWzGhUr', - //Squads Vault "Foundation - 'DZFrAxJ3LMEw4ULMqT2fuJWPE5BWMFDhnsdbVTzyueHF', - // Auction House Treasury - 'rFqFJ9g7TGBD8Ed7TPDnvGKZ5pWLPDyxLcvcH2eRCtt', - //Buyside Sol Escrow Account - 'E9BxDumHh8jZmyj3txRyyUk1KAu3TjuR55DAP4oK1JAp', - //Buyside Sol Escrow Account - 'HCoMDpjE81LL6S2ffBwrdHmULUrqpirZZKix1zica8DV', - //Escrow Payment Account - 'CseXi5tprSPBYH6PjRruW9FWHtGuPXLkw913i544aUAu', - //Escrow Payment Account - 'AWwwcdEuxCb4MCep942KSKmNUUmuvUGBHBZkMrhKNVxL', - //Escrow Payment Account - 'DWrR2aenAeXaTZm8oZ1V5GSmEXZMaFJxkj8hNtQdftE8', - //Payment Account - '8EMedxp8fSSmL1fr6Pn7AmypyZAGfnckcfjTujaeWhFf', - //Seller Trade State - 'NTYeYJ1wr4bpM5xo6zx5En44SvJFAd35zTxxNoERYqd', -] - - -module.exports = { - methodology: - 'TVL includes the tokens held in various Magic Eden controlled wallets on Solana and Bitcoin.', - bitcoin: { - tvl: () => sumBitcoinTokens({ - owners: [ magicEden ], - }) - }, - ethereum: { - tvl: () => sumEvmTokens({ - owners: trustForwarder, - tokens: [ - ADDRESSES.null - ], - chain: 'ethereum' - }) - }, - base: { - tvl: () => sumEvmTokens({ - owners: trustForwarder, - tokens: [ - ADDRESSES.null - ], - chain: 'base' - }) - }, - arbitrum: { - tvl: () => sumEvmTokens({ - owners: trustForwarder, - tokens: [ - ADDRESSES.null - ], - chain: 'arbitrum' - }) - }, - solana: { - tvl: () => sumSolTokens({ - owners: solanaWallets, - solOwners: solanaWallets, - blacklistedTokens: [ ME_TOKEN_ADDRESS ] - }), - staking: () => sumSolTokens({ - owners: solanaWallets, - tokens: [ ME_TOKEN_ADDRESS ] - }) - } -}; diff --git a/projects/magic-farm/index.js b/projects/magic-farm/index.js deleted file mode 100644 index b899b128878..00000000000 --- a/projects/magic-farm/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') - -// === Constants (Base) === -const MAGIC_RWA_BASE = '0xe147b006b0d7c5270fba6c6679d29ddd7a92e043' -const RWA_BASE = '0xE2B1dc2D4A3b4E59FDF0c47B71A7A86391a8B35a' -// === Constants (Ethereum) === -const MAGIC_STABUL_ETH = '0xa1AFeAe52f055e11Da2ac65a5f41A488C3F053f4' -const STABUL_ETH = '0x6A43795941113c2F58EB487001f4f8eE74b6938A' -const MAGIC_MNRY_ETH = '0x83960386c8700e9CCA269537130D816608e5a58E' -const MNRY_ETH = '0x06904a21f2dB805487FcBDC3b3Fe9607dAaa5D54' -// === Constants (BSC) === -const MAGIC_TDS_BSC = '0xf2B87D3b264560dD3A91832f6d685965DB78e25a' -const TDS_BSC = '0x82f0508797A7167ADD9274b3AEe4293158A8645E' -// === Constants (OP) === -const MAGIC_FASH_OPTIMISM = '0x957Cd76D7558Ace37c2e37f7c6ef0ddf1e53F54A' -const FASH_OPTIMISM = '0x7D3Ce1265d5eA5848Dc1C96AADbf754E2baD33b1' -// === Constants (Avalanche) === -const MAGIC_COLS_AVALANCHE = '0xb6943369cba1248071ddd5b9e23dd35eb9d0fcd9' -const COLS_AVALANCHE = '0x97f2624D5f99A953AE5574ea57d3268785941DE4' - - -module.exports = { - methodology: - 'TVL equals the balance of the specified ERC20 held by the target Magic Farm contract on specific network.', - timetravel: true, - misrepresentedTokens: false, - - base: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [RWA_BASE, MAGIC_RWA_BASE], - ], - }), - }, - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [STABUL_ETH, MAGIC_STABUL_ETH], - [MNRY_ETH, MAGIC_MNRY_ETH], - ], - }), - }, - bsc : { - tvl: sumTokensExport({ - tokensAndOwners: [ - [TDS_BSC, MAGIC_TDS_BSC], - ], - }), - }, - optimism : { - tvl: sumTokensExport({ - tokensAndOwners: [ - [FASH_OPTIMISM, MAGIC_FASH_OPTIMISM], - ], - }), - }, - avax : { - tvl: sumTokensExport({ - tokensAndOwners: [ - [COLS_AVALANCHE, MAGIC_COLS_AVALANCHE], - ], - }), - }, -} diff --git a/projects/magicfox-vault/index.js b/projects/magicfox-vault/index.js deleted file mode 100644 index 722e69bd8d2..00000000000 --- a/projects/magicfox-vault/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { unwrapLPsAuto } = require('../helper/unwrapLPs') - -const config = { - bsc: { voters: ['0x3Bb920C4875411C40981f6eb6959d4e169877A66', '0xaE0439eC64985D4165d12dDE7F514D092B4C0E23'] }, - arbitrum: { voters: ['0x01A07719596713bE5aB1C3AeEA76e3f5fde0885d', '0xF995f72445B14ae8D56523C9A0dE3F03334BFE2C'] }, - polygon: { voters: ['0x3F316559EB4f493C75638425106144261e20F3a2', '0xf999009fF931749a0930B8db02C6Cd888c7DC5ED'] }, -} - -const totalAmountAbi = "function getTotalAmounts() view returns (uint256 total0, uint256 total1)" -const guageAbiBsc = "function gaugeListExtended() view returns (address[], address[], uint16[])" -const guageAbi = "function gaugeListExtended() view returns (address[], address[])" - -Object.keys(config).forEach(chain => { - const { voters } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const res = await api.multiCall({ abi: chain === 'bsc' ? guageAbiBsc : guageAbi, calls: voters }) - let gauges = res.flatMap(i => i[0]) - gauges = [...new Set(gauges.map(i => i.toLowerCase()))] - const tokens = await api.multiCall({ abi: 'address:TOKEN', calls: gauges }) - const bals = (await api.multiCall({ abi: 'uint256:balance', calls: gauges, permitFailure: true })).map(i => i ?? 0) - const isHypervisor = await api.multiCall({ abi: totalAmountAbi, calls: tokens, permitFailure: true }) - const items = gauges.map((gauge, i) => ({ - gauge, - token: tokens[i], - balance: bals[i], - isHypervisor: !!isHypervisor[i] - })).filter(i => i.balance > 0) - const hypervisorItems = items.filter(i => i.isHypervisor) - const lpItems = items.filter(i => !i.isHypervisor) - lpItems.forEach(i => api.add(i.token, i.balance)) - const hypTokens = hypervisorItems.map(i => i.token) - const hypToken0s = await api.multiCall({ abi: 'address:token0', calls: hypTokens }) - const hypToken1s = await api.multiCall({ abi: 'address:token1', calls: hypTokens }) - const hypTotalSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: hypTokens }) - const hypTokenBals = await api.multiCall({ abi: totalAmountAbi, calls: hypTokens }) - hypTokens.forEach((_, i) => { - const ratio = hypervisorItems[i].balance / hypTotalSupplies[i] - api.add(hypToken0s[i], hypTokenBals[i][0] * ratio) - api.add(hypToken1s[i], hypTokenBals[i][1] * ratio) - }) - return unwrapLPsAuto({ api,}) - } - } -}) \ No newline at end of file diff --git a/projects/magicfox/index.js b/projects/magicfox/index.js deleted file mode 100644 index 8ac1d75910a..00000000000 --- a/projects/magicfox/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = { - ...uniTvlExport("bsc", "0xcEDa3234D7D5b36114d886682A399c6d126A03e0", { - hasStablePools: true, - }), - ...uniTvlExport("arbitrum", "0xBd7A8c05D0eB214e3C5cc63D4B77C2Ea38bDe440", { - hasStablePools: true, - }), - ...uniTvlExport("polygon", "0xa2d23C7Ca6D360D5B0b30CaFF79dbBfa242B4811", { - hasStablePools: true, - }), -}; diff --git a/projects/magicianmv/index.js b/projects/magicianmv/index.js deleted file mode 100644 index 05f52d0903e..00000000000 --- a/projects/magicianmv/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: getUniTVL({ - factory: "0xf08ae17c2a2728a788bb1b6c243fe7eb3e5bbadc", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/magicland/index.js b/projects/magicland/index.js deleted file mode 100644 index e5a08c958cc..00000000000 --- a/projects/magicland/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'arbitrum', - masterchef: '0x6b614684742717114200dc9f30cBFdCC00fc73Ec', - nativeToken: '0x2c852d3334188be136bfc540ef2bb8c37b590bad', - }), - masterchefExports({ - chain: 'iotex', - masterchef: '0x9B4CF5d754455fD3Bc4212DCFF1b085DBCd5b0c0', - }) -]) \ No newline at end of file diff --git a/projects/magicsea-lb-v2/index.js b/projects/magicsea-lb-v2/index.js deleted file mode 100644 index a0a0d2c9208..00000000000 --- a/projects/magicsea-lb-v2/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - // shimmer_evm: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', // excluded since tvl is already counted in swapline - iotaevm: '0x8Cce20D17aB9C6F60574e678ca96711D907fD08c' -}) \ No newline at end of file diff --git a/projects/magik-farm/index.js b/projects/magik-farm/index.js deleted file mode 100644 index 4813d1f7438..00000000000 --- a/projects/magik-farm/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - aurora: 'aurora', - arbitrum: 'arbitrum', - avax: 'avalanche', - bsc: 'bsc', - celo: 'celo', - cronos: 'cronos', - dogechain: 'doge', - fantom: 'fantom', - polygon: 'polygon', - harmony: 'harmony', - heco: 'heco', - moonriver: 'moonriver', -} - -Object.keys(config).forEach(chain => { - const key = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const data = await getConfig('magik-farm/'+chain, `https://raw.githubusercontent.com/magikfinance/magik-farm-fe-master/main/src/features/configure/vault/${key}_pools.js`) - const vaults = data.split('\n').filter(line => line.includes('earnedTokenAddress')).map(line => line.split(':')[1].trim().replace(/['",]/g, '')) - const tokens = await api.multiCall({ calls: vaults, abi: 'address:want'}) - const bals = await api.multiCall({ calls: vaults, abi: 'uint256:balance'}) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true, }) - } - } -}) diff --git a/projects/magik-finance/index.js b/projects/magik-finance/index.js deleted file mode 100644 index c51a6a79aa1..00000000000 --- a/projects/magik-finance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const magik = "0x87a5c9b60a3aaf1064006fe64285018e50e0d020"; -const mshare = "0xc8ca9026ad0882133ef126824f6852567c571a4e"; -const masonry = "0xac55a55676657d793d965ffa1ccc550b95535634"; -const rewardPool = "0x38f006eb9c6778d02351fbd5966f829e7c4445d7"; -const pool2LPs = [ - "0xdc71a6160322ad78dab0abb47c7a581cfe9709ee", - "0x392c85ceccf9855986b0044a365a5532aec6fa31" -] - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(magik, mshare, rewardPool, masonry, pool2LPs, "fantom", undefined, false, pool2LPs[1]) -} \ No newline at end of file diff --git a/projects/magma-finance/index.js b/projects/magma-finance/index.js deleted file mode 100644 index 5d2b781dc86..00000000000 --- a/projects/magma-finance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sui = require('../helper/chain/sui') - -async function suiTVL(api) { - const poolObjectID = '0xfa145b9de10fe858be81edd1c6cdffcf27be9d016de02a1345eb1009a68ba8b2' - const { fields: { list: { fields: listObject } } } = await sui.getObject(poolObjectID) - const items = (await sui.getDynamicFieldObjects({ parent: listObject.id.id })).map(i => i.fields.value.fields.value) - const poolInfo = await sui.getObjects(items.map(i => i.fields.pool_id)) - poolInfo.forEach(({ type: typeStr, fields }) => { - const [coinA, coinB] = typeStr.replace('>', '').split('<')[1].split(', ') - api.add(coinA, fields.coin_a) - api.add(coinB, fields.coin_b) - }) -} - -module.exports = { - sui: { - tvl: suiTVL, - } -} diff --git a/projects/magma/index.js b/projects/magma/index.js deleted file mode 100644 index 1d1b5cbf0d6..00000000000 --- a/projects/magma/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLiquityTvl } = require('../helper/liquity') -// const { staking } = require('../helper/staking') -const sdk = require('@defillama/sdk') - -module.exports = { - iotex: { - tvl: sdk.util.sumChainTvls([ - getLiquityTvl('0x21d81DABF6985587CE64C2E8EB12F69DF2178fe2'), - getLiquityTvl('0xAeB0B38040aDdc4a2b520919f13944D9bC944435'), - getLiquityTvl('0x4315BcE6076953571caf1903d15D682727FBD935'), - getLiquityTvl('0xFF5F4bA96586EDae7E7D838D8770dFB3376Ec245', { nonNativeCollateralToken: true, collateralToken: ADDRESSES.bob.uniBTC }) - ]), - // staking: staking('0x037a2e9a464fbA409D0E55600836864B410d6Dd8', '0x6C0bf4b53696b5434A0D21C7D13Aa3cbF754913E'), // disabled as backing of WEN is already counted towards tvl - }, -}; diff --git a/projects/magnet-dao/index.js b/projects/magnet-dao/index.js deleted file mode 100644 index d33ed4aafc8..00000000000 --- a/projects/magnet-dao/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const token = "0x1d60109178C48E4A937D8AB71699D8eBb6F7c5dE"; -const staking = "0x587CB56D9d52C80267ca36c774eCECA98dEEc831" -const treasury = "0xD5310653Bf047503d30178CF4732BFfE3F2A4CD0"; -const treasuryTokens = [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0xd66b92fd29a6e1f9a1ccb8075a88d955fa4a409d", true] // MAG-MIM JLP -] - -module.exports = { - ...ohmTvl(treasury, treasuryTokens, "avax", staking, token) -} \ No newline at end of file diff --git a/projects/magnify-cash/index.js b/projects/magnify-cash/index.js deleted file mode 100644 index 79e146d8372..00000000000 --- a/projects/magnify-cash/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') - -const USDC_WORLDCHAIN = ADDRESSES.wc.USDC_e -const Magnify_Cash_V1 = '0x4E52d9e8d2F70aD1805084BA4fa849dC991E7c88'; -const Magnify_Cash_V2 = '0x93dbB2d447F0086aF60B2becc66598fe3D9135A1'; - -const tvl = async (api) => { - const balanceV1 = await api.call({ - abi: 'erc20:balanceOf', - target: USDC_WORLDCHAIN, - params: [Magnify_Cash_V1], - }); - - const balanceV2 = await api.call({ - abi: 'erc20:balanceOf', - target: USDC_WORLDCHAIN, - params: [Magnify_Cash_V2], - }); - - api.add(USDC_WORLDCHAIN, balanceV1); - api.add(USDC_WORLDCHAIN, balanceV2); - -} -const totalBorrowed = async (api) => { - - const logsBorrowV1 = await getLogs({ - api, - target: Magnify_Cash_V1, - fromBlock: 8116814, - eventAbi: "event LoanRequested (uint256 indexed tokenId, uint256 amount, address borrower)", - onlyArgs: true, - extraKey: 'borrow-v1' - }); - - const logsRepaidV1 = await getLogs({ - api, - target: Magnify_Cash_V1, - fromBlock: 8141647, - eventAbi: "event LoanRepaid (uint256 indexed tokenId, uint256 repaymentAmount, address borrower)", - onlyArgs: true, - extraKey: 'repay-v1' - }); - - const logsBorrowV2 = await getLogs({ - api, - target: Magnify_Cash_V2, - fromBlock: 10253325, - eventAbi: "event LoanRequested (uint256 indexed tokenId, uint256 amount, address borrower)", - onlyArgs: true, - extraKey: 'borrow-v2' - }); - - const logsRepaidV2 = await getLogs({ - api, - target: Magnify_Cash_V2, - fromBlock: 10253325, - eventAbi: "event LoanRepaid (uint256 indexed tokenId, uint256 repaymentAmount, address borrower)", - onlyArgs: true, - extraKey: 'repay-v2' - }); - - // Only 2 types of loans 1 USDC and 10 USDC, fixed repayment amount - const amountWithoutInterest = (repaymentAmount) => { - if (repaymentAmount === BigInt(10150000)) { - return BigInt(10000000); - } else if (repaymentAmount === BigInt(1025000)) { - return BigInt(1000000); - } else { - return repaymentAmount; - } - } - - const totalBorrowAmount = [...logsBorrowV1, ...logsBorrowV2].reduce((sum, log) => sum + log.amount, BigInt(0)); - const totalRepayAmount = [...logsRepaidV1, ...logsRepaidV2].reduce((sum, log) => sum + amountWithoutInterest(log.repaymentAmount), BigInt(0)); - const netBorrowed = totalBorrowAmount - totalRepayAmount; - - api.add(USDC_WORLDCHAIN, netBorrowed); -} - -module.exports = { - methodology: 'Count TVL by getting balance of USDC in V1, V2 Contracts. Counts total active borrowed using LoanRequested events subtracted by LoanRepaid events from V1 and V2 Contracts', - wc: { - tvl: tvl, - borrowed: totalBorrowed, - } -}; \ No newline at end of file diff --git a/projects/magpiexyz/abis/masterMagpie.json b/projects/magpiexyz/abis/masterMagpie.json deleted file mode 100644 index ab06b5b3d43..00000000000 --- a/projects/magpiexyz/abis/masterMagpie.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "registeredToken": "function registeredToken(uint256) view returns (address)", - "tokenToPoolInfo": "function tokenToPoolInfo(address) view returns (address stakingToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accMGPPerShare, address rewarder, address helper, bool helperNeedsHarvest)" -} \ No newline at end of file diff --git a/projects/magpiexyz/abis/wombatPoolHelper.json b/projects/magpiexyz/abis/wombatPoolHelper.json deleted file mode 100644 index 1e668fea80d..00000000000 --- a/projects/magpiexyz/abis/wombatPoolHelper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "depositToken": "address:depositToken" -} \ No newline at end of file diff --git a/projects/magpiexyz/config.js b/projects/magpiexyz/config.js deleted file mode 100644 index 8301676618d..00000000000 --- a/projects/magpiexyz/config.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - bsc: { - MasterMagpieAddress: "0xa3B615667CBd33cfc69843Bf11Fbb2A1D926BD46", - VlMGPAddress: "0x9B69b06272980FA6BAd9D88680a71e3c3BeB32c6", - MWOMSVAddress: ADDRESSES.null, - MGPAddress: "0xD06716E1Ff2E492Cc5034c2E81805562dd3b45fa", - WOMAddress: "0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1", - MWOMAddress: "0x027a9d301FB747cd972CFB29A63f3BDA551DFc5c", - }, - arbitrum: { - MasterMagpieAddress: "0x664cc2BcAe1E057EB1Ec379598c5B743Ad9Db6e7", - VlMGPAddress: "0x536599497Ce6a35FC65C7503232Fec71A84786b9", - MWOMSVAddress: "0x21804FB90593458630298f10a85094cb6d3B07Db", - MGPAddress: "0xa61F74247455A40b01b0559ff6274441FAfa22A3", - WOMAddress: "0x7B5EB3940021Ec0e8e463D5dBB4B7B09a89DDF96", - MWOMAddress: "0x509FD25EE2AC7833a017f17Ee8A6Fb4aAf947876", - }, - }; \ No newline at end of file diff --git a/projects/magpiexyz/index.js b/projects/magpiexyz/index.js deleted file mode 100644 index 48248f86da0..00000000000 --- a/projects/magpiexyz/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { staking } = require('../helper/staking') -const WombatPoolHelperAbi = require("./abis/wombatPoolHelper.json") -const MasterMagpieAbi = require("./abis/masterMagpie.json"); -const config = require("./config") - -async function getPoolList(api, MasterMagpieAddress, VlMGPAddress, MWOMAddress, MWOMSVAddress) { - let poolTokens = await api.fetchList({ lengthAbi: MasterMagpieAbi.poolLength, itemAbi: MasterMagpieAbi.registeredToken, target: MasterMagpieAddress }) - const customPools = new Set([MWOMAddress, VlMGPAddress, MWOMSVAddress, '0x2130Df9dba40AfeFcA4C9b145f5ed095335c5FA3'].map(i => i.toLowerCase())) - poolTokens = poolTokens.filter(i => !customPools.has(i.toLowerCase())) - const infos = await api.multiCall({ calls: poolTokens, abi: MasterMagpieAbi.tokenToPoolInfo, target: MasterMagpieAddress }) - const depositTokens = await api.multiCall({ calls: infos.map(i => i.helper), abi: WombatPoolHelperAbi.depositToken, }) - return [poolTokens, depositTokens] -} - -async function tvl(api) { - const { MasterMagpieAddress, VlMGPAddress, MWOMSVAddress, WOMAddress, MWOMAddress } = config[api.chain]; - const [poolTokens, depositTokens] = await getPoolList(api, MasterMagpieAddress, VlMGPAddress, MWOMAddress, MWOMSVAddress); - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: depositTokens }) - const balances = {}; - const womBal = await api.call({ abi: 'erc20:balanceOf', target: MWOMAddress, params: MasterMagpieAddress }) - sdk.util.sumSingleBalance(balances, WOMAddress, womBal, api.chain) - if (MWOMSVAddress != ADDRESSES.null) { - const mWomSVBal = await api.call({ abi: 'erc20:balanceOf', target: MWOMAddress, params: MWOMSVAddress }) - sdk.util.sumSingleBalance(balances, WOMAddress, mWomSVBal, api.chain) - } - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: poolTokens.map(i => ({ target: i, params: MasterMagpieAddress })) }) - bals.forEach((v, i) => { - v /= 10 ** (18 - decimals[i]) - sdk.util.sumSingleBalance(balances, depositTokens[i], v, api.chain) - }) - return balances -} - -Object.keys(config).forEach((chain) => { - const { VlMGPAddress, MGPAddress, } = config[chain]; - module.exports[chain] = { - tvl: tvl, - staking: staking(VlMGPAddress, MGPAddress) - } -}) \ No newline at end of file diff --git a/projects/magsinio/index.js b/projects/magsinio/index.js deleted file mode 100644 index 534ccd25d53..00000000000 --- a/projects/magsinio/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave') - -module.exports = { - sonic: aaveExports("sonic", "0x67389503F9EF03D5C10074dEfd96E18bc7755194"), -} diff --git a/projects/mahadao/bsc.js b/projects/mahadao/bsc.js deleted file mode 100644 index 27e063b088d..00000000000 --- a/projects/mahadao/bsc.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require("../helper/unwrapLPs.js"); - -const chain = "bsc"; - -const bsc = { - busd: ADDRESSES.bsc.BUSD, - arth: "0x85daB10c3BA20148cA60C2eb955e1F8ffE9eAa79", - - arthBusdPool: "0x21de718bcb36f649e1a7a7874692b530aa6f986d", -}; - -async function pool2(_timestamp, _ethBlock, chainBlocks) { - const balances = {}; - const block = chainBlocks[chain]; - - const tokensAndOwners = [ - // ARTH/BUSD Ellipsis pool - // https://ellipsis.finance/pool/0x21dE718BCB36F649E1A7a7874692b530Aa6f986d - // Stablecoin part of the pool - [bsc.busd, bsc.arthBusdPool], - [bsc.arth, bsc.arthBusdPool], - ]; - - return sumTokens(balances, tokensAndOwners, block, chain); -} - -module.exports = { - pool2, -}; diff --git a/projects/mahadao/ethereum.js b/projects/mahadao/ethereum.js deleted file mode 100644 index 54635c48fc0..00000000000 --- a/projects/mahadao/ethereum.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, sumTokens2 } = require("../helper/unwrapLPs.js"); -const { staking } = require("../helper/staking"); -const activePoolAbi = "address:activePool" - -const eth = { - dai: ADDRESSES.ethereum.DAI, - maha: "0x745407c86df8db893011912d3ab28e68b62e49b0", - weth: ADDRESSES.ethereum.WETH, - arth: "0x8CC0F052fff7eaD7f2EdCCcaC895502E884a8a71", - crv3: "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - usdc: ADDRESSES.ethereum.USDC, - - mahax: "0xbdd8f4daf71c2cb16cce7e54bb81ef3cfcf5aacb", - - daiMahaPoolUNIV3: "0x8cb8f052e7337573cd59d33bb67b2acbb65e9876", - arthUsdcPoolUNIV3: "0x031a1d307C91fbDE01005Ec2Ebc5Fcb03b6f80aB", - arthMahaPoolUNIV3: "0x8a039FB7503B914A9cb2a004010706ca192377Bc", - arthWethPoolUNIV3: "0xE7cDba5e9b0D5E044AaB795cd3D659aAc8dB869B", - wethMahaPoolUNIV3: "0xb28ddf1ee8ee014eafbecd8de979ac8d297931c7", - - arthUsdcPoolCRV: "0xb4018cb02e264c3fcfe0f21a1f5cfbcaaba9f61f", -}; - -Object.keys(eth).forEach((k) => (eth[k] = eth[k].toLowerCase())); - -async function tvl(api) { - const troves = [ - "0x8b1da95724b1e376ae49fdb67afe33fe41093af5", // ETH Trove - ]; - const pools = await api.multiCall({ abi: activePoolAbi, calls: troves}) - - return sumTokens2({ owners: pools, tokens: [ nullAddress ]}) -} - -module.exports = { - staking: staking(eth.mahax, eth.maha), - pool2: sumTokensExport({ tokensAndOwners: [ - ['0xdf34bad1D3B16c8F28c9Cf95f15001949243A038', '0x9ee8110c0aacb7f9147252d7a2d95a5ff52f8496'], - ]}), - tvl, -}; diff --git a/projects/mahadao/index.js b/projects/mahadao/index.js deleted file mode 100644 index ae455ecb58f..00000000000 --- a/projects/mahadao/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const polygon = require("./polygon"); -const bsc = require("./bsc"); -const ethereum = require("./ethereum"); - -module.exports = { - misrepresentedTokens: true, - methodology: "Deposited collateral in loans used to mint ARTH", - polygon, - bsc, - ethereum, -}; diff --git a/projects/mahadao/polygon.js b/projects/mahadao/polygon.js deleted file mode 100644 index 3f177a12721..00000000000 --- a/projects/mahadao/polygon.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require("../helper/unwrapLPs.js"); - -const chain = "polygon"; - -const polygon = { - usdc: ADDRESSES.polygon.USDC, - arthRedeemer: "0x394f4f7db617a1e4612072345f9601235f64b326", -}; - -async function tvl(_timestamp, _ethBlock, chainBlocks) { - const balances = {}; - const block = chainBlocks[chain]; - - const tokensAndOwners = [ - // TVL contract that holds backing for polygon ARTH - // https://polygonscan.com/address/0x394f4f7db617a1e4612072345f9601235f64b326 - [polygon.usdc, polygon.arthRedeemer], - ]; - - return sumTokens(balances, tokensAndOwners, block, chain); -} - -module.exports = { - tvl, -}; diff --git a/projects/mahalend/index.js b/projects/mahalend/index.js deleted file mode 100644 index 921694a9103..00000000000 --- a/projects/mahalend/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -module.exports = { - ethereum: aaveExports("ethereum", undefined, undefined, [ - "0xCB5a1D4a394C4BA58999FbD7629d64465DdA70BC", - ]), - arbitrum: aaveExports("arbitrum", undefined, undefined, [ - "0xE76C1D2a7a56348574810e83D38c07D47f0641F3", - ]), -}; diff --git a/projects/mahaxyz/index.js b/projects/mahaxyz/index.js deleted file mode 100644 index ce02152c271..00000000000 --- a/projects/mahaxyz/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs.js"); -const { staking } = require("../helper/staking"); - -const eth = { - // tokens - dai: ADDRESSES.ethereum.DAI, - maha: "0x745407c86df8db893011912d3ab28e68b62e49b0", - usdc: ADDRESSES.ethereum.USDC, - susde: ADDRESSES.ethereum.sUSDe, - usdt: ADDRESSES.ethereum.USDT, - weth: ADDRESSES.ethereum.WETH, - zai: "0x69000dFD5025E82f48Eb28325A2B88a241182CEd", - szai: "0x69000195D5e3201Cf73C9Ae4a1559244DF38D47C", - - // peg stability modules - psmUSDC: "0x69000052a82e218ccb61fe6e9d7e3f87b9c5916f", - psmsUSDe: "0x7DCdE153e4cACe9Ca852590d9654c7694388Db54", - - // pools - zaiUsdcCurve: "0x4a0c954d0f19269f4fc5c217821c6150a8870ad4", - zaiMahaCurve: "0x7d2dffa9e903b8377c96196da424c7965b06bcc3", - zaiSzaiCurve: "0x53ad9268a66cef20a4c458d759eee5aa55be1140", - - // pool staking contracts - zaiMahaCurveStaking: "0xE2EbBf803d0199A5A26108bA36FBAc366b201Be1", - zaiUsdcCurveStaking: "0xdFB06C4c562Bcc810C112FBAC99c59C2856b86D1", - zaiSzaiCurveStaking: "0xfDAeB792FF19e7bd4f7ED5d6ce2ef7925d002A19", -}; - -const base = { - usdc: ADDRESSES.base.USDC, - maha: "0x554bba833518793056CF105E66aBEA330672c0dE", - mahax: "0x7DF7505aa7cfAb3AC1A8D1EC225f2fafe5f04c74", - zai: "0x69000dFD5025E82f48Eb28325A2B88a241182CEd", - szai: "0x69000195D5e3201Cf73C9Ae4a1559244DF38D47C", - - // pools - zaiUsdcAerodrome: "0x93EdC603D7A2eA03518Ac55219cAD320010a58e4", - zaiMahaAerodrome: "0x96A0EC12A9F3bEabFf9Bb59c3F33EE439dAF2a85", - zaiMahaV3Aerodrome: "0xebF0D2faC88448874947550FA9B2A75f22FF571F", - - // staking contracts - zaiUsdcStaking: "0xD87ECeF739161be77bbe9891dBA80F14275BBE34", - zaiMahaStaking: "0xe77b404e934c1d97f179061349F459847f70Cd8C", - - gnosis: "0x7202136d70026DA33628dD3f3eFccb43F62a2469", -}; - -Object.keys(eth).forEach((k) => (eth[k] = eth[k].toLowerCase())); - -const collaterals = [eth.usdc, eth.susde]; -const pegStabilityModules = [eth.psmsUSDe]; - -module.exports = { - ethereum: { - pool2: sumTokensExport({ - tokensAndOwners: [ - [eth.zaiMahaCurve, eth.zaiMahaCurveStaking], - [eth.zaiUsdcCurve, eth.zaiUsdcCurveStaking], - [eth.zaiSzaiCurve, eth.zaiSzaiCurveStaking], - ], - resolveLP: true, - }), - tvl: sumTokensExport({ owners: pegStabilityModules, tokens: collaterals }), - }, - base: { - pool2: sumTokensExport({ - tokensAndOwners: [ - [base.zaiMahaAerodrome, base.zaiMahaStaking], - [base.zaiUsdcAerodrome, base.zaiUsdcStaking], - ], - resolveLP: true, - }), - staking: staking(base.mahax, base.maha), - }, -}; diff --git a/projects/maia-dao-uni/index.js b/projects/maia-dao-uni/index.js deleted file mode 100644 index d6359b97e37..00000000000 --- a/projects/maia-dao-uni/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - metis: { factory: '0xf5fd18Cd5325904cC7141cB9Daca1F2F964B9927', fromBlock: 5212263, }, -}) \ No newline at end of file diff --git a/projects/maia-dao/abis.json b/projects/maia-dao/abis.json deleted file mode 100644 index 9902d560229..00000000000 --- a/projects/maia-dao/abis.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "locked": "function locked(uint256) view returns (int128 amount, uint256 end)", - "gauges": "function gauges(address) view returns (address)", - "balanceOf": "function balanceOf(address) view returns (uint256)", - "pools": "function pools(uint256) view returns (address)", - "length": "uint256:length" -} \ No newline at end of file diff --git a/projects/maia-dao/api.js b/projects/maia-dao/api.js deleted file mode 100644 index 64f900102d9..00000000000 --- a/projects/maia-dao/api.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - metis: { - tvl: () => ({}), - staking: () => ({}), - }, - arbitrum: { - staking: staking('0x000000f0C01c6200354f240000b7003668B4D080', '0x00000000ea00F3F4000e7Ed5Ed91965b19f1009B'), // v2 - }, -} \ No newline at end of file diff --git a/projects/maia-dao/index.js b/projects/maia-dao/index.js deleted file mode 100644 index 0f1290838c4..00000000000 --- a/projects/maia-dao/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require('../helper/unwrapLPs'); -const abis = require("./abis.json"); - -const HERMES = '0xb27bbeaaca2c00d6258c3118bab6b5b6975161c8'; -const blacklistedTokens = ["0xa3e8e7eb4649ffc6f3cbe42b4c2ecf6625d3e802"]; -const multisig = '0x77314eAA8D99C2Ad55f3ca6dF4300CFC50BdBC7F'; -const tokens = [ADDRESSES.metis.WETH, ADDRESSES.metis.Metis, ADDRESSES.metis.m_USDC, ADDRESSES.metis.m_USDT, ADDRESSES.metis.DAI, '0xEfFEC28996aAff6D55B6D108a46446d45C3a2E71', '0x5ab390084812E145b619ECAA8671d39174a1a6d1',]; - -async function tvl(api) { - - const hermesBalance = await api.call({ - target: '0xa4C546c8F3ca15aa537D2ac3f62EE808d915B65b', - abi: abis.locked, - params: [2], - }) - api.add(HERMES, hermesBalance.amount - 8424424910000000000000000) - const pairs = await api.fetchList({ lengthAbi: abis.length, itemAbi: abis.pools, target: '0x879828da3a678D349A3C8d6B3D9C78e9Ee31137F' }) - - const gauges = await api.multiCall({ abi: abis.gauges, calls: pairs, target: '0x879828da3a678D349A3C8d6B3D9C78e9Ee31137F'}) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges.map(gauge => ({ target: gauge, params: [multisig] }))}) - api.add(pairs, bals) - return sumTokens2({ owner: multisig, tokens, api, resolveLP: 'true', blacklistedTokens, }) -} - -module.exports = { - metis: { - tvl: () => ({}), - } -} diff --git a/projects/maiar/index.js b/projects/maiar/index.js deleted file mode 100644 index bada142a9ec..00000000000 --- a/projects/maiar/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { request } = require("graphql-request"); - -const LiquidityQuery = ` -{ - pairs(limit: 1000 minLockedValueUSD: 100) { - address - lockedValueUSD - liquidityPoolTokenPriceUSD - } -} - -` - -const StakingQuery2 = `{ - totalValueLockedUSD - totalValueStakedUSD - totalLockedMexStakedUSD -}` - -async function tvl(api) { - const { pairs } = await request("http://graph.xexchange.com/graphql", LiquidityQuery) - pairs.forEach(i => { - if (i.lockedValueUSD > 1e8) { - api.log(`Pair ${i.address} has ${i.lockedValueUSD} USD locked, ignoring it`) - return; - } - api.addUSDValue(Math.round(+i.lockedValueUSD)) - }); -} - -async function stakingAndLockedMEX(api) { - const results = await request("http://graph.xexchange.com/graphql", StakingQuery2) - api.addUSDValue(+results.totalValueStakedUSD) -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - elrond: { - tvl, - staking: stakingAndLockedMEX, - }, -} \ No newline at end of file diff --git a/projects/mainstreet/index.js b/projects/mainstreet/index.js deleted file mode 100644 index a52cb3261f3..00000000000 --- a/projects/mainstreet/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - sonic: { tvl } -} - -async function tvl(api) { - const supply = await api.call({ abi: 'uint256:totalSupply', target: '0xE5Fb2Ed6832deF99ddE57C0b9d9A56537C89121D' }) - api.addCGToken('sonic-bridged-usdc-e-sonic', supply / 1e18) -} \ No newline at end of file diff --git a/projects/maker-rwa/index.js b/projects/maker-rwa/index.js deleted file mode 100644 index 33a025a5e06..00000000000 --- a/projects/maker-rwa/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs') - -const MCD_VAT = '0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b' -const VAT_topic = '0x65fae35e00000000000000000000000000000000000000000000000000000000' -const START_VAT_BLOCK = 8928152 - -const MCD_DOG = '0x135954d155898d42c90d2a57824c690e0c7bef1b' -const DOG_topic = '0x4ff2caaa972a7c6629ea01fae9c93d73cc307d13ea4c369f9bbbb7f9b7e9461d' -const START_DOG_BLOCK = 12317310 - -const abi = { - ilk: 'function ilk() view returns (bytes32)', - ilks: 'function ilks (bytes32) view returns (uint256 art, uint256 rate, uint256 spot, uint256 line,uint256 dust)', - gem: "address:gem", - dog: "address:dog", -} - -const getJoins = async (api) => { - const logs = (await getLogs2({ api, target: MCD_VAT, fromBlock: START_VAT_BLOCK, topics: [VAT_topic] })).map(log => { - return '0x' + log.topics[1].slice(-40); - }) - - const ilks = await api.multiCall({ abi: abi.ilk, calls: logs, permitFailure: true }) - - return logs.map((auth, i) => { - const ilk = ilks[i]; - if (!ilk) return null - return auth.toLowerCase(); - }).filter(Boolean); -} - -const getDogs = async (api) => { - const logs = (await getLogs2({ api, target: MCD_DOG, fromBlock: START_DOG_BLOCK, topics: [DOG_topic], })).map(log => { - return '0x' + log.data.slice(-40); - }) - - const dogs = await api.multiCall({ abi: abi.dog, calls: logs, permitFailure: true }) - - return logs.map((auth, i) => { - const dog = dogs[i]; - if (!dog) return null - return auth.toLowerCase(); - }).filter(Boolean); -} - -const tvl = async (api) => { - const [joins/*, dogs*/] = await Promise.all([ - getJoins(api), - // getDogs(api) - ]) - - const tokens = await api.multiCall({ abi: abi.gem, calls: joins, permitFailure: true }) - - let toas = joins.map((join, i) => { - const token = tokens[i]; - if (!token) return null - return [token, join] - }).filter(Boolean) - - toas = toas.filter(i => i[0].toLowerCase() !== ADDRESSES.ethereum.SAI.toLowerCase()) - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: toas.map(t => t[0]) }) - const owners = toas.map((toa, i) => { - if (!symbols[i].startsWith('RWA')) return null - return toa[1] - }).filter(Boolean) - - const ilks = await api.multiCall({ abi: abi.ilk, calls: owners }) - const res = await api.multiCall({ abi: abi.ilks, calls: ilks, target:'0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B' }) - res.forEach(i => api.add(ADDRESSES.ethereum.DAI, i.art)) -} - -module.exports = { - methodology: `Counts all the tokens being used as collateral of CDPs. On the technical level, we get all the collateral tokens by fetching events, get the amounts locked by calling balanceOf() directly, unwrap any uniswap LP tokens and then get the price of each token from coingecko`, - start: '2017-12-18', // 12/18/2017 @ 12:00am (UTC) - ethereum: { - tvl - }, -}; diff --git a/projects/maker/abis/maker-mcd.js b/projects/maker/abis/maker-mcd.js deleted file mode 100644 index 326221c7a0c..00000000000 --- a/projects/maker/abis/maker-mcd.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -module.exports = { - // addresses for kovan version 0.2.17 - KOVANVAT: "0xba987bdb501d131f766fee8180da5d81b34b69d9", - KOVANPOT: "0xea190dbdc7adf265260ec4da6e9675fd4f5a78bb", - KOVANJUG: "0xcbb7718c9f39d05aeede1c472ca8bf804b2f1ead", - KOVANSTARTBLOCK: 14764534, - VAT: "0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b", - POT: "0x197e90f9fad81970ba7976f33cbd77088e5d7cf7", - JUG: "0x19c0976f590d67707e62397c87829d896dc0f1f1", - DAI: ADDRESSES.ethereum.DAI, - STARTBLOCK: 8928152, - ilk: "function ilk() view returns (bytes32)", - gem: "address:gem", - Pie: "uint256:Pie", - dog: "address:dog", -}; diff --git a/projects/maker/abis/makerdao.js b/projects/maker/abis/makerdao.js deleted file mode 100755 index 18ab2c20ff5..00000000000 --- a/projects/maker/abis/makerdao.js +++ /dev/null @@ -1,6 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -module.exports = { - TUB_ADDRESS: "0x448a5065aebb8e423f0896e6c5d525c040f59af3", - DAI_ADDRESS: ADDRESSES.ethereum.SAI, - WETH_ADDRESS: ADDRESSES.ethereum.WETH -}; \ No newline at end of file diff --git a/projects/maker/index.js b/projects/maker/index.js deleted file mode 100644 index 610401604ab..00000000000 --- a/projects/maker/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const MCD_VAT = '0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b' -const VAT_topic = '0x65fae35e00000000000000000000000000000000000000000000000000000000' -const START_VAT_BLOCK = 8928152 - -const MCD_DOG = '0x135954d155898d42c90d2a57824c690e0c7bef1b' -const DOG_topic = '0x4ff2caaa972a7c6629ea01fae9c93d73cc307d13ea4c369f9bbbb7f9b7e9461d' -const START_DOG_BLOCK = 12317310 - -// PSM USDC STABLECOIN -const extraUSDCWallet = '0x37305b1cd40574e4c5ce33f8e8306be057fd7341'.toLowerCase() -const USDC = ADDRESSES.ethereum.USDC - -const abi = { - ilk: "function ilk() view returns (bytes32)", - gem: "address:gem", - Pie: "uint256:Pie", - dog: "address:dog", -} - -const getJoins = async (api) => { - const logs = (await getLogs2({ api, target: MCD_VAT, fromBlock: START_VAT_BLOCK, topics: [VAT_topic] })).map(log => { - return '0x' + log.topics[1].slice(-40); - }) - - const ilks = await api.multiCall({ abi: abi.ilk, calls: logs, permitFailure: true }) - - return logs.map((auth, i) => { - const ilk = ilks[i]; - if (!ilk) return null - return auth.toLowerCase(); - }).filter(Boolean); -} - -const tvl = async (api) => { - const [joins] = await Promise.all([ - getJoins(api), - ]) - - const tokens = await api.multiCall({ abi: abi.gem, calls: joins, permitFailure: true }) - - let toas = joins.map((join, i) => { - const token = tokens[i]; - if (!token) return null - return [token, join] - }).filter(Boolean) - - toas = toas.filter(i => i[0].toLowerCase() !== ADDRESSES.ethereum.SAI.toLowerCase()) - - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: toas.map(([token]) => token) }) - - const gUNIToa = toas.filter((_, i) => symbols[i] === 'G-UNI') - toas = toas.filter((_, i) => symbols[i] !== 'G-UNI' && !symbols[i].startsWith('RWA')) - - // Add extra USDC balance - toas.push([USDC, extraUSDCWallet]) - - await unwrapGunis({ api, toa: gUNIToa }) - - return sumTokens2({ api, tokensAndOwners: toas, resolveLP: true }) -} - -async function unwrapGunis({ api, toa, }) { - const lps = toa.map(i => i[0]) - const balanceOfCalls = toa.map(t => ({ params: t[1], target: t[0] })) - const [ - token0s, token1s, supplies, uBalances, tokenBalances - ] = await Promise.all([ - api.multiCall({ abi: 'address:token0', calls: lps }), - api.multiCall({ abi: 'address:token1', calls: lps }), - api.multiCall({ abi: 'uint256:totalSupply', calls: lps }), - api.multiCall({ abi: 'function getUnderlyingBalances() view returns (uint256 token0Bal, uint256 token1Bal)', calls: lps }), - api.multiCall({ abi: 'erc20:balanceOf', calls: balanceOfCalls }), - ]) - - tokenBalances.forEach((bal, i) => { - const ratio = bal / supplies[i] - const token0Bal = uBalances[i][0] * ratio - const token1Bal = uBalances[i][1] * ratio - api.add(token0s[i], token0Bal) - api.add(token1s[i], token1Bal) - }) - - api.removeTokenBalance(ADDRESSES.ethereum.DAI) // remove dai balances -} - -module.exports = { - methodology: `Counts all the tokens being used as collateral of CDPs. On the technical level, we get all the collateral tokens by fetching events, get the amounts locked by calling balanceOf() directly, unwrap any uniswap LP tokens and then get the price of each token from coingecko. Also includes PSM USDC balance.`, - start: '2017-12-18', // 12/18/2017 @ 12:00am (UTC) - ethereum: { - tvl, - staking: staking("0xCe01C90dE7FD1bcFa39e237FE6D8D9F569e8A6a3","0x56072C95FAA701256059aa122697B133aDEd9279") - }, -}; diff --git a/projects/makiswap/index.js b/projects/makiswap/index.js deleted file mode 100644 index e00c180c393..00000000000 --- a/projects/makiswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require("../helper/staking"); -const { getUniTVL } = require("../helper/unknownTokens"); - -const factory = "0x11cdC9Bd86fF68b6A6152037342bAe0c3a717f56"; -const maki = "0x5FaD6fBBA4BbA686bA9B8052Cf0bd51699f38B93"; -const makiChef = "0x4cb4c9C8cC67B171Ce86eB947cf558AFDBcAB17E"; - -module.exports = { - misrepresentedTokens: true, - heco: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, abis: { allPairsLength: 'uint256:totalPairs'}}), - staking: staking(makiChef, maki), - }, -} - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/malt-money/index.js b/projects/malt-money/index.js deleted file mode 100644 index c79135d8d23..00000000000 --- a/projects/malt-money/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {sumTokensExport} = require('../helper/unwrapLPs') - -const maitFarm = '0x539618aa29c95c28c0b04abb9025815c014a9db9' - -module.exports = { - polygon: { - tvl: sumTokensExport({ owners: [maitFarm,], fetchCoValentTokens: true, }) - }, - deadFrom: '2020-01-01' -} diff --git a/projects/mama-dao/index.js b/projects/mama-dao/index.js deleted file mode 100644 index 9a1b1bd6622..00000000000 --- a/projects/mama-dao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {ohmTvl} = require("../helper/ohm"); - -const treasury = "0x884f6A98477b0F689f1da280A83a963f2B768972"; -const treasuryTokens = [ - [ADDRESSES.polygon.DAI, false], // DAI - ["0xBdDB96D54E1434654f8E46Dba41120cd652039bb", true] // MAMA-DAI UNI LP -] -const stakingAddress = "0xe1B64E20921a38c20BE98f953F758e9DeD80F89b" -const stakingToken = "0xA9a779aeA33b6f40CfC78A29Cf56Fc7e6fb329AB"; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "polygon", stakingAddress, stakingToken, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/mama/index.js b/projects/mama/index.js deleted file mode 100644 index c84ca33bd33..00000000000 --- a/projects/mama/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const { getUniqueAddresses } = require("../helper/utils"); - -module.exports = uniV3Export({ - polygon: { - factory: "0xE7aE959bbC94BDF2E9FF28a214840aB3285d7765", - fromBlock: 46977039, - filterFn, - } -}); - -async function filterFn(api, logs) { - let tokens = logs.map(i => [i.token0, i.token1]).flat() - tokens = getUniqueAddresses(tokens) - const names = await api.multiCall({ abi: 'string:name', calls: tokens, permitFailure: true }) - return tokens.filter((_, i) => typeof names[i] == 'string' && /aryze/i.test(names[i])) -} \ No newline at end of file diff --git a/projects/manarium/index.js b/projects/manarium/index.js deleted file mode 100644 index e1563cbb720..00000000000 --- a/projects/manarium/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const sdk = require('@defillama/sdk'); -const ARI_TOKEN_CONTRACT = '0xc80a0a55caf6a7bfb4ee22f9380c4077312c4a35'; -const ARI_STAKING_CONTRACT = '0x0C3542f48D26CF67e2DAc78f5588D12649F4D255'; - -async function tvl(timestamp, block, chainBlocks){ - const balances = {}; - const transform = i => `bsc:${i}`; - - const collateralBalance = (await sdk.api.abi.call({ - abi: 'erc20:balanceOf', - chain: 'bsc', - target: ARI_TOKEN_CONTRACT, - params: [ARI_STAKING_CONTRACT], - block: chainBlocks['bsc'], - })).output; - - sdk.util.sumSingleBalance(balances, transform(ARI_TOKEN_CONTRACT), collateralBalance) - return balances; -} - -module.exports = { - bsc: { - tvl: () => ({}), - staking: tvl - } - }; - module.exports.deadFrom = '2023-03-09' \ No newline at end of file diff --git a/projects/mango-farmers-club/index.js b/projects/mango-farmers-club/index.js deleted file mode 100644 index 0964fc707d9..00000000000 --- a/projects/mango-farmers-club/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { fetchURL } = require("../helper/utils"); - -module.exports = { - polygon_zkevm: { - staking: async (api) => { - const stakingBalance = await api.call({ - abi: 'erc20:balanceOf', - target: '0x1fa03edb1b8839a5319a7d2c1ae6aae492342bad', - params: "0xdd38211f2973dc41cd6fC4DB681596Fd6118D894", - }); - const { price : mangoPrice } = (await fetchURL('https://prod.clober-api.com/1101/markets/0x1FC38BA10E741F357b1c8B69DC08eA654c21Ae37/trades?limit=1')).data.trades[0] - return { - tether: mangoPrice * stakingBalance /1e18 - } - }, - tvl: () => ({}) - } -}; diff --git a/projects/mango-markets-v4/deposits.js b/projects/mango-markets-v4/deposits.js deleted file mode 100644 index ad34e8af5f2..00000000000 --- a/projects/mango-markets-v4/deposits.js +++ /dev/null @@ -1,34 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2 } = require("../helper/solana"); -const idl = require("./idl.json"); - -async function depositsTvl() { - const provider = getProvider(); - const program = new Program( - idl, - "4MangoMjqJ2firMokCjjGgoK8d4MXcrgL7XJaL3w6fVg", - provider, - ); - const banks = await program.account.bank.all(); - return sumTokens2({ tokenAccounts: banks.map((i) => i.account.vault) }); -} -async function borrowed(api) { - const provider = getProvider(); - const program = new Program( - idl, - "4MangoMjqJ2firMokCjjGgoK8d4MXcrgL7XJaL3w6fVg", - provider, - ); - const banks = await program.account.bank.all(); - banks.forEach(({ account: i }) => { - api.add( - i.mint.toString(), - i.indexedBorrows.val.mul(i.borrowIndex.val).toString() / 2 ** (48 * 2), - ); - }); -} - -module.exports = { - depositsTvl, - borrowed, -}; diff --git a/projects/mango-markets-v4/idl.json b/projects/mango-markets-v4/idl.json deleted file mode 100644 index c5414b0c9c5..00000000000 --- a/projects/mango-markets-v4/idl.json +++ /dev/null @@ -1,361 +0,0 @@ -{ - "version": "0.16.0", - "name": "mango_v4", - "instructions": [], - "accounts": [ - { - "name": "Bank", - "type": { - "kind": "struct", - "fields": [ - { - "name": "group", - "type": "publicKey" - }, - { - "name": "name", - "type": { - "array": [ - "u8", - 16 - ] - } - }, - { - "name": "mint", - "type": "publicKey" - }, - { - "name": "vault", - "type": "publicKey" - }, - { - "name": "oracle", - "type": "publicKey" - }, - { - "name": "oracleConfig", - "type": { - "defined": "OracleConfig" - } - }, - { - "name": "stablePriceModel", - "type": { - "defined": "StablePriceModel" - } - }, - { - "name": "depositIndex", - "type": { - "defined": "I80F48" - } - }, - { - "name": "borrowIndex", - "type": { - "defined": "I80F48" - } - }, - { - "name": "indexedDeposits", - "type": { - "defined": "I80F48" - } - }, - { - "name": "indexedBorrows", - "type": { - "defined": "I80F48" - } - }, - { - "name": "indexLastUpdated", - "type": "u64" - }, - { - "name": "bankRateLastUpdated", - "type": "u64" - }, - { - "name": "avgUtilization", - "type": { - "defined": "I80F48" - } - }, - { - "name": "adjustmentFactor", - "type": { - "defined": "I80F48" - } - }, - { - "name": "util0", - "type": { - "defined": "I80F48" - } - }, - { - "name": "rate0", - "type": { - "defined": "I80F48" - } - }, - { - "name": "util1", - "type": { - "defined": "I80F48" - } - }, - { - "name": "rate1", - "type": { - "defined": "I80F48" - } - }, - { - "name": "maxRate", - "type": { - "defined": "I80F48" - } - }, - { - "name": "collectedFeesNative", - "type": { - "defined": "I80F48" - } - }, - { - "name": "loanOriginationFeeRate", - "type": { - "defined": "I80F48" - } - }, - { - "name": "loanFeeRate", - "type": { - "defined": "I80F48" - } - }, - { - "name": "maintAssetWeight", - "type": { - "defined": "I80F48" - } - }, - { - "name": "initAssetWeight", - "type": { - "defined": "I80F48" - } - }, - { - "name": "maintLiabWeight", - "type": { - "defined": "I80F48" - } - }, - { - "name": "initLiabWeight", - "type": { - "defined": "I80F48" - } - }, - { - "name": "liquidationFee", - "type": { - "defined": "I80F48" - } - }, - { - "name": "dust", - "type": { - "defined": "I80F48" - } - }, - { - "name": "flashLoanTokenAccountInitial", - "type": "u64" - }, - { - "name": "flashLoanApprovedAmount", - "type": "u64" - }, - { - "name": "tokenIndex", - "type": "u16" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "mintDecimals", - "type": "u8" - }, - { - "name": "bankNum", - "type": "u32" - }, - { - "name": "minVaultToDepositsRatio", - "type": "f64" - }, - { - "name": "netBorrowLimitWindowSizeTs", - "type": "u64" - }, - { - "name": "lastNetBorrowsWindowStartTs", - "type": "u64" - }, - { - "name": "netBorrowLimitPerWindowQuote", - "type": "i64" - }, - { - "name": "netBorrowsInWindow", - "type": "i64" - }, - { - "name": "borrowWeightScaleStartQuote", - "type": "f64" - }, - { - "name": "depositWeightScaleStartQuote", - "type": "f64" - }, - { - "name": "reduceOnly", - "type": "u8" - }, - { - "name": "forceClose", - "type": "u8" - }, - { - "name": "reserved", - "type": { - "array": [ - "u8", - 2118 - ] - } - } - ] - } - } - ], - "types": [ - - { - "name": "OracleConfig", - "type": { - "kind": "struct", - "fields": [ - { - "name": "confFilter", - "type": { - "defined": "I80F48" - } - }, - { - "name": "maxStalenessSlots", - "type": "i64" - }, - { - "name": "reserved", - "type": { - "array": [ - "u8", - 72 - ] - } - } - ] - } - }, - { - "name": "I80F48", - "type": { - "kind": "struct", - "fields": [ - { - "name": "val", - "type": "i128" - } - ] - } - }, - - { - "name": "StablePriceModel", - "type": { - "kind": "struct", - "fields": [ - { - "name": "stablePrice", - "type": "f64" - }, - { - "name": "lastUpdateTimestamp", - "type": "u64" - }, - { - "name": "delayPrices", - "type": { - "array": [ - "f64", - 24 - ] - } - }, - { - "name": "delayAccumulatorPrice", - "type": "f64" - }, - { - "name": "delayAccumulatorTime", - "type": "u32" - }, - { - "name": "delayIntervalSeconds", - "type": "u32" - }, - { - "name": "delayGrowthLimit", - "type": "f32" - }, - { - "name": "stableGrowthLimit", - "type": "f32" - }, - { - "name": "lastDelayIntervalIndex", - "type": "u8" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 7 - ] - } - }, - { - "name": "reserved", - "type": { - "array": [ - "u8", - 48 - ] - } - } - ] - } - } - ], - "events": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/mango-markets-v4/index.js b/projects/mango-markets-v4/index.js deleted file mode 100644 index 644c35f8ed5..00000000000 --- a/projects/mango-markets-v4/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { ordersTvl } = require("./orders"); -const { depositsTvl, borrowed } = require("./deposits"); -const sdk = require("@defillama/sdk"); - -module.exports = { - timetravel: false, - solana: { tvl: sdk.util.sumChainTvls([ depositsTvl ]), borrowed }, -}; diff --git a/projects/mango-markets-v4/orders.js b/projects/mango-markets-v4/orders.js deleted file mode 100644 index e2bc8c4c607..00000000000 --- a/projects/mango-markets-v4/orders.js +++ /dev/null @@ -1,69 +0,0 @@ -const { getProvider, decodeAccount } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); -const { get } = require("../helper/http"); - -const endpoint = "https://api.mngo.cloud/data/v4/group-metadata"; -const OPENBOOK_ID = new PublicKey( - "srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX", -); -const MANGO_GROUP = "78b8f4cGCwmZ9ysPFMWLaLTkkaYnUjwMJYStWe5RTSSX"; - -async function ordersTvl(api) { - const provider = getProvider(); - - const [stats, openOrdersAccounts] = await Promise.all([ - get(endpoint), - provider.connection.getProgramAccounts(OPENBOOK_ID, { - filters: [ - { - dataSize: 3228, - }, - { - memcmp: { - offset: 45, - bytes: MANGO_GROUP, - }, - }, - ], - }), - ]); - const group = stats.groups.find((g) => g.publicKey == MANGO_GROUP); - - const markets = await provider.connection.getMultipleAccountsInfo( - group.serum3Markets.map((m) => new PublicKey(m.serumMarketExternal)), - ); - const decodedMarkets = markets.map((acc) => decodeAccount("openbook", acc)); - - const balances = {}; - - openOrdersAccounts.forEach((account) => { - const oo = decodeAccount("openbookOpenOrders", account.account); - const market = group.serum3Markets.find( - (m) => m.serumMarketExternal === oo.market.toBase58(), - ); - const decodedMarket = decodedMarkets.find( - (m) => m.ownAddress.toBase58() === market.serumMarketExternal, - ); - - const baseToken = group.tokens.find( - (t) => t.tokenIndex === market.baseTokenIndex, - ); - const baseLots = decodedMarket.baseLotSize.toNumber(); - const baseAmount = - (oo.baseTokenTotal.toNumber() * baseLots) / 10 ** baseToken.decimals; - - const quoteToken = group.tokens.find( - (t) => t.tokenIndex === market.quoteTokenIndex, - ); - const quoteLots = decodedMarket.quoteLotSize.toNumber(); - const quoteAmount = - (oo.quoteTokenTotal.toNumber() * quoteLots) / 10 ** quoteToken.decimals; - - api.add(baseToken.mint.toString(), baseAmount); - api.add(quoteToken.mint.toString(), quoteAmount); - }); -} - -module.exports = { - ordersTvl, -}; diff --git a/projects/mango-markets/index.js b/projects/mango-markets/index.js deleted file mode 100644 index df385e64363..00000000000 --- a/projects/mango-markets/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - timetravel: false, - solana: { - tvl: () => ({}), - }, - deadFrom: '2022-10-19', - // hallmarks:[ - // [1665521360, "Oracle Price Manipulation"], - // ], -} diff --git a/projects/mangrove/abi.json b/projects/mangrove/abi.json deleted file mode 100644 index 4ed112e9666..00000000000 --- a/projects/mangrove/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "openMarkets": "function openMarkets() view returns ((address,address,uint256)[])", - "offerList": "function offerList((address,address,uint256),uint256,uint256) view returns (uint256,uint256[],(uint256,uint256,int256,uint256)[])" -} diff --git a/projects/mangrove/index.js b/projects/mangrove/index.js deleted file mode 100644 index 476dbded11e..00000000000 --- a/projects/mangrove/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const abi = require("./abi.json"); -const { BigNumber } = require("bignumber.js"); - -const mgvReaders = { - blast: "0x26fD9643Baf1f8A44b752B28f0D90AEBd04AB3F8", - arbitrum: "0x7E108d7C9CADb03E026075Bf242aC2353d0D1875", -}; - -const getOffers = async (api, mgvReader, { tkn0, tkn1, tickSpacing }) => { - let total = BigNumber(0); - let currentId = 0; - do { - const [newCurrId, _, offers] = await api.call({ - target: mgvReader, - abi: abi.offerList, - params: [[tkn0, tkn1, tickSpacing], currentId, 100], - }); - - for (let i = 0; i < offers.length; i++) { - const [_1, _2, _3, gives] = offers[i]; - - total = total.plus(BigNumber(gives)); - } - - currentId = Number(newCurrId); - } while (currentId !== 0); - - return total; -}; - -async function getMangroveTVL(api, mgvReader) { - const markets = await api.call({ - target: mgvReader, - abi: abi.openMarkets, - }); - - for (const market of markets) { - const [tkn0, tkn1, tickSpacing] = market; - const tkn0TPV = await getOffers(api, mgvReader, { - tkn0, - tkn1, - tickSpacing, - }); - const tkn1TPV = await getOffers(api, mgvReader, { - tkn0: tkn1, - tkn1: tkn0, - tickSpacing, - }); - - api.addTokens([tkn0, tkn1], [tkn0TPV, tkn1TPV]); - } -} - -module.exports = { - misrepresentedTokens: false, - methodology: - "TVL is calculated by getting the total promised liquidity on the orderbook on a specific block.", - start: '2024-02-27', -}; - -for (const chain in mgvReaders) { - module.exports[chain] = { - tvl: (api) => getMangroveTVL(api, mgvReaders[chain]), - }; -} diff --git a/projects/manhattan/abi.json b/projects/manhattan/abi.json deleted file mode 100644 index 3c0e74a76ea..00000000000 --- a/projects/manhattan/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Token": "address:Token", - "checkInvestedLast": "uint256:checkInvestedLast" -} \ No newline at end of file diff --git a/projects/manhattan/index.js b/projects/manhattan/index.js deleted file mode 100644 index c2956020f85..00000000000 --- a/projects/manhattan/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - polygon: { - pools: [ - '0x4b7509ce029656341D0B59D387D9B5312E41615a', - '0x34fa22892256216a659D4f635354250b4D771458', - ] - }, - moonbeam: { - pools: [ - '0x3A82F4da24F93a32dc3C2A28cFA9D6E63EC28531', - '0x3756465c5b1C1C4cEe473880c9726E20875284f1', - ] - } -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { pools } = config[chain] - module.exports[chain] = { - tvl: async (_, _b, {[chain]: block}) => { - const collaterals = await sdk.api2.abi.multiCall({ - abi: "address:collateral", - calls: pools, - chain, block, - }) - return sumTokens2({ chain, block, tokensAndOwners: collaterals.map((i, idx) => ([i, pools[idx]]))}) - } - } -}) diff --git a/projects/manifest-trade/index.js b/projects/manifest-trade/index.js deleted file mode 100644 index 085122b3e50..00000000000 --- a/projects/manifest-trade/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection, sumTokens2, } = require("../helper/solana"); - -const PROGRAM_ADDRESS = 'MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms'; -const PROGRAM_ID = new PublicKey(PROGRAM_ADDRESS); -function getVaultAddress(market, mint) { - const [vaultAddress, _unusedBump] = PublicKey.findProgramAddressSync( - [Buffer.from('vault'), market.toBuffer(), mint.toBuffer()], - PROGRAM_ID, - ); - return vaultAddress; -} -function getGlobalVaultAddress(mint) { - const [globalVaultAddress, _unusedBump] = PublicKey.findProgramAddressSync( - [Buffer.from('global-vault'), mint.toBuffer()], - PROGRAM_ID, - ); - return globalVaultAddress; -} - -async function listMarketPublicKeys( - connection, -) { - const accounts = await connection.getProgramAccounts(PROGRAM_ID, { - filters: [ - { - memcmp: { - offset: 0, - bytes: '8K9hj5OfcUM=', - encoding: 'base64', - }, - }, - ], - }); - - return accounts.map((a) => a.pubkey); -} - -async function tvl() { - const connection = getConnection(); - const marketPks = await listMarketPublicKeys(connection); - - const vaultAccounts = []; - let globalAccounts = []; - for (const pk of marketPks) { - const [buffer, _slot] = await connection - .getAccountInfoAndContext(pk) - .then( - ( - getAccountInfoAndContext, - ) => { - return [ - getAccountInfoAndContext.value?.data, - getAccountInfoAndContext.context.slot, - ]; - }, - ); - - let offset = 16; - const baseMint = new PublicKey(buffer.subarray(offset, offset + 32)); - const quoteMint = new PublicKey(buffer.subarray(offset + 32, offset + 32 + 32)); - - const baseVaultPk = getVaultAddress(pk, baseMint); - const quoteVaultPk = getVaultAddress(pk, quoteMint); - vaultAccounts.push(baseVaultPk); - vaultAccounts.push(quoteVaultPk); - - const baseGlobalPk = getGlobalVaultAddress(baseMint); - const quoteGlobalPk = getGlobalVaultAddress(quoteMint); - globalAccounts.push(baseGlobalPk); - globalAccounts.push(quoteGlobalPk); - } - - const tokenAccounts = vaultAccounts.concat(globalAccounts); - return sumTokens2({ tokenAccounts, allowError: true }) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - solana: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/manifest/index.js b/projects/manifest/index.js deleted file mode 100644 index 84bf5197508..00000000000 --- a/projects/manifest/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0x200a433086C37eB55bc4CD31f8195831052a67C6"; -module.exports = ohmTvl(treasuryAddress, [ - ["0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f", false], // sOHM - ["0x89c4d11dfd5868d847ca26c8b1caa9c25c712cef", true], // MNFST-OHM - [ADDRESSES.ethereum.WETH, false] // WETH -], "ethereum", "0x9c9022c6a2e1ed9f3110e177763123c4400d5eb6", "0x21585bbcd5bdc3f5737620cf0db2e51978cf60ac") diff --git a/projects/manifesto/index.js b/projects/manifesto/index.js deleted file mode 100644 index a5817ea1986..00000000000 --- a/projects/manifesto/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unknownTokens"); -const { deadFrom } = require('../mosquitos-finance'); -const lps = [ - '0xF65af1E61D7aC87d73E347D17E369Dc2118E9517', -] - -module.exports = { - hallmarks: [ - [1676332800, "Rug Pull"] - ], - deadFrom: 1676332800, - misrepresentedTokens: true, - canto: { - tvl: sumTokensExport({ - owner: '0x20636bd0E15be0e1faADE1b27f568e642f59814E', - tokens: [ - ADDRESSES.canto.NOTE, - ADDRESSES.canto.WCANTO, - ADDRESSES.functionx.PURSE, - ADDRESSES.functionx.WFX, - ...lps, - ], - useDefaultCoreAssets: true, - }), - staking: sumTokensExport({ - owner: '0xbE718E9431c4E25F4Af710f085a475074e24D7Cd', - tokens: [ - '0xfC65316f26949B268f82519256C159B23ACC938F', - ], - lps, - useDefaultCoreAssets: true, - }), - } -} diff --git a/projects/mansory/index.js b/projects/mansory/index.js deleted file mode 100644 index 13b29d83d65..00000000000 --- a/projects/mansory/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getTokenSupplies, sumTokens2 } = require("../helper/solana") - -const MNSRY_SOL = '1xdtu7y3LkkrVCAbm5KGKfYzq1qgKhxxk5AaJBqpump' -const owner_OFT = '8nULvjDGGykWnwd6mogRm9i7Y5D5M47S2YNwZrPf8bUN' -const MNSRY_BSC = '0x0fCfE33b46E5B21e5E96B722d4c85510198F9255' - -async function getCirculatingSupply({ token, exclude = [] }) { - const [walletBalances, supplies] = await Promise.all([ - sumTokens2({ owners: exclude, tokens: [token] }), - getTokenSupplies([token]), - ]) - - const totalSupply = supplies[token] - const excluded = walletBalances['solana:' + token] - - return totalSupply - excluded -} - -const sol_tvl = async (api) => { - const supply = await getCirculatingSupply({ token: MNSRY_SOL, exclude: [owner_OFT] }) - api.add(MNSRY_SOL, supply) -} - -const bsc_tvl = async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: MNSRY_BSC }) - api.add(MNSRY_BSC, supply) -} - -module.exports = { - solana: { tvl: sol_tvl }, - bsc: { tvl: bsc_tvl } -} \ No newline at end of file diff --git a/projects/manta-atlantic-stake/api.js b/projects/manta-atlantic-stake/api.js deleted file mode 100644 index 5166f8c1c09..00000000000 --- a/projects/manta-atlantic-stake/api.js +++ /dev/null @@ -1,27 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); -const BigNumber = require("bignumber.js"); - -const MANTA_TOKEN_DECIMALS = 18; - -function formatNumber(text) { - return String(text ?? "").replace(/,/g, ""); -} - -async function tvl() { - const polkadotProvider = new WsProvider("wss://ws.archive.manta.systems"); - const polkadotApi = await ApiPromise.create({ provider: polkadotProvider }); - - const pools = await polkadotApi.query.parachainStaking.candidatePool(); - const result = pools.toHuman().reduce((total, pool) => { - return total.plus(formatNumber(pool.amount)); - }, new BigNumber(0)); - return { - "manta-network": result.div(10 ** MANTA_TOKEN_DECIMALS).toFixed(4), - }; -} - -module.exports = { - timetravel: false, - methodology: "Manta Atlantic staking platform", - manta_atlantic: { tvl }, -}; diff --git a/projects/manta-atlantic-stake/index.js b/projects/manta-atlantic-stake/index.js deleted file mode 100644 index e6471b2ff0b..00000000000 --- a/projects/manta-atlantic-stake/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require("../helper/heroku-api"); - -module.exports = { - timetravel: false, - ...getExports("manta-atlantic-stake", ["manta_atlantic"]), -}; diff --git a/projects/manta-cedefi-stake/index.js b/projects/manta-cedefi-stake/index.js deleted file mode 100644 index 103f0e0a58e..00000000000 --- a/projects/manta-cedefi-stake/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") - -const tokens = [ - "0x1468177DbCb2a772F3d182d2F1358d442B553089", // "mBTC" - "0xACCBC418a994a27a75644d8d591afC22FaBA594e", // "mETH" - "0x649d4524897cE85A864DC2a2D5A11Adb3044f44a", // "mUSD" -] -const mTokenStakeContract = "0x1B9bcc6644CC9b5e1F89aBaAb66904F5a562d4a1" - -module.exports = { - manta: { - tvl: sumTokensExport({ owner: mTokenStakeContract, tokens }), - }, -} \ No newline at end of file diff --git a/projects/manta-cedefi/index.js b/projects/manta-cedefi/index.js deleted file mode 100644 index ea9ca86f2b0..00000000000 --- a/projects/manta-cedefi/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const tokens = [ - { - name: "mBTC", - address: "0x1468177DbCb2a772F3d182d2F1358d442B553089", - decimals: 18, - coinGeckoId: "bitcoin", - }, - { - name: "mETH", - address: "0xACCBC418a994a27a75644d8d591afC22FaBA594e", - decimals: 18, - coinGeckoId: "ethereum", - }, - { - name: "mUSD", - address: "0x649d4524897cE85A864DC2a2D5A11Adb3044f44a", - decimals: 18, - coinGeckoId: "tether", - }, -]; - -async function tvl(api) { - const balances = await api.multiCall({ - abi: "erc20:totalSupply", - calls: tokens.map((item) => item.address), - }); - tokens.forEach((token, index) => { - api.addCGToken(token.coinGeckoId, balances[index] / 10 ** tokens[index].decimals); - }) -} - -module.exports = { - manta: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/manta-myield/index.js b/projects/manta-myield/index.js deleted file mode 100644 index 103f0e0a58e..00000000000 --- a/projects/manta-myield/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") - -const tokens = [ - "0x1468177DbCb2a772F3d182d2F1358d442B553089", // "mBTC" - "0xACCBC418a994a27a75644d8d591afC22FaBA594e", // "mETH" - "0x649d4524897cE85A864DC2a2D5A11Adb3044f44a", // "mUSD" -] -const mTokenStakeContract = "0x1B9bcc6644CC9b5e1F89aBaAb66904F5a562d4a1" - -module.exports = { - manta: { - tvl: sumTokensExport({ owner: mTokenStakeContract, tokens }), - }, -} \ No newline at end of file diff --git a/projects/manta-pacific/index.js b/projects/manta-pacific/index.js deleted file mode 100644 index a86f8a3f754..00000000000 --- a/projects/manta-pacific/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x3b95bc951ee0f553ba487327278cac44f29715e5", - "0x9168765EE952de7C6f8fC6FaD5Ec209B960b7622", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/mantadex/api.js b/projects/mantadex/api.js deleted file mode 100644 index b029167669e..00000000000 --- a/projects/mantadex/api.js +++ /dev/null @@ -1,110 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); -const BigNumber = require("bignumber.js"); -const { getConfig } = require("../helper/cache"); - -const nativeTokenId = "1"; - -function formatNumber(text) { - return String(text ?? "").replace(/,/g, ""); -} - -function formatAssetIndex(assetId) { - const formattedAssetId = formatNumber(assetId); - return formattedAssetId === "0" ? nativeTokenId : formattedAssetId; -} - -async function getCoinGeckoTokenData() { - const data = await getConfig('mantadex', - "https://raw.githubusercontent.com/Manta-Network/manta-chaindata/main/tokens.json" - ); - const result = data.reduce( - (total, item) => { - const chain = item.id.split("-")[0]; - if (total[chain]) { - total[chain][item.logoKey] = item.coinGeckoKey; - } - return total; - }, - { manta: {}, calamari: {} } - ); - return result; -} - -async function getTokenInfos(apiPromise) { - const tokenListOnChain = ( - await apiPromise.query.assetManager.assetIdMetadata.entries() - ).map(([key, value]) => [key.toHuman(), value.toHuman()]); - - return tokenListOnChain.reduce( - (total, item) => { - const assetId = parseInt(formatNumber(item[0][0]), 10); - const symbol = item[1].metadata.symbol; - const decimals = parseInt(formatNumber(item[1].metadata.decimals), 10); - total.decimals[symbol] = decimals; - total.assetIds[assetId] = symbol; - return total; - }, - { decimals: {}, assetIds: {} } - ); -} - -async function getTokenBalance(apiPromise, account, assetIndex) { - if (assetIndex === nativeTokenId) { - const response = await apiPromise.query.system.account(account); - return formatNumber(response.toHuman().data.free); - } else { - const response = await apiPromise.query.assets.account(assetIndex, account); - return formatNumber(response.toHuman().balance); - } -} - -async function tvl() { - const coinGeckoTokenData = (await getCoinGeckoTokenData()).manta; - - const polkadotProvider = new WsProvider("wss://ws.archive.manta.systems"); - const polkadotApi = await ApiPromise.create({ provider: polkadotProvider }); - - const { decimals, assetIds } = await getTokenInfos(polkadotApi); - - const polkadotPools = - await polkadotApi.query.zenlinkProtocol.pairStatuses.entries(); - - const result = {}; - await Promise.all( - polkadotPools.map(async (pool) => { - const tokens = pool[0].toHuman()[0]; - const pairAccount = pool[1].toHuman().Trading.pairAccount; - const token0Index = formatAssetIndex(tokens[0].assetIndex); - const token1Index = formatAssetIndex(tokens[1].assetIndex); - const token0Balance = await getTokenBalance( - polkadotApi, - pairAccount, - token0Index - ); - const token1Balance = await getTokenBalance( - polkadotApi, - pairAccount, - token1Index - ); - result[assetIds[token0Index]] = ( - result[assetIds[token0Index]] ?? new BigNumber(0) - ).plus(token0Balance); - result[assetIds[token1Index]] = ( - result[assetIds[token1Index]] ?? new BigNumber(0) - ).plus(token1Balance); - }) - ); - - return Object.keys(result).reduce((total, symbol) => { - total[coinGeckoTokenData[symbol]] = result[symbol] - .div(10 ** decimals[symbol]) - .toFixed(4); - return total; - }, {}); -} - -module.exports = { - timetravel: false, - methodology: "Liquidity Pools from MantaDEX", - manta_atlantic: { tvl }, -}; diff --git a/projects/mantadex/index.js b/projects/mantadex/index.js deleted file mode 100644 index cb5765ee33d..00000000000 --- a/projects/mantadex/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require("../helper/heroku-api"); - -module.exports = { - timetravel: false, - ...getExports("mantadex", ["manta_atlantic"]), -}; diff --git a/projects/mantaswap/index.js b/projects/mantaswap/index.js deleted file mode 100644 index 002d768bdb4..00000000000 --- a/projects/mantaswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - hallmarks: [ - [1696809600, "Rug Pull"] - ], - misrepresentedTokens: true, - manta: { tvl: getUniTVL({ factory: '0x60Ad4aB0659C3b83320f3D43d3797553b55D52c6', useDefaultCoreAssets: true, }), }, -} diff --git a/projects/mantle-meth/index.js b/projects/mantle-meth/index.js deleted file mode 100644 index e90037cf51a..00000000000 --- a/projects/mantle-meth/index.js +++ /dev/null @@ -1,15 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') - -const token = ADDRESSES.ethereum.METH - -module.exports = { - ethereum: { - tvl: async (api) => { - const stakingContract = await api.call({ abi: 'address:stakingContract', target: token}) - const bal = await api.call({ abi: 'uint256:totalControlled', target: stakingContract}) - api.add(ADDRESSES.null, bal) - return api.getBalances() - } - }, -} \ No newline at end of file diff --git a/projects/mantle-restaking/index.js b/projects/mantle-restaking/index.js deleted file mode 100644 index 688a3b6cc1b..00000000000 --- a/projects/mantle-restaking/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const targets = [ - // old deployments - '0x6DfbE3A1a0e835C125EEBb7712Fffc36c4D93b25', // eigenPos1 - '0x021180A06Aa65A7B5fF891b5C146FbDaFC06e2DA', // eigenPos2 - '0x919531146f9a25dfc161d5ab23b117feae2c1d36', // symbioticPos - - // new deployments - '0xCaC15044a1F67238D761Aa4C7650DaB59cEF849D', // eigenPos1 - '0x0b5d15445b715bf117ba0482b7a9f772af46d93a', // eigenPos2 - '0x52EA8E95378d01B0aaD3B034Ca0656b0F0cc21A2', // karakPos - '0x5bb8e5e8602b71b182e0Efe256896a931489A135', // symbioticPos -] - -const mETH = ADDRESSES.ethereum.METH -const boringVault = '0x33272D40b247c4cd9C646582C9bbAD44e85D4fE4' -const delayedWithdraw = '0x12be34be067ebd201f6eaf78a861d90b2a66b113' - -const abi = "function getUnderlyings() view returns (address[] assets, uint256[] amounts)" - -const tvl = async (api) => { - const allocateds = await api.multiCall({ calls: targets, abi }) - allocateds.forEach(({ assets: [asset], amounts: [amount] }) => api.add(asset, amount)); - return api.sumTokens({ tokens: [mETH], owners: [boringVault, delayedWithdraw] }) -} - -module.exports = { - doublecounted: true, - methodology: 'TVL corresponds to the sum of mETH deposited across various restaking protocols + the funds pending withdrawal or deposit', - ethereum: { tvl } -} diff --git a/projects/mantle/index.js b/projects/mantle/index.js deleted file mode 100644 index c212affb3c2..00000000000 --- a/projects/mantle/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: ["0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012"], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/mantleswap/index.js b/projects/mantleswap/index.js deleted file mode 100644 index f73010ae8b5..00000000000 --- a/projects/mantleswap/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { transformDexBalances } = require('../helper/portedTokens') - - -module.exports = { - misrepresentedTokens: true, - mantle: { - tvl - } -} - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0x5c84e5d27fc7575D002fe98c5A1791Ac3ce6fD2f', - topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], - eventAbi: 'event PairCreated(address indexed token0, address indexed token1, address pair, uint256 )', - onlyArgs: true, - fromBlock: 5964, - }) - const tok0Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: logs.map(i => ({ target: i.token0, params: i.pair}))}) - const tok1Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: logs.map(i => ({ target: i.token1, params: i.pair}))}) - return transformDexBalances({ chain: api.chain, data: logs.map((log, i) => ({ - token0: log.token0, - token0Bal: tok0Bals[i], - token1: log.token1, - token1Bal: tok1Bals[i], - }))}) - -} \ No newline at end of file diff --git a/projects/mantra-amm/index.js b/projects/mantra-amm/index.js deleted file mode 100644 index 8ab368def4a..00000000000 --- a/projects/mantra-amm/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); - -const chain = 'mantra' -const mantraPoolManager = 'mantra1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjqagspfm' - -/** - * Get all pools in the DEX - * @returns {Promise}, total_share: {denom: string, amount: string}}>>} - */ -async function getDexPools() { - const response = await queryContract({ - chain, - contract: mantraPoolManager, - data: { - pools: {} - } - }) - return response.pools -} - -async function tvl(api) { - const allPools = await getDexPools() - allPools.forEach(pool => { - pool.pool_info.assets.forEach(asset => { - api.add(asset.denom, asset.amount) - }) - }) -} - -module.exports = { - timetravel: false, - methodology: "Counts the liquidity on MANTRA Chain AMM pools", - mantra: { - tvl - } -} \ No newline at end of file diff --git a/projects/mantradao.js b/projects/mantradao.js deleted file mode 100644 index 2c9dd4e02d2..00000000000 --- a/projects/mantradao.js +++ /dev/null @@ -1,83 +0,0 @@ -const { sumTokensExport } = require('./helper/unwrapLPs') -const { compoundExports2 } = require("./helper/compound"); - -module.exports = { - ethereum: compoundExports2({ comptroller: "0x606246e9EF6C70DCb6CEE42136cd06D127E2B7C7", cether: '0x4F905f75F5576228eD2D0EA508Fb0c32a0696090', blacklistedTokens: ['0x3593d125a4f7849a1b059e64f4517a86dd60c95d'] }) -} - -const config = { - ethereum: { - staking: [ - ["0x3593D125a4f7849a1B059E64F4517A86Dd60c95d", "0x9E15Ad979919bB4db331Bfe864475Ae3BFFebA93"], - ["0x3593D125a4f7849a1B059E64F4517A86Dd60c95d", "0xa01892d97e9c8290c2c225fb0b756bfe26bc9802"], - ["0x3593D125a4f7849a1B059E64F4517A86Dd60c95d", "0x04493F715B08DeA8af77814d600bEf22f1f0C63B"], - ["0x3593D125a4f7849a1B059E64F4517A86Dd60c95d", "0x1eA973A69643091410721C7D91aA5499CF8D2Cb7"], - ["0xaf9f549774ecedbd0966c52f250acc548d3f36e5", "0x456DF576962289256A92290C9E48EE116B8Cb413"], - ["0xdef1da03061ddd2a5ef6c59220c135dec623116d", "0xdbc34d084393ed8d7b750FfCCea5A139EC7b9349"], - ["0x7eaF9C89037e4814DC0d9952Ac7F888C784548DB", "0x4Cd4c0eEDb2bC21f4e280d0Fe4C45B17430F94A9"], - ["0x8a40c222996f9F3431f63Bf80244C36822060f12", "0x6BcDC61A7A6d86f7b7B66d461b7eF7fa268571a0"], - ["0x4eed0fa8de12d5a86517f214c2f11586ba2ed88d", "0x1dfdb0fb85402dc7f8d72d92ada8fbbb3ffc8633"], - ["0x5eaa69b29f99c84fe5de8200340b4e9b4ab38eac", "0x2d0ea72db9f9a63f4b185eab1ca74137d808ebfa"], - ["0x67b6d479c7bb412c54e03dca8e1bc6740ce6b99c", "0x6ae05b5db520011bf76645ebb4d6a697e5b3774b"], - ["0x8b0e42f366ba502d787bb134478adfae966c8798", "0x6f0db359309CAD297D2e7952a4F5f081bDC1e373"], - ["0x8b0E42F366bA502d787BB134478aDfAE966C8798", "0xb96e42c0de658ca26048b0e200f9a1e05ad89e0f"], - ["0xd2dda223b2617cb616c1580db421e4cfae6a8a85", "0x39621A555554A7FF77F2b64185c53E04C90cD540"], - ["0x4eED0fa8dE12D5a86517f214C2f11586Ba2ED88D", "0xa571309B1267676568Bf9f155606a08790896Fe2"], - ["0x93C9175E26F57d2888c7Df8B470C9eeA5C0b0A93", "0xb19b94d53D362CDfC7360C951a85ca2c1d5400BA"], - ], - pool2: [ - ["0x2d9fd51e896ff0352cb6d697d13d04c2cb85ca83", "0x5f81a986611C600a3656d9adc202283186C6121D"], - ["0x2d9fd51e896ff0352cb6d697d13d04c2cb85ca83", "0xfc8e3b55897d8cef791451bbe69b204b9c58fc8a"], - ["0xe46935ae80e05cdebd4a4008b6ccaa36d2845370", "0x91fe14df53eae3a87e310ec6edcdd2d775e1a23f"], - ["0x6d9d2427cfa49e39b4667c4c3f627e56ae586f37", "0x55e0F2cE66Fa8C86ef478fa47bA0bE978eFC2647"], - ["0x1f07f8e712659087914b96db4d6f6e4fee32285e", "0xb12f0CbcC89457d44323139e6Bb0526Fd82f12F2"], - ["0x1f07f8e712659087914b96db4d6f6e4fee32285e", "0x18Ba986ED3128fc7E3E86a09E902436e900a899c"], - ["0x2a182e532a379cb2c7f1b34ce3f76f3f7d3596f7", "0x6406788d1CD4fdD823ef607A924c00a4244a841d"], - ["0x4fc47579ecf6aa76677ee142b6b75faf9eeafba8", "0xe2a80A76B084B51CFAe5B2C3e0FF5232e0408201"], - ["0xc62bf2c79f34ff24e2f97982af4f064161ed8949", "0xFF964d0bf9f81c401932A6B975EAE54129712eE5"], - ] - }, - bsc: { - staking: [ - ["0x651cd665bd558175a956fb3d72206ea08eb3df5b", "0x7dd79e93dba1d677574d0b5e99721f2e4b45e297"], - ["0x96058f8c3e16576d9bd68766f3836d9a33158f89", "0x004c0908518e19aa8b27a55c171564097fa3c354"], - ["0x4518231a8fdf6ac553b9bbd51bbb86825b583263", "0xF0185520Cc773502f0f208433ca178f2f57157A9"], - ["0xf78d2e7936f5fe18308a3b2951a93b6c4a41f5e2", "0xEfc2d65302eb6345A7C0e212B791e0d45C2C3c91"], - ["0xf78d2e7936f5fe18308a3b2951a93b6c4a41f5e2", "0x41A32C610FA23dEa9E85D471CAD66ea828853153"], - ["0xf78d2e7936f5fe18308a3b2951a93b6c4a41f5e2", "0xEf2663d96e48a543D9EA96A39869aB54f7F5D872"], - ], - pool2: [ - ["0xC309a6d2F1537922E06f15aA2eb21CaA1b2eEDb6", "0xF25897a7EDf1Dfa9C65f5DB7Ec4Bad868873805B"], - ["0x49837a48abde7c525bdc86d9acba39f739cbe22c", "0xcbf42ace1dbd895ffdcabc1b841488542626014d"], - ["0x0b49580278b403ca13055bf4d81b6b7aa85fd8b9", "0x92fCe8AfFB2A68d418BaDF8E360E0CDe06c39356"], - ["0x538e61bd3258304e9970f4f2db37a217f60436e1", "0x1E8BC897bf03ebac570Df7e5526561f8a42eCe05"], - ["0xb8b4383b49d451bbea63bc4421466e1086da6f18", "0xD862866599CA681c492492E1B7B9aB80066f2FaC"], - ["0x5a26eb7c9c72140d01039eb172dcb8ec98d071bd", "0x4F905f75F5576228eD2D0EA508Fb0c32a0696090"], - ["0x5548bd47293171d3bc1621edccd953bcc9b814cb", "0x5B4463bBD7B2E870601e91161e0F1F7f84CDE214"], - ["0x560b96f81a2190ff6ac84ebfd17788bab3679cbc", "0x398a5FEE22E0dEb67dA1bD15FA4841b6Aa64c471"], - ["0xB62c57Bda4C126E21A726e3D28734bfb1151231e", "0x3ba3E2f3cACcDbE3C56D3046FFe859cc9deE08a0"], - ] - }, - polygon: { - staking: [ - ["0xc3ec80343d2bae2f8e680fdadde7c17e71e114ea", "0xCdD0f77A2A158B0C7cFe38d00443E9A4731d6ea6"], - ["0xc3ec80343d2bae2f8e680fdadde7c17e71e114ea", "0xD77F495Ce60cd9414F99670bEc8657A021e34C83"], - ["0xc3ec80343d2bae2f8e680fdadde7c17e71e114ea", "0x427756E0BBb792f24018E670D570b1b147DbF1F8"], - ["0x3f6b3595ecf70735d3f48d69b09c4e4506db3f47", "0xd1ecDC553651daB068486d9c4d066eCDC614416e"], - ], - pool2: [ - ["0xff2bbcb399ad50bbd06debadd47d290933ae1038", "0xCBf42Ace1dBD895FFDCaBC1b841488542626014d"], - ["0x1dF661fC4319415a2f990bd5F49D5cA70EFDee1C", "0x11c70CAA910647d820bD014d676Dcd97EDD64A99"], - ] - }, -} - -Object.keys(config).forEach(chain => { - const { staking = [], pool2 = [], } = config[chain] - if (!module.exports[chain]) - module.exports[chain] = {} - // module.exports.deadFrom='2024-07-09' - module.exports[chain].staking = sumTokensExport({ tokensAndOwners: staking }) - module.exports[chain].pool2 = sumTokensExport({ tokensAndOwners: pool2, resolveLP: true, }) - module.exports.ethereum.borrowed = () => ({}) // bad debt -}) \ No newline at end of file diff --git a/projects/manxswap/index.js b/projects/manxswap/index.js deleted file mode 100644 index 6366c787fd7..00000000000 --- a/projects/manxswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - manta: { - tvl: getUniTVL({ - factory: "0xFF073cEd2867F7085eC058f5C5Bd6Cf0d9B1Af8f", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/maple-rwa/index.js b/projects/maple-rwa/index.js deleted file mode 100644 index 4e4cd4b13f4..00000000000 --- a/projects/maple-rwa/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Maple Finance TVL & Borrowed Amounts Adapter - * - * This adapter fetches data from Maple Finance's GraphQL API to calculate: - * - Total Value Locked (TVL): Sum of all collateral values - * - Total Borrowed: Sum of all loan values - * - * References: - * - Maple Finance API Docs: https://studio.apollographql.com/public/maple-api/variant/mainnet/home - * - */ - -const axios = require('axios'); - -const ENDPOINT = 'https://api.maple.finance/v2/graphql'; -const LOANS_QUERY = ` - query getNativeLoansSnapshot($timestamp: Float!) { - nativeLoansSnapshot(timestamp: $timestamp) { - loanId - loanAsset - loanAmount - collateralAsset - collateralAmount - collateralPrice - collateralValueUsd - loanAssetPrice - loanValueUsd - } - } - `; - -/** - * Fetches raw loan data from Maple Finance's GraphQL API - * @param {number} timestamp Unix timestamp in seconds - * @returns {Promise>} Array of loan objects - */ -const fetchLoans = async (timestamp) => { - const timestampMs = timestamp * 1000; - - const payload = { - query: LOANS_QUERY, - variables: { timestamp: timestampMs }, - headers: { "Content-Type": "application/json" } - }; - - const response = await axios.post(ENDPOINT, payload); - - return response.data.data.nativeLoansSnapshot; -} - -/** - * Calculates total value based on specified property and returns API response format - * @param {number} timestamp Unix timestamp in seconds - * @param {string} propertyName Property to sum ('loanValueUsd' or 'collateralValueUsd') - * @returns {Promise} Total value in USD - */ -const getTotal = async (api, propertyName) => { - const timestamp = api.timestamp - const loans = await fetchLoans(timestamp); - const total = loans.reduce((sum, loan) => sum + Number(loan[propertyName]), 0); - api.addUSDValue(total) -} - -module.exports = { - ethereum: { - tvl: async (api) => await getTotal(api, 'collateralValueUsd'), - borrowed: async (api) => await getTotal(api, 'loanValueUsd'), - }, -}; diff --git a/projects/maple/index.js b/projects/maple/index.js deleted file mode 100644 index 7be9e41a67b..00000000000 --- a/projects/maple/index.js +++ /dev/null @@ -1,105 +0,0 @@ -/** - * Maple Finance TVL & Borrowed Amounts Adapter - * - * This adapter fetches data from Maple Finance's GraphQL API to calculate: - * - Total Value Locked (TVL): Sum of all pool cash, cash in DeFi strategies, and collateral - * - Total Borrowed: Sum of all principal out (active loans) - * - Total Staking: Sum of all staked assets in stSYRUP ERC-4626 vault - * - * - * References: - * - Maple Finance API Docs: https://studio.apollographql.com/public/maple-api/variant/mainnet/home - * - */ - -const ADDRESSES = require('../helper/coreAssets.json'); -const axios = require('axios'); - -const stSYRUP = "0xc7E8b36E0766D9B04c93De68A9D47dD11f260B45"; - -const POOL_V2_START_BLOCK = 16186377; -const STAKING_START_BLOCK = 20735662; - -const ENDPOINT = "https://api.maple.finance/v2/graphql"; -const POOLS_QUERY = ` - query example($block: Block_height) { - poolV2S(block: $block) { - id - name - collateralValue - principalOut - strategiesDeployed - tvl - assets - asset { - symbol - } - poolMeta { - state - asset - poolCollaterals { - addresses - assetAmount - } - } - } - } -`; - -/** - * Fetches pool data from Maple Finance's GraphQL API - * @param {number} block Ethereum block number - * @returns {Promise}}>>} Array of pool objects - */ -const getPools = async (block) => { - const payload = { - query: POOLS_QUERY, - variables: { block: { number: block - 10 } }, - headers: { "Content-Type": "application/json" } - }; - - const { data } = await axios.post(ENDPOINT, payload); - return data.data.poolV2S; -}; - -/** - * Calculates total value based on specified property and returns API response format - * @param {Object} api DefiLlama SDK api object - * @param {string} key Property to sum - * @returns {Promise<{usd: number}>} Total value in USD - */ -const processPools = async (api, key) => { - const block = await api.getBlock(); - - if (block < POOL_V2_START_BLOCK) return console.error('Error: Impossible to backfill - The queried block is earlier than the deployment block of poolsV2'); - const pools = await getPools(block); - - pools.forEach((pool) => { - const { id, name, asset: { symbol }, assets, collateralValue, principalOut, strategiesDeployed, poolMeta } = pool - const token = ADDRESSES.ethereum[symbol] ?? null - if (!token) return; - const balance = key === "collateralValue" ? Number(collateralValue) + Number(assets) + Number(strategiesDeployed) : Number(principalOut) - api.add(token, balance) - }) -}; - -/** - * Calculates total staked value in Maple's stSYRUP ERC-4626 vault - * @param {Object} api DefiLlama SDK api object - * @returns {Promise} Total staked value in USD - */ -const staking = async (api) => { - const block = await api.getBlock() - if (block < STAKING_START_BLOCK) return; - return api.erc4626Sum({ calls: [stSYRUP], tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets' }) -} - -module.exports = { - hallmarks: [[1670976000, 'V2 Deployment']], - solana: { tvl: () => ({})}, - ethereum: { - tvl: async (api) => processPools(api, "collateralValue"), - borrowed: async (api) => processPools(api), - staking - } -}; diff --git a/projects/mapledefi/index.js b/projects/mapledefi/index.js deleted file mode 100644 index 4740edf28e5..00000000000 --- a/projects/mapledefi/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0x0283527f549Aef5e6fb91cC30eB1FC8c88545494"; -const token = "0x8853759fEC86302F4291F001835E2383538F837A"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/mare-finance-v2/index.js b/projects/mare-finance-v2/index.js deleted file mode 100644 index a6807bbd882..00000000000 --- a/projects/mare-finance-v2/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { compoundExports } = require("../helper/compound"); -const { staking } = require("../helper/staking"); - -const unitroller = "0xFcD7D41D5cfF03C7f6D573c9732B0506C72f5C72"; - -module.exports = { - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - kava: { - ...compoundExports(unitroller), - }, -} \ No newline at end of file diff --git a/projects/mare-finance/index.js b/projects/mare-finance/index.js deleted file mode 100644 index 77b498d2320..00000000000 --- a/projects/mare-finance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { compoundExports } = require("../helper/compound"); -const { staking } = require("../helper/staking"); - -const unitroller = "0x4804357AcE69330524ceb18F2A647c3c162E1F95"; - -module.exports = { - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - deadFrom: '2023-07-08', - kava: { - ...compoundExports(unitroller), - staking: staking(['0x2c4A1f47c3E15F468399A87c4B41ec0d19297772', '0x194AAd54F363D28aDEaE53A7957d63B9BCf8a6b2'], '0xd86C8d4279CCaFbec840c782BcC50D201f277419') - }, -} - -module.exports.kava.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/margin-zero/index.js b/projects/margin-zero/index.js deleted file mode 100644 index ee3631e6f6e..00000000000 --- a/projects/margin-zero/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { cachedGraphQuery } = require("../helper/cache"); -const { addUniV3LikePosition } = require('../helper/unwrapLPs'); - -const chainConfigs = -{ - sonic: { - subgraphUrl: "https://api.goldsky.com/api/public/project_cm58q8wq01kbk01ts09lc52kp/subgraphs/mz-subgraph/main/gn", - }, -} - -const LiquidityRangesQuery = `query getLiquidities($lastId: String!) { - liquidityRanges(first:100 where: {and: [{id_gt: $lastId}, { liquidity_gt: "100" } ]}) { - id pool hook liquidity tickLower tickUpper - } -}` - -const slot0Abi = - "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)"; - -async function tvl(api) { - const config = chainConfigs[api.chain] - - const liquidityRanges = await cachedGraphQuery('marign-zero/tvl', config.subgraphUrl, LiquidityRangesQuery, { - api, - fetchById: true, - useBlock: true, - }) - - const pools = Array.from(new Set(liquidityRanges.map(({ pool }) => pool.toLowerCase()))) - const poolIndexMap = {} - pools.forEach((pool, index) => poolIndexMap[pool] = index) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - const slots = await api.multiCall({ abi: slot0Abi, calls: pools }) - - for (const { liquidity, tickLower, tickUpper, pool } of liquidityRanges) { - const idx = poolIndexMap[pool.toLowerCase()] - - addUniV3LikePosition({ api, token0: token0s[idx], token1: token1s[idx], tick: slots[idx].tick, liquidity, tickUpper, tickLower, }) - } - -} - -module.exports = { - methodology: "TVL is calculated by summing the value of all tokens in Margin Zero liquidity positions across supported chains", - doublecounted: true, - sonic: { - tvl, - } -}; diff --git a/projects/marginal/index.js b/projects/marginal/index.js deleted file mode 100644 index 8516807bad8..00000000000 --- a/projects/marginal/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - base: { factory: '0x407fA8029852A8386a907287018CEAFd7242C621', fromBlock: 17016522 }, - ethereum: { factory: '0x95D95C41436C15b50217Bf1C0f810536AD181C13', fromBlock: 20297876 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, uint24 maintenance, address indexed oracle, address pool)', fromBlock, }) - const ownerTokens = logs.map(log => [[log.token0, log.token1], log.pool]) - return api.sumTokens({ ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/margined-protocol/index.js b/projects/margined-protocol/index.js deleted file mode 100644 index 59d19d9d18f..00000000000 --- a/projects/margined-protocol/index.js +++ /dev/null @@ -1,48 +0,0 @@ - -const { queryContract } = require('../helper/chain/cosmos') - -const osmosisVaults = { - stOSMO: "osmo16s3sxs5886p42kteunp6370pken2n5ukzszz0trkr39epqtawn2qk4r9l5", - stTIA: "osmo1q3w9kedgtc8sdh7xlcr77ydv3qu7fs2e3q6xznysp2lrdfyz9xyqv26yqv", - ampOSMO: "osmo1cztgw4e467vjljd0s2flz8asu3x3wg9q0ttga9t6kzmpyaauxxrs2gjshq", - bOSMO: "osmo159f7axyc32cyfgzx0gs9r98jwpgutj5qz4ns97xvu7nw3xzpavzsg2uxr3", - qOSMO: "osmo18vk0rsu4qwzx74g9alu2f7x5zs99sluwkuh5wp70yed2ne4pmutqf9lvdu", - usdcaxlGrid: "osmo1qngwlgzt0r3fdg6zgln5wa6mr5c7t6fek3qqgxesujjak5ds747sy6qu2f", - // usdtGrid: "osmo1cj8tzmvun6urr0djrax7v92jyk86gnp8hsep0hacf83quvknq5lsutucjj", - OSMORedemption: "osmo15fqmdl8lfl9h0qflljd63ufw9j2m7xmsk3hu5vsn8xpta4hk5chqt7mddc", - TIARedemption: "osmo1reyz7pwu7y9e7lmzqg6j4h7jcv32du7n7jhnk2lz93a9lxr56ess2qtgzl", - ATOMRedemption: "osmo1hvl5kj4xzdj4udxjv2dzk2zfqhzkd9afqygwq3t84tn53e0250zqrltj48", - DYDXRedemption: "osmo1grs74ux62lukjdlfs9ll4myyulcyjcd4uzwpw3cgnzdygtsspp2se2ense", - // BTCUSDC: "osmo193kjx80ag4tck2enuxcprxnrcusemmh5mun5k87c96d7swz6y2dqf39rxe", -} - -const neutronVaults = { - ATOMFund: "neutron1puedrclm6rn33x3zv66xg6m23qcdagayqua6jj2wqzvfznlqef8qe53wr2", - NTRNStructured: "neutron13h4jzme5880knnc23xvwu9gytynnxu5cc0fek6fndmjyctzznj9sd5yhhy", - ATOMdATOM: "neutron1f99ujxefjr4jqmskc7hvg09am6pdq2j2c5049xwl0de4cavc4rfsl866y0", - wBTCUSDC: "neutron17fyzkafg4scrd6xu0sp9llrl6hazegza7yer4erlea0kvk30yxsqk2xqfd", - NTRNUSDC: "neutron1t0fl9k43g86sv60ghx9vtwed9rpgtf49rxzm05ff477j23h52c6s0urdc7", - TIAUSDC: "neutron1wv8pl7tsatzx6n9yaqfksvu5y0x7j50g6mhy636udwfn3vyqp0hsu7g8yk", - ATOMUSDC: "neutron1krqwpk0kmphl93kykavp2fnr88g5rnrpk40c34a55yrl00tmfz0s99ewc6", - TIAFund: "neutron14q3umuuvyv6mndd5acuc3n8u5mlvrrq3kkzrputu3rkhz8nd2uzqmfl4v6", -} - -const config = { - osmosis: osmosisVaults, - neutron: neutronVaults, -} - -module.exports = { - methodology: 'Total TVL on vaults', -} - -Object.keys(config).forEach(chain => module.exports[chain] = { tvl }) - -async function tvl(api) { - const vaults = config[api.chain] - for (const contract of Object.values(vaults)) { - let vaultInfo = await queryContract({ contract, api, data: { 'info': {} }, }); - let totalAssets = await queryContract({ contract, api, data: { 'total_assets': {} }, }); - api.add(vaultInfo.base_token, totalAssets); - } -} diff --git a/projects/marginfi-lst/index.js b/projects/marginfi-lst/index.js deleted file mode 100644 index 6806973a8e6..00000000000 --- a/projects/marginfi-lst/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getConnection, } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); - -async function tvl() { - const connection = getConnection(); - const account = await connection.getAccountInfo(new PublicKey('DqhH94PjkZsjAqEze2BEkWhFQJ6EyU6MdtMphMgnXqeK')); - const lstTvlSolana = Number(account.data.readBigUint64LE(258))/1e9; - - return { - solana: lstTvlSolana - } -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} diff --git a/projects/marginfi/idl.js b/projects/marginfi/idl.js deleted file mode 100644 index fa6176e7c31..00000000000 --- a/projects/marginfi/idl.js +++ /dev/null @@ -1,97 +0,0 @@ -module.exports = { - "version": "0.1.0", - "name": "marginfi", - "instructions": [], - "accounts": [ - { - "name": "bank", - "type": { - "kind": "struct", - "fields": [ - {"name": "mint", "type": "publicKey"}, - {"name": "mintDecimals", "type": "u8"}, - {"name": "group", "type": "publicKey"}, - {"name": "ignore1", "type": {"array": ["u8", 7]}}, - {"name": "assetShareValue", "type": {"defined": "WrappedI80F48"}}, - {"name": "liabilityShareValue", "type": {"defined": "WrappedI80F48"}}, - {"name": "liquidityVault", "type": "publicKey"}, - {"name": "liquidityVaultBump", "type": "u8"}, - {"name": "liquidityVaultAuthorityBump", "type": "u8"}, - {"name": "insuranceVault", "type": "publicKey"}, - {"name": "insuranceVaultBump", "type": "u8"}, - {"name": "insuranceVaultAuthorityBump", "type": "u8"}, - {"name": "ignore2", "type": {"array": ["u8", 4]}}, - {"name": "collectedInsuranceFeesOutstanding", "type": {"defined": "WrappedI80F48"}}, - {"name": "feeVault", "type": "publicKey"}, - {"name": "feeVaultBump", "type": "u8"}, - {"name": "feeVaultAuthorityBump", "type": "u8"}, - {"name": "ignore3", "type": {"array": ["u8", 6]}}, - {"name": "collectedGroupFeesOutstanding", "type": {"defined": "WrappedI80F48"}}, - {"name": "totalLiabilityShares", "type": {"defined": "WrappedI80F48"}}, - {"name": "totalAssetShares", "type": {"defined": "WrappedI80F48"}}, - {"name": "lastUpdate", "type": "i64"}, - {"name": "config", "type": {"defined": "BankConfig"}}, - { - "name": "emissionsFlags", - "docs": ["Emissions Config Flags", "", "- EMISSIONS_FLAG_BORROW_ACTIVE: 1", "- EMISSIONS_FLAG_LENDING_ACTIVE: 2", ""], - "type": "u64" - }, - { - "name": "emissionsRate", - "docs": ["Emissions APR.", "Number of emitted tokens (emissions_mint) per 1M tokens (bank mint) (native amount) per 1 YEAR."], - "type": "u64" - }, - {"name": "emissionsRemaining", "type": {"defined": "WrappedI80F48"}}, - {"name": "emissionsMint", "type": "publicKey"}, - {"name": "padding0", "type": {"array": ["u128", 28]}}, - {"name": "padding1", "type": {"array": ["u128", 32]}} - ] - } - } - ], - "types": [ - {"name": "WrappedI80F48", "type": {"kind": "struct", "fields": [{"name": "value", "type": "i128"}]}}, - { - "name": "BankConfig", - "docs": ["TODO: Convert weights to (u64, u64) to avoid precision loss (maybe?)"], - "type": { - "kind": "struct", - "fields": [ - {"name": "assetWeightInit", "type": {"defined": "WrappedI80F48"}}, - {"name": "assetWeightMaint", "type": {"defined": "WrappedI80F48"}}, - {"name": "liabilityWeightInit", "type": {"defined": "WrappedI80F48"}}, - {"name": "liabilityWeightMaint", "type": {"defined": "WrappedI80F48"}}, - {"name": "depositLimit", "type": "u64"}, - {"name": "interestRateConfig", "type": {"defined": "InterestRateConfig"}}, - {"name": "operationalState", "type": {"defined": "BankOperationalState"}}, - {"name": "oracleSetup", "type": "u8"}, - {"name": "oracleKeys", "type": {"array": ["publicKey", 5]}}, - {"name": "ignore1", "type": {"array": ["u8", 6]}}, - {"name": "borrowLimit", "type": "u64"}, - {"name": "riskTier", "type": {"defined": "RiskTier"}}, - {"name": "padding", "type": {"array": ["u8", 55]}} - ] - } - }, - { - "name": "InterestRateConfig", - "type": { - "kind": "struct", - "fields": [ - {"name": "optimalUtilizationRate", "type": {"defined": "WrappedI80F48"}}, - {"name": "plateauInterestRate", "type": {"defined": "WrappedI80F48"}}, - {"name": "maxInterestRate", "type": {"defined": "WrappedI80F48"}}, - {"name": "insuranceFeeFixedApr", "type": {"defined": "WrappedI80F48"}}, - {"name": "insuranceIrFee", "type": {"defined": "WrappedI80F48"}}, - {"name": "protocolFixedFeeApr", "type": {"defined": "WrappedI80F48"}}, - {"name": "protocolIrFee", "type": {"defined": "WrappedI80F48"}}, - {"name": "padding", "type": {"array": ["u128", 8]}} - ] - } - }, - {"name": "BankOperationalState", "type": {"kind": "enum", "variants": [{"name": "Paused"}, {"name": "Operational"}, {"name": "ReduceOnly"}]}}, - {"name": "RiskTier", "type": {"kind": "enum", "variants": [{"name": "Collateral"}, {"name": "Isolated"}]}} - ], - "events": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/marginfi/index.js b/projects/marginfi/index.js deleted file mode 100644 index 45d71da3b9d..00000000000 --- a/projects/marginfi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, } = require("../helper/solana"); - -const idl = require('./idl') - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, 'MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA', provider) - const banks = await program.account.bank.all() - - return sumTokens2({ tokenAccounts: banks.map(i => i.account.liquidityVault.toString()) }); -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} diff --git a/projects/marginly/config.js b/projects/marginly/config.js deleted file mode 100644 index daaa5d6f108..00000000000 --- a/projects/marginly/config.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = { - arbitrum: { - factories: [ - { - factory: "0x1e36749E00229759dca262cB25Ad8d9B21bEB3F5", - fromBlock: 144171029, - version: "v1", - }, - { - factory: "0x537A3417Fe03e28F4E9640Bece70887a6938ff92", - fromBlock: 208756175, - version: "v1.5", - }, - { - factory: "0x4a805A6dbaCF824D5A39b9f3559aeFb831C1df95", - fromBlock: 220673210, - version: "v1.5", - }, - ], - }, - blast: { - factories: [ - { - factory: "0x1768Faee0A63927FeB81100046f5D63BfE0f08dB", - fromBlock: 501400, - version: "v1.5", - }, - ], - }, - ethereum: { - factories: [ - { - factory: "0xF8D88A292B0afa85E5Cf0d1195d0D3728Cfd7070", - fromBlock: 19824726, - version: "v1.5", - }, - ], - }, -}; diff --git a/projects/marginly/index.js b/projects/marginly/index.js deleted file mode 100644 index 6acf5cc552d..00000000000 --- a/projects/marginly/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const config = require("./config"); - -module.exports = { - methodology: - "Counts the number of base and quote tokens in every marginly pool", -}; - -Object.keys(config).forEach((chain) => { - const { factories } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = []; - for (const { factory, fromBlock, version } of factories) { - let logs; - if (version === "v1") { - // v1.0 contract - logs = await getLogs({ - api, - target: factory, - topic: "PoolCreated(address,address)", - eventAbi: - "event PoolCreated(address indexed quoteToken, address indexed baseToken, address uniswapPool, bool quoteTokenIsToken0, address pool)", - onlyArgs: true, - fromBlock, - }); - } else { - // v1.5 contract - logs = await getLogs({ - api, - target: factory, - topic: "PoolCreated(address,address,address)", - eventAbi: - "event PoolCreated(address indexed quoteToken, address indexed baseToken, address indexed priceOracle, uint32 defaultSwapCallData, address pool)", - onlyArgs: true, - fromBlock, - }); - } - - logs.forEach((i) => - ownerTokens.push([[i.quoteToken, i.baseToken], i.pool]) - ); - } - return sumTokens2({ api, ownerTokens }); - }, - }; - - module.exports[chain].tvl = () => ({}) -}); diff --git a/projects/marginswap/index.js b/projects/marginswap/index.js deleted file mode 100644 index c0076dedf44..00000000000 --- a/projects/marginswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - ethereum: { - tvl: () => ({}), - }, - bsc: { - tvl: () => ({}), - }, - avax: { - tvl: () => ({}), - }, - polygon: { - tvl: () => ({}), - }, -}; - -module.exports.deadFrom = '2023-08-09' \ No newline at end of file diff --git a/projects/marginx/index.js b/projects/marginx/index.js deleted file mode 100644 index 9f05871adbf..00000000000 --- a/projects/marginx/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumTokens } = require('../helper/chain/cosmos') -const { getConfig } = require('../helper/cache'); -// const bech32 = require('bech32'); -// const { ethers } = require("ethers"); - -// const toChecksumAddress = (address) => { -// return ethers.utils.getAddress(address) -// }; - -// function bech32ToEthereum(bech32Address) { -// const { prefix, words } = bech32.decode(bech32Address); -// const data = bech32.fromWords(words); -// const hex = Buffer.from(data).toString('hex'); -// const ethereumAddress = toChecksumAddress(`0x${hex}`); -// return ethereumAddress; -// } - -async function tvl(api) { - const { data: chainInfo} = await getConfig('marginxConfig', 'https://api.marginx.io/settings/cross/chains') - const owners = chainInfo.map(i => i.ibcAddress) - return sumTokens({ chain: 'fxcore', owners }) - // const owners = chainInfo.map(i => bech32ToEthereum(i.ibcAddress)) - // return sumTokens2({ api, owners, tokens: [ADDRESSES.null, ADDRESSES.functionx.USDT], }) -} - -module.exports = { - functionx: { - tvl - }, -}; diff --git a/projects/marinade-native/index.js b/projects/marinade-native/index.js deleted file mode 100644 index 1bc54efeec1..00000000000 --- a/projects/marinade-native/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getStakedSol } = require('../helper/solana') - -async function tvl(api) { - await getStakedSol('stWirqFCf2Uts1JBL1Jsd3r6VBWhgnpdPxCTe1MFjrq', api) -} - -module.exports = { - solana: { tvl } -} \ No newline at end of file diff --git a/projects/marinade-select/index.js b/projects/marinade-select/index.js deleted file mode 100644 index a69706d640d..00000000000 --- a/projects/marinade-select/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getStakedSol } = require('../helper/solana') - -const SolStakingAccount = 'STNi1NHDUi6Hvibvonawgze8fM83PFLeJhuGMEXyGps' - -async function tvl(api) { - await getStakedSol(SolStakingAccount, api) -} - -module.exports = { - methodology: `We sum the amount of SOL staked by account ${SolStakingAccount}`, - timetravel: false, - solana: { tvl } -} diff --git a/projects/marinade.js b/projects/marinade.js deleted file mode 100644 index 21e776536f2..00000000000 --- a/projects/marinade.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getProvider, sumTokens2, } = require("./helper/solana") -const { Program, } = require("@project-serum/anchor"); -const ADDRESSES = require('./helper/coreAssets.json') - -async function tvl(api) { - const provider = getProvider() - const programId = 'MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD' - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const [{ - account: { - validatorSystem: { totalActiveBalance }, - availableReserveBalance, - emergencyCoolingDown, - }, - },] = await program.account.state.all() - - api.add(ADDRESSES.solana.SOL, totalActiveBalance) - api.add(ADDRESSES.solana.SOL, availableReserveBalance) - api.add(ADDRESSES.solana.SOL, emergencyCoolingDown) - - return sumTokens2({ api, solOwners: ['UefNb6z6yvArqe4cJHTXCqStRsKmWhGxnZzuHbikP5Q'] }) // Liq Pool Sol Leg Pda -} - -module.exports = { - hallmarks: [ - [1667865600, "FTX collapse"] - ], - timetravel: false, - solana: { tvl }, - methodology: `We sum the amount of SOL staked, SOL in reserve address: Du3Ysj1wKbxPKkuPPnvzQLQh8oMSVifs3jGZjJWXFmHN, SOL in the Liquidity pool: UefNb6z6yvArqe4cJHTXCqStRsKmWhGxnZzuHbikP5Q, and the emergency cooling down balance.`, -} \ No newline at end of file diff --git a/projects/market.xyz/abi.js b/projects/market.xyz/abi.js deleted file mode 100644 index 36ab78b8c1f..00000000000 --- a/projects/market.xyz/abi.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'function getPublicPoolsWithData() returns (uint256[], tuple(string name, address creator, address comptroller, uint256 blockPosted, uint256 timestampPosted)[], uint256[], uint256[], address[][], string[][], bool[])'; diff --git a/projects/market.xyz/index.js b/projects/market.xyz/index.js deleted file mode 100644 index 46792355692..00000000000 --- a/projects/market.xyz/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi"); - -const fusePoolLensAddress = { - polygon: "0x0e76288Ac7fD4643290Bc857E26A4E7BfBd5aADF", - fantom: "0x5aB6215AB8344C28B899efdE93BEe47B124200Fb", -}; - -const WETH = ADDRESSES.ethereum.WETH; - -async function getFusePools( - timestamp, - block, - balances, - borrowed, - chain, -) { - const data = ( - await sdk.api.abi.call({ - target: fusePoolLensAddress[chain], - block, - abi: abi, - chain, - }) - ).output; - - const length = data["0"].length; - - let totalSupplyInETH = 0; - let totalBorrowInETH = 0; - - for (let i = 0; i < length; i++) { - totalSupplyInETH += parseInt(data["2"][i]); - totalBorrowInETH += parseInt(data["3"][i]); - } - - if (borrowed) { - balances[WETH] = totalBorrowInETH; - } else { - balances[WETH] = totalSupplyInETH - totalBorrowInETH; - } -} - -async function polygonTvl(timestamp, block, chainBlocks) { - const balances = {}; - const transform = i => `polygon:${i}`; - block = chainBlocks.polygon; - await getFusePools(timestamp, block, balances, false, "polygon", transform); - return balances; -} -async function polygonBorrowed(timestamp, block, chainBlocks) { - const balances = {}; - const transform = i => `polygon:${i}`; - block = chainBlocks.polygon; - await getFusePools(timestamp, block, balances, true, "polygon", transform); - return balances; -} -async function fantomTvl(timestamp, _, {fantom: block}) { - const balances = {}; - const transform = i => `fantom:${i}`; - await getFusePools(timestamp, block, balances, false, "fantom", transform); - return balances; -} -async function fantomBorrowed(timestamp, _, {fantom: block}) { - const balances = {}; - const transform = i => `fantom:${i}`; - await getFusePools(timestamp, block, balances, true, "fantom", transform); - return balances; -} -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: polygonTvl, - borrowed: polygonBorrowed, - }, - fantom: { - tvl: () => ({}), - borrowed: () => ({}), - }, -}; diff --git a/projects/marlinprotocol/index.js b/projects/marlinprotocol/index.js deleted file mode 100644 index 50ca1cc0235..00000000000 --- a/projects/marlinprotocol/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking'); - -module.exports = { - arbitrum: { - tvl: () => ({}), - staking: staking( - "0xf90490186F370f324DEF2871F077668455f65253", - "0xdA0a57B710768ae17941a9Fa33f8B720c8bD9ddD" - ) - }, -}; \ No newline at end of file diff --git a/projects/mars-perp/index.js b/projects/mars-perp/index.js deleted file mode 100644 index d770a8b0d7f..00000000000 --- a/projects/mars-perp/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos'); - -const contractAddresses = { - neutron: { - perps: 'neutron1g3catxyv0fk8zzsra2mjc0v4s69a7xygdjt85t54l7ym3gv0un4q2xhaf6' - }, -}; - -async function tvl(api) { - const chain = api.chain; - const { perps } = contractAddresses[chain]; - const info = await queryContract({ contract: perps, chain, data: { 'config': {} }, }); - const perpsVault = await queryContract({ contract: perps, chain, data: { 'vault': {} }, }); - - if (perpsVault) api.add(info.base_denom, perpsVault['total_balance']); -} - -module.exports = { - timetravel: false, - methodology: - "For each chain, sum token balances by querying the total deposit amount for each asset in the chain's params contract.", - neutron: { tvl }, -} diff --git a/projects/mars/index.js b/projects/mars/index.js deleted file mode 100644 index 7c590b54de5..00000000000 --- a/projects/mars/index.js +++ /dev/null @@ -1,124 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos'); -const axios = require('axios'); -const BigNumber = require('bignumber.js'); - -const contractAddresses = { - osmosis: { - params: 'osmo1nlmdxt9ctql2jr47qd4fpgzg84cjswxyw6q99u4y4u4q6c2f5ksq7ysent', - redBank: 'osmo1c3ljch9dfw5kf52nfwpxd2zmj2ese7agnx0p9tenkrryasrle5sqf3ftpg', - }, - neutron: { - params: 'neutron1x4rgd7ry23v2n49y7xdzje0743c5tgrnqrqsvwyya2h6m48tz4jqqex06x', - redBank: 'neutron1n97wnm7q6d2hrcna3rqlnyqw2we6k0l8uqvmyqq6gsml92epdu7quugyph', - }, -}; - -const poolsApis = { - osmosis: 'https://cache.marsprotocol.io/api/osmosis-1/tokens?x-apikey=7e3642de', - neutron: 'https://cache.marsprotocol.io/api/neutron-1/tokens?x-apikey=7e3642de', -}; - -async function tvl(api) { - const chain = api.chain; - const { params, redBank } = contractAddresses[chain]; - let startAfter = null; - const pageLimit = 5; - - do { - const assetParams = await queryContract({ - contract: params, - chain, - data: { all_asset_params: { limit: pageLimit, start_after: startAfter } }, - }); - - if (assetParams.length === pageLimit) startAfter = assetParams[assetParams.length - 1].denom; - else startAfter = null; - - await addCoinsFromAssetParams(assetParams); - } while (startAfter); - - do { - const markets = await queryContract({ - contract: contractAddresses[chain].redBank, - chain, - data: { 'markets': { 'limit': pageLimit, 'start_after': startAfter } }, - }); - - if (markets.length === pageLimit) startAfter = markets[markets.length - 1].denom; - else startAfter = null; - - await deductCoinsFromMarkets(markets); - } while (startAfter); - - async function addCoinsFromAssetParams(assetParams) { - const assetDenoms = assetParams.map((asset) => asset.denom); - - // fetch pool infos from the poolsApi based on chain - const poolInfos = await axios.get(poolsApis[chain]); - - // query the deposited amount for each asset and add it to the depositCoins array - await Promise.all( - assetDenoms.map(async (denom) => { - const totalDepositInfo = await queryContract({ - contract: params, - chain, - data: { 'total_deposit': { 'denom': denom } }, - }); - // check if the token is a liquidity pool share (deposited via farm) - // and find it in the api data - const poolInfo = poolInfos.data.tokens.find((pool) => pool.lpAddress === denom); - - if (poolInfo) { - // check for the underlying asset and calculate how much underlying assets a pool share holds - const totalShares = poolInfo.poolTotalShare; - const poolAssets = poolInfo.assets; - poolAssets.forEach((asset) => { - const amount = new BigNumber(asset.amount); - const amountPerShare = amount.div(totalShares); - - // add the underlying tokens to the api - api.add(asset.denom, amountPerShare.times(totalDepositInfo.amount).integerValue(BigNumber.ROUND_DOWN).toString()); - }); - } else { - // if the it's a token and not a liquidity pool share, add it to the api - api.add(denom, totalDepositInfo.amount); - } - }), - ); - } - - async function deductCoinsFromMarkets(markets) { - // query the underlying debt amount from the debt_total_scaled - await Promise.all( - markets.map(async (market) => { - const totalDebt = await queryContract({ - contract: redBank, - chain, - data: { - 'underlying_debt_amount': { - 'denom': market.denom, - 'amount_scaled': market['debt_total_scaled'], - }, - }, - }); - api.add(market.denom, totalDebt * -1); - }), - ); - } -} - -module.exports = { - timetravel: false, - methodology: "For each chain, sum token balances by querying the total deposit amount for each asset in the chain's params contract.", - osmosis: { tvl }, - neutron: { tvl }, - terra: { tvl: () => 0 }, - hallmarks: [ - [1651881600, 'UST depeg'], - [1675774800, 'Relaunch on Osmosis'], - [1690945200, 'Launch on Neutron'], - [1696906800, 'Mars v2 launch on Osmosis'], - [1724166000, 'Mars v2 launch on Neutron'], - [1734098400, 'Perps launch on Neutron'] - ], -}; diff --git a/projects/marsecosystem/abi.json b/projects/marsecosystem/abi.json deleted file mode 100644 index 095de52eb97..00000000000 --- a/projects/marsecosystem/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "sharesTotal": "function sharesTotal(uint256 _pid) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/marsecosystem/index.js b/projects/marsecosystem/index.js deleted file mode 100644 index 4b73fa2f560..00000000000 --- a/projects/marsecosystem/index.js +++ /dev/null @@ -1,64 +0,0 @@ - -const sdk = require('@defillama/sdk') -const { unwrapUniswapLPs, } = require("../helper/unwrapLPs"); -const { getConfig } = require('../helper/cache') -const abi = require("./abi.json"); -const { getUniTVL } = require("../helper/unknownTokens"); - -const url = 'https://api.marsecosystem.com/api/pools'; - -async function tvl(api) { - const rows = (await getConfig('mars-ecosystem', url)); - const localPools = rows.filter(v => v.masterChef.includes('LiquidityMiningMaster') && !v.baseToken.includes('xms')); - const remotePools = rows.filter(v => v.masterChef.includes('MarsFarmV2') && !v.baseToken.includes('xms')); - return await calculate(api, localPools, remotePools); -} -async function staking(api) { - const rows = (await getConfig('mars-ecosystem', url)); - const localPools = rows.filter(v => v.masterChef.includes('LiquidityMiningMaster') && v.baseToken.includes('xms')); - const remotePools = rows.filter(v => v.masterChef.includes('MarsFarmV2') && v.baseToken.includes('xms')); - return await calculate(api, localPools, remotePools); -} - -async function calculate(api, localPools, remotePools) { - const localPoolsBalances = await api.multiCall({ - calls: localPools.map(v => ({ target: v.address, params: v.masterChefAddress })), - abi: 'erc20:balanceOf', - }) - - - const lpPositions = []; - - localPools.map((v, i) => { - if (v.baseToken == v.quoteToken) { - api.add(v.address, localPoolsBalances[i]); - } else { - // lpPositions.push({ token: v.address, balance: localPoolsBalances[i] }); // already counted as part of dex - } - }); - - const remotePoolsBalances = await api.multiCall({ - calls: remotePools.map(v => ({ target: v.masterChefAddress, params: [v.pid] })), - abi: abi.sharesTotal, - }) - - remotePools.map((v, i) => { - if (v.baseToken == v.quoteToken) { - api.add(v.address, remotePoolsBalances[i]); - } else { - // lpPositions.push({ token: v.address, balance: remotePoolsBalances[i] }); // already counted as part of dex - } - }); - - api.removeTokenBalance('0xBb0fA2fBE9b37444f5D1dBD22e0e5bdD2afbbE85') // project related token - await unwrapUniswapLPs(api.getBalances(), lpPositions, api.block, api.chain); - return api.getBalances(); -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: sdk.util.sumChainTvls([getUniTVL({ factory: '0x6f12482D9869303B998C54D91bCD8bCcba81f3bE', useDefaultCoreAssets: true, }), tvl]), - staking, - } -}; diff --git a/projects/marshamallowdefi/abi.json b/projects/marshamallowdefi/abi.json deleted file mode 100644 index 0dc9d10bc15..00000000000 --- a/projects/marshamallowdefi/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accEggPerShare, uint16 depositFeeBP)" -} \ No newline at end of file diff --git a/projects/marshamallowdefi/index.js b/projects/marshamallowdefi/index.js deleted file mode 100644 index f3519a47da6..00000000000 --- a/projects/marshamallowdefi/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const abi = require("./abi.json"); -const MASH = "0x787732f27d18495494cea3792ed7946bbcff8db2"; -const TOFY = "0xe1f2d89a6c79b4242f300f880e490a70083e9a1c"; - - -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); -const common = { - chain: 'bsc', - nativeTokens: [MASH, TOFY], - poolInfoABI: abi.poolInfo, - blacklistedTokens: ['0x00000000548997391c670a5179af731a30e7c3ad'] -} - -module.exports = mergeExports([ - masterchefExports({ - ...common, - masterchef: '0x8932a6265b01D1D4e1650fEB8Ac38f9D79D3957b', - }), - masterchefExports({ - masterchef: '0xEE49Aa34833Ca3b7d873ED63CDBc031A09226a5d', - ...common, - }) -]) diff --git a/projects/marspoolin/index.js b/projects/marspoolin/index.js deleted file mode 100644 index 142f722c629..00000000000 --- a/projects/marspoolin/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const contracts = [ - // pETH18C_CONTRACT - "0xf3da734c6040665eAc90F1466d23301d6d0b7Cb7", - // pBTC35A_CONTRACT - "0x5CBaDe4D03Ea436F792E9f939E70908524949efD", - // pBTC35A-USDT - "0xaE26170200ec3aE66B8AfAa87f2FA49C1E0A02B9", - // pETH18C-USDT - "0x16A60d78fE6F92D25EBDDAfF6B1efC9d193d4fC8", - // MARS-USDT - "0x9b9c2D202F9a0ed9Be9DaF9Df50CC0e327A809dd", -]; - -const erc20TokenContracts = [ - // pETH18C_CONTRACT - "0xA15690E9205De386Ce849889831C1668c300C1ad", - // pBTC35A_CONTRACT - "0xA8b12Cc90AbF65191532a12bb5394A714A46d358", - // pBTC35A-USDT LP - "0x5B1e45cA08fA4d65aA7FDcF9e116990fB7FcE73B", - // pETH18C-USDT LP - "0x2Dc9d00DA9542f91D5391bE53Ed1D58a04EC1C07", - // MARS-USDT LP - "0x64b91b92240bC1901855Dd55AE632addB650d089", -]; - -const ethTvl = async (api) => { - return sumTokens2({ api, tokensAndOwners2: [erc20TokenContracts, contracts], resolveLP: true, }); -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - }, -}; diff --git a/projects/marswap/index.js b/projects/marswap/index.js deleted file mode 100644 index 2d9a76dc739..00000000000 --- a/projects/marswap/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') - -const config = { - bsc: ['0xe19165248159B6cB2A2e35bF398581C777C9979A'], - ethereum: ['0x5e763172d59b3b580af29a1c9fa4ac1cee69c5dd'], - shibarium: ["0xBe0223f65813C7c82E195B48F8AAaAcb304FbAe7","0xd871a3f5d3bB9c00DDB0cC772690351B9712968D"], - base: ["0xeE42fe6d6Be1eF43701DDAbc417AD22d82C5ecC3"], - cronos: ["0xD716B78F0002C23190B024fc93C33CF73E30b8A6"], - cronos_zkevm: ["0xc547615d77b2d5c1add3d744342d8CB027873e82"] -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: sdk.util.sumChainTvls(config[chain].map((factory) => getUniTVL({ factory, useDefaultCoreAssets: true, hasStablePools: true, }))) } -}) \ No newline at end of file diff --git a/projects/maskex/index.js b/projects/maskex/index.js deleted file mode 100644 index fe02cb33e7e..00000000000 --- a/projects/maskex/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x09b1806df13062b5f653beda6998972cabcf7009', - '0x0c78fd926a8fc9cfc682bdc6b411942d9c7edb7a', - '0x0feabb61f67e859811aafce83a5ab780f8c53c0a', - '0x33fe5557e90a872a065f2acfd973847e33fc4532', - '0x6f531cf07f2d659dcfb371b1a7f4c0157a168332', - '0x71467da4c0b0db4e889da703e6ff1cd740f1f74a', - '0x7ac724cac6e4ddc24c102b1006f41bc8a6a5c1c5', - '0x7e0616656934a09373b1e1114de2c20a77513d16', - '0x80b62f0ea7a89bbc4df4c95e2ad363e5c153b80e', - '0x823c8e533657b0004b5ab8553d84502ba2e571f7', - '0x833f3b6faa717079fb3a1030f6207c57b1c591bd', - '0x9f1bb5349d481065561a84cbd7f84982fd533359', - '0xA310b3eecA53B9C115af529faF92Bb5ca4B41494', - '0xa4E71851A8c8eaeFeb20A994159F4A443E46059b', - '0xbe921ea3bd0c879a8688b7fabe6b3c8a471df90d', - '0xc3edbb9c181016cef5d76491f835930e9c8c4d2c', - '0xdd9c649edb7ff80c6c9d238344260184a4f94b88', - '0xfb65377800a7282cf81baf0f335fbc6f8ff36776', - '0x0ce7eefb9f862aa0374ee7bbc4d8a0fc2c651517', - '0x0ce92d3a15908b53371ff1afcae800f28142250c', - '0x95ad8841376058a000F489196F05ecf176bEB8ac', - '0x0B3c7bcE764E6f1B52443e30fcb4f34997A0674c', - ], - }, - bsc: { - owners: [ - '0x1349907c197731c5ed98d8442309a15107cb6bad', - '0x2161217d22fac0188775432f8ba32f1d4272dd19', - '0x3dd878a95dcaef2800cd57bb065b5e8f2f438131', - '0x46c75fc52e0263946f8f1a75a95c23a767d2f26e', - '0x6e2673095545280f6f10e22eb861a555c6e94bec', - '0x84457412efe8b3a05583cb496e1d2c03e6f36155', - '0x8458c828d602230e92eb0aac5a6aed5580011b6a', - '0xA310b3eecA53B9C115af529faF92Bb5ca4B41494', - '0xa4E71851A8c8eaeFeb20A994159F4A443E46059b', - '0xc6acb77befebff0359cc581973859eee8cbaeda1', - '0xd666ad8d95903bce9b4dcd2cacde5145e36405c2', - '0xd7aed730a7c4cf8dfe313b16712af3406f6dca5b', - '0x6db133e840376555a5ad5c1d7616872ef57e7f13', - '0xDCa6951B82e82AF6AAB4bB9e90CA00F5760370e1', - ] - }, - tron: { - owners: [ - // 'TArBsHHp4zz1TWgHhZWvNcxD4A7DMbcoMm', - 'TAv486fty6xRuWHQfhBiMh4jBofSuXJcpV', - // 'TBqiQviC27UdWU58qbviJKJwp9b3DygLpY', - 'TDQ7nxDTJBMZkkWcFZKs9KdWzb2vT2drDu', - 'TKCbzA6HPnwEDL9M2tAWnqsbD6TXLUD7yy', - // 'TLHuz1191oCESWJH6sAq9MS5w66HtHVbyc', - 'TLqPRfPHieHsMMFaQSMXoXqWD18C97cFqB', - // 'TNoQvaDoPHcdoux2Ymt3yUnsSGJgLSXygo', - 'TSFvf8LZuwy4BKNPdULFD5vaCFMrkiGRme', - // 'TTNeMfGyAL1Bb8vw32U8hxJ5Vmju5tsQ8y', - // 'TUTh7mS9o2EPgxLbx2bNSwwyoPCsLUmkNq', - // 'TUXjobUdiUPvSZmbBVWTcSEqoXzFNr4ZDa', - // 'TUrk8EeZgKCQkfd1KhAfRMBmH1Y4NYnaaL', - 'TW6DLBY5dyCUVzc3sgKV72HXNT8EkmEUT8', - // 'TX39NXuXviJ1be8y1XkbnQ4DfFmp9gRhez', - 'TXiZ9ddXTBUke9PDs5HLXVvvHY68kmC3me', - // 'TYp46EYRTHb2grSfjkDFFtakcgedXBHEhh', - // 'TYshj25EXjnPB7P5xRGLmFTNPV6HMoZyrq', - // 'TUiATx1SGs3TwwKY1atafMvYjrQD8KLiSk', - ] - }, - bitcoin: { - owners: bitcoinAddressBook.maskex - } -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/mateswap-xyz/index.js b/projects/mateswap-xyz/index.js deleted file mode 100644 index c5cf110cc36..00000000000 --- a/projects/mateswap-xyz/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('lac', '0x12D9CC71b28B70d08f28CCf92d9Ab1D8400f97bD') \ No newline at end of file diff --git a/projects/matrix-farm/index.js b/projects/matrix-farm/index.js deleted file mode 100644 index 17bef4e5aee..00000000000 --- a/projects/matrix-farm/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') -const MATRIX_API = "https://api-v2.matrix.farm/statistics/latest"; - -const chains = ['bsc', "fantom", "arbitrum", "optimism", "dogechain", 'base'] - -module.exports = { - doublecounted: true, - timetravel: false, - misrepresentedTokens: true, - methodology: "The TVL is calculated using a google cloud function that runs every minute, it checks the value of all the LPs staked in our vaults and returns the total", -} - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) - -async function tvl(api) { - let { tvl: { vaults } } = await getConfig('matri-farm', MATRIX_API) - vaults = vaults.filter(vault => vault.chain === api.chain).map(i => i.address) - let wants = await api.multiCall({ abi: 'address:want', calls: vaults, permitFailure: true }) - const wantVaults = vaults.filter((vault, i) => wants[i]) - wants = wants.filter(want => want) - const wantBals = await api.multiCall({ calls: wantVaults, abi: 'uint256:balance' }) - api.addTokens(wants, wantBals) - return sumTokens2({ api, resolveLP: true }) -} \ No newline at end of file diff --git a/projects/matrix/abi.json b/projects/matrix/abi.json deleted file mode 100644 index e4009eeb670..00000000000 --- a/projects/matrix/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accMatrixPerShare, uint16 depositFeeBP, uint256 harvestInterval)" -} \ No newline at end of file diff --git a/projects/matrix/index.js b/projects/matrix/index.js deleted file mode 100644 index e74098ac7bf..00000000000 --- a/projects/matrix/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const {masterChefExports} = require('../helper/masterchef') -const abi = require('./abi.json') - -const MATRIX = "0x35c167b6a1Fc4D1D2b55293367ef5b8D4aF0a696" -module.exports={ - misrepresentedTokens: true, - methodology: "Tokens in masterchef", - ...masterChefExports("0xacAb1D5FaBD5c675db07d40De8E0E218EBe75A9e", "cronos", MATRIX, false, abi.poolInfo), -} diff --git a/projects/matrixai/index.js b/projects/matrixai/index.js deleted file mode 100644 index 21b649ef1cf..00000000000 --- a/projects/matrixai/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - - -const matrixGenesisPool = '0x068112669651f2a0DbD5B97dd03077464cba5Ea8' -const tokens = [ - ADDRESSES.sonic.wS, // S - ADDRESSES.sonic.STS, // stS - ADDRESSES.sonic.USDC_e, // USDC.e - ADDRESSES.sonic.scUSD, // scUSD - "0x44E23B1F3f4511b3a7e81077Fd9F2858dF1B7579", // MCLB - "0x79bbF4508B1391af3A0F4B30bb5FC4aa9ab0E07C", // ANON - "0x3333111A391cC08fa51353E9195526A70b333333", // X33 - "0x9fDbC3f8Abc05Fa8f3Ad3C17D2F806c1230c4564", // GOGLZ -] - -module.exports = { - methodology: "This is only the TVL of the genesis pools ", - sonic: { - tvl: sumTokensExport({ owner: matrixGenesisPool, tokens }), - pool2: sumTokensExport({ - owner: matrixGenesisPool, tokens: [ - "0x37C4c5e345ae4d4041b7f519343f942716fc6fE6", // MATRIX-S LP - ] - }), - }, -}; \ No newline at end of file diff --git a/projects/matrixdock-gold/index.js b/projects/matrixdock-gold/index.js deleted file mode 100644 index 1ed60c955af..00000000000 --- a/projects/matrixdock-gold/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getTokenSupply } = require("../helper/chain/sui") -const { getTvlOfSupplyAssets } = require("../matrixdock/getTvlOfSupplyAssets") - -const config = { - ethereum: ['0x2103E845C5E135493Bb6c2A4f0B8651956eA8682'], - plume_mainnet: ['0xA0C4F78A29ead4ABf6b7f5B3F0d05C0f3EAb8DDf'], - bsc: ['0x23AE4fd8E7844cdBc97775496eBd0E8248656028'] -} - -module.exports = getTvlOfSupplyAssets(config) - -module.exports.sui = { - tvl: async (api) => { - const token = '0x9d297676e7a4b771ab023291377b2adfaa4938fb9080b8d12430e4b108b836a9::xaum::XAUM' - const res = await getTokenSupply(token) - api.add(token, res.supply) - } -} \ No newline at end of file diff --git a/projects/matrixdock/getTvlOfSupplyAssets.js b/projects/matrixdock/getTvlOfSupplyAssets.js deleted file mode 100644 index b30d2cb3078..00000000000 --- a/projects/matrixdock/getTvlOfSupplyAssets.js +++ /dev/null @@ -1,17 +0,0 @@ -function getTvlOfSupplyAssets(config){ - const exportsObject = {} - Object.keys(config).forEach(chain => { - const tokens = config[chain] - exportsObject[chain] = { - tvl: async (api) => { - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: tokens }) - api.add(tokens, supplies) - } - } - }) - return exportsObject -} - -module.exports = { - getTvlOfSupplyAssets -} \ No newline at end of file diff --git a/projects/matrixdock/index.js b/projects/matrixdock/index.js deleted file mode 100644 index 84ec6d9687e..00000000000 --- a/projects/matrixdock/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getTvlOfSupplyAssets} = require("./getTvlOfSupplyAssets") - -const config = { - ethereum: ['0x530824DA86689C9C17CdC2871Ff29B058345b44a'], -} - -module.exports = getTvlOfSupplyAssets(config) \ No newline at end of file diff --git a/projects/matstake/index.js b/projects/matstake/index.js deleted file mode 100644 index fa4714d049b..00000000000 --- a/projects/matstake/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const MAT = ADDRESSES.matchain.MAT -const { sumTokens2 } = require('../helper/unwrapLPs') -const POOLS = [ - '0xa1843e71d1390d4A31469A53EeEfBB2f9AAe34ed', // LiquidStakingPool (also holds MAT) - '0xff5eb1345aa5d4c948c227742fcd32157539e480', - '0xfa38f584f561642ff0d1ab67b5a175798668a047', - '0xf9ff433f14f237ce6643257ca4cd5aec355eaee7', - '0xeef37e218087bca2f4c3c6c4c50f3d3b51b2eb4d', - '0xdd1904dcf7e0b6dff60bd9729f626b076999e18f', - '0xdb604be88482ce061fbc2595e619f967de1a7502', - '0xd899cd3cafb1c9f6d585c36649592956d3df5ef9', - '0xc3258af62e46b502700c34ed7c3128f99f0fc532', - '0xc021a95e3ad7d4e06745c4a12438a960c33859d7', - '0xb4175a66e28f2c348959872b28af0d12f891201f', - '0xa3be9646116f834d0f9f1a035fdad6862b5f0a2a', - '0x9c4c30d5cd29c6d24cf1a712d93b756cbf5071ba', - '0x96b5f62604729ed5b7219f1b3f15a8359e0a86fb', - '0x8aa82b86056af2dd5cdaab45eefe500c84d0af82', - '0x739110f0233b8598957af1321920787c13142910', - '0x53f91b6ae02c8cdbc22565f7f7a158add6f1de6e', - '0x4a47d64b074d730868623d89ec633d16adf53212', - '0x443d8318224c59c31987ea310033d0dc47a10d88', - '0x256b02b26c67029b2881ab5d493cf8e5068d5fcc', - '0x0de1a88dcf7fd12c54d9ac0807c990f26bd1c121', - '0x0b0381a2c4c3a537c614afe71334c9f387718922', -] - -async function staking(api) { - return sumTokens2({ api, owners: POOLS, tokens: [MAT] }) -} - -module.exports = { - methodology: 'Sums the MAT token balance held by the LiquidStakingPool contract and all staking pools to represent total user deposits.', - timetravel: true, - matchain: { - tvl: () => ({}), - staking, - }, -} \ No newline at end of file diff --git a/projects/matterdefi/index.js b/projects/matterdefi/index.js deleted file mode 100644 index f153a9a2be1..00000000000 --- a/projects/matterdefi/index.js +++ /dev/null @@ -1,143 +0,0 @@ -const BigNumber = require("bignumber.js"); -const { RPC_ENDPOINT } = require('../helper/chain/tezos'); -const { PromisePool } = require('@supercharge/promise-pool'); -const { get } = require('../helper/http') - -const SPICY_URL = 'https://spicya.sdaotools.xyz/api/rest'; -const MATTER_CORE = 'KT1K4jn23GonEmZot3pMGth7unnzZ6EaMVjY'; -const MATTER_LIVE = 'KT1FYct7DUK1mUkk9BPJEg7AeH7Fq3hQ9ah3'; - -async function fetchTokenBalances(account) { - return (await get(`${RPC_ENDPOINT}/v1/tokens/balances?account=${account}&limit=100&select=balance,token.id%20as%20id,token.contract%20as%20contract,token.standard%20as%20standard,token.tokenId%20as%20token_id`)); -} - -async function fetchSupply (contract, id) { - const req = id ? `/v1/tokens/?contract=${contract}&tokenId=${id}` : `/v1/tokens/?contract=${contract}`; - const supply = (await get(`${RPC_ENDPOINT}${req}`)); - - return new BigNumber(supply[0].totalSupply); -} - -let _spicePools, _spiceTokens - -async function fetchSpicyPools() { - if (!_spicePools) _spicePools = get(`${SPICY_URL}/PoolListAll/`) - const spicyPools = (await _spicePools).pair_info; - - return spicyPools.map(token => ({ contract: token.contract, reservextz: token.reservextz })); -} - -async function fetchSpicyTokens() { - if (!_spiceTokens) _spiceTokens = get(`${SPICY_URL}/TokenList`) - return (await _spiceTokens).tokens; -} - -async function lpToTez(farm) { - if(!farm.totalBalance) { - return farm.reserveXtz.multipliedBy(farm.balance); - } else { - const tezPerLp = farm.reserveXtz.dividedBy(farm.totalBalance.shiftedBy(-18)); - - return tezPerLp.multipliedBy(farm.balance.shiftedBy(-18)); - } -} - -async function matchToMatter (token, pools, tokens) { - const match = pools.find(pool => pool.contract == token.contract.address) - - if(match) { - token.totalBalance = await fetchSupply(token.contract.address); - token.reserveXtz = new BigNumber(match.reservextz); - token.balance = new BigNumber(token.balance); - - return token; - } else { - const tokenData = tokens.find(t => t.tag == `${token.contract.address}:${token.token_id}`); - - if(tokenData) { - token.reserveXtz = new BigNumber(tokenData.derivedxtz); - token.balance = new BigNumber(token.balance).shiftedBy(-tokenData.decimals); - - return token; - } - } -} - -async function fetchSpicyPoolsAndMatch (spicyPools, spicyTokens, match) { - const { results, errors } = await PromisePool.withConcurrency(10) - .for(match) - .process(async (token) => matchToMatter(token, spicyPools, spicyTokens)) - - if (errors && errors.length) { - throw errors[0]; - } - - return results.filter(result => result); -} - -async function fetchCoreFarmsTvl(farms) { - const { results, errors } = await PromisePool.withConcurrency(10) - .for(farms) - .process(async (farm) => lpToTez(farm)) - - if (errors && errors.length) { - throw errors[0] - } - - return results.reduce((previous, current) => previous.plus(current)) -} - -const MATTER_TOKEN = 'KT1K4jn23GonEmZot3pMGth7unnzZ6EaMVjY' - -async function tvl() { - //fetch initial matter data - const spicyPools = await fetchSpicyPools(); - const spicyTokens = await fetchSpicyTokens(); - const matterCoreBalances = await fetchTokenBalances(MATTER_CORE); - const matterLiveBalances = await fetchTokenBalances(MATTER_LIVE); - - //fetch farm info - const coreToMatter = await fetchSpicyPoolsAndMatch(spicyPools, spicyTokens, matterCoreBalances.filter(i => i.contract.address !== MATTER_TOKEN)); - const liveToMatter = await fetchSpicyPoolsAndMatch(spicyPools, spicyTokens, matterLiveBalances.filter(i => i.contract.address !== MATTER_TOKEN)); - - //calculate TVL - const coreFarmsTvl = await fetchCoreFarmsTvl(coreToMatter); - const liveFarmsTvl = await fetchCoreFarmsTvl(liveToMatter); - - return { - tezos: coreFarmsTvl.plus(liveFarmsTvl).toFixed(0) - }; -} - -async function staking() { - //fetch initial matter data - const spicyPools = await fetchSpicyPools(); - const spicyTokens = await fetchSpicyTokens(); - const matterCoreBalances = await fetchTokenBalances(MATTER_CORE); - const matterLiveBalances = await fetchTokenBalances(MATTER_LIVE); - - //fetch farm info - const coreToMatter = await fetchSpicyPoolsAndMatch(spicyPools, spicyTokens, matterCoreBalances.filter(i => i.contract.address === MATTER_TOKEN)); - const liveToMatter = await fetchSpicyPoolsAndMatch(spicyPools, spicyTokens, matterLiveBalances.filter(i => i.contract.address === MATTER_TOKEN)); - - //calculate TVL - const coreFarmsTvl = await fetchCoreFarmsTvl(coreToMatter); - const liveFarmsTvl = await fetchCoreFarmsTvl(liveToMatter); - - return { - tezos: coreFarmsTvl.plus(liveFarmsTvl).toFixed(0) - }; -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: ` - TVL counts the liquidity of both Matter Core & Matter Live farms. - Tokens held in Matter's contract are pulled from TZKT API & relevant pool data is retrieved using SpicySwap API: ${SPICY_URL}. - `, - tezos: { - tvl, - staking, - } -} diff --git a/projects/mauve/index.js b/projects/mauve/index.js deleted file mode 100644 index 909b0070717..00000000000 --- a/projects/mauve/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - ethereum: { factory: '0x0569168709a869e7f4Ba142c49BFF7faA14f76C8', fromBlock: 18047375, }, -}) diff --git a/projects/maverick-v2/index.js b/projects/maverick-v2/index.js deleted file mode 100644 index b3c4cf7dcb0..00000000000 --- a/projects/maverick-v2/index.js +++ /dev/null @@ -1,85 +0,0 @@ -// Maverick Protocol -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs2 } = require("../helper/cache/getLogs"); - -function maverickTVL(config) { - const exports = {}; - - Object.keys(config).forEach((chain) => { - const { factories } = config[chain]; - exports[chain] = { - tvl: async (api) => { - let logs = []; - for (let k = 0; k < factories.length; k++) { - logs.push( - ...(await getLogs2({ - api, - target: factories[k].address, - fromBlock: factories[k].startBlock, - eventAbi: - "event PoolCreated(address poolAddress,uint8 protocolFeeRatio,uint256 feeAIn,uint256 feeBIn,uint256 tickSpacing,uint256 lookback,int32 activeTick,address tokenA,address tokenB,uint8 kinds,address accessor)", - })) - ); - } - - return sumTokens2({ - api, - ownerTokens: logs.map((i) => [[i.tokenA, i.tokenB], i.poolAddress]), - }); - }, - }; - }); - - return exports; -} - -module.exports = maverickTVL({ - ethereum: { - factories: [ - { - address: "0x0A7e848Aca42d879EF06507Fca0E7b33A0a63c1e", - startBlock: 20027236, - }, - ], - }, - era: { - factories: [ - { - address: "0x7A6902af768a06bdfAb4F076552036bf68D1dc56", - startBlock: 35938167, - }, - ], - }, - bsc: { - factories: [ - { - address: "0x0A7e848Aca42d879EF06507Fca0E7b33A0a63c1e", - startBlock: 39421941, - }, - ], - }, - base: { - factories: [ - { - address: "0x0A7e848Aca42d879EF06507Fca0E7b33A0a63c1e", - startBlock: 15321281, - }, - ], - }, - arbitrum: { - factories: [ - { - address: "0x0A7e848Aca42d879EF06507Fca0E7b33A0a63c1e", - startBlock: 219205177, - }, - ], - }, - scroll: { - factories: [ - { - address: "0x0A7e848Aca42d879EF06507Fca0E7b33A0a63c1e", - startBlock: 7332349, - }, - ], - }, -}); diff --git a/projects/maverick/index.js b/projects/maverick/index.js deleted file mode 100644 index 226b1fb951a..00000000000 --- a/projects/maverick/index.js +++ /dev/null @@ -1,81 +0,0 @@ -// Maverick Protocol -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); - -function maverickTVL(config) { - const exports = {}; - - Object.keys(config).forEach((chain) => { - const { factories } = config[chain]; - exports[chain] = { - tvl: async (api) => { - let logs = []; - for (let k = 0; k < factories.length; k++) { - logs.push( - ...(await getLogs({ - api, - target: factories[k].address, - topics: [ - "0x9b3fb3a17b4e94eb4d1217257372dcc712218fcd4bc1c28482bd8a6804a7c775", - ], - fromBlock: factories[k].startBlock, - eventAbi: - "event PoolCreated(address poolAddress, uint256 fee, uint256 tickSpacing, int32 activeTick, int256 lookback, uint64 protocolFeeRatio, address tokenA, address tokenB)", - onlyArgs: true, - })) - ); - } - - return sumTokens2({ - api, - ownerTokens: logs.map((i) => [[i.tokenA, i.tokenB], i.poolAddress]), - }); - }, - }; - }); - - return exports; -} - -module.exports = maverickTVL({ - ethereum: { - factories: [ - { - address: "0xEb6625D65a0553c9dBc64449e56abFe519bd9c9B", - startBlock: 17210221, - }, - { - address: "0xa5eBD82503c72299073657957F41b9cEA6c0A43A", - startBlock: 16727800, - }, - ], - }, - era: { - factories: [ - { - address: "0x96707414DB71e553F6a49c7aDc376e40F3BEfC33", - startBlock: 1337265, - }, - { - address: "0x2C1a605f843A2E18b7d7772f0Ce23c236acCF7f5", - startBlock: 3002731, - }, - ], - }, - bsc: { - factories: [ - { - address: "0x76311728FF86054Ad4Ac52D2E9Ca005BC702f589", - startBlock: 29241050, - }, - ], - }, - base: { - factories: [ - { - address: "0xB2855783a346735e4AAe0c1eb894DEf861Fa9b45", - startBlock: 1489614, - }, - ], - }, -}); diff --git a/projects/maxapy/index.js b/projects/maxapy/index.js deleted file mode 100644 index f69accab21e..00000000000 --- a/projects/maxapy/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - doublecounted: true, - methodology: "Counts total value locked in ERC4626 vaults", -} - -const config = { - ethereum: [ - "0x9847c14fca377305c8e2d10a760349c667c367d4", - ], - polygon: [ - "0xe7fe898a1ec421f991b807288851241f91c7e376", - "0xa02aa8774e8c95f5105e33c2f73bdc87ea45bd29", - ], - base: [ - "0x7a63e8fc1d0a5e9be52f05817e8c49d9e2d6efae", - "0xb272e80042634bca5d3466446b0c48ba278a8ae5", - ], -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - hallmarks: [ - [1729675523, "Beta Launch"], - [1745312000, "V1 Launch"], - ], - tvl: sumERC4626VaultsExport({ vaults: config[chain], isOG4626: true, }) - } -}) diff --git a/projects/maximizer/allocatorAbi.json b/projects/maximizer/allocatorAbi.json deleted file mode 100644 index 4acdc790b9e..00000000000 --- a/projects/maximizer/allocatorAbi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "balanceOf": "function balanceOf(address _token) view returns (uint256)", - "pending": "uint256:pending", - "pendingOf": "function pendingOf(address _token) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/maximizer/index.js b/projects/maximizer/index.js deleted file mode 100644 index 96f30b08e13..00000000000 --- a/projects/maximizer/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -const MaximizerStaking = "0x6d7AD602Ec2EFdF4B7d34A9A53f92F06d27b82B1"; -const MAXI = "0x7C08413cbf02202a1c13643dB173f2694e0F73f0"; -const staking = async (api) => api.sumTokens({ owner: MaximizerStaking, token: MAXI }) - -module.exports = { - avax: { - tvl: () => ({}), - staking, - }, - deadFrom: '2022-06-13', - methodology: - "Counts MAXI, MAXI LP (MAXI-DAI.e JLP, MAXI-WAVAX PGL), DAI.e, USDC, WAVAX, liquidity tokens (PGL, JLP), single partner tokens on the treasury and allocators", -}; diff --git a/projects/maximizer/qiTokenAbi.json b/projects/maximizer/qiTokenAbi.json deleted file mode 100644 index c38887b2d0f..00000000000 --- a/projects/maximizer/qiTokenAbi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "balanceOf": "function balanceOf(address _token) view returns (uint256)", - "exchangeRateStored": "uint256:exchangeRateStored" -} \ No newline at end of file diff --git a/projects/maximizer/stableJoeStakingAbi.json b/projects/maximizer/stableJoeStakingAbi.json deleted file mode 100644 index 12408177389..00000000000 --- a/projects/maximizer/stableJoeStakingAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getUserInfo": "function getUserInfo(address _user, address _rewardToken) view returns (uint256 amount, uint256 rewardDebt)" -} \ No newline at end of file diff --git a/projects/maximizer/stakingRewardsAbi.json b/projects/maximizer/stakingRewardsAbi.json deleted file mode 100644 index 7bdb38ca15e..00000000000 --- a/projects/maximizer/stakingRewardsAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "balanceOf": "function balanceOf(address) view returns (uint256 amount)" -} \ No newline at end of file diff --git a/projects/maximizer/veptpAbi.json b/projects/maximizer/veptpAbi.json deleted file mode 100644 index ee245265da7..00000000000 --- a/projects/maximizer/veptpAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getStakedPtp": "function getStakedPtp(address _addr) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/maxshot/index.js b/projects/maxshot/index.js deleted file mode 100644 index 75e8dc86481..00000000000 --- a/projects/maxshot/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by MaxShot.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x69C1a51711B061E5935c648beb16e349898B17dF', - ] - }, - base: { - morphoVaultOwners: [ - '0x69C1a51711B061E5935c648beb16e349898B17dF', - ], - }, - arbitrum: { - morphoVaultOwners: [ - '0x69C1a51711B061E5935c648beb16e349898B17dF', - ], - }, - } -} -module.exports = getCuratorExport(configs) diff --git a/projects/mayachain/index.js b/projects/mayachain/index.js deleted file mode 100644 index 92ee702771d..00000000000 --- a/projects/mayachain/index.js +++ /dev/null @@ -1,148 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getCache, get } = require("../helper/http"); -const sdk = require("@defillama/sdk"); -const { nullAddress } = require("../helper/tokenMapping"); - -const chainMapping = { - ETH: "ethereum", - KUJI: "kujira", - BTC: "bitcoin", - THOR: "thorchain", - DASH: "dash", - ARB: "arbitrum", - XRD: "radixdlt", -}; - -const tokenGeckoMapping = { - "ETH.USDT": "tether", - "ETH.WSTETH": "wrapped-steth", - "ETH.PEPE": "pepe", - "ETH.ETH": "ethereum", - "ETH.USDC": "usd-coin", - "ETH.MOG":"mog-coin", - "KUJI.USK": "usk", - "KUJI.KUJI": "kujira", - "THOR.RUNE": "thorchain", - "DASH.DASH": "dash", - "BTC.BTC": "bitcoin", - "ARB.ETH": "ethereum", - "ARB.ARB": "arbitrum", - "ARB.UNI": "uniswap", - "ARB.DAI": "dai", - "ARB.GMX": "gmx", - "ARB.GNS": "gains-network", - "ARB.LINK": "chainlink", - "ARB.PEPE": "pepe", - "ARB.SUSHI": "sushi", - "ARB.TGT": "thorwallet-dex", - "ARB.USDC": "usd-coin", - "ARB.USDT": "tether", - "ARB.WBTC": "wrapped-bitcoin", - "ARB.WSTETH": "wrapped-steth", - "XRD.XRD": "radix", -}; - -const tokenToDecimalMapping = { - "ETH.USDT": 6, - "ETH.WSTETH": 18, - "ETH.PEPE": 18, - "ETH.ETH": 18, - "ETH.USDC": 6, - "ETH.MOG":18, - "KUJI.USK": 8, - "KUJI.KUJI": 8, - "THOR.RUNE": 8, - "DASH.DASH": 8, - "ARB.ETH": 18, - "ARB.ARB": 18, - "ARB.DAI": 18, - "ARB.GLD": 18, - "ARB.GMX": 18, - "ARB.GNS": 18, - "ARB.UNI": 18, - "ARB.LEO": 3, - "ARB.LINK": 18, - "ARB.PEPE": 18, - "ARB.SUSHI": 18, - "ARB.TGT": 18, - "ARB.USDC": 6, - "ARB.USDT": 6, - "ARB.WBTC": 8, - "ARB.WSTETH": 18, - "XRD.XRD": 8, -}; - -async function tvl(api) { - const pools = await getCache("https://midgard.mayachain.info/v2/pools"); - const aChain = api.chain; - - const balances = {}; - await Promise.all(pools.map(addPool)); - return balances; - - async function addPool({ asset: pool, assetDepth, runeDepth }) { - if (aChain === "mayachain") { - sdk.util.sumSingleBalance(balances, "cacao", runeDepth / 1e10); - return; - } - - if (+assetDepth < 1) return; - - let [chainStr, token] = pool.split("."); - let chain = chainMapping[chainStr]; - if (chain !== aChain) return; - - let [baseToken, address] = token.split("-"); - if (chain === "ethereum" || chain === "arbitrum") { - let decimal = tokenToDecimalMapping[chainStr + "." + baseToken]; - if (decimal === undefined || isNaN(decimal)) return - assetDepth = assetDepth * 10 ** (+decimal - 8); - - // e.g. ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48 - address = address && address.includes('-') ? address.split("-")[1] : address - if (address && address.startsWith("0X")) { - address = address.toLowerCase(); - sdk.util.sumSingleBalance(balances, address, assetDepth, chain); - - // eg ETH.ETH - } else if (chainStr === baseToken) { - sdk.util.sumSingleBalance(balances, nullAddress, assetDepth, chain); - } else if (tokenGeckoMapping[pool]) { - if (tokenGeckoMapping[pool] === "ethereum") assetDepth = assetDepth / 1e10; - sdk.util.sumSingleBalance( - balances, - tokenGeckoMapping[pool], - assetDepth / 1e8 - ); - } else { - sdk.log("skipped", pool, Number(assetDepth).toFixed(2)); - } - } else { - // e.g KUJI.KUJI - if (['KUJI'].includes(baseToken)) { - sdk.util.sumSingleBalance(balances, chain, assetDepth / 1e8); - } else if (tokenGeckoMapping[pool]) { - sdk.util.sumSingleBalance( - balances, - tokenGeckoMapping[pool], - assetDepth / 1e8 - ); - } else { - sdk.log("skipped", pool, assetDepth); - } - } - } -} - -module.exports = { - timetravel: false, - methodology: - "Counts assets locked in Asgard vaults on other chains + CACAO in LPs on Mayachain", - mayachain: { - tvl, - }, -}; - -Object.values(chainMapping).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/mayfair/index.js b/projects/mayfair/index.js deleted file mode 100644 index ebf1e190d42..00000000000 --- a/projects/mayfair/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { request } = require("../helper/utils/graphql") -const { cachedGraphQuery } = require('../helper/cache') - -const { toUSDTBalances } = require("../helper/balances") - -const url = "https://squid.subsquid.io/mayfairfund-api/v/v1/graphql" - -async function getStakingData() { - return await request(url, `query StakingAnalytics { - stakingPools(where: {id_eq: "0x3ad426dc2f005b721359a94f8b8d71b8890b3068-0"}) { - tvl - } - } - `) - -} -async function getStaking() { - let staking = 0 - const data = await getStakingData() - staking = data.stakingPools?.[0].tvl; - return toUSDTBalances(staking) -} - -async function tvl(api) { - const { balancerVaults: [{ pools }] } = await cachedGraphQuery('mayfair', url, `{ balancerVaults { pools{ id vaultId } } }`) - const data = await api.multiCall({ abi: 'function getPoolTokens(bytes32) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)', calls: pools.map(i => ({ target: i.vaultId, params: i.id })) }) - data.forEach(({ tokens, balances }) => api.addTokens(tokens.slice(1), balances.slice(1))) - return api.getBalances() -} - -module.exports = { - timetravel: false, - doublecounted: true, // tokens are in balancer pools - arbitrum: { - tvl, - staking: getStaking - } -} diff --git a/projects/mcdex/index.js b/projects/mcdex/index.js deleted file mode 100644 index f801a5f6bf3..00000000000 --- a/projects/mcdex/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -async function ethereum(timestamp, block) { - return sumTokens2({ block, owner: '0x220a9f0DD581cbc58fcFb907De0454cBF3777f76', tokens: [nullAddress] }) -} - -module.exports = { - methodology: `Includes all locked liquidity in AMM pools, pulling the data from the mcdex subgraph`, - ethereum: { - tvl: ethereum - }, -} - -const config = { - arbitrum: { factory: "0xA017B813652b93a0aF2887913EFCBB4ab250CE65", fromBlock: 219937, }, - bsc: { factory: "0xfb4cd1bf5c5919a29fb894c8ddc4a69a36f5ec87", fromBlock: 11137817, }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ - api, - factory, - eventAbi: 'event CreateLiquidityPool(bytes32 versionKey, address indexed liquidityPool, address indexed governor, address indexed operator, address shareToken, address collateral, uint256 collateralDecimals, bytes initData)', - fromBlock, - }) - return api.sumTokens({ tokensAndOwners: logs.map(log => [log.collateral, log.liquidityPool]) }) - } - } -}) diff --git a/projects/mcs/index.js b/projects/mcs/index.js deleted file mode 100644 index 1b41c49d735..00000000000 --- a/projects/mcs/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -const MCS_TOKEN_ADDRESS = '0xDa5aC8F284537d6eaB198801127a9d49b0CbDff5'; -const USDC_TOKEN_ADDRESS = ADDRESSES.telos.ETH; -const STAKING_CONTRACT_ADDRESS = '0x258FC83E130Bc708541c33900bAEDE83242646db'; - -module.exports = { - kava: { - tvl: staking(STAKING_CONTRACT_ADDRESS, USDC_TOKEN_ADDRESS), - staking: staking(STAKING_CONTRACT_ADDRESS, MCS_TOKEN_ADDRESS), - } -} \ No newline at end of file diff --git a/projects/mdex/index.js b/projects/mdex/index.js deleted file mode 100644 index 56dd73e7e67..00000000000 --- a/projects/mdex/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const factories = { - heco: "0xb0b670fc1F7724119963018DB0BfA86aDb22d941", - bsc: "0x3CD1C46068dAEa5Ebb0d3f55F6915B10648062B8", - bittorrent: "0x36117cc868139FA3AeD4067142C5EF3C121c6a72" -}; - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(factories).forEach(chain => { - const factory = factories[chain] - module.exports[chain] = { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true }) - } -}) - -Object.keys(module.exports.heco).forEach(key => module.exports.heco[key] = () => ({})) \ No newline at end of file diff --git a/projects/meanfinance/addresses.js b/projects/meanfinance/addresses.js deleted file mode 100644 index 5139a45ed63..00000000000 --- a/projects/meanfinance/addresses.js +++ /dev/null @@ -1,69 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const V1_POOLS = [ - { pool: '0x8124cD94629Bd7e902D9B7dabDcef71F9847b232', tokenA: ADDRESSES.ethereum.DAI, tokenB: ADDRESSES.ethereum.WETH }, - { pool: '0x9a2789dd698D010f3d6Bb5Bf865369A734D43f83', tokenA: ADDRESSES.ethereum.WBTC, tokenB: ADDRESSES.ethereum.DAI }, - { pool: '0xa649C9306896f90d6f8a3366f29be10557461144', tokenA: ADDRESSES.ethereum.YFI, tokenB: ADDRESSES.ethereum.WETH }, - { pool: '0xC62D0265ADCe0719373661FFF26d93980f5e6Fc0', tokenA: ADDRESSES.ethereum.USDC, tokenB: ADDRESSES.ethereum.WETH }, - { pool: '0xAc324adB90eDA530884eB0f5BE58614c6249484a', tokenA: ADDRESSES.ethereum.WETH, tokenB: '0xD291E7a03283640FDc51b121aC401383A46cC623' }, - { pool: '0x82Eb5b1F3A2286903F5918f8a42Cc84A2ea500fb', tokenA: ADDRESSES.ethereum.WETH, tokenB: ADDRESSES.ethereum.USDT }, - { pool: '0x59aCef0FC104EDe425DF5CD3a1677A09e7e025cD', tokenA: '0x2602278EE1882889B946eb11DC0E810075650983', tokenB: ADDRESSES.ethereum.WETH }, -] - -const TOKENS_IN_LEGACY_VERSIONS = { - optimism: [ - '0x00f932f0fe257456b32deda4758922e56a4f4b42', // PAPER - '0x1da650c3b2daa8aa9ff6f661d4156ce24d08a062', // DCN - '0x296f55f8fb28e498b858d0bcda06d955b2cb3f97', // STG - '0x298b9b95708152ff6968aafd889c6586e9169f1d', // sBTC - '0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6', // LINK - ADDRESSES.tombchain.FTM, // WETH - ADDRESSES.optimism.OP, // OP - ADDRESSES.optimism.BitANT, // BitANT - ADDRESSES.base.DAI, // LYRA - '0x65559aa14915a70190438ef90104769e5e890a00', // ENS - ADDRESSES.optimism.WBTC, // WBTC - '0x6fd9d7ad17242c41f7131d257212c54a0e816691', // UNI - ADDRESSES.optimism.USDC, // USDC - '0x7fb688ccf682d58f86d7e38e03f9d22e7705448b', // RAI - '0x8700daec35af8ff88c16bdf0418774cb3d7599b4', // SNX - ADDRESSES.optimism.sUSD, // sUSD - ADDRESSES.optimism.USDT, // USDT - '0x9bcef72be871e61ed4fbbc7630889bee758eb81d', // rETH - '0x9e1028f5f1d5ede59748ffcee5532509976840e0', // PERP - ADDRESSES.optimism.DAI, // DAI - '0xe0bb0d3de8c10976511e5030ca403dbf4c25165b', // 0xBTC - ADDRESSES.optimism.sETH, // sETH - '0xf98dcd95217e15e05d8638da4c91125e59590b07', // KROM - ], - polygon: [ - '0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a', // SUSHI - ADDRESSES.polygon.WMATIC_2, // WMATIC - '0x172370d5cd63279efa6d502dab29171933a610af', // CRV - ADDRESSES.polygon.WBTC, // WBTC - ADDRESSES.polygon.USDC, // USDC - '0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b', // AVAX - '0x3066818837c5e6ed6601bd5a91b0762877a6b731', // UMA - '0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4', // stMATIC - ADDRESSES.polygon.FRAX, // FRAX - '0x4e3decbb3645551b8a19f0ea1678079fcb33fb4c', // jEUR - '0x50b728d8d964fd00c2d0aad81718b71311fef68a', // SNX - '0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39', // LINK - '0x5fe2b58c013d7601147dcdd68c143a77499f5531', // GRT - '0x6f7c932e7684666c9fd1d44527765433e01ff61d', // MKR - ADDRESSES.polygon.WETH_1, // WETH - '0x831753dd7087cac61ab5644b308642cc1c33dc13', // QUICK - '0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c', // COMP - ADDRESSES.polygon.DAI, // DAI - '0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3', // BAL - '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4', // MANA - '0xa3fa99a148fa48d14ed51d610c367c61876997f1', // miMATIC - '0xb33eaad8d922b1083446dc23f610c2567fb5180f', // UNI - '0xbbba073c31bf03b8acf7c28ef0738decf3695683', // SAND - ADDRESSES.polygon.USDT, // USDT - '0xd6df932a45c0f255f85145f286ea0b292b21c90b', // AAVE - '0xda537104d6a5edd53c6fbba9a898708e465260b6', // YFI - ] -} - -module.exports = { V1_POOLS, TOKENS_IN_LEGACY_VERSIONS } - diff --git a/projects/meanfinance/index.js b/projects/meanfinance/index.js deleted file mode 100644 index 0fa35f6c9d6..00000000000 --- a/projects/meanfinance/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const { V1_POOLS, TOKENS_IN_LEGACY_VERSIONS } = require("./addresses"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -const YIELD_VERSION = (chain) => { - if (chain == 'rsk') return '0x8CC0Df843610cefF7f4AFa01100B6abf6756Bdf2'; - else return '0xA5AdC5484f9997fBF7D405b9AA62A7d88883C345'; -} -const YIELDLESS_VERSION = '0x059d306A25c4cE8D7437D25743a8B94520536BD5' -const VULN_VERSION = '0x230C63702D1B5034461ab2ca889a30E343D81349' -const BETA_VERSION = '0x24F85583FAa9F8BD0B8Aa7B1D1f4f53F0F450038' - -const LEGACY_VERSIONS = { - optimism: [BETA_VERSION, VULN_VERSION, YIELDLESS_VERSION], - polygon: [VULN_VERSION, YIELDLESS_VERSION] -} - -async function getTokensInChain(chain) { - const data = await getConfig('mean-finance/'+chain, `https://api.balmy.xyz/v1/dca/networks/${chain}/tokens?includeNotAllowed`) - return data.map(({ address }) => address) -} - -function getV2TvlObject(chain) { - return { - tvl: (_, __, chainBlocks) => getV2TVL(chain, chainBlocks[chain]) - } -} - -async function getV2TVL(chain, block) { - const legacyVersions = LEGACY_VERSIONS[chain] ?? [] - const legacyTokens = TOKENS_IN_LEGACY_VERSIONS[chain] ?? [] - const tokens = await getTokensInChain(chain) - const versions = [ - ...legacyVersions.map(contract => ({ contract, tokens: legacyTokens })), - { contract: YIELD_VERSION(chain), tokens } - ] - - const toa = versions.map(({ contract, tokens }) => tokens.map(t => ([t, contract]))).flat() - return sumTokens2({ chain, block, tokensAndOwners: toa}) -} - -async function ethTvl(timestamp, block) { - const balances = await getV2TVL('ethereum', block) - return ethV1Tvl(block, balances) -} - -async function ethV1Tvl(block, balances = {}) { - const toa = [] - // Calls for tokens in pair and balances of them then adds to balance - for (let i = 0; i < V1_POOLS.length; i++) { - const { pool, tokenA, tokenB } = V1_POOLS[i] - toa.push([tokenA, pool], [tokenB, pool]) - } - - return sumTokens2({ balances, tokensAndOwners: toa, block, }); -} - -module.exports = { - ethereum: { - tvl: ethTvl - }, - optimism: getV2TvlObject('optimism'), - polygon: getV2TvlObject('polygon'), - arbitrum: getV2TvlObject('arbitrum'), - bsc: getV2TvlObject('bsc'), - xdai: getV2TvlObject('xdai'), - moonbeam: getV2TvlObject('moonbeam'), - avax: getV2TvlObject('avax'), - rsk: getV2TvlObject('rsk'), - base: getV2TvlObject('base'), - hallmarks: [ - [1650082958, "Protocol is paused due to non-critical vulnerability"], - [1654057358, "Deployment on Optimism"], - [1668006000, "Deployment on Arbitrum"], - [1672099200, "Deployment on Ethereum"], - [1685577600, "Deployment on BNB"], - ] -}; diff --git a/projects/meeds/index.js b/projects/meeds/index.js deleted file mode 100644 index 24295af042f..00000000000 --- a/projects/meeds/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - methodology: "Xmeeds and TokenFactory contracts are used for calculating staking/farm volume", - ethereum: { - tvl: () => ({}), - staking: staking(["0x44D6d6aB50401Dd846336e9C706A492f06E1Bcd4", "0x1B37D04759aD542640Cc44Ff849a373040386050",], '0x8503a7b00B4b52692cC6c14e5b96F142E30547b7') - }, -} \ No newline at end of file diff --git a/projects/megalon/index.js b/projects/megalon/index.js deleted file mode 100644 index 1b3e90a3d91..00000000000 --- a/projects/megalon/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getUniTVL} = require("../helper/unknownTokens"); - -module.exports = { - era: { - tvl: getUniTVL({ factory: "0xb618Db8D97db96f31C1eb0Fb99D9b5b372c2BdD3", useDefaultCoreAssets: true,}) - }, -}; \ No newline at end of file diff --git a/projects/megamoon/index.js b/projects/megamoon/index.js deleted file mode 100644 index 98ba7c62d97..00000000000 --- a/projects/megamoon/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const owners = [ - "0xA73dA7954834260d7909c697Eb6022e46A5924DE", - "0xC5d1D50d9517db581DE2Ceb6e5d33B7750b0a04A", - "0x4c00e75A710E92ea915a865379b07caDf3e6C45e", -]; - -const config = { - polygon: { - tokens: [ADDRESSES.polygon.USDT, nullAddress], - }, -}; - -module.exports = {}; - -Object.keys(config).forEach((chain) => { - const { tokens } = config[chain]; - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens }), - }; -}); diff --git a/projects/megatonfi/index.js b/projects/megatonfi/index.js deleted file mode 100644 index 2aba896ef48..00000000000 --- a/projects/megatonfi/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require('../helper/http') -const { transformDexBalances, } = require('../helper/portedTokens') -const nullAddress = ADDRESSES.null -const megaAddress = '0:5febe62847dc7296897f3708c7acb92b4c50192425fe6ec77e5f1ffdd3639a3d' - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - ton: { - tvl: async () => { - const lpInfoList = await get('https://megaton.fi/api/lp/infoList'); - const pools = lpInfoList[0] - - return transformDexBalances({ - chain: 'ton', - data: pools.map(pool => ({ - token0: pool.token0 ?? nullAddress, - token1: pool.token1 ?? nullAddress, - token0Bal: pool.amount0, - token1Bal: pool.amount1, - })) - }) - }, - staking: async () => { - let mega_vault = "EQD9Z7L2oLpWvW-NZFB9njBGg2JqIE2rpJ_Fcocg9IEQ-EGF" - - const res = await get(`https://tonapi.io/v2/accounts/${mega_vault}/jettons?currencies=mega`); - const vaultMegaWallet = res.balances.find((data)=> data.jetton.address==megaAddress) - - return {['ton:'+ADDRESSES.ton.MEGA]: vaultMegaWallet.balance} - } - } -} - diff --git a/projects/meld-gold/index.js b/projects/meld-gold/index.js deleted file mode 100644 index 0d1058f7c90..00000000000 --- a/projects/meld-gold/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { tokens, getAssetInfo } = require('../helper/chain/algorand') -const sdk = require('@defillama/sdk') - -async function tvl() { - const abi = 'function latestRoundData() view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)' - const api = new sdk.ChainApi({}) - let totalMeldMarketCap = 0 - - // Gold is priced in tory oz, silver is priced in oz, but Meld Tokens are both priced in grams - const ozToGrams = 31.10347687 - - // Meld tokens - const assetInfo = [ - { - assetId: tokens.gold$, - grams: ozToGrams, - priceFeed: '0x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6', - }, - { - assetId: tokens.silver$, - grams: ozToGrams, - priceFeed: '0x379589227b15F1a12195D3f2d90bBc9F31f95235', - }, - ] - - // Get total market cap of all Meld tokens - for (const asset of assetInfo) { - const { assetId, grams, priceFeed } = asset - const { answer: price } = await api.call({ abi, target: priceFeed }) - const assetInfo = await getAssetInfo(assetId) - const circulatingSupply = assetInfo.circulatingSupply - const marketCap = (circulatingSupply / grams / 10 ** 6) * (price / 10 ** 8) - totalMeldMarketCap += marketCap - } - - return { tether: totalMeldMarketCap } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - algorand: { - tvl, - }, -} diff --git a/projects/meld/index.js b/projects/meld/index.js deleted file mode 100644 index 0a13591e3b3..00000000000 --- a/projects/meld/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/cardano') - -module.exports = { - timetravel: false, - cardano: { - staking: sumTokensExport({ owner: 'addr1wxar2qwdzuxfvdyuxsk9aapy93vkkk904mxullqtkp90pmqh0xrmz', tokens: ['6ac8ef33b510ec004fe11585f7c5a9f0c07f0c23428ab4f29c1d7d104d454c44'] }), - tvl: () => ({}), - } -} diff --git a/projects/melegaswap/index.js b/projects/melegaswap/index.js deleted file mode 100644 index 479efb34700..00000000000 --- a/projects/melegaswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport('bsc', '0xb7E5848e1d0CB457f2026670fCb9BbdB7e9E039C', { useDefaultCoreAssets: true, blacklistedTokens: [ - '0x1a515bf4e35AA2DF67109281DE6B3b00Ec37675E', '0x963556de0eb8138e97a85f0a86ee0acd159d210b', -] }) diff --git a/projects/mellow-protocol-v2/index.js b/projects/mellow-protocol-v2/index.js deleted file mode 100644 index 4fa40163334..00000000000 --- a/projects/mellow-protocol-v2/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getConfig } = require('../helper/cache'); - -const config = { - ethereum: {}, - lisk: {}, - bsc: {}, - fraxtal: {} -} - -let _vaultsApiResponse - -async function tvl(api) { - if (!_vaultsApiResponse) _vaultsApiResponse = getConfig('mellow-v2', 'https://points.mellow.finance/v1/vaults') - const vaultsApiResponse = await _vaultsApiResponse; - - const vaults = vaultsApiResponse.filter(vault => vault.chain_id === api.chainId).map(vault => vault.address) - await api.erc4626Sum({ calls: vaults, tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets', permitFailure: true }); -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => module.exports[chain] = { tvl }) \ No newline at end of file diff --git a/projects/mellow/index.js b/projects/mellow/index.js deleted file mode 100644 index b2d37c3f13b..00000000000 --- a/projects/mellow/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0x0c884b56fa7dd33a1f4e8b05e7105217c2456219"; - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }); -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl, - }, -}; diff --git a/projects/meme-dollar/index.js b/projects/meme-dollar/index.js deleted file mode 100644 index 7d1df3a40d4..00000000000 --- a/projects/meme-dollar/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unknownTokens"); - -const PINA_TOKEN_CONTRACT = "0x02814F435dD04e254Be7ae69F61FCa19881a780D"; -const PINA_DAO_CONTRACT = "0xd50B9219C832a762dd9a6929Dc4FeF988f65175b"; -const PINA_LP_CONTRACT = "0x03083F4fE89b899C7887E26bE3E974EbBa11E591"; -const PINA_DONTDIEMEME_CONTRACT = "0xe0bE1793539378cb87b6d4217E7878d53567bcfb"; -const PINA_USDC_LP_CONTRACT = "0x58624E7a53700cb39772E0267ca0AC70f064078B"; -const PINA_MEME_LP_CONTRACT = "0x713afa49478f1a33c3194ff65dbf3c8058406670"; - -module.exports = { - methodology: "counts the number of tokens in Pina pool", - start: '2023-01-17', - ethereum: { - tvl: () => 0, - staking: staking( - [PINA_DAO_CONTRACT, PINA_DONTDIEMEME_CONTRACT], - PINA_TOKEN_CONTRACT - ), - pool2: sumTokensExport({ - owner: PINA_LP_CONTRACT, - tokens: [PINA_USDC_LP_CONTRACT, PINA_MEME_LP_CONTRACT], - resolveLPs: true, - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/meme-wallet/index.js b/projects/meme-wallet/index.js deleted file mode 100644 index 1acd54adc22..00000000000 --- a/projects/meme-wallet/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unknownTokens"); - -const MEME_FACTORY_CONTRACT_ADDRESS = "0xda601604ecd1cb5f12e4522f1138d5419daf0ee0"; -const WLD_CONTRACT_ADDRESS = ADDRESSES.wc.WLD; - -module.exports = { - methodology: "counts the TVL of tokens created by meme factory", - start: '2024-12-10', - wc: { - tvl: sumTokensExport({ owner: MEME_FACTORY_CONTRACT_ADDRESS, tokens: [WLD_CONTRACT_ADDRESS] }), - }, -}; \ No newline at end of file diff --git a/projects/memebox-fi/index.js b/projects/memebox-fi/index.js deleted file mode 100644 index f4d3a66990c..00000000000 --- a/projects/memebox-fi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'sonic': '0x079463f811e6EB2E226908E79144CDDB59a7fB71' -}) \ No newline at end of file diff --git a/projects/memecooking/index.js b/projects/memecooking/index.js deleted file mode 100644 index 615d3d10ba9..00000000000 --- a/projects/memecooking/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { addTokenBalances } = require("../helper/chain/near"); - -const MEMECOOKING_CONTRACT = 'meme-cooking.near'; -const FT_NEAR = 'wrap.near' - -module.exports = { - methodology: 'Amount of wNEAR in the MEMECOOKING contract', - near: { - tvl: () => addTokenBalances([FT_NEAR], MEMECOOKING_CONTRACT), - } -}; \ No newline at end of file diff --git a/projects/memedex/index.js b/projects/memedex/index.js deleted file mode 100644 index 0316d5933e4..00000000000 --- a/projects/memedex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - misrepresentedTokens: true, - conflux: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x62283c20Ac4c7B1E61BB3C27bE2fA0880ee982Ea'}), - } -} \ No newline at end of file diff --git a/projects/memejob/index.js b/projects/memejob/index.js deleted file mode 100644 index 428f07af531..00000000000 --- a/projects/memejob/index.js +++ /dev/null @@ -1,24 +0,0 @@ - -const { get } = require('../helper/http') -const MIRROR_NODE_API_V1 = 'https://mainnet-public.mirrornode.hedera.com/api/v1' -const MEMEJOB_CONTRACT = "0x950230ea77Dc168df543609c2349C87dea57e876"; - -async function tvl() { - const response = await get(`${MIRROR_NODE_API_V1}/accounts/${MEMEJOB_CONTRACT}`); - - if (response && response.balance) { - const totalHbarBalance = response.balance.balance / 100000000; - return { - "hedera-hashgraph": totalHbarBalance - }; - } - - throw new Error(`Failed to fetch balance for contract: ${MEMEJOB_CONTRACT}`); -} - -module.exports = { - methodology: "TVL is represented by all HBAR held in active bonding curves within MemeJob.", - hedera: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/memeswap/index.js b/projects/memeswap/index.js deleted file mode 100644 index 2976c38c218..00000000000 --- a/projects/memeswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const factory = '0x80DA434B49b4d3481aF81D58Eaa3817c888377d4' -const vault = '0x21F18c02B2487024018Ef3a4D95f9D436867743d' - -async function tvl(api) { - const pairs = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: factory }) - pairs.push(vault) - return api.sumTokens({ owners: pairs, token: ADDRESSES.berachain.WBERA }) -} - -module.exports = { - berachain: { - tvl - }, -} \ No newline at end of file diff --git a/projects/memeta/index.js b/projects/memeta/index.js deleted file mode 100644 index ce86a665032..00000000000 --- a/projects/memeta/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); - -async function tvl(api) { - const MEMETA_CONTRACT_ADDRESS = "0xD76A1A03C4873042c50ba77cE455C793C70d1b2d"; - - return api.sumTokens({ - owner: MEMETA_CONTRACT_ADDRESS, - tokens: [ - ADDRESSES.manta.WETH, - ADDRESSES.manta.USDC, - ADDRESSES.manta.USDT, - ADDRESSES.manta.WBTC, - ], - }); -} - -module.exports = { - manta: { tvl }, -}; \ No newline at end of file diff --git a/projects/mendi-finance/index.js b/projects/mendi-finance/index.js deleted file mode 100644 index cc5132525b1..00000000000 --- a/projects/mendi-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const { staking } = require("../helper/staking"); - -module.exports = { - methodology: - "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - linea: { - ...compoundExports2({ comptroller: '0x1b4d3b0421dDc1eB216D230Bc01527422Fb93103'}), - staking: staking( - [ - "0x150b1e51738cdf0ccfe472594c62d7d6074921ca", - "0xcf8dedcdc62317beaedfbee3c77c08425f284486", - ], - "0x43e8809ea748eff3204ee01f08872f063e44065f" - ), - }, -}; diff --git a/projects/mensa/index.js b/projects/mensa/index.js deleted file mode 100644 index fd999d8bedc..00000000000 --- a/projects/mensa/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -module.exports = { - deadFrom: 1648765747, - misrepresentedTokens: true, - methodology: 'Using the same methodology applied to other lending platforms, TVL for Mensa consists deposits made to the protocol and borrowed tokens are not counted.', - fantom:{ - tvl: () => 0 - }, -}; diff --git a/projects/mento/index.js b/projects/mento/index.js deleted file mode 100644 index 1ceb457016e..00000000000 --- a/projects/mento/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, } = require('../helper/unwrapLPs') -const { sumTokensExport, } = require('../helper/sumTokens') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: 'TVL counts all assets deposited as collateral to mint Mento stablecoins.', - celo: { - tvl: sumTokensExport({ - owners: [ - '0x9380fA34Fd9e4Fd14c06305fd7B6199089eD4eb9', - '0xD3D2e5c5Af667DA817b2D752d86c8f40c22137E1', - '0x87647780180b8f55980c7d3ffefe08a9b29e9ae1', - '0x9d65E69aC940dCB469fd7C46368C1e094250a400' - ], - tokens: [nullAddress, ADDRESSES.celo.STEUR, ADDRESSES.celo.USDT_1, ADDRESSES.celo.USDC, ADDRESSES.celo.axlUSDC, ADDRESSES.celo.USDGLO], - chain: 'celo', - }) - }, - ethereum: { - tvl: sumTokensExport({ - owners: [ - '0xd0697f70E79476195B742d5aFAb14BE50f98CC1E', - '0xD3D2e5c5Af667DA817b2D752d86c8f40c22137E1', - '0x16B34Ce9A6a6F7FC2DD25Ba59bf7308E7B38E186', - ], - tokens: [nullAddress, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.STETH, ADDRESSES.ethereum.WBTC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.sUSDS], - chain: 'ethereum', - }) - }, - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.mento }) - } -} diff --git a/projects/meowfinance/abi.json b/projects/meowfinance/abi.json deleted file mode 100644 index 83c72d22eb5..00000000000 --- a/projects/meowfinance/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "token": "address:token", - "totalToken": "uint256:totalToken", - "vaultDebtVal": "uint256:vaultDebtVal", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address stakeToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accMeowPerShare)", - "lpToken": "address:lpToken", - "masterchef": "address:masterChef", - "pid": "uint256:pid", - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)" -} \ No newline at end of file diff --git a/projects/meowfinance/index.js b/projects/meowfinance/index.js deleted file mode 100644 index c3a033e0771..00000000000 --- a/projects/meowfinance/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const abi = require("./abi.json"); -const { pool2 } = require("../helper/pool2"); -const { staking } = require("../helper/staking"); - -const meow = "0x41F4CC9613E31d4E77C428b40D53537Da24264Ee"; -const meowMining = "0xba1a3dACa919616aA462E93A80EFbe82753f9087"; -const meowFtm = "0x150Aeb5389d56E258c2bbb42c7e67e944EDEE913"; - -const workers = [ - "0x5f1D549826e1AE30D653aD17e7277Fb7C6AC7EDD", // SpiritswapWorker_USDC_FTM_Spirit_Worker - "0x9719F0e303db3aA8F04199b74654925516a6E9d5", // SpiritswapWorker_fUSDT_FTM_Spirit_Worker - "0x0aE50E933491Cc541840f3c4982fd290885abfb6", // SpookyswapWorker_BNB_FTM_Spooky_Worker - "0x5a1F2E391873ef63F727fEA1eDe8E4F6cf98b386", // SpookyswapWorker_BOO_FTM_Spooky_Worker - "0x585AC8672F43f81f3e39c2E22680F071eBbB6838", // SpookyswapWorker_BTC_FTM_Spooky_Worker - "0x3AE6751A57b5e72E52451E8C51E5f7F295B419Bc", // SpookyswapWorker_DAI_FTM_Spooky_Worker - "0xa5FA401ad612246fD57337472254E339fE02d3Be", // SpookyswapWorker_ETH_FTM_Spooky_Worker - "0x2e66442814bb4555276614E6C62d1cc3AF64a721", // SpookyswapWorker_LINK_FTM_Spooky_Worker - "0xAd93a6f25a9e50ee7DeaA270f50418EBC57dA021", // SpookyswapWorker_SUSHI_FTM_Spooky_Worker - "0x42289105e0271535AB631098e0cfC358c01E7c18", // SpookyswapWorker_USDC_FTM_Spooky_Worker - "0x498bfdF61Ab7ca100E246DB0bEd893600329e957", // SpookyswapWorker_WFTM_BOO_Spooky_Worker - "0xEa61Ecd00dd603bA6C69E4B4323310285966F450", // SpookyswapWorker_WFTM_BTC_Spooky_Worker - "0x4293F2f8B6817633D92b6FCA585Da42d856BFfA4", // SpookyswapWorker_WFTM_DAI_Spooky_Worker - "0x6F2E8565335dDaC37AAc62a855e452D17ee98038", // SpookyswapWorker_WFTM_ETH_Spooky_Worker - "0xfB1d7b5Bf5E59bF158553cdEbf8CF892BD3Ec503", // SpookyswapWorker_WFTM_USDC_Spooky_Worker - "0xF7C0B655C7C676A715c5CEfa39A887779B2ab2b0", // SpookyswapWorker_WFTM_fUSDT_Spooky_Worker - "0xC14f48826EB564201Bf7D7111f0b46e2301bF36A", // SpookyswapWorker_fUSDT_FTM_Spooky_Worker -]; - -async function calcTvl(api, borrow) { - if (borrow) return {} - const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: meowMining}) - return api.sumTokens({ owner: meowMining, tokens: poolInfos.map(p => p.stakeToken), blacklistedTokens: [meowFtm] }) -} - -async function tvl(api) { - await calcTvl(api, false); - const lpTokens = await api.multiCall({ abi: abi.lpToken, calls: workers}) - const shares = await api.multiCall({ abi: 'uint256:totalShare', calls: workers}) - const bals = (await api.multiCall({ abi: 'function shareToBalance(uint256) view returns (uint256)', calls: lpTokens.map((lp, i) => ({ target: lp, params: shares[i] })), permitFailure: true})).map(b => b || 0) - api.add(lpTokens, bals) -} - -async function borrowed(api) { - return await calcTvl(api, true); -} - -module.exports = { - fantom: { - tvl, - borrowed, - pool2: pool2(meowMining, [meowFtm],), - staking: staking(meowMining, meow,), - }, -}; diff --git a/projects/meowl/index.js b/projects/meowl/index.js deleted file mode 100644 index 1f3585af454..00000000000 --- a/projects/meowl/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const MEOWL = "0x1f1f26c966f483997728bed0f9814938b2b5e294"; -const stakingContract = "0x679a376dab6318d62de3c87292e207532c8607a9"; - -module.exports = { - methodology: `TVL for MEOWL consists of the staking of MEOWL tokens`, - ethereum: { - tvl: () => ({}), - staking: staking([stakingContract, '0x1e8ba7064e31bb3E9C041C2c2825833f499C2046'], [MEOWL, '0x556bB0B27E855e6f2cEBb47174495B9BBEB97fF1']), - } -} \ No newline at end of file diff --git a/projects/meowswap.fi/index.js b/projects/meowswap.fi/index.js deleted file mode 100644 index aab9eb87a88..00000000000 --- a/projects/meowswap.fi/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { transformDexBalances } = require('../helper/portedTokens'); -const { post } = require('../helper/http'); -async function tvl() { - // addr1w9a3urry4uuwjp2hjawlqfu9lqgvzead3mz3pt7kle5rwng6gu8yl - const Pairs = (await post('https://api.meowswap.fi/?method=Info.Pairs', { "jsonrpc": "2.0", "method": "Info.Pairs", "id": 3, "params": {} })).result.data - - let totalLiquid = 0; - const data = [] - await Pairs.forEach((row) => { - data.push({ - token0: row.token1, - token1: row.token2, - token0Bal: row.pair_sum_q1, - token1Bal: row.pair_sum_q2, - }) - if (row.token1 === 'ADA') { - totalLiquid += row.pair_sum_q1 * 2 - } else if (row.token2 === 'ADA') { - totalLiquid += row.pair_sum_q2 * 2 - } - }); - return transformDexBalances({ chain: 'cardano', data }); -} - -module.exports = { - methodology: "Data is retrieved from the api at https://api.meowswap.fi/", - timetravel: false, - cardano: { - tvl: () => ({}) - } -} diff --git a/projects/meowswap/index.js b/projects/meowswap/index.js deleted file mode 100644 index fc74cfef13a..00000000000 --- a/projects/meowswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const meow = "0xE8658B07c555E9604329A6a0A82FF6D9c6F68D2F"; -const masterchef = "0x4bdd4BdEf3a2e3b707012A31cd993149fE6dE7DF"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", meow) -} \ No newline at end of file diff --git a/projects/merchant-moe-lb/index.js b/projects/merchant-moe-lb/index.js deleted file mode 100644 index 9f4e59c4e1d..00000000000 --- a/projects/merchant-moe-lb/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - mantle: '0xa6630671775c4EA2743840F9A5016dCf2A104054' -}) \ No newline at end of file diff --git a/projects/merchant-moe/index.js b/projects/merchant-moe/index.js deleted file mode 100644 index 1e5a585c6ab..00000000000 --- a/projects/merchant-moe/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - mantle:{ - tvl: getUniTVL({ factory: '0x5bef015ca9424a7c07b68490616a4c1f094bedec' }), - //staking: staking("0xE92249760e1443FbBeA45B03f607Ba84471Fa793", "0x4515A45337F461A11Ff0FE8aBF3c606AE5dC00c9") - }, -}; \ No newline at end of file diff --git a/projects/merchant/index.js b/projects/merchant/index.js deleted file mode 100644 index bfb0bcb625e..00000000000 --- a/projects/merchant/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - - - -module.exports = { - hallmarks: [ - [1720051200,"Rug Pull"] - ], - deadFrom: '2024-07-06', - methodology: - "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - merlin: { - ...compoundExports2({ comptroller: '0x1F2Aa5598f6543090C4c61A90917909fb5560A43'}), - }, - linea: { - ...compoundExports2({ comptroller: '0xE54F37bbb8b7417EE4e0447DA0F8b922Fc7bb8Fa'}), - }, -} - -module.exports.merlin.borrowed = () => ({}) // bad debt -module.exports.linea.borrowed = () => ({}) // bad debt - diff --git a/projects/mercurial.js b/projects/mercurial.js deleted file mode 100644 index 8220bbf135d..00000000000 --- a/projects/mercurial.js +++ /dev/null @@ -1,48 +0,0 @@ -const { Program, } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID, decodeAccount, getConnection } = require('./helper/solana') -const { PublicKey } = require("@solana/web3.js"); - -const VAULT_PROGRAM_ID = new PublicKey('24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi') -function getTokenAccount(owner,) { - if (typeof owner === 'string') owner = new PublicKey(owner) - const [associatedTokenAddress] = PublicKey.findProgramAddressSync(["token_vault", owner.toBuffer()], VAULT_PROGRAM_ID); - return associatedTokenAddress.toString() -} - -async function getStableSwapTokenAccounts() { - const connection = getConnection() - - const programPublicKey = new PublicKey('MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky') - const programAccounts = await connection.getProgramAccounts(programPublicKey, { - filters: [{ dataSize: 265 }] - }); - - return programAccounts.map((account) => { - const i = decodeAccount('meteoraStablePool', account.account) - return i.tokenAccounts.map(i => i.toString()).filter(i => i !== '11111111111111111111111111111111') // remove empty accounts - }).flat() -} - -async function tvl(api) { - const provider = getProvider() - const programId = 'Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB' - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const pools = await program.account.pool.all() - const tokenAccounts = await getStableSwapTokenAccounts() - api.log('meteora pools', pools.length) - pools.forEach(({ account: i }) => { - tokenAccounts.push(getTokenAccount(i.aVault)) - tokenAccounts.push(getTokenAccount(i.bVault)) - }) - await sumTokens2({ tokenAccounts, api }) - api.removeTokenBalance('solana:AwRErBEFGTnohzfLeRSBH9HddQEy2oeRxnWLrbvFFh95') -} - -module.exports = { - isHeavyProtocol: true, - timetravel: false, - solana: { tvl, }, - methodology: - "To obtain the Mercurial TVL we make on-chain calls using the function getTokenBalance() that uses the address of the token and the address of the contract where the token is located. The addresses used are the 3pool addresses and the SOL 2pool address where the corresponding tokens were deposited and these addresses are hard-coded. This returns the number of tokens held in each contract. We then use Coingecko to get the price of each token in USD to export the sum of all tokens.", -} \ No newline at end of file diff --git a/projects/mercurical-vaults/index.js b/projects/mercurical-vaults/index.js deleted file mode 100644 index 011663b58f1..00000000000 --- a/projects/mercurical-vaults/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, } = require("../helper/solana"); -const sdk = require('@defillama/sdk') - -const programId = '24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi' - -async function tvl(api) { - const provider = getProvider() - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const vaults = (await program.account.vault.all()).map(i => i.account) - const tokens = vaults.map(i => i.tokenMint.toString()) - vaults.forEach((i, idx) => api.add(tokens[idx], +i.totalAmount)) -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -} diff --git a/projects/mercurity/abi.json b/projects/mercurity/abi.json deleted file mode 100644 index af35e25ecd2..00000000000 --- a/projects/mercurity/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getCurrentTokens": "address[]:getCurrentTokens" -} \ No newline at end of file diff --git a/projects/mercurity/index.js b/projects/mercurity/index.js deleted file mode 100644 index ca9c41a6063..00000000000 --- a/projects/mercurity/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const abi = require("./abi.json"); -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const pool_factoryV1 = "0x20dC7DA7cFc8F5b465060496a170229dc4A47A87"; -const pool_factoryV2 = "0xCD21ef2220596cba4A7DaE59b5eeeA6dB7859df7"; - -const toAddr = (d) => "0x" + d.substr(26); - -const calc = async (balances, factory, api) => { - const START_BLOCK = 11259517; // 11971199 -> start block for Factory Pool V2 - const events = ( - await getLogs({ - target: factory, - topic: `LOG_NEW_POOL(address,address)`, - api, - fromBlock: START_BLOCK, - }) - ); - - const pools = events.map((event) => toAddr(event.topics[2])); - const tokens = await api.multiCall({ - calls: pools, - abi: abi.getCurrentTokens, - }) - const tokensAndOwners = [] - tokens.forEach((t, i) => t.forEach(j => tokensAndOwners.push([j, pools[i]]))) - return sumTokens2({ api, tokensAndOwners, balances }) -}; - -const ethTvl = async (api) => { - const balances = {}; - - await Promise.all([ - /*** Pool V1 TVL Portion ***/ - calc(balances, pool_factoryV1, api), - /*** Pool V2 TVL Portion ***/ - calc(balances, pool_factoryV2, api), - ]) - - return balances; -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - methodology: - "Counts tvl on the Pools through MFactory (V1 and V2) Contracts", -}; diff --git a/projects/meridian-amm/index.js b/projects/meridian-amm/index.js deleted file mode 100644 index 7bb2abf4021..00000000000 --- a/projects/meridian-amm/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); - -const meridianLensAddress = "23e71cc9821bbe85404ab9850694cd319701687265bb18740af067843fc81f1e"; - -async function getPools(lensAddress) { - return function_view({ functionStr: `${lensAddress}::lens::get_all_pools_info`, type_arguments: [], args: [], chain: 'move' }) -} - -module.exports = { - timetravel: false, - methodology: - "Aggregates TVL in all pools in Meridian's AMM.", - move: { - tvl: async (api) => { - const poolInfos = await getPools(meridianLensAddress) - for (const poolInfo of poolInfos) { - const assets = poolInfo.assets_metadata.map(asset => asset.inner) - const balances = poolInfo.balances - - for (let i = 0; i < assets.length; i++) { - api.add(assets[i], balances[i]); - } - } - - }, - }, -}; \ No newline at end of file diff --git a/projects/meridian-lend/abi.json b/projects/meridian-lend/abi.json deleted file mode 100644 index 99b7b9c8651..00000000000 --- a/projects/meridian-lend/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllOTokens": "function getAllOTokens() view returns (tuple(string symbol, address tokenAddress)[])" - } \ No newline at end of file diff --git a/projects/meridian-lend/index.js b/projects/meridian-lend/index.js deleted file mode 100644 index 0e49eaf4c52..00000000000 --- a/projects/meridian-lend/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const abi = require('./abi.json'); -const { aaveExports } = require('../helper/aave'); - -function v2(v2Registry) { - abi.getAllATokens = abi.getAllOTokens - return aaveExports('', v2Registry, undefined, undefined, { abis: abi }) -} - -module.exports = { - telos: v2("0xb84171C0824B4F3C0B415706C99A4A8ED5779b75"), - meter: v2("0x64Be9ee529E555860DA0705819138F41247e76E6"), - fuse: v2("0xbdD3d2f93cc1c6C951342C42Ef0795323CE83719"), - taiko: v2("0x8Cf3E0e7aE4eB82237d0931388EA72D5649D76e0"), - tara: v2("0x96a52CdFE64749C146E13F68641073566275433e"), -} \ No newline at end of file diff --git a/projects/meridian-swap/index.js b/projects/meridian-swap/index.js deleted file mode 100644 index c6aba3608ea..00000000000 --- a/projects/meridian-swap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - telos:{ - tvl: getUniTVL({ factory: '0x1F2542D8F784565D526eeaDC9F1ca8Fbb75e5996', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/meridian-trade/index.js b/projects/meridian-trade/index.js deleted file mode 100644 index bc3b1d32742..00000000000 --- a/projects/meridian-trade/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -const base_vault = '0x853a8cE6B6338f5B0A14BCfc97F9D68396099C9C'; -const meter_vault = '0x95cd3F1DE20A29B473FcC1773069316a424c746D'; - -module.exports = { - base: { - tvl: gmxExports({ vault: base_vault, blacklistedTokens: ['0x5e06ea564efcb3158a85dbf0b9e017cb003ff56f'] }), - }, - meter: { - tvl: gmxExports({ vault: meter_vault }) - } -}; diff --git a/projects/meridian/index.js b/projects/meridian/index.js deleted file mode 100644 index 37cab5ccb71..00000000000 --- a/projects/meridian/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getLiquityTvl } = require('../helper/liquity') -const { staking } = require("../helper/staking.js"); - -const BASE_STAKING_ADDRESS = "0xfCcD02F7a964DE33032cb57746DC3B5F9319eaB7" -const BASE_MST_ADDRESS = "0x2F3b1A07E3eFb1fCc64BD09b86bD0Fa885D93552" - -const TELOS_STAKING_ADDRESS = ["0x493A60387522a7573082f0f27B98d78Ca8635e43", "0xE07D7f1C1153bCebc4f772C48A8A8eed1283ecCE"]; -const TELOS_MST_ADDRESS = "0x568524DA340579887db50Ecf602Cd1BA8451b243" - -const FUSE_STAKING_ADDRESS = "0xb513fE4E2a3ed79bE6a7a936C7837f0294AFFEAd"; -const FUSE_MST_ADDRESS = "0x2363Df84fDb7D4ee9d4E1A15c763BB6b7177eAEe" - -module.exports = { - methodology: "Deposited Collateral on Meridian Mint", - base: { - tvl: getLiquityTvl("0x56a901FdF67FC52e7012eb08Cfb47308490A982C"), - staking: staking(BASE_STAKING_ADDRESS, BASE_MST_ADDRESS) - }, - telos: { - tvl: getLiquityTvl("0xb1F92104E1Ad5Ed84592666EfB1eB52b946E6e68"), - staking: staking(TELOS_STAKING_ADDRESS, TELOS_MST_ADDRESS) - }, - fuse: { - tvl: getLiquityTvl("0xCD413fC3347cE295fc5DB3099839a203d8c2E6D9"), - staking: staking(FUSE_STAKING_ADDRESS, FUSE_MST_ADDRESS) - }, - tara: { tvl: getLiquityTvl("0xd2ff761A55b17a4Ff811B262403C796668Ff610D") }, - artela: { tvl: getLiquityTvl("0xd2ff761A55b17a4Ff811B262403C796668Ff610D") }, -}; - -//const { getLiquityTvl } = require("../helper/liquity.js"); - - - diff --git a/projects/meritcircle/index.js b/projects/meritcircle/index.js deleted file mode 100644 index f1874e1715e..00000000000 --- a/projects/meritcircle/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { pool2s } = require("../helper/pool2"); -const { stakings } = require("../helper/staking"); - -const mc = "0x949d48eca67b17269629c7194f4b727d4ef9e5d6"; -const mcPool = "0x5c76aD4764A4607cD57644faA937A8cA16729e39"; -const mcPoolV2 = "0x74aDae862AdCCCF7a7DBF2f7B139AB56e6b0E79D"; -const mcLPPool = "0x44c01e5e4216f3162538914d9c7f5E6A0d87820e"; -const mcLPPoolV2 = "0xebE3CA21e37723E0bE0F519724798fe8EEfF83D1"; -const mcWETHUNILP = "0xcCb63225a7B19dcF66717e4d40C9A72B39331d61"; - -module.exports = { - ethereum: { - tvl: async () => ({}), - pool2: pool2s([mcLPPool, mcLPPoolV2], [mcWETHUNILP]), - staking: stakings([mcPool, mcPoolV2], mc), - }, -}; diff --git a/projects/merkl/index.js b/projects/merkl/index.js deleted file mode 100644 index 0b29666a751..00000000000 --- a/projects/merkl/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const sdk = require("@defillama/sdk"); - -/* -Merkl doesn't have any TVL as no funds are staked on the contracts. -This adapter was made to integrate Merkl in the Yields dashboard. -For more information on Merkl, see here: https://docs.angle.money/side-products/merkl -*/ - -async function tvl() { - const balances = {}; - return balances; -} - -module.exports = { - methodology: - "Merkl is a side product from Angle Labs used to reward concentrated liquidity positions. It doesn't have any TVL. See the yield dashboard for a list of Merkl pools.", - ethereum: { - tvl, - }, - polygon: { - tvl, - }, - optimism: { - tvl, - }, - arbitrum: { - tvl, - }, - base: { - tvl, - }, - polygon_zkevm: { - tvl, - }, -}; diff --git a/projects/merkle-trade/index.js b/projects/merkle-trade/index.js deleted file mode 100644 index 85ec383cb99..00000000000 --- a/projects/merkle-trade/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getResource } = require("../helper/chain/aptos"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const MERKEL_TRADE = - "0x5ae6789dd2fec1a9ec9cccfb3acaf12e93d432f0a3a42c92fe1a9d490b7bbc06"; - -async function tvl(api) { - const { - coin_store: { value }, - } = await getResource( - MERKEL_TRADE, - `${MERKEL_TRADE}::vault::Vault<${MERKEL_TRADE}::vault_type::HouseLPVault,${MERKEL_TRADE}::fa_box::W_USDC>` - ); - api.add(ADDRESSES.aptos.USDC_3, value); - return sumTokens2({ api }) -} - -module.exports = { - timetravel: false, - aptos: { tvl }, -}; diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js deleted file mode 100644 index 8d2762206a1..00000000000 --- a/projects/merlin-l2/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -// https://medium.com/@merlinchaincrypto/merlins-seal-the-biggest-fair-launch-of-layer2-5614001b2582 -// https://bridge.merlinchain.io/api/v1/token_mapping?after=0&size=100 - -module.exports = { - methodology: "Staking tokens via BitStable counts as TVL", - bitcoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.merlin }), - sumBRC20TokensExport({ owners: bitcoinAddressBook.merlin }), - ]), - }, - ethereum: { - tvl: sumTokensExport({ - ownerTokens: [ - [["0x7122985656e38BDC0302Db86685bb972b145bD3C"], "0x147A198d803D4a02b8bEc7CC78be1AbE0C3d93E5",], //sttone - [[ADDRESSES.ethereum.USDC], "0x8bb6cae3f1cada07dd14ba951e02886ea6bba183",],//usdc - [[ADDRESSES.null],"0xC40329D3aE56Af6b0757C3fE53941DDCC3d92671",]] //eth - }), - }, - arbitrum: { - tvl: sumTokensExport({ - owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183",], - tokens: [ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC_CIRCLE] //usdc and usdt - }), - }, - zkfair: { - tvl: sumTokensExport({ - owners: ["0x8E3e71f5c016A3c764D0D0210fF71F15BEa46e3b",], - tokens: ["0x4b21b980d0Dc7D3C0C6175b0A412694F3A1c7c6b", "0x3f97bf3Cd76B5cA9D4A4E9cD8a73C24E32d6C193", "0x813bCb548F99Bc081e5EFeeAa65e3018befb92Ae",ADDRESSES.null,"0x1cD3E2A23C45A690a18Ed93FD1412543f464158F",] // eth usdt and wbtc and usdc and zkf - }), - }, -}; diff --git a/projects/merlin/index.js b/projects/merlin/index.js deleted file mode 100644 index 4c4a8cd1043..00000000000 --- a/projects/merlin/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - start: '2023-05-01', - era: { - tvl: () => 0, - }, - // hallmarks: [ - // ['2023-04-26', 'Project Rugged!'], - // ], - deadFrom: '2023-04-26' -}; diff --git a/projects/merlinlab/index.js b/projects/merlinlab/index.js deleted file mode 100644 index 2f32e98252a..00000000000 --- a/projects/merlinlab/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - bsc: { - tvl: () => ({}), //Project is dead - }, - deadFrom: '2022-03-01' -}; diff --git a/projects/merlinlab/staking.json b/projects/merlinlab/staking.json deleted file mode 100644 index e45ed48db17..00000000000 --- a/projects/merlinlab/staking.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)" -} \ No newline at end of file diff --git a/projects/merlinlab/vault.json b/projects/merlinlab/vault.json deleted file mode 100644 index fd712316f6b..00000000000 --- a/projects/merlinlab/vault.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "stakingToken": "address:stakingToken", - "pid": "uint256:pid" -} \ No newline at end of file diff --git a/projects/merlinswap/index.js b/projects/merlinswap/index.js deleted file mode 100644 index 00298ce19db..00000000000 --- a/projects/merlinswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'merlin': ['0x261507940678Bf22d8ee96c31dF4a642294c0467'], -} // iziswap liquidityManager contracts - - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], }), } -}) \ No newline at end of file diff --git a/projects/mero/abi.json b/projects/mero/abi.json deleted file mode 100644 index da82cfcd552..00000000000 --- a/projects/mero/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "totalUnderlying": "uint256:totalUnderlying", - "getUnderlying": "address:getUnderlying", - "poolsCount": "uint256:poolsCount", - "getPoolAtIndex": "function getPoolAtIndex(uint256 index) view returns (address)" -} \ No newline at end of file diff --git a/projects/mero/index.js b/projects/mero/index.js deleted file mode 100644 index b4c184a1571..00000000000 --- a/projects/mero/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const abi = require("./abi.json"); - -const addressProviders = [ - '0x139c15e21b0f6e43fc397face5de5b7d5ae6874a', - '0xa298d39715AE492e4CAF3Ccb33cBF57abC5238d7', -] - -async function tvl(api) { - const strategies = await api.fetchList({ lengthAbi: abi.poolsCount, itemAbi: abi.getPoolAtIndex, calls: addressProviders}) - const tokens = await api.multiCall({ abi: abi.getUnderlying, calls: strategies}) - const deposits = await api.multiCall({ abi: abi.totalUnderlying, calls: strategies}) - api.add(tokens, deposits) -} - -module.exports = { - methodology: 'Counts the DAI and USDC that has been deposited into the protocol', - ethereum: { - tvl - } -}; \ No newline at end of file diff --git a/projects/meshswap/index.js b/projects/meshswap/index.js deleted file mode 100644 index 076cce62b8b..00000000000 --- a/projects/meshswap/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens'); -const kslp = require('../helper/abis/kslp'); -const sdk = require('@defillama/sdk') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const singlePoolFactory = '0x504722a6eabb3d1573bada9abd585ae177d52e7a' - -async function singlePoolTvl(api) { - const pools = await api.fetchList({ lengthAbi: 'uint8:getPoolCount', itemAbi: 'function getPoolAddressByIndex(uint idx) public view returns (address)', target: singlePoolFactory }) - const tokens = await api.multiCall({ abi: 'address:token', calls: pools }) - const toa = tokens.map((val, i) => ([val, pools[i]])) - return sumTokens2({ api, tokensAndOwners: toa}) -} - -const dexTVL = getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x9f3044f7f9fc8bc9ed615d54845b4577b833282d', - abis: { - allPairsLength: kslp.getPoolCount, - allPairs: kslp.pools, - getReserves: kslp.getCurrentPool, - }, - exports -}) - -module.exports = { - polygon: { - tvl: sdk.util.sumChainTvls([dexTVL, singlePoolTvl]), - staking: staking('0x176b29289f66236c65c7ac5db2400abb5955df13', '0x82362ec182db3cf7829014bc61e9be8a2e82868a') - }, - misrepresentedTokens: true, -} \ No newline at end of file diff --git a/projects/meso-finance/index.js b/projects/meso-finance/index.js deleted file mode 100644 index dcf145f8b0e..00000000000 --- a/projects/meso-finance/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { function_view } = require("../helper/chain/aptos") -const methodologies = require("../helper/methodologies") - -let _poolData - -function getPoolData() { - if (!_poolData) { - _poolData = new Promise(fetchPoolData) - } - - return _poolData - - async function fetchPoolData(resolve, reject) { - try { - const poolAddresses = await getPoolAddresses() - const poolInfos = await Promise.all(poolAddresses.map(getPoolInfo)) - resolve(poolInfos) - } catch (e) { reject(e) } - } - - async function getPoolAddresses() { - const pools = await function_view({ functionStr: "0x68476f9d437e3f32fd262ba898b5e3ee0a23a1d586a6cf29a28add35f253f6f7::meso::pools" }) - return pools['data'].map(obj => { return { coin: obj.key, poolAddress: obj.value.inner } }) - } - - async function getPoolInfo(pool) { - const [poolInfo] = await function_view({ functionStr: "0x68476f9d437e3f32fd262ba898b5e3ee0a23a1d586a6cf29a28add35f253f6f7::lending_pool::pool_info", args: [pool.poolAddress] }) - return { coin: pool.coin, poolSupply: poolInfo.total_reserves, totalDebt: poolInfo.total_debt } - } -} - -module.exports = { - timetravel: false, - methodology: methodologies.lendingMarket, - aptos: { - tvl: async (api) => { - const poolInfos = await getPoolData() - poolInfos.forEach(({ coin, poolSupply, }) => { - api.add(coin, poolSupply) - }) - }, - - borrowed: async (api) => { - const poolInfos = await getPoolData() - poolInfos.forEach(({ coin, totalDebt }) => { - api.add(coin, totalDebt) - }) - } - }, -} \ No newline at end of file diff --git a/projects/mesofinance/index.js b/projects/mesofinance/index.js deleted file mode 100644 index 504d9955662..00000000000 --- a/projects/mesofinance/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const chef = "0x30b65159dB82eFCf8CEde9861bc6B85336310EB2" -const meso = "0x4D9361A86D038C8adA3db2457608e2275B3E08d4" - -module.exports = masterChefExports(chef, "fantom", meso) diff --git a/projects/meson/index.js b/projects/meson/index.js deleted file mode 100644 index a24c39e4d58..00000000000 --- a/projects/meson/index.js +++ /dev/null @@ -1,126 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumToken2, nullAddress, sumTokens2 } = require('../helper/unwrapLPs'); -const { getConfig } = require('../helper/cache') -const defaultOwner = '0x25aB3Efd52e6470681CE037cD546Dc60726948D3' - -const config = { - merlin: { - tokens: [ - ADDRESSES.bsc.iUSD, - '0x480E158395cC5b41e5584347c495584cA2cAf78d', - ADDRESSES.merlin.USDC, - ADDRESSES.merlin.USDT, - '0x9bd60d6FC99843207B8149f9190438C1F81BDdcD', - '0xB5d8b1e73c79483d7750C5b8DF8db45A0d24e2cf', - ADDRESSES.merlin.WBTC_1, - '0xc21d5dEB02248bEa5aC3Ea51695bF2Cd36A4Ad2b', - '0xd5534269e027bCb81d319e4213f665fab011038e', - ], - }, - bsquared: { - tokens: [ - ADDRESSES.bsquared.USDT, - ADDRESSES.bsquared.BSTONE, - '0xa793740863F1710A87070a5918820976ff32B758', - ADDRESSES.bsquared.FDUSD, - ADDRESSES.bsquared.ETH, - ADDRESSES.bsquared.USDC, - ], - id: 'b2', - }, - zkfair: { - tokens: [ - '0x4b21b980d0Dc7D3C0C6175b0A412694F3A1c7c6b', - ], - }, - xlayer: { - tokens: [ - ADDRESSES.astarzk.USDT, - ADDRESSES.xlayer.WETH, - ADDRESSES.xlayer.USDC, - ADDRESSES.astarzk.WBTC, - ], - }, - blast: { - tokens: [ - ADDRESSES.blast.USDB, - '0x58ef828c7b11dbed86291d328beb08f050738c37', - '0x01593B8AaaDc5238F2f5C8597bC1402eB7a48c5f', - ADDRESSES.bsc.iUSD, - ], - }, - tron: { - owner: 'TKWqpzNucNNBMpfaE47F8CLhA8vzfNndH4', - tokens: [ - 'TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq', - 'TE2RzoSV3wFK99w6J9UnnZ4vLfXYoxvRwP', - ADDRESSES.tron.BTT, - 'TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7', - ADDRESSES.tron.USDT, - ADDRESSES.tron.JST, - 'TVj7RNVHy6thbM7BWdSe9G6gXwKhjhdNZS', - ADDRESSES.tron.USDC, - ADDRESSES.tron.USDD, - ADDRESSES.tron.USDJ, - ADDRESSES.tron.WTRX, - ], - }, - taiko: { id: 'taiko' }, - ancient8: { id: 'ancient8' }, - arbitrum: { id: 'arb' }, - aurora: {}, - avax: {}, - base: {}, - core: {}, - celo: {}, - cronos: {}, - inevm: {}, - kava: {}, - linea: {}, - manta: {}, - map: {}, - metis: {}, - mode: {}, - polygon: {}, - scroll: {}, - zeta: {}, - zklink: {}, - moonbeam: { id: 'beam'}, - bevm: { id: 'bevm2'}, - bsc: { id: 'bnb'}, - conflux: { id: 'cfx'}, - eos_evm: { id: 'eos'}, - ethereum: { id: 'eth'}, - fantom: { id: 'ftm'}, - xdai: { id: 'gnosis'}, - mantle: { id: 'mnt'}, - moonriver: { id: 'movr'}, - op_bnb: { id: 'opbnb'}, - optimism: { id: 'opt'}, - polygon_zkevm: { id: 'zkevm'}, - era: { id: 'zksync'}, - btr: { id: 'bitlayer'}, - bouncebit: { id: 'bb'}, - europa: { id: 'skale-europa' }, - hemi: { id: 'hemi' } -} - -async function addCoinfg(id, ownerTokens) { - const { result } = await getConfig('meson', 'https://relayer.meson.fi/api/v1/list') - const { address, tokens } = result.find(c => c.id === id) ?? {} - if (!address) return; - ownerTokens.push([tokens.map(i => i.addr ?? nullAddress).filter(i => i), address]) - return ownerTokens -} - -Object.keys(config).forEach(chain => { - const { id = chain, owner = defaultOwner, tokens, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - if (tokens) ownerTokens.push([tokens, owner]) - await addCoinfg(id, ownerTokens) - return sumTokens2({ api, ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/messinaone-ls/index.js b/projects/messinaone-ls/index.js deleted file mode 100644 index ccca07451ec..00000000000 --- a/projects/messinaone-ls/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getAppGlobalState } = require("../helper/chain/algorand"); - -const contractId = 1189577109 -const STATE_DEPOSIT_ALGOS = "deposit_algos" - -async function tvl() { - const state = await getAppGlobalState(contractId); - return { - algorand: state[STATE_DEPOSIT_ALGOS]/1e6 - } -} - -module.exports = { - timetravel: false, - methodology: "Fetches ALGOs deposited and the accumulated rewards in Messina.one's Liquid Staking Protocol", - algorand: { tvl }, -}; \ No newline at end of file diff --git a/projects/messinaone/index.js b/projects/messinaone/index.js deleted file mode 100644 index 4b5d0b7041c..00000000000 --- a/projects/messinaone/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { sumTokens } = require("../helper/sumTokens"); - -let messinaAssets; - -const tokenChain = { - ethereum: 2, - algorand: 8, - cronos: 20025, - polygon: 5, - avax: 6, - arbitrum: 23, - bsc: 4, - optimism: 24, - base: 30, -}; - -const fetchAssets = async () => { - if (!messinaAssets) - messinaAssets = getConfig( - "messina-one", - "https://messina.one/api/bridge/get-assets?cache=true" - ); - - return messinaAssets; -}; - -const tvl = async (_, _1, _2, { chain }) => { - messinaAssets = await fetchAssets(); - messinaAssets = messinaAssets.filter((asset) => asset.wrapped === false); - const toa = messinaAssets - .filter((t) => t.chainId == tokenChain[chain]) - .map((i) => [i.id, i.escrowAddress]); - return sumTokens({ chain, tokensAndOwners: toa }); -}; - -module.exports = { - timetravel: false, - methodology: "Fetches assets currently held by Messina.one contracts.", - ethereum: { tvl }, - algorand: { tvl }, - cronos: { tvl }, - polygon: { tvl }, - avax: { tvl }, - arbitrum: { tvl }, - bsc: { tvl }, - optimism: { tvl }, - base: { tvl }, -}; diff --git a/projects/metacoin/index.js b/projects/metacoin/index.js deleted file mode 100644 index 0f120e5888c..00000000000 --- a/projects/metacoin/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const exchangeAddr = '0x1dd2235091c82862bcc7e9c25017ba9c409c0820' -const vaultAddr = '0x1ac269102c4d8c4f92b3cf9d214ea78060b4d366' - -async function tvl(api) { - const logs = await getLogs({ - api, - target: exchangeAddr, - topic: 'TokenRegistrationConfirmed(address,string,uint8)', - eventAbi: 'event TokenRegistrationConfirmed(address indexed assetAddress, string assetSymbol, uint8 decimals)', - onlyArgs: true, - fromBlock: 16594995, - }) - const tokens = logs.map(i => i.assetAddress) - return sumTokens2({ tokens, api, owners: [vaultAddr]}) -} - -module.exports = { - bsc: { tvl } -} \ No newline at end of file diff --git a/projects/metacrono-finance/index.js b/projects/metacrono-finance/index.js deleted file mode 100644 index 77bf16584b9..00000000000 --- a/projects/metacrono-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const token = "0x92926DAcCE437955aa47F0DFC7F5C8FCd728b36E"; -const masterchef = "0x5F680E57778651f7Cb14678655822ABc469acacf"; - -module.exports = { - ...masterChefExports(masterchef, "cronos", token, false), -} \ No newline at end of file diff --git a/projects/metaid/index.js b/projects/metaid/index.js deleted file mode 100644 index 3062fdd0467..00000000000 --- a/projects/metaid/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') -const USDC = ADDRESSES.telos.ETH -const wkava = ADDRESSES.kava.WKAVA -const MetaId = "0x8dD02F065EE650787A414568a13948629fa21333" - - -module.exports = { - kava: { - tvl: sumTokensExport({ tokensAndOwners: [ - [USDC, MetaId], - [wkava, MetaId], - [nullAddress, MetaId], - ]}), - }, - } \ No newline at end of file diff --git a/projects/metal-x/index.js b/projects/metal-x/index.js deleted file mode 100644 index fb456ce2044..00000000000 --- a/projects/metal-x/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { get } = require('../helper/http') - -const accounts = [ - 'dex', - 'lending.loan', - 'proton.swaps', -] - -const cgIdMapping = { - XXRP: 'ripple', - XBTC: 'bitcoin', - // XMT: 'metal', - XDOGE: 'dogecoin', - XETH: 'ethereum', - XUSDC: 'usd-coin', - LOAN: 'proton-loan', - XLTC: 'litecoin', - XUSDT: 'tether', - // XMD: 'metal-dollar', - // METAL: 'metal-blockchain', - XHBAR: 'hedera-hashgraph', - XSOL: 'solana' -} - -async function getAccount(account) { - const burl = 'https://api-xprnetwork-main.saltant.io' - const res = await get(`${burl}/v2/state/get_account?limit=100&account=${account}`) - return res.tokens -} - -module.exports = { - timetravel: false, - xpr: { - tvl: async () => { - const balances = {} - const assetBalances = (await Promise.all(accounts.map(a => getAccount(a)))).flat() - assetBalances.map(({ symbol, amount }) => { - if (symbol in cgIdMapping) balances[`coingecko:${cgIdMapping[symbol]}`] = amount - }) - return balances - } - } -}; diff --git a/projects/metalend/index.js b/projects/metalend/index.js deleted file mode 100644 index 2bdb8f0f78c..00000000000 --- a/projects/metalend/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - ronin: compoundExports2({ comptroller: '0x9E8FD99Fc64Cd2fF4B5846361a7eC457f2b3808e',}) -}; diff --git a/projects/metalswap/index.js b/projects/metalswap/index.js deleted file mode 100644 index 7c5860fc0b0..00000000000 --- a/projects/metalswap/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require('../helper/staking') -const { pool2UniV3 } = require('../helper/pool2') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); - -// const ETH_DAO_CONTRACT = "0xc35BD9072de45215a25EB9DADB4fA54eea445a01"; - -const config = { - ethereum: { - toa: [ - [nullAddress, '0xaAA50f60a256b74D1C71ED4AD739836b50059201'], // ETH pool legacy - [nullAddress,'0x9494c9FfE0735832885269a10c910CDb227a7B0F'], // ETH pool new - [ADDRESSES.ethereum.USDT, '0x51bb873D5b68309cf645e84234bC290b7D991D2C'], //usdt pool legacy - [ADDRESSES.ethereum.USDT, '0x2535D0578562C88c1c875075A1085a4AD3117b20'], //usdt pool new - [ADDRESSES.ethereum.WBTC, '0xdCE224F9299CDd66e4D01D196d4cabce35a2F478'], //wbtc pool legacy - [ADDRESSES.ethereum.WBTC, '0x725fbd08e4c5d4b5978E48667d96D03F9B1C4d3A'], //wbtc pool new - ['0x45804880De22913dAFE09f4980848ECE6EcbAf78', '0x787c68f6bCAb352Ec871C522d038bc7A30268020'], //paxg pool - ], - token: '0x3E5D9D8a63CC8a88748f229999CF59487e90721e', - staking: [ - '0xCbD0F8e80e32B8e82f21f39FDE0A8bcf18535B21', // Pool 360 days - '0xd9b5b86De1F696dFe290803b92Fe5e9baCa9371A', // Pool 30 days - '0xbEe93fD8822c3a61068Abf54A28734644c9f61Ed', // Pool 90 days - '0xB9B17B61F7Cf8BDB192547948d5379C8EeaF3cd8', // Pool 180 days - '0xcbF519299A115e325d6C82b514358362A9CA6ee5', // Iron Pool 180 days - '0xaF9101314b14D8e243e1D519c0dd4e69DFd44466', // Iron Pool 360 days - '0x6b392C307E0Fe2a8BE3687Bc780D4157592F4aC2', // nft Pre order - '0x65e4FCDf4C0F6D8C5eA4842B5B7f4a9FF68bC0d6', // Smart Pool 6 months + 3 months - ], - }, - bsc: { - token: '0x582c12b30f85162fa393e5dbe2573f9f601f9d91', - staking: [ - '0xbEe93fD8822c3a61068Abf54A28734644c9f61Ed', // Pool 210 days - '0xd38b66aACA9819623380f60814308c6594E2DC26', // Pool 30 days - '0xd9b5b86De1F696dFe290803b92Fe5e9baCa9371A', // Pool 60 days - '0x306825856807321671d21d4A2A9a65b02CCB51db', // Smart Pool 3 months + 3 months - '0x842fDf4A6e861983D3Ef9299bF26EFC1FDB1Ba7A', // Smart Pool 2 months + 6 months - '0x799BfC125170ab4dF34E9dC07DB47AA0edB9bC7C', // Smart Pool 6 months + 6 months - ], - }, - - optimism: { - toa: [ - [nullAddress, '0x5B7C5daa5f4Bb37c457dA468Da1CDaA6219892A1'], // ETH pool - [ADDRESSES.optimism.USDC, '0x24682cFDc060316355C26C420d0748F289502e83'], //usdt pool new - [ADDRESSES.optimism.WBTC, '0x469CC7AF1696B5e4E6151796Dc3B3fEf39b34f39'], //wbtc pool new - [ADDRESSES.optimism.OP, '0xc9394748D5f633152AD3F8f557a9B7743148db1B'], //Op pool new - ], - token: '0x3E5D9D8a63CC8a88748f229999CF59487e90721e', - }, - linea: { - toa: [ - ['0xB5beDd42000b71FddE22D3eE8a79Bd49A568fC8F', '0x65feA8341264E5fB0a26E16307c9E4d58e25E1fd'], // WSTETH pool - [ADDRESSES.linea.USDC, '0xC5fb6ED4417dd75D5c3fA3fd550ec12059fD03D2'], //usdt pool new - ], - token: '0x3E5D9D8a63CC8a88748f229999CF59487e90721e', - }, -} - -module.exports = { - hallmarks: [ - [1662076800, "Launch on ETH"], - [1740355200, "TVL Migration to Denaria"] - ], - - polygon: { - pool2: pool2UniV3({ stakingAddress: '0x313c3F878998622f18761d609AA007F2bbC378Db', chain: 'polygon' }) - } -}; - -Object.keys(config).forEach(chain => { - const { staking, token, toa = [] } = config[chain] - module.exports[chain] = { - tvl: (_, _b, {[chain]: block }) => sumTokens2({chain, block, tokensAndOwners: toa }), - staking: stakings(staking, token, chain), - } -}) diff --git a/projects/metapoly/abi.json b/projects/metapoly/abi.json deleted file mode 100644 index 415ab90f2c8..00000000000 --- a/projects/metapoly/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalSupply": "uint256:totalSupply", - "UNDERLYING_ASSET_ADDRESS": "address:UNDERLYING_ASSET_ADDRESS" -} \ No newline at end of file diff --git a/projects/metapoly/index.js b/projects/metapoly/index.js deleted file mode 100644 index fd16f28d7d2..00000000000 --- a/projects/metapoly/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const abi = require("./abi.json"); - -const config = { - kava: { - vaults: { - BToken: "0xF47BD463e153C7e20Aa044759bac1B6A7c263725", - }, - }, - ethereum: { - vaults: { - BToken: "0x9b64f4842a7fDd16063CdC7cD3ad123C7Bd4918c", - }, - }, -}; - -module.exports = { - deadFrom: '2023-07-21', - methodology: - "We use the totalSupply() method which includes the interest accrued on the deposited USDC.", -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - const vaults = Object.values(config[chain].vaults); - const tokens = await api.multiCall({ abi: abi.UNDERLYING_ASSET_ADDRESS, calls: vaults}) - return api.sumTokens({ tokensAndOwners2: [tokens, vaults]}) - }, - borrowed: () => ({}), - }; -}); diff --git a/projects/metapool-eth/index.js b/projects/metapool-eth/index.js deleted file mode 100644 index 6ff3945c3ed..00000000000 --- a/projects/metapool-eth/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const token = '0x48afbbd342f64ef8a9ab1c143719b63c2ad81710' - -async function tvl(api) { - const supply = await api.call({ abi: 'uint256:totalSupply', target: token, }); - api.add(ADDRESSES.null, supply) -} - -module.exports = { - methodology: 'Retrieve the total underlying ETH supply', - ethereum: { - tvl - } -} \ No newline at end of file diff --git a/projects/metapool-mpsol/index.js b/projects/metapool-mpsol/index.js deleted file mode 100644 index 2aded50b746..00000000000 --- a/projects/metapool-mpsol/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { getConnection } = require('../helper/solana') -const { PublicKey } = require('@solana/web3.js') -const ADDRESSES = require('../helper/coreAssets.json') - -// ===================== CONSTANTS ===================== -// Mint address of mpSOL token on Solana -const MPSOL_MINT = 'mPsoLV53uAGXnPJw63W91t2VDqCVZcU5rTh3PWzxnLr' - -// Public key of the MainVaultState account on Solana (program state) -const STATE_ACCOUNT_PUBKEY = new PublicKey('mpsoLeuCF3LwrJWbzxNd81xRafePFfPhsNvGsAMhUAA') - - -// ===================== FETCH BACKING_SOL_VALUE ===================== -/** - * Fetches the backing_sol_value from the on-chain MainVaultState account. - * backing_sol_value is stored as u64 (8 bytes) at offset 171 within the account data. - * It represents the amount of SOL (in lamports) backing the mpSOL supply. - * - */ -async function getBackingSolValue(api) { - const connection = getConnection() - const accountInfo = await connection.getAccountInfo(STATE_ACCOUNT_PUBKEY) - const data = accountInfo.data - // Read 8 bytes from offset 171 (little-endian) -> u64 value in lamports - const backingSolValueLamports = data.readBigUInt64LE(171) - api.add(ADDRESSES.solana.SOL, backingSolValueLamports) -} - -// ===================== TVL CALCULATION ===================== -/** - * Calculates the TVL (Total Value Locked) in USD. - * TVL is computed as: - * 1. Fetch mpSOL supply from on-chain. - * 2. Fetch backing_sol_value from the state account. - * 3. Fetch current SOL price in USD. - * 4. Calculate mpSOL exchange rate: backing_sol_value / mpSOL supply. - * 5. Derive mpSOL price in USD: exchange_rate * SOL price. - * 6. Compute TVL in USD: mpSOL supply * mpSOL price in USD. - * - * @param {Object} api - DefiLlama API context (optional) - */ -async function tvl(api) { - await getBackingSolValue(api) -} - -// ===================== MODULE EXPORT ===================== -module.exports = { - timetravel: false, - doublecounted: true, // due to looping: https://github.com/DefiLlama/DefiLlama-Adapters/pull/13421#issuecomment-2652334855 - methodology: - 'TVL is fetched by querying the amount of SOL backing the mpSOL supply on Solana.', - solana: { - tvl, - }, -} diff --git a/projects/metapool-stip/index.js b/projects/metapool-stip/index.js deleted file mode 100644 index 7e57510b63c..00000000000 --- a/projects/metapool-stip/index.js +++ /dev/null @@ -1,26 +0,0 @@ - -const { sumTokens2 } = require('../helper/unwrapLPs') - -const stakedIpAddress = '0xd07Faed671decf3C5A6cc038dAD97c8EFDb507c0' - -async function tvl(api) { - const ipToken = await api.call({ - target: stakedIpAddress, - abi: 'address:asset', - }) - - const stakedIpAmount = await api.call({ - target: stakedIpAddress, - abi: 'uint256:totalAssets', - }) - - api.add(ipToken, stakedIpAmount) - - return sumTokens2({ api }) -} - -module.exports = { - methodology: - "TVL is the total IP tokens backing the stIP token in the Staked IP contract.", - sty: { tvl }, -} diff --git a/projects/metapool.js b/projects/metapool.js deleted file mode 100644 index 6a4680ac698..00000000000 --- a/projects/metapool.js +++ /dev/null @@ -1,21 +0,0 @@ -const utils = require('./helper/utils') -const ADDRESSES = require('./helper/coreAssets.json') - -async function tvl() { - const totalTvl = await utils.fetchURL('http://validators.narwallets.com:7000/metrics_json') - - return { - near: totalTvl.data.tvl - } -} - -module.exports = { - methodology: 'TVL counts the NEAR tokens that are staked.', - near: { tvl, }, - aurora: { - tvl: async (api) => { - const totalSupply = await api.call({ abi: 'erc20:totalSupply', target: '0xb01d35D469703c6dc5B369A1fDfD7D6009cA397F' }) - api.add(ADDRESSES.aurora.AURORA ,totalSupply) - } - } -} \ No newline at end of file diff --git a/projects/metareserve/index.js b/projects/metareserve/index.js deleted file mode 100644 index ea0144b2b62..00000000000 --- a/projects/metareserve/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const power = "0x000c6322Df760155bBe4F20F2EDD8F4Cd35733A6"; -const staking = "0x5c643737AF2aD7A0B9ae62158b715793505967bE"; -const treasury = "0x6651BDeE6A47F6962C86d680b498DC492a7E78C8"; -const treasuryTokens = [ - [ADDRESSES.bsc.BUSD, false], // BUSD - ["0xA1A64b7D85B92A19fdb628557cC44bCb40284B65", true] // POWER-BUSD -]; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "bsc", staking, power, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/metastable-musd/index.js b/projects/metastable-musd/index.js deleted file mode 100644 index ff3116a46e8..00000000000 --- a/projects/metastable-musd/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const sui = require("../helper/chain/sui"); -const http = require('../helper/http'); -const { getEnv } = require('../helper/env'); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const endpoint = () => getEnv('SUI_RPC') - -async function tvl(api) { - const vaultData = await sui.getObjects([ - "0xb950819c5eba1bb5980f714f2a3b1d8738e3da58a4d9daf5fa21b6c2a7dd1e12", // mUSD - "0x2d6e81126336685a28ea0637109b570510f988bba2b589877c9b579d3cb8cad8", // mETH - "0x3062285974a5e517c88cf3395923aac788dce74f3640029a01e25d76c4e76f5d", // superSUI - "0x0ff688058077c00a6b6df737e605dbb1fccfb5760246c5d3aaaacc750cb42384", // mBTC - ]) - - for (const { fields: { metadata, } } of vaultData) { - - const { - result: { data: fields } - } = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method: 'suix_getDynamicFields', params: [metadata.fields.id.id, null, 48], }) - const fieldObjects = await sui.getDynamicFieldObjects({ - parent: metadata.fields.id.id - }) - - let i = 0 - for (const field of fields) { - - const coin = field.name.value.name - const amount = fieldObjects[i].fields.balance - - api.add("0x" + coin, amount) - i++ - } - } - return sumTokens2({ api }) -} - -module.exports = { - timetravel: true, - sui: { - tvl, - }, -}; diff --git a/projects/metastreet-airdrop-pass/index.js b/projects/metastreet-airdrop-pass/index.js deleted file mode 100644 index 02e3a35ca40..00000000000 --- a/projects/metastreet-airdrop-pass/index.js +++ /dev/null @@ -1,17 +0,0 @@ -async function tvl(api) { - const factory = '0xA8a7e295c19b7D9239A992B8D9C053917b8841C6' - const delegateV2 = '0x00000000000000447e69651d841bD8D104Bed493' - const delegations = await api.call({ abi: abi.getIncomingDelegations, target: delegateV2, params: factory }) - delegations.filter(i => i.type_ === '3').forEach(i => api.add(i.contract_, 1)) -} - -module.exports = { - ethereum: { - tvl, - }, - methodology: "TVL is calculated by summing the value of underlying NFTs of the delegation tokens owned by MetaStreet Airdrop Pass Factory." -} - -const abi = { - "getIncomingDelegations": "function getIncomingDelegations(address to) view returns ((uint8 type_, address to, address from, bytes32 rights, address contract_, uint256 tokenId, uint256 amount)[] delegations_)", -} diff --git a/projects/metastreet-v2/abi.json b/projects/metastreet-v2/abi.json deleted file mode 100644 index 7ecb54a5d21..00000000000 --- a/projects/metastreet-v2/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "getPools": "address[]:getPools", - "collateralToken": "address:collateralToken", - "currencyToken": "address:currencyToken", - "liquidityNodes": "function liquidityNodes(uint128 startTick, uint128 endTick) view returns (tuple(uint128 tick, uint128 value, uint128 shares, uint128 available, uint128 pending, uint128 redemptions, uint128 prev, uint128 next)[])" -} \ No newline at end of file diff --git a/projects/metastreet-v2/index.js b/projects/metastreet-v2/index.js deleted file mode 100644 index 67291bb7563..00000000000 --- a/projects/metastreet-v2/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const METASTREET_POOL_FACTORY = { - ethereum: "0x1c91c822F6C5e117A2abe2B33B0E64b850e67095", - base: "0x41cF7ea4Ba650191e829A6bD31B9e2049C78D858", - blast: "0x5F42c24Af1227c3c669035a6cB549579ed0F99dF", -}; -const MAX_UINT_128 = "0xffffffffffffffffffffffffffffffff"; - -async function tvl(api) { - const pools = await api.call({ - target: METASTREET_POOL_FACTORY[api.chain], - abi: abi.getPools, - }); - const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools }); - const ct = await api.multiCall({ abi: abi.collateralToken, calls: pools }); - const ownerTokens = pools.map((pool, i) => [[tokens[i], ct[i]], pool]); - return sumTokens2({ api, ownerTokens, permitFailure: true }); -} - -async function borrowed(api) { - const pools = await api.call({ - target: METASTREET_POOL_FACTORY[api.chain], - abi: abi.getPools, - }); - const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools }); - const tokenDecimals = await api.multiCall({ - abi: "erc20:decimals", - calls: tokens.map((token) => ({ target: token })), - }); - const decimalsMap = {}; - tokens.forEach((token, index) => { - decimalsMap[token] = tokenDecimals[index]; - }); - const poolsBorrowedValue = ( - await api.multiCall({ - abi: abi.liquidityNodes, - calls: pools.map((pool) => ({ - target: pool, - params: [0, MAX_UINT_128], - })), - }) - ).map((liquidityNodes, poolIndex) => { - const token = tokens[poolIndex]; - const decimals = decimalsMap[token]; - const scalingFactor = 10 ** (18 - decimals); - - return liquidityNodes.reduce((partialSum, node) => { - const scaledValue = (+node.value - +node.available) / scalingFactor; - return partialSum + scaledValue; - }, 0); - }); - api.addTokens(tokens, poolsBorrowedValue); - return api.getBalances(); -} - -module.exports = { - ethereum: { - tvl, - borrowed, - }, - base: { - tvl, - borrowed, - }, - blast: { - tvl, - borrowed, - }, - methodology: - "TVL is calculated by summing the value of token balances and NFTs across all MetaStreet pools. Total borrowed is calculated by subtracting the tokens available from the total value of all liquidity nodes across all pools.", -}; diff --git a/projects/metastreet/abi.json b/projects/metastreet/abi.json deleted file mode 100644 index 40c88d6c265..00000000000 --- a/projects/metastreet/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getVaultList": "address[]:getVaultList", - "balanceState": "function balanceState() view returns (uint256 totalCashBalance, uint256 totalLoanBalance, uint256 totalAdminFeeBalance, uint256 totalWithdrawalBalance)", - "currencyToken": "address:currencyToken" -} \ No newline at end of file diff --git a/projects/metastreet/index.js b/projects/metastreet/index.js deleted file mode 100644 index 0a3f5feabb4..00000000000 --- a/projects/metastreet/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const abi = require("./abi.json"); - -// Constants -const METASTREET_VAULT_REGISTRY = '0x07AB40311B992c8C75c4813388eDf95420e8f80A'; - -// Gets all MetaStreet Vaults registered in VaultRegistry and their -// corresponding currency token each vault's balance is denoted in -async function getAllVaultsAndTokens(api) { - const vaults = await api.call({ abi: abi.getVaultList, target: METASTREET_VAULT_REGISTRY }) - const tokens = await api.multiCall({ abi: abi.currencyToken, calls: vaults }) - return [vaults, tokens] -} - -// Calculates the TVL across all MetaStreet vaults -async function getTVL(api, vaults, tokens) { - return api.sumTokens({ tokensAndOwners2: [tokens, vaults], }) -} - -// Calculates loan balance across all MetaStreet vaults -async function getBorrowed(api, vaults, tokens) { - const res = await api.multiCall({ abi: abi.balanceState, calls: vaults }) - const bals = res.map((r) => r.totalLoanBalance) - api.add(tokens, bals) -} - -function getMetaStreetTVL(isBorrowed) { - return async (api) => { - // Get all vaults and tokens - const [vaults, tokens] = await getAllVaultsAndTokens(api); - if (isBorrowed) { - await getBorrowed(api, vaults, tokens); - } else { - await getTVL(api, vaults, tokens); - } - } -} - -module.exports = { - ethereum: { - tvl: getMetaStreetTVL(false), - borrowed: getMetaStreetTVL(true), - }, - methodology: 'TVL is calculated by getting the ERC20 balance of each vault, which counts tokens deposited into contracts for earning yield but not the value of any NFT loan note collateral the vault has purchased. Borrowed tokens are also not counted towards TVL.', -}; \ No newline at end of file diff --git a/projects/metastrike/index.js b/projects/metastrike/index.js deleted file mode 100644 index 7c897e16ff9..00000000000 --- a/projects/metastrike/index.js +++ /dev/null @@ -1,29 +0,0 @@ - -const { stakings } = require('../helper/staking') -// // Token MTS -const MTS_TOKEN = '0x496cC0b4ee12Aa2AC4c42E93067484e7Ff50294b' - -// Vesting contracts -const VestingCEXV1 = '0x8be5ee50f10a2ff7313b24cacfc21639bef48b60' -const VestingCEXV2 = '0xfd9ea0e249293f9589e18d8ce8973ce985e90e52' -const VestingAdvisors = '0x37976466F68C7b74BeA901E49263F8C7E081d42D' -const VestingTeam = '0x263718B1DFECa8b49406FD4FD1aC5aFD05619d69' -const VestingMarketing = '0x5573a696262362218331c9bA832315205D4289e0' - -// -const StakingV1 = '0x3668b1fbba7ea689901b5ab530401cc0134322c6' -const StakingV2Pool1 = '0xb5ec84087352463f21a7ec54d342319bb95bc351' -const StakingV2Pool2 = '0xEBc4691b9e28AaE15B5439352c9e50A7b6E76B79' -const StakingV2Pool3 = '0x49Ae88cc37fbcAcA51f412707BE81b933Cd4AD5e' -const StakingV2Pool4 = '0x38dcC010518E266372DD574fA74a03ccb38Fd30d' -const StakingV2Pool5 = '0x6C7EbB352F92003Aa767675a7a4062ca74206e19' -const StakingV2Pool6 = '0x05dE10e375b03e9072f4ac7b1166CCfee53E7003' - -module.exports = { - methodology: "Total Value Lock in Metastrike protocol is calculated by sum of: Staking and Vesting locked value", - bsc: { - staking: stakings([StakingV1, StakingV2Pool1, StakingV2Pool2, StakingV2Pool3, StakingV2Pool4, StakingV2Pool5, StakingV2Pool6], MTS_TOKEN), - vesting: stakings([VestingCEXV1, VestingCEXV2, VestingAdvisors, VestingTeam, VestingMarketing], MTS_TOKEN), - tvl: () => ({}), - } -} \ No newline at end of file diff --git a/projects/metaswap/index.js b/projects/metaswap/index.js deleted file mode 100644 index ccca98e31f4..00000000000 --- a/projects/metaswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - eos_evm: { - tvl: getUniTVL({ factory: '0x589ca5Ab00443681e2eA427971BB1460823A36f9', useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/metatdex/index.js b/projects/metatdex/index.js deleted file mode 100644 index e445d015127..00000000000 --- a/projects/metatdex/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - bsc: { - tdex: '0xc6d390d9cbc7bbb2253b99fb0c3b3911c944e1ce', - owner: '0x4bc90496ea2682c6474b2b81ef6b573068e4b1f7', - }, - heco: { - tdex: '0x0b416e5da1f68dd780683b5daef858b0a081c364', - owner: '0x09a28712208bf913b2e79eab446594c9fab2f37c', - }, - polygon: { - tdex: '0xa63D57042B2d462B8dcf1570F8288dba405Cc909', - owner: '0xd4013b79867C03d3FB5196899193efC8f29d54A4', - }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { tdex, owner, } = config[chain] - module.exports[chain] = { - tvl: async (_, _b, {[chain]: block}) => { - const { output: tokens } = await sdk.api.abi.call({ - target: tdex, - abi: abi.getTokenAddressList, - params: [0, 301], - chain, block, - }) - if (chain === 'bsc') tokens.push(ADDRESSES.bsc.USDT) - if (chain === 'heco') tokens.push(ADDRESSES.heco.USDT) - if (chain === 'polygon') tokens.push(ADDRESSES.polygon.USDT) - return sumTokens2({ tokens, owner, chain, block, }) - } - } -}) - -const abi = { - getTokenAddressList: "function getTokenAddressList(uint256 start, uint256 end) view returns (address[] list)", -} diff --git a/projects/metavault-amm-v2/index.js b/projects/metavault-amm-v2/index.js deleted file mode 100644 index 7245d4eaef4..00000000000 --- a/projects/metavault-amm-v2/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -const { uniTvlExports } = require("../helper/unknownTokens"); - -module.exports = uniTvlExports({ - scroll: '0xCc570Ec20eCB62cd9589FA33724514BDBc98DC7E', - linea: '0xCc570Ec20eCB62cd9589FA33724514BDBc98DC7E', -}) diff --git a/projects/metavault-bo/index.js b/projects/metavault-bo/index.js deleted file mode 100644 index 577e5109f2c..00000000000 --- a/projects/metavault-bo/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - polygon: { - tvl: sumTokensExport({ owner: '0x6fd5b386d8bed29b3b62c0856250cdd849b3564d', tokens: [ADDRESSES.polygon.USDC]}) - } -} \ No newline at end of file diff --git a/projects/metavault-derivatives-v2/index.js b/projects/metavault-derivatives-v2/index.js deleted file mode 100644 index cfaf06200f0..00000000000 --- a/projects/metavault-derivatives-v2/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const config = { - linea: '0xb514Ee8a1e00B102cE2312048abcbc3E57bfED94', - polygon: '0xAb36984e4952e5a9d08536C4dE5190ed37725017' -} - -Object.keys(config).forEach(chain => { - const target = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens= await api.call({ abi: 'address[]:getAssetList', target}) - return api.sumTokens({ owner: target, tokens }) - } - } -}) \ No newline at end of file diff --git a/projects/metavault-v3/index.js b/projects/metavault-v3/index.js deleted file mode 100644 index a94dcc1647d..00000000000 --- a/projects/metavault-v3/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { uniV3Export } = require("../helper/uniswapV3") - -const factory = "0x9367c561915f9D062aFE3b57B18e30dEC62b8488" // same on all chains - -module.exports = uniV3Export({ - linea: { factory, fromBlock: 652486, }, - scroll: { factory, fromBlock: 77008, blacklistedTokens: [ADDRESSES.linea.WETH] }, -}) \ No newline at end of file diff --git a/projects/metavault.trade/abi.js b/projects/metavault.trade/abi.js deleted file mode 100644 index f8c6174c1e6..00000000000 --- a/projects/metavault.trade/abi.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - allWhitelistedTokens: "function allWhitelistedTokens(uint256) view returns (address)", - allWhitelistedTokensLength: "uint256:allWhitelistedTokensLength", -} \ No newline at end of file diff --git a/projects/metavault.trade/index.js b/projects/metavault.trade/index.js deleted file mode 100644 index 9fc38e23755..00000000000 --- a/projects/metavault.trade/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const abi = require('./abi') -const { staking } = require("../helper/staking"); - -const polygonVault = "0x32848E2d3aeCFA7364595609FB050A301050A6B4"; -const polygonStaking = "0xE8e2E78D8cA52f238CAf69f020fA961f8A7632e9"; // Staked MVX, sMVX -const polygonMVX = "0x2760e46d9bb43dafcbecaad1f64b93207f9f0ed7"; -const polygonMvxVester = "0x543e07eb4a260e10310fbcf2403e97c762a8db0b" // New Vester - -const polygonTVL = async (api) => { - const tokens = await api.fetchList({ lengthAbi: abi.allWhitelistedTokensLength, itemAbi: abi.allWhitelistedTokens, target: polygonVault}) - return api.sumTokens({ tokens, owner: polygonVault }) -}; - -module.exports = { - polygon: { - staking: staking([polygonStaking, polygonMvxVester], polygonMVX, ), - tvl: polygonTVL, - }, -}; \ No newline at end of file diff --git a/projects/metavault/index.js b/projects/metavault/index.js deleted file mode 100644 index 49b59edd412..00000000000 --- a/projects/metavault/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const readerAbi = require("./reader.json"); -const mvlpManagerAbi = require("./mvlpManager.json"); -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const DAI_ADDRESS = ADDRESSES.ethereum.DAI; -const USDC_ADDRESS = ADDRESSES.ethereum.USDC; -const MVLP_ADDRESS = "0x9F4f8bc00F48663B7C204c96b932C29ccc43A2E8"; - -const REDEEM_CONTRACT = "0xd15C4677A81Ac9d744a01ecaAad684E6d296b8f3"; -const GOV_CLUB_CONTRACT = "0x12fc8b560925166c39E85c70E9fD4058Ca9e11c9"; - -const MVD_DAO_MULTI_SIG_WALLET = "0x4876e4303dad975effe107ba84598ce4a24724ed"; -const MVLP_TRACKER_CONTRACT = "0xA6ca41Bbf555074ed4d041c1F4551eF48116D59A"; - -const MVLP_MANAGER_CONTRACT = "0x13E733dDD6725a8133bec31b2Fc5994FA5c26Ea9"; // getAums -const READER_CONTRACT = "0x01dd8B434A83cbdDFa24f2ef1fe2D6920ca03734"; // getTokenBalancesWithSupplies --> ( [3] => get these value ) - -const stakingAddress = "0x42162457006DB4DA3a7af5B53DFee5A891243b4D"; // Governance Staking -const stakingTokenAddress = "0x788B6D2B37Aa51D916F2837Ae25b05f0e61339d1"; // MVD - -const mvdStakingAddressArbitrum = "0xFA69292726A53d62111c9485C03ac551Ba05679b"; // gMVD Staking -const mvdTokenAddressArbitrum = "0x15a808ed3846D25e88AE868DE79F1bcB1Ac382B5"; // MVD - -const ADDRESS_ZERO = ADDRESSES.null; - - -async function polygon(api) { - // Metavault DAO MVLP Holdings - const aums = await api.call({ target: MVLP_MANAGER_CONTRACT, abi: mvlpManagerAbi.getAums, }) - const supplies = await api.call({ target: READER_CONTRACT, params: [ADDRESS_ZERO, [MVLP_ADDRESS]], abi: readerAbi.getTokenBalancesWithSupplies, }) - const metavaultDaoMvlpHoldings = await api.call({ abi: 'erc20:balanceOf', target: MVLP_TRACKER_CONTRACT, params: MVD_DAO_MULTI_SIG_WALLET, }) - - const mvlpSupply = supplies[1]; - const averageAums = (+aums[0] + +aums[1]) / 2 - const mvlpPrice = averageAums / mvlpSupply - const daoMvlpHoldingsValue = metavaultDaoMvlpHoldings * mvlpPrice / 1e30 - api.addUSDValue(daoMvlpHoldingsValue) -} - -module.exports = { - hallmarks: [ - [1676592000, "Launch on Arbitrum"] - ], - misrepresentedTokens: true, - arbitrum: { - staking: staking(mvdStakingAddressArbitrum, mvdTokenAddressArbitrum,), - }, - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [DAI_ADDRESS, REDEEM_CONTRACT,], - [USDC_ADDRESS, GOV_CLUB_CONTRACT,], - ] - }), - staking: staking(stakingAddress, stakingTokenAddress,), - }, - polygon: { - tvl: polygon, - } -}; diff --git a/projects/metavault/mvlpManager.json b/projects/metavault/mvlpManager.json deleted file mode 100644 index 98f4f3c2098..00000000000 --- a/projects/metavault/mvlpManager.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAums": "uint256[]:getAums" -} \ No newline at end of file diff --git a/projects/metavault/reader.json b/projects/metavault/reader.json deleted file mode 100644 index 36b8b454303..00000000000 --- a/projects/metavault/reader.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getTokenBalancesWithSupplies": "function getTokenBalancesWithSupplies(address _account, address[] _tokens) view returns (uint256[])" -} \ No newline at end of file diff --git a/projects/metaversepro/index.js b/projects/metaversepro/index.js deleted file mode 100644 index fad5b9cb7b2..00000000000 --- a/projects/metaversepro/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0xb874ac3a21e3ffe06fb4b6dcf9b62c7ea753a9a0" -module.exports = ohmTvl(treasury, [ - //WBNB - [ADDRESSES.bsc.WBNB, false], - //BUSD - [ADDRESSES.bsc.BUSD, false], - //Pancake LP - ["0x512385e505615eb30ec80A2915575E344ACf792A", true], - //Pancake LPs 1 - ["0x1dd778e874dc1b45a676e38aba1916517c3648c8", true], - //Pancake LPs 2 - ["0x5438c0730e45ef25ec5e5110c939dc0c90aec4b4", true], - //Pancake LPs 3 - ["0x1c8ed2f2cef333aa43f1ba9a4589899c53787d2f", true], - // USDC - [ADDRESSES.bsc.USDC, false] -], "bsc", "0xb91db0c2551aae4784119ce4c33234c9e3c9af71", "0x0a2046C7fAa5a5F2b38C0599dEB4310AB781CC83", undefined, undefined, false) \ No newline at end of file diff --git a/projects/metavisor/index.js b/projects/metavisor/index.js deleted file mode 100644 index a2c67e7e5ca..00000000000 --- a/projects/metavisor/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); - -const VAULT_STATUS_ABI = "function getVaultStatus() returns (uint256 amount0, uint256 amount1, uint256 fees0, uint256 fees1, uint128 liquidity)"; -const DEFAULT_FACTORY = '0x25f47fEF4D6471a8b9Cb93197E1bdAa4a256EE23' -const CONFIG = { - ethereum: { uniswapRegistry: { startBlock: 16864761, }, }, - polygon: { uniswapRegistry: { startBlock: 40543157, }, }, - bsc: { uniswapRegistry: { startBlock: 26612076, }, }, - optimism: { uniswapRegistry: { startBlock: 82239696, }, }, - arbitrum: { uniswapRegistry: { startBlock: 71578282, }, }, -}; - -async function tvl(api) { - const chainConfig = CONFIG[api.chain]["uniswapRegistry"]; - - const vaultLogs = await getLogs({ - target: chainConfig.target ?? DEFAULT_FACTORY, - topic: "VaultCreated(address,uint8,address)", - fromBlock: chainConfig.startBlock, - api, - onlyArgs: true, - eventAbi: 'event VaultCreated(address indexed ,uint8 indexed ,address indexed vault)' - }); - - const vaults = vaultLogs.map(i => i.vault) - const [token0s, token1s, data] = await Promise.all([ - api.multiCall({ abi: 'address:token0', calls: vaults, }), - api.multiCall({ abi: 'address:token1', calls: vaults, }), - api.multiCall({ abi: VAULT_STATUS_ABI, calls: vaults, }), - ]) - const ownerTokens = vaults.map((v, i) => [[token0s[i], token1s[i]], v]) - data.forEach((v, i) => { - api.add(token0s[i], v.amount0) - api.add(token0s[i], v.fees0) - api.add(token1s[i], v.amount1) - api.add(token1s[i], v.fees1) - }) - - return sumTokens2({ api, ownerTokens }); -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(CONFIG).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/meteora-dlmm/idl.json b/projects/meteora-dlmm/idl.json deleted file mode 100644 index c51e070019b..00000000000 --- a/projects/meteora-dlmm/idl.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "version": "0.9.0", - "name": "lb_clmm", - "constants": [ ], - "instructions": [], - "accounts": [ - { - "name": "lbPair", - "type": { - "kind": "struct", - "fields": [ - {"name": "parameters", "type": {"defined": "StaticParameters"}}, - {"name": "vParameters", "type": {"defined": "VariableParameters"}}, - {"name": "bumpSeed", "type": {"array": ["u8", 1]}}, - {"name": "binStepSeed", "docs": ["Bin step signer seed"], "type": {"array": ["u8", 2]}}, - {"name": "pairType", "docs": ["Type of the pair"], "type": "u8"}, - {"name": "activeId", "docs": ["Active bin id"], "type": "i32"}, - {"name": "binStep", "docs": ["Bin step. Represent the price increment / decrement."], "type": "u16"}, - {"name": "status", "docs": ["Status of the pair. Check PairStatus enum."], "type": "u8"}, - {"name": "requireBaseFactorSeed", "docs": ["Require base factor seed"], "type": "u8"}, - {"name": "baseFactorSeed", "docs": ["Base factor seed"], "type": {"array": ["u8", 2]}}, - {"name": "activationType", "docs": ["Activation type"], "type": "u8"}, - { - "name": "creatorPoolOnOffControl", - "docs": ["Allow pool creator to enable/disable pool with restricted validation. Only applicable for customizable permissionless pair type."], - "type": "u8" - }, - {"name": "tokenXMint", "docs": ["Token X mint"], "type": "publicKey"}, - {"name": "tokenYMint", "docs": ["Token Y mint"], "type": "publicKey"}, - {"name": "reserveX", "docs": ["LB token X vault"], "type": "publicKey"}, - {"name": "reserveY", "docs": ["LB token Y vault"], "type": "publicKey"}, - {"name": "protocolFee", "docs": ["Uncollected protocol fee"], "type": {"defined": "ProtocolFee"}}, - {"name": "padding1", "docs": ["_padding_1, previous Fee owner, BE CAREFUL FOR TOMBSTONE WHEN REUSE !!"], "type": {"array": ["u8", 32]}}, - {"name": "rewardInfos", "docs": ["Farming reward information"], "type": {"array": [{"defined": "RewardInfo"}, 2]}}, - {"name": "oracle", "docs": ["Oracle pubkey"], "type": "publicKey"}, - {"name": "binArrayBitmap", "docs": ["Packed initialized bin array state"], "type": {"array": ["u64", 16]}}, - {"name": "lastUpdatedAt", "docs": ["Last time the pool fee parameter was updated"], "type": "i64"}, - { - "name": "padding2", - "docs": ["_padding_2, previous whitelisted_wallet, BE CAREFUL FOR TOMBSTONE WHEN REUSE !!"], - "type": {"array": ["u8", 32]} - }, - { - "name": "preActivationSwapAddress", - "docs": [ - "Address allowed to swap when the current point is greater than or equal to the pre-activation point. The pre-activation point is calculated as `activation_point - pre_activation_duration`." - ], - "type": "publicKey" - }, - {"name": "baseKey", "docs": ["Base keypair. Only required for permission pair"], "type": "publicKey"}, - {"name": "activationPoint", "docs": ["Time point to enable the pair. Only applicable for permission pair."], "type": "u64"}, - { - "name": "preActivationDuration", - "docs": ["Duration before activation activation_point. Used to calculate pre-activation time point for pre_activation_swap_address"], - "type": "u64" - }, - { - "name": "padding3", - "docs": [ - "_padding 3 is reclaimed free space from swap_cap_deactivate_point and swap_cap_amount before, BE CAREFUL FOR TOMBSTONE WHEN REUSE !!" - ], - "type": {"array": ["u8", 8]} - }, - {"name": "padding4", "docs": ["_padding_4, previous lock_duration, BE CAREFUL FOR TOMBSTONE WHEN REUSE !!"], "type": "u64"}, - {"name": "creator", "docs": ["Pool creator"], "type": "publicKey"}, - {"name": "tokenMintXProgramFlag", "docs": ["token_mint_x_program_flag"], "type": "u8"}, - {"name": "tokenMintYProgramFlag", "docs": ["token_mint_y_program_flag"], "type": "u8"}, - {"name": "reserved", "docs": ["Reserved space for future use"], "type": {"array": ["u8", 22]}} - ] - } - } - ], - "types": [ - { - "name": "StaticParameters", - "docs": ["Parameter that set by the protocol"], - "type": { - "kind": "struct", - "fields": [ - { - "name": "baseFactor", - "docs": ["Used for base fee calculation. base_fee_rate = base_factor * bin_step * 10 * 10^base_fee_power_factor"], - "type": "u16" - }, - {"name": "filterPeriod", "docs": ["Filter period determine high frequency trading time window."], "type": "u16"}, - {"name": "decayPeriod", "docs": ["Decay period determine when the volatile fee start decay / decrease."], "type": "u16"}, - {"name": "reductionFactor", "docs": ["Reduction factor controls the volatile fee rate decrement rate."], "type": "u16"}, - {"name": "variableFeeControl", "docs": ["Used to scale the variable fee component depending on the dynamic of the market"], "type": "u32"}, - { - "name": "maxVolatilityAccumulator", - "docs": ["Maximum number of bin crossed can be accumulated. Used to cap volatile fee rate."], - "type": "u32" - }, - {"name": "minBinId", "docs": ["Min bin id supported by the pool based on the configured bin step."], "type": "i32"}, - {"name": "maxBinId", "docs": ["Max bin id supported by the pool based on the configured bin step."], "type": "i32"}, - { - "name": "protocolShare", - "docs": [ - "Portion of swap fees retained by the protocol by controlling protocol_share parameter. protocol_swap_fee = protocol_share * total_swap_fee" - ], - "type": "u16" - }, - {"name": "baseFeePowerFactor", "docs": ["Base fee power factor"], "type": "u8"}, - {"name": "padding", "docs": ["Padding for bytemuck safe alignment"], "type": {"array": ["u8", 5]}} - ] - } - }, - { - "name": "VariableParameters", - "docs": ["Parameters that changes based on dynamic of the market"], - "type": { - "kind": "struct", - "fields": [ - { - "name": "volatilityAccumulator", - "docs": [ - "Volatility accumulator measure the number of bin crossed since reference bin ID. Normally (without filter period taken into consideration), reference bin ID is the active bin of last swap.", - "It affects the variable fee rate" - ], - "type": "u32" - }, - { - "name": "volatilityReference", - "docs": ["Volatility reference is decayed volatility accumulator. It is always <= volatility_accumulator"], - "type": "u32" - }, - {"name": "indexReference", "docs": ["Active bin id of last swap."], "type": "i32"}, - {"name": "padding", "docs": ["Padding for bytemuck safe alignment"], "type": {"array": ["u8", 4]}}, - {"name": "lastUpdateTimestamp", "docs": ["Last timestamp the variable parameters was updated"], "type": "i64"}, - {"name": "padding1", "docs": ["Padding for bytemuck safe alignment"], "type": {"array": ["u8", 8]}} - ] - } - }, - {"name": "ProtocolFee", "type": {"kind": "struct", "fields": [{"name": "amountX", "type": "u64"}, {"name": "amountY", "type": "u64"}]}}, - { - "name": "RewardInfo", - "docs": ["Stores the state relevant for tracking liquidity mining rewards"], - "type": { - "kind": "struct", - "fields": [ - {"name": "mint", "docs": ["Reward token mint."], "type": "publicKey"}, - {"name": "vault", "docs": ["Reward vault token account."], "type": "publicKey"}, - {"name": "funder", "docs": ["Authority account that allows to fund rewards"], "type": "publicKey"}, - {"name": "rewardDuration", "docs": ["TODO check whether we need to store it in pool"], "type": "u64"}, - {"name": "rewardDurationEnd", "docs": ["TODO check whether we need to store it in pool"], "type": "u64"}, - {"name": "rewardRate", "docs": ["TODO check whether we need to store it in pool"], "type": "u128"}, - {"name": "lastUpdateTime", "docs": ["The last time reward states were updated."], "type": "u64"}, - { - "name": "cumulativeSecondsWithEmptyLiquidityReward", - "docs": [ - "Accumulated seconds where when farm distribute rewards, but the bin is empty. The reward will be accumulated for next reward time window." - ], - "type": "u64" - } - ] - } - } - ], - "events": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/meteora-dlmm/index.js b/projects/meteora-dlmm/index.js deleted file mode 100644 index 0047addc6eb..00000000000 --- a/projects/meteora-dlmm/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); -const idl = require('./idl.json'); -const { getEnv } = require('../helper/env'); - -// https://docs.meteora.ag/dlmm/dlmm-integration/dlmm-sdk -async function tvl() { - if (!getEnv('IS_RUN_FROM_CUSTOM_JOB')) throw new Error('This job is not meant to be run directly, please use the custom job feature') - - const provider = getProvider() - const programId = 'LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo' - // const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const pools = await program.account.lbPair.all() - const tokenAccounts = pools.map(({ account: { reserveX, reserveY } }) => [reserveX, reserveY]).flat() - return sumTokens2({ tokenAccounts }) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - solana: { tvl, }, -} diff --git a/projects/meter-Liquid-Staking/index.js b/projects/meter-Liquid-Staking/index.js deleted file mode 100644 index 200ebef19f5..00000000000 --- a/projects/meter-Liquid-Staking/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const stMTRG = '0x215d603293357ca222bE92A1bf75eEc38DeF0aad'; -async function tvl(api) { - const stMTRGStaking = await api.call({ - target: stMTRG, - abi: 'erc20:totalSupply', - }); - return { - meter: stMTRGStaking / 1e18 - }; -} - -module.exports = { - meter: { - tvl, - } -} \ No newline at end of file diff --git a/projects/meterBridge/addresses.json b/projects/meterBridge/addresses.json deleted file mode 100644 index ce2894ebc59..00000000000 --- a/projects/meterBridge/addresses.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "ethereum": { - "ERC20Handler": "0xEa31ca828F53A41bA2864FA194bb8A2d3f11C0C0", - "Tokens": [ - "0xD46bA6D942050d489DBd938a2C909A5d5039A161", - "0xcf3c8be2e2c42331da80ef210e9b1b307c03d36a", - "0xac0104cca91d167873b8601d2e71eb3d4d8c33e0", - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0xBd2949F67DcdC549c6Ebe98696449Fa79D988A9F", - "0xd478161c952357f05f0292b56012cd8457f1cfbf", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0xabe580e7ee158da464b51ee1a83ac0289622e6be", - "0xa58a4f5c4Bb043d2CC1E170613B74e767c94189B", - "0x0Def8d8addE14c9eF7c2a986dF3eA4Bd65826767" - ] - }, - "bsc": { - "ERC20Handler": "0x83354D47379881e167F7160A80dAC8269Fe946Fa", - "Tokens": [ - "0xDB021b1B247fe2F1fa57e0A87C748Cc1E321F07F", - "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", - "0xe9e7cea3dedca5984780bafc599bd69add087d56", - "0xbcf39F0EDDa668C58371E519AF37CA705f2bFcbd", - "0x27d72484f1910F5d0226aFA4E03742c9cd2B297a", - "0xBd2949F67DcdC549c6Ebe98696449Fa79D988A9F", - "0xe138c66982Fd5c890c60b94FDBa1747faF092c20" - ] - }, - "moonriver": { - "ERC20Handler": "0xB1eFA941D6081afdE172e29D870f1Bbb91BfABf7", - "Tokens": [ - "0xCb4a593ce512D78162C58384f0b2Fd6e802c2c47", - "0xaBD347F625194D8e56F8e8b5E8562F34B6Df3469", - "0x6fc9651f45B262AE6338a701D563Ab118B1eC0Ce", - "0x0B5B9806b1B202e22aA26Cfd527fDCafEF9eDAcf", - "0x59A1B7B7469b968eb051f6c71512d2B61F27794d", - "0xdf1380A3Ade5F398c9233f36aD6fD0d88AEa9e51", - "0x5c22ba65F65ADfFADFc0947382f2E7C286A0Fe45", - "0x1e24EC84F66cd26Dad607d81796DbeB13Cb22692", - "0x8b29344f368b5FA35595325903fE0eAab70C8E1F", - "0xbD90A6125a84E5C512129D622a75CDDE176aDE5E", - "0x7B37d0787A3424A0810E02b24743a45eBd5530B2", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0x3674D64AaB971aB974B2035667a4B3d09B5ec2B3", - "0xff0bb979035Bc622f01062F37E2BaD4a05B31D83", - "0xE6a991Ffa8CfE62B0bf6BF72959A3d4f11B2E0f5", - "0x6b35140fcc6e502a7e1edAC6E740513f41c4b5ec" - ] - }, - "meter": { - "ERC20Handler": "0x139d9b458acda76457dd99db3a6a36ca9cb3bbf1", - "Tokens": [ - "0x1cf09D1B5Da9d9d24365D87B932A7c4bD018A419", - "0xF0E86246519Be0810C9FAfc8430C49799985aAA8", - "0x24aA189DfAa76c671c279262F94434770F557c35", - "0x983147FB73A45FC7F8B4DFA1cd61Bdc7b111e5b6", - "0x6CFe9AdaD5215195c1Aa9755DAed29360e6Ab986", - "0xb158870beB809Ad955Bf56065C5C10D7Fd957cC0", - "0x228ebBeE999c6a7ad74A6130E81b12f9Fe237Ba3", - "0xd5e615BB3c761AB4cD9251dEEd78Dac58BE9CcBF", - "0x75Fd6F7EDCc5E7A8100eAd3D29CCD844153ef0F3", - "0xd86e243fc0007e6226b07c9a50c9d70d78299eb5", - "0x5Fa41671c48e3C951AfC30816947126CCC8C162e", - "0x8Df95e66Cb0eF38F91D2776DA3c921768982fBa0", - "0xc1f6C86ABEe8e2e0B6fd5BD80F0b51fef783635C" - ] - }, - "theta": { - "ERC20Handler": "0xe1c892A6cE33cB31c100369aA6fC302d7B96254a", - "Tokens": [ - "0x7B37d0787A3424A0810E02b24743a45eBd5530B2", - "0xBd2949F67DcdC549c6Ebe98696449Fa79D988A9F", - "0x1336739b05c7ab8a526d40dcc0d04a826b5f8b03", - "0x3Ca3fEFA944753b43c751336A5dF531bDD6598B6", - "0x3c751Feb00364CA9e2d0105c40F0b423abf1DEE3", - "0xE6a991Ffa8CfE62B0bf6BF72959A3d4f11B2E0f5", - "0xae6f0539e33f624ac685cce9ba57cc1d948d909d", - "0xf64FA5155D8cc578D473A21FB67507DDCbB80D21" - ] - }, - "avax": { - "ERC20Handler": "0xeB06fa7e1d400caa3D369776Da45EbB5EbDF9b5B", - "Tokens": [ - "0x027dbcA046ca156De9622cD1e2D907d375e53aa7" - ] - }, - "moonbeam": { - "ERC20Handler": "0x766E33b910Cd6329a0cBD5F72e48Ec162E38A25D", - "Tokens": [ - "0x4EdF8E0778967012D46968ceadb75436d0426f88", - "0x7B37d0787A3424A0810E02b24743a45eBd5530B2", - "0x1aBB8FdE5e64be3419FceF80df335C68dD2956C7", - "0xAcc15dC74880C9944775448304B263D191c6077F", - "0xB60590313975f0d98821B6Cab5Ea2a6d9641D7B6", - "0xBd2949F67DcdC549c6Ebe98696449Fa79D988A9F", - "0x8b29344f368b5FA35595325903fE0eAab70C8E1F", - "0x4bDE98731149093a12579D71338fd3741fe6E5Ce", - "0x89C36bB2E30efCA78bDEB99101C1Ac1FfcB6a30e", - "0x3c751Feb00364CA9e2d0105c40F0b423abf1DEE3", - "0xE6a991Ffa8CfE62B0bf6BF72959A3d4f11B2E0f5", - "0xf64FA5155D8cc578D473A21FB67507DDCbB80D21" - ] - }, - "polygon": { - "ERC20Handler": "0xeB06fa7e1d400caa3D369776Da45EbB5EbDF9b5B", - "Tokens": [ - "0xf305012ea754252184f1071c86ae99fac5b40320", - "0x3Ca3fEFA944753b43c751336A5dF531bDD6598B6" - ] - } -} \ No newline at end of file diff --git a/projects/meterBridge/index.js b/projects/meterBridge/index.js deleted file mode 100644 index bd2f06b4e5d..00000000000 --- a/projects/meterBridge/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const addresses = require("./addresses.json"); -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); -const sdk = require('@defillama/sdk') - -module.exports = {}; - -Object.keys(addresses).forEach(chain => { - const { ERC20Handler: owner, Tokens } = addresses[chain] - - module.exports[chain] = { - tvl: sumTokensExport({ chain, owner, tokens: [nullAddress, ...Tokens], logCalls: true }) - } - - if (chain === 'ethereum') { - module.exports.ethereum.tvl = sdk.util.sumChainTvls([ - module.exports.ethereum.tvl, - sumTokensExport({ - tokensAndOwners: [ - ['0xd46ba6d942050d489dbd938a2c909a5d5039a161', '0x805c7ecba41f9321bb098ec1cf31d86d9407de2f',], - ], - logCalls: true - }) - ]) - } -}) diff --git a/projects/metera-protocol/index.js b/projects/metera-protocol/index.js deleted file mode 100644 index b5c77fba48d..00000000000 --- a/projects/metera-protocol/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); -const lockedAssetsAddresses = ["addr1wxms0ke7yf5e525kruhpacgaprwscxrefd29q9mu5j6tcgqme9f96"] - -async function tvl() { - const lockedAssets = await sumTokens2({ - owners: lockedAssetsAddresses - }) - return lockedAssets -} - -module.exports = { - timetravel: false, - cardano: { - tvl - } -} diff --git a/projects/metf-finance/index.js b/projects/metf-finance/index.js deleted file mode 100644 index 18295b7d6ba..00000000000 --- a/projects/metf-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { pool2 } = require('../helper/pool2'); -const { staking } = require("../helper/staking"); - -module.exports = { - cronos: { - tvl: () => ({}), // tvl is 0 for ohm forks - staking: staking('0x1A6aD4bac521a98556A4C0Da5946654c5DC7Ce0A', '0xb8df27c687c6af9afe845a2afad2d01e199f4878'), - pool2: pool2("0xE25737b093626233877EC0777755c5c4081580be", "0xd7385f46FFb877d8c8Fe78E5f5a7c6b2F18C05A7") - } -} \ No newline at end of file diff --git a/projects/methlab-xyz/index.js b/projects/methlab-xyz/index.js deleted file mode 100644 index 12dffbc60e6..00000000000 --- a/projects/methlab-xyz/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { mergeExports } = require('../helper/utils') -const { uniV3Export } = require('../helper/uniswapV3') - - -const abi = { - evt_Strategy: 'event StrategyStatusChange (address indexed strategy, bool status)', - evt_VaultAdded: 'event VaultAdded (address indexed vault)', - evt_LoanAdded: 'event LoanAdded (address indexed vault, address indexed loan, address loanImplUsed)', - strategy_collToken: 'address:collToken', - strategy_borrowToken: 'address:borrowToken' -} - -const config = { - mantle: { factory: '0xB375DfF90F8dafeA50E2EA7a0666B426Ed786C5D', fromBlock: 69177970 } -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain]; - - module.exports[chain] = { - tvl: async (api) => { - const logArgs = { api, target: factory, fromBlock }; - - const strategies = (await getLogs2({ ...logArgs, eventAbi: abi.evt_Strategy, extraKey: 'strategy' })).map(log => log.strategy); - const vaults = (await getLogs2({ ...logArgs, eventAbi: abi.evt_VaultAdded, extraKey: 'vault' })).map(log => log.vault); - const loans = (await getLogs2({ ...logArgs, eventAbi: abi.evt_LoanAdded, extraKey: 'loan' })).map(log => log.loan); - - const collTokens = await api.multiCall({ abi: abi.strategy_collToken, calls: strategies }); - const borrowTokens = await api.multiCall({ abi: abi.strategy_borrowToken, calls: strategies }); - const tokens = collTokens.concat(borrowTokens) - return api.sumTokens({ tokens, owners: loans.concat(vaults), blacklistedTokens: ['0x401307732d732dd3b05ac1138b8661c0f55830ea'] }); - } - } -}); - -module.exports = mergeExports([ - module.exports, - uniV3Export({ - mantle: { factory: "0x8f140Fc3e9211b8DC2fC1D7eE3292F6817C5dD5D", fromBlock: 59915640 }, - }) -]) \ No newline at end of file diff --git a/projects/metis/index.js b/projects/metis/index.js deleted file mode 100644 index 81806843153..00000000000 --- a/projects/metis/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: "0x3980c9ed79d2c191A89E02Fa3529C60eD6e9c04b", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/metisBridge/index.js b/projects/metisBridge/index.js deleted file mode 100644 index 81806843153..00000000000 --- a/projects/metisBridge/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: "0x3980c9ed79d2c191A89E02Fa3529C60eD6e9c04b", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/metronome-synth/index.js b/projects/metronome-synth/index.js deleted file mode 100644 index 490198487d7..00000000000 --- a/projects/metronome-synth/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owner: '0x3691ef68ba22a854c36bc92f6b5f30473ef5fb0a', - tokens: [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - "0xd1C117319B3595fbc39b471AB1fd485629eb05F2", - ADDRESSES.ethereum.FRAX, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WBTC, - "0xa8b607Aa09B6A2E306F93e74c282Fb13f6A80452", - "0xc14900dFB1Aa54e7674e1eCf9ce02b3b35157ba5", - ADDRESSES.ethereum.sfrxETH, - "0x4Dbe3f01aBe271D3E65432c74851625a8c30Aa7B", - "0x650CD45DEdb19c33160Acc522aD1a82D9701036a", - "0xDD9F61a85fFE73E41eF889817972f0B0AaE6D6Dd" - ] - }), - }, - optimism: { - tvl: sumTokensExport({ - owner: '0x4c6bf87b7fc1c8db85877151c6ede38ed27c34f6', - tokens: [ - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.WETH_1, - ADDRESSES.optimism.OP, - "0xdd63ae655b388cd782681b7821be37fdb6d0e78d", - "0xccf3d1acf799bae67f6e354d685295557cf64761", - "0x19382707d5a47e74f60053b652ab34b6e30febad", - "0x539505dde2b9771debe0898a84441c5e7fdf6bc0", - ] - }), - }, - base: { - tvl: sumTokensExport({ - owner: '0xAeDF96597338FE03E8c07a1077A296df5422320e', - tokens: [ - ADDRESSES.base.USDC, - ADDRESSES.base.WETH, - "0x1e41238aCd3A9fF90b0DCB9ea96Cf45F104e09Ef", - "0x82562507429876486B60AF4F32390ef0947b3d13", - "0x46fb68Eb2b1Fc43654AbaE5691D39D18D933E4b4", - ] - }), - } -} diff --git a/projects/metronome/index.js b/projects/metronome/index.js deleted file mode 100644 index 13da3f99cbf..00000000000 --- a/projects/metronome/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const acc = '0x686e5ac50D9236A9b7406791256e47feDDB26AbA'; -const met = '0x2Ebd53d035150f328bd754D6DC66B99B0eDB89aa'; -const proceeds = '0x68c4b7d05fae45bcb6192bb93e246c77e98360e1'; - -module.exports = { - start: '2018-05-23', // block 5659904 - hallmarks: [ - [1661257318,"Metronome V1 Sunset"] - ], - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [nullAddress, acc], - [nullAddress, proceeds], - ] - }) - } -}; diff --git a/projects/metropolis-exchange-amm/index.js b/projects/metropolis-exchange-amm/index.js deleted file mode 100644 index fc730ab69c1..00000000000 --- a/projects/metropolis-exchange-amm/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens'); - -module.exports = uniTvlExports({ - sonic: '0x1570300e9cFEC66c9Fb0C8bc14366C86EB170Ad0', -}) diff --git a/projects/metropolis-exchange-dlmm/index.js b/projects/metropolis-exchange-dlmm/index.js deleted file mode 100644 index 32d2b584c8d..00000000000 --- a/projects/metropolis-exchange-dlmm/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - sonic: '0x39D966c1BaFe7D3F1F53dA4845805E15f7D6EE43' -}) diff --git a/projects/metropolis/index.js b/projects/metropolis/index.js deleted file mode 100644 index 9a041755a9c..00000000000 --- a/projects/metropolis/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const factories = { - fantom: '0xdD693b9F810D0AEE1b3B74C50D3c363cE45CEC0C', -} -async function tvl(api) { - const pools = await api.fetchList({ - target: factories[api.chain], - itemAbi: 'function allLBPairs(uint256) view returns (address)', - lengthAbi: 'uint256:getNumberOfLBPairs', - }) - const tokenA = await api.multiCall({ - abi: 'address:tokenX', - calls: pools, - }) - const tokenB = await api.multiCall({ - abi: 'address:tokenY', - calls: pools, - }) - const toa = [] - tokenA.map((_, i) => { - toa.push([tokenA[i], pools[i]]) - toa.push([tokenB[i], pools[i]]) - }) - return sumTokens2({api, tokensAndOwners: toa, }) -} - -module.exports = { - hallmarks: [ - [1680097334,"Acquired by Swapline"] - ], - methodology: 'We count the token balances in in different liquidity book contracts', - fantom:{ - tvl: () => 0 - }, - deadFrom: 1680097334, -}; \ No newline at end of file diff --git a/projects/mev-capital/index.js b/projects/mev-capital/index.js deleted file mode 100644 index f0e2af564e8..00000000000 --- a/projects/mev-capital/index.js +++ /dev/null @@ -1,457 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getCuratorExport, getCuratorTvl } = require("../helper/curators"); -const { ABI } = require("../helper/curators/configs"); -const sui = require("../helper/chain/sui"); - -// ============================================== -// HYPERBEAT MAPPINGS CONFIGURATION -// ============================================== -const HYPERBEAT_MAPPINGS = [ - { vault: '0x5e105266db42f78fa814322bce7f388b4c2e61eb', underlying: ADDRESSES.corn.USDT0, isOneToOne: true, vaultDecimals: 18, underlyingDecimals: 6 }, // Hyperbeat USDT -> USDT0 - { vault: '0xd8fc8f0b03eba61f64d08b0bef69d80916e5dda9', underlying: '0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB' }, // Hyperbeat beHYPE -> HBHYPE - { vault: '0x81e064d0eb539de7c3170edf38c1a42cbd752a76', underlying: ADDRESSES.hyperliquid.WHYPE }, // Hyperbeat lstHYPE -> WHYPE - { vault: '0xd3a9cb7312b9c29113290758f5adfe12304cd16a', underlying: '0x5C9f0d8057bE5eD36EEEAB9b78B9c5c3f8126aB1' }, // Hyperbeat USR -> USR (ethereum address) - { vault: '0x6eb6724d8d3d4ff9e24d872e8c38403169dc05f8', underlying: '0xf4D9235269a96aaDaFc9aDAe454a0618eBE37949', isOneToOne: true, vaultDecimals: 18, underlyingDecimals: 6 }, // Hyperbeat XAUt -> XAUT0 - { vault: '0xd19e3d00f8547f7d108abfd4bbb015486437b487', underlying: ADDRESSES.hyperliquid.WHYPE }, // Hyperbeat WHYPE -> WHYPE - { vault: '0x3bcc0a5a66bb5bdceef5dd8a659a4ec75f3834d8', underlying: ADDRESSES.corn.USDT0, isOneToOne: true, vaultDecimals: 18, underlyingDecimals: 6 }, // Hyperbeat USDT0 -> USDT0 - { vault: '0x949a7250Bb55Eb79BC6bCC97fCd1C473DB3e6F29', underlying: ADDRESSES.corn.USDT0, isOneToOne: true, vaultDecimals: 18, underlyingDecimals: 6}, - { vault: '0xD66d69c288d9a6FD735d7bE8b2e389970fC4fD42', underlying: ADDRESSES.corn.USDT0, isOneToOne: true, vaultDecimals: 18, underlyingDecimals: 6}, - { vault: '0x057ced81348D57Aad579A672d521d7b4396E8a61', underlying: ADDRESSES.corn.USDT0, isOneToOne: true, vaultDecimals: 18, underlyingDecimals: 6}, -]; - -// ============================================== -// EMBER MAPPINGS CONFIGURATION -// ============================================== -const EMBER_MAPPINGS = [ - { vault: '0x323578c2b24683ca845c68c1e2097697d65e235826a9dc931abce3b4b1e43642', type: 'btc', symbol: 'EBTC', coingeckoId: 'bitcoin' }, // Ember eBTC -> BTC (uses rate) - { vault: '0x1fdbd27ba90a7a5385185e3e0b76477202f2cadb0e4343163288c5625e7c5505', type: 'basis', symbol: 'EBASIS', coingeckoId: 'usd-coin' } // Ember eBASIS -> USDC (direct) -]; - -// ============================================== -// GENERIC TVL CALCULATION FUNCTIONS -// ============================================== - -const TVL_HANDLERS = { - erc4626: async (api, vaults) => { - const assets = await api.multiCall({ abi: ABI.ERC4626.asset, calls: vaults, permitFailure: true }); - const totalAssets = await api.multiCall({ abi: ABI.ERC4626.totalAssets, calls: vaults, permitFailure: true }); - - for (let i = 0; i < assets.length; i++) { - if (!assets[i] || !totalAssets[i]) continue; - api.add(assets[i], totalAssets[i]); - } - }, - - totalSupply: async (api, vaults) => { - const totalSupplies = await api.multiCall({ - abi: 'uint256:totalSupply', - calls: vaults, - permitFailure: true - }); - - for (let i = 0; i < vaults.length; i++) { - if (totalSupplies[i] === null || totalSupplies[i] === undefined) continue; - api.add(vaults[i], totalSupplies[i]); - } - }, - - mizuType: async (api, vaults) => { - const [totalBalances, underlyingAssets] = await Promise.all([ - api.multiCall({ - abi: 'function getTotalBalance() view returns (uint256)', - calls: vaults, - permitFailure: true - }), - api.multiCall({ - abi: 'function asset() view returns (address)', - calls: vaults, - permitFailure: true - }) - ]); - - for (let i = 0; i < vaults.length; i++) { - if (totalBalances[i] === null || totalBalances[i] === undefined) continue; - if (underlyingAssets[i] === null || underlyingAssets[i] === undefined) continue; - api.add(underlyingAssets[i], totalBalances[i]); - } - }, - - napierType: async (api, vaults) => { - const [totalSupplies, underlyingAssets] = await Promise.all([ - api.multiCall({ - abi: 'uint256:totalSupply', - calls: vaults, - permitFailure: true - }), - api.multiCall({ - abi: 'function underlying() view returns (address)', - calls: vaults, - permitFailure: true - }) - ]); - - for (let i = 0; i < vaults.length; i++) { - if (totalSupplies[i] === null || totalSupplies[i] === undefined) continue; - if (underlyingAssets[i] === null || underlyingAssets[i] === undefined) continue; - api.add(underlyingAssets[i], totalSupplies[i]); - } - }, - - hyperbeat: async (api, vaults) => { - const totalSupplies = await api.multiCall({ - abi: 'uint256:totalSupply', - calls: vaults, - permitFailure: true - }); - - for (let i = 0; i < vaults.length; i++) { - if (!totalSupplies[i] || totalSupplies[i] === '0') continue; - - const mapping = HYPERBEAT_MAPPINGS.find(m => - m.vault.toLowerCase() === vaults[i].toLowerCase() - ); - - if (mapping) { - let amount = BigInt(totalSupplies[i]); - - if (mapping.isOneToOne && mapping.vaultDecimals && mapping.underlyingDecimals) { - const decimalDiff = mapping.vaultDecimals - mapping.underlyingDecimals; - if (decimalDiff > 0) { - amount = amount / (10n ** BigInt(decimalDiff)); - } - } - - api.add(mapping.underlying, amount.toString()); - } else { - api.add(vaults[i], totalSupplies[i]); - } - } - }, - - ember: async (api, vaults) => { - for (const vault of vaults) { - try { - const obj = await sui.getObject(vault); - - if (obj && obj.fields && obj.fields.receipt_token_treasury_cap) { - const totalSupply = obj.fields.receipt_token_treasury_cap.fields.total_supply.fields.value; - const rate = obj.fields.rate?.fields?.value; // Rate field for BTC calculation - - if (totalSupply) { - const mapping = EMBER_MAPPINGS.find(m => - m.vault.toLowerCase() === vault.toLowerCase() - ); - - if (mapping) { - let amount; - - if (mapping.type === 'basis') { - // eBASIS: shares_supply_raw / 1e6 - amount = Number(totalSupply) / 1e6; - } else if (mapping.type === 'btc' && rate) { - // eBTC: (shares_supply_raw / 1e8) * (rate / 1e9) - amount = (Number(totalSupply) / 1e8) * (Number(rate) / 1e9); - } else { - // Fallback - amount = Number(totalSupply); - } - - // Add using standard Sui token addresses - if (mapping.coingeckoId === 'bitcoin') { - // For BTC, use Sui WBTC address and convert to proper decimals - const amountInSatoshi = Math.floor(amount * 1e8).toString(); - api.add(ADDRESSES.sui.WBTC, amountInSatoshi); - } else if (mapping.coingeckoId === 'usd-coin') { - // For USDC, use Sui USDC address and convert to proper decimals - const amountInUsdc = Math.floor(amount * 1e6).toString(); - api.add(ADDRESSES.sui.USDC, amountInUsdc); - } else { - // Fallback: add as vault token - api.add(vault, totalSupply); - } - } else { - // Fallback to vault token - api.add(vault, totalSupply); - } - } - } - } catch (error) { - // If RPC call fails, add vault as token (fallback) - api.add(vault, 0); - } - } - } -}; - -// ============================================== -// VAULT CONFIGURATIONS BY BLOCKCHAIN -// ============================================== -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by MEV Capital.', - blockchains: { - ethereum: { - morpho: [ - '0xd63070114470f685b75b74d60eec7c1113d33a3d', // MEV Capital USDC - '0x9a8bc3b04b7f3d87cfc09ba407dced575f2d61d8', // MEV Capital wETH - '0xd50da5f859811a91fd1876c9461fd39c23c747ad', // MEV Capital Resolv USR - '0x749794e985af5a9a384b9cee6d88dab4ce1576a1', // MEV Capital USD0 - '0x2f1abb81ed86be95bcf8178ba62c8e72d6834775', // Pendle WBTC - '0x98cf0b67da0f16e1f8f1a1d23ad8dc64c0c70e0b', // MEV Capital cbBTC - '0x28d24d4380b26a1ef305ad8d8db258159e472f33', // USUAL Vault - '0xd41830d88dfd08678b0b886e0122193d54b02acc', // MEV Capital PTs USDC - '0x1265a81d42d513df40d0031f8f2e1346954d665a', // MEV Capital Elixir USDC - '0x5F7827FDeb7c20b443265Fc2F40845B715385Ff2', // MEV Capital EURCV - '0x5422374B27757da72d5265cC745ea906E0446634', // MEV Capital USDCV - ], - mellow: [ - '0x5fd13359ba15a84b76f7f87568309040176167cd', // Amphor Restaked ETH - '0xc65433845ecd16688eda196497fa9130d6c47bd8', // Ethena LRT Vault ENA - '0x0f37f1ff51fc2f8a9907ef3e226a12fdc47de4ad', // MEV Capital Lidov3 stVault x Kiln - '0x73d596efeae0a6833079e4fc999fd5cee55770a5', // MEV Capital Lidov3 stVault x Nodeinfra - '0x70558848f6b31ae03ad5a25868cd3d25e0fe8506', // MEV Capital Lidov3 stVault x Blockscape - '0x1af14ebc81e8f92e0da13d2912091d556a4ac47b', // MEV Capital Lidov3 stVault x Alchemy - '0x64047dd3288276d70a4f8b5df54668c8403f877f', // Amphor Restaked BTC - ], - symbiotic: [ - '0xdc47953c816531a8ca9e1d461ab53687d48eea26', // MEV Capital LBTC Vault - '0xea0f2ea61998346ad39dddef7513ae90915afb3c', // MEV Capital Restaked LsETH Vault - '0x0fdf3b986d62be6ae1d5228e5da90ff6f00c15f6', // MEV Capital USBD Vault - '0x9205c82d529a79b941a9df2f621a160891f57a0d', // MEV Capital cbETH Vault - '0xf60e6e6d8648fdbc2834ef7bc6f5e49ab55bec31', // MEV Capital mETH Vault - '0xd25f31806de8d608d05dfeaeb1140c1d365864b3', // MEV Capital rETH Vault - '0x446970400e1787814ca050a4b45ae9d21b3f7ea7', // MEV Capital restaked ETH - '0x3b512427ca6345e67101eccb78d9c8508714818c', // MEV Capital sfrxETH Vault - '0x4e0554959a631b3d3938ffc158e0a7b2124af9c5', // MEV Capital wstETH Vault - ], - euler: [ - '0xe2d6a2a16ff6d3bbc4c90736a7e6f7cc3c9b8fa9', // wETH - '0xe3ea69f8661ffac04e269f99c14ba73e2bb10633', // ezETH - '0x6b6976aa97cd2473b388fa9b9eeb8cca4f5a77a4', // wstETH - '0xe00a44e1210bae0eaceeeaf202c349d4b16480fe', // pzETH - '0x2306e17c7198282985a95b1ce0f63820846d0290', // INWSTETHS - '0xb07bf05af5a13d357aa1220c661bb0fb791bedcb', // weETH - '0x463af6add7b5806cf0ea30ec30f2030bf4f05175', // rstETH - '0x0de3821015518a6179a51d27bc7ed4a0a3c45b52', // ETH+ - '0x1334d0e5ca5855a803998fcc78548142bef36e3b', // wstETH (7d) - '0x01d1a1cd5955b2fefb167e8bc200a00bfada8977', // WOETH - '0x9426c7a40d5c9dd709cbc2894a7e6481f265b6bb', // rETH - '0xfc1b4e3d8291746ccdeb813805c8912bbe0a7316', // steakLRT - '0xc5ff8dde483903ffd2fbe5bf54a02b80f2bae7f7', // amphrETH - '0x9913790dd5d3d8389f682a15e4fa90a22891ff49', // rsETH - '0x6c37d34a895456aa29cabe0cacb60fc56309c7ac', // cbETH - ], - terminal: [ - '0xa01227a26a7710bc75071286539e47adb6dea417', // Terminal tUSDe - '0xa1150cd4a014e06f5e0a6ec9453fe0208da5adab', // Terminal tWETH - ], - midas: [ - '0x030b69280892c888670edcdcd8b69fd8026a0bf3', // Midas mMEV Vault - '0xb64c014307622eb15046c66ff71d04258f5963dc', // Midas mevBTC Vault (price not in the api yet) - ], - upshift: [ - '0x5fde59415625401278c4d41c6befce3790eb357f', // The Treehouse Growth Vault - ], - termmax: [ - '0xdadeacc03a59639c0ece5ec4ff3bc0d9920a47ec', // Termmax wstETH Vault - ], - mizu: [ - '0x416ec6e04c009f9bae99a47ef836bf2cc64ec93c', // Hype ETH Deposit Vault (price not in the api yet) - '0xd6fd5d4fa64fc7131e0ec3a4a53dc620a0ffc1bc', // Hype USD Deposit Vault (price not in the api yet) - '0x164645fbc7220a3b4f8f5c6b473bcf1b6db146dd', // Hype BTC Deposit Vault (price not in the api yet) - ], - term: [ - '0xa10c40f9e318b0ed67ecc3499d702d8db9437228', // MEV Capital USDC - ], - napier: [ - '0x3bae96aa06fe7b52f28fd41e544cc76a5f532f81', // cUSDO - '0xa97087d21d0b470cb1a09255d26e34e1a392cbfd', // MEV Capital Resolv USR (Morpho) - '0xdc87d00d83153374e150d17b960fc74aa413d03a', // MEV Capital wETH (Morpho) - '0x8eb9f9e97d6a63aab7572ad0d96fa3f09255cce9', // yUSD (v1) - ], - ipor: [ - - '0xd731f94c778f7c1090e2e0d797150a647de5188a' - ] - }, - unichain: { - morpho: [ - '0xc063181747e56c034ac14dc82db663409566fdf6', // MEV Capital USDC (Unichain) - '0x3f93576d13091bfbf6825f7421ef33cc353dc433' // Morpho WETH Unichain Cluster - ] - }, - plume: { - morpho: [ - '0x0b14d0bdaf647c541d3887c5b1a4bd64068fcda7', // Mystic pUSD MEV Capital - ] - }, - arbitrum: { - morpho: [ - '0xa60643c90a542a95026c0f1dbdb0615ff42019cf', // Morpho USDC Cluster - '0x9B33073eB98A9a1eb408DedcD08616fE850b3f09', // Morpho WETH Cluster - '0x6d57dAd0F1c4da0C1d5443AE8F7f8a50BDb9Cf75' // Morpho USDT0 Cluster - ] - }, - // solana: { - // kamino: [ - // 'QAYtEKciq4gc42K683rTaWu3JxqceA7JkEkZxwWUWBo', // MEV Capital SOL - // 'EPC2N3AAv84P9TKsnDt2x41p6T7c5vTewBhQbh4RVx4r', // MEV CAPITAL USDC Prime - // ] - // }, - berachain: { - euler: [ - '0xd538b6aef78e4bdde4fd4576e9e3a403704602bc', // HONEY - '0xad9e5e2647efb9137b6b8d688d4906fa51476870', // wBERA - '0x1371dd58ce95ecd624340f072f97212a2661a280', // USDC.e - '0x6d976915bd9de43de1a60c39e128e320dadda000', // wETH - '0x558b16e07b8558b2a54946ca973b7b20b86a8b87', // USDe - '0x3de0ca4af11108c94c9066a935ee67e53b7f9447', // sUSDe - '0x2cccd307bb616e5f896ab61cae09ef4e5e9fedb7', // rUSD - '0x413dfb1814a6b5fe4488c49f86e2a74d285ffd5b', // NECT - '0x34018ac9dc4b114036ca148aa18c8f75594e5e95', // WBERA (Blue Cluster) - '0x4eb3351066494852a03ffbbde40a9776380ce20d', // LBGT (Blue Cluster) - '0x91e1ec1e948f635c127dad41eae1af899399f15a', // BYUSD - '0x1dfb669df5e70d4238f2cc0a9ee3b1a21ff91bc0', // iBERA - '0xb758d6ec8111feb9b0ec758a61b7874e5821dffd', // wBTC - '0x85dba39b85218229a4c3b9b037d05cd6eb4cf05d', // beraETH (not in the api yet) - '0xb8064453b25a91d7a4e8b7e7883a817d5742de34', // srUSD - '0xbabf4ce18fbab547ad5939deff825f3e2f8d9402', // PT-sUSDE-25SEP2025 - '0x826244d9db2a0f438c3190a0f393c13d41ad7a2e', // STONE - ], - }, - bsc: { - euler: [ - '0xd98125a23faeb48180e33ca6eef8f128e07418d1', // USDC - '0x107a441c473517a37b03dcd8024c5b63e3cc13df', // wBNB - '0x777c95b204e2ed3906885ef09f4531882587b52c', // BTCB - '0xe54dffd36177975938a3873e522dee535adebe01', // USDT - '0x7593931d08e3baa750ca3cb6a0d0fde6acd65107', // slisBNB - '0x216f6d6c2ca15f83b656f3e9a8fcdf615dbc1710', // ETH - '0x0dd93eb321a768a274d21062067b52527abd4506', // lisUSD - '0xd6f4ee21c946071cf13d773e2ab1e31d44a27a54', // USDe - '0x088241d1c5c951c59fb66083b291b69e3cc27e8c', // sUSDe - ], - lista: [ - '0x6402d64f035e18f9834591d3b994dfe41a0f162d', // MEV Capital USDT Vault - ] - }, - hyperliquid: { - hyperbeat: [ - '0x5e105266db42f78fa814322bce7f388b4c2e61eb', // Hyperbeat USDT - '0xd8fc8f0b03eba61f64d08b0bef69d80916e5dda9', // Hyperbeat beHYPE (price not in the api yet) - '0x81e064d0eb539de7c3170edf38c1a42cbd752a76', // Hyperbeat lstHYPE (price not in the api yet) - '0xd3a9cb7312b9c29113290758f5adfe12304cd16a', // Hyperbeat USR (price not in the api yet) - '0x6eb6724d8d3d4ff9e24d872e8c38403169dc05f8', // Hyperbeat XAUt (price not in the api yet) - '0xd19e3d00f8547f7d108abfd4bbb015486437b487', // Hyperbeat WHYPE (price not in the api yet) - '0x3bcc0a5a66bb5bdceef5dd8a659a4ec75f3834d8', // Hyperbeat USDT0 (price not in the api yet) - '0x949a7250Bb55Eb79BC6bCC97fCd1C473DB3e6F29', // Hyperbeat dnHYPE (price not in the api yet) - '0xD66d69c288d9a6FD735d7bE8b2e389970fC4fD42', // Hyperbeat wVLP (price not in the api yet) - '0x057ced81348D57Aad579A672d521d7b4396E8a61', // Hyperbeat USDC (price not in the api yet) - ] - }, - sonic: { - euler: [ - '0x0806af1762bdd85b167825ab1a64e31cf9497038', // scETH - '0xb38d431e932fea77d1df0ae0dfe4400c97e597b8', // scUSD - '0x196f3c7443e940911ee2bb88e019fd71400349d9', // USDC.e - '0x90a804d316a06e00755444d56b9ef52e5c4f4d73', // wS - '0x6832f3090867449c058e1e3088e552e12ab18f9e', // stS - '0xa5cd24d9792f4f131f5976af935a505d19c8db2b', // wETH - '0x9144c0f0614dd0ace859c61cc37e5386d2ada43a', // wS - '0x05d57366b862022f76fe93316e81e9f24218bbfc', // wstkscETH - '0x1cda7e7b2023c3f3c94aa1999937358fa9d01aab', // wstkscUSD - '0xfffc9d22304cf49784e9b31ddbeb066344b2b856', // PT-wstkscETH-29MAY2025 - '0xeeaab5c863f4b1c5356af138f384adc25cb70da6', // stS - '0xf6e2ddf7a149c171e591c8d58449e371e6dc7570', // PT-wstkscUSD-29MAY2025 - '0xdbc46ff39cae7f37c39363b0ca474497dad1d3cf', // PT-stS-29MAY2025 - '0x08f04a3db30b0cd7e42e61b4e412b1123c52e8a1', // PT-aSonUSDC-14AUG2025 - '0x6f2ab32a6487a2996c74ed2b173dfdf3d5eedb58', // wOS - '0xd506f1e4adfcf1196b7c5d2ebf4e858e33d7a93e', // PT-wOS-29MAY2025 - '0xb936137169d777fcb8b7cf02329620b78fccec0a', // PT-stS-29MAY2025 (bis) - '0xdEBdAB749330bb976fD10dc52f9A452aaF029028', // xUSD - '0x12ac805F4596C3E55bb100B4593A1B8025CD2056', // yUSD - '0x8D024593d781B1C86EcD5d0f899d10C5E9de7069', // HLP0 - '0xC37fa1c70D77bdEd373C551a92bAbcee44a9d04E', // wmetaS - '0x7aD07B280A17Ac7af489E487eaAf004b69786a0A', // x33 - '0xDE604f03E44247b31f71C4Fa055F9F3ea08D1271', // PT-wstkscETH-18DEC2025 - '0xF71B17cCF362B6dcC1b6917A05820477cF7802A0', // PT-stS-18DEC2025 - '0x6e14A20334724a194D2f8B38162522CAD202b986', // PT-wstkscUSD-18DEC2025 - '0x6F11663766bB213003cD74EB09ff4c67145023c5', // wmetaUSD - ], - napier: [ - '0x0532d4f06ba9b159d0b456662cc488eefe2fe34f', // scETH - ] - }, - avax:{ - silo: [ - '0x1f8e769b5b6010b2c2bbcd68629ea1a0a0eda7e3', // BTC.b - '0x4dc1ce9b9f9ef00c144bfad305f16c62293dc0e8', // USDC - '0x4c9edf85b8b33198f0c29a799965b6df1ae67435' // AVAX - ] - }, - sui: { - ember: [ - "0x323578c2b24683ca845c68c1e2097697d65e235826a9dc931abce3b4b1e43642", // ember ebtc - "0x1fdbd27ba90a7a5385185e3e0b76477202f2cadb0e4343163288c5625e7c5505" // ember basis - ] - } - } -} - - - -// ============================================== -// ADAPTER CONFIGURATION AND EXPORT -// ============================================== - -const PROTOCOL_HANDLERS = { - erc4626: ['upshift', 'term', 'termmax', 'lista', 'ipor'], - totalSupply: ['terminal', 'midas'], - mizuType: ['mizu'], - napierType: ['napier'], - hyperbeat: ['hyperbeat'], - ember: ['ember'] -}; - -function createChainTvlFunction(chainConfig) { - return async (api) => { - const standardProtocols = { - morpho: chainConfig.morpho || [], - mellow: chainConfig.mellow || [], - symbiotic: chainConfig.symbiotic || [], - euler: chainConfig.euler || [], - silo: chainConfig.silo || [] - }; - - const hasStandardProtocols = Object.values(standardProtocols).some(arr => arr.length > 0); - - const promises = []; - - if (hasStandardProtocols) { - promises.push(getCuratorTvl(api, standardProtocols)); - } - - Object.entries(PROTOCOL_HANDLERS).forEach(([handlerType, protocols]) => { - protocols.forEach(protocol => { - if (chainConfig[protocol]) { - promises.push(TVL_HANDLERS[handlerType](api, chainConfig[protocol])); - } - }); - }); - - await Promise.all(promises); - }; -} - -const adapterExport = getCuratorExport(configs); - -adapterExport.ethereum.tvl = createChainTvlFunction(configs.blockchains.ethereum); -adapterExport.hyperliquid.tvl = createChainTvlFunction(configs.blockchains.hyperliquid); -adapterExport.bsc.tvl = createChainTvlFunction(configs.blockchains.bsc); -adapterExport.unichain.tvl = createChainTvlFunction(configs.blockchains.unichain); -adapterExport.plume.tvl = createChainTvlFunction(configs.blockchains.plume); -adapterExport.berachain.tvl = createChainTvlFunction(configs.blockchains.berachain); -adapterExport.sonic.tvl = createChainTvlFunction(configs.blockchains.sonic); -adapterExport.avax.tvl = createChainTvlFunction(configs.blockchains.avax); -adapterExport.sui.tvl = createChainTvlFunction(configs.blockchains.sui); - -module.exports = adapterExport; \ No newline at end of file diff --git a/projects/meveth/index.js b/projects/meveth/index.js deleted file mode 100644 index 1504235d1a1..00000000000 --- a/projects/meveth/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const getFraction = "function fraction() view returns (uint128 base, uint128 elastic)"; - -async function tvl(api) { - const { elastic } = await api.call({ abi: getFraction, target: '0x24ae2da0f361aa4be46b48eb19c91e02c5e4f27e' }) - api.add(ADDRESSES.null, elastic) - return api.getBalances() -} - -module.exports = { - methodology: - "Staked tokens are counted as TVL based on the chain that they are staked on and where the liquidity tokens are issued", - doublecounted: true, - ethereum: { - tvl, - }, -}; diff --git a/projects/mew-fi/index.js b/projects/mew-fi/index.js deleted file mode 100644 index 84a0098e8ef..00000000000 --- a/projects/mew-fi/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/ergo') - -module.exports = { - timetravel: false, - ergo: { - tvl: () => ({}), - staking: sumTokensExport({ owner: '2Czxg7U54ZyGMzjt35EYX9g98H9UjFqteuYWX5CSgGCYWAjg1ng2jgm4BHjA6u1Azeo7EYQsBMVLbhRreNASJu54ho', }) - } -} diff --git a/projects/mexc-cex/index.js b/projects/mexc-cex/index.js deleted file mode 100644 index 2aad327325f..00000000000 --- a/projects/mexc-cex/index.js +++ /dev/null @@ -1,103 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - bitcoin: { - owners: bitcoinAddressBook.mexcCex, - }, - ethereum: { - owners: [ - "0x3cc936b795a188f0e246cbb2d74c5bd190aecf18", - "0x0162cd2ba40e23378bf0fd41f919e1be075f025f", - "0x75e89d5979e4f6fba9f97c104c2f0afb3f1dcb88", - "0xee136c0389733849dd710ac7104e92c6bf497574", - "0x3cc936b795a188f0e246cbb2d74c5bd190aecf18", - "0xe4e3ECA65460C14a5245b09fee15a92bA09458b6", - "0xf016E1D45EF23Bdd414E7A2E4D46E1b34577b508", - "0x12C5E4EEEaA20E25847b5453D23246983c512DB7", - "0xD67f25Ef2399A0C769B1A35634C5Ce77166714dB", - "0xc411aB12837f63935b71B6c6643d0f7000e55E4b", - "0x1F7370792a057227024e7a8Cc15b40E3eD171FfC", - "0xf95334a86d09A6eEc74D69Da344efaca424B13a9", - "0x76bf215ADE956642B056B9043e014988941BbdDd", - "0x469AfE803C54A36674C55231489Cf4b61da8c1bC", - "0x9642b23ed1e01df1092b92641051881a322f5d4e", - "0xb5a6fd438017dbb0a2e5fcdcca715da227582ce4", - "0x3cc936b795a188f0e246cbb2d74c5bd190aecf18", - "0x9642b23ed1e01df1092b92641051881a322f5d4e", - "0x1Ed0be7d0A9580e202F6b98c29725d5C11D10b71", - "0x6e5a3b0021949452D31A43BE17D808De54752a44", - "0x2fF5fc5b63f2bfCE5d6BB9Ea4d170cf1aa40693c" - ], - }, - bsc: { - owners: [ - "0x4982085c9e2f89f2ecb8131eca71afad896e89cb", - "0x2e8f79ad740de90dc5f5a9f0d8d9661a60725e64", - "0x7354abb551e41bbd9fb32e2e79f44631349119b8", - "0x9bb6a22da110c6c9bab745bcaf0ee142ee83af37", - "0x2e8f79ad740de90dc5f5a9f0d8d9661a60725e64" - ], - }, - polygon: { - owners: [ - "0x51e3d44172868acc60d68ca99591ce4230bc75e0", - "0x576b81F0c21EDBc920ad63FeEEB2b0736b018A58", - ], - }, - tron: { - owners: [ - "TEPSrSYPDSQ7yXpMFPq91Fb1QEWpMkRGfn", - "TB37WWozkkenGVYWD7Do2N5WT2CedqDktJ", - ], - }, - arbitrum: { - owners: [ - "0x9b64203878f24eb0cdf55c8c6fa7d08ba0cf77e5", - "0xb86f1061E0D79E8319339d5FDbb187D4E7Ad3300", - ], - }, - optimism: { - owners: ["0xdf90c9b995a3b10a5b8570a47101e6c6a29eb945"], - }, - starknet: { - owners: [ - "0x069a7818562b608ce8c5d0039e7f6d1c6ee55f36978f633b151858d85c022d2f", - ], - }, - klaytn: { - owners: ["0x9dd35021d77c1de5ed50b9d788a2f68903a96b96"], - }, - avax: { - owners: ["0xffb3118124cdaebd9095fa9a479895042018cac2"], - }, - solana: { - owners: [ - "5PAhQiYdLBd6SVdjzBQDxUAEFyDdF5ExNPQfcscnPRj5", - "ASTyfSima4LLAdDgoFGkgqoKowG1LZFDr9fAQrg7iaJZ", - "5PAhQiYdLBd6SVdjzBQDxUAEFyDdF5ExNPQfcscnPRj5", - "ASTyfSima4LLAdDgoFGkgqoKowG1LZFDr9fAQrg7iaJZ" - ], - }, - aptos: { - owners: [ - "0xe8ca094fec460329aaccc2a644dc73c5e39f1a2ad6e97f82b6cbdc1a5949b9ea", - ], - }, - base: { - owners: ["0x4e3ae00e8323558fa5cac04b152238924aa31b60"], - }, - ton: { - owners: [ - "EQDYh9Di0cT8QSbnHJcNM6sYlpQAAOrnA7sats7Mgwd3497j", - ], - }, - ripple: { - owners: [ - "r3BFHL2EXZN4darZ7vH7BT7tP9tN7tyd6W", - "rs2dgzYeqYqsk8bvkQR5YPyqsXYcA24MP2", - ], - } -}; - -module.exports = cexExports(config); diff --git a/projects/mezo-tigris/index.js b/projects/mezo-tigris/index.js deleted file mode 100644 index 3610815e382..00000000000 --- a/projects/mezo-tigris/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - 'mezo': '0x83FE469C636C4081b87bA5b3Ae9991c6Ed104248' -}, { - abis: { - - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, hasStablePools: true, -}) \ No newline at end of file diff --git a/projects/mfinance/abi.json b/projects/mfinance/abi.json deleted file mode 100644 index e7d4222b803..00000000000 --- a/projects/mfinance/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accMGPerShare)" -} \ No newline at end of file diff --git a/projects/mfinance/index.js b/projects/mfinance/index.js deleted file mode 100644 index 3bb18fec7e9..00000000000 --- a/projects/mfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const abi = require("./abi.json"); -const { masterChefExports } = require("../helper/masterchef"); - -const masterChef = "0x342A8A451c900158BA4f1367C55955b5Fbcb7CCe"; -const MG = "0x06b0c26235699b15e940e8807651568b995a8e01"; - -module.exports = masterChefExports(masterChef, "ethereum", MG, false, abi.poolInfo) diff --git a/projects/miaswap/index.js b/projects/miaswap/index.js deleted file mode 100644 index 4a5a806d962..00000000000 --- a/projects/miaswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - onus: { - tvl: getUniTVL({ factory: '0xA5DA4dC244c7aD33a0D8a10Ed5d8cFf078E86Ef3', useDefaultCoreAssets: true, blacklistedTokens: [ - '0xa6b9579563a48a0540bb53853ae0947972371169', // VNDC - minted by team - '0xff276c6bca1f66fd54a8915e830735d6ab0c7b09', // USDT - minted by team - ] }), - } -} \ No newline at end of file diff --git a/projects/microcreditproject/index.js b/projects/microcreditproject/index.js deleted file mode 100644 index 6399d79c0af..00000000000 --- a/projects/microcreditproject/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const TOKENS = [ - ADDRESSES.functionx.WFX, - ADDRESSES.islm.USDC, -] - -const INVESTMENT_CONTRACT = '0x951d1571C75C519Cc3D09b6B71595C6aCe1c06dB' -const PROFIT_SHARE_CONTRACT = '0x165D74d2DEFe37794371eB63c63999ab5620DBfB' - -module.exports = { - islm: { - tvl: sumTokensExport({ - owners: [INVESTMENT_CONTRACT, PROFIT_SHARE_CONTRACT], - tokens: TOKENS - }), - }, -} diff --git a/projects/microswap/index.js b/projects/microswap/index.js deleted file mode 100644 index 7ab543aad11..00000000000 --- a/projects/microswap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { yieldHelper } = require("../helper/yieldHelper"); - -const abis = { - name: "string:name", - wantLockedTotal: "uint256:wantLockedTotal", - poolInfo: "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, address strategy, uint256 earlyWithdrawFee, uint256 earlyWithdrawTime)", -} - -async function getTokenBalances ({ api, poolInfos, }) { - const strategies = poolInfos.map(i => i.strategy) - return api.multiCall({ abi: abis.wantLockedTotal, calls: strategies }) -} - -module.exports = yieldHelper({ - project: 'microswap', - chain: 'cronos_zkevm', - masterchef: '0x19A497E9c034c0D66952366F46f0e4e8b27465a8', - nativeToken: '', - abis, - getTokens: ({ poolInfos, }) => poolInfos.map(i => i.want), - getTokenBalances, -}) diff --git a/projects/midas-capital/index.js b/projects/midas-capital/index.js deleted file mode 100644 index 099f1adca8d..00000000000 --- a/projects/midas-capital/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const { compoundExports2 } = require("../helper/compound"); - -// module.exports = { -// hallmarks: [ -// ['2023-06-17', 'Protocol was exploited for $600k'], -// ] -// } - -const pools = { - bsc: { - pools: [ - "0x1851e32F34565cb95754310b031C5a2Fc0a8a905", // Helio-Ankr - "0x31d76A64Bc8BbEffb601fac5884372DEF910F044", // Jarvis - "0xb2234eE69555EE4C3b6cEA4fd25c4979BbDBf0fd", // Risedle - "0xEF0B026F93ba744cA3EDf799574538484c2C4f80", // AutoHedge - "0x5373C052Df65b317e48D6CAD8Bb8AC50995e9459", // BOMB - "0xCB2841d6d300b9245EB7745Db89A0A50D8468501", // Ankr - "0x35F3a59389Dc3174A98610727C2e349E275Dc909", // Ellipsis - "0x3F239A5C45849391E7b839190597B5130780790d", // PancakeStack - "0x7f8B5fCA1a63C632776ffc9936D2e323c14B57f8", // Alpha Strategies - "0x20a0ED8c794F96C1479e2867995C99E931Ee36Ba", // Transfero Stables - "0x5EB884651F50abc72648447dCeabF2db091e4117", // Stader BNBx - "0xBc06411a6204B36ce6a5559FFBE3a56C5960F6fe", // pStake BNB - "0x1B6D43501E0c7201Ea061961cBAEc88FB012f57B", // THENA Core Pools - - ], - }, - moonbeam: { - pools: [ - "0xeB2D3A9D962d89b4A9a34ce2bF6a2650c938e185", // xDot - "0x0fAbd597BDecb0EEE1fDFc9B8458Fe1ed0E35028", // BeamSwap - "0xCc248E6106CB7B05293eF027D5c1c05BF3E39F21", // StellaSwap - ], - }, - polygon: { - pools: [ - "0xD265ff7e5487E9DD556a4BB900ccA6D087Eb3AD2", // Jarvis - "0xB08A309eFBFFa41f36A06b2D0C9a4629749b17a2", // Arrakis - "0xBd82D36B9CDfB9747aA12025CeCE3782EDe767FE", // Polygon Liquid Staking - "0xF1ABd146B4620D2AE67F34EA39532367F73bbbd2", // MIMO - "0xBd82D36B9CDfB9747aA12025CeCE3782EDe767FE", // Stader MATICx - "0x59013D8a77D656777329D74ea1C88DA796005F1B" // Planet ix - - ], - }, - arbitrum: { - pools: [ - "0x185Fa7d0e7d8A4FE7E09eB9df68B549c660e1116", // Risedle - "0x44a03C14F30D49cB43b7F7E91E987ecC10cc0b09" // OHM Pool - ] - } -}; - -function getTvl(chain) { - const config = pools[chain] ?? { pools: [] }; - const tvls = config.pools.map((comptroller) => compoundExports2({ comptroller })); - let tvl = sdk.util.sumChainTvls(tvls.map((t) => t.tvl)) - let borrowed = sdk.util.sumChainTvls(tvls.map((t) => t.borrowed)) - return { tvl, borrowed } -} - -Object.keys(pools).forEach(chain => module.exports[chain] = getTvl(chain)) diff --git a/projects/midas/index.js b/projects/midas/index.js deleted file mode 100644 index 354c4e6c2c9..00000000000 --- a/projects/midas/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const config = { - ethereum: { - mTBILL: "0xDD629E5241CbC5919847783e6C96B2De4754e438", - mBASIS: "0x2a8c22E3b10036f3AEF5875d04f8441d4188b656", - mBTC: "0x007115416AB6c266329a03B09a8aa39aC2eF7d9d", - mEDGE: "0xbB51E2a15A9158EBE2b0Ceb8678511e063AB7a55", - mMEV: "0x030b69280892c888670EDCDCD8B69Fd8026A0BF3", - mRe7YIELD: "0x87C9053C819bB28e0D73d33059E1b3DA80AFb0cf", - "mF-ONE": "0x238a700eD6165261Cf8b2e544ba797BC11e466Ba", - mHYPER: "0x9b5528528656DBC094765E2abB79F293c21191B9", - mAPOLLO: "0x7CF9DEC92ca9FD46f8d86e7798B72624Bc116C05", - mevBTC: "0xb64C014307622eB15046C66fF71D04258F5963DC", - mFARM: "0xA19f6e0dF08a7917F2F8A33Db66D0AF31fF5ECA6", - mRe7BTC: "0x9FB442d6B612a6dcD2acC67bb53771eF1D9F661A", - msyrupUSD: "0x20226607b4fa64228ABf3072Ce561d6257683464", - msyrupUSDp: "0x2fE058CcF29f123f9dd2aEC0418AA66a877d8E50", - mWildUSD: "0x605A84861EE603e385b01B9048BEa6A86118DB0a", - }, - base: { - mTBILL: "0xDD629E5241CbC5919847783e6C96B2De4754e438", - mBASIS: "0x1C2757c1FeF1038428b5bEF062495ce94BBe92b2", - }, - sapphire: { - mTBILL: "0xDD629E5241CbC5919847783e6C96B2De4754e438", - }, - etlk: { - mTBILL: "0xDD629E5241CbC5919847783e6C96B2De4754e438", - mBASIS: "0x2247B5A46BB79421a314aB0f0b67fFd11dd37Ee4", - mMEV: "0x5542F82389b76C23f5848268893234d8A63fd5c8", - mRe7YIELD: "0x733d504435a49FC8C4e9759e756C2846c92f0160", - }, - rsk: { - mTBILL: "0xDD629E5241CbC5919847783e6C96B2De4754e438", - mBTC: "0xEF85254Aa4a8490bcC9C02Ae38513Cae8303FB53", - }, - plume_mainnet: { - mTBILL: "0xE85f2B707Ec5Ae8e07238F99562264f304E30109", - mBASIS: "0x0c78Ca789e826fE339dE61934896F5D170b66d78", - mEDGE: "0x69020311836D29BA7d38C1D3578736fD3dED03ED", - mMEV: "0x7d611dC23267F508DE90724731Dc88CA28Ef7473", - }, - katana: { - mRe7SOL: "0xC6135d59F8D10c9C035963ce9037B3635170D716", - }, - xrplevm: { - mXRP: "0x06e0B0F1A644Bb9881f675Ef266CeC15a63a3d47", - }, -}; - -async function tvl(api) { - const tokens = Object.values(config[api.chain]); - const bals = await api.multiCall({ - abi: "uint256:totalSupply", - calls: tokens, - }); - api.add(tokens, bals); -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/midasdao.js b/projects/midasdao.js deleted file mode 100644 index c402f96e836..00000000000 --- a/projects/midasdao.js +++ /dev/null @@ -1,9 +0,0 @@ - -module.exports = { - avax:{ - tvl: () => ({}), - staking: () => ({}), - }, - deadFrom: '2022-08-01', - methodology: "Counts tokens on the treasury for tvl and staked CROWN for staking", -}; diff --git a/projects/milko-farm.js b/projects/milko-farm.js deleted file mode 100644 index af82e170d30..00000000000 --- a/projects/milko-farm.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("./helper/masterchef"); - -const milko = "0x3c786134228b363fb2984619D7560AB56363B2bD"; -const masterchef = "0x5d0C5db1D750721Ed3b13a8436c17e035B44c3D0"; - -module.exports = { - ...masterChefExports(masterchef, "milkomeda", milko, false) -}; \ No newline at end of file diff --git a/projects/milkomeda-djed/abi.json b/projects/milkomeda-djed/abi.json deleted file mode 100644 index ffe5319866c..00000000000 --- a/projects/milkomeda-djed/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "Djed": { - "reserve": "function R(uint256 cpa) view returns (uint256 balance)" - } - } \ No newline at end of file diff --git a/projects/milkomeda-djed/index.js b/projects/milkomeda-djed/index.js deleted file mode 100644 index 105dc0cfa67..00000000000 --- a/projects/milkomeda-djed/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json'); - -async function tvl(api) { - const reserve = await api.call({ abi: abi.Djed.reserve, target:'0x67A30B399F5Ed499C1a6Bc0358FA6e42Ea4BCe76', params: 0 }) - api.add(ADDRESSES.milkomeda.WADA, reserve); // Using WADA address instead of mADA -} - -module.exports = { - methodology: 'The TVL of each Djed deployment on Milkomeda C1.', - milkomeda: { - tvl, - }, -}; diff --git a/projects/milkomeda-macc/abi.json b/projects/milkomeda-macc/abi.json deleted file mode 100644 index f6a1957f9f7..00000000000 --- a/projects/milkomeda-macc/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllFragmentedTokens" : "address[]:getAllFragmentedTokens" -} \ No newline at end of file diff --git a/projects/milkomeda-macc/index.js b/projects/milkomeda-macc/index.js deleted file mode 100644 index 75e7fc0a818..00000000000 --- a/projects/milkomeda-macc/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const TokenMerger = '0x36A06C470342Fc3443d768a9c85Aa43985D82219'; - -async function tvl(api) { - const tokens = await api.call({ abi: abi.getAllFragmentedTokens, target: TokenMerger }) - return sumTokens2({ api, owner: TokenMerger, tokens, }) -} - -module.exports = { - methodology: 'Counts the total balance of Fragmented tokens held in the Token Merger contract on Milkomeda C1 MACC.', - milkomeda: { - tvl, - }, -}; - diff --git a/projects/milky-way/index.js b/projects/milky-way/index.js deleted file mode 100644 index 3ce0e3650a1..00000000000 --- a/projects/milky-way/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); -const ADDRESSES = require('../helper/coreAssets.json') - -const consts = { - MILKTIA_CONTRACT: 'osmo1f5vfcph2dvfeqcqkhetwv75fda69z7e5c2dldm3kvgj23crkv6wqcn47a0', - MILKBABY_CONTRACT: 'milk1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3ssgcye4', - MILKINIT_CONTRACT: 'init17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgsj6uxxj', -} - -/** - * { - * id: 1, - * batch_total_liquid_stake: '100000', - * expected_native_unstaked: '100000', - * received_native_unstaked: '100000', - * unstake_request_count: 1, - * next_batch_action_time: '0', - * status: 'received' - * } - */ - -async function milkTIATVL(api) { - const data = await queryContract({ contract: consts.MILKTIA_CONTRACT, chain: api.chain, data: { state: {} } }); - const {batches} = await queryContract({ contract: consts.MILKTIA_CONTRACT, chain: api.chain, data: { batches: {} } }); - const token = 'ibc/'+ADDRESSES.ibc.TIA - - // when calculating TVL, current unbonding batches with TIA should be added since they are 'locked' inside the contract at that current point in time - batches.filter(b => b.status !== 'received').forEach((b) => api.add(token, b.expected_native_unstaked)) - api.add(token, data.total_native_token) - return api.getBalances() -} - -async function milkBabyTVL(api) { - const data = await queryContract({ contract: consts.MILKBABY_CONTRACT, chain: api.chain, data: { state: {} } }); - const {batches} = await queryContract({ contract: consts.MILKBABY_CONTRACT, chain: api.chain, data: { batches: {} } }); - const token = 'ibc/'+ADDRESSES.ibc.BABY - - // when calculating TVL, current unbonding batches with TIA should be added since they are 'locked' inside the contract at that current point in time - batches.filter(b => b.status !== 'received').forEach((b) => api.add(token, b.expected_native_unstaked)) - api.add(token, data.total_native_token) -} - -async function milkINITTVL(api) { - const data = await queryContract({ contract: consts.MILKINIT_CONTRACT, chain: api.chain, data: { state: {} } }); - const {batches} = await queryContract({ contract: consts.MILKINIT_CONTRACT, chain: api.chain, data: { batches: {} } }); - const token = 'ibc/'+ADDRESSES.ibc.INIT - - // when calculating TVL, current unbonding batches with TIA should be added since they are 'locked' inside the contract at that current point in time - batches.filter(b => b.status !== 'received').forEach((b) => api.add(token, b.expected_native_unstaked)) - api.add(token, data.total_native_token) -} - -module.exports = { - methodology: 'TVL counts the tokens that are locked in the Milky Way protocol', - osmosis: { - tvl: milkTIATVL, - }, - milkyway: { - tvl: milkBabyTVL, - }, - 'milkyway_rollup': { - tvl: milkINITTVL, - } -} // node test.js projects/milky-way/index.js \ No newline at end of file diff --git a/projects/milkycow.js b/projects/milkycow.js deleted file mode 100644 index fc37b8945b2..00000000000 --- a/projects/milkycow.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("./helper/masterchef"); - -const milko = "0xbd01b2CF2c514c7eC90827b8346354bb4f7832ab"; -const masterchef = "0xA11213A5549629295bBfbc578CE5032266A5E827"; - -module.exports = { - ...masterChefExports(masterchef, "milkomeda", milko, false) -}; \ No newline at end of file diff --git a/projects/milkydex/index.js b/projects/milkydex/index.js deleted file mode 100644 index 4614ea2898f..00000000000 --- a/projects/milkydex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x194Db21D9108f9da7a4E21f367d0eb8f8979144e) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - milkomeda: { - tvl: getUniTVL({ factory: '0x194Db21D9108f9da7a4E21f367d0eb8f8979144e', useDefaultCoreAssets: true }), - }, -}; diff --git a/projects/milkyswap/index.js b/projects/milkyswap/index.js deleted file mode 100644 index 167a7d8f38c..00000000000 --- a/projects/milkyswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xD6Ab33Ad975b39A8cc981bBc4Aaf61F957A5aD29) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - milkomeda: { - tvl: getUniTVL({ factory: '0xD6Ab33Ad975b39A8cc981bBc4Aaf61F957A5aD29', useDefaultCoreAssets: true }), - }, -}; // node test.js projects/milkyswap/index.js diff --git a/projects/milkyway/index.js b/projects/milkyway/index.js deleted file mode 100644 index f88570fc88a..00000000000 --- a/projects/milkyway/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { compoundExports } = require("../helper/compound"); - -module.exports = { - deadFrom: '2023-12-15', - timetravel: false, // milkomeda api's for staked coins can't be queried at historical points - start: '2020-09-08', // 09/08/2020 @ 8:00am (UTC) - milkomeda: compoundExports("0x0Dd4E2B7E0E8a2Cd1258a9023D3a5062381554Cf"), -}; - -module.exports.milkomeda.borrowed = () => ({}) // bad debt diff --git a/projects/milkyway_rollup_bridge/index.js b/projects/milkyway_rollup_bridge/index.js deleted file mode 100644 index d32772faba6..00000000000 --- a/projects/milkyway_rollup_bridge/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos.js'); - -module.exports = { - timetravel: false, - initia: { - tvl: async () => { - const balances = {} - const res = await queryV1Beta1({ - chain: "milkyway_rollup", - url: "/bank/v1beta1/supply", - }); - - res.supply.map(({ denom, amount }) => { - if (denom.startsWith("ibc/")) balances[`${denom.replace("/", ":")}`] = amount - }) - - return balances - }, - }, -}; \ No newline at end of file diff --git a/projects/mimas-finance/index.js b/projects/mimas-finance/index.js deleted file mode 100644 index 3b6535801d1..00000000000 --- a/projects/mimas-finance/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { compoundExports } = require('../helper/compound'); - -const { stakingUnknownPricedLP } = require("../helper/staking"); -const token = "0x10C9284E6094b71D3CE4E38B8bFfc668199da677"; -const stakingContract = "0x268E2E1e5a465034Ee5742DA578feb41B228ad7B"; - -const wCRO = ADDRESSES.cronos.WCRO_1; -const mmCRO = "0xff024211741059a2540b01f5Be2e75fC0c1b3d82"; - -const customCompoundExports = (comptroller, cToken, underlying) => { - const originalExports = compoundExports(comptroller, cToken, underlying); - return { - ...originalExports, - borrowed: async () => 0, // Hard-code borrowed to 0 - }; -}; - -module.exports = { - cronos: { - ...customCompoundExports( - "0xdD8c94211dD19155EFFbd57EAb6D4e0DE31A3b9E", - mmCRO, - wCRO - ), - staking: stakingUnknownPricedLP( - stakingContract, - token, - "cronos", - "0xf56FDfeeF0Ba3de23DaB13a85602bd7BF135E80f", - addr => `cronos:${addr}` - ), - }, -}; diff --git a/projects/mimo/config.js b/projects/mimo/config.js deleted file mode 100644 index ed8fac6efe8..00000000000 --- a/projects/mimo/config.js +++ /dev/null @@ -1,48 +0,0 @@ - - - -const config = { - ethereum: { - vaultCore: [ - '0x173AE6283A717b6cdD5491EAc5F82C082A8c674b', //PAR - '0xE26348D30694aa7E879b9335252362Df3df93204', //paUSD - ], - parallelizer:{ - address: "0x6efeDDF9269c3683Ba516cb0e2124FE335F262a2", - fromBlock: 22676220, - }, - }, - polygon:{ - vaultCore: [ - '0x0a9202C6417A7B6B166e7F7fE2719b09261b400f', //PAR - '0xcABAbC1Feb7C5298F69B635099D75975aD5E6e5f', //paUSD - ], - }, - fantom:{ - vaultCore: [ - '0xF6aBf8a89b3dA7C254bb3207e2eBA9810bc51f58', //PAR - ], - }, - base: { - parallelizer:{ - address: "0xC3BEF21Ea7dEB5C34CF33E918c8e28972C8048eD", - fromBlock: 31808846, - }, - }, - sonic: { - parallelizer:{ - address: "0xBEFBAe2330186F031b469e26283aCc66bb5F8826", - fromBlock: 34952978, - }, - }, - hyperliquid: { - parallelizer:{ - address: "0x1250304F66404cd153fA39388DDCDAec7E0f1707", - fromBlock: 5117819, - }, - }, -} - -module.exports = { - config -} \ No newline at end of file diff --git a/projects/mimo/index.js b/projects/mimo/index.js deleted file mode 100644 index 7715ab250e8..00000000000 --- a/projects/mimo/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const config = { - ethereum: - { - vaultCore: [ - '0x173AE6283A717b6cdD5491EAc5F82C082A8c674b', //PAR - '0xE26348D30694aa7E879b9335252362Df3df93204', //paUSD - ], - }, - polygon: { - vaultCore: [ - '0x0a9202C6417A7B6B166e7F7fE2719b09261b400f', //PAR - '0xcABAbC1Feb7C5298F69B635099D75975aD5E6e5f', //paUSD - ], - }, - fantom: { - vaultCore: ['0xF6aBf8a89b3dA7C254bb3207e2eBA9810bc51f58'], //PAR - } - } - - - Object.keys(config).forEach(chain => { - const { vaultCore } = config[chain] - module.exports[chain] = { tvl } - - async function tvl(api) { - const ownerTokens = [] - for (const vault of vaultCore) { - const addressProvider = await api.call({ abi: 'address:a', target: vault}) - const config = await api.call({ abi: 'address:config', target: addressProvider}) - const tokenConfig = await api.fetchList({ lengthAbi: 'numCollateralConfigs', itemAbi: "function collateralConfigs(uint256 _id) view returns ((address collateralType, uint256 debtLimit, uint256 liquidationRatio, uint256 minCollateralRatio, uint256 borrowRate, uint256 originationFee, uint256 liquidationBonus, uint256 liquidationFee))", target: config}) - const tokens = tokenConfig.map(t => t.collateralType) - ownerTokens.push([tokens, vault]) - } - return api.sumTokens({ ownerTokens }) - } - }) diff --git a/projects/mimoswap-v3/index.js b/projects/mimoswap-v3/index.js deleted file mode 100644 index 59d78a216c6..00000000000 --- a/projects/mimoswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - iotex: { factory: "0xF36788bF206f75F29f99Aa9d418fD8164b3B8198", fromBlock: 27707694, blacklistedTokens: ['0x95cb18889b968ababb9104f30af5b310bd007fd8'] } -}) \ No newline at end of file diff --git a/projects/mimoswap/index.js b/projects/mimoswap/index.js deleted file mode 100644 index a887bfdeee1..00000000000 --- a/projects/mimoswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - misrepresentedTokens: true, - iotex: { - tvl: getUniTVL({ factory: '0xda257cBe968202Dea212bBB65aB49f174Da58b9D', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/mimswap/index.js b/projects/mimswap/index.js deleted file mode 100644 index ecd79a71375..00000000000 --- a/projects/mimswap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - arbitrum: { factory: '0x8D0Cd3eEf1794F59F2B3a664Ef07fCAD401FEc73', fromBlock: 205217727 }, - ethereum: { factory: '0xDF46F6b1a5F794F21eaD4008C7De4E02Dc045297', fromBlock: 20537337 }, - blast: { factory: '0x7E05363E225c1c8096b1cd233B59457104B84908', fromBlock: 1067907 }, - kava: { factory: '0x7Ad0e580d8458BbeF71EC6A1755c59651E1EAaa7', fromBlock: 10023543 }, - nibiru: { factory: '0xD6b8bd85A9593cb47c8C15C95bbF3e593c5Dc591', fromBlock: 23108400 }, -} - -const PoolCreatedEvent = 'event LogPoolAdded (address baseToken, address quoteToken, address creator, address pool)' -const LogCreatedEvent = 'event LogCreated(address pool, address indexed baseToken,address indexed quoteToken, address indexed creator, address creatorOrigin, uint256 lpFeeRate, uint256 i,uint256 k)' - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: api.chain === 'nibiru' ? LogCreatedEvent : PoolCreatedEvent, fromBlock }) - const ownerTokens = logs.map(log => [[log.baseToken, log.quoteToken], log.pool]) - return api.sumTokens({ ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/mind-restake/index.js b/projects/mind-restake/index.js deleted file mode 100644 index a342640b54b..00000000000 --- a/projects/mind-restake/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const config = { - ethereum: "0x6a5D488EC17d6a7a1872AaB88feC90c1B2Df4196", - scroll: "0xea3E87699D11B77Fba754Bf0257a25664B97437d", - bsc: "0x6a5D488EC17d6a7a1872AaB88feC90c1B2Df4196", -}; - -const stakingConfig = { - bsc: "0xb080B94052f039eC2CA8BBaF7Ec13329d1926973", // BSC staking contract - fhe: "0xdeD96288c99145da4800f55355A2466f6238fBBE", // MindChain staking contract -}; -const FHE = "0xd55C9fB62E176a8Eb6968f32958FeFDD0962727E"; // FHE token address - -module.exports = { - methodology: "Counts the total amount of asset tokens deposited in each of the Strategy contracts registered in the helper contract on each chain. Staking counts the total amount of FHE tokens deposited in Mind Agentic World contracts on BSC and MindChain.", -}; - -Object.keys(config).forEach(chain => { - const target = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const [_vaults, tokens, bals] = await api.call({ - abi: "function getPoolTotalAssets() view returns (address[] memory,address[] memory, uint256[] memory)", - target, - }) - api.add(tokens, bals) - } - } -}) - -Object.entries(stakingConfig).forEach(([chain, stakingContract]) => { - module.exports[chain] = { - tvl: async () => ({}), // No external TVL for now - staking: async (api) => { - const balance = await api.call({ - abi: "erc20:balanceOf", - target: FHE, - params: [stakingContract], - }); - - const bigIntAmount = BigInt(balance); - const amountInToken = bigIntAmount / BigInt(10 ** 18); - - api.addCGToken("mind-network", amountInToken); - }, - }; -}); diff --git a/projects/mindgames/index.js b/projects/mindgames/index.js deleted file mode 100644 index 875588edae3..00000000000 --- a/projects/mindgames/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, staking } = require('../helper/unknownTokens') -const xCRX = "0x35AfE95662fdf442762a11E4eD5172C81fBceF7e"; -const CRX = "0xb21Be1Caf592A5DC1e75e418704d1B6d50B0d083"; -const factory = "0x7C7F1c8E2b38d4C06218565BC4C9D8231b0628c0"; - -const tvl = getUniTVL({ factory, useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x7C7F1c8E2b38d4C06218565BC4C9D8231b0628c0) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - arbitrum: { - tvl, - staking: staking( - { - owner: xCRX, - tokens: [CRX], - chain: 'arbitrum', - coreAssets: [ADDRESSES.arbitrum.USDC], - lps: ['0xf7305D209BFeCF40Bd53ccBdbe5303B3153d0660'] - }) - }, -}; diff --git a/projects/miner/index.js b/projects/miner/index.js deleted file mode 100644 index 53937a40e70..00000000000 --- a/projects/miner/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { stakings } = require("../helper/staking"); - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: stakings( - [ - "0x39cae2CE1bFC446d22b423D08CfC50F04DFD10b6", - "0xDc0fE7b8579995ABf20b1FCb61Fd57986844b6Ac", - ], - [ - "0x68BbEd6A47194EFf1CF514B50Ea91895597fc91E", - "0xDc0fE7b8579995ABf20b1FCb61Fd57986844b6Ac", - ] - ), - staking: stakings( - ["0x335D87736b4693E5ED3e5C4f6C737A5a87aFA029"], - ["0x23CbB9F0de3258DE03baaD2BCeA4FCCC55233af0"], - ), - }, - base: { - tvl: stakings( - ["0x335D87736b4693E5ED3e5C4f6C737A5a87aFA029"], - ["0x18A8BD1fe17A1BB9FFB39eCD83E9489cfD17a022"], - ), - }, -}; diff --git a/projects/minerPepe/index.js b/projects/minerPepe/index.js deleted file mode 100644 index e2bf7b8abba..00000000000 --- a/projects/minerPepe/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens") -const ADDRESSES = require('../helper/coreAssets.json') -const LPS = ["0xd60f323965eD3D6b90e66eA676414A31D53A0b98"] -const TOKENS = ["0x6d306C2C9CD931160763D99376a68C14D33DC954"] - -module.exports = { - methodology: - "MinerPepe the first mining PEPE Meme Coin on Binance Smart Chain. Miners enjoy 12% daily returns in BNB and MPEPE tokens", - bsc: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.null, '0x93Fb89601B5C3253b50c8d650C11bDfe5FB7EE3F'], - ["0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", '0x18951EEe359A98fFC22b7F22641Db6E7f8571A5A'], - ] - }), - staking: sumTokensExport({ owners: ['0x26e6B07013748a1C9C12ff17A51A95e40456689C'], tokens: TOKENS, lps: LPS, useDefaultCoreAssets: true, }), - }, -} \ No newline at end of file diff --git a/projects/mineral-vault/index.js b/projects/mineral-vault/index.js deleted file mode 100644 index 73c289799ec..00000000000 --- a/projects/mineral-vault/index.js +++ /dev/null @@ -1,27 +0,0 @@ -async function tvl_plume_mainnet(api) { - const mineralVaults = ["0x5107272921A750A20d492Fb41Acf0b770b09a624"]; - const issuerReserveWallets = ["0xCcBA2623B2CE6148c09d8E676B81E472D85c21Ea"]; - - const totalSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: mineralVaults }); - const issuerReserveBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: mineralVaults.flatMap(token => issuerReserveWallets.map(owner => ({ target: token, params: owner }))) - }); - - const circulatingSupplies = mineralVaults.map((vault, index) => { - const reserveBalances = issuerReserveWallets - .map((_, j) => BigInt(issuerReserveBalances[index * issuerReserveWallets.length + j])) - .reduce((a, b) => a + b, 0n); - return { - vault, - circulating: BigInt(totalSupplies[index]) - reserveBalances - }; - }); - - circulatingSupplies.forEach(({ vault, circulating }) => api.add(vault, circulating)); -} - -module.exports = { - methodology: "TVL is the total supply of tokens, each representing a fully-backed real-world oil & gas asset from Mineral Vault funds.", - plume_mainnet: { tvl: tvl_plume_mainnet }, -} diff --git a/projects/minerswap/index.js b/projects/minerswap/index.js deleted file mode 100644 index 607a2c39ce5..00000000000 --- a/projects/minerswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports.hallmarks=[ - [1668124800, "Rug Pull"] -], -module.exports = uniTvlExport('ethpow', '0x91836d77af0a5fda36c5a1f3c11dbc7766de4d03', undefined, undefined, { useDefaultCoreAssets: true, hasStablePools: true, }) diff --git a/projects/minerva/index.js b/projects/minerva/index.js deleted file mode 100644 index 1dcc93e636d..00000000000 --- a/projects/minerva/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - -module.exports = { - optimism: { - staking: staking('0x21563764f5641ffcb89f25560644e39947b21be0', '0xE4d8701C69b3B94A620ff048e4226C895b67b2c0'), - tvl: gmxExports({ vault: '0x7EF6f8abAc00689e057C9ec14E34aC232255a2fb', }) - } -} \ No newline at end of file diff --git a/projects/minidex.js b/projects/minidex.js deleted file mode 100644 index 3c1f2dea386..00000000000 --- a/projects/minidex.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens'); - -const factory = '0x1E2C2102cf8EfCaAAf20fFe926469EC7cD0d0f6E' -// const factory2 = '0xBbE026500E273e2F2E6b41C93d11fE6d5c6D71bF' -module.exports = { - ethereum: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory, }) - } -}; \ No newline at end of file diff --git a/projects/minimax/index.js b/projects/minimax/index.js deleted file mode 100644 index 239d810d552..00000000000 --- a/projects/minimax/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - deadFrom: '2023-01-09', - misrepresentedTokens: true, - methodology: 'We store all user positions in our database, which is built using the blockchain data (it helps us fetch read data fast for our website). TVL is just a sum of all open positions in $ equivalent.', - hallmarks: [['2023-01-26', 'Product is winding down']], - bsc: { tvl: () => ({ }) } -} diff --git a/projects/miningtycoon/index.js b/projects/miningtycoon/index.js deleted file mode 100644 index 58c93d98551..00000000000 --- a/projects/miningtycoon/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { staking } = require('../helper/staking'); - -const tokenFarm2 = '0x8A6AE8076A1866877e006cC9b4bd0378646A9bD5'; -const NTToken = '0x8b70512b5248e7c1f0f6996e2fde2e952708c4c9'; -const bsc_tokenFarm2 = '0x973fEAf394F5E882B0F8a9B5CDC0b3E28AA08926'; -const bsc_NTToken = '0xfbcf80ed90856AF0d6d9655F746331763EfDb22c'; - - -module.exports = { - methodology: 'TVL counts USDT staked to earn NT tokens and the staking portion of TVL counts the NT tokens that are staked to earn more NT tokens', - bsc:{ - tvl: staking(bsc_tokenFarm2, ADDRESSES.bsc.USDT), - staking: staking(bsc_tokenFarm2, bsc_NTToken) - }, - heco:{ - tvl: staking(tokenFarm2, ADDRESSES.heco.USDT), - staking: staking(tokenFarm2, NTToken) - }, -} \ No newline at end of file diff --git a/projects/minipanther/index.js b/projects/minipanther/index.js deleted file mode 100644 index 23ffde86e61..00000000000 --- a/projects/minipanther/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0xBc461eA008c586a1721c6bF6a712f38e199A3Ce7" -const miniPantherToken = "0x3264810174f577F82DDD4FD08818F368AC363505" -const stakingAddress = "0x7dc10Ade8599bf5033577F60C6740479aa39DB41" -const treasuryTokens = [ - ["0x9cbccdaf10153edd092817a013470a0693852a77", false], //PantherUSD - [ADDRESSES.fantom.WFTM, false], //WFTM - [ADDRESSES.fantom.WBTC, false], //WBTC - ["0x74b23882a30290451A17c44f4F05243b6b58C76d", false], //WETH - [ADDRESSES.fantom.DAI, false], //DAI - [ADDRESSES.fantom.MIM, false], //MIM - ["0x761D6a950c8F441D616f34d6D918230936a3F27b", true], //MiniPanther-DAI - ] - - - module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "fantom", stakingAddress, miniPantherToken, addr=>{ - return `fantom:${addr}` - }, (balances)=>{delete balances["fantom:0x9cbccdaf10153edd092817a013470a0693852a77"]}, false) -} diff --git a/projects/miniversefinance/index.js b/projects/miniversefinance/index.js deleted file mode 100644 index 8d455c1b6dc..00000000000 --- a/projects/miniversefinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const mvdollar = "0x35bED1E2f3033395a05CD0b1b5900209ECe42774"; -const mshare = "0xb011EC534d9175cD7a69aFBfc1bcc9990862c462"; -const rewardPool = "0x1D39015cEa46a977cC5752C05fF2Cb3c1a4038E7"; -const masonry = "0x92c102Eab956c8d330709681AE74dc68815fC0bc"; - -const lps = [ - "0x35bED1E2f3033395a05CD0b1b5900209ECe42774", - "0x92A7b2A9ca7D70573E3a0B0BF9e5232c70db8a89", - "0x85E8DcBc11eF5C5F98277B20A041C8ab90E0e2f7" -]; -//node test.js projects/miniversefinance/index.js -module.exports = { - ...tombTvl(mvdollar, mshare, rewardPool, masonry, lps, "fantom") -} -module.exports.deadFrom = '2023-08-09' \ No newline at end of file diff --git a/projects/minmax-finance/index.js b/projects/minmax-finance/index.js deleted file mode 100644 index 0572e5a666e..00000000000 --- a/projects/minmax-finance/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const MINMAX_B3_POOL = '0x09A1B7d922BcfECa097b06498Bc992A83b0BCc42'; -const MINMAX_E4_POOL = '0x89963FCD25Cd3b369A2e0642521BCA7Cf0B9d547'; -const MINMAX_M3_POOL = '0xdab7B4D2CA330dde50ce611E2177271fD3Eb3F5F'; -const MINMAX_USDT_POOL = '0x074ec23e80bd1fd26b822305614fb10b97847a35'; -const MINMAX_XIM_B3_POOL = '0xe409587F043f74e47eFB0C10aAf40808D4e037cE'; -const MINMAX_XIM_M3_POOL = '0x73541e9ffb9F4B8d13C2E5621b1Cede1981aD0d9'; -const MINMAX_XIM_E3_POOL = '0x2c1B1DE747043f7C7c8e0896EB33b09eD9ED55c5'; -const MINMAX_E3_POOL = '0xC264ED05ed2aF451732EF05C480d9e51b92a07aC'; -const MINMAX_XIM_E3_METAPOOL = '0x8360D306Be83f9A992b1657Ad68fe08Ca6f2757A'; -const MINMAX_XIM_B3_METAPOOL = '0x833d89FA7dD693035678AB53Be792F6F4B352C01'; -const MINMAX_XIM_M3_METAPOOL = '0x7B24cAA6a497bc79FDfBAeb8A71a38F15eB3d7F7'; - -const tokens = { - // BUSD - [ADDRESSES.iotex.ioBUSD]:[MINMAX_E4_POOL, MINMAX_XIM_E3_POOL], // decimal: 18 - // USDC - [ADDRESSES.iotex.ioUSDC]:[MINMAX_E4_POOL, MINMAX_XIM_E3_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 6 - // USDT - [ADDRESSES.iotex.ioUSDT]:[MINMAX_E4_POOL, MINMAX_USDT_POOL, MINMAX_XIM_E3_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 6 - // DAI - [ADDRESSES.iotex.ioDAI]:[MINMAX_E4_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 18 - // BUSD_b - [ADDRESSES.iotex.BUSD_bsc]:[MINMAX_B3_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 - // USDC_b - [ADDRESSES.iotex.USDC_b]:[MINMAX_B3_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 - // USDT_b - [ADDRESSES.iotex.USDT_b]:[MINMAX_B3_POOL, MINMAX_USDT_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 - // DAI_m - [ADDRESSES.iotex.DAI_matic]:[MINMAX_M3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 18 - // USDT_m - [ADDRESSES.iotex.USDT_matic]:[MINMAX_M3_POOL, MINMAX_USDT_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 6 - // USDC_m - [ADDRESSES.iotex.USDC_matic]:[MINMAX_M3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 6 - // XIM - [ADDRESSES.iotex.XIM]: [MINMAX_XIM_B3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_E3_POOL, MINMAX_XIM_E3_METAPOOL, MINMAX_XIM_B3_METAPOOL, MINMAX_XIM_M3_METAPOOL] // decimal: 6 -}; - -async function tvl(_, _b, {iotex: block}) { - let toa = []; - - for (const token in tokens) - for(const poolAddress of tokens[token]) - toa.push([token, poolAddress]) - return sumTokens2({chain: 'iotex', block, tokensAndOwners: toa }) -} - -module.exports = { - methodology: "All the assets in the pool.", - iotex:{ - tvl, - }, -}; - - diff --git a/projects/minotaur-money/index.js b/projects/minotaur-money/index.js deleted file mode 100644 index 70644bf6aad..00000000000 --- a/projects/minotaur-money/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const mino = "0x3A1138075bd97a33F23A87824b811146FA44288E"; -const staking = "0x844e265F24868F7e18D4f90d50b500c6C36bdBA7"; -const treasury = "0x8A8cc2F5346b3C95EE343c62F89f41E0c1b68C7b"; -const tokens = [ - ["0xe6052a9a4c0a2f14adc9876a3a1a7b2882f5f139", false], // xUSD - ["0xf2001b145b43032aaf5ee2884e456ccd805f677d", false], // DAI - ["0xf5a5f547612e95c688971fb68334a80ceb3c542b", true], // MINO-DAI - ["0x1c139f4b953ce0c0f6aa1cd1755727ad5aba5080", true], // MINO-WCRO - [ADDRESSES.cronos.WBTC, false], // WBTC - [ADDRESSES.cronos.WCRO_1, false], // WCRO - ["0xe44fd7fcb2b1581822d0c862b68222998a0c299a", false] // WETH -]; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, tokens, "cronos", staking, mino, addr=>{ - if (addr.toLowerCase() === "0xe6052a9a4c0a2f14adc9876a3a1a7b2882f5f139") { - return ADDRESSES.ethereum.TUSD - } - return `cronos:${addr}` - }, undefined, false) -} \ No newline at end of file diff --git a/projects/minswap/index.js b/projects/minswap/index.js deleted file mode 100644 index b3ab7ef7166..00000000000 --- a/projects/minswap/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); - -const V1_POOL_SCRIPT_HASH = 'script1uychk9f04tqngfhx4qlqdlug5ntzen3uzc62kzj7cyesjk0d9me' -const V1_ORDER_SCRIPT_HASH = 'script15ew2tzjwn364l2pszu7j5h9w63v2crrnl97m074w9elrkxhah0e' -const V2_POOL_SCRIPT_HASH = 'script1agrmwv7exgffcdu27cn5xmnuhsh0p0ukuqpkhdgm800xksw7e2w' -const V2_ORDER_SCRIPT_HASH = 'script1c03gcdkrg3e3twj62menmf4xmhqhwz58d2xe7r9n497yc6r9qhd' -const STABLEPOOL_USDMUSDA = 'addr1wywdvw0qwv2n97e8y5jsfqq3qryu6re3gxwqcc7fzscpwugxz5dwe' -const STABLEPOOL_USDMDJED = 'addr1wxxdvtj6y4fut4tmu796qpvy2xujtd836yg69ahat3e6jjcelrf94' -const STABLEPOOL_USDMIUSD = 'addr1w9520fyp6g3pjwd0ymfy4v2xka54ek6ulv4h8vce54zfyfcm2m0sm' -const STABLEPOOL_USDCIUSD = 'addr1wx4w03kq5tfhaad2fmglefgejj0anajcsvvg88w96lrmylc7mx5rm' -const STABLEPOOL_DJEDIUSD = 'addr1wy7kkcpuf39tusnnyga5t2zcul65dwx9yqzg7sep3cjscesx2q5m5' -const STABLEPOOL_USDCDJED = 'addr1wx8d45xlfrlxd7tctve8xgdtk59j849n00zz2pgyvv47t8sxa6t53' -const STABLEPOOL_IUSDUSDA = 'addr1wyge54qpez2zc250f8frwtksjzrg4l6n5cs34psqas9uz0syae9sf' -const CONTRACT_ADDRESSES = [V1_POOL_SCRIPT_HASH, V1_ORDER_SCRIPT_HASH, V2_POOL_SCRIPT_HASH, V2_ORDER_SCRIPT_HASH, STABLEPOOL_USDMUSDA, STABLEPOOL_USDMDJED, STABLEPOOL_USDMIUSD, STABLEPOOL_USDCIUSD, STABLEPOOL_DJEDIUSD, STABLEPOOL_USDCDJED, STABLEPOOL_IUSDUSDA] - -async function tvl() { - const assetsLocked = await sumTokens2({ - owners: CONTRACT_ADDRESSES - }) - return assetsLocked -} - -async function stake() { - const assetsStaked = await sumTokens2({ - owner: 'addr1wy3fscaws62d59k6qqhg3xsarx7vstzczgjmdhx2jh7knksj7w3y7', - tokens: ['29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e'] - }) - return assetsStaked -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - staking: stake - }, - hallmarks: [ - [1647949370, "Vulnerability Found"], - [1712565661, "Stableswap Launch"], - [1720584000, "V2 Launch"] - ], -}; diff --git a/projects/mint-chain/index.js b/projects/mint-chain/index.js deleted file mode 100644 index 6bbbe77044d..00000000000 --- a/projects/mint-chain/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - '0x2b3F201543adF73160bA42E1a5b7750024F30420', - '0x59625d1FE0Eeb8114a4d13c863978F39b3471781' - ], - fetchCoValentTokens: true, - permitFailure: true - }), - }, -}; diff --git a/projects/mint-club-v2/index.js b/projects/mint-club-v2/index.js deleted file mode 100644 index 8a6762b2dc6..00000000000 --- a/projects/mint-club-v2/index.js +++ /dev/null @@ -1,115 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -module.exports = { - methodology: "Calculates the total collateral value of all the Mint.club V2 Bonding Curve protocols and staking pools.", -}; - -const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base', 'blast', 'degen', 'zora', 'klaytn', 'shibarium', 'unichain'] - -const V2_BOND_CONTRACTS = { - avax: "0x3Fd5B4DcDa968C8e22898523f5343177F94ccfd1", - blast: "0x621c335b4BD8f2165E120DC70d3AfcAfc6628681", - degen: "0x3bc6B601196752497a68B2625DB4f2205C3b150b", - zora: "0xc5a076cad94176c2996B32d8466Be1cE757FAa27", - klaytn: "0xc5a076cad94176c2996B32d8466Be1cE757FAa27", - shibarium: "0xc5a076cad94176c2996B32d8466Be1cE757FAa27", - unichain: "0xc5a076cad94176c2996B32d8466Be1cE757FAa27" -} - -const STAKE_CONTRACTS = { - ethereum: ['0x841A2bD2fc97DCB865b4Ddb352540148Bad2dB09'], - optimism: ['0xF187645D1C5AE70C3ddCDeE6D746E5A7619a2A65'], - arbitrum: ['0xf7e2cDe9E603F15118E6E389cF14f11f19C1afbc'], - avax: ['0x68f54a53d3E69e2191bCF586fB507c81E5353413'], - polygon: [ - // v1.1 contract - '0xF187645D1C5AE70C3ddCDeE6D746E5A7619a2A65', - // v1.2 contract - '0x95BDA90196c4e737933360F4639c46Ace657AAb7'], - bsc: [ - // v1.1 contract - '0x841A2bD2fc97DCB865b4Ddb352540148Bad2dB09', - // v1.2 contract - '0x7B09b728ee8c6a714dC3F10367b5DF9b217FE633'], - base: [ - // v1 contract - '0x364e0f814a2c5524d26e82937815c574f8bB86C1', - // v1.1 contract - '0x3460E2fD6cBC9aFB49BF970659AfDE2909cf3399', - // v1.2 contract - '0x9Ab05EcA10d087f23a1B22A44A714cdbBA76E802' - ], - blast: ['0x68f54a53d3E69e2191bCF586fB507c81E5353413'], - degen: ['0x5FBdC7941a735685eB08c51776bA77098ebe1eb7'], - zora: ['0x3Fd5B4DcDa968C8e22898523f5343177F94ccfd1'], - klaytn: ['0x29b0E6D2C2884aEa3FB4CB5dD1C7002A8E10c724'], - cyber: ['0x3Fd5B4DcDa968C8e22898523f5343177F94ccfd1'], - apeChain: ['0xa4021a8907197Df92341F1218B32E26b250F6798'], - shibarium: ['0xa4021a8907197Df92341F1218B32E26b250F6798'], - hashkey: ['0xa4021a8907197Df92341F1218B32E26b250F6798'], - unichain: ['0xa4021a8907197Df92341F1218B32E26b250F6798'], - over: ['0x621c335b4BD8f2165E120DC70d3AfcAfc6628681'], -} - -const ownTokens = { - bsc: ['0x1f3Af095CDa17d63cad238358837321e95FC5915'] -} - -async function getStakingTvl(api, stakingContracts) { - for (const stakingContract of stakingContracts) { - const poolCount = await api.call({ - target: stakingContract, - abi: 'function poolCount() view returns (uint256)' - }) - - const stakingTokensSet = new Set() - - const ids = Array.from({ length: Number(poolCount) }, (_, k) => k) - const pools = await api.multiCall({ - target: stakingContract, - abi: 'function pools(uint256) view returns (address stakingToken, bool isStakingTokenERC20, address rewardToken, address creator, uint104 rewardAmount, uint32 rewardDuration, uint32 totalSkippedDuration, uint40 rewardStartedAt, uint40 cancelledAt, uint128 totalStaked, uint32 activeStakerCount, uint40 lastRewardUpdatedAt, uint256 accRewardPerShare)', - calls: ids, - permitFailure: true, - }) - - for (const pool of pools) { - if (pool.isStakingTokenERC20 && pool.cancelledAt == 0) stakingTokensSet.add(pool.stakingToken) - } - - const tokens = Array.from(stakingTokensSet) - if (tokens.length === 0) continue - await sumTokens2({ api, owner: stakingContract, tokens, permitFailure: true }) - } - return api.getBalances() -} - - -chains.forEach(chain => { - const BOND_CONTRACT = V2_BOND_CONTRACTS[chain] ?? '0xc5a076cad94176c2996B32d8466Be1cE757FAa27' - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.fetchList({ lengthAbi: 'tokenCount', itemAbi: 'tokens', target: BOND_CONTRACT }) - const rTokens = (await api.multiCall({ calls: tokens, itemAbi: 'tokens', target: BOND_CONTRACT, abi: 'function tokenBond(address) view returns (address, uint16, uint16, uint40, address reserveToken, uint256)' })).map(i => i.reserveToken) - return sumTokens2({ api, owner: BOND_CONTRACT, tokens: rTokens, permitFailure: true, blacklistedTokens: ownTokens[chain] }) - } - } - - if (STAKE_CONTRACTS[chain] || ownTokens[chain]) { - module.exports[chain].staking = async (api) => { - if (STAKE_CONTRACTS[chain]) { - await getStakingTvl(api, STAKE_CONTRACTS[chain]); - } - - // Handle legacy staking logic for ownTokens - if (ownTokens[chain]) { - const balances = await api.call({ - target: ownTokens[chain][0], - abi: 'erc20:balanceOf', - params: [BOND_CONTRACT] - }); - api.add(ownTokens[chain][0], balances); - } - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/mint-club/index.js b/projects/mint-club/index.js deleted file mode 100644 index f199a72e7b1..00000000000 --- a/projects/mint-club/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); -const MINT_TOKEN_CONTRACT = '0x1f3Af095CDa17d63cad238358837321e95FC5915'; -const MINT_CLUB_BOND_CONTRACT = '0x8BBac0C7583Cc146244a18863E708bFFbbF19975'; - -module.exports = { - bsc: { - tvl: () => ({}), - staking: sumTokensExport({ owner: MINT_CLUB_BOND_CONTRACT, tokens: [MINT_TOKEN_CONTRACT]}) - } -}; // node test.js projects/mint-club/index.js \ No newline at end of file diff --git a/projects/minterest/index.js b/projects/minterest/index.js deleted file mode 100644 index bb02e1df2d7..00000000000 --- a/projects/minterest/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - hallmarks: [ - [1677133355, "MINTY distribution begins on Ethereum"], - [1704369540, "MINTY distribution begins on Mantle"], - [1717164347, "MINTY distribution begins on Taiko"], - [1739973266, "MINTY distribution begins on Morph"], - ], -} - -const config = { - ethereum: "0xD13f50274a68ABF2384C79248ADc259b3777c081", - mantle: "0xe53a90EFd263363993A3B41Aa29f7DaBde1a932D", - taiko: "0xe56c0d4d6A08C05ec42E923EFd06497F115D4799", - morph: "0x121D54E653a63D90569813E7c6a4C5E6084ff7DE", -} - - -Object.keys(config).forEach(chain => { - module.exports[chain] = compoundExports2({ comptroller: config[chain], }) -}) diff --git a/projects/minto/index.js b/projects/minto/index.js deleted file mode 100644 index c9311e75027..00000000000 --- a/projects/minto/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { stakings } = require('../helper/staking') - -const minto = '0x410a56541bD912F9B60943fcB344f1E3D6F09567' -const hminto = '0x410a56541bd912f9b60943fcb344f1e3d6f09567' -const stackingContracts = [ - '0x78ae303182fca96a4629a78ee13235e6525ebcfb', - '0xe742FCE58484FF7be7835D95E350c23CE55A7E12', -] - -module.exports = { - bsc: { - staking: stakings(stackingContracts, minto) - }, - heco: { - tvl: () => ({}), - staking: stakings(stackingContracts, hminto) - } -} diff --git a/projects/mintswap-finance-v3/index.js b/projects/mintswap-finance-v3/index.js deleted file mode 100644 index 4c1f4bd9b79..00000000000 --- a/projects/mintswap-finance-v3/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -const factory = "0x1f88BB455E02646224A0a65f3eb4B2FCb4fb8e49"; - -module.exports = uniV3Export({ - mint: { factory, fromBlock: 1025232 }, -}) \ No newline at end of file diff --git a/projects/mintswap/index.js b/projects/mintswap/index.js deleted file mode 100644 index 6413781294e..00000000000 --- a/projects/mintswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'avax', - masterchef: '0xAdD22604caf79139450e9fb4851394fFCE1692Be', - nativeToken: '0x7bf4ca9aec25adaaf7278eedbe959d81893e314f' -}) \ No newline at end of file diff --git a/projects/minu/index.js b/projects/minu/index.js deleted file mode 100644 index 00c8519f900..00000000000 --- a/projects/minu/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') -const MINER_CONTRACT = "0x0754088499311a3FC2A9D2B759Dab2b6c0dB4A15" - -module.exports = { - bsc:{ - tvl: sumTokensExport({ tokens: [nullAddress], owner: MINER_CONTRACT, }) - }, - methodology: "We count the BNB on the Miner contract" -} \ No newline at end of file diff --git a/projects/mira-ly/index.js b/projects/mira-ly/index.js deleted file mode 100644 index d59f9d69b47..00000000000 --- a/projects/mira-ly/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens } = require("../helper/chain/fuel") -// const { configPost } = require('../helper/cache') - -async function tvl(api) { - const contractId = '0x2e40f2b244b98ed6b8204b3de0156c6961f98525c8162f80162fcf53eebd90e7' - // const { pools } = await configPost('mira-ly', 'https://prod.api.mira.ly/pools', { "volume_hours": 24, "apr_days": 1 }) - // const tokens = pools.map(i => i.id.split('_').slice(0, 2)).flat() - // const provider = await fuels.Provider.create('https://mainnet.fuel.network/v1/graphql') - // const contract = new fuels.Contract(contractId, abi, provider) - // const { value } = await contract.functions.total_assets().get() - return sumTokens({ api, owner: contractId, }) -} - -module.exports = { - fuel: { tvl }, - timetravel: false, -} - -// https://github.com/mira-amm/mira-v1-ts/blob/main/sway_abis/contracts/mira_amm_contract/release/mira_amm_contract-abi.json diff --git a/projects/mirage-protocol/index.js b/projects/mirage-protocol/index.js deleted file mode 100644 index e48a519939d..00000000000 --- a/projects/mirage-protocol/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { function_view } = require("../helper/chain/aptos"); - -const MIRAGE_MOVEMENT = - "0x24d6dcce95555b8e8eeaed7d739ea1036c0b8d4bbc6a01797505295a56d322cc"; - -const MIRAGE_APTOS = - "0x24d6dcce95555b8e8eeaed7d739ea1036c0b8d4bbc6a01797505295a56d322cc" - -const MOVEMENT_MOVE_MUSD_POOL = "0x81821b61b14a7899e6417c9f9b6a2a8871d6d27a2fc66fee97942425185d546f"; - -const APTOS_APT_MUSD_POOL = "0xe1e13aa968df88dff6ac5227eaa6220c90a0e40e60ce274695a134f43966e2c0"; -const APTOS_USDC_MUSD_POOL = "0x3fb56c8c18ad3f20acf1ac971edfca4dd2bef1144e363aec83a04587675752f5"; - -const APTOS_USDC_FA = ADDRESSES.aptos.USDC_3 - -async function tvl(api) { - const chain = api.chain; - - if (chain === 'move') { - const moveResponse = await function_view({ - functionStr: `${MIRAGE_MOVEMENT}::vault::total_collateral`, - args: [MOVEMENT_MOVE_MUSD_POOL], - chain: 'move' - }) - api.add("0xa", moveResponse) - } else if (chain === 'aptos') { - const aptResponse = await function_view({ - functionStr: `${MIRAGE_APTOS}::vault::total_collateral`, - args: [APTOS_APT_MUSD_POOL], - chain: 'aptos' - }) - api.add("0xa", aptResponse) - - const usdcResponse = await function_view({ - functionStr: `${MIRAGE_APTOS}::vault::total_collateral`, - args: [APTOS_USDC_MUSD_POOL], - chain: 'aptos' - }) - api.add(APTOS_USDC_FA, usdcResponse) - } -} - -module.exports = { - timetravel: false, - move: { tvl }, - aptos: { tvl } -}; - diff --git a/projects/mirai/index.js b/projects/mirai/index.js deleted file mode 100644 index be43a981b98..00000000000 --- a/projects/mirai/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef") - -const mirai = "0xC6db58E05F647e6D0EE1bf38aC2619867cb9D3cD"; -const masterchef = "0x6C6e46c671C848F87A173E95b9511FDA0C84Ba15"; - -module.exports = { - ...masterChefExports(masterchef, "polygon", mirai, false) -} \ No newline at end of file diff --git a/projects/mirakle/index.js b/projects/mirakle/index.js deleted file mode 100644 index ce492780b13..00000000000 --- a/projects/mirakle/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require('../helper/staking') -const { gmxExports } = require('../helper/gmx'); - -const fuseVault = '0x2EB12e4B1057ef2d0C300C41493B599B028dB00f'; -const fuseStaking = '0x8F7bCecC354037Bcf63DB11A336dA5d49b1316d8'; -const qiji = '0x4b9aE621E54BF1ecFe39366BCA0018d97A2D510b'; - -module.exports = { - fuse: { - staking: staking(fuseStaking, qiji), - tvl: gmxExports({ vault: fuseVault }) - }, - hallmarks: [ - [1691036559, "Mirakle Launch"] - ], -}; diff --git a/projects/mirror/index.js b/projects/mirror/index.js deleted file mode 100644 index 0a1da080137..00000000000 --- a/projects/mirror/index.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - hallmarks: [ - // [1633651200,"Lock contract exploit"], - [1653696000,"LUNC mispricing exploit"], - [1651881600, "UST depeg"], - ], - timetravel: false, - misrepresentedTokens: true, - deadFrom: '2022-05-26', - terra: { - tvl: () => ({}), - } -} diff --git a/projects/mirrosset/index.js b/projects/mirrosset/index.js deleted file mode 100644 index d71954349e3..00000000000 --- a/projects/mirrosset/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') -const USDC = ADDRESSES.telos.ETH -const mUSDC = "0x79568bEfa9bF339e76bE12813cf7430018E1AB58" -const MortgagePool = "0xA6d5df932FFE35810389e00D1A3a698a44A14E85" -const InsurancePool = "0x587Abb291379Ea84AcE583aB07A13109b9B3F347" - -module.exports = { - kava: { - tvl: sumTokensExport({ tokensAndOwners: [ - [USDC, InsurancePool], - // [mUSDC, InsurancePool], // you cant count your own tokens as your tvl - [nullAddress, MortgagePool], - ]}), - }, - } \ No newline at end of file diff --git a/projects/mistswap/index.js b/projects/mistswap/index.js deleted file mode 100644 index 94d3d934cb9..00000000000 --- a/projects/mistswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const xMIST = "0xC41C680c60309d4646379eD62020c534eB67b6f4"; -const MIST = "0x5fA664f69c2A4A3ec94FaC3cBf7049BD9CA73129"; -const FACTORY = "0x6008247F53395E7be698249770aa1D2bfE265Ca0"; - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x6008247F53395E7be698249770aa1D2bfE265Ca0) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - smartbch: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), - staking: staking(xMIST, MIST, 'smartbch', 'mistswap', 18) - }, -}; diff --git a/projects/mito/index.js b/projects/mito/index.js deleted file mode 100644 index ec38c199c4b..00000000000 --- a/projects/mito/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require('../helper/http') - -async function getVaultBalances(vaultAddress, api) { - const vaultBalances = `https://sentry.exchange.grpc-web.injective.network/api/exchange/portfolio/v2/portfolio/${vaultAddress}/balances`; - const response = await get(vaultBalances); - const subaccounts = response.portfolio.subaccounts; - return subaccounts.map(i => api.add(i.denom, +i.deposit.availableBalance)) -} - -async function tvl(api) { - const MASTER_VAULT_ADDRESS = 'inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3'; - await getVaultBalances(MASTER_VAULT_ADDRESS, api); -} - -module.exports = { - timetravel: false, - methodology: 'TVL accounts for the liquidity locked up in the Injective protocol vaults that is not being used towards posting orders to orderbook. The data comes back from the Injective API.', - injective: { tvl } -} diff --git a/projects/mitosis/index.js b/projects/mitosis/index.js deleted file mode 100644 index b046632f70c..00000000000 --- a/projects/mitosis/index.js +++ /dev/null @@ -1,309 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const WEETH_ADDRESS = { - ethereum: ADDRESSES.ethereum.WEETH, - arbitrum: ADDRESSES.arbitrum.weETH, - optimism: "0x346e03f8cce9fe01dcb3d0da3e9d00dc2c0e08f0", - mode: ADDRESSES.blast.weETH, - manta: "0x77b6F99970f488cFA8bd41892900b6Ce881C2300", - blast: ADDRESSES.blast.weETH, - linea: "0x1bf74c010e6320bab11e2e5a532b5ac15e0b8aa6", - scroll: "0x01f0a31698c4d065659b9bdc21b3610292a1c506", -}; - -const CAP_ADDRESS = { - ethereum: "0x451d791b6e9a9b8c9237bb55e58a7757342b16f9", - arbitrum: "0xb883ee478d3b7fea8a5357a3c3e27e2d2292b1d2", - optimism: "0xb883ee478d3b7fea8a5357a3c3e27e2d2292b1d2", - mode: "0xb883ee478d3b7fea8a5357a3c3e27e2d2292b1d2", - manta: "0xb883ee478d3b7fea8a5357a3c3e27e2d2292b1d2", - blast: "0x096430ef0a653c067df32e93ff77090e084169de", - linea: "0xcd32876b9b483eb75e8ca74935e4b51725f33a91", - scroll: "0xcd32876b9B483eb75e8ca74935E4b51725F33A91", -}; - -const THEO_VAULT_ADDRESS = [ - { - chainId: 1, - address: "0x0b75e167f8a37179b7044414ee43e94cabeaa2fa", - }, - { - chainId: 42161, - address: "0x54602e5cba09e01eee9b2050f1f4f0dc902cee34", - }, - { - chainId: 59144, - address: "0xcf101e13b5181f79094b0726b03e89d1cb95b28c", - }, -]; - -const THEO_UNDERLYING_ASSETS = { - "0x0b75e167f8a37179b7044414ee43e94cabeaa2fa": WEETH_ADDRESS.ethereum, - "0x54602e5cba09e01eee9b2050f1f4f0dc902cee34": WEETH_ADDRESS.arbitrum, - "0xcf101e13b5181f79094b0726b03e89d1cb95b28c": WEETH_ADDRESS.linea, -}; - -const MORPH_CHAIN_ID = 2818; - -const MORPH_VAULTS_ADDRESS = [ - { - chainId: MORPH_CHAIN_ID, - address: "0xb9e83425cb9715b1f4d105f06ca43084bab86690", - }, - { - chainId: MORPH_CHAIN_ID, - address: "0x073058aaeb22a1b09912526db7361fa11f23cc42", - }, - { - chainId: MORPH_CHAIN_ID, - address: "0x2da0f5ff7504eba1cbb2b97f8531bd4852442e39", - }, - { - chainId: MORPH_CHAIN_ID, - address: "0xae8afc08be496859a96f605b9dad5acd853b3cdd", - }, -]; - -const MORPH_UNDERLYING_ASSETS = { - "0xb9e83425cb9715b1f4d105f06ca43084bab86690": ADDRESSES.morph.WETH, - "0x073058aaeb22a1b09912526db7361fa11f23cc42": ADDRESSES.morph.USDT, - "0x2da0f5ff7504eba1cbb2b97f8531bd4852442e39": ADDRESSES.morph.USDC, - "0xae8afc08be496859a96f605b9dad5acd853b3cdd": ADDRESSES.morph.WBTC, -}; - -const BASE_CHAIN_ID = 8453; - -const EOL_VAULTS_ADDRESS = [ - { - chainId: BASE_CHAIN_ID, - address: "0x747a3d7a65bd105e058f6ceca1af5a530b809c55", - }, - { - chainId: BASE_CHAIN_ID, - address: "0x8a7f5457eb8dab4d48abb6bd2bdf9ebebe97a98b", - }, -]; - -const EOL_UNDERLYING_ASSETS = { - "0x747a3d7a65bd105e058f6ceca1af5a530b809c55": ADDRESSES.base.WETH, - "0x8a7f5457eb8dab4d48abb6bd2bdf9ebebe97a98b": ADDRESSES.base.USDC, -}; - -const BSC_CHAIN_ID = 56; - -const BSC_VAULTS_ADDRESS = [ - { - chainId: BSC_CHAIN_ID, - address: "0x6d1703d913c74afaedd4b78deee7f32aa91a5943", - }, - { - chainId: BSC_CHAIN_ID, - address: "0xa5deb178c729e058018db8bd68a9ffb8418df42d", - }, -]; - -const BSC_UNDERLYING_ASSETS = { - "0x6d1703d913c74afaedd4b78deee7f32aa91a5943": ADDRESSES.bsc.USDT, - "0xa5deb178c729e058018db8bd68a9ffb8418df42d": ADDRESSES.bsc.WBNB, -}; - -const chainTVL = ({ vaults = [] }) => async (api) => { - const caps = []; - if (CAP_ADDRESS[api.chain] && WEETH_ADDRESS[api.chain]) { - caps.push({ cap: CAP_ADDRESS[api.chain], asset: WEETH_ADDRESS[api.chain] }); - } - const capContracts = caps.map((i) => i.cap); - const capTokens = caps.map((i) => i.asset); - const capTokenBals = await api.multiCall({ - abi: "uint256:load", - calls: capContracts, - }); - api.add(capTokens, capTokenBals); - - const theoVaults = THEO_VAULT_ADDRESS.filter( - (vault) => vault.chainId === api.chainId - ).map((vault) => vault.address.toLowerCase()); - - const regularVaults = vaults.filter( - (vault) => !theoVaults.includes(vault.toLowerCase()) - ); - - const vaultInfos = await api.multiCall({ - abi: "function vaultParams() view returns (uint8 decimals, address asset, uint56 minimumSupply, uint104 cap)", - calls: regularVaults, - permitFailure: true, - }); - const vaultInfos2 = await api.multiCall({ - abi: "address:asset", - calls: regularVaults, - permitFailure: true, - }); - const vaultTokens = vaultInfos.map((v, i) => v?.asset ?? vaultInfos2[i]); - - const balances = await api.sumTokens({ - tokensAndOwners2: [vaultTokens, regularVaults], - }); - - if (theoVaults.length > 0) { - const theoTotalSupplies = await api.multiCall({ - abi: "uint256:totalSupply", - calls: theoVaults, - }); - - theoVaults.forEach((theoVault, i) => { - const underlyingAsset = THEO_UNDERLYING_ASSETS[theoVault]; - if (underlyingAsset) { - api.add(underlyingAsset, theoTotalSupplies[i]); - } else { - api.add(theoVault, theoTotalSupplies[i]); - } - }); - } - - if (api.chainId === MORPH_CHAIN_ID && MORPH_VAULTS_ADDRESS.length > 0) { - const morphTotalSupplies = await api.multiCall({ - abi: "uint256:totalSupply", - calls: MORPH_VAULTS_ADDRESS.map((i) => i.address), - }); - - MORPH_VAULTS_ADDRESS.forEach((morphVault, i) => { - const underlyingAsset = MORPH_UNDERLYING_ASSETS[morphVault.address]; - if (underlyingAsset) { - api.add(underlyingAsset, morphTotalSupplies[i]); - } - }); - } - - if (api.chainId === BASE_CHAIN_ID && EOL_VAULTS_ADDRESS.length > 0) { - let eolTotalSupplies - - // contract upgrade: https://basescan.org/tx/0x8624341d4541cff6177c61d860e0d4f7fcfae4dbbd5843817714f211f8ce2dd9 - if (api.block < 34761002) { - eolTotalSupplies = await api.multiCall({ - abi: "uint256:totalAssets", // get underlying asset amount - calls: EOL_VAULTS_ADDRESS.map((i) => i.address), - }); - } else { - const totalSupplies = await api.multiCall({ - abi: "uint256:totalSupply", // get underlying asset amount - calls: EOL_VAULTS_ADDRESS.map((i) => i.address), - }); - eolTotalSupplies = totalSupplies.map(item => Number(item) / 1000000) - } - - EOL_VAULTS_ADDRESS.forEach((eolVault, i) => { - const underlyingAsset = EOL_UNDERLYING_ASSETS[eolVault.address]; - if (underlyingAsset) { - api.add(underlyingAsset, eolTotalSupplies[i]); - } - }); - } - - if (api.chainId === BSC_CHAIN_ID && BSC_VAULTS_ADDRESS.length > 0) { - const bscEolTotalSupplies = await api.multiCall({ - abi: "uint256:totalAssets", // get underlying asset amount - calls: BSC_VAULTS_ADDRESS.map((i) => i.address), - }); - - BSC_VAULTS_ADDRESS.forEach((bscEolVault, i) => { - const underlyingAsset = BSC_UNDERLYING_ASSETS[bscEolVault.address]; - if (underlyingAsset) { - api.add(underlyingAsset, bscEolTotalSupplies[i]); - } - }); - } - - return balances; -}; - -module.exports = { - doublecounted: true, - ethereum: { - tvl: chainTVL({ - vaults: [ - "0xE4cf2D4eb9c01784798679F2FED4CF47cc59a3ec", - "0x02Ff1F648Ff443B5d88214341F0acE6ECFb94cF3", - "0xA1eBd23c4364e7491633237A0d9359D82c629182", - "0x0109e9f292516dAB3E15EfC61811C5e5a7FA5358", - "0x0B75e167F8A37179b7044414EE43e94cabeAA2FA", - "0xdfb48ac96c69aab9e80e02e50f7b371749c1042d", // yarm_deposit - ], - }), - }, - scroll: { - tvl: chainTVL({ - vaults: [ - "0xA0EeB418213f8472cba2c842378E1bB64e28bd28", - ] - }), - }, - arbitrum: { - tvl: chainTVL({ - vaults: [ - "0x7E8cffBe165c6905a8AceC0f37B341c00353e8BA", - "0x73981B0496fC08e9136BAF74b79d32A4d4F2a007", - "0xbEd575b0FeDa4F84b71144634693DaCc07749471", - "0x54602E5cBa09e01EeE9B2050F1F4f0Dc902CeE34", - ] - }), - }, - optimism: { - tvl: chainTVL({ - vaults: [ - "0x5616Fe2762687Cd8a9158c27F62aff84E36821Be", - ], - }), - }, - mode: { - tvl: chainTVL({ - vaults: [ - "0xbEd575b0FeDa4F84b71144634693DaCc07749471", - ], - }), - }, - manta: { - tvl: chainTVL({ - vaults: [], - }), - }, - blast: { - tvl: chainTVL({ - vaults: [ - "0x8506fD66FCeD711c11F9E837EcAEC0F87C3F60A0", - ], - }), - }, - linea: { - tvl: chainTVL({ - vaults: [ - "0x56ceD49205e5D9b4d8D9B29f4aBfbe7bb8b08768", - "0x96d6cE4e83dB947fF6bD1Ab0B377F23cd5D9ec2D", - "0xcF101e13b5181f79094B0726B03e89d1cB95b28C", - ], - }), - }, - bsc: { - tvl: chainTVL({ - vaults: [ - "0xaDd58517c5D45c8ed361986f193785F8Ed1ABFc2", - "0x4320e5ae6f08ffcf6175fb558ee4c0ec41b86de9", // yarm_deposit - // BSC EOL vaults handled separately - ], - }), - }, - mantle: { - tvl: chainTVL({ - vaults: ["0x6FF000453a9c14f7d3bf381925c8cde565DbCe55"], - }), - }, - morph: { - tvl: chainTVL({ - vaults: [], - }), - }, - base: { - tvl: chainTVL({ - vaults: [], // EOL vaults handled separately - }), - }, -}; \ No newline at end of file diff --git a/projects/mixswap/index.js b/projects/mixswap/index.js deleted file mode 100644 index fa3eeb2a37a..00000000000 --- a/projects/mixswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports, } = require("../helper/masterchef") - -const token = "0xb8b9e96e9576af04480ff26ee77d964b1996216e"; -const masterchef = "0x775eead1076b149d5eb81065fcd18a3a5717085a"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", token, false,) -} \ No newline at end of file diff --git a/projects/mjolnir-exchange/index.js b/projects/mjolnir-exchange/index.js deleted file mode 100644 index 98776b3acdf..00000000000 --- a/projects/mjolnir-exchange/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - hemi: { - tvl: sumTokensExport({ owner: '0xB1def8509EDc2aB66e9bf52507bbba9Cc4205ADa', tokens: [ - ADDRESSES.hemi.WBTC, - ADDRESSES.hemi.WETH, - ADDRESSES.hemi.USDT, - ADDRESSES.hemi.USDC_e, - "0xAA40c0c7644e0b2B224509571e10ad20d9C4ef28" - ]}) - }, -} diff --git a/projects/mm-finance-arbitrum-v3/index.js b/projects/mm-finance-arbitrum-v3/index.js deleted file mode 100644 index 12ac490f560..00000000000 --- a/projects/mm-finance-arbitrum-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - arbitrum: { - factory: "0x947bc57CEFDd22420C9a6d61387FE4D4cf8A090d", - fromBlock: 72404739, - }, -}); diff --git a/projects/mm-finance-arbitrum/index.js b/projects/mm-finance-arbitrum/index.js deleted file mode 100644 index 16aa440ab58..00000000000 --- a/projects/mm-finance-arbitrum/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - - -const factory = '0xfe3699303D3Eb460638e8aDA2bf1cFf092C33F22' -const mmfToken = '0x56b251d4b493ee3956e3f899d36b7290902d2326' -const masterChef = '0xa73Ae666CEB460D5E884a20fb30DE2909604557A' - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://arbimm.finance as the source. Staking accounts for the MMF locked in MasterChef (0xa73Ae666CEB460D5E884a20fb30DE2909604557A)', - arbitrum: { - staking: staking(masterChef, mmfToken), - tvl: getUniTVL({ - factory, - useDefaultCoreAssets: true, - }), - }, -} \ No newline at end of file diff --git a/projects/mm-finance-polygon/index.js b/projects/mm-finance-polygon/index.js deleted file mode 100644 index 77167c32240..00000000000 --- a/projects/mm-finance-polygon/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking, } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - -const factory = '0x7cFB780010e9C861e03bCbC7AC12E013137D47A5' -const mmfToken = '0x22a31bD4cB694433B6de19e0aCC2899E553e9481' -const masterChef = '0xa2B417088D63400d211A4D5EB3C4C5363f834764' - -module.exports = { - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://polymm.finance as the source. Staking accounts for the MMF locked in MasterChef (0xa2B417088D63400d211A4D5EB3C4C5363f834764)', - polygon: { - staking: staking(masterChef, mmfToken), - tvl: getUniTVL({ - factory, - useDefaultCoreAssets: true, - }), - }, -} \ No newline at end of file diff --git a/projects/mm-finance/index.js b/projects/mm-finance/index.js deleted file mode 100644 index 3e4e6884338..00000000000 --- a/projects/mm-finance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { staking } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - - -const factory = '0xd590cC180601AEcD6eeADD9B7f2B7611519544f4' -const mmfToken = '0x97749c9B61F878a880DfE312d2594AE07AEd7656' -const masterChef = '0x6bE34986Fdd1A91e4634eb6b9F8017439b7b5EDc' - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://mm.finance as the source. Staking accounts for the MMF locked in MasterChef (0x6bE34986Fdd1A91e4634eb6b9F8017439b7b5EDc)', - cronos: { - staking: staking(masterChef, mmfToken), - tvl: getUniTVL({ - factory, - useDefaultCoreAssets: true, - blacklist:[ - "0xd8d40dcee0c2b486eebd1fedb3f507b011de7ff0", // 10SHARE, token went to 0 and liq collapsed - "0xa60943a1B19395C999ce6c21527b6B278F3f2046", // HKN - "0x388c07066aa6cea2be4db58e702333df92c3a074", // hakuna too - ] - }), - }, -} \ No newline at end of file diff --git a/projects/mm-stableswap-polygon/index.js b/projects/mm-stableswap-polygon/index.js deleted file mode 100644 index 9c709c28b9b..00000000000 --- a/projects/mm-stableswap-polygon/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require('../helper/unwrapLPs') - -const pools = { - owner: '0x690BBaa9EDBb762542FD198763092eaB2B2A5350', - tokens: [ - ADDRESSES.polygon.USDT, // USDT - ADDRESSES.polygon.USDC, // USDC - ADDRESSES.polygon.DAI, // DAI - ] -} -module.exports = { - doublecounted: true, - polygon: { - tvl: sumTokensExport(pools) - }, - methodology: "Counts DAI, USDC, & USDT tokens on the 3MM Base Pool for tvl" -}; diff --git a/projects/mm-stableswap/index.js b/projects/mm-stableswap/index.js deleted file mode 100644 index 4c1466a82ce..00000000000 --- a/projects/mm-stableswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - - -const MM3BasePool = "0x61bB2F4a4763114268a47fB990e633Cb40f045F8"; -const DAI = "0xF2001B145b43032AAF5Ee2884e456CCd805F677D"; -const USDT = ADDRESSES.cronos.USDT; -const USDC = ADDRESSES.cronos.USDC; - - -module.exports = { - doublecounted: true, - cronos: { - tvl: sumTokensExport({ tokens: [DAI, USDC, USDT], owner: MM3BasePool }), - }, - methodology: "Counts DAI, USDC, & USDT tokens on the 3MM Base Pool for tvl", -}; diff --git a/projects/mmo-finance-polygon/index.js b/projects/mmo-finance-polygon/index.js deleted file mode 100644 index f6b2b03e28b..00000000000 --- a/projects/mmo-finance-polygon/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - polygon: { - tvl: () => ({}), - staking: staking('0x2b9299f80a644CA60c0d398e257cb72488875d2A', '0x859a50979fdB2A2fD8Ba1AdCC66977C6f6b1CD5B') - }, -} \ No newline at end of file diff --git a/projects/mmo-finance/index.js b/projects/mmo-finance/index.js deleted file mode 100644 index 2900e24607b..00000000000 --- a/projects/mmo-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - cronos: { - tvl: () => ({}), - staking: staking('0x692db42F84bb6cE6A6eA62495c804C71aA6887A7', '0x50c0c5bda591bc7e89a342a3ed672fb59b3c46a7') - }, -} \ No newline at end of file diff --git a/projects/mmo/index.js b/projects/mmo/index.js deleted file mode 100644 index e8727c98172..00000000000 --- a/projects/mmo/index.js +++ /dev/null @@ -1,56 +0,0 @@ - -const { cachedGraphQuery } = require("../helper/cache"); -const mEtherABI = { - thisFungibleMToken: "function thisFungibleMToken() view returns (uint240)", - totalBorrows: "function totalBorrows(uint240) view returns (uint256)", - totalCashUnderlying: "function totalCashUnderlying(uint240) view returns (uint256)", -} - -async function tvl(api) { - await getTotalCash(api) - await getTotalCollateral(api) -} - -async function fetch(key, query) { - var endpoint = 'DUQF7Lhwu1dzz2GwyNi3eRvjZeUnMNCDFjQRA8BYpoRJ' - return cachedGraphQuery(key, endpoint, query) -} - -async function getTotalCash(api) { - const getTotalBorrows = `{ vaults { id } }` - const results = await fetch('mmo-vaults-borrow', getTotalBorrows) - const vaults = results.vaults.map(i => i.id) - const mEtherIDs = await api.multiCall({ abi: mEtherABI.thisFungibleMToken, calls: vaults }) - const calls = vaults.map((vaultObj, idx) => ({ target: vaultObj, params: mEtherIDs[idx], })); - const bals = await api.multiCall({ abi: mEtherABI.totalCashUnderlying, calls }) - api.addGasToken(bals) -} - -async function getTotalCollateral(api) { - const getDepositedNFTs = `{ - depositedNFTsEntities { - collection - tokenAddress - } - }`; - const results = await fetch('mmo-vaults-deposits', getDepositedNFTs) - const tokensAndOwners = results.depositedNFTsEntities.map(i => [i.tokenAddress, i.collection]) - return api.sumTokens({ tokensAndOwners }) -} - -async function borrowed(api) { - const getTotalBorrows = `{ vaults { id } }` - const results = await fetch('mmo-vaults-borrow', getTotalBorrows); - const vaults = results.vaults.map(i => i.id) - const mEtherIDs = await api.multiCall({ abi: mEtherABI.thisFungibleMToken, calls: vaults }) - const totalBorrowsCall = vaults.map((vaultObj, idx) => ({ target: vaultObj, params: mEtherIDs[idx], })); - const totalBorrowsResults = await api.multiCall({ abi: mEtherABI.totalBorrows, calls: totalBorrowsCall, }) - api.addGasToken(totalBorrowsResults) -} - -module.exports = { - methodology: `Counts the tokens locked in our vault as collateral and the available cash in the pools. Borrowed ETH is not counted towards the TVL`, - ethereum: { - tvl, borrowed, - }, -}; diff --git a/projects/moai-fi-v2/index.js b/projects/moai-fi-v2/index.js deleted file mode 100644 index 9e2cced8ad5..00000000000 --- a/projects/moai-fi-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'xrplevm': '0x645541A2e2fb655fd7765898DFfbc7dd051E5B67' -}) \ No newline at end of file diff --git a/projects/moai-fi-v3/index.js b/projects/moai-fi-v3/index.js deleted file mode 100644 index 9d5f88e3dda..00000000000 --- a/projects/moai-fi-v3/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - 'xrplevm': { factory: '0x678100B9095848FCD4AE6C79A7D29c11815D07fe', fromBlock: 1, }, -}) \ No newline at end of file diff --git a/projects/moar/index.js b/projects/moar/index.js deleted file mode 100644 index bab97c1b96d..00000000000 --- a/projects/moar/index.js +++ /dev/null @@ -1,76 +0,0 @@ -const { aQuery, function_view } = require('../helper/chain/aptos') -const sdk = require('@defillama/sdk'); - -const addresses = { - 'aptos': { - 'moar': "0xa3afc59243afb6deeac965d40b25d509bb3aebc12f502b8592c283070abc2e07", - 'moar_lens': "0xfa3d17dfdf5037ed9b68c2c85976f899155048fdf96bc77b57ef1ad206c5b007", - 'moar_package_owner': "0x37e9ce6910ceadd16b0048250a33dac6342549acf31387278ea0f95c9057f110", - }, -} - -async function tvl(api, chain) { - // TVL for moar means the unborrowed assets in the pools + all combined assets in the credit accounts - const poolAddresses = await getPoolAddresses(chain) - - const balances = {}; - for (const poolAddress of poolAddresses) { - const poolData = await aQuery(`/v1/accounts/${poolAddress}/resource/${addresses[chain]['moar']}::pool::Pool`, chain) - - if (!poolData['data']['is_paused']) { - const idleAssetAmount = poolData['data']['total_deposited'] - poolData['data']['total_borrows'] - const assetMetadata = poolData['data']['underlying_asset']['inner'] - sdk.util.sumSingleBalance(balances, assetMetadata, idleAssetAmount, chain); - } - } - - const creditAccounts = await function_view({ - functionStr: `${addresses[chain]['moar']}::credit_manager::get_all_credit_accounts`, - chain: chain - }) - - for (const creditAccount of creditAccounts) { - const assetData = await function_view({ - functionStr: `${addresses[chain]['moar_lens']}::lens::get_credit_account_combined_asset_amounts`, - args: [creditAccount], - chain: chain - }) - for (const asset of assetData) { - sdk.util.sumSingleBalance(balances, asset['asset']['inner'], asset['amount'], chain); - } - } - - return balances; -} - -async function borrowed(api, chain) { - const balances = {}; - - const poolAddresses = await getPoolAddresses(chain) - - for (const poolAddress of poolAddresses) { - const poolData = await aQuery(`/v1/accounts/${poolAddress}/resource/${addresses[chain]['moar']}::pool::Pool`, chain) - - if (!poolData['data']['is_paused']) { - const borrowedAmount = poolData['data']['total_borrows'] - const assetMetadata = poolData['data']['underlying_asset']['inner'] - sdk.util.sumSingleBalance(balances, assetMetadata, borrowedAmount, chain); - } - } - return balances; -} - -async function getPoolAddresses(chain) { - const poolsConfig = await aQuery(`/v1/accounts/${addresses[chain]['moar_package_owner']}/resource/${addresses[chain]['moar']}::pool::PoolConfigs`, chain) - return poolsConfig['data']['all_pools']['inline_vec'].map(x => x['inner']) -} - -module.exports = { - timetravel: true, - start: 1746403200, - methodology: "Sums assets held by lending pools and all the assets held by all Credit Accounts.", - aptos: { - tvl: async (api) => tvl(api, 'aptos'), - borrowed: async (api) => borrowed(api, 'aptos') - }, -} diff --git a/projects/mobius-exchange/index.js b/projects/mobius-exchange/index.js deleted file mode 100644 index d455ec2ae5e..00000000000 --- a/projects/mobius-exchange/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const LP_TOKEN_CONFIG = [ - // Stable pool - { tokenSymbol: 'USDe', lpToken: '0x362F4D6F539201dB13A7305369a48FaC58960be5', token: ADDRESSES.arbitrum.USDe }, - { tokenSymbol: 'USDC', lpToken: '0xb8Ca9787Cf03c6f1fA6ef207aB93e875F3B84426', token: ADDRESSES.mantle.USDC }, - { tokenSymbol: 'USDT', lpToken: '0x6A7D252b807887AfEE870d14C5D7eb25f00A7044', token: ADDRESSES.mantle.USDT }, - // cmETH pool - { tokenSymbol: 'cmETH', lpToken: '0x801f29bB8fa066b71bF2f4e1Af34D7E4682cCecc', token: ADDRESSES.mantle.cmETH }, - { tokenSymbol: 'mETH', lpToken: '0x88837Ef995907016C5ca0776693f6B2339A44E35', token: ADDRESSES.mantle.mETH }, - { tokenSymbol: 'WETH', lpToken: '0x6d01Ad49e74aa488EB293c1869D4aCDC39359B4b', token: ADDRESSES.mantle.WETH }, -] - -async function tvl(api) { - const calls = LP_TOKEN_CONFIG.map((config) => ({ - target: config.token, - params: [config.lpToken], - })); - - const balances = await api.multiCall({ - calls, - abi: 'erc20:balanceOf', - requery: true, - }); - - const tokens = LP_TOKEN_CONFIG.map((config) => config.token); - api.addTokens(tokens, balances); -} - -module.exports = { - methodology: 'counts the total balance of underlying tokens stored in the LP token contracts', - start: 82410000, - mantle: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/mobius/index.js b/projects/mobius/index.js deleted file mode 100644 index 3c5873c7ebd..00000000000 --- a/projects/mobius/index.js +++ /dev/null @@ -1,234 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -let pools = [ - { - "name": "USDC (Portal)", - "address": "0xc0ba93d4aaf90d39924402162ee4a213300d1d60", - "tokens": [ - ADDRESSES.celo.cUSD, - "0x37f750B7cC259A2f741AF45294f6a16572CF5cAd" - ], - "lp": "0xe10fd4788a76d19ba0110b1bfda5e13d35ed4359" - }, - { - "name": "Staked CELO", - "address": "0xebf0536356256f8ff2a5eb6c65800839801d8b95", - "tokens": [ - ADDRESSES.celo.CELO, - "0xC668583dcbDc9ae6FA3CE46462758188adfdfC24" - ], - "lp": "0x4730ff6bc3008a40cf74d660d3f20d5b51646da3" - }, - { - "name": "UST (Allbridge)", - "address": "0x9f4adbd0af281c69a582eb2e6fa2a594d4204cae", - "tokens": [ - ADDRESSES.celo.cUSD, - ADDRESSES.celo.atUST - ], - "lp": "0x9438e7281d7e3e99a9dd21e0ead9c6a254e17ab2" - }, - { - "name": "WETH (Optics V2)", - "address": "0x74ef28d635c6c5800dd3cd62d4c4f8752daacb09", - "tokens": [ - "0x2DEf4285787d58a2f811AF24755A8150622f4361", - "0x122013fd7dF1C6F636a5bb8f03108E876548b455" - ], - "lp": "0x4ff08e2a4e7114af4b575aef9250144f95790982" - }, - { - "name": "USDC (Optics V2)", - "address": "0x9906589ea8fd27504974b7e8201df5bbde986b03", - "tokens": [ - ADDRESSES.celo.cUSD, - "0xef4229c8c3250C675F21BCefa42f58EfbfF6002a" - ], - "lp": "0x39b6f09ef97db406ab78d869471adb2384c494e3" - }, - { - "name": "DAI (Optics V2)", - "address": "0xf3f65dfe0c8c8f2986da0fec159abe6fd4e700b4", - "tokens": [ - ADDRESSES.celo.cUSD, - ADDRESSES.celo.DAI - ], - "lp": "0x274dd2df039f1f6131419c82173d97770e6af6b7" - }, - { - "name": "WBTC (Optics V2)", - "address": "0xaefc4e8cf655a182e8346b24c8abce45616ee0d2", - "tokens": [ - "0xD629eb00dEced2a080B7EC630eF6aC117e614f1b", - ADDRESSES.celo.WBTC - ], - "lp": "0x20d7274c5af4f9de6e8c93025e44af3979d9ab2b" - }, - { - "name": "pUSDC (Optics V2)", - "address": "0xcce0d62ce14fb3e4363eb92db37ff3630836c252", - "tokens": [ - ADDRESSES.celo.cUSD, - "0x1bfc26cE035c368503fAE319Cc2596716428ca44" - ], - "lp": "0x68b239b415970dd7a5234a9701cbb5bfab544c7c" - }, - { - "name": "USDC (Optics V1)", - "address": "0xa5037661989789d0310ac2b796fa78f1b01f195d", - "tokens": [ - ADDRESSES.celo.cUSD, - ADDRESSES.celo.USDC - ], - "lp": "0xd7bf6946b740930c60131044bd2f08787e1ddbd4" - }, - { - "name": "aaUSDC (Allbridge)", - "address": "0x0986b42f5f9c42feeef66fc23eba9ea1164c916d", - "tokens": [ - ADDRESSES.celo.cUSD, - ADDRESSES.celo.aaUSDC - ], - "lp": "0x730e677f39c4ca96012c394b9da09a025e922f81" - }, - { - "name": "Poof cUSD V2", - "address": "0xa2f0e57d4ceacf025e81c76f28b9ad6e9fbe8735", - "tokens": [ - ADDRESSES.celo.cUSD, - "0xEadf4A7168A82D30Ba0619e64d5BCf5B30B45226" - ], - "lp": "0x07e137e5605e15c93f22545868fa70cecfcbbffe" - }, - { - "name": "Poof CELO V2", - "address": "0xfc9e2c63370d8deb3521922a7b2b60f4cff7e75a", - "tokens": [ - ADDRESSES.celo.cUSD, - "0x301a61D01A63c8D670c2B8a43f37d12eF181F997" - ], - "lp": "0xaffd8d6b5e5a0e25034dd3d075532f9ce01c305c" - }, - { - "name": "Poof cEUR V2", - "address": "0x23c95678862a229fac088bd9705622d78130bc3e", - "tokens": [ - "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73", - "0xD8761DD6c7cB54febD33adD699F5E4440b62E01B" - ], - "lp": "0xec8e37876fd9de919b58788b87a078e546149f87" - }, - { - "name": "Poof cUSD V1", - "address": "0x02db089fb09fda92e05e92afcd41d9aafe9c7c7c", - "tokens": [ - ADDRESSES.celo.cUSD, - "0xB4aa2986622249B1F45eb93F28Cfca2b2606d809" - ], - "lp": "0x18d71b8664e69d6dd61c79247dbf12bfaaf66c10" - }, - { - "name": "asUSDC (Allbridge)", - "address": "0x63c1914bf00a9b395a2bf89aada55a5615a3656e", - "tokens": [ - ADDRESSES.celo.cUSD, - ADDRESSES.celo.asUSDC - ], - "lp": "0xafee90ab6a2d3b265262f94f6e437e7f6d94e26e" - }, - { - "name": "pUSDC (Optics V1)", - "address": "0x2080aaa167e2225e1fc9923250ba60e19a180fb2", - "tokens": [ - ADDRESSES.celo.cUSD, - "0xcC82628f6A8dEFA1e2B0aD7ed448bef3647F7941" - ], - "lp": "0xf5b454cf47caca418d95930aa03975ee4bf409bc" - }, - { - "name": "wBTC (Optics V1)", - "address": "0x19260b9b573569ddb105780176547875fe9feda3", - "tokens": [ - "0xD629eb00dEced2a080B7EC630eF6aC117e614f1b", - "0xBe50a3013A1c94768A1ABb78c3cB79AB28fc1aCE" - ], - "lp": "0x8cd0e2f11ed2e896a8307280deeee15b27e46bbe" - }, - { - "name": "wETH (Optics V1)", - "address": "0xe0f2cc70e52f05edb383313393d88df2937da55a", - "tokens": [ - "0x2DEf4285787d58a2f811AF24755A8150622f4361", - "0xE919F65739c26a42616b7b8eedC6b5524d1e3aC4" - ], - "lp": "0x846b784ab5302155542c1b3952b54305f220fd84" - }, - { - "name": "USDT (Moss)", - "address": "0xdbf27fd2a702cc02ac7acf0aea376db780d53247", - "tokens": [ - ADDRESSES.celo.cUSD, - ADDRESSES.celo.cUSDT - ], - "lp": "0xc7a4c6ef4a16dc24634cc2a951ba5fec4398f7e0" - }, - { - "name": "USDC (Moss)", - "address": "0x0ff04189ef135b6541e56f7c638489de92e9c778", - "tokens": [ - ADDRESSES.celo.cUSD, - ADDRESSES.celo.cUSDC - ], - "lp": "0x635aec36c4b61bac5eb1c3eee191147d006f8a21" - }, - { - "name": "Poof Celo V1", - "address": "0x413ffcc28e6cdde7e93625ef4742810fe9738578", - "tokens": [ - ADDRESSES.celo.CELO, - "0xE74AbF23E1Fdf7ACbec2F3a30a772eF77f1601E1" - ], - "lp": "0x4d6b17828d0173668e8eb730106444556a98c0f9" - }, - { - "name": "Poof cEUR V1", - "address": "0x382ed834c6b7dbd10e4798b08889eaed1455e820", - "tokens": [ - "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73", - "0x56072D4832642dB29225dA12d6Fd1290E4744682" - ], - "lp": "0x2642ab16bfb7a8b36ee42c9cba2289c4ca9f33b9" - }, - { - "name": "Poof cUSD V1 [DISABLED]", - "address": "0x81b6a3d9f725ab5d706d9e552b128bc5bb0b58a1", - "tokens": [ - "0xB4aa2986622249B1F45eb93F28Cfca2b2606d809", - "0xd7bf6946b740930c60131044bd2f08787e1ddbd4" - ], - "lp": "0x57f008172cf89b972db3db7dd032e66be4af1a8c" - }, - { - "name": "cUSD (Mento 1:1 Pool)", - "address": "0xfa3df877f98ac5ecd87456a7accaa948462412f0", - "tokens": [ - ADDRESSES.celo.cUSD, - "0x37f750B7cC259A2f741AF45294f6a16572CF5cAd" - ], - "lp": "0x552b9aa0eee500c60f09456e49fbc1096322714c" - } -] - -// pools = [] - -const chain = 'celo' -async function tvl(_, _b, {[chain]: block }) { - const tokensAndOwners = pools.map(i => i.tokens.map(t => ([t, i.address]))).flat() - const lpTokens = pools.map(i => i.lp) - return sumTokens2({ chain, block, tokensAndOwners, blacklistedTokens: lpTokens, }) -} - -module.exports = { - celo: { tvl } -}; diff --git a/projects/mobiusdex-xyz/index.js b/projects/mobiusdex-xyz/index.js deleted file mode 100644 index 9a590b32940..00000000000 --- a/projects/mobiusdex-xyz/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'sonic': '0x475f2dDfA1A5da19F4a3F282F1305f285E742C45' -}) \ No newline at end of file diff --git a/projects/mobiusfinance/index.js b/projects/mobiusfinance/index.js deleted file mode 100644 index 0d510a2bc52..00000000000 --- a/projects/mobiusfinance/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -async function tvl(api) { - return api.sumTokens({ - owner: '0xa6D0e001A257296d5246edcEFE4Ac56BD558F6c6', - tokens: [ - ADDRESSES.null, - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.WETH_1, - '0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', - '0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171', - ] - }) -} - -async function pool2(api) { - const tokens = [ - '0x162b21ba1a90dd9384c615192fa4053217d2a8db', - '0x53add4c98b2787f690042771ca8e512a5793e9c9', - '0x49d8136336e3feb7128c12172ae5ff78238a88be', - ] - return sumTokens2({ api, tokens, owner: '0xf12d4CF635c5D5107D67356090A941bD80f2556C', resolveLP: true}) -} - -module.exports = { - polygon: { - tvl, - staking: staking('0xa6D0e001A257296d5246edcEFE4Ac56BD558F6c6', '0x2db0Db271a10661e7090b6758350E18F6798a49D'), - pool2, - }, -} diff --git a/projects/mobox.js b/projects/mobox.js deleted file mode 100644 index 7a32d426d46..00000000000 --- a/projects/mobox.js +++ /dev/null @@ -1,18 +0,0 @@ -const { stakings, staking } = require("./helper/staking.js"); -const { pool2 } = require("./helper/pool2.js"); - -module.exports = { - bsc: { - tvl: () => ({}), - pool2: pool2(['0xdad49e63f97c967955975490a432de3796c699e6','0xa5f8c5dbd5f286960b9d90548680ae5ebff07652'], '0x8FA59693458289914dB0097F5F366d771B7a7C3F'), - staking: stakings( - [ - "0xdad49e63f97c967955975490a432de3796c699e6", - "0xf8c1bA88F1E4aeD152F945F1Df2a8fdc36127B5f", - "0x3bD6a582698ECCf6822dB08141818A1a8512c68D", - "0x5E7Eb57B163b78e93608E773e0F4a88A55d7C28F", - ], - "0x3203c9e46ca618c8c1ce5dc67e7e9d75f5da2377", - ), - }, -}; diff --git a/projects/moby/index.js b/projects/moby/index.js deleted file mode 100644 index f3a503f908f..00000000000 --- a/projects/moby/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - hallmarks: [ - // [1736294400,"Private-key Leak Exploit"], - [1737072000,"Moby Restored"] - ], - arbitrum: { - tvl: sumTokensExport({ - owners: [ - "0xd4D23332E6256B751E2Da0B9C0b3a70CFe9180C0", // (old) s vault - "0x9e34F79E39AddB64f4874203066fFDdD6Ab63a41", // (old) m vault - "0x3B22F749f082bC33Af33751cBD53d21215FC71d1", // (old) l vault - "0x157CF8715b8362441669f8c89229bd6d4aa3EE92", // s vault - "0x0DB7707a3188D28300f97E3c4a513630106eD192", // m vault - "0x8aBd3F9a4047FB959F3089744DBaAec393aD2e09", // l vault - ], - tokens: [ - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.WBTC, - ] - }) - }, - berachain: { - tvl: sumTokensExport({ - owners: [ - "0x66f782E776a91CE9c33EcD07f7D2a9743775209e", // vault - ], - tokens: [ - ADDRESSES.berachain.WETH, - ADDRESSES.berachain.USDC, - ADDRESSES.berachain.WBTC, - ADDRESSES.berachain.HONEY - ] - }), - } -} \ No newline at end of file diff --git a/projects/mobydex/index.js b/projects/mobydex/index.js deleted file mode 100644 index adc3beace9c..00000000000 --- a/projects/mobydex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - op_bnb: { - tvl: getUniTVL({ - factory: "0x9864C78acCe7837Ad1DA8f9BbECcf2dbE562e698", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/mochifi/index.js b/projects/mochifi/index.js deleted file mode 100644 index 35ea0b660b7..00000000000 --- a/projects/mochifi/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const mochiVault = "0x96076026Ae262f1D6a9b88BE49BBa0e8A80367EF" -const abi = { getVault: "function getVault(address _asset) view returns (address)" } - -async function tvl(api) { - const { vaults: rawTokens } = await getConfig('mochifi','https://backend.mochi.fi/vaults?chainId=1'); - const tokens = rawTokens.map(({ tokenAddress }) => tokenAddress) - const vaults = await api.multiCall({ calls: tokens.map((t) => ({ target: mochiVault, params: [t] })), abi: abi.getVault }) - const tokensAndOwners = tokens.map((t, i) => ([t, vaults[i]])) - return sumTokens2({ api, tokensAndOwners, blacklistedTokens: ['0x60ef10edff6d600cd91caeca04caed2a2e605fe5']}) -} - -module.exports = { - methodology: "TVL counts collateral deposits to mint USDM", - ethereum: { tvl }, -} diff --git a/projects/mochiswap/index.js b/projects/mochiswap/index.js deleted file mode 100644 index eabe69004be..00000000000 --- a/projects/mochiswap/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -const { staking } = require('../helper/staking'); - -const bscBMochi = "0x2d0e75b683e8b56243b429b24f2b08bcc1ffd8da"; -const bscChef = "0x464F1A30e5A5b5b2D3c5f4F0e823e01EeFE304df"; -const bscFactory = '0xCBac17919f7aad11E623Af4FeA98B10B84802eAc' - -const harmonyFactory = '0x3bEF610a4A6736Fd00EBf9A73DA5535B413d82F6' -const harmonyStakingToken = "0x691f37653f2fbed9063febb1a7f54bc5c40bed8c"; -const harmonyChef = "0xd0cb3e55449646c9735d53e83eea5eb7e97a52dc"; - -module.exports = { - bsc: { - tvl: getUniTVL({ - factory: bscFactory, - useDefaultCoreAssets: true, - }), - staking: staking(bscChef, bscBMochi), - }, - harmony: { - tvl: getUniTVL({ - factory: harmonyFactory, - useDefaultCoreAssets: true, - }), - staking: staking(harmonyChef, harmonyStakingToken), - hallmarks:[ - [1655991120, "Horizon bridge Hack $100m"], - ], - }, - -} diff --git a/projects/mockingbird/index.js b/projects/mockingbird/index.js deleted file mode 100644 index 98ef0499057..00000000000 --- a/projects/mockingbird/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x7a7d80c024192E946C8931CcD325ECb2F42f8361', - nativeToken: '0x0A737c40E42b164B30c0d3E5A19152CB89aA3EB9' -}) \ No newline at end of file diff --git a/projects/modSwapDefi/index.js b/projects/modSwapDefi/index.js deleted file mode 100644 index 220095a43ce..00000000000 --- a/projects/modSwapDefi/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - mode: { - tvl: getUniTVL({ factory: "0x703ADd44002379AD963d6Cc506b8F2292C831644", useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/mode/index.js b/projects/mode/index.js deleted file mode 100644 index 80f5ea29223..00000000000 --- a/projects/mode/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07", - "0x735aDBbE72226BD52e818E7181953f42E3b0FF21", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/modemax-dex/index.js b/projects/modemax-dex/index.js deleted file mode 100644 index 1fa244d491e..00000000000 --- a/projects/modemax-dex/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const {uniTvlExports} = require('../helper/unknownTokens.js') - -module.exports = uniTvlExports({ - mode: '0x423A079C43e4eD7ca561Ef04765eDB796F0Ec6c6' -}) \ No newline at end of file diff --git a/projects/modemax-perp-v2/index.js b/projects/modemax-perp-v2/index.js deleted file mode 100644 index 90d38037169..00000000000 --- a/projects/modemax-perp-v2/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - mode: { - tvl: gmxExports({ vault: '0xc3d266Af004B2556f2f900e88e9C73Ac42978AE6' }) - }, -}; diff --git a/projects/modemax-perp/index.js b/projects/modemax-perp/index.js deleted file mode 100644 index 4c85a95ab3f..00000000000 --- a/projects/modemax-perp/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExportsV2 } = require('../helper/gmx.js') - -module.exports = { - mode: { - tvl: gmxExportsV2({ eventEmitter: '0xd63352120c45378682d705f42a9F085E79E3c888', fromBlock: 25655, }) - } -} diff --git a/projects/modeswap/index.js b/projects/modeswap/index.js deleted file mode 100644 index 3a394fd58c2..00000000000 --- a/projects/modeswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - mode: { - tvl: getUniTVL({ factory: "0x50fd14f0eba5a678c1ebc16bdd3794f09362a95c", useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/mojitoswap/index.js b/projects/mojitoswap/index.js deleted file mode 100644 index 47c140bb5f3..00000000000 --- a/projects/mojitoswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { stakings } = require('../helper/staking') -const masterchefAddress = "0x25c6d6a65c3ae5d41599ba2211629b24604fea4f"; -const masterchefV2Address = "0xfdfcE767aDD9dCF032Cbd0DE35F0E57b04495324"; -const mjtAddress = ADDRESSES.kcc.MJT; - -module.exports = { - misrepresentedTokens: true, - methodology: - "We count liquidity and staking on the dexes, pulling data from subgraphs", - kcc: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x79855a03426e15ad120df77efa623af87bd54ef3', }), - staking: stakings([masterchefAddress, masterchefV2Address], mjtAddress), - }, -}; diff --git a/projects/mole/abi.json b/projects/mole/abi.json deleted file mode 100644 index 7da1b07d910..00000000000 --- a/projects/mole/abi.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "vaultDebtVal": "uint256:vaultDebtVal", - "token": "address:token", - "pid": "uint256:pid", - "reservePool": "uint256:reservePool", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "lpToken": "address:lpToken", - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)", - "xmoleTotalSupply": "uint256:supply" -} \ No newline at end of file diff --git a/projects/mole/index.js b/projects/mole/index.js deleted file mode 100644 index b2dbbb2255c..00000000000 --- a/projects/mole/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { calLyfTvl, calLyfTvlAptos, calLyfTvlSui } = require("./lyf"); -const { calxMOLEtvl } = require('./xmole'); - -// async function avaxTvl(timestamp, ethBlock, chainBlocks) { -// const lyfTvl = await calLyfTvl('avax', chainBlocks.avax); -// return {...lyfTvl}; -// } - -// async function avaxStaking(timestamp, ethBlock, chainBlocks) { -// return await calxMOLEtvl('avax', chainBlocks.avax); -// } - -async function aptosTvl(api) { - return calLyfTvlAptos(api) -} - -async function suiTvl(api) { - return calLyfTvlSui(api) -} - -// run command: node test.js projects/mole/index.js -module.exports = { - timetravel: false, - start: '2022-05-29', - // avax: { - // tvl: avaxTvl, - // staking: avaxStaking, - // }, - aptos: { tvl: aptosTvl }, - sui: { tvl: suiTvl } -}; diff --git a/projects/mole/lyf.js b/projects/mole/lyf.js deleted file mode 100644 index e8aa5fd1482..00000000000 --- a/projects/mole/lyf.js +++ /dev/null @@ -1,306 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const BigNumber = require("bignumber.js"); -const { coreTokensAptos } = require("../helper/chain/aptos"); -const { getResources } = require("../helper/chain/aptos"); -const { getConfig } = require('../helper/cache') -const { unwrapUniswapLPs, addUniV3LikePosition } = require("../helper/unwrapLPs"); -const sui = require('../helper/chain/sui') -const { i32BitsToNumber } = require("../helper/utils/tick"); - -async function getProcolAddresses(chain) { - // if (chain === 'avax') { - // return ( - // await getConfig('mole/'+chain, - // "https://raw.githubusercontent.com/Mole-Fi/mole-protocol/main/.avalanche_mainnet.json" - // ) - // ); - // } - - if(chain === 'aptos') { - return ( - await getConfig('mole/'+chain, - "https://raw.githubusercontent.com/Mole-Fi/mole-protocol/main/.aptos_mainnet.json" - ) - ); - }else if(chain === 'sui') { - return ( - // modify the hosts for raw.githubusercontent.com ip if it cannot be retrieved. - await getConfig('mole/'+chain, - "https://raw.githubusercontent.com/Mole-Fi/mole-protocol/main/.sui_mainnet.json" - ) - ); - } -} - -// avax -async function calLyfTvl(chain, block) { - /// @dev Initialized variables - const balances = {}; - const transform = addr => 'avax:'+addr - - /// @dev Getting all addresses from Github - const addresses = await getProcolAddresses(chain); - - for (let i = 0; i < addresses["Vaults"].length; i++) { - /// @dev getting balances that each of workers holding - const stakingTokenInfos = ( - await sdk.api.abi.multiCall({ - block, - abi: abi.userInfo, - calls: addresses["Vaults"][i]["workers"].map((worker) => { - return { - target: worker["stakingTokenAt"], - params: [worker["pId"], worker["address"]], - }; - }), - chain, - }) - ).output; - - /// @dev unwrap LP to get underlaying token balances for workers that are working with LPs - await unwrapUniswapLPs( - balances, - stakingTokenInfos - .map((info) => { - /// @dev getting LP address and return the object that unwrapUniswapLPs want - const lpAddr = addresses["Vaults"][i]["workers"].find( - (w) => w.address === info.input.params[1] - ).stakingToken; - return { - token: lpAddr, - balance: info.output.amount, - }; - }), - block, - chain, - transform - ); - } - - /// @dev getting all unused liquidity on each vault - const unusedBTOKEN = ( - await sdk.api.abi.multiCall({ - block, - abi: abi.balanceOf, - calls: addresses["Vaults"].map((v) => { - return { - target: v["baseToken"], - params: [v["address"]], - }; - }), - chain, - }) - ).output; - - unusedBTOKEN.forEach((u) => { - balances[transform(u.input.target.toLowerCase())] = BigNumber( - balances[transform(u.input.target.toLowerCase())] || 0 - ) - .plus(BigNumber(u.output)) - .toFixed(0); - }); - - return balances; -} - -// aptos -async function calLyfTvlAptos(api) { - /// @dev Initialized variables - /// @dev Getting all resources - const addresses = await getProcolAddresses('aptos'); - const resources = await getResources(addresses.Publisher); - - const lps = {}; - - const workers = {} - addresses.Vaults.flatMap(i => i.workers).map(i => { - workers[i.address.replace('0x0', '0x')] = true; - }); - - /// @dev getting balances that each of workers holding - sumPancakeWorkerStakingLps(resources, lps, workers); - - /// @dev unwrap LP to get underlaying token balances for workers that are working with LPs - await unwrapPancakeSwapLps({ - api, - lps, - account: '0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa', - poolStr: 'swap::TokenPairReserve', - token0Reserve: i => i.data.reserve_x, - token1Reserve: i => i.data.reserve_y - }) - - /// @dev getting all unused liquidity on each vault - resources.filter(i => i.type.includes("vault::VaultInfo")) - .map(i => { - const token = i.type.split('<')[1].replace('>',''); - api.add( token, new BigNumber(i.data.coin.value).minus(i.data.reserve_pool).toFixed(0)) - }) -} - -function sumPancakeWorkerStakingLps(resources, lps, workers) { - const workerInfos = resources.filter(i => - ( - i.type.includes("pancake_worker::WorkerInfo") || - i.type.includes("delta_neutral_pancake_asset_worker::WorkerInfo") || - i.type.includes("delta_neutral_pancake_stable_worker::WorkerInfo") - ) && workers[i.type.split('::',1)[0]] - ) - - workerInfos.forEach(i => { - let lpWithSuffix = i.type.split(", "); - lpWithSuffix = lpWithSuffix.splice(2, lpWithSuffix.length - 2).join(", "); - const lp = lpWithSuffix.substr(0, lpWithSuffix.length - 1); - const amount = new BigNumber(i.data.total_balance ?? i.data.total_lp_balance) - - if(lps[lp] === undefined) { - lps[lp] = { amount: amount } - } else { - lps[lp].amount = lps[lp].amount.plus(amount); - } - }) -} - -async function unwrapPancakeSwapLps({ - api, - lps, - account, - poolStr, - token0Reserve = i => i.data.coin_x_reserve.value, - token1Reserve = i => i.data.coin_y_reserve.value, - getTokens = i => i.type.split('<')[1].replace('>', '').split(', ') -}){ - const coinInfos = {} - const lpReserves = {} - for (const lpType in lps) { - if(lps.hasOwnProperty(lpType)){ - coinInfos[`0x1::coin::CoinInfo<${lpType}>`] = lpType; - const tokens = getTokens({type: lpType}) - lpReserves[`${account}::${poolStr}<${tokens[0]}, ${tokens[1]}>`] = lpType; - } - } - - let pools = await getResources(account); - let lpInfos = pools; - pools = pools.filter((i) => { - if(!i.type.includes(poolStr)){ - return false - } - - i.lpType = lpReserves[i.type] - return i.lpType !== undefined; - }); - lpInfos.forEach(i => { - const lpType = coinInfos[i.type]; - if(lpType){ - lps[lpType].totalSupply = new BigNumber(i.data.supply.vec[0].integer.vec[0].value) - } - }); - - pools.forEach(i => { - const reserve0 = token0Reserve(i) - const reserve1 = token1Reserve(i) - const [token0, token1] = getTokens(i) - const isCoreAsset0 = coreTokensAptos.includes(token0) - const isCoreAsset1 = coreTokensAptos.includes(token1) - const nonNeglibleReserves = reserve0 !== '0' && reserve1 !== '0' - const lp = lps[i.lpType]; - const balance0 = new BigNumber(reserve0).times(lp.amount).div(lp.totalSupply).toFixed(0); - const balance1 = new BigNumber(reserve1).times(lp.amount).div(lp.totalSupply).toFixed(0); - if (isNaN(balance0) && isNaN(balance1)) return - if (isCoreAsset0 && isCoreAsset1) { - api.add( token0, balance0) - api.add( token1, balance1) - } else if (isCoreAsset0) { - api.add( token0, balance0) - if (nonNeglibleReserves) - api.add( token0, balance0) - } else if (isCoreAsset1) { - api.add( token1, balance1) - if (nonNeglibleReserves) - api.add( token1, balance1) - } - }) -} - -// sui -async function calLyfTvlSui(api) { - // calculate the Farming TVL. - - // @dev Getting all resources - const addresses = await getProcolAddresses('sui'); - const workerInfoIds = addresses.Vaults.flatMap(valut => valut.workers).map(worker => worker.workerInfo) - const workerInfos = await sui.getObjects(workerInfoIds) - const workerEntities = addresses.Vaults.flatMap(valut => valut.workers) - - const poolIdSet = new Set( - workerInfos.map((workerInfo) => { - const workerId = workerInfo?.fields?.id?.id; - const entity = workerEntities.find(({ workerInfo: w }) => w === workerId); - if (!entity) return null; - - return entity.isSF - ? workerInfo.fields.clmm_pool_id - : workerInfo.fields.position_nft?.fields?.pool; - }).filter(Boolean) - ); - - const poolIds = Array.from(poolIdSet); - const poolInfos = await sui.getObjects(poolIds); - const poolMap = new Map(poolInfos.map((poolInfo) => [poolInfo.fields.id.id, poolInfo])); - - for (const workerInfo of workerInfos) { - const workerId = workerInfo?.fields?.id?.id; - const workerEntity = workerEntities.find(({ workerInfo: w }) => w === workerId); - if (!workerEntity) continue; - - const isSF = workerEntity.isSF; - const nftFields = isSF - ? workerInfo.fields.stable_farming_position_nft?.fields?.clmm_postion?.fields - : workerInfo.fields.position_nft?.fields; - - if (!nftFields) continue; - - const liquidity = nftFields.liquidity; - const tickLower = i32BitsToNumber(nftFields.tick_lower_index?.fields?.bits); - const tickUpper = i32BitsToNumber(nftFields.tick_upper_index?.fields?.bits); - const poolId = isSF - ? workerInfo.fields.clmm_pool_id - : nftFields.pool; - - const poolInfo = poolMap.get(poolId); - if (!poolInfo) continue; - - const currentSqrtPrice = poolInfo.fields.current_sqrt_price; - // https://github.com/DefiLlama/DefiLlama-Adapters/pull/13512#issuecomment-2660797053 - const tick = Math.floor(Math.log((currentSqrtPrice / 2 ** 64) ** 2) / Math.log(1.0001)); - - const poolType = poolInfo.type?.replace('>', ''); - const tokens = poolType?.split('<')[1]?.split(', '); - if (!tokens || tokens.length !== 2) continue; - - const [token0, token1] = tokens; - - addUniV3LikePosition({ api, token0, token1, liquidity, tickLower, tickUpper, tick }); - } - - // calculate the Vault TVL. - const vaultInfoIds = addresses.Vaults.map(valut => valut.vaultInfo) - const vaultInfos = await sui.getObjects(vaultInfoIds) - - for (let i = 0; i < vaultInfos.length; i++) { - const baseToken = addresses.Vaults[i].baseToken - const tokenAmount = vaultInfos[i].fields.value.fields.coin - const vaultDebtVal = vaultInfos[i].fields.value.fields.vault_debt_val - const vaultAmount = parseInt(tokenAmount) + parseInt(vaultDebtVal) - api.add(baseToken, vaultAmount.toString()) - } -} - -module.exports = { - calLyfTvl, - calLyfTvlAptos, - calLyfTvlSui, -} - \ No newline at end of file diff --git a/projects/mole/xmole.js b/projects/mole/xmole.js deleted file mode 100644 index 914ffdd1044..00000000000 --- a/projects/mole/xmole.js +++ /dev/null @@ -1,37 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { getConfig } = require('../helper/cache') - -async function getProcolXMoleAddresses(chain) { - if (chain == "avax") { - return ( - await getConfig('xmole', - "https://raw.githubusercontent.com/Mole-Fi/mole-protocol-xmole/main/.avalanche_mainnet.json" - ) - ); - } -} - - -async function calxMOLEtvl(chain, block) { - const xmoleAddresses = await getProcolXMoleAddresses(chain); - - const xmoleTVL = ( - await sdk.api.abi.multiCall({ - block, - abi: abi.xmoleTotalSupply, - calls: [ - { - target: xmoleAddresses["xMOLE"], - }, - ], - chain, - }) - ).output; - const moleAddress = xmoleAddresses["Tokens"]["MOLE"]; - return { [`${chain}:${moleAddress}`]: xmoleTVL[0].output }; -} - -module.exports = { - calxMOLEtvl, -} \ No newline at end of file diff --git a/projects/molend/index.js b/projects/molend/index.js deleted file mode 100644 index 76d4ef15a0d..00000000000 --- a/projects/molend/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave') - -module.exports = { - mode: aaveExports("mode", "0xB6796E12ADC78993DB1a33Cedbc459a4A848ED69"), -} diff --git a/projects/molten-v4/index.js b/projects/molten-v4/index.js deleted file mode 100644 index 1313cce0736..00000000000 --- a/projects/molten-v4/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - core: { factory: '0x74EfE55beA4988e7D92D03EFd8ddB8BF8b7bD597', fromBlock: 15770796, isAlgebra: true }, -}) \ No newline at end of file diff --git a/projects/momentum/index.js b/projects/momentum/index.js deleted file mode 100644 index 2ae95196242..00000000000 --- a/projects/momentum/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const EVENT_FILTER = - "0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::create_pool::PoolCreatedEvent"; - -async function momentumTVL(api) { - const poolIds = await sui.queryEvents({ - eventType: EVENT_FILTER, - transform: (i) => i.pool_id, - }); - const pools = await sui.getObjects(poolIds); - pools.forEach((i) => { - const [token0, token1] = i.type.split("<")[1].replace(">", "").split(", "); - api.add(token0, i.fields.reserve_x); - api.add(token1, i.fields.reserve_y); - }); -} - -module.exports = { - timetravel: false, - methodology: "Collects TVL for all CLMM pools created on Momentum", - sui: { - tvl: momentumTVL, - }, -}; diff --git a/projects/momodrome/index.js b/projects/momodrome/index.js deleted file mode 100644 index a5c5b25c376..00000000000 --- a/projects/momodrome/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const CONFIG = { - dvm: { - factory: '0x6694eebf40924e04c952EA8F1626d19E7a656Bb7', - eventAbi: 'event NewDVM (address baseToken, address quoteToken, address creator, address pool)', - fromBlock: 193478 - }, - dsp: { - factory: '0xd0de7cA3298fff085E2cb82F8a861a0254256BA0', - eventAbi: 'event NewDSP(address baseToken, address quoteToken, address creator, address pool)', - fromBlock: 193478 - }, - gsp: { - factory: '0x2235bB894b7600F1a370fc595Ee5477999A30441', - eventAbi: 'event NewGSP(address baseToken, address quoteToken, address creator, address pool)', - fromBlock: 193478 - }, - dpp: { - factory: '0x297A4885a7da4AaeF340FABEd119e7a6E3f2BCe8', - eventAbi: 'event NewDPP (address baseToken, address quoteToken, address creator, address pool)', - fromBlock: 193478 - } -} - -const getMomoLogs = async (api, configKey, config) => { - const { factory: target, eventAbi, fromBlock } = config - const extrakey = `momo-${api.chain}-${configKey}` - const logs = await getLogs2({ api, extrakey, target, eventAbi, fromBlock, onlyArgs: true }) - if (!logs.length) return []; - return logs.map(log => [[log.baseToken, log.quoteToken], log.pool]); -} - -const tvl = async (api) => { - const { dvm, dsp, gsp, dpp} = CONFIG - - const tokens = await Promise.all([ - getMomoLogs(api, 'dvm', dvm), - getMomoLogs(api, 'dsp', dsp), - getMomoLogs(api, 'gsp', gsp), - getMomoLogs(api, 'dpp', dpp), - ]) - - const ownerTokens = tokens.filter(tokens => tokens.length > 0).flat() - return api.sumTokens({ ownerTokens, permitFailure: true }); -} - -module.exports = { - morph: { tvl } -} diff --git a/projects/monarchpay/index.js b/projects/monarchpay/index.js deleted file mode 100644 index 3124fe1a2ef..00000000000 --- a/projects/monarchpay/index.js +++ /dev/null @@ -1,8 +0,0 @@ - - - -module.exports = { - kava: { - tvl: () => ({}) - } -} \ No newline at end of file diff --git a/projects/mondrian/index.js b/projects/mondrian/index.js deleted file mode 100644 index 478473d5329..00000000000 --- a/projects/mondrian/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -const V2_ADDRESS = '0x48cD08ad2065e0cD2dcD56434e393D55A59a4F64'; // shared by all networks - -const config = { - abstract: { fromBlock: 1199036, }, -} - -Object.keys(config).forEach(chain => { - const { fromBlock } = config[chain] - module.exports[chain] = { - tvl: onChainTvl(V2_ADDRESS, fromBlock) - } -}) diff --git a/projects/moneta/index.js b/projects/moneta/index.js deleted file mode 100644 index 5b858509337..00000000000 --- a/projects/moneta/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { addressesUtxosAssetAll, getScriptsDatum } = require('../helper/chain/cardano/blockfrost') - -const usdm_count_nft_asset = "e319d8e6629ff7991c8ae4f8aec2e0f10463ebdf29b57d26d34914f65553444d5f434f554e54" -const count_address = "addr1wyl82v9qy06hsz50hqqdy0u6xw9hdewy7twjahgek2tpp7c0qajez" - -async function tvl(api) { - const utxo = (await addressesUtxosAssetAll(count_address, usdm_count_nft_asset))[0] - const datum_hash = utxo.data_hash - const datum = await getScriptsDatum(datum_hash) - const total_value_locked = datum.json_value.fields[0].int / 1_000_000 - api.addUSDValue(total_value_locked) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Gets the total circulating supply of USDM from the datum of the USDM counter UTxO.", - cardano: { - tvl - } -} \ No newline at end of file diff --git a/projects/moneyfi/index.js b/projects/moneyfi/index.js deleted file mode 100644 index ca8d3de5144..00000000000 --- a/projects/moneyfi/index.js +++ /dev/null @@ -1,143 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { function_view } = require("../helper/chain/aptos"); -const ADDRESSES = require("../helper/coreAssets.json"); - -async function get_tvl_aptos() { - const tvl = await function_view({ - functionStr: - "0x97c9ffc7143c5585090f9ade67d19ac95f3b3e7008ed86c73c947637e2862f56::vault::get_assets", - args: [], - type_arguments: [], - }); - - return tvl; -} - -const config = { - - ethereum: { - fundVault: "0x5E672Af2d78dAaBbe8A8bF52D4D921A5c2DD41a4", - dexBridgeVault: "0xf9139312E668EE8011F6c594ba24271eE5C913d5", - strategies: [ - "0x3448263b315E73bCAfC28296a41FE80E4Ae49AD6", - "0xc5224ba06A932b65909B6Fa53B263D5b84ba1c07", - ], - }, - - bsc: { - fundVault: "0x8Bd37E40273c5315fa6c26F8EAfFC9CcF0FDc9F8", - dexBridgeVault: "0x615A1f9a10400B972551Af5F377Ab43933c15462", - strategies: ["0xDB8E607156398b0ED714DA6674D640Dd5BE49170"], - }, - - base: { - fundVault: "0xf8Ff1f6dd407352205936b31Cbff2CAdB56573af", - dexBridgeVault: "0xb65c0A9b38C40Ac79E71BF1184De49293708FDFD", - strategies: [ - "0xE2e326496dc7A7bC75a10E3Fb29E52AdAFCB342c", - "0x4cb9289b27FAF51D1FC9E434D5384B376DbB48C0", - "0x21D5b4352878415846785B923622B504D65cd5DF" - ], - }, - - arbitrum: { - fundVault: "0xBC2be60668b0ed00D3E4fdDd8f2794bfDa566661", - dexBridgeVault: "0xe13fDaD37480502028987B70f104490eFE7ac176", - strategies: ["0x0d13f57F94f58b69E9Cd1335FB60Fea834dcb38f"], - }, - - optimism: { - fundVault: "0x7dd73b72c4F260E51b376d678f93efFe8387ffad", - dexBridgeVault: "0x1F18B8289a702F26625e0cb91DcACc48273F8526", - strategies: ["0x2840f364E1cB5f83B6158618E7aaFb0a0AEb6736"], - }, - - core: { - fundVault: "0x3448263b315E73bCAfC28296a41FE80E4Ae49AD6", - dexBridgeVault: "0x1B92EF64d4197690F9B8758f122585edc89d67C6", - strategies: ["0x948e4B1F0A199d6C27CD1118483a45843222F60C"], - }, - - soneium: { - fundVault: "0x1a842A4F6C9FaDA6230581cAfBE6619D4B3aBA7d", - dexBridgeVault: "0x952969Bf806F6b8c2FCF4FB375C60E8D4EA7209E", - strategies: ["0x57E04AB2Ca2cc69e69766cBe7EAc3A2db44c531b"], - }, -}; - -const stablecoins = { - ethereum: [ - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, // USDT - ], - bsc: [ - ADDRESSES.bsc.USDC, // USDC - ADDRESSES.bsc.USDT, // USDT - ], - - base: [ - ADDRESSES.base.USDC, //USDC - ADDRESSES.base.USDT, // USDT - ], - - arbitrum: [ - ADDRESSES.arbitrum.USDC_CIRCLE, // USDC - ADDRESSES.arbitrum.USDT, // USDT - ], - optimism: [ - ADDRESSES.optimism.USDC_CIRCLE, // USDC - ADDRESSES.optimism.USDT, // USDT - ], - core: [ - ADDRESSES.core.USDC, // USDC - ADDRESSES.core.USDT, // USDT - ], - soneium: [ - ADDRESSES.soneium.USDC, // USDC - "0x102d758f688a4C1C5a80b116bD945d4455460282", // USDT - ], -}; -const chainExports = {}; - -Object.keys(config).forEach((chain) => { - const chainConfig = config[chain]; - const tokens = stablecoins[chain]; - - chainExports[chain] = { - tvl: async (api) => { - await sumTokens2({ - api, - ownerTokens: [[tokens, chainConfig.fundVault]], - }); - - await sumTokens2({ - api, - ownerTokens: [[tokens, chainConfig.dexBridgeVault]], - }); - - for (const strategy of chainConfig.strategies) { - const total = await api.call({ - target: strategy, - abi: "function totalAssets() view returns (uint256)", - }); - api.add(tokens[0], total); - } - }, - }; -}); - -chainExports.aptos = { - tvl: async (api) => { - const [addresses, amounts] = await get_tvl_aptos(); - for (let i = 0; i < addresses.length; ++i) { - api.add(addresses[i], amounts[i]); - } - }, -}; - -module.exports = { - ...chainExports, - timetravel: true, - methodology: - "TVL counts stablecoins in fundVault, dexBridgeVault, and all strategies contracts.", -}; diff --git a/projects/moneymates/index.js b/projects/moneymates/index.js deleted file mode 100644 index a8971b261de..00000000000 --- a/projects/moneymates/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0xFD2023a463Ff177dA35e3C8128bf7E51a6e439DB"; - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }); -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - era: { - tvl, - }, -}; diff --git a/projects/moneyonchain.js b/projects/moneyonchain.js deleted file mode 100644 index ec4fe9dcb21..00000000000 --- a/projects/moneyonchain.js +++ /dev/null @@ -1,24 +0,0 @@ -// Money on Chain exists on the RSK chain -// Based on four tokens: -// The DoC, a USD price pegged Stablecoin token. -// The BPro (Bitpro) a token designed for BTC hodlers, to earn a rent on Bitcoin and gain free leverage. -// The BTCx, a token that represents a leveraged long bitcoin holding position. -// The MoC token, designed to govern a decentralized autonomous organization (DAO) that will govern the Smart Contracts. - - -// Various API endpoints: https://api.moneyonchain.com/api/report/ - -// stats from https://moneyonchain.com/stats/ -const ADDRESSES = require('./helper/coreAssets.json') - -async function tvl(api) { - const docCollateral = '0xf773b590af754d597770937fa8ea7abdf2668370' - return api.sumTokens({ owner: docCollateral, tokens: [ADDRESSES.null]}) -} - -module.exports = { - methodology: `TVL accounts for Total rBTC in the system`, - rsk: { - tvl, - } -} \ No newline at end of file diff --git a/projects/moneyrainfinance/index.js b/projects/moneyrainfinance/index.js deleted file mode 100644 index 617e9e9b0d8..00000000000 --- a/projects/moneyrainfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0xa1E756016D27E22eCA181D2dC1f6Bb462BbA199E', - nativeToken: '0x9ce66Ef13D88cb1bC567E47459841483c5d9457C' -}) \ No newline at end of file diff --git a/projects/monocerus/index.js b/projects/monocerus/index.js deleted file mode 100644 index 90bebaf1e3b..00000000000 --- a/projects/monocerus/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - avax: { factory: "0x8d312c2B300239B84c304B5af5A3D00cBF0803F6", fromBlock: 31524862, }, - manta: { factory: "0x481F4b658d1447A9559B220640Fb79C2B993032A", fromBlock: 743017, }, -}); \ No newline at end of file diff --git a/projects/monolend/index.js b/projects/monolend/index.js deleted file mode 100644 index 0e6b0815f55..00000000000 --- a/projects/monolend/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { aaveExports, methodology, } = require("../helper/aave"); - -module.exports = { - methodology, - polygon: aaveExports('polygon', '0x49Ce0308F3F55955D224453aECe7610b6983c123'), -}; diff --git a/projects/monolith/abis.json b/projects/monolith/abis.json deleted file mode 100644 index 02d452e5496..00000000000 --- a/projects/monolith/abis.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "lens": { - "poolsInfo": "function poolsInfo() view returns (tuple(address id, string symbol, bool stable, address token0Address, address token1Address, address gaugeAddress, address bribeAddress, address[] bribeTokensAddresses, address fees, uint256 totalSupply, address feeDistAddress)[])", - "poolsReservesInfo": "function poolsReservesInfo(address[] pools) view returns (tuple(address id, address token0Address, address token1Address, uint256 token0Reserve, uint256 token1Reserve, uint8 token0Decimals, uint8 token1Decimals)[])", - "veTokensIdsOf": "function veTokensIdsOf(address owner) view returns (uint256[] tokens)" - }, - "gauge": { - "balanceOf": "function balanceOf(address owner) view returns (uint256 balance)" - }, - "vesolid": { - "locked": "function locked(uint256) view returns (int128 amount, uint256 end)" - } -} diff --git a/projects/monolith/index.js b/projects/monolith/index.js deleted file mode 100644 index 5d284a50fa2..00000000000 --- a/projects/monolith/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ABI = require("./abis.json") - -const vesolidAddress = "0x77730ed992D286c53F3A0838232c3957dAeaaF73"; -const solidAddress = "0x777172D858dC1599914a1C4c6c9fC48c99a60990"; -const solidlyLensAddress = "0x7778D2091E3c97a259367c2cfc621cF839Bbbe2c"; -const lpDepositor = "0x822ef744c568466d40ba28b0f9e4a4961837a46a"; - -async function tvl(api) { - const balances = {}; - - const addBalance = (tokenAddress, amount) => sdk.util.sumSingleBalance(balances, tokenAddress, amount, api.chain) - - const poolsInfo = await api.call({ - target: solidlyLensAddress, - abi: ABI.lens.poolsInfo, - }); - - const poolsReservesInfo = await api.call({ - params: [poolsInfo.map((p) => p.id)], - target: solidlyLensAddress, - abi: ABI.lens.poolsReservesInfo, - }); - - const depositorPoolBalances = await api.multiCall({ - calls: poolsInfo.map((p) => ({ - target: p.gaugeAddress, - params: [lpDepositor], - })), - abi: ABI.gauge.balanceOf, - }); - - for (let i = 0; i < poolsInfo.length; i++) { - const poolInfo = poolsInfo[i]; - const poolReservesInfo = poolsReservesInfo[i]; - const depositorBalance = depositorPoolBalances[i] - - const shareOfTotalSupply =depositorBalance / poolInfo.totalSupply - let token0Reserve =poolReservesInfo.token0Reserve * shareOfTotalSupply - let token1Reserve =poolReservesInfo.token1Reserve * shareOfTotalSupply - - addBalance(poolInfo.token0Address, token0Reserve); - addBalance(poolInfo.token1Address, token1Reserve); - } - - const veTokenIds = await api.call({ abi: ABI.lens.veTokensIdsOf, target: solidlyLensAddress, params: lpDepositor}) - const amounts = await api.multiCall({ abi: ABI.vesolid.locked, calls: veTokenIds, target: vesolidAddress}) - amounts.forEach(i => addBalance(solidAddress, i.amount)) - - return balances; -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl, - }, -}; diff --git a/projects/monopoly-finance/abi.json b/projects/monopoly-finance/abi.json deleted file mode 100644 index ba25caa69eb..00000000000 --- a/projects/monopoly-finance/abi.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, address strategy, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accEarningPerShare, uint256 totalShares, uint256 lpPerShare, uint16 depositFeeBP, uint16 withdrawFeeBP, bool isWithdrawFee)", - "poolLength": "uint256:poolLength", - "totalSupply": "uint256:totalSupply", - "getReserves": "function getReserves() view returns (uint256 _reserve0, uint256 _reserve1)", - "getAssets": "function getAssets() view returns (address[] assets)", - "token0": "address:token0", - "token1": "address:token1", - "getTotalAmounts": "function getTotalAmounts() view returns (uint256 totalAmount0, uint256 totalAmount1)" -} diff --git a/projects/monopoly-finance/index.js b/projects/monopoly-finance/index.js deleted file mode 100644 index 5dcd0e1a015..00000000000 --- a/projects/monopoly-finance/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { staking } = require("../helper/staking"); -const abi = require("./abi.json"); -const { unwrapLPsAuto } = require("../helper/unwrapLPs"); -const chef = "0x2900f5E68cD57b712806f60096514A4D3F772E9D"; -const poly = "0x34772C4D12F288368Aa35AE7bc527A6B2b3e8906".toLowerCase(); -const ACC_POLY_PRECISION = 1e18; - -async function getTokensInMasterChef(api) { - const poolInfo = await api.fetchList({ - lengthAbi: abi.poolLength, - itemAbi: abi.poolInfo, - target: chef, - }); - - poolInfo.forEach((pool) => { - let { lpToken, totalShares, lpPerShare } = pool; - lpToken = lpToken.toLowerCase(); - if (lpToken === poly) { - return; - } - let bals = (totalShares * lpPerShare) / ACC_POLY_PRECISION; - api.add(lpToken, bals); - }); - await unwrapLPsAuto({ - api, - lpAddresses: poolInfo.map((p) => p.lpToken), - block: api.block, - }); -} -module.exports = { - methodology: - "TVL includes all farms in MasterChef contract, as well as staking pools.", - arbitrum: { - tvl: getTokensInMasterChef, - staking: staking("0xF30489AdB76745BFb201023403B5E1bCcb216354", poly), - }, -}; diff --git a/projects/monoswap-v2/index.js b/projects/monoswap-v2/index.js deleted file mode 100644 index 6fd811732a5..00000000000 --- a/projects/monoswap-v2/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('blast', '0xE27cb06A15230A7480d02956a3521E78C5bFD2D0') \ No newline at end of file diff --git a/projects/monoswap-v3/index.js b/projects/monoswap-v3/index.js deleted file mode 100644 index 10e814eb5ce..00000000000 --- a/projects/monoswap-v3/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ blast: { factory: "0x48d0F09710794313f33619c95147F34458BF7C3b", fromBlock: 172327, }, }) \ No newline at end of file diff --git a/projects/monox/index.js b/projects/monox/index.js deleted file mode 100644 index 3252b85a777..00000000000 --- a/projects/monox/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - hallmarks: [ - [1669766400, "swap contract exploit"] - ], - ethereum: { - tvl: sumTokensExport({ - owner: '0x59653E37F8c491C3Be36e5DD4D503Ca32B5ab2f4', tokens: [ - "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", - "0x92e187a03b6cd19cb6af293ba17f2745fd2357d5", - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC - ] - }) - }, - polygon: { - tvl: sumTokensExport({ - owner: '0x3826367A5563eCE9C164eFf9701146d96cC70AD9', tokens: [ - ADDRESSES.polygon.WBTC, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.WMATIC_2, - ] - }) - } -} \ No newline at end of file diff --git a/projects/monprotocol/index.js b/projects/monprotocol/index.js deleted file mode 100644 index a0aa6bdbcac..00000000000 --- a/projects/monprotocol/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require('../helper/staking') -const tokenAddress = '0xc555D625828c4527d477e595fF1Dd5801B4a600e'; -const stakingContracts = [ - '0x65A8b32bc4dE5E0156DBa85Ce615d9ef8ea59780', - '0xd0c40b774ecfBc7B0632d23F871Cc0E523aad8F3', - '0xa305A8C63a5305Cc2D4d58c41F1d7C662C95475b', - '0x57136E05e6b1F502bd56B5439fCC1039A8250ED2' -] -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(stakingContracts, tokenAddress), - }, - methodology: 'Counts the balance of staked tokens in the staking, claims, and rewards registry.', -}; diff --git a/projects/monroeprotocol/index.js b/projects/monroeprotocol/index.js deleted file mode 100644 index 33cdc7bd785..00000000000 --- a/projects/monroeprotocol/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { createIncrementArray } = require("../helper/utils"); -const { getLogs } = require('../helper/cache/getLogs') - -const V1_CHAINS = ["ethereum", "manta", "avax"] -const V2_CHAINS = ["manta", "avax"] -const CHAINS = [...new Set([...V2_CHAINS,...V1_CHAINS])] - -// Where possible contracts are deployed using deterministic addresses -const V1_ADDRESSES = { - controller: "0xb2E609ef662889a32452598F0131863035974878", - monusd: "0xDf3d57c3480951958Cef19905E4cf7FC1bA9ad42" -} -const V1_SPECIAL_ADDRESSES = { - zklink: { - controller: "0xD620b0613568406F427a6f5d4ecA301870a1A3d5", - monusd: "0x051baaA86328Fc7F522431932B8010F66f260A6a" - } -} -const DETERMINISTIC_roeUSD = "0x87196DB491ee1C77B91853CB79C118A322d6A9c0" -// V2 addresses -const V2_ADDRESSES = { - manta: "0xF88DF111343BffE7a2d89FB770d77A264d53f043", - avax: "0xF88DF111343BffE7a2d89FB770d77A264d53f043", - arbitrum: DETERMINISTIC_roeUSD, - ethereum: DETERMINISTIC_roeUSD -} - -async function tvl(api) { - const owners = [] - const tokens = [] - - // V1 - if (V1_CHAINS.indexOf(api.chain) > -1){ - const addresses = V1_SPECIAL_ADDRESSES.hasOwnProperty(api.chain) ? V1_SPECIAL_ADDRESSES[api.chain] : V1_ADDRESSES - const vaultLength = await api.call({ abi: "uint:getVaultsLength", target: addresses.controller }) - const vaultCalls = createIncrementArray(vaultLength) - - const vaults = await api.multiCall({ abi: "function mintVaults(uint vaultId) view returns (address)", calls: vaultCalls, target: addresses.monusd}) - const _tokens = await api.multiCall({ abi: 'address:collateralAsset', calls: vaults}) - tokens.push(..._tokens) - owners.push(...vaults) - } - - // V2 - if (V2_CHAINS.indexOf(api.chain) > -1) { - const vaultLengthV2 = await api.call({ abi: "uint:getVaultsLength", target: V2_ADDRESSES[api.chain] }) - const vaultCallsV2 = createIncrementArray(vaultLengthV2) - const vaultsV2 = await api.multiCall({ abi: "function vaults(uint vaultId) view returns (address)", calls: vaultCallsV2, target: V2_ADDRESSES[api.chain]}) - - const _tokensV2 = await api.multiCall({ abi: 'address:collateralAsset', calls: vaultsV2}) - tokens.push(..._tokensV2) - owners.push(...vaultsV2) - } - - return api.sumTokens({ tokensAndOwners2: [tokens, owners]}) -} - - -module.exports = { - methodology: - "Adds up the total value locked as collateral in Monroe vaults", - start: '2024-03-13', // March 13, 2024 00:00 GMT - hallmarks: [ - [1722000000, "V2 Launch"] - ], -}; - -CHAINS.forEach((chain) => { - module.exports[chain] = { tvl }; -}); \ No newline at end of file diff --git a/projects/monster/index.js b/projects/monster/index.js deleted file mode 100644 index 54c3631c784..00000000000 --- a/projects/monster/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { pool2 } = require('../helper/pool2') -const { staking } = require('../helper/staking') -const MST_TOKEN_CONTRACT = "0x152888854378201e173490956085c711f1DeD565"; -const VE_CONTRACT = "0xc8034b3dF18Ea4d607E86D6b6Bf23E2A8Ed70F89"; -const LP_POOL_1 = "0x1a88e447c7468b28de490b25a076a4ffc0c68b16"; -const LP_STAKING_1 = "0x06bFdfF7366DE711F363105F446f8399663db749"; -const LP_POOL_2 = "0x1f5c5b104d6246B3d096135806cd6C6e53e206F1"; -const LP_STAKING_2 = "0xc13926C5CB2636a29381Da874b1e2686163DC226"; - -module.exports = { - methodology: - "counts the number of MST tokens in the ve contract and the pairs in the staking pool", - fantom: { - tvl: async () => ({}), - pool2: pool2([LP_STAKING_1, LP_STAKING_2], [LP_POOL_1, LP_POOL_2]), - staking: staking(VE_CONTRACT, MST_TOKEN_CONTRACT), - }, -}; diff --git a/projects/monstro-fun/index.js b/projects/monstro-fun/index.js deleted file mode 100644 index 3a3a2b77a52..00000000000 --- a/projects/monstro-fun/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const BASE_CONTRACT = '0x813303b6F253C74D997020518227f87Ff721F53F'; -// 0xdbe214c863d6b2ecf5d79012e5d03aab09c57e28 -const ABI_GOLEMZ = "function golemzLatestStats() view returns (uint256 totalInvested, uint256 currentTVL, uint256 insurance, uint256 totalPaidOut)"; // 0x07f2a4b640d0c780d52d476ac2b674d8a22bc1b1 -const ABI_POOLZ = "function poolzLatestStats() view returns (uint256 totalInvested, uint256 currentTVL, uint256 insurance, uint256 totalPaidOut)"; // 0x4d0eb0e7e851787065f694b2e12e75bfa97be08e - -async function getInvestedValue(api, contractAddress, abi) { - const response = await api.call({ target: contractAddress, abi, }); - - return api.add(ADDRESSES.base.USDC, response.totalInvested) -} - -async function tvl(api) { - await getInvestedValue(api, BASE_CONTRACT, ABI_GOLEMZ); - await getInvestedValue(api, BASE_CONTRACT, ABI_POOLZ); -} - -module.exports = { - methodology: 'Sums the total invested value from farmz, golemz, and poolz contracts based on their respective latestStats functions.', - hallmarks: [[1734804000, "BSC->Base ecosystem migration"]], - misrepresentedTokens: true, - base: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/moola/index.js b/projects/moola/index.js deleted file mode 100644 index 7aa7b30e58f..00000000000 --- a/projects/moola/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { aaveExports } = require('../helper/aave') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { mergeExports } = require('../helper/utils') - -const v1PoolCore = "0xAF106F8D4756490E7069027315F4886cc94A8F73" - -const v1Exports = { - borrowed: async (api) => { - const tokens = await api.call({ abi: "address[]:getReserves", target: v1PoolCore }) - const bals = await api.multiCall({ abi: "function getReserveTotalBorrows(address _reserve) view returns (uint256)", calls: tokens, target: v1PoolCore }) - api.add(tokens, bals) - return api.getBalances() - }, - tvl: async (api) => { - const tokens = await api.call({ abi: "address[]:getReserves", target: v1PoolCore }) - return sumTokens2({ api, owner: v1PoolCore, tokens, }) - }, -} -const v2Exports = aaveExports('', "0xF03982910d17d11670Dc3734DD73292cC4Ab7491", undefined, ["0x43d067ed784D9DD2ffEda73775e2CC4c560103A1"]) - -// v2 addresses on https://github.com/moolamarket/moola-v2/commit/ab273248af81aa743310b4fd48533462aefe39e9 -module.exports = mergeExports([{ - methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", - celo: v1Exports -}, { celo: v2Exports }]) \ No newline at end of file diff --git a/projects/moon-swap/index.js b/projects/moon-swap/index.js deleted file mode 100644 index 51dad224e5f..00000000000 --- a/projects/moon-swap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { get } = require('../helper/http') -const { toUSDTBalances } = require('../helper/balances'); - -const baseUrl = "https://moonswap.fi/api/route/opt/swap/dashboard/global-data"; - -async function tvl() { - const response = (await get(baseUrl)).data; - return toUSDTBalances(response.uniswapFactories[0].totalLiquidityUSD) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - conflux: { - tvl, - } -}; diff --git a/projects/moonbase.js b/projects/moonbase.js deleted file mode 100644 index 3947242dc43..00000000000 --- a/projects/moonbase.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("./helper/unknownTokens"); -module.exports = { - methodology: `Uses factory(0x44B678F32a2f6aBB72eeFA2df58f12D17c3eD403) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - misrepresentedTokens: true, - arbitrum: { - tvl: getUniTVL({ - factory: "0x44B678F32a2f6aBB72eeFA2df58f12D17c3eD403", - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/moonbase/index.js b/projects/moonbase/index.js deleted file mode 100644 index 6ab3af028b5..00000000000 --- a/projects/moonbase/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - methodology: - "Uses Uniswap-style factory address to find and price liquidity pairs.", - base: { - tvl: getUniTVL({ - factory: "0xe396465A85deDB00FA8774162B106833dE51Ea41", - }), - }, -}; diff --git a/projects/mooncakefi/index.js b/projects/mooncakefi/index.js deleted file mode 100644 index e20d11bdf43..00000000000 --- a/projects/mooncakefi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -module.exports = { - linea: aaveExports("linea", undefined, undefined, [ - "0x593C2d762B1CDe79101D946Ca7816eeaF17Ad744", - ]), - base: aaveExports("base", undefined, undefined, [ - "0x32aB5e8ad83d4afbEe7103d7ed4A9CAF7B76F195", - ]), -}; diff --git a/projects/moonchainswap/index.js b/projects/moonchainswap/index.js deleted file mode 100644 index 4db195ad488..00000000000 --- a/projects/moonchainswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getUniTVL} = require("../helper/cache/uniswap"); - -module.exports = { - mxczkevm: { - tvl: getUniTVL({ factory: "0x8bC7cf83f5F83781Ec85B78d866222987Ae24657", useDefaultCoreAssets: true }) - } -} \ No newline at end of file diff --git a/projects/moondao/index.js b/projects/moondao/index.js deleted file mode 100644 index 475529c8dd8..00000000000 --- a/projects/moondao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0xeC2aE8A3E2692E4b0836AB5cf88104d101DEBEf4" -module.exports.hallmarks=[ - [1639180800,"Rug Pull"] -], -module.exports = ohmTvl(treasury, [ - //DAI - ["0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844", false], - //USDC - [ADDRESSES.moonriver.USDC, false], - //solarbeam LP - ["0xdbf638d800190271f5473e76898c6c8e741cba51", true], - ], "moonriver", "0x534F861B6BaFdF030E5b469D2d763834163f522f", "0x761cb807bFbF14A4f4bA980f29F43F009F6a18c0") \ No newline at end of file diff --git a/projects/moonflowerfarmers/index.js b/projects/moonflowerfarmers/index.js deleted file mode 100644 index 27f8f2bc331..00000000000 --- a/projects/moonflowerfarmers/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const MFF = "0x78b65477bba78fc11735801d559c386611d07529"; -const contract = "0xDE707357D10D86aE21373b290eAbBA07360896F6"; -const { staking } = require('../helper/staking') - -module.exports = { - aurora: { - tvl: () => ({}), - staking: staking(contract, MFF), - }, -}; diff --git a/projects/mooniswap/abi.json b/projects/mooniswap/abi.json deleted file mode 100644 index 02e1cc444d6..00000000000 --- a/projects/mooniswap/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getPool": "function allPools(uint256) view returns (address)", - "getAllPools": "address[]:getAllPools", - "getTokens": "address[]:getTokens" -} \ No newline at end of file diff --git a/projects/mooniswap/index.js b/projects/mooniswap/index.js deleted file mode 100644 index fc69326857a..00000000000 --- a/projects/mooniswap/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const factoryContract = "0x71CD6666064C3A1354a3B4dca5fA1E2D3ee7D303"; - -const ethTvl = async (api) => { - - const pools = await api.call({ abi: abi.getAllPools, target: factoryContract, }) - const res = await api.multiCall({ abi: abi.getTokens, calls: pools, }) - const ownerTokens = res.map((r, i) => [r, pools[i]]) - return sumTokens2({ ownerTokens, api }) -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - methodology: "Counts tvl on all AMM Pools through Factory Contract", -}; diff --git a/projects/moonlander/index.js b/projects/moonlander/index.js deleted file mode 100644 index 72e52b889f4..00000000000 --- a/projects/moonlander/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const abis = { - totalValue: 'function totalValue() view returns (tuple(address tokenAddress, int256 value, uint8 decimals, int256 valueUsd, uint16 targetWeight, uint16 feeBasisPoints, uint16 taxBasisPoints, bool dynamicFee)[])' -} -const config = { - cronos_zkevm: '0x02ae2e56bfDF1ee4667405eE7e959CD3fE717A05', - cronos: '0xE6F6351fb66f3a35313fEEFF9116698665FBEeC9', -} - -Object.keys(config).forEach(chain => { - const moonlander = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const info = await api.call({ abi: abis.totalValue, target: moonlander}) - return api.sumTokens({ owner: moonlander, tokens: info.map(i => i.tokenAddress), }) - } - } -}) \ No newline at end of file diff --git a/projects/moonlift/index.js b/projects/moonlift/index.js deleted file mode 100644 index 2a7e44da2aa..00000000000 --- a/projects/moonlift/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0xe9cABbC746C03010020Fd093cD666e40823E0D87', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/moonpot/index.js b/projects/moonpot/index.js deleted file mode 100644 index 193ee443418..00000000000 --- a/projects/moonpot/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - bsc: 'https://raw.githubusercontent.com/moonpotdev/moonpot-app/dev/src/config/vault/bsc.json', - fantom: 'https://raw.githubusercontent.com/moonpotdev/moonpot-app/dev/src/config/vault/fantom.json', - // polygon: 'https://raw.githubusercontent.com/moonpotdev/moonpot-app/dev/src/config/vault/polygon.json', -} -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const endpoint = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const data = await getConfig('moonpot/' + api.chain, endpoint) - const pools = data.map(i => i.prizePoolAddress).filter(i => i) - const tokens = await api.multiCall({ abi: 'address:token', calls: pools }) - const bals = await api.multiCall({ abi: 'uint256:accountedBalance', calls: pools }) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/moonswap/index.js b/projects/moonswap/index.js deleted file mode 100644 index b23e9ce2bcf..00000000000 --- a/projects/moonswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - moonriver: { - tvl: getUniTVL({ - factory: '0x056973f631a5533470143bb7010c9229c19c04d2', - useDefaultCoreAssets: true, - blacklist: [ - '0xfd301ca82d007880e678bb750a771550c5104ff2', // ANKR, bad decimal? - ] - }) - }, - misrepresentedTokens: true, -} \ No newline at end of file diff --git a/projects/moonthat-gg/index.js b/projects/moonthat-gg/index.js deleted file mode 100644 index 4c30d858d73..00000000000 --- a/projects/moonthat-gg/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - ethereum: { factory: '0x966983F93309D726a888adff08331ac81b522971', fromBlock: 20815952 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event CommunityLaunchCreated (address indexed singleton, bytes32 indexed coinId, address indexed proxy)', fromBlock, }) - const proxies = logs.map(log => log.proxy) - await api.sumTokens({ tokens: [ADDRESSES.null], owners: proxies }) // add ETH deposited to initial pool - const tokens = await api.multiCall({ abi: 'address:tokenAddress', calls: proxies }) - const utilities = await api.multiCall({ abi: 'address:MOONTHAT_UNISWAP_V3_UTILITY', calls: proxies }) - const vaults = await api.multiCall({ abi: 'address:moonThatUniswapV3Vault', calls: utilities }) - return sumTokens2({ api, owners: vaults, resolveUniV3: true, blacklistedTokens: tokens }) - } - } -}) \ No newline at end of file diff --git a/projects/moonwell-apollo/index.js b/projects/moonwell-apollo/index.js deleted file mode 100644 index 76e813457dd..00000000000 --- a/projects/moonwell-apollo/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const { staking } = require('../helper/staking') - -const moonriverConfig = { - comptroller: '0x0b7a0EAA884849c6Af7a129e899536dDDcA4905E', - nativeTokenMarket: '0x6a1A771C7826596652daDC9145fEAaE62b1cd07f', - - stakingContract: '0xCd76e63f3AbFA864c53b4B98F57c1aA6539FDa3a', - stakingTokenAddress: '0xBb8d88bcD9749636BC4D2bE22aaC4Bb3B01A58F1' -} - -const moonriverStaking = staking(moonriverConfig.stakingContract, moonriverConfig.stakingTokenAddress) - -module.exports = { - moonriver: { ...compoundExports2({ comptroller: moonriverConfig.comptroller, cether: '0x6a1a771c7826596652dadc9145feaae62b1cd07f' }), staking: moonriverStaking } -} diff --git a/projects/moonwell-vaults/index.js b/projects/moonwell-vaults/index.js deleted file mode 100644 index 676a36d3c13..00000000000 --- a/projects/moonwell-vaults/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getMorphoVaultTvl } = require("../helper/morpoho"); - -const baseConfig = { - governor: "0x8b621804a7637b781e2BbD58e256a591F2dF7d51", -} - -const optimismConfig = { - governor: "0x17C9ba3fDa7EC71CcfD75f978Ef31E21927aFF3d", -} - -module.exports = { - doublecounted: true, - base: { tvl: getMorphoVaultTvl(baseConfig.governor) }, - optimism: { tvl: getMorphoVaultTvl(optimismConfig.governor) }, -} diff --git a/projects/moonwell/index.js b/projects/moonwell/index.js deleted file mode 100644 index 46718db8f7f..00000000000 --- a/projects/moonwell/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const { staking } = require('../helper/staking'); - -const moonbeamConfig = { - comptroller: '0x8E00D5e02E65A19337Cdba98bbA9F84d4186a180', - nativeTokenMarket: '0x091608f4e4a15335145be0A279483C0f8E4c7955', - stakingContract: '0x8568A675384d761f36eC269D695d6Ce4423cfaB1', - stakingTokenAddress: '0x511aB53F793683763E5a8829738301368a2411E3' -} - -const moonbeamStaking = staking( moonbeamConfig.stakingContract, moonbeamConfig.stakingTokenAddress,) - -const baseStaking = staking('0xe66E3A37C3274Ac24FE8590f7D84A2427194DC17', - '0xa88594d404727625a9437c3f886c7643872296ae'); - -const baseConfig = { - comptroller: '0xfBb21d0380beE3312B33c4353c8936a0F13EF26C', -} - -const optimismConfig = { - comptroller: '0xCa889f40aae37FFf165BccF69aeF1E82b5C511B9', -} - -module.exports = { - moonbeam: compoundExports2({ comptroller: moonbeamConfig.comptroller, cether: '0x091608f4e4a15335145be0a279483c0f8e4c7955' }), - base: compoundExports2({ comptroller: baseConfig.comptroller, }), - optimism: compoundExports2({ comptroller: optimismConfig.comptroller, }), - hallmarks: [[1659312000, 'Nomad Bridge Exploit']] -} - -module.exports.moonbeam.staking = moonbeamStaking -module.exports.base.staking = baseStaking \ No newline at end of file diff --git a/projects/moose/index.js b/projects/moose/index.js deleted file mode 100644 index e3cf6231387..00000000000 --- a/projects/moose/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { drift: { vaultTvl } } = require("../helper/chain/rpcProxy"); -const { VAULTS } = require("./vaults"); - -module.exports = { - timetravel: false, - doublecounted: true, - methodology: "TVL is calculated by summing net value asset in vaults.", - solana: { - tvl, - }, -}; - -async function tvl(api) { - for (const vault of VAULTS) { - const netValue = await vaultTvl(vault.address, vault.version); - api.add(vault.underlying, netValue); - } -} \ No newline at end of file diff --git a/projects/moose/vaults.js b/projects/moose/vaults.js deleted file mode 100644 index c74843fdf8e..00000000000 --- a/projects/moose/vaults.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const VAULTS = [ - { - name: "Cheese", - address: "Ec8qEzgk38jZ2o53CZibEjAxfYpTM6bWcmx3HU7HiKPp", - underlying: ADDRESSES.solana.USDC, - }, - { - name: "Butter", - address: "6Q3Nv9E5aP1W6eL4tGCXZ7wtXaQi26MNf1mkPuWe28yB", - underlying: ADDRESSES.solana.USDC, - }, - { - name: "Honey", - address: "HBiPWWHHADnF2mikxZT8WhZ2w6x4grK6QfvJ2aRJSndD", - underlying: ADDRESSES.solana.USDC, - }, - { - name: "Hot Chili", - address: "3FCAfteim17Ny5j63Ey3wAiX9iz3GUwe6yEYsQVnjagV", - underlying: ADDRESSES.solana.USDC, - }, - { - name: "Caesar", - address: "6Mm4hi6XeF6yp7pUczjN5hGW1rZjdsu3QFvYZNgB1upw", - underlying: ADDRESSES.solana.USDC, - }, -] - -module.exports = { VAULTS } \ No newline at end of file diff --git a/projects/moraswap-v3/index.js b/projects/moraswap-v3/index.js deleted file mode 100644 index 67d7c38a920..00000000000 --- a/projects/moraswap-v3/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - neon_evm: { - factory: '0x58122246F7e33669cde3486Dd72f95c2e886E375', - fromBlock: 237396579, - isAlgebra: false, - } -}) diff --git a/projects/moraswap/index.js b/projects/moraswap/index.js deleted file mode 100644 index efcf9e3ca0c..00000000000 --- a/projects/moraswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingUnknownPricedLP } = require('../helper/staking.js') - -const dexTVL_neon = getUniTVL({ factory: '0xd43F135f6667174f695ecB7DD2B5f953d161e4d1', useDefaultCoreAssets: true }) - -module.exports = { - misrepresentedTokens: true, - neon_evm: { - tvl: dexTVL_neon, - staking: stakingUnknownPricedLP("0xa3da566fdE97c90c08052f612BdBed8F3B8004B7", "0x2043191e10a2A4b4601F5123D6C94E000b5d915F", 'neon_evm', '0xe6faaf048b2A9b9Bf906aBdD8623811458d81Cf3'), - } -}; - - diff --git a/projects/more-markets/index.js b/projects/more-markets/index.js deleted file mode 100644 index 5183d08bf05..00000000000 --- a/projects/more-markets/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { aaveExports } = require('../helper/aave'); -const { mergeExports } = require("../helper/utils"); - -module.exports = { - methodology: `Collateral (supply minus borrows) in the balance of the MORE Markets contracts`, -}; - -const config = { - flow: { - moreAaveForkMarkets: ["0x79e71e3c0EDF2B88b0aB38E9A1eF0F6a230e56bf", "0xF580F6F3A2223Db22294c2241c7e0Cc401d20659"], - }, -}; - -Object.keys(config).forEach((chain) => { - const { moreAaveForkMarkets = [] } = config[chain]; - - const chainObjects = [] - moreAaveForkMarkets.forEach((i) => { - chainObjects.push(aaveExports(chain, '', undefined, [i], { v3: true })) - }) - - module.exports[chain] = mergeExports(chainObjects.map(i => ({ [chain]: i })))[chain] -}) \ No newline at end of file diff --git a/projects/more-vaults/index.js b/projects/more-vaults/index.js deleted file mode 100644 index 990f675d148..00000000000 --- a/projects/more-vaults/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const config = { - flow: { - moreVaultsRegistries: ["0xd640db4Ae39b32985CcF91770efd31b9f9b5A419"], - }, -}; - -async function tvl(api) { - const { moreVaultsRegistries } = config[api.chain] || {}; - - if (!moreVaultsRegistries?.length) return {}; - - const vaultArrays = await api.multiCall({ - abi: 'function getDeployedVaults() external view returns (address[])', - calls: moreVaultsRegistries, - }); - - const allVaults = vaultArrays.flat(); - - if (!allVaults.length) return {}; - - // More Vaults uses EIP-2535 Diamond architecture with ERC4626-compatible facets - await api.erc4626Sum({ - calls: allVaults, - tokenAbi: 'address:asset', - balanceAbi: 'uint256:totalAssets' - }); - - return api.getBalances(); -} - -module.exports = { - methodology: "TVL is calculated by summing the total assets of all EIP-2535 Diamond vaults deployed through the More Vaults registry contracts on Flow. Each Diamond vault implements ERC4626-compatible facets for asset management and yield generation.", - flow: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/moremarketsxyz/addresses.js b/projects/moremarketsxyz/addresses.js deleted file mode 100644 index db13af10fb1..00000000000 --- a/projects/moremarketsxyz/addresses.js +++ /dev/null @@ -1,12 +0,0 @@ -// MoreMarkets contract addresses -module.exports = { - // XRPL - XRP_MPC_ADDRESS: 'rPRcZswAjfHzUbCj44YzFhNdB1c8Yux5aT', - - // Ethereum - TERM_RLUSD_VAULT: '0xb962fd1aBd9A365140493Bd499AcF1eC0AcfF040', - RLUSD_TOKEN: '0x8292Bb45bf1Ee4d140127049757C2E0fF06317eD', - - // RPC Endpoints - RIPPLE_ENDPOINT: 'https://s1.ripple.com:51234', -} diff --git a/projects/moremarketsxyz/index.js b/projects/moremarketsxyz/index.js deleted file mode 100644 index c19c1a907f7..00000000000 --- a/projects/moremarketsxyz/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { post } = require('../helper/http') -const { XRP_MPC_ADDRESS, TERM_RLUSD_VAULT, RLUSD_TOKEN, RIPPLE_ENDPOINT } = require('./addresses') - -// ───────────────────────────────────────────────────────────────────────────── -// MoreMarkets DeFiLlama adapter -// -// How we compute TVL (high-level): -// • XRP path ("xrp"): We return the XRP balance (in DROPS) of our XRP MPC wallet -// • Ethereum path ("rlusd"): We return RLUSD held by the Term Strategy RLUSD Vault, -// reported as ERC-4626 totalAssets() in WEI under the RLUSD ERC-20 address -// -// - Term RLUSD Vault (app link): https://app.term.finance/vaults/0xb962fd1abd9a365140493bd499acf1ec0acff040/1 - -// -// Full methodology & FAQs: https://www.moremarkets.xyz/blog/moremarkets-xrp-earn-account-protocol-overview-and-faqs -// -// Notes: -// • We return RAW base units only: DROPS for XRP, WEI for RLUSD -// • All addresses are managed in addresses.js -// ───────────────────────────────────────────────────────────────────────────── - -function makeTVL(param) { - return async (api) => { - if (param === 'xrp') { - // Get XRP balance directly from XRPL - const xrpBalance = await getXrpBalance(XRP_MPC_ADDRESS); - api.add(ADDRESSES.ripple.XRP, xrpBalance); - } else if (param === 'rlusd') { - await getRlusdBalance(api); - } - return api.getBalances() - } -} - -async function getXrpBalance(account) { - const body = { - method: 'account_info', - params: [{ account: account, ledger_index: 'validated' }] - }; - const res = await post(RIPPLE_ENDPOINT, body); - - if (res.result.status === 'success' && res.result.account_data) { - // XRP balance is in drops (1 XRP = 1,000,000 drops) - return res.result.account_data.Balance; - } - - return "0"; -} - -async function getRlusdBalance(api) { - // Get both the underlying asset and total assets from the ERC-4626 vault - const [asset, totalAssets] = await Promise.all([ - api.call({ - abi: 'address:asset', - target: TERM_RLUSD_VAULT, - }), - api.call({ - abi: 'uint256:totalAssets', - target: TERM_RLUSD_VAULT, - }) - ]); - - // Add the balance using the underlying asset address - api.add(asset, totalAssets); -} - -module.exports = { - methodology: - "TVL is calculated as follows: (1) XRP balance retrieved directly from XRPL for our XRP MPC wallet (in DROPS) and (2) RLUSD balance retrieved directly from Term's RLUSD Strategy Vault contract via ERC-4626 totalAssets() (in WEI). See our blog for full details and operational context.", - timetravel: false, - - ripple: { tvl: makeTVL('xrp') }, - ethereum: { tvl: makeTVL('rlusd') }, -} \ No newline at end of file diff --git a/projects/moremoney/StakingMetadata.js b/projects/moremoney/StakingMetadata.js deleted file mode 100644 index be3848899b0..00000000000 --- a/projects/moremoney/StakingMetadata.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const nullAddress = ADDRESSES.null -const sdk = require("@defillama/sdk"); -const addresses = require("./addresses.json"); - -async function useParsedStakingMetadata(block) { - const curAddresses = addresses.avax; - - const stratViewer = await sdk.api.abi.call({ - block, - target: curAddresses.CurvePoolRewards, - abi: 'function stakingMetadata(address account) view returns (tuple(address stakingToken, address rewardsToken, uint256 totalSupply, uint256 tvl, uint256 aprPer10k, uint256 vestingCliff, uint256 periodFinish, uint256 stakedBalance, uint256 vestingStart, uint256 earned, uint256 rewards, uint256 vested))', - chain: "avax", - params: [nullAddress], - }); - - const normalResults = stratViewer.output; - return [normalResults]; -} - -module.exports = { - useParsedStakingMetadata: useParsedStakingMetadata, -}; diff --git a/projects/moremoney/StrategyMetadata.js b/projects/moremoney/StrategyMetadata.js deleted file mode 100644 index 8c81eb01e94..00000000000 --- a/projects/moremoney/StrategyMetadata.js +++ /dev/null @@ -1,103 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const StrategyViewer = require("./StrategyViewer.json"); -const addresses = require("./addresses.json"); -const chain = 'avax' - -async function useStrategyMetadata(block) { - const curAddresses = addresses.avax; - - const token2Strat = { - ["0xE5e9d67e93aD363a50cABCB9E931279251bBEFd0"]: - curAddresses.YieldYakStrategy2, - [ADDRESSES.avax.BTC_b]: - curAddresses.YieldYakStrategy2, - [ADDRESSES.avax.SAVAX]: - curAddresses.YieldYakStrategy2, - [ADDRESSES.avax.WAVAX]: - curAddresses.YieldYakAVAXStrategy2, - ["0x9e295B5B976a184B14aD8cd72413aD846C299660"]: - curAddresses.YieldYakPermissiveStrategy2, - ["0xF7D9281e8e363584973F946201b82ba72C965D27"]: - curAddresses.SimpleHoldingStrategy, - }; - const tokens = Object.keys(token2Strat); - const strats = Object.values(token2Strat); - - tokens.push(ADDRESSES.avax.WAVAX); - strats.push(curAddresses.AltYieldYakAVAXStrategy2); - tokens.push(ADDRESSES.avax.WAVAX); - strats.push(curAddresses.OldYieldYakAVAXStrategy2); - // tokens.push(ADDRESSES.avax.BTC_b); - // strats.push(curAddresses.AltYieldYakStrategy2); - // tokens.push(ADDRESSES.avax.SAVAX); - // strats.push(curAddresses.AltYieldYakStrategy2); - // tokens.push("0xF7D9281e8e363584973F946201b82ba72C965D27"); - // strats.push(curAddresses.YieldYakStrategy2); - - const stratViewer = await sdk.api.abi.call({ - target: curAddresses.StrategyViewer, - abi: StrategyViewer.abi, - chain, block, - params: [curAddresses.StableLending2, tokens, strats], - }); - return stratViewer.output; -} - -async function useLegacyIsolatedStrategyMetadata(block) { - const curAddresses = addresses.avax; - - //legacy - const legacyToken2Strat = { - ["0x60781C2586D68229fde47564546784ab3fACA982"]: - curAddresses.YieldYakStrategy, - ["0x59414b3089ce2AF0010e7523Dea7E2b35d776ec7"]: - curAddresses.YieldYakStrategy, - [ADDRESSES.avax.JOE]: - curAddresses.YieldYakStrategy, - [ADDRESSES.avax.DAI]: - curAddresses.YieldYakStrategy, - ["0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5"]: - curAddresses.YieldYakStrategy, - [ADDRESSES.avax.USDC_e]: - curAddresses.YieldYakStrategy, - ["0xA389f9430876455C36478DeEa9769B7Ca4E3DDB1"]: - curAddresses.YieldYakStrategy, - ["0xeD8CBD9F0cE3C6986b22002F03c6475CEb7a6256"]: - curAddresses.YieldYakStrategy, - ["0x2148D1B21Faa7eb251789a51B404fc063cA6AAd6"]: - curAddresses.SimpleHoldingStrategy, - /*["0x454E67025631C065d3cFAD6d71E6892f74487a15"]: - curAddresses.TraderJoeMasterChefStrategy, - ["0xCDFD91eEa657cc2701117fe9711C9a4F61FEED23"]: - curAddresses.MultiTraderJoeMasterChef3Strategy, */ - }; - // const masterChef2Tokens = [ - // ADDRESSES.avax.xJOE, - // '0xa389f9430876455c36478deea9769b7ca4e3ddb1', - // '0xed8cbd9f0ce3c6986b22002f03c6475ceb7a6256', - // ].map(getAddress); - - const legacyTokens = Object.keys(legacyToken2Strat); - const legacyStrats = Object.values(legacyToken2Strat); - - //legacy - legacyTokens.push("0x454E67025631C065d3cFAD6d71E6892f74487a15"); - legacyStrats.push(curAddresses.YieldYakStrategy); - legacyTokens.push(ADDRESSES.avax.JOE); - legacyStrats.push(curAddresses.sJoeStrategy); - - const stratViewer = await sdk.api.abi.call({ - target: curAddresses.LegacyStrategyViewer, - abi: StrategyViewer.abi, - chain, block, - params: [curAddresses.StableLending, legacyTokens, legacyStrats], - }); - - return stratViewer.output; -} - -module.exports = { - useStrategyMetadata: useStrategyMetadata, - useLegacyIsolatedStrategyMetadata: useLegacyIsolatedStrategyMetadata, -}; diff --git a/projects/moremoney/StrategyViewer.json b/projects/moremoney/StrategyViewer.json deleted file mode 100644 index 25cef63ef0b..00000000000 --- a/projects/moremoney/StrategyViewer.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "abi": "function viewMetadata(address lendingContract, address[] tokens, address[] strategies) view returns (tuple(uint256 debtCeiling, uint256 totalDebt, uint256 stabilityFee, uint256 mintingFee, address strategy, address token, uint256 APF, uint256 totalCollateral, uint256 borrowablePer10k, uint256 valuePer1e18, bytes32 strategyName, uint256 tvl, uint256 harvestBalance2Tally, uint8 yieldType, address underlyingStrategy)[])" -} diff --git a/projects/moremoney/addresses.json b/projects/moremoney/addresses.json deleted file mode 100644 index c74435dbf74..00000000000 --- a/projects/moremoney/addresses.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "avax": { - "AMMYieldConverter": "0x9025B317Ce8eAd9bD5C4934BcEef7309D8e8Aa86", - "AltYieldYakAVAXStrategy2": "0x3F898DaDf9E0Bd678B0D1513a3a6D88Ef43aeC2A", - "ChainlinkOracle": "0x3Dc65b58ad56309349f9494eD8d920870aaa8c5B", - "ContractManagement": "0x057A7DE8B6f5A35E4223D16F7164441Ae53bC782", - "CurveLPTOracle": "0xC1397F94587c6fE5946a20F3D74DBb02bb175e14", - "CurvePool": "0xb3F21Fc59Bc06209D5fb82c474F21582AEf09a20", - "CurvePoolRewards": "0x9727D535165e19590013bdDea8Fd85dd618b9aF7", - "CurvePoolSL": "0xb0B057e998f7D3B38A2bC5e2dCBC97da14d47f54", - "CurvePoolSL2": "0xF57B8672b593D4723521AEee990E366B45a0554d", - "DefaultProxyAdmin": "0xdDedF8683d8192d87931D86c13b8c2bf52f78a04", - "DependencyController": "0x8341978C376C293B3380a8921257D26ec31efEaF", - "DirectFlashLiquidation": "0x4F6348543aD4311eAC349ED10B4b98b3EBA3038b", - "DirectFlashStable2Liquidation": "0x58710985569043318C495623f02528E22C70F878", - "DirectFlashStableLiquidation": "0x9F0714b64886289Be1569fb202E0D9a4c63A439D", - "EquivalentScaledOracle": "0x8B7F12D8ba9BC81DAdDE3bf6e97B020AB2a8B82D", - "InterestRateController": "0x9957FD65eE322C1302D9E3849Bb7Ee4E8ccd94A0", - "IsolatedLending": "0xDc5CCAAA928De5D318605A76eEDE50f205Aa6D93", - "IsolatedLendingLiquidation": "0x9A641E87c60472D90F9A7e2e60e006bE66408B6F", - "LPTFlashLiquidation": "0x1a7C7c40c3E76AB44D5a9C552f223102526cedDD", - "LPTFlashStable2Liquidation": "0x82CDCfEbE96B1ecE3e5Ed2EEd903099B639f1928", - "LPTFlashStableLiquidation": "0xb380874f3Aeec4ABe8a8A6E6F153f8f0a0023B4a", - "LiquidYieldStrategy": "0x594D5519c2BCBFd5D21aa9FA6755312caA31CFd4", - "LyLptHolder": "0xBf1615f0a8c158444e2De263d0631dab34E60d62", - "LyRebalancer": "0x94660F5625EC0Ed35e653859bFF901DE6c9Eb9B7", - "MasterMore": "0x9092386C0A9AF9722FF39F11D5b2CDf82D175515", - "MasterMore_Implementation": "0x2585B8a7b4FA3966ddB1BBa544b66724a7f95F25", - "MasterMore_Proxy": "0x9092386C0A9AF9722FF39F11D5b2CDf82D175515", - "Migrate": "0xffd4a3124aae7462ae8c6c9f38971a254fb7665a", - "MoreToken": "0xd9D90f882CDdD6063959A9d837B05Cb748718A05", - "MultiAMMYieldConverter": "0x1100BF2Be6D7aC5F91028138BE9E8e37819eeD52", - "MultiTraderJoeMasterChef3Strategy": "0x6f48D2978035B3AB84959F2BD5C494344E56f6E7", - "OracleActivation": "0xC8d2504C5B1235FFF31dB503454A40C51cf4c4f0", - "OracleRegistry": "0x567Cf1675F5cb3c0457B35753d76e83E37CDBe96", - "OldYieldYakAVAXStrategy2": "0xa7c78579340FAde158810d83aCfd1ea3A17b7eBE", - "PangolinMiniChefStrategy": "0xDFa3bCda5f954A1E6CEF247bDfA89F15702a7473", - "ProxyOracle": "0x056e2711C2F6A21563AaFA2F9AC8E8eC114b2B4b", - "Redeemer": "0x5b90cDB84064a34a702360C14C6B4bbc8D1a4b03", - "ResetCurvePoolMinBalance": "0xaa1e6bb816fFbB0AEAaaD19A8d7b190a3b651aC7", - "Roles": "0x9e1EE00d45252aA58623F7d771FB414aA38f0878", - "SimpleHoldingStrategy": "0x21C971D78E1A398710d964Ed1AC4C80E5940ed25", - "StableLending": "0x23082269Ea17C4f5103bAB6cD9DFE1f6CE138616", - "StableLending2": "0x55E343c27B794E7FCfebEf4bEA3dE24093418c50", - "StableLending2InterestForwarder": "0x011740021ec2BC2C4E6C6adC3b592ee32C079784", - "StableLending2Liquidation": "0x8fC2b57Be98AA074FCf18DfC1013313dBdfDd2D5", - "StableLendingLiquidation": "0xB9961f2E9C9Caa52AaBdf83ADC1Ca0AD9A2DeC4f", - "Stablecoin": "0x0f577433Bf59560Ef2a79c124E9Ff99fCa258948", - "StrategyRegistry": "0x5C836f816732F064D6e985D8e38f4f78d594716e", - "StrategyTokenActivation": "0x612eA0ef62d7De4F8ae8806b8b462239b90D6cD9", - "StrategyViewer": "0xC05760b4Fc55A3b1a0fB48009810CDE293C076d9", - "LegacyStrategyViewer": "0x079126585b0a96fD0A76B45B59be0c54F93b6424", - "TokenActivation": "0x25644B0ab8F7d3a5B235c5C1A37c52dD8fDCF9DE", - "TraderJoeMasterChef2Strategy": "0x10d71115360F9129623096E8108bC6856cf86D3A", - "TraderJoeMasterChefStrategy": "0x0Db20d1643112fA00C4D3DDB58369Ad26c1F7c1d", - "TrancheIDService": "0xc83f27c0180e8e29419f4Cab189c3529a2A3Fa8a", - "TwapOracle": "0x4220a06bd4d15b4C3d1f3419AB2Ac8E4768b82B6", - "UniswapV2LPTOracle": "0x3b825168716D79A656BB48Cb7Ae64fcB3bc32203", - "VeMoreStaking": "0xCD89D32Fd82b01E0A11d8c9835Da521c24781D29", - "VeMoreToken": "0x7AEa97bA3d91117EA53BE2599C6C6c60e1c7ccBC", - "VestingLaunchReward": "0x95dd4B039220D18FE41148786bde934a14c5e9CD", - "VestingMoreToken": "0xba8983FdDe65354C1330E38D042C7d2F784cA3de", - "WrapNativeIsolatedLending": "0x1d2a020916d717e2aB8195A363A4E415abc9C4Fb", - "WrapNativeStableLending": "0x973AEBAc99C61b0851E7c04Cd90925AE227FA2d0", - "WrapNativeStableLending2": "0x9F9b3EeD2aB01Cb22547886e20dEEe0A8ea32B1E", - "WrapperTokenOracle": "0x575a21B34DFE94e46734252fEE17b5803538e905", - "WsMAXIOracle": "0x5D1744D2e7C36f4BBDFB4Cb8D7D0E87794A15144", - "YieldYakAVAXStrategy": "0xaa3Ea561a656cbE310F2E10981085DA2D989f17e", - "YieldYakAVAXStrategy2": "0x46176Bbc8f704aAe26a9DFc035974540a4912B6d", - "YieldYakPermissiveStrategy2": "0x9598173D41214353f68e453CD9a96EdFcb8bf8Ba", - "YieldYakStrategy": "0x888fC8d90177a4097e196EF6BBDc7d2e8CfFDb17", - "YieldYakStrategy2": "0x3d8f5E342d5ff24F83aBE2646D1A6B744977228a", - "fsGLPOracle": "0x4a0D580845D72aA40cCEd0F361D0F60be9282108", - "iMoney": "0x655ba0Ff0669aBf5e27032f593d8a80E8a10b8D4", - "mAvax": "0xA5916a3c4b9dFccbFe6C27108539EdA3E6b99d56", - "mAvaxRedistributor": "0x11bb6E9AEb4919188CC6B5AD570220C5A00d6B78", - "msAvax": "0x188B1B39c6Ea974525E36c4ad4A243C3D917cD7a", - "msAvaxRedistributor": "0x84f34b23127f8C5cC340121baDAEA7Aa33938421", - "sAvaxOracle": "0x3E77f613488582A265EEEb3bDe48f7cB5033661b", - "sJoeStrategy": "0x4ae46Dc083F37Ae33430AC9C9E9e9EaE0EF7376e", - "wsMAXIStableLiquidation": "0xF5D5F849d057Bad242BabB034794889F3de7301c", - "xJoeStableLiquidation": "0xab3E6e4011B76346099520DA87ab08903929B59F", - "xMore": "0xaEcf69a09369Db3556177484298d6348c7cf9a7f", - "AltYieldYakStrategy2": "0x3d3cd4856ceca1639150549A4F2cE3F37f92Bd91", - "BigMigrateStableLending2": "0x43d1aB608Fd479659D253727c598DD245aeE3E91", - "RedeemYY": "0x797f4474Cf0aACd1E50809b8496a5d63f0716E1f", - "yyAvaxOracle": "0x6e5A0a870a33e671f30631C76a2380bdcf246b11", - "SimpleHoldingStrategy2": "0x76108f8c992552840578569E51924a79C4fF0f75", - "VeMoreWhitelistStaking": "0x2448E71769817ecc0e8d7Fb628cd56EEFfd99dDa" - } -} diff --git a/projects/moremoney/index.js b/projects/moremoney/index.js deleted file mode 100644 index ab4e0c9296f..00000000000 --- a/projects/moremoney/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const useStrategyMetadata = require("./StrategyMetadata").useStrategyMetadata; -const useLegacyIsolatedStrategyMetadata = - require("./StrategyMetadata").useLegacyIsolatedStrategyMetadata; -const useParsedStakingMetadata = - require("./StakingMetadata").useParsedStakingMetadata; - -async function tvl(api) { - const [allStratMeta, legacyStratMeta] = await Promise.all([ - useStrategyMetadata(api.block), useLegacyIsolatedStrategyMetadata(api.block) - ]) - const stratMeta = [...allStratMeta, ...legacyStratMeta] - const stakeMeta = await useParsedStakingMetadata(api.block); - - const tvlsFarm = stakeMeta - .reduce((tvl, row) => { - return tvl + +row.tvl - }, 0); - - const tvlNoFarm = stratMeta - .reduce( - (tvl, row) => tvl + (row.tvl * row.valuePer1e18 / 1e18), - 0); - - const tvl = tvlNoFarm + tvlsFarm - - api.add(ADDRESSES.avax.USDC, tvl / 1e12); - return sumTokens2({ owner: '0x3d3cd4856ceca1639150549A4F2cE3F37f92Bd91', fetchCoValentTokens: true, api,}) -} - -module.exports = { - misrepresentedTokens: true, - avax: { - tvl, - }, -}; diff --git a/projects/moret/index.js b/projects/moret/index.js deleted file mode 100644 index 10751b6868a..00000000000 --- a/projects/moret/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const markets = ['0x73917c0b432727Ce608824D1bb5a784ed1a93695', // ETH pool - '0xb0c2E53336106DFA3c3E4DC6A2Df25af0ae2626d', // BTC pool - '0x090015A60a99Fa4551e458E1cb95bE3C381B1C54' // GHST pool - ] -const tvlTokens = [ADDRESSES.polygon.WETH_1, // WETH - ADDRESSES.polygon.WBTC, // WBTC - '0x385Eeac5cB85A38A9a07A70c73e0a3271CfB54A7', // GHST - ADDRESSES.polygon.USDC // USDC - ] - -module.exports = { - methodology: 'counts all USDC/WBTC/WETH/GHST balances of market contracts.', - start: '2023-02-24', // 24 Feb 2023 08:00:00 UTC - polygon: { - tvl: sumTokensExport({ owners: markets, tokens: tvlTokens, }), - } -}; \ No newline at end of file diff --git a/projects/mori/index.js b/projects/mori/index.js deleted file mode 100644 index 07c186d309e..00000000000 --- a/projects/mori/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - tomochain: { factory: "0xD1A76A4F4ff2AD3f899438Ea0e919049fC0a21BF", fromBlock: 74340484, }, -}); \ No newline at end of file diff --git a/projects/moria/index.js b/projects/moria/index.js deleted file mode 100644 index d20bb77d8ce..00000000000 --- a/projects/moria/index.js +++ /dev/null @@ -1,133 +0,0 @@ -const WebSocket = require('ws'); - -// Moria Protocol constants -const LOAN_CONTRACT_ADDRESS = "rvtgwvmtp4hy5k9alcwc5yt69k4jnshevdwapq43w7hp8m7hwj60szuun6naf"; -const MUSD_TOKEN_ID = "b38a33f750f84c5c169a6f23cb873e6e79605021585d4f3408789689ed87f366"; - -/** - * Connect to a Rostrum Electrum Server - * @returns WebSocket connection object - */ -const connectElectrum = async () => { - return new Promise((resolve, reject) => { - const ws = new WebSocket('wss://rostrum.moria.money:443'); - - ws.on('open', async () => { - try { - const pingRequest = createElectrumRequest('server.ping', [], 1); - await sendElectrumRequest(ws, pingRequest); - resolve(ws); - } catch (pingError) { - console.error('Server ping failed:', pingError); - reject(pingError); - } - }); - - ws.on('error', (error) => { - console.error('WebSocket connection error:', error); - reject(error); - }); - - ws.on('close', () => { - // we're done, do nothing - }); - }); -}; - -let requestIdCounter = 1; - -/** - * Create a JSON-RPC 2.0 request object for Electrum - */ -const createElectrumRequest = (method, params = [], id) => { - return { - jsonrpc: '2.0', - method, - params, - id: id ?? requestIdCounter++ - }; -}; - -const responseCallbacks = new Map(); - -/** - * Send a request over WebSocket with proper Electrum protocol formatting - */ -const sendElectrumRequest = async (ws, request) => { - return new Promise((resolve, reject) => { - responseCallbacks.set(request.id, { resolve, reject }); - - ws.send(JSON.stringify(request) + '\n'); - - const timeout = setTimeout(() => { - responseCallbacks.delete(request.id); - reject(new Error(`Electrum RPC request timed out for ID ${request.id}`)); - }, 10000); - - const messageHandler = (message) => { - const response = JSON.parse(message); - if (response.id === request.id) { - clearTimeout(timeout); - ws.off('message', messageHandler); - responseCallbacks.delete(request.id); - if (response.error) { - reject(new Error(`Electrum RPC error: ${response.error.message || JSON.stringify(response.error)}`)); - } else { - resolve(response.result); - } - } else if (responseCallbacks.has(response.id)) { - const cb = responseCallbacks.get(response.id); - responseCallbacks.delete(response.id); - clearTimeout(timeout); - ws.off('message', messageHandler); - if (response.error) { - cb?.reject(new Error(`Electrum RPC error: ${response.error.message || JSON.stringify(response.error)}`)); - } else { - cb?.resolve(response.result); - } - } - }; - ws.on('message', messageHandler); - }); -}; - -const fetchTVL = async (ws) => { - const request = createElectrumRequest('token.address.listunspent', [LOAN_CONTRACT_ADDRESS, null, MUSD_TOKEN_ID]); - const utxos = await sendElectrumRequest(ws, request); - - // ignore any random fungable token sends to the contract; if it has commitment, it's a loan position - const loanUtxos = utxos.unspent.filter((utxo) => utxo.commitment); - const sats = loanUtxos.reduce((sum, utxo) => sum + utxo.value, 0); - - return sats; -}; - -/** - * TVL function - tracks total BCH collateral locked - */ -async function tvl() { - let ws = null; - try { - ws = await connectElectrum(); - const collateralSats = await fetchTVL(ws); - const totalCollateralBCH = collateralSats / 100_000_000; - - // Return BCH as TVL - return { - 'bitcoin-cash': totalCollateralBCH - }; - } finally { - if (ws) { - ws.close(); - } - } -} - - -module.exports = { - methodology: "Lookup Moria Protocol loan positions on the contract address via the Electrum protocol and sum up the total BCH collateral locked.", - timetravel: false, - bitcoincash: { - tvl, - }, -}; diff --git a/projects/morkie/index.js b/projects/morkie/index.js deleted file mode 100644 index de3b74d8b4c..00000000000 --- a/projects/morkie/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking'); - -module.exports = { - polygon: { - tvl: () => ({}), - staking: staking( - '0xee1198CF7575dfb2D5D666964322B6569B23E56b', - '0xAFb755c5f2ea2aadBaE693d3BF2Dc2C35158dC04' - ) - } -}; diff --git a/projects/morph/index.js b/projects/morph/index.js deleted file mode 100644 index 2426de75e02..00000000000 --- a/projects/morph/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { nullAddress } = require('../helper/tokenMapping') - -async function tvl(api) { - const { tokens } = await getConfig('morph/bridge', 'https://raw.githubusercontent.com/morph-l2/morph-list/main/src/mainnet/tokenList.json') - const tokensAndOwners = tokens.filter(i => i.chainId === '1').map(i => [i.address, i.gatewayAddress]) - tokensAndOwners.push([nullAddress, '0xDc71366EFFA760804DCFC3EDF87fa2A6f1623304']) - return api.sumTokens({ tokensAndOwners }) -} - -module.exports = { - ethereum: { tvl }, -} \ No newline at end of file diff --git a/projects/morpheusswap/abi.json b/projects/morpheusswap/abi.json deleted file mode 100644 index 62e9aa74f6b..00000000000 --- a/projects/morpheusswap/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accMorphPerShare, uint16 depositFeeBP, uint256 lpSupply)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/morpheusswap/index.js b/projects/morpheusswap/index.js deleted file mode 100644 index cc5bbd264ad..00000000000 --- a/projects/morpheusswap/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const abi = require("./abi.json"); -const { getUniTVL } = require('../helper/unknownTokens') -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { stakings } = require("../helper/staking"); - -const chef = "0xc7dad2e953Dc7b11474151134737A007049f576E" -const morph = "0x0789ff5ba37f72abc4d561d00648acadc897b32d" - -async function tvl(timestamp, block, chainBlocks, api) { - const balances = {} - const transformAddress = addr => `fantom:${addr}` //i => `fantom:${i}`; - if (chainBlocks.fantom && chainBlocks.fantom < 21182441) { // Factory deployment block - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [morph]) - } else { - const dexTvl = getUniTVL({ factory: '0x9C454510848906FDDc846607E4baa27Ca999FBB6', useDefaultCoreAssets: true }) - return dexTvl(timestamp, block, chainBlocks, api); - } - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract, as well as staking pools.", - fantom: { - tvl, - staking: stakings(["0x7A93C6dDEbc2089F6D5bcccF1025d6D0E31d4DA4", "0x47775F72E8bfa98dE4613db6cD4b5772aC4aBEC8", "0x5406566EDCD5B108212Bb69382a8869D761E738E", "0xdf3A3D03a92F54f8859355924f4581443B80C714", "0x7373E5b59bf20345b0D452f9a294A51429ca1F9b", "0x9bd3dACe24745Eb117c1F7f93AAEC5e37333c079", "0x7928de9d6DB88280DBa4613864a518A98F32D342", "0xaDb29fBBb9962Fe643676e2433114F0446923221", "0x60131EC5BE073F1c34A9b506ce30eA7aAC7eed15", "0x62CfcABA772e90F743990A8bcEDAC04AbBF7E75f", - "0x7E01c21789DEF6572E31Ab6c67A4182E0808428B", "0x2D5F05D8e578397889f5F5C88d8e3b81D8a6f865", "0x578fb737cf5F3814Ddd80Cd6a7b4FFF9504c0c39", "0xb6bA5d27b00c2E62e32c0716D7c6505463cFBbf2", "0xb31bF9a835584d18595d886D35157467576A76e8", "0xde1592f643F9c77f186970daa43D3cAB22C0fd22", "0xeF5627d8B7BC8102E0C9760F62E0c5b0b7F38AF6", "0x80da05De8B759B7A9399F43C04A859cC0eaA24AC", "0x983A4dA9E8baC8b8F2F04B161968906B780f3629", "0x63AD93bAb2842Fefec06630b9ddC7A2351D7cb91", - "0x616a0030688329b4FaaFda8Cf469f1899e58cBfC", "0x94005434C078e9d8cC23fF4b5D88FC9bc7c0E1A5", "0xc948EaD0069adc742539c7D6e038CD132010513D", "0x5D29690d7e9f4216dFE3F15C0A2db828D25e9aD5", "0x3BEef19946b0595621650793d45C1cb06e9F810a", "0x913473eaF564e3982E9fFb6D5c559E2adb669D61", "0xA75C807d43F75806DFbDd1f302C7F388E610Be87", "0x40F4F6473F39882645237f39900fc15C2E8dd56c", "0xC60044503dA0C800DEE0577f294862Fc1c1Aca1B", "0x04f429bBFa7032a046F24466F835284351Cef5E4", - "0xbC4f8A55fc3Aba02dA4E18aA66E9176EA476468D", "0xF6d428f7ee882C0bdd43AA060c69f35874609B9f", "0x23308c96cF9f46Fa6D7Ee714B960780551d35E16", "0x11d7A542ad2E12Bd0C033C85aeF6FB891CD92690", "0xc8C017674fb54F5F25f05AC0981116715465254A", "0xCCA9F9E68F7E7e1BE97DA2Ff91B016c234a13c88", "0xA431fDd6d23f0d7C4b4B92F4aD866a5939b53abB", "0x326A7D91B6F767458599E7d93DFc850d2e083d30", "0x5bCb5f2ed10aC292C9E281C5eAD4F0533666c3b6"], "0xB66b5D38E183De42F21e92aBcAF3c712dd5d6286", "fantom") - }, - hallmarks: [[1642942800, "Wonderland deposit for Solidly wars"]] -} diff --git a/projects/morphex-old/index.js b/projects/morphex-old/index.js deleted file mode 100644 index 9f8f53a2385..00000000000 --- a/projects/morphex-old/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -// Fantom (Multichain) -const vaultAddressFantom = "0x3CB54f0eB62C371065D739A34a775CC16f46563e"; -const stakingAddressFantom = "0xa4157E273D88ff16B3d8Df68894e1fd809DbC007"; -const tokenAddressMPXFantom = "0x66eEd5FF1701E6ed8470DC391F05e27B1d0657eb"; - -module.exports = { - methodology: "Morphex liquidity is calculated by the value of tokens in the MLP pool. TVL also includes MPX staked.", - fantom: { - staking: staking(stakingAddressFantom, tokenAddressMPXFantom), - tvl: gmxExports({ vault: vaultAddressFantom }) - } -}; diff --git a/projects/morphex/index.js b/projects/morphex/index.js deleted file mode 100644 index 0060c6a7119..00000000000 --- a/projects/morphex/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); -const sdk = require('@defillama/sdk') - -// Fantom (New MLP with Axelar and LayerZero assets) -const vaultAddressFantom = "0x245cD6d33578de9aF75a3C0c636c726b1A8cbdAa"; -const stakingAddressFantom = "0xa4157E273D88ff16B3d8Df68894e1fd809DbC007"; -const tokenAddressMPXFantom = "0x66eEd5FF1701E6ed8470DC391F05e27B1d0657eb"; -const vaultAddressFantomMultichain = "0x3CB54f0eB62C371065D739A34a775CC16f46563e"; - -// BNB Chain -const vaultAddressBSC = "0x46940Dc651bFe3F2CC3E04cf9dC5579B50Cf0765"; -const stakingAddressBSC = "0x13d2bBAE955c54Ab99F71Ff70833dE64482519B1"; -const tokenAddressMPXBSC = "0x94C6B279b5df54b335aE51866d6E2A56BF5Ef9b7"; - -module.exports = { - methodology: "Morphex liquidity is calculated by the value of tokens in the MLP pool. TVL also includes MPX staked.", - fantom: { - staking: staking(stakingAddressFantom, tokenAddressMPXFantom), - tvl: sdk.util.sumChainTvls([gmxExports({ vault: vaultAddressFantom }), gmxExports({ vault: vaultAddressFantomMultichain })]) - }, - bsc: { - staking: staking(stakingAddressBSC, tokenAddressMPXBSC), - tvl: gmxExports({ vault: vaultAddressBSC }) - }, -}; diff --git a/projects/morpho-aave/addresses.js b/projects/morpho-aave/addresses.js deleted file mode 100644 index 323662df961..00000000000 --- a/projects/morpho-aave/addresses.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - morphoAaveV2MainnetLens: "0x507fa343d0a90786d86c7cd885f5c49263a91ff4", -} \ No newline at end of file diff --git a/projects/morpho-aave/index.js b/projects/morpho-aave/index.js deleted file mode 100644 index 53d848193a6..00000000000 --- a/projects/morpho-aave/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("../helper/abis/morpho.json"); -const BigNumber = require("bignumber.js"); -const { morphoAaveV2MainnetLens } = require("./addresses"); -const marketsUnderlyings = require("./marketsUnderlyings"); - - -const getMetrics = async (balances, block, borrowed) => { - const marketsCall = await sdk.api.abi.call({ - target: morphoAaveV2MainnetLens, - abi: abi.morphoLens.getAllMarkets, - block, - chain: "ethereum" - }); - const markets = marketsCall.output; - const underlyings = await marketsUnderlyings(markets, block); - const balancesTotalBorrow = await sdk.api.abi.multiCall({ - calls: markets.map(market => ({ - params: [market] - })), - target: morphoAaveV2MainnetLens, - block, - chain: "ethereum", - abi: abi.morphoLens.getTotalMarketBorrow - }); - const toUnderlying = (marketAddress) => underlyings[markets.indexOf(marketAddress)]; // multiCall keeps the order of the list - if (borrowed) { - balancesTotalBorrow.output.forEach((data) => { - const totalBorrow = BigNumber(data.output.poolBorrowAmount).plus(data.output.p2pBorrowAmount).toFixed(0); - sdk.util.sumSingleBalance(balances, toUnderlying(data.input.params[0]), totalBorrow); - }); - return; - } - const balancesTotalSupply = await sdk.api.abi.multiCall({ - calls: markets.map(market => ({ - params: [market] - })), - target: morphoAaveV2MainnetLens, - block, - chain: "ethereum", - abi: abi.morphoLens.getTotalMarketSupply - }); - balancesTotalSupply.output.forEach((totalSupplyData, idx) => { - const totalBorrowData = balancesTotalBorrow.output[idx]; - const totalBorrow = BigNumber(totalBorrowData.output.poolBorrowAmount).plus(totalBorrowData.output.p2pBorrowAmount); - const totalSupply = BigNumber(totalSupplyData.output.poolSupplyAmount).plus(totalSupplyData.output.p2pSupplyAmount); - const tvl = totalSupply.minus(totalBorrow).toFixed(0); // Through morpho, for a given market, this value can be negative. - sdk.util.sumSingleBalance(balances, toUnderlying(totalSupplyData.input.params[0]), tvl); - }); -}; - -const ethereum = (borrowed) => { - return async (timestamp, block) => { - const balances = {}; - await getMetrics(balances, block, borrowed); - return balances; - }; -}; - -module.exports = { - doublecounted: true, - methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, - ethereum: { - tvl: ethereum(false), - borrowed: ethereum(true) - } -}; -// node test.js projects/morpho-aave/index.js diff --git a/projects/morpho-aave/marketsUnderlyings.js b/projects/morpho-aave/marketsUnderlyings.js deleted file mode 100644 index cc775fc80da..00000000000 --- a/projects/morpho-aave/marketsUnderlyings.js +++ /dev/null @@ -1,10 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("../helper/abis/aave.json"); -module.exports = async (markets, block) => (await sdk.api.abi.multiCall({ - calls: markets.map(market => ({ - target: market, - })), - block, - chain: "ethereum", - abi: abi.getUnderlying -})).output.map(result => result.output.toLowerCase()) \ No newline at end of file diff --git a/projects/morpho-aaveV3/addresses.js b/projects/morpho-aaveV3/addresses.js deleted file mode 100644 index 7fc42bd52aa..00000000000 --- a/projects/morpho-aaveV3/addresses.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - morphoAaveV3: "0x33333aea097c193e66081e930c33020272b33333" -} \ No newline at end of file diff --git a/projects/morpho-aaveV3/index.js b/projects/morpho-aaveV3/index.js deleted file mode 100644 index 808777c6ed3..00000000000 --- a/projects/morpho-aaveV3/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const abi = require("../helper/abis/morpho.json"); -const erc20 = require("../helper/abis/erc20.json"); -const {morphoAaveV3} = require("./addresses"); -const BigNumber = require("bignumber.js"); -const fetchMarketsData = require("./markets"); - -const getMetrics = async (api, borrowed) => { - const markets = await api.call({ target: morphoAaveV3, abi: abi.morphoAaveV3.marketsCreated, }); - const marketsData = await fetchMarketsData(markets, api); - const balancesTotalBorrowOnPool = await api.multiCall({ - calls: marketsData.map(({debtToken}) => ({ - target: debtToken, - params: [morphoAaveV3] - })), - abi: erc20.balanceOf - }); - const totalBorrows = marketsData.map(({scaledP2PBorrow, p2pBorrowIndex}, i) => { - const totalBorrowOnPool = balancesTotalBorrowOnPool[i]; - const totalBorrowP2P = BigNumber(scaledP2PBorrow).times(p2pBorrowIndex).div(10**27).toFixed(0); - return BigNumber(totalBorrowOnPool).plus(totalBorrowP2P).toFixed(0); - }); - if (borrowed) { - marketsData.forEach(({underlying}, idx) => { - api.add(underlying, totalBorrows[idx]) - }); - return; - } - - const balancesTotalSupplyOnPool = await api.multiCall({ - calls: marketsData.map(({aToken}) => ({ - target: aToken, - params: [morphoAaveV3] - })), - abi: erc20.balanceOf - }); - marketsData.forEach(({underlying, scaledP2PSupply, p2pSupplyIndex}, idx) => { - const totalBorrow = totalBorrows[idx]; - const totalSupplyOnPool = balancesTotalSupplyOnPool[idx]; - const totalSupplyP2P = BigNumber(scaledP2PSupply).times(p2pSupplyIndex).div(10**27).toFixed(0); - const totalSupply = BigNumber(totalSupplyOnPool).plus(totalSupplyP2P); - const tvl = totalSupply.minus(totalBorrow).toFixed(0); // Through morpho, for a given market, this value can be negative. - api.add(underlying, tvl) - }); -}; - -const ethereum = (borrowed) => { - return async (api) => { - return getMetrics(api, borrowed); - }; -}; - -module.exports = { - methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, - doublecounted: true, - ethereum: { - tvl: ethereum(false), - borrowed: ethereum(true) - } -}; -// node test.js projects/morpho-aave/index.js diff --git a/projects/morpho-aaveV3/markets.js b/projects/morpho-aaveV3/markets.js deleted file mode 100644 index d617f20dcd3..00000000000 --- a/projects/morpho-aaveV3/markets.js +++ /dev/null @@ -1,17 +0,0 @@ -const abi = require("../helper/abis/morpho.json"); -const { morphoAaveV3 } = require("./addresses") -module.exports = async (underlyings, api) => (await api.multiCall({ - calls: underlyings, - target: morphoAaveV3, - abi: abi.morphoAaveV3.market -})).map((output, i) => { - return { - aToken: output.aToken, - underlying: underlyings[i], - debtToken: output.variableDebtToken, - scaledP2PSupply: output.deltas.supply.scaledP2PTotal, - scaledP2PBorrow: output.deltas.borrow.scaledP2PTotal, - p2pSupplyIndex: output.indexes.supply.p2pIndex, - p2pBorrowIndex: output.indexes.borrow.p2pIndex, - } -}) \ No newline at end of file diff --git a/projects/morpho-blue/index.js b/projects/morpho-blue/index.js deleted file mode 100644 index 9e659f724a2..00000000000 --- a/projects/morpho-blue/index.js +++ /dev/null @@ -1,183 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require("../helper/cache/getLogs"); -const abi = require("../helper/abis/morpho.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - ethereum: { - morphoBlue: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", - blackList: [ - "0x8413D2a624A9fA8b6D3eC7b22CF7F62E55D6Bc83", - ADDRESSES.base.USDC, - ADDRESSES.optimism.WSTETH, - ], - fromBlock: 18883124, - blacklistedMarketIds: [ - "0x1dca6989b0d2b0a546530b3a739e91402eee2e1536a2d3ded4f5ce589a9cd1c2", - ], - }, - base: { - morphoBlue: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", - blackList: ["0x6ee1955afb64146b126162b4ff018db1eb8f08c3", '0xda1c2c3c8fad503662e41e324fc644dc2c5e0ccd', '0x46415998764c29ab2a25cbea6254146d50d22687', '0x5e331e9ae6e1a5d375f699811736527222a9db15', '0x2dc205f24bcb6b311e5cdf0745b0741648aebd3d', '0xadcdd085ad2887758255090589f72237bdd33d8a', '0xcb327b99ff831bf8223cced12b1338ff3aa322fa', '0xadcdd085ad2887758255090589f72237bdd33d8e'], - fromBlock: 13977148, - }, - arbitrum: { - morphoBlue: "0x6c247b1F6182318877311737BaC0844bAa518F5e", - blackList: ["0xf8b3fa720a9cd8abeed5a81f11f80cd8f93e6b57"], - fromBlock: 296446593, - }, - fraxtal: { - morphoBlue: "0xa6030627d724bA78a59aCf43Be7550b4C5a0653b", - fromBlock: 15317931, - }, - ink: { - morphoBlue: "0x857f3EefE8cbda3Bc49367C996cd664A880d3042", - fromBlock: 4078776, - }, - optimism: { - morphoBlue: "0xce95AfbB8EA029495c66020883F87aaE8864AF92", - fromBlock: 130770075, - }, - polygon: { - morphoBlue: "0x1bF0c2541F820E775182832f06c0B7Fc27A25f67", - blackList: ["0x45d4a31854f09a257ff6b3c3ae0d0f479a898da9", "0xaffcf1312772583d9d0b9f6e68f5767154b29dfd", "0xa39c45a857bb82df069f63ca8741a02ebe7e9719", "0xc69e948a9a5c123704580c46332f90cff1cb215b", "0x316c0b5cd67aa7c2da7a576d3724e3763981d08f", "0xd59a2e7d5110dc379910925aa0472a13e09a093e", "0xc7a357293a35ce4c8d7f2000571043313987aab7", "0xf14c4fd60765e36d63f6c8b8161bd41ba995fb44", "0x338a4ef6953b36e67ccf7cffe50ebc74b1d64387", "0x12fd05a9306affc946cb13301d88a102400544d2", "0x8a874eb137d99415bad95c5d4399bc691849d02f", "0x365ab7828ea541c1d6e30472a1a1e7d07600a6bd", "0xc7056597f3a816202486b5082b3291a2023c9633", "0x2faaa34f387e6485671faeda7c021ee6af961d35"], - fromBlock: 66931042, - }, - scroll: { - morphoBlue: "0x2d012EdbAdc37eDc2BC62791B666f9193FDF5a55", - fromBlock: 12842868, - }, - wc: { - morphoBlue: "0xE741BC7c34758b4caE05062794E8Ae24978AF432", - fromBlock: 9025669, - }, - mode: { - morphoBlue: "0xd85cE6BD68487E0AaFb0858FDE1Cd18c76840564", - fromBlock: 19983370, - }, - corn: { - morphoBlue: "0xc2B1E031540e3F3271C5F3819F0cC7479a8DdD90", - fromBlock: 251401, - }, - hemi: { - morphoBlue: "0xa4Ca2c2e25b97DA19879201bA49422bc6f181f42", - fromBlock: 1188872, - }, - sonic: { - morphoBlue: "0xd6c916eB7542D0Ad3f18AEd0FCBD50C582cfa95f", - fromBlock: 9100931, - }, - unichain: { - morphoBlue: "0x8f5ae9CddB9f68de460C77730b018Ae7E04a140A", - fromBlock: 9139027, - }, - flame: { - morphoBlue: "0x63971484590b054b6Abc4FEe9F31BC6F68CfeC04", - fromBlock: 5991116, - }, - // basecamp:{ - // morphoBlue: "0xc7CAd9B1377Eb8103397Cb07Cb5c4f03eb2eBEa8", - // fromBlock: 4804080, - // blackList: ['0x68d6024e5168f16d3453a23b36f393a559be7aef'], - // }, - hyperliquid: { - morphoBlue: "0x68e37dE8d93d3496ae143F2E900490f6280C57cD", - blackList: ['0x66a1e37c9b0eaddca17d3662d6c05f4decf3e110'], - fromBlock: 1988429, - }, - plume_mainnet: { - morphoBlue: "0x42b18785CE0Aed7BF7Ca43a39471ED4C0A3e0bB5", - fromBlock: 765994, - }, - lisk: { - morphoBlue: "0x00cD58DEEbd7A2F1C55dAec715faF8aed5b27BF8", - fromBlock: 15731231, - }, - soneium: { - morphoBlue: "0xE75Fc5eA6e74B824954349Ca351eb4e671ADA53a", - fromBlock: 6440817, - }, - katana: { - morphoBlue: "0xD50F2DffFd62f94Ee4AEd9ca05C61d0753268aBc", - fromBlock: 2741069, - }, - tac: { - morphoBlue: "0x918B9F2E4B44E20c6423105BB6cCEB71473aD35c", - fromBlock: 1308542, - }, - zircuit: { - morphoBlue: "0xA902A365Fe10B4a94339B5A2Dc64F60c1486a5c8", - fromBlock: 14640172, - }, - abstract: { - morphoBlue: "0xc85CE8ffdA27b646D269516B8d0Fa6ec2E958B55", - fromBlock: 13947713, - }, - btr: { - morphoBlue: "0xaea7eff1bd3c875c18ef50f0387892df181431c6", - fromBlock: 13516997, - }, - bsc: { - morphoBlue: "0x01b0Bd309AA75547f7a37Ad7B1219A898E67a83a", - fromBlock: 54344680, - }, - etlk: { - morphoBlue: "0xbCE7364E63C3B13C73E9977a83c9704E2aCa876e", - fromBlock: 21047448, - }, - xdai: { - morphoBlue: "0xB74D4dd451E250bC325AFF0556D717e4E2351c66", - fromBlock: 42201689, - }, - sei: { - morphoBlue: "0xc9cDAc20FCeAAF616f7EB0bb6Cd2c69dcfa9094c", - fromBlock: 166036723, - onlyUseExistingCache: true, - }, - btnx: { - morphoBlue: "0x8183d41556Be257fc7aAa4A48396168C8eF2bEAD", - fromBlock: 450759, - }, -} - -const eventAbis = { - createMarket: 'event CreateMarket(bytes32 indexed id, (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv) marketParams)' -} - -const nullAddress = ADDRESSES.null - -const getMarket = async (api) => { - const { morphoBlue, fromBlock, blacklistedMarketIds = [], onlyUseExistingCache, } = config[api.chain] - const extraKey = 'reset-v2' - const logs = await getLogs({ api, target: morphoBlue, eventAbi: eventAbis.createMarket, fromBlock, onlyArgs: true, extraKey, onlyUseExistingCache, }) - return logs.map((i) => i.id.toLowerCase()).filter((id) => !blacklistedMarketIds.includes(id)) -} - -const tvl = async (api) => { - const { morphoBlue, blackList = [] } = config[api.chain] - const markets = await getMarket(api) - const marketInfos = await api.multiCall({ target: morphoBlue, calls: markets, abi: abi.morphoBlueFunctions.idToMarketParams }) - const collCalls = [...new Set(marketInfos.map(m => m.collateralToken.toLowerCase()).filter(addr => addr !== nullAddress))]; - const withdrawQueueLengths = await api.multiCall({ calls: collCalls, abi: abi.metaMorphoFunctions.withdrawQueueLength, permitFailure: true }) - const filterMarkets = marketInfos.filter((_, i) => withdrawQueueLengths[i] == null || withdrawQueueLengths[i] > 30 || withdrawQueueLengths[i] < 0); - const tokens = filterMarkets.flatMap(({ collateralToken, loanToken }) => [collateralToken, loanToken]) - return sumTokens2({ api, owner: morphoBlue, tokens, blacklistedTokens: blackList }) -} - -const borrowed = async (api) => { - const { morphoBlue } = config[api.chain] - const markets = await getMarket(api) - const marketInfos = await api.multiCall({ target: morphoBlue, calls: markets, abi: abi.morphoBlueFunctions.idToMarketParams }) - const marketDatas = await api.multiCall({ target: morphoBlue, calls: markets, abi: abi.morphoBlueFunctions.market }) - - marketDatas.forEach((data, idx) => { - const { collateralToken, loanToken } = marketInfos[idx]; - if (collateralToken.toLowerCase() !== '0xda1c2c3c8fad503662e41e324fc644dc2c5e0ccd') { - api.add(loanToken, data.totalBorrowAssets); - } - }); -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl, borrowed } -}) diff --git a/projects/morpho/addresses.js b/projects/morpho/addresses.js deleted file mode 100644 index 124146bdad5..00000000000 --- a/projects/morpho/addresses.js +++ /dev/null @@ -1,6 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - morphoCompoundMainnetLens: "0x930f1b46e1d081ec1524efd95752be3ece51ef67", - cEth: "0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5", - wEth: ADDRESSES.ethereum.WETH -} \ No newline at end of file diff --git a/projects/morpho/index.js b/projects/morpho/index.js deleted file mode 100644 index 37f70e29806..00000000000 --- a/projects/morpho/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const sdk = require('@defillama/sdk'); -const abi = require("../helper/abis/morpho.json"); -const BigNumber = require("bignumber.js"); -const { cEth, morphoCompoundMainnetLens, wEth } = require("./addresses"); -const marketsUnderlyings = require("./marketsUnderlyings") - - -const getMetrics = async (balances, block, borrowed) => { - const marketsCall = await sdk.api.abi.call({ - target: morphoCompoundMainnetLens, - abi: abi.morphoLens.getAllMarkets, - block, - chain: "ethereum" - }); - const markets = marketsCall.output.filter(m => m.toLowerCase() !== cEth).map(market => market.toLowerCase()) - const underlyings = await marketsUnderlyings(markets, block) - // add eth at the end of each list - markets.push(cEth); - underlyings.push(wEth); - const balancesTotalBorrow = await sdk.api.abi.multiCall({ - calls: markets.map(market => ({ - params: [market] - })), - target: morphoCompoundMainnetLens, - block, - chain: "ethereum", - abi: abi.morphoLens.getTotalMarketBorrow - }) - const toUnderlying = (marketAddress) => underlyings[markets.indexOf(marketAddress)] // multiCall keeps the order of the list - if(borrowed) { - balancesTotalBorrow.output.forEach((data) => { - const totalBorrow = BigNumber(data.output.poolBorrowAmount).plus(data.output.p2pBorrowAmount).toFixed(0); - sdk.util.sumSingleBalance(balances, toUnderlying(data.input.params[0]), totalBorrow) - }) - return; - } - const balancesTotalSupply = await sdk.api.abi.multiCall({ - calls: markets.map(market => ({ - params: [market] - })), - target: morphoCompoundMainnetLens, - block, - chain: "ethereum", - abi: abi.morphoLens.getTotalMarketSupply - }) - balancesTotalSupply.output.forEach((totalSupplyData, idx) => { - const totalBorrowData = balancesTotalBorrow.output[idx]; - const totalBorrow = BigNumber(totalBorrowData.output.poolBorrowAmount).plus(totalBorrowData.output.p2pBorrowAmount); - const totalSupply = BigNumber(totalSupplyData.output.poolSupplyAmount).plus(totalSupplyData.output.p2pSupplyAmount); - const tvl = totalSupply.minus(totalBorrow).toFixed(0); // Through morpho, for a given market, this value can be negative. - sdk.util.sumSingleBalance(balances, toUnderlying(totalSupplyData.input.params[0]), tvl) - }) -} - -const ethereum = (borrowed) => { - return async (timestamp, block)=> { - const balances = {} - await getMetrics(balances, block, borrowed) - return balances; - } -} - -module.exports = { - doublecounted: true, - methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, - ethereum: { - tvl: ethereum(false), - borrowed: ethereum(true), - } -}; -// node test.js projects/morpho-compound/index.js diff --git a/projects/morpho/marketsUnderlyings.js b/projects/morpho/marketsUnderlyings.js deleted file mode 100644 index 7ff44260c63..00000000000 --- a/projects/morpho/marketsUnderlyings.js +++ /dev/null @@ -1,10 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("../helper/abis/morpho.json"); -module.exports = async (markets, block) => (await sdk.api.abi.multiCall({ - calls: markets.map(market => ({ - target: market, - })), - block, - chain: "ethereum", - abi: abi.cToken.underlying -})).output.map(result => result.output.toLowerCase()) \ No newline at end of file diff --git a/projects/mortgageFi/index.js b/projects/mortgageFi/index.js deleted file mode 100644 index 52abcc53360..00000000000 --- a/projects/mortgageFi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const config = { - arbitrum: { pools: ['0x9Be2Cf73E62DD3b5dF4334D9A36888394822A33F'] }, - base: { pools: ['0x1bE87D273d47C3832Ab7853812E9A995A4DE9EEA','0xE93131620945A1273b48F57f453983d270b62DC7'] }, -} - -Object.keys(config).forEach(chain => { - const { pools, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const cTokens = await api.multiCall({ abi: 'address:contractCoin', calls: pools }) - const sTokens = await api.multiCall({ abi: 'address:stablecoin', calls: pools }) - const tokens = cTokens.concat(sTokens) - const owners = pools.concat(pools) - return api.sumTokens({ tokensAndOwners2: [tokens, owners] }) - } - } -}) \ No newline at end of file diff --git a/projects/mosaic/index.js b/projects/mosaic/index.js deleted file mode 100644 index 155354754e1..00000000000 --- a/projects/mosaic/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); - -// Constants -const MOSAIC_AMM_PACKAGE = - "0x26a95d4bd7d7fc3debf6469ff94837e03e887088bef3a3f2d08d1131141830d3"; -const GET_ALL_POOLS_FUNCTION = `${MOSAIC_AMM_PACKAGE}::liquidity_pool::all_pools`; -const GET_POOL_VIEW_FUNCTION = `${MOSAIC_AMM_PACKAGE}::liquidity_pool::get_pool_view`; - -/** - * Retrieves all pool IDs from Mosaic AMM contract - * @param {string} chain - The blockchain name - * @returns {Promise>} - Array of pool IDs - */ -const getPoolIds = async chain => { - const pools = await function_view({ - functionStr: GET_ALL_POOLS_FUNCTION, - type_arguments: [], - args: [], - chain - }); - - return pools.map(pool => pool.inner); -}; - -/** - * Fetches data for a specific pool - * @param {string} poolId - Pool identifier - * @param {string} chain - The blockchain name - * @returns {Promise} - Pool data - */ -const getPoolData = async (poolId, chain) => { - return await function_view({ - functionStr: GET_POOL_VIEW_FUNCTION, - type_arguments: [], - args: [poolId], - chain - }); -}; - -module.exports = { - timetravel: false, - methodology: "Aggregates TVL of Mosaic AMM.", - move: { - tvl: async api => { - const poolIds = await getPoolIds(api.chain); - - // Process pools in parallel for better performance - const poolDataPromises = poolIds.map(id => getPoolData(id, api.chain)); - const poolsData = await Promise.all(poolDataPromises); - - // Add token reserves to TVL - poolsData.forEach(pool => { - if (pool) { - api.add(pool.token_x, pool.token_x_reserve); - api.add(pool.token_y, pool.token_y_reserve); - } - }); - } - } -}; diff --git a/projects/mosquitos-finance/helper.js b/projects/mosquitos-finance/helper.js deleted file mode 100644 index b100cbaa174..00000000000 --- a/projects/mosquitos-finance/helper.js +++ /dev/null @@ -1,16 +0,0 @@ -const moduleAddress = '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12' -const resourceAddress = '0x5a97986a9d031c4567e15b797be516910cfcb4156312482efc6a19c0a30c948' -const masterchefModuleAddress = '0x4db735a9d57f0ed393e44638540efc8e2ef2dccca3bd30c29bd09353b6285832' -const masterchefResourceAddress = '0xe1996571b77b4fc6feeae1f426f124e68ff31bb30508562106479456f6ecaabd' - -function getTypeArgs(struct) { - return struct.split('<')[1].split('>').split(',') -} - -module.exports = { - moduleAddress, - resourceAddress, - masterchefModuleAddress, - masterchefResourceAddress, - getTypeArgs -} \ No newline at end of file diff --git a/projects/mosquitos-finance/index.js b/projects/mosquitos-finance/index.js deleted file mode 100644 index 0b905e5a3e4..00000000000 --- a/projects/mosquitos-finance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -async function tvl() { - return {} -} - -module.exports = { - hallmarks: [ - [1678320000, "Rug Pull"] - ], - timetravel: false, - deadFrom: 1678320000, - aptos: { - tvl, - staking: tvl, - } -} diff --git a/projects/moth/index.js b/projects/moth/index.js deleted file mode 100644 index 19aca2f85c6..00000000000 --- a/projects/moth/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const gmothTokenAddress = "0x0c62358178D086ad87717B0d401235628D21a62b"; // done -const mothGenesisAddress = '0xb1b12d9B379652690e7cAb154163758d88C76366' // done -const gmothRewardPoolAddress = "0x22d147fed73dc0B381Be25ffDa6F091F81C6Cf74"; // done -const masonryAddress = "0xc1Bfa275DCa704a1FF11783Da42c6D0E46F9e20C"; // done - -async function mothGenesisTVL(api) { - const tokens = [ - "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", // ETH - "0x176211869cA2b568f2A7D4EE941E073a821EE1ff", // USDC - "0xA219439258ca9da29E9Cc4cE5596924745e12B93", // USDT - "0xe4eEB461Ad1e4ef8b8EF71a33694CCD84Af051C4", // REX33 - "0xC326D1505ce0492276f646B03FE460c43A892185", // U$D - "0x8cf881799E3B5ab24271A9B66b6Ca2b0e575B1ef", // fBOMB - - ] - - return sumTokens2({ api, tokens, owner: mothGenesisAddress, }) -} - - -const pool2 = async (api) => { - let gauges = await api.call({ abi: 'address[]:getAllGauges', target: '0x942117Ec0458a8AA08669E94B52001Bd43F889C1' }) - let pools = await api.multiCall({ abi: 'address:stake', calls: gauges, permitFailure: true }) - const pools2 = [] - const gauges2 = [] - pools.forEach((pool, i) => { - if (!pool) return; - pools2.push(pool) - gauges2.push(gauges[i]) - }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges2.map(gauge => ({ target: gauge, params: gmothRewardPoolAddress })) }) - api.add(pools2, bals) - return sumTokens2({ api, tokens: pools2, }) -}; - - -module.exports = { - methodology: "Pool2 deposits consist of MOTH/USDC and GMOTH/USDC LP tokens deposits while the staking TVL consists of the GMOTH tokens locked within the Masonry contract(0xc1Bfa275DCa704a1FF11783Da42c6D0E46F9e20C).", - linea: { - tvl: mothGenesisTVL, - pool2, // comment out until pool2 tokens are available - staking: staking(masonryAddress, gmothTokenAddress), - }, -}; \ No newline at end of file diff --git a/projects/mountain-protocol/index.js b/projects/mountain-protocol/index.js deleted file mode 100644 index 51f666b27b1..00000000000 --- a/projects/mountain-protocol/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const USDM = { - ethereum: ADDRESSES.ethereum.USDM, - polygon: ADDRESSES.ethereum.USDM, - optimism: ADDRESSES.ethereum.USDM, - base: ADDRESSES.ethereum.USDM, - arbitrum: ADDRESSES.ethereum.USDM, - era: ADDRESSES.era.USDM -} - -module.exports = { - misrepresentedTokens: true, - methodology: "Calculates the total USDM Supply", -} - -const tvl = async (api) => { - const supply = await api.call({ target: USDM[api.chain], abi: 'erc20:totalSupply' }) - api.add(USDM[api.chain], supply) -} - -Object.keys(USDM).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/move-dollar/index.js b/projects/move-dollar/index.js deleted file mode 100644 index 27c39f4e5a8..00000000000 --- a/projects/move-dollar/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getResources, } = require("../helper/chain/aptos"); - -const moveDollarAddress = "0x6f986d146e4a90b828d8c12c14b6f4e003fdff11a8eecceceb63744363eaac01"; - -let resourcesCache; - -async function _getResources() { - if (!resourcesCache) resourcesCache = getResources(moveDollarAddress) - return resourcesCache -} -const extractVaultType = resource => resource.type.split('<')[1].replace('>', '').split(', '); -const vaultsFilter = resource => resource.type.includes(`${moveDollarAddress}::vault::Vaults<`) -const psmsFilter = resource => resource.type.includes(`${moveDollarAddress}::psm::PSM<`) - -module.exports = { - timetravel: false, - methodology: - "Aggregates all collateral backing Move Dollar in Thala's CDP Vaults.", - aptos: { - tvl: async (api) => { - const resources = await _getResources() - const vaults = resources.filter(vaultsFilter).map(vault => ({ - total_collateral: vault.data.total_collateral, - asset_type: extractVaultType(vault), - })); - const psms = resources.filter(psmsFilter).map(psm => ({ - total_collateral: psm.data.coin.value, - asset_type: extractVaultType(psm), - })); - vaults.forEach(({ asset_type, total_collateral }) => { - api.add(asset_type.toString(), total_collateral); - }); - psms.forEach(({ asset_type, total_collateral }) => { - api.add(asset_type.toString(), total_collateral); - }); - }, - }, -}; \ No newline at end of file diff --git a/projects/moveflow/index.js b/projects/moveflow/index.js deleted file mode 100644 index 3e7e49e1aaa..00000000000 --- a/projects/moveflow/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { function_view, getResource } = require("../helper/chain/aptos"); - -const { sumTokensExport } = require('./../helper/unwrapLPs') - -const USDC = - ADDRESSES.aptos.USDC_3; -const USDT = - ADDRESSES.aptos.USDt; -const APT = - ADDRESSES.aptos.APT; -const MOON = - ADDRESSES.aptos.MOON; -const CELL = - ADDRESSES.aptos.CELL; - - -async function tvl(api, isVesting) { - const faData = - await function_view({ - "functionStr": "0x15a5484b9f8369dd3d60c43e4530e7c1bb82eef041bf4cf8a2090399bebde5d4::stream::get_fa_tvl", - "type_arguments": [], - "args": [] - }); - - let cell_value = 0; - let usdc_value = 0; - let usdt_value = 0; - let apt_value = 0; - let moon_value = 0; - - faData.map((item, index) => { - let assetsTvl = [] - if (index === 1) { - assetsTvl = item; - } - assetsTvl.map((item, index) => { - if (index === 0) { - cell_value = item - } - if (index === 1) { - usdt_value = item - } - if (index === 2) { - usdc_value = item - } - }) - }) - - - const coinData = await function_view({ - "functionStr": "0x15a5484b9f8369dd3d60c43e4530e7c1bb82eef041bf4cf8a2090399bebde5d4::stream::get_coin_tvl", - "type_arguments": [], - "args": [] - }); - - coinData.map((item, index) => { - let assetsTvl = [] - if (index === 1) { - assetsTvl = item; - } - assetsTvl.map((item, index) => { - if (index === 0) { - apt_value = item - } - if (index === 1) { - moon_value = item - } - }) - }) - - - if (isVesting) { - api.add(MOON, moon_value); - api.add(CELL, cell_value); - } else { - api.add(USDC, usdc_value); - api.add(USDT, usdt_value); - api.add(APT, apt_value); - } -} - - -module.exports = { - occ: { - tvl: sumTokensExport({ - owners: ['0x408BDA1fe3Ed15Dc6b06a00055a2894e5D79369E'], - tokens: [ADDRESSES.occ.WEDU, ADDRESSES.occ.USDT, ADDRESSES.occ.USDC, ADDRESSES.occ.WETH, ADDRESSES.occ.WBTC], - }), - vesting: sumTokensExport({ - owners: ['0x408BDA1fe3Ed15Dc6b06a00055a2894e5D79369E'], - tokens: [ADDRESSES.occ.BLEND], - }), - }, - aptos: { tvl: api => tvl(api, false), vesting: api => tvl(api, true) }, -}; \ No newline at end of file diff --git a/projects/movegpt/index.js b/projects/movegpt/index.js deleted file mode 100644 index 26730dbc7c0..00000000000 --- a/projects/movegpt/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); -const MGPT_ADDRESS = '0x63be1898a424616367e19bbd881f456a78470e123e2770b5b5dcdceb61279c54::movegpt_token::MovegptCoin' -const POOL_1 = "0xd22d0e14b278b8463c6a8c86baa0e89d1a982028c0d79b4c3584d74238a0dc6d" -const POOL_2 = "0x9141a7ebbf2c8ab9101d6b657321e1cc78314b71b8e8780508986119660ffee8" - -async function get_staking(api) { - async function addBalance(pool) { - let balance = await function_view({ - functionStr: - "0xccd92a8a4b4ee351190346bb04de9941b840bf42a2f003372ccec232d2b5bdcf::staking_fix_lock_duration::get_pool_staked_amount", - type_arguments: [MGPT_ADDRESS], - args: [pool] - }) - api.addCGToken('movegpt', balance / 1e8) - } - await Promise.all([POOL_1, POOL_2].map(addBalance)) -} - -module.exports = { - timetravel: false, - methodology: - "TVL is calculated by summing the staked amounts in the specified staking pools on the Aptos blockchain.", - aptos: { - tvl: () => ({ - }), - staking: async (api) => { - await get_staking(api) - }, - } -} \ No newline at end of file diff --git a/projects/moveposition/index.js b/projects/moveposition/index.js deleted file mode 100644 index a529944857d..00000000000 --- a/projects/moveposition/index.js +++ /dev/null @@ -1,80 +0,0 @@ -const { getResources } = require("../helper/chain/aptos"); - -const mpRootAddress = - "0xccd2621d2897d407e06d18e6ebe3be0e6d9b61f1e809dd49360522b9105812cf"; - -let resourcesCache; - -async function _getResources() { - if (!resourcesCache) resourcesCache = getResources(mpRootAddress, 'move'); - return resourcesCache; -} - -const brokersFilter = (i) => - i.type.includes(`${mpRootAddress}::broker::Broker`); - -const coinToFungibleAssetFilter = (i) => - i.type.includes(`${mpRootAddress}::map::Map`); - -function processBrokerData(brokerDataArray, coinToFungibleAssetArray, isBorrowed = false) { - const coinToFungibleAssetMap = coinToFungibleAssetArray.reduce(function(map, item) { - map[item.type] = item.data.fa_metadata; - return map; - }, {}); - - const result = {}; - - brokerDataArray.map((item) => { - const { type, data } = item; - - const brokerType = type; - - const coinType = brokerType.match(/<([^>]+)>/)[1]; - - let tokenMint = coinType; - { - // Moveposition uses custom coin types to represent fungible assets - // Find the fungible asset address so DefiLama can find - // the correct token price - const mapType = `${mpRootAddress}::map::Map<${coinType}>`; - if (mapType in coinToFungibleAssetMap) { - tokenMint = coinToFungibleAssetMap[mapType]; - } - } - - result[tokenMint] = !isBorrowed ? parseInt(data.available) : parseInt(data.borrowed) - }); - - return result; -} - -function addBalanceData(balanceData, api) { - Object.entries(balanceData).forEach(([key, value]) => { - api.add(key, value); - }); -} - -module.exports = { - timetravel: false, - methodology: "Aggregates TVL from all brokers in the Moveposition protocol.", - move: { - tvl: async (api) => { - const resources = await _getResources(); - const brokers = resources.filter(brokersFilter); - const coinToFungibleAssetArray = resources.filter( - coinToFungibleAssetFilter - ); - const balanceData = processBrokerData(brokers, coinToFungibleAssetArray); - addBalanceData(balanceData, api); - }, - borrowed: async (api) => { - const resources = await _getResources(); - const brokers = resources.filter(brokersFilter); - const coinToFungibleAssetArray = resources.filter( - coinToFungibleAssetFilter - ); - const balanceData = processBrokerData(brokers, coinToFungibleAssetArray, true); - addBalanceData(balanceData, api); - }, - }, -}; diff --git a/projects/movepump/index.js b/projects/movepump/index.js deleted file mode 100644 index d0223b9a721..00000000000 --- a/projects/movepump/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getResources } = require('../helper/chain/aptos') -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const resources = await getResources("0x766ec6a18eed729b6b62f8af38f7a62dbc847b84bec29063c8b0d46830a82401") - resources.forEach((resource) => { - if (resource.type.includes('movepump_launch::Pool<')) { - api.add(ADDRESSES.aptos.APT, resource.data.real_aptos_reserves.value) - } - }) -} - -module.exports = { - aptos: { tvl } -} \ No newline at end of file diff --git a/projects/mover/index.js b/projects/mover/index.js deleted file mode 100644 index e31fd5ccc9b..00000000000 --- a/projects/mover/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const treasuryContract = "0x94F748BfD1483750a7dF01aCD993213Ab64C960F"; -const MOVER = "0x3FA729B4548beCBAd4EaB6EF18413470e6D5324C"; -const MOVER_WETH_SLP = "0x87b918e76c92818DB0c76a4E174447aeE6E6D23f"; - -const savingsPool = "0xAF985437DCA19DEFf89e61F83Cd526b272523719"; -const savingsPlusPolygonPool = "0x77D5333d97A092cA01A783468E53E550C379dc3C"; -const baseLedgerPool = '0x1f15F293C1Cd3d05d58d3EdeAf0C72c5A2dfeaFf'; -const UBT = '0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e'; - -async function tvlEth(api) { - const [stakedUBT, savingsStakedUSDC] = await api.multiCall({ abi: "uint256:totalAssetAmount", calls: [baseLedgerPool, savingsPool] }) - api.add(UBT, stakedUBT) - api.add(ADDRESSES.ethereum.USDC, savingsStakedUSDC) -} - -async function tvlPolygon(api) { - const [savingsStakedUSDC] = await api.multiCall({ abi: "uint256:totalAssetAmount", calls: [savingsPlusPolygonPool] }) - api.add(ADDRESSES.polygon.USDC, savingsStakedUSDC) -} - -module.exports = { - ethereum: { - staking: staking(treasuryContract, MOVER), - pool2: pool2(treasuryContract, MOVER_WETH_SLP), - tvl: tvlEth, - }, - polygon: { - tvl: tvlPolygon - }, - methodology: - "Counts tvl of the Assets deposited through get total assets methods of pools; also the Staking and Pool2 parts through Treasury Contract", -}; - diff --git a/projects/mozaic/index.js b/projects/mozaic/index.js deleted file mode 100644 index 3e4a2804ba8..00000000000 --- a/projects/mozaic/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const vaults = { - arbitrum: "0x8BfED25d58d4c38a3A9BCa1aC45bcFD866A3a88c", - bsc: "0x5712ab97A299a8A4544BCc728B7f3E9663965443", - avax: "0x5712ab97A299a8A4544BCc728B7f3E9663965443", - polygon: "0x5712ab97A299a8A4544BCc728B7f3E9663965443", - fantom: "0x139b227B7Fc46CE6AB2efE7cE6463DD97E6b0A7A", - kava: "0x5712ab97A299a8A4544BCc728B7f3E9663965443", -} - -const theseusVaults = { - arbitrum: { vault: '0x6D8E0Ac94fb79Cd3520f546ce1c23A6F27F16EaC', gmxPlugin: '0xD4497259a3535ae311AB0F6ad68Da43a676919Db' }, -} - -async function tvl(api) { - if (theseusVaults[api.chain]) { - const { vault, gmxPlugin } = theseusVaults[api.chain] - const tokens = await api.call({ abi: 'address[]:getAcceptedTokens', target: vault }) - const gmxPoolAbi = "function getPools() view returns ((uint8 poolId, address indexToken, address longToken, address shortToken, address marketToken)[])" - const gmxTokens = await api.call({ abi: gmxPoolAbi, target: gmxPlugin }) - const ownerTokens = [[tokens, vault], [gmxTokens.map(t => t.marketToken), gmxPlugin]] - await api.sumTokens({ ownerTokens }) - } - - - const vault = vaults[api.chain]; - const tokens = await api.call({ abi: 'function getAcceptingTokens () view returns (address[])', target: vault, }); - const bals = await api.multiCall({ abi: 'function getStakedAmountPerToken(address token) view returns (uint256)', calls: tokens, target: vault }) - api.addTokens(tokens, bals) - return api.sumTokens({ owner: vault, tokens }) -} - -module.exports = { - methodology: 'To calculate the TVL for the Mozaic project, we first identify the vault addresses for each supported chain (Arbitrum, BSC, AVAX, Polygon, Fantom, Kava). For each vault, we retrieve the list of accepted tokens using the `getAcceptingTokens` function. We then determine the staked amount for each token using the `getStakedAmountPerToken` function. The TVL is the sum of all these staked amounts across all tokens and chains.', -}; - -Object.keys(vaults).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/mstable-yield/index.js b/projects/mstable-yield/index.js deleted file mode 100644 index 9768b7af84c..00000000000 --- a/projects/mstable-yield/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -const vaults = [ - '0x9614a4C61E45575b56c7e0251f63DCDe797d93C5', // 3CRV -] - -module.exports = { - deadFrom: '2023-04-07', - ethereum: { - tvl: sumERC4626VaultsExport({ vaults, isOG4626: true }) - } -} diff --git a/projects/mstable/abi-massetv1.json b/projects/mstable/abi-massetv1.json deleted file mode 100644 index f67112d1394..00000000000 --- a/projects/mstable/abi-massetv1.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getBassets": "function getBassets() view returns (tuple(address addr, uint8 status, bool isTransferFeeCharged, uint256 ratio, uint256 maxWeight, uint256 vaultBalance)[] bAssets, uint256 len)" -} \ No newline at end of file diff --git a/projects/mstable/abi-massetv2.json b/projects/mstable/abi-massetv2.json deleted file mode 100644 index 56bc9b0d15e..00000000000 --- a/projects/mstable/abi-massetv2.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getBassets": "function getBassets() view returns (tuple(address addr, address integrator, bool hasTxFee, uint8 status)[] personal, tuple(uint128 ratio, uint128 vaultBalance)[] data)" -} \ No newline at end of file diff --git a/projects/mstable/index.js b/projects/mstable/index.js deleted file mode 100644 index 011e5e45260..00000000000 --- a/projects/mstable/index.js +++ /dev/null @@ -1,137 +0,0 @@ -const sdk = require('@defillama/sdk'); - -const MASSET_ABI_V2 = require('./abi-massetv2.json'); - -const ASSETS = { - ethereum: [ - { - // mUSD - address: '0xe2f2a5c287993345a840db3b0845fbc70f5935a5', - startBlock: 10148032, - isMasset: true, - }, - { - // mBTC - address: '0x945facb997494cc2570096c74b5f66a3507330a1', - startBlock: 11840521, - isMasset: true, - }, - { - // fPmBTC/HBTC - address: '0x48c59199da51b7e30ea200a74ea07974e62c4ba7', - startBlock: 12146645, - }, - { - // fPmBTC/TBTC - address: '0xb61a6f928b3f069a68469ddb670f20eeeb4921e0', - startBlock: 12146645, - }, - { - // fPmBTC/tBTCv2 - address: '0xc3280306b6218031E61752d060b091278d45c329', - startBlock: 13460377, - }, - { - // fPmUSD/BUSD - address: '0xfe842e95f8911dcc21c943a1daa4bd641a1381c6', - startBlock: 12146707, - }, - { - // fPmUSD/GUSD - address: '0x4fb30c5a3ac8e85bc32785518633303c4590752d', - startBlock: 12146745, - }, - { - // fPmUSD/alUSD - address: '0x4eaa01974b6594c0ee62ffd7fee56cf11e6af936', - startBlock: 12806795, - }, - { - // fPmUSD/RAI - address: '0x36F944B7312EAc89381BD78326Df9C84691D8A5B', - startBlock: 13643595, - }, - { - // fPmUSD/FEI - address: '0x2F1423D27f9B20058d9D1843E342726fDF985Eb4', - startBlock: 13682060, - }, - ], - polygon: [ - { - // mUSD - address: '0xe840b73e5287865eec17d250bfb1536704b43b21', - startBlock: 13630640, - isMasset: true, - }, - { - // fpmUSD/FRAX - address: '0xb30a907084ac8a0d25dddab4e364827406fd09f0', - startBlock: 16099014, - }, - ], -}; - -const OWN_ASSETS = new Set([ - '0xe2f2a5c287993345a840db3b0845fbc70f5935a5', // Ethereum mUSD - '0x945facb997494cc2570096c74b5f66a3507330a1', // Ethereum mBTC - '0xe840b73e5287865eec17d250bfb1536704b43b21', // Polygon mUSD -]); - -async function getLockedForAsset(chain, asset, block) { - const { output: { personal, data } } = await sdk.api.abi.call({ - chain, - target: asset.address, - block, - abi: MASSET_ABI_V2.getBassets, - }); - - return personal.reduce( - (lockedTokens, [address], i) => ({ ...lockedTokens, [address]: data[i][1] }), - {}, - ) -} - -function tvlForChain(chain) { - const assets = ASSETS[chain] - const isEthereum = chain === 'ethereum' - - return async function tvl(timestamp, ethBlock, chainBlocks) { - const block = isEthereum ? ethBlock : chainBlocks[chain]; - - const assetBalances = await Promise.all( - assets - .filter(({ startBlock }) => block > startBlock) - .map((asset) => getLockedForAsset(chain, asset, block)) - ); - - const lockedBalances = {}; - - assetBalances - .forEach((locked) => Object.entries(locked) - // No double-dipping; avoid double-counting mAssets - .filter(([underlying]) => !OWN_ASSETS.has(underlying.toLowerCase())) - .map(([underlying, balance]) => ( - [isEthereum ? underlying : `${chain}:${underlying}`, balance] - )) - .forEach(([address, balance]) => - sdk.util.sumSingleBalance(lockedBalances, address, balance) - ) - ); - - return lockedBalances; - } -} - -const ethereumTvl = tvlForChain('ethereum') -const polygonTvl = tvlForChain('polygon') - -module.exports = { - start: '2020-05-28', // May-28-2020 00:00:00 - polygon: { - tvl: polygonTvl, - }, - ethereum: { - tvl: ethereumTvl, - }, -}; diff --git a/projects/mswap/index.js b/projects/mswap/index.js deleted file mode 100644 index ec7fa7cde4d..00000000000 --- a/projects/mswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens'); - -module.exports = uniTvlExports({ - matchain: '0x338bCC4efd3cA000D123d7352b362Fc6D5B3D829' -}) diff --git a/projects/mt-gox/index.js b/projects/mt-gox/index.js deleted file mode 100644 index 359462a574d..00000000000 --- a/projects/mt-gox/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { bitcoin: { owners: bitcoinAddressBook.mtGox } } -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/mtgo/index.js b/projects/mtgo/index.js deleted file mode 100644 index c15d66462ad..00000000000 --- a/projects/mtgo/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') - -const lpToken = "0x2a382b6d2dac1cba6e4820fd04e3c2c14e1aa7b2"; -const treasuryAddress = "0xdE2957506B6dC883963fbE9cE45a94a8A22c6006"; -const mtgoToken = "0x1bc8547e3716680117d7ba26dcf07f2ed9162cd0"; -const poolAddress = "0x1781d2e9b4c7c0a3657411a64d2c1dfc50118772"; - -module.exports = { - iotex: { - tvl: async () => ({}), - pool2: sumTokensExport({ tokensAndOwners: [[lpToken, poolAddress]], lps:[lpToken]}), - // treasury: sumTokensExport({ tokensAndOwners: [[lpToken, treasuryAddress]], lps:[lpToken]}), - }, -}; diff --git a/projects/mtt-dex/index.js b/projects/mtt-dex/index.js deleted file mode 100644 index 5e0849fdf98..00000000000 --- a/projects/mtt-dex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('mtt_network', '0x6e9400a1501D934771cD9aeD16A3f33A0CE3F9f5')//blockchain, factory address \ No newline at end of file diff --git a/projects/mu-exchange/index.js b/projects/mu-exchange/index.js deleted file mode 100644 index 2ed3c82bd0c..00000000000 --- a/projects/mu-exchange/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - xdai: { - tvl: sumTokensExport({ owners: ['0x0d80d7f7719407523a09ee2ef7ed573e0ea3487a', '0x1946740274E0DC06649EE2bD0d545eB288C84604'], tokens: [ADDRESSES.xdai.SDAI] }), - } -} diff --git a/projects/muesliswap/index.js b/projects/muesliswap/index.js deleted file mode 100644 index 80616af1606..00000000000 --- a/projects/muesliswap/index.js +++ /dev/null @@ -1,109 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') -const { fetchURL } = require('../helper/utils') - - -async function staking() { - let totalAda = 0 - // Milk locked - const tvlMilk = ( - (await fetchURL("https://staking.muesliswap.com/milk-locked")).data + - (await fetchURL("https://staking.muesliswap.com/milk-vault-locked")).data - ) - if (tvlMilk.data <= 0) { - throw new Error("muesliswap tvl is below 0") - } - const infoMilk = (await fetchURL(`https://api.muesliswap.com/price/?base-policy-id=&base-tokenname="e-tokenname=4d494c4b"e-policy-id=8a1cfae21368b8bebbbed9800fec304e95cce39a2a57dc35e2e3ebaa`)).data - const priceMilk = parseFloat(infoMilk.price) - totalAda += priceMilk * tvlMilk / 1e6 - - // Myield locked - const tvlMyield = parseFloat((await fetchURL("http://staking.muesliswap.com/myield-info")).data[0]["amountStaked"]) / 1e6 - const infoMyield = (await fetchURL(`https://api.muesliswap.com/price/?base-policy-id=&base-tokenname="e-tokenname=4d5949454c44"e-policy-id=8f9c32977d2bacb87836b64f7811e99734c6368373958da20172afba`)).data - const priceMyield = parseFloat(infoMyield.price) - totalAda += priceMyield * tvlMyield / 1e6 - - return { - cardano: totalAda - } -} - - -async function adaTvl() { - let totalAda = 0 - - // fetch the prices of each traded token first - const adaPrices = new Map(Object.entries((await fetchURL("https://api.muesliswap.com/defillama/prices")).data)) - - /* // then first accumulate over the legacy orderbook - const orderbookV1 = (await fetchURL("https://orders.muesliswap.com/all-orderbooks")).data - const vOrderbookV1 = orderbookV1.map(ob => { - if (ob.fromToken === ".") { - const totalBuy = ob.buy.map(o => parseFloat(o.totalPrice)).reduce((p, c) => p + c, 0) - const totalSell = ob.sell.map(o => parseFloat(o.amount)).reduce((p, c) => p + c, 0) - // Find the price (we need to convert the tokenname to hex first for this) - const policyId = ob.toToken.split('.')[0] - const name = Buffer.from(ob.toToken.split('.', 2)[1]).toString('hex').toLowerCase() - const price = (adaPrices.get(policyId + '.' + name)?.bidPrice ?? 0) / 1e6 - return (totalBuy + totalSell * price) - } else { - const totalBuy = ob.buy.map(o => parseFloat(o.totalPrice)).reduce((p, c) => p + c, 0) - const totalSell = ob.sell.map(o => parseFloat(o.amount)).reduce((p, c) => p + c, 0) - // Find the price (we need to convert the tokenname to hex first for this) - const fromPolicyId = ob.fromToken.split('.')[0] - const fromName = Buffer.from(ob.fromToken.split('.', 2)[1]).toString('hex').toLowerCase() - const fromPrice = (adaPrices.get(fromPolicyId + '.' + fromName)?.bidPrice ?? 0) / 1e6 - const toPolicyId = ob.toToken.split('.')[0] - const toName = Buffer.from(ob.toToken.split('.', 2)[1]).toString('hex').toLowerCase() - const toPrice = (adaPrices.get(toPolicyId + '.' + toName)?.bidPrice ?? 0) / 1e6 - return (totalBuy * fromPrice + totalSell * toPrice) - } - }) - totalAda += vOrderbookV1.reduce((p, c) => p + c, 0) */ - - // then accumulate over the orderbooks - const orderbookV2 = (await fetchURL("https://onchain.muesliswap.com/all-orderbooks")).data - const vOrderbookV2 = orderbookV2 - .map(ob => { - if (ob.fromToken === ".") { - const totalBuy = ob.orders - .filter(o => !o.providers.includes("muesliswapAMM")) - .map(o => parseInt(o.fromAmount)).reduce((p, c) => p + c, 0) - return totalBuy - } else { - const price = adaPrices.get(ob.fromToken)?.bidPrice ?? 0 - const totalAmountOtherToken = ob.orders - .filter(o => !o.providers.includes("muesliswapAMM")) - .map(o => parseInt(o.fromAmount)).reduce((p, c) => p + c, 0) - const totalSell = totalAmountOtherToken * price - return totalSell - } - }) - totalAda += vOrderbookV2.reduce((p, c) => p + c, 0) / 1e6 - - // and add pool TVLs - const pools = (await fetchURL("https://api.muesliswap.com/liquidity/pools?providers=muesliswap,muesliswap_clp,muesliswap_v2&only-verified=n")).data - const vPools = pools.map(p => { - const amountA = parseInt(p.tokenA.amount) * parseFloat(p.tokenA.priceAda) - const amountB = parseInt(p.tokenB.amount) * parseFloat(p.tokenB.priceAda) - return amountA + amountB - }) - totalAda += vPools.reduce((p, c) => p + c, 0) / 1e6 - - return { - cardano: totalAda - } -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: "The factory addresses are used to find the LP pairs on Smart BCH and Milkomeda. For Cardano we calculate the tokens on resting orders on the order book contracts. TVL is equal to the liquidity on the AMM plus the open orders in the order book", - cardano: { - tvl: adaTvl, - // staking - }, - milkomeda: { - tvl: getUniTVL({ factory: '0x57A8C24B2B0707478f91D3233A264eD77149D408', useDefaultCoreAssets: true }), - } -} diff --git a/projects/mufex/index.js b/projects/mufex/index.js deleted file mode 100644 index 8ca57725dbb..00000000000 --- a/projects/mufex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const owners = [ - '0x763ecd00eEA0CDAECBDF97d88c3e0fd5457eE5A0', - '0x16BEDB2Ab2aEf9023ff2cbF0C78135cA120c03C6', - '0x60b4B5e9FAc430698faE838D83bb7941d0fce5A2', -] - -module.exports = { - arbitrum: { tvl: sumTokensExport({ owners, tokens: [ADDRESSES.arbitrum.USDT] }) }, - polygon: { tvl: sumTokensExport({ owners, tokens: [ADDRESSES.polygon.USDT] }) }, - bsc: { tvl: sumTokensExport({ owners, tokens: [ADDRESSES.bsc.USDT] }) }, - mantle: { tvl: sumTokensExport({ owners, tokens: [ADDRESSES.mantle.USDT] }) }, -}; diff --git a/projects/mugen-fi/index.js b/projects/mugen-fi/index.js deleted file mode 100644 index 2e227ba4ed5..00000000000 --- a/projects/mugen-fi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require('../helper/staking') - -async function tvl(api) { - const reserveBalance = await api.call({ abi: 'uint256:reserveBalance', target: '0xf7be8476ae27d27ebc236e33020150b23a86f3dd'}) - return { - tether: reserveBalance / 1e18 - } -} - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - arbitrum: { - tvl, - staking: staking('0x25b9f82d1f1549f97b86bd0873738e30f23d15ea', '0xfc77b86f3ade71793e1eec1e7944db074922856e') - } -} \ No newline at end of file diff --git a/projects/mugglelink/index.js b/projects/mugglelink/index.js deleted file mode 100644 index ad522f47160..00000000000 --- a/projects/mugglelink/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const muglelinkAddr = "UQCSo48F-bJSIq-DLve3vVNfGFmmIR-qPlKPdZ2De8c_mPbE" - -module.exports = { - methodology: 'Counts MuggleLink address balance as TVL.', - ton: { - tvl: sumTokensExport({ owner: muglelinkAddr, tokens: [ADDRESSES.ton.TON, ADDRESSES.ton.USDT]}), - } -} diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js deleted file mode 100644 index c88669bc19a..00000000000 --- a/projects/muito-finance/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const MUTO_FARM = "0x30b0e706fB7a6BfaFcdcd0C8290d8542b5E9C5a0"; -const MUTO_MULTI_FARM = "0xBD08D27ED845a0b75e87A756226E6a2Bc1cDc4dA"; -const MUTO_MULTI_FARM2 = "0x8f04DE4bE0521F768e8aeB4b5b9c63466B16f1ae"; -const MUTO_MULTI_FARM3 = "0x79281F1796e8fcb899C412Aef5AFA37557b6936A"; -const NATIVE_TOKEN = "0x029d924928888697d3F3d169018d9d98d9f0d6B4".toLowerCase(); - -async function getTvl(api, farmAddress) { - let pools = await api.call({ abi: abiInfo.poolTvls, target: farmAddress }); - - pools - .filter((i) => i.assets.toLowerCase() !== NATIVE_TOKEN) - .forEach((i) => { - api.add(i.assets, i.tvl); - }); - - return await sumTokens2({ api, resolveLP: true }); -} - -async function tvl(api) { - const MUTO_V3_FARM = "0xD7372abc6693702fF09536ec3824780eB264b2eF"; - const MUTO_V3_FARM2 = "0xCd356c40A86c59955e20FcCF7Bb3b9Be15AF238D"; - const MUTO_V3_FARM3 = "0x1d75a3228576E3Cfe6Fc3d0aAE51eAbEE4E8D12e"; - const MUTO_V3_FARM4 = "0xE2711FAcAbA363e3E574a3860813D92F8f502311"; - const MUTO_V3_FARM5 = "0x9518540E76a2Ba7D98ACA33D961D19E8d3B9A063"; - await sumTokens2({ - api, - uniV3nftsAndOwners: [ - ["0x5752F085206AB87d8a5EF6166779658ADD455774", MUTO_V3_FARM], - ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM2], - ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM3], - ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM4], - ["0x5752F085206AB87d8a5EF6166779658ADD455774", MUTO_V3_FARM5], - ], - }); - await getTvl(api, MUTO_FARM); - await getTvl(api, MUTO_MULTI_FARM2); - await getTvl(api, MUTO_MULTI_FARM3); - return await getTvl(api, MUTO_MULTI_FARM); -} - -async function staking(api) { - let pools = await api.call({ abi: abiInfo.poolTvls, target: MUTO_FARM }); - let target = pools.find((i) => i.assets.toLowerCase() === NATIVE_TOKEN); - api.add(NATIVE_TOKEN, target.tvl); - return api.getBalances(); -} - -module.exports = { - mantle: { - tvl, - staking, - }, -}; - -const abiInfo = { - poolTvls: - "function getPoolTotalTvl() view returns (tuple(uint256 pid, address assets, uint256 tvl)[])", -}; diff --git a/projects/multex/index.js b/projects/multex/index.js deleted file mode 100644 index 4d88671860c..00000000000 --- a/projects/multex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shape', '0x74Eac16615ed3b5A8Df2d00d72C72780beDED02A') \ No newline at end of file diff --git a/projects/multialt-stacking/index.js b/projects/multialt-stacking/index.js deleted file mode 100644 index 58f325229a6..00000000000 --- a/projects/multialt-stacking/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const masterchef = "0xFFd33A71411fbA8B989Eca9F99EE7a908a2dEf4F"; -const token_USDT = ADDRESSES.moonriver.USDT; -const token_USDC = ADDRESSES.telos.ETH; - -module.exports = { - kava: { - tvl: sumTokensExport({ - owner: masterchef, - tokens: [token_USDT, token_USDC] - }) - } -} diff --git a/projects/multibit/abi.json b/projects/multibit/abi.json deleted file mode 100644 index a63c7233323..00000000000 --- a/projects/multibit/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pools": "function pools(uint256) view returns (address stakeToken, address rewardToken, uint256 totalReward, uint256 openAt, uint256 closeAt, uint256 lockTime, uint256 rewardReleased, uint256 rewardPerSecond, uint256 totalStakedAmount, uint256 accTokenPerShare, uint256 lastRewardTimestamp, bool paused)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/multibit/index.js b/projects/multibit/index.js deleted file mode 100644 index 4de7fa51faf..00000000000 --- a/projects/multibit/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const abi = require("./abi.json"); -const sdk = require('@defillama/sdk'); -const { getConfig } = require('../helper/cache') -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport: sumBRC20TokensExport } = require('../helper/chain/brc20') -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const BRIDGE_TOKENS = "https://api.multibit.exchange/support/token"; - -const config = { - // https://app.multibit.exchange/staking - ethereum: { stakingPool: "0x2EDfFbc62C3dfFD2a8FbAE3cd83A986B5bbB5495", tokens: [ADDRESSES.null, ADDRESSES.ethereum.USDT], chainKey: 'eth' }, - bsc: {}, - polygon: {}, - bouncebit: { chainKey: 'bb' }, -} -module.exports = { - methodology: `Tokens bridged via MultiBit are counted as TVL`, - bitcoin: { - tvl: sdk.util.sumChainTvls([sumTokensExport({ - owners: bitcoinAddressBook.multibit, - blacklistedTokens: ['MUBI', 'BSSB', 'savm'] // more SAVM is bridged than circulating supply according to coingecko & etherscan - }), sumBRC20TokensExport({ owners: bitcoinAddressBook.multibit, blacklistedTokens: ['MUBI', 'BSSB', 'savm'] })]), - }, -} -Object.keys(config).forEach(chain => { - const { stakingPool, chainKey = chain } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const data = await getConfig('multibit', BRIDGE_TOKENS) - const owner = data.find(v => v.chain === chainKey)?.real?.contract - if (!owner) return {} - - const tokens = Object.values(data.find(v => v.chain === chainKey)?.real?.data || [ADDRESSES.null]) - return api.sumTokens({ owner, tokens, }) - } - } - - if (stakingPool) { - module.exports[chain].staking = async (api) => { - const data = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.pools, target: stakingPool }) - const tokens = data.map(v => v.stakeToken) - return api.sumTokens({ owner: stakingPool, tokens, }) - } - } -}) diff --git a/projects/multichainMiner.js b/projects/multichainMiner.js deleted file mode 100644 index 0c7259773b1..00000000000 --- a/projects/multichainMiner.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensExport } = require('./helper/unwrapLPs'); - -const minedTokens = { - 'cake': '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', - 'busd': ADDRESSES.bsc.BUSD, - 'matic': ADDRESSES.null, - 'ftm': ADDRESSES.null, - 'avax': ADDRESSES.null, - 'usdc': ADDRESSES.polygon.USDC, // polygon - 'doge': '0xba2ae424d960c26247dd6c32edc70b295c744c43', // bsc - 'eth': ADDRESSES.bsc.ETH // bsc -}; -const minerContracts = { - 'cake': '0xD5d38f1815b4555527DE075a584268E08c5909EA', - 'busd': '0xe5973C042Cda75Dacd7bF36B3E7C7F1Ea2980A25', - 'matic': '0xf08665261ef76E56e732c711330e905020E445DA', - 'ftm': '0x69e7D335E8Da617E692d7379e03FEf74ef295899', - 'avax': '0x0c01328A0D8E996433Dd9720F40D896089eb966D', - 'usdc': '0xFF53b9822E114c0AE46cBdE4F7b4C642f8F9bbAA', // polygon - 'doge': '0x026d814935a053D10abA9987e4D047Aa9369c97E', // bsc - 'eth': '0x212A3A41a0e58CCdc86F013b003d4afF805a958c' // bsc -}; - -const config = { - bsc: { - keys: ['cake', 'eth', 'doge', 'busd'], - }, - polygon: { - keys: ['matic', 'usdc'], - }, - fantom: { - keys: ['ftm'], - }, - avax: { - keys: ['avax'], - }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { keys } = config[chain] - const owners = keys.map(i => minerContracts[i]) - const tokens = keys.map(i => minedTokens[i]) - module.exports[chain] = { tvl: sumTokensExport({ tokensAndOwners2: [tokens, owners], })} -}) \ No newline at end of file diff --git a/projects/multichainz/index.js b/projects/multichainz/index.js deleted file mode 100644 index e092643e85d..00000000000 --- a/projects/multichainz/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const abi = { - getTokensForBorrowingArray: "function getTokensForBorrowingArray() view returns ((address tokenAddress, uint256 LTV, uint256 rate, string name, uint256 liquidationThreshold)[])", - getTotalTokenBorrowed: "function getTotalTokenBorrowed(address tokenAddress) view returns (uint256)", - getTokensForLendingArray: "function getTokensForLendingArray() view returns ((address tokenAddress, uint256 LTV, uint256 rate, string name, uint256 liquidationThreshold)[])", - getTotalTokenSupplied: "function getTotalTokenSupplied(address tokenAddress) view returns (uint256)", - getTotalEthValue: "function getTotalEthValue() view returns (uint256)" -} - -const config = { - plume: { pool: '0x8bd47bC14f38840820d1DC7eD5Eb57b85d2c7808', deprecated: true }, - plume_mainnet: { pool: '0x3AF7D19aAeCf142C91FF1A8575A316807a0f611A' }, - ethereum: { pool: '0xf0523452484491515686936bEb976B41a45fD3a9', isStakingPool: true }, - arbitrum: {pool: '0x0a01b006c471032b3ec816ede297c05c4459d6c7'}, - base: {pool: '0xD2E1d1bBbC963DE56F27C4c078f9622F7a723601'} - -} - -async function getTokens(api, pool) { - if(pool == config.ethereum.pool){ - - const totalStaked = await api.call({ abi: abi.getTotalEthValue, target: pool }) - - return { [ADDRESSES.ethereum.WETH]: totalStaked } - - }else{ - const tokenBorrowed = await api.call({ abi: abi.getTokensForBorrowingArray, target: pool }) - const tokenLending = await api.call({ abi: abi.getTokensForLendingArray, target: pool }) - return [...new Set(tokenLending.concat(tokenBorrowed).map(log => log.tokenAddress))] - } -} - -const tvl = async (api) => { - const chainConfig = config[api.chain] - if (!chainConfig || chainConfig.deprecated) return {} - - const { pool: poolAddress, isStakingPool } = chainConfig - - const tokens = await getTokens(api, poolAddress) - // Note: This counts all tokens held by the pool contract - // For lending protocols, this includes both supplied and borrowed amounts - // DefiLlama will automatically subtract borrowed amounts when both tvl and borrowed functions are exported - - if (isStakingPool) { - // For Ethereum staking pool, tokens is an object with ETH balance - return tokens - } - - return api.sumTokens({ owner: poolAddress, tokens }) -} - - - -const borrowed = async (api) => { - const { pool } = config[api.chain] - const tokens = (await getTokens(api, pool)).filter(addr => addr.toLowerCase() !== ADDRESSES.null) - - // For plume_mainnet, avoid multiCall due to Multicall3 issues - if (api.chain === 'plume_mainnet') { - // Make individual calls instead of multiCall - for (const token of tokens) { - const bal = await api.call({ abi: abi.getTotalTokenBorrowed, target: pool, params: [token] }) - api.add(token, bal) - } - } else { - const bals = await api.multiCall({ abi: abi.getTotalTokenBorrowed, calls: tokens, target: pool }) - api.add(tokens, bals) - } -} - -module.exports.methodology = "Counts the tokens locked in the multichainz pool contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. The TVL calculation includes all tokens held by the pool contract, and DefiLlama automatically subtracts borrowed amounts to show available liquidity." -Object.entries(config).forEach(([chain, { deprecated, isStakingPool }]) => { - module.exports[chain] = deprecated - ? { tvl: () => ({}), borrowed: () => ({}) } - : isStakingPool ? {tvl} : { tvl, borrowed } -}) - diff --git a/projects/multipli/index.js b/projects/multipli/index.js deleted file mode 100644 index 6401f469a21..00000000000 --- a/projects/multipli/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const axios = require("axios") - - -async function getTvlByChain(chain) { - const tvl_response = (await axios.get("https://api.multipli.fi/multipli/v1/external-aggregator/defillama/tvl/")) - const tvl = tvl_response.data['payload'][chain] - - return tvl -} - - -module.exports = { - timetravel: false, - ethereum: { - tvl: () => getTvlByChain('ethereum') - }, - bsc: { - tvl: () => getTvlByChain('bsc') - }, - avax:{ - tvl: () => getTvlByChain('avax') - } -} - diff --git a/projects/multiplierfinance/abi.json b/projects/multiplierfinance/abi.json deleted file mode 100644 index c86b1c6c523..00000000000 --- a/projects/multiplierfinance/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "getReserves": "address[]:getReserves", - "getReserveData": "function getReserveData(address _reserve) view returns (uint256 totalLiquidity, uint256 availableLiquidity, uint256 totalBorrowsStable, uint256 totalBorrowsVariable, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 utilizationRate, uint256 liquidityIndex, uint256 variableBorrowIndex, address mTokenAddress, uint40 lastUpdateTimestamp)", - "totalSupply": "uint256:totalSupply", - "getNoOfErc20s": "uint256:getNoOfErc20s", - "erc20List": "function erc20List(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/multiplierfinance/index.js b/projects/multiplierfinance/index.js deleted file mode 100644 index d0033b5e017..00000000000 --- a/projects/multiplierfinance/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const YieldContract = "0xE4Baf69B887843aB6A0e82E8BAeA49010fF619af"; -const LendingPool = "0xbc3534b076EDB8E8Ef254D81b81DC193c53057F7"; -const LendingPoolV2 = "0x503fba251cdc4c06a1eeea4faf89e3fafc5923a6"; - -const ethTvl = async (api) => { - const tokens = await api.fetchList({ lengthAbi: abi.getNoOfErc20s, itemAbi: abi.erc20List, target: YieldContract }) - tokens.push(nullAddress) - return sumTokens2({ tokens, owner: YieldContract, }) -}; - -async function getReservesData(api) { - const tokens = await api.call({ abi: abi.getReserves, target: LendingPool, }) - const res = await api.multiCall({ abi: abi.getReserveData, target: LendingPool, calls: tokens, }) - tokens.map((v, i) => res[i].token = v) - return res -} - -async function tvl(api) { - const data = await getReservesData(api) - const tokensAndOwners = data.map(i => ([i.token, i.mTokenAddress])) - return sumTokens2({ tokensAndOwners, api, }) -} - -async function borrowed(api) { - const data = await getReservesData(api) - data.forEach(i => api.add(i.token, i.totalBorrowsVariable)) - return api.getBalances() -} - -async function tvlV2(api) { - const data = await getReservesDataV2(api) - const tokensAndOwners = data.map(i => ([i.token, i.aTokenAddress])) - return sumTokens2({ tokensAndOwners, api, }) -} - -async function borrowedV2(api) { - const data = await getReservesDataV2(api) - const supplyVariable = await api.multiCall({ abi: 'erc20:totalSupply', calls: data.map(i => i.variableDebtTokenAddress), }) - const supplyStable = await api.multiCall({ abi: 'erc20:totalSupply', calls: data.map(i => i.stableDebtTokenAddress), }) - data.forEach((i, idx) => { - api.add(i.token, supplyVariable[idx]) - api.add(i.token, supplyStable[idx]) - }) - return api.getBalances() -} - - -async function getReservesDataV2(api) { - const tokens = await api.call({ abi: abiv2.getReservesList, target: LendingPoolV2, }) - const res = await api.multiCall({ abi: abiv2.getReserveData, target: LendingPoolV2, calls: tokens, }) - tokens.map((v, i) => res[i].token = v) - return res -} - -const abiv2 = { - getReservesList: "address[]:getReservesList", - getReserveData: "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))", -} - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - bsc: { - tvl: sdk.util.sumChainTvls([tvl, tvlV2]), - borrowed: sdk.util.sumChainTvls([borrowedV2, ]), - }, -}; diff --git a/projects/mummy/index.js b/projects/mummy/index.js deleted file mode 100644 index fb5898d8f63..00000000000 --- a/projects/mummy/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); -const { mergeExports } = require("../helper/utils"); - -//Fantom -const fantomVault = "0xA6D7D0e650aa40FFa42d845A354c12c2bc0aB15f"; -const fantomStaking = "0x727dB8FA7861340d49d13ea78321D0C9a1a79cd5"; -const fantomMMY = "0x01e77288b38b416F972428d562454fb329350bAc"; - -//FantomV2 -const fantomV2Vault = "0x7e9E9d925846B110B025041cfdF9942f2C401F4F"; -const fantomV2Staking = "0x2301d1AF7f00FfF41F8ecb250eee399972d23530"; - -//Optimism -const opVault = "0xA6D7D0e650aa40FFa42d845A354c12c2bc0aB15f"; -const opStaking = "0x04f23404553fcc388Ec73110A0206Dd2E76a6d95"; -const opMMY = "0x47536f17f4ff30e64a96a7555826b8f9e66ec468"; -//Arbitrum -const arbVault = "0x304951d7172bCAdA54ccAC1E4674862b3d5b3d5b"; -const arbStaking = "0x52cC60893d3Bd8508baAB835620CbF9ddfA0A13C"; -const arbMMY = "0xA6D7D0e650aa40FFa42d845A354c12c2bc0aB15f"; - -const baseVault = "0xA6D7D0e650aa40FFa42d845A354c12c2bc0aB15f"; -const baseStaking = "0xFfB69477FeE0DAEB64E7dE89B57846aFa990e99C"; -const baseMMY = "0x0d8393CEa30df4fAFA7f00f333A62DeE451935C1"; -let tvlExports = mergeExports([ - { - fantom: { - staking: staking(fantomV2Staking, fantomMMY), - tvl: gmxExports({ vault: fantomV2Vault }) - } - }, - { - fantom: { - staking: staking(fantomStaking, fantomMMY), - tvl: gmxExports({ vault: fantomVault }) - }, - optimism: { - staking: staking(opStaking, opMMY), - tvl: gmxExports({ vault: opVault }) - }, - arbitrum: { - staking: staking(arbStaking, arbMMY), - tvl: gmxExports({ vault: arbVault }) - }, - base: { - staking: staking(baseStaking, baseMMY), - tvl: gmxExports({ vault: baseVault }) - }, -}]); -tvlExports.hallmarks = [ - [1675242000, "sifu 2M deposit"] -]; -module.exports = tvlExports; diff --git a/projects/munchables-season2/index.js b/projects/munchables-season2/index.js deleted file mode 100644 index 95d1cc941b1..00000000000 --- a/projects/munchables-season2/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - blast: { - tvl: sumTokensExport({ - owner: "0xEA091311Fc07139d753A6BBfcA27aB0224854Bae", - tokens: [ADDRESSES.null, ADDRESSES.blast.USDB, ADDRESSES.blast.WETH, ADDRESSES.blast.BLAST], - }), - }, -}; \ No newline at end of file diff --git a/projects/munchables/index.js b/projects/munchables/index.js deleted file mode 100644 index e9ba0642347..00000000000 --- a/projects/munchables/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - // hallmarks: [ - // [1711487351,"Protocol Exploited"] - // ], - blast: { - tvl: sumTokensExport({ - owner: "0x29958E8E4d8a9899CF1a0aba5883DBc7699a5E1F", - tokens: [ADDRESSES.null, ADDRESSES.blast.USDB, ADDRESSES.blast.WETH], - }), - }, -}; diff --git a/projects/murica.js b/projects/murica.js deleted file mode 100644 index 5294ccf2dfb..00000000000 --- a/projects/murica.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - fantom: { - tvl: () => ({}), - staking: () => ({}), - pool2: () => ({}), - } -}; -module.exports.deadFrom = '2023-04-09' \ No newline at end of file diff --git a/projects/mushrooms.js b/projects/mushrooms.js deleted file mode 100644 index 40a843c5cff..00000000000 --- a/projects/mushrooms.js +++ /dev/null @@ -1,83 +0,0 @@ -const config = { - ethereum: { - vaults: [ - '0x0c0291f4c12f04da8b4139996c720a89d28ca069', - '0x1e074d6da2987f0cb5a44f2ab1c5bfeddd81f23f', - '0x6802377968857656fe8ae47fbece76aae588eef7', - '0x23b197dc671a55f256199cf7e8bee77ea2bdc16d', - '0x374513251ef47db34047f07998e31740496c6faa', - '0xb0f1a38F5531b398E2081c2F9E61EdD2A924b488', - '0x41e0c2a507415e25005b1713f5f68ad6648fcf43', - '0xb06661A221Ab2Ec615531f9632D6Dc5D2984179A', - '0x3edee5f69e9a8f88da9063b1aa78311e38dbe96c', - '0x037B39EdAE767EA692884D51fc697c54e777710e', - '0x076950237f8c0D27Ac25694c9078F96e535723BC', - '0x5DEDEC994C11aB5F9908f33Aed2947F33B67a449', - '0xe85e9fB53fe5E2fa74Dda1A1010555F55DbD347B', - '0xe28b1d0d667824e74b408a02c101cf0c0652d2ea', - '0x05c85ed5fd1a2088b42021f7ac42bad709da844a', - '0x1B428B6C389E25133bf0f466Fc5d3E2764F3582b', - ] - }, - bsc: { - vaults: [ - '0xa283aA7CfBB27EF0cfBcb2493dD9F4330E0fd304', - '0x64bdf61de87920515c4cb1bc05c7f3f7d6c9d555', - '0x386A8DCf07dc3Aa882Aa0A8f8Ee90473c177F6f3', - '0xa1c6670f5b040831156641a669f0dca318272f7f', - '0x73142be337c11f9c962b4aba80edebcfbc47e1e6', - '0x4dDf7F8Ad6457bECcDFEA9c11006a77A4307c94B', - '0xFE526BcD5aD38F28C685BDb045B4c1E30f19F224', - '0x064213bc8cd6980efE41A4247f0Ed5e99257E5f9', - '0x53e510f6242f841088e29c7d26a44c42aa2db200', - ] - }, - fantom: { - vaults: [ - '0xE71FD0dC4c0349C320053B865a95aE29c09b92B5', - '0xd21E83422335b21E2e11567c13780a3f3972c0E8', - '0x5f8757eA9CB135E904a7483F2bae780B9DDbd507', - '0xd324fbBDad6960e8003f8ec6B9D9D6B2D847fd12', - '0xe74358fEc47B55F94F5aCb4f32a30a36623Fc373', - '0x70b89c91ffcc6bd3325419ff63b23cd50d515bc2', - '0x3371d92e633f7a49fcfa9114e55dafc485bd413b', - '0xe09CD96100A0e9a19e064dc475568a428515d2e2', - '0x4471332148688fAA64705a39ec630A6AD692B40a', - '0x771fbBc372045424fE51Dc761F728870a5a7e933', - '0x91B6d34679fdEae095B3873b39c5f17C59044339', - ] - }, - polygon: { - vaults: [ - '0xa283aa7cfbb27ef0cfbcb2493dd9f4330e0fd304', - '0x0c0291f4c12f04da8b4139996c720a89d28ca069', - '0xe74358fEc47B55F94F5aCb4f32a30a36623Fc373', - '0xC126A5f0688E87E4069159ad9Bd3cbe4EeEaD165', - '0xa1c6670F5B040831156641a669F0DCa318272f7f', - '0x2255A52Cd5549b8AA04E4ED7C8AD730628f6C747', - ] - }, - avax: { - vaults: [ - '0xa33b55d868e57b20df957ddc2f044f09f676967b', - '0x78ff341f2db10c10a7562227c7a28bc93bb0fbcf', - '0xdd21bc823d58845f6126c9cef052a2d4340a07c8', - '0x8F288A56A6c06ffc75994a2d46E84F8bDa1a0744', - '0x4e504c6ca43cd1bbd9096a2c2e77a176d10910b1', - ] - } -} - -// node test.js projects/mushrooms.js -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - const vaults = config[chain].vaults - return api.erc4626Sum({ calls: vaults, permitFailure: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/musical-chairs/index.js b/projects/musical-chairs/index.js deleted file mode 100644 index b1869850cff..00000000000 --- a/projects/musical-chairs/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const sdk = require('@defillama/sdk'); - -// Actual deployed contract address on Arbitrum One -const CONTRACT_ADDRESS = "0xEDA164585a5FF8c53c48907bD102A1B593bd17eF"; - -async function tvl(api) { - // The TVL is the total ETH balance held by the game contract. - // This includes active player stakes and any accumulated, non-withdrawn commissions. - - // Use sdk.api.eth.getBalance to fetch the native token balance of the contract. - const balance = await sdk.api.eth.getBalance({ - target: CONTRACT_ADDRESS, - chain: api.chain, - block: api.block, - }); - - // The result from getBalance is an object, we need its 'output' property. - // The SDK's `add` function uses the zero address to represent the native token (ETH on Arbitrum). - api.add('0x0000000000000000000000000000000000000000', balance.output); -} - -module.exports = { - arbitrum: { - tvl, - }, - methodology: "TVL is calculated as the total ETH balance held in the MusicalChairsGame smart contract. This includes player stakes for active and pending games, as well as any accumulated but not yet withdrawn platform commissions.", - // Block number when your contract was deployed - start: 356832883, -}; diff --git a/projects/mustcometh/index.js b/projects/mustcometh/index.js deleted file mode 100644 index 096dc2812fd..00000000000 --- a/projects/mustcometh/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const {uniTvlExport} = require('../helper/unknownTokens') - -const FACTORY = "0x800b052609c355cA8103E06F022aA30647eAd60a"; - -module.exports = uniTvlExport('polygon', FACTORY) \ No newline at end of file diff --git a/projects/mute-cl/index.js b/projects/mute-cl/index.js deleted file mode 100644 index 95093aa3e07..00000000000 --- a/projects/mute-cl/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = { - misrepresentedTokens: true, - ...uniV3Export({ - era: { factory: '0x488A92576DA475f7429BC9dec9247045156144D3', fromBlock: 32830523}, - }) -}; - \ No newline at end of file diff --git a/projects/mute/index.js b/projects/mute/index.js deleted file mode 100644 index 831e482adb2..00000000000 --- a/projects/mute/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require('../helper/staking'); -const { getUniTVL } = require('../helper/unknownTokens'); - -const KOI = "0xa995ad25ce5eb76972ab356168f5e1d9257e4d05" -const veKOI = "0x98dB4e3Df6502369dAD7AC99f3aEE5D064721C4C" - - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ factory: '0x40be1cba6c5b47cdf9da7f963b6f761f4c60627d', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'sMLP' }), - staking: staking([veKOI], [KOI], ) - }, - methodology: "Counts liquidity in pools and KOI token in the veKOI contract", -}; - \ No newline at end of file diff --git a/projects/mutuari/index.js b/projects/mutuari/index.js deleted file mode 100644 index 4a50c9ea870..00000000000 --- a/projects/mutuari/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -async function tvl(api) { - const pool = await api.call({ target: '0x30ECf3806F62bf0ee33828DEb635620349Cc4D63', abi: "address:mutuariPool" }) - const tokens = await api.call({ target: pool, abi: "address[]:getReserves" }) - return sumTokens2({ api, owner: pool, tokens,}) -} -async function borrowed(api) { - const [_, borrowed] = await api.call({ target: '0x30ECf3806F62bf0ee33828DEb635620349Cc4D63', abi: "function getGeneralInfo() view returns (uint256 totalSupplied, uint256 totalBorrowed)" }) - api.addGasToken(borrowed) - return sumTokens2({ api }) -} - -module.exports = { - methodology: "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted.", - ftn: { tvl, borrowed }, -} diff --git a/projects/muuu/abi.json b/projects/muuu/abi.json deleted file mode 100644 index 346fbcc6de9..00000000000 --- a/projects/muuu/abi.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)", - "poolLength": "uint256:poolLength", - "coinsUint": "function coins(uint256 arg0) view returns (address)", - "coinsInt": "function coins(int128 arg0) view returns (address out)", - "coins": "function coins(uint256 arg0) view returns (address)", - "get_balances": "function get_balances(address _pool) view returns (uint256[8])", - "underlying": "address:underlying", - "exchangeRateStored": "uint256:exchangeRateStored", - "get_underlying_coins": "function get_underlying_coins(address _pool) view returns (address[8])", - "get_pool_from_lp_token": "function get_pool_from_lp_token(address arg0) view returns (address)", - "get_coins": "function get_coins(address _pool) view returns (address[8])", - "get_underlying_balances": "function get_underlying_balances(address _pool) view returns (uint256[8])", - "get_virtual_price_from_lp_token": "function get_virtual_price_from_lp_token(address _token) view returns (uint256)", - "get_virtual_price": "function get_virtual_price() view returns (uint256)", - "lockedSupply": "uint256:lockedSupply" -} \ No newline at end of file diff --git a/projects/muuu/index.js b/projects/muuu/index.js deleted file mode 100644 index 8e9fe9afc0b..00000000000 --- a/projects/muuu/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { tvl, staking } = require("./tvl"); - -const START_BLOCK = 903029; - -module.exports = { - misrepresentedTokens: true, - start: START_BLOCK, - astar: { - tvl, - staking, - }, -}; diff --git a/projects/muuu/tvl.js b/projects/muuu/tvl.js deleted file mode 100644 index a14e776707d..00000000000 --- a/projects/muuu/tvl.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const ABI = require("./abi.json"); -const { staking } = require('../helper/staking') - -const ZERO_ADDRESS = ADDRESSES.null; -const REGISTRY_ADDRESS = "0xDA820e20A89928e43794645B9A9770057D65738B"; -const BOOSTER_ADDRESS = "0x6d12e3dE6dAcDBa2779C4947c0F718E13b78cfF4"; -const MUKGL_ADDRESS = "0x5eaAe8435B178d4677904430BAc5079e73aFa56e"; -const MULAY_ADDRESS = "0xDDF2ad1d9bFA208228166311FC22e76Ea7a4C44D"; -const MUU_TOKEN = "0xc5BcAC31cf55806646017395AD119aF2441Aee37"; -const MUUU_REWARDS_ADDRESS = "0xB2ae0CF4819f2BE89574D3dc46D481cf80C7a255"; - -async function tvl(api) { - const [veKGL, veLAY] = await api.multiCall({ abi: 'erc20:totalSupply', calls: [MUKGL_ADDRESS, MULAY_ADDRESS] }) - api.add(ADDRESSES.astar.KGL, veKGL) - api.add(ADDRESSES.astar.LAY, veLAY) - const pools = await api.fetchList({ lengthAbi: ABI.poolLength, itemAbi: ABI.poolInfo, target: BOOSTER_ADDRESS }) - const supply = await api.multiCall({ abi: 'erc20:totalSupply', calls: pools.map(i => i.token) }) - let i = 0 - for (const pool of pools) await addTokensInPool(api, pool.lptoken, supply[i++]) -} - -module.exports = { - tvl, - staking: staking(MUUU_REWARDS_ADDRESS, MUU_TOKEN), -}; - -const poolMapping = { - '0x5c71534db6e54322943ad429209d97fa25bbfcd2': { pool:'0x4fD9011F0867e7e8AF7608Ad1BB969Da8b0aBa9B', tokenCount: 2 }, - '0xe12332a6118832cbafc1913ec5d8c3a05e6fd880': { pool:'0xe12332a6118832cbafc1913ec5d8c3a05e6fd880', tokenCount: 2 }, - '0xb91e7abcbf38d0cac1f99b062b75ae0c18e169d1': { pool:'0x578AA1be6D258677e80c9067711861dd981a663E', tokenCount: 2 }, - '0xdc1c5babb4dad3117fd46d542f3b356d171417fa': { pool:'0xdc1c5babb4dad3117fd46d542f3b356d171417fa', tokenCount: 2 }, -} - -async function addTokensInPool(api, lpToken, tokenBal) { - let pool = await api.call({ target: REGISTRY_ADDRESS, abi: ABI.get_pool_from_lp_token, params: lpToken, }) - let tokens = [] - let bals = [] - const mappingPool = poolMapping[lpToken.toLowerCase()] - const supply = await api.call({ abi: 'erc20:totalSupply', target: lpToken }) - if (pool === ZERO_ADDRESS && !mappingPool) { - api.add(lpToken, tokenBal) - return; - } - - if (mappingPool){ - const { pool , tokenCount } = mappingPool - bals = await api.multiCall({ abi: "function balances(uint256) view returns (uint256)", target: pool, calls: Array(tokenCount).fill(0).map((_, i) => i)}) - tokens = await api.multiCall({ abi: ABI.coins, target: pool, calls: Array(tokenCount).fill(0).map((_, i) => i)}) - } else { - tokens = await api.call({ abi: ABI.get_coins, target: REGISTRY_ADDRESS, params: pool }) - bals = await api.call({ abi: ABI.get_balances, target: REGISTRY_ADDRESS, params: pool }) - } - const ratio = tokenBal / supply - for (const t of tokens) { - if (t === ZERO_ADDRESS) continue; - const name = await api.call({ abi: 'string:name', target: t }) - if (name.includes('Kagla.fi')) await addTokensInPool(api, t, bals[tokens.indexOf(t)] * ratio) - else api.add(t, bals[tokens.indexOf(t)] * ratio) - } -} \ No newline at end of file diff --git a/projects/mux/abi.json b/projects/mux/abi.json deleted file mode 100644 index dc6eed37771..00000000000 --- a/projects/mux/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getChainStorage": "function getChainStorage() returns (tuple(tuple(uint32 shortFundingBaseRate8H, uint32 shortFundingLimitRate8H, uint32 fundingInterval, uint32 liquidityBaseFeeRate, uint32 liquidityDynamicFeeRate, uint96 mlpPriceLowerBound, uint96 mlpPriceUpperBound, uint32 lastFundingTime, uint32 sequence, uint32 strictStableDeviation) pool, tuple(bytes32 symbol, address tokenAddress, address muxTokenAddress, uint8 id, uint8 decimals, uint56 flags, uint32 initialMarginRate, uint32 maintenanceMarginRate, uint32 positionFeeRate, uint32 liquidationFeeRate, uint32 minProfitRate, uint32 minProfitTime, uint96 maxLongPositionSize, uint96 maxShortPositionSize, uint32 spotWeight, uint32 longFundingBaseRate8H, uint32 longFundingLimitRate8H, uint8 referenceOracleType, address referenceOracle, uint32 referenceDeviation, uint32 halfSpread, uint128 longCumulativeFundingRate, uint128 shortCumulativeFunding, uint96 spotLiquidity, uint96 credit, uint96 totalLongPosition, uint96 totalShortPosition, uint96 averageLongPrice, uint96 averageShortPrice, uint128 collectedFee, uint256 deduct)[] assets, tuple(uint8 dexId, uint8 dexType, uint8[] assetIds, uint32[] assetWeightInDEX, uint256[] totalSpotInDEX, uint32 dexWeight, uint256 dexLPBalance, uint256[] liquidityBalance)[] dexes, uint32 liquidityLockPeriod, uint32 marketOrderTimeout, uint32 maxLimitOrderTimeout, uint256 lpDeduct, uint256 stableDeduct, bool isPositionOrderPaused, bool isLiquidityOrderPaused) chain)", - "pool": "address:pool" -} \ No newline at end of file diff --git a/projects/mux/index.js b/projects/mux/index.js deleted file mode 100644 index 6d133580b4f..00000000000 --- a/projects/mux/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const abi = require("./abi.json"); -const mux3CoreAbi = require("./mux3CoreAbi.json"); -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const readerContract = { - arbitrum: '0x437CEa956B415e97517020490205c07f4a845168', - bsc: '0x2981Bb8F9c7f7C5b9d8CA5e41C0D9cBbd89C7489', - avax: '0xB33e3dDcE77b7679fA92AF77863Ae439C44c8519', - fantom: '0xfb0DCDC30BF892Ec981255e7133AEcb8ea642b76', - optimism: '0x572E9467b2585c3Ab6D9CbEEED9619Fd168254D5', -} - -const mux3CoreAddress = '0x85c8F4a67F4f9AD7b38e875c8FeDE7F4c878bFAc' - -async function getMux3Tvl(chain, block) { - // get all mux3 collateral pools - const { output: pools } = await sdk.api.abi.call({ - target: mux3CoreAddress, - abi: mux3CoreAbi.listCollateralPool, - chain, block, - }) - - // get all supported collateral tokens - const { output: collateralTokens } = await sdk.api.abi.call({ - target: mux3CoreAddress, - abi: mux3CoreAbi.listCollateralTokens, - chain, block, - }) - - // get balances of all collateral tokens in all collateral pools - return await sumTokens2({ chain, block, tokens: collateralTokens, owners: pools, }) -} - -async function tvl(chain, block) { - const { output: storage } = await sdk.api.abi.call({ - target: readerContract[chain], - abi: abi.getChainStorage, - chain, block, - }) - const { output: pool } = await sdk.api.abi.call({ - target: readerContract[chain], - abi: abi.pool, - chain, block, - }) - - const assets = storage[1] - const dexs = storage[2] - const balances = await sumTokens2({ chain, block, tokens: assets.map(i => i.tokenAddress), owner: pool, }) - - - dexs.forEach(dex => { - dex.liquidityBalance.forEach((balance, index) => { - const assetId = dex.assetIds[index] - const token = assets.find(t => assetId === t.id) - sdk.util.sumSingleBalance(balances,chain+':'+token.tokenAddress,balance.toString()) - }) - }) - - // get mux3 tvl, only for arbitrum - if (chain === 'arbitrum') { - sdk.util.mergeBalances(balances, await getMux3Tvl(chain, block)) - } - - return balances -} - -Object.keys(readerContract).forEach(chain => { - module.exports[chain] = { - tvl: async (_, _b, {[chain]: block}) => { - return tvl(chain, block) - } - } -}) \ No newline at end of file diff --git a/projects/mux/mux3CoreAbi.json b/projects/mux/mux3CoreAbi.json deleted file mode 100644 index d53a22c900d..00000000000 --- a/projects/mux/mux3CoreAbi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "listCollateralPool": "function listCollateralPool() returns (address[] pools)", - "listCollateralTokens": "function listCollateralTokens() returns (address[] tokens)" -} \ No newline at end of file diff --git a/projects/mvcswap/index.js b/projects/mvcswap/index.js deleted file mode 100644 index cc43d385904..00000000000 --- a/projects/mvcswap/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { transformDexBalances } = require('../helper/portedTokens') -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require("../helper/http") - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - mvc: { - tvl: async () => { - const result = await get('https://api.mvcswap.com/swap/allpairs', { - headers: { - 'Accept-Encoding': 'gzip' - } - }) - const data = result.data; - return transformDexBalances({ - chain: 'mvc', - data: Object.keys(data).map(i => ({ - token0: data[i].token1.tokenID || ADDRESSES.null, - token1: data[i].token2.tokenID || ADDRESSES.null, - token0Bal: data[i].token1Amount, - token1Bal: data[i].token2Amount, - })) - }) - } - } -} diff --git a/projects/mversex/index.js b/projects/mversex/index.js deleted file mode 100644 index 64f498af32e..00000000000 --- a/projects/mversex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - kava: { - tvl: getUniTVL({ factory: "0x266F951c525130a4E230bB40F0e3525C6C99B9c5", useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/mvl/index.js b/projects/mvl/index.js deleted file mode 100644 index 40466f6d890..00000000000 --- a/projects/mvl/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { stakings } = require("../helper/staking.js"); -const { pool2s } = require("../helper/pool2.js"); - -const ETH_LP = "0x3c8ad34155b83ddb7f43119a19503d34ed2b5c7a"; // ETH-MVL LP Token -const ETH_SINGLE = "0xA849EaaE994fb86Afa73382e9Bd88c2B6b18Dc71"; // MVL Token -const BSC_LP = "0xE01eDA650632986B2E5B8167F629D7C7c759D4FD"; // BNB-bMVL LP Token -const BSC_SINGLE = "0x5f588EfAf8eB57e3837486e834fC5a4E07768D98"; // bMVL Token - -const config = { - ethereum: { - token: ETH_SINGLE, - lp: ETH_LP, - staking: [ - "0x92Ec27935cE7b523cc70C2fFaf0728F1Fa6425dF", - "0x1BdFAa7aFAa454F491b5de40d24d681F0F3Adb1A", - "0xB87A16fD301b3CFed03982D99840970328d185aD", - "0x742AB08EEc9f940beF657394720090F163f535Cc" - ], - pool2: [ - "0x34fDA56b5c9Aa52DF9fa51b01666683b7b1434d6", - "0xC0496C7B9D7150A81bD6fF1d015e95668BD4abeD", - "0xf7EaeceBd69430b31E711df8BD9DD215a49B6d80", - ], - - }, - bsc: { - token: BSC_SINGLE, - lp: BSC_LP, - staking: [ - "0x0A3AC95445F3e02cC80267f02B9669ed75b71043", - "0x121E257f4A6fa763012eF0b6b6f68905F6D4b721", - "0x5a54EC1e6DA36f19a806A9168fD4270fEf697354", - "0x8CeB404D939c293ad070A5B33fc197df3aF1AbB7" - ], - pool2: [ - "0xC948622856a40Efd50d74BA6e3624FE7100A95Ef", - "0xc81632E77Ea7262137EA815DC8BA7a47A5a01ab1", - "0xDD71D03d70848F79a1C6df6eB0f6623236BBD85B" - ], - - }, -}; - -Object.keys(config).forEach((chain) => { - const { lp, token, staking, pool2, tvl } = config[chain]; - module.exports[chain] = { - tvl: () => ({}), - staking: stakings(staking, token, chain), - pool2: pool2s(pool2, [lp], chain), - }; -}) -module.exports.methodology = "MVL Single Staking TVL is calculated by multiplying the locked MVL quantity by the MVL price that changes in real time. MVL LP Staking TVL is calculated by multiplying the locked LP quantity by the LP price that changes in real time.At this time, the LP price changes depending on the prices of ETH and MVL, and the prices of BNB and bMVL." diff --git a/projects/mxczkevm/index.js b/projects/mxczkevm/index.js deleted file mode 100644 index badd051609e..00000000000 --- a/projects/mxczkevm/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - arbitrum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x4C3924E619E2eE83cFD565c1432cb621ca8af7A0", - "0x3160284BC2F4d7F5b170C70a0Ee0bC5333c7F39e" - ], - tokens: ["0x0f813f4785b2360009f9ac9bf6121a85f109efc6", "0x12e96c2bfea6e835cf8dd38a5834fa61cf723736"], - fetchCoValentTokens: true, - }), - } -}; diff --git a/projects/mycelium/index.js b/projects/mycelium/index.js deleted file mode 100644 index 18de56cbdf7..00000000000 --- a/projects/mycelium/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { gmxExports } = require('../helper/gmx') -const { staking } = require('../helper/staking') - -module.exports = { - methodology: "We count liquidity in Perpetual Swaps based on the value of tokens in the MLP pool.", - arbitrum: { - tvl: gmxExports({ vault: '0xDfbA8AD57d2c62F61F0a60B2C508bCdeb182f855', }), - staking: staking('0xF9B003Ee160dA9677115Ad3c5bd6BB6dADcB2F93', '0xC74fE4c715510Ec2F8C61d70D397B32043F55Abe') - }, -} \ No newline at end of file diff --git a/projects/mymetatrader/index.js b/projects/mymetatrader/index.js deleted file mode 100644 index 2f9c3025c14..00000000000 --- a/projects/mymetatrader/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const vault = "0x992EB7040b66b13abEa94E2621D4E61d5CE608BD"; -const usdc = ADDRESSES.arbitrum.USDC; - -const stakingPool = "0xBdB00022030C9D715A10F2fCeDb19e99020Aa357"; -const mmtToken = "0x27d8de4c30ffde34e982482ae504fc7f23061f61"; - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [usdc, vault], - ], - }), - staking: staking(stakingPool, mmtToken), - }, - hallmarks: [[1677765600, "Closed mainnet"]], -}; diff --git a/projects/mymine/index.js b/projects/mymine/index.js deleted file mode 100644 index d9662e8a675..00000000000 --- a/projects/mymine/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x295cf2cC1e7236753EE6b280C066FcE5B22601be', - nativeToken: '0x3d3121D2aeDff5e11E390027331CB544Bc3D2C59' -}) \ No newline at end of file diff --git a/projects/myriad-markets/index.js b/projects/myriad-markets/index.js deleted file mode 100644 index 3e01a244f50..00000000000 --- a/projects/myriad-markets/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - abstract: { owner: '0x3e0F5F8F5Fb043aBFA475C0308417Bf72c463289', tokens: [ADDRESSES.abstract.USDC] }, - linea: { owner: '0x39e66ee6b2ddaf4defded3038e0162180dbef340', tokens: [ADDRESSES.linea.USDC] }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/myso-v2/index.js b/projects/myso-v2/index.js deleted file mode 100644 index 610e65d6bc8..00000000000 --- a/projects/myso-v2/index.js +++ /dev/null @@ -1,195 +0,0 @@ -const zlib = require("zlib"); -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getCache, setCache } = require("../helper/cache"); -const { get } = require("../helper/http"); - -const brotliDecode = (stream) => { - return new Promise((resolve, reject) => { - let responseBuffer = []; - - stream.on("data", function handleStreamData(chunk) { - responseBuffer.push(chunk); - }); - - stream.on("error", function handleStreamError(err) { - reject(err); - }); - - stream.on("end", function handleStreamEnd() { - let responseData = Buffer.concat(responseBuffer); - - responseData = responseData.toString("utf8"); - - resolve(JSON.parse(responseData)); - }); - }); -}; - -const getContracts = async (chainId) => { - const response = await get( - `https://api.myso.finance/chainIds/${chainId}/contracts`, - { - responseType: "stream", - decompress: false, - transformResponse: (data) => { - return data.pipe(zlib.createBrotliDecompress()); - }, - } - ); - - const data = await brotliDecode(response); - - return data.contracts; -}; - -const CoveredCallStrategiesAbi = - "function strategies(uint256) view returns (address underlying, uint128 maxDeposits, uint128 minDeposits, uint128 startTime, uint128 tenor, uint128 minStrike, uint128 subscribeEndTime, uint256 totalDeposits, uint128 tokenRewardsPerDeposit)"; - -const whaleMatchTotalSubscriptionsAbi = - "function totalSubscriptions(address) view returns (uint256)"; - -const getBlitzMatchBalances = async (api, contracts, fromBlock) => { - const vaultFactory = contracts?.find( - (contract) => contract.type === "vault_factory" - )?.contractAddr; - - if (!vaultFactory); - - const logs = await getLogs({ - api, - target: vaultFactory, - eventAbi: - "event NewVaultCreated(address indexed newLenderVaultAddr, address vaultOwner, uint256 numRegisteredVaults)", - onlyArgs: true, - fromBlock, - }); - - if (!logs.length) return; - - let ownerTokens = logs.map((i) => { - return [ - contracts - .filter((contract) => contract.type === "token") - .map((contract) => contract.contractAddr), - i.newLenderVaultAddr, - ]; - }); - - return sumTokens2({ api, ownerTokens }); -}; - -const getCoveredCallOfTheWeekBalances = async (api, contracts) => { - const coveredCallOfTheWeeks = contracts?.filter( - (contract) => contract.type === "p2p" - ); - - if (!coveredCallOfTheWeeks) return; - - const coveredCallOfTheWeekStrategies = await api.multiCall({ - calls: coveredCallOfTheWeeks.map((contract) => ({ - target: contract?.contractAddr, - params: [contract.poolData.strategyId], - })), - abi: CoveredCallStrategiesAbi, - }); - - if (!coveredCallOfTheWeekStrategies.length) return; - - coveredCallOfTheWeekStrategies.forEach((strategy) => - api.add(strategy.underlying, strategy.totalDeposits) - ); -}; - -const getWhaleMatchBalances = async (api, contracts, fromBlock) => { - const fundingPoolFactory = contracts.find( - (contract) => contract.type === "funding_pool_factory" - )?.contractAddr; - - const fundingPools = - contracts.filter((contract) => contract.type === "funding_pool") || []; - - if (!(fundingPoolFactory && fundingPools.length)) return; - - const logs = await getLogs({ - api, - target: fundingPoolFactory, - eventAbi: - "event LoanProposalCreated(address indexed loanProposalAddr, address indexed fundingPool, address indexed sender, address collToken, uint256 arrangerFee, uint256 unsubscribeGracePeriod, uint256 numLoanProposals)", - onlyArgs: true, - fromBlock, - }); - - if (logs.length) { - const loanProposalBalances = await api.multiCall({ - calls: logs.map((log) => ({ - target: log?.fundingPool, - params: [log.loanProposalAddr], - })), - abi: whaleMatchTotalSubscriptionsAbi, - }); - const tokens = await api.multiCall({ - abi: "address:depositToken", - calls: logs.map((log) => log.fundingPool), - }); - api.add(tokens, loanProposalBalances); - } - - let tokensAndOwners = fundingPools.map((fundingPool) => { - return [fundingPool.loanCcyToken, fundingPool.contractAddr]; - }); - - return sumTokens2({ api, tokensAndOwners }); -}; - -async function tvl(api) { - const { fromBlock } = config[api.chain]; - - let contracts; - - try { - contracts = await getContracts(api.chainId); - await setCache("myso-v2", api.chain, contracts); - } catch (e) { - contracts = await getCache("myso-v2", api.chain); - } - - await getBlitzMatchBalances(api, contracts, fromBlock); - await getCoveredCallOfTheWeekBalances(api, contracts); - - return getWhaleMatchBalances(api, contracts, fromBlock); -} - -const config = { - mantle: { - fromBlock: 3471026, - }, - ethereum: { - fromBlock: 18213104, - }, - arbitrum: { - fromBlock: 143181867, - }, - base: { - fromBlock: 6239916, - }, - evmos: { - fromBlock: 18112793, - }, - neon_evm: { - fromBlock: 237206849, - }, - telos: { - fromBlock: 324711636, - }, - linea: { - fromBlock: 2118418, - }, - sei: { - fromBlock: 79773668, - }, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/myso/index.js b/projects/myso/index.js deleted file mode 100644 index c1ba6133ea7..00000000000 --- a/projects/myso/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const zlib = require("zlib"); -const { getCache, setCache, } = require("../helper/cache"); -const { get } = require("../helper/http"); - -const mapChainToChainId = { - ethereum: 1, - arbitrum: 42161, -}; - -const brotliDecode = (stream) => { - return new Promise((resolve, reject) => { - let responseBuffer = []; - - stream.on("data", function handleStreamData(chunk) { - responseBuffer.push(chunk); - }); - - stream.on("error", function handleStreamError(err) { - reject(err); - }); - - stream.on("end", function handleStreamEnd() { - let responseData = Buffer.concat(responseBuffer); - - responseData = responseData.toString("utf8"); - - resolve(JSON.parse(responseData)); - }); - }); -}; - -const getPools = async (chainId) => { - const response = await get( - `https://api.myso.finance/chainIds/${chainId}/pools`, - { - decompress: false, - responseType: "stream", - transformResponse: (data) => { - return data.pipe(zlib.createBrotliDecompress()); - }, - } - ); - - const data = await brotliDecode(response); - - return data.pools.map((pool) => pool.poolAddress); -}; - -async function tvl(api) { - const { chain } = api - const chainId = mapChainToChainId[chain]; - let pools - try { - pools = await getPools(chainId) - await setCache('myso', chainId, pools) - } catch (e) { - pools = await getCache('myso', chainId) - } - - const data = await api.multiCall({ - abi: "function getPoolInfo() view returns (address _loanCcyToken, address _collCcyToken, uint256 _maxLoanPerColl, uint256 _minLoan, uint256 _loanTenor, uint256 _totalLiquidity, uint256 _totalLpShares, uint256 _baseAggrBucketSize, uint256 _loanIdx)", - calls: pools, - }); - const toa = pools - .map((owner, i) => [ - [data[i]._loanCcyToken, owner], - [data[i]._collCcyToken, owner], - ]) - .flat(); - return sumTokens2({ api, tokensAndOwners: toa, chain }); -} - -module.exports = { - ethereum: { tvl }, - arbitrum: { tvl: () => ({ }) }, - methodology: "token held as collateral + liquidity left to be borrowed", -}; diff --git a/projects/mystic-finance-myplume/index.js b/projects/mystic-finance-myplume/index.js deleted file mode 100644 index 32bc187ece5..00000000000 --- a/projects/mystic-finance-myplume/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const token = '0x5c982097b505A3940823a11E6157e9C86aF08987' - -async function tvl(api) { - const supply = await api.call({ abi: 'uint256:totalSupply', target: token, }); - api.add(ADDRESSES.null, supply) -} - -module.exports = { - methodology: 'Retrieve the total myPLUME supply. myPLUME is a liquid staking token for PLUME, the native token on the Plume network. The TVL is calculated by summing the total supply of myPLUME.', - plume_mainnet: { - tvl - } -} diff --git a/projects/mystic-finance/index.js b/projects/mystic-finance/index.js deleted file mode 100644 index e4395cd79bf..00000000000 --- a/projects/mystic-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getMorphoVaultTvl } = require('../helper/morpoho'); - -const config = { - plume_mainnet: { - morphoVaults: [ - '0xc0Df5784f28046D11813356919B869dDA5815B16', - '0x0b14D0bdAf647c541d3887c5b1A4bd64068fCDA7', - '0xBB748a1346820560875CB7a9cD6B46c203230E07' - ], - }, -} - -module.exports = { - doublecounted: true, - plume_mainnet: { - tvl: getMorphoVaultTvl(undefined, { - vaults: config.plume_mainnet.morphoVaults, - morphoFactory: "0x2525D453D9BA13921D5aB5D8c12F9202b0e19456", - }), - }, -} \ No newline at end of file diff --git a/projects/myswap-cl/index.js b/projects/myswap-cl/index.js deleted file mode 100644 index 67bb5407f45..00000000000 --- a/projects/myswap-cl/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens } = require("../helper/chain/starknet"); -const { getConfig } = require('../helper/cache') - -const factory = // myswap cl version amm contract - "0x1114c7103e12c2b2ecbd3a2472ba9c48ddcbf702b1c242dd570057e26212111"; - -async function tvl(api) { - const tokenList = await getConfig( // get token list from api // 0 padded - 'myswap-cl', "https://myswap-cl-charts.s3.us-east-1.amazonaws.com/tokenList.json"); - - const tokens = Object.values(tokenList); - - return sumTokens({ api, owner: factory, tokens: tokens, }); -} - -module.exports = { - starknet: { - tvl, - }, -}; diff --git a/projects/myswap/abi.js b/projects/myswap/abi.js deleted file mode 100644 index 734adf1345c..00000000000 --- a/projects/myswap/abi.js +++ /dev/null @@ -1,103 +0,0 @@ -const allAbi = [ - { - "name": "Uint256", - "size": 2, - "type": "struct", - "members": [ - { - "name": "low", - "type": "felt", - "offset": 0 - }, - { - "name": "high", - "type": "felt", - "offset": 1 - } - ] - }, - { - "name": "Pool", - "size": 10, - "type": "struct", - "members": [ - { - "name": "name", - "type": "felt", - "offset": 0 - }, - { - "name": "token_a_address", - "type": "felt", - "offset": 1 - }, - { - "name": "token_a_reserves", - "type": "Uint256", - "offset": 2 - }, - { - "name": "token_b_address", - "type": "felt", - "offset": 4 - }, - { - "name": "token_b_reserves", - "type": "Uint256", - "offset": 5 - }, - { - "name": "fee_percentage", - "type": "felt", - "offset": 7 - }, - { - "name": "cfmm_type", - "type": "felt", - "offset": 8 - }, - { - "name": "liq_token", - "type": "felt", - "offset": 9 - } - ] - }, - { - "name": "get_total_number_of_pools", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "num", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "Uint256" - }, - { - "name": "get_pool", - "type": "function", - "inputs": [ - { - "name": "pool_id", - "type": "felt" - } - ], - "outputs": [ - { - "name": "pool", - "type": "Pool" - } - ], - "stateMutability": "view" - }, -] - -const factoryAbi = {} -allAbi.forEach(i => factoryAbi[i.name] = i) - -module.exports = { - factoryAbi, allAbi, -} \ No newline at end of file diff --git a/projects/myswap/api.js b/projects/myswap/api.js deleted file mode 100644 index 7294f1f51e5..00000000000 --- a/projects/myswap/api.js +++ /dev/null @@ -1,32 +0,0 @@ -const { call, multiCall, parseAddress } = require('../helper/chain/starknet') -const { transformDexBalances } = require('../helper/portedTokens') -const { factoryAbi, allAbi, } = require('./abi') - -async function tvl() { - const factory = '0x010884171baf1914edc28d7afb619b40a4051cfae78a094a55d230f19e944a28' - let pairCount = await call({ target: factory, abi: factoryAbi.get_total_number_of_pools}) - pairCount = +pairCount - const calls = [] - - for (let i = 1; i <= pairCount; i++) calls.push(i) - const reserves = await multiCall({ abi: factoryAbi.get_pool, calls, allAbi, target: factory, }) - - const data = [] - reserves.forEach((reserve) => { - data.push({ - token0: parseAddress(reserve.token_a_address), - token1: parseAddress(reserve.token_b_address), - token0Bal: reserve.token_a_reserves.low.toString(), - token1Bal: reserve.token_b_reserves.low.toString(), - }) - }) - - return transformDexBalances({chain:'starknet', data}) -} - -module.exports = { - hallmarks: [[1747094400, 'Sunset of MySwap']], - deadFrom: '2025-05-13', - timetravel: false, - starknet: { tvl } -} diff --git a/projects/myswap/index.js b/projects/myswap/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/myswap/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/myth-dualSTAKE/index.js b/projects/myth-dualSTAKE/index.js deleted file mode 100644 index 10926b3b48e..00000000000 --- a/projects/myth-dualSTAKE/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getApplicationBoxes, getAppGlobalState } = require("../helper/chain/algorand") - -const registryAppId = 2933409454 - -async function getDualSTAKEAppIDs() { - const registryBoxes = await getApplicationBoxes({ appId: registryAppId }); - const boxKeys = registryBoxes.map(({ name: base64Key }) => Buffer.from(base64Key, 'base64')); - const applicationIDs = boxKeys - .filter(key => key[0] === 97) // app boxes prefixed with "a" - .map(key => parseInt(key.slice(1).toString("hex"), 16)) - - return applicationIDs -} - -async function getStake() { - const appIds = await getDualSTAKEAppIDs() - let tvl = 0; - for (const appId of appIds) { - const { staked } = await getAppGlobalState(appId) - tvl += staked - } - return { algorand: tvl / 1e6 } -} - -module.exports = { - timetravel: false, - methodology: 'Returns total amount staked on the Myth Finance dualSTAKE protocol.', - algorand: { - tvl: async () => { - return getStake() - }, - } -} \ No newline at end of file diff --git a/projects/myx-finance/index.js b/projects/myx-finance/index.js deleted file mode 100644 index 7e5dbf29e8c..00000000000 --- a/projects/myx-finance/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -const config = { - arbitrum: { - factories: [{ vault: '0x8932aA60A7b5EfEFA8Ec3ee899Fd238D029d10c6', fromBlock: 175954437 },], - hypeVaults: ['0xfE47bD50f27c2C876Dd1B92A26dF3A5A5E65636C',], - }, - linea: { - factories: [{ vault: '0x03f61a185efEEEFdd3Ba032AFa8A0259337CEd64', fromBlock: 2390784 },], - hypeVaults: ['0x81398D55d9e58D9b528FdC38911851Fb1D5C2d45',], - }, - op_bnb: { - factories: [{ vault: '0xCB9724cf580C09f3Cd7391F7fE20b5BF9cC4C428', fromBlock: 35581884 },], - hypeVaults: ['0x685830C647A8554c5db7CcC9c1C7d86dfA0A2592',], - }, - bsc: { - factories: [{ vault: '0x22cEc08111BBae24D0b80BDA2a6503EaB9BA704b', fromBlock: 47537511 },], - hypeVaults: ['0xD986676EB65bFDB3160303f81FB81607a055c7Bd',], - }, -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; -}); - -async function tvl(api) { - const { factories, hypeVaults } = config[api.chain]; - const ownerTokens = [] - for (const { vault, fromBlock } of factories) { - - const logs = await getLogs({ - api, - target: vault, - eventAbi: 'event PairAdded ( address indexed indexToken, address indexed stableToken, address lpToken, uint256 index)', - onlyArgs: true, - fromBlock, - }) - - let tokens = logs.map(log => log.indexToken).concat(logs.map(log => log.stableToken)) - tokens.push(ADDRESSES.null) - ownerTokens.push([tokens, vault]) - } - // const hypeTokens = await api.multiCall({ abi: 'address[]:getAcceptableAssets', calls: hypeVaults }) - // ownerTokens.push(...hypeTokens.map((tokens, i) => [tokens, hypeVaults[i]])) - return api.sumTokens({ ownerTokens }) -} - - -Object.keys(config).forEach((chain) => { - const exports = { tvl } - if (chain === 'bsc') { - exports.staking = staking(['0xbb33D58DDd186F46Cab05F7B30848d89dF71C4E9', '0x36f4b2e82355020181a4583507375F0c606d61F9'], '0xD82544bf0dfe8385eF8FA34D67e6e4940CC63e16') - } - module.exports[chain] = exports -}); \ No newline at end of file diff --git a/projects/n3rd.js b/projects/n3rd.js deleted file mode 100644 index 5533487eab2..00000000000 --- a/projects/n3rd.js +++ /dev/null @@ -1,15 +0,0 @@ -const { masterChefExports, } = require("./helper/masterchef") -const { mergeExports, } = require("./helper/utils") -const { staking, } = require("./helper/staking") - -const token = "0x32C868F6318D6334B2250F323D914Bc2239E4EeE"; -const masterchef = "0x47cE2237d7235Ff865E1C74bF3C6d9AF88d1bbfF"; - -module.exports = mergeExports([ - masterChefExports(masterchef, "ethereum", token), - { - ethereum: { - staking: staking('0x357ADa6E0da1BB40668BDDd3E3aF64F472Cbd9ff', token) - } - } -]) diff --git a/projects/nabla/index.js b/projects/nabla/index.js deleted file mode 100644 index c691628d358..00000000000 --- a/projects/nabla/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const config = { - arbitrum: { - backstopPool: "0x337B03C2a7482c6eb29d8047eA073119dc68a29A", - }, - base: { - backstopPool: "0x50841f086891fe57829ee0a809f8B10174892b69", - }, - berachain: { - backstopPool: "0xfa158Cf7cD83F418eBD1326121810466972447F6", - }, -} - -Object.keys(config).forEach((chain) => { - const { backstopPool } = config[chain]; - - module.exports[chain] = { - tvl: async (api) => { - const pools = await api.fetchList({ lengthAbi: 'getBackedPoolCount', itemAbi: 'getBackedPool', target: backstopPool }) - pools.push(backstopPool) - const assets = await api.multiCall({ abi: 'address:asset', calls: pools }) - return api.sumTokens({ tokensAndOwners2: [assets, pools] }) - }, - }; -}); diff --git a/projects/nacho-finance/index.js b/projects/nacho-finance/index.js deleted file mode 100644 index 353f79af4fd..00000000000 --- a/projects/nacho-finance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const tshareTokenAddress = "0x948D0a28b600BDBd77AF4ea30E6F338167034181"; -const tshareRewardPoolAddress = "0xdD694F459645eb6EfAE934FE075403760eEb9aA1"; -const masonryAddress = "0x1ad667aCe03875fe48534c65BFE14191CF81fd64"; - -const ftmLPs = [ - "0x2bAe87900Cbd645da5CA0d7d682C5D2e172946f2", // NACHO-ETH - "0x2c97767BFa132E3785943cf14F31ED3f025405Ea", // NSHARE-MATIC - "0xcD90217f76F3d8d5490FD0434F597516767DaDe1", // ETH-MATIC - "0x354789e7bBAC6E3d3143A0457324cD80bD0BE050", // ETH-USDC -]; - -module.exports = { - methodology: "Pool2 deposits consist of NACHO/ETH, NSHARE/MATIC LP, ETH/MATIC LP, ETH/USDC LP and NBOND tokens deposits while the staking TVL consists of the NSHARE tokens locked within the Bowl contract.", - polygon: { - tvl: async () => ({}), - pool2: pool2(tshareRewardPoolAddress, ftmLPs), - staking: staking(masonryAddress, tshareTokenAddress), - }, -}; diff --git a/projects/naka-dex/index.js b/projects/naka-dex/index.js deleted file mode 100644 index b696ee28fb2..00000000000 --- a/projects/naka-dex/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - naka: { factory: '0xf6632D6fF6fc71DAf1fA96AbAd1bC269bD507dF8', fromBlock: 49370, sumChunkSize: 50 }, -}) diff --git a/projects/namada/index.js b/projects/namada/index.js deleted file mode 100644 index f1d304b8c89..00000000000 --- a/projects/namada/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const { fetchURL } = require('../helper/utils'); -const { deserialize } = require("borsh"); -const { v4: uuidv4 } = require("uuid"); -const BigNumber = require("bignumber.js"); - -// Define the Borsh schema for deserializing the balance response -// This should match the Amount struct in Namada which has 4 u64 limbs -class Amount { - constructor({ amount }) { - this.amount = amount; - } -} - -const schema = new Map([ - [Amount, { kind: 'struct', fields: [['amount', [4]]] }], -]); - -const u64Base = new BigNumber(2).pow(64); - -// Indexer provider -const NAMADA_INDEXER = 'https://indexer.namada.tududes.com'; -/// RPC provider -const NAMADA_RPC = 'https://rpc.namada.tududes.com:443'; - -const MASP_ADDRESS = "tnam1pcqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzmefah"; -const MULTITOKEN_ADDRESS = "tnam1pyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqej6juv"; - -async function tvl(api) { - // Get all tokens on Namada by querying the IBC rate limits endpoint - let rate_limits = await fetchURL(`${NAMADA_INDEXER}/api/v1/ibc/rate-limits`); - - // Query MASP balance for each non-native token via RPC - for (const [idx, data] of Object.entries(rate_limits.data)) { - // Exclude native token NAM - if (data.tokenAddress == 'tnam1q9gr66cvu4hrzm0sd5kmlnjje82gs3xlfg3v6nu7') { - continue; - } - - - // console.log(`Fetching MASP balance for token: ${data.tokenAddress}`); - - // Prepare RPC request - const requestBody = { - jsonrpc: "2.0", - id: uuidv4(), - method: "abci_query", - params: { - path: `/shell/value/#${MULTITOKEN_ADDRESS}/#${data.tokenAddress}/balance/#${MASP_ADDRESS}`, - data: "", - prove: false, - }, - }; - - // console.log(`Making RPC request: ${JSON.stringify(requestBody, null, 2)}`); - - // Use native fetch for RPC call since fetchURL doesn't work well with POST - const response = await fetch(NAMADA_RPC, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(requestBody), - }); - - if (!response.ok) { - console.error(`RPC request failed with status: ${response.status}`); - const text = await response.text(); - console.error(`Response text: ${text}`); - continue; - } - - const json = await response.json(); - // console.log(`RPC response: ${JSON.stringify(json, null, 2)}`); - - if (!json.result || !json.result.response) { - console.log(`No result.response in RPC response for token ${data.tokenAddress}`); - continue; - } - - if (!json.result.response.value) { - console.log(`No MASP balance found for token ${data.tokenAddress} (empty value)`); - continue; - } - - const value_base64 = json.result.response.value; - // console.log(`Base64 value: ${value_base64}`); - - // Decode base64 value - const value = Buffer.from(value_base64, 'base64'); - // console.log(`Decoded buffer: ${Array.from(value).map(b => b.toString(16).padStart(2, '0')).join(' ')}`); - - - // Try to deserialize as raw u64 array first - if (value.length === 32) { // 4 u64s = 32 bytes - const limbs = []; - for (let i = 0; i < 4; i++) { - const limb = value.readBigUInt64LE(i * 8); - limbs.push(limb.toString()); - } - - // console.log("Decoded limbs:", limbs); - - // Convert from u64 limbs to BigNumber - const result = limbs.reduceRight((acc, limb) => { - return acc.multipliedBy(u64Base).plus(BigNumber(limb)); - }, BigNumber(0)); - - // console.log(`MASP balance for ${data.tokenAddress}: ${result.toFixed()}`); - - if (result.gt(0)) { - api.add(data.tokenAddress, result.toFixed()); - } - } else { - console.log(`Unexpected value length: ${value.length}, expected 32 bytes`); - } - } -} - -module.exports = { - methodology: 'Calculates TVL by querying an RPC for the MASP balance of each whitelisted token within Namada', - timetravel: false, - hallmarks: [ - ['2025-02-24', 'Namada Phase 3 (IBC + MASP) launched'], - ], - namada: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/nami-index/index.js b/projects/nami-index/index.js deleted file mode 100644 index a3f44f4580c..00000000000 --- a/projects/nami-index/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { request } = require("../helper/utils/graphql") - -async function tvl(api) { - const query = ` - query { - index { - status { - totalValue - } - } - } - ` - - const res = await request('https://api.rujira.network/api/graphiql', query) - const indexData = res.index - - // totalValue is a string representing a bigint with 8 decimals in USD - const totalValue = indexData.reduce((acc, item) => { - const value = item.status?.totalValue || '0' - return acc + BigInt(value) - }, BigInt(0)) - - const finalValue = Number(totalValue) / 1e8 - - api.addUSDValue(finalValue) -} - -module.exports = { - methodology: "TVL is calculated by retrieving the USD value of each index and aggregating the results using the official Rujira Network GraphQL API.", - timetravel: false, - misrepresentedTokens: true, - thorchain: { - tvl - } -} \ No newline at end of file diff --git a/projects/nanoswap/index.js b/projects/nanoswap/index.js deleted file mode 100644 index 8abc026ab4d..00000000000 --- a/projects/nanoswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORY = "0x41726eb94341fD27D5103DF3Cd6C387560c75B70" - -const dexTVL = getUniTVL({ - factory: FACTORY, - useDefaultCoreAssets: true, -}) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, - base: { - tvl: dexTVL, - } -}; \ No newline at end of file diff --git a/projects/naos/index.js b/projects/naos/index.js deleted file mode 100644 index fdaad0e5f06..00000000000 --- a/projects/naos/index.js +++ /dev/null @@ -1,107 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking, stakings } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { sumTokens2, sumTokensExport } = require("../helper/unwrapLPs"); - -const alpacaAdapterAbi = "uint256:totalValue"; - -const AssessorAbi = "uint256:seniorDebt" - -// BSC address -const BSC_NAOS_ADDRESS = "0x758d08864fb6cce3062667225ca10b8f00496cc2"; -const CAKE_BNB_NAOS_LP_ADDRESS = "0xcaa662ad41a662b81be2aea5d59ec0697628665f"; -const BSC_BOOST_POOL = "0x3dcd32dd2b225749aa830ca3b4f2411bfeb03db4"; -const BUSD_CONTRACT_ADDRESS = ADDRESSES.bsc.BUSD; -const BUSD_CONTRACT_HOLDER = [ - "0x9591ff9c5070107000155ff6c5ce049aa1443dd3", // Formation - "0xb9ece39b356d5c0842301b42a716e4385617c871", // Transmuter - "0xcd2e1ebfc804dd867ca052133fa70d9db6d86ab7", // Beta insurance -]; -const BSC_ALPACA_ADAPTERS = [ - "0x640848400fc1cbaf9e4a1ed18d1bd3e2b16d1de2", // Formation adapter - "0x4ca1a19d108b84f6f671ffe3555e7743c5ed6a2c", // Transmuter adapter - "0xAB806724B03D0F4aEE891976fA0Eee77bC22739b", // Beta insurance adapter -]; - -const BSC_STAKING_POOL_WITH_TRANSFER = - "0x6ebc2c41c1e29a5506b86b758b6c16dd5bbcf7d1"; - -// RWA -const Galaxy = [ - { - Tranche: "0x2e07a30Ba047058ed1c360Cbf00CfCb61B07A1aA", - Assessor: "0x2E6FB688635A8C85D2B93e70087ed35c87ACe1D1", - Reserve: "0x9eEd257f7d5Bed450BC2B3562B24113C9fbD848b" - } -] - -// ETH address -const STAKING_POOL_ADDRESS = "0x99E4eA9eF6bf396C49B35FF9478EbB8890aEF581"; -const UNI_ETH_NAOS_LP_ADDRESS = "0x9b577e849b128ee1a69144b218e809b8bb98c35d"; -const NAOS_ADDRESS = "0x4a615bb7166210cce20e6642a6f8fb5d4d044496"; -const NUSD_3CRV_LP_ADDRESS = "0x67d9eAe741944D4402eB0D1cB3bC3a168EC1764c"; - -const DAI_CONTRACT_ADDRESS = ADDRESSES.ethereum.DAI; -const DAI_CONTRACT_HOLDER = [ - "0x9Ddceb30515eD297C1B72Ff8F848F254104b7A12", // Formation - "0x3ED6355Ad74605c0b09415d6B0b29a294Fd31265", // Transmuter -]; - -// yearn vault version/address -const YEARN_VAULT = { - v1: "0x19d3364a399d251e894ac732651be8b0e4e85001", - v2: "0xda816459f1ab5631232fe5e97a05bbbb94970c95", -}; - -// yearn adapter version/address -const YEARN_ADAPTER = { - v1: "0xC1802cccc61e671f7c547E9326523edD2f55E84D", - v2: "0x8394BB87481046C1ec84C39689D402c00189df43", -}; - -async function tvl(api) { - let YEARN_VAULT_ADDRESS = ""; - let YEARN_ADAPTER_ADDRESS = ""; - YEARN_VAULT_ADDRESS = YEARN_VAULT.v2; - YEARN_ADAPTER_ADDRESS = YEARN_ADAPTER.v2; - - return sumTokens2({ api, tokens: [DAI_CONTRACT_ADDRESS, YEARN_VAULT_ADDRESS], owners: DAI_CONTRACT_HOLDER.concat([YEARN_ADAPTER_ADDRESS]) }) -} - -async function bscTvl(api) { - let busdOwners = [...BUSD_CONTRACT_HOLDER] - // RWA - for (let borrwer of Galaxy) - busdOwners.push(borrwer.Reserve, borrwer.Tranche) - - await sumTokens2({ api, owners: busdOwners, tokens: [BUSD_CONTRACT_ADDRESS] }) - - const isBUSDs = await api.multiCall({ - abi: alpacaAdapterAbi, - calls: BSC_ALPACA_ADAPTERS, - }) - api.add(BUSD_CONTRACT_ADDRESS, isBUSDs) -} - - -async function bscBorrowed(api) { - for (let borrwer of Galaxy) { - const seniorDebt = await api.call({ target: borrwer.Assessor, abi: AssessorAbi, }) - api.add(BUSD_CONTRACT_ADDRESS, seniorDebt) - } -} - - -module.exports = { - ethereum: { - tvl: tvl, - staking: staking(STAKING_POOL_ADDRESS, NAOS_ADDRESS), - pool2: sumTokensExport({ owner: STAKING_POOL_ADDRESS, tokens: [UNI_ETH_NAOS_LP_ADDRESS, NUSD_3CRV_LP_ADDRESS] }), - }, - bsc: { - tvl: bscTvl, - borrowed: bscBorrowed, - staking: stakings([BSC_BOOST_POOL,], BSC_NAOS_ADDRESS), - pool2: pool2(BSC_STAKING_POOL_WITH_TRANSFER, CAKE_BNB_NAOS_LP_ADDRESS), - }, -}; diff --git a/projects/napier/index.js b/projects/napier/index.js deleted file mode 100644 index d91e01c7149..00000000000 --- a/projects/napier/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const v1 = require("./v1.js"); -const v2 = require("./v2.js"); -const { mergeExports } = require("../helper/utils"); - - -module.exports = mergeExports([v1, v2]) diff --git a/projects/napier/v1.js b/projects/napier/v1.js deleted file mode 100644 index 9db00cf28f3..00000000000 --- a/projects/napier/v1.js +++ /dev/null @@ -1,56 +0,0 @@ - -const { getLogs2 } = require("../helper/cache/getLogs"); - -// https://docs.napier.finance/contract-and-integrations/deployed-contracts -const config = { - ethereum: { - pool_factory: { - address: "0x17354e8e7518599c7f6B7095a6706766e4e4dC61", - deployedAt: 20212038, - }, - tranche_factory: { - address: "0x83CE9e95118b48DfED91632e1bB848f1D4ee12e3", - deployedAt: 20017932, - }, - }, -} - -Object.keys(config).map((network) => { - const { tranche_factory, pool_factory } = config[network]; - module.exports[network] = { - tvl: async (api) => { - const trancheDeployedLogs = tranche_factory.address ? await getLogs2({ - api, - target: tranche_factory.address, - eventAbi: - "event TrancheDeployed(uint256 indexed maturity, address indexed principalToken, address indexed yieldToken)", - fromBlock: tranche_factory.deployedAt, - extraKey: 'v1' - }) : []; - - const tranches = trancheDeployedLogs.map((event) => event.principalToken); - - // fetch deployed pools - const poolDeployedLogs = pool_factory.address ? await getLogs2({ - api, - target: pool_factory.address, - eventAbi: "event Deployed(address indexed basePool, address indexed underlying, address indexed pool)", - fromBlock: pool_factory.deployedAt, - extraKey: 'v1' - }) : []; - - const pools = poolDeployedLogs.map((event) => event.pool) - - // fetch adapter contracts - const results = await api.multiCall({ - abi: "function getSeries() external view returns (tuple(address underlying, address target, address yt, address adapter, uint256 mscale, uint256 maxscale, uint64 issuanceFee, uint64 maturity))", - calls: tranches, - }); - const adapters = results.map((r) => r.adapter); - const underlyingTokens = results.map((r) => r.underlying); - const adapterBalances = await api.multiCall({ abi: 'uint256:totalAssets', calls: adapters }) - api.add(underlyingTokens, adapterBalances) - return api.erc4626Sum({ calls: pools, tokenAbi: 'underlying', balanceAbi: 'totalUnderlying' }) - }, - }; -}); diff --git a/projects/napier/v2.js b/projects/napier/v2.js deleted file mode 100644 index d07be0d9bda..00000000000 --- a/projects/napier/v2.js +++ /dev/null @@ -1,138 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - ethereum: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 21942450, - }, - base: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 26925181, - }, - arbitrum: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 314445420, - }, - optimism: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 133038145, - }, - sonic: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 12222609, - }, - mantle: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 76774978, - }, - bsc: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 47367768, - }, - polygon: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 68940928, - }, - avax: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 58592671, - }, - fraxtal: { - factory: "0x0000001afbCA1E8CF82fe458B33C9954A65b987B", - fromBlock: 17433043, - }, - hyperliquid: { - factory: "0x000000488f0fB672CEc8ec4B90980e7C6E492E22", - fromBlock: 1028801, - }, -}; - -// Tracks TVL in Principal Token vaults and TwoCrypto pools -async function tvl(api) { - const { factory, fromBlock } = config[api.chain]; - - - // Get all deployment events - const deployLogs = await getLogs({ - api, - target: factory, - topic: "0x43a42a2627e2eabb0a72e5fab92586a1ef1fde9b09ca5c0f05b56dc20d977da4", - onlyArgs: true, - eventAbi: - "event Deployed(address indexed principalToken, address indexed yt, address indexed pool, uint256 expiry, address target)", - fromBlock, - }); - - let principalTokens = deployLogs.map((l) => l.principalToken); - let pools = deployLogs.map((l) => l.pool); - let targets = deployLogs.map((l) => l.target); - - // Get underlying assets and balances for PTs - const [resolvers, assets] = await Promise.all([ - api.multiCall({ - abi: "address:i_resolver", - calls: principalTokens, - }), - api.multiCall({ - abi: "address:i_asset", - calls: principalTokens, - }), - ]); - - const scales = await api.multiCall({ - abi: "uint256:scale", - calls: resolvers, - }); - - - const targetToAsset = targets.reduce((acc, target, i) => { - acc[getTokenId(api.chain, target)] = assets[i].toLowerCase(); - return acc; - }, {}); - - const targetToScale = targets.reduce((acc, target, i) => { - acc[getTokenId(api.chain, target)] = scales[i]; - return acc; - }, {}); - - - // Combine all tokens and owners for balance checking - const tokensAndOwners = [ - // PT vault holdings - ...principalTokens.map((pt, i) => [targets[i], pt]), - // Pool holdings - ...pools.map((p, i) => [targets[i], p]), - ]; - - const resInTargets = await sumTokens2({ api, tokensAndOwners }); - const resInAsset = {}; - - Object.entries(resInTargets).forEach(([targetId, balance]) => { - const asset = targetToAsset[targetId]; - const assetId = getTokenId(api.chain, asset); - const scale = targetToScale[targetId]; - if (Number(balance) > 0) { - const adjustedBalance = BigInt(balance) * BigInt(scale) / BigInt(1e18); - resInAsset[assetId] = resInAsset[assetId] ?? "0"; - resInAsset[assetId] = (BigInt(resInAsset[assetId]) + adjustedBalance).toString(); - } - }); - - return resInAsset; -} - -function getTokenId(chain, token) { - return `${chain}:${token.toLowerCase()}`; -} - - -module.exports = { - methodology: - "Tracks the total value locked in Napier Principal Token vaults and TwoCrypto pools", -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/narwhal-finance/index.js b/projects/narwhal-finance/index.js deleted file mode 100644 index 20365454b9b..00000000000 --- a/projects/narwhal-finance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json'); - -module.exports = { - hallmarks: [ - [1689034511, "Launch on Arbitrum & BSC"], - ], -}; - -const config = { - bsc: { owner: '0x71AF984f825C7BEf79cAEE5De14565ca8A29Fe93', tokens: [ADDRESSES.bsc.USDT,]}, - arbitrum: { owner: '0x14559479DC1041Ef6565f44028D454F423d2b9E6', tokens: [ADDRESSES.arbitrum.USDT,]}, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport(config[chain]) - } -}) diff --git a/projects/narwhalswap/index.js b/projects/narwhalswap/index.js deleted file mode 100644 index 5b4d7bf3caf..00000000000 --- a/projects/narwhalswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0xB9fA84912FF2383a617d8b433E926Adf0Dd3FEa1', useDefaultCoreAssets: true }), - }, - methodology: - "TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://narwhalswap.org/#/dashboard as the source", -}; diff --git a/projects/nasdex/index.js b/projects/nasdex/index.js deleted file mode 100644 index a804f510be0..00000000000 --- a/projects/nasdex/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const stakingContract = "0x35cA0e02C4c16c94c4cC8B67D13d660b78414f95"; -const NSDX = "0xE8d17b127BA8b9899a160D9a07b69bCa8E08bfc6"; -const NSDX_USDC_UNIV2 = "0x56B8936a96cD5EE5C5837F385a19B4c2999fD74a"; - -module.exports = { - misrepresentedTokens: true, - polygon:{ - staking: staking(stakingContract, NSDX), - pool2: pool2(stakingContract, NSDX_USDC_UNIV2), - tvl: async () => ({}), - }, - methodology: - "We count liquidity on the Stake Seccion through Staking (MasterChef) Contract", -}; diff --git a/projects/nata/index.js b/projects/nata/index.js deleted file mode 100644 index 99071b1550c..00000000000 --- a/projects/nata/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - polygon: { - tvl: sumTokensExport({ - tokens: [ - ADDRESSES.polygon.WETH_1, // WETH - ADDRESSES.polygon.DAI, // DAI - '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aWETH - '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aDAI - '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aMATIC - ], - resolveUniV3: true, - fetchCoValentTokens: true, - owner: '0x03ebC6d159C41419747354bc819dF274Da9948B5' - }), - }, -} \ No newline at end of file diff --git a/projects/native-lend/index.js b/projects/native-lend/index.js deleted file mode 100644 index e50a8614dd8..00000000000 --- a/projects/native-lend/index.js +++ /dev/null @@ -1,96 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: "Gets all the assets deposited by LPs in Native Credit Pool for PMMs to facilitate trades for Native Swap.", -}; - -const config = { - ethereum: { - vault: "0xe3D41d19564922C9952f692C5Dd0563030f5f2EF", - vaultFromBlock: 22173196, - }, - bsc: { - vault: "0xBA8dB0CAf781cAc69b6acf6C848aC148264Cc05d", - vaultFromBlock: 47980948, - }, - base: { - vault: "0x74a4Cd023e5AfB88369E3f22b02440F2614a1367", - vaultFromBlock: 32578350, - }, - arbitrum: { - vault: "0xbA1cf8A63227b46575AF823BEB4d83D1025eff09", - vaultFromBlock: 355397381, - }, -}; - -Object.keys(config).forEach((chain) => { - // get vault and start block - const { vault, vaultFromBlock } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - // get all lps - const lpListedLogs = await getLogs({ - api, - target: vault, - topic: "MarketListed(address)", - eventAbi: - "event MarketListed(address lpToken)", - onlyArgs: true, - fromBlock: vaultFromBlock, - }); - const lps = lpListedLogs.map((i) => i.lpToken); - - // get all underlying tokens - const tokens = await api.multiCall({ abi: 'address:underlying', calls: lps }); - - // use sumTokens2 to for cash balances in vault - return sumTokens2({ - api, - owner: vault, - tokens - }); - }, - borrowed: async (api) => { - // get all lps - const lpListedLogs = await getLogs({ - api, - target: vault, - topic: "MarketListed(address)", - eventAbi: - "event MarketListed(address lpToken)", - onlyArgs: true, - fromBlock: vaultFromBlock, - }); - const lps = lpListedLogs.map((i) => i.lpToken); - - // get all underlying tokens - const tokens = await api.multiCall({ abi: 'address:underlying', calls: lps }); - - // get total supplied - let v2Locked = await api.multiCall({ abi: 'address:totalUnderlying', calls: lps }); - - // get cash balance by reading each token balanceOf from vault - let cashBalances = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokens.map(token => ({ target: token, params: [vault] })) }); - - // merge tokens and their corresponding locked and cash values - const tokenData = tokens.map((token, i) => ({ - token, - locked: parseInt(v2Locked[i]), - cash: parseInt(cashBalances[i]) - })); - - // calculate borrowed amounts - const borrowedBalances = {}; - tokenData.forEach(({ token, locked, cash }) => { - if (locked > cash) { - borrowedBalances[token] = locked - cash; - } else { - borrowedBalances[token] = 0; - } - }); - - return borrowedBalances; - }, - }; -}); \ No newline at end of file diff --git a/projects/native/index.js b/projects/native/index.js deleted file mode 100644 index af1278d2f88..00000000000 --- a/projects/native/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: - "Counts the inventory held by Native's Partnered Market Makers used to facilitate slippage free swaps on the protocol", -}; - -const config = { - bsc: { - factory: "0x85b0f66e83515ff4e825dfcaa58e040e08278ef9", - fromBlock: 27103796, - }, - ethereum: { - factory: "0x85b0f66e83515ff4e825dfcaa58e040e08278ef9", - fromBlock: 16995923, - }, - polygon: { - factory: "0x6d2D10DC033751CA0485D1c2Bd463D5b87AfdE77", - fromBlock: 44086415, - }, - arbitrum: { - factory: "0x85b0F66E83515ff4e825DfCAa58E040E08278EF9", - fromBlock: 123408816, - }, - avax: { - factory: "0x85b0F66E83515ff4e825DfCAa58E040E08278EF9", - fromBlock: 34309521, - }, - mantle: { - factory: "0x4c34BA0103b8417e1Fc4D0F6645828B2d6d207F9", - fromBlock: 10250349, - }, - manta: { - factory: "0x4c34BA0103b8417e1Fc4D0F6645828B2d6d207F9", - fromBlock: 1063398, - }, - zeta: { - factory: "0x4c34BA0103b8417e1Fc4D0F6645828B2d6d207F9", - fromBlock: 1520070, - }, - zklink: { - factory: "0x335c04321E88631A99F78fD7D7C4f49A921ed924", - fromBlock: 443, - }, -}; - -Object.keys(config).forEach((chain) => { - const { factory, fromBlock, vault, vaultFromBlock } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - // tvl from factory - const poolCreationLogs = await getLogs({ - api, - target: factory, - topic: "PoolCreated(address,address,address,address,address)", - eventAbi: - "event PoolCreated(address treasury, address owner, address signer, address pool, address impl)", - onlyArgs: true, - fromBlock, - }); - const treasuries = poolCreationLogs.map((i) => i.treasury); - const pools = poolCreationLogs.map((i) => i.pool); - const tokenAs = await api.multiCall({ - abi: "address[]:getTokenAs", - calls: pools, - }); - const tokenBs = await api.multiCall({ - abi: "address[]:getTokenBs", - calls: pools, - }); - return await sumTokens2({ - api, - ownerTokens: treasuries.map((v, i) => [ - [nullAddress, ...tokenAs[i], ...tokenBs[i]], - v, - ]), - }); - }, - }; -}); diff --git a/projects/nava-finance/index.js b/projects/nava-finance/index.js deleted file mode 100644 index f3d06e71ff4..00000000000 --- a/projects/nava-finance/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { unknownTombs, sumUnknownTokens } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const bond = "0x46D741b89102815710efeA3051291E64Ff49C228"; -const share = "0x2dD2169dA1e5c6fE9A3F7AA4A50119B26316A86b"; -const nodeAddress = "0x9C4430198D33Dde24094FDb354bd1AEEFC6cB68c"; -const boardroom = "0x0bD6BD43c25F6f62476826c3FBcfD63821C148D8"; -const rewardPool = "0x8e8D0bbb7a47291AFCF252f26679c3113Bc558dB"; -const pool2lps = [ - "0xa698C6f3352e18519Ef53172d492ceF805D99aFA", - "0x4216068dD62701E79F63287704eb6F1Fd2A29427", -]; -const genesisPool = '0xb9F9993f0D4A63344D9571387E18f659B6AE5447' -const OORT = '0x3D1BBD0eC9Af25e8f12383d9F6a6bbFa6DfeF06F' -const WREI = ADDRESSES.rei.WREI -const OORT_LP = '0xB95783dCE72CF2C7fa13a6b3D7399A4223259878' -// module.exports = { -// ...tombTvl(bond, share, rewardPool, boardroom, pool2lps, "rei", undefined, false, pool2lps[1]) -// }; - - -module.exports = unknownTombs({ shares: [share], rewardPool: [genesisPool, rewardPool], masonry: [boardroom, nodeAddress, ], chain: 'rei', -useDefaultCoreAssets: true, lps: pool2lps }) -module.exports.rei.tvl = async (_, _b, { rei: block }) => sumUnknownTokens({ - chain: 'rei', - block, - owners: [rewardPool, genesisPool], - tokens: [WREI, OORT], - lps: [OORT_LP], - useDefaultCoreAssets: true, -}) - -staking(rewardPool, WREI) \ No newline at end of file diff --git a/projects/navi/index.js b/projects/navi/index.js deleted file mode 100644 index 9ec651667a3..00000000000 --- a/projects/navi/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const sui = require("../helper/chain/sui") -const { fetchURL } = require('../helper/utils') - -function getDecimalShifts(dynamicFields){ - return fetchURL(`https://coins.llama.fi/prices/current/${dynamicFields.map(c=>`sui:0x${c.fields.value.fields.coin_type}`).join(',')}`).then(r=>r.data.coins) -} - -const storageId = "0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe" - -async function borrow(api) { - const storageObject = await sui.getObject(storageId); - const reservesId = storageObject.fields.reserves.fields.id.id - - const dynamicFields = await sui.getDynamicFieldObjects({ parent: reservesId }) - const decimals = await getDecimalShifts(dynamicFields) - - dynamicFields.forEach((data) => { - const coin = '0x' + data.fields.value.fields.coin_type - const borrowed = data.fields.value.fields.borrow_balance.fields.total_supply * data.fields.value.fields.current_borrow_index / 1e27 - if(decimals["sui:"+coin]){ - const amount = borrowed * (10 ** (decimals["sui:"+coin].decimals - 9)) - api.add(coin, amount) - } - }) -} - - -async function tvl(api) { - const storageObject = await sui.getObject(storageId); - const reservesId = storageObject.fields.reserves.fields.id.id - - const dynamicFields = await sui.getDynamicFieldObjects({ parent: reservesId }) - const decimals = await getDecimalShifts(dynamicFields) - - dynamicFields.forEach(object => { - const coin = '0x' + object.fields.value.fields.coin_type - const total_supply = object.fields.value.fields.supply_balance.fields.total_supply * object.fields.value.fields.current_supply_index / 1e27 - const borrowed = object.fields.value.fields.borrow_balance.fields.total_supply * object.fields.value.fields.current_borrow_index / 1e27 - if(decimals["sui:"+coin]){ - const amount = (total_supply - borrowed) * (10 ** (decimals["sui:"+coin].decimals - 9)) - api.add(coin, amount) - } - }) -} - - -module.exports = { - timetravel: false, - sui: { - tvl, - borrowed: borrow, - }, -} \ No newline at end of file diff --git a/projects/navigator/index.js b/projects/navigator/index.js deleted file mode 100644 index aeb5d056ae8..00000000000 --- a/projects/navigator/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const {getLogs2} = require("../helper/cache/getLogs"); - -// sonic -const sonicVault = "0xe9263682E837eFabb145f8C632B9d2c518D90652"; -const sonicStaking = "0xEF8770E9506a8D1aAE3D599327a39Cf14B6B3dc4"; -const sonicNAVI = "0x6881B80ea7C858E4aEEf63893e18a8A36f3682f3"; - -// sonicV2 -const sonicV2Vault = "0x41cD8CaFc24A771031B9eB9C57cFC94D86045eB6"; -const sonicV2SettingManager = "0x7b9e962dd8AeD0Db9A1D8a2D7A962ad8b871Ce4F"; - -const tvl = async (api) => { - const logs = await getLogs2({ - api, - target: sonicV2SettingManager, - eventAbi: 'event SetEnableStaking(address indexed token, bool isEnabled)', - fromBlock: 655713, - }) - const sonicV2Assets = logs.map(i => i.token) - await Promise.all([ - gmxExports({ vault: sonicVault })(api), - sumTokens2({ api, tokens: sonicV2Assets, owner: sonicV2Vault })]) -}; - -module.exports = { - sonic: { - tvl, - staking: staking(sonicStaking, sonicNAVI) - } -} diff --git a/projects/nawa/index.js b/projects/nawa/index.js deleted file mode 100644 index b770ecd124d..00000000000 --- a/projects/nawa/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -// Bitflux Pool (Saddle Finance fork) -const BITFLUX_POOL = '0x4bcb9Ea3dACb8FfE623317E0B102393A3976053C'; // The holder/pool address -const BITFLUX_LP_TOKEN = '0xBDBb25FB6a76546E640D82BdDce73c721465d24E'; // LP token to blacklist -const NAWA_SOLV_VAULT_V2 = '0x0b8647d875Eac9fA00Bf8796313abD960C71eE1A' - -async function tvl(api) { - - const tokens = await api.call({ - abi: 'function getTokens() view returns (address[])', - target: BITFLUX_POOL - }); - - if (tokens.length > 0) { - // Get balances for each token - const balances = await api.multiCall({ - abi: 'function getTokenBalance(uint8) view returns (uint256)', - target: BITFLUX_POOL, - calls: tokens.map((_, i) => ({ params: [i] })) - }); - - // Get LP token total supply - const lpTotalSupply = await api.call({ - abi: 'function totalSupply() view returns (uint256)', - target: BITFLUX_LP_TOKEN - }); - - const userLPBalance = await api.call({ - abi: 'erc20:balanceOf', - target: BITFLUX_LP_TOKEN, - params: [NAWA_SOLV_VAULT_V2] - }); - - // Calculate user's share of each underlying token - tokens.forEach((token, index) => { - const tokenBalance = balances[index]; - const userShare = BigInt(userLPBalance) * BigInt(tokenBalance) / BigInt(lpTotalSupply); - api.add(token, userShare.toString()); - }); - } - - // Get token balances for all strategy and vault tokens - const balances = await sumTokens2({ - api, - tokens: ['0xc5555ea27e63cd89f8b227dece2a3916800c0f4f'], // dualCoreToken - owners: ['0x3be69cA2fE0F5B0670923336aC42b4Dd7bee3DfF'] // vaultAddress - }); - - return balances; -} - -module.exports = { - methodology: 'TVL is calculated by: 1) Unwrapping Bitflux LP tokens held by Nawa Solv Vault V2 to their underlying asset values (SolvBTC.CORE, WBTC, SolvBTC.b) - the LP token balance is fetched dynamically and converted to underlying assets based on pool reserves and total supply, and 2) Tracking dualCore token holdings in the vault address. This captures both the LP position value and additional vault assets.', - core: { - tvl, - }, -}; diff --git a/projects/nayms/index.js b/projects/nayms/index.js deleted file mode 100644 index f2cf054f719..00000000000 --- a/projects/nayms/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const tokens = [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.TUSD, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDM, -]; - -const tokensBase = [ - ADDRESSES.base.WETH, - ADDRESSES.base.USDC, - ADDRESSES.ethereum.USDM, -]; - -const owner = "0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5"; -const ownerBase = "0x546Fb1621CF8C0e8e3ED8E3508b7c5100ADdBc03"; - -module.exports = { - methodology: "Sum assets on Nayms", - start: '2023-04-20', // Thu Apr 20 13:36:59 2023 GMT - hallmarks: [[1681990619, "Nayms V3 Launch"]], - ethereum: { - tvl: sumTokensExport({ owner, tokens }), - }, - base: { - tvl: sumTokensExport({ owner: ownerBase, tokens: tokensBase }), - }, -}; diff --git a/projects/nbx/index.js b/projects/nbx/index.js deleted file mode 100644 index 055766e16a3..00000000000 --- a/projects/nbx/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x29af949c3D218C1133bD16257ed029E92deFb168', - '0x8Cad96fB23924Ebc37b8CdAFa8400AD856fE4a2C', - '0xAeB81c391Ac427B6443310fF1cB73a21E071e5ad', - ], - }, - cardano: { - owners: [ - 'addr1q9phfjzqhcndne6chkxvtwt209n4335ghy0389mp5jfh3gyhry659z5gnwn04r2as2hy9m4uuqvlhjm0gm7r9dd7j65s7tsfxa', - 'addr1qywum3fvtfrw4t52xk6y2ls9dsgkgwk759fxrnpae7f4q5d3uk2aw97ypjvvf3kjy43pl4axma6c4sjadq2lwlx80tus3k4j0v' - ] - }, - bitcoin: { - owners: bitcoinAddressBook.nbx - } -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/nearlenddao/index.js b/projects/nearlenddao/index.js deleted file mode 100644 index c3591ac0b1a..00000000000 --- a/projects/nearlenddao/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { call, sumSingleBalance, sumTokens } = require('../helper/chain/near') -const NEARLEND_DAO_CONTRACT = 'v1.nearlend-official.near' - -async function borrowed() { - const balances = {}; - const assetsCallResponse = await call(NEARLEND_DAO_CONTRACT, 'get_assets_paged', {}); - - assetsCallResponse.forEach(([token, asset]) => { - const extraDecimals = asset.config.extra_decimals; - sumSingleBalance(balances, token, asset.borrowed.balance / (10 ** extraDecimals)); - }) - - return balances; -} - -async function tvl(api) { - const assetsCallResponse = await call(NEARLEND_DAO_CONTRACT, 'get_assets_paged', {}); - const tokens = assetsCallResponse.map(([token]) => token); - return sumTokens({ owners: [NEARLEND_DAO_CONTRACT], tokens }); -} - -module.exports = { - near: { - tvl, - borrowed, - }, - timetravel: false, - methodology: 'Summed up all the tokens deposited in their main lending contract' -} diff --git a/projects/nearpad/index.js b/projects/nearpad/index.js deleted file mode 100644 index 063948ac8a4..00000000000 --- a/projects/nearpad/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - aurora: { - tvl: getUniTVL({ factory: '0x34484b4E416f5d4B45D4Add0B6eF6Ca08FcED8f1', useDefaultCoreAssets: true }), - }, -} diff --git a/projects/nebula/index.js b/projects/nebula/index.js deleted file mode 100644 index c323c7197b9..00000000000 --- a/projects/nebula/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports.nibiru = compoundExports2({ comptroller: '0x7bf2f10A061eAA9d12eff11D1c3cBaf402f86C22', cether: '0xFC0De9060D413b60fEE6B735A0291CC7fC2Dc966' }) diff --git a/projects/neby-dex/index.js b/projects/neby-dex/index.js deleted file mode 100644 index 4e0a0474f1c..00000000000 --- a/projects/neby-dex/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3GraphExport } = require("../helper/uniswapV3"); - -module.exports = { - sapphire: { - tvl: uniV3GraphExport({ - name: 'Neby Dex', graphURL: 'https://graph.api.neby.exchange/dex' - }), - } -} diff --git a/projects/neemo-finance/index.js b/projects/neemo-finance/index.js deleted file mode 100644 index 75740261de8..00000000000 --- a/projects/neemo-finance/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); - -const abis = { - getAssetState: "function getAssetState() view returns (uint256 totalAstarDeposit, uint256 totalAstarStaked, uint256 totalAstarPendingToStake, uint256 totalAstarPendingBonus, uint256 totalAstarRedeemable, uint256 totalLstSupply)" -} - -const CONFIG = { - ethereum: { - vault: '0x54Cd23460DF45559Fd5feEaaDA7ba25f89c13525', - tokens: [ - ADDRESSES.null, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.WEETH, - ADDRESSES.ethereum.EETH, - ] - }, - astar: { - vault: '0x85031E58C66BA47A16Eef7A69514cd33EC16559c', - token: ADDRESSES.astar.ASTR - } -} - -const eth_tvl = async (api) => { - const { vault, tokens } = CONFIG[api.chain] - return api.sumTokens({ tokens, owner: vault }) -} - -const astar_tvl = async (api) => { - const { vault, token } = CONFIG[api.chain] - const { totalAstarDeposit } = await api.call({ abi: abis.getAssetState, target: vault }) - return api.add(token, totalAstarDeposit) - -} - -module.exports = { - methodology: 'TVL is calculated by retrieving all collaterals deposited on the chains before using CCIP', - ethereum: { tvl: eth_tvl }, - astar: { tvl: astar_tvl } -} diff --git a/projects/neftyblocks/index.js b/projects/neftyblocks/index.js deleted file mode 100644 index 252d3934779..00000000000 --- a/projects/neftyblocks/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["eosio.token", "WAX", "wax"], - ["alien.worlds", "TLM", "alien-worlds"], - ["token.nefty", "NEFTY", "nefty"], - ["token.fusion", "LSWAX", "waxfusion-staked-wax"], -]; - -// NeftyBlocks -// https://neftyblocks.com -async function wax() { - const accounts = ["blend.nefty", "up.nefty", "neftyblocksd", "neftyblocksp", "market.nefty", "swap.nefty", "swap.we"]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -async function staking() { - const accounts = ["stake.nefty", "reward.nefty"]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `NeftyBlocks TVL is achieved by querying token balances from NFT market and swap contracts.`, - wax: { - tvl: wax, - staking - }, -} \ No newline at end of file diff --git a/projects/neku/index.js b/projects/neku/index.js deleted file mode 100644 index 481b15c1bc0..00000000000 --- a/projects/neku/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -const comptroller = "0xD5B649c7d27C13a2b80425daEe8Cb6023015Dc6B" -module.exports = { - arbitrum: compoundExports2({ comptroller, cether: '0xbc4a19345c598d73939b62371cf9891128eccb8b' }), - moonriver: compoundExports2({ comptroller, cether: '0xbc4a19345c598d73939b62371cf9891128eccb8b' }), - bsc: compoundExports2({ comptroller, cether: '0xbc4a19345c598d73939b62371cf9891128eccb8b' }), -} \ No newline at end of file diff --git a/projects/nemesis-dao/index.js b/projects/nemesis-dao/index.js deleted file mode 100644 index 7af04cc022a..00000000000 --- a/projects/nemesis-dao/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0xdffb6fb92e3f54c0daa59e5af3f47fd58824562a" -module.exports = ohmTvl(treasury, [ - //BUSD - [ADDRESSES.bsc.BUSD, false], - //Pancake LP - ["0x6b0a3e71b69ab49ddea0ed23bef48f78bf9509aa", true], -], "bsc", "0xfd562672bf1da0f80d43f26bfc4ca19121ba661b", "0x8AC9DC3358A2dB19fDd57f433ff45d1fc357aFb3") \ No newline at end of file diff --git a/projects/nemo-floating-assets/index.js b/projects/nemo-floating-assets/index.js deleted file mode 100644 index 0f500032a07..00000000000 --- a/projects/nemo-floating-assets/index.js +++ /dev/null @@ -1,125 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); -const BigNumber = require("bignumber.js"); -const {COIN_CONFIG, MMT_TYPE_CONFIG} = require("../nemo/coinConfig.js"); -const {desU64} = require("../nemo/bytes"); -const {getExchangeRate} = require("../nemo/price"); -const {getVaultTvlByAmountB, getDynamicFieldObject} = require("../nemo/util"); - -const nemoPackageId = "0x2b71664477755b90f9fb71c9c944d5d0d3832fec969260e3f18efc7d855f57c4"; -const syTableParentId = "0xcb74e46f4049e1afc3edcd77172ac6f9adfe1068cec6ca99ff6b80ca7879bd33"; - -const watchCoinType = [ - '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI', - '0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC', - '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA', - '0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP', - '0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT', - '0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH', - '0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY', - '0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD', - '0x622345b3f80ea5947567760eec7b9639d0582adcfd6ab9fccb85437aeda7c0d0::scallop_wal::SCALLOP_WAL', - '0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI', - '0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI', - '0xd8b855d48fb4d8ffbb5c4a3ecac27b00f3712ce58626deb5a16a290e0c6edf84::nwal::NWAL', - '0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI', - '0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI', - '0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI', - '0x41ff228bfd566f0c707173ee6413962a77e3929588d010250e4e76f0d1cc0ad4::ksui::KSUI', - '0x285b49635f4ed253967a2a4a5f0c5aea2cbd9dd0fc427b4086f3fad7ccef2c29::i_sui::I_SUI', - '0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT', - '0xd01d27939064d79e4ae1179cd11cfeeff23943f32b1a842ea1a1e15a0045d77d::st_sbuck::ST_SBUCK', - "0x7f29e761222a44b2141596e920edcc9049f8610f9d33f5354454d088e1f53b62::x_sui_sui_nevlp::X_SUI_SUI_NEVLP", - "0x295d7f569467934c934e6101284628ecbbb1e68d5c5baa8d4667ff09c42068ad::suiusdt_usdc_nevlp::SUIUSDT_USDC_NEVLP" -]; - -const watchCoinTypeNotConvert = [ - '0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI', - '0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI', - '0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI', - '0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI', - '0x02358129a7d66f943786a10b518fdc79145f1fc8d23420d9948c4aeea190f603::fud_sui::FUD_SUI', - '0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT', -]; - -async function tvl(api) { - const marketIds = await sui.queryEvents({ - eventType: `${nemoPackageId}::market_factory::MarketCreatedEvent`, - transform: i => i.market_id - }); - - const markets = await sui.getObjects(marketIds); - - for (const market of markets) { - if (!market) continue; - - const {type, fields} = market; - await getTvl(type, fields, api); - } -} - -async function getTvl(type, fields, api) { - const typeString = type.replace(">", "").split("<")[1]; - if (!typeString) return null; - - const syTokens = typeString.split(", ")[0].slice(2); - - const tokensObject = await getDynamicFieldObject( - syTableParentId, syTokens, {idType: "0x1::type_name::TypeName"}); - if (!tokensObject || !tokensObject.content) return null; - - const tokens = "0x" + tokensObject.content.fields.value.fields.name; - - const coinConfig = COIN_CONFIG[tokens]; - - if (!coinConfig) return null; - if (!watchCoinType.includes(coinConfig.coinType)) return null; - - const txBlockBytes = await getExchangeRate(coinConfig); - - const inspectionResult = await sui.call( - 'sui_devInspectTransactionBlock', - ['0x0000000000000000000000000000000000000000000000000000000000000000', - Buffer.from(txBlockBytes).toString('base64')], - {withMetadata: true} - ); - - if (inspectionResult?.effects?.status?.status !== 'success') { - return null; - } - - const returnValues = inspectionResult.results[inspectionResult.results?.length - 1].returnValues; - const res1 = returnValues[0][0]; - const res2 = returnValues[1][0]; - const priceVoucher1 = desU64(Uint8Array.from(res1)); - const priceVoucher2 = desU64(Uint8Array.from(res2)); - - const pyState = await sui.getObject(fields.py_state_id); - const ptSupply = pyState.fields.pt_supply; - const floatingPt = BigNumber(ptSupply).minus(fields.total_pt); - - if (coinConfig.provider === 'Nemo') { - const pt2SyAmount = floatingPt.div(priceVoucher1).times(priceVoucher2); - - console.log(`floatingPt: ${floatingPt.toString()}, ptSupply: ${ptSupply}, pt2SyAmount: ${pt2SyAmount.toString()}, marketId: ${fields.id.id}`); - - const vault = await sui.getObject(MMT_TYPE_CONFIG[coinConfig.coinType].VAULT_ID); - const amountB = await getVaultTvlByAmountB(vault); - - const totalSupply = vault.fields.treasury_cap.fields.total_supply.fields.value; - - const lpTokenPrice = BigNumber(amountB).div(BigNumber(totalSupply)); - - console.log(`lpTokenPrice: ${lpTokenPrice.toString()}, amountB: ${amountB}, totalSupply: ${totalSupply}`); - - api.add(coinConfig.underlyingCoinType, pt2SyAmount.times(lpTokenPrice).toFixed(0)); - } -} - -module.exports = { - timetravel: false, - methodology: 'Count all floating PT assets in the Nemo markets.', - sui: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/nemo-vault/index.js b/projects/nemo-vault/index.js deleted file mode 100644 index 71490b58c7d..00000000000 --- a/projects/nemo-vault/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const sui = require("../helper/chain/sui"); -const {getVaultTvlByAmountB} = require("../nemo/util"); - -const VAULT_LIST = [ - "0x18fe46d697a3ce2c87b62db5435678ff8df179efc913e250e888019d2f1c4105", - "0x1c29c232ff5a34eb8edf9b3dd593890cd2c537d7a57e30c6730391271de0b5e6", - "0x9356a36b0066561f66db7681d87537c8d9a992ca8e12095be91dcea500211015", - "0x5ca7c661f9e454bbcd780f4d376ccbf536ec34402d99a840bdfb595021e9d727", -] - -async function tvl(api) { - const vaults = await sui.getObjects(VAULT_LIST); - - for (let vault of vaults) { - const vaultTypes = vault.type.replace(">", "").split("<")[1].split(', '); - const tvl = await getVaultTvlByAmountB(vault); - api.add(vaultTypes[1], tvl); - } -} - -module.exports = { - timetravel: false, - methodology: 'Count all assets are deposited into Nemo vault.', - sui: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/nemo/b64.ts b/projects/nemo/b64.ts deleted file mode 100644 index 30adf248efc..00000000000 --- a/projects/nemo/b64.ts +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Mysten Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -function fromBase64(base64String) { - return Uint8Array.from(atob(base64String), (char) => char.charCodeAt(0)); -} - -const CHUNK_SIZE = 8192; - -function toBase64(bytes) { - // Special-case the simple case for speed's sake. - if (bytes.length < CHUNK_SIZE) { - return btoa(String.fromCharCode(...bytes)); - } - - let output = ''; - for (var i = 0; i < bytes.length; i += CHUNK_SIZE) { - const chunk = bytes.slice(i, i + CHUNK_SIZE); - output += String.fromCharCode(...chunk); - } - - return btoa(output); -} - -module.exports = { - fromBase64, - toBase64 -}; \ No newline at end of file diff --git a/projects/nemo/bytes.js b/projects/nemo/bytes.js deleted file mode 100644 index 74002934963..00000000000 --- a/projects/nemo/bytes.js +++ /dev/null @@ -1,57 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const hexToBytes = (hex) => Array.from(Buffer.from(hex.replace(/^0x/, ""), 'hex')); - -const textToBytes = (value) => new TextEncoder().encode(value); - -const toU64 = (value) => toLittleEndian(BigInt(value), 8); - -const toU128 = (value) => toLittleEndian(BigInt(value), 16); - -function toLittleEndian(bigint, size) { - let result = new Uint8Array(size); - let i = 0; - while (bigint > 0) { - result[i] = Number(bigint % BigInt(256)); - bigint = bigint / BigInt(256); - i += 1; - } - return result; -} - -function desU64(data, offset = 0) { - const dataView = new DataView(Uint8Array.from(data).buffer); - let value1 = dataView.getUint32(offset, true); - let value2 = dataView.getUint32(offset + 4, true); - return (BigInt(value2) << BigInt(32)) | BigInt(value1); -} - -function desU128(data, offset = 0) { - const dataView = new DataView(Uint8Array.from(data).buffer); - let value1 = dataView.getUint32(offset, true); - let value2 = dataView.getUint32(offset + 4, true); - let value3 = dataView.getUint32(offset + 8, true); - let value4 = dataView.getUint32(offset + 12, true); - return (BigInt(value4) << BigInt(96)) | (BigInt(value3) << BigInt(64)) | (BigInt(value2) << BigInt(32)) | BigInt(value1); -} - -// console.log(JSON.stringify(Array.from(hexToBytes('0x2')))) -// console.log(JSON.stringify(Array.from(textToBytes('coin')))) -// console.log(JSON.stringify(Array.from(textToBytes('balance_mut')))) -// console.log(JSON.stringify(hexToBytes('0x1570fc89d472ebd7f0926028a261575289983cc69a928e42330c0cf6d0e24861'))) -// console.log(JSON.stringify(hexToBytes('0xeb0fd6ce92111543c021fad91034743d8b25992e4d7ffe3d3e907dc5fa1b8698'))) -// console.log(JSON.stringify(hexToBytes('0x15eda7330c8f99c30e430b4d82fd7ab2af3ead4ae17046fcb224aa9bad394f6b'))) -// console.log(JSON.stringify(hexToBytes('0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d'))) -// console.log(JSON.stringify(hexToBytes('0x0330bbb1df8d16c52e347bb797dddca9dcac08c1362502ad8cc830bc3aa7250b'))) -// console.log(JSON.stringify(hexToBytes('0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49'))) -// console.log(JSON.stringify(hexToBytes('0xf8b4342324f0cfa17998beacfd5f8cfed85f0f7c8a6b567c65796dfdb1a75c9c'))) -// console.log(JSON.stringify(hexToBytes('0x0000000000000000000000000000000000000000000000000000000000000006'))) -// console.log(toU64(1000)) - -module.exports = { - hexToBytes, - toU64, - toU128, - textToBytes, - desU64, - desU128, -}; diff --git a/projects/nemo/coinConfig.js b/projects/nemo/coinConfig.js deleted file mode 100644 index 834acd74bec..00000000000 --- a/projects/nemo/coinConfig.js +++ /dev/null @@ -1,569 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const COIN_CONFIG = { - "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x0fa9dc987f71878b91d389c145aab67f462744b695054578ca4ae4d6ced01099", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x53a8c1ffcdac36d993ce3c454d001eca57224541d1953d827ef96ac6d7f8142e::sSUI::SSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xc6840365f500bee8732a3a256344a11343936b864c144b7e9de5bb8c54224fbe", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x7472959314b24ebfbd4da49cc36abb3da29f722746019c692407aaf6b47e9a08" - }, "0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "SpringSui", - "yieldTokenType": "", - "coinType": "0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI", - "oraclePackageId": "0xfa627d390586b0e8c0416e3d7ad72fd434bb20205ce15b073794a5732edc7502", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xeb0fd6ce92111543c021fad91034743d8b25992e4d7ffe3d3e907dc5fa1b8698", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x5db2c5c27db189f1c1d2d9e9ef32efa4757893bd473c25439a77f38a4a9d9f0b::SpringsSUI::SPRINGSSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x0330bbb1df8d16c52e347bb797dddca9dcac08c1362502ad8cc830bc3aa7250b", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xf8b4342324f0cfa17998beacfd5f8cfed85f0f7c8a6b567c65796dfdb1a75c9c" - }, "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Aftermath", - "yieldTokenType": "", - "coinType": "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI", - "oraclePackageId": "0xd1d7b19550a307904f152f27333547c0fa4d1ef25b0b7693646d6154ca8e1b24", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xa3bc4d70463ac1122d6844c8a708a4b426c8741c1fdd60254d6b8c74590a147e", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x37f1fa1fb1d14d313ed8581ebda56ee34bde20c463a08562f7cb5aadc03e17f5::afSUI::AFSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xcb27f9938f140bea67eea396fc5b0c6c6dda51537d22bf4101a38efaa76884af", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x2d4f90a110115d08d2a52215582b9176f1d0560cb11e8ae8ec4fe0a553f27b7e" - }, "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Haedal", - "yieldTokenType": "", - "coinType": "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI", - "oraclePackageId": "0x2b2bdf77b20a3e0a4e08f28d308ef94653ed27e3e5e1cf096fe4a9248abcb10a", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xa9e9f846ce7ccc9a566d13f6ae656ba09281304e4b0e946d96487027d96ec7d0", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x04231abeb2026005e3b5b2ba51c01496ee1e51aac5ba7b6ca666b334deafa9ce::haSUI::HASUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x29f1d3843471ffbe3549d39db88a4ecfd4ea0f3f5bf2cc29f729539a8d08a8bb", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x4d96db8d555a16d9f569e93695f274a09d9a6c0d4b5ad2a6f6ab8661a5c0f29b" - }, "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "6", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xdd2870d8715716a07a804235da62bb01a4ac1de3247365d8aaa19605523702f9", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0xce23d4ed32156ced83b955abb8ba927562b6eaf4fa165ac47505e3c121e67395::sDEEP::SDEEP", - "underlyingCoinType": ADDRESSES.sui.DEEP, - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x1e4b85beb4335da732eb36d0f9d131d7b15b41ea9c16d0b04d97431494bbab0a", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x4a922df356c27a71357050235fa59ff76494ef7bda5399ec2302bd3347154f4b" - }, "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "6", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x69166efe82bc16c5da0dccac137830e1da34918ca569f9b7e6365c3c333a9681", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x6ead91a199d997e030f1a010975cedfe1bd54dee2f892cae3faaad637087c0b5::sUSDC::SUSDC", - "underlyingCoinType": ADDRESSES.sui.USDC_CIRCLE, - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xe9743e405ffa4c5aaa611db024b1de4dc7eeee9fe3c2584c0030183492593a41", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x50f457c30c02bb4cf186276a8798dfc5683aa16e54316d9e52d7b2ff8d23eed3" - }, "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x4f39145f7b5513b955da2bad18a932eaac137a0f213977e351c0d8838f160c2c", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x878b76514f5308c3873169b2b505313c5045bedaa3a63936f3001a1d5ca3058c::sSCA::SSCA", - "underlyingCoinType": "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x92b7f8825a5aa60dd47f4ea966c10181b7ca4201ca5f0a7af14a48c8f7f3263c", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x0620a3174f584a8f481f787e3dd0c0ecc47e833f98195e25a7e0a879c81945b3" - }, "0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "6", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x278e20a28ffb6d12380a656e64e52a90dacd0c6d766f92d6ec36dafaeeaf5e81", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0xdf3889dd900dd7442254c291c407dc00f7677890aeb93894112c9a2902fb5388::ssbUSDT::SSBUSDT", - "underlyingCoinType": ADDRESSES.sui.suiUSDT, - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xed332b0fda640b408fea3cb8535847a03b96a9e563d0b3e37a443edf537d2304", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x022ee5ac9439ca13e30472e309dfac38bf054d67e7c0e851d424c229fc718eab" - }, "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "8", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xcba415a57b848ef9e59223c7ed322fe81f05c31d67daa009721a8a96ac2bd334", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x8fb4cc2b524436f3bdeed93afa20505bed0bdf7323dbbcae3456aee1a3a529a5::ssbETH::SSBETH", - "underlyingCoinType": ADDRESSES.sui.ETH, - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xbf385bd93e8a8b764a338d18195a3592ab85c7ddbd045cb3beab5ab1df992bca", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x47f91edf5774bcc88872832570ef00785c2d81faa44e1774de662c51605e8900" - }, "0xd01d27939064d79e4ae1179cd11cfeeff23943f32b1a842ea1a1e15a0045d77d::st_sbuck::ST_SBUCK": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Strater", - "yieldTokenType": "", - "coinType": "0xd01d27939064d79e4ae1179cd11cfeeff23943f32b1a842ea1a1e15a0045d77d::st_sbuck::ST_SBUCK", - "oraclePackageId": "0xe33adb7bec8ddc73e73444f15b6703c89a86fa642b3974208228910b8d59f091", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xb24b6e2e75c80d1a3b8fa86e8ab89648d07047c3b16619a616be4dee186ecb7f", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x0f023a5070b8719bec62371a571740840a6c1d8fb9433b0e540cb76456e842a1::st_sbuck::ST_SBUCK", - "underlyingCoinType": ADDRESSES.sui.BUCK, - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xeee9bce19c4ff269230f28b2434f2e2ae2bc7d72da6d1f8e52c248546244d7ca", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x454de5b6d5fb2f4b40f9d2ae6d9731e89d498fd6e5daffb6ac35cc4b478c84ed" - }, "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Volo", - "yieldTokenType": "", - "coinType": "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT", - "oraclePackageId": "0xbce03628dfae0e62e9efef485df722ec88f910c23ee09c8bf4e90c48795dfccc", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xa4949fc466d866220220a490d231ef70784642f65f5513273462551b2248b704", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x2467d1031141a323c1c49ed7e747b0bd80a63eef8c1789d69ac2c70742dc420a::vSUI::VSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xdd3ac9671af6cf7cdbc3f0a9dfd1c2ff94df53e74ee554f9a93a096c93831854", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xb5cba43495bf7c72b249ee8038a73284f28d87eefa60a13128cb82f0dc696d4f" - }, "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "AlphaFi", - "yieldTokenType": "", - "coinType": "0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI", - "oraclePackageId": "0x80fef8a281dad5d3f1925b900a512cb045baee17c5563a3c658925ac4030e8af", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x18c0b07f0e1adbb6144b142b179b0671d966b5478da88480fa475bfa25a35063", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x3aeee18c2cb21264b8c53ba4904c80fcf66bb6302b923a7130b675920f23033b::stSUI::STSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x3529e4ad3d7627a5612f58518432c1abcb1c67d44f1e270a6c75c156ec3e95ef", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xe4750dcb02e072a25632d71a1edc0c22d4e4fa6d57eb6d00672f87d1d6f973f9" - }, "0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x3fb1c0fef2e27f51b1de1420252dbb6fd5b4e82fe1af4de92f90e2f50e5b263b", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0xf935a2b0817d8ce3e4e34b65a6b59b72e0108b5248905edccb5276d1e5f3ac60::smUSD::SMUSD", - "underlyingCoinType": "0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x82d65447fbb3f16fa42aa9589c3dd5ddb241ca95227f89c7a5c343914954ce7f", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x80815dd01d4e2ce4319a1eae8e6fafa60ec1da6f713477ee8475b0cea33d2e35" - }, "0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "6", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x3b8903d20a6c0c91d7aeeb198cf5098b4b855c870e67ee449f5b15e910bc57a0", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0xb603830bdae7082b9bca4a87ba84fe0c7faf8eb7c53b1b148409a5acbb668a9d::sUSDY::SUSDY", - "underlyingCoinType": ADDRESSES.sui.USDY, - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x105fcbd3f6c097efb4ab1652a0831c5e044c2d74b551192c43ea7900dad55d29", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x13eef2babfb2750df8e678ede4c1e1cc7692a5109479c6bb7d27f236c36c2eba" - }, "0x828b452d2aa239d48e4120c24f4a59f451b8cd8ac76706129f4ac3bd78ac8809::lp_token::LP_TOKEN": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Cetus", - "yieldTokenType": "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI", - "coinType": "0x828b452d2aa239d48e4120c24f4a59f451b8cd8ac76706129f4ac3bd78ac8809::lp_token::LP_TOKEN", - "oraclePackageId": "0xc7cfcedb3f29a9d790e16175055f9ff6c767488b6496c9a1350b30db4bda96c7", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x146e45565350d7d7a688aa8a5b0e9570c3586fe8510af50585e66cdf56b064ef", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0xd60626a6264e984fd7a343bdf8a68a2cd83ada70650228e1741b5349e22261c6::haSUI_SUI_Cetus_Vault::HASUI_SUI_CETUS_VAULT", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xb5960164159362c606a5e098e210de01a117d2bf48a4caa530922bd85b4d8042", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x7dc57658832c6b19e322060d6ecf24bc5fd94a44de6f26399216cd6cea523c33" - }, "0xb490d6fa9ead588a9d72da07a02914da42f6b5b1339b8118a90011a42b67a44f::lp_token::LP_TOKEN": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Cetus", - "yieldTokenType": "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT", - "coinType": "0xb490d6fa9ead588a9d72da07a02914da42f6b5b1339b8118a90011a42b67a44f::lp_token::LP_TOKEN", - "oraclePackageId": "0xe421698a74b98322e5650e8eab521259e502dcb0c49f44812d21af0a1a98dc38", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x201907aeac4ac741b1ac84399b96617e9215f26f652412caefa4a8fd9a175335", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x6020e695701ff4acf0800be2a1fbf8b8a37fcf5904a2e7abae8eaaee1a4c4446::vSUI_SUI_Cetus_Vault::VSUI_SUI_CETUS_VAULT", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xbfc71f4cb00f289d732513184b4b04290bd4a876d22351d13ddc71074556cc20", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xcb8a90cac3c63920fc8d89fad0cda88da433da19e5fb35a972fb0b24c7003644" - }, "0x622345b3f80ea5947567760eec7b9639d0582adcfd6ab9fccb85437aeda7c0d0::scallop_wal::SCALLOP_WAL": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Scallop", - "yieldTokenType": "", - "coinType": "0x622345b3f80ea5947567760eec7b9639d0582adcfd6ab9fccb85437aeda7c0d0::scallop_wal::SCALLOP_WAL", - "oraclePackageId": "0xee1ff66985a76b2c0170935fb29144b4007827ed2c4f3d6a1189578afb92bcdd", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x457a3ccba46c5e441b12caf91529c1948a87163ae92d0443cb2d95cb99aba4c0", - "providerVersion": "0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7", - "providerMarket": "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x8c82d435c8b7463581020484aee70ffee0e6b94a08d7c31cfaa3d10418d9c37b::sWAL::SWAL", - "underlyingCoinType": "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xc2d63e973782020265b6e203d409a2bf5d7c7feb2f93397c280941ee7f940191", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x608ecc23a8c980cc8a95a0ee2e6f9824a70ff8189139e6268702cfbe4c82b684" - }, "0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Mstable", - "yieldTokenType": "", - "coinType": "0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI", - "oraclePackageId": "0x83949cdb90510f02ed3aee7a686cd0b1390de073afcadad9aa41d3016eb13463", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xe3a51edfaf3f226356f331788667d509727f0f013989af2a8079d48e15670a98", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x852a84284180ffe4d8e339c8e9bc3b9afe917f7489d7938620813aa7f0ee5381::superSui::SUPERSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x0ea8afa6e8f451f1c3a7b10ea06fbbeea93a35d4c303fa6b63975de85fd33dde", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xa72ae88db5febc37fabb1bf10b6f0eeca002b59b7252998abd0b359c5269eed0" - }, "0x8b4d553839b219c3fd47608a0cc3d5fcc572cb25d41b7df3833208586a8d2470::hawal::HAWAL": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Haedal", - "yieldTokenType": "", - "coinType": "0x8b4d553839b219c3fd47608a0cc3d5fcc572cb25d41b7df3833208586a8d2470::hawal::HAWAL", - "oraclePackageId": "0x4ee535494830278bf57ba78d7c5f33ad3372acbb6fe845bd92928c456f1b80f3", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x3469e7b055dfe3247de89c409d9959732d2aa3a5d9abe10ccbb6419bde568768", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0xe186d94b6077c2ac68c131e57145649998daf06420de4ae19d1e0d27527f15fc::haWAL::HAWAL", - "underlyingCoinType": "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x0f3c5b2f206805dbcd85eb04b68ef1578bb39aaef1327abfc40f6fa030736650", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x008d6529d6a9727e633b2f4342b32488f34acb8e75d9441f5ab3791994c4be1f" - }, "0xb1b0650a8862e30e3f604fd6c5838bc25464b8d3d827fbd58af7cb9685b832bf::wwal::WWAL": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Winter", - "yieldTokenType": "", - "coinType": "0xb1b0650a8862e30e3f604fd6c5838bc25464b8d3d827fbd58af7cb9685b832bf::wwal::WWAL", - "oraclePackageId": "0x996a48078c72b1ac386b80ebe080ad4321794d337fbd3df9e7b9a5ee70c99507", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x8403d60d2b7241cc67667fbbe2cc9f5ba978e09b124333de84f8ad8f1e7b1092", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x0c2e5a60b4c6e2eda7a5add1f9340160bfcc0559749af239622e8d107d51b431::wWAL::WWAL", - "underlyingCoinType": "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0xcce767588e14be4cfae929f54db89b7599c18fb6410f1b11af6a3f0202b48b9d", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x42191dce0f78c8a73a4933a2cc41cbae5f2dd43c2984457fa474e02e67a937ef" - }, "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "SpringSui", - "yieldTokenType": "", - "coinType": "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI", - "oraclePackageId": "0xfa627d390586b0e8c0416e3d7ad72fd434bb20205ce15b073794a5732edc7502", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xe1a81aed9d2ebd46ac0ed0f7bc2617aa423ed91333c5f9688646ed137a8cf0f9", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x8a6b81e813b8f576679ef2dee68585b4130100bc7d30e93f9e0796c7205499a9::mSui::MSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x24c2a929e6060739137a16ed58ed625b0e32d00b5aed0ea5ba3b7c4e915b1ca8", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x027e037e3b0e73defd8a256ab9d5f6bf637e051a810941f823ac46337829b2ea" - }, "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "SpringSui", - "yieldTokenType": "", - "coinType": "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI", - "oraclePackageId": "0xfa627d390586b0e8c0416e3d7ad72fd434bb20205ce15b073794a5732edc7502", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0xe8ea8302ffca6e33467f7daaea22e4051efc81f8056c00149fda365067febe12", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x0be0e02f5d4fc1ed63cd6fcb2d09d201ef839b0e185d493b8f33113fed4e4942::trevinSui::TREVINSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x54debbf56bc0e4935d853c98bd2555d022d11e2d84c21079f4b40f8154cc1251", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x4cdaea912a0000f83cfdf1acd58758a3e2ab47645ea76a6a7b4ad64f3d8b0611" - }, "0x02358129a7d66f943786a10b518fdc79145f1fc8d23420d9948c4aeea190f603::fud_sui::FUD_SUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "SpringSui", - "yieldTokenType": "", - "coinType": "0x02358129a7d66f943786a10b518fdc79145f1fc8d23420d9948c4aeea190f603::fud_sui::FUD_SUI", - "oraclePackageId": "0xfa627d390586b0e8c0416e3d7ad72fd434bb20205ce15b073794a5732edc7502", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x0971b1872f21c8e9c8efceb582b1f1917c23ba9c0a6546290c9ac7e5a40a19a8", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x2c9e727be8ccf042456a59acecc881b40bec8771c545cd649f3e1752f7ae72ff::fudSui::FUDSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x36f1a4935f438e25d38877d8a3396675afed625a8717a42893ad6334ddb790f7", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xed8a68acf3f13c93b1852c3af3482d5ea057c6a6630ba526f30b1c3bf844cf64" - }, "0x41ff228bfd566f0c707173ee6413962a77e3929588d010250e4e76f0d1cc0ad4::ksui::KSUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "SpringSui", - "yieldTokenType": "", - "coinType": "0x41ff228bfd566f0c707173ee6413962a77e3929588d010250e4e76f0d1cc0ad4::ksui::KSUI", - "oraclePackageId": "0xfa627d390586b0e8c0416e3d7ad72fd434bb20205ce15b073794a5732edc7502", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x85a8c61cc96982d13c8fb60d03b30eb21472a8ca7163718b6c1a1bc7b98c6566", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x56a457262ace1f899aa78ea2e077802779e2b421f874b1e89cbc1ac57946754a::kSUI::KSUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x0dccda0ff1e3ba1d581111ffd670e0b2dcc46e2423287af244be38d51f9efd1d", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xd0564d99dd0fc96842b29bfc516652854887fadec6d0af88689f712eb37dc07f" - }, "0x285b49635f4ed253967a2a4a5f0c5aea2cbd9dd0fc427b4086f3fad7ccef2c29::i_sui::I_SUI": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "SpringSui", - "yieldTokenType": "", - "coinType": "0x285b49635f4ed253967a2a4a5f0c5aea2cbd9dd0fc427b4086f3fad7ccef2c29::i_sui::I_SUI", - "oraclePackageId": "0xfa627d390586b0e8c0416e3d7ad72fd434bb20205ce15b073794a5732edc7502", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x5ebf405fea00d93efe7f592297dbd2d61f4e6d53beb2a1d76721c18fa4654e0f", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x4b809bc58d18f37c6eeeb6c4238d557e8ca195601a0639d3254e760d4d86db32::iSui::ISUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x212b78c5698fbc9e0f8245fdadbd1a93f8b34390b66a3c99a07d41256e10fe0e", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xa2cbc5218aa403e028c84df454e7b6417067739e436a250f84a9b2d8abb5b773" - }, "0xd8b855d48fb4d8ffbb5c4a3ecac27b00f3712ce58626deb5a16a290e0c6edf84::nwal::NWAL": { - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - "decimal": "9", - "provider": "Winter", - "yieldTokenType": "", - "coinType": "0xd8b855d48fb4d8ffbb5c4a3ecac27b00f3712ce58626deb5a16a290e0c6edf84::nwal::NWAL", - "oraclePackageId": "0x996a48078c72b1ac386b80ebe080ad4321794d337fbd3df9e7b9a5ee70c99507", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "oracleTicket": "0x16125092330c195e64abccbeaf9b2825d8dc2f348ec1aab23b8be3c6174ca112", - "providerVersion": "", - "providerMarket": "", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x842a1580baf97b349d2ddfb0730cf5046ffff33168c9a4e8a6913db926afe6d9::nWAL::NWAL", - "underlyingCoinType": "0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL", - "nemoContractId": "0xbf4adf628ffb8ece142bf3d1cb43ee989bf8b42ea711d38ccd849f3a9dbf6840", - "pyStateId": "0x5142c6988b3fefa8786a6197fb731468cd53c44000ddbf7178faef459b762c6d", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x51929957c5947a457345c5ecfdf853a4048d27aa37365f5c9b6dbba8e7e557b8" - }, "0x7f29e761222a44b2141596e920edcc9049f8610f9d33f5354454d088e1f53b62::x_sui_sui_nevlp::X_SUI_SUI_NEVLP": { - "coinType": "0x7f29e761222a44b2141596e920edcc9049f8610f9d33f5354454d088e1f53b62::x_sui_sui_nevlp::X_SUI_SUI_NEVLP", - "provider": "Nemo", - "decimal": "9", - "pyStateId": "0xecc7a0cbd816b7943ef26c45ea1688277d9cd95f42eac75dcc94ca1e6863b8fd", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0xa109a93556023ebde3dde738b204539feac83fc8abaf8529cd4c444b08622756::nevlp_xsui_sui::NEVLP_XSUI_SUI", - "underlyingCoinType": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI", - "nemoContractId": "0x0f286ad004ea93ea6ad3a953b5d4f3c7306378b0dcc354c3f4ebb1d506d3b47f", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0x2c1d1803b890b0600ba606aa935553472b8b08a81dcef67e2ba7504d43fa6234", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "yieldTokenType": "0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI", - "oraclePackageId": "0x944edf6984885433c699b7ce35b0e14da85bc6fd6696fb6dbb03ca7260b5eff2", - "oracleTicket": "0x0dc8929f779b6945aba11860227c59cc785b7b4bb305d32f521ba9b9220b6ae5", - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - }, "0x295d7f569467934c934e6101284628ecbbb1e68d5c5baa8d4667ff09c42068ad::suiusdt_usdc_nevlp::SUIUSDT_USDC_NEVLP" : { - "coinType": "0x295d7f569467934c934e6101284628ecbbb1e68d5c5baa8d4667ff09c42068ad::suiusdt_usdc_nevlp::SUIUSDT_USDC_NEVLP", - "provider": "Nemo", - "decimal": "9", - "pyStateId": "0x1274d5deded97aca90c9ad9fef04a68d4f915ce5e008e1be28307c693f6c25c4", - "syStateId": "0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d", - "syCoinType": "0x23f7d6b1de8c099fe15f638c4517acfd85d4d893ae669a24ea348e262e03b07e::nevLP_suiUSDT_USDC::NEVLP_SUIUSDT_USDC", - "underlyingCoinType": ADDRESSES.sui.USDC_CIRCLE, - "nemoContractId": "0x0f286ad004ea93ea6ad3a953b5d4f3c7306378b0dcc354c3f4ebb1d506d3b47f", - "marketFactoryConfigId": "0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49", - "marketStateId": "0xb13b492e36200638bb7380be9e4975f2b7c3b9af55f201c22e6cbad2dd942788", - "priceOracleConfigId": "0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e", - "yieldTokenType": ADDRESSES.sui.suiUSDT, - "oraclePackageId": "0x16c08984e498f616a1e7dd083a08e399e54e0656ce0e26bc1b3ffc4790dc09c4", - "oracleTicket": "0x900f66b9a1d78481cf313b835e94a3bdcbe4cf58d4c004a302f7c184142f2b6d", - "oracleVoucherPackageId": "0x8783841625738f73a6b0085f5dad270b4b0bd2e5cdb278dc95201e45bd1a332b", - } -} - -const MMT = { - MMT_ORACLE_ID: "0x6cc485157712b67d3bbc71110947084aad0d23d7661add04e13038cfa765e80a", - MMT_ORACLE_PACKAGE_ID: "0x45fe3ef1ed2d9b444b8041a84e426242ad129483bf56000cdd514b8065967f4d", - PRICE_ADAPTER_PACKAGE_ID: "0x454ae856685130db7e5f86851add03d8252cebddbaff59db196548f3bd93d32a", - REGISTRY_ID: "0x6f8c395de3f250e08c01a25500c185d74cb182002d76750189c7e20a514befa8", - ORACLE_STATE: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8", - SET_PRICE_CAP_REGISTRY: "0xd088d1eaf09dfda03c989acf3063fd0e3e14432a2d21bf9fd2be30bf76373bfd", - CLOCK_ADDRESS: "0x0000000000000000000000000000000000000000000000000000000000000006" -} - -const VAULT_CONFIG = {VAULT_PACKAGE_ID: '0xba95f1404db682baf28b22b512625c244df9615e0c5162b26eaf78852429eba5'}; -const MMT_TYPE_CONFIG = { - "0x811d7913fa37da1a16fd0cbdebfec15a89f20a8894922e07527c86823b6c27f8::suiusdt_usdc_nevlp::SUIUSDT_USDC_NEVLP": { - VAULT_ID: "0x30a8285b76ba17f0202c60f5d5be769ca644db00ac944924b58408c5a1f971e8", - POOL_ID: "0xb0a595cb58d35e07b711ac145b4846c8ed39772c6d6f6716d89d71c64384543b", - COIN_A_TYPE: ADDRESSES.sui.suiUSDT, - COIN_B_TYPE: ADDRESSES.sui.USDC_CIRCLE, - CONFIG_TYPE: "0xaa5c53240d338514907ce7254a14730716adc3c0d1d4f55485b0178d61881947::config::Uncorrelated", - }, - "0x7f29e761222a44b2141596e920edcc9049f8610f9d33f5354454d088e1f53b62::x_sui_sui_nevlp::X_SUI_SUI_NEVLP": { - VAULT_ID: "0x9356a36b0066561f66db7681d87537c8d9a992ca8e12095be91dcea500211015", - POOL_ID: "0x9c92c5b8e9d83e485fb4c86804ac8b920bb0beaace5e61a5b0239218f627f8e9", - COIN_A_TYPE: "0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI", - COIN_B_TYPE: ADDRESSES.sui.SUI, - CONFIG_TYPE: "0xaa5c53240d338514907ce7254a14730716adc3c0d1d4f55485b0178d61881947::config::Uncorrelated", - }, - "0x295d7f569467934c934e6101284628ecbbb1e68d5c5baa8d4667ff09c42068ad::suiusdt_usdc_nevlp::SUIUSDT_USDC_NEVLP": { - VAULT_ID: "0x18fe46d697a3ce2c87b62db5435678ff8df179efc913e250e888019d2f1c4105", - POOL_ID: "0xb0a595cb58d35e07b711ac145b4846c8ed39772c6d6f6716d89d71c64384543b", - COIN_A_TYPE: ADDRESSES.sui.suiUSDT, - COIN_B_TYPE: ADDRESSES.sui.USDC_CIRCLE, - CONFIG_TYPE: "0xaa5c53240d338514907ce7254a14730716adc3c0d1d4f55485b0178d61881947::config::Uncorrelated", - }, - "0xa9759f952198f985f5e05f6a37956e33b0c496bb02264ef92e4ee63c3eaaa06a::xbtc_wbtc_nevlp::XBTC_WBTC_NEVLP": { - VAULT_ID: "0x5ca7c661f9e454bbcd780f4d376ccbf536ec34402d99a840bdfb595021e9d727", - POOL_ID: "0x57a662791cea065610455797dfd2751a3c10d929455d3ea88154a2b40cf6614e", - COIN_A_TYPE: "0x876a4b7bce8aeaef60464c11f4026903e9afacab79b9b142686158aa86560b50::xbtc::XBTC", - COIN_B_TYPE: "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC", - CONFIG_TYPE: "0xaa5c53240d338514907ce7254a14730716adc3c0d1d4f55485b0178d61881947::config::Uncorrelated", - } -} - -const PYTH_ORACLE_MAP = { - [ADDRESSES.sui.SUI]: { - priceInfoObjectId: '0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37' - }, - '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI': { - priceInfoObjectId: '0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37' - }, - [ADDRESSES.sui.suiUSDT]: { - priceInfoObjectId: '0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572' - }, - [ADDRESSES.sui.USDC_CIRCLE]: { - priceInfoObjectId: '0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab' - } -} - -module.exports = { - COIN_CONFIG, - MMT_TYPE_CONFIG, - VAULT_CONFIG, - MMT, - PYTH_ORACLE_MAP -}; \ No newline at end of file diff --git a/projects/nemo/constants.js b/projects/nemo/constants.js deleted file mode 100644 index d81078dafd4..00000000000 --- a/projects/nemo/constants.js +++ /dev/null @@ -1,159 +0,0 @@ -const AFTERMATH = { - STAKED_SUI_VAULT: - "0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d", - SAFE: "0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610", - REFERRAL_VAULT: - "0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef", - SYSTEM_STATE: "0x5", - CLOCK: "0x6", - TREASURY: - "0xd2b95022244757b0ab9f74e2ee2fb2c3bf29dce5590fa6993a85d64bd219d7e8", - VALIDATOR_CONFIGS_TABLE: - "0x8536350cfb8a8efdd133a1e087b55416d431f7e8b894f77b55b20c4b799ebad9", -} - -const SSBUCK = { - VAULT: "0xe83e455a9e99884c086c8c79c13367e7a865de1f953e75bcf3e529cdf03c6224", -} - -const ALPAHFI = { - PACKAGE_ID: - "0x059f94b85c07eb74d2847f8255d8cc0a67c9a8dcc039eabf9f8b9e23a0de2700", - LIQUID_STAKING_INFO: - "0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5", -} - -const SPRING_SUI_STAKING_INFO_LIST = [ - { - coinType: - "0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI", - value: "0x15eda7330c8f99c30e430b4d82fd7ab2af3ead4ae17046fcb224aa9bad394f6b", - }, - { - coinType: - "0xe68fad47384e18cd79040cb8d72b7f64d267eebb73a0b8d54711aa860570f404::upsui::UPSUI", - value: "0x0ee341383a760c3af14337f134d96a5502073b897f551895e92f74aa07de0905", - }, - { - coinType: - "0xc5c4bc11427315926cf0cc284504d8e5693a10da75500a5198bdee23f47f4254::lofi_sui::LOFI_SUI", - value: "0xeb784ecfc02515248b71f45b069310592e07f934107a0377cc5919200288e513", - }, - { - coinType: - "0x285b49635f4ed253967a2a4a5f0c5aea2cbd9dd0fc427b4086f3fad7ccef2c29::i_sui::I_SUI", - value: "0x4c19387aae1ce9baec9f53d7e7a1dcae348a2fd5614785a7047b0b8cbc5494d7", - }, - { - coinType: - "0x83f1bb8c91ecd1fd313344058b0eed94d63c54e41d8d1ae5bff1353443517d65::yap_sui::YAP_SUI", - value: "0x55f3108cf195481de42d6c44469d0c870c08f3e8ea00c59452ad46445da88fcf", - }, - { - coinType: - "0x41ff228bfd566f0c707173ee6413962a77e3929588d010250e4e76f0d1cc0ad4::ksui::KSUI", - value: "0x03583e2c4d5a66299369214012564d72c4a141afeefce50c349cd56b5f8a6955", - }, - { - coinType: - "0x0f26f0dced338b538e027fca6ac24019791a7578e7eb2e81840e268970fbfbd6::para_sui::PARA_SUI", - value: "0x8f50587e228c3d4217293ea85406827d6755f598613a0697b2cb19dac297e993", - }, - { - coinType: - "0x02358129a7d66f943786a10b518fdc79145f1fc8d23420d9948c4aeea190f603::fud_sui::FUD_SUI", - value: "0x7b4406fd4de96e08711729516f826e36f3268c2fefe6de985abc41192b02b871", - }, - { - coinType: - "0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI", - value: "0x1ec3b836fe8095152741ae5425ca4c35606ba5622c76291962d8fd9daba961db", - }, - { - coinType: - "0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI", - value: "0x985dd33bc2a8b5390f2c30a18d32e9a63a993a5b52750c6fe2e6ac8baeb69f48", - }, - { - coinType: - "0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI", - value: "0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a", - } -] - -const HAEDAL = { - HAEDAL_STAKING_ID: - "0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca", -} - -const VOLO = { - NATIVE_POOL: - "0x2d914e23d82fedef1b5f56a32d5c64bdcc3087ccfea2b4d6ea51a71f587840e5", - METADATA: - "0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60", -} - -const Winter_Blizzard_Staking_List = [ - { - coinType: - "0xb1b0650a8862e30e3f604fd6c5838bc25464b8d3d827fbd58af7cb9685b832bf::wwal::WWAL", - value: "0xccf034524a2bdc65295e212128f77428bb6860d757250c43323aa38b3d04df6d", - }, - { - coinType: - "0xd8b855d48fb4d8ffbb5c4a3ecac27b00f3712ce58626deb5a16a290e0c6edf84::nwal::NWAL", - value: "0x75c4a3d4f78aa3157e2ab6e8dfb2230432272c23ab9392b10a2212e4b2fcc9f9", - }, - { - coinType: - "0x0f03158a2caec1b656ee929007d08e58d620eeabeacac90ea7657d8b386b00b9::pwal::PWAL", - value: "0xd355b8e62f16418a02879de9bc4ab15c4dad9dd2966d15645e1674689bfbc8b9", - }, - { - coinType: - "0x5f70820b716a1d83580e5cf36dd0d0915b8763e1b85e3ef3db821ff40846be44::bread_wal::BREAD_WAL", - value: "0xc75f916f5cdc94664f58f5e8284a70ef69f973d62cd9841584bc70200a98a8b7", - }, - { - coinType: - "0xa8ad8c2720f064676856f4999894974a129e3d15386b3d0a27f3a7f85811c64a::tr_wal::TR_WAL", - value: "0x76d5f7309ac302c10aa91d72ab7d48252a840816c39764293e986ce90c3c4a0d", - }, - { - coinType: - "0x615b29e7cf458a4e29363a966a01d6a6bf5026349bb4e957daa61ca9ffff639d::up_wal::UP_WAL", - value: "0xa3d69fdb63cbeaec068e8739fe7bda05a184f82999d1e76f0c0f5e9a29e297ed", - }, - { - coinType: - "0x64e081287af3fb4eb5720137348661493203d48535f582577177fcd3b253805f::mwal::MWAL", - value: "0x1c98a3851302351913b34491a07930e83b1bd502cf1c6e9428b1c5d690d1e074", - }, -] - -const SUPER_SUI = { - REGISTRY: - "0x5ff2396592a20f7bf6ff291963948d6fc2abec279e11f50ee74d193c4cf0bba8", - VAULT: "0x3062285974a5e517c88cf3395923aac788dce74f3640029a01e25d76c4e76f5d", -} - -const WWAL = { - PACKAGE_ID: - "0x0c2e5a60b4c6e2eda7a5add1f9340160bfcc0559749af239622e8d107d51b431", - TREASURY_CAP: - "0x6d7da14a09687a3ed3e97deb3bc2428ab7f2db39f4e706dd7344760b5ae43729", - WALRUS_STAKING: - "0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904", -} - -module.exports = { - VOLO, - SSBUCK, - HAEDAL, - ALPAHFI, - AFTERMATH, - SUPER_SUI, - WWAL, - SPRING_SUI_STAKING_INFO_LIST, - Winter_Blizzard_Staking_List, -} \ No newline at end of file diff --git a/projects/nemo/index.js b/projects/nemo/index.js deleted file mode 100644 index f872453182c..00000000000 --- a/projects/nemo/index.js +++ /dev/null @@ -1,137 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); -const BigNumber = require("bignumber.js"); -const {COIN_CONFIG} = require("./coinConfig.js"); - -const {desU64, desU128} = require("./bytes"); -const {getExchangeRate} = require("./price"); -const {MMT_TYPE_CONFIG} = require("./coinConfig"); -const {getVaultTvlByAmountB, getDynamicFieldObject} = require("./util"); - -const nemoPackageId = "0x2b71664477755b90f9fb71c9c944d5d0d3832fec969260e3f18efc7d855f57c4"; -const syTableParentId = "0xcb74e46f4049e1afc3edcd77172ac6f9adfe1068cec6ca99ff6b80ca7879bd33"; - -const watchCoinType = [ - '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI', - '0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC', - '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA', - '0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP', - '0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT', - '0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH', - '0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY', - '0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD', - '0x622345b3f80ea5947567760eec7b9639d0582adcfd6ab9fccb85437aeda7c0d0::scallop_wal::SCALLOP_WAL', - '0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI', - '0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI', - '0xd8b855d48fb4d8ffbb5c4a3ecac27b00f3712ce58626deb5a16a290e0c6edf84::nwal::NWAL', - '0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI', - '0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI', - '0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI', - '0x41ff228bfd566f0c707173ee6413962a77e3929588d010250e4e76f0d1cc0ad4::ksui::KSUI', - '0x285b49635f4ed253967a2a4a5f0c5aea2cbd9dd0fc427b4086f3fad7ccef2c29::i_sui::I_SUI', - '0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT', - '0xd01d27939064d79e4ae1179cd11cfeeff23943f32b1a842ea1a1e15a0045d77d::st_sbuck::ST_SBUCK', - "0x7f29e761222a44b2141596e920edcc9049f8610f9d33f5354454d088e1f53b62::x_sui_sui_nevlp::X_SUI_SUI_NEVLP", - "0x295d7f569467934c934e6101284628ecbbb1e68d5c5baa8d4667ff09c42068ad::suiusdt_usdc_nevlp::SUIUSDT_USDC_NEVLP" -]; - -const watchCoinTypeNotConvert = [ - '0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI', - '0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI', - '0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI', - '0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI', - '0x02358129a7d66f943786a10b518fdc79145f1fc8d23420d9948c4aeea190f603::fud_sui::FUD_SUI', - '0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT', -]; - -async function tvl(api) { - const marketIds = await sui.queryEvents({ - eventType: `${nemoPackageId}::market_factory::MarketCreatedEvent`, - transform: i => i.market_id - }); - - const markets = await sui.getObjects(marketIds); - - for (const market of markets) { - if (!market) continue; - - const {type, fields} = market; - await getTvl(type, fields, api); - } -} - -async function getTvl(type, fields, api) { - const typeString = type.replace(">", "").split("<")[1]; - if (!typeString) return null; - - const syTokens = typeString.split(", ")[0].slice(2); - - const tokensObject = await getDynamicFieldObject( - syTableParentId, syTokens, {idType: "0x1::type_name::TypeName"}); - if (!tokensObject || !tokensObject.content) return null; - const tokens = "0x" + tokensObject.content.fields.value.fields.name; - - const coinConfig = COIN_CONFIG[tokens]; - - if (!coinConfig) return null; - if (!watchCoinType.includes(coinConfig.coinType)) return null; - - const txBlockBytes = await getExchangeRate(coinConfig); - - const inspectionResult = await sui.call( - 'sui_devInspectTransactionBlock', - ['0x0000000000000000000000000000000000000000000000000000000000000000', - Buffer.from(txBlockBytes).toString('base64')], - {withMetadata: true} - ); - - if (inspectionResult?.effects?.status?.status !== 'success') { - return null; - } - - const returnValues = inspectionResult.results[inspectionResult.results?.length - 1].returnValues; - const res1 = returnValues[0][0]; - const res2 = returnValues[1][0]; - - if (coinConfig.provider === 'Nemo') { - const priceVoucher1 = desU64(Uint8Array.from(res1)); - const priceVoucher2 = desU64(Uint8Array.from(res2)); - const pt2SyAmount = new BigNumber(fields.total_pt).div(priceVoucher1).times(priceVoucher2); - let syBalance = BigNumber.sum(pt2SyAmount, new BigNumber(fields.total_sy)); - - const vault = await sui.getObject(MMT_TYPE_CONFIG[coinConfig.coinType].VAULT_ID); - const amountB = await getVaultTvlByAmountB(vault); - - const totalSupply = vault.fields.treasury_cap.fields.total_supply.fields.value; - - const lpTokenPrice = BigNumber(amountB).div(BigNumber(totalSupply)); - - api.add(coinConfig.underlyingCoinType, syBalance.times(lpTokenPrice).toFixed(0)); - } else { - const priceVoucher1 = desU128(Uint8Array.from(res1)); - const priceVoucher2 = desU128(Uint8Array.from(res2)); - - let rate1 = new BigNumber(priceVoucher1).div(new BigNumber(2).pow(64)).toString(); - let rate2 = new BigNumber(priceVoucher2).div(new BigNumber(2).pow(64)).toString(); - - const pt2SyAmount = new BigNumber(fields.total_pt).div(rate1); - let syBalance = BigNumber.sum(pt2SyAmount, new BigNumber(fields.total_sy)); - - if (watchCoinTypeNotConvert.includes(coinConfig.coinType)) { - console.log(`coinType: ${coinConfig.coinType}, syBalance: ${syBalance.toNumber()}, marketId: ${fields.id.id}`); - api.add(tokens, syBalance.toNumber()); - } else { - let underlyingBalance = syBalance.multipliedBy(rate2); - console.log(`coinType: ${coinConfig.coinType}, syBalance: ${underlyingBalance.toNumber()}, marketId: ${fields.id.id}, rate1: ${rate1}, rate2: ${rate2}`); - api.add(coinConfig.underlyingCoinType, underlyingBalance.toNumber()); - } - } -} - -module.exports = { - timetravel: false, - methodology: 'Count all assets are deposited into Nemo markets.', - sui: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/nemo/math.js b/projects/nemo/math.js deleted file mode 100644 index 118d466e86c..00000000000 --- a/projects/nemo/math.js +++ /dev/null @@ -1,95 +0,0 @@ -const BN = require("bn.js"); -const BigNumber = require("bignumber.js"); - -const ZERO = new BN(0) - -const ONE = new BN(1) - -const TWO = new BN(2) - -const U128 = TWO.pow(new BN(128)) - -const U64_MAX = TWO.pow(new BN(64)).sub(ONE) - -const U128_MAX = TWO.pow(new BN(128)).sub(ONE) - -/** - * @category MathUtil - */ -class MathUtil { - static toX64BN(num) { - return num.mul(new BN(2).pow(new BN(64))) - } - - static fromX64BN(num) { - return num.div(new BN(2).pow(new BN(64))) - } - - static divRoundUp(n0, n1) { - const hasRemainder = !n0.mod(n1).eq(ZERO) - if (hasRemainder) { - return n0.div(n1).add(new BN(1)) - } - return n0.div(n1) - } - - static sign(v) { - const signBit = v.testn(127) ? 1 : 0 - return signBit - } - - static is_neg(v) { - return this.sign(v) === 1 - } - - static abs_u128(v) { - if (v.gt(ZERO)) { - return v - } - return this.u128Neg(v.subn(1)) - } - - static u128Neg(v) { - return v.uxor(new BN('ffffffffffffffffffffffffffffffff', 16)) - } - - static neg(v) { - if (this.is_neg(v)) { - return v.abs() - } - return this.negFrom(v) - } - - static abs(v) { - if (this.sign(v) === 0) { - return v - } - return this.u128Neg(v.sub(new BN(1))) - } - - static negFrom(v) { - if (v.eq(ZERO)) { - return v - } - return this.u128Neg(v).add(new BN(1)).or(new BN(1).shln(127)) - } - - static u64ToRatio(values) { - return new BigNumber(values).div(new BigNumber(2).pow(new BigNumber(64))) - } - - static getPriceFromSqrtPrice(sqrtPrice, decimalA, decimalB) { - const a2bPrice = MathUtil.u64ToRatio(sqrtPrice).pow(2) - return a2bPrice.div(BigNumber(10).pow(BigNumber(decimalA - decimalB))) - } -} - -module.exports = { - ZERO, - ONE, - TWO, - U128, - U64_MAX, - U128_MAX, - MathUtil -}; \ No newline at end of file diff --git a/projects/nemo/price.js b/projects/nemo/price.js deleted file mode 100644 index c9cc06a94e8..00000000000 --- a/projects/nemo/price.js +++ /dev/null @@ -1,1289 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { - SPRING_SUI_STAKING_INFO_LIST, - Winter_Blizzard_Staking_List, - WWAL, - HAEDAL, - SSBUCK, - VOLO, - SUPER_SUI, - AFTERMATH, - ALPAHFI -} = require("./constants"); -const {hexToBytes, toU64, textToBytes} = require("./bytes"); -const {MMT_TYPE_CONFIG, VAULT_CONFIG, MMT, PYTH_ORACLE_MAP} = require("./coinConfig"); -const sui = require("../helper/chain/sui"); -const {getObjects} = require("./util"); - -const ProgrammableTransactionIndex = 0; -const PureIndex = 0; -const BoolIndex = 1; -const U64Index = 8; -const ObjectIndex = 1; -const SharedObjectIndex = 1; -const MoveCallIndex = 0; -const StructIndex = 7; -const InputIndex = 1; -const ResultIndex = 2; - -function parseSuiAddress(str) { - if (str === ADDRESSES.sui.SUI) { - str = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI' - } - const STRUCT_REGEX = /^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/; - const structMatch = str.match(STRUCT_REGEX); - if (structMatch) { - return { - address: structMatch[1], - module: structMatch[2], - name: structMatch[3], - typeParams: [], - }; - } - - throw new Error(`Encountered unexpected token when parsing type args for ${str}`); -} - -async function getExchangeRate(coinConfig) { - if (coinConfig.provider === 'Scallop') { - return await getScallopTokenExchangeRate(coinConfig); - } else if (coinConfig.provider === 'Nemo') { - return await getNemoTokenExchangeRate(coinConfig); - } else if (coinConfig.coinType === '0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI') { - return await getAfsuiTokenExchangeRate(coinConfig); - } else if (coinConfig.coinType === '0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI') { - return await getSupersuiTokenExchangeRate(coinConfig); - } else if (coinConfig.provider === 'AlphaFi') { - return await getAlphafiTokenExchangeRate(coinConfig); - } else if (coinConfig.provider === 'Winter') { - return await getBlizzardTokenExchangeRate(coinConfig); - } else if (coinConfig.provider === "SpringSui") { - return await getSpringTokenExchangeRate(coinConfig); - } else if (coinConfig.provider === "Volo") { - return await getVoloTokenExchangeRate(coinConfig); - } else if (coinConfig.coinType === "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI") { - return await getHasuiTokenExchangeRate(coinConfig); - } else if (coinConfig.coinType === "0x8b4d553839b219c3fd47608a0cc3d5fcc572cb25d41b7df3833208586a8d2470::hawal::HAWAL") { - return await getHawalTokenExchangeRate(coinConfig); - } else if (coinConfig.coinType === "0xd01d27939064d79e4ae1179cd11cfeeff23943f32b1a842ea1a1e15a0045d77d::st_sbuck::ST_SBUCK") { - return await getBuckTokenExchangeRate(coinConfig); - } - return []; -} - -async function getScallopTokenExchangeRate(coinConfig) { - let scallopVersion = getScallopVersion(coinConfig.coinType); - const kind = generateKind( - [ - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - coinConfig.providerVersion, - coinConfig.providerMarket, - coinConfig.syStateId, - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - "0x0000000000000000000000000000000000000000000000000000000000000006" - ], - scallopVersion, - [true, false, false, true, false, true, false, true, false], - '0x14c26838b7a307b81169eb7c20d9fd1adaf2de4f0e6ea7853a9c9689ba840567', - 'scallop', - 'get_scallop_token_exchange_rate', - [coinConfig.syCoinType, coinConfig.underlyingCoinType] - ); - - return generateTxBytes(kind, 9); -} - -async function getAfsuiTokenExchangeRate(coinConfig) { - const kind = generateKind( - [ - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - '0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d', - '0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610', - '0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d', - '0xcb27f9938f140bea67eea396fc5b0c6c6dda51537d22bf4101a38efaa76884af', - '0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49', - '0x2d4f90a110115d08d2a52215582b9176f1d0560cb11e8ae8ec4fe0a553f27b7e', - "0x0000000000000000000000000000000000000000000000000000000000000006" - ], - [497420735, 499209575, 32696040, 32347695, 497420736, 499209572, 497676325, 499209573, 1], - [true, false, false, false, false, true, false, true, false], - '0xaf839645bf2493a723e8e9aaef46d55a6316a89f6f821f42c9e21b5e5ad86183', - 'aftermath', - 'get_exchange_rate_from_aftermath', - [ - '0x37f1fa1fb1d14d313ed8581ebda56ee34bde20c463a08562f7cb5aadc03e17f5::afSUI::AFSUI', - '0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI' - ] - ); - - return generateTxBytes(kind, 9); -} - -async function getSupersuiTokenExchangeRate(coinConfig) { - const kind = { - "ProgrammableTransaction": { - "inputs": [ - { - "Object": { - "SharedObject": { - "objectId": coinConfig.priceOracleConfigId, - "initialSharedVersion": 497420735, - "mutable": true - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.oracleTicket, - "initialSharedVersion": 516127338, - "mutable": false - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": SUPER_SUI.REGISTRY, - "initialSharedVersion": 487394894, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": SUPER_SUI.VAULT, - "initialSharedVersion": 488551027, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.syStateId, - "initialSharedVersion": 497420736, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.pyStateId, - "initialSharedVersion": 516127339, - "mutable": true, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.marketFactoryConfigId, - "initialSharedVersion": 497676325, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.marketStateId, - "initialSharedVersion": 516127340, - "mutable": true, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006", - "initialSharedVersion": 1, - "mutable": false, - } - }, - } - ], - "commands": [{ - "MoveCall": { - "package": '0xaf839645bf2493a723e8e9aaef46d55a6316a89f6f821f42c9e21b5e5ad86183', - "module": "aftermath", - "function": "get_exchange_rate_from_aftermath", - "typeArguments": [coinConfig.syCoinType, coinConfig.coinType], - "arguments": [ - { - "Input": 0 - }, - { - "Input": 1 - }, - { - "Input": 2 - }, - { - "Input": 3 - }, - { - "Input": 4 - }, - { - "Input": 5 - }, - { - "Input": 6 - }, - { - "Input": 7 - }, - { - "Input": 8 - } - ], - } - }] - } - }; - - return generateTxBytes(kind, 9); -} - -async function getAlphafiTokenExchangeRate(coinConfig) { - const kind = generateKind( - [ - '0xb9cc723bf7494325be2f3333a3fb72f46d53abe3603e3f326fc761287850db0e', - '0x18c0b07f0e1adbb6144b142b179b0671d966b5478da88480fa475bfa25a35063', - '0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5', - '0xccd3898005a269c1e9074fe28bca2ff46784e8ee7c13b576862d9758266c3a4d', - '0x3529e4ad3d7627a5612f58518432c1abcb1c67d44f1e270a6c75c156ec3e95ef', - '0x4a8d13937be10f97e450d1b8eb5846b749f9d3f470243b6cfa660e3d75b1fc49', - '0xe4750dcb02e072a25632d71a1edc0c22d4e4fa6d57eb6d00672f87d1d6f973f9', - '0x0000000000000000000000000000000000000000000000000000000000000006' - ], - [497420735, 499650241, 443441850, 497420736, 499747225, 497676325, 499747226, 1], - [true, false, false, false, true, false, true, false], - '0x724fadf3aca4508c83c323a1f4ef6f71983e0110e1800c997938341d8e9ad610', - 'alphafi', - 'get_exchange_rate_from_alphafi', - [coinConfig.syCoinType, coinConfig.coinType] - ); - return generateTxBytes(kind, 8); -} - -async function getBlizzardTokenExchangeRate(coinConfig) { - const blizzardStaking = Winter_Blizzard_Staking_List.find( - (item) => item.coinType === coinConfig.coinType, - )?.value - - if (!blizzardStaking) { - throw new Error("Winter blizzard staking not found") - } - let blizzardVersion = getBlizzardVersion(coinConfig.coinType); - - const kind = generateKind( - [ - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - blizzardStaking, - WWAL.WALRUS_STAKING, - coinConfig.syStateId, - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - '0x0000000000000000000000000000000000000000000000000000000000000006' - ], - blizzardVersion, - [true, false, true, false, false, true, false, true, false], - '0x28aa6089c871dd6a598db5150a79efe987845e77c1c06b9f7238aa29edeb52c2', - 'haedal', - 'get_exchange_rate_from_blizzard', - [coinConfig.syCoinType, coinConfig.coinType] - ); - return generateTxBytes(kind, 9); -} - -async function getSpringTokenExchangeRate(coinConfig) { - const lstInfo = SPRING_SUI_STAKING_INFO_LIST.find( - (item) => item.coinType === coinConfig.coinType, - )?.value - - if (!lstInfo) { - throw new Error(`SpringSui: lstInfo not found for ${coinConfig.coinType}`) - } - - let springVersion = getSpringVersion(coinConfig.coinType); - const kind = generateKind( - [ - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - lstInfo, - coinConfig.syStateId, - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - '0x0000000000000000000000000000000000000000000000000000000000000006' - ], - springVersion, - [true, false, false, false, true, false, true, false], - '0xa38b880ac63a6da825608778d16f7fb3562aa848699e652aee43a29eff4f61c7', - 'spring', - 'get_exchange_rate_from_spring', - [coinConfig.syCoinType, coinConfig.coinType] - ); - return generateTxBytes(kind, 8); -} - -async function getVoloTokenExchangeRate(coinConfig) { - const kind = generateKind( - [ - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - VOLO.NATIVE_POOL, - VOLO.METADATA, - coinConfig.syStateId, - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - '0x0000000000000000000000000000000000000000000000000000000000000006' - ], - [497420735, 566116225, 552477718, 34377055, 497420736, 508837694, 497676325, 508837695, 1], - [true, false, false, false, false, true, false, true, false], - '0x94117d224a7847445107c6e0c49aa963c0362ae1a118569b43669ccc9da8a20a', - 'volo', - 'get_exchange_rate_from_volo', - [coinConfig.syCoinType] - ); - - return generateTxBytes(kind, 9); -} - -async function getHasuiTokenExchangeRate(coinConfig) { - const kind = { - "ProgrammableTransaction": { - "inputs": [ - { - "Object": { - "SharedObject": { - "objectId": coinConfig.priceOracleConfigId, - "initialSharedVersion": 497420735, - "mutable": true - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.oracleTicket, - "initialSharedVersion": 502433348, - "mutable": false - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": HAEDAL.HAEDAL_STAKING_ID, - "initialSharedVersion": 24060192, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.syStateId, - "initialSharedVersion": 497420736, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.pyStateId, - "initialSharedVersion": 503058772, - "mutable": true, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.marketFactoryConfigId, - "initialSharedVersion": 497676325, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.marketStateId, - "initialSharedVersion": 503058773, - "mutable": true, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006", - "initialSharedVersion": 1, - "mutable": false, - } - }, - } - ], - "commands": [{ - "MoveCall": { - "package": '0x976e25fbe670f007b5061eb99bf6c6c698bd52ac3863aeab69997cad28a4cefd', - "module": "haedal", - "function": "get_exchange_rate_from_haSui", - "typeArguments": [coinConfig.syCoinType, coinConfig.coinType], - "arguments": [ - { - "Input": 0 - }, - { - "Input": 1 - }, - { - "Input": 2 - }, - { - "Input": 3 - }, - { - "Input": 4 - }, - { - "Input": 5 - }, - { - "Input": 6 - }, - { - "Input": 7 - } - ], - } - }] - } - }; - return generateTxBytes(kind, 8); -} - -async function getHawalTokenExchangeRate(coinConfig) { - const kind = { - "ProgrammableTransaction": { - "inputs": [ - { - "Object": { - "SharedObject": { - "objectId": coinConfig.priceOracleConfigId, - "initialSharedVersion": 497420735, - "mutable": true - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.oracleTicket, - "initialSharedVersion": 529022461, - "mutable": false - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": HAEDAL.HAEDAL_STAKING_ID, - "initialSharedVersion": 24060192, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.syStateId, - "initialSharedVersion": 497420736, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.pyStateId, - "initialSharedVersion": 527717584, - "mutable": true, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.marketFactoryConfigId, - "initialSharedVersion": 497676325, - "mutable": false, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": coinConfig.marketStateId, - "initialSharedVersion": 527717585, - "mutable": true, - } - }, - }, - { - "Object": { - "SharedObject": { - "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006", - "initialSharedVersion": 1, - "mutable": false, - } - }, - } - ], - "commands": [{ - "MoveCall": { - "package": '0x976e25fbe670f007b5061eb99bf6c6c698bd52ac3863aeab69997cad28a4cefd', - "module": "haedal", - "function": "get_exchange_rate_from_haSui", - "typeArguments": [coinConfig.syCoinType, coinConfig.coinType], - "arguments": [ - { - "Input": 0 - }, - { - "Input": 1 - }, - { - "Input": 2 - }, - { - "Input": 3 - }, - { - "Input": 4 - }, - { - "Input": 5 - }, - { - "Input": 6 - }, - { - "Input": 7 - } - ], - } - }] - } - }; - return generateTxBytes(kind, 8); -} - -async function getBuckTokenExchangeRate(coinConfig) { - const kind = generateKind( - [ - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - SSBUCK.VAULT, - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - '0x0000000000000000000000000000000000000000000000000000000000000006' - ], - [497420735, 497420765, 261896418, 498195773, 497676325, 498195774, 1], - [true, false, false, true, false, true, false], - '0xe33adb7bec8ddc73e73444f15b6703c89a86fa642b3974208228910b8d59f091', - 'buck', - 'get_exchange_rate_from_ssbuck', - [coinConfig.syCoinType, coinConfig.coinType] - ); - - return generateTxBytes(kind, 7); -} - -async function getNemoTokenExchangeRate(coinConfig) { - // console.log('getNemoTokenExchangeRate called with coinConfig:', coinConfig.coinType); - switch (coinConfig.coinType) { - case "0x7f29e761222a44b2141596e920edcc9049f8610f9d33f5354454d088e1f53b62::x_sui_sui_nevlp::X_SUI_SUI_NEVLP": { - const lstInfo = SPRING_SUI_STAKING_INFO_LIST.find( - (item) => - item.coinType === MMT_TYPE_CONFIG[coinConfig.coinType].COIN_A_TYPE - )?.value - - if (!lstInfo) { - throw new Error(`SpringSui: lstInfo not found for ${coinConfig.coinType}`) - } - - const objects = await getObjects([ - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - lstInfo, - MMT_TYPE_CONFIG[coinConfig.coinType].VAULT_ID, - MMT_TYPE_CONFIG[coinConfig.coinType].POOL_ID, - coinConfig.syStateId, - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - '0x0000000000000000000000000000000000000000000000000000000000000006' - ]); - const versionList = objects.map((obj) => obj.data.owner.Shared.initial_shared_version) - // console.log('objects', JSON.stringify(objects), JSON.stringify(versionList)); - - const kind = generateKind( - [ - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - lstInfo, - MMT_TYPE_CONFIG[coinConfig.coinType].VAULT_ID, - MMT_TYPE_CONFIG[coinConfig.coinType].POOL_ID, - coinConfig.syStateId, - ], - versionList.splice(0, 6), - [true, false, false, false, false, false, true, false], - coinConfig.oraclePackageId, - 'spring', - 'get_price_voucher_in_sui_from_mmt_vault', - [ - coinConfig.syCoinType, - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_A_TYPE, - coinConfig.coinType, - MMT_TYPE_CONFIG[coinConfig.coinType].CONFIG_TYPE, - ], - { - syAmount: 1000000, - minPtAmount: 0, - objectId: [ - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - "0x0000000000000000000000000000000000000000000000000000000000000006" - ], - version: versionList.splice(-4), - typeArgs: [coinConfig.syCoinType] - } - ); - // console.log('Generated kind for X_SUI_SUI_NEVLP:', JSON.stringify(kind)); - return generateTxBytes(kind, 8); - } - default: - const objects = await getObjects([ - MMT.MMT_ORACLE_ID, - MMT.REGISTRY_ID, - MMT.ORACLE_STATE, - PYTH_ORACLE_MAP[MMT_TYPE_CONFIG[coinConfig.coinType].COIN_A_TYPE].priceInfoObjectId, - MMT.SET_PRICE_CAP_REGISTRY, - MMT.CLOCK_ADDRESS, - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - MMT_TYPE_CONFIG[coinConfig.coinType].VAULT_ID, - MMT_TYPE_CONFIG[coinConfig.coinType].POOL_ID, - coinConfig.syStateId, - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - PYTH_ORACLE_MAP[MMT_TYPE_CONFIG[coinConfig.coinType].COIN_B_TYPE].priceInfoObjectId, - ]); - const versionList = objects.map((obj) => obj.data.owner.Shared.initial_shared_version) - // console.log('objects', JSON.stringify(objects), JSON.stringify(versionList)); - - const kind = generateMutiMoveCallKind( - [ - MMT.MMT_ORACLE_ID, - MMT.REGISTRY_ID, - true, - MMT.ORACLE_STATE, - PYTH_ORACLE_MAP[MMT_TYPE_CONFIG[coinConfig.coinType].COIN_A_TYPE].priceInfoObjectId, - MMT.SET_PRICE_CAP_REGISTRY, - MMT.CLOCK_ADDRESS, - coinConfig.priceOracleConfigId, - coinConfig.oracleTicket, - MMT_TYPE_CONFIG[coinConfig.coinType].VAULT_ID, - MMT_TYPE_CONFIG[coinConfig.coinType].POOL_ID, - coinConfig.syStateId, - 1000000, - 0, - coinConfig.pyStateId, - coinConfig.marketFactoryConfigId, - coinConfig.marketStateId, - PYTH_ORACLE_MAP[MMT_TYPE_CONFIG[coinConfig.coinType].COIN_B_TYPE].priceInfoObjectId, - ], - versionList, - [ - true, false, false, false, false, false, true, false, false, false, false, true, false, true, false - ], - [ - { - packageId: MMT.MMT_ORACLE_PACKAGE_ID, - moduleName: 'oracle', - functionName: 'get_price_receipt', - typeArgs: [ - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_A_TYPE, - ], - argCursors:[{"Input": 0}] - }, - { - packageId: MMT.PRICE_ADAPTER_PACKAGE_ID, - moduleName: 'price_source', - functionName: 'set_k_oracle_price', - typeArgs: [ - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_A_TYPE, - ], - argCursors:[{"Result": 0}, {"Input": 0}, {"Input": 1}, {"Input": 2}, {"Input": 3}, {"Input": 4}, {"Input": 5}, {"Input": 6}] - }, - { - packageId: MMT.MMT_ORACLE_PACKAGE_ID, - moduleName: 'oracle', - functionName: 'update_price', - typeArgs: [ - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_A_TYPE, - ], - argCursors:[{"Result": 0}, {"Input": 0}] - }, - { - packageId: MMT.MMT_ORACLE_PACKAGE_ID, - moduleName: 'oracle', - functionName: 'get_price_receipt', - typeArgs: [ - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_B_TYPE, - ], - argCursors:[{"Input": 0}] - }, - { - packageId: MMT.PRICE_ADAPTER_PACKAGE_ID, - moduleName: 'price_source', - functionName: 'set_k_oracle_price', - typeArgs: [ - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_B_TYPE, - ], - argCursors:[{"Result": 3}, {"Input": 0}, {"Input": 1}, {"Input": 2}, {"Input": 3}, {"Input": 17}, {"Input": 5}, {"Input": 6}] - }, - { - packageId: MMT.MMT_ORACLE_PACKAGE_ID, - moduleName: 'oracle', - functionName: 'update_price', - typeArgs: [ - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_B_TYPE, - ], - argCursors:[{"Result": 3}, {"Input": 0}] - }, - { - packageId: coinConfig.oraclePackageId, - moduleName: 'vault', - functionName: 'get_pair_price_voucher_usd_from_mmt_vault', - typeArgs: [ - coinConfig.syCoinType, - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_A_TYPE, - MMT_TYPE_CONFIG[coinConfig.coinType].COIN_B_TYPE, - coinConfig.coinType, - MMT_TYPE_CONFIG[coinConfig.coinType].CONFIG_TYPE, - ], - argCursors:[{"Input": 7}, {"Input": 8}, {"Input": 0}, {"Input": 9}, {"Input": 10}, {"Input": 11}, {"Input": 6}] - }, - { - packageId: '0x0f286ad004ea93ea6ad3a953b5d4f3c7306378b0dcc354c3f4ebb1d506d3b47f', - moduleName: 'router', - functionName: 'get_pt_out_for_exact_sy_in_with_price_voucher', - typeArgs: [ - coinConfig.syCoinType - ], - argCursors:[ - {"Input": 12}, {"Input": 13}, {"Result": 6}, {"Input": 14}, {"Input": 15}, {"Input": 16}, {"Input": 6} - ] - } - ] - ); - // console.log('generateMutiMoveCallKind kind:', JSON.stringify(kind)); - return generateTxBytes(kind, 0); - } -} - -async function getOptimalSwapAmountForSingleSidedLiquidity(coinConfig) { - const vault = MMT_TYPE_CONFIG[coinConfig.coinType]; - const objects = await getObjects([ - vault.VAULT_ID, - vault.POOL_ID, - ]); - const versionList = objects.map((obj) => obj.data.owner.Shared.initial_shared_version) - // console.log('objects', JSON.stringify(objects), JSON.stringify(versionList)); - - const kind = generateKind( - [ - vault.VAULT_ID, - vault.POOL_ID, - 100000, - false, - 20 - ], - versionList, - [false, false], - VAULT_CONFIG.VAULT_PACKAGE_ID, - 'vault', - 'get_optimal_swap_amount_for_single_sided_liquidity', - [ - vault.COIN_A_TYPE, vault.COIN_B_TYPE, coinConfig.coinType, vault.CONFIG_TYPE - ], - ); - - // console.log('getOptimalSwapAmountForSingleSidedLiquidity kind', JSON.stringify(kind)); - return generateTxBytes(kind, 0); -} - -async function getConversionRate(coinConfig) { - const vault = MMT_TYPE_CONFIG[coinConfig.coinType]; - const objects = await getObjects([ - vault.VAULT_ID, - vault.POOL_ID, - ]); - const versionList = objects.map((obj) => obj.data.owner.Shared.initial_shared_version) - // console.log('objects', JSON.stringify(objects), JSON.stringify(versionList)); - - const kind = generateKind( - [ - vault.VAULT_ID, - vault.POOL_ID, - 1000, - false, - 20 - ], - versionList, - [false, false], - VAULT_CONFIG.VAULT_PACKAGE_ID, - 'vault', - 'get_optimal_swap_amount_for_single_sided_liquidity', - [ - vault.COIN_A_TYPE, vault.COIN_B_TYPE, coinConfig.coinType, vault.CONFIG_TYPE - ], - ); - - // console.log('getOptimalSwapAmountForSingleSidedLiquidity kind', JSON.stringify(kind)); - return generateTxBytes(kind, 0); -} - -function getScallopVersion(coinType) { - if (coinType === '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI') { - return [497420735, 500867762, 7765848, 7765848, 497420736, 497676326, 497676325, 497676327, 1]; - } else if (coinType === '0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC') { - return [497420735, 500867764, 7765848, 7765848, 497420736, 497676328, 497676325, 497676329, 1] - } else if (coinType === '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA') { - return [497420735, 500867770, 7765848, 7765848, 497420736, 498188354, 497676325, 498188355, 1] - } else if (coinType === '0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP') { - return [497420735, 500867768, 7765848, 7765848, 497420736, 498188356, 497676325, 498188357, 1] - } else if (coinType === '0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT') { - return [497420735, 500867766, 7765848, 7765848, 497420736, 498193057, 497676325, 498193058, 1] - } else if (coinType === '0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH') { - return [497420735, 500867772, 7765848, 7765848, 497420736, 498194214, 497676325, 498194215, 1] - } else if (coinType === '0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY') { - return [497420735, 506197597, 7765848, 7765848, 497420736, 506197598, 497676325, 506197599, 1] - } else if (coinType === '0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD') { - return [497420735, 506778303, 7765848, 7765848, 497420736, 506803339, 497676325, 506803340, 1] - } else if (coinType === '0x622345b3f80ea5947567760eec7b9639d0582adcfd6ab9fccb85437aeda7c0d0::scallop_wal::SCALLOP_WAL') { - return [497420735, 510640750, 7765848, 7765848, 497420736, 560611884, 497676325, 560611885, 1] - } - return [0, 0, 0, 0, 0] -} - -function getBlizzardVersion(coinType) { - if (coinType === '0xb1b0650a8862e30e3f604fd6c5838bc25464b8d3d827fbd58af7cb9685b832bf::wwal::WWAL') { - return [497420735, 528577114, 511181119, 317862159, 497420736, 528577115, 497676325, 528577116, 1]; - } else if (coinType === '0xd8b855d48fb4d8ffbb5c4a3ecac27b00f3712ce58626deb5a16a290e0c6edf84::nwal::NWAL') { - return [497420735, 537544775, 512202210, 317862159, 497420736, 538539517, 497676325, 538539518, 1] - } - return [0, 0, 0, 0, 0] -} - -function getSpringVersion(coinType) { - if (coinType === '0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI') { - return [497420735, 533135484, 409234967, 497420736, 560611887, 497676325, 560611888, 1]; - } else if (coinType === '0x922d15d7f55c13fd790f6e54397470ec592caa2b508df292a2e8553f3d3b274f::msui::MSUI') { - return [497420735, 537544773, 414622371, 497420736, 560625918, 497676325, 560625919, 1]; - } else if (coinType === '0x502867b177303bf1bf226245fcdd3403c177e78d175a55a56c0602c7ff51c7fa::trevin_sui::TREVIN_SUI') { - return [497420735, 537544769, 437950345, 497420736, 560625921, 497676325, 560625922, 1]; - } else if (coinType === '0x02358129a7d66f943786a10b518fdc79145f1fc8d23420d9948c4aeea190f603::fud_sui::FUD_SUI') { - return [497420735, 537544771, 423864488, 497420736, 560625914, 497676325, 560625915, 1]; - } else if (coinType === '0x41ff228bfd566f0c707173ee6413962a77e3929588d010250e4e76f0d1cc0ad4::ksui::KSUI') { - return [497420735, 537544767, 430422182, 497420736, 560625916, 497676325, 560625917, 1]; - } else if (coinType === '0x285b49635f4ed253967a2a4a5f0c5aea2cbd9dd0fc427b4086f3fad7ccef2c29::i_sui::I_SUI') { - return [497420735, 537544765, 496024418, 497420736, 560625919, 497676325, 560625920, 1]; - } - return [0, 0, 0, 0, 0, 0, 0] -} - -function generateTxBytes(kind, argsNum) { - argsNum = kind.ProgrammableTransaction.inputs.length; - - let bytes = [ - ProgrammableTransactionIndex, - kind.ProgrammableTransaction.inputs.length, - ]; - - for (let i = 0; i < argsNum; i++) { - if (kind.ProgrammableTransaction.inputs[i].Object) { - bytes = bytes.concat([ - ObjectIndex, - SharedObjectIndex, - ...hexToBytes(kind.ProgrammableTransaction.inputs[i].Object.SharedObject.objectId), - ...toU64(kind.ProgrammableTransaction.inputs[i].Object.SharedObject.initialSharedVersion), - kind.ProgrammableTransaction.inputs[i].Object.SharedObject.mutable ? 1 : 0, - ]); - } else { - if (kind.ProgrammableTransaction.inputs[i].Pure.u64 !== undefined) { - bytes = bytes.concat([ - PureIndex, - U64Index, - ...toU64(kind.ProgrammableTransaction.inputs[i].Pure.u64.value) - ]); - } else { - bytes = bytes.concat([ - PureIndex, - BoolIndex, - kind.ProgrammableTransaction.inputs[i].Pure.bool.value ? 1 : 0 - ]); - } - } - } - bytes = bytes.concat([kind.ProgrammableTransaction.commands.length]) - - for (let i = 0; i < kind.ProgrammableTransaction.commands.length; i++) { - const moduleArg = textToBytes(kind.ProgrammableTransaction.commands[i].MoveCall.module); - const functionArg = textToBytes(kind.ProgrammableTransaction.commands[i].MoveCall.function); - const typeArgs = kind.ProgrammableTransaction.commands[i].MoveCall.typeArguments.map(t => { - const parsed = parseSuiAddress(t); - return { - address: parsed.address, - module: parsed.module, - name: parsed.name, - typeParams: parsed.typeParams || [] - }; - }); - - bytes = bytes.concat([ - MoveCallIndex, - ...hexToBytes(kind.ProgrammableTransaction.commands[i].MoveCall.package), - moduleArg.length, - ...moduleArg, - functionArg.length, - ...functionArg, - ]); - - bytes = bytes.concat([ - typeArgs.length, - ]); - - for (const typeArg of typeArgs) { - const typeModule = textToBytes(typeArg.module); - const typeName = textToBytes(typeArg.name); - - bytes = bytes.concat([ - StructIndex, - ...hexToBytes(typeArg.address), - typeModule.length, - ...typeModule, - typeName.length, - ...typeName, - typeArg.typeParams.length, - ]); - } - - let argumentsLength = kind.ProgrammableTransaction.commands[i].MoveCall.arguments.length; - bytes = bytes.concat([argumentsLength]); - // console.log(`${JSON.stringify(kind.ProgrammableTransaction.commands[i].MoveCall)}`) - for (let j = 0; j < argumentsLength; j++) { - // console.log(`${JSON.stringify(kind.ProgrammableTransaction.commands[i].MoveCall.arguments[j])}`) - if (kind.ProgrammableTransaction.commands[i].MoveCall.arguments[j].Input !== undefined) { - // console.log(`${i}, ${j}, Input: ${kind.ProgrammableTransaction.commands[i].MoveCall.arguments[j].Input}`); - bytes = bytes.concat([ - InputIndex, - kind.ProgrammableTransaction.commands[i].MoveCall.arguments[j].Input, - 0 - ]); - } else { - // console.log(`${i}, ${j}, Result: ${kind.ProgrammableTransaction.commands[i].MoveCall.arguments[j].Result}`); - bytes = bytes.concat([ - ResultIndex, - kind.ProgrammableTransaction.commands[i].MoveCall.arguments[j].Result, - 0 - ]); - } - } - } - - // console.log('Generated bytes:', JSON.stringify(bytes)); - return Uint8Array.from(bytes); -} - -function generateKind(argArr, versionArr, mutableArr, packageId, moduleName, functionName, typeArgs, priceVoucherParam = null) { - let inputs = []; - let args = []; - let moveCall = [] - - let versionCursor = 0; - let mutableCursor = 0; - for (let i = 0; i < argArr.length; i++) { - let objectId = argArr[i]; - let version = versionArr[versionCursor]; - let mutable = mutableArr[mutableCursor]; - if (typeof objectId === 'string') { - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": objectId, - "initialSharedVersion": version, - "mutable": mutable - } - }, - } - ) - versionCursor++; - mutableCursor++; - } else if (typeof objectId === 'number') { - inputs.push({"Pure": {"u64": {"value": objectId,}},}) - } else if (typeof objectId === 'boolean') { - inputs.push({"Pure": {"bool": {"value": objectId,}},}) - } - args.push( - { - "Input": i - } - ) - } - moveCall.push( - { - "MoveCall": { - "package": packageId, - "module": moduleName, - "function": functionName, - "typeArguments": typeArgs, - "arguments": args, - } - } - ); - - if (priceVoucherParam != null) { - let length = argArr.length; - inputs.push({"Pure": {"u64": {"value": priceVoucherParam.syAmount,}},}) - inputs.push({"Pure": {"u64": {"value": priceVoucherParam.minPtAmount,}},}) - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": priceVoucherParam.objectId[0], - "initialSharedVersion": priceVoucherParam.version[0], - "mutable": true - } - }, - } - ) - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": priceVoucherParam.objectId[1], - "initialSharedVersion": priceVoucherParam.version[1], - "mutable": false - } - }, - } - ) - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": priceVoucherParam.objectId[2], - "initialSharedVersion": priceVoucherParam.version[2], - "mutable": true - } - }, - } - ) - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": priceVoucherParam.objectId[3], - "initialSharedVersion": priceVoucherParam.version[3], - "mutable": false - } - }, - } - ) - - moveCall.push( - { - "MoveCall": { - "package": "0x0f286ad004ea93ea6ad3a953b5d4f3c7306378b0dcc354c3f4ebb1d506d3b47f", - "module": "router", - "function": "get_pt_out_for_exact_sy_in_with_price_voucher", - "typeArguments": priceVoucherParam.typeArgs, - "arguments": [ - {"Input": length}, - {"Input": length + 1}, - {"Result": 0}, - {"Input": length + 2}, - {"Input": length + 3}, - {"Input": length + 4}, - {"Input": length + 5}, - ], - } - } - ); - } - - return { - "ProgrammableTransaction": { - "inputs": inputs, - "commands": moveCall - } - }; -} - -function generateMutiMoveCallKind(argArr, versionArr, mutableArr, moveCalls, priceVoucherParam = null) { - let inputs = []; - let moveCall = [] - let argLength = 0; - - let versionCursor = 0; - let mutableCursor = 0; - - for (let i = 0; i < argArr.length; i++) { - let objectId = argArr[i]; - let version = versionArr[versionCursor]; - let mutable = mutableArr[mutableCursor]; - if (typeof objectId === 'string') { - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": objectId, - "initialSharedVersion": version, - "mutable": mutable - } - }, - } - ) - versionCursor++; - mutableCursor++; - } else if (typeof objectId === 'number') { - inputs.push({"Pure": {"u64": {"value": objectId,}},}) - } else if (typeof objectId === 'boolean') { - inputs.push({"Pure": {"bool": {"value": objectId,}},}) - } - - } - - for (const moveCallElement of moveCalls) { - const {packageId, moduleName, functionName, typeArgs, argCursors} = moveCallElement; - argLength += argArr.length; - - moveCall.push( - { - "MoveCall": { - "package": packageId, - "module": moduleName, - "function": functionName, - "typeArguments": typeArgs, - "arguments": argCursors, - } - } - ); - } - - - if (priceVoucherParam != null) { - let length = argLength; - inputs.push({"Pure": {"u64": {"value": priceVoucherParam.syAmount,}},}) - inputs.push({"Pure": {"u64": {"value": priceVoucherParam.minPtAmount,}},}) - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": priceVoucherParam.objectId[0], - "initialSharedVersion": priceVoucherParam.version[0], - "mutable": true - } - }, - } - ) - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": priceVoucherParam.objectId[1], - "initialSharedVersion": priceVoucherParam.version[1], - "mutable": false - } - }, - } - ) - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": priceVoucherParam.objectId[2], - "initialSharedVersion": priceVoucherParam.version[2], - "mutable": true - } - }, - } - ) - inputs.push( - { - "Object": { - "SharedObject": { - "objectId": priceVoucherParam.objectId[3], - "initialSharedVersion": priceVoucherParam.version[3], - "mutable": false - } - }, - } - ) - - moveCall.push( - { - "MoveCall": { - "package": "0x0f286ad004ea93ea6ad3a953b5d4f3c7306378b0dcc354c3f4ebb1d506d3b47f", - "module": "router", - "function": "get_pt_out_for_exact_sy_in_with_price_voucher", - "typeArguments": priceVoucherParam.typeArgs, - "arguments": [ - {"Input": length}, - {"Input": length + 1}, - {"Result": 0}, - {"Input": length + 2}, - {"Input": length + 3}, - {"Input": length + 4}, - {"Input": length + 5}, - ], - } - } - ); - } - - return { - "ProgrammableTransaction": { - "inputs": inputs, - "commands": moveCall - } - }; -} - -module.exports = { - getExchangeRate, - getOptimalSwapAmountForSingleSidedLiquidity, - generateKind, - generateTxBytes -} \ No newline at end of file diff --git a/projects/nemo/tickMath.js b/projects/nemo/tickMath.js deleted file mode 100755 index c59442520ce..00000000000 --- a/projects/nemo/tickMath.js +++ /dev/null @@ -1,155 +0,0 @@ -const BN = require("bn.js"); - -function signedShiftRight(n0, shift_by, bit_width) { - const twoN0 = n0.toTwos(bit_width).shrn(shift_by) - twoN0.imaskn(bit_width - shift_by + 1) - return twoN0.fromTwos(bit_width - shift_by) -} - -function tickIndexToSqrtPricePositive(tick) { - let ratio - - if ((tick & 1) !== 0) { - ratio = new BN('79232123823359799118286999567') - } else { - ratio = new BN('79228162514264337593543950336') - } - - if ((tick & 2) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('79236085330515764027303304731')), 96, 256) - } - if ((tick & 4) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('79244008939048815603706035061')), 96, 256) - } - if ((tick & 8) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('79259858533276714757314932305')), 96, 256) - } - if ((tick & 16) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('79291567232598584799939703904')), 96, 256) - } - if ((tick & 32) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('79355022692464371645785046466')), 96, 256) - } - if ((tick & 64) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('79482085999252804386437311141')), 96, 256) - } - if ((tick & 128) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('79736823300114093921829183326')), 96, 256) - } - if ((tick & 256) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('80248749790819932309965073892')), 96, 256) - } - if ((tick & 512) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('81282483887344747381513967011')), 96, 256) - } - if ((tick & 1024) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('83390072131320151908154831281')), 96, 256) - } - if ((tick & 2048) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('87770609709833776024991924138')), 96, 256) - } - if ((tick & 4096) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('97234110755111693312479820773')), 96, 256) - } - if ((tick & 8192) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('119332217159966728226237229890')), 96, 256) - } - if ((tick & 16384) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('179736315981702064433883588727')), 96, 256) - } - if ((tick & 32768) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('407748233172238350107850275304')), 96, 256) - } - if ((tick & 65536) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('2098478828474011932436660412517')), 96, 256) - } - if ((tick & 131072) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('55581415166113811149459800483533')), 96, 256) - } - if ((tick & 262144) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('38992368544603139932233054999993551')), 96, 256) - } - - return signedShiftRight(ratio, 32, 256) -} - -function tickIndexToSqrtPriceNegative(tick_index) { - const tick = Math.abs(tick_index) - let ratio - - if ((tick & 1) !== 0) { - ratio = new BN('18445821805675392311') - } else { - ratio = new BN('18446744073709551616') - } - - if ((tick & 2) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('18444899583751176498')), 64, 256) - } - if ((tick & 4) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('18443055278223354162')), 64, 256) - } - if ((tick & 8) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('18439367220385604838')), 64, 256) - } - if ((tick & 16) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('18431993317065449817')), 64, 256) - } - if ((tick & 32) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('18417254355718160513')), 64, 256) - } - if ((tick & 64) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('18387811781193591352')), 64, 256) - } - if ((tick & 128) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('18329067761203520168')), 64, 256) - } - if ((tick & 256) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('18212142134806087854')), 64, 256) - } - if ((tick & 512) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('17980523815641551639')), 64, 256) - } - if ((tick & 1024) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('17526086738831147013')), 64, 256) - } - if ((tick & 2048) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('16651378430235024244')), 64, 256) - } - if ((tick & 4096) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('15030750278693429944')), 64, 256) - } - if ((tick & 8192) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('12247334978882834399')), 64, 256) - } - if ((tick & 16384) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('8131365268884726200')), 64, 256) - } - if ((tick & 32768) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('3584323654723342297')), 64, 256) - } - if ((tick & 65536) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('696457651847595233')), 64, 256) - } - if ((tick & 131072) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('26294789957452057')), 64, 256) - } - if ((tick & 262144) !== 0) { - ratio = signedShiftRight(ratio.mul(new BN('37481735321082')), 64, 256) - } - - return ratio -} - -class TickMath { - static tickIndexToSqrtPriceX64(tick_index) { - if (tick_index > 0) { - return new BN(tickIndexToSqrtPricePositive(tick_index)) - } - return new BN(tickIndexToSqrtPriceNegative(tick_index)) - } -} - -module.exports = { - TickMath, -}; \ No newline at end of file diff --git a/projects/nemo/util.js b/projects/nemo/util.js deleted file mode 100644 index b9a2ed7134f..00000000000 --- a/projects/nemo/util.js +++ /dev/null @@ -1,95 +0,0 @@ -const {sliceIntoChunks} = require("../helper/utils"); -const http = require("../helper/http"); -const {endpoint, call} = require("../helper/chain/sui"); -const BN = require("bn.js"); -const {MathUtil} = require("./math"); -const {TickMath} = require("./tickMath"); -const BigNumber = require("bignumber.js"); -const sui = require("../helper/chain/sui"); - -async function getObjects(objectIds) { - if (objectIds.length > 9) { - const chunks = sliceIntoChunks(objectIds, 9) - const res = [] - for (const chunk of chunks) res.push(...(await getObjects(chunk))) - return res - } - - const result = await call('sui_multiGetObjects', [objectIds, { - "showOwner": true, - }], { withMetadata: true }) - return objectIds.map(i => result.find(j => j.data?.objectId === i)) -} - -function getCoinAmountFromLiquidity( - liquidity, - cur_sqrt_price, - lower_sqrt_price, - upper_sqrt_price, -) { - const liq = new BN(liquidity.toString()) - const cur_sqrt_price_str = new BN(cur_sqrt_price.toString()) - const lower_price_str = new BN(lower_sqrt_price.toString()) - const upper_price_str = new BN(upper_sqrt_price.toString()) - let coin_a - let coin_b - if (cur_sqrt_price_str.lt(lower_price_str)) { - coin_a = MathUtil.toX64BN(liq).mul(upper_price_str.sub(lower_price_str)).div(lower_price_str.mul(upper_price_str)) - coin_b = new BN(0) - } else if (cur_sqrt_price_str.lt(upper_price_str)) { - coin_a = MathUtil.toX64BN(liq).mul(upper_price_str.sub(cur_sqrt_price_str)).div(cur_sqrt_price_str.mul(upper_price_str)) - - coin_b = MathUtil.fromX64BN(liq.mul(cur_sqrt_price_str.sub(lower_price_str))) - } else { - coin_a = new BN(0) - coin_b = MathUtil.fromX64BN(liq.mul(upper_price_str.sub(lower_price_str))) - } - return { - coin_amount_a: coin_a.toString(), - coin_amount_b: coin_b.toString(), - } -} - -function asIntN(int, bits = 32) { - return Number(BigInt.asIntN(bits, BigInt(int))) -} - -async function getVaultTvlByAmountB(vault) { - const clmmPoolId = vault.fields.clmm_pool_id; - - const pool = await sui.getObject(clmmPoolId); - const position = await sui.getDynamicFieldObject( - vault.fields.id.id, [112,111,115,105,116,105,111,110], {idType: "vector"}); - - - const sqrtPrice = pool.fields.sqrt_price; - const liquidity = position.fields.value.fields.liquidity; - const lowerBits = position.fields.value.fields.tick_lower_index.fields.bits; - const upperBits = position.fields.value.fields.tick_upper_index.fields.bits; - const decimalsA = vault.fields.decimals_a; - const decimalsB = vault.fields.decimals_b; - - const amount = getCoinAmountFromLiquidity( - liquidity, - sqrtPrice, - TickMath.tickIndexToSqrtPriceX64(asIntN(BigInt(lowerBits))), - TickMath.tickIndexToSqrtPriceX64(asIntN(BigInt(upperBits))) - ); - - return BigNumber(amount.coin_amount_a).times( - MathUtil.getPriceFromSqrtPrice(sqrtPrice, decimalsA, decimalsB) - ).plus(amount.coin_amount_b).toFixed(0) -} - -async function getDynamicFieldObject(parent, id, { idType = '0x2::object::ID' } = {}) { - return (await call('suix_getDynamicFieldObject', [parent, { - "type": idType, - "value": id - }])) -} - -module.exports = { - getObjects, - getVaultTvlByAmountB, - getDynamicFieldObject -} \ No newline at end of file diff --git a/projects/nemoswap/api.js b/projects/nemoswap/api.js deleted file mode 100644 index 8b37491d98c..00000000000 --- a/projects/nemoswap/api.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("nemoswap", ['renec']), -} \ No newline at end of file diff --git a/projects/nemoswap/index.js b/projects/nemoswap/index.js deleted file mode 100644 index e33952c0b09..00000000000 --- a/projects/nemoswap/index.js +++ /dev/null @@ -1,34 +0,0 @@ -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/neoburger/index.js b/projects/neoburger/index.js deleted file mode 100644 index 1a8d1df86da..00000000000 --- a/projects/neoburger/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { post } = require("../helper/http") - -async function tvl() { - const neoLocked = await post("https://n3seed1.ngd.network:10332", - { "params": ["0x48c40d4666f93408be1bef038b6722404d9a4c2a", "totalSupply", []], "method": "invokefunction", "jsonrpc": "2.0", "id": 1 } - ) - return { - "neo": neoLocked['result']['stack'][0]['value'] / 1e8 - } -} - -module.exports={ - neo:{ - tvl - } -} \ No newline at end of file diff --git a/projects/neopin-liquid-staking/index.js b/projects/neopin-liquid-staking/index.js deleted file mode 100644 index 35c77863a27..00000000000 --- a/projects/neopin-liquid-staking/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const npEthContract = '0x841d3B6660663Ed4B0D9b9EDAEe6642e05A4E182'; -const npKlayContract = '0xb0BB95ac3195A266Ab924596Ba32c2a10e245a95'; - -async function getEthTvl(api) { - api.addGasToken(await api.call({ target: npEthContract, abi: 'uint256:getTotalPooledEth' })) -} - -async function getKlayTvl(api) { - api.addGasToken(await api.call({ target: npKlayContract, abi: 'uint256:getTotalPooledKlay' })) -} - -module.exports = { - methodology: 'Staked are counted as TVL based on the chain that they are staked on and where the liquidity tokens are issued, npETH and npKLAY are counted as Ethereum TVL and Klaytn TVL since ETH and KLAY are staked in each mainnet and the liquidity tokens are also issued on each mainnet network.', - ethereum: { tvl: getEthTvl }, - klaytn: { tvl: getKlayTvl }, -} diff --git a/projects/neopin-staking/index.js b/projects/neopin-staking/index.js deleted file mode 100644 index a2f9b78e1d3..00000000000 --- a/projects/neopin-staking/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { getStakedTron } = require("../helper/chain/tron"); -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/sumTokens"); -const { nullAddress } = require("../helper/unwrapLPs"); - -module.exports = { - klaytn: { - tvl: sumTokensExport({ - owners: [ - "0xf9d92BAd7b1410dfFB0a204B7aa418C9fd5A898F", - "0xf20816C9bdcb25da3ba79b206e9b7107ae02ae10", - "0x489d6d679F1CA4cFE6976C55B54427D1AaDb8057", - "0x184E039D35cce96511E32c1aF85907664fb0e646" - ], - tokens: [nullAddress], - }), - staking: staking( - "0x306ee01a6ba3b4a8e993fa2c1adc7ea24462000c", - ADDRESSES.klaytn.NPT, - "klaytn", - ), - }, - tron: { - tvl: async () => { - return { - tron: await getStakedTron("TTjacDH5PL8hpWirqU7HQQNZDyF723PuCg"), - }; - }, - }, - timetravel: false, -}; diff --git a/projects/neopin/index.js b/projects/neopin/index.js deleted file mode 100644 index f9784d76cb6..00000000000 --- a/projects/neopin/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const { mergeExports } = require('../helper/utils') - - -module.exports = mergeExports([ - uniTvlExport('klaytn', '0x1a1F14ec33BF8c2e66731f46D0A706e8025b43e9'), - uniTvlExport('polygon', '0x1289ae78422b94414c1F827C534a1fE8E31E71Aa'), - uniTvlExport('ethereum', '0x2D723f60ad8da76286B2aC120498A5EA6bAbC792'), -]) \ No newline at end of file diff --git a/projects/neotokyo/index.js b/projects/neotokyo/index.js deleted file mode 100644 index e6257b8212d..00000000000 --- a/projects/neotokyo/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking( - "0x67e1eCFA9232E27EAf3133B968A33A9a0dCa9e16", - "0xa19f5264F7D7Be11c451C093D8f92592820Bea86" - ), - }, -}; diff --git a/projects/neptune-finance/index.js b/projects/neptune-finance/index.js deleted file mode 100644 index 2e11efcb281..00000000000 --- a/projects/neptune-finance/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { queryContract, getToken, sumTokens, getBalance } = require('../helper/chain/cosmos') - -const MARKET_ADDR = 'inj1nc7gjkf2mhp34a6gquhurg8qahnw5kxs5u3s4u'; - -const CW20_ADDRS = [ - ['inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc', 'factory:inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk:inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc'] -]; - -async function sumCW20Tokens({ - balances = {}, - tokens, - owner, - chain -} = {}) { - // Loop through each token in the tokens array - await Promise.all( - tokens.map(async (token) => { - // Fetch the balance for the token and owner - const balance = await getBalance({ token: token[0], owner, chain }); - // Add the balance to the balances object - if (!isNaN(balance) && typeof balance === 'number' && isFinite(balance)) { - balances[`injective:${token[1].toString()}`] = balance.toString(); // Convert balance to string and append to 2nd token in array - } - }) - ); - return balances; -} - -async function tvl(api) { - let balances = {}; - - // Sum the balances of all tokens excluding CW20 - await sumTokens({ - balances, - chain: api.chain, - owner: MARKET_ADDR - }); - - // Sum the balances of CW20 tokens - await sumCW20Tokens({ - balances, - chain: api.chain, - tokens: CW20_ADDRS, - owner: MARKET_ADDR - }); - - return balances -} - -async function borrowed(api) { - // query market-state - const { markets, } = await queryContract({ - chain: api.chain, - contract: MARKET_ADDR, - data: { - get_state: {} - } - }) - - // get all borrowed - markets.map(market => { - let denom = getToken(market[0]) - api.add(denom, market[1].debt_pool.balance) - }) -} - -module.exports = { - methodology: 'Counts the total collateral and non-borrowed lent assets managed by Neptune on Injective', - injective: { - tvl, borrowed - } -}; \ No newline at end of file diff --git a/projects/neptune-lsd/index.js b/projects/neptune-lsd/index.js deleted file mode 100644 index aeac7979a97..00000000000 --- a/projects/neptune-lsd/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const STOAS_ADDRESS = '0x804c0AB078E4810eDBeC24a4ffB35ceb3e5BD61b'; -const ABI = { - totalOAS: 'function totalOAS() view returns (uint256)' -} - -async function tvl(api) { - const totalOAS = await api.call({ - target: STOAS_ADDRESS, - abi: ABI.totalOAS, - }); - - return { - "coingecko:oasys": totalOAS / 1e18 - } -} - -module.exports = { - oas: { tvl }, -}; diff --git a/projects/neptune-mutual/index.js b/projects/neptune-mutual/index.js deleted file mode 100644 index 41dbb0d8539..00000000000 --- a/projects/neptune-mutual/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const abi = { - sc: "address:sc", -} - -const vaultFactories = { - ethereum: "0x0150b57aa8cc6fcbc110f07eef0c85731d8aacf4", - arbitrum: "0x0150b57aa8cc6fcbc110f07eef0c85731d8aacf4", - bsc: "0x0150b57aa8cc6fcbc110f07eef0c85731d8aacf4", -}; - -const fromBlocks = { - ethereum: 15912005, - arbitrum: 54210090, - bsc: 29123165, -}; - -async function tvl(api) { - const { chain } = api - const logs = await getLogs({ - api, - target: vaultFactories[chain], // vault factory - topic: "VaultDeployed(address,bytes32,string,string)", - fromBlock: fromBlocks[chain], - eventAbi: 'event VaultDeployed (address vault, bytes32 coverKey, string name, string symbol)', - }); - - const vaults = logs.map((log) => log.args.vault) - const tokens = await api.multiCall({ - abi: abi.sc, - calls: vaults, - }) - const toa = tokens.map((token, i) => ([token, vaults[i]])) - - return sumTokens2({ api, tokensAndOwners: toa, chain }) -} - -module.exports = { - methodology: "TVL consists of the total liquidity available in the cover pools", - start: '2022-11-01', // Nov 01 2022 @ 12:00am (UTC) - ethereum: { tvl }, - arbitrum: { tvl }, - bsc: { tvl }, -}; diff --git a/projects/neptune-protocol/index.js b/projects/neptune-protocol/index.js deleted file mode 100644 index e89c948f25f..00000000000 --- a/projects/neptune-protocol/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { Program } = require("@coral-xyz/anchor"); -const { getProvider, sumTokens2 } = require("../helper/solana"); -const { sumTokens2: sumTokensEVM } = require("../helper/unwrapLPs"); - -const programId = '82WgTNpTgAV383UB4FemgviZQSaEQ4YuipRy1QHVMWgt' - - -async function tvl(api) { - const provider = getProvider("eclipse") - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, provider) - - // Get all vaults and PSM accounts - const psmAccounts = await program.account.psmAccount.all() - - const tokensAndOwners = psmAccounts.map(i => [ - i.account.collateralMint.toString(), - i.publicKey.toString() - ]) - - // Get all vault types to map collateral mints - const vaultTypes = await program.account.vaultType.all() - vaultTypes.forEach(({ account }) => { - let token = account.collateralMint.toString() - let balance = +account.collateralHeld - api.add(token, balance) - }) - - await sumTokens2({ api, tokensAndOwners }) - return sumTokensEVM({ api }) -} - -async function staking(api) { - const provider = getProvider("eclipse") - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, provider) - const stakingPools = await program.account.stakingPool.all() - stakingPools.forEach(({ account, }) => { - api.add(account.stakedTokenMint.toString(), account.deposits) - }) - - return sumTokensEVM({ api }) -} -module.exports = { - timetravel: false, - eclipse: { - tvl, - staking, - }, - methodology: - "TVL is equal to the Collateral Value + assets in PSM. Staking adds Amount of NPT staked * NPT price" -}; \ No newline at end of file diff --git a/projects/neptune/index.js b/projects/neptune/index.js deleted file mode 100644 index f9e39114868..00000000000 --- a/projects/neptune/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') -const config = { - swellchain: { - factory: '0xD78a40cA54090f4178c9c9212c78e9E0C2722231', - }, -} - -Object.keys(config).forEach(chain => { - const { factory, } = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ - factory, useDefaultCoreAssets: true, fetchBalances: true, abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: "function allPools(uint) view returns (address)", - } - }) - } -}) - -module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/neptunex/index.js b/projects/neptunex/index.js deleted file mode 100644 index 76fc382d2cc..00000000000 --- a/projects/neptunex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -const factory = "0x922FeCbE8dbFDfe85FfF4734046347B8E2ee7c82" - -module.exports = { - misrepresentedTokens: true, - blast: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }) - }, -} diff --git a/projects/nereus/index.js b/projects/nereus/index.js deleted file mode 100644 index de31c526bf2..00000000000 --- a/projects/nereus/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const tokenAndContract = [ - [ADDRESSES.avax.WAVAX, "0x6d9336ce867606Dcb1aeC02C8Ef0EDF0FF22d247"], // nWAVAX - [ADDRESSES.avax.WETH_e, "0x92F79834fC52f0Aa328f991C91185e081ea4f957"], // nWETH - [ADDRESSES.avax.WBTC_e, "0x3D8231cE419886a5D400dD5a168C8917aEeAB25C"], // nWBTC - [ADDRESSES.avax.DAI, "0x6Ce0e6e81Dc7A5D997E6169cD5f8C982DA83e49e"], // nDAI - [ADDRESSES.avax.USDT_e, "0x29F511e6f62118b27D9B47d1AcD6fDd5cD0B4C64"], // nUSDT - [ADDRESSES.avax.USDC_e, "0x723191E7F8D87eC22E682c13Df504E5E3432e53E"] // nUSDC -] - -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - block = chainBlocks.avax; - const chain = "avax"; - - const collateralBalances = (await sdk.api.abi.multiCall({ - calls: tokenAndContract.map(p => ({ - target: p[0], - params: p[1] - })), - abi: "erc20:balanceOf", - block, - chain - })).output; - - collateralBalances.forEach(p => { - sdk.util.sumSingleBalance(balances, `avax:${p.input.target}`, p.output); - }) - - return balances; -} - -module.exports = { - avax:{ - tvl - } -} \ No newline at end of file diff --git a/projects/nerite/index.js b/projects/nerite/index.js deleted file mode 100644 index 5a316586548..00000000000 --- a/projects/nerite/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getLiquityV2Tvl } = require('../helper/liquity') - -const config = { - arbitrum: '0x7f7fbc2711c0d6e8ef757dbb82038032dd168e68' -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getLiquityV2Tvl(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/nerve/index.js b/projects/nerve/index.js deleted file mode 100644 index 1c1d957045f..00000000000 --- a/projects/nerve/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const xnrvAddress = '0x15B9462d4Eb94222a7506Bc7A25FB27a2359291e' -const nrv = "0x42F6f551ae042cBe50C739158b4f0CAC0Edb9096" - -const tokens = { - busd: ADDRESSES.bsc.BUSD, - usdt: ADDRESSES.bsc.USDT, - usdc: ADDRESSES.bsc.USDC, -} - -const ownerTokens = [ - [ - [tokens.busd, tokens.usdt, tokens.usdc,], '0x1b3771a66ee31180906972580ade9b81afc5fcdc' - ], - [ ['0x54261774905f3e6e9718f2abb10ed6555cae308a', ADDRESSES.bsc.BTCB], '0x6C341938bB75dDe823FAAfe7f446925c66E6270c' ], - [ [ADDRESSES.bsc.ETH, '0x6f817a0ce8f7640add3bc0c1c2298635043c2423'], '0x146CD24dCc9f4EB224DFd010c5Bf2b0D25aFA9C0' ], - [ ['0x07663837218a003e66310a01596af4bf4e44623d'], '0x0eafaa7ed9866c1f08ac21dd0ef3395e910f7114' ], - [ [ADDRESSES.fantom.fUSDT], '0xd0fBF0A224563D5fFc8A57e4fdA6Ae080EbCf3D3' ], - [ ['0x23396cf899ca06c4472205fc903bdb4de249d6fc'], '0x2dcCe1586b1664f41C72206900e404Ec3cA130e0' ], -] - -module.exports = { - misrepresentedTokens: true, - start: '2021-03-01', // March 1, 2021 00:00 AM (UTC) - bsc:{ - tvl: sumTokensExport({ ownerTokens }), - staking:staking(xnrvAddress, nrv) - } -} diff --git a/projects/nervenetwork.js b/projects/nervenetwork.js deleted file mode 100644 index 88e3033dc43..00000000000 --- a/projects/nervenetwork.js +++ /dev/null @@ -1,13 +0,0 @@ -const axios = require('axios') - -const url = "https://public.nerve.network/nerve/tvl" - -const tvl = async (api) => { - const { data } = await axios(url) - api.addUSDValue(Math.round(data.totalUsdTvl)) -} - -module.exports = { - misrepresentedTokens: true, - nuls: { tvl } -} \ No newline at end of file diff --git a/projects/nervenetworkbridge/index.js b/projects/nervenetworkbridge/index.js deleted file mode 100644 index 3a8e42d6f69..00000000000 --- a/projects/nervenetworkbridge/index.js +++ /dev/null @@ -1,107 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const sdk = require("@defillama/sdk"); -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); - -const tronBridgeContract = 'TXeFBRKUW2x8ZYKPD13RuZDTd9qHbaPGEN'; -const EXCLUDED_TRX_ADDRESS = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' - -const getBridgeContract = { - 'ethereum': { address : '0xC707E0854DA2d72c90A7453F8dc224Dd937d7E82' }, - 'bsc': { address :'0x75Ab1d50BEDBd32b6113941fcF5359787a4bBEf4' }, - // 'heco': { address :'0x2ead2e7a3bd88c6a90b3d464bc6938ba56f1407f' }, - 'okexchain': { address :'0xE096d12D6cb61e11BCE3755f938b9259B386523a' }, - 'harmony': { address :'0x32Fae32961474e6D19b7a6346524B8a6a6fd1D9c' }, - 'polygon': { address :'0x9DDc2fB726cF243305349587AE2a33dd7c91460e' }, - 'kcc': { address :'0xdb442dff8ff9fd10245406da9a32528c30c10c92' }, - 'cronos': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'avax': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'arbitrum': { address :'0xf0E406c49C63AbF358030A299C0E00118C4C6BA5' }, - 'fantom': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'metis': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'iotex': { address :'0xf0e406c49c63abf358030a299c0e00118c4c6ba5' }, - 'optimism': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'klaytn': { address :'0x3758aa66cad9f2606f1f501c9cb31b94b713a6d5' }, - 'smartbch': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', blackListedTokens: ['0x71df12b5a718e0110991bb641cb379077d9e8ef7'] }, - 'enuls': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'kava': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'ethpow': { address :'0x67b3757f20DBFa114b593dfdAc2b3097Aa42133E' }, - 'rei': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'era': { address :'0x54C4A99Ee277eFF14b378405b6600405790d5045' }, - 'eos_evm': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'polygon_zkevm': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'linea': { address :'0x8CD6e29d3686d24d3C2018CEe54621eA0f89313B' }, - 'celo': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'ethereumclassic': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'base': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'bitgert': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'scroll': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'manta': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'zeta': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'mode': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'blast': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'merlin': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'xlayer': { address :'0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' }, - 'pulse': { address :'0x0035cCA7Ff94156AEFcdd109bFD0C25083c1d89b' } -} - -const nulsConfig = { - ethereum: '0xa2791BdF2D5055Cda4d46EC17f9F429568275047', - bsc: '0x8CD6e29d3686d24d3C2018CEe54621eA0f89313B', - okexchain: '0x8cd6e29d3686d24d3c2018cee54621ea0f89313b', -} - -const CHAIN_ALIASES = { era: 'zksync' } -const resolveChain = (chain) => CHAIN_ALIASES[chain] ?? chain; - -let tokensConfTest; -async function getTokensConf() { - return tokensConfTest ??= getConfig( - 'nerve-network-bridge', - 'https://assets.nabox.io/api/tvltokens', - ) -} - -async function tvl (api) { - const conf = await getTokensConf() - - const chainKey = resolveChain(api.chain) - const tokensByLabel = conf[chainKey] ?? {} - const tokens = Object.values(tokensByLabel) - const { address, blackListedTokens = [] } = getBridgeContract[api.chain] - return sumTokens2({ api, tokens, owners: [address], blackListedTokens }) -} - -async function tronTvl (api) { - const conf = await getTokensConf() - - const tronTokensByLabel = conf.tron ?? {} - const tokens = Object.values(tronTokensByLabel).filter(a => a !== EXCLUDED_TRX_ADDRESS) - return sumTokens2({ api, owner: tronBridgeContract, tokens: [nullAddress, ...tokens] }) -} - -async function getSupply (chain) { - const chainApi = new sdk.ChainApi({ chain }) - return chainApi.call({ target: nulsConfig[chain], abi: 'erc20:totalSupply' }) -} - -async function nulsTvl () { - const url = 'https://public.nerve.network/asset/nuls' - const nulsOnNerve = (await get(url)).total - const supplies = (await Promise.all(Object.keys(nulsConfig).map(getSupply))).reduce((acc, val) => acc + Number(val), 0) - return { nuls: (nulsOnNerve+supplies) / 10 ** 8 } -} - -module.exports = { - methodology: "Assets staked in the pool and trading contracts", - doublecounted: true, - nuls: { tvl : nulsTvl }, - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.nerveNetworkBridge }) }, - tron: { tvl: tronTvl }, -} - -Object.keys(getBridgeContract).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/nerveswap/index.js b/projects/nerveswap/index.js deleted file mode 100644 index dc875310b80..00000000000 --- a/projects/nerveswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const utils = require('../helper/utils'); - -const url = 'https://api.swap.nerve.network/swap/total/info' - -const tvl = async (api) => { - const { data } = await utils.fetchURL(url) - return api.addUSDValue(Math.round(data.data.tvl / 10 ** 18)) -} - -module.exports = { - misrepresentedTokens: true, - methodology: "A NerveDeFi platform that integrates consensus, swap, cross-chain swap,liquidity, farm and cross-chain bridge.", - nuls: { tvl }, -} diff --git a/projects/nest-staking/index.js b/projects/nest-staking/index.js deleted file mode 100644 index 73019053ace..00000000000 --- a/projects/nest-staking/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const {getConfig} = require("../helper/cache"); - -async function tvl_ethereum_predeposit(api) { - const RESERVE_STAKING = "0xBa0Ae7069f94643853Fce3B8Af7f55AcBC11e397"; - const SBTC = "0x094c0e36210634c3CfA25DC11B96b562E0b07624"; - const STONE = "0x7122985656e38BDC0302Db86685bb972b145bD3C"; - - await api.sumTokens({ owner: RESERVE_STAKING, tokens: [SBTC, STONE] }); -} - -async function tvl_ethereum(api) { - await tvl_ethereum_predeposit(api); - - const vaults = await getConfig('nest-vaults', "https://app.nest.credit/api/vaults?includeHidden=true"); - const ethereumVaults = (vaults?.map(vault => vault.ethereum?.contractAddress) ?? []).filter(Boolean); - const details = await api.multiCall({ abi: 'erc20:totalSupply', calls: ethereumVaults }) - api.add(ethereumVaults, details) -} - -async function tvl_plume(api) { - const vaults = await getConfig('nest-vaults', "https://app.nest.credit/api/vaults?includeHidden=true"); - const plumeVaults = (vaults?.map(vault => vault.plume?.contractAddress) ?? []).filter(Boolean); - const details = await api.multiCall({ abi: 'erc20:totalSupply', calls: plumeVaults }) - api.add(plumeVaults, details) -} - -async function tvl_plasma(api) { - const vaults = await getConfig('nest-vaults', "https://app.nest.credit/api/vaults?includeHidden=true"); - const plasmaVaults = (vaults?.map(vault => vault.plasma?.contractAddress) ?? []).filter(Boolean); - const details = await api.multiCall({ abi: 'erc20:totalSupply', calls: plasmaVaults }) - api.add(plasmaVaults, details) -} - -module.exports = { - methodology: "TVL is calculated from the value of Nest tokens, which represent user shares in vaults backed by yield-generating assets.", - ethereum: { tvl: tvl_ethereum }, - plume_mainnet: { tvl: tvl_plume }, - plasma: { tvl: tvl_plasma }, -} diff --git a/projects/nest/contracts.json b/projects/nest/contracts.json deleted file mode 100644 index a4934e9b042..00000000000 --- a/projects/nest/contracts.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "stakingContracts": { - "ethereum": [ - "0xaA7A74a46EFE0C58FBfDf5c43Da30216a8aa84eC", - "0x505eFcC134552e34ec67633D1254704B09584227", - "0x9a5C88aC0F209F284E35b4306710fEf83b8f9723", - "0x34B931C7e5Dc45dDc9098A1f588A0EA0dA45025D", - "0xE544cF993C7d477C7ef8E91D28aCA250D135aa03" - ], - "bsc": [ - "0x09CE0e021195BA2c1CDE62A8B187abf810951540" - ], - "polygon": [ - "0x09CE0e021195BA2c1CDE62A8B187abf810951540" - ], - "kcc": [ - "0x7DBe94A4D6530F411A1E7337c7eb84185c4396e6" - ] - }, - "tvlContracts": { - "ethereum": [ - "0xE544cF993C7d477C7ef8E91D28aCA250D135aa03" - - ], - "bsc": [ - "0x9484f12044b9d5707AfeaC5BD02b5E0214381801" - ] - }, - "NEST": { - "ethereum": "0x04abeda201850ac0124161f037efd70c74ddc74c", - "bsc": "0x98f8669F6481EbB341B522fCD3663f79A3d1A6A7", - "polygon": "0x98f8669F6481EbB341B522fCD3663f79A3d1A6A7", - "kcc": "0x98f8669F6481EbB341B522fCD3663f79A3d1A6A7" - }, - "tokens": { - "ethereum": [ - "0x0316EB71485b0Ab14103307bf65a021042c6d380" - ], - "bsc": [ - "0x55d398326f99059fF775485246999027B3197955" - ] - } -} \ No newline at end of file diff --git a/projects/nest/index.js b/projects/nest/index.js deleted file mode 100644 index 0d0d815c4fb..00000000000 --- a/projects/nest/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: "Counts NEST tokens that have been staked in the nest dapp", -}; - - -const config = { - ethereum: { - tvlContracts: ['0xE544cF993C7d477C7ef8E91D28aCA250D135aa03'], - tokens: [ - "0x0316EB71485b0Ab14103307bf65a021042c6d380" - ], - NEST: '0x04abEdA201850aC0124161F037Efd70c74ddC74C', - stakingContracts: [ - "0xaA7A74a46EFE0C58FBfDf5c43Da30216a8aa84eC", - "0x505eFcC134552e34ec67633D1254704B09584227", - "0x9a5C88aC0F209F284E35b4306710fEf83b8f9723", - "0x34B931C7e5Dc45dDc9098A1f588A0EA0dA45025D", - "0xE544cF993C7d477C7ef8E91D28aCA250D135aa03" - ] - }, - bsc: { - tvlContracts: ['0x9484f12044b9d5707AfeaC5BD02b5E0214381801'], - tokens: [ - ADDRESSES.bsc.USDT - ], - NEST: '0x98f8669F6481EbB341B522fCD3663f79A3d1A6A7', - stakingContracts: ["0x09CE0e021195BA2c1CDE62A8B187abf810951540"] - }, - polygon: { - NEST: '0x98f8669F6481EbB341B522fCD3663f79A3d1A6A7', - stakingContracts: ["0x09CE0e021195BA2c1CDE62A8B187abf810951540"] - }, - kcc: { - NEST: '0x98f8669F6481EbB341B522fCD3663f79A3d1A6A7', - stakingContracts: ["0x7DBe94A4D6530F411A1E7337c7eb84185c4396e6"] - }, -} - -Object.keys(config).forEach(chain => { - const { NEST: token, stakingContracts = [], tokens = [], tvlContracts = [] } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ tokens, owners: tvlContracts }), - staking: token ? sumTokensExport({ token, owners: stakingContracts }) : undefined, - } -}) \ No newline at end of file diff --git a/projects/nested/abi.json b/projects/nested/abi.json deleted file mode 100644 index f708a7c7a15..00000000000 --- a/projects/nested/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "nestedRecords_getAssetTokens": "function getAssetTokens(uint256 _nftId) view returns (address[])" -} \ No newline at end of file diff --git a/projects/nested/index.js b/projects/nested/index.js deleted file mode 100644 index d380fd8ddee..00000000000 --- a/projects/nested/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { getConfig } = require('../helper/cache') - -let data - -async function getData() { - if (!data) data = _internal() - return data - async function _internal() { - return getConfig('nested', tokens_url) - } -} - -const tokens_url = 'https://api.nested.finance/tvl-tokens' -const nested = { - 'polygon': { - 'prefix': 'poly', - 'nestReserve_contract': '0x150fb0Cfa5bF3D4023bA198C725b6DCBc1577f21' - }, - 'bsc': { - 'prefix': 'bsc', - 'nestReserve_contract': '0x150fb0Cfa5bF3D4023bA198C725b6DCBc1577f21' - }, - 'avax': { - 'prefix': 'avax', - 'nestReserve_contract': '0x150fb0Cfa5bF3D4023bA198C725b6DCBc1577f21' - }, - 'ethereum': { - 'prefix': 'eth', - 'nestReserve_contract': '0x0535f1f43ee274123291bbab284948caed46c65d' - }, - 'optimism': { - 'prefix': 'opti', - 'nestReserve_contract': '0x150fb0Cfa5bF3D4023bA198C725b6DCBc1577f21' - }, - 'arbitrum': { - 'prefix': 'arbi', - 'nestReserve_contract': '0x31A2a9E625C111d98d74241C046C1117cc1D94b0' - }, -} -// const nestRecords_contract = '0x3Ee96E771D5E56b34245b023E8B31ffDf36dFafd' -// const graphUrl = 'https://api.nested.finance/graphql' - -function chainTvl_onchain(chain) { - return async (api) => { - const tokens_response = await getData(); - const tokens = tokens_response - .filter(t => t.startsWith(nested[chain]['prefix'])) - .map(t => t.substring(t.indexOf(':') + 1)).flat() - const owner = nested[chain]['nestReserve_contract'] - return api.sumTokens({ owner, tokens }) - } -} - -module.exports.methodology = 'Nested TVL consists of tokens held by NestedReserve contracts on each chain, for which we can get the address using a rest api endpoint' - -Object.keys(nested).forEach(chain => { - module.exports[chain] = { tvl: chainTvl_onchain(chain) } -}) \ No newline at end of file diff --git a/projects/nestfi/index.js b/projects/nestfi/index.js deleted file mode 100644 index 6015a34ea73..00000000000 --- a/projects/nestfi/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require('../helper/staking'); - -const nestVault = '0x65e7506244CDdeFc56cD43dC711470F8B0C43beE'; -const NEST_token = '0x98f8669F6481EbB341B522fCD3663f79A3d1A6A7' -const eth_nestVault = '0x12858F7f24AA830EeAdab2437480277E92B0723a'; -const ETH_NEST_token = '0x04abEdA201850aC0124161F037Efd70c74ddC74C' - -module.exports = { - methodology: 'TVL counts NEST tokens used as collateral by the protocol.', - bsc: { - tvl: staking(nestVault, NEST_token), - }, - ethereum: { - tvl: staking(eth_nestVault, ETH_NEST_token), - } -} \ No newline at end of file diff --git a/projects/nether-fi/index.js b/projects/nether-fi/index.js deleted file mode 100644 index 2dd6739954a..00000000000 --- a/projects/nether-fi/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -const vaultBase = "0xAd378C374f7996235E927e693eDea32605C0A61F"; -const stakingBase = "0x6ffC50886775D4A26AF1B0f88F9df61267e69aec"; -const NFI = "0x60359A0DD148B18d5cF1Ddf8Aa1916221ED0cbCd"; - -module.exports = { - base: { - staking: staking(stakingBase, NFI), - tvl: gmxExports({ vault: vaultBase }), - } -}; diff --git a/projects/netswap/index.js b/projects/netswap/index.js deleted file mode 100644 index c8c2a5a6af0..00000000000 --- a/projects/netswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x70f51d68D16e8f9e418441280342BD43AC9Dff9f) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - metis: { - tvl: getUniTVL({ factory: '0x70f51d68D16e8f9e418441280342BD43AC9Dff9f', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/netweave-lending/index.js b/projects/netweave-lending/index.js deleted file mode 100644 index a58faf317db..00000000000 --- a/projects/netweave-lending/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - mode: compoundExports2({ - comptroller: '0x86112d3176c537B953560EA6fE43f79382E7bffE', - }) -} diff --git a/projects/netweave-vault/index.js b/projects/netweave-vault/index.js deleted file mode 100644 index 359cd5b1192..00000000000 --- a/projects/netweave-vault/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { yieldHelper } = require("../helper/yieldHelper") - -const vault = '0x28d46E6A97273865561142124056eb3243568d3C' -const abis = { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, uint256 accSushiPerShare, uint256 amount, address strat)', -} -module.exports = yieldHelper({ - project: 'NetWeave', - chain: 'mode', - masterchef: vault, - abis, -}) diff --git a/projects/neuralai/index.js b/projects/neuralai/index.js deleted file mode 100644 index 50b71098246..00000000000 --- a/projects/neuralai/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require('../helper/staking'); - -const CONTRACT_ADDRESS = "0xbe2cf8DA9887e2AB997Ed53cC49263eBD09B20C3"; -const TOKENS = [ - "0x32B053F2CBA79F80ada5078cb6b305da92BDe6e1", // neural - "0x77E06c9eCCf2E797fd462A92B6D7642EF85b0A44" // wtao -]; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(CONTRACT_ADDRESS, TOKENS), - }, -}; diff --git a/projects/neuron/index.js b/projects/neuron/index.js deleted file mode 100644 index 934c0976ab2..00000000000 --- a/projects/neuron/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const http_api_url = 'https://brain.goneuron.xyz/api_special/getChainTVL'; -const operator = '0xebb14128e98b2966EAb5b7da3a83e8c2edca0313'; -const chainIds = { - arbitrum : 42161, - optimism : 10, - linea : 59144, - base: 8453, -}; - -const outpostAddresses = { - 42161 : "0x2395e53b250f091f38858ca9e75398181d45682b", - 10 : "0x2395e53b250f091f38858ca9e75398181d45682b", - 59144 : "0x2395e53b250f091f38858ca9e75398181d45682b", - 8453 : "0xe204912f188514ab33ba75c96bc81fe973db1046", -}; - -function chainTvl(chain) { - return async (api) => { - const urlTvl = `${http_api_url}?chainId=${api.getChainId()}`; - const neuron_response_tvl = await getConfig('neuron/'+chain, urlTvl); - var [address, tokensAndAmounts] = neuron_response_tvl; - const outpostAddress = outpostAddresses[api.getChainId()]; - return api.sumTokens({ owner: outpostAddress, tokens: tokensAndAmounts.map(i => i[0]) }) - }; -} - -module.exports.methodology = 'neuron TVL is made of token balances of the neuron Outpost constracts. The deployed tokens are retrieved using HTTP REST API.' - -Object.keys(chainIds).forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain) } -}) \ No newline at end of file diff --git a/projects/neuronswap.js b/projects/neuronswap.js deleted file mode 100644 index 9573a25c0ce..00000000000 --- a/projects/neuronswap.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL, staking, } = require('./helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: `Tvl counts the tokens locked on AMM pools and staking counts the NR that has been staked. Data is pulled from the 'https://core.neuronswap.com/api/dashboard'`, - klaytn: { - tvl: getUniTVL({ factory: '0xe334e8c7073e9aaae3cab998eecca33f56df6621', useDefaultCoreAssets: true, }), - staking: staking({ - tokens: ['0x340073962a8561cb9e0c271aab7e182d5f5af5c8'], - owner: '0x92a47a5c6b742b2056f0f4afb7724112c83715e1', - lps: ['0x908a4E95b447bD2e0fd7c020618Ab84b5d6FFc87'], - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/neutra-finance/index.js b/projects/neutra-finance/index.js deleted file mode 100644 index 3a4823f1622..00000000000 --- a/projects/neutra-finance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const nGlpVaults = "0x6Bfa4F1DfAfeb9c37E4E8d436E1d0C5973E47e25"; - const nUSDCVault = "0x2a958665bC9A1680135241133569C7014230Cb21"; - - const nGlpTotalValue = await api.call({ - abi: "uint256:totalValue", - target: nGlpVaults, - }); - const nUSDCTotalValue = await api.call({ - abi: "uint256:totalAssets", - target: nUSDCVault, - }); - - const tvl = +nUSDCTotalValue + nGlpTotalValue / 1e24; - api.add(ADDRESSES.arbitrum.USDC, tvl) -} -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl, - }, -}; diff --git a/projects/neutral-trade/constants.js b/projects/neutral-trade/constants.js deleted file mode 100644 index fbe073fbe4d..00000000000 --- a/projects/neutral-trade/constants.js +++ /dev/null @@ -1,398 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const DRIFT_PROGRAM_ID = 'dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH'; -const DRIFT_VAULT_PROGRAM_ID = 'vAuLTsyrvSfZRuRB3XgvkPwNGgYSs9YRYymVebLKoxR'; - -const START_TIMESTAMP = 1730419200; // 2024-11-01 - - -const TOKENS = { - USDC: { - name: 'USDC', - mint: ADDRESSES.solana.USDC, - decimals: 6 - }, - SOL: { - name: 'SOL', - mint: ADDRESSES.solana.SOL, - decimals: 9 - }, - WBTC: { - name: 'Wrapped BTC (Wormhole) (WBTC)', - mint: '3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh', - decimals: 8 - }, - WETH: { - name: 'Wrapped ETH (Wormhole) (WETH)', - mint: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', - decimals: 8 - }, - JLP: { - name: 'Jupiter Perps LP', - mint: '27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4', - decimals: 6 - }, -}; - -const DRIFT_VAULTS = [ - // PUBLIC - { - name: "USDC Basis (Perps Basket)", - address: "4cvgasNfbJ36yeMVJSkscgL2Yco9dFGdj52Wrg91fmHv", - token: TOKENS.USDC, - }, - { - name: "BTC Super Staking", - address: "BVddkVtFJLCihbVrtLo8e3iEd9NftuLunaznAxFFW8vf", - token: TOKENS.WBTC, - }, - { - name: "ETH Super Staking", - address: "ENr5e1BMN5vFUHf4iCCPzR4GjWCKgtHnQcdniRQqMdEL", - token: TOKENS.WETH, - }, - // { // ignore this vault because deprecated and not using latest drift program - // name: "USDC Staking (JLP Delta Neutral) v1", - // //programId: "9Fcn3Fd4d5ocrb12xCUtEvezxcjFEAyHBPfrZDiPt9Qj", - // address: "3Nkctq19AW7gs5hkxixUDjS9UVjmCwcNCo7rqPpub87c", - // token: TOKENS.USDC, - // }, - { - name: "USDC Staking (JLP Delta Neutral) v2", - address: "41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU", - token: TOKENS.USDC, - }, - { - name: "USDC Staking (JLP Delta Neutral) v3", - address: "7ngzeBygEksaBvKzHEeihqoLpDpWqTNRMVh2wCyb6NP8", - token: TOKENS.USDC, - }, - { - name: "USDC Staking (JLP Delta Neutral) v4", - address: "46fQeq1UX5djNkrY5d942inhRHjp1cTZmWBeCUZoqWT3", - token: TOKENS.USDC, - }, - { - name: "USDC Staking (JLP Delta Neutral) v5", - address: "9omhWDzVxpX1vPBxAhJpVao7baoVzZpNib32vozZLxGm", - token: TOKENS.USDC, - }, - { - name: "USDC Staking (JLP Delta Neutral) v6", - address: "9FZgWXmoQQXW94egVf7SXRpYFyTkVm3xkCmXgzpoa2QG", - token: TOKENS.USDC, - }, - { - name: "USDC Basis (Sanctum-INF)", - address: "CxL8eQmGhN9LKSoHj7bU95JekFPtyZoUc57mbehb5A56", - token: TOKENS.USDC, - }, - { - name: "SOL Super Staking", - address: "EuSLjg23BrtwYAk1t4TFe5ArYSXCVXLBqrHRBfWQiTeJ", - token: TOKENS.SOL, - }, - { - name: "JLP Traders Print", - address: "85XuR4kE5yxp1hk91WHAawinXZsuJowxy59STYYpM9pK", - token: TOKENS.USDC, - }, - { - name: "JLP Traders Rekt", - address: "2r81MPMDjGSrbmGRwzDg6aqhe3t3vbKcrYfpes5bXckS", - token: TOKENS.USDC, - }, - { - name: "SOL Momentum (CTA-Marco)", - address: "DbAX9qNiHrtrngLz8e5nBNWbmeGGVRKUQtxfGdENCFJS", - token: TOKENS.USDC, - }, - { - name: "Long SOL, Short ETH", - address: "2zsHAfvD2BpmZbuPhc32dija8cXu8ow6n2yzyZTMvQ8V", - token: TOKENS.USDC, - }, - { - name: "The Big Short (Inverse JLP DN)", - address: "2csxi2M4uMijHW3CvnHqAYJ9CcLcZbGmDNKSz1qjRAVQ", - token: TOKENS.USDC, - }, - { - name: "Neutralized JLP", - address: "CG2zv4wsSetgs6mAucEKnHPwSoZSLYMwGroembTUNeaU", - token: TOKENS.JLP, - }, - { - name: "FUEL Maxi", - address: "DzaHA2zD7XQhj2Z6tG9YxVtgcvJ4sqzeLYr8dszyQTEq", - token: TOKENS.USDC, - }, - // { // disabled to avoid double counting - // name: "USDC Savings", - // address: "4i2L5zvzUM5LXqUYm35Ytv4BGSmnFVTqG5xtFfJesm14", - // token: TOKENS.USDC, - // }, - { - name: "SOL Savings", - address: "A6cPV4DrePTUUamBM87MDqK9kBy9vbucjhrCxtxzExK9", - token: TOKENS.SOL, - }, - { - name: "ETH Savings", - address: "8JjFwxduSVCY91s2yBVGgKSAKPwPkuTKEchjRw74Du5w", - token: TOKENS.WETH, - }, - { - name: "BTC Savings", - address: "494C23vX4h7Bhfyz92hScg71PXn9huG9SqY8mFYhRJoK", - token: TOKENS.WBTC, - }, - { - name: "JLPDN - INTERNAL", - address: "FBYp9toQEqNiGeP8BzyvRD1FUauJBFk5eYUEkgqvigZ5", - token: TOKENS.USDC, - }, - { - name: "BTC Dominance", - address: "5BCDLjnQXv92AYySpdEpENgYhABaVf92fym1MYNyhVuo", - token: TOKENS.USDC, - }, - { - name: "FARTCOIN Dominance", - address: "5cbTtvNVg1qc5L5Fcnz9R3X2QsYTtMCwBZRwBbuoEhn5", - token: TOKENS.USDC, - }, - { - name: "Hyper JLP", - address: "A1B9MVput3r1jS91iu8ckdDiMSugXbQeEtvJEQsUHsPi", - token: TOKENS.USDC, - }, - { - name: "Memes ETF", - address: "AHfaqTwFhWiX2DZrYbTivBpbrstNJRyjHG4mFPVpJS5n", - token: TOKENS.USDC, - }, - { - name: "Long BONK, Short PUMP", - address: "7uUJtfVzhu6aXZypsARsAK8sjWsDxWJYUkaNzm3hTgid", - token: TOKENS.USDC, - }, - - // Communities - { - name: "Tangem USDC Staking", - address: "HS2anXrdps1S2DZCHepgzfcoaqSUWBBuuqTRMugJisP2", - token: TOKENS.USDC, - }, - { - name: "Tangem WBTC Staking", - address: "6E2sh7ygUzXFJAafXX5sMeSj7eK6YkYqpoAzXm7bYtCw", - token: TOKENS.WBTC, - }, - { - name: "Project Super USDC Staking", - address: "6un71hP7xhpc8nqWWnbYPiamjAckEGH1A6zzenpGdZLf", - token: TOKENS.USDC, - }, - { - name: "JLP Delta Neutral - Perena", - address: "9vmBYT7hcjexuHM3iML3buTz3PchvULH5EfAjG12TtRZ", - token: TOKENS.USDC, - }, - - // VIPS - { - name: "vip01", - address: "CZU38L2NyL6tqFxzYAGYkmkf2JG98tZfZ2CnUapVgXQe", - token: TOKENS.USDC, - }, - { - name: "vip02", - address: "DUW6uWcrsjYmsYDjp9iGDN4JdRa2MqznjuxjKVok5Fsj", - token: TOKENS.USDC, - }, - { - name: "vip03", - address: "Fd3k4c6Dv7m9673ae87P6duQrftY9UVfwiCxngNbJrUQ", - token: TOKENS.USDC, - }, - // 'vip04', // currently inactive - { - name: "vip05", - address: "9BMEyctGvajEubk5iCRBnM9fkeTXUhrxaweYq34jZdC8", - token: TOKENS.USDC, - }, - { - name: "vip06", - address: "6DFDj66PbPoTC16Sh51MJijoTTMYCbMCVC85tnc5UfQ3", - token: TOKENS.USDC, - }, - { - name: "vip07", - address: "HTLvAjqc6Wkzh4i4QNLHhQHZAnrtVvkGyYeyCiUWLe9b", - token: TOKENS.USDC, - }, - { - name: "vip08", - address: "CYUyHzu6Z3JyBhfkQpZZwWqa2zpcmzaK1xXS96n8ea1U", - token: TOKENS.SOL, - }, - // 'vip09' // placeholder - { - name: "vip10", - address: "5Wv7V9zLGD3g7JTXfYjpzFEs42kjowXqUHh7wQ5ryVef", - token: TOKENS.USDC, - }, - { - name: "vip11", - address: "HhLwXF15V3MTVG9ucGGmT6mcEuqt2BjHuTCJBi4Zvi4K", - token: TOKENS.USDC, - }, - { - name: "vip12", - address: "GpMcLVnUqE1RyEB5rRFsFQJGKiPBBXqrpFsdbfUPgbqv", - token: TOKENS.USDC, - }, - { - name: "vip13", - address: "9V2LggfMo1EjaBbq3qBRBifD287m8zryrZgTR72grcCp", - token: TOKENS.USDC, - }, - { - name: "vip14", - address: "4iSH214QLwWnJQNwTH6VfH4oNcPccr7HnMmsybjnTtez", - token: TOKENS.USDC, - }, - { - name: "vip15", - address: "AwVR9y8Qw5erzrzE8hcs1j1se86yBwmrRidWb1qzaAy2", - token: TOKENS.USDC, - }, - { - name: "vip16", - address: "4H3wAK5tkT7G1vFrj6J9jWGvbaqVGkzPPBsp9qyKUYz9", - token: TOKENS.USDC, - }, - { - name: "vip17", - address: "3UhqS9P4AhKMrCv7yE1LujgQS2xjFnRhANC5dPf2bZem", - token: TOKENS.USDC, - }, - { - name: "vip18", - address: "1CUvZgVGaxV6sDUjFrWHyzukWBD2amUi3dQkvh9KKVA", - token: TOKENS.USDC, - }, - { - name: "vip19", - address: "5DPwSqEfaEsBH4zzZha35TpWRRPnWFfVgYZyK3zNswT7", - token: TOKENS.USDC, - }, - { - name: "vip-p01", - address: "5FqiXogZCcyZoNeTZzNvywY5s9ZRzNsPPkZ2Q4YRu6ww", - token: TOKENS.USDC, - }, - { - name: "vip20", - address: "AAiykf4cgdFxz4kyRNuCFf9xFwy7c1gHiWacydmi1jLS", - token: TOKENS.USDC, - }, - { - name: "vip21", - address: "7qPbUA5HmxjpoxniqoH8r5SZ5dY1hqYXGr8QSZsRXynX", - token: TOKENS.USDC, - }, - { - name: "vip22", - address: "HhhFKvtkbz9v7nDxsFVD8Z3qSY2r9Ncc9rnKopFaGCkb", - token: TOKENS.USDC, - }, - { - name: "vip23", - address: "8oZhUFmrA7p3SkVX7o4nFfSLsmt3KfCyW8grFydtvvuj", - token: TOKENS.USDC, - }, - { - name: "vip24", - address: "2Z2YH1RAXS8CNJo3QkYpQ4WHGH9jzNQ5m8YunRkY65mf", - token: TOKENS.USDC, - }, -]; - -const KAMINO_VAULTS = [ - // { // disabled to avoid double counting - // name: "USDC Max Yield", - // address: "67dqmR76uAbjX6e81A1ganKv3ou31WUMEdeWJkwVfeXy", - // token: TOKENS.USDC, - // }, -]; - -const HYPERLIQUID_VAULTS = [ - { - name: "The Big Short", - address: "0xb2246d6f3ddeeca74cfd29dc3cce05c1746fcd68", - token: TOKENS.USDC, - }, - { - name: "HYPE / SOL Pairs Trade", - address: "0xaae8a508a5e39c134a4d6a49d7dce82a17f84651", - token: TOKENS.USDC, - }, - { - name: "Alt Dominance", - address: "0xb03715bec4514ae7d338fcd85053ca227a1fb823", - token: TOKENS.USDC, - }, - { - name: "BTC Dominance", - address: "0x799e0112977c37f8d93a768cf5a2305bdd3ae6f9", - token: TOKENS.USDC, - }, -]; - -const NT_VAULT_PROGRAM_ID = "BUNDDh4P5XviMm1f3gCvnq2qKx6TGosAGnoUK12e7cXU"; - -const NT_VAULTS = [ - { - name: "Hyperliquid Funding Arb", - address: "nE1x7KQq2sm3GQrafQUUdBkSPPT52FmiMM9qAS1dgnC", - token: TOKENS.USDC, - }, - { - name: "Term Max", - address: "AvK6eRQNXiFfGSibrA96qDEtACkPyoouGrRGseryZFdE", - token: TOKENS.USDC, - }, - { - name: "CTA Momentum (R* Research)", - address: "HDDrsNSYpfHHfr646T4vfZvXDKcbzYYBEGTietGgi7rh", - token: TOKENS.USDC, - }, - { - name: "NT Earn", - address: "HWjMfYfc7KoPchoEDa5UFyVSpJxY3aV1RAccKvABYb9z", - token: TOKENS.USDC, - }, - { - name: "JLP Delta Neutral CEX", - address: "9cMB2bMsLa9hZjRnjxFhg2DM9CLmjabMsGvfQUtdgupk", - token: TOKENS.USDC, - }, - { - name: "Moon LP", - address: "FMtgtataz4L2efYanxTGpVjg4njNe2j8QLLsnw5zeBPx", - token: TOKENS.USDC, - }, -]; - -module.exports = { - START_TIMESTAMP, - DRIFT_PROGRAM_ID, - DRIFT_VAULT_PROGRAM_ID, - TOKENS, - DRIFT_VAULTS, - KAMINO_VAULTS, - HYPERLIQUID_VAULTS, - NT_VAULT_PROGRAM_ID, - NT_VAULTS, -}; diff --git a/projects/neutral-trade/idl/drift_idl.json b/projects/neutral-trade/idl/drift_idl.json deleted file mode 100644 index 20b1b7dc0d6..00000000000 --- a/projects/neutral-trade/idl/drift_idl.json +++ /dev/null @@ -1,2821 +0,0 @@ -{ - "version": "0.2.0", - "name": "drift_vaults", - "instructions": [ - { - "name": "initializeVault", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": true, - "isSigner": false - }, - { - "name": "driftSpotMarket", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarketMint", - "isMut": false, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "VaultParams" - } - } - ] - }, - { - "name": "initializeVaultWithProtocol", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultProtocol", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": true, - "isSigner": false - }, - { - "name": "driftSpotMarket", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarketMint", - "isMut": false, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "VaultWithProtocolParams" - } - } - ] - }, - { - "name": "updateDelegate", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "delegate", - "type": "publicKey" - } - ] - }, - { - "name": "updateMarginTradingEnabled", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "enabled", - "type": "bool" - } - ] - }, - { - "name": "updateVaultProtocol", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "protocol", - "isMut": false, - "isSigner": true - }, - { - "name": "vaultProtocol", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "UpdateVaultProtocolParams" - } - } - ] - }, - { - "name": "updateVault", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "UpdateVaultParams" - } - } - ] - }, - { - "name": "initializeVaultDepositor", - "accounts": [ - { - "name": "vault", - "isMut": false, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "initializeTokenizedVaultDepositor", - "accounts": [ - { - "name": "vault", - "isMut": false, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "mintAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "metadataAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenMetadataProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "InitializeTokenizedVaultDepositorParams" - } - } - ] - }, - { - "name": "tokenizeShares", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenizedVaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "mint", - "isMut": true, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - }, - { - "name": "unit", - "type": { - "defined": "WithdrawUnit" - } - } - ] - }, - { - "name": "redeemTokens", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenizedVaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "mint", - "isMut": true, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "tokensToBurn", - "type": "u64" - } - ] - }, - { - "name": "deposit", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "vaultTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarketVault", - "isMut": true, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "requestWithdraw", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUserStats", - "isMut": false, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "withdrawAmount", - "type": "u64" - }, - { - "name": "withdrawUnit", - "type": { - "defined": "WithdrawUnit" - } - } - ] - }, - { - "name": "cancelRequestWithdraw", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUserStats", - "isMut": false, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "withdraw", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "vaultTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarketVault", - "isMut": true, - "isSigner": false - }, - { - "name": "driftSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "liquidate", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "resetDelegate", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "managerDeposit", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "vaultTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarketVault", - "isMut": true, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "managerRequestWithdraw", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUserStats", - "isMut": false, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "withdrawAmount", - "type": "u64" - }, - { - "name": "withdrawUnit", - "type": { - "defined": "WithdrawUnit" - } - } - ] - }, - { - "name": "mangerCancelWithdrawRequest", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUserStats", - "isMut": false, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "managerWithdraw", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "vaultTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarketVault", - "isMut": true, - "isSigner": false - }, - { - "name": "driftSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "applyProfitShare", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "applyRebase", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "applyRebaseTokenizedDepositor", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenizedVaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "forceWithdraw", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "vaultDepositor", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarketVault", - "isMut": true, - "isSigner": false - }, - { - "name": "driftSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "initializeInsuranceFundStake", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarket", - "isMut": true, - "isSigner": false - }, - { - "name": "driftSpotMarketMint", - "isMut": false, - "isSigner": false - }, - { - "name": "vaultTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundStake", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "marketIndex", - "type": "u16" - } - ] - }, - { - "name": "addInsuranceFundStake", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "driftSpotMarket", - "isMut": true, - "isSigner": false - }, - { - "name": "driftSpotMarketVault", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundStake", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundVault", - "isMut": true, - "isSigner": false - }, - { - "name": "managerTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultIfTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "marketIndex", - "type": "u16" - }, - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "requestRemoveInsuranceFundStake", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "driftSpotMarket", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundStake", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundVault", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "marketIndex", - "type": "u16" - }, - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "removeInsuranceFundStake", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "driftSpotMarket", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundStake", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundVault", - "isMut": true, - "isSigner": false - }, - { - "name": "managerTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultIfTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "marketIndex", - "type": "u16" - } - ] - }, - { - "name": "cancelRequestRemoveInsuranceFundStake", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "manager", - "isMut": false, - "isSigner": true - }, - { - "name": "driftSpotMarket", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundStake", - "isMut": true, - "isSigner": false - }, - { - "name": "insuranceFundVault", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "marketIndex", - "type": "u16" - } - ] - }, - { - "name": "protocolRequestWithdraw", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultProtocol", - "isMut": true, - "isSigner": false - }, - { - "name": "protocol", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUserStats", - "isMut": false, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "withdrawAmount", - "type": "u64" - }, - { - "name": "withdrawUnit", - "type": { - "defined": "WithdrawUnit" - } - } - ] - }, - { - "name": "protocolCancelWithdrawRequest", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultProtocol", - "isMut": true, - "isSigner": false - }, - { - "name": "protocol", - "isMut": false, - "isSigner": true - }, - { - "name": "driftUserStats", - "isMut": false, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "protocolWithdraw", - "accounts": [ - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultProtocol", - "isMut": true, - "isSigner": false - }, - { - "name": "protocol", - "isMut": false, - "isSigner": true - }, - { - "name": "vaultTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUserStats", - "isMut": true, - "isSigner": false - }, - { - "name": "driftUser", - "isMut": true, - "isSigner": false - }, - { - "name": "driftState", - "isMut": false, - "isSigner": false - }, - { - "name": "driftSpotMarketVault", - "isMut": true, - "isSigner": false - }, - { - "name": "driftSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "driftProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "tokenizedVaultDepositor", - "type": { - "kind": "struct", - "fields": [ - { - "name": "vault", - "docs": [ - "The vault deposited into" - ], - "type": "publicKey" - }, - { - "name": "pubkey", - "docs": [ - "The vault depositor account's pubkey. It is a pda of vault" - ], - "type": "publicKey" - }, - { - "name": "mint", - "docs": [ - "The token mint for tokenized shares owned by this VaultDepositor" - ], - "type": "publicKey" - }, - { - "name": "vaultShares", - "docs": [ - "share of vault owned by this depositor. vault_shares / vault.total_shares is depositor's ownership of vault_equity" - ], - "type": "u128" - }, - { - "name": "lastVaultShares", - "docs": [ - "stores the vault_shares from the most recent liquidity event (redeem or issuance) before a spl token", - "CPI is done, used to track invariants" - ], - "type": "u128" - }, - { - "name": "lastValidTs", - "docs": [ - "creation ts of vault depositor" - ], - "type": "i64" - }, - { - "name": "netDeposits", - "docs": [ - "lifetime net deposits of vault depositor for the vault" - ], - "type": "i64" - }, - { - "name": "totalDeposits", - "docs": [ - "lifetime total deposits" - ], - "type": "u64" - }, - { - "name": "totalWithdraws", - "docs": [ - "lifetime total withdraws" - ], - "type": "u64" - }, - { - "name": "cumulativeProfitShareAmount", - "docs": [ - "the token amount of gains the vault depositor has paid performance fees on" - ], - "type": "i64" - }, - { - "name": "profitShareFeePaid", - "type": "u64" - }, - { - "name": "vaultSharesBase", - "docs": [ - "The exponent for vault_shares decimal places at the time the tokenized vault depositor was initialized.", - "If the vault undergoes a rebase, this TokenizedVaultDepositor can no longer issue new tokens, only redeem", - "is possible." - ], - "type": "u32" - }, - { - "name": "bump", - "docs": [ - "The bump for the vault pda" - ], - "type": "u8" - }, - { - "name": "padding1", - "type": { - "array": [ - "u8", - 3 - ] - } - }, - { - "name": "padding", - "type": { - "array": [ - "u64", - 10 - ] - } - } - ] - } - }, - { - "name": "vaultDepositor", - "type": { - "kind": "struct", - "fields": [ - { - "name": "vault", - "docs": [ - "The vault deposited into" - ], - "type": "publicKey" - }, - { - "name": "pubkey", - "docs": [ - "The vault depositor account's pubkey. It is a pda of vault and authority" - ], - "type": "publicKey" - }, - { - "name": "authority", - "docs": [ - "The authority is the address w permission to deposit/withdraw" - ], - "type": "publicKey" - }, - { - "name": "vaultShares", - "docs": [ - "share of vault owned by this depositor. vault_shares / vault.total_shares is depositor's ownership of vault_equity" - ], - "type": "u128" - }, - { - "name": "lastWithdrawRequest", - "docs": [ - "last withdraw request" - ], - "type": { - "defined": "WithdrawRequest" - } - }, - { - "name": "lastValidTs", - "docs": [ - "creation ts of vault depositor" - ], - "type": "i64" - }, - { - "name": "netDeposits", - "docs": [ - "lifetime net deposits of vault depositor for the vault" - ], - "type": "i64" - }, - { - "name": "totalDeposits", - "docs": [ - "lifetime total deposits" - ], - "type": "u64" - }, - { - "name": "totalWithdraws", - "docs": [ - "lifetime total withdraws" - ], - "type": "u64" - }, - { - "name": "cumulativeProfitShareAmount", - "docs": [ - "the token amount of gains the vault depositor has paid performance fees on" - ], - "type": "i64" - }, - { - "name": "profitShareFeePaid", - "type": "u64" - }, - { - "name": "vaultSharesBase", - "docs": [ - "the exponent for vault_shares decimal places" - ], - "type": "u32" - }, - { - "name": "padding1", - "type": "u32" - }, - { - "name": "padding", - "type": { - "array": [ - "u64", - 8 - ] - } - } - ] - } - }, - { - "name": "vaultProtocol", - "type": { - "kind": "struct", - "fields": [ - { - "name": "protocol", - "docs": [ - "The protocol, company, or entity that services the product using this vault.", - "The protocol is not allowed to deposit into the vault but can profit share and collect annual fees just like the manager." - ], - "type": "publicKey" - }, - { - "name": "protocolProfitAndFeeShares", - "docs": [ - "The shares from profit share and annual fee unclaimed by the protocol." - ], - "type": "u128" - }, - { - "name": "protocolFee", - "docs": [ - "The annual fee charged on deposits by the protocol (traditional hedge funds typically charge 2% per year on assets under management).", - "Unlike the management fee this can't be negative." - ], - "type": "u64" - }, - { - "name": "protocolTotalWithdraws", - "docs": [ - "Total withdraws for the protocol" - ], - "type": "u64" - }, - { - "name": "protocolTotalFee", - "docs": [ - "Total fee charged by the protocol (annual management fee + profit share).", - "Unlike the management fee this can't be negative." - ], - "type": "u64" - }, - { - "name": "protocolTotalProfitShare", - "docs": [ - "Total profit share charged by the protocol" - ], - "type": "u64" - }, - { - "name": "lastProtocolWithdrawRequest", - "type": { - "defined": "WithdrawRequest" - } - }, - { - "name": "protocolProfitShare", - "docs": [ - "Percentage the protocol charges on all profits realized by depositors: PERCENTAGE_PRECISION" - ], - "type": "u32" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "version", - "type": "u8" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 2 - ] - } - } - ] - } - }, - { - "name": "vault", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "docs": [ - "The name of the vault. Vault pubkey is derived from this name." - ], - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "pubkey", - "docs": [ - "The vault's pubkey. It is a pda of name and also used as the authority for drift user" - ], - "type": "publicKey" - }, - { - "name": "manager", - "docs": [ - "The manager of the vault who has ability to update vault params" - ], - "type": "publicKey" - }, - { - "name": "tokenAccount", - "docs": [ - "The vaults token account. Used to receive tokens between deposits and withdrawals" - ], - "type": "publicKey" - }, - { - "name": "userStats", - "docs": [ - "The drift user stats account for the vault" - ], - "type": "publicKey" - }, - { - "name": "user", - "docs": [ - "The drift user account for the vault" - ], - "type": "publicKey" - }, - { - "name": "delegate", - "docs": [ - "The vaults designated delegate for drift user account", - "can differ from actual user delegate if vault is in liquidation" - ], - "type": "publicKey" - }, - { - "name": "liquidationDelegate", - "docs": [ - "The delegate handling liquidation for depositor" - ], - "type": "publicKey" - }, - { - "name": "userShares", - "docs": [ - "The sum of all shares held by the users (vault depositors)" - ], - "type": "u128" - }, - { - "name": "totalShares", - "docs": [ - "The sum of all shares: deposits from users, manager deposits, manager profit/fee, and protocol profit/fee.", - "The manager deposits are total_shares - user_shares - protocol_profit_and_fee_shares." - ], - "type": "u128" - }, - { - "name": "lastFeeUpdateTs", - "docs": [ - "Last fee update unix timestamp" - ], - "type": "i64" - }, - { - "name": "liquidationStartTs", - "docs": [ - "When the liquidation starts" - ], - "type": "i64" - }, - { - "name": "redeemPeriod", - "docs": [ - "The period (in seconds) that a vault depositor must wait after requesting a withdrawal to finalize withdrawal.", - "Currently, the maximum is 90 days." - ], - "type": "i64" - }, - { - "name": "totalWithdrawRequested", - "docs": [ - "The sum of all outstanding withdraw requests" - ], - "type": "u64" - }, - { - "name": "maxTokens", - "docs": [ - "Max token capacity, once hit/passed vault will reject new deposits (updatable)" - ], - "type": "u64" - }, - { - "name": "managementFee", - "docs": [ - "The annual fee charged on deposits by the manager.", - "Traditional funds typically charge 2% per year on assets under management." - ], - "type": "i64" - }, - { - "name": "initTs", - "docs": [ - "Timestamp vault initialized" - ], - "type": "i64" - }, - { - "name": "netDeposits", - "docs": [ - "The net deposits for the vault" - ], - "type": "i64" - }, - { - "name": "managerNetDeposits", - "docs": [ - "The net deposits for the manager" - ], - "type": "i64" - }, - { - "name": "totalDeposits", - "docs": [ - "Total deposits" - ], - "type": "u64" - }, - { - "name": "totalWithdraws", - "docs": [ - "Total withdraws" - ], - "type": "u64" - }, - { - "name": "managerTotalDeposits", - "docs": [ - "Total deposits for the manager" - ], - "type": "u64" - }, - { - "name": "managerTotalWithdraws", - "docs": [ - "Total withdraws for the manager" - ], - "type": "u64" - }, - { - "name": "managerTotalFee", - "docs": [ - "Total management fee accrued by the manager" - ], - "type": "i64" - }, - { - "name": "managerTotalProfitShare", - "docs": [ - "Total profit share accrued by the manager" - ], - "type": "u64" - }, - { - "name": "minDepositAmount", - "docs": [ - "The minimum deposit amount" - ], - "type": "u64" - }, - { - "name": "lastManagerWithdrawRequest", - "type": { - "defined": "WithdrawRequest" - } - }, - { - "name": "sharesBase", - "docs": [ - "The base 10 exponent of the shares (given massive share inflation can occur at near zero vault equity)" - ], - "type": "u32" - }, - { - "name": "profitShare", - "docs": [ - "Percentage the manager charges on all profits realized by depositors: PERCENTAGE_PRECISION" - ], - "type": "u32" - }, - { - "name": "hurdleRate", - "docs": [ - "Vault manager only collect incentive fees during periods when returns are higher than this amount: PERCENTAGE_PRECISION" - ], - "type": "u32" - }, - { - "name": "spotMarketIndex", - "docs": [ - "The spot market index the vault deposits into/withdraws from" - ], - "type": "u16" - }, - { - "name": "bump", - "docs": [ - "The bump for the vault pda" - ], - "type": "u8" - }, - { - "name": "permissioned", - "docs": [ - "Whether anybody can be a depositor" - ], - "type": "bool" - }, - { - "name": "vaultProtocol", - "docs": [ - "The optional [`VaultProtocol`] account." - ], - "type": "bool" - }, - { - "name": "padding1", - "type": { - "array": [ - "u8", - 7 - ] - } - }, - { - "name": "padding", - "type": { - "array": [ - "u64", - 7 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "InitializeTokenizedVaultDepositorParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "tokenName", - "type": "string" - }, - { - "name": "tokenSymbol", - "type": "string" - }, - { - "name": "tokenUri", - "type": "string" - }, - { - "name": "decimals", - "type": "u8" - } - ] - } - }, - { - "name": "VaultWithProtocolParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "redeemPeriod", - "type": "i64" - }, - { - "name": "maxTokens", - "type": "u64" - }, - { - "name": "managementFee", - "type": "i64" - }, - { - "name": "minDepositAmount", - "type": "u64" - }, - { - "name": "profitShare", - "type": "u32" - }, - { - "name": "hurdleRate", - "type": "u32" - }, - { - "name": "spotMarketIndex", - "type": "u16" - }, - { - "name": "permissioned", - "type": "bool" - }, - { - "name": "vaultProtocol", - "type": { - "defined": "VaultProtocolParams" - } - } - ] - } - }, - { - "name": "VaultProtocolParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "protocol", - "type": "publicKey" - }, - { - "name": "protocolFee", - "type": "u64" - }, - { - "name": "protocolProfitShare", - "type": "u32" - } - ] - } - }, - { - "name": "VaultParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "redeemPeriod", - "type": "i64" - }, - { - "name": "maxTokens", - "type": "u64" - }, - { - "name": "managementFee", - "type": "i64" - }, - { - "name": "minDepositAmount", - "type": "u64" - }, - { - "name": "profitShare", - "type": "u32" - }, - { - "name": "hurdleRate", - "type": "u32" - }, - { - "name": "spotMarketIndex", - "type": "u16" - }, - { - "name": "permissioned", - "type": "bool" - } - ] - } - }, - { - "name": "UpdateVaultProtocolParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "protocolFee", - "type": { - "option": "u64" - } - }, - { - "name": "protocolProfitShare", - "type": { - "option": "u32" - } - } - ] - } - }, - { - "name": "UpdateVaultParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "redeemPeriod", - "type": { - "option": "i64" - } - }, - { - "name": "maxTokens", - "type": { - "option": "u64" - } - }, - { - "name": "managementFee", - "type": { - "option": "i64" - } - }, - { - "name": "minDepositAmount", - "type": { - "option": "u64" - } - }, - { - "name": "profitShare", - "type": { - "option": "u32" - } - }, - { - "name": "hurdleRate", - "type": { - "option": "u32" - } - }, - { - "name": "permissioned", - "type": { - "option": "bool" - } - } - ] - } - }, - { - "name": "WithdrawRequest", - "type": { - "kind": "struct", - "fields": [ - { - "name": "shares", - "docs": [ - "request shares of vault withdraw" - ], - "type": "u128" - }, - { - "name": "value", - "docs": [ - "requested value (in vault spot_market_index) of shares for withdraw" - ], - "type": "u64" - }, - { - "name": "ts", - "docs": [ - "request ts of vault withdraw" - ], - "type": "i64" - } - ] - } - }, - { - "name": "VaultDepositorAction", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Deposit" - }, - { - "name": "WithdrawRequest" - }, - { - "name": "CancelWithdrawRequest" - }, - { - "name": "Withdraw" - }, - { - "name": "FeePayment" - }, - { - "name": "TokenizeShares" - }, - { - "name": "RedeemTokens" - } - ] - } - }, - { - "name": "WithdrawUnit", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Shares" - }, - { - "name": "Token" - }, - { - "name": "SharesPercent" - } - ] - } - } - ], - "events": [ - { - "name": "VaultRecord", - "fields": [ - { - "name": "ts", - "type": "i64", - "index": false - }, - { - "name": "spotMarketIndex", - "type": "u16", - "index": false - }, - { - "name": "vaultEquityBefore", - "type": "u64", - "index": false - } - ] - }, - { - "name": "VaultDepositorRecord", - "fields": [ - { - "name": "ts", - "type": "i64", - "index": false - }, - { - "name": "vault", - "type": "publicKey", - "index": false - }, - { - "name": "depositorAuthority", - "type": "publicKey", - "index": false - }, - { - "name": "action", - "type": { - "defined": "VaultDepositorAction" - }, - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "spotMarketIndex", - "type": "u16", - "index": false - }, - { - "name": "vaultSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "vaultSharesAfter", - "type": "u128", - "index": false - }, - { - "name": "vaultEquityBefore", - "type": "u64", - "index": false - }, - { - "name": "userVaultSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "totalVaultSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "userVaultSharesAfter", - "type": "u128", - "index": false - }, - { - "name": "totalVaultSharesAfter", - "type": "u128", - "index": false - }, - { - "name": "profitShare", - "type": "u64", - "index": false - }, - { - "name": "managementFee", - "type": "i64", - "index": false - }, - { - "name": "managementFeeShares", - "type": "i64", - "index": false - } - ] - }, - { - "name": "VaultDepositorV1Record", - "fields": [ - { - "name": "ts", - "type": "i64", - "index": false - }, - { - "name": "vault", - "type": "publicKey", - "index": false - }, - { - "name": "depositorAuthority", - "type": "publicKey", - "index": false - }, - { - "name": "action", - "type": { - "defined": "VaultDepositorAction" - }, - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "spotMarketIndex", - "type": "u16", - "index": false - }, - { - "name": "vaultSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "vaultSharesAfter", - "type": "u128", - "index": false - }, - { - "name": "vaultEquityBefore", - "type": "u64", - "index": false - }, - { - "name": "userVaultSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "totalVaultSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "userVaultSharesAfter", - "type": "u128", - "index": false - }, - { - "name": "totalVaultSharesAfter", - "type": "u128", - "index": false - }, - { - "name": "protocolSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "protocolSharesAfter", - "type": "u128", - "index": false - }, - { - "name": "protocolProfitShare", - "type": "u64", - "index": false - }, - { - "name": "protocolFee", - "type": "i64", - "index": false - }, - { - "name": "protocolFeeShares", - "type": "i64", - "index": false - }, - { - "name": "managerProfitShare", - "type": "u64", - "index": false - }, - { - "name": "managementFee", - "type": "i64", - "index": false - }, - { - "name": "managementFeeShares", - "type": "i64", - "index": false - } - ] - }, - { - "name": "ShareTransferRecord", - "fields": [ - { - "name": "ts", - "type": "i64", - "index": false - }, - { - "name": "vault", - "type": "publicKey", - "index": false - }, - { - "name": "fromVaultDepositor", - "type": "publicKey", - "index": false - }, - { - "name": "toVaultDepositor", - "type": "publicKey", - "index": false - }, - { - "name": "shares", - "type": "u128", - "index": false - }, - { - "name": "value", - "type": "u64", - "index": false - }, - { - "name": "fromDepositorSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "fromDepositorSharesAfter", - "type": "u128", - "index": false - }, - { - "name": "toDepositorSharesBefore", - "type": "u128", - "index": false - }, - { - "name": "toDepositorSharesAfter", - "type": "u128", - "index": false - } - ] - } - ], - "errors": [ - { - "code": 6000, - "name": "Default", - "msg": "Default" - }, - { - "code": 6001, - "name": "InvalidVaultRebase", - "msg": "InvalidVaultRebase" - }, - { - "code": 6002, - "name": "InvalidVaultSharesDetected", - "msg": "InvalidVaultSharesDetected" - }, - { - "code": 6003, - "name": "CannotWithdrawBeforeRedeemPeriodEnd", - "msg": "CannotWithdrawBeforeRedeemPeriodEnd" - }, - { - "code": 6004, - "name": "InvalidVaultWithdraw", - "msg": "InvalidVaultWithdraw" - }, - { - "code": 6005, - "name": "InsufficientVaultShares", - "msg": "InsufficientVaultShares" - }, - { - "code": 6006, - "name": "InvalidVaultWithdrawSize", - "msg": "InvalidVaultWithdrawSize" - }, - { - "code": 6007, - "name": "InvalidVaultForNewDepositors", - "msg": "InvalidVaultForNewDepositors" - }, - { - "code": 6008, - "name": "VaultWithdrawRequestInProgress", - "msg": "VaultWithdrawRequestInProgress" - }, - { - "code": 6009, - "name": "VaultIsAtCapacity", - "msg": "VaultIsAtCapacity" - }, - { - "code": 6010, - "name": "InvalidVaultDepositorInitialization", - "msg": "InvalidVaultDepositorInitialization" - }, - { - "code": 6011, - "name": "DelegateNotAvailableForLiquidation", - "msg": "DelegateNotAvailableForLiquidation" - }, - { - "code": 6012, - "name": "InvalidEquityValue", - "msg": "InvalidEquityValue" - }, - { - "code": 6013, - "name": "VaultInLiquidation", - "msg": "VaultInLiquidation" - }, - { - "code": 6014, - "name": "DriftError", - "msg": "DriftError" - }, - { - "code": 6015, - "name": "InvalidVaultInitialization", - "msg": "InvalidVaultInitialization" - }, - { - "code": 6016, - "name": "InvalidVaultUpdate", - "msg": "InvalidVaultUpdate" - }, - { - "code": 6017, - "name": "PermissionedVault", - "msg": "PermissionedVault" - }, - { - "code": 6018, - "name": "WithdrawInProgress", - "msg": "WithdrawInProgress" - }, - { - "code": 6019, - "name": "SharesPercentTooLarge", - "msg": "SharesPercentTooLarge" - }, - { - "code": 6020, - "name": "InvalidVaultDeposit", - "msg": "InvalidVaultDeposit" - }, - { - "code": 6021, - "name": "OngoingLiquidation", - "msg": "OngoingLiquidation" - }, - { - "code": 6022, - "name": "VaultProtocolMissing", - "msg": "VaultProtocolMissing" - }, - { - "code": 6023, - "name": "InvalidTokenization", - "msg": "InvalidTokenization" - } - ] -} diff --git a/projects/neutral-trade/idl/ntbundle.json b/projects/neutral-trade/idl/ntbundle.json deleted file mode 100644 index f236c22554b..00000000000 --- a/projects/neutral-trade/idl/ntbundle.json +++ /dev/null @@ -1,2536 +0,0 @@ -{ - "version": "0.1.0", - "name": "ntbundle", - "instructions": [ - { - "name": "initializeBundleMasterAccount", - "accounts": [ - { - "name": "admin", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleMasterAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "changeBundleMasterAdmin", - "accounts": [ - { - "name": "admin", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleMasterAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "newAdmin", - "type": "publicKey" - } - ] - }, - { - "name": "setBundleCreator", - "accounts": [ - { - "name": "admin", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleMasterAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "creator", - "isMut": false, - "isSigner": false, - "docs": [ - "CHECK safe as only the pubkey is read" - ] - }, - { - "name": "bundleCreatorAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "allowed", - "type": "bool" - } - ] - }, - { - "name": "initializeBundle", - "accounts": [ - { - "name": "creator", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleCreatorAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "treasuryAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "assetAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "name", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "keeper", - "type": "publicKey" - }, - { - "name": "depositFee", - "type": "u32" - }, - { - "name": "withdrawalFee", - "type": "u32" - }, - { - "name": "performanceFee", - "type": "u32" - }, - { - "name": "managementFeeBps", - "type": "u32" - }, - { - "name": "oracleBuffer", - "type": "u64" - }, - { - "name": "maxDepositAmount", - "type": "u64" - }, - { - "name": "withdrawalDelay", - "type": "u64" - }, - { - "name": "withdrawalTMin", - "type": "i64" - }, - { - "name": "withdrawalTMax", - "type": "i64" - }, - { - "name": "withdrawalCurve", - "type": "f32" - }, - { - "name": "permissionned", - "type": "bool" - } - ] - }, - { - "name": "initializeBundleDepositor", - "accounts": [ - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "authority", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "userBundleAccount", - "isMut": true, - "isSigner": false, - "docs": [ - "each user gets one UserBundleAccount account; it will be created if it doesn't exist." - ] - } - ], - "args": [] - }, - { - "name": "setOracleBuffer", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "oracleBuffer", - "type": "u64" - } - ] - }, - { - "name": "setDelays", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "withdrawalDelay", - "type": "u64" - }, - { - "name": "withdrawalTMin", - "type": "i64" - }, - { - "name": "withdrawalTMax", - "type": "i64" - }, - { - "name": "withdrawalCurve", - "type": "f32" - } - ] - }, - { - "name": "setMaxDepositAmount", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "maxDepositAmount", - "type": "u64" - } - ] - }, - { - "name": "setKeeper", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "newkeeper", - "type": "publicKey" - } - ] - }, - { - "name": "addStrategy", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "strategyAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "receiverAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "allocationBps", - "type": "u32" - } - ] - }, - { - "name": "removeStrategy", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "strategyAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "receiverAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "enableStrategy", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "strategyAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "receiverAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "updateAllocations", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "receiverAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "strategyAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "newAllocationBps", - "type": "u32" - } - ] - }, - { - "name": "changeManager", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "newManager", - "type": "publicKey" - } - ] - }, - { - "name": "setFees", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "treasury", - "type": "publicKey" - }, - { - "name": "depositFee", - "type": "u32" - }, - { - "name": "withdrawalFee", - "type": "u32" - }, - { - "name": "performanceFee", - "type": "u32" - }, - { - "name": "managementFeeBps", - "type": "u32" - } - ] - }, - { - "name": "updateOracle", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "newEquity", - "type": "u64" - } - ] - }, - { - "name": "applyFeesToUser", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "userBundleAccountOwner", - "isMut": true, - "isSigner": false - }, - { - "name": "userBundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAuthority", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "managerWithdraw", - "accounts": [ - { - "name": "manager", - "isMut": true, - "isSigner": true - }, - { - "name": "managerTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "assetAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "netPendingTransactions", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "pendingDepositTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "assetAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "pendingBundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "requestDeposit", - "accounts": [ - { - "name": "user", - "isMut": true, - "isSigner": true - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false, - "docs": [ - "user token account (source of funds)" - ] - }, - { - "name": "pendingDepositTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "treasuryAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "userBundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "assetAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "pendingBundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "processDeposit", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "userBundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "pendingDepositTokenAccount", - "isMut": true, - "isSigner": false, - "docs": [ - "the account holding the user's deposited asset before allocation." - ] - }, - { - "name": "userBundleAccountOwner", - "isMut": false, - "isSigner": false, - "docs": [ - "the owner of the pending request (for event purposes)." - ] - }, - { - "name": "assetAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "pendingBundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "refundDeposit", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "userBundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "userBundleAccountOwner", - "isMut": false, - "isSigner": false, - "docs": [ - "the owner of the pending request (for event purposes)." - ] - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "assetAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "requestWithdrawal", - "accounts": [ - { - "name": "user", - "isMut": true, - "isSigner": true - }, - { - "name": "userBundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "sharesAmount", - "type": "u128" - } - ] - }, - { - "name": "processWithdrawal", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "userBundleAccountOwner", - "isMut": false, - "isSigner": false - }, - { - "name": "userTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "assetAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "pendingBundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "userBundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "treasuryAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "pauseDepositsWithdrawals", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "pause", - "type": "bool" - } - ] - }, - { - "name": "startDistribution", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "endDistribution", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "performRefill", - "accounts": [ - { - "name": "receiverAddress", - "isMut": true, - "isSigner": true - }, - { - "name": "bundleAssetAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "receiverAta", - "isMut": true, - "isSigner": false - }, - { - "name": "assetAddress", - "isMut": false, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "strategyAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "refillAmount", - "type": "u64" - } - ] - }, - { - "name": "distributeToReceivers", - "accounts": [ - { - "name": "keeper", - "isMut": true, - "isSigner": true - }, - { - "name": "receiverAddress", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "receiverAta", - "isMut": true, - "isSigner": false - }, - { - "name": "assetAddress", - "isMut": false, - "isSigner": false - }, - { - "name": "oracleData", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleAssetAuthority", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "bundleAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "bundleTempData", - "isMut": true, - "isSigner": false - }, - { - "name": "strategyAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "BundleMasterAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "admin", - "type": "publicKey" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 96 - ] - } - } - ] - } - }, - { - "name": "BundleCreatorAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "allowed", - "type": "bool" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 64 - ] - } - } - ] - } - }, - { - "name": "UserBundleAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "owner", - "type": "publicKey" - }, - { - "name": "lastDepositTimestamp", - "type": "i64" - }, - { - "name": "shares", - "type": "u128" - }, - { - "name": "pendingDeposit", - "type": "u64" - }, - { - "name": "pendingShares", - "type": "u128" - }, - { - "name": "estimatedPendingWithdrawalValue", - "type": "u64" - }, - { - "name": "withdrawalAvailableTimestamp", - "type": "i64" - }, - { - "name": "lastWithdrawalProcessTimestamp", - "type": "i64" - }, - { - "name": "lastHighWaterMark", - "type": "u128" - }, - { - "name": "hwmPerShare", - "type": "u128" - }, - { - "name": "lastManagementFeeTimestamp", - "type": "i64" - }, - { - "name": "netDeposits", - "type": "i128" - }, - { - "name": "totalFeeCharged", - "type": "u64" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 264 - ] - } - } - ] - } - }, - { - "name": "OracleData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "averageExternalEquity", - "type": "u64" - }, - { - "name": "lastUpdateTime", - "type": "i64" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 64 - ] - } - } - ] - } - }, - { - "name": "Strategy", - "type": { - "kind": "struct", - "fields": [ - { - "name": "receiverAddress", - "type": "publicKey" - }, - { - "name": "allocationBps", - "type": "u32" - }, - { - "name": "allowed", - "type": "bool" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 96 - ] - } - } - ] - } - }, - { - "name": "BundleTempData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "cumulativePendingDeposits", - "type": "u64" - }, - { - "name": "pendingDepositsCounter", - "type": "u64" - }, - { - "name": "pendingWithdrawalsCounter", - "type": "u64" - }, - { - "name": "pendingLockedWithdrawalsCounter", - "type": "u64" - }, - { - "name": "lastTotalSharesMinted", - "type": "u128" - }, - { - "name": "lastNettingTimestamp", - "type": "i64" - }, - { - "name": "isNettingDone", - "type": "bool" - }, - { - "name": "distributionBaseAmount", - "type": "u64" - }, - { - "name": "isDistributionStarted", - "type": "bool" - }, - { - "name": "pausedDepositsWithdrawals", - "type": "bool" - }, - { - "name": "leftToDistribute", - "type": "u64" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 184 - ] - } - } - ] - } - }, - { - "name": "Bundle", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "manager", - "type": "publicKey" - }, - { - "name": "keeper", - "type": "publicKey" - }, - { - "name": "treasuryAccount", - "type": "publicKey" - }, - { - "name": "allocatedReceivers", - "type": { - "vec": "publicKey" - } - }, - { - "name": "bundleUnderlyingBalance", - "type": "u64" - }, - { - "name": "maxDepositAmount", - "type": "u64" - }, - { - "name": "withdrawalDelay", - "type": "u64" - }, - { - "name": "performanceFee", - "type": "u32" - }, - { - "name": "managementFeeBps", - "type": "u32" - }, - { - "name": "depositFee", - "type": "u32" - }, - { - "name": "withdrawalFee", - "type": "u32" - }, - { - "name": "managerPfeeShares", - "type": "u128" - }, - { - "name": "currentAllocationBps", - "type": "u32" - }, - { - "name": "oracleBuffer", - "type": "u64" - }, - { - "name": "totalShares", - "type": "u128" - }, - { - "name": "assetPrecision", - "type": "u64" - }, - { - "name": "assetAddress", - "type": "publicKey" - }, - { - "name": "assetDecimals", - "type": "u8" - }, - { - "name": "withdrawalTMin", - "type": "i64" - }, - { - "name": "withdrawalTMax", - "type": "i64" - }, - { - "name": "withdrawalCurve", - "type": "f32" - }, - { - "name": "permissionned", - "type": "bool" - }, - { - "name": "managerMfeeShares", - "type": "u128" - }, - { - "name": "padding", - "type": { - "array": [ - "u8", - 255 - ] - } - } - ] - } - } - ], - "events": [ - { - "name": "BundleDepositorInitialized", - "fields": [ - { - "name": "bundleDepositor", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "BundleMasterAccountInitialized", - "fields": [ - { - "name": "admin", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "BundleMasterAdminChanged", - "fields": [ - { - "name": "newAdmin", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "BundleCreatorAccountChanged", - "fields": [ - { - "name": "creator", - "type": "publicKey", - "index": false - }, - { - "name": "allowed", - "type": "bool", - "index": false - } - ] - }, - { - "name": "NettingCompleted", - "fields": [ - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "RefundedDeposit", - "fields": [ - { - "name": "user", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - }, - { - "name": "bundleAccountKey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "ChargedFeesToUser", - "fields": [ - { - "name": "totalFeeShares", - "type": "u128", - "index": false - }, - { - "name": "totalFeeValue", - "type": "u64", - "index": false - }, - { - "name": "managementFeeShares", - "type": "u128", - "index": false - }, - { - "name": "performanceFeeShares", - "type": "u128", - "index": false - }, - { - "name": "sharePrice", - "type": "u128", - "index": false - }, - { - "name": "bundleAccountKey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "WithdrawnFromDriftVault", - "fields": [ - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "from", - "type": "publicKey", - "index": false - }, - { - "name": "to", - "type": "publicKey", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "RequestedWithdrawalToDriftVault", - "fields": [ - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "from", - "type": "publicKey", - "index": false - }, - { - "name": "to", - "type": "publicKey", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "DepositedToDriftVault", - "fields": [ - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "from", - "type": "publicKey", - "index": false - }, - { - "name": "to", - "type": "publicKey", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "InitializedNewVaultDepositor", - "fields": [ - { - "name": "vault", - "type": "publicKey", - "index": false - }, - { - "name": "vaultDepositor", - "type": "publicKey", - "index": false - }, - { - "name": "keeper", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "OracleUpdated", - "fields": [ - { - "name": "averageExternalEquity", - "type": "u64", - "index": false - } - ] - }, - { - "name": "DistributionEnded", - "fields": [ - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "DistributionStarted", - "fields": [ - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "NewManagerSet", - "fields": [ - { - "name": "manager", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "NewKeeperSet", - "fields": [ - { - "name": "keeper", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "InitializedVault", - "fields": [ - { - "name": "manager", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "InitializedReceivers", - "fields": [ - { - "name": "manager", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "AuthorizedReceiverAdded", - "fields": [ - { - "name": "allowed", - "type": "bool", - "index": false - } - ] - }, - { - "name": "AuthorizedReceiverRemoved", - "fields": [ - { - "name": "allowed", - "type": "bool", - "index": false - } - ] - }, - { - "name": "Allocated", - "fields": [ - { - "name": "from", - "type": "publicKey", - "index": false - }, - { - "name": "to", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - }, - { - "name": "bundleAccountKey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "Redeemed", - "fields": [ - { - "name": "from", - "type": "publicKey", - "index": false - }, - { - "name": "to", - "type": "publicKey", - "index": false - }, - { - "name": "netAmount", - "type": "u64", - "index": false - }, - { - "name": "feeAmount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - }, - { - "name": "bundleAccountKey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "VaultNeutralFeeIncrementerSet", - "fields": [ - { - "name": "neutralFeeIncrementer", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "ChangedCoreParams", - "fields": [ - { - "name": "treasury", - "type": "publicKey", - "index": false - }, - { - "name": "depositFee", - "type": "u32", - "index": false - }, - { - "name": "withdrawalFee", - "type": "u32", - "index": false - }, - { - "name": "performanceFee", - "type": "u32", - "index": false - }, - { - "name": "managementFeeBps", - "type": "u32", - "index": false - } - ] - }, - { - "name": "AssignedProfitShare", - "fields": [ - { - "name": "amount", - "type": "u128", - "index": false - } - ] - }, - { - "name": "StrategyRemoved", - "fields": [ - { - "name": "receiverAddress", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "StrategyEnabled", - "fields": [ - { - "name": "receiverAddress", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "DistributedToReceivers", - "fields": [ - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "from", - "type": "publicKey", - "index": false - }, - { - "name": "receiver", - "type": "publicKey", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "StrategyAdded", - "fields": [ - { - "name": "receiverAddress", - "type": "publicKey", - "index": false - }, - { - "name": "allocationBps", - "type": "u32", - "index": false - } - ] - }, - { - "name": "AllocationsUpdated", - "fields": [ - { - "name": "receiverAddress", - "type": "publicKey", - "index": false - }, - { - "name": "allocationBps", - "type": "u32", - "index": false - } - ] - }, - { - "name": "Refilled", - "fields": [ - { - "name": "from", - "type": "publicKey", - "index": false - }, - { - "name": "refillValue", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "DepositRequested", - "fields": [ - { - "name": "user", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - }, - { - "name": "bundleAccountKey", - "type": "publicKey", - "index": false - }, - { - "name": "toppingUp", - "type": "bool", - "index": false - } - ] - }, - { - "name": "WithdrawalRequested", - "fields": [ - { - "name": "user", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u128", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - }, - { - "name": "cooldownPeriod", - "type": "i64", - "index": false - }, - { - "name": "estimatedPendingWithdrawalValue", - "type": "u64", - "index": false - }, - { - "name": "bundleAccountKey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "OracleBufferSet", - "fields": [ - { - "name": "oracleBuffer", - "type": "u64", - "index": false - } - ] - }, - { - "name": "DelaysSet", - "fields": [ - { - "name": "withdrawalDelay", - "type": "u64", - "index": false - }, - { - "name": "withdrawalTMin", - "type": "i64", - "index": false - }, - { - "name": "withdrawalTMax", - "type": "i64", - "index": false - }, - { - "name": "withdrawalCurve", - "type": "f32", - "index": false - } - ] - }, - { - "name": "MaxDepositAmountSet", - "fields": [ - { - "name": "maxDepositAmount", - "type": "u64", - "index": false - } - ] - }, - { - "name": "ManagerWithdrawal", - "fields": [ - { - "name": "managerShares", - "type": "u128", - "index": false - }, - { - "name": "redemptionAmount", - "type": "u64", - "index": false - } - ] - }, - { - "name": "PausedDepositsWithdrawals", - "fields": [ - { - "name": "paused", - "type": "bool", - "index": false - }, - { - "name": "bundleAccountKey", - "type": "publicKey", - "index": false - } - ] - } - ], - "errors": [ - { - "code": 6000, - "name": "InsufficientFunds", - "msg": "Insufficient funds to process withdrawal" - }, - { - "code": 6001, - "name": "AllocationAmountZero", - "msg": "Allocation amount must be > 0" - }, - { - "code": 6002, - "name": "RedemptionAmountExceeded", - "msg": "Redemption exceeds bundle balance" - }, - { - "code": 6003, - "name": "RefillAmountInvalid", - "msg": "Refill amount must be > 0" - }, - { - "code": 6004, - "name": "UnauthorizedKeeperAction", - "msg": "Not bundle keeper" - }, - { - "code": 6005, - "name": "UnauthorizedManagerAction", - "msg": "Not bundle manager" - }, - { - "code": 6006, - "name": "UnauthorizedAdminAction", - "msg": "Not bundle admin" - }, - { - "code": 6007, - "name": "UnauthorizedBundleCreator", - "msg": "Not whitelisted bundle creator" - }, - { - "code": 6008, - "name": "CallerNotNeutralFeeIncrementer", - "msg": "Not neutral fee incrementer" - }, - { - "code": 6009, - "name": "AmountMustBeBelowMax", - "msg": "Amount above max limit" - }, - { - "code": 6010, - "name": "InvalidNeutralFeeIncrementer", - "msg": "Invalid fee incrementer" - }, - { - "code": 6011, - "name": "InvalidReceiver", - "msg": "Invalid receiver address" - }, - { - "code": 6012, - "name": "MathError", - "msg": "Math error" - }, - { - "code": 6013, - "name": "InvalidAllocations", - "msg": "Invalid allocations" - }, - { - "code": 6014, - "name": "MustBeInWhitelist", - "msg": "Not in whitelist" - }, - { - "code": 6015, - "name": "DistributionAlreadyStarted", - "msg": "Distribution already started" - }, - { - "code": 6016, - "name": "DistributionNotStarted", - "msg": "Distribution not started" - }, - { - "code": 6017, - "name": "LeftToDistributeNotZero", - "msg": "Distribution amount not zero" - }, - { - "code": 6018, - "name": "ReceiverAlreadyAllocated", - "msg": "Receiver already allocated" - }, - { - "code": 6019, - "name": "RawTransferReceiver", - "msg": "Not a raw transfer receiver" - }, - { - "code": 6020, - "name": "InvalidTwapPeriod", - "msg": "Invalid twap period" - }, - { - "code": 6021, - "name": "RefillAmountExceeded", - "msg": "Refill amount exceeded" - }, - { - "code": 6022, - "name": "PodTokenTotalSupplyZero", - "msg": "Pod token total supply is zero" - }, - { - "code": 6023, - "name": "AllocationBpsGreaterThanGlobalAllocationBps", - "msg": "Allocation bps greater than global allocation bps" - }, - { - "code": 6024, - "name": "EquityOutOfBufferBound", - "msg": "Equity out of buffer bound" - }, - { - "code": 6025, - "name": "RedemptionAmountZero", - "msg": "Redemption amount must be > 0" - }, - { - "code": 6026, - "name": "PendingDepositExists", - "msg": "Pending deposit exists" - }, - { - "code": 6027, - "name": "InsufficientSharesBalance", - "msg": "Insufficient Shares balance" - }, - { - "code": 6028, - "name": "PendingWithdrawalExists", - "msg": "Pending withdrawal exists" - }, - { - "code": 6029, - "name": "PendingDepositOrWithdrawalExists", - "msg": "Pending deposit or withdrawal exists" - }, - { - "code": 6030, - "name": "NoPendingWithdrawal", - "msg": "No pending withdrawal" - }, - { - "code": 6031, - "name": "WithdrawalAlreadyProcessed", - "msg": "Withdrawal already processed" - }, - { - "code": 6032, - "name": "PendingDepositAmountZero", - "msg": "Pending deposit amount is zero" - }, - { - "code": 6033, - "name": "InsufficientBundleBalance", - "msg": "Insufficient bundle balance" - }, - { - "code": 6034, - "name": "NoPendingTransactions", - "msg": "No pending transactions" - }, - { - "code": 6035, - "name": "DepositsExtraInPendingsNotZero", - "msg": "Deposits extra in pendings not zero" - }, - { - "code": 6036, - "name": "PendingTransactionsExist", - "msg": "Pending transactions exist" - }, - { - "code": 6037, - "name": "ManagerSharesZero", - "msg": "Manager shares is zero" - }, - { - "code": 6038, - "name": "PausedDepositsWithdrawals", - "msg": "Paused deposits withdrawals" - }, - { - "code": 6039, - "name": "UnpausedDepositsWithdrawals", - "msg": "Unpaused deposits withdrawals" - }, - { - "code": 6040, - "name": "NettingNotDone", - "msg": "Netting not done" - }, - { - "code": 6041, - "name": "NettingAlreadyDone", - "msg": "Netting already done" - }, - { - "code": 6042, - "name": "OracleNotUpdated", - "msg": "Oracle not updated" - }, - { - "code": 6043, - "name": "MaxDepositAmountExceeded", - "msg": "Max deposit amount exceeded" - }, - { - "code": 6044, - "name": "TotalAssetExceedNewMaxDepositAmount", - "msg": "Total asset exceed new max deposit amount" - }, - { - "code": 6045, - "name": "AllocationBpsIsZero", - "msg": "Allocation bps is zero" - }, - { - "code": 6046, - "name": "DepositAmountZero", - "msg": "Deposit amount is zero" - }, - { - "code": 6047, - "name": "InvalidWithdrawalDelay", - "msg": "Invalid withdrawal delay" - }, - { - "code": 6048, - "name": "InvalidWithdrawalCooldownPeriod", - "msg": "Invalid withdrawal cooldown period" - }, - { - "code": 6049, - "name": "InvalidOracleBuffer", - "msg": "Invalid oracle buffer" - }, - { - "code": 6050, - "name": "ExcessivePerformanceFee", - "msg": "Excessive performance fee" - }, - { - "code": 6051, - "name": "ExcessiveManagementFee", - "msg": "Excessive management fee" - }, - { - "code": 6052, - "name": "ExcessiveDepositFee", - "msg": "Excessive deposit fee" - }, - { - "code": 6053, - "name": "ExcessiveWithdrawFee", - "msg": "Excessive withdraw fee" - }, - { - "code": 6054, - "name": "WithdrawalDelayNotMet", - "msg": "Withdrawal delay not met" - }, - { - "code": 6055, - "name": "InvalidAssetPrecision", - "msg": "Invalid asset precision" - }, - { - "code": 6056, - "name": "InvalidAssetAddress", - "msg": "Invalid asset address" - }, - { - "code": 6057, - "name": "InvalidPermissionnedDepositor", - "msg": "Invalid permissionned depositor" - }, - { - "code": 6058, - "name": "PayerNotAuthority", - "msg": "Payer is not the authority" - }, - { - "code": 6059, - "name": "StrategyAlreadyEnabled", - "msg": "Strategy is already enabled" - }, - { - "code": 6060, - "name": "StrategyDisabled", - "msg": "Strategy is disabled" - } - ] -} diff --git a/projects/neutral-trade/index.js b/projects/neutral-trade/index.js deleted file mode 100644 index 8bd2b4b6253..00000000000 --- a/projects/neutral-trade/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { - DRIFT_VAULTS, - KAMINO_VAULTS, - HYPERLIQUID_VAULTS, - NT_VAULTS, - START_TIMESTAMP, -} = require("./constants"); -const { getTvl: getDriftVaultTvl } = require("./utils/drift"); -const { getTvl: getKaminoVaultTvl } = require("./utils/kamino"); -const { getTvl: getHyperliquidVaultTvl } = require("./utils/hyperliquid"); -const { getTvl: getNtVaultTvl } = require("./utils/ntVaults"); - -async function drift_vaults_tvl(api) { - await getDriftVaultTvl(api, DRIFT_VAULTS.map(vault => vault.address)); -} - -async function kamino_vaults_tvl(api) { - for (const vault of KAMINO_VAULTS) { - const token_tvl = await getKaminoVaultTvl(vault.address); - api.add(vault.token.mint, token_tvl); - } -} - -async function hyperliquid_vaults_tvl(api) { - for (const vault of HYPERLIQUID_VAULTS) { - const token_tvl = await getHyperliquidVaultTvl(vault.address); - api.add(vault.token.mint, token_tvl); - } -} - -async function nt_vaults_tvl(api) { - for (const vault of NT_VAULTS) { - const token_tvl = await getNtVaultTvl(vault.address); - api.add(vault.token.mint, token_tvl); - } -} - -async function tvl(api) { - await drift_vaults_tvl(api); - await kamino_vaults_tvl(api); - await hyperliquid_vaults_tvl(api); - await nt_vaults_tvl(api); -} - - -module.exports = { - start: START_TIMESTAMP, - timetravel: false, - doublecounted: false, - methodology: "The combined TVL and PnL of all public and private vaults.", - solana: { tvl }, -}; diff --git a/projects/neutral-trade/utils/drift.js b/projects/neutral-trade/utils/drift.js deleted file mode 100644 index 96787f63c07..00000000000 --- a/projects/neutral-trade/utils/drift.js +++ /dev/null @@ -1,2122 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -const { PublicKey } = require("@solana/web3.js"); -const anchor = require('@coral-xyz/anchor'); -const { getConfig } = require('../../helper/cache'); -const { getMultipleAccounts } = require('../../helper/solana'); -const { DRIFT_PROGRAM_ID } = require("../constants"); -const { LAMPORTS_PER_SOL } = require('@solana/web3.js'); - - -// copied from https://github.com/drift-labs/protocol-v2/blob/master/sdk/src/constants/ -const QUOTE_PRECISION_EXP = 6; -const QUOTE_PRECISION = Math.pow(10, QUOTE_PRECISION_EXP); -const LAMPORTS_PRECISION = LAMPORTS_PER_SOL; -const LAMPORTS_EXP = Math.log10(LAMPORTS_PER_SOL); -const WRAPPED_SOL_MINT = ADDRESSES.solana.SOL; -const OracleSource = {}; // mock - -const MainnetSpotMarkets = [ - { - symbol: 'USDC', - marketIndex: 0, - poolId: 0, - oracle: new PublicKey('9VCioxmni2gDLv11qufWzT3RDERhQE4iY5Gf7NTfYyAV'), - oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN, - mint: new PublicKey(ADDRESSES.solana.USDC), - precision: QUOTE_PRECISION, - precisionExp: QUOTE_PRECISION_EXP, - pythFeedId: - '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a', - pythLazerId: 7, - }, - { - symbol: 'SOL', - marketIndex: 1, - poolId: 0, - oracle: new PublicKey('3m6i4RFWEDw2Ft4tFHPJtYgmpPe21k56M3FHeWYrgGBz'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey(WRAPPED_SOL_MINT), - precision: LAMPORTS_PRECISION, - precisionExp: LAMPORTS_EXP, - serumMarket: new PublicKey('8BnEgHoWFysVcuFFX7QztDmzuH8r5ZFvyP3sYwn1XTh6'), - phoenixMarket: new PublicKey( - '4DoNfFBfF7UokCC2FQzriy7yHK6DY6NVdYpuekQ5pRgg' - ), - openbookMarket: new PublicKey( - 'AFgkED1FUVfBe2trPUDqSqK9QKd4stJrfzq5q1RwAFTa' - ), - pythFeedId: - '0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d', - pythLazerId: 6, - }, - { - symbol: 'mSOL', - marketIndex: 2, - poolId: 0, - oracle: new PublicKey('FAq7hqjn7FWGXKDwJHzsXGgBcydGTcK4kziJpAGWXjDb'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So'), - precision: Math.pow(10, 9), - precisionExp: 9, - serumMarket: new PublicKey('9Lyhks5bQQxb9EyyX55NtgKQzpM4WK7JCmeaWuQ5MoXD'), - pythFeedId: - '0xc2289a6a43d2ce91c6f55caec370f4acc38a2ed477f58813334c6d03749ff2a4', - }, - { - symbol: 'wBTC', - marketIndex: 3, - poolId: 0, - oracle: new PublicKey('fqPfDa6uQr9ndMvwaFp4mUBeUrHmLop8Jxfb1XJNmVm'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh'), - precision: Math.pow(10, 8), - precisionExp: 8, - serumMarket: new PublicKey('3BAKsQd3RuhZKES2DGysMhjBdwjZYKYmxRqnSMtZ4KSN'), - pythFeedId: - '0xc9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33', - pythLazerId: 103, - }, - { - symbol: 'wETH', - marketIndex: 4, - poolId: 0, - oracle: new PublicKey('6bEp2MiyoiiiDxcVqE8rUHQWwHirXUXtKfAEATTVqNzT'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs'), - precision: Math.pow(10, 8), - precisionExp: 8, - serumMarket: new PublicKey('BbJgE7HZMaDp5NTYvRh5jZSkQPVDTU8ubPFtpogUkEj4'), - phoenixMarket: new PublicKey( - 'Ew3vFDdtdGrknJAVVfraxCA37uNJtimXYPY4QjnfhFHH' - ), - openbookMarket: new PublicKey( - 'AT1R2jUNb9iTo4EaRfKSTPiNTX4Jb64KSwnVmig6Hu4t' - ), - pythFeedId: - '0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace', - }, - { - symbol: 'USDT', - marketIndex: 5, - poolId: 0, - oracle: new PublicKey('JDKJSkxjasBGL3ce1pkrN6tqDzuVUZPWzzkGuyX8m9yN'), - oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN, - mint: new PublicKey(ADDRESSES.solana.USDT), - precision: QUOTE_PRECISION, - precisionExp: QUOTE_PRECISION_EXP, - serumMarket: new PublicKey('B2na8Awyd7cpC59iEU43FagJAPLigr3AP3s38KM982bu'), - pythFeedId: - '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b', - pythLazerId: 8, - }, - { - symbol: 'jitoSOL', - marketIndex: 6, - poolId: 0, - oracle: new PublicKey('9QE1P5EfzthYDgoQ9oPeTByCEKaRJeZbVVqKJfgU9iau'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn'), - precision: Math.pow(10, 9), - precisionExp: 9, - serumMarket: new PublicKey('DkbVbMhFxswS32xnn1K2UY4aoBugXooBTxdzkWWDWRkH'), - phoenixMarket: new PublicKey( - '5LQLfGtqcC5rm2WuGxJf4tjqYmDjsQAbKo2AMLQ8KB7p' - ), - pythFeedId: - '0x67be9f519b95cf24338801051f9a808eff0a578ccb388db73b7f6fe1de019ffb', - }, - { - symbol: 'PYTH', - marketIndex: 7, - poolId: 0, - oracle: new PublicKey('6Sfx8ZAt6xaEgMXTahR6GrT7oYB6nFBMoVyCmMyHmeJV'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3'), - precision: Math.pow(10, 6), - precisionExp: 6, - serumMarket: new PublicKey('4E17F3BxtNVqzVsirxguuqkpYLtFgCR6NfTpccPh82WE'), - phoenixMarket: new PublicKey( - '2sTMN9A1D1qeZLF95XQgJCUPiKe5DiV52jLfZGqMP46m' - ), - pythFeedId: - '0x0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff', - pythLazerId: 3, - }, - { - symbol: 'bSOL', - marketIndex: 8, - poolId: 0, - oracle: new PublicKey('BmDWPMsytWmYkh9n6o7m79eVshVYf2B5GVaqQ2EWKnGH'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1'), - precision: Math.pow(10, 9), - precisionExp: 9, - serumMarket: new PublicKey('ARjaHVxGCQfTvvKjLd7U7srvk6orthZSE6uqWchCczZc'), - pythFeedId: - '0x89875379e70f8fbadc17aef315adf3a8d5d160b811435537e03c97e8aac97d9c', - }, - { - symbol: 'JTO', - marketIndex: 9, - poolId: 0, - oracle: new PublicKey('CGCz4mB8NsDddCq6BZToRUDUuktzsAfpKYh6ATgyyCGF'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL'), - precision: Math.pow(10, 9), - precisionExp: 9, - serumMarket: new PublicKey('H87FfmHABiZLRGrDsXRZtqq25YpARzaokCzL1vMYGiep'), - phoenixMarket: new PublicKey( - 'BRLLmdtPGuuFn3BU6orYw4KHaohAEptBToi3dwRUnHQZ' - ), - pythFeedId: - '0xb43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2', - pythLazerId: 91, - }, - { - symbol: 'WIF', - marketIndex: 10, - poolId: 0, - oracle: new PublicKey('4QXWStoyEErTZFVsvKrvxuNa6QT8zpeA8jddZunSGvYE'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm'), - precision: Math.pow(10, 6), - precisionExp: 6, - serumMarket: new PublicKey('2BtDHBTCTUxvdur498ZEcMgimasaFrY5GzLv8wS8XgCb'), - phoenixMarket: new PublicKey( - '6ojSigXF7nDPyhFRgmn3V9ywhYseKF9J32ZrranMGVSX' - ), - openbookMarket: new PublicKey( - 'CwGmEwYFo7u5D7vghGwtcCbRToWosytaZa3Ys3JAto6J' - ), - pythFeedId: - '0x4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc', - pythLazerId: 10, - }, - { - symbol: 'JUP', - marketIndex: 11, - poolId: 0, - oracle: new PublicKey('DXqKSHyhTBKEW4qgnL7ycbf3Jca5hCvUgWHFYWsh4KJa'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN'), - precision: Math.pow(10, 6), - precisionExp: 6, - phoenixMarket: new PublicKey( - '2pspvjWWaf3dNgt3jsgSzFCNvMGPb7t8FrEYvLGjvcCe' - ), - launchTs: 1706731200000, - pythFeedId: - '0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996', - pythLazerId: 92, - }, - { - symbol: 'RENDER', - marketIndex: 12, - poolId: 0, - oracle: new PublicKey('97EqsAGbTnShB7oYWAFFCVVAx8PWXgDYDhcpm99izNQ4'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof'), - precision: Math.pow(10, 8), - precisionExp: 8, - serumMarket: new PublicKey('2m7ZLEKtxWF29727DSb5D91erpXPUY1bqhRWRC3wQX7u'), - launchTs: 1708964021000, - pythFeedId: - '0x3d4a2bd9535be6ce8059d75eadeba507b043257321aa544717c56fa19b49e35d', - pythLazerId: 34, - }, - { - symbol: 'W', - marketIndex: 13, - poolId: 0, - oracle: new PublicKey('CsFUXiA5dM4eCKjVBBy8tXhXzDkDRNoYjU5rjpHyfNEZ'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('85VBFQZC9TZkfaptBWjvUw7YbZjy52A6mjtPGjstQAmQ'), - precision: Math.pow(10, 6), - precisionExp: 6, - phoenixMarket: new PublicKey( - '8dFTCTAbtGuHsdDL8WEPrTU6pXFDrU1QSjBTutw8fwZk' - ), - launchTs: 1712149014000, - pythFeedId: - '0xeff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389', - pythLazerId: 102, - }, - { - symbol: 'TNSR', - marketIndex: 14, - poolId: 0, - oracle: new PublicKey('EX6r1GdfsgcUsY6cQ6YsToV4RGsb4HKpjrkokK2DrmsS'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('TNSRxcUxoT9xBG3de7PiJyTDYu7kskLqcpddxnEJAS6'), - precision: Math.pow(10, 9), - precisionExp: 9, - phoenixMarket: new PublicKey( - 'AbJCZ9TAJiby5AY3cHcXS2gUdENC6mtsm6m7XpC2ZMvE' - ), - launchTs: 1712593532000, - pythFeedId: - '0x05ecd4597cd48fe13d6cc3596c62af4f9675aee06e2e0b94c06d8bee2b659e05', - pythLazerId: 99, - }, - { - symbol: 'DRIFT', - marketIndex: 15, - poolId: 0, - oracle: new PublicKey('5VJou4ufN2vE11zyZUaLsKLTXhyzCTgiq6QDsts2YnnD'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('DriFtupJYLTosbwoN8koMbEYSx54aFAVLddWsbksjwg7'), - precision: Math.pow(10, 6), - precisionExp: 6, - phoenixMarket: new PublicKey( - '8BV6rrWsUabnTDA3dE6A69oUDJAj3hMhtBHTJyXB7czp' - ), - launchTs: 1715860800000, - pythFeedId: - '0x5c1690b27bb02446db17cdda13ccc2c1d609ad6d2ef5bf4983a85ea8b6f19d07', - pythLazerId: 249, - }, - { - symbol: 'INF', - marketIndex: 16, - poolId: 0, - oracle: new PublicKey('B7RUYg2zF6UdUSHv2RmpnriPVJccYWojgFydNS1NY5F8'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm'), - precision: Math.pow(10, 9), - precisionExp: 9, - launchTs: 1716595200000, - pythFeedId: - '0xf51570985c642c49c2d6e50156390fdba80bb6d5f7fa389d2f012ced4f7d208f', - }, - { - symbol: 'dSOL', - marketIndex: 17, - poolId: 0, - oracle: new PublicKey('4YstsHafLyDbYFxmJbgoEr33iJJEp6rNPgLTQRgXDkG2'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('Dso1bDeDjCQxTrWHqUUi63oBvV7Mdm6WaobLbQ7gnPQ'), - precision: Math.pow(10, 9), - precisionExp: 9, - launchTs: 1716595200000, - pythFeedId: - '0x41f858bae36e7ee3f4a3a6d4f176f0893d4a261460a52763350d00f8648195ee', - }, - { - symbol: 'USDY', - marketIndex: 18, - poolId: 0, - oracle: new PublicKey('9PgHM68FNGDK6nHb29ERDBcFrV6gNMD8LyUqwxbyyeb2'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6'), - precision: Math.pow(10, 6), - precisionExp: 6, - launchTs: 1718811089000, - pythFeedId: - '0xe393449f6aff8a4b6d3e1165a7c9ebec103685f3b41e60db4277b5b6d10e7326', - pythLazerId: 276, - }, - { - symbol: 'JLP', - marketIndex: 19, - poolId: 0, - oracle: new PublicKey('5Mb11e5rt1Sp6A286B145E4TmgMzsM2UX9nCF2vas5bs'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4'), - precision: Math.pow(10, 6), - precisionExp: 6, - launchTs: 1719415157000, - pythFeedId: - '0xc811abc82b4bad1f9bd711a2773ccaa935b03ecef974236942cec5e0eb845a3a', - }, - { - symbol: 'POPCAT', - marketIndex: 20, - poolId: 0, - oracle: new PublicKey('C5fiAmQyjdfDR4EGepZqnEL3fJwMBav5yoAk6XyKMF6u'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr'), - precision: Math.pow(10, 9), - precisionExp: 9, - launchTs: 1720013054000, - phoenixMarket: new PublicKey( - '31XgvAQ1HgFQEk31KdszbPkVXKaQqB1bgYZPoDrFpSR2' - ), - pythFeedId: - '0xb9312a7ee50e189ef045aa3c7842e099b061bd9bdc99ac645956c3b660dc8cce', - pythLazerId: 130, - }, - { - symbol: 'CLOUD', - marketIndex: 21, - poolId: 0, - oracle: new PublicKey('9Ennia27iT83kNAk3JtRKxSMzuCzsVtT4MzuxpE7anME'), - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x7358313661dcd4f842a1423aa4f7a05f009001c9113201c719621d3f1aa80a73', - mint: new PublicKey('CLoUDKc4Ane7HeQcPpE3YHnznRxhMimJ4MyaUqyHFzAu'), - precision: Math.pow(10, 9), - precisionExp: 9, - launchTs: 1721316817000, - pythLazerId: 404, - }, - { - symbol: 'PYUSD', - marketIndex: 22, - poolId: 0, - oracle: new PublicKey('5QZMnsyndmphvZF4BNgoMHwVZaREXeE2rpBoCPMxgCCd'), - oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN, - mint: new PublicKey('2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0xc1da1b73d7f01e7ddd54b3766cf7fcd644395ad14f70aa706ec5384c59e76692', - pythLazerId: 156, - }, - { - symbol: 'USDe', - marketIndex: 23, - poolId: 0, - oracle: new PublicKey('5uR6oza6teuMRpjsbMi9fDhCDid2hoYdRBiLW7WzcK54'), - oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN, - mint: new PublicKey('DEkqHyPN7GMRJ5cArtQFAWefqbZb33Hyf6s5iCwjEonT'), - precision: Math.pow(10, 9), - precisionExp: 9, - pythFeedId: - '0x6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d', - pythLazerId: 204, - }, - { - symbol: 'sUSDe', - marketIndex: 24, - poolId: 0, - oracle: new PublicKey('BRuNuzLAPHHGSSVAJPKMcmJMdgDfrekvnSxkxPDGdeqp'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('Eh6XEPhSwoLv5wFApukmnaVSHQ6sAnoD9BmgmwQoN2sN'), - precision: Math.pow(10, 9), - precisionExp: 9, - pythFeedId: - '0xca3ba9a619a4b3755c10ac7d5e760275aa95e9823d38a84fedd416856cdba37c', - }, - { - symbol: 'BNSOL', - marketIndex: 25, - poolId: 0, - oracle: new PublicKey('8DmXTfhhtb9kTcpTVfb6Ygx8WhZ8wexGqcpxfn23zooe'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('BNso1VUJnh4zcfpZa6986Ea66P6TCp59hvtNJ8b1X85'), - precision: LAMPORTS_PRECISION, - precisionExp: LAMPORTS_EXP, - pythFeedId: - '0x55f8289be7450f1ae564dd9798e49e7d797d89adbc54fe4f8c906b1fcb94b0c3', - }, - { - symbol: 'MOTHER', - marketIndex: 26, - poolId: 0, - oracle: new PublicKey('469WQgfJ6AJ3eJ8FUcdhiZawf7yNChA3hseTSyhFatHZ'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('3S8qX1MsMqRbiwKg2cQyx7nis1oHMgaCuc9c4VfvVdPN'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x62742a997d01f7524f791fdb2dd43aaf0e567d765ebf8fd0406a994239e874d4', - pythLazerId: 501, - }, - { - symbol: 'cbBTC', - marketIndex: 27, - poolId: 0, - oracle: new PublicKey('9jPy6EHpLkXaMdvfkoVnRnSdJoQysQDKKj3bW5Amz4Ci'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij'), - precision: Math.pow(10, 8), - precisionExp: 8, - openbookMarket: new PublicKey( - '2HXgKaXKsMUEzQaSBZiXSd54eMHaS3roiefyGWtkW97W' - ), - pythFeedId: - '0x2817d7bfe5c64b8ea956e9a26f573ef64e72e4d7891f2d6af9bcc93f7aff9a97', - }, - { - symbol: 'USDS', - marketIndex: 28, - poolId: 0, - oracle: new PublicKey('7pT9mxKXyvfaZKeKy1oe2oV2K1RFtF7tPEJHUY3h2vVV'), - oracleSource: OracleSource.PYTH_STABLE_COIN_PULL, - mint: new PublicKey('USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x77f0971af11cc8bac224917275c1bf55f2319ed5c654a1ca955c82fa2d297ea1', - }, - { - symbol: 'META', - marketIndex: 29, - poolId: 0, - oracle: new PublicKey('DwYF1yveo8XTF1oqfsqykj332rjSxAd7bR6Gu6i4iUET'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('METADDFL6wWMWEoKTFJwcThTbUmtarRJZjRpzUvkxhr'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'ME', - marketIndex: 30, - poolId: 0, - oracle: new PublicKey('BboTg1yT114FQkqT6MM3P3G3CcCktuM2RePgU8Gr3K4A'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('MEFNBXixkEbait3xn9bkm8WsJzXtVsaJEn4c8Sam21u'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x91519e3e48571e1232a85a938e714da19fe5ce05107f3eebb8a870b2e8020169', - pythLazerId: 93, - }, - { - symbol: 'PENGU', - marketIndex: 31, - poolId: 0, - oracle: new PublicKey('4A3KroGPjZxPAeBNF287V3NyRwV2q8iBi1vX7kHxTCh7'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0xbed3097008b9b5e3c93bec20be79cb43986b85a996475589351a21e67bae9b61', - pythLazerId: 97, - }, - { - symbol: 'BONK', - marketIndex: 32, - poolId: 0, - oracle: new PublicKey('BERaNi6cpEresbq6HC1EQGaB1H1UjvEo4NGnmYSSJof4'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey(ADDRESSES.solana.BONK), - precision: Math.pow(10, 5), - precisionExp: 5, - pythFeedId: - '0x72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419', - openbookMarket: new PublicKey( - 'D3gZwng2MgZGjktYcKpbR8Bz8653i4qCgzHCf5E4TcZb' - ), - launchTs: 1734717937000, - pythLazerId: 9, - }, - { - symbol: 'JLP-1', - marketIndex: 33, - poolId: 1, - oracle: new PublicKey('3ZLn5XDgSLWhTk2NjqAU44cPkSeC5JAhW5o6w5Nz4p8R'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x6704952e00b6a088b6dcdb8170dcd591eaf64cff9e996ca75ae0ca55bfb96687', - launchTs: 1735255852000, - }, - { - symbol: 'USDC-1', - marketIndex: 34, - poolId: 1, - oracle: new PublicKey('9VCioxmni2gDLv11qufWzT3RDERhQE4iY5Gf7NTfYyAV'), - oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN, - mint: new PublicKey(ADDRESSES.solana.USDC), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a', - launchTs: 1735255852000, - pythLazerId: 7, - }, - { - symbol: 'AI16Z', - marketIndex: 35, - poolId: 0, - oracle: new PublicKey('3BGheQVvYtBNpBKSUXSTjpyKQc3dh8iiwT91Aiq7KYCU'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC'), - precision: Math.pow(10, 9), - precisionExp: 9, - pythFeedId: - '0x2551eca7784671173def2c41e6f3e51e11cd87494863f1d208fdd8c64a1f85ae', - launchTs: 1736384970000, - pythLazerId: 171, - }, - { - symbol: 'TRUMP', - marketIndex: 36, - poolId: 0, - oracle: new PublicKey('FPQjZYvHRGy51guJ77p7n9u9b8eo1ktKRc2D2g5Vysth'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x879551021853eec7a7dc827578e8e69da7e4fa8148339aa0d3d5296405be4b1a', - launchTs: 1737219250000, - pythLazerId: 203, - }, - { - symbol: 'MELANIA', - marketIndex: 37, - poolId: 0, - oracle: new PublicKey('3RgNWYYcZCKf5uZfriK8ASUbGQErhH6YbpdvZQ7ZKDCf'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('FUAfBo2jgks6gB4Z4LfZkqSZgzNucisEHqnNebaRxM1P'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x8fef7d52c7f4e3a6258d663f9d27e64a1b6fd95ab5f7d545dbf9a515353d0064', - launchTs: 1737360280000, - pythLazerId: 145, - }, - { - symbol: 'AUSD', - marketIndex: 38, - poolId: 0, - oracle: new PublicKey('8FZhpiM8n3mpgvENWLcEvHsKB1bBhYBAyL4Ypr4gptLZ'), - oracleSource: OracleSource.PYTH_STABLE_COIN_PULL, - mint: new PublicKey('AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0xd9912df360b5b7f21a122f15bdd5e27f62ce5e72bd316c291f7c86620e07fb2a', - launchTs: 1738255943000, - }, - { - symbol: 'FARTCOIN', - marketIndex: 39, - poolId: 0, - oracle: new PublicKey('2sZomfWMDuQLcFak3nuharXorHrZ3hK8iaML6ZGSHtso'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythLazerId: 182, - launchTs: 1743086746000, - }, - { - symbol: 'JitoSOL-3', - marketIndex: 40, - poolId: 3, - oracle: new PublicKey('Fqv8vT5fdjvBbHd5k4B4ZvnXLH6bbdKP8cMv93ybCP8W'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn'), - precision: Math.pow(10, 9), - precisionExp: 9, - serumMarket: new PublicKey('DkbVbMhFxswS32xnn1K2UY4aoBugXooBTxdzkWWDWRkH'), - phoenixMarket: new PublicKey( - '5LQLfGtqcC5rm2WuGxJf4tjqYmDjsQAbKo2AMLQ8KB7p' - ), - pythFeedId: - '0x67be9f519b95cf24338801051f9a808eff0a578ccb388db73b7f6fe1de019ffb', - }, - { - symbol: 'PT-fragSOL-10JUL25-3', - marketIndex: 41, - poolId: 3, - oracle: new PublicKey('CLjvwowzQ2L9PrmXA6zqbamxLVeDY9vE87aBxMZLJLoY'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('8adRViFUNTe3yexj2gbQtx929zBJtWJRM8TeTzYbQBgx'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'PT-kySOL-15JUN25-3', - marketIndex: 42, - poolId: 3, - oracle: new PublicKey('G4FdLzuezfaJxBd8eChuw1NU4Sq3n1rasGTwSh7dXegN'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('FxT7bPGvkS5jKF2vgnJ16MciHqtsNqxbcWTfFg7L136h'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'PT-dSOL-30JUN25-3', - marketIndex: 43, - poolId: 3, - oracle: new PublicKey('BR4NCRe2R8shvDAskUt6HE3n8Ej8HdMnVqshLz97BMm9'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('8H3tZ7WcgYPKEQ7fCCAFQuaNqKdMH1EtBp2ovUPpRK3k'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'JTO-3', - marketIndex: 44, - poolId: 3, - oracle: new PublicKey('DPvVSQYhZXQ2ygfT2Qjdg6iyeQVAyiz8okj88YRjy6NN'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'zBTC', - marketIndex: 45, - poolId: 0, - oracle: new PublicKey('CN9QvvbGQzMnN8vJaSek2so4vFnTqgJDFrdJB8Y4tQfB'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('zBTCug3er3tLyffELcvDNrKkCymbPWysGcWihESYfLg'), - precision: Math.pow(10, 8), - precisionExp: 8, - pythFeedId: - '0x3d824c7f7c26ed1c85421ecec8c754e6b52d66a4e45de20a9c9ea91de8b396f9', - launchTs: 1747155600000, - }, - { - symbol: 'ZEUS', - marketIndex: 46, - poolId: 0, - oracle: new PublicKey('8cH72H3vqYPArV9QvkYJkwzTdsdNPPgVPrusz9sMmgNN'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('ZEUS1aR7aX8DFFJf5QjWj2ftDDdNTroMNGo8YoQm3Gq'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x31558e9ccb18c151af6c52bf78afd03098a7aca1b9cf171a65b693b464c2f066', - launchTs: 1747155600000, - pythLazerId: 643, - }, - { - symbol: 'USDC-4', - marketIndex: 47, - poolId: 4, - oracle: new PublicKey('9VCioxmni2gDLv11qufWzT3RDERhQE4iY5Gf7NTfYyAV'), - oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN, - mint: new PublicKey(ADDRESSES.solana.USDC), - precision: QUOTE_PRECISION, - precisionExp: QUOTE_PRECISION_EXP, - pythFeedId: - '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a', - pythLazerId: 7, - launchTs: 1747494165000, - }, - { - symbol: 'USDT-4', - marketIndex: 48, - poolId: 4, - oracle: new PublicKey('JDKJSkxjasBGL3ce1pkrN6tqDzuVUZPWzzkGuyX8m9yN'), - oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN, - mint: new PublicKey(ADDRESSES.solana.USDT), - precision: QUOTE_PRECISION, - precisionExp: QUOTE_PRECISION_EXP, - serumMarket: new PublicKey('B2na8Awyd7cpC59iEU43FagJAPLigr3AP3s38KM982bu'), - pythFeedId: - '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b', - pythLazerId: 8, - }, - { - symbol: 'SOL-2', - marketIndex: 49, - poolId: 2, - oracle: new PublicKey('3PiwrLLyiuWaxS7zJL5znGR9iYD3KWubZThdQzsCdg2e'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey(WRAPPED_SOL_MINT), - precision: LAMPORTS_PRECISION, - precisionExp: LAMPORTS_EXP, - }, - { - symbol: 'JitoSOL-2', - marketIndex: 50, - poolId: 2, - oracle: new PublicKey('Fqv8vT5fdjvBbHd5k4B4ZvnXLH6bbdKP8cMv93ybCP8W'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'JTO-2', - marketIndex: 51, - poolId: 2, - oracle: new PublicKey('DPvVSQYhZXQ2ygfT2Qjdg6iyeQVAyiz8okj88YRjy6NN'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'dfdvSOL', - marketIndex: 52, - poolId: 0, - oracle: new PublicKey('EUQQD2fNN7h7su5TbWpUnf22zeGtF3RjEX2hgX2YPfLd'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('sctmB7GPi5L2Q5G9tUSzXvhZ4YiDMEGcRov9KfArQpx'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'sACRED', - marketIndex: 53, - poolId: 4, - oracle: new PublicKey('GheMfcCB49SuVCWrFReQDD2tLkcPDMG3qZEZWU44mHu'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('59CwZq5b6drmDizgGfxECG7f16hxDpG1nXrxPoQx4y8g'), - precision: Math.pow(10, 6), - precisionExp: 6, - }, - { - symbol: 'EURC', - marketIndex: 54, - poolId: 0, - oracle: new PublicKey('BkdSPLmw4W6twrJjAePw2bJAwDTBtxJ9t6LvNHfcBKg1'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x76fa85158bf14ede77087fe3ae472f66213f6ea2f5b411cb2de472794990fa5c', - pythLazerId: 240, - }, - { - symbol: 'PT-fragSOL-31OCT25-3', - marketIndex: 55, - poolId: 3, - oracle: new PublicKey('C41YpBLZfERAbV1p8DD48vDwbYhRQCbiryMx8Vp5sfo4'), - oracleSource: OracleSource.SWITCHBOARD_ON_DEMAND, - mint: new PublicKey('Aby6y5DYtTrhQD8i7JXLs4H3jdUTwSXDraYqnwn5tKbt'), - precision: Math.pow(10, 9), - precisionExp: 9, - }, - { - symbol: 'PUMP', - marketIndex: 56, - poolId: 0, - oracle: new PublicKey('5r8RWTaRiMgr9Lph3FTUE3sGb1vymhpCrm83Bovjfcps'), - oracleSource: OracleSource.PYTH_LAZER, - mint: new PublicKey('pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x7a01fca212788bba7c5bf8c9efd576a8a722f070d2c17596ff7bb609b8d5c3b9', - pythLazerId: 1578, - }, - { - symbol: 'syrupUSDC', - marketIndex: 57, - poolId: 0, - oracle: new PublicKey('GqqkoqHU5pqgTvL88xSCipH9txbPETyzvAvybQ3zRpzw'), - oracleSource: OracleSource.PYTH_PULL, - mint: new PublicKey('AvZZF1YaZDziPY2RCK4oJrRVrbN3mTD9NL24hPeaZeUj'), - precision: Math.pow(10, 6), - precisionExp: 6, - pythFeedId: - '0x2ad31d1c4a85fbf2156ce57fab4104124c5ef76a6386375ecfc8da1ed5ce1486', - }, -]; - -const MainnetPerpMarkets = [ - { - fullName: 'Solana', - category: ['L1', 'Infra', 'Solana'], - symbol: 'SOL-PERP', - baseAssetSymbol: 'SOL', - marketIndex: 0, - oracle: new PublicKey('3m6i4RFWEDw2Ft4tFHPJtYgmpPe21k56M3FHeWYrgGBz'), - launchTs: 1667560505000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d', - pythLazerId: 6, - }, - { - fullName: 'Bitcoin', - category: ['L1', 'Payment'], - symbol: 'BTC-PERP', - baseAssetSymbol: 'BTC', - marketIndex: 1, - oracle: new PublicKey('35MbvS1Juz2wf7GsyHrkCw8yfKciRLxVpEhfZDZFrB4R'), - launchTs: 1670347281000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43', - pythLazerId: 1, - }, - { - fullName: 'Ethereum', - category: ['L1', 'Infra'], - symbol: 'ETH-PERP', - baseAssetSymbol: 'ETH', - marketIndex: 2, - oracle: new PublicKey('93FG52TzNKCnMiasV14Ba34BYcHDb9p4zK4GjZnLwqWR'), - launchTs: 1670347281000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace', - pythLazerId: 2, - }, - { - fullName: 'Aptos', - category: ['L1', 'Infra'], - symbol: 'APT-PERP', - baseAssetSymbol: 'APT', - marketIndex: 3, - oracle: new PublicKey('CXZhzKePYajrZgZyrzgvHYFKK3c5tNgDrRobAgySo8Nb'), - launchTs: 1675802661000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5', - pythLazerId: 28, - }, - { - fullName: 'Bonk', - category: ['Meme', 'Solana'], - symbol: '1MBONK-PERP', - baseAssetSymbol: '1MBONK', - marketIndex: 4, - oracle: new PublicKey('BERaNi6cpEresbq6HC1EQGaB1H1UjvEo4NGnmYSSJof4'), - launchTs: 1677690149000, - oracleSource: OracleSource.PYTH_LAZER_1M, - pythFeedId: - '0x72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419', - pythLazerId: 9, - }, - { - fullName: 'Polygon', - category: ['L2', 'Infra'], - symbol: 'POL-PERP', - baseAssetSymbol: 'POL', - marketIndex: 5, - oracle: new PublicKey('HDveCibToLf157NtUqShCEWX3GcF4Aq8Ngt2bst1s1cc'), - launchTs: 1677690149000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xffd11c5a1cfd42f80afb2df4d9f264c15f956d68153335374ec10722edd70472', - pythLazerId: 32, - }, - { - fullName: 'Arbitrum', - category: ['L2', 'Infra'], - symbol: 'ARB-PERP', - baseAssetSymbol: 'ARB', - marketIndex: 6, - oracle: new PublicKey('5DYEjGpr28q3EsLKAnLXiDq6UeaFgDFZ5Gdwgp5RmPAp'), - launchTs: 1679501812000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x3fa4252848f9f0a1480be62745a4629d9eb1322aebab8a791e344b3b9c1adcf5', - pythLazerId: 37, - }, - { - fullName: 'Doge', - category: ['Meme', 'Dog'], - symbol: 'DOGE-PERP', - baseAssetSymbol: 'DOGE', - marketIndex: 7, - oracle: new PublicKey('GqjDJZu9bNCebq5PTUbjRrgw1LK84GEexVjrfYJ76YXc'), - launchTs: 1680808053000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xdcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c', - pythLazerId: 13, - }, - { - fullName: 'Binance Coin', - category: ['Exchange'], - symbol: 'BNB-PERP', - baseAssetSymbol: 'BNB', - marketIndex: 8, - oracle: new PublicKey('A9J2j1pRB2aPqAbjUTtKy94niSCTuPUrpimfzvpZHKG1'), - launchTs: 1680808053000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f', - pythLazerId: 15, - }, - { - fullName: 'Sui', - category: ['L1'], - symbol: 'SUI-PERP', - baseAssetSymbol: 'SUI', - marketIndex: 9, - oracle: new PublicKey('HmeJeBKgceqvSBd5XBXZUYECLabnbS1SefLkeJKH8ERK'), - launchTs: 1683125906000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744', - pythLazerId: 11, - }, - { - fullName: 'Pepe', - category: ['Meme'], - symbol: '1MPEPE-PERP', - baseAssetSymbol: '1MPEPE', - marketIndex: 10, - oracle: new PublicKey('Eo8x9Y1289GvsuYVwRS2R8HfiWRXxYofL1KYvHK2ZM2o'), - launchTs: 1683781239000, - oracleSource: OracleSource.PYTH_LAZER_1M, - pythFeedId: - '0xd69731a2e74ac1ce884fc3890f7ee324b6deb66147055249568869ed700882e4', - pythLazerId: 4, - }, - { - fullName: 'OP', - category: ['L2', 'Infra'], - symbol: 'OP-PERP', - baseAssetSymbol: 'OP', - marketIndex: 11, - oracle: new PublicKey('7GPbmQee2T4jMsJg99GuzWyMuzr8c2Uk7rAR9qvvQkzf'), - launchTs: 1686091480000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x385f64d993f7b77d8182ed5003d97c60aa3361f3cecfe711544d2d59165e9bdf', - pythLazerId: 41, - }, - { - fullName: 'RENDER', - category: ['Infra', 'Solana'], - symbol: 'RENDER-PERP', - baseAssetSymbol: 'RENDER', - marketIndex: 12, - oracle: new PublicKey('97EqsAGbTnShB7oYWAFFCVVAx8PWXgDYDhcpm99izNQ4'), - launchTs: 1687201081000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x3d4a2bd9535be6ce8059d75eadeba507b043257321aa544717c56fa19b49e35d', - pythLazerId: 34, - }, - { - fullName: 'XRP', - category: ['Payments'], - symbol: 'XRP-PERP', - baseAssetSymbol: 'XRP', - marketIndex: 13, - oracle: new PublicKey('92VexDMsSzYvVq7eiEoodEzZxCLqYnfGKpVTqpkX12FY'), - launchTs: 1689270550000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8', - pythLazerId: 14, - }, - { - fullName: 'HNT', - category: ['IoT', 'Solana'], - symbol: 'HNT-PERP', - baseAssetSymbol: 'HNT', - marketIndex: 14, - oracle: new PublicKey('AEPgc6qUTCT8AwdckPcGbJXtcM9bj8mGYAyHE4BscJtm'), - launchTs: 1692294955000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x649fdd7ec08e8e2a20f425729854e90293dcbe2376abc47197a14da6ff339756', - pythLazerId: 168, - }, - { - fullName: 'INJ', - category: ['L1', 'Exchange'], - symbol: 'INJ-PERP', - baseAssetSymbol: 'INJ', - marketIndex: 15, - oracle: new PublicKey('Ac442xcU276nb6gJFUCsNYAwAo6KWuw4xocxmG3nvDym'), - launchTs: 1698074659000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592', - pythLazerId: 46, - }, - { - fullName: 'LINK', - category: ['Oracle'], - symbol: 'LINK-PERP', - baseAssetSymbol: 'LINK', - marketIndex: 16, - oracle: new PublicKey('rwyPmfH5xsHdjPf6XsVxvyQEZogX2k4pmhaKEVvgseW'), - launchTs: 1698074659000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x8ac0c70fff57e9aefdf5edf44b51d62c2d433653cbb2cf5cc06bb115af04d221', - pythLazerId: 19, - }, - { - fullName: 'Rollbit', - category: ['Exchange'], - symbol: 'RLB-PERP', - baseAssetSymbol: 'RLB', - marketIndex: 17, - oracle: new PublicKey('4CyhPqyVK3UQHFWhEpk91Aw4WbBsN3JtyosXH6zjoRqG'), - launchTs: 1699265968000, - oracleSource: OracleSource.PYTH_PULL, - pythFeedId: - '0x2f2d17abbc1e781bd87b4a5d52c8b2856886f5c482fa3593cebf6795040ab0b6', - }, - { - fullName: 'Pyth', - category: ['Oracle', 'Solana'], - symbol: 'PYTH-PERP', - baseAssetSymbol: 'PYTH', - marketIndex: 18, - oracle: new PublicKey('6Sfx8ZAt6xaEgMXTahR6GrT7oYB6nFBMoVyCmMyHmeJV'), - launchTs: 1700542800000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff', - pythLazerId: 3, - }, - { - fullName: 'Celestia', - category: ['Data'], - symbol: 'TIA-PERP', - baseAssetSymbol: 'TIA', - marketIndex: 19, - oracle: new PublicKey('2rDfWydvqvMQjDuf7vQsgfpa6dLMZehrWrpoXitn6gPx'), - launchTs: 1701880540000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x09f7c1d7dfbb7df2b8fe3d3d87ee94a2259d212da4f30c1f0540d066dfa44723', - pythLazerId: 48, - }, - { - fullName: 'Jito', - category: ['MEV', 'Solana'], - symbol: 'JTO-PERP', - baseAssetSymbol: 'JTO', - marketIndex: 20, - oracle: new PublicKey('CGCz4mB8NsDddCq6BZToRUDUuktzsAfpKYh6ATgyyCGF'), - launchTs: 1701967240000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xb43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2', - pythLazerId: 91, - }, - { - fullName: 'SEI', - category: ['L1'], - symbol: 'SEI-PERP', - baseAssetSymbol: 'SEI', - marketIndex: 21, - oracle: new PublicKey('Edk1TWipQtsaD8nnBXYQV1CEAiQb1GFtEAKeFZCi2A4C'), - launchTs: 1703173331000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x53614f1cb0c031d4af66c04cb9c756234adad0e1cee85303795091499a4084eb', - pythLazerId: 51, - }, - { - fullName: 'AVAX', - category: ['Rollup', 'Infra'], - symbol: 'AVAX-PERP', - baseAssetSymbol: 'AVAX', - marketIndex: 22, - oracle: new PublicKey('5ASZLwk3GFCwZiDQ3XpmduRqNPEUGHXjELMX85u8McK3'), - launchTs: 1704209558000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7', - pythLazerId: 18, - }, - { - fullName: 'WIF', - category: ['Meme', 'Dog', 'Solana'], - symbol: 'WIF-PERP', - baseAssetSymbol: 'WIF', - marketIndex: 23, - oracle: new PublicKey('4QXWStoyEErTZFVsvKrvxuNa6QT8zpeA8jddZunSGvYE'), - launchTs: 1706219971000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc', - pythLazerId: 10, - }, - { - fullName: 'JUP', - category: ['Exchange', 'Infra', 'Solana'], - symbol: 'JUP-PERP', - baseAssetSymbol: 'JUP', - marketIndex: 24, - oracle: new PublicKey('DXqKSHyhTBKEW4qgnL7ycbf3Jca5hCvUgWHFYWsh4KJa'), - launchTs: 1706713201000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996', - pythLazerId: 92, - }, - { - fullName: 'Dymension', - category: ['Rollup', 'Infra'], - symbol: 'DYM-PERP', - baseAssetSymbol: 'DYM', - marketIndex: 25, - oracle: new PublicKey('HWDqaKbbNrEsgWPLMeKG39AguefMbHsWcvNSthToXG2t'), - launchTs: 1708448765000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xa9f3b2a89c6f85a6c20a9518abde39b944e839ca49a0c92307c65974d3f14a57', - pythLazerId: 83, - }, - { - fullName: 'BITTENSOR', - category: ['AI', 'Infra'], - symbol: 'TAO-PERP', - baseAssetSymbol: 'TAO', - marketIndex: 26, - oracle: new PublicKey('44fqbLqAkKK5kEj1FFvuEPYq56XoQQL3ABzCPrqsW3Cv'), - launchTs: 1709136669000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x410f41de235f2db824e562ea7ab2d3d3d4ff048316c61d629c0b93f58584e1af', - pythLazerId: 36, - }, - { - fullName: 'Wormhole', - category: ['Bridge'], - symbol: 'W-PERP', - baseAssetSymbol: 'W', - marketIndex: 27, - oracle: new PublicKey('CsFUXiA5dM4eCKjVBBy8tXhXzDkDRNoYjU5rjpHyfNEZ'), - launchTs: 1710418343000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xeff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389', - pythLazerId: 102, - }, - { - fullName: 'Kamino', - category: ['Lending', 'Solana'], - symbol: 'KMNO-PERP', - baseAssetSymbol: 'KMNO', - marketIndex: 28, - oracle: new PublicKey('6ua3DK1sHoYyNi15dsxy6RYwUcZPDDXfyChzaRMaheQF'), - launchTs: 1712240681000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xb17e5bc5de742a8a378b54c9c75442b7d51e30ada63f28d9bd28d3c0e26511a0', - pythLazerId: 464, - }, - { - fullName: 'Tensor', - category: ['NFT', 'Solana'], - symbol: 'TNSR-PERP', - baseAssetSymbol: 'TNSR', - marketIndex: 29, - oracle: new PublicKey('EX6r1GdfsgcUsY6cQ6YsToV4RGsb4HKpjrkokK2DrmsS'), - launchTs: 1712593532000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x05ecd4597cd48fe13d6cc3596c62af4f9675aee06e2e0b94c06d8bee2b659e05', - pythLazerId: 99, - }, - { - fullName: 'Drift', - category: ['DEX', 'Solana'], - symbol: 'DRIFT-PERP', - baseAssetSymbol: 'DRIFT', - marketIndex: 30, - oracle: new PublicKey('5VJou4ufN2vE11zyZUaLsKLTXhyzCTgiq6QDsts2YnnD'), - launchTs: 1716595200000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x5c1690b27bb02446db17cdda13ccc2c1d609ad6d2ef5bf4983a85ea8b6f19d07', - pythLazerId: 249, - }, - { - fullName: 'Sanctum', - category: ['LST', 'Solana'], - symbol: 'CLOUD-PERP', - baseAssetSymbol: 'CLOUD', - marketIndex: 31, - oracle: new PublicKey('9Ennia27iT83kNAk3JtRKxSMzuCzsVtT4MzuxpE7anME'), - launchTs: 1717597648000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x7358313661dcd4f842a1423aa4f7a05f009001c9113201c719621d3f1aa80a73', - pythLazerId: 404, - }, - { - fullName: 'IO', - category: ['DePIN', 'Solana'], - symbol: 'IO-PERP', - baseAssetSymbol: 'IO', - marketIndex: 32, - oracle: new PublicKey('8x84eFZVGD9C8vmQqnB9P8UDPMdDWduFaULspKUYGthP'), - launchTs: 1718021389000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x82595d1509b770fa52681e260af4dda9752b87316d7c048535d8ead3fa856eb1', - pythLazerId: 90, - }, - { - fullName: 'ZEX', - category: ['DEX', 'Solana'], - symbol: 'ZEX-PERP', - baseAssetSymbol: 'ZEX', - marketIndex: 33, - oracle: new PublicKey('HVwBCaR4GEB1fHrp7xCTzbYoZXL3V8b1aek2swPrmGx3'), - launchTs: 1719415157000, - oracleSource: OracleSource.PYTH_PULL, - pythFeedId: - '0x3d63be09d1b88f6dffe6585d0170670592124fd9fa4e0fe8a09ff18464f05e3a', - }, - { - fullName: 'POPCAT', - category: ['Meme', 'Solana'], - symbol: 'POPCAT-PERP', - baseAssetSymbol: 'POPCAT', - marketIndex: 34, - oracle: new PublicKey('C5fiAmQyjdfDR4EGepZqnEL3fJwMBav5yoAk6XyKMF6u'), - launchTs: 1720013054000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xb9312a7ee50e189ef045aa3c7842e099b061bd9bdc99ac645956c3b660dc8cce', - pythLazerId: 130, - }, - { - fullName: 'Wen', - category: ['Solana', 'Meme'], - symbol: '1KWEN-PERP', - baseAssetSymbol: '1KWEN', - marketIndex: 35, - oracle: new PublicKey('F47c7aJgYkfKXQ9gzrJaEpsNwUKHprysregTWXrtYLFp'), - launchTs: 1720633344000, - oracleSource: OracleSource.PYTH_1K_PULL, - pythFeedId: - '0x5169491cd7e2a44c98353b779d5eb612e4ac32e073f5cc534303d86307c2f1bc', - }, - { - fullName: 'TRUMP-WIN-2024-BET', - category: ['Prediction', 'Election'], - symbol: 'TRUMP-WIN-2024-BET', - baseAssetSymbol: 'TRUMP-WIN-2024', - marketIndex: 36, - oracle: new PublicKey('7YrQUxmxGdbk8pvns9KcL5ojbZSL2eHj62hxRqggtEUR'), - launchTs: 1723996800000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'KAMALA-POPULAR-VOTE-2024-BET', - category: ['Prediction', 'Election'], - symbol: 'KAMALA-POPULAR-VOTE-2024-BET', - baseAssetSymbol: 'KAMALA-POPULAR-VOTE-2024', - marketIndex: 37, - oracle: new PublicKey('AowFw1dCVjS8kngvTCoT3oshiUyL69k7P1uxqXwteWH4'), - launchTs: 1723996800000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'FED-CUT-50-SEPT-2024-BET', - category: ['Prediction', 'Election'], - symbol: 'FED-CUT-50-SEPT-2024-BET', - baseAssetSymbol: 'FED-CUT-50-SEPT-2024', - marketIndex: 38, - oracle: new PublicKey('5QzgqAbEhJ1cPnLX4tSZEXezmW7sz7PPVVg2VanGi8QQ'), - launchTs: 1724250126000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'REPUBLICAN-POPULAR-AND-WIN-BET', - category: ['Prediction', 'Election'], - symbol: 'REPUBLICAN-POPULAR-AND-WIN-BET', - baseAssetSymbol: 'REPUBLICAN-POPULAR-AND-WIN', - marketIndex: 39, - oracle: new PublicKey('BtUUSUc9rZSzBmmKhQq4no65zHQTzMFeVYss7xcMRD53'), - launchTs: 1724250126000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'BREAKPOINT-IGGYERIC-BET', - category: ['Prediction', 'Solana'], - symbol: 'BREAKPOINT-IGGYERIC-BET', - baseAssetSymbol: 'BREAKPOINT-IGGYERIC', - marketIndex: 40, - oracle: new PublicKey('2ftYxoSupperd4ULxy9xyS2Az38wfAe7Lm8FCAPwjjVV'), - launchTs: 1724250126000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'DEMOCRATS-WIN-MICHIGAN-BET', - category: ['Prediction', 'Election'], - symbol: 'DEMOCRATS-WIN-MICHIGAN-BET', - baseAssetSymbol: 'DEMOCRATS-WIN-MICHIGAN', - marketIndex: 41, - oracle: new PublicKey('8HTDLjhb2esGU5mu11v3pq3eWeFqmvKPkQNCnTTwKAyB'), - launchTs: 1725551484000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'TON', - category: ['L1'], - symbol: 'TON-PERP', - baseAssetSymbol: 'TON', - marketIndex: 42, - oracle: new PublicKey('Cbhiaky9kxDsviokcQaS9qc4HmpAzLaGjfmdSah1qakL'), - launchTs: 1725551484000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x8963217838ab4cf5cadc172203c1f0b763fbaa45f346d8ee50ba994bbcac3026', - pythLazerId: 12, - }, - { - fullName: 'LANDO-F1-SGP-WIN-BET', - category: ['Prediction', 'Sports'], - symbol: 'LANDO-F1-SGP-WIN-BET', - baseAssetSymbol: 'LANDO-F1-SGP-WIN', - marketIndex: 43, - oracle: new PublicKey('DpJz7rjTJLxxnuqrqZTUjMWtnaMFAEfZUv5ATdb9HTh1'), - launchTs: 1726646453000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'MOTHER', - category: ['Solana', 'Meme'], - symbol: 'MOTHER-PERP', - baseAssetSymbol: 'MOTHER', - marketIndex: 44, - oracle: new PublicKey('469WQgfJ6AJ3eJ8FUcdhiZawf7yNChA3hseTSyhFatHZ'), - launchTs: 1727291859000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x62742a997d01f7524f791fdb2dd43aaf0e567d765ebf8fd0406a994239e874d4', - pythLazerId: 501, - }, - { - fullName: 'MOODENG', - category: ['Solana', 'Meme'], - symbol: 'MOODENG-PERP', - baseAssetSymbol: 'MOODENG', - marketIndex: 45, - oracle: new PublicKey('CVy5m6JqhEdjbz11idgVeb2KnH5NpFowKnYPVMdfc7FC'), - launchTs: 1727965864000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xffff73128917a90950cd0473fd2551d7cd274fd5a6cc45641881bbcc6ee73417', - pythLazerId: 500, - }, - { - fullName: 'WARWICK-FIGHT-WIN-BET', - category: ['Prediction', 'Sport'], - symbol: 'WARWICK-FIGHT-WIN-BET', - baseAssetSymbol: 'WARWICK-FIGHT-WIN', - marketIndex: 46, - oracle: new PublicKey('Dz5Nvxo1hv7Zfyu11hy8e97twLMRKk6heTWCDGXytj7N'), - launchTs: 1727965864000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'DeBridge', - category: ['Bridge'], - symbol: 'DBR-PERP', - baseAssetSymbol: 'DBR', - marketIndex: 47, - oracle: new PublicKey('53j4mz7cQV7mAZekKbV3n2L4bY7jY6eXdgaTkWDLYxq4'), - launchTs: 1728574493000, - oracleSource: OracleSource.PYTH_PULL, - pythFeedId: - '0xf788488fe2df341b10a498e0a789f03209c0938d9ed04bc521f8224748d6d236', - }, - { - fullName: 'WLF-5B-1W', - category: ['Prediction'], - symbol: 'WLF-5B-1W-BET', - baseAssetSymbol: 'WLF-5B-1W', - marketIndex: 48, - oracle: new PublicKey('7LpRfPaWR7cQqN7CMkCmZjEQpWyqso5LGuKCvDXH5ZAr'), - launchTs: 1728574493000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'VRSTPN-WIN-F1-24-DRVRS-CHMP', - category: ['Prediction', 'Sport'], - symbol: 'VRSTPN-WIN-F1-24-DRVRS-CHMP-BET', - baseAssetSymbol: 'VRSTPN-WIN-F1-24-DRVRS-CHMP', - marketIndex: 49, - oracle: new PublicKey('E36rvXEwysWeiToXCpWfHVADd8bzzyR4w83ZSSwxAxqG'), - launchTs: 1729209600000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'LNDO-WIN-F1-24-US-GP', - category: ['Prediction', 'Sport'], - symbol: 'LNDO-WIN-F1-24-US-GP-BET', - baseAssetSymbol: 'LNDO-WIN-F1-24-US-GP', - marketIndex: 50, - oracle: new PublicKey('6AVy1y9SnJECnosQaiK2uY1kcT4ZEBf1F4DMvhxgvhUo'), - launchTs: 1729209600000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: '1KMEW', - category: ['Meme'], - symbol: '1KMEW-PERP', - baseAssetSymbol: '1KMEW', - marketIndex: 51, - oracle: new PublicKey('138RQdT1frDTnEp989V7gUWoQ5yg382ns4ihjvgJLcz7'), - launchTs: 1729702915000, - oracleSource: OracleSource.PYTH_LAZER_1K, - pythFeedId: - '0x514aed52ca5294177f20187ae883cec4a018619772ddce41efcc36a6448f5d5d', - pythLazerId: 137, - }, - { - fullName: 'MICHI', - category: ['Meme'], - symbol: 'MICHI-PERP', - baseAssetSymbol: 'MICHI', - marketIndex: 52, - oracle: new PublicKey('GHzvsMDMSiuyZoWhEAuM27MKFdN2Y4fA4wSDuSd6dLMA'), - launchTs: 1730402722000, - oracleSource: OracleSource.PYTH_PULL, - pythFeedId: - '0x63a45218d6b13ffd28ca04748615511bf70eff80a3411c97d96b8ed74a6decab', - }, - { - fullName: 'GOAT', - category: ['Meme'], - symbol: 'GOAT-PERP', - baseAssetSymbol: 'GOAT', - marketIndex: 53, - oracle: new PublicKey('4uBrnNZyD2wUkpzytuyfiEYp2eWA3WdxXSbWEQbZzs45'), - launchTs: 1731443152000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xf7731dc812590214d3eb4343bfb13d1b4cfa9b1d4e020644b5d5d8e07d60c66c', - pythLazerId: 437, - }, - { - fullName: 'FWOG', - category: ['Meme'], - symbol: 'FWOG-PERP', - baseAssetSymbol: 'FWOG', - marketIndex: 54, - oracle: new PublicKey('5Z7uvkAsHNN6qqkQkwcKcEPYZqiMbFE9E24p7SpvfSrv'), - launchTs: 1731443152000, - oracleSource: OracleSource.PYTH_PULL, - pythFeedId: - '0x656cc2a39dd795bdecb59de810d4f4d1e74c25fe4c42d0bf1c65a38d74df48e9', - }, - { - fullName: 'PNUT', - category: ['Meme'], - symbol: 'PNUT-PERP', - baseAssetSymbol: 'PNUT', - marketIndex: 55, - oracle: new PublicKey('Fbd2hz8Uz26gLm2Jrj7WSrhxusrh9VuSEWVpLBPJgMYX'), - launchTs: 1731443152000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x116da895807f81f6b5c5f01b109376e7f6834dc8b51365ab7cdfa66634340e54', - pythLazerId: 77, - }, - { - fullName: 'RAY', - category: ['DEX'], - symbol: 'RAY-PERP', - baseAssetSymbol: 'RAY', - marketIndex: 56, - oracle: new PublicKey('6VXU2P9BJkuPkfA7FJVonBtAo1c2pGnHoV9rxsdZKZyb'), - launchTs: 1732721897000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x91568baa8beb53db23eb3fb7f22c6e8bd303d103919e19733f2bb642d3e7987a', - pythLazerId: 54, - }, - { - fullName: 'SUPERBOWL-LIX-LIONS', - category: ['Prediction', 'Sport'], - symbol: 'SUPERBOWL-LIX-LIONS-BET', - baseAssetSymbol: 'SUPERBOWL-LIX-LIONS', - marketIndex: 57, - oracle: new PublicKey('GfTeKKnBxeLSB1Hm24ArjduQM4yqaAgoGgiC99gq5E2P'), - launchTs: 1732721897000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'SUPERBOWL-LIX-CHIEFS', - category: ['Prediction', 'Sport'], - symbol: 'SUPERBOWL-LIX-CHIEFS-BET', - baseAssetSymbol: 'SUPERBOWL-LIX-CHIEFS', - marketIndex: 58, - oracle: new PublicKey('EdB17Nyu4bnEBiSEfFrwvp4VCUvtq9eDJHc6Ujys3Jwd'), - launchTs: 1732721897000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'Hyperliquid', - category: ['DEX'], - symbol: 'HYPE-PERP', - baseAssetSymbol: 'HYPE', - marketIndex: 59, - oracle: new PublicKey('3ivZ5AnnUhocgmjiWjT8kDV87S6PpEL3CEHcd3vn2itM'), - launchTs: 1733374800000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x4279e31cc369bbcc2faf022b382b080e32a8e689ff20fbc530d2a603eb6cd98b', - pythLazerId: 110, - }, - { - fullName: 'LiteCoin', - category: ['Payment'], - symbol: 'LTC-PERP', - baseAssetSymbol: 'LTC', - marketIndex: 60, - oracle: new PublicKey('CrW8rga5bEZP1KBnqoQmPUcnYjrCPYQFbrMja99QKxsK'), - launchTs: 1733374800000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x6e3f3fa8253588df9326580180233eb791e03b443a3ba7a1d892e73874e19a54', - pythLazerId: 26, - }, - { - fullName: 'Magic Eden', - category: ['DEX'], - symbol: 'ME-PERP', - baseAssetSymbol: 'ME', - marketIndex: 61, - oracle: new PublicKey('BboTg1yT114FQkqT6MM3P3G3CcCktuM2RePgU8Gr3K4A'), - launchTs: 1733839936000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x91519e3e48571e1232a85a938e714da19fe5ce05107f3eebb8a870b2e8020169', - pythLazerId: 93, - }, - { - fullName: 'PENGU', - category: ['Meme'], - symbol: 'PENGU-PERP', - baseAssetSymbol: 'PENGU', - marketIndex: 62, - oracle: new PublicKey('4A3KroGPjZxPAeBNF287V3NyRwV2q8iBi1vX7kHxTCh7'), - launchTs: 1734444000000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xbed3097008b9b5e3c93bec20be79cb43986b85a996475589351a21e67bae9b61', - pythLazerId: 97, - }, - { - fullName: 'AI16Z', - category: ['AI'], - symbol: 'AI16Z-PERP', - baseAssetSymbol: 'AI16Z', - marketIndex: 63, - oracle: new PublicKey('3BGheQVvYtBNpBKSUXSTjpyKQc3dh8iiwT91Aiq7KYCU'), - launchTs: 1736384970000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x2551eca7784671173def2c41e6f3e51e11cd87494863f1d208fdd8c64a1f85ae', - pythLazerId: 171, - }, - { - fullName: 'TRUMP', - category: ['Meme'], - symbol: 'TRUMP-PERP', - baseAssetSymbol: 'TRUMP', - marketIndex: 64, - oracle: new PublicKey('FPQjZYvHRGy51guJ77p7n9u9b8eo1ktKRc2D2g5Vysth'), - launchTs: 1737219250000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x879551021853eec7a7dc827578e8e69da7e4fa8148339aa0d3d5296405be4b1a', - pythLazerId: 203, - }, - { - fullName: 'MELANIA', - category: ['Meme'], - symbol: 'MELANIA-PERP', - baseAssetSymbol: 'MELANIA', - marketIndex: 65, - oracle: new PublicKey('3RgNWYYcZCKf5uZfriK8ASUbGQErhH6YbpdvZQ7ZKDCf'), - launchTs: 1737360280000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x8fef7d52c7f4e3a6258d663f9d27e64a1b6fd95ab5f7d545dbf9a515353d0064', - pythLazerId: 145, - }, - { - fullName: 'BERA', - category: ['L1', 'EVM'], - symbol: 'BERA-PERP', - baseAssetSymbol: 'BERA', - marketIndex: 66, - oracle: new PublicKey('r8eNLQ8jysUyk9rrWXuicwAoKZ7V3YngAB6737zfxmv'), - launchTs: 1738850177000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x962088abcfdbdb6e30db2e340c8cf887d9efb311b1f2f17b155a63dbb6d40265', - pythLazerId: 308, - }, - { - fullName: 'NBAFINALS25-OKC', - category: ['Prediction', 'Sport'], - symbol: 'NBAFINALS25-OKC-BET', - baseAssetSymbol: 'NBAFINALS25-OKC', - marketIndex: 67, - oracle: new PublicKey('HieNNSAy9tjtU2mLEcGtgCMViCeZ1881fX7tfezL7wdV'), - launchTs: 1739463226000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'NBAFINALS25-BOS', - category: ['Prediction', 'Sport'], - symbol: 'NBAFINALS25-BOS-BET', - baseAssetSymbol: 'NBAFINALS25-BOS', - marketIndex: 68, - oracle: new PublicKey('HorrnsG8RBMv7dhzbgPX4wqcWbUTV5NwV8r59UwTu4CJ'), - launchTs: 1739463226000, - oracleSource: OracleSource.Prelaunch, - }, - { - fullName: 'KAITO', - category: ['AI'], - symbol: 'KAITO-PERP', - baseAssetSymbol: 'KAITO', - marketIndex: 69, - oracle: new PublicKey('8M8mjNJ42k2Xi12Q1zRnQRC3xhggu3WGuftiu5VZZmsF'), - launchTs: 1739545901000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x7302dee641a08507c297a7b0c8b3efa74a48a3baa6c040acab1e5209692b7e59', - pythLazerId: 306, - }, - { - fullName: 'Story Protocol', - category: ['L1'], - symbol: 'IP-PERP', - baseAssetSymbol: 'IP', - marketIndex: 70, - oracle: new PublicKey('AZVVDFve8ijzLAm9z6W53GFsoWbcycFsdxCL7WUjMz8S'), - launchTs: 1740150623000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0xb620ba83044577029da7e4ded7a2abccf8e6afc2a0d4d26d89ccdd39ec109025', - pythLazerId: 309, - }, - { - fullName: 'Fart Coin', - category: ['Meme'], - symbol: 'FARTCOIN-PERP', - baseAssetSymbol: 'FARTCOIN', - marketIndex: 71, - oracle: new PublicKey('2sZomfWMDuQLcFak3nuharXorHrZ3hK8iaML6ZGSHtso'), - launchTs: 1743086746000, - oracleSource: OracleSource.PYTH_LAZER, - pythLazerId: 182, - }, - { - fullName: 'Cardano', - category: ['L1'], - symbol: 'ADA-PERP', - baseAssetSymbol: 'ADA', - marketIndex: 72, - oracle: new PublicKey('55722FS8VeAxRghz5h2ARJvNjkFiHyzkZ9BF7CEQWN6E'), - launchTs: 1743708559000, - oracleSource: OracleSource.PYTH_LAZER, - pythLazerId: 16, - }, - { - fullName: 'Pax Gold', - category: ['RWA'], - symbol: 'PAXG-PERP', - baseAssetSymbol: 'PAXG', - marketIndex: 73, - oracle: new PublicKey('8FauFNbX2gvjkPLH8w2kntXCcSGCwZL2prZjHBpvq6aE'), - launchTs: 1744402932000, - oracleSource: OracleSource.PYTH_LAZER, - pythLazerId: 163, - }, - { - fullName: 'LAUNCHCOIN', - category: ['Meme'], - symbol: 'LAUNCHCOIN-PERP', - baseAssetSymbol: 'LAUNCHCOIN', - marketIndex: 74, - oracle: new PublicKey('GAzR3C5cn7gGVvuqJB57wSYTPWP3n2Lw4mRJRxvTvqYy'), - launchTs: 1747318237000, - oracleSource: OracleSource.PYTH_LAZER, - pythFeedId: - '0x6d74813ee17291d5be18a355fe4d43fd300d625caea6554d49f740e7d112141e', - pythLazerId: 1571, - }, - { - fullName: 'PUMP', - category: ['Launchpad'], - symbol: 'PUMP-PERP', - baseAssetSymbol: 'PUMP', - marketIndex: 75, - oracle: new PublicKey('5r8RWTaRiMgr9Lph3FTUE3sGb1vymhpCrm83Bovjfcps'), - launchTs: 1747318237000, - oracleSource: OracleSource.PYTH_LAZER, - pythLazerId: 1578, - }, -]; - -// ---------- helpers (BN-free) ---------- -function toMintString(pk) { - if (pk == null) return null; - if (typeof pk === 'string') return pk; - if (typeof pk.toBase58 === 'function') return pk.toBase58(); - if (typeof pk.toString === 'function') return pk.toString(); - return String(pk); -} - -function toNum(x) { - if (x == null) return undefined; - if (typeof x === 'number') return x; - if (typeof x === 'bigint') return Number(x); - if (typeof x.toNumber === 'function') return x.toNumber(); - if (typeof x.toString === 'function') { - const n = Number(x.toString(10)); - return Number.isFinite(n) ? n : undefined; - } - return undefined; -} - -function inferDecimals(entry) { - const exp = toNum(entry.precisionExp); - if (Number.isFinite(exp)) return exp; - - const p = entry.precision; - if (typeof p === 'number' && p > 0) { - const guess = Math.log10(p); - if (Number.isFinite(guess)) return Math.round(guess); - } - if (p && typeof p.toString === 'function') { - const s = p.toString(10); - if (/^10*$/.test(s)) return s.length - 1; - } - return undefined; -} - -function makeSpotSymbolMap() { - const map = {}; - for (const s of MainnetSpotMarkets) { - const mint = toMintString(s.mint); - const decimals = inferDecimals(s); - if (!mint || decimals == null) continue; - map[String(s.symbol).toUpperCase()] = { mint, decimals }; - } - return map; -} - -// alias baseAssetSymbol -> spot symbol (when spot uses wrapped tickers) -const BASE_TO_SPOT_ALIAS = { - BTC: 'WBTC', - ETH: 'WETH', - SOL: 'SOL', -}; - -function resolveBaseToSpot(base, spotBySymbol) { - const upper = String(base).toUpperCase(); - - if (spotBySymbol[upper]) return spotBySymbol[upper]; - - const stripped = upper.replace(/^(1M|1K)/, ''); - if (spotBySymbol[stripped]) return spotBySymbol[stripped]; - - const alias = BASE_TO_SPOT_ALIAS[upper]; - if (alias && spotBySymbol[alias]) return spotBySymbol[alias]; - - const wrapped = `W${upper}`; - if (spotBySymbol[wrapped]) return spotBySymbol[wrapped]; - - return null; -} - -// --- required functions (simple & efficient) --- -function buildSpotMarkets() { - const out = {}; - for (const s of MainnetSpotMarkets) { - const mint = toMintString(s.mint); - const decimals = inferDecimals(s); - if (mint && decimals != null && s.marketIndex != null) { - out[s.marketIndex] = { name: s.symbol, mint, decimals }; - } - } - return out; -} - -function buildPerpMarkets() { - const spotBySymbol = makeSpotSymbolMap(); - const quoteDecimals = QUOTE_PRECISION_EXP ?? 6; - - const out = {}; - for (const p of MainnetPerpMarkets) { - if (p.marketIndex == null || !p.symbol || !p.baseAssetSymbol) continue; - - const resolved = resolveBaseToSpot(p.baseAssetSymbol, spotBySymbol); - out[p.marketIndex] = { - name: p.symbol, - mint: resolved ? resolved.mint : null, - baseDecimals: resolved ? resolved.decimals : null, - quoteDecimals, - }; - } - return out; -} - - -const SPOT_MARKETS = buildSpotMarkets(); -const PERP_MARKETS = buildPerpMarkets(); - - -function getVaultPublicKey(seed, marketIndex) { - return PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode(seed)), - new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2), - ], new PublicKey(DRIFT_PROGRAM_ID))[0]; -} - - -function getTokenMintFromMarketIndex(marketIndex) { - if (!SPOT_MARKETS[marketIndex]) { - throw new Error(`Market index ${marketIndex} not found`); - } - return SPOT_MARKETS[marketIndex].mint; -} - - -function getPerpTokenMintFromMarketIndex(marketIndex) { - if (!PERP_MARKETS[marketIndex]) { - throw new Error(`Perp market index ${marketIndex} not found`); - } - return PERP_MARKETS[marketIndex].mint; -} - - -function getDecimalsByMarketIndex(marketIndex, isPerp = false) { - if (isPerp) { - if (!PERP_MARKETS[marketIndex]) { - throw new Error(`Perp market index ${marketIndex} not found`); - } - return PERP_MARKETS[marketIndex].baseDecimals; - } - - if (!SPOT_MARKETS[marketIndex]) { - throw new Error(`Spot market index ${marketIndex} not found`); - } - return SPOT_MARKETS[marketIndex].decimals; -} - - -function processSpotPosition(position, spotMarketAccountInfo) { - const decimals = getDecimalsByMarketIndex(position.market_index); - const decimalAdjustment = 9 - decimals; - let balance = position.scaled_balance; - - // Apply decimal adjustment - if (decimalAdjustment > 0) { - balance /= BigInt(10 ** decimalAdjustment); - } - - // For borrowed positions (balance_type === 1), apply interest rate - if (position.balance_type === 1) { - const cumulativeBorrowInterest = getSpotMarketCumulativeBorrowInterest(spotMarketAccountInfo); - // Apply interest rate to the balance - balance = (balance * cumulativeBorrowInterest) / BigInt(10 ** 10); - return -balance; // Return negative for borrows - } - - return balance; // Return positive for deposits -} - - -function getSpotMarketCumulativeBorrowInterest(accountInfo) { - if (!accountInfo) { - throw new Error(`No account info found for market`); - } - const CUMULATIVE_BORROW_INTEREST_OFFSET = 8 + 48 + 32 + 256 + (16 * 8) + 8; - const lower64Bits = accountInfo.data.readBigInt64LE(CUMULATIVE_BORROW_INTEREST_OFFSET); - const upper64Bits = accountInfo.data.readBigInt64LE(CUMULATIVE_BORROW_INTEREST_OFFSET + 8); - return (upper64Bits << 64n) + lower64Bits; -} - - -function processPerpPosition(position) { - let baseBalance = position.market_index === 0 ? position.base_asset_amount : position.base_asset_amount / BigInt(10); - let quoteBalance = position.quote_asset_amount; - return { baseBalance, quoteBalance }; -} - - -function getPerpMarketFundingRates(accountInfo) { - if (!accountInfo) { - throw new Error(`No account info found for market`); - } - let factorToPrecision = 1n; - const CUMULATIVE_FUNDING_OFFSET = 8 + 48 + 32 + 256 + (16 * 15) + 24; - const cumulativeFundingRateLong = accountInfo.data.readBigInt64LE(CUMULATIVE_FUNDING_OFFSET); - const cumulativeFundingRateShort = accountInfo.data.readBigInt64LE(CUMULATIVE_FUNDING_OFFSET + 16); - return { - cumulativeFundingRateLong, - cumulativeFundingRateShort, - factorToPrecision - }; -} - - -function deserializeUserPositions(accountInfo) { - if (!accountInfo) { - throw new Error('User account not found'); - } - - const buffer = accountInfo.data; - - // Deserialize spot positions - const spotPositions = []; - let offset = 104; // Anchor discriminator (8) + Skip authority(32) + delegate(32) + name(32) - - for (let i = 0; i < 8; i++) { - const spotPosition = { - scaled_balance: buffer.readBigUInt64LE(offset), - market_index: buffer.readUInt16LE(offset + 32), - balance_type: buffer.readUInt8(offset + 34), - }; - - // Only push non-empty positions - if (spotPosition.scaled_balance > 0n) { - spotPositions.push(spotPosition); - } - offset += 40; // Size of SpotPosition struct - } - - // Deserialize perp positions - const perpPositions = []; - for (let i = 0; i < 8; i++) { - const lastCumulativeFundingRate = buffer.readBigInt64LE(offset); - const baseAssetAmount = buffer.readBigInt64LE(offset + 8); - const quoteAssetAmount = buffer.readBigInt64LE(offset + 16); - - // Skip empty positions - if (baseAssetAmount === 0n && quoteAssetAmount === 0n) { - offset += 96; - continue; - } - - const perpPosition = { - last_cumulative_funding_rate: lastCumulativeFundingRate, - base_asset_amount: baseAssetAmount, - quote_asset_amount: quoteAssetAmount, - market_index: buffer.readUInt16LE(offset + 92) - }; - - perpPositions.push(perpPosition); - offset += 96; // Size of PerpPosition struct - } - - return { - spotPositions, - perpPositions - }; -} - - -function readPublicKeyFromBuffer(buffer, offset) { - if (!buffer || buffer.length < offset + 32) { - throw new Error('Buffer is too small to contain a public key at the specified offset'); - } - const publicKeyBytes = buffer.slice(offset, offset + 32); - return new PublicKey(publicKeyBytes); -} - - -async function fetchVaultUserAddressesWithOffset(addresses, offset) { - const accounts = await getMultipleAccounts(addresses.map(address => new PublicKey(address))); - const vaultUserAddresses = []; - accounts.forEach((account, index) => { - const address = addresses[index]; - try { - const userPublicKey = readPublicKeyFromBuffer(account.data, offset); - vaultUserAddresses.push(userPublicKey); - } catch (error) { - console.error(`Error processing address ${address}:`, error); - } - }); - return { vaultUserAddresses }; -} - - -/** - * Vault Equity Calculation Formula: - * VaultEquity = NetSpotValue + UnrealizedPnL - * - * Where: - * 1. NetSpotValue = Σ(spotPosition.scaledBalance * spotMarketPrice * direction) - * - spotPosition.scaledBalance: The size of the spot position - * - spotMarketPrice: Current market price of the asset - * - direction: 1 for deposits (longs), -1 for borrows (shorts) - * - * 2. UnrealizedPnL = Σ(perpPosition.baseAssetAmount * oraclePrice + perpPosition.quoteAssetAmount + fundingPnL) - * For each perpetual position: - * - baseAssetAmount * oraclePrice: Current value of the base asset position (e.g., BTC, ETH, SOL) - * - quoteAssetAmount: Amount of quote currency (USDC) in the position - * - fundingPnL: (market.amm.cumulativeFundingRate - position.lastCumulativeFundingRate) * position.baseAssetAmount / FUNDING_RATE_PRECISION - * - */ -async function getTvl(api, driftVaultAddresses) { - const { vaultUserAddresses } = await fetchVaultUserAddressesWithOffset(driftVaultAddresses, 168); - - // Get all vault accounts first - const accounts = await getMultipleAccounts(vaultUserAddresses); - - const deserializedData = accounts.filter((accountInfo) => !!accountInfo).map(deserializeUserPositions); - - // Collect unique market indices upfront - const allSpotIndices = new Set(); - const allPerpIndices = new Set(); - - deserializedData.forEach(({ spotPositions, perpPositions }) => { - spotPositions?.forEach(pos => allSpotIndices.add(pos.market_index)); - perpPositions?.forEach(pos => allPerpIndices.add(pos.market_index)); - }); - - // Batch fetch - const allKeys = [ - ...[...allSpotIndices].map(index => getVaultPublicKey('spot_market', index)), - ...[...allPerpIndices].map(index => getVaultPublicKey('perp_market', index)), - ]; - - const allAccounts = await getMultipleAccounts(allKeys); - - // Create lookup maps - const spotAccountMap = {}; - const perpAccountMap = {}; - - let offset = 0 - ;[...allSpotIndices].forEach((index, i) => { - spotAccountMap[index] = allAccounts[i]; - offset = i + 1; - }) - ;[...allPerpIndices].forEach((index, i) => { - perpAccountMap[index] = allAccounts[i + offset]; - }); - - // Process positions using the cached account data - for (const { spotPositions, perpPositions } of deserializedData) { - if (spotPositions?.length) { - spotPositions.forEach(position => { - const tokenMint = getTokenMintFromMarketIndex(position.market_index); - const adjustedBalance = processSpotPosition(position, spotAccountMap[position.market_index]); - api.add(tokenMint, adjustedBalance); - }); - } - - if (perpPositions?.length) { - perpPositions.forEach(async position => { - const meta = PERP_MARKETS[position.market_index]; - const baseTokenMint = meta?.mint ?? null; - - const { baseBalance, quoteBalance } = processPerpPosition(position); - if (baseTokenMint) { - api.add(baseTokenMint, baseBalance); - } else { - // e.g. HYPE-PERP: no SPL spot mint; skip base leg to avoid "missing token" - // console.log(`No spot mint for perp market ${position.market_index} (${meta?.name}); skipping base leg`); - // TODO: find usd price and api.add(getTokenMintFromMarketIndex(0), usdValue); - } - - const quoteTokenMint = getTokenMintFromMarketIndex(0); - api.add(quoteTokenMint, quoteBalance); - - const { cumulativeFundingRateLong, cumulativeFundingRateShort } = getPerpMarketFundingRates(perpAccountMap[position.market_index]); - const currentCumulativeFundingRate = position.base_asset_amount > 0n ? cumulativeFundingRateLong : cumulativeFundingRateShort; - const difference = (currentCumulativeFundingRate - BigInt(position.last_cumulative_funding_rate)) / BigInt(10 ** 6); - const fundingRatePnl = (difference * (position.base_asset_amount) / BigInt(10 ** 6)); - api.add(quoteTokenMint, fundingRatePnl); - }); - } - } -} - -module.exports = { - getTvl -}; diff --git a/projects/neutral-trade/utils/hyperliquid.js b/projects/neutral-trade/utils/hyperliquid.js deleted file mode 100644 index e332ab3ff6a..00000000000 --- a/projects/neutral-trade/utils/hyperliquid.js +++ /dev/null @@ -1,24 +0,0 @@ -const { post } = require('../../helper/http'); - -async function getTvl(vaultAddress) { - const data = await post( - "https://api.hyperliquid.xyz/info", - { - type: "vaultDetails", - vaultAddress, - }, - { - headers: { - "Content-Type": "application/json", - }, - } - ); - const accountValueHistory = data.portfolio[0][1].accountValueHistory; - const dp = 1e6; - return Number(accountValueHistory[accountValueHistory.length - 1][1]) * dp; -} - -module.exports = { - getTvl -}; - diff --git a/projects/neutral-trade/utils/kamino.js b/projects/neutral-trade/utils/kamino.js deleted file mode 100644 index 075cc7c5003..00000000000 --- a/projects/neutral-trade/utils/kamino.js +++ /dev/null @@ -1,11 +0,0 @@ -const { get } = require('../../helper/http'); - -async function getTvl(vaultAddress) { - const { sharesIssued, tokensPerShare } = await get(`https://api.kamino.finance/kvaults/${vaultAddress}/metrics`); - const dp = 1e6; - return sharesIssued * tokensPerShare * dp; -} - -module.exports = { - getTvl -}; diff --git a/projects/neutral-trade/utils/ntVaults.js b/projects/neutral-trade/utils/ntVaults.js deleted file mode 100644 index d035b57940e..00000000000 --- a/projects/neutral-trade/utils/ntVaults.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getProvider } = require('../../helper/solana'); -const { Program } = require("@project-serum/anchor"); -const { PublicKey } = require("@solana/web3.js"); -const { NT_VAULT_PROGRAM_ID } = require("../constants"); - - -function getProgram() { - const idl = require('../idl/ntbundle.json'); - const programId = new PublicKey(NT_VAULT_PROGRAM_ID); - const provider = getProvider(); - return new Program(idl, programId, provider); -} - -function deriveOraclePDA(vaultPDA) { - const [pda] = PublicKey.findProgramAddressSync( - [Buffer.from("ORACLE"), vaultPDA.toBuffer()], - new PublicKey(NT_VAULT_PROGRAM_ID), - ); - return pda; -} - -async function getTvl(vaultAddress) { - const program = getProgram(); - const ntVaultPDA = new PublicKey(vaultAddress); - const ntVault = await program.account.bundle.fetch(ntVaultPDA); - const ntOracle = await program.account.oracleData.fetch(deriveOraclePDA(ntVaultPDA)); - return ntVault.bundleUnderlyingBalance.toNumber() + ntOracle.averageExternalEquity.toNumber(); -} - -module.exports = { - getTvl -}; diff --git a/projects/neutrino/index.js b/projects/neutrino/index.js deleted file mode 100644 index 83de0a2ba6a..00000000000 --- a/projects/neutrino/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokens } = require('../helper/chain/waves') - - -module.exports = { - waves: { tvl } -} - -async function tvl(api) { - return sumTokens({ owners: ['3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo',], includeWaves: true, api, blacklistedTokens: ['DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', '6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g'] }) -} \ No newline at end of file diff --git a/projects/neutrl/index.js b/projects/neutrl/index.js deleted file mode 100644 index 6e031c65333..00000000000 --- a/projects/neutrl/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); - - -const ELP_ADDRESS = "0x8cad6c2317233D38a3cf4601F4A441f316F77Db3"; -const ROYCO_ADDRESS = "0x1F8B025D61Cd54E81B6e4f4fC1A8fc757bc50bcf"; - -// USDT, USDC, and USDE addresses (mainnet) -const USDT = ADDRESSES.ethereum.USDT; -const USDC = ADDRESSES.ethereum.USDC; -const USDE = ADDRESSES.ethereum.USDe; - - -async function tvl(timestamp, block, chainBlocks, { api }) { - const chain = api.chain; - const balances = {}; - const fromBlock = 22375087; - - // Fetch Deposit events using helper - const depositLogs = await getLogs({ - api, - target: ELP_ADDRESS, - eventAbi: "event Deposit(address indexed user, address indexed asset, uint256 amount)", - fromBlock, - onlyArgs: true, - }); - - // Process Deposit events and update balances - for (const [_, asset, amount] of depositLogs) { - // Only track USDT, USDC, and USDE deposits - if ([USDT, USDC, USDE].map(a => a.toLowerCase()).includes(asset.toLowerCase())) { - sdk.util.sumSingleBalance(balances, `${chain}:${asset}`, amount.toString()); - } - } - - const roycoDepositLogs = await getLogs({ - api, - target: ROYCO_ADDRESS, - eventAbi: "event Deposit(address indexed user, address indexed asset, uint256 amount)", - fromBlock, - onlyArgs: true, - }); - - // Process Deposit events and update balances - for (const [_, asset, amount] of roycoDepositLogs) { - // Only track USDT, USDC, and USDE deposits - if ([USDC].map(a => a.toLowerCase()).includes(asset.toLowerCase())) { - sdk.util.sumSingleBalance(balances, `${chain}:${asset}`, amount.toString()); - } - } - - return balances; -} - - -module.exports = { - methodology: "TVL is calculated by tracking Deposit events of USDT, USDC, and USDE to the different deposits addresses", - start: 22375087, // Adjust this to be close to when the contract was deployed - ethereum: { // Assuming this is on Ethereum mainnet, change if on a different chain - tvl, - - } -}; \ No newline at end of file diff --git a/projects/neutroswap/index.js b/projects/neutroswap/index.js deleted file mode 100644 index f69aaaab853..00000000000 --- a/projects/neutroswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - eos_evm: { - tvl: getUniTVL({ factory: '0x2140AB15bfdfa3fa1037DB7204a92429f816794D', useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/neuy/index.js b/projects/neuy/index.js deleted file mode 100644 index 10f00bf0b4a..00000000000 --- a/projects/neuy/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const neuy = { - "ethereum": "0xa80505c408C4DEFD9522981cD77e026f5a49FE63", - "polygon": "0x62a872d9977Db171d9e213A5dc2b782e72ca0033", - "base": "0x3cf255a7a03d74b6f9d58456cbedbc0705626354", -} - -const ethLP = { - "ethereum100": "0x83833e3c5363b51db01e74ccc97e98a09ce86dcc", - "ethereum10": "0x82bcd0c19acb970a75771b370f2a3adea1702a44", -} - -const polyLP = { - "polygon100": "0x8574f0F28Bbd7BCfFec50B00cc4D153C564bfC05", - "polygon10": "0x83139cf662df4fee8797Dc916EF2B5aaFE86eB16", -} - -const baseLP = { - "base10": "0x8087712d2C942B6A6683d91e462207Ed9cFC8d5f", -} - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: sumTokensExport({ owners: Object.values(ethLP), tokens: [neuy.ethereum], } ), - }, - polygon: { - tvl: () => ({}), - staking: sumTokensExport({ owners: Object.values(polyLP), tokens: [neuy.polygon], } ), - }, -base: { - tvl: () => ({}), - staking: sumTokensExport({ owners: Object.values(baseLP), tokens: [neuy.base], } ), - } -} diff --git a/projects/newbitcoin/api.js b/projects/newbitcoin/api.js deleted file mode 100644 index 85967fd9576..00000000000 --- a/projects/newbitcoin/api.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("newbitcoin", ['nos']), -} \ No newline at end of file diff --git a/projects/newbitcoin/index.js b/projects/newbitcoin/index.js deleted file mode 100644 index 326e77746bb..00000000000 --- a/projects/newbitcoin/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const { getCoreAssets } = require('../helper/tokenMapping') -const sdk = require('@defillama/sdk') - -const { uniV3Export } = require('../helper/uniswapV3') - -const uniExports = uniV3Export({ - nos: { - factory: '0x1d12AC81710da54A50e2e9095E20dB2D915Ce3C8', fromBlock: 320282, sumChunkSize: 50, filterFn: async (api, logs) => { - const tokens = logs.map(i => [i.token0, i.token1]).flat() - const coreAssets = new Set(getCoreAssets(api.chain)) - return tokens.filter(i => !coreAssets.has(i.toLowerCase())) - } - }, -}) - -module.exports = { - nos: { - tvl: sdk.util.sumChainTvls([sumTokensExport({ owner: '0xea21fbBB923E553d7b98D14106A104665BA57eCd', tokens: [ADDRESSES.nos.BTC] }), uniExports.nos.tvl]) - } -} \ No newline at end of file diff --git a/projects/newdex/index.js b/projects/newdex/index.js deleted file mode 100644 index 1dcc084d434..00000000000 --- a/projects/newdex/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], - ["btc.ptokens", "PBTC", "ptokens-btc"], - ["token.defi", "BOX", "defibox"], - ["minedfstoken", "DFS", "defis-network"], - ["emanateoneos", "EMT", "emanate"], - ["token.newdex", "DEX", "newdex-token"], - ["chexchexchex", "CHEX", "chex-token"], - ["everipediaiq", "IQ", "everipedia"], - ["eosiotptoken", "TPT", "token-pocket"], - ["core.ogx", "OGX", "organix"], -] - - - -// https://newdex.io -// NewDex limit orderbook -async function eos() { - return await get_account_tvl("newdexpublic", tokens); -} - -module.exports = { - methodology: `NewDex TVL is achieved by querying token balances from NewDex's limit orderbook smart contract.`, - eos: { - tvl: eos - }, -} diff --git a/projects/newland/abi.json b/projects/newland/abi.json deleted file mode 100644 index 289d7b84664..00000000000 --- a/projects/newland/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfoA": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accHptPerShare, uint256 miningChefPid, uint256 lpBalance, uint256 accMiningPerShare, uint256 totalLPReinvest, uint256 totalPoints, address strategyLink, uint256 sid, uint256 mdxPid, bool paused)", - "poolInfoB": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accHptPerShare, uint256 mdxChefPid, uint256 lpBalance, uint256 accMdxPerShare)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/newland/index.js b/projects/newland/index.js deleted file mode 100644 index efe9daa6cec..00000000000 --- a/projects/newland/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const abi = require("./abi.json") -const { sumTokens2, } = require("../helper/unwrapLPs"); -const SushiStakingChef_Ethereum = "0x0503866eD9F304Ec564F145d22994F7f11838596"; - -const ethTvl = async (api) => { - const info = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfoB, target: SushiStakingChef_Ethereum}) - info.map(i => api.add(i.lpToken, i.lpBalance)) - return sumTokens2({ api, resolveLP: true, }) -}; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: ethTvl, - }, - heco: { - tvl: () => ({}), - }, - methodology: `We count TVL on the pools (LP tokens), that are staking in other protocolos as Booster, Mdex and Lava on Heco Network - and SushiSwap on Ethereum Network,threw their correspondent MasterChef contracts; and Treasury part separated`, -}; diff --git a/projects/newspace/index.js b/projects/newspace/index.js deleted file mode 100644 index c862846b747..00000000000 --- a/projects/newspace/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0x24e5C28c060ae0836e6378FfDa3d0846fee0c56E"; -const token = "0xbbdaA8700A7caAAf3b4aAc1fA6Fb5fF76Fc14C56"; - -module.exports = masterChefExports(masterchef, "bsc", token) \ No newline at end of file diff --git a/projects/newswap/index.js b/projects/newswap/index.js deleted file mode 100644 index 824cb6c8a48..00000000000 --- a/projects/newswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require("../helper/cache/uniswap") - -module.exports = { - misrepresentedTokens: true, - new: { tvl: getUniTVL({ factory: '0x723913136a42684B5e3657e3cD2f67ee3e83A82D', useDefaultCoreAssets: true }) } -} \ No newline at end of file diff --git a/projects/newthrone/index.js b/projects/newthrone/index.js deleted file mode 100644 index 5953033fd37..00000000000 --- a/projects/newthrone/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens"); - -const GAME_CONTRACT = '0x61C3A357bc3ca51b80eCD36CB1Ae37e5465C6701' - -module.exports = { - methodology: 'THRO tokens in the Game contract, which represents the current balance of the game (total spent - total claimed).', - base: { - tvl: () => ({}), - staking: sumTokensExport({ owner: GAME_CONTRACT, tokens: ['0x0f929C29dcE303F96b1d4104505F2e60eE795caC'], lps: ['0x3267afBDFA739D4039D03172A4a80e4bb91370b6'], useDefaultCoreAssets: true,}), - } -} diff --git a/projects/nex/index.js b/projects/nex/index.js deleted file mode 100644 index bf7e93643bb..00000000000 --- a/projects/nex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - aurora: { - tvl: gmxExports({ vault: '0x5827094484b93989D1B75b12a57989f49e3b88B0', }) - }, - optimism: { - tvl: gmxExports({ vault: '0x5827094484b93989D1B75b12a57989f49e3b88B0', }) - }, -} \ No newline at end of file diff --git a/projects/nexion/index.js b/projects/nexion/index.js deleted file mode 100644 index 5daf6192cd5..00000000000 --- a/projects/nexion/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unknownTokens.js"); - -let contracts = { - NEONStaking: "0x00149EF1A0a41083bC3996d026a7c0f32fc5cb73", - NEON: "0xF2Da3942616880E52e841E5C504B5A9Fba23FFF0", - gg: "0x8a9eAa66561B87645B14998aDc8aE0472C8B3AD4", - NEONRaffle: "0x6DCDf944d96d107A25924CF4c4411e39cbC0bd59", - NEONRaffleDistributor: "0x3CEf1D860cdDE93DCc51667ee5790eF513C5e8DC", - NEONAuction: "0x9217A44143c3f0aad4Ec4F6771DB97580d3DdfF6", - NEONVault: "0x8F37162a47aF42D8676e4f5D343a855264EB5591", - NEONBuynBurn: "0xBd48026E337f1419EC97F780b2045eb0ef2E0467", - NEONLPStaking: "0x08e9363DE98F0E2414b6DC7a1081c5a29964319e", - NEONFarm: "0xdF6ec9b93fa473Cb6772dc47326338ecBa374D39", - OLDNEONFarm: "0x80020303898695b3Ab8017869B6158B49cD5B6CC", - INC: "0x2fa878Ab3F87CC1C9737Fc071108F904c0B0C95d" -}; - -const COLLATERALS = { - DAI: ADDRESSES.pulse.DAI, - WPLS: ADDRESSES.pulse.WPLS, - DAIPLS_LP: "0xE56043671df55dE5CDf8459710433C10324DE0aE" -}; - -module.exports = { - methodology: "NEON can be staked in the protocol, Farms hold PLS-DAI LP from user deposits that can be withdrawn after 500days", - - pulse: { - tvl: sumTokensExport({ - owners: [contracts.NEONFarm, contracts.OLDNEONFarm], - tokens: [COLLATERALS.DAI, COLLATERALS.WPLS, ADDRESSES.null], - useDefaultCoreAssets: true, - lps: [COLLATERALS.DAIPLS_LP] - }), staking: sumTokensExport({ - owners: [contracts.NEONStaking], - tokens: [contracts.NEON], - useDefaultCoreAssets: true, - lps: ['0xEd15552508E5200f0A2A693B05dDd3edEF59e624'] - }), - }, -}; diff --git a/projects/nexo-cex/index.js b/projects/nexo-cex/index.js deleted file mode 100644 index 21d95ab7770..00000000000 --- a/projects/nexo-cex/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const { cexExports } = require('../helper/cex') - -const config = { - ethereum: { - owners: [ - '0x8fd589aa8bfa402156a6d1ad323fec0ecee50d9d', // NEXO TOKEN - '0xb60c61dbb7456f024f9338c739b02be68e3f545c', - '0x57793e249825492212de2aa4306379017301e1da', // NEXO TOKEN - '0x9bdb521a97e95177bf252c253e256a60c3e14447', // This wallet is also staking 5,134.81 ETH on lido - '0xffec0067f5a79cff07527f63d83dd5462ccf8ba4', - '0x55e4d16f9c3041eff17ca32850662f3e9dddbce7', - '0x7344e478574acbe6dac9de1077430139e17eec3d', // This wallet is also staking 0.32 ETH on lido + Deposited 10.07 BTC into aave and borrow 564,398 REN - '0x6914fc70fac4cab20a8922e900c4ba57feecf8e1', - '0xf36a47300f002c0c9f8c131962f077c3543b2fc6', - '0x7ab6c736baf1dac266aab43884d82974a9adcccf', - '0xa75ede99f376dd47f3993bc77037f61b5737c6ea', - '0x65b0bf8ee4947edd2a500d74e50a3d757dc79de0', - '0x0031e147a79c45f24319dc02ca860cb6142fcba1', - '0x00ee047a66d5cff27587a61559138c26b62f7ceb', - '0x354e9fa5c6ee7e6092158a8c1b203ccac932d66d', - '0xba90b5bc12daab8d06582967a22c86ae7eed0469', - - ], - }, - polygon: { - owners: [ - '0xb60c61dbb7456f024f9338c739b02be68e3f545c', - '0x9bdb521a97e95177bf252c253e256a60c3e14447', - '0x7344e478574acbe6dac9de1077430139e17eec3d', - '0x6914fc70fac4cab20a8922e900c4ba57feecf8e1', - '0x7ab6c736baf1dac266aab43884d82974a9adcccf', - '0xa75ede99f376dd47f3993bc77037f61b5737c6ea', - ] - }, - bsc: { - owners: [ - '0xb60c61dbb7456f024f9338c739b02be68e3f545c', - '0x9bdb521a97e95177bf252c253e256a60c3e14447', - '0x55e4d16f9c3041eff17ca32850662f3e9dddbce7', - '0x7344e478574acbe6dac9de1077430139e17eec3d', - '0x6914fc70fac4cab20a8922e900c4ba57feecf8e1', - '0xf36a47300f002c0c9f8c131962f077c3543b2fc6', - '0x7ab6c736baf1dac266aab43884d82974a9adcccf', - '0xa75ede99f376dd47f3993bc77037f61b5737c6ea', - ] - }, - fantom: { - owners: [ - '0xb60c61dbb7456f024f9338c739b02be68e3f545c', - '0x9bdb521a97e95177bf252c253e256a60c3e14447', - '0x6914fc70fac4cab20a8922e900c4ba57feecf8e1', - '0xa75ede99f376dd47f3993bc77037f61b5737c6ea', - ] - }, - avax: { - owners: [ - '0xb60c61dbb7456f024f9338c739b02be68e3f545c', - '0x9bdb521a97e95177bf252c253e256a60c3e14447', - '0x6914fc70fac4cab20a8922e900c4ba57feecf8e1', - '0xa75ede99f376dd47f3993bc77037f61b5737c6ea', - ] - }, - optimism: { - owners: [ - '0x7344e478574acbe6dac9de1077430139e17eec3d', - '0x6914fc70fac4cab20a8922e900c4ba57feecf8e1', - ] - }, - arbitrum: { - owners: [ - '0x6914fc70fac4cab20a8922e900c4ba57feecf8e1', - ] - } -} - -module.exports = cexExports(config) -module.exports.methodology = 'We are not counting money in defi Protocols. In this case around $1.49m in AAVE (Ethereum and polygon network), around $2.4m into notional (Ethereum network), around $660k into beethoven (Fantom network), around $130k into Harvest (BSC chain). We may also not counting a few small token balances. This data was collected on 14/01/2023 ' \ No newline at end of file diff --git a/projects/nexon/index.js b/projects/nexon/index.js deleted file mode 100644 index 6a7c107e642..00000000000 --- a/projects/nexon/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const sdk = require('@defillama/sdk') -const { compoundExports, compoundExports2 } = require('../helper/compound'); - -const comptroller = "0x0171cA5b372eb510245F5FA214F5582911934b3D" - -const lendingMarket = compoundExports(comptroller, '0x1BbD33384869b30A323e15868Ce46013C82B86FB') - -const lendingMarket2 = compoundExports2({ comptroller: '0xc955d5fa053d88e7338317cc6589635cd5b2cf09', cether: '0x22d8b71599e14f20a49a397b88c1c878c86f5579', blacklistedTokens: [ - '0x247b1891c1d04d5972658824dcfbab71b0e9ca1d', - '0x23a7c9bf087f3c52829429458d0dec26567a3ea6', -]}) - -module.exports = { - // hallmarks: [ - // [1690243200, "read-only Reentrancy Attack"] - // ], - era: { - tvl: sdk.util.sumChainTvls([lendingMarket.tvl, lendingMarket2.tvl]), - borrowed: lendingMarket2.borrowed, - }, - telos: compoundExports2({ comptroller: '0x5D2f22856DfEB4b5d6A4422FE0182B70D49cAFCa', blacklistedTokens: ['0xdd11532eb81df5229ce85aaa9fc9ff0e9ca63b81']}) -}; \ No newline at end of file diff --git a/projects/nexton/index.js b/projects/nexton/index.js deleted file mode 100644 index 0c5a3dde02e..00000000000 --- a/projects/nexton/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { call } = require("../helper/chain/ton"); - -const contractAddress = "EQBED_4VLQC-SRdrVCtmcmwO7PtnvdLSRFRYNaGIZBqpaQHQ"; - -const tvl = async (api) => { - const tonStaked = (await call({ target: contractAddress, abi: "tonStaked" }))[0]; - api.addGasToken(tonStaked) -} - -module.exports = { - ton: { - tvl - } -} diff --git a/projects/nexus-dex/index.js b/projects/nexus-dex/index.js deleted file mode 100644 index 7e3095142a7..00000000000 --- a/projects/nexus-dex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - xdc: { - tvl: getUniTVL({ factory: "0xAf2977827a72e3CfE18104b0EDAF61Dd0689cd31", useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/nexus-protocol/index.js b/projects/nexus-protocol/index.js deleted file mode 100644 index 7b6c10fd2bf..00000000000 --- a/projects/nexus-protocol/index.js +++ /dev/null @@ -1,11 +0,0 @@ - -module.exports = { - timetravel: false, - terra: { - tvl: () => ({}), - }, - hallmarks:[ - [1651881600, "UST depeg"], - ], - deadFrom: 1651881600, -} diff --git a/projects/nexus/index.js b/projects/nexus/index.js deleted file mode 100644 index 2e46140c939..00000000000 --- a/projects/nexus/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -async function tvl(api) { - const MasterProxy = '0x01BFd82675DBCc7762C84019cA518e701C0cD07e' - // const bytes2 = ethers.utils.formatBytes32String('P1').slice(0, 4) // '0x5031 - const P1Address = await api.call({ abi: 'function getLatestAddress(bytes2) view returns (address)', target: MasterProxy, params: '0x5031' }) - const ethValue = await api.call({ abi: 'uint256:getPoolValueInEth', target: P1Address}) - api.addGasToken(ethValue) -} - -module.exports = { - misrepresentedTokens: true, - start: '2019-05-23', // 05/23/2019 @ 12:00am (UTC) - ethereum: { tvl } -} diff --git a/projects/nexusbtc/index.js b/projects/nexusbtc/index.js deleted file mode 100644 index 5c9d73b3dcf..00000000000 --- a/projects/nexusbtc/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -//https://www.matrixport.com/nexusbtcReserve - -module.exports = { - methodology: 'The total value locked (TVL) is calculated by summing up the balances of BTC wallets specified in the NexusBTC address list within the bitcoin address book', - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.nexusbtc }), - }, -}; \ No newline at end of file diff --git a/projects/nfazone/index.js b/projects/nfazone/index.js deleted file mode 100644 index af817552010..00000000000 --- a/projects/nfazone/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { queryContract, sumTokens } = require("../helper/chain/cosmos"); - -const nfaContract = "neutron1pwjn3tsumm3j7v7clzqhjsaukv4tdjlclhdytawhet68fwlz84fqcrdyf5"; - -async function tvl(api) { - const baseDenoms = await queryContract({ contract: nfaContract, chain: "neutron", data: "{\"get_base_denoms\":{}}" }); - const assets = baseDenoms.map(({ denom }) => denom); - return await sumTokens({ - owners: [nfaContract], - chain: "neutron", - tokens: assets, - api, - }); -} - -module.exports = { - methodology: "Queries the NFA.zone contract to get the supported base assets. The sum of all these base assets held by the contract is returned.", - neutron: { - tvl - } -} \ No newline at end of file diff --git a/projects/nft20.js b/projects/nft20.js deleted file mode 100644 index be9ee5689a3..00000000000 --- a/projects/nft20.js +++ /dev/null @@ -1,111 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk") -const { staking } = require("./helper/staking"); -const { getConfig } = require('./helper/cache') - -const MUSE = "0xb6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81"; -const stkMUSE = "0x9cfc1d1a45f79246e8e074cfdfc3f4aacdde8d9a"; -const MUSE_ETH_univ2 = '0x20d2c17d1928ef4290bf17f922a10eaa2770bf43' -const MUSE_ETH_univ2_staking = '0x193b775af4bf9e11656ca48724a710359446bf52' - -const abi = { - uni_v2_getPair: "function getPair(address, address) view returns (address)", - uni_v3_getPool: "function getPool(address, address, uint24) view returns (address)", -} -const nft20_rest_api_base = 'https://api.nft20.io/pools?perPage=2000&page=1' - -const contracts = { - ethereum: { - nft20_rest_api: nft20_rest_api_base + '&network=0', - uni_v2_factories: [ - '0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f', // univ2_factory_ethereum, - '0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac' // sushiv1_factory_ethereum - ], - weth: ADDRESSES.ethereum.WETH, - univ3_factory: '0x1f98431c8ad98523631ae4a59f267346ea31f984', - }, - polygon: { - nft20_rest_api: nft20_rest_api_base + '&network=1', - uni_v2_factories: ['0xc35DADB65012eC5796536bD9864eD8773aBc74C4'], // sushiv1_factory_polygon - weth: ADDRESSES.polygon.WETH_1, - univ3_factory: [], - } -} - -function chainTvl(chain) { - return async (api) => { - // Define variables depending on chain - const { nft20_rest_api, uni_v2_factories, weth, univ3_factory, } = contracts[chain] - let { data: nft20_pools } = await getConfig(`nft20_pools/${chain}`, nft20_rest_api) - - // Retrieve pools using REST API - const nft20_lp_usd_balance = nft20_pools.reduce((acc, p) => parseFloat(p['lp_usd_balance']) + acc, 0) - sdk.log(`${chain}: nft20 pools count: ${nft20_pools.length}\n${chain}: nft20 usd balance of LP returned by API: ${(nft20_lp_usd_balance / 1e6).toFixed(2)}M`) - - // Get LPs addresses of UNI_v2 and SUSHI_v1 pools - const calls_v2 = nft20_pools - .filter(p => p.lp_version !== '3') - .map(p => uni_v2_factories.map(factory => ({ - target: factory, - params: [weth, p['address']] // No need to put them in the correct order - }))).flat() - const uni_v2_LPs = await api.multiCall({ - calls: calls_v2, - abi: abi['uni_v2_getPair'], - }) - - // Get LPs addresses of UNI_v3 pools - const calls_v3 = nft20_pools - .filter(p => p.lp_version === '3') - .map((p, i) => ({ - target: univ3_factory, - params: [weth, p.address, p.lp_fee] - })) - const uni_v3_LPs = await api.multiCall({ - calls: calls_v3, - abi: abi['uni_v3_getPool'], - }) - - const LPs = [...uni_v2_LPs, ...uni_v3_LPs].filter(lp => lp !== ADDRESSES.null) - return api.sumTokens({ owners: LPs, token: weth }) - } -} - -module.exports = { - methodology: `TVL for NFT20 consists of the weth locked in LPs (uni_v2, uni_v3, sushi) of every NFT20 pool on mainnet and polygon.`, - ethereum: { - tvl: chainTvl('ethereum'), - staking: staking(stkMUSE, MUSE), - pool2: staking(MUSE_ETH_univ2_staking, MUSE_ETH_univ2), - }, - polygon: { - tvl: chainTvl('polygon') - } -} - -/* on chain code - -const { staking } = require("./helper/staking"); -const { sumTokens2 } = require("./helper/unwrapLPs"); - -const MUSE = "0xb6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81"; -const stkMUSE = "0x9cfc1d1a45f79246e8e074cfdfc3f4aacdde8d9a"; -const MUSE_ETH_univ2 = '0x20d2c17d1928ef4290bf17f922a10eaa2770bf43' -const MUSE_ETH_univ2_staking = '0x193b775af4bf9e11656ca48724a710359446bf52' -async function tvl(api) { - const data = await api.fetchList({ lengthAbi: 'uint256:counter', itemAbi: 'function getPairByNftAddress(uint256) view returns (address _nft20pair, address _originalNft, uint256 _type, string _name, string _symbol, uint256 _supply)', target: '0x0f4676178b5c53Ae0a655f1B19A96387E4b8B5f2' }) - const tokensAndOwners = data.map(i => [i._originalNft, i._nft20pair]).slice(0, 10) - return sumTokens2({ api, tokensAndOwners, permitFailure: true }) -} -module.exports = { - methodology: `TVL for NFT20 consists of the weth locked in LPs (uni_v2, uni_v3, sushi) of every NFT20 pool on mainnet and polygon.`, - ethereum: { - tvl, - staking: staking(stkMUSE, MUSE), - pool2: staking(MUSE_ETH_univ2_staking, MUSE_ETH_univ2), - }, - polygon: { - tvl: () => ({}), // we dont support pricing polygon NFTs yet - } -} - */ \ No newline at end of file diff --git a/projects/nft360/index.js b/projects/nft360/index.js deleted file mode 100644 index 0c2fba61a8a..00000000000 --- a/projects/nft360/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const token_USDC = ADDRESSES.telos.ETH; -const token_USDT = ADDRESSES.moonriver.USDT; -const masterchef = "0x061362b6c0676fA9995A15D7fFcaef0323A9dF2F"; - -module.exports = { - kava: { - tvl: sumTokensExport({ - owner: masterchef, - tokens: [token_USDC, token_USDT] - }) - } -} - -module.exports.deadFrom = '2023-06-09' \ No newline at end of file diff --git a/projects/nftb/abi.json b/projects/nftb/abi.json deleted file mode 100644 index f719a4ddfc3..00000000000 --- a/projects/nftb/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getPrice": "function getPrice(address asset) view returns (uint256)", - "getTotal": "uint256:getTotalCollateral" -} \ No newline at end of file diff --git a/projects/nftb/index.js b/projects/nftb/index.js deleted file mode 100644 index 9033f0ce8a6..00000000000 --- a/projects/nftb/index.js +++ /dev/null @@ -1,157 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const BN = require("bignumber.js"); - -async function getTotal(pools, chain, block) { - const balances = {}; - // Need to be called separately because BUSDT rejects when multicalled on BSC - await Promise.all( - pools.map((pool) => - sdk.api.erc20 - .balanceOf({ - target: pool[1], - owner: pool[0], - chain, - block, - }) - .then((result) => - sdk.util.sumSingleBalance(balances, pool[2], result.output) - ) - ) - ); - return balances; -} - -const bscPools = [ - // pool, token, representation - - [ - "0x0158aF415642A0879802cdb2e1347f0Af1b47eF9", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //2-Month Vault - [ - "0x1240F9904c02d7e48FF03a7C71894bF2530838EB", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //4-Month Vault - [ - "0x50D888179581D540753Aa6E2B6fe5EDCa594158a", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //6-Month Vault - [ - "0xB634a7f635C6367C7F07485363750C09184Fd3F4", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //3-Month Vault - [ - "0x45994757C035892AE66b91925a4Cf561D6aa66f6", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //5-Month Vault - [ - "0x1b5A0D734786ef666abCDfD4153f3EaB9062a1F8", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //4-Month Vest Vault - [ - "0x1386FdB83a0Ce87E146E8BCF807F2B969D29A97a", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //6-Month Vest Vault - [ - "0x3a154b615447CD79D5617CD864d693e9CdD95685", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //12-Month Vest Vault - [ - "0x44D86d4DE4bAe10c85Da7C7D2CDC3333b4b515C8", - "0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - "bsc:0xde3dbbe30cfa9f437b293294d1fd64b26045c71a", - ], //Tiers - [ - "0xC5d72B45C09d2509e66F78D19BfA3B5DD7C04f5a", - "0xf81628edeb110a73c016ab7afa57d80afae07f59", - "bsc:0xf81628edeb110a73c016ab7afa57d80afae07f59", - ], //6-Month LOTT Vault - [ - "0x3213F00f2aa67BdC6eCF1502C99cCA044C87690F", - "0xf81628edeb110a73c016ab7afa57d80afae07f59", - "bsc:0xf81628edeb110a73c016ab7afa57d80afae07f59", - ], //3-Month LOTT Vault - [ - "0x3746ff9590A1ca9bC9a2067481324a75d3C528Ef", - "0xf81628edeb110a73c016ab7afa57d80afae07f59", - "bsc:0xf81628edeb110a73c016ab7afa57d80afae07f59", - ], //1-Month LOTT Vault - [ - "0x01ba0f95Ca1Ba5Dd9981398fE79103F058381B12", - "0x22168882276e5d5e1da694343b41dd7726eeb288", - "bsc:0x22168882276e5d5e1da694343b41dd7726eeb288", - ], //6-Month WSB Vault - [ - "0x83ed2A12943c67e66f4084368A07F2B51CbF5e51", - "0x22168882276e5d5e1da694343b41dd7726eeb288", - "bsc:0x22168882276e5d5e1da694343b41dd7726eeb288", - ], //3-Month WSB Vault - [ - "0x3314CfD1c5538c7521790347FA129ec23FEDED4E", - "0x22168882276e5d5e1da694343b41dd7726eeb288", - "bsc:0x22168882276e5d5e1da694343b41dd7726eeb288", - ], //1-Month WSB Vault - [ - "0x40F75a74D725e31aD2E609c11068931B64e30b8D", - "0xE69cAef10A488D7AF31Da46c89154d025546e990", - "bsc:0xE69cAef10A488D7AF31Da46c89154d025546e990", - ], //6-Month DPT Vault - [ - "0x8040ddeAf7f5F961e1F7B82d434541EA4215c42E", - "0xE69cAef10A488D7AF31Da46c89154d025546e990", - "bsc:0xE69cAef10A488D7AF31Da46c89154d025546e990", - ], //3-Month DPT Vault - [ - "0xe88933A9F3aeBf01eB2EEb6E77040DbB924f2698", - "0xE69cAef10A488D7AF31Da46c89154d025546e990", - "bsc:0xE69cAef10A488D7AF31Da46c89154d025546e990", - ], //1-Month DPT Vault - [ - "0xD260D4Ca6d00386a23acA47ACE37217b23F37582", - "0x205f93cd558aac99c4609d0511829194b5405533", - "bsc:0x205f93cd558aac99c4609d0511829194b5405533", - ], //6-Month ANGEL Vault - [ - "0x1Aa2E43Ff8591865b0575E905331da2Bb6C0FfEE", - "0x205f93cd558aac99c4609d0511829194b5405533", - "bsc:0x205f93cd558aac99c4609d0511829194b5405533", - ], //3-Month ANGEL Vault - [ - "0x4915B0b43a0B8ccbec1cB8EE4112EF3644F75Df6", - "0x205f93cd558aac99c4609d0511829194b5405533", - "bsc:0x205f93cd558aac99c4609d0511829194b5405533", - ], //1-Month ANGEL Vault -]; - -async function bsc(_timestamp, block, chainBlocks) { - return getTotal(bscPools, "bsc", chainBlocks["bsc"]); -} - -function mergeBalances(balances, balancesToMerge) { - Object.entries(balancesToMerge).forEach((balance) => { - sdk.util.sumSingleBalance(balances, balance[0], balance[1]); - }); -} -async function tvl(timestamp, block, chainBlocks) { - const balances = {}; - await Promise.all([bsc(timestamp, block, chainBlocks)]).then((poolBalances) => - poolBalances.forEach((pool) => mergeBalances(balances, pool)) - ); - return balances; -} - -module.exports = { - methodology: `TVL comes from the Staking Vaults and Launchpad Tiers`, - bsc: { - tvl: bsc, - }, -}; diff --git a/projects/nftfi/index.js b/projects/nftfi/index.js deleted file mode 100644 index 89f4783e17e..00000000000 --- a/projects/nftfi/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokensExport, } = require('../helper/unwrapLPs'); - -// Vaults -const loan_offer_v2 = "0xf896527c49b44aAb3Cf22aE356Fa3AF8E331F280"; -const loan_offer_v2_1 = "0x8252Df1d8b29057d1Afe3062bf5a64D503152BC8"; -const loan_offer_v2_2 = "0xd0a40eB7FD94eE97102BA8e9342243A2b2E22207"; - -const loan_collection_offer_v2_1 = "0xe52cec0e90115abeb3304baa36bc2655731f7934"; -const loan_collection_offer_v2_2 = "0xD0C6e59B50C32530C627107F50Acc71958C4341F"; - -const bundles_v1 = "0x16c583748faed1c5a5bcd744b4892ee6b6290094"; -const bundles_v1_1 = "0x0259119359Bf053ebF42C9807752de6bbb4925f3"; - -module.exports = { - misrepresentedTokens: true, - methodology: `Counts the floor value of all deposited NFTs with Chainlink price feeds. Borrowed coins are not counted towards the TVL`, - ethereum: { - tvl: sumTokensExport({ - owners: [ - loan_offer_v2, - loan_offer_v2_1, - loan_offer_v2_2, - loan_collection_offer_v2_1, - loan_collection_offer_v2_2, - bundles_v1, - bundles_v1_1, - ], - resolveNFTs: true, - }), - }, -}; diff --git a/projects/nfthive/index.js b/projects/nfthive/index.js deleted file mode 100644 index 8df589effb7..00000000000 --- a/projects/nfthive/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["eosio.token", "WAX", "wax"], - ["alien.worlds", "TLM", "alien-worlds"], - ["wuffi", "WUF", "wuffi"], -]; - -// NFTHive -// https://nfthive.io -async function wax() { - const accounts = ["nfthivedrops", "nfthivepacks", "nfthivecraft"]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -async function staking() { - const accounts = ["nfthivevault"]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `NFTHive TVL is achieved by querying token balances from NFT market contracts.`, - wax: { - tvl: wax, - staking - }, -} \ No newline at end of file diff --git a/projects/nftperp/index.js b/projects/nftperp/index.js deleted file mode 100644 index 21642440bd8..00000000000 --- a/projects/nftperp/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json") -const { sumTokensExport } = require("../helper/sumTokens") - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - // DEX - [ADDRESSES.arbitrum.WETH, "0x9e8B6D29C0410B8c7E67bB151CA7C0f9F6cBa8bF"], - // Insurance fund - [ADDRESSES.arbitrum.WETH, "0x087E8C29d0743120A9b9d003F702FB7F450291ba"], - ], - }), - }, - blast: { - tvl: sumTokensExport({ - tokensAndOwners: [ - // DEX - [ADDRESSES.blast.WETH, "0xFfc0555EC5F5C44A6B529Cef94b9055799696272"], - // Insurance fund - [ADDRESSES.blast.WETH, "0xe2F4A2845D4183F7913EC66945b20E4c0c15DAFf"], - // DEX Ordinals - [ - "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", - "0x0C2309C6554AabBFBcA7d5219545795DcAF6f4A9", - ], - // Insurance fund Ordinals - [ - "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", - "0x0b32E91C276377b3b3CdB332e902207Defe542bd", - ], - ], - }), - }, -} diff --git a/projects/nftx/abi.json b/projects/nftx/abi.json deleted file mode 100644 index 7f775aa36c3..00000000000 --- a/projects/nftx/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "vaultsLength": "uint256:vaultsLength", - "xToken": "function xToken(uint256 vaultId) view returns (address)" -} \ No newline at end of file diff --git a/projects/nftx/index.js b/projects/nftx/index.js deleted file mode 100644 index b7708f1abb6..00000000000 --- a/projects/nftx/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { factory: '0xBE86f647b167567525cCAAfcd6f881F1Ee558216', fromBlock: 12675821, }, - arbitrum: { factory: '0xE77b89FEc41A7b7dC74eb33602e82F0672FbB33C', fromBlock: 12080098, }, -} -module.exports = { - methodology: "Counts total value of nfts in all the vaults", -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (chain === 'arbitrum') return {} // we dont price any token in arbitrum - const logs = await getLogs2({ - api, - factory, - eventAbi: 'event NewVault (uint256 indexed vaultId, address vaultAddress, address assetAddress)', - fromBlock, - }) - const tokensAndOwners = logs.map(log => [log.assetAddress, log.vaultAddress]) - return sumTokens2({ api, tokensAndOwners, permitFailure: true }) - } - } -}) diff --git a/projects/ngad-artemis/index.js b/projects/ngad-artemis/index.js deleted file mode 100644 index 7378ca60703..00000000000 --- a/projects/ngad-artemis/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(_, _1, _2, {api}) { - const depositedMetis = await api.call({ - abi: 'function totalDeposits() view returns (uint256)', - target: '0x96C4A48Abdf781e9c931cfA92EC0167Ba219ad8E' - }); - - api.add(ADDRESSES.metis.Metis, depositedMetis); -} - -async function goatTvl(api) { - const {chain, block} = api; - const {WBTC, DOGEB, BTCB} = ADDRESSES.goat; - const tokens = ['0xeFEfeFEfeFeFEFEFEfefeFeFefEfEfEfeFEFEFEf', DOGEB, BTCB]; - const tokenContracts = await api.multiCall({ - chain, - block, - abi: 'function getTokenContracts(address _token) view returns (tuple(address artToken, address depositPool, address withdrawalManager, address baseRewardPool))', - calls: tokens.map(token => ({ - target: '0x479603DE0a8B6D2f4D4eaA1058Eea0d7Ac9E218d', - params: token, - })), - }); - const totalDeposits = await api.multiCall({ - chain, - block, - abi: 'function totalDeposited() view returns (uint256)', - calls: tokenContracts.map(contracts => ({ - target: contracts.depositPool, - })) - }); - tokens.forEach((token, index) =>{ - api.add( - index === 0 ? WBTC : token, - totalDeposits[index], - ); - }); -} - -module.exports = { - metis: { - tvl - }, - goat: { - tvl: goatTvl, - }, -}; diff --git a/projects/ngad-euclid/index.js b/projects/ngad-euclid/index.js deleted file mode 100644 index 449c984f18b..00000000000 --- a/projects/ngad-euclid/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const lrtConfig = '0xDabB6eC246C9572c30B11f77907006dA5CAe274E'; -const lrtDepositPool = '0x26803cB8Bd2916EB58c3610caB50077A96D29947'; -async function tvl(_, _1, _2, {api}) { - const supportedAssets = await api.call({ - abi: 'function getSupportedAssets() view returns (address[])', - target: lrtConfig - }); - const depositedAssetAmounts = await api.multiCall({ - abi: 'function getTotalAssetDeposits(address _asset) view returns (uint256)', - target: lrtDepositPool, - calls: supportedAssets - }); - - api.addTokens(supportedAssets, depositedAssetAmounts); -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl - } -}; - diff --git a/projects/ngmizone/index.js b/projects/ngmizone/index.js deleted file mode 100644 index 732eec07a18..00000000000 --- a/projects/ngmizone/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens } = require("../helper/chain/cosmos"); - -const ngmiContract = "neutron1xcjn7d2f6p2kjqdxtvm4dzeqay98hcmtts92uugw7efnz4zc05csyhhvq6"; - -const supportedAssets = [ - "untrn", -]; - -async function tvl(api) { - return await sumTokens({ - owners: [ngmiContract], - chain: "neutron", - tokens: supportedAssets, - api, - }); -} - -module.exports = { - methodology: "Totals the $NTRN balance held by the NGMI.zone contract.", - neutron: { - tvl - } -} \ No newline at end of file diff --git a/projects/nidhi-dao/index.js b/projects/nidhi-dao/index.js deleted file mode 100644 index 070848b6ef6..00000000000 --- a/projects/nidhi-dao/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - hallmarks: [ - [1651320000, "NidhiDAO/TangibleDAO Merge"] //https://twitter.com/tangibleDAO/status/1520512970962313216 - ], - deadFrom: 1648765747, - polygon: { - tvl: () => 0 - } -} diff --git a/projects/nightmare/index.js b/projects/nightmare/index.js deleted file mode 100644 index caa5aff4caa..00000000000 --- a/projects/nightmare/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0xcF9aeC9E5A7307285252B0F155E1Dc614704f4dD', - nativeToken: '0x465d67204A8F7c02cd35288Cc7712526359FB0a9' -}) -module.exports.hallmarks = [ - [1646179200, "Rug Pull"] -], -module.exports.deadFrom='2022-03-02' \ No newline at end of file diff --git a/projects/nightshade/index.js b/projects/nightshade/index.js deleted file mode 100644 index 2b2e8b7fbd1..00000000000 --- a/projects/nightshade/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const alephium = require("../helper/chain/alephium"); - -const nightshadeAddress = "24pPSeXvbmUjM6NZVYehEjLiCDDDeT94CR9rp1YJSuxKZ"; - - -async function getTvl(api) { - const results = await alephium.contractMultiCall([ - { group: 0, address: nightshadeAddress, methodIndex: 2 }, - ]); - const pairsCount = Number(results[0].returns[0].value); - - for (let i = 0; i < pairsCount - 1; i++) { - const pairResult = await alephium.contractMultiCall([ - { - group: 0, - address: nightshadeAddress, - methodIndex: 0, - args: [{ value: i, type: "U256" }], - }, - { - group: 0, - address: nightshadeAddress, - methodIndex: 8, - args: [{ value: i, type: "U256" }], - }, - ]); - - - const firstTokenId = pairResult[0].returns[0].value; - const secondTokenId = pairResult[0].returns[1].value; - - const balances = pairResult[1].returns; - const firstTokenBalance = balances[8].value; - const secondTokenBalance = balances[9].value; - - api.add(firstTokenId, firstTokenBalance); - api.add(secondTokenId, secondTokenBalance); - } -} - -module.exports = { - timetravel: false, - methodology: - "Total value of tokens provided as liquidity on Alephium", - alephium: { tvl: getTvl }, -}; diff --git a/projects/niifi.js b/projects/niifi.js deleted file mode 100644 index 2872bf0acd6..00000000000 --- a/projects/niifi.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - nahmii: { - tvl: getUniTVL({ factory: '0xe3DcF89D0c90A877cD82283EdFA7C3Bd03e77E86', useDefaultCoreAssets: true }), - } -}; // node test.js projects/niifi.js \ No newline at end of file diff --git a/projects/nile-exchange-v1/index.js b/projects/nile-exchange-v1/index.js deleted file mode 100644 index 15f24f55bfd..00000000000 --- a/projects/nile-exchange-v1/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - linea:{ - tvl: getUniTVL({ factory: '0xAAA16c016BF556fcD620328f0759252E29b1AB57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'cAMM' }), - staking: staking("0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F", "0xAAAac83751090C6ea42379626435f805DDF54DC8"), - }, -} \ No newline at end of file diff --git a/projects/nile-exchange/index.js b/projects/nile-exchange/index.js deleted file mode 100644 index bd0eee8cda7..00000000000 --- a/projects/nile-exchange/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - linea: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 1768897, }, -}) \ No newline at end of file diff --git a/projects/nileriver/index.js b/projects/nileriver/index.js deleted file mode 100644 index 132ce1516b0..00000000000 --- a/projects/nileriver/index.js +++ /dev/null @@ -1,6 +0,0 @@ - -module.exports = { - timetravel: false, - moonriver: { tvl: () => ({}) }, - methodology: 'Api is no longer reachable' -}; diff --git a/projects/nimbora-yield-aggregator/index.js b/projects/nimbora-yield-aggregator/index.js deleted file mode 100644 index e2b6102614e..00000000000 --- a/projects/nimbora-yield-aggregator/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { call, parseAddress } = require('../helper/chain/starknet') -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') - -const totalAssetsAbi = { - "name": "total_assets", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "totalAssets", - "type": "Uint256" - } - ], - "stateMutability": "view" -} - -async function fetcher() { - return get('https://stats.nimbora.io/aggregator/strategies', { - headers: { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' - } - }) -} - -async function tvl(api) { - const strategyData = await getConfig('nimbora-yield-aggregator', undefined, { fetcher }) - for (let index = 0; index < strategyData.length; index++) { - const strategyInfo = strategyData[index]; - const underlying = parseAddress(strategyInfo.underlying); - const strategyTvl = await call({ target: strategyInfo.vault, abi: totalAssetsAbi }); - api.add(underlying, strategyTvl) - } -} - -module.exports = { - methodology: 'Computed by summing the total assets held by each vault aggregator.', - starknet: { - tvl - }, -} diff --git a/projects/nimbora-yield/index.js b/projects/nimbora-yield/index.js deleted file mode 100644 index 70f2db34933..00000000000 --- a/projects/nimbora-yield/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { call, parseAddress } = require('../helper/chain/starknet') -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') - -const totalAssetsAbi = { - "name": "total_assets", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "totalAssets", - "type": "Uint256" - } - ], - "stateMutability": "view" -} - -async function fetcher() { - return get('https://backend.nimbora.io/yield-dex/strategies', { - headers: { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' - } - }) -} - -async function tvl(api) { - const strategyData = await getConfig('nimbora-yield', undefined, { fetcher }) - for (let index = 0; index < strategyData.length; index++) { - const strategyInfo = strategyData[index]; - const underlying = parseAddress(strategyInfo.underlying) == ADDRESSES.starknet.DAI_1 ? ADDRESSES.starknet.DAI : parseAddress(strategyInfo.underlying); - const strategyTvl = await call({ target: strategyInfo.tokenManager, abi: totalAssetsAbi }); - api.add(underlying, strategyTvl) - } -} - -module.exports = { - methodology: 'Computed by summing the total assets held by each strategy.', - starknet: { - tvl - }, -} diff --git a/projects/nimbora/index.js b/projects/nimbora/index.js deleted file mode 100644 index dbe041b0bba..00000000000 --- a/projects/nimbora/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { ChainApi } = require('@defillama/sdk'); -const ADDRESSES = require('../helper/coreAssets.json') -const TROVE_HIGH_RISK = "0xEF3cf0ede2cA738A8Bd0c38fd5D43DC639B41532"; -const TROVE_MEDIUM_RISK = "0x4cdB2fdE85Da92Dbe9b568dda2Cc22d426b0b642"; -const TROVE_MANAGER = "0xA39739EF8b0231DbFA0DcdA07d7e29faAbCf4bb2"; - -async function tvl(api) { - api = new ChainApi({ chain: 'ethereum', timestamp: api.timestamp }) - await api.getBlock() - - const multicallResponse = await api.multiCall({ - abi: "function getEntireDebtAndColl(address _borrower) payable returns (uint256 debt, uint256 coll, uint256, uint256)", - calls: [TROVE_HIGH_RISK, TROVE_MEDIUM_RISK], - target: TROVE_MANAGER, - }); - multicallResponse.forEach(i => { - api.add(ADDRESSES.null, i.coll) - api.add(ADDRESSES.ethereum.LUSD, i.debt * -1) - }) - return api.getBalances() -} - -module.exports = { - methodology: "The TVL is calculated as a sum of total assets deposited into the Trove contracts.", - starknet: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/nimbora_lst/erc4626abi.js b/projects/nimbora_lst/erc4626abi.js deleted file mode 100644 index 8da32a0d8cb..00000000000 --- a/projects/nimbora_lst/erc4626abi.js +++ /dev/null @@ -1,20 +0,0 @@ -const ERC4626Abi = [ - { - "name": "total_assets", - "type": "function", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - } -] - -const ERC4626AbiMap = {} -ERC4626Abi.forEach(i => ERC4626AbiMap[i.name] = i) - -module.exports = { - ERC4626AbiMap -} \ No newline at end of file diff --git a/projects/nimbora_lst/index.js b/projects/nimbora_lst/index.js deleted file mode 100644 index 1a7a7d50108..00000000000 --- a/projects/nimbora_lst/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const {multiCall} = require("../helper/chain/starknet"); -const ADDRESSES = require('../helper/coreAssets.json'); -const { ERC4626AbiMap } = require('./erc4626abi') - -const LiquidStakingData = [{ - address: "0x076c4b7bb1ce744e4aae2278724adedd4906ab89998623fe1715877ecb583bde", - token: ADDRESSES.starknet.STRK -}] - -async function tvl(api) { - const totalAssets = await multiCall({ - calls: LiquidStakingData.map(c => c.address), - abi: ERC4626AbiMap.total_assets - }); - api.addTokens(LiquidStakingData.map(c => c.token), totalAssets); -} - -module.exports = { - doublecounted: true, - methodology: "The TVL is the total staked STRK managed by Nimbora Lst", - starknet: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/ninjaroll/index.js b/projects/ninjaroll/index.js deleted file mode 100644 index b101f211cb2..00000000000 --- a/projects/ninjaroll/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') - -async function staking(api) { - const res = await queryContract({ chain: api.chain, contract: "inj1fuf8u3d8fk2p34anz3f72tct6q8sr5hvxxv4x4", data: { state: {} }}) - api.add('coingecko:ninjaroll', res.total_bond_amount/1e18, { skipChain: true, }) -} - -module.exports = { - methodology: "TVL counts the ROLL tokens staked in the Ninjaroll staking contract", - injective: { tvl:() => ({}), staking }, -}; diff --git a/projects/ninjavault/index.js b/projects/ninjavault/index.js deleted file mode 100644 index 5e0d5794c5c..00000000000 --- a/projects/ninjavault/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') -const sdk = require('@defillama/sdk') - -async function staking(api) { - const res = await queryContract({ chain: api.chain, contract: "inj102zs4nvdq4lyztqntp4l7nsvvqkpcvec4eeryw", data: { balance: {} }}) - const balances = {} - sdk.util.sumSingleBalance(balances,'coingecko:dojo-token', res/1e18); - return balances -} - -module.exports = { - methodology: "TVL counts the Tokens staked in NinjaVault vaults", - injective: { tvl:() => ({}), staking }, -}; diff --git a/projects/niob/index.js b/projects/niob/index.js deleted file mode 100644 index 48a58946911..00000000000 --- a/projects/niob/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const NIOB = "0x5ac5e6Af46Ef285B3536833E65D245c49b608d9b"; -const masterchef = "0xD18B23ad6c8ACc4AD32AAd6a5dF750ce28C8C772"; - -module.exports = masterChefExports(masterchef, "bsc", NIOB, false); \ No newline at end of file diff --git a/projects/nirvana-v2/index.js b/projects/nirvana-v2/index.js deleted file mode 100644 index b0b6961e34c..00000000000 --- a/projects/nirvana-v2/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') - -async function tvl(api) { - return sumTokens2({ tokenAccounts: ['FhTJEGXVwj4M6NQ1tPu9jgDZUXWQ9w2hP89ebZHwrJPS'] }) -} - -module.exports = { - timetravel: false, - solana: { - tvl, - } -} \ No newline at end of file diff --git a/projects/nirvana/index.js b/projects/nirvana/index.js deleted file mode 100644 index 2a9e79514f3..00000000000 --- a/projects/nirvana/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require('../helper/solana'); -const ANA = "ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"; -const stakingContract = "CxuuSEv67PzNkMxqCvHeDUr6HKaadoz8NhTfxbQSJnaG"; - -async function staking() { - return sumTokens2({ tokensAndOwners: [[ANA, stakingContract]] }); -} - -async function tvl() { - return sumTokens2({ tokenAccounts: ['EwQa93fpN2a6smD7EBFjQEyDt3DP8EMLHLjgAWxG9Qhj', '6t7ViNDULtkgvmntHsmi1QV73Tez7ZcX6DJvARHkfUJZ',] }) -} - -module.exports = { - // hallmarks: [ - // [1659009600, "Flash-Loan & Price Manipulation Attack"] - // ], - timetravel: false, - methodology: - "The total value of ANA tokens locked in the protocol, either as staking or as collateral for loans.", - solana: { - tvl, - staking, - }, - deadFrom: 1669009600, -}; \ No newline at end of file diff --git a/projects/nitron/index.js b/projects/nitron/index.js deleted file mode 100644 index d07ce67ac8d..00000000000 --- a/projects/nitron/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { get } = require("../helper/http") -const sdk = require('@defillama/sdk') -const BigNumber = require('bignumber.js') - -async function getTotalSupplied() { - const modAddress = 'swth1wq9ts6l7atfn45ryxrtg4a2gwegsh3xh7w83xl' - const debtInfos = (await get('https://api.carbon.network/carbon/cdp/v1/token_debt')).debt_infos_all - const modBalances = (await get(`https://api.carbon.network/carbon/coin/v1/balances/${modAddress}`)).token_balances - const allAssets = [] - for (const debt of debtInfos){ - const {denom,total_principal} = debt - const modBalance = new BigNumber((modBalances.find((o) => o.denom === denom))?.available ?? 0) - const totalPrincipal = new BigNumber(total_principal ?? 0) - allAssets.push({ denom, amount: modBalance.plus(totalPrincipal).toNumber()}) - } - return allAssets -} - -async function getTokenInfo() { - const { result: { gecko } } = await get('https://api-insights.carbon.network/info/denom_gecko_map') - const tokenMap = {} - let skip = 0 - let data - const size = 100 - const url = () => `https://api.carbon.network/carbon/coin/v1/tokens?pagination.limit=${size}&pagination.offset=${skip}` - do { - data = await get(url()) - skip += size - for (const token of data.tokens) { - const denom = token.denom - if (!gecko[denom]) continue; - token.geckoId = gecko[token.denom] - tokenMap[denom] = token - } - } while (data.tokens.length) - return tokenMap -} - -async function tvl() { - const balances = {} - const [tokenData, assets] = await Promise.all([ - getTokenInfo(), - getTotalSupplied() - ]) - - for(const {denom, amount} of assets) { - if (tokenData[denom]) { - addBalance(denom, amount) - } - } - return balances - - function addBalance(id, amount) { - sdk.util.sumSingleBalance(balances, tokenData[id].geckoId, amount / (10 ** +tokenData[id].decimals)) - } -} - -module.exports = { - timetravel: false, - carbon: { - tvl - } -} \ No newline at end of file diff --git a/projects/nlx/index.js b/projects/nlx/index.js deleted file mode 100644 index c0df865ae0d..00000000000 --- a/projects/nlx/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExportsV2 } = require('../helper/gmx') - -module.exports = { - core: { - tvl: gmxExportsV2({ eventEmitter: '0x29792F84224c77e2c672213c4d942fE280D596ef', fromBlock: 13558258, }), - }, -} \ No newline at end of file diff --git a/projects/nns/index.js b/projects/nns/index.js deleted file mode 100644 index 4eb4e0fc37a..00000000000 --- a/projects/nns/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { get } = require('../helper/http') - -const NEURON_FUND_URL = "https://ic-api.internetcomputer.org/api/v3/metrics/community-fund-total-staked?step=7200" - -async function tvl(api) { - var data = await get(NEURON_FUND_URL); - let neuron_fund_balance = parseInt(data.community_fund_total_staked[0][1]); - api.addCGToken('internet-computer', neuron_fund_balance / 1e8) -} - -module.exports = { - methodology: `We count the ICP locked inside the Neurons of the Neurons Fund`, - icp: { - tvl - }, -} \ No newline at end of file diff --git a/projects/noahark/index.js b/projects/noahark/index.js deleted file mode 100644 index c940cf35885..00000000000 --- a/projects/noahark/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - eos_evm: { - tvl: getUniTVL({ factory: '0x75782A57c6522B8B17FCc01Ff11759f4535b2752', useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/noaharkdao/index.js b/projects/noaharkdao/index.js deleted file mode 100644 index 5296523773e..00000000000 --- a/projects/noaharkdao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const nrk = "0x61a47034276eb993e1c5e67bf1375ad0a48f10f6"; -const stakingContract = "0xe830a08D4A794DEDB03A0B46cA7BBC8468ADc47B"; -const treasury = "0x64E5dd04123BFF64a9eD7fe5b902720E63C422F0"; -const treasuryTokens = [ - [ADDRESSES.avax.DAI, false], // DAI - ["0x790c840b774d8f02ebdad9ddb74331614b535cef", true] // NRK-DAI SLP -] - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "avax", stakingContract, nrk, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/noble/index.js b/projects/noble/index.js deleted file mode 100644 index 2b8e8580ed8..00000000000 --- a/projects/noble/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { queryV1Beta1 } = require('../helper/chain/cosmos'); - -const NOBLE_SUPPLY_URL = 'bank/v1beta1/supply'; -const IGNORE_DENOMS = ['ufrienzies', 'ustake']; - -async function tvl(api) { - let key - do { - const { supply, pagination } = await queryV1Beta1({ api, url: `${NOBLE_SUPPLY_URL}?pagination.key=${key || ''}` }) - key = pagination.next_key - supply.forEach(i => api.add(i.denom, i.amount)) - } while (key); - IGNORE_DENOMS.forEach(denom => api.removeTokenBalance(denom)) -} - -module.exports = { - noble: { - tvl, - }, -}; diff --git a/projects/nocturne_xyz/index.js b/projects/nocturne_xyz/index.js deleted file mode 100644 index 06f3c104906..00000000000 --- a/projects/nocturne_xyz/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokensExport, } = require('../helper/unwrapLPs') - -//https://nocturne-xyz.gitbook.io/nocturne/developers/contract-addresses -const config = { - ethereum: { - contracts: { - Teller: '0xA561492dFC1A90418Cc8b9577204d56C17CB32Ff', - Handler: '0x33ab3ceC16B6640945E669a86C897A8e03f019CD', - DepositManager: '0x1B33B8499EB6D681CDcF19c79dF8A3Dec9c652C3', - } - } -} - -Object.keys(config).forEach(chain => { - const { contracts } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owners: Object.values(contracts), fetchCoValentTokens: true, }) - } -}) - -module.exports.hallmarks = [ - ['2024-01-22', 'Nocturne V1 is being sunset'], -] \ No newline at end of file diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js deleted file mode 100644 index d815ef4ab96..00000000000 --- a/projects/node-dao/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: async (api) => { - const nodeDaoView = '0xd7C049CD4ba216679ecC04Eb2767cC5E39812121' - const totalEth = await api.call({ abi: 'uint256:getTotalTVL', target: nodeDaoView }) - api.add(nullAddress, totalEth) - } - } -} \ No newline at end of file diff --git a/projects/nodo/index.js b/projects/nodo/index.js deleted file mode 100644 index 2ff40762712..00000000000 --- a/projects/nodo/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - avax: { - owners: [ - "0xB4623b02A0D9bCf0282600C08E4383c04A0E0AfC", - "0x29Ff7d778890F40ccE8E74de67D082c0e2DCc1Bc" - ], - tokens: [ - ADDRESSES.avax.USDt - ] - }, - polygon: { - owners: [ - "0x1e579a1AE5DA042C925902F3Efec1035C9329283", - "0x29Ff7d778890F40ccE8E74de67D082c0e2DCc1Bc", - "0xA4F335B528a24eBDeA10e5CcE14E9750929BBE34" - ], - tokens: [ - ADDRESSES.polygon.USDT - ] - }, - base: { - owners: [ - "0xEcc253aeAeC63bcB2b8eC6A739A0972A817219A3", - "0x29Ff7d778890F40ccE8E74de67D082c0e2DCc1Bc" - ], - tokens: [ - ADDRESSES.base.USDC - ] - }, - bsc: { - owners: [ - "0x916A6314e9d8E51BEB18b355ad52b4506262620f", - "0x29Ff7d778890F40ccE8E74de67D082c0e2DCc1Bc" - ], - tokens: [ - ADDRESSES.bsc.USDT - ] - }, - celo: { - owners: [ - "0x65583D94d848E398dE3ef8382e5827000eb99961", - "0x29Ff7d778890F40ccE8E74de67D082c0e2DCc1Bc" - ], - tokens: [ - ADDRESSES.celo.USDT_1 - ] - } -} - -Object.keys(config).forEach(async (chain) => { - const { owners, tokens } = config[chain] - - module.exports[chain] = { - tvl: sumTokensExport({ owners: owners, tokens }) - } -}); \ No newline at end of file diff --git a/projects/nodoka/index.js b/projects/nodoka/index.js deleted file mode 100644 index f05d471f2a8..00000000000 --- a/projects/nodoka/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const BigNumber = require("bignumber.js"); - -const nethContract = "0xf2e51185caaded6c63d587943369f0b5df169344"; -const nethPool = "0xdb5c6D2DE362606C2Fa84bc948fE0401ea11e207"; - -async function tvl(ts, block) { - const nethTotalSupply = await sdk.api.abi.call({ - block, - target: nethContract, - abi: 'erc20:totalSupply', - }); - - let price = await getNethPrice(); - let supply = new BigNumber(nethTotalSupply.output).div(10 ** 18); - return { - ethereum: supply * price, - }; -} - -async function getNethPrice(block) { - const { output: slot0 } = await sdk.api.abi.call({ - block, - target: nethPool, - abi: 'function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)' - }) - const priceSqrt = new BigNumber(slot0[0]); - const nethPriceInEth = (priceSqrt * priceSqrt) / 2 ** 192; - - return nethPriceInEth; -} - -module.exports = { - ethereum: { - tvl, - }, -}; diff --git a/projects/nolus/index.js b/projects/nolus/index.js deleted file mode 100644 index 8238451847e..00000000000 --- a/projects/nolus/index.js +++ /dev/null @@ -1,163 +0,0 @@ -const { queryContract, queryManyContracts, queryContracts } = require('../helper/chain/cosmos') -const { sleep } = require('../helper/utils') - -// Osmosis Noble USDC Protocol Contracts (OSMOSIS-OSMOSIS-USDC_NOBLE) pirin-1 -const osmosisNobleOracleAddr = 'nolus1vjlaegqa7ssm2ygf2nnew6smsj8ref9cmurerc7pzwxqjre2wzpqyez4w6' -const osmosisNobleLppAddr = 'nolus1ueytzwqyadm6r0z8ajse7g6gzum4w3vv04qazctf8ugqrrej6n4sq027cf' -const osmosisNobleLeaserAddr = 'nolus1dca9sf0knq3qfg55mv2sn03rdw6gukkc4n764x5pvdgrgnpf9mzsfkcjp6' - -// Osmosis axlUSDC Protocol Contracts (OSMOSIS-OSMOSIS-USDC_AXELAR) pirin-1 -// const osmosisAxlOracleAddr = 'nolus1vjlaegqa7ssm2ygf2nnew6smsj8ref9cmurerc7pzwxqjre2wzpqyez4w6' -const osmosisAxlLeaserAddr = 'nolus1wn625s4jcmvk0szpl85rj5azkfc6suyvf75q6vrddscjdphtve8s5gg42f' -const osmosisAxlLppAddr = 'nolus1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sqaa3c5' - -// Osmosis stATOM Protocol Contracts (OSMOSIS-OSMOSIS-ST_ATOM) pirin-1 -// const osmosisStAtomOracleAddr = 'nolus1mtcv0vhpt94s82mcemj5sc3v94pq3k2g62yfa5p82npfnd3xqx8q2w8c5f' -const osmosisStAtomLeaserAddr = 'nolus1xv0erzdcphnpkf8tr76uynldqx6sspw7782zg9wthz8xpemh7rnsv4nske' -// const osmosisStAtomLppAddr = 'nolus1jufcaqm6657xmfltdezzz85quz92rmtd88jk5x0hq9zqseem32ysjdm990' - -// Osmosis ATOM Protocol Contracts (OSMOSIS-OSMOSIS-ATOM) pirin-1 -const osmosisAtomOracleAddr = 'nolus16xt97qd5mc2zkya7fs5hvuavk92cqds82qjuq6rf7p7akxfcuxcs5u2280' -const osmosisAtomLeaserAddr = 'nolus1rspfrcnjn9vumct3nn20gktksrcjstrh5z8qp340lr8s7fmasd2qmjydk2' -const osmosisAtomLppAddr = 'nolus1u0zt8x3mkver0447glfupz9lz6wnt62j70p5fhhtu3fr46gcdd9s5dz9l6' - -// Osmosis allBTC Protocol Contracts (OSMOSIS-OSMOSIS-ALL_BTC) pirin-1 -const osmosisBtcOracleAddr = 'nolus1y0nlrnw25mh2vxhaupamwca4wdvuxs26tq4tnxgjk8pw0gxevwfq5ry07c' -const osmosisBtcLeaserAddr = 'nolus1dzwc9hu9aqlmm7ua4lfs2lyafmy544dd8vefsmjw57qzcanhsvgsf4u3ld' -const osmosisBtcLppAddr = 'nolus1w2yz345pqheuk85f0rj687q6ny79vlj9sd6kxwwex696act6qgkqfz7jy3' - -// Osmosis allSOL Protocol Contracts (OSMOSIS-OSMOSIS-ALL_SOL) pirin-1 -const osmosisSolOracleAddr = 'nolus153kmhl85vavd03r9c7ardw4fgydge6kvvhrx5v2uvec4eyrlwthsejc6ce' -const osmosisSolLeaserAddr = 'nolus1lj3az53avjf8s9pzwvfe86d765kd7cmnhjt76vtqxjvn08xu0c6saumtza' -const osmosisSolLppAddr = 'nolus1qufnnuwj0dcerhkhuxefda6h5m24e64v2hfp9pac5lglwclxz9dsva77wm' - -// Osmosis AKT Protocol Contracts (OSMOSIS-OSMOSIS-AKT) pirin-1 -const osmosisAktOracleAddr = 'nolus12sx0kr60rptp846z2wvuwyxn47spg55dcnzwrhl4f7nfdduzsrxq7rfetn' -const osmosisAktLeaserAddr = 'nolus1shyx34xzu5snjfukng323u5schaqcj4sgepdfcv7lqfnvntmq55sj94hqt' -const osmosisAktLppAddr = 'nolus1lxr7f5xe02jq6cce4puk6540mtu9sg36at2dms5sk69wdtzdrg9qq0t67z' - -// Astroport Protocol Contracts (NEUTRON-ASTROPORT-USDC_AXELAR) pirin-1 -const astroportOracleAddr = 'nolus1jew4l5nq7m3xhkqzy8j7cc99083m5j8d9w004ayyv8xl3yv4h0dql2dd4e' -const astroportLppAddr = 'nolus1qqcr7exupnymvg6m63eqwu8pd4n5x6r5t3pyyxdy7r97rcgajmhqy3gn94' -const astroportLeaserAddr = 'nolus1et45v5gepxs44jxewfxah0hk4wqmw34m8pm4alf44ucxvj895kas5yrxd8' - -// Astroport Noble USDC Protocol Contracts (NEUTRON-ASTROPORT-USDC_NOBLE) pirin-1 -const astroportNobleOracleAddr = 'nolus1vhzdx9lqexuqc0wqd48c5hc437yzw7jy7ggum9k25yy2hz7eaatq0mepvn' -const astroportNobleLeaserAddr = 'nolus1aftavx3jaa20srgwclakxh8xcc84nndn7yvkq98k3pz8ydhy9rvqkhj8dz' -const astroportNobleLppAddr = 'nolus17vsedux675vc44yu7et9m64ndxsy907v7sfgrk7tw3xnjtqemx3q6t3xw6' - -const _6Zeros = 1000000 - - -async function getLeaseCodeId(leaserAddress) { - const leaserContract = await queryContract({ contract: leaserAddress, chain: 'nolus', data: { 'config': {} } }) - const leaseCodeId = leaserContract?.config?.lease_code - if (!leaseCodeId) { - return 0 - } - - return leaseCodeId -} - -async function getLeaseContracts(leaseCodeId) { - return await queryContracts({ chain: 'nolus', codeId: leaseCodeId, }) -} - -async function getLeases(leaseAddresses) { - return await queryManyContracts({ permitFailure: true, contracts: leaseAddresses, chain: 'nolus', data: {"state":{}} }) -} - -async function getLppTvl(lppAddresses) { - const lpps = await queryManyContracts({ contracts: lppAddresses, chain: 'nolus', data: { 'lpp_balance': [] } }) - - let totalLpp = 0 - let divisor = _6Zeros; // Default 6 decimals - - // Adjust divisor based on specific addresses for allBTC and allSOL - if (lppAddresses.includes(osmosisBtcLppAddr)) { - divisor = 100000000; // 8 decimals for BTC - } else if (lppAddresses.includes(osmosisSolLppAddr)) { - divisor = 1000000000; // 9 decimals for SOL - } - - lpps.forEach(v => { - totalLpp += Number(v.balance.amount) - }) - - return totalLpp / divisor; -} - -function sumAssests(api, leases, currencies) { - leases.forEach(v => { - if (v.opened) { - let ticker = v.opened.amount.ticker - const amount = parseInt(v.opened.amount.amount, 10) - const currencyData = find(currencies, (n) => n.ticker == ticker) - if (currencyData) { - api.add(currencyData.dex_symbol, amount) - } - } - }) -} - -function find(collection, predicate) { - for (let i = 0; i < collection.length; i++) { - if (predicate(collection[i])) { - return collection[i] - } - } - - return undefined -} - -async function tvl(api, protocols) { - for (let i = 0; i < protocols.length; i++) { - await sleep(2000) - const p = protocols[i] - const oracleData = await queryContract({ contract: p.oracle, chain: 'nolus', data: { 'currencies': {} } }) - const leaseCodeId = await getLeaseCodeId(p.leaser) - const leaseContracts = await getLeaseContracts(leaseCodeId) - const leases = await getLeases(leaseContracts) - sumAssests(api, leases, oracleData) - } -} - -module.exports = { - methodology: 'The combined total of lending pool assets and the current market value of active margin positions', - nolus: { - tvl: async () => { - return { - 'axlusdc': await getLppTvl([osmosisAxlLppAddr, astroportLppAddr]), - 'usd-coin': await getLppTvl([osmosisNobleLppAddr, astroportNobleLppAddr]), - // 'stride-staked-atom': await getLppTvl([osmosisStAtomLppAddr]), - 'osmosis-allbtc': await getLppTvl([osmosisBtcLppAddr]), - 'osmosis-allsol': await getLppTvl([osmosisSolLppAddr]), - 'akash-network': await getLppTvl([osmosisAktLppAddr]), - 'cosmos': await getLppTvl([osmosisAtomLppAddr]) - } - } - }, - neutron: { - tvl: async (api) => { - return await tvl(api, [ - { leaser: astroportLeaserAddr, oracle: astroportOracleAddr }, - { leaser: astroportNobleLeaserAddr, oracle: astroportNobleOracleAddr }, - ]) - } - }, - osmosis: { - tvl: async (api) => { - return await tvl(api, [ - { leaser: osmosisNobleLeaserAddr, oracle: osmosisNobleOracleAddr }, - // { leaser: osmosisAxlLeaserAddr, oracle: osmosisAxlOracleAddr }, - // { leaser: osmosisStAtomLeaserAddr, oracle: osmosisStAtomOracleAddr }, - { leaser: osmosisAtomLeaserAddr, oracle: osmosisAtomOracleAddr }, - { leaser: osmosisBtcLeaserAddr, oracle: osmosisBtcOracleAddr }, - { leaser: osmosisSolLeaserAddr, oracle: osmosisSolOracleAddr }, - { leaser: osmosisAktLeaserAddr, oracle: osmosisAktOracleAddr } - ]) - } - } -} - -// node test.js projects/nolus/index.js diff --git a/projects/nomad/index.js b/projects/nomad/index.js deleted file mode 100644 index 09d660c8c91..00000000000 --- a/projects/nomad/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// proxy contract: -// https://github.com/nomad-xyz/config/blob/main/production.json -// token holdings: -// https://etherscan.io/tokenholdings?a=PUT CONTRACT ADDRESS HERE - -const HOME_CHAINS = { - 'ethereum': '0x88A69B4E698A4B090DF6CF5Bd7B2D47325Ad30A3', - 'moonbeam': '0xD3dfD3eDe74E0DCEBC1AA685e151332857efCe2d', - 'milkomeda': '0x9faF7f27c46ACdeCEe58Eb4B0Ab6489E603EC251', - 'evmos': '0x2eff94f8c56c20f85d45e9752bfec3c0522c55c7' -}; - -const TOKEN_ADDRESSES = [ - { - 'ethereum': ADDRESSES.ethereum.FRAX - }, - { - 'ethereum': ADDRESSES.ethereum.USDC - }, - { - 'ethereum': ADDRESSES.ethereum.DAI - }, - { - 'ethereum': ADDRESSES.ethereum.USDT - }, - { - // FXS - 'ethereum': ADDRESSES.ethereum.FXS - }, - { - 'ethereum': ADDRESSES.ethereum.WETH - }, - { - 'ethereum': ADDRESSES.ethereum.WBTC - }, - { - // IAG - 'ethereum': '0x40EB746DEE876aC1E78697b7Ca85142D178A1Fc8' - }, - { - // CQT - 'ethereum': '0xD417144312DbF50465b1C641d016962017Ef6240' - }, - { - // C3 - 'ethereum': '0xf1a91C7d44768070F711c68f33A7CA25c8D30268' - }, - { - // GERO - 'ethereum': '0x3431F91b3a388115F00C5Ba9FdB899851D005Fb5' - }, - { - // CARDS - 'ethereum': '0x3d6F0DEa3AC3C607B3998e6Ce14b6350721752d9' - }, - { - // renBTC - 'ethereum': '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D' - }, - { - // sBTC - 'ethereum': '0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6' - }, - { - // HBTC - 'ethereum': '0x0316EB71485b0Ab14103307bf65a021042c6d380' - } -]; - -function tvl(api) { - const toa = [] - const owner = HOME_CHAINS[api.chain] - TOKEN_ADDRESSES.forEach(t => { - if (t[api.chain]) toa.push([t[api.chain], owner]) - }) - return api.sumTokens({ tokensAndOwners: toa }) -} - -module.exports = { - // hallmarks: [ - // [1659312000, "trusted root exploit"] - // ], - methodology: 'counts the total amount of assets locked in the Nomad token bridge.', -}; - -Object.keys(HOME_CHAINS).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/nome-protocol/index.js b/projects/nome-protocol/index.js deleted file mode 100644 index ab8006e9a52..00000000000 --- a/projects/nome-protocol/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") - -// POOLS -const REWARDS_POOLS_NOME_HONEY_LP = '0xf4399d583d8dad39399ea6a99ca218290595aedc' -const REWARDS_POOLS_NOME_HONEY_LP_V2 = '0x5664be48b3575e4bca19d95f75649c0e5c0ac94a' -const REWARDS_POOLS_USDbr_HONEY_LP = '0x422bd07acb1f7fa86682fcf211554ca500d0be78' -const KODIAL_POOL_USDbr_HONEY_LP = '0xf4D9e842a5D388758aD6d48b1e4739224Cd8Fa94' -const LIQUIDE_BOARDROOM = '0x50caa9627a940bcd4d5f3c3ed231252425af50cf' -const STAB_FUND = '0xff491a00b12be29413a2b29c2499cac50e4ec35a' - -// TOKENS -const NOME_TOKEN = '0xfaf4c16847bd0ebac546c49a9c9c6b81abd4b08c' -const USDbr_TOKEN = '0x6d4223dae2a8744a85a6d44e97f3f61679f87ee6' -const HONEY_TOKEN = ADDRESSES.berachain.HONEY - -// LP POOLS -const NOME_HONEY_LP = '0x54270bea720a79db0a34645053b02740ebcbfad5' -const USDbr_HONEY_LP = '0xb1f0c3a875512191eb718b305f192dc19564f513' - - -async function tvl(api) { - const tokens = await api.call({ abi: 'address[]:allAllowedTokens', target: STAB_FUND}) - return api.sumTokens({ owner: STAB_FUND, tokens}) -} - -module.exports = { - berachain: { - tvl, - pool2: sumTokensExport({ - owners: [ - REWARDS_POOLS_NOME_HONEY_LP, - REWARDS_POOLS_USDbr_HONEY_LP, - KODIAL_POOL_USDbr_HONEY_LP, - REWARDS_POOLS_NOME_HONEY_LP_V2 - ], - tokens: [ - NOME_HONEY_LP, - USDbr_HONEY_LP, - HONEY_TOKEN, - NOME_TOKEN, - USDbr_TOKEN - ]}), - staking: sumTokensExport({ owners: [LIQUIDE_BOARDROOM], tokens: [NOME_TOKEN] }), - } -} \ No newline at end of file diff --git a/projects/nomiswap/index.js b/projects/nomiswap/index.js deleted file mode 100644 index 01839db1af4..00000000000 --- a/projects/nomiswap/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require("../helper/unknownTokens"); -const { stakings } = require("../helper/staking"); -const sdk = require('@defillama/sdk') - -const constantProductFactory = "0xd6715A8be3944ec72738F0BFDC739d48C3c29349"; -const stableSwapFactory = "0xC6B7ee49D386bAe4FD501F2d2f8d18828F1f6285"; -const factories = [constantProductFactory, stableSwapFactory].map(factory => getUniTVL({ - factory, - useDefaultCoreAssets: true -})) - -const NMX = ADDRESSES.bsc.NMX - -const stakingPools = [ - // Staking pool - "0xdbf1b10fe3e05397cd454163f6f1ed0c1181c3b3", -] - -module.exports = { - bsc: { - staking: stakings(stakingPools, NMX), - tvl: sdk.util.sumChainTvls(factories), - }, -}; \ No newline at end of file diff --git a/projects/nonkyc/index.js b/projects/nonkyc/index.js deleted file mode 100644 index 892db4014ff..00000000000 --- a/projects/nonkyc/index.js +++ /dev/null @@ -1,137 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - /* - alephium: { - owners: [ - '1DiovRDAHyYJTudaTEhccZaGMTSCFtJ3NxvNGFWkXnCSJ' - ] - }, -*/ //we dont support alephium on CEX dashboard - algorand: { - owners: [ - '26NEOQ2ZVVM6C53LVFC7MUNA32HF4S2DCZT5JZ5SDSKTN4OOMA7VMIRZVA' - ] - }, - arbitrum: { - owners: [ - '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7', - '0x9a1Dfd705130ef60245d6FC798411f296f641119' - ] - }, - avax: { - owners: [ - '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7', - '0x9a1Dfd705130ef60245d6FC798411f296f641119' - ] - }, - base: { - owners: [ - '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7', - '0x9a1Dfd705130ef60245d6FC798411f296f641119' - ] - }, - /* - bitcoin: { - owners: bitcoinAddressBook.nonkyc - }, // remove it for now - /* - bitcoincash: { - owners: [ - 'qzfew0ck3kxjdytrr2vnycdjnnsyju3pwsrgsupqj2', - ] - }, - */ // we dont support bitcoincash on CEX dashboard - bsc: { - owners: [ - '0x15d7619c8457e2F89ea28c720b1d7941C245d27e', - '0x473ba7D925b147024Ff5F6b19eC802DbB54E8acf' - ] - }, - cardano: { - owners: [ - 'addr1qxd9jjmxd4gl2kf4jh99nnhqjsk5gn597ryq25045ttaschx70mgasdwgef63zgwl0fac38mdwaszwsg7uu0d2j5ckqsgsva7r' - ] - }, - /* - dash: { - owners: [ - 'XauVSyTHwQiwt5HLiMKEYhCZr9z4dwzyn4' - ] - }, //// we dont support dash neither doge on CEX dashboard - doge: { - owners: [ - 'DFbKm2cjt1Y36sKPQc6RQc3MsLmwcccTJx' - ] - }, - */ - energi: { - owners: [ - '0x7b4D11b7fABC161bc09E3Ee86C3d34Dff40F5a47', - '0x2024a4A6a3f1eC6FC61AA62E3f801ea59962304F' - ] - }, - ethereum: { - owners: [ - '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7', - '0x9a1Dfd705130ef60245d6FC798411f296f641119' - ], - }, - /* - ethereumclassic: { - owners: [ - '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' - ], - }, //we dont support ethclassic on CEX dashboard - */ - flare: { - owners: [ - '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7', - '0x9a1Dfd705130ef60245d6FC798411f296f641119' - ], - }, - /* - fusion: { - owners: [ - '0x7b4D11b7fABC161bc09E3Ee86C3d34Dff40F5a47' - ], - }, // no support on CEX - */ - litecoin: { - owners: [ - 'ltc1qemulmneuu7lv3z9a00v243u23dt0vygcq6cwp7' - ], - }, - optimism: { - owners: [ - '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7', - '0x9a1Dfd705130ef60245d6FC798411f296f641119' - ], - }, - polygon: { - owners: [ - '0xA785844dF37E04d89D0Ae8F036e13630ad6495e8', - '0x66Ef5728f5a26C8DF12168a114c09a64E5Bb5461' - ] - }, - ripple: { - owners: [ - 'rHmku65GJrrsp6Sb7KRzCgM2tAA3JBACQZ' - ] - }, - sonic: { - owners: [ - '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7', - '0x9a1Dfd705130ef60245d6FC798411f296f641119' - ], - }, - tron: { - owners: [ - 'TAEbfGoPFxpW8QSBMnce1snm9om3QwH6rU' - ] - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'All reserves information can be found here https://nonkyc.io/allreserves. Addresses with less than $10 value in assets are not tracked.' diff --git a/projects/noon/index.js b/projects/noon/index.js deleted file mode 100644 index 295ca37597e..00000000000 --- a/projects/noon/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const { nullAddress } = require("../helper/unwrapLPs"); -const sdk = require('@defillama/sdk') - -const contracts = { - ethereum: { - usn: '0xdA67B4284609d2d48e5d10cfAc411572727dc1eD', - susn: '0xE24a3DC889621612422A64E6388927901608B91D', - }, - sophon: { - usn: '0xC1AA99c3881B26901aF70738A7C217dc32536d36', - susn: '0xb87dbe27db932bacaaa96478443b6519d52c5004', - }, - era: { - usn: '0x0469d9d1dE0ee58fA1153ef00836B9BbCb84c0B6', - susn: '0xB6a09d426861c63722Aa0b333a9cE5d5a9B04c4f', - }, - tac: { - usn: '0x51A30E647D33A044967FA3DBb04d6ED6F45455F6', - susn: '0x5Ced7F73B76A555CCB372cc0F0137bEc5665F81E', - } -} - -function tvl(chain) { - return async (api) => { - const { usn } = contracts[chain] - const supply = await api.call({ target: usn, abi: 'erc20:totalSupply' }) - api.add(usn, supply) - } -} - -function staking(chain) { - return async (api) => { - const { usn, susn } = contracts[chain] - const balance = await api.call({ - target: usn, - params: [susn], - abi: 'erc20:balanceOf' - }) - api.add(usn, balance) - } -} - -module.exports = { - methodology: "TVL is total supply of USN tokens. Staking is USN balance in sUSN contract.", - ethereum: { - tvl: tvl('ethereum'), - }, - sophon: { - tvl: tvl('sophon') - }, - era: { - tvl: tvl('era') - }, - tac: { - tvl: tvl('tac'), - }, - hallmarks: [ - [1737979200, "Public Beta"] - ] -} diff --git a/projects/nord-finance/config.js b/projects/nord-finance/config.js deleted file mode 100644 index 970fe08f0fd..00000000000 --- a/projects/nord-finance/config.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - ethereum: { - toa: [ - [ADDRESSES.ethereum.USDC, '0x53E1c9750014C7Cf8303D69A3CA06A555C739DD0'], - [ADDRESSES.ethereum.USDT, '0xCD4F2844b11A4515398fD2201247Cf2ed411245f'], - [ADDRESSES.ethereum.DAI, '0x6Db6ABb2a55154C385e90d3fD05EE8ca46e3BA35'], - [ADDRESSES.ethereum.USDC, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - [ADDRESSES.ethereum.WBTC, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - [ADDRESSES.ethereum.WETH, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - [ADDRESSES.ethereum.UNI, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - [ADDRESSES.ethereum.AAVE, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - [ADDRESSES.ethereum.MATIC, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - [ADDRESSES.ethereum.CRV, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - ], - staking: [ - ['0x6e9730ecffbed43fd876a264c982e254ef05a0de', '0x2b9a023415f0feeb88597c1a7d09fdefa0ef5614'], - ], - pool2: [ - ['0x5239873C892376799B6Cb49a3CFB1146d4A260b8', '0x8c043C37a5f16440A1d6919C7F60aBaEd0592b31'], - ], - }, - polygon: { - toa: [ - [ADDRESSES.polygon.USDC, '0x8a5Ae804Da4924081663D4C5DaB4DC9BB7092E2E'], - [ADDRESSES.polygon.USDT, '0xa4dbb459fb9051b976947d2d8ab74477e1720a73'], - [ADDRESSES.polygon.DAI, '0xeE2dEf710a8a0021DCbF99C4cD7f69Dc536fc57b'], - [ADDRESSES.polygon.WBTC, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - [ADDRESSES.polygon.WETH_1, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - ['0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - ['0xb33eaad8d922b1083446dc23f610c2567fb5180f', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - ['0xd6df932a45c0f255f85145f286ea0b292b21c90b', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - [ADDRESSES.polygon.WMATIC_2, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - [ADDRESSES.polygon.USDC, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - ], - staking: [ - ['0xf6f85b3f9fd581c2ee717c404f7684486f057f95', '0xf0882a08D855ec8Ad3f25087dE3FB311A5344b20'], - ['0xf6f85b3f9fd581c2ee717c404f7684486f057f95', '0x9b2311c6D57EA5a65B29223C87C50C59E1D9cF13'], - ], - }, - avax: { - toa: [ - [ADDRESSES.avax.USDC_e, '0xAA1110b6A39647f93dfBbc6345216912E1dee6FF'], - [ADDRESSES.avax.USDT_e, '0xFbb37792f98fd57AC1f2f20b151e2db5cceF7F11'], - [ADDRESSES.avax.DAI, '0xaF3745feCEe0a79c5F19991291Cd60B716C4F698'], - ], - staking: [ - ['0x8965349fb649a33a30cbfda057d8ec2c48abe2a2', '0x1929aED2175688252C9388df11B162F7303ff926'], - ], - }, -} \ No newline at end of file diff --git a/projects/nord-finance/index.js b/projects/nord-finance/index.js deleted file mode 100644 index 32b39b62cda..00000000000 --- a/projects/nord-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens } = require('../helper/unwrapLPs') -const config = require('./config') - -module.exports = {} - -Object.keys(config).forEach(chain => { - const { toa = [], staking = [], pool2 = [] } = config[chain] - const exportObj = {} - - if (toa.length) - exportObj.tvl = async (_, _b, { [chain]: block }) => sumTokens({}, toa, block, chain) - - if (staking.length) - exportObj.staking = async (_, _b, { [chain]: block }) => sumTokens({}, staking, block, chain) - - if (pool2.length) - exportObj.pool2 = async (_, _b, { [chain]: block }) => sumTokens({}, pool2, block, chain) - - module.exports[chain] = exportObj - -}) \ No newline at end of file diff --git a/projects/northpole/abi.json b/projects/northpole/abi.json deleted file mode 100644 index 11f18e61dd4..00000000000 --- a/projects/northpole/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalTVL": "uint256:totalTVL" -} \ No newline at end of file diff --git a/projects/northpole/index.js b/projects/northpole/index.js deleted file mode 100644 index cee6a702d4b..00000000000 --- a/projects/northpole/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - methodology: 'The cumulative market value of each vault collateral is TVL', - avax: { - tvl: sumTokensExport({ - owner: '0xBBe7bF1c422eFBb5B2cB7a91A6f0AA7CdE86C1d3', tokens: [ - ADDRESSES.avax.WETH_e, - ADDRESSES.avax.WBTC_e, - ADDRESSES.avax.WAVAX, - '0x321E7092a180BB43555132ec53AaA65a5bF84251', - ] - }), - }, -} \ No newline at end of file diff --git a/projects/nostra-alpha/abi.js b/projects/nostra-alpha/abi.js deleted file mode 100644 index 176d94dc942..00000000000 --- a/projects/nostra-alpha/abi.js +++ /dev/null @@ -1,34 +0,0 @@ -const assetToken = [ - { - "name": "underlyingAsset", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "_underlyingAsset", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" - }, - { - "name": "totalSupply", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "totalSupply", - "type": "Uint256" - } - ], - "stateMutability": "view" - } -] - -const assetTokenAbi = {} -assetToken.forEach(i => assetTokenAbi[i.name] = i) - -module.exports = { - assetTokenAbi -} \ No newline at end of file diff --git a/projects/nostra-alpha/index.js b/projects/nostra-alpha/index.js deleted file mode 100644 index ffee6409258..00000000000 --- a/projects/nostra-alpha/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const { multiCall } = require("../helper/chain/starknet"); -const { assetTokenAbi } = require("./abi"); - -const supplyTokens = [ - // WBTC - "0x0061d892cccf43daf73407194da9f0ea6dbece950bb24c50be2356444313a707", - "0x00687b5d9e591844169bc6ad7d7256c4867a10cee6599625b9d78ea17a7caef9", - "0x07788bc687f203b6451f2a82e842b27f39c7cae697dace12edfb86c9b1c12f3d", - "0x06b59e2a746e141f90ec8b6e88e695265567ab3bdcf27059b4a15c89b0b7bd53", - // ETH - "0x002f8deaebb9da2cb53771b9e2c6d67265d11a4e745ebd74a726b8859c9337b9", - "0x070f8a4fcd75190661ca09a7300b7c93fab93971b67ea712c664d7948a8a54c6", - "0x04f89253e37ca0ab7190b2e9565808f105585c9cacca6b2fa6145553fa061a41", - "0x0553cea5d1dc0e0157ffcd36a51a0ced717efdadd5ef1b4644352bb45bd35453", - // USDC - "0x06af9a313434c0987f5952277f1ac8c61dc4d50b8b009539891ed8aaee5d041d", - "0x029959a546dda754dc823a7b8aa65862c5825faeaaf7938741d8ca6bfdc69e4e", - "0x05327df4c669cb9be5c1e2cf79e121edef43c1416fac884559cd94fcb7e6e232", - "0x047e794d7c49c49fd2104a724cfa69a92c5a4b50a5753163802617394e973833", - // DAI - "0x00b9b1a4373de5b1458e598df53195ea3204aa926f46198b50b32ed843ce508b", - "0x01ac55cabf2b79cf39b17ba0b43540a64205781c4b7850e881014aea6f89be58", - "0x02ea39ba7a05f0c936b7468d8bc8d0e1f2116916064e7e163e7c1044d95bd135", - "0x04403e420521e7a4ca0dc5192af81ca0bb36de343564a9495e11c8d9ba6e9d17", - // USDT - "0x06404c8e886fea27590710bb0e0e8c7a3e7d74afccc60663beb82707495f8609", - "0x055ba2baf189b98c59f6951a584a3a7d7d6ff2c4ef88639794e739557e1876f0", - "0x040375d0720245bc0d123aa35dc1c93d14a78f64456eff75f63757d99a0e6a83", - "0x003cd2066f3c8b4677741b39db13acebba843bbbaa73d657412102ab4fd98601", -]; -const debtTokens = [ - "0x075b0d87aca8dee25df35cdc39a82b406168fa23a76fc3f03abbfdc6620bb6d7", - "0x040b091cb020d91f4a4b34396946b4d4e2a450dbd9410432ebdbfe10e55ee5e5", - "0x03b6058a9f6029b519bc72b2cc31bcb93ca704d0ab79fec2ae5d43f79ac07f7a", - "0x0362b4455f5f4cc108a5a1ab1fd2cc6c4f0c70597abb541a99cf2734435ec9cb", - "0x065c6c7119b738247583286021ea05acc6417aa86d391dcdda21843c1fc6e9c6", -]; - -function* chunks(arr, n) { - for (let i = 0; i < arr.length; i += n) { - yield arr.slice(i, i + n); - } -} - -async function tvl(api) { - const supplied = await multiCall({ - calls: supplyTokens, - abi: assetTokenAbi.totalSupply, - }); - const borrowed = await multiCall({ - calls: debtTokens, - abi: assetTokenAbi.totalSupply, - }); - const underlyings = await multiCall({ - calls: debtTokens, - abi: assetTokenAbi.underlyingAsset, - }); - const data = [...chunks(supplied, 4)].map((chunk, i) => { - const totalSupply = chunk.reduce((acc, cur) => acc + cur, 0); - return totalSupply - borrowed[i]; - }); - api.addTokens(underlyings, data); -} - -async function borrowed(api) { - const borrowed = await multiCall({ - calls: debtTokens, - abi: assetTokenAbi.totalSupply, - }); - const underlyings = await multiCall({ - calls: debtTokens, - abi: assetTokenAbi.underlyingAsset, - }); - api.addTokens(underlyings, borrowed); -} - -module.exports = { - methodology: - "The TVL is calculated as a difference between supplied and borrowed assets.", - starknet: { - tvl, - borrowed, - }, -}; diff --git a/projects/nostra-pools/abi.js b/projects/nostra-pools/abi.js deleted file mode 100644 index b63fd6401ae..00000000000 --- a/projects/nostra-pools/abi.js +++ /dev/null @@ -1,75 +0,0 @@ -const factoryAbi = [ - { - name: "all_pairs", - type: "function", - inputs: [], - outputs: [ - { - type: "core::array::Array::", - }, - ], - state_mutability: "view", - }, -]; - -const pairAbi = [ - { - name: "core::integer::u256", - type: "struct", - members: [ - { - name: "low", - type: "core::integer::u128", - }, - { - name: "high", - type: "core::integer::u128", - }, - ], - }, - { - name: "token_0", - type: "function", - inputs: [], - outputs: [ - { - type: "core::starknet::contract_address::ContractAddress", - }, - ], - state_mutability: "view", - }, - { - name: "token_1", - type: "function", - inputs: [], - outputs: [ - { - type: "core::starknet::contract_address::ContractAddress", - }, - ], - state_mutability: "view", - }, - { - name: "get_reserves", - type: "function", - inputs: [], - outputs: [ - { - type: "(core::integer::u256, core::integer::u256)", - }, - ], - state_mutability: "view", - }, -]; - -const factory = {}; -const pair = {}; -factoryAbi.forEach((i) => (factory[i.name] = i)); -pairAbi.forEach((i) => (pair[i.name] = i)); - -module.exports = { - factory, - pair, - factoryAbi, - pairAbi, -}; diff --git a/projects/nostra-pools/index.js b/projects/nostra-pools/index.js deleted file mode 100644 index 4e660d9db0c..00000000000 --- a/projects/nostra-pools/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { addAddressPadding } = require('starknet') -const { call, multiCall, parseAddress } = require("../helper/chain/starknet"); -const { getCache, setCache } = require("../helper/cache"); -const abi = require("./abi"); -const { transformDexBalances } = require("../helper/portedTokens"); - -const factory = - "0x02a93ef8c7679a5f9b1fcf7286a6e1cadf2e9192be4bcb5cb2d1b39062697527"; -const cacheKey = `nostra-pools/${factory}`; - -async function tvl() { - let all_pairs = await call({ - target: factory, - abi: abi.factory.all_pairs, - }); - - const calls = all_pairs.map((i) => parseAddress(i)); - const cache = (await getCache(cacheKey, "starknet")) ?? {}; - - if (!cache.token0s) { - cache.token0s = []; - cache.token1s = []; - } - - const oldCacheLength = cache.token0s.length; - const newCalls = calls.slice(oldCacheLength); - - const _token0s = await multiCall({ abi: abi.pair.token_0, calls: newCalls }); - const _token1s = await multiCall({ abi: abi.pair.token_1, calls: newCalls }); - const reserves = await multiCall({ abi: abi.pair.get_reserves, calls }); - - cache.token0s.push(..._token0s.map((i) => addAddressPadding(i))); - cache.token1s.push(..._token1s.map((i) => addAddressPadding(i))); - - if (cache.token0s.length > oldCacheLength) { - await setCache(cacheKey, "starknet", cache); - } - - const badPoolIndex = calls.findIndex(p=>p==="0x07daadaa043b22429020efb9ac16bcc5f6a9b6ed3305de48e65a0ad5dcb76759"); - const data = []; - reserves.forEach((reserve, i) => { - if(i===badPoolIndex){ - return - } - data.push({ - token0: cache.token0s[i], - token1: cache.token1s[i], - token0Bal: +reserve["0"], - token1Bal: +reserve["1"], - }); - }); - - return transformDexBalances({ chain: "starknet", data }); -} - -module.exports = { - starknet: { - tvl, - }, - hallmarks: [ - [1706106000, "Nostra Pools launch"], - ] -}; diff --git a/projects/nostra-staked-strk/abi.js b/projects/nostra-staked-strk/abi.js deleted file mode 100644 index e75d6939fa9..00000000000 --- a/projects/nostra-staked-strk/abi.js +++ /dev/null @@ -1,20 +0,0 @@ -const stakedStrk = [ - { - name: "total_assets", - type: "function", - inputs: [], - outputs: [ - { - type: "core::integer::u256", - }, - ], - state_mutability: "view", - }, -]; - -const stakedStrkAbi = {}; -stakedStrk.forEach((i) => (stakedStrkAbi[i.name] = i)); - -module.exports = { - stakedStrkAbi, -}; diff --git a/projects/nostra-staked-strk/index.js b/projects/nostra-staked-strk/index.js deleted file mode 100644 index bc704f61c0d..00000000000 --- a/projects/nostra-staked-strk/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { call } = require("../helper/chain/starknet"); -const { stakedStrkAbi } = require("./abi"); - -const STAKED_STRK = - ADDRESSES.starknet.NSTSTRK; -const STRK = - ADDRESSES.starknet.STRK; - -async function tvl(api) { - const totalAssets = await call({ - target: STAKED_STRK, - abi: stakedStrkAbi.total_assets, - }); - api.addToken(STRK, totalAssets); -} - -module.exports = { - methodology: - "The TVL is calculated as a sum of total STRK deposited into the staking contract.", - starknet: { - tvl, - }, - hallmarks: [[1710349200, "Nostra Staked STRK launch"]], -}; diff --git a/projects/nostra/abi.js b/projects/nostra/abi.js deleted file mode 100644 index 176d94dc942..00000000000 --- a/projects/nostra/abi.js +++ /dev/null @@ -1,34 +0,0 @@ -const assetToken = [ - { - "name": "underlyingAsset", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "_underlyingAsset", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" - }, - { - "name": "totalSupply", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "totalSupply", - "type": "Uint256" - } - ], - "stateMutability": "view" - } -] - -const assetTokenAbi = {} -assetToken.forEach(i => assetTokenAbi[i.name] = i) - -module.exports = { - assetTokenAbi -} \ No newline at end of file diff --git a/projects/nostra/index.js b/projects/nostra/index.js deleted file mode 100644 index f10eb98de4c..00000000000 --- a/projects/nostra/index.js +++ /dev/null @@ -1,153 +0,0 @@ -const { multiCall } = require("../helper/chain/starknet"); -const { assetTokenAbi } = require("./abi"); - -const supplyTokens = [ - // WBTC - "0x0735d0f09a4e8bf8a17005fa35061b5957dcaa56889fc75df9e94530ff6991ea", - "0x05b7d301fa769274f20e89222169c0fad4d846c366440afc160aafadd6f88f0c", - "0x073132577e25b06937c64787089600886ede6202d085e6340242a5a32902e23e", - "0x036b68238f3a90639d062669fdec08c4d0bdd09826b1b6d24ef49de6d8141eaa", - // ETH - "0x01fecadfe7cda2487c66291f2970a629be8eecdcb006ba4e71d1428c2b7605c7", - "0x057146f6409deb4c9fa12866915dd952aa07c1eb2752e451d7f3b042086bdeb8", - "0x07170f54dd61ae85377f75131359e3f4a12677589bb7ec5d61f362915a5c0982", - "0x044debfe17e4d9a5a1e226dabaf286e72c9cc36abbe71c5b847e669da4503893", - // USDC - "0x002fc2d4b41cc1f03d185e6681cbd40cced61915d4891517a042658d61cba3b1", - "0x05dcd26c25d9d8fd9fc860038dcb6e4d835e524eb8a85213a8cda5b7fff845f6", - "0x06eda767a143da12f70947192cd13ee0ccc077829002412570a88cd6539c1d85", - "0x05f296e1b9f4cf1ab452c218e72e02a8713cee98921dad2d3b5706235e128ee4", - // DAIv0 - "0x022ccca3a16c9ef0df7d56cbdccd8c4a6f98356dfd11abc61a112483b242db90", - "0x04f18ffc850cdfa223a530d7246d3c6fc12a5969e0aa5d4a88f470f5fe6c46e9", - "0x02b5fd690bb9b126e3517f7abfb9db038e6a69a068303d06cf500c49c1388e20", - "0x005c4676bcb21454659479b3cd0129884d914df9c9b922c1c649696d2e058d70", - // USDT - "0x0360f9786a6595137f84f2d6931aaec09ceec476a94a98dcad2bb092c6c06701", - "0x0453c4c996f1047d9370f824d68145bd5e7ce12d00437140ad02181e1d11dc83", - "0x06669cb476aa7e6a29c18b59b54f30b8bfcfbb8444f09e7bbb06c10895bf5d7b", - "0x0514bd7ee8c97d4286bd481c54aa0793e43edbfb7e1ab9784c4b30469dcf9313", - // wstETH - "0x7e2c010c0b381f347926d5a203da0335ef17aefee75a89292ef2b0f94924864", - "0x5eb6de9c7461b3270d029f00046c8a10d27d4f4a4c931a4ea9769c72ef4edbb", - "0xca44c79a77bcb186f8cdd1a0cd222cc258bebc3bec29a0a020ba20fdca40e9", - "0x9377fdde350e01e0397820ea83ed3b4f05df30bfb8cf8055d62cafa1b2106a", - // LORDS - "0xd294e16a8d24c32eed65ea63757adde543d72bad4af3927f4c7c8969ff43d", - "0x2530a305dd3d92aad5cf97e373a3d07577f6c859337fb0444b9e851ee4a2dd4", - "0x507eb06dd372cb5885d3aaf18b980c41cd3cd4691cfd3a820339a6c0cec2674", - "0x739760bce37f89b6c1e6b1198bb8dc7166b8cf21509032894f912c9d5de9cbd", - // STRK - "0x7c535ddb7bf3d3cb7c033bd1a4c3aac02927a4832da795606c0f3dbbc6efd17", - "0x40f5a6b7a6d3c472c12ca31ae6250b462c6d35bbdae17bd52f6c6ca065e30cf", - "0x26c5994c2462770bbf940552c5824fb0e0920e2a8a5ce1180042da1b3e489db", - "0x7c2e1e733f28daa23e78be3a4f6c724c0ab06af65f6a95b5e0545215f1abc1b", - // nstSTRK - "0x4b11c750ae92c13fdcbe514f9c47ba6f8266c81014501baa8346d3b8ba55342", - "0x0142af5b6c97f02cac9c91be1ea9895d855c5842825cb2180673796e54d73dc5", - "0x78a40c85846e3303bf7982289ca7def68297d4b609d5f588208ac553cff3a18", - "0x67a34ff63ec38d0ccb2817c6d3f01e8b0c4792c77845feb43571092dcf5ebb5", - // UNO - "0x1325caf7c91ee415b8df721fb952fa88486a0fc250063eafddd5d3c67867ce7", - "0x2a3a9d7bcecc6d3121e3b6180b73c7e8f4c5f81c35a90c8dd457a70a842b723", - "0x6757ef9960c5bc711d1ba7f7a3bff44a45ba9e28f2ac0cc63ee957e6cada8ea", - "0x7d717fb27c9856ea10068d864465a2a8f9f669f4f78013967de06149c09b9af", - // NSTR - "0x2b674ffda238279de5550d6f996bf717228d316555f07a77ef0a082d925b782", - "0x6f8ad459c712873993e9ffb9013a469248343c3d361e4d91a8cac6f98575834", - "0x2589fc11f60f21af6a1dda3aeb7a44305c552928af122f2834d1c3b1a7aa626", - "0x46ab56ec0c6a6d42384251c97e9331aa75eb693e05ed8823e2df4de5713e9a4", - // DAI - "0x0184dd6328115c2d5f038792e427f3d81d9552e40dd675e013ccbf74ba50b979", - "0x036e722e04ef2ccadb9229b5415272353aaeb9554c989b83d4d932dba8dbe8f9", - "0x065bde349f553cf4bdd873e54cd48317eda0542764ebe5ba46984cedd940a5e4", - "0x000215cbd38a1e765cfd2c60bcb291c9d0b0bb7e7f56f682f0d3501303586185", - // EKUBO - "0x45863a5605ea7e77f2b043888a9efb1ff6e6b0fb9e62790ff987b2e084ca1f6", - "0x6b1063a4d5c32fef3486bf29d1719eb09481b52d31f7d86a50c64b0b8d5defb", - "0x06fd4a9efd0c884e0b29506169dd2fcad6b284d5bdbd46ede424abc26d71164", - "0x2360bd006d42c1a17d23ebe7ae246a0764dea4ac86201884514f86754ccc7b8", - // xSTRK - "0x6878fd475d5cea090934d690ecbe4ad78503124e4f80380a2e45eb417aafb9c", - "0x1b8d8e31f9dd1bde7dc878dd871225504837c78c40ff01cbf03a255e2154bf0", - "0x4d1125a716f547a0b69413c0098e811da3b799d173429c95da4290a00c139f7", - "0x257afe480da9255a026127cd3a295a580ef316b297a69be22b89729ae8c1d2a", - // BROTHER - "0x674d79e17ae51cbf3b49d443266460dce15215277d9c3aedd7e1733112e9e52", - "0x296f271f5ec4f45c93c1fd351bd44117795f5ef80c5134137d7dc9fce3dc364", - "0xf7c7bf6267b4c19d531ccd959cc4fb6ca39bc04af8b173f8255567b5688636", - "0x21bb27bc057be40e31752c53e7e8867b6d1b155ce46ae32454619adff0be777", - // sSTRK - "0x271f97bd18cdb2e7aff148db683be36891b0dbbffcd42024237a849ef7ad6cd", - "0x1dd8cab616528ba64689a2b7f10bad1acd6bb4e2de3f4f5dab1839f7a89a82e", - "0x24fbb2888e04b47f1bc1f3232528dcfc1ddf69d150b19241628e6d42b3545c6", - "0x1fb33831f458b0786e1a041ac2e9df7603635a7caa88aa4ed30c23a787d4e3a", -]; -const debtTokens = [ - "0x0491480f21299223b9ce770f23a2c383437f9fbf57abc2ac952e9af8cdb12c97", - "0x00ba3037d968790ac486f70acaa9a1cab10cf5843bb85c986624b4d0e5a82e74", - "0x063d69ae657bd2f40337c39bf35a870ac27ddf91e6623c2f52529db4c1619a51", - "0x066037c083c33330a8460a65e4748ceec275bbf5f28aa71b686cbc0010e12597", - "0x024e9b0d6bc79e111e6872bb1ada2a874c25712cf08dfc5bcf0de008a7cca55f", - "0x348cc417fc877a7868a66510e8e0d0f3f351f5e6b0886a86b652fcb30a3d1fb", - "0x35778d24792bbebcf7651146896df5f787641af9e2a3db06480a637fbc9fff8", - "0x1258eae3eae5002125bebf062d611a772e8aea3a1879b64a19f363ebd00947", - "0x292be6baee291a148006db984f200dbdb34b12fb2136c70bfe88649c12d934b", - "0x4b036839a8769c04144cc47415c64b083a2b26e4a7daa53c07f6042a0d35792", - "0x3e0576565c1b51fcac3b402eb002447f21e97abb5da7011c0a2e0b465136814", - "0x06726ec97bae4e28efa8993a8e0853bd4bad0bd71de44c23a1cd651b026b00e7", - "0x73fa792a8ad45303db3651c34176dc419bee98bfe45791ab12f884201a90ae2", - "0x424638c9060d08b4820aabbb28347fc7234e2b7aadab58ad0f101e2412ea42d", - "0x25a079284c3cd58bbed989250a169e7e52929070b4bcefaf8f0b9b7be77e5b1", - "0x4349ca3d519e1b1da9da5da3cf19e2039b1776a9fe98c529f95ead7964fe0d", -]; - -function* chunks(arr, n) { - for (let i = 0; i < arr.length; i += n) { - yield arr.slice(i, i + n); - } -} - -async function tvl(api) { - const supplied = await multiCall({ - calls: supplyTokens, - abi: assetTokenAbi.totalSupply, - }); - const borrowed = await multiCall({ - calls: debtTokens, - abi: assetTokenAbi.totalSupply, - }); - const underlyings = await multiCall({ - calls: debtTokens, - abi: assetTokenAbi.underlyingAsset, - }); - const data = [...chunks(supplied, 4)].map((chunk, i) => { - const totalSupply = chunk.reduce((acc, cur) => acc + cur, 0); - return totalSupply - borrowed[i]; - }); - api.addTokens(underlyings, data); -} - -async function borrowed(api) { - const borrowed = await multiCall({ - calls: debtTokens, - abi: assetTokenAbi.totalSupply, - }); - const underlyings = await multiCall({ - calls: debtTokens, - abi: assetTokenAbi.underlyingAsset, - }); - api.addTokens(underlyings, borrowed); -} - -module.exports = { - methodology: - "The TVL is calculated as a difference between supplied and borrowed assets.", - starknet: { - tvl, - borrowed, - }, - hallmarks: [ - [1697634000, "Nostra Money Market launch"] - ] -}; diff --git a/projects/notiboy/index.js b/projects/notiboy/index.js deleted file mode 100644 index 8713e8847b8..00000000000 --- a/projects/notiboy/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - timetravel: false, - algorand: { - tvl: () => 0 - } -} diff --git a/projects/notional-v3/index.js b/projects/notional-v3/index.js deleted file mode 100644 index 77ec4f3eb2e..00000000000 --- a/projects/notional-v3/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const abi = require('../notional/abi'); -const { cachedGraphQuery } = require('../helper/cache') - -const SUBGRAPHS = { - arbitrum: 'DnghsCNvJ4xmp4czX8Qn7UpkJ8HyHjy7cFN4wcH91Nrx', - ethereum: '4oVxkMtN4cFepbiYrSKz1u6HWnJym435k5DQRAFt2vHW' -}; -const vaultsQuery = `{ vaultConfigurations { id } }` - -const CONTRACTS = { - arbitrum: "0x1344A36A1B56144C3Bc62E7757377D288fDE0369", - ethereum: "0x6e7058c91F85E0F6db4fc9da2CA41241f5e4263f" -} - -async function addVaultTvl(api) { - let { vaultConfigurations } = await cachedGraphQuery(`notional-v3/${api.chain}`, SUBGRAPHS[api.chain], vaultsQuery) - const vaults = vaultConfigurations.map(i => i.id) - const abi = "function getStrategyVaultInfo() view returns ((address pool, uint8 singleSidedTokenIndex, uint256 totalLPTokens, uint256 totalVaultShares, uint256 maxPoolShare, uint256 oraclePriceDeviationLimitPercent))" - const data = await api.multiCall({ abi, calls: vaults, permitFailure: true }) - data.forEach(i => i && api.add(i.pool, i.totalLPTokens)) -} - -async function tvl(api) { - let oracles = await api.fetchList({ lengthAbi: abi.getMaxCurrencyId, itemAbi: abi.getPrimeCashHoldingsOracle, target: CONTRACTS[api.chain], startFromOne: true, }) - let underlying = await api.multiCall({ abi: 'address:underlying', calls: oracles.map((o) => ({ target: o })) }) - let holdings = await api.multiCall({ abi: 'address[]:holdings', calls: oracles.map((o) => ({ target: o })) }) - let tokens = underlying.concat(holdings.flatMap((_) => _)) - await addVaultTvl(api) - return sumTokens2({ tokens, owner: CONTRACTS[api.chain], api }) -} - -module.exports = { - arbitrum: { tvl }, - ethereum: { tvl } -}; \ No newline at end of file diff --git a/projects/notional/abi.json b/projects/notional/abi.json deleted file mode 100644 index 0ff67647c62..00000000000 --- a/projects/notional/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getMaxCurrencyId": "function getMaxCurrencyId() view returns (uint16)", - "getCurrency": "function getCurrency(uint16) view returns ((address,bool,int256,uint8,uint256),(address,bool,int256,uint8,uint256))", - "getPrimeCashHoldingsOracle": "function getPrimeCashHoldingsOracle(uint16) view returns (address)" -} \ No newline at end of file diff --git a/projects/notional/index.js b/projects/notional/index.js deleted file mode 100644 index ac2292616b6..00000000000 --- a/projects/notional/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const abi = require('./abi'); - -const v2Contract = "0x1344A36A1B56144C3Bc62E7757377D288fDE0369" - -async function tvl(api) { - let tokens = await api.fetchList({ lengthAbi: abi.getMaxCurrencyId, itemAbi: abi.getCurrency, target: v2Contract, startFromOne: true, }) - tokens = tokens.flat().map(i => i[0]) - const tokenNames = await api.multiCall({ abi: 'string:name', calls: tokens, permitFailure: true, }) - const nwTokens = tokens.filter((v, i) => tokenNames[i] && tokenNames[i].startsWith('Notional Wrapped')) - let nwBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: nwTokens.map(i => ({ target: i, params: v2Contract}))}) - const underlyingTokens = await api.multiCall({ abi: 'address:underlying', calls: nwTokens}) - const exchangeRate = await api.multiCall({ abi: 'uint256:getExchangeRateView', calls: nwTokens}) - nwBals = nwBals.map((bal, i) => bal * (exchangeRate[i]/1e18)) - api.addTokens(underlyingTokens, nwBals) - return sumTokens2({ api, owner: v2Contract, tokens, blacklistedTokens: nwTokens }) -} - -module.exports = { - deadFrom: '2024-08-22', - hallmarks: [[1724284800, "End of Deprecation process for migrating from Notional V2 to Notional V3"]], - ethereum: { tvl }, -}; \ No newline at end of file diff --git a/projects/novafox/index.js b/projects/novafox/index.js deleted file mode 100644 index 9d9890f7df3..00000000000 --- a/projects/novafox/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const NOVAFOX_STAKING_CONTRACT = '0x4803a6f0a93f4adb96318304a03f8dfddb15e423'; // NovaFoxStakeV2 -const NFX_TOKEN = '0xe1f864aE527d3646c222fe1b65460dB2D6E62228'; - -async function staking(api) { - // Call getTotalStaked() to get total staked NFX - const totalStaked = await api.call({ - abi: { - name: "getTotalStaked", - inputs: [], - outputs: [{ type: "uint256" }], - stateMutability: "view", - type: "function", - }, - target: NOVAFOX_STAKING_CONTRACT, - }); - - // Add the NFX token and its balance - api.add(NFX_TOKEN, totalStaked); -} - -module.exports = { - methodology: 'Staking TVL is calculated as the total NFX tokens staked in the NovaFoxStake contract on Cronos.', - cronos: { - tvl: () => ({}), // No base TVL since only staking - staking, - }, -}; diff --git a/projects/novaswap-v2/index.js b/projects/novaswap-v2/index.js deleted file mode 100644 index ed1b823fcd2..00000000000 --- a/projects/novaswap-v2/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - zklink: { factory: '0x9f94c91b178F5bc9fCcA3e5428b09A3d01CE5AC6', fromBlock: 3416798 }, -}) \ No newline at end of file diff --git a/projects/novaswap/index.js b/projects/novaswap/index.js deleted file mode 100644 index 1859081eacf..00000000000 --- a/projects/novaswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - zklink: { factory: '0xf8D35842f37800E349A993503372fb9E2CBb7E3d', fromBlock: 1676253 }, -}) \ No newline at end of file diff --git a/projects/novation/index.js b/projects/novation/index.js deleted file mode 100644 index 43c94998ca9..00000000000 --- a/projects/novation/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const config = { - blast: '0x3090Cd174218BB451C7865bDC621d47E1Bd6831C', -} - -Object.keys(config).forEach(chain => { - const comptroller = config[chain] - module.exports[chain] = compoundExports2({ - comptroller, abis: { - getAllMarkets: "address[]:allMarkets", - totalBorrows: "uint256:totalBorrow", - }, - }) -}) \ No newline at end of file diff --git a/projects/nowswap/index.js b/projects/nowswap/index.js deleted file mode 100644 index 19957883cfa..00000000000 --- a/projects/nowswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ - -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - hallmarks: [ - [1631664000, "Hacked"] - ], - ethereum: { - tvl: getUniTVL({ - factory: '0xa556E2d77060A42516C9A8002E9156d8d3c832CE', - }) - } -} \ No newline at end of file diff --git a/projects/noxa-fi/index.js b/projects/noxa-fi/index.js deleted file mode 100644 index 34692bacc40..00000000000 --- a/projects/noxa-fi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'abstract': '0xE1e98623082f662BCA1009a05382758f86F133b3' -}) \ No newline at end of file diff --git a/projects/nsure/abi.json b/projects/nsure/abi.json deleted file mode 100644 index 5a9ba21a185..00000000000 --- a/projects/nsure/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "totalPledge": "uint256:totalPledge", - "totalStake": "uint256:totalStake", - "totalSupply": "uint256:totalSupply", - "balanceOf": "function balanceOf(address account) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/nsure/index.js b/projects/nsure/index.js deleted file mode 100644 index 737fbd41d86..00000000000 --- a/projects/nsure/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const constant = { - capitalStakePool:"0xB98eD9800fCD2982d26Cf0E4a6B53C96bbeff6A6", - stakePool:"0x1a66f065303299d78693f122c800Ab3dEbE9c966", - buyPool:"0x702aff99b08e8891fc70811174701fb7407b4477", - surplusPool:"0x80e711b29e46d430ff1553eb2ada670e2a25593c", - treasuryPool:"0xfd0D28539aeD12477dcba1575eB40fca53969440", -} - -module.exports = { - start: '2021-04-22', // Thu Apr 22 2021 16:46:35 - ethereum: { tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.ethereum.WETH, constant.stakePool], - [ADDRESSES.ethereum.WETH, constant.buyPool], - [ADDRESSES.ethereum.WETH, constant.surplusPool], - [ADDRESSES.ethereum.WETH, constant.treasuryPool], - ['0x20945ca1df56d237fd40036d47e866c7dccd2114', constant.stakePool], - [ADDRESSES.null, '0xa6b658Ce4b1CDb4E7d8f97dFFB549B8688CAFb84'], - ] - }) } -}; - diff --git a/projects/nucleon/index.js b/projects/nucleon/index.js deleted file mode 100644 index 0ece2b9187d..00000000000 --- a/projects/nucleon/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require("../helper/unknownTokens"); - -const MasterchefV2 = "0xeced26633b5c2d7124b5eae794c9c32a8b8e7df2"; -// const NUT_TokenAddress = "0xfe197e7968807b311d476915db585831b43a7e3b"; -const XCFX_TokenAddress = "0x889138644274a7dc602f25a7e7d53ff40e6d0091"; - -const CFX_NUT_LP_TokenAddress = "0xd9d5748cb36a81fe58f91844f4a0412502fd3105"; -const CFX_XCFX_LP_TokenAddress = "0x949b78ef2c8d6979098e195b08f27ff99cb20448"; - -const WCFX = ADDRESSES.conflux.WCFX; - -module.exports = { - conflux: { - tvl: async (api) => { - const [exchangeRate] = await api.call({ target: '0x808f81acc4618a05c8253a7b41240468c08cd64c', abi: 'function XCFX_burn_estim(uint256) returns (uint256,uint256)', params: 1e18 +''}) - return { - ['conflux:' + WCFX]: (await api.call({ target: XCFX_TokenAddress, abi: 'erc20:totalSupply' })) * exchangeRate / 1e18 - } - }, - pool2: sumTokensExport({ owner: MasterchefV2, coreAssets: [WCFX], tokens: [CFX_NUT_LP_TokenAddress, CFX_XCFX_LP_TokenAddress] }), - } -} \ No newline at end of file diff --git a/projects/nucleus/index.js b/projects/nucleus/index.js deleted file mode 100644 index 31fa0f0472c..00000000000 --- a/projects/nucleus/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require("../helper/cache"); - -const sanitizeAndValidateEvmAddresses = (addresses) => { - return addresses - .map((address) => address.replace(/_$/, "")) - .filter((address) => /^0x[a-fA-F0-9]{40}$/.test(address)); -}; - -const vaults = [ - '0x52E4d8989fa8b3E1C06696e7b16DEf5d7707A0d1', // bobaETH - '0xA8A3A5013104e093245164eA56588DBE10a3Eb48', // ssETH - '0x6C587402dC88Ef187670F744dFB9d6a09Ff7fd76', // FETH - '0x5d82Ac302C64B229dC94f866FD10EC6CcF8d47A2', // rariETH - '0x66E47E6957B85Cf62564610B76dD206BB04d831a', // earnBTC - '0x9Ed15383940CC380fAEF0a75edacE507cC775f22', // earnETH - '0x196ead472583bc1e9af7a05f860d9857e1bd3dcc', // unifiETH - '0x19e099B7aEd41FA52718D780dDA74678113C0b32', // tETH - '0x9fAaEA2CDd810b21594E54309DC847842Ae301Ce', // seiyanETH - '0xa5f78b2a0ab85429d2dfbf8b60abc70f4cec066c', // nCREDIT - '0x593cCcA4c4bf58b7526a4C164cEEf4003C6388db', // nALPHA - '0x64ab176c545bb85eca75d53c3ffcb361deafb855', // inALPHA - '0xe3BEFC4eAA73803774F4d878417fa5e09193a75A', // opnALPHA - '0x11113Ff3a60C2450F4b22515cB760417259eE94B', // nBASIS - '0x1caad1a4028f80e2f142dbae46e6af5bb78e7d98', // opnBASIS - '0xe72fe64840f4ef80e3ec73a1c749491b5c938cb9', // nTBILL - '0xa6CBB3544621152c7002795067Ae8F2F5A18afcf', // opnTBILL - '0xbfc5770631641719cd1cf809d8325b146aed19de', // nINSTO - '0xb52b090837a035f93a84487e5a7d3719c32aa8a9', // nPAYFI - '0xdeA736937d464d288eC80138bcd1a2E109A200e3', // nETF - '0xDEa149f84859d1eC50480c209b71bFFa482b0530', // inTBILL - '0x9fbc367b9bb966a2a537989817a088afcaffdc4c', // nELIXIR - '0xd3bfd6e6187444170a1674c494e55171587b5641', // inELIXIR - '0x82c40e07277eBb92935f79cE92268F80dDc7caB4', // unifiUSD - '0x170d847a8320f3b6a77ee15b0cae430e3ec933a0', // unifiBTC - ADDRESSES.plume_mainnet.pUSD, // pUSD -] - -const tvl = async (api, chainId) => { - const tokens = await getConfig(`nucleus-tokens-${chainId}`, `https://backend.nucleusearn.io/v1/protocol/tokens?chain_id=${chainId}`) - const sanitizeTokens = sanitizeAndValidateEvmAddresses(tokens) - - const [symbols, decimals] = await Promise.all([ - api.multiCall({ calls: sanitizeTokens, abi: 'erc20:symbol', permitFailure: true }), - api.multiCall({ calls: sanitizeTokens, abi: 'erc20:decimals', permitFailure: true }) - ]) - - const erc20Tokens = sanitizeTokens.map((token, index) => { - const symbol = symbols[index] - const decimal = decimals[index] - if (!symbol || !decimal) return null; - return token - }).filter(Boolean) - - return api.sumTokens({ owners: vaults, tokens: erc20Tokens }) -} - -module.exports = { - ethereum: { tvl: (api) => tvl(api, 1) }, - plume_mainnet: { tvl: (api) => tvl(api, 98866) }, - arbitrum: { tvl: (api) => tvl(api, 42161) }, - swellchain: { tvl: (api) => tvl(api, 1923) }, -} \ No newline at end of file diff --git a/projects/nudes.js b/projects/nudes.js deleted file mode 100644 index 9949c66c0fb..00000000000 --- a/projects/nudes.js +++ /dev/null @@ -1,36 +0,0 @@ -const axios = require("axios"); - - -async function tvl() { - const query = { - "id": 1, - "jsonrpc": "2.0", - "method": "invokefunction", - "params": [ - "0x340720c7107ef5721e44ed2ea8e314cce5c130fa", - "balanceOf", - [{"type": "Hash160", "value": "afdd6abedf066ff8c5fbc868cc89f80eac467142"}] - ] - }; - - const options = { - method: "post", - url: "http://seed2.neo.org:10332", - data: query, - }; - - const response = await axios(options); - const nudes_amount = response.data.result.stack[0].value; - return {nudes: parseFloat(nudes_amount / 10 ** 8)}; -} - -module.exports = { - - methodology: `TVL is obtained by making calls on NEO N3 RPC node.`, - misrepresentedTokens: true, - timetravel: false, - neo: { - tvl: () => ({}), - staking: tvl - } -} diff --git a/projects/nuls.js b/projects/nuls.js deleted file mode 100644 index 0365d7c9aa8..00000000000 --- a/projects/nuls.js +++ /dev/null @@ -1,14 +0,0 @@ -const utils = require('./helper/utils') - -const url = "https://public1.nuls.io/nuls/tvl" - -const tvl = async (api) => { - const { data } = await utils.fetchURL(url) - return api.addUSDValue(Math.floor(data.tvl)) -} - -module.exports={ - misrepresentedTokens: true, - methodology: 'TVL counts native chain staking and data is pulled from: "https://public1.nuls.io/nuls/tvl".', - nuls: { tvl } -} \ No newline at end of file diff --git a/projects/numbers/index.js b/projects/numbers/index.js deleted file mode 100644 index 9aeaaf85a1c..00000000000 --- a/projects/numbers/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// -------- Addresses -------- -const config = { - ethereum: { - farm: "0x0cc111738b9627F6f518D746d8Ca9493E9074ABe", - lp: "0x22527f92f43Dc8bEa6387CE40B87EbAa21f51Df3", // USDC-NUM UniswapV2 LP - num: "0x3496b523e5c00a4b4150d6721320cddb234c3079", // NUM - }, - bsc: { - farm: "0xc0bE417Db06c4Ec2bDdD7432780AB1d47ae816Fe", - lp: "0x3b17F6682E8205239B5d4773CE3c1d9632743e88", // BUSD-NUM Pancake LP - num: "0xeceb87cf00dcbf2d4e2880223743ff087a995ad9", // NUM on BSC - }, -}; - -// -------- Core TVL helpers -------- -// Count only the exogenous side of the LPs (exclude NUM) -function makeChainTVL(chain) { - const { farm, lp, num } = config[chain]; - return async (_, _b, _c, { api }) => - sumTokens2({ - api, - owners: [farm], // farm contract holds the staked LPs - tokens: [lp], // unwrap this LP - resolveLP: true, // get underlying tokens - blacklistedTokens: [num] // exclude NUM so only USDC/BUSD are counted - }); -} - -// -------- Export -------- -module.exports = { - misrepresentedTokens: true, - - ethereum: { - tvl: makeChainTVL("ethereum"), - staking: staking(config.ethereum.farm, config.ethereum.num), - pool2: pool2(config.ethereum.farm, config.ethereum.lp), - }, - - bsc: { - tvl: makeChainTVL("bsc"), - staking: staking(config.bsc.farm, config.bsc.num), - pool2: pool2(config.bsc.farm, config.bsc.lp), - }, - - methodology: - "Core TVL = non‑NUM assets (USDC on Ethereum, BUSD on BSC) derived from unwrapping the LP " + - "tokens staked in the farm contracts. 'staking' tracks single‑asset NUM staking and 'pool2' " + - "tracks full NUM‑LP staking. NUM itself is excluded from core TVL to avoid double counting.", -}; diff --git a/projects/numisme/abi.json b/projects/numisme/abi.json deleted file mode 100644 index cff0f3ec672..00000000000 --- a/projects/numisme/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "token": "address:token", - "vaultToken": "address:vaultToken", - "get_virtual_price": "uint256:get_virtual_price", - "getPricePerFullShare": "uint256:getPricePerFullShare" -} \ No newline at end of file diff --git a/projects/numisme/index.js b/projects/numisme/index.js deleted file mode 100644 index 6100889b124..00000000000 --- a/projects/numisme/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const BigNumber = require("bignumber.js"); - -const { staking } = require("../helper/staking"); - -const VOTING_ESCROW = "0xa770697cecA9Af6584aA59DD9F226eaF6Cd0c2dc"; -const NUMIS = "0x34769D3e122C93547836AdDD3eb298035D68F1C3"; -const LP_REWARDS = "0xEFE7904b244d0a72dD56EE459FB0f96209aff438"; -const NUMIS_LP = "0xF06550C34946D251C2EACE59fF4336168dB7EbF2"; - -const funds = [ - "0x9353d11eF99b8703D58FeAf69591DA62d6d6324e", // MIM3CRV - "0xf31c6eE97070dcc73781c7C9d45EC9b5E86D2912", // ALETHCRV - "0x1014A2e3de1C4d6C5998D7e5a264F22a35d2cACc", // CRVCVXETH - "0x1d9DC26A9067DA6C8e6038eBF176b7eB3E394149", // CRV3CRYPTO - "0x428F5B8b8fE7b9247c09aDE2cbd7573A3BfF649D", // FRAX3CRV -]; - -async function tvl(timestamp, block) { - const balances = {}; - const calls = funds.map(i => ({ target: i })) - const [ - tokens, vaultTokens, pricePerFullShares - ] = await Promise.all([abi.token, abi.vaultToken, abi.getPricePerFullShare].map(abi => sdk.api.abi.multiCall({ calls, abi, block }))) - - const tokenCalls = vaultTokens.output.map(i => ({ target: i.output })) - const { output: supplies } = await sdk.api.abi.multiCall({ - abi: 'erc20:totalSupply', - calls: tokenCalls, block, - }) - tokens.output.forEach(({ output: token }, i) => { - const pricePerFullShare = pricePerFullShares.output[i].output - const supply = supplies[i].output - sdk.util.sumSingleBalance(balances, token, BigNumber(supply * pricePerFullShare / 1e18).toFixed(0)) - }) - return balances -} - -module.exports = { - methodology: "Counts the underlying assets in each fund", - ethereum: { - tvl, - staking: staking(VOTING_ESCROW, NUMIS), - pool2: staking(LP_REWARDS, NUMIS_LP), - }, -}; diff --git a/projects/numoen/index.js b/projects/numoen/index.js deleted file mode 100644 index a55798b4245..00000000000 --- a/projects/numoen/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const { getLogs, getAddress, } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { - factory: '0x1B327eFf5033922B0f88FC4D56C29d7AF5a8ecdB', - fromBlock: 43951762, - }, -} - -const blocks = { - celo: 17976668, - arbitrum: 65269032, - polygon: 40648569, -} - -async function tvl(api) { - const ownerTokens = [] - - const logs = await getLogs({ - api, - fromBlock: blocks[api.chain], - target: '0x8396a792510a402681812ece6ad3ff19261928ba', - topics: ['0x581e7fde17a1f90a422f4ef8f75f22c3437a96787d3bf54aa93c838b740183c3'], - }) - logs.forEach(i => { - const base = getAddress(i.topics[1]) - const speculative = getAddress(i.topics[2]) - const lendgine = getAddress(i.data.slice(154-26)) - const tokens = [base, speculative] - ownerTokens.push([tokens, lendgine]) - }) - ownerTokens.push(...(await ownerTokensExtra(api))) - return sumTokens2({ api, ownerTokens}) -} - -Object.keys(blocks).forEach(chain => { module.exports[chain] = { tvl }}) - -async function ownerTokensExtra(api) { - const { factory, fromBlock, } = config[api.chain] ?? {} - if (!factory) return [] - const ownerTokens = [] - - const logs = await getLogs({ - api, fromBlock, target: factory, - topics: ['0x1c8c5ae778c5728afc9c5b6cd391acf7cb01a6c6d4988fb2de551001ec7dc644'], - eventAbi: 'event LendgineCreated(address indexed base, address indexed speculative, uint256 baseScaleFactor, uint256 speculativeScaleFactor, uint256 indexed upperBound, address lendgine, address pair)', - onlyArgs: true, - }) - logs.forEach(i => { - const tokens = [i.base, i.speculative] - ownerTokens.push([tokens, i.lendgine]) - ownerTokens.push([tokens, i.pair]) - }) - return ownerTokens -} diff --git a/projects/nuon/index.js b/projects/nuon/index.js deleted file mode 100644 index 8bafe1b8ee6..00000000000 --- a/projects/nuon/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ owner: '0x27788F93eEbB53728b887f13c16AdA286e1b6e92' ,tokens: [ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDT]}) - } -} \ No newline at end of file diff --git a/projects/nuri-exchange-v1/index.js b/projects/nuri-exchange-v1/index.js deleted file mode 100644 index 313899d92f5..00000000000 --- a/projects/nuri-exchange-v1/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - scroll:{ - tvl: getUniTVL({ factory: '0xAAA16c016BF556fcD620328f0759252E29b1AB57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), - staking: staking("0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F", "0xAAAE8378809bb8815c08D3C59Eb0c7D1529aD769"), - }, -} \ No newline at end of file diff --git a/projects/nuri-exchange/index.js b/projects/nuri-exchange/index.js deleted file mode 100644 index 0c97c674e4d..00000000000 --- a/projects/nuri-exchange/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - scroll: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 5300905 }, -}) \ No newline at end of file diff --git a/projects/nusa-finance/index.js b/projects/nusa-finance/index.js deleted file mode 100644 index e47c0946170..00000000000 --- a/projects/nusa-finance/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const sdk = require('@defillama/sdk') -const { compoundExports2 } = require("../helper/compound"); -const { sumTokensExport } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const baseLisk = compoundExports2({ comptroller: '0xF3a40B837e68C518F07A7150802809Ec2a3Bae77', cether: '0xDeFDb8648F38eaFeaF2786ddC7E76d49AE53E8c1'}) -module.exports.lisk = baseLisk - -const LISK_LP = '0x77B2D6400d814588e33A6BFb344f8e47C0c4684A' -const LISK_STAKING = '0x32b1664AdF690e4FB5161b4C25D46fBAfF1b1f82' -const liskFarmTvl = sumTokensExport({ - tokensAndOwners: [[LISK_LP, LISK_STAKING]], - useDefaultCoreAssets: true, - onlyLPs: true, -}) - -module.exports.lisk.tvl = sdk.util.sumChainTvls([module.exports.lisk.tvl, liskFarmTvl]) - -const BSC_LP = '0x10e1a96756c05B369EADC5E9cFbE52189350F556' -const BSC_STAKING_CONTRACTS = [ - '0x21805c9b4d7132E27CAa9A367b508527f94Efe0f', - '0x0eE098D160BC989c8b83a72F4BaaE5f0B3B2CA85', - '0x434D2873078a35450094157a4205d8D4D5A3022F', -] - -module.exports.bsc = {} -module.exports.bsc.pool2 = sumTokensExport({ - tokensAndOwners: BSC_STAKING_CONTRACTS.map(owner => [BSC_LP, owner]), - useDefaultCoreAssets: true, - onlyLPs: true, -}) - -const NUSA_BSC = '0xe11F1D5EEE6BE945BeE3fa20dBF46FeBBC9F4A19' -const VE_NUSA_BSC = '0xE72852244b9382C1466551df6710D3871a0b17f2' -module.exports.bsc.staking = staking([VE_NUSA_BSC], NUSA_BSC, 'bsc') \ No newline at end of file diff --git a/projects/nutbox/index.js b/projects/nutbox/index.js deleted file mode 100644 index be9b3a14955..00000000000 --- a/projects/nutbox/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { sumUnknownTokens } = require('../helper/unknownTokens'); - -const config = { - bsc: { factory: '0xf870724476912057c807056b29c1161f5fe0199a', fromBlock: 15414926 }, - enuls: { factory: '0xb71A12De824B837eCD30D41384e80C8CDFb5D694', fromBlock: 768727 }, -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: () => ({}), - staking: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x246afd9fb9e1733d63ee77f86f5d1440fb048c65e36822f48d468d9e5e7b8f21'], - eventAbi: 'event ERC20StakingCreated(address indexed pool, address indexed community, string name, address erc20Token)', - onlyArgs: true, - fromBlock, - }) - return sumUnknownTokens({ api, tokensAndOwners: logs.map(i => [i.erc20Token, i.pool]), useDefaultCoreAssets: true, }) - } - } -}) - diff --git a/projects/nxd-protocol/index.js b/projects/nxd-protocol/index.js deleted file mode 100644 index fb688c690b1..00000000000 --- a/projects/nxd-protocol/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') - -const NXD_PROTOCOL_ADDRESS = '0xE05430D42842C7B757E5633D19ca65350E01aE11'; -const DXN_ERC20_ADDRESS = '0x80f0C1c49891dcFDD40b6e0F960F84E6042bcB6F'; -const NXD_ERC20_ADDRESS = '0x70536D44820fE3ddd4A2e3eEdbC937b8B9D566C7'; -const NXD_STAKING_VAULT_ADDRESS = '0xa1B56E42137D06280E34B3E1352d80Ac3BECAF79'; -const TAX_RECIPIENT = '0x61e0318C8d5A855D63D989b02D859Aae5020b308'; -const ABI = { - 'totalDXNDepositedLMP': - 'function totalDXNDepositedLMP() view returns (uint256)', - 'totalDXNStaked': 'function totalDXNStaked() view returns (uint256)', - 'dxnStaked': 'function dxnStaked() view returns (uint256)', -}; - -async function staking(api) { - const dxnStakedLMP = await api.call({ abi: ABI.totalDXNDepositedLMP, target: NXD_PROTOCOL_ADDRESS, }); - const dxnStakedAfterLMP = await api.call({ abi: ABI.totalDXNStaked, target: NXD_PROTOCOL_ADDRESS, }); - const dxnStakedFoT = await api.call({ abi: ABI.dxnStaked, target: TAX_RECIPIENT, }); - - await sumUnknownTokens({ api, owner: NXD_STAKING_VAULT_ADDRESS, lps: ['0x98134CDE70ff7280bb4b9f4eBa2154009f2C13aC',], tokens: [NXD_ERC20_ADDRESS], coreAssets: [DXN_ERC20_ADDRESS], }) - - api.add(DXN_ERC20_ADDRESS, [dxnStakedLMP, dxnStakedAfterLMP, dxnStakedFoT]); -} - -module.exports = { - misrepresentedTokens: true, - methodology: - 'We count the TVL of NXD Protocol by checking the total amount of NXD staked in the Staking Vault in addition to the total DXN staked by the protocol.', - ethereum: { - tvl: () => ({}), - staking, - }, -}; diff --git a/projects/nxfi/idl.js b/projects/nxfi/idl.js deleted file mode 100644 index a5f3932a13a..00000000000 --- a/projects/nxfi/idl.js +++ /dev/null @@ -1,527 +0,0 @@ -module.exports = { - "version": "0.1.0", - "name": "nxlend", - "instructions": [], - "accounts": [ - { - "name": "Reserve", - "type": { - "kind": "struct", - "fields": [ - { - "name": "market", - "type": "publicKey" - }, - { - "name": "tokenMint", - "type": "publicKey" - }, - { - "name": "tokenDecimals", - "type": "u8" - }, - { - "name": "aliPadding1", - "type": { - "array": [ - "i8", - 7 - ] - } - }, - { - "name": "creditDebit", - "type": { - "defined": "ReserveCreditDebit" - } - }, - { - "name": "tokenInfo", - "type": { - "defined": "ReserveToken" - } - }, - { - "name": "treasury", - "type": { - "defined": "ReserveTreasury" - } - }, - { - "name": "marketFee", - "type": { - "defined": "MarketFee" - } - }, - { - "name": "setting", - "type": { - "defined": "ReserveSetting" - } - }, - { - "name": "emissionsFlags", - "docs": [ - "Emissions Config Flags", - "", - "- EMISSIONS_FLAG_BORROW_ACTIVE: 1", - "- EMISSIONS_FLAG_LENDING_ACTIVE: 2", - "" - ], - "type": "u64" - }, - { - "name": "emissionsRate", - "docs": [ - "Emissions APR.", - "Number of emitted tokens (emissions_mint) per 1e(reserve.mint_decimal) tokens (reserve mint) (native amount) per 1 YEAR." - ], - "type": "u64" - }, - { - "name": "emissionsRemaining", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "emissionsMint", - "type": "publicKey" - }, - { - "name": "padding0", - "type": { - "array": [ - "u128", - 28 - ] - } - }, - { - "name": "padding1", - "type": { - "array": [ - "u128", - 32 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "InterestModel", - "type": { - "kind": "struct", - "fields": [ - { - "name": "rateChangeUr1", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "irUr1", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "rateChangeUr2", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "irUr2", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "maxIr", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "treasuryBaseApr", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "treasuryAdditionRatio", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "marketFeeBase", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "marketAdditionRatio", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "padding", - "type": { - "array": [ - "u128", - 8 - ] - } - } - ] - } - }, - { - "name": "ReserveToken", - "type": { - "kind": "struct", - "fields": [ - { - "name": "tokenAccount", - "type": "publicKey" - }, - { - "name": "tokenAccountBump", - "type": "u8" - }, - { - "name": "tokenAccountAuthorityBump", - "type": "u8" - }, - { - "name": "aliPadding1", - "type": { - "array": [ - "i8", - 6 - ] - } - } - ] - } - }, - { - "name": "ReserveTreasury", - "type": { - "kind": "struct", - "fields": [ - { - "name": "treasuryTokenAccount", - "type": "publicKey" - }, - { - "name": "treasuryTokenAccountBump", - "type": "u8" - }, - { - "name": "treasuryAuthorityBump", - "type": "u8" - }, - { - "name": "aliPadding1", - "type": { - "array": [ - "i8", - 6 - ] - } - }, - { - "name": "unpayedTreasuryFee", - "type": { - "defined": "WrappedI80F48" - } - } - ] - } - }, - { - "name": "MarketFee", - "type": { - "kind": "struct", - "fields": [ - { - "name": "marketFeeTokenAccount", - "type": "publicKey" - }, - { - "name": "marketFeeAccountBump", - "type": "u8" - }, - { - "name": "marketFeeAuthorityBump", - "type": "u8" - }, - { - "name": "aliPadding1", - "type": { - "array": [ - "i8", - 6 - ] - } - }, - { - "name": "unpayedMarketFee", - "type": { - "defined": "WrappedI80F48" - } - } - ] - } - }, - { - "name": "ReserveCreditDebit", - "type": { - "kind": "struct", - "fields": [ - { - "name": "assetNtokenRatio", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "debtNtokenRatio", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "reserveDebtNtokenAmount", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "reserveAssetNtokenAmount", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "updateTimeOfInterest", - "type": "i64" - } - ] - } - }, - { - "name": "ReserveSetting", - "type": { - "kind": "struct", - "fields": [ - { - "name": "assetValueRatio", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "assetValueLiqRatio", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "debtValueRatioHighRisk", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "debtValueRatioMidRisk", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "debtValueRatioLowRisk", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "debtValueLiqRatio", - "type": { - "defined": "WrappedI80F48" - } - }, - { - "name": "capacity", - "type": "u64" - }, - { - "name": "interestSetting", - "type": { - "defined": "InterestModel" - } - }, - { - "name": "reserveType", - "type": { - "defined": "ReserveType" - } - }, - { - "name": "operationalState", - "type": { - "defined": "ReserveOperationalState" - } - }, - { - "name": "aliPadding1", - "type": { - "array": [ - "i8", - 5 - ] - } - }, - { - "name": "oracleType", - "type": { - "defined": "OracleType" - } - }, - { - "name": "oracleKeys", - "type": { - "array": [ - "publicKey", - 5 - ] - } - }, - { - "name": "maxBorrowable", - "type": "u64" - }, - { - "name": "maxExposure", - "docs": [ - "USD denominated limit for calculating asset value for initialization nxlend requirements.", - "Example, if total SOL deposits are equal to $1M and the limit it set to $500K,", - "then SOL assets will be discounted by 50%.", - "", - "In other words the max value of liabilities that can be backed by the asset is $500K.", - "This is useful for limiting the damage of orcale attacks.", - "", - "Value is UI USD value, for example value 100 -> $100" - ], - "type": "u64" - }, - { - "name": "maxPriceAge", - "type": "u64" - }, - { - "name": "padding", - "type": { - "array": [ - "u64", - 6 - ] - } - } - ] - } - }, - { - "name": "WrappedI80F48", - "type": { - "kind": "struct", - "fields": [ - { - "name": "value", - "type": "i128" - } - ] - } - }, - { - "name": "ReserveOperationalState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Paused" - }, - { - "name": "Operational" - }, - { - "name": "ReduceOnly" - } - ] - } - }, - { - "name": "ReserveType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Collateral" - }, - { - "name": "NoCollaAddup" - } - ] - } - }, - { - "name": "ReserveVaultType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Liquidity" - }, - { - "name": "Insurance" - }, - { - "name": "Fee" - } - ] - } - }, - { - "name": "OracleType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "None" - }, - { - "name": "PythEma" - }, - { - "name": "SwitchboardV2" - }, - { - "name": "PythV2" - } - ] - } - } - ], - "events": [], - "errors": [], - "metadata": { - "address": "7YYkqwXp812NMe6nWny2JAGsm6b3CVvbQKiMo8SuaPMg" - } -} diff --git a/projects/nxfi/index.js b/projects/nxfi/index.js deleted file mode 100644 index 93990ef65d6..00000000000 --- a/projects/nxfi/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, i80f48ToNumber, } = require("../helper/solana"); - -const idl = require('./idl') - - -async function tvl() { - const provider = getProvider() - const program = new Program(idl, 'NxFiv1eeKtKT6dQEP2erBwz2DSKCTdb8WSsxVDwVGJ1', provider) - const reserves = await program.account.reserve.all() - return sumTokens2({ tokenAccounts: reserves.map(r => r.account.tokenInfo.tokenAccount.toString()) }); -} - -async function borrowed(api) { - const provider = getProvider() - const program = new Program(idl, 'NxFiv1eeKtKT6dQEP2erBwz2DSKCTdb8WSsxVDwVGJ1', provider) - const reserves = await program.account.reserve.all() - reserves.map(r => { - const amount = i80f48ToNumber(r.account.creditDebit.debtNtokenRatio) * i80f48ToNumber(r.account.creditDebit.reserveDebtNtokenAmount) - const mint = r.account.tokenMint.toString() - api.add(mint, amount) - }) -} - -module.exports = { - timetravel: false, - solana: { tvl, borrowed }, -} diff --git a/projects/nxfinance/index.js b/projects/nxfinance/index.js deleted file mode 100644 index bb4519e39c3..00000000000 --- a/projects/nxfinance/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getProvider } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); -const nxIdlV1 = require('./nx-idl-v1.json') -const nxIdlV2 = require('./nx-idl-v2.json'); - -const NX_PROGRAM_ADDR_V1 = "EHBN9YKtMmrZhj8JZqyBQRGqyyeHw5xUB1Q5eAHszuMt"; -const NX_PROGRAM_ADDR_V2 = "NXFiKimQN3QSL3CDhCXddyVmLfrai8HK36bHKaAzK7g"; - -const tvl = async (api) => { - const provider = getProvider() - const nx_program_v1 = new Program(nxIdlV1, NX_PROGRAM_ADDR_V1, provider) - const nx_program_v2 = new Program(nxIdlV2, NX_PROGRAM_ADDR_V2, provider) - - const res = await Promise.all([ - nx_program_v1.account.marginPool.all(), - nx_program_v2.account.collateralPool.all(), - nx_program_v2.account.lendingPool.all() - ]) - - for (let value of res) - for (let { account: pool } of value) - api.add(pool.tokenMint.toBase58(), pool.depositTokens.toString()) -} - -module.exports = { - methodology: "Sum of assets deposited for lending and assets deposited as collateral for leveraging", - timetravel: false, - solana: { tvl, }, -}; \ No newline at end of file diff --git a/projects/nxfinance/nx-idl-v1.json b/projects/nxfinance/nx-idl-v1.json deleted file mode 100644 index 44917c201aa..00000000000 --- a/projects/nxfinance/nx-idl-v1.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "version": "0.1.0", - "name": "leverage_finance", - "instructions": [], - "accounts": [ - { - "name": "MarginPool", - "type": { - "kind": "struct", - "fields": [ - { - "name": "leveragefi", - "type": "publicKey" - }, - { - "name": "vault", - "type": "publicKey" - }, - { - "name": "feeDestination", - "type": "publicKey" - }, - { - "name": "poolAuthority", - "type": "publicKey" - }, - { - "name": "tokenMint", - "type": "publicKey" - }, - { - "name": "tokenPriceOracle", - "type": "publicKey" - }, - { - "name": "borrowedTokens", - "type": "u64" - }, - { - "name": "depositTokens", - "type": "u64" - }, - { - "name": "depositNotes", - "type": "u64" - }, - { - "name": "loanNotes", - "type": "u64" - }, - { - "name": "depositInterest", - "type": "u64" - }, - { - "name": "loanInterest", - "type": "u64" - }, - { - "name": "protocolFee", - "type": "u64" - }, - { - "name": "accruedUntil", - "type": "i64" - }, - { - "name": "utilizationFlag", - "type": "u16" - } - ] - } - } - ] -} diff --git a/projects/nxfinance/nx-idl-v2.json b/projects/nxfinance/nx-idl-v2.json deleted file mode 100644 index deb4ab74864..00000000000 --- a/projects/nxfinance/nx-idl-v2.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "version": "0.1.0", - "name": "nx_lend", - "instructions": [], - "accounts": [ - { - "name": "CollateralPool", - "type": { - "kind": "struct", - "fields": [ - { - "name": "nxMarket", - "docs": [ - "Market's pubkey" - ], - "type": "publicKey" - }, - { - "name": "marketAuthority", - "docs": [ - "The pool authority to act" - ], - "type": "publicKey" - }, - { - "name": "tokenMint", - "docs": [ - "The token the pool allows lending and borrowing on" - ], - "type": "publicKey" - }, - { - "name": "depositTokens", - "docs": [ - "The total amount of tokens available in the pool's vault" - ], - "type": "u64" - }, - { - "name": "depositNotes", - "docs": [ - "The total amount of notes issued to depositors of tokens." - ], - "type": "u64" - } - ] - } - }, - { - "name": "LendingPool", - "type": { - "kind": "struct", - "fields": [ - { - "name": "nxMarket", - "docs": [ - "Market's pubkey" - ], - "type": "publicKey" - }, - { - "name": "tokenMint", - "docs": [ - "The pool authority to act", - "The token the pool allows lending and borrowing on" - ], - "type": "publicKey" - }, - { - "name": "borrowTokens", - "docs": [ - "The total amount of tokens borrowed, that need to be repaid to", - "the pool." - ], - "type": "u64" - }, - { - "name": "borrowNotes", - "docs": [ - "The total amount of notes issued to borrowers of tokens" - ], - "type": "u64" - }, - { - "name": "depositTokens", - "docs": [ - "The total amount of tokens available in the pool's vault" - ], - "type": "u64" - }, - { - "name": "depositNotes", - "docs": [ - "The total amount of notes issued to depositors of tokens." - ], - "type": "u64" - }, - { - "name": "depositInterest", - "type": "u64" - }, - { - "name": "borrowInterest", - "docs": [ - "Amount of unrepaid interest by borrowers, for loan note exchange rate calculation" - ], - "type": "u64" - }, - { - "name": "protocolFee", - "docs": [ - "10% of interest goes to the protocol," - ], - "type": "u64" - }, - { - "name": "accruedUntil", - "docs": [ - "The time the interest was last accrued up to" - ], - "type": "i64" - }, - { - "name": "utilizationFlag", - "docs": [ - "If the utilization rate is flagged as full" - ], - "type": "u16" - }, - { - "name": "interestRateConfigs", - "type": { - "vec": { - "defined": "InterestRateData" - } - } - } - ] - } - } - ], - "types": [ - { - "name": "InterestRateData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "utilizationRate", - "docs": [ - "y=kx+b x=utilization_rate y=interest_rate" - ], - "type": "i32" - }, - { - "name": "kValue", - "type": "i32" - }, - { - "name": "bValue", - "type": "i32" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/nyke/index.js b/projects/nyke/index.js deleted file mode 100644 index 56711075952..00000000000 --- a/projects/nyke/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { compoundExports2, methodology, } = require('../helper/compound'); - -module.exports = { - methodology, - ethereumclassic: compoundExports2({ - comptroller: '0x0040DCf62C380833dE60a502649567e939635fdB', - cether: '0x2896c67c0cea9D4954d6d8f695b6680fCfa7C0e0', - }) -}; diff --git a/projects/o2-dao/index.js b/projects/o2-dao/index.js deleted file mode 100644 index 2db22ba5fc0..00000000000 --- a/projects/o2-dao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { stakingUnknownPricedLP } = require("../helper/staking"); - -const transform = addr=>`avax:${addr}` -const chain = "avax" - -const joeLP = "0x7bc2561d69b56fae9760df394a9fa9202c5f1f11" - -const stakingToken = "0xAA2439DBAd718c9329a5893A51a708C015F76346" - -module.exports={ - avax:{ - tvl: () => 0, - staking: stakingUnknownPricedLP("0x50971d6B5a3CCd79C516f914208C67C8104977dF", stakingToken, chain, joeLP, transform) - } -} \ No newline at end of file diff --git a/projects/o3swap.js b/projects/o3swap.js deleted file mode 100644 index 0bcaa5594a3..00000000000 --- a/projects/o3swap.js +++ /dev/null @@ -1,25 +0,0 @@ -const chains = { - ethereum: 1, - bsc: 56, - polygon: 137, - fantom: 250, - arbitrum: 42161, - optimism: 10, - avax: 43114, - xdai: 100, - metis: 1088, - celo: 42220, - kcc: 321, - cube: 1818, - astar: 592, - bitgert: 32520 -} - -module.exports = { - deadFrom: '2024-09-30', - misrepresentedTokens: true -} - -Object.keys(chains).forEach((chain) => { - module.exports[chain] = { tvl: () => ({ }) } -}) \ No newline at end of file diff --git a/projects/oakfarm.js b/projects/oakfarm.js deleted file mode 100644 index 0644d43ab41..00000000000 --- a/projects/oakfarm.js +++ /dev/null @@ -1,48 +0,0 @@ -const { masterchefExports } = require('./helper/unknownTokens') -const { unwrapLPsAuto } = require('./helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -const abi = { - poolInfo: "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare)", - token: "address:token", - balance: "uint256:balance", -} - -const mcExports = - masterchefExports({ - chain: 'okexchain', - masterchef: '0xb7C1E1ceAE8b974685872eB8f5196E3440655928', - nativeToken: '0xc8644956a0c9334a82f26f5773f5dc090d095d2a', - poolInfoABI: abi.poolInfo, - useDefaultCoreAssets: true, - }) - -const config = { - okexchain: { - vaults: [ - '0x85fa637524da5a438df26b85fd55c8ce759168b1', - '0xfb75a5998dff36862571fb93b9953b78d33401d7', - '0xa8c3fccd40018bf16e152bef3abc66c245a942c0', - '0xd51524bb57bac2287135f9651984fb4b3e0aea35', - '0xd730dab3aff9dd845b3054f4de0a9e935d125b58', - ], - }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - const { vaults } = config[chain] - const tokens = await api.multiCall({ abi: abi.token, calls: vaults }) - const bal = await api.multiCall({ abi: abi.balance, calls: vaults }) - tokens.forEach((token, i) => sdk.util.sumSingleBalance(balances, `${chain}:${token}`, bal[i])) - await unwrapLPsAuto({ balances, chain, block: api.block, }) - return balances - } - } - if (chain === 'okexchain') - module.exports[chain].pool2 = mcExports[chain].pool2 -}) \ No newline at end of file diff --git a/projects/oas-jumbo/index.js b/projects/oas-jumbo/index.js deleted file mode 100644 index 7dc07a7ae8a..00000000000 --- a/projects/oas-jumbo/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const CONTRACT_ADDRESSES = { - environmentContract: ADDRESSES.findora.FRA, // Environment contract address - stakesManagerContract: "0x0000000000000000000000000000000000001001", // Stakes manager contract address - oasJumboStaking: "0x7e6347ddC55dF19B94C9FE893bf551CFc8C2208b", // OAS Jumbo staking contract address -}; - -const contractAbis = { - getStakerStakes: { - abi: "function getStakerStakes(address staker, uint256 epoch, uint256 cursor,uint256 howMany) returns (address[] memory validators, uint256[] memory oasStakes, uint256[] memory woasStakes, uint256[] memory soasStakes, uint256 newCursor)", - }, -}; - -module.exports = { - oas: { - tvl: async (api) => { - // Fetch current epoch - const epoch = await api.call({ abi: 'uint256:epoch', target: CONTRACT_ADDRESSES.environmentContract, }); - - // Fetch staker stakes - const { oasStakes } = await api.call({ - abi: contractAbis.getStakerStakes.abi, - target: CONTRACT_ADDRESSES.stakesManagerContract, - params: [CONTRACT_ADDRESSES.oasJumboStaking, epoch, 12, 1], - }); - api.addGasToken(oasStakes) - } - }, -}; diff --git a/projects/oasisswapdex/index.js b/projects/oasisswapdex/index.js deleted file mode 100644 index 75d618b10a4..00000000000 --- a/projects/oasisswapdex/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -const sdk = require("@defillama/sdk") - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x947D83b35Cd2e71df4aC7B359C6761B07d0bce19) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - arbitrum: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: '0xbC467D80AD6401dC25B37EB86F5fcd048Ae4BF6d', useDefaultCoreAssets: true }), - getUniTVL({ factory: '0x947D83b35Cd2e71df4aC7B359C6761B07d0bce19', useDefaultCoreAssets: true }), - ]), - staking: staking("0x73c1fb66b4e183bc101b98d4c17431b667d85958", "0x602eb0d99a5e3e76d1510372c4d2020e12eaea8a") - }, - base: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: '0xc8126578093366968199707b7f8edff258f473b6', useDefaultCoreAssets: true }), - ]), -} }// node test.js projects/oasisswapdex/index.js \ No newline at end of file diff --git a/projects/oaswap.js b/projects/oaswap.js deleted file mode 100644 index 12026b8bb93..00000000000 --- a/projects/oaswap.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -module.exports = { - oasis: { - tvl: getUniTVL({ factory: '0x84b11e8fb9a5dE10347eEA24c73d02B835505FDd', useDefaultCoreAssets: true }), - } -}; \ No newline at end of file diff --git a/projects/obelisk/index.js b/projects/obelisk/index.js deleted file mode 100644 index c1788b0cbba..00000000000 --- a/projects/obelisk/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens } = require('../helper/chain/bitcoin') -const sdk = require('@defillama/sdk') - -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const abi = { - getCustodyAddrInfo: "function getCustodyAddrInfo() view returns (tuple(string mark, string btcAddr)[])" -} - -async function tvl() { - const api = new sdk.ChainApi({ chain: 'ethereum' }) - const addrInfos = await api.call({abi: abi.getCustodyAddrInfo, target: '0x9F836f8A27F1579258388BFab16ab16E278B1a2C' }) - const btcAddresses = addrInfos.map(info => info.btcAddr) - btcAddresses.forEach(addr => bitcoinAddressBook.obelisk.push(addr)) - return sumTokens({ owners: bitcoinAddressBook.obelisk }) -} - -module.exports = { - timetravel: false, - bitcoin: { tvl } -} \ No newline at end of file diff --git a/projects/obric/index.js b/projects/obric/index.js deleted file mode 100644 index d311e3e0a37..00000000000 --- a/projects/obric/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -module.exports = dexExport({ - account: '0xc7ea756470f72ae761b7986e4ed6fd409aad183b1b2d3d2f674d979852f45c4b', - poolStr: 'piece_swap::PieceSwapPoolInfo', - token0Reserve: i => i.data.reserve_x.value, - token1Reserve: i => i.data.reserve_y.value, -}) diff --git a/projects/obsidian/index.js b/projects/obsidian/index.js deleted file mode 100644 index 6e4306b57ed..00000000000 --- a/projects/obsidian/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { sumTokens2 } = require('../helper/unwrapLPs') - -// TVL DEX Factories -const V2_FACTORY_CRONOS = '0xCd2E5cC83681d62BEb066Ad0a2ec94Bf301570C9'; -const V2_FACTORY_ZKEVM = '0xEDc17bf0f27afc2e767cA08aE426d095207A7804'; - -// Staking contracts -const SMART_CHEF_FACTORY_CRONOS = "0x1eC6e891Bdaa523da0F538C9556064D909d0c566"; -const SMART_CHEF_FACTORY_ZKEVM = "0x4E5CDf0A7a13f05e4168E3B2b9ba96c740877275"; -const ROBIN_DIAMOND_CONTRACT = "0x6D5599616732Ea278235b47A76Cfd398fDe00DEB"; -const FIXED_STAKING_CONTRACT = "0x1215B773d67fd9ed17656B08e223caEF4a93904f"; - -const liquidityPoolsCronos = getUniTVL({ factory: V2_FACTORY_CRONOS, useDefaultCoreAssets: true }) -const liquidityPoolsZkEVM = getUniTVL({ factory: V2_FACTORY_ZKEVM, useDefaultCoreAssets: true }) - -async function stakingSmartChef(factoryAddress, api) { - const [poolAddresses, stakedTokens] = await api.call({ - abi: "function getAllPoolTVL() view returns (address[] poolAddresses, address[] stakedTokens, uint256[] stakedAmounts)", - target: factoryAddress, - }); - - return sumTokens2({ tokensAndOwners2: [stakedTokens, poolAddresses], api }); -} - -async function stakingPoolContract(api, contractAddress, poolAbi) { - const poolLength = await api.call({ target: contractAddress, abi: "uint256:poolLength" }); - const tokens = await api.fetchList({ lengthAbi: "uint256:poolLength", itemAbi: poolAbi, target: contractAddress }); - return sumTokens2({ - api, - owner: contractAddress, tokens: tokens.map(i => i.token), - }); -} - -async function stakingRobinDiamond(api) { - return stakingPoolContract( - api, - ROBIN_DIAMOND_CONTRACT, - "function pools(uint256) view returns (address token, address rewardToken, uint256, uint256 totalDeposited, uint256, uint256, uint256, uint256, address, uint256)" - ); -} - -async function stakingFixedStaking(api) { - return stakingPoolContract( - api, - FIXED_STAKING_CONTRACT, - "function pools(uint256) view returns (address token, uint32 endDay, uint32 lockDayPercent, uint32 unlockDayPercent, uint32 lockPeriod, uint32 withdrawalCut1, uint32 withdrawalCut2, bool depositEnabled, uint128 maxDeposit, uint128 minDeposit, uint128 totalDeposited, uint128 maxPoolAmount)" - ); -} - -async function cronosStaking(api) { - await Promise.all([ - stakingSmartChef(SMART_CHEF_FACTORY_CRONOS, api), - stakingRobinDiamond(api), - stakingFixedStaking(api), - ]); -} - -async function zkevmStaking(api) { - return stakingSmartChef(SMART_CHEF_FACTORY_ZKEVM, api); -} - -module.exports = { - misrepresentedTokens: true, - methodology: "TVL includes all liquidity pools from Obsidian V2 factories across Cronos and Cronos zkEVM. Staking includes tokens staked in Fixed Staking, SmartChefFactory, and RobinDiamondHands contracts for yield farming and staking rewards.", - cronos: { - tvl: liquidityPoolsCronos, - staking: cronosStaking, - }, - cronos_zkevm: { - tvl: liquidityPoolsZkEVM, - staking: zkevmStaking, - }, -}; \ No newline at end of file diff --git a/projects/obswap/index.js b/projects/obswap/index.js deleted file mode 100644 index d405deda88b..00000000000 --- a/projects/obswap/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], - ["btc.ptokens", "PBTC", "ptokens-btc"], - ["token.defi", "BOX", "defibox"], - ["minedfstoken", "DFS", "defis-network"], - ["emanateoneos", "EMT", "emanate"], - ["dappservices", "DAPP", "dapp"], - ["token.newdex", "DEX", "newdex-token"], - ["chexchexchex", "CHEX", "chex-token"], - ["everipediaiq", "IQ", "everipedia"], - ["eosiotptoken", "TPT", "token-pocket"], - ["core.ogx", "OGX", "organix"], - ["pizzatotoken", "PIZZA", "pizza-usde"], -] - -// https://swap.defiob.com -// OBSwap -async function eos() { - return await get_account_tvl("swap.ob", tokens); -} - -module.exports = { - methodology: `OBSwap TVL is achieved by querying token balances from their swap pool smart contract.`, - eos: { - tvl: eos - }, -} diff --git a/projects/occam.js b/projects/occam.js deleted file mode 100644 index 4b658018b9b..00000000000 --- a/projects/occam.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -module.exports = { - milkomeda: { - tvl: getUniTVL({ factory: '0x2ef06A90b0E7Ae3ae508e83Ea6628a3987945460', useDefaultCoreAssets: true }), - } -} diff --git a/projects/ocean-one/index.js b/projects/ocean-one/index.js deleted file mode 100644 index 1984d691164..00000000000 --- a/projects/ocean-one/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require('../helper/http') - -const API = 'https://events.ocean.one/assets' - -const tvl = async (api) => { - const { data } = await get(API) - data.forEach(({ balance, price_usd }) => { - api.addUSDValue(Math.round(balance * price_usd)) - }) -} - -module.exports = { - misrepresentedTokens: true, - mixin: { tvl }, -} \ No newline at end of file diff --git a/projects/ocean-protocol/abi.json b/projects/ocean-protocol/abi.json deleted file mode 100644 index c2bfae0f0f9..00000000000 --- a/projects/ocean-protocol/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pool_getNormalizedWeight": "function getNormalizedWeight(address token) view returns (uint256)", - "pool_isInitialized": "bool:isInitialized", - "pool_isFinalized": "bool:isFinalized", - "pool_isPublicSwap": "bool:isPublicSwap" -} \ No newline at end of file diff --git a/projects/ocean-protocol/index.js b/projects/ocean-protocol/index.js deleted file mode 100644 index 5c60c99e435..00000000000 --- a/projects/ocean-protocol/index.js +++ /dev/null @@ -1,156 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const BigNumber = require('bignumber.js'); -const { GraphQLClient, gql } = require("graphql-request"); -const { getUniqueAddresses, log } = require("../helper/utils.js"); - -// https://github.com/oceanprotocol/contracts/blob/main/artifacts/address.json -const contracts = { - ethereum: { - graphql_endpoints: [ - // "https://v4.subgraph.mainnet.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - "https://subgraph.mainnet.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - ], - OCEAN: '0x967da4048cD07aB37855c090aAF366e4ce1b9F48', - }, - polygon: { - graphql_endpoints: [ - // "https://v4.subgraph.polygon.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - "https://subgraph.polygon.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - ], - OCEAN: '0x282d8efCe846A88B159800bd4130ad77443Fa1A1', - }, - bsc: { - graphql_endpoints: [ - // "https://v4.subgraph.bsc.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - "https://subgraph.bsc.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - ], - OCEAN: '0xdce07662ca8ebc241316a15b611c89711414dd1a', - }, - moonriver: { - graphql_endpoints: [ - // "https://v4.subgraph.moonriver.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - "https://subgraph.moonriver.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - ], - OCEAN: '0x99C409E5f62E4bd2AC142f17caFb6810B8F0BAAE', - }, - energyweb: { - graphql_endpoints: [ - // "https://v4.subgraph.energyweb.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - "https://subgraph.energyweb.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph", - ], - OCEAN: '0x593122aae80a6fc3183b2ac0c4ab3336debee528', - }, -} - -const PAGE_SIZE = 1000 -const graphqlQuery = gql` -query GET_POOLS($skip: Int, $first: Int) { - pools ( - first: $first - skip: $skip - ) { - id - } -} -` - -function chainTvl(chain) { - return async (timestamp, ethBlock, { [chain]: block }) => { - const balances = {}; - const { graphql_endpoints, OCEAN } = contracts[chain] - - const transform = (['bsc', 'moonriver', 'energyweb', 'polygon'].includes(chain)) ? - t => contracts.ethereum.OCEAN : - t => contracts.ethereum.OCEAN; - let pools = [] - - for (const graphql_endpoint of graphql_endpoints) { - const graphQLClient = new GraphQLClient(graphql_endpoint); - // Do pagination on the graphql query to return pools by batches of PAGE_SIZE - let skip = 0; - while (skip >= 0) { - const query = await graphQLClient.request( - graphqlQuery, { skip, first: PAGE_SIZE } - ) - pools.push(...query.pools.map(i => i.id)) - - // Stop criteria for while loop once graphql query returned less than page-size pools - if (query.pools.length < PAGE_SIZE) - skip = -1; - else - skip += PAGE_SIZE; - } - } - - pools = getUniqueAddresses(pools) - - log(`chain: ${chain}, pools: ${pools.length}`) - - // Filter out not-finalized pools - not totally necessary with subsequent filter on OCEAN balance > 0 - const { output: finalizeds } = await sdk.api.abi.multiCall({ - abi: abi['pool_isFinalized'], - calls: pools.map(pool => ({ - target: pool, - })), - block, - chain - }); - pools = pools.filter((p, i) => finalizeds[i].output) - - // Compute OCEAN balance - to count as TVL, but also filter-out pools with no OCEAN balance - const OCEAN_balances = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - calls: pools.map(pool => ({ - target: OCEAN, - params: [pool] - })), - block, - chain - }); - - // Filter out pools with null OCEAN balance - const OCEAN_balance_gt_0 = OCEAN_balances.output.map(b => b.output > 0) - pools = pools.filter((p, i) => OCEAN_balance_gt_0[i]) - OCEAN_balances.output = OCEAN_balances.output.filter((p, i) => OCEAN_balance_gt_0[i]) - - // Get Normalized weights to account for balance of data-tokens - // At pool creation, the OCEAN collateral is used to mint data-tokens with a given ratio of OCEAN/datatoken like 50-50 70-30 or 90-10 - // The TVL of the pool, like any AMM, should account for both sides of the liquidity: OCEAN (from balanceOf) + datatoken (using weight) - const { output: weights } = await sdk.api.abi.multiCall({ - abi: abi['pool_getNormalizedWeight'], - calls: pools.map(pool => ({ - target: pool, - params: [OCEAN] - })), - block, - chain - }); - - OCEAN_balances.output.forEach((v, i) => { - const w = (new BigNumber(weights[i].output || '0')).div(1e18) - OCEAN_balances.output[i].output = (new BigNumber(v.output).idiv(w)).toString(10) - }) - sdk.util.sumMultiBalanceOf(balances, OCEAN_balances, true, transform) - return balances; - } -} - -module.exports = { - methodology: 'OCEAN TVL is OCEAN locked as a stake in each pool of data + the balance of datatokens of each pool like any AMM - inferred from the pools weights', - ethereum: { - tvl: chainTvl('ethereum') - }, - polygon: { - tvl: chainTvl('polygon') - }, - bsc: { - tvl: chainTvl('bsc') - }, - moonriver: { - tvl: chainTvl('moonriver') - }, - // energyweb: { - // tvl: chainTvl('energyweb') - // }, -} diff --git a/projects/oceanos/index.js b/projects/oceanos/index.js deleted file mode 100644 index 42fecd2637a..00000000000 --- a/projects/oceanos/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const poolAddresses = [ - '0xD50766f79Ecef0BA96E1d7DD7ccB56E1b2Ba1120', // eth, - '0x2F453e781E3A474290fad60a22fEa6f155B69fBD', // usdc - '0x836280846adc84f28918Cec30A7dCe791D17b72C', // wsteth -] - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:collateralAsset', calls: poolAddresses }) - return api.sumTokens({ tokensAndOwners2: [tokens, poolAddresses] }) -} - -module.exports = { - manta: { tvl } -} \ No newline at end of file diff --git a/projects/oceanpoint/index.js b/projects/oceanpoint/index.js deleted file mode 100644 index faa9d512b53..00000000000 --- a/projects/oceanpoint/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking } = require('../helper/staking'); - -const CONTRACTS = [ - "0x13299657e662894b933Bb3Ee73F7f8dA94b55451", - "0x1802f66868d0649687a7a6bc9b8a4292e148daec", - "0x6f1e92fb8a685aaa0710bad194d7b1aa839f7f8a", - "0x57ba886442d248C2E7a3a5826F2b183A22eCc73e" -]; - -const ERC20_TOKENS = [ - "0x509A38b7a1cC0dcd83Aa9d06214663D9eC7c7F4a" -]; - -module.exports = { - ethereum: { - tvl: () => ({}), - pool2: staking(CONTRACTS, '0x0E85fB1be698E777F2185350b4A52E5eE8DF51A6'), - staking: staking(CONTRACTS, ERC20_TOKENS), - } -}; diff --git a/projects/oceanus/index.js b/projects/oceanus/index.js deleted file mode 100644 index 58baa650b73..00000000000 --- a/projects/oceanus/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { pool2 } = require("../helper/pool2"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const OShareRewardPool = "0xc4a5b1CdCcD8CF80aC7cB5B86Fe5a8D64DBA9D0F"; -const lpPool2Addresses = [ - "0x08df8bc8c64d121a68b4d384172aa97624cc6bbf", - "0xc524bef25df04efea73364d487accd241b73ccd2", -]; - -const stakingContracts = [ - "0x4624cB661b8d5F49c28231D3F819B492c21D495f", - "0x0aED328D80A8750ED27A19B177025eea1B6D4932", - OShareRewardPool, -]; -const OSHARE = "0x28100159d8b2acc4e45ec7ebdb875265bb752385"; -const SEA = "0x41607272ce6f2a42732ae382f00f8f9ce68d78f3"; - - -module.exports = { - misrepresentedTokens: true, - metis: { - tvl: () => ({}), - staking: sumTokensExport(stakingContracts, [SEA, OSHARE], ), - pool2: pool2(OShareRewardPool, lpPool2Addresses,), - }, - methodology: "Counts liquidity on the Pool2s and Staking parts", -}; diff --git a/projects/ocelex-v1/index.js b/projects/ocelex-v1/index.js deleted file mode 100644 index a061c1757b9..00000000000 --- a/projects/ocelex-v1/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport("zircuit", "0xdd018347c29a27088eb2d0bf0637d9a05b30666c", { - hasStablePools: true, - useDefaultCoreAssets: true, -}); diff --git a/projects/ocelex/index.js b/projects/ocelex/index.js deleted file mode 100644 index 01e0e7e3b41..00000000000 --- a/projects/ocelex/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - zircuit: { - factory: "0x03057ae6294292b299a1863420edD65e0197AFEf", - fromBlock: 3709368, - isAlgebra: true, - }, -}) \ No newline at end of file diff --git a/projects/ocelot-dex/index.js b/projects/ocelot-dex/index.js deleted file mode 100644 index ee1a6ced052..00000000000 --- a/projects/ocelot-dex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - zeta: { - tvl: getUniTVL({ factory: '0xA26E383c04013fB43F9E0b9F7903431d12FEa6d6', useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/ociswap-basic/index.js b/projects/ociswap-basic/index.js deleted file mode 100644 index 9aeaa9b8ec3..00000000000 --- a/projects/ociswap-basic/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - - const endpoint = 'http://api.ociswap.com/statistics/pool-types'; - const options = { - headers: { - 'accept': 'application/json' - } - }; - - const statistics = await get(endpoint, options) - - const basicIndex = statistics.findIndex(pool => pool.pool_type === 'basic') - - return { - 'radix': statistics[basicIndex].total_value_locked.xrd.now - } -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} diff --git a/projects/ociswap-precision/index.js b/projects/ociswap-precision/index.js deleted file mode 100644 index 5f2220d61d6..00000000000 --- a/projects/ociswap-precision/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - - const endpoint = 'http://api.ociswap.com/statistics/pool-types'; - const options = { - headers: { - 'accept': 'application/json' - } - }; - - const statistics = await get(endpoint, options) - - const precisionIndex = statistics.findIndex(pool => pool.pool_type === 'precision') - - return { - 'radix': statistics[precisionIndex].total_value_locked.xrd.now - } -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} diff --git a/projects/ociswap/index.js b/projects/ociswap/index.js deleted file mode 100644 index 2dbd9de2347..00000000000 --- a/projects/ociswap/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokens, queryAddresses } = require('../helper/chain/radixdlt'); -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') -const sdk = require('@defillama/sdk') - -module.exports = { - radixdlt: { - tvl: async (api) => { - const pools = await getConfig('ociswap', null, { - fetcher: async () => { - let items = [] - let cursor = 0 - do { - const { data, next_cursor } = await get(`https://api.ociswap.com/pools?cursor=${cursor}&limit=100`) - items.push(...data) - sdk.log(`Fetched ${items.length} pools`, data.length, next_cursor) - cursor = next_cursor - - } while (items.length % 100 === 0 && cursor !== 0) - return items - } - }) - const data = await queryAddresses({ addresses: pools.map(i => i.address) }) - const owners = data.map(i => i.metadata.items.find(i => i.key === 'liquidity_pool')?.value?.typed?.value).filter(i => i) - return sumTokens({ owners, api, }) - }, - }, - timetravel: false -} diff --git a/projects/octane/index.js b/projects/octane/index.js deleted file mode 100644 index abb76d60ca8..00000000000 --- a/projects/octane/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { pool2s } = require('../helper/pool2') -const { stakings } = require('../helper/staking') - -async function tvl(api) { - const owner = '0x563AF5Db2Ad4d22A9807D65F14aE88F71101A2bd' - const tokens = [ - '0x95c78222b3d6e262426483d42cfa53685a67ab9d', // vBUSD - '0xa07c5b74c9b40447a954e1466938b865b6bbea36', // vBNB - ] - return api.sumTokens({ owner, tokens}) -} - -module.exports = { - methodology: "Add all the tokens in the orderbook contract", - bsc: { - tvl, - pool2: pool2s(['0x8459d87618e45dc801bc384ea60596ddb7223aae', '0x506F1c53Ef26D98243777089816A512Ff4Ce66DA'], ['0x39bfae0c96bdc69dc657e381c272997f66cbf9c1']), - staking: stakings(['0x8459d87618e45dc801bc384ea60596ddb7223aae', '0x506F1c53Ef26D98243777089816A512Ff4Ce66DA'], '0x5416ab2b4b5a40f740b67a83dc5939591b5c08be'), - }, -}; diff --git a/projects/octolsd/index.js b/projects/octolsd/index.js deleted file mode 100644 index a8e50f8be2d..00000000000 --- a/projects/octolsd/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); -const { staking } = require("../helper/staking"); - -const POOL_CONTRACT = "0x7f885c6c9f847a764d247056ed4d13dc72cef7d0"; -const OCTO_ETH_LP_ADDRESS = "0xFe4cd8B965353de5fac7c0Cb041B75f5e238B413"; -const OCTO_ADDRESS = "0x52dec19feef469d7a683963b7380ecd0b1aff9c7"; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: POOL_CONTRACT, - topics: ["0x18caa0724a26384928efe604ae6ddc99c242548876259770fc88fcb7e719d8fa",], - eventAbi: "event AddPool (uint256 indexed pid, uint256 rewardToken, address indexed stakingToken, bool isRegular)", - onlyArgs: true, - fromBlock: 17209964, - }); - - const lsdAddresses = logs.map((i) => i.stakingToken); - return sumTokens2({ api, owner:POOL_CONTRACT , tokens: lsdAddresses, blacklistedTokens: [OCTO_ADDRESS, OCTO_ETH_LP_ADDRESS]}); - -} - -module.exports = { - ethereum: { - methodology: - "TVL of Staked ETH & LSD tokens, with pool2 including value of staked OCTO/ETH Uniswap-V2 LP tokens", - tvl, - pool2: staking([POOL_CONTRACT], [OCTO_ETH_LP_ADDRESS]), - }, -}; diff --git a/projects/octopow/index.js b/projects/octopow/index.js deleted file mode 100644 index 29fe60f109f..00000000000 --- a/projects/octopow/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x3a69E908fA1614e445720Ab816a0CD51e5dc6FeC', - }) - } -}; \ No newline at end of file diff --git a/projects/octopus-finance/index.js b/projects/octopus-finance/index.js deleted file mode 100644 index c7e73156baf..00000000000 --- a/projects/octopus-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { yieldHelper, } = require("../helper/yieldHelper") -const { mergeExports } = require("../helper/utils") -const vault = '0xf561349868e5E8b633cfA524796150085Be1950A' -const oc = '0x057153eb8ad87BD483Ff9EC4E411B8C3BcE90FF0' -const abis = { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256, uint256, uint256, uint256, uint256, uint256, uint256 amount, uint256, address strat)', - poolLength: 'function poolLength() view returns (uint256)', -} -const octopus = yieldHelper({ - project: 'octopus-finance', - chain: 'arbitrum', - masterchef: vault, - nativeToken: oc, - abis, -}) -module.exports = mergeExports([octopus]) diff --git a/projects/octopus-network.js b/projects/octopus-network.js deleted file mode 100644 index 3c163d41b29..00000000000 --- a/projects/octopus-network.js +++ /dev/null @@ -1,22 +0,0 @@ -const { call, sumSingleBalance, } = require('./helper/chain/near') - - -const PROJECT_CONTRACT = 'v1.lpos-market.near' - - -async function tvl() { - const balances = {} - const validators = await call(PROJECT_CONTRACT, 'get_validators', {}) - validators.forEach((validator) => { - sumSingleBalance(balances, "wrap.near", validator.total_staked_balance) - }) - - return balances -} - - -module.exports = { - near: { - tvl, - }, -}; diff --git a/projects/oddz/index.js b/projects/oddz/index.js deleted file mode 100644 index d6328c6bdbd..00000000000 --- a/projects/oddz/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const config = { - bsc: { - tvl: { tokensAndOwners: [[ADDRESSES.bsc.USDC, "0x99f29c537c70897f60c9774d3f13bd081D423467"]] }, - staking: { tokensAndOwners: [["0xcd40f2670cf58720b694968698a5514e924f742d", "0x636f9d2Bb973D2E54d2577b9976DedFDc21E6672",]] }, - pool2: { tokensAndOwners: [["0x3c2c77353E2F6AC1578807b6b2336Bf3a3CbB014", "0xA3Fc4F2D307d8202468a223f35Bba978114A994C",],], resolveLP: true }, - }, - avax: { - tvl: { tokensAndOwners: [[ADDRESSES.avax.USDC_e, "0x6a165bA195D9d331b2A1C9648328d409aA599465"]] }, - staking: { tokensAndOwners: [["0xB0a6e056B587D0a85640b39b1cB44086F7a26A1E", "0xd0A145aF8F200Fc8e4d118c6e4d4a77eE1ba8E2e",]] }, - pool2: { tokensAndOwners: [["0xBAe8Ee2D95Aa5c68Fe8373Cd0208227E94075D5d", "0x8fD9f9AEd3a1a823693580CCcf482A04Db2Ad4f3",],], resolveLP: true }, - }, -} - -Object.keys(config).forEach(chain => { - const _config = config[chain] - module.exports[chain] = {} - Object.keys(_config).forEach(key => module.exports[chain][key] = sumTokensExport(_config[key])) -}) diff --git a/projects/odyssey/index.js b/projects/odyssey/index.js deleted file mode 100644 index 493c2ab1d3a..00000000000 --- a/projects/odyssey/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require("../helper/cache"); - -const graphs = { - ethereum: sdk.graph.modifyEndpoint('BguCyHCbhwRK4MB4DCFmHLR7KNeDKHE64iDXAY6dp4cR'), - base: sdk.graph.modifyEndpoint('5b3mwB9M2TFkD259vzED9sUe8A8j3V2HDobuCgoe8pVh'), - optimism: sdk.graph.modifyEndpoint('2tkJQ566D58MzdKzwShZESwgEdTkdWCxCmBKgPyf44bb'), -} - -const queries = { - current: `query get_current_positions { - positionRegistries(first: 1) { - totalDepositedUSD - } - }`, - previous: `query get_tvl($time_start: BigInt, $time_end: BigInt) { - positionRegistryDailyDatas( - first: 1000 - where: { - blockTimestamp_gt: $time_start - blockTimestamp_lt: $time_end - } - ) { - id - totalDepositedUSD - dayStartTimestamp - } - }` -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(graphs).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - if ( Date.now() / 1000 - api.timestamp > 60 * 60 * 24 ) { - // do historical query - let depositedUSD = {} - const { positionRegistryDailyDatas } = await cachedGraphQuery(`odyssey-${chain}-historical`, graphs[chain], queries.previous, { variables: { time_start: api.timestamp - 60 * 60 * 24, time_end: api.timestamp } }) - positionRegistryDailyDatas.map(({ totalDepositedUSD, id, dayStartTimestamp }) => { - const registry = id.substring(0, id.indexOf('-')) - if (!depositedUSD[registry]) depositedUSD[registry] = {totalDepositedUSD, dayStartTimestamp } - else if (depositedUSD[registry] && depositedUSD[registry].dayStartTimestamp < dayStartTimestamp) depositedUSD[registry] = {totalDepositedUSD, dayStartTimestamp } - }) - Object.values(depositedUSD).map(({ totalDepositedUSD }) => api.addUSDValue(Number(totalDepositedUSD).toFixed(0))) - } else { - // do current query - const { positionRegistries } = await cachedGraphQuery(`odyssey-${chain}-current-2`, graphs[chain], queries.current) - api.addUSDValue(Number(positionRegistries[0].totalDepositedUSD).toFixed(0)) - } - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/ogx/index.js b/projects/ogx/index.js deleted file mode 100644 index f56f868fc91..00000000000 --- a/projects/ogx/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// OGX -// https://ogx.network -async function eos() { - return await get_account_tvl("synth.ogx", [["core.ogx", "OGX", "organix"]]); -} - -module.exports = { - methodology: `Organix TVL is achieved by querying token balances from OGX's Synth smart contract.`, - eos: { - tvl: eos - }, -} -module.exports.deadFrom = '2023-05-31' \ No newline at end of file diff --git a/projects/oh-finance/index.js b/projects/oh-finance/index.js deleted file mode 100644 index 260b5ee7373..00000000000 --- a/projects/oh-finance/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const CONFIG = { - ethereum: [ - "0xa528639aae2e765351dcd1e0c2dd299d6279db52", // usdc - ], - avax: [ - "0x8B1Be96dc17875ee01cC1984e389507Bb227CaAB", // usdc.e - "0xd96AbEcf6AA022735CFa9CB512d63645b0834720", // usdt.e - "0xF74303DD14E511CCD90219594e8069d36Da01DCD", // dai.e - "0xe001DeCc1763F8BadBbc1b10c2D6db0900f9B928", // usdc - "0xB3ce618F43b53Cdc12077FB937f9fF465BcE1f60", // usdt - ], - moonriver: [ - "0x4C211F45876d8EC7bAb54CAc0e32AAD15095358A", // usdc - "0xdeA7Ff1D84B7E54587b434C1A585718857CF61d1", // usdt - ], - metis: [ - "0x4C211F45876d8EC7bAb54CAc0e32AAD15095358A", // m.usdc - "0xc53bC2517Fceff56308b492AFad4A53d96d16ed8", // m.usdt - ], -}; - -const abi = { - virtualBalance: "uint256:virtualBalance", - underlying: "address:underlying", -}; - -async function getBankTvl(api, vaults) { - const [investeds, underlyings] = await Promise.all([ - api.multiCall({ calls: vaults, abi: abi.virtualBalance, permitFailure: true }), - api.multiCall({ calls: vaults, abi: abi.underlying, permitFailure: true }), - ]); - - vaults.forEach((_vault, i) => { - const invested = investeds[i] - const underlying = underlyings[i] - if (!invested || !underlying ) return - api.add(underlying, invested) - }) - -} - -Object.keys(CONFIG).forEach((chain) => { - const vaults = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => getBankTvl(api, vaults), - }; -}); diff --git a/projects/ohmw/index.js b/projects/ohmw/index.js deleted file mode 100644 index e25c32f5dcd..00000000000 --- a/projects/ohmw/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { deadFrom } = require("../mosquitos-finance"); - -module.exports= { - hallmarks: [ - [1670457600, "Rug Pull"] - ], - deadFrom: 1670457600, - ethpow: { - tvl: () => ({}), - } -} \ No newline at end of file diff --git a/projects/oin-finance/index.js b/projects/oin-finance/index.js deleted file mode 100644 index 81332d43912..00000000000 --- a/projects/oin-finance/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { pool2s } = require('../helper/pool2') -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - hallmarks: [ - [1675036800, "Winding down announced"] - ], - timetravel: false, - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - ['0xde7d85157d9714eadf595045cc12ca4a5f3e2adb', '0x062bf7b431dc9a3ab4062455e8d589df91748353'], // STPT - ['0xf8c3527cc04340b208c854e985240c02f7b7793f', '0x6c64cded6BDD702a3BD9bB9e70C6d758fC358021'], // FRONT - // ['0x9aeB50f542050172359A0e1a25a9933Bc8c01259', '0xD539cb51D7662F93b2B2a2D1631b9C9e989b90ec'], // OIN - ] - }), - pool2: pool2s(['0xae18cc5f00641563313422e5d61e608264012328', '0x37c3e8729b105b78013f47cb1a00584c7de90d1d',], ['0x54d16d35ca16163bc681f39ec170cf2614492517']), - }, - harmony: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.harmony.WONE, '0xD018669755ad1e8c10807836A4729DCDEE8f036d'], // WONE - ['0xb6768223895acc78efba06c28fdd8940f95a8ec2', '0x014186Ea70568806c2eEFeeaa1D2A71c18B9B95a'], // VIPER-LP - ] - }), - }, - near: { - tvl: sumTokensExport({ owner: 'v3.oin_finance.near', }) - }, - deadFrom: 1675036800, - methodology: "Counts TVL on multi-chain of OIN-Finance", -}; diff --git a/projects/okc-liquid-staking/index.js b/projects/okc-liquid-staking/index.js deleted file mode 100644 index ce0a137ebc8..00000000000 --- a/projects/okc-liquid-staking/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const STContract = '0x97B05e6C5026D5480c4B6576A8699866eb58003b'; - -module.exports = { - okexchain: { - tvl: async (api) => { - return { 'oec-token': (await api.call({ target: STContract, abi: "uint256:getTotalPooledOKT" })) / 1e18 } - } - } -} diff --git a/projects/okcoin/index.js b/projects/okcoin/index.js deleted file mode 100644 index bc7d9f051ba..00000000000 --- a/projects/okcoin/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - //only wallets with more than 100 USD - '0xd30b438df65f4f788563b2b3611bd6059bff4ad9', - '0x4a8f1f5b2a3652131eac54a6f183a4a2cf44a9a6', - '0x2ce910fbba65b454bbaf6a18c952a70f3bcd8299', - '0xa28062bd708ce49e9311d6293def7df63f2b0816', - '0x964b78ef2925f24c3a8d270c10522638dee5f17f', - '0xd7efcbb86efdd9e8de014dafa5944aae36e817e4' - ], - }, - bitcoin: { - owners: bitcoinAddressBook.okcoin - }, - tron: { - owners: [ - 'TQ7wK19fhZZqLdj2Xcw2e6Ejs3cTZbfBbF', - ] - }, - avax: { - owners: ["0x5793da1b0c41c7db8e3eb8dbcd18fdca94a58535"] - }, - polygon: { - owners: ["0x0f51a310a4dd79d373eb8be1c0ddd54570235443"] - }, - okexchain: { - owners: ["0x5b73841a54f6f2e8b179f1801f664f470d7f37ea"] - } -} - -module.exports = cexExports(config) -module.exports.methodology = 'This wallets where collect from here https://www.okcoin.com/proof-of-reserves/download Audit ID 500509486 , 06/08/2023, 19:00:00. We are only tracking BTC wallets with more than 0.1 BTC. We are only tracking ETH wallets with more than 100$.' - diff --git a/projects/okcswap/index.js b/projects/okcswap/index.js deleted file mode 100644 index d86a82b2492..00000000000 --- a/projects/okcswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - - -module.exports = { - methodology: "tvl is the liquidity on the exchange", - okexchain: { - tvl: getUniTVL({ - factory: '0x7b9F0a56cA7D20A44f603C03C6f45Db95b31e539', - useDefaultCoreAssets: true, - }) - }, -}; diff --git a/projects/okex/index.js b/projects/okex/index.js deleted file mode 100644 index bb04258e67c..00000000000 --- a/projects/okex/index.js +++ /dev/null @@ -1,552 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { cexExports } = require("../helper/cex"); -const { mergeExports, getStakedEthTVL } = require("../helper/utils"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - bitcoin: { owners: bitcoinAddressBook.okex }, - ethereum: { - owners: [ - "0x03ae1a796dfe0400439211133d065bda774b9d3e", - "0x5041ed759dd4afc3a72b8192c143f72f4724081a", - "0x6a4561ef7874a76b4bf0d3edca31dfcd51603414", - "0xbf94f0ac752c739f623c463b5210a7fb2cbb420b", - "0xf59869753f41db720127ceb8dbb8afaf89030de4", - "0x65a0947ba5175359bb457d3b34491edf4cbf7997", - "0x4d19c0a5357bc48be0017095d3c871d9afc3f21d", - "0x5c52cc7c96bde8594e5b77d5b76d042cb5fae5f2", - "0xe9172daf64b05b26eb18f07ac8d6d723acb48f99", - "0xae0cbaba071d58efc278a815b2cb652286e192ff", - "0xc5451b523d5fffe1351337a221688a62806ad91a", - "0x6fb624b48d9299674022a23d92515e76ba880113", - "0xcba38020cd7b6f51df6afaf507685add148f6ab6", - "0x461249076b88189f8ac9418de28b365859e46bfd", - "0x42436286a9c8d63aafc2eebbca193064d68068f2", - "0x69a722f0b5da3af02b4a205d6f0c285f4ed8f396", - "0xc708a1c712ba26dc618f972ad7a187f76c8596fd", - "0xb47a0ac7798d8308467b2b96ac632ed43c9cb6d7", - "0x12a8bdc0470ab29a229d828526641b7d1f170fcf", - "0x2c8fbb630289363ac80705a1a61273f76fd5a161", - "0x25236e080106b5387df201fbbd9a6b870917676d", - "0x3d55ccb2a943d88d39dd2e62daf767c69fd0179f", - "0x68841a1806ff291314946eebd0cda8b348e73d6d", - "0xa7efae728d2936e78bda97dc267687568dd593f3", - "0xeaed6576334b003d1c5c4797d9c7bb025a20c038", - "0xb99cc7e10fe0acc68c50c7829f473d81e23249cc", - "0x6cc5f688a315f3dc28a7781717a9a798a59fda7b", - "0xd576392cb12b7749ba33f8d223f64e65ee32f03f", - "0xdad24044e36587d975d7b5bceb6467fac21e0c81", - "0x539c92186f7c6cc4cbf443f26ef84c595babbca1", - "0x868dab0b8e21ec0a48b726a1ccf25826c78c6d7f", - "0xbfbbfaccd1126a11b8f84c60b09859f80f3bd10f", - "0xf7858da8a6617f7c6d0ff2bcafdb6d2eedf64840", - "0x98ec059dc3adfbdd63429454aeb0c990fba4a128", - "0xee1c6537e589a15a15f80961f5594c57bed936fb", - "0xdc3ce895714844b4775b6d06f0dae513542cee10", - "0x5f8215ee653cb7225c741c7aa8591468d1f158b8", - "0x3c5883c650d600bd543a9b5c8d9a3a6f5d16b8f4", - "0xc68c17e6eec0fde3605c595c9b98de5c1a4cc3e4", - "0xc5a93444cc4da6efb9e6fc6e5d3cb55a53b52396", - "0x7eb6c83ab7d8d9b8618c0ed973cbef71d1921ef2", - "0x313eb1c5e1970eb5ceef6aebad66b07c7338d369", - "0x9723b6d608d4841eb4ab131687a5d4764eb30138", - "0x96fdc631f02207b72e5804428dee274cf2ac0bcd", - "0x06d3a30cbb00660b85a30988d197b1c282c6dcb6", - "0x276cdba3a39abf9cedba0f1948312c0681e6d5fd", - "0x4a11078a99b118bbfee78a5c187d98d264360433", - "0x9e3bb2cd5a89fcc4b826230b144c4917881bea85", - "0xcb0963264231bb08b2f680ab3ed89a49c9641bb3", - "0x4bcbaf34862e6480329477917cf5cd7b9537a98d", - "0x4e2757e46103556f98d4d036d8efe18389b89f51", - "0xcd5bd47d3d1d8412b241ce9015c5032142948c12", - "0xbda23b750dd04f792ad365b5f2a6f1d8593796f2", - "0xa27cef8af2b6575903b676e5644657fae96f491f", - "0x68e2ea1622aa67fb3a01a66d132daed8a48d1662", - "0x9b645675e8d64759e5c36e30dcb766d8cec3d34f", - "0xe983845a04c681a295dd9ce1fa8c2c8505932da3", - "0x3f482c72a2b3e777746f5755cc0ff1323ea2ad16", - "0x47eb32dea1ab1436187939fa72d6d5ff884a87da", - "0xd266529641eeffaa2b2a0bc99daa5b32ef241078", - "0x6d8c32fcf2d95ff410ba492f6694f18cbee55ce1", - "0x30c1dcde81e5dbf3121d0408abc7908980e83ae2", - "0x0ff9491b236a36cc183823e39d7532194143fdb1", - "0x0475dd0e4194422a8cac486dc69173f535d0baf4", - "0xdb0ed345cb52c2f2457918afa3eb4b682e264ad0", - "0xba96a3f3d5e9f13a5f93c37001f946d42eb2e165", - "0xf7c63e75b90c60d7b343106a39658f8b3ca6e4d2", - "0x17e91b98988937cb59dc163b0b11781f9785591a", - "0xde01974fb4a98bafd7cbf8a06ecf6dcc94d7283f", - "0x9e13bae2256f968d02fe0129a0f51788f4e2472f", - "0x8734bca44102bf8a663e1ba112308504606e1b08", - "0x5a150733cb59bbdd5c7398a8fe7da7f97c8a213a", - "0xb4ec508adeb174610b4295e233a458b3475964f7", - "0x6667a4b7eff4a0b86781fb3b187622cd3c257f09", - "0x42cf18596ee08e877d532df1b7cf763059a7ea57", - "0xa2684f75740cfff46c29bae79a4ecc43043c003d", - "0x0799ddbf6f14db566ca4df4ff0575c4cc1e7749c", - "0xbfef5c888bb7a0a6b14b4c3ccc4364ea81aa573f", - "0xb640e1e5a5f726a054cd518c968dfdac8c421ee5", - "0x793aa889e19a130ee4cb8b63c79aa3bdccc663cb", - "0x68b5e9e083bfc28c33cfbf3f19d33e629015e907", - "0x728d92a8023bfbe0d4f3fdd549ed3b4996a0eba9", - "0x5b27e98516fd2bd5001d4dfe3f5a2263f702f634", - "0xb072b7dc9521d97a3f12b04beb1e497f8875ec52", - "0x16b5016803bcb4915701efc0a3b471bd4c168d93", - "0x4106a4be14867c70e52c51b9805514ae2e16de64", - "0x56fd42ecd77c88bdd959be54af10d1759b473dff", - "0xba0a39d37151fa4f938bec51cdae4675105760f4", - "0x52738a51882f35d6b25a3fd0c86089ddbd206821", - "0xd9a3c9ba5aa4415a53b9190bcb00f14472790a70", - "0x6b7ba57e1d43c2c975ba25139a04d193e64a11d0", - "0x48480aad203e8b030f82754b3c75869c9895c6bf", - "0xeb196a61f9a1e35bf5053b65aaa57c5541dcba86", - "0xfcb21730ac0cd487d8701dfed1170e023b57cf7a", - "0x88c94d8e7d4203b185b3beb0a7b15a6b4f36b2a2", - "0x730df969955c0a2fa9e8f2484e9741a363afdbb3", - "0x267b51c97632225da2b2e49aebe59eef1af32653", - "0xdeb6ad2a7820839464da79bac953ae6189215443", - "0x0938c63109801ee4243a487ab84dffa2bba4589e", - "0x06959153b974d0d5fdfd87d561db6d8d4fa0bb0b", - "0x48c4c83be7e3884ee5043a3abe5115eb020b5f4a", - "0xcbc767b519394a9e4682cc9a15dcd18c46a6045b", - "0x297611b7accb7f24032c27b3a496465624c7ef50", - "0x6dc1a070425f437ac08bb108f7093b177d7af3a6", - "0x52b311c52436789f3754bd199bf3886b8ccbab4c", - "0xe6eea9812ccc5981ccf0ab333610c42c2d92d146", - "0x8c3cb9665833fd9f79eb14cba16d82bbab6f22d8", - "0xe2effe5bd0617a5a2dc1ee579565911cef3a223b", - "0x0a133528245eaf5bab72dc05a9dd8e0ea4b982f9", - "0x221ac9e1920932e95adf0c941f3524157f4bda4f", - "0xcab0c0a224bad992085430f87dc1855342763a88", - "0x45d9c02baed2d1670f7bad40fb5f657a05068d52", - "0xf8b4256122369c48eb8c3d901875d62458a675e8", - "0x6fd41d4a272247fd1104c710909a4af8bd38f522", - "0x1278678b5b17eba14b313d287659ae9f3aa7c087", - "0xba7fd71d309bc0e96b64022fd8fea7299b256159", - "0x1c628a9c66ff63454a4526a4f2b8af250da8d086", - "0xa01533d5c66a4886d3bb39b156507d9de65653e6", - "0x01c2a9e7eeaee29b03708692ba5e1515036451e8", - "0x01f7cea182239f9e9caf0f1ce0744bcb23c20585", - "0x89b2f6dafc9d46ce0ed7d7e45a4972d14f037a19", - "0x42797deffe266a55fdc4c98d7d3885d7058cb3e5", - "0xa9ac43f5b5e38155a288d1a01d2cbc4478e14573", - "0xc5267f13b9b4ba7bb73bdd53a2a3c944733a2961", - "0x91d40e4818f4d4c57b4578d9eca6afc92ac8debe", - "0x559432e18b281731c054cd703d4b49872be4ed53", - "0x9938ee74ba7a5c1abcd157272a18fcfc9ec9e8d5", - "0xb8ede418d8116113efb7644a792e5d97aade6138", - "0x06324bad3913cb69cb5e748a3ed72f9d692324bb", - "0x66e6bdac6fae819f944901e3b6ecc9bfff61a706", - "0x778e456fbfd14075f5ddbccf9be2d6a48e3b1ecb", - "0x593878f92dde464fc4e3b17cd7cc87117dca753c", - "0xd7764b4305bcca935e38a450e7956822113374b6", - "0x932d7d2cbc06234919f34802a22a914282a00f87", - "0x7d4a2c448fe5b07c62228140417b3565bbe1b86b", - "0xf02e3c0095f6de36c76364d4cc53eb06d1288fc1", - "0x8ad740adce08f2f3579884eac0a12e581304ac3b", - "0x7926c83479e2708edfd83a39d62084693e192298", - "0x4d619eb6db0b9b6184d9881c4828c0effff84eda", - "0xc0d01a27fd89e6bbc68f43e94ade3dfca2c27674", - "0x80335e658ee73756bb8220bdb77f99e98322035f", - "0xe7c8fdd899ab06ac1023e8a3e867c5fa7e751450", - "0xc6724cf116573eab588fb0d73dcdc16929493cea", - "0x9ce5a8098270f07a0a56398febda76a8ee2858c4", - "0x9d65bf1bce7a10814228f4d81d8cf99a6b0f44aa", - "0x19abcd6b8516d2b4d9aa3bbf700b38a30dc154fc", - "0x994d24172fcfafbb5fce0ac5392078fa1c025448", - "0x6ededbad1e864105fa2538ddfbf4e7214b9e6529", - "0x7a93539c1bf9a96f87044925deb7a0849266213e", - "0x11b113383ce08e84001dc614f141ae4c27221e31", - "0xfe908731af54c56dfd63948f18ce5878a3b8a1ad", - "0xd19d3341227967610b94e7aebe8c971d2d48f419", - "0x611f7bf868a6212f871e89f7e44684045ddfb09d", - "0xc275bf069df3e63184a1222359114b805b6cd2f5", - "0x5f5105b9a19e301208844263806df9b7212e655d", - "0xa68cfe488a785c8b38ce2db6c45cfe07cb620c2d", - ], //ETH DONE - }, - tron: { - owners: [ - "TCz47XgC9TjCeF4UzfB6qZbM9LTF9s1tG7", - "TJbHp48Shg4tTD5x6fKkU7PodggL5mjcJP", - "TM1zzNDZD2DPASbKcgdVoTYhfmYgtfwx9R", - "TSaRZDiBPD8Rd5vrvX8a4zgunHczM9mj8S", - "TWGZbjofbTLY3UCjCV4yiLkRg89zLqwRgi", - "TEQJh9RtTryMZsWY2vFAWMiRbk6w64vt1w", - "TLtEhFAkdE2mmcPWxuQGyjm2dikT5NrJgz", - "TBREsCfBdPyD612xZnwvGPux7osbXvtzLh", - "TXkCx2gaEWrtU3g88aYxrqHxeWYXX5UUtL", - "TUAVzJ916T7z6oqpdCCaTv6ipC2mmBMJev", - "TDq3zUoRN2z4UktF7yKaQqejfwa9qjnYdM", - "THwyeoCMSXQq2aGDpXpSqo89VnTtFktGGp", - "TCw6YaWm3y6DvxY7M8hrCDnrJGeGMumzGJ", - "TLaGjwhvA8XQYSxFAcAXy7Dvuue9eGYitv", - "TLEXqT4qYJeKr83baQmPgPtvkMrsFp3wvs", - "TYah6kK3TKwTdTVt4XWpwpFCayLmnbURRM", - ], //TRON DONE - }, - arbitrum: { - owners: [ - "0x62383739d68dd0f844103db8dfb05a7eded5bbe6", - "0xed55e0d547fd2fa53aa64f587b21a9caa9e2d90f", - "0xb8351b61fa1eb007a9f80144c489d513e6a76b14", - "0x88288100c2005c5ce9b06956bed357f3ccc95b9e", - "0x42cf18596ee08e877d532df1b7cf763059a7ea57", - "0x0938c63109801ee4243a487ab84dffa2bba4589e", - "0xb8b0b53b387b061af2717d642961af405c79e85a", - "0xbf94f0ac752c739f623c463b5210a7fb2cbb420b", - "0xf28143f7b282e59bd5f979012982e7cb9d9b95b0", - "0x77a9b3fa8387652128ca5a9e4756e9e88dac3634", - "0xafee421482faea92292ed3ffe29371742542ad72", - "0xda225ad5d93bd96da9306d0f570ae0ed1013e7fc", - ], //ARB DONE - }, - avax: { - owners: [ - "0x7e4aa755550152a522d9578621ea22edab204308", - "0x62383739d68dd0f844103db8dfb05a7eded5bbe6", - ], //AVAX DONE - }, - polygon: { - owners: [ - "0x06959153b974d0d5fdfd87d561db6d8d4fa0bb0b", - "0xf81233a61c0d6d13c6fe504ddbba3e2630ea0c5c", - "0x06959153b974d0d5fdfd87d561db6d8d4fa0bb0b", - "0xbe787d53e09822cc42bfb4abe1fb4492cae3d19d", - "0x41205307b6618f03be2d95747a07311456bdb143", - ], //POLYGON DONE - }, - optimism: { - owners: [ - "0xebe80f029b1c02862b9e8a70a7e5317c06f62cae", - "0xcba6a2397b322cf1389f6d1adc05f75f36b20116", - "0x88956282d52eee0ae1bf8eaf98bc6eac2250b681", - "0x7332cd352a84673f1413416ef2e321e17df59844", - "0x2d2cc0eb095e43204e0c087e07dbf95909650939", - "0x42cf18596ee08e877d532df1b7cf763059a7ea57", - "0x5ff13e9a3eed7a2dbcb1dfa21dfb1c07f3419277", - "0x8d371bc560246dc632c4e707707d85d2e568a832", - "0x63a34366eff680c1a01a0146feccbcedf72d95ff", - "0xb5216cb558cb018583bed009ee25ca73eb27bb1d", - "0xc66c72b175b1a26ef4107c68aef9740b244955c4", - ], //OP DONE - }, - era: { - owners: [ - "0xebe80f029b1c02862b9e8a70a7e5317c06f62cae", - "0x539c92186f7c6cc4cbf443f26ef84c595babbca1", - "0xbfbbfaccd1126a11b8f84c60b09859f80f3bd10f", - "0x461249076b88189f8ac9418de28b365859e46bfd", - "0x4e7b110335511f662fdbb01bf958a7844118c0d4", - "0x65a0947ba5175359bb457d3b34491edf4cbf7997", - "0x868dab0b8e21ec0a48b726a1ccf25826c78c6d7f", - "0xa7efae728d2936e78bda97dc267687568dd593f3", - "0xc708a1c712ba26dc618f972ad7a187f76c8596fd", - "0xf59869753f41db720127ceb8dbb8afaf89030de4", - "0xf7858da8a6617f7c6d0ff2bcafdb6d2eedf64840", - "0x91db5305946446922ffd913bca64f470e590d480", - "0xb1c5521c10056a939556cd3a3d21b3832829ba13", - "0xf9b52be2426f06ab6d560f64a7b15e820f33cbdb", - "0xd4cae20640d8c862ddd8e73905cb3b6a7bbd2383", - "0x837c8b092d8ae45e0a34711c5d01445def34cb94", - "0xea9ab661d6624cb70eb89f6cf80ed579570a4ecf", - "0xdd91c62363c14aa169d0685c77d5fb1aff213500", - "0xacfd960b25a817ede1937a6c331112ab855c76ff", - "0xaac907c7f6f00c3da04158b7181ae32bb0e61eec", - ], - }, - solana: { - owners: [ - "CeGyfZdtbjzC5FeVXCBdYE1v397yxxqYgmMcUwtouJUu", - "6Attw9NcFspCAreufvQ3mW8aqXEk6MDceeoC8obw45cJ", - "CE8joA143dBjsCFTeBxBs3kNGNU87WH6Q7GMMfxPzSr2", - "FefAbVt2EgXMGxeJb6sB1k5pQJhiGPxw4mB1zeUohZLk", - "BEaiMhcc4Kao7B4hoq6r9m8neUpfimUMwhzugKxtkZw6", - "5VCwKtCXgCJ6kit5FybXjvriW3xELsFDhYrPSqtJNmcD", - "APJmXrtC9TUAg5gcjbcsVUiVzeDv85xLZRLad1GiQTNE", - "5kiqH41rz2wPoNH5FuDJ3x8dB3EEe3XGoSWy2485tAp9", - "8dUc88Nss8uhqzzFvUQhepkwZaVrfzpoCfKjCXGkdzAG", - "44DwSkZbY2PVo9wfFP21D7HG7xf5rw8QaF6xSLGSfm7P", - "945SJTwsBSqwEEgtKMnhcLDnJowP6YpJUTEykMVK5k6q", - "9un5wqE3q4oCjyrDkwsdD48KteCJitQX5978Vh7KKxHo", - "FJS2rTjAQmFFRmVqtnkceGvLJrMwUPgCUfLjciuMYkSC", - "7fGw3UURsxk1szQ4buxQyEkiF4P6z7vx7sN1MHEguTJg", - "BhJrLQEyFyrcf1746pHATzAZQpC1uk3SJf2AHHK7LW3K", - "5URmUviWsAtcciFXqgM7f1jmhvBULdQDT47dqDkrJUi", - "6NnzUC7mrM7ZgKdcMq1jPAdqh9TMgdsaVR1DNq6kce3A", - "7o9ukGhWvc71yYcjinKnrxMn2kFMyQD1iCG3romrzg7r", - "7CtzEcGeYpMfR1aEi1Gbt8GRHDPH9uDB6GNTsBABqSmo", - "GcFZHQVJ2icPGLrA9qPLq88b7eqBXSUcdL1utUtUfcSD", - "BWZqi67kXsvf5crjd19Fb3gmf3DCipGE8eWWJT2YHDXQ", - "CGZAHxBannZzYK3rzVdG1e3uNjMxrmaXDhLEZxQBbueq", - "EBVigEhxvkWUwreG98kTh5FbZEjnXTXC5ANZtLz4YpHQ", - "HnLezgQkNVWMp2AV6mcHM1Ljst32kfsoVnYUkvXuQpjg", - "is6MTRHEgyFLNTfYcuV4QBWLjrZBfmhVNYR6ccgr8KV", - "FmpbkPgxjoYBJ6ac6YMhZ1FycCwuG8Zs2epxgsGFYvf6", - "C68a6RCGLiPskbPYtAcsCjhG8tfTWYcoB4JjCrXFdqyo", - "AEZoku1fLfUz5JYJ3kJ5YVdf3QT1T4RwdggGbuR8Eakd", - "CBEADkb8TZAXHjVE3zwad4L995GZE7rJcacJ7asebkVG", - ], - }, //SOL DONE - ripple: { - owners: [ - "r4G3oDV1FJu1TtTv5M2u1cGbMDHnZzZpdn", - "rUzWJkXyEtT8ekSSxkBYPqCvHpngcy6Fks", - "rag5wJXFyzEhHyfta2FWLRPHkP9SNe5iPk", - "rnHhjhpjchURKdfH7a4mch8gWJ47eBTgrm", - "rKyo92WeVbajD8bNR9pm5s4z6t2JrgcYP", - "rhcr95EAN24JPLpgSEf3mJKCkVKQspSUhR", - "rBuZfn1m4tA6znziHsRp9AyC1M3qg6rgbF", - "rLrZX3WepAsLRyAmYbFjV9tVPBjzmLis3J", - "r4eVDKE3P5vK1zsc98dCeBDUM3JqyE4rUU", - "rKEt6B3sgP8Qpb1PBdmdx54XmbVynpLRsv", - ], - }, //XRP DONE - litecoin: { - owners: [ - "LNz6qoXAu5XMvJVhNApjq7uz9wRnnN8jvk", - "LPECByb5d3f1LuSoCqLX1fodnUYoYwjCMC", - "Lcxdj5PnnMEhxpPJ5LKbRf4HP4soaZ5TDD", - "LWCnL7CZpW3rvC7zeeMWPBZCBH4QPVnF1s", - "LRPDqJ4MLoE8nGSqnH9GZYebnyUVjke9uK", - "LesrR8ZiV5sRdVA3MBAc7qK9V7HDBpC3ou", - "LagNsYWF6NfTeo9Zg26s61cxLG4Zcefycw", - "LYPZ9r4W5zDHzsyH2bCuhNbFJcMNguZ6iN", - "LYPo65ycrKHmh3feNWyfTW2GJefbs1zB9C", - "ltc1qzvcgmntglcuv4smv3lzj6k8szcvsrmvk0phrr9wfq8w493r096ssm2fgsw", - "LectSLekhkxEQBHofNFHa3pVHndnb4Z9fN", - "MVEM6raMPCzMpBuogq9CDKyRaAhDMJ8YQK", - "LX1H9qaPNp6ZeP5Qx1oWqkphmcQM4PPeH7", - "LccrcG5qQnZyfBn2WSwyN7KuJnUXnTN7NW", - "LbsP3WjJD3GMrVoMS9NbnhjPhX4k7AcrUY", - "LKRP8rdFggMRKkYPvr4evciSWqgNKfj5Hf", - "LNDjLV8UHjvh1QP1wuREz3vbE7ovV5x3pr", - "MP1dDMMEgrBTLmsx482NR2HQ61rQZ85xwJ", - "MPw9hcat2fyUNuidX51f1pmh2PXwg11g7x", - "MKmCscoiaGDn6dfGtuBg6bH9Pr1A5nu7FF", - "MDQkKgKEaaECDJ5k7VPTxJx2bYLjvNfhgQ", - "MJQNNTeK9t55vukEUP6wQSCTXKHo47BmgE", - "MQLBQczCgYsfjNwgFC2sPg83ujxfz4pdmN", - "MR4PbY7SBt92b1Vr3b4kY8pZqee7YzgqbV", - "MEmtM51WzUZ2L4AFhWxPQE9R5mScEF2XWx", - "MNN2bPSdVn5jyEwpHfR3NYnrs7ZjncjNjk", - "MR14teGawvyf7nvKWM9wc2PZvU8AZaD7Ed", - "MTKahnNbmh5RNdu5T1eFrXFUmL4nq1MK8b", - "MLtcgtn2bepDmN1SARLEM9ZiYvsHGGNcrb", - "M7xE1c91NW6sTcJizdXHZjavQU3ugCaSHc", - "MVbmLCzFEAMCrEsSBLYw6QPzwiuVEw8Raa", - "MX75iUryuoewUjfaU6Jio3SkjxeW2R2Unz", - "ltc1qguz6pay8hvv0qsd07wtptcfx5wjxa8tqququgurlvm2yfaj9txqsn8xsdv", - "ltc1qzfcjzpcqr0kmedcenyhqaxlcsdfa8d2tul8e98w8g3r30cc28wxsk2ewaw", - "MDSKJjS1dtcCckfsktvLK3Z9XbrrL82W8t", - "MG96xwy6u76g8rgBr6vwY5FvLhe6X4i3ts", - "MVpEAf93cAPUp9ixqDRgFhkrjMcvNY13dj", - "MQdJv3Y6cmn8MeuvDu5VciT16c4V5Ri7iH", - "MBGRVR6po6gbrkiYaoRz6NPbftr4wLvG75", - "MRFFKFJigW4pmT4hLtwg42MJaQXZXConCX", - "MSFMWBuyTmWDXfYRLyjasSiEoKkaRGyRCy", - "MFLWZ94Hhzs9f2xaTx1zDS3sjqqxsKcvuK", - "MQH7ZpEwwsTiBCDqtzarB4KJoAk3LUgtkc", - "MVbVddfiVZ6YajEZqYHqxGYmmLm4yMchJ9", - "M8rJRaPMXgDcUJCTB4vhZQitnqe3xtxgDk", - "MSxufKuammcGnJTaEvWCypXotUdnbv7TKK", - "MWUj8rC1UcGxi9XcWRmWSkCBicXf2e6Wuj", - "MRD9UyU4WzzaRs9wZefMadWqzKoCWFxmj7", - "M9yPiTqTkikzdRWMpwqhrFVKN4yVSxu8uu", - "MM98sA4Rg8FDyxZ1coBvtGovh6i8AkXHKp", - "MRTJvzoV3FLnsLCjYitWjbpJiyfTuK2JnZ", - "MFHNWKDHJP5HKDSWCheyWAxrvyt721K5ev", - "MNeFqZo7jV86ukG7Nf5sk7yqz3fSiSfK3M", - "M97KqwFX7Z7HP7bWN1nwhKdWNfeJTVzdWH", - "M7urfQU95Aib2TwSCTBprvXR8FBTXVLwae", - "MH7Qru4KFC6tLSiSq7bTWUDyiXERwzdqKp", - "MGLUZEgfyM87uKUHWAnB2se399TGZqbDnx", - "MEe5pUSxXJcZZahvLfLC77VVKnTeoAtrmd", - "MGRSgHVWnMvxzQ8ULxTiaHWvJhWcLPhQv1", - "MWnVqWDN84U1tkDS8TkMyXEtQHrwRh4Ut3", - "MGafMffeNhGozkABqUHyURQFbYqVhsjhZe", - "MMYj754nyqB1JsmqE1ceXghXSVFmTKEXuS", - "MLbaghBFZkvqYPwLDtnKw1mGAYbmsxo45h", - "MSXtbMicQh4VKYCqTk1SXLxqH5HqvU7dvC", - "MRRGqQGCs2sJttdWpCcnYpUkQrn13epetG", - "MUji4pMnn9jdEHb1DsujTi65Fj4NzA6jQn", - "MNKS9AYfnUstXBwkRTaUos6UoSGvLKnnwt", - "MDTZowrzz3xxCZQnF8mAxjxhUY9aqNiyeH", - "MGXKkfaL5Djaun31pru9dWcaVppj1VNY47", - "MVP7V9W37o4KVkrk3hBfcpYTPr7d6bBZxq", - "MMuQT9oNmRXsVApXwj85DoMy1B5WS62FFR", - "MVpU3vCk26wwvVMHEBoGhkvrkCCAwSfLsD", - "MSg6snnN1kNQBv8zZDnZS6LPtAcgPKAD2F", - "M9YR5bkxSVaXGJtj1kUUtpZKEWcKkS1a3Q", - "MTBKAsSvY9K9GJfgwwKQ8vY3WbXwyVVA9N", - "MRuwsnHLjVcWktgVWYUUKvjEetTEgUfFQC", - "MSCCo5DG9o2QN3T9zMaEurCyKT25v5Q5M5", - "MRPebMGaTLvGsk7JrrkF2vs99jH5Nkcfm5", - "MMi5X57vLxFtwZ7mLzmmtkwduQzgqXyCV4", - "MK5jErYhVnk1FsUCMUb5qkJjnNicQJWu8K", - "MNBaTApJTKwSWUBKgGMvWiMXK2FPKcnmWk", - "MQHdZZgWhmomHRmhg7pRdsrBLNjMbaLwaU", - "MScDvyyadDWVFFa2PZADxJ3mvoC7pkdSdH", - "MTXKt1S4ZWZm4wmZjLUyDLxLJSTgBPrBF1", - "MGDWrDaowmFZXaB2BkDf544Y7xvgNbA2n1", - "MVx47taWrfuz4SjmP1NxENKsV9HFVBWYxf", - "MRrzg8LyuNxxKPBSYcZCYXDtx2JWsXhC31", - // 'M9Ru88MgyxaWzQD5rmFZ5nXLwb1Su6KhM8', - "MNqEQhjQekp6aPwrxo5CocGiZUojE7FRVV", - "MHSrpK7ANdTcdYov3r4D23ga4CX8qQ8Ldz", - "MEcmipRZAFTU3PKTCtYqqGgptLfaze4xxW", - "MEQfdN15WbcpUvGXDMCMTP5Q1Yo1EKLMwq", - "MNh9SQWrPEVj5YoFdPufNR9qekJw8GLurT", - "M8W6MNhggyf5hcsjYVDU6iftxpyMRjfiZt", - "MVn7Z1bNxmeyL7nz4sLGdF6XBHuweMEaxD", - "MDLNqKRF6maLJZYV8NHRNdTi52GG8XXGug", - "MKFoCHsQjXpgUj34fA8obeMNj4z1enu6ro", - "MMf2S745xTMPRYKjcjwJ5sMTmK9pwxsVzA", - "MBi5YtMEELodRdmeHcU1pLYWiwTnKvJWpH", - "MKSvHk2LzBD2Uw278HkStaQMAbLmyCvXSv", - "MCQQFzkb2zU1ZDX1daB6h4ynSomR1TFhQa", - "MJaNHxFebWxrCRJENBfRDwZoXxyrvsdiHQ", - "MArBU4dXkYkZJbCZUSLLXVDWpEhvZ9BMyP", - "MDjNonAsnF8iq8pDqiwiN5Fcstfkk3LUQX", - "MHPGjRwQoGaip9kRLHSmiPv6VHLzMiGFLn", - "MTpp5c4DpxMihE3EMu86vrbjfWPhvsnG3q", - "MVAxrYXj8yeohaigVsgmQk89RnYBrffQ2y", - "M969RrTxtF4Fo2h9QnB2sM36Ab89WWehZv", - "M84TwFy5YHpWTxnCtQEAV5roEB6ozN97Lo", - "MDfDd3sdKz2hF3zdNTJ6ahLSkoFgBiLi53", - "M884Z6eQWyGKmcsAXPTWi3W9M5YX2JB9m3", - "M8bH8zjba3zYPoHsMK6g44uJWap37j24Qa", - "M8Awr1FzdLztksKTKqCjCTNj9Rotya7DiL", - "MVH2jpnrn5FtfKC7Bqk7CdeYndZojR7BcT", - "MNNHqGDS3nLCEGjBerLwvgjfekPJu1y2An", - "MVT1BYi3H7qWZ7EEB2CsmznAJPm8wMFE4o", - "MNLJFrkggC3LSY3FdQbNTWTpQcHcwhUJDy", - "MT3uRreGbQPFLQpZWc8PnVcCfEZkQzhX85", - "MGN9p7Foo4bAFbfCeWuj1Ngx7wJkxggHj5", - "MBqStPHaH2yU8fG3uGCZJGUwce7mb8S6oV", - "MLFJDh1kKkRNWqS3B5yNzddyCapTYBQPR5", - "MRZ15mLqE18xTQfXvskJhdmEPfvgf9PvUi", - "MGVr8XVsxtQAuAshCAfL6rjtc77DbzpQXT", - "MGLhZLfV2qVj9hYXdS5EwMSUZjXeaDFj65", - "MVDLfhsEic5PgXv42ubeBFcZvH8xn2ZDFf", - "MECWwhSEAEG7V3mvMSPR36DVuggSJHebLK", - "M9J1Y2EYHKoMzDq1rRrUTcuDxxpHpac6Px", - "MMfdTujrCteCNoPDnX2GSAdtnJYCEtBKLB", - "MBvbFWcBZBP8rcu5RYjfNd7wC5HmjnT1Aj", - "MEYbWHJNctTDnFrnorrYocgXrHESvmFeDC", - "MDpSThaXtQRgAu6483mP33YFp6jXVfomUD", - "MR5hD6FVXghpXM2fCe3BDPSJ2tEmyoinsB", - "MWpXpCs5gtRyvYPUAzF7ibJ2DwEU79j7bT", - "ltc1qth4svxe90g4tmugzrv5kf7ej03t9j0ftfhezkv727pcr59vy7fwqd7t44g", - "MB4QMWUkqEiPxS4gkucyHUSH3jWEwjBQUR", - "MJudegZoSdECMmevzEvEVszZvM7Li3dK82", - "MS2b5H9mBu3AY7dNDXKGs8iY1tKEtcUxsA", - "MTerEFGvWbAgs4jdG5z1y9AnA4a4Dy8FFJ", - ], - }, //LTC DONE wallets with more than 750 LTc - linea: { - owners: [ - "0xd3d7dbe73bbdd5a5c7a49ca322763c4d400fc240", - "0x0ba37936c50bbcdc7130c67d931e5fe14285b8eb", - "0x6df7dd70d296d69802fe3d337f9b2b67770c6771", - "0xe4b76e1bf1b3b4eeb31ee2c263415e0214e0a008", - "0xe69a651561b4241c451d9cb534d766638238e162", - ], - }, //Linea DONE - polkadot: { - owners: [ - "14B3z6xL9vGgKz8WptoZabPrgH6adH1ev2Ven4SiTcdznfqd", - "15abPBmJrMY7QJeCEQJQbQ9a62A7ndfTo8KC7Wn4dzt9zMMg", - "1xpD24SQ9UgeFPQ2P9eRc7dppjgU9hiHDULqvWNfH3g3U54", - "16hp43x8DUZtU8L3cJy9Z8JMwTzuu8ZZRWqDZnpMhp464oEd", - "1Dkx7zjy4pRMwLQwWkbhb9Jxy7EXLfkdHVRXufwvdLV73QV", - "16UvKYsqojoivDsNXH3d5G48oXMfo1asxA4NtF2GxhoBjZHz", - "1gn68eNGNGqV3QjVcRRDVfw22xFn1eFyUizHCENVn256LXh", - ], - }, //polkadot DONE - aptos: { - owners: [ - "0x834d639b10d20dcb894728aa4b9b572b2ea2d97073b10eacb111f338b20ea5d7", - "0x8f347361a9461e9312a4d2b5b5b928c65c3a740965705361317e3ca0015c64d8", - "0x966e3ee07a3403a72f44c53f457d34c7148c2c8812c8d52509f54d4a00a36c41", - "0x51c6abe562e755582d268340b2cf0e2d8895a155dc9b7a7fb5465000d62d770b", - "0x3621fa917ffef3f0509f5d5953672a69791df329139644d89d0a1b0beb98c585", - "0x4c1ef44079cb31851349fba50d385f708a10ec7ac612859fdbf28888d1f7b572", - ], - }, - starknet: { - owners: [ - "0x0269ea391a9c99cb6cee43ff589169f547cbc48d7554fdfbbfa7f97f516da700", - ], - }, - doge: { - owners: ["AC8azEyeWHk1L7XKvyeBjJtVwRwXgmP5hQ"], - }, - base: { - owners: [ - "0x39591e7c099a379fd7b349ebfecaeef439c40454", - "0x10b7dfc30e290b77ded2550d66974c6a124dfa0d", - "0xc8802feab2fafb48b7d1ade77e197002c210f391", - "0x0db6ffb36e26958cfa53cbe6d767f3cc7ba595d7", - ], - }, - scroll: { - owners: [ - "0x4ac465041f4378cca53939f45dc090ed3f3c86f9", - "0x82435d849b62a18b05a3ea478b37c22061231e64", - "0xe4f4799fd48f3a953a05f49407978aa4f3a43d6f", - "0x8553400a0c250ce254aa0543a7c118fba4166aeb", - "0x611f7bf868a6212f871e89f7e44684045ddfb09d", - ], - }, - ton: { - owners: [ - "UQD5vcDeRhwaLgAvralVC7sJXI-fc2aNcMUXqcx-BQ-OWi5c", - // "UQC0yf82SZehkJPvG26G0XYnIBlzFTCDth04ZnLu9-Avw0_s", - // "UQA-Wv4t1zUyWWDBfs2H6EgQqOooDPIuj3gVsa3XJ7KHStEM", - // "UQBK5nQVwGHBt_28JZZHjFxrCBaULx0SiqHIKth-Ks0AU4lm", - // "UQAtl5i8vh3gUmASO1xTEDcCm2MZSkDKAt0dZiEIOKo88evz", - // "UQAgSnzOzIZZhMGhXWnx7rGGbjIkB4yvnzecm777KgzejU7I", - "UQBfAN7LfaUYgXZNw5Wc7GBgkEX2yhuJ5ka95J1JJwXXf9t5", - "UQDn6G2gh0LtkzQ0_-uPCKY8fhAO6ELiX1manL8IkVdKbDEu", - "UQBQAGSnFqLxvMV-PXzPH1_hmPDDjG5mhxp4ZABEBKz_cm8D", - // "UQDtQfz1ZaHdEzCj5taHbAPULBbU-IU5Blba020x_6PFcUkG", - // "UQDcaktrqeiLZbMS-piyBJ0Te7AttkVwYHKJEHIzJxvhDt9I", - // "UQDV3FPAkxE-U97RrBilbxyzTd_Big1T7UTX9qoTcMrXnDI9", - "UQB0Pe-86bTQrmztmIL2MXMT4fZTHw2UwXEG8rpv-vRTP4np", - // "UQBImtSyquflZFlf-fhIcCuWWtIvhZC57iVGYk8RGdg-nOUT", - // "UQBN8d2IB2mXuAwtM0dOSJBeR3zjLn1bDmqN_y07IwUo33g5", - "UQBmoechltZNb69I-ksuqGH2ewSE0tFKWcr3AdjChs5E5Uii", - // "UQBH2w_CBbd1SOnm0V6vAasHQ8lFzJklB38BiiHNRQ_9hSha", - // "UQC5KG5acrwZkKlARnPJr8Quv5TGBw7-KEqO9-ABJwnynwwv", - "UQCqa-8NrR5jikSFbt9Q5Ry-E0zEnVcym-GuhkDBZlDg8dIw", - // "UQAawqXJa-36E9QjwT_fngWaNZurgeyT69k4emi0XivPRsN-", - // "UQBZ6_nFZa785vHPmc7Us35Ty8vwK8-xwepQU9xXgoNXW6CG", - // "UQBuEzDgQDpjAQNlclN7VdzCUQJLKKr20tFTO40ObVp1Y6ac", - // "UQANNUgJOcNeT6x1wB8AmuRyOoDP0YV-XS9xYJjuwxucaGgE", - "UQDQ8idzyoTNTe2FbARQoAbl4VxCSeECJJsGN6pEbSIVsrVb", - "UQChmtt-KnSLq15DeqwCvw4Dt0dlyU6xVwaCegCkDrYHHBwo", - "UQD53f8QA0j34oehKI2PwTnsGR8uSia63N2P2Zcaq975LXYy", - "UQD3HSnYqkhMxae_K6vngnzRmmrOSOWugdfFxcWyR4hV_34f", - // "UQBlYkm2HyAivZoKP6skaw02bfZQyxPj_3NJjAJp61pC3P0a", - // "UQCiV97n9efLmFi8qeAU0SafSkbjZhbWNYABYb38lvln4gGh", - "UQDgwX5u7w7s0DNyXV4ApByxlhdwp6xzGYHpaO1GWqZ2qcHC", - "UQA2ogqg4sy7KfGuQVXWtbOm3vnE7NVGCeBCl6-XdJkqy3pq", - "UQAqc2WkItRXN4xB6n5tBzNxhT8pP-e3MtTlReU3UdIJVI-s", - // "UQDY4-KtVxawZU_Vva7KTOhlhx8Ho0jI0ahyebYT5YuJkYSf", - ], - }, -}; - -const withdrawalAddresses = [ - '0x33baf43a1e7534fe46507a7d4a001881ae9cca44', - '0x52a66f3402dfa160458a3cb97577610b564c4db2', - '0xe839a3e9efb32c6a56ab7128e51056585275506c', - '0x9c595f9518b11b2876b2a5e89996b1fd2c748726', - '0x32ddc4d173745a41e428ccf3756b907673301992', -] - -module.exports = mergeExports([ - cexExports(config), - { ethereum: { tvl: getStakedEthTVL({ withdrawalAddresses: withdrawalAddresses, size: 200, sleepTime: 20_000, proxy: true }) } }, -]) diff --git a/projects/okie-launch/index.js b/projects/okie-launch/index.js deleted file mode 100644 index 9b86e66edbb..00000000000 --- a/projects/okie-launch/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - xlayer: { - tvl: sumTokensExport({ owner: '0xeb554444b5c49bab7781b1cfc0e3be211053c6d7', token: nullAddress }) - }, -}; diff --git a/projects/okieswap-stableswap/index.js b/projects/okieswap-stableswap/index.js deleted file mode 100644 index 8c74715eba4..00000000000 --- a/projects/okieswap-stableswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3GraphExport } = require('../helper/uniswapV3') - - -module.exports = { - xlayer: { - tvl: uniV3GraphExport({ graphURL: 'https://subgraph.okiedokie.fun/subgraphs/name/stableswap', name: 'okie-stable-xlayer', poolName: 'pairs' }), - } -} \ No newline at end of file diff --git a/projects/okieswap-v2/index.js b/projects/okieswap-v2/index.js deleted file mode 100644 index 1e69941ab98..00000000000 --- a/projects/okieswap-v2/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - xlayer: { - tvl: getUniTVL({ - factory: '0xF1cBfB1b12408dEDbA6Dcd7BB57730bAef6584fB', - useDefaultCoreAssets: true, - }), - }, -} diff --git a/projects/okieswap-v3/index.js b/projects/okieswap-v3/index.js deleted file mode 100644 index f62c23d7d10..00000000000 --- a/projects/okieswap-v3/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3GraphExport } = require('../helper/uniswapV3') - -module.exports = { - xlayer: { - tvl: uniV3GraphExport({ graphURL: "https://subgraph.okiedokie.fun/subgraphs/name/okieswap-v3", name: 'okieswap-v3-xlayer', }) - }, -}; diff --git a/projects/okutrade-goat/index.js b/projects/okutrade-goat/index.js deleted file mode 100644 index 128e35d66e4..00000000000 --- a/projects/okutrade-goat/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('goat', '0xcb2436774C3e191c85056d248EF4260ce5f27A9D') //blockchain, factory address \ No newline at end of file diff --git a/projects/okx-xbtc/index.js b/projects/okx-xbtc/index.js deleted file mode 100644 index deb7761a31a..00000000000 --- a/projects/okx-xbtc/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "BTC on btc chain. https://www.okx.com/xbtc#transparency", - bitcoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.xbtc }), - ]), - }, -}; \ No newline at end of file diff --git a/projects/olab/index.js b/projects/olab/index.js deleted file mode 100644 index f631f21241b..00000000000 --- a/projects/olab/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - -const owner = '0x34AA5631BdAD51583845e5e82e2CAf6cE63bA64D' - -const abis = { - conditionCollateral: "function conditionCollateral(bytes32) view returns (address)", -} - -const eventAbis = { - conditionPreparation: "event ConditionPreparation(bytes32 indexed conditionId, address indexed oracle, bytes32 indexed questionId, uint256 outcomeSlotCount)", -} - -const tvl = async (api) => { - const positionsLogs = await getLogs2({ api, target: owner, eventAbi: eventAbis.conditionPreparation, fromBlock: 23899060, toBlock: await api.getBlock() - 100, onlyArgs: true }) - const conditionIds = positionsLogs.filter(log => log[1].toLowerCase() !== ADDRESSES.null).map(log => log[0]); - const collTokens = await api.multiCall({ calls: conditionIds.map((id) => ({ target: owner, params: [id] })), abi: abis.conditionCollateral }) - const uniqueCollTokens = [...new Set(collTokens.map(addr => addr.toLowerCase()))]; - return api.sumTokens({ owner, tokens: uniqueCollTokens }) -} - -module.exports = { - methodology: 'TVL (Total Value Locked) refers to the total value of all collateral tokens held in the Conditional Token smart contract, including all collateral tokens provided to O.LAB Prediction markets across different chains.', - start: 23899060, - deadFrom: 1752422400, - base: { tvl } -} \ No newline at end of file diff --git a/projects/olafinance/index.js b/projects/olafinance/index.js deleted file mode 100644 index d4246edb8da..00000000000 --- a/projects/olafinance/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - fantom: compoundExports2({ comptroller: '0x892701d128d63c9856A9Eb5d967982F78FD3F2AE'}) -} \ No newline at end of file diff --git a/projects/olive-network/index.js b/projects/olive-network/index.js deleted file mode 100644 index a7f037bd62b..00000000000 --- a/projects/olive-network/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { sumERC4626Vaults } = require('../helper/erc4626') - -const config = { - ethereum: { - vaults: [ - // Token vaults - "0x700886a402d42113aD94D9756f08A923BB5aC77A", // eETH - "0xDa4D36dbdf5154B22580c0f1c998D37BfBB33D85", // ezETH - "0xd75c669B3da058cf589bF0076FDaceDa40380C4d", // pufETH - "0x9F3E781b25501A6b9051556B8058812D7Ba30549", // rsETH - "0x6De2a95331400bb6cf9Cf75c7a8861d33687a95F", // stETH - "0x7531b2AbA509E09566C08D61CaD6324b78444eCd", // wBTC - "0xdb0d6F58a63118E20C91c0De84f4d8eA1a407C36", // weETH - "0x2865568AD1CA0FE12dB53c8f866039Fa4500962F", // wETH - "0xDEA5f3171C5052384a0a974E3C85b0d419c48204", // wstETH - - // PT vaults - "0xeF0DF466417bC45007773C363866B3693fc0b1E7", // PT-weETH Jun 2024 - "0x31ec45f7dA20998775d594539F54e443e268f9F5", // PT-ezETH Apr 2024 - "0xf1365d1e96d0F9D1823C827286a9C3d40Dba6f30", // PT-ezETH(Zircuit) Jun 2024 - "0xF3b442217f18EB46417eFfd3A6cE09C3B311f4f5", // PT-pufETH Jun 2024 - "0x6D8c42855690c493E9c6404803478CD321A63376", // PT-rsETH Jun 2024 - "0x47764d88F8f54daD6Db75EC3667a11d58811ABc6", // PT-wstETH Dec 2024 - ], - - ethVaults: ['0xd94a9FBae86e662350FFEbB352f70c3CBeb9E96e'], //ETH vaults - }, - arbitrum: { - vaults: [ - // PT vaults - "0xA2e9c6177f81a1337b656d3b066FD20c7Cf8cAb4", // ezETH - "0xd94a9FBae86e662350FFEbB352f70c3CBeb9E96e", // rsETH - "0x2865568AD1CA0FE12dB53c8f866039Fa4500962F", // weETH - "0x6De2a95331400bb6cf9Cf75c7a8861d33687a95F", // wstETH - "0x700886a402d42113aD94D9756f08A923BB5aC77A", // PT-weETH Jun 2024 - "0xDa4D36dbdf5154B22580c0f1c998D37BfBB33D85", // PT-ezETH Jun 2024 - "0xd75c669B3da058cf589bF0076FDaceDa40380C4d", // PT-rsETH Jun 2024 - "0x9F3E781b25501A6b9051556B8058812D7Ba30549", // PT-wstETH Dec 2024 - ], - }, -} - -Object.keys(config).forEach(chain => { - const { vaults, ethVaults = [], } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ethBals = await api.multiCall({ abi: 'uint256:balance', calls: ethVaults }) - api.addGasToken(ethBals) - return sumERC4626Vaults({ api, calls: vaults }) - } - } -}) \ No newline at end of file diff --git a/projects/olivecash/abi.json b/projects/olivecash/abi.json deleted file mode 100644 index 45bf320f952..00000000000 --- a/projects/olivecash/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accOlivePerShare)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/olivecash/index.js b/projects/olivecash/index.js deleted file mode 100644 index d52627c6cfe..00000000000 --- a/projects/olivecash/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const CHEFS = { - "avax": "0x5A9710f3f23053573301C2aB5024D0a43A461E80", - "bsc": "0xD92bc4Afc7775FF052Cdac90352c39Cb6a455900", - "fantom": "0xC90812E4502D7848E58e53753cA397A201f2e99B" -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", -} - -Object.keys(CHEFS).forEach(chain => { - const chef = CHEFS[chain] - module.exports[chain] = { - tvl: async (api) => { - const lp = await api.fetchList({ - lengthAbi: abi.poolLength, - itemAbi: abi.poolInfo, - target: chef, - }) - const tokens = lp.map(i => i.lpToken) - return sumTokens2({ api, owner: chef, tokens, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/olivedao/index.js b/projects/olivedao/index.js deleted file mode 100644 index 254a06f8794..00000000000 --- a/projects/olivedao/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const ethPool = "0x8e300739960457B532Af3bEd62475B790e0Dee5E" -const usdcPool = "0x05a37e1745926D8725A6C5dbD7Fd9873Dd9E356e" -const usdcMatic = ADDRESSES.polygon.USDC -const wethMatic = ADDRESSES.polygon.WETH_1 - -async function tvl(_timestamp, ethBlock, chainBlocks) { - const balances = {}; - const underlyingBalances = await sdk.api.abi.multiCall({ - calls: [{ - target: usdcMatic, - params: usdcPool - },{ - target: wethMatic, - params: ethPool - }], - block: chainBlocks.polygon, - abi: "erc20:balanceOf", - chain: 'polygon' - }); - const usdc = await (i => `polygon:${i}`)(usdcMatic); - const eth = await (i => `polygon:${i}`)(wethMatic); - sdk.util.sumSingleBalance(balances, usdc, underlyingBalances.output[0].output) - sdk.util.sumSingleBalance(balances, eth, underlyingBalances.output[1].output) - - return balances -} - -module.exports = { - polygon: { - tvl: tvl - } -} \ No newline at end of file diff --git a/projects/olympulsex/index.js b/projects/olympulsex/index.js deleted file mode 100644 index 2fced2012d9..00000000000 --- a/projects/olympulsex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') - -const stakingToken = "0xBB366A397D7d4d2BEDABD9139D4c32a8826605Ed"; // SEX -const staking = "0xf1Bc988e7EaBA7a2dbF0121E6ad9BEA82A1AB1ff"; -const LP = '0x2d593b3472d6a5439bC1523a04C2aec314CBc44c' - -module.exports = { - pulse: { - tvl: () => 0, - staking: sumTokensExport({ owner: staking, tokens: [stakingToken], lps: [LP], useDefaultCoreAssets: true, }), - } -} \ No newline at end of file diff --git a/projects/olympus/abi.json b/projects/olympus/abi.json deleted file mode 100644 index a40d9fd4ad3..00000000000 --- a/projects/olympus/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalValueDeployed": "uint256:totalValueDeployed", - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)" -} \ No newline at end of file diff --git a/projects/olympus/api.js b/projects/olympus/api.js deleted file mode 100644 index b83e37f2502..00000000000 --- a/projects/olympus/api.js +++ /dev/null @@ -1,8 +0,0 @@ -const index = require('./index') - -module.exports = { - ethereum: { - tvl: () => 0, - staking: index.ethereum.staking, - } -} \ No newline at end of file diff --git a/projects/olympus/index.js b/projects/olympus/index.js deleted file mode 100644 index f7ff641e5c7..00000000000 --- a/projects/olympus/index.js +++ /dev/null @@ -1,191 +0,0 @@ -// projects/olympus/index.js - -const sdk = require("@defillama/sdk"); -const ADDRESSES = require('../helper/coreAssets.json') -const { blockQuery } = require("../helper/http"); -const { getEnv } = require("../helper/env"); -const { staking } = require('../helper/staking'); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { sumTokens } = require("../helper/sumTokens"); - -const OlympusStakings = [ - // Old Staking Contract - "0x0822F3C03dcc24d200AFF33493Dc08d0e1f274A2", - // New Staking Contract - "0xFd31c7d00Ca47653c6Ce64Af53c1571f9C36566a", - "0xb63cac384247597756545b500253ff8e607a8020", -]; - -const OHM_V1 = "0x383518188c0c6d7730d91b2c03a03c837814a899" // this is OHM v1 -const OHM = "0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5" -const GOHM = "0x0ab87046fBb341D058F17CBC4c1133F25a20a52f" - -const TREASURY_MULTISIG = "0x245cc372c84b3645bf0ffe6538620b04a217988b"; - -const olympusTokens = [ - GOHM, // gOHM - OHM, -]; - -/** Map any staked assets without price feeds to those with price feeds. - * All balances are 1:1 to their unstaked counterpart that has the price feed. - **/ -const addressMap = { - "0xb23dfc0c4502a271976f1ee65321c51be2529640": - "0x76fcf0e8c7ff37a47a799fa2cd4c13cde0d981c9", // aura50OHM-50DAI -> 50OHM-50DAI - "0xc8418af6358ffdda74e09ca9cc3fe03ca6adc5b0": - ADDRESSES.ethereum.FXS, // veFXS -> FXS - "0x3fa73f1e5d8a792c80f426fc8f84fbf7ce9bbcac": - "0xc0c293ce456ff0ed870add98a0828dd4d2903dbf", // vlAURA -> AURA - [ADDRESSES.ethereum.vlCVX]: - ADDRESSES.ethereum.CVX, // vlCVX -> CVX - "0xa02d8861fbfd0ba3d8ebafa447fe7680a3fa9a93": - "0xd1ec5e215e8148d76f4460e4097fd3d5ae0a3558", // aura50OHM-50WETH -> 50OHM-50WETH - "0x0ef97ef0e20f84e82ec2d79cbd9eda923c3daf09": - "0xd4f79ca0ac83192693bce4699d0c10c66aa6cf0f", // auraOHM-wstETH -> OHM-wstETH - "0x81b0dcda53482a2ea9eb496342dc787643323e95": - "0x5271045f7b73c17825a7a7aee6917ee46b0b7520", // stkcvxOHMFRAXBP-f-frax -> OHMFRAXBP-f - "0x8a53ee42fb458d4897e15cc7dea3f75d0f1c3475": - "0x3175df0976dfa876431c2e9ee6bc45b65d3473cc", // stkcvxcrvFRAX-frax -> crvFRAX-frax - "0xb0c22d8d350c67420f06f48936654f567c73e8c8": - "0x4e78011ce80ee02d2c3e649fb657e45898257815", // sKLIMA -> KLIMA - "0x742b70151cd3bc7ab598aaff1d54b90c3ebc6027": - "0xc55126051B22eBb829D00368f4B12Bde432de5Da", // rlBTRFLY -> BTRFLY V2 - "0xc0d4ceb216b3ba9c3701b291766fdcba977cec3a": - "0xc55126051B22eBb829D00368f4B12Bde432de5Da", // BTRFLY -> BTRFLY V2 -}; - -const protocolQuery = (block) => ` - query { - tokenRecords(orderDirection: desc, orderBy: block, where: {block: ${block}}) { - block - timestamp - category - tokenAddress - balance - } - } -`; - -const getLatestBlockIndexed = ` -query { - lastBlock: tokenRecords(first: 1, orderBy: block, orderDirection: desc) { - block - timestamp - } -}`; - - -// Subgraph returns balances in tokenAddress / allocator pairs. Need to return based on balance. -function sumBalancesByTokenAddress(arr) { - return arr.reduce((acc, curr) => { - const found = acc.find((item) => item.tokenAddress === curr.tokenAddress); - if (found) { - found.balance = +found.balance + +curr.balance; - } else { - const newItem = { - tokenAddress: curr.tokenAddress, - balance: curr.balance, - category: curr.category, - }; - acc.push(newItem); - } - return acc; - }, []); -} - -/*** Query Subgraphs for latest Treasury Allocations *** - * #1. Query tokenRecords for latestBlock indexed in subgraph. - * This allows us to filter protocol query to a list of results only for the latest block indexed - * #2. Call tokenRecords with block num from prev query - * #3. Sum values returned - ***/ -function buildTvl(isOwnTokensMode = false) { - return async function tvl(api) { - const subgraphUrls = { - ethereum: `7jeChfyUTWRyp2JxPGuuzxvGt3fDKMkC9rLjm7sfLcNp`, - arbitrum: "2XQDRQ9AXhp5us6PsNyRM5BxKWeXhy3BNQLynA6YmmjA", - fantom: sdk.graph.modifyEndpoint('3qSJTWdWJETFzht814HVV9rVafwRLQp3k9mZhCF39bYd'), - polygon: "JCVMW1dbqectgaSLRuKSen6FKe9RPMJRQhNYZa4iTgFb", - }; - - // filter out problematic pools that don't have a decimals function - const poolsWithoutDecimals = ["0x88051b0eea095007d3bef21ab287be961f3d8598"]; - - // 1) get the last indexed block + timestamp - const indexedBlockForEndpoint = await blockQuery(subgraphUrls[api.chain], getLatestBlockIndexed, { api }) - const latest = indexedBlockForEndpoint?.lastBlock?.[0] - if (!latest) throw new Error('no-indexed-block') - - const blockNum = latest.block - const lastTs = Number(latest.timestamp) - - // 2) query tokenRecords at that block - const trResp = await blockQuery(subgraphUrls[api.chain], protocolQuery(blockNum), { api }) - const tokenRecords = trResp?.tokenRecords || [] - - // filter out known non-ERC20 addresses - const filteredTokenRecords = tokenRecords.filter( - (t) => !poolsWithoutDecimals.includes(t.tokenAddress) - ); - - // guard on staleness - const aDay = 24 * 3600; - const now = Date.now() / 1e3; - if (!Number.isFinite(lastTs) || now - lastTs > 3 * aDay) { - throw new Error("outdated"); - } - - // normalize addresses for pricing - const normalizedFilteredTokenRecords = filteredTokenRecords.map((token) => { - const normalizedAddress = addressMap[token.tokenAddress] - ? addressMap[token.tokenAddress] - : token.tokenAddress; - return { ...token, tokenAddress: normalizedAddress }; - }); - - // sum per token - const tokensToBalances = sumBalancesByTokenAddress(normalizedFilteredTokenRecords) - .filter(i => { - if (api.chain !== 'arbitrum') return true; - // exclude specific arbitrum pool IDs that break pricing/decimals - return ![ - '0x89dc7e71e362faf88d92288fe2311d25c6a1b5e0000200000000000000000423', - '0xce6195089b302633ed60f3f427d1380f6a2bfbc7000200000000000000000424', - ].includes(i.tokenAddress) - }) - - const tokens = tokensToBalances.map(i => i.tokenAddress) - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens, permitFailure: true }) - - const ownTokens = new Set(olympusTokens.map(i => i.toLowerCase())) - - // add balances respecting ownTokensMode switch - tokensToBalances.forEach((token, i) => { - const isOwn = ownTokens.has(token.tokenAddress.toLowerCase()) - if (!decimals[i]) return; - if (!isOwn && isOwnTokensMode) return; // ownTokens mode: skip non-own - if ( isOwn && !isOwnTokensMode) return; // normal mode: skip own tokens - api.add(token.tokenAddress, token.balance * 10 ** decimals[i]) - }) - - return await sumTokens2({ api, resolveLP: true }) - } -} - -async function ownTokens(api) { - // Avoid double counting: rely on subgraph path for own tokens - return buildTvl(true)(api); -} - -module.exports = { - start: '2021-03-24', // March 24th, 2021 - timetravel: false, - methodology: - "TVL is the sum of the value of all assets held by the treasury (excluding pTokens). Please visit https://app.olympusdao.finance/#/dashboard for more info.", - ethereum: { - staking: staking(OlympusStakings, [OHM, OHM_V1]), - tvl: buildTvl(false), - ownTokens, - }, -}; diff --git a/projects/omax-swap/index.js b/projects/omax-swap/index.js deleted file mode 100644 index 07bad95173e..00000000000 --- a/projects/omax-swap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('omax', '0x441b9333D1D1ccAd27f2755e69d24E60c9d8F9CF') -module.exports.omax.staking = staking - -const ADDRESSES = require("../helper/coreAssets.json"); -const stakingContractAddress = '0x3A2DcDc705031eDBD94254ef7CEFB93D8066cC8D' - -async function staking(api) { - return api.sumTokens({ owner: stakingContractAddress, tokens: [ADDRESSES.null]}); -} \ No newline at end of file diff --git a/projects/omaxswap/index.js b/projects/omaxswap/index.js deleted file mode 100644 index 3876b95432c..00000000000 --- a/projects/omaxswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('omax', '0xEbB321f840c1F1d63a62b01F464D6921bfC3dD08') \ No newline at end of file diff --git a/projects/omega/index.js b/projects/omega/index.js deleted file mode 100644 index 7c44ac07192..00000000000 --- a/projects/omega/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const CONTRACTS = [ - { - asset: ADDRESSES.mantle.mETH, - lendingPool: "0x68F108F6bDbe14b77f5d042b1b43bb36c60F8580", - collateralManager: "0xb092b9543B2C18D0857C3e81fACAE8c0CC08e079", - }, - { - asset: ADDRESSES.mantle.cmETH, - lendingPool: "0x0819EC86Bf7278547B6962392f49Fa0e88A04b7b", - collateralManager: "0xd2698b234b23966258578e0539a5d5aAb8d49893", - }, - { - asset: ADDRESSES.mantle.WETH, - lendingPool: "0x1B69264CA6E951B14db2Cf330dE2744524A22040", - collateralManager: "0x911A9E6b1C1FA4A8CEc88153c4C841f579899308", - }, - { - asset: ADDRESSES.mantle.WMNT, - lendingPool: "0xA49C0FA50768c4560feD129e90D3734a12711E8A", - collateralManager: "0x5181F0Ed157CA00ab3D899e131D424d456884078", - }, - { - asset: ADDRESSES.mantle.USDT, - lendingPool: "0x5dad97d4973B60870AAe284eF3EC6d74Bffc011D", - collateralManager: "0x709a5B78980b17E7f7C20b59f5a3e4E744e4590f", - }, - { - asset: ADDRESSES.mantle.USDe, - lendingPool: "0xa803861Ae852Cb34A4fD8F1b756C0cE3b29A2928", - collateralManager: "0x382c41175ebC9c906Fb52148AFFD7aFB5158ECcf", - }, - { - asset: ADDRESSES.mantle.AUSD, - lendingPool: "0x55A31051066bA19b765f2B8D49FE68367C2094ef", - collateralManager: "0x99845253B0d208f977f14756Fa5C93B73ca73CA6", - }, - { - asset: ADDRESSES.mantle.sUSDe, - lendingPool: "0x768f82Ca2055A7068FeA33f22b5a3cC8681598Ef", - collateralManager: "0xa7C81aA29409Fd2a4D26b3ea4529a4413dc6a352", - }, - { - asset: ADDRESSES.mantle.FBTC, - lendingPool: "0x72c7d27320e042417506e594697324dB5Fbf334C", - collateralManager: "0x0e27103CD0002ED9694E8865BEfd6e2167132BA9", - }, -]; - -async function tvl(api) { - const lendingPoolTvls = await api.multiCall({ - abi: "uint256:getTotalSupply", - calls: CONTRACTS.map((contract) => contract.lendingPool), - }); - - for (const [index, lendingPoolTvl] of lendingPoolTvls.entries()) { - api.add(CONTRACTS[index].asset, lendingPoolTvl); - } - - await sumTokens2({ - api, - tokensAndOwners: [ - ...CONTRACTS.map((contract) => [contract.asset, contract.collateralManager,]), - ], - }); -} - -module.exports = { - mantle: { - tvl, - }, -}; diff --git a/projects/omicron/api.js b/projects/omicron/api.js deleted file mode 100644 index 65097b52e31..00000000000 --- a/projects/omicron/api.js +++ /dev/null @@ -1,9 +0,0 @@ -const index = require('./index') - -module.exports = { - arbitrum: { - tvl: () => 0, - staking: index.arbitrum.staking, - }, - deadFrom: '20213-01-30' -} \ No newline at end of file diff --git a/projects/omicron/index.js b/projects/omicron/index.js deleted file mode 100644 index 696db9b0e96..00000000000 --- a/projects/omicron/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x9EF8600b0f107c083F9df557e0Ddf12E071E75fe" -module.exports = ohmTvl(treasury, [ - //USDC - [ADDRESSES.arbitrum.USDC, false], - //MIM - [ADDRESSES.arbitrum.MIM, false], - //sushi LP - ["0xe4ad045abb586dbdae6b11a4d2c6ff5434b93ed1", true], - // - ["0xcf4f4f341b60587513b8fc01482237996c7e3fd3", true], - ], "arbitrum", "0x51568924623E66110ffFAc620e948caD8555Ea98", "0x86b3353387f560295a8fa7902679735e5f076bd5") \ No newline at end of file diff --git a/projects/omm/index.js b/projects/omm/index.js deleted file mode 100644 index e6638b56d88..00000000000 --- a/projects/omm/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { call, toInt } = require("../helper/chain/icx"); - -const ommLendingPoolDataProviderContract = 'cx5f9a6ca11b2b761a469965cedab40ada9e503cb5' - -async function tvl(api) { - - let data = await call(ommLendingPoolDataProviderContract, 'getAllReserveData', {}) - let total = 0 - for (const value of Object.values(data)) { - total += toInt(value['totalLiquidityUSD']) / 1e18 - total -= toInt(value['totalBorrowsUSD']) / 1e18 - } - return { 'coingecko:tether': total } -} - -async function borrowed(api) { - - let data = await call(ommLendingPoolDataProviderContract, 'getAllReserveData', {}) - let total = 0 - for (const [key, value] of Object.entries(data)) { - total += toInt(value['totalBorrowsUSD']) / 1e18 - } - return { 'coingecko:tether': total } -} - -module.exports = { - misrepresentedTokens: true, - // hallmarks: [ - // [1674388800, "Smart Contract Exploit"] - // ], - icon: { tvl, borrowed } -} \ No newline at end of file diff --git a/projects/omni-exchange-flux/index.js b/projects/omni-exchange-flux/index.js deleted file mode 100644 index c267fb96621..00000000000 --- a/projects/omni-exchange-flux/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs'); - -// V4 CLAMM/LBAMM configs -const clammCfg = { - bsc: { vault: '0xDd179D5BF71B884793F1C213FfBdD702F399ECaa', mgr: '0xAa74c0492DB7661D6Ca52145205534061F8470CB', fromBlock: 54053000 }, - arbitrum: { vault: '0xDd179D5BF71B884793F1C213FfBdD702F399ECaa', mgr: '0xAa74c0492DB7661D6Ca52145205534061F8470CB', fromBlock: 357770000 }, - avax: { vault: '0xDd179D5BF71B884793F1C213FfBdD702F399ECaa', mgr: '0xAa74c0492DB7661D6Ca52145205534061F8470CB', fromBlock: 65460000 }, - base: { vault: '0xDd179D5BF71B884793F1C213FfBdD702F399ECaa', mgr: '0xAa74c0492DB7661D6Ca52145205534061F8470CB', fromBlock: 32873000 }, - optimism: { vault: '0xDd179D5BF71B884793F1C213FfBdD702F399ECaa', mgr: '0xAa74c0492DB7661D6Ca52145205534061F8470CB', fromBlock: 138469000 }, - sonic: { vault: '0xDd179D5BF71B884793F1C213FfBdD702F399ECaa', mgr: '0xAa74c0492DB7661D6Ca52145205534061F8470CB', fromBlock: 38533000 }, - plasma: { vault: '0xDd179D5BF71B884793F1C213FfBdD702F399ECaa', mgr: '0xAa74c0492DB7661D6Ca52145205534061F8470CB', fromBlock: 2531200 }, -}; - -// V4 adapters (standard - OMNI now priced automatically!) -const v4Vault = {}; -Object.keys(clammCfg).forEach(chain => { - const { vault, mgr, fromBlock } = clammCfg[chain]; - - v4Vault[chain] = { - tvl: async api => { - const logs = await getLogs2({ - api, - target: mgr, - fromBlock, - eventAbi: 'event Initialize(bytes32 indexed id, address indexed currency0, address indexed currency1, address hooks, uint24 fee, bytes32 parameters, uint160 sqrtPriceX96, int24 tick)', - }); - - const tokens = [...new Set(logs.flatMap(l => [l.currency0, l.currency1]))]; - return api.sumTokens({ owner: vault, tokens }); - } - }; -}); - -module.exports = v4Vault; \ No newline at end of file diff --git a/projects/omni-exchange-v2/index.js b/projects/omni-exchange-v2/index.js deleted file mode 100644 index 1def64fb688..00000000000 --- a/projects/omni-exchange-v2/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -// V2 adapters (standard for all chains - OMNI now priced automatically!) -const v2Factory = '0x7d9D51267f7e9e6b46a48E0A75c0086F46777087'; -const v2 = { - bsc: { tvl: getUniTVL({ chain: 'bsc', factory: v2Factory, useDefaultCoreAssets: true }) }, - arbitrum: { tvl: getUniTVL({ chain: 'arbitrum', factory: v2Factory, useDefaultCoreAssets: true }) }, - avax: { tvl: getUniTVL({ chain: 'avax', factory: v2Factory, useDefaultCoreAssets: true }) }, - optimism: { tvl: getUniTVL({ chain: 'optimism', factory: v2Factory, useDefaultCoreAssets: true }) }, - sonic: { tvl: getUniTVL({ chain: 'sonic', factory: v2Factory, useDefaultCoreAssets: true }) }, - base: { tvl: getUniTVL({ chain: 'base', factory: v2Factory, useDefaultCoreAssets: true }) }, - plasma: { tvl: getUniTVL({ chain: 'plasma', factory: v2Factory, useDefaultCoreAssets: true }) }, -}; - -module.exports = v2; \ No newline at end of file diff --git a/projects/omni-exchange/index.js b/projects/omni-exchange/index.js deleted file mode 100644 index 8e8c98a3779..00000000000 --- a/projects/omni-exchange/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3'); -const { mergeExports } = require('../helper/utils'); - -// V3 adapters (standard - OMNI now priced automatically!) -const v3 = uniV3Export({ - bsc: { factory: '0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2', fromBlock: 54053000 }, - arbitrum: { factory: '0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2', fromBlock: 357770000 }, - avax: { factory: '0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2', fromBlock: 65460000 }, - base: { factory: '0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2', fromBlock: 32873000 }, - optimism: { factory: '0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2', fromBlock: 138469000 }, - sonic: { factory: '0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2', fromBlock: 38533000 }, - plasma: { factory: '0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2', fromBlock: 2531200 }, -}); - -// Export merged adapters -module.exports = mergeExports([v3]); \ No newline at end of file diff --git a/projects/omni/index.js b/projects/omni/index.js deleted file mode 100644 index 9e32e09a9f2..00000000000 --- a/projects/omni/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - timetravel: false, -}; - -const config = { - astar: [ - "0xFfFfFfff00000000000000010000000000000008", - "0xfffFffff00000000000000010000000000000010", - ], - astrzk: [ - "0x7746ef546d562b443AE4B4145541a3b1a3D75717", - ], - moonbeam: [ - "0xFFFfffFf15e1b7E3dF971DD813Bc394deB899aBf", - ADDRESSES.moonbeam.VGLMR, - ADDRESSES.moonbeam.FIL, - ], - moonriver: [ - ADDRESSES.moonriver.BNC, - ADDRESSES.moonriver.KSM, - ADDRESSES.moonriver.MOVR, - ], -} - - -Object.keys(config).forEach(chain => { - const tokens = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) - api.add(tokens, supplies) - return sumTokens2({ api }) - } - } -}) \ No newline at end of file diff --git a/projects/omnibtc/index.js b/projects/omnibtc/index.js deleted file mode 100644 index b131a0376f9..00000000000 --- a/projects/omnibtc/index.js +++ /dev/null @@ -1,142 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const ADDRESSES = require("../helper/coreAssets.json"); -const sui = require("../helper/chain/sui"); - -const RESERVE_DYNAMIC_TABLE = - "0x6ce8b223c47b5037d6791819694b32619ab0edfa5da139d21e416781cae487aa"; - -const POOLS = { - arbitrum: "0x53eCC006a0073b3351E9e38d94f052E3864C7935", - base: "0x68953027738216A63B39D55B18C02FeD5c329Dfa", - optimism: "0x233DDEce6a96c49ecE6Ad9ae820690fE62a28975", - polygon: "0xC3Eb696184b8927D677D8AB390A26563De4798c3", - ethereum: "0xAA8b23B45cb51ce8f49D7757fF27BA397D05B6fC", - avax: "0xc44C290e66e79aE208D998635F6Fc24837F3C554", - bsc: "0x0519147E1A604F764C0Dca833671F5283C618f23", -}; -const DEFAULT_TOKEN = ADDRESSES.null; - -const DECIMAL_SHIFTS = { - [ADDRESSES.sui.USDC]: -2, - [ADDRESSES.sui.SUI]: 1, -}; - -const SUI_TOKENS = [ - { symbol: "SUI", poolId: 3, address: ADDRESSES.sui.SUI }, - { symbol: "USDC", poolId: 8, address: ADDRESSES.sui.USDC }, -]; - -async function fetchDataBasedOnPoolId() { - return Promise.all( - SUI_TOKENS.map(({ poolId }) => - sui.getDynamicFieldObject(RESERVE_DYNAMIC_TABLE, poolId.toString(), { - idType: "u16", - }) - ) - ); -} - -// Calculate and add to API -function calculateAndAdd(objectsList, type, indexName, api) { - objectsList.forEach((object, index) => { - const { address } = SUI_TOKENS[index]; - - const dataFields = object.fields.value.fields; - - const total_supply = dataFields.otoken_scaled?.fields?.total_supply || 0; - const total_borrow = dataFields.dtoken_scaled?.fields?.total_supply || 0; - const indexValue = dataFields[indexName] || 0; - - const shiftValue = 10 ** (DECIMAL_SHIFTS[address] ?? 0); - const mainValue = - type === "tvl" ? total_supply - total_borrow : total_borrow; - - const amount = (mainValue * shiftValue * indexValue) / Math.pow(10, 27); - - api.add(address, amount); - }); -} - -async function suiTvl(api) { - const objectsList = await fetchDataBasedOnPoolId(); - calculateAndAdd(objectsList, "tvl", "current_liquidity_index", api); -} - -async function suiBorrow(api) { - const objectsList = await fetchDataBasedOnPoolId(); - calculateAndAdd(objectsList, "borrow", "current_borrow_index", api); -} - -module.exports = { - timetravel: false, - arbitrum: { - tvl: sumTokensExport({ - owner: POOLS.arbitrum, - tokens: [ - DEFAULT_TOKEN, - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.USDC, //Bridge USDC - ], - }), - }, - base: { - tvl: sumTokensExport({ - owner: POOLS.base, - tokens: [DEFAULT_TOKEN, ADDRESSES.base.USDbC], - }), - }, - optimism: { - tvl: sumTokensExport({ - owner: POOLS.optimism, - tokens: [ - DEFAULT_TOKEN, - ADDRESSES.optimism.OP, - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.USDT, - ADDRESSES.optimism.USDC, // Bridge USDC - ADDRESSES.optimism.WBTC, // WBTC - ], - }), - }, - polygon: { - tvl: sumTokensExport({ - owner: POOLS.polygon, - 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: { - tvl: suiTvl, - borrowed: suiBorrow, - }, -}; diff --git a/projects/omnidex-lend/abi.json b/projects/omnidex-lend/abi.json deleted file mode 100644 index 1369686f0ff..00000000000 --- a/projects/omnidex-lend/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllOTokens": "function getAllOTokens() view returns (tuple(string symbol, address tokenAddress)[])" -} \ No newline at end of file diff --git a/projects/omnidex-lend/index.js b/projects/omnidex-lend/index.js deleted file mode 100644 index f79a39f878e..00000000000 --- a/projects/omnidex-lend/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const abi = require('./abi.json'); -const { aaveExports } = require('../helper/aave'); - -module.exports = { - telos: aaveExports('', '0xBD22b441d8Fb855C48aCf7a4142f873a44fe9767', undefined, undefined, { abis: abi }) -} - -module.exports.telos.borrowed = () => ({}) -module.exports.deadFrom = '2025-01-01' \ No newline at end of file diff --git a/projects/omnidex-perpetuals/index.js b/projects/omnidex-perpetuals/index.js deleted file mode 100644 index fb6902ea6d7..00000000000 --- a/projects/omnidex-perpetuals/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -//Telos -const Vault = '0x8F23134EBc390856E01993dE9f7F837bcD93014a'; - -module.exports = { - telos: { - tvl: gmxExports({ vault: Vault }) - }, -}; \ No newline at end of file diff --git a/projects/omnidex/index.js b/projects/omnidex/index.js deleted file mode 100644 index 2eab4e25267..00000000000 --- a/projects/omnidex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - telos:{ - tvl: getUniTVL({ factory: '0x7a2A35706f5d1CeE2faa8A254dd6F6D7d7Becc25', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/omnipool/index.js b/projects/omnipool/index.js deleted file mode 100644 index bb0a1b76073..00000000000 --- a/projects/omnipool/index.js +++ /dev/null @@ -1,8 +0,0 @@ -async function tvl(api) { - const pooledZeta = await api.call({ target: "0x82bbc3f521E5313cf5e8401797d7BaB6c030C908", abi: "uint256:getTotalPooledZeta" }) - api.addGasToken(pooledZeta) -} - -module.exports = { - zeta: { tvl } -} \ No newline at end of file diff --git a/projects/omniprotocol/index.js b/projects/omniprotocol/index.js deleted file mode 100644 index 5a800af1087..00000000000 --- a/projects/omniprotocol/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const abi = require("./omni.json"); -const { aaveExports, methodology, } = require("../helper/aave"); - -const validProtocolDataHelper = "0x8AAc97e25c79195aC77817287Cf512b0Acc9da44"; -const omniOracle = "0x08Eaf1C8c270a485DD9c8aebb2EDE3FcAe72e04f"; - -module.exports = { - misrepresentedTokens: true, - methodology, - ethereum: aaveExports('ethereum', undefined, undefined, [validProtocolDataHelper], { oracle: omniOracle, - abis: { - getAllATokens: abi.getAllOTokens, - }}), - hallmarks: [ - ['2022-07-10', 'reentrancy hack'], - ], - deadFrom: '2022-07-10', -}; - -module.exports.ethereum.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/omniprotocol/omni.json b/projects/omniprotocol/omni.json deleted file mode 100644 index 1369686f0ff..00000000000 --- a/projects/omniprotocol/omni.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllOTokens": "function getAllOTokens() view returns (tuple(string symbol, address tokenAddress)[])" -} \ No newline at end of file diff --git a/projects/omniswap/index.js b/projects/omniswap/index.js deleted file mode 100644 index e5374d230bf..00000000000 --- a/projects/omniswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -const { nibiru: nibiruCoreAssets } = require('../helper/coreAssets.json') - -module.exports = { - methodology: "TVL consists of liquidity pools created through the factory contract", - misrepresentedTokens: true, - nibiru: { - tvl: getUniTVL({ - factory: "0x2043d6f72CcD82c4Eae36fF331ADAE8C77bA5897", - chain: "nibiru", - useDefaultCoreAssets: true, - coreAssets: nibiruCoreAssets, - }), - }, -}; diff --git a/projects/omniyield/index.js b/projects/omniyield/index.js deleted file mode 100644 index ed5dfd2da91..00000000000 --- a/projects/omniyield/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getConfig } = require("../helper/cache") -const { sumERC4626Vaults } = require("../helper/erc4626") - -const ENDPOINT = "https://api.omniyield.finance/pools"; - -async function tvl(api) { - const pools = await getConfig("omniyield/arbitrum", ENDPOINT); - const vaults = (pools[api.chainId] ?? []).map(i => i.address) - return sumERC4626Vaults({ api, calls: vaults, tokenAbi: 'token', balanceAbi: 'totalValue' }) -} - -module.exports = { - methodology: - "TVL is calculated by summing the total value of assets locked in all pools.", - arbitrum: { tvl }, -}; \ No newline at end of file diff --git a/projects/omt-finance/index.js b/projects/omt-finance/index.js deleted file mode 100644 index cd1404a9f83..00000000000 --- a/projects/omt-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - onus:{ - tvl: gmxExports({ vault: '0x9a10B55FdE534e7809345D9DE0191a2b01E2F399', }) - }, -}; diff --git a/projects/onavax/index.js b/projects/onavax/index.js deleted file mode 100644 index ba7d3338f33..00000000000 --- a/projects/onavax/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const factory = "0xE01cF83a89e8C32C0A9f91aCa7BfE554EBEE7141"; - -module.exports = { - avax: { - tvl: getUniTVL({ - factory, - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/onc/index.js b/projects/onc/index.js deleted file mode 100644 index c1b71cdddfd..00000000000 --- a/projects/onc/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - methodology: "Gets TVL inside the ONC Treasury.", - era: { - tvl: sumTokensExport({ - owner: "0x581f87De7a655f50932F706873fcc7024d2309Fa", tokens: [ - ADDRESSES.era.USDC, // USDC - "0x4BEf76b6b7f2823C6c1f4FcfEACD85C24548ad7e", // DAI - ] - }), - }, - kava: { - tvl: sumTokensExport({ - owner: "0x481654217A24B43fB63a7761d7033Fdf9361eAB6", tokens: [ - ADDRESSES.kava.WKAVA, // WKAVA - ] - }), - }, - arbitrum: { - tvl: sumTokensExport({ - owner: "0xc9cb7AB00802165e316A6f8c241E87E0Ee72e787", tokens: [ - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.optimism.DAI, // DAI - ] - }), - }, - bsc: { - tvl: sumTokensExport({ - owner: "0x7c24b813089675cf5484afa4850FE9276D97b461", tokens: [ - ADDRESSES.bsc.BUSD, // BUSD - ADDRESSES.bsc.USDC, // USDC - ADDRESSES.bsc.USDT, // USDT - "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", // DAI - ] - }), - }, - avax: { - tvl: sumTokensExport({ - owner: "0xD5a7Df8B56d285011AbE406235109c029F45797A", tokens: [ - ADDRESSES.avax.USDC, // USDC - ADDRESSES.avax.USDt, // USDT - ADDRESSES.avax.DAI, // DAI - ] - }), - }, -}; diff --git a/projects/ondo-global-markets/index.js b/projects/ondo-global-markets/index.js deleted file mode 100644 index a3fa00bac30..00000000000 --- a/projects/ondo-global-markets/index.js +++ /dev/null @@ -1,124 +0,0 @@ -module.exports = { - methodology: "Sums the total supplies of Ondo's issued global markets tokens.", -}; - -const config = { - AAPLon: "0x14c3abf95cb9c93a8b82c1cdcb76d72cb87b2d4c", - ABNBon: "0xb035c3d5083bdc80074f380aebc9fcb68aba0a28", - ABTon: "0x3859385363f7bb4dfe42811ccf3f294fcd41dd1d", - ACNon: "0xaba9ae731aad63335c604e5f6e6a5db2e05f549d", - ADBEon: "0x7042a8ffc7c7049684bfbc2fcb41b72380755a43", - AGGon: "0xff7cf16aa2ffc463b996db2f7b7cf0130336899d", - AMDon: "0x0c1f3412a44ff99e40bf14e06e5ea321ae7b3938", - AMZNon: "0xbb8774fb97436d23d74c1b882e8e9a69322cfd31", - APOon: "0x4d21affd27183b07335935f81a5c26b6a5a15355", - APPon: "0xd5c5b2883735fa9b658dd52e2fcc8d7c0f1a42ce", - ARMon: "0x5bf1b2a808598c0ef4af1673a5457d86fe6d7b3d", - ASMLon: "0xe51ba774ebf6392c45bf1d9e6b334d07992460d3", - AVGOon: "0x0d54d4279b9e8c54cd8547c2c75a8ee81a0bcae8", - AXPon: "0x2bc7ff0c5da9f1a4a51f96e77c5b0f7165dc06d2", - BABAon: "0x41765f0fcddc276309195166c7a62ae522fa09ef", - BAon: "0x57270d35a840bc5c094da6fbeca033fb71ea6ab0", - BIDUon: "0x9d4c6ad12b55e4645b585209f90cc26614061e91", - BLKon: "0x7a0f89c1606f71499950aa2590d547c3975b728e", - CMGon: "0x25018520138bbab60684ad7983d4432e8b8e926b", - COINon: "0xf042cfa86cf1d598a75bdb55c3507a1f39f9493b", - COSTon: "0x0c8276e4fec072cf7854be69c70f7773d1610857", - CRCLon: "0x3632dea96a953c11dac2f00b4a05a32cd1063fae", - CRMon: "0x55720ef5b023fd043ae5f8d2e526030207978950", - CSCOon: "0x980a1001ee94e54142b231f44c7ca7c9df71fbe1", - CVXon: "0x8f3e41b378ae010c46d255f36bfc1d303b52dceb", - DASHon: "0x241958c86c7744d15d5f6314ba1ea4c81dda2896", - DISon: "0xc3d93b45249e8e06cfeb01d25a96337e8893265d", - EEMon: "0x77a1a02e4a888ada8620b93c30de8a41e621126c", - EFAon: "0x4111b60bc87f2bd1e81e783e271d7f0ec6ee088b", - EQIXon: "0x73d2ccee12c120e7da265a2de9d9f952a0101b4f", - FIGon: "0x073e7a0669833d356fa88ca65cc6d454efaaa3c5", - FUTUon: "0x5ce215d9c37a195df88e294a06b8396c296b4e15", - GEon: "0xd904bcf89b7cedf5c89f9df7e829191d695f847e", - GMEon: "0x71d24baeb0a033ec5f90ff65c4210545af378d97", - GOOGLon: "0xba47214edd2bb43099611b208f75e4b42fdcfedc", - GSon: "0xdb57d9c14e357fc01e49035a808779df41e9b4e2", - HIMSon: "0xca468554e5c0423ee858fe3942c9568c51fcaa79", - HOODon: "0x998f02a9e343ef6e3e6f28700d5a20f839fd74e6", - HYGon: "0xed3618bb8778f8ebbe2f241da532227591771d04", - IAUon: "0x4f0ca3df1c2e6b943cf82e649d576ffe7b2fabcf", - IBMon: "0x25d3f236b2d61656eebdea86ac6d42168e340011", - IEFAon: "0xfeff7a377a86462f5a2a872009722c154707f09e", - IEMGon: "0xcdd60d15125bf3362b6838d2506b0fa33bc1a515", - IJHon: "0xfd50fc4e3686a8da814c5c3d6121d8ab98a537f0", - INTCon: "0xfda09936dbd717368de0835ba441d9e62069d36f", - INTUon: "0x6cc0afd51ce4cb6920b775f3d6376ab82b9a93bb", - ITOTon: "0x0692481c369e2bdc728a69ae31b848343a4567be", - IVVon: "0x62ca254a363dc3c748e7e955c20447ab5bf06ff7", - IWFon: "0x8d05432c2786e3f93f1a9a62b9572dbf54f3ea06", - IWMon: "0x070d79021dd7e841123cb0cf554993bf683c511d", - IWNon: "0x9dcf7f739b8c0270e2fc0cc8d0dabe355a150dba", - JDon: "0xdeb6b89088ca9b7d7756087c8a0f7c6df46f319c", - JPMon: "0x03c1ec4ca9dbb168e6db0def827c085999cbffaf", - KOon: "0x74a03d741226f738098c35da8188e57aca50d146", - LINon: "0x01b19c68f8a9ee3a480da788ba401cfabdf19b93", - LLYon: "0xf192957ae52db3eb088654403cc2eded014ae556", - LMTon: "0x691b126cf619707ed5d16cab1b27c000aa8de300", - MARAon: "0x4604b0b581269843ac7a6b70a5fc019e7762e511", - MAon: "0xa29dc2102dfc2a0a4a5dcb84af984315567c9858", - MCDon: "0x4c82c8cd9a218612dce60b156b73a36705645e3b", - MELIon: "0x2816169a49953c548bfeb3948dcf05c4a0e4657d", - METAon: "0x59644165402b611b350645555b50afb581c71eb2", - MRVLon: "0xf404e5f887dbd5508e16a1198fcdd5de1a4296b8", - MSFTon: "0xb812837b81a3a6b81d7cd74cfb19a7f2784555e5", - MSTRon: "0xcabd955322dfbf94c084929ac5e9eca3feb5556f", - MUon: "0x050362ab1072cb2ce74d74770e22a3203ad04ee5", - NFLXon: "0x032dec3372f25c41ea8054b4987a7c4832cdb338", - NKEon: "0xd8e26fcc879b30cb0a0b543925a2b3500f074d81", - NOWon: "0x8bcf9012f4b0c1c3d359edb7133c294f82f80790", - NVDAon: "0x2d1f7226bd1f780af6b9a49dcc0ae00e8df4bdee", - NVOon: "0x28151f5888833d3d767c4d6945a0ee50d1b193e3", - ORCLon: "0x8a23c6baadb88512b30475c83df6a63881e33e1e", - PANWon: "0x34bfdff25f0fda6d3ad0c33f1e06c0d40bd68885", - PBRon: "0xd08ddb436e731f32455fe302723ee0fd2e9e8706", - PEPon: "0x3ce219d498d807317f840f4cb0f03fa27dd65046", - PFEon: "0x06954faa913fa14c28eb1b2e459594f22f33f3de", - PGon: "0x339ce23a355ed6d513dd3e1462975c4ecd86823a", - PLTRon: "0x0c666485b02f7a87d21add7aeb9f5e64975aa490", - PYPLon: "0x4efd92f372898b57f292de69fce377dd7d912bdd", - QBTSon: "0x3807562a482b824c08a564dfefcc471806d3e00a", - QCOMon: "0xe3419710c1f77d44b4dab02316d3f048818c4e59", - QQQon: "0x0e397938c1aa0680954093495b70a9f5e2249aba", - RDDTon: "0xa9431d354cfad3c6b76e50f0e73b43d48be80cd0", - RIOTon: "0x21deafd91116fce9fe87c8f15bde03f99a309b72", - SBETon: "0xfdb46864a7c476f0914c5e82cded3364a9f56f8a", - SBUXon: "0xf15fbc1349ab99abad63db3f9a510bf413be3bef", - SHOPon: "0x908266c1192628371cff7ad2f5eba4de061a0ac5", - SLVon: "0xf3e4872e6a4cf365888d93b6146a2baa7348f1a4", - SMCIon: "0x2ca12a3f9635fd69c21580def14f25c210ca9612", - SNOWon: "0x5d1a9a9b118ff19721e0111f094f2360b6ef7a2f", - SPGIon: "0xbc843b147db4c7e00721d76037b8b92e13afe13f", - SPOTon: "0x590f21186489ca1612f49a4b1ff5c66acd6796a9", - SPYon: "0xfedc5f4a6c38211c1338aa411018dfaf26612c08", - TIPon: "0x2df38ca485d01fc15e4fd85847ed26b7ef871c1c", - TLTon: "0x992651bfeb9a0dcc4457610e284ba66d86489d4d", - TMon: "0xab02fc332e9278ebcbbc6b4a8038050c01d15f69", - TSLAon: "0xf6b1117ec07684d3958cad8beb1b302bfd21103f", - TSMon: "0x3cafdbfe682aec17d5ace2f97a2f3ab3dcf6a4a9", - UBERon: "0x5bcd8195e3ef58f677aef9ebc276b5087c027050", - UNHon: "0x075756f3b6381a79633438faa8964946bf40163d", - Von: "0xac37c20c1d0e5285035e056101a64e263ff94a41", - WFCon: "0x4ad2118da8a65eaa81402a3d583fef6ee76bdf3f", - WMTon: "0x82106347ddbb23ce44cf4ce4053ef1adf8b9323b", - } - - - - - -module.exports = { - ethereum: { - tvl: async (api) => { - const gmAddresses = Object.values(config); - let supplies; - supplies = await api.multiCall({ abi: "erc20:totalSupply", calls: gmAddresses, }) - api.addTokens(gmAddresses, supplies); - }, - } -}; diff --git a/projects/ondofinance-v1/abi.json b/projects/ondofinance-v1/abi.json deleted file mode 100644 index a6002279a51..00000000000 --- a/projects/ondofinance-v1/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getVaults": "function getVaults(uint256 _from, uint256 _to) view returns (tuple(uint256 id, tuple(address token, address trancheToken, uint256 trancheCap, uint256 userCap, uint256 deposited, uint256 originalInvested, uint256 totalInvested, uint256 received, uint256 rolloverDeposited)[] assets, address strategy, address creator, address strategist, address rollover, uint256 hurdleRate, uint8 state, uint256 startAt, uint256 investAt, uint256 redeemAt)[] vaults)" -} diff --git a/projects/ondofinance-v1/index.js b/projects/ondofinance-v1/index.js deleted file mode 100644 index 41c26497b1c..00000000000 --- a/projects/ondofinance-v1/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -module.exports = { - methodology: - "Counts all tokens in deployed vaults as well as Ondo's LaaS multi-sigs", - ethereum: { - tvl: () => ({}), - }, - deadFrom: '2022-08-19', -}; diff --git a/projects/ondofinance/index.js b/projects/ondofinance/index.js deleted file mode 100644 index 5039f8cac89..00000000000 --- a/projects/ondofinance/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getTokenSupplies } = require("../helper/solana"); -const sui = require("../helper/chain/sui"); -const { aQuery } = require("../helper/chain/aptos"); -const { get } = require("../helper/http"); -const {post} = require("../helper/http"); - -const RIPPLE_ENDPOINT = 'https://s1.ripple.com:51234'; - -async function getXrplTokenBalances(issuer_acct, currency_code) { - const body = { - method: 'gateway_balances', - params: [{ account: issuer_acct, ledger_index: 'validated' }] - }; - const res = await post(RIPPLE_ENDPOINT, body); - - const obligations = res.result.obligations?.[currency_code] ?? "0"; - - let frozenAmount = 0; - if (res.result.frozen_balances) { - const frozenBalances = Object.values(res.result.frozen_balances) - .flat() // Flatten the balances for each user into a single array - .filter((balance) => balance.currency === currency_code) // Filter for OUSG currency - frozenBalances.forEach((balance) => { - frozenAmount = frozenAmount + parseFloat(balance.value) - }); - } - - const totalAmount = (parseFloat(obligations) + frozenAmount); - - return totalAmount; -} - -module.exports = { - methodology: "Sums the total supplies of Ondo's issued tokens.", -}; - -const config = { - solana: { - OUSG: "i7u4r16TcsJTgq1kAG8opmVZyVnAKBwLKu6ZPMwzxNc", - USDY: "A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6", - }, - ethereum: { - OUSG: "0x1B19C19393e2d034D8Ff31ff34c81252FcBbee92", - USDY: "0x96F6eF951840721AdBF46Ac996b59E0235CB985C", - USDYc: "0xe86845788d6e3e5c2393ade1a051ae617d974c09", - - }, - polygon: { - OUSG: "0xbA11C5effA33c4D6F8f593CFA394241CfE925811", - }, - mantle: { - USDY: "0x5bE26527e817998A7206475496fDE1E68957c5A6", - }, - sui: { - USDY: ADDRESSES.sui.USDY, - }, - aptos: { - USDY: "0xcfea864b32833f157f042618bd845145256b1bf4c0da34a7013b76e42daa53cc", - }, - noble: { - USDY: ADDRESSES.noble.USDY, - }, - arbitrum: { - USDY: "0x35e050d3C0eC2d29D269a8EcEa763a183bDF9A9D", - }, - ripple: { - OUSG: "4F55534700000000000000000000000000000000.rHuiXXjHLpMP8ZE9sSQU5aADQVWDwv6h5p", - }, - stellar: { - USDY: "USDY-GAJMPX5NBOG6TQFPQGRABJEEB2YE7RFRLUKJDZAZGAD5GFX4J7TADAZ6", - }, -}; - -async function getUSDYTotalSupplySUI() { - const USDY_TREASURY_CAP_OBJECT_ID = - "0x9dca9f57a78fa7f132f95a0cf5c4d1b796836145ead7337da6b94012db62267a"; - let treasuryCapInfo = await sui.getObject(USDY_TREASURY_CAP_OBJECT_ID); - return treasuryCapInfo.fields.total_supply.fields.value; -} - -Object.keys(config).forEach((chain) => { - let fundsMap = config[chain]; - const fundAddresses = Object.values(fundsMap); - - module.exports[chain] = { - tvl: async (api) => { - let supplies; - if (chain === "solana") { - supplies = await getTokenSupplies(fundAddresses) - api.addTokens(Object.keys(supplies), Object.values(supplies)); - } else if (chain === "sui") { - let usdySupply = await getUSDYTotalSupplySUI(); - api.addTokens(fundAddresses, [usdySupply]); - } else if (chain === "aptos") { - const { - data: { supply, decimals }, - } = await aQuery( - `/v1/accounts/${config.aptos.USDY}/resource/0x1::coin::CoinInfo<${config.aptos.USDY}::usdy::USDY>` - ); - - const aptosSupply = - supply.vec[0].integer.vec[0].value / Math.pow(10, decimals); - - api.addTokens(ADDRESSES.aptos.USDY, aptosSupply * 1e6); - } else if (chain === "noble") { - const res = await get(`https://rest.cosmos.directory/noble/cosmos/bank/v1beta1/supply/by_denom?denom=ausdy`); - api.addTokens(config.noble.USDY, parseInt(res.amount.amount)); - } else if (chain === "ripple") { - const split = config.ripple.OUSG.split('.'); - const XRPL_OUSG_CURRENCY = split[0]; - const XRPL_OUSG_ISSUER = split[1]; - // XRPL RPCs automatically adjust for the currency's decimal places, but DefiLlama expects the raw value - // so we convert to a raw balance by multiplying by 10^6 - const ousgSupply = (await getXrplTokenBalances(XRPL_OUSG_ISSUER, XRPL_OUSG_CURRENCY)) * Math.pow(10, 6); - api.addTokens(config.ripple.OUSG, ousgSupply); - } else if (chain === "stellar") { - const [code, issuer] = config.stellar.USDY.split('-'); - const res = await get(`https://api.stellar.expert/explorer/public/asset/${code}-${issuer}`); - - api.addTokens(config.stellar.USDY, res.supply); - } else { - supplies = await api.multiCall({ abi: "erc20:totalSupply", calls: fundAddresses, }) - api.addTokens(fundAddresses, supplies); - } - }, - }; -}); diff --git a/projects/one-ring-tools/index.js b/projects/one-ring-tools/index.js deleted file mode 100644 index d0af2be6465..00000000000 --- a/projects/one-ring-tools/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const STAKING_LP_USDC_DOLA = "0x33ff52D1c4b6973CD5AF41ad53Dd92D99D31D3c3"; -const LP_USDC_DOLA = "0xB720FBC32d60BB6dcc955Be86b98D8fD3c4bA645"; - -async function tvl(api) { - const lpBal = await api.call({ abi: 'erc20:balanceOf', target: '0xa1034ed2c9eb616d6f7f318614316e64682e7923', params: STAKING_LP_USDC_DOLA}) - api.add(LP_USDC_DOLA, lpBal) - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - methodology: "Calculate TVL of staking lp product", - optimism: { - tvl, - }, -}; diff --git a/projects/one-ring/abi.json b/projects/one-ring/abi.json deleted file mode 100644 index a31b6dd33c1..00000000000 --- a/projects/one-ring/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getSharePrice": "uint256:getSharePrice", - "totalSupply": "uint256:totalSupply", - "balanceWithInvested": "uint256:balanceWithInvested" -} \ No newline at end of file diff --git a/projects/one-ring/index.js b/projects/one-ring/index.js deleted file mode 100644 index 6ca9a3a9a02..00000000000 --- a/projects/one-ring/index.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - hallmarks: [ - [1647907200, "Rug Pull"] - ], - deadFrom: 1647907200, - fantom: { - tvl: () => ({}), - }, - polygon: { - tvl: () => ({}), - }, -}; diff --git a/projects/onecash/index.js b/projects/onecash/index.js deleted file mode 100644 index be0fdc3607e..00000000000 --- a/projects/onecash/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const shareMasterChefContract = "0xC9aE03864271a8f18bEC0afD3c2dccF3D0700950"; -const ONS = "0x5bb29c33c4a3c29f56f8aca40b4db91d8a5fe2c5"; -const ONC = "0xd90e69f67203ebe02c917b5128629e77b4cd92dc"; - -const DAIONSLPTokenSharePool = "0x11dAb122FA5ab4D407521Ae1CA416dEFF198b688"; -const ONS_DAI_UNIV2 = "0x896dc58182C3B78598C11aa10F940257A1cE32b1"; - -const DAIONCLPTokenSharePool = "0x78A05fDA97C8458F07e03583fdaf05Ff6ee4f6C9"; -const ONC_DAI_UNIV2 = "0x3Ba3C8fB0142A6f2bf3e2990A08957866203f961"; - -const boardroomContracts = [ - "0x6aCb13480D431C99e68794F038e00857DA8D1fF3", - "0x8eeBDFc76a9f98d0b36b107A940ADAdBA8C8df27", - "0xFD35C0e9706A669d7be9B2D9C69AE2927F1071dB", - "0xd22C1549017Cf96eAA093ad47Da0CF62f42b0562", -]; - -const stakingContracts = boardroomContracts.concat([shareMasterChefContract]) - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(stakingContracts, ONS), - pool2: pool2s( - [shareMasterChefContract, DAIONSLPTokenSharePool, DAIONCLPTokenSharePool], - [ONC_DAI_UNIV2, ONS_DAI_UNIV2] - ), - tvl: (tvl) => ({}), - }, - methodology: - "Counts liquidty on the Staking and Pool2 Only", -}; diff --git a/projects/onedaofinance/index.js b/projects/onedaofinance/index.js deleted file mode 100644 index 4ac70845488..00000000000 --- a/projects/onedaofinance/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -module.exports = { - deadFrom: 1648765747, - harmony: { - tvl: () => ({}), - staking: () => ({}), - } -} \ No newline at end of file diff --git a/projects/onedex/index.js b/projects/onedex/index.js deleted file mode 100644 index 67e89282abc..00000000000 --- a/projects/onedex/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); - -module.exports = { - timetravel: false, - elrond: { - tvl: sumTokensExport({ - owner: "erd1qqqqqqqqqqqqqpgqqz6vp9y50ep867vnr296mqf3dduh6guvmvlsu3sujc", - blacklistedTokens: ['GROK-f2a62f'] - }), - staking: sumTokensExport({ - owners: ["erd1qqqqqqqqqqqqqpgql9z9vm8d599ya2r9seklpkcas6qmude4mvlsgrj7hv", "erd1qqqqqqqqqqqqqpgq8nlmvjm8gum6y2kqe0v296kgu8cm4jlemvlsays3ku"] - }), - }, -}; diff --git a/projects/oneguyfinance/index.js b/projects/oneguyfinance/index.js deleted file mode 100644 index dc72b18258d..00000000000 --- a/projects/oneguyfinance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const config = { - polygon: { owners: ['0x4e9f8e71DBbd9aCca9b4c7ae1c647FC1B45065FD'], tokens: [nullAddress] } -} - -module.exports = { - methodology: `TVL is the total amount of MATIC held on smart-contracts.`, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: sumTokensExport(config[chain]) } -}) \ No newline at end of file diff --git a/projects/oneswap/index.js b/projects/oneswap/index.js deleted file mode 100644 index 163630b8aaf..00000000000 --- a/projects/oneswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const tronNull = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' - -const config = { - ethereum: { factory: '0x5ed3c9089ed0355bc77cf439dc2ed28c4054c8c4' }, - bsc: { factory: '0xEeFa8Ca24dd1D573882277b917720953e999734D' }, - csc: { factory: '0xEeFa8Ca24dd1D573882277b917720953e999734D' }, - tron: { factory: 'TTw6kcn7yGExHZRuJXNP2saq6xZ7oTHne4' }, -} - -Object.keys(config).forEach(chain => { - const { factory } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const pairs = await api.fetchList({ lengthAbi: 'uint256:allPairsLength', itemAbi: 'function allPairs(uint256) view returns (address)', target: factory, permitFailure: true, }) - const data = await api.multiCall({ abi: 'function getTokensFromPair(address) view returns (address, address)', calls: pairs, target: factory}) - const ownerTokens = data.map((v, i) => [v.map(i => i === tronNull ? nullAddress : i), pairs[i]]) - return sumTokens2({ api, ownerTokens, blacklistedTokens: pairs}) - } - } -}) \ No newline at end of file diff --git a/projects/oni/index.js b/projects/oni/index.js deleted file mode 100644 index eda07772f29..00000000000 --- a/projects/oni/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require("../helper/staking"); - -const OniFactory = "0xED13950fD0a2E10788E830e60CFA0D018125310e"; -const OniToken = "0x6c77BB19C69d66bEA9E3CDAea108A76eA8D2Fd2A"; -const MasterChef = "0xE93fC7e6103EF86F3329635B8197D462B74F0cb8"; - -module.exports = { - methodology: - "TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://info.oni.exchange/ as the source. Staking accounts for ONI locked in MasterChef (0xE93fC7e6103EF86F3329635B8197D462B74F0cb8)", - bsc: { - tvl: getUniTVL({ factory: OniFactory, useDefaultCoreAssets: true }), - staking: stakingPricedLP( - MasterChef, - OniToken, - "bsc", - "0x7A070189A28875aC936F517A9d452248619F0CA6", - "wbnb", - true - ), - }, -}; diff --git a/projects/oninofarm/index.js b/projects/oninofarm/index.js deleted file mode 100644 index be3c0f02434..00000000000 --- a/projects/oninofarm/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require('../helper/staking') - -const pools = [ - "0x94c62870C8234F4DB1629e7378fBCA46402c34f8", - "0x415146A17F25ac2CC4c51E7b2bEEF9a6E32439a5", - "0xBCCd7c12f570676984CA66F70e2E98809C7F13c3", - "0x1b581E15421cE65888316939116139519a77dAAF", - "0xcCD9af13Aa5132e36dBE524DE6Acc26405209Da2" -] - -const token = "0xea89199344a492853502a7A699Cc4230854451B8" - -module.exports = { - bsc: { tvl: () => ({}), staking: staking(pools, token) } -}; \ No newline at end of file diff --git a/projects/onionswap/index.js b/projects/onionswap/index.js deleted file mode 100644 index 878920ce03b..00000000000 --- a/projects/onionswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const factory = '0xE196d4903999b00a90Cc8d0fc017e01017fd58D6' // v2 factory address - -module.exports = uniTvlExport('base', factory) \ No newline at end of file diff --git a/projects/only1.js b/projects/only1.js deleted file mode 100644 index a6496a5c6a7..00000000000 --- a/projects/only1.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getConfig } = require('./helper/cache') -const { sumTokens2 } = require('./helper/solana') - -async function staking() { - const { data } = await getConfig('only1-solana',"https://api-edge.only1.app/staking-pools") - - const owners = data.map(i => i.publicKey) - return sumTokens2({ tokens: ['3bRTivrVsitbmCTGtqwp7hxXPsybkjn4XLNtPsHqa3zR'], owners, computeTokenAccount: true, }) -} - -module.exports = { - timetravel: false, - methodology: "TVL is the sum of all tokens in the staking pools", - solana: { - staking, - tvl: async () => ({}) - } -} \ No newline at end of file diff --git a/projects/onsenswap/index.js b/projects/onsenswap/index.js deleted file mode 100644 index 3aa9ea655a0..00000000000 --- a/projects/onsenswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - start: '2023-04-22', - era: { - tvl: getUniTVL({ - factory: "0x0E15a1a03bD356B17F576c50d23BF7FC00305590", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/onus-usdo/index.js b/projects/onus-usdo/index.js deleted file mode 100644 index c6f93441539..00000000000 --- a/projects/onus-usdo/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const owner = '0x3D513abc13f53A1E18Ae59A7B5B0930E55733C87' -const onuBUSD = '0xdfB5E8a4AC08E46258A12AbE737bba5D8c452508' -const BUSD = ADDRESSES.ethereum.BUSD - -const tvl = async (api) => { - const balance = await api.call({ target: onuBUSD, params: owner, abi: 'erc20:balanceOf' }) - api.add(BUSD, balance, { skipChain: true }) -} - -module.exports = { - onus: { tvl } -} \ No newline at end of file diff --git a/projects/onx.js b/projects/onx.js deleted file mode 100644 index a42c16f5307..00000000000 --- a/projects/onx.js +++ /dev/null @@ -1,242 +0,0 @@ - -const { staking } = require('./helper/staking') -const ADDRESSES = require('./helper/coreAssets.json') - - -const config = { - polygon: { vaults: [ - //dualMaticUsdc - ['0x6e7a5fafcec6bb1e78bae2a1f0b612012bf14827', '0x36D14424Cc5a18893e93A0f8FdD42DC40562887E'], - //dualMaticEth - ['0xadbf1854e5883eb8aa7baf50705338739e558e5b', '0xfe51dE20719d05152Ace63a069446Bb5C89511DB'], - //dualMaticUsdt - ['0x604229c960e5cacf2aaeac8be68ac07ba9df81c3', '0x067E7586Eb8733bF108167C15cBAbee4c629C37A'], - //dualMaticQuick - ['0x019ba0325f1988213d448b3472fa1cf8d07618d7', '0x849031F78970639F8Dc9Dc3E962e0d0079D1051c'], - //EthUsdc - ['0x853ee4b2a13f8a742d64c8f088be7ba2131f670d', '0x185A1cfdb7173b224d08E61F1Cb21Fd5Fd6ee8CD'], - //wBtcEth - ['0xdc9232e2df177d7a12fdff6ecbab114e2231198d', '0xf1ba3ef65262ee4058462e65a3a09a7571193400'], - //ethUsdt - ['0xf6422b997c7f54d1c6a6e103bcb1499eea0a7046', '0x353856185fBB65a098b971B6d492CC3c245D9a59'], - //quickEth - ['0x1bd06b96dd42ada85fdd0795f3b4a79db914add5', '0x9767218525A443AE1B04A2a84Cf2f6D646C2fA06'], - //aaveEth - ['0x90bc3e68ba8393a3bf2d79309365089975341a43', '0xbB760a23924a23e5270c659349c753d16e7C1078'], - //ethDai - ['0x4a35582a710e1f4b2030a3f826da20bfb6703c09', '0x0d553115D2c1E2b734d66De1Eba4BAe1a88cB175'], - //wbtcUsdc - ['0xf6a637525402643b0654a54bead2cb9a83c8b498', '0x248Eecc8286A8C6484B4A87e1F32f0bc2d7971D4'], - //linkEth - ['0x5ca6ca6c3709e1e6cfe74a50cf6b2b6ba2dadd67', '0x58bC3B5949C6784819A606645d616D8D2dA7594B'], - //usdcQuick - ['0x1f1e4c845183ef6d50e9609f16f6f9cae43bc9cb', '0x7E9dA60002dAF64778C78Ac90dD5bdc9391acb00'], - //usdcUsdt - ['0x2cf7252e74036d1da831d11089d326296e64a728', '0x1a130be9a0E9046936E5461D3e8727b6aF7d0C2C'], - //avaxMatic - ['0xeb477ae74774b697b5d515ef8ca09e24fee413b5', '0x8D20fB2F4F96E897Fed7E3E50f8A403aFc59dA23'], - //solMatic - ['0x898386dd8756779a4ba4f1462891b92dd76b78ef', '0x0A1EfAF7dd833F9D8EF9f2f095bf1d6C725FF110'], - //bnbUsdc - ['0x40a5df3e37152d4daf279e0450289af76472b02e', '0x43bE6849BC355735D77238AcfDBcEB7bE8673f02'], - //ftmMatic - ['0xd2b61a42d3790533fedc2829951a65120624034a', '0xF020de990036D5aE107860592Bde0E53892F1531'], - //daiUsdc - ['0xf04adbf75cdfc5ed26eea4bbbb991db002036bdd', '0x260e6fB68C787CdA2E9ea104f9e3a3923E4119f6'], - //daiUsdt - ['0x59153f27eefe07e5ece4f9304ebba1da6f53ca88', '0x32B750721Ad93f62b21402526354d53ac46953C2'], - ] }, - avax: { vaults: [ - //usdcAvax - ['0xa389f9430876455c36478deea9769b7ca4e3ddb1', '0x8025d4deDa0C7512d44438a7DC597612B4108F07'], - //wethAvax - ['0xfe15c2695f1f920da45c30aae47d11de51007af9', '0xf7AcA362510b327bDAca693611353b6a837cBDB2'], - //avaxUsdte - ['0xed8cbd9f0ce3c6986b22002f03c6475ceb7a6256', '0x897Fb124aCdF5A685d9258645ffee0058464817A'], - //joeAvax [not available] - ['0x454e67025631c065d3cfad6d71e6892f74487a15', '0x02e9bc3EF29A3f51EdE6e4c4F70fdcb894CD6Cf5'], - //wBtcAvax - ['0xd5a37dc5c9a396a03dd1136fc76a1a02b1c88ffa', '0x8922E41342C6160fAf4dC40f2c1fCFCd94E98779'], - //linkAvax - ['0x6f3a0c89f611ef5dc9d96650324ac633d02265d3', '0x55F42961b3aD4E2A08f1780C7434dd8EC5f7FcE4'], - //joeUsdce - ['0x67926d973cd8ee876ad210faaf7dffa99e414acf', '0xD9F63Cc588822cD3eF802D900808E946d13CE609'], - //bnbAvax - ['0xeb8eb6300c53c3addbb7382ff6c6fbc4165b0742', '0x4decafaCD4591e52f85e8FE69F82F2400176BB33'], - //joeUsdte - ['0x1643de2efb8e35374d796297a9f95f64c082a8ce', '0xfD127Bc3b6153b043fFD8d7f38272593700b124c'], - // //spellAvax [not available] - ['0x62cf16bf2bc053e7102e2ac1dee5029b94008d99', '0x9eE877279DFE8e5F20614db88e50CD72B4efDEAD'], - // //xavaAvax [not available] - ['0x72c3438cf1c915ecf5d9f17a6ed346b273d5bf71', '0x54720637Fa477eD87Cd06F674247a649A5168eB6'], - //linkeUsdce - ['0xb9f425bc9af072a91c423e31e9eb7e04f226b39d', '0x62CA6F1640776070ECa70E09d9AF27352a43a5D8'], - //wethUsdce - ['0x199fb78019a08af2cb6a078409d0c8233eba8a0c', '0x2C858E3181988f2E4458f14768aE204E5BF2Ee0e'], - //pefiAvax [not available] - ['0xb78c8238bd907c42be45aebdb4a8c8a5d7b49755', '0x276F74C24Cc4443Ecb4967Db77572BE50aeD4117'], - //wbtceAvax - ['0x62475f52add016a06b398aa3b2c2f2e540d36859', '0x008E6bf114D686713dC233487e360A158433e519'], - //aaveAvax - ['0xc3e6d9f7a3a5e3e223356383c7c055ee3f26a34f', '0xE7c34e1946A10a3A28BEd4B0Cb5B7F0d85F5368D'], - //qiAvax - ['0x2774516897ac629ad3ed9dcac7e375dda78412b9', '0x0240269d999301d03aAe390104584F7517f52ECd'], - // //avaxBoo [not available] - ['0xebf50b8089a0c5e7c5de23f644fcd723818f65b3', '0xB4a805Ad532BB92501507C9eAc27FD0BAe4d68A1'], - // //maiAvax [not available] - ['0x23ddca8de11eccd8000263f008a92e10dc1f21e8', '0x2071fD6779B701aa71c4a48b8f37970160e5FE75'], - // //h20Avax [not available] - ['0x9615a11eaa912eae869e9c1097df263fc3e105f3', '0x6b42A98af10C2E94a6951c94b8Ac5B5EEB23c8AF'], - ] }, - fantom: { vaults: [ - //xBoo - ['0x841fad6eae12c286d1fd18d1d525dffa75c7effe', '0x95d0d6A7D75A5b086d2823C38F6Dd80a50fD0d93',], - //BooFtm - ['0xec7178f4c41f346b2721907f5cf7628e388a7a58', '0x62CA6F1640776070ECa70E09d9AF27352a43a5D8'], - //UsdcFtm - ['0x2b4c76d0dc16be1c31d4c1dc53bf9b45987fc75c', '0x6b42A98af10C2E94a6951c94b8Ac5B5EEB23c8AF'], - //fUsdtFtm - ['0x5965E53aa80a0bcF1CD6dbDd72e6A9b2AA047410', '0xC033338F7605B1555b1d3FC2a3626b2b76a0E042'], - //DaiFtm - ['0xe120ffBDA0d14f3Bb6d6053E90E63c572A66a428', '0xf1Ba3EF65262ee4058462E65A3A09a7571193400'], - //btc - ['0xFdb9Ab8B9513Ad9E419Cf19530feE49d412C3Ee3', '0x0f16CBDaF6c8115cDde59876cF232903E95D488A'], - //eth - ['0xf0702249F4D3A25cD3DED7859a165693685Ab577', '0x7396241a8a45E6252A2b5bBB571CBdfF599E16F1'], - //link - ['0x89d9bC2F2d091CfBFc31e333D6Dc555dDBc2fd29', '0x8D20fB2F4F96E897Fed7E3E50f8A403aFc59dA23'], - //aave - ['0xeBF374bB21D83Cf010cC7363918776aDF6FF2BF6', '0xE663F7d6AFB3A3Ef458D5c4a068E29368a46Eb87'], - //sushi - ['0xf84E313B36E86315af7a06ff26C8b20e9EB443C3', '0x32B750721Ad93f62b21402526354d53ac46953C2'], - //crv - ['0xB471Ac6eF617e952b84C6a9fF5de65A9da96C93B', '0x424B1AE0AF693d4577dde25081E970cb656013C7'], - //bnb - ['0x956DE13EA0FA5b577E4097Be837BF4aC80005820', '0x1fA1B8D94B922e3C9821f66363a75237c36096af'], - //any - ['0x5c021D9cfaD40aaFC57786b409A9ce571de375b4', '0xE41718b549B935358A2f62acbD289F3dcccABB18'], - //mim - ['0x6f86e65b255c9111109d2D2325ca2dFc82456efc', '0xfB271303B157d2e3d91CF86C7956eb46180d62E5'], - //yfi - ['0x0845c0bFe75691B1e21b24351aAc581a7FB6b7Df', '0x4CddFEf40f13F16520b7f98f269f772560A8fb9a'], - //btcEth - ['0xEc454EdA10accdD66209C57aF8C12924556F3aBD', '0x58bC3B5949C6784819A606645d616D8D2dA7594B'], - //spell - ['0x78f82c16992932EfDd18d93f889141CcF326DBc2', '0x4aFa2C780d0d2b139886A532d1D1959f4D316ee7'], - //joe - ['0xd518737Ff601c2A7C67F55EbbEb0a4e3fF5C0C35', '0xbE0093F744287Ea0478cc75c6320043a8b79E845'], - ] }, -} - -async function tvl(api) { - const { vaults } = config[api.chain] - const pools = vaults.map(i => i[1]) - const tokens = vaults.map(i => i[0]) - const bals = await api.multiCall({ abi: 'uint256:underlyingBalanceWithInvestment', calls: pools }) - api.addTokens(tokens, bals) -} - -const tokenAddresses = { - onx: "0xe0ad1806fd3e7edf6ff52fdb822432e847411033", - sOnx: "0xa99f0ad2a539b2867fcfea47f7e71f240940b47c", - onxFarm: "0x168f8469ac17dd39cd9a2c2ead647f814a488ce9", - onxTripleFarm: "0x30D1A19EA928cCf46634cBC2944D2D89Be636f22", - onxWethSushiPair: "0x62f22A47e5D2F8b71cC44fD85863753618312f67", - pool: "0x47F3E6C1Ef0cBe69502167095b592e61de108BaA", - aethToken: "0xE95A203B1a91a908F9B9CE46459d101078c2c3cb", - onsToken: "0xfC97C0c12438B6E4CF246cD831b02FeF4950DCAD", - oneVault: "0x3BdF1977d87EDAD8e0617efCEa958F6d43A4C30E", - onePools: [ - '0x54c532E367031F56c401C6024aC4ABEfF2b03534', - '0xbc2346C3c7F3998A12A1c8E7Be44734EcC832763', - '0xe64796FCc97c33A2193Ba60f013F3fA5D4712d56', - '0xe659fA84e0C687760245046BA63329d44320997c', - '0x19Eb6536777713aCdAcA8dd9A3AD9843D74E9E3b', - '0x1B72255a11DF705Bb598E670830E03A19F2D242f', - '0x7058EE5467edef417746aab0B8cabbbE36eF1798', - '0x9792eE4c36a622a8CF9566b037c57519A9fe8a56', - ] -} - -const getEthereumStaking = staking(tokenAddresses.sOnx, tokenAddresses.onx) - -const getEthereumBorrows = async (api) => { - api.add(ADDRESSES.null, await api.call({ target: tokenAddresses.pool, abi: 'uint256:totalBorrow' })) -} - -async function getEthereumPoolTvl(api) { - const pools = ['0xAdb6d1cB866a52C5E8C1e79Ff8e0559c12F4D7a3'] - const tokens = ['0x0652687e87a4b8b5370b05bc298ff00d205d9b5f'] - const bals = await api.multiCall({ abi: 'uint256:underlyingBalanceWithInvestment', calls: pools }) - api.addTokens(tokens, bals) - return api.sumTokens({ owners: [tokenAddresses.onxFarm, tokenAddresses.onxTripleFarm], tokens: ['0x0652687e87a4b8b5370b05bc298ff00d205d9b5f', tokenAddresses.onxWethSushiPair] }) -} - -async function ethTvl(api) { - await Promise.all([addFarmTvl, addOnePoolTvl, addVaultTvl, addOneVaultTvl, ethStakeTvl].map(i => i())) - - async function ethStakeTvl() { - let totalStake = await api.call({ target: tokenAddresses.pool, abi: 'uint256:totalStake' }) - let totalBorrow = await api.call({ target: tokenAddresses.pool, abi: 'uint256:totalPledge' }) - api.add(ADDRESSES.null, totalStake - totalBorrow) - } - - - async function addVaultTvl() { - const vaults = [ - ['0xceff51756c56ceffca006cd410b03ffc46dd3a58', '0x2abCe7c4C77e215fcCc189E02Fc5D2A30b52a06a'], - ['0x397ff1542f962076d0bfe58ea045ffa2d347aca0', '0x637c871C559ade45b37074fCF3B8081Ec81c55FC'], - ['0x06da0fd433c1a5d7a4faa01111c044910a184553', '0xeAaE5CEfce1092eb3eA1DA7622B3cF4fb20B8b81'], - - ['0x795065dcc9f64b5614c407a6efdc400da6221fb0', '0xdC6f222c4504C43225a89b84E3aae15Ad0DFDF0F'], - ['0x36e2fcccc59e5747ff63a03ea2e5c0c2c14911e7', '0x10A8dc3C0Db7BDFE1Db36d113c2685e60daaFEb8'], - ['0xfa5bc40c3bd5afa8bc2fe6b84562fee16fb2df5f', '0x6901Aac9813f3EfAae32F44E9b579f08A12707AD'], - ['0x1241f4a348162d99379a23e73926cf0bfcbf131e', '0x121eF4eEc2bb4D5eD91347166F02c0763af1C49A'], - ['0x088ee5007c98a9677165d78dd2109ae4a3d04d0c', '0x431b1F5356EcAc2D86b2313907B747B16D11066f'], - - ['0xc3d03e4f041fd4cd388c549ee2a29a9e5075882f', '0x5EA1b54C522f279ecC0182d9b35229d6435D42b7'], - ['0xd75ea151a61d06868e31f8988d28dfe5e9df57b4', '0x9DB4AFCABdB25C89424c88e720dD47D6be43BdBe'], - ['0xc40d16476380e4037e6b1a2594caf6a6cc8da967', '0xbd3a37e3690ad4e145c39983D0Aaf8bd5f5e2F29'], - ['0x31503dcb60119a812fee820bb7042752019f2355', '0x8d47f6fd4602B1ecF7928C0f1AEF9C215E3596b4'], - ['0x31503dcb60119a812fee820bb7042752019f2355', '0x8d47f6fd4602B1ecF7928C0f1AEF9C215E3596b4'], - - ['0xba13afecda9beb75de5c56bbaf696b880a5a50dd', '0x659217CdA99658AeBA399B4a79FB03D96B3c46bC'], - ['0xf55c33d94150d93c2cfb833bcca30be388b14964', '0xcedB7921013A012c5538C0d2925a90AA817Bef4D'], - ] - const pools = vaults.map(i => i[1]) - const tokens = vaults.map(i => i[0]) - const bals = await api.multiCall({ abi: 'uint256:underlyingBalanceWithInvestment', calls: pools }) - api.addTokens(tokens, bals) - } - - async function addFarmTvl() { - const farm = '0x168f8469ac17dd39cd9a2c2ead647f814a488ce9' - const pools = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: 'function poolInfo(uint256) view returns (address token, uint256,uint256,uint256)', target: farm }) - return api.sumTokens({ owner: farm, tokens: pools.map(i => i.token), blacklistedTokens: ['0x0652687e87a4b8b5370b05bc298ff00d205d9b5f', tokenAddresses.onxWethSushiPair] }) - } - async function addOnePoolTvl() { - const pools = tokenAddresses.onePools - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: pools }) - return api.sumTokens({ tokensAndOwners2: [tokens, pools] }) - } - - async function addOneVaultTvl() { - const vault = tokenAddresses.oneVault - const aETH = await api.call({ abi: 'address:aEth', target: vault }) - const aETHb = await api.call({ abi: 'address:aETHb', target: vault }) - return api.sumTokens({ tokens: [aETH, aETHb], owner: vault }) - } -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl: ethTvl, - staking: getEthereumStaking, - pool2: getEthereumPoolTvl, - borrowed: getEthereumBorrows, - }, - polygon: { tvl, }, - avax: { tvl, }, - fantom: { tvl, }, -}; \ No newline at end of file diff --git a/projects/onyx-v2/index.js b/projects/onyx-v2/index.js deleted file mode 100644 index 7c277aee407..00000000000 --- a/projects/onyx-v2/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - ethereum: compoundExports2({ comptroller: "0xcC53F8fF403824a350885A345ED4dA649e060369", cether: "0x2ccb7d00a9e10d0c3408b5eefb67011abfacb075"}), -}; - -module.exports.ethereum.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/onyx/index.js b/projects/onyx/index.js deleted file mode 100644 index a0f8b9f44d5..00000000000 --- a/projects/onyx/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); -const { staking, } = require("../helper/staking") - -const tokensAddress = { - unitroller: "0x7D61ed92a6778f5ABf5c94085739f1EDAbec2800", - oEth: "0x714bD93aB6ab2F0bcfD2aEaf46A46719991d0d79", - stakingPool: "0x23445c63FeEf8D85956dc0f19aDe87606D0e19A9", - onyx: '0xA2cd3D43c775978A96BdBf12d733D5A1ED94fb18', -}; - -module.exports = { - ethereum: { - ...compoundExports2({ comptroller: tokensAddress.unitroller, cether: tokensAddress.oEth}), - staking: staking(tokensAddress.stakingPool, tokensAddress.onyx), - }, - // hallmarks: [ - // ['2023-11-01', 'Protocol was hacked'], - // ], -}; - -module.exports.ethereum.borrowed = () => ({}) diff --git a/projects/onyxdao-farm/index.js b/projects/onyxdao-farm/index.js deleted file mode 100644 index f34721f913e..00000000000 --- a/projects/onyxdao-farm/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports, } = require("../helper/masterchef") - -const token = "0xB7cD6C8C4600AeD9985d2c0Eb174e0BEe56E8854"; -const masterchef = "0xF9C83fF6cf1A9bf2584aa2D00A7297cA8F845CcE"; - -module.exports = { - ...masterChefExports(masterchef, "arbitrum", token, false) -} \ No newline at end of file diff --git a/projects/ooki/abi.json b/projects/ooki/abi.json deleted file mode 100644 index a7bf804693c..00000000000 --- a/projects/ooki/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "getTokens": "function getTokens(uint256 _start, uint256 _count, uint256 _tokenType) view returns (tuple(address token, address asset, string name, string symbol, uint256 tokenType, uint256 index)[] tokenData)", - "totalAssetSupply": "uint256:totalAssetSupply", - "totalAssetBorrow": "uint256:totalAssetBorrow", - "totalSupplyByAsset": "function totalSupplyByAsset(address asset) view returns (uint256)", - "balanceOf": "function balanceOf(address asset) view returns (uint256)", - "totalVested": "uint256:totalVested", - "totalSupply": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/ooki/index.js b/projects/ooki/index.js deleted file mode 100644 index 80494a5684b..00000000000 --- a/projects/ooki/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { stakings } = require("../helper/staking"); - -const abi = require('./abi'); -const registry = require('./registry'); - -const contracts = { - ethereum: { - 'protocol': '0xD8Ee69652E4e4838f2531732a46d1f7F584F0b7f', - 'registry': '0xf0E474592B455579Fe580D610b846BdBb529C6F7', - }, - polygon: { - 'protocol': '0x059D60a9CEfBc70b9Ea9FFBb9a041581B1dFA6a8', - 'registry': '0x4B234781Af34E9fD756C27a47675cbba19DC8765', - }, - bsc: { - 'protocol': '0xD154eE4982b83a87b0649E5a7DDA1514812aFE1f', - 'registry': '0x1BE70f29D30bB1D325E5D76Ee73109de3e50A57d', - }, - arbitrum: { - 'protocol': '0x37407F3178ffE07a6cF5C847F8f680FEcf319FAB', - 'registry': '0x86003099131d83944d826F8016E09CC678789A30', - }, - optimism: { - 'protocol': '0xAcedbFd5Bc1fb0dDC948579d4195616c05E74Fd1', - 'registry': '0x22a2208EeEDeb1E2156370Fd1c1c081355c68f2B', - } -} - -async function getBalances(api, isBorrowed) { - const network = api.chain ?? 'ethereum' - const info = await api.call({ - target: contracts[network].registry, - params: [0, 200], - abi: registry.getTokens - }) - if (!isBorrowed) - return sumTokens2({ api, tokensAndOwners: info.map(i => [i.asset, i.token]) }) - - const borrowedBals = await api.multiCall({ abi: abi.totalAssetBorrow, calls: info.map(i => i.token) }) - api.addTokens(info.map(i => i.asset), borrowedBals) -} - -let ooki = '0x0De05F6447ab4D22c8827449EE4bA2D5C288379B' -let bzrx = '0x56d811088235F11C8920698a204A5010a788f4b3' - -let stakingContracts = [ - '0xe95Ebce2B02Ee07dEF5Ed6B53289801F7Fc137A4', - '0x16f179f5c344cc29672a58ea327a26f64b941a63' -] - -Object.keys(contracts).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => getBalances(api, false), - borrowed: async (api) => getBalances(api, true), - } -}) -module.exports.ethereum.staking = stakings(stakingContracts, [ooki, bzrx]) - -module.exports.arbitrum.borrowed = () => ({}) -module.exports.polygon.borrowed = () => ({}) -module.exports.bsc.borrowed = () => ({}) -module.exports.arbitrum.borrowed = () => ({}) -module.exports.optimism.borrowed = () => ({}) -module.exports.ethereum.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/ooki/itoken.json b/projects/ooki/itoken.json deleted file mode 100644 index 0d3d3c06988..00000000000 --- a/projects/ooki/itoken.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "avgBorrowInterestRate": "uint256:avgBorrowInterestRate", - "totalAssetBorrow": "uint256:totalAssetBorrow", - "supplyInterestRate": "uint256:supplyInterestRate", - "borrowInterestRate": "uint256:borrowInterestRate" -} \ No newline at end of file diff --git a/projects/ooki/masterchef.json b/projects/ooki/masterchef.json deleted file mode 100644 index 84eaf4e3ceb..00000000000 --- a/projects/ooki/masterchef.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "balanceOf": "function balanceOf(uint256 pid) view returns (uint256)", - "userInfo": "function userInfo(uint256 pid, address owner) view returns (uint256 amount, uint256 rewardDebt)" -} \ No newline at end of file diff --git a/projects/ooki/registry.json b/projects/ooki/registry.json deleted file mode 100644 index 9d5fbdf2ff9..00000000000 --- a/projects/ooki/registry.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getTokens": "function getTokens(uint256 _start, uint256 _count) view returns (tuple(address token, address asset)[] metadata)" -} \ No newline at end of file diff --git a/projects/oolongswap/index.js b/projects/oolongswap/index.js deleted file mode 100644 index 18e768251b2..00000000000 --- a/projects/oolongswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - boba: { - tvl: getUniTVL({ - factory: '0x7DDaF116889D655D1c486bEB95017a8211265d29', - useDefaultCoreAssets: true, - }) - }, - hallmarks: [ - [1658312537, "Alameda Research exits"], - ], -}; diff --git a/projects/oortswap/index.js b/projects/oortswap/index.js deleted file mode 100644 index 4e2202bc3ed..00000000000 --- a/projects/oortswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xac15fe2C74bD635EfAF687F302633C7e5EbfF973) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - rei: { - tvl: getUniTVL({ - factory: '0xac15fe2C74bD635EfAF687F302633C7e5EbfF973', - useDefaultCoreAssets: true, - }) - }, -}; // node test.js projects/oortswap/index.js \ No newline at end of file diff --git a/projects/opal/index.js b/projects/opal/index.js deleted file mode 100644 index 5bc6a7b3c15..00000000000 --- a/projects/opal/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const config = { - ethereum: [ - "0x86b130298719F753808E96cA6540b684a2d21466",// wstETH - "0xD2358c5d01065b13F2Ad1107d5a4531Cd98aC7A1",// rETH - "0x0c8e1e97d9f41a21D6Ef98E644a5516d9b7F593f",// wETH - "0x2165AEA91B33631A772d1723b88a98C1Ca820116",// weETH - "0x4aCc76B4B3E4529D7cE88Ca921D7a4112f25A6dA", // USDC - ] -} - -Object.keys(config).forEach(chain => { - const pools = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const uPools = await api.fetchList({ lengthAbi: 'getUnderlyingPoolsLength', itemAbi: 'function getUnderlyingPool(uint8) view returns (address)', targets: pools, groupedByInput: true, }) - const ownerTokens = uPools.map((tokens, i) => [tokens, pools[i]]) - return api.sumTokens({ ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/opbanana/index.js b/projects/opbanana/index.js deleted file mode 100644 index e4b677f9e51..00000000000 --- a/projects/opbanana/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - op_bnb: { tvl: getUniTVL({ factory: '0xdF9161aa1D60f129E185D43e2862BD4826E88Aa8', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/open-ticketing-ecosystem/index.js b/projects/open-ticketing-ecosystem/index.js deleted file mode 100644 index ed1af17aa65..00000000000 --- a/projects/open-ticketing-ecosystem/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking"); - -const stakingContractEthereum = "0x686e8500B6bE8812EB198aAbbbFA14C95c03fC88"; -const openTokenEthereum = "0xc28eb2250d1ae32c7e74cfb6d6b86afc9beb6509"; -const stakingContractPolygon = "0x686e8500B6bE8812EB198aAbbbFA14C95c03fC88"; -const openTokenAddressPolygon = "0x7844F79FC841E4F92d974C417031c76F8578c2D5"; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(stakingContractEthereum, openTokenEthereum), - }, - polygon: { - tvl: () => ({}), - staking: staking(stakingContractPolygon, openTokenAddressPolygon), - }, -}; diff --git a/projects/openbook/index.js b/projects/openbook/index.js deleted file mode 100644 index 2f4789900dc..00000000000 --- a/projects/openbook/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getConnection, decodeAccount, blacklistedTokens_default, } = require('../helper/solana') -const sdk = require('@defillama/sdk') -const { PublicKey } = require("@solana/web3.js") -const { MARKET_STATE_LAYOUT_V3_MINIMAL } = require('../helper/utils/solana/layouts/openbook-layout') -const blacklistedTokens = new Set(blacklistedTokens_default) - -async function tvl(api) { - const connection = getConnection() - - const programPublicKey = new PublicKey('srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX') - const programAccounts = await connection.getProgramAccounts(programPublicKey, { - filters: [{ dataSize: 388 }], - dataSlice: { offset: 53, length: MARKET_STATE_LAYOUT_V3_MINIMAL.span } - }); - sdk.log('#markets', programAccounts.length) - - programAccounts.forEach((account) => { - const market = decodeAccount('openbook-minimal', account.account) - const baseToken = market.baseMint.toBase58() - const quoteToken = market.quoteMint.toBase58() - const baseBal = +market.baseDepositsTotal + +market.baseFeesAccrued - const quoteBal = +market.quoteDepositsTotal + +market.quoteFeesAccrued - if (!blacklistedTokens.has(baseToken)) api.add(baseToken, baseBal) - if (!blacklistedTokens.has(quoteToken)) api.add(quoteToken, quoteBal) - }); - -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} diff --git a/projects/opendao/index.js b/projects/opendao/index.js deleted file mode 100644 index 82a65c00230..00000000000 --- a/projects/opendao/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { pool2s } = require("../helper/pool2"); -const { compoundExports2 } = require('../helper/compound'); - -const comptroller = "0x959Fb43EF08F415da0AeA39BEEf92D96f41E41b3"; - -const farmContractsBSC = [ - // Farm ID 41 - "0x92702dcCD53022831edd3FCBfEabbBA31BC29bB6", - // Farm ID 17 - "0x172E45E4527484ea184F017898102D5e0E94Dc88", - // Farm ID 42 - "0xb8A177d29417ee325953ec388BA2dBD77B02DdF4", - // Farm ID 18 - "0x378319C0CdC4dCC09800154a47eF9ee7dAE044B8", - // Farm ID 60 - "0xeED6E3F11bA173B82Bb913CaC943C0eF290A734a", - // Farm ID 61 - "0x0ED995cB847185aC3cfDE9d1b8e8f57AB54a7247" -]; - -const pool2LpsBSC = [ - // OPEN-WETH UNI-V2 LP MAR - "0x1dDf85Abdf165d2360B31D9603B487E0275e3928", - // OPEN-USDT UNI-V2 LP DEC - "0x507d84fe072Fe62A5F2e1F917Be8Cc58BdC53eF8", - // OPEN-USDT UNI-V2 LP MAR - "0x507d84fe072Fe62A5F2e1F917Be8Cc58BdC53eF8", - // OPEN-WETH UNI-V2 LP DEC - "0x1dDf85Abdf165d2360B31D9603B487E0275e3928", - // OPEN-WETH UNI-V2 LP MAY - "0x1dDf85Abdf165d2360B31D9603B487E0275e3928", - // OPEN-USDT UNI-V2 LP MAY - "0x507d84fe072Fe62A5F2e1F917Be8Cc58BdC53eF8" -]; - -const vaults = [ - "0x0a234ef34614a4eed1c1430a23b46f95df5f4257", // pOPEN - "0xfff0cc78a7e7ce5d6ba60f23628ff9a63beee87f", // OCP - "0x09139d7343953163eacde83845b342c1d08999ef", // LIME - "0xd90ec012a6b2b549dd2a74024f1e025d0801696c", // LAND - "0xcfefc606c4c010c242431f60a7afc13461df399c", // ROSEN -]; - -async function bscTvl(api) { - const tokens = await api.multiCall({ abi: 'address:underlying', calls: vaults}) - return api.sumTokens({ tokensAndOwners2: [tokens, vaults]}) -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - pool2: pool2s(farmContractsBSC, pool2LpsBSC), - ...compoundExports2({ comptroller }) - }, - bsc: { - tvl: bscTvl, - }, - methodology: - "We count liquidity on the Markets same as compound, and we export Borrowing part too", -} - -delete module.exports.ethereum.borrowed \ No newline at end of file diff --git a/projects/opendelta/index.js b/projects/opendelta/index.js deleted file mode 100644 index e721a8efa44..00000000000 --- a/projects/opendelta/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { PublicKey, } = require("@solana/web3.js") -const { getConnection, } = require("../helper/solana") - -const OPB_MINT_ADDRESS = "opbrKSFxFXRHNg75xjpEAbJ5R6e6GYZ6QKEqdvcBq7c" - -async function tvl(api) { - const connection = getConnection() - const { value: { data: { parsed: { info: { supply, decimals, extensions }}}}} = await connection.getParsedAccountInfo(new PublicKey(OPB_MINT_ADDRESS)) - const { state } = extensions.find(e => e.extension === 'interestBearingConfig') - api.addUSDValue(computeSupply(supply, state, decimals)) - - function computeSupply(supply, extensionData, decimals) { - // Compute the supply based on the interest-bearing extension - const { currentRate, initializationTimestamp, preUpdateAverageRate, lastUpdateTimestamp, } = extensionData - - const currentTimestamp = Math.floor(Date.now() / 1000) - const timeElapsed = lastUpdateTimestamp - initializationTimestamp - const timeElapsedSinceLastUpdate = currentTimestamp - lastUpdateTimestamp - const interestRate = currentRate / 1e4 - const interestRatePre = preUpdateAverageRate / 1e4 - const ONE_YEAR = 365.24 * 24 * 60 * 60 - const interestAccruedCurrent = Math.exp(interestRate * timeElapsedSinceLastUpdate / ONE_YEAR) - const interestAccruedPre = Math.exp(interestRatePre * timeElapsed / ONE_YEAR) - - const computedSupply = supply * (interestAccruedCurrent * interestAccruedPre) - return computedSupply / Math.pow(10, decimals) - } - -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "TVL is calculated by multiplying the OPB token supply by the current USD value of 1.0 OPB. Initially worth $1.0, 1.0 OPB now reflects its increased value from accrued interest, derived using amountToUiAmount approach of Solana Token2022 Interest Bearing extension.", - solana: { - tvl, - }, -} diff --git a/projects/opendollar/index.js b/projects/opendollar/index.js deleted file mode 100644 index e89d7808483..00000000000 --- a/projects/opendollar/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - arbitrum: { factory: '0xa83c0f1e9eD8E383919Dde0fC90744ae370EB7B3', fromBlock: 203621588 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event DeployCollateralJoin(bytes32 indexed _cType, address indexed _collateral, address indexed _collateralJoin)', fromBlock, }) - const tokensAndOwners = logs.map(i => [i._collateral, i._collateralJoin]) - return api.sumTokens({ tokensAndOwners }) - } - } -}) \ No newline at end of file diff --git a/projects/openeden-tbill/index.js b/projects/openeden-tbill/index.js deleted file mode 100644 index 814c1418cc5..00000000000 --- a/projects/openeden-tbill/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { getTokenSupplies } = require('../helper/solana') -const { ripple } = require('../helper/chain/rpcProxy') - -const evmTBILLAddr = { - ethereum: '0xdd50C053C096CB04A3e3362E2b622529EC5f2e8a', - arbitrum: '0xF84D28A8D28292842dD73D1c5F99476A80b6666A', -} - -const solTBILLAddr = '4MmJVdwYN8LwvbGeCowYjSx7KoEi6BJWg8XXnW4fDDp6' - -const xrpTBILLAddr = { - issuerAddress: 'rJNE2NNz83GJYtWVLwMvchDWEon3huWnFn', - subscriptionOperatorAddress: 'rB56JZWRKvpWNeyqM3QYfZwW4fS9YEyPWM', -} - -async function ethTVL(api) { - const tbill = await api.call({ - abi: 'uint256:totalSupply', - target: evmTBILLAddr.ethereum - }) - api.add(evmTBILLAddr.ethereum, tbill) -} - -async function arbTVL(api) { - const tbill = await api.call({ - abi: 'uint256:totalSupply', - target: evmTBILLAddr.arbitrum - }) - api.add(evmTBILLAddr.arbitrum, tbill) -} - -async function solTVL(api) { - const data = await getTokenSupplies([solTBILLAddr]) - Object.entries(data).forEach(([addr, tbill]) => { - api.add(addr, tbill) - }) -} - -async function xrpTVL(api) { - const data = await ripple.gatewayBalances({ - account: xrpTBILLAddr.issuerAddress, - hotwallet: xrpTBILLAddr.subscriptionOperatorAddress, - }) - api.add(evmTBILLAddr.ethereum, Number(data.obligations?.TBL) * 1e6, { skipChain: true }) -} - -module.exports = { - ethereum: { tvl: ethTVL }, - arbitrum: { tvl: arbTVL }, - solana: { tvl: solTVL }, - ripple: { tvl: xrpTVL }, -} diff --git a/projects/openeden-usdo/index.js b/projects/openeden-usdo/index.js deleted file mode 100644 index 31a2f82c950..00000000000 --- a/projects/openeden-usdo/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { addRippleTokenBalance } = require('../helper/sumTokens'); -const { sumTokensExport, sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - arbitrum: { - owners: [ - "0x5EaFF7af80488033Bc845709806D5Fae5291eB88", - "0x5E6c2AD8376A9E5E857B1d91643399E9aB65ff8c", - "0xaAb4Ea02e5616787931c9E8283cb27F0211DC116", - "0x7cb1dc5923aef8ae1aa8e8911b94d0732dde15fd", - ], - tokens: [ - "0xF84D28A8D28292842dD73D1c5F99476A80b6666A", //t-bill - ], - }, - ethereum: { - owners: [ - "0x5EaFF7af80488033Bc845709806D5Fae5291eB88", - "0x5E6c2AD8376A9E5E857B1d91643399E9aB65ff8c", - "0x5bf369282fc12d773b06c6cdd574ccedab0c642c", - "0x602a1cb1f821a3e8f507a7637a4be7af19578f75", - ], - tokens: [ - "0xdd50C053C096CB04A3e3362E2b622529EC5f2e8a", - ADDRESSES.ethereum.USDC, - "0x7712c34205737192402172409a8F7ccef8aA2AEc", - "0x2255718832bC9fD3bE1CaF75084F4803DA14FF01", - "0x136471a34f6ef19fE571EFFC1CA711fdb8E49f2b", - "0x3DDc84940Ab509C11B20B76B466933f40b750dc9", - ], - }, - base: { - owners: ["0x5EaFF7af80488033Bc845709806D5Fae5291eB88"], - tokens: [ADDRESSES.base.USDC], - }, - polygon: { - owners: [ - "0x895e873498134d2ce2ab118633e164c044bc7b43", - "0x591226f73844b1c20735496a7aa1a8ad2818e0b9", - "0x5EaFF7af80488033Bc845709806D5Fae5291eB88", - ], - tokens: [ - "0x2893ef551b6dd69f661ac00f11d93e5dc5dc0e99", - ], - }, - bsc: { - owners: ["0x5eaff7af80488033bc845709806d5fae5291eb88"], - tokens: [ADDRESSES.bsc.USDC], - }, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: sumTokensExport({ ...config[chain] }), - }; -}); - -module.exports.ripple = { - tvl: async (api) => { - await addRippleTokenBalance({ api, account: 'rEsMDrPYTDRqCCYMiEuHpCHbq1c4tzkffZ', whitelistedTokens: ['TBL.rJNE2NNz83GJYtWVLwMvchDWEon3huWnFn']}) - return sumTokens2({ api }) - } -} - -module.exports.methodology = - "Counts TBILL, USDC, BUIDL and BENJI tokens held in the USDO system wallet on Ethereum, Arbitrum and Base."; diff --git a/projects/openex/index.js b/projects/openex/index.js deleted file mode 100644 index f66f1a1a3db..00000000000 --- a/projects/openex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: "0x6Edf8aecAA888896385d7fA19D2AA4eaff3C10D8", - }), - }, -}; diff --git a/projects/opengpu/index.js b/projects/opengpu/index.js deleted file mode 100644 index e60c3d05f47..00000000000 --- a/projects/opengpu/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking } = require('../helper/staking'); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const CONTRACTS = [ - '0x3C9634620A626b7e9a3fB74A8f800d67cdaF2A5B', - '0x695a9c59cd823cbb2cd8331a835d1eb7982b170a' -]; - -const oGPU = '0x067Def80D66fB69C276e53b641f37ff7525162f6'; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: CONTRACTS, - token: coreAssets.null - }), - staking: staking(CONTRACTS, oGPU), - }, -}; \ No newline at end of file diff --git a/projects/openleverage/index.js b/projects/openleverage/index.js deleted file mode 100644 index 00573344694..00000000000 --- a/projects/openleverage/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: '0x03bf707deb2808f711bb0086fc17c5cafa6e8aaf', - bsc: '0x6A75aC4b8d8E76d15502E69Be4cb6325422833B4', - kcc: '0xEF6890d740E1244fEa42E3D1B9Ff515C24c004Ce', - arbitrum: '0x2925671dc7f2def9e4ad3fa878afd997f0b4db45' -} -// openleverage overcollateralized-borrowing-contracts -const borrowConfig = { - bsc: '0xf436f8fe7b26d87eb74e5446acec2e8ad4075e47', - arbitrum: '0xe7779ebb5c28ccd6d3dcf13920b06402ca52189c' -} -module.exports = {}; - -Object.keys(config).forEach(chain => { - const openLevAddr = config[chain] - const borrowAddr = borrowConfig[chain] - module.exports[chain] = { - tvl: async (api) => { - const data = await api.fetchList({ lengthAbi: 'uint256:numPairs', itemAbi: "function markets(uint16) view returns (address pool0, address pool1, address token0, address token1, uint16 marginLimit, uint16 feesRate, uint16 priceDiffientRatio, address priceUpdater, uint256 pool0Insurance, uint256 pool1Insurance)", target: openLevAddr }) - const tokensAndOwners = data.map(i => { - const toa = [ - [i.token0, openLevAddr], - [i.token0, i.pool0], - [i.token1, openLevAddr], - [i.token1, i.pool1], - ] - if (borrowAddr) - toa.push([i.token0, borrowAddr], [i.token1, borrowAddr],) - return toa - }).flat() - return sumTokens2({ api, tokensAndOwners }) - } - } -}) \ No newline at end of file diff --git a/projects/openocean.js b/projects/openocean.js deleted file mode 100644 index 16e2e255f88..00000000000 --- a/projects/openocean.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -const { staking } = require('./helper/staking') - -const config = { - bsc: { factory: '0xd76d8c2a7ca0a1609aea0b9b5017b3f7782891bf', s: ['0x44eB0f1ce777394564070f9E50dD8784FCDB7e6a', '0x9029fdfae9a03135846381c7ce16595c3554e10a'], }, - polygon: { factory: '0xd76d8C2A7CA0a1609Aea0b9b5017B3F7782891bf', }, - kava: { factory: '0x6dd434082EAB5Cd134B33719ec1FF05fE985B97b', }, - arbitrum: { factory: '0x01Ec93c289cB003e741f621cDD4FE837243f8905', }, - manta: { factory: '0x8D2B7e5501Eb6D92F8e349f2FEbe785DD070bE74', }, - avax: { factory: '0x042AF448582d0a3cE3CFa5b65c2675e88610B18d', s: ['0x4C431b568e8baAB20F004BB16E44570e8E0cD6D7', '0x0ebd9537a25f56713e34c45b38f421a1e7191469'], }, - ethereum: { factory: '0x1f8c25f8da3990ecd3632ee4f02c2ea37755c3c6', s: ['0xb99d38eb69214e493b1183ffa3d561fc9f75d519', '0x7778360f035c589fce2f4ea5786cbd8b36e5396b'], }, - rsk: { factory: '0x6Dd434082EaB5cD134B33719ec1ff05fe985B97b', }, -} - -module.exports = { misrepresentedTokens: true } - -Object.keys(config).forEach(chain => { - const { factory, s } = config[chain] - module.exports[chain] = { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), } - if (s) - module.exports[chain].staking = staking(...s) -}) diff --git a/projects/opensky/index.js b/projects/opensky/index.js deleted file mode 100644 index 0ed16f567d3..00000000000 --- a/projects/opensky/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const methodologies = require('../helper/methodologies'); -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -const abi = { - create: 'event Create(uint256 indexed reserveId, address indexed underlyingAsset, address indexed oTokenAddress, string name, string symbol, uint8 decimals)', - getAvailableLiquidity: "function getAvailableLiquidity(uint256 reserveId) view returns (uint256)", - getTotalBorrowBalance: "function getTotalBorrowBalance(uint256 reserveId) view returns (uint256)", -} - -async function tvl(api) { - const balances = {}; - const factory = '0xdae29a91f663faf7657594f908e183e3b826d437' - const logs = await getLogs({ - api, - target: factory, - topics: ['0xa974e5e75ec9215fd423fc8e00fbfed574e4e36bfa650d4c54ffc9b12224d105'], - fromBlock: 15223160, - eventAbi: abi.create - }) - const deposits = await api.multiCall({ abi: abi.getAvailableLiquidity, calls: logs.map(i => i.args.reserveId.toString()), target: factory }) - deposits.map((val, i) => sdk.util.sumSingleBalance(balances,logs[i].args.underlyingAsset,val, api.chain)) - return sumTokens2({ api, owner: '0x87d6dec027e167136b081f888960fe48bb10328a', resolveNFTs: true, balances, }) -} - -async function borrowed(api) { - const balances = {}; - const factory = '0xdae29a91f663faf7657594f908e183e3b826d437' - const logs = await getLogs({ - api, - target: factory, - topics: ['0xa974e5e75ec9215fd423fc8e00fbfed574e4e36bfa650d4c54ffc9b12224d105'], - fromBlock: 15223160, - eventAbi: abi.create - }) - const borrowed = await api.multiCall({ abi: abi.getTotalBorrowBalance, calls: logs.map(i => i.args.reserveId.toString()), target: factory }) - borrowed.map((val, i) => sdk.util.sumSingleBalance(balances,logs[i].args.underlyingAsset,val, api.chain)) - return balances -} - -module.exports = { - methodology: methodologies.lendingMarket, - ethereum: { - tvl, - borrowed, - }, -} \ No newline at end of file diff --git a/projects/openswap/index.js b/projects/openswap/index.js deleted file mode 100644 index d54feebfbdf..00000000000 --- a/projects/openswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport('rss3_vsl', '0x2F6d9dac92e197bE02aC2DE8BBD7E02837E2dB8d') \ No newline at end of file diff --git a/projects/openswap_harmony/index.js b/projects/openswap_harmony/index.js deleted file mode 100644 index f9e21141a41..00000000000 --- a/projects/openswap_harmony/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - harmony: { - tvl: getUniTVL({ - factory: '0x5d2f9817303b940c9bb4f47c8c566c5c034d9848', - useDefaultCoreAssets: true, - blacklist: [ - '0xed0b4b0f0e2c17646682fc98ace09feb99af3ade', // RVRS - ] - }) - }, - hallmarks:[ - [1655991120, "Horizon bridge Hack $100m"], - ], -} diff --git a/projects/opentrade/index.js b/projects/opentrade/index.js deleted file mode 100644 index 4cd11643701..00000000000 --- a/projects/opentrade/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const CONFIG = { - ethereum: [ - '0x3ee320c9f73a84d1717557af00695a34b26d1f1d', // XEVT - '0x0bbc2be1333575f00ed9db96f013a31fdb12a5eb', // TBV1 - '0x30c3115dca6370c185d5d06407f29d3ddbc4cfc4', // TBV2 - '0x7bfb97fe849172608895fd4c62237cb42a8607d2', // TBV3 - '0xa65446265517a29f7427abb1279165eb61624dd0', // TBV4 - '0x0f8cbdc544dc1d4bd1bdafe0039be07b825af82a', // XTBT - ], - avax: [ - '0xbb9360d57f68075e98d022784c12f2fda082316b', // XRV1 - '0xad6605f4987031fd2d6d6816be53eb7c5b764bf7', // XTBT - ], - plume_mainnet: [ - '0x6688aA2eB549e325C21a16c942827C9c99F40dd9', // XMMF - '0xf19d819F23b05C231C0de1dde97289476A0Bcf30', // XHYCB - ] -} - - -const tvl = async (api, tokens) => { - const [assets, balances] = await Promise.all([ - api.multiCall({ calls: tokens, abi: 'address:liquidityAssetAddr' }), - api.multiCall({ calls: tokens, abi: 'uint256:totalAssets' }), - ]) - api.add(assets, balances) -} - -Object.entries(CONFIG).forEach(([chain, tokens]) => { - module.exports[chain] = { tvl: async (api) => tvl(api, tokens) } -}) \ No newline at end of file diff --git a/projects/openworld-lev-farm/index.js b/projects/openworld-lev-farm/index.js deleted file mode 100644 index 72760f72bde..00000000000 --- a/projects/openworld-lev-farm/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { get } = require('../helper/http') -const { getConfig } = require('../helper/cache') - -const positionManager = '0x0b95Ea9Eb46716d20991163AE60eD2e16645Ef38'; -const getValueFarmAbi = 'function getFarmValue(address) view returns (address token0, uint256 amount0, address token1, uint256 amount1)'; -const OPEN = '0x58cb98a966f62aa6f2190eb3aa03132a0c3de3d5' - -async function tvl(api) { - const vaults = await getConfig('open-world/lev-farming-vaults/'+api.chain, undefined, { - fetcher: async () => { - const data = await get('https://analytic.ow.finance/lending-synthetic') - return data.data.map(v => v.vaultAddress) - } - }) - const farms = await getConfig('open-world/lev-farming-farms/'+api.chain, undefined, { - fetcher: async () => { - const data = await get('https://product-exploration.ow.finance/pools') - return data.data.map(v => v.workerAddress) - } - }) - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults }) - await api.sumTokens({ tokensAndOwners2: [tokens, vaults], }) - const farmData = await api.multiCall({ abi: getValueFarmAbi, calls: farms, target: positionManager }) - for (const i of farmData) { - api.add(i.token0, i.amount0) - api.add(i.token1, i.amount1) - } - - api.removeTokenBalance(OPEN) -} - -module.exports = { - arbitrum: { tvl }, -} \ No newline at end of file diff --git a/projects/openworld/index.js b/projects/openworld/index.js deleted file mode 100644 index d5580cf7082..00000000000 --- a/projects/openworld/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - arbitrum: { - tvl: gmxExports({ vault: '0xec45801399EB38B75A3bf793051b00bb64fF3eF8', }) - }, -} \ No newline at end of file diff --git a/projects/openxswap/index.js b/projects/openxswap/index.js deleted file mode 100644 index 4130ce72cd1..00000000000 --- a/projects/openxswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const OpenX = "0xc3864f98f2a61A7cAeb95b039D031b4E2f55e0e9" -const OpenXStaking = "0x2513486f18eeE1498D7b6281f668B955181Dd0D9" - -module.exports = { - misrepresentedTokens: true, - optimism:{ - tvl: getUniTVL({ - factory: '0xf3C7978Ddd70B4158b53e897f980093183cA5c52', - useDefaultCoreAssets: true, - }), - staking: staking(OpenXStaking, OpenX) - }, -} - diff --git a/projects/openzk/index.js b/projects/openzk/index.js deleted file mode 100644 index 50df4ad9797..00000000000 --- a/projects/openzk/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 1345, }), - }, -} diff --git a/projects/opium.js b/projects/opium.js deleted file mode 100644 index 9e597e8202e..00000000000 --- a/projects/opium.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getConfig } = require('./helper/cache') -const { sumTokens2 } = require('./helper/unwrapLPs') - -const config = { - ethereum: { url: 'https://static.opium.network/data/opium-addresses.json', }, - polygon: { url: 'https://static.opium.network/data/opium-addresses-polygon.json', }, - bsc: { url: 'https://static.opium.network/data/opium-addresses-bsc.json', }, - arbitrum: { url: 'https://static.opium.network/data/opium-addresses-arbitrum.json', }, -} - -Object.keys(config).forEach(chain => { - const { url } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const { tokens, contracts } = await getConfig('opium/' + api.chain, url) - return sumTokens2({ api, tokens, owners: contracts }) - } - } -}) diff --git a/projects/optfun/index.js b/projects/optfun/index.js deleted file mode 100644 index ac02c798046..00000000000 --- a/projects/optfun/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const COLLATERAL_VAULT = "0xaD7094D06818d9C0cce6D3f97E709D84f964F144" -const USDT = ADDRESSES.corn.USDT0 - -async function tvl(api) { - return api.sumTokens({ tokens: [USDT], owner: COLLATERAL_VAULT }) -} - -module.exports = { - methodology: 'Sum of all USDT deposits in Collateral Vault', - start: 6195000, - hyperliquid: { - tvl, - } -}; diff --git a/projects/optidoge/index.js b/projects/optidoge/index.js deleted file mode 100644 index a219fc14f64..00000000000 --- a/projects/optidoge/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { pool2 } = require("../helper/pool2") -const { stakingUnknownPricedLP } = require("../helper/staking") -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - - -module.exports = { - optimism: { - tvl: sumTokensExport({ owner: '0xc911523c466b4E1dADE1bac9A2D4ceA3F9E1A2ae', tokens: [nullAddress] }), - pool2: pool2("0x7Dbe3714371bB9FF72369AFc88703AbD2694E322", ["0x91d62ac270e5bb371a25f81c9e74f16b53448efd"], "optimism"), - staking: stakingUnknownPricedLP("0x015C4b2250F7aAC41274FeB95eFf00016C0CE08c", "0x93d97dbb1bb5290c78c23885e8026047dc8998a8", "optimism", "0x91d62ac270e5bb371a25f81c9e74f16b53448efd", addr => `optimism:${addr}`) - } -} diff --git a/projects/optifi/idl.json b/projects/optifi/idl.json deleted file mode 100644 index fb3b2605102..00000000000 --- a/projects/optifi/idl.json +++ /dev/null @@ -1,1430 +0,0 @@ -{ - "version": "1.1.22", - "name": "optifi_exchange", - "instructions": [], - "accounts": [ - { - "name": "AmmAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "optifiExchange", - "type": "publicKey" - }, - { - "name": "ammIdx", - "type": "u8" - }, - { - "name": "quoteTokenMint", - "type": "publicKey" - }, - { - "name": "quoteTokenVault", - "type": "publicKey" - }, - { - "name": "lpTokenMint", - "type": "publicKey" - }, - { - "name": "ammCapacity", - "type": "u64" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "asset", - "type": "u8" - }, - { - "name": "tradingInstruments", - "type": { - "vec": "publicKey" - } - }, - { - "name": "positions", - "type": { - "vec": { - "defined": "Position" - } - } - }, - { - "name": "proposals", - "type": { - "vec": { - "defined": "Proposal" - } - } - }, - { - "name": "state", - "type": { - "defined": "AmmState" - } - }, - { - "name": "flags", - "type": { - "vec": "bool" - } - }, - { - "name": "iv", - "type": "u64" - }, - { - "name": "price", - "type": "u64" - }, - { - "name": "netDelta", - "type": "i64" - }, - { - "name": "timestamp", - "type": "u64" - }, - { - "name": "totalLiquidityUsdc", - "type": "u64" - }, - { - "name": "duration", - "type": { - "defined": "Duration" - } - }, - { - "name": "expiryDate", - "type": "u64" - }, - { - "name": "contractSize", - "type": "u64" - }, - { - "name": "clientOrderIdCounter", - "type": "u64" - }, - { - "name": "ammMangoAccount", - "type": "publicKey" - }, - { - "name": "isHedgeNeeded", - "type": "bool" - }, - { - "name": "isHedgeInProgress", - "type": "bool" - }, - { - "name": "tempPnl", - "type": { - "defined": "TempPnL" - } - }, - { - "name": "withdrawQueue", - "type": "publicKey" - } - ] - } - }, - { - "name": "AmmWithdrawRequestQueue", - "type": { - "kind": "struct", - "fields": [ - { - "name": "requestIdCounter", - "type": "u32" - }, - { - "name": "head", - "type": "u32" - }, - { - "name": "tail", - "type": "u32" - }, - { - "name": "requests", - "type": { - "array": [ - { - "defined": "WithdrawRequest" - }, - 5000 - ] - } - } - ] - } - }, - { - "name": "Chain", - "type": { - "kind": "struct", - "fields": [ - { - "name": "asset", - "type": "u8" - }, - { - "name": "instrumentType", - "type": { - "defined": "InstrumentType" - } - }, - { - "name": "strike", - "type": "u64" - }, - { - "name": "expiryDate", - "type": "u64" - }, - { - "name": "duration", - "type": { - "defined": "Duration" - } - }, - { - "name": "start", - "type": "u64" - }, - { - "name": "expiryType", - "type": { - "defined": "ExpiryType" - } - }, - { - "name": "isListedOnMarket", - "type": "bool" - }, - { - "name": "contractSize", - "type": "u64" - } - ] - } - }, - { - "name": "Exchange", - "type": { - "kind": "struct", - "fields": [ - { - "name": "uuid", - "type": "string" - }, - { - "name": "version", - "type": "u32" - }, - { - "name": "exchangeAuthority", - "type": "publicKey" - }, - { - "name": "usdcMint", - "type": "publicKey" - }, - { - "name": "usdcCentralPool", - "type": "publicKey" - }, - { - "name": "usdcFeePool", - "type": "publicKey" - }, - { - "name": "userAccountIdCounter", - "type": "u64" - }, - { - "name": "oracle", - "type": { - "vec": { - "defined": "OracleData" - } - } - }, - { - "name": "markets", - "type": { - "vec": { - "defined": "OptifiMarketKeyData" - } - } - }, - { - "name": "instrumentCommon", - "type": { - "vec": { - "defined": "InstrumentCommon" - } - } - }, - { - "name": "instrumentUnique", - "type": { - "vec": { - "vec": { - "defined": "InstrumentUnique" - } - } - } - }, - { - "name": "ogNftMint", - "type": { - "option": "publicKey" - } - }, - { - "name": "userDepositLimit", - "type": { - "option": "u64" - } - } - ] - } - }, - { - "name": "LiquidationState", - "type": { - "kind": "struct", - "fields": [ - { - "name": "userAccount", - "type": "publicKey" - }, - { - "name": "status", - "type": { - "defined": "LiquidationStatus" - } - }, - { - "name": "timestamp", - "type": "u64" - }, - { - "name": "markets", - "type": { - "vec": "publicKey" - } - }, - { - "name": "values", - "type": { - "vec": "i64" - } - } - ] - } - }, - { - "name": "MarginStressAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "optifiExchange", - "type": "publicKey" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "asset", - "type": { - "defined": "Asset" - } - }, - { - "name": "spotPrice", - "type": "u64" - }, - { - "name": "iv", - "type": "u64" - }, - { - "name": "timestamp", - "type": "u64" - }, - { - "name": "state", - "type": { - "defined": "MarginStressState" - } - }, - { - "name": "flags", - "type": { - "vec": "bool" - } - }, - { - "name": "instruments", - "type": { - "vec": "publicKey" - } - }, - { - "name": "strikes", - "type": { - "vec": "u64" - } - }, - { - "name": "isCall", - "type": "bytes" - }, - { - "name": "expiryDate", - "type": { - "vec": "u64" - } - }, - { - "name": "optionPrice", - "type": { - "vec": "u64" - } - }, - { - "name": "intrinsicValue", - "type": { - "vec": "u64" - } - }, - { - "name": "optionPriceDeltaInStressPrice", - "type": { - "vec": { - "vec": "i64" - } - } - } - ] - } - }, - { - "name": "MarketMakerAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "userAccount", - "type": "publicKey" - }, - { - "name": "active", - "type": "bool" - }, - { - "name": "withdrawTs", - "type": "u64" - }, - { - "name": "withdrawalAmount", - "type": "u64" - }, - { - "name": "openOrdersData", - "type": { - "vec": { - "defined": "OpenOrdersData" - } - } - } - ] - } - }, - { - "name": "OptifiMarket", - "type": { - "kind": "struct", - "fields": [ - { - "name": "optifiMarketId", - "type": "u16" - }, - { - "name": "serumMarket", - "type": "publicKey" - }, - { - "name": "instrument", - "type": "publicKey" - }, - { - "name": "instrumentLongSplToken", - "type": "publicKey" - }, - { - "name": "instrumentShortSplToken", - "type": "publicKey" - }, - { - "name": "isStopped", - "type": "bool" - }, - { - "name": "bump", - "type": "u8" - } - ] - } - }, - { - "name": "UserAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "optifiExchange", - "type": "publicKey" - }, - { - "name": "owner", - "type": "publicKey" - }, - { - "name": "id", - "type": "u64" - }, - { - "name": "userMarginAccountUsdc", - "type": "publicKey" - }, - { - "name": "tempPnl", - "type": { - "defined": "TempPnL" - } - }, - { - "name": "state", - "type": { - "defined": "AccountState" - } - }, - { - "name": "positions", - "type": { - "vec": { - "defined": "UserPosition" - } - } - }, - { - "name": "isInLiquidation", - "type": "bool" - }, - { - "name": "isMarketMaker", - "type": "bool" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "amountToReserve", - "type": { - "array": [ - "u64", - 10 - ] - } - }, - { - "name": "netOptionValue", - "type": { - "array": [ - "i64", - 10 - ] - } - }, - { - "name": "tradingMarkets", - "type": { - "vec": "publicKey" - } - }, - { - "name": "liquidateFlags", - "type": { - "vec": "bool" - } - }, - { - "name": "clientOrderIdCounter", - "type": "u64" - }, - { - "name": "ammEquities", - "type": { - "array": [ - { - "defined": "UserAmmEquity" - }, - 20 - ] - } - }, - { - "name": "fee", - "type": "u64" - }, - { - "name": "tradingValue", - "type": "u64" - }, - { - "name": "totalDeposit", - "type": "u64" - } - ] - } - } - ], - "types": [ - { - "name": "OptionData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "size", - "type": "i32" - } - ] - } - }, - { - "name": "StressFunctionResult", - "type": { - "kind": "struct", - "fields": [ - { - "name": "price", - "type": { - "vec": { - "vec": "f64" - } - } - }, - { - "name": "intrinsicValue", - "type": { - "vec": { - "vec": "f64" - } - } - }, - { - "name": "stressPriceDelta", - "type": { - "vec": { - "vec": "f64" - } - } - } - ] - } - }, - { - "name": "MarginFunctionResult", - "type": { - "kind": "struct", - "fields": [ - { - "name": "netQty", - "type": "i64" - }, - { - "name": "notionalQty", - "type": "i64" - }, - { - "name": "net", - "type": "f64" - }, - { - "name": "notional", - "type": "f64" - }, - { - "name": "stressResult", - "type": "f64" - }, - { - "name": "netIntrinsic", - "type": "f64" - }, - { - "name": "netPremium", - "type": "f64" - }, - { - "name": "maturingNetIntrinsic", - "type": "f64" - }, - { - "name": "maturingPremium", - "type": "f64" - }, - { - "name": "maturingLiquidity", - "type": "f64" - }, - { - "name": "totalMargin", - "type": "f64" - }, - { - "name": "netLeverage", - "type": "f64" - }, - { - "name": "notionalLeverage", - "type": "f64" - } - ] - } - }, - { - "name": "InitializeAMMData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "ammIdx", - "type": "u8" - }, - { - "name": "ammCapacity", - "type": "u64" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "asset", - "type": "u8" - }, - { - "name": "numInstruments", - "type": "u8" - }, - { - "name": "duration", - "type": "u8" - }, - { - "name": "contractSize", - "type": "u64" - } - ] - } - }, - { - "name": "InitializeExchangeData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "uuid", - "type": "string" - }, - { - "name": "version", - "type": "u32" - }, - { - "name": "exchangeAuthority", - "type": "publicKey" - }, - { - "name": "usdcMint", - "type": "publicKey" - }, - { - "name": "btcSpotOracle", - "type": "publicKey" - }, - { - "name": "ethSpotOracle", - "type": "publicKey" - }, - { - "name": "usdcSpotOracle", - "type": "publicKey" - }, - { - "name": "btcIvOracle", - "type": "publicKey" - }, - { - "name": "ethIvOracle", - "type": "publicKey" - }, - { - "name": "ogNftMint", - "type": { - "option": "publicKey" - } - }, - { - "name": "userDepositLimit", - "type": { - "option": "u64" - } - } - ] - } - }, - { - "name": "ChainData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "asset", - "type": "u8" - }, - { - "name": "instrumentType", - "type": "u8" - }, - { - "name": "expiryDate", - "type": "u64" - }, - { - "name": "duration", - "type": "u8" - }, - { - "name": "start", - "type": "u64" - }, - { - "name": "expiryType", - "type": "u8" - }, - { - "name": "contractSize", - "type": "u64" - }, - { - "name": "instrumentIdx", - "type": "u8" - } - ] - } - }, - { - "name": "InitUserAccountBumpSeeds", - "type": { - "kind": "struct", - "fields": [ - { - "name": "userAccount", - "type": "u8" - }, - { - "name": "liquidationAccount", - "type": "u8" - } - ] - } - }, - { - "name": "Proposal", - "type": { - "kind": "struct", - "fields": [ - { - "name": "instrument", - "type": "publicKey" - }, - { - "name": "isStarted", - "type": "bool" - }, - { - "name": "askOrdersSize", - "type": { - "vec": "u64" - } - }, - { - "name": "bidOrdersSize", - "type": { - "vec": "u64" - } - }, - { - "name": "askOrdersPrice", - "type": { - "vec": "u64" - } - }, - { - "name": "bidOrdersPrice", - "type": { - "vec": "u64" - } - }, - { - "name": "askClientOrderIds", - "type": { - "vec": "u64" - } - }, - { - "name": "bidClientOrderIds", - "type": { - "vec": "u64" - } - }, - { - "name": "prevAskOrdersPrice", - "type": { - "vec": "u64" - } - }, - { - "name": "prevBidOrdersPrice", - "type": { - "vec": "u64" - } - } - ] - } - }, - { - "name": "Position", - "type": { - "kind": "struct", - "fields": [ - { - "name": "instruments", - "type": "publicKey" - }, - { - "name": "longTokenVault", - "type": "publicKey" - }, - { - "name": "shortTokenVault", - "type": "publicKey" - }, - { - "name": "latestPosition", - "type": "i64" - }, - { - "name": "usdcBalance", - "type": "u64" - } - ] - } - }, - { - "name": "WithdrawRequest", - "type": { - "kind": "struct", - "fields": [ - { - "name": "requestId", - "type": "u32" - }, - { - "name": "userAccountId", - "type": "u32" - }, - { - "name": "amount", - "type": "u64" - }, - { - "name": "requestTimestamp", - "type": "u64" - } - ] - } - }, - { - "name": "OracleData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "asset", - "type": { - "defined": "Asset" - } - }, - { - "name": "spotOracle", - "type": { - "option": "publicKey" - } - }, - { - "name": "ivOracle", - "type": { - "option": "publicKey" - } - } - ] - } - }, - { - "name": "InstrumentCommon", - "type": { - "kind": "struct", - "fields": [ - { - "name": "asset", - "type": { - "defined": "Asset" - } - }, - { - "name": "expiryDate", - "type": "u64" - }, - { - "name": "expiryType", - "type": { - "defined": "ExpiryType" - } - } - ] - } - }, - { - "name": "InstrumentUnique", - "type": { - "kind": "struct", - "fields": [ - { - "name": "strike", - "type": "u32" - }, - { - "name": "instrumentPubkeys", - "type": { - "array": [ - "publicKey", - 2 - ] - } - } - ] - } - }, - { - "name": "OptifiMarketKeyData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "optifiMarketPubkey", - "type": "publicKey" - }, - { - "name": "expiryDate", - "type": "u64" - }, - { - "name": "isStopped", - "type": "bool" - } - ] - } - }, - { - "name": "OpenOrdersData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "market", - "type": "publicKey" - }, - { - "name": "timestamp", - "type": "u64" - }, - { - "name": "bids", - "type": { - "vec": { - "defined": "Order" - } - } - }, - { - "name": "asks", - "type": { - "vec": { - "defined": "Order" - } - } - }, - { - "name": "ask1", - "type": "u64" - }, - { - "name": "bid1", - "type": "u64" - }, - { - "name": "spotPrice", - "type": "u64" - }, - { - "name": "delta", - "type": "i64" - }, - { - "name": "margin", - "type": "u64" - }, - { - "name": "position", - "type": "i64" - }, - { - "name": "state", - "type": { - "defined": "MmState" - } - }, - { - "name": "volume", - "type": "u64" - }, - { - "name": "totalIndicator", - "type": "u64" - }, - { - "name": "timeWeightedIndicator", - "type": "u64" - }, - { - "name": "dailyVolume", - "type": "u64" - }, - { - "name": "penalty", - "type": "u64" - }, - { - "name": "askReward", - "type": "u64" - }, - { - "name": "bidReward", - "type": "u64" - } - ] - } - }, - { - "name": "Order", - "type": { - "kind": "struct", - "fields": [ - { - "name": "price", - "type": "u64" - }, - { - "name": "size", - "type": "u64" - }, - { - "name": "clientOrderId", - "type": "u64" - } - ] - } - }, - { - "name": "UserPosition", - "type": { - "kind": "struct", - "fields": [ - { - "name": "instrument", - "type": "publicKey" - }, - { - "name": "longQty", - "type": "u64" - }, - { - "name": "shortQty", - "type": "u64" - } - ] - } - }, - { - "name": "TempPnL", - "type": { - "kind": "struct", - "fields": [ - { - "name": "amount", - "type": "i64" - }, - { - "name": "epoch", - "type": "u64" - } - ] - } - }, - { - "name": "UserAmmEquity", - "type": { - "kind": "struct", - "fields": [ - { - "name": "notioanlWithdrawable", - "type": "u64" - }, - { - "name": "lpAmountInQueue", - "type": "u64" - } - ] - } - }, - { - "name": "Asset", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Bitcoin" - }, - { - "name": "Ethereum" - }, - { - "name": "USDC" - } - ] - } - }, - { - "name": "InstrumentType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Put" - }, - { - "name": "Call" - } - ] - } - }, - { - "name": "ExpiryType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Standard" - }, - { - "name": "Perpetual" - } - ] - } - }, - { - "name": "InstrumentData", - "type": { - "kind": "enum", - "variants": [] - } - }, - { - "name": "InstrumentExpiryType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Standard" - }, - { - "name": "Perpetual" - } - ] - } - }, - { - "name": "OrderSide", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Bid" - }, - { - "name": "Ask" - } - ] - } - }, - { - "name": "AmmState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Sync" - }, - { - "name": "CalculateDelta" - }, - { - "name": "CalculateProposal" - }, - { - "name": "Execute" - } - ] - } - }, - { - "name": "Duration", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Weekly" - }, - { - "name": "Monthly" - } - ] - } - }, - { - "name": "LiquidationStatus", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Healthy" - }, - { - "name": "CancelOrder" - }, - { - "name": "PlaceOrder" - }, - { - "name": "SettleOrder" - } - ] - } - }, - { - "name": "MarginStressState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Sync" - }, - { - "name": "Calculate" - }, - { - "name": "Available" - } - ] - } - }, - { - "name": "MmState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Calculation" - }, - { - "name": "Available" - } - ] - } - }, - { - "name": "AccountState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Uninitialized" - }, - { - "name": "Initialized" - }, - { - "name": "Frozen" - } - ] - } - }, - { - "name": "OracleDataType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Spot" - }, - { - "name": "IV" - } - ] - } - } - ], - "errors": [], - "metadata": { - "address": "optFiKjQpoQ3PvacwnFWaPUAqXCETMJSz2sz8HwPe9B" - } -} \ No newline at end of file diff --git a/projects/optifi/index.js b/projects/optifi/index.js deleted file mode 100644 index e7955a59e0f..00000000000 --- a/projects/optifi/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, } = require("../helper/solana"); -const idl = require('./idl.json') - -async function tvl() { - const provider = getProvider() - const programId = idl.metadata.address; - const program = new Program(idl, programId, provider) - const userAccounts = await program.account.userAccount.all() - const ammAccounts = await program.account.ammAccount.all() - let usdcBalance = ammAccounts.map(i => i.account.totalLiquidityUsdc).reduce((a, i) => a + (i / 1e6), 0) - const balances = { - 'usd-coin': usdcBalance - } - - const tokens = [ - ADDRESSES.solana.USDC, // USDC - ] - - const serumPCVaults = [ - "38WWL1VwNmMPqVg51U1VrpW2ytrWMJJCwtemvgt8raSu", - "DYMoBxD7kZ8dsRz5sDassSoSxGH9LeCSwLRYyAtp3QG5", - "4AVQH2MHvU2hBDZ8nDe9Wg6r98un6KpjmjMM2N21pY5d", - "FogPyqBdiTEWZVud3XVpqPMoW8Gfd7osB4jTitoodrzo", - "BPWwKZd95fAiDKuit72TWNPqkFwtHiHkgb5LrRc6EABs", - "8o8auMW3vy4qhGcd9a1BUkForN4spz2cWaztNgyMzKtP", - "6P4XFpiuV6gUo2MiKAPEnWt7gDSxH6F872dbJBzCESyg", - "2xPo4TLK66wA8Uy1uHRsYmXizcXbBKAhaFHHuWBh6M1n", - "HxiAa3msfgczD75qXEWM5FeqsgAwGvX7ycM5sopP3LYc", - "6usPMgY7vGxQSTJ3Xfd5HsziD6dcfzMxWXZtHZ2Qgidh", - "BTV3Xm7SMH5YxHYKvaBBtwGXxAoMXVMyr5Kz3yScdyHT", - "6ErKVzqLwq6oZriVMkCQLsP2a6U8pJ9YUQpnijBdnyxq", - "9MovPBQYQJSfxYaEA7UDs8pvBmAtjLXb7ycFwZUKjc26", - "5XeZa78PipX7b93BGDDwv6fWnjVeL4s6epicCDais8fD", - "F3G9AMW6CYMSJtGFYL7qcLTo3enfui9gquTvpFRb4F14", - "8d2oaNY2tkRXXoEifar64FkH9rvTGqVEcaZd1aYWmx9Q", - "8tJE3sQLUZLe89CfQfeeypnDYsizmkMxALnxwWwMcqrS", - "8ggcSPawAgzNEQ8RUtspPCZZvTpeT3bFEw7tMQvydch", - "H8yssBnCci6b6w2aMJsMzXFX9dQzDAT6XxbxEuwKhSzA", - "649nbpVo6iEU7jMzpMJmQQ9H7vzNLPnyg6YDUbE2vJGe", - "3UsAjfdEzJWo7WyCvV5cqk4xKG2FR9JKHM7MiRxu8t9D", - "81AaLXcFUFnU1bEajrM9tGcfNKej4wEUqeo17K3DNw5G", - "9kuVJFwtvpZR466De9nZYTHZJHBVjA52p1pCt7EUgbff", - "2PbrkRgZpKmADRrYvTshooC3YqGFewt1JguaP8wAtQrZ", - "FsctDV8armyXZAVidRXQJ1SCMTD5r299PQY5eVNs5x3d", - "JDYCZomM2Ew1urspaQGqBLXao1Ur3gb27gTTG9yZQhKd", - "9rkoEntjgEu1vX92cSCyUpnymRUEUoNRsL1WnT5XMftr", - "DzXUm5eGk6GdA4HkakMfjPskV2LUST3eoX49goTKUWHM", - "HpfnM4hganS3Vgz1RwgGstdFA4uRkDKkiUDKqFZpdDvd", - "FzmPZafEkEheA8gGkuhZXe6RBrEUEprqBpL44VuzK9p9", - "4i4TCmqjRbhV1E7e556GR6d9ePpUjXRC8pN57nRw17Ce", - "FQt1fLVLSH47Tnc2GU4ErcgAqtVC6wtSvRFJYkYrzmAK" - ] - - const owners = userAccounts.map(i => i.publicKey) - return sumTokens2({ balances, tokens, owners, tokenAccounts: serumPCVaults }) -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - solana: { - tvl: () => ({}), - }, - hallmarks: [ - ['2022-08-30', 'OptiFi mainnet program was closed by mistake'], - ], -}; - -module.exports.deadFrom = '2022-09-02' diff --git a/projects/optim-liquidity-bonds/index.js b/projects/optim-liquidity-bonds/index.js deleted file mode 100644 index 11e43782372..00000000000 --- a/projects/optim-liquidity-bonds/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http') - -module.exports = { - timetravel: false, - cardano: { - tvl: async () => { - const data = await get('https://spo-server.optim.finance/tvl') - return { - cardano: data.historicalData.totalLovelace/1e6 - } - } - }, -}; diff --git a/projects/optimism/index.js b/projects/optimism/index.js deleted file mode 100644 index 0201cd1f8c2..00000000000 --- a/projects/optimism/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const chains = { - ethereum: 1, - // optimism: 10, - base: 8453, - pgn: 424, -}; -let output = {}; - -const blacklistedTokens = [ - "0x61cc6af18c351351148815c5f4813a16dee7a7e4" -]; - -Object.keys(chains).map((chain) => { - output[chain] = { - tvl: async (api) => { - let res = await getConfig('optmism-bridge', "https://static.optimism.io/optimism.tokenlist.json"); - const tokenData = res.tokens.filter( - (t) => t.chainId == chains[chain] - ); - - const tokens = [ - ADDRESSES.null, - ...tokenData.map((t) => t.address) - ]; - const owners = [ - ...new Set(tokenData.map((t) => t.extensions.optimismBridgeAddress)), - ].filter((o) => o); - - if (chain == "ethereum") - owners.push("0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"); - return sumTokens2({ - api, - tokens, - owners, - fetchCoValentTokens: true, - blacklistedTokens - }); - }, - }; -}); - -module.exports = output; -// node test.js projects/optimisim/index.js diff --git a/projects/optimus/index.js b/projects/optimus/index.js deleted file mode 100644 index 1b31a93b05c..00000000000 --- a/projects/optimus/index.js +++ /dev/null @@ -1,94 +0,0 @@ -const BigNumber = require('bignumber.js'); -const { call, toHex } = require('../helper/chain/icx'); - -const ORACLE_CONTRACT = 'cxe647e0af68a4661566f5e9861ad4ac854de808a2'; -const LIQUIDTY_LEGACY_STRATEGY_CONTRACT = 'cx27eae7726c18d6cdfffa071e01d1f3a0950d7c3f'; -const BORROWER_LEGACY_STRATEGY_CONTRACT = 'cxee1fa51a14783577bc4b900c13579b9bcb0b55f5'; -const OMM_LENDING_STRATEGY_CONTRACT = 'cx4c18433c607bd8c6a0953e9627f5a0892ac40363'; -const OMM_SICX_CONTRACT = 'cx2609b924e33ef00b648a409245c7ea394c467824'; -const OMM_ORACLE_CONTRACT = 'cx189f03875da766878c68753da7492c080bcc2dbe'; -const OMM_AUTO_STAKING_STRATEGY_CONTRACT = 'cxa6e4587bad1d2bb4e9098ea9c19b8781b70c2ad5'; - -async function getICXPrice() { - return call(ORACLE_CONTRACT, 'get_reference_data', { - _base: 'ICX', - _quote: 'USD', - }) - .then(r => r['rate']) - .then(toHex); -} - -async function getOMMPrice() { - return call(OMM_ORACLE_CONTRACT, 'get_reference_data', { - _base: 'OMM', - _quote: 'USD', - }) - .then(toHex); -} - -async function ommSIcxRate() { - return call(OMM_SICX_CONTRACT, 'priceInLoop') - .then(toHex); -} - -async function getTotalSupplyLP() { - return call(LIQUIDTY_LEGACY_STRATEGY_CONTRACT, 'getIcxPool') - .then(toHex); -} - -async function getTotalSupplyBorrower() { - return new BigNumber(0) - /* return call(BORROWER_LEGACY_STRATEGY_CONTRACT, 'getLoanInfo') - .then(value => { - return value ? toHex(value.collateral) : new BigNumber(0); - }); */ -} - -async function getOMMLendingStatus() { - return call(OMM_LENDING_STRATEGY_CONTRACT, 'getStatus') - .then(({ fTokenRate, fTokenPool }) => { - return { - fTokenRate: toHex(fTokenRate), - fTokenPool: toHex(fTokenPool), - }; - }); -} - -async function getOmmAutoStakingStatus() { - return call(OMM_AUTO_STAKING_STRATEGY_CONTRACT, 'getStatus') - .then(({ fTokenRate, ommPool }) => { - const rate = toHex(fTokenRate); - const pool = toHex(ommPool); - return { - ommRate: rate, - ommPool: pool, - }; - }); -} -const tvl = async (api) => { - const [ICXPrice, totalSupply, loanInfo, ommRatesIcx, { fTokenRate, fTokenPool }, ommPrice, { ommRate, ommPool }] = await Promise.all([ - getICXPrice(), - getTotalSupplyLP(), - getTotalSupplyBorrower(), - ommSIcxRate(), - getOMMLendingStatus(), - getOMMPrice(), - getOmmAutoStakingStatus(), - ]); - - const values = [ - Number(totalSupply) * ICXPrice, - Number(loanInfo) * ICXPrice, - Number(fTokenPool) * fTokenRate * ommRatesIcx * ICXPrice, - Number(ommPool) * ommRate * ommPrice, - ]; - - const totalTVL = values.reduce((sum, val) => sum + (isNaN(val) ? 0 : val), 0); - api.addUSDValue(Math.round(totalTVL)) -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL consists of liquidty on the DEX and deposits made to the lending program. Data is pulled from the ICX API "https://ctz.solidwallet.io/api/v3"', - icon: { tvl } -} diff --git a/projects/optinyan/index.js b/projects/optinyan/index.js deleted file mode 100644 index 0c14737ba8b..00000000000 --- a/projects/optinyan/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - optimism: { - tvl: sumTokensExport({ owner: '0x6F7Fe8b33358a3F4313421186b98CA78127C6DB6', tokens: [nullAddress] }), - } -} diff --git a/projects/optionBlitz/index.js b/projects/optionBlitz/index.js deleted file mode 100644 index c17184fb24e..00000000000 --- a/projects/optionBlitz/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const treasury = "0x257C2039747FBd0217D97335B6269fb1FbFA4C03"; // Treasury -const BLX = "0x220251092F8B63efD0341F69f6ca907Bd6f271Bf"; // BLX -const assets = [nullAddress, ADDRESSES.arbitrum.USDC_CIRCLE] // ETH, USDC - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ owners: [treasury], tokens: assets }), - staking: sumTokensExport({ owners: [treasury], tokens: [BLX] }), - }, -} diff --git a/projects/optiondance/index.js b/projects/optiondance/index.js deleted file mode 100644 index 1f85a00ec41..00000000000 --- a/projects/optiondance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require('../helper/http') - -const API = "https://api.option.dance/api/v1/statistics/tvl" - -async function tvl(api) { - const { data } = await get(API); - const tvl = data.total_value; - return api.addUSDValue(Math.round(tvl)) -} - -module.exports = { - deadFrom: '2025-01-01', - misrepresentedTokens: true, - mixin: { tvl }, -}; \ No newline at end of file diff --git a/projects/optitude/index.js b/projects/optitude/index.js deleted file mode 100644 index 04ebc5f3ccd..00000000000 --- a/projects/optitude/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { yieldHelper, } = require("../helper/yieldHelper") - -const contract = '0x6a063c12aD67B7Ec793ad3E86E6a16177F01C12D' -const opt = '0xAd669b6cf06704e9D3b8D1d85A275623A1bD8288' - -module.exports = yieldHelper({ - project: 'optitude-finance', - chain: 'optimism', - masterchef: contract, - nativeToken: opt, -}) -module.exports.deadFrom = '2023-01-09' \ No newline at end of file diff --git a/projects/optyfi/index.js b/projects/optyfi/index.js deleted file mode 100644 index 673e4f58e99..00000000000 --- a/projects/optyfi/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { getConfig } = require('../helper/cache') - -const optyfi_api = "https://api.opty.fi"; -const get_vaults_api = `${optyfi_api}/v1/yield/vaults`; -const abi = { - totalSupply: "uint256:totalSupply", - getPricePerFullShare: "uint256:getPricePerFullShare", -}; - -async function getTVL(chain, block, chain_id) { - const vaults = (await getConfig('optyfi', get_vaults_api)).items.filter(i => !i.is_staging && i.chain.chain_id === chain_id) - const calls = vaults.map(i => ({ target: i.vault_token.address })) - const { output: supply } = await sdk.api.abi.multiCall({ - abi: abi.totalSupply, - calls, block, chain, - }) - const { output: price } = await sdk.api.abi.multiCall({ - abi: abi.getPricePerFullShare, - calls, block, chain, - }) - const balances = {} - vaults.forEach((v, i) => { - sdk.util.sumSingleBalance(balances, chain + ':' + v.vault_underlying_token.address, supply[i].output * price[i].output / 1e18) - }) - return balances -} - -async function ethereum_tvl(timestamp, block, chainBlocks) { - return getTVL('ethereum', block, 1) -} - -async function polygon_tvl(timestamp, block, chainBlocks) { - return getTVL('polygon', chainBlocks.polygon, 137) -} - -module.exports = { - methodology: `Users deposit into OptyFi vaults and receive vault shares. These vault shares have a price called pricePerShare. TVL is calculated as: Vault Token Supply * pricePerShare`, - ethereum: { tvl: ethereum_tvl }, - polygon: { tvl: polygon_tvl }, -}; diff --git a/projects/opulous/index.js b/projects/opulous/index.js deleted file mode 100644 index 677c89f7fd0..00000000000 --- a/projects/opulous/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { lookupApplications } = require("../helper/chain/algorand"); - -async function algorandStaking() { - - const poolIds = [843061415, 1127413236, 1020347200,929851093]; - let totalPoolAmount = 0; - - for (const poolId of poolIds) { - let response = await lookupApplications(poolId); - - for (const y of response.application.params["global-state"]) { - let decodedKey = Buffer.from(y.key, 'base64').toString('binary'); - if (decodedKey === "pool_size") { - // OPUL has 10 digits - totalPoolAmount += y.value.uint / 1e10; - } - } - } - - return { - 'opulous': totalPoolAmount - }; -} -const arbitrumTVL = async (api) => { - // getting the total supply of OVault tokens - const LPSupply = await api.call({ abi: 'uint256:LPSupply', target: '0xF27181a734BF6bd2bbbdFA8bdfcdef066759EdBa' }) - // convert OVault tokens to USDC using the LPToUsdc function - const TVL = await api.call({ abi: 'function LPToUsdc(uint256 LPNAmount) public view returns (uint256)', target: '0xF27181a734BF6bd2bbbdFA8bdfcdef066759EdBa' , params: LPSupply}) - // getting the USDC token address - const USDCToken = await api.call({ abi: 'address:usdcToken', target: '0xF27181a734BF6bd2bbbdFA8bdfcdef066759EdBa' }) - // adding the USDC TVL to the balances - api.add(USDCToken, TVL) -} - -module.exports = { - // // start: '2022-08-18', - methodology: `Counts the number of OPUL tokens locked in the staking pool.`, - algorand: { - tvl: () => ({}), - staking: algorandStaking - }, - arbitrum: { - tvl: () => ({}), - borrowed: arbitrumTVL, - } -}; - -// node test.js projects/opulous/index.js diff --git a/projects/opus/index.js b/projects/opus/index.js deleted file mode 100644 index 98d9ba69c41..00000000000 --- a/projects/opus/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require('../helper/chain/starknet') - -const tokensAndOwners = [ - // Gates - [ADDRESSES.starknet.ETH, "0x0315ce9c5d3e5772481181441369d8eea74303b9710a6c72e3fcbbdb83c0dab1"], - [ADDRESSES.starknet.STRK, "0x031a96fe18fe3fdab28822c82c81471f1802800723c8f3e209f1d9da53bc637d"], - [ADDRESSES.starknet.WBTC, "0x05bc1c8a78667fac3bf9617903dbf2c1bfe3937e1d37ada3d8b86bf70fb7926e"], - [ADDRESSES.starknet.WSTETH, "0x02d1e95661e7726022071c06a95cdae092595954096c373cde24a34bb3984cbf"], - [ADDRESSES.starknet.WSTETH_1, "0x03dc297a3788751d6d02acfea1b5dcc21a0eee1d34317a91aea2fbd49113ea58"], - [ADDRESSES.starknet.XSTRK, "0x04a3e7dffd8e74a706be9abe6474e07fbbcf41e1be71387514c4977d54dbc428"], - [ADDRESSES.starknet.SSTRK, "0x03b709f3ab9bc072a195b907fb2c27688723b6e4abb812a8941def819f929bd8"], - [ADDRESSES.starknet.EKUBO, "0x06d44c6172f6b68fda893348d33be58b69f0add83ed480d1192d19bc4188c8f6"], - // LORDS - ["0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49", "0x020c0fbc1f2a724a94ebe3575e54c4111fa3eaaf3dac938cfcbd96cc83317bbf"], - // tBTC - ["0x04daa17763b286d1e59b97c283c0b8c949994c361e426a28f743c67bdfe9a32f", "0x07b0b47cb98d8282b6c86d267cb575c81a50f603cd07bb8c1e692e77eacc4c26"], - // SolvBTC - ["0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68", "0x01f556ed83aa7b204301d1aeb290f9755b79fdb5b7d7a56854c81d3dd736c695"], - // LBTC - ["0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4", "0x0764d5947a816bd2f5b0a3262405508a40c4afd026aa50a1e24c8cb234630ac0"], - // enzoBTC - ["0x057a66754ba6c64c1705a007e8b5e7d17a88593234fb854a1e111f2bfce65450", "0x02b5029fe0f403f19d336128ba28c08c44d79782cd2514da624d77c3503b456f"], - // pumpBTC - ["0x061c68717c10da8adf6bd5cda6840510d6e70c62fcf96d25a57bfcf2932beca6", "0x052dcb7becae5735192e7cc811db8230609579140cf47e4e6ed7a5fea362ba4e"], - // uniBTC - ["0x023a312ece4a275e38c9fc169e3be7b5613a0cb55fe1bece4422b09a88434573", "0x01583087431138e16a49c70cb64d05d876f46b06178b200ff6c57e1da571719c"], - // xWBTC - ["0x06a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13", "0x02ad9fef1109565064334bf16632158c73ca6ae0bd8eedfaae652544e73e47e4"], - // xtBTC - ["0x043a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91", "0x0073348c89345735938f1ebc5b237f034bb63874e895311c5db0b29a15e9908a"], - // xLBTC - ["0x07dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0", "0x0616551ebe73c1ea97ad2d7c7c9575039cc456fea5c8529701a39cc9c0ad4805"], - // xsBTC - ["0x0580f3dc564a7b82f21d40d404b3842d490ae7205e6ac07b1b7af2b4a5183dc9", "0x06a5bac0cdaa7126e32dd478c86f84906f4a7ff597cbaa9b0d537312887f5a19"], - // Transmuters - [ADDRESSES.starknet.USDC, "0x0560149706f72ce4560a170c5aa72d20d188c314ddca5763f9189adfc45e2557"], - // Spiko US MMF - ["0x20ff2f6021ada9edbceaf31b96f9f67b746662a6e6b2bc9d30c0d3e290a71f6", "0x0560149706f72ce4560a170c5aa72d20d188c314ddca5763f9189adfc45e2557"], -] - -async function tvl(api) { - return await sumTokens({ api, tokensAndOwners: tokensAndOwners }); -} - -module.exports = { - methodology: 'Total value of collateral deposited by users into the smart contracts of Opus', - starknet: { - tvl, - }, -} diff --git a/projects/opx/index.js b/projects/opx/index.js deleted file mode 100644 index 92cda1ac29f..00000000000 --- a/projects/opx/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - optimism: { - tvl: gmxExports({ vault: '0xb94C36A74c8504Dea839C119aeaF2e615364253F', }) - }, -} \ No newline at end of file diff --git a/projects/opyn-convexity/index.js b/projects/opyn-convexity/index.js deleted file mode 100644 index 5ba3ab415b7..00000000000 --- a/projects/opyn-convexity/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const getNumberOfOptionsContractsAbi = "uint256:getNumberOfOptionsContracts"; -const optionsContractsAbi = "function optionsContracts(uint256) view returns (address)"; -const collateralAbi = "address:collateral" - -const factoriesAddresses = [ - "0xb529964F86fbf99a6aA67f72a27e59fA3fa4FEaC", - "0xcC5d905b9c2c8C9329Eb4e25dc086369D6C7777C" -] - -async function tvl(api) { - let contracts = await Promise.all( - factoriesAddresses.map(i => api.fetchList({ - target: i, - lengthAbi: getNumberOfOptionsContractsAbi, - itemAbi: optionsContractsAbi, - })) - ) - - contracts = contracts.flat() - const collaterals = await api.multiCall({ - abi: collateralAbi, - calls: contracts, - }) - - const tokensAndOwners = collaterals.map((t, i) => ([t, contracts[i]])) - return sumTokens2({ api, tokensAndOwners}) -} - -module.exports = { - ethereum: { - tvl - }, -}; \ No newline at end of file diff --git a/projects/opyn-gamma/gamma_avax.js b/projects/opyn-gamma/gamma_avax.js deleted file mode 100644 index a3c07443f35..00000000000 --- a/projects/opyn-gamma/gamma_avax.js +++ /dev/null @@ -1,7 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const marginPool = "0xCCF6629aEaB734E621Cc59EBb0297196774fDb9D"; -const wavax = ADDRESSES.avax.WAVAX.toLowerCase() - -module.exports = sumTokensExport({ owner: marginPool, tokens: [wavax]}) diff --git a/projects/opyn-gamma/gamma_ethereum.js b/projects/opyn-gamma/gamma_ethereum.js deleted file mode 100644 index 52b62ea06f9..00000000000 --- a/projects/opyn-gamma/gamma_ethereum.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const START_BLOCK = 11551118; -const whitelist = "0xa5ea18ac6865f315ff5dd9f1a7fb1d41a30a6779"; -const marginPool = "0x5934807cc0654d46755ebd2848840b616256c6ef"; - -function toAddress(str, skip = 0) { - return `0x${str.slice(64 - 40 + 2 + skip * 64, 64 + 2 + skip * 64)}`.toLowerCase(); -} - -module.exports = async function ethereumTvl(api) { - let balances = {}; - - if(!api.block || api.block >= START_BLOCK) { - const whitelistedCollaterals = await getLogs({ - target: whitelist, - topic: 'CollateralWhitelisted(address)', - api, - fromBlock: 11544457, - }) - - const tokens = whitelistedCollaterals.map(log => toAddress(log.topics[1])) - return sumTokens2({ tokens, owner: marginPool, api, }) - } - - return balances; -} \ No newline at end of file diff --git a/projects/opyn-gamma/gamma_polygon.js b/projects/opyn-gamma/gamma_polygon.js deleted file mode 100644 index 8ba14c5fce0..00000000000 --- a/projects/opyn-gamma/gamma_polygon.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const marginPool = "0x30ae5debc9edf60a23cd19494492b1ef37afa56d"; -const WETH = ADDRESSES.polygon.WETH_1; -const collateralAssets = [ADDRESSES.polygon.WMATIC_2, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.WBTC, WETH, ] - -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = sumTokensExport({ owner: marginPool, tokens: collateralAssets}) diff --git a/projects/opyn-gamma/index.js b/projects/opyn-gamma/index.js deleted file mode 100644 index 762f7964a78..00000000000 --- a/projects/opyn-gamma/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const avaxTvl = require('./gamma_avax'); -const ethereumTvl = require('./gamma_ethereum'); -const polygonTvl = require('./gamma_polygon'); - - -module.exports = { - ethereum: { - tvl: ethereumTvl - }, - avax:{ - tvl: avaxTvl - }, - polygon: { - tvl: polygonTvl - } -} - \ No newline at end of file diff --git a/projects/opyn-squeeth/index.js b/projects/opyn-squeeth/index.js deleted file mode 100644 index 95f7a759107..00000000000 --- a/projects/opyn-squeeth/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const START_BLOCK = 13982541; -const controller = "0x64187ae08781B09368e6253F9E94951243A493D5".toLowerCase(); -const ETH = ADDRESSES.null; -const WETH = ADDRESSES.ethereum.WETH.toLowerCase(); - -const uniPool = '0x82c427adfdf2d245ec51d8046b41c4ee87f0d29c'; - - -module.exports = { - ethereum: { - doublecounted: true, - tvl: async (api)=> { - let balances = {}; - const { block } = api - - if(!block || block >= START_BLOCK) { - - return sumTokens2({ api, tokensAndOwners: [ - [ETH, controller], - [WETH, uniPool], - ]}) - } - - return balances; - } - }, - hallmarks: [ - [1643053740, "Crab v1 launch"], - [1659055140, "Crab v2 launch"], - [1671221995, "Zen Bull launch"] - ] -}; \ No newline at end of file diff --git a/projects/ora-finance/index.js b/projects/ora-finance/index.js deleted file mode 100644 index c05f029b6d6..00000000000 --- a/projects/ora-finance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { unknownTombs } = require('../helper/unknownTokens') - -const oraTokenAddress = "0xCda8e67F3457Db7c8A62F7EaAdbaB74bfd29BeC8"; -const oshareTokenAddress = "0xdcefBd8f92683541e428DD53Cd31356f38d69CaA"; -const oshareRewardPoolAddress = "0xa18d290144C684349b1Cc4fC8501707cd7724f74"; -const boardroomAddress = "0xCF0c385aE8225EFF591bA4a7637cF688Bf012A16"; - -const OraLPs = [ - "0x1203f76D98c103DFDa350C0b7F7323475Ee24aE3", // oraAuroraLpAddress - "0x7939e155b222c804FCDd0d0297922BBEf6F64897", //oshareAuroraLpAddress -]; - -module.exports = unknownTombs({ - lps: OraLPs, - token: oraTokenAddress, - shares: [oshareTokenAddress], - rewardPool: [oshareRewardPoolAddress,], - masonry: [boardroomAddress], - chain: 'aurora', - useDefaultCoreAssets: true, -}) -module.exports.methodology = "Pool2 deposits consist of ORA/AURORA and OSHARE/AURORA LP tokens deposits while the staking TVL consists of the OSHARES tokens locked within the Boardroom." diff --git a/projects/oraclefreedollar/index.js b/projects/oraclefreedollar/index.js deleted file mode 100644 index 8d3eb1a6e0e..00000000000 --- a/projects/oraclefreedollar/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - bsc: { - factoryV1: '0xFe00054AF44E24f0B4bd49b1A2d2984C4264aabE', fromBlockV1: 37882077, - factoryV2: '0x70e318f5066597868a9026ecccC0e04D693d0fbD', fromBlockV2: 45094649, - }, -} -const USDTBridge = [ADDRESSES.bsc.USDT, "0xAEaF85C740C7a6ee94183E848d0e557cB7FbeA47"]; - -Object.keys(config).forEach(chain => { - const { factoryV1, factoryV2, fromBlockV1, fromBlockV2 } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokensAndOwners = [USDTBridge] - const logsV1 = await getLogs2({ api, factory: factoryV1, eventAbi: 'event PositionOpened (address indexed owner, address indexed position, address ofd, address collateral, uint256 price)', fromBlock: fromBlockV1 }) - const logsV2 = await getLogs2({ api, factory: factoryV2, eventAbi: 'event PositionOpened(address indexed owner, address indexed position, address original, address collateral)', fromBlock: fromBlockV2 }) - logsV1.concat(logsV2).forEach(log => tokensAndOwners.push([log.collateral, log.position])) - return api.sumTokens({ tokensAndOwners }) - } - } -}) diff --git a/projects/oracleswap/index.js b/projects/oracleswap/index.js deleted file mode 100644 index c167441c6c6..00000000000 --- a/projects/oracleswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking, stakings, stakingPricedLP } = require("../helper/staking.js"); - -const oracleFoundry = '0x5795377c85e0fdF6370fae1B74Fe03b930C4a892'; -const oracleToken = '0xd7565b16b65376e2ddb6c71e7971c7185a7ff3ff'; -const ORACLE_SGB_LP = '0x1987E504E70b9ACbAa4E042FDDE4ecB6CEaf5b77' - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xDcA8EfcDe7F6Cb36904ea204bb7FCC724889b55d) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - songbird: { - tvl: getUniTVL({ factory: '0xDcA8EfcDe7F6Cb36904ea204bb7FCC724889b55d', useDefaultCoreAssets: true }), - staking: stakingPricedLP(oracleFoundry, oracleToken, 'songbird', ORACLE_SGB_LP, 'songbird') - }, -}; // node test.js projects/oracleswap/index.js \ No newline at end of file diff --git a/projects/oraichain.js b/projects/oraichain.js deleted file mode 100644 index 0d83c222316..00000000000 --- a/projects/oraichain.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2 } = require("./helper/unwrapLPs") - -const oraichainToken = { - 'bsc': '0xa325ad6d9c92b55a3fc5ad7e412b1518f96441c0', - 'ethereum': '0x4c11249814f11b9346808179cf06e71ac328c1b5' -}; - -const lpToken = { - 'bsc': '0xF7697Db76FBf4Ba5D22c0C72AB986cf751FBa3aF', - 'ethereum': '0x9081b50bad8beefac48cc616694c26b027c559bb' -}; - -const stakingAddresses = { - 'bsc': [ - '0x12BC187A741B5fcBF34DE88Cb87527A29BEab750', - '0xB997800DDf3e46be4683d2d444868F1E632f79Ac', - '0xF33e0597183266e163895F99540420b8A13F8d95', - '0x2d1368d32d8027041c890b77af02c848dbe4288b', - '0x78850f0822c8da6a9d06031360f2b7ed1694105e' - ], - 'ethereum': [ - '0x18eb0132b516d5622f630DCFCaD4b17789372632', //LP - '0x51772eFd4b6d0b5e69C9e77b7B661Ea8D417A66F', //LP - '0xc187c9782364e3db55802f3a51ac887ca8d1b43a', - '0x8dcff4f1653f45cf418b0b3a5080a0fdcac577c8', - '0x289268e0b5f05e514834ea37aa9777ce077696a0', //LP - '0xb4d6bafed9c6451aeb15665982b55af5913f22cf', //LP - '0xdC398B05E6646764C0bF02ead1dE2ec192d64F7d' //USDT - ], -}; -async function tvl(api) { - const tokens = [lpToken[api.chain], oraichainToken[api.chain]] - if (api.chain === 'ethereum') tokens.push(ADDRESSES.ethereum.USDT) - return sumTokens2({ api, owners: stakingAddresses[api.chain], tokens, resolveLP: true, }) -} - -module.exports = { - ethereum: { - staking: tvl, - tvl: async () => ({}), - }, - bsc: { - staking: tvl, - }, -} \ No newline at end of file diff --git a/projects/oraidex-v3/index.js b/projects/oraidex-v3/index.js deleted file mode 100644 index 664b36bb8b2..00000000000 --- a/projects/oraidex-v3/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { sumTokens, sumCW20Tokens, queryContract } = require('../helper/chain/cosmos') -const { getUniqueAddresses } = require('../helper/utils') - -const AMM_V3_CONTRACT = "orai10s0c75gw5y5eftms5ncfknw6lzmx0dyhedn75uz793m8zwz4g8zq4d9x9a" - -const isNativeToken = denom => !denom.startsWith("orai1") - -async function tvl(api) { - const CHUNK_SIZE = 100 - const pools = [] - let hasMore = true - - while (hasMore) { - const startAfter = pools.length == 0 ? undefined : pools[pools.length - 1].pool_key - const res = await queryContract({ - chain: api.chain, - contract: AMM_V3_CONTRACT, - data: { pools: { limit: CHUNK_SIZE, startAfter } } - }) - - pools.push(...res) - hasMore = res.length === CHUNK_SIZE - } - - let cw20Tokens = pools.map(pool => [pool.pool_key.token_x, pool.pool_key.token_y]).flat().filter(token => !isNativeToken(token)) - cw20Tokens = getUniqueAddresses(cw20Tokens, true) - - await sumTokens({ owner: AMM_V3_CONTRACT, api, }) - return sumCW20Tokens({ api, tokens: cw20Tokens, owner: AMM_V3_CONTRACT }) -} - -module.exports = { - timetravel: false, - methodology: "Liquidity on pool V3", - orai: { tvl } -} \ No newline at end of file diff --git a/projects/oraidex/index.js b/projects/oraidex/index.js deleted file mode 100644 index d9dc64d9cc7..00000000000 --- a/projects/oraidex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getFactoryTvl } = require('../terraswap/factoryTvl') -const sdk = require('@defillama/sdk') -const factories = ["orai1hemdkz4xx9kukgrunxu3yw0nvpyxf34v82d2c8", 'orai167r4ut7avvgpp3rlzksz6vw5spmykluzagvmj3ht845fjschwugqjsqhst'] - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - orai: { - tvl: sdk.util.sumChainTvls(factories.map(getFactoryTvl)) - }, -} \ No newline at end of file diff --git a/projects/orange-finance/index.js b/projects/orange-finance/index.js deleted file mode 100644 index 320a53933de..00000000000 --- a/projects/orange-finance/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const ARBITRUM_VAULTS = [ - { address: "0x8b20087Bb0580bCB827d3ebDF06485aF86ea16cB", asset: ADDRESSES.arbitrum.WETH }, - { address: "0xa3899444a955Fb1DdDbd7Aea385771DB0a67fB12", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, - { address: "0x9338a4c3De7082E27802DCB6AC5A4502C93D1808", asset: ADDRESSES.arbitrum.USDC_CIRCLE } -]; - -const BERA_VAULTS = [ - { address: "0x2f852e3102357ffc2283a974d42bd4b4cae9b5aa", asset: ADDRESSES.berachain.WETH }, - { address: "0xf45747fde3586563e1fb9d50f815b70822176a46", asset: ADDRESSES.berachain.HONEY }, - { address: "0x4ea6efbecaabd7ba6e13f4847a518fa34729ac9f", asset: ADDRESSES.berachain.WBERA } -] - -async function arbitrumTvl(api) { - const totalAssets = await api.multiCall({ abi: "uint256:totalAssets", calls: ARBITRUM_VAULTS.map(v => v.address) }) - - ARBITRUM_VAULTS.forEach((v, i) => api.add(v.asset, totalAssets[i])) -} - -async function beraTvl(api) { - const totalAssets = await api.multiCall({ abi: "uint256:totalAssets", calls: BERA_VAULTS.map(v => v.address) }) - - BERA_VAULTS.forEach((v, i) => api.add(v.asset, totalAssets[i])) -} - -module.exports = { - doublecounted: true, - arbitrum: { - tvl: arbitrumTvl, - }, - berachain: { - tvl: beraTvl - }, - hallmarks: [ - [1682680200, "Orange Alpha Vault Launch"], //2023 Apr 28 - [1688385600, "Camelot Vault Launch"], //2023 Jul 3 - [1703462400, "Strategy Vault Launch"], //2023 Dec 25 - [1709204400, "LPDfi Vault Launch"], //2024 Feb 29 - ], -}; diff --git a/projects/orangex-cex/index.js b/projects/orangex-cex/index.js deleted file mode 100644 index d0cb2f44eb5..00000000000 --- a/projects/orangex-cex/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.orangex - }, - ethereum: { - owners: [ - "0xaefac73a5109c17f5c8ce3fefa58df605561fdcb", - "0xfe2967c2957dc00d46563b01591c9a5c8db08394", - "0xaefac73a5109c17f5c8ce3fefa58df605561fdcb", - "0xfe2967c2957dc00d46563b01591c9a5c8db08394", - ], - }, -}; - -module.exports = cexExports(config); \ No newline at end of file diff --git a/projects/oraprotocol/index.js b/projects/oraprotocol/index.js deleted file mode 100644 index 72f3df35ff4..00000000000 --- a/projects/oraprotocol/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const contracts = [ - "0xc0b2FdA4EDb0f7995651B05B179596b112aBE0Ff", - "0x0a7Df7BC7a01A4b6C9889d5994196C1600D4244a", - "0x5982241e50Cb4C42cb51D06e74A97EAaCa3a8CE2", - "0xDF03600C34cacE7496A0A8Ef102B4bCe718958a2", - "0x3e0598fee8a73d09c06b3de3e205ba7ff8edb004" -]; - - -module.exports = { - ethereum: { - tvl, staking, - } -}; - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:stakingTokenAddress', calls: contracts }) - return api.sumTokens({ tokensAndOwners2: [tokens, contracts] }) -} - -async function staking(api) { - - const contracts = [ - "0x07b022bd57e22c8c5abc577535cf25e483dae3df", - "0x4f5e12233ed7ca1699894174fcbd77c7ed60b03d", - ]; - const tokens = await api.multiCall({ abi: 'address:stakingTokenAddress', calls: contracts }) - return api.sumTokens({ tokensAndOwners2: [tokens, contracts] }) -} \ No newline at end of file diff --git a/projects/orbit/index.js b/projects/orbit/index.js deleted file mode 100644 index 8ff618a7eaa..00000000000 --- a/projects/orbit/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { toUSDTBalances } = require("../helper/balances"); -const { request, gql } = require("graphql-request"); - -async function tvlFromGraph() { - const graphUrl = - sdk.graph.modifyEndpoint('BRUJ3Y4Fpq4VuvoCAi4p9qv1SxZ6ghVtMK1Rg8igfxmi'); - const graphQuery = gql` - query { - positionManagerFactories(first: 1) { - protocolTVL - } - } - `; - - const res = await request(graphUrl, graphQuery); - const tvl = res.positionManagerFactories[0].protocolTVL; - return toUSDTBalances(tvl); -} - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: tvlFromGraph, - }, -}; diff --git a/projects/orbitalswap/index.js b/projects/orbitalswap/index.js deleted file mode 100644 index 85b3a09f5a3..00000000000 --- a/projects/orbitalswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking"); - -const MasterChefContract = "0xd67a0CE4B1484DBa8dB53349F9b26a3272dB04F5"; -const ORB = "0x42b98A2f73a282D731b0B8F4ACfB6cAF3565496B"; - - -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - methodology: `Uses factory(0x1A04Afe9778f95829017741bF46C9524B91433fB) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0x1A04Afe9778f95829017741bF46C9524B91433fB', useDefaultCoreAssets: true }), - staking: staking(MasterChefContract, ORB), - } -}; - - diff --git a/projects/orbitbridge/index.js b/projects/orbitbridge/index.js deleted file mode 100644 index fca20b00eea..00000000000 --- a/projects/orbitbridge/index.js +++ /dev/null @@ -1,113 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache') -const { sumTokensExport } = require('../helper/sumTokens') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { sumTokensExport: tonExport } = require('../helper/chain/ton') -const { nullAddress } = require('../helper/tokenMapping'); - -const ABI = { - wantLockedTotal: "uint256:wantLockedTotal", - farms: "function farms(address) view returns (address)" -} - -const vaults = { - bsc: '0x89c527764f03BCb7dC469707B23b79C1D7Beb780', - celo: '0x979cD0826C2bf62703Ef62221a4feA1f23da3777', - ethereum: '0x1bf68a9d1eaee7826b3593c20a0ca93293cb489a', - heco: '0x38C92A7C2B358e2F2b91723e5c4Fc7aa8b4d279F', - klaytn: '0x9abc3f6c11dbd83234d6e6b2c373dfc1893f648d', - polygon: '0x506DC4c6408813948470a06ef6e4a1DaF228dbd5', - meta: '0x292A00F3b99e3CB9b324EdbaA92258C3C61b55ab', - wemix: '0x445F863df0090f423A6D7005581e30d5841e4D6d', - silicon_zk: '0x5aAAcf28ECDd691b4a657684135d8848d38236Bb' -} - -const SILICON_RECOVERY = '0xac6b4b573df32f31e933c2c8a58d5e334690e0ee' - -// tokens on silicon bridged from ethereum -const SILICON_TOKENS = [ - ADDRESSES.null,// ETH - ADDRESSES.astarzk.DAI, // DAI - ADDRESSES.astarzk.USDC, // USDC - ADDRESSES.astarzk.USDT, // USDT - ADDRESSES.astarzk.WBTC // WBTC -] - -const farms = { - bsc: [ - ADDRESSES.null,// BNB - ADDRESSES.bsc.USDT,// USDT-B - ADDRESSES.bsc.BUSD,// BUSD - '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82',// CAKE - ], - ethereum: [ - ADDRESSES.null,// ETH - ADDRESSES.ethereum.USDT,// USDT - ADDRESSES.ethereum.DAI,// DAI - ADDRESSES.ethereum.USDC,// USDC - ADDRESSES.ethereum.WBTC,// WBTC - ] -} - -let tokenData - -async function tvl(api) { - const chain = api.chain - - if (chain === 'meta') return {} // rpc issues with meta - - const vault = vaults[chain] - let targetChain = chain - if (chain === 'ethereum') targetChain = 'eth' - if (chain === 'polygon') targetChain = 'matic' - if (chain === 'silicon_zk') targetChain = 'silicon' - - const tokenListURL = 'https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList' - tokenData = tokenData || getConfig('orbit-bridge', tokenListURL) - const data = await tokenData - - let tokenList = data.origins.filter(x => x.chain === targetChain && !x.is_nft).map(x => x.address) - tokenList.push(nullAddress) - await sumTokens2({ - api, - owner: vault, tokens: tokenList, blacklistedTokens: [ - '0x662b67d00a13faf93254714dd601f5ed49ef2f51' // ORC, blacklist project's own token - // reason for skipping, most of the tvl comes from this transaction which is about 25% of ORU supply on ETH - // https://etherscan.io/tx/0x0a556fcef2a867421ec3941251ad3c10ae1402a23ddd9ad4b1097b686ced89f7 - ] - }) - - if (farms[chain]) { - const calls = farms[chain] - const farmData = await api.multiCall({ target: vault, abi: ABI.farms, calls, }) - const farmBalance = await api.multiCall({ abi: ABI.wantLockedTotal, calls: farmData, }) - api.add(farms[chain], farmBalance) - } - - if (chain === 'silicon_zk') { - await sumTokens2({ - api, - owner: SILICON_RECOVERY, tokens: SILICON_TOKENS - }) - } -} - -module.exports = { - methodology: 'Tokens locked in Orbit Bridge contract are counted as TVL', - timetravel: false, - bsc: { tvl }, - celo: { tvl }, - heco: { tvl }, - ethereum: { tvl }, - klaytn: { tvl }, - polygon: { tvl }, - meta: { tvl }, - wemix: { tvl }, - silicon_zk: { tvl }, - ripple: { - tvl: sumTokensExport({ owner: 'rJTEBWu7u1NcJAiMQ9iEa1dbsuPyhTiW23' }) - }, - ton: { - tvl: tonExport({ owner: "EQDXbWI3jClPS510by25zTA8SUKMa4XSD2K7DbZb0jincPGw", tokens: [ADDRESSES.null], onlyWhitelistedTokens: true }), - }, -} \ No newline at end of file diff --git a/projects/orbiter-one/index.js b/projects/orbiter-one/index.js deleted file mode 100644 index 2aa7a99264b..00000000000 --- a/projects/orbiter-one/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -const moonbeamConfig = { - comptroller: "0x27DC3DAdBfb40ADc677A2D5ef192d40aD7c4c97D", - cether: "0xCc444ca6bba3764Fc55BeEFe4FFA27435cF6c259", -} - -module.exports = { - moonbeam: compoundExports2(moonbeamConfig) -} \ No newline at end of file diff --git a/projects/orbitlending-io/index.js b/projects/orbitlending-io/index.js deleted file mode 100644 index a4d550c3cc7..00000000000 --- a/projects/orbitlending-io/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); -const { mergeExports } = require('../helper/utils'); - -module.exports = mergeExports([ - compoundExports2({ - comptroller: '0x1E18C3cb491D908241D0db14b081B51be7B6e652', - cether: ['0xf9b3b455f5d900f62bc1792a6ca6e1d47b989389', '0x0872b71efc37cb8dde22b2118de3d800427fdba0'], - blacklistedTokens: ['0xf92996ddc677a8dcb032ac5fe62bbf00f92ae2ec'] - }), - compoundExports2({ - comptroller: '0x273683CA19D9CF827628EE216E4a9604EfB077A3', - cether: ['0x795dcd51eac6eb3123b7a4a1f906992eaa54cb0e'] - }), - compoundExports2({ - comptroller: '0xe9266ae95bB637A7Ad598CB0390d44262130F433', - cether: ['0xafabd582e82042f4a8574f75c36409abea916ac5'] - }), - compoundExports2({ - comptroller: '0xfFF8Fc176697D04607cF4e23E91c65aeD1c3d3F5', - cether: ['0x530a8d3fdf61112f8a879d753fe02e9e37ec36aa'] - }), - ].map(t=>({blast:t}))) diff --git a/projects/orbs/index.js b/projects/orbs/index.js deleted file mode 100644 index 924664ef4f2..00000000000 --- a/projects/orbs/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking'); - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking( - '0x01d59af68e2dcb44e04c50e05f62e7043f2656c3', - '0xff56Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA' - ), - }, -}; diff --git a/projects/orby-network/index.js b/projects/orby-network/index.js deleted file mode 100644 index af444e90ec2..00000000000 --- a/projects/orby-network/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getLiquityTvl } = require("../helper/liquity"); - -module.exports = { - cronos: { - tvl: getLiquityTvl('0x7a47cf15a1fcbad09c66077d1d021430eed7ac65', { collateralToken: '0x7a7c9db510aB29A2FC362a4c34260BEcB5cE3446' }), - } -}; diff --git a/projects/orca-kujira/index.js b/projects/orca-kujira/index.js deleted file mode 100644 index c0f88b5710d..00000000000 --- a/projects/orca-kujira/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { sumTokens } = require("../helper/chain/cosmos"); -const { getConfig } = require("../helper/cache"); -const { queryContract, queryV1Beta1 } = require("../helper/chain/cosmos"); - -async function tvl(api) { - const contracts = await getConfig( - "kujira/contracts", - "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json" - ); - const orcaContracts = contracts["kaiyo-1"].orca; - for (const contract of orcaContracts) { - const denom = contract.config.bid_denom; - const { balance } = await queryV1Beta1({ - chain: "kujira", - url: `/bank/v1beta1/balances/${ - contract.address - }/by_denom?denom=${encodeURIComponent(denom)}`, - }); - const vault = denom.match(/factory\/([a-z0-9]+)\/urcpt/)?.at(1); - if (vault) { - const { denom } = await queryContract({ - contract: vault, - chain: "kujira", - data: { config: {} }, - }); - const { deposit_redemption_ratio } = await queryContract({ - contract: vault, - chain: "kujira", - data: { status: {} }, - }); - - api.add(denom, balance.amount * deposit_redemption_ratio); - } else { - api.add(denom, balance.amount); - } - } - return api.getBalances(); -} - -module.exports = { - hallmarks: [ - [1673740800, "TVL separated into products"] - ], - kujira: { - tvl, - }, -} diff --git a/projects/orca/index.js b/projects/orca/index.js deleted file mode 100644 index 6c7eba230e3..00000000000 --- a/projects/orca/index.js +++ /dev/null @@ -1,244 +0,0 @@ -const { getProvider, sumTokens2, exportDexTVL, } = require('../helper/solana') -const { Program, AnchorProvider } = require("@project-serum/anchor"); -const sdk = require('@defillama/sdk') -const { Connection, PublicKey } = require('@solana/web3.js') - -// const eclipseRpc = 'https://eclipse.helius-rpc.com' -const eclipseRpc = 'https://mainnetbeta-rpc.eclipse.xyz' - -async function eclipseTvl (api) { - const connection = new Connection(eclipseRpc) - const provider = new AnchorProvider(connection, getProvider(api.chain).wallet) - const programId = new PublicKey('whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc') - const program = new Program(whirpoolIDL, programId, provider) - - const rawAccounts = await connection.getProgramAccounts(programId, { - filters: [{ dataSize: 653 }], - }) - - const whirlpools = rawAccounts.map(({ account }) => - program.account.whirlpool.coder.accounts.decode('whirlpool', account.data) - ) - - const tokenAccounts = whirlpools.flatMap(({ tokenVaultA, tokenVaultB }) => [tokenVaultA, tokenVaultB]) - return sumTokens2({ tokenAccounts, api }) -} - -async function tvl(api) { - const provider = getProvider(api.chain) - const programId = 'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc' - const program = new Program(whirpoolIDL, programId, provider) - const whirlpools = await program.account.whirlpool.all() - const tokenAccounts = whirlpools.map(({ account }) => [account.tokenVaultA, account.tokenVaultB]).flat() - return sumTokens2({ tokenAccounts, api, }) -} - -/* async function orcaPoolTvlViaConfig() { - const tokenAccounts = [] - const v1ProgramId = 'DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1' - const { pools } = await getConfig('orca/pools', 'https://api.orca.so/configs') - Object.values(pools).forEach(i => { - tokenAccounts.push(i.tokenAccountA) - tokenAccounts.push(i.tokenAccountB) - }) - return sumTokens2({ tokenAccounts, blacklistedTokens, }) -} */ - -const orcaV1Tvl = exportDexTVL('DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1') -const orcaV2Tvl = exportDexTVL('9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP') - -module.exports = { - timetravel: false, - solana: { tvl: sdk.util.sumChainTvls([orcaV1Tvl, orcaV2Tvl, tvl]) }, - eclipse: { tvl: eclipseTvl }, - hallmarks: [ - [1628565707, "Token+LM launch"], - [1667865600, "FTX collapse"] - ] -}; - -const whirpoolIDL = { - version: '0.2.0', - name: 'whirlpool', - instructions: [], - accounts: [ - { - name: 'whirlpoolsConfig', - type: { - kind: 'struct', - fields: [ - { - name: 'feeAuthority', - type: 'publicKey' - }, - { - name: 'collectProtocolFeesAuthority', - type: 'publicKey' - }, - { - name: 'rewardEmissionsSuperAuthority', - type: 'publicKey' - }, - { - name: 'defaultProtocolFeeRate', - type: 'u16' - } - ] - } - }, - { - name: 'whirlpool', - type: { - kind: 'struct', - fields: [ - { - name: 'whirlpoolsConfig', - type: 'publicKey' - }, - { - name: 'whirlpoolBump', - type: { - array: [ - 'u8', - 1 - ] - } - }, - { - name: 'tickSpacing', - type: 'u16' - }, - { - name: 'tickSpacingSeed', - type: { - array: [ - 'u8', - 2 - ] - } - }, - { - name: 'feeRate', - type: 'u16' - }, - { - name: 'protocolFeeRate', - type: 'u16' - }, - { - name: 'liquidity', - type: 'u128' - }, - { - name: 'sqrtPrice', - type: 'u128' - }, - { - name: 'tickCurrentIndex', - type: 'i32' - }, - { - name: 'protocolFeeOwedA', - type: 'u64' - }, - { - name: 'protocolFeeOwedB', - type: 'u64' - }, - { - name: 'tokenMintA', - type: 'publicKey' - }, - { - name: 'tokenVaultA', - type: 'publicKey' - }, - { - name: 'feeGrowthGlobalA', - type: 'u128' - }, - { - name: 'tokenMintB', - type: 'publicKey' - }, - { - name: 'tokenVaultB', - type: 'publicKey' - }, - { - name: 'feeGrowthGlobalB', - type: 'u128' - }, - { - name: 'rewardLastUpdatedTimestamp', - type: 'u64' - }, - { - name: 'rewardInfos', - type: { - array: [ - { - defined: 'WhirlpoolRewardInfo' - }, - 3 - ] - } - } - ] - } - } - ], - types: [ - { - name: 'WhirlpoolRewardInfo', - docs: [ - 'Stores the state relevant for tracking liquidity mining rewards at the `Whirlpool` level.', - 'These values are used in conjunction with `PositionRewardInfo`, `Tick.reward_growths_outside`,', - 'and `Whirlpool.reward_last_updated_timestamp` to determine how many rewards are earned by open', - 'positions.' - ], - type: { - kind: 'struct', - fields: [ - { - name: 'mint', - docs: [ - 'Reward token mint.' - ], - type: 'publicKey' - }, - { - name: 'vault', - docs: [ - 'Reward vault token account.' - ], - type: 'publicKey' - }, - { - name: 'authority', - docs: [ - 'Authority account that has permission to initialize the reward and set emissions.' - ], - type: 'publicKey' - }, - { - name: 'emissionsPerSecondX64', - docs: [ - 'Q64.64 number that indicates how many tokens per second are earned per unit of liquidity.' - ], - type: 'u128' - }, - { - name: 'growthGlobalX64', - docs: [ - 'Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward', - 'emissions were turned on.' - ], - type: 'u128' - } - ] - } - } - ], - errors: [] -} diff --git a/projects/orcadao/abi.json b/projects/orcadao/abi.json deleted file mode 100644 index f6ff36d195e..00000000000 --- a/projects/orcadao/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalDebt": "uint256:totalDebt" -} \ No newline at end of file diff --git a/projects/orcadao/index.js b/projects/orcadao/index.js deleted file mode 100644 index 58a98b746ac..00000000000 --- a/projects/orcadao/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { pool2 } = require("../helper/pool2"); -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const orca = "0x8b1d98a91f853218ddbb066f20b8c63e782e2430"; -const podLeader = "0x111E1E97435b57467E79d4930acc4B7EB3d478ad"; -const pool2LPs = [ - "0x1A9Bd67c82C0e8E47C3ad2FA772FCb9B7A831A37", - "0xeD7a2B4054757Cfdb632Af15Ad528624F0fFf3B0", - "0x73e6CB72a79dEa7ed75EF5eD6f8cFf86C9128eF5" -] - -// [[Collateral, Bank]] -const banksAndCollateral = [ - ["0x330cc45c8f60fef7f9d271a7512542b3d201a48d", "0x64D56b4B6C844015EC07e52A1267D5d5d4F4E5BD"], // YAK BENQI WBTC - ["0x9669fe1ea0d8883661289461b90a10b71ae400ee", "0xEa03cDCdD912522400d21Ee89A5bC46Bffe11AC3"], // YAK BENQI DAI - ["0x07b0e11d80ccf75cb390c9be6c27f329c119095a", "0xAf8d16500A58b868C34be9106d674b820d67C979"], // YAK BENQI USDT - [ADDRESSES.avax.WAVAX, "0xC029713E92383426C9b387b124C0BF6271d08b80"], // AVAX - ["0x8b414448de8b609e96bd63dcf2a8adbd5ddf7fdd", "0x2b583646EC93245562Fd08A3b5f44Aa55417766B"], // YAK BENQI AVAX - ["0x0eac97a78a93b75549d49145df41dbe9cd520874", "0xd694F97dd5874fA4e712FDFB781231D93642D29b"], // YAK BENQI USDC - ["0x957ca4a4aa7cdc866cf430bb140753f04e273bc0", "0x8aee038726715d78C49dFb2f12e76DE70C2F48eC"], // YAK AAVE AVAX - ["0x4084f32a91f4d8636ca08386efe70c6e302f1d84", "0x22a86D96b26308ba1971F8080AAD965884061076"], // YAK BENQI LINK - ["0x7d2d076000611e44740d636843384412399e31b9", "0xc59b6794e5DeE450d264669f34e7849A90083774"], // YAK BENQI WETH - ["0xb634a71a54d3382ff6896eb22244b4a4e54c0a82", "0x8b61488Ca2D727826c7Afe4eDbF810159F17D398"], // YAK AAVE WETH - ["0x3a91a592a06390ca7884c4d9dd4cba2b4b7f36d1", "0xa1A34E32c24911daA45e338dB9D785c1b323F280"], // YAK JOE - ["0x0f7f48d4b66bf5a53d4f21fa6ffca45f70cef770", "0x18419976Ba05dd9cE44544B8d91590704aFA4a29"], // YAK AAVE WBTC - ["0xbf5bffbf7d94d3b29abe6eb20089b8a9e3d229f7", "0xC09caDDA753c54292BeB1D10429bD175556b8b5E"], // YAK QI - [ADDRESSES.avax.WETH_e, "0x4805D6563B36a02C5012c11d6e15552f50066d58"], // WETH - [ADDRESSES.avax.WBTC_e, "0x1eA60d781376C06693dFB21d7e5951cAEc13F7E4"], // WBTC -] - -async function tvl(api) { - return api.sumTokens({ tokensAndOwners: banksAndCollateral }) -} - -async function borrowed(api) { - const debt = await api.multiCall({ - calls: banksAndCollateral.map(p => p[1]), - abi: "uint256:totalDebt", - }) - api.add(ADDRESSES.avax.DAI, debt) -} - -const treasuryContract = "0x10131d4f3193a59A46d3ab57D765f2604e77B4E3"; -const usdc = ADDRESSES.avax.USDC_e -const ocraAvaiPGL = "0x1A9Bd67c82C0e8E47C3ad2FA772FCb9B7A831A37"; -const orcaWavaxPGL = "0x73e6CB72a79dEa7ed75EF5eD6f8cFf86C9128eF5"; -const avaiUsdc = "0xeD7a2B4054757Cfdb632Af15Ad528624F0fFf3B0"; -async function treasury(api) { - return sumTokens2({ - api, owner: treasuryContract, tokens: [ - usdc, - orca, - ocraAvaiPGL, - orcaWavaxPGL, - avaiUsdc, - ], resolveLP: true, - }) -} - -module.exports = { - avax: { - methodology: "Tokens locked in as collateral is counted as TVL", - tvl, - borrowed, - pool2: pool2(podLeader, pool2LPs, "avax", addr => `avax:${addr}`), - treasury, - staking: staking(podLeader, orca) - } -} \ No newline at end of file diff --git a/projects/orcfax/index.js b/projects/orcfax/index.js deleted file mode 100644 index 5d304cebb92..00000000000 --- a/projects/orcfax/index.js +++ /dev/null @@ -1,192 +0,0 @@ -const axios = require('axios') -const { getTxsMetadata, assetsAddresses, getAssets } = require('../helper/chain/cardano/blockfrost') - - -// Modified /helper/chain/cardano/blockfrost getAddressUTXOs to limit to 1 page of UTXOs -const axiosObj = axios.create({ - baseURL: 'https://cardano-mainnet.blockfrost.io/api/v0', - headers: { - 'project_id': 'mai' + 'nnetcxT8VaeCgVMzMTSe' + 'zZijWlVkyh6XytpS', - 'Content-Type': 'application/json' - }, - timeout: 300000, -}) - -async function getAddressesUTXOs(address) { - const utxos = [] - let page = 1 - let response - response = await axiosObj.get(`addresses/${address}/utxos?page=1`) - response = response.data - utxos.push(...response) - return utxos -} - -const FACTtokenAssetID = "a3931691f5c4e65d01c429e473d0dd24c51afdb6daf88e632a6c1e516f7263666178746f6b656e"; - -// 100 Orcfax Validator licenses -const validatorLicenseAssetIDs = [ - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303031", // Validator License #001 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303032", // Validator License #002 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303033", // Validator License #003 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303034", // Validator License #004 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303035", // Validator License #005 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303036", // Validator License #006 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303037", // Validator License #007 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303038", // Validator License #008 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303039", // Validator License #009 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303130", // Validator License #010 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303131", // Validator License #011 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303132", // Validator License #012 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303133", // Validator License #013 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303134", // Validator License #014 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303135", // Validator License #015 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303136", // Validator License #016 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303137", // Validator License #017 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303138", // Validator License #018 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303139", // Validator License #019 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303230", // Validator License #020 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303231", // Validator License #021 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303232", // Validator License #022 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303233", // Validator License #023 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303234", // Validator License #024 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303235", // Validator License #025 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303236", // Validator License #026 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303237", // Validator License #027 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303238", // Validator License #028 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303239", // Validator License #029 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303330", // Validator License #030 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303331", // Validator License #031 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303332", // Validator License #032 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303333", // Validator License #033 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303334", // Validator License #034 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303335", // Validator License #035 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303336", // Validator License #036 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303337", // Validator License #037 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303338", // Validator License #038 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303339", // Validator License #039 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303430", // Validator License #040 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303431", // Validator License #041 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303432", // Validator License #042 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303433", // Validator License #043 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303434", // Validator License #044 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303435", // Validator License #045 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303436", // Validator License #046 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303437", // Validator License #047 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303438", // Validator License #048 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303439", // Validator License #049 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303530", // Validator License #050 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303531", // Validator License #051 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303532", // Validator License #052 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303533", // Validator License #053 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303534", // Validator License #054 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303535", // Validator License #055 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303536", // Validator License #056 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303537", // Validator License #057 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303538", // Validator License #058 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303539", // Validator License #059 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303630", // Validator License #060 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303631", // Validator License #061 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303632", // Validator License #062 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303633", // Validator License #063 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303634", // Validator License #064 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303635", // Validator License #065 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303636", // Validator License #066 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303637", // Validator License #067 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303638", // Validator License #068 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303639", // Validator License #069 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303730", // Validator License #070 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303731", // Validator License #071 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303732", // Validator License #072 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303733", // Validator License #073 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303734", // Validator License #074 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303735", // Validator License #075 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303736", // Validator License #076 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303737", // Validator License #077 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303738", // Validator License #078 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303739", // Validator License #079 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303830", // Validator License #080 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303831", // Validator License #081 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303832", // Validator License #082 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303833", // Validator License #083 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303834", // Validator License #084 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303835", // Validator License #085 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303836", // Validator License #086 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303837", // Validator License #087 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303838", // Validator License #088 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303839", // Validator License #089 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303930", // Validator License #090 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303931", // Validator License #091 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303932", // Validator License #092 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303933", // Validator License #093 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303934", // Validator License #094 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303935", // Validator License #095 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303936", // Validator License #096 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303937", // Validator License #097 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303938", // Validator License #098 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023303939", // Validator License #099 - "0c6f22bfabcb055927ca3235eac387945b6017f15223d9365e6e4e43000de14056616c696461746f72204c6963656e73652023313030", // Validator License #100 -]; - - -async function getStakedStatus(assetID) { - // Get the address holding the validator NFT - const address = await assetsAddresses(assetID); - - // Check if wallet holds required amount of FACT (500,000 to be considered staked) - const assets = await getAssets(address[0].address); - const FACTamount = assets.find(item => item.unit === FACTtokenAssetID); - - if (!FACTamount || BigInt(FACTamount.quantity) < 500000000000) { - return 0; // Either no FACT tokens held or not enough FACT tokens held to be considered staked - } - - // Get the UTXOs of the address holding the validator NFT - const addressUTXOs = await getAddressesUTXOs(address[0].address); - - // Get the tx hash of the UTXO holding the validator NFT - for (const UTXO of addressUTXOs) { - for (const asset of UTXO.amount) { - if (validatorLicenseAssetIDs.includes(asset.unit)) { - // Get tx metadata to ensure validator NFT is aliased (staked) - const txMetadata = await getTxsMetadata(UTXO.tx_hash) - - if (txMetadata[0]?.label === '674') { - return 500000; - } else { - return 0; - } - } - } - } - return 0; -} - -async function getTotalValueStaked() { - // Run all getStakedStatus calls in parallel - const results = await Promise.all( - validatorLicenseAssetIDs.map(async (validatorLicenseAssetID, index) => { - return getStakedStatus(validatorLicenseAssetID); - }) - ); - - // Sum all results - const stakedFACT = results.reduce((sum, value) => sum + value, 0); - - return stakedFACT; -} - - -module.exports = { - methodology: 'TVL is calculated by adding 500,000 FACT for each wallet that posseses a Orcfax Validator License, has aliased their wallet with a transaction containing the 674 metadata label, and possesses at least 500,000 tokens.', - timetravel: false, - cardano: { - tvl: () => 0, - staking: async () => { - const data = await getTotalValueStaked() - return { - orcfax: data - } - } - }, -}; diff --git a/projects/orchai-lending/index.js b/projects/orchai-lending/index.js deleted file mode 100644 index f77bbd2709c..00000000000 --- a/projects/orchai-lending/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { queryContract, } = require("../helper/chain/cosmos"); - -async function oraiTVL(api) { - let tokensDelegated = await queryContract({ - contract: 'orai1ez359uvv5p7l2ssgadzjk2pfuune9rrhu72ehwdsu4h2qhqf9jlsxw7e0f', - chain: "orai", - data: { money_market_tvl: {} }, - }); - - for (let item of tokensDelegated) { - api.add(item.token.replace('orai:', ''), item.amount) - } -} - -module.exports = { - timetravel: false, - methodology: "Total supply in lending pools, not counting borrowed amount", - orai: { - tvl: oraiTVL, - }, -} \ No newline at end of file diff --git a/projects/orchai/index.js b/projects/orchai/index.js deleted file mode 100644 index ed4a02fa65d..00000000000 --- a/projects/orchai/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { queryContract } = require("../helper/chain/cosmos"); - -const addresses = { - orai: { - tvlContract: - "orai1ez359uvv5p7l2ssgadzjk2pfuune9rrhu72ehwdsu4h2qhqf9jlsxw7e0f", - }, -}; - -// Orai -async function oraiTVL() { - let tokensDelegated = await queryContract({ - contract: addresses.orai.tvlContract, - chain: "orai", - data: { liquid_stake_tvl: {} }, - }); - - let balances = {}; - for (let item of tokensDelegated) { - balances[`${item.token}`] = item.amount; - } - - return balances; -} - -module.exports = { - timetravel: false, - methodology: "Staked tokens are counted as TVL", - orai: { - tvl: oraiTVL, - }, -}; \ No newline at end of file diff --git a/projects/orcus/abi.js b/projects/orcus/abi.js deleted file mode 100644 index 3670f4b6cc4..00000000000 --- a/projects/orcus/abi.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - lpToken: "function lpToken(uint256) view returns (address)", -} \ No newline at end of file diff --git a/projects/orcus/index.js b/projects/orcus/index.js deleted file mode 100644 index f00d7bd7c8f..00000000000 --- a/projects/orcus/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require('../helper/unwrapLPs') -const { getTokenPrices } = require('../helper/unknownTokens') -const { createIncrementArray } = require('../helper/utils') -const masterChefABI = require('../helper/abis/masterchef.json') -const abi = require('./abi') -const sdk = require('@defillama/sdk') - -const chain = 'astar' -const MASTER_CHEF = '0xfa1Cfa75bFae8303A9Fe8aF711AacD59015eE6d4' -const USDC = ADDRESSES.moonbeam.USDC -const ibUSDC = ADDRESSES.astar.lUSDC -const ORU = '0xCdB32eEd99AA19D39e5d6EC45ba74dC4afeC549F' -const STAKE_ADDRESS = '0x243e038685209B9B68e0521bD5838C6C937d666A' -const BANK_SAFE = '0xd89dEa2daC8Fb73F4107C2cbeA5Eb36dab511F64' - -let balanceResolve; - -async function getTVL(chainBlocks) { - const balances = {} - const pool2Balances = {} - const stakeBalances = {} - const block = chainBlocks[chain] - - // resolve masterchef - const poolLength = (await sdk.api.abi.call({ abi: masterChefABI.poolLength, target: MASTER_CHEF, block, chain, })).output - let pools = (await sdk.api.abi.multiCall({ target: MASTER_CHEF, abi: abi.lpToken, block, chain, calls: createIncrementArray(poolLength).map(i => ({ params: [i] })) })).output.map(p => p.output.toLowerCase()) - const tokensAndOwners = pools.map(p => [p, MASTER_CHEF]) - await sumTokens(pool2Balances, tokensAndOwners, block, chain) - const { - updateBalances - } = await getTokenPrices({ block, chain, lps: pools, - useDefaultCoreAssets: true, }) - await updateBalances(pool2Balances) - - - // resolve pool2 - await sumTokens(stakeBalances, [[ORU, STAKE_ADDRESS]], block, chain) - await updateBalances(stakeBalances) - - - // resolve bank - await sumTokens(balances, [[USDC, BANK_SAFE], [ibUSDC, BANK_SAFE]], block, chain) - await updateBalances(balances) - - return { - tvl: balances, - pool2: pool2Balances, - staking: stakeBalances, - } -} - - -async function tvl(ts, _block, chainBlocks) { - if (!balanceResolve) balanceResolve = getTVL(chainBlocks) - return (await balanceResolve).tvl -} - -async function pool2(ts, _block, chainBlocks) { - if (!balanceResolve) balanceResolve = getTVL(chainBlocks) - return (await balanceResolve).pool2 -} - -async function staking(ts, _block, chainBlocks) { - if (!balanceResolve) balanceResolve = getTVL(chainBlocks) - return (await balanceResolve).staking -} - -module.exports = { - astar: { - tvl, - staking, - pool2, - } -} \ No newline at end of file diff --git a/projects/orderly-network/index.js b/projects/orderly-network/index.js deleted file mode 100644 index f9b7141577b..00000000000 --- a/projects/orderly-network/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { call, view_account, addTokenBalances, sumSingleBalance } = require('../helper/chain/near'); -const { sumTokens2: sumTokensEvm, nullAddress } = require('../helper/unwrapLPs'); -const { sumTokens2 } = require('../helper/solana'); -const { getConfig } = require('../helper/cache'); - -const ASSET_MANAGER_CONTRACT = 'asset-manager.orderly-network.near'; -const GET_LISTED_TOKENS_METHOD = 'get_listed_tokens'; -const FT_NEAR = 'wrap.near'; - -const OWNER_MAP = { - 'ethereum': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'optimism': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'bsc': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'polygon': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'arbitrum': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'avax': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'base': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'mantle': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'sei': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'sonic': '0x816f722424B49Cf1275cc86DA9840Fbd5a6167e9', - 'sty': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'abstract': '0xE80F2396A266e898FBbD251b89CFE65B3e41fD18', - 'morph': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'mode': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'berachain': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'plume': '0x816f722424b49cf1275cc86da9840fbd5a6167e9', - 'solana': '2AoLiH5kVBG2ot1qKoh4ro8F95KQb7HEBbJmkxrwYBec', -} - -async function fetchTokenData(api) { - const chainId = api.chain === 'solana' ? '900900900' : api.chainId + ''; // Ensure chainId is a string - - const { data: { rows } } = await getConfig('orderly-network/token-data', 'https://api.orderly.org/v1/public/token'); - return rows.filter(token => token.is_collateral).map(i => { - const chainInfo = i.chain_details.find(chain => chain.chain_id === chainId); - if (!chainInfo) return null; - return chainInfo.contract_address === '' ? nullAddress : chainInfo.contract_address - }).filter(i => i) -} - -async function tvlNear() { - let ftTokens = (await call(ASSET_MANAGER_CONTRACT, GET_LISTED_TOKENS_METHOD, {})).filter(address => address.includes('.')); - - // NOTE: balances for FT tokens - let balances = await addTokenBalances(ftTokens, ASSET_MANAGER_CONTRACT); - - // NOTE: add near balance for tokens - const asset_manager_contract_state = await view_account(ASSET_MANAGER_CONTRACT); - sumSingleBalance(balances, FT_NEAR, asset_manager_contract_state['amount']); - - return balances; -} - -async function tvl(api) { - return sumTokensEvm({ owner: OWNER_MAP[api.chain], tokens: await fetchTokenData(api), api, }) -} - -module.exports = { - timetravel: false, - near: { tvl: tvlNear }, - methodology: 'All the tokens deposited into Orderly Network by chain' -}; - -Object.keys(OWNER_MAP).forEach(chainName => { - module.exports[chainName] = { tvl }; -}); - -module.exports.solana = { - tvl: async (api) => { - return sumTokens2({ owner: OWNER_MAP.solana, tokens: await fetchTokenData(api) }); - } -}; diff --git a/projects/orderly/index.js b/projects/orderly/index.js deleted file mode 100644 index 633193e12ed..00000000000 --- a/projects/orderly/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xe07eA0436100918F157DF35D01dCE5c11b16D1F1", - "0x91493a61ab83b62943E6dCAa5475Dd330704Cc84", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/oreoswap/index.js b/projects/oreoswap/index.js deleted file mode 100644 index 634dfcd861b..00000000000 --- a/projects/oreoswap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, staking } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') -const uniTvl = getUniTVL({ factory: '0x20fAfD2B0Ba599416D75Eb54f48cda9812964f46', useDefaultCoreAssets: true }) -const masterchef = '0xa481384653c484901b301634086c8625e550bbec' -const masterchefOld = '0xeb66b69d1cc6ef04575a11d4b0a6427b1cdacc45' -const oreo = '0x319e222De462ac959BAf2aEc848697AeC2bbD770' -const weth = ADDRESSES.arbitrum.WETH - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: sdk.util.sumChainTvls([uniTvl, staking({ - owners: [masterchefOld, masterchef], - tokens: [weth], - })]), - staking: staking({ - owners: [masterchefOld, masterchef], - tokens: [oreo], - }) - } -}; diff --git a/projects/organic-growth/index.js b/projects/organic-growth/index.js deleted file mode 100644 index 87a7085a917..00000000000 --- a/projects/organic-growth/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const logs = await getLogs2({ - api, - factory: '0x9767E409259E314F3C69fe1E7cA0D3161Bba4F5a', - eventAbi: 'event PairCreated(address indexed token, address indexed weth, address pair)', - fromBlock: 308542, - }) - - const wethBalances = await api.multiCall({ abi: 'erc20:balanceOf', calls: logs.map(i => ({ target: i.weth, params: i.pair })) }) - const tokens = logs.map(i => i.weth) - api.add(tokens, wethBalances) - api.add(tokens, wethBalances) // second time to add equivalent token value - return sumTokens2({ api, }) -} - -module.exports = { - misrepresentedTokens: true, - etlk: { tvl } -} \ No newline at end of file diff --git a/projects/origami/index.js b/projects/origami/index.js deleted file mode 100644 index b89f24c634f..00000000000 --- a/projects/origami/index.js +++ /dev/null @@ -1,154 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') - -const GRAPH_URLS = { - ethereum: sdk.graph.modifyEndpoint('https://subgraph.satsuma-prod.com/a912521dd162/templedao/origami-mainnet/api'), // ethereum - arbitrum: sdk.graph.modifyEndpoint('https://subgraph.satsuma-prod.com/a912521dd162/templedao/origami-arbitrum/api'), // arbitrum - berachain: sdk.graph.modifyEndpoint('https://subgraph.satsuma-prod.com/a912521dd162/templedao/origami-berachain/api'), // berachain -} - -module.exports = { - doublecounted: true, -} - -Object.keys(GRAPH_URLS).forEach(chain => { - module.exports[chain] = { - tvl, - borrowed - } -}) - -function vaultsOfKind(investmentVaults, vaultKind) { - return investmentVaults.filter(vault => !!vault.vaultKinds.find(v => v === vaultKind)).map(v => v.id) -} - -async function processLeveragedVaults(api, vaults) { - const [levReserveTokens, assetsAndLiabilities] = await Promise.all([ - api.multiCall({ calls: vaults, abi: 'address:reserveToken', permitFailure: true }), - api.multiCall({ abi: 'function assetsAndLiabilities() external view returns (uint256 assets,uint256 liabilities,uint256 ratio)', calls: vaults, permitFailure: true }) - ]) - - vaults.forEach((_vault, i) => { - const levReserveToken = levReserveTokens[i] - const assetsAndLiability = assetsAndLiabilities[i] - if(!levReserveToken || !assetsAndLiability) return - const levBal = assetsAndLiability.assets - assetsAndLiability.liabilities - api.addToken(levReserveToken, levBal) - }) -} - -async function processRepricingVaults(api, vaults) { - const [decimals, supplies, reserves, rawNonLevTokens] = await Promise.all([ - api.multiCall({ abi: 'uint8:decimals', calls: vaults, permitFailure: true }), - api.multiCall({ abi: 'uint256:totalSupply', calls: vaults, permitFailure: true }), - api.multiCall({ abi: 'uint256:reservesPerShare', calls: vaults, permitFailure: true }), - api.multiCall({ abi: 'address:reserveToken', calls: vaults, permitFailure: true }) - ]) - - await Promise.all(vaults.map(async (_vault, i) => { - const decimal = decimals[i] - const supply = supplies[i] - const reserve = reserves[i] - const rawNonLevToken = rawNonLevTokens[i] - if (!decimals || !supply || !reserve || !rawNonLevToken) return - const nonLevToken = await api.call({ abi: 'address:baseToken', target: rawNonLevToken }) - const bal = reserve * supply / 10 ** decimal - api.addToken(nonLevToken, bal) - })) -} - -async function processErc4626Vaults(api, vaults) { - const [assets, totalAssets] = await Promise.all([ - api.multiCall({ abi: 'address:asset', calls: vaults, permitFailure: false }), - api.multiCall({ abi: 'uint256:totalAssets', calls: vaults, permitFailure: false }) - ]) - - await Promise.all(vaults.map(async (_vault, i) => { - api.addToken(assets[i], totalAssets[i]) - })) -} - -async function processBalanceSheetVaults(api, vaults) { - const [tokens, balanceSheet] = await Promise.all([ - api.multiCall({ abi: 'function tokens() external view returns (address[] memory assetTokens, address[] memory liabilityTokens)', calls: vaults, permitFailure: false }), - api.multiCall({ abi: 'function balanceSheet() external view returns (uint256[] memory totalAssets, uint256[] memory totalLiabilities)', calls: vaults, permitFailure: false }) - ]) - - vaults.forEach((_vault, i) => { - const vaultTokens = tokens[i] - const vaultBalanceSheet = balanceSheet[i] - - vaultTokens.assetTokens.forEach((token, j) => { - const assetAmount = vaultBalanceSheet.totalAssets[j]; - if(!token || !assetAmount) return - api.addToken(token, assetAmount) - }) - vaultTokens.liabilityTokens.forEach((token, j) => { - const liabilityAmount = vaultBalanceSheet.totalLiabilities[j]; - if(!token || !liabilityAmount) return - api.addToken(token, -liabilityAmount) - }) - }) -} - -async function processAutoStakingVaults(api, vaults) { - const [stakingToken, totalSupply] = await Promise.all([ - api.multiCall({ abi: 'function stakingToken() external view returns (address)', calls: vaults, permitFailure: false }), - api.multiCall({ abi: 'function totalSupply() external view returns (uint256)', calls: vaults, permitFailure: false }) - ]) - - vaults.forEach((_vault, i) => { - api.addToken(stakingToken[i], totalSupply[i]) - }) -} - -async function tvl(api) { - const { vaults } = await cachedGraphQuery('origami/' + api.chain, GRAPH_URLS[api.chain], '{ vaults { id vaultKinds } }') - - await processLeveragedVaults(api, vaultsOfKind(vaults, 'LEVERAGE')) - await processRepricingVaults(api, vaultsOfKind(vaults, 'REPRICING')) - await processErc4626Vaults(api, vaultsOfKind(vaults, 'ERC4626')) - await processBalanceSheetVaults(api, vaultsOfKind(vaults, 'BALANCE_SHEET')) - await processAutoStakingVaults(api, vaultsOfKind(vaults, 'AUTO_STAKING')) -} - -async function borrowedLeveragedVaults(api, leveragedVaults) { - // Retrieve the token balance of the underlying debt token - const managers = await api.multiCall({ calls: leveragedVaults, abi: 'address:manager', permitFailure: true }) - const borrowLends = await api.multiCall({ calls: managers, abi: 'address:borrowLend', permitFailure: true }) - const [borrowTokens, borrowAmounts] = await Promise.all([ - await api.multiCall({ calls: borrowLends, abi: 'address:borrowToken', permitFailure: true }), - await api.multiCall({ calls: borrowLends, abi: 'address:debtBalance', permitFailure: true }) - ]) - - leveragedVaults.forEach((_vault, i) => { - const debtToken = borrowTokens[i] - const debtAmount = borrowAmounts[i] - if(!debtToken || !debtAmount) return - api.addToken(debtToken, debtAmount) - }) -} - -async function borrowedBalanceSheetVaults(api, vaults) { - const [tokens, balanceSheet] = await Promise.all([ - api.multiCall({ abi: 'function tokens() external view returns (address[] memory assetTokens, address[] memory liabilityTokens)', calls: vaults, permitFailure: false }), - api.multiCall({ abi: 'function balanceSheet() external view returns (uint256[] memory totalAssets, uint256[] memory totalLiabilities)', calls: vaults, permitFailure: false }) - ]) - - vaults.forEach((_vault, i) => { - const vaultTokens = tokens[i] - const vaultBalanceSheet = balanceSheet[i] - - vaultTokens.liabilityTokens.forEach((token, j) => { - const liabilityAmount = vaultBalanceSheet.totalLiabilities[j]; - if(!token || !liabilityAmount) return - api.addToken(token, liabilityAmount) - }) - }) -} - -async function borrowed(api) { - const { vaults } = await cachedGraphQuery('origami/' + api.chain, GRAPH_URLS[api.chain], '{ vaults { id vaultKinds } }') - await borrowedLeveragedVaults(api, vaultsOfKind(vaults, 'LEVERAGE')) - await borrowedBalanceSheetVaults(api, vaultsOfKind(vaults, 'BALANCE_SHEET')) -} diff --git a/projects/originarm/index.js b/projects/originarm/index.js deleted file mode 100644 index 87afd109f1c..00000000000 --- a/projects/originarm/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ethereum: { - tvl: async (api) => { - const originLidoArm = "0x85b78aca6deae198fbf201c82daf6ca21942acc6"; - const outstandingSteth = await api.call({abi: 'uint256:lidoWithdrawalQueueAmount', target: originLidoArm }) - api.add(ADDRESSES.ethereum.STETH, outstandingSteth) - return api.sumTokens({ owner: originLidoArm, tokens: [ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.STETH] }) - }, - }, -}; diff --git a/projects/origindollar/abi.json b/projects/origindollar/abi.json deleted file mode 100644 index 56a51d32a34..00000000000 --- a/projects/origindollar/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getAllAssets": "address[]:getAllAssets", - "checkBalance": "function checkBalance(address _asset) view returns (uint256 balance)", - "supportsAsset": "function supportsAsset(address _asset) view returns (bool)" -} \ No newline at end of file diff --git a/projects/origindollar/index.js b/projects/origindollar/index.js deleted file mode 100644 index 833f4f284be..00000000000 --- a/projects/origindollar/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); - -const vault = "0xE75D77B1865Ae93c7eaa3040B038D7aA7BC02F70"; - -const ethTvl = async (api) => { - const tokens = await api.call({ abi: abi.getAllAssets, target: vault}) - const bals = await api.multiCall({ abi: abi.checkBalance, calls: tokens, target: vault}) - api.add(tokens, bals) -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - staking: staking( - "0x63898b3b6Ef3d39332082178656E9862bee45C57", "0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26", - ), - }, -}; diff --git a/projects/originether/index.js b/projects/originether/index.js deleted file mode 100644 index 2be1d8ad50b..00000000000 --- a/projects/originether/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("../origindollar/abi.json"); - - -const ethTvl = async (api) => { - const vault = "0x39254033945aa2e4809cc2977e7087bee48bd7ab"; - const strategies = await api.call({ abi: 'function getAllStrategies() view returns (address[])', target: vault }) - const isNativeStrategy = (await api.multiCall({ abi: 'uint256:activeDepositedValidators', calls: strategies, permitFailure: true})).map(i => !!i) - const nativeStrategies = strategies.filter((_, i) => isNativeStrategy[i]) - - // vault balance - const vaultBalance = await api.call({ abi: 'erc20:balanceOf', target: ADDRESSES.ethereum.WETH, params: vault }) - api.add(ADDRESSES.ethereum.WETH, vaultBalance) - - // add native strategies - for(const nativeStrategy of nativeStrategies) { - const stakingBalance = await api.call({ abi: abi.checkBalance, target: nativeStrategy, params: ADDRESSES.ethereum.WETH }) - api.add(ADDRESSES.ethereum.WETH, stakingBalance) - } - - // add ETH part of convex OETH/ETH LP - const convexStrategy = '0x1827F9eA98E0bf96550b2FC20F7233277FcD7E63' - const convexLp = await api.call({ abi: 'address:curvePool', target: convexStrategy}) - const convexEthIndex = await api.call({ abi: 'uint128:ethCoinIndex', target: convexStrategy}) - const convexLpBalance = await api.call({ abi: abi.checkBalance, target: convexStrategy, params: ADDRESSES.ethereum.WETH}) - const convexLpSupply = await api.call({ abi: 'erc20:totalSupply', target: convexLp}) - const convexEthInPool = await api.call({ abi: 'function balances(uint256) view returns (uint256)', target: convexLp, params: convexEthIndex}) - const convexEthLPBalance = (convexLpBalance / convexLpSupply) * convexEthInPool - api.add(ADDRESSES.ethereum.WETH, convexEthLPBalance) - - // add ETH part of curve OETH/WETH LP - const curveStrategy = '0xba0e352AB5c13861C26e4E773e7a833C3A223FE6' - const curveLp = await api.call({ abi: 'address:curvePool', target: curveStrategy}) - const curveEthIndex = await api.call({ abi: 'uint128:hardAssetCoinIndex', target: curveStrategy}) - const curveLpBalance = await api.call({ abi: abi.checkBalance, target: curveStrategy, params: ADDRESSES.ethereum.WETH}) - const curveLpSupply = await api.call({ abi: 'erc20:totalSupply', target: curveLp}) - const curveEthInPool = await api.call({ abi: 'function balances(uint256) view returns (uint256)', target: curveLp, params: curveEthIndex}) - const curveEthLPBalance = (curveLpBalance / curveLpSupply) * curveEthInPool - api.add(ADDRESSES.ethereum.WETH, curveEthLPBalance) - - return api.sumTokens({ owner: vault, tokens: [ADDRESSES.ethereum.WETH] }) -} - -async function baseTvl(api) { - const vault = '0x98a0CbeF61bD2D21435f433bE4CD42B56B38CC93' - const aeroAMO = '0xF611cC500eEE7E4e4763A05FE623E2363c86d2Af' - - // vault balance - const vaultBalance = await api.call({ abi: 'erc20:balanceOf', target: ADDRESSES.base.WETH, params: vault }) - api.add(ADDRESSES.base.WETH, vaultBalance) - - // add aero AMO - const [amountWeth, _amountOETH] = await api.call({ abi: 'function getPositionPrincipal() view returns (uint256, uint256)', target: aeroAMO }) - api.add(ADDRESSES.base.WETH, amountWeth) - - return api.sumTokens({ owners: [vault], tokens: [ADDRESSES.base.WETH] }) -} - -async function plumeTvl(api) { - const vault = '0xc8c8F8bEA5631A8AF26440AF32a55002138cB76a' - - const vaultBalance = await api.call({ abi: 'erc20:balanceOf', target: ADDRESSES.plume_mainnet.WETH, params: vault }) - api.add(ADDRESSES.plume_mainnet.WETH, vaultBalance) - - return api.sumTokens({ owners: [vault], tokens: [ADDRESSES.plume_mainnet.WETH] }) -} - - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - base: { - tvl: baseTvl, - }, - plume_mainnet: { - tvl: plumeTvl, - } -}; diff --git a/projects/originsonic/abi.json b/projects/originsonic/abi.json deleted file mode 100644 index a827f4e5ff6..00000000000 --- a/projects/originsonic/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getAllAssets": "address[]:getAllAssets", - "checkBalance": "function checkBalance(address _asset) view returns (uint256 balance)" -} \ No newline at end of file diff --git a/projects/originsonic/index.js b/projects/originsonic/index.js deleted file mode 100644 index 655d2fe4822..00000000000 --- a/projects/originsonic/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const abi = require("./abi.json"); - -const vault = "0xa3c0eCA00D2B76b4d1F170b0AB3FdeA16C180186"; - -const sTvl = async (api) => { - const tokens = await api.call({ abi: abi.getAllAssets, target: vault }); - const bals = await api.multiCall({ abi: abi.checkBalance, calls: tokens, target: vault }); - - api.add(tokens, bals); -} - -module.exports = { - sonic: { - tvl: sTvl - }, -}; diff --git a/projects/origyn/index.js b/projects/origyn/index.js deleted file mode 100644 index b55cf755e05..00000000000 --- a/projects/origyn/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { toUSDTBalances } = require("../helper/balances"); -const { get } = require('../helper/http') - -async function staking() { - // Get the total supply in OGY - // Ref: https://github.com/ORIGYN-SA/origyn-sns/blob/master/backend/canisters/token_metrics/impl/src/queries/http_request.rs#L40 - const totalSupplyUrl = 'https://juolv-3yaaa-aaaal-ajc6a-cai.raw.icp0.io/total-supply'; - const totalSupply = await get(totalSupplyUrl); - - // Get the circulating supply in OGY - // Ref: https://github.com/ORIGYN-SA/origyn-sns/blob/master/backend/canisters/token_metrics/impl/src/queries/http_request.rs#L43 - const circulatingSupplyUrl = 'https://juolv-3yaaa-aaaal-ajc6a-cai.raw.icp0.io/circulating-supply'; - const circulatingSupply = await get(circulatingSupplyUrl); - - // Get the OGY/USDT market price - const ogyPriceUrl = 'https://api.origyn.com/ogy/price'; - const ogyPriceData = await get(ogyPriceUrl); - const ogyUsdt = ogyPriceData.ogyPrice; - - // The token value locked is the locked supply - // total supply - circulating supply - const tokenTvl = (totalSupply - circulatingSupply) * ogyUsdt; - - return toUSDTBalances(tokenTvl); -} - -async function tvl() { - // Get the total value of ORIGYN Certificates - // Ref: https://github.com/ORIGYN-SA/origyn-sns/blob/master/backend/canisters/collection_index/impl/src/queries/http_request.rs#L29 - const collectionIndexUrl = 'https://leqqw-uaaaa-aaaaj-azsba-cai.raw.icp0.io/stats'; - const collectionIndexData = await get(collectionIndexUrl); - const collectionTvl = collectionIndexData.total_value_locked; - - return toUSDTBalances(collectionTvl); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "TVL the total locked value of staked tokens and the total asset value of ORIGYN certificates.", - icp: { - tvl, - staking, - }, -} diff --git a/projects/orio/index.js b/projects/orio/index.js deleted file mode 100644 index 5ce2a5d348f..00000000000 --- a/projects/orio/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const chain = 'ethereum' - -async function tvl(_, _b, { [ chain]: block }) { - const owners = [ - '0x335DE1cB210B6d981EF3c5253ed7A39456Ee8F1D' - ] - const tokens = [ - ADDRESSES.ethereum.BUSD,//busd - ADDRESSES.ethereum.USDC,//usdc - ADDRESSES.ethereum.USDT,//usdt - ADDRESSES.ethereum.DAI,//dai - '0x8e870d67f660d95d5be530380d0ec0bd388289e1',//usdp -] - return sumTokens2({ chain, block, owners, tokens, }) -} - -module.exports = { - ethereum: { - tvl - } -} \ No newline at end of file diff --git a/projects/orion-money/index.js b/projects/orion-money/index.js deleted file mode 100644 index 3179ed945fb..00000000000 --- a/projects/orion-money/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require('../helper/unwrapLPs') -const fundedContracts = [ - '0xefe0fed2b728b9711030e7643e98477957df9809', //TransparentUpgradeableProxy - '0xd9184981bbab68e05eafd631dd2f8cbaf47e3e13' //TransparentUpgradeableProxy -]; -const stable = [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - '0xa47c8bf37f92abed4a126bda807a7b7498661acd', //'wUST' : - ADDRESSES.ethereum.BUSD, - ADDRESSES.ethereum.FRAX, -]; -const anchor = [ - '0x94eAd8f528A3aF425de14cfdDA727B218915687C', //'aUSDC': - '0x54E076dBa023251854f4C29ea750566528734B2d', //'aUSDT': - '0x23afFce94d2A6736DE456a25eB8Cc96612Ca55CA', //'aDAI': - '0xaaf85bcfebd49a9e2cacda02f7fc1bbc3db7b2e0', //'vaUST': - '0x5a6a33117ecbc6ea38b3a140f3e20245052cc647', //'aBUSD': - '0x0660ae7b180e584d05890e56be3a372f0b746515', //'aFRAX': -]; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokens: [...stable, ...anchor], owners: fundedContracts}), - }, - methodology: "counts the value of each stablecoin, and interest-bearing anchor-stable, in the TransparentUpgradeableProxy contracts.", -}; \ No newline at end of file diff --git a/projects/orion-rfq/index.js b/projects/orion-rfq/index.js deleted file mode 100644 index 3d4f8ebf79c..00000000000 --- a/projects/orion-rfq/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - ethereum: '0xb5599f568D3f3e6113B286d010d2BCa40A7745AA', - bsc: '0xe9d1D2a27458378Dd6C6F0b2c390807AEd2217Ca', - fantom: '0x9dB0Af2fc2BB5144204533d3e0bc8Ed14C8C4923', - polygon: '0x7B52881fA99c752cf8FbfD4904091d0FCCF7e71a', -} - -const blacklistedTokens = { - ethereum: ['0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a'], - fantom: ['0xD2cDcB6BdEE6f78DE7988a6A60d13F6eF0b576D9'], - polygon: ['0xD2cDcB6BdEE6f78DE7988a6A60d13F6eF0b576D9'], -} - -Object.keys(config).forEach(chain => { - const owner = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owner, fetchCoValentTokens: true, blacklistedTokens: blacklistedTokens[chain] }) - } -}) diff --git a/projects/orionprotocol/index.js b/projects/orionprotocol/index.js deleted file mode 100644 index 20334b9ae83..00000000000 --- a/projects/orionprotocol/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const config = { - ethereum: '0x5FA0060FcfEa35B31F7A5f6025F0fF399b98Edf1', - bsc: '0xE52cCf7B6cE4817449F2E6fA7efD7B567803E4b4', - fantom: '0xb8baf2195BfC67845049f49af9d4858F7D9c2b30', - polygon: '0xd956dEd6BFc7ED1C1Aa8c7954EB0ECd1E00e71b8', -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory, }) - } -}) - -module.exports.ethereum.staking = staking(["0x3e902c462103D45C073826bD9d134799fb427669", '0x587FBF916f9e4F046F8525c55B0E59Bb10ddC8ba'], "0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a") -module.exports.bsc.staking = staking(["0xd2C8b8915C8D8548Bf4F16a8CdCe73dE7796c39E", '0x3dc27D9973DFB583989B1C876e9723C32C2F9429'], "0xe4ca1f75eca6214393fce1c1b316c237664eaa8e") \ No newline at end of file diff --git a/projects/orki-usd/index.js b/projects/orki-usd/index.js deleted file mode 100644 index ee57ed2d2dd..00000000000 --- a/projects/orki-usd/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getLiquityV2Tvl } = require('../helper/liquity') - -const config = { - swellchain: '0xce9f80a0dcd51fb3dd4f0d6bec3afdcaea10c912' -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getLiquityV2Tvl(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/osl/index.js b/projects/osl/index.js deleted file mode 100644 index 9b3b429ce5b..00000000000 --- a/projects/osl/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const { cexExports } = require('../helper/cex') - -const config = { - ethereum: { - owners: [ - "0x1368487BccEE27421c5b4a90A437Dbb8e8ea11CE", - "0xa853b3a5308f98926aa89821843f8299cc02eFC6", - ], - }, - bitcoin: { - owners: [ - "bc1qndz4wtssws2gle09wdmfn7evlr2424wa358pk3", - "bc1qu5keasldcnc8ce4x36r3053d3qyp3zgjmu2965", - ], - }, - solana: { - owners: [ - "CmtxExQVhPKJ6z2FDpHWNVXFBhwywcXNjYB8WzpZGLKx", - "DyWrQZXx6EzjZ9b845Pm8awiDBgMuPtX1jHAgXD6w7Sw", - ], - }, - avax: { - owners: [ - "0x015a41879503c69d8556605c0526B9b5B59f9A2F", - "0xb078257c5Be10792eF922418AF0605E05d4a75a3", - ], - }, - tron: { - owners: [ - "TSjEMi9JjSJJCsDHHuUe9s63vHLNDTPLNc", - "TPDNKLR5723RkgcPBbAndTEicfYHwpxjgE", - ], - }, - litecoin: { - owners: [ - "ltc1q32k8z0glde0chd3wv0dc8ljnpl92ds8s2dlcc5", - "ltc1qw6q7h9aghdp5d3w9wx6748hk4zvntt9aq40ngw", - ], - }, - ton: { - owners: [ - "UQDn0QGegL3Y3ZvzDNcnFEx2YWJJ-T-wYBybMPy3Vcqbd4Nw", - "UQANrP4Du0abVt_zC9YuE-xizl4l99BrAqa5VP5Lz8OI5i4u", - ], - }, - doge: { - owners: [ - "D6WMft6zfERAYorB3ftcJjhTintgeVAGhw", - "D63Ge381QBcsaf7qwuxBh5rttgRFdnxMcv", - ], - }, - ripple: { - owners: [ - "rnHYKxdnPFwHMc9wpARskAgJnYY1x6JZhu", - "rhqxpAugGuwp6tYxy5jRmjc73468bSaaKS", - ], - }, - bsc: { - owners: [ - "0x1368487BccEE27421c5b4a90A437Dbb8e8ea11CE", - "0xa853b3a5308f98926aa89821843f8299cc02eFC6", - ], - }, -} - -module.exports = cexExports(config) diff --git a/projects/osmosis-ibc/index.js b/projects/osmosis-ibc/index.js deleted file mode 100644 index edca7c6dc82..00000000000 --- a/projects/osmosis-ibc/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { get } = require('../helper/http') -const { PromisePool } = require('@supercharge/promise-pool') - -async function tvl(api) { - throw new Error("Osmosis IBC TVL should not be counted in Cosmos bridge TVL") - - // const res = await get( - // `https://raw.githubusercontent.com/osmosis-labs/assetlists/main/osmosis-1/generated/chain_registry/assetlist.json` - // ) - - // await PromisePool.withConcurrency(10) - // .for(res.assets) - // .process(async (c) => { - // const { base: address } = c; - // if (!address.startsWith("ibc/")) return; - // const res = await get(`https://lcd.osmosis.zone/cosmos/bank/v1beta1/supply/by_denom?denom=${address}`) - // if (res && res.amount) api.add(address, res.amount.amount, { skipChain: true }) - // }) -} - -module.exports = { - cosmos: { tvl } -} diff --git a/projects/osmosis.js b/projects/osmosis.js deleted file mode 100644 index 02a8b5689c9..00000000000 --- a/projects/osmosis.js +++ /dev/null @@ -1,67 +0,0 @@ -const { queryV1Beta1, sumTokens } = require('./helper/chain/cosmos') -const ADDRESSES = require('./helper/coreAssets.json') - -const coreAssets = new Set() -Object.values(ADDRESSES.osmosis).forEach(i => coreAssets.add(i)) -Object.values(ADDRESSES.ibc).forEach(i => coreAssets.add('ibc/' + i)) - -const chain = 'osmosis' - -async function tvl(api) { - // // https://api-osmosis.imperator.co/pools/v2/all?low_liquidity=true - // https://lcd.osmosis.zone/osmosis/gamm/v1beta1/pools?pagination.limit=100&pagination.count_total=true - const owners = [] - const blacklistedTokens = new Set() - - const { pools } = await queryV1Beta1({ chain, url: '/poolmanager/v1beta1/all-pools' }) - - pools.forEach((i) => { - const poolId = i?.total_shares?.denom - if (poolId) blacklistedTokens.add(poolId) - if (i.address) blacklistedTokens.add(i.address) - if (i.contract_address) blacklistedTokens.add(i.contract_address) - }) - - pools.forEach((i) => { - switch (i['@type']) { - case '/osmosis.gamm.poolmodels.stableswap.v1beta1.Pool': - i.pool_liquidity.forEach(i => !blacklistedTokens.has(i.denom) && api.add(i.denom, i.amount)) - break; - case '/osmosis.gamm.v1beta1.Pool': addDefaultPoolData(i); break; - case '/osmosis.concentratedliquidity.v1beta1.Pool': addCLPool(i); break; - case '/osmosis.cosmwasmpool.v1beta1.CosmWasmPool': break; - default: throw new Error('Unknown pool type' + i['@type']) - } - }) - return sumTokens({ balances: api.getBalances(), chain, owners, blacklistedTokens: [...blacklistedTokens], }) - - function addCLPool(i) { - owners.push(i.address) - } - - function addDefaultPoolData(i) { - const coreData = i.pool_assets.find(i => coreAssets.has(i.token.denom)) - - i.pool_assets.forEach(i => { - if (blacklistedTokens.has(i.token.denom)) return; - if (!coreAssets.has(i.token.denom) && coreData) { - api.add(coreData.token.denom, coreData.token.amount) - return; - } else if (!coreAssets.has(i.token.denom)) { - api.add(i.token.denom, i.token.amount) - return; - } - api.add(i.token.denom, i.token.amount) - }) - } -} - - - -module.exports = { - misrepresentedTokens: true, - methodology: "Counts the liquidity on all AMM pools", - osmosis: { - tvl - } -} \ No newline at end of file diff --git a/projects/ostable/index.js b/projects/ostable/index.js deleted file mode 100644 index 847e98b01d4..00000000000 --- a/projects/ostable/index.js +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Ostable is an advanced stable coin platform powered by bonding curves. It is a collection of autonomous agents - * that interact with each other to offer various financial products to investors such as interest coins, stable coins - * and stability fund shares. - * - * @see https://ostable.org/ - */ -const { - fetchBaseAABalances, - fetchOstableExchangeRatesInUSD, - fetchOstableAssets, - summingBaseAABalancesToTvl, -} = require('../helper/chain/obyte') - -/** - * Bonding curve autonomous agents that lock in GBYTEs as reserve and issue interest tokens and growth tokens. - */ -async function curveTvl(timestamp, assetMetadata, exchangeRates) { - const baseAABalances = await Promise.all([ - fetchBaseAABalances(timestamp, "FCFYMFIOGS363RLDLEWIDBIIBU7M7BHP"), // curve v1 - fetchBaseAABalances(timestamp, "3RNNDX57C36E76JLG2KAQSIASAYVGAYG"), // curve v1 - fetchBaseAABalances(timestamp, "3DGWRKKWWSC6SV4ZQDWEHYFRYB4TGPKX"), // curve v2 - fetchBaseAABalances(timestamp, "CD5DNSVS6ENG5UYILRPJPHAB3YXKA63W"), // curve v2 - fetchBaseAABalances(timestamp, "GWQVOQDPT4L5XPMDIQF5MNDQZNV5VGLY"), // curve v2 - ]) - - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) -} - -/** - * Deposit autonomous agents where investors deposit interest tokens and receive stable coins in exchange. - */ -async function depositTvl(timestamp, assetMetadata, exchangeRates) { - const baseAABalances = await Promise.all([ - fetchBaseAABalances(timestamp, "GEZGVY4T3LK6N4NJAKNHNQIVAI5OYHPC"), // deposit v1 - fetchBaseAABalances(timestamp, "YXPLX6Q3HBBSH2K5HLYM45W7P7HFSEIN"), // stable v2 - ]) - - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) -} - -/** - * Stability Fund autonomous agents that hold growth tokens (v2 only) and interest tokens to algorithmically manage - * the curve to keep the peg. Investors contribute GBYTEs to their reserves by buying stability fund shares issued - * by the fund. - */ -async function stabilityFundTvl(timestamp, assetMetadata, exchangeRates) { - const baseAABalances = await Promise.all([ - fetchBaseAABalances(timestamp, "5WOTEURNL2XGGKD2FGM5HEES4NKVCBCR"), // stability fund - ]) - - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) -} - -/** - * Governance autonomous agents are used by investors to lock in stability fund shares to adjust various parameters. - */ -async function governanceTvl(timestamp, assetMetadata, exchangeRates) { - const baseAABalances = await Promise.all([ - fetchBaseAABalances(timestamp, "Y4VBXMROK5BWBKSYYAMUW7QUEZFXYBCF"), // governance v1 - fetchBaseAABalances(timestamp, "UUPBIWDWQ7Q4WXS5CWSEKUQE34FG6L55"), // governance v1 - fetchBaseAABalances(timestamp, "JL6OOEOQCJ2RJ3NHCUJLUBDR3ZE3GY3F"), // governance v2 - fetchBaseAABalances(timestamp, "LXHUYEV6IHBCTGMFNSWRBBU7DGR3JTIY"), // governance v2 - ]) - - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) -} - -// insignificant balance -async function decisionEngine(timestamp, assetMetadata, exchangeRates) { - const baseAABalances = await Promise.all([ - fetchBaseAABalances(timestamp, "625UKTER5WR5JQPQYS7CU4ST2EXFUCDG"), // decision engine v2 - fetchBaseAABalances(timestamp, "R3WZUWKTFISJ53MGAGSS5OIVMDAFC3WV"), // decision engine v2 - ]) - - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) -} - -async function totalTvl(timestamp) { - const [assetMetadata, exchangeRates] = await Promise.all([ - fetchOstableAssets(), - fetchOstableExchangeRatesInUSD() - ]) - - const tvls = await Promise.all([ - curveTvl(timestamp, assetMetadata, exchangeRates), - depositTvl(timestamp, assetMetadata, exchangeRates), - governanceTvl(timestamp, assetMetadata, exchangeRates), - stabilityFundTvl(timestamp, assetMetadata, exchangeRates), - decisionEngine(timestamp, assetMetadata, exchangeRates) - ]) - - return { - tether: tvls.reduce( (total, tvl) => total + tvl, 0) - } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: - "The TVL is the USD value of the assets locked into the autonomous agents that extend the Ostable protocol (v1, v2).", - obyte: { - tvl: totalTvl - } -} diff --git a/projects/ostium/index.js b/projects/ostium/index.js deleted file mode 100644 index 1427ac341b2..00000000000 --- a/projects/ostium/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const owners = [ - // OLP vault - '0x20D419a8e12C45f88fDA7c5760bb6923Cee27F98', - // Trading collateral - '0xcCd5891083A8acD2074690F65d3024E7D13d66E7', -]; - -const tokens = [ - ADDRESSES.arbitrum.USDC_CIRCLE, -]; - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ owners, tokens }), - } -} diff --git a/projects/ostrich/index.js b/projects/ostrich/index.js deleted file mode 100644 index 3316fcdef7b..00000000000 --- a/projects/ostrich/index.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - methodology: "Assets secured by vault across networks.", -}; -const config = { - arbitrum: ["0xd5FAEb286E0AFe94e1537cE63622d75Da15d3F0d", "0x683e6C4B18Eda7a068a9ed104431715af67569cF"], -}; - -Object.keys(config).forEach((chain) => { - let vault = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - if (!Array.isArray(vault)) vault = [vault]; - const tokens = await api.multiCall({ - abi: "address:wrappedToken", - calls: vault, - }); - return api.sumTokens({ tokensAndOwners2: [tokens, vault] }); - }, - }; -}); \ No newline at end of file diff --git a/projects/oswap-token/index.js b/projects/oswap-token/index.js deleted file mode 100644 index 4d114ae69be..00000000000 --- a/projects/oswap-token/index.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * OSWAP token is designed to reflect the success - * of Oswap protocol — with greater total value locked (TVL) - * in all pools of Oswap DEX the token appreciates faster, and - * with lower TVL it appreciates slower. - * - * @see https://token.oswap.io/ - * - */ - -const { getAaStateVars, executeGetter } = require('../helper/chain/obyte') - -const AA_ADDRESS = "OSWAPWKOXZKJPYWATNK47LRDV4UN4K7H"; - -const GBYTE_DECIMALS = 9; -const OSWAP_TOKEN_DECIMALS = 9; - -async function tvl() { - const state = await getAaStateVars(AA_ADDRESS, "state").then(({ state }) => state || {}); - const tokenReserveTVL = state?.reserve || 0; - - return { 'byteball': tokenReserveTVL / 10 ** GBYTE_DECIMALS } -} - -async function staking() { - const state = await getAaStateVars(AA_ADDRESS, "state").then(({ state }) => state || {}); - const totalStakedBalance = state?.total_staked_balance || 0; - const oswapTokenPrice = await executeGetter(AA_ADDRESS, "get_price"); - const totalStakedTVL = (totalStakedBalance / 10 ** OSWAP_TOKEN_DECIMALS) * oswapTokenPrice; - - return { 'byteball': totalStakedTVL } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: - "The TVL is the USD value of the all assets locked on the OSWAP token autonomous agent. This includes the reserve asset used to issue the OSWAP tokens and OSWAP tokens locked in governance (as staking).", - obyte: { - tvl, - staking - }, -} diff --git a/projects/oswap/index.js b/projects/oswap/index.js deleted file mode 100644 index 53959603c52..00000000000 --- a/projects/oswap/index.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Oswap is a decentralized token swap protocol on the Obyte ledger. - * - * @see https://oswap.io/ - * @see https://v2-stats.oswap.io/ - * - * @see https://v1.oswap.io/ - * @see https://v1-stats.oswap.io/ - */ -const { fetchBaseAABalances, fetchOswapExchangeRates, fetchOswapAssets, summingBaseAABalancesToTvl } = require('../helper/chain/obyte') - -// TODO support time travel for the exchange rate, currently it always returns the latest rates -async function tvl(api) { - const timestamp = api.timestamp - const [exchangeRates, assetMetadata] = await Promise.all([ - fetchOswapExchangeRates(), - fetchOswapAssets() - ]) - - const usdValue = await Promise.all([ - fetchBaseAABalances(timestamp, "GS23D3GQNNMNJ5TL4Z5PINZ5626WASMA"), // Oswap v1 - fetchBaseAABalances(timestamp, "2JYYNOSRFGLI3TBI4FVSE6GFBUAZTTI3"), // Oswap v2 - fetchBaseAABalances(timestamp, "DYZOJKX4MJOQRAUPX7K6WCEV5STMKOHI") // Oswap v2.1 - ]).then(baseAABalances => { - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) - }) - api.addUSDValue(usdValue) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: - "The TVL is the USD value of the all non-self issued assets locked into the autonomous agents extending the Oswap protocol.", - obyte: { - tvl - }, -} diff --git a/projects/otsea/config.js b/projects/otsea/config.js deleted file mode 100644 index 54865119473..00000000000 --- a/projects/otsea/config.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - chains: [ - { - name: 'ethereum', - graphql: 'https://api.studio.thegraph.com/query/65203/otsea-v1/version/latest', - }, - { - name: 'base', - graphql: 'https://api.studio.thegraph.com/query/65203/otsea-base-v1/version/latest', - }, - { - name: 'blast', - graphql: 'https://api.studio.thegraph.com/query/65203/otsea-blast-v1/version/latest', - }, - ] - } - \ No newline at end of file diff --git a/projects/otsea/index.js b/projects/otsea/index.js deleted file mode 100644 index 224718d0a1a..00000000000 --- a/projects/otsea/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const OTSEA_TOKEN = "0x5dA151B95657e788076D04d56234Bd93e409CB09"; -const OTSEA_MARKET_CONTRACT = "0x6E8B67B315b44519f8C2BEfdbbE11097c45353b4"; -const OTSEA_STAKING_CONTRACT = "0xF2c8e860ca12Cde3F3195423eCf54427A4f30916"; - -const CONFIG = { - ethereum: '0x6E8B67B315b44519f8C2BEfdbbE11097c45353b4', - base: '0xa836Af59d35B3Da3c9FB5cFD6F84d9E3bD8c5fd5', - blast: '0xa836Af59d35B3Da3c9FB5cFD6F84d9E3bD8c5fd5' -} - -const abis = { - getOrder: "function getOrder(uint72 _orderID) view returns ((address creator, uint8 orderType, uint8 state, uint8 feeType, bool isAON, bool isHidden, bool withLockUp, address token, uint256 totalInput, uint256 inputTransacted, uint256 totalOutput, uint256 outputTransacted) order)", - getTotalOrders: "function getTotalOrders() view returns (uint72)", -} - -const tvl = async (api) => { - const factory = CONFIG[api.chain] - const orders = await api.fetchList({ itemAbi: abis.getOrder, lengthAbi: abis.getTotalOrders, target: factory, startFromOne: true }) - for (const { orderType, state, totalOutput, outputTransacted } of orders) { - if (orderType === '1' && state === '0') { - const balance = totalOutput - outputTransacted; - api.add(ADDRESSES.null, balance); - } - } - - await api.sumTokens({ owner: OTSEA_MARKET_CONTRACT, tokens: [ADDRESSES.null] }); -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { - ...(module.exports[chain] || {}), - ...(chain === 'ethereum' ? { staking: staking(OTSEA_STAKING_CONTRACT, OTSEA_TOKEN) } : {}), - tvl, - }; -}); \ No newline at end of file diff --git a/projects/ottopia/index.js b/projects/ottopia/index.js deleted file mode 100644 index d64ddc6c0e5..00000000000 --- a/projects/ottopia/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); -const { staking } = require("../helper/staking"); - -const CLAM = "0xC250e9987A032ACAC293d838726C511E6E1C029d"; -const PearlBank = "0x845EB7730a8D37e8D190Fb8bb9c582038331B48a"; - -const endpoint = sdk.graph.modifyEndpoint('CejrrsnSQAxHJBpkgiBrLHQZ7h2MkK9QArM8bJvN9GuQ') - -const query = gql` - query tvl { - protocolMetrics( - first: 1 - orderBy: timestamp - orderDirection: desc - ) { - treasuryMarketValue - timestamp - } - } -`; - -async function tvl(api) { - const results = await request(endpoint, query) - return api.addUSDValue(parseFloat(results.protocolMetrics[0].treasuryMarketValue)) -} - -module.exports = { - deadFrom: '2024-08-14', - methodology: "This adapter uses otterclam's subgraph to fetch tvl data.", - polygon: { - tvl, - staking: staking(PearlBank, CLAM), - }, - hallmarks: [ - [1641686400, "Pearl Chest launch"], - [1657929600, "Staking v2 launch"], - ], -}; diff --git a/projects/ourbit/index.js b/projects/ourbit/index.js deleted file mode 100644 index 7253f71ac53..00000000000 --- a/projects/ourbit/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { cexExports } = require('../helper/cex') - -const config = { - ethereum: { - owners: [ - "0xf81b45b1663b7ea8716c74796d99bbe4ea26f488", - "0x18D080B89570e4B996EB17fA1F0206F0CE35d604", - ], - }, - tron: { - owners: [ - "TApNqy5BNx11TiNa7oibbBUV63BY5a2sNE", - "TJP6zoGwWwUmANvMdrtqYq9iWA8qMAAY4q" - ], - }, - bsc: { - owners: [ - "0xdbf7122c0b7af893580df087eabac0b3be3e9483", - "0x6c6EC4beeAa53171a0ce0691D5c9A5FaAF509a8A" - ], - }, - optimism: { - owners: [ - "0x944d6b4c2bf808f9324ca0675f1d7e0e92a35436", - ], - }, - avax: { - owners: [ - "0x8fc27c899fb2c1044608516450e385378195639d", - ], - }, - arbitrum: { - owners: [ - "0x040432c11ee833bdcaac2495329b65bee7cca6d9", - ], - }, - solana: { - owners: [ - "7UhjbynicBP8rqcobwsAJDfRMjwgHSgdxcYNJmLwxfms", - "3pjwKq9yuzpVYfD4h5jMZLLfV8oSd8YiwpoAaB5oZS3H" - ], - }, - bitcoin: { - owners: [ - "bc1q2cvpg2c74puqke4py0ufr0aauj4m5vdeaqpjxv", - ], - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/ouroboros/index.js b/projects/ouroboros/index.js deleted file mode 100644 index 0f8134ef475..00000000000 --- a/projects/ouroboros/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Ouroboros Capital.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x517aBc7f49DFF75b57A88b9970eF35D6e4C3BD49', - ], - eulerVaultOwners: [ - '0x517aBc7f49DFF75b57A88b9970eF35D6e4C3BD49', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/overnight-daiPlus/index.js b/projects/overnight-daiPlus/index.js deleted file mode 100644 index 555ec244327..00000000000 --- a/projects/overnight-daiPlus/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const m2m = { - optimism: "0x8416d215b71a5C91b04E326140bbbDcDa82C01da", - arbitrum: "0xF04124F4226389d1Bf3ad7AcB54da05fF4078c8b", - base: "0x7a62315519A39d562c1E49EB35b300d2E6742f86" -} - -const assets = { - optimism: ADDRESSES.optimism.DAI, //DAI - arbitrum: ADDRESSES.optimism.DAI, //DAI - base: ADDRESSES.base.DAI //DAI -} - -const abi = "uint256:totalNetAssets" - -module.exports = {}; - -Object.keys(m2m).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const bal = await api.call({ abi, target: m2m[chain]}) - api.add(assets[chain], bal) - } - } -}) \ No newline at end of file diff --git a/projects/overnight-ethPlus/index.js b/projects/overnight-ethPlus/index.js deleted file mode 100644 index 4830c1cda7b..00000000000 --- a/projects/overnight-ethPlus/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const m2m = { - arbitrum: "0x672F0f9ECF78406E4E31cd531b0CefE32f0A84B5", -} - -const assets = { - arbitrum: ADDRESSES.arbitrum.WETH, //WETH -} - -const abi = "uint256:totalNetAssets" - -module.exports = {}; - -Object.keys(m2m).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const bal = await api.call({ abi, target: m2m[chain]}) - api.add(assets[chain], bal) - } - } -}) \ No newline at end of file diff --git a/projects/overnight-fi/index.js b/projects/overnight-fi/index.js deleted file mode 100644 index 032ac286017..00000000000 --- a/projects/overnight-fi/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { unwrapSlipstreamNFT } = require('../helper/unwrapLPs') - -const CONFIG = { - optimism: { - m2ms: [ - '0x9Af655c4DBe940962F776b685d6700F538B90fcf', // USD+ - '0x8416d215b71a5C91b04E326140bbbDcDa82C01da', // DAI+ - ], - assets: [ - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.DAI - ] - }, - arbitrum: { - m2ms: [ - '0x9Af655c4DBe940962F776b685d6700F538B90fcf', // USD+ - '0xF04124F4226389d1Bf3ad7AcB54da05fF4078c8b', // DAI+ - '0xf3607bB88738c3388b543d390a90B6ABF4046E3b', // USDT+ - '0x672F0f9ECF78406E4E31cd531b0CefE32f0A84B5', // ETH+ - ], - assets: [ - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.DAI, - ADDRESSES.arbitrum.USDT, - ADDRESSES.null - ] - }, - era: { - m2ms: [ - '0x240aad990FFc5F04F11593fF4dCF1fF714d6fc80', // USD+ - '0x560f43D548694517101c0EbE37cf022BB6c1ffc9', // USDT+ - ], - assets: [ - ADDRESSES.era.USDC, - ADDRESSES.era.USDT, - ] - }, - linea: { - m2ms: [ - '0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb', // USD+ - '0x3d67655A49Adb0F44530233Cbf8375D33FfAde41', // USDT+ - ], - assets: [ - ADDRESSES.linea.USDC, - ADDRESSES.linea.USDT, - ] - }, - base: { - m2ms: [ - '0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb', // USD+ - '0x7a62315519A39d562c1E49EB35b300d2E6742f86', // DAI+ - '0x96aa0bBe4D0dea7C4AF4739c53dBFA0300262253', // USDC+ - ], - assets: [ - ADDRESSES.base.USDC, - ADDRESSES.base.DAI, - ADDRESSES.base.USDC, - ] - }, - bsc: { - m2ms: [ - '0x9Af655c4DBe940962F776b685d6700F538B90fcf', // USD+ - '0xF3434f6a11AA950150AF3e4962E39E6281496EF9', // USDT+ - ], - assets: [ - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT, - ] - }, - blast: { - m2ms: [ - '0x93dD104528B35E82c061BB0D521096dCF11628FA', // USD+ - '0x1d48DD3094EbB4B9a2c5Ab96dF4ef05bFF562F26', // USDC+ - ], - assets: [ - ADDRESSES.blast.USDB, - ADDRESSES.blast.USDB, - ] - }, - polygon: { - m2ms: [ - '0x33efB0868A6f12aEce19B451e0fcf62302Ec4A72', // USD+ - ], - assets: [ - ADDRESSES.polygon.USDC, - ] - }, - sonic: { - m2ms: [ - '0x1b5949147D2BB411b1f99a61cC25068A86C42519', // USD+ - ], - assets: [ - ADDRESSES.sonic.USDC_e, - ] - }, -} - -const abi = { - strategyAssets: "function strategyAssets() view returns ((address strategy, uint256 netAssetValue, uint256 liquidationValue)[])" -} - -const tvl = async (api) => { - const { m2ms, assets } = CONFIG[api.chain] - const strategyAssetss = await api.multiCall({ calls: m2ms, abi: abi.strategyAssets }) - - m2ms.forEach((_, i) => { - const strategyAssets = strategyAssetss[i] - strategyAssets.forEach(({ strategy, netAssetValue }) => { - // we exclude the aerodrome position which is 99% USDC+ - if (api.chain === 'base' && m2ms[i] === '0x96aa0bBe4D0dea7C4AF4739c53dBFA0300262253') - if (strategy.toLowerCase() !== '0x744a222750A0681FB2f7167bDD00E2Ba611F89A9'.toLowerCase()) return; - api.add(assets[i], netAssetValue) - }) - }) - - /* if (api.chain === 'base') { - // unwrap aerodrome positions - const strategy = '0xcc9c1edae4D3b8d151Ebc56e749aD08b09f50248' - const CLGauge = '0xd030df11fa453a222782f6458cc71954a48ea104' - const positionIds = await api.call({ target: CLGauge, abi: 'function stakedValues(address) view returns (uint256[])', params: strategy }) - const nftAddress = await api.call({ abi: 'address:nft', target: CLGauge}) - - await unwrapSlipstreamNFT({ api, positionIds, nftAddress, }) - api.removeTokenBalance('0x85483696Cc9970Ad9EdD786b2C5ef735F38D156f') - } */ -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) diff --git a/projects/overnight-usdPlus/index.js b/projects/overnight-usdPlus/index.js deleted file mode 100644 index 720185bff9f..00000000000 --- a/projects/overnight-usdPlus/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const m2m = { - polygon: ["0x33efB0868A6f12aEce19B451e0fcf62302Ec4A72"], - bsc: ["0x9Af655c4DBe940962F776b685d6700F538B90fcf",], - optimism: ["0x9Af655c4DBe940962F776b685d6700F538B90fcf",], - arbitrum: ["0x9Af655c4DBe940962F776b685d6700F538B90fcf",], - era: ["0x240aad990FFc5F04F11593fF4dCF1fF714d6fc80"], - base: ["0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb", "0x96aa0bBe4D0dea7C4AF4739c53dBFA0300262253"], - linea: ["0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb"], - blast: ["0x93dD104528B35E82c061BB0D521096dCF11628FA", "0x1d48DD3094EbB4B9a2c5Ab96dF4ef05bFF562F26"], - sonic: ["0x1b5949147D2BB411b1f99a61cC25068A86C42519"] -} - -const assets = { - polygon: ADDRESSES.polygon.USDC, //USDC - bsc: ADDRESSES.bsc.BUSD, //BUSD - optimism: ADDRESSES.optimism.USDC, //USDC - arbitrum: ADDRESSES.arbitrum.USDC, //USDC - era: ADDRESSES.era.USDC, - base: ADDRESSES.base.USDbC, //USDC - linea: ADDRESSES.linea.USDC, //USDC - blast: ADDRESSES.blast.USDB, // USDB - sonic: ADDRESSES.sonic.USDC_e -} - -const abi = "uint256:totalNetAssets" - -Object.keys(m2m).forEach(chain => { - const asset = assets[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = await api.multiCall({ abi, calls: m2m[chain]}) - api.add(asset, balances) - } - } -}) \ No newline at end of file diff --git a/projects/overnight-usdtPlus/index.js b/projects/overnight-usdtPlus/index.js deleted file mode 100644 index d41a989d075..00000000000 --- a/projects/overnight-usdtPlus/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const m2m = { - bsc: "0xF3434f6a11AA950150AF3e4962E39E6281496EF9", - linea: "0x3d67655A49Adb0F44530233Cbf8375D33FfAde41", - arbitrum: "0xf3607bB88738c3388b543d390a90B6ABF4046E3b", -} - -const assets = { - bsc: ADDRESSES.bsc.USDT, //USDT - linea: ADDRESSES.linea.USDT, //USDT - arbitrum: ADDRESSES.arbitrum.USDT //USDT -} - -const abi = "uint256:totalNetAssets" - -module.exports = {}; - -Object.keys(m2m).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const bal = await api.call({ abi, target: m2m[chain]}) - api.add(assets[chain], bal) - } - } -}) \ No newline at end of file diff --git a/projects/ovr/index.js b/projects/ovr/index.js deleted file mode 100644 index cad94f322f3..00000000000 --- a/projects/ovr/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const stakingContract = [ - "0xc947FA28527A06cEE53614E1b77620C1b7D3A75D", - "0xCa0F390C044FD43b1F38B9D2A02e06b13B65FA48", -]; - -const OVR = { - eth: "0x21bfbda47a0b4b5b1248c767ee49f7caa9b23697", - polygon: "0x1631244689EC1fEcbDD22fb5916E920dFC9b8D30", -}; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: stakings(stakingContract, OVR.eth), - vesting: stakings([ - "0xcee8fcbc9676a08b0a048180d99b41a7f080bb78", - "0xe6984300afd314A2F49A5869e773883CdfAe49C2", - ], OVR.eth), - }, - polygon: { - staking: stakings([ - "0x7e98b560eFa48d8d04292EaF680E693F6EEfB534", - "0x671F928505C108E49c006fb97066CFdAB34a2898", - ], OVR.polygon), - }, - methodology: "We count the tokens locked in the staking contract, the tokens in the IBCO reserve, and the tokens locked in vesting.", -}; diff --git a/projects/owna/config.js b/projects/owna/config.js deleted file mode 100644 index 11023232746..00000000000 --- a/projects/owna/config.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - chains: [ - { - name: 'polygon_zkevm', - tokens: [ - ADDRESSES.polygon_zkevm.USDC, - ], - nftContract: '0xa0db7ef54eeffb7a3a5d9e7a95fb853392573b90', - lendingContract: '0x27Ca3D6c64398FF9BcF2E66896EC4B3BEc5e1959', - }, - { - name: 'polygon', - tokens: [ - ADDRESSES.polygon.USDC, - ], - nftContract: '0x666E30E3cdB0A920deA6Cd52E6d1cF0C344CC218', - lendingContract: '0x514F4FC7A3F5CF4c8bD14957C19997b42269c9Ce', - }, - ] -} diff --git a/projects/owna/index.js b/projects/owna/index.js deleted file mode 100644 index 4bcf78bb8e6..00000000000 --- a/projects/owna/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const config = require("./config"); -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - methodology: 'Counts the amount of stables locked in Owna protocol contracts', -}; - -config.chains.forEach(async chainInfo => { - const {name: chain, tokens, lendingContract, nftContract} = chainInfo - - module.exports.deadFrom='2023-11-16', - module.exports[chain] = { - tvl: sumTokensExport({ chain, tokens, owners: [lendingContract] }), - borrowed: () => ({}) // bad debt totalBorrowed, - //offers: totalOffers, - } -}) - - - diff --git a/projects/oxb/index.js b/projects/oxb/index.js deleted file mode 100644 index 018733a8d5a..00000000000 --- a/projects/oxb/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking( - "0x2281f53a583b00cb80814ccdffe1544a5274dad2", - "0x7536c00711E41df6aEBCCa650791107645b6bc52" - ), - }, -}; diff --git a/projects/oxiswap/index.js b/projects/oxiswap/index.js deleted file mode 100644 index 86eb48f42d3..00000000000 --- a/projects/oxiswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens } = require("../helper/chain/fuel") - -async function tvl(api) { - const pairContract = '0x0da1be8528c8f546521ba9507d334cdb06cbc8b8842b3c0a871b1b4195635363'; - return sumTokens({ api, owners: [pairContract] }); -} - -module.exports = { - methodology: "TVL is calculated by summing the value of all tokens held in the pair contract.", - fuel: { tvl }, - timetravel: false, -}; \ No newline at end of file diff --git a/projects/oxium/index.js b/projects/oxium/index.js deleted file mode 100644 index f6e5f1ed9a7..00000000000 --- a/projects/oxium/index.js +++ /dev/null @@ -1,101 +0,0 @@ - -const { cachedGraphQuery } = require("../helper/cache"); - -const config = { - sei: { - reader: "0xfeafb31AC7f09892B50c4d6DA06a1e48D487499E", - api_url: "https://indexer-sei.mgvinfra.com/", - chainId: 1329, - } -} - -const abi = { - openMarkets: "function openMarkets() view returns ((address,address,uint256)[])", - offerList: "function offerList((address,address,uint256),uint256,uint256) view returns (uint256,uint256[],(uint256,uint256,int256,uint256)[],(address,uint256,uint256,uint256)[])", - getUnderlyingBalances: "function getUnderlyingBalances() public view returns (uint256 baseAmount, uint256 quoteAmount)", - totalBalances: "function totalBalances() public view returns (uint256 baseAmount, uint256 quoteAmount)", -} - - -const query = (chainId) => ` -query DefiLlama { - mangroveVaults (where:{chainId:${chainId}}) { - items { - address - baseAddress - quoteAddress - kandelAddress - } - } - vaultsV2s (where:{chainId:${chainId}}) { - items{ - address - baseAddress - quoteAddress - kandelAddress - } - } -} -` - -module.exports = { - methodology: "TVL is the total value promised on oxium markets in addition to all non promised value that are in the ALM vaults.", - start: "2025-04-25", - doublecounted: true, // tokens are kept in yei vault to get the yield -} - -async function getBalances(api, items, vaultMakers, version) { - const balances = await api.multiCall({ abi: version === 1 ? abi.getUnderlyingBalances : abi.totalBalances, calls: items.map(vault => vault.address) }) - balances.forEach((bals, i) => { - const { baseAddress, quoteAddress, kandelAddress } = items[i] - vaultMakers.add(kandelAddress.toLowerCase()) - - api.add(baseAddress.toLowerCase(), bals.baseAmount) - api.add(quoteAddress.toLowerCase(), bals.quoteAmount) - }) -} - -Object.keys(config).forEach(chain => { - const configEntry = config[chain] - module.exports[chain] = { - tvl: async (api) => { - // vault tvl - const { mangroveVaults: { items: itemsV1 }, vaultsV2s: { items: itemsV2 } } = await cachedGraphQuery(`oxium-vaults-v2-${configEntry.chainId}`, configEntry.api_url, query(configEntry.chainId)) - - const vaultMakers = new Set() - - await Promise.all([ - getBalances(api, itemsV1, vaultMakers, 1), - getBalances(api, itemsV2, vaultMakers, 2) - ]) - - // book tvl - const openMarkets = await api.call({ target: configEntry.reader, abi: abi.openMarkets, }) - for (const market of openMarkets) { - let currentId = 0 - const token = market[0] - do { - - const [newCurrId, _, offers, offerDetails] = await api.call({ - target: configEntry.reader, - abi: abi.offerList, - params: [market, currentId, 100], - }) - offers.forEach((offer, index) => { - const maker = offerDetails[index][0].toLowerCase() - if (vaultMakers.has(maker)) return // skip vaults - const gives = offer[3] - api.add(token.toLowerCase(), gives) - }) - - currentId = +newCurrId - } while (currentId !== 0) - } - } - } -}) - - - - - diff --git a/projects/oxygen/index.js b/projects/oxygen/index.js deleted file mode 100644 index b4cf36f6698..00000000000 --- a/projects/oxygen/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') - - -async function tvl(api) { - return sumTokens2({ owner: '4ncyWnbG22vqEmyxTfBsEdbNuQhBphaasg5q5YgoiPgq'}) -} - -module.exports = { - timetravel: false, - solana: { - tvl, - borrowed: () => 0, - }, - deadFrom: '2022-11-01' -} diff --git a/projects/p2pb2b/index.js b/projects/p2pb2b/index.js deleted file mode 100644 index 87281e64a0a..00000000000 --- a/projects/p2pb2b/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.p2pb2b, - }, - ethereum: { - owners: [ - '0xcfed1443a1ed773119ed1a41a39b3b66f0ffde0f', - '0x302f4d246fc1E283AF3239311B8B84bD5a1c7736', - '0x03feA254cfA7434004E8d495725bCbB7cCc40454', - '0x7a2556e23ce7bc1ADFBDCa650130390A10C05f63' - ], - }, - bsc: { - owners: [ - '0x83455d6c365dcbac10855c623da884b552aaefdd', - '0x03feA254cfA7434004E8d495725bCbB7cCc40454' - ] - }, - polygon: { - owners: [ - '0x302f4d246fc1E283AF3239311B8B84bD5a1c7736' - ] - } -} - -module.exports = cexExports(config) -module.exports.methodology = 'We are only tracking part of their cold wallets for P2PB2B, more information here https://coinmarketcap.com/exchanges/p2b/' diff --git a/projects/p2pflip/index.js b/projects/p2pflip/index.js deleted file mode 100644 index 317bc28d6df..00000000000 --- a/projects/p2pflip/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const TOKENS = [coreAssets.matchain.MAT, coreAssets.matchain.USDT, coreAssets.matchain.WBNB] -const P2PFLIP = ['0xb71348d7035bC86bbb82471d2963789863E64b60'] - -module.exports = { - methodology: "Counts all tokens held by the P2P coinflip game contract including: active flip stakes from ongoing games, pending withdrawals from resolved games awaiting player collection, and session balances from Express Mode deposits. Players can create coin flip challenges by depositing supported tokens (MAT, USDT, WBNB), which are locked in the contract until the flip is resolved or cancelled. Winnings from resolved flips remain in the contract until players withdraw them.", - matchain: { - tvl: sumTokensExport({ owners: P2PFLIP, tokens: [...TOKENS, coreAssets.null] }), - }, - }; - \ No newline at end of file diff --git a/projects/paal/index.js b/projects/paal/index.js deleted file mode 100644 index 7799ef16d80..00000000000 --- a/projects/paal/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') - -const pall = "0x14feE680690900BA0ccCfC76AD70Fd1b95D10e16" - -const staking14days = "0x85e253162C7e97275b703980F6b6fA8c0469D624" -const staking28days = "0x163Ad6AC78FFE40E194310faEaDA8f6615942d7b" -const staking56days = "0x8431060c8e72793aFaDA261E9DD0Ab950e80894F" - - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: () => 0, - staking: sumTokensExport({ owners: [staking14days, staking28days, staking56days], tokens: [pall] }), - }, - methodology: - "Counts all PALL staking in the 3 pools", -}; \ No newline at end of file diff --git a/projects/pac-finance/index.js b/projects/pac-finance/index.js deleted file mode 100644 index c34bfa01346..00000000000 --- a/projects/pac-finance/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const UiPoolDataProviderABI = { - "getReservesData": "function getReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 baseLTVasCollateral, uint256 reserveLiquidationThreshold, uint256 reserveLiquidationBonus, uint256 reserveFactor, bool usageAsCollateralEnabled, bool borrowingEnabled, bool stableBorrowRateEnabled, bool isActive, bool isFrozen, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint128 stableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint256 availableLiquidity, uint256 totalPrincipalStableDebt, uint256 averageStableRate, uint256 stableDebtLastUpdateTimestamp, uint256 totalScaledVariableDebt, uint256 priceInMarketReferenceCurrency, address priceOracle, uint256 variableRateSlope1, uint256 variableRateSlope2, uint256 stableRateSlope1, uint256 stableRateSlope2, uint256 baseStableBorrowRate, uint256 baseVariableBorrowRate, uint256 optimalUsageRatio, bool isPaused, bool isSiloedBorrowing, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt, bool flashLoanEnabled, uint256 debtCeiling, uint256 debtCeilingDecimals, uint8 eModeCategoryId, uint256 borrowCap, uint256 supplyCap, uint16 eModeLtv, uint16 eModeLiquidationThreshold, uint16 eModeLiquidationBonus, address eModePriceSource, string eModeLabel, bool borrowableInIsolation)[], tuple(uint256 marketReferenceCurrencyUnit, int256 marketReferenceCurrencyPriceInUsd, int256 networkBaseTokenPriceInUsd, uint8 networkBaseTokenPriceDecimals))" -} - -const address = { - blast: { - UiPoolDataProvider: "0x1205529dc4fe0844039099cf7125aEF38B7c058F", - PoolAddressProvider: "0x688B5fd3C3E3724b4De08C4BCB3A755F9b579c9a", - }, -}; - -async function tvl(api) { - const { UiPoolDataProvider, PoolAddressProvider } = address[api.chain]; - let [reservesData] = await api.call({ - target: UiPoolDataProvider, - params: PoolAddressProvider, - abi: UiPoolDataProviderABI.getReservesData, - }); - - let toa = reservesData.map((i) => [i.underlyingAsset, i.aTokenAddress]); - - return sumTokens2({ api, resolveLP: true, tokensAndOwners: toa }); -} - -async function borrowed(api) { - const { UiPoolDataProvider, PoolAddressProvider } = address[api.chain]; - let [reservesData] = await api.call({ - target: UiPoolDataProvider, - params: PoolAddressProvider, - abi: UiPoolDataProviderABI.getReservesData, - }); - - reservesData.forEach((d) => { - api.add(d.underlyingAsset, d.totalScaledVariableDebt * d.variableBorrowIndex * 1e-27) - }); - - return sumTokens2({ api, resolveLP: true, }); -} - -module.exports = { - deadFrom: '2025-03-01', - blast: { tvl, borrowed }, -}; diff --git a/projects/pacaswap-bridge/index.js b/projects/pacaswap-bridge/index.js deleted file mode 100644 index e2e49ad1ddd..00000000000 --- a/projects/pacaswap-bridge/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - const data = await get('https://api.pacaswap.com/mainnet/coingecko/tickers_complete') - api.addUSDValue(data.reduce((acc, i) => acc + +i.liquidity_in_usd, 0)) -} - -module.exports = { - constellation: { tvl }, - misrepresentedTokens: true, - methodology: "Value of tokens locked in the pacaswap metagraph", -}; \ No newline at end of file diff --git a/projects/pacifica/index.js b/projects/pacifica/index.js deleted file mode 100644 index a48feb137de..00000000000 --- a/projects/pacifica/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { sumTokensExport } = require('../helper/solana') - -module.exports = { - solana: { tvl: sumTokensExport({ tokenAccounts: ['72R843XwZxqWhsJceARQQTTbYtWy6Zw9et2YV4FpRHTa'] }) } -} \ No newline at end of file diff --git a/projects/pacificswap-v3/index.js b/projects/pacificswap-v3/index.js deleted file mode 100644 index a81a4ce5a79..00000000000 --- a/projects/pacificswap-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - manta: { - factory: "0x0420ec530da3becaac33b0e8702756195cd847fe", - fromBlock: 247429, - }, -}); diff --git a/projects/pacificswap/index.js b/projects/pacificswap/index.js deleted file mode 100644 index 9b74964f6da..00000000000 --- a/projects/pacificswap/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); -module.exports = uniTvlExport('manta', '0x19405689008954ccddbc8c7ef2b64dd88b4a674a') diff --git a/projects/pacman/index.js b/projects/pacman/index.js deleted file mode 100644 index cf82ad1db31..00000000000 --- a/projects/pacman/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { graphQuery } = require('../helper/http') - -const subgraphUrl = sdk.graph.modifyEndpoint('9xteTELUdzjii1yLASJm6CxSpYuS1bmE6DGWMMhgkq2k'); - -const vaultsQuery = ` - query { - vaults { - baseToken { - id - priceByUsd - decimals - } - id - availableAmount - totalDeposit - totalDebt - } - } -`; - -async function tvl(api) { - const { vaults } = await graphQuery(subgraphUrl, vaultsQuery) - vaults.forEach(({ baseToken: { id, decimals }, totalDebt, totalDeposit}) => { - api.add(id, (totalDeposit - totalDebt) * ( 10 ** decimals)) - }) -} - -module.exports = { - arbitrum: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/pacoca/index.js b/projects/pacoca/index.js deleted file mode 100644 index bb553dbe988..00000000000 --- a/projects/pacoca/index.js +++ /dev/null @@ -1,123 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') -async function staking(api) { - const data = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: 'function poolInfo(uint256) view returns ( address want, uint256, uint256, uint256, address strat)', target: '0x55410D946DFab292196462ca9BE9f3E4E4F337Dd' }) - const tokensAndOwners = data.map(pool => [pool.want, pool.strat]) - return api.sumTokens({ tokensAndOwners, blacklistedTokens: ['0xe837d51f5937c450a6d28280ab73b2602cde7735'] }) -} - - -async function tvl(api) { - const v2Vaults = [ - "0xD0CEe0BF1fC137777a8a53f4C99000B5A2269c31", - "0xD0CEd4bbDdeC0e97fFE579e2f162aecB9383ac6D", - "0xD0CEd179290beB24c1b42C73d701f199F2989D27", - "0xD0CEA25545eC1440ffE82dC860cA348cd1178792", - "0xD0CE91F507cE4a51442B6022E8c85aC287bcd048", - "0xD0CE39E2750e4aCDc63760e642Ba7a0B341b842E", - "0xD0CEb6DB9fF7E4B45F450a344B1b8c2512D79DB8", - "0xD0CE4a27FD544416D22aC4DE50384111B26e7902", - "0xD0CEf44C1F9F123D45A6bCD6ECcC8436209Da066", - "0xD0CEfDe05Bf55CA1693476A5B8B05F5494A6dBC3", - "0xD0CEb8DaE2A8D390AeC07cD13bbdfCF99bcEF0b1", - "0xD0CEd165609Aa0eB471ee93F60a47c4f302F313c", - "0xD0CE7c79A28CB2ae6332fD4fdB18291FF32E2872", - "0xD0CEfEaa4C746912C3BcF002992F2aFF8364CE1A", - "0xD0CE0D5413414E8c75289D9Fe81A297234F970c9", - "0xD0CED5594c70e16550a33a5ae52E70596D2ee267", - "0xD0CEa1e6F5f343961f4A869af0951123aa39092d", - "0xD0CEa5d14B0eDAF5779f64D7d6F3617DE09fFBa5", - "0xD0CE0018cFBa3B27574486dd2328b213e04b417f", - "0xD0CEa8507f33BB4C9FF4885EAcB535cB41C2dc67", - "0xD0CEb09DB35b1F5a8e5F0572668Eb1b212F1A343", - "0xD0CEb6698958089f9609be9DDC1b9559967DA606", - "0xD0CEcf6F187eD18653Bc491570720Fb2eaffa6Ef", - "0xD0CEb528e9313737DC283b072C5338795C163E93", - "0xD0CEc9Db398BA15c91F98b4524ab80682503339E", - "0xD0CEcD6e1804810338024C41EAB9872A1A723255", - "0xD0CEdd809Dc5e17ddf846453309c41d727605a9C", - "0xD0CEa2e0ddC11Fa357f3dEe3e67d0dD842C30c05", - "0xD0CEb87a7139692AeCBc8FeC8bCDCCcDa23De69E", - "0xD0CEa5ec555B71abE601d76208cD79D08ED9A143", - "0xD0CEc030fBf50FF3419377951C9503A5159BF411", - "0xD0CEeF6828763351155b793E9F2Cd9C3fE7440A6", - "0xD0CEc151AD35b64c4Fb42C0Df7cDe0f349D0fa43", - "0xD0CEf749f85FBD925cFb0B136c92C710e90F5Fe1", - "0xD0CEc6C537780829089F387Aa6C21c0823186fA7", - "0xD0CEde5b349Dd101cff2f063514595e802feE683", - "0xD0CEb3c3943Ad5252d9A91e99469c2079C38ECC5", - "0xD0CEf1D7E519afbb66f57b3B3D5C39Eee7405090", - "0xD0CEa9e111d3c7947bcA7510b9Eef3869aFcf8b4", - "0xD0CEb6740E31d5Ede1961963D6160e155C23d2B3", - "0xD0CEcba58C5e83bf6506AA471E4f4740846c8C31", - "0xD0CEbe7B1550f474f728C553d9508e14aC5fFb9F", - "0xD0CEc104d1798dbFc943Eb41349099C71F6C47c3", - "0xD0CEf92C9cCFFe5640F62F11a48ABC5948fee98D", - "0xD0CEa14953480125Cff993BD63f6B6659693E73B", - "0xD0CEdc18dBe9c81A533E971917772aF4192bBF00", - "0xD0CEd0bb37DeFe6d2c7B8d9BdfA1529C850DD131", - "0xD0CEa1D43C233a1758f4689302cFE243C1da63E0", - "0xD0CEd8680d7676D278c13f6603363011F44670A2", - "0xD0CEdffAA4d05f3fe91486ce17d2e4C16b02C30C", - "0xD0CEa57e2A91a40447B6B64f9C039c4f990E7878", - "0xD0CEceCAA302f707DB2100Df9379C8D8Bb179D80", - "0xD0CEeaE6181C50b32fE83fBBde2Cd7DcCA3023aa", - "0xD0CE11034ebf731162Bc50c05Ba57809791d8b7d", - "0xD0CE12b874aa0Da96563e9096Bc90e950859b66e", - "0xD0CE7d29ac012702A41F410b7ceaa7Be104BBCe8", - "0xD0CE387Bb8a117F51Ad44889d99A1026634d6981", - "0xD0CEa7C3B535C0484D41026819d1FAF8729041A2", - "0xD0CE57584e2cA1Acad2Eae12a71EecFAcE7Fb244", - "0xD0CEb625BfFCBc08F66917a56D015f23A07196F6", - "0xD0CE1E3d9c34647a4Ad7Cd7d2A9A202243393F47", - "0xD0CEdc5104602c085b695b980c9912951d8FffDb", - "0xD0CEEF5c4A337b9E3F680e682B1Ea0E611b52561", - "0xD0CEE30000f220872F5Fdd38CE0aF5294B76FBaa", - "0xD0CEE9272a47079d0298Fd353E89f76D0d907051", - "0xD0CE871496b859b57EFc425B7AbC97E4C64e5d34", - "0xD0CE955E9CB63a2477a4046430A04e4A04aB29b7", - "0xD0CE42947fe733c4F6f99Ba1AD042B037b30dfc9", - "0xD0CE475D00Af87c60a767a0017421D4A32a8FfC5", - "0xD0CE2b627AB7bef9ca53F489976e82B3D8D1C5A4", - "0xD0CE59764527b6Ff93b268D93E34Bc32c08c9ee2", - "0xD0CEafceb360bdcC65D4Fe0E0a44e2656cF75184", - "0xD0CEad415a3DC034f967ABE4345d6C832a97c866", - "0xD0CE6E3b75371e244d6Dd19e0a3f9B4A83bAEd08", - "0xD0CEcBfbFE266D98b16112073037084126Efd267", - "0xD0CE3013eF6EedF2A7E7a03d9F1421Cff258f4C7", - "0xD0CE66Be3c69d5CE92A6F5A1559d1733891b8c34", - "0xD0CE399c94Af9cDDbBD70410D424300a6E3c4473", - "0xD0CEb06277FdE9F3aE4FAcD317f3B0b1d8E6f0AA", - "0xD0CE92AA105D79E7aC59e1D14dEf15eB256Feec2", - "0xD0CE668B95F82a376D153bF0de2E87bfD271b871" - ] - - const v1Vaults = [ - "0x16205528a8f7510f4421009a7654835b541bb1b9", - "0x705dA3639Ebb5F8255a520d6e9d016F5a3eBce8D", - "0xD0CEc79567576B0f5b4b8957B0B82f1f88d4C7d1", - "0xD0CEa90a27574Ab7B7B0B9B12d3BDF98ad4be5A2", - "0xD0CEc23fE3d1DF4D5aB71f147934bCB1Aa34521B", - "0x7cFAc15c404D1798d08888Af60E386E384636b8D", - "0x1eD05e6d9a66c4d8d789e8198F0282C261807F8b", - "0xD0CEe98675F17f4CaBE4f42f481465F87df3B8BD", - "0xD0CE645C728B70d29014d8A882029144De3d37FB", - "0xD0CEBBC82Ee17a5c52627935A028a4aFB0De799c", - "0xD0CEEC3233Ea1Aba3EC055660AbEC6e8b99e1c1c", - "0xD0CE6Aea3e4871F88e428a4651835FAfE35C7f43", - "0xD0CEf575f56092d92fC56c2F6B9D62D45E7DA73F" - ] - const vaults = v1Vaults.concat(v2Vaults) - const tokens = await api.multiCall({ abi: 'address:STAKED_TOKEN', calls: vaults, permitFailure: true }) - const bals = await api.multiCall({ abi: 'uint256:totalStake', calls: vaults, permitFailure: true }) - tokens.forEach((token, i) => { - if (!token || !bals[i]) return; - api.add(token, bals[i]) - }) - return api.getBalances() -} - -module.exports = { - bsc: { - tvl, staking, - }, -}; diff --git a/projects/pactfi.js b/projects/pactfi.js deleted file mode 100644 index 0652f59f1c2..00000000000 --- a/projects/pactfi.js +++ /dev/null @@ -1,25 +0,0 @@ -const { get } = require('./helper/http') -const { getConfig } = require('./helper/cache') - -const blacklistedTokens = new Set(['3178895177', '1387238831']) - -async function tvl(api) { - await getConfig('pact-fi', 'https://api.pact.fi/api/internal/pools_details/all') - const global_data = await get("https://api.pact.fi/api/internal/pools_details/all") - let usdValue = 0 - const assetTable = [] - for (const pool of global_data) { - const symbol = pool.assets.map(i => i.unit_name ).join("-") - assetTable.push([symbol, pool.tvl_usd]) - if (!pool.assets.some(i => blacklistedTokens.has(i.on_chain_id))) { - usdValue += +pool.tvl_usd - } - } - // console.table(assetTable) - return api.addUSDValue(Math.round(usdValue)) -} - -module.exports = { - misrepresentedTokens: true, - algorand: { tvl }, -}; \ No newline at end of file diff --git a/projects/padswap/index.js b/projects/padswap/index.js deleted file mode 100644 index 3712039e8fa..00000000000 --- a/projects/padswap/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') - -const TOAD_ADDRESS = "0x463e737d8f740395abf44f7aac2d9531d8d539e9"; -const TOAD_FARM_ADDRESS = "0xe1F1EDfBcEfB1E924e4a031Ed6B4CAbC7e570154"; -const TOAD_PADSWAP_FARM_V1_ADDRESS = - "0xD2d7b6b333AbF180520494c021f7125806eD273e"; -const TOAD_PADSWAP_FARM_V2_ADDRESS = - "0x4992df071416370fe780627eDFDD8CbC694Ed08b"; - -const PADSWAP_BSC_FACTORY_ADDRESS = - "0xB836017ACf10b8A7c6c6C9e99eFE0f5B0250FC45"; -const PADSWAP_MOONRIVER_FACTORY_ADDRESS = - "0x760d2Bdb232027aB3b1594405077F9a1b91C04c1"; -const PADSWAP_MOONBEAM_FACTORY_ADDRESS = - "0x663a07a2648296f1A3C02EE86A126fE1407888E5"; - -module.exports = { - hallmarks: [ - [1659312000,"Nomad Bridge Exploit"], - ], - methodology: `TVL accounts for the liquidity on all AMM pools (see https://info.padswap.exchange/ and https://movr-info.padswap.exchange/). Staking includes all TOAD staked in TOAD farms.`, - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: PADSWAP_BSC_FACTORY_ADDRESS, useDefaultCoreAssets: true, blacklistedTokens: ['0xcdb943908de5ee37998a53f23467017d1a307e60'], }), - staking: stakings( - [ - TOAD_FARM_ADDRESS, - TOAD_PADSWAP_FARM_V1_ADDRESS, - TOAD_PADSWAP_FARM_V2_ADDRESS, - ], - TOAD_ADDRESS, - "bsc" - ), - }, - moonriver: { - tvl: getUniTVL({ factory: PADSWAP_MOONRIVER_FACTORY_ADDRESS, useDefaultCoreAssets: true, }), - }, - moonbeam: { - tvl: getUniTVL({ factory: PADSWAP_MOONBEAM_FACTORY_ADDRESS, useDefaultCoreAssets: true, }), - } -}; diff --git a/projects/paintswap-orderbook/index.js b/projects/paintswap-orderbook/index.js deleted file mode 100644 index 9c275d1b0c9..00000000000 --- a/projects/paintswap-orderbook/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs.js') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - sonic: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.null, '0x9a7e4c8fe2679D43145Da69ff191a5C9F841996b'], - [ADDRESSES.sonic.USDC_e, '0xed286fd8f8364058778B80D69b2158Dd09edb634'], - [ADDRESSES.sonic.scUSD, '0x575a809Ccc7d1e90D717b4E66928289F2d09db8F'], - ] - }) - } -} \ No newline at end of file diff --git a/projects/paintswap/index.js b/projects/paintswap/index.js deleted file mode 100644 index 63eff962768..00000000000 --- a/projects/paintswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking.js'); - -const factory = '0x733A9D1585f2d14c77b49d39BC7d7dd14CdA4aa5' -const masterchef = '0xCb80F529724B9620145230A0C866AC2FACBE4e3D' -const brush = '0x85dec8c4b2680793661bca91a8f129607571863d' -const ART_GALLERY_FANTOM = '0x9076C96e01F6F13e1eC4832354dF970d245e124F'; - -module.exports = { - misrepresentedTokens: true, - fantom: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), - staking: staking([masterchef, ART_GALLERY_FANTOM], brush), - }, -} \ No newline at end of file diff --git a/projects/pairex/index.js b/projects/pairex/index.js deleted file mode 100644 index d13fdb5d8dc..00000000000 --- a/projects/pairex/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs') - -const contracts = [ - '0x154fDc2e0c4A2e4b39AFc329f0df88499d96F665', - '0x9CC1b358E39651F118AA02126648f4a770B7432D', - '0x2Ca07638acDa0B2bEa7B6a06F135476BDdd7101B', - '0xA7dE0DD19004b430cC8C920fCA9F5FDE5A66379b', - '0x35DD17F0d9098fc5B24D6328122B4C9ea5dD7DB5', - '0x0a30067Ad5ff753F6887bBaF03b467C87CF62eF3' -] - -const tokens = [ - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.LINK -] - -module.exports = { - start: '2023-03-15', // 15/03/2023 @ 04:00am (UTC) - arbitrum: { - tvl: sumTokensExport({ tokens, owners: contracts }), - }, - hallmarks: [ - [1678852800, "Arbitrum Pairex Launch"] - ] -} diff --git a/projects/pala/abi.json b/projects/pala/abi.json deleted file mode 100644 index 351fb133ca5..00000000000 --- a/projects/pala/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "poolInfos": "function poolInfos() view returns (tuple(address pool, address token0, address token1, string name, string symbol, uint8 decimals, uint256 totalSupply, uint112 token0Reserve, uint112 token1Reserve, uint256 token0Balance, uint256 token1Balance)[] poolInfoList)", - "tokenInfoDetail": "function tokenInfoDetail(address token) view returns (tuple(address token, string name, string symbol, uint8 decimals, uint256 totalSupply) info, uint256 price)", - "balanceOf": "function balanceOf(address) view returns (uint256)", - "totalSupply": "uint256:totalSupply", - "farmInfos": "function farmInfos(address farm) view returns (tuple(address pool, uint256 totalLP, uint256 allocPoint, uint256 lastRewardBlock, uint256 accRewardPerShare)[] farmInfoList, tuple(uint256 attenTotalAllocPoint, uint256 attenFarmStartBlock, uint256 attenFarmEndBlock, uint256 attenPerBlock, uint256 attenBonusMultiplier, uint256 palaTotalAllocPoint, uint256 palaFarmStartBlock, uint256 palaPerBlock, uint256 palaBonusMultiplier) config)" -} \ No newline at end of file diff --git a/projects/pala/index.js b/projects/pala/index.js deleted file mode 100644 index c8c0d8f11cb..00000000000 --- a/projects/pala/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const ABI = require("./abi.json"); -const sdk = require('@defillama/sdk') -const { PromisePool } = require('@supercharge/promise-pool') -const ADDRESSES = require('../helper/coreAssets.json') - -const VIEWER_ADDR = "0x2B16648ddD1559fc86e0c0617213Ab5dd2Ea01B9"; -const chain = 'klaytn' - -const getPoolsInfo = async (block) => { - return (await sdk.api.abi.call({ target: VIEWER_ADDR, abi: ABI.poolInfos, block, chain })).output -} - -const getTokenInfoDetail = async (block, tokenAddr) => { - return (await sdk.api.abi.call({ target: VIEWER_ADDR, abi: ABI.tokenInfoDetail, block, chain, params: tokenAddr })).output -} - -const calcPoolLiquidityVolume = (pool, tokenMapping) => { - const t0Detail = tokenMapping[pool.token0] || { decimals: 1, price: 0}; - const t0decimals = t0Detail.decimals; - const t0Price = t0Detail.price; - const t1Detail = tokenMapping[pool.token1] || { decimals: 1, price: 0}; - const t1decimals = t1Detail.decimals; - const t1Price = t1Detail.price; - - return ((t0Price / 1e18) * (pool.token0Reserve / Math.pow(10, t0decimals))) + - ((t1Price / 1e18) * (pool.token1Reserve / Math.pow(10, t1decimals))); -} - -const fetchLiquidity = async (ts, _block, chainBlocks) => { - const block = chainBlocks[chain] - const tokenMapping = {} - const poolInfos = await getPoolsInfo(block) - let tokenSet = new Set() - poolInfos.forEach((pool) => { - tokenSet.add(pool.token0) - tokenSet.add(pool.token1) - }) - - await PromisePool - .withConcurrency(3) - .for([...tokenSet]) - .process(async token => { - const response = await getTokenInfoDetail(block, token) - tokenMapping[token] = { - price: response.price, - decimals: response.info.decimals - } - }) - - const tvl = poolInfos.reduce((acc, pool) => { - return acc + calcPoolLiquidityVolume(pool, tokenMapping) - }, 0) - return { - [`klaytn:${ADDRESSES.klaytn.USDT}`]: Number(tvl).toFixed(0) * 1e6 - }; -} - - -module.exports = { - klaytn: { - tvl: fetchLiquidity - }, - methodology: - "Sum of the total volume of the LPs. Staked is calculated by sum of the total staked PALA tokens" -} \ No newline at end of file diff --git a/projects/paladin-dao/index.js b/projects/paladin-dao/index.js deleted file mode 100644 index ed1cd89d60a..00000000000 --- a/projects/paladin-dao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const token = "0xb4da413d7643000a84c5b62bfb1bf2077604b165"; -const tokenStake = "0x7B73d56c53059699003ac11aF4308f6bEb4877FF"; -const treasury = "0x6382192259f45a7acDa2A08cc30ce9FaF0e1863E"; -const tokens = [ - [ADDRESSES.bsc.BUSD, false], // BUSD - ["0x103900036e483c85ea4748b6733f621b8df21e2d", true] // PAL-BUSD -]; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, tokens, "bsc", tokenStake, token, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/paladinfinance-dullahan/index.js b/projects/paladinfinance-dullahan/index.js deleted file mode 100644 index 4d39425d900..00000000000 --- a/projects/paladinfinance-dullahan/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); - -const DULLAHAN_VAULT = "0x167c606be99DBf5A8aF61E1983E5B309e8FA2Ae7"; - -async function tvl(api,) { - api.add(ADDRESSES.ethereum.AAVE, await api.call({ target: DULLAHAN_VAULT, abi: 'uint256:totalAssets' })); -} - -module.exports = { - doublecounted: true, - methodology: "Amount of stkAAVE owned by the vault", - ethereum: { - tvl, - }, -}; diff --git a/projects/paladinfinance-warlord/abi.json b/projects/paladinfinance-warlord/abi.json deleted file mode 100644 index ab2a894df7f..00000000000 --- a/projects/paladinfinance-warlord/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "token": "address:token", - "getCurrentLockedTokens": "uint256:getCurrentLockedTokens", - "lockers": "function lockers(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/paladinfinance-warlord/index.js b/projects/paladinfinance-warlord/index.js deleted file mode 100644 index f3719aa0e44..00000000000 --- a/projects/paladinfinance-warlord/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); - -const WAR_CONTROLLER = "0xFDeac9F9e4a5A7340Ac57B47C67d383fb4f13DBb"; - -async function getLockers(api) { - let lockers = []; - - for (let i = 0; i != -1; ++i) { - try { - const output = await api.call({ - target: WAR_CONTROLLER, - abi: abi["lockers"], - params: i - }) - lockers.push(output); - } catch(e) { - break; - } - } - - return lockers; -} - -async function ethTvl(api,) { - const balances = {}; - - const lockers = await getLockers(api); - - const bals = await api.multiCall({ abi: abi["getCurrentLockedTokens"], calls: lockers.map(i => ({ target: i})) }) - const tokens = await api.multiCall({ abi: abi["token"], calls: lockers.map(i => ({ target: i})) }) - - bals.forEach((v, i) => sdk.util.sumSingleBalance(balances, tokens[i], v)) - - return balances; -} - -module.exports = { - methodology: "Counts the total locked tokens inside the lockers contracts", - ethereum: { - tvl: ethTvl, - }, -}; diff --git a/projects/paladinfinance/index.js b/projects/paladinfinance/index.js deleted file mode 100644 index 8a4fe5f02d7..00000000000 --- a/projects/paladinfinance/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = { - "underlying": "address:underlying", - "underlyingBalance": "uint256:underlyingBalance", - "totalBorrowed": "uint256:totalBorrowed", - "totalReserve": "uint256:totalReserve" -} - -const poolAddresses = [ - "0x50bE5fE4de4efC3A0adAc6587254836972055423", //palCOMP - "0x7835d976516F82cA8a3Ed2942C4c6F9C4E44bb74", //palUNI - "0x7ba283b1dDCdd0ABE9D0d3f36345645754315978", //palAAVE - "0xCDc3DD86C99b58749de0F697dfc1ABE4bE22216d" //palStkAAVE -] - -async function ethTvl(api) { - - let calls = poolAddresses - - let underlyingTokens = await api.multiCall({ calls, abi: abi["underlying"], }) - let underlyingBalances = await api.multiCall({ calls, abi: abi["underlyingBalance"], }); - let totalBorrowed = await api.multiCall({ calls, abi: abi["totalBorrowed"], }); - let totalReserve = await api.multiCall({ calls, abi: abi["totalReserve"], }) - - for (let i = 0; i < poolAddresses.length; i++) { - let token = underlyingTokens[i]; - - //If stkAAVE address then change token address to AAVE address - if (token === "0x4da27a545c0c5B758a6BA100e3a049001de870f5") { - token = ADDRESSES.ethereum.AAVE; - } - const tvl = +underlyingBalances[i] + +totalBorrowed[i] - +totalReserve[i]; - api.add(token, tvl) - } -} - -module.exports = { - methodology: "TVL = cash + borrowed - reserve", - ethereum: { - tvl: ethTvl, - }, -}; diff --git a/projects/palladium/index.js b/projects/palladium/index.js deleted file mode 100644 index eda8fcd0304..00000000000 --- a/projects/palladium/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const ADMIN_ADDRESSES = { - btnx: "0x741145aF40A46cD8B7653Be09EC59CEb9c6c45e1" -} - -async function tvl(api) { - const adminContract = ADMIN_ADDRESSES[api.chain]; - const collAddresses = await api.call({ abi: "address[]:getValidCollateral", target: adminContract, }) - const activePool = await api.call({ abi: "address:activePool", target: adminContract, }) - await sumTokens2({ api, tokens: collAddresses, owner: activePool, }) -} - -module.exports = { - methodology: "Adds up the total value locked as collateral on the Palladium protocol", -} - -Object.keys(ADMIN_ADDRESSES).forEach((chain) => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/palm-economy/index.js b/projects/palm-economy/index.js deleted file mode 100644 index 0207fded427..00000000000 --- a/projects/palm-economy/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens2 } = require('../helper/chain/cardano'); - -const PALMStaking = 'addr1wxu6gpdsy6xv5c5r9s9t3ngyh0svvn8lqgfajwgxpry3slg86ahe3' -const PALMTokenAddress = 'b7c5cd554f3e83c8aa0900a0c9053284a5348244d23d0406c28eaf4d50414c4d0a' - -async function stake() { - return await sumTokens2({ - owner: PALMStaking, - tokens: [PALMTokenAddress] - }); -} - -module.exports = { - timetravel: false, - cardano: { - tvl: () => 0, - staking: stake - }, -} \ No newline at end of file diff --git a/projects/palmaswap/index.js b/projects/palmaswap/index.js deleted file mode 100644 index 784385db044..00000000000 --- a/projects/palmaswap/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, staking } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') -const uniTvl = getUniTVL({ factory: '0xb8b9a4d9beE1fB41b03edfa47640b1dadF49EDd2', useDefaultCoreAssets: true, }) -const masterchef = '0x41338973c89Aa4bb47aFDCb29c5D74F81b8416A4' -const palma = '0xC2B82A3b2240509D54FbF3f1AC9fc2cA094a6f9c' -const weth = ADDRESSES.core.WCORE - -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1679356800, "Rug Pull"] - ], - deadFrom: '2023-03-21', - core: { - tvl: sdk.util.sumChainTvls([uniTvl, staking({ - owners: [masterchef], - tokens: [weth], - })]), - staking: staking({ - owners: [masterchef], - tokens: [palma], - lps: ['0x0D2055199924040BE0F0B855C9F4effaf5C1393e'], - useDefaultCoreAssets: true, - }) - } -}; diff --git a/projects/palmswap/index.js b/projects/palmswap/index.js deleted file mode 100644 index 98c7b929f62..00000000000 --- a/projects/palmswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); -const { staking } = require("../helper/staking"); - -const palmswapVault = "0x0cD6709ba5972eDc64414fd2aeC7F8a891718dDa"; //Vault - -const palmTokenStakingContract = "0x53ce47f3a148Fcb1F96E1Bf6F0a47D041D8d3788"; //RewardTracker -const palmToken = "0x29745314B4D294B7C77cDB411B8AAa95923aae38"; //PALM token address - -module.exports = { - bsc: { - tvl: gmxExports({ vault: palmswapVault, permitFailure: true, }), - staking: staking(palmTokenStakingContract, palmToken), - }, -}; diff --git a/projects/palmy/index.js b/projects/palmy/index.js deleted file mode 100644 index bc3629e9021..00000000000 --- a/projects/palmy/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveExports, methodology, } = require("../helper/aave"); - -module.exports = { - methodology, - oas: aaveExports("oas", '0xf4A3dDC5F629d9CB14DF4e7d5f78326153eA02A3', undefined, undefined, { - abis: { - getAllATokens: "function getAllLTokens() view returns (tuple(string symbol, address tokenAddress)[])" - }, - }), -}; diff --git a/projects/pancake-stryke/index.js b/projects/pancake-stryke/index.js deleted file mode 100644 index c73068a60ff..00000000000 --- a/projects/pancake-stryke/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const config = { - arbitrum: { - pools: [ - "0x501B03BdB431154b8Df17BF1c00756E3a8F21744", // WETHUSDC - "0x550e7E236912DaA302F7d5D0d6e5D7b6EF191f04", // WBTCUSDC - "0x4eed3A2b797Bf5630517EcCe2e31C1438A76bb92", // ARBUSDC - ], - }, -} - -Object.keys(config).forEach(chain => { - const { pools } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const callAssets = await api.multiCall({ abi: 'address:callAsset', calls: pools }) - const putAssets = await api.multiCall({ abi: 'address:putAsset', calls: pools }) - - return api.sumTokens({ tokensAndOwners2: [callAssets.concat(putAssets), pools.concat(pools)]}) - } - } -}) \ No newline at end of file diff --git a/projects/pancake-swap-stableswap/index.js b/projects/pancake-swap-stableswap/index.js deleted file mode 100644 index b389701e6f7..00000000000 --- a/projects/pancake-swap-stableswap/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -module.exports = { - methodology: - "TVL accounts for the liquidity on all StableSwap pools, using the TVL chart on https://pancakeswap.finance/info?type=stableSwap as the source.", -} - - -const config = { - bsc: [{ target: '0x25a55f9f2279a54951133d503490342b50e5cd15', fromBlock: 25535459, token3: true, },], - ethereum: [{ target: '0xD173bf0851D2803177CC3928CF52F7b6bd29D054', fromBlock: 20362671, token3: true, },], - arbitrum: [{ target: '0x5D5fBB19572c4A89846198c3DBEdB2B6eF58a77a', fromBlock: 169319653, token3: true, },], -} - - -Object.keys(config).forEach(chain => { - const factories = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const configs = await Promise.all(factories.map(getTvlConfig)) - return sumTokens2({ api, ownerTokens: configs.flat() }) - - async function getTvlConfig({ target, fromBlock, token3 }) { - let topic = '0xa9551fb056fc743efe2a0a34e39f9769ad10166520df7843c09a66f82e148b97' - let eventAbi = 'event NewStableSwapPair(address indexed swapContract, address indexed tokenA, address indexed tokenB)' - let getOwnTokens = logs => logs.map(i => ([[i.tokenA, i.tokenB], i.swapContract])) - if (token3) { - topic = '0x48dc7a1b156fe3e70ed5ed0afcb307661905edf536f15bb5786e327ea1933532' - eventAbi = 'event NewStableSwapPair(address indexed swapContract, address tokenA, address tokenB, address tokenC, address LP)' - getOwnTokens = logs => logs.map(i => ([[i.tokenA, i.tokenB, i.tokenC], i.swapContract])) - } - - const logs = await getLogs({ - api, - target, - topics: [topic], - fromBlock, - eventAbi, - onlyArgs: true, - }) - - return getOwnTokens(logs) - } - } - } -}) \ No newline at end of file diff --git a/projects/pancake-swap/index.js b/projects/pancake-swap/index.js deleted file mode 100644 index ded894fcb63..00000000000 --- a/projects/pancake-swap/index.js +++ /dev/null @@ -1,144 +0,0 @@ -const axios = require('axios'); -const { getLogs } = require('../helper/cache/getLogs') -const { request, } = require("graphql-request"); -const { toUSDTBalances } = require('../helper/balances') -const { stakings } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') -const { dexExport } = require('../helper/chain/aptos') - - -const graphEndpoint = 'https://proxy-worker.pancake-swap.workers.dev/bsc-exchange' -const currentQuery = ` -query pancakeFactories { - pancakeFactories(first: 1) { - totalLiquidityUSD - } -} -` -const historicalQuery = ` -query pancakeDayDatas { -pancakeDayDatas( - first: 1000 - orderBy: date - orderDirection: asc - ) { - date - dailyVolumeUSD - totalLiquidityUSD - __typename - } -} -` - -const graphUrl = 'https://api.thegraph.com/subgraphs/name/pancakeswap/exchange' -const graphQuery = ` -query get_tvl($block: Int) { - uniswapFactories( - block: { number: $block } - ) { - totalVolumeUSD - totalLiquidityUSD - } -} -`; -async function tvl({ timestamp }, ethBlock, chainBlocks) { - if (Math.abs(timestamp - Date.now() / 1000) < 3600) { - const tvl = await request(graphEndpoint, currentQuery, {}, { - "referer": "https://pancakeswap.finance/", - "origin": "https://pancakeswap.finance", - }) - return toUSDTBalances(tvl.pancakeFactories[0].totalLiquidityUSD) - } else { - const tvl = (await request(graphEndpoint, historicalQuery)).pancakeDayDatas - let closest = tvl[0] - tvl.forEach(dayTvl => { - if (Math.abs(dayTvl.date - timestamp) < Math.abs(closest.date - timestamp)) { - closest = dayTvl - } - }) - if (Math.abs(closest.date - timestamp) > 3600 * 24) { // Oldest data is too recent - const { uniswapFactories } = await request( - graphUrl, - graphQuery, - { - block: chainBlocks['bsc'], - } - ); - const usdTvl = Number(uniswapFactories[0].totalLiquidityUSD) - - return toUSDTBalances(usdTvl) - } - return toUSDTBalances(closest.totalLiquidityUSD) - } -} - -async function tvlPancakeExplorer({ timestamp }) { - const response = (await axios.get('https://explorer.pancakeswap.com/api/cached/protocol/chart/v2/bsc/tvl?groupBy=1D')).data - for (const item of response) { - if (item.bucket.split('T')[0] === new Date(timestamp * 1000).toISOString().split('T')[0]) { - return toUSDTBalances(item.tvlUSD) - } - } - - throw Error('date data not found') -} - -const defaultExport = { - tvl: getUniTVL({ factory: '0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E', useDefaultCoreAssets: true, }) -} - -const bscCakePool = '0x45c54210128a065de780c4b0df3d16664f7f859e' -const bscVeCake = '0x5692db8177a81a6c6afc8084c2976c9933ec1bab' - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://pancakeswap.finance/info as the source. Staking accounts for the CAKE locked in MasterChef (0x73feaa1eE314F8c655E354234017bE2193C9E24E)', - bsc: { - tvl: tvlPancakeExplorer, - }, - ethereum: { - tvl: getUniTVL({ factory: '0x1097053Fd2ea711dad45caCcc45EfF7548fCB362', useDefaultCoreAssets: true, }) - }, - polygon_zkevm: defaultExport, - linea: defaultExport, - aptos: dexExport({ - account: '0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa', - poolStr: 'swap::TokenPairReserve', - token0Reserve: i => i.data.reserve_x, - token1Reserve: i => i.data.reserve_y, - }).aptos, - era: { - tvl: getUniTVL({ factory: '0xd03D8D566183F0086d8D09A84E1e30b58Dd5619d', useDefaultCoreAssets: true, }) - }, - op_bnb: { - tvl: getUniTVL({ factory: '0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E', useDefaultCoreAssets: true, }) - }, - arbitrum: { ...defaultExport }, - base: defaultExport, -} - -// https://developer.pancakeswap.finance/contracts/syrup-pools -const config = { - bsc: { factory: [ - '0xfff5812c35ec100df51d5c9842e8cc3fe60f9ad7', - '0xe2aECF96D23575b11624d0891C0828E767c8cb8B', - '0x927158Be21Fe3D4da7E96931bb27Fd5059A8CbC2', - '0x29115Bf4863648BB01a9cEc43d8306EC51800642', - - ], CAKE: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', fromBlock: 7151302, pools: [bscCakePool, bscVeCake], }, - ethereum: { factory: ['0x4e742608c39eafd8525b03d39121ea00ccf3c727'], CAKE: '0x152649eA73beAb28c5b49B26eb48f7EAD6d4c898', fromBlock: 17077652, }, - era: { factory: ['0x99599dd26501fb329062d1e90cc9b9fc64c2d4c2'], CAKE: '0x3A287a06c66f9E95a56327185cA2BDF5f031cEcD', fromBlock: 12527309, }, - arbitrum: { factory: ['0xD621A46e8d8D077ceFfd080c6bD4Be60a1783D6c'], CAKE: '0x1b896893dfc86bb67Cf57767298b9073D2c1bA2c', fromBlock: 121169985, }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, CAKE, pools = [] } = config[chain] - module.exports[chain].staking = async (api) => { - for (const target of factory) { - const logs = await getLogs({ api, target, eventAbi: 'event NewSmartChefContract (address indexed smartChef)', onlyArgs: true, fromBlock, }) - pools.push(...logs.map(i => i.smartChef)) - } - return api.sumTokens({ owners: pools, tokens: [CAKE] }) - } -}) \ No newline at end of file diff --git a/projects/pancakeswap-infinity/index.js b/projects/pancakeswap-infinity/index.js deleted file mode 100644 index 7779ac51d62..00000000000 --- a/projects/pancakeswap-infinity/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -// https://developer.pancakeswap.finance/contracts/infinity/resources/addresses -const config = { - bsc: { vault: '0x238a358808379702088667322f80ac48bad5e6c4', clPoolManager: '0xa0ffb9c1ce1fe56963b0321b32e7a0302114058b', fromBlock: 47214308 }, - base: { vault: '0x238a358808379702088667322f80ac48bad5e6c4', clPoolManager: '0xa0ffb9c1ce1fe56963b0321b32e7a0302114058b', fromBlock: 30544106 }, -} - -Object.keys(config).forEach(chain => { - const { vault, clPoolManager, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ - api, - target: clPoolManager, - fromBlock, - eventAbi: 'event Initialize(bytes32 indexed id, address indexed currency0, address indexed currency1, address hooks, uint24 fee, bytes32 parameters, uint160 sqrtPriceX96, int24 tick)', - }) - const tokenSet = new Set() - logs.forEach(log => { - tokenSet.add(log.currency0) - tokenSet.add(log.currency1) - }) - const tokens = Array.from(tokenSet) - return api.sumTokens({ tokens, owner: vault, }) - } - } -}) \ No newline at end of file diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js deleted file mode 100644 index 70a91328912..00000000000 --- a/projects/pancakeswap-v3/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const { getConnection, sumTokens2, decodeAccount } = require('../helper/solana') -const { PublicKey } = require('@solana/web3.js') - -const factory = '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865' -const programId = 'HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq' - -const solTvl = async () => { - const connection = getConnection() - const accounts = await connection.getProgramAccounts(new PublicKey(programId), { filters: [ { dataSize: 1544 } ] }) - - const tokenAccounts = [] - for (const account of accounts) { - const poolData = decodeAccount('pancakeswapV3Pool', account.account) - - if (poolData.vaultA && poolData.vaultB) { - tokenAccounts.push(poolData.vaultA.toString()) - tokenAccounts.push(poolData.vaultB.toString()) - } - } - - return await sumTokens2({ tokenAccounts }) -} - -module.exports = { - solana: { tvl: solTvl }, - ...uniV3Export({ - bsc: { - factory, fromBlock: 26956207, blacklistedTokens: [ - '0x860368babf32129c18306a70ce7db10c5b437072', - '0xc476d3961f77645464acccce404eb17815a80878', - '0xf8c7f403829cc0f9a37f126a3da41358c232acdf', - '0x95e7c70b58790a1cbd377bc403cd7e9be7e0afb1', - '0x454f4597582df557c2757403f47d3f3bbb890d43', - '0xf1917602fff55a5ebccc7d03aead225dd9bf3776', - '0x121a3fba8456ebce13964363ba35fea00c2aa3d2', - '0xd24616870ca41bc01074446988faeb0085a71190', - ] - }, - ethereum: { factory, fromBlock: 16950685, }, - polygon_zkevm: { factory, fromBlock: 750148, }, - linea: { factory, fromBlock: 1445, }, - era: { factory: '0x1BB72E0CbbEA93c08f535fc7856E0338D7F7a8aB', fromBlock: 9413438, }, - arbitrum: { factory, fromBlock: 101028949, blacklistedTokens: ['0x12d773bb0c679d4dfbaf700086dc5e399656f892', '0x1a6b3a62391eccaaa992ade44cd4afe6bec8cff1']}, - base: { factory, fromBlock: 2912007, }, - op_bnb: { factory, fromBlock: 1721753, }, - }) -} diff --git a/projects/pandachef/index.js b/projects/pandachef/index.js deleted file mode 100644 index 1446d18b4e9..00000000000 --- a/projects/pandachef/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const abi = { - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accBaoPerShare)" -} -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - - -const masterChef = "0x9942cb4c6180820E6211183ab29831641F58577A"; -const PNDA = "0x47DcC83a14aD53Ed1f13d3CaE8AA4115f07557C0"; - -async function tvl(api) { - const tokenInfo = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: abi.poolInfo, target: masterChef }) - let tokens = tokenInfo.map(i => i.lpToken) - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens}) - tokens = tokens.filter((_, i) => symbols[i] !== 'PNDA-V2') // skip own LP tokens - return sumTokens2({ api, owner: masterChef, tokens, blacklistedTokens: [PNDA], resolveLP: true, }) -} - -module.exports = { - bsc: { - tvl, - staking: staking(masterChef, PNDA) - } -} \ No newline at end of file diff --git a/projects/pandaland/index.js b/projects/pandaland/index.js deleted file mode 100644 index a0c273c6411..00000000000 --- a/projects/pandaland/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports, } = require("../helper/masterchef") - -const PDA = "0x288B6Ca2eFCF39C9B68052B0088A0cB3f3D3B5f2"; -const MASTERCHEF = "0x1682051ad5bb1933d5446fa6d4d9ad878df95f21"; -const CHAIN = "smartbch"; - -const chefAbi = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare)' - -module.exports = masterChefExports(MASTERCHEF, CHAIN, PDA, false, chefAbi) \ No newline at end of file diff --git a/projects/pandaswap/index.js b/projects/pandaswap/index.js deleted file mode 100644 index 16ff75bd665..00000000000 --- a/projects/pandaswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('bsc', '0x9ad32bf5dafe152cbe027398219611db4e8753b3') \ No newline at end of file diff --git a/projects/pando-leaf/index.js b/projects/pando-leaf/index.js deleted file mode 100644 index dd226098aaf..00000000000 --- a/projects/pando-leaf/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { get } = require('../helper/http') -const BigNumber = require("bignumber.js"); -const { toUSDTBalances } = require('../helper/balances') - -const APIs = { - leaf: 'https://leaf-api.pando.im/api/cats' -} - -async function tvl() { - const resp = await get(APIs.leaf) - const collaterals = resp.data.collaterals; - let sum = new BigNumber(0); - for (let ix = 0; ix < collaterals.length; ix++) { - const collateral = collaterals[ix]; - const colSum = new BigNumber(collateral.ink); - sum = sum.plus(colSum.times(collateral.price)); - } - return toUSDTBalances(sum); -} - - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - mixin: { - tvl - } -} \ No newline at end of file diff --git a/projects/pando-rings/index.js b/projects/pando-rings/index.js deleted file mode 100644 index 5e0107c62f5..00000000000 --- a/projects/pando-rings/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { get } = require('../helper/http') -const BigNumber = require("bignumber.js"); -const { toUSDTBalances } = require('../helper/balances') - -const APIs = { - rings: 'https://rings-api.pando.im/api/v1/statistic/markets/all/overview', -} - -async function tvl() { - const data = await get(APIs.rings) - let sum = new BigNumber(data.total_supply).minus(data.total_borrow); - return toUSDTBalances(sum); -} - -async function borrowed() { - const data = await get(APIs.rings) - let borrowed = new BigNumber(data.total_borrow) - return toUSDTBalances(borrowed); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - mixin: { - tvl, - borrowed: borrowed - } -} \ No newline at end of file diff --git a/projects/pando/index.js b/projects/pando/index.js deleted file mode 100644 index 1fea83fc1cc..00000000000 --- a/projects/pando/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { get } = require('../helper/http') -const BigNumber = require("bignumber.js"); -const { toUSDTBalances } = require('../helper/balances') - -const APIs = { - lake: 'https://mtgswap-api.fox.one/api/pairs', -} - -async function tvl() { - const resp = await get(APIs.lake) - const pairs = resp.data.pairs; - let sum = new BigNumber(0); - for (let ix = 0; ix < pairs.length; ix++) { - const pair = pairs[ix]; - sum = sum.plus(pair.base_value).plus(pair.quote_value); - } - return toUSDTBalances(sum); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - mixin: { - tvl - } -} - diff --git a/projects/pandora-digital/index.js b/projects/pandora-digital/index.js deleted file mode 100644 index 91ceef19540..00000000000 --- a/projects/pandora-digital/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0xFf9A4E72405Df3ca3D909523229677e6B2b8dC71' -}) \ No newline at end of file diff --git a/projects/pandoraswap/index.js b/projects/pandoraswap/index.js deleted file mode 100644 index 98499c0197f..00000000000 --- a/projects/pandoraswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "PandoraswapFinance Tvl Calculation", - astar: { - tvl: getUniTVL({ factory: '0x8D4f9b98FC21787382647BFCfC9ce75C08B50481', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/pangeaswap/index.js b/projects/pangeaswap/index.js deleted file mode 100644 index ef169062171..00000000000 --- a/projects/pangeaswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getTridentTVLFromFactories } = require('../helper/sushi-trident') - -/** - * In Pangea Swap, there are multiple factories depending on the pool type. - */ - -module.exports = { - klaytn: { - tvl: getTridentTVLFromFactories({ - chain: 'klaytn', - factories: [ - /// reference : https://github.com/pangea-protocol/pangea-core/blob/main/contracts/pool/ConcentratedLiquidityPool.sol - '0x3d94b5e3b83cbd52b9616930d33515613adfad67', - /// reference : https://github.com/pangea-protocol/pangea-core/blob/main/contracts/custom/miningPool/MiningPool.sol - '0x02d9bf2d4F5cEA981cB8a8B77A56B498C5da7Eb0', - /// reference : https://github.com/pangea-protocol/pangea-core/blob/main/contracts/custom/yieldPool/YieldPool.sol - '0x6C7Fc36c3F2792Faf12a5Ba8aa12379c5D01986d' - ] - }), - }, -} diff --git a/projects/pangolin-v3/index.js b/projects/pangolin-v3/index.js deleted file mode 100644 index a74d0d4fc9b..00000000000 --- a/projects/pangolin-v3/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ avax: { factory: '0x1128F23D0bc0A8396E9FBC3c0c68f5EA228B8256', fromBlock: 59708285, } }) \ No newline at end of file diff --git a/projects/pangolin/index.js b/projects/pangolin/index.js deleted file mode 100644 index a5398f05f7c..00000000000 --- a/projects/pangolin/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const { staking, stakingPricedLP } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') -const { cachedGraphQuery } = require("../helper/cache"); -const { transformDexBalances } = require("../helper/portedTokens"); - -const contracts = { - avax: { - factory: "0xefa94DE7a4656D787667C749f7E1223D71E9FD88", - png: "0x60781C2586D68229fde47564546784ab3fACA982", - stakingContract: "0x88afdaE1a9F58Da3E68584421937E5F564A0135b", - }, - songbird: { - factory: "0xB66E62b25c42D55655a82F8ebf699f2266f329FB", - png: "0xb2987753D1561570f726Aa373F48E77e27aa5FF4", - stakingContract: "0x7428A089A79B24400a620F1Cbf8bd0526cFae777", - }, - flare: { - factory: "0xbfe13753156b9c6b2818FB45ff3D2392ea43d79A", - png: "0xC60BcDaA9CC7Cc372E793101fDfCB1083E25A203", - }, -}; - -module.exports = { - misrepresentedTokens: true, - timetravel: false, // hedera rug - methodology: - "The Pangolin factory contract address are used to obtain the balance held in every LP pair and the stake contract is used to get the locked PNG balance.", - avax: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.avax.factory, }), - staking: staking(contracts.avax.stakingContract, contracts.avax.png), - }, - songbird: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.songbird.factory, }), - staking: stakingPricedLP( - contracts.songbird.stakingContract, - contracts.songbird.png, - 'songbird', - '0xEd87F64065fdB4e4Ee580de1F768E2F8bD240A10', - "songbird", - false - ), - }, - flare: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.flare.factory, }), - }, - hedera: { - tvl: async (api) => { - const { pairs } = await cachedGraphQuery('pangolin-v2/hedera', 'https://graph-hedera-pangolin.canary.exchange/subgraphs/name/pangolin', `{pairs(first: 1000) { - id - token0 { id} - token1 { id } - }}`) - const calls = pairs.map(({ id}) => id) - const reserves = await api.multiCall({ abi: 'function getReserves() view returns (uint112 token0Bal, uint112 token1Bal, uint32 blockTimestampLast)', calls }) - - const data = reserves.map(({ token0Bal, token1Bal }, idx) => ({ - token0: pairs[idx].token0.id, - token1: pairs[idx].token1.id, - token0Bal, - token1Bal, - })) - return transformDexBalances({ api, data }) - }, - }, - start: '2021-02-07', // 7th-Feb-2021 -}; diff --git a/projects/panko/index.js b/projects/panko/index.js deleted file mode 100644 index a6cdfbbe507..00000000000 --- a/projects/panko/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3") -const { getLogs2 } = require('../helper/cache/getLogs') -const { mergeExports } = require("../helper/utils") -const { nullAddress } = require("../helper/unwrapLPs") - -const uniTvl = uniV3Export({ - taiko: { factory: '0x99960D7076297a1E0C86f3cc60FfA5d6f2B507B5', fromBlock: 433329 } -}) - -const stableswapConfig = { - taiko: { factory: '0x542E849ff47da056c127F35710b01242A59705d2', fromBlock: 433341 } -} -const stableTvl = {} - -Object.keys(stableswapConfig).forEach(chain => { - const { factory, fromBlock, } = stableswapConfig[chain] - stableTvl[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ - api, - factory, - eventAbi: 'event NewStableSwapPair(address indexed swapContract, address tokenA, address tokenB, address tokenC, address LP)', - fromBlock, - }) - const ownerTokens = logs.map(i => [[i.tokenA, i.tokenB, i.tokenC].filter(i => i !== nullAddress), i.swapContract]) - return api.sumTokens({ ownerTokens }) - } - } -}) - -module.exports = mergeExports([uniTvl, stableTvl]) \ No newline at end of file diff --git a/projects/pankuku/index.js b/projects/pankuku/index.js deleted file mode 100644 index b028875efeb..00000000000 --- a/projects/pankuku/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x24dF3F586b3d313A98704478f83a4315ae5b19A9) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - bsc: { - tvl: getUniTVL({ factory: '0x24dF3F586b3d313A98704478f83a4315ae5b19A9', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/panoptic-v1_1/index.js b/projects/panoptic-v1_1/index.js deleted file mode 100644 index 7375598f8bf..00000000000 --- a/projects/panoptic-v1_1/index.js +++ /dev/null @@ -1,95 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { cachedGraphQuery } = require("../helper/cache"); -const { addUniV3LikePosition } = require('../helper/unwrapLPs'); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const sdk = require('@defillama/sdk') - -const FACTORY = '0x0000000000000CF008e9bf9D01f8306029724c80' - -const SFPMChunksQuery = ` -query SFPMChunks($lastId: ID, $block: Int) { - chunks(first: 1000 - block: {number: $block} - where: {and: [{id_gt: $lastId}, { netLiquidity_gt: 100}]} - ) { - netLiquidity - tickLower - tickUpper - id - pool { id, tick, token0 {id}, token1 {id}} - panopticPool { - id - } - } -}` - -const abi = {"PoolDeployed": "event PoolDeployed(address indexed poolAddress, address indexed oracleContract, bytes32 indexed idV4, address collateralTracker0, address collateralTracker1)"} - -const config = { - ethereum: { - graphUrl: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/prod/gn', - startBlock: 21745246, - safeBlockLimit: 50, - PoolManager: '0x000000000004444c5dc75cB358380D2e3dE08A90' - }, - base: { - graphUrl: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-base/prod/gn', - startBlock: 29281023, - safeBlockLimit: 50, - PoolManager: '0x498581ff718922c3f8e6a244956af099b2652b2b' - }, - unichain: { - graphUrl: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-unichain/prod/gn', - startBlock: 17631543, - safeBlockLimit: 50, - PoolManager: '0x1f98400000000000000000000000000000000004' - } -} - - -async function tvl(api) { - const chain = api.chain - const { startBlock, graphUrl, safeBlockLimit, PoolManager } = config[chain] - - const poolDeployedLogs = await getLogs2({ api, target: FACTORY, fromBlock: startBlock, eventAbi: abi.PoolDeployed, }) - - const isV4 = {} - - for (const poolDeployedLog of poolDeployedLogs) { - if (poolDeployedLog.poolAddress !== '0x36a3088B94f73853a3964a0352B47605C6354f27') continue - // get underlying token from each collateral tracker - const tokens = await api.multiCall({ abi:'function asset() external view returns (address)', calls: [{target: poolDeployedLog.collateralTracker0, params: []}, {target: poolDeployedLog.collateralTracker1, params: []}] }) - - // query the erc1155 balance of the pool manager for each token - const balancesRaw = await api.multiCall({ abi:'function balanceOf(address owner, uint256 id) view returns (uint256)', calls: tokens.map(t => ({ target: PoolManager, params: [poolDeployedLog.poolAddress, t] })) }) - - isV4[poolDeployedLog.poolAddress.toLowerCase()] = true - - api.addTokens(tokens, balancesRaw) - } - - - const chunks = await cachedGraphQuery(`panoptic/v1_1/${chain}/sfpm-chunks`, graphUrl, SFPMChunksQuery, { api, useBlock: true, fetchById: true, safeBlockLimit, }) - chunks.forEach(chunk => { - if (!isV4[chunk.panopticPool.id.toLowerCase()]) return - addUniV3LikePosition({ api, token0: chunk.pool.token0.id, token1: chunk.pool.token1.id, tick: chunk.pool.tick, liquidity: chunk.netLiquidity, tickUpper: chunk.tickUpper, tickLower: chunk.tickLower, }) - }) -} - -module.exports = { - ethereum: { - tvl, - methodology: 'This adapter counts tokens held by all PanopticPool contracts created by the PanopticFactory, as well as the token composition of all Uniswap liquidity held by the SemiFungiblePositionManager (which is used by every PanopticPool to manage liquidity).', - start: 1738292183, - }, - base: { - tvl, - methodology: 'This adapter counts tokens held by all PanopticPool contracts created by the PanopticFactory, as well as the token composition of all Uniswap liquidity held by the SemiFungiblePositionManager (which is used by every PanopticPool to manage liquidity).', - start: 1745308193, - }, - unichain: { - tvl, - methodology: 'This adapter counts tokens held by all PanopticPool contracts created by the PanopticFactory, as well as the token composition of all Uniswap liquidity held by the SemiFungiblePositionManager (which is used by every PanopticPool to manage liquidity).', - start: 1748379902, - }, -} \ No newline at end of file diff --git a/projects/panoptic/index.js b/projects/panoptic/index.js deleted file mode 100644 index 405fbe2d251..00000000000 --- a/projects/panoptic/index.js +++ /dev/null @@ -1,106 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { cachedGraphQuery } = require("../helper/cache"); -const { addUniV3LikePosition } = require('../helper/unwrapLPs'); - -const FACTORY = '0x000000000000010a1DEc6c46371A28A071F8bb01' -const SFPM = '0x0000000000000DEdEDdD16227aA3D836C5753194' - - -const SFPMChunksQuery = ` -query SFPMChunks($lastId: ID, $block: Int) { - chunks(first: 1000 - block: {number: $block} - where: {and: [{id_gt: $lastId}, { netLiquidity_gt: 100}]} - ) { - netLiquidity - tickLower - tickUpper - id - pool { id } - } -}` - -const abi = { - "PoolDeployed": "event PoolDeployed(address indexed poolAddress, address indexed uniswapPool, address collateralTracker0, address collateralTracker1)", - "PoolInitialized": "event PoolInitialized(address indexed uniswapPool, uint64 poolId, int24 minEnforcedTick, int24 maxEnforcedTick)", -} - -const config = { - ethereum: { - graphUrl: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/prod/gn', - startBlock: 21389983, - safeBlockLimit: 50 - }, - base: { - graphUrl: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-base/prod/gn', - startBlock: 29279670, - safeBlockLimit: 50 - }, - unichain: { - graphUrl: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-unichain/prod/gn', - startBlock: 8576605, - safeBlockLimit: 50 - } -} - - -async function tvl(api) { - const chain = api.chain - const { startBlock, graphUrl, safeBlockLimit } = config[chain] - - const poolDeployedLogs = await getLogs2({ api, target: FACTORY, fromBlock: startBlock, eventAbi: abi.PoolDeployed, }) - const uniPools = poolDeployedLogs.map(log => log.uniswapPool.toLowerCase()) - const token0s = await api.multiCall({ abi: 'address:token0', calls: uniPools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: uniPools }) - const slot0s = await api.multiCall({ abi: 'function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)', calls: uniPools }) - - const poolData = {} - const ownerTokens = [] - uniPools.forEach((pool, i) => { - // to compte tokens locked in panoptic pools - ownerTokens.push([[token0s[i], token1s[i]], poolDeployedLogs[i].poolAddress]) - - // to compute value locked in uni v3 pools - poolData[pool] = { - token0: token0s[i], - token1: token1s[i], - tick: slot0s[i].tick, - } - }) - - await api.sumTokens({ ownerTokens }) - - const chunks = await cachedGraphQuery(`panoptic/v1/${chain}/sfpm-chunks`, graphUrl, SFPMChunksQuery, { api, useBlock: true, fetchById: true, safeBlockLimit, }) - chunks.forEach(chunk => { - const { token0, token1, tick, } = poolData[chunk.pool.id.toLowerCase()] ?? {} - if (!tick) return; - addUniV3LikePosition({ api, token0, token1, tick, liquidity: chunk.netLiquidity, tickUpper: chunk.tickUpper, tickLower: chunk.tickLower, }) - }) - - const usdValue = await api.getUSDValue() - if (usdValue < 0) { - api.log(`Panoptic: skipping negative USD value: $${usdValue}`) - return {} - } -} - -module.exports = { - ethereum: { - tvl, - methodology: 'This adapter counts tokens held by all PanopticPool contracts created by the PanopticFactory, as well as the token composition of all Uniswap liquidity held by the SemiFungiblePositionManager (which is used by every PanopticPool to manage liquidity).', - start: 1734049991, - }, - base: { - tvl, - methodology: 'This adapter counts tokens held by all PanopticPool contracts created by the PanopticFactory, as well as the token composition of all Uniswap liquidity held by the SemiFungiblePositionManager (which is used by every PanopticPool to manage liquidity).', - start: 1745348687, - }, - unichain: { - tvl, - methodology: 'This adapter counts tokens held by all PanopticPool contracts created by the PanopticFactory, as well as the token composition of all Uniswap liquidity held by the SemiFungiblePositionManager (which is used by every PanopticPool to manage liquidity).', - start: 1739411364, - }, - hallmarks: [ - ["2025-08-27", "Whitehack by team"] - ] -} diff --git a/projects/panther-protocol/index.js b/projects/panther-protocol/index.js deleted file mode 100644 index 35d1b44d354..00000000000 --- a/projects/panther-protocol/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const contracts = { - polygon: { - core: "0x9A06Db14D639796B25A6ceC6A1bf614fd98815EC", - staking: [ - "0x4cec451f63dbe47d9da2debe2b734e4cb4000eac", - "0x5e7fda6d9f5024c4ad1c780839987ab8c76486c9", - ], - }, - ethereum: { - core: "0x909E34d3f6124C324ac83DccA84b74398a6fa173", - staking: ["0xf4d06d72dacdd8393fa4ea72fdcc10049711f899"], - }, -}; - -Object.keys(contracts).forEach((chain) => { - module.exports[chain] = { - tvl: () => ({}), - staking: stakings(contracts[chain].staking, contracts[chain].core), - }; -}); diff --git a/projects/pantherswap/index.js b/projects/pantherswap/index.js deleted file mode 100644 index 35086c71452..00000000000 --- a/projects/pantherswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0x670f55c6284c629c23baE99F585e3f17E8b9FC31' -}) \ No newline at end of file diff --git a/projects/papa-dao/index.js b/projects/papa-dao/index.js deleted file mode 100644 index d601d5eda23..00000000000 --- a/projects/papa-dao/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0x3C8e800B9f12771A5f150D0943De968ABc7A7bE1"; -module.exports = ohmTvl(treasuryAddress, [ -//MIM - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], -//USDT.e - [ADDRESSES.avax.USDT_e, false], -//wAVAX - [ADDRESSES.avax.WAVAX, false], -//JOE LP - ["0xa03a99cd3d553fe9ebbccecabcb8c47100482f72", true] , -//JOE LP - ["0x29828626ca711b0e13de1031aae1f5423100e642", true] -], "avax", "0x3875AC1F19E05813000F02414b3141DC3Ff991B6", "0x70b33ebC5544C12691d055b49762D0F8365d99Fe" ) \ No newline at end of file diff --git a/projects/paperdao/index.js b/projects/paperdao/index.js deleted file mode 100644 index 68b7a9d4daa..00000000000 --- a/projects/paperdao/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports, methodology, } = require("../helper/compound"); - -const blacklist = [ - '0x4002a65e13f87C897B8018Fd7329af17339346ba', - '0xa2d59cdc396574da0f0bc97a3e883b9fb72f6b88', - '0xa10faa75589bf01af220b2d6acb91785129443f0', - '0x1611Ac5e87aC082e016d60dB63eccb50F45B8b4e', - '0x438DDA002CaDBe95F72b7b9acB1FEf4782418566', -]; - -module.exports = { - methodology, - ethpow: compoundExports("0x5e496e7F241B13c514A78B7E840bc3cC744D7215", "0xb9e008f2C039fB994C8adD806F8aF709899aA95e", ADDRESSES.ethereum.WETH, { blacklistedTokens: blacklist }) -} - -module.exports.deadFrom='2023-05-01', -module.exports.ethpow.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/papparico-finance/index.js b/projects/papparico-finance/index.js deleted file mode 100644 index 1b8ba46e9b9..00000000000 --- a/projects/papparico-finance/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens"); - -const PPFT_TOKEN_CONTRACT = "0x59BAfb7168972EcCA5e395F7dA88e71eCe47a260"; -const PPFT_MAIN_LP = "0xb036145476Ad16782eC05C7EC340D7e3cE6D09b7"; - -const STAKING_CONTRACT = "0x535503d5c23bCA9896383003A46A8AD6c9CB2fe2"; -const SINGLE_STAKING_CONTRACT = "0xFc8d5d6B280BF5E8d8DB12d0fF8a0f7d1A6ECf78"; -const VAULTS_CONTRACT = "0x828CC5D75594e4d0D072566cC07F64E863A0d11E"; -const LP_MINING_CONTRACT = "0x3E35810A663c7eE28a0A6f6A0984146CbB163c6c"; - -const XPPFT_TOKEN = "0x961105dD9bE34B64A27251d72B6D8F086847bc1c"; -const XPPFT_LP = "0xA99F134FC1e922Bc78Aa78c5897ce1eeF925b179"; -const LP_MINING_CONTRACT_V2 = "0x2490AFBf1609119bB76E5e936f4ce4cBed815947"; -const lps = [PPFT_MAIN_LP, XPPFT_LP]; - -module.exports = { - cronos: { - tvl: () => ({}), - staking: sumTokensExport({ - owners: [STAKING_CONTRACT, SINGLE_STAKING_CONTRACT, VAULTS_CONTRACT,], - tokens: [PPFT_TOKEN_CONTRACT, XPPFT_TOKEN], - lps, - useDefaultCoreAssets: true, - }), - pool2: sumTokensExport({ - owners: [LP_MINING_CONTRACT, LP_MINING_CONTRACT_V2], - tokens: lps, - useDefaultCoreAssets: true, - }), - } -}; \ No newline at end of file diff --git a/projects/papr-wtf/index.js b/projects/papr-wtf/index.js deleted file mode 100644 index d4b0125eea8..00000000000 --- a/projects/papr-wtf/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -async function tvl(api) { - - const controller = '0x3b29c19ff2fcea0ff98d0ef5b184354d74ea74b0' - const logs = await getLogs({ - api, - target: controller, - topic: 'AllowCollateral(address,bool)', - eventAbi: 'event AllowCollateral(address indexed collateral, bool isAllowed)', - onlyArgs: true, - fromBlock: 16592385, - }) - return sumTokens2({ api, owner: controller, tokens: logs.map(i => i.collateral)}) -} - -module.exports = { - ethereum: { tvl } -} diff --git a/projects/paprprintr/index.js b/projects/paprprintr/index.js deleted file mode 100644 index 7fc68b007d1..00000000000 --- a/projects/paprprintr/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const config = { - bsc: { papr: '0x246475dF8703BE0C2bA2f8d0fb7248D95Cc1Ba26', lp: '0x88afbae882348011c80bd4f659962d32ffed4089', stakingC: '0xa00ba88adb75d8877e4f2035f3abe43b74f10a4b', pool2C: '0x28165e285cb40210f6b896bc937f7322f3a2bee2', }, - polygon: { papr: '0xFbe49330E7B9F58a822788F86c1be38Ab902Bab1', lp: '0xb1Cd060D7c7B8F338e13D6Aac11f484eE451c5b5', stakingC: '0xD524e0dE85b225A7ea29E989bF13a4deE5De1913', pool2C: '0xac2b5b9c4696dd96c97d3d8da6f6ff412020566d', }, - kcc: { papr: '0x9dEb450638266f787E6E29d0Fe811069f828CF56', stakingC: '0xa0A0727cA35B2Af606EceDD2f69d8884DE090538', }, - fantom: { papr: '0xC5e7A99A20941cBF56E0D4De608332cDB792e23e', stakingC: '0x982Df9B6e86838c7f0fB0d63eD84f98dcC110E29', }, - aurora: { papr: '0xa5C09De3aa1CDb5Cb190Be66c77E033Be1CA594A', stakingC: '0x008757aB3E3aDE24a402882d701f9B99F3809283', }, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { papr, lp, stakingC, pool2C } = config[chain] - module.exports[chain] = { - tvl: () => ({}), - staking: staking(stakingC, papr, chain), - } - if (lp && pool2C) - module.exports[chain].pool2 = pool2(pool2C, lp, chain) -}) \ No newline at end of file diff --git a/projects/papyrusswap/index.js b/projects/papyrusswap/index.js deleted file mode 100644 index 988ab5d1232..00000000000 --- a/projects/papyrusswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('scroll', '0xD5f3D3fb72210bfe71a59c05e0b8D72973baa2a6') \ No newline at end of file diff --git a/projects/paradex/index.js b/projects/paradex/index.js deleted file mode 100644 index 574acd512e4..00000000000 --- a/projects/paradex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const contracts = [ - '0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3' -]; - -module.exports = { - ethereum: { tvl: sumTokensExport({ owners: contracts, tokens: [ADDRESSES.ethereum.USDC] }) } -}; diff --git a/projects/paragons-dao/index.js b/projects/paragons-dao/index.js deleted file mode 100644 index 14628568c16..00000000000 --- a/projects/paragons-dao/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { staking } = require('../helper/staking'); - -const stakingContract = '0x51e025cb3ee0b99a84f7fb80994198281e29aa3e'; -const stakedToken = '0xeff2A458E464b07088bDB441C21A42AB4b61e07E'; - -module.exports = { - methodology: 'TVL of ParagonsDAO corresponds to the staking of PDT tokens in the staking contract.', - start: 18751707, // Update with the block or timestamp when staking started - base: { - tvl: async () => ({}), // leave protocol TVL as empty - staking: staking(stakingContract, stakedToken), - }, -}; diff --git a/projects/parallax/abis/prllxERC20.json b/projects/parallax/abis/prllxERC20.json deleted file mode 100644 index 93c39d20b73..00000000000 --- a/projects/parallax/abis/prllxERC20.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "strategyToId": "function strategyToId(address) view returns (uint256)", - "strategiesERA": "function strategies(uint256) view returns (uint256 fee, uint256 totalStaked, uint256 totalShares, uint256 lastCompoundTimestamp, uint256 cap, address strategy, address incentivization, uint32 timelock, bool isActive, uint256 usersCount)", - "strategies": "function strategies(uint256) view returns (uint256 fees, uint256 totalDeposited, uint256 totalStaked, uint256 lastCompoundTimestamp, uint256 cap, uint256 rewardPerBlock, uint256 rewardPerShare, uint256 lastUpdatedBlockNumber, address strategy, uint32 timelock, bool isActive, address rewardToken, uint256 usersCount)" -} \ No newline at end of file diff --git a/projects/parallax/contracts.json b/projects/parallax/contracts.json deleted file mode 100644 index f79d31cbbfe..00000000000 --- a/projects/parallax/contracts.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "eth": { - "parallaxAddress": "0xd8935F1369E1dAc77CD37e664BC13ffdd741B962", - "strategyAddress": "0x9E6121e89dD50B5D02362A9fdb7EC1fAd3D15725", - "lpAddress": "0x5aee1e99fe86960377de9f88689616916d5dcabe", - "feedAddress": "0x5f4ec3df9cbd43714fe2740f5e3616155c5b8419", - "usdc": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" - }, - "arbitrum": { - "mim": { - "parallaxCoreAddress": "0x07F78cC2668F9Bb152c4026E801df68Ed3AB9858", - "strategyAddress": "0xbf81Ba9D10F96ce0bb1206DE5F2d5B363f9796A9", - "parallaxCoreAddressOld": "0x74A819d4925dC9f473F398863666Ac787B48e1d0", - "strategyAddressOld": "0x7b8eFCd93ee71A0480Ad4dB06849B75573168AF4", - "lpAddresss": "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7", - "usdc": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" - }, - "sushi": { - "parallaxAddr": "0xDCBEA8b2142Fe5E97BE9545FCFB30af812685Fb6", - "strategyAddrSushi": "0xb53BbF686b600857B209B863c1Bce2C83acef123", - "strategyAddrGMX": "0xF7caD5Ec40b5980Bd741346eAeE019c6E2b5D373", - "parallaxBackendAddr": "0x1724623a721a094f8Ba9d271c9BE8be83e64f74f", - "usdc": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" - } - }, - "era": [ - { - "parallaxAddress": "0xF3D6B2418395b7441B17f39EF79fF8Ead5C0E61C", - "strategyAddress": "0x4d737487C5A398F761A4D8bE53cEB8f42e84a094", - "lpAddress": "0x80115c708E12eDd42E504c1cD52Aea96C547c05c", - "poolAddress": "0x80115c708E12eDd42E504c1cD52Aea96C547c05c", - "zkss_weth": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", - "usdc": "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4" - }, - { - "parallaxAddress": "0xF3D6B2418395b7441B17f39EF79fF8Ead5C0E61C", - "strategyAddress": "0x94CA8B763ea7De772f0B2102A8E4738e25EdCDA2", - "lpAddress": "0xd3D91634Cf4C04aD1B76cE2c06F7385A897F54D3", - "poolAddress": "0xd3D91634Cf4C04aD1B76cE2c06F7385A897F54D3", - "zkss_weth": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", - "usdc": "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4" - }, - { - "parallaxAddress": "0xF3D6B2418395b7441B17f39EF79fF8Ead5C0E61C", - "strategyAddress": "0x53e27f89658a9Da5Fc585d2fF3f657D6Cb1E22d5", - "lpAddress": "0x0E595bfcAfb552F83E25d24e8a383F88c1Ab48A4", - "poolAddress": "0x0E595bfcAfb552F83E25d24e8a383F88c1Ab48A4", - "zkss_weth": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", - "usdc": "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4" - } - ] -} \ No newline at end of file diff --git a/projects/parallax/getPrice.js b/projects/parallax/getPrice.js deleted file mode 100644 index 1c859d4ebb8..00000000000 --- a/projects/parallax/getPrice.js +++ /dev/null @@ -1,89 +0,0 @@ -const get_virtual_price = "function get_virtual_price() view returns (uint256)"; -const getRate = "function getRate() view returns (uint256)"; -const latestRoundData = - "function latestRoundData() view returns (uint80 roundId,int256 answer,uint256 startedAt,uint256 updatedAt,uint80 answeredInRound)"; -const getPrice = "function getPrice() view returns (uint256 sushi,uint256 gmx)"; -const { default: BigNumber } = require("bignumber.js"); - -const getPriceMIM = async (tokenAddress, api) => { - const priceLpWei = await api.call({ - target: tokenAddress, - abi: get_virtual_price, - }) - - const decimals = await api.call({ - target: tokenAddress, - abi: "erc20:decimals", - }) - - const tokenPrice = new BigNumber(priceLpWei).div(`1e${decimals}`); - - return { - price: tokenPrice, - decimals, - }; -}; - -const getPriceAura = async ( - tokenAddress, - feedAddress, - api -) => { - const decimals = - await api.call({ - target: tokenAddress, - abi: "erc20:decimals", - }) - - const rate = - await api.call({ - target: tokenAddress, - abi: getRate, - }) - - const getLatestRoundData = - await api.call({ - target: feedAddress, - abi: latestRoundData, - }) - - const ethPriceInUSD = parseInt(getLatestRoundData.answer) / 10 ** 8; - const priceETH = new BigNumber(rate).div(`1e${decimals}`); - - const tokenPrice = new BigNumber(priceETH * ethPriceInUSD).div( - `1e${decimals}` - ); - - return { - price: tokenPrice, - decimals, - }; -}; - -const getPriceSushi = async (backendAddress, api) => { - const sushiDecimals = 14, - gmxDecimals = 8; - - const sushiGmxPrice = await api.call({ - target: backendAddress, - abi: getPrice, - }) - - const sushiPrice = new BigNumber(sushiGmxPrice.sushi).div( - `1e${sushiDecimals}` - ); - const gmxPrice = new BigNumber(sushiGmxPrice.gmx).div(`1e${gmxDecimals}`); - - return { - sushiPrice: sushiPrice, - gmxPrice: gmxPrice, - sushiDecimals, - gmxDecimals, - }; -}; - -module.exports = { - getPriceMIM, - getPriceAura, - getPriceSushi, -}; diff --git a/projects/parallax/index.js b/projects/parallax/index.js deleted file mode 100644 index 461b8d7c9de..00000000000 --- a/projects/parallax/index.js +++ /dev/null @@ -1,208 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { default: BigNumber } = require("bignumber.js"); - -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { sumUnknownTokens } = require("../helper/unknownTokens"); -const { getPriceMIM, getPriceAura, getPriceSushi } = require("./getPrice"); - -const prllxERC20 = require("./abis/prllxERC20.json"); -const contracts = require("./contracts.json"); - -async function ethTvl(api) { - const strategyId = await api.call({ - target: contracts.eth.parallaxAddress, - params: contracts.eth.strategyAddress, - abi: prllxERC20["strategyToId"], - }); - - const strategy = await api.call({ - target: contracts.eth.parallaxAddress, - params: strategyId, - abi: prllxERC20["strategies"], - }); - - const balances = {}; - const { price, decimals } = await getPriceAura( - contracts.eth.lpAddress, - contracts.eth.feedAddress, - api - ); - - // const totalStaked = new BigNumber(strategy.totalStaked).div(`1e${decimals}`); - const totalStakedTVL = price - .times(strategy.totalStaked) - .times(1e6) - .toFixed(0); - - sdk.util.sumSingleBalance( - balances, - `ethereum:${contracts.eth.usdc}`, - totalStakedTVL - ); - - return balances; -} - -async function arbitrumTvl(api) { - const balances = {}; - - const strategyId = await api.call({ - target: contracts.arbitrum.mim.parallaxCoreAddress, - params: contracts.arbitrum.mim.strategyAddress, - abi: prllxERC20["strategyToId"], - }); - - const strategy = await api.call({ - target: contracts.arbitrum.mim.parallaxCoreAddress, - params: strategyId, - abi: prllxERC20["strategies"], - }); - - const { price, decimals } = await getPriceMIM( - contracts.arbitrum.mim.lpAddresss, - api - ); - - const totalStaked = new BigNumber(strategy.totalStaked).div(`1e${decimals}`); - const totalStakedTVLMIM = price.times(totalStaked).times(1e6).toFixed(0); - - // const strategyIdOld = await api.call({ - // target: contracts.arbitrum.mim.parallaxCoreAddressOld, - // params: contracts.arbitrum.mim.strategyAddressOld, - // abi: prllxERC20["strategyToId"], - // }) - // - // const strategyOld = - // await api.call({ - // target: contracts.arbitrum.mim.parallaxCoreAddressOld, - // params: strategyIdOld, - // abi: prllxERC20["strategies"], - // }) - // - // const totalStakedOld = new BigNumber(strategyOld.totalStaked).div( - // `1e${decimals}` - // ); - // const totalStakedTVLMIMOld = price - // .times(totalStakedOld) - // .times(1e6) - // .toFixed(0); - - // const totalStakedTVLMIMAll = - // Number(totalStakedTVLMIM) + Number(totalStakedTVLMIMOld); - - sdk.util.sumSingleBalance( - balances, - `arbitrum:${contracts.arbitrum.mim.usdc}`, - totalStakedTVLMIM - ); - - const strategySushiId = await api.call({ - target: contracts.arbitrum.sushi.parallaxAddr, - params: contracts.arbitrum.sushi.strategyAddrSushi, - abi: prllxERC20["strategyToId"], - }); - - const strategyGmxId = await api.call({ - target: contracts.arbitrum.sushi.parallaxAddr, - params: contracts.arbitrum.sushi.strategyAddrGMX, - abi: prllxERC20["strategyToId"], - }); - - const strategySushi = await api.call({ - target: contracts.arbitrum.sushi.parallaxAddr, - params: strategySushiId, - abi: prllxERC20["strategies"], - }); - - const strategyGmx = await api.call({ - target: contracts.arbitrum.sushi.parallaxAddr, - params: strategyGmxId, - abi: prllxERC20["strategies"], - }); - - const { sushiPrice, gmxPrice, sushiDecimals, gmxDecimals } = - await getPriceSushi(contracts.arbitrum.sushi.parallaxBackendAddr, api); - - const totalStakedSushi = new BigNumber(strategySushi.totalStaked).div(`1e18`); - const totalStakedGmx = new BigNumber(strategyGmx.totalStaked).div(`1e18`); - - const totalStakedTVLSushi = sushiPrice - .times(totalStakedSushi) - .times(1e6) - .toFixed(0); - - const totalStakedTVLGmx = gmxPrice - .times(totalStakedGmx) - .times(1e6) - .toFixed(0); - - const totalStakedTVL = - Number(totalStakedTVLSushi) + Number(totalStakedTVLGmx); - - sdk.util.sumSingleBalance( - balances, - `arbitrum:${contracts.arbitrum.sushi.usdc}`, - totalStakedTVL - ); - - return balances; -} - -async function eraTvl(api) { - if (contracts.era.length > 0) { - for (let i = 0; i < contracts.era.length; i++) { - const strItem = contracts.era[i]; - const strategyId = await api.call({ - target: strItem.parallaxAddress, - params: strItem.strategyAddress, - abi: prllxERC20["strategyToId"], - }); - - const strategy = await api.call({ - target: strItem.parallaxAddress, - params: strategyId, - abi: prllxERC20.strategiesERA, - }); - const pair = strItem.lpAddress; - api.add(pair, strategy.totalStaked); - } - return sumUnknownTokens({ - api, - resolveLP: true, - lps: contracts.era.map((strItem) => strItem.lpAddress), - }); - } -} - -module.exports = { - methodology: "TVL comes from the Staking Vaults", - arbitrum: { - tvl: sdk.util.sumChainTvls([ - arbitrumTvl, - sumTokensExport({ - owner: "0x9bab3c2ccf202edf451d76c8690c2d1716f4ae69", - resolveUniV3: true, - }), - ]), - staking: staking( - [ - "0x82FD636D7A28a20635572EB8ec0603ee264B8651", - "0xA3CE2c0d1cfB29F398f8f4800bA202Aba39dbbfe", - "0x9d02A989B34aB9Af9bb4fE59604392829ddD16f5", - "0x9f35e7c711224c704d5999b859F17A2E7CF35A16", - ], - "0xc8CCBd97b96834b976C995a67BF46e5754e2C48E" - ), - pool2: sumTokensExport({ - owner: "0x9d02A989B34aB9Af9bb4fE59604392829ddD16f5", - resolveUniV3: true, - }), - }, - ethereum: { - tvl: ethTvl, - }, - era: { - tvl: eraTvl, - }, -}; diff --git a/projects/parallel-crowdloan/api.js b/projects/parallel-crowdloan/api.js deleted file mode 100644 index 2c9ed6bd9ce..00000000000 --- a/projects/parallel-crowdloan/api.js +++ /dev/null @@ -1,41 +0,0 @@ -const { getAPI } = require('../helper/acala/api') - -module.exports = { - misrepresentedTokens: true, - parallel: { - tvl: async () => { - const chain = 'parallel' - const api = await getAPI(chain) - return getCrowdloan(api) - } - }, - heiko: { - tvl: async () => { - const chain = 'heiko' - const api = await getAPI(chain) - return getCrowdloan(api) - } - }, -}; - -// Taken from https://github.com/parallel-finance/dump-script/blob/523b9ae42606562a51681fc47244355d2bb2e647/src/service.ts -async function getCrowdloan(api) { - const nativeAssetId = (await api.consts.currencyAdapter.getNativeCurrencyId).toNumber(); - const vaults = (await api.query.crowdloans.vaults.entries()).map(i => i[1].toJSON()) - - let total = 0 - vaults.forEach(data => { - if (['Succeeded', 'Contributing', 'Closed'].includes(data.phase)) - total += +data.contributed - }) - - if (nativeAssetId === 0) { - return { - kusama: total / 1e12 - } - } - - return { - polkadot: total / 1e10 - } -} diff --git a/projects/parallel-lending/api.js b/projects/parallel-lending/api.js deleted file mode 100644 index 913db0afaa0..00000000000 --- a/projects/parallel-lending/api.js +++ /dev/null @@ -1,94 +0,0 @@ -const { getAPI, getTokenPrices, } = require('../helper/acala/api') -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js'); - -module.exports = { - misrepresentedTokens: true, - parallel: { - tvl: async () => { - const chain = 'parallel' - const api = await getAPI(chain) - return getLendingData(api, chain) - }, - borrowed: async () => { - const chain = 'parallel' - const api = await getAPI(chain) - return getBorrowedData(api, chain) - } - }, - heiko: { - tvl: async () => { - const chain = 'heiko' - const api = await getAPI(chain) - return getLendingData(api, chain) - }, - borrowed: async () => { - const chain = 'heiko' - const api = await getAPI(chain) - return getBorrowedData(api, chain) - } - }, -}; - -async function getLendingData(api, chain) { - // const markets = await api.query.loans.markets.entries(); - const exchangeRates = await api.query.loans.exchangeRate.entries(); - const totalSupplies = await api.query.loans.totalSupply.entries(); - const totalBorrows = await api.query.loans.totalBorrows.entries(); - // const totalReserves = (await api.query.loans.totalSupply.entries()).map(i => +i[1].toString()) - // const ptokenIds = markets.map(i => i[1].toJSON().ptokenId) - // const underlyingIds = await api.queryMulti(ptokenIds.map(id => { - // return [api.query.loans.underlyingAssetId, [id]]; - // })); - const exchangeRateMapping = {} - const totalSupplyMapping = {} - const totalBorrowMapping = {} - exchangeRates.map(([{ args }, metadata]) => { - const [underlyingId] = args; - exchangeRateMapping[underlyingId] = +metadata - }) - totalSupplies.map(([{ args }, metadata]) => { - const [underlyingId] = args; - totalSupplyMapping[underlyingId] = +metadata - }) - totalBorrows.map(([{ args }, metadata]) => { - const [underlyingId] = args; - totalBorrowMapping[underlyingId] = +metadata - }) - const balances = {} - Object.keys(totalSupplyMapping).forEach(token => { - const supply = totalSupplyMapping[token] - const rate = exchangeRateMapping[token] / 1e18 - const borrowed = totalBorrowMapping[token] || 0 - balances[token] = (supply * rate) - borrowed - }) - // underlyingIds.forEach((id, i) => { - // const token = +id.toString() - // if (totalReserves[i] > 0) - // balances[token] = totalReserves[token] * exchangeRateMapping[token] / 1e18 - // }) - const { updateBalances } = await getTokenPrices({ api, chain }) - return updateBalances(balances) -} - - -async function getBorrowedData(api, chain) { - // const markets = await api.query.loans.markets.entries(); - const totalBorrows = await api.query.loans.totalBorrows.entries(); - // const ptokenIds = markets.map(i => i[1].toJSON().ptokenId) - // const underlyingIds = await api.queryMulti(ptokenIds.map(id => { - // return [api.query.loans.underlyingAssetId, [id]]; - // })); - const balances = {} - totalBorrows.map(([{ args }, metadata]) => { - const [underlyingId] = args; - balances[underlyingId] = +metadata - }) - // underlyingIds.forEach((id, i) => { - // const token = +id.toString() - // if (totalBorrows[i] > 0) - // balances[token] = totalBorrows[i] - // }) - const { updateBalances } = await getTokenPrices({ api, chain }) - return updateBalances(balances) -} diff --git a/projects/parallel-lending/index.js b/projects/parallel-lending/index.js deleted file mode 100644 index 719e6f10dd3..00000000000 --- a/projects/parallel-lending/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - deadFrom: '2024-08-17', - timetravel: false, - misrepresentedTokens: true, - ...getExports("parallel-lending", ['heiko', 'parallel'], ['borrowed']), -} - -const chains = ['heiko', 'parallel'] -chains.forEach(chain => { - Object.keys(module.exports[chain]).forEach(key => module.exports[chain][key] = () => ({})) -}) \ No newline at end of file diff --git a/projects/parallel-protocol-v3/config.js b/projects/parallel-protocol-v3/config.js deleted file mode 100644 index 1fb776ace12..00000000000 --- a/projects/parallel-protocol-v3/config.js +++ /dev/null @@ -1,27 +0,0 @@ - -const config = { - avax: { - address: "0x41d58951cbd12D4Ef49b0437897677bbF5547C80", - fromBlock: 68122215, - }, - ethereum: { - address: "0x6efeDDF9269c3683Ba516cb0e2124FE335F262a2", - fromBlock: 22676220, - }, - base: { - address: "0xC3BEF21Ea7dEB5C34CF33E918c8e28972C8048eD", - fromBlock: 31808846, - }, - sonic: { - address: "0xBEFBAe2330186F031b469e26283aCc66bb5F8826", - fromBlock: 34952978, - }, - hyperliquid: { - address: "0x1250304F66404cd153fA39388DDCDAec7E0f1707", - fromBlock: 5117819, - }, -} - -module.exports = { - config -} \ No newline at end of file diff --git a/projects/parallel-protocol-v3/index.js b/projects/parallel-protocol-v3/index.js deleted file mode 100644 index 0aaa2c7ac42..00000000000 --- a/projects/parallel-protocol-v3/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const {sumTokens2 } = require("../helper/unwrapLPs.js") -const { - config, - } = require("./config.js"); - -module.exports = { - methodology: `TVL is retrieved on-chain by getting the total assets managed by the Parallelizer contracts`, -}; - -async function tvl(api) { - const chainConfig = config[api.chain] - const {address: parallelizerAddress, fromBlock} = chainConfig - const collaterals = await api.call({ abi: 'address[]:getCollateralList', target: parallelizerAddress, block: fromBlock}) - return sumTokens2({ api, owner: parallelizerAddress, tokens: collaterals }) -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}); diff --git a/projects/parallel-staking/api.js b/projects/parallel-staking/api.js deleted file mode 100644 index 41bbfccac20..00000000000 --- a/projects/parallel-staking/api.js +++ /dev/null @@ -1,85 +0,0 @@ -const { getAPI } = require('../helper/acala/api') -const { log } = require('../helper/utils') -const { stringToU8a, u8aConcat, bnToU8a } = require('@polkadot/util') -// const { blake2AsU8a } = require('@polkadot/util-crypto') -const { encodeAddress, decodeAddress, } = require('@polkadot/keyring') -const EMPTY_U8A_32 = new Uint8Array(32) - -// const sovereignAccountOf = (paraId) => -// encodeAddress( -// u8aConcat( -// stringToU8a('para'), -// bnToU8a(paraId, 32, true), -// EMPTY_U8A_32 -// ).subarray(0, 32) -// ) - -// const subAccountId = (signer, index) => { -// const seedBytes = stringToU8a('modlpy/utilisuba') -// const whoBytes = decodeAddress(signer) -// const indexBytes = bnToU8a(index, 16).reverse() -// const combinedBytes = new Uint8Array( -// seedBytes.length + whoBytes.length + indexBytes.length -// ) -// combinedBytes.set(seedBytes) -// combinedBytes.set(whoBytes, seedBytes.length) -// combinedBytes.set(indexBytes, seedBytes.length + whoBytes.length) - -// const entropy = blake2AsU8a(combinedBytes, 256) -// return encodeAddress(entropy) -// } - -module.exports = { - misrepresentedTokens: true, - parallel: { - tvl: async () => { - const chain = 'parallel' - const api = await getAPI(chain) - - return { - polkadot: (await getStakedAmount(api, chain))/1e10 - } - } - }, - heiko: { - tvl: async () => { - const chain = 'heiko' - const api = await getAPI(chain) - - return { - kusama: (await getStakedAmount(api, chain))/1e12 - } - } - }, -}; - -// Taken from https://parallelfi.gitbook.io/parallel-finance/polkadot-network/developer-docs/staking/integration/api -async function getStakedAmount(api, chain) { - - const derivativeIndexList = api.consts.liquidStaking.derivativeIndexList - - const stakingCurrency = api.consts.liquidStaking.stakingCurrency - const createAddress = id => encodeAddress(u8aConcat(stringToU8a(`modl${id}`), EMPTY_U8A_32).subarray(0, 32)) - - const poolAccount = createAddress('par/lqsk') - // const paraId = await api.query.parachainInfo.parachainId() - const balanceRes = await api.query.assets.account(stakingCurrency, poolAccount) - const poolAccountBalance = +balanceRes.unwrapOrDefault().balance - const totalReserves = +(await api.query.liquidStaking.totalReserves()).toString() - let totalBonded = 0 - let totalUnbonding = 0 - let total = 0 - for (const derivativeIndex of derivativeIndexList) { - // const derivativeAccount = subAccountId(sovereignAccountOf(paraId), derivativeIndex) - const ledger = await api.query.liquidStaking.stakingLedgers(derivativeIndex) - totalBonded += +ledger.toJSON().active - totalUnbonding += ledger.toJSON().total - ledger.toJSON().active - total += +ledger.toJSON().total - log(chain, ledger.toJSON().total / 1e10) - } - - const quantity = total + poolAccountBalance - totalReserves - - log(chain, [total, poolAccountBalance, totalReserves, quantity].map(i => Math.floor(i / 1e10))) - return quantity -} diff --git a/projects/parallel-staking/index.js b/projects/parallel-staking/index.js deleted file mode 100644 index 7beacecc29e..00000000000 --- a/projects/parallel-staking/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - deadFrom: '2024-08-17', - timetravel: false, - ...getExports("parallel-staking", ['heiko', 'parallel']), -} - -const chains = ['heiko', 'parallel'] -chains.forEach(chain => { - Object.keys(module.exports[chain]).forEach(key => module.exports[chain][key] = () => ({})) -}) \ No newline at end of file diff --git a/projects/parallel-stream/api.js b/projects/parallel-stream/api.js deleted file mode 100644 index b220b330d8e..00000000000 --- a/projects/parallel-stream/api.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getAPI, getTokenPrices, } = require('../helper/acala/api') -const sdk = require('@defillama/sdk') - -module.exports = { - misrepresentedTokens: true, - parallel: { - tvl: async () => { - const chain = 'parallel' - const api = await getAPI(chain) - return getStreamData(api, chain) - } - }, - heiko: { - tvl: async () => { - const chain = 'heiko' - const api = await getAPI(chain) - return getStreamData(api, chain) - } - }, -}; - -const blacklisted = [0, 1] - -async function getStreamData(api, chain) { - const streams = await api.query.streaming.streams.entries() - const balances = {} - streams.map(i => i[1].toJSON()).forEach(stream => sdk.util.sumSingleBalance(balances, stream.assetId, +stream.remainingBalance)) - const { updateBalances } = await getTokenPrices({ api, chain }) - blacklisted.forEach(token => delete balances[token]) - updateBalances(balances) - return balances -} diff --git a/projects/parallel-stream/index.js b/projects/parallel-stream/index.js deleted file mode 100644 index 8b474cc2b80..00000000000 --- a/projects/parallel-stream/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - deadFrom: '2024-08-17', - timetravel: false, - misrepresentedTokens: true, - ...getExports("parallel-stream", ['heiko', 'parallel']), -} - -const chains = ['heiko', 'parallel'] -chains.forEach(chain => { - Object.keys(module.exports[chain]).forEach(key => module.exports[chain][key] = () => ({})) -}) \ No newline at end of file diff --git a/projects/parallel.js b/projects/parallel.js deleted file mode 100644 index 55c1205ca01..00000000000 --- a/projects/parallel.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getExports } = require('./helper/heroku-api') - -module.exports = { - deadFrom: '2024-08-17', - timetravel: false, - ...getExports("parallel-crowdloan", ['heiko', 'parallel']), -} - -const chains = ['heiko', 'parallel'] -chains.forEach(chain => { - Object.keys(module.exports[chain]).forEach(key => module.exports[chain][key] = () => ({})) -}) \ No newline at end of file diff --git a/projects/parallelamm/api.js b/projects/parallelamm/api.js deleted file mode 100644 index c8d964af18a..00000000000 --- a/projects/parallelamm/api.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getAPI, getTokenPrices } = require('../helper/acala/api') -// const { log } = require('../helper/utils') -// const { stringToU8a, u8aConcat, bnToU8a } = require('@polkadot/util') -// // const { blake2AsU8a } = require('@polkadot/util-crypto') -// const { encodeAddress, decodeAddress, } = require('@polkadot/keyring') -// const EMPTY_U8A_32 = new Uint8Array(32) -// const createAddress = id => encodeAddress(u8aConcat(stringToU8a(`modl${id}`), EMPTY_U8A_32).subarray(0, 32)) - -module.exports = { - misrepresentedTokens: true, - parallel: { - tvl: async () => { - const chain = 'parallel' - const api = await getAPI(chain) - return getAMMData(api, chain) - } - }, - heiko: { - tvl: async () => { - const chain = 'heiko' - const api = await getAPI(chain) - return getAMMData(api, chain) - } - }, -}; - -// Taken from https://raw.githubusercontent.com/parallel-finance/amm-subql/883b278116a6252363387f1246a7f248b6cb1e7b/src/mappings/lpTokenPriceHandler.ts -async function getAMMData(api, chain) { - const { balances } = await getTokenPrices({ api, chain }) - // const poolAccount = createAddress('par/ammp') - return balances -} diff --git a/projects/parallelamm/index.js b/projects/parallelamm/index.js deleted file mode 100644 index 4f539aa7485..00000000000 --- a/projects/parallelamm/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - deadFrom: '2024-08-17', - timetravel: false, - misrepresentedTokens: true, - ...getExports("parallelamm", ['heiko', 'parallel']), -} - -const chains = ['heiko', 'parallel'] -chains.forEach(chain => { - Object.keys(module.exports[chain]).forEach(key => module.exports[chain][key] = () => ({})) -}) diff --git a/projects/paraluni-dex/index.js b/projects/paraluni-dex/index.js deleted file mode 100644 index 483534b2f2a..00000000000 --- a/projects/paraluni-dex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); -const prehackAddress = '0xa0a33e6a7d8961e4d8210a70bc67d3e7b0e8135f' - -module.exports = uniTvlExport('bsc', '0xf3b426a160686082447545e1150829ee5485a91a') - -module.exports.hallmarks = [ - ['2022-05-02', 'launch new dex'], -] \ No newline at end of file diff --git a/projects/paraspace-ape-staking-v2/index.js b/projects/paraspace-ape-staking-v2/index.js deleted file mode 100644 index 582bcd3c42f..00000000000 --- a/projects/paraspace-ape-staking-v2/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const abi = require("../paraspace-v2/helper/abis"); -const address = require("../paraspace-v2/helper/address"); -const sdk = require("@defillama/sdk"); - -async function tvl(api) { - const { - UiPoolDataProvider, - PoolAddressProvider, - ApeCoinStaking, - ApeCoin, - P2PPairStaking, - cAPE, - Bayc, - Bakc, - Mayc, - } = address[api.chain]; - let [reservesData] = await api.call({ - target: UiPoolDataProvider, - params: PoolAddressProvider, - abi: abi.UiPoolDataProvider.getReservesData, - }); - - const nMAYC = reservesData.find( - (r) => r.underlyingAsset.toLowerCase() === Mayc.toLowerCase() - ).xTokenAddress; - const nBAYC = reservesData.find( - (r) => r.underlyingAsset.toLowerCase() === Bayc.toLowerCase() - ).xTokenAddress; - const nBAKC = reservesData.find( - (r) => r.underlyingAsset.toLowerCase() === Bakc.toLowerCase() - ).xTokenAddress; - - const stakedAddress = [nBAYC, nMAYC, nBAKC, P2PPairStaking, cAPE]; - - const balances = {}; - const allStakes = [] - for (const stake of stakedAddress) { - const stakeData = await api.call({ - target: ApeCoinStaking, - params: stake, - abi: abi.ApeCoinStaking.getAllStakes, - }); - allStakes.push(stakeData); - } - - const otherPools = {} - allStakes.flat().forEach(({ poolId, tokenId, deposited }) => { - if (poolId === '0') { - sdk.util.sumSingleBalance(balances, ApeCoin, deposited, api.chain) - return; - } - otherPools[`${poolId}-${tokenId}`] = deposited - }) - Object.values(otherPools).forEach(v => sdk.util.sumSingleBalance(balances, ApeCoin, v, api.chain)) - - return balances; -} - -module.exports = { - ethereum: { - tvl, - }, -}; diff --git a/projects/paraspace-ape-staking/index.js b/projects/paraspace-ape-staking/index.js deleted file mode 100644 index 94c4daa7346..00000000000 --- a/projects/paraspace-ape-staking/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const abi = require("../paraspace/helper/abis"); -const address = require("../paraspace/helper/address"); -const sdk = require("@defillama/sdk"); - -async function tvl(api) { - const { - UiPoolDataProvider, - PoolAddressProvider, - ApeCoinStaking, - ApeCoin, - P2PPairStaking, - cAPE, - Bayc, - Bakc, - Mayc, - } = address[api.chain]; - let [reservesData] = await api.call({ - target: UiPoolDataProvider, - params: PoolAddressProvider, - abi: abi.UiPoolDataProvider.getReservesData, - }); - - const nMAYC = reservesData.find( - (r) => r.underlyingAsset.toLowerCase() === Mayc.toLowerCase() - ).xTokenAddress; - const nBAYC = reservesData.find( - (r) => r.underlyingAsset.toLowerCase() === Bayc.toLowerCase() - ).xTokenAddress; - const nBAKC = reservesData.find( - (r) => r.underlyingAsset.toLowerCase() === Bakc.toLowerCase() - ).xTokenAddress; - - const stakedAddress = [nBAYC, nMAYC, nBAKC, P2PPairStaking, cAPE]; - - const balances = {}; - - const allStakes = await api.multiCall({ - calls: stakedAddress, - target: ApeCoinStaking, - abi: abi.ApeCoinStaking.getAllStakes, - }); - const otherPools = {} - allStakes.flat().forEach(({ poolId, tokenId, deposited }) => { - if (poolId === '0') { - sdk.util.sumSingleBalance(balances, ApeCoin, deposited, api.chain) - return; - } - otherPools[`${poolId}-${tokenId}`] = deposited - }) - Object.values(otherPools).forEach(v => sdk.util.sumSingleBalance(balances, ApeCoin, v, api.chain)) - - return balances; -} - -module.exports = { - ethereum: { - tvl, - }, -}; diff --git a/projects/paraspace-v2/helper/abis/ApeCoinStaking.json b/projects/paraspace-v2/helper/abis/ApeCoinStaking.json deleted file mode 100644 index ed67d317f66..00000000000 --- a/projects/paraspace-v2/helper/abis/ApeCoinStaking.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllStakes": "function getAllStakes(address _address) external view returns (tuple(uint256 poolId, uint256 tokenId, uint256 deposited, uint256 unclaimed, uint256 rewards24hr, tuple(uint256 mainTokenId, uint256 mainTypePoolId))[])" -} diff --git a/projects/paraspace-v2/helper/abis/ERC721.json b/projects/paraspace-v2/helper/abis/ERC721.json deleted file mode 100644 index 60574c05f11..00000000000 --- a/projects/paraspace-v2/helper/abis/ERC721.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/paraspace-v2/helper/abis/UiPoolDataProvider.json b/projects/paraspace-v2/helper/abis/UiPoolDataProvider.json deleted file mode 100644 index 5172ed11532..00000000000 --- a/projects/paraspace-v2/helper/abis/UiPoolDataProvider.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getReservesData": "function getReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 baseLTVasCollateral, uint256 reserveLiquidationThreshold, uint256 reserveLiquidationBonus, uint256 reserveFactor, bool usageAsCollateralEnabled, bool borrowingEnabled, bool auctionEnabled, bool isActive, bool isFrozen, bool isPaused, bool isAtomicPricing, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint40 lastUpdateTimestamp, address xTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, address auctionStrategyAddress, address timeLockStrategyAddress, uint256 availableLiquidity, uint256 totalScaledVariableDebt, uint256 priceInMarketReferenceCurrency, address priceOracle, uint256 variableRateSlope1, uint256 variableRateSlope2, uint256 baseVariableBorrowRate, uint256 optimalUsageRatio, uint128 accruedToTreasury, uint256 borrowCap, uint256 supplyCap, uint8 assetType, tuple(uint256 minThreshold, uint256 midThreshold, uint48 minWaitTime, uint48 midWaitTime, uint48 maxWaitTime, uint48 poolPeriodWaitTime, uint256 poolPeriodLimit, uint256 period, uint128 totalAmountInCurrentPeriod, uint48 lastResetTimestamp) timeLockStrategyData)[], tuple(uint256 marketReferenceCurrencyUnit, int256 marketReferenceCurrencyPriceInUsd, int256 networkBaseTokenPriceInUsd, uint8 networkBaseTokenPriceDecimals))", - "getUniswapV3LpTokenData": "function getUniswapV3LpTokenData(address provider, address lpTokenAddress, uint256 tokenId) view returns (tuple(address token0, address token1, uint24 feeRate, int24 positionTickLower, int24 positionTickUpper, int24 currentTick, uint128 liquidity, uint256 liquidityToken0Amount, uint256 liquidityToken1Amount, uint256 lpFeeToken0Amount, uint256 lpFeeToken1Amount, uint256 tokenPrice, uint256 baseLTVasCollateral, uint256 reserveLiquidationThreshold))" -} diff --git a/projects/paraspace-v2/helper/abis/index.js b/projects/paraspace-v2/helper/abis/index.js deleted file mode 100644 index a6790156187..00000000000 --- a/projects/paraspace-v2/helper/abis/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const UiPoolDataProvider = require("./UiPoolDataProvider.json"); -const ERC721 = require("./ERC721.json"); -const ApeCoinStaking = require("./ApeCoinStaking.json"); - -module.exports = { - UiPoolDataProvider, - ERC721, - ApeCoinStaking -}; diff --git a/projects/paraspace-v2/helper/address.js b/projects/paraspace-v2/helper/address.js deleted file mode 100644 index b51e68b54e4..00000000000 --- a/projects/paraspace-v2/helper/address.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - ethereum: { - UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", - Bayc: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", - Mayc: "0x60E4d786628Fea6478F785A6d7e704777c86a7c6", - Bakc: "0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623", - ApeCoinStaking: "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9", - ApeCoin: "0x4d224452801ACEd8B2F0aebE155379bb5D594381", - - UiPoolDataProvider: "0xC60e48ddb7C1af0508332FB42d84B51F981e274c", - PoolAddressProvider: "0xfae470A311f61944346BbB8709CDc2398506Be46", - cAPE: "0x2E9045e7c001056cbcF5eD837F96A8630075a04D", - P2PPairStaking: "0x4F773f3FC89b73B34FB57EBc667a245D5e3812F6", - }, -}; diff --git a/projects/paraspace-v2/helper/index.js b/projects/paraspace-v2/helper/index.js deleted file mode 100644 index 437e481b659..00000000000 --- a/projects/paraspace-v2/helper/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { sumTokens2, } = require('../../helper/unwrapLPs') - -const abi = require("./abis"); -const address = require("./address"); - -async function tvl(api) { - const { UiPoolDataProvider, PoolAddressProvider, UniV3Pos, P2PPairStaking, Bayc, Bakc, Mayc } = address[api.chain] - let [reservesData] = await api.call({ - target: UiPoolDataProvider, - params: PoolAddressProvider, - abi: abi.UiPoolDataProvider.getReservesData, - }) - - const balances = {}; - if (UniV3Pos) { - const isUniV3XToken = i => i.underlyingAsset.toLowerCase() === UniV3Pos.toLowerCase() - - const uniswapOwners = reservesData.filter(isUniV3XToken).map(i => i.xTokenAddress) - reservesData = reservesData.filter(i => !isUniV3XToken(i)) - await sumTokens2({ chain: api.chain, api, balances, owners: uniswapOwners, resolveUniV3: true}) - } - let toa = reservesData.map(i => ([i.underlyingAsset, i.xTokenAddress])) - if (api.chain === "ethereum") { - toa.push(...[[Bayc, P2PPairStaking], [Mayc, P2PPairStaking], [Bakc, P2PPairStaking]]) - } - return sumTokens2({ chain: api.chain, balances, tokensAndOwners: toa, blacklistedTokens: [ADDRESSES.linea.WETH_1] }) -} - -async function borrowed(api) { - const { UiPoolDataProvider, PoolAddressProvider, } = address[api.chain] - let [reservesData] = await api.call({ - target: UiPoolDataProvider, - params: PoolAddressProvider, - abi: abi.UiPoolDataProvider.getReservesData, - }) - - const balances = {}; - - reservesData.forEach((d) => { - sdk.util.sumSingleBalance(balances, d.underlyingAsset, d.totalScaledVariableDebt * d.variableBorrowIndex * 1e-27, api.chain) - }) - - return balances; -} - -module.exports = { - tvl, - borrowed, -}; diff --git a/projects/paraspace-v2/index.js b/projects/paraspace-v2/index.js deleted file mode 100644 index 60f2fc9b06c..00000000000 --- a/projects/paraspace-v2/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { tvl, borrowed } = require("./helper/index"); - -module.exports = { - hallmarks: [], - methodology: `TVL includes ERC-20 and ERC-721 tokens that have been supplied as well as ERC-20 tokens that are supplied for lending.`, - ethereum: { - tvl, - borrowed, - }, -}; diff --git a/projects/paraspace/helper/abis/ApeCoinStaking.json b/projects/paraspace/helper/abis/ApeCoinStaking.json deleted file mode 100644 index ed67d317f66..00000000000 --- a/projects/paraspace/helper/abis/ApeCoinStaking.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllStakes": "function getAllStakes(address _address) external view returns (tuple(uint256 poolId, uint256 tokenId, uint256 deposited, uint256 unclaimed, uint256 rewards24hr, tuple(uint256 mainTokenId, uint256 mainTypePoolId))[])" -} diff --git a/projects/paraspace/helper/abis/ERC721.json b/projects/paraspace/helper/abis/ERC721.json deleted file mode 100644 index 60574c05f11..00000000000 --- a/projects/paraspace/helper/abis/ERC721.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/paraspace/helper/abis/UiPoolDataProvider.json b/projects/paraspace/helper/abis/UiPoolDataProvider.json deleted file mode 100644 index 5172ed11532..00000000000 --- a/projects/paraspace/helper/abis/UiPoolDataProvider.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getReservesData": "function getReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 baseLTVasCollateral, uint256 reserveLiquidationThreshold, uint256 reserveLiquidationBonus, uint256 reserveFactor, bool usageAsCollateralEnabled, bool borrowingEnabled, bool auctionEnabled, bool isActive, bool isFrozen, bool isPaused, bool isAtomicPricing, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint40 lastUpdateTimestamp, address xTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, address auctionStrategyAddress, address timeLockStrategyAddress, uint256 availableLiquidity, uint256 totalScaledVariableDebt, uint256 priceInMarketReferenceCurrency, address priceOracle, uint256 variableRateSlope1, uint256 variableRateSlope2, uint256 baseVariableBorrowRate, uint256 optimalUsageRatio, uint128 accruedToTreasury, uint256 borrowCap, uint256 supplyCap, uint8 assetType, tuple(uint256 minThreshold, uint256 midThreshold, uint48 minWaitTime, uint48 midWaitTime, uint48 maxWaitTime, uint48 poolPeriodWaitTime, uint256 poolPeriodLimit, uint256 period, uint128 totalAmountInCurrentPeriod, uint48 lastResetTimestamp) timeLockStrategyData)[], tuple(uint256 marketReferenceCurrencyUnit, int256 marketReferenceCurrencyPriceInUsd, int256 networkBaseTokenPriceInUsd, uint8 networkBaseTokenPriceDecimals))", - "getUniswapV3LpTokenData": "function getUniswapV3LpTokenData(address provider, address lpTokenAddress, uint256 tokenId) view returns (tuple(address token0, address token1, uint24 feeRate, int24 positionTickLower, int24 positionTickUpper, int24 currentTick, uint128 liquidity, uint256 liquidityToken0Amount, uint256 liquidityToken1Amount, uint256 lpFeeToken0Amount, uint256 lpFeeToken1Amount, uint256 tokenPrice, uint256 baseLTVasCollateral, uint256 reserveLiquidationThreshold))" -} diff --git a/projects/paraspace/helper/abis/index.js b/projects/paraspace/helper/abis/index.js deleted file mode 100644 index a6790156187..00000000000 --- a/projects/paraspace/helper/abis/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const UiPoolDataProvider = require("./UiPoolDataProvider.json"); -const ERC721 = require("./ERC721.json"); -const ApeCoinStaking = require("./ApeCoinStaking.json"); - -module.exports = { - UiPoolDataProvider, - ERC721, - ApeCoinStaking -}; diff --git a/projects/paraspace/helper/address.js b/projects/paraspace/helper/address.js deleted file mode 100644 index e11bd044695..00000000000 --- a/projects/paraspace/helper/address.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = { - ethereum: { - UiPoolDataProvider: "0x30E6C173Ff3958a6629258C71Bd161e70BEe0e6D", - PoolAddressProvider: "0x6cD30e716ADbE47dADf7319f6F2FB83d507c857d", - UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", - P2PPairStaking: "0xf090Eb4c2B63e7B26E8Bb09e6Fc0cC3A7586263B", - Bayc: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", - Mayc: "0x60E4d786628Fea6478F785A6d7e704777c86a7c6", - Bakc: "0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623", - ApeCoinStaking: "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9", - ApeCoin: "0x4d224452801ACEd8B2F0aebE155379bb5D594381", - cAPE: "0xC5c9fB6223A989208Df27dCEE33fC59ff5c26fFF", - }, - arbitrum: { - UiPoolDataProvider: "0x94bDD135ccC48fF0440D750300A4e4Ba9B216B3A", - PoolAddressProvider: "0x45a35124749B061a29f91cc8ddf85606586dcf24", - UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", - }, - polygon: { - UiPoolDataProvider: "0xa2a9dD7079f05d17BE291D99048e671129DdDc83", - PoolAddressProvider: "0x42b0C49130162F949e82ba855C4eFF0C3Fd4C5cC", - UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", - }, - era: { - UiPoolDataProvider: "0x451E3288a2dcD91b001cd831dD75109D524578b6", - PoolAddressProvider: "0xc11B2F53E119634c8755855e56D323C4F6dfd23d", - }, - moonbeam: { - UiPoolDataProvider: "0x8CE5F6F4268A756b6656F576d0F9Cf4fD73CBb52", - PoolAddressProvider: "0x086C77cEc639bEBbfCC0a3467736636c3F755a96", - } -}; diff --git a/projects/paraspace/helper/index.js b/projects/paraspace/helper/index.js deleted file mode 100644 index 83b8c975bda..00000000000 --- a/projects/paraspace/helper/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { sumTokens2, } = require('../../helper/unwrapLPs') - -const abi = require("./abis"); -const address = require("./address"); - -async function tvl(api) { - const { UiPoolDataProvider, PoolAddressProvider, UniV3Pos, P2PPairStaking, Bayc, Bakc, Mayc } = address[api.chain] - let [reservesData] = await api.call({ - target: UiPoolDataProvider, - params: PoolAddressProvider, - abi: abi.UiPoolDataProvider.getReservesData, - }) - - const balances = {}; - if (UniV3Pos) { - const isUniV3XToken = i => i.underlyingAsset.toLowerCase() === UniV3Pos.toLowerCase() - - const uniswapOwners = reservesData.filter(isUniV3XToken).map(i => i.xTokenAddress) - reservesData = reservesData.filter(i => !isUniV3XToken(i)) - await sumTokens2({ chain: api.chain, api, balances, owners: uniswapOwners, resolveUniV3: true}) - } - let toa = reservesData.map(i => ([i.underlyingAsset, i.xTokenAddress])) - if (api.chain === "ethereum") { - toa.push(...[[Bayc, P2PPairStaking], [Mayc, P2PPairStaking], [Bakc, P2PPairStaking]]) - } - return sumTokens2({ chain: api.chain, balances, tokensAndOwners: toa, blacklistedTokens: [ADDRESSES.linea.WETH_1, address.ethereum.cAPE] }) -} - -async function borrowed(api) { - const { UiPoolDataProvider, PoolAddressProvider, } = address[api.chain] - let [reservesData] = await api.call({ - target: UiPoolDataProvider, - params: PoolAddressProvider, - abi: abi.UiPoolDataProvider.getReservesData, - }) - - const balances = {}; - - reservesData.forEach((d) => { - sdk.util.sumSingleBalance(balances, d.underlyingAsset, d.totalScaledVariableDebt * d.variableBorrowIndex * 1e-27, api.chain) - }) - - return balances; -} - -module.exports = { - tvl, - borrowed, -}; diff --git a/projects/paraspace/index.js b/projects/paraspace/index.js deleted file mode 100644 index f8c7d897522..00000000000 --- a/projects/paraspace/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { tvl, borrowed } = require("./helper/index"); - -module.exports = { - hallmarks: [ - // ['2023-03-17', 'Whitehat hack'], - ['2023-05-10', 'Team Dispute'], - ], - methodology: `TVL includes ERC-20 and ERC-721 tokens that have been supplied as well as ERC-20 tokens that are supplied for lending.`, - ethereum: { - tvl, - borrowed, - }, - arbitrum: { - tvl, - borrowed, - }, - polygon: { - tvl, - borrowed, - }, - era: { - tvl, - borrowed, - }, - moonbeam: { - tvl, - borrowed, - } -}; diff --git a/projects/parasset/index.js b/projects/parasset/index.js deleted file mode 100644 index a3fb5dbe880..00000000000 --- a/projects/parasset/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -const PUSDMorPool = "0x505eFcC134552e34ec67633D1254704B09584227"; // Mortgage-PUSD pool contract -const PETHMorPool = "0x9a5C88aC0F209F284E35b4306710fEf83b8f9723"; //Mortgage-PETH pool contract -const NEST = "0x04abeda201850ac0124161f037efd70c74ddc74c"; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: () => ({}), - staking: stakings([PUSDMorPool, PETHMorPool], NEST), - }, - methodology: - "Counts liquidty on the Insurance", -}; diff --git a/projects/paraswap.js b/projects/paraswap.js deleted file mode 100644 index f8a4230a60c..00000000000 --- a/projects/paraswap.js +++ /dev/null @@ -1,34 +0,0 @@ -const {sumTokens2, } = require("./helper/unwrapLPs.js") -const { getConfig } = require("./helper/cache.js") -const { stakings } = require("./helper/staking.js") - -// PSP staking for sPSP in each PMM pool (used for signalling amon other things) -const PSP = '0xcafe001067cdef266afb7eb5a286dcfd277f3de5' -const pools_url = 'https://api.paraswap.io/staking/pools/1' -async function staking(api) { - const data = await getConfig('paraswap', pools_url) - const owners = data.pools.map(p => p.address).concat(["0x716fBC68E0c761684D9280484243FF094CC5FfAB"]) - return sumTokens2({ api, owners, tokens: [PSP]}) -} - -// Safety Module staking of 20WETH_80PSP balancer LP -// pool2(safetyModuleBalStaking, balancerLP_20WETH_80PSP) // not working as it is a balancer and not a uniswap LP -const balancerLP_20WETH_80PSP = '0xcb0e14e96f2cefa8550ad8e4aea344f211e5061d' -const safetyModuleBalStaking = '0xc8dc2ec5f5e02be8b37a8444a1931f02374a17ab' -async function safetyModuleStaking(api) { - return sumTokens2({ api, owners: [safetyModuleBalStaking, "0x593F39A4Ba26A9c8ed2128ac95D109E8e403C485"], tokens: [balancerLP_20WETH_80PSP]}) -} - -module.exports = { - methodology: "PSP can be staked either on its single asset sePSP pool or 2x boosted sePSP2, an 80/20 balancer pool. Staking allows users to receive Revenue based on their boosted actions.", - ethereum: { - staking, - pool2: safetyModuleStaking, - tvl: () => ({}), - }, - optimism: { - staking: stakings(["0x8C934b7dBc782568d14ceaBbEAeDF37cB6348615"], "0xd3594E879B358F430E20F82bea61e83562d49D48"), - pool2: stakings(["0x26Ee65874f5DbEfa629EB103E7BbB2DEAF4fB2c8"], "0x11f0b5cca01b0f0a9fe6265ad6e8ee3419c68440"), - tvl: () => ({}), - }, -} diff --git a/projects/parcl-v3/index.js b/projects/parcl-v3/index.js deleted file mode 100644 index 51a12047ceb..00000000000 --- a/projects/parcl-v3/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens2, } = require('../helper/solana') - -async function tvl() { - // https://docs.parcl.co/addresses - return sumTokens2({ tokenAccounts: ['Ai9AuTfGncuFxEknjZT4HU21Rkv98M1QyXpbW9Xct6LK'] }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} \ No newline at end of file diff --git a/projects/parcl/index.js b/projects/parcl/index.js deleted file mode 100644 index a79539b4bf7..00000000000 --- a/projects/parcl/index.js +++ /dev/null @@ -1,208 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor") - -async function tvl() { - const provider = getProvider() - const programId = 'pAMMTYk2C9tAxenepGk8a1bi9JQtUdnzu3UAh7NxYcW' - const program = new Program(idl, programId, provider) - const data = await program.account.pool.all() - return sumTokens2({ tokenAccounts: data.map(i => i.account.collateralVault.toBase58()) }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} - -const idl = { - version: '0.0.3', - name: 'parcl_v2_core', - constants: [], - instructions: [], - accounts: [ - { - name: 'pool', - type: { - kind: 'struct', - fields: [ - { - name: 'version', - type: 'u8' - }, - { - name: 'bumpSeed', - type: { - array: [ - 'u8', - 1 - ] - } - }, - { - name: 'tradeFeeRateSeed', - type: { - array: [ - 'u8', - 2 - ] - } - }, - { - name: 'liquidationFeeRateSeed', - type: { - array: [ - 'u8', - 2 - ] - } - }, - { - name: 'liquidationThresholdSeed', - type: { - array: [ - 'u8', - 2 - ] - } - }, - { - name: 'minLeverageSeed', - type: { - array: [ - 'u8', - 1 - ] - } - }, - { - name: 'maxLeverageSeed', - type: { - array: [ - 'u8', - 1 - ] - } - }, - { - name: 'maxNegativeSkewImpactSeed', - type: { - array: [ - 'u8', - 8 - ] - } - }, - { - name: 'oracleType', - type: 'u8' - }, - { - name: 'minLeverage', - type: 'u8' - }, - { - name: 'maxLeverage', - type: 'u8' - }, - { - name: 'tradeFeeRate', - type: 'u16' - }, - { - name: 'liquidationFeeRate', - type: 'u16' - }, - { - name: 'liquidationThreshold', - type: 'u16' - }, - { - name: 'state', - type: 'publicKey' - }, - { - name: 'creator', - type: 'publicKey' - }, - { - name: 'priceFeed', - type: 'publicKey' - }, - { - name: 'liquidityTokenMint', - type: 'publicKey' - }, - { - name: 'liquidityTokenVault', - type: 'publicKey' - }, - { - name: 'collateralMint', - type: 'publicKey' - }, - { - name: 'collateralVault', - type: 'publicKey' - }, - { - name: 'protocolFeeVault', - type: 'publicKey' - }, - { - name: 'skewManager', - type: { - defined: 'SkewManager' - } - }, - { - name: 'reserved0', - type: 'u128' - }, - { - name: 'reserved1', - type: 'u128' - }, - { - name: 'reserved2', - type: 'publicKey' - }, - { - name: 'reserved3', - type: 'publicKey' - } - ] - } - } - ], - types: [ - { - name: 'SkewManager', - type: { - kind: 'struct', - fields: [ - { - name: 'maxNegativeSkewImpact', - type: 'u64' - }, - { - name: 'lastTimestamp', - type: 'i64' - }, - { - name: 'cumulativeFundingRate', - type: 'i128' - }, - { - name: 'openInterestLong', - type: 'u128' - }, - { - name: 'openInterestShort', - type: 'u128' - } - ] - } - } - ], - errors: [] -} \ No newline at end of file diff --git a/projects/pareto/index.js b/projects/pareto/index.js deleted file mode 100644 index f828739297b..00000000000 --- a/projects/pareto/index.js +++ /dev/null @@ -1,189 +0,0 @@ -const sdk = require('@defillama/sdk') -const { sumTokens2 } = require('../helper/unwrapLPs') -const BigNumber = require("bignumber.js"); -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') - -const contracts = { - ethereum: { - usp: '0x97cCC1C046d067ab945d3CF3CC6920D3b1E54c88', // USP - factory: { - block: 22938055, - address: '0x59aabdad8fdabd227cc71543b128765f93906626', - }, - credits: [ - "0xf6223C567F21E33e859ED7A045773526E9E3c2D5", // Fasanara Yield vault, - "0x4462eD748B8F7985A4aC6b538Dfc105Fce2dD165", // Bastion - "0x14B8E918848349D1e71e806a52c13D4e0d3246E0", // Adaptive Frontier - "0x433D5B175148dA32Ffe1e1A37a939E1b7e79be4d", // FalconX - ], - }, - polygon: { - credits: [ - '0xF9E2AE779a7d25cDe46FccC41a27B8A4381d4e52' // Bastion CV - ] - }, - optimism: { - credits: [ - "0xD2c0D848aA5AD1a4C12bE89e713E70B73211989B", // FalconX - ], - excludeVaultsAfterTimestamp: { - '0xD2c0D848aA5AD1a4C12bE89e713E70B73211989B': 1756936799 - } - }, - arbitrum: { - credits: [ - "0x3919396Cd445b03E6Bb62995A7a4CB2AC544245D" // Bastion Credit Vault - ] - } -} - -async function getUspTvl(api, usp, credits){ - const [ - queueAddress, - uspTotalSupply, - ] = await Promise.all([ - 'address:queue', - 'uint256:totalSupply', - ].map(abi => api.call({ abi, target: usp }))) - - const yieldSources = await api.call({ - abi: 'function getAllYieldSources() view returns (tuple(address token, address source, address vaultToken, uint256 maxCap, tuple(bytes4 method, uint8 methodType)[] allowedMethods, uint8 vaultType)[] yieldSources)', - target: queueAddress, - chain: api.chain - }) - - // Exclude amount deposited in credit vaults to avoid double-counting - const creditsSources = yieldSources.filter( s => credits.map( addr => addr.toLowerCase() ).includes(s.source.toLowerCase()) ) - const yieldSourcesAmounts = await Promise.all(creditsSources.map( s => api.call({ abi: 'function getCollateralsYieldSourceScaled(address) returns (uint256)', target: queueAddress, params: [s.source] }) )) - const uspTvl = yieldSourcesAmounts.reduce( (acc, amount) => { - return BigNumber(acc).minus(amount) - }, uspTotalSupply) - - return uspTvl/1e12 - -} - -async function tvl(api) { - const { usp = undefined, credits = [], excludeVaultsAfterTimestamp = [], factory } = contracts[api.chain] - const balances = {} - const ownerTokens = {} - const blacklistedTokens = [] - const trancheTokensMapping = {} - - // Add USP Total Supply - if (usp){ - const uspUnderlying = ADDRESSES[api.chain].USDC - const scaledUSPTvl = await getUspTvl(api, usp, credits) - sdk.util.sumSingleBalance(balances, uspUnderlying, scaledUSPTvl, api.chain) - } - - // Add credit vaults from factory - if (factory) { - const logs = await getLogs({ - api, - target: factory.address, - topics: ['0x22d236b886e994153ab139e04b213355a725846284c6018c26c6af0988bd58d7'], - eventAbi: 'event CreditVaultDeployed(address proxy)', - onlyArgs: true, - fromBlock: factory.block, - }) - - logs.forEach( l => { - if (!credits.find( addr => addr.toLowerCase() === l.proxy.toLowerCase())){ - credits.push(l.proxy) - } - }) - } - - // Exclude credit vaults by block - const creditsFiltered = credits.filter( addr => { - const foundTimestamp = excludeVaultsAfterTimestamp[addr] - return !foundTimestamp || !api.timestamp || Number(foundTimestamp)>Number(api.timestamp) - } ) - - const [ - cdoToken, - aatrances, - bbtrances, - aaprices, - bbprices, - ] = await Promise.all([ - "address:token", - "address:AATranche", - "address:BBTranche", - "uint256:priceAA", - "uint256:priceBB" - ].map(abi => api.multiCall({ abi, calls: creditsFiltered }))) - - blacklistedTokens.push(...creditsFiltered) - blacklistedTokens.push(...aatrances) - blacklistedTokens.push(...bbtrances) - - // Load tokens decimals - const callsDecimals = [...cdoToken].map( t => ({ target: t, params: [] }) ) - const decimalsResults = await api.multiCall({abi: 'erc20:decimals', calls: callsDecimals}) - const tokensDecimals = decimalsResults.reduce( (tokensDecimals, decimals, i) => { - const call = callsDecimals[i] - tokensDecimals[call.target] = decimals - return tokensDecimals - }, {}) - - const [creditsStrategies, creditsTokens] = await Promise.all(['address:strategy', 'address:token'].map( abi => api.multiCall({ abi, calls: creditsFiltered }))) - - // Get CDOs contract values - const [ - contractValue, - pendingWithdraws, - pendingInstantWithdraws - ] = await Promise.all([ - api.multiCall({ abi: 'uint256:getContractValue', calls: creditsFiltered }), - api.multiCall({ abi: 'uint256:pendingWithdraws', calls: creditsStrategies }), - api.multiCall({ abi: 'uint256:pendingInstantWithdraws', calls: creditsStrategies }), - ]) - - // Count pending withdraws - pendingWithdraws.map( (amount, i) => sdk.util.sumSingleBalance(balances, creditsTokens[i], amount, api.chain)) - pendingInstantWithdraws.map( (amount, i) => sdk.util.sumSingleBalance(balances, creditsTokens[i], amount, api.chain)) - - cdoToken.forEach((token, i) => { - const tokenDecimals = tokensDecimals[token] || 18 - trancheTokensMapping[aatrances[i]] = { - token, - decimals: tokenDecimals, - price: BigNumber(aaprices[i]).div(`1e${tokenDecimals}`).toFixed() - } - trancheTokensMapping[bbtrances[i]] = { - token, - decimals: tokenDecimals, - price: BigNumber(bbprices[i]).div(`1e${tokenDecimals}`).toFixed() - } - - // Get CDOs underlying tokens balances - sdk.util.sumSingleBalance(balances, token, contractValue[i], api.chain) - }) - - const trancheTokensBalancesCalls = [] - - // Process tranche tokens BY balances - if (trancheTokensBalancesCalls.length){ - const trancheTokensBalancesResults = await api.multiCall({ abi: 'erc20:balanceOf', calls: trancheTokensBalancesCalls }) - trancheTokensBalancesResults.forEach( (trancheTokenBalance, i) => { - const trancheToken = trancheTokensBalancesCalls[i].target - const decimals = trancheTokensMapping[trancheToken].decimals - const trancheTokenPrice = trancheTokensMapping[trancheToken].price || 1 - const underlyingToken = trancheTokensMapping[trancheToken].token - const underlyingTokenBalance = BigNumber(trancheTokenBalance || 0).times(trancheTokenPrice).div(`1e18`).times(`1e${decimals}`).toFixed(0) - balances[underlyingToken] = BigNumber(balances[underlyingToken] || 0).plus(underlyingTokenBalance) - }) - } - return sumTokens2({ api, balances, ownerTokens, blacklistedTokens, }) -} - -module.exports = { - hallmarks: [], -}; - -Object.keys(contracts).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/paribus/index.js b/projects/paribus/index.js deleted file mode 100644 index 483c5cea70c..00000000000 --- a/projects/paribus/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -module.exports = { - arbitrum: compoundExports2({ comptroller: '0x712E2B12D75fe092838A3D2ad14B6fF73d3fdbc9', cether: '0xaffd437801434643b734d0b2853654876f66f7d7' }), -} \ No newline at end of file diff --git a/projects/parraton/index.js b/projects/parraton/index.js deleted file mode 100644 index 56b7d866a50..00000000000 --- a/projects/parraton/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { get } = require('../helper/http') -const ADDRESSES = require("../helper/coreAssets.json"); - -async function tvl(api) { - const vaults = await get('https://api.parraton.com/v1/vaults') - const tvl =vaults.reduce((acc, vault) => { - acc += Number(vault.tvlUsd) - return acc - }, 0) - api.add(ADDRESSES.ton.USDT, tvl * 1e6) -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: ` -The methodology for calculating TVL includes both the TON balance and LP token -data for each vault. We convert the TON balance to its USD equivalent and add it -to the value of DeDust LP tokens, which is calculated using on-chain data -(reserve0, reserve1, total LP supply). The value of LP tokens is determined by -their share of pool reserves, adjusted to USD. The total TVL is the sum of these -values across all vaults. The calculation is performed on the Parraton API side. - `.trim(), - - ton: { - tvl - } -} \ No newline at end of file diff --git a/projects/parrot.js b/projects/parrot.js deleted file mode 100644 index 5c32b39cdf7..00000000000 --- a/projects/parrot.js +++ /dev/null @@ -1,16 +0,0 @@ - -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, } = require("./helper/solana"); - -async function tvl() { - const provider = getProvider() - const idl = await Program.fetchIdl('HajXYaDXmohtq2ZxZ6QVNEpqNn1T53Zc9FnR1CnaNnUf', provider) - const program = new Program(idl, 'HajXYaDXmohtq2ZxZ6QVNEpqNn1T53Zc9FnR1CnaNnUf', provider) - const pools = await program.account.vaultType.all() - return sumTokens2({ tokenAccounts: pools.map(i => i.account.collateralTokenHolder.toString()), blacklistedTokens: ['PRT88RkA4Kg5z7pKnezeNH4mafTvtQdfFgpQTGRjz44'], }) -} - -module.exports = { - timetravel: false, - solana: { tvl, staking: async () => sumTokens2({ tokenAccounts: ['CJM5Un8AhMgLJv2mcj3o5z2z8H3deDzLA1TH7E3WhZQG']}) }, -} diff --git a/projects/parrotegg/index.js b/projects/parrotegg/index.js deleted file mode 100644 index cff225cef00..00000000000 --- a/projects/parrotegg/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require('../helper/utils'); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'iotex', - masterchef: '0x83E7e97C4e92D56c0653f92d9b0c0B70288119b8', - nativeToken: '0x176cb5113b4885b3a194bd69056ac3fe37a4b95c', - }), - masterchefExports({ - chain: 'harmony', - masterchef: '0xFb15945E38a11450AF5E3FF20355D71Da72FfE8a', - nativeToken: '0xC36769DFcDF05B2949F206FC34C8870707D33C89', - }), - masterchefExports({ - chain: 'arbitrum', - masterchef: '0x1cCf20F4eE3EFD291267c07268BEcbFDFd192311', - nativeToken: '0x78055dAA07035Aa5EBC3e5139C281Ce6312E1b22', - }), - masterchefExports({ - chain: 'polygon', - masterchef: '0x34E4cd20F3a4FdC5e42FdB295e5A118D4eEB0b79', - nativeToken: '0xB63E54F16600b356f6d62dDd43Fca5b43d7c66fd', - }), -]) diff --git a/projects/partialfinance/index.js b/projects/partialfinance/index.js deleted file mode 100644 index 09f3dfb9917..00000000000 --- a/projects/partialfinance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { staking, } = require("../helper/staking"); -const { pool2 } = require('../helper/pool2') - -const pshareTokenAddress = "0x8C64D18E9d4A7b8e8c10C5c5a4b8D6D83cb15002"; -const pshareRewardPoolAddress = "0xd5f73D588C3CaCd45B334f873b7B2E7DfaA4cCc7"; -const boardroomAddress = "0x5FcE757a1aa5C489B008a4Df6CA2ef9088B5bCA4"; - -const ftmLPs = [ - "0xe78c2b734F0e7BD708B1a6d79a0cF8937C4DA278", // partialFtmLpAddress - "0x802ed580E7b48abBfaBf6edC73009705CE210d0b", // pshareFtmLpAddress -] - -module.exports = { - deadFrom: "2024-04-01", - methodology: "Pool2 deposits consist of PARTIAL/FTM and PSHARE/FTM LP tokens deposits while the staking TVL consists of the PSHARES tokens locked within the Boardroom contract(0x5FcE757a1aa5C489B008a4Df6CA2ef9088B5bCA4).", - fantom: { - tvl: async () => ({}), - pool2: pool2(pshareRewardPoolAddress, ftmLPs), - staking: staking(boardroomAddress, pshareTokenAddress), - }, -}; \ No newline at end of file diff --git a/projects/particle-money/abi.json b/projects/particle-money/abi.json deleted file mode 100644 index fe9536647cc..00000000000 --- a/projects/particle-money/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "bank": { - "usableEthBalance": "uint256:usableCollateralBalance" - }, - "multiFeeDistribution": { - "totalSupply": "uint256:totalSupply" - } -} \ No newline at end of file diff --git a/projects/particle-money/index.js b/projects/particle-money/index.js deleted file mode 100644 index 10603c46a39..00000000000 --- a/projects/particle-money/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const Abis = require("./abi.json"); -const { sumTokensExport, sumUnknownTokens, } = require('../helper/unknownTokens') - -const Contracts = { - base: { - weth: ADDRESSES.base.WETH, - xeth: "0xC4655EB36aa7F1E476A3059A609443dEd02aB61F", - particle: "0xaFe5451185513925F5E757F001425338Ff93412D", - bank: "0xbd25055211498c703fD4Ea5404775FA37A8F4f9f", - multiFeeDistribution: "0xcAB5FD12a21B471003b89D7B0354c57C2B686155", - chef: "0x0B6d05af371610Fe4ca32c7cA468FC7d7e355b6d", - lps: [ - "0x111D138D1A6C3dAe816678d03e2a17F3FdDF937E", // XETH_ETH_LP - "0xCEC4795f5198b27d9E7087aEE518293676373F63", // PARTICLE_ETH_LP - ], - }, -}; - -async function calcBaseStakingTvl(api) { - const baseStakingData = await api.call({ target: Contracts.base.multiFeeDistribution, abi: Abis.multiFeeDistribution.totalSupply, }); - api.add(Contracts.base.particle, baseStakingData) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: Contracts.base.lps, }) -} - -module.exports = { - base: { - tvl: - sumTokensExport({ - owner: Contracts.base.bank, - tokens: [Contracts.base.weth] - }), - pool2: - sumTokensExport({ - owner: Contracts.base.chef, - tokens: Contracts.base.lps, - useDefaultCoreAssets: true, - }), - staking: calcBaseStakingTvl, - }, -}; \ No newline at end of file diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js deleted file mode 100644 index c674172a3ad..00000000000 --- a/projects/particle-trade-duo/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const config = { - blast: { - weth90d: '0xc932317385fDc794633f612874BD687eA987B151', - usdb90d: '0x57A6CcB2d5663eF874c29b161dD7907c7673feb0', - weth90dv2: '0x08B939da28C97aFa6664eC49aD5bE51805ebbb36', - dusd90dv2: '0xa625B1e6686E8ceADd88aFAC8E44365005C3dbc4', - wethPointYieldSwap: '0x22597493C61c6d766f78F50A98fBd83f7DE9F6B1', - dusdPointYieldSwap: '0x1a540c1A1a67bB7dEe573a1BafD30007862bA02b', - }, -} - -const wrappedToken = { - blast: { - duoEth: '0x1Da40C742F32bBEe81694051c0eE07485fC630f6', - duoUsd: '0x1A3D9B2fa5c6522c8c071dC07125cE55dF90b253', - } -} - -const wrappedNativeTokenMap = { - blast: { - '0x1Da40C742F32bBEe81694051c0eE07485fC630f6': ADDRESSES.blast.fwWETH, - '0x1A3D9B2fa5c6522c8c071dC07125cE55dF90b253': ADDRESSES.blast.fwUSDB, - } -} - -const usdeVaults = { - blast: { - vault: '0xeEa70D690C6c9c5534FcB90b6b0aE71199C7d4d3', - fwUSDe: '0x04efc000dC9c27445b092622f42e09E173beE61f', - } -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - let managers = config[chain] - managers = Object.values(managers) - const tokens = await api.multiCall({ abi: 'address:TOKEN', calls: managers}) - const vaults = await api.multiCall({ abi: 'address:VAULT', calls: managers}) - const yields = await api.multiCall({ abi: 'uint256:getTotalYield', calls: vaults}) - const principal = await api.multiCall({ abi: 'uint256:principal', calls: managers}) - api.add(tokens, yields) - api.add(tokens, principal) - - let wrappedTokens = wrappedToken[chain] - wrappedTokens = Object.values(wrappedTokens) - const wrappedBalances = await api.multiCall({ abi: 'uint256:totalSupply', calls: wrappedTokens}) - const nativeTokens = wrappedTokens.map(wrappedToken => wrappedNativeTokenMap[chain][wrappedToken]) - api.add(nativeTokens, wrappedBalances); - - let usdeVault = usdeVaults[chain] - const wrappedUSDeBalance = await api.call({ - abi: 'erc20:balanceOf', - target: usdeVault.fwUSDe, - params: usdeVault.vault - }); - api.add(ADDRESSES.arbitrum.USDe, wrappedUSDeBalance) - return sumTokens2({ api }) - } - } -}) \ No newline at end of file diff --git a/projects/particle-trade/index.js b/projects/particle-trade/index.js deleted file mode 100644 index 264c421fde5..00000000000 --- a/projects/particle-trade/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - blast: { - tvl: sumTokensExport({ - owner: '0x121B5ac4De4a3E6F4171956BC26ceda40Cb61a56', - tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH, '0x216a5a1135a9dab49fa9ad865e0f22fe22b5630a'], - resolveUniV3: true, - }) - } -} \ No newline at end of file diff --git a/projects/partyswap/index.js b/projects/partyswap/index.js deleted file mode 100644 index 1960e59b2ae..00000000000 --- a/projects/partyswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { stakingPricedLP } = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') - -const PARTY_WAVAX_LP = "0x379842a6cd96a70ebce66004275ce0c68069df62"; -const COREASSETNAME = "avalanche-2"; - - -module.exports={ - avax:{ - tvl: getUniTVL({ factory: '0x58a08bc28f3e8dab8fb2773d8f243bc740398b09', useDefaultCoreAssets: true, }), - staking: stakingPricedLP("0xA07d1932775f22DaeDA671812c16F859b4257363","0x25afd99fcb474d7c336a2971f26966da652a92bc","avax", PARTY_WAVAX_LP, COREASSETNAME), - } -} \ No newline at end of file diff --git a/projects/passdex/index.js b/projects/passdex/index.js deleted file mode 100644 index b9e6368712c..00000000000 --- a/projects/passdex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const config = { - soneium: '0x48E07EE0E8450811AD472fFf10aB68B895EA747A', - unichain: '0x242c913Ff5FE010430A709baab977e88435b7EBF', - hemi: '0x242c913Ff5FE010430A709baab977e88435b7EBF' -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true, }), } -}) diff --git a/projects/pawnfi-ape-staking/index.js b/projects/pawnfi-ape-staking/index.js deleted file mode 100644 index 39fb49fc4bf..00000000000 --- a/projects/pawnfi-ape-staking/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ABI = require("../pawnfi/helper/abi.json") -const sdk = require("@defillama/sdk"); -const { ApeStakingPoolAddress } = require("../pawnfi/helper/config.js") - -module.exports = { - ethereum: { - tvl: async (api) => { - const balances = {}; - - const stakedTotal = await api.multiCall({ - calls: [ - ApeStakingPoolAddress.BoundApe, - ApeStakingPoolAddress.BoundBAYC, - ApeStakingPoolAddress.BoundMAYC, - ApeStakingPoolAddress.BoundBAKC, - ], - target: ApeStakingPoolAddress.ApeCoinStaking, - abi: ABI.stakedTotal, - }) - stakedTotal.forEach((d) => - sdk.util.sumSingleBalance(balances, ApeStakingPoolAddress.APE, d, api.chain) - ); - return balances; - }, - }, -}; diff --git a/projects/pawnfi-lending/index.js b/projects/pawnfi-lending/index.js deleted file mode 100644 index e610e5d3865..00000000000 --- a/projects/pawnfi-lending/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ABI = require("../pawnfi/helper/abi.json") -const { Lending, LendCToken } = require("../pawnfi/helper/config.js") -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') -const { mergeExports } = require('../helper/utils') -const nftTvl = require('../pawnfi-nft/index.js') - -async function getPawnNFTTokens(api) { - const logs = await getLogs({ - api, - target: '0x82cac2725345ea95a200187ae9a5506e48fe1c5d', - topics: ['0x0e9af31ba332bde3bd4bd41172ead69274cb4263d5a6f2fa934a14dacefed4b1'], - eventAbi: 'event PieceTokenCreated (address token, address pieceToken, uint256 pieceTokenLength)', - onlyArgs: true, - fromBlock: 17107816, - }) - return logs.map(log => log.pieceToken) -} - -async function borrowed(api) { - const blacklistedTokens = await getPawnNFTTokens(api) - const items = await api.call({ abi: ABI.cTokenMetadataAll, target: Lending, params: [LendCToken], }) - items.forEach((v) => { - if (blacklistedTokens.includes(v.underlyingAssetAddress)) return - api.add(v.underlyingAssetAddress, v.totalBorrows) - }) -} - - -async function tvl(api) { - const blacklistedTokens = await getPawnNFTTokens(api) - const items = await api.call({ abi: ABI.cTokenMetadataAll, target: Lending, params: [LendCToken], }) - return sumTokens2({ api, tokensAndOwners: items.map(i => [i.underlyingAssetAddress, i.cToken]), blacklistedTokens }) -} - - -module.exports = mergeExports([{ - ethereum: { tvl, borrowed }, -}, nftTvl]) - -module.exports.hallmarks = [ - ['2023-06-16', 'Protocol was exploited'], -] diff --git a/projects/pawnfi-nft/index.js b/projects/pawnfi-nft/index.js deleted file mode 100644 index 5e7480ddd6e..00000000000 --- a/projects/pawnfi-nft/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -module.exports = { - ethereum: { - tvl: async function tvl(api) { - const logs = await getLogs({ - api, - target: '0x82cac2725345ea95a200187ae9a5506e48fe1c5d', - topics: ['0x0e9af31ba332bde3bd4bd41172ead69274cb4263d5a6f2fa934a14dacefed4b1'], - eventAbi: 'event PieceTokenCreated (address token, address pieceToken, uint256 pieceTokenLength)', - onlyArgs: true, - fromBlock: 17107816, - }) - return sumTokens2({ api, tokensAndOwners: logs.map(log=>[log.token, log.pieceToken])}) - }, - pool2: sumTokensExport({ owner: '0x0f41eAdEc8FA71787516CCC5CEAcBD6430848f9E', resolveUniV3: true}) - } -} diff --git a/projects/pawnfi/helper/abi.json b/projects/pawnfi/helper/abi.json deleted file mode 100644 index 00f8f43a4a8..00000000000 --- a/projects/pawnfi/helper/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "cTokenMetadataAll": "function cTokenMetadataAll(address[] cTokens) view returns (tuple(address cToken,uint exchangeRateCurrent,uint supplyRatePerBlock,uint borrowRatePerBlock,uint reserveFactorMantissa,uint totalBorrows,uint totalReserves,uint totalSupply,uint totalCash,bool isListed,uint collateralFactorMantissa,address underlyingAssetAddress,uint cTokenDecimals,uint underlyingDecimals,uint compSupplySpeed,uint compBorrowSpeed,uint borrowCap)[])", - "stakedTotal": "function stakedTotal(address _address) external view returns (uint256)" -} \ No newline at end of file diff --git a/projects/pawnfi/helper/config.js b/projects/pawnfi/helper/config.js deleted file mode 100644 index 88a353026f2..00000000000 --- a/projects/pawnfi/helper/config.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - Lending: "0x136491CFEae8655501c847F2987B9Bc923A94065", - LendCToken:[ - "0xE8Ca2212c1F4a108d8728cb065622c6387a9860e", - "0x37B614714e96227D81fFffBdbDc4489e46eAce8C", - "0x223D9e0A8db805B0d2Bb06ef5D41b79fb29B5BC7", - "0xF58C9ba6e836919da211858191E6CbC5da7D44FC", - "0xE9373Ca88004bbF192B05A6460aFD05A88D9e1bC", - "0x9C1c49B595D5c25F0Ccc465099E6D9d0a1E5aB37", - "0xB77441172E72d93dde9742DE23c0562d3090966F", - "0x3B2da9304bd1308Dc0d1b2F9c3C14F4CF016a955", - "0x0b7d8EdA67cE2555abe41d2dF2102D62becf38BD", - "0x5CD407de334525C710FA485a8E19D8E98adE39E8", - "0x6A55080D5bA7cFf935Fb6aC54f4af4486EE24B1C" - ], - ApeStakingPoolAddress:{ - BoundApe: '0x73625745eD66F0d4C68C91613086ECe1Fc5a0119', - BoundBAYC: '0x5f0a4a59c8b39cddbcf0c683a6374655b4f5d76e', - BoundMAYC: '0x7d0b6fb139408af77f1c5bfdc8bd9166f5901304', - BoundBAKC: '0x23012599f9ABBA61Cb1A62D3785af7E434F692C6', - APE: '0x4d224452801ACEd8B2F0aebE155379bb5D594381', - ApeCoinStaking: "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9" - } - -} \ No newline at end of file diff --git a/projects/pawnfi/index.js b/projects/pawnfi/index.js deleted file mode 100644 index c80ba6aab8d..00000000000 --- a/projects/pawnfi/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { get } = require('../helper/http.js') - -// INFO: dont delete abi from here is used in other modules -module.exports = { - timetravel: false, - methodology: "The Pawnfi API endpoint fetches on-chain data from Pawnfi NFT contracts, token balance for each lending liquidity pools, and any value generated within Pawnfi platform.", - // fetch: fetch, -}; \ No newline at end of file diff --git a/projects/paxe/index.js b/projects/paxe/index.js deleted file mode 100644 index eb070c98bc7..00000000000 --- a/projects/paxe/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking") - -const PAXE_TOKEN = "0xd2A3eec06719D5Ac66248003B5488E02165dd2fa" -const PAXE_FARMING_CONTRACT = '0xbA576f5ecbA5182a20f010089107dFb00502241f' -const RESTAKING_POOL = '0x269e1ceb128ccCD5684BbAFF9906D69eD1e9e9C8' - -module.exports = { - methodology: 'We count the TVL on the PAXE token in the farming contract and the restaking pool', - bsc: { - tvl: () => ({}), - staking: staking([RESTAKING_POOL, PAXE_FARMING_CONTRACT], PAXE_TOKEN) - } -} diff --git a/projects/paxo-finance/index.js b/projects/paxo-finance/index.js deleted file mode 100644 index c7a7964b2b0..00000000000 --- a/projects/paxo-finance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { compoundExports } = require('../helper/compound') -const { lendingMarket } = require('../helper/methodologies') -const { staking } = require("../helper/staking"); - -module.exports = { - polygon: compoundExports('0x1eDf64B621F17dc45c82a65E1312E8df988A94D3'), - xdc: compoundExports('0x301C76e7b60e9824E32991B8F29e1c4a03B4F65b'), - linea: compoundExports('0x301C76e7b60e9824E32991B8F29e1c4a03B4F65b'), - boba: compoundExports('0x301C76e7b60e9824E32991B8F29e1c4a03B4F65b'), - methodology: `${lendingMarket}. TVL is calculated by getting the market addresses from comptroller and calling the getCash() on-chain method to get the amount of tokens locked in each of these addresses.`, -} - -module.exports.polygon.staking = staking("0xC1704c99278c3e5A91AfB117301eA61B003Aa650", "0xfFA188493C15DfAf2C206c97D8633377847b6a52",) diff --git a/projects/paxos-gold/index.js b/projects/paxos-gold/index.js deleted file mode 100644 index 1b98b1a8e8f..00000000000 --- a/projects/paxos-gold/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const PAXG = '0x45804880de22913dafe09f4980848ece6ecbaf78' - -module.exports = { - methodology: "TVL corresponds to the total amount of PAXG minted", - ethereum: { - tvl: async (api) => { - const totalSupply = await api.call({target: PAXG, abi: 'erc20:totalSupply'}) - api.add(PAXG, totalSupply) - }, - } -} - -module.exports.hallmarks = [ - [1724371200, "Transfer fee was set to 0"], -] diff --git a/projects/paycashswap/index.js b/projects/paycashswap/index.js deleted file mode 100644 index 5dad41155d5..00000000000 --- a/projects/paycashswap/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const utils = require("../helper/utils"); - -// https://paycashswap.com -// https://api.paycashswap.com -async function eos(api) { - // Get total pool liquidity which represents the actual AMM pool TVL - const liquidityQuery = { - operationName: "TotalLiquidity", - variables: {}, - query: "query TotalLiquidity { totalLiquidityChart { value24h } }" - } - - const { data: { data: { totalLiquidityChart: { value24h } } } } = await utils.postURL("https://api.paycashswap.com/", liquidityQuery); - - // Use the pool liquidity value directly - const poolTvl = Number(value24h); - api.addUSDValue(poolTvl); -} - -module.exports = { - misrepresentedTokens: true, - methodology: `PayCash Swap TVL is achieved by making a call to its PayCash Swap API and using the totalLiquidityChart.value24h which represents the actual AMM pool liquidity.`, - eos: { - tvl: eos - }, -} diff --git a/projects/payprotocol/index.js b/projects/payprotocol/index.js deleted file mode 100644 index 6aed65d0066..00000000000 --- a/projects/payprotocol/index.js +++ /dev/null @@ -1,161 +0,0 @@ -const { sumTokensExport} = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json'); - -module.exports = { - timetravel: false, - misrepresentedTokens:false, - methodology:"The projects' idle funds stored in the smart contracts could directly contribute to TVL, as well as the funds recharged from projects or platforms like GameFi and DePin projects. And through the Defi Legos combination, Pay Protocol not only helps projects earn interest on short-term idle funds but also makes the merchants' idle funds workaround and channel back to the DeFi ecosystem through smart contracts, which could result in TVL&liquidity increasing as well.", - tron: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.tron.USDT, 'TC67QrPyb8yEygVfSCCdN5fjMQia4Eo9ow'], - [ADDRESSES.tron.USDT, 'TP7XCmmCCvrdbe3t64uQn76fyJiSue4yQs'], - [ADDRESSES.tron.USDT, 'TNjHXBUecHHRReNS4QJdpWmPSyML5XzRGd'], - [ADDRESSES.tron.USDT, 'TNoaijkQiGw2JNLawgfJVc9rPGxt1MpvZg'], - [ADDRESSES.tron.USDT, 'TQ4KaBUE3rTu2ELjHaAWbBw6rnDpjUwdM9'], - [ADDRESSES.tron.USDT, 'TQeXnhu1HEtugejqNvyHALb4v7t8nDhHMZ'], - [ADDRESSES.tron.USDT, 'TRARkxo7Ssg6gQKVA7gUb6c5ndC4CNDmkQ'], - [ADDRESSES.tron.USDT, 'TL8afmUyzELPHuXsTTvP8sqA1imR446NwL'], - [ADDRESSES.tron.USDT, 'TYdCVnczHLmHiG7CSuCz6HCbqvNwF58cZG'], - [ADDRESSES.tron.USDT, 'TEtx8H9HcsFmTm9xjvzsDsgEX3QcKcsd65'], - [ADDRESSES.tron.USDT, 'TSn6ymvVbYbPhBPeWXZ8E9GJHMmLidFspm'], - [ADDRESSES.tron.USDT, 'TFzfkNji9W5pWyLHk9azAKy7MmTw1tXX4m'], - [ADDRESSES.tron.USDT, 'TVuHRnm1wLb49gHKa1mMM3MM85QTiz1WZg'], - [ADDRESSES.tron.USDT, 'TQ5N8coGNNX7pmwRxtjCDRJ8CLcB8dZvPU'], - [ADDRESSES.tron.USDT, 'TVbzeAYs4LLg4rR6KjYSBvwmMBsVbHr6rM'], - [ADDRESSES.tron.USDT, 'TMmQBbCeVMRWkG4ytaRushFBspZ3gNg4Vf'], - [ADDRESSES.tron.USDT, 'TTabzsVfx1MEeYTYRg7o8kBpTfSbYC3WZo'], - [ADDRESSES.tron.USDT, 'TR7oQS4ZUaK9yvhrFnQzRdQZg9TXEkMPJp'], - [ADDRESSES.tron.USDT, 'TQRnqi2XXTGLgs2rjoLH17j7yvSd7e3pbX'], - [ADDRESSES.tron.USDT, 'TYah3r3XHMiXMHd2GvXbdvihrKUPaXVXXj'], - [ADDRESSES.tron.USDT, 'TPfqzq3jizFU3LJha3T5pYkuxBXvByk8iY'], - [ADDRESSES.tron.USDT, 'TNezZRU48X5QXMvivrj39ekGi7nDMUTJ7K'], - [ADDRESSES.tron.USDT, 'TWMdHaXdtR93xrnbCQpmVNw3EpuFSesMc2'], - [ADDRESSES.tron.USDT, 'TPUwkz4VSX6zxa4mkbeiBnaK16jHgYUUHW'], - [ADDRESSES.tron.USDT, 'THavPkJzAAiXcGqnPqR7f8rEXqUTToFcoR'], - [ADDRESSES.tron.USDT, 'TWbWf21woRAPf7pGt1zDsc5DN6VoLkFLCm'], - [ADDRESSES.tron.USDT, 'TKqYR56SGysvKBXz3pAKKLprrAVdnRtq1r'], - [ADDRESSES.tron.USDT, 'TCzHnXiJ7N6Ca4wgAQRCXruDvmEPEpY7Y9'], - [ADDRESSES.tron.USDT, 'TTtzG5SV3pfBmJkoxnirkR146jErKswQJ7'], - [ADDRESSES.tron.USDT, 'TLB2PfKFNL7a81a7vJrQ8MPNskhHqh9tGV'], - [ADDRESSES.tron.USDT, 'TN9sR6pux9rKT5CcXSFBHFTKzhGyG8QaiD'], - [ADDRESSES.tron.USDT, 'TMc9xwvXw4xKjxyfScBhU9AhDh9Yma9Xgb'], - [ADDRESSES.tron.USDT, 'TX4o8S1YAgk53WXhVB4MpihCj7zdnBMc76'], - [ADDRESSES.tron.USDT, 'TKpxvSjpVENGiYDN7FMrDFcPUVJ3qPB7ma'], - [ADDRESSES.tron.USDT, 'TWzB6miYL4opwnJwSqm4znezmt1Ecx7h1A'], - [ADDRESSES.tron.USDT, 'TRYi2kzYrF5kRZjizbMen6Jb61g3KAzjPE'], - [ADDRESSES.tron.USDT, 'TEYPo9j7YYwJQAtpo9umQY7PrQjMtzY29w'], - [ADDRESSES.tron.USDT, 'TGvKqEKnbXcz3pyyaziusQZrvRznaSxmCY'], - [ADDRESSES.tron.USDT, 'TFUWmK6DqmrfhkYW1kW4fWqtPrq6nniiUL'], - [ADDRESSES.tron.USDT, 'TRN3QsMfgsSkCtCTZ39M2Cuf3MSgbbQAya'], - [ADDRESSES.tron.USDT, 'TEBhVGCboGJD8VMp5KmfpmMWHhmQ9v3j5s'], - [ADDRESSES.tron.USDT, 'TUforAow94avchEJr3QgjNz37hc1sEUsKd'], - [ADDRESSES.tron.USDT, 'TWdzsWpGk3qq7GhkVgasweSc2NfwY29a3s'], - [ADDRESSES.tron.USDT, 'TFS7RHy71TxSjMdD3FrPXn2yskMJ5MNUgJ'], - [ADDRESSES.tron.USDT, 'TVNdx6gWVnkjeTgrNGGz4yXumqrRCRkDXB'], - [ADDRESSES.tron.USDT, 'TPcuKx4own8FfzUgLdHXNpzhG2LJwSXAzt'], - [ADDRESSES.tron.USDT, 'TVamg5u25ZJRsDJgRhRmDQ4RqsfGAdE18P'], - [ADDRESSES.tron.USDT, 'TG8Skf32SvxBPchwQeVbJrHmyWf8gSn3LM'], - [ADDRESSES.tron.USDT, 'TXRv3HrovA5RcSVZMuK35iASYPKUDUWdZE'], - [ADDRESSES.tron.USDT, 'TCgcJLJN2vB6Cf1mXeBtK2wsgBFaup178s'], - [ADDRESSES.tron.USDT, 'TDgpy8bp3dmDBBiKER9eHKpgTjdFKyqgD4'], - [ADDRESSES.tron.USDT, 'TRi1Mzonhf7hU8FnJjBK3iuAGCBNPxPXRF'], - [ADDRESSES.tron.USDT, 'TBnArXx6weRbunstMDGDkmLba1PCjebbJY'], - [ADDRESSES.tron.USDT, 'TAngWNh9FF5MNUohaYLaw8pruVTUdGfZDs'], - [ADDRESSES.tron.USDT, 'TP6iepa2pbZvJ8dKtSthxbryWWFK8J9SFq'], - [ADDRESSES.tron.USDT, 'TXcKuSGhsd7U67N8vSRLf4NWmv2bNhsiCS'], - [ADDRESSES.tron.USDT, 'TSWeBnDHQyn1FPNxyUYFCekhVB9oD7m4Bq'], - [ADDRESSES.tron.USDT, 'TVzBGm8bewyEMu4d9yjvW6DDRdH9rsc9eY'], - [ADDRESSES.tron.USDT, 'TN79K84AajmE5R2mQ1uBwYicZ2LwFqpk3K'], - [ADDRESSES.tron.USDT, 'TQCpg3wFuGHQeErwJVXPdBcHRjrzLvVUZu'], - [ADDRESSES.tron.USDT, 'TFWGwusZFUyHy9krrSXiYEXwMtG6N3XG6u'], - [ADDRESSES.tron.USDT, 'TFJrt44MN1aYrLZgrNepHMWpYp7e4abtAF'], - [ADDRESSES.tron.USDT, 'THSmeUGriLDt8zA4pXkmYqakSAxA9ZYpSE'], - [ADDRESSES.tron.USDT, 'TW2mN2B7FsXYreNHM5Fh2Em2kUJ99r6xpJ'], - [ADDRESSES.tron.USDT, 'TRp2Miz4PZU7dGLjviLJVB2dPLKAaLEcbu'], - [ADDRESSES.tron.USDT, 'TGMTV74nhs5EbwPQvzeHC7Yn7LcA8YxD5q'], - [ADDRESSES.tron.USDT, 'TTtmwNvacRnKUqiu6uh3nuKiEnxXgsdgkk'], - [ADDRESSES.tron.USDT, 'TD9jRoejAaAcAZnFMfW4SbfMoG2B5nrMWu'], - [ADDRESSES.tron.USDT, 'TBVBJMXmYzHgogcsRcorUnKkhUVr57gozw'], - [ADDRESSES.tron.USDT, 'TXUpDM2Le9QMtH8Z7ZJ5EqxwemVRsJyeDs'], - [ADDRESSES.tron.USDT, 'TWGjLLuEDo7oq7xUhNXJpo2UsbEViVS8U2'], - [ADDRESSES.tron.USDT, 'TTqZfL5JzJhzHFbdXzdX5xLTawhxtHLTEJ'], - [ADDRESSES.tron.USDT, 'TQTmnpbXB6ZJaGLzX7WsWN9t4QVW7cL4De'], - [ADDRESSES.tron.USDT, 'TMFu5nzzm3DpYAi7tkoSnLTDEg2FZGJwts'], - [ADDRESSES.tron.USDT, 'TVyzvtJN9aDDim1TCRZuJsUHeiVhpVQzJU'], - [ADDRESSES.tron.USDT, 'TVRkPpPbzpYmopWHmnA3NNwDtj7bkp5Myy'], - [ADDRESSES.tron.USDT, 'THY4TSdat6VsoebqwzZMC9qZKAPQ6dUgDZ'], - [ADDRESSES.tron.USDT, 'TNW5wahYHeh3CmsEMvBKoJQushEq5xSGX5'], - [ADDRESSES.tron.USDT, 'TTxMiFWRL9Emra3q5nkoVg8qJApA8wqfdo'], - [ADDRESSES.tron.USDT, 'TNVMJkjpEHskStYzmFnSGrKsNwkkAobiQD'], - [ADDRESSES.tron.USDT, 'TFnnzNqaeJAmZie6h2UZWnAKhjUu5yG1Tm'], - [ADDRESSES.tron.USDT, 'TUvt2X1PN2eVaKsstnv4HuAfWbK2ZsbXJH'], - [ADDRESSES.tron.USDT, 'THGo8G1Xa1aSC4EyiA3TGjaDii1EzpJPsK'], - [ADDRESSES.tron.USDT, 'TWX9fwGDWYrafBPSHXdpGwavJocjHehVWd'], - [ADDRESSES.tron.USDT, 'TJzDopudxAyieSahKtb818qi7RWq75huML'], - [ADDRESSES.tron.USDT, 'TLLMdn6suXtPCatbtZ5VWYsiQz7iiKAAUR'], - [ADDRESSES.tron.USDT, 'TNL2Wc9gBJs3rTgFDh7BuLACNknHNAuBL4'], - [ADDRESSES.tron.USDT, 'TYro4PhHEBpwKBoEQEBvDATaDGvedBUgQv'], - [ADDRESSES.tron.USDT, 'TNEPXuFLFfJrXo4jQNPZPoRjT675rGV7TY'], - [ADDRESSES.tron.USDT, 'TX5dS55eE9Y539Y5gsvMbnSzsVuzPjPQeT'], - [ADDRESSES.tron.USDT, 'TBYcjnpmBFGtAhb9PCiqmarBFyDXXmPShr'], - [ADDRESSES.tron.USDT, 'TNMdJpS5TesP6yGyJosHkACSxXGbLQwK8R'], - [ADDRESSES.tron.USDT, 'TQqvw6AENEM8DsALChSaQSRZnUqQW7o5NT'], - [ADDRESSES.tron.USDT, 'TLRUR2ne6UtnerihjfuE7SzZHGzeMeE7Gp'], - [ADDRESSES.tron.USDT, 'TCsonbbXzayKXu4ozoiryea1YGhiWJk4VS'], - [ADDRESSES.tron.USDT, 'TGdj6QLDTYT5GMHtNKh7zrUtmLyAT2boHR'], - [ADDRESSES.tron.USDT, 'TDzLYifEof7pKwHCJ2UcJVbKxcnUfoi45C'], - [ADDRESSES.tron.USDT, 'TVfiBHaL21suCyCvbwZTQweRgSchSitdit'], - [ADDRESSES.tron.USDT, 'TJ28y4XdSKg68wDEzzKBdJvQAoVrLoLGwZ'], - [ADDRESSES.tron.USDT, 'TEZSXmDgUdjnVZYTsHk1SoGGY1webVtDGu'] - ], - }), - }, - - bsc: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.bsc.USDT, '0x2FaF30c63Cc4138907062817090709a08b9fa6a6'], - [ADDRESSES.bsc.USDT, '0x8590d7D019d7EdcC39AE6a0CB3013E7162fabd1f'], - [ADDRESSES.bsc.USDT, '0x5B491a6aDf58dF70B3E3111a02eD2FBCdA9538a2'], - [ADDRESSES.bsc.USDT, '0xEb8C48D196e0cf6f6DD60D27cfcC8A9FeE928ad9'], - [ADDRESSES.bsc.USDT, '0x4076DD5c76134Ca2A4FBF88c0f06135151baC4b7'], - [ADDRESSES.bsc.USDT, '0x01bEf8B6bdaD0bcD2596A8e8c975EC97AE2a0567'], - [ADDRESSES.bsc.USDT, '0x03Cf00Ce13187Ea44BB42AfAB745f5602Ba3404A'], - [ADDRESSES.bsc.USDT, '0x1101f5EbC36811DD46d81D9a8B5EfB1871DEfC3b'], - [ADDRESSES.bsc.USDT, '0x2110bC3E096E58c2C13D9d534854A40D0c2319Ec'], - [ADDRESSES.bsc.USDT, '0x212871CCeCfdB158E7e13834532c3851B24a4a5A'], - [ADDRESSES.bsc.USDT, '0x25Ed364aC95e6880c496067bE61039Bda1C72eF1'], - [ADDRESSES.bsc.USDT, '0x260287b0bF60c73025bB1EA9Ef1E8a3076e8ecF1'], - [ADDRESSES.bsc.USDT, '0x2F5B11292661682e2F6174cacae0C43c561AB147'], - [ADDRESSES.bsc.USDT, '0x304b181BaF658C3E055eb7c52809486c2AFb068b'], - [ADDRESSES.bsc.USDT, '0x36eDd6A3D91f0BD449f30928F68BaAF545Cf40e2'], - [ADDRESSES.bsc.USDT, '0x3FAf8a95D141cF17fa62332FBA320670f6a3350c'], - [ADDRESSES.bsc.USDT, '0x4Ad27ee97B7783e1F48f2DCd8b5967807699b23a'], - [ADDRESSES.bsc.USDT, '0x51a58a257939c2e61B0a1Bdf122E34ebf8509045'], - [ADDRESSES.bsc.USDT, '0x56768A26CA5b4263Dcd4179AF3bef741C28DE220'], - [ADDRESSES.bsc.USDT, '0x610c648E062669B479eb52E214d912853dBB5D60'], - [ADDRESSES.bsc.USDT, '0x673202A40BD1041b95dE1b70c60b4fD71ba40F4E'], - [ADDRESSES.bsc.USDT, '0x74FF2f9a7056E959fcf71c31B79EeD7a69880d4C'], - [ADDRESSES.bsc.USDT, '0x80F3FDc534bE222C2e8389A7EecF4a8BbDff408c'], - [ADDRESSES.bsc.USDT, '0x81078a96AB0cA278AF73e52dDA38b78d5125FFbf'], - [ADDRESSES.bsc.USDT, '0x8651662c0b84bC762Dd84585a93c548c4CBb5FF2'], - [ADDRESSES.bsc.USDT, '0x9D04191C1c4bcc23bA47a67aF98B0936A0b4f2dF'], - [ADDRESSES.bsc.USDT, '0xAaa035F8e37F1699903bdC6fdc6285E3623874C2'], - [ADDRESSES.bsc.USDT, '0xa221c435ed913B0384BAe9Ba032D698A5D4E231E'], - [ADDRESSES.bsc.USDT, '0xAA7B9558E7Ff85e3969FfA7Dd7a2b7C878080da9'], - [ADDRESSES.bsc.USDT, '0xB0117a2F16686d1097f54D7dbAEBA848CeA8a294'], - [ADDRESSES.bsc.USDT, '0xb4EA77976771970C5DC0ca9ee53c859C08702Be8'], - [ADDRESSES.bsc.USDT, '0xb57771DbF3f6fA7c1489008Af14d2D99BBceba47'], - [ADDRESSES.bsc.USDT, '0xb75C52F56aBa26584a99d2E07E063805a2E9B23E'], - [ADDRESSES.bsc.USDT, '0xba200eD5d17d91c3aCb95f2ce745CA5463875f37'], - [ADDRESSES.bsc.USDT, '0xd52f7bD78034eB5C2bC708ee9Aab358fE8dd51C9'], - [ADDRESSES.bsc.USDT, '0xd671615eA3B6E75236dcE9Eb5aa484c18b589428'], - [ADDRESSES.bsc.USDT, '0xDC2b8FfDC5aC9B69f71B9cbaD97331868fD5fd8B'], - [ADDRESSES.bsc.USDT, '0xe356F9Cf888197c7198B92F8dc137369af8c6356'], - [ADDRESSES.bsc.USDT, '0xebCc127e687a19E41ec9ffe41F04d74A80aA4E7a'], - [ADDRESSES.bsc.USDT, '0xF412559D0Baa400517F8327d3659c64Fb35710d7'], - ], - }), - }, -}; \ No newline at end of file diff --git a/projects/pdollar/index.js b/projects/pdollar/index.js deleted file mode 100644 index a8e0b146136..00000000000 --- a/projects/pdollar/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking, } = require("../helper/staking"); -const { pool2 } = require('../helper/pool2') - -const spdoTokenAddress = "0x1D3918043d22de2D799a4d80f72Efd50Db90B5Af"; -const spdoRewardPoolAddress = "0xe8E0f521433028718baa338467151A3D43974292"; -const boardroomAddress = "0x82D868D99747fbF9FDff367Bb9f1c55112B05c7F"; - -const ftmLPs = [ - "0xd339d12C6096Cb8E16a2BcCB5ACacA362bE78EA7", // pdoDaiLpAddress - "0x5FBbd691e7d998fe6D5059B9BFa841223c018c31", // spdoDaiLpAddress -]; - -module.exports = { - methodology: "Pool2 deposits consist of PDO/DAI and sPDO/DAI LP tokens deposits while the staking TVL consists of the sPDO tokens locked within the Boardroom contract(0x82D868D99747fbF9FDff367Bb9f1c55112B05c7F).", - fantom: { - tvl: async () => ({}), - pool2: pool2(spdoRewardPoolAddress, ftmLPs), - staking: staking(boardroomAddress, spdoTokenAddress), - }, -}; \ No newline at end of file diff --git a/projects/peakdefi/index.js b/projects/peakdefi/index.js deleted file mode 100644 index 44d462768c2..00000000000 --- a/projects/peakdefi/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking'); - -const peakAddress = '0x630d98424eFe0Ea27fB1b3Ab7741907DFFEaAd78' - -const tokens = [ - ADDRESSES.ethereum.USDC, -] - -const funds = { - globalFund: '0x07cDB44fA1E7eCEb638c12A3451A3Dc9CE1400e4', - nftFund: '0xC120C7dB0804ae3AbEB1d5f9c9C70402347B4685', -} - -const stakingContracts = { - ethereum: '0x9733f49D577dA2b6705cA173382C0e3CdFff2A48', - bsc: '0xe9428B8acaA6b9d7C3314D093975c291Ec59A009', -} - -async function tvl(api) { - return sumTokens2({ api, owners: Object.values(funds), tokens }) -} -module.exports = { - start: '2020-12-08', // Dec-08-2020 05:25:52 PM +UTC - bsc: { - staking: staking(stakingContracts.bsc, peakAddress), - }, - ethereum: { - staking: staking(stakingContracts.ethereum, peakAddress), - tvl - }, -} \ No newline at end of file diff --git a/projects/peakmetis/index.js b/projects/peakmetis/index.js deleted file mode 100644 index 7c3c4390291..00000000000 --- a/projects/peakmetis/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const peak = "0x1F5550A0F5F659E07506088A7919A88DfF37218f"; -const pro = "0x259EF6776648500D7F1A8aBA3651E38b1121e65e"; -const summit = "0x9a03e23954578A63791581aed74cE1948871755e"; -const PShareRewardPool = "0x2115686293c2096383A58713086276FAa6E09628"; - - -const pool2LPs = [ - "0x603e67714A1b910DCCFDcae86dbeC9467de16f4c", //peak/metis - "0x9F881c2a9cF0ff6639A346b30AB6E663071Cb4C1" //pro/metis address -] - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(peak, pro, PShareRewardPool, summit, pool2LPs, "metis", undefined, false, pool2LPs[1],), -}; \ No newline at end of file diff --git a/projects/peaky-finance/index.js b/projects/peaky-finance/index.js deleted file mode 100644 index 52b0e9e0157..00000000000 --- a/projects/peaky-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { gmxExports } = require("../helper/gmx"); - -module.exports = { - bsc: { - tvl: sdk.util.sumChainTvls([ - gmxExports({ vault: '0xFD8c82a5Eb07147Ff49704b67c931EC7aFd9CCEA', }), - gmxExports({ vault: '0xb160c4070Ba9183dA27a66D53209Eb2191Df5Bd7', }), - ]) - } -} \ No newline at end of file diff --git a/projects/peapods-finance/index.js b/projects/peapods-finance/index.js deleted file mode 100644 index 7a39a77828c..00000000000 --- a/projects/peapods-finance/index.js +++ /dev/null @@ -1,123 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - ethereum: { indexManagerV3: "0x6eFFcF94993d6a6081204fc3C30473468Eb7666E", indexManagerV2: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", leverageManager: "0x4e6EF371C9CDDE8C3e6716AffEEBaD14C8c62D0B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875"}, - arbitrum: { indexManagerV3: "0x64511ccE99ab01A6dD136207450eA81263b14FD8", indexManagerV2: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", leverageManager: "0x3f2257B6f1fd055aEe020027740f266127E8E2B0", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875"}, - base: { indexManagerV3: "0x556059e80CB0073D4A9547081Cf0f80cBB94ec30", indexManagerV2: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", leverageManager: "0x31E35550b15B2DFd267Edfb39Dd9F3CD1c6ab82D", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875"}, - sonic: { indexManagerV3: "0x9e054F6C328d8E424a2354af726FDc88cB166060", leverageManager: "0x0C4B19994F466ac4B6bA8F9B220d83beC6118b61", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875"}, - berachain: { indexManagerV3: "0xC9260cE495B5EeC77219Bf4faCCf27EeFD932f01", leverageManager: "0x0ff519EEEc6f1C362A76F87fef3B4a3997bF5a69", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875"}, - mode: { indexManagerV2: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875"}, -}; - -const abi = { - allIndexesV2: "function allIndexes() view returns (tuple(address index, bool verified)[])", - allIndexesV3: "function allIndexes() view returns (tuple(address index, address creator, bool verified, bool selfLending, bool makePublic)[])", - getAllAssets: "function getAllAssets() view returns (tuple(address token, uint256 weighting, uint256 basePriceUSDX96, address c1, uint256 q1)[])", - lpStakingPool: "address:lpStakingPool", - stakingToken: "address:stakingToken", - pairedLPToken: "address:PAIRED_LP_TOKEN", - lendingPair: "function lendingPairs(address input) view returns (address)", - indexManager: "function allIndexes() view returns (tuple(address index, address creator, bool verified, bool selfLending, bool makePublic)[])", - asset: 'function asset() view returns (address)', - previewAddInterest: 'function previewAddInterest() view returns (uint256 interestEarned, uint256 feesAmount, uint256 feesShare, (uint32 lastBlock, uint32 feeToProtocolRate, uint64 lastTimestamp, uint64 ratePerSec, uint64 fullUtilizationRate) newCurrentRateInfo, (uint128 amount, uint128 shares) totalAsset, (uint128 amount, uint128 shares) totalBorrow)' -} - -async function discoverLendingPairs (api) { - const { indexManagerV3, leverageManager } = config[api.chain]; - if (!indexManagerV3) return []; - - const pods = await api.call({ target: indexManagerV3, abi: abi.indexManager, chain: api.chain }); - if (!pods.length) return []; - - return (await api.multiCall({ calls: pods.map(pod => ({ target: leverageManager, params: [pod.index] })), chain: api.chain, abi: abi.lendingPair })) - .filter(addr => addr !== ADDRESSES.null) -} - - -const getTvl = async (api, isStaking) => { - const { indexManagerV2, indexManagerV3, leverageManager, peasToken } = config[api.chain]; - const ownerTokens = []; - let indexesV3 = []; - let indexesV2 = []; - - // V2 logic - if (indexManagerV2) { - indexesV2 = ( await api.call({ abi: abi.allIndexesV2, target: indexManagerV2 })).map((i) => i.index); - - if (indexesV2.length) { - const [stakingPoolsV2, assetsResultV2] = await Promise.all([ - api.multiCall({ abi: abi.lpStakingPool, calls: indexesV2 }), - api.multiCall({ abi: abi.getAllAssets, calls: indexesV2 }), - ]); - - const stakingTokensV2 = await api.multiCall({ abi: abi.stakingToken, calls: stakingPoolsV2 }); - - ownerTokens.push( - ...assetsResultV2.map((assets, i) => [assets.map(a => a.token), indexesV2[i]]), - ...stakingTokensV2.map((stakingToken, i) => [[stakingToken], stakingPoolsV2[i]]), - ); - } - } - - // V3 (LVF) logic - if (indexManagerV3) { - indexesV3 = ( await api.call({ abi: abi.allIndexesV3, target: indexManagerV3 })).map((i) => i.index); - - if (indexesV3.length) { - const [stakingPoolsV3, pairedLpTokens, assetsResultV3, lendingPairArray] = await Promise.all([ - api.multiCall({ abi: abi.lpStakingPool, calls: indexesV3 }), - api.multiCall({ abi: abi.pairedLPToken, calls: indexesV3 }), - api.multiCall({ abi: abi.getAllAssets, calls: indexesV3 }), - api.multiCall({ abi: abi.lendingPair, calls: indexesV3.map((index) => ({ target: leverageManager, params: [index] })) }), - ]); - - const stakingTokensV3 = await api.multiCall({ abi: abi.stakingToken, calls: stakingPoolsV3 }); - - const lendingIdx = lendingPairArray.map((addr, i) => (addr !== ADDRESSES.null ? i : null)).filter(i => i !== null); - const stakingIdx = lendingPairArray.map((addr, i) => (addr === ADDRESSES.null ? i : null)).filter(i => i !== null); - const lendingPairs = lendingIdx.map(i => lendingPairArray[i]); - const vaultTokens = lendingPairs.length ? await api.multiCall({ abi: abi.asset, calls: lendingPairs.map(addr => ({ target: addr })) }) : []; - - ownerTokens.push( - ...assetsResultV3.map((assets, i) => [assets.map(a => a.token), indexesV3[i]]), - ...stakingIdx.map(i => [[pairedLpTokens[i]], stakingTokensV3[i]]), - ...lendingIdx.map((i, k) => [[vaultTokens[k]], lendingPairs[k]]), - ); - } - } - - await sumTokens2({ api, ownerTokens, blacklistedTokens: [...indexesV2,...indexesV3, '0xc31389794ffac23331e0d9f611b7953f90aa5fdc'], resolveLP: true }); - [...indexesV2, ...indexesV3].forEach(t => api.removeTokenBalance(t)); - Object.keys(api.getBalances()) - .filter(token => new RegExp(peasToken, 'i').test(token) !== isStaking) - .forEach(t => api.removeTokenBalance(t)); -}; - - -const borrowed = async (api) => { - if (config[api.chain].indexManagerV3) { - const lendingPairs = await discoverLendingPairs(api); - if (!lendingPairs || !lendingPairs.length) return; - - const [lendingPairAssets, previews] = await Promise.all([ - api.multiCall({ abi: abi.asset, calls: lendingPairs }), - api.multiCall({ abi: abi.previewAddInterest, calls: lendingPairs }), - ]); - - lendingPairAssets.map((asset, i) => [asset, previews[i].totalBorrow.amount]).forEach(([token, amount]) => api.add(token, amount)); - } -} - -module.exports = { - methodology: "Aggregates TVL in all Peapods Finance indexes created", - hallmarks: [[1710444951, "Arbitrum launch"],[1715151225, "Base launch"],[1715214483, "Mode launch"],[1738958400, "LVF launch"],[1742269792, "Sonic launch"],[1744292339, "Berachain launch"]], -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => getTvl(api, false), - staking: async (api) => getTvl(api, true), - borrowed: async (api) => borrowed(api), - } -}) diff --git a/projects/peardao/index.js b/projects/peardao/index.js deleted file mode 100644 index c3e34d0038b..00000000000 --- a/projects/peardao/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require('../helper/staking'); -const { pool2 } = require('../helper/pool2'); -const { sumTokensExport } = require('../helper/unwrapLPs') - -const PEX_TOKEN_CONTRACT = '0x6a0b66710567b6beb81A71F7e9466450a91a384b'; -const BUSD_TOKEN_CONTRACT = ADDRESSES.bsc.BUSD; -const USDT_TOKEN_CONTRACT = ADDRESSES.bsc.USDT; -const USDC_TOKEN_CONTRACT = ADDRESSES.bsc.USDC; -const WBNB_TOKEN_CONTRACT = ADDRESSES.bsc.WBNB; -const BTCB_TOKEN_CONTRACT = ADDRESSES.bsc.BTCB; -const USTC_TOKEN_CONTRACT = '0x23396cF899Ca06c4472205fC903bDB4de249D6fC'; - -const PEX_BNB_LP_CONTRACT = '0x5ca96E8bDe0Bc587DaC9e02422Fd205b1102DAa4'; -const PEX_BNB_LP_MASTER_CHEF = '0xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652'; -const PEX_STAKING_POOL_CONTRACT = '0x5F57dCa7D4f81D56C777E060D9dC81AF112d23eb'; -const DOTC_CONTRACT = '0x8996Da635aFabd360fbABB80e7Be5028324B8323'; // P2P trade escrow contract -const TREASURY_ADDRESS = '0x263e0910C8c1B77B80CB9947B0FAC3735a6FEf4C'; -const tokens = [ - BUSD_TOKEN_CONTRACT, USDC_TOKEN_CONTRACT, USDT_TOKEN_CONTRACT, WBNB_TOKEN_CONTRACT, USTC_TOKEN_CONTRACT, BTCB_TOKEN_CONTRACT, -] - -module.exports = { - methodology: 'Counts the value of LP tokens and PEX tokens in the staking contracts, assets locked in the P2P escrow contract, and assets in the treasury contract.', - bsc: { - tvl: sumTokensExport({ tokens, owner: DOTC_CONTRACT, }), - staking: stakings([TREASURY_ADDRESS, PEX_STAKING_POOL_CONTRACT], PEX_TOKEN_CONTRACT), - pool2: pool2(PEX_BNB_LP_MASTER_CHEF, PEX_BNB_LP_CONTRACT) - } -}; \ No newline at end of file diff --git a/projects/pearl-v1-5/index.js b/projects/pearl-v1-5/index.js deleted file mode 100644 index 081aea6645a..00000000000 --- a/projects/pearl-v1-5/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - 'real': { - tvl: getUniTVL({ - factory: '0xAed0A784f357BE9C3f8113BB227a7517a3444Efe', useDefaultCoreAssets: true, hasStablePools: true - }) - } -}; \ No newline at end of file diff --git a/projects/pearl-v2/index.js b/projects/pearl-v2/index.js deleted file mode 100644 index d1a1ed5c33d..00000000000 --- a/projects/pearl-v2/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const { staking } = require('../helper/staking') - -module.exports = uniV3Export({ - 'real': { factory: '0xeF0b0a33815146b599A8D4d3215B18447F2A8101', fromBlock: 33062, }, -}) - -module.exports.real.staking = staking('0x7f8F92C2446E044af45DCf15476Bc931Fd1d0020', '0xB08F026f8a096E6d92eb5BcbE102c273A7a2d51C') \ No newline at end of file diff --git a/projects/pearlfi/index.js b/projects/pearlfi/index.js deleted file mode 100644 index d75ee332e05..00000000000 --- a/projects/pearlfi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0xd541Bc203Cc2B85810d9b8E6a534eed1615528E2) address to count liquidity in pools as TVL.`, - polygon: { - tvl: getUniTVL({ factory: '0xEaF188cdd22fEEBCb345DCb529Aa18CA9FcB4FBd', useDefaultCoreAssets: true, hasStablePools: true }), - } -}; \ No newline at end of file diff --git a/projects/pearzap/index.js b/projects/pearzap/index.js deleted file mode 100644 index 54f420dec89..00000000000 --- a/projects/pearzap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -// --- BSC Addresses --- -const MasterChefContractBsc = "0xd6D8EBf01b79EE3fC1Ab76Dc3eA79bcB209205E4"; -const PEAR_Bsc = "0xdf7c18ed59ea738070e665ac3f5c258dcc2fbad8"; - -// --- Polygon Addresses --- -const MasterChefContractPolygon = "0xb12FeFC21b12dF492609942172412d4b75CbC709"; -const PEAR_Polygon = "0xc8bcb58caEf1bE972C0B638B1dD8B0748Fdc8A44"; - -// --- Fantom Addresses --- -const MasterChefContractFantom = "0x8c7c3c72205459e4190D9d3b80A51921f2678383"; -const PEAR_Fantom = "0x7c10108d4b7f4bd659ee57a53b30df928244b354"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(MasterChefContractBsc, "bsc", PEAR_Bsc, false), - ...masterChefExports(MasterChefContractPolygon, "polygon", PEAR_Polygon, false), - ...masterChefExports(MasterChefContractFantom, "fantom", PEAR_Fantom, false), - methodology: - "TVL includes all Farms and Pools seccion through MasterChef Contracts", -}; diff --git a/projects/peeldefi/index.js b/projects/peeldefi/index.js deleted file mode 100644 index bc94068f343..00000000000 --- a/projects/peeldefi/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - bsc: { - tvl: () => ({}), - staking: () => ({}), - pool2: () => ({}), - }, - deadFrom: "2023-12-01", -} \ No newline at end of file diff --git a/projects/peerme/index.js b/projects/peerme/index.js deleted file mode 100644 index 2e94c842b06..00000000000 --- a/projects/peerme/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { sumTokens } = require("../helper/chain/elrond"); -const { getConfig } = require("../helper/cache"); -const { getCoreAssets } = require("../helper/tokenMapping"); - -const API_BASE_URL = "https://api.peerme.io"; - -const PROTOCOL_ADDRESSES = [ - "erd1qqqqqqqqqqqqqpgqda336kqnhevc4p5myegjkjm8ew0r4x8927rsp6szng", // org - "erd1qqqqqqqqqqqqqpgqdj70la9z3x22exu7hmhws0a6z0waf92y27rsgudkq5", // earn module - "erd1qqqqqqqqqqqqqpgqakyy2eaxmv7njv2z6fn4p9makpty3lfpl3tshxnz97", // bounties -]; - -async function getDaoAddresses() { - return (await getConfig( - "peerme", - API_BASE_URL + "/integrations/defi-llama/dao-addresses" - )).filter(address => address !== null); -} - -async function tvl() { - const daoAddresses = await getDaoAddresses(); - return await sumTokens({ - owners: [...PROTOCOL_ADDRESSES, ...daoAddresses], - whitelistedTokens: getCoreAssets("elrond"), - }); -} - -async function vestingTvl() { - const daoAddresses = await getDaoAddresses(); - return await sumTokens({ - owners: [...PROTOCOL_ADDRESSES, ...daoAddresses], - blacklistedTokens: getCoreAssets("elrond"), - }); -} - -module.exports = { - timetravel: false, - elrond: { - tvl, - vesting: vestingTvl, - }, -}; diff --git a/projects/pegasusdao.js b/projects/pegasusdao.js deleted file mode 100644 index 89b3fb8a1aa..00000000000 --- a/projects/pegasusdao.js +++ /dev/null @@ -1,60 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { tombTvl } = require("./helper/tomb"); -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require('./helper/unwrapLPs'); - -const PES = "0x8efbaa6080412d7832025b03b9239d0be1e2aa3b"; -const SPES = "0xBBd4650EeA85f9DBd83d6Fb2a6E8B3d8f32FE1C5"; -const boardroom = "0x7614A4CEB3ACdfCd4841D7bD76c30e7a401E83cd"; -const rewardPool = "0xdd403db142a320261858840103b907c2486240c6"; -const lps = [ - "0x43713f13a350d104319126c13cd7402822a44f6b", - "0xadab84bf91c130af81d76be9d7f28b8c4f515367", -]; -const shareLps = "0x72c1f5fb7e5513a07e1ff663ad861554887a0a0a"; -const genesisPool = "0x64bfCBe4480B53E8234Ca258a96720F29fe6A6fB"; -const genesisTokens = [ - ADDRESSES.cronos.WCRO_1, - ADDRESSES.cronos.USDC, - "0x97749c9b61f878a880dfe312d2594ae07aed7656", - "0xb8df27c687c6af9afe845a2afad2d01e199f4878", - "0x43713f13a350d104319126c13cd7402822a44f6b" -]; - -const exportObject = tombTvl(PES, SPES, rewardPool, boardroom, lps, "cronos", a => `cronos:${a}`, false, shareLps) - -Object.keys(exportObject) - .filter(chain => typeof exportObject[chain] === 'object') - .forEach(chain => { - const obj = exportObject[chain] - Object.keys(obj).forEach(key => obj[key] = [obj[key]]) // now "{ bsc: { tvl } }"" becomes "{ bsc: {tvl: [ tvl ]}}" - }) - -function addToExports(chain, key, fn) { - if (!exportObject[chain]) exportObject[chain] = {} - if (!exportObject[chain][key]) exportObject[chain][key] = [] - exportObject[chain][key].push(fn) -} - -async function tvl(api) { - return sumTokens2({ api, owner: genesisPool, tokens: genesisTokens, resolveLP: true }) -} - -addToExports('cronos', 'tvl', tvl) - -Object.keys(exportObject) - .filter(chain => typeof exportObject[chain] === 'object') - .forEach(chain => { - const obj = exportObject[chain] - Object.keys(obj).forEach(key => { - if (obj[key].length > 1) - obj[key] = sdk.util.sumChainTvls(obj[key]) - else - obj[key] = obj[key][0] - }) - }) - -module.exports = { - misrepresentedTokens: true, - ...exportObject -}; // node test.js projects/pegasusdao.js \ No newline at end of file diff --git a/projects/pegasusfinance/index.js b/projects/pegasusfinance/index.js deleted file mode 100644 index 1f156bb38df..00000000000 --- a/projects/pegasusfinance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const LIQUIDITY_POOL_CONTRACT = "0x7398c321449d836cec83582a678ccb8650360a18"; -const WETH_OPTIMISM = ADDRESSES.tombchain.FTM; - -module.exports = { - methodology: "WETH supplied to liquidity pool + leftover weth in treasury", - optimism: { - tvl: staking(LIQUIDITY_POOL_CONTRACT, WETH_OPTIMISM), - }, -}; diff --git a/projects/pegasys-v3/index.js b/projects/pegasys-v3/index.js deleted file mode 100644 index e474864b7b9..00000000000 --- a/projects/pegasys-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - rollux: { factory: '0xeAa20BEA58979386A7d37BAeb4C1522892c74640', fromBlock: 87430, }, -}) diff --git a/projects/pegasys/index.js b/projects/pegasys/index.js deleted file mode 100644 index 3c5c517936e..00000000000 --- a/projects/pegasys/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x7Bbbb6abaD521dE677aBe089C85b29e3b2021496) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - syscoin: { - tvl: getUniTVL({ - factory: '0x7Bbbb6abaD521dE677aBe089C85b29e3b2021496', - useDefaultCoreAssets: true, - }) - }, -}; diff --git a/projects/pell/index.js b/projects/pell/index.js deleted file mode 100644 index 41eeab9727a..00000000000 --- a/projects/pell/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -const chains = ['ethereum', 'arbitrum', 'merlin', 'bouncebit', 'btr', 'bsc', 'base', 'bsquared', 'core', 'bevm', 'mantle', 'scroll', 'bob', 'ailayer', 'iotex', 'rsk', 'zeta', 'hemi', 'bouncebit', 'goat', 'plume_mainnet', 'hsk'] - -chains.forEach(chain => { - module.exports[chain] = { - tvl: async function (api) { - if (api.chain === 'bevm') api.chainId = 11501 - if (api.chain === 'hemi') api.chainId = 43111 - if (api.chain === 'goat') api.chainId = 2345 - if (api.chain === 'plume_mainnet') api.chainId = 98866 - if (api.chain === 'hsk') api.chainId = 177 - if (!api.chainId) throw new Error('chainId is required, missing in ' + api.chain) - const { result } = await getConfig(`pell/${api.chain}-v1`, `https://api.pell.network/v1/stakeList?chainId=${api.chainId}`) - const vaults = result.map(f => f.strategyAddress) - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: vaults }) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults], }) - } - } -}) diff --git a/projects/pembrock/index.js b/projects/pembrock/index.js deleted file mode 100644 index fce81c057e6..00000000000 --- a/projects/pembrock/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { BigNumber } = require('bignumber.js'); -const { call, addTokenBalances, sumSingleBalance } = require('../helper/chain/near'); - -const PEMBROCK_CONTRACT = "v1.pembrock.near"; -const REF_FINANCE_CONTRACT = "v2.ref-finance.near"; -const REF_BOOST_CONTRACT = "boostfarm.ref-labs.near"; - -async function addFarmBalances(farms, seeds, balances) { - return Promise.all(Object.values(farms).map(async farm => { - const [pool, nonStakedShares] = await Promise.all([ - call(REF_FINANCE_CONTRACT, "get_pool", {"pool_id": farm.ref_pool_id}), - call(REF_FINANCE_CONTRACT, "mft_balance_of", {token_id: `:${farm.ref_pool_id}`, account_id: PEMBROCK_CONTRACT}) - ]); - const seed = seeds[`${REF_FINANCE_CONTRACT}@${farm.ref_pool_id}`]; - - if (!seed) return; - const shares = BigNumber(nonStakedShares).plus(seed.free_amount).plus(seed.locked_amount); - - const firstTokenAmount = shares.multipliedBy(pool.amounts[0]).dividedBy(pool.shares_total_supply); - const secondTokenAmount = shares.multipliedBy(pool.amounts[1]).dividedBy(pool.shares_total_supply); - - sumSingleBalance(balances, pool.token_account_ids[0], firstTokenAmount); - sumSingleBalance(balances, pool.token_account_ids[1], secondTokenAmount); - })); -} - -async function tvl() { - const [tokens, farms, seeds] = await Promise.all([ - call(PEMBROCK_CONTRACT, "get_tokens", {account_id: PEMBROCK_CONTRACT}), - call(PEMBROCK_CONTRACT, "get_farms", {}), - call(REF_BOOST_CONTRACT, "list_farmer_seeds", {farmer_id: PEMBROCK_CONTRACT}) - ]); - - const balances = {}; - const tokenAddresses = Object.keys(tokens).filter(address => typeof address === 'string' && address.length > 0 && address.includes('.')); - await Promise.all([ - addTokenBalances(tokenAddresses, PEMBROCK_CONTRACT, balances), - addFarmBalances(farms, seeds, balances) - ]); - return balances; -} - -async function staking() { - const balances = {}; - sumSingleBalance(balances, ADDRESSES.near.PEMBROCK, await call('staking.v1.pembrock.near', "get_total_staked", {})) - return balances; -} - -module.exports = { - near: { tvl, staking }, - hallmarks: [ - [1666648800,"DCB withdrawn liquidity from Ref Finance's "] - ], -} diff --git a/projects/pencil-finance/index.js b/projects/pencil-finance/index.js deleted file mode 100644 index 8f1a4ed004c..00000000000 --- a/projects/pencil-finance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); - -const VAULT_CONTRACT = '0xca0Ab9eD8ae0720f955b129E0C7c9d8c1Aa6fb72'; // Pencil Finance Staking Vault -const WEDU_CONTRACT = ADDRESSES.occ.WEDU; - -async function tvl(api) { - const totalAssets = await api.call({ - abi: 'function totalAssets() view returns (uint256)', - target: VAULT_CONTRACT, - chain: 'occ', - }); - - api.add(WEDU_CONTRACT, totalAssets); -} - -module.exports = { - methodology: 'TVL is calculated based on totalAssets() (WEDU tokens) held by the Pencil Finance Staking Vault on EduChain (OCC chain).', - start: 1745906937, - occ: { - tvl, - }, -}; diff --git a/projects/pendle/abi.json b/projects/pendle/abi.json deleted file mode 100644 index 378b625aa74..00000000000 --- a/projects/pendle/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)", - "wMEMOToMEMO": "function wMEMOToMEMO(uint256 _amount) view returns (uint256)", - "xBTRFLYValue": "function xBTRFLYValue(uint256 _amount) view returns (uint256)", - "assetInfo": "function assetInfo() view returns (uint8 assetType, address assetAddress, uint8 assetDecimals)", - "exchangeRate": "uint256:exchangeRate" -} \ No newline at end of file diff --git a/projects/pendle/contracts.json b/projects/pendle/contracts.json deleted file mode 100644 index 3f7ce57ed3b..00000000000 --- a/projects/pendle/contracts.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "v1": { - "eth": { - "tokens": { - "aUSDC": "0xbcca60bb61934080951369a648fb03df4f96263c", - "cDAI": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", - "USDC": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "SUSHI": "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2", - "COMP": "0xc00e94Cb662C3520282E6f5717214004A7f26888", - "PENDLE": "0x808507121b80c02388fad14726482e061b8da827", - "SLP_ETHUSDC": "0x397FF1542f962076d0BFE58eA045FfA2d347ACa0", - "SLP_PENDLEETH": "0x37922c69b08babcceae735a31235c81f1d1e8e43", - "wxBTRFLY": "0x4b16d95ddf1ae4fe8227ed7b7e80cf13275e61c9", - "BTRFLY": "0xc0d4ceb216b3ba9c3701b291766fdcba977cec3a", - - "SLP_OT_aUSDC_21": "0x8B758d7fD0fC58FCA8caA5e53AF2c7Da5F5F8De1", - "SLP_OT_aUSDC_22": "0x0D8a21f2Ea15269B7470c347083ee1f85e6A723B", - "SLP_OT_cDAI_21": "0x2C80D72af9AB0bb9D98F607C817c6F512dd647e6", - "SLP_OT_cDAI_22": "0x4556C4488CC16D5e9552cC1a99a529c1392E4fe9", - "SLP_OT_ETHUSDC_22": "0x72972b21ce425cfd67935e07c68e84300ce3f40f", - "SLP_OT_PEP_22": "0xb124c4e18a282143d362a066736fd60d22393ef4", - "SLP_OT_wxBTRFLY_22": "0x4C5BE0fEa74c33455F81c85561146BdAF09633dA" - }, - "funded": { - "0x1ef8d200e0b4127c5e1183670eab37676fedf579": "PendleAaveUSDCDec22YieldTokenHolder", - "0x33d3071cfa7404a406edB5826A11620282021745": "PendleAaveUSDCDec21YieldTokenHolder", - "0x75db58793f3943d84716fcac1ac3258169e8d319": "PendleCompoundDAIDec21YieldTokenHolder", - "0xb0aa68d8A0D56ae7276AB9E0E017965a67320c60": "PendleCompoundDAIDec21YieldTokenHolder", - "0xa06634BE609153b77355BFD09F9d59345939C59b": "PendleSushiswapComplexYieldTokenHolder", - "0xbfd6b497dca3e5d1fa4bbd52996d400980c29eb7": "PendleSushiswapSimpleYieldTokenHolder", - "0x47Aa8D126cF5031cC68449f678Edb28D61C72724": "PendleRedactedYieldTokenHolder", - - "0x9e382E5f78B06631E4109b5d48151f2b3f326df0": "PendleAaveUSDCDec21Market", - "0x8315BcBC2c5C1Ef09B71731ab3827b0808A2D6bD": "PendleAaveUSDCDec22Market", - "0x944d1727d0b656f497e74044ff589871c330334f": "PendleCompoundDAIDec21Market", - "0xB26C86330FC7F97533051F2F8cD0a90C2E82b5EE": "PendleCompoundDAIDec22Market", - "0x79c05Da47dC20ff9376B2f7DbF8ae0c994C3A0D0": "PendleSLP-ETHUSDC/USDC22Market", - "0x72283a76A0ddbB63c713F911f8568440f0B77804": "PendleRedactedApr22Market", - - "0x3483194Ac09097463CB426D8c0fc31c1476212f9": "PendleLpHolder_AaveUSDCDec21", - "0x76A16d9325E9519Ef1819A4e7d16B168956f325F": "PendleLpHolder_AaveUSDCDec22", - "0x5444070C9252BC6162A78fcFf66CF8Dcc3e729B8": "PendleLpHolder_CompoundDAIDec21", - "0x2F16B22C839FA995375602562ba5dD15A22d349d": "PendleLpHolder_CompoundDAIDec22", - "0xb69DA28b6B5DdF0fd4Fee4823A3Ffd2243A13C92": "PendleLpHolder_SLP-ETHUSDC/USDC22", - - "0x07C87cfE096c417212eAB4152d365F0F7dC6FCe4": "OldSushiOTAaveUSDCDec21Staking", - "0xFb0e378b3eD6D7F8b73230644D945E28fd7F7b03": "OldSushiOTAaveUSDCDec22Staking", - "0x071dc669Be57C1b3053F746Db20cb3Bf54383aeA": "OldSushiOTCompoundDAIDec21Staking", - "0xa660c9aAa46b696Df01768E1D2d88CE2d5293778": "OldSushiOTCompoundDAIDec22Staking", - - "0xa26Da78fE6c8D4ba2f1779Fd36aEd994a8A50bee": "NewSushiOTAaveUSDCDec21Staking", - "0x94A7432B811E29128964fba993f159928744e7C7": "NewSushiOTAaveUSDCDec22Staking", - "0x31fC01529419Ee9623AFC5b65D7D72102D116e90": "NewSushiOTCompoundDAIDec21Staking", - "0xfc3468Da89cb5bDF893242ece0324b51EA6482c6": "NewSushiOTCompoundDAIDec22Staking", - - "0x529c513DDE7968E19E79e38Ff94D36e4C3c21Eb7": "SushiOTSLP-ETHUSDC/USDC22Staking" - }, - "staking": { - "0x07282F2CEEbD7a65451Fcd268b364300D9e6D7f5": "SingleStaking" - }, - "otTokens": { - "0x010a0288af52ed61e32674d82bbc7ddbfa9a1324": "OTAaveUSDCDec21", - "0x8fcb1783bF4b71A51F702aF0c266729C4592204a": "OTAaveUSDCDec22", - "0xe55e3b62005a2035d48ac0c41a5a9c799f04892c": "OTCompoundDAIDec21", - "0x3D4e7F52efaFb9E0C70179B688FC3965a75BCfEa": "OTCompoundDAIDec22", - "0x322D6c69048330247165231EB7848A5C80a48878": "OTSLP-ETHUSDC/USDC22Staking", - "0xbF682bd31a615123D28d611b38b0aE3d2b675C2C": "OTSLP-PENDLEETH/PENDLE22Staking", - "0x189564397643D9e6173A002f1BA98da7d40a0FA6": "OTwxBTRFLYApr22" - }, - "pool2": { - "0x685d32f394a5F03e78a1A0F6A91B4E2bf6F52cfE": "PendleSLP-PENDLEETH/PENDLE22Market", - "0xab30397316d06572968d068d16f1e611c46474e2": "PendleLpHolder_SLP-PENDLEETH/PENDLE22", - "0xbFD6b497dCa3e5D1fA4BbD52996d400980C29Eb7": "PendleSushiswapComplexYieldTokenHolder", - - "0x309d8Cf8f7C3340b50ff0ef457075A3c5792203f": "Old_SushiOTSLP-PENDLEETH/PENDLE22Staking", - "0x2c09fd74e80cE12bEbBC8f56FAB8633eA41C2bCc": "New_SushiOTSLP-PENDLEETH/PENDLE22Staking" - } - }, - "avax": { - "tokens": { - "JLP_PENDLEAVAX": "0x3acd2ff1c3450bc8a9765afd8d0dea8e40822c86", - "qiAVAX": "0xaf2c034c764d53005cc6cbc092518112cbd652bb", - "qiUSDC": "0xbeb5d47a3f720ec0a390d04b4d41ed7d9688bc7f", - "xJOE": "0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33", - "QI": "0x8729438eb15e2c8b576fcc6aecda6a148776c0f5", - "WAVAX": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "JOE": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", - "USDC": "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "PENDLE": "0xfb98b335551a418cd0737375a2ea0ded62ea213b", - "MIM": "0x130966628846BFd36ff31a822705796e8cb8C18D", - "wMEMO": "0x0da67235dd5787d67955420c84ca1cecd4e5bb3b", - - "JLP_OT_PAP": "0x82922e6fbe83547c5e2e0229815942a2108e4624", - "JLP_OT_qiUSDC": "0x82db765c214c1aab16672058a3c22b12f6a42cd0", - "JLP_OT_qiAVAX": "0x5f973e06a59d0bafe464faf36d5b3b06e075c543", - "JLP_OT_xJOE": "0xd1f377b881010cb97ab0890a5ef908c45bcf13f9", - "JLP_OT_wMEMO": "0x588DC0Dd7C8be073E9DA79307E023F1F756F06C6" - }, - "funded": { - "0x9c2082216E15b2Fb32EE0648052b483f29dB5Ad3": "PendleJLPxJOEYieldTokenHolder", - "0x5910B40343E51422AF27705d4783cbf408017d90": "PendleJLPqiAVAXYieldTokenHolder", - "0xFAb894A4df458237fE75Ac82Bb0682F8CD4A0155": "PendleJLPqiUSDCYieldTokenHolder", - "0xd836C78BEF9847AF68d951279C6b5df95Af5B5A8": "PendlewMEMOYieldTokenHolder", - - "0x7552f903e33db53a86167c1e74f0e082bd0740d5": "PendleqiUSDCMarket", - "0x80aae49b1142e2f135033829a1b647b1636c1506": "PendleqiAVAXMarket", - "0x3e2737eb1b513bcee93a2144204d22695b272215": "PendleqiUSDCMarket", - "0x11B9346EeFa301e278f246D857C0a6EdFbf97FB4": "PendlewMEMOMarket", - - "0xA94B02aBe193e372100f667526b2c45118a681a6": "PendleLpHolder_JLPxJOE", - "0x1a14F2964664B9d7e45DF70D09fe4007615E31C2": "PendleLpHolder_JLPqiAVAX", - "0x9e2CcB276AE94f58e430f248e494bc2D6aEd8620": "PendleLpHolder_JLPqiUSDC", - "0x7D2ac45124f35260C8E7fDB0231c28655281672A": "PendleLpHolder_wMEMO", - - "0xD0788Af7a613b81F437a51b96594A6387c7329b1": "OTJLP-xJOE/USDCStaking", - "0xfe60eEC35E3C4Aad1e69f10957Ad0A7D3CFc6CEA": "OTJLP-qiAVAX/USDCStaking", - "0x224D395e9e123Bc9C37BfF8bCd845562d5232713": "OTJLP-qiUSDC/USDCStaking", - "0x2aA0Bec34dEEB6987c118Ce353D14Eea6deF24Ce": "OTJLP-wMEMO/MIMStaking" - }, - "staking": {}, - "otTokens": { - "0xfffe5fC3E511cE11dF20684AEC435A3E2b7D8136": "OT-qiUSDCDec23", - "0xECC5748b1fF6b23f284EC81E8bf034409961d8Dc": "OT-qiAVAXDec23", - "0xABCED2A62FD308BD1B98085c13DF74B685140C0b": "OT-JLPDec23", - "0x7D1e8650aBD5f8363D63Dc7AB838ceC8c726Dd38": "OT-xJOEJun23", - "0xb7E446ff1a2eEEa8CD07331C7e06B0276d0B06b7": "OT-wMEMOFeb22" - }, - "pool2": { - "0xd5736ba0be93c99a10e2264e8e4ebd54633306f8": "PendleJLP_PENDLEAVAX/PENDLEMarket", - "0x80228b1C8799EfA30F99F4a6FDFd2B2652B86E30": "PendleLpHolder_JLP_PENDLEAVAX", - "0x64Ad5D9b082cFC8223Dc842E6Eb3A0B1b072881f": "PendleJLP_PENDLEAVAXYieldTokenHolder", - "0xb3c6772F341ad234fa41f8C4F981cf4489dfa6E9": "OTJLP-PENLEAVAX/PENDLEStaking" - } - } - }, - "v2": { - "vePENDLE": "0x4f30A9D41B80ecC5B94306AB4364951AE3170210", - "PENDLE": "0x808507121B80c02388fAd14726482e061B8da827" - } -} diff --git a/projects/pendle/index.js b/projects/pendle/index.js deleted file mode 100644 index d91e01c7149..00000000000 --- a/projects/pendle/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const v1 = require("./v1.js"); -const v2 = require("./v2.js"); -const { mergeExports } = require("../helper/utils"); - - -module.exports = mergeExports([v1, v2]) diff --git a/projects/pendle/v1.js b/projects/pendle/v1.js deleted file mode 100644 index ea0aa7f361f..00000000000 --- a/projects/pendle/v1.js +++ /dev/null @@ -1,106 +0,0 @@ -const abi = require("./abi.json"); -const contracts = require("./contracts"); -const { staking } = require("../helper/staking"); - -const ethTokens = contracts.v1.eth.tokens; -const ethFundedContracts = Object.keys(contracts.v1.eth.funded); -const ethStakingContracts = Object.keys(contracts.v1.eth.staking); -const ethOtTokens = Object.keys(contracts.v1.eth.otTokens); -const ethPool2Contracts = Object.keys(contracts.v1.eth.pool2); - -const avaxTokens = contracts.v1.avax.tokens; -const avaxFundedContracts = Object.keys(contracts.v1.avax.funded); -const avaxOtTokens = Object.keys(contracts.v1.avax.otTokens); -const avaxPool2Contracts = Object.keys(contracts.v1.avax.pool2); - -async function ethTvl(api) { - const masterChefContract = "0xc2edad668740f1aa35e4d8f227fb8e17dca888cd"; - - const masterChefDeposits = await api.call({ - target: masterChefContract, - abi: abi.userInfo, - params: [1, ethFundedContracts[4]], - }); - api.add(ethTokens.SLP_ETHUSDC, masterChefDeposits.amount); - await api.sumTokens({ - owners: ethFundedContracts, tokens: [ - ethTokens.USDC, - ethTokens.aUSDC, - ethTokens.cDAI, - ethTokens.SLP_ETHUSDC, - ethTokens.SLP_PENDLEETH, - ethTokens.SUSHI, - ethTokens.COMP, - ethTokens.wxBTRFLY, - ethTokens.SLP_OT_aUSDC_21, - ethTokens.SLP_OT_aUSDC_22, - ethTokens.SLP_OT_cDAI_21, - ethTokens.SLP_OT_cDAI_22, - ethTokens.SLP_OT_ETHUSDC_22, - ethTokens.SLP_OT_wxBTRFLY_22, - ] - }) - - ethOtTokens.push(ethTokens.PENDLE); - - ethOtTokens.map(i => api.removeTokenBalance(i)) - return api.getBalances() -} - -async function avaxTvl(api) { - const masterChefContract = "0xd6a4F121CA35509aF06A0Be99093d08462f53052"; - - const xJOEBalance = (await api.call({ - target: masterChefContract, - abi: abi.userInfo, - params: [24, avaxFundedContracts[0]], - })).amount - api.add(avaxTokens.xJOE, xJOEBalance); - await api.sumTokens({ - owners: avaxFundedContracts, tokens: [ - avaxTokens.USDC, - avaxTokens.qiAVAX, - avaxTokens.qiUSDC, - avaxTokens.xJOE, - avaxTokens.JLP_PENDLEAVAX, - avaxTokens.WAVAX, - avaxTokens.JOE, - avaxTokens.QI, - avaxTokens.MIM, - avaxTokens.wMEMO, - avaxTokens.JLP_OT_PAP, - avaxTokens.JLP_OT_qiUSDC, - avaxTokens.JLP_OT_qiAVAX, - avaxTokens.JLP_OT_xJOE, - avaxTokens.JLP_OT_wMEMO, - ] - }) - - avaxOtTokens.map(i => api.removeTokenBalance(i)) - return api.getBalances() -} - -async function avaxPool2(api) { - await api.sumTokens({ - owners: avaxPool2Contracts, tokens: [ - avaxTokens.JLP_PENDLEAVAX, - avaxTokens.PENDLE, - avaxTokens.JOE, - ] - }) - return api.getBalances() -} - -module.exports = { - ethereum: { - pool2: staking(ethPool2Contracts, [ethTokens.SLP_PENDLEETH, ethTokens.PENDLE, ethTokens.SUSHI,]), - tvl: ethTvl, - staking: staking(ethStakingContracts, [ethTokens.PENDLE]) - }, - avax: { - pool2: avaxPool2, - tvl: avaxTvl - }, - methodology: - "V1 TVL counts the collateral backing the yield tokens and USDC in the pendle markets, plus staked OT liquidity, and SLP/JLP staked in masterchef. Staking TVL is just staked PENDLE on 0x07282F2CEEbD7a65451Fcd268b364300D9e6D7f5. Pool2 refers to the Pe,P pool on mainnet, and Pa,P pool on avax." -}; diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js deleted file mode 100644 index e53aab0dc3a..00000000000 --- a/projects/pendle/v2.js +++ /dev/null @@ -1,301 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const contracts = require("./contracts"); -const { - staking -} = require("../helper/staking"); -const { - getLogs -} = require("../helper/cache/getLogs"); -const bridgedAssets = [ADDRESSES.ethereum.STETH, ADDRESSES.ethereum.EETH]; -const { - getConfig -} = require('../helper/cache'); - -// const scaledFactory = 0x992ec6a490a4b7f256bd59e63746951d98b29be9; - -// can get deployments from https://github.com/pendle-finance/pendle-core-v2-public/blob/main/deployments -const config = { - ethereum: { - factory: "0x27b1dacd74688af24a64bd3c9c1b143118740784", - fromBlock: 16032059, - factories: [{ - factory: "0x1a6fcc85557bc4fb7b534ed835a03ef056552d52", - fromBlock: 18669498 - }, // v3 - { - factory: "0x3d75bd20c983edb5fd218a1b7e0024f1056c7a2f", - fromBlock: 20323253 - }, // v4 - { - factory: "0x6fcf753f2c67b83f7b09746bbc4fa0047b35d050", - fromBlock: 20512280 - }, // v5 - ], - }, - arbitrum: { - factory: "0xf5a7de2d276dbda3eef1b62a9e718eff4d29ddc8", - fromBlock: 62979673, - factories: [{ - factory: "0x2fcb47b58350cd377f94d3821e7373df60bd9ced", - fromBlock: 154873897 - }, // v3 - { - factory: "0xd9f5e9589016da862d2abce980a5a5b99a94f3e8", - fromBlock: 233004891 - }, // v4 - { - factory: "0xd29e76c6f15ada0150d10a1d3f45accd2098283b", - fromBlock: 242035998 - }, // v5 - ], - }, - bsc: { - factory: "0x2bea6bfd8fbff45aa2a893eb3b6d85d10efcc70e", - fromBlock: 34060741, - factories: [{ - factory: "0xc40febf5a33b8c92b187d9be0fd3fe0ac2e4b07c", - fromBlock: 33884419 - }, // v3 - { - factory: "0x7d20e644d2a9e149e5be9be9ad2ab243a7835d37", - fromBlock: 40539593 - }, // v4 - { - factory: "0x7c7f73f7a320364dbb3c9aaa9bccd402040ee0f9", - fromBlock: 41294178 - }, // v5 - ], - pts: [ - "0x5ec2ae0afdec891e7702344dc2a31c636b3627eb", - "0x70c1138b54ba212776d3a9d29b6160c54c31cd5d", - "0x04eb6b56ff53f457c8e857ca8d4fbc8d9a531c0c", - "0x541b5eeac7d4434c8f87e2d32019d67611179606", - "0x5d1735b8e33bae069708cea245066de1a12cd38d" - ], - }, - optimism: { - factory: "0x17f100fb4be2707675c6439468d38249dd993d58", - fromBlock: 108061448, - factories: [{ - factory: "0x4a2b38b9cbd83c86f261a4d64c243795d4d44abc", - fromBlock: 112783590 - }, // v3 - { - factory: "0x73be47237f12f36203823bac9a4d80dc798b7015", - fromBlock: 122792017 - }, // v4 - { - factory: "0x02adf72d5d06a9c92136562eb237c07696833a84", - fromBlock: 123998311 - }, // v5 - ], - }, - mantle: { - factories: [{ - factory: "0xd228ec1f7d4313fe321fab511a872475d07f5ba6", - fromBlock: 61484384 - }, // v3 - { - factory: "0xca274a44a52241c1a8efb9f84bf492d8363929fc", - fromBlock: 66526601 - }, // v4 - { - factory: "0xcb02435716b0143d4ac1bdf370302d619e714126", - fromBlock: 67661738 - }, // v5 - ], - }, - base: { - factories: [{ - factory: "0x59968008a703dc13e6beaeced644bdce4ee45d13", - fromBlock: 22350352 - }, // v3 - ], - }, - sonic: { - factories: [{ - factory: "0xfee31a6ec6ebefa0b5a594bf5b1139e3c6faa0fb", - fromBlock: 7830430 - }, // v3 - ], - }, - berachain: { - factories: [{ - factory: "0x8A09574b0401A856d89d1b583eE22E8cb0C5530B", - fromBlock: 806126 - }, // v3 - ], - pts: [ - '0x2719e657ec3b3cbe521a18e640ca55799836376f', - '0xdc9b87e5efd6ca2beaa33dde9c544e1e98345de4' - ] - }, - hyperliquid: { - factories: [{ - factory: "0x44A2DdF5339FfdE8c23AF4099a64Def59b11b128", - fromBlock: 9665302 - }, // v5 - ], - }, - plasma: { - factories: [{ - factory: "0x28dE02Ac3c3F5ef427e55c321F73fDc7F192e8E4", - fromBlock: 1887344 - }], // v5 - } -}; - - -Object.keys(config).forEach((chain) => { - const { - factory, - fromBlock, - pts, - factories, - } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const logs = factory ? - await getLogs({ - api, - target: factory, - topics: [ - "0x166ae5f55615b65bbd9a2496e98d4e4d78ca15bd6127c0fe2dc27b76f6c03143", - ], - eventAbi: "event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor)", - onlyArgs: true, - fromBlock, - }) : []; - for (let { - factory, - fromBlock - } - of factories) { - logs.push( - ...(await getLogs({ - api, - target: factory, - eventAbi: "event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor, uint256 lnFeeRateRoot)", - onlyArgs: true, - fromBlock, - })) - ); - } - - const pt = logs.map((i) => i.PT); - if (pts) pt.push(...pts); - let sy = [ - ...new Set( - ( - await api.multiCall({ - abi: "address:SY", - calls: pt, - }) - ).map((s) => s.toLowerCase()) - ), - ]; - - sy = await filterWhitelistedSY(api, sy); - const [yieldTokens, supply] = await Promise.all([ - api.multiCall({ - abi: "function yieldToken() view returns (address)", - calls: sy, - }), - api.multiCall({ - abi: "erc20:totalSupply", - calls: sy - }), - ]); - - const unscaledInfo = await getUnscaledInfo(api, yieldTokens); - const yieldTokenBals = await api.multiCall({ - abi: "function balanceOf(address) view returns (uint256)", - calls: yieldTokens.map((t, i) => ({ - target: t, - params: sy[i], - })), - }) - - yieldTokens.forEach((yieldToken, i) => { - const totalSupply = supply[i]; - if (yieldTokenBals[i] === "0" && totalSupply !== "0") { - api.add( - yieldToken.toLowerCase(), - totalSupply - ); - } else { - if (unscaledInfo[yieldToken.toLowerCase()]) { - const { - rawAsset, - rawDecimals - } = unscaledInfo[yieldToken.toLowerCase()]; - yieldTokenBals[i] = (yieldTokenBals[i] * (10 ** rawDecimals) / (10 ** 18)); - yieldToken = rawAsset; - } - api.add(yieldToken.toLowerCase(), yieldTokenBals[i]) - } - }); - - let balances = api.getBalances(); - - for (let bridgingToken of bridgedAssets) { - const bridged = `${chain}:${bridgingToken}`; - if (bridged in balances) { - balances[bridgingToken] = balances[bridged]; - delete balances[bridged]; - } - } - return balances; - }, - }; -}); - -async function getUnscaledInfo(api, yieldTokens) { - const names = await api.multiCall({ - abi: "function name() view returns (string)", - calls: yieldTokens, - }); - - const scaledPositions = names.reduce((acc, name, i) => { - if (name.includes("scaled")) { - acc.push(yieldTokens[i]); - } - return acc; - }, []); - - const scaledYieldTokens = scaledPositions.map((p) => p.toLowerCase()); - - const [rawAssets, rawDecimals] = await Promise.all([api.multiCall({ - abi: "function rawToken() external view returns (address)", - calls: scaledYieldTokens - }), api.multiCall({ - abi: "function rawDecimals() external view returns (uint8)", - calls: scaledYieldTokens - })]); - - const info = {} - for (let i = 0; i < scaledYieldTokens.length; i++) { - const yieldToken = scaledYieldTokens[i]; - info[yieldToken] = { - rawAsset: rawAssets[i], - rawDecimals: rawDecimals[i], - }; - } - return info; - -} - -// Prevent SY with malicious accounting from being included in TVL -async function filterWhitelistedSY(api, sys) { - const { - results - } = await getConfig('pendle/v2-' + api.chain, - `https://api-v2.pendle.finance/core/v1/${api.chainId}/sys/whitelisted`); - const whitelistedSys = new Set(results.map((d) => d.address.toLowerCase())); - return sys.filter((s) => whitelistedSys.has(s)); -} - -module.exports.ethereum.staking = staking( - contracts.v2.vePENDLE, - contracts.v2.PENDLE -); \ No newline at end of file diff --git a/projects/penguin-finance/index.js b/projects/penguin-finance/index.js deleted file mode 100644 index 1333fe17ce7..00000000000 --- a/projects/penguin-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { exportDexTVL } = require('../helper/solana') - -module.exports = { - timetravel: false, - methodology: - "TVL includes the total token value inside the protocol's liquidity pools.", - solana: { - tvl: exportDexTVL('PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP'), - }, -} diff --git a/projects/penguin/abi.json b/projects/penguin/abi.json deleted file mode 100644 index 8b79c3ccf3e..00000000000 --- a/projects/penguin/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address poolToken, address rewarder, address strategy, uint256 allocPoint, uint256 lastRewardTime, uint256 accPEFIPerShare, uint16 withdrawFeeBP, uint256 totalShares, uint256 lpPerShare)" -} \ No newline at end of file diff --git a/projects/penguin/index.js b/projects/penguin/index.js deleted file mode 100644 index 3c7cdf83842..00000000000 --- a/projects/penguin/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { unwrapLPsAuto } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking'); -const abi = require('./abi.json') -const abiGeneral = require('../helper/abis/masterchef.json'); -const { default: BigNumber } = require('bignumber.js'); - -const nest = '0xD79A36056c271B988C5F1953e664E61416A9820F' -const pefiToken = '0xe896CDeaAC9615145c0cA09C8Cd5C25bced6384c' -const nestv2 = '0xE9476e16FE488B90ada9Ab5C7c2ADa81014Ba9Ee' - -const masterChef = "0x256040dc7b3CECF73a759634fc68aA60EA0D68CB" - -const ACC_PEFI_PRECISION = 1e18; - -async function getTokensInMasterChef(time, ethBlock, chainBlocks) { - const chain = "avax" - const block = chainBlocks[chain] - const transformAddress = addr => `avax:${addr}` - const ignoreAddresses = [pefiToken].map(i => i.toLowerCase()) - - const balances = {} - const poolLength = ( - await sdk.api.abi.call({ - abi: abiGeneral.poolLength, - target: masterChef, - block, chain, - }) - ).output; - - const poolInfo = ( - await sdk.api.abi.multiCall({ - block, - calls: Array.from(Array(Number(poolLength)).keys()).map(i => ({ - target: masterChef, - params: i, - })), - abi: abi.poolInfo, - chain, - }) - ).output; - - poolInfo.forEach(({ output: pool }) => { - const token = pool[0].toLowerCase() - if (ignoreAddresses.some(addr => addr === token)) - return; - const balance = BigNumber(pool.totalShares).times(pool.lpPerShare).div(ACC_PEFI_PRECISION).toFixed(0) - sdk.util.sumSingleBalance(balances, transformAddress(token), balance) - }) - - await unwrapLPsAuto({ balances, block, chain, transformAddress, }) - return balances -} - -module.exports = { - avax:{ - staking: sdk.util.sumChainTvls([nest, nestv2].map(chef => staking(chef, pefiToken))), - tvl: getTokensInMasterChef, - } -} diff --git a/projects/penpad/index.js b/projects/penpad/index.js deleted file mode 100644 index e18a9f71f5b..00000000000 --- a/projects/penpad/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unknownTokens'); - -module.exports = { - methodology: 'Counts liquidty on the staking', - scroll: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.null, '0x8F53fA7928305Fd4f78c12BA9d9DE6B2420A2188'], - [ADDRESSES.scroll.WETH, '0x88844c8f2b895792532AaE2a0F877208248F3585'], - [ADDRESSES.scroll.USDT, '0xC72a7a21e3E12594c75Bc6418224E812e16a027E'], - [ADDRESSES.scroll.USDC, '0xDc1FCFe40A5Cf9745cef0B75428eE28E81D7cC56'], - [ADDRESSES.scroll.STONE, '0x20DE0435e5674Ef15E78adA570159984524B9E8F'], - [ - '0xc4d46E8402F476F269c379677C99F18E22Ea030e', - '0x0C530882C0900b13FC6E8312B52c26e7a5b8e505', - ], // pufETH - [ - '0xa25b25548B4C98B0c7d3d27dcA5D5ca743d68b7F', - '0x27D2B6cEcd759D289B0227966cC6Fe69Cc2b0424', - ], // wrsETH - [ - '0xf610A9dfB7C89644979b4A0f27063E9e7d7Cda32', - '0x96cB437706111548c3D2e1Dc21E5Ab69E5dA057a', - ], // wstETH - [ - '0xcA0bFd5f735924e34Cc567146989e467fFbbCe1a', - '0x25D710AC957A54bdD6578b5DC8187a355c805edb', - ], // weETH (Scroll Bridged) - [ - ADDRESSES.scroll.WBTC, - '0x1C04CedF3Aac5fE35A7811689Ac6Da25b01BDc81', - ], // WBTC - [ - '0x01f0a31698c4d065659b9bdc21b3610292a1c506', - '0x016d036ec56eed17b5f9dfa212e27f8e260cc7d0', - ], // weETH (Stargate Bridged) - [ - '0x3ba89d490ab1c0c9cc2313385b30710e838370a4', - '0xde12ec22c5c4eeeeaf8afdc4ec735d75cf9d15a5', - ], // SolvBTC.b - ], - }), - }, -}; diff --git a/projects/penpie/config.js b/projects/penpie/config.js deleted file mode 100644 index a22cb54b631..00000000000 --- a/projects/penpie/config.js +++ /dev/null @@ -1,74 +0,0 @@ -module.exports = { - ethereum: { - masterPenpie: "0x16296859C15289731521F199F0a5f762dF6347d0", - vePENDLE: "0x4f30A9D41B80ecC5B94306AB4364951AE3170210", - mPENDLE: "0x83e817E1574e2201a005EC0f7e700ED5606F555E", - PENDLE: "0x808507121b80c02388fad14726482e061b8da827", - pendleStaking: "0x6E799758CEE75DAe3d84e09D40dc416eCf713652", - vlPNP: "0x4405C0b330Db66dFFc40c8bcC616E447505AF0F8", - PNP: "0x7DEdBce5a2E31E4c75f87FeA60bF796C17718715", - }, - arbitrum: { - masterPenpie: "0x0776C06907CE6Ff3d9Dbf84bA9B3422d7225942D", - vePENDLE: "0x3209E9412cca80B18338f2a56ADA59c484c39644", - mPENDLE: "0xB688BA096b7Bb75d7841e47163Cd12D18B36A5bF", - PENDLE: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", - pendleStaking: "0x6DB96BBEB081d2a85E0954C252f2c1dC108b3f81", - vlPNP: "0xc61d3c70cfc9dedaa090fdd0760eb9291253feff", - PNP: "0x2Ac2B254Bc18cD4999f64773a966E4f4869c34Ee", - }, - bsc: { - masterPenpie: "0xb35b3d118c0394e750b4b59d2a2f9307393cd5db", - vePENDLE: "0x8A09574b0401A856d89d1b583eE22E8cb0C5530B", - mPENDLE: "0x0465aad9da170798433f4ab7fa7ec8b9b9bf0bb1", - PENDLE: "0xb3Ed0A426155B79B898849803E3B36552f7ED507", - pendleStaking: "0x782d9d67feaa4d1cdf8222d9053c8cba1c3b7982", - vlPNP: "0x9246583Cb1bBFE52003bbDE0D9b82DB50024c6B1", - PNP: "0x5012c90F14d190607662CA8344120812Aaa2639D", - }, - optimism: { - masterPenpie: "0x3CbFC97f87f534b42bb58276B7b5dCaD29E57EAc", - vePENDLE: "0xd5C47D2383Fddc19596489280C0A33AC42b2bB18", - mPENDLE: "0xa3B615667CBd33cfc69843Bf11Fbb2A1D926BD46", - PENDLE: "0xbc7b1ff1c6989f006a1185318ed4e7b5796e66e1", - pendleStaking: "0x509FD25EE2AC7833a017f17Ee8A6Fb4aAf947876", - vlPNP: "0x0Af3EC6F9592C193196bEf220BC0Ce4D9311527D", - PNP: "0xC4a65A93dD6CD9717551ebE827E8baEe025d1d7E", - }, - base: { - masterPenpie: "0xC295087393C3ffc8AA46A8f6489Ac93cE2dC6461", - vePENDLE: "0x051dcd6a80f11fE68F77Fb0EBdE03853FA96B1fD", - mPENDLE: "", - PENDLE: "0xA99F6e6785Da0F5d6fB42495Fe424BCE029Eeb3E", - pendleStaking: "0x7A89614B596720D4D0f51A69D6C1d55dB97E9aAB", - vlPNP: "", - PNP: "", - }, - sonic: { - masterPenpie: "0x664cc2BcAe1E057EB1Ec379598c5B743Ad9Db6e7", - vePENDLE: "0xE017CCC08505Ac8fbb5a364680e459d9fBaEE74d", - mPENDLE: "", - PENDLE: "0xf1eF7d2D4C0c881cd634481e0586ed5d2871A74B", - pendleStaking: "0xF9619e8B01Acc23FAc7Ee0AEb1258433b85814ec", - vlPNP: "", - PNP: "", - }, - berachain: { - masterPenpie: "0x367e7A694B9BE5339Cd861F7ee200cb829CDef96", - vePENDLE: "0x6875e4A945E498FE1B90BbB13CFbAF0b68658C9C", - mPENDLE: "", - PENDLE: "0xFf9c599D51C407A45D631c6e89cB047Efb88AeF6", - pendleStaking: "0xC4a65A93dD6CD9717551ebE827E8baEe025d1d7E", - vlPNP: "", - PNP: "", - }, - hyperliquid: { - masterPenpie: "0xb664342D02A71cc16e7f88dc5711fF6cC28512E7", - vePENDLE: "0x1fBaCedf510dAA79dfD9B41227A7ba192d5D548D", - mPENDLE: "", - PENDLE: "0xD6Eb81136884713E843936843E286FD2a85A205A", - pendleStaking: "0xDAe38aE946F95206d9b687d7d53b2856379A21c0", - vlPNP: "", - PNP: "", - } -}; diff --git a/projects/penpie/index.js b/projects/penpie/index.js deleted file mode 100644 index 6c6d6534deb..00000000000 --- a/projects/penpie/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const MasterMagpieAbi = require("../magpiexyz/abis/masterMagpie.json"); -const config = require("./config"); -const { staking } = require('../helper/staking') - -async function tvl(api) { - const { masterPenpie, vlPNP, pendleStaking, mPENDLE, } = config[api.chain]; - - const poolTokens = await api.fetchList({ - lengthAbi: MasterMagpieAbi.poolLength, - itemAbi: MasterMagpieAbi.registeredToken, - target: masterPenpie, - }); - const blacklistedTokens = [] - if (vlPNP) blacklistedTokens.push(vlPNP) - if (mPENDLE && masterPenpie) await api.sumTokens({ tokens: [mPENDLE], owner: masterPenpie }) - return api.sumTokens({ tokens: poolTokens, owner: pendleStaking, blacklistedTokens }) -} - -Object.keys(config).forEach((chain) => { - const { PNP, vlPNP, } = config[chain]; - - module.exports[chain] = { - tvl, - }; - if (PNP && vlPNP) module.exports[chain].staking = staking(vlPNP, PNP) -}); - -module.exports.doublecounted = true diff --git a/projects/penrose/abi.js b/projects/penrose/abi.js deleted file mode 100644 index 60c3af4ae87..00000000000 --- a/projects/penrose/abi.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - penPoolsData: "function penPoolsData() view returns (tuple(address id, address stakingAddress, uint256 stakedTotalSupply, uint256 totalSupply, tuple(address id, string symbol, bool stable, address token0Address, address token1Address, address gaugeAddress, address bribeAddress, address[] bribeTokensAddresses, address fees, uint256 totalSupply) poolData)[])", - poolsReservesInfo: "function poolsReservesInfo(address[] _poolsAddresses) view returns (tuple(address id, address token0Address, address token1Address, uint256 token0Reserve, uint256 token1Reserve, uint8 token0Decimals, uint8 token1Decimals)[])", - locked: "function locked(uint256) view returns (int128 amount, uint256 end)", -} \ No newline at end of file diff --git a/projects/penrose/index.js b/projects/penrose/index.js deleted file mode 100644 index a6414a45601..00000000000 --- a/projects/penrose/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const abi = require("./abi.js"); -const partnerRewardsPoolAddress = "0x5DD340DD4142D093c1926282CD56B0D4690dEB11"; -const penDystRewardPoolAddress = "0x62f9B938323fb68379B9Ac1641012F9BeE339C69"; -const vlPenAddress = "0x55CA76E0341ccD35c2E3F34CbF767C6102aea70f"; -const penAddress = "0x9008D70A5282a936552593f410AbcBcE2F891A97"; -const penDystAddress = "0x5b0522391d0A5a37FD117fE4C43e8876FB4e91E6"; -const dyst = '0x39aB6574c289c3Ae4d88500eEc792AB5B947A5Eb' -const { getUniqueAddresses } = require('../helper/utils') -const { sumTokensExport } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -async function tvl(api) { - // 0xDAO Master Chef - // 0xDAO Core - const penLensAddress = "0x1432c3553FDf7FBD593a84B3A4d380c643cbf7a2"; - const dystopiaLensAddress = "0xDd688a48A511f1341CC57D89e3DcA486e073eaCe"; - - const reserveDataMap = {} - - const poolsData = await api.call({ target: penLensAddress, abi: abi.penPoolsData, }) - - const dystopiaPoolsAddresses = getUniqueAddresses(poolsData.map(i => i.poolData.id)) - const reservesData = await api.call({ target: dystopiaLensAddress, params: [dystopiaPoolsAddresses], abi: abi.poolsReservesInfo }) - reservesData.forEach(i => reserveDataMap[i.id.toLowerCase()] = i) - - poolsData.forEach(pool => { - const ratio = pool.totalSupply / pool.poolData.totalSupply - const reserves = reserveDataMap[pool.poolData.id.toLowerCase()] - if (!reserves) throw new Error('Missing data', pool.poolData.id) - const { token0Address, token0Reserve, token1Address, token1Reserve } = reserves - api.add(token0Address, +token0Reserve * ratio) - api.add(token1Address, +token1Reserve * ratio) - }) - - // Add DYST in penDYST - const supply = await api.call({ abi: 'erc20:totalSupply', target: penDystAddress }) - api.add(dyst, supply) - - return api.sumTokens([ - [dyst, penDystRewardPoolAddress], - [dyst, partnerRewardsPoolAddress], - ]) -} - - -module.exports = { - polygon: { - tvl, - staking: sumTokensExport({ - tokensAndOwners: [ - [penAddress, vlPenAddress], - [penAddress, partnerRewardsPoolAddress], - [penAddress, penDystRewardPoolAddress], - ] - }), - } -} diff --git a/projects/penumbra-dex/index.js b/projects/penumbra-dex/index.js deleted file mode 100644 index 1a400cfee32..00000000000 --- a/projects/penumbra-dex/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { get } = require("../helper/http") - -async function tvl(api) { - const { liquidity } = await get('https://dex.penumbra.zone/api/stats') - if (liquidity.value.knownAssetId.metadata.symbol !== 'USDC') - throw new Error('Unknown asset id') - api.addCGToken('usd-coin', liquidity.value.knownAssetId.amount.lo / 1e6) -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - penumbra: { tvl } -} \ No newline at end of file diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js deleted file mode 100644 index 3b575d4487d..00000000000 --- a/projects/pepe-bridge/index.js +++ /dev/null @@ -1,106 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, sumTokensExport } = require("../helper/unwrapLPs"); -const { scriptEvaluate, assetBalance } = require("../helper/chain/waves"); - -// Bridge actually doesn't store WAVES on its account -// but stakes it to our WAVES staking contract -// so TVL calculation is based on product of SWAVES/WAVES rate with SWAVES balance -async function wavesTVL() { - const WAVES_COIN_BRIDGE_CONTRACT = "3PFPuctNkdbwGKKUNymWw816jGPexHzGXW5"; - const SWAVES_STAKING_CONTRACT = "3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV"; - const SWAVES_ASSET_ID = "YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7"; - const SWAVES_DECIMALS = 1e8; - const SWAVES_RATE_DECIMALS = 1e12; - - const balanceResp = await assetBalance( - WAVES_COIN_BRIDGE_CONTRACT, - SWAVES_ASSET_ID - ); - - const sWavesBalance = balanceResp.balance / SWAVES_DECIMALS; - - const evaluateResp = await scriptEvaluate( - SWAVES_STAKING_CONTRACT, - "getRate()" - ); - - /** - * Response example: - * { - * "result": { - * "type": "Tuple", - * "value": { - * "_1": { - * "type": "Array", - * "value": [] - * }, - * "_2": { - * "type": "String", - * "value": "1110637703184" - * } - * } - * }, - * "complexity": 257, - * "stateChanges": { .. } - * } - */ - const rawSWavesRate = evaluateResp.result["value"]["_2"]["value"]; - const sWavesRate = parseInt(rawSWavesRate) / SWAVES_RATE_DECIMALS; - const balanceInWaves = sWavesBalance * sWavesRate; - - const balances = {}; - sdk.util.sumSingleBalance(balances, "waves", balanceInWaves); - return balances; -} - -const config = { - ethereum: [ - [[nullAddress], "0x882260324AD5A87bF5007904B4A8EF87023c856A"], - [ - [ - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.CRV, - ADDRESSES.ethereum.UNI, - ADDRESSES.ethereum.MKR, - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.CRVUSD, - ], - "0x0de7b091A21BD439bdB2DfbB63146D9cEa21Ea83", - ], - ], - bsc: [ - [[nullAddress], "0xF1632012f6679Fcf464721433AFAAe9c11ad9e03"], - [ - [ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC, ADDRESSES.bsc.BTCB], - "0x8DF12786EC0E34e60D4c52f9052ba4e536e9367a", - ], - ], - polygon: [ - [[nullAddress], "0xEa3cc73165748AD1Ca76b4d1bA9ebC43fb399018"], - [ - [ADDRESSES.polygon.USDT, ADDRESSES.polygon.USDC], - "0xF57dB884606a0ed589c06320d9004FBeD4f81e4A", - ], - ], - tron: [ - [[nullAddress], "TMsm33cUm8HuxyRqwG7xhV46cmx5NVPPGB"], - [ - [ADDRESSES.tron.USDT, ADDRESSES.tron.USDC], - "TNN42f7dXYksBsh8hjVo8XD8aYSKcSEhJF", - ], - ], -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: sumTokensExport({ ownerTokens: config[chain], logCalls: true }), - }; -}); -module.exports.waves = { tvl: wavesTVL }; - -module.exports.timetravel = false; // Waves blockchain -module.exports.methodology = "All tokens locked in PepeTeam Bridge."; diff --git a/projects/pepe-dex/index.js b/projects/pepe-dex/index.js deleted file mode 100644 index 6ae0973bd4a..00000000000 --- a/projects/pepe-dex/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, sumTokensExport } = require("../helper/unwrapLPs"); -const { scriptEvaluate, assetBalance, sumTokens } = require("../helper/chain/waves"); - -// DEX actually doesn't store WAVES on its account -// but stakes it to our WAVES staking contract -// so TVL calculation is based on product of SWAVES/WAVES rate with SWAVES balance -async function wavesTVL(api) { - const WAVES_VAULT_CONTRACT = "3PCSFoiiY4eUcLJNzSfMLy5jHEMtcHduT3M"; - const SWAVES_STAKING_CONTRACT = "3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV"; - const SWAVES_ASSET_ID = "YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7"; - const SWAVES_RATE_DECIMALS = 1e12; - - const balanceResp = await assetBalance( - WAVES_VAULT_CONTRACT, - SWAVES_ASSET_ID - ); - - const sWavesBalance = balanceResp.balance; - const evaluateResp = await scriptEvaluate( - SWAVES_STAKING_CONTRACT, - "getRate()" - ); - - const rawSWavesRate = evaluateResp.result["value"]["_2"]["value"]; - const sWavesRate = parseInt(rawSWavesRate) / SWAVES_RATE_DECIMALS; - const balanceInWaves = Math.floor(sWavesBalance * sWavesRate); - const balances = await sumTokens({ owners: [WAVES_VAULT_CONTRACT], api }) - - // replace sWAVES balance (see swaves.pepe.team - liquid staking protocol) - return { ...balances, [`waves:${SWAVES_ASSET_ID}`]: balanceInWaves }; -} - -const config = { - ethereum: { - ownerTokens: [ - [ - [ - nullAddress, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.WAVES - ], - "0xE1afEd6A61a169638F3a895E0F0506A5218e2Bf5" - ] - ], - }, - bsc: { - ownerTokens: [ - [ - [ - nullAddress, - ADDRESSES.bsc.USDT - ], - "0xE239B640Aa534b1313012fAfF581C868f3207854" - ] - ] - }, - polygon: { - ownerTokens: [ - [ - [ - nullAddress, - ADDRESSES.polygon.USDT - ], - "0xEA27B6337cE7462B791977b0180acA8FB2cAbBBF" - ] - ] - }, -}; - -module.exports = { - methodology: "All tokens locked in PepeTeam DEX vaults", - timetravel: false, - waves: { - tvl: wavesTVL, - } -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: sumTokensExport({ ownerTokens: config[chain].ownerTokens, logCalls: true, transformAddress: config[chain].transformAddress }), - }; -}); diff --git a/projects/pepe-swaves/index.js b/projects/pepe-swaves/index.js deleted file mode 100644 index f8046b5e1a8..00000000000 --- a/projects/pepe-swaves/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { data } = require("../helper/chain/waves"); -const sdk = require('@defillama/sdk') - -const wavesStakingContract = "3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV"; - -async function wavesTVL() { - const balances = {}; - const contractTVLInWAVES = await data(wavesStakingContract, "STAKING_AMOUNT"); - sdk.util.sumSingleBalance(balances,'waves',contractTVLInWAVES.value/1e8) - return balances; -} - -module.exports = { - timetravel: false, // Waves blockchain - methodology: "TVL of sWAVES means the quantity of WAVES tokens underlying", - waves: { - tvl: wavesTVL, - }, -}; diff --git a/projects/pepedex/index.js b/projects/pepedex/index.js deleted file mode 100644 index 6e4f3674ca7..00000000000 --- a/projects/pepedex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x460b2005b3318982feADA99f7ebF13e1D6f6eFfE', - }) - } -}; diff --git a/projects/percent/abi.json b/projects/percent/abi.json deleted file mode 100644 index 209ed710bbb..00000000000 --- a/projects/percent/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getCurrentTokens": "address[]:getCurrentTokens", - "totalSupply": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/percent/index.js b/projects/percent/index.js deleted file mode 100644 index 84a96b18872..00000000000 --- a/projects/percent/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { stakings } = require("../helper/staking"); -const { compoundExports2 } = require("../helper/compound"); - -const comptroller = "0xf47dD16553A934064509C40DC5466BBfB999528B"; - -const pool2Contract = "0x23b53026187626Ed8488e119767ACB2Fe5F8de4e"; -const lpOfPool2 = "0xEB85B2E12320a123d447Ca0dA26B49E666b799dB"; - -const pctPoolContracts = [ - "0x5859D111210dd9FE6F11502b65C1BF26a46018d2", - "0xa40d04a73d6E00049d8A72623Ef8b75879059F70", - "0x0190bF688fF57B935e99487AaceBAccf450C5D4f", - "0xed41F2b444D72648647d6f5a124Ad15574963706", - "0xfAe0ADb2d30E2a63730AC927E4e15e96D69B4aDd", - "0x8124502fB129eB1B0052725CfD126e8EB0975ab1", - "0xf49A20407b92332704B5FE4942c95D7d134b843b", -]; - -const lpOfPctPools = [ - "0xe010fcda8894c16a8acfef7b37741a760faeddc4", - "0xc48b8329d47ae8fd504c0b81cf8435486380e858", - "0xEe9A6009B926645D33E10Ee5577E9C8D3C95C165", - "0xe969991ce475bcf817e01e1aad4687da7e1d6f83", - "0x99e582374015c1d2f3c0f98d0763b4b1145772b7", - "0x41284a88d970d3552a26fae680692ed40b34010c", - "0xe867be952ee17d2d294f2de62b13b9f4af521e9a", -]; - -const stakingContract = "0x894CC200DDc79292c1BBc673706903F83Ff9d787"; -const PCT = "0xbc16da9df0a22f01a16bc0620a27e7d6d6488550"; - -const stakingContracts = pctPoolContracts.concat([stakingContract, comptroller]) - -async function resolveBalancers({ balances = {}, toa, api }) { - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: toa.map(i => ({ params: i[1], target: i[0] })) }) - const supply = await api.multiCall({ abi: abi.totalSupply, calls: toa.map(i => i[0]) }) - const ratio = bals.map((v, i) => v / supply[i]) - const tokens = await api.multiCall({ abi: abi.getCurrentTokens, calls: toa.map(i => i[0]) }) - await Promise.all(tokens.map(async (t, i) => { - const owner = toa[i][0] - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: t.map(j => ({ target: j, params: owner })) }) - bals.forEach((bal, j) => { - const token = t[j] - sdk.util.sumSingleBalance(balances, token, bal * ratio[i], api.chain) - }) - })) - return balances -} - -async function pool2(api) { - return resolveBalancers({ toa: [[lpOfPool2, pool2Contract]], api }) -} - -async function ethTvl(api) { - const toa = [] - for (let i = 0; i < pctPoolContracts.length; i++) - toa.push([lpOfPctPools[i], pctPoolContracts[i]]) - - return resolveBalancers({ api, toa }); -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(stakingContracts, PCT), - pool2: pool2, - ...compoundExports2({ comptroller, cether: '0x45f157b3d3d7c415a0e40012d64465e3a0402c64' }), - doublecounted: true, // All Pools are owned by the Balancer - - }, - methodology: - "Same as compound, we get all the liquidity and the borrowed part on the lending markets", -}; - -module.exports.ethereum.tvl = sdk.util.sumChainTvls([module.exports.ethereum.tvl, ethTvl]) -module.exports.ethereum.tvl = ethTvl -module.exports.ethereum.borrowed = () => ({}) \ No newline at end of file diff --git a/projects/perena/index.js b/projects/perena/index.js deleted file mode 100644 index ab30576e627..00000000000 --- a/projects/perena/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program } = require("@coral-xyz/anchor"); -const { PublicKey } = require('@solana/web3.js'); - -async function tvl() { - const provider = getProvider() - - const programId = new PublicKey('NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P') - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, provider) - - // this filter is needed because the call fails, there are some bad pools that fail to decode - const poolData = await program.account.stablePool.all([{ dataSize: program.account.stablePool._size }]) - - const tokenAccounts = [] - const blacklistedTokens = [] - poolData.forEach(({ account: i }) => { - blacklistedTokens.push(i.lpMint.toString()) - i.pairs.forEach(pair => { - tokenAccounts.push(pair.xVault.toString()) - }) - }) - return sumTokens2({ tokenAccounts: tokenAccounts.filter(i => i !== '11111111111111111111111111111111'), blacklistedTokens, }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} \ No newline at end of file diff --git a/projects/perennial-v2/index.js b/projects/perennial-v2/index.js deleted file mode 100644 index 9c8c8398a55..00000000000 --- a/projects/perennial-v2/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); - -const config = { - arbitrum: { - dsu: '0x52c64b8998eb7c80b6f526e99e29abdcc86b841b', - factory: '0xDaD8A103473dfd47F90168A0E46766ed48e26EC7', - fromBlock: 135921706, - }, - perennial: { - dsu: '0xC27399bE9E39f7F6b1f94fBd512F5c2aD2b5eDb7', - factory: '0xDaD8A103473dfd47F90168A0E46766ed48e26EC7', - fromBlock: 615402, - }, -}; - -Object.keys(config).forEach((chain) => { - const { factory, fromBlock, dsu } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event InstanceRegistered (address indexed instance)', - onlyArgs: true, - fromBlock, - }); - return api.sumTokens({ - tokensAndOwners: logs.map((log) => [dsu, log.instance]), - }); - }, - }; -}); diff --git a/projects/perennial/index.js b/projects/perennial/index.js deleted file mode 100644 index cf50d9a22b0..00000000000 --- a/projects/perennial/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const config = { - ethereum: { DSU: '0x605D26FBd5be761089281d5cec2Ce86eeA667109', collateral: '0x2d264EBDb6632A06A1726193D4d37FeF1E5dbDcd', }, - arbitrum: { DSU: '0x52C64b8998eB7C80b6F526E99E29ABdcC86B841b', collateral: '0xaf8ced28fce00abd30463d55da81156aa5aeeec2', }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { DSU, collateral} = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owner: collateral, tokens: [DSU] }) - } -}) diff --git a/projects/perfect-pool/index.js b/projects/perfect-pool/index.js deleted file mode 100644 index a6fea1f0155..00000000000 --- a/projects/perfect-pool/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') - -//base -const NFT_ACE8 = '0x21F3ea812734b6492D88D268622CF068e9E6D596' -const NFT_ACE16 = '0x70A254c8201adbD88d88D17937d5e8aBb8B8095F' -const NFT_CLUB_WORLD_CUP = '0x6b08888efd22d694504Bb293Cb135fD2Ea5f1fE4' -const PERFECT_POOL = '0x0a35174FB79C59F635204D4ae443D94B278742A8' - -//hyperliquid EVM -const NFT_CLUB_WORLD_CUP_HYPERLIQUID = '0x9c0B8c13dBC4c8b72Bd2574f23592E0b3118Ab7c' -const NFT_ACE8_HYPERLIQUID = '0xe479875A08263c3a743B44c676Ed3bFC4457009B' -const NFT_ACE16_HYPERLIQUID = '0x568734E585Db3A3a583b9Ce11ddA91d099D3c6f2' - -module.exports = { - start: '2024-09-02', - base: { - tvl: sumTokensExport( - { owners: [NFT_ACE8, NFT_ACE16, NFT_CLUB_WORLD_CUP, PERFECT_POOL], token: ADDRESSES.base.USDC }, - ), - }, - hyperliquid: { - tvl: sumTokensExport( - { owners: [NFT_CLUB_WORLD_CUP_HYPERLIQUID, NFT_ACE8_HYPERLIQUID, NFT_ACE16_HYPERLIQUID], token: ADDRESSES.corn.USDT0 }, - ), - } -} diff --git a/projects/perfectswap/index.js b/projects/perfectswap/index.js deleted file mode 100644 index ffcde1cad6d..00000000000 --- a/projects/perfectswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'arbitrum': '0xC7ee0B06c2d9c97589bEa593c6E9F6965451Fe93' -}, { - abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, hasStablePools: true, -}) \ No newline at end of file diff --git a/projects/perifinance/index.js b/projects/perifinance/index.js deleted file mode 100644 index 1810f4bbd6b..00000000000 --- a/projects/perifinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const periFinanceContract = { - ethereum: "0x0207157a7c154bFdEAD22751474c68660A4a540b", - polygon: "0x8f151e700772d6e8Dc7dA8B260c9e0C3eCbF4174", - bsc: "0x2Da103C31c4A80f828ea4158bD090e926003e8ad", - base: "0x0f2Af7246e1FcbEC5e334092B1F0D91BDA924faD", - moonriver: "0xB2f5Cd646Aab5f887150945576d51a8B5902F288", - moonbeam: "0x0f2Af7246e1FcbEC5e334092B1F0D91BDA924faD", -} - -Object.keys(periFinanceContract).forEach(chain => module.exports[chain] = { tvl }) - -async function tvl(api) { - const contract = periFinanceContract[api.chain]; - const pUSD = await api.call({ abi: 'function pUSD() view returns (bytes32)', target: contract}) - const totalIssued = await api.call({ abi: "function totalIssuedPynths(bytes32 currencyKey) view returns (uint256 totalIssued)", target: contract, params: pUSD}) - api.addCGToken("usd-coin", totalIssued * 4 / 1e18) -} diff --git a/projects/perion/index.js b/projects/perion/index.js deleted file mode 100644 index 349f7d0a27b..00000000000 --- a/projects/perion/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const PERC = "0x60bE1e1fE41c1370ADaF5d8e66f07Cf1C2Df2268"; -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { - tvl: () => 0, - staking: staking('0xf64F48A4E27bBC299273532B26c83662ef776b7e', PERC) - }, -}; \ No newline at end of file diff --git a/projects/perlinx/abi.json b/projects/perlinx/abi.json deleted file mode 100644 index fa50aebf962..00000000000 --- a/projects/perlinx/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "poolCount": "uint256:poolCount", - "arrayPerlinPools": "function arrayPerlinPools(uint256) view returns (address)", - "poolIsListed": "function poolIsListed(address) view returns (bool)", - "getCurrentTokens": "address[]:getCurrentTokens", - "synthCount": "uint256:synthCount", - "arraySynths": "function arraySynths(uint256) view returns (address)", - "mapSynth_EMP": "function mapSynth_EMP(address) view returns (address)" -} \ No newline at end of file diff --git a/projects/perlinx/index.js b/projects/perlinx/index.js deleted file mode 100644 index 11732dc3e21..00000000000 --- a/projects/perlinx/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const abi = require('./abi'); - -const perlinX = '0x5Fa19F612dfd39e6754Bb2E8300E681d1C589Dd4'; -const perlErc20 = '0xeca82185adCE47f39c684352B0439f030f860318'; - -async function tvl(api) { - const synths = await api.fetchList({ lengthAbi: abi.synthCount, itemAbi: abi.arraySynths, target: perlinX }) - const emps = await api.multiCall({ abi: abi.mapSynth_EMP, calls: synths, target: perlinX }) - return api.sumTokens({ owners: emps, token: perlErc20 }) -} - -module.exports = { - start: '2020-09-24', - ethereum: { tvl }, -} diff --git a/projects/perp/index.js b/projects/perp/index.js deleted file mode 100644 index d0e69d6892d..00000000000 --- a/projects/perp/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const perpToken = "0xbC396689893D065F41bc2C6EcbeE5e0085233447" -const perpTokenOP = "0x9e1028F5F1D5eDE59748FFceE5532509976840E0" -const stakingContract = "0x0f346e19F01471C02485DF1758cfd3d624E399B4" -const stakingContractOP = "0xD360B73b19Fb20aC874633553Fb1007e9FcB2b78" -module.exports = { - ethereum: { - staking: staking(stakingContract, perpToken) - }, - optimism: { - staking: staking(stakingContractOP, perpTokenOP), - tvl: staking( - [ - "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60" - ], - [ - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.USDT, - ADDRESSES.optimism.OP, - ADDRESSES.tombchain.FTM, - ADDRESSES.optimism.FRAX]) - }, -} \ No newline at end of file diff --git a/projects/perp88/index.js b/projects/perp88/index.js deleted file mode 100644 index 4864b7cab5c..00000000000 --- a/projects/perp88/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const tokens = { - WMATIC: ADDRESSES.polygon.WMATIC_2, - WETH: ADDRESSES.polygon.WETH_1, - WBTC: ADDRESSES.polygon.WBTC, - DAI: ADDRESSES.polygon.DAI, - USDC: ADDRESSES.polygon.USDC, - USDT: ADDRESSES.polygon.USDT, -}; -const POOL_DIAMOND_CONTRACT = "0xE7D96684A56e60ffBAAe0fC0683879da48daB383"; - -async function blastTvl(api) { - const vaultStorageAddress = "0x97e94BdA44a2Df784Ab6535aaE2D62EFC6D2e303"; - const hlpUnderlyings = [ - "0xb9d94A3490bA2482E2D4F21F0E76b92E5661Ded8", - "0xCD732d21c1B23A3f84Bb386E9759b5b6A1BcBe39", - ]; - return api.sumTokens({ owner: vaultStorageAddress, tokens: hlpUnderlyings }); -} - -module.exports = { - start: '2022-11-17', - polygon: { - tvl: sumTokensExport({ - owner: POOL_DIAMOND_CONTRACT, - tokens: Object.values(tokens), - }), - }, - arbitrum: { - tvl: sumTokensExport({ - owner: "0x56CC5A9c0788e674f17F7555dC8D3e2F1C0313C0", - tokens: [ - "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", - "0x47c031236e19d024b42f8AE6780E44A573170703", - ], - fetchCoValentTokens: true, - }), - }, - blast: { - tvl: blastTvl, - }, -}; diff --git a/projects/perpstreet/index.js b/projects/perpstreet/index.js deleted file mode 100644 index e0d7a0f81b7..00000000000 --- a/projects/perpstreet/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require("../helper/unwrapLPs"); -module.exports = { - hemi: { - tvl: sumTokensExport({ - owner: '0x3E0341e2618F39BDd78E769F80BB893a3823cc4A', - tokens: [ADDRESSES.hemi.USDC_e,ADDRESSES.hemi.USDT ], - }), - } -}; diff --git a/projects/perseid-finance/index.js b/projects/perseid-finance/index.js deleted file mode 100644 index ac8fe919783..00000000000 --- a/projects/perseid-finance/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') -const ADDRESSES = require('../helper/coreAssets.json') - -const NATIVE_ADDRES = "0xfec65bfb6e5bbcc9ab8ae98f62a8aab2ea51c495"; -const NATIVE_LP_ADDRESS = "0x47ED4E0a52716e91a4F37914b04B2252B5B5fcDF"; // iziswap LP -const FARM_ADDRES = "0xC692CA3066C84012C616989Bc7fD9659f16DDCFd"; - - -const getTvl = isStaking => async (api) => { - let pools = await api.call({ abi: abi.getPoolTotalTvl, target: FARM_ADDRES, }); - if (isStaking) - pools = pools.find(i => i[1].toLowerCase() === NATIVE_ADDRES) - else - pools = pools.filter(i => i[1].toLowerCase() !== NATIVE_ADDRES) - - if (!isStaking) { - pools.forEach(([_, token, bal]) => api.add(token, bal)) - return sumUnknownTokens({ - api, useDefaultCoreAssets: true, resolveLP: true, abis: { - getReservesABI: !isStaking ? abi.getReserves : null, - } - }) - } - - if (!pools) return {} - const pedBal = pools[2] - const {sqrtPrice_96} = await api.call({abi:abi.state,target:NATIVE_LP_ADDRESS}) - let price = (sqrtPrice_96/2**96)**2 - let pedPrice = 1/price*10**12 - let pedAmount = pedPrice*(pedBal/10**18) - - api.add(ADDRESSES.scroll.USDT, pedAmount*10**6) - return api.getBalances() -} - -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1699578000,"Rug Pull"] - ], - deadFrom: '2023-11-10', - scroll: { - tvl: getTvl(false), - staking: getTvl(true), - }, -}; - -const abi = { - "getPoolTotalTvl": "function getPoolTotalTvl() view returns (tuple(uint256 pid, address assets, uint256 tvl)[])", - "getReserves": "function getReserves() external view returns (uint _reserve0, uint _reserve1)", - "state":'function state() external view returns(uint160 sqrtPrice_96,int24 currentPoint,uint16 observationCurrentIndex,uint16 observationQueueLen,uint16 observationNextQueueLen,bool locked,uint128 liquidity,uint128 liquidityX)' -} \ No newline at end of file diff --git a/projects/phame/index.js b/projects/phame/index.js deleted file mode 100644 index 8e867919d3f..00000000000 --- a/projects/phame/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - pulse:{ - tvl: gmxExports({ vault: '0x3dC4033fF5c04FdE3369937434961ca47AC7cA26', }) - } -}; diff --git a/projects/phantom-finance/index.js b/projects/phantom-finance/index.js deleted file mode 100644 index 1c3a7bd3f53..00000000000 --- a/projects/phantom-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x9d2025065498728558f364651960976CC83F14B6', - nativeToken: '0x6230a87901C2ca6b23247a9afC1f63A8ecb95B05' -}) -module.exports.hallmarks = [ - [1646179200, "Rug Pull"] -] -module.exports.deadFrom = 1648765747 \ No newline at end of file diff --git a/projects/phantom-sol/index.js b/projects/phantom-sol/index.js deleted file mode 100644 index 7c5cd84b388..00000000000 --- a/projects/phantom-sol/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('pSPcvR8GmG9aKDUbn9nbKYjkxt9hxMS7kF1qqKJaPqJ', api) -} - -module.exports ={ - timetravel: false, - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/pharaoh-exchange-v1/index.js b/projects/pharaoh-exchange-v1/index.js deleted file mode 100644 index 1059009c1f2..00000000000 --- a/projects/pharaoh-exchange-v1/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - avax:{ - tvl: getUniTVL({ factory: '0xAAA16c016BF556fcD620328f0759252E29b1AB57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), - staking: staking("0xAAA3249511DE3E7A5c61FbA8313170c1Bef9A65e", "0xAAAB9D12A30504559b0C5a9A5977fEE4A6081c6b"), - }, -} \ No newline at end of file diff --git a/projects/pharaoh-exchange/index.js b/projects/pharaoh-exchange/index.js deleted file mode 100644 index 2acb984a712..00000000000 --- a/projects/pharaoh-exchange/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - avax: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 38764597, }, -}) \ No newline at end of file diff --git a/projects/phase/config.js b/projects/phase/config.js deleted file mode 100644 index 4bbc1303bb1..00000000000 --- a/projects/phase/config.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - base: { - cash: "0xbe92452bb46485AF3308e6d77786bFBE3557808d", - bond: "0x443f102Ea65613d91365E1F5c37C21Ed2144023A", - factory: '0xd3382599f6fe88bac72dfe23590644314146aa88', - fromBlock: 4925577, - }, -}; diff --git a/projects/phase/index.js b/projects/phase/index.js deleted file mode 100644 index 32ff0a149e8..00000000000 --- a/projects/phase/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const config = require("./config"); -const { staking } = require('../helper/staking') -const { getLogs } = require('../helper/cache/getLogs') - -async function getVaults(api) { - const { factory, fromBlock } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event ContractCreated (address indexed creator, address created)', - onlyArgs: true, - fromBlock, - }) - return logs.map(i => i.created) -} - -async function tvl(api) { - const vaults = await getVaults(api) - const assets = await api.multiCall({ abi: 'address:asset', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:collectiveCollateral', calls: vaults }) - api.addTokens(assets, bals) - return api.getBalances() -} - -async function borrowed(api) { - const vaults = await getVaults(api) - const assets = vaults.map(_ => config[api.chain].cash) - const bals = await api.multiCall({ abi: 'uint256:collectiveDebt', calls: vaults }) - api.addTokens(assets, bals) - return api.getBalances() -} - -module.exports = { - methodology: - "Counts the TVL of the Phase vaults. Counts total borrows. Counts $CASH in the bond.", -}; - -Object.keys(config).forEach((chain) => { - const { cash, bond } = config[chain]; - module.exports[chain] = { - tvl, - // borrowed, - staking: staking(bond, cash), - }; -}); diff --git a/projects/pheasantswap/index.js b/projects/pheasantswap/index.js deleted file mode 100644 index 0b83580755f..00000000000 --- a/projects/pheasantswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - enuls: { tvl: getUniTVL({ factory: '0x7bf960B15Cbd9976042257Be3F6Bb2361E107384', useDefaultCoreAssets: true,}), }, -} diff --git a/projects/phemex/index.js b/projects/phemex/index.js deleted file mode 100644 index 70a76c0fcdd..00000000000 --- a/projects/phemex/index.js +++ /dev/null @@ -1,105 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.phemex - }, - ethereum: { - owners: [ - '0xf7D13C7dBec85ff86Ee815f6dCbb3DEDAc78ca49', - '0xdb861e302ef7b7578a448e951aede06302936c28', - '0x9022B72D67999A3b0d1330eCefCa56f83d2ec52C', - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0x35d2d03607b9155b42cf673102fe58251ac4f644' - ], - }, - bsc: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28', - ], - }, - base: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28' - ], - }, - avax: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28' - ], - }, - fantom: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28' - ], - }, - arbitrum: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28' - ], - }, - optimism: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28' - ], - }, - polygon: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28' - ], - }, - era: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28' - ], - }, - linea: { - owners: [ - '0x50be13b54f3eebbe415d20250598d81280e56772', - '0xdb861e302ef7b7578a448e951aede06302936c28' - ], - }, - ripple: { - owners: [ - 'rQKKvBvEfXbTThkqrtqaY3sAKuW6iqcMzX', - 'rLMAAuqJowC5yMccaPnappeLM8vDfdiDTg', - 'rN8fxXkmsTbgMxmisfvtK5AXwauXRkjgvd' - ], - }, - sui: { - owners: [ - '0x51fc8f63faf7b22d401623f9c3ae5183e564d701741770f12ad1851c6c45a0c8', - '0x59097eed58f8306577b4e61c928253211c71426ab5eb023ad15cc11054080cf8' - ], - }, - tron: { - owners: [ - 'THAABzWrhp84Nr7gxss7qhtzA5mp3d1qUo', - 'TMHKjGvQ2trQkBEnAgx7RvV77Xn8w1JDP7', - ], - }, - solana: { - owners: [ - 'EWSHJzKpzjpwz9GuNKkXWMHXAiwtB7obSGhdFKu5QZku', - '5xYNhZRW1rEofFon3X2JgaZtrnu5vo5xXD61jHof3p37' - ], - }, - polkadot: { - owners: [ - '15hTaSogYFyGyRJhXdpQWRR1J9oya5nj4nFppi4XgUVMCvmP', - '14E9TaC4TGxUf63wrDCxFNvcwdDAo2s9XMcQaChwHS4EXqyF' - ], - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'We are only tracking part of their cold wallets, more information here https://phemex.com/proof-of-reserves' \ No newline at end of file diff --git a/projects/phenix-dex/index.js b/projects/phenix-dex/index.js deleted file mode 100644 index ea0ca1b00d2..00000000000 --- a/projects/phenix-dex/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - methodology: `TVL of staked assets across the Phenix DEX on both Cronos Mainnet and Polygon POS chains.`, - cronos: { - tvl: getUniTVL({ - factory: "0x6Bae09822c36a9359d563A22fc7d134eF27a5f60", - useDefaultCoreAssets: true, - }), - }, - polygon: { - tvl: getUniTVL({ - factory: "0x9A3F01dfA086C2E234fC88742c692368438fBb30", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/phezzan/index.js b/projects/phezzan/index.js deleted file mode 100644 index 9be7ef49d36..00000000000 --- a/projects/phezzan/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require('../helper/unknownTokens') -const { toUSDTBalances } = require('../helper/balances') -const { get } = require('../helper/http') - -async function offers() { - const markets = await get('https://api.phezzan.xyz/api/v1/markets') - const marketInfos = await get('https://api.phezzan.xyz/api/v1/marketinfos?chain_id=280&market=' + Object.keys(markets).join(',')) - let total = 1000 - Object.keys(markets).forEach(market => { - const info = marketInfos[market] - const { baseVolume, quoteVolume } = markets[market] - if (!info) return; - total += baseVolume * info.baseAsset.usdPrice + quoteVolume * info.quoteAsset.usdPrice - }) - return toUSDTBalances(total) -} - - -const Contracts = { - kava: { - wkava: ADDRESSES.kava.WKAVA, - usdc: ADDRESSES.telos.ETH, - perpV1Result: "0x46bC4858F5BEE5AeB09bEB5906D7eFE92Ba50851", - fundingResult: "0xDe7570E5835B6045C6AB360222887bAED21Be5EA", // Funding - P1P1TradeResult: "0x49Ef8ca9A80B701E470EB70C835b361a99091278", // Staking - P1LiquidationResult: "0x55B5134A843b75Ad0b968782788b32dA23d9AeDA" // LPs - }, -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - kava: { - tvl: async () => ({}), - // tvl: sumTokensExport({ owners: [Contracts.kava.perpV1Result, Contracts.kava.fundingResult, ], tokens: [Contracts.kava.wkava, Contracts.kava.usdc, nullAddress] }), - }, - zksync: { - // offers, - tvl: async () => ({}) - }, - hallmarks: [ - ['2023-04-23', 'Protocol shutdown'], - ], - deadFrom: '2023-04-23', -}; diff --git a/projects/phiat/index.js b/projects/phiat/index.js deleted file mode 100644 index 3e1065c2d98..00000000000 --- a/projects/phiat/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); -const { methodology, aaveExports, } = require("../helper/aave"); - - -const stakingContract = "0xeAa92F835757a8B3fA4cbCA3Db9D2Ea342651D44"; -const PHIAT = "0x96e035ae0905efac8f733f133462f971cfa45db1"; - -module.exports = { - methodology, - pulse: { - ...aaveExports(undefined, '0x9B979a359410544236343Dfa11b8e1401e4DdCd6'), - staking: staking(stakingContract, PHIAT), - }, -}; diff --git a/projects/philetairussocius/index.js b/projects/philetairussocius/index.js deleted file mode 100644 index 48ca83d6ffb..00000000000 --- a/projects/philetairussocius/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const chef = "0x8c8953930634758B1e68C604fCb0B2Bc8F2f2893" -const philetairussocius = "0xc7Cc9D4010387Fc48e77a4Dc871FA39c26efaEEF" - -module.exports = { - ...masterChefExports(chef, "fantom", philetairussocius, false), -} \ No newline at end of file diff --git a/projects/phission-finance/index.js b/projects/phission-finance/index.js deleted file mode 100644 index ff14977390f..00000000000 --- a/projects/phission-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens') - -const WETH = ADDRESSES.ethereum.WETH; -const GOV_POOL = '0x18174E80335B9fCbc8ac0AB7f40F25aba878ccCC'; -const SPLIT_CONTRACT = '0x5b38A73f9dB3F5e12BB4dCb5a434FB3bd3972E53'; -const STAKING_CONTRACT = '0x569a157eac744b87a42314e8fc03a2e648ea33a2' - -module.exports = { - methodology: 'Total amount of WETH split, plus the value of Pool2', - start: '2022-08-30', - ethereum: { - tvl: sumTokensExport({ owner: SPLIT_CONTRACT, tokens: [WETH] }), - pool2: sumTokensExport({ owner: STAKING_CONTRACT, tokens: [GOV_POOL], useDefaultCoreAssets: true }), - } -}; \ No newline at end of file diff --git a/projects/phoenix-bonds/index.js b/projects/phoenix-bonds/index.js deleted file mode 100644 index f7611db8eb5..00000000000 --- a/projects/phoenix-bonds/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { call } = require('../helper/chain/near') - -async function tvl() { - const linear_price = await call( - ADDRESSES.near.LINA, - 'ft_price', - {} - ); - const { linear_balance } = await call( - 'phoenix-bonds.near', - 'get_summary', - { - "linear_price": linear_price - } - ); - return { - near: ( linear_price / 1e24 ) * (linear_balance / 1e24) - }; -} - -module.exports = { - near: { - tvl - }, - timetravel: false, -}; \ No newline at end of file diff --git a/projects/phoenix-dex/index.js b/projects/phoenix-dex/index.js deleted file mode 100644 index 879c3cfc0f8..00000000000 --- a/projects/phoenix-dex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getFactoryTvl } = require("../terraswap/factoryTvl"); - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - terra2: { - tvl: getFactoryTvl("terra1pewdsxywmwurekjwrgvjvxvv0dv2pf8xtdl9ykfce2z0q3gf0k3qr8nezy"), - }, -}; diff --git a/projects/phoenix-hub/index.js b/projects/phoenix-hub/index.js deleted file mode 100644 index 147689ff1bd..00000000000 --- a/projects/phoenix-hub/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const utils = require("../helper/utils"); -const {toUSDTBalances} = require("../helper/balances"); - -async function tvl() { - // Fetch all tickers - const response = await utils.fetchURL("https://stats.phoenix-hub.io/api/tvl"); - const data = response.data; - - if (data.success && data.data && typeof data.data.total_tvl_usd === 'number') { - return toUSDTBalances(data.data.total_tvl_usd); - } else { - throw new Error("Invalid data format"); - } -} - -module.exports = { - methodology: 'counts the liquidity on all Phoenix Hub AMM Pools.', - stellar: { - tvl, - } -}; diff --git a/projects/phoenix/index.js b/projects/phoenix/index.js deleted file mode 100644 index 024693891c0..00000000000 --- a/projects/phoenix/index.js +++ /dev/null @@ -1,12 +0,0 @@ - -const tvl = () => ({}) -module.exports = { - start: '2021-09-11', // beijing time 2021-9-11 0:0: - deadFrom: '2022-09-15', - hallmarks: [ - ['2022-09-15', 'Project is dead: https://twitter.com/Phoenix__PHX/status/1570389804734640129'], - ], - polygon:{ tvl, }, - bsc:{ tvl, }, - wan:{ tvl, }, -}; diff --git a/projects/phoenixfi-app/index.js b/projects/phoenixfi-app/index.js deleted file mode 100644 index 9e080bb117c..00000000000 --- a/projects/phoenixfi-app/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { nullAddress } = require('../helper/tokenMapping') -const { sumTokensExport } = require('../helper/chain/ergo') -const alephium = require('../helper/chain/alephium') - -async function alephiumTvl() { - const hodlALPH3ContractAddress = '2B22GruwbwKGNjSF363yMVApuoRjkU5WpwhNiUdkzFHH1' - const hodlALPH3Tvl = await alephium.getAlphBalance(hodlALPH3ContractAddress) - - // more tokens will be here in the future - return { - alephium: hodlALPH3Tvl.balance / 1e18 - } -} - -module.exports = { - timetravel: false, - methodology: 'TVL in Phoenix Hodl Protocol', - ergo: { - tvl: sumTokensExport({ owner: 'TZPn3oLcgqXcSLXXguTKqW6TXsMC9brGikXUrMfygBTPdeLgbKLkWj63EQ8rUQQodcVveRjDSigJ3CVd8yjeBwY4jQLr6ZMxDXTPn7V42zNTskCp18maQwN3p4S82tezBcJnTdWoSzeQVbqhARUyNNFjKdyKc6Z49XKkQL7jktSJcG4fnFayBqPZRhQMEB1ZZ12bU2rX5SkQj5jE65N2ZFCTi6WbNeNWWZQYPtZv8fGVLmNdhxgg968LYPLNLBJVa7rUo6Nyce4CszBYq44bD14rvKMZXq1zQ6ZjkFRfmXjDFg92MsXGuENuZdPnTgKJ7Cdct3EP4UFjgZx1PQSauX8own7pPEAf9MBRdF84WNqo9cbZhvrhUVvispD6bP2AoCZWKkrppi1atoV22RPxbouC1rkpsKW287HAXxfiwP8VKVDRUi1aVjRvFP13RpyrBf9cu1z44xnJwTC9ui38XPAUjz4DWp87mGh6JC54z2Mqyk2nEaai7nBP4fPW53XSExd5AK5JC9fVyfdrRtiR5ADkcc2yqXrF', tokens: [nullAddress] }) - }, - alephium: { - tvl: alephiumTvl - } -} diff --git a/projects/pholend/index.js b/projects/pholend/index.js deleted file mode 100644 index 1aa21d4c8c6..00000000000 --- a/projects/pholend/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { aaveV2Export, methodology } = require('../helper/aave') - -const LENDING_POOL = '0x09e7b6BF92ba8566939d59fE3e3844385d492E77'; - - -module.exports = { - methodology, - crossfi: aaveV2Export(LENDING_POOL) -}; \ No newline at end of file diff --git a/projects/photon-protocol/index.js b/projects/photon-protocol/index.js deleted file mode 100644 index c5d25c1aeac..00000000000 --- a/projects/photon-protocol/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakingUnknownPricedLP } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const photon = "0x2F1305F0619ADa14688A4291953bd7d284f9C2a5"; -const stakingContract = "0x81177472Ce36A9b1AB573804CD215C72cEb76F36"; -const photonbusd = "0xEBAa17dA7D5C616441290669E9D2c982c8B1Da25"; //PHOTON-BUSD -const treasury = "0x0f90591b01DE6F832e8B8E4ec3525efD423BCaD1"; - -module.exports = { - bsc: { - tvl: sumTokensExport({ tokens: [ADDRESSES.bsc.BUSD], owner: treasury }), - staking: stakingUnknownPricedLP(stakingContract, photon, "bsc", photonbusd, addr => `bsc:${addr}`) - } -} \ No newline at end of file diff --git a/projects/photonswap/index.js b/projects/photonswap/index.js deleted file mode 100644 index d1c2ec365a5..00000000000 --- a/projects/photonswap/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory addresses (0x462C98Cae5AffEED576c98A55dAA922604e2D875 for cronos, 0x4FD2c40c25Dd40e9Bf0CE8479bA384178b8671b5 for kava, 0x1c671d6fEC45Ec0de88C82e6D8536bFe33F00c8a for evmos) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - cronos: { - tvl: getUniTVL({ - factory: '0x462C98Cae5AffEED576c98A55dAA922604e2D875', - useDefaultCoreAssets: true, - }), - }, - evmos: { - tvl: getUniTVL({ - factory: '0x1c671d6fEC45Ec0de88C82e6D8536bFe33F00c8a', - useDefaultCoreAssets: true, - }), - }, - kava: { - tvl: getUniTVL({ - factory: '0x4FD2c40c25Dd40e9Bf0CE8479bA384178b8671b5', - useDefaultCoreAssets: true, - }), - } -} \ No newline at end of file diff --git a/projects/phuture/abis/Index.abi.json b/projects/phuture/abis/Index.abi.json deleted file mode 100644 index fc3970461b7..00000000000 --- a/projects/phuture/abis/Index.abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "anatomy": "function anatomy() view returns (address[] _assets, uint8[] _weights)", - "inactiveAnatomy": "address[]:inactiveAnatomy", - "vTokenFactory": "address:vTokenFactory" -} \ No newline at end of file diff --git a/projects/phuture/abis/SavingsVault.abi.json b/projects/phuture/abis/SavingsVault.abi.json deleted file mode 100644 index b0fd36e2665..00000000000 --- a/projects/phuture/abis/SavingsVault.abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "asset": "address:asset", - "totalAssets": "uint256:totalAssets" -} \ No newline at end of file diff --git a/projects/phuture/abis/vToken.abi.json b/projects/phuture/abis/vToken.abi.json deleted file mode 100644 index 2c4de4ea1b0..00000000000 --- a/projects/phuture/abis/vToken.abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "virtualTotalAssetSupply": "uint256:virtualTotalAssetSupply" -} \ No newline at end of file diff --git a/projects/phuture/abis/vTokenFactory.abi.json b/projects/phuture/abis/vTokenFactory.abi.json deleted file mode 100644 index 40654950a01..00000000000 --- a/projects/phuture/abis/vTokenFactory.abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "vTokenOf": "function vTokenOf(address) view returns (address)" -} \ No newline at end of file diff --git a/projects/phuture/index.js b/projects/phuture/index.js deleted file mode 100644 index e450c37aafa..00000000000 --- a/projects/phuture/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const sdk = require("@defillama/sdk"); -const indexAbi = require("./abis/Index.abi.json"); -const vTokenAbi = require("./abis/vToken.abi.json"); -const vTokenFactoryAbi = require("./abis/vTokenFactory.abi.json"); -const networks = require("./networks.json"); -const { sumERC4626Vaults } = require("../helper/erc4626"); -const { getUniqueAddresses } = require("../helper/utils"); - -const indexTvl = async (api) => { - const { indexes } = networks[api.chain] - const anatomy = (await api.multiCall({ abi: indexAbi.anatomy, calls: indexes })).map(i => i._assets) - const inactiveAnatomy = await api.multiCall({ abi: indexAbi.inactiveAnatomy, calls: indexes }) - const vFactories = await api.multiCall({ abi: indexAbi.vTokenFactory, calls: indexes }) - const indexTokens = anatomy.map((v, i) => getUniqueAddresses(v.concat(inactiveAnatomy[i]))) - const tokens = [] - const vTokenCalls = [] - vFactories.forEach((v, i) => { - indexTokens[i].forEach((token) => { - tokens.push(token) - vTokenCalls.push({ target: v, params: token }) - }) - }) - const vTokenOf = await api.multiCall({ abi: vTokenFactoryAbi.vTokenOf, calls: vTokenCalls }) - const bals = await api.multiCall({ abi: vTokenAbi.virtualTotalAssetSupply, calls: vTokenOf }) - api.add(tokens, bals) - return api.getBalances() -}; - -const savingsVaultTvl = async (api) => { - const calls = networks[api.chain]["savingsVaults"] - return sumERC4626Vaults({ api, calls, isOG4626: true, permitFailure: true }) -}; - -module.exports = { - methodology: "TVL considers tokens deposited to Phuture Products", - misrepresentedTokens: true, - ethereum: { - tvl: sdk.util.sumChainTvls([ - indexTvl, - savingsVaultTvl - ]) - }, - avax: { - tvl: indexTvl - } -}; diff --git a/projects/phuture/networks.json b/projects/phuture/networks.json deleted file mode 100644 index 63ed5e6e72e..00000000000 --- a/projects/phuture/networks.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ethereum": { - "indexes": [ - "0x632806bf5c8f062932dd121244c9fbe7becb8b48" - ], - "savingsVaults": [ - "0x6bad6a9bcfda3fd60da6834ace5f93b8cfed9598" - ] - }, - "avax": { - "indexes": [ - "0x48f88a3fe843ccb0b5003e70b4192c1d7448bef0" - ] - } -} diff --git a/projects/phux/index.js b/projects/phux/index.js deleted file mode 100644 index 20b7243d9c7..00000000000 --- a/projects/phux/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -const VAULT_ADDRESS = '0x7F51AC3df6A034273FB09BB29e383FCF655e473c'; - -const config = { - pulse: { fromBlock: 17500116, }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { fromBlock } = config[chain] - module.exports[chain] = { - tvl: onChainTvl(VAULT_ADDRESS, fromBlock) - } -}) \ No newline at end of file diff --git a/projects/physica-finance/index.js b/projects/physica-finance/index.js deleted file mode 100644 index 392f927cb7a..00000000000 --- a/projects/physica-finance/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3GraphExport } = require("../helper/uniswapV3"); - -module.exports = { - planq: { tvl: uniV3GraphExport({ graphURL: 'https://subgraph.planq.finance/subgraphs/name/ianlapham/uniswap-v3', name: 'physica-v3'}),} -} diff --git a/projects/pickle/index.js b/projects/pickle/index.js deleted file mode 100644 index 363456de325..00000000000 --- a/projects/pickle/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const pfcore = "https://f8wgg18t1h.execute-api.us-west-1.amazonaws.com/prod/protocol/pfcore/"; -const pickleAddress = "0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5"; - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - timetravel: false, -}; - -const chains = ['ethereum', 'polygon', 'arbitrum', 'moonriver', 'harmony', 'okexchain', 'cronos', 'aurora', 'metis', 'moonbeam', 'optimism', 'kava'] -chains.forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - let { assets: { jars } } = await getConfig('pickle', pfcore) - let key = chain - switch (chain) { - case 'ethereum': key = 'eth'; break; - case 'okexchain': key = 'okex'; break; - } - const vaults = jars.filter(jar => jar.chain === key).map(i => i.contract) - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults, permitFailure: true }) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: vaults, permitFailure: true }) - tokens.forEach((token, idx) => { - if (token && bals[idx]) api.add(token, bals[idx]) - }) - api.removeTokenBalance('0xEd4064f376cB8d68F770FB1Ff088a3d0F3FF5c4d') - return sumTokens2({ api, resolveLP: true, }) - } - } -}) - -module.exports.ethereum.staking = staking('0xbBCf169eE191A1Ba7371F30A1C344bFC498b29Cf',pickleAddress) -module.exports.ethereum.pool2 = pool2('0xfAA267C3Bb25a82CFDB604136a29895D30fd3fd8','0xdc98556Ce24f007A5eF6dC1CE96322d65832A819') \ No newline at end of file diff --git a/projects/pico-sol/index.js b/projects/pico-sol/index.js deleted file mode 100644 index 10024249faf..00000000000 --- a/projects/pico-sol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('8Dv3hNYcEWEaa4qVx9BTN1Wfvtha1z8cWDUXb7KVACVe', api) -} - -module.exports ={ - timetravel: false, - doublecounted: true, - methodology: "Pico Staked SOL (picoSOL) is a tokenized representation on your staked SOL + stake rewards", - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/picwe/index.js b/projects/picwe/index.js deleted file mode 100644 index 5b10fa8e9d6..00000000000 --- a/projects/picwe/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { function_view } = require("../helper/chain/aptos"); - -const CONSTANTS = { - PROTOCOL: { - ADDRESS: '0xed805e77c40d7e6ac5cd3e67514c485176621a2aa21e860cd515121d44a2f83d', - FUNCTION: 'weusd_operations::get_total_reserves' - }, - TOKENS: { - TOKEN_A: '0xa', - TOKEN_B: ADDRESSES.move.USDT - }, - MAX_RETRIES: 3, - RETRY_DELAY: 1000, // ms -}; - -/** - * Fetches total reserves from the WEUSD protocol - * @returns {Promise} Array of reserve values - * @throws {Error} If unable to fetch reserves after retries - */ -async function getProtocolReserves(retries = CONSTANTS.MAX_RETRIES) { - const reserves = await function_view({ - functionStr: `${CONSTANTS.PROTOCOL.ADDRESS}::${CONSTANTS.PROTOCOL.FUNCTION}`, - type_arguments: [], - args: [], - chain: 'move' - }); - - if (!Array.isArray(reserves) || reserves.length !== 2) { - throw new Error(`Invalid reserves format: ${JSON.stringify(reserves)}`); - } - - return reserves; -} - -/** - * Module exports for TVL calculation - */ -module.exports = { - timetravel: false, - methodology: "TVL consists of total reserves locked in the WEUSD protocol on Movement blockchain.", - move: { - tvl: async (api) => { - const reserves = await getProtocolReserves(); - api.add(CONSTANTS.TOKENS.TOKEN_A, reserves[0]); - api.add(CONSTANTS.TOKENS.TOKEN_B, reserves[1]); - } - } -}; \ No newline at end of file diff --git a/projects/pidao-finance/index.js b/projects/pidao-finance/index.js deleted file mode 100644 index cc57fb54ac8..00000000000 --- a/projects/pidao-finance/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x458B737d87C40252EC11b160C76bb1C53F248b28" -module.exports = ohmTvl(treasury, [ - //busd - [ADDRESSES.bsc.BUSD, false], - //busd-usd - [ADDRESSES.bsc.USDT, false], - //TrueUSD - [ADDRESSES.bsc.BTUSD, false], - //MDEX LP - ["0x149a712378aba63882c1d372739eb47a6fd0e12e", true], - //Pancake LPs - ["0x3991e0988a69e4c8fde46c011dafe55e26fdd18d", true], - //Pancake LPs 1 - ["0xc0d02c7fc87e50a6580c4091d9d76bb7e38b05b8", true], -], "bsc", "0x22d1704817D42bdE262d778bFE097e287151371D", "0x1215ed20aa507578ca352e195016f289e7a17f3a") \ No newline at end of file diff --git a/projects/piedao/index.js b/projects/piedao/index.js deleted file mode 100644 index 133c87ee504..00000000000 --- a/projects/piedao/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { addPools, calculatePies, } = require("./pieDAO.js"); -const { staking } = require('../helper/staking') - -async function tvl(api) { - await Promise.all([ - addPools(api), - calculatePies(api), - ]) -} - -module.exports = { - ethereum: { - staking: staking("0x6Bd0D8c8aD8D3F1f97810d5Cc57E9296db73DC45", "0xad32A8e6220741182940c5aBF610bDE99E737b2D"), - tvl - } -} diff --git a/projects/piedao/ovens.json b/projects/piedao/ovens.json deleted file mode 100644 index 277f6a3b87c..00000000000 --- a/projects/piedao/ovens.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "PLAY": "0x0c4Ff8982C66cD29eA7eA96d985f36aE60b85B1C", - "DEFI++": "0x1d616dad84dd0b3ce83e5fe518e90617c7ae3915", - "BCP": "0xe3d74df89163a8fa1cba540ff6b339d13d322f61", - "YPIE": "0xAedec86DeDe3DEd9562FB00AdA623c0e9bEEb951" -} \ No newline at end of file diff --git a/projects/piedao/pieDAO.js b/projects/piedao/pieDAO.js deleted file mode 100644 index 831a56b5c24..00000000000 --- a/projects/piedao/pieDAO.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); - -const pies_config = require("./pies.json"); -const ovens = require("./ovens.json"); -const tokensAndOwners = Object.values(ovens).map(i => [nullAddress, i]) -tokensAndOwners.push( - ['0xdF5096804705D135656B50b62f9ee13041253D97', '0x3A05D2394F7241e00F4ae90A1f14D9c9c48A1E9B'], - ['0xFAE2809935233d4BfE8a56c2355c4A2e7d1fFf1A', '0xB9a4Bca06F14A982fcD14907D31DFACaDC8ff88E'], - ['0xFAE2809935233d4BfE8a56c2355c4A2e7d1fFf1A', '0x8314337d2b13e1A61EadF0FD1686b2134D43762F'], -) - -const pieABI = { - "totalSupply": "uint256:totalSupply", - "calcTokensForAmount": "function calcTokensForAmount(uint256 _amount) view returns (address[] tokens, uint256[] amounts)" -} -const pieStakingAll = { - "poolCount": "uint256:poolCount", - "getPoolToken": "function getPoolToken(uint256 _poolId) view returns (address)" -} - -async function addPools(api) { - const stakingC = '0x6de77A304609472A4811a0BFD47d8682Aebc29df' - const poolTokens = await api.fetchList({ lengthAbi: pieStakingAll.poolCount, itemAbi: pieStakingAll.getPoolToken, target: stakingC}) - poolTokens.forEach(v => tokensAndOwners.push([v, stakingC])) - return sumTokens2({ api, tokensAndOwners, resolveLP: true, }) -} - -async function calculatePies(api) { - const pies = Object.values(pies_config) - const supplies = await api.multiCall({ abi: pieABI.totalSupply, calls: pies }) - const res = await api.multiCall({ abi: pieABI.calcTokensForAmount, calls: pies.map((v, i) => ({ target: v, params: supplies[i] })) }) - res.map(({ tokens, amounts }) => api.addTokens(tokens, amounts)) -} - -module.exports = { - addPools, - calculatePies, -} diff --git a/projects/piedao/pies.json b/projects/piedao/pies.json deleted file mode 100644 index 42c73a65905..00000000000 --- a/projects/piedao/pies.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "BTC++": "0x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd", - "USD++": "0x9a48bd0ec040ea4f1d3147c025cd4076a2e71e3e", - "DEFI+S": "0xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c", - "DEFI+L": "0x78f225869c08d478c34e5f645d07a87d3fe8eb78", - "DEFI++": "0x8D1ce361eb68e9E05573443C407D4A3Bed23B033", - "BCP": "0xe4f726adc8e89c6a6017f01eada77865db22da14", - "YPIE": "0x17525E4f4Af59fbc29551bC4eCe6AB60Ed49CE31", - "PLAY": "0x33e18a092a93ff21ad04746c7da12e35d34dc7c4" -} \ No newline at end of file diff --git a/projects/piggy-finance/index.js b/projects/piggy-finance/index.js deleted file mode 100644 index a8c5246f1f1..00000000000 --- a/projects/piggy-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - methodology: "Pool2 deposits consist of PIGGY-WAVAX and PSHARE-WAVAX LP tokens deposits while the staking TVL consists of the PSHARES tokens locked within the staking contract(0x4cCc31bfd4b32BFcb9bF148f44FB9CfE75c379AB).", - avax: { - tvl: async () => ({}), - pool2: async () => ({}), - staking: async () => ({}), - }, -}; - - -module.exports.deadFrom = '2023-04-09' \ No newline at end of file diff --git a/projects/piggy/index.js b/projects/piggy/index.js deleted file mode 100644 index 0045af83172..00000000000 --- a/projects/piggy/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const {getLiquityTvl} = require('../helper/liquity') - -const TROVE_MANAGER_ADDRESS = "0xb283466d09177c5C6507785d600caFDFa538C65C"; - -module.exports = { - deadFrom: 1648765747, - start: '2021-06-08', - bsc: { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS) - }, -}; diff --git a/projects/piggybankdao/index.js b/projects/piggybankdao/index.js deleted file mode 100644 index fa5a36a6a6a..00000000000 --- a/projects/piggybankdao/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { stakingPricedLP } = require('../helper/staking') - - -const PB_TOKEN = "0x0E75CDb914DdCcA683357dD94d26Caa39BC14B16" -const LP_TOKEN = "0xd3a6eebbe6f6d9197a7fc2aaaf94d8b0ec51f8a8"; -const STAKING_ADDRESS = "0xE4738791690AF507C8C7Bf5981ef541568C7C312" -const COREASSETNAME = "magic-internet-money"; -const CHAIN = "avax"; - -module.exports={ - deadFrom: 1648765747, - misrepresentedTokens: true, - avax:{ - tvl: () => ({}), - staking: stakingPricedLP(STAKING_ADDRESS, PB_TOKEN, CHAIN, LP_TOKEN, COREASSETNAME, true), - } -} diff --git a/projects/pika-v4/index.js b/projects/pika-v4/index.js deleted file mode 100644 index e3d3705a97c..00000000000 --- a/projects/pika-v4/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - optimism: { - tvl: sumTokensExport({ owners: [ - '0x9b86B2Be8eDB2958089E522Fe0eB7dD5935975AB', - ], tokens: [ADDRESSES.optimism.USDC]}) - } -} \ No newline at end of file diff --git a/projects/pika.js b/projects/pika.js deleted file mode 100644 index 9744d4fae37..00000000000 --- a/projects/pika.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensExport } = require('./helper/unwrapLPs') - -module.exports = { - optimism: { - tvl: sumTokensExport({ owners: [ - '0x2FaE8C7Edd26213cA1A88fC57B65352dbe353698', - '0xD5A8f233CBdDb40368D55C3320644Fb36e597002', - ], tokens: [ADDRESSES.optimism.USDC]}) - } -} \ No newline at end of file diff --git a/projects/pike/index.js b/projects/pike/index.js deleted file mode 100644 index 31e86d38090..00000000000 --- a/projects/pike/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - ethereum: { tokensAndOwners: [ - [ADDRESSES.null, '0xFC7599cfFea9De127a9f9C748CCb451a34d2F063'], - [ADDRESSES.ethereum.USDC, '0x54FD7bA87DDBDb4b8a28AeE34aB8ffC4004687De'] - ]}, - optimism: { tokensAndOwners: [ - [ADDRESSES.optimism.OP, '0x1E65e48532f6Cf9747774777F3f1F6dC6cf0D81b'], - [ADDRESSES.optimism.USDC_CIRCLE, '0x7856493B59cdb1685757A6DcCe12425F6a6666a0'] - ]}, - arbitrum: { tokensAndOwners: [ - [ADDRESSES.arbitrum.ARB, '0x1E65e48532f6Cf9747774777F3f1F6dC6cf0D81b'], - [ADDRESSES.arbitrum.USDC_CIRCLE, '0x7856493B59cdb1685757A6DcCe12425F6a6666a0'] - ]}, - base: { tokensAndOwners: [ - // [ADDRESSES.base.WETH, '0xFC7599cfFea9De127a9f9C748CCb451a34d2F063'], - [ADDRESSES.base.USDC, '0xA9452cA8281556DAfA4C0d3DA3dcaAa184941032'] - ]} -} - -// module.exports.hallmarks=[[1714435200, "Protocol exploit"]] - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/pillar/index.js b/projects/pillar/index.js deleted file mode 100644 index 677e732867e..00000000000 --- a/projects/pillar/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { - getBalances, -} = require('../helper/chain/zilliqa') - -async function tvl() { - const balances = {} - - const TOKENS = [ - "0x4306f921c982766810cf342775fd79aa2d0d0e24", // wrapped ZIL - ] - - const CONTRACT_ADDRESS = '0x323e8105ba12d46e38d31cd674b6a2d16d76e6d1' - const allContracts = [CONTRACT_ADDRESS,] - await getBalances(TOKENS, allContracts, balances) - return balances -} - -module.exports = { - zilliqa: { - tvl, - }, - timetravel: false, -} \ No newline at end of file diff --git a/projects/pilotprotocol/abi.json b/projects/pilotprotocol/abi.json deleted file mode 100644 index 5d060ab47b7..00000000000 --- a/projects/pilotprotocol/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "totalToken": "function totalToken(address token) view returns (uint256)", - "hecoPool": "address:hecoPool", - "hecoPoolId": "uint256:hecoPoolId", - "userInfo": "function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt, uint256 multLpRewardDebt)", - "stakingToken": "address:stakingToken" -} \ No newline at end of file diff --git a/projects/pilotprotocol/index.js b/projects/pilotprotocol/index.js deleted file mode 100644 index 716ecb8ba2d..00000000000 --- a/projects/pilotprotocol/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - heco: { - tvl: () => ({}), - }, -}; - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/pine-protocol/index.js b/projects/pine-protocol/index.js deleted file mode 100644 index 7e21cdfb1f3..00000000000 --- a/projects/pine-protocol/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs, getAddress } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') -const { sliceIntoChunks } = require('../helper/utils') - -async function _getLogs(api) { - const { factory, fromBlock } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - topics: ['0xfe735a4766d74f0c8b076be3f254cfc301a851f3ac49c4ae35e7d48ab75cd69d'], - fromBlock, - }) - return logs.map(i => i.topics.slice(1).map(getAddress)) -} - -async function tvl(api) { - const { factory, wrapped } = config[api.chain] - const logs = await _getLogs(api) - const tokensAndOwners = logs.map(i => [i[1], i[0]]) - tokensAndOwners.push([wrapped, factory]) - return sumTokens2({ api, tokensAndOwners, permitFailure: true, sumChunkSize: 20 }) -} - -async function borrowed(api) { - const balances = {} - const allLogs = await _getLogs(api) - for (const logs of sliceIntoChunks(allLogs, 30)) { - const loans = await api.multiCall({ abi: 'uint256:_currentLoanAmount', calls: logs.map(i => i[0]) }) - loans.forEach((val, i) => sdk.util.sumSingleBalance(balances, logs[i][2], val, api.chain)) - } - - return balances -} - -const config = { - ethereum: { factory: '0x19c56cb20e6e9598fc4d22318436f34981e481f9', fromBlock: 16423090, wrapped: ADDRESSES.ethereum.WETH, }, - polygon: { factory: '0x85b609f4724860fead57e16175e66cf1f51bf72d', fromBlock: 40378130, wrapped: ADDRESSES.polygon.WMATIC_2, }, -} - -module.exports = { - methodology: 'value of NFTs locked in pools as taken as tvl, tokens borrowed against it is counted towards borrowed', -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed, } -}) \ No newline at end of file diff --git a/projects/pingu/index.js b/projects/pingu/index.js deleted file mode 100644 index c2ae572bd8e..00000000000 --- a/projects/pingu/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const fundStore = "0x7Cc41ee3Cba9a1D2C978c37A18A0d6b59c340224"; // FundStore -const PINGU = "0x83E60B9F7f4DB5cDb0877659b1740E73c662c55B"; // PINGU -const assets = [nullAddress, ADDRESSES.arbitrum.USDC_CIRCLE] // ETH, USDC - -module.exports = { - start: '2024-01-10', - arbitrum: { - tvl: sumTokensExport({ owners: [fundStore], tokens: assets }), - staking: sumTokensExport({ owners: [fundStore], tokens: [PINGU] }), - }, -} diff --git a/projects/pinjam/index.js b/projects/pinjam/index.js deleted file mode 100644 index 843f5fdf342..00000000000 --- a/projects/pinjam/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const { getLogs, getAddress } = require('../helper/cache/getLogs') -const { staking } = require("../helper/staking"); - -const stakingContract = "0x6413707acd0eF29E54e4f7eE931bb00575868eA4"; -const PINKAV = "0xE5274E38E91b615D8822e8512a29A16FF1B9C4Af"; -const config = { - kava: { lendingPool: "0x11C3D91259b1c2Bd804344355C6A255001F7Ba1e", fromBlock: 5281411, }, -}; - -async function getTokens(api) { - const { lendingPool, fromBlock } = config[api.chain] - const logs = await getLogs({ - api, - target: lendingPool, - topics: ['0x9f8f649e3f624ae845ed20c597f2841f852ba62903a53736c2b36d67869ca919'], - fromBlock, - }) - return logs.map(log => getAddress(log.topics[1])) -} - -async function tvl(api) { - const { lendingPool } = config[api.chain] - const tokens = await getTokens(api) - const bals = await api.multiCall({ abi: abi.getTotalLiquidity, calls: tokens, target: lendingPool }) - const borrows = await api.multiCall({ abi: abi.getTotalDebt, calls: tokens, target: lendingPool }) - api.addTokens(tokens, bals) - api.addTokens(tokens, borrows.map(i => i * -1)) -} - -async function borrowed(api) { - const { lendingPool } = config[api.chain] - const tokens = await getTokens(api) - const bals = await api.multiCall({ abi: abi.getTotalDebt, calls: tokens, target: lendingPool }) - api.addTokens(tokens, bals) -} - -module.exports = { - methodology: - "Counts the total tokens supplied to the lending pool and the total tokens borrowed from the lending pool.", - kava: { - staking: staking(stakingContract, PINKAV), - }, - hallmarks: [ - [1688670115, "Multichain Exploit"], -], -}; - - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - ...(module.exports[chain] || {}), - tvl, borrowed, - } -}) - -const abi = { - "getSupportedAsset": "function getSupportedAsset(uint256 _index) view returns (address)", - "getTotalDebt": "function getTotalDebt(address _underlyingAsset) view returns (uint256)", - "getTotalLiquidity": "function getTotalLiquidity(address _underlyingAsset) view returns (uint256)", -} diff --git a/projects/pinkpea/index.js b/projects/pinkpea/index.js deleted file mode 100644 index 28dfa17d29d..00000000000 --- a/projects/pinkpea/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const vaultsList = [ - "0x27A8432Fa94b2B33dfB77C4Ff2a5018b7e4bc975", - "0x0aC81555c63011cB7269baf03e7f4B4bC2F7C60d", - "0xe74ed82644c522b651b5D0281A2340E25ac497D3", - "0xbbD431586F068eA2c4e846063a65ee7898A8fCEd", - "0x756cB1EAB774108195229bcd3c13f5e15d26557F", - "0x36Ab516a4D0FC0Fbf9540436b0D406b4b8C624B1", - "0x2ea50f6A3623B4C08C58A40Cce715ed372f0e0B1", - "0xd624E3D7921D534A251F60AC2d2eBDE6Ad046e21", - "0x6cB6C36A3EE279ef63F8154b1BA21E65D87daF64", - "0x158EBFB9b3021908C937921bE434a3C6BB755d19", - "0x90C6CB346274c0CbF1eA9c2b42D78Ab74da0166e", - "0x3FA7b079EA5e9D4d98A5C4C60355124B0a9eDcc9", - "0x6060E56BE05783A1A7Ca385706A50Cf17E146e29", - "0x53ff774ebE8Bf7E03df8D73D3E9915b2Ca4eC40E", -] - -async function tvl(api) { - return api.erc4626Sum({ calls: vaultsList }) -} - -module.exports = { - aurora: { - tvl, - }, -}; diff --git a/projects/pinksale/abi.js b/projects/pinksale/abi.js deleted file mode 100644 index 2875bdc4f0c..00000000000 --- a/projects/pinksale/abi.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - getTotalLockCount: "uint256:getTotalLockCount", - getLock: "function getLock(uint256 index) view returns (tuple(uint256 id, address token, address owner, uint256 amount, uint256 lockDate, uint256 unlockDate))", - getLockAt: "function getLockAt(uint256 index) view returns (tuple(uint256 id, address token, address owner, uint256 amount, uint256 lockDate, uint256 tgeDate, uint256 tgeBps, uint256 cycle, uint256 cycleBps, uint256 unlockedAmount, string description))", -} \ No newline at end of file diff --git a/projects/pinksale/api.js b/projects/pinksale/api.js deleted file mode 100644 index c0b96276530..00000000000 --- a/projects/pinksale/api.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./index') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("pinksale", chainKeys), -} diff --git a/projects/pinksale/apiCache.js b/projects/pinksale/apiCache.js deleted file mode 100644 index 1b5997a43f4..00000000000 --- a/projects/pinksale/apiCache.js +++ /dev/null @@ -1,68 +0,0 @@ -const sdk = require("@defillama/sdk") -const abi = require('./abi') -const config = require('./config') -const { getUniqueAddresses } = require('../helper/utils') -const { getCache, setCache, } = require("../helper/cache") -const { vestingHelper, } = require("../helper/unknownTokens") - -const project = 'bulky/pinksale' - -module.exports = {} - -async function runInBatches(items, batchSize, fn) { - for (let i = 0; i < items.length; i += batchSize) { - await Promise.all(items.slice(i, i + batchSize).map(fn)) - } -} - -const tvl = async (api) => { - const balances = {} - const cache = await getCache(project, api.chain || { vaults: {} }) - const { vaults, blacklist, log_coreAssetPrices, log_minTokenValue, } = config[api.chain] - - await Promise.all( - vaults.map(async (vault, idx) => { - if (!cache.vaults) cache.vaults = {} - if (!cache.vaults[vault]) cache.vaults[vault] = { lastTotalId: 0, tokens: [] } - const cCache = cache.vaults[vault] - - const size = await api.call({ target: vault, abi: abi.getTotalLockCount }) - const isLastVault = idx === vaults.length - 1 - const lockAbi = isLastVault ? abi.getLockAt : abi.getLock - - const calls = Array.from({ length: +size - cCache.lastTotalId }, (_, i) => ({ target: vault, params: i + cCache.lastTotalId })) - cCache.lastTotalId = +size - - const tokens = await api.multiCall({ abi: lockAbi, calls, permitFailure: true }) - tokens.forEach(({ token } = {}) => token && cCache.tokens.push(token)) - cCache.tokens = getUniqueAddresses(cCache.tokens.filter(i => i)) - }) - ) - - await runInBatches(vaults, 5, async (vault) => { - const cCache = cache.vaults[vault] - - const balance = await vestingHelper({ - cache, - useDefaultCoreAssets: true, - blacklist, - owner: vault, - tokens: cCache.tokens, - block: api.block, - chain: api.chain, - log_coreAssetPrices, - log_minTokenValue, - }) - - Object.entries(balance).forEach(([token, bal]) => - sdk.util.sumSingleBalance(balances, token, bal) - ) - }) - - await setCache(project, api.chain, cache) - return balances -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/pinksale/config.js b/projects/pinksale/config.js deleted file mode 100644 index 7ab274dc815..00000000000 --- a/projects/pinksale/config.js +++ /dev/null @@ -1,65 +0,0 @@ -module.exports = { - bsc: { - vaults: [ - '0x7ee058420e5937496F5a2096f04caA7721cF70cc', - '0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE', - ], - blacklist: [ - '0x602ba546a7b06e0fc7f58fd27eb6996ecc824689', - '0x17e65e6b9b166fb8e7c59432f0db126711246bc0', - '0xee6cacddd3a9370d87db581ee6728226883578e5', - '0x6d163b653010740bfb41bed4bee23f94b3285cba', - '0xb0228eb6c0b49f8265e6e161c3a987eed7471f42', - '0x9888d3d9fbc12487259d1c82665b2ffd009936c6', - '0x49a9f9a2271d8c5da44c57e7102aca79c222f4a9', - '0x25f6212eb410e22956856ccb0383ec1a86fceaf9', - '0x851b7cb21d7428fa1ed87a7c45da8048079b0a90', - '0xb08f67c04bfdf069017365969ca19a0ae6e66b85', - '0x4aee9d30893c5c73e5a5b8637a10d9537497f1c8', - '0x9FBff386a9405b4C98329824418ec02b5C20976b', - '0xa0b3c4f174f4bb51039adaecf2af0e4ef5925f7d', - '0xde65be98bfc08a3150a491dfa84df8b02ba6c6ac', - ], - log_coreAssetPrices: [ - 300/ 1e18, - 1/ 1e18, - 1/ 1e18, - 1/ 1e18, - ], - log_minTokenValue: 1e6, - }, - ethereum: { - vaults: [ - '0x33d4cC8716Beb13F814F538Ad3b2de3b036f5e2A', - '0x71B5759d73262FBb223956913ecF4ecC51057641', - ], - blacklist: [ - '0xd626661e2d4f93a1c4122d386fa9ea0f62b5ab0b', - ], - }, - polygon: { - vaults: [ - '0x5fb71Dbf7248a01bf96cE2AB2DA34EEAbE58c261', - '0x6C9A0D8B1c7a95a323d744dE30cf027694710633', - ], - }, - avax: { - vaults: [ - '0x4DffB05d1Bc222A2852799e2076e956acb589322', - '0x9479C6484a392113bB829A15E7c9E033C9e70D30', - ], - }, - fantom: { - vaults: [ - '0xdd6e31a046b828cbbafb939c2a394629aff8bbdc', - '0x0E1757b9d6501e60B2e4Ca0D000e49532948CF6c', - ], - }, - cronos: { - vaults: [ - '0xdD6E31A046b828CbBAfb939C2a394629aff8BBdC', - '0x102137A9F278B013419332f82aCEA429D944Fc34', - ], - }, - -} \ No newline at end of file diff --git a/projects/pinksale/index.js b/projects/pinksale/index.js deleted file mode 100644 index 0a351c24994..00000000000 --- a/projects/pinksale/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = require("./apiCache") - diff --git a/projects/pinkswap/abi.json b/projects/pinkswap/abi.json deleted file mode 100644 index 20c2adfc838..00000000000 --- a/projects/pinkswap/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "allPairs": "function allPairs(uint256) view returns (address)", - "allPairsLength": "uint256:allPairsLength" -} \ No newline at end of file diff --git a/projects/pinkswap/index.js b/projects/pinkswap/index.js deleted file mode 100644 index ebd03620030..00000000000 --- a/projects/pinkswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -const FACTORY = '0x7D2Ce25C28334E40f37b2A068ec8d5a59F11Ea54' -const pinksToken = '0x702b3f41772e321aacCdea91e1FCEF682D21125D' -const masterChef = '0xe981676633dCf0256Aa512f4923A7e8DA180C595' - -module.exports = { - bsc: { - tvl: getUniTVL({ - factory: FACTORY, - useDefaultCoreAssets: true, - }), - staking: staking(masterChef, pinksToken), - } -} \ No newline at end of file diff --git a/projects/pinnako/index.js b/projects/pinnako/index.js deleted file mode 100644 index 05273454765..00000000000 --- a/projects/pinnako/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - era: { - tvl: sumTokensExport({ - owner: '0x87A43dfAB5068c9Ae2f75da2906559bc9A71b42d', - tokens: [ - ADDRESSES.era.WETH, - ADDRESSES.era.WBTC, - ADDRESSES.era.USDC, - ADDRESSES.era.USDT, - ] - }), - staking: sumTokensExport({ owner: '0x2A283C805D11ad77161Be0c503805a2b8Bc7Fd84', tokens: ['0xf8C6dA1bbdc31Ea5F968AcE76E931685cA7F9962'] }), - }, -} diff --git a/projects/pinto/index.js b/projects/pinto/index.js deleted file mode 100644 index 4eb3a9f691a..00000000000 --- a/projects/pinto/index.js +++ /dev/null @@ -1,184 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const ADDR = { - base: { - DIAMOND: "0xd1a0d188e861ed9d15773a2f3574a2e94134ba8f", - PINTO: "0xb170000aeefa790fa61d6e837d1035906839a3c8", - PINTOWETH: "0x3e11001cfbb6de5737327c59e10afab47b82b5d3", - PINTOCBETH: "0x3e111115a82df6190e36adf0d552880663a4dbf1", - PINTOCBBTC: "0x3e11226fe3d85142b734abce6e58918d5828d1b4", - PINTOWSOL: "0x3e11444c7650234c748d743d8d374fce2ee5e6c9", - PINTOUSDC: "0x3e1133ac082716ddc3114bbefeed8b1731ea9cb1", - // Underlying non-pinto tokens - WETH: ADDRESSES.base.WETH, - CBETH: ADDRESSES.base.cbETH, - CBBTC: ADDRESSES.ethereum.cbBTC, - WSOL: "0x1c61629598e4a901136a81bc138e5828dc150d67", - USDC: ADDRESSES.base.USDC - } -}; - -const DEPLOYMENT = 1732035400; - -// List of whitelisted pools and time time periods they are valid -const ALL_POOLS = { - base: { - [ADDR.base.PINTOWETH]: { - startTime: DEPLOYMENT, - endTime: Number.MAX_SAFE_INTEGER, - underlying: [ADDR.base.PINTO, ADDR.base.WETH] - }, - [ADDR.base.PINTOCBETH]: { - startTime: DEPLOYMENT, - endTime: Number.MAX_SAFE_INTEGER, - underlying: [ADDR.base.PINTO, ADDR.base.CBETH] - }, - [ADDR.base.PINTOCBBTC]: { - startTime: DEPLOYMENT, - endTime: Number.MAX_SAFE_INTEGER, - underlying: [ADDR.base.PINTO, ADDR.base.CBBTC] - }, - [ADDR.base.PINTOWSOL]: { - startTime: DEPLOYMENT, - endTime: Number.MAX_SAFE_INTEGER, - underlying: [ADDR.base.PINTO, ADDR.base.WSOL] - }, - [ADDR.base.PINTOUSDC]: { - startTime: DEPLOYMENT, - endTime: Number.MAX_SAFE_INTEGER, - underlying: [ADDR.base.PINTO, ADDR.base.USDC] - } - }, -}; - -function invalidTime(api) { - return api.timestamp < DEPLOYMENT; -} - -// Returns the whitelilisted pools for the given timestamp -function getPools(api) { - const { chain, timestamp } = api; - const pools = []; - for (const contract in ALL_POOLS[chain]) { - const pool = ALL_POOLS[chain][contract]; - if (timestamp >= pool.startTime && timestamp <= pool.endTime) { - pools.push(contract); - } - } - return pools; -} - -// Gets the total supply of the given erc20 token -async function getTotalSupply(api, token) { - const tokenSupply = await api.call({ - abi: 'erc20:totalSupply', - target: token - }); - return Number(tokenSupply); -} - -// Gets the reserves of the requested pool -async function getPoolReserves(api, pool) { - - pool = pool.toLowerCase(); - const poolBalances = await api.multiCall({ - calls: ALL_POOLS[api.chain][pool].underlying.map(token => ({ - target: token, - params: pool - })), - abi: 'erc20:balanceOf' - }); - - return poolBalances.map((balance, i) => ({ token: ALL_POOLS[api.chain][pool].underlying[i], balance })); -} - -// Returns the total silo'd amount of the requested token -async function getSiloDeposited(api, token) { - const deposited = await api.call({ - abi: "function getTotalDeposited(address) external view returns (uint256)", - target: ADDR[api.chain].DIAMOND, - params: token - }); - const germinating = await api.call({ - abi: "function getGerminatingTotalDeposited(address) external view returns (uint256)", - target: ADDR[api.chain].DIAMOND, - params: token - }); - return parseInt(deposited) + parseInt(germinating); -} - -/** - * Returns the balances of the underlying tokens in the given pools of the given ratios - * @param {*} api - * @param {string[]} pools - the pools to calculate the balances for - * @param {number[]} ratios - proportions of the pool underlying to credit towards the resulting balance - */ -async function getPooledBalances(api, pools, ratios) { - - const pooledTokenBalances = {}; - - const poolReserves = await Promise.all(pools.map(pool => getPoolReserves(api, pool))); - - for (let i = 0; i < pools.length; ++i) { - const reserves = poolReserves[i]; - for (const reserve of reserves) { - const ratioAmount = reserve.balance * ratios[i]; - pooledTokenBalances[reserve.token] = (pooledTokenBalances[reserve.token] ?? 0) + ratioAmount; - } - } - return pooledTokenBalances; -} - -// Pinto deposited in the Silo -async function staking(api) { - if (invalidTime(api)) { - return {}; - } - return { - [`${api.chain}:${ADDR.base.PINTO.toLowerCase()}`]: await getSiloDeposited(api, ADDR.base.PINTO) - } -} - -// Tokens in liquidity pools corresponding to LP tokens that are deposited in the Silo -async function pool2(api) { - if (invalidTime(api)) { - return {}; - } - - // Get the amount of LP tokens deposited in the silo - const pools = getPools(api); - const poolPromises = pools.map(pool => [ - getSiloDeposited(api, pool), - getTotalSupply(api, pool) - ]); - // And determine how much of the pooled tokens correspond to those deposits - const flatResolved = await Promise.all(poolPromises.flat()); - const ratios = []; - for (let i = 0; i < flatResolved.length; i += 2) { - if (flatResolved[i + 1] !== 0) { - ratios.push(flatResolved[i] / flatResolved[i + 1]); - } else { - ratios.push(0); - } - } - - // Gets the underlying token balances for deposited LP tokens - const pool2Balances = await getPooledBalances(api, pools, ratios); - - // Add chain info - const retval = {}; - for (const token in pool2Balances) { - retval[`${api.chain}:${token.toLowerCase()}`] = pool2Balances[token]; - } - return retval; -} - -module.exports = { - methodology: "Counts the value of deposited Pinto and LP tokens in the Silo.", - start: '2024-11-19', - base: { - tvl: () => ({}), - pool2, - staking - }, -}; diff --git a/projects/pinyottas.js b/projects/pinyottas.js deleted file mode 100644 index eaed77f674a..00000000000 --- a/projects/pinyottas.js +++ /dev/null @@ -1,15 +0,0 @@ -const pinyottasContract = '0x2861e4d8e26b10029e5cd1d236239f810c664b99' - -const abi = { - getTokenContractsInPinyotta: "function getTokenContractsInPinyotta(uint256 _id) view returns (address[] tokenContracts)", -} - -async function tvl(api) { - const tokens = await api.fetchList({ lengthAbi: 'totalSupply', itemAbi: abi.getTokenContractsInPinyotta, target: pinyottasContract, startFromOne: true }) - return api.sumTokens({ tokens: tokens.flat(), owner: pinyottasContract, }) -} - -module.exports = { - methodology: `Pinyottas are ERC-721 contracts which hold a given amount of ERC20 token. Get pinyottas count, then for each, get contract of token held in the pinyotta and amount (which is zero if pinyotta has been busted so tokens were retrieved)`, - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/pionex-cex/index.js b/projects/pionex-cex/index.js deleted file mode 100644 index 6ef048c5df6..00000000000 --- a/projects/pionex-cex/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - "0xf6d4e5a7c5215f91f59a95065190cca24bf64554", - "0x2a8a276019d3ec549ae657c945ef60aab4e33c9b", - "0xa008dc1281aa6bff98b2c253ee8fd759ba918103", - "0x28410a70acc5f01e4efe892bcc38b70f3bcf014b", - "0x4608fbf5fd78879ba0a75c6c0b0f5e53e188d3e2", - "0x5e483d7803a8b39f0d6792a0431176a91fde6e31", - "0x7175a01564ac4a83dd396e288a2707dee86caf63", - "0x4998cb57364531560f4048213ba9b529ec27f14f", - "0x02104cae462af17739cc4315ef9ac710a9ed22a7", - "0x3c22c17501047d862b3a98e296079966aefd8df7", - "0xbbb72ba600d8493fea284d5fe44919f7b60d53f5", - "0x67be8ce27ef8158d51d8593bb5b26eafacc955d9", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.pionexCex, - }, - tron: { - owners: [ - "TYULGbfdheMSQBv7skFxNbgo7mbNjsWSrF", - "TDr8tDBgYLtrfPmC4erXp7eRgvVNM32EKp", - "TQZPjLBwG8JW7J8LJ3vBbXU6UxAyxH1367", - "TDe3wqxhTSPimeQkJVKNBkCjRnUj839MKj", - "TGMX4ipWLrjqZq7yM4cGVNr124BFrRYtWz", - "TJZj4RS6v6U3HCpTSJ7CwNycRcoi7BREGx", - "TLK8GVBqJNmcyaN5mpSPSzQfTjsSxb7sC9", - "TGgMNPxdyUgdYwMSbMkpTPvaSkrRakKqcK", - "TAA7sxJ259JgstGPjanb5sB6ZJuCPtCobs", - "TKRksVBKDBATKcifm4FXFHcD1FmJQ2bp3x" - ], - }, - solana: { - owners:[ - "DGFW1Effv88XzXkgfgyoFfmefzEU5Pp9zWJACBmCSh8K", - "FXv8hUveo3Di254W5vycvouxrmTJG4oQ5QMm1tLhY3NF" - ] - }, - bsc: { - owners:[ - "0xF6D4E5a7c5215F91f59a95065190CCa24bf64554", - "0x67be8ce27ef8158d51d8593bb5b26eafacc955d9" - ] - }, - optimism:{ - owners: [ - "0xF6D4E5a7c5215F91f59a95065190CCa24bf64554" - ] - }, - arbitrum: { - owners: [ - "0xF6D4E5a7c5215F91f59a95065190CCa24bf64554", - "0x67be8ce27ef8158d51d8593bb5b26eafacc955d9" - ] - }, - avax: { - owners: [ - "0xF6D4E5a7c5215F91f59a95065190CCa24bf64554", - ] - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/piperx-v2/index.js b/projects/piperx-v2/index.js deleted file mode 100644 index c4cb8abd933..00000000000 --- a/projects/piperx-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'sty': '0x6D3e2f58954bf4E1d0C4bA26a85a1b49b2e244C6' -}) \ No newline at end of file diff --git a/projects/piperx-v3/index.js b/projects/piperx-v3/index.js deleted file mode 100644 index 69497a9ba05..00000000000 --- a/projects/piperx-v3/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - 'sty': { factory: '0xb8c21e89983B5EcCD841846eA294c4c8a89718f1', fromBlock: 1 } -}) \ No newline at end of file diff --git a/projects/pippifinance/abi.json b/projects/pippifinance/abi.json deleted file mode 100644 index e2b89b8c850..00000000000 --- a/projects/pippifinance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accWardenPerShare)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/pippifinance/index.js b/projects/pippifinance/index.js deleted file mode 100644 index 72133360fe5..00000000000 --- a/projects/pippifinance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const PIPPI_FACTORY = "0x979efE7cA072b72d6388f415d042951dDF13036e"; - -module.exports = { - heco: { - tvl: getUniTVL({ - factory: PIPPI_FACTORY, - useDefaultCoreAssets: true, - }), - }, -}; - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/pirate-dao/index.js b/projects/pirate-dao/index.js deleted file mode 100644 index 79fbbf03359..00000000000 --- a/projects/pirate-dao/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const {ohmTvl} = require("../helper/ohm"); - -const jolly = "0x30ff717fc266f2dcb3adc1af4043f8c517491e66"; -const jollyStaking = "0xDd9a1371035a7483E77Ebb95903816D73DE1B2b4"; -const treasury = "0x661eaa3754a78e223bdc470f32f8305bfe777112"; -const treasuryTokens = [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0x3ff63b999749ca19e254caade820ed73d580ec69", true], // JOLLY-MIM JLP -] -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "avax", jollyStaking, jolly, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/pirex/index.js b/projects/pirex/index.js deleted file mode 100644 index 807ee9e0345..00000000000 --- a/projects/pirex/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const PirexCVX = "0x35A398425d9f1029021A92bc3d2557D42C8588D7"; -const pxGMX = "0x9a592b4539e22eeb8b2a3df679d572c7712ef999"; -const pxGLP = "0x0eac365e4d7de0e293078bd771ba7d0ba9a4c892" -const GMX = ADDRESSES.arbitrum.GMX; -const GLP = "0x4277f8F2c384827B5273592FF7CeBd9f2C1ac258"; -const BTRFLY = "0xc55126051B22eBb829D00368f4B12Bde432de5Da"; -const pxBTRFLY = "0x10978Db3885bA79Bf1Bc823E108085FB88e6F02f"; - -async function ethereum(api) { - const balances = {}; - const chain = "ethereum"; - - const { locked: lockedCVX } = await api.call({ - abi: "function balances(address) view returns (uint112 locked, uint112 boosted, uint32 nextUnlockIndex)", - target: ADDRESSES.ethereum.vlCVX, - params: [PirexCVX], - }); - const { output: pxBTRFLYSupply } = await sdk.api.erc20.totalSupply({ - target: pxBTRFLY, - chain - }); - - sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.CVX, lockedCVX); - sdk.util.sumSingleBalance(balances, BTRFLY, pxBTRFLYSupply, chain); - - return balances; -} - -async function arbitrum() { - const balances = {}; - const chain = "arbitrum"; - - const { output: pxGMXSupply } = await sdk.api.erc20.totalSupply({ - target: pxGMX, - chain, - }); - const { output: pxGLPSupply } = await sdk.api.erc20.totalSupply({ - target: pxGLP, - chain, - }); - - sdk.util.sumSingleBalance(balances, GMX, pxGMXSupply, chain); - sdk.util.sumSingleBalance(balances, GLP, pxGLPSupply, chain); - - return balances; -} - -module.exports = { - methodology: "TVL = Total value of tokens locked in Pirex Vaults", - ethereum: { - tvl: ethereum, - }, - arbitrum: { - tvl: arbitrum, - }, -}; diff --git a/projects/pit/index.js b/projects/pit/index.js deleted file mode 100644 index b010ed3c2b2..00000000000 --- a/projects/pit/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -async function tvl(api) { - let data = await getConfig('pit/' + api.chain, `https://ydaemon.pit.finance/vaults/all?chainids=${api.chainId}&limit=100000`) - let strategies = data.map(v => v.strategies ?? []).flat().map(v => v.address.toLowerCase()) - let vaults = data.filter(i => i.tvl.tvl > 0).map(v => v.address.toLowerCase()).filter(i => !strategies.includes(i)) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - const calls = [...vaults] - bals.forEach((bal, i) => { - if (+bal === 0) - calls[i] = nullAddress // skip empty vaults - }) - const tokens = await api.multiCall({ abi: 'address:token', calls, permitFailure: true }) - - tokens.forEach((token, i) => { - if (token) - calls[i] = nullAddress // skip vaults that have a token - }) - const tokensAlt = await api.multiCall({ abi: 'address:asset', calls, permitFailure: true }) - bals.forEach((bal, i) => { - const token = tokens[i] || tokensAlt[i] - if (token) api.add(token, bal) - }) - - // directional vaults - const directionalVaults = [ - "0x64bb275066E7275FB0803c3e617Ae3ab2A882fF3", - "0x634B69cC4168Cfc1c366078FDeB874AfFBb478b5", - "0x088dBBeEC1489c557f8D4fD6146E0590E303d7d9", - "0xFFf0d064B1cbf5D4C97D0af56a73a4C7e31DFb0D", - "0x842E97BaA96cFE1534F1A50Da112C7800134656A", - "0x46706780749bC41E7Ab99D13BC1B2a74Df40A7DA", - "0x5DcEFCa5207c58dCbcf41eF017D1D0EB42d83701", - "0x4573382A9d101EB6DFa1C4B448f939c41fF3e81d" - ] - - const directionalTokens = await api.multiCall({ abi: 'address:collateral', calls: directionalVaults, permitFailure: true }) - const directionalATokens = await api.multiCall({ abi: 'address:aToken', calls: directionalVaults, permitFailure: true }) - const tokensAndOwners = [] - directionalVaults.forEach((vault, i) => { - if (directionalTokens[i]) { - tokensAndOwners.push([directionalTokens[i], vault]) - } - if (directionalATokens[i]) { - tokensAndOwners.push([directionalATokens[i], vault]) - } - }) - - return sumTokens2({ api, tokensAndOwners }) -} - -module.exports = { - doublecounted: true -} - -const chains = ['sei'] - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/pixel-swap/index.js b/projects/pixel-swap/index.js deleted file mode 100644 index 291dfbf3e75..00000000000 --- a/projects/pixel-swap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl (api) { - const res = await get("https://api.pixelswap.io/apis/tokens"); - - res.data.tokens.forEach(({ address, tokenBalance }) => { - if (!tokenBalance) return; - api.addTokens(address, tokenBalance) - }) - } - - module.exports = { - ton: { tvl } - }; diff --git a/projects/pixelswap/index.js b/projects/pixelswap/index.js deleted file mode 100644 index f974b5fa5bd..00000000000 --- a/projects/pixelswap/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const FACTORY = "0xD07739a9E9C46D3DedeD97c0edC49cea8BAB1Bb9" -const ZKSYNC_FACTORY = "0x8435bd22e705DCeFCf6EF8b921E6dB534a4E9902" -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true,}) - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, - base: { - tvl: dexTVL, - }, - op_bnb: { - tvl: dexTVL, - }, - linea: { - tvl: dexTVL, - }, - arbitrum: { - tvl: dexTVL, - }, - era: { - tvl: getUniTVL({ - factory: ZKSYNC_FACTORY, - useDefaultCoreAssets: true, - }) - }, - scroll: { - tvl: dexTVL, - } -}; - diff --git a/projects/pizza/index.js b/projects/pizza/index.js deleted file mode 100644 index ac362275f98..00000000000 --- a/projects/pizza/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const {lendingMarket} = require("../helper/methodologies") - -module.exports = { - methodology: `${lendingMarket}. Pizza TVL is achieved by making a call to its Pizza API V2.`, - eos: { - tvl: () => 0, - }, - hallmarks: [ - ['2023-02-16', 'Product is winding down'], - ], - deadFrom: '2023-02-16', -} diff --git a/projects/pizzax/index.js b/projects/pizzax/index.js deleted file mode 100644 index e99bf600850..00000000000 --- a/projects/pizzax/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens") -const ADDRESSES = require('../helper/coreAssets.json') -const LPS = ["0x7cb4161cA48617d438Af3c8E130E4D0D8Ec80823"] -const TOKENS = ["0x488739D593DC2BC13Fd738CBaa35498bad5F8556"] - -module.exports = { - methodology: - "PizzaX is a Defi Miners. A fun platform to generate 15%/Day ROI for Lifetime — Pool as a Service (PAAS)", - bsc: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.null, '0x0c869d0de4f0f3119b96221c0ef4849cb1f1e583'], - [ADDRESSES.bsc.USDT, '0xaE13bba370E2A8D2Fa651C60a4B628CA71615ef0'], - ] - }), - staking: sumTokensExport({ owners: ['0x1A504B8b13AC0e80f235D850FC1484EaA7633B51'], tokens: TOKENS, lps: LPS, useDefaultCoreAssets: true, }), - }, -} \ No newline at end of file diff --git a/projects/planar-finance/index.js b/projects/planar-finance/index.js deleted file mode 100644 index f565087795a..00000000000 --- a/projects/planar-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - start: '2024-05-10', - blast: { - tvl: getUniTVL({ factory: '0xdC401B87Ee940F5050f6a17f49763635653eb496', useDefaultCoreAssets: true,}), - } -}; diff --git a/projects/planet-blue/index.js b/projects/planet-blue/index.js deleted file mode 100644 index 3d78acdae83..00000000000 --- a/projects/planet-blue/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0xa053582601214FEb3778031a002135cbBB7DBa18', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/planet-finance/abi.json b/projects/planet-finance/abi.json deleted file mode 100644 index 9afa66b9bb3..00000000000 --- a/projects/planet-finance/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "wantLockedTotal": "uint256:wantLockedTotal", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accAQUAPerShare, address strat)", - "totalSupply": "uint256:totalSupply", - "exchangeRateStored": "uint256:exchangeRateStored", - "decimals": "uint8:decimals", - "balanceOfGtoken": "uint256:balanceOfGtoken" -} \ No newline at end of file diff --git a/projects/planet-finance/abiNew.json b/projects/planet-finance/abiNew.json deleted file mode 100644 index ea311f415e0..00000000000 --- a/projects/planet-finance/abiNew.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "wantLockedTotal": "uint256:wantLockedTotal", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (uint256 allocPoint, uint256 lastRewardBlock, uint256 accGAMMAPerShare, uint256 accGAMMAPerFactorPerShare, uint256 gammaRewardBoostPercentage, uint256 totalFactor, address want, address strat, address gToken, address iToken, bool isInfinity, bool hasStratRewards, bool isBoosted)", - "totalSupply": "uint256:totalSupply", - "exchangeRateStored": "uint256:exchangeRateStored", - "decimals": "uint8:decimals", - "balanceOfGtoken": "uint256:balanceOfGtoken" -} \ No newline at end of file diff --git a/projects/planet-finance/abiV3.json b/projects/planet-finance/abiV3.json deleted file mode 100644 index 9950acc8aaf..00000000000 --- a/projects/planet-finance/abiV3.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "wantLockedTotal": "uint256:wantLockedTotal", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (uint256 allocPoint, uint256 lastRewardBlock, uint256 accParentGAMMAPerShare, uint256 accGAMMAPerFactorPerShare, uint256 totalEarningFactor, address want, address strat, address pToken, bool hasStratRewards, bool isTimeLocked)", - "totalSupply": "uint256:totalSupply", - "exchangeRateStored": "uint256:exchangeRateStored", - "decimals": "uint8:decimals", - "balanceOfGtoken": "uint256:balanceOfGtoken", - "getTotalAmounts": "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", - "token0": "address:token0", - "token1": "address:token1" -} \ No newline at end of file diff --git a/projects/planet-finance/index.js b/projects/planet-finance/index.js deleted file mode 100644 index 9f33c8a6781..00000000000 --- a/projects/planet-finance/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const abiV3 = require("./abiV3.json"); -const abiNew = require("./abiNew.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking.js"); - -// liquidity pools -async function tvl(api) { - const poolInfo1 = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: '0x0ac58Fd25f334975b1B61732CF79564b6200A933' }) - const poolInfo2 = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: '0xB87F7016585510505478D1d160BDf76c1f41b53d' }) - const poolInfo3 = await api.fetchList({ lengthAbi: abiNew.poolLength, itemAbi: abiNew.poolInfo, target: '0x9EBce8B8d535247b2a0dfC0494Bc8aeEd7640cF9' }) - const poolInfo4 = await api.fetchList({ lengthAbi: abiV3.poolLength, itemAbi: abiV3.poolInfo, target: '0x405960AEAad7Ec8B419DEdb511dfe9D112dFc22d' }) - let allPoolInfos = poolInfo1.concat(poolInfo2).concat(poolInfo3).concat(poolInfo4); - - allPoolInfos = allPoolInfos.filter(el => el.want.toLowerCase() !== "0xC9440dEb2a607A6f6a744a9d142b16eD824A1A3b".toLowerCase() && el.strat.toLowerCase() !== ADDRESSES.null.toLowerCase()) - const tokens = allPoolInfos.map(i => i.want) - const bals = (await api.multiCall({ abi: abi.wantLockedTotal, calls: allPoolInfos.map(i => i.strat), permitFailure: true })).map(i => i ?? 0) - const _totalAmounts = await api.multiCall({ abi: abiV3.getTotalAmounts, calls: tokens, permitFailure: true }) - const totalAmounts = [] - const thetaTokens = [] - const thetaBals = [] - _totalAmounts.forEach((amounts, i) => { - if (amounts) { - totalAmounts.push(amounts) - thetaTokens.push(tokens[i]) - thetaBals.push(bals[i]) - } else { - api.add(tokens[i], bals[i]) - } - }) - const supplies = await api.multiCall({ abi: abiV3.totalSupply, calls: thetaTokens }) - const token0s = await api.multiCall({ abi: abiV3.token0, calls: thetaTokens }) - const token1s = await api.multiCall({ abi: abiV3.token1, calls: thetaTokens }) - for (let i = 0; i < totalAmounts.length; i++) { - const totalSupply = supplies[i] - const token0 = token0s[i] - const token1 = token1s[i] - const vaultAmt = totalAmounts[i] - const ratio = thetaBals[i] / totalSupply - api.add(token0, ratio * vaultAmt.total0) - api.add(token1, ratio * vaultAmt.total1) - } - - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - doublecounted: true, - bsc: { - tvl, - staking: staking("0x60A895073AdC0e5F5a22C60bdfc584D79B5219a1", "0xb3cb6d2f8f2fde203a022201c81a96c167607f15",) - }, -}; diff --git a/projects/planet-green/index.js b/projects/planet-green/index.js deleted file mode 100644 index af9a0197603..00000000000 --- a/projects/planet-green/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { compoundExports, methodology, } = require("../helper/compound"); -const { mergeExports } = require("../helper/utils"); - -const compoundTVL1 = compoundExports( - '0xF54f9e7070A1584532572A6F640F09c606bb9A83', - '0x24664791B015659fcb71aB2c9C0d56996462082F', -) - -const compoundTVL2 = compoundExports( - '0x1e0C9D09F9995B95Ec4175aaA18b49f49f6165A3', - '0x190354707Ad8221bE30bF5f097fa51C9b1EbdB29', -) - -// node test.js projects/planet-green/index.js -module.exports = mergeExports([ -{ bsc: { - tvl: compoundTVL1.tvl -}, }, -{ bsc: compoundTVL2, }, -]); - -module.exports.methodology = methodology; \ No newline at end of file diff --git a/projects/plantbaseswap/index.js b/projects/plantbaseswap/index.js deleted file mode 100644 index 390f6a6c653..00000000000 --- a/projects/plantbaseswap/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') -const PLANT = "0x23082Dd85355b51BAe42248C961E7F83486e7694"; -const FACTORY = "0xA081Ce40F079A381b59893b4Dc0abf8B1817af70" - - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs.`, - base: { - tvl: dexTVL, - staking: sumTokensExport({ - owners: ['0xECBb9E8fc8CAa4f01C7A44d4c8947143a470C352'], - tokens: [PLANT], - }) - } -}; \ No newline at end of file diff --git a/projects/plasma-saving-vaults/index.js b/projects/plasma-saving-vaults/index.js deleted file mode 100644 index 48c0b5d9d8e..00000000000 --- a/projects/plasma-saving-vaults/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const LendingVault = "0xd1074E0AE85610dDBA0147e29eBe0D8E5873a000"; - -module.exports = treasuryExports({ - plasma: { - tokens: [ - ADDRESSES.plasma.USDT0, - '0x5D72a9d9A9510Cd8cBdBA12aC62593A58930a948', - ], - owners: [LendingVault], - }, -}) \ No newline at end of file diff --git a/projects/platinum-finance/index.js b/projects/platinum-finance/index.js deleted file mode 100644 index 1f215b6c563..00000000000 --- a/projects/platinum-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const token = "0xDf15d33875AcF462a8746BF99396F6cCD50E0fFe"; -const share = "0x32D50718bB7813C248ff4891d307EaB6964e965e"; -const masonry = "0x78996E5F9F486D44f74a6896fDD8D7e21780d86a"; -const rewardPool = "0xe39735d9741cbf0b8824a196a5bcb3d729153702"; -const pool2s = [ - "0x9ef3a25c3993a242c229a22c8ab5b3376809137e", - "0x7abcbf6e6f6e2e70065a2bc71b11892327ea5343" -] - - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(token, share, rewardPool, masonry, pool2s, "fantom", undefined, false, pool2s[1]) -} \ No newline at end of file diff --git a/projects/platypus-finance/index.js b/projects/platypus-finance/index.js deleted file mode 100644 index 24b5852261b..00000000000 --- a/projects/platypus-finance/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { cachedGraphQuery } = require('../helper/cache') - -const blacklistedTokens = [] -const query = `{ - pools { - id - name - assetsList { id token { id } } - } -}` - -async function tvl(api) { - if (api.timestamp > +new Date("2023-02-17") / 1e3) blacklistedTokens.push("0xdaCDe03d7Ab4D81fEDdc3a20fAA89aBAc9072CE2") // USP was hacked - const { pools } = await cachedGraphQuery("platypus-finance", sdk.graph.modifyEndpoint('Bu5QPRWGnZB6NxU4S7kAKQZJpY4pHmAq3TV69V1W2Qqw'), query) - const tokensAndOwners = pools.map(i => i.assetsList.map(v => [v.token.id, v.id])).flat() - return sumTokens2({ api, tokensAndOwners, blacklistedTokens }); -} - -module.exports = { - avax: { - tvl, - staking: staking( - "0x5857019c749147eee22b1fe63500f237f3c1b692", - "0x22d4002028f537599be9f666d1c4fa138522f9c8", - ), - }, - hallmarks: [ - // ['2023-02-17', 'Protocol was hacked for $8.5m'], - ['2023-10-12', 'Protocol was hacked for $2m'], - [1716811215,"Acquired by Stable Jack"] - ], -}; diff --git a/projects/plaza-finance/index.js b/projects/plaza-finance/index.js deleted file mode 100644 index 014b6b357ad..00000000000 --- a/projects/plaza-finance/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const PREDEPOSIT = '0xce2fD6e5BFABd5136e1D94A2F1a9f4241c9593D4' -const ETH_POOL = '0x7cA62A2Dc82ca66C620a6a0aC4F986fd98959f6a' -const BALANCER_POOL = '0xE6f687297b59FFa461226748B5891B1704C9A1b7' -const PREDEPOSIT_TOKENS = [ - ADDRESSES.optimism.WETH_1, // WETH - ADDRESSES.base.cbETH, // cbETH - ADDRESSES.bsc.weETH, // weETH - ADDRESSES.base.wstETH, // wstETH - ADDRESSES.optimism.ezETH, // ezETH - ADDRESSES.base.rETH, // rETH - "0xEDfa23602D0EC14714057867A78d01e94176BEA0", // wrsETH -] - -async function tvl(api) { - // Handle PreDeposit TVL pre-launch - await api.sumTokens({ owner: PREDEPOSIT, tokens: PREDEPOSIT_TOKENS }) - - // Handle ETHPool TVL post-launch, where PreDeposit assets were deposited to Balancer and moved to ETHPool - const poolId = await api.call({ abi: 'function getPoolId() view returns (bytes32)', target: BALANCER_POOL }) - const vault = await api.call({ abi: 'address:getVault', target: BALANCER_POOL }) - const { tokens, balances } = await api.call({ - target: vault, - abi: 'function getPoolTokens(bytes32) view returns (address[] tokens, uint256[] balances, uint256)', - params: poolId, - }) - - // Get our ownership ratio - const [totalSupply, poolBalance] = await Promise.all([ - api.call({ target: BALANCER_POOL, abi: 'function getActualSupply() view returns (uint256)' }), - api.call({ target: BALANCER_POOL, abi: 'erc20:balanceOf', params: ETH_POOL }), - ]) - - const ratio = poolBalance / totalSupply - const poolBalances = balances.map(i => i * ratio) - - api.addTokens(tokens, poolBalances) - - return api.getBalances() -} - -module.exports = { - methodology: "Sum of all ETH LSTs/LRTs in the PreDeposit contract pre-launch. ETHPool TVL as balancer tokens post-launch.", - start: 1742839200, - base: { tvl }, - hallmarks: [ - [1742839200,"PreDeposit Launch"], - [1745852400,"ETH Pool Launch"] - ], -} diff --git a/projects/plenty/index.js b/projects/plenty/index.js deleted file mode 100644 index 612b82c3076..00000000000 --- a/projects/plenty/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2, } = require('../helper/chain/tezos') -const { getConfig } = require("../helper/cache") - -const API_URL = 'https://config.mainnet.plenty.network/pools' - -const tvl = async () => { - const data = await getConfig('tezos/plenty', API_URL) - return sumTokens2({ owners: Object.keys(data), includeTezos: true, }) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - start: '2023-01-01', - tezos: { tvl }, -} \ No newline at end of file diff --git a/projects/ploutos/index.js b/projects/ploutos/index.js deleted file mode 100644 index a8390418802..00000000000 --- a/projects/ploutos/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", -}; - -// Ploutos - Aave v3 fork -// AaveProtocolDataProviders -// https://docs.ploutos.money/contracts-addresses -const CONFIG = { - base: ['0x7dcb86dC49543E14A98F80597696fe5f444f58bC'], - arbitrum: ['0x0F65a7fBCb69074cF8BE8De1E01Ef573da34bD59'], - polygon: ['0x6A9b632010226F9bBbf2B6cb8B6990bE3F90cb0e'], - katana: ['0x4DC446e349bDA9516033E11D63f1851d6B5Fd492'], - plasma: ['0x9C48A6D3e859ab124A8873D73b2678354D0B4c0A'], -}; - - -const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: abi.getAllReservesTokens }); - const calls = [] - - poolDatas.map((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => calls.push({ target: pool, params: tokenAddress })); - }); - const reserveData = await api.multiCall({ abi: isBorrowed ? abi.getReserveData : abi.getReserveTokensAddresses, calls, }) - const tokensAndOwners = [] - reserveData.forEach((data, i) => { - const token = calls[i].params - if (isBorrowed) { - api.add(token, data.totalVariableDebt) - api.add(token, data.totalStableDebt) - } else - tokensAndOwners.push([token, data.aTokenAddress]) - }) - - if (isBorrowed) return api.getBalances() - return api.sumTokens({ tokensAndOwners }) -} - -module.exports.methodology = "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending." - -Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - borrowed: (api) => fetchReserveData(api, poolDatas, true), - }; -}); - -module.exports.hallmarks = [ - [1659630089, "Start OP Rewards"], - [1650471689, "Start AVAX Rewards"] -] diff --git a/projects/pls2e/index.js b/projects/pls2e/index.js deleted file mode 100644 index 5a605b75ef6..00000000000 --- a/projects/pls2e/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0x0944AB692786D9104AE9a29778285c41C33c0415', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/plunderswap-v3/index.js b/projects/plunderswap-v3/index.js deleted file mode 100644 index 6cedf4d7d76..00000000000 --- a/projects/plunderswap-v3/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const data = await getConfig('plunderswap', 'https://static.plunderswap.com/PlunderswapPoolPrices.json') - const v3Pairs = data.filter(pair => pair.version === 'V3').map(pair => pair.address) - const token0s = await api.multiCall({ abi: 'address:token0', calls: v3Pairs }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: v3Pairs }) - return sumTokens2({ api, tokensAndOwners2: [token0s.concat(token1s), v3Pairs.concat(v3Pairs)] }) -} - -module.exports = { - zilliqa: { tvl } -} \ No newline at end of file diff --git a/projects/plunderswap/index.js b/projects/plunderswap/index.js deleted file mode 100644 index b3da2db3fd1..00000000000 --- a/projects/plunderswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport, } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('zilliqa', '0xf42d1058f233329185A36B04B7f96105afa1adD2') diff --git a/projects/plur/index.js b/projects/plur/index.js deleted file mode 100644 index 77cd501f9c6..00000000000 --- a/projects/plur/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs, getAddress } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const BUILDER_ADDRESS = '0x5dfee62C78A0E607CCE6A5d4458c328A03275ba2'; -const WETH_ADDRESS = ADDRESSES.blast.WETH - -async function tvl(_, _1, _2, { api }) { - const createPoolLogs = await getLogs({ - api, - fromBlock: 489054, - target: BUILDER_ADDRESS, - topics: ["0x85e6dd046ca5129caaa517b25babd719637bb32968281fef3ede269234eb7250",], - }); - const poolContracts = createPoolLogs.map((i) => getAddress(i.topics[1])); - return sumTokens2({ - api: api, - owners: poolContracts, - token: WETH_ADDRESS - }) -} - -module.exports = { - blast: { - tvl, - } -}; diff --git a/projects/pluto-so/idl.json b/projects/pluto-so/idl.json deleted file mode 100644 index cb5ca018fb9..00000000000 --- a/projects/pluto-so/idl.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "address": "5UFYdXHgXLMsDzHyv6pQW9zv3fNkRSNqHwhR7UPnkhzy", - "metadata": {"name": "pluto", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [ - {"name": "vaultEarn", "discriminator": [255, 18, 25, 189, 255, 106, 176, 136]}, - {"name": "vaultLeverage", "discriminator": [135, 160, 136, 66, 119, 36, 19, 115]} - ], - "events": [], - "errors": [], - "types": [ - { - "name": "vaultEarn", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "isInitialized", "type": "bool"}, - {"name": "version", "type": "u8"}, - {"name": "bump", "type": "u8"}, - {"name": "align0", "type": {"array": ["u8", 5]}}, - {"name": "protocol", "type": "pubkey"}, - {"name": "earnStats", "type": "pubkey"}, - {"name": "creator", "type": "pubkey"}, - {"name": "authority", "type": "pubkey"}, - {"name": "earnConfig", "type": "pubkey"}, - {"name": "vaultLiquidity", "type": "pubkey"}, - {"name": "priceOracle", "type": "pubkey"}, - {"name": "priceFeed", "type": {"array": ["u8", 64]}}, - {"name": "tokenProgram", "type": "pubkey"}, - {"name": "tokenMint", "type": "pubkey"}, - {"name": "tokenDecimal", "type": "u8"}, - {"name": "align1", "type": {"array": ["u8", 7]}}, - {"name": "lastUpdated", "type": "i64"}, - {"name": "unitSupply", "type": "u128"}, - {"name": "unitBorrowed", "type": "u128"}, - {"name": "unitLent", "type": "u128"}, - {"name": "unitLeverage", "type": "u128"}, - {"name": "index", "type": "u128"}, - {"name": "lastIndexUpdated", "type": "i64"}, - {"name": "apy", "type": {"defined": {"name": "rate"}}}, - {"name": "padding1", "type": {"array": ["u64", 64]}} - ] - } - }, - { - "name": "rate", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "lastUpdated", "type": "i64"}, - {"name": "lastValue", "type": "u32"}, - {"name": "align0", "type": {"array": ["u8", 4]}}, - {"name": "lastEmaHourUpdated", "type": "i64"}, - {"name": "emaHourly", "type": "u32"}, - {"name": "align1", "type": {"array": ["u8", 4]}}, - {"name": "lastEmaDayUpdated", "type": "i64"}, - {"name": "ema3d", "type": "u32"}, - {"name": "ema7d", "type": "u32"}, - {"name": "ema14d", "type": "u32"}, - {"name": "ema30d", "type": "u32"}, - {"name": "ema90d", "type": "u32"}, - {"name": "ema180d", "type": "u32"}, - {"name": "ema365d", "type": "u32"}, - {"name": "align2", "type": {"array": ["u8", 4]}}, - {"name": "padding1", "type": {"array": ["u64", 7]}} - ] - } - }, - { - "name": "vaultLeverage", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "isInitialized", "type": "bool"}, - {"name": "version", "type": "u8"}, - {"name": "bump", "type": "u8"}, - {"name": "align0", "type": {"array": ["u8", 5]}}, - {"name": "protocol", "type": "pubkey"}, - {"name": "leverageStats", "type": "pubkey"}, - {"name": "creator", "type": "pubkey"}, - {"name": "authority", "type": "pubkey"}, - {"name": "leverageConfig", "type": "pubkey"}, - {"name": "borrowVault", "type": "pubkey"}, - {"name": "tokenCollateralPriceOracle", "type": "pubkey"}, - {"name": "tokenCollateralPriceFeed", "type": {"array": ["u8", 64]}}, - {"name": "tokenCollateralTokenProgram", "type": "pubkey"}, - {"name": "tokenCollateralTokenMint", "type": "pubkey"}, - {"name": "tokenCollateralVaultLiquidity", "type": "pubkey"}, - {"name": "tokenCollateralTokenDecimal", "type": "u8"}, - {"name": "align1", "type": {"array": ["u8", 7]}}, - {"name": "nativeCollateralPriceOracle", "type": "pubkey"}, - {"name": "nativeCollateralPriceFeed", "type": {"array": ["u8", 64]}}, - {"name": "nativeCollateralTokenProgram", "type": "pubkey"}, - {"name": "nativeCollateralTokenMint", "type": "pubkey"}, - {"name": "nativeCollateralVaultLiquidity", "type": "pubkey"}, - {"name": "nativeCollateralTokenDecimal", "type": "u8"}, - {"name": "align2", "type": {"array": ["u8", 7]}}, - {"name": "lastUpdated", "type": "i64"}, - {"name": "borrowingUnitSupply", "type": "u128"}, - {"name": "borrowingIndex", "type": "u128"}, - {"name": "unitSupply", "type": "u128"}, - {"name": "index", "type": "u128"}, - {"name": "lastIndexUpdated", "type": "i64"}, - {"name": "borrowingApy", "type": {"defined": {"name": "rate"}}}, - {"name": "apy", "type": {"defined": {"name": "rate"}}}, - {"name": "padding1", "type": {"array": ["u64", 64]}} - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/pluto-so/index.js b/projects/pluto-so/index.js deleted file mode 100644 index 77036b99c58..00000000000 --- a/projects/pluto-so/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const { getProvider } = require("../helper/solana"); -const { Program } = require("@coral-xyz/anchor"); -const PlutosoIDL = require("./idl.json"); - -let program - -function getProgram() { - if (!program) { - program = new Program(PlutosoIDL, getProvider()); - } - return program; -} - -async function tvl(api) { - await earnTvl(api) - await leverageTvl(api) -} - -async function borrowed(api) { - return leverageTvl(api, true) -} - -const HNST_VAULT = 'C5uSiUij9P6nWUQBDF8CeJQnYQMeKJWhANRDirGHHD28' - -async function staking(api) { - const pluto = getProgram() - - const earnHnst = await pluto.account.vaultEarn.fetch(HNST_VAULT) - - let unitHnst = earnHnst.unitSupply.toString() / 1e8 - let indexHnst = earnHnst.index.toString() / 1e12 - let amountHnst = unitHnst * indexHnst - - api.add(earnHnst.tokenMint.toString(), amountHnst * (10 ** earnHnst.tokenDecimal)); -} - -async function earnTvl(api) { - const pluto = getProgram() - const vaultData = await pluto.account.vaultEarn.all() - vaultData.forEach(({ publicKey, account }) => { - if (publicKey.toString() === HNST_VAULT) return; - let unit = (account.unitSupply.toNumber() - account.unitBorrowed.toNumber()) / 1e8 - let index = account.index.toString() / 1e12 - let amount = unit * index - api.add(account.tokenMint.toString(), amount * (10 ** account.tokenDecimal)); - }) -} - -async function leverageTvl(api, isBorrow = false) { - const pluto = getProgram() - const vaultData = await pluto.account.vaultLeverage.all() - vaultData.forEach(({ account }) => { - if (isBorrow) { - let unit = account.borrowingUnitSupply.toString() / 1e8 - let index = account.borrowingIndex.toString() / 1e12 - let amount = unit * index - api.add(account.tokenCollateralTokenMint.toString(), amount * (10 ** account.tokenCollateralTokenDecimal)); - } else { - let unit = account.unitSupply.toString() / 1e8 - let index = account.index.toString() / 1e12 - let amount = unit * index - api.add(account.nativeCollateralTokenMint.toString(), amount * (10 ** account.nativeCollateralTokenDecimal)); - } - }) -} - -module.exports = { - timetravel: false, - methodology: "The Total Value Locked (TVL) is calculated as the sum of leveraged position assets and the available assets deposited in Earn Vaults.", - solana: { - staking, - tvl, - // borrowed, - }, - hallmarks: [ - [1733534040, "Referral-only launch"], - ] -}; diff --git a/projects/pluto/index.js b/projects/pluto/index.js deleted file mode 100644 index 284e0bef9f3..00000000000 --- a/projects/pluto/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokens, } = require('../helper/chain/waves') - -// https://wavesexplorer.com/addresses/3P3a1jssxc2CGdyC7SGbTJc9ZvTjZ5jBMLZ -module.exports = { - timetravel: false, - waves: { - tvl: () => ({}), - staking: api => sumTokens({ api, owners: ['3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q'] }) - } -} \ No newline at end of file diff --git a/projects/plutusDAO/index.js b/projects/plutusDAO/index.js deleted file mode 100644 index 55891a81412..00000000000 --- a/projects/plutusDAO/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking, } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const plutusToken = "0x51318B7D00db7ACc4026C88c3952B66278B6A67F"; - -const SYK = "0xacc51ffdef63fb0c014c882267c3a17261a5ed50"; -const plsSYK = "0x68d6d2545f14751baf36c417c2cc7cdf8da8a15b"; -const DPX = '0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55' -const plsDPX = '0xF236ea74B515eF96a9898F5a4ed4Aa591f253Ce1' -const SPA = '0x5575552988a3a80504bbaeb1311674fcfd40ad4b' -const plsSpa = "0x0D111e482146fE9aC9cA3A65D92E65610BBC1Ba6"; -const GRAIL = "0x3d9907f9a368ad0a51be60f7da3b97cf940982d8" -const plsGrail = "0x9e6B748d25Ed2600Aa0ce7Cbb42267adCF21Fd9B"; -const plsRdntv2 = "0x6dbf2155b0636cb3fd5359fccefb8a2c02b6cb51"; - -const plutusStakingContracts = [ - "0x27Aaa9D562237BF8E024F9b21DE177e20ae50c05", - "0xE59DADf5F7a9decB8337402Ccdf06abE5c0B2B3E", - "0xBEB981021ed9c85AA51d96C0c2edA10ee4404A2e", - "0xE9645988a5E6D5EfCc939bed1F3040Dba94C6CbB" -]; - -async function tvl(api) { - const plsGrailSupply = await api.call({ abi: 'erc20:totalSupply', target: plsGrail, permitFailure: true, }) - if (plsGrailSupply) { - const grailBal = await api.call({ abi: 'function usersAllocation(address) view returns (uint256)', target: '0x5422AA06a38fd9875fc2501380b40659fEebD3bB', params: '0x6ceD01518Efd0487EEbeBdD0D33a093adc8e39Ae' }) - api.add(GRAIL, grailBal) - } - - const plsTokens = [plsSpa, plsSYK, plsDPX] - const uTokens = [SPA, SYK, DPX] - - const tokenSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: plsTokens, permitFailure: true, }) - - tokenSupplies.forEach((supply, idx) => { - if (supply) api.add(uTokens[idx], supply) - }) - - - // calcluate plsRdntv2 TVL - const plsRNDTSupply = await api.call({ abi: 'erc20:totalSupply', target: plsRdntv2, permitFailure: true, }) - if (plsRNDTSupply) { - const rndtWethBal = await api.call({ abi: 'function lockedBalance(address) view returns (uint256)', target: '0x76ba3ec5f5adbf1c58c91e86502232317eea72de', params: '0x2A2CAFbB239af9159AEecC34AC25521DBd8B5197' }) - api.add('0x32dF62dc3aEd2cD6224193052Ce665DC18165841', rndtWethBal) - } - - - const tokensAndOwners = [ - [ADDRESSES.arbitrum.fsGLP, '0xbec7635c7A475CbE081698ea110eF411e40f8dd9',], // fsGLP - ['0x460c2c075340EbC19Cf4af68E5d83C194E7D21D0', '0xC12a53AbC62Cd380BC952dEcEe825Fd4869a3bff',], // plsJones - [ADDRESSES.arbitrum.ARB, '0x8163A7425c0a5988edf60e98DE186c931e2ce4C7',], // ARB - ] - await sumTokens2({ api, tokensAndOwners, resolveLP: true, }) -} - - -module.exports = { - arbitrum: { - tvl, - staking: staking(plutusStakingContracts, plutusToken), - }, -}; diff --git a/projects/pnetwork.js b/projects/pnetwork.js deleted file mode 100644 index 8dfb51f9cd3..00000000000 --- a/projects/pnetwork.js +++ /dev/null @@ -1,67 +0,0 @@ -const { toUSDTBalances } = require('./helper/balances'); -const axios = require('axios') - -const data = {} - -const HOURS_12 = 12 * 60 * 60 * 1000 - -function getTvl(timestamp) { - const tsStr = '' + timestamp - if (!data[tsStr]) data[tsStr] = _getTvl() - return data[tsStr] - - async function _getTvl() { - timestamp = timestamp * 1e3; - const query = ` FROM "tvl_dist" WHERE time >= ${timestamp - HOURS_12}ms AND time <= ${timestamp + HOURS_12}ms GROUP BY time(1d), "host_blockchain"`; - const queryObj = { - q: `SELECT sum("tvl_number")${query};SELECT sum("tvl_number")${query} fill(null)`, - epoch: 'ms', - db: 'pnetwork-volumes-1', - }; - - const queryURL = `https://pnetwork.watch/api/datasources/proxy/1/query?${new URLSearchParams(queryObj).toString()}`; - - const { data: res } = await axios.get(queryURL); - - const { results: [{ series }, sumTvl] } = res; - const response = {}; - - response.tvlTotal = getTvl(sumTvl.series[0].values); - series.forEach(({ tags: { host_blockchain }, values }) => (response[chainMapping[host_blockchain]] = getTvl(values))); - if (!response.tvlTotal) throw new Error('Incorrect tvl'); - - return response; - } - - - function getTvl(values) { - return values.reduce((a, i) => a ? a : i[1], 0) - } -} - -const chainMapping = { - algorand: 'algorand', - arbitrum: 'arbitrum', - 'binance-smart-chain': 'bsc', - eosio: 'eos', - ethereum: 'ethereum', - //libre: 'lbry', - polygon: 'polygon', - telos: 'telos', - ultra: 'ultra', - xdai: 'xdai' -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'Queries the pNetwork database, using the same API endpoint as their own UI. TVL is based on the amount of assets “locked” in the system and that therefore has a 1:1 tokenization on a host blockchain, including all of the assets and all of the blockchains supported by pNetwork.' -}; - -Object.values(chainMapping).forEach(chain => { - module.exports[chain] = { - tvl: async ({ timestamp }) => { - const response = await getTvl(timestamp) - return toUSDTBalances(response[chain] || 0) - } - } -}) diff --git a/projects/pocm-staking/index.js b/projects/pocm-staking/index.js deleted file mode 100644 index 5203531f7df..00000000000 --- a/projects/pocm-staking/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const http = require("../helper/http"); - -async function staking() { - const data = (await http.get("https://pocm.nuls.io/api/pocm/info")).data; - return { - 'nuls': Number(data.totalStaking).toFixed(0), - 'bitcoin': Number(data.totalStakingBTC).toFixed(8) - }; -} - -module.exports = { - doublecounted: true, - timetravel: false, - nuls: { - tvl: async ()=> ({}), - staking, - } -}; diff --git a/projects/pod-finance/index.js b/projects/pod-finance/index.js deleted file mode 100644 index 51bc831fb50..00000000000 --- a/projects/pod-finance/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - base: { factory: '0x7e84E0A8799cD13b671D819A86CF38f4F8a20af1', fromBlock: 13689740, lp: '0xcbcd3854cbc7f2ec4af1c99dcb32c393d77abf6c', pod: '0xbef5d404548fab05820e64f92cf043b6a06f9c72' }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, lp, pod } = config[chain] - - async function _getLogs(api, tvlType) { - - const logs = await getLogs2({ api, factory, eventAbi: 'event PodCreated (address indexed underlying, address indexed pod, address owner, uint256 index)', fromBlock, }) - const toa = logs.map(i => [i.underlying.toLowerCase(), i.pod,]) - switch (tvlType) { - case 'pool2': - return toa.filter(i => i[0] === lp) - default: - return toa.filter(i => i[0] !== lp) - } - - } - module.exports[chain] = { - tvl: () => ({}), - pool2: async (api) => { - return sumTokens2({ api, resolveLP: true, tokensAndOwners: await _getLogs(api, 'pool2'), }) - }, - staking: async (api) => { - return sumTokens2({ api, resolveLP: true, tokensAndOwners: await _getLogs(api, 'staking'), }) - }, - } -}) \ No newline at end of file diff --git a/projects/pods-yield/constants.js b/projects/pods-yield/constants.js deleted file mode 100644 index 02d52087cf1..00000000000 --- a/projects/pods-yield/constants.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - ADDRESS_ZERO: ADDRESSES.null, - EXPIRATION_START_FROM: 1605000000, - NETWORK_MAINNET: { - id: 1, - name: 'ethereum', - vaults: [ - '0xbab1e772d70300422312dff12daddcb60864bd41', - '0x463F9ED5e11764Eb9029762011a03643603aD879', - '0x5FE4B38520e856921978715C8579D2D7a4d2274F', - '0x287f941aB4B5AaDaD2F13F9363fcEC8Ee312a969' - ] - }, - ABI_SHORT: { - asset: 'address:asset' - } -} diff --git a/projects/pods-yield/index.js b/projects/pods-yield/index.js deleted file mode 100644 index 2ef7127d905..00000000000 --- a/projects/pods-yield/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const sdk = require('@defillama/sdk') - -const { NETWORK_MAINNET } = require('./constants.js') -const { getTVL } = require('./queries.js') - -async function getEthereumTVL (time, ethBlock, chainBlocks) { - return getTVL(NETWORK_MAINNET, ethBlock) -} - -module.exports = { - ethereum: { - tvl: getEthereumTVL - } -} diff --git a/projects/pods-yield/queries.js b/projects/pods-yield/queries.js deleted file mode 100644 index e1e6ade456f..00000000000 --- a/projects/pods-yield/queries.js +++ /dev/null @@ -1,21 +0,0 @@ -const sdk = require('@defillama/sdk') -const { ABI_SHORT } = require('./constants.js') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function getTVL(network, block) { - const chain = network.name - - const { output: assets } = await sdk.api.abi.multiCall({ - abi: ABI_SHORT.asset, - block, chain, - calls: network.vaults.map(i => ({ target: i })), - }) - - const toa = [] - assets.forEach(({ output, input: { target }}) => toa.push([output, target ])) - return sumTokens2({ tokensAndOwners: toa, chain, block, }) -} - -module.exports = { - getTVL -} diff --git a/projects/podsfinance/constants.js b/projects/podsfinance/constants.js deleted file mode 100644 index 70cd0e2e3a3..00000000000 --- a/projects/podsfinance/constants.js +++ /dev/null @@ -1,23 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - ADDRESS_ZERO: ADDRESSES.null, - OPTION_TYPE_PUT: 0, - OPTION_TYPE_CALL: 1, - EXPIRATION_START_FROM: 1605000000, - NETWORK_POLYGON: { - id: 137, - name: 'polygon', - subgraph: sdk.graph.modifyEndpoint('5yQETkt77T9htftwDSW4WJpoGkPH9KBQzQLzPnuyZ8ti') - }, - NETWORK_MAINNET: { - id: 1, - name: 'ethereum', - subgraph: sdk.graph.modifyEndpoint('9qiAuWa5ryYeTj1gLy9BGiiVkfgkXnsN25wkYQSfyaws') - }, - NETWORK_ARBITRUM: { - id: 42161, - name: 'arbitrum', - subgraph: sdk.graph.modifyEndpoint('5Qz4mWABKaCfr9uGnteAAwmWmBAyQtRDYgB3ydU556HX') - } -} diff --git a/projects/podsfinance/index.js b/projects/podsfinance/index.js deleted file mode 100644 index 4b9e5b53124..00000000000 --- a/projects/podsfinance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const sdk = require('@defillama/sdk') - -const { NETWORK_POLYGON, NETWORK_MAINNET, NETWORK_ARBITRUM } = require('./constants.js') -const { getTVL } = require('./queries.js') - -async function getEthereumTVL (time, ethBlock, chainBlocks) { - return getTVL(NETWORK_MAINNET, ethBlock) -} - -async function getPolygonTVL (time, ethBlock, chainBlocks) { - return getTVL(NETWORK_POLYGON, chainBlocks[NETWORK_POLYGON.name]) -} - -async function getArbitrumTVL (time, ethBlock, chainBlocks) { - return getTVL(NETWORK_ARBITRUM, chainBlocks[NETWORK_ARBITRUM.name]) -} - -module.exports = { - ethereum: { - tvl: getEthereumTVL - }, - polygon: { - tvl: getPolygonTVL - }, - arbitrum: { - tvl: getArbitrumTVL - }, -} diff --git a/projects/podsfinance/queries.js b/projects/podsfinance/queries.js deleted file mode 100644 index 25a7d5fbe36..00000000000 --- a/projects/podsfinance/queries.js +++ /dev/null @@ -1,56 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const { EXPIRATION_START_FROM } = require("./constants.js"); -const { getOptions } = require("./subgraph.js"); - -async function getTVL(network, block) { - const balances = {}; - const options = await getOptions(network, EXPIRATION_START_FROM); - - const collateralInOptions = await sdk.api.abi.multiCall({ - abi: "erc20:balanceOf", - block, - calls: options - .filter( - (option) => - option && - option.strikeAsset && - option.underlyingAsset && - option.address - ) - .map((option) => [ - { - target: option.strikeAsset, - params: [option.address], - }, - { - target: option.underlyingAsset, - params: [option.address], - }, - ]) - .reduce((prev, curr) => prev.concat(curr), []), - chain: network.name, - }); - - const stablesInPools = await sdk.api.abi.multiCall({ - abi: "erc20:balanceOf", - block, - calls: options - .filter((option) => option && option.pool && option.pool.address) - .map((option) => ({ - target: option.pool.tokenB, - params: [option.pool.address], - })), - chain: network.name, - }); - - const transform = (address) => `${network.name}:${address}`; - - sdk.util.sumMultiBalanceOf(balances, collateralInOptions, true, transform); - sdk.util.sumMultiBalanceOf(balances, stablesInPools, true, transform); - return balances; -} - -module.exports = { - getTVL, -}; diff --git a/projects/podsfinance/subgraph.js b/projects/podsfinance/subgraph.js deleted file mode 100644 index 90841811800..00000000000 --- a/projects/podsfinance/subgraph.js +++ /dev/null @@ -1,86 +0,0 @@ -const { - ADDRESS_ZERO, - OPTION_TYPE_PUT, - NETWORK_POLYGON, - NETWORK_MAINNET, - EXPIRATION_START_FROM -} = require('./constants') - -const { request, gql } = require('graphql-request') - -const OptionFragment = gql` - fragment OptionFragment on Option { - id - address - type - expiration - underlyingAsset - underlyingAssetDecimals - strikeAsset - strikeAssetDecimals - strikePrice - } -` - -const PoolFragment = gql` - fragment PoolFragment on Pool { - id - address - tokenB - tokenBDecimals - } -` - -const QuerySeries = gql` - query option( - $blacklisted: [Bytes!]! - $optionTypes: [Int!]! - $expiration: Int! - ) { - options( - where: { - id_not_in: $blacklisted - type_in: $optionTypes - expiration_gt: $expiration - } - ) { - ...OptionFragment - pool { - ...PoolFragment - } - } - } - ${OptionFragment} - ${PoolFragment} -` - -/** - * - * @param {NETWORK_MAINNET | NETWORK_POLYGON} network - * @param {*} optionTypes - * @param {*} blacklisted - * @param {number} expiration - */ -async function getOptions ( - network, - expiration = 0, - optionTypes = [], - blacklisted = [] -) { - if (!blacklisted.length) blacklisted.push(ADDRESS_ZERO) - if (!optionTypes.length) optionTypes.push(OPTION_TYPE_PUT) - - const query = await request(network.subgraph, QuerySeries, { - blacklisted: blacklisted.map(address => String(address).toLowerCase()), - optionTypes, - expiration - }) - - if (!query || !query.options) return [] - - return query.options -} - -module.exports = { - getOptions -} diff --git a/projects/poison-finance/index.js b/projects/poison-finance/index.js deleted file mode 100644 index 67ef867fa72..00000000000 --- a/projects/poison-finance/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { createIncrementArray } = require('../helper/utils'); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { staking } = require('../helper/staking'); - - -const config = { - arbitrum: { vault: '0xd5e31fc5f4a009A49312C20742DF187b35975528', token: '0x31C91D8Fb96BfF40955DD2dbc909B36E8b104Dde', stakingContract: '0xDA016d31f2B52C73D7c1956E955ae8A507b305bB', poolCount: 5 }, - bsc: { vault: '0xd5e31fc5f4a009A49312C20742DF187b35975528', token: '0x31C91D8Fb96BfF40955DD2dbc909B36E8b104Dde', stakingContract: '0x04fCB69aa48f9151741A5D238b5c3cDb2A788e05', poolCount: 5 }, -} - -const abi = { - "tokenInfo": "function tokenInfo(uint256) view returns (address stableToken, uint256 underlyingContractDecimals, bool canMint)", -} - -async function tvl(api) { - const { poolCount, vault } = config[api.chain] - const calls = createIncrementArray(poolCount) - const tokensInfo = await api.multiCall({ abi: abi.tokenInfo, calls, target: vault }) - return sumTokens2({ api, owner: vault, tokens: tokensInfo.map(i => i.stableToken) }) -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { token, stakingContract, } = config[chain] - module.exports[chain] = { tvl } - if (stakingContract && token) module.exports[chain].staking = staking(stakingContract, token) -}) - - - - - - - - - diff --git a/projects/polar-bear-finance/index.js b/projects/polar-bear-finance/index.js deleted file mode 100644 index 60baaa92e64..00000000000 --- a/projects/polar-bear-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - - -const token = "0x83dC7F38F94c5D0e0dC3695330367acb2a764907"; -const share = "0x5B2Cf2d63299a473293577CF22a5241Fb0e8e1b2" -const rewardPool = "0x5b892d99BC94de7983fF156e5Ef917d7bC1a1690"; -const masonry = "0xDC2b2C59eF33dA8E603d9F7B996DcDa3CD4CB6cd"; -const pool2LPs = [ - "0x84895C6279E50C584CEbEd4963672F730b448df0", - "0x1610C07565A2CfFf2809193A410Fb4EAAceAB378" -] - -module.exports = { - ...tombTvl(token, share, rewardPool, masonry, pool2LPs, "avax", undefined, false, pool2LPs[1]) -} - diff --git a/projects/polaris-finance/abi.json b/projects/polaris-finance/abi.json deleted file mode 100644 index 2ad7168d431..00000000000 --- a/projects/polaris-finance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 lastRewardTime, uint256 accPolarPerShare, bool isStarted)", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/polaris-finance/index.js b/projects/polaris-finance/index.js deleted file mode 100644 index 0c306474a25..00000000000 --- a/projects/polaris-finance/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { onChainTvl } = require("../helper/balancer"); - -const xpolar = "0xeAf7665969f1DaA3726CEADa7c40Ab27B3245993"; -const xpolarRewardPool = "0x140e8a21d08cbb530929b012581a7c7e696145ef"; -const chain = "aurora"; - -const sunrises = [ - "0xA452f676F109d34665877B7a7B203f2B445D7DE0", // polarSunrise - "0x203a65b3153C55B57f911Ea73549ed0b8EC82B2D", // tripolarSunrise - "0x37223e0066969027954a5499ea4445bB9F55b36F", // uspSunrise - "0x33Fd42C929769f2C57cD68353Bff0bD7C6c51604", // ethernalSunrise - "0x494E811678f84816878A6e7e333f834Be7d4f21D", // orbitalSunrise - "0x5DB00aeFe6404A08802678480e953ACb32E14Eab", // binarisSunrise -]; - -const singleStakeTokens = [ - "0x17cbd9C274e90C537790C51b4015a65cD015497e", // ETHERNAL - "0x266437E6c7500A947012F19A3dE96a3881a0449E", // EBOND - "0x3AC55eA8D2082fAbda674270cD2367dA96092889", // ORBITAL - "0x192bdcdd7b95A97eC66dE5630a85967F6B79e695", // OBOND - "0xa69d9Ba086D41425f35988613c156Db9a88a1A96", // USP - "0xcE32b28c19C61B19823395730A0c7d91C671E54b", // USPBOND - "0xf0f3b9Eee32b1F490A4b8720cf6F005d4aE9eA86", // POLAR - "0x3a4773e600086A753862621A26a2E3274610da43", // PBOND - "0x60527a2751A827ec0Adf861EfcAcbf111587d748", // TRIPOLAR - "0x8200B4F47eDb608e36561495099a8caF3F806198", // TRIBOND -]; - -const staking = async (_timestamp, _ethBlock, { [chain]: block }) => { - const tokensAndOwners = []; - sunrises.forEach((o) => tokensAndOwners.push([xpolar, o])); - singleStakeTokens.forEach((t) => tokensAndOwners.push([t, xpolarRewardPool])); - return sumTokens2({ chain, block, tokensAndOwners }); -}; - -module.exports = { - misrepresentedTokens: true, - methodology: - "Pool2 TVL accounts for all LPs staked in Dawn, Staking TVL accounts for all tokens staked in Sunrise.", - aurora: { - tvl: onChainTvl("0x6985436a0E5247A3E1dc29cdA9e1D89C5b59e26b", 71729132), - staking, - }, - telos: { - tvl: onChainTvl("0x9Ced3B4E4DC978265484d1F1f569010E13f911c9", 319760799), - }, -}; diff --git a/projects/polkadex/api.js b/projects/polkadex/api.js deleted file mode 100644 index 2a3caf7d112..00000000000 --- a/projects/polkadex/api.js +++ /dev/null @@ -1,78 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); -const sdk = require('@defillama/sdk') -const {fetchURL} = require("../helper/utils"); - -const rpcNodes = ["wss://polkadex.api.onfinality.io/public-ws", "wss://polkadex.public.curie.radiumblock.co/ws"]; -const orderbookWallet = "esoEt6uZ3GuFV8EzKB2EAREe3KE9WuRVfmhK1RRtwffY78ArH" - -function add(_api, token, bal) { - _api.add(token, bal, { skipChain: true }) -} - -async function tvl(_api) { - const provider = new WsProvider(rpcNodes); - const api = await ApiPromise.create({ provider, }); - await api.isReady; - - const assetMapping = await getAssetMappings(); - - const pdexBalance = await api.query.system.account(orderbookWallet) - add(_api,'polkadex', pdexBalance.data.free / 1e12) - - let requestedAssets = []; - Object.keys(assetMapping).forEach(function(key) { - if(key !== "PDEX") - requestedAssets.push([key, orderbookWallet]); - }) - - const results = await api.query.assets.account.multi(requestedAssets); - - for(let i = 0; i < results.length; i++) - { - if(results[i].toPrimitive() != null) { - const coingeckoId = assetMapping[requestedAssets[i][0]]; - if(coingeckoId) { - add(_api, coingeckoId, Number(results[i].toPrimitive().balance) / 1e12) - } - } - } - - return _api.getBalances() -} - -async function staking(_api) { - const provider = new WsProvider(rpcNodes); - const api = await ApiPromise.create({ provider, }); - await api.isReady - - const chainActiveEra = await api.query.staking.activeEra(); - - let activeEra = JSON.parse(JSON.stringify(chainActiveEra)).index; - - let results = await api.query.staking.erasTotalStake([activeEra]); - - add(_api,'polkadex', results.toPrimitive() / 1e12) - - return _api.getBalances() -} - -async function getAssetMappings() { - let coingeckoMappings = await fetchURL("https://integration-api.polkadex.trade/v1/assets"); - let assetMapping = {}; - - if(coingeckoMappings.data === null) - return assetMapping; - - Object.keys(coingeckoMappings.data).forEach(function(key) { - assetMapping[coingeckoMappings.data[key].asset_id] = coingeckoMappings.data[key].coingecko_id; - }) - - return assetMapping; -} - -module.exports = { - polkadex: { - tvl: tvl, - staking: staking, - }, -} \ No newline at end of file diff --git a/projects/polkadex/index.js b/projects/polkadex/index.js deleted file mode 100644 index 67108ae9125..00000000000 --- a/projects/polkadex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - deadFrom: '2025-02-01', - timetravel: false, - ...getExports("polkadex", ['polkadex'], ['staking']) -} \ No newline at end of file diff --git a/projects/polkaex/index.js b/projects/polkaex/index.js deleted file mode 100644 index 5dbddf8aea3..00000000000 --- a/projects/polkaex/index.js +++ /dev/null @@ -1,137 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { stakings } = require("../helper/staking"); - -const FACTORIES = { - astar: "0x1E66b3e7141bDF8c414F91269a3A99d098D2d356", - shiden: "0x20c05B9D6546e60556dE510D58ac100783ad46B1", - bsc: "0x6797F1468007e0A7720a17ceD2D47350B45E26e5", - ethereum: "0x0Af64bDA476628251dd9F88c9b0CA0b5DB17BFc1" -} - -const NATIVE_TOKENS = { - WASTAR: "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720", - WSDN: ADDRESSES.shiden.WSDN, - WBNB: ADDRESSES.bsc.WBNB, - WETH: ADDRESSES.ethereum.WETH -} - -const TOKENS = { - astar: { - USDC: ADDRESSES.moonbeam.USDC, - USDT: ADDRESSES.astar.USDT, - DOT: ADDRESSES.astar.DOT, - WASTAR: NATIVE_TOKENS.WASTAR, - }, - shiden: { - // KAC: ADDRESSES.harmony.AVAX, - STND: ADDRESSES.shiden.STND, - USDC: ADDRESSES.telos.ETH, - USDT: ADDRESSES.telos.USDC, - JPYC: ADDRESSES.shiden.JPYC, - BNB: ADDRESSES.dogechain.BUSD, - BUSD: ADDRESSES.shiden.BUSD, - ETH: ADDRESSES.shiden.ETH, - WSDN: NATIVE_TOKENS.WSDN - }, - bsc: { - BUSD: ADDRESSES.bsc.BUSD, - WBNB: NATIVE_TOKENS.WBNB - }, - ethereum: { - USDC: ADDRESSES.ethereum.USDC, - WETH: NATIVE_TOKENS.WETH - } -} - -const PKEX = { - astar: "0x1fE622E91e54D6AD00B01917351Ea6081426764A", - shiden: ADDRESSES.dogechain.MATIC, - ethereum: "0xe6f143a0e0a8f24f6294ce3432ea10fad0206920", - bsc: "0x68edF56289134b41C6583c0e8fc29fbD7828aCa4", - polygon: "0xd13eB71515DC48a8a367D12F844e5737bab415dF" -} - -const STAKING_CONTRACTS = { - astar: [ - "0xC8f9d27B4e5E9c956c7344C87D2eF05381D89Fc9", - "0x517066B4D6eE14Ea8f8BF3A422b88dB95CE4C333", - "0x8986CD046741CBfEe8F36a1dCD2af7C2a4942F1A", - "0x6B44EF63fe77C56478a191bC1673E24e0408a780", - ], - shiden: [ - "0xC9e3Ca62B14818D23D29E658888c03A61bE22AB6", - "0x4d4B492aF3EE600fc6c4B6Ee7C4c4100C9b58B16", - "0x1d069E6297b8200915Fce5bf2E85Ee7Cb4fA7008", - ], - bsc: [ - "0xE9D6d7FC069EA3ec7232428Be314C9B1734671f5", - "0x9628B9E1a48Dc573e857D6c8b0aFB0c4965B29aA" - ], - polygon: [ - "0x8526797627E83c2609213aE74F2Ffc3aAeFa124B" - ] -} - -const tvls = { - astar: getUniTVL({ factory: FACTORIES.astar, useDefaultCoreAssets: true, }), - shiden: getUniTVL({ factory: FACTORIES.shiden, useDefaultCoreAssets: true, }), - bsc: getUniTVL({ factory: FACTORIES.bsc, useDefaultCoreAssets: true, }), - ethereum: getUniTVL({ factory: FACTORIES.ethereum, useDefaultCoreAssets: true, }), - polygon: async () => 0, -} - -module.exports = { - misrepresentedTokens: true, - methodology: "PolkaEx Tvl Calculation", - astar: { - tvl: tvls.astar, - staking: async (timestamp, _ethBlock, chainBlocks) => { - const pkexStaking = await stakings( - STAKING_CONTRACTS.astar, - PKEX.astar, - "astar", - PKEX.ethereum - )(timestamp, _ethBlock, chainBlocks); - - const dotStaking = await stakings( - STAKING_CONTRACTS.astar, - TOKENS.astar.DOT, - "astar" - )(timestamp, _ethBlock, chainBlocks); - - const result = { ...pkexStaking, ...dotStaking }; - return result; - }, - }, - shiden: { - tvl: tvls.shiden, - staking: stakings( - STAKING_CONTRACTS.shiden, - PKEX.shiden, - "shiden", - PKEX.ethereum - ), - }, - bsc: { - tvl: tvls.bsc, - staking: stakings( - STAKING_CONTRACTS.bsc, - PKEX.bsc, - "bsc", - PKEX.ethereum - ), - }, - polygon: { - tvl: tvls.polygon, - staking: stakings( - STAKING_CONTRACTS.polygon, - PKEX.polygon, - "polygon", - // PKEX.ethereum - ), - }, - ethereum: { - tvl: tvls.ethereum - }, -}; diff --git a/projects/polkamarkets/index.js b/projects/polkamarkets/index.js deleted file mode 100644 index 1aece8422e4..00000000000 --- a/projects/polkamarkets/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const config = { - ethereum: { - polk: '0xd478161c952357f05f0292b56012cd8457f1cfbf', - stakingContracts: [ - "0xfa443f0ec4aed3e87c6d608ecf737a83d950427b", // realitio v1 - ], - v1: '0xc24a02d81dee67fd52cc95b0d04172032971ea10', - }, - moonriver: { - polk: '0x8b29344f368b5fa35595325903fe0eaab70c8e1f', - stakingContracts: [ - "0x60d7956805ec5a698173def4d0e1ecdefb06cc57", // realitio v1 - "0x9aB1213d360bEa3edA75D88D81D7fbfc9fd37F2b", // realitio v2 - ], - v1: '0xdcbe79f74c98368141798ea0b7b979b9ba54b026', - v2: { - contract: '0x6413734f92248D4B29ae35883290BD93212654Dc', - tokens: ['0x98878b06940ae243284ca214f92bb71a2b032b8a'], - }, - }, - moonbeam: { - polk: '0x8b29344f368b5fa35595325903fe0eaab70c8e1f', - stakingContracts: [ - "0x83d3f4769a19f1b43337888b0290f5473cf508b2", // realitio v1 - "0xf5872382381cc1a37993d185abb6281fe47f5380", // realitio v2 - ], - v1: '0x21DFb0a12D77f4e0D2cF9008d0C2643d1e36DA41', - v2: { - contract: '0xaaC0068EbE0BFff0FE5E3819af0c46850dC4Cc05', - tokens: ['0xacc15dc74880c9944775448304b263d191c6077f'], - }, - }, - polygon: { - polk: '0x996F19d4b1cE6D5AD72CEaaa53152CEB1B187fD0', - stakingContracts: [ - "0x83d3f4769a19f1b43337888b0290f5473cf508b2", // realitio v2 - ], - v2: { - contract: '0x60d7956805ec5a698173def4d0e1ecdefb06cc57', - tokens: [ADDRESSES.polygon.WMATIC_2, ADDRESSES.polygon.USDC, ADDRESSES.polygon.USDT], - }, - }, - xdai: { - polk: '0x9a2a80c38abb1fdc3cb0fbf94fefe88bef828e00', - stakingContracts: [ - "0x537dc41fbb4f9faa4b9d6f8e6c2eb9071274f72b", // predictionMarketV3Manager - "0xBC39fa757886E8A56422Abc460b1FFfc70bbaeC6", // predictionMarketV3Factory - ], - }, - celo: { - polk: '0xb4d8a602fff7790eec3f2c0c1a51a475ee399b2d', - stakingContracts: [ - "0x1f021be85d6b4d1867c43ef98d30ccc5a44791de", // predictionMarketV3Manager - "0x0ec82449555efbe9a67cc51de3ef23a56dd79352", // predictionMarketV3Factory - ], - } -} - -module.exports = { - methodology: - "Polkamarkets TVL equals the V1 contracts' EVM balance + V2 contracts tokens balance.\n Polkamarkets staking TVL is the POLK balance of the V1+V2 bonds contracts, plus the POLK balance of V3 predictionMarketManager and predictionMarketFactory contracts.", -} - -Object.keys(config).forEach(chain => { - const { v1, v2, v3, polk = ADDRESSES.null, stakingContracts = [] } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - if (v1) ownerTokens.push([[ADDRESSES.null], v1]) - if (v2) ownerTokens.push([v2.tokens, v2.contract]) - return sumTokens2({ api, ownerTokens, blacklistedTokens: polk ? [polk] : [] }) - }, - staking: staking(stakingContracts, polk ?? []), - } -}) diff --git a/projects/polkastarter/index.js b/projects/polkastarter/index.js deleted file mode 100644 index 4cf4e1bb1b0..00000000000 --- a/projects/polkastarter/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require("../helper/staking"); - -const stakingContract = "0xc24A365A870821EB83Fd216c9596eDD89479d8d7"; -const POLS = "0x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa"; - -const stakingContract_bsc = "0xD558675a8c8E1fd45002010BaC970B115163dE3a"; -const POLS_bsc = "0x7e624fa0e1c4abfd309cc15719b7e2580887f570"; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: (async) => ({}), - staking: staking(stakingContract, POLS), - }, - bsc: { - staking: staking(stakingContract_bsc, POLS_bsc), - }, - methodology: "Counts liquidty on the staking only", -}; diff --git a/projects/pollyfinance/index.js b/projects/pollyfinance/index.js deleted file mode 100644 index 5f57742987f..00000000000 --- a/projects/pollyfinance/index.js +++ /dev/null @@ -1,82 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {sumTokens2} = require("../helper/unwrapLPs"); - -const polly = "0x4C392822D4bE8494B798cEA17B43d48B2308109C"; -const masterchef = "0x850161bF73944a8359Bd995976a34Bb9fe30d398"; - -const pool2LPs = [ - "0xd0fa2eaa5d854f184394e93f7b75624084600685", - "0x1534d7c91bd77eb447acb7fb92ea042b918f58bb", - "0xf27c14aedad4c1cfa7207f826c64ade3d5c741c3", - "0x095fc71521668d5bcc0fc3e3a9848e8911af21d9", - "0xf70b37a372befe8c274a84375c233a787d0d4dfa", - "0x0c98d36908dfbe11C9A4d1F3CD8A9b94bAbA7521" -]; - -const sushiLPs = [ - "0xdFA3dDd1807DB8E4B4851D2E5421374e433a2983", - "0xce5B8977f5021f1EF1232B1D4a0CFd03E8BCBa9B", - "0x5e5C517Ec55d6393d91d6A1379e5Ae393A01a423", - "0xc56060aF39152C614fA67E169c0DD1809a886e4F", - "0xb5846453B67d0B4b4Ce655930Cf6E4129F4416D7", - "0x396E655C309676cAF0acf4607a868e0CDed876dB", - "0xc67136e235785727a0d3B5Cfd08325327b81d373", - "0x9021A31062A1D9C9C35d632Ed54a9d923e46809F", - "0xbf61E1D82bD440cb9da11d325c046f029a663890", - "0x14dBE3e6814FD532EF87E4bE9b4192C018752823", - "0x74D23F21F780CA26B47Db16B0504F2e3832b9321", - "0x116Ff0d1Caa91a6b94276b3471f33dbeB52073E7", - "0x6be10c5C7178af8C49997D07d6A5444C15e58170", - "0x2481cBe674FB72cF8CD3031Ff4747078d168c9b3", -]; - -const nDefi = "0xd3f07EA86DDf7BAebEfd49731D7Bbd207FedC53B"; -const nDefiUnderLying = [ - "0x28424507fefb6f7f8E9D3860F56504E4e5f5f390", - "0x4257EA7637c355F81616050CbB6a9b709fd72683", - "0x172370d5cd63279efa6d502dab29171933a610af", - "0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39", - "0x6f7C932e7684666C9fd1d44527765433e01fF61d", - "0x50b728d8d964fd00c2d0aad81718b71311fef68a", - "0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a", - "0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c", - "0xd6df932a45c0f255f85145f286ea0b292b21c90b", - "0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3", - "0xda537104d6a5edd53c6fbba9a898708e465260b6", - "0x95c300e7740D2A88a44124B424bFC1cB2F9c3b89", - "0xc81278a52AD0e1485B7C3cDF79079220Ddd68b7D", - ADDRESSES.polygon.WMATIC_2, - "0x3066818837c5e6ed6601bd5a91b0762877a6b731", - "0xb33eaad8d922b1083446dc23f610c2567fb5180f", - "0x3AE490db48d74B1bC626400135d4616377D0109f" -] - -const nStbl = "0x9Bf320bd1796a7495BB6187f9EB4Db2679b74eD3"; -const nStblUnderLying = [ - "0x00e5646f60AC6Fb446f621d146B6E1886f002905", - "0x27F8D03b3a2196956ED754baDc28D73be8830A6e", - "0x60D55F02A771d515e077c9C2403a1ef324885CeC", - "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F" -] - -async function tvl(api) { - let balances = {}; - await Promise.all([ - sumTokens2({ api, owner: nDefi, tokens: nDefiUnderLying, balances, }), - sumTokens2({ api, owner: nStbl, tokens: nStblUnderLying, balances,}), - sumTokens2({ api, owner: masterchef, tokens: sushiLPs, balances,}), - ]) - return balances -} - -async function pool2(api) { - return sumTokens2({ api, owner: masterchef, tokens: pool2LPs}) -} - -module.exports = { - methodology: "TVL includes tokens staked in farms and tokens used as collateral for nDEFI and nSTBL", - polygon: { - tvl, - pool2 - }, -} \ No newline at end of file diff --git a/projects/polter/index.js b/projects/polter/index.js deleted file mode 100644 index 740190237cb..00000000000 --- a/projects/polter/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { aaveV2Export } = require('../helper/aave') -const { sumTokensExport } = require("../helper/unknownTokens") - -const sonic = { - POLTER_CONTRACT: '0x44BD4F79A95cF04505F2dc5C8e2e4043f67C7B07', - MULTIFEE_CONTRACT: '0xD47aE558623638F676C1E38dAd71B53054F54273', - POLTER_LP_CONTRACT: '0x668F8b42F85fdbcC356bB23a16B3051E1995d924', - POLTER_LENDINGPOOL_CONTRACT: '0x4dE3E7E8bE48D6094cFA34323e6cC22308D56b52' -} - -const fantom = { - POLTER_CONTRACT: '0x5c725631FD299703D0A74C23F89a55c6B9A0C52F', - MULTIFEE_CONTRACT: '0xb0F8fe472422Ae582a535b5418C82Ff0F9fa9267', - POLTER_LP_CONTRACT: '0x44C85D45EB17C8A6b241807BE5c9c48201F91837', - POLTER_LENDINGPOOL_CONTRACT: '0x867fAa51b3A437B4E2e699945590Ef4f2be2a6d5' -} - -const base = { - POLTER_CONTRACT: '0xA0820613976B441E2c6A90E4877E2fb5f7D72552', - MULTIFEE_CONTRACT: '0x0B7B45A920Ae54f066b6c013fEdF27C37840dE38', - POLTER_LP_CONTRACT: '0xee7ef14845c466b30f7f4a41f5491df8824cb64e', - POLTER_LENDINGPOOL_CONTRACT: '0x33CA62504cebAB919f0FCa94562413ee121A9798' -} - - -module.exports = { - // hallmarks: [ - // [1731715200,"Price Oracle Exploit"] - // ], - sonic: aaveV2Export(sonic.POLTER_LENDINGPOOL_CONTRACT), - fantom: aaveV2Export(fantom.POLTER_LENDINGPOOL_CONTRACT), - base: aaveV2Export(base.POLTER_LENDINGPOOL_CONTRACT), -} - -module.exports.sonic.staking = sumTokensExport({ owner: sonic.MULTIFEE_CONTRACT, tokens: [sonic.POLTER_CONTRACT], lps: [sonic.POLTER_LP_CONTRACT], useDefaultCoreAssets: true, }) -module.exports.fantom.staking = sumTokensExport({ owner: fantom.MULTIFEE_CONTRACT, tokens: [fantom.POLTER_CONTRACT], lps: [fantom.POLTER_LP_CONTRACT], useDefaultCoreAssets: true, }) -module.exports.base.staking = sumTokensExport({ owner: base.MULTIFEE_CONTRACT, tokens: [base.POLTER_CONTRACT], lps: [base.POLTER_LP_CONTRACT], useDefaultCoreAssets: true, }) - -module.exports.fantom.borrowed = () => ({}) \ No newline at end of file diff --git a/projects/polyDEX-cryption-network/index.js b/projects/polyDEX-cryption-network/index.js deleted file mode 100644 index 13119428f0a..00000000000 --- a/projects/polyDEX-cryption-network/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - polygon:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x5bdd1cd910e3307582f213b33699e676e61dead9', }), - }, -} \ No newline at end of file diff --git a/projects/polycat-dex/index.js b/projects/polycat-dex/index.js deleted file mode 100644 index 902bb8a3a59..00000000000 --- a/projects/polycat-dex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -const factory = "0x477Ce834Ae6b7aB003cCe4BC4d8697763FF456FA"; -const tankchef = "0xfaBC099AD582072d26375F65d659A3792D1740fB"; -const paw = "0xbc5b59ea1b6f8da8258615ee38d40e999ec5d74f"; - - -module.exports = { - misrepresentedTokens: true, - methodology: "TVL are from the pools created by the factory and TVL in vaults", - polygon: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), - staking: staking(tankchef, paw), - } -} \ No newline at end of file diff --git a/projects/polycat/abi.json b/projects/polycat/abi.json deleted file mode 100644 index ef49f1a5a13..00000000000 --- a/projects/polycat/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address want, address strat)", - "wantLockedTotal": "uint256:wantLockedTotal", - "token0": "address:token0", - "token1": "address:token1" -} \ No newline at end of file diff --git a/projects/polycat/index.js b/projects/polycat/index.js deleted file mode 100644 index 4c1a49bfdaa..00000000000 --- a/projects/polycat/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { yieldHelper } = require('../helper/yieldHelper') -const abi = require("./abi.json"); -const vaultchef = "0xBdA1f897E851c7EF22CD490D2Cf2DAce4645A904"; -const fish = "0x3a3df212b7aa91aa0402b9035b098891d276572b"; - -module.exports = yieldHelper({ - project: 'polycat', - chain: 'polygon', - masterchef: vaultchef, - nativeToken: fish, - blacklistedTokens: ['0xd76D74DE1EF47E6A390FA53b3b11ef095d0c738c'], - getTokenBalances: async ({ api, poolIds, }) => { - const lockedTotals = await api.multiCall({ abi: 'uint256:wantLockedTotal', calls: poolIds, permitFailure: true }) - return lockedTotals.map(i => i ?? 0) - }, - abis: { - poolInfo: abi.poolInfo - } -}) diff --git a/projects/polycub/index.js b/projects/polycub/index.js deleted file mode 100644 index 8841b954b17..00000000000 --- a/projects/polycub/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const sdk = require('@defillama/sdk') -const { yieldHelper } = require("../helper/yieldHelper"); -const { staking } = require("../helper/staking"); -const MASTERCHEF = "0xef79881df640b42bda6a84ac9435611ec6bb51a4"; -const POLYCUB_TOKEN = "0x7cc15fef543f205bf21018f038f591c6bada941c"; - -module.exports = yieldHelper({ - project: 'polycub', - chain: 'polygon', - masterchef: MASTERCHEF, - nativeToken: POLYCUB_TOKEN, -}) - -module.exports.polygon.staking = staking('0x905E21f6C4CB1Ad789CeD61CD0734590a4542346', POLYCUB_TOKEN) \ No newline at end of file diff --git a/projects/polydex/index.js b/projects/polydex/index.js deleted file mode 100644 index 52964516e03..00000000000 --- a/projects/polydex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'polygon': '0xEAA98F7b5f7BfbcD1aF14D0efAa9d9e68D82f640' -}) \ No newline at end of file diff --git a/projects/polyfriendtech/index.js b/projects/polyfriendtech/index.js deleted file mode 100644 index 614f380a361..00000000000 --- a/projects/polyfriendtech/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x25d1bf639a350c58b03bca310ecca955fb13fad0" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - polygon: { - tvl - } -} \ No newline at end of file diff --git a/projects/polygon/index.js b/projects/polygon/index.js deleted file mode 100644 index 51ec3af37d2..00000000000 --- a/projects/polygon/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(_, block, _c) { - const etherAddress = ADDRESSES.null - - const posEtherPredicate = '0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30' - const posERC20Predicate = '0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf' - const plasmaDepositManager = '0x401F6c983eA34274ec46f84D70b31C151321188b' - - const maticToken = ADDRESSES.ethereum.MATIC - const stakeManager = '0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908' - - const toa = [ - [etherAddress, posEtherPredicate] - ] - - const erc20Tokens = [ - ADDRESSES.ethereum.MATIC, - ADDRESSES.ethereum.DAI, - '0x3F382DbD960E3a9bbCeaE22651E88158d2791550', - ADDRESSES.ethereum.AAVE, - ADDRESSES.ethereum.LINK, - '0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d', - ADDRESSES.ethereum.CRV, - '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', - '0xba100000625a3754423978a60c9317c58a424e3d', - '0x4b520c812e8430659fc9f12f6d0c39026c83588d', - '0xb6ee9668771a79be7967ee29a63d4184f8097143', - '0xa51fc71422a30fa7ffa605b360c3b283501b5bf6', - '0x4f81c790581b240a5c948afd173620ecc8c71c8d', - '0x56d811088235F11C8920698a204A5010a788f4b3', - '0xcfcecfe2bd2fed07a9145222e8a7ad9cf1ccd22a', - // '0x17ac188e09a7890a1844e5e65471fe8b0ccfadf3', - ADDRESSES.ethereum.USDC, - '0x3845badAde8e6dFF049820680d1F14bD3903a5d0', - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.USDT, - '0xe0cca86b254005889ac3a81e737f56a14f4a38f5', - '0x09617f6fd6cf8a71278ec86e23bbab29c04353a7', - '0xd2ba23de8a19316a638dc1e7a9adda1d74233368', - '0x99fe3b1391503a1bc1788051347a1324bff41452', - '0x9534ad65fb398e27ac8f4251dae1780b989d136e', - '0xee1edd77f16b7867e026a4d32ef45dac852da61f', - '0x467Bccd9d29f223BcE8043b84E8C8B282827790F', - '0x16eccfdbb4ee1a85a33f3a9b21175cd7ae753db4', - '0x0335a7610d817aeca1bebbefbd392ecc2ed587b8', - '0xcc4ae94372da236e9b113132e0c46c68704246b9', - ADDRESSES.ethereum.TUSD, - '0xff56cc6b1e6ded347aa0b7676c85ab0b3d08b0fa', - '0x0a6e18fb2842855c3af925310b0f50a4bfa17909', - '0x8ffe40a3d0f80c0ce6b203d5cdc1a6a86d9acaea', - '0x9695e0114e12c0d3a3636fab5a18e6b737529023', - '0xC581b735A1688071A1746c968e0798D642EDE491', - '0xe912b8bA2513D7e29b7b2E5B14398dbf77503Fb4', - '0xba8a621b4a54e61c442f5ec623687e2a942225ef', - '0x249e38ea4102d0cf8264d3701f1a0e39c4f2dc3b', - ADDRESSES.ethereum.FRAX, - '0xd0cd466b34a24fcb2f87676278af2005ca8a78c4', - '0x3a4f40631a4f906c2BaD353Ed06De7A5D3fCb430', - '0xba100000625a3754423978a60c9317c58a424e3d', - '0x888888435fde8e7d4c54cab67f206e4199454c60', - '0x8b3870df408ff4d7c3a26df852d41034eda11d81', - '0xb705268213d593b8fd88d3fdeff93aff5cbdcfae', - '0xdb25f211ab05b1c97d595516f45794528a807ad8', - ADDRESSES.ethereum.UNI, - '0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202', - '0x3593d125a4f7849a1b059e64f4517a86dd60c95d', - '0x6f40d4a6237c257fff2db00fa0510deeecd303eb', - ADDRESSES.ethereum.LIDO, - '0xb4d930279552397bba2ee473229f89ec245bc365', - '0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f', - '0x544c42fbb96b39b21df61cf322b5edc285ee7429', - '0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b', - '0xc944e90c64b2c07662a292be6244bdf05cda44a7', - '0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828', - ADDRESSES.ethereum.FXS, - '0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd', - '0x0cec1a9154ff802e7934fc916ed7ca50bde6844e', - '0xa47c8bf37f92abed4a126bda807a7b7498661acd', - '0xa4eed63db85311e22df4473f87ccfc3dadcfa3e3', - '0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6', - ] - erc20Tokens.map(i => { - toa.push([i, posERC20Predicate]) - }) - toa.push([maticToken, plasmaDepositManager]) - toa.push([maticToken, stakeManager]) - return sumTokens2({ block, tokensAndOwners: toa, blacklistedTokens: ['0x99fe3b1391503a1bc1788051347a1324bff41452'] }) -} - -module.exports = { - start: '2020-05-30', // Sat May 30 13:17:16 2020 - polygon: { - tvl - } -} diff --git a/projects/polygonZk/index.js b/projects/polygonZk/index.js deleted file mode 100644 index 7d809ff5157..00000000000 --- a/projects/polygonZk/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/polygonfarm-finance/index.js b/projects/polygonfarm-finance/index.js deleted file mode 100644 index 2ad44684508..00000000000 --- a/projects/polygonfarm-finance/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const spadeToken = "0xf5EA626334037a2cf0155D49eA6462fDdC6Eff19"; -const masterchef = "0x9A2C85eFBbE4DD93cc9a9c925Cea4A2b59c0db78"; - -module.exports = masterChefExports(masterchef, "polygon", spadeToken); diff --git a/projects/polylend/index.js b/projects/polylend/index.js deleted file mode 100644 index 6244eecce6d..00000000000 --- a/projects/polylend/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -module.exports = { - deadFrom: '2023-11-23', - polygon_zkevm: aaveExports("polygon_zkevm", undefined, undefined, [ - "0x27268393Fb8CD0556A62C749C9E70aA537910acc", - ]), -}; - -module.exports.polygon_zkevm.borrowed = () => ({}) // bad debt diff --git a/projects/polymarket.js b/projects/polymarket.js deleted file mode 100644 index ad02e315957..00000000000 --- a/projects/polymarket.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensExport } = require('./helper/unwrapLPs'); - -module.exports = { - polygon: { - tvl: sumTokensExport({ owners: [ - '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045', - '0x3A3BD7bb9528E159577F7C2e685CC81A765002E2' - ], tokens: [ADDRESSES.polygon.USDC]}) - }, - hallmarks: [ - ['2024-11-08', 'US election market settlement'], - ], - methodology: `TVL is the total quantity of USDC held in the conditional tokens contract as well as USDC collateral submitted to every polymarket' markets ever opened - once the markets resolve, participants can withdraw theire share given the redeption rate and their input stake, but they do not all do it.` -} diff --git a/projects/polynetwork/index.js b/projects/polynetwork/index.js deleted file mode 100644 index 8cf5e6c7286..00000000000 --- a/projects/polynetwork/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const axios = require('axios') - -const CONFIG = { - ethereum: 'getTVLEthereum', - ontology: 'getTVLOntology', - neo: 'getTVLNeo', - carbon: 'getTVLCarbon', - bsc: 'getTVLBNBChain', - heco: 'getTVLHeco', - okexchain: 'getTVLOKC', - neo3: 'getTVLNeo3', - polygon: 'getTVLPolygon', - arbitrum: 'getTVLArbitrum', - xdai: 'getTVLGnosisChain', - zilliqa: 'getTVLZilliqa', - avax: 'getTVLAvalanche', - fantom: 'getTVLFantom', - optimism: 'getTVLOptimistic', - metis: 'getTVLAndromeda', - boba: 'getTVLBoba', - oasis: 'getTVLOasis', - harmony: 'getTVLHarmony', - hoo: async () => 0, - bytomsidechain: 'getTVLBytomSidechain', - kcc: 'getTVLKCC', - kava: 'getTVLKava', - starcoin: 'getTVLStarcoin', - celo: 'getTVLCelo', - clv: async () => 0, - conflux: 'GetTVLConflux', - astar: 'GetTVLAstar', - aptos: 'GetTVLAptos', - bitgert: 'GetTVLBitgert', - dexit: 'GetTVLDexit', -} - -const baseURL = 'https://explorer.poly.network/api/v1/' - -async function getTVL(path) { - const url = `${baseURL}${path}`; - const { data } = await axios.get(url) - return Number(data) -} - -const tvl = async (api) => { - const endpoint = CONFIG[api.chain] - if (typeof endpoint === 'function') return () => 0; - return api.addUSDValue(await getTVL(endpoint)) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - deadFrom: '2024-09-30', -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/polynomial-bridge/index.js b/projects/polynomial-bridge/index.js deleted file mode 100644 index 0823b48f2d2..00000000000 --- a/projects/polynomial-bridge/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xDE1617Ddb7C8A250A409D986930001985cfad76F", // usdc vault - ADDRESSES.polynomial.SDAI, // sdai vault - "0xC6cfb996A7CFEB89813A68CD13942CD75553032b", // susde vault - "0x034cbb620d1e0e4C2E29845229bEAc57083b04eC" // eth bridge - ], - tokens: [ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.SDAI, ADDRESSES.ethereum.sUSDe, nullAddress], - }), - }, - optimism: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xc374967634133F5Ed1DF5050276e5B33986625D3", // usdc vault - ], - tokens: [ADDRESSES.optimism.USDC_CIRCLE], - }), - }, - base: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x038bc0f438C6b46FaCc5C83475925F4Dc111d79F", // usdc vault - ], - tokens: [ADDRESSES.base.USDC], - }), - }, - arbitrum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - ADDRESSES.polynomial.SDAI, // usdc vault - ], - tokens: [ADDRESSES.arbitrum.USDC_CIRCLE], - }), - }, -}; diff --git a/projects/polynomial-earn/abi.json b/projects/polynomial-earn/abi.json deleted file mode 100644 index 29f3b971883..00000000000 --- a/projects/polynomial-earn/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "string:name", - "polynomial_COLLATERAL": "address:COLLATERAL", - "polynomial_UNDERLYING": "address:UNDERLYING", - "polynomial_pendingDeposits": "uint256:pendingDeposits", - "polynomial_totalFunds": "uint256:totalFunds", - "polynomial_premiumCollected": "uint256:premiumCollected" -} \ No newline at end of file diff --git a/projects/polynomial-earn/abi2.json b/projects/polynomial-earn/abi2.json deleted file mode 100644 index 307f13cd073..00000000000 --- a/projects/polynomial-earn/abi2.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "function name() view returns (bytes32)", - "polynomial_COLLATERAL": "address:SUSD", - "polynomial_UNDERLYING": "address:UNDERLYING", - "polynomial_totalQueuedDeposits": "uint256:totalQueuedDeposits", - "polynomial_totalFunds": "uint256:totalFunds", - "polynomial_totalQueuedWithdrawals": "uint256:totalQueuedWithdrawals" -} \ No newline at end of file diff --git a/projects/polynomial-earn/index.js b/projects/polynomial-earn/index.js deleted file mode 100644 index a9bb4f9450c..00000000000 --- a/projects/polynomial-earn/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { getConfig } = require('../helper/cache') - -// Polynomial contract addresses -const polynomial_contracts = [ - '0xfa923aa6b4df5bea456df37fa044b37f0fddcdb4', - '0x331cf6e3e59b18a8bc776a0f652af9e2b42781c5', - '0xea48dD74BA1Ff41B705ba5Cf993B2D558e12D860', - '0x23CB080dd0ECCdacbEB0BEb2a769215280B5087D' -] - -async function tvlV1(api) { - - const [tokens, _tokens] = await Promise.all([ - api.multiCall({ abi: "address:COLLATERAL", calls: polynomial_contracts, permitFailure: true, }), - api.multiCall({ abi: "address:UNDERLYING", calls: polynomial_contracts, permitFailure: true, }), - ]) - tokens.forEach((token, i) => { - if (!token) tokens[i] = _tokens[i] - }) - return api.sumTokens({ tokensAndOwners2: [tokens, polynomial_contracts], }) -} - -async function tvl(api) { - await tvlV1(api) - const v1Set = new Set(polynomial_contracts.map(i => i.toLowerCase())) - const ENDPOINT = 'https://earn-api.polynomial.fi/vaults' - const response = await getConfig('polynomial-vaults', ENDPOINT) - // Only allow contracts which sets underlying and COLLATERAL - const contracts = response.map(contract => contract.vaultAddress).filter(i => !v1Set.has(i.toLowerCase())) - - const [tokens, _tokens,] = await Promise.all([ - api.multiCall({ abi: 'address:UNDERLYING', calls: contracts, permitFailure: true, }), - api.multiCall({ abi: 'address:SUSD', calls: contracts, permitFailure: true, }), - ]) - tokens.forEach((token, i) => { - if (!token) tokens[i] = _tokens[i] - }) - return api.sumTokens({ tokensAndOwners2: [tokens, contracts], }) - -} - -module.exports = { - optimism: { - tvl, - }, - hallmarks: [ - [1648728000, "Earn V1 Launch"], - [1655380800, "Earn V1 Shutdown"], - [1660132800, "Earn V2 Launch"], - ], - methodology: 'Using contract methods, TVL is pendingDeposits + totalFunds + premiumCollected and the asset is UNDERLYING or COLLATERAL (put vs call) ', -} \ No newline at end of file diff --git a/projects/polynomial-liquidity-layer/index.js b/projects/polynomial-liquidity-layer/index.js deleted file mode 100644 index 50c406bcf8f..00000000000 --- a/projects/polynomial-liquidity-layer/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - - -module.exports = { - polynomial: { - tvl: sumTokensExport({ owner: '0xc133983D6d9140923b5eaE52664221d9099cf119', tokens: [ADDRESSES.polynomial.fxUSDC,ADDRESSES.polynomial.SDAI, ADDRESSES.polynomial.sUSDe, ADDRESSES.polynomial.USD0]}) - } -} \ No newline at end of file diff --git a/projects/polynomial-trade/index.js b/projects/polynomial-trade/index.js deleted file mode 100644 index 3e7c95003a5..00000000000 --- a/projects/polynomial-trade/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require('../helper/http'); -const { sumTokensExport } = require('../helper/unwrapLPs') -// api -const BASE_URL = "https://perps-v2-mainnet.polynomial.fi/snx-perps/tvl"; - -const BASE_URL_POLYNOMIAL_CHAIN = "https://perps-api-mainnet.polynomial.finance/core/portfolio/tvl"; - -async function tvl_optimism_chain (timestamp, ethBlock) { - const perpApi = await get(BASE_URL); - return { - [`ethereum:${ADDRESSES.ethereum.sUSD}`]: perpApi.tvl * 1e18 - }; -} - -module.exports = { - optimism: { - tvl:tvl_optimism_chain - }, - polynomial: { - tvl: sumTokensExport({ owner: '0xc133983D6d9140923b5eaE52664221d9099cf119', tokens: [ADDRESSES.polynomial.solvBtc,ADDRESSES.polynomial.weETH, ADDRESSES.polynomial.wstEth, ADDRESSES.polynomial.wETH]}) - }, - hallmarks:[ - [1679918400, "Trade Launch"], - [1724248800, "Polynomial Trade Launch"], - [1747137600, "Multicollateral Launch"] - - ] -} \ No newline at end of file diff --git a/projects/polyo-exchange/index.js b/projects/polyo-exchange/index.js deleted file mode 100644 index 333345d7526..00000000000 --- a/projects/polyo-exchange/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -module.exports = { - bsc: { - tvl: () => ({}), - }, - hallmarks: [ - [1662842254, "Rug pull"], - ], - deadFrom: 1662842254 -}; diff --git a/projects/polyquail/abi.json b/projects/polyquail/abi.json deleted file mode 100644 index d1100459566..00000000000 --- a/projects/polyquail/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accKWILPerShare, uint16 depositFeeBP)" -} \ No newline at end of file diff --git a/projects/polyquail/index.js b/projects/polyquail/index.js deleted file mode 100644 index 2cd33459cad..00000000000 --- a/projects/polyquail/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const masterChefKWIL = "0xeA038416Ed234593960704ddeD73B78f7D578AA0"; -const KWIL = "0x252656AdC9E22C697Ce6c08cA9065FBEe5E394e7"; - -const masterChefKEGG = "0xE1de7a777C1f0C85ca583c143b75e691a693e04B"; -const KEGG = "0x4f219CfC1681c745D9558fd64d98373A21a246CA"; - -const masterChefCHK = "0x439E9BE4618bfC5Ebe9B7357d848F65D24a50dDE"; -const CHK = "0x6116A2A8Ea71890Cf749823Ee9DEC991930a9eEa"; - -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); - -const nativeTokens = [KWIL, KEGG, CHK] -module.exports = mergeExports([ - masterchefExports({ chain: 'polygon', masterchef: masterChefKWIL, nativeTokens }), - masterchefExports({ chain: 'polygon', masterchef: masterChefKEGG, nativeTokens }), - masterchefExports({ chain: 'polygon', masterchef: masterChefCHK, nativeTokens }), -]) diff --git a/projects/polyquity/index.js b/projects/polyquity/index.js deleted file mode 100644 index f3599ca2767..00000000000 --- a/projects/polyquity/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { getLiquityTvl } = require('../helper/liquity') - -const MATIC_TROVE_MANAGER_ADDRESS = "0xA2A065DBCBAE680DF2E6bfB7E5E41F1f1710e63b"; -const USDC_TROVE_MANAGER_ADDRESS = "0x09273531f634391dE6be7e63C819F4ccC086F41c"; - -module.exports = { - polygon: { tvl: sdk.util.sumChainTvls([getLiquityTvl(MATIC_TROVE_MANAGER_ADDRESS), getLiquityTvl(USDC_TROVE_MANAGER_ADDRESS, { collateralToken: ADDRESSES.polygon.USDC})]) }, -}; diff --git a/projects/polyroll.js b/projects/polyroll.js deleted file mode 100644 index 9b4ce87562a..00000000000 --- a/projects/polyroll.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json'); -const { staking } = require('./helper/staking'); - -const tokens = [ - ADDRESSES.polygon.WMATIC_2, - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.USDT, - '0x831753dd7087cac61ab5644b308642cc1c33dc13', //QUICK -]; -const fundedContracts = [ - '0x3C58EA8D37f4fc6882F678f822E383Df39260937', //masterchef - '0xc7F4F97E710C2d87F29f6F03220a3425064e02E5', //prize - '0xa3541eA15556AD3272b9BDe36241F61cCbb60aE8', //staking pool - '0x6A974e96a963e9f219915797C4E3B9e2A63ab0e2', //roll - '0xC96D9032770010f5f3D167cA4eeca84a0Bca0Fa2' //miner -] - -module.exports = { - polygon: { - tvl: staking(fundedContracts, tokens), - staking: staking(fundedContracts, '0xc68e83a305b0fad69e264a1769a0a070f190d2d6') - } -} \ No newline at end of file diff --git a/projects/polyshield/index.js b/projects/polyshield/index.js deleted file mode 100644 index 5a00c875821..00000000000 --- a/projects/polyshield/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const MasterChef = "0x0Ec74989E6f0014D269132267cd7c5B901303306"; -const SHI3LD = "0xf239e69ce434c7fb408b05a0da416b14917d934e"; - -module.exports = { - ...masterChefExports(MasterChef, "polygon", SHI3LD), - methodology: "TVL includes all farms and vaults in MasterChef contract", -} \ No newline at end of file diff --git a/projects/polysynth/index.js b/projects/polysynth/index.js deleted file mode 100644 index 917e3e8911d..00000000000 --- a/projects/polysynth/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') -let _response; - -async function getVaults(chain) { - if (!_response) _response = getConfig('polysynth', 'https://fast-wren-87.hasura.app/api/rest/vaults/all/meta') - return (await _response).vault_meta_data - .filter(i => i.chain_id === chains[chain]) -} - -const chains = { - ethereum: 1, - polygon: 137, - arbitrum: 42161 -} - -module.exports = {}; - -Object.keys(chains).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const vaultData = await getVaults(chain) - const vaults = vaultData.map(i => i.vault_address) - const beefys = await api.multiCall({ abi: 'address:BEEFY_VAULT', calls: vaults, permitFailure: true, }) - const tokens = vaultData.map((v, i) => beefys[i] ? beefys[i] : v.asset_address) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults] }) - } - } -}) \ No newline at end of file diff --git a/projects/polytrade/index.js b/projects/polytrade/index.js deleted file mode 100644 index 1f335e9916f..00000000000 --- a/projects/polytrade/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokens2 } = require('../helper/unwrapLPs') -const LENDER_POOL_CONTRACT = '0xE544a0Ca5F4a01f137AE5448027471D6a9eC9661'; -const chain = 'polygon' - -module.exports = { - methodology: 'gets the amount in liquidity pool', - start: '2022-07-06', - polygon: { - tvl: async (_,_b , {polygon: block}) => { - const strategy = await sdk.api2.abi.call({ - target: LENDER_POOL_CONTRACT, - abi: abis.strategy, - chain, block, - }) - const stable = await sdk.api2.abi.call({ - target: strategy, - abi: abis.stable, - chain, block, - }) - const aStable = await sdk.api2.abi.call({ - target: strategy, - abi: abis.aStable, - chain, block, - }) - return sumTokens2({ chain, block, owner: strategy, tokens: [stable, aStable ]}) - }, - } -}; - -const abis = { - strategy: "address:strategy", - stable: "address:stable", - aStable: "address:aStable", -} \ No newline at end of file diff --git a/projects/polywhale/index.js b/projects/polywhale/index.js deleted file mode 100644 index f3d665cb392..00000000000 --- a/projects/polywhale/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'polygon', - masterchef: '0x34bc3D36845d8A7cA6964261FbD28737d0d6510f', - nativeToken: '0x05089C9EBFFa4F0AcA269e32056b1b36B37ED71b' -}) -module.exports.deadFrom = 1648765747 \ No newline at end of file diff --git a/projects/polyyeld/index.js b/projects/polyyeld/index.js deleted file mode 100644 index 525b7527254..00000000000 --- a/projects/polyyeld/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const token = "0x1fd6cF265fd3428F655378a803658942095b4C4e" -const masterchef = "0x1B8deA992Ebb340a151383E18F63c1e89cE180a4"; - -module.exports = { - ...masterChefExports(masterchef, "polygon", token) -} \ No newline at end of file diff --git a/projects/pond/index.js b/projects/pond/index.js deleted file mode 100644 index b9b1703212b..00000000000 --- a/projects/pond/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fuse': '0x1d1f1A7280D67246665Bb196F38553b469294f3a' -}) - - diff --git a/projects/pond0x/index.js b/projects/pond0x/index.js deleted file mode 100644 index e183e23fb0b..00000000000 --- a/projects/pond0x/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { staking } = require("../helper/staking"); -const { getTokenSupplies } = require('../helper/solana'); - - -const ETH_STAKING_CONTRACT = "0xed96E69d54609D9f2cFf8AaCD66CCF83c8A1B470"; -const PONDOX_ETH = "0x423f4e6138e475d85cf7ea071ac92097ed631eea"; - -const WPOND_SOLANA_MINT = "3JgFwoYV74f6LwWjQWnr3YDPFnmBdwQfNyubv99jqUoq"; - -const COINGECKO_ID = "pond-coin"; - -async function solanaTVL(api) { - await getTokenSupplies([WPOND_SOLANA_MINT], api); - - const solanaKey = `solana:${WPOND_SOLANA_MINT}`; - const rawBalance = api.getBalances()[solanaKey]; - - if (rawBalance) { - const tokenAmount = Number(rawBalance) / 1e3; - - api.addCGToken(COINGECKO_ID, tokenAmount); - - delete api.getBalances()[solanaKey]; - } -} - - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(ETH_STAKING_CONTRACT, PONDOX_ETH) - }, - solana: { - tvl: () => ({}), - staking: solanaTVL - } -}; diff --git a/projects/ponder/index.js b/projects/ponder/index.js deleted file mode 100644 index d35ec4ddc6c..00000000000 --- a/projects/ponder/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { staking } = require('../helper/staking'); - -// Addresses on Bitkub Chain (Chain ID: 96) -const addresses = { - Factory: '0x20b17e92dd1866ec647acaa38fe1f7075e4b359e', - PonderToken: '0xe0432224871917fb5a137f4a153a51ecf9f74f57', - PonderStaking: '0x6c8119d33fd43f6b254d041cd5d2675586731dd5' -}; - -module.exports = { - methodology: 'TVL includes the liquidity in all Ponder trading pairs on Bitkub Chain. Staking counts PONDER tokens locked in the staking contract.', - start: 1704067200, // January 1, 2024 (approximate launch date) - bitkub: { - tvl: getUniTVL({ - factory: addresses.Factory, - useDefaultCoreAssets: true, - fetchBalances: true, - }), - staking: staking(addresses.PonderStaking, addresses.PonderToken, "bitkub", `ethereum:${addresses.PonderToken}`) - } -}; \ No newline at end of file diff --git a/projects/pony/index.js b/projects/pony/index.js deleted file mode 100644 index 3cc0755445a..00000000000 --- a/projects/pony/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: '0x0D97Fee619d955509e54B046c9992B6E9F5B0630', fetchCoValentTokens: true, tokenConfig: { onlyWhitelisted: false, }}), - }, -}; - -module.exports.deadFrom = '2023-07-09' \ No newline at end of file diff --git a/projects/ponyswap/index.js b/projects/ponyswap/index.js deleted file mode 100644 index 8509902d6f5..00000000000 --- a/projects/ponyswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'arbitrum': '0x66020547Ce3c861dec7632495D86e1b93dA6542c' -}) - - diff --git a/projects/ponytaswap/index.js b/projects/ponytaswap/index.js deleted file mode 100644 index db5563c9160..00000000000 --- a/projects/ponytaswap/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const {staking} = require("../helper/staking"); - -const pool = [ - '0x5E51E0a62121f3edDe63a45DaA178C1107EA8ee1', - '0xE32C24CA6AddEb28F28e6361c88Ca41FB24a62Bc', - '0x177b396560cDDB3876a32BEDA1887476566C1f1a' -]; -const contractAddr = ADDRESSES.rpg.WRPG; -module.exports = { - misrepresentedTokens: true, - rpg: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x1589DD24f11e1e49566fE99744E7487CbcAb2d43', - }), - staking: staking(pool,contractAddr) - } -} \ No newline at end of file diff --git a/projects/ponzi-market/index.js b/projects/ponzi-market/index.js deleted file mode 100644 index 5c95816f6bb..00000000000 --- a/projects/ponzi-market/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { nullAddress } = require('../helper/tokenMapping') - -const config = { - arbitrum: { factory: '0xfCd5dA8c2682e5d17235A5010A01bf6B51B2841D', fromBlock: 186066057 }, -} - -module.exports = { - methodology: - "Ponzi Market's TVL equals to the sum of all ETH balances of all game contracts", -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: "event CreateGame(address contractAddress, uint256 id, uint256 initialDeposit, address creator, uint256 fee, string name, uint256 roi, uint256 maxDeposit, uint256 minDeposit, string file)", fromBlock, }) - const pools = logs.map(log => log.contractAddress) - return api.sumTokens({ owners: pools, tokens: [nullAddress]}) - } - } -}) \ No newline at end of file diff --git a/projects/poofcash/index.js b/projects/poofcash/index.js deleted file mode 100644 index 88105e08e6a..00000000000 --- a/projects/poofcash/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const tokens = [ - { - holder: "0x5b46A20284366F5e79D9B3e5e2FA0F5702b8C72F", // wmcUSD - currency: "celo-dollar", - tokenAddress: ADDRESSES.celo.mcUSD, // mcUSD - }, - { - holder: "0xD96A74081440C28E9a3c09a3256D6e0454c52E41", // wmcUSD 2 - currency: "celo-dollar", - tokenAddress: ADDRESSES.celo.mcUSD, // mcUSD - }, - { - holder: "0xd3D7831D502Ab85319E1F0A18109aa9aBEBC2603", // wmCELO - currency: "celo", - tokenAddress: ADDRESSES.celo.mCELO, // mCELO - }, - { - holder: "0x337ddAD7Fcb34E93a54a7B6df7C8Bae00fA91D09", // wmCELO 2 - currency: "celo", - tokenAddress: ADDRESSES.celo.mCELO, // mCELO - }, - { - holder: "0xb7e4e9329DA677969376cc76e87938563B07Ac6A", // wmcEUR - currency: "celo-euro", - tokenAddress: ADDRESSES.celo.mCEUR, // mcEUR - }, - { - holder: "0xAb32a0b6d427ce11a4cEf7Be174A3F291a2753E6", // wmcEUR 2 - currency: "celo-euro", - tokenAddress: ADDRESSES.celo.mCEUR, // mcEUR - }, -]; - -const toNumber = (n) => Number(n) / 1e18; - -async function tvl(timestamp, ethBlock, { celo: block }) { - const chain = "celo"; - const balances = {}; - for (let token of tokens) { - const bal = await sdk.api.erc20.balanceOf({ - block, - chain, - target: token.tokenAddress, - owner: token.holder, - }); - sdk.util.sumSingleBalance(balances, token.currency, toNumber(bal.output)); - } - return balances; -} - -module.exports = { - methodology: - "Poof uses wrapped Moola tokens to hold user balances. Calculate how many Moola tokens are in each of these wrapped tokens.", - celo: { tvl }, -}; diff --git a/projects/pools-finance/index.js b/projects/pools-finance/index.js deleted file mode 100644 index 7f6cac6e2f3..00000000000 --- a/projects/pools-finance/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const iota = require('../helper/chain/iota') - -const DECIMALS = { - '0x2::iota::IOTA': 9, - '0x346778989a9f57480ec3fee15f2cd68409c73a62112d40a3efd13987997be68c::cert::CERT': 9, - '0xd3b63e603a78786facf65ff22e79701f3e824881a12fa3268d62a75530fe904f::vusd::VUSD': 6, -} - -async function tvl() { - const poolIds = [ - '0xcd2b276437db9612fc7a8d85fe5b3b09a6b5638c0b3ab2003f5f7b284e353d8c', - '0xb768e68c0337a58d8b769f6c270f0b17541f5a5952d9fd9bae1fa909027ce756', - '0x9b5c57e9eb88e85abf9b9b29ac7814ff7289ea2904c2713b5df92c8ebf99fe1b' - ] - - let balances = { - '0x2::iota::IOTA': 0, - '0x346778989a9f57480ec3fee15f2cd68409c73a62112d40a3efd13987997be68c::cert::CERT': 0, - '0xd3b63e603a78786facf65ff22e79701f3e824881a12fa3268d62a75530fe904f::vusd::VUSD': 0, - } - - for (const poolId of poolIds) { - const pool = await iota.getObject(poolId) - if (pool && pool.fields && pool.type) { - const match = pool.type.match(/<(.+), (.+)>/) - if (!match) continue - const [ , tokenA, tokenB ] = match - if (pool.fields.coin_a && DECIMALS[tokenA] !== undefined) { - const value = Number(BigInt(pool.fields.coin_a) / BigInt(10 ** DECIMALS[tokenA])) - balances[tokenA] += value - } - if (pool.fields.coin_b && DECIMALS[tokenB] !== undefined) { - const value = Number(BigInt(pool.fields.coin_b) / BigInt(10 ** DECIMALS[tokenB])) - balances[tokenB] += value - } - } - } - - const nativePool = await iota.getObject('0x02d641d7b021b1cd7a2c361ac35b415ae8263be0641f9475ec32af4b9d8a8056'); - const metadata = await iota.getObject('0x8c25ec843c12fbfddc7e25d66869f8639e20021758cac1a3db0f6de3c9fda2ed'); - - const total_supply = Number(BigInt(metadata.fields.total_supply.fields.value)); - const total_staked = Number(BigInt(nativePool.fields.total_staked)); - const total_rewards = Number(BigInt(nativePool.fields.total_rewards)); - - let exchange_rate = 1; - if ((total_staked + total_rewards) > 0) { - exchange_rate = total_supply / (total_staked + total_rewards); - } - - const certAsIota = balances['0x346778989a9f57480ec3fee15f2cd68409c73a62112d40a3efd13987997be68c::cert::CERT'] * exchange_rate; - const totalIota = balances['0x2::iota::IOTA'] + certAsIota; - - return { - iota: totalIota, - vusd: balances['0xd3b63e603a78786facf65ff22e79701f3e824881a12fa3268d62a75530fe904f::vusd::VUSD'], - } -} - -module.exports = { - methodology: "Calculates the TVL of Pools Finance on IOTA.", - timetravel: false, - iota: { - tvl, - } -} \ No newline at end of file diff --git a/projects/poolshark/index.js b/projects/poolshark/index.js deleted file mode 100644 index 254435239ff..00000000000 --- a/projects/poolshark/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -// https://github.com/poolshark-protocol/limit/blob/master/scripts/autogen/contract-deployments.json -const config = { - arbitrum: { limitPoolFactory: '0x8bb5db1625adb4ae4beb94a188d33062303f8fb7', limitPoolFromBlock: 158864748 }, - scroll: { limitPoolFactory: '0x3FA761492f411EBC64A81FCf3292fdC0b677c00f', limitPoolFromBlock: 2632885 }, - mode: { limitPoolFactory: '0x3FA761492f411EBC64A81FCf3292fdC0b677c00f', limitPoolFromBlock: 3371958 }, - inevm: { limitPoolFactory: '0x3FA761492f411EBC64A81FCf3292fdC0b677c00f', limitPoolFromBlock: 126842 }, -} - -Object.keys(config).forEach(chain => { - const { limitPoolFactory, limitPoolFromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: limitPoolFactory, - eventAbi: 'event LimitPoolCreated(address pool, address token, address indexed token0, address indexed token1, uint16 indexed swapFee, int16 tickSpacing, uint16 poolTypeId)', - onlyArgs: true, - fromBlock: limitPoolFromBlock, - }) - const ownerTokens = logs.map(log => [[log.token0, log.token1], log.pool]) - - if (chain === 'arbitrum') { - const logs = await getLogs({ - api, - target: '0xd28d620853af6837d76f1360dc65229d57ba5435', - eventAbi: 'event PoolCreated(address pool, address token, address indexed token0, address indexed token1, uint16 indexed swapFee, int16 tickSpacing, uint16 poolTypeId)', - onlyArgs: true, - fromBlock: 158864748, - toBlock: 165105915, - }) - ownerTokens.push(...logs.map(log => [[log.token0, log.token1], log.pool])) - } - return sumTokens2({ ownerTokens, api }) - } - } -}) diff --git a/projects/poolside/index.js b/projects/poolside/index.js deleted file mode 100644 index 6f1fb3bd23a..00000000000 --- a/projects/poolside/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { factory: '0xb8de4ab6c65e274630f5279f74eb69b66327ce50', fromBlock: 17877905 }, - base: { factory: '0x75a92DfB38C3506dcE3Bbb5EB32A10852f9ba64a', fromBlock: 3674737 }, - avax: { factory: '0x19470c5e0199B7157822Ca627860B08750eCe375', fromBlock: 35711675 }, - arbitrum: { factory: '0xdb55fdd06134424372ef3458da3ccc20e3a6ca16', fromBlock: 185295644}, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event PairCreated (address indexed token0, address indexed token1, address pair, uint256 count)', - onlyArgs: true, - fromBlock, - }) - const ownerTokens = logs.map(i => [[i.token0, i.token1], i.pair]) - return sumTokens2({ api, ownerTokens, }) - } - } -}) diff --git a/projects/pooltogether-v4/index.js b/projects/pooltogether-v4/index.js deleted file mode 100644 index c20d70c16a6..00000000000 --- a/projects/pooltogether-v4/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { tvl } = require('../pooltogether/v4.js') - -const chains = ['ethereum', 'avax', 'polygon', 'optimism',] - -module.exports = { - doublecounted: true, -} - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/pooltogether-v5/index.js b/projects/pooltogether-v5/index.js deleted file mode 100644 index 21a421aa6ee..00000000000 --- a/projects/pooltogether-v5/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { tvl } = require('../pooltogether/v5.js') - -const chains = ['optimism', 'base', 'arbitrum', 'ethereum', 'scroll', 'xdai', 'wc'] - -module.exports = { - doublecounted: true, -} - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/pooltogether/abi.json b/projects/pooltogether/abi.json deleted file mode 100644 index e2e2054abcc..00000000000 --- a/projects/pooltogether/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "accountedBalance": "uint256:accountedBalance", - "totalVaults": "uint256:totalVaults", - "allVaults": "function allVaults(uint256) view returns (address)", - "asset": "address:asset", - "totalAssets": "uint256:totalAssets" -} diff --git a/projects/pooltogether/index.js b/projects/pooltogether/index.js deleted file mode 100644 index 8762e66ea9b..00000000000 --- a/projects/pooltogether/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { tvl } = require('./v3.js') - -const chains = ['ethereum', 'polygon', 'bsc', 'celo'] - -module.exports = { - doublecounted: true, - hallmarks: [ - [1_634_320_800, 'V4 Launch'], - [1_693_453_300, 'V5 Beta Launch'], - [1_697_738_400, 'V5 Canary Launch'], - [1_713_399_300, 'V5 Launch'] - ], - methodology: `TVL is the total tokens deposited in PoolTogether` -} - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/pooltogether/v3.js b/projects/pooltogether/v3.js deleted file mode 100644 index 2d8964857dc..00000000000 --- a/projects/pooltogether/v3.js +++ /dev/null @@ -1,37 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const abi = require('./abi.json') - -const GRAPH_URLS = { - ethereum: [ - sdk.graph.modifyEndpoint('DpnLpjCKyyQ8TZnD2V6VNyx4JR7bGrCfGaLbrrsn5r7s'), - sdk.graph.modifyEndpoint('6SXRM2pyUiLKgNvXU6fiSF1E3dDDFGGAFiMurbZhZew8'), - sdk.graph.modifyEndpoint('6fBV3gC2fjdPsKvnmhi2SNzp74RYZj3tS1AiWFGHapyX'), - sdk.graph.modifyEndpoint('C12o8EA9X9EKjjDoxKGUiM9YniNT4RVCiV6jGuYWwwZX') - ], - celo: [sdk.graph.modifyEndpoint('7RqWfG27PACLZEvSMGtcK87qnV1DJCQfYjNdqwHDQdTe')], - bsc: [sdk.graph.modifyEndpoint('9Qmsc7YBLy2sdbEAcGv8vkpaqdGm3YMYoqiWLCid64MN')] -} -const GRAPH_QUERY = ` - query GET_POOLS { - prizePools { id } - } -` -async function tvl(api) { - const graphUrls = GRAPH_URLS[api.chain] ?? [] - const pools = [] - if (api.chain === 'polygon') pools.push('0x887E17D791Dcb44BfdDa3023D26F7a04Ca9C7EF4', '0xee06abe9e2af61cabcb13170e01266af2defa946') - for (const endpoint of graphUrls) { - const key = `pooltogether/${api.chain}/${endpoint.split('pooltogether/')[1]}` - const { prizePools } = await cachedGraphQuery(key, endpoint, GRAPH_QUERY,) - pools.push(...prizePools.map(i => i.id)) - } - const tokens = await api.multiCall({ abi: 'address:token', calls: pools}) - const bals = await api.multiCall({ abi: abi.accountedBalance, calls: pools}) - api.addTokens(tokens, bals) - return api.getBalances() -} - -module.exports = { - tvl, -} diff --git a/projects/pooltogether/v4.js b/projects/pooltogether/v4.js deleted file mode 100644 index e1c2629b4dc..00000000000 --- a/projects/pooltogether/v4.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const V4_POOLS = { - ethereum: [ - ['0xbcca60bb61934080951369a648fb03df4f96263c', '0x32e8d4c9d1b711bc958d0ce8d14b41f77bb03a64'] - ], - polygon: [ - ['0x1a13f4ca1d028320a707d99520abfefca3998b7f', '0xD4F6d570133401079D213EcF4A14FA0B4bfB5b9C'] - ], - avax: [ - ['0x46a51127c3ce23fb7ab1de06226147f446e4a857', '0x7437db21A0dEB844Fa64223e2d6Db569De9648Ff'] - ], - optimism: [ - ['0x625E7708f30cA75bfd92586e17077590C60eb4cD', '0x4ecB5300D9ec6BCA09d66bfd8Dcb532e3192dDA1'] - ] -} - -async function tvl(api) { - return sumTokens2({ api, tokensAndOwners: V4_POOLS[api.chain] }) -} - -module.exports = { - tvl -} diff --git a/projects/pooltogether/v5.js b/projects/pooltogether/v5.js deleted file mode 100644 index 134ae265162..00000000000 --- a/projects/pooltogether/v5.js +++ /dev/null @@ -1,41 +0,0 @@ -const abi = require('./abi.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const V5_VAULT_FACTORIES = { - optimism: ['0xF65FA202907D6046D1eF33C521889B54BdE08081', '0x6B17EE3a95BcCd605340454c5919e693Ef8EfF0E', '0xF0F151494658baE060034c8f4f199F74910ea806', '0x0C379e9b71ba7079084aDa0D1c1Aeb85d24dFD39', '0xec9f59bd06465b105e719c0b0483a4ed6a656775'], - base: ['0xE32F6344875494ca3643198d87524519Dc396DDf', '0xa55a74A457D8a24D68DdA0b5d1E0341746d444Bf'], - arbitrum: ['0x44Be003E55e7cE8a2e0ECC3266f8a9A9de2c07BC', '0x8020Fb37b21E0eF1707aDa7A914baf44F9045E52'], - ethereum: ['0x29c102109D6cb2D866CFEc380E0E10E9a287A75f', '0xd499CcF3e93F4cfb335Ac388E3C896D59cdDe7c3'], - scroll: ['0x3fdd8bFdF2F589c10C58457CDAE989C7943A30A5'], - xdai: ['0xc3aE3FE36A2645a93b2Fe350D81E80A14831e2A6'], - wc: ['0x08f8ebC3Afc32371d40EF59A951Cb7b2dA425159'] -} - -const V5_NON_FACTORY_VAULTS = { - optimism: ['0xa52e38a9147f5ea9e0c5547376c21c9e3f3e5e1f'], - base: [], - arbitrum: [], - ethereum: [], - scroll: [], - xdai: [], - wc: ['0x8aD5959c9245b64173D4C0C3CD3ff66dAc3caB0E'] -} - -async function tvl(api) { - const factories = V5_VAULT_FACTORIES[api.chain] - if (!factories) return {} - const vaults = [] - for (const factory of factories) { - const _vaults = await api.fetchList({ lengthAbi: abi.totalVaults, itemAbi: abi.allVaults, target: factory }) - vaults.push(..._vaults) - } - vaults.push(...V5_NON_FACTORY_VAULTS[api.chain]) - const tokens = await api.multiCall({ abi: abi.asset, calls: vaults }) - const bals = await api.multiCall({ abi: abi.totalAssets, calls: vaults }) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true }) -} - -module.exports = { - tvl -} diff --git a/projects/poolz-vesting/index.js b/projects/poolz-vesting/index.js deleted file mode 100644 index e36a125b261..00000000000 --- a/projects/poolz-vesting/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const config = { - bsc: { factory: '0xd82c03bd0543b567c9cec7b822373be2b167f00f', POOLX: '0xbAeA9aBA1454DF334943951d51116aE342eAB255',lockedDealV2: '0x436CE2ce8d8d2Ccc062f6e92faF410DB4d397905', }, - base: { factory: '0x7ff9315f538df7ec76ec4815249dd30519726460', }, - arbitrum: { factory: '0x9cfd8c7834be0dfe41f3fe68c29124066d5cd13b', lockedDealV2: '0x7Ff9315f538dF7eC76Ec4815249Dd30519726460', }, - ethereum: { factory: '0x9ff1db30c66cd9d3311b4b22da49791610922b13', lockedDealV2: '0x285B4866257eF51FfBDD239c10dE5f9493413d8f', }, - manta: { factory: '0x7Ff9315f538dF7eC76Ec4815249Dd30519726460', }, - telos: { factory: '0x2Bb9cFF524C76eb2eA27bC6cDbB93447115D8dcC', }, - polygon: { factory: '0x06fd710fD167f1f08b61e457F41D6e7c7DD9AF3D', lockedDealV2: '0x9D13B213852669077131f8A24A676f27ab0C2931', }, - coti: { factory: '0x7Ff9315f538dF7eC76Ec4815249Dd30519726460', }, - avax: { factory: '0x9c8F78E0aeAB8190c9d1DF7BEd0B26c1EDcB8DE6', lockedDealV2: '0xb16bbdf683ffd6d92290f7610bb10f22f9c71e9e', }, - unichain: { factory: '0x7Ff9315f538dF7eC76Ec4815249Dd30519726460', }, - moonbeam: { factory: '0x2Bb9cFF524C76eb2eA27bC6cDbB93447115D8dcC', }, -} - -Object.keys(config).forEach(chain => { - const { factory, POOLX, blacklistedTokens = [], lockedDealV2, } = config[chain] - module.exports[chain] = { - tvl: () => ({}), - vesting: async (api) => { - if (POOLX) blacklistedTokens.push(POOLX) - const tokens = await api.fetchList({ lengthAbi: 'totalVaults', itemAbi: 'vaultIdToTokenAddress', target: factory }) - const vaults = await api.fetchList({ lengthAbi: 'totalVaults', itemAbi: 'vaultIdToVault', target: factory }) - if (lockedDealV2) await api.sumTokens({ owner: lockedDealV2, tokens, blacklistedTokens, }) - return api.sumTokens({ tokensAndOwners2: [tokens, vaults], blacklistedTokens }) - } - } - if (POOLX) module.exports[chain].staking = async (api) => { - const vaults = await api.fetchList({ lengthAbi: 'totalVaults', itemAbi: 'vaultIdToVault', target: factory }) - return api.sumTokens({ owners: vaults, tokens: [POOLX] }) - } -}) \ No newline at end of file diff --git a/projects/poolznetwork/index.js b/projects/poolznetwork/index.js deleted file mode 100644 index 0d531921390..00000000000 --- a/projects/poolznetwork/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); -const coreAssets = require("../helper/coreAssets.json"); - -const stakingVaults = [ - "0x5eb57B1210338b13E3D5572d5e1670285Aa71702", - "0x436CE2ce8d8d2Ccc062f6e92faF410DB4d397905", - "0xbAeA9aBA1454DF334943951d51116aE342eAB255", -]; - -const POOLX = "0xbAeA9aBA1454DF334943951d51116aE342eAB255"; - -const pools = [ - "0xCc8f6A82Ff034C15dFDAcBcab29F7Ea28C616EF7", // The Poolz - "0x41b56bF3b21C53F6394a44A2ff84f1d2bBC27841", // SignUP Pool - "0x7Ff9315f538dF7eC76Ec4815249Dd30519726460", // The Poolz -]; - -const tokens = [coreAssets.null, coreAssets.bsc.USDT, coreAssets.bsc.BUSD]; - -module.exports = { - bsc: { - tvl: sumTokensExport({ owners: pools, tokens: tokens }), - staking: staking(stakingVaults, POOLX), - }, -}; diff --git a/projects/poopsicle/abi.json b/projects/poopsicle/abi.json deleted file mode 100644 index f907c4913bf..00000000000 --- a/projects/poopsicle/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalStaked": "uint256:totalStaked" -} \ No newline at end of file diff --git a/projects/poopsicle/index.js b/projects/poopsicle/index.js deleted file mode 100644 index f17c0cfe3a6..00000000000 --- a/projects/poopsicle/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -module.exports = { - deadFrom: '2022-08-22', - fantom: { - tvl: () => ({}), - pool2: () => ({}), - }, -}; diff --git a/projects/popcorn/fraxVault.js b/projects/popcorn/fraxVault.js deleted file mode 100644 index c301b046e40..00000000000 --- a/projects/popcorn/fraxVault.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); - -const getVaultsAbi = 'address[]:getRegisteredAddresses'; -const getAssetAbi = 'address:asset'; -const getStrategyAbi = 'address:strategy'; -const getTotalSupplyAbi = 'uint256:totalSupply'; -const convertToAssetsAbi = 'function convertToAssets(uint256) view returns (uint256)'; - - -async function addFraxVaultToTVL(balances, api) { - const vaultAddresses = await api.call({ target: "0x25172C73958064f9ABc757ffc63EB859D7dc2219", abi: getVaultsAbi }); - const assets = await api.multiCall({ abi: getAssetAbi, calls: vaultAddresses, }); - const totalSupply = await api.multiCall({ abi: getTotalSupplyAbi, calls: vaultAddresses, }); - const strategies = await api.multiCall({ abi: getStrategyAbi, calls: vaultAddresses, }); - - const totalAssets = []; - for (let i = 0; i < vaultAddresses.length; i++) { - // if the vault has no strategy: 1 share = 1 asset - if (strategies[i] === ADDRESSES.null) { - totalAssets.push(totalSupply[i]); - } else { - const assets = await api.call({ target: strategies[i], abi: convertToAssetsAbi, params: [totalSupply[i]] }) - totalAssets.push(assets); - } - } - assets.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, totalAssets[i], api.chain)) -} - -module.exports = { - addFraxVaultToTVL -} \ No newline at end of file diff --git a/projects/popcorn/index.js b/projects/popcorn/index.js deleted file mode 100644 index 5c81a41f591..00000000000 --- a/projects/popcorn/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache') -const { addFraxVaultToTVL } = require("./fraxVault"); -const { stakings } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const blacklists = { - ethereum: ['0xcF9273BA04b875F94E4A9D8914bbD6b3C1f08EDb', '0x77e88cA17A6D384DCBB13747F6767F30e3753e63'], - base: ['0x023577b99e8A59ac18454161EecD840Bd648D782'], -} - -const chains = ['ethereum', 'bsc', 'polygon', 'arbitrum', 'optimism', 'base', 'hemi'] - -const veVCX = "0x0aB4bC35Ef33089B9082Ca7BB8657D7c4E819a1A"; -const WETH_VCX_BAL_LP_TOKEN = "0x577A7f7EE659Aa14Dc16FD384B3F8078E23F1920"; -const stVCX = "0xE5d383FC43F6c370DdD3975cf9e363Ad42367697"; -const VCX = "0xce246eea10988c495b4a90a905ee9237a0f91543"; - -const fraxLockVaultsNotRegistered = [ - "0x44a7b29335cfc61C2bEA1c48710A1fE11f4aFBa9", - "0x1F0a3bF1e4Ea8f27449AFa0a3A27eFc3817431fc", - "0xDc5Ed7b972710594082479AF498B1dA02d03a273", -]; - -const hemiBTCVaults = [ - "0x748973D83d499019840880f61B32F1f83B46f1A5", - "0x0b8E088a35879f30a4d63F686B10adAD9cB3DBE1" -] - -const abis = { - getRegisteredAddresses: 'address[]:getRegisteredAddresses', - asset: 'address:asset', - totalAssets: 'uint256:totalAssets' -} - -const getHemiTvl = async (api) => { - const assets = hemiBTCVaults.map(vault => ADDRESSES.hemi.WBTC) // NBTC/bgBTC Price alternative on hemi - const totalAssets = await api.multiCall({ abi: abis.totalAssets, calls: hemiBTCVaults }); - api.add(assets, totalAssets) -} - -const getArbTvl = async (balances, api, vaults) => { - const fraxLockVaults = await api.call({ target: "0x25172C73958064f9ABc757ffc63EB859D7dc2219", abi: abis.getRegisteredAddresses }); - const allFraxs = fraxLockVaults.concat(fraxLockVaultsNotRegistered) - const filteredVaults = vaults.filter((address) => !allFraxs.includes(address)) - const assets = await api.multiCall({ abi: abis.asset, calls: filteredVaults }); - const totalAssets = await api.multiCall({ abi: abis.totalAssets, calls: filteredVaults }); - await addFraxVaultToTVL(balances, api); - api.add(assets, totalAssets) - return balances -} - -const tvl = async (api) => { - const balances = {} - const chain = api.chain - const chainId = api.getChainId() - const blacklistTokens = blacklists[chain] ?? [] - const data = await getConfig('popcorn/' + api.chain, `https://raw.githubusercontent.com/Popcorn-Limited/defi-db/main/vaults/${chainId}.json`); - const vaults = Object.keys(data).filter(i => !blacklistTokens.includes(i)); - if (chain === 'hemi') return getHemiTvl(api) - if (chain === 'arbitrum') return getArbTvl(balances, api, vaults) - - const assets = await api.multiCall({ abi: abis.asset, calls: vaults }) - const totalAssets = await api.multiCall({ abi: abis.totalAssets, calls: vaults, permitFailure: true }) - api.add(assets, totalAssets.map(i => i || 0)) - return sumTokens2({ api, resolveLP: true }) -} - -chains.forEach((chain) => { - module.exports[chain] = { - tvl, - ...(chain === 'ethereum' && { - staking: stakings([stVCX, veVCX], [VCX, WETH_VCX_BAL_LP_TOKEN]), - }) - } -}) - diff --git a/projects/popfi/index.js b/projects/popfi/index.js deleted file mode 100644 index 3ac797a2e4d..00000000000 --- a/projects/popfi/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2, } = require('../helper/solana') -const { PublicKey } = require("@solana/web3.js"); -const anchor = require("@project-serum/anchor"); -const POPFI_PROGRAM_ID = new PublicKey( - "AfjPnJz75bJiMKYeManVmPVQEGNcSaj9KeF6c5tncQEa" -); - - -async function tvl() { - const vault = PublicKey.findProgramAddressSync( - [Buffer.from(anchor.utils.bytes.utf8.encode("PDAHouseWallet"))], - POPFI_PROGRAM_ID - )[0].toBase58(); - // https://docs.parcl.co/addresses - return sumTokens2({ solOwners: [vault] }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} \ No newline at end of file diff --git a/projects/popsicle/index.js b/projects/popsicle/index.js deleted file mode 100644 index 487c2b279a8..00000000000 --- a/projects/popsicle/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const poolInfoAbi = require("../helper/abis/masterchef.json"); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { getConfig } = require('../helper/cache') - -const MasterChefContract = "0xbf513aCe2AbDc69D38eE847EFFDaa1901808c31c"; -const ice = "0xf16e81dce15B08F326220742020379B855B87DF9"; - -function pool2(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - await addFundsInMasterChef(balances, MasterChefContract, chainBlocks[chain], chain, undefined, poolInfoAbi.poolInfo, [ice]); - return balances; - }; -} - -const config = { - ethereum: 'https://analytics.back.popsicle.finance/api/v1/FragolaApy', - polygon: 'https://analytics.back.popsicle.finance/api/v1/polygon/FragolaApy', -} - -async function optimizerV3(time, block, _, {api}) { - const data = await getConfig('popsicle/'+api.chain, config[api.chain]) - const pools = data.map(i => i?.fragolaAddress).filter(i=>i) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools}) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools}) - const bals = await api.multiCall({ abi: 'function usersAmounts() returns (uint256,uint256)', calls: pools}) - bals.forEach(([bal0, bal1], i) => { - api.add(token0s[i], bal0) - api.add(token1s[i], bal1) - }) -} -async function fantomTvl(timestamp, block, chainBlocks, {api}) { - return api.sumTokens({ owner: '0xFDB988aF9ef9D0C430176f972bA82B98b476F3ee', tokens: ['0xddc0385169797937066bbd8ef409b5b3c0dfeb52']}) -} - -async function fantomStaking(api) { - return sumTokens2({ - api, - tokensAndOwners: [ - ['0xf16e81dce15b08f326220742020379b855b87df9', '0xaE2e07276A77DAdE3378046eEd92FfDE3995b0D5'], // ICE - [ADDRESSES.fantom.nICE, '0xBC8d95Ab498502242b41fdaD30bDFfC841f436e2'], // nICE - ], - }) -} - -// node test.js projects/popsicle/index.js -module.exports = { - doublecounted: true, - ethereum: { - pool2: pool2("ethereum"), - tvl: optimizerV3, - }, - polygon: { - tvl: optimizerV3, - }, - bsc: { - pool2: pool2("bsc"), - }, - fantom: { - pool2: pool2("fantom"), - tvl: fantomTvl, - staking: fantomStaking - }, - methodology: "We count pool2 liquidity staked on masterchef", -}; diff --git a/projects/poptown/abi.json b/projects/poptown/abi.json deleted file mode 100644 index 5c6375abac1..00000000000 --- a/projects/poptown/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pendingMlpCount": "uint256:pendingMlpCount", - "allMlp": "function allMlp(uint256) view returns (address)", - "uniswapPair": "address:uniswapPair", - "getMlp": "function getMlp(uint256) view returns (address uniswapPair, address submitter, uint256 liquidity, uint256 endDate, uint8 status, uint256 bonusToken0, uint256 bonusToken1)" -} \ No newline at end of file diff --git a/projects/poptown/index.js b/projects/poptown/index.js deleted file mode 100644 index 4a0ea7239cd..00000000000 --- a/projects/poptown/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const abi = { - "pendingMlpCount": "uint256:pendingMlpCount", - "allMlp": "function allMlp(uint256) view returns (address)", - "uniswapPair": "address:uniswapPair", - "getMlp": "function getMlp(uint256) view returns (address uniswapPair, address submitter, uint256 liquidity, uint256 endDate, uint8 status, uint256 bonusToken0, uint256 bonusToken1)" -} -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { stakings } = require("../helper/staking"); - -const proxyContract = "0x5406e1136F423602C0685DF8802f8ef28b73570d"; -const candyFarmsContracts = [ - "0xb9e10599248f9f3fd35ecd1a098f56dab537ebbe", - "0xd05497c6e24f7013ab67cdc8fa4d5af48e58ebe9", - "0xebb7ab0b5a219bb395b88dfb1e5ae05ef8fddfa7", -]; -const POP = "0x7fc3ec3574d408f3b59cd88709bacb42575ebf2b"; - -const ethTvl = async (api) => { - const countMlp = await api.call({ abi: abi.pendingMlpCount, target: proxyContract, }) - - const calls = [] - const mlpCalls = [] - - for (let i = 0; i < countMlp; i++) { - calls.push(i) - if (i < 6) mlpCalls.push(i) - } - - const getMlp = await api.multiCall({ target: proxyContract, abi: abi.getMlp, calls, }) - const mlps = await api.multiCall({ target: proxyContract, abi: abi.allMlp, calls: mlpCalls, }) - mlps.push(proxyContract) - return sumTokens2({ api, tokens: getMlp.map(i => i.uniswapPair), owners: mlps, resolveLP: true, }) -}; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(candyFarmsContracts, POP), - tvl: ethTvl, - }, - methodology: - "We count liquidity on the Marketplace and CandyFarms through Proxy and CandyFarm Contracts", -}; diff --git a/projects/portfinance/index.js b/projects/portfinance/index.js deleted file mode 100644 index f3819fc9274..00000000000 --- a/projects/portfinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') - -async function tvl() { - return sumTokens2({ owners: [ - '4bf5HQQZ9qtGGCuxYNnhiTrKpTMTX6HSoLy5a7wUjCEb', // Hedge Innovation Zone - '8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ', // Main Pool - 'GU1nCjN7mcLiSX1dtBw2t9agYCw3ybXfu1me41Q2tGT3', // Hubble Innovation Zone - 'Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa', // UXD Innovation Zone - ], }) -} - -module.exports = { - timetravel: false, - solana: { - tvl - }, -}; diff --git a/projects/poseidollar/index.js b/projects/poseidollar/index.js deleted file mode 100644 index bdeac4a2e3d..00000000000 --- a/projects/poseidollar/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const sui = require("../helper/chain/sui"); - -const extractRewardTokenType = (type) => { - const token = type - .split( - type.includes("::Custodian<") ? "::Custodian<" : "::FeeCollector<" - )[1] - .split(">")[0] - .trim(); - return token; -}; -const extractFarmTokensTypeLP = (type) => { - if (type.includes("::LP<")) { - const pair = type.split("::LP<")[1]; - const lpType = `${type - .split( - type.includes("::Custodian<") ? "::Custodian<" : "::FeeCollector<"[1] - )[1] - .split(">")[0] - }>`; - const coinXType = pair.split(",")[0]?.trim(); - const coinYType = pair.split(",")[1].split(">")[0]?.trim(); - return { coinXType, coinYType, lpType }; - } else { - const token = extractRewardTokenType(type); - return { coinXType: token }; - } -}; - -const getPool = async (listPoolFlowX, poolRegistry) => { - let poolList = await sui.getDynamicFieldObjects({ parent: poolRegistry, cursor: null, limit: 1000000 }); - let poolInfoResult = []; - for (let i = 0; i < poolList.length; i++) { - let pool = poolList[i]; - let totalStaked = pool.fields.value.fields.total_token_staked; - let poolId = pool.fields.value.fields.id.id; - let poolInfo = await sui.call("suix_getDynamicFields", [poolId, null, 100000]); - let { coinXType, coinYType, lpType } = extractFarmTokensTypeLP(poolInfo[0].objectType); - - let coinXStaked = 0; - let coinYStaked = 0; - if (lpType) { - const flowxPoolInfo = listPoolFlowX.find((item) => item.lp_supply.type.includes(lpType)); - if (!flowxPoolInfo) continue; - const lpRate = totalStaked / flowxPoolInfo.lp_supply.fields.value - coinXStaked = lpRate * flowxPoolInfo.reserve_x.fields.balance - coinYStaked = lpRate * flowxPoolInfo.reserve_y.fields.balance - } else { - coinXStaked = totalStaked - } - - if (coinXType === ADDRESSES.sui.USDC) coinXStaked = coinXStaked / 1e3 - if (coinYType === ADDRESSES.sui.USDC) coinYStaked = coinYStaked / 1e3 - - poolInfoResult.push({ - poolId: poolId, - totalStaked: totalStaked, - coinX: coinXType, - coinY: coinYType, - coinXStaked: coinXStaked, - coinYStaked: coinYStaked, - }); - } - - return poolInfoResult; -}; - -async function suiTVL(api) { - const listPoolFlowX = (await sui.getDynamicFieldObjects({ parent: "0xd15e209f5a250d6055c264975fee57ec09bf9d6acdda3b5f866f76023d1563e6", sleep: 2000 })) - .map((i) => i.fields.value.fields); - let poolShareInfo = await getPool(listPoolFlowX, "0x3cfad71fc1f65addbadc0d4056fbd1106aa6b9a219e3ea1f5356a2f500d13182"); - - //TVL on PSH Earn - ignoring pool 0, it is returning absurd value - for (let i = 1; i < poolShareInfo.length; i++) { - api.add(poolShareInfo[i].coinX, poolShareInfo[i].coinXStaked) - - if (poolShareInfo[i].coinY) - api.add(poolShareInfo[i].coinY, poolShareInfo[i].coinYStaked) - } -} - -module.exports = { - sui: { - tvl: suiTVL, - }, -}; diff --git a/projects/positionexchange/index.js b/projects/positionexchange/index.js deleted file mode 100644 index 8034b38b235..00000000000 --- a/projects/positionexchange/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { masterChefExports } = require("../helper/masterchef"); -const { stakings } = require("../helper/staking"); - -const token = "0x5CA42204cDaa70d5c773946e69dE942b85CA6706"; -const masterchef = "0x0C54B0b7d61De871dB47c3aD3F69FEB0F2C8db0B"; -const treasuryAddress = "0xF7224c91BaF653ef46F498a92E2FFF35Ad0588a2"; -const nftMiningProxy = "0x0Fb07a8527f45d7625Ab6486718910ce44a608b5"; -const newNftMintingProxy = "0xd8b6E267a0A46E13047056F105787dB9aFFb4b9a" - -const {bsc: chefExport} = (masterChefExports(masterchef, 'bsc', token, true)) - -module.exports = { - methodology: "TVL in Binance Smart Chain is calculated by value locked in the MasterChef contract, cast NFT and treasury value is the POSI in the treasury contract.", - bsc: { - tvl: chefExport.tvl, - pool2: chefExport.pool2, - staking: sdk.util.sumChainTvls([chefExport.staking, stakings([nftMiningProxy,newNftMintingProxy], token)]) - } -}; - diff --git a/projects/possumLabs/index.js b/projects/possumLabs/index.js deleted file mode 100644 index 07e33b7b14a..00000000000 --- a/projects/possumLabs/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const portalsContractAddress = "0x24b7d3034C711497c81ed5f70BEE2280907Ea1Fa"; -const portalsV2 = { - USDC: "0x9167CFf02D6f55912011d6f498D98454227F4e16", - USDCE: "0xE8EfFf304D01aC2D9BA256b602D736dB81f20984", - ETH: "0xe771545aaDF6feC3815B982fe2294F7230C9c55b", - WBTC: "0x919B37b5f2f1DEd2a1f6230Bf41790e27b016609", - ARB: "0x523a93037c47Ba173E9080FE8EBAeae834c24082", - LINK: "0x51623b54753E07Ba9B3144Ba8bAB969D427982b6", -}; - -async function tvl(api) { - const vaults = [portalsContractAddress, ...Object.values(portalsV2)] - const bals = await api.multiCall({ abi: 'uint256:totalPrincipalStaked', calls: vaults}) - const tokens = await api.multiCall({ abi: 'address:PRINCIPAL_TOKEN_ADDRESS', calls: vaults}) - api.add(tokens, bals) -} - -module.exports = { - methodology: - "TVL is equal to the amount staked in the Portals V1 and Portals V2 contracts.", - arbitrum: { tvl }, - hallmarks: [ - [1715776637, "Portals V2 Launch"], - ], -}; diff --git a/projects/posttech/index.js b/projects/posttech/index.js deleted file mode 100644 index 94113b5207f..00000000000 --- a/projects/posttech/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x87da6930626fe0c7db8bc15587ec0e410937e5dc" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - arbitrum: { - tvl - } -} \ No newline at end of file diff --git a/projects/potatoswap/index.js b/projects/potatoswap/index.js deleted file mode 100644 index 1f58526c079..00000000000 --- a/projects/potatoswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - xlayer: { tvl: getUniTVL({ factory: "0x630db8e822805c82ca40a54dae02dd5ac31f7fcf", useDefaultCoreAssets: true, }), }, - misrepresentedTokens: true, -} \ No newline at end of file diff --git a/projects/potluckprotocol/abi.json b/projects/potluckprotocol/abi.json deleted file mode 100644 index 62e9aa74f6b..00000000000 --- a/projects/potluckprotocol/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accMorphPerShare, uint16 depositFeeBP, uint256 lpSupply)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/potluckprotocol/index.js b/projects/potluckprotocol/index.js deleted file mode 100644 index be8f79f81e3..00000000000 --- a/projects/potluckprotocol/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x106804d24E0B7AB997D4b7Ab5cD5d8923C22707F', - nativeToken: '0x49894fcc07233957c35462cfc3418ef0cc26129f' -}) \ No newline at end of file diff --git a/projects/powaa-protocol/index.js b/projects/powaa-protocol/index.js deleted file mode 100644 index 5db82f82603..00000000000 --- a/projects/powaa-protocol/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') -let data - -async function getData() { - if (!data) data = _internal() - return data - - async function _internal() { - return getConfig('powaa-protocol', "https://raw.githubusercontent.com/powaa-protocol/powaa-contract-config/main/prod.json") - } -} - -async function tvl(ts, block) { - const config = await getData(); - const vaults = config["TokenVault"]; - const toa = vaults.map(i => [i.TokenAddress, i.VaultAddress]) - return sumTokens2({ block, tokensAndOwners: toa, }) -} - -module.exports = { - timetravel: false, - ethereum: { - tvl, - }, -}; diff --git a/projects/powadap/abi.js b/projects/powadap/abi.js deleted file mode 100644 index aa382202186..00000000000 --- a/projects/powadap/abi.js +++ /dev/null @@ -1,7 +0,0 @@ -const { get } = require("../helper/http"); - -module.exports = { - //Lockers - getTotalLockCount: "uint256:getTotalLockCount", - getLockAt: "function getLockAt(uint256 index) view returns (tuple(uint256 id, address token, address owner, uint256 amount, uint256 lockDate, uint256 tgeDate, uint256 tgeBps, uint256 cycle, uint256 cycleBps, uint256 unlockedAmount, string description))", -} \ No newline at end of file diff --git a/projects/powadap/api.js b/projects/powadap/api.js deleted file mode 100644 index 5e858743572..00000000000 --- a/projects/powadap/api.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./index') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("powadap", chainKeys), -} - -module.exports = indexExports -module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/powadap/apiCache.js b/projects/powadap/apiCache.js deleted file mode 100644 index 4336f7f3fd5..00000000000 --- a/projects/powadap/apiCache.js +++ /dev/null @@ -1,65 +0,0 @@ -const sdk = require("@defillama/sdk") -const abi = require('./abi') -const config = require('./config') -const { getUniqueAddresses } = require('../helper/utils') -const { getCache, setCache, } = require("../helper/cache") -const { vestingHelper, } = require("../helper/unknownTokens") - -const project = 'bulky/powadap' - -module.exports = {} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (timestamp, _block, { [chain]: block }) => { - const cache = await getCache(project, chain) || { vaults: {} } - const balances = {} - const { vaults, blacklist, log_coreAssetPrices, log_minTokenValue, } = config[chain] - for (const vault of vaults) { - if (!cache.vaults) cache.vaults = {} - if (!cache.vaults[vault]) cache.vaults[vault] = { lastTotalId: 0, tokens: [], } - const cCache = cache.vaults[vault] - - let calls = [] - const { output: size } = await sdk.api.abi.call({ - target: vault, - abi: abi.getTotalLockCount, - chain, block, - }) - - const lockAbi = abi.getLockAt - for (let i = cCache.lastTotalId; i < +size; i++) - calls.push({ params: i }) - cCache.lastTotalId = +size - - let { output: tokens } = await sdk.api.abi.multiCall({ - target: vault, - abi: lockAbi, - calls, chain, block, - permitFailure: true, - }) - - tokens.filter(i => i.output).map(i => cCache.tokens.push(i.output[1])) - - cCache.tokens = getUniqueAddresses(cCache.tokens) - - const balance = await vestingHelper({ - cache, - useDefaultCoreAssets: true, - blacklist, - owner: vault, - tokens: cCache.tokens, - block, chain, - log_coreAssetPrices, - log_minTokenValue, - }) - await setCache(project, chain, cache) - - Object.entries(balance).forEach(([token, bal]) => sdk.util.sumSingleBalance(balances, token, bal)) - } - - return balances - } - - } -}) diff --git a/projects/powadap/config.js b/projects/powadap/config.js deleted file mode 100644 index 44225c179b8..00000000000 --- a/projects/powadap/config.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - bsc: { - vaults: [ - '0x8F1af74e904ED74Ea1Ed0151fC51D5A2d5a8D628', - ], - blacklist: [ - - ], - log_coreAssetPrices: [ - - ], - log_minTokenValue: 1e6, - }, - genesys: { - vaults: [ - '0x8B1A8566132508A1Dde0e7091c24e33357A9E23D', - ], - }, - base: { - vaults: [ - '0xAd2B027C262042afef8dd9aFbE7F73D1183Ff00b', - ], - }, - -} \ No newline at end of file diff --git a/projects/powadap/index.js b/projects/powadap/index.js deleted file mode 100644 index 0a351c24994..00000000000 --- a/projects/powadap/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = require("./apiCache") - diff --git a/projects/powerbomb/abi.json b/projects/powerbomb/abi.json deleted file mode 100644 index 09d3d4c314a..00000000000 --- a/projects/powerbomb/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllPoolInUSD": "uint256:getAllPoolInUSD" -} \ No newline at end of file diff --git a/projects/powerbomb/index.js b/projects/powerbomb/index.js deleted file mode 100644 index 45f860eda11..00000000000 --- a/projects/powerbomb/index.js +++ /dev/null @@ -1,89 +0,0 @@ -// arbitrum -const arbCrvAtricryptoBtcAddr = "0x5bA0139444AD6f28cC28d88c719Ae85c81C307a5" -const arbCrvAtricryptoEthAddr = "0xb88C7a8e678B243a6851b9Fa82a1aA0986574631" -const arbCrvAtricryptoUsdtAddr = "0x8Ae32c034dAcd85a79CFd135050FCb8e6D4207D8" -const arbCrv2poolBtcAddr = "0xE616e7e282709d8B05821a033B43a358a6ea8408" -const arbCrv2poolEthAddr = "0xBE6A4db3480EFccAb2281F30fe97b897BeEf408c" - -// polygon -const polyCrvAtricryptoBtcAddr = "0x8799c7fEfB44B8c885b489eB38Fb067c75EbA2ab" -const polyCrvAtricryptoEthAddr = "0x5abbEB3323D4B19C4C371C9B056390239FC0Bf43" -const polyCrvAtricryptoUsdcAddr = "0x7331f946809406F455623d0e69612151655e8261" - -// optimism -const opCrvSusd3crvBtcAddr = "0x61F157E08b2B55eB3B0dD137c1D2A73C9AB5888e" -const opCrvSusd3crvEthAddr = "0xA8e39872452BA48b1F4c7e16b78668199d2C41Dd" -const opCrvSethethUsdcAddr = "0xb88C7a8e678B243a6851b9Fa82a1aA0986574631" -const opVeloUsdcSusdBtcAddr = "0x208e2D48b5A080E57792D8b175De914Ddb18F9a8" -const opVeloUsdcSusdEthAddr = "0xee9857e5e1d0089075F75ABe5255fc30695d09FA" -const opVeloFraxUsdcBtcAddr = "0x74f6C748E2DF1c89bf7ed29617A2B41b0f4f82A2" -const opVeloFraxUsdcEthAddr = "0x75633BFAbf0ee9036af06900b8f301Ed8ed29121" -const opVeloUsdcDaiBtcAddr = "0xc23CF2762094a4Dd8DC3D4AaAAfdB38704B0f484" -const opVeloUsdcDaiEthAddr = "0xC15d58452E7CC62F213534dcD1999EDcc4C56E53" -const opVeloUsdcLusdBtcAddr = "0xcaCdE37C8Aef43304e9d7153e668eDb7126Ff755" -const opVeloUsdcLusdEthAddr = "0xf12a8E2Fd857B134381c1B9F6027D4F0eE05295A" -const opVeloUsdcMaiBtcAddr = "0x52671440732589E3027517E22c49ABc04941CF2F" -const opVeloUsdcMaiEthAddr = "0x3BD8d78d77dfA391c5F73c10aDeaAdD9a7f7198C" -const opVeloOpUsdcBtcAddr = "0x2510E5054eeEbED40C3C580ae3241F5457b630D9" -const opVeloOpUsdcEthAddr = "0xFAcB839BF8f09f2e7B4b6C83349B5bbFD62fd659" -const opVeloOpUsdcUsdcAddr = "0x176CC5Ff9BDBf4daFB955003E6f8229f47Ef1E55" -const opVeloWethUsdcBtcAddr = "0xa0Ea9A553cB47658e62Dee4D7b49F7c8Da234B69" -const opVeloWethUsdcEthAddr = "0xd0f9990a611018b5b30BFE1C5433bf5bba2a9868" -const opVeloWethUsdcUsdcAddr = "0x0F0fFF5EA56b0eA2246A926F13181e33Be9FbAEA" -const opVeloWethSethUsdcAddr = "0xcba7864134e1A5326b817676ad5302A009c84d68" -const opCrvPengAddr = "0x68ca3a3BBD306293e693871E45Fe908C04387614" -const opCrvSethPengAddr = "0x98f82ADA10C55BC7D67b92d51b4e1dae69eD0250" - -const vaults = { - arbitrum: [ - arbCrvAtricryptoBtcAddr, - arbCrvAtricryptoEthAddr, - arbCrvAtricryptoUsdtAddr, - arbCrv2poolBtcAddr, - arbCrv2poolEthAddr, - ], - polygon: [ - polyCrvAtricryptoBtcAddr, - polyCrvAtricryptoEthAddr, - polyCrvAtricryptoUsdcAddr, - ], - optimism: [ - opCrvSusd3crvBtcAddr, - opCrvSusd3crvEthAddr, - opCrvSethethUsdcAddr, - opVeloUsdcSusdBtcAddr, - opVeloUsdcSusdEthAddr, - opVeloFraxUsdcBtcAddr, - opVeloFraxUsdcEthAddr, - opVeloUsdcDaiBtcAddr, - opVeloUsdcDaiEthAddr, - opVeloUsdcLusdBtcAddr, - opVeloUsdcLusdEthAddr, - opVeloUsdcMaiBtcAddr, - opVeloUsdcMaiEthAddr, - opVeloOpUsdcBtcAddr, - opVeloOpUsdcEthAddr, - opVeloOpUsdcUsdcAddr, - opVeloWethUsdcBtcAddr, - opVeloWethUsdcEthAddr, - opVeloWethUsdcUsdcAddr, - opVeloWethSethUsdcAddr, - opCrvPengAddr, - opCrvSethPengAddr, - ], -} - -module.exports = { - methodology: "TVL come from amount deposit into pools such as Curve & Velodrome.", - misrepresentedTokens: true, -} - -Object.keys(vaults).forEach(chain => { - const vault = vaults[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = await api.multiCall({ abi: "uint256:getAllPoolInUSD", calls: vault, }) - api.addUSDValue(balances.reduce((acc, i) => acc + +Math.round(i / 1e18), 0)) - } - } -}) \ No newline at end of file diff --git a/projects/powerflow-bridge/index.js b/projects/powerflow-bridge/index.js deleted file mode 100644 index bab71600597..00000000000 --- a/projects/powerflow-bridge/index.js +++ /dev/null @@ -1,118 +0,0 @@ -const BigNumber = require("bignumber.js"); -const ADDRESSES = require("../helper/coreAssets.json"); -const { getBalance2 } = require("../helper/chain/cosmos.js"); -const { sumTokensExport } = require("../helper/unwrapLPs.js"); -const { getConnection, sumTokens2 } = require("../helper/solana.js"); -const { PublicKey, LAMPORTS_PER_SOL } = require("@solana/web3.js"); - -const config = { - titan: { - atkx: { - coinGeckoId: "tokenize-xchange", - decimals: 18, - }, - [`${ADDRESSES.titan.factory}/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/usdc`]: { - coinGeckoId: "usdc", - decimals: 6, - }, - [`${ADDRESSES.titan.factory}/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/usdt`]: - { - coinGeckoId: "tether", - decimals: 6, - }, - [`${ADDRESSES.titan.factory}/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/eth`]: - { - coinGeckoId: "ethereum", - decimals: 18, - }, - [`${ADDRESSES.titan.factory}/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/sol`]: - { - coinGeckoId: "solana", - decimals: 9, - }, - "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/meow": - { - coinGeckoId: "meow-2", - decimals: 8, - }, - "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/oracler": - { - coinGeckoId: "oracler-ai", - decimals: 6, - }, - "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/monkeys": - { - coinGeckoId: "monkeys-2", - decimals: 6, - }, - }, -}; - -async function titanTvl(api) { - const bals = await getBalance2({ - chain: "titan", - owner: "titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy", - }); - - Object.entries(bals).forEach(([denom, amount]) => { - const token = config.titan[denom]; - if (!token) return; - - const tokenAmount = new BigNumber(amount) - .dividedBy(new BigNumber(10).pow(token.decimals)) - .toNumber(); - - api.addCGToken(token.coinGeckoId, tokenAmount); - }); -} - -const erc20Contracts = [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - "0x667102BD3413bFEaa3Dffb48fa8288819E480a88", // TKX -]; - -async function ethereumTvl(api) { - await sumTokensExport({ - owner: "0x9Be9C79f1d8bC09c5b9A6c312e360227Ddb57230", - tokens: erc20Contracts, - })(api); - - const weiAmount = await api.provider.getBalance( - "0x9Be9C79f1d8bC09c5b9A6c312e360227Ddb57230" - ); - const ethAmount = new BigNumber(weiAmount) - .dividedBy(new BigNumber(10).pow(18)) - .toNumber(); - - api.addCGToken("ethereum", ethAmount); -} - -async function solanaTvl() { - const balances = await sumTokens2({ - owner: "Cqv9L3HeevzDQipST26xNR5DBrcRRRqRsg4HTHA1wE9L", - }); - - const connection = getConnection(); - const lamportAmount = await connection.getBalance( - new PublicKey("Cqv9L3HeevzDQipST26xNR5DBrcRRRqRsg4HTHA1wE9L") - ); - const solAmount = lamportAmount / LAMPORTS_PER_SOL; - - balances["solana"] = solAmount; - - return balances; -} - -module.exports = { - methodology: "Counts the tokens locked in the PowerFlow Bridge contracts.", - titan: { - tvl: titanTvl, - }, - ethereum: { - tvl: ethereumTvl, - }, - solana: { - tvl: solanaTvl, - }, -}; diff --git a/projects/powerindex/abi.json b/projects/powerindex/abi.json deleted file mode 100644 index c2984213f9d..00000000000 --- a/projects/powerindex/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "getCurrentTokens": "address[]:getCurrentTokens", - "underlying": "address:underlying", - "getPricePerFullShare": "uint256:getPricePerFullShare", - "token": "address:token", - "get_virtual_price": "uint256:get_virtual_price", - "pricePerShare": "uint256:pricePerShare" -} \ No newline at end of file diff --git a/projects/powerindex/index.js b/projects/powerindex/index.js deleted file mode 100644 index faa31c0c479..00000000000 --- a/projects/powerindex/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const abi = require('./abi'); - -async function getBscTvl(api) { - const poolAddress = "0x40E46dE174dfB776BB89E04dF1C47d8a66855EB3" - const tokens = await api.call({ - target: poolAddress, - abi: abi.getCurrentTokens, - }) - return sumTokens2({ api, tokens, owner: poolAddress }) -} - -async function eth(api) { - let poolLogs = await getLogs({ - target: '0x0Ba2e75FE1368d8d517BE1Db5C39ca50a1429441', - topic: 'LOG_NEW_POOL(address,address)', - fromBlock: 11362346, - api, - }) - - poolLogs = poolLogs.concat(await getLogs({ - target: '0x967D77f1fBb5fD1846Ce156bAeD3AAf0B13020D1', - topic: 'LOG_NEW_POOL(address,address,address)', - fromBlock: 11706591, - api, - })) - - let pools = poolLogs.map((poolLog) => { - return `0x${poolLog.topics[2].slice(26)}` - }); - - const tokensAndOwners = [] - const tokens = await api.multiCall({ - abi: abi.getCurrentTokens, - calls: pools, - }) - tokens.forEach((t, i) => { - const owner = pools[i] - tokensAndOwners.push(...t.map(j => ([j, owner]))) - }) - return sumTokens2({ api, tokensAndOwners, }) - -} - -module.exports = { - start: '2020-11-30', // 11/30/2021 @ 08:37am (UTC) - bsc:{ - tvl: getBscTvl, - }, - ethereum:{ - tvl: eth - } -} diff --git a/projects/powerswap/index.js b/projects/powerswap/index.js deleted file mode 100644 index 9cb6b93fae1..00000000000 --- a/projects/powerswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - factory: '0xD51CFEb0fa23101f67cF62EB02D0a82A4BaD52b7', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/powh3d/index.js b/projects/powh3d/index.js deleted file mode 100644 index 0d372dda010..00000000000 --- a/projects/powh3d/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); -const P3D = "0xB3775fB83F7D12A36E0475aBdD1FCA35c091efBe"; - -module.exports = { - methodology: - "TVL includes a P3D farm contract", - ethereum: { - tvl: sumTokensExport({ owners: [P3D], tokens: [coreAssets.null] }), - }, -}; diff --git a/projects/powpeg/index.js b/projects/powpeg/index.js deleted file mode 100644 index e15c669a637..00000000000 --- a/projects/powpeg/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - rsk: { - // Powpeg (flyover) fast mod protocol - tvl: sumTokensExport({ owner: '0xAa9caf1e3967600578727f975F283446a3dA6612', tokens: [nullAddress] }) - } -} \ No newline at end of file diff --git a/projects/powswap/index.js b/projects/powswap/index.js deleted file mode 100644 index 0af5680945d..00000000000 --- a/projects/powswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x62009bD6349A3A1d7f1bcC7C69492Cd26F1FBF75', - }) - } -}; diff --git a/projects/prdt/index.js b/projects/prdt/index.js deleted file mode 100644 index ed67ab803f6..00000000000 --- a/projects/prdt/index.js +++ /dev/null @@ -1,96 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { sumTokensExport: solExports } = require("../helper/solana"); - -/** - * @typedef {Object} ChainConfig - * @property {string[]} owners - List of owner addresses - * @property {string[]} tokens - List of token addresses - */ - -/** - * Config object mapping chain names to PRDT owner addresses and token addresses - * that exist within the application. Each address is used with `sumTokensExport` - * to calculate TVL. - * - * @type {Object.} - */ -const config = { - ethereum: { - owners: Object.values({ - predictionPROV2: "0x062EB9830D1f1f0C64ac598eC7921f0cbD6d4841", - predictionPROV3: "0x792b18ec0d39093f10f8b34676e2f8669a495e9b", - balancePool: "0xd9632d09518D940E307580Dd1D7B4abd22A77dd4", - }), - tokens: [ADDRESSES.null, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC], - }, - arbitrum: { - owners: Object.values({ - predictionPROV2: "0x062EB9830D1f1f0C64ac598eC7921f0cbD6d4841", - predictionPROV3: "0xe2ca0a434effea151d5b2c649b754acd3c8a20f0", - }), - tokens: [ - ADDRESSES.null, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC_CIRCLE, - ], - }, - bsc: { - owners: Object.values({ - predictionBNB: "0x31B8A8Ee92961524fD7839DC438fd631D34b49C6", - predictionETH: "0xE39A6a119E154252214B369283298CDF5396026B", - predictionBTC: "0x3Df33217F0f82c99fF3ff448512F22cEf39CC208", - predictionPRO: "0x599974D3f2948b50545Fb5aa77C9e0bddc230ADE", - predictionPROV2: "0x22dB94d719659d7861612E0f43EE28C9FF9909C7", - predictionclassicV3: "0x00199E444155f6a06d74CF36315419d39b874f5c", - predictionPROV3: "0x49eFb44831aD88A9cFFB183d48C0c60bF4028da8", - balancePool: "0xd9632d09518D940E307580Dd1D7B4abd22A77dd4", - }), - tokens: [ - ADDRESSES.null, - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.ETH, - ], - }, - polygon: { - owners: Object.values({ - predictionBTCPOLY: "0xd71b0366CD2f2E90dd1F80A1F0EA540F73Ac0EF6", - predictionMATIC: "0x59e0aD27d0F58A15128051cAA1D2917aA71AB864", - predictionPRO: "0x764C3Ea13e7457261E5C1AaD597F281f3e738240", - predictionPROV2: "0x8251E5EBc2d2C20f6a116144800D569FAF75d746", - predictionclassicv3: "0x9f9564BE7b566dfE4B091a83a591752102aF3F33", - predictionPROV3: "0x0b9c8c0a04354f41b985c10daf7db30bc66998f5", - balancePool: "0xd9632d09518D940E307580Dd1D7B4abd22A77dd4", - }), - tokens: [ - ADDRESSES.null, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.USDC_CIRCLE, - ADDRESSES.polygon.WETH, - ], - }, - nibiru: { - owners: Object.values({ - // Owner from constructor of https://nibiscan.io/address/0x062EB9830D1f1f0C64ac598eC7921f0cbD6d4841/contract/6900/code - predictionPROOwner: "0x4cbB5d1c808F0FEe11575E77025b40f602793286", - predictionPROV3: "0x062EB9830D1f1f0C64ac598eC7921f0cbD6d4841", - }), - tokens: [ - ADDRESSES.null, - ...Object.values(ADDRESSES.nibiru).filter((addr) => { - return addr.startsWith("0x") && addr.length === 42 - }), - ], - }, - solana: {}, -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl: sumTokensExport(config[chain]) }; -}); - -const solOwners = ["CcccPbvfmpNE5q4JFS5qU3mszP8obUy5Fp2BQ6Hm9Mnp"] -module.exports.solana = { - tvl: solExports({ owners: solOwners, solOwners }) -} diff --git a/projects/prePo/index.js b/projects/prePo/index.js deleted file mode 100644 index c2a1fefbae9..00000000000 --- a/projects/prePo/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getUniqueAddresses } = require('../helper/utils') -const ADDRESSES = require("../helper/coreAssets.json") - -const config = { - arbitrum: { factory: '0x6f889e3fce9b13fe8cefa068a48f4074292e663c', fromBlock: 70478558 }, -} - -const config2 = { - blast: { factory: '0xB40DBBb7931Cfef8Be73AEEC6c67d3809bD4600B', fromBlock: 309120 }, -} - -const config3 = { - base: { factory: '0x7AeD738B791917E0f6578F62A529d8e22427877B', tokens: [ADDRESSES.base.WETH] }, -} - -Object.keys(config).forEach(chain => { - const { fromBlock, factory, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event MarketCreation(address, address, address, uint256, uint256, uint256, uint256, uint256 expiryTime)', - onlyArgs: true, - fromBlock: fromBlock, - }) - const markets = logs.map(i => i[0]) - let tokens = await api.multiCall({ abi: 'address:getCollateral', calls: markets }) - let wrappedTokens = getUniqueAddresses(tokens) - const tokenNames = await api.multiCall({ abi: 'string:name', calls: wrappedTokens }) - wrappedTokens = wrappedTokens.filter((v, i) => tokenNames[i].startsWith('prePO')) - let baseTokens = await api.multiCall({ abi: 'address:getBaseToken', calls: wrappedTokens }) - const tokensAndOwners = baseTokens.map((v, i) => [v, wrappedTokens[i]]) - markets.forEach((v, i) => tokensAndOwners.push([tokens[i], v])) - return sumTokens2({ api, tokensAndOwners, blacklistedTokens: wrappedTokens }) - } - } -}) - - - -Object.keys(config2).forEach(chain => { - const { fromBlock, factory, } = config2[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event MarketCreated(bytes32 indexed, address, address, uint256)', - onlyArgs: true, - fromBlock: fromBlock, - }) - const tokens = logs.map(i => i[2]) - return api.sumTokens({ owner: factory, tokens }) - } - } -}) - -Object.keys(config3).forEach(chain => { - const { factory, tokens } = config3[chain] - module.exports[chain] = { - tvl: async (api) => { - return api.sumTokens({ owner: factory, tokens }) - } - } -}) - diff --git a/projects/predict-fun/index.js b/projects/predict-fun/index.js deleted file mode 100644 index a4d1d1f4d8d..00000000000 --- a/projects/predict-fun/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - blast: { - tvl: sumTokensExport({ owners: [ - '0xE1A2E68C401378050fdba9704FA8BCb1f72b98f4', - '0x8F9C9f888A4268Ab0E2DDa03A291769479bAc285' - ], tokens: [ADDRESSES.blast.USDB]}) - }, - methodology: `TVL is the total quantity of USDB held in the conditional tokens contract as well as USDB collateral submitted to every predict.fun market ever opened - once the markets resolve, participants are able to withdraw their share given the redemption rate and their input stake.` -} diff --git a/projects/predictcoin/index.js b/projects/predictcoin/index.js deleted file mode 100644 index cc400b325bb..00000000000 --- a/projects/predictcoin/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const farmContract = "0x4b74C42b7aB96fEec003563c355f2fEfD0C80ee7"; -const lpContracts = [ - //PRED_BUSD-T_BabyLP - "0x47893DC78bE9231a031e594EB29636D3FCdA09B9", - //PRED_BUSD_CakeLP - "0xf38db36C3E1b2A93BA0EdA1ee49A86f9CbCA6980", - //PRED_WBNB_CakeLP - "0x3e4dfC6A8F2f1851b0694592D06DE5254afE820d", -]; -const PRED = "0xbdD2E3fdb879AA42748E9D47b7359323f226BA22"; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: (async) => ({}), - staking: staking(farmContract, PRED), - pool2: pool2s([farmContract], lpContracts), - }, - methodology: "Counts liquidty on the staking and Farming", -}; diff --git a/projects/predx/index.js b/projects/predx/index.js deleted file mode 100644 index 3233e6c110b..00000000000 --- a/projects/predx/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - zklink: { - tvl: sumTokensExport({ - owners: ["0x21855483F45ab1801CbE4248b9a2F178320c444B"], - tokens: [ADDRESSES.zklink.USDT] - }), - }, - base: { - tvl: sumTokensExport({ - owners: ["0x10dE7F398C76341B5a5C33693C930609863F692C"], - tokens: [ADDRESSES.base.USDC] - }), - }, - sei: { - tvl: sumTokensExport({ - owners: ["0xACbd78769333697ebB2c859a8344d1507b45F044"], - tokens: ["0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1"] - }), - }, - linea: { - tvl: sumTokensExport({ - owners: ["0x3F8D22db689A9c6F0560baCE255cdD854Ab84Ca5"], - tokens: [ADDRESSES.linea.USDC] - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: ["0x2e8c67E73883e787A164cD9FeA592d0AcDbC61D4"], - tokens: [ADDRESSES.bsc.USDT] - }), - }, - mantle: { - tvl: sumTokensExport({ - owners: ["0x8D2DB5B86b7C079FF8F7190D788766EeB789F104"], - tokens: [ADDRESSES.mantle.USDC] - }), - }, - btr: { - tvl: sumTokensExport({ - owners: ["0x8E4fb0169aECB4768220d97aA1D0106322716678"], - tokens: ["0xf8C374CE88A3BE3d374e8888349C7768B607c755"] - }), - }, -} diff --git a/projects/predy-v3/index.js b/projects/predy-v3/index.js deleted file mode 100644 index d01deb5ae84..00000000000 --- a/projects/predy-v3/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const v3Address = '0x4006A8840F8640A7D8F46D2c3155a58c76eCD56e'; - -const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; -const USDC_CONTRACT = ADDRESSES.arbitrum.USDC; - -const abi = { - v3: { - getTokenState: 'function getTokenState() returns (tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth), tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth))' - }, - v320: { - getAsset: 'function getAsset(uint256 _id) external view returns (tuple(uint256 id, address token, address supplyTokenAddress, tuple(uint256 riskRatio, int24 rangeSize, int24 rebalanceThreshold), tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth), tuple(address uniswapPool, int24 tickLower, int24 tickUpper, uint256 totalAmount, uint256 borrowedAmount, uint256 supplyPremiumGrowth, uint256 borrowPremiumGrowth, uint256 fee0Growth, uint256 fee1Growth, tuple(int256 positionAmount, uint256 lastFeeGrowth), tuple(int256 positionAmount, uint256 lastFeeGrowth), int256 rebalanceFeeGrowthUnderlying, int256 rebalanceFeeGrowthStable), bool isMarginZero, tuple(uint256 baseRate, uint256 kinkRate, uint256 slope1, uint256 slope2), tuple(uint256 baseRate, uint256 kinkRate, uint256 slope1, uint256 slope2), uint256 lastUpdateTimestamp, uint256 accumulatedProtocolRevenue))' - } -} - - -async function borrowed(api) { - // V3 - const v3TokenState = await api.call({ abi: abi.v3.getTokenState, target: v3Address, }) - api.add(WETH_CONTRACT, v3TokenState[0].totalNormalBorrowed) - api.add(USDC_CONTRACT, v3TokenState[1].totalNormalBorrowed) - -} - - -module.exports = { - methodology: "USDC and WETH locked on predy contracts", - arbitrum: { - tvl: sumTokensExport({ owners: [v3Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), - }, -}; diff --git a/projects/predy-v320/index.js b/projects/predy-v320/index.js deleted file mode 100644 index b79a2f04786..00000000000 --- a/projects/predy-v320/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const v320Address = '0x68a154fB3e8ff6e4DA10ECd54DEF25D9149DDBDE'; - -const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; -const USDC_CONTRACT = ADDRESSES.arbitrum.USDC; - -const abi = { - v3: { - getTokenState: 'function getTokenState() returns (tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth), tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth))' - }, - v320: { - getAsset: 'function getAsset(uint256 _id) external view returns (tuple(uint256 id, address token, address supplyTokenAddress, tuple(uint256 riskRatio, int24 rangeSize, int24 rebalanceThreshold), tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth), tuple(address uniswapPool, int24 tickLower, int24 tickUpper, uint256 totalAmount, uint256 borrowedAmount, uint256 supplyPremiumGrowth, uint256 borrowPremiumGrowth, uint256 fee0Growth, uint256 fee1Growth, tuple(int256 positionAmount, uint256 lastFeeGrowth), tuple(int256 positionAmount, uint256 lastFeeGrowth), int256 rebalanceFeeGrowthUnderlying, int256 rebalanceFeeGrowthStable), bool isMarginZero, tuple(uint256 baseRate, uint256 kinkRate, uint256 slope1, uint256 slope2), tuple(uint256 baseRate, uint256 kinkRate, uint256 slope1, uint256 slope2), uint256 lastUpdateTimestamp, uint256 accumulatedProtocolRevenue))' - } -} - - -async function borrowed(api) { - // V3.2 - const v320USDCState = await api.call({ abi: abi.v320.getAsset, target: v320Address, params: 1}) - const v320ETHState = await api.call({ abi: abi.v320.getAsset, target: v320Address, params: 2 }) - api.add(WETH_CONTRACT, v320ETHState[4][3]) - api.add(USDC_CONTRACT, v320USDCState[4][3]) -} - - -module.exports = { - methodology: "USDC and WETH locked on predy contracts", - arbitrum: { - tvl: sumTokensExport({ owners: [v320Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), - - }, -}; diff --git a/projects/predy-v5/index.js b/projects/predy-v5/index.js deleted file mode 100644 index fac473eda2b..00000000000 --- a/projects/predy-v5/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const v5Address = '0x06a61E55d4d4659b1A23C0F20AEdfc013C489829'; - -const abi = { - v5: { - getAsset: "function getAsset(uint256 _id) view returns (tuple(uint256 id, uint256 pairGroupId, tuple(address token, address supplyTokenAddress, tuple(uint256 totalCompoundDeposited, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 assetGrowth, uint256 debtGrowth) tokenStatus, tuple(uint256 baseRate, uint256 kinkRate, uint256 slope1, uint256 slope2) irmParams) stablePool, tuple(address token, address supplyTokenAddress, tuple(uint256 totalCompoundDeposited, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 assetGrowth, uint256 debtGrowth) tokenStatus, tuple(uint256 baseRate, uint256 kinkRate, uint256 slope1, uint256 slope2) irmParams) underlyingPool, tuple(uint256 riskRatio, int24 rangeSize, int24 rebalanceThreshold) riskParams, tuple(address uniswapPool, int24 tickLower, int24 tickUpper, uint64 numRebalance, uint256 totalAmount, uint256 borrowedAmount, uint256 lastRebalanceTotalSquartAmount, uint256 lastFee0Growth, uint256 lastFee1Growth, uint256 borrowPremium0Growth, uint256 borrowPremium1Growth, uint256 fee0Growth, uint256 fee1Growth, tuple(int256 positionAmount, uint256 lastFeeGrowth) rebalancePositionUnderlying, tuple(int256 positionAmount, uint256 lastFeeGrowth) rebalancePositionStable, int256 rebalanceFeeGrowthUnderlying, int256 rebalanceFeeGrowthStable) sqrtAssetStatus, bool isMarginZero, bool isIsolatedMode, uint256 lastUpdateTimestamp) data)", - globalData: "function globalData() view returns (uint256 pairGroupsCount, uint256 pairsCount, uint256 vaultCount)", - } -} - -async function tvl(api) { - const { pairsCount } = await api.call({ abi: abi.v5.globalData, target: v5Address }) - const data = await api.fetchList({ itemCount: pairsCount - 1, startFromOne: true, itemAbi: abi.v5.getAsset, target: v5Address }) - const tokens = [] - data.forEach(({ stablePool, underlyingPool }) => { - tokens.push(stablePool.token) - tokens.push(underlyingPool.token) - }) - return api.sumTokens({ tokens, owner: v5Address, }) -} - -async function borrowed(api) { - const { pairsCount } = await api.call({ abi: abi.v5.globalData, target: v5Address }) - const data = await api.fetchList({ itemCount: pairsCount - 1, startFromOne: true, itemAbi: abi.v5.getAsset, target: v5Address }) - data.forEach(({ stablePool, underlyingPool }) => { - api.add(stablePool.token, stablePool.tokenStatus.totalNormalBorrowed) - api.add(underlyingPool.token, underlyingPool.tokenStatus.totalNormalBorrowed) - }) -} - -module.exports = { - methodology: "USDC and WETH locked on predy contracts", - arbitrum: { - tvl, - borrowed, - }, - hallmarks: [ - [1688490168, "Launch Predy V5"] - ], -}; \ No newline at end of file diff --git a/projects/predy/index.js b/projects/predy/index.js deleted file mode 100644 index 101dc8cf780..00000000000 --- a/projects/predy/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const v2Address = '0xc7ec02AEeCdC9087bf848c4C4f790Ed74A93F2AF'; -const v202Address = '0xAdBAeE9665C101413EbFF07e20520bdB67C71AB6'; - -const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; -const USDC_CONTRACT = ADDRESSES.arbitrum.USDC; - -module.exports = { - methodology: "USDC and WETH locked on predy contracts", - arbitrum: { - tvl: sumTokensExport({ owners: [v202Address, v2Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), - }, - hallmarks: [ - [1671092333, "Launch Predy V3"], - [1678734774, "Launch Predy V3.2"] - ], -}; diff --git a/projects/premia-v3/index.js b/projects/premia-v3/index.js deleted file mode 100644 index fdc47993139..00000000000 --- a/projects/premia-v3/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { cachedGraphQuery } = require('../helper/cache') - -const getAddresses = ` - query PoolAddresses { - vaults(first: 1000, orderBy: totalValueLockedUSD, orderDirection: desc) { - address - asset { - address - } - } - } -` - -const config = { - arbitrum: { poolFactory: '0xae4fb6622f25f397587f11638da8ce88c27b5645', poolFromBlock: 119998935, vaultGraph: 'https://subgraph.satsuma-prod.com/5d8f840fce6d/premia/premia-v3-arbitrum/api' }, -} - -Object.keys(config).forEach(chain => { - const { poolFactory, poolFromBlock, vaultGraph, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: poolFactory, - eventAbi: "event PoolDeployed(address indexed base, address indexed quote, address oracleAdapter, uint256 strike, uint256 maturity, bool isCallPool, address poolAddress)", - onlyArgs: true, - fromBlock: poolFromBlock, - }) - const ownerTokens = logs.map(log => [[log.base, log.quote], log.poolAddress]) - if (vaultGraph) { - const { vaults } = await cachedGraphQuery('premia/v3/vaults/'+api.chain, vaultGraph, getAddresses) - const vaultTokens = vaults.map(log => [[log.asset.address], log.address]) - ownerTokens.push(...vaultTokens) - } - return api.sumTokens({ ownerTokens }) - } - } -}) diff --git a/projects/premia/index.js b/projects/premia/index.js deleted file mode 100644 index 182f5f0a23d..00000000000 --- a/projects/premia/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { staking } = require('../helper/staking') -const { getLogs } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - ethereum: { factory: '0x4f273f4efa9ecf5dd245a338fad9fe0bab63b350', fromBlock: 13509301, optionsContract: '0x5920cb60B1c62dC69467bf7c6EDFcFb3f98548c0', optionsBaseToken: ADDRESSES.ethereum.DAI, }, - arbitrum: { factory: '0x89b36ce3491f2258793c7408bd46aac725973ba2', fromBlock: 3304690, }, - fantom: { factory: '0xD9e169e31394efccd78CC0b63a8B09B4D71b705E', fromBlock: 37104409, }, - optimism: { factory: '0x48D49466CB2EFbF05FaA5fa5E69f2984eDC8d1D7', fromBlock: 16597183, }, - bsc: { optionsContract: '0x8172aAC30046F74907a6b77ff7fC867A6aD214e4', optionsBaseToken: ADDRESSES.bsc.BUSD, }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, ownerTokens = [], optionsBaseToken, optionsContract, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - - if (factory) { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event DeployPool (address indexed base, address indexed underlying, int128 indexed initialCLevel64x64, address baseOracle, address underlyingOracle, address pool)', - onlyArgs: true, - fromBlock, - }) - logs.forEach((v) => ownerTokens.push([[v.underlying, v.base], v.pool])) - } - - if (optionsContract) { - const tokens = await api.fetchList({ lengthAbi: "uint256:tokensLength", itemAbi: "function tokens(uint256) view returns (address)", target: optionsContract }) - if (optionsBaseToken) tokens.push(optionsBaseToken) - ownerTokens.push([tokens, optionsContract]) - } - - return api.sumTokens({ ownerTokens }) - } - } -}) - -module.exports.ethereum.staking = staking(["0x16f9d564df80376c61ac914205d3fdff7057d610", "0xF1bB87563A122211d40d393eBf1c633c330377F9"], "0x6399c842dd2be3de30bf99bc7d1bbf6fa3650e70") \ No newline at end of file diff --git a/projects/premio/index.js b/projects/premio/index.js deleted file mode 100644 index 97813e33f53..00000000000 --- a/projects/premio/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require('../helper/staking') - - - -module.exports = { - methodology: 'TVL counts staked PREMIO coins on the platform itself. CoinGecko is used to find the price of tokens in USD.', - celo: { - staking: staking('0x1DA2C9f15E2399960032dCF709B873712626ABF1', '0x94140c2ea9d208d8476ca4e3045254169791c59e') - }, - kava: { - tvl:() => 0, - staking: staking('0x0281CBD3e40Ce01b514360a47BdB4dB26Dd76bc3', '0x9B82ee2C5e811d9849D7766edC3D750d9ab6492c') - }, -}; - diff --git a/projects/preon/index.js b/projects/preon/index.js deleted file mode 100644 index 44425b980c2..00000000000 --- a/projects/preon/index.js +++ /dev/null @@ -1,82 +0,0 @@ -//preon -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - arbitrum: { - ownerTokens: [ - [["0xe50fa9b3c56ffb159cb0fca61f5c9d750e8128c8"], "0xA2Ce28868A852f4B01903B5de07d4835feFe9086"], // aArbWETH - [["0x8ffdf2de812095b1d19cb146e4c004587c0a0692"], "0x8AD15574A87e30061f24977faaA2d99bC45A3169"], // aArbLUSD - PSM - [[ADDRESSES.arbitrum.WSTETH], "0x58F046c5374E9cF942b8Eeb056126Ce86dD63EEB"], // wstETH - ], - }, - polygon: { - ownerTokens: [ - [["0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97"], "0x82CD73E9cc96cC12569D412cC2480E4d5962AfF5"], // aPolWMatic - [["0xEA1132120ddcDDA2F119e99Fa7A27a0d036F7Ac9"], "0x8105Fc3487F117982Eb5A5456D8639b0353242d8"], // aPolSTMATIC - [["0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE"], "0xdc4552609a3f673f0b72958f678d4a48d0e94ebd"], // aPolDAI - ], - }, - base: { - ownerTokens: [ - [[ADDRESSES.base.WETH], "0xEfaA597277Ce531e52018d42224aB579Bbe31a04"], // aeroAMO - ], - }, -}; - -const extraConfig = { - polygon: [ - { - token: "0xcd78A20c597E367A4e478a2411cEB790604D7c8F", // Balancer maticX-WMATIC Stable Pool - owner: "0x67f9ea7675773026706d5b817ad9aecb1a7ba530", // Strategy - gauge: "0x39EE6Fb813052E67260A3F95D3739B336aABD2C6", // Balancer maticX-WMATIC Stable Pool Aura Deposit Vault - }, - ], -}; - -async function tokenTvl(api) { - return await sumTokens2({ api, ...config[api.chain] }); -} - -async function customTvl(api) { - if (Object.keys(extraConfig).includes(api.chain)) { - await Promise.all( - extraConfig[api.chain].map(async ({ token, owner, gauge }) => { - const balance = await api.call({ - abi: "function balanceOf(address) external view returns (uint256)", - target: gauge, - params: [owner], - }); - - api.add(token, balance); - }) - ); - } -} - -async function baseTvl(api) { - const aeroAMO = '0xEfaA597277Ce531e52018d42224aB579Bbe31a04' - const [amountWeth, _amountOETH] = await api.call({ - abi: 'function getPositionPrincipal() view returns (uint256, uint256)', - target: aeroAMO - }) - api.add(ADDRESSES.base.USDC, amountWeth) - return api.getBalances() -} - -async function tvl(api) { - if (api.chain === 'base') { - return baseTvl(api) - } - await Promise.all([tokenTvl, customTvl].map((fn) => fn(api))); -} - -module.exports = { - methodology: "Adds up the total value locked as collateral, as well as the AMO positions on Preon Finance", -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl, - }; -}); diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js deleted file mode 100644 index 07379c2fdd3..00000000000 --- a/projects/prime-protocol/index.js +++ /dev/null @@ -1,133 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2, } = require('../helper/unwrapLPs'); -const { cachedGraphQuery } = require('../helper/cache'); - -const PRIME_MASTER_NETWORK = 'moonbeam'; - -const PRIME_SATELLITE_NETWORKS = { - moonbeam: 1284, - avax: 43114, - arbitrum: 42161, - ethereum: 1, - bsc: 56, - polygon: 137, - base: 8453, - optimism: 10, - celo: 42220, - // filecoin: 314 -}; - -const primeSubgraphUrl = sdk.graph.modifyEndpoint('6LrvPGTZeMZfEQh4p9DvDBBv4G8cjhLs4v3mdiUycERp'); - -const primeMarketsQuery = `{ - markets { address chainId } - }`; - -const MASTER_VIEW_CONTRACT = { - v1_4_6: { - address: '0x47ecFB57deD0160d66103A6A201C5f30f7CC7d13', - abi: { - calculateAssetTVL: 'function calculateRawAssetTVL(uint256 chainId, address pToken) view returns (uint256)' - } - } -}; - -const PRIME_CONTRACTS = { - MASTER_VIEW_v1_4_6: { - address: '0x47ecFB57deD0160d66103A6A201C5f30f7CC7d13', - abi: { - calculateAssetTVL: 'function calculateRawAssetTVL(uint256 chainId, address pToken) view returns (uint256)' - } - }, - MASTER_VIEW_v1_10_2: { - address: '0x30095B6616eB637B72f86E9613cdAcF18C11ED8d', - abi: { - getCollateralFactors: 'function getCollateralFactors(address[] memory underlyings, uint256[] memory chainIds) view returns (uint256[] memory collateralFactors)', - } - }, - IRM_ROUTER_v1_10_2: { - address: '0xd7af46089C5ED25871b770F18a2Ff1C07929abfa', - abi: { - borrowInterestRatePerBlock: 'function borrowInterestRatePerBlock(address loanAsset, uint256 loanAssetChainId) view returns (uint256)', - } - }, - PTOKEN_v1_10_2: { - abi: { - underlying: 'function underlying() view returns (address)' - } - }, - MASTER_VIEW_v1_10_3: { - address: '0x9Ee26206Bc1143668aD56498b8C7A621bFa27c00', - abi: { - supplierInterestRateWithoutTuple: 'function supplierInterestRateWithoutTuple(uint256 chainId, address loanAsset) view returns (uint256 rate, uint256 factor)' - } - }, -}; - -async function getMarketsForCurrentNetwork(api) { - const { markets: primeMarketsData } = await cachedGraphQuery('prime-protocol', primeSubgraphUrl, primeMarketsQuery) - - const markets = []; - - for (let m = 0; m < primeMarketsData.length; m++) { - const market = primeMarketsData[m]; - const marketAddress = market.address; - const marketChainId = market.chainId; - - if (PRIME_SATELLITE_NETWORKS[api.chain] == marketChainId) { - const underlyingAddress = ( - await api.multiCall({ - abi: PRIME_CONTRACTS.PTOKEN_v1_10_2.abi.underlying, - calls: [marketAddress].map((ma) => ({ - target: ma, - })), - permitFailure: true, - chain: api.chain, - }) - )[0]; - - markets.push({ - pTokenMarketAddress: marketAddress, - pTokenUnderlyingAddress: underlyingAddress - }); - } - } - - return markets; -} - -async function borrowed(api) { - const moonbeamApi = new sdk.ChainApi({ chain: PRIME_MASTER_NETWORK }); - - const markets = await getMarketsForCurrentNetwork(api); - - let uDecimals = await api.multiCall({ abi: 'erc20:decimals', calls: markets.map(market => market.pTokenUnderlyingAddress), permitFailure: true, }) - uDecimals = uDecimals.map(i => i ?? 18) - - let rawTvls = await moonbeamApi.multiCall({ - abi: MASTER_VIEW_CONTRACT.v1_4_6.abi.calculateAssetTVL, - target: MASTER_VIEW_CONTRACT.v1_4_6.address, - calls: markets.map(i => ({ params: [PRIME_SATELLITE_NETWORKS[api.chain], i.pTokenMarketAddress] })), - }) - - rawTvls.forEach((v, i) => api.add(markets[i].pTokenUnderlyingAddress, v * (10 ** uDecimals[i] / 1e18))) - const tvlBal = await sumTokens2({ balances: {}, api, tokensAndOwners: markets.map(market => [market.pTokenUnderlyingAddress, market.pTokenMarketAddress]) }) - Object.entries(tvlBal).forEach(([token, bal]) => { - api.add(token, bal * -1, { skipChain: true }) - }) -} - -async function tvl(api) { - const markets = await getMarketsForCurrentNetwork(api); - - return sumTokens2({ api, tokensAndOwners: markets.map(market => [market.pTokenUnderlyingAddress, market.pTokenMarketAddress]) }) -} - -module.exports = { - timetravel: false, - methodology: 'Adds the deposits of each market to the borrows that were not redeposited into that market.', -}; - -Object.keys(PRIME_SATELLITE_NETWORKS).forEach(primeSatelliteNetwork => { - module.exports[primeSatelliteNetwork] = { tvl, borrowed, } -}) diff --git a/projects/prime-staked/index.js b/projects/prime-staked/index.js deleted file mode 100644 index 0fffd6deec9..00000000000 --- a/projects/prime-staked/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const DEPOSIT_POOL = "0xa479582c8b64533102f6f528774c536e354b8d32"; - -async function tvl(api) { - const config = await api.call({ abi: 'address:lrtConfig', target: DEPOSIT_POOL}) - const tokens= await api.call({ abi: 'address[]:getSupportedAssetList', target: config}) - const bals = await api.multiCall({ abi: 'function getTotalAssetDeposits(address) external view returns (uint256)', calls: tokens, target: DEPOSIT_POOL}) - api.addTokens(tokens, bals); - return api.getBalances() -} - -module.exports = { - doublecounted: true, - methodology: - "Returns the total assets owned by primeETH", - ethereum: { - tvl, - }, -}; diff --git a/projects/primestaking-xyz/index.js b/projects/primestaking-xyz/index.js deleted file mode 100644 index b250510fd32..00000000000 --- a/projects/primestaking-xyz/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const xdcStakeRewardTokenAddress = '0x9B8e12b0BAC165B86967E771d98B520Ec3F665A6' - -const tvl = async (api) => { - const totalSupply = await api.call({ abi: 'erc20:totalSupply', target: xdcStakeRewardTokenAddress, }) - api.addGasToken(totalSupply) -} - -module.exports = { - xdc: { tvl } -} \ No newline at end of file diff --git a/projects/primex-finance/abi.js b/projects/primex-finance/abi.js deleted file mode 100644 index 99f2abea91b..00000000000 --- a/projects/primex-finance/abi.js +++ /dev/null @@ -1,6 +0,0 @@ -const abi = { - allBuckets: 'function allBuckets() external view returns (address[])', - borrowedAsset: 'address:borrowedAsset', -} - -module.exports = { abi } \ No newline at end of file diff --git a/projects/primex-finance/index.js b/projects/primex-finance/index.js deleted file mode 100644 index 0db753b19b9..00000000000 --- a/projects/primex-finance/index.js +++ /dev/null @@ -1,215 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') -const { abi } = require('./abi') - -const config = { - polygon: { - bucketsFactory: '0x7E6915D307F434E4171cCee90e180f5021c60089', - bucketsFactoryv2: '0x9649CfDCfAa9c80907e63dD9Cb161cBA2033F3A0', - bucketsFactoryv3: '0x84318E4573B5c109d1b57A1fDC2607A0C7d5296F', - positionManager: '0x02bcaA4633E466d151b34112608f60A82a4F6035', - traderBalanceVault: '0x0801896C67CF024606BcC92bd788d6Eb077CC74F', - defaultTokens: { - MATIC: ADDRESSES.polygon.WMATIC_1, - WMATIC: ADDRESSES.polygon.WMATIC_2, - WETH: ADDRESSES.polygon.WETH_1, - WBTC: ADDRESSES.polygon.WBTC, - USDC: ADDRESSES.polygon.USDC, - USDT: ADDRESSES.polygon.USDT, - AAVE: "0xD6DF932A45C0f255f85145f286eA0b292B21C90B", - DAI: ADDRESSES.polygon.DAI, - LINK: "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39", - GNS: "0xE5417Af564e4bFDA1c483642db72007871397896", - EPMX: "0xDc6D1bd104E1efa4A1bf0BBCf6E0BD093614E31A", - OM: "0xc3ec80343d2bae2f8e680fdadde7c17e71e114ea", - SAND: "0xbbba073c31bf03b8acf7c28ef0738decf3695683", - QUICK: ADDRESSES.polygon.QUICK, - UNI: "0xb33eaad8d922b1083446dc23f610c2567fb5180f", - MANA: "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4", - BAL: "0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3", - GRT: "0x5fe2b58c013d7601147dcdd68c143a77499f5531", - SNX: "0x50b728d8d964fd00c2d0aad81718b71311fef68a", - GHST: "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7", - AVAX: "0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b", - CRV: "0x172370d5cd63279efa6d502dab29171933a610af", - SUSHI: "0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a", - SOL: "0x7dff46370e9ea5f0bad3c4e29711ad50062ea7a4", - PAXG: "0x553d3d295e0f695b9228246232edf400ed3560b5", - WSTETH: ADDRESSES.polygon.WSTETH, - LDO: "0xC3C7d422809852031b44ab29EEC9F1EfF2A58756", - FRAX: ADDRESSES.polygon.FRAX, - FXS: "0x1a3acf6d19267e2d3e7f898f42803e90c9219062", - }, - PMX: "0x0B3EAEAd748facDb9d943d3407011f16Eb17D0Cf", - aaveTokens: { - [ADDRESSES.polygon.WETH_1]: "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - [ADDRESSES.polygon.WBTC]: "0x078f358208685046a11C85e8ad32895DED33A249", - [ADDRESSES.polygon.WMATIC_2]: "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97", - [ADDRESSES.polygon.USDC]: "0x625E7708f30cA75bfd92586e17077590C60eb4cD", - [ADDRESSES.polygon.USDT]: "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", - }, - }, - arbitrum: { - bucketsFactory: '0x4e6f7372bCE4083c779c17B240A94dc2EA57AE67', - bucketsFactoryv2: '0xB4d3A9f10D3D687FaF3b05b9aa3054856A1d7be8', - bucketsFactoryv3: '0x10dDc924A0687a8bbEe6051A8CdAEc9ecA83F2E1', - positionManager: '0x86890E30cE9E1e13Db5560BbEb435c55567Af1cd', - traderBalanceVault: '0xc08FFBBA8c5f42beb7e6dd29142cC61855a3076B', - defaultTokens: { - USDCe: ADDRESSES.arbitrum.USDC, - USDC: ADDRESSES.arbitrum.USDC_CIRCLE, - USDT: ADDRESSES.arbitrum.USDT, - WETH: ADDRESSES.arbitrum.WETH, - ETH: ADDRESSES.GAS_TOKEN_2, - WBTC: ADDRESSES.arbitrum.WBTC, - ARB: ADDRESSES.arbitrum.ARB, - DAI: ADDRESSES.arbitrum.DAI, - LINK: ADDRESSES.arbitrum.LINK, - PENDLE: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", - GMX: ADDRESSES.arbitrum.GMX, - GNS: "0x18c11FD286C5EC11c3b683Caa813B77f5163A122", - RDNT: "0x3082CC23568eA640225c2467653dB90e9250AaA0", - MAGIC: "0x539bdE0d7Dbd336b79148AA742883198BBF60342", - JOE: "0x371c7ec6D8039ff7933a2AA28EB827Ffe1F52f07", - STG: "0x6694340fc020c5E6B96567843da2df01b2CE1eb6", - EPMX: "0xA533f744B179F2431f5395978e391107DC76e103", - LDO: "0x13Ad51ed4F1B7e9Dc168d8a00cB3f4dDD85EfA60", - UNI: "0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0", - PEPE: "0x25d887Ce7a35172C62FeBFD67a1856F20FaEbB00", - GRT: "0x9623063377AD1B27544C965cCd7342f7EA7e88C7", - CRV: "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978", - KNC: "0xe4DDDfe67E7164b0FE14E218d80dC4C08eDC01cB", - XAI: "0x4cb9a7ae498cedcbb5eae9f25736ae7d428c9d66", - FXS: "0x9d2F299715D94d8A7E6F5eaa8E654E8c74a988A7", - TIA: "0xD56734d7f9979dD94FAE3d67C7e928234e71cD4C", - RPL: "0xB766039cc6DB368759C1E56B79AFfE831d0Cc507", - AAVE: "0xba5DdD1f9d7F570dc94a51479a000E3BCE967196", - WSTETH: ADDRESSES.arbitrum.WSTETH, - RETH: "0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8", - WEETH: ADDRESSES.arbitrum.weETH, - ETHFI: ADDRESSES.arbitrum.ETHFI, - EZETH: ADDRESSES.optimism.ezETH, - RSETH: ADDRESSES.berachain.rsETH, - USDE: ADDRESSES.arbitrum.USDe, - CBETH: "0x1debd73e752beaf79865fd6446b0c970eae7732f", - USDY: "0x35e050d3C0eC2d29D269a8EcEa763a183bDF9A9D", - TBTC: "0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40", - FRAX: ADDRESSES.arbitrum.FRAX, - FRXETH: "0x178412e79c25968a32e89b11f63b33f733770c2a", - SFRXETH: "0x95ab45875cffdba1e5f451b950bc2e42c0053f39", - }, - PMX: "0x0B3EAEAd748facDb9d943d3407011f16Eb17D0Cf", - aaveTokens: { - [ADDRESSES.arbitrum.DAI]: "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", - [ADDRESSES.arbitrum.USDC]: "0x625E7708f30cA75bfd92586e17077590C60eb4cD", - [ADDRESSES.arbitrum.USDT]: "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", - [ADDRESSES.arbitrum.LINK]: "0x191c10Aa4AF7C30e871E70C95dB0E4eb77237530", - [ADDRESSES.arbitrum.WBTC]: "0x078f358208685046a11C85e8ad32895DED33A249", - [ADDRESSES.arbitrum.WETH]: "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - }, - }, - ethereum: { - bucketsFactory: '0x7dE8607157124c894Ba9F18dd6138B5E8AAd5890', - bucketsFactoryv2: '0x55120da310A0c5fd81Fd3bb8C177F6649bE30ACc', - bucketsFactoryv3: '0xe0b3daA28E5c32B4AB7eE9700B57CE38eEf9872b', - positionManager: '0x99d63fEA4b3Ef6ca77941df3C5740dAd1586f0B8', - traderBalanceVault: '0x156e2fC8e1906507412BEeEB6640Bf999a1Ea76b', - defaultTokens: { - WETH: ADDRESSES.ethereum.WETH, - ETH: ADDRESSES.GAS_TOKEN_2, - WBTC: ADDRESSES.ethereum.WBTC, - USDC: ADDRESSES.ethereum.USDC, - USDT: ADDRESSES.ethereum.USDT, - DAI: ADDRESSES.ethereum.DAI, - MATIC: ADDRESSES.ethereum.MATIC, - LINK: ADDRESSES.ethereum.LINK, - UNI: ADDRESSES.ethereum.UNI, - SOL: ADDRESSES.ethereum.WSOL, - MKR: ADDRESSES.ethereum.MKR, - SNX: ADDRESSES.ethereum.SNX, - AAVE: ADDRESSES.ethereum.AAVE, - COMP: "0xc00e94cb662c3520282e6f5717214004a7f26888", - CRV: ADDRESSES.ethereum.CRV, - ['1INCH']: '0x111111111117dC0aa78b770fA6A738034120C302', - EPMX: "0xA533f744B179F2431f5395978e391107DC76e103", - POL: ADDRESSES.ethereum.POL, - PAXG: "0x45804880de22913dafe09f4980848ece6ecbaf78", - WSTETH: ADDRESSES.ethereum.WSTETH, - RETH: ADDRESSES.ethereum.RETH, - SDAI: ADDRESSES.ethereum.SDAI, - WEETH: ADDRESSES.ethereum.WEETH, - ETHFI: ADDRESSES.ethereum.ETHFI, - LDO: ADDRESSES.ethereum.LIDO, - EZETH: ADDRESSES.linea.rzETH, - RSETH: "0xa1290d69c65a6fe4df752f95823fae25cb99e5a7", - RSWETH: "0xfae103dc9cf190ed75350761e95403b7b8afa6c0", - USDE: ADDRESSES.ethereum.USDe, - SUSDE: ADDRESSES.ethereum.sUSDe, - PUFETH: "0xd9a442856c234a39a81a089c06451ebaa4306a72", - CDETH: ADDRESSES.ethereum.cbETH, - USDP: "0x8e870d67f660d95d5be530380d0ec0bd388289e1", - PYUSD: "0x6c3ea9036406852006290770bedfcaba0e23a0e8", - ONDO: "0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3", - TBTC: ADDRESSES.ethereum.tBTC, - FRAX: ADDRESSES.ethereum.FRAX, - FXS: ADDRESSES.ethereum.FXS, - FRXETH: "0x5e8422345238f34275888049021821e8e08caa1f", - SFRXETH: ADDRESSES.ethereum.sfrxETH, - }, - PMX: "0x0B3EAEAd748facDb9d943d3407011f16Eb17D0Cf", - aaveTokens: { - [ADDRESSES.ethereum.WETH]: "0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8", - [ADDRESSES.ethereum.WSTETH]: "0x0B925eD163218f6662a35e0f0371Ac234f9E9371", - [ADDRESSES.ethereum.WBTC]: "0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8", - [ADDRESSES.ethereum.USDC]: "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c", - [ADDRESSES.ethereum.DAI]: "0x018008bfb33d285247A21d44E50697654f754e63", - [ADDRESSES.ethereum.LINK]: "0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a", - [ADDRESSES.ethereum.AAVE]: "0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9", - }, - }, - base: { - bucketsFactory: '0xCf552C38A0Ecb51982Af28d4e475beF27aC2dD25', - bucketsFactoryv2: '0x8e8792881227e8fee8a9e05a567A44D3FA04a7f0', - bucketsFactoryv3: '0x15e975dA0080e7A3731Ac329245241b83AcFcAfC', - positionManager: '0x01ED183275956dBd0064B789B778cA0921e695E9', - traderBalanceVault: '0xDf7B923a7bF62331092B49fd36EE26A21755DFa1', - vpmx: "0x4C7876977ECe31fDb8e932e17977D4C93DB1938F", - PMX: "0x0B3EAEAd748facDb9d943d3407011f16Eb17D0Cf", - defaultTokens: {}, - aaveTokens: {}, - } -} - -Object.keys(config).forEach(chain => { - const { bucketsFactory, bucketsFactoryv2, bucketsFactoryv3, positionManager, traderBalanceVault, vpmx, defaultTokens, aaveTokens, PMX, } = config[chain] - - module.exports[chain] = { - tvl: async (api) => { - const buckets = await api.call({ target: bucketsFactory, abi: abi.allBuckets }) - const borrowedTokensAddresses = await api.multiCall({ abi: abi.borrowedAsset, calls: buckets }) - - const bucketsv2 = await api.call({ target: bucketsFactoryv2, abi: abi.allBuckets }) - const borrowedTokensAddressesv2 = await api.multiCall({ abi: abi.borrowedAsset, calls: bucketsv2 }) - const tokensAndOwnersBucketsv2 = bucketsv2.map((b, i) => [borrowedTokensAddressesv2[i], b]) - const aTokensAndOwnersBucketsv2 = bucketsv2.map((b, i) => [aaveTokens[borrowedTokensAddressesv2[i].toLowerCase()], b]).filter((p) => p[0]) - - const bucketsv3 = await api.call({ target: bucketsFactoryv3, abi: abi.allBuckets }) - const borrowedTokensAddressesv3 = await api.multiCall({ abi: abi.borrowedAsset, calls: bucketsv3 }) - const tokensAndOwnersBucketsv3 = bucketsv3.map((b, i) => [borrowedTokensAddressesv3[i], b]) - const aTokensAndOwnersBucketsv3 = bucketsv3.map((b, i) => [aaveTokens[borrowedTokensAddressesv3[i].toLowerCase()], b]).filter((p) => p[0]) - - const tokensAndOwnersBuckets = buckets.map((b, i) => [borrowedTokensAddresses[i], b]) - const aTokensAndOwnersBuckets = buckets.map((b, i) => [aaveTokens[borrowedTokensAddresses[i].toLowerCase()], b]).filter((p) => p[0]) - - const tokensAndOwnersPM = Object.values(defaultTokens).map(t => [t, positionManager]) - const tokensAndOwnersTBV = Object.values(defaultTokens).map(t => [t, traderBalanceVault]) - - const tokensAndOwners = tokensAndOwnersBuckets.concat(tokensAndOwnersBucketsv2, tokensAndOwnersBucketsv3, aTokensAndOwnersBuckets, aTokensAndOwnersBucketsv2, aTokensAndOwnersBucketsv3, tokensAndOwnersPM, tokensAndOwnersTBV,) - - return sumTokens2({ api, tokensAndOwners }) - } - } - - if (vpmx) - module.exports[chain].staking = api => api.sumTokens({ owner: vpmx, tokens: [PMX] }) -}) diff --git a/projects/primitive/index.js b/projects/primitive/index.js deleted file mode 100644 index 52bd9b6b094..00000000000 --- a/projects/primitive/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const sdk = require("@defillama/sdk"); -const rmmTVL = require('./rmm') -const v1TVL = require('./v1') - -module.exports = { - ethereum: { - start: '2022-03-22', // unix timestamp (utc 0) specifying when the project began, or where live data begins - tvl: sdk.util.sumChainTvls([rmmTVL, v1TVL, ]), // - }, -} \ No newline at end of file diff --git a/projects/primitive/rmm.js b/projects/primitive/rmm.js deleted file mode 100644 index 2656aace690..00000000000 --- a/projects/primitive/rmm.js +++ /dev/null @@ -1,11 +0,0 @@ -const engine_weth_usdc = '0xd3541aD19C9523c268eDe8792310867C57BE39e4' // WETH-USDC Pair -const engines = [engine_weth_usdc] - -module.exports = async function tvl(api) { - const risky = await api.multiCall({ abi: 'address:risky', calls: engines}) - const stable = await api.multiCall({ abi: 'address:stable', calls: engines}) - const toa = [] - risky.forEach((v, i) => toa.push([v, engines[i]])) - stable.forEach((v, i) => toa.push([v, engines[i]])) - return api.sumTokens({ tokensAndOwners: toa }) -} \ No newline at end of file diff --git a/projects/primitive/v1.js b/projects/primitive/v1.js deleted file mode 100644 index ecf1b391b98..00000000000 --- a/projects/primitive/v1.js +++ /dev/null @@ -1,24 +0,0 @@ -const getUnderlyingTokenAddress = "address:getUnderlyingTokenAddress" -const getStrikeTokenAddress = "address:getStrikeTokenAddress" -const { getLogs } = require('../helper/cache/getLogs') - -const START_BLOCK = 11142900 -const REGISTRY = '0x16274044dab9635Df2B5AeAF7CeCb5f381c71680' - -module.exports = async function tvl(api) { - const logs = (await getLogs({ - api, - target: REGISTRY, - fromBlock: START_BLOCK, - onlyArgs: true, - eventAbi: 'event DeployedOptionClone (address indexed from, address indexed optionAddress, address indexed redeemAddress)' - })) - - const tokensAndOwners = [] - const options = logs.map(i => i.optionAddress) - const underlying = await api.multiCall({ abi: getUnderlyingTokenAddress, calls: options}) - const strikes = await api.multiCall({ abi: getStrikeTokenAddress, calls: options}) - underlying.forEach((v, i) => tokensAndOwners.push([v, options[i]])) - strikes.forEach((v, i) => tokensAndOwners.push([v, options[i]])) - return api.sumTokens({ tokensAndOwners }) -} diff --git a/projects/printerfinancial/helper.js b/projects/printerfinancial/helper.js deleted file mode 100644 index 29a2c3c2c38..00000000000 --- a/projects/printerfinancial/helper.js +++ /dev/null @@ -1,103 +0,0 @@ -const { staking, stakingUnknownPricedLP } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const sdk = require("@defillama/sdk"); -const token0Abi = 'address:token0' -const token1Abi = 'address:token1' -const { default: BigNumber } = require("bignumber.js"); - -function printerTvl(token, share, rewardPool, masonry, pool2LPs, chain = "ethereum", transform = undefined, tokensOnCoingecko = true, lpWithShare = undefined) { - if (transform === undefined) transform = addr => `${chain}:${addr}`; - if (tokensOnCoingecko) { - return { - [chain]: { - tvl: async () => ({}), - staking: staking(masonry, share, chain), - pool2: pool2(rewardPool, pool2LPs, chain, transform) - } - } - } - else if (!tokensOnCoingecko) { - const pool2 = async (timestamp, block, chainBlocks) => { - let balances = {}; - token = token.toLowerCase(); - share = share.toLowerCase(); - block = chainBlocks[chain]; - const pool2Balances = (await sdk.api.abi.multiCall({ - calls: pool2LPs.map(p => ({ - target: p, - params: rewardPool - })), - abi: "erc20:balanceOf", - block, - chain - })).output; - const supplies = (await sdk.api.abi.multiCall({ - calls: pool2LPs.map(p => ({ - target: p - })), - abi: "erc20:totalSupply", - block, - chain - })).output; - const pool2Token0 = (await sdk.api.abi.multiCall({ - calls: pool2LPs.map(p => ({ - target: p - })), - abi: token0Abi, - block, - chain - })).output; - const pool2Token1 = (await sdk.api.abi.multiCall({ - calls: pool2LPs.map(p => ({ - target: p - })), - abi: token1Abi, - block, - chain - })).output; - - for (let i = 0; i < pool2LPs.length; i++) { - let listedToken; - const token0 = pool2Token0[i].output.toLowerCase(); - const token1 = pool2Token1[i].output.toLowerCase(); - if (token0 === token || token0 === share) { - listedToken = token1; - } - else if (token1 === token || token1 === share) { - listedToken = token0; - } - const listedTokenBalance = (await sdk.api.erc20.balanceOf({ - target: listedToken, - owner: pool2LPs[i], - block, - chain - })).output; - const balance = BigNumber(pool2Balances[i].output).times(listedTokenBalance).div(supplies[i].output).times(2).toFixed(0); - sdk.util.sumSingleBalance(balances, transform(listedToken), balance); - } - - /* single stake */ - const listedTokenBalanceS = (await sdk.api.erc20.balanceOf({ - target: token, - owner: rewardPool, - block, - chain - })).output; - sdk.util.sumSingleBalance(balances, transform(token), BigNumber(listedTokenBalanceS).toFixed(0)); - - return balances - } - - return { - [chain]: { - tvl: async () => ({}), - staking: stakingUnknownPricedLP(masonry, share, chain, lpWithShare), - pool2 - } - } - } -} - -module.exports = { - printerTvl -} \ No newline at end of file diff --git a/projects/printerfinancial/index.js b/projects/printerfinancial/index.js deleted file mode 100644 index 090151ec83b..00000000000 --- a/projects/printerfinancial/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const { printerTvl } = require("./helper"); - -const chains = [ - { - chain: "fantom", - token: "0xea97c7c1c89d4084e0BFB88284FA90243779da9f", - share: "0xFFAbb85ADb5c25D57343547a8b32B62f03814B12", - rewardPool: "0xF95AB2A261B0920f3d5aBc02A41dBe125eBA10aE", - masonry: "0xb1E6B2a4e6c5717CDBf8F6b01e89455C920a3646", - pool2: [ - "0x5BfFC514670263c4c0858B00E4618c729fef6c59", - "0xDECC75dBF9679d7A3B6AD011A98F05b5CC6A8a9d", - "0xa09697EbE1C5B1c8021dc8B3b38c528efE019b29" - ] - }, - { - chain: "bsc", - token: "0xE239b561369aeF79eD55DFdDed84848A3bF60480", - share: "0xc08Aa06C1D707BF910ADA0BdEEF1353F379E64e1", - rewardPool: "0xf4B0Fd23af6FC66886EA59A5007500a27eaEC0bB", - masonry: "0xC46e07BBA17Bc36F1529321d076B3B3c50b4a4B5", - pool2: [ - "0xa5c4953c64e943071ef8545c092ccb4fb3c0269f", - "0xafa3e7f9d489d022f3d91902fb9540bab0af52c1", - "0x8F7c61b3FA9c18c711a42e2219B4cA6C67C47aDa" - ] - }, - { - chain: "avax", - token: "0x1affBc17938a25d245e1B7eC6f2fc949df8E9760", - share: "0x32975907733f93305be28e2bfd123666b7a9c863", - rewardPool: "0x8593875bc450ebE8e9D6fDA5298E44273fB7EA0a", - masonry: "0x3A6750d2b5c14456A06D9742EB34Fc920700688C", - pool2: [ - "0x77435089521e3b05217dbAA461a7722DfE9bDB5D", - "0x960a262de5ac9545391503c133bf1b069614a01f", - "0x16c57fb970dd46c96491cb462647da423040c899" - ] - }, - { - chain: "cronos", - token: "0x1affBc17938a25d245e1B7eC6f2fc949df8E9760", - share: "0x32975907733f93305BE28E2bfd123666b7A9c863", - rewardPool: "0x8593875bc450ebE8e9D6fDA5298E44273fB7EA0a", - masonry: "0x3A6750d2b5c14456A06D9742EB34Fc920700688C", - pool2: [ - "0xD60a097b8D5DC1caAF84b7f825f6516Ac5734D70", - "0x4330e62B3da05B6C41cf9F38B3d3A603840eB485", - "0xF1Ea7cEA3CD8849e6D4880f25767df40460F2235" - ] - }, - { - chain: "polygon", - token: "0x11a1779ae6b02bb8E7ff847919bcA3e55BcbB3D5", - share: "0x0731D0C0D123382C163AAe78A09390cAd2FFC941", - rewardPool: "0x4C25fFcbAC4BB1a01FB25A73d5eca02b98753d08", - masonry: "0x3a0f2A0Eba2069F7F15df9B92F954c14a08A0c59", - pool2: [ - "0x29689Ab7fc5438C5039864339f2A4F28E25f1aE5", - "0x3ff9352415999a9270d5AA80A77E675C4b0A2CB4", - "0x90139ccdfe463a85cfD34823465227f78C280cea" - ] - }, - { - chain: "harmony", - token: "0x1affBc17938a25d245e1B7eC6f2fc949df8E9760", - share: "0x32975907733f93305be28e2bfd123666b7a9c863", - rewardPool: "0x8593875bc450ebE8e9D6fDA5298E44273fB7EA0a", - masonry: "0x3A6750d2b5c14456A06D9742EB34Fc920700688C", - pool2: [ - "0x15a977844a276ca6d381e3a607418cc8944a2f04", - "0x1bE7E6D9d048b0aEF3d174646b839D0B254FaaB8", - "0xe527aa3f3ce67a35a217625a40fd90081c48f79b" - ] - } -]; - -module.exports = { - misrepresentedTokens: true, - ...chains - .map(c => - printerTvl(c.token, c.share, c.rewardPool, c.masonry, c.pool2, c.chain, undefined, false, c.pool2[1]) - ) - .reduce((prev, curr) => ({ ...prev, ...curr }), {}) -}; diff --git a/projects/printy/index.js b/projects/printy/index.js deleted file mode 100644 index cdb2aeafafc..00000000000 --- a/projects/printy/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'avax': '0xc62Ca231Cd2b0c530C622269dA02374134511a36' -}, { hasStablePools: true, }) - diff --git a/projects/prism/index.js b/projects/prism/index.js deleted file mode 100644 index 3e6fef1b274..00000000000 --- a/projects/prism/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') - -async function tvl() { - const res = await queryContract({ chain: 'terra2', contract: 'terra188mmw2vsp0yahen3vh2clup543qrttvdzkxl0h9myfuwjj56nausztpegt', data: { state: {}}}) - - return { - "terra-luna-2": res.total_bond_amount / 1e6, - } -} - - -module.exports = { - timetravel: false, - terra: { - tvl: () => 0, - }, - terra2: { - tvl, - }, - hallmarks:[ - [1651881600, "UST depeg"], - ] -} diff --git a/projects/prisma-lrt/index.js b/projects/prisma-lrt/index.js deleted file mode 100644 index 2b3f917649a..00000000000 --- a/projects/prisma-lrt/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - ethereum: { factory: '0xDb2222735e926f3a18D7d1D0CFeEf095A66Aea2A', fromBlock: 18029801, }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event NewDeployment (address collateral, address priceFeed, address troveManager, address sortedTroves)', - onlyArgs: true, - fromBlock, - }) - return api.sumTokens({ tokensAndOwners: logs.map(log => [log.collateral, log.troveManager])}) - } - } -}) diff --git a/projects/prisma/index.js b/projects/prisma/index.js deleted file mode 100644 index c7027bbe467..00000000000 --- a/projects/prisma/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - ethereum: { factory: '0x70b66e20766b775b2e9ce5b718bbd285af59b7e1', fromBlock: 18029801, }, -} - -module.exports.hallmarks = [ - [1698883200,"PRISMA token launch"], - // [1711669800,"Prisma Exploit"] -], -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event NewDeployment (address collateral, address priceFeed, address troveManager, address sortedTroves)', - onlyArgs: true, - fromBlock, - }) - return api.sumTokens({ tokensAndOwners: logs.map(log => [log.collateral, log.troveManager])}) - } - } -}) diff --git a/projects/privacy-cash/index.js b/projects/privacy-cash/index.js deleted file mode 100644 index 6f89192217a..00000000000 --- a/projects/privacy-cash/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { sumTokensExport } = require('../helper/solana') - -module.exports = { - methodology: 'Value of SOL in the privacy cash pool', - solana: { tvl: sumTokensExport({ solOwners: ['4AV2Qzp3N4c9RfzyEbNZs2wqWfW4EwKnnxFAZCndvfGh'] }) }, -} \ No newline at end of file diff --git a/projects/privacypools/index.js b/projects/privacypools/index.js deleted file mode 100644 index ed09d8685a3..00000000000 --- a/projects/privacypools/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require("../helper/unwrapLPs") - -const poolRegisteredEvent = "event PoolRegistered(address pool, address asset, uint256 scope)" - -const config = { - ethereum: { entrypoint: '0x6818809eefce719e480a7526d76bd3e561526b46', fromBlock: 22153713, }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl - } -}) - -async function tvl(api) { - const { entrypoint, fromBlock } = config[api.chain] - const logs = await getLogs2({ api, eventAbi: poolRegisteredEvent, fromBlock, target: entrypoint, }) - const tokensAndOwners = logs.map(log => [log.asset, log.pool]) - return sumTokens2({ api, tokensAndOwners }) -} \ No newline at end of file diff --git a/projects/privcash/config.js b/projects/privcash/config.js deleted file mode 100644 index 511b74e7000..00000000000 --- a/projects/privcash/config.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - kava: [ - { - tokens: [nullAddress], // KAVA - holders: [ - "0xCDFfa16631d2b6E78fE9Da3B0454EbF0d2edfFf3", // 100 - "0xfe79e117875993da3c8332Be34B5F06A55c7d154", // 1000 - "0x8Bbd79F1E28006D2e7a6B7B29aa46E236F4DFE07", // 10000 - "0x29d9813881ADB448e9d94ae35a0015c996DB2d40", // 100000 - "0xD58b5EB926F2Ae88372Bb23C6D432932c705C53F", // 1000000 - ], - }, - { - tokens: [ADDRESSES.telos.ETH], // USDC - holders: [ - "0xe4e992802314dbbd8BB9d050afae19ca1c45cB1A", // 10 - "0x8DFB4d1925cC8C7446AfA92f1cDd6c8be567Ae7C", // 100 - "0x00F5E31F0E33FBc23e723dCEd6C078fdD688D36a", // 1000 - "0xCA0d7b385e9DC484C646C50F1BBA6B01CC60E361", // 10000 - "0xc500DA72cCeA705aD5Ee3A4d77ABb1864DD30a4F", // 100000 - ], - } - ] -} diff --git a/projects/privcash/index.js b/projects/privcash/index.js deleted file mode 100644 index 64a6c5cbad9..00000000000 --- a/projects/privcash/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = require('./config.js') - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const tokensAndOwners = config[chain].map(({ tokens, holders }) => holders.map(o => tokens.map(t => [t, o])).flat()).flat() - module.exports[chain] = { - tvl: sumTokensExport({ tokensAndOwners }) - } -}) \ No newline at end of file diff --git a/projects/prixmswap-v3/index.js b/projects/prixmswap-v3/index.js deleted file mode 100644 index 5150c4e6040..00000000000 --- a/projects/prixmswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - kroma: { factory: '0x94527f0fdbb1497C77Bb8d409F0dAEbB323ca229', fromBlock: 10032631 } -}) \ No newline at end of file diff --git a/projects/prjx/index.js b/projects/prjx/index.js deleted file mode 100644 index 84a47449606..00000000000 --- a/projects/prjx/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - hyperliquid: { factory: '0xff7b3e8c00e57ea31477c32a5b52a58eea47b072', fromBlock: 7876741 }, -}) \ No newline at end of file diff --git a/projects/probit/index.js b/projects/probit/index.js deleted file mode 100644 index 70ae0548639..00000000000 --- a/projects/probit/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - "0x72e5263ff33d2494692d7f94a758aa9f82062f73", - "0xaD285fDEDFC0D5f944A33e478356524293c7eC68", - "0xf71afe21cd32959113fc47ae2ef886b43a9413d5" - ], - }, - bsc: { - owners: [ - "0xd6a4452eebde830888cee4a395126831ab16250c", - "0xf4be044ba7461d8444ed53f9ec7490781e08e3b7", - "0x898fce2414a1347c0e12bde6b28b75843fd9bbad" - ], - }, - bitcoin: { - owners: bitcoinAddressBook.probit, - }, - fantom: { - owners: [ - "0xc78600a92caf0fcf6990e7ea7381bf4297054f86", - "0x06ffd89a07b078d4a1a1d9947a28e95825f9c35c", - "0x813e711993fc8ec29e9e45fb3a7e47f8c33ca64f" - ], - }, - polygon: { - owners: [ - "0xfaef9cc9bf46c386c58a3e86ffffbf77969ca149", - "0x29b6e9abf51fc7d4581f6cbd1a9d5392fa7fa78f", - "0xdba24f19bce0f32ea4273faea7c01d7f9d4f91d6" - ], - }, - tron: { - owners: [ - "TPkn5zpxXr8jaNqvgVoFanTsvXCbNXJ8GB", - "TGEwJxVErWagXnriZATPMBFFbbeuad9m3h", - "TYiFSQG4dfdWh8RWETsvJn4fvXdZ8bEL7t" - ], - }, - ripple: { - owners: [ - "rwXEHNNuf3nctzXLtvL5JnQJGMyUZYGrVc", - "rsA9ijHjo7hAkitc9GsXsiwXzqGs7eoeqr", - "rEa9cAYavjfxvmdJExr1PMGxoPYzAUZXGb" - ], - }, - solana: { - owners: [ - "BX145kKanqBmeud72ir44iMFVAfaak4y933rgbMc2H52", - "FavWP1KXVVNZLTYjfSBWPanxbVeCW4A3pJ96hn2GRWGR", - ], - }, -} - -module.exports = cexExports(config) diff --git a/projects/procyon-finance/index.js b/projects/procyon-finance/index.js deleted file mode 100644 index 6ce8197a353..00000000000 --- a/projects/procyon-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const PcyMasterChefContract = "0x27e85F98B48D447D0148AFeCa7b149b0E69c2c2e"; -const PcyToken = "0xAd421C4F5F091f597361080d47B6f44ED44F155a"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(PcyMasterChefContract, "cronos", PcyToken, false), - methodology: - "TVL includes all Farms and Pools seccion through MasterChef Contracts", -}; diff --git a/projects/projectx/index.js b/projects/projectx/index.js deleted file mode 100644 index 618353248ed..00000000000 --- a/projects/projectx/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { pool2 } = require("../helper/pool2"); - -const stakingContract = "0x19C7798a756e353F6585302B8cb71Fd31DEa83AF"; -const WAVAX_PXT2_JPL = "0x326238CfAf10Fc6f536791b548441D03B80dacA8"; -//const PXT2 = "0x9e20Af05AB5FED467dFDd5bb5752F7d5410C832e"; - -module.exports = { - avax: { - pool2: pool2(stakingContract, WAVAX_PXT2_JPL), - tvl: (async) => ({}), - }, - methodology: "Counts liquidty on the Pool2 only", -}; - -module.exports.deadFrom = '2022-04-09' diff --git a/projects/promethium/index.js b/projects/promethium/index.js deleted file mode 100644 index a0a1e301021..00000000000 --- a/projects/promethium/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const pools = [ - '0x58008140AE706D915fFcC44F26E919a20f296d9e', // pmUSDT - '0x28903c58784246ccdDFA12f567457D8844073276', // pmUSDC.e - '0xECd04602Cac25275ed1B726F7726DC1576B5BCE4', // pmWBTC - '0x637Aadf4249939A0D2dE51418ec0b2b17b33e86C', // pmWETH - '0x1e1B776364c60129c1c8e59eF1C003314e3ceE12', // pmARB - '0xB2a564D9Bb08C5366BF26384bd372e6F4f3372c8', // pmFRAX - '0x85A39cE6339D96786D8c99CD098d351C5b29C210' // pmDAI -] - -const abi = { - "asset": "address:asset", - "totalAssets": "uint256:totalAssets" -} - -async function tvl(api) { - const tokens = await api.multiCall({ abi: abi.asset, calls: pools, permitFailure: true, }) - const bals = await api.multiCall({ abi: abi.totalAssets, calls: pools, permitFailure: true, }) - tokens.forEach((v, i) => { - if (v && bals[i]) api.add(v, bals[i]) - }) - return api.getBalances() -} - -module.exports = { - methodology: - "TVL displays the total amount of assets stored in the Promethium contracts, excluding not claimed fees.", - start: '2023-10-01', - arbitrum: { tvl }, - hallmarks: [[1696164866, "Profitable pools deployment"]], -}; diff --git a/projects/propbase/index.js b/projects/propbase/index.js deleted file mode 100644 index a1f75418973..00000000000 --- a/projects/propbase/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const axios = require("axios"); -const { function_view } = require('../helper/chain/aptos'); - -const PROPS_FA = "0x6dba1728c73363be1bdd4d504844c40fbb893e368ccbeff1d1bd83497dbc756d"; -const USDC_FA = "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b"; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: `TVL includes USDC tokens deposited in Nova pools (RWA) and Rental pools. - RWA assets are paired with USDC in on - chain liquidity pools built on Trader Joe’s CLMM contracts, - which allows users to buy and sell property tokens directly against USDC. - Redemption is AMM- based and depends on pool liquidity and active price bins, - not a guaranteed 1: 1 stablecoin redemption.PROPS tokens are reported separately under staking.`, - - aptos: { - tvl: async (api) => { - const chain = "aptos"; - const { data } = await axios.get(`https://contractaddress.propbase.app/production`); - - // --- RWA Pools (USDC) --- - for (const pool of data.NOVA_POOLS) { - const fa_balance = await function_view({ - functionStr: `0x1::primary_fungible_store::balance`, - type_arguments: ["0x1::fungible_asset::Metadata"], - args: [pool, USDC_FA], - chain, - }); - api.addTokens(USDC_FA, fa_balance); - } - - // --- Rental Pools (USDC) --- - for (const pool of data.RENTAL_POOLS) { - const fa_balance = await function_view({ - functionStr: `0x1::primary_fungible_store::balance`, - type_arguments: ["0x1::fungible_asset::Metadata"], - args: [pool, USDC_FA], - chain, - }); - api.addTokens(USDC_FA, fa_balance); - } - - // ---- RWA assets current values in USDC --- - for (const pool of data.RWA_POOLS) { - const saleConfig = await function_view({ - functionStr: `${pool.assetAddress}::nexus_primary_market::get_sale_config`, - type_arguments: [], - args: [], - chain, - }); - - const totalPurchasedToken = saleConfig.length > 8 ? Number(saleConfig[8]) / 1e8 : 0; - let valueInUsd = 0; - - if (pool.poolAddress) { - const poolConfig = await function_view({ - functionStr: `${pool.poolAddress}::nova_pool::get_pool_config`, - type_arguments: [], - args: [], - chain, - }); - - const activeBinId = poolConfig.length > 6 ? poolConfig[6] : 0; - - const price = await function_view({ - functionStr: `${pool.poolAddress}::nova_pool::get_price_from_bin_id`, - type_arguments: [], - args: [activeBinId], - chain, - }); - - valueInUsd += totalPurchasedToken * Number(price); - } else { - const salePrice = saleConfig.length > 2 ? Number(saleConfig[2]) : 0; - valueInUsd += totalPurchasedToken * salePrice; - } - - api.addTokens(USDC_FA, valueInUsd); - } - }, - - staking: async (api) => { - const chain = "aptos"; - const { data } = await axios.get(`https://contractaddress.propbase.app/production`); - - for (const pool of data.STAKING_POOLS) { - const fa_balance = await function_view({ - functionStr: `0x1::primary_fungible_store::balance`, - type_arguments: ["0x1::fungible_asset::Metadata"], - args: [pool, PROPS_FA], - chain, - }); - - api.addTokens(PROPS_FA, fa_balance); - } - }, - }, -}; diff --git a/projects/prophet-fun/index.js b/projects/prophet-fun/index.js deleted file mode 100644 index 86599301b7e..00000000000 --- a/projects/prophet-fun/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const axios = require('axios'); -const { PublicKey } = require("@solana/web3.js"); -const { sumTokens2, ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } = require('../helper/solana'); -const BN = require("bn.js"); - -const programId = new PublicKey('ProPh6ruVL41JR3XXPuy6hN6TPH1ERqpWkZ9dp9YSEe') -const globalState = new PublicKey('6PZKJowZMUAgxLxAJmHsrvzEL8PdXNymqYSJDwPRgh6V') -const token = new PublicKey(ADDRESSES.solana.USDC) - -const getAta = (owner) => { - const [ata] = PublicKey.findProgramAddressSync( - [ - owner.toBuffer(), - TOKEN_PROGRAM_ID.toBuffer(), - token.toBuffer(), - ], - ASSOCIATED_TOKEN_PROGRAM_ID, - ); - return ata; -} - -function getPredictionMarketAddress(marketId) { - const [predictionState] = PublicKey.findProgramAddressSync( - [ - Buffer.from('pred_market_state'), - new BN(marketId.toString()).toBuffer('le', 8), - globalState.toBuffer(), - ], - programId, - ); - return predictionState; -} - -async function tvl(api) { - const lastRoundId = await axios.get("https://backend.prophet.fun/business-metrics/last-round-id") - const tokenAccounts = [] - - Array.from({ length: lastRoundId.data.roundId }, (_, i) => i + 1).forEach((roundId) => { - const marketAddress = getPredictionMarketAddress(roundId) - const marketAta = getAta(marketAddress) - tokenAccounts.push(marketAta) - }) - await sumTokens2({ tokenAccounts, api, allowError: true }) -} - - -module.exports = { - methodology: 'TVL is total quantity of USDC held in the predictions token accounts', - start: 1753365600, - solana: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/prophet/index.js b/projects/prophet/index.js deleted file mode 100644 index ccb2861fe94..00000000000 --- a/projects/prophet/index.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Prophet is a decentralized prediction market on the Obyte ledger. - * - * @see https://prophet.ooo/ - */ -const { - fetchBaseAABalances, - fetchOswapExchangeRates, - fetchOswapAssets, - summingBaseAABalancesToTvl, -} = require('../helper/chain/obyte') - -async function totalTvl(timestamp) { - const [assetMetadata, exchangeRates, ...baseAABalances] = await Promise.all([ - fetchOswapAssets(), - fetchOswapExchangeRates(), - fetchBaseAABalances(timestamp, "AXG7G57VBLAHF3WRN5WMQ53KQEQDRONC"), - fetchBaseAABalances(timestamp, "A4EH5ZF5L4KEAHQIUSDEQGILHPEFJFPW") - ]) - - return { - tether: baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) - } -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: - "The TVL is the USD value of the assets locked into the autonomous agents that extend the Prophet protocol.", - obyte: { - tvl: totalTvl - } -} diff --git a/projects/prosper/index.js b/projects/prosper/index.js deleted file mode 100644 index 8e1169b965e..00000000000 --- a/projects/prosper/index.js +++ /dev/null @@ -1,34 +0,0 @@ -// PROS on BSC -const RECEIPT_TOKEN = "0x460dDE85b3CA09e82156E37eFFf50cd07bc3F7f9"; // Staked (receipt) token -const ORIGINAL_TOKEN = "0x915424Ac489433130d92B04096F3b96c82e92a9D"; // PROS token - -// ------------------------------ -// Staking Function: Only returns staked PROS -// ------------------------------ -async function staking(api) { - const stakedBalance = await api.call({ - abi: "erc20:totalSupply", - target: RECEIPT_TOKEN, - }); - api.add(ORIGINAL_TOKEN, stakedBalance); - return api.getBalances(); -} - -// ------------------------------ -// Module Exports -// ------------------------------ -module.exports = { - misrepresentedTokens: true, - // 1. PROS Baseline Hashrate Value: (500,080 TH/s of capacity * Hashrate Index's ASIC Price Index for 19 to 25 J/TH efficiency tier). Note that this is is a baseline or minimum value of Prosper's hashrate, as it only accounts for the base value of the ASIC miners, and does not include the value of all the infrastructure required to enable live, operational hashrate. - methodology: ` - Total TVL: - 2. Staked Value of PROS: Total supply of the receipt token, representing staked PROS (provided only in the staking function). - 3. Treasury Value: - a) BTC held in the treasury (BTC balance * current BTC price), - b) PROS held in the treasury (PROS balance * current PROS price) - `, - bsc: { - tvl: () => ({}), - staking, - }, -}; diff --git a/projects/protectorate/index.js b/projects/protectorate/index.js deleted file mode 100644 index c07859c2825..00000000000 --- a/projects/protectorate/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumERC4626VaultsExport } = require("../helper/erc4626"); - -module.exports = { - ethereum: { - tvl: sumERC4626VaultsExport({ vaults: ["0xaF53431488E871D103baA0280b6360998F0F9926"], tokenAbi: 'asset', balanceAbi: 'totalAssets'}), - }, -} \ No newline at end of file diff --git a/projects/proteo-farms/index.js b/projects/proteo-farms/index.js deleted file mode 100644 index 000c3271ea1..00000000000 --- a/projects/proteo-farms/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require('../helper/chain/elrond') - -async function tvl() { - const tokensAndOwners = [ - [ADDRESSES.null, 'erd1qqqqqqqqqqqqqpgqwqxfv48h9ssns5cc69yudvph297veqeeznyqr4l930'], - [ADDRESSES.null, 'erd1qqqqqqqqqqqqqpgqyhj3hk6kkw7405j42g20th3g2h5s8076znyqrpe2pr'], - ['USDC-c76f1f', 'erd1qqqqqqqqqqqqqpgq3lh80a92d49am3t2pfzheapdxtykzt5kznyqsjhfrx'], - ['USDC-c76f1f', 'erd1qqqqqqqqqqqqqpgq25l7fgjdecaanxuuzxnquzs7k80q6mqaznyqzjclf5'], - ['ZPAYWEGLD-34e5c1', 'erd1qqqqqqqqqqqqqpgqrpa6ezy0q4xuj6y9plgv85va43x7wy3dznyqr2rwcz'], - ['ZPAYWEGLD-34e5c1', 'erd1qqqqqqqqqqqqqpgqpn4fnee2mwkqea6x65xdsgp2whfcl964znyqw67z9s'], - ['ZPAY-247875', 'erd1qqqqqqqqqqqqqpgq4szwc687pqfv3euah6ph0tx6a7n9xn7mznyqefetyg'], - ['KROUSDC-7787ab', 'erd1qqqqqqqqqqqqqpgqu693lwsewjvs5f9mssk0fpfex00q77zfznyq4cd0rt'], - ['KROUSDC-7787ab', 'erd1qqqqqqqqqqqqqpgqa6y0t72nglqdlqe7cv5cqjsam2ssm4w3znyqdrphza'], - ['AEROWEGLD-81cc37', 'erd1qqqqqqqqqqqqqpgqapmdgehzl22pu6m5pkvy2fhzm49uxkxhznyqhwhcx5'], - ['AEROWEGLD-81cc37', 'erd1qqqqqqqqqqqqqpgqnedra5da464rkcektgzyv0qxcgqgyh26znyq8q4phx'], - ['UTK-2f80e9', 'erd1qqqqqqqqqqqqqpgqhr56z8yg8e7254dd46ngd92lj95wp7pmznyq22sdtu'], - ['WBTC-5349b3', 'erd1qqqqqqqqqqqqqpgqthjr3qyjev246dut0f06dx8tw3p8njv7znyq408ttl'], - ['WETH-b4ca29', 'erd1qqqqqqqqqqqqqpgqh47rhd4zpwpe93j7nx625dykr6k7xtj4znyq36v5se'], - ['CYBERWEGLD-45a866', 'erd1qqqqqqqqqqqqqpgqvvn3s8ndrxqu6ndgnvsfp4sx9wgtv9z2znyqrfyhsf'], - ['CYBERWEGLD-45a866', 'erd1qqqqqqqqqqqqqpgqrgve6e0m6le5cn8lng9g2z3a9apq85ltznyqzc64ns'], - ['WAMWEGLD-cdfa74', 'erd1qqqqqqqqqqqqqpgqwjxup8jwlhwzuz032cx9w8qajqsyl0jjznyqvfp4e0'], - ['WAMWEGLD-cdfa74', 'erd1qqqqqqqqqqqqqpgqkm0aktstdnrq58n5ysyqqkq4qudnea98znyqz0a97d'], - ['OFEWEGLD-73840b', 'erd1qqqqqqqqqqqqqpgqq739cgj7nale069vy44kxmau7j4zt06sznyq4g692l'], - ['OFEWEGLD-73840b', 'erd1qqqqqqqqqqqqqpgqjrq0pez7fve20daceuc7xqy9den005d7znyqcqj8tk'], - ] - return sumTokens({tokensAndOwners}) -} - -async function pool2() { - const tokensAndOwners = [ - ['PROTEOEGLD-baf054', 'erd1qqqqqqqqqqqqqpgq86drapw9lr2y7vnzwcktc3hvlrev6dugznyqvc6flj'], - ['PROTEOEGLD-baf054', 'erd1qqqqqqqqqqqqqpgq6hzck3wac3ljmth7dkzk2wcw3c9lvcauznyq268sn6'], - ] - - return sumTokens({tokensAndOwners}) -} - -async function staking() { - const tokensAndOwners = [ - ['PROTEO-0c7311', 'erd1qqqqqqqqqqqqqpgqgypex2r0x5el8lsfk4hpdp0yhkuz79juznyqukp6qd'], - ] - - return sumTokens({tokensAndOwners}) -} - -module.exports = { - timetravel: false, - elrond: { - tvl, - pool2, - staking - }, -} - - diff --git a/projects/protofi/index.js b/projects/protofi/index.js deleted file mode 100644 index 2e4121276c5..00000000000 --- a/projects/protofi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0x39720E5Fe53BEEeb9De4759cb91d8E7d42c17b76' -}) diff --git a/projects/proton-dex/index.js b/projects/proton-dex/index.js deleted file mode 100644 index 18d4bdeecb4..00000000000 --- a/projects/proton-dex/index.js +++ /dev/null @@ -1,82 +0,0 @@ -const { getTableRows, getCurrencyBalance, getAllOracleData, getTokenPriceUsd } = require("../helper/chain/proton"); -const { get } = require('../helper/http') -const { toUSDTBalances } = require('../helper/balances'); - -const DEX_CONTRACT = 'dex'; - - /** - * It gets all the pools from the pools table in the swap contract. - * @param {string} [lower_bound] - The lower bound of the range of rows to return. - * @returns The `getPools` function returns an array of `RawPool` objects. - */ -async function getMarkets (lower_bound) { - let { rows, more, next_key } = await getTableRows({ - code: DEX_CONTRACT, - scope: DEX_CONTRACT, - table: 'markets', - limit: -1, - key_type: 'i64', - lower_bound - }) - - if (more) { - const moreRows = await this.getPools(next_key) - rows = rows.concat(moreRows) - } - return rows -} - -async function getTokenPrices () { - return get("https://api.protonchain.com/v1/chain/tokens") -} - -async function marketsWithPrices () { - const oracles = await getAllOracleData(); - const markets = await getMarkets(); - const tokenPrices = await getTokenPrices(); - - let tvl = 0; - const marketSet = new Set(); - - for (const market of markets) { - // Find oracle - const oracle = oracles.find( - (oracle) => oracle.feed_index === market.ask_oracle_index - ); - if (!oracle || !oracle.aggregate.d_double) continue; - - // Determine pool amount - const [, symbol] = market.bid_token.sym.split(','); - - if (!marketSet.has(symbol)){ - - marketSet.add(symbol); - - const [cash] = await getCurrencyBalance( - market.bid_token.contract, - DEX_CONTRACT, - symbol - ); - - const tokenPrice = tokenPrices.find((price) => price.account === market.bid_token.contract && price.symbol === symbol).price.usd; - - const [cashAmount] = cash.split(' '); - const total = +cashAmount * tokenPrice; - tvl += total * oracle.aggregate.d_double; - } - } - return tvl; -} - -async function getDexTvl() { - const tvl = await marketsWithPrices(); - return toUSDTBalances(tvl); -} - -module.exports = { - misrepresentedTokens: true, - methodology: `Proton Dex TVL is the sum of pool liquidity on the DEX`, - proton: { - tvl: getDexTvl - }, -} \ No newline at end of file diff --git a/projects/proton-loan/index.js b/projects/proton-loan/index.js deleted file mode 100644 index 5a86b6f3c58..00000000000 --- a/projects/proton-loan/index.js +++ /dev/null @@ -1,121 +0,0 @@ -const { getCurrencyBalance, } = require("../helper/chain/proton"); - -const LOAN_TOKEN_CONTRACT = 'loan.token'; -const STAKING_CONTRACT = 'lock.token'; - -const { post } = require('../helper/http') -const sdk = require('@defillama/sdk') - -const tokenMapping = { - 'xtokens:XBTC': 'bitcoin', - 'xtokens:XLTC': 'litecoin', - 'xtokens:XETH': 'ethereum', - 'xtokens:XXRP': 'ripple', - 'eosio.token:XPR': 'proton', - 'xtokens:XMT': 'metal', - 'xtokens:XUSDC': 'usd-coin', - 'xtokens:XDOGE': 'dogecoin', - 'xtokens:XUSDT': 'tether', - 'xtokens:XUST': 'terrausd-wormhole', - 'xtokens:XLUNA': 'terra-luna-2', - 'xtokens:XADA': 'cardano', - 'xtokens:XXLM': 'stellar', - 'xtokens:XHBAR': 'hedera-hashgraph', -} - -const API_ENDPOINT = 'https://proton.eosusa.io' -const LENDING_CONTRACT = 'lending.loan' - -function parseAsset(assetString) { - if (!assetString) return { amount: 0, symbol: '' } - const [amount, symbol] = assetString.split(' ') - return { amount: parseFloat(amount), symbol } -} - -async function fetchMarkets() { - const res = await post(`${API_ENDPOINT}/v1/chain/get_table_rows`, { - code: LENDING_CONTRACT, - scope: LENDING_CONTRACT, - table: 'markets', - limit: 100, - json: true, - }) - return res.rows || [] -} - -async function fetchLiquidity(tokenContract, symbol) { - // available liquidity (cash) held by lending.loan for a given token - const res = await post(`${API_ENDPOINT}/v1/chain/get_table_rows`, { - code: tokenContract, - scope: LENDING_CONTRACT, - table: 'accounts', - limit: 100, - json: true, - }) - const rows = res.rows || [] - const tokenBalance = rows.find(b => parseAsset(b.balance).symbol === symbol) - return tokenBalance ? parseAsset(tokenBalance.balance).amount : 0 -} - -// ---------------------------- -// TVL = only available liquidity (cash) -// ---------------------------- -async function tvl() { - const balances = {} - const markets = await fetchMarkets() - - const promises = markets.map(async (market) => { - const [ , symbol ] = market.underlying_symbol.sym.split(',') - const tokenContract = market.underlying_symbol.contract - const internalId = `${tokenContract}:${symbol}` - const cgkId = tokenMapping[internalId] - if (!cgkId) return - - const cashAvailable = await fetchLiquidity(tokenContract, symbol) - sdk.util.sumSingleBalance(balances, `coingecko:${cgkId}`, cashAvailable) - }) - - await Promise.all(promises) - return balances -} - -// ---------------------------- -// Borrowed = total variable + stable borrows -// ---------------------------- -async function borrowed() { - const balances = {} - const markets = await fetchMarkets() - - markets.forEach(market => { - const totalVar = parseAsset(market.total_variable_borrows.quantity).amount - const totalStable = parseAsset(market.total_stable_borrows.quantity).amount - const totalBorrows = totalVar + totalStable - - const [ , symbol ] = market.underlying_symbol.sym.split(',') - const tokenContract = market.underlying_symbol.contract - const internalId = `${tokenContract}:${symbol}` - const cgkId = tokenMapping[internalId] - if (!cgkId) return - - sdk.util.sumSingleBalance(balances, `coingecko:${cgkId}`, totalBorrows) - }) - - return balances -} - -async function getTotalStaking(api) { - const [staked] = await getCurrencyBalance(LOAN_TOKEN_CONTRACT, STAKING_CONTRACT, 'LOAN') - const [stakedAmount] = staked.split(' '); - api.addCGToken('proton-loan', BigInt(Math.floor(stakedAmount))) - return api.getBalances() -} - -module.exports = { - methodology: 'TVL = only available liquidity (cash held by lending.loan). Borrowed = total variable + stable borrows (outstanding debt). Deposits = TVL + Borrowed, but we report liquidity as TVL per DefiLlama standards.', - proton: { - tvl, - borrowed, - staking: getTotalStaking - }, -} - diff --git a/projects/proton-swap/index.js b/projects/proton-swap/index.js deleted file mode 100644 index 13967e74126..00000000000 --- a/projects/proton-swap/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const { getTableRows, } = require("../helper/chain/proton"); -const { get } = require('../helper/http') -const { toUSDTBalances } = require('../helper/balances'); - -const SWAP_CONTRACT = 'proton.swaps'; - - /** - * It gets all the pools from the pools table in the swap contract. - * @param {string} [lower_bound] - The lower bound of the range of rows to return. - * @returns The `getPools` function returns an array of `RawPool` objects. - */ -async function getPools (lower_bound) { - let { rows, more, next_key } = await getTableRows({ - code: SWAP_CONTRACT, - scope: SWAP_CONTRACT, - table: 'pools', - limit: -1, - key_type: 'i64', - lower_bound - }) - - if (more) { - const moreRows = await this.getPools(next_key) - rows = rows.concat(moreRows) - } - return rows -} - -async function getTokenPrices () { - return get("https://api.protonchain.com/v1/chain/tokens") -} - -async function poolsWithPrices () { - const pools = await getPools(); - const tokenPrices = await getTokenPrices(); - - if (!tokenPrices) return pools - return pools - .map(_pool => { - const switchUsdc = _pool.pool1.xtokenSymbol === 'XUSDC' - const switchXpr = _pool.pool1.xtokenSymbol === 'XPR' && _pool.pool2.xtokenSymbol !== 'XUSDC' - if (switchUsdc || switchXpr) { - const tmp = _pool.pool1 - _pool.pool1 = _pool.pool2 - _pool.pool2 = tmp - } - - _pool.pool1.xtokenContract = _pool.pool1.contract; - _pool.pool1.xtokenSymbol = _pool.pool1.quantity.split(' ')[1]; - _pool.pool2.xtokenContract = _pool.pool2.contract; - _pool.pool2.xtokenSymbol = _pool.pool2.quantity.split(' ')[1]; - - const fromTokenPrice = tokenPrices.find((price) => price.account === _pool.pool1.xtokenContract && price.symbol === _pool.pool1.xtokenSymbol) - const toTokenPrice = tokenPrices.find((price) => price.account === _pool.pool2.xtokenContract && price.symbol === _pool.pool2.xtokenSymbol) - - _pool.liquidityUsd = 0 - if (fromTokenPrice && toTokenPrice) { - const _pool1_amount = _pool.pool1.quantity.split(' ')[0]; - const _pool2_amount = _pool.pool2.quantity.split(' ')[0]; - - const token1Total = _pool1_amount * (fromTokenPrice.price.usd) - const token2Total = _pool2_amount * (toTokenPrice.price.usd) - _pool.liquidityUsd = token1Total + (token2Total) - } - return _pool - }) - .sort((_pool1, _pool2) => (_pool2.liquidityUsd || 0) - (_pool1.liquidityUsd || 0)) -} - -async function getPoolTvl() { - const pools = await poolsWithPrices(); - let totalLiquidityUsd = 0; - for (const pool of pools) { - totalLiquidityUsd += pool.liquidityUsd; - } - return toUSDTBalances(totalLiquidityUsd); -} - -module.exports = { - misrepresentedTokens: true, - methodology: `Pool liquidity`, - proton: { - tvl: getPoolTvl - }, -} \ No newline at end of file diff --git a/projects/protoss-dex/api.js b/projects/protoss-dex/api.js deleted file mode 100644 index 7066cf4bca7..00000000000 --- a/projects/protoss-dex/api.js +++ /dev/null @@ -1,9 +0,0 @@ -const { dexExport } = require('../helper/chain/starknet') -const factory = '0x04bd9ec70e3ee64fe0adefe0ae4eff797fe07b6fe19d72438db0b6d336ee77c8' - -module.exports = { - timetravel: false, - starknet: { - tvl: dexExport({ factory, }), - } -} diff --git a/projects/protoss-dex/index.js b/projects/protoss-dex/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/protoss-dex/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/prxy/index.js b/projects/prxy/index.js deleted file mode 100644 index f65691993fb..00000000000 --- a/projects/prxy/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { staking } = require('../helper/staking') -const ADDRESSES = require('../helper/coreAssets.json') - -const prxy = '0xab3d689c22a2bb821f50a4ff0f21a7980dcb8591' -const btcpx = '0x9C32185b81766a051E08dE671207b34466DD1021' -const abi = 'function getWithdrawalBtcAmount(address who, uint256 value) view returns (uint256 amount)' - -async function tvl(api) { - const bal = await api.call({ abi: 'erc20:totalSupply', target: btcpx }) - const totalSupplyInBtc = await api.call({ abi, target: btcpx, params: [btcpx, bal] }) - if (api.chain === 'polygon') { - api.add(ADDRESSES.polygon.WBTC, totalSupplyInBtc) - } else { - api.add(ADDRESSES.ethereum.WBTC, totalSupplyInBtc) - } -} - -module.exports = { - polygon: { tvl,staking: staking('0x015CEe3aB6d03267B1B2c05D2Ac9e2250AF5268d', prxy, 'polygon') }, - ethereum: { tvl }, - methodology: `BTC Proxy offers a unique institutional-grade wrapped Bitcoin solution that leverages Polygon technology to bring Bitcoin to DeFi 2.0 with no gas and no slippage and insured custody. BTC Proxy features (3,3) Staking and Bonding via the PRXY Governance token`, -}; diff --git a/projects/pryzm-liquid-staking/index.js b/projects/pryzm-liquid-staking/index.js deleted file mode 100644 index f758f6b2c7c..00000000000 --- a/projects/pryzm-liquid-staking/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const { get } = require('../helper/http') -const { endPoints, } = require('../helper/chain/cosmos'); - -const host_chains = { - cosmos: { - hostChainId: "uatom", - coinGeckoId: "cosmos", - decimals: 1e6, - }, - - injective: { - hostChainId: "inj", - coinGeckoId: "injective-protocol", - decimals: 1e18, - }, - - osmosis: { - hostChainId: "uosmo", - coinGeckoId: "osmosis", - decimals: 1e6, - }, - - terra2: { - hostChainId: "uluna", - coinGeckoId: "terra-luna-2", - decimals: 1e6, - }, - - celestia: { - hostChainId: "utia", - coinGeckoId: "celestia", - decimals: 1e6, - }, -}; - -const endpoint = endPoints["pryzm"] - -function tvlOnChain(chain) { - return async (api) => { - const [{ amount: coin }, { host_chain_state: state }] = - await Promise.all([ - await get(`${endpoint}/cosmos/bank/v1beta1/supply/by_denom?denom=c:${chain.hostChainId}`), - await get(`${endpoint}/pryzm/icstaking/v1/host_chain_state/${chain.hostChainId}`), - ]); - - const balance = coin.amount * state.exchange_rate / chain.decimals - api.addCGToken(chain.coinGeckoId, balance) - }; -} - -for (const chainName of Object.keys(host_chains)) { - module.exports[chainName] = { tvl: tvlOnChain(host_chains[chainName]) }; -} \ No newline at end of file diff --git a/projects/pryzm-protocol/index.js b/projects/pryzm-protocol/index.js deleted file mode 100644 index 4408583e665..00000000000 --- a/projects/pryzm-protocol/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { get } = require('../helper/http') -const { endPoints, } = require('../helper/chain/cosmos'); -const { concat } = require("ethers"); - -const endpoint = endPoints["pryzm"] -const amm_vault_address = "pryzm1y7d08j5uy7kgurnv4pwag8h34m2cgptcwe75wn"; -const refractor_vault_address = "pryzm1xtnrr4e6553hap0zuveautjstc3w2sxmf2zph3"; - -async function tvl(api) { - const [{ balances: amm_balances }, { balances: refractor_balances }] = - await Promise.all([ - await get(`${endpoint}/cosmos/bank/v1beta1/balances/${amm_vault_address}?pagination.limit=1000`), - await get(`${endpoint}/cosmos/bank/v1beta1/balances/${refractor_vault_address}?pagination.limit=1000`) - ]); - - let all_balances = amm_balances.concat(refractor_balances); - for (const { denom, amount } of all_balances) { - if (denom.startsWith("p:") || - denom.startsWith("y:") || - denom.startsWith("lp:") - ) { - continue - } - if (denom === 'ibc/B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395') - api.addCGToken('terra-luna-2', amount/1e6) - else - api.add(denom, amount); - } -} - -module.exports = { - methodology: "Counts the liquidity on the refractor module and all AMM pools", - pryzm: { - tvl - }, -}; diff --git a/projects/pstake-btc/index.js b/projects/pstake-btc/index.js deleted file mode 100644 index 3afcdbefe26..00000000000 --- a/projects/pstake-btc/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: `Total amount of BTC restaked on babylon`, - doublecounted:true, - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.pstakeBTC }) }, -}; diff --git a/projects/pstake/index.js b/projects/pstake/index.js deleted file mode 100644 index 000d7f5832c..00000000000 --- a/projects/pstake/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping"); -const { get } = require("../helper/http"); -const sdk = require("@defillama/sdk"); -const { sumTokensExport } = require("../helper/sumTokens"); - -async function bsctvl(api) { - const bal = await api.call({ - abi: "function exchangeRate() external view returns (uint256 totalWei, uint256 poolTokenSupply)", - target: "0xc228cefdf841defdbd5b3a18dfd414cc0dbfa0d8", - }); - - return { - ["bsc:" + nullAddress]: bal.totalWei, - }; -} - -const baseEndpoint = "https://api.persistence.one/pstake"; - -const chainInfos = { - cosmos: { - name: "cosmos", - decimals: 1e6, - endpoint: "/stkatom/atom_tvu", - }, - osmosis: { - name: "osmosis", - decimals: 1e6, - endpoint: "/stkosmo/osmo_tvu", - }, - dydx: { - name: "dydx-chain", - decimals: 1e18, - endpoint: "/stkdydx/dydx_tvu", - }, - stargaze: { - name: "stargaze", - decimals: 1e6, - endpoint: "/stkstars/stars_tvu", - }, - persistence: { - name: "persistence", - decimals: 1e6, - endpoint: "/stkxprt/xprt_tvu", - }, -}; - -function cosmostvl() { - return async () => { - let tvl = {}; - for (const chain of Object.values(chainInfos)) { - const api = baseEndpoint + chain.endpoint; - - const amount = await get(api); - - const balance = {}; - sdk.util.sumSingleBalance( - balance, - chain.name, - amount.amount.amount / chain.decimals - ); - - tvl[chain.name] = balance[chain.name]; - } - - return tvl; - }; -} - -module.exports = { - methodology: `Total amount of liquid staked tokens on Persistence.`, - bsc: { tvl: bsctvl }, - persistence: { tvl: cosmostvl() }, -}; diff --git a/projects/psy/index.js b/projects/psy/index.js deleted file mode 100644 index 4ad1141bcdf..00000000000 --- a/projects/psy/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const activePool = "0x8726F6Aa2857Ed2E13829f2c9c5355aE190d1E23"; -const tokenAddresses = [ - '0x95ab45875cffdba1e5f451b950bc2e42c0053f39' // sfrxETH -] - - -async function tvl(api) { - return sumTokens2({ api, tokens: tokenAddresses, owner: activePool}) -} - -module.exports = { - methodology: - "Adds up the total value locked as collateral on the Gravita platform", - start: '2023-07-16', // Sun Jul 16 2023 15:00:00 GMT+0000 - arbitrum: { - tvl, - }, -}; - diff --git a/projects/psyoptions/idl.json b/projects/psyoptions/idl.json deleted file mode 100644 index 4f6717139bf..00000000000 --- a/projects/psyoptions/idl.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "version": "0.0.0", - "name": "psy_american", - "instructions": [], - "accounts": [ - { - "name": "OptionMarket", - "type": { - "kind": "struct", - "fields": [ - { - "name": "optionMint", - "type": "publicKey" - }, - { - "name": "writerTokenMint", - "type": "publicKey" - }, - { - "name": "underlyingAssetMint", - "type": "publicKey" - }, - { - "name": "quoteAssetMint", - "type": "publicKey" - }, - { - "name": "underlyingAmountPerContract", - "type": "u64" - }, - { - "name": "quoteAmountPerContract", - "type": "u64" - }, - { - "name": "expirationUnixTimestamp", - "type": "i64" - }, - { - "name": "underlyingAssetPool", - "type": "publicKey" - }, - { - "name": "quoteAssetPool", - "type": "publicKey" - }, - { - "name": "mintFeeAccount", - "type": "publicKey" - }, - { - "name": "exerciseFeeAccount", - "type": "publicKey" - }, - { - "name": "expired", - "type": "bool" - }, - { - "name": "bumpSeed", - "type": "u8" - } - ] - } - } - ], - "errors": [] - } \ No newline at end of file diff --git a/projects/psyoptions/index.js b/projects/psyoptions/index.js deleted file mode 100644 index 82ca6091702..00000000000 --- a/projects/psyoptions/index.js +++ /dev/null @@ -1,137 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { Program } = require("@project-serum/anchor"); -const PsyAmericanIdl = require("./idl.json"); -const PsyFiV2Idl = require("./psyfiV2Idl.json"); -const PsyFiMmIdl = require("./psyFiMmIdl.json"); -const PsyLendIdl = require("./psyLendIdl.json"); -const { getProvider, sumTokens2, getAssociatedTokenAddress } = require("../helper/solana"); - -const textEncoder = new TextEncoder(); - -const TOKEN_PROGRAM_ID = new PublicKey( - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" -); - -async function getAllOptionAccounts(program) { - const accts = await program.account.optionMarket.all(); - return accts.map((acct) => ({ - ...acct.account, - key: acct.publicKey, - })); -} - -async function getPsyAmericanTokenAccounts(anchorProvider) { - const program = new Program( - PsyAmericanIdl, - new PublicKey("R2y9ip6mxmWUj4pt54jP2hz2dgvMozy9VTSwMWE7evs"), - anchorProvider - ); - const optionMarkets = await getAllOptionAccounts(program); - const tokensAndOwners = []; - optionMarkets.forEach((market) => { - tokensAndOwners.push([market.underlyingAssetMint.toBase58(), market.key]); - tokensAndOwners.push([market.quoteAssetMint.toBase58(), market.key]); - }); - return tokensAndOwners; -} - -async function getTokenizedEurosControlledAccounts(anchorProvider) { - const programId = new PublicKey( - "FASQhaZQT53W9eT9wWnPoBFw8xzZDey9TbMmJj6jCQTs" - ); - const [poolAuthority] = PublicKey.findProgramAddressSync( - [textEncoder.encode("poolAuthority")], - programId - ); - const tokenProgramAccounts = - await anchorProvider.connection.getTokenAccountsByOwner(poolAuthority, { - programId: TOKEN_PROGRAM_ID, - }); - return tokenProgramAccounts.value.map((i) => i.pubkey.toString()); -} - -async function getPsyFiEurosTokenAccounts(anchorProvider) { - const programId = new PublicKey( - "PSYFiYqguvMXwpDooGdYV6mju92YEbFobbvW617VNcq" - ); - const program = new Program(PsyFiV2Idl, programId, anchorProvider); - // Load all vaults - const vaults = await program.account.vaultAccount.all(); - // return all vault collateral accounts - return vaults.map((vault) => - vault.account.vaultCollateralAssetAccount.toString() - ); -} - -async function getPsyFiMmTokenAccounts(anchorProvider) { - const programId = new PublicKey( - "PSYAFJTojpfAjYcHMcFdU89s5hwKA6hgihnvD9Hitue" - ); - const program = new Program(PsyFiMmIdl, programId, anchorProvider); - // Load all vaults - const vaults = await program.account.vaultAccount.all(); - const tokenAccountAddresses = []; - // return all vault collateral accounts - vaults.forEach((vault) => { - tokenAccountAddresses.push( - vault.account.vaultCollateralAssetAccount.toString() - ); - tokenAccountAddresses.push( - vault.account.activeCollateralAccount.toString() - ); - }); - return tokenAccountAddresses; -} - -async function getPsyLendTokenAccounts(anchorProvider) { - const programId = new PublicKey( - "PLENDj46Y4hhqitNV2WqLqGLrWKAaH2xJHm2UyHgJLY" - ); - const program = new Program(PsyLendIdl, programId, anchorProvider); - // Load all Reserve accounts - const reserves = await program.account.reserve.all(); - // Pull all collateral and fee token accounts - const tokenAccountAddresses = []; - reserves.forEach((reserve) => { - tokenAccountAddresses.push(reserve.account.vault.toString()); - tokenAccountAddresses.push(reserve.account.feeNoteVault.toString()); - }); - return tokenAccountAddresses; -} - -async function tvl() { - const anchorProvider = getProvider(); - const [ - // tokensAndOwners, - tokenAccounts, - psyFiV2TokenAccounts, - psyFiMmTokenAccounts, - psyLendTokenAccounts, - ] = await Promise.all([ - // getPsyAmericanTokenAccounts(anchorProvider), - getTokenizedEurosControlledAccounts(anchorProvider), - getPsyFiEurosTokenAccounts(anchorProvider), - getPsyFiMmTokenAccounts(anchorProvider), - getPsyLendTokenAccounts(anchorProvider), - ]); - return sumTokens2({ - tokenAccounts: [ - ...tokenAccounts, - ...psyFiV2TokenAccounts, - ...psyFiMmTokenAccounts, - ...psyLendTokenAccounts, - ], - // tokensAndOwners, - }); -} - -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1717977600,"Withdrawal Only Mode Announced"] - ], - timetravel: false, - solana: { - tvl, - }, -}; diff --git a/projects/psyoptions/psyFiMmIdl.json b/projects/psyoptions/psyFiMmIdl.json deleted file mode 100644 index cc437cd50dc..00000000000 --- a/projects/psyoptions/psyFiMmIdl.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "version": "0.1.0", - "name": "psyfi_euros", - "instructions": [], - "accounts": [ - { - "name": "VaultAccount", - "docs": [ - "Allocated Size = 2000 bytes, incl. buffer.", - "Estimated Rent = 0.0148 SOL", - "Current Size = (32 * 11 + 33 + 24 + 1 * 4 + 5 * 8 + 2)", - "= 455 bytes + 8 bytes overhead." - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "ownerAuthority", - "docs": [ - "Authorized System Roles" - ], - "type": "publicKey" - }, - { - "name": "managerAuthority", - "type": "publicKey" - }, - { - "name": "taskerAuthority", - "type": "publicKey" - }, - { - "name": "vaultCollateralAssetAccount", - "type": "publicKey" - }, - { - "name": "activeCollateralAccount", - "type": "publicKey" - }, - { - "name": "withdrawalCollateralAssetAccount", - "type": "publicKey" - }, - { - "name": "vaultOwnershipTokenAccount", - "type": "publicKey" - }, - { - "name": "feeTokenAccount", - "docs": [ - "Receipient of fees. Account can be owned by anyone and has to have", - "collateral asset as mint." - ], - "type": "publicKey" - }, - { - "name": "collateralAssetMint", - "type": "publicKey" - }, - { - "name": "vaultOwnershipTokenMint", - "type": "publicKey" - }, - { - "name": "seedVaultTokenPerCollateral", - "docs": [ - "Vault Constants", - "Used for calculating number of tokens for first deposit into the Vault." - ], - "type": { - "defined": "ExchangeRate" - } - }, - { - "name": "endingExchangeRateDecimals", - "docs": [ - "Decimals used for setting the epoch ending exchange rates." - ], - "type": "u8" - }, - { - "name": "strategyType", - "type": "u8" - }, - { - "name": "vaultAccountBump", - "type": "u8" - }, - { - "name": "uniqueSeed", - "docs": [ - "Additional seed for Vault Account with the same collateral type and strategy." - ], - "type": "u16" - }, - { - "name": "maxDeposits", - "docs": [ - "Vault Parameters (Modifiable by Vault Owner)" - ], - "type": "u64" - }, - { - "name": "fees", - "type": { - "defined": "VaultFees" - } - }, - { - "name": "currentEpoch", - "docs": [ - "Vault State" - ], - "type": "u64" - }, - { - "name": "currentEpochHistory", - "type": "publicKey" - }, - { - "name": "pendingCollateralAssetDeposits", - "type": "u64" - }, - { - "name": "pendingWithdrawalTokens", - "type": "u64" - }, - { - "name": "initiatedDebt", - "type": "u64" - }, - { - "name": "optionsActive", - "type": "bool" - } - ] - } - } - ], - "types": [ - { - "name": "ExchangeRate", - "docs": [ - "Size = 33 bytes" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "rate", - "docs": [ - "The number of units of the \"to\" asset to receive per unit of the \"from\"", - "asset. This number is in the native \"to\" units, adjusted by the decimals", - "of the exchange rate, to support higher precision rates." - ], - "type": "u128" - }, - { - "name": "decimals", - "docs": [ - "Decimals for the exchange rate" - ], - "type": "u8" - } - ] - } - }, - { - "name": "VaultFees", - "docs": [ - "Size = 24 bytes" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "managementFeeBps", - "docs": [ - "Percentage fee to collect on collateral asset per epoch." - ], - "type": "u64" - }, - { - "name": "performanceFeeBps", - "docs": [ - "Percentage fee to collect on Option Sale per epoch." - ], - "type": "u64" - }, - { - "name": "withdrawalFeeBps", - "docs": [ - "Percentage fee to collect on withdrawal." - ], - "type": "u64" - } - ] - } - } - ], - "errors": [] - } \ No newline at end of file diff --git a/projects/psyoptions/psyLendIdl.json b/projects/psyoptions/psyLendIdl.json deleted file mode 100644 index 44975e322d9..00000000000 --- a/projects/psyoptions/psyLendIdl.json +++ /dev/null @@ -1,380 +0,0 @@ -{ - "version": "0.1.0", - "name": "psylend", - "instructions": [], - "accounts": [ - { - "name": "Reserve", - "type": { - "kind": "struct", - "fields": [ - { - "name": "version", - "type": "u16" - }, - { - "name": "index", - "docs": [ - "The unique id for this reserve within the market.", - "Note: Should correspond to index of the `reserve_info` Vec on the market" - ], - "type": "u16" - }, - { - "name": "exponent", - "docs": [ - "The base 10 decimals used for token values", - "Note: Typically stored as a negative to reflect the Pyth value, but the absolute value is", - "used everywhere, so a positive number of equal magnitude can be used." - ], - "type": "i32" - }, - { - "name": "market", - "docs": [ - "The market this reserve is a part of." - ], - "type": "publicKey" - }, - { - "name": "pythOraclePrice", - "docs": [ - "The account where a Pyth oracle keeps the updated price of the token." - ], - "type": "publicKey" - }, - { - "name": "pythOracleProduct", - "docs": [ - "The account where a Pyth oracle keeps metadata about the token." - ], - "type": "publicKey" - }, - { - "name": "tokenMint", - "docs": [ - "The mint for the token being held in this reserve" - ], - "type": "publicKey" - }, - { - "name": "depositNoteMint", - "docs": [ - "The mint for this reserve's deposit notes. Uses `token_mint` decimals." - ], - "type": "publicKey" - }, - { - "name": "loanNoteMint", - "docs": [ - "The mint for this reserve's loan notes. Uses `token_mint` decimals." - ], - "type": "publicKey" - }, - { - "name": "vault", - "docs": [ - "The account with custody over the reserve's tokens." - ], - "type": "publicKey" - }, - { - "name": "feeNoteVault", - "docs": [ - "The account with custody of the notes generated from collected fees" - ], - "type": "publicKey" - }, - { - "name": "dexSwapTokens", - "docs": [ - "The account for storing quote tokens during a swap" - ], - "type": "publicKey" - }, - { - "name": "dexOpenOrders", - "docs": [ - "The account used for trading with the DEX" - ], - "type": "publicKey" - }, - { - "name": "dexMarket", - "docs": [ - "The DEX market account that this reserve can trade in" - ], - "type": "publicKey" - }, - { - "name": "reserved0", - "type": { - "array": [ - "u8", - 408 - ] - } - }, - { - "name": "config", - "type": { - "defined": "ReserveConfig" - } - }, - { - "name": "psyfiVaultConfig", - "type": { - "defined": "PsyFiVaultConfig" - } - }, - { - "name": "discountRate", - "docs": [ - "Discount rate for the token this reserve uses, updated from the common discounts account" - ], - "type": "u16" - }, - { - "name": "discountRateVersion", - "docs": [ - "Current version of the discount rate. If lower than the version in the discounts account,", - "should be updated." - ], - "type": "u16" - }, - { - "name": "haltState", - "docs": [ - "Indicates if the reserve has halted borrows, repays, or deposits:", - "", - "0 (0b00000000) = nothing halted,", - "1 (0b00000001) = deposits halted,", - "2 (0b00000010) = borrows halted,", - "4 (0b00000100) = repays halted,", - "8 (0b00001000) = withdraws halted", - "", - "Allows addition or bitwise AND to combine multiple states:", - "(e.g., 4 + 2 = 6 (0b00000110) = borrows and repays halted, others allowed)" - ], - "type": "u8" - }, - { - "name": "reserved1", - "type": { - "array": [ - "u8", - 123 - ] - } - }, - { - "name": "reserved2", - "type": { - "array": [ - "u128", - 32 - ] - } - }, - { - "name": "state", - "type": { - "array": [ - "u8", - 3584 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "PsyFiVaultConfig", - "type": { - "kind": "struct", - "fields": [ - { - "name": "vaultAccount", - "type": "publicKey" - }, - { - "name": "collateralTokenDecimals", - "type": "u8" - }, - { - "name": "reserved1", - "type": { - "array": [ - "u8", - 31 - ] - } - }, - { - "name": "reserved2", - "type": { - "array": [ - "u8", - 64 - ] - } - } - ] - } - }, - { - "name": "ReserveConfig", - "docs": [ - "We have three interest rate regimes. The rate is described by a continuous,", - "piecewise-linear function of the utilization rate:", - "1. zero to [utilization_rate_1]: borrow rate increases linearly from", - "[borrow_rate_0] to [borrow_rate_1].", - "2. [utilization_rate_1] to [utilization_rate_2]: borrow rate increases linearly", - "from [borrow_rate_1] to [borrow_rate_2].", - "3. [utilization_rate_2] to one: borrow rate increases linearly from", - "[borrow_rate_2] to [borrow_rate_3].", - "", - "Interest rates are nominal annual amounts, compounded continuously with", - "a day-count convention of actual-over-365. The accrual period is determined", - "by counting slots, and comparing against the number of slots per year." - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "utilizationRate1", - "docs": [ - "The utilization rate at which we switch from the first to second regime." - ], - "type": "u16" - }, - { - "name": "utilizationRate2", - "docs": [ - "The utilization rate at which we switch from the second to third regime." - ], - "type": "u16" - }, - { - "name": "borrowRate0", - "docs": [ - "The lowest borrow rate in the first regime. Essentially the minimum", - "borrow rate possible for the reserve." - ], - "type": "u16" - }, - { - "name": "borrowRate1", - "docs": [ - "The borrow rate at the transition point from the first to second regime." - ], - "type": "u16" - }, - { - "name": "borrowRate2", - "docs": [ - "The borrow rate at the transition point from the second to thirs regime." - ], - "type": "u16" - }, - { - "name": "borrowRate3", - "docs": [ - "The highest borrow rate in the third regime. Essentially the maximum", - "borrow rate possible for the reserve." - ], - "type": "u16" - }, - { - "name": "minCollateralRatio", - "docs": [ - "The minimum allowable collateralization ratio for an obligation" - ], - "type": "u16" - }, - { - "name": "liquidationPremium", - "docs": [ - "The amount given as a bonus to a liquidator" - ], - "type": "u16" - }, - { - "name": "manageFeeCollectionThreshold", - "docs": [ - "The threshold at which to collect the fees accumulated from interest into", - "real deposit notes." - ], - "type": "u64" - }, - { - "name": "manageFeeRate", - "docs": [ - "The fee rate applied to the interest payments collected" - ], - "type": "u16" - }, - { - "name": "loanOriginationFee", - "docs": [ - "The fee rate applied as interest owed on new loans" - ], - "type": "u16" - }, - { - "name": "reserved0", - "docs": [ - "unused" - ], - "type": "u16" - }, - { - "name": "confidenceThreshold", - "docs": [ - "Represented as a percentage of the Price", - "confidence values above this will not be accepted" - ], - "type": "u16" - }, - { - "name": "liquidationDexTradeMax", - "docs": [ - "The maximum token amount to allow in a single DEX trade when", - "liquidating assetr from this reserve as collateral." - ], - "type": "u64" - }, - { - "name": "depositRewardMultiplier", - "docs": [ - "Multiplier that determines the fraction of reward points (by dividing over", - "sum of all multiplier for the market) allocated for deposit notes." - ], - "type": "u8" - }, - { - "name": "borrowRewardMultiplier", - "docs": [ - "Multiplier that determines the fraction of reward points (by dividing over", - "sum of all multiplier for the market) allocated for loan notes." - ], - "type": "u8" - }, - { - "name": "reserved1", - "type": { - "array": [ - "u8", - 22 - ] - } - } - ] - } - } - ], - "events": [], - "errors": [] - } \ No newline at end of file diff --git a/projects/psyoptions/psyfiV2Idl.json b/projects/psyoptions/psyfiV2Idl.json deleted file mode 100644 index 320627cbf53..00000000000 --- a/projects/psyoptions/psyfiV2Idl.json +++ /dev/null @@ -1,302 +0,0 @@ -{ - "version": "0.1.5", - "name": "psyfi_euros", - "instructions": [], - "accounts": [ - { - "name": "VaultAccount", - "docs": [ - "Allocated Size = 2000 bytes, incl. buffer.", - "Estimated Rent = 0.0148 SOL", - "Current Size = (32 * 13 + 33 + 24 + 1 * 4 + 10 * 8 + 2) + 43 * 4", - "= 731 bytes" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "ownerAuthority", - "docs": [ - "Authorized System Roles" - ], - "type": "publicKey" - }, - { - "name": "managerAuthority", - "type": "publicKey" - }, - { - "name": "taskerAuthority", - "type": "publicKey" - }, - { - "name": "vaultCollateralAssetAccount", - "type": "publicKey" - }, - { - "name": "withdrawalCollateralAssetAccount", - "type": "publicKey" - }, - { - "name": "vaultOwnershipTokenAccount", - "type": "publicKey" - }, - { - "name": "feeTokenAccount", - "docs": [ - "Receipient of fees. Account can be owned by anyone and has to have", - "collateral asset as mint." - ], - "type": "publicKey" - }, - { - "name": "collateralAssetMint", - "type": "publicKey" - }, - { - "name": "quoteAssetMint", - "type": "publicKey" - }, - { - "name": "vaultOwnershipTokenMint", - "type": "publicKey" - }, - { - "name": "oracle", - "type": "publicKey" - }, - { - "name": "seedVaultTokenPerCollateral", - "docs": [ - "Vault Constants", - "Used for calculating number of tokens for first deposit into the Vault." - ], - "type": { - "defined": "ExchangeRate" - } - }, - { - "name": "endingExchangeRateDecimals", - "docs": [ - "Decimals used for setting the epoch ending exchange rates." - ], - "type": "u8" - }, - { - "name": "strategyType", - "type": "u8" - }, - { - "name": "vaultAccountBump", - "type": "u8" - }, - { - "name": "uniqueSeed", - "docs": [ - "Additional seed for Vault Account with the same collateral type and strategy." - ], - "type": "u16" - }, - { - "name": "maxDeposits", - "docs": [ - "Vault Parameters (Modifiable by Vault Owner)" - ], - "type": "u64" - }, - { - "name": "fees", - "type": { - "defined": "VaultFees" - } - }, - { - "name": "currentEpoch", - "docs": [ - "Vault State" - ], - "type": "u64" - }, - { - "name": "currentEpochHistory", - "type": "publicKey" - }, - { - "name": "pendingCollateralAssetDeposits", - "type": "u64" - }, - { - "name": "pendingWithdrawalTokens", - "type": "u64" - }, - { - "name": "optionsCollateralHeld", - "docs": [ - "Amount held as collateral by EuroPrimitive program for options minted." - ], - "type": "u64" - }, - { - "name": "optionsActive", - "type": "bool" - }, - { - "name": "auctionCurrencyMint", - "type": "publicKey" - }, - { - "name": "oracleProviderId", - "docs": [ - "An oracle provider identifier" - ], - "type": "u8" - }, - { - "name": "vaultOwnershipTokenSupply", - "docs": [ - "Cached Vault States. Used primarily for pricing of vault token without reading other", - "additional accounts." - ], - "type": "u64" - }, - { - "name": "vaultCollateralAssetAccountAmount", - "type": "u64" - }, - { - "name": "currentOptionSaleAmount", - "type": "u64" - }, - { - "name": "reserved1", - "type": "u64" - }, - { - "name": "reserved2", - "type": "u64" - }, - { - "name": "euroMetaCache", - "docs": [ - "Caches state of options minted. Each EuroMetaCache corresponds to", - "euro_meta and respective accounts in epoch_history.option_market_meta_vec." - ], - "type": { - "array": [ - { - "defined": "EuroMetaCache" - }, - 4 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "EuroMetaCache", - "docs": [ - "Size = (8 * 5 + 1 * 3) = 43 bytes" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "strikePrice", - "type": "u64" - }, - { - "name": "strikePriceDecimals", - "type": "u8" - }, - { - "name": "writerTokenAmount", - "type": "u64" - }, - { - "name": "writerTokenDecimals", - "type": "u8" - }, - { - "name": "optionTokenAmount", - "type": "u64" - }, - { - "name": "optionTokenDecimals", - "type": "u8" - }, - { - "name": "reserved1", - "type": "u64" - }, - { - "name": "reserved2", - "type": "u64" - } - ] - } - }, - { - "name": "ExchangeRate", - "docs": [ - "Size = 33 bytes" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "rate", - "docs": [ - "The number of units of the \"to\" asset to receive per unit of the \"from\"", - "asset. This number is in the native \"to\" units, adjusted by the decimals", - "of the exchange rate, to support higher precision rates." - ], - "type": "u128" - }, - { - "name": "decimals", - "docs": [ - "Decimals for the exchange rate" - ], - "type": "u8" - } - ] - } - }, - { - "name": "VaultFees", - "docs": [ - "Size = 24 bytes" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "managementFeeBps", - "docs": [ - "Percentage fee to collect on collateral asset per epoch." - ], - "type": "u64" - }, - { - "name": "performanceFeeBps", - "docs": [ - "Percentage fee to collect on Option Sale per epoch." - ], - "type": "u64" - }, - { - "name": "withdrawalFeeBps", - "docs": [ - "Percentage fee to collect on withdrawal." - ], - "type": "u64" - } - ] - } - } - ], - "errors": [] - } \ No newline at end of file diff --git a/projects/pu239/index.js b/projects/pu239/index.js deleted file mode 100644 index 7a849903a1c..00000000000 --- a/projects/pu239/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - methodology: methodologies.lendingMarket, - map: aaveExports( - "map", - "0x0fBB7d9866D357f75a8fAf83330b7d089703464e", - undefined, - ["0xa9fc4Ea8A1dE8C722D8a70a73f26E2DBD89475bd"], - { v3: true } - ), -}; diff --git a/projects/puddingswap/index.js b/projects/puddingswap/index.js deleted file mode 100644 index 61428e4a06e..00000000000 --- a/projects/puddingswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - hoo: { - /* tvl: getUniTVL({ - factory: '0x6168D508ad65D87f8F5916986B55d134Af7153bb', - useDefaultCoreAssets: true, - }), */ - tvl: () => ({}), - } -} - -module.exports.deadFrom = '2023-04-09' \ No newline at end of file diff --git a/projects/puff-penthouse/index.js b/projects/puff-penthouse/index.js deleted file mode 100644 index d0d9f126b61..00000000000 --- a/projects/puff-penthouse/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const { stakings } = require('../helper/staking') - -module.exports = { - mantle: { - staking: stakings( - ["0xBeCd6b3D8B06479c83533f0d7E6DF1b0e413AeEa", "0x1260140fEa31cf920D7D890aD1de85cbAC1Fea12", "0x35Ee9e36804d358A2892FA0De336426cC3Cb18e4"], - "0x26a6b0dcdCfb981362aFA56D581e4A7dBA3Be140"), - tvl: sumTokensExport({ - tokens: [ADDRESSES.mantle.mETH], - owners: ["0x0CC41C11878254aF8E65ca61C03DD03735F2DC6d", "0x1260140fEa31cf920D7D890aD1de85cbAC1Fea12", "0x35Ee9e36804d358A2892FA0De336426cC3Cb18e4"] - }), - }, -}; diff --git a/projects/puffer-avs/index.js b/projects/puffer-avs/index.js deleted file mode 100644 index 35341723a5a..00000000000 --- a/projects/puffer-avs/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { request, gql } = require('graphql-request') -const ADDRESSES = require('../helper/coreAssets.json') - -const unifiAvsSubgraphUrl = 'https://api.studio.thegraph.com/query/90587/unifiavs/version/latest' - -async function tvl(api) { - const query = gql`{ - totalShares(id: 1) { - id - totalEigenShares - totalShares - } - }` - - const response = await request(unifiAvsSubgraphUrl, query) - const { totalShares, totalEigenShares } = response.totalShares || {} - - api.add(ADDRESSES.ethereum.WETH, totalShares) - api.add(ADDRESSES.ethereum.EIGEN, totalEigenShares) -} - -module.exports = { - doublecounted: true, - methodology: 'Query the UniFi AVS subgraph to get the total shares and total eigen shares in the WETH and EIGEN base tokens.', - ethereum: { tvl } -}; diff --git a/projects/puffer-lrt/index.js b/projects/puffer-lrt/index.js deleted file mode 100644 index 68ffbd91a66..00000000000 --- a/projects/puffer-lrt/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const pufETH = '0xD9A442856C234a39a81a089C06451EBAa4306a72' - -async function tvl(api) { - return api.erc4626Sum({ calls: [pufETH], isOG4626: true, permitFailure: true, }) -} - -module.exports = { - doublecounted: true, - methodology: 'Returns the total assets owned by the Puffer Vault on Ethereum.', - ethereum: { tvl } -}; diff --git a/projects/puffer-unifi/index.js b/projects/puffer-unifi/index.js deleted file mode 100644 index 6aecf89eae6..00000000000 --- a/projects/puffer-unifi/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const unifiETH = '0x196ead472583bc1e9af7a05f860d9857e1bd3dcc' -const pufETH = '0xD9A442856C234a39a81a089C06451EBAa4306a72' - -async function tvl(api) { - const unifiPufEthBalance = await api.call({ - abi: 'erc20:balanceOf', - target: pufETH, - params: [unifiETH], - }) - - api.add(pufETH, unifiPufEthBalance) -} - -module.exports = { - doublecounted: true, - methodology: 'Returns the balance of the Puffer Vault (pufETH) owned by UniFi (unifiETH).', - ethereum: { tvl } -}; diff --git a/projects/puffer-vaults/index.js b/projects/puffer-vaults/index.js deleted file mode 100644 index c4bce8adeaa..00000000000 --- a/projects/puffer-vaults/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const vaults = [ - '0x196ead472583bc1e9af7a05f860d9857e1bd3dcc', - '0x82c40e07277eBb92935f79cE92268F80dDc7caB4', - '0x170d847a8320f3b6a77ee15b0cae430e3ec933a0', -] - -const accountants = [ - '0xa9fb7e2922216debe3fd5e1bbe7591ee446dc21c', - '0xe0bDb7b9225A2CeB42998dc2E51D4D3CDeb7e3Be', - '0x2afb28b0561d99b5e00829ec2ef54946a00a35f7', -] - -async function tvl(api) { - const supplies = await api.multiCall({ calls: vaults, abi: 'uint256:totalSupply' }) - const quotes = await api.multiCall({ calls: accountants, abi: 'uint256:getRate' }) - const bases = await api.multiCall({ calls: accountants, abi: 'address:base' }) - - for (let i = 0; i < vaults.length; i++) { - const bvSupply = supplies[i] - let base = bases[i] - const quote = quotes[i] - - const denominator = Math.pow(10, (String(quote).length - 1)) - api.add(base, bvSupply * quote / denominator) - } -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - methodology: 'Get the total supply of each vault, then multiply by the quote (getRate) to get the TVL of the vault in the base token.', - ethereum: { tvl }, -} diff --git a/projects/puli/index.js b/projects/puli/index.js deleted file mode 100644 index 5e2be912f92..00000000000 --- a/projects/puli/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -module.exports = { - bsc: { - tvl: () => 0 - } -} - -module.exports.deadFrom = '2022-05-09' diff --git a/projects/pulsar-money/index.js b/projects/pulsar-money/index.js deleted file mode 100644 index 88cccc63aa8..00000000000 --- a/projects/pulsar-money/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/elrond"); -const { getCoreAssets } = require("../helper/tokenMapping"); - -const vault = "erd1qqqqqqqqqqqqqpgq39rqpn2xvm0ykl2ccaa4h5zk5c9r647wdteswmap9l"; -const socialPayments = - "erd1qqqqqqqqqqqqqpgq85tlmqudva0fyawkkuc6qga60kclzyzj60ws7kxxf5"; -const smartTransfers1 = - "erd1qqqqqqqqqqqqqpgqd6l8ayd0zxfekl53geyxgjzjxu3ceyca60wsje6asx"; -const smartTransfers2 = - "erd1qqqqqqqqqqqqqpgq2jjxnsa025me89a4pe5az9dujz28us7t60wsz3mcxs"; - -const ADDRESSES = [vault, socialPayments, smartTransfers1, smartTransfers2]; - -module.exports = { - timetravel: false, - elrond: { - tvl: sumTokensExport({ - owners: ADDRESSES, - whitelistedTokens: getCoreAssets("elrond"), - }), - vesting: sumTokensExport({ - owners: ADDRESSES, - blacklistedTokens: getCoreAssets("elrond"), - }), - }, -}; diff --git a/projects/pulsarswap/index.js b/projects/pulsarswap/index.js deleted file mode 100644 index dd82da67029..00000000000 --- a/projects/pulsarswap/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const config = { - arbitrum: '0x336a2f76d2be24e7cb6f468665a4277d4d617d00', - ethereum: '0x408f66057163d829a30d4d466092c6b0eebb692f', - mantle: '0xB5B03706C24c79D3F7a368b30562a1711d74F688', -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const pairs = await api.fetchList({ lengthAbi: 'uint256:allPairsLength', itemAbi: 'function allPairs(uint256) view returns (address)', target: factory}) - const tokenA = await api.multiCall({ abi: 'address:tokenA', calls: pairs}) - const tokenB = await api.multiCall({ abi: 'address:tokenB', calls: pairs}) - return sumTokens2({ api, ownerTokens: pairs.map((v, i) => [[tokenA[i], tokenB[i]], v])}) - } - } -}) \ No newline at end of file diff --git a/projects/pulsechain-bridge/index.js b/projects/pulsechain-bridge/index.js deleted file mode 100644 index 89e1079f68a..00000000000 --- a/projects/pulsechain-bridge/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owner: "0x1715a3E4A142d8b698131108995174F37aEBA10D", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/pulsechain/index.js b/projects/pulsechain/index.js deleted file mode 100644 index 133c1ce524d..00000000000 --- a/projects/pulsechain/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: '0x1715a3E4A142d8b698131108995174F37aEBA10D', - fetchCoValentTokens: true, - permitFailure: true - }), - }, -}; diff --git a/projects/pulsedao/index.js b/projects/pulsedao/index.js deleted file mode 100644 index f05a113ee06..00000000000 --- a/projects/pulsedao/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const pld = "0x6A5E24E62135e391B6dd77A80D38Ee5A40834167"; -const pshare = "0xB92E1FdA97e94B474516E9D8A9E31736f542e462"; -const boardroom = "0x88a0EC0c1664cd1205D0a7870302FE184b9a24fA"; -const rewardPool = "0xBD7f881bC9b35ff38bd5A99eA0A34d559aF950A4"; -const lps = [ - "0xd19d1056807f65fd2e10b8993d869204e1f07155", - "0x96723306274c3fffee1375b322d361d0085bc768" -] - -module.exports = { - hallmarks: [ - [1647216000, "Rug Pull"] - ], - deadFrom: 1648765747, - misrepresentedTokens: true, - ...tombTvl(pld, pshare, rewardPool, boardroom, lps, "fantom", undefined, false, lps[1]) -} diff --git a/projects/pulsemaxfinance/index.js b/projects/pulsemaxfinance/index.js deleted file mode 100644 index 40b9adf5320..00000000000 --- a/projects/pulsemaxfinance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const max = "0x368acF537B1A8EfFE4ceEF11054CBcEAF0302086"; -const pshare = "0xbc57572Ba711C8077222142C3374acE7B0c92231"; -const rewardpool = "0xEb8A0191Fa31F7aCEDeDe618246f7f7f907139bA"; -const boardroom = "0x4c5c8fD88Ba0709949e3C5Be3502500112Cd026c"; - -const pool2LPs = [ - "0x32D1D76bA3df143C7258d933dAfB048f137c42BA", // PSHARE-DAI - "0x0edC492E29Ce7bEd4c71f83513E435f5d81cDEF9", // MAX-DAI - "0x99B45b6f0Dd06866C955207c96431cDA2DA1d34b" // MAX-PSHARE -] - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(max, pshare, rewardpool, boardroom, pool2LPs, "pulse", undefined, false, pool2LPs[0]) -} diff --git a/projects/pulserate/index.js b/projects/pulserate/index.js deleted file mode 100644 index aa0ade52159..00000000000 --- a/projects/pulserate/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL, sumTokensExport } = require("../helper/unknownTokens"); -const PSHARE = "0x11D4109Cd7E5cE596471583E90e20e51d087de33"; -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xE2332E5297b18a21DcE0E6ac461e821C353A00cA) is used to find the LP pairs. TVL is equal to the liquidity on the AMM. Staking balance is equal to the balance of PSHARE in Boardroom contract", - pulse: { - tvl: getUniTVL({ - factory: "0xE2332E5297b18a21DcE0E6ac461e821C353A00cA", - useDefaultCoreAssets: true, - }), - staking: sumTokensExport({ - owners: ["0xD7A2F5A72079654E7997C615cC07A1b92D850b32"], - tokens: [PSHARE], - lps: [ - '0x91d3E933B7f2ccBAdf4d5278d826Cb10659a1c55', - ], - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/pulsex-stableswap/index.js b/projects/pulsex-stableswap/index.js deleted file mode 100644 index e04a6fdde19..00000000000 --- a/projects/pulsex-stableswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache'); - -const graphUrl = "https://graph.pulsechain.com/subgraphs/name/pulsechain/stableswap" - -module.exports = { - pulse: { - tvl: async (api) => { - const res = await cachedGraphQuery('pulsex/stableswap-tvl', graphUrl, '{ pairs { id token0 { id } token1 { id } token2 { id } }}'); - const ownerTokens = res.pairs.map((pair) => [[ - pair.token0.id, - pair.token1.id, - pair.token2.id - ], pair.id]); - return api.sumTokens({ ownerTokens }); - }, - }, -}; \ No newline at end of file diff --git a/projects/pulsex-v2/index.js b/projects/pulsex-v2/index.js deleted file mode 100644 index 9cec9bf6849..00000000000 --- a/projects/pulsex-v2/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - pulse: { - tvl: getUniTVL({ factory: '0x29ea7545def87022badc76323f373ea1e707c523', useDefaultCoreAssets: true }), - }, -}; // node test.js projects/pulsex/index.js \ No newline at end of file diff --git a/projects/pulsex/index.js b/projects/pulsex/index.js deleted file mode 100644 index c2a330054c4..00000000000 --- a/projects/pulsex/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x1715a3E4A142d8b698131108995174F37aEBA10D) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - pulse: { - tvl: getUniTVL({ factory: '0x1715a3E4A142d8b698131108995174F37aEBA10D', useDefaultCoreAssets: true }), - }, -}; // node test.js projects/pulsex/index.js \ No newline at end of file diff --git a/projects/pump-markets/index.js b/projects/pump-markets/index.js deleted file mode 100644 index 0a138e98d50..00000000000 --- a/projects/pump-markets/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES = require("../helper/coreAssets.json"); - -module.exports = { - blast: { - tvl: sumTokensExport({ - owner: "0x360CFF6ca6278954933A8556D1938B4cF3D747B5", - tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH], - }), - }, - ethereum: { - tvl: sumTokensExport({ - owner: "0x360CFF6ca6278954933A8556D1938B4cF3D747B5", - tokens: [ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WETH], - }), - }, - arbitrum: { - tvl: sumTokensExport({ - owner: "0x360CFF6ca6278954933A8556D1938B4cF3D747B5", - tokens: [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.WETH], - }), - }, -}; diff --git a/projects/pump-swap/index.js b/projects/pump-swap/index.js deleted file mode 100644 index f089bf87018..00000000000 --- a/projects/pump-swap/index.js +++ /dev/null @@ -1,134 +0,0 @@ -const { queryAllium } = require("../helper/allium"); - -async function tvl(api) { - const endTimestamp = api.timestamp; - const startTimestamp = endTimestamp - (86400 * 30 * 365); - - // Uncomment this query while backfilling - - // const query = ` - // WITH pool_vaults AS ( - // SELECT DISTINCT - // liquidity_pool_address, - // token0_address, - // token1_address - // FROM solana.dex.pools - // WHERE project = 'pumpswap' - // ), - // vault_list AS ( - // SELECT liquidity_pool_address as vault_address, token0_address as mint_address FROM pool_vaults - // UNION - // SELECT liquidity_pool_address as vault_address, token1_address as mint_address FROM pool_vaults - // ), - // latest_balances AS ( - // SELECT - // b.address, - // b.mint, - // b.raw_balance, - // b.block_timestamp, - // vl.mint_address, - // b.usd_balance as usd_balance, - // ROW_NUMBER() OVER ( - // PARTITION BY b.address, b.mint - // ORDER BY b.block_timestamp DESC, b.block_slot DESC, b.txn_index DESC - // ) as rn - // FROM solana.assets.balances b - // INNER JOIN vault_list vl ON b.address = vl.vault_address AND b.mint = vl.mint_address - // WHERE b.block_timestamp >= TO_TIMESTAMP_NTZ(${startTimestamp}) - // AND b.block_timestamp < TO_TIMESTAMP_NTZ(${endTimestamp}) - // AND b.is_voting = false - // AND b.raw_balance > 0 - // AND b.usd_balance > 0 - // ) - // SELECT - // mint_address, - // SUM(raw_balance) as total_raw_balance, - // SUM(usd_balance) as total_usd_balance - // FROM latest_balances - // WHERE rn = 1 - // AND mint_address IS NOT NULL - // GROUP BY mint_address - // ORDER BY total_usd_balance DESC - // LIMIT 100000 - // `; - - const query = ` - WITH pool_vaults AS ( - SELECT DISTINCT - liquidity_pool_address, - token0_address, - token1_address, - token0_vault, - token1_vault - FROM solana.dex.pools - WHERE project = 'pumpswap' - ), - vault_list AS ( - SELECT token0_vault as vault_address, token0_address as mint_address FROM pool_vaults - UNION - SELECT token1_vault as vault_address, token1_address as mint_address FROM pool_vaults - ), - latest_balances AS ( - SELECT - b.address, - b.mint, - b.raw_balance, - vl.mint_address, - b.usd_balance_current as usd_balance - FROM solana.assets.balances_latest b - INNER JOIN vault_list vl ON b.token_account = vl.vault_address AND b.mint = vl.mint_address - WHERE b.raw_balance > 0 - AND b.usd_balance_current > 1000 - ) - SELECT - mint_address, - SUM(raw_balance) as total_raw_balance, - SUM(usd_balance) as total_usd_balance - FROM latest_balances - WHERE mint_address IS NOT NULL - GROUP BY mint_address - ORDER BY total_usd_balance DESC - LIMIT 15000 - ` - - const data = await queryAllium(query) - - for (const item of data) { - api.add(item.mint_address, item.total_raw_balance) - } -} - - -module.exports = { - solana: { tvl, }, - timetravel: false, - isHeavyProtocol: true, -} - -// const idl = { -// "address": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", -// "metadata": {"name": "pump_amm", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, -// "instructions": [], -// "accounts": [{"name": "Pool", "discriminator": [241, 154, 109, 4, 17, 177, 109, 188]}], -// "events": [], -// "errors": [], -// "types": [ -// { -// "name": "Pool", -// "type": { -// "kind": "struct", -// "fields": [ -// {"name": "pool_bump", "type": "u8"}, -// {"name": "index", "type": "u16"}, -// {"name": "creator", "type": "pubkey"}, -// {"name": "base_mint", "type": "pubkey"}, -// {"name": "quote_mint", "type": "pubkey"}, -// {"name": "lp_mint", "type": "pubkey"}, -// {"name": "pool_base_token_account", "type": "pubkey"}, -// {"name": "pool_quote_token_account", "type": "pubkey"}, -// {"name": "lp_supply", "docs": ["True circulating supply without burns and lock-ups"], "type": "u64"} -// ] -// } -// } -// ] -// } \ No newline at end of file diff --git a/projects/pumpbtc/index.js b/projects/pumpbtc/index.js deleted file mode 100644 index 66b742eb34f..00000000000 --- a/projects/pumpbtc/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { sumTokens } = require('../helper/sumTokens'); -const utils = require('../helper/utils'); -const { getConfig } = require('../helper/cache'); -const bitcoinBook = require('../helper/bitcoin-book'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -module.exports = { - methodology: 'TVL for pumpBTC is calculated based on the total value of WBTC, FBTC, BTCB held in the contract that were utilized in the minting process of pumpBTC.', -} - -async function getStakingAddresses() { - let res = await utils.fetchURL('https://dashboard.pumpbtc.xyz/api/dashboard/asset/tokenowners') - - const btcAddresses = res.data.data || {} - return btcAddresses -} - -async function bitcoinTvl(api) { - const owners = await bitcoinBook.pumpBTC() - return sumTokens({ api, owners }) -} - -async function otherTvl(api) { - const addresses = await getConfig('pumpbtc/v2-other', undefined, { fetcher: getStakingAddresses }) - - if (!addresses[api.chain]) { - return; - } - - const { owners, tokens } = addresses[api.chain] - return sumTokens2({ api, owners, tokens }) -} - -module.exports.isHeavyProtocol = true; -module.exports.doublecounted = true; - -['bitcoin', 'ethereum', 'bsc', 'mantle', 'base', 'arbitrum', 'bob', 'morph', 'sei'].forEach(chain => { - if (chain == 'bitcoin') { - module.exports[chain] = { - tvl: bitcoinTvl, - } - } else { - module.exports[chain] = { - tvl: otherTvl - } - } -}) \ No newline at end of file diff --git a/projects/pumpkin-dao/index.js b/projects/pumpkin-dao/index.js deleted file mode 100644 index 92327e523d4..00000000000 --- a/projects/pumpkin-dao/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0x0DEA39519cb8c7c549e321d3020E96f91Ed36Ed3"; -module.exports = ohmTvl(treasuryAddress, [ -//DAI - [ADDRESSES.fantom.DAI, false], -//wFTM - [ADDRESSES.fantom.WFTM, false], -//SPOOKY LP - ["0xdf42866dc8fa6a962124b5d9eb8c91fa447f4feb", true] , -//SPOOKY LP - ["0x01e7f6506bc3661dc690a0a076ace9d3d0253d92", true] -], "fantom", "0x5d189D8224a9aFBc3eC69bedBe2f6dd89B937E73", "0x8eDDA0107D661E82df660DBa01Ff1D40FA17B70c" , addr=> - addr.toLowerCase()===ADDRESSES.fantom.DAI?[ADDRESSES.ethereum.DAI]:`fantom:${addr}` -, undefined, false) \ No newline at end of file diff --git a/projects/pumpxy/index.js b/projects/pumpxy/index.js deleted file mode 100644 index 7e6d27d2a72..00000000000 --- a/projects/pumpxy/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - methodology: "TVL is calculated by retrieving the ETH balance of all meme coin contracts deployed by the Zircuit factory contract. The factory contract dynamically manages meme coins, and their ETH holdings are summed up to calculate the total TVL.", - start: '2024-09-11', - zircuit: { - tvl, - }, -} - -async function tvl(api) { - const factory = '0x2FB9FbFF266CED68FCfEEC850e3ce9c58BB68Ec3'; - const memeCoins = await api.fetchList({ lengthAbi: 'allMemecoinsCount', itemAbi: 'allMemecoins', target: factory }) - return sumTokens2({ api, owners: memeCoins, token: nullAddress}) -} diff --git a/projects/punk-strategy/index.js b/projects/punk-strategy/index.js deleted file mode 100644 index 74cfef9d56e..00000000000 --- a/projects/punk-strategy/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -async function tvl(api) { - // add PUNK balance - await api.sumTokens({ owner: '0x1244EAe9FA2c064453B5F605d708C0a0Bfba4838', tokens: ['0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB'] }) - // Use the correct Uniswap v4 position resolver - await sumTokens2({ - api, - resolveUniV4: true, - owner: '0xc50673EDb3A7b94E8CAD8a7d4E0cD68864E33eDF', - tokens: [nullAddress,], - - uniV4ExtraConfig:{ positionIds: ['61403']} - }) - api.getBalancesV2().removeTokenBalance('0xc50673EDb3A7b94E8CAD8a7d4E0cD68864E33eDF') // remove own token from tvl -} - -module.exports = { - start: '2025-09-06', - methodology: `Counts liquidity belonging to the protocol in the Uniswap V4 pools (only ETH part), and ETH & PUNKS on the contract`, - doublecounted: true, - ethereum: { tvl } -}; \ No newline at end of file diff --git a/projects/punkswap/index.js b/projects/punkswap/index.js deleted file mode 100644 index a8572a73248..00000000000 --- a/projects/punkswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const {getUniTVL} = require("../helper/unknownTokens"); - -module.exports = { - op_bnb: { - tvl: getUniTVL({ factory: "0x5640113EA7F369E6DAFbe54cBb1406E5BF153E90", useDefaultCoreAssets: true,}) - }, - shibarium: { - tvl: getUniTVL({ factory: "0x5640113EA7F369E6DAFbe54cBb1406E5BF153E90", useDefaultCoreAssets: true,}) - }, - scroll: { - tvl: getUniTVL({ factory: "0x5640113EA7F369E6DAFbe54cBb1406E5BF153E90", useDefaultCoreAssets: true,}) - } -}; \ No newline at end of file diff --git a/projects/puppyfun/index.js b/projects/puppyfun/index.js deleted file mode 100644 index b559795ed95..00000000000 --- a/projects/puppyfun/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const factory = '0xbFC5229ab471c54B58481fA232CFd4a18371C51C' - -async function tvl(api) { - const pairs = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: factory }) - return api.sumTokens({ owners: pairs, tokens: [ADDRESSES.bsc.WBNB], }) -} - -module.exports = { - methodology: "TVL is counted as the amount of BNB locked in the AMM pools", - bsc: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/purefi/index.js b/projects/purefi/index.js deleted file mode 100644 index d5d9fd7cd13..00000000000 --- a/projects/purefi/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { staking, stakings } = require("../helper/staking"); - -/*** Ethereum Addresses ***/ -const UFI = "0xcDa4e840411C00a614aD9205CAEC807c7458a0E3"; - -const farmingStakingContract = "0xafAb7848AaB0F9EEF9F9e29a83BdBBBdDE02ECe5"; - -/*** BSC Addresses ***/ -const UFI_bsc = "0xe2a59d5e33c6540e18aaa46bf98917ac3158db0d"; - -const farmingStakingContracts_bsc = [ - //--- Farming --- - //UFI-1 - "0x33f86fDc03387A066c4395677658747c696932Eb", - //UFI to earn ULTRA - "0xAc8892AC86bB02F26544F31af06b86fdD2105862", - //UFI to earn LTT - "0x8a92E706cd359536D7A57dC9CC24054f7B17e021", - //UFI-2 - "0x9ed4B0a2B8345EEb1e43A4D0298e351fc320D278", - //UFI-3 - "0xafAb7848AaB0F9EEF9F9e29a83BdBBBdDE02ECe5", - //--- Round --- - //LTT - "0x0274c78595B25eBBA4F9e20610422d04d8Dc8086", - //SAFLE - "0xfdd4eF64dA10fa5809AaBe98a225A4b94E53d8e1", - //HAI - "0x42554c3211e77e65a6c7b6e511be64b4adac6727", - //UFI to earn IDTT - "0x0e2F752C845Bdb31368d7012CA93f45AF345Ec73", - //Distribution - "0x2905f7d2B05b5Fb22afe4F2B84590f29Bb40D326", -]; - -/*** Polygon Addresses ***/ -const UFI_polygon = "0x3c205C8B3e02421Da82064646788c82f7bd753B9"; -const SAFLE_polygon = "0x04b33078Ea1aEf29bf3fB29c6aB7B200C58ea126"; -const SCA_polygon = "0x11a819beb0aa3327e39f52f90d65cc9bca499f33"; - -const farmingStakingContracts_polygon = [ - //--- Farming --- - //UFI - "0x532516B671ebD92f2F1775b6d7CCA38165694DFC", - //UFI and SAFLE - "0x5A26315f72efB90eC77a879eF781246B663d5482", - //SCA - "0x236e7E724c309fEaEBB1d5a36b33a3b8f1617952", - //SAFLE - "0xF1a44C75E4D92f4DA737485f96b0c2a1327d91b2", -]; - -const polygonTvl = async (api) => { - return api.sumTokens({ owners: farmingStakingContracts_polygon, tokens: [SAFLE_polygon, SCA_polygon,] }); -}; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking(farmingStakingContract, UFI), - }, - bsc: { - staking: stakings(farmingStakingContracts_bsc, UFI_bsc), - }, - polygon: { - staking: stakings(farmingStakingContracts_polygon, UFI_polygon), - tvl: polygonTvl, - }, - methodology: "Counts tvl of the assets staked on the Farming seccion thgough Farming Contracts", -}; diff --git a/projects/pureswap/index.js b/projects/pureswap/index.js deleted file mode 100644 index cc7c0c17133..00000000000 --- a/projects/pureswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address on bsc (0x94b4188D143b9dD6bd7083aE38A461FcC6AAd07E) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - bsc: { - tvl: getUniTVL({ factory: '0x94b4188D143b9dD6bd7083aE38A461FcC6AAd07E', useDefaultCoreAssets: true }), - }, -}; diff --git a/projects/purple-bridge-dex/index.js b/projects/purple-bridge-dex/index.js deleted file mode 100644 index aa1627babb7..00000000000 --- a/projects/purple-bridge-dex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: getUniTVL({factory: '0x9c9238b2E47D61482D36deaFcDCD448D8bAAd75b', useDefaultCoreAssets: true, }), - } -} \ No newline at end of file diff --git a/projects/puzzle-lend/index.js b/projects/puzzle-lend/index.js deleted file mode 100644 index 5d26c6c6a93..00000000000 --- a/projects/puzzle-lend/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens, dataSearch } = require('../helper/chain/waves') -const markets = ['3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH', '3P8Df2b7ywHtLBHBe8PBVQYd3A5MdEEJAou', '3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X', '3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH', '3PAd9Aqg3cQSzu26MFYWQYcjSXPVCJtuf5V', '3P4QjKNNVnEJdmcvPezmoTvsqpmhtxX2SaA', '3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe', '3PP9NsYNdmXTqt5bseaegRKHUE76F9MHGgW'] - -module.exports = { - timetravel: false, - waves: { - tvl: api => sumTokens({ api, owners: markets, includeWaves: true, blacklistedTokens: ['HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'] }), - borrowed, - } -} - -async function borrowed(api) { - for (const market of markets) { - const result = await dataSearch(market, "total_borrowed.*") - for (const { key, value } of result) { - api.add(key.replace('total_borrowed_', ''), value) - } - } -} diff --git a/projects/puzzle.js b/projects/puzzle.js deleted file mode 100644 index 7f01ad3629d..00000000000 --- a/projects/puzzle.js +++ /dev/null @@ -1,35 +0,0 @@ -const { dataSearch } = require('./helper/chain/waves'); -const { getConfig } = require("./helper/cache"); -const { transformDexBalances, } = require("./helper/portedTokens"); - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - waves: { - tvl, - } -} - -async function tvl(api) { - const data = [] - const pools = await getConfig('puzzle-dex', 'https://puzzle-js-back.herokuapp.com/api/v1/pools') - for (const { contractAddress } of pools) { - const res = await dataSearch(contractAddress, "global_.*_balance") - let items = [] - res.forEach(({ key, value }) => { - const token = key.replace('global_', '').replace('_balance', '') - items.push({ token, value }) - }) - - if (res.length !== 2) - items.forEach(({ token, value }) => api.add(token, value)) - else - data.push({ - token0: items[0].token, - token1: items[1].token, - token0Bal: items[0].value, - token1Bal: items[1].value, - }) - } - return transformDexBalances({ api, data, }) -} \ No newline at end of file diff --git a/projects/pv01/index.js b/projects/pv01/index.js deleted file mode 100644 index caa377dcf84..00000000000 --- a/projects/pv01/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const PV01_VAULT_FACTORY_ETHEREUM = '0x7eB37F9326E2474D5178Fd5224bc35E30A5398B5'; -const abi = { - getVaults: "function getVaults(string type_) view returns (address[])" -}; - -async function tvl(api) { - // Fetch the list of vaults from the factory - const vaults = await api.call({ abi: abi.getVaults, target: PV01_VAULT_FACTORY_ETHEREUM, params: ['BondPerpetualVault'] }); - // Fetch total supply for each vault - const supplies = await api.multiCall({ abi: "erc20:totalSupply", calls: vaults, }); - api.add(vaults, supplies) -} - -module.exports = { - methodology: - "Counts the total supply of rTBL (Rolling T-bill) tokens across all PV01 perpetual bond vaults.", - ethereum: { - tvl, - }, -}; diff --git a/projects/pwn/index.js b/projects/pwn/index.js deleted file mode 100644 index 5539782393a..00000000000 --- a/projects/pwn/index.js +++ /dev/null @@ -1,107 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const PWN_ALPHA_MAINNET = "0x45DB28b2d4878Ad124c037d4558AcF5Db3bBa6A5"; -const PWN_BETA_MAINNET = "0xb98eFE56deCCeb1BeC9fAEeAF62500deb0953474"; -const PWN_BETA_POLYGON = "0xaF0d978275a2e7e3109F8C6307Ffd281774C623E"; -const PWN_BUNDLER_MAINNET = "0x19e3293196aee99BB3080f28B9D3b4ea7F232b8d"; -const PWN_BUNDLER_POLYGON = "0xe52405604bF644349f57b36Ca6E85cf095faB8dA"; -const PWN_BUNDLER_CRONOS = "0x973E09e96E64E4bf17e383a8A497Fb566284c707"; -const PWN_BUNDLER_BASE = "0x6fD3f5439aB1C103599385929d5f4c19acdBd264"; -const PWN_BUNDLER_OPTIMISM = "0x43Ffd9dF079451Fe7D16Ac2c51E13DF2a173B71E"; -const PWN_BUNDLER_ARBITRUM = "0x448E3D0a4BAa00FE511a03E7B27177AeDE6d9636"; -const PWN_BUNDLER_BSC = "0x4A75a527E97d853109aA6998a2B9E45a87A31e9f"; -const PWN_BUNDLER_UNICHAIN = "0x354869495Fd916ADAFc0626C3d60115240dc06f1"; -const PWN_BUNDLER_WORLD = "0xc0aCA216Aa936511b24Ff238F610B02bE54e10AD"; -const PWN_BUNDLER_LINEA = "0xbe13866797bbdE2646FFBb58F102FcA91EFC88F1"; -const PWN_BUNDLER_GNOSIS = "0x431131622e088Fb0F9828Ca05b62210fc9eDcC04"; -const PWN_V1_SIMPLE_LOAN = "0x50160ff9c19fbE2B5643449e1A321cAc15af2b2C"; -const PWN_V1_1_SIMPLE_LOAN_A = "0x57c88D78f6D08b5c88b4A3b7BbB0C1AA34c3280A"; // Mainnet, Polygon, Arbitrum, BSC -const PWN_V1_1_SIMPLE_LOAN_B = "0x4188C513fd94B0458715287570c832d9560bc08a"; // Cronos, Base, Optimism -const PWN_V1_2_SIMPLE_LOAN = "0x9A93AE395F09C6F350E3306aec592763c517072e"; -const PWN_V1_2_2_SIMPLE_LOAN = "0x0773d5F2f7b3264a9Eb285F085aCCcC53d5aAa4F"; -const PWN_V1_3_SIMPLE_LOAN = "0x719A69d0dc67bd3Aa7648D4694081B3c87952797"; -const PWN_V1_3_SIMPLE_LOAN_UNICHAIN = "0x322e86E6c813d77a904C5B4aa808a13E0AD4412f"; - -module.exports = { - misrepresentedTokens: true, - methodology: `Sums up all the tokens deposited in the PWN Protocol. NFTs are resolved to their floor price using Chainlink price feeds. Note that NFTs are resolved only on Ethereum.`, - ethereum: { - tvl: sumTokensExport({ - owners: [ - PWN_ALPHA_MAINNET, - PWN_BETA_MAINNET, - PWN_BUNDLER_MAINNET, - PWN_V1_SIMPLE_LOAN, - PWN_V1_1_SIMPLE_LOAN_A, - PWN_V1_2_SIMPLE_LOAN, - PWN_V1_2_2_SIMPLE_LOAN, - PWN_V1_3_SIMPLE_LOAN, - ], - resolveNFTs: true, - resolveArtBlocks: true, - }), - }, - // resolveNFTs: true is currently unsupported on Polygon, Cronos, Base and Mantle - // https://discord.com/channels/823822164956151810/823885412425793587/1139362819012304956 - polygon: { - tvl: sumTokensExport({ - owners: [ - PWN_BETA_POLYGON, - PWN_BUNDLER_POLYGON, - PWN_V1_SIMPLE_LOAN, - PWN_V1_1_SIMPLE_LOAN_A, - PWN_V1_2_SIMPLE_LOAN, - PWN_V1_2_2_SIMPLE_LOAN, - PWN_V1_3_SIMPLE_LOAN, - ], - fetchCoValentTokens: true, - }), - }, - cronos: { - tvl: sumTokensExport({ - owners: [PWN_BUNDLER_CRONOS, PWN_V1_1_SIMPLE_LOAN_B, PWN_V1_3_SIMPLE_LOAN], fetchCoValentTokens: true, tokenConfig: { ignoreMissingChain: true, }, - }), - }, - base: { - tvl: sumTokensExport({ - owners: [PWN_BUNDLER_BASE, PWN_V1_1_SIMPLE_LOAN_B, PWN_V1_2_SIMPLE_LOAN, PWN_V1_2_2_SIMPLE_LOAN, PWN_V1_3_SIMPLE_LOAN], fetchCoValentTokens: true, - }), - }, - arbitrum: { - tvl: sumTokensExport({ - owners: [PWN_BUNDLER_ARBITRUM, PWN_V1_1_SIMPLE_LOAN_A, PWN_V1_2_SIMPLE_LOAN, PWN_V1_2_2_SIMPLE_LOAN, PWN_V1_3_SIMPLE_LOAN], fetchCoValentTokens: true, - }), - }, - optimism: { - tvl: sumTokensExport({ - owners: [PWN_BUNDLER_OPTIMISM, PWN_V1_1_SIMPLE_LOAN_B, PWN_V1_2_SIMPLE_LOAN, PWN_V1_2_2_SIMPLE_LOAN, PWN_V1_3_SIMPLE_LOAN], fetchCoValentTokens: true, - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: [PWN_BUNDLER_BSC, PWN_V1_1_SIMPLE_LOAN_A, PWN_V1_2_SIMPLE_LOAN, PWN_V1_2_2_SIMPLE_LOAN, PWN_V1_3_SIMPLE_LOAN], fetchCoValentTokens: true, - }), - }, - linea: { - tvl: sumTokensExport({ - owners: [PWN_V1_2_SIMPLE_LOAN, PWN_V1_2_2_SIMPLE_LOAN, PWN_V1_3_SIMPLE_LOAN, PWN_BUNDLER_LINEA], fetchCoValentTokens: true, - }), - }, - xdai: { - tvl: sumTokensExport({ - owners: [PWN_V1_2_SIMPLE_LOAN, PWN_V1_2_2_SIMPLE_LOAN, PWN_V1_3_SIMPLE_LOAN, PWN_BUNDLER_GNOSIS], fetchCoValentTokens: true, - }), - }, - unichain: { - tvl: sumTokensExport({ - owners: [PWN_V1_3_SIMPLE_LOAN_UNICHAIN, PWN_BUNDLER_UNICHAIN], fetchCoValentTokens: true, tokenConfig: { ignoreMissingChain: true, } - }), - }, - wc: { - tvl: sumTokensExport({ - owners: [PWN_V1_3_SIMPLE_LOAN, PWN_BUNDLER_WORLD], fetchCoValentTokens: true, tokenConfig: { ignoreMissingChain: true, } - }), - }, - mantle: { tvl: () => ({}) }, -}; diff --git a/projects/pxswap/index.js b/projects/pxswap/index.js deleted file mode 100644 index f3db5efae14..00000000000 --- a/projects/pxswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const contract = "0x638B06F80FB28F109E65C9d5cC585aDf9A0c3f9f" -const usdcToken = ADDRESSES.telos.ETH - -module.exports = { - kava: { tvl: sumTokensExport({ owner: contract, tokens: [usdcToken]}) }, -} diff --git a/projects/pyeswap/index.js b/projects/pyeswap/index.js deleted file mode 100644 index 575fef9eaa7..00000000000 --- a/projects/pyeswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0xb664bdce35b5ee182e8832d4f3b615232e98a51e', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/pylon/index.js b/projects/pylon/index.js deleted file mode 100644 index feba20007d6..00000000000 --- a/projects/pylon/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - timetravel: false, - methodology: 'TVL counts the UST that has been deposted to the Protocol. Data is pulled from the Pylon API:"https://api.pylon.money/api/launchpad/v1/projects/mine".', - terra: { - tvl: () => ({}), - }, - deadFrom: '2022-05-26', - hallmarks:[ - [1651881600, "UST depeg"], - ] -} diff --git a/projects/pyswap/index.js b/projects/pyswap/index.js deleted file mode 100644 index f0198fb4393..00000000000 --- a/projects/pyswap/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const {getUniTVL} = require("../helper/unknownTokens"); - -const native_staking_contract_pool1 = "0xFFD687B05E7178647d4Bb7734e93748dF4A3341a"; -const native_staking_contract_pool2 = "0x659ea4563841C59Ec284679d35EDc5ed7025b7a9"; -const pys_staking_contract = "0x18E2fA8c010b56779285336D0920F1027f0bDBbb"; - -const assets = [ - "0x9b5902C14B56eF2aa2cC1A2A0731a8F270Ee82f0", //WBNB - ADDRESSES.null, // This is address of native token - "0x602aEe302B2703cD2BAC28e13192593228e0078C", // PYSWAP TOKEN -]; - -let owners = [native_staking_contract_pool1, native_staking_contract_pool2, pys_staking_contract] - -let TVL_STAKING = sumTokensExport({ owners, tokens: assets }) -let TVL_AMM_DEX = getUniTVL({factory: "0x1434575AbB43103cFb40fd8147FB1e0B2ec3e2A1", useDefaultCoreAssets: true,}) - -module.exports = { - op_bnb: { - tvl: TVL_AMM_DEX, - staking: TVL_STAKING, - }, -}; \ No newline at end of file diff --git a/projects/pyth/index.js b/projects/pyth/index.js deleted file mode 100644 index 5129fbb0c67..00000000000 --- a/projects/pyth/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection } = require("../helper/solana"); - -async function staking() { - const account = await getConnection().getAccountInfo(new PublicKey('6njqtZeuLbSFU7Yo72GxPcdwhLQWahEPx1iN9GD6DRgV')) - const locked = await account.data.readBigUint64LE(17+8) - - return { - "solana:HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3": locked.toString() - } -} - -module.exports={ - timetravel: false, - solana:{ - tvl:async()=>({}), - staking - } -} \ No newline at end of file diff --git a/projects/pythagorean/index.js b/projects/pythagorean/index.js deleted file mode 100644 index 1565b9771a7..00000000000 --- a/projects/pythagorean/index.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Buy or sell futures powered by Pythagorean bonding curves. - * - * @see https://pyth.ooo/ - * @see https://pyth.ooo/faq - */ - -const { fetchBaseAABalances, fetchOswapExchangeRates, fetchOswapAssets, summingBaseAABalancesToTvl } = require('../helper/chain/obyte') - -const BASE_AA = "A336I77COVXUCN3L2YOYVIZF7PKMFCAV"; -const STAKING_BASE_AA = "HPJQ6ZCB2T3JTIVAMDM5QESZWNJNJERO"; - -// TODO support time travel for the exchange rate, currently it always returns the latest rates -async function tvl(api) { - const timestamp = api.timestamp; - const [exchangeRates, assetMetadata] = await Promise.all([ - fetchOswapExchangeRates(), - fetchOswapAssets() - ]) - - const baseAASumBalances = await Promise.all([ - fetchBaseAABalances(timestamp, BASE_AA), - ]).then(baseAABalances => { - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) - }); - - const stakingBaseAASumBalances = await Promise.all([ - fetchBaseAABalances(timestamp, STAKING_BASE_AA), - ]).then(baseAABalances => { - return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0) - }); - - api.addUSDValue(baseAASumBalances + stakingBaseAASumBalances); -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: - "The TVL is the USD value of the assets locked into the autonomous agents that implement the Pythagorean protocol.", - obyte: { - tvl - }, -} diff --git a/projects/q-acc/abi.json b/projects/q-acc/abi.json deleted file mode 100644 index 39abf0b7154..00000000000 --- a/projects/q-acc/abi.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "getVirtualCollateralSupply": { - "inputs": [], - "name": "getVirtualCollateralSupply", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "stateMutability": "view", - "type": "function" - }, - "getVirtualIssuanceSupply": { - "inputs": [], - "name": "getVirtualIssuanceSupply", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }], - "stateMutability": "view", - "type": "function" - } -} \ No newline at end of file diff --git a/projects/q-acc/config.js b/projects/q-acc/config.js deleted file mode 100644 index 5ceba19ae72..00000000000 --- a/projects/q-acc/config.js +++ /dev/null @@ -1,66 +0,0 @@ -const config = { - PACK: { - symbol: "PACK", - token: "0x4fb9b94bd8bbbd684a7d5a5544bc7a07188e5617", - bondingCurve: "0x8675459b17d1d93ec0c41c783bda16ff9b9b589b" - }, - CTZN: { - symbol: "CTZN", - token: "0x0d9b0790e97e3426c161580df4ee853e4a7c4607", - bondingCurve: "0xE1B18FE51289627C22944aC0A8A22b605Fcc21DA" - }, - PRSM: { - symbol: "PRSM", - token: "0x0b7a46e1af45e1eaadeed34b55b6fc00a85c7c68", - bondingCurve: "0xaBAb922f048aa22515c561c5c71f3ABD05F0B938" - }, - X23: { - symbol: "X23", - token: "0xc530b75465ce3c6286e718110a7b2e2b64bdc860", - bondingCurve: "0x4b2502ad254855AC83990998695c6fD16c2CeeD9" - }, - BEAST: { - symbol: "BEAST", - token: "0x4191f84f66e0b7cc10370ff47a0e2168e35b9bdf", - bondingCurve: "0x5B34dE32e40842e2e1D0135f0F52C467Ad8b2baB" - }, - GRNDT: { - symbol: "GRNDT", - token: "0xfafb870f1918827fe57ca4b891124606eaa7e6bd", - bondingCurve: "0x9d2720d1Bb13F8F5aC51fc32c0a9742A3DD101Be" - }, - AKA: { - symbol: "AKA", - token: "0xa3dd6163b5742b0d8cb7d79cb5dfe3f81f8f8fc4", - bondingCurve: "0x9776b3A8E233e1Bc1ad24985BaEcFDDd57D47c56" - }, - LOCK: { - symbol: "LOCK", - token: "0x69ce536f95a84e1ef51ed0132c514c7ce012e49b", - bondingCurve: "0xc72666dd3d30e150738ccf41aa474ccd0af4d4f9" - }, - TDM: { - symbol: "TDM", - token: "0x878b6bf76f7ba67d0c4da616eac1933f9b133c1c", - bondingCurve: "0x2b3f6dced3c06a31af2b8fb5da8b48496198f3e2" - }, - H2DAO: { - symbol: "H2DAO", - token: "0x6fc91fbe42f72941486c98d11724b14fb8d18b36", - bondingCurve: "0x1c98d67bb5326c645bfc20ae94f35b6269859e03" - }, - ACHAD: { - symbol: "ACHAD", - token: "0xa1a78ac9884adc9d04d59b2b743f1ec709618e55", - bondingCurve: "0x1d4fa4979BE3638D46D61e125f992dB703bC3173" - }, - MELS: { - symbol: "MELS", - token: "0x5fdaf637aed59b2e6d384d9e84d8ac5cf03c6697", - bondingCurve: "0xa2a1efb352166d6B38e2F1C24A913390a1367435" - } -} - -module.exports = { - config -} \ No newline at end of file diff --git a/projects/q-acc/index.js b/projects/q-acc/index.js deleted file mode 100644 index de0bce309ad..00000000000 --- a/projects/q-acc/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json') -const { config } = require('./config') - -async function tvl(api) { - const collateralSupplies = await api.multiCall({ - abi: abi.getVirtualCollateralSupply, - calls: Object.values(config).map(c => ({ - target: c.bondingCurve, - })), - }) - - const sumOfCollateralSupplies = collateralSupplies.reduce((acc, curr) => acc + BigInt(curr), BigInt(0)) - - return api.addTokens([ADDRESSES.polygon.WMATIC], [sumOfCollateralSupplies]) -} - -module.exports = { - methodology: "TVL is counted as the value of WPOL tokens locked in the bonding curves", - timetravel: false, - misrepresentedTokens: true, - polygon: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/q-borrowing/index.js b/projects/q-borrowing/index.js deleted file mode 100644 index 7d1ed743afd..00000000000 --- a/projects/q-borrowing/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const BORROWING_CONTRACT = "0xb9c29d9A24B233C53020891D47F82043da615Dcc" - -module.exports = { - q: { tvl: sumTokensExport({ owner: BORROWING_CONTRACT, tokens: Object.values(ADDRESSES.q)}) }, -}; diff --git a/projects/q-infinity/index.js b/projects/q-infinity/index.js deleted file mode 100644 index 147ca102d43..00000000000 --- a/projects/q-infinity/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokensExport } = require('../helper/unwrapLPs') - -const WUSDC_VAULT = "0x41AA6785b4ffE18A79bba796793E828059Ff342a" -const WETH_VAULT = "0x367750af92a2C427Cc94E1c562DEa9753a42c27e" -const ELK_VAULT = "0x1EAf38375CA45685D3FCa0c53e9fa6b02bb9B0D5" - -const owners = [ - WUSDC_VAULT, - WETH_VAULT, - ELK_VAULT, -] -const tokens = [ - ADDRESSES.q.WUSDC, - ADDRESSES.q.WETH, - ADDRESSES.q.ELK, -] - -module.exports = { - q: { tvl: sumTokensExport({ owners, tokens }) }, -}; \ No newline at end of file diff --git a/projects/qao/index.js b/projects/qao/index.js deleted file mode 100644 index a60c2ae417a..00000000000 --- a/projects/qao/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const sdk = require('@defillama/sdk'); -const qaostakeContract = "0x053b759c880b69075a52e4374efa08e6b5196ad0" -const qao = "0x3402e15b3ea0f1aec2679c4be4c6d051cef93953" - -async function stakingTvl(timestamp, block) { -let balances = {}; - -const qaoTVL = await sdk.api.erc20.balanceOf({ - target: qao, - owner: qaostakeContract, - block: block -}); - - -balances[qao] = qaoTVL.output; - - -return balances; -} - -module.exports = { -ethereum:{ - staking: stakingTvl, - tvl: () => ({}) -}, -} -module.exports.deadFrom = '2023-04-09' \ No newline at end of file diff --git a/projects/qearn/index.js b/projects/qearn/index.js deleted file mode 100644 index 9847135e3fd..00000000000 --- a/projects/qearn/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const RPC_ENDPOINT = "https://rpc.qubic.org" -const QearnAddress = "JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVKHO"; - -module.exports = { - timetravel: false, - qubic: { - tvl: async () => { - const res = await fetch(`${RPC_ENDPOINT}/v1/balances/${QearnAddress}`).then(r => r.json()); - return {'coingecko:qubic-network': res.balance.balance } - } - }, - }; \ No newline at end of file diff --git a/projects/qian/abi.json b/projects/qian/abi.json deleted file mode 100644 index 0163b194160..00000000000 --- a/projects/qian/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "asset": { - "balances": "function balances(address token) view returns (uint256)" - }, - "balance": { - "gsupply": "uint256:gsupply" - }, - "env": { - "tokens": "address[]:tokens" - } -} diff --git a/projects/qian/index.js b/projects/qian/index.js deleted file mode 100644 index 4567ff4bf0d..00000000000 --- a/projects/qian/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const abi = require("./abi"); - -const AssetAddress = "0x6a2469944d3F0AA54531DfA6dCB4350F4A150b67"; -const EnvAddress = "0x3719C6ff935623A7B125952df5D849ef53B08cAc"; - -async function tvl(api) { - const tokens= await api.call({ abi: abi.env.tokens, target: EnvAddress}) - return api.sumTokens({ owner: AssetAddress, tokens }) -} - -module.exports = { - start: '2017-12-18', // 2020/10/21 6:34:47 (+UTC) - ethereum: { tvl }, -}; diff --git a/projects/qidao/index.js b/projects/qidao/index.js deleted file mode 100644 index 54fb14c59e4..00000000000 --- a/projects/qidao/index.js +++ /dev/null @@ -1,242 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: - "TVL counts the AAVE tokens that are deposited within the Yield Instruments section of QiDao, the Vault token deposits of CRV, LINK, AAVE and WETH, as well as USDC deposited to mint MAI.", -}; - -const config = { - optimism: { - vaults: [ - "0x062016cd29fabb26c52bab646878987fc9b0bc55", - "0xb9c8f0d3254007ee4b98970b94544e473cd610ec", - "0xbf1aea8670d2528e08334083616dd9c5f3b087ae", - "0xF9CE2522027bD40D3b1aEe4abe969831FE3BeAf5", - "0xAB91c51b55F7Dd7B34F2FD7217506fD5b632B2B9", - "0xB89c1b3d9f335B9d8Bb16016F3d60160AE71041f", - "0x86f78d3cbca0636817ad9e27a44996c738ec4932", - "0xa478E708A27853848C6Bc979668fe6225FEe46Fa", - "0x7198ff382b5798dab7dc72a23c1fec9dc091893b", - "0xc88c8ada95d92c149377aa660837460775dcc6d9" - ] - }, - arbitrum: { - vaults: [ - "0xC76a3cBefE490Ae4450B2fCC2c38666aA99f7aa0", - "0xB237f4264938f0903F5EC120BB1Aa4beE3562FfF", - "0xd371281896f2F5f7A2C65F49d23A2B6ecfd594f3", - "0xe47ca047Cb7E6A9AdE9405Ca68077d63424F34eC", - "0xa864956ff961ce62c266a8563b46577d3573372e", - "0x950eceee9e7d7366a24fc9d2ed4c0c37d17a0fa9" - ] - }, - fantom: { - vaults: [ - "0x1066b8FC999c1eE94241344818486D5f944331A0", - "0x7efB260662a6FA95c1CE1092c53Ca23733202798", - "0x682E473FcA490B0adFA7EfE94083C1E63f28F034", - "0xD939c268C49c442F037E968F045ba02f499562D4", - "0xE5996a2cB60eA57F03bf332b5ADC517035d8d094", - "0x267bDD1C19C932CE03c7A62BBe5b95375F9160A6", - "0xd6488d586E8Fcd53220e4804D767F19F5C846086", - "0xdB09908b82499CAdb9E6108444D5042f81569bD9", - "0x3609A304c6A41d87E895b9c1fd18c02ba989Ba90", - "0xC1c7eF18ABC94013F6c58C6CdF9e829A48075b4e", - "0x5563Cc1ee23c4b17C861418cFF16641D46E12436", - "0x8e5e4D08485673770Ab372c05f95081BE0636Fa2", - "0xBf0ff8ac03f3E0DD7d8faA9b571ebA999a854146", - // "0x051b82448a521bC32Ac7007a7A76F9dEC80F6BA2", - // "0xD60FBaFc954Bfbd594c7723C980003c196bDF02F", - // "0xCB99178C671761482097F32595cb79fb28a49Fd8", - "0x7aE52477783c4E3e5c1476Bbb29A8D029c920676", - "0x571F42886C31f9b769ad243e81D06D0D144BE7B4", - "0x6d6029557a06961aCC5F81e1ffF5A474C54e32Fd", - "0x3f6cf10e85e9c0630856599fab8d8bfcd9c0e7d4", - "0x75D4aB6843593C111Eeb02Ff07055009c836A1EF", - // "0xf18F4847a5Db889B966788dcbDbcBfA72f22E5A6", - // "0xedF25e618E4946B05df1E33845993FfEBb427A0F", - "0xF34e271312e41Bbd7c451B76Af2AF8339D6f16ED", - "0x7aE52477783c4E3e5c1476Bbb29A8D029c920676", - "0x571F42886C31f9b769ad243e81D06D0D144BE7B4", - "0x6d6029557a06961aCC5F81e1ffF5A474C54e32Fd", - ], - }, - avax: { - vaults: [ - "0xfA19c1d104F4AEfb8d5564f02B3AdCa1b515da58", - // "0xC3537ef04Ad744174A4A4a91AfAC4Baf0CF80cB3", - // "0xF8AC186555cbd5104c0e8C5BacF8bB779a3869f5", - // "0xEa88eB237baE0AE26f4500146c251d25F409FA32", - // "0x8Edc3fB6Fcdd5773216331f74AfDb6a2a2E16dc9", - //"0x13a7fe3ab741ea6301db8b164290be711f546a73", - "0x73a755378788a4542a780002a75a7bae7f558730", - "0xa9122dacf3fccf1aae6b8ddd1f75b6267e5cbbb8", - "0x1f8f7a1d38e41eaf0ed916def29bdd13f2a3f11a", - ] - }, - moonbeam: { - vaults: [ - "0x3A82F4da24F93a32dc3C2A28cFA9D6E63EC28531", - ] - }, - moonriver: { - vaults: [ - // "0x97D811A7eb99Ef4Cb027ad59800cE27E68Ee1109", - //"0x4a0474E3262d4DB3306Cea4F207B5d66eC8E0AA9", - ] - }, - harmony: { - vaults: [ - //"0x12FcB286D664F37981a42cbAce92eAf28d1dA94f", - //"0x46469f995A5CB60708200C25EaD3cF1667Ed36d6", - ] - }, - xdai: { - vaults: [ - "0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b", - "0x014a177e9642d1b4e970418f894985dc1b85657f", - ] - }, - base: { - vaults: [ - "0x7333fd58d8d73a8e5fc1a16c8037ada4f580fa2b", - "0x8d6cebd76f18e1558d4db88138e2defb3909fad6", - "0x654a31ba7d714cfcab19b17d0066171c1a292349", - "0x20658fDaBD4C79F1B3666E5bcCAeF78b5059B109" - ], - psm: ["0x83D41737d086033A9c3acE2F1Ad9350d7d91cf02",], - }, - linea: { - vaults: [ - "0x8ab01c5ee3422099156ab151eecb83c095626599", - "0x7f9dd991e8fd0cbb52cb8eb35dd35c474a9a7a70" - ], - psm: ["0x2f5cedaff534cc816ed6f551eb2b73d6f1daa440"], - }, - ethereum: { - vaults: [ - "0x60d133c666919B54a3254E0d3F14332cB783B733", - "0xEcbd32bD581e241739be1763DFE7a8fFcC844ae1", - "0x98eb27E5F24FB83b7D129D789665b08C258b4cCF", - "0x8C45969aD19D297c9B85763e90D0344C6E2ac9d1", - "0xcc61Ee649A95F2E2f0830838681f839BDb7CB823", - "0x82E90EB7034C1DF646bD06aFb9E67281AAb5ed28", - "0xCA3EB45FB186Ed4e75B9B22A514fF1d4abAdD123", - "0x4ce4C542D96Ce1872fEA4fa3fbB2E7aE31862Bad", - "0x5773e8953cf60f495eb3c2db45dd753b5c4b7473", - "0x954ac12c339c60eafbb32213b15af3f7c7a0dec2" - ] - }, - bsc: { - vaults: [ - "0x014a177e9642d1b4e970418f894985dc1b85657f", - "0xa56f9a54880afbc30cf29bb66d2d9adcdcaeadd6", - "0x7333fd58d8d73a8e5fc1a16c8037ada4f580fa2b", - ] - }, - metis: { - vaults: [ - "0x10dcbee8afa39a847707e16aea5eb34c6b01aba9", - "0xc09c73f7b32573d178138e76c0e286ba21085c20", - "0xb89c1b3d9f335b9d8bb16016f3d60160ae71041f", - "0x5A03716bd1f338D7849f5c9581AD5015ce0020B0", - "0x19Cb63CCbfAC2f28B1fd79923f6aDfC096e6EBB4" - ] - }, - polygon: { - vaults: [ - "0x3fd939B017b31eaADF9ae50C7fF7Fa5c0661d47C", - "0x61167073E31b1DAd85a3E531211c7B8F1E5cAE72", - "0x87ee36f780ae843A78D5735867bc1c13792b7b11", - "0x98B5F32dd9670191568b661a3e847Ed764943875", - "0x37131aEDd3da288467B6EBe9A77C523A700E6Ca1", - "0x701A1824e5574B0b6b1c8dA808B184a7AB7A2867", - "0x649Aa6E6b6194250C077DF4fB37c23EE6c098513", - "0xF086dEdf6a89e7B16145b03a6CB0C0a9979F1433", - "0xff2c44fb819757225a176e825255a01b3b8bb051", - "0x178f1c95c85fe7221c7a6a3d6f12b7da3253eeae", - "0x1dcc1f864a4bd0b8f4ad33594b758b68e9fa872c", - "0x305f113ff78255d4f8524c8f50c7300b91b10f6a", - "0x7d36999a69f2B99BF3FB98866cBbE47aF43696C8", - "0x506533B9C16eE2472A6BF37cc320aE45a0a24F11", - "0x7CbF49E4214C7200AF986bc4aACF7bc79dd9C19a", - "0xaa19d0e397c964a35e6e80262c692dbfc9c23451", - "0x11826d20b6a16a22450978642404da95b4640123", - "0x34fa22892256216a659d4f635354250b4d771458", - "0x7d75F83f0aBe2Ece0b9Daf41CCeDdF38Cb66146b", - "0x57cbf36788113237d64e46f25a88855c3dff1691", - "0x1f0aa72b980d65518e88841ba1da075bd43fa933", - "0x9A05b116b56304F5f4B3F1D5DA4641bFfFfae6Ab", - "0xF1104493eC315aF2cb52f0c19605443334928D38", - "0xb1f28350539b06d5a35d016908eef0424bd13c4b", - "0x3bcbAC61456c9C9582132D1493A00E318EA9C122", - "0x169d47043cc0c94c39fa327941c56cb0344dc508", - "0xb5b31e6a13ae856bc30b3c76b16edad9f432b54f" - ], - psm: ["0xdEffF862C76C6f9c7164B44f860fAe64C2A92aF5"], - toa: [ - [nullAddress, '0xa3fa99a148fa48d14ed51d610c367c61876997f1'], - // vaults - [ - "0x1a13f4ca1d028320a707d99520abfefca3998b7f", - "0x22965e296d9a0Cd0E917d6D70EF2573009F8a1bB", - ], //amUSDC - [ - "0x27f8d03b3a2196956ed754badc28d73be8830a6e", - "0xE6C23289Ba5A9F0Ef31b8EB36241D5c800889b7b", - ], //amDAI - [ - "0x28424507fefb6f7f8e9d3860f56504e4e5f5f390", - "0x0470CD31C8FcC42671465880BA81D631F0B76C1D", - ], //amWETH - [ - "0x60d55f02a771d515e077c9c2403a1ef324885cec", - "0xB3911259f435b28EC072E4Ff6fF5A2C604fea0Fb", - ], //amUSDT - [ - "0x8df3aad3a84da6b69a4da8aec3ea40d9091b2ac4", - "0x7068Ea5255cb05931EFa8026Bd04b18F3DeB8b0B", - ], //amMATIC - [ - "0x1d2a0e5ec8e5bbdca5cb219e649b565d8e5c3360", - "0xeA4040B21cb68afb94889cB60834b13427CFc4EB", - ], //amAAVE - [ - "0x5c2ed810328349100a66b82b78a1791b101c9d61", - "0xBa6273A78a23169e01317bd0f6338547F869E8Df", - ], // amWBTC - // anchor - [ - ADDRESSES.polygon.USDC, - "0x947D711C25220d8301C087b25BA111FE8Cbf6672", - ], //USDC - [ - ADDRESSES.polygon.USDT, - "0xa4742A65f24291AA421497221AaF64c70b098d98", - ], //USDT - [ - ADDRESSES.polygon.DAI, - "0x6062E92599a77E62e0cC9749261eb2eaC3aBD44F", - ], //DAI - ] - } -} - -Object.keys(config).forEach(chain => { - const { vaults, toa = [], psm } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:collateral', calls: vaults, }) - const tokensAndOwners = tokens.map((t, i) => ([t, vaults[i]])) - tokensAndOwners.push(...toa) - if (psm && psm.length) { - const underlyings = await api.multiCall({ abi: 'address:underlying', calls: psm }) - const bals = await api.multiCall({ abi: 'uint256:totalStableLiquidity', calls: psm }) - api.add(underlyings, bals) - } - - return sumTokens2({ tokensAndOwners, api }) - } - } -}) diff --git a/projects/qilin/index.js b/projects/qilin/index.js deleted file mode 100644 index 2135110787b..00000000000 --- a/projects/qilin/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const contract = "0x57A0B07dcD834cAbB844BEc8E7903A3B2faE6245" -const usdcToken = ADDRESSES.ethereum.USDC - -module.exports = { - ethereum: { tvl: sumTokensExport({ owner: contract, tokens: [usdcToken]}) }, -} \ No newline at end of file diff --git a/projects/qomswap/index.js b/projects/qomswap/index.js deleted file mode 100644 index f45ad0177c5..00000000000 --- a/projects/qomswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('qom', '0x475f361993D6FAcBF32fB82B66be0fB40f3d974C') - diff --git a/projects/qrolli/index.js b/projects/qrolli/index.js deleted file mode 100644 index 757c873d0b3..00000000000 --- a/projects/qrolli/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json") -const BitsHub = "0x64af2e5b1f6c0194adc5a0f17bc566a6d30f21e1" - -async function tvl(api) { - const pools = await api.fetchList({ lengthAbi: 'getBitsLength', itemAbi: 'bitsClones', target: BitsHub }) - return api.sumTokens({ owners: pools, tokens: [ADDRESSES.null] }) -} - -module.exports = { - polygon: { tvl }, -} \ No newline at end of file diff --git a/projects/quadrat/index.js b/projects/quadrat/index.js deleted file mode 100644 index 17d32f18814..00000000000 --- a/projects/quadrat/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -module.exports = { - doublecounted: true, - methodology: 'Counts the tokens locked in Strategy Vaults in Uniswap v3 Pools.', - start: '2022-10-31', // Mon Oct 31 2022 06:30:43 GMT+0000 -}; - -const config = { - ethereum: { - factory: '0x823db50c56d8a994af0ceb3f7dc421852cf6fbff', - fromBlock: 15891335, - }, - optimism: { - factory: '0x3ae3b506a39ffc1aa3964f6dc888891ea10671ed', - fromBlock: 33415677, - }, - polygon: { - factory: '0x1a639e9249d26c70edf0b7410a8495d9b72140ff', - fromBlock: 35028277, - }, - arbitrum: { - factory: '0xb8d498f025c45a8a7a63277cb1cca36c2599bbd7', - fromBlock: 34510988, - }, - bsc: { - factory: '0x28e9f86690449059734e079eaaa66d8913263bed', - fromBlock: 26497758, - }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - - const logs = await getLogs({ - api, - target: factory, - topics: ['0x9c5d829b9b23efc461f9aeef91979ec04bb903feb3bee4f26d22114abfc7335b'], - fromBlock, - onlyArgs: true, - eventAbi: 'event PoolCreated (address indexed uniPool, address indexed manager, address indexed pool)' - }) - - const calls = logs.map(i => i.pool) - - const [token0, token1, bals] = await Promise.all([ - api.multiCall({ abi: 'address:token0', calls }), - api.multiCall({ abi: 'address:token1', calls }), - api.multiCall({ abi: 'function getUnderlyingBalances() view returns (uint256 amount0, uint256 amount1)', calls, permitFailure: true }), - ]) - - bals.forEach((val, i) => { - if (!val) return; - const { amount0, amount1 } = val - api.add(token0[i], amount0) - api.add(token1[i], amount1) - }) - } - } -}) \ No newline at end of file diff --git a/projects/quantoswap/index.js b/projects/quantoswap/index.js deleted file mode 100644 index e8083dc5291..00000000000 --- a/projects/quantoswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { stakings } = require("../helper/staking"); - -const factory = "0xe185e5335d68c2a18564b4b43bdf4ed86337ee70"; -const QNS = "0x37A2f8701856a78DE92DBe35dF2200c355EAe090" -const pools = [ - "0xc7e40abf6a1f6a6f79b64d86ca1960816271caca", -] - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(pools, QNS,), - tvl: getUniTVL({ useDefaultCoreAssets: true, factory}) - }, -}; \ No newline at end of file diff --git a/projects/quantum-unit/index.js b/projects/quantum-unit/index.js deleted file mode 100644 index a21f109aef4..00000000000 --- a/projects/quantum-unit/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json') -const QUANTUM_UNIT_CONTRACT = "0x81889aec6fdc400ec9786516c3adc14d59fc361e"; - -module.exports = { - methodology: 'count all contract balance', - bsc: { - tvl: sumTokensExport({ owner: QUANTUM_UNIT_CONTRACT, tokens: [ADDRESSES.null] }), - } -}; diff --git a/projects/quantumx-network/api.js b/projects/quantumx-network/api.js deleted file mode 100644 index 95326af5291..00000000000 --- a/projects/quantumx-network/api.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./index') \ No newline at end of file diff --git a/projects/quantumx-network/index.js b/projects/quantumx-network/index.js deleted file mode 100644 index 141486fe6f8..00000000000 --- a/projects/quantumx-network/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - timetravel: false, - elrond: { - tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgql6dxenaameqn2uyyru3nmmpf7e95zmlxu7zskzpdcw', }) - } -} \ No newline at end of file diff --git a/projects/quarry/index.js b/projects/quarry/index.js deleted file mode 100644 index 3d932879db2..00000000000 --- a/projects/quarry/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { Program, } = require("@project-serum/anchor"); -const sdk = require('@defillama/sdk') - -const { getProvider, } = require("../helper/solana"); - -async function tvl() { - const balances = {} - - const quarryId = new PublicKey('QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB') - const provider = getProvider(); - const QuarryMineIDL = await Program.fetchIdl(quarryId, provider) - const quarryProgram = new Program(QuarryMineIDL, quarryId, provider) - const allQuaries = await quarryProgram.account.quarry.all() - allQuaries.forEach(({account: i}) => { - const amount = +i.totalTokensDeposited - if (amount < 1e6) return; - sdk.util.sumSingleBalance(balances,i.tokenMintKey.toString(),amount, 'solana') - }) - return balances -} - -module.exports = { - doublecounted: true, - timetravel: false, - methodology: - "TVL counts deposits made to Quarry Protocol. CoinGecko is used to find the price of tokens in USD.", - solana: { tvl }, - hallmarks: [ - [1665521360, "Mango Markets Hack"], - ], -}; diff --git a/projects/quartzdefi/index.js b/projects/quartzdefi/index.js deleted file mode 100644 index 2823f30fca2..00000000000 --- a/projects/quartzdefi/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const { pool2 } = require("../helper/pool2"); -const { staking } = require("../helper/staking"); -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); - -// BSC ADDRESSES -const ashareTokenAddress = "0xFa4b16b0f63F5A6D0651592620D585D308F749A4"; -const ames = "0xb9e05b4c168b56f73940980ae6ef366354357009"; -const BSCLPTokens = [ - "0x6f78a0d31adc7c9fb848850f9d2a40da5858ad03", - "0x39846550Ef3Cb8d06E3CFF52845dF42F71Ac3851", - "0x61503f74189074e8e793cc0827eae37798c2b8f7" -] -const aShareBoardroomAddress = "0xC183b26Ad8C660AFa7B388067Fd18c1Fb28f1bB4"; -const ashareRewardPool = "0x1da194F8baf85175519D92322a06b46A2638A530"; - -// HARMONY ADDRESSES -const quartz = "0xb9E05B4C168B56F73940980aE6EF366354357009"; -const qshare = "0xFa4b16b0f63F5A6D0651592620D585D308F749A4"; -const xquartz = "0xCa1dd590C3ceBa9F57E05540B91AB3F0Ed08580a"; -const singleQuartzFarm = "0x1da194F8baf85175519D92322a06b46A2638A530"; - -const qshareRewardPool = "0x1da194f8baf85175519d92322a06b46a2638a530"; -const qshareboardroom = "0xe1e48d3476027af9dc92542b3a60f2d45a36e082"; - -const HarmonyLPTokens = [ - "0x3736b5b6f2033433ea974e121ce19cc6d0e10dc9", - "0x157e2e205b8d307501f1aad1c5c96c562e6f07c5", - "0x90a48cb3a724ef6f8e6240f4788559f6370b6925" -] - -async function harmonyPool2(timestamp, block, chainBlocks) { - let balances = {}; - const chain = "harmony"; - block = chainBlocks.harmony; - const balance = (await sdk.api.abi.multiCall({ - calls: HarmonyLPTokens.map(p => ({ - target: p, - params: qshareRewardPool - })), - abi: "erc20:balanceOf", - block, - chain - })).output; - - let lpPositions = []; - - balance.forEach(p => { - lpPositions.push({ - token: p.input.target, - balance: p.output - }); - }); - - await unwrapUniswapLPs(balances, lpPositions, block, chain, addr=>{ - return `harmony:${addr}`; - }); - - return balances; -} - - -module.exports = { - misrepresentedTokens: true, - harmony: { - tvl: async () => ({}), - staking: staking([qshareboardroom, singleQuartzFarm, xquartz], [quartz]), - pool2: harmonyPool2 - }, - bsc: { - tvl: async () => ({}), - staking: staking(aShareBoardroomAddress, ashareTokenAddress), - pool2: pool2(ashareRewardPool, BSCLPTokens) - } -} \ No newline at end of file diff --git a/projects/quasar-swap/index.js b/projects/quasar-swap/index.js deleted file mode 100644 index 881d4a937d7..00000000000 --- a/projects/quasar-swap/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -//const { masterChefExports } = require('../helper/masterchef'); -// const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getUniTVL, sumUnknownTokens } = require("../helper/unknownTokens"); -// const { mergeExports } = require("../helper/utils"); - -// // const masterchef = '0x693D075Db2F6c231e2f375c29EDd52F47027b45E' -const sntNova = "0x657a66332a65b535da6c5d67b8cd1d410c161a08"; -const qsrToken = "0x356c044B99e9378C1B28A1cAb2F95Cd65E877F33"; -// const qsrLP = "0xf8c1b66e95790467819bb25f852e37b59e47c16d" -const nUSD = ADDRESSES.nova.NUSD -const sntQsrFarm = "0x0e9768b0199e7b31852b4effb70031d860b812d6"; -// const sntNusdFarm = "0x050bc8fa6da93dff0d7629923e0972c0aecebb9e"; -const poolAuto = "0x71da5557c9D89a0b34Ef3A6FE0EcC750c93996e9"; -const poolManual = "0x693D075Db2F6c231e2f375c29EDd52F47027b45E"; -const dexFactory = "0x9FF350c22d2A1A9d2867E1afb44B83eF114DFD7b"; - -module.exports = { -/* nova: { - tvl: getUniTVL({ - factory: dexFactory, - useDefaultCoreAssets: true, - }), - staking: async (_, _b, { nova: block }) => - sumUnknownTokens({ - owners: [poolAuto, poolManual], - tokens: [qsrToken], - lps: [sntQsrFarm], - useDefaultCoreAssets: true, - chain: "nova", - block, - }), - }, */ - deadFrom: "2024-01-01", - nova: { - tvl: () => ({}), - staking: () => ({}), - } -} \ No newline at end of file diff --git a/projects/quasar/index.js b/projects/quasar/index.js deleted file mode 100644 index 9846b1be333..00000000000 --- a/projects/quasar/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { queryContract } = require('../helper/chain/cosmos') -const { getConfig } = require('../helper/cache') - -async function tvlOsmosis(api) { - const data = await getConfig('quasar-vaults', 'https://api.quasar.fi/vaults') - const vaults = data.filter(i => i.chainId === 'osmosis-1').map(i => i.address) - for (const vault of vaults) { - const total_assets = await queryContract({ chain: 'osmosis', contract: vault, data: { total_assets: {} }, }) - Object.values(total_assets).forEach(({ denom, amount }) => api.add(denom, amount)) - } - return api.getBalances() -} - -async function tvlEthereum(api) { - const data = await getConfig('quasar-vaults', 'https://api.quasar.fi/vaults') - const vaults = data.filter(i => i.chainId === 1).map(i => i.address) - const tvlRes = await api.multiCall({ abi: 'function underlyingTvl() view returns (address[] tokens, uint256[] bals)', calls: vaults }) - tvlRes.forEach(({ tokens, bals }) => { - api.add(tokens, bals) - }) -} - -module.exports = { - timetravel: false, - methodology: 'Total TVL on vaults', - osmosis: { - tvl: tvlOsmosis, - }, - ethereum: { - tvl: tvlEthereum - } -} diff --git a/projects/qubit/abi.json b/projects/qubit/abi.json deleted file mode 100644 index 3b62e39ea7e..00000000000 --- a/projects/qubit/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "allMarkets": "address[]:allMarkets", - "getCash": "uint256:getCash", - "underlying": "address:underlying", - "totalBorrow": "uint256:totalBorrow", - "totalValueLockedOf": "function totalValueLockedOf(address[] markets) view returns (uint256 totalSupplyInUSD)" -} \ No newline at end of file diff --git a/projects/qubit/index.js b/projects/qubit/index.js deleted file mode 100644 index 2a1f8e8807d..00000000000 --- a/projects/qubit/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const methodologies = require('../helper/methodologies'); -const { compoundExports2 } = require('../helper/compound'); - -const qoreComptroller = "0xf70314eb9c7fe7d88e6af5aa7f898b3a162dcd48"; - -const qTokensKlaytn = [ - "0xf6FB6Ce9dcc5Dac5BE99503B44630FfF1f24b1EC", // qKLAY - "0xE61688286f169A88189E6Fbe5478B5164723B14A", // qKUSDT - "0xb3e0030557CeC1CEf43062F71c2bE3b5f92f1B7b", // qKETH - "0x19e1e58d9EdFdDc35D11bEa53BCcf8Eb1425Bf0D", // qKWBTC - "0x0EaAAEB0623f6E263d020390e01d00a334EB531E", // QKDAI - "0xC1c3a6b591a493c01B1330ee744d2aF01F70EA32", // QKSP - "0x99dac5dF97eB189Cd244c5bfC8984f916f0eb4B0", // qWEMIX - "0x3dB032090A06e3dEaC905543C0AcC92B8f827a70", // qKQBT -]; - -async function tvlKlaytn(api) { - const tokens = await api.multiCall({ abi: 'address:underlying', calls: qTokensKlaytn }) - return api.sumTokens({ tokensAndOwners2: [tokens, qTokensKlaytn], }) -} - -module.exports = { - // hallmarks: [ - // [1643241600, "tokenAddress hack"] - // ], - methodology: methodologies.lendingMarket, - bsc: { - tvl: compoundExports2({ comptroller: qoreComptroller, abis: { getAllMarkets: 'address[]:allMarkets' } }).tvl, - //borrowed: tvl(true), // hacked - }, - klaytn: { - tvl: tvlKlaytn, - }, -}; diff --git a/projects/quenta/index.js b/projects/quenta/index.js deleted file mode 100644 index cda0b9e9dd7..00000000000 --- a/projects/quenta/index.js +++ /dev/null @@ -1,11 +0,0 @@ - -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const ioUSDC = '0x3b2bf2b523f54c4e454f08aa286d03115aff326c' -const ioUSDT = '0x6fbcdc1169b5130c59e72e51ed68a84841c98cd1' -const USDQ = '0xEE43369197F78CFDF0D8fc48D296964C50AC7B57' - -module.exports = { - iotex: { tvl: sumTokensExport({ owner: USDQ, tokens: [ioUSDC, ioUSDT], })}, - methodology: `The calculation method for Quenta's TVL is the total value of all stablecoins (ioUSDC, ioUSDT) staked in the USDQ contract.`, -}; diff --git a/projects/quicksilver/index.js b/projects/quicksilver/index.js deleted file mode 100644 index 6abfdf1e42e..00000000000 --- a/projects/quicksilver/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { get } = require("../helper/http"); -const { endPoints } = require("../helper/chain/cosmos"); - -const coinGeckoIds = { - adydx: "dydx-chain", - uatom: "cosmos", - uosmo: "osmosis", - usomm: "sommelier", - uregen: "regen", - ujuno: "juno-network", - ustars: "stargaze", - usaga: "saga-2", - ubld: "agoric", - utia: "celestia", - aarch: "archway", - ppica: "picasso", - uflix: "omniflix-network", - inj: "injective", -}; - -async function tvl() { - const balances = {}; - const { zones } = await get(endPoints.quicksilver + "/quicksilver/interchainstaking/v1/zones"); - const { supply } = await get(endPoints.quicksilver + "/cosmos/bank/v1beta1/supply"); - - zones.forEach((zone) => { - const balance = supply.find((coin) => coin.denom === zone.local_denom); - if (!balance) return - const amount = balance.amount / Math.pow(10, zone.decimals) - const id = coinGeckoIds[zone.base_denom] - sdk.util.sumSingleBalance(balances, id, amount * zone.redemption_rate); - }); - - return balances; -} - -module.exports = { - timetravel: false, - methodology: "Sum of all the tokens that are liquid staked on Quicksilver", - quicksilver: { tvl }, -}; diff --git a/projects/quickswap-hydra/index.js b/projects/quickswap-hydra/index.js deleted file mode 100644 index 7cb1af7a744..00000000000 --- a/projects/quickswap-hydra/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const config = { - polygon_zkevm: '0x14c8FEA10fdc2d1357410f473e2CAa035a872517', - manta: '0x443Cf165B72e4b4331C0101A10553269972Ed4B8' -} - -Object.keys(config).forEach(chain => { - const target = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens= await api.call({ abi: 'address[]:getAssetList', target}) - return api.sumTokens({ owner: target, tokens }) - } - } -}) \ No newline at end of file diff --git a/projects/quickswap-lending/index.js b/projects/quickswap-lending/index.js deleted file mode 100644 index 6b5d894e267..00000000000 --- a/projects/quickswap-lending/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { compoundExports } = require('../helper/compound') -const { mergeExports } = require('../helper/utils') - -//pool name Open Market -const unitroller1 = "0x9BE35bc002235e96deC9d3Af374037aAf62BDeF7" - -//pool name IB Market -const unitroller2 = "0x627742AaFe82EB5129DD33D237FF318eF5F76CBC" - -//pool name IB Stable Market -const unitroller3 = "0x1eD65DbBE52553A02b4bb4bF70aCD99e29af09f8" - -const cExports = [unitroller1, unitroller2, unitroller3, ].map(i => ({ - polygon: compoundExports(i) -})) - -module.exports = mergeExports([{ - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", -}, ...cExports]) -module.exports.polygon.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/quickswap-perps/index.js b/projects/quickswap-perps/index.js deleted file mode 100644 index 6f862694ffb..00000000000 --- a/projects/quickswap-perps/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - polygon_zkevm:{ - tvl: gmxExports({ vault: '0x99b31498b0a1dae01fc3433e3cb60f095340935c', }) - }, -}; diff --git a/projects/quickswap-v3/index.js b/projects/quickswap-v3/index.js deleted file mode 100644 index 3b5d01cbccb..00000000000 --- a/projects/quickswap-v3/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const { cachedGraphQuery } = require('../helper/cache') -module.exports = uniV3Export({ - polygon: { factory: '0x411b0facc3489691f28ad58c47006af5e3ab3a28', fromBlock: 32610688, isAlgebra: true, permitFailure: true, }, - dogechain: { factory: '0xd2480162aa7f02ead7bf4c127465446150d58452', fromBlock: 837574, isAlgebra: true, }, - polygon_zkevm: { factory: '0x4B9f4d2435Ef65559567e5DbFC1BbB37abC43B57', fromBlock: 300, isAlgebra: true, }, - manta: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 357492, }, - astrzk: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 93668, }, - imx: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 356091, }, - xlayer: { factory: '0xd2480162aa7f02ead7bf4c127465446150d58452', fromBlock: 277686, isAlgebra: true, }, - soneium: { factory: '0x8Ff309F68F6Caf77a78E9C20d2Af7Ed4bE2D7093', fromBlock: 1681559, isAlgebra: true, }, -}) - -async function tvl(api) { - const { pools } = await cachedGraphQuery('quickswap-v3/' + api.chain, 'https://graph-node.dogechain.dog/subgraphs/name/quickswap/dogechain-info', `{ - pools(first:1000) { - token0 { - id - } - token1 { - id - } - id - } - }`) - const ownerTokens = pools.map(p => [[p.token0.id, p.token1.id], p.id]) - return api.sumTokens({ ownerTokens, }) -} - -module.exports.dogechain.tvl = tvl \ No newline at end of file diff --git a/projects/quickswap-v4/index.js b/projects/quickswap-v4/index.js deleted file mode 100644 index 6d6b87e7a09..00000000000 --- a/projects/quickswap-v4/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - base: { - factory: '0xC5396866754799B9720125B104AE01d935Ab9C7b', - isAlgebra: true, - fromBlock: 30736835, - }, - soneium: { - factory: '0x8Ff309F68F6Caf77a78E9C20d2Af7Ed4bE2D7093', - isAlgebra: true, - fromBlock: 1681559, - }, - xlayer: { - factory: '0x0284d1a8336E08AE0D3e30e7B0689Fa5B68E6310', - isAlgebra: true, - fromBlock: 3073933, - }, - somnia: { - factory: '0x0ccff3D02A3a200263eC4e0Fdb5E60a56721B8Ae', - isAlgebra: true, - fromBlock: 40341077, - }, -}) \ No newline at end of file diff --git a/projects/quickswap/index.js b/projects/quickswap/index.js deleted file mode 100644 index 66d5f15e8dc..00000000000 --- a/projects/quickswap/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens'); -const { staking } = require('../helper/staking'); -const { toUSDTBalances } = require("../helper/balances"); -const { gql, default: request } = require("graphql-request"); - -const COMBINED_Q = gql` - query get_tvl($block: Int!) { - meta: _meta { block { number } } - uniswapFactories(block: { number: $block }) { - totalLiquidityUSD - } - } -` - -const tvl = async (api) => { - const endpoint = sdk.graph.modifyEndpoint("FUWdkXWpi8JyhAnhKL5pZcVshpxuaUQG8JHMDqNCxjPd") - const block = (await api.getBlock()) - 500 - const { meta, uniswapFactories } = await request(endpoint, COMBINED_Q, { block }) - - const head = meta.block.number - if (head < block) throw new Error(`Subgraph behind: head=${head}, need >= ${block}`) - - const usdTvl = Number(uniswapFactories?.[0]?.totalLiquidityUSD ?? 0) - if (usdTvl < 200_000_000) throw new Error(`Suspicious TVL: ${usdTvl} < 200,000,000 (likely bad indexer/stale data)`) - return toUSDTBalances(usdTvl) -} - -module.exports = { - misrepresentedTokens: true, - polygon:{ - staking: staking("0x958d208Cdf087843e9AD98d23823d32E17d723A1", ADDRESSES.polygon.QUICK), - tvl - }, - base: { tvl: getUniTVL({factory: '0xEC6540261aaaE13F236A032d454dc9287E52e56A'}) }, - // dogechain: { - // tvl: getUniTVL({factory: '0xC3550497E591Ac6ed7a7E03ffC711CfB7412E57F'}) - // }, - hallmarks:[ - [1611917218, "Aavegotchi LM"], - [1619095618, "QUICK staking - Dragon's Liar launch"], - [1619611200, "DeFi season on Polygon PoS begun"], - [1623851400, "Iron Finance V1 collapse"], - [1651668418, "QUICK split by 1:1000"], - [1652481840, "QuickSwap GoDaddy Domain Hijack"] - ] -} \ No newline at end of file diff --git a/projects/quill-fi/index.js b/projects/quill-fi/index.js deleted file mode 100644 index ab029613f7a..00000000000 --- a/projects/quill-fi/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getLiquityV2Tvl } = require('../helper/liquity') -const { mergeExports } = require('../helper/utils') - -const config = { - scroll: [ - '0xcc4f29f9d1b03c8e77fc0057a120e2c370d6863d', - '0x358d90036e70542ae24b3813c0efecc1f8811442' - ] -} - -const premerged = [] -Object.keys(config).map(chain => config[chain].map( - provider => premerged.push({ - [chain]: { - tvl: getLiquityV2Tvl(provider) - } - }) -)) - -module.exports = mergeExports(premerged) \ No newline at end of file diff --git a/projects/quillswap/index.js b/projects/quillswap/index.js deleted file mode 100644 index df73f2b7f4c..00000000000 --- a/projects/quillswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('scroll', '0xab8aEfe85faD683A6bDE16EeD04C3420C713324b') -module.exports.hallmarks = [ - [1698144638,"Liquidity Removed"], - ] \ No newline at end of file diff --git a/projects/quipuswap-stableswap/index.js b/projects/quipuswap-stableswap/index.js deleted file mode 100644 index 80f9a9ab9bc..00000000000 --- a/projects/quipuswap-stableswap/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') -const { PromisePool } = require('@supercharge/promise-pool') -const sdk = require('@defillama/sdk') - -const stableSwap = async (api) => { - const data = await getStorage('KT1UPiYB4HrLFcHQ5tkjahGnDM55E8iEbNAx') - const pools = await getBigMapById(data.storage.pool_id_to_address); - return sumTokens2({ owners: Object.values(pools), includeTezos: false, }) -} - -const sswapAndYupuna = async (api) => { - const data = await getStorage('KT1Q9gw5mZSLPGkoCaWc5a8FKLGDiTiULc6R') - const pools = await getBigMapById(data.storage.pool_id_to_address); - const { errors } = await PromisePool.withConcurrency(10) - .for(Object.values(pools).slice(0, 2)) - .process(async pool => { - const { storage: data } = await getStorage(pool) - const tokenInfos = await getBigMapById(data.pools); - const tokenDatas = await getBigMapById(data.tokens); - Object.keys(tokenInfos).forEach(key => { - const { tokens_info } = tokenInfos[key] - const tokenData = tokenDatas[key] - Object.keys(tokens_info).forEach(key => { - const token = getToken(tokenData[key]) - const { reserves } = tokens_info[key] - api.add(token, reserves) - }) - }) - }) - - if (errors && errors.length) - throw errors[0] - return api.getBalances() -} - -function getToken(object) { - if (object.fa12) return object.fa12 - if (object.fa2) { - const { token_id, token_address } = object.fa2 - if (token_id && token_id !== '0') return `${token_address}-${token_id}` - return token_address - } - throw new Error("Unknown token type" + JSON.stringify(object, null, 2)) -} - -module.exports = { - timetravel: false, - tezos: { - tvl: sdk.util.sumChainTvls([stableSwap, sswapAndYupuna]), - } -} - diff --git a/projects/quipuswap-v2/index.js b/projects/quipuswap-v2/index.js deleted file mode 100644 index 106bf9b34e1..00000000000 --- a/projects/quipuswap-v2/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') - - -const factory = 'KT1J8Hr3BP8bpbfmgGpRPoC9nAMSYtStZG43' -module.exports = { - timetravel: false, - tezos: { - tvl: async () => { - const data = await getStorage(factory) - const pools = await getBigMapById(data.storage.pairs); - const owners = Object.values(pools).map(i => i.bucket).filter(i => i) - owners.push(factory) - return sumTokens2({ owners, includeTezos: true, }) - }, - } -} diff --git a/projects/quipuswap-v3/index.js b/projects/quipuswap-v3/index.js deleted file mode 100644 index 7f3cdf16152..00000000000 --- a/projects/quipuswap-v3/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') - -module.exports = { - timetravel: false, - tezos: { - tvl: async () => { - const data = await getStorage('KT1JNNMMGyNNy36Zo6pcgRTMLUZyqRrttMZ4') - const pools = await getBigMapById(data.pools); - return sumTokens2({ owners: Object.values(pools), includeTezos: false, }) - }, - } -} diff --git a/projects/quipuswap/index.js b/projects/quipuswap/index.js deleted file mode 100644 index 0df3c77b668..00000000000 --- a/projects/quipuswap/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2, getBigMapById } = require('../helper/chain/tezos'); - -// ✅ All confirmed Quipuswap legacy factories with live token_to_exchange maps -const factories = [ - { name: 'FA1.2 Factory Old 1', mapId: 940 }, - { name: 'FA1.2 Factory Old 2', mapId: 1453 }, - { name: 'FA1.2 Factory', mapId: 3999 }, - { name: 'FA2 Factory Old 1', mapId: 1466 }, - { name: 'FA2 Factory Old 2', mapId: 962 }, - { name: 'FA2 Factory Old 3', mapId: 1823 }, - { name: 'FA2 Factory', mapId: 4013 }, -]; - -module.exports = { - timetravel: false, - misrepresentedTokens: false, - start: 1617148800, // March 2021 - methodology: - "TVL includes all legacy Quipuswap FA1.2 and FA2 pools using token_to_exchange big_map entries from 7 verified factories deployed between March–June 2021.", - tezos: { - tvl: async () => { - let owners = []; - - for (const { mapId } of factories) { - const entries = await getBigMapById(mapId); - const poolAddresses = Object.values(entries); - owners.push(...poolAddresses); - } - - return sumTokens2({ owners, includeTezos: true }); - }, - }, -}; diff --git a/projects/quokkalend/index.js b/projects/quokkalend/index.js deleted file mode 100644 index ad91158a7e5..00000000000 --- a/projects/quokkalend/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -module.exports = { - "morph": aaveExports("morph", "0x8C28AAA6c07c6c4e3E68B2e426C847614A9c0Dea", undefined, ["0x367ab6F3e883617f8385Eb5eA9d6e41A6e5c0D35"]) -}; diff --git a/projects/quoll/abi.json b/projects/quoll/abi.json deleted file mode 100644 index 9acdaaa3f7e..00000000000 --- a/projects/quoll/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "userInfo": "function userInfo(uint256, address) view returns (uint128 amount, uint128 factor, uint128 rewardDebt, uint128 pendingWom)", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint96 allocPoint, address rewarder, uint256 sumOfFactors, uint104 accWomPerShare, uint104 accWomPerFactorShare, uint40 lastRewardTimestamp)", - "pool": "address:pool", - "lockedSupply": "uint256:lockedSupply", - "underlyingToken": "address:underlyingToken", - "quotePotentialWithdraw": "function quotePotentialWithdraw(address token, uint256 liquidity) view returns (uint256 amount, uint256 fee)" -} \ No newline at end of file diff --git a/projects/quoll/index.js b/projects/quoll/index.js deleted file mode 100644 index 2e8555f44ad..00000000000 --- a/projects/quoll/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require("../helper/staking"); -const abi = require('./abi.json'); -const voterProxy = '0xe96c48C5FddC0DC1Df5Cf21d68A3D8b3aba68046'; -const masterWombat = '0x489833311676B566f888119c29bd997Dc6C95830'; -const quoLocker = "0xe76eEA460d02663275962a99529700E132EF526c"; -const quo = '0x08b450e4a48C04CDF6DB2bD4cf24057f7B9563fF'; -const wom = '0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1'; -const veWom = '0x3DA62816dD31c56D9CdF22C6771ddb892cB5b0Cc'; -const chain = 'bsc'; - -async function voterProxyBalances(api) { - const poolLength = await api.call({ abi: abi.poolLength, target: masterWombat, }) - - const masterWombatPoolInfos = await api.multiCall({ abi: abi.poolInfo, target: masterWombat, calls: Array.from(Array(+poolLength).keys()), }); - const masterWombatVoterProxyBalances = await api.multiCall({ abi: abi.userInfo, target: masterWombat, calls: Array.from(Array(+poolLength).keys()).map((pid) => ({ params: [pid, voterProxy] })), }); - - const lpTokenTargets = masterWombatPoolInfos.map((pool) => pool.lpToken); - const lpPools = await api.multiCall({ abi: abi.pool, calls: lpTokenTargets, }); - const underlyingTokens = await api.multiCall({ abi: abi.underlyingToken, calls: lpTokenTargets, }); - - const underlyingAmounts = await api.multiCall({ - abi: abi.quotePotentialWithdraw, - calls: lpPools.map((pool, index) => { - return { - target: pool, - params: [underlyingTokens[index], masterWombatVoterProxyBalances[index].amount], - }; - }), - permitFailure: true, - }); - return underlyingAmounts - .map((a, i) => { - if (+masterWombatVoterProxyBalances[i].amount === 0) return; - if (underlyingTokens[i].toLowerCase() === ADDRESSES.bsc.ankrBNB.toLowerCase()) return; // disable aBNBc (ankr bnb) - if (a) - api.add(underlyingTokens[i], a.amount) - }) -} - -async function tvl(api) { - api.add("0xf4c8e32eadec4bfe97e0f595add0f4450a863a11", await api.call({ abi: 'function balanceOfNFT(uint256) returns (uint256)', target: "0xfbbf371c9b0b994eebfcc977cef603f7f31c070d", params: [16274], })) - api.add(wom, await api.call({ abi: 'erc20:balanceOf', target: veWom, params: [voterProxy], })) - await voterProxyBalances(api) -} - -module.exports = { - methodology: - "TVL of Quoll Finance consists of Wombat LP tokens staked in MasterWombat, WOM tokens locked in veWOM, and Quoll tokens locked in QUO Vote Lock contract.", - bsc: { - tvl, - staking: stakings( - [quoLocker, "0xc634c0A24BFF88c015Ff32145CE0F8d578B02F60"], - quo, - chain - ), - }, -}; diff --git a/projects/qx/index.js b/projects/qx/index.js deleted file mode 100644 index 6d1317c0adc..00000000000 --- a/projects/qx/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const RPC_ENDPOINT = "https://rpc.qubic.org" -const QearnAddress = "BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARMID"; - -module.exports = { - timetravel: false, - qubic: { - tvl: async () => { - const res = await fetch(`${RPC_ENDPOINT}/v1/balances/${QearnAddress}`).then(r => r.json()); - return {'coingecko:qubic-network': res.balance.balance } - } - }, - }; \ No newline at end of file diff --git a/projects/r3r/index.js b/projects/r3r/index.js deleted file mode 100644 index 557f459ec93..00000000000 --- a/projects/r3r/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const CONTRACTS = { - V1: "0xeDF3e2F4E4816b45c8f540c6Cee62DdA033d7950" -}; - -const WLD = ADDRESSES.wc.WLD; - -async function tvl(api) { - return sumTokens2({ - api, - tokensAndOwners: [ - [WLD, CONTRACTS.V1] - ], - useDefaultCoreAssets: true, - }); -} - -module.exports = { - methodology: - "TVL is calculated by sum of WLD tokens held on R3R contract.", - wc: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/ra/index.js b/projects/ra/index.js deleted file mode 100644 index 106e8ef074f..00000000000 --- a/projects/ra/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const sdk = require('@defillama/sdk') -const { uniV3Export } = require('../helper/uniswapV3') -const {getUniTVL} = require('../helper/unknownTokens') - -const concentraledLiquidity = uniV3Export({ - fraxtal: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 1352717, }, -}) - -module.exports = { - misrepresentedTokens: true, - fraxtal:{ - tvl: sdk.util.sumChainTvls([ - concentraledLiquidity.fraxtal.tvl, - getUniTVL({ factory: '0xaaa16c016bf556fcd620328f0759252e29b1ab57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), - ]) - }, -} \ No newline at end of file diff --git a/projects/rabbitfinance/index.js b/projects/rabbitfinance/index.js deleted file mode 100644 index df66bcf311d..00000000000 --- a/projects/rabbitfinance/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const rabbitStaking = "0x0586Cd1032FF9f882E29f9E8a6008d097F87D71b"; -const RS = "0xc25b7244e192d531495c400c64ea914a77e730a2"; - -const BANK_CONTRACT = "0xc18907269640D11E2A91D7204f33C5115Ce3419e"; - -const bscTvl = async (api) => { - - const poolsInfo = [ - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.ETH, - ADDRESSES.bsc.BTCB, - '0x95a1199eba84ac5f19546519e287d43d2f0e1b41', - '0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', - '0x9c65ab58d8d978db963e63f2bfb7121627e3a739', - '0x7083609fce4d1d8dc0c979aab8c869ea2c873402', - '0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63', - '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', - '0xbf5140a22578168fd562dccf235e5d43a02ce9b1', - '0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd', - '0x0d8ce2a99bb6e3b7db580ed848240e4a0f9ae153', - '0x4338665cbb7b2485a8855a139b75d5e34ab0db94', - ] - return api.sumTokens({ owner: BANK_CONTRACT, tokens: poolsInfo}) -}; - -module.exports = { - bsc: { - staking: staking(rabbitStaking, RS), - tvl: bscTvl, - }, - deadFrom: "2023-20-20", - methodology: "Counts TVL on all the Farms through Bank Contract; and the Treasury portion on the Rabbit DAO product", -}; diff --git a/projects/rabbitswap-v3/index.js b/projects/rabbitswap-v3/index.js deleted file mode 100644 index 33614fd56ba..00000000000 --- a/projects/rabbitswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - tomochain: { factory: '0x1F09b50e8cbAed8A157fEe28716d13AfE36A77E7', fromBlock: 86787787, isAlgebra: false }, -}) diff --git a/projects/rabbitx/index.js b/projects/rabbitx/index.js deleted file mode 100644 index f8da86bcef9..00000000000 --- a/projects/rabbitx/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: ['0xFc7f884DE22a59c0009C91733196b012Aecb8F41', '0x3b8F6D6970a24A58b52374C539297ae02A3c4Ae4', '0x7fAb440A0251dA67B316d2c0431E3Ccf4520Cd42','0x1171651A1917C7DE22cF2047D1D7Cb9d97039811',], tokens: [ADDRESSES.ethereum.USDT]}), - staking: staking('0x0c378FB17E87B180256a87e3f671cd83Bf3236DB', '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e'), - }, - blast: { - tvl: sumTokensExport({ owners: ['0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e', '0x212f3a03b0e67f2d0afc7bca138707cf9fd6a0e6'], tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]}), - staking: staking('0x67dBA61709D78806395acDBa3EF9Df686aF5dc24', '0x236bb48fcF61ce996B2C8C196a9258c176100c7d'), - }, - sonic: { - tvl: sumTokensExport({ owners: ['0xaC63e55a9D6B331987072f98beDf216F51370E28'], tokens: [ADDRESSES.sonic.USDC_e]}), - }, - base: { - tvl: sumTokensExport({ owners: ['0x07607d79Bc28669bbF7ec6cfC7Ae68AA6964C762'], tokens: [ADDRESSES.base.USDC]}), - }, - arbitrum: { - tvl: sumTokensExport({ owners: ['0x2E89ECF3945fcBdA70770f59F3833aC7D08b83c0'], tokens: [ADDRESSES.arbitrum.USDC_CIRCLE]}), - }, -} diff --git a/projects/raccoonswap/index.js b/projects/raccoonswap/index.js deleted file mode 100644 index 96c9f1f54da..00000000000 --- a/projects/raccoonswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - parex: '0x933A81E5d5aF4A182C1CE7FD0F96599Dd469e66A' -}) \ No newline at end of file diff --git a/projects/racoon/index.js b/projects/racoon/index.js deleted file mode 100644 index 969e3c014f6..00000000000 --- a/projects/racoon/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - base: { tvl: () => ({}) }, - deadFrom: 1693180800, - hallmarks: [ - [1693180800, "Rug Pull"] - ] -} \ No newline at end of file diff --git a/projects/radao/index.js b/projects/radao/index.js deleted file mode 100644 index 775f61b5b21..00000000000 --- a/projects/radao/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0x652A6F3459B276887bf2Fe9fb0FF810c9B24e1E3"; -const BUSD = ADDRESSES.bsc.BUSD; -const RaStaking = "0xf45aE86eD6C7d7A6b6C4640e04FEc228641D4C64"; -const RA = "0xcc238200cFfdA7A5E2810086c26d5334e64F1155"; - -const RA_BUSD_POOL = "0xE8C6539663973E892C21652be80cdeE9a62e67BC"; -module.exports = ohmTvl(treasuryAddress, [ - [BUSD, false], - [RA_BUSD_POOL, true], -], "bsc", RaStaking, RA, undefined, undefined, false) diff --git a/projects/radial/index.js b/projects/radial/index.js deleted file mode 100644 index f3d6c0ce01e..00000000000 --- a/projects/radial/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { - standardPoolInfoAbi, -} = require("../helper/masterchef"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const masterChef = "0x6f536B36d02F362CfF4278190f922582d59E7e08"; -const stakingToken = "0xf04d7f53933becbf51ddf1f637fe7ecaf3d4ff94"; - -async function tvl(api) { - const info = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: standardPoolInfoAbi, target: masterChef }) - return sumTokens2({ api, owner: masterChef, tokens: info.map(i => i.lpToken), blacklistedTokens: [stakingToken] }) -} - -module.exports = { - fantom: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/radiant-v2/index.js b/projects/radiant-v2/index.js deleted file mode 100644 index 92d7e7b0a62..00000000000 --- a/projects/radiant-v2/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { aaveExports, methodology, aaveV2Export, } = require("../helper/aave"); -const { mergeExports } = require('../helper/utils'); - -const coreMarkets = { - methodology, - arbitrum: { - ...aaveExports(undefined, undefined, undefined, ['0xDd109cb6F2B2aEeBcE01727a31d99E3149aa7e41']), - // balancer pool is not unwrapped properly, so we use staking and rely on price api instead - pool2: staking("0x76ba3eC5f5adBf1C58c91e86502232317EeA72dE", "0x32df62dc3aed2cd6224193052ce665dc18165841"), - }, - bsc: { - ...aaveExports(undefined, '0x1e8323a513e099322aa435d172f1e7836fc620a5'), - // balancer pool is not unwrapped properly, so we use staking and rely on price api instead - pool2: sumTokensExport({ owner: '0x4fd9f7c5ca0829a656561486bada018505dfcb5e', tokens: ['0x346575fc7f07e6994d76199e41d13dc1575322e1'], useDefaultCoreAssets: true, }) - }, - ethereum: { - ...aaveExports(undefined, '0xe969066F2cCcE3145f62f669F151c6D566068BA2'), - // balancer pool is not unwrapped properly, so we use staking and rely on price api instead - pool2: staking("0x28e395a54a64284dba39652921cd99924f4e3797", "0xcF7b51ce5755513d4bE016b0e28D6EDEffa1d52a") - }, - base: { - ...aaveExports(undefined, '0x3eAF348Cf1fEC09C0f8d4f52AD3B8D894206b724'), - // balancer pool is not unwrapped properly, so we use staking and rely on price api instead - pool2: staking("0xD87F8a52a91680c993ece968B281bf92505A3741", "0x8a76639fe8e390ed16ea88f87beb46d6a5328254") - }, -}; - -const rizMarketsConfig = { - arbitrum: [ - '0x3fEc9583827431F622A4b188b6c57CfFE8655b8e', - '0x32F9460386A842E43E3e09fA92Bb77412Aabf42B', - '0xf3007F6d241EbF00140b94D92849B5ACf0D36133', - '0x6EF47f768aeAe173712Fe6a662666B1DBB08c66F', - '0x0C19836CcD6eAcb9E21693e1f27bde10218b6701', - '0x6B712099ab3Eb192F11E4964b35De8BAA7b15299', - '0x6B392CeBb1C7f0D93D8CF99a25A21C118b347a16', - '0x16910EC43fe08190aD228910B58656243c675822', - ], - bsc: [ - '0x8E4660b30d09C94Ea77795727c55d69799a9Abd1', - '0x486a97Dd8341C7590238b583580C78DC9151B8a6', - '0xc4a09Dd3DcC7D95e0bD525eff7f2968514dE23b2', - ], - base: [ - '0x260000459E0D1C46ADE027e552ADc911E0742b50', - '0x17042A220b138b203f67fDF62fA7aDD8cB16ccAa', - '0xD111c7DA1eBDf4D2fF2d234A61a806b03187CEC9', - '0x520411c27a950B731e0D4D5350E0CAEa51b1426F', - ] -} -const rizMarketExports = {} - -Object.keys(rizMarketsConfig).forEach(chain => { - const pools = rizMarketsConfig[chain] - rizMarketExports[chain] = { - tvl: async (api) => { - for (const pool of pools) { - await aaveV2Export(pool).tvl(api) - } - return api.getBalances() - }, - borrowed: async (api) => { - for (const pool of pools) { - await aaveV2Export(pool).borrowed(api) - } - return api.getBalances() - } - } -}) - -module.exports = mergeExports([rizMarketExports, coreMarkets]) - -module.exports.hallmarks = [ - // [1704178500, "flash loan exploit"], - // ['2024-10-16', 'Multisig was compromised'], -] \ No newline at end of file diff --git a/projects/radiant/index.js b/projects/radiant/index.js deleted file mode 100644 index 9307503d2bd..00000000000 --- a/projects/radiant/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { aaveExports, methodology } = require("../helper/aave"); - -const stakingContract = "0xc2054A8C33bfce28De8aF4aF548C48915c455c13"; -const RADIANT = "0x0C4681e6C0235179ec3D4F4fc4DF3d14FDD96017"; - -const stakingContractPool2 = "0xc963ef7d977ECb0Ab71d835C4cb1Bf737f28d010"; -const RADIANT_WETH_sushiLP = "0x24704aFF49645D32655A76Df6d407E02d146dAfC"; - -module.exports = { - methodology, - arbitrum: { - ...aaveExports('arbitrum', '0x7BB843f889e3a0B307299c3B65e089bFfe9c0bE0'), - staking: staking(stakingContract, RADIANT), - pool2: pool2(stakingContractPool2, RADIANT_WETH_sushiLP), - }, -}; diff --git a/projects/radiate-protocol/index.js b/projects/radiate-protocol/index.js deleted file mode 100644 index 0e470128df0..00000000000 --- a/projects/radiate-protocol/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const vault = '0xC6dC7749781F7Ba1e9424704B2904f2F94D3eb63' - const dlp = await api.call({ abi: 'address:dlp', target: vault}) - const masterchef = await api.call({ abi: 'address:mfd', target: vault}) - const { total }= await api.call({ abi:"function lockedBalances(address user) view returns (uint256 total, uint256 unlockable, uint256 locked, uint256 lockedMultiplier, tuple(uint256 amount, uint256 unlockTime, uint256, uint256)[] lockData)", target: masterchef, params: vault }) - api.add(dlp, total) - return sumTokens2({ owner: vault, tokens: [dlp], api}) -} - -module.exports = { - doublecounted: true, - arbitrum: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/radioshack/index.js b/projects/radioshack/index.js deleted file mode 100644 index dac6298d8be..00000000000 --- a/projects/radioshack/index.js +++ /dev/null @@ -1,101 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getUniTVL } = require('../helper/unknownTokens') - -const chainConfig = { - ethereum: { - factory: '0x91fAe1bc94A9793708fbc66aDcb59087C46dEe10', - radio: '0x7a5d3A9Dcd33cb8D527f7b5F96EB4Fef43d55636', - shack: '0x5f018e73C185aB23647c82bD039e762813877f0e', - stakingContracts: ['0x3E747B459981d06F70bE99f6aeDbb4E8f26D0066', '0x37c5888e3f8ce7c98022a1640d931563598edc28'], - blacklist: [ - '0x00C2999c8B2AdF4ABC835cc63209533973718eB1', // STATE - incorrectly priced by gecko - '0x57b59f981730c6257df57cf6f0d98283749a9eeb', // BUILD - inflating tvl - ] - }, - polygon: { - factory: '0xB581D0A3b7Ea5cDc029260e989f768Ae167Ef39B', - radio: ADDRESSES.polygon.RADIO, - shack: '0x6E65Ae5572DF196FAe40Be2545Ebc2A9A24eAcE9', - stakingContracts: ['0x1D72b58d2b73942451b1D0DFE2B6ef2c5a52a301', '0x01d97Df7dc98E97da0c14ffB27Adf00fda0245DD', '0x9E8C85c40001a7264a1a1B11999F8f7b0503D60a'], - blacklist: [ - '0xe94845ac6782a2e71c407abe4d5201445c26a62b', // BUILD - inflating tvl - ] - }, - bsc: { - factory: '0x98957ab49b8bc9f7ddbCfD8BcC83728085ecb238', - radio: '0x30807D3b851A31d62415B8bb7Af7dCa59390434a', - shack: '0xe79a1163a95734ccFBd006cBAaba954f3e846BeB', - stakingContracts: ['0xACc89554Fb28A94e5578d8A1B04E88Aa7788D261', '0x68b761d63e488c1d7c5f282c9b7d9a9791c17d3a'], - blacklist: [ - '0x83b27de2fca046fa63a11c7ce7743de33ec58822', // BUILD - inflating tvl - ] - }, - avax: { - factory: '0xa0fbfda09b8815dd42ddc70e4f9fe794257cd9b6', - radio: '0x02Bfd11499847003De5f0F5AA081C43854d48815', - shack: '0x9AD274e20a153451775Ff29D546949a254C4a1bc', - stakingContracts: ['0x1a55aBd871a8A5aA973980Ac5f4e7b9E732532C0', '0x37c5888e3f8CE7C98022a1640D931563598EDc28'], - blacklist: [ - '0x5f018e73c185ab23647c82bd039e762813877f0e', // BUILD - inflating tvl - ] - }, - fantom: { - factory: '0x5eF0153590D4a762F129dCf3c59186D91365e4e1', - radio: '0xf899e3909B4492859d44260E1de41A9E663e70F5', - shack: '0x462Fa81050f0fF732D59df121BFd9b8Bab072018', - blacklist: [ - '0xa6097a4dbef3eb44c50bad6286a5ed2bc4418aa2', // BUILD - inflating tvl - ] - }, - cronos: { - factory: '0x5eF0153590D4a762F129dCf3c59186D91365e4e1', - radio: '0xf899e3909B4492859d44260E1de41A9E663e70F5', - shack: '0x671D2E0E1a9c8E117A071bFC5763aF3fBe9bDF0b', - stakingContracts: ['0x68797130D8E63745761C524C33121fdD7290cB72'], - blacklist: [ - '0x6467df17771ab26d1825bf0891b3c421d92ebc1d', // BUILD - inflating tvl - ] - }, - optimism: { - factory: '0x5eF0153590D4a762F129dCf3c59186D91365e4e1', - radio: '0xf899e3909B4492859d44260E1de41A9E663e70F5', - shack: '0x66e8617d1Df7ab523a316a6c01D16Aa5beD93681', - stakingContracts: ['0x68797130D8E63745761C524C33121fdD7290cB72'], - blacklist: [ - '0xe4de4b87345815c71aa843ea4841bcdc682637bb', // BUILD - inflating tvl - ] - }, - dogechain: { - factory: '0x6865bc167016EC79C89b03fce536f0c4BAE0EEda', - radio: '0x4e2a57A8ffE65F794e9A32637Bc67b502fFc84C6', - shack: '0x57B963fBB8e4Bfb6d9047ac6d5ed183FBe6E7397', - stakingContracts: ['0x55a5334d1a402383C5a8C622301ea00cc8Cd1681'], - }, -} - -module.exports = Object.keys(chainConfig).reduce((agg, chain) => { - const { - factory, stakingContracts, radio, shack, blacklist, - } = chainConfig[chain] - - async function staking(ts, ethBlock, chainBlocks) { - const block = chainBlocks[chain] - const tokens = [radio] - if (shack) tokens.push(shack) - const balances = {} - - if (!stakingContracts || !stakingContracts.length) return balances - return sumTokens2({ chain, block, owners: stakingContracts, tokens, }) - } - - agg[chain] = { tvl: getUniTVL({ - chain, factory, - useDefaultCoreAssets: true, - blacklist, - }), staking } - - return agg -}, {}) - -module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/radlock/index.js b/projects/radlock/index.js deleted file mode 100644 index 582eddf4ba3..00000000000 --- a/projects/radlock/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - const tokensLockedInXrdList = await get('https://api.radlock.io/token/locked?format=list&lpOnly=true') - return { - 'radix': tokensLockedInXrdList.reduce((acc, token) => acc + +token.xrd, 0) - } -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} diff --git a/projects/radpie/index.js b/projects/radpie/index.js deleted file mode 100644 index 185c956d581..00000000000 --- a/projects/radpie/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { - stakingContract: '0x18a192dFe0BE1E5E9AA424738FdAd800646283b2', - }, - bsc: { - stakingContract: '0xe05157aA8D14b8ED1d816D505b3D5DEEB83ca131', - } -} - -Object.keys(config).forEach(chain => { - const { stakingContract, DLP, LP } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const poolHelper = await api.call({ abi: 'address:assetLoopHelper', target: stakingContract }) - const mfd = await api.call({ abi: 'address:multiFeeDistributor', target: stakingContract }) - const LP = await api.call({ abi: 'address:rdntWethLp', target: stakingContract }) - const tokens = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: 'function poolTokenList(uint256) view returns (address)', target: stakingContract}) - const bals = await api.multiCall({ abi: 'function totalStaked(address) view returns (uint256)', calls:tokens, target: poolHelper }) - const lpBal = await api.call({ abi: 'function totalBalance(address) view returns (uint256)', target:mfd, params: stakingContract }) - - api.addTokens(tokens, bals) - api.add(LP, lpBal) - - await api.sumTokens({ owner: stakingContract, tokens: [LP]}) - return sumTokens2({ api, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/raft/index.js b/projects/raft/index.js deleted file mode 100644 index 668bd62b193..00000000000 --- a/projects/raft/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { staking } = require("../helper/staking.js"); - -const RAFT_BPT = "0xe91888a1D08E37598867d213a4ACB5692071BB3a"; -const VERAFT = "0x45D117011da1D49bA86aF6CEd94126488084186f"; -const RAFT_POSITION_MANAGER = "0x5f59b322eb3e16a0c78846195af1f588b77403fc"; -const INTEREST_RATE_POSITION_MANAGER_ADDRESS = '0x9AB6b21cDF116f611110b048987E58894786C244'; -const RAFT_PSM = "0xa03342feb2e1d4690b60ef556509ec3b76c97ee7"; -const WRAPPED_RETH = "0xb69e35fb4a157028b92f42655090b984609ae598"; -const CHAI = "0x06af07097c9eeb7fd685c692751d5c66db49c215"; -const SWETH = '0xf951E335afb289353dc249e82926178EaC7DEd78' - -async function tvl(api) { - const rEthBalanceV1 = await api.call({ target: WRAPPED_RETH, abi: "erc20:balanceOf", params: RAFT_POSITION_MANAGER, }); - const chaiBalance = await api.call({ target: CHAI, abi: "erc20:balanceOf", params: RAFT_PSM, }); - const potAddress = await api.call({ target: CHAI, abi: "address:pot", }); - const chaiRate = await api.call({ target: potAddress, abi: "uint256:chi", }); - const daiBalance = chaiBalance * chaiRate / 1e27; - - api.add(ADDRESSES.ethereum.DAI, daiBalance) - api.add(ADDRESSES.ethereum.RETH, rEthBalanceV1) - - return api.sumTokens({ ownerTokens: [ - [ - [ - ADDRESSES.ethereum.RETH, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.cbETH, - ADDRESSES.ethereum.WBTC, - SWETH, - ], - INTEREST_RATE_POSITION_MANAGER_ADDRESS, - ], - [[ADDRESSES.ethereum.WSTETH], RAFT_POSITION_MANAGER], - ]}) -} - -module.exports = { - ethereum: { - tvl, - staking: staking(VERAFT, RAFT_BPT) - }, -}; diff --git a/projects/raga-finance/index.js b/projects/raga-finance/index.js deleted file mode 100644 index e172b7a3199..00000000000 --- a/projects/raga-finance/index.js +++ /dev/null @@ -1,42 +0,0 @@ - -const sdk = require('@defillama/sdk'); - -const vaults = [ - { - vault: "0xd735DD1499C5e5F30633f6B25Cc170d3D15d90Ad", // WBERA_IBGT vault - lpToken: "0x564f011d557aad1ca09bfc956eb8a17c35d490e0", - }, - { - vault: "0x4EcDe8C0b9A0c30CDd78C35A245F4afEDEF43d65", // WBERA_LBGT vault - lpToken: "0x705Fc16BA5A1EB67051934F2Fb17EacaE660F6c7", - }, - { - vault: "0xa62bf96CbC8508cEd7056c12258a0e12cC113c7c", // HONEY_BYUSD vault - lpToken: "0xde04c469ad658163e2a5e860a03a86b52f6fa8c8", - }, -]; - - -const vaultAbi = "function totalAssets() view returns (uint256)"; - -async function tvl(api) { - const totalAssets = await api.multiCall({ - abi: vaultAbi, - calls: vaults.map(v => ({ target: v.vault })), - }); - - totalAssets.forEach((amount, i) => { - api.add(vaults[i].lpToken, amount); - }); -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - start: 1751923200, // July 1, 2025 (putted random here) - hallmarks: [[1751932800, "Launch of Raga Finance"]], - methodology: "TVL is calculated from LP tokens", - berachain: { - tvl, - }, -}; diff --git a/projects/ragetrade/index.js b/projects/ragetrade/index.js deleted file mode 100644 index fd1194988c4..00000000000 --- a/projects/ragetrade/index.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1670856656, "Launch GLP Vaults"] - ], - arbitrum: { - tvl: async (api) => { - const vaults = [ - '0x1d42783E7eeacae12EbC315D1D2D0E3C6230a068', // tricrypto - '0xf9305009fba7e381b3337b5fa157936d73c2cf36', // dnGmxSeniorVault - '0x8478ab5064ebac770ddce77e7d31d969205f041e', // dnGmxJuniorVault - ] - const bals = await api.multiCall({ - abi: 'int256:getVaultMarketValue', calls: vaults, - }) - - return { - tether: bals.reduce((a, i) => a + i / 1e6, 0), - } - } - } -} \ No newline at end of file diff --git a/projects/ragnarokdao/index.js b/projects/ragnarokdao/index.js deleted file mode 100644 index 9f9d0b63575..00000000000 --- a/projects/ragnarokdao/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasury = "0xfa9cCe3098C02F770DcB2D17Df9B8f5331bE86D0"; -const rgk = "0x46fccf447f74ec97a521615fce111118597071f7"; -const stakingContract = "0xeb6B44834E002ECDEAdF9E61448B21cCc33284ca"; -const mim = "0x130966628846bfd36ff31a822705796e8cb8c18d"; -const usdc = ADDRESSES.avax.USDC_e; -const rgkMimJLP = "0xE8419ecDA1C76c38800b21e7D43BDB6B02f51ACE"; -module.exports = { - ...ohmTvl( - treasury, - [ - [mim, false], - [usdc, false], - [rgkMimJLP, true], - ], - "avax", - stakingContract, - rgk - ), -}; diff --git a/projects/raidshift/index.js b/projects/raidshift/index.js deleted file mode 100644 index 36f2134a6ec..00000000000 --- a/projects/raidshift/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contracts = [ - // 'TC3TuowSyMxJSLaqiWJuCkZ2i3q7JCFR4x', - // 'TGxDz3kgbxwEAESNtfWk4JFXXEgZAoWqeG', - 'TVMuhpXdRvNjjFAWqZ5urvhrQQyFvc19SN', - 'TJmx4Zg4xMjCZR5Q3aoCyDmYY3r42xU2GZ', - 'TMiHbWfnzh8cFmxNptoDgBvhuFSe2eiDFQ', - 'TVR8KWCV21nAM6Epifzh73Y9wy8GFzKdBP', - 'TWxrUkHSSHwJoNtLPJimVmgKhmwVGvhwUZ', - 'TSbbCH6nss56q1D2NtSKquuNPYZ2ZDyKZg', - 'TPxT4UrAkbp4fK4CtjuMmvS9u85HjU7EYq', - 'TEEQvDKY9sFQ65xxwhSH4QBkLD2NtwoN4a', - 'TUHHCVD4MR7LXthbS2fBBw5bXARhBg4k5G', - 'TPfAqGJ83NbVcRcsMFx7GJ749t9VV6cZvp', -] - -async function tvl(api) { - const tokenAs = await api.multiCall({ calls: contracts, abi: 'address:tokenA', permitFailure: true }) - const tokenBs = await api.multiCall({ calls: contracts, abi: 'address:tokenB', permitFailure: true }) - const tokensAndOwners = [] - tokenAs.forEach((t, i) => tokensAndOwners.push([fixNullToken(t), contracts[i]])) - tokenBs.forEach((t, i) => tokensAndOwners.push([fixNullToken(t), contracts[i]])) - return sumTokens2({ api, tokensAndOwners, blacklistedTokens: ['TNEjtKFHWpz8bN2ZruLVY2NW2AD39uSUAs']}) - - - function fixNullToken(token) { - if (token === '0x') return nullAddress - return token - }} - -module.exports = { - tron: { - tvl, - }, -} diff --git a/projects/railgun/index.js b/projects/railgun/index.js deleted file mode 100644 index c93ceccec00..00000000000 --- a/projects/railgun/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const CONTRACTS = { - ethereum: { - STAKING: '0xee6a649aa3766bd117e12c161726b693a1b2ee20', - RAIL: '0xe76C6c83af64e4C60245D8C7dE953DF673a7A33D', - PROXY: '0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9', - }, - - bsc: { - //STAKING: '0x753f0F9BA003DDA95eb9284533Cf5B0F19e441dc', // remove to correct token market cap info - RAIL: '0x3F847b01d4d498a293e3197B186356039eCd737F', - PROXY: '0x590162bf4b50F6576a459B75309eE21D92178A10', - }, - - polygon: { - //STAKING: '0x9AC2bA4bf7FaCB0bbB33447e5fF8f8D63B71dDC1', // remove to correct token market cap info - RAIL: '0x92A9C92C215092720C731c96D4Ff508c831a714f', - PROXY: '0x19B620929f97b7b990801496c3b361CA5dEf8C71', - }, - - arbitrum: { - PROXY: '0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9', - }, -}; -const blacklistedTokens = [ - '0x2e14949ce0133ccfd4c0cbe707ba878015a7a40c', -] - -function getTVLFunc(contractAddress, chain) { - return async function (api) { - if (CONTRACTS[chain].RAIL) blacklistedTokens.push(CONTRACTS[chain].RAIL) - return sumTokens2({ owner: contractAddress, fetchCoValentTokens: true, blacklistedTokens, api }) - } -} - -function getChainTVL(chain) { - return { - staking: CONTRACTS[chain].STAKING ? staking(CONTRACTS[chain].STAKING, CONTRACTS[chain].RAIL) : undefined, - tvl: getTVLFunc(CONTRACTS[chain].PROXY, chain), - }; -} - -Object.keys(CONTRACTS).forEach(chain => { - module.exports[chain] = getChainTVL(chain) -}) diff --git a/projects/rain/bank-idl.js b/projects/rain/bank-idl.js deleted file mode 100644 index 56b2f8c9ce1..00000000000 --- a/projects/rain/bank-idl.js +++ /dev/null @@ -1,93 +0,0 @@ -module.exports = { - "address": "rain2M5b9GeFCk792swkwUu51ZihHJb3SUQ8uHxSRJf", - "metadata": {"name": "bank", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [ - {"name": "Bank", "discriminator": [142, 49, 166, 242, 50, 66, 97, 188]}, - ], - "events": [], - "errors": [], - "types": [ - { - "name": "Bank", - "type": { - "kind": "struct", - "fields": [ - {"name": "owner", "type": "pubkey"}, - {"name": "mint", "type": "pubkey"}, - {"name": "vault", "type": "pubkey"}, - {"name": "authority", "type": "pubkey"}, - {"name": "bank_type", "type": {"defined": {"name": "BankType"}}}, - {"name": "total_liquidity", "type": "u64"}, - {"name": "available_liquidity", "type": "u64"}, - {"name": "delegated_liquidity", "type": "u64"}, - {"name": "cooldown_liquidity", "type": "u64"}, - {"name": "cooldown_period", "type": "u64"}, - {"name": "delegators", "type": {"array": [{"defined": {"name": "Delegator"}}, 8]}}, - {"name": "created_at", "type": "u64"}, - {"name": "deposited_at", "type": "u64"}, - {"name": "withdrawn_at", "type": "u64"}, - {"name": "borrowed_at", "type": "u64"}, - {"name": "repaid_at", "type": "u64"}, - {"name": "frozen_until", "type": "u64"}, - {"name": "reserved", "type": {"array": ["u8", 512]}} - ] - } - }, - { - "name": "BankType", - "type": { - "kind": "enum", - "variants": [ - {"name": "Personal", "fields": [{"defined": {"name": "PersonalBank"}}]}, - {"name": "Shared", "fields": [{"defined": {"name": "SharedBank"}}]} - ] - } - }, - { - "name": "PersonalBank", - "type": { - "kind": "struct", - "fields": [ - {"name": "reserved", "type": {"array": ["u8", 32]}}, - {"name": "reserved1", "type": {"array": ["u8", 32]}}, - {"name": "reserved2", "type": {"array": ["u8", 16]}} - ] - } - }, - { - "name": "SharedBank", - "type": { - "kind": "struct", - "fields": [ - {"name": "lp_mint", "type": "pubkey"}, - {"name": "lp_rate", "type": "u128"}, - {"name": "lp_supply", "type": "u64"}, - {"name": "_padding1", "type": {"array": ["u8", 8]}}, - {"name": "lp_decimals", "type": "u8"}, - {"name": "_padding2", "type": {"array": ["u8", 15]}} - ] - } - }, - { - "name": "Delegator", - "type": { - "kind": "struct", - "fields": [{"name": "delegator_type", "type": {"defined": {"name": "DelegatorType"}}}, {"name": "delegated_amount", "type": "u64"}] - } - }, - {"name": "DelegatorType", "type": {"kind": "enum", "variants": [{"name": "Empty", "fields": [{"defined": {"name": "EmptyDelegator"}}]}]}}, - { - "name": "EmptyDelegator", - "type": { - "kind": "struct", - "fields": [ - {"name": "reserved", "type": {"array": ["u8", 32]}}, - {"name": "reserved1", "type": {"array": ["u8", 32]}}, - {"name": "reserved2", "type": {"array": ["u8", 32]}}, - {"name": "reserved3", "type": {"array": ["u8", 24]}} - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/rain/defi-idl.js b/projects/rain/defi-idl.js deleted file mode 100644 index 0e465936630..00000000000 --- a/projects/rain/defi-idl.js +++ /dev/null @@ -1,74 +0,0 @@ -module.exports = { - "address": "rDeFiHPjHZRLiz4iBzMw3zv6unZs4VwdU6qQcVd3NSK", - "metadata": { "name": "defi_lending", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor" }, - "instructions": [], - "accounts": [{ "name": "Loan", "discriminator": [20, 195, 70, 117, 165, 227, 182, 1] }], - "events": [], - "errors": [], - "types": [ - { - "name": "Loan", - "type": { - "kind": "struct", - "fields": [ - { "name": "kind", "type": { "defined": { "name": "LoanKind" } } }, - { "name": "status", "type": { "defined": { "name": "LoanStatus" } } }, - { "name": "is_custom", "type": "u8" }, - { "name": "_padding1", "type": { "array": ["u8", 6] } }, - { "name": "borrower", "type": "pubkey" }, - { "name": "bank", "type": "pubkey" }, - { "name": "pool", "type": "pubkey" }, - { "name": "collateral", "type": "pubkey" }, - { "name": "principal", "type": "pubkey" }, - { "name": "referrer", "type": "pubkey" }, - { "name": "interest", "type": "u64" }, - { "name": "borrowed_amount", "type": "u64" }, - { "name": "collateral_amount", "type": "u64" }, - { "name": "duration", "type": "u32" }, - { "name": "currency", "type": "u32" }, - { "name": "liquidation", "type": "u16" }, - { "name": "_padding2", "type": { "array": ["u8", 6] } }, - { "name": "created_at", "type": "u64" }, - { "name": "expired_at", "type": "u64" }, - { "name": "repaid_at", "type": "u64" }, - { "name": "liquidated_at", "type": "u64" }, - { "name": "sold_amount", "type": "u64" }, - { "name": "reserved", "type": { "array": ["u64", 9] } } - ] - } - }, - { - "name": "LoanKind", - "type": { - "kind": "enum", - "variants": [ - { "name": "Classic", "fields": [{ "defined": { "name": "ClassicLoan" } }] }, - { "name": "MarginSwap", "fields": [{ "defined": { "name": "MarginSwapLoan" } }] }, - { "name": "Request", "fields": [{ "defined": { "name": "RequestLoan" } }] }, - ] - } - }, - { "name": "ClassicLoan", "type": { "kind": "struct", "fields": [{ "name": "reserved", "type": { "array": ["u8", 64] } }] } }, - { - "name": "MarginSwapLoan", - "type": { - "kind": "struct", - "fields": [ - { "name": "down_payment", "type": "u64" }, - { "name": "reserved", "type": { "array": ["u8", 32] } }, - { "name": "reserved1", "type": { "array": ["u8", 24] } } - ] - } - }, - { - "name": "RequestLoan", - "type": { - "kind": "struct", - "fields": [ - {"name": "reserved", "type": {"array": ["u8", 64]}} - ] - } - }, - { "name": "LoanStatus", "type": { "kind": "enum", "variants": [{ "name": "Ongoing" }, { "name": "Repaid" }, { "name": "Liquidated" }, { "name": "Sold" }] } } - ] -} \ No newline at end of file diff --git a/projects/rain/index.js b/projects/rain/index.js deleted file mode 100644 index 11903505280..00000000000 --- a/projects/rain/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const { Program } = require("@coral-xyz/anchor"); -const bs58 = require('bs58'); -const { getProvider } = require("../helper/solana"); -const bankIdl = require('./bank-idl'); -const defiIdl = require('./defi-idl'); - -async function tvl(api) { - const provider = getProvider(); - const bankProgram = new Program(bankIdl, provider); - const defiProgram = new Program(defiIdl, provider); - - // Get all banks - const banks = []; - - const expectedDiscriminant = Buffer.from([142, 49, 166, 242, 50, 66, 97, 188]); - const rawAccounts = await provider.connection.getProgramAccounts(bankProgram.programId, { - filters: [ - { - memcmp: { - offset: 0, - bytes: bs58.encode(expectedDiscriminant), - }, - }, - ], - }); - - for (const acc of rawAccounts) { - const data = acc.account.data; - - if (!data.slice(0, 8).equals(expectedDiscriminant)) continue; - if (data.length < 900) continue; - - const bankTypeTag = data.readUInt8(128); - if (bankTypeTag !== 0 && bankTypeTag !== 1) continue; - - const decoded = bankProgram.coder.accounts.decode('bank', data); - banks.push({ publicKey: acc.pubkey, account: decoded }); - } - - // Get all active defi loans - const defiLoans = await defiProgram.account.loan.all([ - { - memcmp: { - offset: 8 + 64 + 1, - bytes: bs58.encode(Buffer.from([0])), // active loans only - }, - }, - ]); - - // Add bank available liquidity to TVL, availableLiquidity = totalLiquidity - borrowedLiquidity - for (const bank of banks) { - api.add( - bank.account.mint.toString(), - bank.account.availableLiquidity - ); - } - - // Add defi loan collateral to TVL - for (const loan of defiLoans) { - api.add( - loan.account.collateral.toString(), - loan.account.collateralAmount - ); - } -} - -async function borrowed(api) { - const provider = getProvider(); - const defiProgram = new Program(defiIdl, provider); - - // Get all active defi loans - const defiLoans = await defiProgram.account.loan.all([ - { - memcmp: { - offset: 8 + 64 + 1, - bytes: bs58.encode(Buffer.from([0])), // active loans only - }, - }, - ]); - - // Add defi loan collateral to TVL - for (const loan of defiLoans) { - api.add( - loan.account.principal.toString(), - loan.account.borrowedAmount - ); - } -} - -module.exports = { - solana: { tvl, borrowed, }, -} \ No newline at end of file diff --git a/projects/rainbow/index.js b/projects/rainbow/index.js deleted file mode 100644 index abdf1fd934f..00000000000 --- a/projects/rainbow/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { view_account, getTokenBalance, sumTokens } = require("../helper/chain/near"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - timetravel: false, - ethereum: { - tvl: sumTokensExport({ - owner: "0x6BFaD42cFC4EfC96f529D786D643Ff4A8B89FA52", - fetchCoValentTokens: true, - logCalls: true, - }), - }, - /* aurora: { - tvl: sumTokensExport({ - owner: "0xb0bD02F6a392aF548bDf1CfAeE5dFa0EefcC8EaB", - tokens: [ADDRESSES.null], - logCalls: true, - }), - }, */ - near: { - tvl: async () => { - return sumTokens({ owners: ['factory.bridge.near', 'fast.bridge.near'], tokens: ["a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near", 'aaaaaa20d9e0e2461697782ef11675f668207961.factory.bridge.near'] }) - }, - }, -}; diff --git a/projects/raindex/index.js b/projects/raindex/index.js deleted file mode 100644 index f67d3f26e17..00000000000 --- a/projects/raindex/index.js +++ /dev/null @@ -1,96 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const orderbooks = { - arbitrum: { - v3: [ - { address: "0x90caf23ea7e507bb722647b0674e50d8d6468234", start: 1710573200 }, - ], - v4: [ - { address: "0x550878091b2b1506069f61ae59e3a5484bca9166", start: 1727110056 }, - ] - }, - base: { - v3: [ - { address: "0x2aee87d75cd000583daec7a28db103b1c0c18b76", start: 1710593051 }, - ], - v4: [ - { address: "0xd2938e7c9fe3597f78832ce780feb61945c377d7", start: 1724856007 }, - { address: "0xa2f56f8f74b7d04d61f281be6576b6155581dcba", start: 1719934425 }, - { address: "0x32aCbdF51abe567C91b7a5cd5E52024a5Ca56844", start: 1724451937 }, - { address: "0x80DE00e3cA96AE0569426A1bb1Ae22CD4181dE6F", start: 1724168357 }, - { address: "0x7A44459893F99b9d9a92d488eb5d16E4090f0545", start: 1723404441 }, - ], - }, - bsc: { - v3: [ - { address: "0xb1d6d10561d4e1792a7c6b336b0529e4bfb5ea8f", start: 1710592564 }, - ], - v4: [ - { address: "0xd2938e7c9fe3597f78832ce780feb61945c377d7", start: 1727110200 }, - ] - }, - ethereum: { - v3: [ - { address: "0xf1224a483ad7f1e9aa46a8ce41229f32d7549a74", start: 1707183011 }, - ], - v4: [ - { address: "0x0eA6d458488d1cf51695e1D6e4744e6FB715d37C", start: 1729850783 }, - ] - }, - flare: { - v3: [ - { address: "0xb06202aA3Fe7d85171fB7aA5f17011d17E63f382", start: 1712406628 }, - ], - v4: [ - { address: "0xcee8cd002f151a536394e564b84076c41bbbcd4d", start: 1725430973 }, - { address: "0xaa3b14Af0e29E3854E4148f43321C4410db002bC", start: 1724097373 }, - { address: "0xA2Ac77b982A9c0999472c1De378A81d7363d926F", start: 1724079109 }, - { address: "0x582d9e838FE6cD9F8147C66A8f56A3FBE513a6A2", start: 1720717267 }, - ] - }, - linea: { - v3: [], - v4: [ - { address: "0x22410e2a46261a1b1e3899a072f303022801c764", start: 1727718941 }, - { address: "0xF97DE1c2d864d90851aDBcbEe0A38260440B8D90", start: 1722282647 }, - ] - }, - // matchain: { - // v3: [], - // v4: [ - // { address: "0x40312EDAB8Fe65091354172ad79e9459f21094E2", start: 1725285390 }, - // ] - // }, - polygon: { - v3: [ - { address: "0xde5abe2837bc042397d80e37fb7b2c850a8d5a6c", start: 1705929922 }, - { address: "0x34200e026fbac0c902a0ff18e77a49265ca6ac99", start: 1691086795 }, - { address: "0xd3edafeb9eaa454ce26e60a66ccda73939c343a4", start: 1698953082 }, - { address: "0xc95a5f8efe14d7a20bd2e5bafec4e71f8ce0b9a6", start: 1710528345 }, - { address: "0x95c9bf235435b660aa69f519904c3f175aab393d", start: 1698859456 }, - { address: "0xdcdee0e7a58bba7e305db3abc42f4887ce8ef729", start: 1701659318 }, - { address: "0x16d518706d666c549da7bd31110623b09ef23abb", start: 1702067640 }, - ], - v4: [ - { address: "0x7d2f700b1f6fd75734824ea4578960747bdf269a", start: 1726792922 }, - { address: "0x2f209e5b67a33b8fe96e28f24628df6da301c8eb", start: 1721758591 }, - { address: "0xb8CD71e3b4339c8B718D982358cB32Ed272e4174", start: 1723733415 }, - { address: "0x001B302095D66b777C04cd4d64b86CCe16de55A1", start: 1723728017 }, - { address: "0xAfD94467d2eC43D9aD39f835BA758b61b2f41A0E", start: 1721746069 }, - ] - }, -} - -async function tvl(api) { - const { v3 = [], v4 = [] } = orderbooks[api.chain] - const owners = v3.concat(v4).map(orderbook => orderbook.address) - return sumTokens2({ api, owners, fetchCoValentTokens: true, permitFailure: true }) -} - -module.exports = { - methodology: 'Balance of tokens held by Rain Orderbook contract.', -} - -Object.keys(orderbooks).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/rakeoff/index.js b/projects/rakeoff/index.js deleted file mode 100644 index 26f6550ab73..00000000000 --- a/projects/rakeoff/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require("../helper/http"); - -const url = "https://jgvzt-eiaaa-aaaak-ae5kq-cai.icp0.io/v1/rakeoff-stats"; - -async function tvl() { - const { icp_stats } = await get(url) - - return { - "coingecko:internet-computer": icp_stats.total_staked / 1e8 - } -} - -module.exports = { - timetravel: false, - methodology: "TVL counts amount of ICP tokens staked on the Rakeoff dApp", - icp: { - tvl, - }, -} diff --git a/projects/ram.js b/projects/ram.js deleted file mode 100644 index 61acf1e400b..00000000000 --- a/projects/ram.js +++ /dev/null @@ -1,7 +0,0 @@ -const { compoundExports2 } = require("./helper/compound"); - -module.exports = { - thundercore: compoundExports2({ comptroller: '0x0d4fe8832857Bb557d8CFCf3737cbFc8aE784106', cether: '0xef5a0ce54a519b1db3f350eb902c4cfbf7671d88' }) -} -module.exports.thundercore.borrowed = () => ({}) -module.exports.deadFrom = '2023-03-05' \ No newline at end of file diff --git a/projects/ramp/abi.json b/projects/ramp/abi.json deleted file mode 100644 index 2bb16d74587..00000000000 --- a/projects/ramp/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getPoolBalance": "function getPoolBalance(address _token) view returns (uint256)", - "getPoolAmount": "function getPoolAmount(address _token) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/ramp/index.js b/projects/ramp/index.js deleted file mode 100644 index 5463af0d703..00000000000 --- a/projects/ramp/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const abi = require('./abi.json'); -const { getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') - -function getChainTVL(chain) { - return async (api) => { - // https://appv2.rampdefi.com/#/lever - return {} -/* const key = chain === 'ethereum' ? 'eth' : chain; - const { [key]: config } = await getConfig('ramp', 'https://config.rampdefi.com/config/appv2/priceInfo'); - const tokens = config.tokens; - delete tokens.RUSD - delete tokens.RAMP - const calls = [] - const iTokens = [] - - for (const [tokenName, token] of Object.entries(tokens)) { - if (token?.strategy?.type === undefined) continue - const tokenAddress = token.address; - iTokens.push(tokenAddress) - calls.push({ target: token.strategy.address, params: tokenAddress }) - } - - const res = (await api.multiCall({ abi: abi.getPoolAmount, calls, permitFailure: true})).map(i => i ?? 0) - api.addTokens(iTokens, res) - return sumTokens2({ api, resolveLP: true, }) */ - } -} - -const chains = ['ethereum', 'bsc', 'polygon', 'avax',] -module.exports = { - hallmarks: [ - [1661439572, "Remove native assets from tvl"] - ], -} - -chains.forEach(chain => { - module.exports[chain] = { tvl: getChainTVL(chain) } -}) diff --git a/projects/ramses-cl/index.js b/projects/ramses-cl/index.js deleted file mode 100644 index bb0ea9e8741..00000000000 --- a/projects/ramses-cl/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - arbitrum: { factory: '0xaa2cd7477c451e703f3b9ba5663334914763edf8', fromBlock: 90593047, }, - hyperliquid: { factory: '0xA87c8308722237F6442Ef4762B7287afB84fB191', fromBlock: 6947040, }, -}) \ No newline at end of file diff --git a/projects/ramses/index.js b/projects/ramses/index.js deleted file mode 100644 index 5d6661fc30f..00000000000 --- a/projects/ramses/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - misrepresentedTokens: true, - arbitrum:{ - tvl: getUniTVL({ factory: '0xAAA20D08e59F6561f242b08513D36266C5A29415', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), - staking: staking("0xAAA343032aA79eE9a6897Dab03bef967c3289a06", "0xaaa6c1e32c55a7bfa8066a6fae9b42650f262418"), - }, -} \ No newline at end of file diff --git a/projects/range/abi.json b/projects/range/abi.json deleted file mode 100644 index f1a6d735b12..00000000000 --- a/projects/range/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "underlyingBalance": "function getUnderlyingBalances() public view returns (uint256 amount0Current, uint256 amount1Current)", - "getBalanceInCollateralToken": "function getBalanceInCollateralToken() external view returns (uint256 amount)" -} \ No newline at end of file diff --git a/projects/range/index.js b/projects/range/index.js deleted file mode 100644 index 22e3e82055c..00000000000 --- a/projects/range/index.js +++ /dev/null @@ -1,113 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const ABI = require('./abi.json'); -const config ={ - ethereum: [ - { factory: '0xf1e70677fb1f49471604c012e8B42BA11226336b', fromBlock: 17266660 }, // uniswap - { factory: '0x3edeA0E6E94F75F86c62E1170a66f4e3bD7d77fE', fromBlock: 18460401 }, // pancakeswap - { factory: '0xDE07a0D5C9CA371E41a869451141AcE84BCAd119', fromBlock: 18375548, factoryType: 'GHO' }, // GHO - { factory: '0x06D38cFA75FE0E9C41B0C58F102bCb2Df2577732', fromBlock: 10000835 } // uniswap - ], - arbitrum: [ - { factory: '0xB9084c75D361D1d4cfC7663ef31591DeAB1086d6', fromBlock: 88503603 }, // uniswap - { factory: '0x42f2dBb72964ac2854bF1C781E525C5CE1e19d52', fromBlock: 136696158 }, // sushiswap - { factory: '0x2274AC83290eB9355f851b447D3046b32A5B4f52', fromBlock: 138961230 }, // camelot - { factory: '0xCCA961F89a03997F834eB5a0104efd9ba1f5800E', fromBlock: 153518527 }, // pancakeswap - ], - bsc: [ - { factory: '0xad2b34a2245b5a7378964BC820e8F34D14adF312', fromBlock: 28026886 }, // pancakeswap - ], - polygon: [ - { factory: '0xad2b34a2245b5a7378964BC820e8F34D14adF312', fromBlock: 42446548 }, // quickswap - {factory: '0x9eD6C646b4A57e48DFE7AE04FBA4c857AD71d162', fromBlock: 45889702} // retro - ], - base: [ - { factory: '0x4bF9CDcCE12924B559928623a5d23598ca19367B', fromBlock: 2733457 }, // uniswap - ], - mantle: [ - { factory: '0x3E89E72026DA6093DD6E4FED767f1f5db2fc0Fb4', fromBlock: 5345161 }, // agni - { factory: '0xCCA961F89a03997F834eB5a0104efd9ba1f5800E', fromBlock: 14374189, factoryType: 'izumi' }, // izumi - { factory: '0xD22D1271d108Cd09C38b8E5Be8536E0E366DCd23', fromBlock: 14063599 }, // fusionX - { factory: '0xbf3CC27B036C01A4482d07De191F18F1d8e7B00c', fromBlock: 18309127 } // swapsicle - ], - manta: [ - { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 899433, factoryType: 'izumi' } // izumi - ], - zeta: [ - { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 1562427, factoryType: 'izumi' } // izumi - ], - scroll: [ - { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 1803841, factoryType: 'izumi' } // izumi - ], - zkfair: [ - { factory: '0x873fD467A2A7e4E0A71aD3c45966A84797e55B5B', fromBlock: 6740958, factoryType: 'izumi' } // izumi - ], - blast: [ - { factory: '0x6b12399172036db8a8E2b7e2206175080C981A4D', fromBlock: 228630 } // Thruster - ] -} - - -module.exports = { - methodology: 'assets deployed on DEX as LP + asset balance of vaults', - doublecounted: true, - start: '2023-05-13', -}; - -// vaults that were deployed through factory but are uninitialized and unused -const ignoreList = {mantle : ["0x3f7a9ea2403F27Ce54624CE505D01B2204eDa030"]} -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const factories = config[chain]; - const allLogs = []; - for (const { factory, fromBlock, factoryType } of factories) { - const logs = await getLogs({ - api, - target: factory, - topic: 'VaultCreated(address,address)', - eventAbi: 'event VaultCreated(address indexed uniPool, address indexed vault)', - onlyArgs: true, - fromBlock, - }) - logs.forEach((log) => allLogs.push({ factory, log, chain, factoryType })); - } - const getVault = i => i.log.vault - const ignoreVault = vault => !ignoreList[chain] || !ignoreList[chain].includes(vault) - let vaults = allLogs.filter(({ factoryType }) => !factoryType ).map(getVault); - - vaults = vaults.filter(ignoreVault); // Remove excluded vaults - - // Collect Izumi Vaults Separately - let izumiVaults = allLogs.filter(({ factoryType}) => factoryType === 'izumi').map(getVault); - izumiVaults = izumiVaults.filter(ignoreVault); - - // Collect GHO Vaults Separately - let ghoVaults = allLogs.filter(({ factoryType}) => factoryType === 'GHO').map(getVault); - ghoVaults = ghoVaults.filter(ignoreVault); - - // ===== Non Izumi & Non GHO vaults only ===== - let token0s = await api.multiCall({ abi: "address:token0", calls: vaults }) - let token1s = await api.multiCall({ abi: "address:token1", calls: vaults }) - // ===== Izumi vaults only ===== - token0s.push(...(await api.multiCall({ abi: "address:tokenX", calls: izumiVaults }))) - token1s.push(...(await api.multiCall({ abi: "address:tokenY", calls: izumiVaults }))) - - const bals = await api.multiCall({ abi: ABI.underlyingBalance, calls: [...vaults, ...izumiVaults] }) - - // All non-GHO vaults - bals.forEach(({ amount0Current, amount1Current }, i) => { - api.add(token0s[i], amount0Current) - api.add(token1s[i], amount1Current) - }) - - // ===== GHO Vaults Only ===== - let ghoToken1s = await api.multiCall({ abi: "address:collateralToken", calls: ghoVaults }) - const ghoBals = await api.multiCall({ abi: ABI.getBalanceInCollateralToken, calls: ghoVaults }) - ghoBals.forEach((amount, i) => { - api.add(ghoToken1s[i], amount); - }) - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/rangers/index.js b/projects/rangers/index.js deleted file mode 100644 index e42dd51bfe7..00000000000 --- a/projects/rangers/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const tokens = { - RPG: ADDRESSES.rpg.WRPG, - // USDT: ADDRESSES.rpg.USDT, - MIX: '0x36426b7bf5709e5c2160411c6e8b1832e3404fe1', - AMG: '0xdaa6a6919c9543d8787490f5e9ad532c4d7ce9e8', - COIN: '0x3978e3cAB1c503eFaD75cB929C7076B7f4f3b6F2', -} - -//Dehero的合约 -// const deheroContract = [ -// '0x00852E9CDF414D6D9403468340f78ea93Eda82d9', -// '0x2a70F13998798Bd830293d15Ed390dA1F2C5fc44', -// '0x616fc92cE6Ea765b3CBd7a03dfD7e707FbB81851', -// '0xa0Ba72A2f8D3D619ffb70baAA7982c44708b145A', -// '0x0948C098bE91e61050c531686d344e0B8d804Fd3', -// '0xf29bDba5598a85e75D53edD2a880D30E477a5A9a', -// '0xA2Fad94B16675a6Aa9e89308cc0192a2C5F0749b', -// '0x99B4f686EF406C9c4FE5468655A2d30E266C5536', -// '0xb08439deE0Bc1E7D5945B590B178F6833dF0bea1', -// '0xBf7C82A1B67B4Ed6095A12140F5cfc1Ae56783AF', -// '0xf060AbF8f9DFa4c266c4366feb6642a39c3B5a5e', -// '0x2aB030407955b9921D12dFAA2B928D6Ac30734Af', -// '0x20861b4Dc1A505d208321e6E8816824a0F4E4c94', -// '0xd7DFD2AB0BE47EE46Ca281859408A94aC466736E' -// ] -//the owners of rangers (dapp) -const ownersRPG = { - bridge: "0x9c1CbFE5328DFB1733d59a7652D0A49228c7E12C", - // nodeManager: "0x74448149F549CD819b7173b6D67DbBEAFd2909a7" -} -const owners = [...Object.values(ownersRPG)] - -async function tvl(api) { - return sumTokens2({ api, owners, tokens: Object.values(tokens) }) -} -module.exports = { - misrepresentedTokens: true, - methodology: "Count the sum of the five tokens (RPG, USDT, MIX, AMG, COIN) of the dapp platform (bridge, nodeManager) on the rangers blockchain.", - rpg: { - tvl - } -} \ No newline at end of file diff --git a/projects/rank-trading/index.js b/projects/rank-trading/index.js deleted file mode 100644 index 3ce118d6412..00000000000 --- a/projects/rank-trading/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const abi = { - "factorySettings": "function factorySettings() view returns (address asset, address assetPriceFeed, address rankToken, address ranktokenPricePair, address backendAddress, address managedAddress, address rankStakingPool, uint256 rankStakingPoolId, uint256 premiumStakingValue, tuple(uint16 depositFeeBP, uint16 performanceFeeBP, uint16 ownerDepositFeeBP), uint256 MAX_DURATION, bool enabled)", - "rankStrategiesCount": "function () view returns (uint256)", - "rankStrategies": "function (uint256) view returns (address)", - "totals": "function totals() view returns (uint256 shares, uint256 assetAmount, uint256 withdrawableAssetAmount, uint256 lastAvailUpdate)", - "poolInfo": "function poolInfo(uint256) view returns (address stakingToken, address rewardToken, uint256 lastRewardTimestamp, uint256 accTokenPerShare, uint256 startTime, uint256 endTime, uint256 precision, uint256 totalStaked, uint256 totalReward, address owner)" -} - - -const rankTokenAddress = "0x978aB3D5A5C39bCBb2a15f2ad324187dD7cBf952"; - -const rankFactoryContracts = [ - "0x6E9d30690E433503d3dB7001610f60290a286a3f", - "0x7cD6ead7e0834Ae8bc393bA4c933Bb9e80e7dC19", - "0x185f8bc81FC95bcdb8ebD8A7C4429A461931c82e", - "0xAB5389b054B763F9d86Be0381BD6C7385E40e452", - "0x8e9fc089c7eF09cD1c8bfc7FFdf5fa00E1A90601", - "0x276ee92c144A7FBe0931813cC7bb30d388a17eb8", - "0x1563c9837f9b71ba6F69342276dEDa6158447227", - "0xCBAbBa2af00EB3c0F4Ae98D14FFEB07587B5A679", - "0x95DeFC7388038fe97512f355686f060Fa2B573f3", - "0xF86adA1552817637EC843A4c5EB915fc125b70db", -]; - -const stakingContracts = [{ poolAddress: "0xd6A07b8065f9e8386A9a5bBA6A754a10A9CD1074", poolId: 380 }]; -const vestingContracts = ["0x582c5ae03f55a3eb5e79f8d3e2cf9712c331a3b0", "0xd2b1c19dc746331829918fe3517a40935ebb53f0", "0xd041c5d24491dff050f40fab5d485530ebe441c2"]; - -async function tvl(api) { - const factorySettings = await api.multiCall({ abi: abi.factorySettings, calls: rankFactoryContracts, }); - const tokens = factorySettings.map((f) => f.asset); - - for (let i = 0; i < rankFactoryContracts.length; i++) { - const strategies = await api.fetchList({ lengthAbi: 'rankStrategiesCount', itemAbi: 'rankStrategies', target: rankFactoryContracts[i], }) - const totals = await api.multiCall({ abi: abi.totals, calls: strategies }) - api.add(tokens[i], totals.map(i => i.assetAmount)) - } -} - -async function staking(api) { - for (let stakingContract of stakingContracts) { - const { poolAddress, poolId } = stakingContract; - const stake = await api.call({ abi: abi.poolInfo, target: poolAddress, params: poolId, }); - api.add(stake.stakingToken, stake.totalStaked); - } -} - -module.exports = { - methodology: "TVL = Sum of all assets locked in Rank Trading contracts, Staking = Total $RAN staked in the Staking Pools, Vesting = Total $RAN in vesting contracts", - bsc: { - tvl, - staking, - vesting: sumTokensExport({ owners: vestingContracts, tokens: [rankTokenAddress], }), - // pool2, // this is locked in UNCX network? we cant treat it as your pool2 https://bscscan.com/address/0xfe88DAB083964C56429baa01F37eC2265AbF1557 - }, -}; diff --git a/projects/rari/abi.json b/projects/rari/abi.json deleted file mode 100644 index 13d807fb47b..00000000000 --- a/projects/rari/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)", - "getPublicPools": "function getPublicPools() view returns (uint256[], tuple(string name, address creator, address comptroller, uint256 blockPosted, uint256 timestampPosted)[])", - "getPoolSummary": "function getPoolSummary(address comptroller) returns (uint256, uint256, address[], string[])", - "getRawFundBalancesAndPrices": "function getRawFundBalancesAndPrices() returns (string[], uint256[], uint8[][], uint256[][], uint256[])", - "getRawFundBalances": "function getRawFundBalances() returns (uint256, uint8[], uint256[])", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "totalStaked": "uint256:totalStaked" -} \ No newline at end of file diff --git a/projects/rari/index.js b/projects/rari/index.js deleted file mode 100644 index 22f6d74adea..00000000000 --- a/projects/rari/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi"); -const { compoundExports2 } = require('../helper/compound') -const { pool2 } = require('../helper/pool2'); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const earnETHPoolFundControllerAddressesIncludingLegacy = [ - '0xD9F223A36C2e398B0886F945a7e556B41EF91A3C', - '0xa422890cbBE5EAa8f1c88590fBab7F319D7e24B6', - '0x3f4931a8e9d4cdf8f56e7e8a8cfe3bede0e43657', -] -const earnDAIPoolControllerAddressesIncludingLegacy = [ - '0x7C332FeA58056D1EF6aB2B2016ce4900773DC399', -] -const earnStablePoolAddressesIncludingLegacy = [ - '0x4a785fa6fcd2e0845a24847beb7bddd26f996d4d', -] -const fusePoolDirectoryAddress = '0x835482FE0532f169024d5E9410199369aAD5C77E' -const rariGovernanceTokenUniswapDistributorAddress = '0x1FA69a416bCF8572577d3949b742fBB0a9CD98c7' -const RGTETHSushiLPTokenAddress = '0x18a797c7c70c1bf22fdee1c09062aba709cacf04' - -const tokenMapWithKeysAsSymbol = { - 'DAI': ADDRESSES.ethereum.DAI, - 'USDC': ADDRESSES.ethereum.USDC, - 'USDT': ADDRESSES.ethereum.USDT, - 'TUSD': ADDRESSES.ethereum.TUSD, - 'BUSD': ADDRESSES.ethereum.BUSD, - 'SUSD': ADDRESSES.ethereum.sUSD, - 'MUSD': '0xe2f2a5c287993345a840db3b0845fbc70f5935a5' -} - - -async function tvl(api) { - - const getBalancesFromEarnPool = async (addresses) => { - const earnPoolData = (await api.multiCall({ calls: addresses, abi: abi['getRawFundBalancesAndPrices'], permitFailure: true, })) - earnPoolData.filter(i => i).forEach(([tokens, bals] = []) => { - tokens.forEach((token, i) => { - const mapped = tokenMapWithKeysAsSymbol[token.toUpperCase()] - if (mapped) api.add(mapped, bals[i]) - else console.log('unmapped', token, bals[i]) - }) - }) - } - - // Earn yield pool - const earnYieldProxyAddress = ['0x35DDEFa2a30474E64314aAA7370abE14c042C6e8'].concat(earnETHPoolFundControllerAddressesIncludingLegacy).concat(earnDAIPoolControllerAddressesIncludingLegacy).concat(earnStablePoolAddressesIncludingLegacy) - await getBalancesFromEarnPool(earnYieldProxyAddress) - - await fuseTvl(api) -} - -async function fuseTvl(api) { - - const [_, pools] = (await api.call({ target: fusePoolDirectoryAddress, abi: abi['getPublicPools'] })) - const markets = (await api.multiCall({ abi: 'address[]:getAllMarkets', calls: pools.map(i => i.comptroller) })).flat() - const tokens = await api.multiCall({ abi: 'address:underlying', calls: markets }) - return sumTokens2({api , tokensAndOwners2: [tokens, markets]}) -} - -module.exports = { - doublecounted: true, - start: '2020-08-01', // July 14, 2020 - ethereum: { - tvl, - pool2: pool2(rariGovernanceTokenUniswapDistributorAddress, RGTETHSushiLPTokenAddress), - }, - arbitrum: compoundExports2({ comptroller: '0xC7D021BD813F3b4BB801A4361Fbcf3703ed61716' }), - hallmarks: [ - // [1651276800, "FEI hack"], - [1649548800, "ICHI sell-off"], - // [1620432000, "First Rari hack"], - [1654905600, "Bhavnani's announcement"] - ] -} - -module.exports.arbitrum.borrowed = () => ({}) -module.exports.ethereum.borrowed = () => ({}) diff --git a/projects/rari_chain/index.js b/projects/rari_chain/index.js deleted file mode 100644 index 4ef03cf3437..00000000000 --- a/projects/rari_chain/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - arbitrum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x255f80Ef2F09FCE0944faBb292b8510F01316Cf0", - "0x8bE956aB42274056ef4471BEb211b33e258b7324", - "0x46406c88285AD9BE2fB23D9aD96Cb578d824cAb6", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/rarify.js b/projects/rarify.js deleted file mode 100644 index b122577b040..00000000000 --- a/projects/rarify.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport} = require("./helper/unknownTokens"); - -const stakingContract = '0x79bfE41cDbF6b7E949B93B46a2cBEFB497d71c20' -const RARE_WXDAI_LP = '0x5805bb63e73ec272c74e210d280c05b41d719827' - -module.exports = { - xdai: { - pool2: sumTokensExport({ owner: stakingContract, tokens: [RARE_WXDAI_LP], useDefaultCoreAssets: true, }), - tvl: () => ({}), - }, - methodology: `RARE/WXDAI LP on Honeyswap can be staked in a pool2 contract` -} diff --git a/projects/rate-x/index.js b/projects/rate-x/index.js deleted file mode 100644 index 67eb2bba3dd..00000000000 --- a/projects/rate-x/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); -const { getConnection } = require("../helper/solana"); - -async function solanaTvl(api) { - const connection = getConnection(); - const lookupTableAddress = new PublicKey("eP8LuPmLaF1wavSbaB4gbDAZ8vENqfWCL5KaJ2BRVyV"); - - const lookupTableAccount = ( - await connection.getAddressLookupTable(lookupTableAddress) - ).value; - - const tokenAccounts = [] - for (let i = 0; i < lookupTableAccount.state.addresses.length; i++) { - const address = lookupTableAccount.state.addresses[i]; - tokenAccounts.push(address.toBase58()); - } - - return sumTokens2({ - tokenAccounts, - balances: api.getBalances() - }) -} - -async function bscTvl(api) { - const balance = await api.call({ - target: "0x77c9b49a58325131D08F9dC120388f20c57c2572", - abi: 'erc20:balanceOf', - params: ["0xEDBcdD0A45Fd8EBa749fFc10205c65CeA54336D5"], - }); - - api.add("0x77c9b49a58325131D08F9dC120388f20c57c2572", balance); - return api.getBalances(); -} - -module.exports = { - timetravel: false, - methodology: "TVL is calculated by summing the value of the traders' vault, LP vault, and earn vault.", - solana: { tvl: solanaTvl }, - bsc: { tvl: bscTvl } -}; diff --git a/projects/ratio-finance/index.js b/projects/ratio-finance/index.js deleted file mode 100644 index 25bef48599e..00000000000 --- a/projects/ratio-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -async function tvl() { - return {} -} - -module.exports = { - timetravel: false, - hallmarks: [ - // [1670025600, "Private key compromised"], - [1675728000, "Announcement to move from Ratio to PHNX"] - ], - solana: { - tvl, - }, - deadFrom: 1675728000, - methodology: - "To obtain the Ratio Finance TVL we make on-chain calls", -}; diff --git a/projects/ratio-finance/ratio-state.json b/projects/ratio-finance/ratio-state.json deleted file mode 100644 index b668ffbbdb4..00000000000 --- a/projects/ratio-finance/ratio-state.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "version": "0.1.0", - "name": "ratio_lending", - "instructions": [], - "accounts": [ - { - "name": "GlobalState", - "type": { - "kind": "struct", - "fields": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "treasury", - "type": "publicKey" - }, - { - "name": "oracleReporter", - "type": "publicKey" - }, - { - "name": "mintUsdr", - "type": "publicKey" - }, - { - "name": "tvlCollatCeilingUsd", - "type": "u128" - }, - { - "name": "tvlUsd", - "type": "u128" - }, - { - "name": "tvlCollat", - "type": { - "array": [ - "u128", - 4 - ] - } - }, - { - "name": "paused", - "type": "u8" - }, - { - "name": "totalDebt", - "type": "u64" - }, - { - "name": "debtCeilingGlobal", - "type": "u64" - }, - { - "name": "debtCeilingUser", - "type": "u64" - }, - { - "name": "harvestFeeNumer", - "type": "u64" - }, - { - "name": "feeDeno", - "type": "u64" - }, - { - "name": "collPerRisklv", - "type": { - "array": [ - "u64", - 10 - ] - } - }, - { - "name": "ratioMint", - "type": "publicKey" - }, - { - "name": "fundingWallet", - "type": "publicKey" - }, - { - "name": "borrowFeeNumer", - "type": "u64" - }, - { - "name": "reserved", - "type": { - "array": [ - "u64", - 21 - ] - } - } - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/rawr/index.js b/projects/rawr/index.js deleted file mode 100644 index 4d5d1a604af..00000000000 --- a/projects/rawr/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { iziswapExport } = require("../helper/iziswap") - -const poolHelpers = { - 'blast': ['0x5e7902aDf0Ea0ff827683Cc1d431F740CAD0731b'], -} //liquidityManager contracts - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport ({ poolHelpers: poolHelpers[chain], }), } -}) \ No newline at end of file diff --git a/projects/ray/index.js b/projects/ray/index.js deleted file mode 100644 index 382c9afb813..00000000000 --- a/projects/ray/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - - const { sumTokensExport } = require('../helper/unwrapLPs'); - -const ETH_ADDRESS = ADDRESSES.null; -const WETH_ADDRESS = ADDRESSES.ethereum.WETH; -const SAI_ADDRESS = ADDRESSES.ethereum.SAI; -const DAI_ADDRESS = ADDRESSES.ethereum.DAI; -const USDC_ADDRESS = ADDRESSES.ethereum.USDC; - -const tokenAddresses = [ - ETH_ADDRESS, - WETH_ADDRESS, - SAI_ADDRESS, - DAI_ADDRESS, - USDC_ADDRESS -]; - -const allOpportunities = [ - { - address: '0xEa5ee32F3A63c3FaBb311c6E8c985D308A53dcC1', beginTimestamp: 1568057588, endTimestamp: null, - coins: [SAI_ADDRESS, DAI_ADDRESS, USDC_ADDRESS, WETH_ADDRESS] - }, - { - address: '0xEB6394f817b498c423C44bD72c3D7f8ED5DeeC6e', beginTimestamp: 1568057609, endTimestamp: null, - coins: [SAI_ADDRESS, DAI_ADDRESS, USDC_ADDRESS, WETH_ADDRESS], added: [0, 1575650224, 1568341399, 0] - - }, - { - address: '0x759A728653C4d0483D897DCCf3a343fe2bBbb54A', beginTimestamp: 1570466036, endTimestamp: null, - coins: [SAI_ADDRESS, DAI_ADDRESS, USDC_ADDRESS, WETH_ADDRESS] - }, - { - address: '0xC830217BD3000E92CE846C549de6a2A36AEa8954', beginTimestamp: 1575649643, endTimestamp: null, - coins: [DAI_ADDRESS] - }, - { - address: '0x3d6fa1331E142504Ba0B7965CD801c7F3b21b6C0', beginTimestamp: 1583869244, endTimestamp: null, - coins: [DAI_ADDRESS, USDC_ADDRESS, WETH_ADDRESS] - } -]; - -const owners = allOpportunities.map(i => i.address) - -const allPortfolioManagers = [ - { - address: '0x06a5Bf70BfF314177488864Fe03576ff608e6aec', beginTimestamp: 1568274392, endTimestamp: null - } -]; - -owners.push(allPortfolioManagers[0].address) - -module.exports = { - start: '2019-09-12', // 09/12/2019 @ 7:46am (UTC) - ethereum: { - tvl: sumTokensExport({ - owners, - tokens: tokenAddresses - }) - } -} diff --git a/projects/raydium/api.js b/projects/raydium/api.js deleted file mode 100644 index 940a0cbb9ac..00000000000 --- a/projects/raydium/api.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const { sumTokens2 } = require('../helper/solana') -const index = require('../index') - -module.exports = { - timetravel: false, - isHeavyProtocol: true, -} -const { solana: { tvl } } = getExports("raydium", ['solana']) - -module.exports.solana = { - staking: () => sumTokens2({ tokenAccounts: ['8tnpAECxAT9nHBqR1Ba494Ar5dQMPGhL31MmPJz1zZvY'] }), - tvl: tvlWithCheck, -} - -module.exports.solana = index.solana - -async function tvlWithCheck(api) { - const balances = await tvl(api) - api.addBalances(balances) - api.removeTokenBalance('DS4QiZfkp39PsHXYCRV3NkyDUKV9SpTczp2qnAUg6Nt6') // ZMB - api.removeTokenBalance('HDa3zJc12ahykSsBRvgiWzr6WLEByf36yzKKbVvy4gnF') // SOS - api.removeTokenBalance('2xaPstY4XqJ2gUA1mpph3XmvmPZGuTuJ658AeqX3gJ6F') // QUP - const usdValue = await api.getUSDValue() - // for some godforsaken reason, the TVL is sometimes reported as 60M, we fail in that case rather than report a wrong number - if (usdValue < 2e8) throw new Error('TVL is too low :' + usdValue / 1e6 + 'M') - return api.getBalances() -} \ No newline at end of file diff --git a/projects/raydium/index.js b/projects/raydium/index.js deleted file mode 100644 index 289900504c7..00000000000 --- a/projects/raydium/index.js +++ /dev/null @@ -1,194 +0,0 @@ -const { getConnection, sumTokens2, decodeAccount, } = require("../helper/solana"); -const { PublicKey, } = require("@solana/web3.js"); - -const { TokenAmountLayout, KeyLayoutv4 } = require("../helper/utils/solana/layouts/raydium-layout"); -const { transformDexBalances } = require("../helper/portedTokens"); -const { sleep } = require("../helper/utils"); -const { get } = require("../helper/http"); - -const CLMM = 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK' -const AmmV4 = '675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8' -const AmmStable = '5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h' - -async function ammStableTvl() { - const connection = getConnection() - const accounts = await connection.getProgramAccounts(new PublicKey(AmmStable), { - filters: [{ - dataSize: 1232 - }] - }) - const data = accounts.map(i => decodeAccount('raydiumLPStable', i.account)) - const tokenAccounts = data.map(i => [i.baseVault, i.quoteVault]).flat().map(i => i.toString()) - return sumTokens2({ tokenAccounts }) -} - -async function tvlCLMM() { - const connection = getConnection() - const accounts = await connection.getProgramAccounts(new PublicKey(CLMM), { - filters: [{ - dataSize: 1544 - }] - }) - const data = accounts.map(i => decodeAccount('raydiumCLMM', i.account)) - - const tokenAccounts = data.map(i => [i.vaultA, i.vaultB]).flat().map(i => i.toString()) - return sumTokens2({ tokenAccounts }) -} - - -async function ammV4Tvl(api) { - const connection = getConnection() - const auth = '5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1' - - await sleep(10000) - console.time('raydium: ammV4Tvl fetching vault balances') - const allPoolVaultAmount = await connection.getProgramAccounts(new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'), { filters: [{ dataSize: 165 }, { memcmp: { offset: 32, bytes: auth } }], dataSlice: { offset: 64, length: TokenAmountLayout.span } }) - console.timeEnd('raydium: ammV4Tvl fetching vault balances') - const vaultIdToAmount = {} - for (const item of allPoolVaultAmount) { - vaultIdToAmount[item.pubkey.toString()] = TokenAmountLayout.decode(item.account.data).amount.toString() - } - await sleep(20000) - const allPoolKeyInfo = await connection.getProgramAccounts(new PublicKey(AmmV4), { filters: [{ dataSize: 752 }], dataSlice: { offset: 336, length: KeyLayoutv4.span } }) - - - let i = 0 - let j = 0 - let data = [] - const emptyKey = PublicKey.default.toString() - for (const item of allPoolKeyInfo) { - const poolKey = KeyLayoutv4.decode(item.account.data) - if (poolKey.vaultA.toString() === emptyKey) continue - const vaultA = poolKey.vaultA.toString() - const vaultB = poolKey.vaultB.toString() - if (isNaN(vaultIdToAmount[vaultA]) || isNaN(vaultIdToAmount[vaultB])) continue - - data.push({ - token0: poolKey.mintA.toString(), - token1: poolKey.mintB.toString(), - token0Bal: vaultIdToAmount[vaultA], - token1Bal: vaultIdToAmount[vaultB], - }) - j++ - if (i > 5000) { - await transformDexBalances({ api, data }) - data = [] - i = 0 - } - i++ - } - await transformDexBalances({ api, data }) - return api.getBalances() -} - -async function ammV2V3() { - return sumTokens2({ - tokenAccounts: [ - // v2 - '8tA74jqYPNmr8pcvZE3FBxmLMDqFMvZryny8XojCD5CE', - '7t51g6PFAfnBtWqooQhHErneVqQb4SN1QuPnG7iGa87M', - '5fHS778vozoDDYzzJz2xYG39whTzGGW6bF71GVxRyMXi', - 'CzVe191iLM2E31DBW7isXpZBPtcufRRsaxNRc8uShcEs', - 'G2zmxUhRGn12fuePJy9QsmJKem6XCRnmAEkf8G6xcRTj', - 'H617sH2JNjMqPhRxsu43C8vDYfjZrFuoMEKdJyMu7V3t', - 'CJukFFmH9FZ98uzFkUNgqRn8xUmSBTUETEDUMxZXk6p8', - 'DoZyq9uo3W4WWBZJvPCvfB5cCBFvjU9oq3DdYjNgJNRX', - 'Gej1jXVRMdDKWSxmEZ78KJp5jruGJfR9dV3beedXe3BG', - 'FUDEbQKfMTfAaKS3dGdPEacfcC9bRpa5gmmDW8KNoUKp', - '3NAqRJFepsd2dae98Yj7uALQxiV1YRcZJoUcuXErK1FF', - '9RPGJb7pSyiLKKACmeoSgqeypiEymZneBHWbHerQC9Qm', - '7r5YjMLMnmoYkD1bkyYq374yiTBG9XwBHMwi5ZVDptre', - '6vMeQvJcC3VEGvtZ2TDXcShZerevxkqfW43yjX14vmSz', - 'CvcqJtGdS9C1jKKFzgCi5p8qsnR5BZCohWvYMBJXcnJ8', - 'AiYm8jzb2WB4HTTFTHX1XCS7uVSQM5XWnMsure5sMeQY', - // v3 - 'DujWhSxnwqFd3TrLfScyUhJ3FdoaHrmoiVE6kU4ETQyL', - 'D6F5CDaLDCHHWfE8kMLbMNAFULXLfM572AGDx2a6KeXc', - 'Eg6sR9H28cFaek5DVdgxxDcRKKbS85XvCFEzzkdmYNhq', - '8g2nHtayS2JnRxaAY5ugsYC8CwiZutQrNWA9j2oH8UVM', - 'DTQTBTSy3tiy7kZZWgaczWxs9snnTVTi8DBYBzjaVwbj', - 'Bk2G4zhjB7VmRsaBwh2ijPwq6tavMHALEq4guogxsosT', - 'ENjXaFNDiLTh44Gs89ZtfUH2i5MGLLkfYbSY7TmP4Du3', - '9uzWJD2WqJYSmB6UHSyPMskFGoP5L6hB7FxqUdYP4Esm', - 'Fy6SnHwAkxoGMhUH2cLu2biqAnHmaAwFDDww9k6gq5ws', - 'GoRindEPofTJ3axsonTnbyf7cFwdFdG1A3MG9ENyBZsn', - ] - }) -} - -async function combinedTvl(api) { - try { - - console.time('raydium: combinedTvl') - -/* */ console.time('raydium: tvlCLMM') - const balancesCLMM = await tvlCLMM() - api.addBalances(balancesCLMM) - console.timeEnd('raydium: tvlCLMM') - - console.time('raydium: ammStableTvl') - const balancesAmmStable = await ammStableTvl() - api.addBalances(balancesAmmStable) - console.timeEnd('raydium: ammStableTvl') - - console.time('raydium: ammV2V3') - const balancesAmmV2V3 = await ammV2V3() - api.addBalances(balancesAmmV2V3) - console.timeEnd('raydium: ammV2V3') - - console.time('raydium: ammV4Tvl') - // await ammV4Tvl(api) - console.timeEnd('raydium: ammV4Tvl') - - } catch (e) { - console.error('raydium', e) - throw e - } - - console.timeEnd('raydium: combinedTvl') - const tvl = await api.getUSDValue() - if (tvl < 1.5e8) throw new Error('TVL is too low :' + tvl / 1e6 + 'M') - - api.removeTokenBalance('DS4QiZfkp39PsHXYCRV3NkyDUKV9SpTczp2qnAUg6Nt6') // ZMB - api.removeTokenBalance('HDa3zJc12ahykSsBRvgiWzr6WLEByf36yzKKbVvy4gnF') // SOS - return api.getBalances() -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - misrepresentedTokens: true, - hallmarks: [[1667865600, "FTX collapse"]], - - solana: { - // tvl: combinedTvl, - tvl: tvlApi, - staking: () => sumTokens2({ tokenAccounts: ['8tnpAECxAT9nHBqR1Ba494Ar5dQMPGhL31MmPJz1zZvY'] }) - }, -}; - -async function tvlApi(api) { - let hasMore = true - let page = 1 - const pageSize = 1000 - do { - const { data: { data } } = await get(`https://api-v3.raydium.io/pools/info/list?poolType=all&poolSortField=liquidity&sortType=desc&pageSize=${pageSize}&page=${page}`) - const lastItem = data[data.length - 1] - hasMore = data.length === pageSize && lastItem.tvl > 1000 - api.log('lastItem', lastItem.tvl, page) - data.forEach(({ mintA, mintB, mintAmountA, mintAmountB, tvl, }) => { - if (tvl < 20_000) { - api.addUSDValue(tvl) - return; - } - api.add(mintA.address, mintAmountA * (10 ** mintA.decimals)) - api.add(mintB.address, mintAmountB * (10 ** mintB.decimals)) - }) - page++ - } while (hasMore) - - api.removeTokenBalance('DS4QiZfkp39PsHXYCRV3NkyDUKV9SpTczp2qnAUg6Nt6') // ZMB - api.removeTokenBalance('HDa3zJc12ahykSsBRvgiWzr6WLEByf36yzKKbVvy4gnF') // SOS - api.removeTokenBalance('2xaPstY4XqJ2gUA1mpph3XmvmPZGuTuJ658AeqX3gJ6F') // QUP - return api.getBalances() -} \ No newline at end of file diff --git a/projects/rbx/index.js b/projects/rbx/index.js deleted file mode 100644 index b4278af7035..00000000000 --- a/projects/rbx/index.js +++ /dev/null @@ -1,19 +0,0 @@ - -const { mergeExports } = require('../helper/utils'); -const { masterchefExports } = require('../helper/unknownTokens'); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'bsc', - masterchef: '0x864d434308997e9648838d23f3eedf5d0fd17bea', - blacklistedTokens: [ - '0xa9639160481b625ba43677be753e0a70bf58c647', - ], - nativeToken: '0xace3574b8b054e074473a9bd002e5dc6dd3dff1b', - }), - masterchefExports({ - chain: 'ethereum', - masterchef: '0x50b641caab809c1853be334246ac951faccc49b0', - nativeToken: '0x8254e26e453EB5aBd29B3c37AC9E8Da32E5d3299', - }) -]) \ No newline at end of file diff --git a/projects/rcpswap/index.js b/projects/rcpswap/index.js deleted file mode 100644 index e5ad8b1d274..00000000000 --- a/projects/rcpswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - arbitrum_nova: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xF9901551B4fDb1FE8d5617B5deB6074Bb8E1F6FB', - }) - } -}; \ No newline at end of file diff --git a/projects/re7/index.js b/projects/re7/index.js deleted file mode 100644 index 03b5789e9e2..00000000000 --- a/projects/re7/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Re7 Labs.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x46BA7bCD764a692208781B0Fdc642E272ee597bC', - '0xE86399fE6d7007FdEcb08A2ee1434Ee677a04433', - ], - eulerVaultOwners: [ - '0xa563FEEA4028FADa193f1c1F454d446eEaa6cfD7', - '0x46BA7bCD764a692208781B0Fdc642E272ee597bC', - ], - mellow: [ - '0x84631c0d0081FDe56DeB72F6DE77abBbF6A9f93a', - '0x62F0BAf53959AF18Cab47082f5aB58A5B93e041C', - '0x8b0e80716c4be087C271E964E0bDc7780d32A2E8', - '0x2759E4741b370506BE2ccEf898960108e98f2faf', - '0x4C690C311d8A5aa16eC2a595D4ea3928a73C48d6', - '0x617895460004821C8DE800d4a644593cAb0aD40c', - '0x3a828C183b3F382d030136C824844Ea30145b4c7', - '0x7F43fDe12A40dE708d908Fb3b9BFB8540d9Ce444', - '0xc65433845ecD16688eda196497FA9130d6C47Bd8', - '0x7a4EffD87C2f3C55CA251080b1343b605f327E3a', - '0x82f5104b23FF2FA54C2345F821dAc9369e9E0B26', - ], - turtleclub: [ - '0x294eecec65A0142e84AEdfD8eB2FBEA8c9a9fbad', - ], - symbiotic: [ - '0x35E44d92E8F738A272Bddbae53d1Dc9490e75Fe7', - ], - }, - base: { - morphoVaultOwners: [ - '0xD8B0F4e54a8dac04E0A57392f5A630cEdb99C940', - ], - }, - sonic: { - eulerVaultOwners: [ - '0xF602d3816bC63fC5f5Dc87bB56c537D0d0078532', - '0x46BA7bCD764a692208781B0Fdc642E272ee597bC', - ], - siloVaultOwners: [ - '0x3BA1566ED39F865bAf4c1Eb9acE53F3D2062bE65', - ], - }, - bob: { - eulerVaultOwners: [ - '0x46BA7bCD764a692208781B0Fdc642E272ee597bC', - ], - }, - berachain: { - eulerVaultOwners: [ - '0x46BA7bCD764a692208781B0Fdc642E272ee597bC', - ], - }, - avax: { - eulerVaultOwners: [ - '0x7B41b9891887820A75A51a1025dB1A54f4798521', - '0x3BA1566ED39F865bAf4c1Eb9acE53F3D2062bE65', - ], - }, - bsc: { - eulerVaultOwners: [ - '0x187620a61f4f00Cb629b38e1b38BEe8Ea60d2B8D', - ], - }, - wc: { - morphoVaultOwners: [ - '0x46BA7bCD764a692208781B0Fdc642E272ee597bC', - '0x598A41fA4826e673829D4c5AfD982C0a43977ca6', - ], - }, - polygon:{ - morphoVaultOwners: [ - '0x7B41b9891887820A75A51a1025dB1A54f4798521', - ], - }, - unichain:{ - morphoVaultOwners: [ - '0x187620a61f4f00Cb629b38e1b38BEe8Ea60d2B8D', - ], - }, - plume_mainnet:{ - morphoVaultOwners: [ - '0x7B41b9891887820A75A51a1025dB1A54f4798521', - '0x06590Fef209Ebc1f8eEF83dA05984cD4eFf0d0E3', - ], - }, - starknet: { - vesu: [ - '0x7f135b4df21183991e9ff88380c2686dd8634fd4b09bb2b5b14415ac006fe1d', - '0x52fb52363939c3aa848f8f4ac28f0a51379f8d1b971d8444de25fbd77d8f161', - '0x2e06b705191dbe90a3fbaad18bb005587548048b725116bff3104ca501673c1', - '0x6febb313566c48e30614ddab092856a9ab35b80f359868ca69b2649ca5d148d', - '0x59ae5a41c9ae05eae8d136ad3d7dc48e5a0947c10942b00091aeb7f42efabb7', - '0x3de03fafe6120a3d21dc77e101de62e165b2cdfe84d12540853bd962b970f99', - ] - }, - tac:{ - eulerVaultOwners: [ - '0xE5EAE3770750dC9E9eA5FB1B1d81A0f9C6c3369c', - ], - }, - linea:{ - eulerVaultOwners: [ - '0xE5EAE3770750dC9E9eA5FB1B1d81A0f9C6c3369c', - ], - }, - plasma: { - eulerVaultOwners: [ - '0xddedB1F2d1dd0b0455Fe5277632c84f57f894011', - ], - }, - } -} - -module.exports = { - ...getCuratorExport(configs), - - // starknet doesn't support historical queries - timetravel: false, - hallmarks: [ - ['2025-06-01', "Start tracking vaults on starknet"], - ] -} diff --git a/projects/reactor/index.js b/projects/reactor/index.js deleted file mode 100644 index 8aef7243182..00000000000 --- a/projects/reactor/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - - blast: { - tvl: getUniTVL({ - factory: "0xe9ecf70a6e8a00fafab980dc59ca7d3a4b800db9", - useDefaultCoreAssets: true, - }), - }, -}; - - diff --git a/projects/reactorfusion/index.js b/projects/reactorfusion/index.js deleted file mode 100644 index 71a15d2a684..00000000000 --- a/projects/reactorfusion/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - telos: compoundExports2({ - comptroller: '0x19646a04BfDcf3553Adc8fAAf8B16D76EC41E494', - cether: '0x7d94D2F6f91ED5ED0104D89B3D263026D990Ac5f', - }), - era: compoundExports2({ - comptroller: '0x23848c28Af1C3AA7B999fA57e6b6E8599C17F3f2', - cether: '0xC5db68F30D21cBe0C9Eac7BE5eA83468d69297e6', - }) -}; diff --git a/projects/real-veRWA/index.js b/projects/real-veRWA/index.js deleted file mode 100644 index a7e76b780ef..00000000000 --- a/projects/real-veRWA/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') -const RWAToken = ADDRESSES.real.RWA -const veRWA = '0xa7B4E29BdFf073641991b44B283FD77be9D7c0F4' - -module.exports = { - misrepresentedTokens: true, - real: { - tvl: () => ({}), - staking: staking(veRWA, RWAToken), - } -} \ No newline at end of file diff --git a/projects/realperp/index.js b/projects/realperp/index.js deleted file mode 100644 index 9ac475a6123..00000000000 --- a/projects/realperp/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -const Vault = "0xEA5C751039e38e1d2C0b8983D4F024e3bc928bc4"; -const Staking = "0x10e878aDbCbD35e4356F5272Ae9537814d17A76c"; -const RAP = "0x9576ca6D15E7CcCe184fA7523085d21A554B1b52"; - -module.exports = { - manta: { - staking: staking(Staking, RAP), - tvl: gmxExports({ vault: Vault }), - }, -}; diff --git a/projects/realt.js b/projects/realt.js deleted file mode 100644 index faa866891c5..00000000000 --- a/projects/realt.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { get } = require('./helper/http') - -// Loop through all RealT tokens listed by realt.community API and accumulate tokenprice * supply, where supply is biggest of xdai or mainnet -// See https://api.realt.community/ for reference -async function xdaiTvl(api) { - let realt_tokens = await get('https://api.realtoken.community/v1/token') - - // Filter out deprecated contracts - realt_tokens = realt_tokens.filter(t => !t['fullName'].startsWith('OLD-')).filter(t => t.xDaiContract && +t.tokenPrice) - - const tokenSupplies_xdai = await api.multiCall({ calls: realt_tokens.map(t => t.xDaiContract), abi: 'erc20:totalSupply', }) - tokenSupplies_xdai.map((supply, i) => api.add(ADDRESSES.xdai.USDC, supply/1e18 * realt_tokens[i]['tokenPrice'] * 1e6 )) -} - -module.exports = { - methodology: `TVL for RealT consists of the accumulation of all properties prices, each being tokenSupply * tokenPrice where tokenPrice is given by community API`, - xdai: { - tvl: xdaiTvl - }, -} - - -/* -A token looks like below as returned by community API -{ - fullName "19191 Bradford Ave, Detroit, MI 48205" - shortName "19191 Bradford" - symbol "REALTOKEN-S-19191-BRADFORD-AVE-DETROIT-MI" - tokenPrice 54.04 - currency "USD" - ethereumContract "0x584967356bad1499c10a8695522983F2fB7d88F3" - xDaiContract "0x584967356bad1499c10a8695522983F2fB7d88F3" - lastUpdate - date "2021-10-17 20:00:01.000000" - timezone_type 3 - timezone "UTC" -} -*/ diff --git a/projects/realtmarkets/abi.json b/projects/realtmarkets/abi.json deleted file mode 100644 index ba59f4c1f4e..00000000000 --- a/projects/realtmarkets/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getReservesList": "address[]:getReservesList", - "getReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))" -} \ No newline at end of file diff --git a/projects/realtmarkets/index.js b/projects/realtmarkets/index.js deleted file mode 100644 index 4a82bff910c..00000000000 --- a/projects/realtmarkets/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { aaveExports, methodology, } = require('../helper/aave') - -module.exports={ - misrepresentedTokens: true, - methodology: methodology, - xdai: aaveExports('xdai', '0xae6933231Fb83257696E29B050cA6068D6E6Cc84', undefined, undefined, { - oracle: '0x1a88d967936a73326562d2310062eCE226Ed6664', - }), -} \ No newline at end of file diff --git a/projects/realtoken-rmm-v3/index.js b/projects/realtoken-rmm-v3/index.js deleted file mode 100644 index b4d039d5625..00000000000 --- a/projects/realtoken-rmm-v3/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - methodology: methodologies.lendingMarket, - xdai: aaveExports( - "xdai", - "0xC6c4b123e731819AC5f7F9E0fe3A118e9b1227Cd", - undefined, - ["0x11B45acC19656c6C52f93d8034912083AC7Dd756"], - // { oracle: "0xb4AE809Ad7CEB7e5B579dEdD0De7c213aD5AB516" } - ), -}; diff --git a/projects/realtyx/index.js b/projects/realtyx/index.js deleted file mode 100644 index 6a082da074a..00000000000 --- a/projects/realtyx/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require('../helper/http') - -const EVM_ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/; - -async function tvl(api) { - - const tokens = (await get('https://realtyx.co:2083/api/public/property/list?chain=' + api.chain)).filter(t => t.contract && EVM_ADDRESS_REGEX.test(t.contract) && t.nowPrice); - - const tokenSupplies = await api.multiCall({ calls: tokens.map((token) => ({ target: token.contract })), abi: 'erc20:totalSupply' }); - - tokenSupplies.forEach((supply, i) => { - - const token = tokens[i] - - const price = parseFloat(token.nowPrice); - - switch (api.chain) { - case "base": - api.add(ADDRESSES.base.USDC, supply * price * Math.pow(10, 6 - 18)) - break; - case "plume_mainnet": - api.add(ADDRESSES.plume_mainnet.pUSD, supply * price * Math.pow(10, 6 - 18)) - break; - default: - break; - } - - }) - -} - - -module.exports = { - methodology: `RealtyX’s TVL is calculated by aggregating the price of all tokenized real-world properties on the platform. For each property, the value is determined by tokenSupply × tokenPrice, where tokenPrice is provided by tokenAPI.`, - base: { tvl }, - plume_mainnet: { tvl }, -} diff --git a/projects/reaper.farm/index.js b/projects/reaper.farm/index.js deleted file mode 100644 index 9200ab86988..00000000000 --- a/projects/reaper.farm/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const REAPER_API = "https://2ch9hbg8hh.execute-api.us-east-1.amazonaws.com/dev/api/vaults/"; -const { getConfig } = require('../helper/cache'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -module.exports = { - hallmarks: [ - [1659441956, "$1.7m Exploit"], - ] -} - -const chains = ['optimism', 'arbitrum', 'fantom', 'bsc'] - -chains.forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const hexId = '0x' + api.chainId.toString(16) - const { data } = await getConfig('reaper/' + api.chain, REAPER_API + hexId) - const vaults = Object.values(data).map(i => i.address).filter(i => !['0x85A21D07a3DeEfe58EcD841198D7f774e6444654'].includes(i)) - await api.erc4626Sum({ calls: vaults, permitFailure: true }) - return sumTokens2({ api, resolveLP: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/reax-one-dex/index.js b/projects/reax-one-dex/index.js deleted file mode 100644 index cc5f83f17eb..00000000000 --- a/projects/reax-one-dex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -module.exports = { - mantle: { - tvl: onChainTvl('0x1AA7f1f5b51fe22478e683466232B5C8fc49407f', 10790, { - blacklistedTokens: [ - '0xf7dfe223e19701a514e78f3ce7ba98f2c5fbb5b2', - '0xa84bdecd44e6cee1c588a3c97fcc4482831fde05', - '0x62959ad021402f48d0d8067bc5c4c03f63fceaa4', - '0x8348b81b9ed72f29e52027c349f30703b42c0110' - ] - }), - }, - deadFrom: '2024-10-08', -} diff --git a/projects/reax-one-lending/index.js b/projects/reax-one-lending/index.js deleted file mode 100644 index 9cc66646380..00000000000 --- a/projects/reax-one-lending/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { aaveV2Export } = require('../helper/aave.js'); - -module.exports = { - deadFrom: '2024-10-08', - mantle: aaveV2Export('0x4bbea708f4e48eb0bb15e0041611d27c3c8638cf', { abis: { - "getReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))" - } }) -} diff --git a/projects/reax-one-synth/index.js b/projects/reax-one-synth/index.js deleted file mode 100644 index e57b670374d..00000000000 --- a/projects/reax-one-synth/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - deadFrom: '2024-10-08', - mantle: { - tvl: sumTokensExport({ - owner: '0x78B2fa94A94bF3E96fcF9CE965bed55bE49FA9E7', - tokens: [ - ADDRESSES.mantle.WETH, - ADDRESSES.mantle.USDT, - '0xCAbAE6f6Ea1ecaB08Ad02fE02ce9A44F09aebfA2', - ADDRESSES.mantle.WMNT, - ADDRESSES.mantle.USDC - - ] - }), - } -} diff --git a/projects/rebalance/index.js b/projects/rebalance/index.js deleted file mode 100644 index e41baa87cf7..00000000000 --- a/projects/rebalance/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const config = { - arbitrum: [ - '0x2469c01daf31b68603Bd57E2FFf75E548223EA17', // rUSDT - '0xff76d3942FeFc1FBD4577D812AB0fb453499a6a7', // rUSDC - '0x0d8A44C8D028914a87ea465150fC3C093b3a80d3', // rUSDC.e - '0x4Df2819f3c8f0e42E207Cc185Bea35BDe2090eCd', // rWETH - '0x0d4AE20e4Aba5fB630bD83f089Ee62CCe904da8f', // rDAI - '0x6A7F122d54925A5D16937e140baB42ff8C649fe7', // rFRAX - ], - bsc: [ - '0xf96e2F8a47F0d274c4ce5Daaf82636B1E6AC3C66', // rUSDT - '0xE6bFb5cbF6a3f3717C703a033251C34b91877a08', // rUSDC - ], - base: [ - '0x5c8340B18DC1cA7c6894BD493b7A2717AE1A5BAa', // rUSDC - ] -}; - -const abi = "function getDepositBalance(address user, address vault) view returns (uint256 balance)"; - -module.exports = { - methodology: "TVL displays the total amount of assets stored in the REBALANCE vault contracts.", - start: '2024-04-03', - hallmarks: [[1712143874, "Profitable vaults deployment"]], -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl: (api) => tvl(api, config[chain]) }; -}); - -const tvl = async (api, vaults) => { - const [providers, assets] = await Promise.all([ - api.multiCall({ calls: vaults, abi: "address:activeProvider" }), - api.multiCall({ calls: vaults, abi: "address:asset" }), - ]); - - const balances = await api.multiCall({ calls: vaults.map((vault, i) => ({ target: providers[i], params: [vault, vault] })), abi }) - api.add(assets, balances) -}; diff --git a/projects/redacted/index.js b/projects/redacted/index.js deleted file mode 100644 index 58c73dfb672..00000000000 --- a/projects/redacted/index.js +++ /dev/null @@ -1,90 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, genericUnwrapCvx } = require('../helper/unwrapLPs') - -const treasuries = ["0xa52fd396891e7a74b641a2cb1a6999fcf56b077e", "0x086c98855df3c78c6b481b6e1d47bef42e9ac36b"] - -const cvxCRVStaking = '0x3Fe65692bfCD0e6CF84cB1E7d24108E434A7587e' -const CVX = ADDRESSES.ethereum.CVX -const cvxCRV = ADDRESSES.ethereum.cvxCRV -const FXS = ADDRESSES.ethereum.FXS -const veFXS = '0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0' -const CRV = ADDRESSES.ethereum.CRV -const veCRV = '0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2' -const sOHM = '0x04906695D6D12CF5459975d7C3C03356E4Ccd460' -const OHM = '0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5' -const AURA = '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF' -const AURALocker = '0x3Fa73f1E5d8A792C80F426fc8F84FBF7Ce9bBCAC' -const rlBTRFLY = '0x742B70151cd3Bc7ab598aAFF1d54B90c3ebC6027' -const BTRFLYV2 = '0xc55126051B22eBb829D00368f4B12Bde432de5Da' -const cvxCRVPool = '0x0392321e86F42C2F94FBb0c6853052487db521F0' - -const rlBTRFLYAbi = { - lockedSupply: "uint256:lockedSupply", -} - -async function tvl(api) { - const block = api.block - const balances = api.getBalances() - const tokens = [ - CVX, - cvxCRV, - FXS, - CRV, - AURA, - // BTRFLY/ETH Curve LP - '0x7483Dd57f6488b0e194A151C57Df6Ec85C00aCE9', - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.FRAX, - ] - - //Add tokens/curve LPs in wallet - await api.sumTokens({ owners: treasuries, tokens }) - - //Add UniswapV3 LPs - await sumTokens2({ api, owners: treasuries, resolveUniV3: true, }) - - //Add convex deposited curve LPs - await genericUnwrapCvx(balances, treasuries[0], cvxCRVPool, block) - - //This causes an error and not sure why - //await genericUnwrapCvx(balances, treasuries[0], cvxFXSPool, block, 'ethereum') - - //Add vlCVX as CVX - const [vlCVXBalance, vlAURABalance, cvxCRVStakedBalance, veFXSBalance, veCRVBalance, sOHMBalance] = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: [ - { target: ADDRESSES.ethereum.vlCVX, params: treasuries[0] }, - { target: AURALocker, params: treasuries[0] }, - { target: cvxCRVStaking, params: treasuries[0] }, - { target: veFXS, params: treasuries[0] }, - { target: veCRV, params: treasuries[0] }, - { target: sOHM, params: treasuries[1] }, - ] - }) - api.add(CVX, vlCVXBalance) - api.add(AURA, vlAURABalance) - api.add(cvxCRV, cvxCRVStakedBalance) - api.add(CRV, veCRVBalance) - api.add(OHM, sOHMBalance) - api.add(FXS, veFXSBalance / 4) - //Add vlAURA as AURA - //Add staked cvxCRV as cvxCRV - //Add veFXS as 1/4 FXS since locked for 4 years - //Add veCRV as 1 CRV since locked for 4 years - //Add sOHM as OHM since 1:1 -} - -async function staking(api) { - - //Adding locked BTRFLY - const lockedBTRFLY = await api.call({ abi: rlBTRFLYAbi.lockedSupply, target: rlBTRFLY, }) - api.add(BTRFLYV2, lockedBTRFLY) -} - -module.exports = { - methodology: "tvl = Treasury assets (bonding). staking = rlBTRFLY (locked tokens)", - ethereum: { - tvl, - staking - }, -} \ No newline at end of file diff --git a/projects/reddex/index.js b/projects/reddex/index.js deleted file mode 100644 index 32130520794..00000000000 --- a/projects/reddex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { uniTvlExports, nullAddress, sumTokensExport } = require('../helper/unknownTokens') - -const stakingPools = ["0x634579156A20C50d0c3525233b1C39AAF500F867", "0x43A1dc107BBb06dF266278056055AE7Fc5bd2817","0x5E8040e85D0E6363D798a43BEa939C026449946d"] -const stakingTokens = [ADDRESSES.rbn.LQDX, nullAddress] - -module.exports = uniTvlExports({ - ethereum: '0xBC7D212939FBe696e514226F3FAfA3697B96Bf59', - bsc: '0x6D642253B6fD96d9D155279b57B8039675E49D8e', - rbn: '0x262E06314Af8f4EEd70dbd8C7EFe2a5De686C142', -}, { staking: { rbn: [stakingPools, stakingTokens] } }) diff --git a/projects/redemption/index.js b/projects/redemption/index.js deleted file mode 100644 index 1b446aa614c..00000000000 --- a/projects/redemption/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - fantom: { - tvl: getUniTVL({ - factory: '0xa2dF50d1401afF182D19Bb41d76cf35953942c51', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/redemptionfi/index.js b/projects/redemptionfi/index.js deleted file mode 100644 index 6fa63f07aba..00000000000 --- a/projects/redemptionfi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -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/redstone-oracles/index.js b/projects/redstone-oracles/index.js deleted file mode 100644 index ff0f1917de3..00000000000 --- a/projects/redstone-oracles/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const RED_ETH = "0xc43c6bfeDA065fE2c4c11765Bf838789bd0BB5dE"; -const STRATEGY_MANAGER_ETH = "0x903a1FF023a35EFeD333ee9D6bF30629A098B9ed"; - -module.exports = { - timetravel: true, - ethereum: { - tvl: async () => ({}), - staking: sumTokensExport({ - owners: [STRATEGY_MANAGER_ETH], - tokens: [RED_ETH], - }), - }, -}; diff --git a/projects/redstone/index.js b/projects/redstone/index.js deleted file mode 100644 index ca0d58c1ec8..00000000000 --- a/projects/redstone/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xc473ca7E02af24c129c2eEf51F2aDf0411c1Df69", - "0xC7bCb0e8839a28A1cFadd1CF716de9016CdA51ae", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/reffinance.js b/projects/reffinance.js deleted file mode 100644 index 4e41da809ca..00000000000 --- a/projects/reffinance.js +++ /dev/null @@ -1,44 +0,0 @@ -const { default: BigNumber } = require('bignumber.js') -const { call, sumSingleBalance, } = require('./helper/chain/near') - - -const PROJECT_CONTRACT = 'v2.ref-finance.near' -const PROJECT_DCL_CONTRACT = 'dclv2.ref-labs.near' - -async function tvl() { - const balances = {} - let poolIndex = 0 - const numberOfPools = await call(PROJECT_CONTRACT, 'get_number_of_pools', {}) - const allDclPools = await call(PROJECT_DCL_CONTRACT, 'list_pools', {}); - allDclPools.forEach((dclPoolDetail) => { - const { token_x, token_y, total_order_x, total_order_y, total_x, total_y } = dclPoolDetail; - sumSingleBalance(balances, token_x, BigNumber(total_order_x).plus(total_x).toFixed()); - sumSingleBalance(balances, token_y, BigNumber(total_order_y).plus(total_y).toFixed()); - }) - do { - const pools = await call(PROJECT_CONTRACT, 'get_pools', { from_index: poolIndex, limit: 500 }) - - pools - .filter(({ shares_total_supply }) => +shares_total_supply > 0) // Token pair must have some liquidity - .map(({ token_account_ids, pool_kind, amounts }) => { - // if (!['SIMPLE_POOL', 'STABLE_SWAP', "RATED_SWAP"].includes(pool_kind)) throw new Error('Unknown pool kind.') - token_account_ids.forEach((token, index) => { - sumSingleBalance(balances, token, amounts[index]) - }) - }) - - poolIndex += 500 - } while (poolIndex < numberOfPools) - - return balances -} - - -module.exports = { - near: { - tvl, - }, - hallmarks: [ - [1666648800,"DCB withdrawn liquidity"] - ], -}; diff --git a/projects/reflexer/index.js b/projects/reflexer/index.js deleted file mode 100644 index 6765cd88cf6..00000000000 --- a/projects/reflexer/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -/*================================================== - Modules - ==================================================*/ - -const sdk = require("@defillama/sdk"); - -/*================================================== - TVL - ==================================================*/ - -async function tvl(timestamp, block) { - // WETH ERC20 contract - const weth = ADDRESSES.ethereum.WETH; - - // Contract holding all of the WETH balance in the system - const ethCollateralJoin = "0x2D3cD7b81c93f188F3CB8aD87c8Acc73d6226e3A"; - - const balance = ( - await sdk.api.erc20.balanceOf({ - target: weth, - owner: ethCollateralJoin, - block, - }) - ).output; - - return { [weth]: balance }; -} - -/*================================================== - Exports - ==================================================*/ - -module.exports = { - start: '2021-02-17', - ethereum: { tvl }, -}; diff --git a/projects/reform/index.js b/projects/reform/index.js deleted file mode 100644 index 8a59d884b9c..00000000000 --- a/projects/reform/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking('0x74ef3b69e8c475df8450eddda5dabd9b6dd17972', '0xea3eed8616877F5d3c4aEbf5A799F2e8D6DE9A5E'), - pool2: staking('0x74ef3b69e8c475df8450eddda5dabd9b6dd17972', '0xf4e14a7766a3316d6cefbaec614c714f2d4965d8') - } -} diff --git a/projects/rehold-v2/index.js b/projects/rehold-v2/index.js deleted file mode 100644 index 30a1825dd52..00000000000 --- a/projects/rehold-v2/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const VAULT_V2 = '0xde6b4964c4384bcdfa150a4a8be9865c5b91e29c'; -const config = { owner: VAULT_V2, fetchCoValentTokens: true, blacklistedTokens: ['0x594f9274e08ba6c5760bacfba795b1879af17255'], } -const tvl = sumTokensExport(config) - -module.exports = { - ethereum: { tvl }, - bsc: { tvl: sumTokensExport({ - owner: VAULT_V2, fetchCoValentTokens: true, - tokens: [ - ADDRESSES.bsc.USDT, // BSC-USD - ADDRESSES.bsc.ETH, //Bpeg ETH - ADDRESSES.bsc.BTCB, // btcb - ADDRESSES.bsc.USDC, // usdc - "0x570A5D26f7765Ecb712C0924E4De545B89fD43dF", // sol - "0x1Fa4a73a3F0133f0025378af00236f3aBDEE5D63", // near - "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE", // xrp - "0x1CE0c2827e2eF14D5C4f29a091d735A204794041", // shib - "0x111111111117dC0aa78b770fA6A738034120C302", // 1inch - "0x045c4324039dA91c52C55DF5D785385Aab073DcF", // bCFX - "0xbA2aE424d960c26247Dd6c32edC70B295c744C43", // doge - "0x4B0F1812e5Df2A09796481Ff14017e6005508003", // twt - "0xfb5B838b6cfEEdC2873aB27866079AC55363D37E", // floki - "0x0Eb3a705fc54725037CC9e008bDede697f62F335", // atom - "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD", // link - "0xCC42724C6683B7E57334c4E856f4c9965ED682bD", // matic - "0x56b6fB708fC5732DEC1Afc8D8556423A2EDcCbD6", // eos - ADDRESSES.bsc.BUSD, // busd - "0xBf5140A22578168FD562DCcF235E5D43A02ce9B1", // uni - "0xD41FDb03Ba84762dD66a0af1a6C8540FF1ba5dfb", // sfp - "0xAD29AbB318791D579433D831ed122aFeAf29dcfe", // ftm - "0xB0D502E938ed5f4df2E681fE6E419ff29631d62b", // stg - "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", // dot - ADDRESSES.bsc.WBNB, // wbnb - "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", // cake - "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", // dai - "0x715D400F88C167884bbCc41C5FeA407ed4D2f8A0", // axs - "0x031b41e504677879370e9DBcF937283A8691Fa7f", // fet - "0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", // ada - "0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153", // fil - ]}) }, - polygon: { tvl }, - avax: { tvl }, - arbitrum: { tvl }, - optimism: { tvl }, - base: { tvl }, - linea: { tvl }, - manta: { tvl: sumTokensExport({ ...config, fetchCoValentTokens: false, tokens: Object.values(ADDRESSES.manta) }) }, - - hallmarks: [ - [1688688480, "ReHold V2 Launch"], - [1689743327, "Ethereum Deployment"], - [1690898169, "Limit Orders Launch"], - [1698624000, "ReHold Swaps Launch"], - ], -}; diff --git a/projects/rehold/index.js b/projects/rehold/index.js deleted file mode 100644 index 7d022de74bd..00000000000 --- a/projects/rehold/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const vault = '0xd476ce848c61650e3051f7571f3ae437fe9a32e0' - -const tvl = sumTokensExport({ owner: vault, fetchCoValentTokens: true, }) - -module.exports = { - bsc: { tvl }, - polygon: { tvl }, - avax: { tvl }, - arbitrum: { tvl }, - optimism: { tvl }, - fantom: { tvl }, - - hallmarks: [ - [1688688480, "ReHold V2 Launch"], - [1689743327, "Ethereum Deployment"], - [1690898169, "Limit Orders Launch"], - [1698624000, "ReHold Swaps Launch"], - ], -} diff --git a/projects/relayChain/index.js b/projects/relayChain/index.js deleted file mode 100644 index 87eb6e7b6c3..00000000000 --- a/projects/relayChain/index.js +++ /dev/null @@ -1,183 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') - -const usdtEth = ADDRESSES.ethereum.USDT; -const daiEth = ADDRESSES.ethereum.DAI; -const wbtcEth = ADDRESSES.ethereum.WBTC; -const usdcEth = ADDRESSES.ethereum.USDC; -const wethEth = ADDRESSES.ethereum.WETH; -const xcasEth = "0x7659CE147D0e714454073a5dd7003544234b6Aa0"; -const trueUSDEth = ADDRESSES.ethereum.TUSD; -const zeroEth = "0xF0939011a9bb95c3B791f0cb546377Ed2693a574"; -const dxpEth="0x88aa4a6C5050b9A1b2Aa7e34D0582025cA6AB745"; - -const usdtBsc = ADDRESSES.bsc.USDT; -const daiBsc = "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3"; -const usdcBsc = ADDRESSES.bsc.USDC; -const busdBsc = ADDRESSES.bsc.BUSD; -const ethBsc = ADDRESSES.bsc.ETH; -const wbnbBsc = ADDRESSES.bsc.WBNB; - - -const daiAvax = ADDRESSES.avax.DAI; -const wavax = ADDRESSES.avax.WAVAX; -const wbtcAvax = ADDRESSES.avax.WBTC_e; -const usdcAvax = ADDRESSES.avax.USDC_e; -const usdtAvax = ADDRESSES.avax.USDT_e; - - - -const wHeco = ADDRESSES.heco.WHT; -const wbtcHeco = "0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa"; -const ethHeco = "0x64FF637fB478863B7468bc97D30a5bF3A428a1fD"; -const usdcHeco = ADDRESSES.heco.USDC_HECO; -const daiHeco = ADDRESSES.heco.DAI_HECO; -const husdHeco = "0x0298c2b32eaE4da002a15f36fdf7615BEa3DA047"; - - - -const miMatic = "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1"; -const wmatic = ADDRESSES.polygon.WMATIC_2; -const wethMatic = ADDRESSES.polygon.WETH_1; -const wbtcMatic = ADDRESSES.polygon.WBTC; -const usdcMatic = ADDRESSES.polygon.USDC; -const daiMatic = ADDRESSES.polygon.DAI; -const usdtMatic = ADDRESSES.polygon.USDT; - - -const usdtMoonriver = ADDRESSES.moonriver.USDT; -const daiMoonriver = "0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844"; -const usdcMoonriver = ADDRESSES.moonriver.USDC; -const wbtcMoonriver = "0xE6a991Ffa8CfE62B0bf6BF72959A3d4f11B2E0f5"; -const wethMoonriver = "0x3Ca3fEFA944753b43c751336A5dF531bDD6598B6"; -const wMOVR = "0x98878B06940aE243284CA214f92Bb71a2b032B8A"; - - -const usdtFantom = "0x1B27A9dE6a775F98aaA5B90B62a4e2A0B84DbDd9"; -const daiFantom = ADDRESSES.fantom.DAI; -const usdcFantom = ADDRESSES.fantom.USDC; -const wFantom = ADDRESSES.fantom.WFTM; -const btcFantom = ADDRESSES.fantom.WBTC; - - -const usdtHarmony = "0x224e64ec1bdce3870a6a6c777edd450454068fec"; -const daiHarmony = "0xEf977d2f931C1978Db5F6747666fa1eACB0d0339"; -const usdcHarmony = "0x985458e523db3d53125813ed68c274899e9dfab4"; -const busdHarmony = "0xe176ebe47d621b984a73036b9da5d834411ef734"; -const woneOne = ADDRESSES.harmony.WONE; - -const usdcMetis = ADDRESSES.metis.m_USDC; -const usdtMetis = ADDRESSES.metis.m_USDT; -const maticMetis = ADDRESSES.metis.MATIC; -const mimMetis = "0x44Dd7C98885cD3086E723B8554a90c9cC4089C4C"; -const ftmMetis = ADDRESSES.oasis.USDT -const metis = ADDRESSES.metis.Metis; -const mdaiMetis="0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0"; - - - -const usdtCronos = ADDRESSES.cronos.USDT; -const daiCronos = "0xF2001B145b43032AAF5Ee2884e456CCd805F677D"; -const usdcCronos = ADDRESSES.cronos.USDC; -const wbtcCronos = ADDRESSES.cronos.WBTC; -const wethCronos = "0xe44fd7fcb2b1581822d0c862b68222998a0c299a"; -const busdCronos = ADDRESSES.oasis.USDT; -const wCronos = ADDRESSES.cronos.WCRO_1; - - - - - -const usdtIoTex = ADDRESSES.iotex.ioUSDT; -const daiIoTex = ADDRESSES.iotex.ioDAI; -const usdcIoTex = ADDRESSES.iotex.ioUSDC; -const busdIoTex = ADDRESSES.iotex.ioBUSD; -const wIotex = ADDRESSES.iotex.WIOTX; - - -const usdtOptimism = ADDRESSES.optimism.USDT; -const daiOptimism = ADDRESSES.optimism.DAI; -const wbtcOptimism = ADDRESSES.optimism.WBTC; - -const wbtcArbitrum = ADDRESSES.arbitrum.WBTC; -const usdtArbitrum = ADDRESSES.arbitrum.USDT; -const daiArbitrum = ADDRESSES.optimism.DAI; - - - -const ethAddr = "0xF687e1481d85F8b9F4D1f4D4C15348CeF8E5a762"; -const eth1Addr = "0xc4DC891d5B5171f789829D6050D5eB64c447e0FE"; -const bscAddr = "0x3Ea1f65cf49297eA6d265291a2b09D0f2AE649D6"; -const avaxAddr = "0x43BEddB3199F2a635C85FfC4f1af228198D268Ab"; -const hecoAddr = "0xA21D529B86ef6B71C0caaE4669726755876a0Dc0"; -const polyAddr = "0x3Ea1f65cf49297eA6d265291a2b09D0f2AE649D6"; -const moonriverAddr = "0x3e3f619940d9a20DbcF3F7c0c7958f4A67Fac688"; -const ftmAddr = "0x502B4683D213C68507fc6d19417df0bB7995b23B"; -const sdnAddr = "0x074412fae37D4C3de9964980352faD07aacDd674"; -const iotexAddr = "0xEfB3E6a5cCe777AE472D1255D712407fd22A9547"; -const harmonyAddr = "0xa0026a3047bDf539f6Bf405aF576BE2038faC5A8"; -const metisAddr = "0x640b3408EaC140297136677aC0cFF13a8c82C5Ed"; -const cronosAddr = "0x3f1B059d94551c9300176ceB55FD23aF0e4E2E29"; -const BRIDGE_ADDRESS = "0x9A8cF02F3e56c664Ce75E395D0E4F3dC3DafE138"; - -const config = { - ethereum: { - tokens: [usdtEth, daiEth, wbtcEth, usdcEth, wethEth, xcasEth, trueUSDEth, zeroEth,dxpEth, nullAddress], - owners: [ethAddr, eth1Addr, BRIDGE_ADDRESS] - }, - bsc: { - tokens: [usdtBsc, daiBsc, usdcBsc, busdBsc, ethBsc, wbnbBsc], - owners: [bscAddr, BRIDGE_ADDRESS] - }, - avax: { - tokens: [daiAvax, wavax, wbtcAvax, usdcAvax, usdtAvax], - owners: [avaxAddr, BRIDGE_ADDRESS] - }, - heco: { - tokens: [wHeco, wbtcHeco, ethHeco, usdcHeco, daiHeco, husdHeco], - owners: [hecoAddr, BRIDGE_ADDRESS] - }, - polygon: { - tokens: [miMatic, wmatic, wethMatic, wbtcMatic, usdcMatic, daiMatic, usdtMatic], - owners: [polyAddr, BRIDGE_ADDRESS] - }, - fantom: { - tokens: [usdcFantom, usdtFantom, daiFantom, wFantom, btcFantom], - owners: [ftmAddr, BRIDGE_ADDRESS] - }, - harmony: { - tokens: [usdtHarmony, daiHarmony, usdcHarmony, busdHarmony, woneOne], - owners: [harmonyAddr, BRIDGE_ADDRESS] - }, - metis: { - tokens: [usdcMetis, usdtMetis, metis, maticMetis, ftmMetis, mimMetis,mdaiMetis], - owners: [metisAddr, BRIDGE_ADDRESS] - }, - cronos: { - tokens: [usdtCronos, daiCronos, usdcCronos, wbtcCronos, wethCronos, busdCronos, wCronos], - owners: [cronosAddr, BRIDGE_ADDRESS] - }, - iotex: { - tokens: [usdtIoTex, daiIoTex, usdcIoTex, busdIoTex, wIotex], - owners: [iotexAddr, BRIDGE_ADDRESS] - }, - moonriver: { - tokens: [usdtMoonriver, daiMoonriver, usdcMoonriver, wbtcMoonriver, wethMoonriver, wMOVR], - owners: [moonriverAddr, BRIDGE_ADDRESS] - }, - optimism: { - tokens: [usdtOptimism,daiOptimism,wbtcOptimism], - owners: [BRIDGE_ADDRESS] - }, - arbitrum: { - tokens: [wbtcArbitrum,usdtArbitrum,daiArbitrum], - owners: [BRIDGE_ADDRESS] - } -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport(config[chain]) - } -}) - diff --git a/projects/relend/index.js b/projects/relend/index.js deleted file mode 100644 index 3f72a2c0ba3..00000000000 --- a/projects/relend/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -// we config vault addresses, we don't use vault owner addresses like other curators -// because RelendNetwork co-curator with B Protocol on some vaults -// these vault owners are B Protocol addresses, so we can't use the vault owner configs -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Relend Network.', - blockchains: { - ethereum: { - morpho: [ - '0x0F359FD18BDa75e9c49bC027E7da59a4b01BF32a', - '0xB9C9158aB81f90996cAD891fFbAdfBaad733c8C6', - ], - }, - base: { - morpho: [ - '0x70F796946eD919E4Bc6cD506F8dACC45E4539771', - ], - }, - swellchain: { - euler: [ - '0xc5976e0356f0A3Ce8307fF08C88bB05933F88761', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/remora-markets/index.js b/projects/remora-markets/index.js deleted file mode 100644 index 73ff6120812..00000000000 --- a/projects/remora-markets/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { getTokenSupplies, sumTokens2 } = require('../helper/solana') - -const data = [ - { - "name": "Circle Internet Group rStock", - "address": "5fKr9joRHpioriGmMgRVFdmZge8EVUTbrWyxDVdSrcuG", - "issuer": "4A3psCthh7VBouNK24QSqhXmgZQA7BB9ReS8qruD8ZnF" - }, - { - "name": "MicroStrategy Inc rStock", - "address": "B8GKqTDGYc7F6udTHjYeazZ4dFCRkrwK2mBQNS4igqTv", - "issuer": "CWcebtehmM2ijRXdhv37PkLhZTuteWp785kwxdB5QF2a" - }, - { - "name": "NVIDIA Corporation rStock", - "address": "ALTP6gug9wv5mFtx2tSU1YYZ1NrEc2chDdMPoJA8f8pu", - "issuer": "4WUezna5cvS7PFUMvWB7Za8eLVCKk5xBNTJVfjkoZrfk" - }, - { - "name": "S&P500 rStock", - "address": "AVw2QGVkXJPRPRjLAceXVoLqU5DVtJ53mdgMXp14yGit", - "issuer": "D6Cx5zSd4q5fmRsrpWUeGNVyTBK7ZVqe1CbHEiKZiFSz" - }, - { - "name": "Tesla, Inc. rStock", - "address": "FJug3z58gssSTDhVNkTse5fP8GRZzuidf9SRtfB2RhDe", - "issuer": "8y4fB4ERT5yJ4jzdAeuKupeLeqBJ9YaTrEn9yZyNpDiz" - }, -]; - -async function tvl(api) { - const tokens = data.map(stock => stock.address).filter(Boolean); - const supplies = await getTokenSupplies(tokens); - const issuers = await sumTokens2({ tokenAccounts: data.map(stock => stock.issuer)}) - api.add(tokens, tokens.map((token) => supplies[token] ? supplies[token] - issuers[`solana:${token}`] : '0')); -} - -module.exports = { - solana: { tvl } -} \ No newline at end of file diff --git a/projects/ren/index.js b/projects/ren/index.js deleted file mode 100644 index e284b2bfd9e..00000000000 --- a/projects/ren/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -module.exports = { - solana: { tvl: () => ({}), }, - ethereum: { tvl: () => ({}), }, - avax: { tvl: () => ({}), }, - bsc: { tvl: () => ({}), }, - fantom: { tvl: () => ({}), }, - polygon: { tvl: () => ({}), }, - arbitrum: { tvl: () => ({}), }, - kava: { tvl: () => ({}), }, - optimism: { tvl: () => ({}), }, -}; - -module.exports.deadFrom = '2022-11-01' \ No newline at end of file diff --git a/projects/renec-lend/index.js b/projects/renec-lend/index.js deleted file mode 100644 index 0258572a8bd..00000000000 --- a/projects/renec-lend/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const { sumTokens2, decodeAccount, getMultipleAccounts, getConnection, } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); - -const RENEC_LEND_SOLANA_PROGRAM_ID = new PublicKey("9L193MV4yakKcgNT2tN4Kvf1ypn9c1sVMvsRn1Amw2Au"); -const RENEC_LEND_RENEC_PROGRAM_ID = new PublicKey("AqR1WSUwNeVsz66ayH2J8iTyiGMgouRwPqzzMaxx49ba"); - -const getProgram = (api) => api.chain === 'solana' ? RENEC_LEND_SOLANA_PROGRAM_ID : RENEC_LEND_RENEC_PROGRAM_ID; - -async function borrowed(api) { - const connection = await getConnection(api.chain); - const programId = getProgram(api); - const reserves = await connection.getProgramAccounts( - programId, - { - filters: [{ - dataSize: 619, - }], - } - ); - const reserveAddresses = reserves.map((account) => account.pubkey.toBase58()); - - const infos = await getMultipleAccounts(reserveAddresses, { api }) - infos.forEach(i => { - const decoded = decodeAccount('reserve', i); - if (decoded === null) return; - const { info: { liquidity } } = decoded; - const amount = liquidity.borrowedAmountWads.toString() / 1e18 - api.add(liquidity.mintPubkey.toString(), amount) - }) -} - -async function tvl(api) { - const connection = await getConnection(api.chain); - const programId = getProgram(api); - - const marketAccounts = await connection.getProgramAccounts( - programId, - { - filters: [{ - dataSize: 290, - }], - } - ); - const marketAuthorities = marketAccounts.map((account) => PublicKey.findProgramAddressSync([account.pubkey.toBytes()], programId)[0]); - return sumTokens2({ owners: marketAuthorities, api }); -} - -module.exports = { - timetravel: false, - solana: { tvl, borrowed, }, - renec: { tvl, borrowed, }, - methodology: - "TVL consists of deposits made to the protocol and like other lending protocols, borrowed tokens are not counted. Coingecko is used to price tokens.", -}; - diff --git a/projects/renegade-fi/index.js b/projects/renegade-fi/index.js deleted file mode 100644 index c28523503fe..00000000000 --- a/projects/renegade-fi/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") - -const config = { - arbitrum: { owners: ['0x30bD8eAb29181F790D7e495786d4B96d7AfDC518']}, - base: { owners: ['0xb4a96068577141749CC8859f586fE29016C935dB']}, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ ...config[chain], fetchCoValentTokens: true}) - } -}) \ No newline at end of file diff --git a/projects/renzo/index.js b/projects/renzo/index.js deleted file mode 100644 index f1ddefc4a7d..00000000000 --- a/projects/renzo/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/solana"); -const L1_EZ_ETH_ADDRESS = ADDRESSES.linea.rzETH; -const L2_EZ_ETH_ADDRESS = ADDRESSES.blast.ezETH; -const L1_LOCKBOX_ADDRESS = "0xC8140dA31E6bCa19b287cC35531c2212763C2059"; -const L1_PZ_ETH_ADDRESS = "0x8c9532a60E0E7C6BbD2B2c1303F63aCE1c3E9811"; -const SEI_EZ_ETH_ADDRESS = "0x6DCfbF4729890043DFd34A93A2694E5303BA2703"; - -async function L2Tvl(api) { - const targetAddress = api.chain === "sei" ? SEI_EZ_ETH_ADDRESS : L2_EZ_ETH_ADDRESS; - const supply = await api.call({ target: targetAddress, abi: "erc20:totalSupply" }); - if (api.chain === "sei") { - return { [`ethereum:${L1_EZ_ETH_ADDRESS}`]: supply }; - } - return { [`${api.chain}:${targetAddress}`]: supply }; -} - -async function ethTvl(api) { - const totalTvl = await api.call({ target: L1_EZ_ETH_ADDRESS, abi: "erc20:totalSupply" }); - const lockBoxBalance = await api.call({ target: L1_EZ_ETH_ADDRESS, abi: "erc20:balanceOf", params: [L1_LOCKBOX_ADDRESS] }) - const pzEthBalance = await api.call({target: L1_PZ_ETH_ADDRESS, abi: "erc20:totalSupply"}); - api.add(L1_EZ_ETH_ADDRESS, totalTvl - lockBoxBalance); - api.add(L1_PZ_ETH_ADDRESS, pzEthBalance); -} - -async function solanaTvl() { - return sumTokens2( - { - tokenAccounts: [ - "9VBi7unB9Sz5eBNUdvQH2xzUENXvNsaiEkP9p2Cabvsy", // Token account for ezSOL - "3fJSKVEvVVet79Gi96LtYAjVewa1TNvT49YhhYvBW8Ep", // Token account for bzSOL - "5DYQrkNXLxbCpTiRzHpoEeDx398gaJKNZBzuy7u3jAAb", // Token account for ezJTO - ] - } - ) -} - -const chains = ["mode", "blast", "bsc", "linea", "arbitrum", "base", "optimism", "fraxtal","zircuit","sei" ] - -module.exports = { - doublecounted: true, - ethereum: { - tvl: ethTvl - }, - solana: { - tvl: solanaTvl - } -} - -chains.forEach(chain => { - module.exports[chain] = { tvl: L2Tvl } -}) - diff --git a/projects/repl/abi.json b/projects/repl/abi.json deleted file mode 100644 index d0237f869eb..00000000000 --- a/projects/repl/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "getPagedAgents": "function getPagedAgents(uint offset, uint count) view returns ((address agent, address owner, uint64 originOwnerID, uint64 curOwnerID, uint64 curBeneficiary, uint64 actorID, uint64 agentID, uint256 targetPledge, uint256 safePledge, uint256 lastSafePledgeUpdateTime, uint256 recoveredPledge, uint256 agentContractBalance, uint256 minerBalance, uint8 status, (bytes val, bool neg) availableBalance, uint256 reservedBalance, uint256 passiveMinting, bool isValid)[])", - "getTVLComponents": "function getTVLComponents() view returns ((uint256))", - "slot0": "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)", - "totalSupply": "uint256:totalSupply", - "PFILPerToken": "uint256:PFILPerToken", - "getAllAgentsCount": "function getAllAgentsCount() view returns ((uint256))", - "getTvlTokenAmount": "function getTvlTokenAmount() view returns ((uint256))" -} diff --git a/projects/repl/index.js b/projects/repl/index.js deleted file mode 100644 index 423f527fccf..00000000000 --- a/projects/repl/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const { nullAddress } = require('../helper/tokenMapping'); -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const REPL_HELPER_CONTRACT = '0x65846aECBF23385F76B73ef1EDD1ebdFf7Ac258D'; - -const ATH_HELPER_CONTRACT = '0x2032F104069CC3023C0A0b6874F8A5fB21A5E511'; -const ATH_TOKEN_CONTRACT_ARBITRUM = '0xc87b37a581ec3257b734886d9d3a581f5a9d056c'; - -const FLT_HELPER_CONTRACT = '0x1880cDDAa54a2f33628D22a3548427886818Aaa5'; - -const SWAN_HELPER_CONTRACT = '0x12B7859BF6FaA171361393CF71dd7c0F5171855A'; - -const getAllValidAgents = async (api) => { - const total = await api.call({ abi: abi.getAllAgentsCount, target: REPL_HELPER_CONTRACT }) - const COUNT = 30 - const loop = Math.ceil(total / COUNT) - const query = new Array(loop) - .fill(0) - .map((item, i) => api.call({ abi: abi.getPagedAgents, target: REPL_HELPER_CONTRACT, params: [i * COUNT, COUNT] })) - const lists = (await Promise.all(query)).reduce( - (pre, cur) => [...pre, ...cur], - [] - ) - return lists.filter(agent => !!agent.isValid) -} - -// Total Assets of Miners pledged to the protocol -const getMinerAssets = (agents) => { - return agents.reduce((sum, agent) => sum + +agent.minerBalance, 0); -}; - -module.exports = { - filecoin: { - tvl: async (api) => { - const [tvlComponents, activeAgents] = await Promise.all([ - api.call({ abi: abi.getTVLComponents, target: REPL_HELPER_CONTRACT }), - getAllValidAgents(api), - ]); - - const minerAssets = getMinerAssets(activeAgents); - api.add(nullAddress, minerAssets); - api.add(nullAddress, tvlComponents); - }, - }, - arbitrum: { - tvl: async (api) => { - const totalSupply = await api.call({ abi: abi.getTvlTokenAmount, target: ATH_HELPER_CONTRACT }) - api.add(ATH_TOKEN_CONTRACT_ARBITRUM, totalSupply) - } - }, - fluence: { - tvl: async (api) => { - const totalSupply = await api.call({ abi: abi.getTvlTokenAmount, target: FLT_HELPER_CONTRACT }) - api.addGasToken(totalSupply) - return sumTokens2({ api }) - } - }, - swan: { - tvl: async (api) => { - const totalSupply = await api.call({ abi: abi.getTvlTokenAmount, target: SWAN_HELPER_CONTRACT }) - api.addGasToken(totalSupply) - return sumTokens2({ api }) - } - } -}; - diff --git a/projects/republic/index.js b/projects/republic/index.js deleted file mode 100644 index c1268c3aab4..00000000000 --- a/projects/republic/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const NOTE = '0x7c6a937943F135283A2561938DE2200994a8f7a7' - -const tvl = async (api) => { - const supply = await api.call({ target: NOTE, abi: 'uint256:contractBalanceOf' }) - api.add(NOTE, supply) -} - -module.exports = { - avax: { tvl } -} \ No newline at end of file diff --git a/projects/reserve/helper.js b/projects/reserve/helper.js deleted file mode 100644 index 788c55d6dac..00000000000 --- a/projects/reserve/helper.js +++ /dev/null @@ -1,253 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); - -const stargateLpStakingAbi = { - userInfo: - "function userInfo( uint256 ,address ) external view returns (uint256 amount, uint256 rewardDebt)", -}; - -const stargatePoolAbi = { - amountLPtoLD: - "function amountLPtoLD(uint256 _amountLP) external view returns (uint256)", - token: "function token() external view returns (address)", -}; - -const getStargateLpValues = async ( - api, - stargateLpWrappers, - processedWrappers -) => { - const stargateLpPools = await api.multiCall({ - abi: "address:underlying", - calls: stargateLpWrappers, - }); - - const stargateStakingContracts = await api.multiCall({ - abi: "address:stakingContract", - calls: stargateLpWrappers, - }); - - const stargatePoolIds = await api.multiCall({ - abi: "uint256:poolId", - calls: stargateLpWrappers, - }); - - const stargateLpAmounts = ( - await api.multiCall({ - calls: stargateLpWrappers.map((wrapperAddress, i) => ({ - target: stargateStakingContracts[i], - params: [stargatePoolIds[i], wrapperAddress], - })), - abi: stargateLpStakingAbi.userInfo, - }) - ).map(([amount]) => amount); - - // find the amount of assets convert from lpAmount - const convertedAmounts = await api.multiCall({ - calls: stargateLpPools.map((lpPool, i) => ({ - target: lpPool, - params: [stargateLpAmounts[i]], - })), - abi: stargatePoolAbi.amountLPtoLD, - }); - - let baseStargateAssets = await api.multiCall({ - calls: stargateLpPools, - abi: stargatePoolAbi.token, - }); - - baseStargateAssets.forEach((asset, i) => { - if (processedWrappers.has(stargateLpWrappers[i])) return; - api.add(asset, convertedAmounts[i]); - // Mark this wrapper as processed - processedWrappers.add(stargateLpWrappers[i]); - }); -}; - -const getCompoundUsdcValues = async ( - api, - cUsdcV3Wrappers, - processedWrappers -) => { - const comets = await api.multiCall({ - abi: "address:underlyingComet", - calls: cUsdcV3Wrappers, - }); - - const baseTokens = await api.multiCall({ - abi: "address:baseToken", - calls: comets, - }); - - const wrapperBalances = await api.multiCall({ - abi: "erc20:balanceOf", - calls: comets.map((x, i) => ({ target: x, params: [cUsdcV3Wrappers[i]] })), - }); - - cUsdcV3Wrappers.forEach((wrapper, i) => { - if (!processedWrappers.has(wrapper)) { - api.add(baseTokens[i], wrapperBalances[i]); - processedWrappers.add(cUsdcV3Wrappers[i]); - } - }); -}; - -const _getLogs = async (api, config) => { - const resLog = ( - await Promise.all( - config.deployerAddresses.map((deployerAddress) => - getLogs({ - api, - target: deployerAddress, - topic: "RTokenCreated(address,address,address,address,string)", - fromBlock: config.fromBlock, - eventAbi: - "event RTokenCreated(address indexed main, address indexed rToken, address stRSR, address indexed owner, string version)", - onlyArgs: true, - }) - ) - ) - ).flat(); - return resLog; -}; - -const unwrapCreamTokens = async (api, tokensAndOwners) => { - const [balanceOfTokens, exchangeRates, underlyingTokens] = await Promise.all([ - api.multiCall({ - calls: tokensAndOwners.map(t => ({ - target: t[0], - params: t[1] - })), - abi: 'erc20:balanceOf', - }), - api.multiCall({ - calls: tokensAndOwners.map(t => ({ - target: t[0], - })), - abi: "uint256:exchangeRateStored", - }), - api.multiCall({ - calls: tokensAndOwners.map(t => ({ - target: t[0], - })), - abi: "address:underlying", - }) - ]) - balanceOfTokens.forEach((balanceCall, i) => { - api.add(underlyingTokens[i], balanceCall * exchangeRates[i] / 1e18) - }) -} - -const genericUnwrapCvxDeposit = async (api, tokensAndOwners) => { - if (!tokensAndOwners.length) return; - const tokens = [...new Set(tokensAndOwners.map((t) => t[0]))]; - const uTokens = await api.multiCall({ abi: "address:curveToken", calls: tokens, permitFailure: true }); - const tokenMapping = {}; - tokens.forEach((token, i) => { - if (uTokens[i]) { - tokenMapping[token] = uTokens[i]; - } - }); - const validTokensAndOwners = tokensAndOwners.filter((t) => tokenMapping[t[0]]); - const balances = await api.multiCall({ - calls: validTokensAndOwners.map((t) => ({ - target: t[0], - params: t[1], - })), - abi: "erc20:balanceOf", - }); - balances.forEach((balance, i) => { - const token = validTokensAndOwners[i][0]; - api.add(tokenMapping[token], balance); - }); -} - -const _getFolioLogs = async (api, folioDeployers) => { - const allLogs = await Promise.all( - folioDeployers.flatMap((deployer) => [ - getLogs({ - api, - target: deployer.address, - eventAbi: "event FolioDeployed(address indexed folioOwner, address indexed folio, address folioAdmin)", - fromBlock: deployer.startBlock, - onlyArgs: true, - }).catch(() => []), - getLogs({ - api, - target: deployer.address, - eventAbi: "event GovernedFolioDeployed(address indexed stToken, address indexed folio, address ownerGovernor, address ownerTimelock, address tradingGovernor, address tradingTimelock)", - fromBlock: deployer.startBlock, - onlyArgs: true, - }).catch(() => []) - ]) - ); - - const folios = allLogs.flat().map(log => log.folio).filter(Boolean); - return [...new Set(folios)]; -}; - -const getFolioTotalAssets = async (api, folios) => { - if (!folios.length) return; - - const totalAssetsResults = await api.multiCall({ - abi: "function totalAssets() view returns (address[] _assets, uint256[] _amounts)", - calls: folios, - permitFailure: true, - }); - - totalAssetsResults.forEach((result) => { - if (!result) return; - const [assets, amounts] = result; - assets.forEach((asset, i) => { - api.add(asset, amounts[i]); - }); - }); -}; - -const _getStakingTokenLogs = async (api, governanceDeployers) => { - if (!governanceDeployers) return []; - - const allLogs = await Promise.all( - governanceDeployers.map((deployer) => - getLogs({ - api, - target: deployer.address, - eventAbi: "event DeployedGovernedStakingToken(address indexed underlying, address indexed stToken, address governor, address timelock)", - fromBlock: deployer.startBlock, - onlyArgs: true, - }).catch(() => []) - ) - ); - - return allLogs.flat(); -}; - -const getStakingTokenAssets = async (api, stakingTokenLogs) => { - if (!stakingTokenLogs.length) return; - - const stTokens = stakingTokenLogs.map(log => log.stToken); - const underlyings = stakingTokenLogs.map(log => log.underlying); - - const totalAssets = await api.multiCall({ - abi: "uint256:totalAssets", - calls: stTokens, - permitFailure: true, - }); - - totalAssets.forEach((assets, i) => { - if (assets) { - api.add(underlyings[i], assets); - } - }); -}; - -module.exports = { - getStargateLpValues, - getCompoundUsdcValues, - _getLogs, - unwrapCreamTokens, - genericUnwrapCvxDeposit, - _getFolioLogs, - getFolioTotalAssets, - _getStakingTokenLogs, - getStakingTokenAssets, -}; diff --git a/projects/reserve/index.js b/projects/reserve/index.js deleted file mode 100644 index eaeb8441f67..00000000000 --- a/projects/reserve/index.js +++ /dev/null @@ -1,277 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { - sumTokens2, -} = require("../helper/unwrapLPs.js"); -const { - getStargateLpValues, - getCompoundUsdcValues, - _getLogs, - unwrapCreamTokens, - genericUnwrapCvxDeposit, - _getFolioLogs, - getFolioTotalAssets, - _getStakingTokenLogs, - getStakingTokenAssets, -} = require("./helper"); - -const chainConfigs = { - ethereum: { - deployerAddresses: [ - "0xFd6CC4F251eaE6d02f9F7B41D1e80464D3d2F377", - "0x5c46b718Cd79F2BBA6869A3BeC13401b9a4B69bB", - "0x1bd20253c49515d348dad1af70ff2c0473fea358", - "0x15480f5b5ed98a94e1d36b52dd20e9a35453a38e", - "0x43587CAA7dE69C3c2aD0fb73D4C9da67A8E35b0b", - "0x2204ec97d31e2c9ee62ead9e6e2d5f7712d3f1bf" - ], - rsr: "0x320623b8E4fF03373931769A31Fc52A4E78B5d70", - vault: "0xaedcfcdd80573c2a312d15d6bb9d921a01e4fb0f", - fromBlock: 16680995, - erc4626Wrapped: ["0xaa91d24c2f7dbb6487f61869cd8cd8afd5c5cab2"], - subgraph_url: "https://subgraph.satsuma-prod.com/327d6f1d3de6/reserve/reserve-mainnet/api", - folioDeployers: [ - { address: "0xaafb13a3df7ce70c140e40c959d58fd5cc443cba", startBlock: 21818973 }, - { address: "0x4c64ef51cb057867e40114dcfa3702c2955d3644", startBlock: 21848440 }, - { address: "0xBE3B47587cEeff7D48008A0114f51cD571beC63A", startBlock: 22897712 } - ], - governanceDeployers: [ - { address: "0xCB061c96Ff76E027ea99F73ddEe9108Dd6F0c212", startBlock: 21818973 }, - { address: "0xE926577a152fFD5f5036f88BF7E8E8D3652B558C", startBlock: 22081811 }, - { address: "0x5Bed18AcA50E6057E6658Fe8498004092EedCDcF", startBlock: 22897712 } - ], - }, - base: { - deployerAddresses: [ - "0xf1B06c2305445E34CF0147466352249724c2EAC1", - "0x9C75314AFD011F22648ca9C655b61674e27bA4AC", - "0xfd18ba9b2f9241ce40cde14079c1cda1502a8d0a", - ], - rsr: "0xab36452dbac151be02b16ca17d8919826072f64a", - fromBlock: 5000000, - subgraph_url: "https://subgraph.satsuma-prod.com/327d6f1d3de6/reserve/reserve-base/api", - folioDeployers: [ - { address: "0xe926577a152ffd5f5036f88bf7e8e8d3652b558c", startBlock: 25958000 }, - { address: "0xb8469986840bc9b7bb101c274950c02842755911", startBlock: 27803169 }, - { address: "0xA203AA351723cf943f91684e9F5eFcA7175Ae7EA", startBlock: 32733863 } - ], - governanceDeployers: [ - { address: "0xdBd9C5a83A3684E80D51fd1c00Af4A1fbfE03D14", startBlock: 25703976 }, - { address: "0x6a66E6E209C7120819cC033d9397E5022C22C872", startBlock: 27803169 }, - { address: "0x1A7D043c84fe781b6df046fEfCf673F71110208D", startBlock: 32733863 } - ], - }, - arbitrum: { - deployerAddresses: [ - "0xfd7eb6b208e1fa7b14e26a1fb10ffc17cf695d68" - ], - rsr: "0xCa5Ca9083702c56b481D1eec86F1776FDbd2e594", - fromBlock: 64464546, - subgraph_url: "https://subgraph.satsuma-prod.com/327d6f1d3de6/reserve/reserve-arbitrum/api", - }, - bsc: { - folioDeployers: [ - { address: "0x100E0eFDd7a4f67825E1BE5f0493F8D2AEAc00bb", startBlock: 53679824 }, - { address: "0x5Bed18AcA50E6057E6658Fe8498004092EedCDcF", startBlock: 60701791 } - ], - governanceDeployers: [ - { address: "0xBD49CeAC629d7131B8A975B582AcDAeB5C049bAD", startBlock: 53679824 }, - { address: "0x270d928b9Ee38BAD93601D197256390b3c3C13Ec", startBlock: 60701791 } - ], - }, -}; - -async function tvl(api) { - const chain = api.chain; - const config = chainConfigs[chain]; - - if (!config) return; - - if (config.folioDeployers) { - const folios = await _getFolioLogs(api, config.folioDeployers); - await getFolioTotalAssets(api, folios); - } - - if (!config.deployerAddresses) return; - - let { erc4626Wrapped = [] } = config; - erc4626Wrapped = erc4626Wrapped.map((i) => i.toLowerCase()); - const ownerTokens = config.vault - ? [ - [ - [ - ADDRESSES.ethereum.USDC, //usdc - "0x8e870d67f660d95d5be530380d0ec0bd388289e1", //pax - ADDRESSES.ethereum.TUSD, //tusd - ADDRESSES.ethereum.BUSD, //busd - ], - config.vault, - ], - ] - : []; - const blacklistedTokens = [config.rsr]; - const fluxListWithOwner = []; - const creationLogs = await _getLogs(api, config); - - const mains = creationLogs.map((i) => i.main); - const rTokens = creationLogs.map((i) => i.rToken); - - const backingManagers = await api.multiCall({ - abi: "address:backingManager", - calls: mains, - }); - const basketHandlers = await api.multiCall({ - abi: "address:basketHandler", - calls: mains, - }); - const basketRes = await api.multiCall({ - abi: "function quote(uint192, uint8) view returns (address[], uint256[])", - calls: basketHandlers.map((i) => ({ target: i, params: [0, 0] })), - }); - - let processedWrappers = new Set(); - let wrapperBalances = {}; - const allTokens = basketRes.flatMap(([tokens], i) => { - ownerTokens.push([tokens, rTokens[i]]); - ownerTokens.push([tokens, backingManagers[i]]); - return tokens; - }); - const allRTokens = basketRes.flatMap(([tokens], i) => - tokens.map(() => rTokens[i]) - ); - const allManagers = basketRes.flatMap(([tokens], i) => - tokens.map(() => backingManagers[i]) - ); - const allNames = await api.multiCall({ abi: "string:name", calls: allTokens, }); - - - const aTokenWrappersV2 = allTokens.filter((_, i) => allNames[i].startsWith("Static Aave") && allNames[i].includes("interest")); - const aTokenWrappersV3 = allTokens.filter((_, i) => allNames[i].startsWith("Static Aave") && !allNames[i].includes("interest")); - const cUsdcV3Wrappers = allTokens.filter((_, i) => allNames[i].startsWith("Wrapped cUSDCv3")); - const cUsdtV3Wrappers = allTokens.filter((_, i) => allNames[i].startsWith("Wrapped cUSDTv3")); - const morphoWrappers = allTokens.filter((_, i) => allNames[i].startsWith("Tokenised Morpho")); - const stargateLpWrappers = allTokens.filter((_, i) => allNames[i].startsWith("Wrapped Stargate")); - const cTokenWrappers = allTokens.filter( - (_, i) => /^Compound.*Vault$/.test(allNames[i]) - ); - const convexTokensAndOwners = []; - - allTokens.forEach((token, i) => { - if (!allNames[i].startsWith("Flux ")) return; - fluxListWithOwner.push([token, allRTokens[i]]); - fluxListWithOwner.push([token, allManagers[i]]); - blacklistedTokens.push(token); - return true; - }); - - allTokens.forEach((token, i) => { - if (!allNames[i].endsWith("Convex Deposit")) return; - blacklistedTokens.push(token); - convexTokensAndOwners.push([token, allRTokens[i]]); - convexTokensAndOwners.push([token, allManagers[i]]); - }); - - let cTokens = await api.multiCall({ abi: "address:underlying", calls: cTokenWrappers, }); - let aTokensV2 = await api.multiCall({ abi: "address:ATOKEN", calls: aTokenWrappersV2, }); - let aTokensV3 = await api.multiCall({ abi: "address:aToken", calls: aTokenWrappersV3, }); - let morphoUnderlyingTokens = await api.multiCall({ abi: "address:asset", calls: morphoWrappers, }); - let morphoUnderlyingBalances = await api.multiCall({ abi: "uint256:totalAssets", calls: morphoWrappers, }); - - blacklistedTokens.push( - ...aTokenWrappersV2, - ...aTokenWrappersV3, - ...stargateLpWrappers, - ...cTokenWrappers, - ...cUsdcV3Wrappers, - ...cUsdtV3Wrappers, - ...morphoWrappers, - ); - - cTokens.forEach((v, i) => ownerTokens.push([[v], cTokenWrappers[i]])); - aTokensV2.forEach((v, i) => ownerTokens.push([[v], aTokenWrappersV2[i]])); - aTokensV3.forEach((v, i) => ownerTokens.push([[v], aTokenWrappersV3[i]])); - morphoUnderlyingTokens.forEach((v, i) => - api.add(v, morphoUnderlyingBalances[i]) - ); - - if (stargateLpWrappers.length) - await getStargateLpValues( - api, - stargateLpWrappers, - processedWrappers, - wrapperBalances - ); - - if (cUsdcV3Wrappers.length) { - await getCompoundUsdcValues( - api, - cUsdcV3Wrappers, - processedWrappers, - wrapperBalances - ); - } - - if (cUsdtV3Wrappers.length) { - await getCompoundUsdcValues( - api, - cUsdtV3Wrappers, - processedWrappers, - wrapperBalances - ); - } - - await genericUnwrapCvxDeposit(api, convexTokensAndOwners) - await unwrapCreamTokens(api, fluxListWithOwner); - - await sumTokens2({ api, ownerTokens, blacklistedTokens }); -} - -async function staking(api) { - const chain = api.chain; - const config = chainConfigs[chain]; - const creationLogs = await _getLogs(api, config); - const stRsrs = creationLogs.map((i) => i.stRSR); - return sumTokens2({ api, owners: stRsrs, tokens: [config.rsr] }); -} - -async function indexStaking(api) { - const chain = api.chain; - const config = chainConfigs[chain]; - - if (config.governanceDeployers) { - const stakingTokenLogs = await _getStakingTokenLogs(api, config.governanceDeployers); - await getStakingTokenAssets(api, stakingTokenLogs); - } -} - -async function combinedStaking(api) { - const chain = api.chain; - const config = chainConfigs[chain]; - - if (config.rsr && config.deployerAddresses) { - await staking(api); - } - - if (config.governanceDeployers) { - await indexStaking(api); - } -} - -module.exports = { - ethereum: { - tvl, - staking: combinedStaking, - }, - base: { - tvl, - staking: combinedStaking, - }, - arbitrum: { - tvl, - staking, - }, - bsc: { - tvl, - staking: indexStaking, - }, - methodology: `TVL accounts for the underlying ERC20 collateral which back RTokens and Index Protocol folios. Staking includes both Reserve Protocol RSR staking and Index Protocol governance token staking.`, -}; diff --git a/projects/reservoir-protocol/index.js b/projects/reservoir-protocol/index.js deleted file mode 100644 index 9ab2b8eb6ff..00000000000 --- a/projects/reservoir-protocol/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - ethereum: [ - // https://docs.reservoir.xyz/products/proof-of-reserves - '0x0c7e4342534e6e8783311dCF17828a2aa0951CC7', - '0x9BB2c38F57883E5285b7c296c66B9eEA4769eF80', - '0x99A95a9E38e927486fC878f41Ff8b118Eb632b10', - '0xE45321525c85fcc418C88E606B96daD8cBcc047f', - '0x841DB2cA7E8A8C2fb06128e8c58AA162de0CfCbC', - '0x99E8903bdEFB9e44cd6A24B7f6F97dDd071549bc', - '0x2Adf038b67a8a29cDA82f0Eceb1fF0dba704b98d' - // '0x31Eae643b679A84b37E3d0B4Bd4f5dA90fB04a61', - exluded RUSD because it is project's own token - ], - berachain: [], -} - -const assets = { - sUSDe: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497', - 'PT-USDe': '0xBC6736d346a5eBC0dEbc997397912CD9b8FAe10a', - 'PT-sUSDE': '0x9F56094C450763769BA0EA9Fe2876070c0fD5F77', - 'eUSDC-22': '0xe0a80d35bb6618cba260120b279d357978c42bce' -} - -Object.keys(config).forEach(chain => { - if (chain === 'berachain') { - // BYUSD-HONEY-LP - const byusd_honey_lp_vault = '0xbbB228B0D7D83F86e23a5eF3B1007D0100581613'; - const byusd_honey_lp_token = '0xdE04c469Ad658163e2a5E860a03A86B52f6FA8C8'; - const byusd_honey_lp_owner = '0x0db79c0770E1C647b8Bb76D94C22420fAA7Ac181'; - - // HONEY in rUSD-HONEY LP - const rusd_honey_lp_vault = '0x1C5879B75be9E817B1607AFb6f24F632eE6F8820'; - const rusd_honey_lp_token = '0x7fd165B73775884a38AA8f2B384A53A3Ca7400E6'; - const rusd_honey_lp_owner = '0x6811742721DcCe83942739d44E40f140B5BCee37'; - - // USDT0 in rUSD-USDT0 LP - const rusd_usdt0_lp_vault = '0xc6De36eceD67db9c17919708865b3eE94a7D987C'; - const rusd_usdt0_lp_token = '0x1fb6c1aDE4F9083b2EA42ED3fa9342e41788D4b5'; - const rusd_usdt0_lp_owner = '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'; - - module.exports[chain] = { - tvl: async (api) => { - const lpBalance = await api.call({ abi: 'function balanceOf(address) view returns (uint256)', target: byusd_honey_lp_vault, params: byusd_honey_lp_owner }) - api.add(byusd_honey_lp_token, lpBalance); - - const honeyBalance = await api.call({ abi: 'function balanceOf(address) view returns (uint256)', target: rusd_honey_lp_vault, params: rusd_honey_lp_owner }) - api.add(rusd_honey_lp_token, Number(honeyBalance) / 2); - - const usdt0Balance = await api.call({ abi: 'function balanceOf(address) view returns (uint256)', target: rusd_usdt0_lp_vault, params: rusd_usdt0_lp_owner }) - api.add(rusd_usdt0_lp_token, Number(usdt0Balance) / 2); - - return api.getBalances() - } - } - } - else if (chain === 'ethereum') { - const funds = config[chain] - module.exports[chain] = { - tvl: async (api) => { - // count assets on tvl adapters - const tokens = await api.multiCall({ abi: 'address:underlying', calls: funds }) - const bals = await api.multiCall({ abi: 'uint256:totalValue', calls: funds }) - const decimals = await api.multiCall({ abi: 'uint8:decimals', calls: tokens }) - bals.forEach((v, i) => bals[i] = v * 10 ** (decimals[i] - 18)) - api.add(tokens, bals) - - // count USDC locked in 0x4809010926aec940b550D34a46A52739f996D75D - api.sumTokens({ - owner: '0x4809010926aec940b550D34a46A52739f996D75D', token: ADDRESSES.ethereum.USDC - }) - - let shareBalance = await api.call({ abi: 'function balanceOf(address) view returns (uint256)', target: assets['eUSDC-22'], params: ['0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'] }) - - api.add(assets['eUSDC-22'], shareBalance) - - shareBalance = await api.call({ abi: 'function balanceOf(address) view returns (uint256)', target: assets.sUSDe, params: ['0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'] }) - - api.add(assets.sUSDe, shareBalance) - - shareBalance = await api.call({ abi: 'function balanceOf(address) view returns (uint256)', target: assets['PT-sUSDE'], params: ['0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'] }) - - api.add(assets['PT-sUSDE'], shareBalance) - - shareBalance = await api.call({ abi: 'function balanceOf(address) view returns (uint256)', target: assets['PT-USDe'], params: ['0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'] }) - - api.add(assets['PT-USDe'], shareBalance) - - return api.getBalances() - } - } - } -}) diff --git a/projects/reservoir-tools-v2/index.js b/projects/reservoir-tools-v2/index.js deleted file mode 100644 index 41c78fb29ed..00000000000 --- a/projects/reservoir-tools-v2/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'abstract': '0x566d7510dEE58360a64C9827257cF6D0Dc43985E', - 'zero_network': '0x1B4427e212475B12e62f0f142b8AfEf3BC18B559', - 'shape': '0xb411eaf2f2070822b26e372e3ea63c5060ba45e6', - 'ink': '0xfe57a6ba1951f69ae2ed4abe23e0f095df500c04', -}) \ No newline at end of file diff --git a/projects/reservoir-tools-v3/index.js b/projects/reservoir-tools-v3/index.js deleted file mode 100644 index 82ad2f62e8c..00000000000 --- a/projects/reservoir-tools-v3/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - 'abstract': { factory: '0xA1160e73B63F322ae88cC2d8E700833e71D0b2a1', fromBlock: 1 }, - 'zero_network': { factory: '0xA1160e73B63F322ae88cC2d8E700833e71D0b2a1', fromBlock: 1 }, - 'shape': { factory: '0xeCf9288395797Da137f663a7DD0F0CDF918776F8', fromBlock: 1 }, - 'redstone': { factory: '0xece75613Aa9b1680f0421E5B2eF376DF68aa83Bb', fromBlock: 1 }, - 'ink': { factory: '0x640887A9ba3A9C53Ed27D0F7e8246A4F933f3424', fromBlock: 1 }, -}) \ No newline at end of file diff --git a/projects/reservoir/index.js b/projects/reservoir/index.js deleted file mode 100644 index 8951f94d504..00000000000 --- a/projects/reservoir/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - avax: { factory: '0x1A49Bc8464731A08c16EdF17F33CF77db37228a4', fromBlock: 62736566 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event Pair (address indexed token0, address indexed token1, uint256 curveId, address pair)', - onlyArgs: true, - fromBlock, - }) - const ownerTokens = logs.map(i => [[i.token0, i.token1,], i.pair]) - return api.sumTokens({ ownerTokens }) - } - } -}) diff --git a/projects/resolv/index.js b/projects/resolv/index.js deleted file mode 100644 index 2d409e1ae33..00000000000 --- a/projects/resolv/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require('../helper/staking') - -const tokens = [ - '0x66a1E37c9b0eAddca17d3662D6c05F4DECf3e110', // USR - '0x4956b52aE2fF65D74CA2d61207523288e4528f96' // RLP -] - -module.exports = { - ethereum: { - tvl: async (api) => api.add(tokens, await api.multiCall({ calls: tokens, abi: 'erc20:totalSupply' })), - staking: staking('0xFE4BCE4b3949c35fB17691D8b03c3caDBE2E5E23', '0x259338656198eC7A76c729514D3CB45Dfbf768A1'), - } -} \ No newline at end of file diff --git a/projects/resonatefinance/index.js b/projects/resonatefinance/index.js deleted file mode 100644 index 7cc2fc77c97..00000000000 --- a/projects/resonatefinance/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { get } = require('../helper/http'); - - -//Full Calculations for computing TVL for Resonate Finance is done internally by Resonate and exposed via API -//API Endpoint: https://api.resonate.finance/{chainId}/tvl -//https://github.com/Revest-Finance/railway-monorepo/blob/main/src/api.ts", -async function tvl(api) { - let usdValue = 0; - do { - const data = await get(`https://api.resonate.finance/${api.chainId}/tvl`); - usdValue = data; - } while (usdValue == 0) - - return { - tether: usdValue, - }; -} - -module.exports = { - methodology: "We sum all the tokens deposited as principal and any unclaimed interest accrued on it.", - hallmarks: [ - [1682438400, "Launch of Regen Portal"], - [1687276800, "Launch of Frax Portal"] - ], - ethereum: { - tvl - }, - polygon: { - tvl - }, - optimism: { - tvl - }, - arbitrum: { - tvl - }, - fantom: { - tvl - }, - }; diff --git a/projects/restake-finance/index.js b/projects/restake-finance/index.js deleted file mode 100644 index 021907e4f19..00000000000 --- a/projects/restake-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const StakePools = [ - '0xe384251B5f445A006519A2197bc6bD8E5fA228E5', - '0x0448FddC3f4D666eC81DAc8172E60b8e5852386c', - '0x357DEeD02020b73F8A124c4ea2bE3B6A725aaeC2', - '0xD7BC2FE1d0167BD2532587e991abE556E3a66f3b', - '0xD5193B851bf7C751BBA862Eca1298D4B4Cb17B81', -]; - -async function tvl(api) { - const bals = await api.multiCall({ abi: 'uint256:getTotalUnderlying', calls: StakePools }) - const configs = await api.multiCall({ abi: "function getConfig() view returns ((address underlying, address protocolToken, uint16 maxStakers))", calls: StakePools }) - const tokens = configs.map(i => i.underlying) - api.add(tokens, bals) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - } -}; diff --git a/projects/resupply/index.js b/projects/resupply/index.js deleted file mode 100644 index 56d614c5f5b..00000000000 --- a/projects/resupply/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { staking } = require("../helper/staking.js"); - -const RESUP_TOKEN = '0x419905009e4656fdc02418c7df35b1e61ed5f726'; -const GOV_STAKING_CONTRACT = '0x22222222E9fE38F6f1FC8C61b25228adB4D8B953'; - -const convertToAssetsAbi = 'function convertToAssets(uint256) view returns (uint256)'; - -async function tvl(api) { - const pairsContracts = await api.call({ abi: 'address[]:getAllPairAddresses', target: '0x10101010E0C3171D894B71B3400668aF311e7D94'}) - - const [balances, tokensCollateral,] = await Promise.all([ - api.multiCall({ abi: 'uint256:totalCollateral', calls: pairsContracts }), - api.multiCall({ abi: 'address:collateral', calls: pairsContracts }), - ]); - - const tokens = await api.multiCall({ abi: 'address:asset', calls: tokensCollateral }) - - const assetBalances = await api.multiCall({ - abi: convertToAssetsAbi, - calls: balances.map((balance, i) => ({ - target: tokensCollateral[i], - params: [balance], - })), - }); - - api.add(tokens, assetBalances); -} - -async function stakingTvl(api) { - const resupBalance = await api.call({ - abi: 'erc20:balanceOf', - target: RESUP_TOKEN, - params: [GOV_STAKING_CONTRACT], - }); - - api.add(RESUP_TOKEN, resupBalance); -} - -module.exports = { - start: '2025-03-15', - ethereum: { - tvl, - staking: stakingTvl, - }, -}; diff --git a/projects/reti-openpooling/index.js b/projects/reti-openpooling/index.js deleted file mode 100644 index cd8b9786d52..00000000000 --- a/projects/reti-openpooling/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getAppGlobalState } = require('../helper/chain/algorand') -const retiAppID = 2714516089 - -async function getStake () { - const state = await getAppGlobalState(retiAppID) - return { - 'algorand': state['staked'] / 1e6, - } -} - -module.exports = { - timetravel: false, - methodology: 'Returns total amount staked protocol-wide for the Réti open pooling protocol.', - algorand: { - tvl: async () => { - return getStake() - }, - } -} diff --git a/projects/retreeb.js b/projects/retreeb.js deleted file mode 100644 index 843ad322b13..00000000000 --- a/projects/retreeb.js +++ /dev/null @@ -1,21 +0,0 @@ -const { stakings } = require('./helper/staking'); - -const TREEB = '0xc60d7067dfbc6f2caf30523a064f416a5af52963'; -const contracts = [ - '0x669b6723D8cf1cE664bc1005646a26Dc8563E5C7', // QUICK - '0x39985D64b122f9089340CF1ab39D756e3cA74F0f', // MID - '0x5fA057966fB12c9e89bF603661CE3133bD3CBf8B', // DEEP - '0x5C6f3A0d2a8A921Fa473a22C71a84504b43c0DA6', // AMBER - '0xB767C1fAcA04DD9eaBE20e307C52E81c37Bfb1a1', // CARBON - '0x326b7cCcBA7370fAd44a7CE82bee71B6504576B0', // MINERAL - '0x6A45918D754b167d3E492A10A6DDf81e6C24E455', // SECRET - '0xbBC2BBd0335d0c60160E9b3fb7102602510EAc03', // staking pool 1 - '0x2EE9261F7A4226FeC96B2a0c64c0613bf5367A12', // staking pool 2 -]; - -module.exports = { - fantom: { - staking: stakings(contracts, TREEB), - tvl: async() => ({}), - } -}; diff --git a/projects/retro/index.js b/projects/retro/index.js deleted file mode 100644 index 990098bbd7a..00000000000 --- a/projects/retro/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - polygon: { - factory: "0x91e1B99072f238352f59e58de875691e20Dc19c1", - fromBlock: 43939793, - }, -}); diff --git a/projects/retrodefi/abi.json b/projects/retrodefi/abi.json deleted file mode 100644 index 683c1f0f96a..00000000000 --- a/projects/retrodefi/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accNATIVEPerShare, address strat, uint256 depositFeeBP)", - "poolLength": "uint256:poolLength", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/retrodefi/index.js b/projects/retrodefi/index.js deleted file mode 100644 index 92f5bb7852f..00000000000 --- a/projects/retrodefi/index.js +++ /dev/null @@ -1,80 +0,0 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// --- BSC Addresses --- -const masterChefContractBsc = "0x738600B15B2b6845d7Fe5B6C7Cb911332Fb89949"; - -const retroStakingsBsc = [ - "0xd3a1adD0a8377f67932b61d13A2c01325C41c138", - "0xD8907e29D9945609649C001a7b9317cDF23409C5", - "0x34B50EA0f1598b29aC4CA3C96b963d8e9Da616E1", - "0x5Cd360D063Ab1B1c7b63cFc1D9c2690D1bd4d50F", - masterChefContractBsc, -]; - -const stakingTokensBsc = [ - //TCG2 - "0xf73d8276c15ce56b2f4aee5920e62f767a7f3aea", - //PQBERT - "0x6ed390befbb50f4b492f08ea0965735906034f81", - //strat: 0x34B50EA0f1598b29aC4CA3C96b963d8e9Da616E1 - //RCUBE - "0xa6e53f07bD410df069e20Ced725bdC9135146Fe9", - //srat: 0x5Cd360D063Ab1B1c7b63cFc1D9c2690D1bd4d50F -]; - -const pool2StratsBsc = [ - "0x438236Ee2Cb9c0f8b9c039ed269B0D5d81fD9c0e", - "0xF9a424B1C6b525818ed7e5AC293331D2a40F1b48", - "0xbfaC6d05D98f94980B08E856C072E46E01C148B6", - "0x77C3d82946C4Bc0A93cA3F17eD65AF63a5aB0eB2", - "0xe3646Ef0D93438eb087EB3087D0cf535880d7BC1", -]; - -const excludePool2Bsc = [ - "0xb2eba0ffF0B2127dDbF06274cFE27b4C5C9A8c79", - "0x6D45A9C8f812DcBb800b7Ac186F1eD0C055e218f", - "0x075DA65514Bc2aF2508314f8a3150ca660E6Eea1", - "0xaBFdA784F8bc6aA54B1E401AcfF13d40148AaB2A", - "0x9ed8C81309D5b495e52778Aac76880Cf105e4FEd", -]; - -// --- Polygon Addresses --- -const masterChefContractPolygon = "0x955d453892B0BA8DFc3929E7c83a6D07AFf2654a"; - -const retroStakingsPolygon = [ - "0x16FCAd1b7429A4E432C0074bFA53AaC9aaDB9B50", - masterChefContractPolygon, -]; - -const pQBERT = "0x40038C83E459937A988b669f1159cC78d8fdad68"; - -const pool2StratsPolygon = ["0xB045Ea272229f9c0c94ca36C1e805226c9C8c034"]; - -const excludePool2Polygon = ["0x312D2eAb1c01C0c3d74f41a3B7Dd5772aD9F3Ca2"]; - -async function tvl(api) { - const masterchef = api.chain === "bsc" ? masterChefContractBsc : masterChefContractPolygon; - const blacklistedTokens = excludePool2Bsc.concat(excludePool2Polygon).concat([pQBERT]) - const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength , itemAbi: abi.poolInfo, target: masterchef}) - const tokensAndOwners = poolInfos.map(poolInfo => [poolInfo.want, poolInfo.strat]) - return sumTokens2({ api, tokensAndOwners, blacklistedTokens, }) -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl, - staking: staking(retroStakingsBsc, stakingTokensBsc), - pool2: pool2s(pool2StratsBsc, excludePool2Bsc), - }, - polygon: { - tvl, - staking: staking(retroStakingsPolygon, pQBERT), - pool2: pool2s(pool2StratsPolygon, excludePool2Polygon), - }, - methodology: - "We count liquidity on the Farms through MasterChef contracts; and Saking of TCG2 and QBERT tokens through retroStaking contracts", -}; diff --git a/projects/return-finance/index.js b/projects/return-finance/index.js deleted file mode 100644 index 05fb89e5ab3..00000000000 --- a/projects/return-finance/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumERC4626VaultsExport } = require("../helper/erc4626") - -module.exports = { - doublecounted: true, -}; - -const config = { - ethereum: [ - "0x4D7F26a161a3e1fbE10C11e1c9abC05Fa43DdE67", - "0x4cba5780Dcbee1c8B5220D24f4F54e14D796a31C", - "0xD8785CDae9Ec24b8796c45E3a2D0F7b03194F826", - "0xc2d4d9070236bA4ffefd7cf565eb98d11bFeB8E1", - "0x2C2f0FFbFA1B8b9C85400f1726e1bc0892e63D9F" - ], - avax: [ - "0x0271A46c049293448C2d4794bCD51f953Bf742e8", - "0x3A3dAdbca3ec5a815431f45eca33EF1520388Ef2", - ], - polygon: ["0x0271A46c049293448C2d4794bCD51f953Bf742e8"], - base: [ - "0x367F44Fbd5a9c2fDBF18D98F0DAbF15e22da7194", - "0x3936bC108A503c301e4A7D9A8937ae5ab1B10Fd6" - ], -}; - - - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumERC4626VaultsExport({ vaults: config[chain], isOG4626: true, }) - } -}); diff --git a/projects/revault/RevaChef.json b/projects/revault/RevaChef.json deleted file mode 100644 index 7fe9ff22257..00000000000 --- a/projects/revault/RevaChef.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "tokens": "function tokens(address) view returns (uint256 totalPrincipal, uint256 tvlBusd, uint256 lastRewardBlock, uint256 accRevaPerToken, bool rewardsEnabled)" -} \ No newline at end of file diff --git a/projects/revault/index.js b/projects/revault/index.js deleted file mode 100644 index 3417ee4d61b..00000000000 --- a/projects/revault/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const REVA_CHEF = "0xd7550285532f1642511b16Df858546F2593d638B"; -const REVA_CHEF_ABI = require("./RevaChef.json"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -async function tvl(api) { - const tokens = await api.fetchList({ lengthAbi: 'uint256:getSupportedTokensCount', itemAbi: 'function supportedTokens(uint256) view returns (address)', target: REVA_CHEF}) - const bals = await api.multiCall({ abi: REVA_CHEF_ABI.tokens, calls: tokens, target: REVA_CHEF}) - api.addTokens(tokens, bals.map(i => i.totalPrincipal)) - return sumTokens2({ api, resolveLP: true }) -} - -module.exports = { - start: '2021-10-13', // 13th of October, 2021 - bsc: { - tvl, - }, -} diff --git a/projects/reverse/index.js b/projects/reverse/index.js deleted file mode 100644 index 2d4225a114f..00000000000 --- a/projects/reverse/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - harmony: { - tvl: () => ({}), - staking: () => ({}), - }, -} \ No newline at end of file diff --git a/projects/revert-compoundor/index.js b/projects/revert-compoundor/index.js deleted file mode 100644 index f55faecb82e..00000000000 --- a/projects/revert-compoundor/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - owners: ['0x5411894842e610C4D0F6Ed4C232DA689400f94A1'], - }, - polygon: { - owners: ['0x5411894842e610C4D0F6Ed4C232DA689400f94A1'], - }, - arbitrum: { - owners: ['0x5411894842e610C4D0F6Ed4C232DA689400f94A1'], - }, - optimism: { - owners: ['0x5411894842e610C4D0F6Ed4C232DA689400f94A1'], - }, - bsc: { - owners: ['0x98eC492942090364AC0736Ef1A741AE6C92ec790'] - } -} - -module.exports = { - doublecounted: true -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ resolveUniV3: true, ...config[chain]}) - } -}) \ No newline at end of file diff --git a/projects/revert-lend/index.js b/projects/revert-lend/index.js deleted file mode 100644 index d00a1d724bb..00000000000 --- a/projects/revert-lend/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { - owners: ['0x74e6afef5705beb126c6d3bf46f8fad8f3e07825'], - }, - base: { - owners: ['0x36aeae0e411a1e28372e0d66f02e57744ebe7599'], - - }, - ethereum: { - owners: ['0xa2754543f69dC036764bBfad16d2A74F5cD15667'], - - } -} - -module.exports = { - doublecounted: true -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ resolveUniV3: true, ...config[chain]}) - } -}) diff --git a/projects/revert-v3-staker/index.js b/projects/revert-v3-staker/index.js deleted file mode 100644 index 78945a87027..00000000000 --- a/projects/revert-v3-staker/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - polygon: { - owners: ['0x8c696deF6Db3104DF72F7843730784460795659a'] - }, - evmos: { - owners: ['0x3eb0fffa1470cdd3725b9eb29aded2736144b078'] - } -} - -module.exports = { - doublecounted: true -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ resolveUniV3: true, ...config[chain]}) - } -}) \ No newline at end of file diff --git a/projects/revest/index.js b/projects/revest/index.js deleted file mode 100644 index c609e769674..00000000000 --- a/projects/revest/index.js +++ /dev/null @@ -1,151 +0,0 @@ -const { sumTokens2, } = require("../helper/unwrapLPs") - -const CutoffABI = "function FNFT_CUTOFF() external view returns (uint256)" -const numFNFTSABI = "function fnftsCreated() external view returns (uint256)" -const getFNFTSupplyABI = "function getSupply(uint256 fnftId) external view returns (uint256)" -const getFNFTConfigABI = "function getFNFT(uint256 fnftId) view returns ((address asset, address pipeToContract, uint256 depositAmount, uint256 depositMul, uint256 split, uint256 depositStopTime, bool maturityExtension, bool isMulti, bool nontransferrable))" -const getWalletABI = "function getFNFTAddress(uint256 fnftId) external view returns (address)" - -const config = { - ethereum: { - holder: '0xA81bd16Aa6F6B25e66965A2f842e9C806c0AA11F', - revest: '0x120a3879da835a5af037bb2d1456bebd6b54d4ba', - tokenVaultV2: '0xD672f1E3411c23Edbb49e8EB6C6b1564b2BF8E17', - fnftHandler: '0xa07E6a51420EcfCB081917f40423D29529705e8a', - revest_lp: '0x6490828Bd87Be38279A36F029f3b9Af8b4E14B49' - }, - polygon: { - holder: '0x3cCc20d960e185E863885913596b54ea666b2fe7', - tokenVaultV2: '0xd2c6eB7527Ab1E188638B86F2c14bbAd5A431d78', - fnftHandler: '0x6c111d0b0c5f6577de586f7df262f15a6741ddb7' - }, - fantom: { - holder: '0x3923E7EdBcb3D0cE78087ac58273E732ffFb82cf', - tokenVaultV2: '0x0ca61c96d1E0bE5F80f4773be367f4bF2025f224', - fnftHandler: '0xA6f5efC3499d41fF1Eca9d325cfe13C913a85F45' - }, - avax: { - holder: '0x955a88c27709a1EEf4ACa0df0712c67B48240919', - fnftHandler: '0xd6E44901Ee92c85D7f019BdaF05cbD779f36Edaa' - }, - optimism: { - tokenVaultV2: '0x490867a64746AC33f721A778dD8C30BBb0074055', - fnftHandler: '0xA002Dc3E3C163732F4F5e6F941C87b61B5Afca74', - holder: '0x490867a64746AC33f721A778dD8C30BBb0074055' - }, - arbitrum: { - tokenVaultV2: '0x209F3F7750d4CC52776e3e243717b3A8aDE413eB', - fnftHandler: '0xd90D465631a1718FDB3eA64C39F41290Addf70da', - holder: '0x209F3F7750d4CC52776e3e243717b3A8aDE413eB' - } -} - -module.exports = { - // hallmarks: [ - // [1648339200, "Reentrancy attack"] - // ], - methodology: "We list all tokens in our vault and sum them together", -}; - -Object.keys(config).forEach(chain => { - const { holder, revest, tokenVaultV2, fnftHandler, revest_lp } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - - const blacklistedTokens = [] - if (revest) blacklistedTokens.push(revest.toLowerCase()) - - if (tokenVaultV2 != null) { - - let info = await api.batchCall([ - { target: tokenVaultV2, abi: CutoffABI, }, - { target: fnftHandler, abi: numFNFTSABI, } - ]) - - let cutoff = info[0] - let numFNFTS = info[1] - - //Build the Multicall to get the supply of each FNFT to check for ones that still exist - let fnftSupplyCalls = [] - for (let i = cutoff; i < numFNFTS; i++) - fnftSupplyCalls.push({ target: fnftHandler, params: i, }) - - - //Get the supply of each to determine if an FNFT is still alive by supply > 0 - let fnftSupplys = await api.multiCall({ calls: fnftSupplyCalls, abi: getFNFTSupplyABI, }) - - //If the FNFT still exists, track it's ID - let aliveFNFTCalls = [] - let aliveFNFTS = {} - fnftSupplys.forEach((supply, i) => { - if (supply != 0) { - - //Track the supply of the FNFT - const x = fnftSupplyCalls[i].params - aliveFNFTS[x] = supply - - aliveFNFTCalls.push({ target: tokenVaultV2, params: x, }) - } - }) - - //Get the asset of the FNFT - let fnftConfigs = await api.multiCall({ calls: aliveFNFTCalls, abi: getFNFTConfigABI, }) - - - //Link each FNFTId to its underlying token - let tokenAddressesPerFNFT = {} - let walletCalls = [] - fnftConfigs.forEach((config, i) => { - if (!blacklistedTokens.includes(config[0].toLowerCase())) { - const x = aliveFNFTCalls[i].params - tokenAddressesPerFNFT[x] = config[0] - walletCalls.push({ target: tokenVaultV2, params: x, }) - } - }) - - //Get the wallet for each FNFT - let wallets = await api.multiCall({ abi: getWalletABI, calls: walletCalls, }) - const tokensAndOwners = [] - - //Prepare Calldata to check the balance of each token in each wallet - wallets.forEach((wallet, i) => { - tokensAndOwners.push([tokenAddressesPerFNFT[walletCalls[i].params], wallet]) - }) - - await api.sumTokens({ tokensAndOwners }) - } - - const tokens = [] - - if (revest_lp) - tokens.push(revest_lp) - return sumTokens2({ api, owner: holder, fetchCoValentTokens: true, blacklistedTokens, tokens, resolveLP: true, }) - }, - } - - if (revest) - module.exports[chain].staking = async (api) => { - //Get the number of FNFTS for the TokenVaultV2 - let info = await api.batchCall([ - { target: config[chain].tokenVaultV2, abi: CutoffABI, }, - { target: config[chain].fnftHandler, abi: numFNFTSABI, } - ]) - - let cutoff = Number(info[0]) - let numFNFTS = Number(info[1]) - - //Build Multicall Data - let calls = [] - for (let x = cutoff; x < numFNFTS; x++) - calls.push({ target: config[chain].tokenVaultV2, params: x }) - - - //Get the wallet address for each FNFT via multicall - let wallets = await api.multiCall({ abi: getWalletABI, calls: calls, }) - - wallets.push(holder); - - //Return the balance of revest in every wallet. - return sumTokens2({ api, owners: wallets, tokens: [revest] }) - } -}) diff --git a/projects/revoswap/index.js b/projects/revoswap/index.js deleted file mode 100644 index bbbc2ac293a..00000000000 --- a/projects/revoswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - xlayer: { - tvl: getUniTVL({ factory: '0xa38498983e7b31DE851e36090bc9D1D8fB96BE5E', useDefaultCoreAssets: true, }), - } -} diff --git a/projects/revuto.js b/projects/revuto.js deleted file mode 100644 index 0ec59d55f9f..00000000000 --- a/projects/revuto.js +++ /dev/null @@ -1,16 +0,0 @@ -const { toUSDTBalances } = require("./helper/balances"); -const { get } = require('./helper/http') - -async function staking() { - const url = 'https://production-testing.revuto.com/api/v1/wallet/total_revu_staked_usd'; - return toUSDTBalances((await get(url))) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - cardano: { - tvl: () => ({}), - staking - } -}; \ No newline at end of file diff --git a/projects/rex/index.js b/projects/rex/index.js deleted file mode 100644 index dc50aa4c54b..00000000000 --- a/projects/rex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// REX (Resource Exchange) -// https://eosauthority.com/rex/statistics?network=eos -// https://developers.eos.io/manuals/eos/v2.1/cleos/command-reference/system/system-rex -async function eos() { - return await get_account_tvl("eosio.rex", [["eosio.token", "EOS", "eos"]]); -} - -module.exports = { - methodology: `REX (Resource Exchange) TVL is achieved by querying token balances from [eosio.rex] system account.`, - eos: { - tvl: eos - }, -} diff --git a/projects/rexdex/index.js b/projects/rexdex/index.js deleted file mode 100644 index 9b4b039ec08..00000000000 --- a/projects/rexdex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('wan', '0xCc2F30462ED1C47Dd7Fb75C81c7F4Cd721eB2A66') \ No newline at end of file diff --git a/projects/reya-bridge/index.js b/projects/reya-bridge/index.js deleted file mode 100644 index 39287b0152c..00000000000 --- a/projects/reya-bridge/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xdff78a949e47c1e90f3dd6dd7fe2fa72b42a75f7", // usdc vault - "0x64df894688c5052beadc35371cf69151ebc5d658", // eth vault - ], - tokens: [ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.WETH, nullAddress], - }), - }, - optimism: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x9239609eED7c40C6DDcEC25D247Ef205103590B6", // usdc vault - "0xAd7bdD85fdA879fe7771A2546939972F202C1BaE", // eth vault - "0xCbEcd69ceFA64F55b72F8ac288FC5c452819B608" // usdc vault 2 - ], - tokens: [ADDRESSES.optimism.USDC, ADDRESSES.optimism.WETH, ADDRESSES.optimism.USDC_CIRCLE], - }), - }, - polygon: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xC0acBb471465FCf848746D1837d8358aB891546c", // usdc vault - "0x72384be7092144cD9a57526B486827E4eA632351", // eth vault - "0xBC31ec84bd7BC2c97B9413F6E473cE96Be153a25" // usdc vault 2 - ], - tokens: [ADDRESSES.polygon.USDC, ADDRESSES.polygon.WETH, ADDRESSES.polygon.USDC_CIRCLE], - }), - }, - base: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x77e61C6fcAEe80CA578B818DD583d2b78f99289C", // dai vault - "0x2b3A8ABa1E055e879594cB2767259e80441E0497", // eth vault - "0xd71629697b71e2df26b4194f43f6eaed3b367ac0", //usdc real vault - ], - tokens: [ADDRESSES.base.USDC, ADDRESSES.base.WETH, ADDRESSES.base.DAI], - }), - }, - arbitrum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xa0E9B6DA89BD0303A8163B81B8702388bE0Fde77", // usdc vault - "0xD7BBE2f6D1B52A27D2dAC28298DE3974a3d13047", // eth vault - "0x11B3a7E08Eb2FdEa2745e4CB64648b10B28524A8" // usdc vault 2 - ], - tokens: [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDC_CIRCLE], - }), - }, -}; diff --git a/projects/reya-perp/index.js b/projects/reya-perp/index.js deleted file mode 100644 index 5a105a42884..00000000000 --- a/projects/reya-perp/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - reya: { tvl: sumTokensExport({ owner: '0xA763B6a5E09378434406C003daE6487FbbDc1a80', tokens: [ADDRESSES.reya.RUSD, "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", "0x2339D41f410EA761F346a14c184385d15f7266c4", "0xAAB18B45467eCe5e47F85CA6d3dc4DF2a350fd42", ADDRESSES.reya.WETH, "0x162B78e827A8DB8173D13735C08c8D40Cb5cCdAB", "0xb6A307Bb281BcA13d69792eAF5Db7c2BBe6De248", "0x63FC3F743eE2e70e670864079978a1deB9c18b76"]})} -} \ No newline at end of file diff --git a/projects/reyield-finance/abi.json b/projects/reyield-finance/abi.json deleted file mode 100644 index d75ec4441a4..00000000000 --- a/projects/reyield-finance/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "getPositionManagers": "function getPositionManagers(uint256 cursor, uint256 howMany) view returns (address[] managers, uint256 newCursor)", - "getOwner": "function getOwner() view returns (address)", - "positionIdCounter": "function positionIdCounter() view returns (uint256)", - "isPositionRunning": "function isPositionRunning(uint256 positionId) view returns (bool)", - "getAmounts": "function getAmounts(address userAddress, uint256 positionId) view returns (tuple(address token0, address token1, uint256 amount0, uint256 amount1, uint256 amount0UsdValue, uint256 amount1UsdValue))", - "getUncollectedFees": "function getUncollectedFees(address userAddress, uint256 positionId) view returns (tuple(address token0, address token1, uint128 amount0, uint128 amount1, uint256 amount0UsdValue, uint256 amount1UsdValue))" -} diff --git a/projects/reyield-finance/index.js b/projects/reyield-finance/index.js deleted file mode 100644 index cc74e322412..00000000000 --- a/projects/reyield-finance/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ABI = require('./abi.json') - -const positionManagerFactory = "0x3332Ae0fC25eF24352ca75c01A1fCfd9fc33EAca" -const positionHelper = "0x76136A56963740b4992C5E9dA5bB58ECffC92ce3" - -async function tvl(api) { - const { managers } = await api.call({ - target: positionManagerFactory, - abi: ABI.getPositionManagers, - params: [0, 1000000], - }) - - const owners = await api.multiCall({ abi: ABI.getOwner, calls: managers, }) - const counters = await api.multiCall({ abi: ABI.positionIdCounter, calls: managers, }) - - await Promise.all(managers.map(async (manager, i) => { - const owner = owners[i] - const calls = [] - for (let pid = 1; pid <= counters[i]; pid++) { - calls.push({ params: [owner, pid] }) - } - if (!calls.length) return; - - const liquidity = await api.multiCall({ abi: ABI.getAmounts, calls, target: positionHelper }) - const fees = await api.multiCall({ abi: ABI.getUncollectedFees, calls, target: positionHelper }) - liquidity.forEach(addValue) - fees.forEach(addValue) - })) - - return api.getBalances() - - function addValue(i) { - api.add(i.token0, i.amount0) - api.add(i.token1, i.amount1) - } -} - -const chains = [ - 'optimism', - 'polygon', -] - -module.exports = { - start: '2023-09-28', // Sep-28-2023 03:59:38 AM +UTC - doublecounted: true, - methodology: "TVL is equal to users' running positions' liquidity value plus uncollected fees.", -}; - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/rezerve-lending/index.js b/projects/rezerve-lending/index.js deleted file mode 100644 index c98fba6e1c8..00000000000 --- a/projects/rezerve-lending/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getCuratorTvl } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets deposited into vaults curated by Rezerve', - ethereum: { - euler: [ - '0xc42d337861878baa4dc820d9e6b6c667c2b57e8a', // USDC - '0xBAfC1A885e25C6F594e06F12edaeB46858547724', // frxUSD - '0x3036155a3eD3e7F6FFf1E96e88f1FE51b6D2f3aD', // FRAX - ], - }, -} - -const tvl = (chain) => ({ tvl: async (api) => await getCuratorTvl(api, configs[chain]) }) - -module.exports = { - doublecounted: true, - methodology: configs.methodology, - ethereum: tvl('ethereum'), -} diff --git a/projects/rezerve/index.js b/projects/rezerve/index.js deleted file mode 100644 index 08b2a8ea081..00000000000 --- a/projects/rezerve/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const sonic = { - rzr: '0xb4444468e444f89e1c2CAc2F1D3ee7e336cBD1f5', - depositContract: "0xe22e10f8246dF1f0845eE3E9f2F0318bd60EFC85", - stakingContract: "0xd060499DDC9cb7deB07f080BAeB1aDD36AA2C650", - tokenList: "0xe8cb54f2523ABa0FBD2Bbd11f979BE75bDfd9917", -} - -const ethereum = { - rzr: '0xb4444468e444f89e1c2CAc2F1D3ee7e336cBD1f5', - depositContract: "0x0000030d7a7C4888851F35705B0852CF20Ac1bA6", - stakingContract: "0xcD43c9c6ECCA33a0C3EF6E509f7559c5C5e46399", - tokenList: "0xb68b2BeD621dcE656Ddcc607769fb6AAc3F67B5C", -} - -const tvl = (addresses) => async (api) => { - const abi = 'function getTokens() external view returns (address[] memory)' - const tokens = await api.call({ abi, target: addresses.tokenList }); - const toa = tokens.map(token => [token, addresses.depositContract]) - return api.sumTokens({ tokensAndOwners: toa }) -} - -const pool2 = (addresses) => async (api) => { - const abi = 'function getLpTokens() external view returns (address[] memory)' - const tokens = await api.call({ abi, target: addresses.tokenList }); - return sumTokens2({ api, tokens, owners: [addresses.depositContract], resolveLP: true }) -} - - -const data = { - sonic: { - tvl: tvl(sonic), - pool2: pool2(sonic), - staking: staking(sonic.stakingContract, sonic.rzr, "sonic"), - }, - ethereum: { - tvl: tvl(ethereum), - pool2: pool2(ethereum), - staking: staking(ethereum.stakingContract, ethereum.rzr, "ethereum"), - }, -}; - -module.exports = data; diff --git a/projects/rfox/index.js b/projects/rfox/index.js deleted file mode 100644 index e7697048258..00000000000 --- a/projects/rfox/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const stakings = require("./stakings"); -const pool2s = require("./pool2s") - -module.exports = { - methodology: "Counts Pools and Stakings on both Rfox and Vfox", - ...stakings, - bsc: { - tvl: (async) => ({}), - ...stakings.bsc, - ...pool2s.bsc - } -}; - diff --git a/projects/rfox/pool2s.js b/projects/rfox/pool2s.js deleted file mode 100644 index 4efbe058275..00000000000 --- a/projects/rfox/pool2s.js +++ /dev/null @@ -1,18 +0,0 @@ -const { pool2s } = require("../helper/pool2"); - -const lpTokens = [ - '0x8647782fdda507C28bfd0614BF55200050F35dcD', - '0x8e04b3972b5c25766c681dfd30a8a1cbf6dcc8c1' -] -const stakingContracts = [ - '0x18153F9103cb4B6e1c2C89A0F87bA10baF992723', - '0xCf1B259031b15aB8445719aF5143Ce8e9AF8148B', - '0xfbd99f6417c28a120b52439a72e82e2aed73b114', - '0x8c0c225a5b64997200b3195567b2e649f5ef8510' -] - -module.exports = { - bsc: { - pool2: pool2s(stakingContracts, lpTokens), - }, -} diff --git a/projects/rfox/stakings.js b/projects/rfox/stakings.js deleted file mode 100644 index 5f672486bdf..00000000000 --- a/projects/rfox/stakings.js +++ /dev/null @@ -1,37 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const BSC_RFOX = '0x0a3a21356793b49154fd3bbe91cbc2a16c0457f5' -const BSC_VFOX = '0x4d61577d8fd2208a0afb814ea089fdeae19ed202' - -const BSC_RFOX_STAKINGS = [ - '0x60a3bd6d8d42546a57aea8b8456f2330619b5acc', - '0x273dF269759A319cFbC052585A3eB45d67A8E67A', - '0xff0394014519a7334c8ffc886ea74cdd60229ec0'] - -const BSC_VFOX_STAKINGS = [ - '0x60a3bd6d8d42546a57aea8b8456f2330619b5acc', - '0xa494d1F0AbdA95F84600C195Bc6dd719e2F10fF0', - '0xebcc34134dc3107f0fb285629c041606cfa1f5be', - '0xD1841F1964b3Ac7ab4bDabF9C62720fA669A7040' -] - - -const calculateBscStakings = async function(...params) { - const [rfoxData, vfoxData] = await Promise.all([ - stakings(BSC_RFOX_STAKINGS, BSC_RFOX)(...params), - stakings(BSC_VFOX_STAKINGS, BSC_VFOX)(...params) - ]); - - return { - ...rfoxData, - ...vfoxData - } -} - - -module.exports = { - bsc: { - staking: calculateBscStakings - }, -}; - diff --git a/projects/rfx-exchange-v2/index.js b/projects/rfx-exchange-v2/index.js deleted file mode 100644 index fa3c188d5d6..00000000000 --- a/projects/rfx-exchange-v2/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - // USN Vault market addresses - const owners = [ - "0x4B1ef8Eb333FAE7CdaEc847475CC47bcDB70bF3f", - "0xBA06793bb5E3495c54330F5c5400C9AD14443586", - "0x57ff14bD78d4B9B14E9aEC6e1D5d580d5DCa86ED", - "0x0b4D1d74890a860a7a3dF7769114bCeA7AA8B713", - - // USN vault address - "0x233122C668f6433c0ee5C47A003EEf81c1cc972c" - ] - - // USN address - const tokens = [ - '0x0469d9d1dE0ee58fA1153ef00836B9BbCb84c0B6', - ] - return sumTokens2({ api, owners, tokens}) -} - -async function tvlSonic(api) { - // wS and scUSD vault market addresses - const owners = [ - "0x892329709aA1d21e20f7999A04f93174D8f1a347", - "0xab81DF4b5622dF20F0A00Ef6f2e13DA41b8cdF2E", - "0xA9919fe44a21604DeB4e0F891cBF2fA9529B6089", - "0x393D97Fa698a82e274142a9b505699938b04067d", - "0xCA99e05127700F2C0ffe7e080393485975dB819f", - "0xC990A9b2A4C48d5fFAF957D32a6AE85383C0Ed61", - "0xfb28B0896EC4e9927B0d661925D5BF8bC4b93D50", - "0xd9dDe4503f2ab7Ef4064bD5469210BBa8C2Afc96", - "0xb3B983b58f380AD0D2EB2A1C37de1Eafe336da8E", - "0x4e8477aFCBFfb6efC368826f87b9902EDcfE26a7", - "0x0F51061Db8938819508e4F298505f1d5145354Ce", - "0xa5252989E139BE0bAC2AAb54Fd5905513f157d92", - "0x36F602F500af944063914f888Ea66Ae6C2ec1E60", - "0x6228bEdBf24CFF72cD82494B5B490b3cEdb599bC", - "0x4e662Ed833717e0970a4f5c516A11De685d26478", - "0x14E760f03a0D720c69153F5Ee9A03E3572CC49d6", - "0xCA259051Ace62E4e5ffCd1886f74e5A23790BF2C", - "0x287C297e280c27beb492B4Cd40B1d26F82d4efB9", - "0xf34694ECAe92D40773A2f078e42cE583365EE527", - "0xA447ad29cD24f2f4207b7523C2F666CC7cc28A78", - - // wS and scUSD vaults - "0x13919E105668792AB630148b03D6b91FF6df0491", - "0x0bfFb867472cdaE11D0A10020Ab9a9d9Fdf6193b" - ] - - // wS and scUSD address - const tokens = [ - ADDRESSES.sonic.wS, - ADDRESSES.sonic.scUSD, - ] - return sumTokens2({ api, owners, tokens}) -} - -module.exports = { - era: { - tvl, - }, - sonic: { - tvl: tvlSonic, - }, - methodology: `Counts the total liquidity allocated by the RFX v2 Smart Liquidity Vaults`, -}; diff --git a/projects/rfx-exchange/index.js b/projects/rfx-exchange/index.js deleted file mode 100644 index db50648f637..00000000000 --- a/projects/rfx-exchange/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - // RFX v1 market addresses - const owners = [ - "0xe273272dD4016626C2C640Cf85c9cdBB8786286B", - "0x394ffe92ae4f9a3B3Ba81A6Fd16de423891358C9", - "0x567779Fd248a6f5596748510200C00655b3a0e01", - "0x62170Af269E9Acd09a89279C0485e89aA42857A3", - "0x29c8973cfc64780B9d7fb532A014b3F66DBfD9d1", - "0x822eeCbF89f2431d50Bb540980Cb98F01a5A4eea", - "0x3bA5B5bd204D2a3DC42eD520626744acaCbBa215", - "0x79302b73acF3ec1c18433ef6E04F814C1Cdc408F", - "0x9D4d54c8661a17604A46B849DED78Cf20127fB92", - "0x8EFA54951bF70D9775DFe8F9364df83aD1e1a8cF", - "0x2B7402FfecBC34eBB2a5E87A8F22677Ba0a3b2F5", - "0x7D00EBe4a0aA10eB99dC661e5A305fb3cdB79E8c" - ] - const tokens = [ - ADDRESSES.era.WETH, - ADDRESSES.era.USDC, - "0xB21f16d1EA2E8D96CcFafA397cEf855Bf368AA83", - ADDRESSES.era.ZK, - "0x703b52F2b28fEbcB60E1372858AF5b18849FE867", - "0x0469d9d1dE0ee58fA1153ef00836B9BbCb84c0B6" - ] - return sumTokens2({ api, owners, tokens }) -} - -module.exports = { - era: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/rhea/index.js b/projects/rhea/index.js deleted file mode 100644 index 62dd90e3983..00000000000 --- a/projects/rhea/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const KDAI_RHEA_LP = "0x0b8ac02bf51e1c3a809f8f773dd44025c31c4467"; -const KDAI = ADDRESSES.klaytn.KDAI; -const TREASURY = "0x32F71263CF373d726f4e45286Bbb6935d553E8D0"; -const RHEA = "0x0758fb651282581f86316514e8f5021493e9ed83"; -const STAKING_ADDR = "0xee0f2e95e69d4246f8267be6d0f2610ce75d993c"; - -const chain = 'klaytn' -let balanceResolve - -function getTvlPromise(key) { - return async (ts, _block, chainBlocks) => { - if (!balanceResolve) - balanceResolve = getTvl(ts, _block, chainBlocks) - return (await balanceResolve)[key] - } -} -async function getTvl(timestamp, ethBlock, chainBlocks) { - const block = chainBlocks[chain] - - const balances = { - staking: {}, - tvl: {} - } - - const calls = [ - { target: KDAI_RHEA_LP, params: TREASURY}, - { target: KDAI, params: TREASURY}, - { target: KDAI, params: KDAI_RHEA_LP}, - { target: RHEA, params: KDAI_RHEA_LP}, - { target: RHEA, params:STAKING_ADDR }, - ] - - const { output } = await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - calls, - chain, block, - }); - - const [ - lpBalance, - kdaiBalance, - lpKdaiBalance, - lpRheaBalance, - stakingRheaBalance, - ] = output.map(i => i.output) - - const { output: lpSupply } = await sdk.api.erc20.totalSupply({ target: KDAI_RHEA_LP, block, chain }) - - const rheaPrice = lpKdaiBalance / lpRheaBalance - const staking = stakingRheaBalance * rheaPrice / 10 ** 18 - - const tvl = (kdaiBalance / 1e18) + ((lpBalance / lpSupply) * (lpKdaiBalance * 2 / 1e18)) - sdk.util.sumSingleBalance(balances.tvl, 'tether', tvl) - sdk.util.sumSingleBalance(balances.staking, 'tether', staking) - - return balances -} - -module.exports = { - methodology: "Counts tokens on the treasury for tvl and staked RHEA for staking", - misrepresentedTokens: true, - klaytn: - ['tvl', 'staking'] - .reduce((acc, key) => ({ ...acc, [key]: getTvlPromise(key) }), {}), -}; diff --git a/projects/rho-markets/index.js b/projects/rho-markets/index.js deleted file mode 100644 index de9ba721c24..00000000000 --- a/projects/rho-markets/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { compoundExports2, methodology } = require('../helper/compound') - -module.exports = { - scroll: compoundExports2({ comptroller: '0x8a67AB98A291d1AEA2E1eB0a79ae4ab7f2D76041', cether: '0x639355f34Ca9935E0004e30bD77b9cE2ADA0E692' }), - methodology, -} - - -// module.exports.hallmarks = [ -// [1721347200, "Protocol Exploit"], -// ] \ No newline at end of file diff --git a/projects/rho-protocol/abi/collateral.js b/projects/rho-protocol/abi/collateral.js deleted file mode 100644 index 65d2856fb7d..00000000000 --- a/projects/rho-protocol/abi/collateral.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - getUnderlyingToken: { - name: 'getUnderlyingToken', - type: 'function', - stateMutability: 'view', - inputs: [], - outputs: [ - { - internalType: 'contract IERC20', - name: '', - type: 'address', - }, - ], - }, -}; \ No newline at end of file diff --git a/projects/rho-protocol/abi/contract-provider.js b/projects/rho-protocol/abi/contract-provider.js deleted file mode 100644 index 4d3602644be..00000000000 --- a/projects/rho-protocol/abi/contract-provider.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - getMarketAddresses: { - name: 'getMarketAddresses', - type: 'function', - stateMutability: 'view', - inputs: [ - { - internalType: 'uint256', - name: 'offset', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'limit', - type: 'uint256', - }, - ], - outputs: [ - { - internalType: 'address[]', - name: 'result', - type: 'address[]', - }, - ], - }, -}; \ No newline at end of file diff --git a/projects/rho-protocol/abi/market.js b/projects/rho-protocol/abi/market.js deleted file mode 100644 index 2601a13282e..00000000000 --- a/projects/rho-protocol/abi/market.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - getCollateralManager: { - name: 'getCollateralManager', - type: 'function', - stateMutability: 'view', - inputs: [], - outputs: [ - { - internalType: 'contract ICollateralManager', - name: '', - type: 'address', - }, - ], - }, -} \ No newline at end of file diff --git a/projects/rho-protocol/index.js b/projects/rho-protocol/index.js deleted file mode 100644 index 930c1116f0a..00000000000 --- a/projects/rho-protocol/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const contractsProviderAbi = require('./abi/contract-provider'); -const collateralAbi = require('./abi/collateral'); -const marketAbi = require('./abi/market'); - -const contractProvider = '0xB5855E692465B6c1B5172fCaF59Ac67F20621A4d'; - -const tvl = async (api) => { - const [marketAddresses] = await Promise.all([ - api.call({ - abi: contractsProviderAbi.getMarketAddresses, - target: contractProvider, - params: [0, 1000], - }) - ]); - - const collateralManagers = await api.multiCall({ - abi: marketAbi.getCollateralManager, - calls: marketAddresses.map(addr => ({ target: addr })), - }); - - const tokenAddresses = await api.multiCall({ - abi: collateralAbi.getUnderlyingToken, - calls: collateralManagers.map((addr) => ({ target: addr })), - }); - - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: collateralManagers.map((manager, i) => ({ - target: tokenAddresses[i], - params: [manager], - })), - }); - - api.add(tokenAddresses, balances) -} - -module.exports = { - arbitrum: { - tvl: tvl - } -}; diff --git a/projects/rho-vaults/abi/base.js b/projects/rho-vaults/abi/base.js deleted file mode 100644 index a16beb7ea30..00000000000 --- a/projects/rho-vaults/abi/base.js +++ /dev/null @@ -1,68 +0,0 @@ -module.exports = { - getAllMarketIds: { - name: 'getAllMarketIds', - type: 'function', - stateMutability: 'view', - inputs: [], - outputs: [ - { - internalType: 'bytes32[]', - name: '', - type: 'bytes32[]', - }, - ], - }, - totalAssets: { - name: 'totalAssets', - type: 'function', - stateMutability: 'view', - inputs: [ - { - name: 'marketsOraclePackages', - type: 'tuple[]', - components: [ - { - name: 'marketId', - type: 'bytes32', - internalType: 'bytes32', - }, - { - name: 'packages', - type: 'tuple[]', - internalType: 'struct OraclePackage[]', - components: [ - { - name: 'marketId', - type: 'bytes32', - internalType: 'bytes32', - }, - { - name: 'timestamp', - type: 'uint64', - internalType: 'uint64', - }, - { - name: 'signature', - type: 'bytes', - internalType: 'bytes', - }, - { - name: 'indexValue', - type: 'int256', - internalType: 'int256', - }, - ], - }, - ], - internalType: 'struct MarketOraclePackages[]', - }, - ], - outputs: [ - { - name: '', - type: 'uint256', - internalType: 'uint256', - }, - ], - }, -}; \ No newline at end of file diff --git a/projects/rho-vaults/abi/contract-provider.js b/projects/rho-vaults/abi/contract-provider.js deleted file mode 100644 index 5e53325c889..00000000000 --- a/projects/rho-vaults/abi/contract-provider.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - getVaultAddressById: { - name: 'getVaultAddressById', - type: 'function', - stateMutability: 'view', - inputs: [ - { - internalType: 'VaultId', - name: 'id', - type: 'bytes32' - } - ], - outputs: [ - { - internalType: 'address', - name: '', - type: 'address' - } - ] - } -}; \ No newline at end of file diff --git a/projects/rho-vaults/index.js b/projects/rho-vaults/index.js deleted file mode 100644 index e0bc32c540d..00000000000 --- a/projects/rho-vaults/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const vaultAbi = require('./abi/base.js'); -const ADDRESSES = require('../helper/coreAssets.json') -const contractsProviderAbi = require('./abi/contract-provider.js'); -const { getOraclePackages } = require('./oracle.js'); -const contractProvider = '0x6544779Ba9747cFA20a9b837C9547DE2e0cbf071'; -const vaultId = '0x75671e1fd10680df33ace780f2b92bc4d51be5f35f1d63c5ad7d0af7a0281d2c' - - - -const tvl = async (api) => { - const [vaultAddress, oraclePackages] = await Promise.all([ - api.call({ - abi: contractsProviderAbi.getVaultAddressById, - target: contractProvider, - params: [vaultId], - }), - getOraclePackages() - ]); - - - const marketIds = await api.call({ - abi: vaultAbi.getAllMarketIds, - target: vaultAddress, - }); - - if (!marketIds.length) return { tether: 0 }; - - const input = marketIds.map((marketId) => { - const pkg = oraclePackages.find(p => p.marketId.toLowerCase() === marketId.toLowerCase()); - if (!pkg) return null; - - return { - marketId, - packages: [ - { - marketId: pkg.marketId, - timestamp: Number(pkg.timestamp), - signature: pkg.signature, - indexValue: pkg.indexValue, - } - ] - }; - }).filter(Boolean); - - if (!input.length) return { tether: 0 }; - - const totalAssets = await api.call({ - abi: vaultAbi.totalAssets, - target: vaultAddress, - params: [input], - }); - - api.add(ADDRESSES.arbitrum.USDT, totalAssets) -} - -module.exports = { - arbitrum: { - tvl: tvl - } -}; diff --git a/projects/rho-vaults/oracle.js b/projects/rho-vaults/oracle.js deleted file mode 100644 index e2973746e19..00000000000 --- a/projects/rho-vaults/oracle.js +++ /dev/null @@ -1,17 +0,0 @@ -const axios = require('axios'); - -async function getOraclePackages() { - const response = await axios.get('https://v2.roaracle.app/records'); - const raw = response.data; - - return raw.map(entry => ({ - marketId: entry.oraclePackage.marketId, - timestamp: entry.oraclePackage.timestamp, - signature: entry.oraclePackage.signature, - indexValue: entry.oraclePackage.indexValue, - })); -} - -module.exports = { - getOraclePackages -}; \ No newline at end of file diff --git a/projects/rhombus/index.js b/projects/rhombus/index.js deleted file mode 100644 index b8539b33fc9..00000000000 --- a/projects/rhombus/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -module.exports = { - klaytn: aaveExports(undefined, undefined, undefined, ['0x3eFC37753ec2501b406F3443cFD8D406B52abEa6'], { v3: true }) -} diff --git a/projects/ribbon-earn/index.js b/projects/ribbon-earn/index.js deleted file mode 100644 index 55a9bbe9ab2..00000000000 --- a/projects/ribbon-earn/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk") -const abi = require("../ribbon/abi.json") -const { sumTokensExport } = require('../helper/unwrapLPs'); -const { default: BigNumber } = require("bignumber.js"); - -// Ribbon Earn vaults -const rearnUSDC = "0x84c2b16FA6877a8fF4F3271db7ea837233DFd6f0"; -const rearnstETH = "0xCE5513474E077F5336cf1B33c1347FDD8D48aE8c"; - -// Ethereum Assets -const usdc = ADDRESSES.ethereum.USDC; -const steth = ADDRESSES.ethereum.STETH; - -async function addVaults({ balances, chain, vaults, block, transformAddress = a => a }) { - const { output: balanceRes } = await sdk.api.abi.multiCall({ - abi: abi.totalBalance, - calls: vaults.map(i => ({ target: i[1]})), - chain, block, - }) - - balanceRes.forEach((data, i) => sdk.util.sumSingleBalance(balances, transformAddress(vaults[i][0]), data.output)) -} - -async function getAssetOnVault(asset, param, block) { - const { output: balance } = await sdk.api.abi.call({ - target: asset, abi: 'erc20:balanceOf', params: param, block, - }) - return balance -} - -async function borrowed(_, block) { - const balances = {}; - const vaults = [ - // ribbon earn - [usdc, rearnUSDC], - [steth, rearnstETH], - ] - await addVaults({ balances, block, vaults, }) - sdk.util.sumSingleBalance(balances, usdc, BigNumber(-1 * (await getAssetOnVault(usdc, rearnUSDC, block))).toFixed(0)) - sdk.util.sumSingleBalance(balances, steth, BigNumber(-1 * (await getAssetOnVault(steth, rearnstETH, block))).toFixed(0)) - return balances -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({tokensAndOwners: [[usdc, rearnUSDC], [steth, rearnstETH]]}), - borrowed, - }, -} diff --git a/projects/ribbon-lend/index.js b/projects/ribbon-lend/index.js deleted file mode 100644 index 307ace79fb5..00000000000 --- a/projects/ribbon-lend/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const sdk = require("@defillama/sdk") -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -async function getPools(api) { - const pools = [] - const poolFactory = '0x312853485a41f76f20a14f927cd0ea676588936c' - const logs = await getLogs({ - api, - target: poolFactory, - fromBlock: 15598950, - topic: 'PoolCreated(address,address,address)', - }) - logs.forEach((log) => { - const pool = `0x${log.topics[1].substring(26)}`.toLowerCase(); - const currency = `0x${log.topics[3].substring(26)}`.toLowerCase(); - pools.push({ pool, currency }) - }) - return pools -} - -async function tvl(api) { - const block = api.block - const pools = await getPools(api) - const tokensAndOwners = pools.map(i => ([i.currency, i.pool])) - return sumTokens2({ block, tokensAndOwners }) -} - -async function borrowed(api) { - const pools = await getPools(api) - const calls = pools.map(i => ({ target: i.pool })) - const { output: borrows } = await sdk.api.abi.multiCall({ - abi: "uint256:borrows", calls, block: api.block, - }) - const balances = {} - borrows.forEach(({ output, }, i) => sdk.util.sumSingleBalance(balances, pools[i].currency, output )) - return balances -} - -module.exports = { - ethereum: { - tvl, borrowed, - }, -} diff --git a/projects/ribbon/abi.json b/projects/ribbon/abi.json deleted file mode 100644 index ac9d59a12a9..00000000000 --- a/projects/ribbon/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalBalance": "uint256:totalBalance" -} \ No newline at end of file diff --git a/projects/ribbon/evm.js b/projects/ribbon/evm.js deleted file mode 100644 index e6fd946fb09..00000000000 --- a/projects/ribbon/evm.js +++ /dev/null @@ -1,122 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { sumTokens2, nullAddress, sumTokensExport } = require('../helper/unwrapLPs'); - -// Ethereum Vaults -const uniCallVault = "0xDD9d1B7dEaB1A843A1B584d2CA5903B8A4735deF"; -const ethCallVault = "0x0fabaf48bbf864a3947bdd0ba9d764791a60467a"; -const ethCallVaultV2 = "0x25751853Eab4D0eB3652B5eB6ecB102A2789644B"; -const wbtcCallVault = "0x8b5876f5B0Bf64056A89Aa7e97511644758c3E8c"; -const wbtcCallVaultV2 = "0x65a833afDc250D9d38f8CD9bC2B1E3132dB13B2F"; -const usdcETHPutVault = "0x16772a7f4a3ca291C21B8AcE76F9332dDFfbb5Ef"; -const yvUSDCETHPutVault = "0x8FE74471F198E426e96bE65f40EeD1F8BA96e54f"; -const yvUSDCETHPutVaultV2 = "0xCc323557c71C0D1D20a1861Dc69c06C5f3cC9624"; -const aaveCallVault = "0xe63151A0Ed4e5fafdc951D877102cf0977Abd365"; -const stETHCallVault = "0x53773E034d9784153471813dacAFF53dBBB78E8c"; -const apeCallVault = "0xc0cF10Dd710aefb209D9dc67bc746510ffd98A53"; -const rethCallVault = "0xA1Da0580FA96129E753D736a5901C31Df5eC5edf"; - -// Avalanche Vaults -const avaxCallVault = "0x98d03125c62DaE2328D9d3cb32b7B969e6a87787"; -const savaxCallVault = "0x6BF686d99A4cE17798C45d09C21181fAc29A9fb3"; -const usdcAvaxPutVault = "0x9DD6be071b4292cc88B8190aB718329adEA3E3a3"; - -// Treasury Vaults -const perpCallVault = "0xe44eDF7aD1D434Afe3397687DD0A914674F2E405"; -const balCallVault = "0x2a6B048eB15C7d4ddCa27db4f9A454196898A0Fe"; -const spellCallVault = "0x42cf874bBe5564EfCF252bC90829551f4ec639DC"; -const badgerCallVault = "0x270F4a26a3fE5766CcEF9608718491bb057Be238"; - -// Pausers -const pauserEth = "0xE04e8Ae290965AD4F7E40c68041c493d2e89cDC3"; -const pauserAvax = "0xf08d6a9c2C5a2Dc9B8645c5Ac0b529D4046D19aa"; - -// Ethereum Assets -const weth = ADDRESSES.ethereum.WETH; -const wbtc = ADDRESSES.ethereum.WBTC; -const usdc = ADDRESSES.ethereum.USDC; -const aave = ADDRESSES.ethereum.AAVE; -const perp = "0xbC396689893D065F41bc2C6EcbeE5e0085233447"; -const ape = "0x4d224452801ACEd8B2F0aebE155379bb5D594381"; -const bal = "0xba100000625a3754423978a60c9317c58a424e3D"; -const reth = ADDRESSES.ethereum.RETH; -const steth = ADDRESSES.ethereum.STETH; -const spell = "0x090185f2135308BaD17527004364eBcC2D37e5F6"; -const badger = "0x3472A5A71965499acd81997a54BBA8D852C6E53d"; -const uni = ADDRESSES.ethereum.UNI; - -// Avalanche Assets -const wavax = ADDRESSES.avax.WAVAX; -const savax = ADDRESSES.avax.SAVAX; -const usdce = ADDRESSES.avax.USDC_e; - -async function addVaults({ vaults, api }) { - const tokens = vaults.map(i => i[0]) - const calls = vaults.map(i => i[1]) - const balance = await api.multiCall({ abi: 'uint256:totalBalance', calls }) - api.add(tokens, balance) -} - -async function ethTvl(api) { - const vaults = [ - // theta vault - [uni, uniCallVault], - [weth, ethCallVault], - [weth, ethCallVaultV2], - [wbtc, wbtcCallVault], - [wbtc, wbtcCallVaultV2], - [usdc, usdcETHPutVault], - [usdc, yvUSDCETHPutVault], - [usdc, yvUSDCETHPutVaultV2], - [weth, stETHCallVault], - [aave, aaveCallVault], - [ape, apeCallVault], - [reth, rethCallVault], - - // treasury vault - [perp, perpCallVault], - [bal, balCallVault], - [spell, spellCallVault], - [badger, badgerCallVault], - - ] - - await addVaults({ api, vaults, }) - // pauser holds a variety of coins - return sumTokens2({ api, owner: pauserEth, tokens: [nullAddress, usdc, wbtc, steth, aave,], }) -} - -async function avaxTvl(api) { - const vaults = [ - [wavax, avaxCallVault], - [savax, savaxCallVault], - [usdce, usdcAvaxPutVault], - ] - - await addVaults({ api, vaults, }) - return sumTokens2({ owner: pauserAvax, tokens: [nullAddress, savax], api, }) -} - -/** - * STAKING - */ -const RBN = "0x6123B0049F904d730dB3C36a31167D9d4121fA6B"; -const veRBN = "0x19854C9A5fFa8116f48f984bDF946fB9CEa9B5f7"; -const veRBNStaking = staking(veRBN, RBN); - -module.exports = { - ethereum: { - tvl: ethTvl, - staking: veRBNStaking, - }, - avax: { - tvl: avaxTvl, - }, - bsc: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.bsc.WBNB, '0xC56d5a5BE96B5fB51C2bA5cBC59AfE77198838F7'], // BNB Theta vault - ] - }) - } -}; diff --git a/projects/ribbon/index.js b/projects/ribbon/index.js deleted file mode 100644 index d0abf4fcc6b..00000000000 --- a/projects/ribbon/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const evm = require("./evm"); -const solana = require("./solana"); - -module.exports = { - doublecounted: true, - ...evm, - ...solana, - methodology: "Sums the totalBalance of all Ribbon Theta Vaults", -}; diff --git a/projects/ribbon/solana.js b/projects/ribbon/solana.js deleted file mode 100644 index d133bd938ac..00000000000 --- a/projects/ribbon/solana.js +++ /dev/null @@ -1,152 +0,0 @@ -const { getProvider, sumTokens2, } = require('../helper/solana') -const { Program, } = require("@project-serum/anchor"); - -async function tvl(api) { - const provider = getProvider() - const program = new Program(idl, 'RBN2XNc6JQU6ewFp9TyPq6WznsvNuumzSJkor1nJFcz', provider) - const vaults = await program.account.vault.all() - const tokenAccounts = vaults.map(({ account: { - underlyingMint, - startEpochVaultBalance, - vaultUnderlyingTokenAccount, - vaultDepositQueueUnderlyingTokenAccount, - vaultWithdrawQueueRedeemableTokenAccount, - } }) => { - api.add(underlyingMint.toString(), +startEpochVaultBalance) - return [vaultUnderlyingTokenAccount, vaultDepositQueueUnderlyingTokenAccount, vaultWithdrawQueueRedeemableTokenAccount] - }).flat().map(i => i.toString()) - return sumTokens2({ balances: api.getBalances(), tokenAccounts, }) -} -module.exports = { - solana: { - tvl, - }, -}; - -const idl = { - "version": "0.1.0", - "name": "covered_call_vault", - "instructions": [], - "accounts": [ - { - "name": "Vault", - "type": { - "kind": "struct", - "fields": [ - { - "name": "vaultName", - "type": { - "array": [ - "u8", - 20 - ] - } - }, - { - "name": "vaultNonce", - "type": "u8" - }, - { - "name": "redeemableMintNonce", - "type": "u8" - }, - { - "name": "vaultUnderlyingTokenAccountNonce", - "type": "u8" - }, - { - "name": "depositQueueHeaderNonce", - "type": "u8" - }, - { - "name": "vaultDepositQueueUnderlyingTokenAccountNonce", - "type": "u8" - }, - { - "name": "withdrawQueueHeaderNonce", - "type": "u8" - }, - { - "name": "vaultWithdrawQueueRedeemableTokenAccountNonce", - "type": "u8" - }, - { - "name": "underlyingMint", - "type": "publicKey" - }, - { - "name": "redeemableMint", - "type": "publicKey" - }, - { - "name": "vaultUnderlyingTokenAccount", - "type": "publicKey" - }, - { - "name": "vaultDepositQueueUnderlyingTokenAccount", - "type": "publicKey" - }, - { - "name": "vaultWithdrawQueueRedeemableTokenAccount", - "type": "publicKey" - }, - { - "name": "depositLimit", - "type": "u64" - }, - { - "name": "epochSequenceNumber", - "type": "u64" - }, - { - "name": "startEpoch", - "type": "u64" - }, - { - "name": "endDeposits", - "type": "u64" - }, - { - "name": "startSettlement", - "type": "u64" - }, - { - "name": "endEpoch", - "type": "u64" - }, - { - "name": "epochCadence", - "type": "u32" - }, - { - "name": "startEpochVaultBalance", - "type": "u64" - }, - { - "name": "optionMint", - "type": "publicKey" - }, - { - "name": "optionsRemaining", - "type": "bool" - }, - { - "name": "collateralCollected", - "type": "bool" - }, - { - "name": "depositQueueHeader", - "type": "publicKey" - }, - { - "name": "withdrawQueueHeader", - "type": "publicKey" - } - ] - } - } - ], - "types": [], - "events": [], - "errors": [] -} \ No newline at end of file diff --git a/projects/riddle/index.js b/projects/riddle/index.js deleted file mode 100644 index 4784127c15e..00000000000 --- a/projects/riddle/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require("../helper/cache/getLogs"); - -module.exports = { - xrplevm: { - tvl: async (api) => { - // const xrp = ADDRESSES.GAS_TOKEN_2; - const wxrp = ADDRESSES.xrplevm.WXRP; - const factory = "0x4e127808535795C58045e546c4b1554ae4aeF3cD"; - const fromBlock = 1; - const pairs = await getPairs(api, factory, fromBlock); - - const reserves = await api.multiCall({ - abi: "function getReserves() view returns (uint256, uint256, uint256)", - calls: pairs, - }); - - reserves.forEach(reserve => { - const _reserve1 = reserve[2]; - api.add(wxrp, _reserve1); - }); - } - } -}; - -async function getPairs(api, factory, fromBlock) { - const logs = await getLogs({ - api, - target: factory, - eventAbi: - "event PairCreated(address indexed tokenA, address indexed tokenB, address pair, uint)", - onlyArgs: true, - fromBlock, - topics: [ - "0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9", - ], - }); - return logs.map((i) => i.pair); -} diff --git a/projects/ridotto/index.js b/projects/ridotto/index.js deleted file mode 100644 index 98f6a229ac4..00000000000 --- a/projects/ridotto/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -module.exports = { - bsc: { - staking: sumTokensExport({ - tokensAndOwners: [ - [ - "0xe9c64384dEb0C2bF06D991A8D708c77eb545E3d5", - "0x0d514227db4eB4C9ed86a261622BcA326e95a376", - ], // LOTTERY/RDT - [ - "0xe9c64384dEb0C2bF06D991A8D708c77eb545E3d5", - "0xCc6EE7b545EFa1bE02DC08B1e24c2bAe23c2bf9C", - ], // SLOTS/RDT - [ - "0xe9c64384dEb0C2bF06D991A8D708c77eb545E3d5", - "0x2Ae4Ca022882491a7D1229dA25E9E7c6b89AA189", - ], // MASTER-CROUPIER/RDT - ], - }), - pool2: sumTokensExport({ - tokensAndOwners: [ - [ - "0x3B1Be589E16A1c1f09F554a2339d65cE30125210", - "0xed60979cA4743aFd86Ad6B204cD5DC2671B4c8d4", - ], // LOTTERY/LP - [ - "0x3B1Be589E16A1c1f09F554a2339d65cE30125210", - "0xf11F35f79CB0FFF47d3467AFF655dCaf67de7570", - ], // SLOTS/LP - [ - "0x3B1Be589E16A1c1f09F554a2339d65cE30125210", - "0x2Ae4Ca022882491a7D1229dA25E9E7c6b89AA189", - ], // MASTER-CROUPIER/LP - ], - resolveLP: true, - }), - tvl: sumTokensExport({ - tokensAndOwners: [ - [ - ADDRESSES.bsc.USDT, - "0x2c5B04F5744724ccEaAdA451f81b6E6a98D53fde", - ], // BANKROLL/BUSD - ], - }), - }, -}; diff --git a/projects/rif-on-chain/index.js b/projects/rif-on-chain/index.js deleted file mode 100644 index 5bca62e4309..00000000000 --- a/projects/rif-on-chain/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - rsk: { - tvl: sumTokensExport({ owner: '0xA27024eD70035E46DBa712609FC2AFA1c97aa36a', tokens: ['0x2aCc95758f8b5F583470bA265Eb685a8f45fC9D5']}) - } -} \ No newline at end of file diff --git a/projects/rift-finance/index.js b/projects/rift-finance/index.js deleted file mode 100644 index 161f694b01f..00000000000 --- a/projects/rift-finance/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const NETWORKS = require("./networks"); - -const riftVaultAbi = { - rewarder: "address:rewarder", - pid: "uint256:pid", -}; -const masterChefAbi = { - userInfo: "function userInfo(uint256 pid, address user) view returns (tuple(uint256 amount, uint256 rewardDebt))", -} - -async function tvl(api) { - const chain = api.chain - - const { graphUrl } = NETWORKS[chain]; - - const query = ` - query get_vaults{ - cores{ - vaults { - id - type - token0 { id } - token1 { id } - pair { id } - } - } - } - `; - - const { cores } = await cachedGraphQuery('rift-fi/' + chain, graphUrl, query); - const toa = [] - - await Promise.all(cores[0].vaults.map(async vault => { - toa.push([vault.token0.id, vault.id]) - toa.push([vault.token1.id, vault.id]) - toa.push([vault.pair.id, vault.id]) - - // Look for MasterChef balance. - if (vault.type === "SUSHI_SWAP") { - const rewarder = await api.call({ target: vault.id, abi: riftVaultAbi.rewarder, }) - - const pid = await api.call({ target: vault.id, abi: riftVaultAbi.pid, }) - - const { amount: masterChefBal } = await api.call({ target: rewarder, abi: masterChefAbi.userInfo, params: [pid, vault.id], }) - api.add(vault.pair.id, masterChefBal) - } - })) - - return sumTokens2({ api, tokensAndOwners: toa, resolveLP: true }); -} - - -module.exports = { - aurora: { - tvl, - }, - ethereum: { - tvl, - }, -}; diff --git a/projects/rift-finance/networks.js b/projects/rift-finance/networks.js deleted file mode 100644 index 4b2c0cbee46..00000000000 --- a/projects/rift-finance/networks.js +++ /dev/null @@ -1,15 +0,0 @@ -const sdk = require("@defillama/sdk"); -module.exports = { - aurora: { - coreAddress: "0x40A01A4064b690cA33FA52d315ec02015eF5287E", - startBlock: 58983267, - graphUrl: - sdk.graph.modifyEndpoint('GkqMC7XyPQFceCjT7rdqc62nzfF5WsVCn6HA9q17VBW'), - }, - ethereum: { - coreAddress: "0x5D7e616B2c0bf268494A482e315a60814F97dBC8", - startBlock: 14845882, - graphUrl: - sdk.graph.modifyEndpoint('44q7UpeVu33BTDwHd1iHJnEYXwcF9NM6HRd5oSVdLFDQ'), - }, -}; diff --git a/projects/rigoblock/index.js b/projects/rigoblock/index.js deleted file mode 100644 index cb2314d60d8..00000000000 --- a/projects/rigoblock/index.js +++ /dev/null @@ -1,148 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getUniqueAddresses } = require('../helper/tokenMapping') - -const activeTokensAbi = 'function getActiveTokens() view returns ((address[] activeTokens, address baseToken))' -const tokenIdsAbi = 'function getUniV4TokenIds() view returns (uint256[])' -const ownerOfAbi = 'function ownerOf(uint256 tokenId) view returns (address)' - -const REGISTRY = '0x06767e8090bA5c4Eca89ED00C3A719909D503ED6' // same on all chains - -module.exports = { - methodology: `RigoBlock TVL on Ethereum, Arbitrum, Optimism, BSC, Base, and Unichain pulled from onchain data, including Uniswap V4 liquidity position balances (excluding GRG balances). Staking TVL includes staked GRG, plus GRG balances in Uniswap V4 liquidity positions, and GRG balances held by smart pool contracts.`, -} - -const config = { - ethereum: { - fromBlock: 15817831, - GRG_VAULT_ADDRESSES: '0xfbd2588b170Ff776eBb1aBbB58C0fbE3ffFe1931', - GRG_TOKEN_ADDRESSES: '0x4FbB350052Bca5417566f188eB2EBCE5b19BC964', - UNISWAP_V4_POSM: '0xbD216513d74C8cf14cf4747E6AaA6420FF64ee9e', - }, - arbitrum: { - fromBlock: 32290603, - GRG_VAULT_ADDRESSES: '0xE86a667F239A2531C9d398E81154ba125030497e', - GRG_TOKEN_ADDRESSES: '0x7F4638A58C0615037deCc86f1daE60E55fE92874', - UNISWAP_V4_POSM: '0xd88F38F930b7952f2DB2432Cb002E7abbF3dD869', - }, - optimism: { - fromBlock: 31239008, - GRG_VAULT_ADDRESSES: '0x5932C223186F7856e08A1D7b35ACc2Aa5fC57BfD', - GRG_TOKEN_ADDRESSES: '0xEcF46257ed31c329F204Eb43E254C609dee143B3', - UNISWAP_V4_POSM: '0x3C3Ea4B57a46241e54610e5f022E5c45859A1017', - }, - bsc: { - fromBlock: 25550259, - GRG_VAULT_ADDRESSES: '0x5494B4193961a467039B92CCfE0138Fe353240d6', - GRG_TOKEN_ADDRESSES: '0x3d473C3eF4Cd4C909b020f48477a2EE2617A8e3C', - UNISWAP_V4_POSM: '0x7A4a5c919aE2541AeD11041A1AEeE68f1287f95b', - }, - base: { - fromBlock: 2568188, - GRG_VAULT_ADDRESSES: '0x7a7fa66B97a9e009ecAB4bCD62e87b2c0b65F21D', - GRG_TOKEN_ADDRESSES: '0x09188484e1Ab980DAeF53a9755241D759C5B7d60', - UNISWAP_V4_POSM: '0x7C5f5A4bBd8fD63184577525326123B519429bDc', - }, - unichain: { - fromBlock: 16121670, - GRG_VAULT_ADDRESSES: '0x448366d7C2e0af67D3723De875b7eAf548474A37', - GRG_TOKEN_ADDRESSES: '0x03C2868c6D7fD27575426f395EE081498B1120dd', - UNISWAP_V4_POSM: '0x4529A01c7A0410167c5740C487A8DE60232617bf', - }, -} - -Object.keys(config).forEach(chain => { - const { fromBlock, GRG_TOKEN_ADDRESSES, GRG_VAULT_ADDRESSES, UNISWAP_V4_POSM, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const { pools, tokens, uniV4Ids } = await getPoolInfo(api) - return sumTokens2({ - owners: pools, - tokens, - api, - blacklistedTokens: [GRG_TOKEN_ADDRESSES], - resolveUniV4: true, - uniV4ExtraConfig: { positionIds: uniV4Ids,} - }) - }, - staking: async (api) => { - const { pools, uniV4Ids } = await getPoolInfo(api) - // Add GRG balances from vaults - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: pools, target: GRG_VAULT_ADDRESSES }) - bals.forEach(i => api.add(GRG_TOKEN_ADDRESSES, i)) - // Aggregate GRG from vaults, ERC20 pool balances, and Uniswap V4 positions in a single call - return sumTokens2({ - owners: pools, - tokens: [GRG_TOKEN_ADDRESSES], // Includes GRG ERC20 balances held by pools - api, - uniV3WhitelistedTokens: [GRG_TOKEN_ADDRESSES], // Includes GRG from Uniswap V4 positions - resolveUniV4: true, - uniV4ExtraConfig: { positionIds: uniV4Ids, } - }) - }, - } - - async function getPoolInfo(api) { - const poolKey = `${api.chain}-${api.block}` - if (!poolData[poolKey]) poolData[poolKey] = _getPoolInfo() - return poolData[poolKey] - - async function _getPoolInfo() { - // Fetch pool addresses from registry logs - const registeredLogs = await getLogs({ - api, - target: REGISTRY, - fromBlock, - topic: 'Registered(address,address,bytes32,bytes32,bytes32)', - onlyArgs: true, - eventAbi: 'event Registered(address indexed group, address pool, bytes32 indexed name, bytes32 indexed symbol, bytes32 id)' - }) - const pools = registeredLogs.map(i => i.pool) - - // Fetch active tokens and base token for each pool - const tokenData = await api.multiCall({ - abi: activeTokensAbi, - calls: pools, - permitFailure: true, // V3 pools do not have activeTokens - }) - const validTokenData = tokenData.filter(data => data !== null) - - const tokens = validTokenData.flatMap(i => i.activeTokens) - const baseTokens = validTokenData.map(i => i.baseToken).filter(Boolean) - const allTokens = [...tokens, ...baseTokens] - - // Fetch Uniswap V4 position tokenIds for all pools - const tokenIdsData = await api.multiCall({ - abi: tokenIdsAbi, - calls: pools, - permitFailure: true, // Allow pools without tokenIds - }) - - // Prepare Uniswap V4 position IDs - const uniV4Ids = [] - for (let i = 0; i < pools.length; i++) { - const pool = pools[i] - const tokenIds = tokenIdsData[i] || [] - if (tokenIds.length === 0) continue - - // Verify ownership with POSM - const owners = await api.multiCall({ - abi: ownerOfAbi, - calls: tokenIds.map(id => ({ target: UNISWAP_V4_POSM, params: [id] })), - permitFailure: true, - }) - - // Filter valid tokenIds where pool is the owner - const validTokenIds = tokenIds.filter((id, j) => owners[j] === pool) - uniV4Ids.push(...validTokenIds) - } - - const uniqueTokens = getUniqueAddresses(allTokens) - sdk.log('chain: ', api.chain, 'pools: ', pools.length, 'tokens: ', uniqueTokens.length, 'valid uniV4 tokenIds: ', uniV4Ids.length, 'uniV4 pools: ', pools.filter((_, i) => tokenIdsData[i]?.length > 0).length) - return { pools, tokens: uniqueTokens, uniV4Ids } - } - } -}) - -const poolData = {} \ No newline at end of file diff --git a/projects/rikkei-finance/index.js b/projects/rikkei-finance/index.js deleted file mode 100644 index ab2eb9c503f..00000000000 --- a/projects/rikkei-finance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports } = require("../helper/compound"); - -module.exports = { - bsc: compoundExports( - '0x4f3e801Bd57dC3D641E72f2774280b21d31F64e4', - '0x157822aC5fa0Efe98daa4b0A55450f4a182C10cA', - ADDRESSES.bsc.WBNB - ) -}; -module.exports.bsc.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/ring-dex/index.js b/projects/ring-dex/index.js deleted file mode 100644 index cad23889d1e..00000000000 --- a/projects/ring-dex/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const fewFactoryConfig = { - ethereum: { factory: '0x7D86394139bf1122E82FDF45Bb4e3b038A4464DD' }, - blast: { factory: '0x455b20131D59f01d082df1225154fDA813E8CeE9' }, - bsc: { factory: '0xEeE400Eabfba8F60f4e6B351D8577394BeB972CD' }, - base: { factory: '0xb3Ad7754f363af676dC1C5be40423FE538a47920' }, - arbitrum: { factory: '0x974Cc3F3468cd9C12731108148C4DABFB5eE556F' }, - hyperliquid: { factory: '0x6B65ed7315274eB9EF06A48132EB04D808700b86' } -} - -const factoryConfig = { - ethereum: { factory: '0xeb2A625B704d73e82946D8d026E1F588Eed06416' }, - blast: { factory: '0x24F5Ac9A706De0cF795A8193F6AB3966B14ECfE6' }, - bsc: { factory: '0x4De602A30Ad7fEf8223dcf67A9fB704324C4dd9B' }, - base: { factory: '0x9BfFC3B30D6659e3D84754cc38865B3D60B4980E' }, - arbitrum: { factory: '0x1246Fa62467a9AC0892a2d2A9F9aafC2F5609442' }, - hyperliquid: { factory: '0x4AfC2e4cA0844ad153B090dc32e207c1DD74a8E4' }, -} - -Object.keys(fewFactoryConfig).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const fewTokens = await api.fetchList({ lengthAbi: 'allWrappedTokensLength', itemAbi: 'allWrappedTokens', target: fewFactoryConfig[chain].factory }) - const pairs = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: factoryConfig[chain].factory }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pairs }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pairs }) - const allTokens = token0s.concat(token1s) - const names = await api.multiCall({ abi: 'string:name', calls: allTokens, permitFailure: true }) - names.forEach((name, i) => { - if (!name) return; - if (name.startsWith('Few Wrapped')) fewTokens.push(allTokens[i]) - }) - const ownerTokens = pairs.map(((pair, i) => [[token0s[i], token1s[i]], pair])) - return sumTokens2({ api, ownerTokens, blacklistedTokens: fewTokens, }) - } - } -}); diff --git a/projects/ring-few/index.js b/projects/ring-few/index.js deleted file mode 100644 index 54e1956d3a2..00000000000 --- a/projects/ring-few/index.js +++ /dev/null @@ -1,21 +0,0 @@ - -const config = { - ethereum: { factory: '0x7D86394139bf1122E82FDF45Bb4e3b038A4464DD' }, - blast: { factory: '0x455b20131D59f01d082df1225154fDA813E8CeE9' }, - bsc: { factory: '0xEeE400Eabfba8F60f4e6B351D8577394BeB972CD' }, - base: { factory: '0xb3Ad7754f363af676dC1C5be40423FE538a47920' }, - arbitrum: { factory: '0x974Cc3F3468cd9C12731108148C4DABFB5eE556F' }, - hyperliquid: { factory: '0x6B65ed7315274eB9EF06A48132EB04D808700b86' } -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const fewTokens = await api.fetchList({ lengthAbi: 'allWrappedTokensLength', itemAbi: 'allWrappedTokens', target: config[chain].factory }) - const tokens = await api.multiCall({ abi: 'address:token', calls: fewTokens }) - const symbols = await api.multiCall({ abi: 'string:symbol', calls: tokens, permitFailure: true }) - const blacklistedTokens = tokens.filter((token, i) => symbols[i] && (symbols[i].includes('RING') || symbols[i].includes('RNG') || symbols[i] === 'USDR' || symbols[i].startsWith('fw'))) - return api.sumTokens({ tokensAndOwners2: [tokens, fewTokens], blacklistedTokens, }) - } - } -}) \ No newline at end of file diff --git a/projects/ringfi/index.js b/projects/ringfi/index.js deleted file mode 100644 index 9a57a7b084a..00000000000 --- a/projects/ringfi/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const sdk = require("@defillama/sdk"); -const owner = "0x59AE8c783eBCe3CC68ccE32C427128101fa4C405"; -const target = "0x021988d2c89b1A9Ff56641b2F247942358FF05c9"; - -async function staking(timestamp, b, {bsc: block}) { - return { - [`bsc:${target}`]: ( - await sdk.api.erc20.balanceOf({ - target, - owner, - block, - chain: "bsc", - }) - ).output, - }; -} - -module.exports = { - bsc: { - tvl: () => ({}), - staking, - }, - methodology: "We count all RING deposited into wRING contract", -}; - - -module.exports.deadFrom = '2023-05-09' \ No newline at end of file diff --git a/projects/rings/index.js b/projects/rings/index.js deleted file mode 100644 index 4604f4390fe..00000000000 --- a/projects/rings/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { stakings } = require("../helper/staking"); -const { balanceOf } = require('@defillama/sdk/build/erc20'); -const { ethereum } = require('../helper/whitelistedNfts'); - -module.exports = { - methodology: 'TVL counts the tokens deposited in the boring vaults.', - start: 1733726867 -} - -const CONFIG = { - ethereum: { - vaults: [ - ADDRESSES.sonic.scUSD, - ADDRESSES.sonic.scETH, - '0xBb30e76d9Bb2CC9631F7fC5Eb8e87B5Aff32bFbd' - ], - supportedAssets: [ - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, // USDT - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.SDAI, // SDAI - ADDRESSES.ethereum.sUSDS, // SUSDS - '0xCAcd6fd266aF91b8AeD52aCCc382b4e165586E29', // frxUSD - '0xcf62F905562626CfcDD2261162a51fd02Fc9c5b6', // sfrxUSD - ADDRESSES.ethereum.WETH, // WETH - ADDRESSES.ethereum.WSTETH, // WSTETH - ADDRESSES.ethereum.STETH, // WSTETH - ADDRESSES.ethereum.WEETH, // WEETH - ADDRESSES.ethereum.EETH, // WEETH - '0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f', // GHO - '0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', // AAVEUSDC - '0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a', // AAVEUSDT - '0x32a6268f9Ba3642Dda7892aDd74f1D34469A4259', // AAVESUSDS - '0x1a88Df1cFe15Af22B3c4c783D4e6F7F9e0C1885d', // STKGHO - '0xdC035D45d973E3EC169d2276DDab16f1e407384F', // USDS - '0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', // AAVEWETH - '0xd63070114470f685b75B74D60EEc7c1113d33a3D', // USDO MORPHO, - '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB', // STEAK_USDC - '0x6A29A46E21C730DcA1d8b23d637c101cec605C5B', // FGHO - '0x5C20B550819128074FD538Edf79791733ccEdd18', // FUSDT - '0x9Fb7b4477576Fe5B32be4C1843aFB1e55F251B33', // FUSDC - '0x2371e134e3455e0593363cBF89d3b6cf53740618', // GAUNTLET WETH - '0xFF94993fA7EA27Efc943645F95Adb36C1b81244b', // GEARBOX STETH - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.EBTC, // EBTC - ADDRESSES.ethereum.LBTC // LBTC - ] - }, - sonic: { - vaults: [ - ADDRESSES.sonic.scUSD, - ADDRESSES.sonic.scETH, - '0xBb30e76d9Bb2CC9631F7fC5Eb8e87B5Aff32bFbd' - ], - supportedAssets: [ - ADDRESSES.sonic.USDC_e, - '0x50c42dEAcD8Fc9773493ED674b675bE577f2634b', // WETH - ADDRESSES.berachain.WBTC, // WBTC - ADDRESSES.sonic.LBTC, // LBTC - '0x578Ee1ca3a8E1b54554Da1Bf7C583506C4CD11c6', // AUSDC - '0xe18Ab82c81E7Eecff32B8A82B1b7d2d23F1EcE96', // AWETH - '0x80Eede496655FB9047dd39d9f418d5483ED600df', // frxUSD - '0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0' // sfrxUSD - ], - }, - plasma: { - vaults: [ - '0xd1E70089Bd036896B7454ED5dc5E74C656CC0F7a', - ], - supportedAssets: [ - '0x1DD4b13fcAE900C60a350589BE8052959D2Ed27B', - '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb' - ], - } -} - -Object.keys(CONFIG).forEach((chain) => { - const { vaults, supportedAssets } = CONFIG[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owners: vaults, tokens: supportedAssets }), - }; -}); diff --git a/projects/ripae/index.js b/projects/ripae/index.js deleted file mode 100644 index d3d7da01473..00000000000 --- a/projects/ripae/index.js +++ /dev/null @@ -1,90 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const chains = [ - { - chain: "fantom", - token: "0x112df7e3b4b7ab424f07319d4e92f41e6608c48b", - share: "0x8a41f13a4fae75ca88b1ee726ee9d52b148b0498", - rewardPool: "0xa058316Af6275137B3450C9C9A4022dE6482BaC2", - masonry: "0x704115B8200392f2855B400bf0E414F3C8c3A472", - pool2: [ - "0x9ce8e9b090e8af873e793e0b78c484076f8ceece", - "0x2dc234dbfc085ddbc36a6eacc061d7333cd397b0" - ] - }, - { - chain: "avax", - token: "0x6ca558bd3eaB53DA1B25aB97916dd14bf6CFEe4E", - share: "0x9466Ab927611725B9AF76b9F31B2F879Ff14233d", - rewardPool: "0xb5cc0Ed74dde9F26fBfFCe08FF78227F4Fa86029", - masonry: "0xf5e49b0a960459799F1E9b3f313dFA81D2CE553c", - pool2: [ - "0x1179E6AF2794fA9d39316951e868772F96230375", - "0x6139361Ccd4f40abF3d5D22AA3b72A195010F9AB" - ] - }, - { - chain: "bsc", - token: "0xA2315cC5A1e4aE3D0a491ED4Fe45EBF8356fEaC7", - share: "0x6c7fc3Fd4a9f1Cfa2a69B83F92b9DA7EC26240A2", - rewardPool: "0x18A5aefA5a6B20FeEeF0a3AabF876c813b04dB3d", - masonry: "0x9Fb5Ee9D3ACebCCa39F69d6A2aa60fd8eAfA88B6", - pool2: [ - "0xC7DC9343C90Be0Ea2af6776EFe5e19B2734F8D0d", - "0x8eA4875469e8Fd7ad3790b4c7DEeF768ca1e806f" - ] - }, - { - chain: "polygon", - token: "0xA0dF47432d9d88bcc040E9ee66dDC7E17A882715", - share: "0x8063037ea50E4a066bF1430EA1E3e609CD5cEf6B", - rewardPool: "0xa4dC4c7624acE1b415e6D937E694047b517F2D99", - masonry: "0x4f1437a43500B7863c614528e6A15b220904010B", - pool2: [ - "0x05eFa0Ed56DDdB4E950E3F5a54e349A137d4edC9", - "0x07D53b147eF96FAD1896D1156755A9Da7E06098E" - ] - }, - { - chain: "cronos", - token: "0xA5e6a847f79BA19AAF41b8e1B2e6C4741234C6b7", - share: "0xA01fAe0612a4786ec296Be7f87b292F05c68186B", - rewardPool: "0x83EA9d8748A7AD9f2F12B2A2F7a45CE47A862ac9", - masonry: "0xf5e49b0a960459799F1E9b3f313dFA81D2CE553c", - pool2: [ - "0xB0dC8B777DD82a951D688f8E5Dc4EBcB42D57C75", - "0xBa11E930e37721c91ea55fAA7BC2EcEfA05D1436" - ] - }, - { - chain: "arbitrum", - token: "0xA0dF47432d9d88bcc040E9ee66dDC7E17A882715", - share: "0x83EA9d8748A7AD9f2F12B2A2F7a45CE47A862ac9", - rewardPool: "0x4d1D896FD501788d8605f672AD72fC05Fe5ab311", - masonry: "0x74C76108cE9555475A504A2A4A28d3Ba3354E89A", - pool2: [ - "0xB54B196E9FeCcF364c2281da1E11BC498cB5c1C1", - "0x89A3A5b03f705A10443fB0A93f19F6cBB7ca191A" - ] - }, - { - chain: "optimism", - token: "0x6ca558bd3eaB53DA1B25aB97916dd14bf6CFEe4E", - share: "0x09448876068907827ec15f49a8f1a58c70b04d45", - rewardPool: "0xf5e49b0a960459799F1E9b3f313dFA81D2CE553c", - masonry: "0x95F73Fc89F62b42410fC4A4a60edEfC51De0B7B0", - pool2: [ - "0x20d33fF7880f65a3554bBEE9C4E9BF79812C6ef6", - "0x9629a694C041f3b10cE974DC37eF4dD4596c4F54" - ] - } -]; - -module.exports = { - misrepresentedTokens: true, - ...chains - .map(c => - tombTvl(c.token, c.share, c.rewardPool, c.masonry, c.pool2, c.chain, undefined, false, c.pool2[1]) - ) - .reduce((prev, curr) => ({ ...prev, ...curr }), {}) -}; diff --git a/projects/rising-undead/index.js b/projects/rising-undead/index.js deleted file mode 100644 index 37fe07560a0..00000000000 --- a/projects/rising-undead/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const owner = "0xc732471083342a842a728221878327c8DeE8aEDB"; -const tokens = [ - {symbol: "WKAVA", address: ADDRESSES.kava.WKAVA }, - {symbol: "ETH", address: ADDRESSES.moonriver.USDC }, - {symbol: "USDC", address: ADDRESSES.telos.ETH }, - {symbol: "USDT", address: ADDRESSES.moonriver.USDT }, -] - -module.exports = { - kava: { - tvl: sumTokensExport({ owner, tokens: tokens.map(i => i.address)}) - } -} \ No newline at end of file diff --git a/projects/risk-harbor/index.js b/projects/risk-harbor/index.js deleted file mode 100644 index 298b8787642..00000000000 --- a/projects/risk-harbor/index.js +++ /dev/null @@ -1,288 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { - queryContract, - sumTokens: sumTokensCosmos, -} = require("../helper/chain/cosmos"); -const { sumTokens, } = require("../helper/unwrapLPs"); -const vaultManagerAbi = "address[]:getVaults"; -const vaultAbi = 'function self() view returns (tuple(address underwritingToken, uint32 start, uint32 expiration, uint8 underwritingTokenDecimals) config, tuple(tuple(tuple(uint128 numerator, uint128 denominator)[] expectedXVector, tuple(uint128 numerator, uint128 denominator)[] varCovarMatrix, tuple(uint128 numerator, uint128 denominator) lambda) config) amm, tuple(tuple(address standard, address rollover) underwritingPositionERC20, address nextVault, uint56 poolCount, uint32 latestInteraction, bool paused, uint256 premiums, uint256 premiumsAccruedPerShare, uint256 premiumDripBasis, uint256[] allocationVector) state)' - -const networks = { - ethereum: { - // V2.5 Factory (underwriting tokens are dynamically fetched) - vaultManager: "0x7B99AfA5A2EC23499e6CD6955dEdF85318347cc9", - // V2 Vaults - vaults: [ - // [underwritingAsset, vaultAddress] - [ - ADDRESSES.ethereum.USDC, - "0x83944C256e5C057A246aE1b1945934440eb35Af6", - ], - [ - ADDRESSES.ethereum.USDC, - "0x8D999a2f262FfDA47A734B987D1A15bc984e45Be", - ], - [ - ADDRESSES.ethereum.USDC, - "0x0881Ec8e0e743906E1c1dFeE8Ae12BfDc0611b24", - ], - [ - ADDRESSES.ethereum.USDC, - "0x8529687adD661120C9E23E366Cc7F545f1A03ADf", - ], - [ - ADDRESSES.ethereum.USDC, - "0x61635d1De721DD1DB35f8aCFD0f1ea367dF65671", - ], - ], - }, - arbitrum: { - vaultManager: "0x713C8810F79B4F101f66bB5b5a1326473ae5c7f7", - vaults: [ - [ - ADDRESSES.arbitrum.USDC, - "0x207472891AF32F5636c35d9ca8e17464Df7108bB", - ], - [ - ADDRESSES.arbitrum.USDC, - "0xbcA81A2118982182d897845571BE950aE94C619c", - ], - [ - ADDRESSES.arbitrum.USDC, - "0x2DafE4DD7C661c2CEaf967d51206f5130AA32782", - ], - [ - ADDRESSES.arbitrum.USDC, - "0xdd74ee6c6568429537bf30cb63dab0061b83c41a" - ], - [ - ADDRESSES.arbitrum.USDC, - "0xc7c52aa35d499e0c18ff3854f24e65d43c97d5a4" - ], - [ - ADDRESSES.arbitrum.USDC, - "0x695d803207579bb4f34c97ab3e3a449de8ad042e" - ], - [ - ADDRESSES.arbitrum.USDC, - "0x451709e54474a7a7df889e98124180847782cb4a" - ] - ], - }, - avax: { - vaultManager: "0xBf8c506a56F355d2340F37a91FA6569737b08254", - vaults: [ - [ - ADDRESSES.avax.USDC, - "0x2DafE4DD7C661c2CEaf967d51206f5130AA32782", - ], - [ - // Count av3CRV in the above vault too - "0x1337BedC9D22ecbe766dF105c9623922A27963EC", - "0x2DafE4DD7C661c2CEaf967d51206f5130AA32782", - ], - [ - ADDRESSES.avax.USDC, - "0xBe09C11d28683E283fdf7566DE1685A6A221B6bf", - ], - [ - ADDRESSES.avax.USDC, - "0xBe09C11d28683E283fdf7566DE1685A6A221B6bf", - ], - ], - }, - fantom: { - vaults: [ - [ - ADDRESSES.fantom.USDC, - "0xca67B16b02E418CFbC9EF287C7C20B77dbb665f2", - ], - ], - }, - aurora: { - vaults: [ - [ - ADDRESSES.aurora.USDC_e, - "0x8D999a2f262FfDA47A734B987D1A15bc984e45Be", - ], - ], - }, - optimism: { - vaultManager: "0x7c1187AF4D6B23F7f7682799454168E24bC06EED", - vaults: [ - [ - ADDRESSES.optimism.USDC, - "0xfB969b45Fa9186CD8B420407552aD447F7c3817b", - ], - [ - ADDRESSES.optimism.USDC, - "0x88e7385eacf8e31c9cddce7632bfe654b58f4a09", - ], - [ - ADDRESSES.optimism.USDC, - "0x88e7385eacf8e31c9cddce7632bfe654b58f4a09" - ], - [ - ADDRESSES.optimism.USDC, - "0x01bd59477e03d9034684a118ba67cfa32cd9b123" - ], - [ - ADDRESSES.optimism.USDC, - "0xdf9d37e1a19474e5928fb410a3f8513a25ba680c" - ] - - ], - }, - polygon: { - vaults: [ - [ - ADDRESSES.polygon.USDC, - "0xdf9d37e1a19474e5928fb410a3f8513a25ba680c" - ], - [ - ADDRESSES.polygon.USDC, - "0xadaab38f3ecdf2b486eb3cab7f54bdcbdfb7fd66" - ], - [ - ADDRESSES.polygon.USDC, - "0x4db26943e581c1befaa5d682f6404de17c028487" - ], - [ - ADDRESSES.polygon.USDC, - "0xa644bdf7f0da0b83623ac4d01607ea91a24b1ede" - ] - ] - }, - terra: { - vaults: [ - "terra1dlfz2teqt5shxuw87npfecjtv7xlrxvqd4sapt", // Ozone v1 pool 1 - "terra1h6t8gx7jvc2ens9nrxcf9vqylzquey75e2wvzt", // Ozone v1 pool 2 - ], - }, - terra2: { - wrapped_luna: "terra1ufj34v4agxlazv6gv36fsdm5e8y4kclqgp0qt0l8ureql9pcwssspma238", - factory: "terra1lnq5rk4gla2c537hpyxq6wjs8g0k0dedxug2p50myydaqjtm4g5ss94y8n", - masterPool: - "terra1gz50vgzjssefzmld0kfkt7sfvejgel9znun9chsc82k09xfess5qqu8qyc", // Ozone v2 underwriting master pool - }, -}; - -async function getManagedVaults(vaultManager, block, chain) { - let res = []; - const { output: managedVaults } = await sdk.api.abi.call({ - abi: vaultManagerAbi, - target: vaultManager, - block, - chain, - }); - - let calls = []; - managedVaults.forEach((vault) => { - calls.push({ - target: vault, - }); - }); - - const { output: vaultStoragesResult } = await sdk.api.abi.multiCall({ - abi: vaultAbi, - calls, - block, - chain, - }); - - // Join the two arrays into [[underwritingToken, vaultAddr]] - vaultStoragesResult.forEach((vaultStorageResult) => { - if (vaultStorageResult.success) { - const underwritingToken = - vaultStorageResult.output.config.underwritingToken; - res.push([underwritingToken, vaultStorageResult.input.target]); - } - }); - - return res; -} - -async function terra2(api) { - const { addresses } = await queryContract({ - contract: networks.terra2.factory, - chain: "terra2", - data: { - get_vaults: {}, - }, - }); - - // 09-28-22 As of now, the only asset supported for deposit - // is Luna2 in the form of wrapped Luna2 since RH Ozone v2 does - // not support native token types - // For each vault, query its wrapped LUNA2 balance - for (const address of addresses) { - const { balance } = await queryContract({ - contract: networks.terra2.wrapped_luna, - chain: 'terra2', - data: { balance: { address: address } } - }) - api.add('terra-luna-2', balance / 1e6) - } - - return sumTokensCosmos({ balances: api.getBalances(), owner: networks.terra2.masterPool, chain: "terra2", }) -} - -async function terra(timestamp, ethBlock, chainBlocks) { - return sumTokensCosmos({ owners: networks.terra.vaults, chain: "terra" }); -} - -function evm(chainName) { - return async (api) => { - const network = networks[chainName]; - - if (network.vaultManager) { - const managedVaults = await getManagedVaults( - network.vaultManager, - api.block, - chainName - ); - network.vaults = [...network.vaults, ...managedVaults]; - } - - return sumTokens( - undefined, - network.vaults, - api.block, - chainName, - ); - }; -} - -module.exports = { - timetravel: false, - methodology: "Amount of underwriter capital inside the protocol", - terra: { - tvl: terra, - }, - terra2: { - tvl: terra2, - }, - ethereum: { - tvl: evm("ethereum"), - }, - arbitrum: { - tvl: evm("arbitrum"), - }, - avax: { - tvl: evm("avax"), - }, - fantom: { - tvl: evm("fantom"), - }, - aurora: { - tvl: evm("aurora"), - }, - optimism: { - tvl: evm("optimism"), - }, - polygon: { - tvl: evm("polygon"), - }, - hallmarks: [[1651881600, "UST depeg"]], -}; diff --git a/projects/risq.js b/projects/risq.js deleted file mode 100644 index cf25fdac0b0..00000000000 --- a/projects/risq.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') - -const bnbPool = "0x55D10490C500FBF334C0fD91A0b205a5D64b9367"; //BNB_POOL - -const poolsV1 = [ - "0x3BEC8B9e416d65209eB5432aDDCb38146E977CcB", //WBTC_POOL - "0xCB73c1472832615Dad82Af5bb34f55cdC7C9b0C5", //ETH_POOL - "0xaD5D3593f7821394956D520181a3Cf5371CB1420", //BCH_POOL - "0xFBB55B8A0Bf58dD1B163170731A6766BDAceB677", //LTC_POOL - "0x485d254532d2132F32be5b1A9E2D0F1Dd10B2baC", //COMP_POOL - "0xc1A58426E3dDd28Cb73f75F9Ae92A0B4a68394b4", //CAKE_POOL - "0x0a985cb13e44184405990c6eD0C717AaEcEd4666", //UNI_POOL - "0xeFF6515bbB8A6cdDeb187352e293D7debFFDb4Fd", //LINK_POOL - "0x8DCEf72912f57410E3047E8863d63b261A679Ed9" //YFI_POOL -]; - -const tokens = [ - ADDRESSES.bsc.BTCB, //WBTC - ADDRESSES.bsc.ETH, //WETH - "0x8ff795a6f4d97e7887c79bea79aba5cc76444adf", //BCH - "0x4338665cbb7b2485a8855a139b75d5e34ab0db94", //LTC - "0x52ce071bd9b1c4b00a0b92d298c512478cad67e8", //COMP - "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", //CAKE - "0xbf5140a22578168fd562dccf235e5d43a02ce9b1", //UNI - "0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd", //LINK - "0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e" //YFI -]; - -async function tvl(api) { - await api.sumTokens({ tokensAndOwners2: [tokens,poolsV1,]}) - return api.sumTokens({ tokens: [ADDRESSES.null], owners: [bnbPool],}) -} - -module.exports = { - bsc: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/ritsu/index.js b/projects/ritsu/index.js deleted file mode 100644 index 572b0614dee..00000000000 --- a/projects/ritsu/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs2 } = require('../helper/cache/getLogs') - -async function tvl(api) { - const { fromBlock, basicFactorys, stableFactorys, rhythmFactorys = [] } = config[api.chain] - - let logs = await Promise.all([basicFactorys, stableFactorys, rhythmFactorys].flat().map(getFactoryLogs)) - logs = logs.flat() - - const ownerTokens = logs.map(({ token0, token1, pool }) => [[token0, token1], pool]) - return sumTokens2({ api, ownerTokens}) - - async function getFactoryLogs(target) { - return getLogs2({ - api, - target, - fromBlock, - eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, address pool)', - }) - } -} - -const config = { - taiko: { - fromBlock: 787, - stableFactorys: ['0x3e846B1520E74728EFf445F1f86D348755F738d9'], - basicFactorys: ['0xDFFee0ad5C833f2A5E610dfe9FD1aD82743eA74e'], - rhythmFactorys: ['0x0A78CAB89a069555a18B78537f09fab24c03dECd'] - } -} - -Object.keys(config).forEach(chain => { module.exports[chain] = { tvl } }) \ No newline at end of file diff --git a/projects/river4fun/index.js b/projects/river4fun/index.js deleted file mode 100644 index 75876113378..00000000000 --- a/projects/river4fun/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -function createExports({ - farmList, // { address, asset }[] -}) { - return { - tvl: async api => { - const tokensAndOwners = []; - if (farmList) { - for (let index = 0; index < farmList.length; index++) { - const { address: farmAddress, asset } = farmList[index]; - tokensAndOwners.push([asset, farmAddress]); - } - } - - return sumTokens2({ api, tokensAndOwners }); - }, - }; -} - -module.exports = { - bsc: createExports({ - farmList: [ - { - address: '0xc1BFd0b70D9A8a397437d32039051B1b4814AC02', - asset: ADDRESSES.bsc.WBNB, // WBNB - }, - { - address: '0x36fcA82042fe13570455f7C9A9b08b0f758000e6', - asset: '0xAF558b832C290C29f59Ddf317e6E010fb5758f27', // GOLD - }, - { - address: '0xD480a0Aab2Bc4A536449B18B7d0C1b3a3c326C93', - asset: '0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d', // USD1 - }, - { - address: '0x9dA4F7DF9d6D4789b9fd47aa98630546FE0DC839', - asset: '0x87d00066cf131ff54B72B134a217D5401E5392b6', // PUFFER - }, - { - address: '0x0F1c38CEA75bD9521996d1E6778E0d8Da514ae10', - asset: '0x783c3f003f172c6Ac5AC700218a357d2D66Ee2a2', // B2 - }, - { - address: '0x1aF72A4A25fef21b6db385c5842Dafc754e703Dc', - asset: '0xCAAE2A2F939F51d97CdFa9A86e79e3F085b799f3', // TUT - }, - { - address: '0x527BB020493724aEbAD66744AFc811B15402F032', - asset: '0xabE8E5CabE24Cb36df9540088fD7cE1175b9bc52', // SOLV - }, - { - address: '0x67cF8c8CF57587eAD064E02F5FeF73Aa6CFcC038', - asset: '0x3aee7602b612de36088f3ffed8c8f10e86ebf2bf', // BANK - }, - { - address: '0xcB6e19606eECc93b21AE847a7506be571f58F1e6', - asset: '0xa0c56a8c0692bD10B3fA8f8bA79Cf5332B7107F9', // MERL - }, - { - address: '0x668c8F77442F92e60707102e289DE5AFa84A5382', - asset: '0x0C808F0464C423d5Ea4F4454fcc23B6E2Ae75562', // EDGEN - }, - { - address: '0xaB7695c6613162C6319fbfFc08b5606E9c21A442', - asset: '0xFf7d6A96ae471BbCD7713aF9CB1fEeB16cf56B41', // Bedrock - }, - { - address: '0x6C87b5B856F6d3ec8BcB80CD0613356691206FAd', - asset: '0x0000028a2eB8346cd5c0267856aB7594B7a55308', // ZetaChain - }, - { - address: '0xC7020Ea170c484E8Ef27A0DCB9441F5373DF88aa', - asset: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', // CAKE - }, - { - address: '0x854394b4792F967F9b0C0A0b79352ea115a3B214', - asset: '0x103071Da56e7cD95b415320760D6a0dDC4DA1ca5', // XTER - }, - { - address: '0x516b51d47EEf84df74D91475C4aDC061EA4E3529', - asset: '0x74836cC0E821A6bE18e407E6388E430B689C66e9', // JAGER - }, - { - address: '0x358Cd0aC98e662E428A463D11b5967c5119B4e20', - asset: '0x51363F073b1E4920fdA7AA9E9d84BA97EdE1560e', // BOB - }, - { - address: '0x7397CD23b450C1e7e0DB5A91cdcE8E90A7974c13', - asset: '0xf4B385849f2e817E92bffBfB9AEb48F950Ff4444', // EGL1 - }, - { - address: '0x09d764e46bd9355f8086761a4771f522984dfd28', - asset: '0x208bF3E7dA9639f1Eaefa2DE78c23396B0682025', // Tagger - }, - { - address: '0x25213f3B73382B7be037332D626255b36242CAd8', - asset: '0x3c8D20001FE883934A15c949a3355a65Ca984444', // Janitor - }, - { - address: '0x84F9C0d827BB03696616BD28020F58514cDADF32', - asset: '0x6EA8211A1E47dBD8b55c487c0B906ebC57B94444', // Liberty - }, - { - address: '0xC3F64F628E28B6Ba1565dcaF88660ACd449394F8', - asset: '0xFE8bF5B8F5e4eb5f9BC2be16303f7dAB8CF56aA8', // BIBI - }, - { - address: '0x34471ccFc8f9bFAa4800eFB639C4c7080033aa18', - asset: '0x9C7BEBa8F6eF6643aBd725e45a4E8387eF260649', // G - }, - { - address: '0x48e791F20c524fA6800D65cA52063eFB66d4E590', - asset: '0xc08Cd26474722cE93F4D0c34D16201461c10AA8C', // CARV - }, - { - address: '0x69288E9489a557Bb05b26989B8FfD2f5bd4943dF', - asset: '0xB78C8F4e04F9d5Fc6Db469DBa25006D9AAa38888', // Pengu - }, - { - address: '0xB27773c1F72d74a77DC84409791b4752AE9ef065', - asset: '0x6f88DBed8f178F71F6A0C27Df10D4f0B8dDf4444', // Usagi - }, - { - address: '0x6671bC9Ef65ac81D57eE22Bc63Cf63B67C34C723', - asset: '0x47474747477b199288bF72a1D702f7Fe0Fb1DEeA', // WLFI - }, - ], - }), -}; diff --git a/projects/rivera_money/index.js b/projects/rivera_money/index.js deleted file mode 100644 index bd45d7734ee..00000000000 --- a/projects/rivera_money/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const { sumERC4626VaultsExport } = require("../helper/erc4626"); -const config = { - mantle: [ - "0xfa944c1996efBF9FbFF1a378903F4AD82C172D72", - "0x945438ef559EFf400429DFb101e57a6299B5ceE2", - "0xA25d1843eedE1E1D0631b979da605606412e64f7", - "0xAa81F912D09Fd313Bbc1d5638632aB6bf59aB495", - "0x0DB2BA00bCcf4F5e20b950bF954CAdF768D158Aa", - "0x713C1300f82009162cC908dC9D82304A51F05A3E", - "0xDc63179CC57783493DD8a4Ffd7367DF489Ae93BF", - "0x5f247B216E46fD86A09dfAB377d9DBe62E9dECDA", - "0xCbb95e8a63cd37D09c2948A22c12632469fb0BC7", - "0x907a942ce79ca4Cf063d2e987024dc9E88C5ac98", - "0xB2b593Ab057e99edbAA33258b5613227F64c80C6", - "0x38B73D78c45b39B7658635fA753EfBE2d4077A33", - "0x0ca817970d1Bf8789CCB26aC0a6b69d02b6dF34e", - "0x16d6e3B2979C61D3fa399Cc7D65EFFaadd46682c", - ], - manta: [ - "0x713C1300f82009162cC908dC9D82304A51F05A3E", - "0x0DB2BA00bCcf4F5e20b950bF954CAdF768D158Aa", - "0xDc63179CC57783493DD8a4Ffd7367DF489Ae93BF", - "0x5f247B216E46fD86A09dfAB377d9DBe62E9dECDA", - "0x45C3BB1a0f0827bF03C089842334B861474e7714", - "0x241d09eC72809C4C390BC81b81dEF4d1E0e88626", - ], - telos: [ - "0x67e07BFfce318ADbA7b08618CBf4B8E271499197", - "0x70527810CB658FaDBe16845485fC79EC7722c860", - "0xA0dD02ef78570a4d93b7eE334EA9c593F7A0ebc4", - "0x4778CAAa0E52F0B58eAF5e947Ae81A0a10cDe707", - ], - arbitrum: [ - "0x8E99B66dE170b53b39D9B54f189a12D7c6AC0cd9" - ], - - degen: [ - "0xA95417805d18d00844c3C6FB7742577Cd263fE05", - "0x39dD79E8b1e74E8B514D7e133b3671435Ec3Da42", - "0xE45F416eE25844281edF2780247E28569303c7Cd", - "0xB9107C1Ad02bD2E20692499156F99411297d23F5", - "0x17A6b417249D92A2F3F7a88384c5Aa88D0d95A28", - ], - - bsquared: [ - "0xBC91a7a0eE37085af193C61747ecE693979Ec0C1", - "0xD57a87a9101d567C4139247CdF149b1DA4c8604A" - ], - - polygon: [ - "0x67e07BFfce318ADbA7b08618CBf4B8E271499197" - ], - - core: [ - "0xBC91a7a0eE37085af193C61747ecE693979Ec0C1", - "0x018BeE125A17D456E6dacE22A66E8B9aF3c69449", - ], -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(config).forEach(chain => { - const vaults = config[chain] - module.exports[chain] = { - tvl: sumERC4626VaultsExport({ vaults, tokenAbi: 'asset', balanceAbi: 'totalAssets' }) - } -}) \ No newline at end of file diff --git a/projects/rivrkitty.js b/projects/rivrkitty.js deleted file mode 100644 index fc4bda932ca..00000000000 --- a/projects/rivrkitty.js +++ /dev/null @@ -1,29 +0,0 @@ - -const { sumTokens2, } = require('./helper/unwrapLPs'); -const abi = require("./pendle/abi.json"); - -const masterchefContract = '0x1f4b7660b6AdC3943b5038e3426B33c1c0e343E6' -const stakingContract = '0x995ef3a5D14b66Ac5C7Fa1a967F8D9Cd727452bA'; -const tokens = [ - '0x9a92b5ebf1f6f6f7d93696fcd44e5cf75035a756', // FINN - '0x8e643094fb9941e273c2190563d7c514d56c841b', // HBLP - '0x6714cd1e19363dc613154ebe440172e41575c469', // PAWS - '0xDCd92eb568157D3c1a6b3AE53ADF18a230bc304A', // HBLP -]; -// node test.js projects/rivrkitty.js -async function pool2(api) { - const { amount } = await api.call({ - target: masterchefContract, - abi: abi.userInfo, - params: [19, stakingContract], - }); - api.add(tokens[3], amount) - return sumTokens2({ api, owner: stakingContract, tokens, resolveLP: true, }) -} - -module.exports = { - moonriver: { - pool2, - tvl: async () => ({}) - } -}; \ No newline at end of file diff --git a/projects/rivusdao/index.js b/projects/rivusdao/index.js deleted file mode 100644 index 5ad93faec9d..00000000000 --- a/projects/rivusdao/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const rTokens = [ - // '0x5e17abe30f0b804730c4e4db0ad217d8c29d05a0', // rsTAO - // '0xcD7D22146ea9F26d0208848B6a1A9d1Bb538245A', // rsCOMAI - '0x3d8ede6231243d56e7896477789a450ce7fd2ad3' // rsNMT -] - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:wrappedToken', calls: rTokens }) - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: rTokens }) - // const mintedBal = await api.call({ abi: 'erc20:balanceOf', target: rTokens[1], params: '0xA47F6159Ed855Ed7E9ec3Ca339b1B7491777d08E' }) - api.add(tokens, supplies) - // api.add(tokens[1], mintedBal * -1) -} - -module.exports = { - methodology: "TVL is calculated as the sum of the total supplies of rsTAO, rsCOMAI and rsNMT tokens.", - ethereum: { - tvl, - }, - // hallmarks: [ - // ['2024-09-16', 'Migration contract was hacked'], - // ], -}; diff --git a/projects/rize/index.js b/projects/rize/index.js deleted file mode 100644 index 386369069e1..00000000000 --- a/projects/rize/index.js +++ /dev/null @@ -1,112 +0,0 @@ -const sui = require("../helper/chain/sui"); -const ADDRESSES = require('../helper/coreAssets.json') - -const suiScallopPools = { - usdc: { - poolId: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0", - rewardPoolId: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8", - type: ADDRESSES.sui.USDC, - stakeType: "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::reserve::MarketCoin<0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN>", - balanceSheet: '0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93', - spoolAccount: 'a5a2d2afe12ed353ca32a3d5f7592a7a57945040ee7beacab6d82a5fe5b34734', - decimals: 6, - }, - usdt: { - poolId: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f", - rewardPoolId: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080", - type: ADDRESSES.sui.USDT, - stakeType: "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::reserve::MarketCoin<0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN>", - balanceSheet: '0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879', - spoolAccount: '775206c05243da6b1a29a45c74bd3d3e7db4b3f8303342cbf34c3d12725eac70', - decimals: 6, - }, - weth: { - poolId: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787", - rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077", - type: ADDRESSES.sui.WETH, - stakeType: "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::reserve::MarketCoin<0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN>", - balanceSheet: '0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c', - spoolAccount: '3865596e3ea8860e4d479b91d2b9f5c57adab00d70b13ac6c7eb410fd092d2cc', - decimals: 8, - }, -} -const suiNaviPools = { - naviAddress: "0x966231078dda644567e71131267946b0e4cef7740d298f94b30af3293be1a755", - reserveParentId: "0xe6d4c6610b86ce7735ea754596d71d72d10c7980b5052fc3c8cdf8d09fea9b4b", - usdc: { - supplyBalanceParentId: "0x8d0a4467806458052d577c8cd2be6031e972f2b8f5f77fce98aa12cd85330da9", - assetId: 1, - decimals: 6, - }, - usdt: { - supplyBalanceParentId: "0x7e2a49ff9d2edd875f82b76a9b21e2a5a098e7130abfd510a203b6ea08ab9257", - assetId: 2, - decimals: 6, - }, - weth: { - supplyBalanceParentId: "0xa668905b1ad445a3159b4d29b1181c4a62d864861b463dd9106cc0d97ffe8f7f", - assetId: 3, - decimals: 6, - }, -} - -async function tvl(api) { - const [ethInNaviSui, ethInScallopSui, usdtInNaviSui, usdtInScallopSui, usdcInNaviSui, usdcInScallopSui] = await Promise.all([ - naviSui("weth"), - scallopSui("weth"), - naviSui("usdt"), - scallopSui("usdt"), - naviSui("usdc"), - scallopSui("usdc"), - ]); - api.addGasToken(ethInNaviSui * 1e18) - api.addGasToken(ethInScallopSui * 1e18) - api.add(ADDRESSES.ethereum.USDT, usdtInNaviSui * 1e6) - api.add(ADDRESSES.ethereum.USDT, usdtInScallopSui * 1e6) - api.add(ADDRESSES.ethereum.USDC, usdcInNaviSui * 1e6) - api.add(ADDRESSES.ethereum.USDC, usdcInScallopSui * 1e6) -} - - -async function scallopSui(coinSymbol) { - const spoolAccountResp = await sui.getObject(suiScallopPools[coinSymbol].spoolAccount); - const stakesBalance = spoolAccountResp?.fields?.stakes ?? 0 - const stakeBalance = stakesBalance / 10 ** suiScallopPools[coinSymbol].decimals - const balanceSheetResp = await sui.getObject(suiScallopPools[coinSymbol].balanceSheet); - const cash = balanceSheetResp?.fields?.value?.fields?.cash ?? 0 - const debt = balanceSheetResp?.fields?.value?.fields?.debt ?? 0 - const revenue = balanceSheetResp?.fields?.value?.fields?.revenue ?? 0 - const marketCoinSupply = balanceSheetResp?.fields?.value?.fields?.market_coin_supply ?? 0 - const conversionRate = (+cash + +debt - +revenue) / marketCoinSupply - const tvl = stakeBalance * conversionRate - return tvl; -} - -async function naviSui(coinSymbol) { - const naviResp = await sui.getDynamicFieldObject( - suiNaviPools[coinSymbol].supplyBalanceParentId, - suiNaviPools.naviAddress, - { idType: 'address' }); - - const currentSupply = naviResp?.fields?.value ?? 0 - - const assetResp = await sui.getDynamicFieldObject( - suiNaviPools.reserveParentId, - suiNaviPools[coinSymbol].assetId, - { idType: 'u8' } - ); - const currentSupplyIndexOrg = assetResp?.fields?.value?.fields?.current_supply_index; - const currentSupplyIndex = currentSupplyIndexOrg / 1e27 - - const decimals = suiNaviPools[coinSymbol].decimals - const tvl = (currentSupply / 1e9) * currentSupplyIndex - return tvl; -} - -module.exports = { - start: '2024-05-25', - timetravel: false, - ethereum: { - tvl - } -}; \ No newline at end of file diff --git a/projects/rlyfun/index.js b/projects/rlyfun/index.js deleted file mode 100644 index 21071e2932e..00000000000 --- a/projects/rlyfun/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -const { get } = require('../helper/http') - -async function tvl(api) { - const { tvl } = await get('https://api.radlock.io/tvl/rlyfun') - return { - 'radix': tvl - } -} - -module.exports = { - timetravel: false, - radixdlt: { tvl } -} diff --git a/projects/roaring-lion/index.js b/projects/roaring-lion/index.js deleted file mode 100644 index f32515b6f9e..00000000000 --- a/projects/roaring-lion/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { unwrapBalancerToken } = require('../helper/unwrapLPs') - -const LION = "0x3CC9E655B6c4f530DFc1b1fC51CeEa65c6344716"; -const LSHARE = "0x50d8D7F7CcEA28cc1C9dDb996689294dC62569cA"; -const boardroom = "0x4Dcf5DE955bB5Ae615684582A177974D8155D9fc"; -const rewardPool = "0x119ad97096fff8629347f5af7f36ac1a32de4f2d"; - - -//users can only lock lps in the boardroom -async function pool2(api) { - return unwrapBalancerToken({ api, balancerToken: "0x950667EF678bAe44Ef037c721E564C365FC8303E", owner: boardroom, }) -} - -module.exports = { - methodology: 'TVL consists of 30DAI-70LSHARE balancer pools that users can lock in the boardroom', - bsc: { - tvl: () => ({}), - pool2: pool2, - //staking: LshareRewardPool has no tokens locked - } -}; // node test.js projects/roaring-lion/index.js \ No newline at end of file diff --git a/projects/robinhood/index.js b/projects/robinhood/index.js deleted file mode 100644 index 15a59117558..00000000000 --- a/projects/robinhood/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - "0x6081258689a75d253d87cE902A8de3887239Fe80", - "0x40b38765696e3d5d8d9d834d8aad4bb6e418e489", - ], - }, - bitcoin: { - owners: bitcoinAddressBook.robinhood, - }, - polygon: { - owners: [ - "0x6081258689a75d253d87cE902A8de3887239Fe80", - ], - }, - avax: { - owners: [ - "0x6081258689a75d253d87cE902A8de3887239Fe80", - "0x40b38765696e3d5d8d9d834d8aad4bb6e418e489", - ], - }, -} - -module.exports = cexExports(config) diff --git a/projects/robiniaswap/index.js b/projects/robiniaswap/index.js deleted file mode 100644 index 9894bd2648a..00000000000 --- a/projects/robiniaswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const token = "0xAfAEEe58a58867c73245397C0F768FF041D32d70"; -const masterchef = "0x2C875C19E093F446dE65E46473170703486eb0E6"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", token) -} \ No newline at end of file diff --git a/projects/robots-farm/index.js b/projects/robots-farm/index.js deleted file mode 100644 index 3939970a2ab..00000000000 --- a/projects/robots-farm/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -async function tvl(api) { - return sumTokens2({ - api, - owners: ['0x51C84b14F63999604246Ec7De0e777500D0631D0'], - tokens: [ADDRESSES.optimism.WETH_1] - }); -} - -async function staking(api) { - return sumTokens2({ - api, - owners: ['0x51C84b14F63999604246Ec7De0e777500D0631D0'], - tokens: ['0x15De59489de5e7F240D72F787dC4a292b8199339'] - }) -} - -module.exports = { - start:1688923873, - methodology: 'TVL includes tokens staked in our contracts', - base: { tvl, staking }, -}; diff --git a/projects/robovault/index.js b/projects/robovault/index.js deleted file mode 100644 index c2a8afc3156..00000000000 --- a/projects/robovault/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const sdk = require('@defillama/sdk') - -module.exports = { - hallmarks: [ - [1674820800, "Vaults Pause"] - ], - methodology: 'TVL counts deposits made to the Robo-Vault vaults. Data is pulled from the Robo-Vault API:"https://api.robo-vault.com/vault".', -} - -const config = { - avax: { - vaults: [ - '0x7A6fC041274FF996E2761e02F4b3B4b0f16e955A', - '0x49d743E645C90ef4c6D5134533c1e62D08867b14', - '0xca99b7Ad739Da614BFd6aB70d885CEf80538470a', - '0x7fc282B1B6162733084eE3F882624e2BD1ed941E', - ] - }, - fantom: { - vaults: [ - '0x1B6ecdA7Fd559793c0Def1F1D90A2Df4887B9718', - '0xd10112521e860bdE82FD34f88113052e434930C4', - '0x92D2DdF8eed6f2bdB9a7890a00B07a48C9c7A658', - '0x38Da23Ef41333bE0d309Cd63166035FF3b7E2000', - '0x13994411Eda808B354F62db5490B344F431499ae', - '0x81F0f4fDF5148f09aAE811b5995D94F703ED0963', - ] - }, -} - -Object.keys(config).forEach(chain => { - const { vaults } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults }) - tokens.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, bals[i], api.chain)) - return balances - } - } -}) \ No newline at end of file diff --git a/projects/rocifi-v2/index.js b/projects/rocifi-v2/index.js deleted file mode 100644 index 6d2570b460a..00000000000 --- a/projects/rocifi-v2/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const sdk = require('@defillama/sdk') - -const ROCI_COLLATERAL_MANAGER = { - polygon: '0xd85af14C32Cc98Be9Fe5195eDb797773af8bB609', - era: '0x0C10f6BeaF642Fa43bA8375f160F45704c865E65' -} - -const ROCI_SETTINGS_PROVIDER = { - polygon: '0xb2e577a112A6F2C6d3d511ade2AD512cEA312a6d', - era: '0x719b5f658C13C943010718266a22D8F76cbfc8B9' -} - -const ROCI_LIMIT_MANAGER = { - polygon: '0x347892c2c0C230f0803127F4E1137b3e975F57E4', - era: '0xc8531874Dfe8bc6415e06C1C1eD64dbf5dCeEa18' -} - -const limitManagerAbi = 'function poolToBorrowedAmount(address) view returns (uint256)' - -const getPools = async (chain, api) => { - const pools = await api.call({ target: ROCI_SETTINGS_PROVIDER[chain], abi: "address[]:getPools", }); - const underlyings = await api.multiCall({ abi: "address:underlyingToken", calls: pools }) - return { pools, underlyings } -} - -const tvl = (chain) => async (api) => { - const { pools, underlyings } = await getPools(chain, api); - - const collaterals = await api.call({ - target: ROCI_COLLATERAL_MANAGER[chain], - abi: "address[]:getCollaterals", - }); - - const toa = [ - ...pools.map((pool, i) => [underlyings[i], pool]), - ...collaterals.map((collateral) => [collateral, ROCI_COLLATERAL_MANAGER[chain]]), - ]; - - return sumTokens2({ - api, - tokensAndOwners: toa, - }); -} - -const borrowed = (chain) => async (api) => { - const { pools, underlyings } = await getPools(chain, api); - - const balances = {}; - const borrowed = await api.multiCall({ abi: limitManagerAbi, calls: pools, target: ROCI_LIMIT_MANAGER[chain] }) - underlyings.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, borrowed[i], api.chain)) - return balances -} - -module.exports = { - polygon: { - tvl: tvl('polygon'), - borrowed: borrowed('polygon'), - }, - era: { - tvl: tvl('era'), - borrowed: borrowed('era'), - }, -}; diff --git a/projects/rocifiv1/index.js b/projects/rocifiv1/index.js deleted file mode 100644 index 09f3aed9454..00000000000 --- a/projects/rocifiv1/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const USDC = ADDRESSES.polygon.USDC; -const WETH = ADDRESSES.polygon.WETH_1 - -const ROCI_POOLS = [ - '0x883F10Dc3960493f38F69b8696dC331D22fdEd76', - '0x8bf2B880B48EA3d1b13677f327c5058480b4e1d0', - '0x978F89dE413594378a68CB9C14a83CeC0cEC721b' -]; - -const ROCI_REVENUE_MANAGER = "0x10C9F64289cc5114E8854Cc216aD75a0d19d60b5"; -const ROCI_COLLATERAL_MANAGER = "0x6cb3C5e73b9A6B9E5e9745545a0f40c9724e2337"; - -const RociRevenueManagerABI = 'function balanceAvailable(address _poolAddress) view returns (uint256)' -const poolValueAbi = "uint256:poolValue" - - -async function tvl(api) { - return sumTokens2({ - api, tokensAndOwners: [ - [WETH, ROCI_COLLATERAL_MANAGER], - [USDC, ROCI_REVENUE_MANAGER], - ] - }) -} - -async function borrowed(api) { - const poolValues = await api.multiCall({ - abi: poolValueAbi, - calls: ROCI_POOLS, - }) - const balanceAvailable = await api.multiCall({ - target: ROCI_REVENUE_MANAGER, - abi: RociRevenueManagerABI, - calls: ROCI_POOLS, - }) - let total = 0 - poolValues.forEach(output => total += +output) - balanceAvailable.forEach(output => total -= +output) - if (total < 0) total = 0 - return { - ['polygon:'+USDC]: total / 1e6 - } -} - -module.exports = { - polygon: { - tvl, - borrowed, - }, -}; \ No newline at end of file diff --git a/projects/rocketpool/index.js b/projects/rocketpool/index.js deleted file mode 100644 index 8b5631eb233..00000000000 --- a/projects/rocketpool/index.js +++ /dev/null @@ -1,101 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') - -const ETH = ADDRESSES.null -const RPL = '0xd33526068d116ce69f19a9ee46f0bd304f21a51f' -const rocketNodeManager = '0x2b52479F6ea009907e46fc43e91064D1b92Fdc86' -const rocketVault = '0x3bDC69C4E5e13E52A65f5583c23EFB9636b469d6' -const rocketRewardsPool = '0xEE4d2A71cF479e0D3d0c3c2C923dbfEB57E73111' -const trustedNodeManager = '0xb8e783882b11Ff4f6Cef3C501EA0f4b960152cc9' -const rocketNodeStaking = '0xF18Dc176C10Ff6D8b5A17974126D43301F8EEB95' -const backfill_node_first_block = 21060563 - -const abi = { - getNodeCount: "function getNodeCount() view returns (uint256)", - getNodeAddresses: "function getNodeAddresses(uint256 _offset, uint256 _limit) view returns (address[])", - getNodeDetails: "function getNodeDetails(address _nodeAddress) view returns ((bool exists, uint256 registrationTime, string timezoneLocation, bool feeDistributorInitialised, address feeDistributorAddress, uint256 rewardNetwork, uint256 rplStake, uint256 effectiveRPLStake, uint256 minimumRPLStake, uint256 maximumRPLStake, uint256 ethMatched, uint256 ethMatchedLimit, uint256 minipoolCount, uint256 balanceETH, uint256 balanceRETH, uint256 balanceRPL, uint256 balanceOldRPL, uint256 depositCreditBalance, uint256 distributorBalanceUserETH, uint256 distributorBalanceNodeETH, address withdrawalAddress, address pendingWithdrawalAddress, bool smoothingPoolRegistrationState, uint256 smoothingPoolRegistrationChanged, address nodeAddress))", - getPendingETHRewards: "function getPendingETHRewards() view returns (uint256)", - balanceOf: "function balanceOf(string _networkContractName) view returns (uint256)", - balanceOfToken: "function balanceOfToken(string _networkContractName, address _tokenAddress) view returns (uint256)", - getMemberAt: "function getMemberAt(uint256 _index) view returns (address)", - getMemberCount: "function getMemberCount() view returns (uint256)", - getMemberRPLBondAmount: "function getMemberRPLBondAmount(address _nodeAddress) view returns (uint256)", - getNodeETHProvided: "function getNodeETHProvided(address _nodeAddress) view returns (uint256)", -}; - -const nodeBalances = async (api) => { - /** - Small hack for backfilling: the following code uses a recent contract deployed just 180 days ago. It allows retrieving all the nodeAddresses, - even those prior to this date. If the backfill api's timestamp is earlier than the contract's creation date, we use the creation date as the limit - to continue making calls. We'll then apply a filter to exclude nodeAddresses with registrationTime > api.timestamp - */ - - const block = await api.getBlock() < backfill_node_first_block ? backfill_node_first_block : await api.getBlock() - const nodeApi = new sdk.ChainApi({ chain: api.chain, block }) - const nodeLength = await nodeApi.call({ target: rocketNodeManager, abi: abi.getNodeCount }) - const addresses = await nodeApi.call({ target: rocketNodeManager, abi: abi.getNodeAddresses, params: [0, nodeLength] }); - - const batchSize = 100; - const batchedAddresses = []; - for (let i = 0; i < addresses.length; i += batchSize) { - batchedAddresses.push(addresses.slice(i, i + batchSize)); - } - - const results = []; - for (const batch of batchedAddresses) { - const details = await nodeApi.multiCall({ calls: batch.map((address) => ({ target: rocketNodeManager, params: [address] })), abi: abi.getNodeDetails, permitFailure: true }); - const ethProvided = await nodeApi.multiCall({ calls: batch.map((address) => ({ target: rocketNodeStaking, params: [address] })), abi: abi.getNodeETHProvided, permitFailure: true }); - - const filteredResults = []; - if (details) { - for (let i = 0; i < details.length; i++) { - const detail = details[i]; - if (detail && detail.exists && detail.registrationTime <= api.timestamp) { - filteredResults.push({ - detail, - ethProvided: ethProvided[i] || 0, - }); - } - } - } - - results.push({ - details: filteredResults.map((result) => result.detail), - ethProvided: filteredResults.map((result) => result.ethProvided), - }); - } - - const flattenedDetails = results.flatMap((result) => result.details); - const flattenedEthProvided = results.flatMap((result) => result.ethProvided); - - const { minipoolCount, ethMatched, nodeEthProvided} = flattenedDetails.reduce( - (acc, curr, index) => { - if (!curr) return acc; - acc.minipoolCount += Number(curr.minipoolCount) || 0; - acc.ethMatched += Number(curr.ethMatched) || 0; - acc.nodeEthProvided += Number(flattenedEthProvided[index]) || 0; - return acc; - }, - { minipoolCount: 0, ethMatched: 0, nodeEthProvided: 0} - ); - - api.add(ETH, [ethMatched, nodeEthProvided]) -} - -const tvl = async (api) => { - await nodeBalances(api) - const depositPoolBalance = await api.call({ target: rocketVault, abi: abi.balanceOf, params: ['rocketDepositPool'] }) - api.add(ETH, depositPoolBalance) -} - -const staking = async (api) => { - const trustedNodes = await api.fetchList({ target: trustedNodeManager, lengthAbi: abi.getMemberCount, itemAbi: abi.getMemberAt }) - api.add(RPL, await api.multiCall({ calls: trustedNodes.map((node) => ({ target: trustedNodeManager, params: [node] })), abi: abi.getMemberRPLBondAmount })) - return api.sumTokens({ owner: rocketVault, tokens: [RPL] }) -} - -module.exports = { - start: 1633046400, - methodology: 'TVL represents the total ETH from the minipools', - ethereum: { tvl, staking } -} \ No newline at end of file diff --git a/projects/rocketswap-cc/index.js b/projects/rocketswap-cc/index.js deleted file mode 100644 index 4f4f596b73b..00000000000 --- a/projects/rocketswap-cc/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - base: { tvl: getUniTVL({ factory: '0x1b8128c3a1b7d20053d10763ff02466ca7ff99fc', useDefaultCoreAssets: true, }), }, -} diff --git a/projects/rocketswap.js b/projects/rocketswap.js deleted file mode 100644 index c57efe11d62..00000000000 --- a/projects/rocketswap.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports={ - timetravel: false, - lamden: { - tvl: () => ({}), - }, - deadFrom: "2023-12-09", -} diff --git a/projects/rockswap-staking/index.js b/projects/rockswap-staking/index.js deleted file mode 100644 index 64ced9d6d07..00000000000 --- a/projects/rockswap-staking/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require("../helper/staking"); - -const ROCK = "0x826628622a8B55F4AF6aC2A1DD1273bF837e651a"; -const stakingContract = "0xFDfd4A3CfECD29E00942ee3E01cDa6f92E9270BA"; - -module.exports = { - bitrock: { - tvl: staking(stakingContract, ROCK, "bitrock"), - }, - methodology: "ROCK tokens locked in staking contract", -}; \ No newline at end of file diff --git a/projects/rockswap/index.js b/projects/rockswap/index.js deleted file mode 100644 index dd9f3edd999..00000000000 --- a/projects/rockswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - bitrock: { - tvl: getUniTVL({ factory: '0x02c73ecb9B82e545E32665eDc42Ae903F8AA86a9', useDefaultCoreAssets: true}), - } -} diff --git a/projects/rodeo/abi.json b/projects/rodeo/abi.json deleted file mode 100644 index 7b16ec60643..00000000000 --- a/projects/rodeo/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "peekPools": "function peekPools(address[] pools) view returns (uint256[], uint256[], uint256[], uint256[], uint256[], uint256[])" -} \ No newline at end of file diff --git a/projects/rodeo/index.js b/projects/rodeo/index.js deleted file mode 100644 index 173c2e7a053..00000000000 --- a/projects/rodeo/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const investorHelper = "0x6f456005A7CfBF0228Ca98358f60E6AE1d347E18"; -const pools = [ - "0x0032F5E1520a66C6E572e96A11fBF54aea26f9bE", // usdc-v1 -]; - -async function borrowed(api) { - const assets = await api.multiCall({ abi: 'address:asset', calls: pools}) - const data = await api.call({ abi: abi.peekPools, target: investorHelper, params: [pools]}) - data[3].forEach((v, i) => api.add(assets[i], v)) -} - -async function tvl(api) { - const assets = await api.multiCall({ abi: 'address:asset', calls: pools}) - return sumTokens2({ api, tokensAndOwners2: [assets, pools]}) -} - -module.exports = { - arbitrum: { tvl, borrowed, }, - methodology: `The TVL shown is the result of subtracting the borrow from the supply for each Rodeo lending pool`, - // hallmarks: [ - // ['2023-07-11', 'Protocol was exploited'], - // ], -}; - -module.exports.arbitrum.borrowed = () => ({}) -module.exports.deadFrom = '2023-07-11' \ No newline at end of file diff --git a/projects/roe/index.js b/projects/roe/index.js deleted file mode 100644 index dafa9de98f4..00000000000 --- a/projects/roe/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -module.exports = { - ethereum: aaveExports('ethereum', '0x0029B254d039d8C5C88512a44EAa6FF999296009', undefined, - ['0xC68A4F7764f5219f250614d5647258a17A51a6c7']), - polygon: aaveExports('polygon', '0x1ceb99Acd9788bb7d7Ce4a90219cBb0627b008F9', undefined, - ['0xA0132fF55E4ee9818B2F2d769f6Ba5c14Cfe0DA4']), - arbitrum: aaveExports('arbitrum', '0x01b76559D512Fa28aCc03630E8954405BcBB1E02', undefined, - ['0x156a166B58afB948f4c60e1DC6bEdFF55760c319']), -}; \ No newline at end of file diff --git a/projects/roguex/index.js b/projects/roguex/index.js deleted file mode 100644 index d5c311393ec..00000000000 --- a/projects/roguex/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -// const graphUri = "https://api.studio.thegraph.com/query/42478/blast_mainnet/version/latest"; - -const config = { - blast: [ - {factory: '0x5B0b4b97edb7377888E2c37268c46E28f5BD81d0', fromBlock: 202321,}, - {factory: '0xbd9215e002E4344c8333fc0bf4F5ECEd62BF9B85', fromBlock: 2525118,} - ], -} - -Object.keys(config).forEach(chain => { - const [v1, v2] = config[chain] - module.exports[chain] = { - tvl: async (_, _b, _cb, {api,}) => { - const v1_logs = await getLogs({ - api, - target: v1.factory, - eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, address tradePool)', - onlyArgs: true, - fromBlock: v1.fromBlock, - }) - const v1_ownerTokens = v1_logs.map(i => [[[i.token0, i.token1], i.pool], [[i.token0, i.token1], i.tradePool]]).flat() - - const v2_logs = await getLogs({ - api, - target: v2.factory, - eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, address tradePool)', - onlyArgs: true, - fromBlock: v2.fromBlock, - }) - const v2_ownerTokens = v2_logs.map(i => [[[i.token0, i.token1], i.pool], [[i.token0, i.token1], i.tradePool]]).flat(); - - const all_ownerTokens = v1_ownerTokens.concat(v2_ownerTokens); - return api.sumTokens({ownerTokens: all_ownerTokens}) - } - } -}) diff --git a/projects/roketo/index.js b/projects/roketo/index.js deleted file mode 100644 index 76ef3c6e8cc..00000000000 --- a/projects/roketo/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { call, sumSingleBalance } = require('../helper/chain/near'); - -const GET_STATS_METHOD = 'get_stats'; -const ROKETO_STRIMING_CONTRACT = 'streaming.r-v2.near'; - -const stableTokens = [ - 'a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near', // USDC - '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', // DAI - 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near', // USDT - 'wrap.near', - 'usn', -] - -async function getTokenData() { - return (await call(ROKETO_STRIMING_CONTRACT, GET_STATS_METHOD, {account_id: ROKETO_STRIMING_CONTRACT}))['dao_tokens'] -} - -async function tvl() { - let balances = {}; - const tokens = await getTokenData() - Object.keys(tokens) - .filter(token => stableTokens.includes(token)) - .map((key) => sumSingleBalance(balances, key, tokens[key]['tvl'])); - return balances; -} - -async function vesting() { - let balances = {}; - const tokens = await getTokenData() - Object.keys(tokens) - .filter(token => !stableTokens.includes(token)) - .map((key) => sumSingleBalance(balances, key, tokens[key]['tvl'])); - return balances; -} - - -module.exports = { - timetravel: false, - near: { - tvl, - vesting, - } -} \ No newline at end of file diff --git a/projects/roll-fun/index.js b/projects/roll-fun/index.js deleted file mode 100644 index db36da1ec6c..00000000000 --- a/projects/roll-fun/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs'); -const { nullAddress } = require("../helper/tokenMapping"); - -// Bonding Curves PumpFactory -const PUMP_FACTORY = '0x0fDc7bf21a167A20C49FcA41CCbc3ABa354AcfbD'; - -async function tvl(api) { - const tokenCreatedLogs = await getLogs2({ - api, - factory: PUMP_FACTORY, - eventAbi: 'event TokenCreated(address indexed token, address indexed bondingCurve)', - fromBlock: 1895173, // PumpFactory creation block time - }); - const owners = tokenCreatedLogs.map(i => i.bondingCurve) - return api.sumTokens({ owners, token: nullAddress}) - -} - -module.exports = { - methodology: 'We count the ETH locked in the Bonding Curves contracts', - formnetwork: { - tvl - } -} diff --git a/projects/rolldex/index.js b/projects/rolldex/index.js deleted file mode 100644 index 20c7e80b338..00000000000 --- a/projects/rolldex/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const abi = { - totalValue: "function totalValue() view returns ((address tokenAddress, int256 value, uint8 decimals, int256 valueUsd, uint16 targetWeight,uint16 feeBasisPoints,uint16 taxBasisPoints, bool dynamicFee)[])", -}; - -const CONFIG = { - btr: ['0x3d0E678776e4287BEfB0449d344D195ad1A2C418'], - base: [ - '0xa67998d867cd4b64fe9ecc1549341f1d86389c0f', - // '0x823e0F1E91f9851529Ce90c23e144203a59eF40a', // no activites and liquitiy for token in this vault - ], -}; - -const tvl = async (api) => { - var tokens = [] - for(var i = 0; i < CONFIG[api.chain].length; i++){ - const tokenInfo = await api.call({ abi: abi.totalValue, target: CONFIG[api.chain][i], }); - tokenInfo.forEach((item)=>{ - tokens.push(item.tokenAddress) - }) - } - - return api.sumTokens({ tokens, owners: CONFIG[api.chain] }); -} - -module.exports.methodology = "RollX functions as a decentralized exchange for crypto derivatives. It offers on-chain perpetuals, providing traders and stakers with exceptional opportunities." - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { - tvl, - }; -}) diff --git a/projects/rollie-finance/index.js b/projects/rollie-finance/index.js deleted file mode 100644 index a38f58c6d79..00000000000 --- a/projects/rollie-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - scroll: { - tvl: sumTokensExport({ owners: ['0xA79E00e68549e91e5f0c27048F453b3D87ef6E3D', '0x7Aa73970Dc1eAe1e39AA3eAC9F3DadB4468993a1'], tokens: [ADDRESSES.scroll.USDC] }), - } -} diff --git a/projects/rollspace/index.js b/projects/rollspace/index.js deleted file mode 100644 index 5a38b0cdf82..00000000000 --- a/projects/rollspace/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const BSC_POOL_CONTRACT = '0x011b1b59Dac73AA584546dD05bbF300c9D4ecdA0'; -const BLAST_POOL_CONTRACT = '0x7b0DDc2BD91Cf1a7d4e026ebdEcd575Ef760D9B8'; -const BASE_POOL_CONTRACT = '0x0994c10372BB1d994a6EcCcF81E1225da589A010'; -const MODE_POOL_CONTRACT = '0xbADaC8BDFdC6Ef7be408e94AbE3ddC6bec783E59'; - -module.exports = { - methodology: 'counts the number of BNB and ETH tokens in the bsc, blast, base and mode pool contracts.', - bsc: { - tvl: sumTokensExport({ owner: BSC_POOL_CONTRACT, tokens: [nullAddress], }) - }, - blast: { - tvl: sumTokensExport({ owner: BLAST_POOL_CONTRACT, tokens: [nullAddress], }) - }, - base: { - tvl: sumTokensExport({ owner: BASE_POOL_CONTRACT, tokens: [nullAddress], }) - }, - mode: { - tvl: sumTokensExport({ owner: MODE_POOL_CONTRACT, tokens: [nullAddress], }) - }, -} \ No newline at end of file diff --git a/projects/rollup-fi-pools/index.js b/projects/rollup-fi-pools/index.js deleted file mode 100644 index 91a587fa3c1..00000000000 --- a/projects/rollup-fi-pools/index.js +++ /dev/null @@ -1,26 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { sumTokensExport } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -module.exports = { - era: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owner: '0x4992eb45172868f0d8cceb91190e159bdf571461', tokens: [ADDRESSES.era.USDC] }), - cryptoPoolTvl, - ]) - }, -}; - -async function cryptoPoolTvl(api) { - const logs = await getLogs({ - api, - target: '0x7C5667677e7E6d5a7a3b7cb9EF25a2B4ad2C745A', - eventAbi: "event NewVault(address indexed vault, address indexed creator, address token)", - onlyArgs: true, - fromBlock: 18448266, - }) - - return api.sumTokens({ tokensAndOwners: logs.map(log => [log.token, log.vault]) }) -} \ No newline at end of file diff --git a/projects/rollup-fi/index.js b/projects/rollup-fi/index.js deleted file mode 100644 index b5139e9e815..00000000000 --- a/projects/rollup-fi/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -const { gmxExports } = require('../helper/gmx') - -module.exports = { - era: { - tvl: gmxExports({ vault: '0xefdE2AeFE307A7362C7E0E3BE019D1491Dc7E163' }) - }, -} \ No newline at end of file diff --git a/projects/rome-dao/index.js b/projects/rome-dao/index.js deleted file mode 100644 index ef44acac990..00000000000 --- a/projects/rome-dao/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { ohmTvl } = require('../helper/ohm') - -const treasury = '0xfbAD41e4Dd040BC80c89FcC6E90d152A746139aF' -const dai = '0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844' -const frax = '0x1a93b23281cc1cde4c4741353f3064709a16197d' -const mim = "0x0caE51e1032e8461f4806e26332c030E34De3aDb" - -// https://rome.gitbook.io/romedao/contract-addresses/all-contracts -module.exports = ohmTvl(treasury, [ - [dai, false], - [frax, false], - [mim, false], - ["0x069C2065100b4D3D982383f7Ef3EcD1b95C05894", true] -], "moonriver", "0x6f7D019502e17F1ef24AC67a260c65Dd23b759f1", "0x4a436073552044D5f2f49B176853ad3Ad473d9d6", addr=>`moonriver:${addr}`) \ No newline at end of file diff --git a/projects/ronin-bridge/index.js b/projects/ronin-bridge/index.js deleted file mode 100644 index af62f09e919..00000000000 --- a/projects/ronin-bridge/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owner: "0x64192819Ac13Ef72bF6b5AE239AC672B43a9AF08", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/rooster-protocol/index.js b/projects/rooster-protocol/index.js deleted file mode 100644 index 2e2abd81b30..00000000000 --- a/projects/rooster-protocol/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { uniV3GraphExport } = require("../helper/uniswapV3") - -const config = { - plume_mainnet: "https://api.goldsky.com/api/public/project_cmeix03obfpwk012m74ysbe8w/subgraphs/analytics/1.0.8/gn" -} - -Object.keys(config).forEach(chain => { - const graphURL = config[chain] - module.exports[chain] = { - tvl: uniV3GraphExport({ - graphURL, - name: 'rooster' + chain, - blacklistedTokens: [] - }) - } -}) diff --git a/projects/rooster/index.js b/projects/rooster/index.js deleted file mode 100644 index e3cf11174dc..00000000000 --- a/projects/rooster/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs2 } = require("../helper/cache/getLogs"); - -function maverickTVL(config) { - const exports = {}; - - Object.keys(config).forEach((chain) => { - const { factories } = config[chain]; - exports[chain] = { - tvl: async (api) => { - let logs = []; - for (let k = 0; k < factories.length; k++) { - logs.push( - ...(await getLogs2({ - api, - target: factories[k].address, - fromBlock: factories[k].startBlock, - eventAbi: - "event PoolCreated(address poolAddress,uint8 protocolFeeRatio,uint256 feeAIn,uint256 feeBIn,uint256 tickSpacing,uint256 lookback,int32 activeTick,address tokenA,address tokenB,uint8 kinds,address accessor)", - })) - ); - } - - return sumTokens2({ - api, - ownerTokens: logs.map((i) => [[i.tokenA, i.tokenB], i.poolAddress]), - }); - }, - }; - }); - - return exports; -} - -module.exports = maverickTVL({ - plume_mainnet: { - factories: [ - { - address: "0x056A588AfdC0cdaa4Cab50d8a4D2940C5D04172E", - startBlock: 12118, - }, - ], - }, -}); diff --git a/projects/root-finance/index.js b/projects/root-finance/index.js deleted file mode 100644 index 4f1b40cac05..00000000000 --- a/projects/root-finance/index.js +++ /dev/null @@ -1,100 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { queryAddresses, sumTokens } = require('../helper/chain/radixdlt'); - -const LSU_LP = - 'resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf'; - -const pools = [ - { - pool: 'component_rdx1cqasw720453g8pr2jc3nxq2h9rrv9cvfjy35q6jhskukqqs0t7qcky', - resource: ADDRESSES.radixdlt.XRD, - }, - { - pool: 'component_rdx1cqz0f5znwhyy2d4q2rhncetm5tfpvu2c73kvfertktkw33drxcawk8', - resource: - 'resource_rdx1thrvr3xfs2tarm2dl9emvs26vjqxu6mqvfgvqjne940jv0lnrrg7rw', - }, - { - pool: 'component_rdx1cp5hd3a2daw4vuzx0hywn56ur2pmat7nnytl5v3pv36xky5hkpr84y', - resource: - 'resource_rdx1t580qxc7upat7lww4l2c4jckacafjeudxj5wpjrrct0p3e82sq4y75', - }, - { - pool: 'component_rdx1cr87dx5laxnffdkyv4fsrwms3m62vexgye9x9xpxyrv63gzpgwt97d', - resource: ADDRESSES.radixdlt.WETH, - }, - { - pool: 'component_rdx1czuk76y4vhgd44sxly0un2tqegws670dqp0usl2tlsgfkhmdl8dad3', - resource: - 'resource_rdx1t5kmyj54jt85malva7fxdrnpvgfgs623yt7ywdaval25vrdlmnwe97', - }, - { - pool: 'component_rdx1cqlfmwmhdmp0ln4gaera4skn3yz30p4k5ssv7lqflgh0rjeakwzs9f', - resource: - 'resource_rdx1t4upr78guuapv5ept7d7ptekk9mqhy605zgms33mcszen8l9fac8vf', - }, - // LSULP Pool - { - pool: 'component_rdx1czmq3me09q7p7g7hgsyaqctfw3he4hl6ypg6em2h7nyd2umk0dhhnq', - resource: LSU_LP, - }, - // WOWO Pool - { - pool: 'component_rdx1crsgd3yqvfh49599yrfpw08ezjwjuns04970mz2l4dnyxxhwzuecy5', - resource: - 'resource_rdx1t4kc5ljyrwlxvg54s6gnctt7nwwgx89h9r2gvrpm369s23yhzyyzlx', - }, - // EARLY Pool - { - pool: 'component_rdx1cr0pr68zxqvmfq2whn4nh22qcg2q5skdm7lt3qwvm6nfr2ccaryjsz', - resource: - 'resource_rdx1t5xv44c0u99z096q00mv74emwmxwjw26m98lwlzq6ddlpe9f5cuc7s', - }, - // hUSDT Pool - { - pool: 'component_rdx1czu2zdxwzshf00cqp2ualtd4nw6drys64xs9c7s60m5yrjmdtug7xl', - resource: - 'resource_rdx1th4v03gezwgzkuma6p38lnum8ww8t4ds9nvcrkr2p9ft6kxx3kxvhe', - }, - // hUSDC Pool - { - pool: 'component_rdx1cprk3jw75hra9mepvxn9kzekp83juvxcqrt5exhs83f0ys6f64ty0y', - resource: - 'resource_rdx1thxj9m87sn5cc9ehgp9qxp6vzeqxtce90xm5cp33373tclyp4et4gv', - }, - // hETH Pool - { - pool: 'component_rdx1cz3u030hl5hmfuhw3u75x4cn83latha5ge5gfnl27lft8dnuk7am06', - resource: - 'resource_rdx1th09yvv7tgsrv708ffsgqjjf2mhy84mscmj5jwu4g670fh3e5zgef0', - }, - // hWBTC Pool - { - pool: 'component_rdx1cr7yt0hct6zwvldg4q6jjjk3yswzs4rut0wzqx8al3kaaa3dzf7a7d', - resource: - 'resource_rdx1t58kkcqdz0mavfz98m98qh9m4jexyl9tacsvlhns6yxs4r6hrm5re5', - }, -]; - -async function fetchData(addresses) { - return await queryAddresses({ addresses }); -} - -async function tvl(api) { - await sumTokens({ api, owners: pools.map((p) => p.pool) }); -} - -async function borrowed(api) { - const [poolData] = await Promise.all([fetchData(pools.map((p) => p.pool))]); - - pools.forEach((pool, i) => { - const { details } = poolData.find((item) => item.address === pool.pool); - api.add(pool.resource, Number(details.state.fields[1].value)); - }); -} - -module.exports = { - radixdlt: { tvl, borrowed }, - timetravel: false, - misrepresentedTokens: true, -}; diff --git a/projects/roots/index.js b/projects/roots/index.js deleted file mode 100644 index 743fbc9e8d8..00000000000 --- a/projects/roots/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const sdk = require("@defillama/sdk"); - -/* !Trove Contracts */ -const TroveContracts = { - WBERA_HONEY_Trove: "0x7716065f4F9B225bB628ae75FA42157F14BFE70C", - WETH_WBERA_Trove: "0x950451c4736DD4452602CB25dAf48C83ad7391E9", - WBTC_WBERA_Trove: "0x2F8dc9f7201061F4a399fB602CE4816fFc86DDe5", - BYUSD_HONEY_Trove: "0x94704805a75F9D6A18B7a2338102c63D922F1915", - USDCe_HONEY_Trove: "0x857f5468398c873EcFc208765ad9632bb9dDab0C", -} - -const VaultTokens = { - WBERA_HONEY: "0x2c4a603A2aA5596287A06886862dc29d56DbC354", - WETH_WBERA: "0xdd70a5ef7d8cfe5c5134b5f9874b09fb5ce812b4", - WBTC_WBERA: "0x38fdD999Fe8783037dB1bBFE465759e312f2d809", - BYUSD_HONEY: "0xde04c469ad658163e2a5e860a03a86b52f6fa8c8", - USDCe_HONEY: "0xf961a8f6d8c69e7321e78d254ecafbcc3a637621", -} - -const MEAD = "0xEDB5180661F56077292C92Ab40B1AC57A279a396" - -async function tvl(api) { - const balances = {} - - for (const [troveName, troveAddress] of Object.entries(TroveContracts)) { - const vaultTokenKey = troveName.replace('_Trove', '') - const tokenAddress = VaultTokens[vaultTokenKey].toLowerCase() - - const collateral = await api.call({ - target: troveAddress, - abi: "function getEntireSystemColl() view returns (uint256)", - }) - - sdk.util.sumSingleBalance(balances, tokenAddress, collateral, api.chain) - } - - return balances -} - -async function borrowed(api) { - const balances = {} - let totalBorrowed = 0n - - for (const [, troveAddress] of Object.entries(TroveContracts)) { - const debt = await api.call({ - target: troveAddress, - abi: "function getEntireSystemDebt() view returns (uint256)", - }) - totalBorrowed += BigInt(debt) - } - - // Add total MEAD debt - // MEAD got no price oracle for now, it's traded on https://hub.berachain.com/pools/0x2a9ea10b60ab02e9b8960a08b4996e6bf5ea5eab000000000000000000000162/details/ - sdk.util.sumSingleBalance(balances, MEAD.toLowerCase(), totalBorrowed.toString(), api.chain) - return balances -} - -module.exports = { - berachain: { - tvl, - borrowed, - }, - start: '2025-05-09', - methodology: "Calculates TVL as the sum of all collateral in Troves (using getEntireSystemColl). Separately tracks borrowed amounts from each Trove (using getEntireSystemDebt) denominated in MEAD.", -}; diff --git a/projects/rootstock-collective/index.js b/projects/rootstock-collective/index.js deleted file mode 100644 index 74288207b15..00000000000 --- a/projects/rootstock-collective/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - rsk: { - tvl: () => ({}), - staking: sumTokensExport({ owner: '0x5db91e24BD32059584bbDb831A901f1199f3d459', tokens: ['0x2aCc95758f8b5F583470bA265Eb685a8f45fC9D5']}) - } -} diff --git a/projects/rose-finance/index.js b/projects/rose-finance/index.js deleted file mode 100644 index bdd7b2ede85..00000000000 --- a/projects/rose-finance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, unknownTombs } = require("../helper/unknownTokens"); - -const token = "0x07D49375A3213eF25aAA47C97A2d23A754bB8f8a"; -const shares = "0xe318140bF0A31EAAf401AD62801b6c7427b36773"; -const shareRewardPool = "0x989128334442946ed6508C45C43758a4e1E14923"; -const boardroom = "0x9d7BBFA16E80A9C4ce9ecf3B706166aEf1477cE1"; -const GenMasterchef = "0x29dA4fF649d39510f633Cd804B860858C333E5aD"; - -const pool2LPs = [ - "0xE368148b5A3771211C96F950B7d4f0C7E5427C1D", // ROSE-ETH - "0x0DB2Efc6c9A93eA22152ef410E3099f0cd67A599" // SHARE-WETH -] - -module.exports = unknownTombs({ - token: [token], - shares: [shares,], - masonry: [boardroom,], - rewardPool: [shareRewardPool,], - chain: 'arbitrum', - lps: pool2LPs, - useDefaultCoreAssets: true, -}) - -module.exports.arbitrum.tvl = sumTokensExport({ - owner: GenMasterchef, - tokens: [ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDC] -}) diff --git a/projects/rose/index.js b/projects/rose/index.js deleted file mode 100644 index 51ec625430e..00000000000 --- a/projects/rose/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -const stablesPool = "0xc90dB0d8713414d78523436dC347419164544A3f" -const fraxPool = "0xa34315F1ef49392387Dd143f4578083A9Bd33E94" -const atustPool = "0x8fe44f5cce02D5BE44e3446bBc2e8132958d22B8" -const maiPool = "0x65a761136815B45A9d78d9781d22d47247B49D23" - -const DAI = "0xe3520349F477A5F6EB06107066048508498A291b" -const USDC = ADDRESSES.aurora.USDC_e -const USDT = ADDRESSES.aurora.USDT_e -const FRAX = ADDRESSES.aurora.FRAX -const UST = "0x5ce9F0B6AFb36135b5ddBF11705cEB65E634A9dC" -const MAI = ADDRESSES.moonbeam.MAI -const ROSE = "0xdcD6D4e2B3e1D1E1E6Fa8C21C8A323DcbecfF970" -const STROSE = "0xe23d2289FBca7De725DC21a13fC096787A85e16F" -const NEAR = ADDRESSES.aurora.NEAR -const WETH = "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB" -const WBTC = "0xf4eb217ba2454613b15dbdea6e5f22276410e89e" - -const VASE = "0xee793001Ce9Fa988712B15a59CCf5dC7d54b22FF" - -const poolToTokensMap = { - [stablesPool]: [DAI, USDC, USDT], - [fraxPool]: [FRAX], - [atustPool]: [UST], - [maiPool]: [MAI], -} - -const tvl = async (api) => { - const ownerTokens = [] - - Object.entries(poolToTokensMap).forEach(([pool, tokens]) => ownerTokens.push([tokens, pool])) - const gardenTokens = [NEAR, USDC, USDT, WETH, UST, WBTC] - ownerTokens.push([gardenTokens, VASE]) - - return api.sumTokens({ ownerTokens}) -} - -module.exports = { - methodology: - "TVL is computed as the sum of the underlying token balances on all Rose liquidity pools", - aurora: { - tvl, - staking: staking(STROSE, ROSE), - }, -} diff --git a/projects/rosen-bridge/index.js b/projects/rosen-bridge/index.js deleted file mode 100644 index b936881c4d5..00000000000 --- a/projects/rosen-bridge/index.js +++ /dev/null @@ -1,112 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const ADDRESSES = require('../helper/coreAssets.json'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); -const { nullAddress } = require("../helper/tokenMapping.js"); - -module.exports = { - timetravel: false, - ergo: { - tvl: sumTokensExport({ - owners: [ - "nB3L2PD3J4rMmyGk7nnNdESpPXxhPRQ4t1chF8LTXtceMQjKCEgL2pFjPY6cehGjyEFZyHEomBTFXZyqfonvxDozrTtK5JzatD8SdmcPeJNWPvdRb5UxEMXE4WQtpAFzt2veT8Z6bmoWN", //hot - "HNJiaJVyw1qtkiuQYxDTjaA8rmogotVzADinCt5qqavoyoREWM27WAp6f9Y79meFcMoJLt3yr8nsWC5xU5474ojCxE7VweGpd9sLz79VrSiyu7zBjBXPjgGLFZdJAEJhsH8A4y924MVZa7D9te6t3FUiLcpyTbrvTBhD7SpnD6hUjbGszCEGf1fRX1SmWZikeXcJEkfej42dPRimT6Fw423XAc9Tbeih8ZW8x7f5Y7y8frF5kxEdw998JdLU6UzPSwhrDjfKhySqmssQeQxCFwb19PMCB8ZZtx2mGwczr2H12Yi3hnEWn9ArqRqKWip24pJgm6e4Ky7n7BzGRRTmDtcA2EGH3zEVzpRH6aNSHE1MJ51dbCZSNFnRJfk3vxenkSevCfvEMfn5KyQP9wPU5foZACuHX8TQXvVUe1va3HXJFwCm74gxRssBy61GcYdwVbtxykPrw3t6aDX7c46BejsXvEaz5Ydcu7U8MJCoYia9pZ6zkjAj8d7Su12DMK1aLkBxw4vY2zQYc", //cold - "ChTbcUHgBNqNMVjzV1dvCb2UDrX9nh6rGGcURCFEYXuH5ykKh7Ea3FvpFhHb9AnxXJkgAZ6WASN7Rdn7VMgkFaqP5Z5RWp84cDTmsZkhYrgAVGN7mjeLs8UxqUvRi2ArZbm35Xqk8Y88Uq2MJzmDVHLHzCYRGym8XPxFM4YEVxqzHSKYYDvaMLgKvoskFXKrvceAqEiyih26hjpekCmefiF1VmrPwwShrYYxgHLFCZdigw5JWKV4DmewuR1FH3oNtGoFok859SXeuRbpQfrTjHhGVfDsbXEo3GYP2imAh1APKyLEsG9LcE5WZnJV8eseQnYA8sACLDKZ8Tbpp9KUE7QZNFpnwGnkYx7eybbrCeFDFjTGpsBzaS6fRKrWj2J4Wy3TTyTU1F8iMCrHBF8inZPw9Kg9YEZuJMdXDFNtuaK15u86mF2s2Z5B1vdL5MtZfWThFLnixKds8ABEmGbe8n75Dym5Wv3pkEXQ6XPpaMjUxHfRJB3EfcoFM5nsZHWSTfbFBcHxSRnEiiU67cgJsBUpQn7FvEvqNLiKM4fL3yyykMtQ6RjAS8rhycszphvQa5qFrDHie4vPuTq8", //watcher_collateral - ], - tokens: [ - ADDRESSES.null, - '0cd8c9f416e5b1ca9f986a7f10a84191dfb85941619e49e53c0dc30ebf83324b', //comet - '9a06d9e545a41fd51eeffc5e20d818073bf820c635e2a9d922269913e0de369d', //SPF - '03faf2cb329f2e90d6d23b58d91bbb6c046aa143261cc21f52fbe2824bfcbf04', //sigmaUSD - 'f0d5bdf474fcbd4249608e6dc6e9cf34a327b218f66445ea545b4c711b4676e3', //COS - '01dce8a5632d19799950ff90bca3b5d0ca3ebfa8aaafd06f0cc6dd1e97150e7f', //CYPX - '00bd762484086cf560d3127eb53f0769d76244d9737636b2699d55c56cd470bf', //EPOS - 'fcfca7654fb0da57ecf9a3f489bcbeb1d43b56dce7e73b352f7bc6f2561d2a1b', //ErgOne - '843b5a2a0658550339c38f29827861fe459ce5206edaf17163113cccafc77af1', //GIF - '886b7721bef42f60c6317d37d8752da8aca01898cae7dae61808c4a14225edc8', //GluonGAU - '9944ff273ff169f32b851b96bbecdbb67f223101c15ae143de82b3e7f75b19d2', //GluonGAUC - '6c35aa395c7c75b0f67f7804d6930f0e11ef93c3387dc1faa86498d54af7962c', //MEW - '1fd6e032e8476c4aa54c18c1a308dce83940e8f4a28f576440513ed7326ad489', //PAI - '089990451bb430f05a85f4ef3bcb6ebf852b3d6ee68d86d78658b9ccef20074f', //QUACKS - // '8b08cdd5449a9592a9e79711d7d79249d7a03c535d17efaee83e216e80a44c4b', //RSN - excluded because it is projects own token - // unclear why RSN is excluded as this is what is actually bridged to other chains and is held in wallets and DEX on other chains, not treasury shares specifically. I can provide further information if you'd like. - '003bd19d0187117f130b62e1bcab0939929ff5c7709f843c5c4dd158949285d0', //SigRSV - '03faf2cb329f2e90d6d23b58d91bbb6c046aa143261cc21f52fbe2824bfcbf04', //SigUSD - '012c74dcd0920ce0c3f9f3945d509ea07b33872f3f144b816bcd7b664b22d5b3', //Troll - '59ee24951ce668f0ed32bdb2e2e5731b6c36128748a3b23c28407c5f8ccbf0f6', //Walrus - ] - }), - staking: sumTokensExport({ - owners: [ - "NY4PEzZ7VfjtnTN697R7my9uAVkCYb6N71J2RSmJCFSdDqVf9aPvFQqKXujYDBtSA8hxYVUgkGgU9SP2Ss7JDUkHkdGLBqZwH4yDcPyVvbVbcre3o7nR59wiFDVtjzCjfZmVvMVJD9HiW4GKqVuZGTQCKns8tDe3sJoDNTL3VmhzRUPZf9JCN4TNji1ruXf5CxqWtDrCfoxE4xfbRWGmtBMdLMoRdL85V7z1fP5KxroWX5YgZQo28nTCU3WjPuY2YrjqYYGNHXvFZ9G8E85kCcseNtRWqViXGFzmwqHWKaYe4AdJzBbMKzJWYszsbiemNvisPtT2Yj3FjAmAErpW3gMeWyH3WtbipaAu9D31ggpLeLkLTGscJ9HB2oExpGWvv6u9mGdkTJMHYUuZJUGrcJPE3m7ZTEFxwkbeR9oD8nHHgW4SB46kHFbxzNoUksGPZQnxf95J3e5PUnhYgg7mrQLNpq6pphgGukFcHDgAN2rgFmUSDVsuzomhP735SMiveXSPzx6PZeP7CmrEHyXN6mFbBJuY17kvzzix1w9eFwryZDuZqnAANkYhF3TLkLyGZfSC4o9iAGynpivuNMUgbKAuj6D116tKoCq9PHELL8eTefmXNLFuhauQuKRjmWQKj9zYSd7qi6Zf49KX25PnWHkC3REc4abYpjtiQFefT2HkWRwneTCkJ8uMvoHs6kJzLg8NVzH8XwEZhTM2tNSDhBKZaURpYiQcHwLDgv5uFiwhasLAdZi2EJywBYX51NKc6m4MEsTiAJC9jkEydWcwyDzSHN18yEr4rvEgMNkUhLHJokgV2v3BNFhUTJqe58e2QXAmx9MytUDqzg3vwexEpMhueC2roYA27P1mmb85HKEz15a8LnuUT8ZjmG8kDbHuPYFyxcATytVuDrFDzqKBt9X36bocip4ZU4RRY8JcWjJvMcrBCjV3EhDVQ4it8bhoZnn79PsXazvDteua1NEYEJniPnNrRaiKTUWrseEUQ2vVjWy134jMxRbeiARhoj7MDxug2kFP8jRGSsxWt3Qqbv2SezT3xZ8jYxTyQ2CiyJ61CvUQwPtmoY3XKjrgrJKwnSzJRs4egKPYZKoSiSy6UdHMKuNDmys8wYo3Gi2EgVdUYRLLWcHh5Z2H91odSbTW2h5e6pZeY4a45TgihE6ZnZBhHGc75zJjukhPgP1wEp8GrreHA7ejvTEmpwNgj571x5JrvRD5TxWaFuZKBonGexovAK2L5v", // bitcoin rsn permit collateral address - "ChTbcUHgBNqNMVjzV1dvCb2UDrX9nh6rGGcURCFEYXuH5ykKh7Ea3FvpFhHb9AnxXJkgAZ6WASN7Rdn7VMgkFaqP5Z5RWp84cDTmsZkhYrgAVGN7mjeLs8UxqUvRi2ArZbm35Xqk8Y88Uq2MJzmDVHLHzCYRGym8XPxFM4YEVxqzHSKYYDvaMLgKvoskFXKrvceAqEiyih26hjpekCmefiF1VmrPwwShrYYxgHLFCZdigw5JWKV4DmewuR1FH3oNtGoFok859SXeuRbpQfrTjHhGVfDsbXEo3GYP2imAh1APKyLEsG9LcE5WZnJV8eseQnYA8sACLDKZ8Tbpp9KUE7QZNFpnwGnkYx7eybbrCeFDFjTGpsBzaS6fRKrWj2J4Wy3TTyTU1F8iMCrHBF8inZPw9Kg9YEZuJMdXDFNtuaK15u86mF2s2Z5B1vdL5MtZfWThFLnixKds8ABEmGbe8n75Dym5Wv3pkEXQ6XPpaMjUxHfRJB3EfcoFM5nsZHWSTfbFBcHxSRnEiiU67cgJsBUpQn7FvEvqNLiKM4fL3yyykMtQ6RjAS8rhycszphvQa5qFrDHie4vPuTq8", //watcher collateral - "LXwmG9jPiXvYd6Z1DWRazpc2wTdpW2awCB9NV5qjJx4UFoncqYxve6G1gzTVBNCsDwSu5ZPEi6LNLuPdzM1r9DUMgAzEfGghKeoGebPAyLCerZ8Us4ukQSJPj8j3TQY5JLZDqS2BRcPkmovmt7SZCKD95zoNgsitrYdmv2JhoC8Wmq7aM3DpwmhejCZ59n1ZYCAL7LsKw4zX45tH3sGLXxmeBNCCkcT2yxiziEAn2C3ybXqqab7cMhkoNdRMwXpUUpk3489kfyTY7SjbUPqPKhkH9veUS6H4U7a4HaEi7tPyueHTbjjQZjCZd5uGi5tC7jMvrgjYqByUG9PA9oeXHj89RxK5TPbbmkmsZVHVtdBzfHiexJh32LMszDRHuUc6YfisZKx9kNSSzadBdLbJUGHeCd8XaBg6w3e1uUBQDghpx2z44C2GZbAmUQSUQ2jqY8BBwEhtaxzZ69NK3dEjTFgsZ1R3nkbhbAu5Xs5fabBWZo6RvaPf8jTKRwKaNgQZrL93QV2JEZoapbRHCdvzaHHpBLr1p6nkDg2kB3rUTj6kmaabxswG8bSLAA9qYZhDCyh1QdSyUnd9T2o7qHybaoeEuqG1kEWYon4741ut8HCqbwEjKze6rDuEbnPUYzSr7kiwoPeV2GrdsVFRLgxwgHJoENgjUhj1VVKZB2q7n8S6smwf7CJyYZZCZGkg5bLpywJddmegJjk2FuLwA2VEmnrDKRGpFkhxBc2rbj974XgGcBZ66mPTtwrXUwjY9G5hUArtYs8WhsCDAH58yaHFFViaAhBNDQ3HBtFbXwh6b1osdv8zDSvncYXPx2iikhmf6TRC2DE2ENYtzhLHJmgyXmQkm7yXp6nWxJaeLnUuxRaWdxxQSPy1Wnm1GvKJYzRBhv9RdcmDnEgKs21ex5uSSdqJ4H53Qs6StxGyQ4HyjTjEVUxTbUZpnzvECgAufKkuSPyC2mYkKKGrzWmvv5sh6fyo4eAq9QnfXB9YMETMpJbx5dFpc6ZXYimSCfJbJfP1bpCe1hXkhTPWeZJ9aPX6HZEfu89ChZiX32MaSM3QnnUhRbSnzdQ2jVAtqqwjNN5SeNNvXNxS6B1UHj52TGvGrLnNUp4BWgNKAAwpBxAAB7wny9tUSXt6jHVnGHBG1vJWF7S9DeaVjKg3qR8j1bUsGqh9bVkarag4SREopK8cHwFpb2yFcdGERfaKHyekAUjVkhqySH3Vb8GiAdDbRArKV2ip4eveocsFwjoCD5i9rotksNysgi9RDjkApYm7aJegC79omCujHVYFpU6HtV2AhNVFRvVBG2xDW9YEKEm3RxrjoCttM6sFkbNX61CSiQ3LsBPvcd5Aix9NUESjbNxFwARZ75UgquvFddApn13yxSqfzVoE9L3eRnAMxd7KHudBWQsnDK", //Ergo permit collateral - OLD - "LXwmG9jPiXvYd6Z1DWRazpc2wTdpW2awCB9NV5qjJx4UFoncqYxve6G1gzTVBNCsDwSu5ZPEi6LNLuPdzM1r9DUMgAzEfGghKeoGebPAyLCerZ8Us4ukQSJPj8j3TQY5JLZBwceKrx1KHjeRRQBwBgxTkfButyeLtHgMELArAC9DDaZbYg7o2t98LMUZyArDzmK5fmhdKgeo6Dw4oZ1ENbepgqG35kR2pS63heXUeEuhH4nvqfLGHwSTanzhsQeBmYH9iqxSFfCvoRFnasoEPkWAv6PwGURqUk23wS5J9CaSadgPYRNdB915Vjf2kvxxmPFwoW9Uq1ZRo5DDS49goU3YbMgDJPnekbGQ9u9jMcwvo8FGRMiJVyEy2zdncnqPUaipekDaDowgf8EKYxBRYPo93DGga9FCVAoMC2PzRXRN1Q4X2zCx9onwMPoTWu2nFjYdx58bqzqs2ToK4S7UXZw4vpt6oSam7XN2miAfSN8WJmYRJ3FSGNfUz1ryo6N8uoecwEGeFksvbkobAvykuDGzeCNgdeNnRnMFZrco3kPvdzMf75tsRJu5ZTpTMW5mJWm6NbPJwxgV5JdxUvHPd8SCCmFKxhFywqVifp6WRMMqfVKaBdmXWG7zzN6hJZhf9EHupjR4KZExmuShvpx5bA1YyMUz1MpE9VP7vkLJWDYXfpJHJEWFRiADfSHt2RE5LzepxScfoHfpE7C6e4TBQBZd3dndxWDRREZSV45A1iXdq14AYqcsoBJ5Y8JCGHzXaGCLiBHvsXFMfUdTHhbPA8cegddhhZ2tK29UhR3veSGcjVZ1YwzVthQeJZK8RMbbbdf2s3f7dr8a7YGLU31T2jjy4tPR26ZFSadcuuMFR6QQisRP7qBKpgmUJc68fWdwNsLr8FLW8q2yipH1YnsWG389BQ9aXM4Zfb2WmXUT6JCpaeABWUFCLv6w3BkuBHyUFmmfiiHNx1E9u1VEuibAJYEkC6BEuoCKDqxMV62wdjbahsAn4fZdpQyVMK6xADbY2FXrREeaq4KDGzY4XYVZxaEZs3CEeedoZjFLbBe7ysm4MWqCiK7tucARTFF4XaxoH1C5JqqiraqRm4HBGVcjfzcyMwMHUC15m2N4AoQycb97Dn8W4Qp7s7gmchThLotvP2E7t7CXDa21cwKdVx9nh2xTJRPaXzMjt49L4AbXqT9RJ9PeRsYzKcQLcgugdDoB3vDtFBTZeoNNvf43JFpapTozoQtSfj7iNrPYfaEkNvCEzLjqJVyMPZ7gt13aySy5jDPp2vF5hGd5f6yv21PAiwQtfV47hn7y5hZfKv4T3gDE4sD6UQ2HFmhrAXmcuZ4AtfZZXpC3vgw6vhraKUFsHKjLZU3WKKAwnPW1HJC61jiutpnaBK1hDhop6FHkjvNtGrSnti", //Cardana permit collateral - OLD - "NY4PEzZ7VfjqPk9gZSNS6ERoYyYBEBebyeXUPs1sjEfdenV3Kq1QKWBSQ1Gfem47fPVRw5UXcYNXtgXNGqsD4DedukcYv5c5kviu94yWpyrh2tbXHea1tyfuEcb8njgvXkAxrXkjvgcPEQqy7BsR3KQPe8vzSaBG5V8WFHQqvHmpMXXYMvKDZzRbNjZUgYvVinGq6qx9hct1fFG15nFdcWZkzhBcu8ytydt3MmnkYEyL4L2rLD8Jp2Q16DfeaBBqmuyxpMoVxPrQzbPjq5GKTKrqnpisWVrubpAy5dg1oQ6tVZompLpwTWvX1xWspA9tWPmc3MCV2e6y313KzSosGLi2Sdv2ptDgJpKamQv6fNKmj3TWkNbPCDfjp2KXYcfYE1vQ5prRZCPCDhVgWP7bqpF3SeUTMJmvBaXjd1tBavjanquQDkYU4n5XBwJPvUa5kCAP1USTgP4cgPA6SzB8hg2RXmB4PmEWM2RWv2mrirYeTdZrzXCbpGCd9B9GK7bNknnYz1X8wVqyYxxQMZ7Rort4BVRNPNKzEMtdGKSmQpiWitfoAfphXL3SGMfwMT3sspgDcD93Ftiq9gf6kgawpFBKWJmV5jXmfiSCWkPW5x56L5hcc3NwJLYYjcMh81aXQBP4HguyudttZcF8QiDa6Ae3idS1BTegArbhZBFn1TQJGgWtuCubLC5Ja71FadEN1G1s4Uz4BapDu3WpNH4NJn3UeWavLd1EytGjevyJu8XjziAMYr6cPZsyhb95aj7LAHgwJ8YT42zWYoDxqhEzbuderVtfauVJxEo2Rt7p83hMtkFS8Dy3vNbdmGEhWEFfDEyquEHTLsYkehRMWTeTeoDpRhKpeXoDxTNriR6Fz6y3Koxwzg281gYhxxvew7TpvSa3cLvjBpNxuoUfhyT645u51cBsQzden3RB5LjJeToSctrx74nNGCm9sR7fQgzno2pETeit1mykq4eocy93EoTcypKitcbfhgAYwXrGcGUQyhsupFgPZMnms5VnWhCsGKkK93uy7z4BRgi9y2aU7zMUxPJN6q3kYhjcdgYhcgqLLmWo5pBRSxcuq3p3NhPnd2Tps5RztjtUS5ZkbRVsTri8Sy2J5xPLir6VB7uxcPCSYYGJaaVfENJ8tYLYH3m3TUoxRipyjNDDBmsRdujqFQvFoYiCyaPFgu9iqzMvuPDM7FDPAKV8V7A895N9SMMZkG7uAzVvLgrU8Wrxdby2CAX9ttmPJn", // Cardano Permit Collateral NEW - "NY4PEzZ7Vfju59RSazdQK92s7PaLrnCh5D9yZBZx7fptQjQZ7Ra2Xiz1PFusrkij3YamVoqXNqoUzazpjnzwmX4zKvPwWGLdqk1RXvp82m7Km2nwtvL2d6tVVCfgiVzA392JszEtNDh9hNXn6wk8eXjXwUg1q1w4UJi6XzmscSH6iZ1BR6ghCp5fyrZBeUfnvbPsfgHmmoVQzmDJ5E9KjmCg53detrDH29gyZUKyqjC5ddnCKG5cvVmoZ7D2ix9KFa9RuLcpVTxnVnuoJnHL1yoGog11TB3eT5hRyiUzeBU688pMb1xyUaCw8bjh5wSsBRAWQnDiAaGuj6zsJEnKeMW94XLeaTASw4K2bwyWHr4BVN9XNSeopFoj6mXPrD2ZhGgPV4HeQp1qEQ2pemMiSecXYkghfnk1t8hnfDNMfXoyKXxEmN8Cf1p7M8pqtgo7H9uUi6xsfotsB2uHVSoT21nzERYMaej9YuYwgC2iUzrzeZNFu7LbMqBErDgHn4wfgppRnF6axDca7QJGNv3q7E2q1DGRpzmTXPfr9FeFxki9geAwsTAy1KTqU2u6TY2wcRC3GzQz83x6LatZLhf9HZnVWZ3SRWQ5AmKUfxhHVxVC9Hwiraqb7ciZBsrnXHWmFaHHHYxafZwoLUBqxeWnHNM211MUwJ2rD9pvrqREfYs4CKYJNDxe5nezL11TnsLyt6p6XkKgHXvvqnk9HQ27pMbpNVX33Y8iQpznFvL2YBCn6Dw9hBDgb8thcYkkAXyLRZskEmhXQFL9evXTstNoeJVJp7NAo7dejZRaKHzTvZnZpkybJGks44qFbGSuSXGegN1V1HWyYGnGSgEJm3yrapNC5tdTvHWXVDxjw1G2TwqKL8D4HZVsyWsu8PEErsaf593jscXKTRn2uqvdhp29rJKGV4v2Cfd8DDXzwhmVxcVFyUiXg9JDe8fCi2rxmFai7a6P6vTJrUkJRtKYBt5RUY3uzKXpX4J4fBWMHmnM2yTSgdaXb9MYULmsbWitqpxiTWh1iMQdXNHxU1A2hHvsqogqEhrG9bGmMU1m1EFSFAPocv3KUf5bPYUWmVUFaxa2MLmE4fs1EC3kCJz8434NrxD1YVA1iosiv5f2tDM8E3w15VRik2a3R1Y6C1D9uHAAT1XK1A27dnx6e586eghm5BuvCY9Di89bdYH5KX3sg4NzWAAJYd5DLZbtdXxzRrKiKwMcPjskhwyQRcv3qstVzPDfJdE8Ej", // Ethereum Permit Colalteral NEW - "NY4PEzZ7VfjvyhUfALrnVnmbCo79cESCRMoD4m6TNTRdUnGR3B7EM3KRKxPh6BmdAsdArGV8DgAanEjs4QLYzYTBPGexkgMBPaRwAMSuVAG5rtzuN5qNmyAZsfdrR3cnBuspTqRkBQFp1oczXkCVNFdjpPwAFYLZgnnJFJVnZbp5TQSECTioxM1oJSKm7LBnEbPNrVWFqcShvqAjoyie7Bd471mNEq8y3mEeV7FH3AQCm4fKQgyfwYkRBC4jvFjWDaMshpFbV325g7n5rcyRsbXJ8EGMC2pKVGEbkx2JCgX4ba5dxx1uGibiHnuHiTNXLmrbEJ6BFtBFZB69Ye7U1C23uBEEvTRLteSbKzKAaGv7UbhVtvcgX91muR3sy7jXTW5FszKWej7knHLWJhbUf47fCVvmbXWEx6rHu3fj5hEqQyfVuER3J54yQAtP9ertP9hQX6GQ7mXfyUwmxTYiJS4GxLzeWZGwfSfRUDe6GN7qurja8kVeMrTwdo835yt4XUcemLK53TCkTLe61Bev6NtiUCSuNrhddXcdfMzqk1DWZCXhkcm51pnGmbmAntwC6AF7rL2LHtHi4et2edKAJHkYUp6t9a8Q57eL6fX3Q4JSfDrjfgn4x2fJaF1APdwbBVKoJyhDUkmV6xAaANYZifq54eFg1qBh54F6mu61U3Df5sZqsepzQJNYp6Y95afLuHGmG97mxhmmRsecKbamu4p6P3TPZEs5eYfHspVf85GNh2BztxxYn5hSsR9c8VRJjBhHR1qGHzX4mbRKWn2D41L7AHPnapSQyHCAPdhSbaAV3b6eLqLvc9QrFBAdnsHqN4NauYDPZc6sSrFuLEwNKFbjefc7pBDnA2pfTUUVqCTFuuaM8VmLKFxG2oVsi1k8GD5moSzQbEphVfWTjE9kTZR35oArptsctXGXRT6MXToom6m4cj465Xs9nsRY8t7FgSHsxetJafgogRjo8NRpgFkBpRgf69QuZbqYkrFMTsoDRkLYCLTF4XZwYzu3tqrzLkSZPKDzK1x7pySFdB56vAstU8HPHLqtzduvHt8Gvrkh1mAYQ1cEphCF1jfs5vZUDifLQYnZ2JiJeMdFZu8RhssWvwU2oL6wqx4Ey2iRaSrLSadYnWx47QvGZeZ8M5gupYMNiL7tTkpCjMjbuetqGcpQrtiwuBJ25DqfnWeLN2K6LS49Fb7GjW6Y3fMgdDYVhh7MFpLiyHMcC7wzdBJSMEcE1VNvo2", // Binance Permit Collateral - "NY4PEzZ7Vfjvo3AYu7dBh4ziatarsMAVPnwtHZL6BfoKeaots7P629HvVAmDZNdiVNUitWMqVJhgphUregwCXnhVNRddztP93qbtSWCMzVk1UQmCVUpvQyb25nyH1PrpRSjpFewJWeN3bjiVF6bTAm2t11X4d2fKGnAo3PX2BFVeyAUre7T5CZs2uikxZisyrJ1djE4UY1uwpTFkJv3RzZ3JMugNDeicf7qWqtCtNH8E9uG56VD2dMvmsr5YHQbrKgxa5foyA4K8cD59o2ub9ezbhjSgfXbc6VLaXmp5SzdP6n61MaePNexedifBWwAsHFcaaVXf7oUkePp5dDpc5mBbaAuidBAwH4SaxnUNjPw2bHVSXEk3ZJwwBrZRG7CYBCvEN6wFuPyzuhGsJQwdCtvUqxViGhxWrhRYKwixLhScVdGwCFCF9HjuCXt92FkEZKRk1kJuNzMUuc9AUbafbwhi8RC96TVQrtnsajhomptLKFmQXg4nZQao3jwHV8kfZeyF9BX5kiWUnC83Wa7X7seGUcECHRPLAapk7Lr1kUQ6Q62RpBKeGUsfmPcyNhaZ2bmdxMxxHAhdZdKVr78R5ch2BvG7ZtV6wkHB1hcVJGJmU4dskPPR5EFd8gED72eeUnNAsTknW7ePfNMj4DYWGqf2QhPHDZXsyRN2Mczv4tgyRsNA2HR3U9oZikejcuYhha9yNsXEdNn23B8wa5aDZwR6hwZ9hQ74yv29sbfBAfe9XWT2UZAVaeZeazQSSrvAhicEKnwmCAvfwcZNS57SHJ1EfZf1oEt66S6mGFdBzcKPLZzmJmCgMiBmMThqMemT1XS1ovES76LVcpXSkyiEdA17htR5HuPWdDVfWNQAK2jAM8BjKGtvsh93oMFGvMaBVBAvj1QcfTr17LdeeT7h78bKzyF5SQWuyu46xtDbmTZVrR1ZSpnffiD8TbWnae85Bw1VfttScQ8yfa26dsc9pwLrHhYhC4XKEVPWYUxLHZd959tLA2kGNkJBJR8PPThR8PugaUTq1sQpLg4ezPPUjYyWFvhFf6Rcw5rcJAwj99AUwoEhPaUnxT3TxiEJBbD3Zsna33mQD9Zg69Zzr9xiLA7GzhhA998dwkpbbgqFxyASwH6yav5qDbXPZH7GPtt3nTjUfRs87SGYgVGHoGhqaVUAfQKW4TtvFicdpvQws5kg1nZthd7WkWcR7HqLc1R4wBPFynFVGc457vhQwaP78yQsQDHq86", // Ergo Permit Collateral - "2DxRv75maq3FewTq4mCgRzJedpUXxk5iUYhEEh7GifusR3sp4MN98RDo9dR7dvPkyKwKWJgxRMkoyYUCWUzEqzhJSTtTNSwckmbqvuAsbTbRF9EJqgMkQzLHWaqyMvdiBC1LGNyC16qWkp64oYn3nEL4qoZWUr79mLpaHLCnNAHkVPUuG45bqno9n6fLNKbsQV9CDvda8bMFHKPgnYrcGhWwt", // Watcher Collateral OLD - - ], - tokens: [ - '8b08cdd5449a9592a9e79711d7d79249d7a03c535d17efaee83e216e80a44c4b', // RSN - ] - }), - }, - cardano: { - tvl: sumTokensExport({ - owners: [ - "addr1v8kqhz5lkdxqm8qtkn4lgd9f4890v0j6advjfmk5k9amu4c535lsu", // hot - "addr1x8x6ca648w25x085dg8xs6k5e69yemr5hakcnl0gshmal6gahwzvy33q3jhr74lurpr9p0n8derw58fh7snq2zwxe8zsdkcqrj", // cold - "addr1q9natawjmgt2h4rycrs52a60jdjcxp4e5efatmkqhz0qdyuswar59uaz2t4rus7uutr95kku39v2ccvlfgah5vt5l4msfczj5t", // cold - ], - tokens: [ - ADDRESSES.null, - '3a89cf5f2f18887fcaec3d2e9bd4fee52caeaebc50f338ff23861cec42414e41', // Bana - '016be5325fd988fea98ad422fcfd53e5352cacfced5c106a932a35a442544e', // BTN - '5612bee388219c1b76fd527ed0fa5aa1d28652838bcab4ee4ee63197446973636f696e', // DIS - 'a0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235484f534b59', // Hosky - '95a427e384527065f2f8946f5e86320d0117839a5e98ea2c0b55fb0048554e54', // Hunt - '5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114494147', // IAG - '533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0494e4459', // INDY - 'da8c30857834c6ae7203935b89278c532b3995245295456f993e1d244c51', // LQ - '29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e', // MIN - '43b07d4037f0d75ee10f9863097463fc02ff3c0b8b705ae61d9c75bf4d796e746820546f6b656e', // MNT - 'c881c20e49dbaca3ff6cef365969354150983230c39520b917f5cf7c4e696b65', // NIKEPIG - '2852268cf6e2db42e20f2fd3125f541e5d6c5a3d70b4dda17c2daa82', // O - 'f6099832f9563e4cf59602b3351c3c5a8a7dda2d44575ef69b82cf8d', // OADA - 'b7c5cd554f3e83c8aa0900a0c9053284a5348244d23d0406c28eaf4d50414c4d0a', // PALM - '279c909f348e533da5808898f87f9a14bb2c3dfbbacccd631d927a3f534e454b', // SNEK - 'f6099832f9563e4cf59602b3351c3c5a8a7dda2d44575ef69b82cf8d', // sOADA - 'e13f55c16b8718edac43614146c00cadc45991af3a5355d0386a9f0343727970746f536f636b7a', // SOCKZ - 'ececc92aeaaac1f5b665f567b01baec8bc2771804b4c21716a87a4e353504c415348', // Splash - '766fce8055f39d40fcfc19721677b3deb2e7846950ae08dce757f1e753554741522042555348', // Sugar - '9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d7753554e444145', // Sundae - '804f5544c1962a40546827cab750a88404dc7108c0f588b72964754f56594649', // VYFI - ] - }), - }, - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.rosenBridge }) - }, - ethereum: { - tvl: sumTokensExport({ - owners: [ - '0x451698faa07fc68301af622a3ad42205f13c6e4b', // Ethereum Hot Wallet - '0x5f64a7a5FDAA1CF64e4507E7cA5Be164E59EfBbF', // Ethereum Cold Wallet - ], - tokens: [nullAddress,] - }) - }, - bsc: { - tvl: sumTokensExport({ - owners: [ - '0x4f68032EBe64b353a22FE1d9B7A6Af43Dd38bacB', // Binance Hot Wallet - '0x34c9f8a268df15fb38811800Cb6e7F6a109cd0E7', // Binance Hot Wallet - '0x5f64a7a5FDAA1CF64e4507E7cA5Be164E59EfBbF', // Binance Cold Wallet - ], - tokens: [nullAddress,] - }) - }, -}; - diff --git a/projects/roseonx/index.js b/projects/roseonx/index.js deleted file mode 100644 index d1af40bdd96..00000000000 --- a/projects/roseonx/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {staking} = require('../helper/staking') - -//Arbitrum -const ARB_VAULT = '0x832f80e93c77966dd343810c254f10ad58d9876d'; -const ARB_DUAL_STAKING = '0x42fa477A24d5471A24b798d5B4d9eC3a2C3dD49a'; -const ARB_ROSX = "0xDC8184ba488e949815d4AAfb35B3c56ad03B4179"; - -module.exports = { - arbitrum: { - staking: staking( - ARB_DUAL_STAKING, - [ - ARB_ROSX - ] - ), - tvl: staking( - ARB_VAULT, - ADDRESSES.arbitrum.USDC - ) - }, - hallmarks:[ - [1697439600, "RoseonX Launch"] - ], -}; \ No newline at end of file diff --git a/projects/rosswap/index.js b/projects/rosswap/index.js deleted file mode 100644 index 2b8e8f81032..00000000000 --- a/projects/rosswap/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { transformDexBalances } = require('../helper/portedTokens') - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0x232bF8d9cED464a75632657Cb2554880Acdcac1B', - eventAbi: "event PairCreated(address indexed token0, address indexed token1, address pair, uint256)", - onlyArgs: true, - fromBlock: 45401, - }) - const getReservesABI = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' - - const pairs = logs.map(log => log.pair) - const res = await api.multiCall({ abi: getReservesABI, calls: pairs, }) - const data = [] - res.forEach((r, i) => { - if (!r) return; - data.push({ - token0: logs[i].token0, - token1: logs[i].token1, - token0Bal: r._reserve0, - token1Bal: r._reserve1, - }) - }) - return transformDexBalances({ chain: api.chain, data, }) -} - -module.exports = { - misrepresentedTokens: true, - fsc: { tvl, }, -} \ No newline at end of file diff --git a/projects/rosy-burnt-steak/index.js b/projects/rosy-burnt-steak/index.js deleted file mode 100644 index 47462e0e9fb..00000000000 --- a/projects/rosy-burnt-steak/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const ROSY_TOKEN_CONTRACT = '0x6665a6Cae3F52959f0f653E3D04270D54e6f13d8'; -const STEAK_CONTRACT = '0x3e7ab819878bEcaC57Bd655Ab547C8e128e5b208'; - -module.exports = { - methodology: 'counts the number of ROSY tokens in the Steak contract.', - start: '2024-03-21', - sapphire: { - tvl: () => ({}), - staking: staking(STEAK_CONTRACT, ROSY_TOKEN_CONTRACT) - } -}; \ No newline at end of file diff --git a/projects/roup/index.js b/projects/roup/index.js deleted file mode 100644 index edb73748678..00000000000 --- a/projects/roup/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - timetravel: false, - methodology: `Tokens bridged via ROUP are counted as TVL`, - bitcoin: { - tvl: sumTokensExport({ - owners: bitcoinAddressBook.roup, - includeBRC20: true, - blacklistedTokens: ['roup'], - }), - } -} - diff --git a/projects/routerprotocol/index.js b/projects/routerprotocol/index.js deleted file mode 100644 index a4641fd00f6..00000000000 --- a/projects/routerprotocol/index.js +++ /dev/null @@ -1,128 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') -const NATIVE_ADDRESS = "NATIVE"; - -const config = { - arbitrum: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.arbitrum.USDC, decimals: 6 }, - { name: "weth", address: ADDRESSES.arbitrum.WETH, decimals: 18 }, - ] - }, - avax: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.avax.USDC_e, decimals: 6 }, - { name: "wbnb", address: "0x264c1383EA520f73dd837F915ef3a732e204a493", decimals: 18 }, - { name: "wrapped-avax", address: ADDRESSES.avax.WAVAX, decimals: 18 }, - { name: "weth", address: ADDRESSES.avax.WETH_e, decimals: 18 }, - ] - }, - fantom: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.fantom.USDC, decimals: 6 }, - { name: "wmatic", address: "0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3", decimals: 18 }, - { name: "wbnb", address: "0x27f26F00e1605903645BbaBC0a73E35027Dccd45", decimals: 18 }, - { name: "wrapped-avax", address: "0x511D35c52a3C244E7b8bd92c0C297755FbD89212", decimals: 18 }, - { name: "wrapped-fantom", address: ADDRESSES.fantom.WFTM, decimals: 18 }, - { name: "weth", address: "0x74b23882a30290451A17c44f4F05243b6b58C76d", decimals: 18 }, - ] - }, - optimism: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.optimism.USDC, decimals: 6 }, - { name: "weth", address: ADDRESSES.tombchain.FTM, decimals: 18 }, - ] - }, - polygon: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.polygon.USDC, decimals: 6 }, - { name: "mimatic", address: "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1", decimals: 18 }, - { name: "route", address: "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4", decimals: 18 }, - { name: "wmatic", address: "0x4c28f48448720e9000907bc2611f73022fdce1fa", decimals: 18 }, - { name: "dfyn-network", address: "0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97", decimals: 18 }, - { name: "wbnb", address: ADDRESSES.polygon.BNB, decimals: 18 }, - { name: "wrapped-avax", address: "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b", decimals: 18 }, - { name: "wrapped-fantom", address: "0xC9c1c1c20B3658F8787CC2FD702267791f224Ce1", decimals: 18 }, - { name: "weth", address: ADDRESSES.polygon.WETH_1, decimals: 18 }, - ] - }, - bsc: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.bsc.USDC, decimals: 18 }, - { name: "wmatic", address: "0xcc42724c6683b7e57334c4e856f4c9965ed682bd", decimals: 18 }, - { name: "wbnb", address: ADDRESSES.bsc.WBNB, decimals: 18 }, - { name: "binance-peg-avalanche", address: "0x1CE0c2827e2eF14D5C4f29a091d735A204794041", decimals: 18 }, - { name: "wrapped-fantom", address: "0xAD29AbB318791D579433D831ed122aFeAf29dcfe", decimals: 18 }, - { name: "weth", address: ADDRESSES.bsc.ETH, decimals: 18 }, - ] - }, - ethereum: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.ethereum.USDC, decimals: 6 }, - { name: "route", address: "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4", decimals: 18 }, - { name: "wmatic", address: ADDRESSES.ethereum.MATIC, decimals: 18 }, - { name: "dfyn-network", address: "0x9695e0114e12C0d3A3636fAb5A18e6b737529023", decimals: 18 }, - { name: "wbnb", address: ADDRESSES.ethereum.BNB, decimals: 18 }, - { name: "avalanche-wormhole", address: "0x85f138bfEE4ef8e540890CFb48F620571d67Eda3", decimals: 18 }, - { name: "fantom", address: ADDRESSES.ethereum.FTM, decimals: 18 }, - { name: "weth", address: ADDRESSES.ethereum.WETH, decimals: 18 }, - { name: "wrapped-cro", address: "0xA0b73E1Ff0B80914AB6fe0444E65848C4C34450b", decimals: 18 }, - ] - }, - aurora: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.aurora.USDC_e, decimals: 6 }, - { name: "weth", address: "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB", decimals: 18 }, - { name: "wmatic", address: ADDRESSES.oasis.USDT, decimals: 18 }, - { name: "wbnb", address: ADDRESSES.syscoin.USDC, decimals: 18 }, - { name: "wrapped-avax", address: "0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844", decimals: 18 }, - ], - }, - harmony: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: "0x985458E523dB3d53125813eD68c274899e9DfAb4", decimals: 6 }, - ], - }, - cronos: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.cronos.USDC, decimals: 6 }, - { name: "wrapped-cro", address: ADDRESSES.cronos.WCRO_1, decimals: 18 }, - { name: "wmatic", address: "0xad79AC3c5a5c15C6B9194F5568e451b3fc3C2B40", decimals: 18 }, - { name: "wbnb", address: ADDRESSES.telos.ETH, decimals: 18 }, - { name: "wrapped-avax", address: ADDRESSES.shiden.ETH, decimals: 18 }, - { name: "weth", address: "0xe44Fd7fCb2b1581822D0c862B68222998a0c299a", decimals: 18 }, - { name: "wrapped-fantom", address: ADDRESSES.moonriver.USDT, decimals: 18 }, - ], - }, - kava: { - contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", - tokens: [ - { name: "usd-coin", address: ADDRESSES.telos.ETH, decimals: 6 }, - ], - }, -} - -module.exports = { - methodology: "All tokens locked in Router Protocol contracts.", -}; - -Object.keys(config).forEach(chain => { - let { contractAddress: owner, tokens, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - tokens = tokens.map(i => i.address === NATIVE_ADDRESS ? nullAddress: i.address) - return sumTokens2({ api, owner, tokens, }) - } - } -}) \ No newline at end of file diff --git a/projects/royco/index.js b/projects/royco/index.js deleted file mode 100644 index 04a8dc85bf2..00000000000 --- a/projects/royco/index.js +++ /dev/null @@ -1,323 +0,0 @@ -const { request, gql } = require("graphql-request"); -const { sumUnknownTokens } = require("../helper/unknownTokens"); -const { sliceIntoChunks } = require("../helper/utils"); - -const slug = { - 1: { - defillama: "ethereum", - royco: "mainnet", - }, - 146: { - defillama: "sonic", - royco: "sonic", - }, - 999: { - defillama: "hyperliquid", - royco: "hyperevm", - }, - 8453: { - defillama: "base", - royco: "base", - }, - 42161: { - defillama: "arbitrum", - royco: "arbitrum-one", - }, - 80094: { - defillama: "berachain", - royco: "berachain", - }, - 98866: { - defillama: "plume_mainnet", - royco: "plume-mainnet", - }, - 21000000: { - defillama: "corn", - royco: "corn-maizenet", - }, -}; - -const config = { - [slug[1].defillama]: { - chainId: 1, - tags: ["recipe", "vault"], - }, - [slug[146].defillama]: { - chainId: 146, - tags: ["recipe", "vault"], - }, - [slug[999].defillama]: { - chainId: 999, - tags: ["recipe"], - }, - [slug[8453].defillama]: { - chainId: 8453, - tags: ["recipe", "vault"], - }, - [slug[42161].defillama]: { - chainId: 42161, - tags: ["recipe", "vault"], - }, - [slug[80094].defillama]: { - chainId: 80094, - tags: ["recipe", "vault"], - }, - [slug[98866].defillama]: { - chainId: 98866, - tags: ["recipe"], - }, - [slug[21000000].defillama]: { - chainId: 21000000, - tags: ["recipe", "vault"], - }, -}; - -const boringVaults = { - [slug[1].defillama]: { - chainId: 1, - vaults: [ - // RoyUSDCMainnet - { - id: "0x74D1fAfa4e0163b2f1035F1b052137F3f9baD5cC", - lens: "0x90983EBF38E981AE38f7Da9e71804380e316A396", - accountant: "0x80f0B206B7E5dAa1b1ba4ea1478A33241ee6baC9", - teller: "0x60EBb5d1454Bb99aa35F63F609E79179b342B0b8", - }, - ] - }, - [slug[146].defillama]: { - chainId: 146, - vaults: [ - // RoyUSDCSonic - { - id: "0x74D1fAfa4e0163b2f1035F1b052137F3f9baD5cC", - lens: "0x90983EBF38E981AE38f7Da9e71804380e316A396", - accountant: "0x80f0B206B7E5dAa1b1ba4ea1478A33241ee6baC9", - teller: "0x60EBb5d1454Bb99aa35F63F609E79179b342B0b8", - }, - // RoySonicUSDC - { - id: "0x45088fb2FfEBFDcf4dFf7b7201bfA4Cd2077c30E", - lens: "0x90983EBF38E981AE38f7Da9e71804380e316A396", - accountant: "0x8301294E84cA5a2644E7F3CD47A86369F1b0416e", - teller: "0x0F75c8176d4eBDff78d9a0c486B35d8F94b00A42", - } - ] - }, - [slug[98866].defillama]: { - chainId: 98866, - vaults: [ - // RoyPlumeUSDC - { - id: "0x83A6F6034ee44De6648B1885e24D837D8D98698f", - lens: "0x90983EBF38E981AE38f7Da9e71804380e316A396", - accountant: "0xfFfBF5B884AdF7297B94e62535D1b031387041Bd", - teller: "0x4Fc294112fD0b7226ecA095FEE9909E30882Cb11", - }, - // RoyUSDCPlume - { - id: "0x74D1fAfa4e0163b2f1035F1b052137F3f9baD5cC", - lens: "0x90983EBF38E981AE38f7Da9e71804380e316A396", - accountant: "0x80f0B206B7E5dAa1b1ba4ea1478A33241ee6baC9", - teller: "0x60EBb5d1454Bb99aa35F63F609E79179b342B0b8", - } - ] - } -} - -const fetchAllTokenBalanceSubgraphRows = async ({ subgraphUrl, queryName }) => { - let allRows = []; - - let skip = 0; - let pageSize = 1000; - let hasMore = true; - - while (hasMore) { - const formattedQuery = gql` - { - ${queryName}(where: {tokenClass: "0"}, first: ${pageSize}, skip: ${skip}) { - id - tokenId - tokenAmount - } - } - `; - - const result = await request(subgraphUrl, formattedQuery); - const newRows = result[queryName]; - allRows = [...allRows, ...newRows]; - - hasMore = newRows.length === pageSize; - skip += pageSize; - } - - return allRows; -}; - -const addToken = async ({ api, rows }) => { - rows.map((row) => { - const tokenAddress = row.tokenId.split("-")[1]; - const tokenAmount = row.tokenAmount; - - api.add(tokenAddress, tokenAmount); - }); -}; - -// Helper function sourced from projects/veda -async function deduplicateAndAdd({ vaults, assets, bals, api, ownersToDedupe = [], type, lensAddresses }) { - if (!vaults.length || !ownersToDedupe.length) { - assets.forEach((a, i) => api.add(a, bals[i])); - return; - } - - // Prepare all calls at once - const [sharesToIgnore, totalShares] = await Promise.all([ - // Get all shares to ignore in one batch - type === 'Boring' - ? api.multiCall({ - calls: vaults.flatMap((target, idx) => - ownersToDedupe.map(owner => ({ - target: lensAddresses[idx], - params: [owner.id, target], - })) - ), - abi: "function balanceOf(address account, address vault) view returns (uint256)", - }) - : api.multiCall({ - calls: vaults.flatMap(target => - ownersToDedupe.map(owner => ({ - target, - params: [owner.id], - })) - ), - abi: "erc20:balanceOf", - }), - // Get all total supplies in one batch - api.multiCall({ - calls: vaults.map(vault => ({ - target: vault, - })), - abi: "uint256:totalSupply", - }) - ]); - - // Process shares to ignore - const chunkedShares = sliceIntoChunks(sharesToIgnore, ownersToDedupe.length); - const summedShares = chunkedShares.map(shares => - shares.reduce((sum, share) => sum + Number(share), 0) - ); - - // Calculate ratios - const ratios = totalShares.map((share, i) => { - return 1 - summedShares[i] / share; - }); - - //console.log(`\n${type} Vault Deduplication Details:`); - vaults.forEach((vault, i) => { - const originalValue = bals[i]; - const deducted = bals[i] * (summedShares[i] / totalShares[i]); - const finalValue = bals[i] * ratios[i]; - //console.log(`Vault ${vault}: - //Original Value: ${originalValue} - //Deducted Amount: ${deducted} - //Final Value: ${finalValue} - //Deduplication Ratio: ${ratios[i] * 100}%`); - }); - - assets.forEach((a, i) => api.add(a, bals[i] * ratios[i])); -} - -// Helper function sourced from projects/veda -async function sumBoringTvl({ vaults, api, ownersToDedupe = [] }) { - const boringCalls = vaults.map((vault) => ({ - target: vault.lens, - params: [vault.id, vault.accountant], - })); - - const boringBalances = await api.multiCall({ - abi: "function totalAssets(address boringVault, address accountant) view returns (address asset, uint256 assets)", - calls: boringCalls, - }); - - const assets = boringBalances.map(b => b.asset); - const bals = boringBalances.map(b => b.assets); - const vaultAddresses = vaults.map(v => v.id); - const lensAddresses = vaults.map(v => v.lens); - - await deduplicateAndAdd({ - vaults: vaultAddresses, - assets, - bals, - api, - ownersToDedupe, - type: 'Boring', - lensAddresses - }); -} - -const calculateTvl = async ({ api, chain }) => { - if (chain === slug[80094].defillama) { - const subgraphUrl = `https://api.goldsky.com/api/public/project_cm07c8u214nt801v1b45zb60i/subgraphs/royco-ccdm-destination-boyco-berachain-mainnet/2.0.2/gn`; - - const rows = await fetchAllTokenBalanceSubgraphRows({ - subgraphUrl, - queryName: "rawMarketTokenBalanceRecipes", - }); - - await addToken({ api, rows }); - } else { - const tags = config[chain].tags; - - if (tags.includes("recipe")) { - const recipeSubgraphUrl = `https://api.goldsky.com/api/public/project_cm07c8u214nt801v1b45zb60i/subgraphs/royco-recipe-${ - slug[config[chain].chainId].royco - }/2.0.31/gn`; - - const recipeRows = await fetchAllTokenBalanceSubgraphRows({ - subgraphUrl: recipeSubgraphUrl, - queryName: "rawMarketTokenBalanceRecipes", - }); - - await addToken({ api, rows: recipeRows }); - } - - if (tags.includes("vault")) { - const vaultSubgraphUrl = `https://api.goldsky.com/api/public/project_cm07c8u214nt801v1b45zb60i/subgraphs/royco-vault-${ - slug[config[chain].chainId].royco - }/2.0.18/gn`; - - const vaultRows = await fetchAllTokenBalanceSubgraphRows({ - subgraphUrl: vaultSubgraphUrl, - queryName: "rawMarketTokenBalanceVaults", - }); - - await addToken({ api, rows: vaultRows }); - } - } - - if (boringVaults[chain]) { - const { vaults } = boringVaults[chain]; - - for (const vault of vaults) { - await sumBoringTvl({ - api, - vaults: [vault], - ownersToDedupe: [], - }); - } - } -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - await calculateTvl({ api, chain }); - - return sumUnknownTokens({ - api, - resolveLP: true, - useDefaultCoreAssets: true, - }); - }, - }; -}); diff --git a/projects/rplanet/index.js b/projects/rplanet/index.js deleted file mode 100644 index fffbfabfac8..00000000000 --- a/projects/rplanet/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// R-Planet -// https://rplanet.io -async function wax() { - const accounts = ["a.rplanet", "game.rplanet", "s.rplanet"]; - const tokens = [ - ["eosio.token", "WAX", "wax"] - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `R-Planet TVL is achieved by querying token balances from NFT Gaming contracts`, - wax: { - tvl: wax - }, -} \ No newline at end of file diff --git a/projects/rsk-bridge/index.js b/projects/rsk-bridge/index.js deleted file mode 100644 index 77ad0046f3e..00000000000 --- a/projects/rsk-bridge/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { sumTokens } = require("../helper/sumTokens"); - -module.exports = { - bitcoin: { - tvl: async (api) => { - return sumTokens({ - chain: 'bitcoin', - owners: bitcoinAddressBook.rskBridge, - balances: api.getBalances(), - }); - }, - }, - ethereum: { - tvl: sumTokensExport({ - owner: "0x12eD69359919Fc775bC2674860E8Fe2d2b6a7B5D", - fetchCoValentTokens: true, - logCalls: true, - }), - }, - rsk: { - tvl: sumTokensExport({ - owner: "0x9d11937E2179dC5270Aa86A3f8143232D6DA0E69", - tokens: [ - "0x44fcd0854d745EfdeF4Cfe9868efE4d4EB51eCD6", - "0x70566D8541beaBe984c8BAbF8A816Ed908514Ba8", - "0xFF9EA341d9ea91CB7c54342354377f5104Fd403f", - "0x4991516DF6053121121274397A8C1DAD608bc95B", - "0x1BDa44fda023F2af8280a16FD1b01D1A493BA6c4", - "0x75c6e15702ebAcd51177154ff383DF9695E1B1DA", - "0x9C3a5F8d686fadE293c0Ce989A62a34408C4e307", - "0xe506F698B31a66049bD4653Ed934e7A07Cbc5549", - "0x14ADAE34beF7Ca957ce2DDe5AdD97EA050123827", - "0x73C08467E23F7DcB7DdbBc8d05041b74467A498A", - "0x83cf9a58d31d9014f02ebe282d10c25C28E7De15", - "0xB3D06103aF1A68026615e673D46047fAB77dB0Fa", - "0xE700691Da7B9851F2F35f8b8182C69C53ccad9DB", - "0xe0CFF8a40f540657c62EB4CAC34b915e5ed8d8FF", - "0x6B1a73d547F4009A26B8485b63D7015D248AD406", - "0x2aCc95758f8b5F583470bA265Eb685a8f45fC9D5", - ], - logCalls: true, - permitFailure: true, - }), - }, -}; diff --git a/projects/rskswap/index.js b/projects/rskswap/index.js deleted file mode 100644 index 1e4f8f63dd4..00000000000 --- a/projects/rskswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - rsk: { - tvl: getUniTVL({ factory: '0xfaa7762f551bba9b0eba34d6443d49d0a577c0e1', useDefaultCoreAssets: true }), - } -} diff --git a/projects/rss3-staking/index.js b/projects/rss3-staking/index.js deleted file mode 100644 index 9fbebb738bd..00000000000 --- a/projects/rss3-staking/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const STAKING_CONTRACT = "0x28F14d917fddbA0c1f2923C406952478DfDA5578" -const RSS3_TOKEN_ETH = "0xc98D64DA73a6616c42117b582e832812e7B8D57F" -const RSS3_TOKEN_VSL = ADDRESSES.optimism.OP -const { staking } = require("../helper/staking") - - -module.exports = { - hallmarks: [[1710047755, "Mainnet Alpha Staking Launch"]], - rss3_vsl: { - tvl: () => ({}), - staking: staking(STAKING_CONTRACT, RSS3_TOKEN_VSL, undefined, RSS3_TOKEN_ETH), - }, -} \ No newline at end of file diff --git a/projects/rss3/index.js b/projects/rss3/index.js deleted file mode 100644 index fd6771a9f24..00000000000 --- a/projects/rss3/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: [ - "0x4cbab69108Aa72151EDa5A3c164eA86845f18438", - ], - fetchCoValentTokens: true, - }), - }, -} diff --git a/projects/rubic/index.js b/projects/rubic/index.js deleted file mode 100644 index 79011e5a5ff..00000000000 --- a/projects/rubic/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { stakings } = require('../helper/staking'); - -const stakingContractRoundOne = '0x8d9Ae5a2Ecc16A66740A53Cc9080CcE29a7fD9F5'; -const stakingContractRoundTwo = '0xa96cdb86332b105065ca99432916e631e469cf5d'; -const stakingContractRoundThree = '0x3333B155fa21A972D179921718792f1036370333'; -const stakingToken = '0x8e3bcc334657560253b83f08331d85267316e08a'; // BRBC token (bsc) - -const pools = { - bsc: '0x70e8C8139d1ceF162D5ba3B286380EB5913098c4', - ethereum: '0xD8b19613723215EF8CC80fC35A1428f8E8826940', - polygon:'0xeC52A30E4bFe2D6B0ba1D0dbf78f265c0a119286', - fantom: '0xd23B4dA264A756F427e13C72AB6cA5A6C95E4608', - avax: '0x541eC7c03F330605a2176fCD9c255596a30C00dB', - harmony: '0x5681012ccc3ec5bafefac21ce4280ad7fe22bbf2', - moonriver: '0xD8b19613723215EF8CC80fC35A1428f8E8826940', - arbitrum: '0x5F3c8d58A01Aad4f875d55E2835D82e12f99723c', - aurora: '0x55Be05ecC1c417B16163b000CB71DcE8526a5D06', - solana: 'DrmQS74dx5yDPzAJdGpVMqpSkVP9RXFQnMQAdeo1P7mj', - kava: '0x333b8881485fB8dE9af05d0B259a7f3f032B3333' -}; - -const usdcByChain = { - bsc: ADDRESSES.bsc.USDC, - ethereum: ADDRESSES.ethereum.USDC, - polygon: ADDRESSES.polygon.USDC, - fantom: ADDRESSES.fantom.USDC, - avax: ADDRESSES.avax.USDC_e, - harmony: '0x985458e523db3d53125813ed68c274899e9dfab4', - moonriver: ADDRESSES.moonriver.USDC, - arbitrum: ADDRESSES.arbitrum.USDC, - aurora: ADDRESSES.aurora.USDC_e, - solana: ADDRESSES.solana.USDC, - kava: ADDRESSES.telos.ETH -} - -function chainTvl(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - const block = chainBlocks[chain]; - const balances = {}; - const poolBalance = await sdk.api.erc20.balanceOf({ - target: usdcByChain[chain], owner: pools[chain], block, undefined, chain - }); - - sdk.util.sumSingleBalance(balances, chain+':'+usdcByChain[chain], poolBalance.output); - - return balances; - } -} - - -module.exports = { - timetravel: false, // solana :cries: - methodology: 'Staking pool balance', - bsc: { - tvl: () => ({}), - staking: stakings([stakingContractRoundOne, stakingContractRoundTwo, stakingContractRoundThree, ], stakingToken), - }, - hallmarks:[ - [1655991120, "Horizon bridge Hack $100m"], - ], - kava: { - tvl: chainTvl('kava') - } -} diff --git a/projects/rubicon/index.js b/projects/rubicon/index.js deleted file mode 100644 index 1a616d376a8..00000000000 --- a/projects/rubicon/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { uniTvlExport } = require('../helper/unknownTokens') - -const RUBICON_MARKET_OPTIMISM = '0x7a512d3609211e719737E82c7bb7271eC05Da70d' -const RUBICON_MARKET_ARBITRUM = '0xC715a30FDe987637A082Cf5F19C74648b67f2db8' - -const baseFactory = '0xA5cA8Ba2e3017E9aF3Bd9EDa69e9E8C263Abf6cD' - -const base = 'base' - - -module.exports = { - methodology: "Counts the tokens on the market (orders in the orderbook) and in bath pools", - hallmarks: [ - [1657915200, "OP Rewards Start"], - [1685073974, "V2 Upgrade"], - [1688184374, "OP Rewards for Makers"], - [1688616374, "Arbitrum Launch"] - ] -} - -module.exports = uniTvlExport(base, baseFactory) - -const config = { - optimism: { - endpoint: sdk.graph.modifyEndpoint('AUcAkUd4sJutFD3hYQfvB6uvXrEdYP26qiZwZ5qyrgTw'), - owners: [ - RUBICON_MARKET_OPTIMISM, // Rubicon Market - "0xB0bE5d911E3BD4Ee2A8706cF1fAc8d767A550497", // bathETH - "0x7571CC9895D8E997853B1e0A1521eBd8481aa186", // bathWBTC - "0xe0e112e8f33d3f437D1F895cbb1A456836125952", // bathUSDC - "0x60daEC2Fc9d2e0de0577A5C708BcaDBA1458A833", // bathDAI - "0xfFBD695bf246c514110f5DAe3Fa88B8c2f42c411", // bathUSDT - "0xeb5F29AfaaA3f44eca8559c3e8173003060e919f", // bathSNX - "0x574a21fE5ea9666DbCA804C9d69d8Caf21d5322b" // bathOP - ] - }, - arbitrum: { - endpoint: sdk.graph.modifyEndpoint('B4cTJXyWHMLkxAcpLGK7dJfArJdrbyWukCoCLPDT1f7n'), - owners: [RUBICON_MARKET_ARBITRUM,] - } -} - -Object.keys(config).forEach(chain => { - const { endpoint, owners } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const response = await cachedGraphQuery('rubicon/' + chain, endpoint, `{ tokens { address } }`) - const tokens = response.tokens.map(i => i.address) - return sumTokens2({ api, tokens, owners}) - } - } -}) \ No newline at end of file diff --git a/projects/rubik-finance/index.js b/projects/rubik-finance/index.js deleted file mode 100644 index 48b97fb41f5..00000000000 --- a/projects/rubik-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const rubikTokenAddress = "0xa4db7f3b07c7bf1b5e8283bf9e8aa889569fc2e7"; -const rshareTokenAddress = "0xf619d97e6ab59e0b51a2154ba244d2e8157223fe"; -const rshareRewardPoolAddress = "0xf6b082B2ab9F4b17d2015F82342C3CA2843d524D"; -const boardroomAddress = "0x7617Ca396262B4Ada6c13a42c9e1BA0AEED11996"; -const ftmLPs = [ - "0x9f4cbfa5B43252f3eD06f35C3f1A1D14C36bCeF0", // rubikFtmLpAddress - "0xCb2534b86fDc053FA312745c281E0838f210e869", //rshareFtmLpAddress -]; - -module.exports = { - ...tombTvl(rubikTokenAddress, rshareTokenAddress, rshareRewardPoolAddress, boardroomAddress, ftmLPs, "fantom", undefined, false, ftmLPs[1]) -} diff --git a/projects/rubik/index.js b/projects/rubik/index.js deleted file mode 100644 index 35c6423a63a..00000000000 --- a/projects/rubik/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0xb1e61bc864511b1da011f0f7b179fab9f12dbbee"; -const token = "0xF00e46f3eEd43232c882c16796eE1D6793a33675"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/ruby-exchange-stable/index.js b/projects/ruby-exchange-stable/index.js deleted file mode 100644 index bba6b7561df..00000000000 --- a/projects/ruby-exchange-stable/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -module.exports = { - europa: { tvl: sumTokensExport({ - ownerTokens: [ - [ [ - ADDRESSES.europa.USDP, - ADDRESSES.europa.USDT, - ADDRESSES.europa.USDC, - ADDRESSES.europa.DAI, - ], '0x45c550dc634bcc271c092a20d36761d3bb834e5d'] - ] - })} -} diff --git a/projects/ruby-exchange/index.js b/projects/ruby-exchange/index.js deleted file mode 100644 index b34df6afa08..00000000000 --- a/projects/ruby-exchange/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - europa: { tvl: getUniTVL({ - factory: '0x71f7BbbB33550fa5d70CA3F7eeAD87529f2DC3C8', - useDefaultCoreAssets: true, - }),}, -} diff --git a/projects/rubydex/index.js b/projects/rubydex/index.js deleted file mode 100644 index 3eab958b8e4..00000000000 --- a/projects/rubydex/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); -const VAULT_ARBITRUM = '0x4a7c10780afdba628332e31c9e7d1675cfad594c'; -const VAULT_BSC = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; -const VAULT_ZKSYNC_ERA = '0x211ac72f3ee4a35523B41aA8D67644E1eF860059'; -const VAULT_ETHEREUM = '0x1DE35eB48f92Fb38dee51041AAE86FFf18029E90'; -const VAULT_OPTIMISM = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; -const VAULT_POLYGON = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; -const VAULT_MANTLE = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; -const VAULT_AVALANCHE = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; -const VAULT_LINEA = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; -const VAULT_MANTA = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; - -module.exports = { - methodology: 'USDT tokens held by the RubyDex Vault contract.', - arbitrum: { - tvl: sumTokensExport({ owner: VAULT_ARBITRUM, tokens: [ADDRESSES.arbitrum.USDT] }), - }, - bsc: { - tvl: sumTokensExport({ owner: VAULT_BSC, tokens: [ADDRESSES.bsc.USDT] }), - }, - era: { - tvl: sumTokensExport({ owner: VAULT_ZKSYNC_ERA, tokens: [ADDRESSES.era.USDT] }), - }, - ethereum: { - tvl: sumTokensExport({ owner: VAULT_ETHEREUM, tokens: [ADDRESSES.ethereum.USDT] }), - }, - optimism: { - tvl: sumTokensExport({ owner: VAULT_OPTIMISM, tokens: [ADDRESSES.optimism.USDT] }), - }, - polygon: { - tvl: sumTokensExport({ owner: VAULT_POLYGON, tokens: [ADDRESSES.polygon.USDT] }), - }, - mantle: { - tvl: sumTokensExport({ owner: VAULT_MANTLE, tokens: [ADDRESSES.mantle.USDT] }), - }, - avax: { - tvl: sumTokensExport({ owner: VAULT_AVALANCHE, tokens: [ADDRESSES.avax.USDt] }), - }, - linea: { - tvl: sumTokensExport({ owner: VAULT_LINEA, tokens: [ADDRESSES.linea.USDT] }), - }, - manta: { - tvl: sumTokensExport({ owner: VAULT_MANTA, tokens: [ADDRESSES.manta.USDT] }), - } -}; diff --git a/projects/rubyfinance/index.js b/projects/rubyfinance/index.js deleted file mode 100644 index 19caa742f07..00000000000 --- a/projects/rubyfinance/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unknownTokens") -const { stakingUnknownPricedLP, staking } = require("../helper/staking") - -const wkavaAddress = ADDRESSES.kava.WKAVA; -const rshareTokenAddress = "0x5547F680Ad0104273d0c007073B87f98dEF199c6"; -const rshareRewardPoolAddress = "0x63c8069EE16BA666800cECaFd99f4C75ad6dd7Aa"; -const boardroomAddress = "0x9832941dD0F80086399eC90eC6f6B2676791436a"; -const rshareKavaLp = "0x0E5787F2550ddE3D394207aCeFdDe3f0228c7f79"; -const rubyKavaLp = "0x41af8e310d639f3b91f640ab6d457c2302326e5c"; -const rubyRshareLp = "0x96CB0E7fA38e5FDE6679B55afdfb8678D18f2680"; -const rubyUsdcLp = "0x5FF7D68eE6e5f0bbE211B3c0d010160e3cD27Db9"; - -const Kavalps = [rubyKavaLp, rshareKavaLp, rubyRshareLp, rubyUsdcLp]; - -module.exports = { - hallmarks: [ - [1660521600, "incentives not given"] - ], - methodology: - "Pool2 deposits consist of RUBY/USDC, RUBY/KAVA, RSHARE/KAVA and RUBY/RSHARE LP deposits while the staking TVL consists of the RSHARE tokens locked within the Boardroom contract.", - kava: { - tvl: staking(rshareRewardPoolAddress, wkavaAddress), - pool2: sumTokensExport({ owner: rshareRewardPoolAddress, tokens: Kavalps, lps: Kavalps, resolveLP: true, useDefaultCoreAssets: true }), - staking: stakingUnknownPricedLP(boardroomAddress, rshareTokenAddress, "kava", rshareKavaLp), - }, -}; \ No newline at end of file diff --git a/projects/rugdao/index.js b/projects/rugdao/index.js deleted file mode 100644 index 49657a9e06b..00000000000 --- a/projects/rugdao/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x9e0eE5E4c93e300fF024518d090f98c719504560"; -module.exports = ohmTvl( - treasury, - [ - //MIM - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], - //USDT - [ADDRESSES.avax.USDT_e, false], - //USDC - [ADDRESSES.avax.USDC_e, false], - // RUG-MIM JLP - ["0x8b667C1e422c08f9874709939Bc90E71c2BEA167", true] - ], - "avax", "0x47953c729A571Ef331E92D537Adc45985976c756", "0xb8ef3a190b68175000b74b4160d325fd5024760e") \ No newline at end of file diff --git a/projects/ruler/index.js b/projects/ruler/index.js deleted file mode 100644 index 8e3eb361422..00000000000 --- a/projects/ruler/index.js +++ /dev/null @@ -1,5 +0,0 @@ - -module.exports = { - deadFrom: 1648765747, - ethereum: { tvl: () => 0 }, -} \ No newline at end of file diff --git a/projects/rumi/index.js b/projects/rumi/index.js deleted file mode 100644 index 6837416e2ba..00000000000 --- a/projects/rumi/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const addressProvider = "0xFf6c50B43382f2531FEF7d6382cCe1263B0585f1" - -async function tvl(api) { - const lendVaultAddress = await api.call({ abi: 'address:lendVault', target: addressProvider, }); - const tokens = await api.call({ abi: "address[]:getSupportedTokens", target: lendVaultAddress, }); - const bals = await api.multiCall({ abi: "function totalAssets(address) view returns (uint256)", target: lendVaultAddress, calls: tokens, }) - api.addTokens(tokens, bals) - - const vaults = await api.call({ abi: "address[]:getVaults", target: addressProvider, }); - const vTokens = await api.multiCall({ abi: "address:depositToken", calls: vaults, }); - const vBals = await api.multiCall({ abi: "uint256:balance", calls: vaults, }); - api.addTokens(vTokens, vBals) - - return api.getBalances() -} - -module.exports = { - methodology: 'Total asset value held in the Rumi lend vault and Rumi strategies', - arbitrum: { - tvl: () => ({}), - }, - deadFrom: '2023-12-11', -}; \ No newline at end of file diff --git a/projects/rumpel/index.js b/projects/rumpel/index.js deleted file mode 100644 index db06e504365..00000000000 --- a/projects/rumpel/index.js +++ /dev/null @@ -1,554 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require("../helper/cache/getLogs") - -const CONTRACTS = { - RUMEPL_POINT_TOKENIZATION_VAULT: "0xe47F9Dbbfe98d6930562017ee212C1A1Ae45ba61", - RUMPEL_WALLET_FACTORY: "0x5774abcf415f34592514698eb075051e97db2937", - ETHENA_LP_STAKING: "0x8707f238936c12c309bfc2B9959C35828AcFc512", - MORPHO_BLUE: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", - ZIRCUIT_RESTAKING_POOL: "0xF047ab4c75cebf0eB9ed34Ae2c186f3611aEAfa6", - FLUID_POSITION_RESOLVER: "0x3E3dae4F30347782089d398D462546eb5276801C", - FLUID_VAULT_RESOLVER: "0x77648C2FEda8D5f9f21A9FE91db0d102E49d3031", - FLUID_DEX_RESOLVER: "0x71783F64719899319B56BdA4F27E1219d9AF9a3d", - FLUID_DEX_RESERVES_RESOLVER: "0xC93876C0EEd99645DD53937b25433e311881A27C", - // HyperEVM contracts - HYPEREVM_RUMPEL_WALLET_FACTORY: "0xbC89e0B2716079b46A971ce50C208730F73503De", - HYPEREVM_POINT_TOKEN_VAULT: "0xEa333eb11FC6ea62F6f4c2d73Cd9F2d994Ff3587", -}; - -const DEPLOYMENT = { - RUMPEL_WALLET_FACTORY: { - block: 20696108, - timestamp: 1725680627000, - }, - HYPEREVM_RUMPEL_WALLET_FACTORY: { - block: 4536816, - timestamp: 1748632980000, - }, -}; - -const TOKENS = { - AGETH: "0xe1B4d34E8754600962Cd944B535180Bd758E6c2e", - SUSDE: ADDRESSES.ethereum.sUSDe, - GHO: "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f", - USDT: ADDRESSES.ethereum.USDT, - USDE: ADDRESSES.ethereum.USDe, - WSTETH: ADDRESSES.ethereum.WSTETH, - WBTC: ADDRESSES.ethereum.WBTC, - AMPHRETH: "0x5fD13359Ba15A84B76f7F87568309040176167cd", - WEETH: ADDRESSES.ethereum.WEETH, - WEETHS: "0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88", - MSTETH: "0x49446A0874197839D15395B908328a74ccc96Bc0", - STETH: ADDRESSES.ethereum.STETH, - RSUSDE: "0x82f5104b23FF2FA54C2345F821dAc9369e9E0B26", - RSTETH: "0x7a4effd87c2f3c55ca251080b1343b605f327e3a", - RE7LRT: "0x84631c0d0081FDe56DeB72F6DE77abBbF6A9f93a", - RE7RWBTC: "0x7F43fDe12A40dE708d908Fb3b9BFB8540d9Ce444", - KUSDE: "0xBE3cA34D0E877A1Fc889BD5231D65477779AFf4e", - KWEETH: "0x2DABcea55a12d73191AeCe59F508b191Fb68AdaC", - SYMBIOTIC_WSTETH_COLLATERAL: "0xC329400492c6ff2438472D4651Ad17389fCb843a", - SYMBIOTIC_SUSDE_COLLATERAL: "0x19d0D8e6294B7a04a2733FE433444704B791939A", - SYMBIOTIC_LBTC_COLLATERAL: "0x9C0823D3A1172F9DdF672d438dec79c39a64f448", - SYMBIOTIC_METH_COLLATERAL: "0x475D3Eb031d250070B63Fa145F0fCFC5D97c304a", - SYMBIOTIC_WBTC_COLLATERAL: "0x971e5b5D4baa5607863f3748FeBf287C7bf82618", - SYMBIOTIC_RETH_COLLATERAL: "0x03Bf48b8A1B37FBeAd1EcAbcF15B98B924ffA5AC", - SYMBIOTIC_CBETH_COLLATERAL: "0xB26ff591F44b04E78de18f43B46f8b70C6676984", - SYMBIOTIC_ENA_COLLATERAL: "0xe39B5f5638a209c1A6b6cDFfE5d37F7Ac99fCC84", - SYMBIOTIC_WBETH_COLLATERAL: "0x422F5acCC812C396600010f224b320a743695f85", - SYMBIOTIC_SWETH_COLLATERAL: "0x38B86004842D3FA4596f0b7A0b53DE90745Ab654", - SYMBIOTIC_LSETH_COLLATERAL: "0xB09A50AcFFF7D12B7d18adeF3D1027bC149Bad1c", - SYMBIOTIC_OSETH_COLLATERAL: "0x52cB8A621610Cc3cCf498A1981A8ae7AD6B8AB2a", - SYMBIOTIC_SFRXETH_COLLATERAL: "0x5198CB44D7B2E993ebDDa9cAd3b9a0eAa32769D2", - SYMBIOTIC_GUANTLET_RESTAKED_SWETH_COLLATERAL: "0x65B560d887c010c4993C8F8B36E595C171d69D63", - SYMBIOTIC_ETHFI_COLLATERAL: "0x21DbBA985eEA6ba7F27534a72CCB292eBA1D2c7c", - SYMBIOTIC_GAUNTLET_RESTAKED_CBETH_COLLATERAL: "0xB8Fd82169a574eB97251bF43e443310D33FF056C", - SYMBIOTIC_FXS_COLLATERAL: "0x940750A267c64f3BBcE31B948b67CD168f0843fA", - SYMBIOTIC_TBTC_COLLATERAL: "0x0C969ceC0729487d264716e55F232B404299032c", - SYMBIOTIC_MANTA_COLLATERAL: "0x594380c06552A4136E2601F89E50b3b9Ad17bd4d", - SYMBIOTIC_GAUNTLET_RESTAKED_WSTETH_COLLATERAL: "0xc10A7f0AC6E3944F4860eE97a937C51572e3a1Da", - YT_EBTC: "0xeB993B610b68F2631f70CA1cf4Fe651dB81f368e", - YT_WEETHK: "0x7B64b99A1fd80b6c012E354a14ADb352b5916CE1", - YT_AGETH: "0x3568f1d2e8058F6D99Daa17051Cb4a2930C83978", - YT_WEETHS: "0x719B51Dd92B7809A80A2E8c91D89367BF58f1D7A", - YT_SUSDE: "0xbE05538f48D76504953c5d1068898C6642937427", - YT_USDE: "0x5D8B3cd632c58D5CE75C2141C1C8b3b0C209b3ed", - YT_RE7LRT: "0x89E7f4E5210A77Ac0f20511389Df71eC98ce9971", - YT_RSTETH: "0x11CCff2F748a0100dBd457FF7170A54e12064Aba", - YT_AMPHRETH: "0x5dB8a2391a72F1114BbaE30eFc9CD89f4a29F988", - YT_KARAK_SUSDE_30JAN2025: "0x27f6F2f5e87A383471C79296c64E4e82269877f7", - YT_RSUSDE_27MAR2025: "0x079F21309eB9cbD2a387972eB2168d57C8542e32", - YT_SUSDE_27MAR2025: "0x96512230bF0Fa4E20Cf02C3e8A7d983132cd2b9F", - YT_SUSDE_29MAY2025: "0x1de6Ff19FDA7496DdC12f2161f6ad6427c52aBBe", - YT_USDE_27MAR2025: "0x4A8036EFA1307F1cA82d932C0895faa18dB0c9eE", - YT_SUSDE_31JUL2025: "0xb7E51D15161C49C823f3951D579DEd61cD27272B", - YT_EUSDE_28MAY2025: "0x708dD9B344dDc7842f44C7b90492CF0e1E3eb868", - YT_EUSDE_13AUG2025: "0xe8eF806c8aaDc541408dcAd36107c7d26a391712", - YT_USDE_30JUL2025: "0x733Ee9Ba88f16023146EbC965b7A1Da18a322464", - YT_LVLUSD_24SEP2025: "0x946934554a2Bf59039661f971986F0223E906264", - YT_USR_28MAY2025: "0x77DE4Be22Ecc633416D79371eF8e861Fb1d2cC39", - YT_WSTUSR_24SEP2025: "0x1E24B022329f3CA0083b12FAF75d19639FAebF6f", - YT_WEETHS_25JUNE2025: "0xaaC7DB6C2bC926aDE954D69A2d705f059043EA02", - YT_EETH_25JUNE2025: "0x08AEfe9dFe7818CaaedD94E38e910d2155b7d2b0", - YT_WEETHK_25JUNE2025: "0x03722CE19e9F5828969D39474a8EfC35c4eA3987", - YT_AGETH_25JUNE2025: "0x0310A860CF7Efe8F54Ab9B4dE49Cd071C37fCBCB", - YT_USDE_24SEP2025: "0x48bbbEdc4d2491cc08915D7a5c7cc8A8EdF165da", - YT_SUSDE_24SEP2025: "0x029d6247ADb0A57138c62E3019C92d3dfC9c1840", - MELLOW_DVSTETH: "0x5E362eb2c0706Bd1d134689eC75176018385430B", - MELLOW_RENZO_PZETH: "0x8c9532a60E0E7C6BbD2B2c1303F63aCE1c3E9811", - MELLOW_RSENA: "0xc65433845ecD16688eda196497FA9130d6C47Bd8", - MELLOW_AMPHRBTC: "0x64047dD3288276d70A4F8B5Df54668c8403f877F", - MELLOW_STEAKLRT: "0xBEEF69Ac7870777598A04B2bd4771c71212E6aBc", - MELLOW_HYVEX: "0x24183535a24CF0272841B05047A26e200fFAB696", - MELLOW_RE7RTBTC: "0x3a828C183b3F382d030136C824844Ea30145b4c7", - MELLOW_IFSETH: "0x49cd586dd9BA227Be9654C735A659a1dB08232a9", - MELLOW_CP0XLRT: "0xB908c9FE885369643adB5FBA4407d52bD726c72d", - MELLOW_URLRT: "0x4f3Cc6359364004b245ad5bE36E6ad4e805dC961", - MELLOW_COETH: "0xd6E09a5e6D719d1c881579C9C8670a210437931b", - MELLOW_HCETH: "0x375A8eE22280076610cA2B4348d37cB1bEEBeba0", - MELLOW_ISETH: "0xcC36e5272c422BEE9A8144cD2493Ac472082eBaD", - MELOW_SIBTC: "0xE4357bDAE017726eE5E83Db3443bcd269BbF125d", - MELLOW_LUGAETH: "0x82dc3260f599f4fC4307209A1122B6eAa007163b", - MELLOW_ROETH: "0x7b31F008c48EFb65da78eA0f255EE424af855249", - MELLOW_RSUNIBTC: "0x08F39b3d75712148dacDB2669C3EAcc7F1152547", - // Resolv tokens - USR: "0x66a1E37c9b0eAddca17d3662D6c05F4DECf3e110", - RLP: "0x4956b52aE2fF65D74CA2d61207523288e4528f96", - STUSR: "0x6c8984bc7DBBeDAf4F6b2FD766f16eBB7d10AAb4", - - WBETH: ADDRESSES.bsc.wBETH, - SWETH: "0xf951E335afb289353dc249e82926178EaC7DEd78", - LSETH: "0x7BfEe91193d9Df2Ac0bFe90191D40F23c773C060", - OSETH: "0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38", - MANTA: "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5", - // Additional tokens - WSTUSR: "0x1202F5C7b4B9E47a1A484E8B270be34dbbC75055", - EBTC: ADDRESSES.ethereum.EBTC, - CBBTC: ADDRESSES.ethereum.cbBTC, - POND: "0x57B946008913B82E4dF85f501cbAeD910e58D26C", - SENA: "0x8bE3460A480c80728a8C4D7a5D5303c85ba7B3b9", - // HyperEVM tokens - HYPEREVM_WHYPE: ADDRESSES.hyperliquid.WHYPE, - HYPEREVM_WSTHYPE: ADDRESSES.hyperliquid.wstHYPE, - HYPEREVM_UBTC: "0x9FDBdA0A5e284c32744D2f17Ee5c74B284993463", - HYPEREVM_UETH: "0xBe6727B535545C67d5cAa73dEa54865B92CF7907", - HYPEREVM_USDT0: ADDRESSES.corn.USDT0, - HYPEREVM_XAUT0: "0xf4D9235269a96aaDaFc9aDAe454a0618eBE37949", - HYPEREVM_USDHL: "0xb50A96253aBDF803D85efcDce07Ad8becBc52BD5", - HYPEREVM_HBHYPE: "0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB", - HYPEREVM_HBBTC: "0xc061d38903b99aC12713B550C2CB44B221674F94", - HYPEREVM_HBXAUT: "0x6EB6724D8D3D4FF9E24d872E8c38403169dC05f8", - HYPEREVM_GTUSDT0: "0x53A333e51E96FE288bC9aDd7cdC4B1EAD2CD2FfA", - HYPEREVM_HYPERUSDT0: "0xe5ADd96840F0B908ddeB3Bd144C0283Ac5ca7cA0", - HYPEREVM_MCHYPE: "0xd19e3d00f8547f7d108abFD4bbb015486437B487", - HYPEREVM_GTUETH: "0x0571362ba5ea9784a97605f57483f865a37dbeaa", - HYPEREVM_BEHYPE: "0x441794D6a8F9A3739F5D4E98a728937b33489D29", - HYPEREVM_HYPERBEAT_LST: "0x81e064d0eB539de7c3170EDF38C1A42CBd752A76", - HYPEREVM_SENTIMENT_HYPE_SUPER_POOL: "0x2831775cb5e64b1d892853893858a261e898fbeb", - HYPEREVM_USDT0_FELIX_METAMORPHO_VAULT: "0xFc5126377F0efc0041C0969Ef9BA903Ce67d151e", - HYPEREVM_USDHL_FELIX_METAMORPHO_VAULT: "0x9c59a9389D8f72DE2CdAf1126F36EA4790E2275e", - EULER_EWSTUSR: "0x9f12d29c7CC72bb3d237E2D042A6D890421f9899", - PENDLE_LP_WSTUSR_24SEP2025: "0x09fA04Aac9c6d1c6131352EE950CD67ecC6d4fB9", -}; - -// Note: Some vaults are "smart vaults" where the collateral is DEX LP tokens -// For these vaults, the positions hold LP shares that need to be unwrapped to get actual token values -const FLUID_VAULTS = [ - { VAULT: "0xeAEf563015634a9d0EE6CF1357A3b205C35e028D", TOKEN: TOKENS.WEETH }, - { VAULT: "0x1c6068eC051f0Ac1688cA1FE76810FA9c8644278", TOKEN: TOKENS.WEETHS }, - { VAULT: "0x3996464c0fCCa8183e13ea5E5e74375e2c8744Dd", TOKEN: TOKENS.SUSDE }, - { VAULT: "0xBc345229C1b52e4c30530C614BB487323BA38Da5", TOKEN: TOKENS.SUSDE }, - { VAULT: "0xe210d8ded13Abe836a10E8Aa956dd424658d0034", TOKEN: TOKENS.SUSDE }, - { VAULT: "0x2F3780e21cAba1bEdFB24E37C97917def304dFFA", TOKEN: TOKENS.SUSDE }, - { VAULT: "0x7503b58Bb29937e7E2980f70D3FD021B7ebeA6d0", TOKEN: TOKENS.SUSDE ,IS_SMART: true, LP_TOKEN: "0x1DD125C32e4B5086c63CC13B3cA02C4A2a61Fa9b", TOKEN0: TOKENS.SUSDE, TOKEN1: TOKENS.USDT }, - { VAULT: "0x989a44CB4dBb7eBe20e0aBf3C1E1d727BF90F881", TOKEN: TOKENS.USDE, IS_SMART: true, LP_TOKEN: "0xf063BD202E45d6b2843102cb4EcE339026645D4a", TOKEN0: TOKENS.USDE, TOKEN1: TOKENS.USDT }, - { VAULT: "0x43d1cA906c72f09D96291B4913D7255E241F428d", TOKEN: TOKENS.WBTC }, - { VAULT: "0xB170B94BeFe21098966aa9905Da6a2F569463A21", TOKEN: TOKENS.SUSDE, IS_SMART: true, LP_TOKEN: "0x1DD125C32e4B5086c63CC13B3cA02C4A2a61Fa9b", TOKEN0: TOKENS.SUSDE, TOKEN1: TOKENS.USDT }, - { VAULT: "0xaEac94D417BF8d8bb3A44507100Ab8c0D3b12cA1", TOKEN: TOKENS.USDE , IS_SMART: true, LP_TOKEN: "0xf063BD202E45d6b2843102cb4EcE339026645D4a", TOKEN0: TOKENS.USDE, TOKEN1: TOKENS.USDT }, - { VAULT: "0x0a90ED6964f6bA56902fD35EE11857A810Dd5543", TOKEN: TOKENS.SUSDE, IS_SMART: true, LP_TOKEN: "0xDd5F2AFab5Ae5484339F9aD40FB4d51Fc5c96be3", TOKEN0: TOKENS.SUSDE, TOKEN1: TOKENS.GHO }, - { VAULT: "0x91D5884a57E4A3718654B462B32cC628b2c6A39A", TOKEN: TOKENS.SUSDE, IS_SMART: true, LP_TOKEN: "0x1DD125C32e4B5086c63CC13B3cA02C4A2a61Fa9b", TOKEN0: TOKENS.SUSDE, TOKEN1: TOKENS.USDT }, - { VAULT: "0x4B5fa15996C2E23b35E64f0ca62d30c4945E53Cb", TOKEN: TOKENS.USDE, IS_SMART: true, LP_TOKEN: "0xf063BD202E45d6b2843102cb4EcE339026645D4a", TOKEN0: TOKENS.USDE, TOKEN1: TOKENS.USDT }, - { VAULT: "0x4095a3A8efe779D283102377669778900212D856", TOKEN: TOKENS.USDE, IS_SMART: true, LP_TOKEN: "0x862FC0A67623a4E6f0776103340836c91728B06D", TOKEN0: TOKENS.GHO, TOKEN1: TOKENS.USDE }, - { VAULT: "0x5668c53C6188BA0a311E28b54D7822771D9BDeea", TOKEN: TOKENS.USDE, IS_SMART: true, LP_TOKEN: "0xB0960263E39C70C9B6e9EA2A382B18095264A364", TOKEN0: TOKENS.USDE, TOKEN1: "0xC139190F447e929f090Edeb554D95AbB8b18aC1C" }, - { VAULT: "0x71a3bD2B2214E51e33144590948aA88beAfF2E44", TOKEN: TOKENS.USDE, IS_SMART: true, LP_TOKEN: "0xB0960263E39C70C9B6e9EA2A382B18095264A364", TOKEN0: TOKENS.USDE, TOKEN1: "0xC139190F447e929f090Edeb554D95AbB8b18aC1C" }, - { VAULT: "0x1e6ce96d65901E0779C17E83258e07D2f8962fa4", TOKEN: TOKENS.USDE, IS_SMART: true, LP_TOKEN: "0xB0960263E39C70C9B6e9EA2A382B18095264A364", TOKEN0: TOKENS.USDE, TOKEN1: "0xC139190F447e929f090Edeb554D95AbB8b18aC1C" }, - { VAULT: "0xe3Cac7cC6b0EeD28e16331F08be7948BbfcB5acC", TOKEN: TOKENS.USDE, IS_SMART: true, LP_TOKEN: "0xdE632C3a214D5f14C1d8ddF0b92F8BCd188fee45", TOKEN0: TOKENS.GHO, TOKEN1: TOKENS.USDE }, -] - -const MORPHO_SUSDE_MARKET_ID = - "0x39d11026eae1c6ec02aa4c0910778664089cdd97c3fd23f68f7cd05e2e95af48"; - -async function tvl(api) { - const owners = await getOwners(api); - - await Promise.all([ - sumBaseTokens, - handleLockedUSDE, - handleMorphoSuppliedSUSDE, - handleZircuitAssets, - handleStrategyTokenBalances, - handleSymbioticTokens, - handleFluidPositions, - handleHyperEVMERC4626Vaults - ].map(async (fn) => fn())); - - async function sumBaseTokens() { - const chain = api.chain; - - if (chain === 'ethereum') { - return api.sumTokens({ - owners, tokens: [TOKENS.AGETH, TOKENS.WEETH, TOKENS.USDE, TOKENS.SUSDE, TOKENS.MSTETH, TOKENS.WSTETH, TOKENS.STETH, TOKENS.WBTC, TOKENS.WEETHS, TOKENS.AMPHRETH, TOKENS.USR, TOKENS.RLP, TOKENS.STUSR, TOKENS.WSTUSR, TOKENS.EBTC, TOKENS.CBBTC, TOKENS.POND, TOKENS.SENA] - }) - } else if (chain === 'hyperliquid') { - return api.sumTokens({ - owners, tokens: [TOKENS.HYPEREVM_WHYPE, TOKENS.HYPEREVM_WSTHYPE, TOKENS.HYPEREVM_UBTC, TOKENS.HYPEREVM_UETH, TOKENS.HYPEREVM_USDT0, TOKENS.HYPEREVM_XAUT0, TOKENS.HYPEREVM_USDHL] - }) - } - } - - async function handleLockedUSDE() { - if (api.chain !== 'ethereum') return; - - const stakes = await api.multiCall({ - target: CONTRACTS.ETHENA_LP_STAKING, - abi: "function stakes(address,address) view returns (uint256 amount,uint152,uint104)", - calls: owners.map((owner) => ({ params: [owner, TOKENS.USDE] })), - }); - api.add(TOKENS.USDE, stakes.map(i => i.amount)) - } - - async function handleMorphoSuppliedSUSDE() { - if (api.chain !== 'ethereum') return; - - const positions = await api.multiCall({ - target: CONTRACTS.MORPHO_BLUE, - abi: "function position(bytes32,address) view returns (uint256,uint128,uint128 amount)", - calls: owners.map((owner) => ({ params: [MORPHO_SUSDE_MARKET_ID, owner] })), - }); - api.add(TOKENS.USDE, positions.map(i => i.amount)) - } - - async function handleFluidPositions() { - if (api.chain !== 'ethereum') return; - - const positions = await api.multiCall({ - target: CONTRACTS.FLUID_POSITION_RESOLVER, - abi: "function getAllVaultPositions(address) view returns ((uint256,address owner,uint256 supply,uint256)[])", - calls: FLUID_VAULTS.map(({ VAULT }) => ({ params: [VAULT] })), - }); - - for (let i = 0; i < positions.length; i++) { - const vaultPositions = positions[i]; - const rumpelPositions = vaultPositions.filter(p => owners.includes(p.owner)); - - if (rumpelPositions.length === 0) continue; - - const vault = FLUID_VAULTS[i]; - - if (vault.IS_SMART) { - const [totalSupplySharesRaw, reserves] = await Promise.all([ - api.call({ - target: CONTRACTS.FLUID_DEX_RESOLVER, - abi: 'function getTotalSupplySharesRaw(address dex_) view returns (uint)', - params: [vault.LP_TOKEN] - }), - api.call({ - target: CONTRACTS.FLUID_DEX_RESERVES_RESOLVER, - abi: 'function getDexCollateralReserves(address) view returns (uint256,uint256,uint256,uint256)', - params: [vault.LP_TOKEN] - }) - ]); - - const totalSupplyShares = BigInt(totalSupplySharesRaw) & BigInt('0xffffffffffffffffffffffffffffffff'); - const [token0Reserves, token1Reserves] = reserves; - - const totalPositionShares = rumpelPositions.reduce((sum, p) => sum + BigInt(p.supply), 0n); - const ratio = Number(totalPositionShares) / Number(totalSupplyShares); - - const token0Amount = Number(token0Reserves) * ratio; - const token1Amount = Number(token1Reserves) * ratio; - - if (token0Amount > 0) api.add(vault.TOKEN0, token0Amount.toFixed(0)); - if (token1Amount > 0) api.add(vault.TOKEN1, token1Amount.toFixed(0)); - } else { - api.add(vault.TOKEN, rumpelPositions.map(p => p.supply)); - } - } - } - - async function handleZircuitAssets() { - if (api.chain !== 'ethereum') return; - - const assets = [TOKENS.WEETH, TOKENS.WEETHS, TOKENS.USDE, TOKENS.MSTETH, TOKENS.AMPHRETH] - const calls = [] - for (const asset of assets) - for (const owner of owners) - calls.push({ params: [asset, owner] }) - const tokens = calls.map(i => i.params[0]) - const bals = await api.multiCall({ target: CONTRACTS.ZIRCUIT_RESTAKING_POOL, abi: "function balance(address,address) view returns (uint256)", calls, }); - api.add(tokens, bals) - } - - async function handleStrategyTokenBalances() { - const chain = api.chain; - let tokens = []; - - if (chain === 'ethereum') { - tokens = [ - TOKENS.KWEETH, - TOKENS.KUSDE, - TOKENS.MSTETH, - TOKENS.RSUSDE, - TOKENS.RSTETH, - TOKENS.RE7LRT, - TOKENS.RE7RWBTC, - TOKENS.YT_EBTC, - TOKENS.YT_WEETHK, - TOKENS.YT_AGETH, - TOKENS.YT_WEETHS, - TOKENS.YT_SUSDE, - TOKENS.YT_USDE, - TOKENS.YT_RE7LRT, - TOKENS.YT_RSTETH, - TOKENS.YT_AMPHRETH, - TOKENS.YT_KARAK_SUSDE_30JAN2025, - TOKENS.YT_RSUSDE_27MAR2025, - TOKENS.YT_SUSDE_27MAR2025, - TOKENS.YT_SUSDE_29MAY2025, - TOKENS.YT_USDE_27MAR2025, - TOKENS.YT_SUSDE_31JUL2025, - TOKENS.YT_EUSDE_28MAY2025, - TOKENS.YT_EUSDE_13AUG2025, - TOKENS.YT_USDE_30JUL2025, - TOKENS.YT_LVLUSD_24SEP2025, - TOKENS.YT_USR_28MAY2025, - TOKENS.YT_WSTUSR_24SEP2025, - TOKENS.YT_WEETHS_25JUNE2025, - TOKENS.YT_EETH_25JUNE2025, - TOKENS.YT_WEETHK_25JUNE2025, - TOKENS.YT_AGETH_25JUNE2025, - TOKENS.YT_USDE_24SEP2025, - TOKENS.YT_SUSDE_24SEP2025, - TOKENS.MELLOW_DVSTETH, - TOKENS.MELLOW_RENZO_PZETH, - TOKENS.MELLOW_RSENA, - TOKENS.MELLOW_AMPHRBTC, - TOKENS.MELLOW_STEAKLRT, - TOKENS.MELLOW_HYVEX, - TOKENS.MELLOW_RE7RTBTC, - TOKENS.MELLOW_IFSETH, - TOKENS.MELLOW_CP0XLRT, - TOKENS.MELLOW_URLRT, - TOKENS.MELLOW_COETH, - TOKENS.MELLOW_HCETH, - TOKENS.MELLOW_ISETH, - TOKENS.MELOW_SIBTC, - TOKENS.MELLOW_LUGAETH, - TOKENS.MELLOW_ROETH, - TOKENS.MELLOW_RSUNIBTC, - TOKENS.EULER_EWSTUSR, - TOKENS.PENDLE_LP_WSTUSR_24SEP2025, - ] - } else if (chain === 'hyperliquid') { - // Strategy tokens are handled by handleHyperEVMERC4626Vaults which converts them to underlying assets - tokens = [] - } - - if (tokens.length > 0) { - await api.sumTokens({ owners, tokens }); - } - } - - async function handleSymbioticTokens() { - if (api.chain !== 'ethereum') return; - - const symbioticMappings = [ - { collateral: TOKENS.SYMBIOTIC_WSTETH_COLLATERAL, underlying: TOKENS.WSTETH }, - { collateral: TOKENS.SYMBIOTIC_SUSDE_COLLATERAL, underlying: TOKENS.SUSDE }, - { collateral: TOKENS.SYMBIOTIC_LBTC_COLLATERAL, underlying: ADDRESSES.ethereum.LBTC }, - { collateral: TOKENS.SYMBIOTIC_METH_COLLATERAL, underlying: ADDRESSES.ethereum.METH }, - { collateral: TOKENS.SYMBIOTIC_WBTC_COLLATERAL, underlying: TOKENS.WBTC }, - { collateral: TOKENS.SYMBIOTIC_RETH_COLLATERAL, underlying: ADDRESSES.ethereum.RETH }, - { collateral: TOKENS.SYMBIOTIC_CBETH_COLLATERAL, underlying: ADDRESSES.ethereum.cbETH }, - { collateral: TOKENS.SYMBIOTIC_ENA_COLLATERAL, underlying: ADDRESSES.ethereum.ENA }, - { collateral: TOKENS.SYMBIOTIC_ETHFI_COLLATERAL, underlying: ADDRESSES.ethereum.ETHFI }, - { collateral: TOKENS.SYMBIOTIC_FXS_COLLATERAL, underlying: ADDRESSES.ethereum.FXS }, - { collateral: TOKENS.SYMBIOTIC_TBTC_COLLATERAL, underlying: ADDRESSES.ethereum.tBTC }, - { collateral: TOKENS.SYMBIOTIC_SFRXETH_COLLATERAL, underlying: ADDRESSES.ethereum.sfrxETH }, - { collateral: TOKENS.SYMBIOTIC_GAUNTLET_RESTAKED_CBETH_COLLATERAL, underlying: ADDRESSES.ethereum.cbETH }, - { collateral: TOKENS.SYMBIOTIC_GAUNTLET_RESTAKED_WSTETH_COLLATERAL, underlying: TOKENS.WSTETH }, - { collateral: TOKENS.SYMBIOTIC_WBETH_COLLATERAL, underlying: TOKENS.WBETH }, - { collateral: TOKENS.SYMBIOTIC_SWETH_COLLATERAL, underlying: TOKENS.SWETH }, - { collateral: TOKENS.SYMBIOTIC_LSETH_COLLATERAL, underlying: TOKENS.LSETH }, - { collateral: TOKENS.SYMBIOTIC_OSETH_COLLATERAL, underlying: TOKENS.OSETH }, - { collateral: TOKENS.SYMBIOTIC_GUANTLET_RESTAKED_SWETH_COLLATERAL, underlying: TOKENS.SWETH }, - { collateral: TOKENS.SYMBIOTIC_MANTA_COLLATERAL, underlying: TOKENS.MANTA }, - ] - - const allBalanceCalls = symbioticMappings.flatMap(mapping => - owners.map(owner => ({ - target: mapping.collateral, - params: [owner], - mapping - })) - ) - - const allBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: allBalanceCalls.map(call => ({ target: call.target, params: call.params })) - }) - - const underlyingBalances = {} - allBalanceCalls.forEach((call, index) => { - const balance = allBalances[index] || 0 - const underlying = call.mapping.underlying - if (!underlyingBalances[underlying]) { - underlyingBalances[underlying] = 0n - } - underlyingBalances[underlying] += BigInt(balance) - }) - - Object.entries(underlyingBalances).forEach(([underlying, totalBalance]) => { - if (totalBalance > 0n) { - api.add(underlying, totalBalance.toString()) - } - }) - } - - async function handleHyperEVMERC4626Vaults() { - if (api.chain !== 'hyperliquid') return; - - const vaultMappings = [ - { vault: TOKENS.HYPEREVM_HBHYPE, underlying: TOKENS.HYPEREVM_WHYPE }, - { vault: TOKENS.HYPEREVM_HBBTC, underlying: TOKENS.HYPEREVM_UBTC }, - // hbXAUt has 18 decimals, XAUt0 has 6 decimals, so we need decimal conversion - { vault: TOKENS.HYPEREVM_HBXAUT, underlying: TOKENS.HYPEREVM_XAUT0, isOneToOne: true, vaultDecimals: 18, underlyingDecimals: 6 }, - { vault: TOKENS.HYPEREVM_GTUSDT0, underlying: TOKENS.HYPEREVM_USDT0 }, - { vault: TOKENS.HYPEREVM_HYPERUSDT0, underlying: TOKENS.HYPEREVM_USDT0 }, - { vault: TOKENS.HYPEREVM_MCHYPE, underlying: TOKENS.HYPEREVM_WHYPE }, - { vault: TOKENS.HYPEREVM_GTUETH, underlying: TOKENS.HYPEREVM_UETH }, - { vault: TOKENS.HYPEREVM_BEHYPE, underlying: TOKENS.HYPEREVM_WHYPE }, - { vault: TOKENS.HYPEREVM_HYPERBEAT_LST, underlying: TOKENS.HYPEREVM_WHYPE }, - { vault: TOKENS.HYPEREVM_SENTIMENT_HYPE_SUPER_POOL, underlying: TOKENS.HYPEREVM_WHYPE }, - { vault: TOKENS.HYPEREVM_USDT0_FELIX_METAMORPHO_VAULT, underlying: TOKENS.HYPEREVM_USDT0 }, - { vault: TOKENS.HYPEREVM_USDHL_FELIX_METAMORPHO_VAULT, underlying: TOKENS.HYPEREVM_USDHL }, - ]; - - // Get vault balances for all owners - const balanceCalls = []; - for (const mapping of vaultMappings) { - for (const owner of owners) { - balanceCalls.push({ - target: mapping.vault, - params: [owner], - mapping - }); - } - } - - const vaultBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: balanceCalls.map(call => ({ target: call.target, params: call.params })) - }); - - // Filter out zero balances and prepare convertToAssets calls - const convertCalls = []; - const oneToOneBalances = []; - - for (let i = 0; i < balanceCalls.length; i++) { - if (vaultBalances[i] && vaultBalances[i] > 0) { - if (balanceCalls[i].mapping.isOneToOne) { - // For 1:1 vaults, directly add to oneToOneBalances - let amount = BigInt(vaultBalances[i]); - - // Handle decimal conversion if needed - if (balanceCalls[i].mapping.vaultDecimals && balanceCalls[i].mapping.underlyingDecimals) { - const decimalDiff = balanceCalls[i].mapping.vaultDecimals - balanceCalls[i].mapping.underlyingDecimals; - if (decimalDiff > 0) { - // Convert from vault decimals to underlying decimals - amount = amount / (10n ** BigInt(decimalDiff)); - } - } - - oneToOneBalances.push({ - underlying: balanceCalls[i].mapping.underlying, - amount: amount - }); - } else { - // For ERC4626 vaults, prepare convertToAssets calls - convertCalls.push({ - target: balanceCalls[i].target, - params: [vaultBalances[i]], - mapping: balanceCalls[i].mapping, - vaultBalance: vaultBalances[i] - }); - } - } - } - - // Add 1:1 balances first - for (const balance of oneToOneBalances) { - api.add(balance.underlying, balance.amount); - } - - if (convertCalls.length === 0) return; - - // Convert vault shares to underlying assets - const underlyingAmounts = await api.multiCall({ - abi: 'function convertToAssets(uint256 shares) view returns (uint256)', - calls: convertCalls.map(call => ({ target: call.target, params: call.params })), - permitFailure: true - }); - - // Add underlying assets to the API - for (let i = 0; i < convertCalls.length; i++) { - const underlyingAmount = underlyingAmounts[i]; - const underlying = convertCalls[i].mapping.underlying; - - if (underlyingAmount && underlyingAmount > 0) { - api.add(underlying, underlyingAmount); - } - } - } -} - -async function getOwners(api) { - const chain = api.chain; - let factoryAddress, fromBlock, pointTokenVault; - - if (chain === 'ethereum') { - factoryAddress = CONTRACTS.RUMPEL_WALLET_FACTORY; - fromBlock = DEPLOYMENT.RUMPEL_WALLET_FACTORY.block; - pointTokenVault = CONTRACTS.RUMEPL_POINT_TOKENIZATION_VAULT; - } else if (chain === 'hyperliquid') { - factoryAddress = CONTRACTS.HYPEREVM_RUMPEL_WALLET_FACTORY; - fromBlock = DEPLOYMENT.HYPEREVM_RUMPEL_WALLET_FACTORY.block; - pointTokenVault = CONTRACTS.HYPEREVM_POINT_TOKEN_VAULT; - } else { - return []; - } - - const logs = await getLogs2({ - api, - target: factoryAddress, - topic: "SafeCreated(address,address[],uint256)", - eventAbi: - "event SafeCreated(address indexed safe, address[] indexed owners, uint256 threshold)", - fromBlock: fromBlock, - }); - - return logs - .map((log) => log.safe) - .concat(pointTokenVault); -} - -module.exports = { - methodology: - "Sums up the supported tokens in Rumpel Wallets + Deposits in the Rumpel Point Tokenization Vault", - start: DEPLOYMENT.RUMPEL_WALLET_FACTORY.timestamp, - ethereum: { - tvl, - }, - hyperliquid: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/run-money/index.js b/projects/run-money/index.js deleted file mode 100644 index 87ebfbc70c1..00000000000 --- a/projects/run-money/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const TRACKED_TOKENS = { - aUSDC: '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB', // Aave USDC on Base - aETH: '0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7' // Aave ETH on Base -}; - -// ClubPool contract address -const CONTRACT_ADDRESS = '0x1089db83561d4c9b68350e1c292279817ac6c8da'; - -async function tvl(api) { - const tokens = Object.values(TRACKED_TOKENS); - - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: tokens.map(token => ({ - target: token, - params: [CONTRACT_ADDRESS] - })) - }); - - api.addTokens( - tokens, - balances - ); -} - -module.exports = { - methodology: "Measures TVL of Run Money by tracking aUSDC and aETH balances in the ClubPool contract.", - start: 21942754, // Deployment block of ClubPool - base: { - tvl - } -}; \ No newline at end of file diff --git a/projects/ruscet/index.js b/projects/ruscet/index.js deleted file mode 100644 index c555ed73f52..00000000000 --- a/projects/ruscet/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens } = require("../helper/chain/fuel") - -async function tvl(api) { - const contractId = '0x8002f2e86302ef9421558d0ae25a68cdfdbec5d27915cc2db49eded220799ecc' - return sumTokens({ api, owner: contractId }) -} - -module.exports = { - fuel: { tvl }, - timetravel: false, -} diff --git a/projects/ryoshi/index.js b/projects/ryoshi/index.js deleted file mode 100644 index 951d7cf81a7..00000000000 --- a/projects/ryoshi/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { masterchefExports } = require('../helper/unknownTokens') -const wDoge = ADDRESSES.dogechain.WWDOGE -const nullAddress = ADDRESSES.null - - -module.exports = masterchefExports({ - chain: 'dogechain', - masterchef: '0x206949295503c4FC5C9757099db479dD5383A5dC', - nativeTokens: ['0xa4F9877A08F7639df15D506eAFF92Ab5E78273cd', '0xa98fa09D0BED62A9e0Fb2E58635b7C9274160dc7', ], - useDefaultCoreAssets: true, - poolLengthAbi: "uint256:poolCounter", - poolInfoABI: 'function pools(uint256) view returns (address stakingToken, address rewardsToken, uint256 duration, uint256 finishAt, uint256 updatedAt, uint256 rewardRate, uint256 rewardPerTokenStored, uint256 totalSupply)', - getToken: i => i.stakingToken === nullAddress ? wDoge : i.stakingToken, -}) \ No newline at end of file diff --git a/projects/rysk-v12/index.js b/projects/rysk-v12/index.js deleted file mode 100644 index 4c0f863f9b9..00000000000 --- a/projects/rysk-v12/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - hyperliquid: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.hyperliquid.USDT0, '0x691a5fc3a81a144e36c6C4fBCa1fC82843c80d0d'], // MMarket - // marginPool - [ADDRESSES.hyperliquid.USDT0, '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], - [ADDRESSES.hyperliquid.WHYPE, '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], - ['0x9FDBdA0A5e284c32744D2f17Ee5c74B284993463', '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], // UBTC - ['0xBe6727B535545C67d5cAa73dEa54865B92CF7907', '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], // UETH - ['0x068f321Fa8Fb9f0D135f290Ef6a3e2813e1c8A29', '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], // USOL - ['0x27eC642013bcB3D80CA3706599D3cdA04F6f4452', '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], // UPUMP - ['0xfD739d4e423301CE9385c1fb8850539D657C296D', '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], // kHYPE - ['0x311dB0FDe558689550c68355783c95eFDfe25329', '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], // PT-kHYPE - ['0x9b498C3c8A0b8CD8BA1D9851d40D186F1872b44E', '0x24a44f1dc25540c62c1196FfC297dFC951C91aB4'], // PURR - ] - }) - } -} \ No newline at end of file diff --git a/projects/rysk/index.js b/projects/rysk/index.js deleted file mode 100644 index ef397f725b3..00000000000 --- a/projects/rysk/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -async function tvl(api) { - const balances = {} - const reactorTvl = await api.multiCall({ - abi: 'uint256:getPoolDenominatedValue', calls: [ - '0x933589C46233Efa8cCDe8287E077cA6CC51Bec17', // uniswapV3HedgingReactor alpha - '0xDd418b4Ec8396191D08957bD42F549e215B8e89a', // perpHedgingReactor - '0x0053849115783b9678DBB173BB852f06e950Fe05', // uniswapV3HedgingReactor beyond - '0x5250F9ab6a6a7CB447dc96cb218cE9E796905852', // uniswapV3RangeOrderReactor - '0xf013767D55954EcCCacb4914d52D2ef8f95d82C5', // perpHedgingReactor - '0x575e7766F22DBE82b6DD31B915B7D429B9409F16' // gmxHedgingReactor - ] - }) - reactorTvl.forEach(i => sdk.util.sumSingleBalance(balances, 'tether', i / 1e18)) - - return sumTokens2({ - api, balances, tokensAndOwners: [ - [ADDRESSES.arbitrum.USDC, '0xc10b976c671ce9bff0723611f01422acbae100a5'], // LP alpha - [ADDRESSES.arbitrum.USDC_CIRCLE, '0x217749d9017cB87712654422a1F5856AAA147b80'], // LP beyond USDC native - [ADDRESSES.arbitrum.USDC, '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool - [ADDRESSES.arbitrum.USDC_CIRCLE, '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool USDC native - [ADDRESSES.arbitrum.WETH, '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool - ] - }) -} - -module.exports = { - misrepresentedTokens: true, - arbitrum: { tvl } -} \ No newline at end of file diff --git a/projects/ryze/index.js b/projects/ryze/index.js deleted file mode 100644 index c5c4deb7afa..00000000000 --- a/projects/ryze/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const binaryVaultContract = "0x4d3847da139d423ae9569A9E6E4dd5b7405093FA"; -const feeWallet = '0x04EC26b47E48F60740c803ba93b1a6C9e83cafAa' - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ owners: [binaryVaultContract,], tokens: [ADDRESSES.arbitrum.USDC_CIRCLE]}), - }, -}; diff --git a/projects/saber.js b/projects/saber.js deleted file mode 100644 index 32533eabbac..00000000000 --- a/projects/saber.js +++ /dev/null @@ -1,54 +0,0 @@ -const { sumTokens2, } = require("./helper/solana"); -const { getConfig } = require('./helper/cache') - -// The data here comes directly from -// https://registry.saber.so/data/llama.mainnet.json -const blacklistedTokens = new Set([ - 'JEFFSQ3s8T3wKsvp4tnRAsUBW7Cqgnf8ukBZC4C8XBm1', - 'AEUT5uFm1D575FVCoQd5Yq891FJEqkncZUbBFoFcAhTV', - 'FACTQhZBfRzC7A76antnpAoZtiwYmUfdAN8wz7e8rxC5', - 'KNVfdSJyq1pRQk9AKKv1g5uyGuk6wpm4WG16Bjuwdma', - 'EU9aLffrTckFCs16da6CppHy63fAxMPF9ih1erQTuuRt', - 'C9xqJe3gMTUDKidZsZ6jJ7tL9zSLimDUKVpgUbLZnNbi', - 'LUNGEjUXyP48nrC1GYY5o4eTAkwm4RdX8BxFUxWJBLB', - 'SBTCB6pWqeDo6zGi9WVRMLCsKsN6JiR1RMUqvLtgSRv', - '88881Hu2jGMfCs9tMu5Rr7Ah7WBNBuXqde4nR5ZmKYYy', - 'UST98bfV6EASdTFQrRwCBczpehdMFwYCUdLT5tEbhpW', - 'CASHedBw9NfhsLBXq1WNVfueVznx255j8LLTScto3S6s', - 'UST8SCn7jrqsq51odVLqcmvnC658HkqrKrPL3w2hHQ7', - 'FTT9rBBrYwcHam4qLvkzzzhrsihYMbZ3k6wJbdoahxAt', - '9999j2A8sXUtHtDoQdk528oVzhaKBsXyRGZ67FKGoi7H', - 'KUANeD8EQvwpT1W7QZDtDqctLEh2FfSTy5pThE9CogT', - 'FTT8cGNp3rfTC6c44uPTuEFLqmsVDhjd2BhH65v2uppr', - 'T8KdT8hDzNhbGx5sjpEUxepnbDB1TZoCa7vtC5JjsMw', - 'FTT9GrHBVHvDeUTgLU8FxVJouGqg9uiWGmmjETdm32Sx', - 'SL819j8K9FuFPL84UepVcFkEZqDUUvVzwDmJjCHySYj', - 'BtX7AfzEJLnU8KQR1AgHrhGH5s2AHUTbfjhUQP8BhPvi', -]) - -async function tvl() { - const saberPools = await getConfig('saber', "https://registry.saber.so/data/llama.mainnet.json"); - - function isValidToken(token) { - return !blacklistedTokens.has(token) - } - - const tokenAccounts = saberPools.map(i => { - // filter out cashio dollars - const res = [] - if (isValidToken(i.tokenA)) - res.push(i.reserveA) - if (isValidToken(i.tokenB)) - res.push(i.reserveB) - return res - }).flat() - return sumTokens2({ tokenAccounts, }) -} - -module.exports = { - hallmarks: [ - [1667865600, "FTX collapse"] - ], - timetravel: false, - solana: { tvl }, -}; diff --git a/projects/sable-finance/index.js b/projects/sable-finance/index.js deleted file mode 100644 index 449a02a487b..00000000000 --- a/projects/sable-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getLiquityTvl } = require("../helper/liquity"); -const { pool2 } = require("../helper/pool2"); - - -// Contract address where view function to get total BNB collateral deposited is located -const SABLE_TROVE_MANAGER = '0xEC035081376ce975Ba9EAF28dFeC7c7A4c483B85' -// Contract address for Pool2 where SABLE-BNB LP tokens are staked -const SABLE_LP_STAKING = '0xFbc81aEB7e5c11d4A60a0690Db9F36F93E25B16C' -// Contract address for Pancake SABLE-BNB LP -const PANCAKE_SABLE_BNB = '0xa0D4e270D9EB4E41f7aB02337c21692D7eECCCB0' - -module.exports = { - bsc: { - tvl: getLiquityTvl(SABLE_TROVE_MANAGER), - pool2: pool2(SABLE_LP_STAKING, PANCAKE_SABLE_BNB) -}} \ No newline at end of file diff --git a/projects/sablier-flow/index.js b/projects/sablier-flow/index.js deleted file mode 100644 index 49fe481eb54..00000000000 --- a/projects/sablier-flow/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const { isWhitelistedToken } = require('../helper/streamingHelper') -const { request } = require("graphql-request"); -const sdk = require("@defillama/sdk"); - -const ENVIO_ENDPOINT = 'https://indexer.hyperindex.xyz/3b4ea6b/v1/graphql'; - -// Chains using Envio endpoint -const CHAIN_IDS_ENVIO = { - abstract: 2741, - arbitrum: 42161, - avax: 43114, - base: 8453, - berachain: 80094, - blast: 81457, - bsc: 56, - chz: 88888, - core: 1116, - ethereum: 1, - formnetwork: 478, - xdai: 100, - hyperliquid: 999, - lightlink_phoenix: 1890, - linea: 59144, - mode: 34443, - morph: 2818, - optimism: 10, - polygon: 137, - scroll: 534352, - sonic: 146, - sophon: 50104, - sseed: 5330, - unichain: 130, - xdc: 50, - era: 324, -}; - -// Chains using graph endpoints -const SUBGRAPH_ENDPOINTS = { - sei: '41ZGYcFgL2N7L5ng78S4sD6NHDNYEYcNFxnz4T8Zh3iU', - iotex: '6No3QmRiC8HXLEerDFoBpF47jUPRjhntmv28HHEMxcA2', -}; - - -const config = { - ...Object.fromEntries(Object.keys(CHAIN_IDS_ENVIO).map(k => [k, ENVIO_ENDPOINT])), - ...SUBGRAPH_ENDPOINTS -}; - -const envioPayload = ` -query getChainData($chainId: numeric!) { - Contract(where: { chainId: { _eq: $chainId } }) { id address category } - Asset(where: { chainId: { _eq: $chainId } }) { id chainId symbol } -} -` -const subgraphPayload = ` -{ - contracts { id address } - assets { id chainId symbol } -} -` - -async function getTokensConfig(api, isVesting) { - const endpoint = config[api.chain]; - if (!endpoint) return { ownerTokens: [] }; - - const isSubgraph = !!SUBGRAPH_ENDPOINTS[api.chain]; - const result = isSubgraph - ? await request(sdk.graph.modifyEndpoint(endpoint), subgraphPayload) - : await request(ENVIO_ENDPOINT, envioPayload, { chainId: CHAIN_IDS_ENVIO[api.chain] }); - - if (!result || (!isSubgraph && !CHAIN_IDS_ENVIO[api.chain])) return { ownerTokens: [] }; - - const contracts = result.contracts || result.Contract || []; - const assets = result.assets || result.Asset || []; - - const owners = contracts.map(i => i.address); - - const tokens = assets - .filter(asset => isWhitelistedToken(asset.symbol, asset.id, isVesting)) - .map(asset => asset.id.split('-').slice(2)[0]) - - const ownerTokens = owners.map(owner => [tokens, owner]) - return { ownerTokens } -} - -const tvl = async (api) => api.sumTokens(await getTokensConfig(api, false)); -const vesting = async (api) => api.sumTokens(await getTokensConfig(api, true)); - -module.exports = Object.fromEntries( - Object.keys(config).map(chain => [chain, { tvl, vesting }]) -); diff --git a/projects/sablier-legacy/index.js b/projects/sablier-legacy/index.js deleted file mode 100644 index e0ea366032b..00000000000 --- a/projects/sablier-legacy/index.js +++ /dev/null @@ -1,76 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') -const { covalentGetTokens } = require('../helper/token') -const { isWhitelistedToken } = require('../helper/streamingHelper') -const { getUniqueAddresses } = require('../helper/utils') - -const blacklistedTokens = [ - ADDRESSES.ethereum.sUSD_OLD, - // TODO: We shouldn't need to lowercase here - ADDRESSES.ethereum.SAI.toLowerCase(), - ADDRESSES.ethereum.MKR, -] - -const config = { - ethereum: { - owners: [ - "0xA4fc358455Febe425536fd1878bE67FfDBDEC59a", // v1.0.0 - "0xCD18eAa163733Da39c232722cBC4E8940b1D8888", // v1.1.0 - ] - }, - arbitrum: { owners: ['0xaDB944B478818d95659067E70D2e5Fc43Fa3eDe9'], }, - avax: { owners: ['0x73f503fad13203C87889c3D5c567550b2d41D7a4'], }, - bsc: { owners: ['0x05BC7f5fb7F248d44d38703e5C921A8c16825161'], }, - optimism: { owners: ['0x6C5927c0679e6d857E87367bb635decbcB20F31c'], }, - polygon: { owners: ['0xAC18EAB6592F5fF6F9aCf5E0DCE0Df8E49124C06'], }, -} - -async function getTokens(api, owners, isVesting) { - let tokens = (await Promise.all(owners.map(i => covalentGetTokens(i, api, { onlyWhitelisted: false, })))).flat().filter(i => !blacklistedTokens.includes(i)) - tokens = getUniqueAddresses(tokens) - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens, permitFailure: true }) - - const validTokens = tokens.map((token, index) => { - const symbol = symbols[index]; - return symbol ? { token, symbol } : null; - }).filter(pair => pair !== null); - // Filter vesting tokens - const whitelistedTokens = validTokens.filter(token => { - return isWhitelistedToken(token.symbol, token.token, isVesting); - }); - return whitelistedTokens.map(token => token.token); -} - -async function tvl(api) { - const { owners } = config[api.chain] - const tokens = await getTokens(api, owners, false) - return sumTokens2({ api, owners, tokens, blacklistedTokens, }) -} - -async function vesting(api) { - const { owners } = config[api.chain] - const tokens = await getTokens(api, owners, true) - return sumTokens2({ api, owners, tokens, blacklistedTokens, }) -} - -module.exports = { - hallmarks: [ - ['2022-10-03', 'Vesting tokens are not included in tvl'], - ], - start: '2019-11-12', - timetravel: false, - ronin: { - tvl: sumTokensExport({ - owner: '0xDe9dCc27aa1552d591Fc9B9c21881feE43BD8118', - tokens: [ - ADDRESSES.ronin.USDC, - ADDRESSES.ronin.WETH, - ADDRESSES.ronin.AXS, - ] - }) - } -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, vesting } -}) \ No newline at end of file diff --git a/projects/sablier-lockup/evm.js b/projects/sablier-lockup/evm.js deleted file mode 100644 index 031b5866be7..00000000000 --- a/projects/sablier-lockup/evm.js +++ /dev/null @@ -1,91 +0,0 @@ -const { isWhitelistedToken } = require('../helper/streamingHelper') -const { request } = require("graphql-request"); -const sdk = require("@defillama/sdk"); - -const ENVIO_ENDPOINT = 'https://indexer.hyperindex.xyz/53b7e25/v1/graphql'; - -// Chains using Envio indexer. -const CHAIN_IDS_ENVIO = { - abstract: 2741, - arbitrum: 42161, - avax: 43114, - base: 8453, - berachain: 80094, - blast: 81457, - bsc: 56, - chz: 88888, - core: 1116, - ethereum: 1, - formnetwork: 478, - xdai: 100, - hyperliquid: 999, - lightlink_phoenix: 1890, - linea: 59144, - mode: 34443, - morph: 2818, - optimism: 10, - polygon: 137, - scroll: 534352, - sonic: 146, - sophon: 50104, - sseed: 5330, - unichain: 130, - xdc: 50, - era: 324, -}; - -// Chains that are not using the Envio indexer but using the Graph. -const SUBGRAPH_ENDPOINTS = { - sei: 'AJU5rBfbuApuJpeZeaz6NYuYnnhAhEy4gFkqsSdAT6xb', - iotex: '2P3sxwmcWBjMUv1C79Jh4h6VopBaBZeTocYWDUQqwWFV', -}; - -const config = { - ...Object.fromEntries(Object.keys(CHAIN_IDS_ENVIO).map(k => [k, ENVIO_ENDPOINT])), - ...SUBGRAPH_ENDPOINTS -}; - -const envioPayload = ` -query getChainData($chainId: numeric!) { - Contract(where: { chainId: { _eq: $chainId } }) { id address category } - Asset(where: { chainId: { _eq: $chainId } }) { id chainId symbol } -} -` - -const subgraphPayload = ` -{ - contracts { id address category } - assets { id chainId symbol } -} -` - -async function getTokensConfig(api, isVesting) { - const endpoint = config[api.chain]; - if (!endpoint) return { ownerTokens: [] }; - - const isSubgraph = !!SUBGRAPH_ENDPOINTS[api.chain]; - const result = isSubgraph - ? await request(sdk.graph.modifyEndpoint(endpoint), subgraphPayload) - : await request(ENVIO_ENDPOINT, envioPayload, { chainId: CHAIN_IDS_ENVIO[api.chain] }); - - if (!result || (!isSubgraph && !CHAIN_IDS_ENVIO[api.chain])) return { ownerTokens: [] }; - - const contracts = result.contracts || result.Contract || []; - const assets = result.assets || result.Asset || []; - - const owners = contracts.map(i => i.address); - - const tokens = assets - .filter(asset => isWhitelistedToken(asset.symbol, asset.id, isVesting)) - .map(asset => asset.id.split('-')[2]); - - const ownerTokens = owners.map(owner => [tokens, owner]); - return { ownerTokens }; -} - -const tvl = async (api) => api.sumTokens(await getTokensConfig(api, false)); -const vesting = async (api) => api.sumTokens(await getTokensConfig(api, true)); - -module.exports = Object.fromEntries( - Object.keys(config).map(chain => [chain, { tvl, vesting }]) -); diff --git a/projects/sablier-lockup/index.js b/projects/sablier-lockup/index.js deleted file mode 100644 index ff7023294ec..00000000000 --- a/projects/sablier-lockup/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const evm = require("./evm"); -const solana = require("./solana"); - -module.exports = { - ...evm, - ...solana -}; \ No newline at end of file diff --git a/projects/sablier-lockup/solana.js b/projects/sablier-lockup/solana.js deleted file mode 100644 index 5cbd285b759..00000000000 --- a/projects/sablier-lockup/solana.js +++ /dev/null @@ -1,28 +0,0 @@ -const { sumTokens2 } = require('../helper/solana'); - -const GRAPH_ENDPOINT = 'https://graph.sablier.io/lockup-mainnet/subgraphs/name/sablier-lockup-solana-mainnet'; - -const query = ` -{ - streams { - funderAta - } -} -`; - -async function tvl() { - const result = await fetch(GRAPH_ENDPOINT, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ query }) - }).then(res => res.json()); - - if (!result.data) throw new Error(`Graph query failed: ${JSON.stringify(result)}`); - - return sumTokens2({ tokenAccounts: result.data.streams.map(s => s.funderAta) }); -} - -module.exports = { - timetravel: false, - solana: { tvl } -}; diff --git a/projects/sacra/index.js b/projects/sacra/index.js deleted file mode 100644 index 711247ab89c..00000000000 --- a/projects/sacra/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -// fantom contracts -const controllerFantom = '0xE5365c31c08d6ee44fdd33394ba279b85557c449'; -const tresuryFantom = "0x146dd6E8f9076dfEE7bE0b115bb165d62874d110"; -const rewardPoolFantom = '0x8E629C4301871d2A07f76366FE421e86855DC690'; - -// real contracts -const controllerReal = '0x6ce857d3037e87465b003aCbA264DDF2Cec6D5E4'; -const tresuryReal = '0xd0C1378c177E961D96c06b0E8F6E7841476C81Ef'; -const rewardPoolReal = '0xb35E67FD20070C3d3dC5EEa29D62e95b707471cA'; - -// sonic contracts -const controllerSonic = '0x75e1e98650c119c4E3dCE3070CE6A5397Ed70c6a'; -const tresurySonic = '0x3bDbd2Ed1A214Ca4ba4421ddD7236ccA3EF088b6'; -const rewardPoolSonic = '0xda08F7DE9923acEe24CE292Ec2b20D45b1522Cb6'; -const sonicSacra = '0x7AD5935EA295c4E743e4f2f5B4CDA951f41223c2' - - -module.exports = { - methodology: `We count the WFTM, USDC and wS on treasuty, reward pool and controller contracts`, - fantom: { - tvl: sumTokensExport({ token: ADDRESSES.fantom.WFTM, owners: [controllerFantom, tresuryFantom, rewardPoolFantom] }) - }, - real: { - tvl: sumTokensExport({ token: ADDRESSES.real.USDC, owners: [controllerReal, tresuryReal, rewardPoolReal] }) - }, - sonic: { - tvl: sumTokensExport({ token: ADDRESSES.sonic.wS, owners: [controllerSonic, tresurySonic, rewardPoolSonic] }), - staking: sumTokensExport({ token: sonicSacra, owners: [controllerSonic, tresurySonic, rewardPoolSonic] }), - } -} \ No newline at end of file diff --git a/projects/saddle/contracts.json b/projects/saddle/contracts.json deleted file mode 100644 index c90c85bb98e..00000000000 --- a/projects/saddle/contracts.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ethereum": "0xc5ad17b98D7fe73B6dD3b0df5b3040457E68C045", - "arbitrum": "0xaB94A2c0D8F044AA439A5654f06b5797928396cF", - "fantom": "0x7003102c75587E8D29c56124060463Ef319407D0", - "evmos": "0xBa684B8E05415726Ee1fFE197eaf1b82E4d44418", - "optimism": "0x0E510c9b20a5D136E75f7FD2a5F344BD98f9d875", - "kava": "0x3A0c2A793a8DB779e0293699D0Ce77c77617FE0f", - "aurora": "0x29FD31d37AB8D27f11EAB68F96424bf64231fFce" -} diff --git a/projects/saddle/index.js b/projects/saddle/index.js deleted file mode 100644 index 19be0b7da4b..00000000000 --- a/projects/saddle/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const contracts = require("./contracts.json"); - -const POOL_REGISTRY_BYTES = - "0x506f6f6c52656769737472790000000000000000000000000000000000000000"; -module.exports = { - misrepresentedTokens: true, - methodology: - "Counts as TVL all the Assets deposited on each chain through different Pool Contracts", - - // hallmarks: [[1651276800, "sUSDv2 hack"]], -}; - -Object.keys(contracts).forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - const poolRegAddress = await api.call({ - abi: "function resolveNameToLatestAddress(bytes32 name) view returns (address)", - target: contracts[chain], - params: [POOL_REGISTRY_BYTES], - }); - const poolsDatas = await api.fetchList({ - lengthAbi: "uint256:getPoolsLength", - itemAbi: `function getPoolDataAtIndex(uint256 index) view returns (tuple( - address poolAddress, - address lpToken, - uint8 typeOfAsset, - bytes32 poolName, - address targetAddress, - address[] tokens, - address[] underlyingTokens, - address basePoolAddress, - address metaSwapDepositAddress, - bool isSaddleApproved, - bool isRemoved, - bool isGuarded - ))`, - target: poolRegAddress, - }) - - const toa = []; - const blacklistedTokens = []; - Object.values(poolsDatas).forEach(({ poolAddress, lpToken, tokens }) => { - blacklistedTokens.push(lpToken); - tokens.forEach((i) => toa.push([i, poolAddress])); - }); - return sumTokens2({ - api, - tokensAndOwners: toa, - blacklistedTokens, - }); - }, - }; -}); diff --git a/projects/safedollar/index.js b/projects/safedollar/index.js deleted file mode 100644 index fabf82dbde6..00000000000 --- a/projects/safedollar/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - polygon: { - tvl: () => ({}), - }, - deadFrom: '2022-04-27', -}; \ No newline at end of file diff --git a/projects/safeohm/index.js b/projects/safeohm/index.js deleted file mode 100644 index cb57734f5d2..00000000000 --- a/projects/safeohm/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x16d657D5CfD6D7f894BFdB2F5481f8a23bDce269" -module.exports = ohmTvl(treasury, [ - [ADDRESSES.bsc.WBNB, false], - ["0xb2e7793aad96e4e3048e0eb8d091e13a12087a52", true], - ], "bsc", "0x7C340D53252A5b921754A436Ce3211Ac6E0F267D", "0xBDaa094a95e452c6bA175cE9EdfeFBa04e6a51Ac") - -module.exports.deadFrom = '2022-06-01' \ No newline at end of file diff --git a/projects/safeswap/index.js b/projects/safeswap/index.js deleted file mode 100644 index ca353a480b4..00000000000 --- a/projects/safeswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xe9c29cB475C0ADe80bE0319B74AD112F1e80058F) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - polygon: { - tvl: getUniTVL({ factory: '0x5be44d6C5634161CdaDcC2bc35389325aa493e83', useDefaultCoreAssets: true }), - }, - ethereum: { - tvl: getUniTVL({ factory: '0xB919aD419688F7C274f11F180112514941a910CB', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/saffron/abi.json b/projects/saffron/abi.json deleted file mode 100644 index 4216157d81a..00000000000 --- a/projects/saffron/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSFIPerShare)" -} \ No newline at end of file diff --git a/projects/saffron/index.js b/projects/saffron/index.js deleted file mode 100644 index c35c5ae004e..00000000000 --- a/projects/saffron/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require("../helper/staking"); - -const SaffronStakingV2Contract = "0x4eB4C5911e931667fE1647428F38401aB1661763"; -const SFI = "0xb753428af26e81097e7fd17f40c88aaa3e04902c" - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking(SaffronStakingV2Contract, SFI), - pool2: staking([SaffronStakingV2Contract], [ - "0xC76225124F3CaAb07f609b1D147a31de43926cd6", - "0x23a9292830fc80db7f563edb28d2fe6fb47f8624", - "0x83887500cf852cb4af33d74c148c9c7c35f91620" - ]), - tvl: async()=>({}) - }, - methodology: - "We count liquidity for Saffon V2 on the Pools (LP) through SaffronStakingV2 Contract", -}; diff --git a/projects/sagebet/index.js b/projects/sagebet/index.js deleted file mode 100644 index 046bf4a9ccb..00000000000 --- a/projects/sagebet/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const [markets] = await api.call({ target: '0xd350c2b3d8eb1de65cfa68928ea135eda88326b6', abi: "function getAllActiveMarkets() view returns (address[], string[], bool[])"}) - const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: markets}) - return sumTokens2({ api, tokensAndOwners2: [tokens, markets]}) -} - -module.exports = { - arbitrum: { tvl } -} \ No newline at end of file diff --git a/projects/saharadao/abi.json b/projects/saharadao/abi.json deleted file mode 100644 index 89cd4fbd2f7..00000000000 --- a/projects/saharadao/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "bank": { - "usableCollateralBalance": "uint256:usableCollateralBalance" - }, - "multiFeeDistribution": { - "totalSupply": "uint256:totalSupply" - }, - "pair": { - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)" - } -} diff --git a/projects/saharadao/index.js b/projects/saharadao/index.js deleted file mode 100644 index 0bae7002251..00000000000 --- a/projects/saharadao/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const Abis = require("./abi.json"); - -const Contracts = { - cronos: { - mmf: "0x97749c9B61F878a880DfE312d2594AE07AEd7656", - musd: "0x95aEaF383E2e86A47c11CffdE1F7944eCB2C38C2", - mng: "0xC9b23289c60783649AA327732FCCEc2f5d0aC466", - bank: "0x800E2ac0A7c243420eea2bE29Cc95B2B650f7337", - bankMusd: "0xa23608087908F3812219886bCec68c4FA77A9eE5", - multiFeeDistribution: "0xE6F7ADf2F2aCd219Ca68136cd47C2C826a3Ba1A9", - chef: "0x6F132536069F8E35ED029CEd563710CF68fE8E54", - }, -}; - -async function calcTvl(api) { - const bankBalance = await api.call({ target: Contracts.cronos.bank, abi: Abis.bank.usableCollateralBalance, }); - const bankBalanceMusd = await api.call({ target: Contracts.cronos.bankMusd, abi: Abis.bank.usableCollateralBalance, }); - api.add(Contracts.cronos.mmf, bankBalance); - api.add(Contracts.cronos.musd, bankBalanceMusd); -} - -async function calcStaking(api) { - const stakingData = await api.call({ target: Contracts.cronos.multiFeeDistribution, abi: Abis.multiFeeDistribution.totalSupply, }); - api.add(Contracts.cronos.mng, stakingData); -} - -module.exports = { - cronos: { - tvl: calcTvl, - pool2: () => ({}), - staking: calcStaking, - }, -}; diff --git a/projects/saharaexchange/index.js b/projects/saharaexchange/index.js deleted file mode 100644 index 8d3acb7c35e..00000000000 --- a/projects/saharaexchange/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const ANKH = "0x043694e7d4F10C1030A1D739694e9C2dA34ff7c7" -module.exports = { - methodology: "Count TVL as liquidity on the dex", - misrepresentedTokens: true, - oasis: { - tvl: getUniTVL({ factory: '0x9D7B4519C7bED9a1e1307F8f84975DBc7a1D3C75', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/sailfish-v3/index.js b/projects/sailfish-v3/index.js deleted file mode 100644 index 04ef7c8338d..00000000000 --- a/projects/sailfish-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - occ: { factory: '0x963A7f4eB46967A9fd3dFbabD354fC294FA2BF5C', fromBlock: 142495 }, -}) diff --git a/projects/sailing-portfolios/index.js b/projects/sailing-portfolios/index.js deleted file mode 100644 index c07de05ebb1..00000000000 --- a/projects/sailing-portfolios/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const portfoliosTrackers = { - 'kava': '0x12c90425dD549DEdD455E223a897E438E2Dc0bbc', -}; - -async function tvl(api) { - const portfoliosTracker = portfoliosTrackers[api.chain] - const portfolios = await api.call({ - target: portfoliosTracker, - abi: 'function getTrackedPortfolios() external view returns (address[] memory)', - }) - const tokens = await api.multiCall({ abi: 'address[]:getPortfolioAssets', calls: portfolios}) - const ownerTokens = portfolios.map((portfolio, i) => [tokens[i], portfolio]) - return api.sumTokens({ ownerTokens, blacklistedTokens: ['0x47a663C082926d0d913cAcB89240c3f4bc409a88','0x2d519b9308aeb0c57921030dd5de4e88c44cec7c'] }) -} - -module.exports = { - kava: { tvl, }, - methodology: 'The assets in the balancer are detected and counted.' -} diff --git a/projects/sailingprotocol/index.js b/projects/sailingprotocol/index.js deleted file mode 100644 index 818bb4d0aba..00000000000 --- a/projects/sailingprotocol/index.js +++ /dev/null @@ -1,119 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const axios = require('axios'); - -const tokens = [ - { - "address": "0x75B5DACEc8DACcb260eA47549aE882513A21CE01", - "ticker": "SPY", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0x2E4763AdBEe00D5eB3089ec25973599c0e62dD07", - "ticker": "ARKK", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0xf69eadAd0A7cE0aD62ac7AdB16338f55Fa5aEdbD", - "ticker": "DLO", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0xD07dd056c2C2073565C992B4aC2321b6A2e4a112", - "ticker": "SUPV", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0x57c1e6001519D2C7FcEE64a8e03e1bDba7A1716F", - "ticker": "AAPL", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0xfb7a9dea566381c912aC3a221595F6559bFCDEc6", - "ticker": "TSLA", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0x81B841D336D984233353420d172309f321EfBc02", - "ticker": "META", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0xC777b949c0889094BC9A241BCFE8e9492b18824f", - "ticker": "AMZN", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0xD9aEA8D7712aA5F54EDA0982211f38ecDDa22BA1", - "ticker": "GME", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0xA265653185Ed26a27e93092c458b5C6a6aEF078a", - "ticker": "AMC", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0x7f6b23782DC290C6758E6014e6F512E1b46f07e6", - "ticker": "DIS", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0x7d0e7d4617B7B1a4D335e7E6Fef2f0F98Fb8D6D9", - "ticker": "MSTR", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0x019293eDC7A277F8879EC51A59E0Ffe415f6120e", - "ticker": "QQQ", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0xA78Fb2b64Ce2Fb8bBe46968cf961C5Be6eB12924", - "ticker": "AAAU", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0x79E2174f64286Bb92c8BD00d0D8A126eAc664c27", - "ticker": "ABNB", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, - { - "address": "0x1e01aE049Bcb76ec91aa59e11b84a01375cB19b0", - "ticker": "DNA", - "sufficientLiquidityForDefiLlamaIndexer": false, - }, -]; - -async function tvl(api) { - const addTokenTVL = async (token) => { - const tokenTotalSupply = await api.call({ target: token.address, abi: 'erc20:totalSupply' }); - if (token.sufficientLiquidityForDefiLlamaIndexer) { - api.add(token.address, tokenTotalSupply); - } else { - const tickerPricing = await axios.post( - 'https://sailingprotocol.org/api/market_data/historical_intraday', - { - ticker: token.ticker - } - ); - const tickerPrice = Object.values(tickerPricing.data).pop(); // latest price - api.add( - ADDRESSES.kava.USDt, // usdtKavaAddress - tokenTotalSupply * tickerPrice * (1e6 / 1e18) - ); - } - }; - const promises = []; - for (const token of tokens) { - promises.push(addTokenTVL(token)); - } - await Promise.all(promises); -} - -module.exports = { - misrepresentedTokens: true, // false, // until all tokens are indexed by defillama - timetravel: false, // true, // until there is enough dex liquidity for the main tokens - kava: { tvl: () => ({}), }, - methodology: 'The total supply of their circulating stocks is extracted from their stock token contracts.' -} diff --git a/projects/sailor-finance/index.js b/projects/sailor-finance/index.js deleted file mode 100644 index ef8babbdd7d..00000000000 --- a/projects/sailor-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') -const { sumTokens2 } = require('../helper/unwrapLPs') - -module.exports = { - sei: { tvl }, -} - -async function tvl(api) { - const pools = await getConfig('sailor', undefined, { - fetcher: async () => { - let { pools } = await get(`https://asia-southeast1-ktx-finance-2.cloudfunctions.net/sailor_poolapi/pools`) - pools = pools.map(i => i.pool_address) - return pools - } - }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - const ownerTokens = pools.map((v, i) => [[token0s[i], token1s[i]], v]) - return sumTokens2({ api, ownerTokens }) -} \ No newline at end of file diff --git a/projects/saitaswap/index.js b/projects/saitaswap/index.js deleted file mode 100644 index f73a16b59c1..00000000000 --- a/projects/saitaswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x35113a300ca0D7621374890ABFEAC30E88f214b1 on Ethereum & 0x19e5ebc005688466d11015e646fa182621c1881e on BSC) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - ethereum: { - tvl: getUniTVL({ factory: '0x35113a300ca0D7621374890ABFEAC30E88f214b1', useDefaultCoreAssets: true }), - }, - bsc: { - tvl: getUniTVL({ factory: '0x19e5ebc005688466d11015e646fa182621c1881e', useDefaultCoreAssets: true }), - }, -}; // node test.js projects/saitaswap/index.js \ No newline at end of file diff --git a/projects/sakai-vault/index.js b/projects/sakai-vault/index.js deleted file mode 100644 index c42b387a332..00000000000 --- a/projects/sakai-vault/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require("../helper/staking") - -const SAKAI = "0x43b35e89d15b91162dea1c51133c4c93bdd1c4af" -const contracts = { - "Sakai-SP": "0xc20A079c7962D9fc92173cda349e80D484dFA42A", //Sakai Staking Protocol Contract - "Sakai-SP-V2": "0xba94E7c2306aC3BE22C123041Fd7823d7fA15933", //Sakai Staking Protocol Contract V2 - "Sakai-DAO": "0xeEC3514a5A66432ff2887e44664b5a82db229e5F", //Sakai DAO Contract -} - -module.exports = { - bsc: { - tvl: () => ({}), - staking: staking(Object.values(contracts), SAKAI), - }, -} \ No newline at end of file diff --git a/projects/sake-finance/index.js b/projects/sake-finance/index.js deleted file mode 100644 index 4dcbe77a512..00000000000 --- a/projects/sake-finance/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - }; - - const CONFIG = { - soneium: ['0x2BECa16DAa6Decf9C6F85eBA8F0B35696A3200b3','0x3b5FDb25672A0ea560E66905B97d0c818a00f5eb'] - }; - - const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: abi.getAllReservesTokens }); - - const calls = [] - - poolDatas.map((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => calls.push({ target: pool, params: tokenAddress })); - }); - const reserveData = await api.multiCall({ abi: isBorrowed ? abi.getReserveData : abi.getReserveTokensAddresses, calls, }) - const tokensAndOwners = [] - reserveData.forEach((data, i) => { - const token = calls[i].params - if (isBorrowed) { - api.add(token, data.totalVariableDebt) - api.add(token, data.totalStableDebt) - } else - tokensAndOwners.push([token, data.aTokenAddress]) - }) - - if (isBorrowed) return api.getBalances() - return api.sumTokens({ tokensAndOwners }) - } - - module.exports.methodology = "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending." - - Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - borrowed: (api) => fetchReserveData(api, poolDatas, true), - }; - }); - \ No newline at end of file diff --git a/projects/sakeperp/index.js b/projects/sakeperp/index.js deleted file mode 100644 index 60f681ae655..00000000000 --- a/projects/sakeperp/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const ethSake = "0x066798d9ef0833ccc719076Dab77199eCbd178b0"; -const ethSakebar = "0x5fe808a4889b714496E7b821c8542e26be2f8f67"; -const bscSake = "0x8BD778B12b15416359A227F0533Ce2D91844e1eD"; -const bscSakebar = "0xbC83FAdA7D0881F772daaB2B4295F949FA309B59"; -const perpVault = "0xa34dA41edB2b15A20893d2208377E24D8dcdeB6e"; - -module.exports = { - misrepresentedTokens: true, - methodology: - "TVL consists of pools in the factory contract and the BUSD in the PerpVault contract. Staking consists of SAKE in SakeBar.", - ethereum: { - tvl: getUniTVL({ factory: '0x75e48C954594d64ef9613AeEF97Ad85370F13807', useDefaultCoreAssets: true, }), - staking: staking(ethSakebar, ethSake, ), - }, - bsc: { - tvl: sdk.util.sumChainTvls([getUniTVL({ factory: '0xA534cf041Dcd2C95B4220254A0dCb4B905307Fd8', useDefaultCoreAssets: true, }), staking(perpVault, ADDRESSES.bsc.BUSD,)]), - staking: staking(bscSakebar, bscSake, ), - }, -}; diff --git a/projects/salem/index.js b/projects/salem/index.js deleted file mode 100644 index 6473ef02bd3..00000000000 --- a/projects/salem/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require('../helper/utils'); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'cronos', - masterchef: '0xBD124D3B18a382d807a9E491c7f1848403856B08', - nativeToken: '0x637CB66526244029407046867E1E0DFD28b2294E', - }), - masterchefExports({ - chain: 'fantom', - masterchef: '0xdA2A9024D8D01F4EA0aa35EEdf771432095219ef', - nativeToken: '0xa26e2D89D4481500eA509Df58035073730cff6D9', - }), - masterchefExports({ - chain: 'polygon', - masterchef: '0x53D392646faB3caE0a08Ead31f8B5cBFFf55b818', - nativeToken: '0xf5291e193aad73cac6fd8371c98804a46c6c6577', - }), -]) \ No newline at end of file diff --git a/projects/salsa/index.js b/projects/salsa/index.js deleted file mode 100644 index 4f9de849d0a..00000000000 --- a/projects/salsa/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { call } = require("../helper/chain/elrond"); - -const ADDRESSES = require('../helper/coreAssets.json'); - -const tvl = async (api) => { - const tokenPrice = await call({ target: 'erd1qqqqqqqqqqqqqpgqaqxztq0y764dnet95jwtse5u5zkg92sfacts6h9su3', abi: 'getTokenPrice', responseTypes: ['number'] }); - const lsTokenSupply = await call({ target: 'erd1qqqqqqqqqqqqqpgqaqxztq0y764dnet95jwtse5u5zkg92sfacts6h9su3', abi: 'getLiquidTokenSupply', responseTypes: ['number'] }); - api.add(ADDRESSES.null, tokenPrice * lsTokenSupply / 1e18) - - const egldReserve = await call({ target: 'erd1qqqqqqqqqqqqqpgqaqxztq0y764dnet95jwtse5u5zkg92sfacts6h9su3', abi: 'getEgldReserve', responseTypes: ['number'] }); - api.add(ADDRESSES.null, egldReserve) -}; - -module.exports = { - timetravel: false, - elrond: { - tvl, - }, -}; diff --git a/projects/saltyio/abi.json b/projects/saltyio/abi.json deleted file mode 100644 index 965aa705fd6..00000000000 --- a/projects/saltyio/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "whitelistedPools": "function whitelistedPools() returns ( tuple(bytes32 poolID)[] )", - "underlyingTokenPair": "function underlyingTokenPair( bytes32 poolID) returns ( address tokenA, address tokenB )", - "balanceOf": "function balanceOf( address owner) returns ( uint256 balance )", - "maxSALT": "function maxSALT() returns ( uint256 max )", - "priceSALT": "function priceSALT() returns ( uint256 price )", - "circulatingSALT": "function circulatingSALT() returns ( uint256 circulating )" -} diff --git a/projects/saltyio/index.js b/projects/saltyio/index.js deleted file mode 100644 index db13807632e..00000000000 --- a/projects/saltyio/index.js +++ /dev/null @@ -1,32 +0,0 @@ - - -const { staking } = require('../helper/staking') - -const config = { - ethereum: { POOLS_CONFIG_CONTRACT: '0xA6ba8decE812f4663A19960735c0F66560a1D894', POOLS_CONTRACT: '0xf5D65d370141f1fff0Db646c9406Ce051354A8a5', } -} - -const SALT_CONTRACT = '0x0110B0c3391584Ba24Dbf8017Bf462e9f78A6d9F' -const STAKING_CONTRACT = '0x7c6f5E73210080b093E724fbdB3EF7bcdd6D468b' - -module.exports = { - start: '2024-04-21', -} - -Object.keys(config).forEach(chain => { - const { POOLS_CONFIG_CONTRACT, POOLS_CONTRACT, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const poolIDs = await api.call({ abi: abi.whitelistedPools, target: POOLS_CONFIG_CONTRACT, }) - const tokens = await api.multiCall({ abi: abi.underlyingTokenPair, target: POOLS_CONFIG_CONTRACT, calls: poolIDs.map(i => i.poolID) }) - return api.sumTokens({ owner: POOLS_CONTRACT, tokens: tokens.flat() }) - } - } -}) - -module.exports.ethereum.staking = staking(STAKING_CONTRACT, SALT_CONTRACT) - -const abi = { - "whitelistedPools": "function whitelistedPools() returns ( tuple(bytes32 poolID)[] )", - "underlyingTokenPair": "function underlyingTokenPair( bytes32 poolID) returns ( address tokenA, address tokenB )", -} \ No newline at end of file diff --git a/projects/salvor/index.js b/projects/salvor/index.js deleted file mode 100644 index c4cc690d750..00000000000 --- a/projects/salvor/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -module.exports.avax = { - start: '2023-05-07', - hallmarks: [ - [1702501200, "Salvor Lending Launch"] - ], - methodology: 'TVL counts AVAX coins in the Salvor Pool address:0xab4fe2d136efd7f8dfce3259a5e3c5e4c0130c80 and ERC20 assets in the Salvor Lending Pool address: 0x22e229d14dc80a1ea7ca7637173e8c6c36d60fe8', - staking: staking("0x72b73fa1569dF9fF1aE9b29CD5b164Af6c02EbaA", "0xF99516BC189AF00FF8EfFD5A1f2295B67d70a90e"), - tvl: sumTokensExport({ - owners: ["0xab4fe2d136efd7f8dfce3259a5e3c5e4c0130c80", "0x22e229d14dc80a1ea7ca7637173e8c6c36d60fe8"], - tokens: [ - ADDRESSES.avax.WAVAX, - ADDRESSES.avax.USDC, - ADDRESSES.avax.USDt, - ADDRESSES.avax.JOE, - "0x420FcA0121DC28039145009570975747295f2329", - "0xAcFb898Cff266E53278cC0124fC2C7C94C8cB9a5", - "0xB8d7710f7d8349A506b75dD184F05777c82dAd0C", - "0x184ff13B3EBCB25Be44e860163A5D8391Dd568c1", - "0x5Ac04b69bDE6f67C0bd5D6bA6fD5D816548b066a", - "0xAAAB9D12A30504559b0C5a9A5977fEE4A6081c6b", - "0x60781C2586D68229fde47564546784ab3fACA982", - "0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6", - "0x8aD25B0083C9879942A64f00F20a70D3278f6187", - "0xE8385CECb013561b69bEb63FF59f4d10734881f3", - "0x65378b697853568da9ff8eab60c13e1ee9f4a654", - "0x4f94b8aef08c92fefe416af073f1df1e284438ec", - "0x201d04f88bc9b3bdacdf0519a95e117f25062d38", - "0x46b9144771cb3195d66e4eda643a7493fadcaf9d", - "0xebb5d4959b2fba6318fbda7d03cd44ae771fc999", - "0x18e3605b13f10016901eac609b9e188cf7c18973", - "0x4d6ec47118f807ace03d3b3a4ee6aa96cb2ab677", - "0x694200a68b18232916353250955be220e88c5cbb", - "0x03f77458e1eb9fa72b8186b573e40b106442f155", - "0x6ec18092ee47fcc8f1fe15899156ff20c64ab3d7", - "0x4a5bb433132b7e7f75d6a9a3e4136bb85ce6e4d5", - "0x8f56421dc48dcce052d9afc80b696291ddaa832a", - "0x56b9f5e181550b40472fd8c10a34e4ee6009c304", - "0xc8e7fb72b53d08c4f95b93b390ed3f132d03f2d5", - "0x7a842a6f4580edd3df41c1f31e0395044de6bc75", - ADDRESSES.avax.BTC_b, - "0xb44b645b5058f7e393f3ae6af58a4cef67006196", - "0xc654721fbf1f374fd9ffa3385bba2f4932a6af55", - "0xffff003a6bad9b743d658048742935fffe2b6ed7", - "0x69260b9483f9871ca57f81a90d91e2f96c2cd11d", - "0x1c7c53aa86b49a28c627b6450091998e447a42f9", - nullAddress - ] - }), -}; diff --git a/projects/samodao/index.js b/projects/samodao/index.js deleted file mode 100644 index e03b48b92b3..00000000000 --- a/projects/samodao/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - - -const token = "0xcd7CBc46d083A245B45E22Cb4bE2c569947Ce896"; -const tokenStaking = "0x082e884e640eC62C67ea3dC791793E4dF2C46c2D"; -const treasury = "0xBB575FbDd418E9e8405D97A33043818A379CD2Ca"; -const treasurytokens = [ - [ADDRESSES.bsc.BUSD, false], // BUSD - ["0x4a49858B15F934306725B32582FFa55f95D9F90a", true] // CAKE LP (samoDAO-BUSD) -] - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasurytokens, "bsc", tokenStaking, token, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/sanctuary/index.js b/projects/sanctuary/index.js deleted file mode 100644 index 112bb988232..00000000000 --- a/projects/sanctuary/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('scroll', '0xAD71e466d6E9c5CbAC804dBF60dE2543d58B4b5B', { }) diff --git a/projects/sanctum-infinity/index.js b/projects/sanctum-infinity/index.js deleted file mode 100644 index d98a2f5b0ed..00000000000 --- a/projects/sanctum-infinity/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { decodeAccount, getConnection } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); - -async function tvl() { - const connection = getConnection(); - const poolInfoAccount = await connection.getAccountInfo( - new PublicKey("AYhux5gJzCoeoc1PoJ1VxwPDe22RwcvpHviLDD1oCGvW") - ); - const decoded = decodeAccount("sanctumInfinity", poolInfoAccount); - const tvlInfinity = decoded.totalSolValue.toNumber() / 1e9; - - return { - solana: tvlInfinity, - }; -} - -module.exports = { - timetravel: false, - methodology: - "TVL is calculated by calling the on-chain state of the Infinity pool", - solana: { tvl }, -}; diff --git a/projects/sanctum-validator-lsts/index.js b/projects/sanctum-validator-lsts/index.js deleted file mode 100644 index 9e33033e161..00000000000 --- a/projects/sanctum-validator-lsts/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection, decodeAccount } = require("../helper/solana"); - -async function tvl() { - // https://github.com/igneous-labs/sanctum-lst-list - const connection = getConnection(); - - // get sanctum single validator stake pools (SVSP) - const singleValidatorStakePoolAccounts = await connection.getParsedProgramAccounts(new PublicKey("SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY"), { - filters: [ - { - dataSize: 611, // number of bytes - }, - ], - }) - - // get sanctum multiple validators stake pools (MVSP) - const multipleValidatorStakePoolAccounts = await connection.getParsedProgramAccounts(new PublicKey("SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn"), { - filters: [ - { - dataSize: 611, // number of bytes - }, - ], - }) - - // join SVSP and MVSP and decode pool data - const allValidatorStakePoolAccounts = [...singleValidatorStakePoolAccounts,...multipleValidatorStakePoolAccounts].map(poolAccount => decodeAccount("stakePoolPartial", poolAccount.account)) - - // get sanctum LSTs mints - const poolMints = allValidatorStakePoolAccounts.map(value => value.poolMint) - - // get LSTs inside Infinity - const lstStateListAccount = await connection.getAccountInfo( - new PublicKey("Gb7m4daakbVbrFLR33FKMDVMHAprRZ66CSYt4bpFwUgS") - ); - - // decode state list data and get Infinity LST mints - const infinityLstsAccount = decodeAccount("sanctumValidatorLsts", lstStateListAccount); - - // filter out non-sanctum LSTs - const sanctumDeployedLstsInfinity = infinityLstsAccount.filter(item => poolMints.find(mint => mint.equals(item.mint))); - - const totalSanctumDeployedLstsStake = allValidatorStakePoolAccounts.map(value => value.totalStakeLamports / 1e9).reduce((acc, curr) => acc + curr) - const totalSanctumDeployedLstsInfinity = sanctumDeployedLstsInfinity.map(value => value.solValue / 1e9).reduce((acc, curr) => acc + curr) - - return { - solana: totalSanctumDeployedLstsStake - totalSanctumDeployedLstsInfinity, - }; -} - -module.exports = { - timetravel: false, - methodology: - "Uses GPA to fetch the total supply of deposited SOL into the various Sanctum LSTs", - solana: { - tvl, - }, -}; diff --git a/projects/sanctum/index.js b/projects/sanctum/index.js deleted file mode 100644 index 1a378e16648..00000000000 --- a/projects/sanctum/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, getMultipleAccounts, } = require("../helper/solana"); -const partialIdl = require("./partialIdl"); - -const PROGRAM_ADDR = "unpXTU2Ndrc7WWNyEhQWe4udTzSibLPi25SXv2xbCHQ"; -const POOL_ADDR = "FypPtwbY3FUfzJUtXHSyVRokVKG2jKtH29FmK4ebxRSd"; -const SOL_RESERVES = "3rBnnH9TTgd3xwu48rnzGsaQkSr1hR64nY71DrDt6VrQ"; - -async function tvl() { - const program = new Program(partialIdl, PROGRAM_ADDR, getProvider()); - const [poolAccount, reservesAccount] = await getMultipleAccounts([ - POOL_ADDR, - SOL_RESERVES, - ]); - const pool = program.coder.accounts.decode("pool", poolAccount.data) - return { - solana: (reservesAccount.lamports + pool.incomingStake.toNumber()) / 1e9, - } -} - -module.exports = { - timetravel: false, - methodology: "TVL is calculated by summing total incoming stake from stake accounts that were instant unstaked but not yet reclaimed, and the pool's SOL reserves.", - solana: { tvl, }, -} diff --git a/projects/sanctum/partialIdl.js b/projects/sanctum/partialIdl.js deleted file mode 100644 index 05929a7f51f..00000000000 --- a/projects/sanctum/partialIdl.js +++ /dev/null @@ -1,37 +0,0 @@ -module.exports = { - accounts: [ - { - "name": "pool", - "type": { - "kind": "struct", - "fields": [ - { - "name": "feeAuthority", - "docs": [ - "The authority authorized to set fees" - ], - "type": "publicKey" - }, - { - "name": "lpMint", - "docs": [ - "The pool's lp token mint" - ], - "type": "publicKey" - }, - { - "name": "incomingStake", - "docs": [ - "The last known value of total number of lamports in stake accounts", - "owned by the pool that have not been reclaimed yet.", - "The total SOL owned by a pool accounted for can be calculated by taking", - "incoming_stake + pool_sol_reserves.lamports" - ], - "type": "u64" - } - ] - } - }, - ], - instructions: [], -} diff --git a/projects/sandclock/index.js b/projects/sandclock/index.js deleted file mode 100644 index 573fcba91ca..00000000000 --- a/projects/sandclock/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { staking } = require('../helper/staking'); - -const LUSD = ADDRESSES.ethereum.LUSD; -const WETH = ADDRESSES.ethereum.WETH; -const USDC = ADDRESSES.ethereum.USDC; -const LQTY = '0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D'; -const YEARN_VAULT = '0x4fe4bf4166744bcbc13c19d959722ed4540d3f6a'; // deprecated, keep it for historical data -const LIQUITY_VAULT = '0x91a6194f1278f6cf25ae51b604029075695a74e5'; // deprecated, keep it for historical data -// const WETH_VAULT = '0x1Fc623b96c8024067142Ec9c15D669E5c99c5e9D'; // never in frontend or facing user -// const USDC_VAULT = '0x1038Ff057b7092f17807358c6f68b42661d15caB'; // never in frontend or facing user -const JADE = '0x00C567D2b1E23782d388c8f58E64937CA11CeCf1'; // in production -const AMETHYST = '0x8c0792Bfee67c80f0E7D4A2c5808edBC9af85e6F'; // in production -const EMERALD = '0x4c406C068106375724275Cbff028770C544a1333'; // in production -const OPAL = '0x096697720056886b905D0DEB0f06AfFB8e4665E5'; // in production -const AMBER = '0xdb369eEB33fcfDCd1557E354dDeE7d6cF3146A11'; // in production - -const LIQUITY_STABILITY_POOL = '0x66017D22b0f8556afDd19FC67041899Eb65a21bb'; - -const v1Vaults = [YEARN_VAULT, LIQUITY_VAULT, JADE, AMETHYST]; -const v2Vaults = [EMERALD, OPAL, AMBER]; -const liquityVaults = [LIQUITY_VAULT, JADE, AMETHYST, AMBER]; - -async function tvl(api) { - // v1 vaults assets - const v1VaultBalances = await api.multiCall({ abi: 'uint256:totalUnderlying', calls: v1Vaults, }) - api.add(LUSD, v1VaultBalances) - - // v2 vaults assets - const v2VaultBalances = await api.multiCall({ abi: 'uint256:totalAssets', calls: v2Vaults, }) - api.add(WETH, v2VaultBalances[0]) - api.add(USDC, v2VaultBalances[1]) - api.add(LUSD, v2VaultBalances[2]) - - // LQTY balances in liquity vaults - await api.sumTokens({ owners: liquityVaults, tokens: [LQTY], }) - - // LQTY gains of liquity vaults in the stability pool - const lqtyGains = await api.multiCall({ abi: 'function getDepositorLQTYGain(address) external view returns (uint256)', target: LIQUITY_STABILITY_POOL, calls: liquityVaults, }); - api.add(LQTY, lqtyGains) -} - -module.exports = { - methodology: 'add underlying asset balances in all the vaults together.', - doublecounted: true, - ethereum: { - tvl, - staking: staking("0x0a36f9565c6fb862509ad8d148941968344a55d8", "0xba8a621b4a54e61c442f5ec623687e2a942225ef") - } -}; \ No newline at end of file diff --git a/projects/sandglass/index.js b/projects/sandglass/index.js deleted file mode 100644 index dba04db472d..00000000000 --- a/projects/sandglass/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { sumTokens2, } = require('../helper/solana') - -const tokensAndOwners = { - eclipse: [ - ["A8uPGauLyDTw9dMjBpb9Vrgq7frbWX46XqX71paW4pri", "GGgv3ixpQjpuHL7GeLedEHHVSq6BMKmRk5RckTwvmgka"] - ], - solana: [ - ["EAsRTTRK2wjte4DecPYUjieTkakqFEYe9WD8z2mqvwS8", "GeXibGhHiCPvtJKCGEKWHnHvGnk1tT3VfzYz8s5G3v4y"], - ["27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4", "uy1xw2f23GipDh3aL8rVWmtPLbaetwiS1uzm9RAUeTy"], - ["89dkr9ZhU3TGNzMKF7WbbuNBaqaGEgjtWsE33Vi3RBxY", "CwaUu6mzhTtv8T3777akAQEw57eCrHWcFShsKHq4xUod"], - ["kyJtowDDACsJDm2jr3VZdpCA6pZcKAaNftQwrJ8KBQP", "DTf16ohumTwptoevUGuo5qZvsgibrgnefb6inBZdqDLo"], - ["bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1", "6975bo5KMwc7iHJy6yfnxL4HYo9SVSudTAPNM23pnPGA"], - ["kySo1nETpsZE2NWe5vj2C64mPSciH1SppmHb4XieQ7B", "gcsAMVGbQEwXB3a6Y1gProbV6hqnMr3t6Q9Z4PVUQfY"], - ["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", "DL5iykebZDbQhiCXHcsbyPaqeWAZLQQENCZsrpMYTt8c"], - ["4LJni8SefGqyHWEdk2W8uLWaVL5uA8pfE6MkYvmMmTfF", "JosCLY7dMXJFxjwj1sGArmDSKosAVzhKDHmwdsZBe2K"], - ["4tARAT4ssRYhrENCTxxZrmjL741eE2G23Q1zLPDW2ipf", "A1CfHVTRh8SqGmtUSTzUrXKzJaAroaRxs5sa5pdY4Gdw"], - ["D637bg2p2UqPrh3gsm9r2RrBnFezeUt5qspQuJyrBFaN", "FKXrRSwG2ugEt1waao9P6UbnCZyNiBwHDj8m4nLfdteq"], - ["2RxduzB4xWZRBm5PpdBZmDfVbGFiGD2BJcGSaVZ3tQ8K", "Cz45WXUuz4xs2dGXcqDafFUEkddMs9TspLTYbaxauYzw"], - ["J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn", "9tamB4Lu4VicC7zcPcyNwDtQJRnx1rvgXxgzkzEr5mL1"], - ["CETES7CKqqKQizuSN6iWQwmTeFRjbJR6Vw2XRKfEDR8f", "6FtYGDfxQwrh2sHNGkTsirKx5vjxSeD8inwTDtPcipEd"], - ["WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U", "7BRGGfv2dRDRVkUAo8y3M2nLvwRwvVEtx3siikooRDVw"], - ["WFRGJnQt5pK8Dv4cDAbrSsgPcmboysrmX3RYhmRRyTR", "3XGavdreqzWoa5kw3tUT7UpPmF3yACsF5GeyTtzzxJ8v"], - ["CRTx1JouZhzSU6XytsE42UQraoGqiHgxabocVfARTy2s", "DQckbqNQBsF2BusNYwFpb4BFoPJC7VeAmM4ZudHAwebn"], - ["NUZ3FDWTtN5SP72BsefbsqpnbAY5oe21LE8bCSkqsEK", "H55YhH1arcF2pBPmuKbVdTvRVXUyD4L3jzjY2n1Nt7Lp"], - ["kySo1nETpsZE2NWe5vj2C64mPSciH1SppmHb4XieQ7B", "x4bUfTYz26hyJNSZEB3AHSw2FT8vtjvo6hLBaXvFgYn"], - ["kyJtowDDACsJDm2jr3VZdpCA6pZcKAaNftQwrJ8KBQP", "2CipgvXpArFUgCNZu5fruLDBETkEHP55HhtJkxfHcRz9"], - ["4yCLi5yWGzpTWMQ1iWHG5CrGYAdBkhyEdsuSugjDUqwj", "GQGrpNViwB8LQ3UvJ3tArtBYZtYrZswZVKdkpKm5mcv1"] - ] -} - -async function tvl(api) { - return sumTokens2({ tokensAndOwners: tokensAndOwners[api.chain], api, }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, - eclipse: { tvl, }, -} diff --git a/projects/sandyswap/index.js b/projects/sandyswap/index.js deleted file mode 100644 index b2931fe85b4..00000000000 --- a/projects/sandyswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - polygon_zkevm:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0xdb9908b6e0b87338194ae8627583194994bd992d', - }), - }, -} diff --git a/projects/sanko-bridge/index.js b/projects/sanko-bridge/index.js deleted file mode 100644 index 69fd836d254..00000000000 --- a/projects/sanko-bridge/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - arbitrum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x2f285781B8d58678a3483de52D618198E4d27532", - "0xb4951c0C41CFceB0D195A95FE66280457A80a990", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/sanko-gamecorp/index.js b/projects/sanko-gamecorp/index.js deleted file mode 100644 index 63021d6c585..00000000000 --- a/projects/sanko-gamecorp/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x06f1afa00990A69cA03F82D4c1A3a64A45F45fCb" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - arbitrum: { - tvl - } -} \ No newline at end of file diff --git a/projects/sapphire/index.js b/projects/sapphire/index.js deleted file mode 100644 index 36af2d33121..00000000000 --- a/projects/sapphire/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require('../helper/utils'); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'fantom', - masterchef: '0x5A3b5A572789B87755Fa7720A4Fae36e2e2D3b35', - nativeToken: '0xfa7d8c3CccC90c07c53feE45A7a333CEC40B441B', - }), - masterchefExports({ - chain: 'fantom', - masterchef: '0xD1b96929AceDFa7a2920b5409D0c5636b89dcD85', - nativeToken: '0xB063862a72d234730654c0577C188452424CF53c', - }), -]) diff --git a/projects/sapphiremine.js b/projects/sapphiremine.js deleted file mode 100644 index 3f6beed01e1..00000000000 --- a/projects/sapphiremine.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensExport } = require('./helper/unwrapLPs'); - -module.exports = { - polygon: { - tvl: sumTokensExport({ owner: '0x7146854856E3f373675105556c7D964B329606be', token: ADDRESSES.null}), - } -}; \ No newline at end of file diff --git a/projects/saros-dlmm/index.js b/projects/saros-dlmm/index.js deleted file mode 100644 index ade5d7865cd..00000000000 --- a/projects/saros-dlmm/index.js +++ /dev/null @@ -1,121 +0,0 @@ - -const { Program } = require('@coral-xyz/anchor') -const { getConnection, getAssociatedTokenAddress, sumTokens2, getProvider } = require('../helper/solana'); -const { PublicKey } = require('@solana/web3.js'); - -const LiquidityBookIdl = { - "address": "1qbkdrr3z4ryLA7pZykqxvxWPoeifcVKo6ZG9CfkvVE", - "metadata": { "name": "liquidity_book", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor" }, - "instructions": [], - "accounts": [{ "name": "Pair", "discriminator": [85, 72, 49, 176, 182, 228, 141, 82] }], - "types": [ - { - "name": "Pair", - "type": { - "kind": "struct", - "fields": [ - { "name": "bump", "type": { "array": ["u8", 1] } }, - { "name": "liquidity_book_config", "type": "pubkey" }, - { "name": "bin_step", "type": "u8" }, - { "name": "bin_step_seed", "type": { "array": ["u8", 1] } }, - { "name": "token_mint_x", "type": "pubkey" }, - { "name": "token_mint_y", "type": "pubkey" }, - { "name": "static_fee_parameters", "type": { "defined": { "name": "StaticFeeParameters" } } }, - { "name": "active_id", "type": "u32" }, - { "name": "dynamic_fee_parameters", "type": { "defined": { "name": "DynamicFeeParameters" } } }, - { "name": "protocol_fees_x", "type": "u64" }, - { "name": "protocol_fees_y", "type": "u64" }, - { "name": "hook", "type": { "option": "pubkey" } } - ] - } - }, - { - "name": "StaticFeeParameters", - "type": { - "kind": "struct", - "fields": [ - { "name": "base_factor", "type": "u16" }, - { "name": "filter_period", "type": "u16" }, - { "name": "decay_period", "type": "u16" }, - { "name": "reduction_factor", "type": "u16" }, - { "name": "variable_fee_control", "type": "u32" }, - { "name": "max_volatility_accumulator", "type": "u32" }, - { "name": "protocol_share", "type": "u16" }, - { "name": "_space", "type": { "array": ["u8", 2] } } - ] - } - }, - { - "name": "DynamicFeeParameters", - "type": { - "kind": "struct", - "fields": [ - { "name": "time_last_updated", "type": "u64" }, - { "name": "volatility_accumulator", "type": "u32" }, - { "name": "volatility_reference", "type": "u32" }, - { "name": "id_reference", "type": "u32" }, - { "name": "_space", "type": { "array": ["u8", 4] } } - ] - } - } - ], - "events": [], - "errors": [] -} - -const DEX_ID_V3 = '1qbkdrr3z4ryLA7pZykqxvxWPoeifcVKo6ZG9CfkvVE' -const blacklistedTokens = new Set([ - 'SENBBKVCM7homnf5RX9zqpf1GFe935hnbU4uVzY1Y6M', // there is more tokens in the pool than mcap on gecko - '73xsLcBnLnc9bh81cqVKqj8uEyiarXng5ZwJuTbnVebG', // not enough liquidity - 'EGNjqB7LfRxpkbVMSroA6UaKtGPuy6wWPx7bmijmPuCD', // not enough liquidity - 'memsZQiMFoXYwuZj6fFEaRFNgyLGiLDEDqHz5PwtvRa', // not enough liquidity - 'CmV6utUF7odMbDkJpbtccTSfWdenDnDrcAvzXReihDpt', // not enough liquidity - 'jokeSc37tSJ5V5MYTmLtKh3SZf11vWd2i8eZC9sd74m', // not enough liquidity - 'SarosY6Vscao718M4A778z4CGtvcwcGef5M9MEH1LGL', // projects own token, no enough liqudity on the other side of the pool - 'uniBKsEV37qLRFZD7v3Z9drX6voyiCM8WcaePqeSSLc', // uniBTC wash trading - 'CtzPWv73Sn1dMGVU3ZtLv9yWSyUAanBni19YWDaznnkn', // XBTC was trading -]); - -async function tvl() { - - const connection = getConnection(); - const program = new Program(LiquidityBookIdl, getProvider()) - const pairs = await program.account.pair.all(); - console.log(`Found ${pairs.length} accounts for program ${DEX_ID_V3}`); - let tokens = pairs.map(pair => [pair.account.tokenMintX.toString(), pair.account.tokenMintY.toString()]).flat(); - tokens = [...new Set(tokens)]; // remove duplicates - const programAccounts = await connection.getMultipleAccountsInfo(tokens.map(token => new PublicKey(token))); - const tokenInfoMap = {}; - programAccounts.forEach((account, index) => { - if (account) { - const pubkey = tokens[index]; - tokenInfoMap[pubkey] = account.owner.toString(); - } - }) - const tokenAccounts = pairs.map(pair => { - const tokenMintX = pair.account.tokenMintX.toString(); - const tokenMintY = pair.account.tokenMintY.toString(); - const ownerProgramIdX = tokenInfoMap[tokenMintX]; - const ownerProgramIdY = tokenInfoMap[tokenMintY]; - - - const tokenAccounts = [] - if (!blacklistedTokens.has(tokenMintX)) - tokenAccounts.push(getAssociatedTokenAddress(tokenMintX, pair.publicKey, ownerProgramIdX)); - - if (!blacklistedTokens.has(tokenMintY)) - tokenAccounts.push(getAssociatedTokenAddress(tokenMintY, pair.publicKey, ownerProgramIdY)); - - return tokenAccounts; - }).flat(); - return sumTokens2({ tokenAccounts, allowError: true, }) -} - -module.exports = { - timetravel: false, - methodology: - "TVL includes the total token value inside the protocol's liquidity pools.", - solana: { - tvl, - }, -} diff --git a/projects/saros/index.js b/projects/saros/index.js deleted file mode 100644 index 4cfb387e4ee..00000000000 --- a/projects/saros/index.js +++ /dev/null @@ -1,16 +0,0 @@ - -const { exportDexTVL, sumTokensExport, } = require('../helper/solana'); - -const DEX_ID_V2 = 'SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr' - - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - methodology: - "TVL includes the total token value inside the protocol's liquidity pools.", - solana: { - tvl: exportDexTVL(DEX_ID_V2, undefined, undefined, { coreTokens: new Set() }), - staking: sumTokensExport({ owners: ['9VAPorNsoCbCpSYNDxQsQaBJDvRVFc9VqaUczW2YYynQ'], tokens: ['SarosY6Vscao718M4A778z4CGtvcwcGef5M9MEH1LGL'] }) - }, -} diff --git a/projects/saru/index.js b/projects/saru/index.js deleted file mode 100644 index c334269529e..00000000000 --- a/projects/saru/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") - -module.exports = { - misrepresentedTokens: true, - apechain: { - tvl: getUniTVL({ factory: '0x57bfFa72db682f7eb6C132DAE03FF36bBEB0c459', useDefaultCoreAssets: true }) - } -}; \ No newline at end of file diff --git a/projects/sashimidao/index.js b/projects/sashimidao/index.js deleted file mode 100644 index 36e3949a2a7..00000000000 --- a/projects/sashimidao/index.js +++ /dev/null @@ -1,21 +0,0 @@ - -const { stakings } = require("../helper/staking"); - -const sashimidaoStakings = [ - "0x7dCb04c9e60B52E23f0F46FE2E5D00B234402dAA", - "0xcf95dEfc57D91c4711C0d9009E1eF63B0936dD7e", -]; -const SASHI = "0xb88e3edb378ed7ddef10b86962d97fa0b8defb6d"; // SASHI is not on coingecko yet!!! - -module.exports = { - hallmarks: [ - [1642464000, "Rug Pull"] - ], - deadFrom: 1642464000, - misrepresentedTokens: true, - avax: { - staking: stakings(sashimidaoStakings, SASHI), - tvl: () => ({}), - }, - methodology: "Counts MIM and TLP (SASHI-MIM) on the treasury", -}; diff --git a/projects/sashimiswap/index.js b/projects/sashimiswap/index.js deleted file mode 100644 index 3a1c9684a1d..00000000000 --- a/projects/sashimiswap/index.js +++ /dev/null @@ -1,152 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') -const { staking } = require("../helper/staking"); - -module.exports = { - methodology: - "We count liquidity on the Farms (LP tokens) threw Factory Contract; and on the lending markets same as compound", - hallmarks: [ - ['2021-12-30', 'Protocol was hacked for 210K USD'], - ], -}; - -const config = { - ethereum: { - dexFactory: '0xF028F723ED1D0fE01cC59973C49298AA95c57472', - dexFromBlock: 10943133, - comptroller: '0xB5d53eC97Bed54fe4c2b77f275025c3fc132D770', - // cToken: '0xC597F86424EEb6599Ea40f999DBB739e3Aca5d82', - stakingContracts: ['0x6ed306DbA10E6c6B20BBa693892Fac21f3B91977'], - stakingToken: '0xC28E27870558cF22ADD83540d2126da2e4b464c2', - }, - bsc: { - dexFactory: '0x1DaeD74ed1dD7C9Dabbe51361ac90A69d851234D', - dexFromBlock: 5208518, - comptroller: '0x88fEf82FDf75E32e4BC0e662d67CfcEF4838F026', - // cToken: '0xC597F86424EEb6599Ea40f999DBB739e3Aca5d82', - }, - heco: { - dexFactory: '0xC28E27870558cF22ADD83540d2126da2e4b464c2', - dexFromBlock: 783990, - comptroller: '0x6Cb9d7ecf84b0d3E7704ed91046e16f9D45C00FA', - // cToken: '0xC597F86424EEb6599Ea40f999DBB739e3Aca5d82', - }, -} - -Object.keys(config).forEach(chain => { - const { stakingContracts, stakingToken, dexFactory, comptroller, dexFromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - if (comptroller) { - const markets = await api.call({ abi: 'address[]:getAllMarkets', target: comptroller, }) - let uTokens = await api.multiCall({ abi: 'address:underlying', calls: markets, permitFailure: true }) - uTokens = uTokens.map(i => i ?? nullAddress) - ownerTokens.push(...markets.map((m, i) => [[uTokens[i]], m])) - } - if (dexFactory) { - const logs = await getLogs({ - api, - target: dexFactory, - topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], - eventAbi: 'event PairCreated (address indexed token0, address indexed token1, address pair, uint256)', - onlyArgs: true, - fromBlock: dexFromBlock, - }) - const routers = await api.multiCall({ abi: 'address:router', calls: logs.map(i => i.pair) }) - routers.forEach((r, i) => ownerTokens.push([[logs[i].token0, logs[i].token1], r])) - } - return sumTokens2({ api, ownerTokens, blacklistedTokens, }) - }, - borrowed: async (api) => { - if (comptroller) { - const markets = await api.call({ abi: 'address[]:getAllMarkets', target: comptroller, }) - let uTokens = await api.multiCall({ abi: 'address:underlying', calls: markets, permitFailure: true }) - uTokens = uTokens.map(i => i ?? nullAddress) - let borrows = await api.multiCall({ abi: 'uint256:totalBorrows', calls: markets }) - api.addTokens(uTokens, borrows) - } - api.getBalances() - }, - } - - if (stakingContracts) { - module.exports[chain].staking = staking(stakingContracts, stakingToken) - } -}) - -const blacklistedTokens = [ - // ethereum - '0x24efe6b87bf1bfe9ea2ccb5a9d0a959c7172b364', - '0x786448439d9401e0a8427acf7ca66a5114eb2368', - '0x32503febaa15d0bcfda2a9d8fe492d14a750e52c', - '0x7756661eea92e4423ae4680f552aa0be0da040f1', - '0x03012a6f9bb5bff61997aee59477a893debd203b', - '0x0c7858badb509262e736748e6041b8d7b0b94dbf', - '0xb904d3f16bf305e99fd785dda1bb13df354c381b', - '0x674dcbde5c622abb3122d6934fcce446b95060dc', - '0x90b4fc25a6bd9a666aa4507148f07198a4abc849', - '0x0aa387225497ccca54fe9de989d3274c1377efe7', - '0x823b35caa9d0c66a5f9ffb6d042fa130f34cb760', - '0x9e844c8a08b6e56c7c89c7428d63599b64f62ea9', - '0x7a77073c1191f2d2fd31a71c758d44f3de0af831', - '0xbacbd121f37557e5ea1d0c4bb67756867866c3fe', - '0xf1b43f4e14650ac8c4bb009d9b56eb77c1ae87cd', - '0x5b8c75d6f91663c515bb12e3cf7c29ade0e1a302', - '0x7578fd876752a5e4999a16fb80cfe30c1056de11', - '0x1ad47ee8074ee1adabd76e97b23b94713de9d175', - '0x9a3eed88730378393e903387087964184b462c71', - '0xdd530cbe1409df4e7e2dfd18931292c81d8c5e17', - '0x6e4e0a7f4dc3068970ecb81fd28cd19d4119125b', - '0x0c662c1e8635aead580714ffa19ab5f008ab7aeb', - '0x30404353bdceebe86e0b6391fe66db1082bc6cb7', - '0xa503ddef9c88b5b566705298f8c8faace130b80b', - '0x002141edcfb5814ad2772e3aecb73a3312f0b60c', - '0xa6ce576e27ee546cb64e280bb2aa18ad438c28cc', - '0xa35ff70c648acd83cf0742b919bce4d1b424dca4', - '0x079308fcea7973da3ae2b45904948a5b51f3cba3', - '0x4ff5b5108f4db6f925cd76a68bb80565fd8053e6', - '0x0df2d534cc6849558a9d237c98be560b5ff502f8', - - // bsc - '0xc28e27870558cf22add83540d2126da2e4b464c2', - '0x4b64a2d17231882e62d7d5d84daa92e6a39e93b4', - '0xd9f2894257a57333e84682f463c01e539af15f3a', - '0x627c99cfc6421224a99b88cec08ba9894253779c', - '0xabc2984de273dd6fc4cfe602d5a9736ab94402be', - '0xd7bfb8faa3c395d475ac97f337f528565b2ea2c6', - '0x216ca859fbc236a32d6464ce17b18591dd72c3d3', - '0x5fbce2d40ea2c5233c2ba399e27a2a21b0d6964c', - '0xa9cb2cb1f0080b2d479e4be62a27969d80b6577c', - '0x2f11f3a4656732c2f9e77c8642ed8a7d42aa2a02', - '0x6047ac230eef705d294ece482f1652235dac6405', - '0xd771dcc836d69f45e8ed604be03a26bdf4be2623', - '0x01876dccb99cd6172f343a874021427afe550472', - '0x176c673a31904dbfff4255f2501567b4ddc73f65', - '0x7213c252e7857b529582dddc770ddb275759d1ec', - - // heco - '0xc2037c1c13dd589e0c14c699dd2498227d2172cc', - '0x03271182cf2b47929978d0e4ca4af0846f66e2de', - '0x891daabf6de7a648c9665928e1097b808c1721e2', - '0xe9c95876f144bbdf5dc33d1a35c26cab0611903f', - '0x389eec1b8795853770874b76b912ec18de796e1b', - '0xeaac96f59e40d38bd970b37879a79a1d28737d8a', - '0x6c606fb47d99d1e66f9b599f8c5602cd4eb44d5a', - '0xae399aea42867fec2cd4a04963a7f0e247a39431', - '0x818bbc9b9d37685f9f4db032d46b52a70d890632', - '0x6ccbc3a5ae94e8a75f9571438a78f3e3aa956655', - '0xc2d36a8c0b1235ddecac2ed519139e9177e67736', - '0x611e93a7718a215bfda3c63f7175d764793272df', - '0x377dca38ff279a73a9075f25d36d00b98515a9a1', - '0x937a48287fdc4b503d608cb988ac35eee75f076f', - '0x3f3aaaa941ad756fc49a4b3241a87a7c04e39a4e', - '0x06068d90e0cbf9b7ccfd21efddb9bceb4c47fd31', - '0xe2a246c36fa86eee290acef79a8dc66b6b7f25ba', - '0x8fc67b8ed339c740a58ebd7aae24ba9d57d8dd25', -] - - -Object.entries(module.exports.heco).forEach(([key, value]) => module.exports.heco[key] = () => ({})) - -module.exports.ethereum.borrowed = () => ({}) \ No newline at end of file diff --git a/projects/satin/index.js b/projects/satin/index.js deleted file mode 100644 index 1079697bde6..00000000000 --- a/projects/satin/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: getUniTVL({ - factory: "0x30030Aa4bc9bF07005cf61803ac8D0EB53e576eC", - hasStablePools: true, - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/satlayer/index.js b/projects/satlayer/index.js deleted file mode 100644 index c4dc19d3038..00000000000 --- a/projects/satlayer/index.js +++ /dev/null @@ -1,142 +0,0 @@ -const { getLogs2 } = require("../helper/cache/getLogs"); -const { getUniqueAddresses } = require("../helper/tokenMapping"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { queryContract } = require("../helper/chain/cosmos"); -const sui = require("../helper/chain/sui"); -const CORE_ASSETS = require("../helper/coreAssets.json"); - -// To test, run: node test.js projects/satlayer/index.js - -module.exports = { - methodology: "Total amount of BTC and eligible assets restaked on SatLayer, or through partner vaults specific to SatLayer.", -}; - -// Addresses related to SatLayer -const consts = { - ETHEREUM_FACTORY: "0x42a856dbEBB97AbC1269EAB32f3bb40C15102819", - ETHEREUM_SLAY_FACTORY: "0xf80361e9f6b5f75b3e9be82bd1b3c87938e773b0", - BNB_FACTORY: "0x42a856dbEBB97AbC1269EAB32f3bb40C15102819", - BITLAYER_FACTORY: "0x2E3c78576735802eD94e52B7e71830e9E44a9a1C", - BERACHAIN_FACTORY: "0x50198b5E1330753F167F6e0544e4C8aF829BC99d", - BOB_FACTORY: "0x32fD8E43114Fb0a292Ca3127EAF4D1D69739Fb83", - TAC_FACTORY: "0x32fD8E43114Fb0a292Ca3127EAF4D1D69739Fb83", - BABYLON_GENESIS_CBABY_HUB: "bbn1tng5u7fls4lyg356zkh2g32e80a286m8p2n0hqugc5467n9y6nksamehyj", - SUI_FACTORY: "0x25646e1cac13d6198e821aac7a94cbb74a8e49a2b3bed2ffd22346990811fcc6", - BASE_FACTORY: "0xb57752dDc2Ec2DEFE9eDBb1fdb99dB1ca9b0b9b3", - - SUI_VAULTS: [ - { - token: "0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040::lbtc::LBTC", - vault: "0x505ec475423b9d3adbad91e1ec20363d58a9f0f90536190c69f4699f1bb87cb1" // satLBTC - }, - { - token: "0x876a4b7bce8aeaef60464c11f4026903e9afacab79b9b142686158aa86560b50::xbtc::XBTC", - vault: "0x4c550885133adbca1ef0c3d1fddac0a8496a9d8fa7bb52556e6cf60fe70bb1e8" // satXBTC - }, - { - token: "0x9e998601660bba48e7fabefa97de5b6c80c970f2a18ee31a028c7fc02a4e97f5::ybtc::YBTC", - vault: "0x828dcef43c2c0ecf3720d26136aab40e819688b96bad0e262fbaa3672110d2d9" // satYBTC.B - } - ] -}; - -// TVL for EVM chains -const evmConfig = { - ethereum: { factory: consts.ETHEREUM_FACTORY, fromBlock: 20564864 }, - bsc: { factory: consts.BNB_FACTORY, fromBlock: 42094094 }, - btr: { factory: consts.BITLAYER_FACTORY, fromBlock: 4532898 }, - berachain: { factory: consts.BERACHAIN_FACTORY, fromBlock: 262893 }, - bob: { factory: consts.BOB_FACTORY, fromBlock: 17866931 }, - tac: { factory: consts.TAC_FACTORY, fromBlock: 2129845 }, - base: { factory: consts.BASE_FACTORY, fromBlock: 34752522 }, -}; - -// TVL of additional SatLayer vaults -const vaults = { - ethereum: [ - { - tokenAddress: "0x004e9c3ef86bc1ca1f0bb5c7662861ee93350568", // uniBTC - vaultAddresses: ["0x65939777a9dC5A370707bb6b44b1ad0BC9e2D8a4"], // SatLayer uniBTC for TAC - }, - { - tokenAddress: "0xd9d920aa40f578ab794426f5c90f6c731d159def", // xSolvBTC - vaultAddresses: ["0x76f31800eFdE39A5f98189447c7a514d974f4364"], // SatLayer xSolvBTC for TAC - }, - { - tokenAddress: "0x51477A3002ee04B7542aDfe63ccdb50c00Ee5147", // SLAY - vaultAddresses: ["0xf80361e9f6b5f75b3e9be82bd1b3c87938e773b0"], // 60d SLAY vault - }, - { - tokenAddress: "0x51477A3002ee04B7542aDfe63ccdb50c00Ee5147", // SLAY - vaultAddresses: ["0xf80361e9f6b5f75b3e9be82bd1b3c87938e773b0"], // 30d SLAY vault - } - ], -}; - -// TVL of Sui -async function suiTVL() { - -} - -Object.keys(evmConfig).forEach(chain => { - const { factory, fromBlock } = evmConfig[chain]; - - module.exports[chain] = { - tvl: async (api) => { - if (chain === "ethereum") { - // Additional vaults - for (const vault of vaults['ethereum']) { - const tokenBalance = await api.call({ - abi: 'erc20:balanceOf', - target: vault.tokenAddress, - params: vault.vaultAddresses, - }); - api.add(vault.tokenAddress, tokenBalance); - } - } - - const logs = await getLogs2({ - api, - factory, - eventAbi: "event CapChanged(address token, uint256 cap)", - fromBlock, - }); - - const tokens = getUniqueAddresses(logs.map(log => log.token)); - return sumTokens2({ api, owner: factory, tokens }); - }, - }; -}); - -// TVL for Babylon Genesis (Cosmos SDK) -module.exports['babylon'] = { - tvl: async (api) => { - const data = await queryContract({ - contract: consts.BABYLON_GENESIS_CBABY_HUB, - chain: api.chain, - data: { state: {} }, - }); - - const total_native_token_balance = - parseInt(data.total_staked_amount) + parseInt(data.unclaimed_unstaked_balance); - - const token = CORE_ASSETS.babylon.BABY; - api.add(token, total_native_token_balance); - return api.getBalances(); - }, -}; - -// TVL for Sui -module.exports['sui'] = { - tvl: async (api) => { - const vaultIds = consts.SUI_VAULTS.map(v => v.vault); - const vaults = await sui.getObjects(vaultIds); - - for (let i = 0; i < vaults.length; i++) { - const vault = vaults[i]; - const token = consts.SUI_VAULTS[i].token; - const balance = vault.fields.balance; - api.add(token, balance); - } - } -}; diff --git a/projects/satori/index.js b/projects/satori/index.js deleted file mode 100644 index 15ce8aa7bd7..00000000000 --- a/projects/satori/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { sumTokensExport: sumTokensExportOfTon } = require("../helper/chain/ton"); - -const ethereum_LBTC = ADDRESSES.ethereum.LBTC; -const ethereum_PumpBTC = "0xF469fBD2abcd6B9de8E169d128226C0Fc90a012e"; -const base_PumpBTC = "0x23dA5F2d509cb43A59d43C108a43eDf34510eff1"; -const stBTC = ADDRESSES.swellchain.stBTC; - -const CONFIG = { - polygon_zkevm: { - owners: ["0x62e724cB4d6C6C7317e2FADe4A03001Fe7856940","0xA59a2365D555b24491B19A5093D3c99b119c2aBb"], - tokens: [ADDRESSES.astarzk.USDT,ADDRESSES.astarzk.MATIC] - }, - era: { - owners: ["0x0842b33529516abe86CA8EA771aC4c84FDd0eeE0", "0x48756b37Fd643bB40F669804730024F02900C476"], - tokens: [ADDRESSES.era.USDC, ADDRESSES.era.ZK] - }, - linea: { - owners: ["0xfb371E70eEB32f4054F40514924e77213ca18425","0xF96116e124eB3F62Ddc6a9cfbdc58d7F8A37c50A"], - tokens: [ADDRESSES.linea.USDC, ADDRESSES.blast.ezETH] - }, - scroll: { - owners: ["0xfb371E70eEB32f4054F40514924e77213ca18425","0xF96116e124eB3F62Ddc6a9cfbdc58d7F8A37c50A"], - tokens: [ADDRESSES.scroll.USDC] - }, - base: { - owners: ["0x668a9711b8d04362876dc5b6177ed362084d5aed","0x5f075a6a11B2e25DF664Ce7419c274943017B595"], - tokens: [ADDRESSES.base.USDC, ADDRESSES.blast.ezETH,base_PumpBTC] - }, - xlayer: { - owners: ["0x80DD5bC934122e56B9536a9F19F2Ea95a38E98c8","0xf915391346Fad5a75F31CD00218BB1EFC13e01f2"], - tokens: [ADDRESSES.xlayer.USDC] - }, - arbitrum: { - owners: ["0x5aCCEb99De5cc07168C193396C1fdC3E3abEEED7","0xAE9a83510cbB26c58595BA671f131e0A03Fe9A03"], - tokens: [ADDRESSES.arbitrum.USDC_CIRCLE] - }, - ton: { - owners: ["EQDrGCJ3V8cMw92Gg8Tf9nfq3piaT_iI3EkCGVF0OUG0vWEh"], - tokens: [ADDRESSES.ton.USDT] - }, - bsc: { - owners: ["0x3b6F3f7F0e3e8cCa7bC11dFA4a8567A6479Ece54","0xD2F244164cd09e5cBb6360c4a17aAF976a34562a"], - tokens: [ADDRESSES.bsc.USDC,stBTC] - }, - zircuit: { - owners: ["0x301A29D92B23750c481D6F2feAA01F872561A528","0x8DdCb1F874e635E03f172cc02B4F57ae94Ae7BC0"], - tokens: ["0x3b952c8C9C44e8Fe201e2b26F6B2200203214cfF", ADDRESSES.zircuit.WETH] - }, - sty: { - owners: ["0x0848F4AE872545C901D3325AEFf09F0fa8952AfC","0x133A54E116731c0CBE35EE41276D570e0730E92D"], - tokens: [ADDRESSES.flow.stgUSDC,"0x674843C06FF83502ddb4D37c2E09C01cdA38cbc8"] - }, - plume: { - owners: ["0x04AE748272c3959A9904aeaD3cc00AAf476aa34D","0x36Bd86676A05ABAaF30D57F65Ba463669E018F3e"], - tokens: [ADDRESSES.plume.USDC_e,ADDRESSES.plume_mainnet.pUSD,"0xD630fb6A07c9c723cf709d2DaA9B63325d0E0B73","0x81537d879ACc8a290a1846635a0cAA908f8ca3a6","0xE72Fe64840F4EF80E3Ec73a1c749491b5c938CB9","0x892DFf5257B39f7afB7803dd7C81E8ECDB6af3E8","0x9fbC367B9Bb966a2A537989817A088AFCaFFDC4c"] - }, - plume_mainnet: { - owners: ["0x04AE748272c3959A9904aeaD3cc00AAf476aa34D","0x36Bd86676A05ABAaF30D57F65Ba463669E018F3e"], - tokens: [ADDRESSES.plume_mainnet.WPLUME,ADDRESSES.plume_mainnet.pUSD,ADDRESSES.plume_mainnet.USDC_e,ADDRESSES.plume_mainnet.USDT,"0xE72Fe64840F4EF80E3Ec73a1c749491b5c938CB9","0x9fbC367B9Bb966a2A537989817A088AFCaFFDC4c"] - }, - ethereum: { - owners: ["0x0857f8a6e41e1c71f4065daebfe7ddb825cbffde","0xA394080628F175472Fee9eB316BD104fAB63FE40"], - tokens: [ADDRESSES.ethereum.USDC,ethereum_LBTC,stBTC,ethereum_PumpBTC,ADDRESSES.ethereum.STETH,ADDRESSES.ethereum.WSTETH,ADDRESSES.ethereum.cbETH,ADDRESSES.ethereum.EETH,ADDRESSES.ethereum.RETH,ADDRESSES.bsc.wBETH,"0xa1290d69c65a6fe4df752f95823fae25cb99e5a7","0xe95a203b1a91a908f9b9ce46459d101078c2c3cb","0x09db87A538BD693E9d08544577d5cCfAA6373A48"] - }, -} - -module.exports.methodology = "Counts Satori smartcontract balance as TVL.." - -Object.entries(CONFIG).forEach(([chain, { owners, tokens }]) => { - if (chain === 'plume') return module.exports[chain] = { tvl: async () => ({}) }; - const _tvl = (chain === 'ton') - ? sumTokensExportOfTon({ owners, tokens }) - : sumTokensExport({ owners, tokens }); - - module.exports[chain] = { tvl: _tvl }; -}) \ No newline at end of file diff --git a/projects/satoriSwap/index.js b/projects/satoriSwap/index.js deleted file mode 100644 index 676e715f2fe..00000000000 --- a/projects/satoriSwap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const config = { - base: '0x4858C605862A91A34d83C19a9704f837f64fa405', - linea: '0xfF5859B60BCb3F153431cA216B1b269EB66A2020', - xlayer: '0xd967A2A9B873ccD5a5Ede00869e353949F24c3dc', -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true }), - } -}) \ No newline at end of file diff --git a/projects/satoshi-dex/api.js b/projects/satoshi-dex/api.js deleted file mode 100644 index f1853181b20..00000000000 --- a/projects/satoshi-dex/api.js +++ /dev/null @@ -1,31 +0,0 @@ - -const { transformDexBalances } = require('../helper/portedTokens') -const { call } = require('../helper/chain/stacks-api') - -const core = 'SP1W7FX8P1G721KQMQ2MA2G1G4WCVVPD9JZMGXK8R.univ2-core' - -async function tvl() { - const data = [] - const pairCount = +(await call({ target: core, abi: 'get-nr-pools' })).toString() - for (let i = 1; i <= pairCount; i++) { - const { - token0, token1, reserve0, reserve1, - } = await call({ target: core, abi: 'do-get-pool', inputArgs: [{ type: 'uint', value: i }] }) - data.push({ - token0: token0.value, - token1: token1.value, - token0Bal: reserve0.value, - token1Bal: reserve1.value, - }) - } - - return transformDexBalances({ chain: 'stacks', data }) -} - - -module.exports = { - stacks: { - tvl: tvl, - } -} - \ No newline at end of file diff --git a/projects/satoshi-dex/index.js b/projects/satoshi-dex/index.js deleted file mode 100644 index a5b769fc0b4..00000000000 --- a/projects/satoshi-dex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: 'The calculated TVL is the current USD sum of all pools from core contract', - ...getExports("satoshi-dex", ['stacks']), -} diff --git a/projects/satoshi-finance/index.js b/projects/satoshi-finance/index.js deleted file mode 100644 index cf997d316f3..00000000000 --- a/projects/satoshi-finance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLiquityTvl } = require("../helper/liquity"); -const { staking } = require("../helper/staking.js"); - -// Contract address to get total BTCB collateral deposited -const SATOSHI_TROVE_MANAGER = '0x3cd34afeba07c02443BECBb2840506F4230f84cB' -// Contract address for SATO staking -const SATOSHI_SATO_STAKING = '0x28c0e5160AB7B821A98745A3236aD2414F5dC041' -// Contract address for SATO token -const SATO = '0x708bAac4B235d3F62bD18e58c0594b8B20b2ED5B' -// Contract address of BTCB collateral -const BTCB = ADDRESSES.bsc.BTCB - -module.exports = { - bsc: { - tvl: getLiquityTvl(SATOSHI_TROVE_MANAGER, {collateralToken: BTCB}), - staking: staking(SATOSHI_SATO_STAKING, SATO) - } -} \ No newline at end of file diff --git a/projects/satoshi-perps/index.js b/projects/satoshi-perps/index.js deleted file mode 100644 index fed2628d8e3..00000000000 --- a/projects/satoshi-perps/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - core: { - tvl: gmxExports({ vault: '0x736Cad071Fdb5ce7B17F35bB22f68Ad53F55C207', fromBlock: 20537386, }), - }, -} \ No newline at end of file diff --git a/projects/satoshi-protocol/index.js b/projects/satoshi-protocol/index.js deleted file mode 100644 index 0df51b9db25..00000000000 --- a/projects/satoshi-protocol/index.js +++ /dev/null @@ -1,386 +0,0 @@ -const { BigNumber } = require("bignumber.js"); -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs") -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokensExport } = require('../helper/sumTokens.js') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') -const AssetConfigSettingEventV1ABI = "event AssetConfigSetting(address asset,uint256 feeIn,uint256 feeOut,uint256 debtTokenMintCap,uint256 dailyMintCap,address oracle,bool isUsingOracle,uint256 swapWaitingPeriod,uint256 maxPrice,uint256 minPrice)"; -const VaultTokenStrategySetEventABI = "event TokenStrategySet(address token, address strategy)"; -const GetEntireSystemCollABI = 'uint256:getEntireSystemColl'; -const GetCollateralTokenABI = 'address:collateralToken'; -const GetSmartVaultTotalDepositedUnderlyingABI = 'uint256:getTotalDepositedUnderlying'; -const AssetConfigSettingEventV2ABI = "event AssetConfigSetting(address asset, tuple(uint256 feeIn, uint256 feeOut, uint256 debtTokenMintCap, uint256 dailyDebtTokenMintCap, uint256 debtTokenMinted, uint256 swapWaitingPeriod, uint256 maxPrice, uint256 minPrice, bool isUsingOracle) config)"; - -function createExports({ - troveList, - nymWithAssetList, // { address, assetList }[] - farmList, // { address, asset }[] - smartVaultList, // { address, fromBlock }[] -}) { - return { - tvl: async (api) => { - const tokensAndOwners = []; // [address, address][] - if (troveList) { - await addCollateralBalanceFromTrove(api, troveList); - } - - if (nymWithAssetList) { - processNymWithAssetList(nymWithAssetList, tokensAndOwners); - } - - if (farmList) { - processFarmList(farmList, tokensAndOwners); - } - - if (smartVaultList) { - await addSmartVaultList(api, smartVaultList); - } - - const tokenBalances = await sumTokens2({ api, tokensAndOwners, }); - api.addBalances(tokenBalances); - return api.getBalances(); - }, - } -} - -function processNymWithAssetList(nymWithAssetList, tokensAndOwners) { - for (let i = 0; i < nymWithAssetList.length; i++) { - const { address: nymContractAddress, assetList } = nymWithAssetList[i]; - assetList.forEach(asset => tokensAndOwners.push([asset, nymContractAddress])); - } -} - -function processFarmList(farmList, tokensAndOwners) { - for (let index = 0; index < farmList.length; index++) { - const { address: farmAddress, asset } = farmList[index]; - tokensAndOwners.push([asset, farmAddress]) - } -} - -async function addCollateralBalanceFromTrove(api, troveList) { - const balances = {}; - const chains = api.chain; - const tokens = await api.multiCall({ abi: GetCollateralTokenABI, calls: troveList, permitFailure: true }) - const colls = await api.multiCall({ abi: GetEntireSystemCollABI, calls: troveList, permitFailure: true }) - tokens.forEach((token, i) => { - if(!token) return; - if(!colls[i]) return; - const key = `${chains}:${token}`; - if (!balances[key]) { - balances[key] = new BigNumber(0); - } - balances[key] = balances[key].plus(colls[i]); - }); - Object.keys(balances).forEach((key) => { - if (balances[key].isZero()) { - delete balances[key]; - } else { - balances[key] = balances[key].toFixed(0); - } - }); - api.addBalances(balances); - - return { - balances, - tokens, - }; -} - -async function addSmartVaultList(api, smartVaultList) { - const chains = api.chain; - const vaults = smartVaultList.map(t => t.smartVaultAddress); - const tokens = smartVaultList.map(t => t.asset); - const balances = {}; - const amounts = await api.multiCall({ abi: GetSmartVaultTotalDepositedUnderlyingABI, calls: vaults, permitFailure: true }) - - tokens.forEach((token, i) => { - if(!token) return; - if(!amounts[i]) return; - const key = `${chains}:${token}`; - if (!balances[key]) { - balances[key] = new BigNumber(0); - } - balances[key] = balances[key].plus(amounts[i]); - }); - Object.keys(balances).forEach((key) => { - if (balances[key].isZero()) { - delete balances[key]; - } else { - balances[key] = balances[key].toFixed(0); - } - }); - api.addBalances(balances); - - return { - balances, - tokens, - }; -} - -module.exports = { - bevm: createExports({ - troveList: [ - '0x0598Ef47508Ec11a503670Ac3B642AAE8EAEdEFA', // BEVM WBTC Collateral(V1) - '0xa794a7Fd668FE378E095849caafA8C8dC7E84780', // BEVM wstBTC Collateral(V1) - '0xe7E23aD9c455c2Bcd3f7943437f4dFBe9149c0D2', // BEVM WBTC Collateral(V2) - '0xD63e204F0aB688403205cFC144CAdfc0D8C68458', // BEVM wstBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0xdd0bD4F817bDc108e31EE534931eefc855CAf7Df', - assetList: [ADDRESSES.bevm.USDT, ], - }], - vaultManagerList: [ - { - address: '0xcCFD19e331fFcE8506718ec3DddDDf9f23029825' - } - ], - }), - btr: createExports({ - troveList: [ - '0xf1A7b474440702BC32F622291B3A01B80247835E', // BITLAYER WBTC Collateral(V1) - '0xe9897fe6C8bf96D5ef8B0ECC7cBfEdef9818232c', // BITLAYER stBTC Collateral(V1) - '0x3DC0565bcA627823828Aa3F2f8d805ec8a16005a', // BITLAYER WBTC Collateral(V2) - '0x404dCd7E15947D04063B436f71d93E2d79023aa9', // BITLAYER stBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0xC562321a494290bE5FeDF9092cee35DE6f884D50', - assetList: [ADDRESSES.btr.USDT, ADDRESSES.btr.USDC, ], - }, { - address: '0x95E5b977c8c33DE5b3B5D2216F1097C2017Bdf71', - assetList: [ADDRESSES.btr.USDT, ADDRESSES.btr.USDC, ], - }], - vaultManagerList: [ - { - address: '0x32db5c3D64aa7e100B73786000704aee61072981' - } - ], - }), - bob: createExports({ - troveList: [ - '0xc50D117C21054455aE9602237d3d17ca5Fa91288', // BOB WETH Collateral(V1) - '0xBDFedF992128CbF10974DC935976116e10665Cc9', // BOB WBTC Collateral(V1) - '0x8FAE9D3dBeE1c66b84E90df21A1DbdBab9262843', // BOB tBTC Collateral(V1) - '0xFFFE50D535aaA9B16499D2fDb3BbD94144ca5336', // BOB SolvBTC Collateral(V1) - '0xa0B2325BB635679cCFbf50570edd0C6F3D7dA81e', // BOB SolvBTC.BBN Collateral(V1) - '0xF091CE6116294A3b13D0f57c6eaCb8837e513CaD', // BOB FBTC Collateral(V1) - '0xB6C69F4EfC6ad9d12C5Fc3715722D5bbEa712a3f', // WBTC Collateral(V2) - '0xbf626Fc742bFfD6F17de9Cf2480Da25Dad4D5135', // TBTC Collateral(V2) - '0x39F36DA1f4028473d41e077E178c8551bE4bb231', // SolvBTC Collateral(V2) - '0x1F6eF853341037c5C057101F2E38C15c95130807', // SolvBTC_BBN Collateral(V2) - '0x4dEA4c11bDd3Ad05063405C7167Fa9B3f95Aea90', // FBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0x7253493c3259137431a120752e410b38d0c715C2', - assetList: [ADDRESSES.bob.USDT, ADDRESSES.bob.USDC, ], - }, { - address: '0xEC272aF6e65C4D7857091225fa8ED300Df787CCF', - assetList: [ADDRESSES.bob.USDT, ADDRESSES.bob.USDC, ], - }], - aaveStrategyVaults: [ - { - address: '0x713dD0E14376a6d34D0Fde2783dca52c9fD852bA', - aToken: '0xd6890176e8d912142AC489e8B5D8D93F8dE74D60', // aBOBWBTC - asset: ADDRESSES.bob.WBTC, // BOB WBTC - } - ], - pellStrategyVaults: [ - { - address: '0x04485140d6618be431D8841de4365510717df4fd', - asset: ADDRESSES.bob.WBTC, // BOB WBTC - } - ], - vaultManagerList: [ - { - address: '0x954C6f00E361dA33c9b8E5f2660b2D4024a04634' - } - ], - smartVaultList: [ - { - smartVaultAddress: '0x3eeF93169c34F50919063eF56A118BFF26C8dfb8', - asset: '0x4CBE838E2BD3B46247f80519B6aC79363298aa09', // satUniBTC - }, - { - smartVaultAddress: '0xd62E2F6b6616271001DCd0988AD2D73DEeE1b491', - asset: ADDRESSES.bob.uniBTC, // uniBTC - }, - ] - }), - bsquared: createExports({ - troveList: [ - '0xa79241206c3008bE4EB4B62A48A4F98303060D4f', // BSquare WBTC Collateral(V1) - '0xc6F361db5eC432E95D0A08A9Fbe0d7412971cE6c', // BSquare uBTC Collateral(V1) - '0x8FBfe28D6E5424d7f8c8c29A4910ce8a618d2D54', // WBTC Collateral(V2) - '0xa03B86E93c98FE95caC2A6645fF271Bb67040eab', // uBTC Collateral(V2) - '0xb38653A0190252487FC6502D1D7B41A9647fB84b', // uniBTC Collateral(V2) - ], - strategyVaultsV2: [ - { - address: '0x1F745AEC91A7349E4F846Ae1D94915ec4f6cF053', - fromBlock: 11581100, - } - ], - vaultManagerList: [ - { - address: '0x21d9a468196665AEc3d3c289EfF7BD5725507972' - }, - { - address: '0x03d9C4E4BC5D3678A9076caC50dB0251D8676872' - }, - ], - nymWithAssetList: [{ - address: '0x2863E3D0f29E2EEC6adEFC0dF0d3171DaD542c02', - assetList: [ADDRESSES.bsquared.USDT, ADDRESSES.bsquared.USDC ], - }], - }), - bsc: createExports({ - troveList: [ - '0xb655775C4C7C6e0C2002935133c950FB89974928', // WBTC Collateral(V2) - '0x5EA26D0A1a9aa6731F9BFB93fCd654cd1C3079Ec', // BTCB Collateral(V2) - '0xDAc0551246A7F75503e8C908456005E828C35A40', // SolvBTC Collateral(V2) - ], - vaultManagerList: [ - { - address: '0xc473754a6e35cC4F45316F9faaeF0a3a86D90E4e' - }, - ], - nymWithAssetList: [{ - address: '0x07BbC5A83B83a5C440D1CAedBF1081426d0AA4Ec', - assetList: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC, ADDRESSES.bsc.DAI, ADDRESSES.bsc.USD1, ADDRESSES.bsc.FDUSD], - }], - smartVaultList: [ - { - smartVaultAddress: '0x30349Af0cDcC2a93Ea4101953101BC0DEc43c53E', - asset: '0x623F2774d9f27B59bc6b954544487532CE79d9DF', // bfBTC - }, - { - smartVaultAddress: '0x8f10C801B62Ae0b67B87B56a5f8ce05437ba6b7f', - asset: '0x623F2774d9f27B59bc6b954544487532CE79d9DF', // bfBTC - }, - ], - }), - hemi: createExports({ - troveList: [ - '0xb655775C4C7C6e0C2002935133c950FB89974928', // WETH Collateral(V2) - '0x5EA26D0A1a9aa6731F9BFB93fCd654cd1C3079Ec', // HemiBTC Collateral(V2) - '0xa7B54413129441e872F42C1c4fE7D1984332CA87', // WBTC Collateral(V2) - '0xED6E49a1835A50a8FD5511704616B89845Ad5564', // iBTC Collateral(V2) - '0x6d991Eb34321609889812050bC7f4604Eb0bfF26', // enzoBTC Collateral(V2) - '0xDAc0551246A7F75503e8C908456005E828C35A40', // uBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0x07BbC5A83B83a5C440D1CAedBF1081426d0AA4Ec', - assetList: [ADDRESSES.hemi.USDT, ADDRESSES.hemi.USDC_e, ADDRESSES.hemi.DAI], - }], - }), - base: createExports({ - troveList: [ - '0xddac7d4e228c205197FE9961865FFE20173dE56B', // WETH Collateral(V2) - '0x4B37F38DF39C9E6D876b830ED3FF444533Aa2E45', // WBTC Collateral(V2) - '0x50B02283f3c39A463DF3d84d44d46b5432D7D193', // cbBTC Collateral(V2) - '0x01DF7D28c51639F2f2F95dcF2FdFF374269327B0', // clBTC Collateral(V2) - '0x5245E3CaD937C7086294A6d21F3C67a20309e313', // uniBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0x9a3c724ee9603A7550499bE73DC743B371811dd3', - assetList: [ADDRESSES.base.USDT, ADDRESSES.base.USDC, ADDRESSES.base.DAI, ], - }], - strategyVaultsV2: [ - { - address: '0xE8c5b4517610006C1fb0eD5467E01e4bAd43558D', - fromBlock: 29316928, - } - ], - vaultManagerList: [ - { - address: '0x9Dda31F8a07B216AB5E153456DE251E0ed2e6372' - }, - { - address: '0xa38e1aeb8336A3768DFcd17D9bbc74A312648608' - }, - ], - smartVaultList: [ - { - smartVaultAddress: '0xCe07D2B5CC6Ff466BF497ceEa8eD168fB0Eb8F97', - asset: '0x93919784C523f39CACaa98Ee0a9d96c3F32b593e', // uniBTC - }, - ], - }), - arbitrum: createExports({ - troveList: [ - '0xb655775C4C7C6e0C2002935133c950FB89974928', // WETH Collateral(V2) - '0x5EA26D0A1a9aa6731F9BFB93fCd654cd1C3079Ec', // WBTC Collateral(V2) - '0xa7B54413129441e872F42C1c4fE7D1984332CA87', // clBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0x07BbC5A83B83a5C440D1CAedBF1081426d0AA4Ec', - assetList: [ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDe, ADDRESSES.arbitrum.sUSDe, ADDRESSES.arbitrum.DAI], - }], - }), - sonic: createExports({ - troveList: [ - '0xb655775C4C7C6e0C2002935133c950FB89974928', // WETH Collateral(V2) - '0x5EA26D0A1a9aa6731F9BFB93fCd654cd1C3079Ec', // WBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0x07BbC5A83B83a5C440D1CAedBF1081426d0AA4Ec', - assetList: [ADDRESSES.sonic.USDT, ADDRESSES.sonic.USDC_e], - }], - }), - xlayer: createExports({ - troveList: [ - '0xb655775C4C7C6e0C2002935133c950FB89974928', // WETH Collateral(V2) deprecated - '0x5EA26D0A1a9aa6731F9BFB93fCd654cd1C3079Ec', // WBTC Collateral(V2) deprecated - '0xbe223F331f05a8cf18F98675033FEFD6b23c7176', // WETH Collateral(V2) - '0xd19BC6B110896d136D9456E8fD45C71C8d8C5abB', // WBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0x07BbC5A83B83a5C440D1CAedBF1081426d0AA4Ec', - assetList: [ADDRESSES.xlayer.USDT, ADDRESSES.xlayer.USDC], - }, { - address: '0xB4d4793a1CD57b6EceBADf6FcbE5aEd03e8e93eC', - assetList: [ADDRESSES.xlayer.USDT, ADDRESSES.xlayer.USDC], - }], - }), - ethereum: createExports({ - troveList: [ - '0xb655775C4C7C6e0C2002935133c950FB89974928', // WETH Collateral(V2) deprecated - '0x5EA26D0A1a9aa6731F9BFB93fCd654cd1C3079Ec', // WBTC Collateral(V2) deprecated - - '0xb97E6219B0836E21ae671358e746f03dcdbCb6D8', // WETH Collateral(V2) - '0xc03403DD8f27CEFA314Fc109D26777c81b0De895', // WBTC Collateral(V2) - '0x2135EfEF5aC35ba549Cc791cEc4D15E8C8115611', // weETH Collateral(V2) - '0x43891fa695f17E47C9b2A0DFD9fb48147d331934', // uniBTC Collateral(V2) - '0x9644652540f78f9e27899a655067f205f9454a4a', // LBTC Collateral(V2) - '0x4077ACA146357E1FbFF981939D7229aF9Fdc329A', // enzoBTC Collateral(V2) - ], - nymWithAssetList: [{ - address: '0x07BbC5A83B83a5C440D1CAedBF1081426d0AA4Ec', - assetList: [ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC], - }, { - address: '0xb8374e4DfF99202292da2FE34425e1dE665b67E6', - assetList: [ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC], - }], - smartVaultList: [ - { - smartVaultAddress: '0xDd7eCb0dc1686020A8a23EE55126D7596a2eA03b', - asset: '0x004E9C3EF86bc1ca1f0bB5C7662861Ee93350568', // uniBTC - }, - { - smartVaultAddress: '0x05EA42F72F2e627497423663Faf7b00eA7DdA2C1', - asset: '0x8236a87084f8B84306f72007F36F2618A5634494', // LBTC - }, - { - smartVaultAddress: '0x11054D3584F94B542379Ff4Cf9e7897D50AE8317', - asset: '0x6A9A65B84843F5fD4aC9a0471C4fc11AFfFBce4a', // enzoBTC - }, - { - smartVaultAddress: '0xaC586e941d5846B79cEF71c8aef3ecC50BE12DCb', - asset: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT - }, - ], - }), - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.river }), - }, -} - diff --git a/projects/satoshiswap/index.js b/projects/satoshiswap/index.js deleted file mode 100644 index 6babbb3f041..00000000000 --- a/projects/satoshiswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x8f5c03a1c86bf79ae0baC0D72E75aee662083e26', - }) - } -} \ No newline at end of file diff --git a/projects/satsat/index.js b/projects/satsat/index.js deleted file mode 100644 index 44477756e1d..00000000000 --- a/projects/satsat/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { configPost } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') -const HOST='https://order.satsat.exchange' -const MarketContract = '0x56ed5Ad8DA3ed3b46aE3e6fb28eC653EB93b9436' - -async function tvl(api) { - let { data } = await configPost('satsat',`${HOST}/api/queryTokenInfo`, {"address":"","tokenSymbol":""}) - const tokens = data.map(v => v.address); - return sumTokens2({ api, owner: MarketContract, tokens }); -} - -module.exports = { - methodology: "All locked tokens includes stable and crypto assets in SatSat marketplace.", - map: { - tvl - } -}; diff --git a/projects/saturnswap/index.js b/projects/saturnswap/index.js deleted file mode 100644 index d9a275ed698..00000000000 --- a/projects/saturnswap/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/cardano') - -module.exports = { - timetravel: false, - cardano: { - tvl: sumTokensExport({ scripts: ['addr1zyd0sj57d9lpu7cy9g9qdurpazqc9l4eaxk6j59nd2gkh4275jq4yvpskgayj55xegdp30g5rfynax66r8vgn9fldndsqzf5tn'] },), // 0x0f4b4f7f7e507f3b6e9e954d5f6f3f8f7fa06e0f - } -} - -/* -// graph query for info -https://api.saturnswap.io/v1/graphql -query { - pools(first: 1000, order: { pool_stats: { tvl: DESC } }) { - edges { - node { - lp_fee_percent - name - pool_stats { - tvl - user_fees_earned_1d - updated_at - volume_1d - reserve_token_two - reserve_token_one - price - } - token_project_one { - asset_name - id - policy_id - name - ticker - price - decimals - } - token_project_one_id - token_project_two { - asset_name - id - policy_id - name - price - decimals - ticker - } - } - } - } -} - -*/ \ No newline at end of file diff --git a/projects/saucerswap-v2/index.js b/projects/saucerswap-v2/index.js deleted file mode 100644 index 198595d2117..00000000000 --- a/projects/saucerswap-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - 'hedera': { factory: '0x00000000000000000000000000000000003c3951', fromBlock: 55651154 } -}) \ No newline at end of file diff --git a/projects/saucerswap/index.js b/projects/saucerswap/index.js deleted file mode 100644 index 80030e5a1cc..00000000000 --- a/projects/saucerswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'hedera': '0x0000000000000000000000000000000000103780' -}) \ No newline at end of file diff --git a/projects/saveSOL/index.js b/projects/saveSOL/index.js deleted file mode 100644 index d6e0fe6773b..00000000000 --- a/projects/saveSOL/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection } = require("../helper/solana"); - -const SAVE_SOL_STAKE_POOL_ADDRESS = 'SAVEY1fVMBeRVo9V9rgEz8ENTvHreftd3QgpAKBDFV4'; - -async function tvl() { - const connection = getConnection(); - const account = await connection.getAccountInfo(new PublicKey(SAVE_SOL_STAKE_POOL_ADDRESS)) - return { - solana: Number(account.data.readBigUint64LE(258))/1e9 - } -} - -module.exports = { - timetravel: false, - methodology: - "Uses the SPL Stake Pool SDK to fetch the total supply of deposited SOL into the SaveSOL Stake Pool", - solana: { - tvl, - }, -}; diff --git a/projects/savmdex/index.js b/projects/savmdex/index.js deleted file mode 100644 index 40771cff902..00000000000 --- a/projects/savmdex/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); -module.exports = uniTvlExport('bevm', '0xc008f29AaddA007b123919a5a0561c1B2E37864A') \ No newline at end of file diff --git a/projects/savmswap/index.js b/projects/savmswap/index.js deleted file mode 100644 index e81e33d042f..00000000000 --- a/projects/savmswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -const factories = { - prom: '0x3B73a7eDc9dfE4847a20BcCfEf6Eb1c90439f5C9', - svm: '0x1842c9bD09bCba88b58776c7995A9A9bD220A925' -} - -module.exports = {} -Object.entries(factories).forEach(([chain, factory]) => - module.exports = { ...module.exports, ...uniTvlExport(chain, factory) } -) \ No newline at end of file diff --git a/projects/savvy/contracts.json b/projects/savvy/contracts.json deleted file mode 100644 index 662fb38139e..00000000000 --- a/projects/savvy/contracts.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "infoAggregator": "0x68D54ff41BA47355b95Bd477Bcf4d5ff4b2c2A59", - "savvyTokens": { - "SVY": "0x43aB8f7d2A8Dd4102cCEA6b438F6d747b1B9F034", - "svUSD": "0xF202Ab403Cd7E90197ec0f010ee897E283037706", - "svBTC": "0xeEE18334c414A47FB886a7317E1885b2Bfb8c2A6", - "svETH": "0xf7728582002ef82908c8242CF552E969BA863Ffa" - } -} \ No newline at end of file diff --git a/projects/savvy/index.js b/projects/savvy/index.js deleted file mode 100644 index 1eb0112067b..00000000000 --- a/projects/savvy/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const contracts = require("./contracts.json"); -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -async function tvl(api) { - const savvyPositionManagers = await api.call({ abi: 'address[]:getSavvyPositionManagers', target: contracts.infoAggregator, }) - const yieldStrategyManagers = await api.multiCall({ abi: 'address:yieldStrategyManager', calls: savvyPositionManagers, }) - const savvySages = await api.multiCall({ abi: 'address:savvySage', calls: savvyPositionManagers, }) - - const registeredBaseTokensCalls = (await api.multiCall({ abi: 'address[]:getRegisteredBaseTokens', calls: savvySages, })).flatMap((r, i) => { - const target = savvySages[i]; - return r.map(params => ({ target, params })); - }); - - const savvySwaps = (await api.multiCall({ abi: 'function savvySwap(address baseToken) returns (address)', calls: registeredBaseTokensCalls })) - const amos = (await api.multiCall({ abi: 'function amos(address baseToken) returns (address)', calls: registeredBaseTokensCalls, })) - const passThroughAMOs = (await api.multiCall({ abi: 'address:recipient', calls: amos, permitFailure: true })).filter(y => y) - const baseTokens = (await api.multiCall({ abi: 'address[]:getSupportedBaseTokens', calls: yieldStrategyManagers, })).map(y => y) - const yieldTokens = (await api.multiCall({ abi: 'address[]:getSupportedYieldTokens', calls: yieldStrategyManagers, })).map(y => y) - - const aTokens = (await api.multiCall({ abi: 'address:aToken', calls: yieldTokens, permitFailure: true })).filter(y => y) - const rTokens = (await api.multiCall({ abi: 'address:rToken', calls: yieldTokens, permitFailure: true })).filter(y => y) - const underlyingTokens = (await api.multiCall({ abi: 'address:token', calls: yieldTokens, permitFailure: true })).filter(y => y) - - const tokens = [baseTokens, underlyingTokens, yieldTokens].flat(3) - const tokenHolders = [savvyPositionManagers, savvySages, passThroughAMOs ].flat(3).filter(i => i !== nullAddress) - const tokensAndOwners = tokenHolders.map((owner) => tokens.map((token) => [ token, owner ])).flat() - - - const name1 = (await api.multiCall({ abi: 'string:name', calls: tokens, permitFailure: true })) - const ownYieldTokens = tokens.filter((_, i) => name1[i] && name1[i].toLowerCase().includes('savvy yield')) - const oyTokens = (await api.multiCall({ abi: 'address:aToken', calls: ownYieldTokens, permitFailure: true})) - const oybTokens = (await api.multiCall({ abi: 'address:baseToken', calls: ownYieldTokens, permitFailure: true})) - ownYieldTokens.forEach((_, i) => { - if(oyTokens[i]) tokensAndOwners.push([oyTokens[i], ownYieldTokens[i]]) - if(oybTokens[i]) tokensAndOwners.push([oybTokens[i], ownYieldTokens[i]]) - }) - await sumTokens2({ tokens, api, tokensAndOwners, blacklistedTokens: ownYieldTokens }); -} - -module.exports = { - methodology: 'The calculated TVL is the current sum of all base tokens and yield tokens in our contracts.', - arbitrum: { - tvl - }, - hallmarks: [ - [1691473498, "LBP Launch"] - ] -} \ No newline at end of file diff --git a/projects/sboomfi/index.js b/projects/sboomfi/index.js deleted file mode 100644 index 08f90027886..00000000000 --- a/projects/sboomfi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - sonic: '0x3638Ca700D67D560Be2A2d0DD471640957564829' -}) \ No newline at end of file diff --git a/projects/scallop-pool/active-pools.json b/projects/scallop-pool/active-pools.json deleted file mode 100644 index 60edfb61066..00000000000 --- a/projects/scallop-pool/active-pools.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "base": "SoLKL9GATA3iSJxkn2Z3ossP4ktgwFoQoTYBSXUzyRs", - "coingeckoId": "solana" - }, - { - "base": "USDCYdkkgP2zJ3jwF6mzwMpxngaqKi2jfvxPjodrMLi", - "coingeckoId": "usd-coin" - }, - { - "base": "USDTSdRp4ETB4cKe6YG3XcitKXhgvnbgeWcwzTiRCuu", - "coingeckoId": "usd-coin" - }, - { - "base": "ETHrj1rqFbiVbHBypZjuG46J6pS5PyL5f6m6v2VniBJV", - "coingeckoId": "ethereum" - }, - { - "base": "BTCwQoswFGLoX9igmJFfUJrKgAGJkbt5iVF2czw2Qpxn", - "coingeckoId": "bitcoin" - } -] \ No newline at end of file diff --git a/projects/scallop-pool/index.js b/projects/scallop-pool/index.js deleted file mode 100644 index 71a85b037c2..00000000000 --- a/projects/scallop-pool/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const anchor = require("@project-serum/anchor"); -const { PublicKey } = require("@solana/web3.js"); -const activePoolBases = require("./active-pools.json"); -const { getConnection, decodeAccount } = require("../helper/solana"); -const sdk = require('@defillama/sdk') - -const SCALLOP_PROGRAM_ID = new PublicKey("SCPv1LabixHirZbX6s7Zj3oiBogadWZvGUKRvXD3Zec"); - -// seeds -const COUPON_SEED = "coupon_seed"; -const POOL_AUTHORITY = "pool_authority_seed"; - -function getTokenGeckoId(mintAuthority) { - for (let i = 0; i < activePoolBases.length; i++) { - const pubkey = new PublicKey(activePoolBases[i].base) - const [couponMintAuthority, _couponMintAuthorityBump] = PublicKey.findProgramAddressSync([ - anchor.utils.bytes.utf8.encode(POOL_AUTHORITY), - pubkey.toBytes() - ], SCALLOP_PROGRAM_ID); - if (couponMintAuthority.equals(mintAuthority)) - return activePoolBases[i].coingeckoId; - } -} - -async function solanaTvl() { - const connection = getConnection() - - // at Scallop, coupon representing deposited amount of a pool - let couponAddresses = []; - for (let i = 0; i < activePoolBases.length; i++) { - const pubkey = new PublicKey(activePoolBases[i].base) - const [couponAddress, _couponAddressBump] = PublicKey.findProgramAddressSync([ - anchor.utils.bytes.utf8.encode(COUPON_SEED), - pubkey.toBytes() - ], SCALLOP_PROGRAM_ID); - couponAddresses.push(couponAddress); - } - - const balances = {} - const coupons = await connection.getMultipleAccountsInfo(couponAddresses); - coupons.forEach((curr) => { - if (curr === null) - return; - - if (curr.data.length !== 82) // invalid mint - return; - - const mintInfo = decodeAccount('mint', curr); - const geckoId = getTokenGeckoId(mintInfo.mintAuthority) - if (!geckoId) return; - const amount = (mintInfo.supply.toString() / Math.pow(10, mintInfo.decimals)) - sdk.util.sumSingleBalance(balances, geckoId, amount) - }); - return balances; -} - -module.exports = { - timetravel: false, - solana: { - tvl: solanaTvl, - }, - } \ No newline at end of file diff --git a/projects/scallop/active-pools.json b/projects/scallop/active-pools.json deleted file mode 100644 index 60edfb61066..00000000000 --- a/projects/scallop/active-pools.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "base": "SoLKL9GATA3iSJxkn2Z3ossP4ktgwFoQoTYBSXUzyRs", - "coingeckoId": "solana" - }, - { - "base": "USDCYdkkgP2zJ3jwF6mzwMpxngaqKi2jfvxPjodrMLi", - "coingeckoId": "usd-coin" - }, - { - "base": "USDTSdRp4ETB4cKe6YG3XcitKXhgvnbgeWcwzTiRCuu", - "coingeckoId": "usd-coin" - }, - { - "base": "ETHrj1rqFbiVbHBypZjuG46J6pS5PyL5f6m6v2VniBJV", - "coingeckoId": "ethereum" - }, - { - "base": "BTCwQoswFGLoX9igmJFfUJrKgAGJkbt5iVF2czw2Qpxn", - "coingeckoId": "bitcoin" - } -] \ No newline at end of file diff --git a/projects/scallop/index.js b/projects/scallop/index.js deleted file mode 100644 index e665812cdb2..00000000000 --- a/projects/scallop/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const sui = require("../helper/chain/sui"); -const BigNumber = require("bignumber.js"); - -const SCALLOP_SUI_MARKET_ID = "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9" - -async function suiBorrowed(api) { - const object = await sui.getObject(SCALLOP_SUI_MARKET_ID) - - const balanceSheetsFields = await sui.getDynamicFieldObjects({ - parent: object.fields.vault.fields.balance_sheets.fields.table.fields.id.id, - }); - - const balanceSheets = await sui.getObjects(balanceSheetsFields.map((e) => e.fields.id.id)) - - balanceSheets.forEach((e) => { - const coinType = '0x' + e.fields.name.fields.name - const amount = new BigNumber(e.fields.value.fields.debt).toString() - api.add(coinType, amount) - }) -} - -async function suiTvl(api) { - const object = await sui.getObject(SCALLOP_SUI_MARKET_ID) - - const balanceSheetsFields = await sui.getDynamicFieldObjects({ - parent: object.fields.vault.fields.balance_sheets.fields.table.fields.id.id, - }); - - const balanceSheets = await sui.getObjects(balanceSheetsFields.map((e) => e.fields.id.id)) - - balanceSheets.forEach((e) => { - const coinType = '0x' + e.fields.name.fields.name - const amount = new BigNumber(e.fields.value.fields.cash) - .minus(e.fields.value.fields.revenue) - .toString() - api.add(coinType, amount) - }) - - const collateralStatsFields = await sui.getDynamicFieldObjects({ - parent: object.fields.collateral_stats.fields.table.fields.id.id, - }); - - const collateralStats = await sui.getObjects(collateralStatsFields.map((e) => e.fields.id.id)) - - collateralStats.forEach((e) => { - const coinType = '0x' + e.fields.name.fields.name - api.add(coinType, e.fields.value.fields.amount) - }) -} - -module.exports = { - timetravel: false, - sui: { - tvl: suiTvl, - borrowed: suiBorrowed, - }, -} \ No newline at end of file diff --git a/projects/scanto/index.js b/projects/scanto/index.js deleted file mode 100644 index aa08d4151c7..00000000000 --- a/projects/scanto/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(api){ - const supply = await api.call({ abi: "function totalSupply() view returns (uint256)", target:"0x9F823D534954Fc119E31257b3dDBa0Db9E2Ff4ed" }) - return { - ["canto:" + ADDRESSES.null]: supply - } -} - -module.exports={ - canto:{ - tvl - } -} \ No newline at end of file diff --git a/projects/scarabfinance/index.js b/projects/scarabfinance/index.js deleted file mode 100644 index efc020baa65..00000000000 --- a/projects/scarabfinance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unknownTokens"); - -const gscarabTokenAddress = "0x6ab5660f0B1f174CFA84e9977c15645e4848F5D6"; -const gscarabRewardPoolAddress = "0xc88690163b10521d5fB86c2ECB293261F7771525"; -const templeAddress = "0xD00F41d49900d6affd707EC6a30d1Bf7D4B7dE8F"; - -const ftmLPs = [ - "0x78e70eF4eE5cc72FC25A8bDA4519c45594CcD8d4", // scarabFtmLpAddress - "0x27228140d72a7186f70ed3052c3318f2d55c404d", //gscarabFtmLpAddress -]; - -module.exports = { - fantom: { - tvl: async () => ({}), - pool2: sumTokensExport({ owner: gscarabRewardPoolAddress, tokens: ftmLPs, }), - staking: staking(templeAddress, gscarabTokenAddress), - }, -}; \ No newline at end of file diff --git a/projects/scarecrow-raven/abi.json b/projects/scarecrow-raven/abi.json deleted file mode 100644 index 7d70492db5b..00000000000 --- a/projects/scarecrow-raven/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accRavenPerShare, uint16 depositFeeBP, uint256 lpSupply)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/scarecrow-raven/index.js b/projects/scarecrow-raven/index.js deleted file mode 100644 index eb0f72fc55b..00000000000 --- a/projects/scarecrow-raven/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const chef = "0x2639779d6ca9091483a2a7b9a1fe77ab83b90281"; - -async function tvl(api) { - const tokens = (await api.fetchList({ lengthAbi: abi.poolLength , itemAbi: abi.poolInfo, target: chef})).map(i => i[0]) - return sumTokens2({ api, tokens, owner: chef, }) -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - } -}; diff --git a/projects/scarecrow/index.js b/projects/scarecrow/index.js deleted file mode 100644 index 65f07e5d674..00000000000 --- a/projects/scarecrow/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0xbCEf0849DDd928835A6Aa130aE527C2703CD832C', - nativeToken: '0x46e1Ee17f51c52661D04238F1700C547dE3B84A1' -}) \ No newline at end of file diff --git a/projects/scaryswap/contracts.json b/projects/scaryswap/contracts.json deleted file mode 100644 index ea257c749d7..00000000000 --- a/projects/scaryswap/contracts.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "pools": [ - "0x704e258002428ad5a8dbb433D477654404f15587", - "0x034D059190a8554f2E474Bd25c369F18ac5Ad3Ab", - "0xc35cBc7964D1eC52e23D87551bC0198bd6CA5684", - "0x2A2FBB49dDaB99a8bDFC203b70570187573ba8ac", - "0xE5E1e21B7564D6DCd36d5dC061A06eD3E97c2058", - "0x6286fC97636C79ce3Cf5cf176054C69b6FFD4333", - "0x1981a9fe49A69e1050D07CcF85B65b8aB0adFDA4", - "0x088A14e3BC62313C8D694424015657aEdD98Df26", - "0x421ACe6888c80bF5214424C71879fF69F874553c", - "0xD79666d97779C3bdeDc5e8697F48a0849ea0a9b2", - "0x64e3c3fbC549C19605Ba0B5d823d3aE673C2f8Ab" - ], - "farms": [ - { "contract": "0x335974e9A7449765DfE891dFc9e9ECF4Ae0E1F08", "token": "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E" }, - { "contract": "0x7968FC7B3aBf481d8D6577D048DbE10930Bb48BA", "token": "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83" }, - { "contract": "0x4c2032f0F6856be925B1f5E217e01ca8bd4197F6", "token": "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75" }, - { "contract": "0x1ad66466Fc9Cdd5992b3919E475885aCC572887a", "token": "0xAD522217E64Ec347601015797Dd39050A2a69694" }, - { "contract": "0xC17c92E9b2A9Be62e3547819438482033c5d4026", "token": "0xAD522217E64Ec347601015797Dd39050A2a69694" }, - { "contract": "0xDad0e7f0cc49c8B24Ba89B7c224bb0bF462dCBD5", "token": "0xAD522217E64Ec347601015797Dd39050A2a69694" } - ] -} diff --git a/projects/scaryswap/index.js b/projects/scaryswap/index.js deleted file mode 100644 index 99c110705f6..00000000000 --- a/projects/scaryswap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { pools, farms } = require("./contracts.json"); -const poolAbi = require("./pool.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const chain = "fantom"; - -async function staking(api) { - const tokens = await api.multiCall({ abi: poolAbi.rewardsToken, calls: pools }) - const tokensAndOwners = tokens.map((v, i) => [v, pools[i]]) - farms.forEach(({ token, contract}) => tokensAndOwners.push([token, contract])) - return sumTokens2({ api, tokensAndOwners}) -} - -module.exports = { - fantom: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: "0x7ceb5f3a6d1888eec74a41a5377afba5b97200ea", - }), - staking: staking - }, -}; diff --git a/projects/scaryswap/pool.json b/projects/scaryswap/pool.json deleted file mode 100644 index 0e04add9281..00000000000 --- a/projects/scaryswap/pool.json +++ /dev/null @@ -1 +0,0 @@ -{ "rewardsToken": "address:rewardsToken" } diff --git a/projects/sceptre-staked-flr/index.js b/projects/sceptre-staked-flr/index.js deleted file mode 100644 index c3a6ed5ca93..00000000000 --- a/projects/sceptre-staked-flr/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const SFLR = "0x12e605bc104e93B45e1aD99F9e555f659051c2BB"; - -async function tvl(api) { - const pooledFlr = await api.call({ abi: "uint256:totalPooledFlr", target: SFLR }) - api.addGasToken(pooledFlr) -} - -module.exports = { - flare: { - tvl, - }, - methodology: "Counts staked FLR tokens.", -} \ No newline at end of file diff --git a/projects/scientixfinance/index.js b/projects/scientixfinance/index.js deleted file mode 100644 index 12013268de5..00000000000 --- a/projects/scientixfinance/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const Scientist = '0xEbB15456C0833033f0310f61748CD597554460Da'; -const Transmute = '0x2dfE725eca8FFe13fe4E4a8E015cF857b3b72bcF'; -const TransmuteAdapter = '0xa96b313cB2E81505b306250946e3Be86b26706B1'; -const Farm = '0x68145F3319F819b8E01Dfa3c094fa8205E9EfB9a'; -const VotingEscrow = '0xF92aBA2A79dC133278DE2CDDB38Db775A4b5B024'; - -// Token -const ibALPACA = "0xf1be8ecc990cbcb90e166b71e368299f0116d421"; -const scUSD = "0x0E5C2b15666EEE4b66788E45CF4Da0392C070fa7"; -const SCIX = "0x2CFC48CdFea0678137854F010b5390c5144C0Aa5"; -const ScixBusd = "0xe8Efb51E051B08614DF535EE192B0672627BDbF9"; -const scUsdBusd = "0x53085B02955CFD2F884c58D19B8a35ef5095E8aE"; - -module.exports = { - bsc: { - tvl, - staking: staking(VotingEscrow, SCIX), - pool2, - }, -}; - -async function tvl(api) { - const totalDeposited = await api.call({ abi: 'uint256:totalDeposited', target: Scientist}) - const token = await api.call({ abi: 'address:token', target: Scientist}) - const scSupply = await api.call({ abi: 'address:totalSupplyScTokens', target: Transmute}) - // const transmuteValue = await api.call({ abi: 'address:totalValue', target: TransmuteAdapter}) - api.add(token, totalDeposited) - api.add(token, scSupply) - // api.add(token, transmuteValue) - await api.sumTokens({ owner: Transmute, token}) -} - -async function pool2(api) { - const ibALPACABalance = await api.call({ abi: 'erc20:balanceOf', target: ibALPACA, params: [Farm]}) - const ibALPACASupply = await api.call({ abi: 'uint256:totalSupply', target: ibALPACA}) - const alpacaBal = await api.call({ abi: 'uint256:totalToken', target: ibALPACA}) - const alpacaToken = await api.call({ abi: 'address:token', target: ibALPACA}) - api.add(alpacaToken, alpacaBal * ibALPACABalance / ibALPACASupply) - - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true, owner: Farm, tokens: ['0xe8Efb51E051B08614DF535EE192B0672627BDbF9', '0x53085B02955CFD2F884c58D19B8a35ef5095E8aE', ScixBusd,scUsdBusd ] }) -} \ No newline at end of file diff --git a/projects/scion-finance/index.js b/projects/scion-finance/index.js deleted file mode 100644 index 2d6969f4a7a..00000000000 --- a/projects/scion-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const config = { - moonriver: ["0xc24D43093b44b7A9657571DDB79FEdf014eaef7d",], - fantom: ["0x3938411fd77A5458721aF6B080b51008394568ef",], -} -module.exports = { - methodology: "Measures the total value deposited in Scion vault contracts", -}; - -Object.keys(config).forEach(chain => { - const vaults = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:UNDERLYING', calls: vaults }) - return api.sumTokens({ owners: vaults, tokens, }) - } - } -}) diff --git a/projects/scoop/index.js b/projects/scoop/index.js deleted file mode 100644 index fe603b90ff4..00000000000 --- a/projects/scoop/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { nullAddress, sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports={ - base: { - tvl: sumTokensExport({ tokens: [nullAddress], owner: "0xaeea89678b36c20493e2c069cdcea72e1b34a9ed" }) - } -} \ No newline at end of file diff --git a/projects/scopuly/index.js b/projects/scopuly/index.js deleted file mode 100644 index 8d33075be8e..00000000000 --- a/projects/scopuly/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { get } = require('../helper/http'); - -async function tvl() { - var response = await get('https://api.scopuly.com/api/liquidity_pools_tvl'); - // Sort the response array by the 'time' field in descending order to get the most recent entry first - response.sort((a, b) => b.time - a.time); - var mostRecentTvl = response[0]; - return { tether: mostRecentTvl.tvl }; -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - stellar: { tvl }, -} - diff --git a/projects/scoreplay/index.js b/projects/scoreplay/index.js deleted file mode 100644 index c4c76ef2e97..00000000000 --- a/projects/scoreplay/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - start: '2024-06-09', - base: { tvl: sumTokensExport({ owner: '0xFcab8B765FB0BCB05407d16173941e2d1F09DE12', tokens: [ADDRESSES.base.WETH] }) }, - sophon: { tvl: sumTokensExport({ owner: '0x0f646ad0b32e2adacfa702d02e37aae26737d82d', tokens: [ADDRESSES.sophon.USDC] }) }, -} \ No newline at end of file diff --git a/projects/scranton-finance/index.js b/projects/scranton-finance/index.js deleted file mode 100644 index 1770266f8ea..00000000000 --- a/projects/scranton-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0x01E3788ef98F5672DC66185FBA1b50037BA1352d"; -const token = "0xd0e7e2a4e0b7df94a095346c55665ba586d3caa4"; - -module.exports = { - ...masterChefExports(masterchef, "fantom", token, false) -} \ No newline at end of file diff --git a/projects/scream/index.js b/projects/scream/index.js deleted file mode 100644 index 95ff825fd51..00000000000 --- a/projects/scream/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const { staking } = require('../helper/staking') - - -module.exports = { - hallmarks: [ - [1652572800,"DEI depeg"] - ], - methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets. fUSD is returned as TUSD", - fantom: { - staking: staking("0xe3d17c7e840ec140a7a51aca351a482231760824", "0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475"), - ...compoundExports2({ comptroller: "0x260e596dabe3afc463e75b6cc05d8c46acacfb09", }), - } -} - -module.exports.deadFrom = '2022-05-15' -module.exports.fantom.borrowed= () => ({}) \ No newline at end of file diff --git a/projects/scribe-v4/index.js b/projects/scribe-v4/index.js deleted file mode 100644 index e9f4d28a25b..00000000000 --- a/projects/scribe-v4/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - scroll: { - factory: '0xDc62aCDF75cc7EA4D93C69B2866d9642E79d5e2e', - fromBlock: 7680915, - isAlgebra: true, - }, -}) diff --git a/projects/scribeswap/index.js b/projects/scribeswap/index.js deleted file mode 100644 index 7278fc49fdb..00000000000 --- a/projects/scribeswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - scroll: { tvl: getUniTVL({ factory: '0xb11826635f9253Bae9C426862b0f100950a71f8f', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/scroll/index.js b/projects/scroll/index.js deleted file mode 100644 index b7d742ee252..00000000000 --- a/projects/scroll/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9", - "0xb2b10a289A229415a124EFDeF310C10cb004B6ff", - "0x7F2b8C31F88B6006c382775eea88297Ec1e3E905", - "0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367", - "0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6", - "0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B", - "0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B", - "0x6625C6332c9F91F2D27c304E729B86db87A3f504", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/scrollswap/index.js b/projects/scrollswap/index.js deleted file mode 100644 index acb846de398..00000000000 --- a/projects/scrollswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('scroll', '0x0082123Cf29a85f48Cd977D3000aec145A3B452F', { }) \ No newline at end of file diff --git a/projects/scrollswapfinance/index.js b/projects/scrollswapfinance/index.js deleted file mode 100644 index 5a0d316356e..00000000000 --- a/projects/scrollswapfinance/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('scroll', '0xaA4b3b63B0A828dc28b2De7Be6115198B080De09') \ No newline at end of file diff --git a/projects/scrt.js b/projects/scrt.js deleted file mode 100644 index 4d6cbc4f847..00000000000 --- a/projects/scrt.js +++ /dev/null @@ -1,19 +0,0 @@ -const utils = require('./helper/utils.js'); - -const urls = ['https://api-bridge-mainnet.azurewebsites.net/tokens/?page=0&size=1000', 'https://bridge-bsc-mainnet.azurewebsites.net/tokens/?page=0&size=1000'] - -const tvl = async (api) => { - for (const url of urls) { - const { data } = await utils.fetchURL(url) - data.tokens.forEach(({ src_coin, totalLockedUSD }) => { - if (src_coin !== "UNILP-WSCRT-ETH" && src_coin !== "WSCRT") { - api.addUSDValue(Math.round(totalLockedUSD)) - } - }) - } -} - -module.exports = { - misrepresentedTokens: true, - secret: { tvl } -} \ No newline at end of file diff --git a/projects/scrub/index.js b/projects/scrub/index.js deleted file mode 100644 index abd94a4ea01..00000000000 --- a/projects/scrub/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { unknownTombs, sumTokensExport } = require("../helper/unknownTokens"); -const { mergeExports } = require("../helper/utils"); - -const rewardPool = ["0xC0608A81Fe9850360B899D5eFC9f34D1cCd58D55"]; -const lps = Object.values({ - "LION-USDC-LP": "0x59e38a5799B64fE17c5fAb7E0E5396C15E2acb7b", - "TIGER-USDC-LP": "0x6Eff7d2D494bc13949523e3504dE1994a6325F0A", - "BEAR-WBTC-LP": "0x9e334ce82f7659d2967C92a4a399aD694F63bbCF", -}); - - -const lpsPrice = Object.values({ - "LION-USDC-LP": "0x09d6561b3795ae237e42f7adf3dc83742e10a2e8", - "TIGER-USDC-LP": "0x7f8ed7d31795dc6f5fc5f6685b11419674361501", - "BEAR-WBTC-LP": "0xea848151acb1508988e56ee7689f004df2b15ced", -}); - -module.exports = unknownTombs({ - lps, - shares: [ - "0x471F79616569343e8e84a66F342B7B433b958154", //Tiger - ], - rewardPool, - masonry: ["0x0dB75Ef798a12312afd98d1884577664f4DD4411"], - chain: "kava", - useDefaultCoreAssets: true, -}); -module.exports.misrepresentedTokens = true; - -const lionStaking = { - misrepresentedTokens: true, - cronos: { tvl: () => 0}, - kava: { - staking: sumTokensExport({ - tokensAndOwners: [ - - ['0x990e157fC8a492c28F5B50022F000183131b9026', '0x199A0CD96065f50F9f7978c7BB47869503a9eD1E'], // Lion cave - ['0x471F79616569343e8e84a66F342B7B433b958154', '0x67041094c4fc1492A1AB988Fb8De0ab4A0a4A080'], // Tiger staking - ['0x990e157fC8a492c28F5B50022F000183131b9026', '0x3367716f07A85C04340B01D95B618d02c681Be2e'], // Lion ±Staking round 2 - ['0x990e157fC8a492c28F5B50022F000183131b9026', '0x83E315fC68F97EaFf04468D05eb084C9eD36f649'], // Lion Staking round 3 - ['0x990e157fC8a492c28F5B50022F000183131b9026', '0xBD98813A2F43587CCeC8c0489a5486d1f6Ef9C50'], // Lion Staking round 1 - - ], - lps: lpsPrice, - useDefaultCoreAssets: true, - restrictTokenRatio: 100, - }), - }, -}; - -module.exports = mergeExports([module.exports, lionStaking]); diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js deleted file mode 100644 index 453646e3ca6..00000000000 --- a/projects/scrubinvest/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumUnknownTokens } = require("../helper/unknownTokens"); -async function tvl(api) { - - const calls = [ - { target: '0x075CA53543D304c02Ee692C0b691770AEB273dA4', params: '0x4402Cf5433D57266563979654d20887AcE672393' }, - // { target: '0x69cEf0795FFFa66DfC4Ffc90E8Bd05c399388650', params: '0xa2355f35Ab85f1771FB1085a0e5b2599B8F47457' }, // TIGER inflating tvl - { target: '0xe2C935041aEF672974A31d46c41A4F292982e621', params: '0x2c1C6aaB89272d07B7f78bFe93eefb6D2631Cf94' }, - { target: '0x46B9FCac1B698AE54b9c1D52A734338964e28AEE', params: '0x070110b0cAd64833b1a6a9E86337A4e4eE786607' }, - { target: '0xA250a3b6a5e5E8b398092537951F8Bd80639ed5c', params: '0xE04539bD52618B7d197Be54B3e4D80732082906E' }, - { target: '0xCa0d15B4BB6ad730fE40592f9E25A2E052842c92', params: '0xEa892552BD31A20F42ceb3476D6A280c405883d0' }, - { target: '0xa27a1f03479cfe4B0b97Fd8c772a84aD815C1946', params: '0xa1FA74fD861FFf2fc5f7a618A05beB12709fB419' }, - { target: '0x74AE6bB3138DB1969c52f39e2c311d997528633B', params: '0x2D1D648c2AEdf62037f2b80f9cC8c93258179380' }, - { target: '0x8EEA85dA61b397EaB933C001DAAD6fC1C5A4c67C', params: '0xcf4673F714183C42DADc1B42DAC21BE09cfc3684' }, - { target: '0xc28fcef5970fd23e5bfcdc31ce1ba72ef98cc70a', params: '0xef7541FCa94988fA423bC418a854f7967f83a3E0' }, - { target: '0x371d33963fb89ec9542a11ccf955b3a90391f99f', params: '0x43Ac7f627e41EBDa7515FEaCa425306AaB9cB602' }, - // { target: '0x1E5573b2A7C1D08112d0Ff22e9F2D8EFc9583532', params: '0x9e890FBD4295D92c41fA12a2083b51C387699Fd8' }, // TIGER inflating tvl - { target: '0x8fE243F8B47107c468537D74514d7c52Cd61E937', params: '0x56a9c9230d6D3b7bF147c10fdDBCD8F2eB1a2B6d' }, - //NEW LPs 14/07 - GAUGE / CONTRACT - { target: '0x5383dEB37479599a33584f7Bbc346ab299e30FF0', params: '0x79eb3848B7B4630D1d883172f8e56B2e8fb18521' }, - { target: '0x776d2Ae19FC4c5982D5b20d8c14BCDae09755796', params: '0x1C415Ce79D0A18A4aA835D3d9083d2aF4d7894FC' }, - { target: '0x1f343A11b317EB54F08D80FD3cF9d706eDA5982c', params: '0xF35265f9713FD7ab6a27D387B2D02C1306FFB606' }, - - ] - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls }) - const lps = await api.multiCall({ abi: 'address:stake', calls: calls.map(i => i.target)}) - api.addTokens(lps, bals) - - return sumUnknownTokens({ - api, - tokensAndOwners: [ - // YieldOptimizers Mare - ['0x066C98E48238e8D77006a5fA14EC3B080Fd2848d', '0xcd017B495DF1dE2DC8069b274e2ddfBB78561176'], - ['0x92e17FD2DA50775FBD423702E4717cCD7FB2A6BB', '0x88555c4d8e53ffB223aB5baDe0B5e6B2Cd3966c4'], - ['0x58333b7D0644b52E0e56cC3803CA94aF9e0B52C3', '0xB4Ba7ba722eacAE8f1e4c6213AF05b5E8B27dbdB'], - ['0x24149e2D0D3F79EBb7Fc464b09e3628dE395b39D', '0xB9774bB2A18Af59Ec9bf86dCaeC07473A2D2F230'], - ['0x0B6c2a9d4d739778dF6cD1cf815754BD1438063c', '0x3CcA2C0d433E00433082ba16e968CA11dA6Dc156'], - ['0x2f9e61D4E9A9A3694CcDc287c790EA5cc3302E88', '0x1504B9EDdD57Ed8252b3b3b407DdE27B72A80790'], - ['0x350c4A0aC240755Bb6432FeB907eCAFbbBc75770', '0xC05021F3b3601BF33aB59dc75577B85985ACaab7'], - ['0x8E00102d96b34BEF29F3E1e0e5DBd0a611Cac312', '0x6d81FcA3abD89Bd89D400281aE5f1Ee0D62Cd16f'], - // YieldOptimizers Hover - ['0xcE86EBc669BBf07A64A0a55BB105Cc2B5B5d1961','0xfA8f4Fd6D961ECf25e3406a1e6a22A3671678a65'], - ['0xb51eFaF2f7aFb8a2F5Be0b730281E414FB487636','0xC00804268b8Ce19D2276A81292a6E28277bf3591'], - // also count base assets if available - [ADDRESSES.telos.ETH, '0xcd017B495DF1dE2DC8069b274e2ddfBB78561176'], - [ADDRESSES.moonriver.USDT, '0x88555c4d8e53ffB223aB5baDe0B5e6B2Cd3966c4'], - [ADDRESSES.shiden.ETH, '0xB4Ba7ba722eacAE8f1e4c6213AF05b5E8B27dbdB'], - [ADDRESSES.kava.WKAVA, '0xB9774bB2A18Af59Ec9bf86dCaeC07473A2D2F230'], - [ADDRESSES.moonriver.USDC, '0x3CcA2C0d433E00433082ba16e968CA11dA6Dc156'], - [ADDRESSES.moonriver.USDC, '0x1504B9EDdD57Ed8252b3b3b407DdE27B72A80790'], - [ADDRESSES.kava.WKAVA, '0xC05021F3b3601BF33aB59dc75577B85985ACaab7'], - // New Scrub Pool - // ['0x471F79616569343e8e84a66F342B7B433b958154', '0x67041094c4fc1492A1AB988Fb8De0ab4A0a4A080'], // Tiger - protocol related token - - // WETH - - // Vaults Equilibre Scrub - // ['0xeA848151ACB1508988e56Ee7689F004df2B15ced', "0x4402Cf5433D57266563979654d20887AcE672393"], - // ['0x7f8ed7d31795dc6f5fc5f6685b11419674361501', "0xa2355f35Ab85f1771FB1085a0e5b2599B8F47457"], - // ['0x09d6561b3795ae237e42f7adf3dc83742e10a2e8', "0x2c1C6aaB89272d07B7f78bFe93eefb6D2631Cf94"], - ], - useDefaultCoreAssets: true, - resolveLP: true, - lps, - blacklist: ['0x471f79616569343e8e84a66f342b7b433b958154'] - }) -} - -module.exports = { - misrepresentedTokens: true, - kava: { - tvl, - } -}; diff --git a/projects/sculptor-finance/index.js b/projects/sculptor-finance/index.js deleted file mode 100644 index 72b66203c33..00000000000 --- a/projects/sculptor-finance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { methodology, aaveExports } = require("../helper/aave"); - -const stakingContract = "0xd4F7F739488f5C9930A60e85afbE26a8B71BA795"; -const SCULPT = "0xAd3E02e83b886543D1171FF446C130D52068C106"; - -const stakingContractPool2 = "0x18542eEe45272a29BC572F0EdB727da4e3506DD2"; -const SCULPT_BNB = "0xB1F3bE619648B4a2dF6ddaCFD42B051F21bF3dc8"; - - -module.exports = { - methodology, - bsc: { - ...aaveExports('', '0xa1eBB37b5A19050A192c38C82f25f4aBf0158F39'), - staking: staking(stakingContract, SCULPT), - pool2: pool2(stakingContractPool2, SCULPT_BNB), - }, -}; diff --git a/projects/sdai/index.js b/projects/sdai/index.js deleted file mode 100644 index 515dde933ff..00000000000 --- a/projects/sdai/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - xdai: { - tvl: sumTokensExport({ owner: ADDRESSES.xdai.SDAI, tokens: [ADDRESSES.xdai.WXDAI] }) - } -} \ No newline at end of file diff --git a/projects/sdex/index.js b/projects/sdex/index.js deleted file mode 100644 index a1bec55bc0b..00000000000 --- a/projects/sdex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethf: { - tvl: getUniTVL({ factory: '0x425D988a209125C58d16A9376f997D24009f569b', useDefaultCoreAssets: true, }), - } -} diff --git a/projects/sealightswap/index.js b/projects/sealightswap/index.js deleted file mode 100644 index 8b68084027b..00000000000 --- a/projects/sealightswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: getUniTVL({ - factory: '0xd0B30Fc63169bAaa3702ad7ec33EBe3f9e8627c0', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/seamless-v2/index.js b/projects/seamless-v2/index.js deleted file mode 100644 index 0c6e0cdf715..00000000000 --- a/projects/seamless-v2/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { getLogs2 } = require("../helper/cache/getLogs"); - -const config = { - ethereum: { - LEVERAGE_MANAGER: "0x5C37EB148D4a261ACD101e2B997A0F163Fb3E351", - fromBlock: 23471226 - }, - base: { - LEVERAGE_MANAGER: "0x38Ba21C6Bf31dF1b1798FCEd07B4e9b07C5ec3a8", - fromBlock: 31051780 - }, -}; - -const getLeverageTokens = async (api) => { - return ( - await getLogs2({ - api, - target: config[api.chain].LEVERAGE_MANAGER, - topics: ["0xc3f4681fb2a57a13e121c6f24fe319c8572bb001497f2b74712695625ee9028e"], - eventAbi: "event LeverageTokenCreated(address indexed token, address collateralAsset, address debtAsset, (address lendingAdapter, address rebalanceAdapter, uint256 mintTokenFee, uint256 redeemTokenFee) config)", - fromBlock: config[api.chain].fromBlock - }) - ) -}; - -const SeamlessLeverageTokensTVL = () => { - return { - tvl: async (api) => { - const leverageTokens = (await getLeverageTokens(api)).map((log) => ({ lendingAdapter: log.config.lendingAdapter, collateralAsset: log.collateralAsset })); - - const collateralBalances = await api.multiCall({ - calls: leverageTokens.map(({ lendingAdapter }) => lendingAdapter), - abi: "function getCollateral() public view returns (uint256)", - }); - - leverageTokens.forEach(({ collateralAsset }, i) => { - api.add(collateralAsset, collateralBalances[i]); - }); - - return api.getBalances(); - }, - borrowed: async (api) => { - const leverageTokens = (await getLeverageTokens(api)).map((log) => ({ lendingAdapter: log.config.lendingAdapter, debtAsset: log.debtAsset })); - - const debtBalances = await api.multiCall({ - calls: leverageTokens.map(({ lendingAdapter }) => lendingAdapter), - abi: "function getDebt() public view returns (uint256)", - }); - - leverageTokens.forEach(({ debtAsset }, i) => { - api.add(debtAsset, debtBalances[i]); - }); - - return api.getBalances(); - } - }; -}; - -module.exports = { - base: SeamlessLeverageTokensTVL(), - ethereum: SeamlessLeverageTokensTVL(), -}; diff --git a/projects/seamless-vaults/abis.json b/projects/seamless-vaults/abis.json deleted file mode 100644 index f64116b331d..00000000000 --- a/projects/seamless-vaults/abis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "instanceCount": "function instanceCount() external view returns (uint256 count)", - "instanceAt": "function instanceAt(uint256 index) external view returns (address instance)", - "getGeyserData": "function getGeyserData() external view returns ((address stakingToken, address rewardToken, address rewardPool, (uint256 floor, uint256 ceiling, uint256 time) rewardScaling, uint256 rewardSharesOutstanding, uint256 totalStake, uint256 totalStakeUnits, uint256 lastUpdate, (uint256 duration, uint256 start, uint256 shares)[] rewardSchedules) geyser)", - "underlying": "function underlying() external view returns (address)", - "UNDERLYING_ASSET_ADDRESS": "function UNDERLYING_ASSET_ADDRESS() external view returns (address)", - "totalUnderlying": "function totalUnderlying() external view returns (uint256)" -} \ No newline at end of file diff --git a/projects/seamless-vaults/index.js b/projects/seamless-vaults/index.js deleted file mode 100644 index abab8d6f145..00000000000 --- a/projects/seamless-vaults/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const { getLogs2 } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const abi = require("./abis.json"); -const { mergeExports } = require("../helper/utils"); - -const SEAMLESS_GOVERNOR_SHORT_TIMELOCK = "0x639d2dD24304aC2e6A691d8c1cFf4a2665925fee"; -const MORPHO_VAULTS_FACTORY_v1_1 = "0xFf62A7c278C62eD665133147129245053Bbf5918"; -const AAVE_POOL_DATA_PROVIDER = "0x2A0979257105834789bC6b9E1B00446DFbA8dFBa"; -const GEYSER_REGISTRY = "0xD5815fC3D736120d07a1fA92bA743c1167dA89d8"; - -// Geysers are deprecated -async function geyserTvl(api) { - const aTokens = await api.call({ abi: "function getAllATokens() view returns (tuple(string symbol, address tokenAddress)[])", target: AAVE_POOL_DATA_PROVIDER }) - const aTokenSet = new Set(aTokens.map(t => t.tokenAddress.toLowerCase())) - const geysers = await api.fetchList({ lengthAbi: abi.instanceCount, itemAbi: abi.instanceAt, target: GEYSER_REGISTRY }) - const geysersData = await api.multiCall({ calls: geysers, abi: abi["getGeyserData"], }) - const stakingTokens = geysersData.map(d => d.stakingToken) - const wrappedUnderlying = await api.multiCall({ calls: stakingTokens, abi: abi["underlying"], permitFailure: true, }) - const uTokens = wrappedUnderlying.filter(i => i && !aTokenSet.has(i.toLowerCase())) - const uOwners = stakingTokens.filter((_, i) => wrappedUnderlying[i]&& !aTokenSet.has(wrappedUnderlying[i].toLowerCase())) - - const notWrappedTokensAndOwners = wrappedUnderlying.map((w, i) => { - if (w) return; - return [stakingTokens[i], geysers[i]]; - }).filter(i => i) - - const aTokenUnderlying = await api.multiCall({ calls: uTokens, abi: abi["UNDERLYING_ASSET_ADDRESS"], }) - - const notATokenTokensAndOwners = aTokenUnderlying.map((w, i) => { - if (w) return; - return [uTokens[i], uOwners[i]]; - }).filter(i => i) - - const underlyingBalance = await api.multiCall({ calls: uOwners, abi: abi["totalUnderlying"], permitFailure: true, }); - - await sumTokens2({ api, tokensAndOwners: [notATokenTokensAndOwners, notWrappedTokensAndOwners].flat(), }); - - underlyingBalance.forEach((bal, i) => { - if (!bal) return; - api.add(aTokenUnderlying[i], bal) - }); - - return api.getBalances() -} - -const SeamlessMorphoVaultsTVL = async (api) => { - const allVaults = ( - await getLogs2({ - api, - factory: MORPHO_VAULTS_FACTORY_v1_1, - eventAbi: - "event CreateMetaMorpho(address indexed metaMorpho, address indexed caller, address initialOwner, uint256 initialTimelock, address indexed asset, string name, string symbol, bytes32 salt)", - fromBlock: 24831748, - }) - ).map((log) => log.metaMorpho); - - const allVaultOwners = await api.multiCall({ - calls: allVaults, - abi: "function owner() public view returns (address)", - }); - - const seamlessMorphoVaults = allVaults.filter( - (_, i) => - allVaultOwners[i].toLowerCase() === - SEAMLESS_GOVERNOR_SHORT_TIMELOCK.toLowerCase() - ); - - const underlyingAssets = await api.multiCall({ - calls: seamlessMorphoVaults, - abi: "function asset() public view returns (address)", - }); - const totalAssets = await api.multiCall({ - calls: seamlessMorphoVaults, - abi: "function totalAssets() public view returns (uint256)", - }); - - underlyingAssets.forEach((asset, i) => { - api.add(asset, totalAssets[i]); - }); - - return api.getBalances(); -}; - -const methodology = `Counts the tokens deposited in Seamless Protocol owned vaults even when those vaults exist on other protocols (this is marked as double counted).`; - -module.exports = mergeExports([ - { base: { tvl: geyserTvl } }, - { - doublecounted: true, - base: { tvl: SeamlessMorphoVaultsTVL }, - }, - { methodology }, -]); diff --git a/projects/seamless/index.js b/projects/seamless/index.js deleted file mode 100644 index d68643583d0..00000000000 --- a/projects/seamless/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -const AAVE_ADDRESSES_PROVIDER_REGISTRY = "0x90C5055530C0465AbB077FA016a3699A3F53Ef99"; -const AAVE_POOL_DATA_PROVIDER = "0x2A0979257105834789bC6b9E1B00446DFbA8dFBa"; - -// Seamless lending platform is deprecated -module.exports = { - base: aaveExports("base", AAVE_ADDRESSES_PROVIDER_REGISTRY, undefined, [AAVE_POOL_DATA_PROVIDER], { v3: true }), - methodology: methodologies.lendingMarket -} diff --git a/projects/seascape/index.js b/projects/seascape/index.js deleted file mode 100644 index a7c26a3c26f..00000000000 --- a/projects/seascape/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - moonriver: { - tvl: getUniTVL({ factory: '0xD184B1317125b166f01e8a0d6088ce1de61D00BA', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/seashell/index.js b/projects/seashell/index.js deleted file mode 100644 index 82d85d1232a..00000000000 --- a/projects/seashell/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const SGLP_TOKEN = "0x5402B5F40310bDED796c7D0F3FF6683f5C0cFfdf"; -const BLUEBERRY_GLP_COMPOUNDER_CONTRACT = - "0x5BAC5eEfA13696Cf815388021235b215587263Ea"; - -module.exports = { - methodology: "Total assets in Seashell's Blueberry GLP Compounder contract", - arbitrum: { - tvl: sumTokensExport({ owner: BLUEBERRY_GLP_COMPOUNDER_CONTRACT, tokens: [SGLP_TOKEN]}), - }, -}; diff --git a/projects/seaswap/index.js b/projects/seaswap/index.js deleted file mode 100644 index 4150f3c4b9a..00000000000 --- a/projects/seaswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getSeiDexTvl } = require('../terraswap/factoryTvl') - -module.exports = { - timetravel: false, - methodology: "Liquidity on the DEX", - sei: { - tvl: getSeiDexTvl(64), - }, -}; diff --git a/projects/secretswap.js b/projects/secretswap.js deleted file mode 100644 index 89d3ffec9cf..00000000000 --- a/projects/secretswap.js +++ /dev/null @@ -1,26 +0,0 @@ -const { get } = require('./helper/http') -const { transformDexBalances } = require('./helper/portedTokens') - -async function tvl() { - var { pools } = await get('https://api-bridge-mainnet.azurewebsites.net/secretswap_pools/?page=0&size=1000') - - pools.filter(i => +i.total_share > 0).map(i => i.address) - return transformDexBalances({ - chain: 'secret', - data: pools.filter(i => +i.total_share > 0).map(i => { - return { - token0: i.assets[0].info.token?.contract_addr ?? i.assets[0].info.native_token?.denom ?? i.assets[0].info.native_token?.base_denom, - token0Bal: i.assets[0].amount, - token1: i.assets[1].info.token?.contract_addr ?? i.assets[1].info.native_token?.denom ?? i.assets[1].info.native_token?.base_denom, - token1Bal: i.assets[1].amount, - } - }), - }) -} - -module.exports = { - misrepresentedTokens: true, - secret: { - tvl - }, -} \ No newline at end of file diff --git a/projects/secta-v2/index.js b/projects/secta-v2/index.js deleted file mode 100644 index 393dd003c4b..00000000000 --- a/projects/secta-v2/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const defaultExport = { - tvl: getUniTVL({ - factory: "0x8Ad39bf99765E24012A28bEb0d444DE612903C43", - useDefaultCoreAssets: true, - }), -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: - "TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://www.secta.finance/info as the source.", - linea: defaultExport, -}; diff --git a/projects/secta-v3/index.js b/projects/secta-v3/index.js deleted file mode 100644 index f23359bd120..00000000000 --- a/projects/secta-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const factory = "0x9BD425a416A276C72a13c13bBd8145272680Cf07"; - -module.exports = uniV3Export({ - linea: { factory, fromBlock: 2388856 }, -}); diff --git a/projects/sector-fi/index.js b/projects/sector-fi/index.js deleted file mode 100644 index 866b4ff886c..00000000000 --- a/projects/sector-fi/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - ethereum: { - factory: '0xcb2e195d92e9da36ea1f186b8df09aade31a5dda', - fromBlock: 16567503, - }, - optimism: { - factory: '0x4adfe3ed020dac0ff69ca212f32be3b71185399e', - fromBlock: 75797008, - }, - arbitrum: { - factory: '0x7cf580c74d6974f4d4e7eb6edcf052770f9e2645', - fromBlock: 63190862, - }, - moonriver: { - factory: '0xc85f25eb74eaa5ad74eb6d9e8bdf686089a156d5', - fromBlock: 3673027, - }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topic: 'AddVault(address,string)', - fromBlock, - eventAbi: 'event AddVault(address vault, string vaultType)', - onlyArgs: true, - }) - - const vaults = logs.filter(i => i.vaultType === 'SCYVault' || i.vaultType === 'SCYWEpochVault').map(i => i.vault) - const bals = (await api.multiCall({ abi: 'uint256:getTvl', calls: vaults, permitFailure: true, })).map(i => i ?? 0) - const tokens = await api.multiCall({ abi: 'address:underlying', calls: vaults }) - api.addTokens(tokens, bals.map(i => i || 0)) - - // Add agg vault floats. - const aggregators = logs.filter(i => i.vaultType === 'AggregatorVault' || i.vaultType === 'AggregatorWEpochVault').map(i => i.vault) - const aggFloats = await api.multiCall({ abi: 'uint256:getFloat', calls: aggregators }) - const aggTokens = await api.multiCall({ abi: 'address:underlying', calls: aggregators }) - api.addTokens(aggTokens, aggFloats.map(i => i || 0)) - } - } -}) diff --git a/projects/securedao/index.js b/projects/securedao/index.js deleted file mode 100644 index 39406b06a9c..00000000000 --- a/projects/securedao/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {ohmTvl} = require("../helper/ohm"); - -const scr = "0x8183C18887aC4386CE09Dbdf5dF7c398DAcB2B5a"; -const treasury = "0xa39b5f217EdBDe068b4D3fA98256244ef74774a1"; -const stakingContract = "0x3d97040e407078823891C59BB07eadb2dDF3AE32" - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, [ - [ADDRESSES.fantom.MIM, false], // MIM - ["0x468c174cc015d4a697586C0a99F95E045F7e6f91", true] // scrMim SPIRIT LP - ], "fantom", stakingContract, scr, undefined, undefined, false) -} - -module.exports.deadFrom = '2022-02-01' \ No newline at end of file diff --git a/projects/securitize/index.js b/projects/securitize/index.js deleted file mode 100644 index 9c91d632c7e..00000000000 --- a/projects/securitize/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokens2, getResources } = require('../helper/chain/aptos') -const { getTokenSupplies } = require('../helper/solana'); - -const CONFIG = { - ethereum: [ - '0x7712c34205737192402172409a8f7ccef8aa2aec', // BUIDL - '0x6a9DA2D710BB9B700acde7Cb81F10F1fF8C89041' // BUIDL-I - ], - polygon: ['0x2893ef551b6dd69f661ac00f11d93e5dc5dc0e99'], // BUIDL - avax: ['0x53fc82f14f009009b440a706e31c9021e1196a2f'], // BUIDL - optimism: ['0xa1cdab15bba75a80df4089cafba013e376957cf5'], // BUIDL - arbitrum: ['0xa6525ae43edcd03dc08e775774dcabd3bb925872'], // BUIDL -} - -const tvl = async (api) => { - const tokens = CONFIG[api.chain] - const supplies = await api.multiCall({ calls: tokens, abi: 'erc20:totalSupply' }) - api.add(tokens, supplies) -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) - -module.exports.aptos = { - tvl: async (api) => { - const res = await getResources('0x50038be55be5b964cfa32cf128b5cf05f123959f286b4cc02b86cafd48945f89', api.chain) - const supply = res.find(i => i.type === '0x4de5876d8a8e2be7af6af9f3ca94d9e4fafb24b5f4a5848078d8eb08f08e808a::ds_token::TokenData').data.total_issued - api.add('ethereum:0x7712c34205737192402172409a8f7ccef8aa2aec', supply, { skipChain: true }) - } -} - - -module.exports.solana = { - tvl: async (api) => { - const mints = ['GyWgeqpy5GueU2YbkE8xqUeVEokCMMCEeUrfbtMw6phr'] - const res = await getTokenSupplies(mints, api.chain) // align with aptos style of passing api.chain - const supply = res[mints[0]] - api.add(mints[0], supply) - } -} \ No newline at end of file diff --git a/projects/securofinance/abiLci.json b/projects/securofinance/abiLci.json deleted file mode 100644 index 09d3d4c314a..00000000000 --- a/projects/securofinance/abiLci.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getAllPoolInUSD": "uint256:getAllPoolInUSD" -} \ No newline at end of file diff --git a/projects/securofinance/index.js b/projects/securofinance/index.js deleted file mode 100644 index 9c2844cc9de..00000000000 --- a/projects/securofinance/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const abiLci = require("./abiLci.json"); - -const config = { - bsc: { - vaults: { - LCIBsc: "0x8FD52c2156a0475e35E0FEf37Fa396611062c9b6", - } - }, - aurora: { - vaults: { - BNIAurora: "0x72eB6E3f163E8CFD1Ebdd7B2f4ffB60b6e420448", - } - }, - polygon: { - vaults: { - BNIPolygon: "0xF9258759bADb75a9eAb16933ADd056c9F4E489b6", - } - }, - avax: { - vaults: { - MWIAvalanche: "0x5aCBd5b82edDae114EC0703c86d163bD0107367c", - BNIAvalanche: "0xe76367024ca3AEeC875A03BB395f54D7c6A82eb0", - } - }, -} - - -module.exports = { - misrepresentedTokens: true, - methodology: "We count total value in different strategy vaults", -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const vaults = Object.values(config[chain].vaults) - const balances = await api.multiCall({ abi: "uint256:getAllPoolInUSD", calls: vaults, }) - api.addUSDValue(balances.reduce((acc, i) => acc + +Math.round(i / 1e18), 0)) - } - } -}) diff --git a/projects/sedge/index.js b/projects/sedge/index.js deleted file mode 100644 index d71350a29f1..00000000000 --- a/projects/sedge/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') - -const LIQUIDITY_POOLS = [ - '0x3fb5e30D3cE5f3f194c90a2689B1fD20C82F1637', // CADC/USDC - '0x86fFFd464875581A0f4b7b2Ea1187C74C6FB9FBa', //EURC/USDC - '0xc015f66ad7780dF4D73F99c5cEe415Eb6B26aCB0' //IDRX/USDC -]; - -const TOKENS = [ - ADDRESSES.base.USDC, - '0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42', //EURC - '0x043eB4B75d0805c43D7C834902E335621983Cf03', //CADC - '0x18Bc5bcC660cf2B9cE3cd51a404aFe1a0cBD3C22' //IDRX -]; - -module.exports = { - methodology: `TVL is comprised of tokens locked in sedge's liquidty pools`, - base: { tvl: sumTokensExport({ owners: LIQUIDITY_POOLS, tokens: TOKENS }) } -} \ No newline at end of file diff --git a/projects/seeder/abi.json b/projects/seeder/abi.json deleted file mode 100644 index dfd24a074b8..00000000000 --- a/projects/seeder/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "getAllFarms": "function getAllFarms() view returns (tuple(address stakeToken, uint256 allocationPoint, uint256 lastUpdateBlock, uint256 rewardPerStakeWithBuffer)[])", - "symbol": "string:symbol", - "getIBPrice": "function getIBPrice(address originToken) view returns (uint256 ibPriceWithPrecision, uint256 precision)", - "getNativeIBPrice": "function getNativeIBPrice() view returns (uint256 ibPriceWithPrecision, uint256 precision)" -} \ No newline at end of file diff --git a/projects/seeder/index.js b/projects/seeder/index.js deleted file mode 100644 index 12151eca8eb..00000000000 --- a/projects/seeder/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const farmContract = "0x1aF28E7b1A03fA107961897a28449F4F9768ac75"; - -const bscTvl = async (api) => { - const getAllFarms = (await api.call({ abi: abi.getAllFarms, target: farmContract, })).map((st) => st.stakeToken); - return sumTokens2({ api, resolveLP: true, owner: farmContract, tokens: getAllFarms}) -}; - -module.exports = { - bsc: { - tvl: bscTvl, - }, - methodology: - "We count liquidity on the Farms through Farm Contract", -}; diff --git a/projects/seedfi-amm/index.js b/projects/seedfi-amm/index.js deleted file mode 100644 index 3b5f6759b3a..00000000000 --- a/projects/seedfi-amm/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - sseed: '0x76454AC9dF69875443D492128D059cE6e1A9091F' -}) \ No newline at end of file diff --git a/projects/seedfi-perp/index.js b/projects/seedfi-perp/index.js deleted file mode 100644 index 8a06304b72d..00000000000 --- a/projects/seedfi-perp/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const USDCE = ADDRESSES.sseed.USDC -const OUSDT = ADDRESSES.sseed.oUSDT - -const SPLP = "0x6B1fcc8eCb7832E720D5ed13fb4F4c249F88b833"; -function tvl(api) { - return sumTokens2({ api, owners: [SPLP], tokens: [USDCE, OUSDT] }) -} - -module.exports = { - sseed: { - tvl, - } -} - diff --git a/projects/seedify/index.js b/projects/seedify/index.js deleted file mode 100644 index 13404ce1eba..00000000000 --- a/projects/seedify/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const { pool2 } = require("../helper/pool2"); -const { stakings } = require("../helper/staking"); - -const SFUND = { - bsc: "0x477bC8d23c634C154061869478bce96BE6045D12", - arbitrum: "0x560363bda52bc6a44ca6c8c9b4a5fadbda32fa60", - ethereum: "0x560363bda52bc6a44ca6c8c9b4a5fadbda32fa60" -} - -const pool2Token = "0x74fa517715c4ec65ef01d55ad5335f90dce7cc87"; -const pool2Holder = "0x1F10564BAD9367CfF4247A138eBbA9a9aaeb789E"; - -const stakingContracts = { - bsc: [ - { - address: '0xb667c499b88AC66899E54e27Ad830d423d9Fba69', // 7day - token: SFUND - }, { - address: '0x027fC3A49383D0E7Bd6b81ef6C7512aFD7d22a9e', // 14day - token: SFUND - }, { - address: '0x8900475BF7ed42eFcAcf9AE8CfC24Aa96098f776', // 30day - token: SFUND - }, { - address: '0x66b8c1f8DE0574e68366E8c4e47d0C8883A6Ad0b', // 60day - token: SFUND - }, { - address: '0x5745b7E077a76bE7Ba37208ff71d843347441576', // 90day - token: SFUND - }, - { - address: '0xf420f0951f0f50f50c741f6269a4816985670054', // 180day - token: SFUND - }, - { - address: '0x60b9f788f4436f0b5c33785b3499b2ee1d8dbfd4', // 30day - token: SFUND - }, { - address: '0x5b384955ac3460c996402bf03736624a33e55273', // 90day - token: SFUND - }, { - address: '0xd01650999bb5740f9bb41168401e9664b28ff47f', // 180day - token: SFUND - }, { - address: '0x89aaab217272c89da91825d9effbe65ded384859', // 270day - token: SFUND - }, { - address: '0x71d058369d39a8488d8e9f5fd5b050610ca788c0', // FARM - token: SFUND - }, - ], - arbitrum: [ - { - address: '0x1d22275d58a836f8307c306110deafe22e360877', // 30day - token: SFUND - }, { - address: '0xaae4355b30e18879a12e4e22283da901af47d6cd', // 90day - token: SFUND - }, { - address: '0x9f07a4cf035f14c0160db2d7d94eb5a41f114805', // 180day - token: SFUND - }, { - address: '0xc30be140f8ada0fdb0c97377c98ddbe8b343679a', // 270day - token: SFUND - }, { - address: '0xc30be140f8ada0fdb0c97377c98ddbe8b343679a', // FARM - token: SFUND - } - ], - ethereum:[ - { - address: '0x1d22275d58a836f8307c306110deafe22e360877', // 30day - token: SFUND - }, { - address: '0xbcc572d3f2f619b082794a96a848a23c2a752fcf', // 90day - token: SFUND - }, { - address: '0x453bbf5ad5011a89390a1e96042a19d5f4892754', // 180day - token: SFUND - }, { - address: '0x569399bfca76e7664cec6510adc75f2811be2c5c', // 270day - token: SFUND - }, { - address: '0x92572249d487a99c0ed746ee36aaf22a66c4ab67', // FARM - token: SFUND - }, - ] -}; - -module.exports = {} -Object.keys(stakingContracts).forEach(chain => { - module.exports[chain] = { - tvl: () => ({}), - pool2: chain === "bsc" ? pool2(pool2Holder, pool2Token) : () => ({}), - staking: stakings(stakingContracts[chain].map(i => i.address), SFUND[chain]) - } -}); \ No newline at end of file diff --git a/projects/seer/index.js b/projects/seer/index.js deleted file mode 100644 index beaf9a6c02b..00000000000 --- a/projects/seer/index.js +++ /dev/null @@ -1,468 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const config = { - 'ethereum': { - marketFactory: ['0x1F728c2fD6a3008935c1446a965a313E657b7904'], - marketView: '0xAb797C4C6022A401c31543E316D3cd04c67a87fC', - collateralToken: ADDRESSES.ethereum.SDAI, - conditionalTokens: '0xC59b0e4De5F1248C1140964E0fF287B192407E0C', - poolFactory: '0x1F98431c8aD98523631AE4a59f267346ea31F984' - }, - 'xdai': { - marketFactory: ['0x83183DA839Ce8228E31Ae41222EaD9EDBb5cDcf1'], - futarchyFactory: '0xa6cb18fcdc17a2b44e5cad2d80a6d5942d30a345', // Futarchy markets with multiple collaterals - marketView: '0x995dC9c89B6605a1E8cc028B37cb8e568e27626f', - collateralToken: ADDRESSES.xdai.SDAI, - conditionalTokens: '0xCeAfDD6bc0bEF976fdCd1112955828E00543c0Ce', - poolFactory: '0xA0864cCA6E114013AB0e27cbd5B6f4c8947da766' - }, -} - -const MARKET_VIEW_ABI = - 'function getMarket(address marketFactory, address market) public view returns (tuple(address id, string marketName, string[] outcomes, address parentMarket, uint256 parentOutcome, address[] wrappedTokens, uint256 outcomesSupply, uint256 lowerBound, uint256 upperBound, bytes32 parentCollectionId, bytes32 conditionId, bytes32 questionId, uint256 templateId, tuple(bytes32 content_hash, address arbitrator, uint32 opening_ts, uint32 timeout, uint32 finalize_ts, bool is_pending_arbitration, uint256 bounty, bytes32 best_answer, bytes32 history_hash, uint256 bond, uint256 min_bond)[] questions, bytes32[] questionsIds, string[] encodedQuestions,bool payoutReported) memory)' -const ETH_GET_POOL_ABI = 'function getPool(address token1, address token0, uint24 fee) external view returns (address pool)' -const XDAI_GET_POOL_ABI = 'function poolByPair(address token1, address token0) external view returns (address pool)' - -async function tvl(api) { - const { marketFactory, futarchyFactory, marketView, collateralToken, conditionalTokens } = config[api.chain] - // get all markets - const markets = await api.multiCall({ abi: 'address[]:allMarkets', calls: marketFactory }) - const dataCalls = markets.map((v, i) => { - return v.map(val => ({ params: [marketFactory[i], val] })) - }).flat() - - /* - * marketsData is an array of objects with the following structure: - * - id - * - parentMarket - * - parentOutcome - * - wrappedTokens - * - outcomesSupply - * - conditionId - * - payoutReported - */ - const marketsData = (await api.multiCall({ abi: MARKET_VIEW_ABI, calls: dataCalls, target: marketView })).map(market => ({ - id: market.id, - parentMarket: market.parentMarket, - parentOutcome: market.parentOutcome, - parentCollectionId: market.parentCollectionId, - wrappedTokens: market.wrappedTokens, - outcomesSupply: (market.wrappedTokens ?? []).map(_ => 0), - conditionId: market.conditionId, - payoutReported: market.payoutReported, - })) - - // Fetch token supplies (deduplicated to avoid redundant calls for shared tokens) - const uniqueTokens = new Set() - const tokenToMarkets = new Map() - marketsData.forEach((market, marketIdx) => { - market.wrappedTokens.forEach((token, outcomeIdx) => { - uniqueTokens.add(token) - if (!tokenToMarkets.has(token)) { - tokenToMarkets.set(token, []) - } - tokenToMarkets.get(token).push({ marketIdx, outcomeIdx }) - }) - }) - - const uniqueTokenArray = Array.from(uniqueTokens) - const supplies = await api.multiCall({ - abi: 'erc20:totalSupply', - calls: uniqueTokenArray, - permitFailure: true // Allow individual failures - }) - - supplies.forEach((supply, i) => { - if (!supply) return // Skip failed calls - const token = uniqueTokenArray[i] - const marketMappings = tokenToMarkets.get(token) || [] - - marketMappings.forEach(({ marketIdx, outcomeIdx }) => { - marketsData[marketIdx].outcomesSupply[outcomeIdx] = BigInt(supply) - }) - }) - - // Process resolved markets - fetch payout data from ConditionalTokens - await fetchPayoutData(api, marketsData, conditionalTokens) - - const totalSupply = calculateTotalSupply(marketsData); - api.add(collateralToken, totalSupply); - - // Add futarchy market TVL (Gnosis chain only) - if (futarchyFactory && api.chain === 'xdai') { - try { - await processFutarchyMarkets(api, futarchyFactory) - } catch (error) { - // Silent fail - futarchy markets are optional - } - } - - // Add pool TVL - await processPoolTVL(api, uniqueTokenArray, collateralToken) -} - -async function processPoolTVL(api, wrappedTokens, collateralToken) { - let pools = [] - if (api.chain == 'ethereum') { - // check all fee tiers 500, 3000, 10000 for pools - // use multicall to get all pools - const callsPools500 = wrappedTokens.map(token => ({ target: config[api.chain].poolFactory, params: [collateralToken, token, 500] })) - const callsPools3000 = wrappedTokens.map(token => ({ target: config[api.chain].poolFactory, params: [collateralToken, token, 3000] })) - const callsPools10000 = wrappedTokens.map(token => ({ target: config[api.chain].poolFactory, params: [collateralToken, token, 10000] })) - const allCalls = [...callsPools500, ...callsPools3000, ...callsPools10000] - // now batch these calls in a big multicall - pools = await api.multiCall({ abi: ETH_GET_POOL_ABI, calls: allCalls }) - } else if (api.chain == 'xdai') { - pools = await api.multiCall({ abi: XDAI_GET_POOL_ABI, calls: wrappedTokens.map(token => ({ target: config[api.chain].poolFactory, params: [collateralToken, token] })) }) - } - // filter out zero addresses - const nonZeroPools = pools.filter(pool => pool !== ADDRESSES.null) - // read the collateral token balance of the non-zero pool - // we don't count the outcome token since we already counted it in the total supply calculation in the TVL calculation - const poolCollateralBalances = await api.multiCall({ abi: 'erc20:balanceOf', calls: nonZeroPools.map(pool => ({ target: collateralToken, params: [pool] })) }) // now add the supply of the collateral token to the pool TVL - const poolTVL = poolCollateralBalances.reduce((acc, balance) => acc + BigInt(balance), 0n) - api.add(collateralToken, poolTVL) -} - -/** - * Fetches payout data for resolved markets from ConditionalTokens - */ -async function fetchPayoutData(api, marketsData, conditionalTokens) { - // Filter for markets that are reported as resolved - const resolvedMarkets = marketsData.filter(m => - m.payoutReported && - m.conditionId !== '0x0000000000000000000000000000000000000000000000000000000000000000' - ) - - if (resolvedMarkets.length === 0) return - - // Step 1: Check which markets have valid payout denominators - const denominatorCalls = resolvedMarkets.map(m => ({ - target: conditionalTokens, - params: [m.conditionId] - })) - - const payoutDenominators = await api.multiCall({ - abi: 'function payoutDenominator(bytes32) view returns (uint256)', - calls: denominatorCalls, - permitFailure: true - }) - - // Filter markets with valid denominators - const marketsWithPayouts = [] - resolvedMarkets.forEach((market, i) => { - const denominator = payoutDenominators[i] - if (denominator && BigInt(denominator) > 0n) { - market.payoutDenominatorBig = BigInt(denominator) - marketsWithPayouts.push(market) - } - }) - - if (marketsWithPayouts.length === 0) return - - // Step 2: Batch fetch all payout numerators - const numeratorCalls = [] - const callMapping = [] // Maps each call back to market and outcome - - marketsWithPayouts.forEach((market) => { - const outcomeCount = market.wrappedTokens?.length || 0 - for (let outcomeIdx = 0; outcomeIdx < outcomeCount; outcomeIdx++) { - numeratorCalls.push({ - target: conditionalTokens, - params: [market.conditionId, outcomeIdx] - }) - callMapping.push({ market, outcomeIdx }) - } - }) - - if (numeratorCalls.length === 0) return - - const numeratorResults = await api.multiCall({ - abi: 'function payoutNumerators(bytes32, uint256) view returns (uint256)', - calls: numeratorCalls, - permitFailure: true - }) - - // Step 3: Organize numerators by market - marketsWithPayouts.forEach(market => { - market.payoutNumeratorsBig = [] - }) - - numeratorResults.forEach((result, i) => { - const { market, outcomeIdx } = callMapping[i] - market.payoutNumeratorsBig[outcomeIdx] = result ? BigInt(result) : 0n - }) -} - -/** - * Calculates total TVL for regular Seer markets. - * Handles hierarchical markets where child markets use parent outcome tokens as collateral. - * Ensures accurate TVL by: - * - Including child market supplies in parent outcomes (recursive bubbling) - * - Deduplicating shared wrapped tokens (CREATE2 deterministic addresses) - * - Weighting resolved markets by payout ratios - * - Only counting root markets that hold actual sDAI - */ -function calculateTotalSupply(marketsData) { - // Build parent-child relationships for efficient lookup - const childrenByParent = new Map() - marketsData.forEach(market => { - if (market.parentMarket && market.parentMarket !== ADDRESSES.null) { - if (!childrenByParent.has(market.parentMarket)) { - childrenByParent.set(market.parentMarket, []) - } - childrenByParent.get(market.parentMarket).push(market) - } - }) - - // Recursively calculate effective supply for a market including child markets - function getEffectiveSupplyWithChildren(market) { - const supplies = [...market.outcomesSupply] // Clone to avoid mutation - - // Add supplies from child markets to the corresponding parent outcome - const children = childrenByParent.get(market.id) || [] - children.forEach(child => { - // Recursively get child's effective supply (including its own children) - const childEffectiveSupply = getEffectiveSupplyWithChildren(child) - // Add to parent's outcome that child is conditional on - const parentOutcome = child.parentOutcome - if (typeof parentOutcome === 'number' && parentOutcome >= 0 && parentOutcome < supplies.length) { - supplies[parentOutcome] = (supplies[parentOutcome] || 0n) + childEffectiveSupply - } - }) - - // Calculate market's effective supply based on resolution status - if (market.payoutReported && market.payoutNumeratorsBig && market.payoutDenominatorBig > 0n) { - // Resolved: weight by payout ratios - let weighted = 0n - supplies.forEach((supply, i) => { - const numerator = market.payoutNumeratorsBig[i] || 0n - if (supply > 0n && numerator > 0n) { - weighted += (supply * numerator) / market.payoutDenominatorBig - } - }) - return weighted - } else { - // Unresolved: all outcomes represent equal collateral - return supplies.reduce((max, supply) => supply > max ? supply : max, 0n) - } - } - - let totalSupply = 0n - const processedMarkets = new Set() - - marketsData.forEach(market => { - if (!market.wrappedTokens || market.wrappedTokens.length === 0) return - - // Only count root markets (they hold the actual sDAI) - if (market.parentMarket !== ADDRESSES.null) return - - // Deduplicate markets by their unique wrapped token set - // Markets with same wrapped tokens are duplicates (CREATE2 deterministic addresses) - const marketId = [...market.wrappedTokens].sort().join('|') - if (processedMarkets.has(marketId)) return - processedMarkets.add(marketId) - - // Calculate total including child market supplies - totalSupply += getEffectiveSupplyWithChildren(market) - }) - - return totalSupply -} - -/** - * Processes futarchy markets with dual collateral tokens. - * Futarchy markets have 4 wrapped outcomes but only 2 resolution states (YES/NO). - * For resolved markets, only winning outcomes contribute to TVL. - */ -async function processFutarchyMarkets(api, futarchyFactory) { - // Get the total count of futarchy proposals - let marketsCount = await api.call({ - abi: 'function marketsCount() view returns (uint256)', - target: futarchyFactory - }) - - if (!marketsCount || marketsCount === 0) return - - // Fetch all futarchy proposals efficiently - const proposalCalls = Array.from({ length: Number(marketsCount) }, (_, i) => ({ - target: futarchyFactory, - params: [i] - })) - - const proposals = await api.multiCall({ - abi: 'function proposals(uint256) view returns (address)', - calls: proposalCalls, - permitFailure: true - }) - - const futarchyMarkets = proposals.filter(Boolean) - if (futarchyMarkets.length === 0) return - - // Fetch collateral tokens and condition IDs for each market - const [token1Calls, token2Calls, conditionIdCalls] = await Promise.all([ - api.multiCall({ - abi: 'function collateralToken1() view returns (address)', - calls: futarchyMarkets, - permitFailure: true - }), - api.multiCall({ - abi: 'function collateralToken2() view returns (address)', - calls: futarchyMarkets, - permitFailure: true - }), - api.multiCall({ - abi: 'function conditionId() view returns (bytes32)', - calls: futarchyMarkets, - permitFailure: true - }) - ]) - - // Get wrapped tokens and their supplies - const wrappedTokenCalls = futarchyMarkets.flatMap(market => - [0, 1, 2, 3].map(i => ({ target: market, params: [i] })) - ) - - const wrappedTokens = await api.multiCall({ - abi: 'function wrappedOutcome(uint256) view returns (address)', - calls: wrappedTokenCalls, - permitFailure: true - }) - - // Get supplies for all wrapped tokens - const validTokens = wrappedTokens.filter(Boolean) - if (validTokens.length === 0) return - - const supplies = await api.multiCall({ - abi: 'erc20:totalSupply', - calls: validTokens, - permitFailure: true - }) - - // Check resolution status for all markets with valid condition IDs - const conditionalTokens = '0xCeAfDD6bc0bEF976fdCd1112955828E00543c0Ce' // ConditionalTokens on Gnosis - const validConditionIds = conditionIdCalls.filter(id => id && id !== '0x0000000000000000000000000000000000000000000000000000000000000000') - - // Fetch payout denominators to check resolution status - const payoutDenominators = await api.multiCall({ - abi: 'function payoutDenominator(bytes32) view returns (uint256)', - calls: validConditionIds.map(id => ({ target: conditionalTokens, params: [id] })), - permitFailure: true - }) - - // For resolved markets, fetch the payout numerators (only 2 outcomes for futarchy: YES/NO) - const resolvedMarketIndices = [] - const numeratorCalls = [] - - validConditionIds.forEach((conditionId, idx) => { - if (payoutDenominators[idx] && BigInt(payoutDenominators[idx]) > 0n) { - resolvedMarketIndices.push(idx) - // Binary resolution: YES (index 0) or NO (index 1) - numeratorCalls.push({ target: conditionalTokens, params: [conditionId, 0] }) // YES - numeratorCalls.push({ target: conditionalTokens, params: [conditionId, 1] }) // NO - } - }) - - const payoutNumerators = numeratorCalls.length > 0 ? await api.multiCall({ - abi: 'function payoutNumerators(bytes32, uint256) view returns (uint256)', - calls: numeratorCalls, - permitFailure: true - }) : [] - - // Track TVL by collateral token - const collateralTVL = new Map() - const processedMarkets = new Set() // Avoid double-counting shared markets - - // Process each futarchy market - for (let i = 0; i < futarchyMarkets.length; i++) { - const collateralToken1 = token1Calls[i] - const collateralToken2 = token2Calls[i] - const conditionId = conditionIdCalls[i] - - if (!collateralToken1 || !collateralToken2 || !conditionId) continue - - // Skip if we've already processed this market - // Futarchy markets don't have parentCollectionId, so we use conditionId + collateral tokens - const marketId = `${conditionId}|${collateralToken1}|${collateralToken2}` - if (processedMarkets.has(marketId)) continue - processedMarkets.add(marketId) - - // Get supplies for this market's 4 outcomes - const marketSupplies = [] - for (let j = 0; j < 4; j++) { - const tokenIdx = i * 4 + j - if (tokenIdx < wrappedTokens.length && wrappedTokens[tokenIdx]) { - const supplyIdx = validTokens.indexOf(wrappedTokens[tokenIdx]) - if (supplyIdx >= 0 && supplies[supplyIdx]) { - marketSupplies.push(BigInt(supplies[supplyIdx])) - } else { - marketSupplies.push(0n) - } - } else { - marketSupplies.push(0n) - } - } - - // Check if market is resolved - const conditionIdx = validConditionIds.indexOf(conditionId) - const isResolved = conditionIdx >= 0 && payoutDenominators[conditionIdx] && BigInt(payoutDenominators[conditionIdx]) > 0n - - if (isResolved) { - // Market is resolved - check which outcome won (YES or NO) - const resolvedIdx = resolvedMarketIndices.indexOf(conditionIdx) - if (resolvedIdx < 0) continue // Safety check - - const yesNumerator = payoutNumerators[resolvedIdx * 2] ? BigInt(payoutNumerators[resolvedIdx * 2]) : 0n - const noNumerator = payoutNumerators[resolvedIdx * 2 + 1] ? BigInt(payoutNumerators[resolvedIdx * 2 + 1]) : 0n - - if (yesNumerator > 0n) { - // YES won - outcomes 0 and 2 are redeemable - if (marketSupplies[0] > 0n) { - const current1 = collateralTVL.get(collateralToken1) || 0n - collateralTVL.set(collateralToken1, current1 + marketSupplies[0]) - } - if (marketSupplies[2] > 0n) { - const current2 = collateralTVL.get(collateralToken2) || 0n - collateralTVL.set(collateralToken2, current2 + marketSupplies[2]) - } - } else if (noNumerator > 0n) { - // NO won - outcomes 1 and 3 are redeemable - if (marketSupplies[1] > 0n) { - const current1 = collateralTVL.get(collateralToken1) || 0n - collateralTVL.set(collateralToken1, current1 + marketSupplies[1]) - } - if (marketSupplies[3] > 0n) { - const current2 = collateralTVL.get(collateralToken2) || 0n - collateralTVL.set(collateralToken2, current2 + marketSupplies[3]) - } - } - } else { - // Unresolved market - use max supply approach - // Outcomes 0-1 are for collateralToken1 - if (marketSupplies[0] + marketSupplies[1] > 0n) { - const maxSupply1 = marketSupplies[0] > marketSupplies[1] ? marketSupplies[0] : marketSupplies[1] - const current1 = collateralTVL.get(collateralToken1) || 0n - collateralTVL.set(collateralToken1, current1 + maxSupply1) - } - - // Outcomes 2-3 are for collateralToken2 - if (marketSupplies[2] + marketSupplies[3] > 0n) { - const maxSupply2 = marketSupplies[2] > marketSupplies[3] ? marketSupplies[2] : marketSupplies[3] - const current2 = collateralTVL.get(collateralToken2) || 0n - collateralTVL.set(collateralToken2, current2 + maxSupply2) - } - } - } - - // Add each collateral token to the API - for (const [token, amount] of collateralTVL) { - if (amount > 0n) { - api.add(token, amount) - } - } -} - -module.exports = { - ethereum: { tvl }, - xdai: { tvl }, - methodology: 'TVL counts collateral locked in Seer prediction markets. Futarchy markets with dual collaterals are counted separately by token type. Resolved markets are weighted by payout ratios.', -} diff --git a/projects/segment-finance/index.js b/projects/segment-finance/index.js deleted file mode 100644 index 69aa565b7d8..00000000000 --- a/projects/segment-finance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - op_bnb: compoundExports2({ comptroller: "0x71ac0e9A7113130280040d0189d0556f45a8CBB5", cether: "0x7e844423510A5081DE839e600F7960C7cE84eb82", }), - bsc: { - ...compoundExports2({ - comptroller: "0x57E09c96DAEE58B77dc771B017de015C38060173", - cether: "0x5fcea94b96858048433359bb5278a402363328c3", - }) - }, - bob: compoundExports2({ comptroller: "0xcD7C4F508652f33295F0aEd075936Cd95A4D2911", cether: '0xd7c6cc5aef7396182c5d7ebdac66ff674f3ddcf4' }), - rsk: compoundExports2({ comptroller: "0x2eea8fbA494d5008ba72f80E0091Cc74dB5f9926", cether: '0x8F9958ec0FeeccCf0feC871B7bBB3D8d0B7A4D3c' }), - core: compoundExports2({ comptroller: "0xaba65b87eBEdB2D753b37AeCECD1E168341eE0DD", cether: '0xb57A4b3ccE8d999A1e6B0357c0a31C3808401B42' }), - bsquared: compoundExports2({ comptroller: "0x69a6B3B96b26a15A588081Df17F46d61f625741c", cether: '0xEff5cD04B461247F5008b35074F45Ba0f0b11eFf' }), -}; diff --git a/projects/seismic/index.js b/projects/seismic/index.js deleted file mode 100644 index 4e1501c3f55..00000000000 --- a/projects/seismic/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { aaveExports, methodology } = require("../helper/aave"); - -module.exports = { - methodology, - blast: aaveExports("blast", "0xEEcA436A6d4AfF6f0d55d71e9B1C271AbF511Cd0"), -}; diff --git a/projects/selfex/index.js b/projects/selfex/index.js deleted file mode 100644 index 87b66f478c8..00000000000 --- a/projects/selfex/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const chains = ['kava'] - -const USDk = '0x472402d47da0587c1cf515dafbafc7bce6223106' -const KFT = "0xa0eeda2e3075092d66384fe8c91a1da4bca21788" -const kBRISE = '0xea616011e5ac9a5b91e22cac59b4ec6f562b83f9' - -module.exports = { - misrepresentedTokens: true, - methodology: "Using DefiLlama's SDK for making on-chain calls to Selfex Factory Contract to iterate over Liquidity Pools & count token balances therein.", -}; - -chains.forEach(chain => { - module.exports[chain] = { tvl: getUniTVL({ factory: '0x98a3567692Eb055fA1F05D616cad494DE9B05512', useDefaultCoreAssets: true, blacklistedTokens: [KFT, USDk, kBRISE] }) } -}) diff --git a/projects/sendit/index.js b/projects/sendit/index.js deleted file mode 100644 index 525ff0d1f11..00000000000 --- a/projects/sendit/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { sumTokens2, decodeAccount, getMultipleAccounts, } = require("../helper/solana"); -const { getConfig } = require('../helper/cache') -const { PublicKey } = require("@solana/web3.js"); - -const senditConfigEndpoint = "https://backend.sendit.fun/api/accounts/assets?limit=1000"; -const senditProgramId = new PublicKey("SenditXmUCHPeV6iyFoMY8dRNB4PofGKTfp52hEWpJx") - -async function borrowed(api) { - const response = (await getConfig('sendit', senditConfigEndpoint)) - const assets = response.data.assets - const reserves = [] - - for (const asset of assets) { - for (const market of asset.markets) { - reserves.push(market.solReserve.address) - reserves.push(market.nonSolReserve.address) - } - } - - const infos = await getMultipleAccounts(reserves) - infos.forEach(i => { - const reserve = decodeAccount('senditReserve', i) - const amount = reserve.liquidityBorrowedAmountWads.toString() / 1e18 - api.add(reserve.liquidityMintPubkey.toString(), amount) - }) -} - -async function tvl() { - const response = (await getConfig('sendit', senditConfigEndpoint)) - const assets = response.data.assets - const markets = [] - - for (const asset of assets) { - for (const market of asset.markets) { - markets.push({ lendingMarketId: market.lendingMarketId }) - } - } - - return sumTokens2({ owners: markets.map(i => PublicKey.findProgramAddressSync([new PublicKey(i.lendingMarketId).toBuffer()], senditProgramId)[0]) }); -} - -module.exports = { - timetravel: false, - solana: { - tvl, - borrowed, - }, - methodology: - "TVL consists of deposits made to the protocol and like other lending protocols, borrowed tokens are not counted.", -}; - diff --git a/projects/seneca/index.js b/projects/seneca/index.js deleted file mode 100644 index 90681437255..00000000000 --- a/projects/seneca/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { staking } = require('../helper/staking'); - -const stakingContract = '0x0bD623E8150918b4252a1df407B914250AcE4CC6'; -const senToken = '0x154388a4650D63acC823e06Ef9e47C1eDdD3cBb2'; - -const config = { - arbitrum: { chambers: ['0x2d99E1116E73110B88C468189aa6AF8Bb4675ec9', '0x4D7b1A1900b74ea4b843a5747740F483152cbA5C', '0x7C160FfE3741a28e754E018DCcBD25dB04B313AC',], lens: '0x5c6cBA80e5FA3c8D9FD53F17d6F5a7A2EDb5fC8C', }, - ethereum: { chambers: ['0xBC83F2711D0749D7454e4A9D53d8594DF0377c05', '0x65c210c59B43EB68112b7a4f75C8393C36491F06'], lens: '0x9cae6d5a09E4860AfCD1DF144250dd02A014DF15', }, -} - -module.exports = { - doublecounted: true, - methodology: 'Counts the TVL of SEN tokens staked in the staking contracts and the total collateral in chambers across Arbitrum and Ethereum.', -}; - -Object.keys(config).forEach(chain => { - const { chambers } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:collateral', calls: chambers }) - const bals = await api.multiCall({ abi: 'uint256:totalCollateralShare', calls: chambers }) - api.add(tokens, bals) - return api.getBalances() - } - } -}) - -module.exports.arbitrum.staking = staking(stakingContract, senToken) \ No newline at end of file diff --git a/projects/senpai/index.js b/projects/senpai/index.js deleted file mode 100644 index 4628fe7f3d4..00000000000 --- a/projects/senpai/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {ohmTvl} = require('../helper/ohm') - -const transforms = { - [ADDRESSES.boba.DAI]: ADDRESSES.ethereum.DAI, - [ADDRESSES.boba.USDC]: ADDRESSES.ethereum.USDC, -} - -module.exports={ - ...ohmTvl("0xbfFC76cDC85A496404662dc7D8A270cE9567C544", [ - [ADDRESSES.boba.DAI, false], //dai - ["0xF582bC0437a1F1D0476f3a0c8efeEc8d05E6bc96", true], - ["0x32fDfeA5CdCe7E417818ed5093E8bD4cA85dfE06", true], - [ADDRESSES.boba.USDC, false] //usdc - ], "boba", "0xAECFc89Da2f125D893Da6Fb6d157b5DfF1F0aD9E", - "0xaC3a4aF1778203c8B651dAfA73cEd5b79c80F239", addr=> - transforms[addr.toLowerCase()] , - undefined, false) -} -module.exports.deadFrom = '2022-01-16' \ No newline at end of file diff --git a/projects/sense/index.js b/projects/sense/index.js deleted file mode 100644 index ea16180387d..00000000000 --- a/projects/sense/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); -const { nullAddress } = require("../helper/unwrapLPs"); -const { getLogs } = require("../helper/cache/getLogs"); - -const DIVIDER = "0x86bA3E96Be68563E41c2f5769F1AF9fAf758e6E0"; -const SPACE_FACTORY = "0x9e629751b3FE0b030C219e567156adCB70ad5541"; -const BALANCER_VAULT = "0xBA12222222228d8Ba445958a75a0704d566BF2C8"; -const DIVIDER_INIT_BLOCK = 14427177; -const DIVIDER_INIT_TS = 1647831440; - -// Converts a bytes32 into an address or, if there is more data, slices an address out of the first 32 byte word -const toAddress = (data) => `0x${data.slice(64 - 40 + 2, 64 + 2)}`; - -async function tvl(api) { - const block = api.block - const seriesLogs = await getLogs({ - target: DIVIDER, - topic: "SeriesInitialized(address,uint256,address,address,address,address)", - api, - fromBlock: DIVIDER_INIT_BLOCK, - }); - - const series = seriesLogs.reduce((acc, cur) => { - const adapter = toAddress(cur.data); - const maturity = parseInt(cur.topics[1]); // safe to parse uint32 timestamp - if (acc[adapter]) { - acc[adapter].push(maturity); - acc[adapter].sort(); - return acc; - } else { - return { ...acc, [adapter]: [maturity] }; - } - }, {}); - const adapters = Object.keys(series).filter(i => i.toLowerCase() !== '0x0ed600eecf445b71ae3f8170cd368439e2739289'); - - const targets = await api.multiCall({ abi: abi.target, calls: adapters, }); - const underlyings = await api.multiCall({ abi: abi.underlying, calls: adapters, }); - const scales = await api.multiCall({ abi: abi.scale, calls: adapters, }); - - const targetDecimals = await api.multiCall({ abi: "erc20:decimals", calls: targets, }); - const underlyingDecimals = await api.multiCall({ abi: "erc20:decimals", calls: underlyings, }); - - const adapterTargetCache = {}; - const adapterUnderlyingCache = {}; - const adapterScaleCache = {}; - const adapterDecimalDeltaCache = {}; - - targets.forEach((i, idx) => (adapterTargetCache[adapters[idx]] = i)); - underlyings.forEach((i, idx) => (adapterUnderlyingCache[adapters[idx]] = i)); - scales.forEach((i, idx) => (adapterScaleCache[adapters[idx]] = i)); - - const adapterTargetBalances = await api.multiCall({ - abi: "erc20:balanceOf", - calls: adapters.map((i, idx) => ({ target: targets[idx], params: i })), - }); - - adapterTargetBalances.forEach((i, idx) => { - const adapterAddress = adapters[idx] - const targetAddress = adapterTargetCache[adapterAddress]; - const underlyingAddress = adapterUnderlyingCache[adapterAddress]; - - const scale = adapterScaleCache[adapterAddress]; - - const targetDec = targetDecimals.find((j, idx) => targets[idx] === targetAddress) - const underlyingDec = underlyingDecimals.find((j, idx) => underlyings[idx] === underlyingAddress) - const adapterDecimalDelta = parseInt(targetDec) - parseInt(underlyingDec); - adapterDecimalDeltaCache[adapterAddress] = adapterDecimalDelta; - - const underlyingBalance = new BigNumber(i) - .times(scale) // always 18 decimals - .div(`1e${18 + adapterDecimalDelta}`) // convert to underlying decimals (take out 18 from scale multiplication, then add or subtract based tDecimals - uDecimals) - .toFixed(0); - - api.add(underlyingAddress, underlyingBalance); - }); - - const poolCalls = Object.entries(series).filter(([i]) => i.toLowerCase() !== '0x0ed600eecf445b71ae3f8170cd368439e2739289') - .map(([addr, maturities]) => maturities.map((m) => ({ params: [addr, m] }))) - .flat(); - - let poolAddresses = await api.multiCall({ target: SPACE_FACTORY, abi: abi.pools, calls: poolCalls, }); - poolAddresses = poolAddresses.filter((i) => i !== nullAddress); - - const poolToAdapterMapping = {}; - - poolAddresses.forEach((i, idx) => (poolToAdapterMapping[i] = poolCalls[idx])); - - let ptis = await api.multiCall({ abi: abi.pti, calls: poolAddresses, }); - let poolIds = await api.multiCall({ abi: abi.getPoolId, calls: poolAddresses, }); - - ptis = ptis.map((i) => parseInt(i)); - const poolBalances = await api.multiCall({ target: BALANCER_VAULT, abi: abi.getPoolTokens, calls: poolIds, }); - - poolBalances.forEach(({ balances: poolBalance }, i) => { - const adapterAddress = poolToAdapterMapping[poolAddresses[i]].params[0] - const underlyingAddress = adapterUnderlyingCache[adapterAddress]; - const adapterDecimalDelta = adapterDecimalDeltaCache[adapterAddress]; - const scale = adapterScaleCache[adapterAddress]; - - const underlyingBalance = new BigNumber(poolBalance[1 - ptis[i]]) - .times(scale) - .div(`1e${18 + adapterDecimalDelta}`) // convert to underlying decimals - .toFixed(0); - - api.add(underlyingAddress, underlyingBalance); - }); - -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - methodology: - "TVL is comprised of the sum of yield-bearing assets in Sense, which includes those assets being used both 1) to issue fixed term Sense tokens (PTs/YTs) and 2) as reserves in our Space AMM Pools. Data is collected via the DeFi Llama SDK.", - start: DIVIDER_INIT_TS, - ethereum: { - tvl, - }, -}; - -const abi = { - target: "address:target", - underlying: "address:underlying", - scale: "uint256:scale", - pools: "function pools(address, uint256) view returns (address)", - getPoolId: "function getPoolId() view returns (bytes32)", - pti: "uint256:pti", - getPoolTokens: - "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)", -}; diff --git a/projects/sensi/index.js b/projects/sensi/index.js deleted file mode 100644 index f8afeaaf7ea..00000000000 --- a/projects/sensi/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') -const SENSI_TOKEN_CONTRACT = '0x63e77cf206801782239d4f126cfa22b517fb4edb' -const SENSI_LOCKING_CONTRACT = '0xc13Aff57B67145012Ef3a4604bDB3f3dA17E114f' -const SENSI_SY_CONTRACT = '0x21B656d3818A1dD07B800c1FE728fB81921af3A3' - -const SY_ABI = { - "getSYPortfolio": "function getSYPortfolio() view returns ((uint256 totalPayToken, uint256 totalBuyInToken, uint256 rewardsInPool, uint256 rewardsLastRun, uint256 lockingLastRun, uint256 SENSICirculatingSupply, uint256 SYNFTCirculatingSupply, uint256 lastMintedSYNFTID, uint256 totalVaults, uint256 totalActiveVaults) SY_Portfolio)" -} - -async function tvl(api) { - const balance_of_SY = await api.call({ abi: SY_ABI.getSYPortfolio, target: SENSI_SY_CONTRACT }) - - const balance_of_SY_TVL = balance_of_SY.totalPayToken - api.add(ADDRESSES.null, balance_of_SY_TVL) -} - -module.exports = { - methodology: 'Counts how many tokens are in Sensi Locks and in SmartYield', - bsc: { - tvl, - staking: staking(SENSI_LOCKING_CONTRACT, SENSI_TOKEN_CONTRACT), - } -} \ No newline at end of file diff --git a/projects/sentiment/index.js b/projects/sentiment/index.js deleted file mode 100644 index cb5e76b8d11..00000000000 --- a/projects/sentiment/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const v1 = require("./v1"); -const v2 = require("./v2"); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([v1, v2]); -// module.exports.hallmarks = [ -// ["2023-04-04", "1M hack"], -// ]; diff --git a/projects/sentiment/v1.js b/projects/sentiment/v1.js deleted file mode 100644 index b50102ef0e4..00000000000 --- a/projects/sentiment/v1.js +++ /dev/null @@ -1,62 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require("../helper/coreAssets.json"); -const { cachedGraphQuery } = require("../helper/cache"); - -async function tvl(api) { - const tokens = await api.call({ - target: "0x17b07cfbab33c0024040e7c299f8048f4a49679b", - abi: "address[]:getAllLTokens", - }); - const assets = await api.multiCall({ calls: tokens, abi: "address:asset" }); - const totalAssets = await api.multiCall({ - calls: tokens, - abi: "uint256:totalAssets", - }); - api.addTokens(assets, totalAssets); - - // const userAccounts = await api.call({ target: "0x17b07cfbab33c0024040e7c299f8048f4a49679b", abi: "address[]:getAllAccounts", }) - const data = await cachedGraphQuery( - "sentiment", - sdk.graph.modifyEndpoint("H4hxkyy4kLmFsZZCatedvHpWT1ZvqKcfv2FFYXLxDm9W"), - query, - { fetchById: true } - ); - const userAccounts = data.map((i) => i.id); - const [equity, borrows] = await Promise.all([ - api.multiCall({ - target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", - calls: userAccounts, - abi: "function getBalance(address account) view returns (uint256)", - permitFailure: true, - }), - api.multiCall({ - target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", - calls: userAccounts, - abi: "function getBorrows(address account) view returns (uint256)", - permitFailure: true, - }), - ]); - for (let i = 0; i < equity.length; i++) { - const equity_ = equity[i] ?? 0; - const borrow = borrows[i] ?? 0; - api.add(ADDRESSES.arbitrum.WETH, equity_ - borrow); - } - return api.getBalances(); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - arbitrum: { tvl }, -}; - -const query = `query get_accounts($lastId: String!) { - accounts( - first: 1000 - where: {and: [{id_gt: $lastId}, {or: [{balance_gt: 0}, {debt_gt: 0}]}]} - ) { - id - balance - debt - } -}`; diff --git a/projects/sentiment/v2.js b/projects/sentiment/v2.js deleted file mode 100644 index 7f8cfdfafb0..00000000000 --- a/projects/sentiment/v2.js +++ /dev/null @@ -1,154 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const ADDRESSES = require("../helper/coreAssets.json"); -const sdk = require("@defillama/sdk"); - -const PONDER_URL = "https://artistic-perfection-production.up.railway.app"; -const PORTFOLIO_LENS_ADDRESS = "0x9700750001dDD7C4542684baC66C64D74fA833c0"; - -const SUPERPOOLS = [ - { - superPool: "0x2831775cb5e64b1d892853893858a261e898fbeb", // wHYPE superpool - underlyingAsset: "hyperliquid:" + ADDRESSES.hyperliquid.WHYPE, // wHYPE - }, - { - superPool: "0xe45E7272DA7208C7a137505dFB9491e330BF1a4e", // USDe superpool - underlyingAsset: "hyperliquid:" + ADDRESSES.arbitrum.USDe, // USDe - }, - { - superPool: "0x34B2B0DE7d288e79bbcfCEe6C2a222dAe25fF88D", // USDT0 superpool - underlyingAsset: "hyperliquid:" + ADDRESSES.corn.USDT0, // USDT0 - }, -]; - -const POOL_ADDRESS = "0x36BFD6b40e2c9BbCfD36a6B1F1Aa65974f4fFA5D"; - -async function getPoolId(superPoolAddress) { - const response = await fetch(`${PONDER_URL}/graphql`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - query: ` - query GetPoolId($superPoolId: String!) { - superPool(id: $superPoolId) { - poolConnections { - items { pool { id } } - } - } - } - `, - variables: { superPoolId: superPoolAddress }, - }), - }); - - const result = await response.json(); - const poolConnection = result.data?.superPool?.poolConnections?.items?.[0]; - if (!poolConnection) - throw new Error(`Could not find pool ID for ${superPoolAddress}`); - - return poolConnection.pool.id; -} - -async function getPositionAddresses() { - let positions = []; - let afterCursor = null; - let hasNextPage = true; - - while (hasNextPage) { - const response = await fetch(`${PONDER_URL}/graphql`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - query: ` - query GetPositions($after: String) { - positions(limit: 999, after: $after) { - items { - id - } - pageInfo { - hasNextPage - endCursor - } - } - } - `, - variables: { after: afterCursor }, - }), - }); - - const result = await response.json(); - const items = result.data?.positions?.items || []; - positions.push(...items.map((i) => i.id)); - - hasNextPage = result.data.positions.pageInfo.hasNextPage; - afterCursor = result.data.positions.pageInfo.endCursor; - } - - return positions; -} - -async function tvl(api) { - const balances = {}; - - // Lending TVL - for (const { superPool, underlyingAsset } of SUPERPOOLS) { - const poolId = await getPoolId(superPool); - const totalBorrows = await api.call({ - target: POOL_ADDRESS, - params: [poolId], - abi: "function getTotalBorrows(uint256) view returns (uint256)", - }); - const totalAssets = await api.call({ - target: POOL_ADDRESS, - params: [poolId], - abi: "function getTotalAssets(uint256) view returns (uint256)", - }); - const availableLiquidity = BigInt(totalAssets) - BigInt(totalBorrows); - sdk.util.sumSingleBalance(balances, underlyingAsset, availableLiquidity); - } - - // Collateral TVL - const positions = await getConfig('sentiment/'+api.chain, null, { - fetcher: getPositionAddresses, - }); - - // Batch positions into chunks of 30 - const BATCH_SIZE = 200; - for (let i = 0; i < positions.length; i += BATCH_SIZE) { - const positionBatch = positions.slice(i, i + BATCH_SIZE); - - const assetDataBatch = await api.multiCall({ - abi: "function getAssetData(address) view returns ((address asset, uint256 amount, uint256 valueInEth)[])", - calls: positionBatch, - target: PORTFOLIO_LENS_ADDRESS, - }); - - assetDataBatch.flat().forEach(({ asset, amount }) => { - sdk.util.sumSingleBalance(balances, `hyperliquid:${asset}`, amount); - }); - } - - return balances; -} - -async function borrowed(api) { - const balances = {}; - - for (const { superPool, underlyingAsset } of SUPERPOOLS) { - const poolId = await getPoolId(superPool); - const totalBorrows = await api.call({ - target: POOL_ADDRESS, - params: [poolId], - abi: "function getTotalBorrows(uint256) view returns (uint256)", - }); - sdk.util.sumSingleBalance(balances, underlyingAsset, totalBorrows); - } - - return balances; -} - -module.exports = { - methodology: - "Sums assets held by SuperPool contracts (lending TVL) and collateral held by all Position contracts.", - start: 1014900, - hyperliquid: { tvl, borrowed }, -}; diff --git a/projects/sentinel-trader-bot/index.js b/projects/sentinel-trader-bot/index.js deleted file mode 100644 index a8b9422ee53..00000000000 --- a/projects/sentinel-trader-bot/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require('../helper/solana'); - -async function tvl() { - return sumTokens2({ solOwners: ['FiPhWKk6o16WP9Doe5mPBTxaBFXxdxRAW9BmodPyo9UK'] }); -} - -module.exports = { - timetravel: false, - methodology: - "Sentinel Trader Bot TVL is calculated by retrieving the SOL balance of the SENTBOT mint authority (or treasury) wallet", - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/sentora/index.js b/projects/sentora/index.js deleted file mode 100644 index d8bff1e177c..00000000000 --- a/projects/sentora/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Sentora.', - blockchains: { - ethereum: { - eulerVaultOwners: [ - '0x5aB5FE7d04CFDeFb9daf61f6f569a58A53D05eE1', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/sentre.js b/projects/sentre.js deleted file mode 100644 index 23e481f7e1e..00000000000 --- a/projects/sentre.js +++ /dev/null @@ -1,136 +0,0 @@ -const { getProvider, sumTokens2, } = require('./helper/solana') -const { Program, } = require("@project-serum/anchor"); - -async function tvl() { - const provider = getProvider() - const programId = 'D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag' - const program = new Program(idl, programId, provider) - const data = await program.account.pool.all() - return sumTokens2({ tokenAccounts: data.map(i => i.account.treasuries).flat(), allowError: true, }) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} - -const idl = { - "version": "0.1.0", - "name": "balancer_amm", - "instructions": [], - "accounts": [ - { - "name": "pool", - "type": { - "kind": "struct", - "fields": [ - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "fee", - "type": "u64" - }, - { - "name": "taxFee", - "type": "u64" - }, - { - "name": "state", - "type": { - "defined": "PoolState" - } - }, - { - "name": "mintLpt", - "type": "publicKey" - }, - { - "name": "taxMan", - "type": "publicKey" - }, - { - "name": "mints", - "type": { - "vec": "publicKey" - } - }, - { - "name": "actions", - "type": { - "vec": { - "defined": "MintActionState" - } - } - }, - { - "name": "treasuries", - "type": { - "vec": "publicKey" - } - }, - { - "name": "reserves", - "type": { - "vec": "u64" - } - }, - { - "name": "weights", - "type": { - "vec": "u64" - } - } - ] - } - } - ], - "types": [ - { - "name": "PoolState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Uninitialized" - }, - { - "name": "Initialized" - }, - { - "name": "Frozen" - }, - { - "name": "Deleted" - }, - { - "name": 'Initializing' - } - ] - } - }, - { - "name": "MintActionState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Active" - }, - { - "name": "BidOnly" - }, - { - "name": "AskOnly" - }, - { - "name": "Paused" - } - ] - } - } - ], - "events": [], - "errors": [] -} diff --git a/projects/serum-swap/index.js b/projects/serum-swap/index.js deleted file mode 100644 index 5cbd0aedccb..00000000000 --- a/projects/serum-swap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { exportDexTVL } = require('../helper/solana') - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - solana: { - tvl: exportDexTVL('SwaPpA9LAaLfeLi3a68M4DjnLqgtticKg6CnyNwgAC8') - } -} \ No newline at end of file diff --git a/projects/serum.js b/projects/serum.js deleted file mode 100644 index 5a6b55ee581..00000000000 --- a/projects/serum.js +++ /dev/null @@ -1,37 +0,0 @@ -const { getConnection, decodeAccount, blacklistedTokens_default } = require('./helper/solana') -const sdk = require('@defillama/sdk') -const { PublicKey } = require("@solana/web3.js") -const { MARKET_STATE_LAYOUT_V3_MINIMAL } = require('./helper/utils/solana/layouts/openbook-layout') - -const blacklistedTokens = new Set(blacklistedTokens_default) - -async function tvl(api) { - const connection = getConnection() - - const programPublicKey = new PublicKey('9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin') - const programAccounts = await connection.getProgramAccounts(programPublicKey, { - filters: [{ dataSize: 388 }], - dataSlice: { offset: 53, length: MARKET_STATE_LAYOUT_V3_MINIMAL.span } - }); - sdk.log('#markets', programAccounts.length) - - programAccounts.forEach((account) => { - const market = decodeAccount('openbook-minimal', account.account) - const baseToken = market.baseMint.toBase58() - const quoteToken = market.quoteMint.toBase58() - const baseBal = +market.baseDepositsTotal + +market.baseFeesAccrued - const quoteBal = +market.quoteDepositsTotal + +market.quoteFeesAccrued - if (!blacklistedTokens.has(baseToken)) api.add(baseToken, baseBal) - if (!blacklistedTokens.has(quoteToken)) api.add(quoteToken, quoteBal) - }); -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - hallmarks: [ - [1667826000, "FTX/Alameda collapse"], - [1680310800, "Move to onchain data"], - ], - solana: { tvl, }, -} diff --git a/projects/set-protocol/index.js b/projects/set-protocol/index.js deleted file mode 100644 index c6c5dd84742..00000000000 --- a/projects/set-protocol/index.js +++ /dev/null @@ -1,30 +0,0 @@ - const v1TVL = require('./v1'); - const v2TVL = require('./v2'); - - const BigNumber = require('bignumber.js'); - - - async function tvl(timestamp, block) { - const [v1, v2] = await Promise.all([v1TVL(timestamp, block), v2TVL(timestamp, block)]); - - const tokenAddresses = new Set(Object.keys(v1).concat(Object.keys(v2))); - - const balances = ( - Array - .from(tokenAddresses) - .reduce((accumulator, tokenAddress) => { - const v1Balance = new BigNumber(v1[tokenAddress] || '0'); - const v2Balance = new BigNumber(v2[tokenAddress] || '0'); - accumulator[tokenAddress] = v1Balance.plus(v2Balance).toFixed(0); - - return accumulator - }, {}) - ); - - return balances; - } - - module.exports = { - start: '2019-04-10', // 04/09/2019 @ 10:29pm (UTC) - ethereum: { tvl } - } diff --git a/projects/set-protocol/v1.js b/projects/set-protocol/v1.js deleted file mode 100644 index 8db98ead55d..00000000000 --- a/projects/set-protocol/v1.js +++ /dev/null @@ -1,77 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const BigNumber = require('bignumber.js'); - - -/*================================================== -Settings -==================================================*/ - -const cTokenDecimalScale = BigNumber("10").pow(18); - -const tokens = [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.SAI, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - '0x39AA39c021dfbaE8faC545936693aC917d5E7563', // cUSDC - '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', // cDAI -] - -const cTokensMap = { - '0x39AA39c021dfbaE8faC545936693aC917d5E7563': ADDRESSES.ethereum.USDC, // cUSDC: USDC - '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643': ADDRESSES.ethereum.DAI // cDAI: DAI -} - -/*================================================== - TVL - ==================================================*/ - -module.exports = async function tvl(timestamp, block) { - let balances = {}; - - // Vault Asset Balances - let balanceOfResults = await sdk.api.abi.multiCall({ - block, - calls: tokens.map((token) => { - return { - target: token, - params: '0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc' - } - }), - abi: 'erc20:balanceOf' - }); - - // cToken Exchange Rates - let cTokenConversionRatesMap = (await sdk.api.abi.multiCall({ - block, - calls: Object.keys(cTokensMap).map((cToken) => { - return { - target: cToken - } - }), - abi: "uint256:exchangeRateStored" - })).output.reduce(function(map, object) { - map[object.input.target] = object.output; - return map; - }, {}); - - // Compute Balances - balanceOfResults.output.forEach((balanceOf) => { - let address = balanceOf.input.target - - if (address in cTokensMap) { - let addressOfUnderlying = cTokensMap[address]; - let conversionRate = BigNumber(cTokenConversionRatesMap[address]); - let balanceOfUnderlying = BigNumber(balanceOf.output).times(conversionRate).div(cTokenDecimalScale); - - balances[addressOfUnderlying] = BigNumber(balances[addressOfUnderlying] || 0).plus(balanceOfUnderlying).toFixed(0); - } else { - balances[address] = BigNumber(balances[address] || 0).plus(balanceOf.output).toFixed(0); - } - }); - - return balances; -}; diff --git a/projects/set-protocol/v2.js b/projects/set-protocol/v2.js deleted file mode 100644 index 148e05fa7d8..00000000000 --- a/projects/set-protocol/v2.js +++ /dev/null @@ -1,64 +0,0 @@ -const sdk = require('@defillama/sdk'); -const BigNumber = require('bignumber.js'); - - -const SUPPLY_SCALE = BigNumber("10").pow(18) -const START_BLOCK = 10830496; - -const getSets = "address[]:getSets" -const getPositions = 'function getPositions() view returns (tuple(address component, address module, int256 unit, uint8 positionState, bytes data)[])'; -const totalSupply = "uint256:totalSupply"; - -/*================================================== - TVL - ==================================================*/ - -module.exports = async function tvl(timestamp, block) { - let balances = {}; - - if (block <= START_BLOCK) { - return balances; - } - - const setAddresses = (await sdk.api.abi - .call({ - abi: getSets, - target: '0xa4c8d221d8BB851f83aadd0223a8900A6921A349', - block, - })).output; - - let supplies = (await sdk.api.abi.multiCall({ - abi: totalSupply, - block, - calls: setAddresses.map((setAddress) => { - return { - target: setAddress, - } - }), - })).output; - - let positionsForSets = (await sdk.api.abi.multiCall({ - abi: getPositions, - block, - calls: setAddresses.map((setAddress) => { - return { - target: setAddress, - } - }), - })).output; - - positionsForSets.forEach(function(positionForSet, i) { - const setSupply = BigNumber(supplies[i].output); - if(positionForSet.output === null){ - throw new Error("positionForSet call failed") - } - positionForSet.output.forEach((position) => { - const componentAddress = position[0]; - const positionUnits = BigNumber(position[2]); - - balances[componentAddress] = BigNumber(balances[componentAddress] || 0).plus((positionUnits).times(setSupply).div(SUPPLY_SCALE)).toFixed(0); - }); - }); - - return balances; -}; diff --git a/projects/set-wtf/index.js b/projects/set-wtf/index.js deleted file mode 100644 index 68a1c154773..00000000000 --- a/projects/set-wtf/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') - -const setProtocolContract = '0x2506CB864df6336d93A87C4af2b644fd61cF4d81' - -// Event signatures and topics -const eventAbis = { - Deposited: 'event Deposited(address indexed user, uint256 amount)', - WithdrawalProcessed: 'event WithdrawalProcessed(address indexed user, uint256 amount)', -} - -const eventTopics = { - Deposited: '0x2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4', - WithdrawalProcessed: '0x5abb0fc89def2ee3226cc48f5621ee8e2b45f6dcc7898d2bdb5d480533c32bc0', -} - -const abi = { usdt: 'address:usdt' } - -async function tvl(api) { - // Verify USDT token matches - const usdtAddress = await api.call({ target: setProtocolContract, abi: abi.usdt }) - if (usdtAddress.toLowerCase() !== ADDRESSES.ethereum.USDT.toLowerCase()) return - - // Start from the contract deployment block provided - const fromBlock = 22926962 - - // Fetch parsed logs (amounts) - const deposits = await getLogs({ api, target: setProtocolContract, topics: [eventTopics.Deposited], eventAbi: eventAbis.Deposited, onlyArgs: true, fromBlock, extraKey: 'Deposited' }) - const withdrawals = await getLogs({ api, target: setProtocolContract, topics: [eventTopics.WithdrawalProcessed], eventAbi: eventAbis.WithdrawalProcessed, onlyArgs: true, fromBlock, extraKey: 'WithdrawalProcessed' }) - - let totalDeposits = 0n - // Only user deposits count toward TVL - deposits.forEach(i => totalDeposits += BigInt(i.amount)) - // Note: AdminDeposited is excluded from TVL - - let totalWithdrawals = 0n - // Only user withdrawals reduce TVL - withdrawals.forEach(i => totalWithdrawals += BigInt(i.amount)) - // Note: AdminWithdrawn is excluded from TVL (cold storage transfers) - - - const netTvl = totalDeposits - totalWithdrawals - if (netTvl > 0n) api.add(ADDRESSES.ethereum.USDT, netTvl.toString()) -} - -module.exports = { - start: '2025-07-01', - ethereum: { tvl }, - methodology: 'TVL = sum(user Deposited) - sum(user WithdrawalProcessed). AdminDeposited and AdminWithdrawn are excluded (admin treasury/cold storage flows). All values are derived from on-chain events since deployment.' -} diff --git a/projects/settleton/index.js b/projects/settleton/index.js deleted file mode 100644 index 2411e2d8f40..00000000000 --- a/projects/settleton/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { fetchURL } = require('../helper/utils'); - -async function fetchTvl(api) { - const response = await fetchURL("https://settleton.finance/apiV2/vaults") - for (const pool of response.data) { - api.add(ADDRESSES.ton.TON, pool.tvl * 1e9) - } -} - - -module.exports = { - methodology: ` - The methodology for calculating the total TVL is based on analyzing liquidity pool data and LP token balances. -For each Vaults we iterate through all LP tokens and calculate their price based on following onchain data: (reserve0, reserve1, total_lp_supply) -For each pool, a calculation is performed to determine the equivalent amount of TON based on the current pool reserves and the share of LP tokens held. -This calculation takes into account the reserve ratios and adjusts the token value to TON. -For multi-indices, the TVL of all pools is summed up, while for single indices, the value of the sole pool is used. The final TVL is represented in TON, and the index price is calculated by dividing the TVL by the total supply of the index. - `.trim(), - timetravel: false, - doublecounted: true, - ton: { - tvl: fetchTvl - } -} diff --git a/projects/sevenswap/index.js b/projects/sevenswap/index.js deleted file mode 100644 index f3b49132d04..00000000000 --- a/projects/sevenswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - kava: { tvl: getUniTVL({ - factory: '0x72b97F61fdb9a3aD34cd284B2f9c55d04127019c', - useDefaultCoreAssets: true, - })} -} diff --git a/projects/sfinance/index.js b/projects/sfinance/index.js deleted file mode 100644 index 328cc5aadcf..00000000000 --- a/projects/sfinance/index.js +++ /dev/null @@ -1,63 +0,0 @@ - -// balances: int128 -> uint256 ; underlying_coins: uint128 -> address -const swapsA = [ - // dfi (DAI/USDC/USDT) - { - address: '0xD2aDa263C156E5a5096Ee7387a4BE9C00F1b20FB', - coinNums: 3, - }, - // dForce (DAI/USDC/USDT/USDx) - { - address: '0xD0d3AB41c5f29eDa2eac3d2D65B26bfd77369225', - coinNums: 4 - } -] - -// balances: uint256 -> uint256 ; coins: uint256 -> address -const swapsB = [ - // 5pool (DAI/USDC/USDT/TUSD/PAX) - { - address: '0x3ba734D5E4E78801Ab22CF55C5760e121E1C2C42', - coinNums: 5 - }, - // qian (QUSD/USD5) - { - address: '0x6E7a0bf2EeC3A4b2B4a7bbBD372238bF68f1174c', - coinNums: 2 - }, - // gate (USDG/USD5) - { - address: '0xF3B8CC654eA571df3682E2B4800fE22886Ae4976', - coinNums: 2 - }, - // binance (BUSD/USD5) - { - address: '0xb759B7a071942425301Cf398d7f892B5ae9eC5Af', - coinNums: 2 - }, - // basis (BAC/DAI) - { - address: '0xd626C03cAE9696E702828c0Ed4DEed5c33D30DD7', - coinNums: 2 - } -] - -async function tvl(api) { - const ownerTokens = [] - for (const { address, coinNums } of swapsA) { - const tokens = await api.fetchList({ itemCount: coinNums, itemAbi: 'function coins(int128 arg0) view returns (address out)', target: address }) - ownerTokens.push([tokens, address]) - } - for (const { address, coinNums } of swapsB) { - const tokens = await api.fetchList({ itemCount: coinNums, itemAbi: 'coins', target: address }) - ownerTokens.push([tokens, address]) - } - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - start: '2020-10-11', // 10/11/2020 @ 00:00:00am +UTC - ethereum: { - tvl - } -} diff --git a/projects/sft-protocol/index.js b/projects/sft-protocol/index.js deleted file mode 100644 index 2d414a6fb68..00000000000 --- a/projects/sft-protocol/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getConfig } = require('../helper/cache'); - -const tokens = [ - ADDRESSES.null, // FIL -] - -const LENDING_POOL_ADDRESS = "0x147122D1EBdA76E4910ccdC53aEb6a58605Eb58E"; - -const getActiveMinersFromRPC = async () => { - const resp = await getConfig('sft-protocol', 'https://ww8.sftproject.io/api/c/api/v1/public/dashboard/info') - let nodes = [] - let node_i = [] - nodes = resp.data.combined - .filter(i => i.miner && i.miner !== '') - .map(({ miner }) => { - let node = parseInt(miner.slice(2,)) - let bytes = Buffer.alloc(20); - bytes.writeUint8(0xff, 0); - bytes.writeBigUint64BE(BigInt(node), 12); - return '0x' + bytes.toString('hex') - }); - - if (resp.data.independent !== null) { - node_i = resp.data.independent - .filter(i => i.miner && i.miner !== '') - .map(({ miner }) => { - let node = parseInt(miner.slice(2,)) - let bytes = Buffer.alloc(20); - bytes.writeUint8(0xff, 0); - bytes.writeBigUint64BE(BigInt(node), 12); - return '0x' + bytes.toString('hex') - }); - } - nodes = nodes.concat(node_i) - return nodes -} - -module.exports = { - filecoin: { - tvl: async (api) => { - - let balances = await sumTokens2({ owner: LENDING_POOL_ADDRESS, tokens, api }); - - let minerAddrs = await getActiveMinersFromRPC(); - await sumTokens2({ balances, owners: minerAddrs, tokens, api, }); - - return balances; - } - } -} - diff --git a/projects/shadecash/contracts.json b/projects/shadecash/contracts.json deleted file mode 100644 index e0b6a1e7a41..00000000000 --- a/projects/shadecash/contracts.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "HASHER": "0x456d35432b3602984b3c7c2968AC335c972b6923", - "VERIFIER":"0x5cC87C08bec651055965cF0DAF84D059FA4B6DBb", - - "ShadeCash_FTM_100": "0x25A829616F0db0F0E4cb7198961DAc11f050c14a", - "ShadeCash_FTM_1000": "0xDD23aDF7945f453F81FF2C449ba98F18F4163d32", - "ShadeCash_FTM_10000": "0x6456beB56e3751f0C116c3375dceCF255cC87d35", - "ShadeCash_FTM_100000": "0x44C8916C3F7528294C072FbfF4C0388658124aa0", - "ShadeCash_FTM_1000000": "0x51C800793D9BB1767874bF25ceA0e6a465F0DD88", - - "ShadeCash_USDC_10": "0x26EAb094e543C8FF49980FA2CD02B34644a71478", - "ShadeCash_USDC_100": "0x9bfBF2a241A1E10A2f5d821A5b1a43573CE4B30f", - "ShadeCash_USDC_1000": "0x394Dc6010517ea39883614Bf5e5BCA634A052aa4", - "ShadeCash_USDC_10000": "0x1A2D2c2C9777E0515C9b0823C9DEE4c291f7377c", - "ShadeCash_USDC_100000": "0x589419b25531755F5905095621F4Add57CDf5269", - - "ShadeCash_xBOO_1": "0x87d220741Dac28705ed7683b66D66575B45D4603", - "ShadeCash_xBOO_10": "0x36de99c72E15Fad1aafdf3e4EBc37B768cc7ECBE", - "ShadeCash_xBOO_100": "0xD9979e2479AEa29751D31AE512a61297B98Fbbf4", - "ShadeCash_xBOO_1000": "0x2E519993AfE7fc81Fe9F723710CD30199E7742F4", - "ShadeCash_xBOO_5000": "0xE5fd5d3E4dD0c801a334814B20c34EAF029EAE63", - - "ShadeCash_SHADE_10": "0xac086A94d7B4e0102b2dB7a638F212b408C0dCc8", - "ShadeCash_SHADE_100": "0xf17ed09FCB16abfF61ff869c5954E431a367c879", - "ShadeCash_SHADE_1000": "0x3Aa61EA2F4D744c770127F4e03804A1081A55E1b", - "ShadeCash_SHADE_10000": "0x51E5B89Ad5A78F13F705E50c87aa07Ce4E26Cf31", - "ShadeCash_SHADE_100000": "0xCC8f99Bfd1C330211fBa9C5fEe7BB3Fa2B9E8dFB" - -} \ No newline at end of file diff --git a/projects/shadecash/index.js b/projects/shadecash/index.js deleted file mode 100644 index f41c67f86b4..00000000000 --- a/projects/shadecash/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') -const addresses = require('./contracts.json') -const { staking } = require('../helper/staking'); -const { pool2 } = require('../helper/pool2') - -const tokens = Object.values({ - nullAddress, - "USDC": ADDRESSES.fantom.USDC, - "xBOO": "0xa48d959AE2E88f1dAA7D5F611E01908106dE7598", - "SHADE": "0x3A3841f5fa9f2c283EA567d5Aeea3Af022dD2262" -}) - -async function tvl(api) { - const owners = Object.values(addresses) - return sumTokens2({ api, owners, tokens }) -} - -const MASTERCHEF = "0x1719ab3C1518eB28d570a1E52980Dbc137B12e66" - -module.exports = { - fantom: { - tvl, - pool2: pool2(MASTERCHEF, "0x20aa395F3bcc4dc44a94215D129650533B3da0b3"), - staking: staking(MASTERCHEF, '0x3A3841f5fa9f2c283EA567d5Aeea3Af022dD2262'), - }, -} \ No newline at end of file diff --git a/projects/shadeprotocol-derivatives/index.js b/projects/shadeprotocol-derivatives/index.js deleted file mode 100644 index 6590a3f011e..00000000000 --- a/projects/shadeprotocol-derivatives/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require("../helper/http") - -async function tvl(api) { - const data = await get('https://ruvzuawwz7.execute-api.us-east-1.amazonaws.com/prod-analytics-v1/derivatives') - return { - tether: data.totalUsd - } -} - -module.exports = { - misrepresentedTokens: true, - secret: { - tvl - } -} \ No newline at end of file diff --git a/projects/shadeprotocol-lend/index.js b/projects/shadeprotocol-lend/index.js deleted file mode 100644 index 3a83ae9401f..00000000000 --- a/projects/shadeprotocol-lend/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { post } = require("../helper/http") - -async function getData(api) { - const isoTimestamp = new Date((api.timestamp - 5 * 60 * 60) * 1000).toISOString() - const { data: { lendStatsHistories } } = await post('https://prodv1.securesecrets.org/graphql', { "operationName": "getLendHistory", "variables": { "intervalIso": isoTimestamp }, "query": "query getLendHistory($intervalIso: String!) {\n lendStatsHistories(\n query: {where: {time: {gte: $intervalIso}}, orderBy: {time: \"desc\"}}\n ) {\n averageLtv\n collateralUsd\n debtAmount\n debtUsd\n time\n __typename\n }\n}" }) - return lendStatsHistories[0] -} - -async function tvl(api) { - const data = await getData(api) - api.addUSDValue(data.collateralUsd - data.debtUsd) -} - -async function borrowed(api) { - const data = await getData(api) - api.addUSDValue(data.debtUsd) -} - - -module.exports = { - misrepresentedTokens: true, - secret: { - tvl, - borrowed, - } -} diff --git a/projects/shadeprotocol-moneymarket/index.js b/projects/shadeprotocol-moneymarket/index.js deleted file mode 100644 index b7027bbe437..00000000000 --- a/projects/shadeprotocol-moneymarket/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const {get} = require("../helper/http") - -async function getData(api) { - const isoTimestamp = new Date((api.timestamp - 5 * 60 * 60) * 1000).toISOString(); - return await get('https://prodv1.securesecrets.org/defillama/moneymarket/' + isoTimestamp); -} - -async function tvl(api) { - const data = await getData(api) - api.addUSDValue(data.collateralTvl + data.loanableTvl) -} - -async function borrowed(api) { - const data = await getData(api) - api.addUSDValue(data.lentTvl) -} - -module.exports = { - misrepresentedTokens: true, - secret: { - tvl, - borrowed, - } -} diff --git a/projects/shadeprotocol-silk/index.js b/projects/shadeprotocol-silk/index.js deleted file mode 100644 index 74f445a9bda..00000000000 --- a/projects/shadeprotocol-silk/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require("../helper/http") - -async function tvl(api) { - const data = await get('https://ruvzuawwz7.execute-api.us-east-1.amazonaws.com/prod-analytics-v1/silk') - return { - tether: data.totalUsd - } -} - -module.exports = { - misrepresentedTokens: true, - secret: { - tvl - } -} \ No newline at end of file diff --git a/projects/shadeswap/index.js b/projects/shadeswap/index.js deleted file mode 100644 index 1110b183b55..00000000000 --- a/projects/shadeswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { post } = require("../helper/http") - -async function tvl(api) { - const { data: { pools } } = await post('https://prodv1.securesecrets.org/graphql', { "operationName": "getPools", "variables": { "ids": [] }, "query": "query getPools($ids: [String!]) {\n pools(query: {ids: $ids}) {\n id\n contractAddress\n codeHash\n lpTokenId\n lpTokenAmount\n token0Id\n token0Amount\n token1Id\n token1Amount\n daoFee\n lpFee\n stakingContractAddress\n stakingContractCodeHash\n stakedLpTokenAmount\n flags\n isEnabled\n liquidityUsd\n volumeUsd\n volumeChangePercent\n StableParams {\n id\n priceRatio\n alpha\n gamma1\n gamma2\n minTradeSize0For1\n minTradeSize1For0\n maxPriceImpact\n __typename\n }\n PoolToken {\n rewardPerSecond\n expirationDate\n tokenId\n __typename\n }\n __typename\n }\n}" }) - return { tether: pools.map(i => i.liquidityUsd).filter(i => +i < 1e8).reduce((t, v) => t + v, 0) } -} - - -module.exports = { - misrepresentedTokens: true, - secret: { - tvl - } -} \ No newline at end of file diff --git a/projects/shadow-cl/index.js b/projects/shadow-cl/index.js deleted file mode 100644 index 04f951dc518..00000000000 --- a/projects/shadow-cl/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - sonic: { factory: '0xcD2d0637c94fe77C2896BbCBB174cefFb08DE6d7', fromBlock: 1705910, }, -}) \ No newline at end of file diff --git a/projects/shadow-legacy/index.js b/projects/shadow-legacy/index.js deleted file mode 100644 index 079a7bff57e..00000000000 --- a/projects/shadow-legacy/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - sonic: { - tvl: getUniTVL({ - factory: '0x2dA25E7446A70D7be65fd4c053948BEcAA6374c8', - useDefaultCoreAssets: true, - hasStablePools: true, - blacklistedTokens: ['0xc31e2ac1a6fd9f80aaaa36a36530e035d2be8ac4'] - }), - }, -} \ No newline at end of file diff --git a/projects/shadowswap/index.js b/projects/shadowswap/index.js deleted file mode 100644 index 009bb8b3e9e..00000000000 --- a/projects/shadowswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - core: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x326Ee96748E7DcC04BE1Ef8f4E4F6bdd54048932', - }) - } -} \ No newline at end of file diff --git a/projects/shape/index.js b/projects/shape/index.js deleted file mode 100644 index cded2dc164a..00000000000 --- a/projects/shape/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x62Edd5f4930Ea92dCa3fB81689bDD9b9d076b57B", - '0xEB06fFa16011B5628BaB98E29776361c83741dd3' - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/shapeshift/index.js b/projects/shapeshift/index.js deleted file mode 100644 index bcc5e7795a0..00000000000 --- a/projects/shapeshift/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const chains = { - ethereum: { - tokens: { - FOX: "0xc770eefad204b5180df6a14ee197d99d808ee52d", - tFOX: "0x808D3E6b23516967ceAE4f17a5F9038383ED5311", - ETH_FOX_UniV2: "0x470e8de2eBaef52014A47Cb5E6aF86884947F08c", // LP token used in staking - }, - pools: { - GIV_FOX_UniV3: "0xad0E10Df5dCDF21396b9d64715aaDAf543F8B376", - }, - staking: { - stakingFoxy: "0xee77aa3Fd23BbeBaf94386dD44b548e9a785ea4b", - FOXy: "0xDc49108ce5C57bc3408c3A5E95F3d864eC386Ed3", - stakingUNIv2Contracts: [ - "0xDd80E21669A664Bce83E3AD9a0d74f8Dad5D9E72", // v1 - "0xc54b9f82c1c54e9d4d274d633c7523f2299c42a0", // v2 - "0x212ebf9fd3c10f371557b08e993eaab385c3932b", // v3 - "0x24FD7FB95dc742e23Dc3829d3e656FEeb5f67fa0", // v4 - "0xC14eaA8284feFF79EDc118E06caDBf3813a7e555", // v5 - "0xEbB1761Ad43034Fd7FaA64d84e5BbD8cB5c40b68", // v6 - "0x5939783dbf3e9f453a69bc9ddc1e492efac1fbcb", // v7 - "0x662da6c777a258382f08b979d9489c3fbbbd8ac3", // v8 - "0x721720784b76265aa3e34c1c7ba02a6027bcd3e5", // v9 - "0xe7e16e2b05440c2e484c5c41ac3e5a4d15da2744", // Evergreen - ] - } - }, - arbitrum: { - tokens: { - FOX: "0xf929de51d91c77e42f5090069e0ad7a09e513c73", - }, - pools: { - ETH_FOX_UniV2: "0x5f6ce0ca13b87bd738519545d3e018e70e339c24", - ETH_FOX_UniV3: "0x76d4D1EAA0C4b3645E75C46E573c1d4F75E9041e", - }, - staking: { - stakingRFOXProxy: "0xac2a4fd70bcd8bab0662960455c363735f0e2b56", - stakingRFOX: "0x4f9c6a6cc987de98c8109e121516008906a899c9", - } - }, - polygon: { - tokens: { - FOX: "0x65A05DB8322701724c197AF82C9CaE41195B0aA8", - }, - pools: { - ETH_FOX_SushiSwap: "0x93eF615F1DdD27d0E141Ad7192623A5c45e8f200", - } - }, - xdai: { // Gnosis - tokens: { - FOX: "0x21a42669643f45bc0e086b8fc2ed70c23d67509d", - }, - pools: { - XDAI_FOX_UniV2: "0xC22313fD39F7d4D73A89558F9E8E444C86464BAc", - HNY_FOX_UniV2: "0x8a0Bee989c591142414ad67FB604539d917889dF", - GIV_FOX_UniV2: "0x75594f01dA2e4231e16e67f841C307C4Df2313d1", - } - } -}; - -function generateExports() { - const exports = { - methodology: "We count liquidity of FOX deposited on Uniswap V2 and V3 pools on Ethereum, Arbitrum, Gnosis and a SushiSwap pool on Polygon using on-chain data. For Staking we count the FOX tokens locked in RFOX on Arbitrum and its predecessor FOXy on Ethereum which are single asset staking contracts used for revenue sharing.", - }; - - for (const [chain, data] of Object.entries(chains)) { - exports[chain] = { - tvl: async () => ({}), - }; - - if (data.pools) { - exports[chain].pool2 = pool2s( - Object.values(data.pools), - [data.tokens.FOX] - ); - } - - if (data.staking) { - exports[chain].staking = stakings( - Object.values(data.staking).flat(), - Object.values(data.tokens) - ); - } - } - - return exports; -} - -module.exports = generateExports(); diff --git a/projects/shardingdao/index.js b/projects/shardingdao/index.js deleted file mode 100644 index c54a7219392..00000000000 --- a/projects/shardingdao/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const tokens = [ - coreAssets.null, - coreAssets.ethereum.WBTC -]; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: "0x0feCcB11C5B61B3922C511d0f002c0b72D770dCE", tokens: tokens }) - }, - methodology: "Currently TVL is calculated as the sum of the assets locked inside the staking pool, including WBTC and native Ethereum on the contract." -}; diff --git a/projects/sharedstake/index.js b/projects/sharedstake/index.js deleted file mode 100644 index cf50393a34f..00000000000 --- a/projects/sharedstake/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') - -const sgtStakingPool = "0xc637dB981e417869814B2Ea2F1bD115d2D993597" -const sgt = "0x84810bcF08744d5862B8181f12d17bfd57d3b078" -const pool2StakingPool = "0x64A1DB33f68695df773924682D2EFb1161B329e8" -const sgtPool2Token = "0x3d07f6e1627DA96B8836190De64c1aED70e3FC55" - -async function tvl(api) { - const sgETH = '0x9e52db44d62a8c9762fa847bd2eba9d0585782d1' - const supply= await api.call({ abi: 'erc20:totalSupply', target: sgETH}) - api.add(sgETH, supply) - return api.getBalances() -} - -module.exports = { - ethereum: { - tvl, - pool2: pool2(pool2StakingPool, sgtPool2Token), - staking: staking(sgtStakingPool, sgt) - }, - // hallmarks: [ - // ['2023-09-01', 'Protocol was hacked for 102 ETH'], - // ], -} \ No newline at end of file diff --git a/projects/sharelock/index.js b/projects/sharelock/index.js deleted file mode 100644 index 2e200275fd3..00000000000 --- a/projects/sharelock/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL} = require("../helper/unknownTokens") - -module.exports = { - era: { - tvl: getUniTVL({ factory: '0xea51CE8A1f9C1Cbbf5B89D9B1dA4A94fB1557866', }) - }, -} diff --git a/projects/sharesgram/index.js b/projects/sharesgram/index.js deleted file mode 100644 index 6887c751e8c..00000000000 --- a/projects/sharesgram/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xbe74a95d159e8e323b8c1a70f825efc85fed27c4" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl - } -} \ No newline at end of file diff --git a/projects/sharkswap-finance/index.js b/projects/sharkswap-finance/index.js deleted file mode 100644 index 5389b3231db..00000000000 --- a/projects/sharkswap-finance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const FACTORY = "0x57592D44eb60011500961EF177BFf8D8691D5a8B" - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }) - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs.`, - base: { - tvl: dexTVL, - } -}; diff --git a/projects/sharkswap/index.js b/projects/sharkswap/index.js deleted file mode 100644 index e4f665c6d52..00000000000 --- a/projects/sharkswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - 'sx': '0x6A482aC7f61Ed75B4Eb7C26cE8cD8a66bd07B88D', - 'sxr': '0x610CfC3CBb3254fE69933a3Ab19aE1bF2aaaD7C8', -}) \ No newline at end of file diff --git a/projects/sharky/helper/index.js b/projects/sharky/helper/index.js deleted file mode 100644 index 045a0a1679c..00000000000 --- a/projects/sharky/helper/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const anchor = require("@project-serum/anchor"); -const { getProvider, } = require("../../helper/solana"); -const sdk = require('@defillama/sdk') - -const { once } = require('../../helper/utils') - -const getLoans = once(async () => { - const provider = getProvider(); - sdk.log('fetching loans...') - const program = new anchor.Program(SHARKY_IDL, SHARKY_PROGRAM_ID, provider); - - return program.account.loan.all() - -}) - -const SHARKY_PROGRAM_ID = "SHARKobtfF1bHhxD2eqftjHBdVSCbKo9JtgK71FhELP"; -const SHARKY_IDL = require("./sharky.json"); - -async function borrowed(api) { - let loans = await getLoans() - loans = loans.map(i => i.account) - api.log('loan count: ',loans.length) - loans = loans.filter(i => { - - const time = i.loanState?.taken?.taken?.terms?.time - if (!time) return false - return +time.start + +time.duration > api.timestamp - }) - api.log('active loans count: ',loans.length) - loans.forEach(i => api.add(i.valueTokenMint.toString(), i.principalLamports.toString())) -} - -async function tvl(api) { - let loans = await getLoans() - loans = loans.map(i => i.account) - api.log('loan count: ',loans.length) - loans = loans.filter(i => { - return !i.loanState.taken - }) - api.log('Loans yet to be taken: ',loans.length) - loans.forEach(i => api.add(i.valueTokenMint.toString(), i.principalLamports.toString())) -} - -module.exports = { - borrowed, - tvl, -}; diff --git a/projects/sharky/helper/sharky.json b/projects/sharky/helper/sharky.json deleted file mode 100644 index 8a546360a32..00000000000 --- a/projects/sharky/helper/sharky.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "version": "5.0.0", - "name": "sharky", - "instructions": [], - "accounts": [ - { - "name": "Loan", - "type": { - "kind": "struct", - "fields": [ - { - "name": "version", - "type": "u8" - }, - { - "name": "principalLamports", - "docs": ["amount in tokens, decimals included"], - "type": "u64" - }, - { - "name": "orderBook", - "type": "publicKey" - }, - { - "name": "valueTokenMint", - "docs": ["Token mint for what the loan is in (spl address)"], - "type": "publicKey" - }, - { - "name": "escrowBumpSeed", - "type": "u8" - }, - { - "name": "loanState", - "docs": ["stores start and duration"], - "type": { - "defined": "LoanState" - } - } - ] - } - } - ], - "types": [ - { - "name": "LoanOffer", - "type": { - "kind": "struct", - "fields": [ - { - "name": "lenderWallet", - "type": "publicKey" - }, - { - "name": "termsSpec", - "type": { - "defined": "LoanTermsSpec" - } - }, - { - "name": "offerTime", - "type": "i64" - } - ] - } - }, - { - "name": "TakenLoan", - "type": { - "kind": "struct", - "fields": [ - { - "name": "nftCollateralMint", - "type": "publicKey" - }, - { - "name": "lenderNoteMint", - "type": "publicKey" - }, - { - "name": "borrowerNoteMint", - "type": "publicKey" - }, - { - "name": "apy", - "docs": [ - "Thousandths of a percent (allows to have 3 decimal points of precision)" - ], - "type": { - "defined": "APY" - } - }, - { - "name": "terms", - "type": { - "defined": "LoanTerms" - } - } - ] - } - }, - { - "name": "APY", - "docs": ["APY settings on an [`OrderBook`]"], - "type": { - "kind": "enum", - "variants": [ - { - "name": "Fixed", - "fields": [ - { - "name": "apy", - "docs": ["Thousandths of a percent"], - "type": "u32" - } - ] - } - ] - } - }, - { - "name": "LoanTermsSpec", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Time", - "fields": [ - { - "name": "duration", - "type": "u64" - } - ] - } - ] - } - }, - { - "name": "LoanTerms", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Time", - "fields": [ - { - "name": "start", - "docs": ["This is a [`UnixTimeStamp`]"], - "type": "i64" - }, - { - "name": "duration", - "type": "u64" - }, - { - "name": "total_owed_lamports", - "type": "u64" - } - ] - } - ] - } - }, - { - "name": "LoanState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Offer", - "fields": [ - { - "name": "offer", - "type": { - "defined": "LoanOffer" - } - } - ] - }, - { - "name": "Taken", - "fields": [ - { - "name": "taken", - "type": { - "defined": "TakenLoan" - } - } - ] - } - ] - } - } - ], - "errors": [] -} diff --git a/projects/sharky/index.js b/projects/sharky/index.js deleted file mode 100644 index ec00454bbd8..00000000000 --- a/projects/sharky/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const solExports = require("./helper"); - -module.exports = { - timetravel: false, - methodology: `TVL is the total principal of all current offers and taken loans.`, - solana: solExports, -}; diff --git a/projects/sharkyswap/index.js b/projects/sharkyswap/index.js deleted file mode 100644 index ba6677868c7..00000000000 --- a/projects/sharkyswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -module.exports = { - arbitrum: { - tvl: getUniTVL({ - factory: "0x36800286f652dDC9bDcFfEDc4e71FDd207C1d07C", - useDefaultCoreAssets: true, - }), - staking: staking('0xD5f406eB9E38E3B3E35072A8A35E0DcC671ea8DB', '0x73eD68B834e44096eB4beA6eDeAD038c945722F1') - } -}; \ No newline at end of file diff --git a/projects/sheepdex/index.js b/projects/sheepdex/index.js deleted file mode 100644 index b1eb1bf0f2c..00000000000 --- a/projects/sheepdex/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - bsc: { factory: '0x571521f8c16f3c4ed5f2490f19187ba7a5a3cbdf', fromBlock: 11640600, } -}) diff --git a/projects/sheesha.js b/projects/sheesha.js deleted file mode 100644 index 84703a4d1be..00000000000 --- a/projects/sheesha.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("./helper/unknownTokens"); -const { staking } = require("./helper/staking"); - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: () => ({}), - pool2: sumTokensExport({ owner: '0x5d350F07c1D9245c1Ecb7c622c67EDD49c6a0A35', tokens: ['0xB31Ecb43645EB273210838e710f2692CC6b30a11']}), - staking: staking("0xC77CfF4cE3E4c3CB57420C1488874988463Fe4a4", "0x232fb065d9d24c34708eedbf03724f2e95abe768"), - }, -}; diff --git a/projects/shekelswap/index.js b/projects/shekelswap/index.js deleted file mode 100644 index eaede3fee1d..00000000000 --- a/projects/shekelswap/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -module.exports = uniTvlExport('arbitrum', '0xd78BA83aD495695940E97889E7191F717AfaC8E0', { }) \ No newline at end of file diff --git a/projects/shell/index.js b/projects/shell/index.js deleted file mode 100644 index 10fa59cdf36..00000000000 --- a/projects/shell/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokensExport, } = require('../helper/unwrapLPs'); - -const OCEAN_CONTRACT = '0xC32eB36f886F638fffD836DF44C124074cFe3584'; -const DAI_CONTRACT = ADDRESSES.optimism.DAI; -const USDC_CONTRACT = ADDRESSES.arbitrum.USDC; -const USDT_CONTRACT = ADDRESSES.arbitrum.USDT; -const WBTC_CONTRACT = ADDRESSES.arbitrum.WBTC; -const WSTETH_CONTRACT = ADDRESSES.arbitrum.WSTETH; -const ARB_CONTRACT = ADDRESSES.arbitrum.ARB; - -const TOKEN_CONTRACTS = [ - DAI_CONTRACT, - USDC_CONTRACT, - USDT_CONTRACT, - WBTC_CONTRACT, - WSTETH_CONTRACT, - ARB_CONTRACT, - nullAddress, -] - -module.exports = { - methodology: 'Sums up the value of all tokens wrapped into Shell v2', - arbitrum: { - tvl: sumTokensExport({ owner: OCEAN_CONTRACT, tokens: TOKEN_CONTRACTS}) - }, - hallmarks: [ - [1662927378, "Shell v2 Launch"] - ] -}; \ No newline at end of file diff --git a/projects/sherlock/abi.json b/projects/sherlock/abi.json deleted file mode 100644 index acab69b8b68..00000000000 --- a/projects/sherlock/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "balanceOf": "uint256:balanceOf" -} \ No newline at end of file diff --git a/projects/sherlock/index.js b/projects/sherlock/index.js deleted file mode 100644 index d51761432c8..00000000000 --- a/projects/sherlock/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const USDC = ADDRESSES.ethereum.USDC; -const SherlockContract = '0xacbBe1d537BDa855797776F969612df7bBb98215'; -const SherlockV2Contract = '0x0865a889183039689034dA55c1Fd12aF5083eabF'; - -async function tvl(api) { - await api.sumTokens({ owner: SherlockContract, tokens: [USDC], }); - const SherlockV2TVL = await api.call({ target: SherlockV2Contract, abi: "uint256:totalTokenBalanceStakers", }); - api.add(USDC, SherlockV2TVL); -} - -module.exports = { - methodology: 'We count USDC that has been staked into the contracts (staking pool). Periodically USDC is swept into Aave, so we also count the aUSDC that is held (in a separate contract from the main contract).', - start: '2021-09-28', // 9/28/2020 @ 8:00pm (UTC) - ethereum: { tvl } // tvl adapter -} diff --git a/projects/sherlock/sherlockV2abi.json b/projects/sherlock/sherlockV2abi.json deleted file mode 100644 index f6c7f4336ff..00000000000 --- a/projects/sherlock/sherlockV2abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalTokenBalanceStakers": "uint256:totalTokenBalanceStakers" -} \ No newline at end of file diff --git a/projects/sherlock/usdcabi.json b/projects/sherlock/usdcabi.json deleted file mode 100644 index 9cdd3659074..00000000000 --- a/projects/sherlock/usdcabi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "balanceOf": "function balanceOf(address account) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/sherpa-cash/index.js b/projects/sherpa-cash/index.js deleted file mode 100644 index 4b4977338c9..00000000000 --- a/projects/sherpa-cash/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const ETHSherpaContracts = [ - "0x6ceB170e3ec0fAfaE3Be5A02FEFb81F524FE85C5", - "0x7CE57f6a5a135eb1a8e9640Af1eff9665ade00D9", - "0xe1376DeF383D1656f5a40B6ba31F8C035BFc26Aa", -]; - -function getNativeTVL(contractAddresses, chain) { - return async function (timestamp, block, chainBlocks) { - return sumTokens2({ chain, block: chainBlocks.block, owners: contractAddresses, tokens: [nullAddress], }) - }; -} - -module.exports = { - methodology: "TVL consists of the sum of the balances of the Sherpa Cash privacy pools.", - avax: { - tvl: getNativeTVL(ETHSherpaContracts, "avax"), - }, -}; diff --git a/projects/shezmu/index.js b/projects/shezmu/index.js deleted file mode 100644 index fbf30f43a06..00000000000 --- a/projects/shezmu/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { staking } = require('../helper/staking') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const SHEZ = "0x5fE72ed557d8a02FFf49B3B826792c765d5cE162" -const SHEZ_ETH_LP = "0x74E6cAc32234133Fe06bD0f4D8237dEe1dedE057" - -// erc20 vaults -const vaults = [ - "0xF89127a7839Ae1918e742A99E39182adec9C7e48", // USDC_SHEZUSD_VAULT - "0xd116641185B1BD999b92B513657C95f78C8ae872", // wstETH_SHEZUSD_VAULT - "0x092dBbFCb19D1763798CD46bA1635Eaf3C9BA1cD", // wstETH_SHEZETH_VAULT - "0x5439046DC57EdE3Ff6aBA8563108326AdDE9C33b", // weETH_SHEZUSD_VAULT - "0x7648cff49EBa2631Ea4Ae8013Dc6Eb54C1c783f2", // weETH_SHEZETH_VAULT - "0x4DBBDF30BC801a65f6978ab629EAd5267Ac02497", // sUSDe_SHEZETH_VAULT - "0x8A8355317936Ef99E4515567b1c9CC8B86e52a3b", // sfrxETH_SHEZETH_VAULT - "0x84D45BF4a70605fc84D618e1809E90f73dA8f369", // ptUniETH_SHEZETH_VAULT - "0xF00A9f21a72FabCfBAeEfa70D08D947f61B2D16C", // wOETH_SHEZUSD_VAULT - "0x95D970fa98bf608862aE76b5492E53E701210E9F", // wOETH_SHEZETH_VAULT - "0x6625364D0499EcEB5C9308c90eb660B96dFd0746", // WETH_SHEZUSD_VAULT - "0x6261a4a8776343192f3bdeC04F7909591c375cfb", // WETH_SHEZETH_VAULT - "0x3d0D2bDd6f0118ad6194aab84f10Fde688502d16", // WBTC_SHEZUSD_VAULT - "0xED3529B182292f2e33988D852e1a9da0821FBC6e", // CRV_SHEZUSD_VAULT -] - -// SHEZ single staking v1 -const SHEZ_SINGLE_STAKING_V1 = "0xB775f1c426849Ba75891258abA496F69D2e6F570"; - -// SHEZ-ETH LP pool -const SHEZ_ETH_LP_POOL = "0x4574220A54b0306c2CBEc22A3B6C69158b27f1da"; - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:tokenContract', calls: vaults }) - return sumTokens2({ api, tokensAndOwners2: [tokens, vaults] }) -} - -module.exports = { - ethereum: { - tvl, - pool2: staking(SHEZ_ETH_LP_POOL, SHEZ_ETH_LP), - staking: staking(SHEZ_SINGLE_STAKING_V1, SHEZ), - }, -} \ No newline at end of file diff --git a/projects/shibance/index.js b/projects/shibance/index.js deleted file mode 100644 index 25f11e2a2d9..00000000000 --- a/projects/shibance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "We count liquidity on the dexes, pulling data from subgraphs", - kcc: { - tvl: getUniTVL({ factory: '0x1aDb92364888C9A65e65C287DaE48032681327c8', useDefaultCoreAssets: true, }), - }, - bsc:{ - tvl: getUniTVL({ factory: '0x092EE062Baa0440B6df6BBb7Db7e66D8902bFdF7', useDefaultCoreAssets: true, }), - }, -} \ No newline at end of file diff --git a/projects/shibanova/index.js b/projects/shibanova/index.js deleted file mode 100644 index 63f30751be1..00000000000 --- a/projects/shibanova/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport( - "bsc", - "0x251912dE998ec91DFDf67EfBe032d6f4aB5EC485" -); diff --git a/projects/shibaswap-v2/index.js b/projects/shibaswap-v2/index.js deleted file mode 100644 index 2d1c7d79c85..00000000000 --- a/projects/shibaswap-v2/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - ethereum: { factory: "0xD9CE49caf7299DaF18ffFcB2b84a44fD33412509", fromBlock: 21036458 }, - shibarium: { - factory: "0x2996B636663ddeBaE28742368ed47b57539C9600", fromBlock: 7518119 - }, -}) \ No newline at end of file diff --git a/projects/shibaswap/index.js b/projects/shibaswap/index.js deleted file mode 100644 index 7502a85dc6c..00000000000 --- a/projects/shibaswap/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -const FACTORY_ETHEREUM = '0x115934131916c8b277dd010ee02de363c09d037c'; -const FACTORY_SHIBARIUM = '0xc2b4218F137e3A5A9B98ab3AE804108F0D312CBC'; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: getUniTVL({ - factory: FACTORY_ETHEREUM, - useDefaultCoreAssets: true, - blacklist: [ - '0x6ADb2E268de2aA1aBF6578E4a8119b960E02928F', - '0xab167E816E4d76089119900e941BEfdfA37d6b32', - '0xF33893DE6eB6aE9A67442E066aE9aBd228f5290c', - '0x84FA8f52E437Ac04107EC1768764B2b39287CB3e', - '0x7121D00b4fA18F13Da6c2e30d19C04844E6AfDC8', - '0xC1bfcCd4c29813eDe019D00D2179Eea838a67703' - ], - }) - }, - shibarium: { - tvl: getUniTVL({ - factory: FACTORY_SHIBARIUM, - useDefaultCoreAssets: true, - }) - } -}; diff --git a/projects/shibbex/index.js b/projects/shibbex/index.js deleted file mode 100644 index d93bb5ae4dc..00000000000 --- a/projects/shibbex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shibarium', '0x6369e8dFaD8DB8378179D74C187f1D5DEa47Fa9F', { }) \ No newline at end of file diff --git a/projects/shibfi/index.js b/projects/shibfi/index.js deleted file mode 100644 index b7e699085c6..00000000000 --- a/projects/shibfi/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const {getUniTVL} = require("../helper/unknownTokens"); - -const native_staking_contract_pool1 = "0xF04d9E9CE754c9dA855Fd6A2b84efA9d4cD293F5"; -const native_staking_contract_pool2 = "0xDC8AE9ACC2ea98F7a3A40b3fFCA210435226566B"; -const shibfi_staking_contract = "0x1ae96F6E24Ca24Db5cA97797E528d63bfc9dD0Ef"; - -const assets = [ - "0x7915fE3be85D591cC0395D30AB76Ee7aA12a085D", //WBONE - ADDRESSES.null, // This is address of native token - "0xa98900F53fa3e5bFe6F2283F4C4E57ca3DF5387c", // SHIBFI TOKEN -]; - -let owners = [native_staking_contract_pool1, native_staking_contract_pool2, shibfi_staking_contract] - -let TVL_STAKING = sumTokensExport({ owners, tokens: assets }) -let TVL_AMM_DEX = getUniTVL({factory: "0x7956FdCe944ed2A0e2bDF25d2de6c6b34398B657", useDefaultCoreAssets: true,}) - -module.exports = { - shibarium: { - tvl: TVL_AMM_DEX, - staking: TVL_STAKING, - }, -}; \ No newline at end of file diff --git a/projects/shibshift/index.js b/projects/shibshift/index.js deleted file mode 100644 index 8d3fb0bf0e3..00000000000 --- a/projects/shibshift/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - pulse: { - tvl: getUniTVL({ factory: '0xD56B9f53A1CAf0a6b66B209a54DAE5C5D40dE622', useDefaultCoreAssets: true, }), - }, -}; \ No newline at end of file diff --git a/projects/shibui/index.js b/projects/shibui/index.js deleted file mode 100644 index 81d51e4c564..00000000000 --- a/projects/shibui/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - - -const Boba_SHIBUI = "0xf08ad7c3f6b1c6843ba027ad54ed8ddb6d71169b"; - -const Boba_SHIBUI_USDT = "0x3f714fe1380ee2204ca499d1d8a171cbdfc39eaa"; - - - -module.exports = { - boba: { - tvl: () => ({}), - pool2: pool2s([ - "0x6b8f4Fa6E44e923f5A995A87e4d79B3Bb9f8aaa3", // SHIBUI-USDT<>WAGMIv3 - ], [Boba_SHIBUI_USDT]), - staking: staking("0xabAF0A59Bd6E937F852aC38264fda35EC239De82", Boba_SHIBUI), - }, -} diff --git a/projects/shiden-dapps-staking/index.js b/projects/shiden-dapps-staking/index.js deleted file mode 100644 index 3e6be126438..00000000000 --- a/projects/shiden-dapps-staking/index.js +++ /dev/null @@ -1,36 +0,0 @@ -// const { ApiPromise, WsProvider } = require("@polkadot/api"); - -// const SDN_DECIMALS = 18; - -// async function tvl() { -// const provider = new WsProvider("wss://rpc.shiden.astar.network"); -// const api = new ApiPromise({ -// provider, -// }); - -// await api.isReady; -// const era = await api.query.dappsStaking.currentEra(); -// const result = await api.query.dappsStaking.generalEraInfo(era); -// const tvl = result.unwrap().locked; -// const SDNLocked = tvl / 10 ** SDN_DECIMALS; - -// return { -// shiden: SDNLocked, -// }; -// } - -// module.exports = { -// methodology: -// "TVL considers SDN tokens deposited to the Dapps-Staking program", -// shiden: { -// tvl, -// }, -// }; - -// This has been delisted - -module.exports = { - shiden: { - tvl: () => ({}) - } -} diff --git a/projects/shido-dex/index.js b/projects/shido-dex/index.js deleted file mode 100644 index 5300e5c4570..00000000000 --- a/projects/shido-dex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3GraphExport } = require('../helper/uniswapV3') -module.exports = { - shido: { tvl: uniV3GraphExport({ graphURL: 'https://ljd1t705przomdjt11587.cleavr.xyz/subgraphs/name/shido/mainnet', name: 'shido-dex' }) } -} \ No newline at end of file diff --git a/projects/shield-protocol/index.js b/projects/shield-protocol/index.js deleted file mode 100644 index bc354591350..00000000000 --- a/projects/shield-protocol/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require('../helper/unknownTokens') - -const Contracts = { - bsc: { - shield: "0xD9E90DF21F4229249E8841580cDE7048bF935710", - bank: "0xcc40896e6d0C8Dd93Bd9DFaF11118B338015EcD4", - multiFeeDistribution: "0x36D7fa1C701aAA811F8736C40435C50Bb77BF843", - chef: "0xd8d4bf1bcB9Db777188A20Ee458e9F560092644c", - lps: [ - "0xA976a4ba5076f1264e0f8fFB5b9ff4aC9Fd615fa", // SHIELD_BNB_LP - "0xb5A343D746be5942B37e222678979F124ecE8f68", // BNBX_BNB LP - ], - }, -}; - -async function staking(api) { - const bal = await api.call({ abi: 'uint256:totalSupply', target: Contracts.bsc.multiFeeDistribution}) - api.add(Contracts.bsc.shield, bal) -} - -module.exports = { - bsc: { - tvl: sumTokensExport({ owner: Contracts.bsc.bank, tokens: [ADDRESSES.bsc.WBNB] }), - pool2: sumTokensExport({ owner: Contracts.bsc.chef, tokens: Contracts.bsc.lps, useDefaultCoreAssets: true, }), - staking, - }, -}; diff --git a/projects/shield/index.js b/projects/shield/index.js deleted file mode 100644 index 9b1b1ac0749..00000000000 --- a/projects/shield/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const publicPool = "0x65081C21228dc943f47b1Cdb394Eb8db022bc744"; -const privatePool = "0xFa4e13EfAf2C90D6Eaf5033A4f3cB189ee4eF189"; -const pools = [publicPool, privatePool]; - -module.exports = { - methodology: 'Dual liquidity pool is an innovation by Shield that allows the private pool to hedge the market making risk, while the low-risk public pool can accommodate liquidity to guarantee abundant liquidity on the market. TVL on Shield should combine liquidity from both public pool and private pool.', - bsc: { - tvl: sumTokensExport({ owners: pools, token: ADDRESSES.bsc.USDT}), - }, -} diff --git a/projects/shiftdollar/index.js b/projects/shiftdollar/index.js deleted file mode 100644 index 149bf76342f..00000000000 --- a/projects/shiftdollar/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokens2 } = require('../helper/unwrapLPs') -const { tombTvl } = require('../helper/tomb') - -const SHIFT = "0x4f9bd6be8455ee2b3c7ff76bbb885e6654797137"; -const SFSHARE = "0xE64fF204Df5f3D03447dA4895C6DA1fB590F1290"; -const boardroom = "0x251672021bE4Cbf8eD5a6Acb66478a29c95c7Cb5"; -const rewardPool = "0x585ab630996dB20F7aCc0dbC48e7c332620E7D59"; -const USDC = ADDRESSES.cronos.USDC -const factory = "0x9fB58aBA4a3aD49d273b42cb8F495C58e9a8d14F" -const lps = [ - "0xCbEA9C785D0D6233d3F965baC901ea42A7a3B05c", - "0x69D31656669d798112D910A81ED39A9914Eabb8A", -]; -const chain = 'cronos' -module.exports = tombTvl(SHIFT, SFSHARE, rewardPool, boardroom, lps, chain, undefined, false, lps[0]) - -module.exports[chain].tvl = async (api) => { - return sumTokens2({ api, owner: factory, tokens: [USDC ]}) -} diff --git a/projects/shimmerbridge/index.js b/projects/shimmerbridge/index.js deleted file mode 100644 index cd40ff65672..00000000000 --- a/projects/shimmerbridge/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -// Same address of the OriginalTokenBridge contract on all primary chains -const ORIGINAL_TOKEN_BRIDGE_ADDRESS = - "0x9C6D5a71FdD306329287a835e9B8EDb7F0F17898"; - -// Tokens on primary chains (e.g. Ethereum, Polygon and etc) tranferred to ShimmerEVM. -// These tokens are locked in the OriginalTokenBridge contract. -// Sum of all these token balances held by the OriginalTokenBridge is the TVL per token -const bridgedTokensPerPrimaryChain = [ - { - // USDC - ethereum: ADDRESSES.ethereum.USDC, - bsc: ADDRESSES.bsc.USDC, - arbitrum: ADDRESSES.arbitrum.USDC_CIRCLE, - polygon: ADDRESSES.polygon.USDC_CIRCLE, - base: ADDRESSES.base.USDC, - avax: ADDRESSES.avax.USDC, - optimism: ADDRESSES.optimism.USDC_CIRCLE, - fantom: ADDRESSES.fantom.USDC_L0, - }, - { - // USDT - ethereum: ADDRESSES.ethereum.USDT, - bsc: ADDRESSES.bsc.USDT, - arbitrum: ADDRESSES.arbitrum.USDT, - polygon: ADDRESSES.polygon.USDT, - optimism: ADDRESSES.optimism.USDT, - avax: ADDRESSES.avax.USDt, - }, - { - // WBTC - ethereum: ADDRESSES.ethereum.WBTC, - arbitrum: ADDRESSES.arbitrum.WBTC, - polygon: ADDRESSES.polygon.WBTC, - optimism: ADDRESSES.optimism.WBTC, - }, - { - // WETH - ethereum: ADDRESSES.ethereum.WETH, - arbitrum: ADDRESSES.arbitrum.WETH, - polygon: ADDRESSES.polygon.WETH_1, - optimism: ADDRESSES.optimism.WETH_1, - base: ADDRESSES.base.WETH, - }, - { - // AVAX - avax: ADDRESSES.avax.WAVAX, - }, - { - // MATIC - polygon: ADDRESSES.polygon.WMATIC_2, - }, - { - // BNB - bsc: ADDRESSES.bsc.WBNB, - }, - { - // FTM - fantom: ADDRESSES.fantom.WFTM, - }, -]; - -function chainTvl(chain) { - return async (api) => { - const toa = []; - bridgedTokensPerPrimaryChain.forEach((token) => { - if (!token[chain]) return; - toa.push([token[chain], ORIGINAL_TOKEN_BRIDGE_ADDRESS]); - }); - return api.sumTokens({ tokensAndOwners: toa }); - }; -} - -let chains = bridgedTokensPerPrimaryChain.reduce((allChains, token) => { - Object.keys(token).forEach((key) => allChains.add(key)); - return allChains; -}, new Set()); - -module.exports.methodology = `Tokens bridged via shimmerbridge.org are counted as TVL`; -module.exports.misrepresentedTokens = true; -module.exports.hallmarks = [ - ["2023-12-27", "First Launch"], -]; - - -Array.from(chains).forEach(chain => { - module.exports[chain] = { tvl: chainTvl(chain)} -}) \ No newline at end of file diff --git a/projects/shimmersea/index.js b/projects/shimmersea/index.js deleted file mode 100644 index a5a63a83adf..00000000000 --- a/projects/shimmersea/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens'); -module.exports = uniTvlExports({ - shimmer_evm: '0x4fb5d3a06f5de2e88ce490e2e11d22b840d5ac47', - iotaevm: '0x349aaAc3a500014981CBA11b64C76c66a6c1e8D0' -}) diff --git a/projects/shinobi-sol/index.js b/projects/shinobi-sol/index.js deleted file mode 100644 index 763e467561b..00000000000 --- a/projects/shinobi-sol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('spp1mo6shdcrRyqDK2zdurJ8H5uttZE6H6oVjHxN1QN', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/shinobi/index.js b/projects/shinobi/index.js deleted file mode 100644 index 292b3df7925..00000000000 --- a/projects/shinobi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xba831e62ac14d8500cef0367b14f383d7b1b1b0a) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - ubiq: { - tvl: getUniTVL({ factory: '0xba831e62ac14d8500cef0367b14f383d7b1b1b0a', useDefaultCoreAssets: true }), - }, -}; diff --git a/projects/shipyard-finance/abi.json b/projects/shipyard-finance/abi.json deleted file mode 100644 index 171284349e1..00000000000 --- a/projects/shipyard-finance/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "balance": "uint256:balance", - "want": "address:want" -} \ No newline at end of file diff --git a/projects/shipyard-finance/index.js b/projects/shipyard-finance/index.js deleted file mode 100644 index 205e43e8fa5..00000000000 --- a/projects/shipyard-finance/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ARBITRUM = { - vaults: ['0xb5AAa74CbA960D9Cbb6beE05e5435299308C682c'], -}; -const AVALANCHE = { - vaults: ['0x3B8Cfb57A87a091A90b5a3c00dF0F6EA0a371Ef7'], -}; -const ETHEREUM = { - vaults: ['0x0bCB75D9c5d4D33EE36bFeAfa94F8b75080b4387'], -} - -function chainTvl(chain, config) { - return async (api) => { - const vaults = config.vaults; - const tokens = await api.multiCall({ abi: 'address:want', calls: vaults}) - const vals = await api.multiCall({ abi: 'uint256:balance', calls: vaults}) - api.addTokens(tokens, vals) - return api.getBalances() - } -} - -module.exports = { - doublecounted: true, - arbitrum: { - tvl: chainTvl('arbitrum', ARBITRUM), - }, - avax: { - tvl: chainTvl('avax', AVALANCHE), - }, - ethereum: { - tvl: chainTvl('ethereum', ETHEREUM), - }, - hallmarks: [ - [1677200400, "Vaults deprecated"] - ], - deadFrom: '2023-02-23', -}; diff --git a/projects/shiroswap/index.js b/projects/shiroswap/index.js deleted file mode 100644 index a6fc1b7daa3..00000000000 --- a/projects/shiroswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const SHIR = "0x4ddba615a7F6ee612d3a23C6882B698dFBbef7E7"; -const masterchef = "0xD91b2cD0f07A453Bd24F6a798f40f6972e616C9f"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", SHIR, false), -}; diff --git a/projects/shoebillFinance-v2/index.js b/projects/shoebillFinance-v2/index.js deleted file mode 100644 index 61421cb7fe5..00000000000 --- a/projects/shoebillFinance-v2/index.js +++ /dev/null @@ -1,95 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const { mergeExports } = require("../helper/utils"); -const { aaveExports } = require("../helper/aave"); - -module.exports = mergeExports([ - { - klaytn: compoundExports2({ - comptroller: "0xEE3Db1711ef46C04c448Cb9F5A03E64e7aa22814", - cether: "0xac6a4566d390a0da085c3d952fb031ab46715bcf", - }), - }, - { - wemix: compoundExports2({ - comptroller: "0xBA5E3f89f57342D94333C682e159e68Ee1Fc64De", - cether: "0xD42ad8346d14853EB3D30568B7415cF90C579D83", - }), - }, - { - manta: compoundExports2({ - comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", - cether: "0xE103F874B2D144C5B327FA3d57069Bb19c0779e2", - }), - }, - { - manta: compoundExports2({ - comptroller: "0x3413Dc597aE3bE40C6f10fC3D706b884eaCF470A", - }), - }, - { - manta: compoundExports2({ - comptroller: "0x4e4b415F5aa78a44CE1fc259D2cEc47BF50A9216", - }), - }, - { - mode: compoundExports2({ - comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", - cether: "0xD13bE8b716b18265e294831FCb1330d170840BB3", - }), - }, - { - metis: compoundExports2({ - comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", - cether: "0x386adCa3c7D5C90523287933B05919aFcC2883dE", - }), - }, - { - bsquared: compoundExports2({ - comptroller: "0x80E81348D9386Eb4d10c2A32A7458638cD3308dF", - cether: "0x8dbf84c93727c85DB09478C83a8621e765D20eC2", - }), - }, - { - bsquared: compoundExports2({ - comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", - }), - }, - { - bob: compoundExports2({ - comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", - cether: "0xb4255533Ad74A25A83d17154cB48A287E8f6A811", - }), - }, - { - bob: compoundExports2({ - comptroller: "0xB7ed6c062caAaCb1A13f317E0A751289280FC306", - }), - }, - { - bob: compoundExports2({ - comptroller: "0x1e514767F5cFe1ddE599dd39a79666E3BeEAaf7d", - }), - }, - { - kroma: compoundExports2({ - comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", - cether: "0xD13bE8b716b18265e294831FCb1330d170840BB3", - }), - }, - { - fuse: compoundExports2({ - comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", - cether: "0xD13bE8b716b18265e294831FCb1330d170840BB3", - }), - }, - { - zklink: compoundExports2({ - comptroller: "0x89e348e0ab4D83aEDbf1354004552822a805a12e", - cether: "0x4dA697a89ea1D166881362b56E6863294820eC97", - }), - }, - { - zeta: aaveExports(undefined, undefined, undefined, ['0x2B6647f63f6Fab5c73e96FBf974f4ed2AB8a4308'], { v3: true }) - } - -]); diff --git a/projects/shoebillFinance/index.js b/projects/shoebillFinance/index.js deleted file mode 100644 index 4332636b09d..00000000000 --- a/projects/shoebillFinance/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const { toUSDTBalances } = require("../helper/balances"); -const methodologies = require("../helper/methodologies"); - -const protocolDataProviderAbi = "function getAllAggregatedReservesData() view returns (tuple(tuple(string internalSymbol, address internalAddress, string externalSymbol, address externalAddress, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress) token, tuple(uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, uint256 reserveFactor, bool usageAsCollateralEnabled, bool borrowingEnabled, bool stableBorrowRateEnabled, bool isActive, bool isFrozen, uint256 decimals) configuration, tuple(uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp, bool isCollateral, address yieldAddress) overview, uint256 oraclePrice)[])" - -async function tvl(api) { - const shoebillDataProviderAddress = config[api.chain].dataProvider - const aggregatedData = await api.call({ target: shoebillDataProviderAddress, abi: protocolDataProviderAbi }) - - const data = aggregatedData.filter(i => i.overview).map((e) => { - return { - address: e.token.externalAddress, - tvl: e.overview.availableLiquidity * e.oraclePrice / (10 ** e.configuration.decimals), - }; - }); - const totalSupplyTvl = data.reduce((a, b) => a + +b.tvl, 0) / 1e8; - - return toUSDTBalances(totalSupplyTvl); -} -async function borrowed(api) { - const shoebillDataProviderAddress = config[api.chain].dataProvider - const aggregatedData = await api.call({ target: shoebillDataProviderAddress, abi: protocolDataProviderAbi }) - - const data = aggregatedData.map((e) => { - return { - borrowed: e.overview.totalVariableDebt * e.oraclePrice / (10 ** e.configuration.decimals), - }; - }); - const borrowed = data.reduce((a, b) => a + b.borrowed, 0) / 1e8; - - return toUSDTBalances(borrowed); -} -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - methodology: methodologies.lendingMarket, -}; - -const config = { - klaytn: { dataProvider: '0xBdc26Ba6a0ebFD83c76CEf76E8F9eeb7714A5884', }, - kava: { dataProvider: '0xb2631276eE6524C6A7f205600F44E1408F21235F', }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed, } -}) \ No newline at end of file diff --git a/projects/shprd/index.js b/projects/shprd/index.js deleted file mode 100644 index a3073bf8292..00000000000 --- a/projects/shprd/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const protocolConfig = { - factories: { - ethereum: { address: '0xf14c4b935054b8d1017ad96c9a265eb7f8ecf13c' }, - arbitrum: { address: '0xf0ee0b31aae29f0bea8ff806c101377fc92e4ffa' }, - } -} - -async function tvl(api) { - // 1. get all vaults deployed on chain - const factoryAddress = protocolConfig.factories[api.chain].address - const factoryState = await api.call({ - abi: "function getFactoryState() view returns (address[], address, address, address, address, address)", - target: factoryAddress, - }); - const vaultAddresses = factoryState[0] - - // 2. get all tradable erc20s for these same vaults - const tokens = await api.call({ abi: "address[]:getWhitelistedTokens", target: factoryAddress, }); - return api.sumTokens({ owners: vaultAddresses, tokens, }) -} - - -module.exports = { - start: '2023-07-01', - hallmarks: [ - [1695396647, "Fees distribution #1"], - [1705582439, "Fees distribution #2"], - ], - methodology: `TVL is the total value of erc20s managed by SHPRD vaults` -}; - -Object.keys(protocolConfig.factories).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/shrike-perps/index.js b/projects/shrike-perps/index.js deleted file mode 100644 index 46c9de04910..00000000000 --- a/projects/shrike-perps/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - polygon_zkevm:{ - tvl: gmxExports({ vault: '0x3371195e36f45cBDc6cC0EF9e94d87AC8424621D', }) - }, -}; diff --git a/projects/shroomy-protocol/index.js b/projects/shroomy-protocol/index.js deleted file mode 100644 index a5966307473..00000000000 --- a/projects/shroomy-protocol/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave'); - -module.exports = { - ink: aaveExports('ink', '0xE2fA2C2da2ec22693eb9dE8d95944A54E9FC0D49', undefined, ["0x734A292227aFD525Dc9DC668006Cc264c987959C"], { v3: true}) -}; diff --git a/projects/shui/index.js b/projects/shui/index.js deleted file mode 100644 index dfade6235e9..00000000000 --- a/projects/shui/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const SCFX_TokenAddress = "0x1858a8d367e69cd9E23d0Da4169885a47F05f1bE"; -const { sumTokensExport, } = require("../helper/unknownTokens"); -const SHUI2CFX = "0x4f57462a355902d6263aC4E8F6CE7Bf215B577F2"; - -const WCFX = ADDRESSES.conflux.WCFX; -const CFX_SHUI_LP_TokenAddress = "0x561c1412D926b3D75BaB15ABA1d7c10E31Ffb721"; -const CFX_SCFX_LP_TokenAddress = "0x41e9e50952d8a2e489d0b866b78835bc2ad2a0fa"; - -module.exports = { - conflux: { - tvl: async (api) => { - const ratioDepositedBySupply = await api.call({ - target: SCFX_TokenAddress, - abi: "function ratioDepositedBySupply() public view returns (uint256)" - }); - const totalDeposited = await api.call({ - target: SCFX_TokenAddress, - abi: "function totalDeposited() public view returns (uint256)" - }); - return { - ["conflux:" + WCFX]: totalDeposited * ratioDepositedBySupply / 1e9 - }; - }, - pool2: sumTokensExport({ owner: SHUI2CFX, coreAssets: [WCFX], tokens: [CFX_SHUI_LP_TokenAddress, CFX_SCFX_LP_TokenAddress] }), - } -}; diff --git a/projects/sicx/index.js b/projects/sicx/index.js deleted file mode 100644 index d18836c60ae..00000000000 --- a/projects/sicx/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { call } = require("../helper/chain/icx") - -const stakingContract = "cx43e2eec79eb76293c298f2b17aec06097be606e0" -const sIcxTokenContract = "cx2609b924e33ef00b648a409245c7ea394c467824" - -async function getTotalClaimableIcx() { - let response = await call(stakingContract, 'totalClaimableIcx', {},{ parseInt: true }) - return response / 10 ** 18 -} - -async function getTotalSupply() { - let response = await call(sIcxTokenContract, 'totalSupply', {}, { parseInt: true }) - return response / 10 ** 18 -} - -async function fetch() { - - let totalClaimableIcx = await getTotalClaimableIcx(); - let totalSupply = await getTotalSupply(); - // tvl = ICX/USD Price * (totalClaimableIcx + totalSupply from sICX token SCORE * getTodayRate) - const tvl = totalClaimableIcx + totalSupply; - return { 'icon': tvl } -} - -module.exports = { - timetravel: false, - icon: { tvl: fetch }, -} diff --git a/projects/sideshift/index.js b/projects/sideshift/index.js deleted file mode 100644 index 2dc5c732f8e..00000000000 --- a/projects/sideshift/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const xaiAddress = "0x35e78b3982e87ecfd5b3f3265b601c046cdbe232"; -const svxaiAddress = "0x3808708e761b988d23ae011ed0e12674fb66bd62"; - -async function tvl(timestamp, block) { - const supply = await sdk.api.erc20.totalSupply({ - target: svxaiAddress, - block, - }); - - return { - [xaiAddress]: supply.output, - }; -} - -module.exports = { - methodology: "Sum of XAI tokens held by stakers", - ethereum: { - tvl: () => ({}), - staking: tvl, - }, -}; diff --git a/projects/sideswap-fi/index.js b/projects/sideswap-fi/index.js deleted file mode 100644 index 77b6923cb05..00000000000 --- a/projects/sideswap-fi/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('zkfair', '0x3F5a6e62cccD2C9AAF3dE431e127D65BC457000a') diff --git a/projects/sienna-lend/index.js b/projects/sienna-lend/index.js deleted file mode 100644 index a791a7f3efc..00000000000 --- a/projects/sienna-lend/index.js +++ /dev/null @@ -1,96 +0,0 @@ -const { queryContract, } = require('../helper/chain/secret') -const { PromisePool } = require('@supercharge/promise-pool'); -const { sleep } = require('../helper/utils'); - -const LEND_OVERSEER_CONTRACT = "secret1pf88n9hm64mn58aw48jxfs2fsvzr07svnrrdlv"; - -let lendingMarkets = null - -async function getLendMarkets() { - if (!lendingMarkets) lendingMarkets = _get() - return lendingMarkets - - async function _get() { - let markets = [], hasMore = true, start = 0, limit = 30 - - while (hasMore) { - const { entries, total } = await queryContract({ - contract: LEND_OVERSEER_CONTRACT, data: { - markets: { - pagination: { - limit: 30, - start - } - } - } - }); - start += limit - hasMore = total > start - markets = markets.concat(entries.map(i => i.contract.address)); - } - - const data = [] - - const { errors } = await PromisePool.withConcurrency(3) - .for(markets) - .process(async (addr) => { - - let { total_borrows, total_supply, } = await queryContract({ contract: addr, data: { state: {} } }) - let exchange_rate = await queryContract({ contract: addr, data: { exchange_rate: {} } }) - const { address } = await queryContract({ contract: addr, data: { underlying_asset: {} } }) - // const { token_info: { decimals }} = await queryContract({ contract: address, data: { token_info: {} } }) - const scale = exchange_rate - data.push({ address, total_borrows: total_borrows * scale, total_supply: total_supply * scale }) - await sleep(1000) - }) - - if (errors && errors.length) - throw errors[0] - - return data - } - -} - -async function tvl(api) { - const data = await getLendMarkets() - data.forEach(i => { - api.add(i.address, i.total_supply - i.total_borrows) - }) - - return api.getBalances() -} - -async function borrowed(api) { - const data = await getLendMarkets() - data.forEach(i => { - api.add(i.address, i.total_borrows) - }) - - - return api.getBalances() -} - -async function staking(api) { - const SIENNA_SINGLE_SIDED_POOLS = [ - { address: "secret1ja57vrpqusx99rgvxacvej3vhzhh4rhlkdkd7w", version: 1 }, - { address: "secret109g22wm3q3nfys0v6uh7lqg68cn6244n2he4t6", version: 2 }, - { address: "secret1uta9zf3prn7lvc6whp8sqv7ynxmtz3jz9xkyu7", version: 3 } - ]; - - const SIENNA_TOKEN_ADDRESS = "secret1rgm2m5t530tdzyd99775n6vzumxa5luxcllml4"; - await Promise.all(SIENNA_SINGLE_SIDED_POOLS.map(async ({ address, version }) => { - if (version === 3) { - const fetchedPool = await queryContract({ contract: address, data: { rewards: { pool_info: { at: new Date().getTime() } } } }); - api.add('sienna', fetchedPool.rewards.pool_info.staked / 1e18, { skipChain: true }) - } else { - const fetchedPool = await queryContract({ contract: address, data: { pool_info: { at: new Date().getTime() } } }); - api.add('sienna', fetchedPool.pool_info.pool_locked / 1e18, { skipChain: true }) - } - })); - return api.getBalances() -} - -module.exports = { - secret: { tvl, borrowed, staking, } -} \ No newline at end of file diff --git a/projects/sienna/index.js b/projects/sienna/index.js deleted file mode 100644 index 5713dd4b987..00000000000 --- a/projects/sienna/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const { queryContract, } = require('../helper/chain/secret') -const { transformDexBalances } = require('../helper/portedTokens') -const { PromisePool } = require('@supercharge/promise-pool') -const sdk = require('@defillama/sdk') -const { sleep } = require('../helper/utils') - -async function tvl(api) { - const factiories = ["secret18sq0ux28kt2z7dlze2mu57d3ua0u5ayzwp6v2r", "secret1zvk7pvhtme6j8yw3ryv0jdtgg937w0g0ggu8yy"] - const data = [] - await Promise.all(factiories.map(i => getExchanges(i, data))) - return transformDexBalances({ data, chain: api.chain }) -} - -async function getExchanges(factory, data) { - const pools = [] - const limit = 30 - let hasMore = true - do { - const { list_exchanges: { exchanges } } = await queryContract({ contract: factory, data: { list_exchanges: { pagination: { start: pools.length, limit } } } }) - hasMore = exchanges.length === limit - - sdk.log(factory, exchanges.length, pools.length, hasMore) - pools.push(...exchanges) - const { errors } = await PromisePool.withConcurrency(10) - .for(exchanges) - .process(async (i) => { - let { address, contract } = i - if (!address) address = contract.address - const { pair_info } = await queryContract({ contract: address, data: "pair_info" }) - data.push({ - token0: transformToken(pair_info.pair.token_0, pair_info), - token0Bal: pair_info.amount_0, - token1: transformToken(pair_info.pair.token_1, pair_info), - token1Bal: pair_info.amount_1, - }) - await sleep(1000) - }) - - console.log(errors, errors.length, factory, exchanges.length, pools.length, hasMore) - // if (errors && errors.length) - // throw errors[0] - - } while (hasMore) -} - -function transformToken(addr, poolData) { - if (!addr?.custom_token) { - // console.log(JSON.stringify(addr, null, 2)) - // console.log(JSON.stringify(poolData, null, 2)) - throw new Error("No custom token") - } - return addr.custom_token.contract_addr -} - -module.exports = { - timetravel: false, - secret: { tvl } -} \ No newline at end of file diff --git a/projects/sierra/index.js b/projects/sierra/index.js deleted file mode 100644 index 76920615074..00000000000 --- a/projects/sierra/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const token = "0x862D2E466C28dB7961E953083854e19481478842"; -const tokenStaking = "0x3AcaFC2c652C7533bF2782F947FCB8d7A8Bb3913"; -const treasury = "0x8eA72332670987463413916019e598040A8537Af"; -const treasuryTokens = [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0xCaC0101426fDbFCfE7baff17dDc6652D92540480", true] // SRA-MIM JLP -]; - -module.exports = { - hallmarks: [ - [1648765747, "Rug Pull"] - ], - deadFrom: 1648765747, - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "avax", tokenStaking, token, undefined, undefined, false) -} diff --git a/projects/sifchain.js b/projects/sifchain.js deleted file mode 100644 index 9119047cf0d..00000000000 --- a/projects/sifchain.js +++ /dev/null @@ -1,21 +0,0 @@ -const { get } = require('./helper/http') -const { endPoints } = require('./helper/chain/cosmos') - -async function tvl() { - // const getPoolsRes = await get('https://api.sifchain.finance/clp/getPools') - const getPoolsRes = await get(endPoints.sifchain + '/clp/getPools') - - const total = getPoolsRes.result.pools - .map(pool => +pool.native_asset_balance) - .reduce((sum, current) => sum + current, 0) - - return { - sifchain: total * 2 / 1e18 - } -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - sifchain: { tvl } -} diff --git a/projects/sigma-protocol/index.js b/projects/sigma-protocol/index.js deleted file mode 100644 index cc5aee48c85..00000000000 --- a/projects/sigma-protocol/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const staticPoolStableToken = ADDRESSES.bsc.USDT //usdt -const staticPool = "0x2b9C1F069Ddcd873275B3363986081bDA94A3aA3" // sigma staticPool -const sy = "0x8B98563d66B74e5a644BFf78fC72c86bbA847a29" // sigma token 1:1 slisBNB -const poolManager = "0x0a43ca87954ED1799b7b072F6E9D51d88Cca600E" -const longPool = '0x31c464Cfe506d44CEaA86C05CDBB94b5c94f70fb' // WBNB long pool -const longPoolToken = ADDRESSES.bsc.WBNB // WBNB - -module.exports = { - doublecounted: true, - bsc: { - tvl: async (api) => { - const stableTotal = await api.call({ target: staticPool, abi: "uint256:totalStableToken" }) - api.add(staticPoolStableToken, stableTotal) - const rawColls = await api.call({ target: longPool, abi: "uint256:getTotalRawCollaterals" }) - api.add(longPoolToken, rawColls) - await sumTokens2({ api, owners: [poolManager], tokens: [sy] }) - } - }, -}; \ No newline at end of file diff --git a/projects/sigmafi/index.js b/projects/sigmafi/index.js deleted file mode 100644 index 926d25bb709..00000000000 --- a/projects/sigmafi/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { nullAddress } = require('../helper/tokenMapping') -const { sumTokensExport } = require('../helper/chain/ergo') -const { get } = require('../helper/http') - -async function borrowed(api) { - const data = await get('https://api.sigmaexplorer.org/sigmafi/loans/ongoing?limit=10000') - data.forEach(({ repayment: { tokenId, amount}}) => { - api.add(tokenId === 'erg' ? nullAddress : tokenId, amount) - }) - return api.getBalances() -} - -module.exports = { - timetravel: false, - ergo: { - tvl: sumTokensExport({ owners: [ - '47r8CNpYJhLaJy9vQAyyhVX7SLu73dg8EDmi9zzei7YWomvTAbNaZMAHdM38TsFoiZfAcKuyrgngD6ZS2uPQktLfFpvypxkRiRi9LswRYd5tk6B5HHDsFNMfLcdqeWT9RDR2SRq1zm2HF9F913aY1gc9gVyeh8PGED2ThKJ2NCG19XhyPqCbgTFY5uTC6RaqpGCdH9p58fD4DWDd46D3EfUXz3XLzqGQvDGXTghkh9UtZ1LB7nFFoPDFc2QVDt6BCtTQwq4Jh9vFfTfBG9q6ReVF5cVX7nA6vXhWjUuHKMd7Zw5anM2u95e', - '2f7L4F3Q9eCjdWRmxSENw18Bw5SPAf3vBaimRqgpWB5JayiqSWG2tvnc6kF8ae8mpYwtZasmVDzmgjbfa8EBTdA1u55yB8ypRZDDFhs6DmhQekuGvzBoViApMyKdAXCPriXMaJWgHxAdjtR7QhXSjdnyozxZ7ApXrQY6hDSX6H2Fg9siuGUQpTQ3oJDa8nScMGdLNK2T5A7oHs', - '2jMoa21VMLebD9C3j1jXHBCSZitYqMdcqJt7jSKAVwAsVaKifkspA8jfSeRp2dnnQVgjdsXfRDzo4h1hmroTnPsMAB8qiBnyGjStmMxxFirroejmZFgH25zouApdAZtjTERNrvn67QFPGhGRpxopGEZYrQbpj3PmNR4UPyvKkCHzWbkM7cMA2o45RadU4gY6LAoDwvop35QmPsbP2CuETfJPWUKHgDw87wzwPfpBHYxNht3btUuaNB7ifL1To8KotbFKQyRQ3s84vsbed5abchfWhgSkU6HDvJJM9vmt2axcC5P72jEtPsdK19oGw3FsYZp5S9DpKmQRJasDStTRtgBEbD6vnP6orTrje9oJEpvarFdRE9gG1gQKoQdUn5PtssaVhWG3yX67BSyy1mQVkdPq17CrD4di6mhuakBKi9Wn6YTFCvdeLqfSTAaFJPA3uitsqpSkLxNGyqMMtHZ5oahuZ3jVtx3As5N2ZTt835XUYsFE31n3CzfZPvyHCDtahYTRqeCBvPMZw8vdh3a1XtfqNX15AmQy7Jf8W6Y7McsKQVwG5gogXu6XSSCrGn9r2j9m3DBPitUPpEdNqavvxX5Jqrrp2UNLNNfsZZRT26ifnWWa1W5LnjVQVeRFdki5Haf', - '3FdyuY8fqeTtYcsuvTsmsw4ZBGde2cad6hyntGxzSY3rd4JtTwTvK64xp3XJZvYNTijrTMZMQxkFiULuHpq46VFbAiSSHXLe1qy5WXNRELj4tcx6wEPbSDqzDyVbY6wKFQhmvYQT2XjqLJAiBGV9F6f2uXrjXFPzPnXpVeJnWc8ob1wMqbfgBQKdfu24qx3pejkAfAz2hmQQ57xgzGwHCcGyJdad7UxwmDetAUER8iwE32rygGCmqXaVeKGcJ33epYNGpDLPnYUg3Qz7eYuHHb7mAqwkEp6XGE1jWbf8nS7TA1taNpakssbWYN2YmB9NBG8nWNzLhc9QBdqyAn9WQ63Jh1znt2up6sQJR7xnon9ZsYoeo7bErzg4uoJbTLzwjhZBJ9En9bMX72xUb5zhvSSua6CseMMA6s86g2mwrieRwqFM7CGDypy78MzWS1nagUBKLet8LAFFpb6DKBK1h2HpAvLnMbWB7Kp3rJ4be6ed5crNdZTqhbSww96P2KNSZemhwfgAkUFjMJzB2dEG9VNAW1dMk5nBrS8JsRHhYpPqFcJiFtQvcar1ijs2PqsR9k4P41Y99iomfYXkSoA6z612v1U1C19ASVurzuxGP1vNwNyKLceFVTYXbgkgUFX8Z2nwMz6d2TCa4XTpt9daV5sBV88YJgCiYbL5QhxnoTdYRZbxu725jnV7gbnX9FWjLNaXYJubi5u8kPs3MYzSALeUvtfx6wJV1XyBn5DMbvy8XgFFMKyxtUrfU3dAVaZmUZJnYy8Dz6qrf8tyKx3uU7RfosjV7rcAFRDpozznWRfsxZUir5EzcVFQc9NbjB4HdgJxxvUJ9Nr9F8XCQLL89wCTtaNZBFF284qLtrQ', - '3FdyuY8fqeBRBVN7uhPo71JiPcmugpqdCjG5gakgXSPR7DKEGbXWkwm4dfer46kn8nCbAK1Ycw8svJGj2fMLM2kiA7GsZZdVEqDeR9K3RcVHRUCATB9qo9pf9FmekGVfG6pbzRMNrPp3TaWimHFhZCLUyqukuSaf4h9JuDqJE29hHCtdb8W7AeXTV2kfB18jUpDhCKxET3EnoBTHC1buAg3SdhPiBhVAYJFw5NVfph6kfV37nHn6hdawVrdtLbnC47xgQ7KzeMG9spHbEbn73Mz9bhCdPeqnS75jAQSjokrDLDeQSgKU8aN3Cb4i5oE5MUT9p55ignJnjzJ335UfAiEGve4tbr489sCcZ5sCNeXZEGK1WYWp39RbwdpdsfhyrVNKCpXn9xHsjSPwZVGduc5fanzGDGHEESEJCV1JYzzJ32ai274q1aQMgJuPB3CSvcy4pqcJe2XNKVSMrrwou9VXNrpeNv4DTDcnVSjB8kc6omgSYKaWBjGwaSVs6vuHK9gLfvQrDa3G1EMhfpuM3Vqs2TaHqxjc4XQyGRjJnhhqKwN4td5bo54MXEa8kojxXrXSFbi2DwcVzMQemjzxs1m5VqLv3wjCSzP9wXDEhyFMCsRbfNPTju5j7HVsRf4YBgViG6vXbAvbUcE7bA3nHMpB9SKyuGQZRVabo5899yfJpWyUM1DEwAnPDjoK4v1UYsSvUBHfs6adrHWu6oVDhZBFZZXYMVvmo56jhSXhGYTrecnhPY25a2UV5cN64bPcE3vFnW7Lpvo1nvh8XYGT9bJuP9fn1ohgnKqBwpgnwMEZxoCWHqvSsbyp4SV6nMcA416YCBYrNmwfiwFqmhYYFfAYCFdutEx52xa8E2r', - '3FdyuY8fqvU21gvgv1A5Vo8XkkR4ba8RzyqwDv6ig7466wTwax4fbJc5bJMeGnYrRsvS5uiAisS7gykBJsxYgE4LRuRuKr9KzZn4BtcNeT3Hsw3zncjE7yhzSPKoW7FkbijxtTUoKYXuby5W8TEk9L1kBaDzgKRpG1YahyHVghtJYgMcy3utVjRZXxBqZbij3cZtqSNqk3UZJmTBZKufYT17C5Mae62DckHwk6ZSZi9GVSTvw2xiENo5koKya67JcX4n23WPQ4dCVsEKcQ2cGjETJhSCi4fsvFUteGkayZW9Q4jqkuum3hz3imhdSAyPvhHnRTMEPG7PKvnn4E7hbiPsbTRAd5L8DruVosvQkcyFPXJ8qhaKDrzmcqy4baHzWHN5GRqY1CrFMnSMJTmznHXzdPwm4MfdjHXppvxBsmDTFxoRdGtriafByVmvYtkKmH9pS3agL142ByqKo79yFSWucVQnE6ojfY8gmVb7uwHqxq1Lez2Nxjbupu2tC9hHdYeM3kX3VBYrjTnXP72sv3Gr3eocm383ZGC5Ppa3pB4DSYmtiJ9LdxU85WBA36KzfrLLEsnHj9gRFWwqEfA6akTNgtboo4wQH9HTCSyHRFnu4HZh4fHaLZe6Wg1LrbbTrcEWUaMFaTEaGhKR32KG2Pd75BxVbYeF6LTQ5yfVeSyhvLWBgKD49X6Y2AemNdV2JE62cS42WDFNH7NwJL7Zqrf465mWhJ137rcrzUpm4sGqv3fnVuxcT2bY2AD8UKindPGjSzP9cg8Pey8EqG4c5jZ44D4rbmNSGaVBzm47tvNyEZRNAmhRPhkuvqsMDoNNjAGwUDxQ2XCShQHhdQAMSdTfKiPMGxmqv7n25js', - ] }), - // borrowed, - }, -} diff --git a/projects/sigmao/index.js b/projects/sigmao/index.js deleted file mode 100644 index ac0acd04b51..00000000000 --- a/projects/sigmao/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - timetravel: false, - ergo: { - tvl: sumTokensExport({ - owners: [ - "2PnwgiUqPKQyKUNfDShUyoZZA1DLwJyVE7oNri6JrKVWf4DYCiBqqoBYFfokffDVaV9VYahvpDiKBt9x6NVXBkBm4LgE5tM3wC8w2Qhbhh9Ps7scNLGXJZ3tLbZpu1E78ynnrn4MBouTuE7rqTaG6Su8PwkzhBFBaiQgZKqCtQMVDLrN1D6MzAj5MvbpscFEsLTqaWEemPQvxKfx7rW1HgcMSCccWAvzy4pThM7re7Mqxz9Su7ETX2RRmjGksPpHMJxVV5cGM8ijQwNsdakuMWDVLJ7qL1FEaBAbwEih6CdRZMnkYV6sNS3FFrepAa8G1nA21ztiadoQdT9wKx9gfQZJwPe2DJWoeTEp3s2TezdUiZEM67MFa5RiSEtQwkuYzin8nQ7EMWenqmSQkRfhf1QyfwEsWz7cGYHHndBp8Axg29qp1kEzcGBMUA4f8Qivi3JLPrzqKPZH7neTRYmcbYKxSTFkdzBvbKJSVoKcUaUb4QVvpcdNg4TywHELP4B2JRjhaDJFgKQvZT14owh1xuB62VoMGQhoRg8Xub4fJVJUXVSAVLcZ5qhmrc1X6Gwt5a5Nju1t4R6LFERuBYmfreofxpACfsq3oN83cSQCSiNbkRn4YVQzZqGnrHaDbsDgR2wEJbdYfXpfV6YMX525MfCj6t2TXjBzuhyYtBTnQyp7bRQeQ47kfm77gYU6esdCokZj4ic2jxyxnpm6AHxkM2oDLqrvQ8uXCM4oToNEsr8xJWFRmDsUvtu5zs9dm5HGoyXjfjojCXuE2ZMhgweU4v7N21mzGgKepzpJvWARzjtnFFK7wRpCyZvLcgq9Hf4gqdR82Pmiko5azFBYA3T1su3L1u93RxAZTSWEGJ54uoYnbBWr1mT3GDo8iXPjXQ8S5SCwJ5xzASCsvi1DAtS5jmMWp745TJPekGFE7jovG9eoqzYCgoTmjfuFHv6cuMK6TQpFRKqLGPyprmDEGSVZ2TUTzP7JoJZgQxRHrwoAwFRejgJzgVxdxH9LXCuvYvzy4GnNaTJ3eatzhwpHPQjsMdZjBsEbLujgqWV4je5d719sAb5Lqc3Dd6LRFNqR6SRw8cL3XXKiRnEmVBrTokA91CFnjroSgQ3erYBabNTpQF64Nd4BrLxKVt3UEppfXFghaQ8AjBnkjwjkrnCrwt83XtnehwjMGpJksiy9yYKoP281njgfe2S8y6JQziy9peQoSLuUXtLE9Ptz6MmKgn22NonRxMA7Rzqw8Wywsbs9Z7yrpKyzNJJ89Vwyd9aRWBuPLuNEwoLqv54bUsPoiqeyfSK8RaCpE1WhzoCK6Uncrx9pAbysJNZVesMCu5CydDKTJC3MY7ryLe4cL82PxzTjTTrvGPmdtKfro4jpR3nnPFg8FkJ3YktHKzzJjM91fs283hjVJBxuvugQTbd5SdfTro9fd3P3YPSQPzRhEHY63642x8qez4Q2HnhKeKuvhvTNiN6XpvzFMtu5DN268BYwP3V4qc2btLbEWtVG3QLVL363Q4UiBgscq5XV", - "2k6W1ZcLsgRi4qtmdmFKEXGL6c5Av34BGEeRrEVAZ3jeKzmdAX37YEmd3bDCz9sZkf7tP6Pvz6qWcXnWGxvrrBwPqrJvCgubAD4Tn5WipkY5YXz8yjNCzEPaFmwZm6iMqtFsrjhWc9QE91ZYoWzAPU8fmf8uZxuJn37W9wHAV5Qxs96VWiJ1rjo7AiWX7SavEZC3nCBeDKpSnjgsoaq5qEkhYWDYR4woDT6B7ui8o38ZuHS3jDx88YHaMEqKWLHJYmRszJFMM2x1keJgHX3syPXgVfkinmMC8wVACDgQkaALBodq6fcVsF2Hs82XvmaMu4fDkA9uLG9cgw86AWCNWaMhcGp678UPNCeT9hsd31nPaUETxhgyibmonHpJk5if5QPyn3p45rYn3i71Y1Wgq3uvMCwuC682K8vCzc8DVHCDZDQgnBYbbQNypEWAadSWv6iVZU78mjwZ", - "7uQ7MoQgMkyP9RxB7cfAAtZFWUtuWGEWzskvUq4ZxEvh4nDruTmrRQejoBbVmZXirMTmG8Yxk3p7HPQwzziugxxXrQhgXP62k6jrz28xXVz1bNJfACUstvozRNBzcB5MuX2RYMoE", - "V9BoRZ3WH5ph9FY7MfrNc6cNtPdd6PNA7EWZVkHCDiuxwrcore2gCWbGcZWQxpwkqQK5rp78KPSSD1DLV8nqv4RnuN4Q7oaknZxYEN2LbVDcZHNffxSJ1sEVsqDMe418qyzYoaSvTBGZ3e6UkEWVvCb3vzQATAcv7zAEP3dzs7kZEB9prJChfn4mjUNGpdeeh8KwsrxMdS5m2a7TmkkWJ6SH4KCJpVaQikKqUYk2wMKgH3yBLL6h1ZnPtdptL7F6YRkfU74UFxubsFb5ZrkmWV1ynjJ1orz7c8Nzdh44tqCX1VUdFWwqUwH5wXggawXPNwSCR8qLQawkrhAdR7kRBEMGTWMXvwdtXbtQGpiC8VXWbYS77d7L82CYBwqwZk1eYatASrNrzyc7LXpjKZ3JzAibeDJiKSpQzH79QT1F84zvF3pFYR9XTmYMRcNSS3a8qupqyRG1JawzF4FUnnQpsyhTmQYnfQGiG5ob9ymQyBHdj4fE3787VzQRhoJQQtztBhvQye992odAQyJZbdfgF4KetoCPK6t9XTHfKxGtse1yk7MZGUQC4WMF4dyhJnaRcfrJupn4Y5UcqYhMN9vmCUe8BvypkqPUsUW834Q", - "3i4iuEoB17WB96toihTpjxoGeMFs7y9oMkvB5GnAkS8mPpPNbJuyHNAZBaDqURaurt93CwV532VNXe1sQmCGXySDGLmsx8WQXP7yNdK1L5cz3yLfxZkMUKddYejNnyV53CfHs8QVyRLUjCXwZB3g27UxwsirTNvhuWC4F2ACMwvqSgpVuDjpSEb3sgBqjFG1tpJHxHiyss5GyriA2X54Nip35ANWQJ9KXfXRj1ogjoNUNFQVtotPkfA9LdCoF9ZCuT94UpgXw1kj6Ndp1Y3Rvmy4crrxBt2J9PcwiGvq1WNH5PdVyUJCgYpwhHELbZTBABbhmcj92mp3cbBHqF6qHqvG4ZjoVMLvT5CXKkx2u8psshcqTdEqpe2D3QH6CJNAwANv2iY3kaVct2jhjNqNoY7S8RMT18ZCZQo9RJQX26QFyEBwkoAsxAFCLAqVRRosrUUTWkUUfzaVYzMZJ8gsQLAjbD4WcChktk6B5ju3f5WG4YX2C3wjGkFBsvzMcMwZt8ZfiRpdKp7ooJryVBPp8sf4aZEm8GjorjzV58xMzUa2crRLDd3rg3FTAvPzGWKpaaAAbTRyePEy1Vm5B44t32x3Rv2mR9jbCcxfQDAHAXNJSgVFNDaUCUk2p2QqraQNUFY98sg7Q9PDQhbMPafyBpyS2AvPLQgP4JvfB67TzAVwS121FNjdfczHSETJMEf8q7gXXhDu2zuXhVwS4tcWNabS9rJ2hnL7zubi3TsKN2LLboHs8KNkcoGLY1rcfgmhoovF92nK3p5ZP1hE2YyZDwUyH88WydUJiKW4R7GEzqZ88bPfH3NArzenoRQAfWcsbbzBTbMJvfBeRwv57RYUciWqNe2nrAom6GoyFi1RuHfJb3W4Y8d6Ez4Fn17Guhtu7aMBa7uaWaHKuv58wAf8wQgv6vpvETEhPJvSGTaXY4dpbKyGhqSiPSqPNJsLjWMyMWqT9ceQAjhMpitxq7e2TuHCGYzQdvtJbgN2UfyX14r2BEkbzE6xxEQunF3eugXwoG22ymgeFw2qMURmuREV7QThf96o2sQ396tUBJNuMvnbCBRB4XK6wAfiN5xUh3CFwajw5yhtikhjc2o2Uj6yZTPpFcGGqaWbCEBc3zqVQZivXJSp1QcF3eGXqKKJKyoPc4g4uxrk448a1Aa4PugVWqmUsnKyfuh1vd3L6TYNVhmxbnMbkSAm2i31fgMaJTSnodTZ1QcPtvWngZtbwEHEmbAkXppoe9cT9zq42dHAfskPZ4MPysaGbqEKPJcUmNwP4SSa1CtgVShHrtL6Z4CsZJCNjatZXNhSczPE9WDewUZ22jnUaYFQd4ULuJFS5zfU2iBTRvxR83q6xU8NNiWTH2VvquPg2gBJMZS7bRL4AD71Hsq29r3UxNHGDQHDo7YouA7mKUdyLp2BhaZHrbNdbK22T9Y1e6U1D9Y2GGpcX2gu2zEKRe3eLZAiCqC942BoYJob147SoDPmrJcJ1pngJVVg8ECzA3aq8XNWuT3VPbWnyhNAaqqMLYC3RHw7ch7SnUzctq6GVbcEcA11YgvrwVYjnPFLxd9d4MisfARjN", - "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uwZSc5pqdMTPQVDMP3GKxr5g5ghBj229zLJFZZcMjVE1amzioJqeLVFLFmw7bN739P39oPBnmoccJXn7YZzx1tEtkzxCwSv8z7Nson6UEt98emWremVCAYbWpHqqiaUnZzSckLENiAnq4MBdSht7xhRf3NjCRLQEsm9RaGs1hUHVXaynNXJt4uoYddFhZPZC3ZqftdtxUNgwBqAdMQPNaEantUL1Q5qum5iW8oiPJFj7yp4dbt5xBab3ot5eb5yGSkR4LtENHJ4x36gheFmRNx51bxYt5cbzPZLrRNyFLRFaABxKmTT9FHAkgZVb1zNKgnviw2nzreC5Gspqsa2L3tRFGdHQCcEYE2QpkUw3ntTfUfPx4sTkYgimMJ23W2t7wWdb7Q9mT1cyRSD5GzDuvXwKHbKvedVgZSvvLVPUgfK7YyHhTPcv2LyZCho1j6NUcXY525FhbfdquMFmcR6JedSRv8hpWHYJ7QcfWG2StoaM5CjzqGzMWtNXJ6hrmK526jzWzBaDVETaN4afb9k6CspQL3zfkpY3Wu7Dhv8APN7nAH2y4b7vZ3DShvQjNBAipXKnim1b5JQaxGJCFPL8FGXXDnJUx5NPZrh4TgDAzBA7c3erqYHBa2Q44pUoZLBnQBzjEsDAQvfaW7AjX5p7HBZoa2aVVf8QpsBkxwqTxs5QQ6q8An9PYXagocKWMaX7zbvjvXrAQ3RLMPgDQtM1LkiSvL9fQVKaBXcnzwUhiPB5S7UNNdBfBdRa9o2rG9Q1EDZkdqZpQgShkHchN93S4BMVFzJa2e3tbCqyyMRTYeZ3Yi24k3EVSp9hYspKjW37ghPajqLnwrXHowM9dm7JUi2g8nnGowTPsu7TuPaEZfFsCkPUwVyHqntArHwdy24tLHuogD2FYxYNMSS4psT3TJxZJWSCvjmYxpsB1pm24rSEmjcRnbLGwC6J42qE8ceKeY3pLHJS9yEYvBkNjWkw8QjT7hejABFMA9QYoir7fAdEDq6feVUvRVgVNKis9Th1L8AGVSDVPJdSwE1p5NGenH2x1giKsDQVfNeQ9FbaZsQFS1d3CUc3fcSahov1nBnMYWr5HwqeeCotCbL3HT1zjfpZmsYA5hyGjthTur8dMKvy7vQoKjK1RoZW11fQr6FmGsFUa2rAj3wdrMfXHbMdU5hPNN6hjDFknmeGNGzXDfRLUWrUptaiU5bQKhkzSH3vyG7CyjCuQo3hpJGbmSmvdV6px4C3jFLfYDhYTT2zieos3yadm12fpB1Nxt15KWXv69EsJCHba4sng1Expk8TgeNp6s6TzerpsxSCu5Ccc6a6L9phLeVqCQ2QqVWqv8Ve3fW9N8JD3bRY5rrvS9MA9j", - "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uwafpAmWPbXWv7XFV6Yx1pFJUg3q1Y5Cxi4TvYU5z6yhupeXQZgccL253TQKbFupXLzqSJ8J85QNAM3hFCg4xvVTMsdM5ovVsvSXLNXvM2VX12BR5otuJwfJVBAfYdYwPSecEbeGjoCecPS1SCw4S5rErEE8RcTEG9zn8Gpt1aKyT8qhwvvapksxcfGG5d9wCg8k3La87LW1DT5djS6nMZ9XH5zMUPuxHnMsoEj2UhQYBHyX3nuX3u8qmFb2JVgTUZqbYfu1SGHe6FTsQcTgm9e6zt8KFxzrMAk1QSHhC4FD6jS65cyWhwLVPyF2miB8KeoGLCoUdc26vhen7uDiwyz8gZZMaWcSKrVWsS45xK6vi1BNA5LrLYRE6YM8X69jXkcLdZHUgkph1Z9gjr3tCzYXXrPvUsHBLZhkaUTXzNkcnPj4LFTHLS2NGnxUcnvRDjk5eZ6mj7dDtux3HWqzf8bmdd25e4qALwRXDdmoPRw6L6MMvojHAJndjW4LEPmk3Stkffo1EHAvrDBPcmuhkzJ6tq4Lc355AykviKo7daJgN7aAwBW5r7p21RcHwuth6po9eUsp8nwJhrBDHv9CenPAtpjUTE2twL8YavVFbcDigGqQMcCa4puKsGyCmF2bfbgzSWw7R4gh2i4eb9NmaJXqSceYiqv39HDbVuaQhzhitfXXG9E15sCf7MK95F7zfmepD1uLzUbErGZGWDtDbNnVNA3QR66QkwivhHXQh6Ce1ERp3xAa7V5hNa4HnKZJLgGqNC6fCvLphUp7ZaKX883bSyTUn6VSAL414ss6oxejQT1C2CFrYceSecF8RhLSDBUeqiusYuwPgNrNyn7jyRxs2KuoiJQZpftnvF6rpg5fs5MyzkhG7hG6RwvfMG2D6BxDobHYumQq8ZHGZ9RYeiKZQuScAYsNF7JmondyYXSW97ciyCSGLskSdGxHq6auJzc5SE8bq8tjJUPpgKhqfbew8Ry93oWgSkzUnDjS2Na2UG6mf1RqZcVphH6LWrpvdtJEQXxYcoN8w4ogTMhm8iM5WEXDL4H49iBKpHkqcntyKx7sEGt8xqif4bbgBkpPvFDAz4z6aqTASnjgKdmmBQfbj1cAJTPNtZbnyQBghjohqEyHgnZ3NA5qm1Ax289QHtsiTLvB7c4HhdqRQ5reV3APRxg3Tq9fENvZB9UAeHoc68QkuPqEnFCtK29i94zAVrJiMu6zX1p9NprPf5a1Q3MYspfMicf4zJfeJtZj3Qo4jbnVUkjrtDwuY8Mjaaari32ipiqXFeATYvt7w9J3hky98aK7VZh4v7EdAmMzckYyjxZMhejr3gTj8H1g9nx22R3AzZaAXkZLdvSXArKKhB", - "9YRY2j5TBZrc5T8aJWNMmxmPWyA8JMCRvtTQmpz7QJSJKED1fnjgt2FLEf5tgHZAKtZZvprxZdLx91q4zDYbZ9GCAd8DNmoAJe4fpEU89HMWa7NdQTuisS8vKGN6HuBj73rjzCfUuA6xupEq5ihPSC1a9f7w3GayayDtDJvK9wjdpf8tV18893kPW3sbZAzs6fbvZZhMpaA8EmVg7n1UemRDAv1jxgGs6vHpPb3FUk59Lpa6r41Fp3ycwiGMy53bVUT4V36bFXV9sJyE4dCnyjK4Aik8LVc3u5jymVH1boSC31q6m3PMNsUiWxq8N91m4NXnDZiic5jT8iGou1g9FodbTN5ntExFr4s1rHnJ2FbrSqxPbZnvZFekSBJVFDFXYbGnwpkoEEk4h9RZLHGrUgYqp6sCEWoiUddKyrxgN8fjUZx1aEEV6N5kgrarJpfpUQr8YCreCJH6cxfgSeGxrHKMKK1xdfyhGfHgfgo2XKWmGPySFuSTJDkNAJZ9C5KS3RKCMuFvn2zREw1T26hNQXpwMADnMF3SBqHrqhdzxdaaPBkUXncoFnbVKYTxo4x2WeTCx4Pp7ZeWkWBpGaoAiMwRenqcK9GbXy89Ff3DF9UGunGsGMzch4qwicWviFrqcUhw87CZu9jhEEj7Akw6A6p8JwqEEkM4qFpHCpn3DApvViDpLZoCNGF23uh9ydy2Sa7v71ohFBSojDv6dQexKY9J8UwxuLm6FjLm1XwBwX7Dq678zdKdTHkxekwx2ec1x5Sd48NrVNHSoVNbA4ZQvbh66R6B68S14HE1oDn5yAS39wQxPpe8y2qg25wa4nFKPJRo7LXa9adP7sCyQvrp26PhMp8E5b1VCYNfSu1dBDxEU33JVKyaKB1rU8bQk798wLRtqnGo5Bg3MXVdSmoM6zGrDuzYfmCmKj78yTP59EHLEd9P64hLVB7igtSZWaBipkadxAFUFSvoaNCgG4T7p7wYSXjCPcKnL5BPaEwvdovd9VjpoaahSEac3QRaDFtfduym4GC6ACXW9bs8zYRygGf3hEkyLMwHfEpHJTP6U4cVka8tPDpmZq2L7aBkSYph64SctB8yKe3HuQEQJnUwtuEry3ysbAaS12CQZj7xgGyCqhVQc4Eqe1Dvk7bBmKbxD9ABcMypiMUpciEg4xAutR64TJBbrbvQ5R4JuX6a3oc68WExV8YM8MufyeTyGhn6NBCCttzRJS3FRJjhyrjDDx8C4i7Xcmz1b6SDTiM9MrzffCExDxKabhUucTkxoA5sA6P8aqyw7yGBLZ1aAbULL6vasLqrihF1agY6SSthh9cjjyidZBytvZ5k9v1CsunKBoc4G742RQUzERXhpyikiPEqqRE6tY5oTGaAdaTihTLG54iRkYZgwMen83sXLTUzjSYA4q8A666nVaTHLafdHs7BdgqtrK651ntW7BC8Vm6sSWs2GnyfsPQxWQYhnFGX5ZTaWMnPuSGviXr3xcXRknqcvaGZDW4BuUgzDSdug5npopJw6FLbGKTyXZDsQDKgHTHKr7iegEPazg53RxKBsqiAivNiqz9dBNFwrSwu8eVMkL7thQy4zCgnhY1gxAbasMPMqcNDDWPq7tvS4LR5GTMrxzzzZiszXnSfnJrF8nSrK", - "2wF8sNAVsk5NkVqW2tt34Q6HgnHMX8b3v2TWAsHfkFGHF5ep16ZUU8vTnKdiunuoQEvHJCtXuok1LL77t5izFHkRzF8YVNPYEvT2efNJDKdj4YAxRH3F92XMh8VqFGyikYopcd5rvCcnciHW21fhnEGUdZcvSfjtyCWbywgZc95y7vm6GvTXTxNdaDKJNinkzNiTvbqnzyRFDSWaALpmTGAkaXtaTKVyQrgwieBV6W5xbW23FT1ibjirjLBoEWaKfK9NfQMDDzjYDu82PvRXBFdE8Sxosv5LnwGVXVtAVmrEbgLtb9zXsy8BKjhhUbmZmjjjqcDSKbmQ1R3E4oX7dAnb6wwPHSJQtKUW47KPV8pDAwP89hVTik57VEAJ1Tp2ssUN7CVZc1HhUYrmuoFCfrWPPwoYhCXR8NEUzjvVaZc2JmofKo4huZFTyD4YV1JnUiaAtwMUkBGZdJpQbrMqtUUww5H4p5VtDir8di9tAxBBewkimAc1YeraJUpCbWsb1MJWwk97bkZo9XiMUX2uucVMjq8EnMWcmfcihxRp2omZ4KPLfYMsQaDu8hDc5JL6mdtcPKAyFKV5LW2ALcdbNoqyPEV7AanwnP5SL81PSX6L7PTcCCrkyBcmTp2Vix7DpxVerZpbpxxWsAhGQPu6BnwSioNJDXUNGyMKZKuLnMu3nBqYeSkWf2XUaouTb8N5UE53iAw81gCvHyHjyqUcNhAGW3CCQG7VfQSwVuwqtZyg94kjcS6nuNvtBBottQZi63XbiicmeFPZJNdBUxXpEiTjQmBdTdYmNbL8mDH9XMo7DpRnPGdAYwnUXpreXxAxnAX6yvAbMVCeK5dsx65Cw2jJyeGbKCQ47bjmMPLtsgzvoXqBnHwBNu6eWuEW9q3shTqeyGsgAjxtxA7JLpkGVE5EyVSPuiAqMnsThNXeopshL2sd5a3HS6De4VXtXQLeiUvLYPTpqipiD59obempFrj8DsTWu5oP2LkCGzHErtfSyp8GvVRbg3fm4HGiSbP8DEr3CPGRKgTWkedVGQ3wT5R6ULUsVTXjZXCv7V8McZhCxH1skeJHqEt2u1jbtWmaS9KH4n5J1rp59GFeqZaLSbrsRoXVa495yppeSG2ga52iJcE96ZUTuHVMLTVmTZ9fVnT1JJdbkeRQcTxXNQQnMADBPNgSfbT7cL6JkkrAiRgtA74rUajW2WYFuSEm6bgtfKTmUk8VgADHEQsPhpJ9egibddASoezYw1PuWWWeq4Qp2QcwbwgWbiMRZPyga4eezzZVZP3f1X8kCXWxJapqTBvZtogDfWnoHKKe3kX3yG6ntUZ2BJ9DTj5ZUUwdZP6vrk3C1KTJoMMuXxhVTwGsDoLADx4qGw8aPpdobKBMEfWHjSu5yNbZoffBDvrcsQsxMAC9vbeMmqSYBxvGvqLQNfV5oU3ZHS6uB8ys6ESSGUxS9HLrSMEZrHmwWeYX7XRSE6gYmemWBnWB3wfjSiMk62n6nnhTweEQhj6pAUWGoqdsVCfAyzZ6C9x1JETc2YbGGQJET8kisX6rzqfx4APm786vSK7wyK7xCEMe1JZrdtpTv7xXwxAn3R9NcvJZAyi6Ms5BJYPpEt5bXMn4fYHZD7JrJRHuQiBctnpARmv6PLB9", - "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrgXZwnvkejzWdt2jk7PYbzCeVGQ3vaTrgvZWfMuMxwTiFiRKxb55gkNbcSnojSDzk91mA55CV42K6HtijTjn4JukcwafcfsM26N6eD8s9a5wDhtVFNy6XSU54nvkWo4AcSijRL8hHwAHS2LyhgjDmExQc384TtXhjjmKUqBKumJw77gFX7H7vitSPpSejHLJ7AaNtoZEaVhPEVUnSgTLizkfCEZkSsAufXpRVgHNWtyFRwSqraDfUBkuTgDBYE17N9efhNA5tHAQDKBkFxofR4cQL9veBMPCJSSAPieoXjo5a8J1NXZuyAiub53J2J8g8FBkHtesNZRuEzLQYUtDmDfXhjBSxDV8GDa4eVgbX2FyPddAfen79vXUKWDEzAVnDkHezvmmJSd24in5vYCuhPDhBXvBcXt4NL6MmH5gHcUWzWEcj9pXvs5E2tuFhPJGbyVGqJkqVcAMX6dTA2Y5Y25CHPU9W4SVo7d78avDa1G23nGhGzf59BBQPJiDeCs7Mo5qS7PX6RFFeKtwEnzvhh4vmzbXNcSpE9wvpZyaPaiscmjurti9djNMd74zecbii9bgUKEyh913ze79xcYZ7s1DZEj65u9vHgVmMUbyfzBhnc5FpwpdQF999DEdioYhJ2gioYxA97gLbmzHjqxFt59Gr1STcn9UeDsiwg7rJJRu34DNxbmSa8x51kBQYCFQ5ZQ7izJzk5FVAaNkurJ9wh8tUC8iXzqd1o33rpEb84jrNJdxnkB1JHo6PrkWfHxQ2LvAZSTPS2W9EmmS2qPF5i2Hegd5Mt4zzCSsdAQYBJG2DDoDAyMskZPLqfJ6sgS1i5rRV84CiGsvhoJg6d7xZc6px7oCpxpnMU3iGRm6Z5avWo4dJBbUYRvdtiASxzqz1UqZJA5SGZ5iad6xmQ61dSGT7RpSWnXZ8Cw5nNicUD4YxYy5fckVSZ3qkt8BxBsB2r5Q3x4ZVKMMe9oPE32mgY5YPqVyXnanz4LubBFhKmC4LoyHLxRjuSkvMpBwN8usbwTj87zp4sxomMtcEhKsagTpSg5Qvms46ERpLdsiywQAhLkiMEeychcZtVhXTTPdE2sTVPaaR21uALrLWwsWsss1awugG3eZFdR8oAZF9TTdAjTMViMcuh3GxzhmgoxEeWPuv6TyzkpWQkAZVCafnchPJxa9QfWZ6Z6rt7gAry6d5eHWkm3Qx6aQ5DCaA6JMrjufubGJJK12mHRnEvjU6xNj2PZzj8y6WhSSh3L4ADDLhvprwUT2udQHPgMZmGf5X2oBXyNj9hAmYJi8mdHeHfF6LAAaDmEduWtDGmzy8778Txy1ZT1SjE2Hqhwb5figyFvfMtTY9wdv3nQ7Gws8", - "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrdFPymjFMFAsNt2vSWhVxh7X7KigVuWQCTv5ig7qcM7aShwN9fnpMtLMxh6jadCWN5ozS1oQ4pQxx4E5RzQwen7YJ1j6jisP2XjJ3vSozEzBqeui2kUevVQwDxc2jziAodhPc5PWNS7KaAX7y7m5PmgKU6sSnXnuPj6d85gv95fmEr3w8DpttTf9m2oQP4PERchifotFQPNQ83cod3c2tj7BCHnbFR5JaJadjbbxk3634R6JFJ56v9S3JGuBDZjZ7dVo6giLJUybDBRbN7xYTbzBLHyYdvnhXnczMvRGQ6XNVdNVbHkLheRQGqH6UAsMR6SCkyuW66H8boKGjTbNFigtjj9MGPbyvjAVQUWteUpJY9UqmNYVpbNesm2jx3sVQLy9oEMzmACKkjrM8ZBk31SN9CQLshVfPdBFPJ7Tb82uckM3t4gYXEWJXJGQ1JVMriwHGizXJ6pM8gckfPb5XLo11hu1P1eXz1FDQzqUoNyocTA8TT5KArePH7CjyQUZ5PAKv6d8UbZMcJwdxiwFhRQtthPGbhbWKe6ttwqz3pw3Vm15y4PUeknf6ULzWzvZok31J7fB1QXyPvsPZMZQ4eWGf4mqkM7W5ff5DgtvXaRP2oJCDQueTr1DyApSwXP796uEWyC3M3dczzsS4DJ4fe3Sxz8PSWFoKKZR4KwxJW9gtBdYN8WyEjwouzsf7tGtPQN5y6jF7VS914grZkMMVYBCVqsN58vAazAHVnqdSkoUmrdiHjUp1bFFZhcQLZx3arj1JK9mFGzarthvxJYMUH1aweoAE84o18acqrxNJsQpDGE1oiLrBukBs2j8t7bC5Cb9wJ4NtM9bD4vsC1mSpyW3utVZHDWcZQT9dD18MyDFzkoeQsKFhcNtkGzyUg1yo3uy5YfM79pnMnmGYWxpYz8h75DL8BFESjJvdwGXYzAgo6fGep7t7hzdV18tmrXUhUwW8VFnqjwLki8ceEzvz3bzc9q7c76qrRCt1fe2pAD2ku9HhZhpFBQ13yLR1inM71Brq9KdWD1ek8GSCDmanqmuV7EKf2WtjsuytbBmHs3qQ3djCZPX4hfDfqXbKqfsVfAATRsk9bNCbgGqqfGUgMrkxV6ErMtShWKc8GS6qHYdJ7p6TPu2Xw9SntozAXg3GSFLXrGyFhKQ2z77woL3EG8MTWnbjqJsWPJm6nrPtcZjErwJ5uArH5s5mTPU95mrmRDrtVQDGEZJ363APFmNNiqaJVigkHtiRAnHhStL49xK5pDhzmTxhmEwt6Y2yYmaSqAxoMa7szdwqZaJ1b7qbq3gfSzBdUE9K7HjL2MAoTKu8W7dL8P8j7fXbqLbPN2KHfAGDim6hb2BXsgtXT5D", - "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKreqRNRKK6po3m1zS8u2h5wn3N767WB2LZkGSY5ayo74A9nTXGteRuZU1cv4ZUudsmAHbLR7XCvgKxGPnZ2hfYv2n9c2xqcUyjJaaewAMhrEBw3ZswNvNA9zobF49ak1yXZA2EJ29bghhMk7EFZqSTTP3mfUtunS2aCfhgeMJ7HBgLT6HHxyJfygfvW6XEjNgfnzFGQjfq3SNFCGcbDirQJ36wEbZemFahCLGi5oPLzPzTSgN5i8wpNuyNJoaBGBwpVTnHdTAi6HPda67xTbRxyM6A8pNprveRGPtgxt6Y9CughZatz3M5kxT7GToXUWTuv3zZCceRPkxffcscSWDyHrvPcweWgJS54MA38njaKKBRAQMwvDUt332uiUTNVzSaAHkZzDNUS7JoJjRQZiUGBua9t7YRxoibPCQVPtcFQqy6rJNawrkUyVqDLxDnuCfttCwxzhshtvZf6jtgGm9E6XDw3m6rtFqqyUWFwQrnE4jc1imJf9reFR5pU2VhVLF7GoMb9GTHrXG8x5vLGuDsPb3GNsPDcMMC75a3qpPMtTVRmwAY4gfghhmCAEiFwV2fTZuXVLKJRUUkmTVB9qwFpBpyH5hsjVxG7LshYNBWfqj3a7p8u8nHKS2sVaFaQXsoRcNzmduTrK8mdvBRkQ8XbQGeN1pRiVVoAhTM2sqv2KHMLAmHswtyKFc5JD9jkqNV14SpkXETMQDQLRh8X5j3TvAyMK6kBXdqwwdPzGVGqrjbpsZJd5GtquJSfSDh1mF1yUrq9CaXtxCALBDXNgj4ZrjXUvGeXC7SgjdSubtBcdjWVuBkKUAUurszLnT6j9LY9gvQLn6HhAB661Yy7yqYKRR8KciVrRJtAjp7VN8HjNixdALCx47kGp2wm293FHshLmBRtGMHSsNmHBr6bYUtTsZV6jVRxqaqFo66ZXVjt4ofdhYCAK39ubmaBB7WXajuG5XrZzK7if3HwVUbCjo4cSJwVUzujdQNNtK7DyjunPkBQqwbPKPN1c5kLdYippp6bN2JHZHpEWedfw38dTtDwFavc6qyL3pVAcRjuJWeUeR1Wb8Lsji639VmCLk2Bog4tDbQGzDsmr8h7Q2tCFWmgVameJJWpV5j3JXC1C7GNfWwUAE4JUnYoTssCLTCzPchJJ6UqetZQgmvG2w4zZbz185gNea4HtzkMhgREaZW4tjhkQqRppN3DhgsHXp6KYf1w3YkPEmX1qVED3hQrvghP2Mdt3WbxVYDJcurMTCht2EvdjZyEHTbz13ULFvsUxRCa8XkoGcgq96LRac724fPQrK6dCzQVeUkj5ygvAcXcqMJm5kVhPJRxYTgU8Xho5VPgy14ZbRZ5wBojGu64Mm", - "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrDP659LKft7LjBqo5YaTaYmdThf8X71Ky2sUoLWEWjHX2uKqhdKHnS95Ngwovo4YFWKMA4pWNpy23AaK7a5Qxs8Uc31RgjDekU2Yhm1goy3xk7sa4rwJfQPHKp7CBQn6NcWVW2fwmk6SVYAWDgj1jvK3kWTxmuBFReAVpdMXCTfRALMi7MuWkXVkuYgrgxpScMTfCZgYFApDhCgz1r46Y6AWgcJW1h6HejfatJCQmdujEoTSz76CP3g7VxyZFSmosAyRkQaDAkvud3bgkdawWftihkwUHvrwnHWtRqehsR7ybQa4Fgipfg67nMGJPMLcc2T6fR4Q9jFehDPU1aBaaBprxneHERTSJNUF5ospECkQXK4VDAcZscz4kJkTnbAnrBd8a65Wa6eWUWQqUQUYYP7yPCUeDy3mJDQJm5MKUSM5YxphNucf8a2MT9KdLvR1CM78jgpztiKupoparB2mBw1HAN7uLMZzRgbumypf66w5rLsVp3GbEBWnD2S3UJX1qxQZBGVcDdXviWoBq3V4NiqidruRUfyKhg8yJ74GGJtJfgBrE9oFDQ5zPqTkqkrm7k8b77C7E4G5gp79udZyKn5FbkazdVA8rE8PyzMj2Q8H2qJ1ozapi6y5qi7os4CNwiqxoUMyvQxvqHViL5HzhiejKgnsCMXEm18msPtxrx8yvQPu1u1HCe5PEdNAU9UiGhrDYeTywfbgw2ANaN5BRYwLqb7SYzs4zrBHV889D6VXKVqpTPBWuHhsLpCEMfcbp5qS8tVX5ubHQA1Fip3nWqizMdXi3XY84WwBc1FjyHUnRrJCDa3PRWMzAzqVZyjgCyGQP8iq7baKDAGw4R8DmKXdfVV8dqmYP5479vaqutCWLEz7AtZtQve3zf9MRpQLtXnepmaQ7J9Ddw7BRb4DkjWR2acubBMDcJvEhUJbMr3tqcA9pABzUTyKmYU1igEkCZTDRqArs81yUP5MDJ28vq6TuGrrcm27V4SJcKEdxUG7PATsYWuBSRpk29iCYDz7hG9DxsnSps67HRREZeE6kZRr8rTR3G971eqZys1992fk4LGLZHKUBDyXkyKtCrNCGwt3UeqcJuewxvQj4RZ3z3gZaZiBX7pAS7inpb6jxyio8Grt6poyfwCykhb7NaNYHGZGx9TvYgzcEudXpTuzhFRgg4aTwbhcU4LKuqY8ZQ964MrRTJGmem8HN5LvrpRDpn7R2FERfWoKRsEmrULR2rmjpEe1p4WsVcpxNhT6RZeoBvL33sD4XnV1bstiwiD48RXt9S9UE5YnhjNZPaLkp5v581EZzk4US8JdXCh6X9sSxYjF5G6rA3EEBiXeAgQ9d6pdcTwkdwPXbvHEr2CK", - "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uwyCBu5zHeqqGcGzqjvHbHHGH1ev98wMmeqGbeGpi4yL5Cxq4FRgLDUTr5g9C6eTkrwuE31q3YYoDAzwfzFHtq7eognqaiWMR2t25qb69QGDt8wnYKHMNkxNuug7kBM4btmhPm9D6NcLJsCScWueFAtHnQKgHGmUSde9HqsiFXehmXcnJL2rQpWaj12ktNcruUdLKYrpbAGAoUtt7QFD4jwaXmnJZcPPymV6fb3EQ71NMAL6VBaSu8wqhYAXDsfHa2s3pfYxydmWiY4n1FwLYAgfh5mPhK5ukjzxbA7ioBvWpHhDMAnZhGdj6AHKN1zwruyjEmrRHFP9J8bA5nVhgQ7uqQmHatrZY2e3i2Y2jvgWSZrj12b6YKW3pihasyR9fiYLy9MGtV5cvEHCr28h8F2xFStkhkEP3WqkjTXzJYuv8cL6xVMv1gXxM9xpUBkchSw9WWdzn5Mii5xafufEqVTT1L7Zpbr8jr36S4h84HUhcnfton1pEJb3Enr8eCEjcJqvsPZaxjr1pkL3rjvVHRWM1rWYp86LTEGwQgAcAvBdkRw1QoJASBH6uMfZWMgRrAsyNPdbnQHX1Aupku3Gvy115p3VPhPtnC1p1NSW3dUGH94z6MRq3aG1kVpn3vjnG6mKuFWRBqNTHVj2wk7cJgjXsSeydDcVxGNNh9FyCwSjjLnp7H4FNESK8d21TYPfNSha5mPu6UGTRo2oNrSbjHRnFPubYL4te1zzowjb9JsQLGKzfYyXoBgrLmjvcqZcNJuL798eSr1yACpWm5928K13536MV8BTtR8FgNA57WNkzLQkuUi3hEwWEkG8hBK1DRbr5kU35paQ9FuXo6ZDhvokenubw5xXxnXMg59Ky3ce2xA7qnkYTv5orD7ipLybrNL8PN4KHx2te1dhV399qEPChRPegiFL56sDavsJuRjgWCWxkSoKaL3hvR7eLBuMwxdAch21Kpv8w6ex2di9kHFEuXKZCfrEtWfHbp8KbfRcyzkG7DwVMrHygPbvkBNXxnEqvBXqBaA2TJxUQsmvaPRahYtiyUSpSsScQwkTEnEGMNxo6NKFiLn1aiN64b6bfgELNHqV3tJ99WvhvNNQBjRAzJZFk6EeURiJFwYyn4w9MyA8hPeoGAt2WgvqAMYfKfysoiHZdtfnyQJKXAC3Bu2wj3qZ7Su9jzKJgykFsrUvBkcGPTaQ15KWbiyQ5xvBW3xvw53Xw8uFvMb2DM1FdZTguysxxH7HLj3ZfkcDeL1iykH9RVS3mABVFe9XvRss2Qwg5aoqcKfbtDnTSrAGkrJ6iZSgKePbUVDavN479WJhZ9oXLjuQWHhjtTQ6LCeFGZroTksLAppottiXNDy4un", - "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uzBrpBUJWAamhRD8zzu3iHTh6MN2Zb5m64ydpNUrtxhECCWPDaSSRBXu9noUmHTR93e72FFyXcxxCwx2oq2N9S2DyoEoytLur2nzgczMPKqEMvEfy8X19xp2ih7hNCthn2eq6Hqr7pamZUWp7srji587CkDFq11YnKMgXeGweRHQ3hPTGeFCnaLMJ6SAPjj8VgPKQMEhnT6graMsAgZiwqDKiLtPWqVCvzZ8Dhhma62moTthnBc9aw1v4WNsnnX43VnEgWVQFnnxwLp55uv7AAhxHC96EnA3jPrXcUNadm82njEaHBayfzLy9dr9PVjPHhrrsWThvG41ZPa8iP936EA81c2usCtWKqsie71hrmxB5CzJypFV5U6eurtf7t8pZab1tyKCgn4pN6HBPuFTzRV3Tcw5JTsdTbTvG7f7eieC9UrnuxFFwHdUgdGXnfAmND6j3Jrzhxsc9rzbEAv561QdKmns113JZeLNrUdkfvPr7XiSethpQugvUt1n2cNHwj77whEHMFnKgEsygJUD5xVKtG8cxS9AdB4egPe6gwSuGuW63oBXq6xKt8RURmy3FGf865LqBtb5a7Q1SdxnyFWPQsjJrPpE9SsyBfN8VFh3wEsTqNUtfnh6WwJ1SdRFycSJBiuFK7mWHKqJQNNMwrzS88Fw1AJscbvq23AvgCj9RboGSn1CLd4o3yqNec26i9Ucgy2djVxZjjdCsxDhqsRoevNjrNsRbAE3fiddJ2T5pxWg75NYBiCDiqd9hc361MUNy8n8BXA87CdexrstrGUHQd4EW424cVAoV7X48kYmHJnUuegA6aXKCSYvrMhEGPC38trrYgDav4DN1VzKK81nE3zjHS2JrnXGiNsmven8JFH3yEL463iWLw3rZAVGpjSaEHWsgKnf3JLB72kA2D6WrFjv7PWWPuQiKLgsSTxLkcbDcQ7ttdBfzMuMLFPtahcsdYgjrrRc7v99UYEyMnfJMbJqWAAquguZQ1WvacdjdJmRue46QyboQeKE3LuscRk4nhBvubpSPbLcwEaHsjeDaw4PwSEPS5H1GQt9iWvCybjmnFvSB9G5a6udRjJj9nVL8N483uJUfzSfxgLLmEQ57EoJ5rDptM8oAUB1zd12KuE7Bzgg8t1ENoS1MxPWRHKSgmC9qWjpVQHxKwPT1PyRaxsj6CM2ysqiwtEaok7G5d7dMdA7eom8ENB2JoSFSbsii6zSDBGkuzfakJeatfWvYtu9phtvykaWAqbqwk33u9jZkbTP6vjrgoxzGDQkdsdqNKn3BXwihmTwJfG7HQidueaW7LWiq8LR1Hw3X2pWzsrwn8vag48qhBfxm65gvm2wGVVvxthDPMvHeLPuZS", - "9YRY2j5TBZrc5T8aJWNMmxmPWyA8JMCRvtTQmpz7QJSJKED1fnjgt2FLEf5tgHZAKtZZvprxZdLx91q4zDYbZ9GCAd8DNmoAJe4fpEU89HMWa7NdQTuisS8vKGN6HuBj73rjzCfUuA6xupEq5ihPSC1a9f7w3GayayDtDJvK9wjdpf8tV18893kPW3sbZAzs6fbvZZhMpaA8EmVg7n1UemRDAv1jxgGs6vHpPb3FUk59Lpa6r41Fp3ycwiGMy53bVUT4V36bFXV9sJyE4dCnyjK4AiLX8BnsqZm5G1dTdPUaJD4XAi5pQa46XTS2NL7fZpLnUVJcfH6dnLxdmTEuppABYqXiGM5pT9FQbkaSyVxiqfFS4j6Q18pn6WSz1DQfTJRQtt1r4UA79UaimUsoMEoQBXVyVyHCEpChf99faDaasNmZ7Qc7WECCRi7yazV7roJNAb2EmhBMGqXQjokt7NwcRFJPd82k6NtyjEH7CXsVgRQGnZ2Sie6H4A51L71MsbMV5cy6rmJHzXVYe7fGwcZGxVeCmfCQVBz7w1xazYSZAM1HfoFAkggj29Zq1N1rbpBRXQvSZd7d9rLGFwgozk5N7AMmwJY9r7HiQWioZdM9A5tXtKDZ5PnFi163HtyZHaLA5AwnBzpUutigkYwT4KpPdzqFJNtu3heu9ZBJ6VxQZaXHbG2YmZaU84c53dEyLitW2j6V4CXVzDTLxe6briherveYiwvnGiujFCGuisBktzGMcgsA32qR45pnRFRYfWuvPTNjLWUkd3LR4jjEgeds41PW85rD195Lc9Aqtt7X1f9TMBuR5cmyL9enRhEipaSiReynxcp2iofKH63gneHkCbite6sJDojdK5tnUhzPSjZHYeqHfd2eNhWUYdZG9kFjxfBGk8v4jDXvbp7Y7mKPf6VTLieBcJK9ufke3ZonA15pRAG14fzKNxWvYr3qPEWAJUF96sms6TFuLV77PbZigKJooajg6kzDzvPEbwaDg2x9j5rATPEXv2iqUXK1TJLRetS6mckqQQ7CsQy1a2sbQ1UmzxAtmRLU2KFmxkcWiPEqeQvkgMYKksySajBEKybTDimesVoDkPLrNeFQmXr46voqPo9hNaerkZN86zjspPWBLLmGE3BWJVyzMiEGzPPJTDDki4n6hww3zbeiniJqboSTf7DrvaBRL3YiG3RgqfvH3spVjsbDB96KtqLRPqXCQHftnt3jwCSGYW5P1hVGdfQSnq8Re2a8xhkoQpbRaa7B5JEmVyfNXFoLbzwXwdE8f8AeQbchCNgCHJjksdJ7BsRCGTZoqS1VDLSyEC8183XG5rsUHpKWvibbHXDiZ7sfVDa1n3jSFGNpQvKisivXhZR4ETVfYg6bfLdbZyNuY3so8ax1vCTTsanXtxva57PMLPnn44s1BG1nHf6pPFYhBubJTbG7qvGf8TLdthZYVohsoVW6j7kGiMhziupRLJp5oL9joBg1AjxrhT3Z6mkDiJUc8KTvmZjtnbR5E2JEti2WCwabGCi28nnX4hQ5GNGLnRJPyAQwzXTce5HCWjD8qn7L94Uv17cChouKNw7q4A8jp6udJCLGFuF1rdUUBmkjtwQG1vCP6hYe6VmP2mG7s7WP2ctSb7qDdzahSr4qo", - "2RsDz4W1HJ6FBsRyHnBfHFpLfJkeVLAVVc3SN1xCct4EEs88B7jHasKNoPVyer4sLhafNViWaSbsKaNUiqwnb1c7LHF49bKDTZtp5KgC1scYWCJoRLu9Qr8LuzVNmS97QsSV2raZKKMG7e6uyCGAFqn2VCSnBWtUhgHRtg8r1KSnZYd8BpWthL8QMqxSjABYp8oEjCnP69Fg2LugAApCj5YkdJDknYUw4Ph8iAnmzHBRggiazCcRKscYkM6ZySqGUJ8gjtBdnWt5TZQ9rVdoPiRa9z5tVNcwgYQi5WoWdr4Mj9RhPskN63rKBifnAJnnbXCcZdAFKLvQvy1weiY27tWTRD9eLYujw4ZLGh9wFk1er86zCsg1ntyU5CJ638J8y3i3pf4yUhmKC2DhRA1YqMpiukRjxqeiiXVLGMhhWsXRv8N4JHA1N53SzmZmi4Ba1V566SgwGbFaWJQYSNmLSRqgaoKWTuqz4bcG2AYBXoitrrsgraVsh3Nh56KLzeNLPPJTMpnQMS8MKCCoq8XkwdRjf1fd5vmoV43dAAUfez9joYWBZdiCNZfHUCB5PCPjuZJTLXDVcmwEn5ALJurdH6gyUPu57Z9Dd2a2BbQjb9YdHEegaaKn36BJoA3iS32rexEf6uQF4yyhu4N8NBQqoTbBE2BWXAEf81dZ76J6vuc7ZHg53UBW4E4KiymHfbHPfLAU6vLBcuaAemxAP4YgsbU9a7MYR9hMxtdSc4mpcauDT2tEGBT9fMm98wVurk2qXBS47oXNWXDUbQhDMU4DhB2NthU9qkWTvjtsXGdBA44Rogk3FXftUBfYwDR1Sfw9PnNaYaqdqnADhFCe33jGXD3z49bu1htufZRnoHK3QULiUiN6SMgHDhvCjEK7tvuNSTtbjZ8rBxF8FFkHNTD76W8cdkw4bGjPeNnQn7ujGhkD4zvtS14o8bPH6wA8qthaHDHmyvA62R8C7Ybw2L3gwYaKjCnTHuDB2CiFZKvhpVUbmvNXJLMtAJ66J5UjE19JmjcGTEnbSrXCtooYpVntPUFqAjgfddFk2TyNBr8SwhKLSAAPdmN8R21qArCxqoR97968JkQh5SC3kH8b55Kos3KAsFMBbJgek9Cs7DErithUsB4CM4HN275saRSNkREGdRkSKbLmdbER26D8sr6VBdFz7CYRDUoWejhWsG7vgAeWbZPpncCsAQmu9gMirps1aY3xPSm9nfmHFQ67SFzBE4yg2rbBTqbuhQ46yBALRjuAPC1vn1MyrVuagDcoA4NSXVARkCNnipGqUPm55WDDq9zZixSjfVQ2qr3RrDkZJA5ucb67h7hAVQpBJtacer4GCCHseEh2yTip2pYPwn7h9BHAcrkxNNVbmb9iscbVtP7o7dVBCrQCmi59f7QXHhk8rET8JPanWDCJhwnXbmLJUJ4hSUkzVw1LvyFY9qFj4MZegr3HdKr8GzWHnoay9MibfxwMjBH2gUre2bjUtGHgAeMnhMAd17vfaD3aUjUQE4pwXsAGdoeUzn2Yb68vBZs3jqbaktpcm9Uzm8DB5iqR6mp2Vd1y2xXWG8J7bHcUPdR5y9hL2fpPUH7hhR5byJNDHZYnMLLETmF9J6TmEE2k6cABvF9wetw5a38dcpS1EV8WXh8uPpQERn3", - "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uwyFfu8QeAwhd3MwnV7kFhdAXsvoDWj9SsyXtdF9EJhHBmod6E34PmJgQWhp9qEnu1qwQw5Pqaw48EQKoYbME1ceE13vXNcQmWYGTYJT5qVq3wHJEsVWTSQYzSNGcTaDrSonH2b8rmAPGceLLv8Dcp76aw8UbBEUXZSBRnTekkh52GRYJYqHoXf1Pyxqtudu5FUWvxwGkq2ZJDgqLpTkCw9SrkuPQJn8QZErrNqzEaFzS9YbDoHs99SxaX5kmzMt353Q3dcCQe6YE65jjKydFkNCuMEfybDbP3Dk7t8dxhpMcrL1qdh4YhMV3QV1z2Q7qfYNoLbwjMxdqL4ESX7VZTXhJ5MuJ8GMHoqsKiRWz4ge1z474gksy8DXKVKDFisWpNhcL7hvJov7mKj5gjq2xM37fJe79QoKEb8WNywGzAgVsntvKKTtParmkiNtWW9bJMr1ewzW27FBhDzvaXutkXejfJKp7GiHGiLUDkS89Jqy8YnZUwqo7Vus5fgVjxYXJHACHHhGuPPSkKf5PaFDUCJhDLKz7to1djuVeNCJBnDU1JjHVNeznQWL1wmsuurTgWnaCww1raacT8jnxc3rj4v4BYuTfTdgJsY6sPpuX5KHNNjWGyvR3r8R4HhKUJteC7mv6czPTPTSy38rKkNW5pT9NxUQQgpSxFt3s6Py9sPvovSj8xU3Cu9RhvPQQnsKfEWZDXs6BfhTdVaXWB8CYz4Reeb2CCwtdYbyxvTz2T9i12EA4PecRXGjqxddm9CwVBEnWhzLFiSgVgBWyGpirSjujv6v6SKUc2MWyyqDRBWmBTZjKrf7DHvGDe5fVWZf4kwiU4jMLkF7T6AdSDrMnnUsdfWA9NcajV7U1VTnANaUtcB1oc2E4NiqfdFQHDrMbeN7K2HKzod6bjuNAYh3sQ6BBotKAsJdNbWCM6THYceY4nSfkSfVBsUdaiqXaUHKEXYH1LNRBdr5Rx7jPGm6sAUbSdLWD6UT362gK69rBc3auv5rZSfThL9bY8MPLhJN6hzetknw1bnsrc4UVqmYNgXX4tVJHYGwiPw2hjQsJC6f45QbvyFct2jeQ62ARhi1kmV5Vvb5VfT2DnCjKkgjXgXw93JVmhpgnC7jAiWJr2iFzHjfgvUQUBgMCT7DnjixDrmJfTXVu4BZjP7AVaBa34PBkgznofoz7ojJKJ1sjtRKj2Gg8gknwLsVaTjKaqXsgLtt3TFRYGmoWHtpihadJ3ELBbb1S8w2LmUDiWbJXw4oyHdcVuW6TWofniQQh9XFZX3uu7omug68ttLGnbbtfmvqmdmYNAz4apixj2EW1shev7ciwAh5ZF5hCvFsrJBYFSbxb1BGRoRQWvxQ77z6Hq", - "2RsDz4W1HJ6FBsRyHnBfHFpLfJkeVLAVVc3SN1xCct4EEs88B7jHasKNoPVyer4sLhafNViWaSbsKaNUiqwnb1c7LHF49bKDTZtp5KgC1scYWCJoRLu9Qr8LuzVNmS97QsSV2raZKKMG7e6uyCGAFqn2VCSnBWtUhgHRtg8r1KSnZYd8BpWthL8QMqxSjABYp8oEjCnP69Fg2LugAApCj5YkdJDknYUw4Ph8iAnmzHBRggiazCcRKscYkM6ZySqGUJ8gjtBdnWt5TZQ9rVdoPiRa9z5tVNcwgYQiS3EhZMmc78gU1DqGVM4HruSkCZoeiReXaUwE232Uprm8P6dK8NM8nGL2NC6bMraxqpKNUvx39ENjSy9z8rcQuU9t4KUP2tfvHxWFwZ6nU2EWgpTDVkdwg1nbJyDLeGL37FgfiqzdGhS1QgmZsinpN1cowo8P7fyyngHuUzD5E6aiqS7uNVvUmLvQ4TDGA7sDa6UQqhd8eTxcm7EksetrQqXKGZMzJApp1HLvgxdGBNUMMajSbauk1bjVjyCpcjkJyLznFerZEqcmwEhEnCXUVdQaM9dtRhiMVVVgujt925rEDbjGcjkT1XCibxrcKBT2raL7W6ScSFTm9py8z3CtBrU4w9htwDoQ7n3pwheEAP7LKkMzBXdEi3J9sXAJy2pJBqM5bGLvRqXykdswpKCzogpGktfXRpiQ5d6TooH7MTEfTibvk9aEoGDhhuf5oakcvJnBGkebMfK9S7tbaWQF1NudjFrUJoD6ZGFFeJGQs51HTTCT4UWhQyYED6ZdCD351YJXG5bZnVr4Tc8oTDV1LtSVbRAjtMT9Fai5fh6P1Lb9P2NGnXayVWHdkHFGFT7drCDAjsqyA4ar5bWUwadLgpPzKpim9yuCdAdiey6FUitJfqtWt63MMEGBd76ahd7SHnXS9QVsuytrgu4FKRYbnfo3akTTWio1d4EorrebqgpcCuyvduR4bU4dJHsqYfZ8qmL4FtqiHLw7P8dKoeWkwvV2quu4nuxWtZ4TWLP2MqeYYyCFEtC6eY1b9cJXt7VMVCJGjsoy63vWmZ13S7pQytguUNmipW77TL7z5TZSsBEY5WsDNeGTFr522YynUp6fWv1sYzxSDDg2Xb5gEaDWx8McJYZjbyBUmwPoaiuEizs47A2fKP6dTbBck8QAGEeD5XeXWRS2equjpF242CDMY4UeGWvVbD9BzfitimAtK923nRtFr6LGP1GsTAL4TNKMMHxVpWLHfXbsWF8uq2ZJj8vPFBeymaaNdqnoPXzaRmt8T5vDuZYvFzqgKdLsr42e6sX7j2iNgNFt4obmR6fqYk3EABHVYHJ166ArX16XNRbF1MPDyTqESLiBQA5MGEd4jA89YzMM1CtzcnRpy9DrJsDR7xZqhq89aVCfB2WGF7sENKcrRBRXRvAGts2ciytTKTj2aToq8AifQMBFZiWieHtRwQUWz3ieLU99Ygrh7zya57wAYpJ2W1DhyjjXpvkgAKrJ3FRFqLMkz21iSSwFTjJk9d15FxGun13wyKcjcwaRytmwbx4QreQP88mqsNcSVZ2UYkfCaRa2HreDf19RmxzCQuXWpbhX5GhyDqMvrMn9rW9t3afKn7wpZ26UQWkDHM8L2edatcH6ojmb2tV", - "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrVo1ikPrYsQKMPDqBa3Pg5U4ZXUK58YY6Q4n8H4NQM4fYo8JchQqqhu7Hhf5oSGnkZPJ8MhCPLbg5i1XRLZDFSsm6Jq3LCdrdLuyiGUafaWznLi54oghwQcTBdhjABWLZiZydxMxjq7uD3NULABrXrC8FCaKfTLEe64FyhjxuFch2EmrrmhmKGjvzYqvc67xrWpvYSZLDmVwkH2wC7hQmYxTwPzant3GwCx1uhREnHHJLvv2keK8bAwhb4H9GCygx1p4s72e91NXBHg1RmR7YQLChEDjMLgCydCNAayi81SGzspNkqGQy4CThqYGRP6vxXPHP3ZYyn8TGvyQDtGahgqNchSHTGbcxcTp83fJ7wEEDpoEQF7yAVDkosRFYz7b98uiSFzhQ4PVtmLhY3fGCBySCqUhjNjqYeufh2uE4P23ELxEbVQJAFQw6aFcpudZmHuyXreQmenqYfnSuU1ZixwNGs2TJrqGVVTbpKNtEqZCp6ZbdPTETJPHtja94qBBdh5qgTfWeZQVfXrZsnXqWbjPBBQC2j96ZX4cZLXSc1GEzQXb6ci7yFQvZoUY4JPETwCQetSNUajLcnZUay7V9pFbKv9sWJfgUBKh3nZ7fsKcYBgMmfnqcbtHjZ1fypQj9TS1cnDSGj5tkbuZUVdGh7PoCbTSC8LE1eCEA6KBSJzSZLVLUFT2JQVnbb28fYEMtRcwB48T84mP1MTDuP1BP1Bpsntm2EWcuRHA4mVTBpcm8AYksFpyBwpiSHosBwRhxoGiSsFp9YB7cNSjQQa3k5EHbAm4Far2qYiSymWXWDVejdCygubcLD6dctAMcqswj9js6XyWRcBxgCBUQCXTM1HohBLye8DYe1k51doqLVuEqnniWqNSHR1Bik6Fxkxi26zsmwB9uMdfovRJ8jYmtr6BSKY4Ameb83ozKTDsMHcoq2tVP6GkCm7Um8FtwRYQRGLTzJcT8BH1QyUCwnThFwtoD45x9YoteLdY4ahY12DK1dx2dpFhC5dyKbpXMaBEZ6xZKmBJE6Vr2WBK8Y3VYmvsdNuyktEvNdMmSmLck63uM1xCRdpSWpRy1RioKkk8myvCF45mhNgmZXcDo8BY4raFjfLCtUzsvQXyoeS3pWuvJnkuv9JSe48XKqXtWDxukrbzzjU9ZrNskEBzMUfao4LFYDSy6FVEo6kpNBWwa3yeN83gozACAK31HqRYV3XhpwjsUyNiE4cqpvdWACYkbQvFKJZ137B4b76vFC3h4aqdcF86cxsRbZ7jE3sifk15ZKfbQJ3CbseD1XiBoLMCdgefKoYLTZGDvimwh1pAP7s3M8ttRxM19UNLHGatTtEiSB654Qo3MkaosdceFUzC", - "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrESE3griYC7sq7LWyGr6NTyzbgn2arrrCEjKoUe1HdXRERBe2YjxTMtFgFqXGeB8dyZddrQ75apZoGzXheCbHt4PXesqwzTPg1ybNoqiBDLr4AyoWqkt8BNFCzGxNL8Rb5dGozChvJG82batVEwbjbygaL9mmFHxBi4kNvY7abk8bh6gCwFVE4dKBq6mrvXaoqnR27DpwrcgSHKpBkB4KuWqKBMdKXCmDSFj5E7LRezwEWyUTu5exovMknqgj9hiMKzczK8RzDhLsEL9w4a1FKfn4UYcpk9dNNguftUQgQkyzmUPDaMX17acbgW99qNvMgGvc2xc2aTqyCNTKtzbaRiXyStQz8onT4SmgxjvdEXiTRCtnG953sCYHYGKrYRtvdXQw4yTRhoXznKPiFoYC5fse51S5PRZV5VjLbQZxX3BfMmwEXMt18TQyBd2WJLryKVdVtDR5pmxPrrpHjeRdAt1Ar7r7hDy4mQ5kAaFLzDVsTWCXkRZdAG45S8FvQfWV7Mh8JLEC41HdSBuZdaNXbBRagKj5W92EyDyajYLPQ5nzUmq2VJprLitQmzTrBvV6qBJcxZm42kDazY3TKfwZ2d1bHezxNPbiYZivy8qm58Z8aPKQQd1qEL3WbrfMQRTGFTDEC9RUaLKPnS3fdovKpbxkmfU1oou26MeWFrATRp5FNJiGNZ7Gb2TaLokPUhrv9sCMg7g5x7MGBhGpeXdAyb8hri6K5SbVaWj7fHgEDJnjhTDvF2Y9A75GE4tpcsM9XHaqnvDeBZakjUdW88F28LfTUHmyCjGmopsgChL1rjKFoYnqV5fDHKWqJtSLjeg6RzXV94CGzyq6BD7mojdVtmMQjnQEbFcnrs5am55w8nUE4F7jk6XsEsiZinN23ehG9zuAMJUiXtVMPWbXefRAUwHLpbnCur32C7suwCcFzzxFS3w1sMkJhvPYi6bfienqhX1tks6cfR4YkPWuu1HaHVbCrYybdA5fnR8hqM5URG4HSXXfLe8hnK4Lro6rJx1m1bXeYxdgzJdczejDKj3rmedSu4HC2BMZSGVatPScReH9sQVpZ3GS7ALpr5TMm6jisYLqFT6JWfZsJmydqrn5QZMZv5x9XAwkWEoEB8Sk8W7SuH1ZwvS4m8pDmegVFKWXTLqPxW11q9ydWZQ8zjqMxDTR42K2oVJUkRk3qgcsYiJSjyLBrbpheArpxB7z1JneQ7b97zu8j1KQS1aHTFvxU4ANRU3quRtySxy6iPNLapmwpBWwK6uniGkv3UmjWjvhzx3fiTC2rrMj6NdqP1fLAUkMTczWHkdCA4abRmPHiTYP3YuTvyy1QcQhAowwcdQsnD959dHXtJ4XsKAb4z8", - "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uxJcBB868FiQToHL5G1dW9W7RfJrD6ZqAgLBm8V48XCSG9TfZhrjjmj4hukQ8etisz7FuDu1Tx3Tf2bEhfeqm9j1WUpzRt5DwYQc8Tu21gdT3zzwNgPkTugxgzJH6cPL393tgktCXNF5Ar64s5E6DodUXhc5NEapAc1uSCP5RaZ7spaEhXr5XsUqH9VUzMhSXSss2ziDiTU31Stz9DLGdhumXMzbR1y89zHEeKEWA9PFqNqf9svF41hiuTinRNeSDtpMqcf2EPDyEbB87kMQE4UHTzFn18DEHryVpkUGbbL1GT5c8E89rUqNGtEG1z1Aw8849veWDoX4xqDnomWT5FWWj2ozAMbbRZqYBDGxWZfPq8XZdXwz836Z6m1GysiCJVCTuMXUZnZ6Lqo49thrK8SPUX656rik8M6Vec6QRri517wf6EWR69iLe9ZUKK99XbwqkFb1y3kni6mqz4Z2q6a8QdepMNfCUXTPoFe2MMJRQZ3XdxSSKd3Ht71RfrGbDdR4Gu9xojZY46paGSBGDsDmvQFbnqQiN4yZjcNFwrVvpWPFVQL5hh6BBiHU2WGgEZ3doc8hU6kcJUMaNkLMAKusMCzhDWr4rC9m9qoagpBojNTqttqnvERLPggwKcpP9wtYrwRXgoSVKiQTFmbRtTofcCgFjCU8wgU3DMRWY289oH5VvKX3WkJ1k8UbDcnymv3V18zCRhmaLwygDSbzXR8ye92fjxrHPEQa56D7WVy8dRjVxAPfmWw75QVTusmRswcKNipLE4RSE5Kx1gfGcsN52NkwVYwV6aGN9T65MJccvEdUbG16Lz515QbCFtK5ay1TBkzi21XpR5jwiUBU4zc98VqS21YmAyVgbRf4JMCJXHzKWyhpYaa3BFGuVx5by59DVv3ZTjghKdHt2osCGSHPmoXRw2MA6RdvZuiPntJ7TsNcSpSmJqftZTCSXvkYGkDuoj8YRHbzKANs1cu2zkYHz6HANxiTgD71px8Xrtooh13RZBQ5PQ3ZdzpyT3etAGEHqcYsvAwm12zhtctL7NXuDpgJ7V1NYcuAXsRoRkBVMU5WUPCZ3ZmySyAXFyGf6XP2U1mKVoTxKRDay6JJr6kDa57zDYQJD3L1beKBUMXQnFhfyzBBMDwVVTvw7n2t73wz6k5jHggtU1eBKhRmhwTvur9otMJmtXN5yGDY7vcxxnP3MFeptq1zAGXYFFdQcU26ceThahq9TpixmZFALohtyjUCxBYpSJVdZNRW71Uueu7sqjKdBtAAC9e8NtdekJMYqsBdRRiui8ectZjJL6Dz4zuEmq19ruQsqxF4v1zgEQaTX35djjg44k91kBdQN1TzNHCvn3XireZyP9NKRW", - "2wF8sNAVsk5NkVqW2tt34Q6HgnHMX8b3v2TWAsHfkFGHF5ep16ZUU8vTnKdiunuoQEvHJCtXuok1LL77t5izFHkRzF8YVNPYEvT2efNJDKdj4YAxRH3F92XMh8VqFGyikYopcd5rvCcnciHW21fhnEGUdZcvSfjtyCWbywgZc95y7vm6GvTXTxNdaDKJNinkzNiTvbqnzyRFDSWaALpmTGAkaXtaTKVyQrgwieBV6W5xbW23FT1ibjirjLBoEWaKfK9NfQMDDzjYDu82PvRXBFdE8nyhYmsYXmX8dGVfg6kMcKgMqXR4C5QsmUqJ5bazAcWYPCv4LpsQtw1oMa31f25LgXMt88HWa5V1iQoZNXbh7drCERXhrpGsPGwAbgRqJZ5DfRvc4EtoqYiR4N66i5PkrpVHYJTV9VHtMv8zFJEavDaRaUk9wPXqprTXhjk4f8r3U2QtBTPrp9YUMWL1YxoeAtdQCMLSqRwRVVvJbXPcQEKzTUUDvqsUdDofPXwVHVq23Z93BU9WKDZ3YR98VnRdrFMKavE6uGbT99ay5XtYZAKhNVrZNdJnQyLHDsT1DnT4QDZ5mcAJSAVpNgwoPFmvJYrcntoVH1Pye7rJHCxZSRrwo9kTeM1RBS8frGMJmUiPcC1K9yGb6JeXQADEsNPPG8ZXTRry16JdUCjDW1JYMV4YrhuX3Kr69R2LHJ5AVgk2Cup2LjSEJ8FJ2MjHaAgGPPegn3UCWbZYM2VBWm1pBLaXEEYP8cc22JmGWVcbv2zP6ixGDefdGS2E9sEnQj76avTz8qcejTgaP8tTVsgBdi7sTSr5xE6peqK7tbT7PWL2Skwhr4BKQyfi38nVbyfH1gVtKLVoiK4bcpVdzdXRtkCoqqVeerXzonnFHSgzYFuH3fUrbJQrDwSCfyE42dZjeC3SD2aqdTkvLyKbhs1ws2diRcioJ6ZmwQ6T8qANEzoavbKbzsJqbCFQEdQVy67jsXiJhFQX83LzAcVkcmqdmCcGfNpBze1gshH72YpTf5as9DysZZYnUmSdYAxuHo69S69WNiKs5oQyUfvyLkMpUh16BCho4BP5dJF8Xou26Vwfzb8BXrMQf5RG65tzfy1tqsADWq4gCkFwhSp9vG7BxxvLFvWGZCa1GKjrHPagPEchuekA4s8kMEvZzkC119myDLjniThawLxGF9CLzW9kXfEPRVCoVpFYs3vqVcxLMAKyuHGCRumWgEjJJbtDAxSnMYAr5iRkDXoLfyvvip28167L16xfLD4d5VNrk6hsu3Ta8WUqt2y1WnMAXYkdLE5zswhGFQVyTow1CH2oqezoJLJLs3Vp4HAb6ng2WS6JBGDxL3EhRrAgzruezYBYCZBMoeMDn8Lt2M8kHxCaKax5mzves8AaE1ooi8m5uiLFVPmd6NJCTM2Tia7XLZTxu3YLEbztRqz1tTox8muB481c7SEn9S5L9ENHxPswy4KdS5k8BVMT86yxnnctx4ruEnLRYENmMDp2McBz22z3tJ4tVq37nn3hMuc5pajTnR99it5wBbwZWbHXzyU9uMeK8MjS9GmVz52KqAwi53WnbnkyboKeFunH99Dt4D8AhJoH3iFNXn9PTXLcGw7AMonWCB4qMfwQieMJgRAHf1PGUnzV", - ] - }) - }, -} diff --git a/projects/sigmaswap/index.js b/projects/sigmaswap/index.js deleted file mode 100644 index 4e4d03f9a65..00000000000 --- a/projects/sigmaswap/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0xE58a7D7E726CD266c103cC7C2763f4a3005d78B1"; - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }); -} - -module.exports = { - methodology: `We count the LYX on ${contract}`, - lukso: { - tvl, - }, -}; diff --git a/projects/sigmausd/index.js b/projects/sigmausd/index.js deleted file mode 100644 index e191e5297df..00000000000 --- a/projects/sigmausd/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require('../helper/tokenMapping') -const { sumTokensExport } = require('../helper/chain/ergo') - -module.exports = { - timetravel: false, - ergo: { - tvl: sumTokensExport({ owner: 'MUbV38YgqHy7XbsoXWF5z7EZm524Ybdwe5p9WDrbhruZRtehkRPT92imXer2eTkjwPDfboa1pR3zb3deVKVq3H7Xt98qcTqLuSBSbHb7izzo5jphEpcnqyKJ2xhmpNPVvmtbdJNdvdopPrHHDBbAGGeW7XYTQwEeoRfosXzcDtiGgw97b2aqjTsNFmZk7khBEQywjYfmoDc9nUCJMZ3vbSspnYo3LarLe55mh2Np8MNJqUN9APA6XkhZCrTTDRZb1B4krgFY1sVMswg2ceqguZRvC9pqt3tUUxmSnB24N6dowfVJKhLXwHPbrkHViBv1AKAJTmEaQW2DN1fRmD9ypXxZk8GXmYtxTtrj3BiunQ4qzUCu1eGzxSREjpkFSi2ATLSSDqUwxtRz639sHM6Lav4axoJNPCHbY8pvuBKUxgnGRex8LEGM8DeEJwaJCaoy8dBw9Lz49nq5mSsXLeoC4xpTUmp47Bh7GAZtwkaNreCu74m9rcZ8Di4w1cmdsiK1NWuDh9pJ2Bv7u3EfcurHFVqCkT3P86JUbKnXeNxCypfrWsFuYNKYqmjsix82g9vWcGMmAcu5nagxD4iET86iE2tMMfZZ5vqZNvntQswJyQqv2Wc6MTh4jQx1q2qJZCQe4QdEK63meTGbZNNKMctHQbp3gRkZYNrBtxQyVtNLR8xEY8zGp85GeQKbb37vqLXxRpGiigAdMe3XZA4hhYPmAAU5hpSMYaRAjtvvMT3bNiHRACGrfjvSsEG9G2zY5in2YWz5X9zXQLGTYRsQ4uNFkYoQRCBdjNxGv6R58Xq74zCgt19TxYZ87gPWxkXpWwTaHogG1eps8WXt8QzwJ9rVx6Vu9a5GjtcGsQxHovWmYixgBU8X9fPNJ9UQhYyAWbjtRSuVBtDAmoV1gCBEPwnYVP5GCGhCocbwoYhZkZjFZy6ws4uxVLid3FxuvhWvQrVEDYp7WRvGXbNdCbcSXnbeTrPMey1WPaXX', tokens: [nullAddress] }) - }, - methodology: `Spectrum Finance TVL is achieved by making a call to its API: https://api.spectrum.fi/v1/amm/platform/stats.` -} diff --git a/projects/silent/index.js b/projects/silent/index.js deleted file mode 100644 index 6780e2f31e9..00000000000 --- a/projects/silent/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const sdk = require('@defillama/sdk'); - -const GATEWAY = "0x149c4DD9A1f2A4de605bE2b63d60540A8865a288" -const SVAULT = "0x305a2694dD75ecb7D6ACbf0Efcd55278c992eEB9" -const SYFManager = "0x92A9C92C215092720C731c96D4Ff508c831a714f" - -const MorphoStrategy_ETH = "0x0E41e3Df9A6F6cB3fC81c8669e5AcA716EceB8D1" -const MorphoVault_WETH = "0x9a8bC3B04b7f3D87cfC09ba407dCED575f2d61D8" - -const SUSDE = ADDRESSES.ethereum.sUSDe; // Ethena's sUSDe - -const ETH = ADDRESSES.null -const USDT = ADDRESSES.ethereum.USDT -const USDC = ADDRESSES.ethereum.USDC - -const owners = [GATEWAY, SVAULT, SYFManager, MorphoStrategy_ETH] -const tokens = [ETH, USDT, USDC] - - -async function getMorphoTvl(balances, owner, vault, underlyingAsset, chain, block) { - await sumTokens2({ - balances, - owner, - tokens: [vault], - chain, - block, - }); -} - -async function tvl(_, _1, _2, { chain, block }) { - const balances = {}; - - await sumTokens2({ - owners, - tokens, - chain, - block, - balances, - }); - - await getMorphoTvl(balances, MorphoStrategy_ETH, MorphoVault_WETH, ETH, chain, block); - - return balances; -} - -module.exports = { - ethereum: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/silkroad-fbifunds/index.js b/projects/silkroad-fbifunds/index.js deleted file mode 100644 index 8107e70c847..00000000000 --- a/projects/silkroad-fbifunds/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { bitcoin: { owners: bitcoinAddressBook.silkroad } } -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/silkswap/index.js b/projects/silkswap/index.js deleted file mode 100644 index 39612edf025..00000000000 --- a/projects/silkswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport('ftn', '0xd0c5d23290d63e06a0c4b87f14bd2f7aa551a895') diff --git a/projects/silo-v2/index.js b/projects/silo-v2/index.js deleted file mode 100644 index 0026856fa6a..00000000000 --- a/projects/silo-v2/index.js +++ /dev/null @@ -1,139 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const XAI = '0xd7c9f0e536dc865ae858b0c0453fe76d13c3beac' -const blacklistedSilos = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa",]; - -const getAssetAbiV2 = "address:asset"; -const getAssetStateAbiV2 = 'function getTotalAssetsStorage(uint8 _assetType) external view returns (uint256 totalAssetsByType)'; -const xSILO = '0x4451765739b2D7BCe5f8BC95Beaf966c45E1Dcc9'; - -const configV2 = { - sonic: { - factories: [ - { - START_BLOCK: 2672166, - SILO_FACTORY: '0xa42001d6d2237d2c74108fe360403c4b796b7170', // Silo V2 Sonic (Main) - }, - { - START_BLOCK: 25244110, // Silo V2 Sonic (Main Revised Deployment) - SILO_FACTORY: '0x4e9dE3a64c911A37f7EB2fCb06D1e68c3cBe9203', - } - ], - }, - arbitrum: { - factories: [ - { - START_BLOCK: 334531851, - SILO_FACTORY: '0x384DC7759d35313F0b567D42bf2f611B285B657C', // Silo V2 Arbitrum (Main) - } - ] - }, - ethereum: { - factories: [ - { - START_BLOCK: 22616413, - SILO_FACTORY: '0x22a3cF6149bFa611bAFc89Fd721918EC3Cf7b581', // Silo V2 Ethereum (Main) - } - ] - }, - avax: { - factories: [ - { - START_BLOCK: 64050356, - SILO_FACTORY: '0x92cECB67Ed267FF98026F814D813fDF3054C6Ff9', // Silo V2 Avalanche (Main) - } - ] - }, -} - -async function tvl(api) { - // Handle V2 silos - let toaV2 = []; - const blacklistedTokens = configV2[api.chain]?.blacklistedTokens || []; - if (configV2[api.chain]) { - const siloArrayV2 = await getSilosV2(api); - const assetsV2 = await api.multiCall({ - abi: getAssetAbiV2, - calls: siloArrayV2.map(i => ({ target: i })), - }); - toaV2 = assetsV2.map((asset, i) => [[asset], siloArrayV2[i]]); - } - - return sumTokens2({ api, ownerTokens: toaV2, blacklistedTokens: [XAI].concat(blacklistedSilos), }); -} - -async function borrowed(api) { - if (configV2[api.chain]) { - // Handle V2 silos - const siloArrayV2 = await getSilosV2(api); - - // Get asset address for each silo - const siloAssets = await api.multiCall({ - abi: getAssetAbiV2, - calls: siloArrayV2.map(i => ({ target: i })), - }); - - // Get total borrow amount for each silo (AssetType.DEBT = 2) - const borrowAmounts = await api.multiCall({ - abi: getAssetStateAbiV2, - calls: siloArrayV2.map(i => ({ target: i, params: [2] })), - }); - - // Add borrow amounts for V2 silos - siloAssets.forEach((asset, index) => { - if (asset.toLowerCase() === XAI) return; - return api.add(asset, borrowAmounts[index]) - }); - } -} - -async function getSilosV2(api) { - const chain = api.chain; - let logs = []; - let siloAddresses = []; - if (configV2[chain]) { - for (let factory of configV2[chain].factories) { - const { SILO_FACTORY, START_BLOCK } = factory; - let logChunk = await getLogs({ - api, - target: SILO_FACTORY, - fromBlock: START_BLOCK, - eventAbi: 'event NewSilo(address indexed implementation, address indexed token0, address indexed token1, address silo0, address silo1, address siloConfig)', - }); - logs = [...logs, ...logChunk]; - } - - siloAddresses = logs.flatMap((log) => { - - let silo0 = log.args[3]; - let silo1 = log.args[4]; - - return [silo0, silo1].filter( - (address) => blacklistedSilos.indexOf(address.toLowerCase()) === -1 - ); - }); - - } - - return siloAddresses; -} - -async function staking(api) { - const stakedSilo = await api.call({ - target: xSILO, - abi: 'function totalAssets() external view returns (uint256 total)', - }); - return api.addCGToken('silo-finance-2', stakedSilo / 1e18) -} - -module.exports = { - methodology: `We calculate TVL by interacting with Silo Factory smart contracts on Ethereum, Arbitrum, Base & Optimism. For Ethereum, it queries Silo(Main-V2)(0xa42001d6d2237d2c74108fe360403c4b796b7170). On Arbitrum, we query the Silo Arbitrum factory (Main-V2)(0xf7dc975C96B434D436b9bF45E7a45c95F0521442), we query the factories to obtain the addresses of Silos, retrieve the assets of each Silo, and then calculate the sum of the deposited tokens, borrowed amounts are calculated separately from TVL.`, - arbitrum: { tvl, borrowed, }, - ethereum: { tvl, borrowed, }, - // optimism: { tvl, borrowed, }, - // base: { tvl, borrowed, }, - sonic: { tvl, borrowed, staking}, - avax: { tvl, borrowed, }, - hallmarks: [] -} \ No newline at end of file diff --git a/projects/silo/index.js b/projects/silo/index.js deleted file mode 100644 index 6b87e37c605..00000000000 --- a/projects/silo/index.js +++ /dev/null @@ -1,120 +0,0 @@ -const sdk = require('@defillama/sdk') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const XAI = '0xd7c9f0e536dc865ae858b0c0453fe76d13c3beac' -const blacklistedSilos = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa",]; - -const getAssetsAbiV1 = "address[]:getAssets" -const getAssetStateAbiV1 = 'function getAssetsWithState() view returns (address[] assets, tuple(address collateralToken, address collateralOnlyToken, address debtToken, uint256 totalDeposits, uint256 collateralOnlyDeposits, uint256 totalBorrowAmount)[] assetsStorage)' - -const configV1 = { - ethereum: { - factories: [ - { - START_BLOCK: 15307294, - SILO_FACTORY: '0x4D919CEcfD4793c0D47866C8d0a02a0950737589', // Silo Ethereum (Legacy) - }, - { - START_BLOCK: 17391885, - SILO_FACTORY: '0x6d4A256695586F61b77B09bc3D28333A91114d5a' // Silo Ethereum (Convex Factory) - }, - { - START_BLOCK: 17782576, - SILO_FACTORY: '0x2c0fA05281730EFd3ef71172d8992500B36b56eA' // Silo Ethereum (LLAMA Edition) - }, - { - START_BLOCK: 20367992, - SILO_FACTORY: '0xB7d391192080674281bAAB8B3083154a5f64cd0a', // Silo Ethereum (Main) - } - ] - }, - arbitrum: { - factories: [ - { - START_BLOCK: 51894508, - SILO_FACTORY: '0x4166487056A922D784b073d4d928a516B074b719', // Silo Arbitrum (Main) - } - ] - }, - optimism: { - factories: [ - { - START_BLOCK: 120480601, - SILO_FACTORY: '0x6B14c4450a29Dd9562c20259eBFF67a577b540b9', // Silo Optimism (Main) - } - ] - }, - base: { - factories: [ - { - START_BLOCK: 16262586, - SILO_FACTORY: '0x408822E4E8682413666809b0655161093cd36f2b', // Silo Base (Main) - } - ] - }, -} - -async function tvl(api) { - // Handle V1 silos - let toaV1 = []; - if(configV1[api.chain]) { - const siloArray = await getSilosV1(api); - const assets = await api.multiCall({ - abi: getAssetsAbiV1, - calls: siloArray, - }); - toaV1 = assets.map((v, i) => ([v, siloArray[i]])); - } - - return sumTokens2({ api, ownerTokens: toaV1, blacklistedTokens: [XAI], }); -} - -async function borrowed(api) { - // Handle V1 silos - if(configV1[api.chain]) { - const siloArray = await getSilosV1(api); - const assetStates = await api.multiCall({ - abi: getAssetStateAbiV1, - calls: siloArray.map(i => ({ target: i })), - }); - assetStates.forEach(({ assets, assetsStorage }) => { - assetsStorage - .forEach((i, j) => { - if (assets[j].toLowerCase() === XAI) return; - return api.add(assets[j], i.totalBorrowAmount) - }) - }) - } -} - -async function getSilosV1(api) { - const chain = api.chain - let logs = []; - for(let factory of configV1[chain].factories) { - const { SILO_FACTORY, START_BLOCK, } = factory; - let logChunk = await getLogs({ - api, - target: SILO_FACTORY, - fromBlock: START_BLOCK, - topic: 'NewSiloCreated(address,address,uint128)', - }) - logs = [...logs, ...logChunk]; - } - - return logs.map((log) => `0x${log.topics[1].substring(26)}`).filter((address) => blacklistedSilos.indexOf(address.toLowerCase()) === -1); -} - - -module.exports = { - methodology: `We calculate TVL by interacting with Silo Factory smart contracts on Ethereum, Arbitrum, Base & Optimism. For Ethereum, it queries (Main-V1)(0xB7d391192080674281bAAB8B3083154a5f64cd0a), (Legacy-V1)(0x4D919CEcfD4793c0D47866C8d0a02a0950737589), (Convex Factory-V1)(0x6d4A256695586F61b77B09bc3D28333A91114d5a), and (LLAMA Edition-V1)(0x2c0fA05281730EFd3ef71172d8992500B36b56eA). On Arbitrum, we query the Silo Arbitrum factory (Main-V1)(0x4166487056A922D784b073d4d928a516B074b719), On Optimism, we query the Silo Optimism factory (Main-V1)(0x6B14c4450a29Dd9562c20259eBFF67a577b540b9), On Base, we query the Silo Base factory (Main-V1)(0x408822E4E8682413666809b0655161093cd36f2b), we query the to obtain the addresses of Silos, retrieve the assets of each Silo, and then calculates the sum of the deposited tokens, borrowed amount are exported separately.`, - ethereum: { tvl, borrowed, }, - arbitrum: { tvl, borrowed, }, - optimism: { tvl, borrowed, }, - base: { tvl, borrowed, }, - sonic: { tvl, borrowed, }, - hallmarks: [ - [1692968400, "Launch CRV market"], - [1736978400, "Launch Silo V2"], - ] -} \ No newline at end of file diff --git a/projects/silodefi/index.js b/projects/silodefi/index.js deleted file mode 100644 index b59ce3ab8fa..00000000000 --- a/projects/silodefi/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { searchAccountsAll } = require('../helper/chain/algorand') -const sdk = require('@defillama/sdk') - -async function tvl() { - const balances = {} - const call = 913906096; - const put = 913951447; - const usdc = 31566704; - const searchParams = { - 'asset-id': usdc, - 'currency-greater-than': 1000000, - } - const callAccounts = await searchAccountsAll({ appId: call, searchParams, limit: 100 }) - const putAccounts = await searchAccountsAll({ appId: put, searchParams, limit: 100 }) - let accounts = [...callAccounts, ...putAccounts] - accounts = accounts.flat().filter(i => i["created-assets"] && - i["created-assets"].some(asset => asset.params["unit-name"] === 'SILO') - ) - accounts.forEach(a => { - sdk.util.sumSingleBalance(balances, 'algorand', a.amount/1e6) - a.assets.filter(i => i['asset-id'] === usdc).forEach(i => sdk.util.sumSingleBalance(balances, 'usd-coin', i.amount/1e6)) - - }) - return balances -} - -module.exports = { - timetravel: false, - algorand: { - tvl, - } -} \ No newline at end of file diff --git a/projects/silostake/index.js b/projects/silostake/index.js deleted file mode 100644 index 0a54e7cfa7e..00000000000 --- a/projects/silostake/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const { - queryContract: queryContractCosmos -} = require("../helper/chain/cosmos"); - -// node test.js projects/silostake/index.js -const config = { - sei: { - coinGeckoId: "sei-network", - hub: "sei1e3gttzq5e5k49f9f5gzvrl0rltlav65xu6p9xc0aj7e84lantdjqp7cncc", - coinGeckoMap: { - usei: "sei-network", - } - } -}; - -async function getState(chain, contract) { - if (!contract) { - return {}; - } - return queryContractCosmos({ - contract, - chain, - data: { state: {} }, - }); -} - -module.exports = { - timetravel: false -}; - -Object.keys(config).forEach(chain => { - const { coinGeckoId, hub } = config[chain]; - - module.exports[chain] = { - tvl: async (api) => { - // Logic for calculating TVL - just get total ustake. - let state = await getState(chain, hub); - - let total_ustake = state['total_utoken']; - - api.add(coinGeckoId, total_ustake / 10 ** 6, { skipChain: true }); - - return api.getBalances(); - }, - }; -}); diff --git a/projects/silverswap/index.js b/projects/silverswap/index.js deleted file mode 100644 index 762c9f0cee9..00000000000 --- a/projects/silverswap/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -/** - * @typedef {Object} SilverSwapInfo - * @property {string} factory - Hex address of the factory contract - * @property {number} fromBlock - Block to start indexing. Should precede the - * deployment block by at least 1. - * @property {boolean} isAlgebra - Defaults to true. SilverSwap is based on - * Algebra's DEX model. - */ - -/** - * Config object mapping chain names to SilverSwap deployment information. - * - * @type {Object.} - */ -const silverswap = { - sonic: { - factory: '0xb860200BD68dc39cEAfd6ebb82883f189f4CdA76', - fromBlock: 186117, - isAlgebra: true, - }, - nibiru: { - factory: '0xb860200BD68dc39cEAfd6ebb82883f189f4CdA76', - fromBlock: 19674297, - isAlgebra: true, - }, -} - -module.exports = uniV3Export(silverswap) diff --git a/projects/simitci-v3/index.js b/projects/simitci-v3/index.js deleted file mode 100644 index 561727be57b..00000000000 --- a/projects/simitci-v3/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - 'bitci': { factory: '0x53261c4f95187c8B79F0836da59334B267aFef60', fromBlock: 8680779} -}) \ No newline at end of file diff --git a/projects/simps/index.js b/projects/simps/index.js deleted file mode 100644 index 7aac0b83f20..00000000000 --- a/projects/simps/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0x2a7868fd6f3501841d6dab7f4be8a3f8d463b842"; - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }); -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl, - }, -}; diff --git a/projects/single/abi.js b/projects/single/abi.js deleted file mode 100644 index af989a76c58..00000000000 --- a/projects/single/abi.js +++ /dev/null @@ -1,29 +0,0 @@ -const camelotMasterAbi = { - "poolLength": 'function poolsLength() view returns (uint256)', - "getPoolAddressByIndex": "function getPoolAddressByIndex(uint256 index) view returns (address)", - "getPoolInfo": "function getPoolInfo(address) view returns (address poolAddress, uint256 allocPoint, uint256 lastRewardTime, uint256 reserve, uint256 poolEmissionRate)", -} - -const camelotNFTPoolAbi = { - "balanceOf": "function balanceOf(address owner) view returns (uint256 balance)", - "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)", - "getPoolInfo": "function getPoolInfo() view returns (address lpToken, address grailToken, address xGrailToken, uint256 lastRewardTime, uint256 accRewardsPerShare, uint256 lpSupply, uint256 lpSupplyWithMultiplier, uint256 allocPoint)", - "getStakingPosition" : "function getStakingPosition(uint256 tokenId) view returns (uint256 amount, uint256 amountWithMultiplier, uint256 startLockTime, uint256 lockDuration, uint256 lockMultiplier, uint256 rewardDebt, uint256 boostPoints, uint256 totalMultiplier)" -} - -const camelotNitroPoolAbi = { - "nftPool": "function nftPool() view returns (address)", - "userInfo": "function userInfo(address) view returns (uint256 totalDepositAmount, uint256 rewardDebtToken1, uint256 rewardDebtToken2, uint256 pendingRewardsToken1, uint256 pendingRewardsToken2)" -} - -const wCamelotSpNFTAbi = { - "stakedNitroPool": "function stakedNitroPool(uint256) view returns (address stakedNitroPool)", -} - - -module.exports = { - camelotMasterAbi, - camelotNFTPoolAbi, - camelotNitroPoolAbi, - wCamelotSpNFTAbi, -} \ No newline at end of file diff --git a/projects/single/helpers.js b/projects/single/helpers.js deleted file mode 100644 index c2cf014d579..00000000000 --- a/projects/single/helpers.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('../helper/abis/masterchef.json'); -const { unwrapLPsAuto } = require('../helper/unwrapLPs'); -const userInfoAbi = 'function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)' -const { camelotMasterAbi, camelotNFTPoolAbi, camelotNitroPoolAbi, wCamelotSpNFTAbi } = require("./abi") - -/** this is adapted from `projects/helpers/masterchef/getUserMasterChefBalances` - * to deal with VVS's CraftsmanV2 Contract, which does not have - * `poolLength`, amongst other things. - */ -async function getUserCraftsmanV2Balances({ api, masterChefAddress, userAddres, excludePool2 = false, onlyPool2 = false, pool2Tokens = [], poolInfoABI = abi.poolInfo, craftsmanV1 }) { - return {} - const lpTokens = (await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: poolInfoABI, target: craftsmanV1 })).map(a => a[0]) - const dummyArray = Array.from(Array(lpTokens.length).keys()); - // pids of CraftsmanV1 and CraftsmanV2 share same lpToken - const userInfoCalls = dummyArray.map(i => ({ target: masterChefAddress, params: [i, userAddres], })); - const userBalances = (await api.multiCall({ calls: userInfoCalls, abi: userInfoAbi, })).map(a => a[0]); - api.add(lpTokens, userBalances); - - await unwrapLPsAuto({ api, excludePool2, onlyPool2, pool2Tokens }); - // await unwrapLPsAuto({ balances: api.getBalances(), chain: api.chain, block: api.block, excludePool2, onlyPool2, pool2Tokens }); -} - -async function getUserCamelotMasterBalances({ api, masterChefAddress, userAddres: wCamelotSpNFT, excludePool2 = false, onlyPool2 = false, pool2Tokens = [] }) { - return {} - const poolAddresses = await api.fetchList({ lengthAbi: camelotMasterAbi.poolLength, itemAbi: camelotMasterAbi.getPoolAddressByIndex, target: masterChefAddress }) - const lpTokens = (await api.multiCall({ abi: camelotNFTPoolAbi.getPoolInfo, calls: poolAddresses })).map(a => a.lpToken) - - const dummyArray = Array.from(Array(poolAddresses.lengthAbi).keys()); - - - const userSpNFTBalanceCalls = dummyArray.map(i => ({ target: poolAddresses[i], params: wCamelotSpNFT, })); - const userSpNFTBalance = (await api.multiCall({ calls: userSpNFTBalanceCalls, abi: camelotNFTPoolAbi.balanceOf, })) - - await Promise.all(userSpNFTBalance.map(async (spNFTBalance, idx) => { - if (isNaN(+spNFTBalance) || +spNFTBalance <= 0) return; - const dummySpNFTArray = Array.from(Array(Number(spNFTBalance)).keys()); - const spNFTIdCalls = dummySpNFTArray.map(i => ({ target: poolAddresses[idx], params: [wCamelotSpNFT, i] })); - const userSpNFTId = (await api.multiCall({ calls: spNFTIdCalls, abi: camelotNFTPoolAbi.tokenOfOwnerByIndex, })) - const stakingPositionsCalls = dummySpNFTArray.map(i => ({ target: poolAddresses[idx], params: userSpNFTId[i] })); - const userLpBalance = (await api.multiCall({ calls: stakingPositionsCalls, abi: camelotNFTPoolAbi.getStakingPosition, })) - api.add(lpTokens[idx], userLpBalance) - })) - - const nitroPoolAddressesCalls = dummyArray.map(i => ({ target: wCamelotSpNFT, params: i })); - const nitroPoolAddresses = (await api.multiCall({ calls: nitroPoolAddressesCalls, abi: wCamelotSpNFTAbi.stakedNitroPool, })) - const nitroPoolUserLpBalanceCalls = nitroPoolAddresses - .filter((v) => v !== ADDRESSES.null) - .map((v, i) => ({ target: v, params: wCamelotSpNFT })); - const nitroPoolUserLpBalance = await api.multiCall({ calls: nitroPoolUserLpBalanceCalls, abi: camelotNitroPoolAbi.userInfo, }) - - nitroPoolUserLpBalance.map((v, i) => { - if (!v?.totalDepositAmount || v.totalDepositAmount === "0") return - const lpTokenIdx = nitroPoolAddresses.findIndex(addr => addr === nitroPoolUserLpBalanceCalls[i].target) - if (lpTokenIdx === -1) return; - api.add(lpTokens[lpTokenIdx], v.totalDepositAmount) - }) - - await unwrapLPsAuto({ api, excludePool2, onlyPool2, pool2Tokens }); -} - -module.exports = { - getUserCraftsmanV2Balances, - getUserCamelotMasterBalances, -} \ No newline at end of file diff --git a/projects/single/index.js b/projects/single/index.js deleted file mode 100644 index 22092a9fac2..00000000000 --- a/projects/single/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") -const { getUserMasterChefBalances } = require("../helper/masterchef") -const { getUserCraftsmanV2Balances, getUserCamelotMasterBalances } = require("./helpers") -const vvsPoolInfoABI = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accVVSPerShare)' -const spookyMasterChefV2PoolInfoABI = 'function lpToken(uint256) view returns (address)' -const { getConfig } = require('../helper/cache') - -const BASE_API_URL = 'https://api.singlefinance.io' - -const constants = { - 'cronos': { - chainId: 25, - single: '0x0804702a4e749d39a35fde73d1df0b1f1d6b8347' - }, - 'fantom': { - chainId: 250, - single: '0x8cc97b50fe87f31770bcdcd6bc8603bc1558380b' - }, - 'arbitrum': { - chainId: 42161, - single: '0x55853edc67aa68ec2e3903ac00f2bc5bf2ca8db0' - } -} - -const getWMasterChefBalances = ({ masterChef: masterChefAddress, wMasterChef, name, ...rest }, args) => { - const commonParams = { masterChefAddress, userAddres: wMasterChef } - if (name === "vvsMultiYield") { - return getUserCraftsmanV2Balances({ ...commonParams, poolInfoABI: vvsPoolInfoABI, craftsmanV1: rest.craftsmanV1, ...args }) - } - if (name === "spookyMultiYield" || name === "sushi") { - return getUserMasterChefBalances({ ...commonParams, poolInfoABI: spookyMasterChefV2PoolInfoABI, getLPAddress: a => a, ...args, chain: args.api.chain, block: args.api.block, balances: args.api.getBalances() }) - } - if (name === "camelot") { - return getUserCamelotMasterBalances({ ...commonParams, ...args }) - } - return getUserMasterChefBalances({ ...commonParams, poolInfoABI: vvsPoolInfoABI, ...args, chain: args.api.chain, block: args.api.block, balances: args.api.getBalances() }) -} - -const getHelpers = (chain) => { - - const SINGLE_TOKEN = constants[chain].single; - - const _getConfig = () => getConfig('single/contracts/'+chain, `${BASE_API_URL}/api/protocol/contracts?chainid=${constants[chain].chainId}`) - - async function staking(api) { - - const { pools, } = await _getConfig() - const tokensAndOwners = pools.filter(pool => !pool.isLP).map(pool => [pool.tokenContract, pool.address]) - - return sumTokens2({ tokensAndOwners, api }) - } - - async function tvl(api) { - const { wmasterchefs, vaults, } = await _getConfig() - for (const wMasterChef of wmasterchefs) { - await getWMasterChefBalances(wMasterChef, { api, excludePool2: true, pool2Tokens: [SINGLE_TOKEN] }) - } - - const tokensAndOwners = vaults.map(({ token, address }) => [token, address]) - await sumTokens2({ api, tokensAndOwners, }) // Add lending pool tokens to balances - } - - async function pool2(api) { - const { wmasterchefs, pools } = await _getConfig() - const tokensAndOwners = pools.filter(pool => pool.isLP).map(pool => [pool.tokenContract, pool.address]) - await sumTokens2({ api, tokensAndOwners, resolveLP: true }) // Add staked lp tokens to balances - - for (const wMasterChef of wmasterchefs) { - await getWMasterChefBalances(wMasterChef, { api, onlyPool2: true, pool2Tokens: [SINGLE_TOKEN] }) - } - } - - return { - tvl, - pool2, - staking - } -} - -module.exports = { - start: '2022-01-26', - misrepresentedTokens: true, - cronos: getHelpers('cronos'), - fantom: getHelpers('fantom'), - arbitrum: getHelpers('arbitrum'), -} - - -/* async function cronosTvl(api) { - const { data } = await getConfig('single/vault/cronos', 'https://api.singlefinance.io/api/vaults?chainid=25') - const tokensAndOwners = data.map(({ token, address }) => [token.id, address]) - await api.sumTokens({ tokensAndOwners}) - const { data: strategies } = await getConfig('single/strategy/cronos','https://api.singlefinance.io/api/strategies?chainid=25') - const tether = strategies.reduce((a, i)=> a+i.tvl/1e18, 0) - api.addUSDValue(tether) -} - */ \ No newline at end of file diff --git a/projects/singularfarm/avaxAbi.json b/projects/singularfarm/avaxAbi.json deleted file mode 100644 index 2d3dece33df..00000000000 --- a/projects/singularfarm/avaxAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accSingPerShare, uint16 depositFeeBP, uint256 totalcap, bool isStrat, uint256 stratId, uint256 stratFee, uint256 earned, uint256 accEarnPerShare)" -} \ No newline at end of file diff --git a/projects/singularfarm/bscAbi.json b/projects/singularfarm/bscAbi.json deleted file mode 100644 index d30ec7e699e..00000000000 --- a/projects/singularfarm/bscAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accSingPerShare, uint16 depositFeeBP, uint256 totalcap, bool isStrat, uint256 stratId, uint256 earned, uint256 earnfee, uint256 accEarnPerShare)" -} \ No newline at end of file diff --git a/projects/singularfarm/ftmAbi.json b/projects/singularfarm/ftmAbi.json deleted file mode 100644 index 3853026dbc1..00000000000 --- a/projects/singularfarm/ftmAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accSingPerShare, uint16 depositFeeBP, uint256 totalcap, bool isStrat, uint256 masterId, uint256 stratId, uint256 earned, uint256 earnfee, uint256 accEarnPerShare)" -} \ No newline at end of file diff --git a/projects/singularfarm/index.js b/projects/singularfarm/index.js deleted file mode 100644 index f7e6fdf5c2f..00000000000 --- a/projects/singularfarm/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const abiGeneral = require("../helper/abis/masterchef.json"); - -const SINGTOKEN = { - avax: "0xF9A075C9647e91410bF6C402bDF166e1540f67F0", - bsc: "0x23894C0ce2d79B79Ea33A4D02e67ae843Ef6e563", - polygon: "0xCB898b0eFb084Df14dd8E018dA37B4d0f06aB26D", - fantom: "0x53D831e1db0947c74e8a52618f662209ec5dE0cE", -}; - -const masterChef = { - avax: "0xF2599B0c7cA1e3c050209f3619F09b6daE002857", - bsc: "0x31B05a72037E91B86393a0f935fE7094141ba0a7", - polygon: "0x9762Fe3ef5502dF432de41E7765b0ccC90E02e92", - fantom: "0x9ED04B13AB6cae27ee397ee16452AdC15d9d561E", -}; -const abi = { - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accSingPerShare, uint16 depositFeeBP, uint256 totalcap, bool isStrat, uint256 stratId, uint256 stratFee, uint256 earned, uint256 accEarnPerShare)" -} - -async function tvl(api) { - const poolInfo = await api.fetchList({ lengthAbi: abiGeneral.poolLength, itemAbi: abi.poolInfo, target: masterChef[api.chain], }); - poolInfo.forEach((pool) => api.add(pool.lpToken, pool.totalcap)); - await sumTokens2({ api, resolveLP: true, }) - api.removeTokenBalance(SINGTOKEN[api.chain]); -} - -module.exports = { - methodology: - "Only staked LP is counted as TVL. Excluded in TVL : Locked SING in the bank, meltingpot, value of BNB & xJOE which aren't on CoinGecko yet.", - avax: { tvl, }, - bsc: { tvl, }, - polygon: { tvl, }, - fantom: { tvl, }, -}; diff --git a/projects/singularfarm/polyAbi.json b/projects/singularfarm/polyAbi.json deleted file mode 100644 index 2d3dece33df..00000000000 --- a/projects/singularfarm/polyAbi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accSingPerShare, uint16 depositFeeBP, uint256 totalcap, bool isStrat, uint256 stratId, uint256 stratFee, uint256 earned, uint256 accEarnPerShare)" -} \ No newline at end of file diff --git a/projects/singularityDAO/abi.json b/projects/singularityDAO/abi.json deleted file mode 100644 index 5fbd9e95a0b..00000000000 --- a/projects/singularityDAO/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getCurrentTokens": "address[]:getCurrentTokens", - "poolLength": "uint256:poolLength", - "lpToken": "function lpToken(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/singularityDAO/index.js b/projects/singularityDAO/index.js deleted file mode 100644 index ab355cf205f..00000000000 --- a/projects/singularityDAO/index.js +++ /dev/null @@ -1,131 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const { cachedGraphQuery } = require('../helper/cache') - -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const AGIX_TOKEN = "0x5B7533812759B45C2B44C19e320ba2cD2681b542"; -const NUNET_TOKEN = "0xF0d33BeDa4d734C72684b5f9abBEbf715D0a7935"; -const SDAO_TOKEN = "0x993864E43Caa7F7F12953AD6fEb1d1Ca635B875F"; -const SDAO_TOKEN_BNB = "0x90Ed8F1dc86388f14b64ba8fb4bbd23099f18240"; - -const DYNASETSBNB = "0x5569B42513203f49a761Cc9720D4Bb9B6b9E5AB8"; - -const DYNASET_FORGES = [ - "0xe125044733366071793Afd1f9CB41521078Dd029", - "0x5d94F225caBd9010c8206c1036c6352F66C06E57", - "0xa5a94Da27E2533ceD5c68D6DFAbDB5FB4269Dd97", -]; - -const LP_TOKEN_SDAO_ETH = "0x424485f89ea52839fdb30640eb7dd7e0078e12fb"; -const LP_TOKEN_SDAO_USDT = "0x3a925503970d40d36d2329e3846e09fcfc9b6acb"; - -const getDynasetQuery = "{ dynaset { address } }"; -const graphEndpoint = - "https://singularitydao.ai/api/dynaset-server/api/graphql"; - - -async function tvl(api) { - const blacklistedTokens = [ - SDAO_TOKEN, - LP_TOKEN_SDAO_ETH, - LP_TOKEN_SDAO_USDT, - AGIX_TOKEN, - NUNET_TOKEN, - ]; - - const response = await cachedGraphQuery('singularity-dao', graphEndpoint, getDynasetQuery); - const dynasets = response.dynaset.map((d) => d.address).flat(); - const tokens = await api.multiCall({ calls: dynasets, abi: abi.getCurrentTokens, permitFailure: true, }); - const ownerTokens = []; - tokens.map((t, index) => t && ownerTokens.push([t, dynasets[index]])) - - const tokenInfos = await api.fetchList({ lengthAbi: abis.totalForges, itemAbi: abis.forgeInfo, targets: DYNASET_FORGES, groupedByInput: true }) - tokenInfos.forEach((info, i) => ownerTokens.push([info.map(i => i.contributionToken), DYNASET_FORGES[i]])) - - - return sumTokens2({ ownerTokens, api, blacklistedTokens }); -} - -async function pool2(api) { - const tokensAndOwners = [ - [LP_TOKEN_SDAO_ETH, "0xfB85B9Ec50560e302Ab106F1E2857d95132120D0"], // Unbonded - [LP_TOKEN_SDAO_USDT, "0xfB85B9Ec50560e302Ab106F1E2857d95132120D0"], // Bonded 6M - ]; - return sumTokens2({ tokensAndOwners, api, resolveLP: true }); -} - -async function staking(api) { - const tokensAndOwners = [ - [SDAO_TOKEN, "0xfB85B9Ec50560e302Ab106F1E2857d95132120D0"], // Unbonded - [SDAO_TOKEN, "0x74641ed232dbB8CBD9847484dD020d44453F0368"], // Bonded 6M - [SDAO_TOKEN, "0xF5738B4aD2f8302b926676692a0C09603d930b42"], // Bonded 12M - [NUNET_TOKEN, "0x502B965d3D51d4FD531E6A1c1fA9bFA50337bA55"], - [NUNET_TOKEN, "0xfB85B9Ec50560e302Ab106F1E2857d95132120D0"], - [NUNET_TOKEN, "0xb267deaace0b8c5fcb2bb04801a364e7af7da3f4"], - [AGIX_TOKEN, "0xfB85B9Ec50560e302Ab106F1E2857d95132120D0"], - [AGIX_TOKEN, "0xb267deaace0b8c5fcb2bb04801a364e7af7da3f4"], - ]; - return sumTokens2({ tokensAndOwners, api }); -} - -async function tvlBNB(api) { - const tokensAndOwners = [ - [ADDRESSES.bsc.WBNB, DYNASETSBNB], // BNB - [ADDRESSES.bsc.BUSD, DYNASETSBNB], // BUSD - ["0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", DYNASETSBNB], // BDOT - [ADDRESSES.bsc.ETH, DYNASETSBNB], // BETH - ["0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE", DYNASETSBNB], // BXRP - [ADDRESSES.bsc.BTCB, DYNASETSBNB], // WBTC - ["0x1CE0c2827e2eF14D5C4f29a091d735A204794041", DYNASETSBNB], // BAVAX - ["0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", DYNASETSBNB], // BADA - ["0xCC42724C6683B7E57334c4E856f4c9965ED682bD", DYNASETSBNB], // BMATIC - ["0xfA54fF1a158B5189Ebba6ae130CEd6bbd3aEA76e", DYNASETSBNB], // BSOL - ]; - return sumTokens2({ tokensAndOwners, api }); -} - -async function stakingBNB(api) { - const tokensAndOwners = [ - [SDAO_TOKEN_BNB, "0x79292c62f593e08d9b850b790b07e7a0903fd007"], // Unbonded - [SDAO_TOKEN_BNB, "0x17de46760F4c18C26eEc36117C23793299F564A8"], // Bonded - ]; - return sumTokens2({ tokensAndOwners, api }); -} - -async function pool2BNB(api) { - const tokensAndOwners = [ - [ - "0x6c805d2077025eaaa42fae7f764e61df42aadb14", - "0xba1933bc47e6ad050a4e4485f6f4b16b9ccdb806", - ], - [ - "0x43b95976cf0929478bc13332c9cd2d63bf060976", - "0x79292c62f593e08d9b850b790b07e7a0903fd007", - ], - [ - "0x3d12e4381901a6b94438758b90881cb03f10b01e", - "0x79292c62f593e08d9b850b790b07e7a0903fd007", - ], - ]; - return sumTokens2({ tokensAndOwners, api, resolveLP: true }); -} - -module.exports = { - ethereum: { - tvl, - staking, - pool2, - }, - bsc: { - tvl: tvlBNB, - staking: stakingBNB, - pool2: pool2BNB, - }, -}; - -const abis = { - totalForges: "uint256:totalForges", - forgeInfo: - "function forgeInfo(uint256) view returns (bool isEth, address contributionToken, uint256 dynasetLp, uint256 totalContribution, uint256 minContribution, uint256 maxContribution, uint256 maxCap, uint256 contributionPeriod, bool withdrawEnabled, bool depositEnabled, bool forging, uint256 nextForgeContributorIndex)", -}; diff --git a/projects/singularityFinance/index.js b/projects/singularityFinance/index.js deleted file mode 100644 index 422f033bce4..00000000000 --- a/projects/singularityFinance/index.js +++ /dev/null @@ -1,148 +0,0 @@ -const poolconfig = require('./staking.json'); - -const sfiToken = { - 1: "0x7636D8722Fdf7cd34232a915E48e96aA3eB386BF", - 56: "0x7636D8722Fdf7cd34232a915E48e96aA3eB386BF", - 8453: "0x7636D8722Fdf7cd34232a915E48e96aA3eB386BF" -}; - -const vaultRegistry = { - // 1: "", - // 56: "", - 8453: "0x414F0e07cd833cE73c9d59280699f910b48E1ECb", -}; - -const CHAIN_IDS = { - ethereum: 1, - bsc: 56, - base: 8453 -}; - -// calculates the tvl of the SFI dynavaults by calling totalAsset which is a representation of the vault tvl in in a reference asset -async function calculateDynaVaultTVL(api, chainId) { - if (vaultRegistry[chainId] == undefined) return; - - const dynaVaults = await api.call({ - abi: 'function allVaults() view returns (tuple(address vault, uint8 VaultType, bool active)[] memory)', - target: vaultRegistry[chainId] - }); - - const assets = await api.multiCall({ - abi: "function asset() view returns (address)", - calls: dynaVaults.map(vault => ({ - target: vault.vault, - })), - }); - - const totalAssets = await api.multiCall({ - abi: "function totalAssets() view returns (uint256)", - calls: dynaVaults.map(vault => ({ - target: vault.vault, - })), - }); - - assets.forEach((asset, i) => { - api.add(asset, totalAssets[i]); - }) -} - -// calculates the tvl of the SFI staking pools. Each pool takes a deposit token and has a rewardToken. -async function calculateStaking(api, chainId) { - const stakingPools = poolconfig.filter(pool => pool.chainId === chainId && pool.depositTokenAddress != sfiToken[chainId]); - - const stakingBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: stakingPools.map(pool => ({ - target: pool.depositTokenAddress, - params: [pool.stakingContractAddress], - })), - }); - - stakingBalances.forEach((balance, i) => { - api.add(stakingPools[i].depositTokenAddress, balance); - }) - - const rewardBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: stakingPools.map(pool => ({ - target: pool.rewardsTokenAddress, - params: [pool.rewardsContractAddress], - })), - }); - - rewardBalances.forEach((balance, i) => { - api.add(stakingPools[i].rewardsTokenAddress, balance); - }) -} - -async function calculateSFIStaking(api, chainId) { - const stakingPools = poolconfig.filter(pool => pool.chainId === chainId && pool.depositTokenAddress == sfiToken[chainId]); - - const stakingBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: stakingPools.map(pool => ({ - target: pool.depositTokenAddress, - params: [pool.stakingContractAddress], - })), - }); - - stakingBalances.forEach((balance, i) => { - api.add(stakingPools[i].depositTokenAddress, balance); - }) - - const rewardBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: stakingPools.map(pool => ({ - target: pool.rewardsTokenAddress, - params: [pool.rewardsContractAddress], - })), - }); - - rewardBalances.forEach((balance, i) => { - api.add(stakingPools[i].rewardsTokenAddress, balance); - }) -} - -// Calculate the tvl for each supported chain -async function tvlEthereum(api) { - await calculateDynaVaultTVL(api, CHAIN_IDS.ethereum); - await calculateStaking(api, CHAIN_IDS.ethereum); -} - -async function sfiStakedOnEthereum(api) { - await calculateSFIStaking(api, CHAIN_IDS.ethereum); -} - -async function tvlBsc(api) { - await calculateDynaVaultTVL(api, CHAIN_IDS.bsc); - await calculateStaking(api, CHAIN_IDS.bsc); -} - -async function sfiStakedOnBsc(api) { - await calculateSFIStaking(api, CHAIN_IDS.bsc); -} - -async function tvlBase(api) { - await calculateDynaVaultTVL(api, CHAIN_IDS.base); - await calculateStaking(api, CHAIN_IDS.base); -} - -async function sfiStakedOnBase(api) { - await calculateSFIStaking(api, CHAIN_IDS.base); -} - -module.exports = { - methodology: 'Counts the total value locked in DynaVaults (via totalAssets) and staking contracts (token balances).', - ethereum: { - tvl: tvlEthereum, - staking: sfiStakedOnEthereum - }, - bsc: { - tvl: tvlBsc, - staking: sfiStakedOnBsc - }, - base: { - tvl: tvlBase, - staking: sfiStakedOnBase - } -}; diff --git a/projects/singularityFinance/staking.json b/projects/singularityFinance/staking.json deleted file mode 100644 index a50e3078954..00000000000 --- a/projects/singularityFinance/staking.json +++ /dev/null @@ -1,114 +0,0 @@ -[ - { - "id": 1, - "chainId": 1, - "stakingContractAddress": "0x5aA690B8F84077b066EdF0Ac8425CDc4E190CE67", - "rewardsContractAddress": "0x97A29CAe634F85b25C8eE7aeB2dEc2583ba30fb1", - "depositTokenAddress": "0x7636D8722Fdf7cd34232a915E48e96aA3eB386BF", - "rewardsTokenAddress": "0x7636D8722Fdf7cd34232a915E48e96aA3eB386BF" - }, - { - "id": 2, - "chainId": 56, - "stakingContractAddress": "0x245ca821393e0818f14cfCe432e72894e67DbC90", - "rewardsContractAddress": "0x25Bb8CF5Ea1E6CaEcea013D5686ff168F595B1E8", - "depositTokenAddress": "0x7636D8722Fdf7cd34232a915E48e96aA3eB386BF", - "rewardsTokenAddress": "0x7636D8722Fdf7cd34232a915E48e96aA3eB386BF" - }, - { - "id": 3, - "chainId": 56, - "stakingContractAddress": "0x0BFF79939ed453Cbd828391Fdcc6EDc2351fe26E", - "rewardsContractAddress": "0x74E0E234cD38Ee09431eae823C1017229e015e94", - "depositTokenAddress": "0x90Ed8F1dc86388f14b64ba8fb4bbd23099f18240", - "rewardsTokenAddress": "0x90Ed8F1dc86388f14b64ba8fb4bbd23099f18240" - }, - { - "id": 4, - "chainId": 1, - "stakingContractAddress": "0x56eD897ffCceAA7A5e59C041380a566d66d6af32", - "rewardsContractAddress": "0xf72C709b7f1e4Df9bd4A73E5D4d5E825694816B2", - "depositTokenAddress": "0x993864E43Caa7F7F12953AD6fEb1d1Ca635B875F", - "rewardsTokenAddress": "0x993864E43Caa7F7F12953AD6fEb1d1Ca635B875F" - }, - { - "id": 5, - "chainId": 1, - "stakingContractAddress": "0xCB85b101C4822A4E3ABCa20e57f1DFf0E2673475", - "rewardsContractAddress": "0xA42716ec84013e5e442b527EaD498e396945316F", - "depositTokenAddress": "0xaea46A60368A7bD060eec7DF8CBa43b7EF41Ad85", - "rewardsTokenAddress": "0xaea46A60368A7bD060eec7DF8CBa43b7EF41Ad85" - }, - { - "id": 6, - "chainId": 1, - "stakingContractAddress": "0xa2dc6eC13da4Dadb3C151d0daF220E8071F4E9c5", - "rewardsContractAddress": "0x8e61C8FcA989f06E93f36d9CdA035105465C128A", - "depositTokenAddress": "0xa1f410f13B6007fCa76833ee7eb58478D47Bc5Ef", - "rewardsTokenAddress": "0xa1f410f13B6007fCa76833ee7eb58478D47Bc5Ef" - }, - { - "id": 7, - "chainId": 56, - "stakingContractAddress": "0x863d1b3f532D759f43EBC50EF26e6D4E90Eb5218", - "rewardsContractAddress": "0x333bAd5b87AD68bBa37cDfa29EC8C1e7e30EfB66", - "depositTokenAddress": "0x602B6C6ccE5F95c00603bd07D8fA7EbAF3747D44", - "rewardsTokenAddress": "0x602B6C6ccE5F95c00603bd07D8fA7EbAF3747D44" - }, - { - "id": 8, - "chainId": 1, - "stakingContractAddress": "0xa013139Fea9D0cdF28990CAf3fe31B830e303EcA", - "rewardsContractAddress": "0xBC56982B907116F1214d9D7E926C8D926168725f", - "depositTokenAddress": "0xF0d33BeDa4d734C72684b5f9abBEbf715D0a7935", - "rewardsTokenAddress": "0xF0d33BeDa4d734C72684b5f9abBEbf715D0a7935" - }, - { - "id": 9, - "chainId": 1, - "stakingContractAddress": "0x613765d44A106b5b6ba1fB98b5A1132A9E98929C", - "rewardsContractAddress": "0x344794f4A713232C137AB8E289fC5fa3c287f374", - "depositTokenAddress": "0x623cD3a3EdF080057892aaF8D773Bbb7A5C9b6e9", - "rewardsTokenAddress": "0x623cD3a3EdF080057892aaF8D773Bbb7A5C9b6e9" - }, - { - "id": 10, - "chainId": 8453, - "stakingContractAddress": "0xa2bf1a2434B65c34C2D47fF09022e2289eCCecDe", - "rewardsContractAddress": "0x642B3993F5b3e0aef36c88675Ed3Be559F821965", - "depositTokenAddress": "0x623cD3a3EdF080057892aaF8D773Bbb7A5C9b6e9", - "rewardsTokenAddress": "0x623cD3a3EdF080057892aaF8D773Bbb7A5C9b6e9" - }, - { - "id": 11, - "chainId": 1, - "stakingContractAddress": "0xFD865DEa0ce9836317425d81d05Ec9B60f398Eec", - "rewardsContractAddress": "0xB808583001AaA8d2870C629F42aAe1D522D45aAB", - "depositTokenAddress": "0x73fBD93bFDa83B111DdC092aa3a4ca77fD30d380", - "rewardsTokenAddress": "0x73fBD93bFDa83B111DdC092aa3a4ca77fD30d380" - }, - { - "id": 12, - "chainId": 8453, - "stakingContractAddress": "0x6821813C501ca96A4f6543ed9F994C4423987A82", - "rewardsContractAddress": "0x234141dEBCA7b8C2E0024Df31cc223610110D31a", - "depositTokenAddress": "0x73fBD93bFDa83B111DdC092aa3a4ca77fD30d380", - "rewardsTokenAddress": "0x73fBD93bFDa83B111DdC092aa3a4ca77fD30d380" - }, - { - "id": 13, - "chainId": 8453, - "stakingContractAddress": "0x832358cCBcd27CC5AfdaB10e731e32bb77546371", - "rewardsContractAddress": "0x8c1eBDaF55afCd7C53893908277Bb9C8880aaF7f", - "depositTokenAddress": "0x6967F0974d76d34e140caE27efeA32CDf546b58E", - "rewardsTokenAddress": "0x6967F0974d76d34e140caE27efeA32CDf546b58E" - }, - { - "id": 14, - "chainId": 56, - "stakingContractAddress": "0xD541AebDA7AB1bf53f6f309552459df0DBbD36eA", - "rewardsContractAddress": "0xf89f787fAb449f90E798691234F36dBD7551DE67", - "depositTokenAddress": "0x53Ffa52f358CCdB59c2a248D5D17AB91a32Ab44d", - "rewardsTokenAddress": "0x53Ffa52f358CCdB59c2a248D5D17AB91a32Ab44d" - } -] diff --git a/projects/singularv/index.js b/projects/singularv/index.js deleted file mode 100644 index 8a051e23b2d..00000000000 --- a/projects/singularv/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by singularV.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x46057881E0B9d190920FB823F840B837f65745d5', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/singularx/index.js b/projects/singularx/index.js deleted file mode 100644 index fe58897ede0..00000000000 --- a/projects/singularx/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const ethereumContracts = ["0x9a2d163ab40f88c625fd475e807bbc3556566f80"]; - -const ethereumTokens = [ - ADDRESSES.null, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.MATIC, - '0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1', - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.AAVE, - ADDRESSES.ethereum.MKR, - -]; - -module.exports = { - start: '2023-06-03', - ethereum: { tvl: sumTokensExport({ owners: ethereumContracts, tokens: ethereumTokens, }) }, -}; \ No newline at end of file diff --git a/projects/sio2/index.js b/projects/sio2/index.js deleted file mode 100644 index 3d228a24222..00000000000 --- a/projects/sio2/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { aaveExports, methodology, } = require("../helper/aave"); - -module.exports = { - methodology, - astar: aaveExports("astar", '0x9D8bB85b1c728f69672923dD4A0209EC8b75EFda', undefined, undefined, { - abis: { - getAllATokens: "function getAllSTokens() view returns (tuple(string symbol, address tokenAddress)[])" - } - }) -} \ No newline at end of file diff --git a/projects/sir-trading/index.js b/projects/sir-trading/index.js deleted file mode 100644 index 5d80c2fb912..00000000000 --- a/projects/sir-trading/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const VAULT_ADDRESS = '0x7Dad75dD36dE234C937C105e652B6E50d68b0309'; -const abi = { - "paramsById": "function paramsById(uint48 vaultId) view returns ((address debtToken, address collateralToken, int8 leverageTier))" -} - -async function tvl(api) { - const res = await api.fetchList({ lengthAbi: 'numberOfVaults', itemAbi: abi.paramsById, target: VAULT_ADDRESS }) - const tokens = res.map(v => v.collateralToken) - return api.sumTokens({ tokens, owner: VAULT_ADDRESS }) -} - -module.exports = { - methodology: "Token balance in the vault contract", - ethereum: { tvl } -}; diff --git a/projects/siren/index.js b/projects/siren/index.js deleted file mode 100644 index 7467aa9412c..00000000000 --- a/projects/siren/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { getLogs, getAddress } = require('../helper/cache/getLogs'); - -const config = { - arbitrum: { hedgePools: ["0x07835De4f96164758fE68283a5466E066c1885DC"] }, - polygon: { fromBlock: 17842705, factory: '0x0cdaa64b47474e02cdfbd811ec9fd2d265cd3a0a', vault: '0xc40a31bd9fed1569ce647bb7de7ff93facca36e9', }, - ethereum: { fromBlock: 11272343, factory: '0xb8623477ea6f39b63598ceac4559728dca81af63', vault: '0x7b63ecbc78402553a2d7f01ea3d10079c3aaa469', }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, vault, hedgePools } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokensAndOwners = [] - if (hedgePools) { - const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: hedgePools }) - tokensAndOwners.push(...tokens.map((v, i) => [v, hedgePools[i]])) - } - - if (factory) { - const logs = await getLogs({ - api, - target: factory, - topics: ['0xa128ec36b78fa37f9f3e10bf2451c665a4e9fb1339f9f0e6fef45b343e73dcb1'], - fromBlock, - }) - const pools = logs.map(i => getAddress(i.data)) - const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: pools }) - const toa = tokens.map((v, i) => [[v, pools[i]], [v, vault]]).flat() - tokensAndOwners.push(...toa) - } - - return api.sumTokens({ tokensAndOwners }) - } - } -}); diff --git a/projects/sirio-fi/index.js b/projects/sirio-fi/index.js deleted file mode 100644 index 32a27a3c776..00000000000 --- a/projects/sirio-fi/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs") - -const markets = [ - '0x0e2c1659B6A120CFE582717b51444389878676Ac', // HBAR_MARKET - '0xA810340Ca70e24aF6d6C3e59A3d2b88E6d5f1F27', // USDC_MARKET - '0x086eDAe2722FE6F355793adF8F19fAeE93aca7d6', // SAUCE_MARKET - '0x7D0f4cD67301afAdbbBF3512F31aF9247a37e7a7', // XSAUCE_MARKET - '0xdd9FA7C0080062df71d729fBA6EEf074C5F03A45', // HBARX_MARKET - '0xb9a76104658AbBB998C8b146dF9c523b3b3D271b', // HSUITE_MARKET - '0x23E49b26D82674eea26E49f447D8a00dae7Ff01B', // PACK_MARKET -] - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: markets }) - tokens[0] = nullAddress // replace wrapped token with gas token - return sumTokens2({ api, tokensAndOwners2: [tokens, markets] }) -} - -async function borrowed(api) { - const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: markets }) - const bals = await api.multiCall({ abi: 'uint256:totalBorrows', calls: markets }) - api.add(tokens, bals) - return sumTokens2({ api, }) -} - -module.exports = { - methodology: "TVL on Sirio Finance", - timetravel: false, - hedera: { tvl, borrowed, } -} - -module.exports.deadFrom = '2025-02-01' -module.exports.hedera.borrowed= () => ({}) -// module.exports.hallmarks = [ -// ['2025-02-01', "Protocol Exploit"], -// ] diff --git a/projects/sirius-finance/constants.js b/projects/sirius-finance/constants.js deleted file mode 100644 index 63486dab000..00000000000 --- a/projects/sirius-finance/constants.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -/*** Astar Addresses ***/ -const usdPoolAddress = "0x417E9d065ee22DFB7CC6C63C403600E27627F333"; -const oUSDPoolAddress = "0xD18AbE9bcedeb5A9a65439e604b0BE8db0bdB176" -const BAIPoolAddress = "0x290c7577D209c2d8DB06F377af31318cE31938fB" -const StarlayPoolAddress = "0x0fB8C4eB33A30eBb01588e3110968430E3E69D58" -const JPYCPoolAddress = "0xEd6e10Fc171f2768D9c056260b18D814035F8266" -const WBTCPoolAddress = "0xff390905269Ac30eA640dBaBdF5960D7B860f2CF" -const WETHPoolAddress = "0x46F63Ec42eFcf972FCeF2330cC22e6ED1fCEB950" -const WBNBPoolAddress = "0xA82222d8b826E6a741f6cb4bFC6002c34D32fF67" -const nASTRPoolAddress = "0xEEa640c27620D7C448AD655B6e3FB94853AC01e3" -const AvaultPoolAddress = "0xD8Bc543273B0E19eed34a295614963720c89f9e4" - - -const SRS = "0x9448610696659de8F72e1831d392214aE1ca4838" -const VotingEscrow = "0xc9D383f1e6E5270D77ad8e198729e237b60b6397" - -const DAI = ADDRESSES.astar.DAI -const USDC = ADDRESSES.moonbeam.USDC -const USDT = ADDRESSES.astar.USDT -const BUSD = ADDRESSES.oasis.ceUSDT -const oUSD = ADDRESSES.astar.oUSD; -const BAI = ADDRESSES.astar.BAI; -const LDAI = ADDRESSES.astar.lDAI -const LUSDC = ADDRESSES.astar.lUSDC -const LUSDT = ADDRESSES.astar.lUSDT -const LBUSD = ADDRESSES.astar.lBUSD -const JPYC = ADDRESSES.astar.JPYC -const WBTC = ADDRESSES.astar.WBTC -const WETH = ADDRESSES.moonbeam.USDT -const WBNB = ADDRESSES.milkomeda.BNB -const nASTR = ADDRESSES.astar.nASTR -const wASTR = '0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720' -const aBaiUsdc = ADDRESSES.astar.aBaiUsdc -const aDaiUsdc = ADDRESSES.astar.aDaiUsdc -const aBusdUsdc = ADDRESSES.astar.aBusdUsdc -const aUsdtUsdc = ADDRESSES.astar.aUsdtUsdc - - -module.exports = { - Chain: 'astar', - CoinGeckoID: 'sirius-finance', - Pools: { - [usdPoolAddress]: [DAI, USDC, USDT, BUSD], - [oUSDPoolAddress]: [oUSD], - [BAIPoolAddress]: [BAI], - [StarlayPoolAddress]: [LDAI, LUSDC, LUSDT, LBUSD], - [JPYCPoolAddress]: [JPYC], - [WBNBPoolAddress]: [WBNB], - [WBTCPoolAddress]: [WBTC], - [WETHPoolAddress]: [WETH], - [nASTRPoolAddress]: [nASTR, wASTR], - [AvaultPoolAddress]: [aBaiUsdc, aDaiUsdc, aBusdUsdc, aUsdtUsdc], - }, - SRS, nASTR, - VotingEscrow, - AvaultPool: [aBaiUsdc, aDaiUsdc, aBusdUsdc, aUsdtUsdc] -} diff --git a/projects/sirius-finance/index.js b/projects/sirius-finance/index.js deleted file mode 100644 index 26479ea7aec..00000000000 --- a/projects/sirius-finance/index.js +++ /dev/null @@ -1,33 +0,0 @@ -/*================================================== - Modules - ==================================================*/ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require("../helper/staking"); -const { Chain, CoinGeckoID, Pools, SRS, VotingEscrow } = require("./constants"); - -/*================================================== - TVL - ==================================================*/ -let o; -let ts; -async function tvl(timestamp, _block, { astar: block }) { - const toa = [] - - for ([o, ts] of Object.entries(Pools)) - ts.forEach(t => toa.push([t, o])) - return sumTokens2({ chain: Chain, block, tokensAndOwners: toa, }) -} - -/*================================================== - Exports - ==================================================*/ - -module.exports = { - misrepresentedTokens: true, - methodology: "All locked tokens includes stable and crypto assets in Sirius's pools.", - astar: { - start: '2022-04-16', // 2022/04/16 14:00 UTC - tvl, // tvl adapter - staking: staking(VotingEscrow, SRS, Chain, CoinGeckoID, 18), - }, -}; diff --git a/projects/sirius-finance/lib.js b/projects/sirius-finance/lib.js deleted file mode 100644 index 1f9c94e553e..00000000000 --- a/projects/sirius-finance/lib.js +++ /dev/null @@ -1,11 +0,0 @@ -const { nASTR, AvaultPool } = require("./constants"); - -module.exports = { - remap: (balances) => { - balances['astar'] = balances['astar'] + balances[nASTR] / 1e18; // Map nASTR to ASTR since nASTR is 1:1 pegged. - // remap - AvaultPool.forEach(t => balances['dai'] += +balances[t] / 1e18); - [nASTR, ...AvaultPool].forEach(t => delete balances[t]); - return balances; - } -} \ No newline at end of file diff --git a/projects/sithswap/abi.js b/projects/sithswap/abi.js deleted file mode 100644 index a15ec7105d1..00000000000 --- a/projects/sithswap/abi.js +++ /dev/null @@ -1,115 +0,0 @@ -const fabis = [{ - "name": "allPairs", - "type": "function", - "inputs": [ - { - "name": "pid", - "type": "felt" - } - ], - "outputs": [ - { - "name": "res", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" -}, -{ - "name": "allPairsLength", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "res", - "type": "felt" - } - ], - "stateMutability": "view" -} -] - -const pabis = [ - { - "name": "getToken0", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "res", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" - }, - { - "name": "getToken1", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "res", - "type": "felt" - } - ], - "stateMutability": "view", - "customType": "address" - }, - { - "inputs": [], - "name": "getReserves", - "outputs": [ - { - "name": "reserve0", - "type": "felt" - }, - { - "name": "reserve1", - "type": "felt" - }, - { - "name": "block_timestamp", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getReserve1", - "outputs": [ - { - "name": "res", - "type": "Uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getReserve0", - "outputs": [ - { - "name": "res", - "type": "Uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - -] - - -const factory = {} -const pair = {} -fabis.forEach(i => factory[i.name] = i) -pabis.forEach(i => pair[i.name] = i) - -module.exports = { - factory, pair, fabis, pabis, -} \ No newline at end of file diff --git a/projects/sithswap/api.js b/projects/sithswap/api.js deleted file mode 100644 index 4b39b704fad..00000000000 --- a/projects/sithswap/api.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// https://www.starknetjs.com/docs/API/contract - -const { call, multiCall, } = require('../helper/chain/starknet') -const abi = require('./abi') -const { transformDexBalances } = require('../helper/portedTokens') -const { getParamCalls } = require('../helper/utils') -async function tvl() { - const factory = '0xeaf728d8e09bfbe5f11881f848ca647ba41593502347ed2ec5881e46b57a32' - let pairLength = await call({ target: factory, abi: abi.factory.allPairsLength}) - let pairs = await multiCall({ abi: abi.factory.allPairs, target: factory, calls: getParamCalls(Number(pairLength) + 1)}) - pairs = pairs.filter(i => i !== '0x0000000000000000000000000000000000000000000000000000000000000000') - const calls = pairs - const token0s = await multiCall({ abi: abi.pair.getToken0, calls }) - const token1s = await multiCall({ abi: abi.pair.getToken1, calls }) - const reserves0 = await multiCall({ abi: abi.pair.getReserve0, calls }) - const reserves1 = await multiCall({ abi: abi.pair.getReserve1, calls }) - - const data = [] - reserves0.forEach((reserve0, i) => { - data.push({ - token0: token0s[i], - token1: token1s[i], - token0Bal: +reserve0, - token1Bal: +reserves1[i], - }) - }) - - return transformDexBalances({chain:'starknet', data}) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - starknet: { - tvl, - } -} \ No newline at end of file diff --git a/projects/sithswap/index.js b/projects/sithswap/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/sithswap/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/size-credit/index.js b/projects/size-credit/index.js deleted file mode 100644 index e2f29e7fc5e..00000000000 --- a/projects/size-credit/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const config = { - base: '0x330Dc31dB45672c1F565cf3EC91F9a01f8f3DF0b', - ethereum: '0x3A9C05c3Da48E6E26f39928653258D7D4Eb594C1' -} - -const abis = { - SizeFactory: { - getMarkets: 'function getMarkets() view returns (address[])', - }, - Size: { - data: 'function data() view returns (uint256 nextDebtPositionId,uint256 nextCreditPositionId,address underlyingCollateralToken,address underlyingBorrowToken,address collateralToken,address borrowAToken,address debtToken,address variablePool)', - }, - Pool: { - getReserveData: 'function getReserveData(address asset) view returns (uint256 configuration,uint128 liquidityIndex,uint128 currentLiquidityRate,uint128 variableBorrowIndex,uint128 currentVariableBorrowRate,uint128 currentStableBorrowRate,uint40 lastUpdateTimestamp,uint16 id,address aTokenAddress,address stableDebtTokenAddress,address variableDebtTokenAddress,address interestRateStrategyAddress,uint128 accruedToTreasury,uint128 unbacked,uint128 isolationModeTotalDebt)' - } -} - -async function tvl(api) { - const markets = await api.call({ abi: abis.SizeFactory.getMarkets, target: config[api.chain] }) - const datas = await api.multiCall({ abi: abis.Size.data, calls: markets }) - - const borrowATokens = datas.map(data => data.borrowAToken) - const variablePools = datas.map(data => data.variablePool) - const underlyingBorrowTokens = datas.map(data => data.underlyingBorrowToken) - const underlyingCollateralTokens = datas.map(data => data.underlyingCollateralToken) - - const getReserveDatas = await api.multiCall({ abi: abis.Pool.getReserveData, calls: variablePools.map((variablePool, i) => ({ target: variablePool, params: underlyingBorrowTokens[i] })) }) - - const aTokens = getReserveDatas.map(data => data.aTokenAddress) - - return api.sumTokens({ - owners: [...borrowATokens, ...markets], - tokens: [...aTokens, ...underlyingCollateralTokens] - }) -} - -async function borrowed(api) { - const markets = await api.call({ abi: abis.SizeFactory.getMarkets, target: config[api.chain] }) - const datas = await api.multiCall({ abi: abis.Size.data, calls: markets }) - - const debtTokens = datas.map(data => data.debtToken) - - const underlyingBorrowTokens = datas.map(data => data.underlyingBorrowToken) - const totalDebts = await api.multiCall({ abi: 'erc20:totalSupply', calls: debtTokens }); - - return api.add(underlyingBorrowTokens, totalDebts) -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl, borrowed, - } -}) diff --git a/projects/size/index.js b/projects/size/index.js deleted file mode 100644 index ef646be58f8..00000000000 --- a/projects/size/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping"); - -async function tvl(api) { - const orderBook = '0x044d9b2c4d8a696fe83fbb723f6006bd2d7a0e7e' - const aaveModule = await api.call({ abi: 'address:aaveModule', target: orderBook }) - const aaveToken = await api.call({ abi: 'address:aToken', target: aaveModule }) - return api.sumTokens({ - tokensAndOwners: [ - [aaveToken, aaveModule], - [nullAddress, orderBook], - ] - }) -} - -module.exports = { - methodology: "Counts assets ETH collateral deposited + USDC deposited and available to borrow", - base: { - tvl - } -} diff --git a/projects/skale/index.js b/projects/skale/index.js deleted file mode 100644 index d6895477625..00000000000 --- a/projects/skale/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const depositBoxETH = '0x49F583d263e4Ef938b9E09772D3394c71605Df94'; -const depositBoxERC20 = '0x8fB1A35bB6fB9c47Fb5065BE5062cB8dC1687669'; - -module.exports = { - start: '2021-07-19', // Mon July 19 06:38:20 PM UTC 2021 - ethereum: { - tvl, - } -} - -async function tvl(api) { - const ownerTokens = [[[ADDRESSES.null], depositBoxETH]] - const chains = ["elated-tan-skat"] - let tokens = [] - for (const chain of chains) { - const tokenCount = await api.call({ abi: abi.getSchainToAllERC20Length, target: depositBoxERC20, params: chain }) - - for (let i = 0; i < tokenCount; i += 10) { - let remainingTokens = tokenCount - i; - const res = await api.call({ - abi: abi.getSchainToAllERC20, - target: depositBoxERC20, - params: [chain, i, remainingTokens >= 10 ? i + 10 : i + remainingTokens], - }); - - tokens.push(...res); - } - } - ownerTokens.push([tokens, depositBoxERC20]) - return sumTokens2({ api, ownerTokens }) -} - -const abi = { - "getSchainToAllERC20Length": "function getSchainToAllERC20Length(string schainName) view returns (uint256)", - "getSchainToAllERC20": "function getSchainToAllERC20(string schainName, uint256 from, uint256 to) view returns (address[])" -} \ No newline at end of file diff --git a/projects/skate-amm/index.js b/projects/skate-amm/index.js deleted file mode 100644 index a37a23c65a4..00000000000 --- a/projects/skate-amm/index.js +++ /dev/null @@ -1,95 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/solana') -const { getObjects } = require("../helper/chain/sui"); - -const evm_config = { - ethereum: { kernelEventEmitter: '0x6984DC28Bf473160805AE0fd580bCcaB77f4bD7C', fromBlock: 22330649 }, - bsc: { kernelEventEmitter: '0x6984DC28Bf473160805AE0fd580bCcaB77f4bD7C', fromBlock: 49126003 }, - base: { kernelEventEmitter: '0x3dDe8E4b5120875B1359b283034F9606D0f2F9eC', fromBlock: 29522359 }, - arbitrum: { kernelEventEmitter: '0x3dDe8E4b5120875B1359b283034F9606D0f2F9eC', fromBlock: 331057353 }, - hyperliquid: { kernelEventEmitter: '0x5a428F12a55d6E0ABa77Eb5B340f2ff95dE01BF5', fromBlock: 4470476 }, - plume_mainnet: { kernelEventEmitter: '0x6984DC28Bf473160805AE0fd580bCcaB77f4bD7C', fromBlock: 4574846 }, - mantle: { kernelEventEmitter: '0xD76515844574A7c3f4521704098082371ACEEeB5', fromBlock: 80184784 }, -} - -const svm_config = { - eclipse: [ - 'BvNLQCQKxq5A7AQUsMdUqRhwXwmnYy7bkpVU67QrakJ8', // tETH/WETH (WETH) - '8VSpqv9eAtxew8hbGjN3bWoyHCog9gFEcW42URVNpTH', // tETH/WETH (tETH) - - 'ECSRM9wkFyABH55vYGoR2kjSNm3tGEFp1cT3htBWmngd', // tUSD/USDC (USDC) - '6uoWjgNs8h7VYNmdrdHmXjty8Y8GrMjTxGcmb3EuDoM8', // tUSD/USDC (tUSD) - - ], - solana: [ - '5XCdmwR7K2sZAxbWbkqhohnJ6X7v9ZtbuNrzrr19yHgp', // USDT/USDC (USDT) - 'FL34362VBFeMRqoRuFm3SiFwS2TAXBWhk6C2CBnjbG3E', // USDT/USDC (USDC) - - '6Fv84LR6nWFYeWRJAehHF3KXRi1RWQRQkGn3eLK3QMxb', // SOL/USDC (SOL) - '8NGoaasGcpa8h1JjLY598UCrmxpqgpuWVJtm9F5k3sid', // SOL/USDC (USDC) - - 'JBfR8XHYRF52WzTqyB14gkNVWtpPr9DUqzfuxASGLmby', // SKATE/USDC (SKATE) - '8munm11k8XjmjkyXygXWoZadfJuweNiFztKmgNzxccWb' // SKATE/USDC (USDC) - ] -} - -const sui_config = { - sui: ['0x6ab1e3d7c02dff309504d53fa06302cb66ce50f576432c369afe07c164c0a853'] -} - -const eventAbis = { - pool_created: "event PoolCreated(address kernelPool, address pool, address token0, address token1, uint24 fee)", -} - -const abis = { - balances_available: "function balancesAvailable() view returns (uint256 amount0, uint256 amount1)" -} - -module.exports = { - methodology: "Assets deployed on periphery chains. For EVM chains, we track the token balances in the pools. For SVM chains, we track the token balances owned by the pool addresses.", - start: 1742169600, // '2025-03-17 GMT+0' - timetravel: false, -} - -const evmTvl = async (api) => { - const { kernelEventEmitter, fromBlock } = evm_config[api.chain] - const logs = await getLogs2({ api, target: kernelEventEmitter, eventAbi: eventAbis.pool_created, fromBlock, onlyArgs: true }) - const balances = await api.multiCall({ calls: logs.map(([_, pool]) => ({ target: pool })), abi: abis.balances_available }) - logs.forEach(([_, __, token0, token1], i) => { - const { amount0, amount1 } = balances[i] - api.add(token0, amount0) - api.add(token1, amount1) - }) -} - -Object.keys(evm_config).forEach((chain) => { - module.exports[chain] = { tvl: evmTvl } -}) - -const svmTvl = async (api) => { - const pools = svm_config[api.chain] - const res = await sumTokens2({ api, tokenAccounts: pools, computeTokenAccount: true }) - return res; -} - -Object.keys(svm_config).forEach((chain) => { - module.exports[chain] = { tvl: svmTvl } -}) - -const suiTvl = async (api) => { - const pools = sui_config[api.chain] - const objs = await getObjects(pools) - objs.forEach((obj) => { - const { fields: { pool_coin0_liquidity, pool_coin1_liquidity } } = obj - const coin0Type = pool_coin0_liquidity.type.split('<')[1].replace('>', '') - const coin1Type = pool_coin1_liquidity.type.split('<')[1].replace('>', '') - const coin0Amount = pool_coin0_liquidity.fields.balance - const coin1Amount = pool_coin1_liquidity.fields.balance - api.add(coin0Type, coin0Amount) - api.add(coin1Type, coin1Amount) - }) -} - -Object.keys(sui_config).forEach((chain) => { - module.exports[chain] = { tvl: suiTvl } -}) diff --git a/projects/skcs/index.js b/projects/skcs/index.js deleted file mode 100644 index ea68df1b3ba..00000000000 --- a/projects/skcs/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const sdk = require('@defillama/sdk') - - -async function tvl(api) { - const totalLockedKCS = await api.call({ target: "0x3CEF6d63C299938083D0c89C812d9C6985e3Af1c", abi: "uint256:getLatestLockedKCS" }) - - return { 'kucoin-shares': Number(totalLockedKCS / 1e18) } -} - - -module.exports = { - methodology: 'Staked token and staking rewards are counted as TVL', - kcc: { - tvl: tvl, - } - -}; diff --git a/projects/skeleton/abi.json b/projects/skeleton/abi.json deleted file mode 100644 index a15745c5625..00000000000 --- a/projects/skeleton/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accNATIVEPerShare, address strat)", - "poolLength": "uint256:poolLength", - "wantLockedTotal": "uint256:wantLockedTotal", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/skeleton/index.js b/projects/skeleton/index.js deleted file mode 100644 index 32427a5cafa..00000000000 --- a/projects/skeleton/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const abi = require("./abi.json"); - -const masterChefContract = "0x4fff737de45da4886f711b2d683fb6A6cf62C60C"; - -const ftmTvl = async (api) => { - const poolData = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: masterChefContract}) - - const strats = poolData.map(i => i.strat) - const want = poolData.map(i => i.want) - const bals = await api.multiCall({ abi: abi.wantLockedTotal, calls:strats }) - api.add(want, bals) -}; - -module.exports = { - fantom: { - tvl: ftmTvl, - }, - methodology: - "We count liquidity on all the Vaults through MasterChef Contract", -}; diff --git a/projects/skullswap-v3/index.js b/projects/skullswap-v3/index.js deleted file mode 100644 index 0f764483be8..00000000000 --- a/projects/skullswap-v3/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - fantom: { - factory: '0x39eae0e8e8a733bcc1165a1e538a98fe8c46e183', - fromBlock: 56614737, - isAlgebra: true, - } -}) \ No newline at end of file diff --git a/projects/skullswap/index.js b/projects/skullswap/index.js deleted file mode 100644 index f62677baf5e..00000000000 --- a/projects/skullswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('fantom', '0x67BDF64a26A6B08f003580873448346c1C8bA93c') \ No newline at end of file diff --git a/projects/skydex/index.js b/projects/skydex/index.js deleted file mode 100644 index c596728926d..00000000000 --- a/projects/skydex/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - era: { - pools: [ - "0xe59eA42466f3dD0ea620A622701085983A068863", - "0x33b4424A65cfE19CDf0Dff4E54e399782327a1b6", - ] - }, - base: { - pools: [ - "0x40e004A3312259EE0cA3F457d67D13d4FEec311E", - "0xBDA235257f1cFb3833594cB8faE394BC1826caD3", - ] - }, -} - -const blacklistedTokens = [] - -async function tvl(api) { - const { pools } = config[api.chain] - const tokensArray = await api.multiCall({ abi: "address[]:getTokens", calls: pools }) - const tokens = tokensArray.flat() - const calls = tokensArray.map((t, i) => t.map((token) => ({ target: pools[i], params: token }))).flat() - const owners = await api.multiCall({ abi: "function assetOf(address) view returns (address)", calls }) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens }); -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/skydrome/index.js b/projects/skydrome/index.js deleted file mode 100644 index 066c3d3c1e1..00000000000 --- a/projects/skydrome/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') - -const V1_FACTORY = '0x2516212168034b18a0155FfbE59f2f0063fFfBD9' -const V2_FACTORY = '0x74B8738862E4814C6E6D6e0202F8386685ca7B9D' - -const tvl = sdk.util.sumChainTvls([V1_FACTORY, V2_FACTORY].map((factory) => getUniTVL({ factory, useDefaultCoreAssets: true, hasStablePools: true, }))) - -module.exports = { - misrepresentedTokens: true, - scroll: { tvl }, -} diff --git a/projects/sleepearn/index.js b/projects/sleepearn/index.js deleted file mode 100644 index 43a985c7585..00000000000 --- a/projects/sleepearn/index.js +++ /dev/null @@ -1,20 +0,0 @@ - -const { getConfig } = require('../helper/cache') -const { sumUnknownTokens } = require('../helper/unknownTokens') - -async function tvl(api) { - let data = await getConfig('sleepearn', 'https://raw.githubusercontent.com/sleepearn/pools/main/kardia_pools.js') - data = JSON.parse(data.slice(data.indexOf('[')).replaceAll('\'', '"').replaceAll(/\n\s+(\w+)/g, '"$1"').split('\n').map(i => i.replaceAll(/\s+\/\/.*/g, '').trim()).join('').replaceAll(';', '').replaceAll(/,(\]|\})/g, '$1')) - const pools = data.map(i => i.earnContractAddress).filter(i => i.toLowerCase() !== '0x4EdB55Ab9aF276786468214c401c48751Da91e2a'.toLowerCase()) - const tokens = await api.multiCall({ abi: 'address:want', calls: pools}) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: pools}) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true, }) -} - -module.exports = { - misrepresentedTokens: true, - kardia: { - tvl - }, -}; diff --git a/projects/slsd/index.js b/projects/slsd/index.js deleted file mode 100644 index 965083da50a..00000000000 --- a/projects/slsd/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const FACTORY_CONTRACT = "0x253924C4D0806Fd6A81f72e0bEa400CD97c64700"; - -const SLSD_LP = '0x712Ed536645e66d0d8605d3cB22d1ed3b2Dc255B'; -const SLSD = '0xB668f51f1D63452b566456053fA348c3037E2B1F'; -const eSLSD = '0x2dd8f7378fce12c9dfe36a6c155fc2446d18b3f9'; -const abis = { - "getStakingTokens": "function getStakingTokens() view returns (address[])", - "getStakingPoolAddress": "function getStakingPoolAddress(address) view returns (address)", -} - -async function tvl(api) { - const tokens = await api.call({ abi: abis.getStakingTokens, target: FACTORY_CONTRACT, }) - const owners = await api.multiCall({ abi: abis.getStakingPoolAddress, target: FACTORY_CONTRACT, calls: tokens }) - tokens.forEach((v, i) => { - if (v === nullAddress) { - tokens.push(ADDRESSES.ethereum.WETH) - owners.push(owners[i]) - } - }) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens: [SLSD_LP, SLSD, eSLSD,] }) -} - -module.exports = { - ethereum: { - tvl, - pool2: staking('0xBE13DC5235a64d090E9c62952654DBF3c65199d9', SLSD_LP) - } -}; diff --git a/projects/smartcoin/index.js b/projects/smartcoin/index.js deleted file mode 100644 index 047a8e259ae..00000000000 --- a/projects/smartcoin/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { pool2 } = require("../helper/pool2.js"); - -const masterchef = "0xa0488F956D7fe05b1798e9FaF0cE5F1133d23822"; -const pool2JLP = "0xf070843Ba9ed0ab85B0d15f9E8D67A5A8E073254"; // SMRT-AVAX pool - -module.exports = { - methodology: "TVL calculation currently includes Pool2 TVL in the SMRT-AVAX JLP", - avax: { - tvl: async () => ({}), - pool2: pool2(masterchef, pool2JLP, "avax", (addr) => `avax:${addr}`), - }, -}; diff --git a/projects/smartcredit.js b/projects/smartcredit.js deleted file mode 100644 index 16b7a9c06a0..00000000000 --- a/projects/smartcredit.js +++ /dev/null @@ -1,113 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { cachedGraphQuery } = require('./helper/cache') -const { getLogs } = require('./helper/cache/getLogs') - -const endPoint = 'https://d2c7awq32ho327.cloudfront.net/graphql' -const SMART_CREDIT = '0x72e9D9038cE484EE986FEa183f8d8Df93f9aDA13'.toLowerCase() -const factory = '0x31ba589072278D82207212702De9A1C2B9D42c28' -const fromBlock = 14575305 -const factoryAbi = { - "FixedIncomeFundCreationComplete": "event FixedIncomeFundCreationComplete(address indexed fixedIncomeFund, bytes32 indexed salt)", - "LoanContractCreated": "event LoanContractCreated(address indexed creditLine, address indexed borrower, bytes32 salt, bytes32 _type)", - "createCreditLine": "function createCreditLine(bytes32 _type, bytes32 _salt) returns (address _creditLine)", - "createNFTLoan": "function createNFTLoan(bytes32 _type, bytes32 _salt, tuple(address assetAddress, uint256 loanAmount, uint256 loanTerm, uint256 interestRate, address collateralAddress, uint256 collateralId) _loanRequest) returns (address _loanContract)", - "createFixedIncomeFund": "function createFixedIncomeFund(bytes32 _type, bytes32 _salt, uint256[4] _ratios) returns (address _fixedIncomeFund)", - "investFixedIncomeFundToCompound": "function investFixedIncomeFundToCompound(address[] _fixedIncomeFunds)" -} - -const loanAbi = { - "getLoanData": "function getLoanData(bytes32 _loanId) view returns (bytes32 loanId, uint256 currentCollateralAmount, uint256 loanEnded, uint256 outstandingAmount)", -} - -const fixedIncomeAbi = { - "getCurrencyAddress": "address:getCurrencyAddress", - "getCompoundAddress": "address:getCompoundAddress", - "fixedIncomeFundBalance": "uint256:fixedIncomeFundBalance" -} - - -const transformNull = i => i.toLowerCase() === ADDRESSES.GAS_TOKEN_2.toLowerCase() ? ADDRESSES.null : i - -async function staking(api) { - let { loanRequests } = await cachedGraphQuery('smart-credit', endPoint, `{ - loanRequests { - id, - contractAddress, - loanStatus, - liquidationStatus, - underlying { ethAddress }, - collateral { ethAddress } - } - }`) - loanRequests = loanRequests.filter(i => i) - const ownerTokens = loanRequests.map(i => [[i.underlying.ethAddress, i.collateral.ethAddress].map(transformNull), i.contractAddress]) - return api.sumTokens({ ownerTokens, whitelistedTokens: [SMART_CREDIT] }) -} - -module.exports = { - timetravel: false, - ethereum: { - tvl, - staking, - borrowed, - } -} - -async function tvl(api) { - await fixedIncomeTvl(api) - await loanTvl(api) - return api.getBalances() -} - - -async function fixedIncomeTvl(api) { - const logs = await getLogs({ - api, - target: factory, - eventAbi: factoryAbi.FixedIncomeFundCreationComplete, - onlyArgs: true, - fromBlock, - extraKey: 'fixedIncomeFund', - }) - const pools = logs.map(l => l.fixedIncomeFund) - const tokens = (await api.multiCall({ abi: fixedIncomeAbi.getCurrencyAddress, calls: pools })).map(transformNull) - - await api.sumTokens({ tokensAndOwners2: [tokens, pools], blacklistedTokens: [SMART_CREDIT] }) -} - -async function loanTvl(api) { - let { loanRequests } = await cachedGraphQuery('smart-credit', endPoint, `{ - loanRequests { - id, - contractAddress, - loanStatus, - liquidationStatus, - underlying { ethAddress }, - collateral { ethAddress } - } - }`) - loanRequests = loanRequests.filter(i => i) - const ownerTokens = loanRequests.map(i => [[i.underlying.ethAddress, i.collateral.ethAddress].map(transformNull), i.contractAddress]) - return api.sumTokens({ ownerTokens, blacklistedTokens: [SMART_CREDIT] }) -} - -async function borrowed(api) { - let { loanRequests } = await cachedGraphQuery('smart-credit', endPoint, `{ - loanRequests { - id, - contractAddress, - loanStatus, - liquidationStatus, - underlying { ethAddress }, - collateral { ethAddress } - } - }`) - loanRequests = loanRequests.filter(i => i) - const calls = loanRequests.map(i => ({ target: i.contractAddress, params: [i.id] })) - const loanInfos = await api.multiCall({ abi: loanAbi.getLoanData, calls}) - loanInfos.forEach((i, idx) => { - if (i.outstandingAmount === '0') return - api.add(loanRequests[idx].underlying.ethAddress, i.outstandingAmount) - }) - return api.getBalances() -} \ No newline at end of file diff --git a/projects/smartdex/index.js b/projects/smartdex/index.js deleted file mode 100644 index cafe4a4e0c7..00000000000 --- a/projects/smartdex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: getUniTVL({ factory: '0xBE087BeD88539d28664c9998FE3f180ea7b9749C', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/smartdexbch/index.js b/projects/smartdexbch/index.js deleted file mode 100644 index 76574805de9..00000000000 --- a/projects/smartdexbch/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') - -const DSMART = "0x47c259DFe165Cef3e429C9B66bf9ce9dc3e68aC2"; -const xDSMART = "0x46269c22848738573761eC50a736916272857f83"; -const FACTORY = "0xDd749813a4561100bDD3F50079a07110d148EaF5"; -const DSMART_WBCH_PAIR = "0xce6c8D26d370C18618DEE42a18190624105B212F" - -module.exports = { - methodology: "Count TVL as liquidity on the dex", - misrepresentedTokens: true, - smartbch: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), - staking: stakingPricedLP(xDSMART, DSMART, 'smartbch', DSMART_WBCH_PAIR, 'bitcoin-cash', false, 18) - } -} \ No newline at end of file diff --git a/projects/smartpad/index.js b/projects/smartpad/index.js deleted file mode 100644 index 7927370e7c4..00000000000 --- a/projects/smartpad/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const data = { - aurora: { - padTokenAddress: '0x0fAD0ED848A7A16526E8a7574e418B015Dbf41B5', - stakingContractAddress: '0x3e2F9dE8c59CdCd1fff14963A9c0155410e8Bb07' - }, - ethereum: { - padTokenAddress: '0x5067006F830224960Fb419D7f25a3a53e9919BB0', - stakingContractAddress: '0x105aaB1C3314D61282b4FBF598D07302cf731EF3' - }, - polygon: { - padTokenAddress: '0x0Ad2Eff7F37E0037B5E30C1947f31ABdf11461e4', - stakingContractAddress: '0xa2269805f2Fd714ea0205d44c816cD0ea6f85BdC' - }, -} - -async function staking(api) { - const chainData = data[api.chain] - return api.sumTokens({ owner: chainData.stakingContractAddress, token: chainData.padTokenAddress }) -} - -module.exports = { - methodology: "All tokens locked in Smartpad.", - ethereum: { staking, tvl: () => ({}) }, - polygon: { staking, tvl: () => ({}) }, - aurora: { staking, tvl: () => ({}) }, -} -module.exports.deadFrom = '2022-08-09' - diff --git a/projects/smbswap-v3/index.js b/projects/smbswap-v3/index.js deleted file mode 100644 index 05f25391571..00000000000 --- a/projects/smbswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - bsc: { factory: '0xa9b5d4eac94cb98117abdcc0ecbd7731960f91d9', fromBlock: 27043748, isAlgebra: false,}, -}) \ No newline at end of file diff --git a/projects/smbswap/index.js b/projects/smbswap/index.js deleted file mode 100644 index 101e2d460b7..00000000000 --- a/projects/smbswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: 'The SMBswap subgraph and the SMBswap factory contract address are used to obtain the balance held in every LP pair.', - bsc: { - tvl: getUniTVL({ factory: '0x2Af5c23798FEc8E433E11cce4A8822d95cD90565', useDefaultCoreAssets: true }), - }, - start: '2022-02-19', // Sat Feb 19 2022 15:38:09 -}; diff --git a/projects/smilee-finance/index.js b/projects/smilee-finance/index.js deleted file mode 100644 index 733958cdfe2..00000000000 --- a/projects/smilee-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - methodology: 'Sum of balances from vault contracts associated with each DVP retrieved by the registry.', -} - -const config = { - arbitrum: { provider: '0x110A3B051397956D69733B6fe947648bB9062cf1' } -} - -Object.keys(config).forEach(chain => { - const { provider } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const registry = await api.call({ abi: 'address:registry', target: provider }) - const dvps = await api.call({ abi: 'address[]:getDVPs', target: registry }) - const vaults = await api.multiCall({ abi: 'address:vault', calls: dvps }) - const sideTokens = await api.multiCall({ abi: 'address:sideToken', calls: dvps }) - const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: dvps }) - return api.sumTokens({ tokensAndOwners2: [sideTokens.concat(baseTokens), vaults.concat(vaults)] }) - } - } -}) diff --git a/projects/smiliee-gbera/index.js b/projects/smiliee-gbera/index.js deleted file mode 100644 index c7c0a0b4124..00000000000 --- a/projects/smiliee-gbera/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - berachain: { tvl: sumERC4626VaultsExport({ vaults: ['0x3f7755117f1fec1981aefb01887240dbf5f2ebce'], tokenAbi: 'wbera', balanceAbi: 'totalAssets' }) }, -} \ No newline at end of file diff --git a/projects/smolswap/abi.json b/projects/smolswap/abi.json deleted file mode 100644 index 85069067302..00000000000 --- a/projects/smolswap/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accSmolPerShare)" -} \ No newline at end of file diff --git a/projects/smolswap/index.js b/projects/smolswap/index.js deleted file mode 100644 index 7d525664bd4..00000000000 --- a/projects/smolswap/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0x7Aa2149fF9EF4A09D4ace72C49C26AaE8C89Fb48) is used to find the LP pairs. TVL is equal to the liquidity on the AMM, while staking is the amount of SMOL tokens found in the Masterchef(0x66a5f06d9c8bdc27bb0768eeff71d22b468fb464).", - cronos: { - tvl: getUniTVL({ factory: '0x7Aa2149fF9EF4A09D4ace72C49C26AaE8C89Fb48', useDefaultCoreAssets: true }), - staking: stakingPricedLP( - "0x66a5f06d9c8bdc27bb0768eeff71d22b468fb464", - "0x2Ad63Da83d6ff5dA9E716DcaE844D4f157405BDd", - "cronos", - "0x408b982fDC78eA8fdF8f8652C7893181A645d782", - "crypto-com-chain", - true - ) - } -} \ No newline at end of file diff --git a/projects/smoothy.js b/projects/smoothy.js deleted file mode 100644 index a8777639b46..00000000000 --- a/projects/smoothy.js +++ /dev/null @@ -1,9 +0,0 @@ -const imp = '0xe5859f4efc09027a9b718781dcb2c6910cac6e91' -const { sumTokensExport } = require('./helper/unwrapLPs') - -const tvl = sumTokensExport({ owner: imp, fetchCoValentTokens: true }) - -module.exports = { - ethereum: { tvl }, - bsc: { tvl }, -} diff --git a/projects/smurfmoney/index.js b/projects/smurfmoney/index.js deleted file mode 100644 index a82cde6aa2d..00000000000 --- a/projects/smurfmoney/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const clever = "0x465bc6d1ab26efa74ee75b1e565e896615b39e79"; -const mushy = "0x53a5f9d5adc34288b2bff77d27f55cbc297df2b9"; - -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require('../helper/utils'); - -module.exports = mergeExports([ - masterchefExports({ - chain: 'fantom', - masterchef: '0xdD4Ddef5be424a6b5645dF4f5169e3cbA6a975Db', - nativeTokens: [mushy, clever], - }), - masterchefExports({ - chain: 'fantom', - masterchef: '0x772dEC3e4A9B18e3B2636a70e11e4e0a90F19575', - nativeTokens: [mushy, clever], - }) -]) diff --git a/projects/smxswap/index.js b/projects/smxswap/index.js deleted file mode 100644 index 3153d4acc99..00000000000 --- a/projects/smxswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const { mergeExports } = require('../helper/utils') - -module.exports = mergeExports([ - uniTvlExport('cronos', '0x1Ed37E4323E429C3fBc28461c14A181CD20FC4E8'), - uniTvlExport('bsc', '0x2C3408a4827DF0419DA2f53eAe92f338B4d314ec'), - uniTvlExport('polygon', '0xDD4047F11c80f7831922904Ddb61E370E83D5fbb'), -]) \ No newline at end of file diff --git a/projects/snai-finance/index.js b/projects/snai-finance/index.js deleted file mode 100644 index 4b6525e6700..00000000000 --- a/projects/snai-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { methodology, compoundExports2 } = require("../helper/compound"); - -module.exports = { - deadFrom: '2024-06-15', - base: compoundExports2({ comptroller: '0x784E1507193c060bC88e6699adC7c796Ebe0E14e', cether: '0x9649Eb0f03C7e85615cFDC7927c7E6B775Ef284d' }), - methodology, -} - -module.exports.base.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/snake/index.js b/projects/snake/index.js deleted file mode 100644 index 105627d7778..00000000000 --- a/projects/snake/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const gsnakeTokenAddress = "0x674a430f531847a6f8976A900f8ace765f896a1b"; -const snakeGenesisAddress = '0x29D0762f7bE8409d0aC34A3595AF62E8c0120950' -const gsnakeRewardPoolAddress = "0xe6E0A10eb298F0aC4170f2502cF7b201375BBc85"; -const masonryAddress = "0x54eb20859334C1958eb67f1b5a283b7A100280D3"; - -async function snakeGenesisTVL(api) { - const tokens = [ - ADDRESSES.sonic.wS, // S - ADDRESSES.sonic.USDC_e, // USDC.e - "0x50c42dEAcD8Fc9773493ED674b675bE577f2634b", // WETH - "0x3333b97138D4b086720b5aE8A7844b1345a33333", // SHADOW - "0x79bbF4508B1391af3A0F4B30bb5FC4aa9ab0E07C", // ANON - ADDRESSES.sonic.scUSD, // scUSD - "0x9fDbC3f8Abc05Fa8f3Ad3C17D2F806c1230c4564", // GOGLZ - "0x44E23B1F3f4511b3a7e81077Fd9F2858dF1B7579", // MCLB - ADDRESSES.sonic.STS, // stS - "0x3333111A391cC08fa51353E9195526A70b333333", // x33 - ] - - return sumTokens2({ api, tokens, owner: snakeGenesisAddress, }) -} - - -const pool2 = async (api) => { - let gauges = await api.call({ abi: 'address[]:getAllGauges', target: '0x9F59398D0a397b2EEB8a6123a6c7295cB0b0062D' }) - let pools = await api.multiCall({ abi: 'address:stake', calls: gauges, permitFailure: true }) - const pools2 = [] - const gauges2 = [] - pools.forEach((pool, i) => { - if (!pool) return; - pools2.push(pool) - gauges2.push(gauges[i]) - }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges2.map(gauge => ({ target: gauge, params: gsnakeRewardPoolAddress })) }) - api.add(pools2, bals) - return sumTokens2({ api, tokens: pools2, }) -}; - - -module.exports = { - methodology: "Pool2 deposits consist of SNAKE/S and GSNAKE/S LP tokens deposits while the staking TVL consists of the GSNAKEs tokens locked within the Masonry contract(0x5A5d34826ab31003F26F8A15e9B645803d85eA81).", - hallmarks: [ - [1739577600, 'Genesis Phase Ended'] - ], - sonic: { - tvl: snakeGenesisTVL, - pool2, - staking: staking(masonryAddress, gsnakeTokenAddress), - }, -}; \ No newline at end of file diff --git a/projects/snarklaunch/index.js b/projects/snarklaunch/index.js deleted file mode 100644 index bdac5aaf126..00000000000 --- a/projects/snarklaunch/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const STAKING_SNRK_CONTRACT = "0xEbA49A81501b036234578D10e78685ca8BbD2901"; -const SNRK_TOKEN = "0x533b5F887383196C6bc642f83338a69596465307"; - -module.exports = { - methodology: 'TVL for SNRK staking is computed by summing the balance of SNRK tokens held by the staking contract.', - era: { - staking: sumTokensExport({ owners: [STAKING_SNRK_CONTRACT], tokens: [SNRK_TOKEN] }), - tvl: () => 0, - }, -} diff --git a/projects/snowball/abi.json b/projects/snowball/abi.json deleted file mode 100644 index 0d2794594d0..00000000000 --- a/projects/snowball/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "getToken": "function getToken(uint8 index) view returns (address)", - "want": "address:want", - "balanceOf": "uint256:balanceOf", - "token": "address:token", - "balance": "uint256:balance" -} \ No newline at end of file diff --git a/projects/snowball/index.js b/projects/snowball/index.js deleted file mode 100644 index 498cb993ebb..00000000000 --- a/projects/snowball/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require('../helper/staking.js'); - -const abi = require('./abi.json') - -const API_URL = `https://api.snowapi.net/graphql` - -const query = ` -query { - SnowglobeContracts { - pair - snowglobeAddress - } - DeprecatedContracts { - kind - pair - contractAddresses - } - StablevaultContracts { - swapAddress - } -} -`; - -const XSNOB_CONTRACT = '0x83952E7ab4aca74ca96217D6F8f7591BEaD6D64E'; -const SNOB_TOKEN_CONTRACT = '0xc38f41a296a4493ff429f1238e030924a1542e50'; - -async function getStableVaultBalances(stablevaults, api) { - const calls = stablevaults.map(i => [0, 1, 2, 3].map(num => ({ params: num, target: i.swapAddress }))).flat() - const tokens = await api.multiCall({ abi: abi.getToken, calls: calls, withMetadata: true, - permitFailure: true, }) - const toa = [] - tokens.forEach(i => { - if (!i.output) return; - toa.push([i.output, i.input.target]) - }) - return sumTokens2({ api, tokensAndOwners: toa }) -} - -async function getSnowglobeBalances(snowglobes, api) { - const singleSidedPairs = snowglobes.map(globe => globe.snowglobeAddress).filter(i => i) - const [tokens, tokenBalances] = await Promise.all([ - api.multiCall({ - calls: singleSidedPairs, - abi: abi.token - }), - api.multiCall({ - calls: singleSidedPairs, - abi: abi.balance - }) - ]) - api.addTokens(tokens, tokenBalances) -} - -async function tvl(api) { - const data = await cachedGraphQuery('snowball', API_URL, query) - const deprecatedSnowglobes = data.DeprecatedContracts.filter(contract => contract.kind === "Snowglobe").map(contract => ({ pair: contract.pair, snowglobeAddress: contract.contractAddresses[0] })); - const deprecatedStablevaults = data.DeprecatedContracts.filter(contract => contract.kind === "Stablevault").map(contract => ({ swapAddress: contract.contractAddresses[2] })); - - await Promise.all([ - getStableVaultBalances(data.StablevaultContracts.concat(deprecatedStablevaults), api), - getSnowglobeBalances(data.SnowglobeContracts.concat(deprecatedSnowglobes), api), - ]) -} - -module.exports = { - avax: { - tvl, - staking: staking(XSNOB_CONTRACT, SNOB_TOKEN_CONTRACT) - } -} // node test.js projects/snowball/index.js diff --git a/projects/snowbank.js b/projects/snowbank.js deleted file mode 100644 index 45e333f821d..00000000000 --- a/projects/snowbank.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('./helper/staking') -const TimeStaking = "0x85784d5e2CCae89Bcb39EbF0ac6Cdc93d42d99AD" -const time = "0x7d1232b90d3f809a54eeaeebc639c62df8a8942f" - -module.exports = { - avax:{ - tvl: () => ({}), - staking: staking(TimeStaking, time) - }, - methodology: - "Counts tokens on the treasury for tvl and staked SB for staking", -}; diff --git a/projects/snowbl-capital.js b/projects/snowbl-capital.js deleted file mode 100644 index be139a3c785..00000000000 --- a/projects/snowbl-capital.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumERC4626VaultsExport } = require('./helper/erc4626') - -module.exports = { - base: { - tvl: sumERC4626VaultsExport({ - vaults: [ - '0xd61bfc9ca1d0d2b03a3dd74e2ab81df8e5f606e8', // Snowbl Capital ERC4626 Vault - ], - isOG4626: true, - }), - } -} \ No newline at end of file diff --git a/projects/snowcatdao/index.js b/projects/snowcatdao/index.js deleted file mode 100644 index e427859612b..00000000000 --- a/projects/snowcatdao/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const {ohmTvl} = require("../helper/ohm"); - -const scat = "0x2558b8FBa8f678Fd3029C927CD3780f5d3C266C7"; -const scatStaking = "0x2466A2042236ece30de125594D7775143A845551"; -const treasuryContract = "0x9B24eF0Ebe7C2Df748376469073968Ae7062d9C9"; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasuryContract, [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0x65a607bd82e48eed640a314a1a26137b62ad6204", true] // scatMimJLP - ], "avax", scatStaking, scat, addr=>`avax:${addr}`, undefined, false) -} \ No newline at end of file diff --git a/projects/snowdogdao/index.js b/projects/snowdogdao/index.js deleted file mode 100644 index bd4938f6da2..00000000000 --- a/projects/snowdogdao/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -module.exports.hallmarks=[ - [1637798400,"Rug Pull"] -], -module.exports=ohmTvl("0xC0E7DA06e56727F3B55B24F58e9503FdaAfb2a68", [ - //mim - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], - //wavax - [ADDRESSES.avax.WAVAX, false], - //spell - ["0xce1bffbd5374dac86a2893119683f4911a2f7814", false], - //joe - [ADDRESSES.avax.JOE, false], - //weth - [ADDRESSES.avax.WETH_e, false], - //LP_sdog_mim - ["0xa3f1f5076499ec37d5bb095551f85ab5a344bb58", true] -], "avax", "0xc970dab38627bc7Ba1487754d832A327E0e626Cd", "0xde9e52f1838951e4d2bb6c59723b003c353979b6") \ No newline at end of file diff --git a/projects/snowflake/abi.js b/projects/snowflake/abi.js deleted file mode 100644 index 35e127f8475..00000000000 --- a/projects/snowflake/abi.js +++ /dev/null @@ -1,4 +0,0 @@ - -module.exports = { - getAssets: "function getAssets() view returns (address[][])", -} \ No newline at end of file diff --git a/projects/snowflake/constants.js b/projects/snowflake/constants.js deleted file mode 100644 index 10b6fc4dd12..00000000000 --- a/projects/snowflake/constants.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -/** - * lp token addresses - */ -// Main -const MAIN_USDC_LP = "0x4B780D14CF44302908b1700E5Ad2f746C70b1c9E"; -const MAIN_USDT_LP = "0x3dc2a544A3A9C4D86d58D52bCaD1ECA8c1EC2361"; -const MAIN_DAI_LP = "0x59a49E5bd704fC70E2cD9fe3d4D5D03991278015"; -const MAIN_MAI_LP = "0xD0dCF24aA7784e34F022AdF43447578e54e2a695"; - -const USDC = ADDRESSES.polygon.USDC; -const USDT = ADDRESSES.polygon.USDT; -const DAI = ADDRESSES.polygon.DAI; -const MAI = "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1"; - -module.exports = { - DAI: { - id: "dai", - addresses: [ - { - token: DAI, - lpTokens: [MAIN_DAI_LP], - }, - ], - }, - USDC: { - id: "usdc", - addresses: [ - { - token: USDC, - lpTokens: [ - MAIN_USDC_LP, - ], - }, - ], - }, - USDT: { - id: "usdt", - addresses: [ - { - token: USDT , - lpTokens: [MAIN_USDT_LP], - }, - ], - }, - MAI: { - id: "mai", - addresses: [ - { - token: MAI, - lpTokens: [MAIN_MAI_LP], - }, - ], - }, -}; diff --git a/projects/snowflake/index.js b/projects/snowflake/index.js deleted file mode 100644 index c75463052f3..00000000000 --- a/projects/snowflake/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { staking } = require("../helper/staking"); -const assetsAbi = require("./abi") -const asssetsContract = "0x2c326AbbE089B786E7170da84e39F3d0c6650653" -const bscAsssetsContract = "0xEaEC4e680F5D534772e888fbD558b3b29e1F2E89" - -async function tvl(api) { - const tokensAndOwners = await api.call({ target: asssetsContract, abi: assetsAbi.getAssets, }) - return api.sumTokens({ tokensAndOwners }) -} - -async function bscTvl(api) { - const tokensAndOwners = await api.call({ target: bscAsssetsContract, abi: assetsAbi.getAssets, }) - return api.sumTokens({ tokensAndOwners }) -} - -module.exports = { - hallmarks: [ - [1672448400, "Rug Pull"] - ], - deadFrom: 1672448400, - polygon: { - tvl: () => ({}), - staking: () => ({}), - }, - - bsc: { - tvl: () => ({}), - staking: () => ({}), - } -}; diff --git a/projects/snowswap-xyz/index.js b/projects/snowswap-xyz/index.js deleted file mode 100644 index 8cadb86d514..00000000000 --- a/projects/snowswap-xyz/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const baseTvl = getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x5669a449D892f03B4c541A321926f18e272c64A2', -}) - -const tvl = async (api) => { - const newRpcUrl = 'https://darwinia.rpc.subquery.network/public'; - api.provider.rpcs = [{ url: newRpcUrl }]; - return baseTvl(api) -} - -module.exports = { - misrepresentedTokens: true, - crab: { tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x36ABF1A7851fBF9ae9D79dc3E39C1227068158B3' }), }, - darwinia: { tvl }, -} \ No newline at end of file diff --git a/projects/snowswap.js b/projects/snowswap.js deleted file mode 100644 index c47bab4977a..00000000000 --- a/projects/snowswap.js +++ /dev/null @@ -1,115 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { staking } = require('./helper/staking'); -const { sumTokens2, } = require('./helper/unwrapLPs'); - -const wBTC = ADDRESSES.ethereum.WBTC -const y2DAI = { addr: "0xacd43e627e64355f1861cec6d3a6688b31a6f952", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///y2DAI yv -const y2USDC = { addr: "0x597ad1e0c13bfe8025993d9e79c69e1c0233522e", dec: 6, getPrice: false, type: 'yv', pfsDec: 18 } ///y2USDC yv -const y2USDT = { addr: "0x2f08119c6f07c006695e079aafc638b8789faf18", dec: 6, getPrice: false, type: 'yv', pfsDec: 18 } ///y2USDT yv -const Y2TUSD = { addr: "0x37d19d1c4e1fa9dc47bd1ea12f742a0887eda74a", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///Y2TUSD yv -const yyDAIT = { addr: "0x5dbcf33d8c2e976c6b560249878e6f1491bca25c", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///yyDAI+yUSDC+yUSDT+yTUSD hbtc -const yyDAIB = { addr: "0x2994529c0652d127b7842094103715ec5299bbed", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///yyDAI+yUSDC+yUSDT+yBUSD hbtc -const WETH = { addr: ADDRESSES.ethereum.WETH, dec: 18, get getPrice() { return this.addr }, type: '' } ///WETH crvETH -const eCRV = { addr: "0xa3d87fffce63b53e0d54faa1cc983b7eb0b74a9c", dec: 18, getPrice: WETH.getPrice, type: '' } ///eCRV crvETH -const steCRV = { addr: "0x06325440d014e39736583c165c2963ba99faf14e", dec: 18, getPrice: WETH.getPrice, type: '' } ///steCRV crvETH -const ankrCRV = { addr: "0xaa17a236f2badc98ddc0cf999abb47d47fc0a6cf", dec: 18, getPrice: WETH.getPrice, type: '' } ///ankrCRV crvETH - -const usdc = { addr: ADDRESSES.ethereum.USDC, dec: 6, getPrice: false, type: '' } ///fUSD -const fUSDC = { addr: "0xf0358e8c3cd5fa238a29301d0bea3d63a17bedbe", dec: 6, getPrice: false, type: 'yv', pfsDec: 6 } ///fUSD -const fUSDT = { addr: "0x053c80ea73dc6941f518a68e2fc52ac45bde7c9c", dec: 6, getPrice: false, type: 'yv', pfsDec: 6 } ///fUSD -const fDAI = { addr: "0xab7fa2b2985bccfc13c6d86b1d5a17486ab1e04c", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///fUSD - -const yvDAI = { addr: '0xda816459f1ab5631232fe5e97a05bbbb94970c95', dec: 18, getPrice: false, type: 'yv2', pfsDec: 18 } ///yVault v3 -const yvUSDC = { addr: '0x5f18c75abdae578b483e5f43f12a39cf75b973a9', dec: 6, getPrice: false, type: 'yv2', pfsDec: 6 } ///yVault v3 -const yvUSDT = { addr: '0x7da96a3891add058ada2e826306d812c638d87a7', dec: 6, getPrice: false, type: 'yv2', pfsDec: 6 } ///yVault v3 - -// WETH ///eth2SNOW -const vETH2 = { addr: "0x898bad2774eb97cf6b94605677f43b41871410b1", dec: 18, getPrice: WETH.getPrice, type: '' } ///eth2SNOW -const aETHc = { addr: "0xe95a203b1a91a908f9b9ce46459d101078c2c3cb", dec: 18, getPrice: WETH.getPrice, type: 'ankr', pfsDec: 18 } ///eth2SNOW -const CRETH2 = { addr: "0xcbc1065255cbc3ab41a6868c22d1f1c573ab89fd", dec: 18, getPrice: WETH.getPrice, type: '' } ///eth2SNOW - - -const ycrvRenWSBTC = { addr: '0x7ff566e1d69deff32a7b244ae7276b9f90e9d0f6', dec: 18, getPrice: wBTC, type: 'yv', pfsDec: 18 } ///btcSnow -// TODO: the next should be yv -const fcrvRenWBTC = { addr: '0x5f18c75abdae578b483e5f43f12a39cf75b973a9', dec: 18, getPrice: wBTC, type: '', pfsDec: 18 } ///btcSnow - -const polyDai = { addr: ADDRESSES.polygon.DAI, dec: 18, getPrice: false } ///penguin -const polyUsdc = { addr: ADDRESSES.polygon.USDC, dec: 6, getPrice: false } ///penguin -const polyUSDT = { addr: ADDRESSES.polygon.USDT, dec: 6, getPrice: false } ///penguin - -const snow = { addr: '0xfe9a29ab92522d14fc65880d817214261d8479ae', dec: 18, get getPrice() { return this.addr } } ///Frosty - -const polySnow = { addr: "0x33c9f7c0afe2722cb9e426360c261fb755b4483d", dec: 18, getPrice: snow.getPrice }; /// Olaf's - -let swaps = [ - { - 'name': 'yv', - 'addr': '0x4571753311e37ddb44faa8fb78a6df9a6e3c6c0b', - 'coins': [y2DAI, y2USDC, y2USDT, Y2TUSD], - }, - { - 'name': 'hbtc', - 'addr': '0xbf7ccd6c446acfcc5df023043f2167b62e81899b', - 'coins': [yyDAIT, yyDAIB], - }, - { - 'name': 'crvETH', - 'addr': '0x3820a21c6d99e57fb6a17ab3fbdbe22552af9bb0', - 'coins': [WETH, eCRV, steCRV, ankrCRV], - }, - { - 'name': 'fUSD', - 'addr': '0x8470281f5149eb282ce956d8c0e4f2ebbc0c21fc', - 'coins': [usdc, fUSDC, fUSDT, fDAI], - }, - { - 'name': 'yVault v3', - 'addr': '0x668e76F1E74e6391ed3fe947E923878109647879', - 'coins': [yvDAI, yvUSDC, yvUSDT], - }, - { - 'name': 'eth2SNOW', - 'addr': '0x16BEa2e63aDAdE5984298D53A4d4d9c09e278192', - 'coins': [WETH, vETH2, aETHc, CRETH2], - }, - { - 'name': 'btcSnow', - 'addr': '0xeF034645b9035C106acC04cB6460049D3c95F9eE', - 'coins': [ycrvRenWSBTC, fcrvRenWBTC], - } -] -const pools = [ - { - 'name': 'penguin', - 'addr': '0x6852E7399C6cC73256Ca46A4921e1c7b2682D912', - 'coins': [polyDai, polyUsdc, polyUSDT], - 'chain': 'polygon' - } -] - -async function polygon(api) { - const poolsPolygon = pools.filter(p => p.chain === "polygon") - const toa = [] - poolsPolygon.forEach(pool => { - pool.coins.map(coin => toa.push([coin.addr, pool.addr])) - }) - return sumTokens2({ api, tokensAndOwners: toa, }) -} - -async function ethereum(api) { - const toa = [] - swaps.map(({ addr, coins }) => { - coins.forEach(i => toa.push([i.addr, addr])) - }) - return sumTokens2({ api, tokensAndOwners: toa, }) -} - -module.exports = { - ethereum: { - tvl: ethereum, - staking: staking('0x7d2c8B58032844F222e2c80219975805DcE1921c', snow.addr) - }, - polygon: { - tvl: polygon - }, -} diff --git a/projects/snowtomb/index.js b/projects/snowtomb/index.js deleted file mode 100644 index bee906b44bc..00000000000 --- a/projects/snowtomb/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const stomb = "0x9e6832d13b29d0b1c1c3465242681039b31c7a05"; -const slot = "0x924157B5dbB387A823719916B25256410a4Ad470"; -const masonry = "0x831B2Ab0f6f190536f4138Db00b03C3Bb1b5f12A"; -const rewardPool = "0xb762Ece3Bc3571376BE73D2e6F3bBf4d108ED8b1"; -const lps = [ - "0x75adad64d0cc5f7ec4b0b1dc078f7d8c5b24056f", - "0x04fc1cec422792c2ca41671a24184834b433fc18" -] - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(stomb, slot, rewardPool, masonry, lps, "avax", undefined, false, lps[1]) -} \ No newline at end of file diff --git a/projects/snowyowl/index.js b/projects/snowyowl/index.js deleted file mode 100644 index 8edd08c1f1d..00000000000 --- a/projects/snowyowl/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const sno = "0x1fE4869f2C5181b9CD780a7E16194FA2c4C4293D"; -const snoshare = "0xe7A102Fbc8AB3581d62830DdB599eCCaae5e7875"; -const boardroom = "0x264C36747b6cC5243d8999345FFf8F220B7CCc77"; -const rewardPool = "0xb7d3dc568F7dF54d516D37739912Fc2E541Ba2fF"; -const lps = [ - "0xe63b66a8cf7811525cd15dab15f17fb62aa5af2f", //joe/sno - "0x3e262be2339069cec95552683c1eb3f513adcc66", //sno/snoshare - "0x061349a57b702ebe3139ca419457bb23f7e0d8a2" -] - -module.exports = { - misrepresentedTokens: true, - ...tombTvl(sno, snoshare, rewardPool, boardroom, lps, "avax") -} \ No newline at end of file diff --git a/projects/sns/index.js b/projects/sns/index.js deleted file mode 100644 index 5cc53a5c9f1..00000000000 --- a/projects/sns/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const axios = require ("axios") - -const SNS_URL = "https://sns-api.internetcomputer.org/api/v1/snses" -const ICP_URL = "https://ledger-api.internetcomputer.org/accounts" - -async function tvl(api) { - const { data } = await axios.get(SNS_URL) - - for (const sns of data.data) { - const root_canister_id = sns.root_canister_id - const root_canister = await axios.get(SNS_URL + `/${root_canister_id}`) - const icp_ledger_treasury_accountidentifier = root_canister.data.icp_treasury_account - const icp_ledger = await axios.get(ICP_URL + `/${icp_ledger_treasury_accountidentifier}`) - const icp_balance = parseInt(icp_ledger.data.balance) - api.addCGToken('internet-computer', icp_balance / 1e8) - } -} - -module.exports = { - methodology: `We count the ICP on all SNS DAO treasuries accounts`, - icp: { - tvl - }, -} \ No newline at end of file diff --git a/projects/snsy/index.js b/projects/snsy/index.js deleted file mode 100644 index c0dac1260e8..00000000000 --- a/projects/snsy/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking') -const SNSY_TOKEN_CONTRACT = '0x82a605D6D9114F4Ad6D5Ee461027477EeED31E34'; -const SNSY_CLUB_STAKING_CONTRACT = '0x382c70620e42c2EF2b303b97bad1d9439Bf48ef9'; - -module.exports = { - methodology: 'Counts the number of SNSY tokens in the Staking contract.', - ethereum: { - tvl: () => ({}), - staking: staking(SNSY_CLUB_STAKING_CONTRACT, SNSY_TOKEN_CONTRACT) - } -}; \ No newline at end of file diff --git a/projects/soarpulse/index.js b/projects/soarpulse/index.js deleted file mode 100644 index 074ad878486..00000000000 --- a/projects/soarpulse/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0xb29201EBB420b28Bb43052Ad58C23F43d6899F51"; - -module.exports = { - pulse: { - tvl: sumTokensExport({ owner: contract, tokens: [nullAddress]}), - }, -}; \ No newline at end of file diff --git a/projects/sobal/index.js b/projects/sobal/index.js deleted file mode 100644 index 36486b7fd8d..00000000000 --- a/projects/sobal/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -const V2_ADDRESS = '0x7122e35ceC2eED4A989D9b0A71998534A203972C'; // Vault - -const config = { - neon_evm: { fromBlock: 206166057, }, - base: { fromBlock: 2029566 } -} - -Object.keys(config).forEach(chain => { - const { fromBlock } = config[chain] - module.exports[chain] = { - tvl: onChainTvl(V2_ADDRESS, fromBlock, { blacklistedTokens: ['0x4440000000000000000000000000000000000002'] }) - } -}) diff --git a/projects/sobax-io/index.js b/projects/sobax-io/index.js deleted file mode 100644 index 809fb2ed510..00000000000 --- a/projects/sobax-io/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - -module.exports = { - polygon:{ - staking: staking('0xa326cF15E65FDEA84E63506ed56c122bC9E9A4BE', '0x0709E962221dd8AC9eC5c56f85ef789D3C1b9776'), - tvl: gmxExports({ vault: '0x0e1D69B5888a0411Fe0A05a5A4d2ACED4305f67c', }) - }, - zeta: { - staking: staking( '0xb1ADD1d94Bc7f05C5AefCFCA2558AD0ae49D269b', "0xb36377f643f67e5f9775f62b624e8907c214de3c"), - tvl: gmxExports({ vault: '0x0523f9FCa4c42A205dA7d57E9E7E65EeEE990d64', }) - } -}; diff --git a/projects/socean/index.js b/projects/socean/index.js deleted file mode 100644 index 35433fae130..00000000000 --- a/projects/socean/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens2, } = require('../helper/solana') - -// https://www.npmjs.com/package/@unstake-it/sol -// https://learn.sanctum.so/docs/contracts - -async function tvl() { - return sumTokens2({ solOwners: ['3rBnnH9TTgd3xwu48rnzGsaQkSr1hR64nY71DrDt6VrQ'],}) -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} diff --git a/projects/socialswap/index.js b/projects/socialswap/index.js deleted file mode 100644 index d57f5dc8b69..00000000000 --- a/projects/socialswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getUniTVL } = require('../helper/unknownTokens.js') - -const TRON_FACTORY_V1 = 'TN57jo2jGQz3v5YDybyLFHFtvkmRQvCNFz' -const TRON_FACTORY_V2 = 'TSzrq5j2Btn27eVcBAvZj9WQK3FhURamDQ' - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - tron: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: TRON_FACTORY_V1, useDefaultCoreAssets: true, }), - getUniTVL({ factory: TRON_FACTORY_V2, useDefaultCoreAssets: true, }), - ]) - } -} diff --git a/projects/sociogram/index.js b/projects/sociogram/index.js deleted file mode 100644 index 4bc1010be0b..00000000000 --- a/projects/sociogram/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ - owner: '0x25f5967B0FB3182d7fcacef3b53E1B2517a31dAf', - tokens: [ ADDRESSES.arbitrum.USDT ], - }), - } -}; diff --git a/projects/soda-protocol/index.js b/projects/soda-protocol/index.js deleted file mode 100644 index b406eea8516..00000000000 --- a/projects/soda-protocol/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require('../helper/solana') - -module.exports = { - timetravel: false, - solana: { tvl: sumTokensExport({ owner: '5cv5tMwrCMAVbwAC5icUPB5XB4qQpsaf3KaGP7Ygdomc'}), }, - methodology: 'TVL consists of deposits made to the protocol and borrowed tokens are not counted.' -} diff --git a/projects/sofa-org/index.js b/projects/sofa-org/index.js deleted file mode 100644 index abd00e4ae02..00000000000 --- a/projects/sofa-org/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { staking } = require('../helper/staking') -const { getConfig } = require('../helper/cache') - -const chains = { - ethereum: 'ethereum', - arbitrum: 'arbitrum', - bsc: 'bsc', - polygon: 'polygon', -} - -let config; -const tvl = async (api) => { - if (!config) { - config = await getConfig('sofa-org/vaults', 'https://raw.githubusercontent.com/sofa-org/sofa-gitbook/main/static/vaults.json') - } - - const { vaults = [], aVaults = [], crvtokens=[], crvUSDVaults = [] } = config[chains[api.chain]] - const tokens = await api.multiCall({ abi: 'address:collateral', calls: vaults }) - const tokens2 = await api.multiCall({ abi: 'address:collateral', calls: aVaults }) - const atokens = await api.multiCall({ abi: 'address:aToken', calls: aVaults }) - - return api.sumTokens({ tokensAndOwners2: [[tokens, tokens2, atokens, crvtokens].flat(), [vaults, aVaults, aVaults, crvUSDVaults].flat()] }) -} - -Object.keys(chains).forEach(chain => { - module.exports[chain] = { tvl } -}) - -module.exports.ethereum.staking = staking([ - '0xBEFB3aAD1dfb1660444f0D76A91261EF755B2B86', - '0xBFD58c8150cF7048D5C149fA2bAdDD194b8416fe', - '0xfA49f859a012e8b1795A81B23b21Db0bD40e7770', - '0x94Fe821E8Adde08aB97530D432Ff34A724FD7830', - '0x4a5B4049a4aFae31278d36768704872f73dA67D1', - '0x08c57aE48a89b6876A76dC618972Ef1602da7ED8', - '0x2B9aeA129B85F51A468274e7271434A83c3BB6b4', // StRCH -], '0x57b96d4af698605563a4653d882635da59bf11af') diff --git a/projects/sohei/index.js b/projects/sohei/index.js deleted file mode 100644 index 1814816d791..00000000000 --- a/projects/sohei/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const {compoundExports} = require('../helper/compound'); -const { nullAddress } = require('../helper/tokenMapping'); - -const ceth = "0x685d1f1a83ff64e75fe882e7818e4ad9173342ca"; - - - -module.exports = { - hallmarks: [ - [1680480000, "Team out of funds announced"] - ], - deadFrom: '2023-04-20', - arbitrum: compoundExports('0x9f750cf10034f3d7a18221aec0bddab7fc6f32ba', ceth, nullAddress, { blacklistedTokens: ['0x6e002cb9bf8c17409eeb6c593ef6548faddd2985']}), -} - -module.exports.arbitrum.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/solace-finance/config.js b/projects/solace-finance/config.js deleted file mode 100644 index dc3609b59ad..00000000000 --- a/projects/solace-finance/config.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - ethereum: { - solace: '0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', - lp: '0x9C051F8A6648a51eF324D30C235da74D060153aC', - uwp_address: '0x5efC0d9ee3223229Ce3b53e441016efC5BA83435', - tokens: [ - ADDRESSES.ethereum.FRAX, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - ] - }, - polygon: { - uwp_address: '0xd1108a800363C262774B990e9DF75a4287d5c075', - solace: '0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', - tokens: [ - ADDRESSES.polygon.WMATIC_2, - ADDRESSES.polygon.FRAX, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.WBTC, - ] - }, - aurora: { - uwp_address: '0x4A6B0f90597e7429Ce8400fC0E2745Add343df78', - solace: '0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', - lp: '0xdDAdf88b007B95fEb42DDbd110034C9a8e9746F2', - tokens: [ - ADDRESSES.aurora.NEAR, - ADDRESSES.aurora.AURORA, - ADDRESSES.aurora.FRAX, - ADDRESSES.aurora.USDC_e, - ADDRESSES.aurora.USDT_e, - "0xe3520349F477A5F6EB06107066048508498A291b", - "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB", - "0xf4eb217ba2454613b15dbdea6e5f22276410e89e", - ] - } -} \ No newline at end of file diff --git a/projects/solace-finance/index.js b/projects/solace-finance/index.js deleted file mode 100644 index d272f8ce787..00000000000 --- a/projects/solace-finance/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const config = require('./config') - -module.exports = {} - -function setChainTVL(chain) { - const { lp, uwp_address, tokens, solace, } = config[chain] - module.exports[chain] = { - tvl: async (api) => api.sumTokens({ tokens, owner: uwp_address}) - } - if (lp) - module.exports[chain].pool2 = (api) => sumTokens2({ api, tokens: [lp], owner: uwp_address, resolveLP: true}) - - if (solace) - module.exports[chain].staking = (api) => sumTokens2({ api, tokens: [solace], owner: uwp_address}) -} - -Object.keys(config).forEach(setChainTVL) diff --git a/projects/solana_miner/index.js b/projects/solana_miner/index.js deleted file mode 100644 index c7acdf35239..00000000000 --- a/projects/solana_miner/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); - -async function tvl() { - return sumTokens2({ solOwners: ['HitZJAWpuxC86WnxG64r7dntfo1eK4Aj8KRCnttqcB2Y']}) -} - -module.exports = { - hallmarks: [ - [1704834000, "Rug Pull"] - ], - deadFrom: 1704834000, - timetravel: false, - methodology: - "Solana Miner is designed to provide a user-friendly mining experience, minimizing technical barriers and facilitating newcomers. Our product focuses not only on building a community but also on delivering passive income for investors. See more: https://solanaminer.xyz", - solana: { tvl }, -}; diff --git a/projects/solanafarm/index.js b/projects/solanafarm/index.js deleted file mode 100644 index 37876e5c339..00000000000 --- a/projects/solanafarm/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const MasterChefContract = "0x378085c11dc493ED90BD582ddA2F248e98388DaD"; -//const masterchef = "0x13f57Af2042365C03894ECAA81d07D7C29f4B5a9" -const SOL = "0xFEa6aB80cd850c3e63374Bc737479aeEC0E8b9a1"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(MasterChefContract, "bsc", SOL), - methodology: "TVL includes all farms in MasterChef contract", -}; diff --git a/projects/solanahub-sol/index.js b/projects/solanahub-sol/index.js deleted file mode 100644 index c874fd186b8..00000000000 --- a/projects/solanahub-sol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('ECRqn7gaNASuvTyC5xfCUjehWZCSowMXstZiM5DNweyB', api) -} - -module.exports ={ - timetravel: false, - doublecounted: true, - methodology: "SolanaHub Staked SOL (hubSOL) is a tokenized representation on your staked SOL + stake rewards", - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/solanax.js b/projects/solanax.js deleted file mode 100644 index 75cf556fa25..00000000000 --- a/projects/solanax.js +++ /dev/null @@ -1,10 +0,0 @@ - -module.exports = { - misrepresentedTokens: true, - methodology: `TVL is fetched by making calls to the Solanax API (https://solanax.org/api/data/)`, - solana: { - tvl: () => ({}), - } -}; - -module.exports.deadFrom = '2023-02-09' \ No newline at end of file diff --git a/projects/solar-studios/index.js b/projects/solar-studios/index.js deleted file mode 100644 index 76fe2986299..00000000000 --- a/projects/solar-studios/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { getProvider, sumTokens2 } = require("../helper/solana"); -const { Program, } = require("@project-serum/anchor"); - - -async function tvl(api) { - - /* const provider = getProvider(api.chain) - const programId = 'sooGfQwJ6enHfLTPfasFZtFR7DgobkJD77maDNEqGkD' - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const data = await program.account.poolState.all() - const tokenAccounts = data.map(({ account: { token0Vault, token1Vault }}) => ([token0Vault, token1Vault,])).flat() - return sumTokens2({ tokenAccounts, api, }) */ - const { data} = await getConfig('solar-studios-tvl', 'https://api.solarstudios.co/pools/info/list?poolType=all&poolSortField=liquidity&sortType=desc&pageSize=1000&page=1') - const tokensAndOwners = [] - data.data.map(i => { - tokensAndOwners.push([i.mintA.address, i.id]) - tokensAndOwners.push([i.mintB.address, i.id]) - }) - return sumTokens2({ tokensAndOwners, api, }) -} - -module.exports = { - timetravel: false, - eclipse: { tvl, }, -} diff --git a/projects/solarbeam/index.js b/projects/solarbeam/index.js deleted file mode 100644 index fd8bb980a4c..00000000000 --- a/projects/solarbeam/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require("@defillama/sdk"); - -async function stableDexTVL(api) { - const logs = await getLogs2({ - api, - factory: '0xa0a1EBf6bd49e455de2302a86584FD8A0eDD3344', - eventAbi: 'event NewSwapPool (address indexed deployer, address swapAddress, address[] pooledTokens)', - fromBlock: 1454692, - }) - return api.sumTokens({ ownerTokens: logs.map(i => [i.pooledTokens, i.swapAddress]) }) -} - -const dexTVL = getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x049581aEB6Fe262727f290165C29BDAB065a1B68', - coreAssets: [ - '0xf50225a84382c74CbdeA10b0c176f71fc3DE0C4d', // moonriver - "0x98878B06940aE243284CA214f92Bb71a2b032B8A", // WMOVR - // ADDRESSES.moonriver.USDT, // usdt - ADDRESSES.moonriver.USDC, // usdc - ADDRESSES.moonriver.ETH, // eth - ] -}) - -module.exports = { - misrepresentedTokens: true, - moonriver: { - tvl: sdk.util.sumChainTvls([dexTVL, stableDexTVL,]), - } -} diff --git a/projects/solarbeam/subgraphs.js b/projects/solarbeam/subgraphs.js deleted file mode 100644 index 16ec23f2c2f..00000000000 --- a/projects/solarbeam/subgraphs.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - moonriver: { - tvl: getUniTVL({ factory: '0x049581aEB6Fe262727f290165C29BDAB065a1B68', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/solarflare.js b/projects/solarflare.js deleted file mode 100644 index eb9c710f262..00000000000 --- a/projects/solarflare.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - moonbeam: { - tvl: getUniTVL({ factory: '0x19B85ae92947E0725d5265fFB3389e7E4F191FDa', useDefaultCoreAssets: true }), - } -} diff --git a/projects/solayer-ssol/index.js b/projects/solayer-ssol/index.js deleted file mode 100644 index 55cb7764237..00000000000 --- a/projects/solayer-ssol/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sumTokens2, getConnection, getAssociatedTokenAddress, } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const connection = getConnection(); - - // add native SOL staking - const stakeAccount = await connection.getAccountInfo(new PublicKey('po1osKDWYF9oiVEGmzKA4eTs8eMveFRMox3bUKazGN2')) - api.add(ADDRESSES.solana.SOL, Number(stakeAccount.data.readBigUint64LE(258))) - - // get LST details - const data = await connection.getProgramAccounts(new PublicKey('sSo1iU21jBrU9VaJ8PJib1MtorefUV4fzC9GURa2KNn'), { - filters: [{ dataSize: 74, },], - }) - - // Build list of token accounts by deriving ATAs for each LST-vault pair - const tokenAccounts = data.map((i) => { - const offset = 8 - const lstMint = new PublicKey(i.account.data.slice(offset + 0, offset + 32)); - const vaultPubkey = new PublicKey(i.pubkey.toString()); - - // Derive the ATA for this LST and vault - const ata = getAssociatedTokenAddress(lstMint, vaultPubkey); - - return ata - }); - - - return sumTokens2({ - api, - tokenAccounts, - blacklistedTokens: [ - 'sSo1wxKKr6zW2hqf5hZrp2CawLibcwi1pMBqk5bg2G4', - 'testqcAoCvfFpuFNtdmrBnBMSfFoXKkSTJ3ky6cPKjx', - ] - }) -} - -module.exports = { - timetravel: false, - methodology: "TVL is calculated by summing all re-staked assets.", - solana: { tvl }, -}; diff --git a/projects/solayer-susd/index.js b/projects/solayer-susd/index.js deleted file mode 100644 index 685aaf1439e..00000000000 --- a/projects/solayer-susd/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl() { - // Sum up assets in sUSD pool - return sumTokens2({ - tokensAndOwners: [ - ['4MmJVdwYN8LwvbGeCowYjSx7KoEi6BJWg8XXnW4fDDp6', 'FhVcYNEe58SMtxpZGnTu2kpYJrTu2vwCZDGpPLqbd2yG'], - [ADDRESSES.solana.USDC, 'FhVcYNEe58SMtxpZGnTu2kpYJrTu2vwCZDGpPLqbd2yG'], - ] - }) -} - -module.exports = { - timetravel: false, - doublecounted: true, - methodology: "sUSD TVL is calculated by summing all assets backing the stablecoin", - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/solayer/index.js b/projects/solayer/index.js deleted file mode 100644 index 589a239dfb6..00000000000 --- a/projects/solayer/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { sumTokens2, getConnection, } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const connection = getConnection(); - - // add SOL staking - const stakeAccount = await connection.getAccountInfo(new PublicKey('po1osKDWYF9oiVEGmzKA4eTs8eMveFRMox3bUKazGN2')) - api.add(ADDRESSES.solana.SOL, Number(stakeAccount.data.readBigUint64LE(258))) - - // get LST details - const data = await connection.getProgramAccounts(new PublicKey('sSo1iU21jBrU9VaJ8PJib1MtorefUV4fzC9GURa2KNn'), { - filters: [{ dataSize: 74, },], - }) - const tokensAndOwners = data.map((i) => { - const offset = 8 - const lstMint = new PublicKey(i.account.data.slice(offset + 0, offset + 32)); - return [lstMint.toString(), i.pubkey.toString()] - }) - - // add SUSD Backing - tokensAndOwners.push( - ['4MmJVdwYN8LwvbGeCowYjSx7KoEi6BJWg8XXnW4fDDp6', 'FhVcYNEe58SMtxpZGnTu2kpYJrTu2vwCZDGpPLqbd2yG'], - [ADDRESSES.solana.USDC, 'FhVcYNEe58SMtxpZGnTu2kpYJrTu2vwCZDGpPLqbd2yG'], - ) - - return sumTokens2({ - balances: api.getBalances(), tokensAndOwners, blacklistedTokens: [ - 'sSo1wxKKr6zW2hqf5hZrp2CawLibcwi1pMBqk5bg2G4', - 'testqcAoCvfFpuFNtdmrBnBMSfFoXKkSTJ3ky6cPKjx', - ] - }) -} - -module.exports = { - timetravel: false, - methodology: "TVL is calculated by summing all re-staked assets.", - solana: { tvl }, -}; diff --git a/projects/solbank-finance/index.js b/projects/solbank-finance/index.js deleted file mode 100644 index bae3e57047b..00000000000 --- a/projects/solbank-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require('../helper/solana'); - -const contractAddress = '3Q3pE1izgCeAtTR23eufZy5vCEGtpWLBQcGD2HGd1cbU'; - -module.exports = { - solana: { - tvl: sumTokensExport({ owners: [contractAddress], blacklistedTokens: ['8twuNzMszqWeFbDErwtf4gw13E6MUS4Hsdx5mi3aqXAM'] }), - staking: sumTokensExport({ owners: [contractAddress], tokens: ['8twuNzMszqWeFbDErwtf4gw13E6MUS4Hsdx5mi3aqXAM'] }), - }, -}; \ No newline at end of file diff --git a/projects/solend/index.js b/projects/solend/index.js deleted file mode 100644 index a4105cbda5c..00000000000 --- a/projects/solend/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, decodeAccount, getMultipleAccounts, } = require("../helper/solana"); -const { getConfig } = require('../helper/cache') - -const solendConfigEndpoint = "https://api.solend.fi/v1/markets/configs?scope=all&deployment=production"; - -async function borrowed(api) { - const markets = (await getConfig('solend', solendConfigEndpoint)) - const reserves = [] - - for (const market of markets) - for (const reserve of market.reserves) - reserves.push(reserve.address) - - const infos = await getMultipleAccounts(reserves) - infos.forEach(i => { - const { info: { liquidity } } = decodeAccount('reserve', i) - const amount = liquidity.borrowedAmountWads.toString() / 1e18 - api.add(liquidity.mintPubkey.toString(), amount) - }) -} - -async function tvl() { - const markets = (await getConfig('solend', solendConfigEndpoint)) - return sumTokens2({ owners: markets.map(i => i.authorityAddress) }); -} - -// TODO: Find a dynamic way to obtain this mapping -const TOKEN_MINT_TO_TOKEN2022_MINT = { - [ADDRESSES.solana.SOL]: ADDRESSES.solana.SOL, - '8gEs8igcTdyrKzvEQh3oPpZm4HqNYozyczBCPQmZrsyp': 'GU7NS9xCwgNPiAdJ69iusFrRfawjDDPjeMBovhV1d4kn', - '7rCPN5Lcaxomf92ssF4M9dd8FVMoM43NLsWZyMd6DpNp': ADDRESSES.eclipse.WIF, - '7mZCsut9beY53V9VWWovrRTBurGv6dozAmuhbwbyHsqk': ADDRESSES.eclipse.SOL, - 'Hke78vy1Mzzt5eEJ2jMeKtdqddedDe2rmzjsq16p9ETW': ADDRESSES.eclipse.USDC, -}; - -async function eclipseTvl(api) { - const balances = await sumTokens2({ api, owners: ['5Gk1kTdDqqacmA2UF3UbNhM7eEhVFvF3p8nd9p3HbXxk'] }); - - const token2022MappedBalances = {}; - for (const [key, value] of Object.entries(balances)) { - const token = key.split(':')[1]; - if (TOKEN_MINT_TO_TOKEN2022_MINT[token]) { - token2022MappedBalances[`eclipse:${TOKEN_MINT_TO_TOKEN2022_MINT[token]}`] = value; - } else { - token2022MappedBalances[key] = value; - } - } - - return token2022MappedBalances; -} - -module.exports = { - timetravel: false, - solana: { - tvl, - borrowed, - }, - eclipse: { tvl: eclipseTvl }, - methodology: - "TVL consists of deposits made to the protocol and like other lending protocols, borrowed tokens are not counted. Coingecko is used to price tokens.", - hallmarks: [ - [1635940800, "SLND launch"], - [1667826000, "FTX collapse, SOL whale liquidated"], - ], -}; - diff --git a/projects/solera/index.js b/projects/solera/index.js deleted file mode 100644 index da68f1e0bbe..00000000000 --- a/projects/solera/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - methodology: methodologies.lendingMarket, - plume: { tvl: () => ({ }) }, - plume_mainnet: aaveExports("plume_mainnet", undefined, undefined, ['0xEE343bd811500ca27995Bc83D7ec2bacb63680d0'], { v3: true }), -} diff --git a/projects/solfarm.js b/projects/solfarm.js deleted file mode 100644 index 50bf77972e5..00000000000 --- a/projects/solfarm.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens2 } = require('./helper/solana') - -async function tvl() { - return sumTokens2({ owner: '8gEGZbUfVE1poBq71VHKX9LU7ca4x8wTUyZgcbyQe51s'}) -} - -module.exports = { - hallmarks:[ - [1667865600, "FTX collapse"] -], - timetravel: false, - solana: { tvl } -} diff --git a/projects/solfire-protocol/index.js b/projects/solfire-protocol/index.js deleted file mode 100644 index 3e6f4cf3c5b..00000000000 --- a/projects/solfire-protocol/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - deadFrom: 1648765747, - solana: { - tvl: () => ({}), - }, - methodology: 'TVL consists of deposits made to the protocol', -} diff --git a/projects/solid-world/abi.json b/projects/solid-world/abi.json deleted file mode 100644 index de077462e31..00000000000 --- a/projects/solid-world/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "getTotalAmounts": "function getTotalAmounts() external view returns (uint256 total0, uint256 total1)", - "getBatchCategory": "function getBatchCategory(uint256 batchId) external view returns (uint256 categoryId)", - "getBatch": "function getBatch(uint256 batchId) external view returns (uint256 id, uint256 projectId, uint256 collateralizedCredits, address supplier, uint32 certificationDate, uint16 vintage, uint8 status, uint24 batchTA, bool isAccumulating)", - "getCategory": "function getCategory(uint256 categoryId) external view returns (uint256 volumeCoefficient, uint40 decayPerSecond, uint16 maxDepreciation, uint24 averageTA, uint32 lastCollateralizationTimestamp, uint256 totalCollateralized, uint256 lastCollateralizationMomentum)", - "getCategoryToken": "function getCategoryToken(uint256 categoryId) external view returns (address token)", - "totalSupply": "uint256:totalSupply", - "balanceOf": "erc20:balanceOf", - "token0": "address:token0", - "token1": "address:token1" -} diff --git a/projects/solid-world/batch-valuation.js b/projects/solid-world/batch-valuation.js deleted file mode 100644 index 80564b015db..00000000000 --- a/projects/solid-world/batch-valuation.js +++ /dev/null @@ -1,31 +0,0 @@ -const { computeValuation } = require("./math"); - -async function valuateBatches(batches, categories, batchesSupply) { - const batchValuationDetails = batches.flatMap((batch) => { - const category = categories[batch.categoryId]; - const supply = batchesSupply[batch.id.toString()]; - return [ - { - creditsAmount: batch.collateralizedCredits.toString(), - timeAppreciation: batch.batchTA.toString(), - certificationDate: batch.certificationDate.toString() + "000", - crispToken: category.token - }, - { - creditsAmount: supply.minus(batch.collateralizedCredits.toString()).toString(), - timeAppreciation: category.averageTA.toString(), - certificationDate: batch.certificationDate.toString() + "000", - crispToken: category.token - } - ]; - }); - - return batchValuationDetails.map(({ crispToken, ...details }) => ({ - crispToken, - amount: computeValuation(details) - })); -} - -module.exports = { - valuateBatches -}; diff --git a/projects/solid-world/categories-and-batches.js b/projects/solid-world/categories-and-batches.js deleted file mode 100644 index 23a950466df..00000000000 --- a/projects/solid-world/categories-and-batches.js +++ /dev/null @@ -1,76 +0,0 @@ -const { config } = require("./config"); -const abi = require("./abi.json"); - -async function fetchCategoriesAndBatches(api, batchIds) { - const allCategoryIds = new Set(); - const allBatches = []; - - for (let i = 0; i < batchIds.length; i += 10) { - const ids = batchIds.slice(i, i + 10); - const [categoryIds, batches] = await fetchCategoryIdsAndBatches(api, ids); - categoryIds.forEach(id => allCategoryIds.add(id.toString())); - allBatches.push(...batches); - } - - const categories = await fetchCategories(api, Array.from(allCategoryIds)); - - return [categories, allBatches]; -} - -async function fetchCategoryIdsAndBatches(api, forwardContractBatchIds) { - const [categoryIds, batches] = await Promise.all([ - api.multiCall({ - calls: forwardContractBatchIds.map(id => ({ - target: config[api.chain].SolidWorldManager, - params: [id] - })), - abi: abi.getBatchCategory - }), - api.multiCall({ - calls: forwardContractBatchIds.map(id => ({ - target: config[api.chain].SolidWorldManager, - params: [id] - })), - abi: abi.getBatch - }) - ]); - - batches.forEach((batch, i) => { - batch.categoryId = categoryIds[i].toString(); - }); - - return [categoryIds, batches]; -} - -async function fetchCategories(api, categoryIds) { - const [categories, categoryTokens] = await Promise.all([ - api.multiCall({ - calls: categoryIds.map(id => ({ - target: config[api.chain].SolidWorldManager, - params: [id] - })), - abi: abi.getCategory - }), - api.multiCall({ - calls: categoryIds.map(id => ({ - target: config[api.chain].SolidWorldManager, - params: [id] - })), - abi: abi.getCategoryToken - }) - ] - ); - - const result = {}; - categoryIds.forEach((id, i) => { - const category = categories[i]; - category.token = categoryTokens[i]; - result[id] = category; - }); - - return result; -} - -module.exports = { - fetchCategoriesAndBatches -}; diff --git a/projects/solid-world/config.js b/projects/solid-world/config.js deleted file mode 100644 index 1b645e0272b..00000000000 --- a/projects/solid-world/config.js +++ /dev/null @@ -1,22 +0,0 @@ -const config = { - polygon: { - SolidWorldManager: "0xe967aEBdbf137C2ddD4aaF076E87177c4EBEB851", - ForwardContractBatchToken: "0x029090aC92b0BAAF20Ccef615BAfD268f08Db8fA", - pools: [ - { - crispToken: "0xEF6Ab48ef8dFe984FAB0d5c4cD6AFF2E54dfdA14", - hypervisor: "0x4a39cBb8198376AB08c24e596fF5E668c3ca269E", - stakingContract: "0xaD7Ce5Cf8E594e1EFC6922Ab2c9F81d7a0E14337" - }, - { - crispToken: "0x672688C6Ee3E750dfaA4874743Ef693A6f2538ED", - hypervisor: "0x27420e641CE96a6C0191dbFA0A9500eaCe33531d", - stakingContract: "0xaD7Ce5Cf8E594e1EFC6922Ab2c9F81d7a0E14337" - } - ] - } -}; - -module.exports = { - config -}; diff --git a/projects/solid-world/forward-contract-batch-supply.js b/projects/solid-world/forward-contract-batch-supply.js deleted file mode 100644 index 88a75913f33..00000000000 --- a/projects/solid-world/forward-contract-batch-supply.js +++ /dev/null @@ -1,81 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require("../helper/cache/getLogs"); -const { config } = require("./config"); -const BigNumber = require("bignumber.js"); - -const nullTopic = '0x0000000000000000000000000000000000000000000000000000000000000000' -const abis = { - transferSingle: "event TransferSingle (address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)", - transferBatch: "event TransferBatch (address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)", -} - -async function fetchForwardContractBatchSupplies(api) { - const mintLogs = await getLogs({ - api, - onlyArgs: true, - fromBlock: 42782566, - topics: ['0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', null, nullTopic], - eventAbi: abis.transferSingle, - extraKey: 'mint-transfer-single', - target: config[api.chain].ForwardContractBatchToken - }); - const burnLogs = await getLogs({ - api, - onlyArgs: true, - fromBlock: 42782566, - topics: ['0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', null, null, nullTopic], - eventAbi: abis.transferSingle, - extraKey: 'burn-transfer-single', - target: config[api.chain].ForwardContractBatchToken - }); - const transferBatchBurnLogs = await getLogs({ - api, - onlyArgs: true, - fromBlock: 42782566, - topics: ["0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb", null, null, nullTopic], - eventAbi: abis.transferBatch, - extraKey: 'burn-transfer-batch', - target: config[api.chain].ForwardContractBatchToken - }); - - const supply = {}; - - mintLogs - .forEach(mint => { - const batchId = mint.id.toString(); - supply[batchId] = (supply[batchId] || BigNumber(0)).plus(mint.value.toString()); - }); - burnLogs - .map(burn => { - const batchId = burn.id.toString(); - if (!supply[batchId]) { - throw new Error(`Burned batch ${batchId} without minting it first.`); - } - - supply[batchId] = supply[batchId].minus(burn.value.toString()); - - if (supply[batchId].isNegative()) { - throw new Error(`Burned more than minted for batch ${batchId}`); - } - }); - - transferBatchBurnLogs - .forEach(batchBurn => batchBurn.ids.forEach((burnId, i) => { - const batchId = burnId.toString(); - if (!supply[batchId]) { - throw new Error(`Burned batch ${batchId} without minting it first.`); - } - - supply[batchId] = supply[batchId].minus(batchBurn.values[i].toString()); - - if (supply[batchId].isNegative()) { - throw new Error(`Burned more than minted for batch ${batchId}`); - } - })); - - return supply; -} - -module.exports = { - fetchForwardContractBatchSupplies -}; diff --git a/projects/solid-world/index.js b/projects/solid-world/index.js deleted file mode 100644 index 5383c2e4a1b..00000000000 --- a/projects/solid-world/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const { config } = require("./config"); -const abi = require("./abi.json"); -const { fetchForwardContractBatchSupplies } = require("./forward-contract-batch-supply"); -const { fetchCategoriesAndBatches } = require("./categories-and-batches"); -const { valuateBatches } = require("./batch-valuation"); - -// the value of the current on-chain forward credits, based on their exchange rate to CRISP tokens -async function tvl(api) { - const batchSupplies = await fetchForwardContractBatchSupplies(api); - const [categories, batches] = await fetchCategoriesAndBatches(api, Object.keys(batchSupplies)); - const batchesValuation = await valuateBatches(batches, categories, batchSupplies); - - batchesValuation.forEach(({ crispToken, amount }) => { - api.add(crispToken, amount) - }); -} - -async function pool2(api) { - const chainConfig = config[api.chain]; - const [token0s, token1s, totalAmounts, totalSupplies, stakedAmounts] = await Promise.all([ - api.multiCall({ calls: chainConfig.pools.map(pool => pool.hypervisor), abi: abi.token0 }), - api.multiCall({ calls: chainConfig.pools.map(pool => pool.hypervisor), abi: abi.token1 }), - api.multiCall({ calls: chainConfig.pools.map(pool => pool.hypervisor), abi: abi.getTotalAmounts }), - api.multiCall({ calls: chainConfig.pools.map(pool => pool.hypervisor), abi: abi.totalSupply }), - api.multiCall({ - calls: chainConfig.pools.map(pool => ({ - target: pool.hypervisor, - params: [pool.stakingContract] - })), abi: abi.balanceOf - }) - ]); - - // zip the results - const poolStats = chainConfig.pools.map((_, i) => ({ - token0: token0s[i], - token1: token1s[i], - totalAmount: totalAmounts[i], - totalSupply: totalSupplies[i], - stakedAmount: stakedAmounts[i] - })); - - poolStats.forEach((e) => { - const ratio = e.stakedAmount /e.totalSupply - api.add(e.token0, e.totalAmount.total0 *ratio) - api.add(e.token1, e.totalAmount.total1 *ratio) - }); -} - -module.exports = { - start: '2023-05-19', // Fri May 19 2023 06:30:00 GMT+0000 - methodology: `TVL is a measure of the health of the Solid World ecosystem. The TVL can be looked at from 2 perspectives. The 1st perspective, "RWA" valuation, represents the total value of the tokenized forward carbon credits, and is computed as the present value of the on-chain forward credits (ERC1155), based on their exchange rate to CRISP tokens (ERC20) and subsequent USDC value, summed-up.The 2nd perspective, "pool2", represents the total value locked up in our staking contract, and it's calculated by adding up the value of all the LP tokens that are staked. The LP tokens represent the amount of liquidity that has been provided to the Solid World platform.`, - polygon: { - tvl, - pool2 - } -}; diff --git a/projects/solid-world/math.js b/projects/solid-world/math.js deleted file mode 100644 index 945690bec8d..00000000000 --- a/projects/solid-world/math.js +++ /dev/null @@ -1,60 +0,0 @@ -const BigNumber = require("bignumber.js"); -const SECONDS_IN_WEEK = 604800; -const DAYS_IN_YEAR = 365; - -function computeTimeAppreciationDiscount( - timeAppreciation, - certificationDate -) { - const yearsTillCertification = yearsBetween(certificationDate); - if (yearsTillCertification === 0) { - return 1; - } - - // adjusting for 6 decimals - const timeAppreciationPercentage = Number(timeAppreciation) / 1_000_000; - return Math.pow(1 - timeAppreciationPercentage, yearsTillCertification); -} - -function yearsBetween( - endDate, - startDate = new Date().getTime() -) { - endDate = Number(endDate); - - if (endDate <= startDate) { - return 0; - } - - const diff = endDate - startDate; - return toYears(Math.floor(diff / 1000)); -} - -function toYears(seconds) { - const weeks = Math.floor(seconds / SECONDS_IN_WEEK); - if (weeks === 0) { - return 0; - } - - const days = weeks * 7; - - return days / DAYS_IN_YEAR; -} - - -// creditsAmount * 10e18 * (1 - timeAppreciation) ** yearsTillCertification -function computeValuation({ creditsAmount, timeAppreciation, certificationDate }) { - const timeAppreciationDiscount = computeTimeAppreciationDiscount( - timeAppreciation, - certificationDate - ); - - return BigNumber(creditsAmount) - .times(BigNumber(10).pow(18)) - .times(timeAppreciationDiscount) - .toFixed(0); -} - -module.exports = { - computeValuation -}; diff --git a/projects/solid-yield/ethereum_constants.js b/projects/solid-yield/ethereum_constants.js deleted file mode 100644 index ed93d4c5d6d..00000000000 --- a/projects/solid-yield/ethereum_constants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsEthereum = [ - { - name: "Solid USD", - vault: "0x6E575AE5e1A12e910641183F555Fad62eD1481F2", - accountant: "0x10f3996904F1fA09Db48e5d46AAdD6D9fd516eFe", - teller: "0x43F2face25Bb22d296B9Ab643Dac7755D89632E5", - lens: "0x074F543E7DaA7C67F77bfD8C41C79127c4dd80d9", - startBlock: 22651939, - baseAsset: ADDRESSES.ethereum.USDC, - }, -]; - -module.exports = { - boringVaultsEthereum, -}; diff --git a/projects/solid-yield/fuse_constants.js b/projects/solid-yield/fuse_constants.js deleted file mode 100644 index 649dddd3c81..00000000000 --- a/projects/solid-yield/fuse_constants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Fuse = [ - { - name: "Solid USD", - vault: "0x75333830E7014e909535389a6E5b0C02aA62ca27", - accountant: "0x47A5e832E1178726dd13AdD762774A704878AD98", - teller: "0x220d4667AA06E0Aa39f62c601690848f2e48BC15", - lens: "0x8478Cc70B7e389212D301Fef4f9aDfd4F869f28D", - startBlock: 36144442, - baseAsset: ADDRESSES.fuse.USDC_3, - } -]; - -module.exports = { - boringVaultsV0Fuse -}; diff --git a/projects/solid-yield/helper_methods.js b/projects/solid-yield/helper_methods.js deleted file mode 100644 index ef84b167188..00000000000 --- a/projects/solid-yield/helper_methods.js +++ /dev/null @@ -1,91 +0,0 @@ -async function sumBoringTvl({ vaults, api, ownersToDedupe = [] }) { - - const boringCalls = vaults.map((vault) => ({ - target: vault.lens, - params: [vault.id, vault.accountant], - })); - - const boringBalances = await api.multiCall({ - abi: "function totalAssets(address boringVault, address accountant) view returns (address asset, uint256 assets)", - calls: boringCalls, - }); - - const assets = boringBalances.map(b => b.asset); - const bals = boringBalances.map(b => b.assets); - const vaultAddresses = vaults.map(v => v.id); - const lensAddresses = vaults.map(v => v.lens); - - await deduplicateAndAdd({ - vaults: vaultAddresses, - assets, - bals, - api, - ownersToDedupe, - type: 'Boring', - lensAddresses - }); -} - -async function deduplicateAndAdd({ vaults, assets, bals, api, ownersToDedupe = [], type, lensAddresses }) { - if (!vaults.length || !ownersToDedupe.length) { - assets.forEach((a, i) => api.add(a, bals[i])); - return; - } - - // Prepare all calls at once - const [sharesToIgnore, totalShares] = await Promise.all([ - // Get all shares to ignore in one batch - type === 'Boring' - ? api.multiCall({ - calls: vaults.flatMap((target, idx) => - ownersToDedupe.map(owner => ({ - target: lensAddresses[idx], - params: [owner.id, target], - })) - ), - abi: "function balanceOf(address account, address vault) view returns (uint256)", - }) - : api.multiCall({ - calls: vaults.flatMap(target => - ownersToDedupe.map(owner => ({ - target, - params: [owner.id], - })) - ), - abi: "erc20:balanceOf", - }), - // Get all total supplies in one batch - api.multiCall({ - calls: vaults.map(vault => ({ - target: vault, - })), - abi: "uint256:totalSupply", - }) - ]); - - // Process shares to ignore - const chunkedShares = chunk(sharesToIgnore, ownersToDedupe.length); - const summedShares = chunkedShares.map(shares => - shares.reduce((sum, share) => sum + Number(share), 0) - ); - - // Calculate ratios - const ratios = totalShares.map((share, i) => { - return 1 - summedShares[i] / share; - }); - - assets.forEach((a, i) => api.add(a, bals[i] * ratios[i])); -} - -// Helper function to chunk array -function chunk(array, size) { - const chunks = []; - for (let i = 0; i < array.length; i += size) { - chunks.push(array.slice(i, i + size)); - } - return chunks; -} - -module.exports = { - sumBoringTvl, -}; \ No newline at end of file diff --git a/projects/solid-yield/index.js b/projects/solid-yield/index.js deleted file mode 100644 index ece248b3225..00000000000 --- a/projects/solid-yield/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const { boringVaultsEthereum } = require("./ethereum_constants"); -const { boringVaultsV0Fuse } = require("./fuse_constants"); -const { sumBoringTvl } = require("./helper_methods"); - -// Returns a list of active boring vault objects -function filterActiveBoringVaults(vaults, blockHeight) { - return vaults - .filter((vault) => vault.startBlock <= blockHeight && vault.vault) - .map((vault) => ({ - id: vault.vault, - lens: vault.lens, - accountant: vault.accountant, - teller: vault.teller - })); -} - -async function chainTvl(api, boringVaults) { - const block = await api.getBlock() - - const activeBoringVaults = filterActiveBoringVaults(boringVaults, block); - - const allVaults = [...activeBoringVaults].filter(v => v.id); - - if (activeBoringVaults.length > 0) { - await sumBoringTvl({ - api, - vaults: activeBoringVaults, - ownersToDedupe: allVaults, - }); - } - - return api.getBalances(); -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - start: 1749279179, - doublecounted: true, - ["ethereum"]: { tvl: (api) => chainTvl(api, boringVaultsEthereum) }, - ["fuse"]: { tvl: (api) => chainTvl(api, boringVaultsV0Fuse) }, -}; diff --git a/projects/solid/index.js b/projects/solid/index.js deleted file mode 100644 index 64f13b98dc3..00000000000 --- a/projects/solid/index.js +++ /dev/null @@ -1,133 +0,0 @@ -/* SOLID Protocol (Terra, phoenix-1) — Collateral-only TVL adapter - * Now returns BALANCES ONLY (no price/exchange-rate math in adapter). - * ampLUNA / bLUNA pricing to be handled by DefiLlama coin-prices infra. - */ - -const fetch = require('node-fetch') - -// ----- LCD endpoint (overridable) ----- -const LCD = process.env.TERRA_LCD || 'https://terra-api.cosmosrescue.dev:8443' - -// ----- Addresses ----- -const ADDR = { - // CW20 collaterals - ampLUNA: { - token: 'terra1ecgazyd0waaj3g7l9cmy5gulhxkps2gmxu9ghducvuypjq68mq2s5lvsct', - custody: 'terra18uxq2k6wpsqythpakz5n6ljnuzyehrt775zkdclrtdtv6da63gmskqn7dq', - }, - bLUNA: { - token: 'terra17aj4ty4sz4yhgm08na8drc0v03v2jwr3waxcqrwhajj729zhl7zqnpc0ml', - custody: 'terra1fyfrqdf58nf4fev2amrdrytq5d63njulfa7sm75c0zu4pnr693dsqlr7p9', - }, - wSOL: { - token: 'terra1ctelwayk6t2zu30a8v9kdg3u2gr0slpjdfny5pjp7m3tuquk32ysugyjdg', - custody: 'terra1e32q545j90agakl32mtkacq05990cnr54czj8wp0wv3nttkrhwlqr9spf5', - }, - wBNB: { - token: 'terra1xc7ynquupyfcn43sye5pfmnlzjcw2ck9keh0l2w2a4rhjnkp64uq4pr388', - custody: 'terra1fluajm00hwu9wyy8yuyf4zag7x5pw95vdlgkhh8w03pfzqj6hapsx4673t', - }, - - // IBC/native denoms (bank module) - USDC: { - denom: 'ibc/2C962DAB9F57FE0921435426AE75196009FAA1981BF86991203C8411F8980FDB', - custody: 'terra1hdu4t2mrrv98rwdzps40va7me3xjme32upcw36x4cda8tx9cee9qrwdhsl', - }, - wETH: { - denom: 'ibc/BC8A77AFBD872FDC32A348D3FB10CC09277C266CFE52081DE341C7EC6752E674', - custody: 'terra1lz9048tzegtspy35chwq2lmlhtwz8qq4jdvpua8yslskfnpk6yfsw06090', - }, - wBTC: { - denom: 'ibc/05D299885B07905B6886F554B39346EA6761246076A1120B1950049B92B922DD', - custody: 'terra163nmjy97n7dqpdaxp6gts0xrnchn2nsg2d40wrgqnpguf0v9rvdslytfpz', - }, -} - -// ----- helpers ----- -function b64(obj) { - return Buffer.from(JSON.stringify(obj)).toString('base64') -} - -// robust smart query: path form `/smart/{b64}` works across LCDs -async function smartQuery(contract, msgObj) { - const url = `${LCD}/cosmwasm/wasm/v1/contract/${contract}/smart/${b64(msgObj)}` - const res = await fetch(url) - if (!res.ok) throw new Error(`wasm smart query failed: ${res.status}`) - const json = await res.json() - // some LCDs wrap under 'data' or 'result' - return json.data || json.result || json -} - -async function bankBalances(address) { - const url = `${LCD}/cosmos/bank/v1beta1/balances/${address}?pagination.limit=1000` - const res = await fetch(url) - if (!res.ok) throw new Error(`bank balances failed: ${res.status}`) - const json = await res.json() - return json.balances || [] -} - -async function cw20Balance(token, address) { - const r = await smartQuery(token, { balance: { address } }) - const bal = (r && r.balance) ? r.balance : (r?.data?.balance || '0') - return BigInt(bal) -} - -async function cw20Decimals(token) { - const r = await smartQuery(token, { token_info: {} }) - return r.decimals ?? r.token_info?.decimals ?? 6 -} - -async function cw20TotalSupply(token) { - const r = await smartQuery(token, { token_info: {} }) - return BigInt(r.total_supply || r?.token_info?.total_supply || '0') -} - -function addBig(balances, key, amount) { - if (!amount) return - const prev = BigInt(balances[key] || 0) - balances[key] = (prev + BigInt(amount)).toString() -} - -// ----- TVL ----- -async function tvl() { - const balances = {} - - // CW20 balances (report as raw token balances) - for (const key of ['ampLUNA', 'bLUNA', 'wSOL', 'wBNB']) { - const { token, custody } = ADDR[key] - try { - const [bal, dec] = await Promise.all([cw20Balance(token, custody), cw20Decimals(token)]) - // return raw amount in smallest units (string). DefiLlama will price it. - const raw = BigInt(bal) // already smallest unit from contract - addBig(balances, `terra2:${token}`, raw.toString()) - } catch (e) { - // skip on error - // console.error('cw20 fetch error', key, e) - continue - } - } - - // IBC/native balances (bank module) - for (const key of ['USDC', 'wETH', 'wBTC']) { - const { denom, custody } = ADDR[key] - try { - const list = await bankBalances(custody) - const row = list.find((x) => x.denom === denom) - if (row && row.amount) addBig(balances, denom.replace('/', ':'), row.amount) - } catch (e) { - // console.error('bank fetch error', key, e) - continue - } - } - - return balances -} - -module.exports = { - timetravel: false, - misrepresentedTokens: false, - methodology: - 'TVL = sum of custody balances for SOLID collaterals (ampLUNA, bLUNA, USDC (Noble IBC), axl.WETH, axl.WBTC, wSOL (Wormhole), wBNB (Wormhole)). ' + - 'Adapter returns token balances only; pricing (including LST exchange rates) is handled by DefiLlama coin-prices infra.', - terra2: { tvl }, -} \ No newline at end of file diff --git a/projects/solidblast/index.js b/projects/solidblast/index.js deleted file mode 100644 index a2a1b9960bb..00000000000 --- a/projects/solidblast/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0x5a79cC04Ad1494A8Ec04cE5C1E25bB50A10111eA) address and whitelisted tokens address to find and price liquidity pool pairs`, - blast: { - tvl: getUniTVL({ - factory: "0x5a79cC04Ad1494A8Ec04cE5C1E25bB50A10111eA", - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/solidex-finance-v2/index.js b/projects/solidex-finance-v2/index.js deleted file mode 100644 index 18878da9ef5..00000000000 --- a/projects/solidex-finance-v2/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - 'cronos': '0xc6bd451EE56E8e42b8dde3921aD851645C416126' -}, { - abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, - hasStablePools: true, - permitFailure: true, -}) - - diff --git a/projects/solidex-finance-v3/index.js b/projects/solidex-finance-v3/index.js deleted file mode 100644 index 073cacf6064..00000000000 --- a/projects/solidex-finance-v3/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const config = { - cronos: { factory: '0x3AAAB2384e40C2F405EF87Ea7B893B406C32E59C' }, -} - -Object.keys(config).forEach(chain => { - const { factory } = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ - factory, - fetchBalances: true, - useDefaultCoreAssets: true, - abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint) view returns (address)', - }, - }), - } -}) diff --git a/projects/solidex/abis.json b/projects/solidex/abis.json deleted file mode 100644 index daaeb12cc9c..00000000000 --- a/projects/solidex/abis.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tokens": "function tokens() view returns (address, address)", - "locked": "function locked(uint256) view returns (int128 amount, uint256 end)", - "totalBalances": "function totalBalances(address) view returns (uint256)", - "allPairsLength": "uint256:allPairsLength", - "allPairs": "function allPairs(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/solidex/index.js b/projects/solidex/index.js deleted file mode 100644 index 6458e9471a5..00000000000 --- a/projects/solidex/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const abis = require("./abis.json"); - -const SOLID = '0x888EF71766ca594DED1F0FA3AE64eD2941740A20'; - -async function tvl(api) { - const pairs = await api.fetchList({ lengthAbi: abis.allPairsLength, itemAbi: abis.allPairs, target: '0x3fAaB499b519fdC5819e3D7ed0C26111904cbc28' }) - const tokens = await api.multiCall({ abi: abis.tokens, calls: pairs}) - const ownerTokens = tokens.map((t, i) => [t, pairs[i]]) - return api.sumTokens({ ownerTokens }) -} - -async function staking(api) { - const { amount } = await api.call({ - target: '0xcbd8fea77c2452255f59743f55a3ea9d83b3c72b', - abi: abis.locked, - params: [8], - }) - api.add(SOLID, amount) -} - -module.exports = { - doublecounted: true, - fantom: { - tvl, - staking, - } -}; diff --git a/projects/solidlizard-lending/index.js b/projects/solidlizard-lending/index.js deleted file mode 100644 index dc5fd35a4c8..00000000000 --- a/projects/solidlizard-lending/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -module.exports = { - methodology: - "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", - arbitrum: { - ...compoundExports2({ comptroller: '0x9FfBdfcc508e76ee2b719eF6218879E938eF056C'}), - staking: staking( "0x08153c4C19Cb438A3bdC6303aF962a30E9f5e0B1", "0xe6AF844d5740B6B297B6Dd7Fb2ce299Ee9E3d16F"), - pool2: pool2( "0x8082F587Ff2B24dadB2220026F4FCa9323Ed8080", "0xB70005C4980d78e8bE47D4C9ccCd7300D6a02501"), - }, -}; diff --git a/projects/solidlizard/index.js b/projects/solidlizard/index.js deleted file mode 100644 index bdcfb7f7bf6..00000000000 --- a/projects/solidlizard/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - arbitrum:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0x734d84631f00dC0d3FCD18b04b6cf42BFd407074', - }), - }, -} diff --git a/projects/solidly-v2/index.js b/projects/solidly-v2/index.js deleted file mode 100644 index 1a4d646f023..00000000000 --- a/projects/solidly-v2/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'ethereum': '0x777de5Fe8117cAAA7B44f396E93a401Cf5c9D4d6' -}, { staking: { ethereum: ["0x77730ed992D286c53F3A0838232c3957dAeaaF73", "0x777172D858dC1599914a1C4c6c9fC48c99a60990"]}, - hallmarks:[ - [1678410000, "USDC depeg (90% TVL in USDC-USDT)"], - [1678842000, "Solidly V2 sunset"], - ] }) \ No newline at end of file diff --git a/projects/solidly-v3/index.js b/projects/solidly-v3/index.js deleted file mode 100644 index 11689338ab3..00000000000 --- a/projects/solidly-v3/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - - -module.exports = uniV3Export({ - ethereum: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 18044650, }, - optimism: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 115235065, }, - base: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 9672720, permitFailure: true }, - arbitrum: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 173576189, permitFailure: true, }, - fantom: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 73057898, permitFailure: true, }, - sonic: { factory: "0x777fAca731b17E8847eBF175c94DbE9d81A8f630", fromBlock: 514659, permitFailure: true, }, -}); -module.exports.hallmarks = [ - [1693699200, "Solidly V3 launch"], -] \ No newline at end of file diff --git a/projects/solidly/index.js b/projects/solidly/index.js deleted file mode 100644 index ac761ba6379..00000000000 --- a/projects/solidly/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0x3fAaB499b519fdC5819e3D7ed0C26111904cbc28' -}, { hasStablePools: true, }) \ No newline at end of file diff --git a/projects/solido-flow/index.js b/projects/solido-flow/index.js deleted file mode 100644 index f1ce9661593..00000000000 --- a/projects/solido-flow/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { - invokeViewFunction, -} = require("../helper/chain/supra"); -const { transformBalances } = require("../helper/portedTokens"); - -const CDP_GET_TOTAL_STATS_FUNCTION_TYPE = - "0x81846514536430ea934c7270f86cf5b067e2a2faef0e91379b4f284e91c7f53c::vault_core::total_assets"; - -const calculateSolidoFlowTVL = async (api) => { - const chain = api.chain; - const SUPRA = ADDRESSES.supra.SUPRA; - let balances = {}; - const totalCollateral = await invokeViewFunction( - CDP_GET_TOTAL_STATS_FUNCTION_TYPE, - [SUPRA], - [] - ); - sdk.util.sumSingleBalance(balances, SUPRA, totalCollateral); - return transformBalances(chain, balances); -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - supra: { - tvl: calculateSolidoFlowTVL, - }, -}; diff --git a/projects/solido-grow/index.js b/projects/solido-grow/index.js deleted file mode 100644 index 9c50209bcb9..00000000000 --- a/projects/solido-grow/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const sdk = require("@defillama/sdk"); -const { - invokeViewFunction, -} = require("../helper/chain/supra"); -const { transformBalances } = require("../helper/portedTokens"); -const GROW_GET_TOTAL_STATS_FUNCTION_TYPE = - "0x9176f70f125199a3e3d5549ce795a8e906eed75901d535ded623802f15ae3637::vault_core::total_assets"; -const CASH = "0x9176f70f125199a3e3d5549ce795a8e906eed75901d535ded623802f15ae3637::cdp_multi::CASH"; -const SUPRA = ADDRESSES.supra.SUPRA; -const DEXLYN_ROUTER_FUCNTION_TYPE="0x0dc694898dff98a1b0447e0992d0413e123ea80da1021d464a4fbaf0265870d8::router::get_amount_out"; -const CURVE="0x0dc694898dff98a1b0447e0992d0413e123ea80da1021d464a4fbaf0265870d8::curves::Uncorrelated"; - -const calculateGrowTVL = async (api) => { - const chain = api.chain; - let balances = {}; - const totalCASH = await invokeViewFunction( - GROW_GET_TOTAL_STATS_FUNCTION_TYPE, - [CASH], - [] - ); - // Use 1 CASH (1e8) for price discovery - const oneCASH = "100000000"; - const get_amount_out = await invokeViewFunction( - DEXLYN_ROUTER_FUCNTION_TYPE, - [CASH, SUPRA, CURVE], - [oneCASH] - ); - // Calculate total SUPRA value: price per CASH * totalCASH / 1e8 - const supraAmount = (BigInt(get_amount_out) * BigInt(totalCASH)) / 100000000n; - if (supraAmount > 0) { - sdk.util.sumSingleBalance(balances, SUPRA, supraAmount.toString()); - } - return transformBalances(chain, balances); -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - supra: { - tvl: calculateGrowTVL, - }, -}; - diff --git a/projects/solido/index.js b/projects/solido/index.js deleted file mode 100644 index 1446e7d034f..00000000000 --- a/projects/solido/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { - invokeViewFunction, -} = require("../helper/chain/supra"); -const { transformBalances } = require("../helper/portedTokens"); -const coreTokensAll = require("../helper/coreAssets.json"); - -const CDP_GET_TOTAL_STATS_FUNCTION_TYPE = - "0x9176f70f125199a3e3d5549ce795a8e906eed75901d535ded623802f15ae3637::cdp_multi::get_total_stats"; - -const calculateSolidoTVL = async (api) => { - const chain = api.chain; - const coreTokens = Object.values(coreTokensAll[chain] ?? {}); - let balances = {}; - - // For each supported collateral type, get total stats - for (const coinType of coreTokens) { - const [totalCollateral, totalDebt] = await invokeViewFunction( - CDP_GET_TOTAL_STATS_FUNCTION_TYPE, - [coinType], - [] - ); - - if (totalCollateral > 0) { - sdk.util.sumSingleBalance(balances, coinType, totalCollateral); - } - } - - return transformBalances(chain, balances); -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - supra: { - tvl: calculateSolidoTVL, - }, -}; diff --git a/projects/solisnek/index.js b/projects/solisnek/index.js deleted file mode 100644 index 26537b5710d..00000000000 --- a/projects/solisnek/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { staking } = require('../helper/staking'); - -module.exports = { - misrepresentedTokens: true, - avax: { - tvl: getUniTVL({ factory: '0xeeee1F1c93836B2CAf8B9E929cb978c35d46657E', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'ssAMM' }), - }, -}; diff --git a/projects/solo/index.js b/projects/solo/index.js deleted file mode 100644 index cc7dffc94cb..00000000000 --- a/projects/solo/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const config = { - heco: ['0x1cF73836aE625005897a1aF831479237B6d1e4D2', '0xE1f39a72a1D012315d581c4F35bb40e24196DAc8'], - bsc: ['0x7033A512639119C759A51b250BfA461AE100894b'], - polygon: ['0xE95876787B055f1b9E4cfd5d3e32BDe302BF789d'], - okexchain: ['0xa8AF3199aCE72E47c1DEb56E58BEA1CD41C37c22'] -} -module.exports.misrepresentedTokens = true - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const bals = await api.multiCall({ abi: "function getGlobalStatistics() view returns (uint256, uint256)", calls: config[chain] }) - const divider = chain !== 'polygon' ? 1e18 : 1e6 - bals.forEach(([i]) => api.addCGToken('tether', i / divider)) - return api.getBalances() - } - } -}) - - -Object.keys(module.exports.heco).forEach(key => module.exports.heco[key] = () => ({})) \ No newline at end of file diff --git a/projects/solomon-usdv/index.js b/projects/solomon-usdv/index.js deleted file mode 100644 index b6eb171b708..00000000000 --- a/projects/solomon-usdv/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getTokenSupplies, } = require("../helper/solana"); - -async function tvl(api) { - const usdvAddress = "Ex5DaKYMCN6QWFA4n67TmMwsH8MJV68RX6YXTmVM532C"; - - const res = await getTokenSupplies([usdvAddress]); - api.add(usdvAddress, res[usdvAddress]); -} - -module.exports = { - timetravel: false, - solana: { tvl, }, -} diff --git a/projects/solrise-finance/index.js b/projects/solrise-finance/index.js deleted file mode 100644 index eef368b9554..00000000000 --- a/projects/solrise-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - solana: { - tvl: () => ({}), - staking: () => ({}), - }, - deadFrom: '2023-01-01', -} \ No newline at end of file diff --git a/projects/solstice-usx/index.js b/projects/solstice-usx/index.js deleted file mode 100644 index bdcbf30c393..00000000000 --- a/projects/solstice-usx/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getTokenSupplies } = require("../helper/solana"); - -const USX = "6FrrzDk5mQARGc1TDYoyVnSyRdds1t4PbtohCD6p3tgG"; - -async function tvl(api) { - await getTokenSupplies([USX], { api }); - return api.getBalances() -} - -module.exports = { - timetravel: false, - methodology: "Total USX stablecoin supply value in USD", - solana: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/soluna/index.js b/projects/soluna/index.js deleted file mode 100644 index 3d913ed08d7..00000000000 --- a/projects/soluna/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens, } = require('../helper/chain/cosmos') - -async function tvl(timestamp, ethBlock, { terra: block }) { - return sumTokens({ owner: 'terra1qwzdua7928ugklpytdzhua92gnkxp9z4vhelq8', chain: 'terra'}) -} - -module.exports = { - terra: { - tvl - }, -hallmarks:[ -[1651881600, "UST depeg"], - ] -} diff --git a/projects/solunea/index.js b/projects/solunea/index.js deleted file mode 100644 index 91cc9da46a3..00000000000 --- a/projects/solunea/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ - factory: '0x5892Dc61d3f243Fa397197BaBC3Bb709Af4a0787', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - }, - arbitrum: { - tvl: getUniTVL({ - factory: '0x6ef065573cd3fff4c375d4d36e6ca93cd6e3d499', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - }, -} diff --git a/projects/solv-btc-lst/index.js b/projects/solv-btc-lst/index.js deleted file mode 100644 index 5d8f8a19b62..00000000000 --- a/projects/solv-btc-lst/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens } = require('../helper/chain/bitcoin'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); -const { getConfig } = require('../helper/cache.js'); - -async function tvl() { - return sumTokens({ owners: await bitcoinAddressBook.solvBTCLST() }) -} - -const solvbtclstListUrl = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solvbtc-lst.json'; - -async function evmTVL(api) { - let solvbtclst = await getConfig('solv-protocol/solv-btc-lst-evm', solvbtclstListUrl) - let { depositAddress: owners, tokens } = solvbtclst[api.chain]?.otherDeposit ?? {} - return api.sumTokens({ owners, tokens }) -} - -module.exports = { - methodology: 'Staked tokens via Babylon and Core are counted towards TVL, as they represent the underlying BTC assets securing their respective networks.', - doublecounted: true, - timetravel: false, - bitcoin: { tvl } -} - -const chains = ['ethereum'] -chains.forEach(chain => { - module.exports[chain] = { tvl: evmTVL } -}) \ No newline at end of file diff --git a/projects/solv-others/index.js b/projects/solv-others/index.js deleted file mode 100644 index 410696e9f97..00000000000 --- a/projects/solv-others/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { getConfig } = require("../helper/cache"); - -const solvOthersListUrl = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solv-others.json'; - -async function tvl(api) { - let solvOthers = (await getConfig('solv-protocol/solv-others', solvOthersListUrl)); - - await otherDeposit(api, solvOthers); -} - -async function otherDeposit(api, solvOthers) { - if (!solvOthers[api.chain] || !solvOthers[api.chain]["otherDeposit"]) { - return; - } - let otherDeposit = solvOthers[api.chain]["otherDeposit"]; - - let tokensAndOwners = [] - for (const deposit of otherDeposit["depositAddress"]) { - for (const tokenAddress of otherDeposit["tokens"]) { - tokensAndOwners.push([tokenAddress, deposit]) - } - } - - await sumTokens2({ api, tokensAndOwners, permitFailure: true }); -} - -['merlin'].forEach(chain => { - module.exports[chain] = { - tvl - } -}) \ No newline at end of file diff --git a/projects/solv-protocol-funds/abi.json b/projects/solv-protocol-funds/abi.json deleted file mode 100644 index fc655dd649a..00000000000 --- a/projects/solv-protocol-funds/abi.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "concrete": "address:concrete", - "slotTotalValue": "function slotTotalValue(uint256 slot_) view returns (uint256)", - "slotBaseInfo": "function slotBaseInfo(uint256 slot_) view returns (tuple(address issuer, address currency, uint64 valueDate, uint64 maturity, uint64 createTime, bool transferable, bool isValid))", - "decimals": "uint8:decimals", - "balanceOf": "function balanceOf(address _owner) view returns (uint256 balance)", - "getSubscribeNav": "function getSubscribeNav(bytes32 poolId_, uint256 time_) view returns (uint256 nav_, uint256 navTime_)", - "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)", - "liquidities": "function liquidities(uint256) view returns (int24, int24, uint128, uint256, uint256, uint256, uint256, uint128)", - "poolMetas": "function poolMetas(uint128) view returns (address, address, uint24)", - "pool": "function pool(address tokenX, address tokenY, uint24 fee) view returns (address)", - "state": "function state() view returns (uint160 sqrtPriceX96, int24 currentPoint, uint16 observationCurrentIndex, uint16 observationQueueLen, uint16 observationNextQueueLen, bool locked, uint256 liquidity, uint256 liquidityX)", - "stakedAmountsAbi": "function stakedAmounts(address) external view returns (uint256)", - "stakedMlpAmount": "function stakedMlpAmount(address account) view returns (uint256)", - "symbol": "string:symbol", - "totalSupply": "function totalSupply() view returns (uint256)" -} \ No newline at end of file diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js deleted file mode 100644 index b5f75198850..00000000000 --- a/projects/solv-protocol-funds/index.js +++ /dev/null @@ -1,486 +0,0 @@ -const abi = require("./abi.json"); -const { default: BigNumber } = require("bignumber.js"); -const { getConfig } = require("../helper/cache"); -const { cachedGraphQuery } = require("../helper/cache"); -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { getAmounts } = require("./iziswap"); -const { sumTokens2: sumTokens2Solana, getTokenSupplies } = require('../helper/solana') - -// The Graph -const graphUrlList = { - ethereum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-prod/version/latest', - bsc: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-bsc/version/latest', - arbitrum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-arbitrum/version/latest', - mantle: 'https://api.0xgraph.xyz/api/public/65c5cf65-bd77-4da0-b41c-cb6d237e7e2f/subgraphs/solv-payable-factory-mentle-0xgraph/-/gn', - merlin: 'http://solv-subgraph-server-alb-694489734.us-west-1.elb.amazonaws.com:8000/subgraphs/name/solv-payable-factory-merlin', -} - -const slotListUrl = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solv-rwa-slot.json'; - -const addressUrl = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solv-funds.json'; - -const solvTokens = { - ethereum: [ - '0x7A56E1C57C7475CCf742a1832B028F0456652F97', - ], - bsc: [ - '0x4aae823a6a0b376De6A78e74eCC5b079d38cBCf7', - ], - arbitrum: [ - '0x3647c54c4c2C65bC7a2D63c0Da2809B399DBBDC0', - ] -} - -async function tvl(api) { - const address = (await getConfig('solv-protocol/funds', addressUrl)); - const graphData = await getGraphData(api.timestamp, api.chain, api); - - await gm(api, address); - await mux(api, address); - await klp(api, address); - await iziswap(api, address); - await derivativeToken(api, address); - await vaultBalance(api, address, graphData); - await otherDeposit(api, address); - await ceffuBalance(api, address, graphData); - await lpV3PositionsBalance(api, address); - await aaveSupplyBalance(api, address); - await solanaTvl(api, address); - await tokenSupply(api, address); - await solanaTokenSupply(api, address); - - (solvTokens[api.chain] ?? []).forEach(token => { - api.removeTokenBalance(token) - }) -} - -const solvbtcListUrl = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solvbtc.json'; -async function getSolvBTCVAddresses(api) { - let solvbtc = (await getConfig('solv-protocol/solvbtc', solvbtcListUrl)); - - const blacklisted = {} - if (!solvbtc[api.chain] || !solvbtc[api.chain]["otherDeposit"]) { - return blacklisted - } - let otherDeposit = solvbtc[api.chain]["otherDeposit"]; - for (const deposit of otherDeposit["depositAddress"]) { - for (const tokenAddress of otherDeposit["tokens"]) { - const key = `${tokenAddress}-${deposit}`.toLowerCase() - blacklisted[key] = true - } - } - return blacklisted -} - -async function otherDeposit(api, address) { - if (!address[api.chain] || !address[api.chain]["otherDeposit"]) { - return; - } - let otherDeposit = address[api.chain]["otherDeposit"]; - - let tokens = [] - for (const deposit of otherDeposit["depositAddress"]) { - for (const tokenAddress of otherDeposit["tokens"]) { - tokens.push({ tokenAddress, deposit }) - } - } - - await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.tokenAddress, i.deposit]), permitFailure: true }); -} - -async function gm(api, address) { - if (!address[api.chain] || !address[api.chain]["gm"]) { - return; - } - let gm = address[api.chain]["gm"]; - - let tokens = [] - for (const pool of gm["depositAddress"]) { - for (const address of gm["gmTokens"]) { - tokens.push({ address, pool }) - } - } - - await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }); -} - -async function mux(api, address) { - if (!address[api.chain] || !address[api.chain]["mux"]) { - return; - } - let mux = address[api.chain]["mux"]; - - const amount = await api.call({ abi: abi.stakedMlpAmount, target: mux.pool, params: mux.account }); - - api.add(mux.lp, amount) -} - -async function klp(api, address) { - if (!address[api.chain] || !address[api.chain]["klp"]) { - return; - } - let klp = address[api.chain]["klp"]; - - const stakedAmounts = await api.multiCall({ - abi: abi.stakedAmountsAbi, - calls: klp["klpPool"].map((pool) => ({ - target: klp["address"], - params: [pool] - })), - }) - - stakedAmounts.forEach(amount => { - api.add(klp["address"], amount) - }) -} - -async function iziswap(api, address) { - if (!address[api.chain] || !address[api.chain]["iziswap"]) { - return; - } - let iziswapData = address[api.chain]["iziswap"]; - - const iziswap = iziswapData.liquidityManager; - const owner = iziswapData.owner; - - let liquidities = []; - for (let i = 0; i < owner.length; i++) { - liquidities.push(liquidity(api, iziswap, owner[i])) - } - - await Promise.all(liquidities); -} - -async function liquidity(api, iziswap, owner) { - const balanceOf = await api.call({ abi: abi.balanceOf, target: iziswap, params: [owner] }) - - let indexs = []; - for (let i = 0; i < balanceOf; i++) { - indexs.push(i); - } - - const tokenIds = await api.multiCall({ - abi: abi.tokenOfOwnerByIndex, - calls: indexs.map((index) => ({ - target: iziswap, - params: [owner, index] - })), - }) - - const liquidities = await api.multiCall({ - abi: abi.liquidities, - calls: tokenIds.map((tokenId) => ({ - target: iziswap, - params: [tokenId] - })) - }) - - const poolMetas = await api.multiCall({ - abi: abi.poolMetas, - calls: liquidities.map((liquidity) => ({ - target: iziswap, - params: [liquidity[7]] - })) - }) - - let tokenList = [...poolMetas] - - let poolList = await api.multiCall({ - abi: abi.pool, - target: iziswap, - calls: poolMetas.map((pool) => ({ - params: [pool[0], pool[1], pool[2]] - })) - }) - let state = await api.multiCall({ - abi: abi.state, - calls: poolList.map((pool) => ({ - target: pool - })) - }) - - tokenList.forEach((token, index) => { - const amounts = getAmounts(state[index], liquidities[index]) - api.add(token[0], amounts.amountX); - api.add(token[1], amounts.amountY); - }) -} - -async function concrete(slots, api) { - var slotsList = []; - var only = {}; - for (var i = 0; i < slots.length; i++) { - if (!only[slots[i].contractAddress]) { - slotsList.push(slots[i]); - only[slots[i].contractAddress] = true; - } - } - - const concreteLists = await api.multiCall({ - calls: slotsList.map((index) => index.contractAddress), - abi: abi.concrete, - }) - - let concretes = {}; - for (var k = 0; k < concreteLists.length; k++) { - concretes[slotsList[k].contractAddress] = concreteLists[k]; - } - - return concretes; -} - -async function derivativeToken(api, address) { - if (!address[api.chain] || !address[api.chain]["derivativeData"]) { - return; - } - let derivativeTokenData = address[api.chain]["derivativeData"]; - - const balance = await api.call({ abi: abi.balanceOf, target: derivativeTokenData.derivativeToken, params: derivativeTokenData.account.userAddress }); - - api.add(derivativeTokenData.account.underlyingToken, balance) -} - -async function vaultBalance(api, address, graphData) { - const network = api.chain; - - let solvbtc = (await getConfig('solv-protocol/solvbtc', solvbtcListUrl)); - if (graphData.pools.length > 0) { - const poolLists = graphData.pools; - - const poolConcretes = await concrete(poolLists, api); - - const poolBaseInfos = await api.multiCall({ - permitFailure: true, - abi: abi.slotBaseInfo, - calls: poolLists.map((index) => ({ - target: poolConcretes[index.contractAddress], - params: [index.openFundShareSlot], - })), - }) - - let vaultAddress = []; - for (const key in poolLists) { - if (poolBaseInfos[key] && solvbtc[network] != undefined && solvbtc[network]['slot'] != undefined && solvbtc[network]['slot'].indexOf(poolLists[key]["openFundShareSlot"]) != -1) { - vaultAddress.push(`${poolBaseInfos[key][1].toLowerCase()}-${poolLists[key]["vault"].toLowerCase()}`); - } - } - - let vaults = {}; - const blacklistedOwners = address[network].blacklistedOwners || []; - for (const key in poolLists) { - if (poolBaseInfos[key] && poolBaseInfos[key][1] && poolLists[key]["vault"] && blacklistedOwners.indexOf(poolLists[key]["vault"].toLowerCase()) == -1 && vaultAddress.indexOf(`${poolBaseInfos[key][1].toLowerCase()}-${poolLists[key]["vault"].toLowerCase()}`) == -1) { - vaults[`${poolBaseInfos[key][1].toLowerCase()}-${poolLists[key]["vault"].toLowerCase()}`] = [poolBaseInfos[key][1], poolLists[key]["vault"]] - } - } - const tokens = Object.values(vaults).map(([token]) => token) - - const symbols = await api.multiCall({ abi: abi.symbol, calls: tokens, }) - const blacklisted = await getSolvBTCVAddresses(api) - const blacklistedTokens = tokens.filter((token, i) => symbols[i].toLowerCase().includes('solvbtc')) - const tokensAndOwners = Object.values(vaults).filter(([token, owner]) => { - const key = `${token}-${owner}`.toLowerCase() - return !blacklisted[key] && !blacklistedTokens.includes(token) - }) - return api.sumTokens({ tokensAndOwners, blacklistedTokens, }) - } -} - -async function ceffuBalance(api, address, graphData) { - if (!address[api.chain] || !address[api.chain]["ceffu"]) { - return; - } - let ceffuData = address[api.chain]["ceffu"]; - - let pools = []; - for (const graph of graphData.pools) { - if (graph['openFundShareSlot'] == ceffuData['slot']) { - pools.push(graph) - } - } - if (pools.length > 0) { - const poolConcretes = await concrete(pools, api); - const nav = await api.multiCall({ - abi: abi.getSubscribeNav, - calls: pools.map((index) => ({ - target: index.navOracle, - params: [index.poolId, api.timestamp * 1000] - })), - }) - - const poolTotalValues = await api.multiCall({ - abi: abi.slotTotalValue, - calls: pools.map((index) => ({ - target: poolConcretes[index.contractAddress], - params: [index.openFundShareSlot] - })), - }) - - const poolBaseInfos = await api.multiCall({ - abi: abi.slotBaseInfo, - calls: pools.map((index) => ({ - target: poolConcretes[index.contractAddress], - params: [index.openFundShareSlot] - })), - }) - - const poolDecimalList = await api.multiCall({ - abi: abi.decimals, - calls: poolBaseInfos.map(i => i[1]), - }) - - let vaults = {}; - for (const key in pools) { - if (poolBaseInfos[key] && poolBaseInfos[key][1] && pools[key]["vault"]) { - vaults[`${pools[key]["vault"].toLowerCase()}-${poolBaseInfos[key][1].toLowerCase()}`] = [poolBaseInfos[key][1], pools[key]["vault"]] - } - } - - const balances = await api.multiCall({ - abi: abi.balanceOf, - calls: Object.values(vaults).map((index) => ({ - target: index[0], - params: [index[1]] - })), - }) - - let vaultbalances = {}; - for (let i = 0; i < Object.keys(vaults).length; i++) { - vaultbalances[Object.keys(vaults)[i]] = balances[i]; - } - - for (let i = 0; i < poolTotalValues.length; i++) { - const decimals = poolDecimalList[i]; - let balance = BigNumber(poolTotalValues[i]).div(BigNumber(10).pow(18 - decimals)).times(BigNumber(nav[i].nav_).div(BigNumber(10).pow(decimals))).toNumber(); - if (pools[i]['vault'] && poolBaseInfos[i][1] && vaultbalances[`${pools[i]['vault'].toLowerCase()}-${poolBaseInfos[i][1].toLowerCase()}`]) { - balance = BigNumber(balance).minus(vaultbalances[`${pools[i]['vault'].toLowerCase()}-${poolBaseInfos[i][1].toLowerCase()}`]).toNumber(); - vaultbalances[`${pools[i]['vault'].toLowerCase()}-${poolBaseInfos[i][1].toLowerCase()}`] = undefined - } - - if (ceffuData["ceffus"]) { - let ceffus = []; - for (const deposit of ceffuData["ceffus"]["depositAddress"]) { - for (const tokenAddress of ceffuData["ceffus"]["tokens"]) { - ceffus.push({ tokenAddress, deposit }) - } - } - - const balances = await api.multiCall({ - abi: abi.balanceOf, - calls: Object.values(ceffus).map((index) => ({ - target: index["tokenAddress"], - params: [index["deposit"]] - })), - }) - for (const balanceOf of balances) { - balance = BigNumber(balance).minus(balanceOf).toNumber(); - } - } - - if (balance > 0) { - api.add(poolBaseInfos[i][1], balance) - } - } - } -} - -async function lpV3PositionsBalance(api, address) { - if (!address[api.chain] || !address[api.chain]["lpV3Positions"]) { - return; - } - let lpV3PositionsData = address[api.chain]["lpV3Positions"]; - await sumTokens2({ api, uniV3nftsAndOwners: lpV3PositionsData["lpV3nftsAndOwners"], blacklistedTokens: lpV3PositionsData["blacklistedTokens"] ?? [], resolveLP: true, }) -} - -async function aaveSupplyBalance(api, address) { - if (!address[api.chain] || !address[api.chain]["aaves"]) { - return; - } - let aavesData = address[api.chain]["aaves"]; - - const allCalls = []; - for (let i = 0; i < aavesData.length; i++) { - const aaveAddress = aavesData[i]; - allCalls.push(...Object.values(aaveAddress["aaveAddress"]).map((index) => ({ - target: index[0], - params: [index[1]] - }))); - } - const balances = await api.multiCall({ - abi: abi.balanceOf, - calls: allCalls, - }); - - for (let i = 0; i < balances.length; i++) { - const balance = balances[i]; - const aaveAddress = aavesData[Math.floor(i / Object.values(aavesData[i % aavesData.length]["aaveAddress"]).length)]; - api.add(aaveAddress["assetAddress"], balance); - } -} - -async function solanaTvl(api, address) { - if (api.chain !== 'solana' || !address[api.chain] || !address[api.chain]["solanaOwners"]) return; - const owners = address[api.chain]["solanaOwners"]; - return sumTokens2Solana({ api, owners }); -} - -async function tokenSupply(api, address) { - if (!address[api.chain] || !address[api.chain]["tokenSupply"]) { - return; - } - let tokenSupplyData = address[api.chain]["tokenSupply"]; - - const totalSupplys = await api.multiCall({ - abi: abi.totalSupply, - calls: tokenSupplyData.map((address) => ({ - target: address, - })), - }); - - - for (let i = 0; i < tokenSupplyData.length; i++) { - api.add(tokenSupplyData[i], totalSupplys[i]); - } -} - -async function solanaTokenSupply(api, address) { - if (api.chain !== 'solana' || !address[api.chain] || !address[api.chain]["solanaTokens"]) return; - const tokens = address[api.chain]["solanaTokens"]; - return getTokenSupplies(tokens, { api }); -} - -async function getGraphData(timestamp, chain, api) { - let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); - - const slotDataQuery = `query PoolOrderInfos { - poolOrderInfos(first: 1000 where:{fundraisingEndTime_gt:${timestamp}, openFundShareSlot_not_in: ${JSON.stringify(rwaSlot)}}) { - marketContractAddress - contractAddress - navOracle - poolId - vault - openFundShareSlot - } - }`; - - let data; - if (graphUrlList[chain]) { - data = (await cachedGraphQuery(`solv-protocol/funds-graph-data/${chain}`, graphUrlList[chain], slotDataQuery, { api, })); - } - - let poolList = []; - if (data != undefined && data.poolOrderInfos != undefined) { - poolList = data.poolOrderInfos; - } - - return { - pools: poolList - }; -} - - -// node test.js projects/solv-protocol-funds -['ethereum', 'bsc', 'polygon', 'arbitrum', 'mantle', 'merlin', 'solana', 'soneium'].forEach(chain => { - module.exports[chain] = { - tvl - } -}) diff --git a/projects/solv-protocol-funds/iziswap.js b/projects/solv-protocol-funds/iziswap.js deleted file mode 100644 index 83cee817dfe..00000000000 --- a/projects/solv-protocol-funds/iziswap.js +++ /dev/null @@ -1,92 +0,0 @@ -function point2PoolPriceUndecimalSqrt(point) { - return (1.0001 ** point) ** 0.5; -} - -function _getAmountY( - liquidity, - sqrtPriceL, - sqrtPriceR, - sqrtRate, - upper, -) { - const numerator = sqrtPriceR - sqrtPriceL; - const denominator = sqrtRate - 1; - const ratio = numerator / denominator - return liquidity * ratio -} - -function _liquidity2AmountYAtPoint( - liquidity, - sqrtPrice, - upper -) { - const amountY = liquidity * sqrtPrice - return amountY -} - -function _getAmountX( - liquidity, - leftPt, - rightPt, - sqrtPriceR, - sqrtRate, - upper, -) { - const sqrtPricePrPc = Math.pow(sqrtRate, rightPt - leftPt + 1); - const sqrtPricePrPd = Math.pow(sqrtRate, rightPt + 1); - - const numerator = sqrtPricePrPc - sqrtRate; - const denominator = sqrtPricePrPd - sqrtPriceR; - const ratio = numerator / denominator - return liquidity * ratio -} - -function _liquidity2AmountXAtPoint( - liquidity, - sqrtPrice, - upper -) { - return liquidity / sqrtPrice -} - -function getAmounts( - stateInfo, - liquidity -) { - let amountX = 0; - let amountY = 0; - const liquid = liquidity[2]; - const sqrtRate = Math.sqrt(1.0001); - const leftPtNum = Number(liquidity[0]); - const rightPtNum = Number(liquidity[1]);// compute amountY without currentPt - if (leftPtNum < stateInfo.currentPoint) { - const rightPt = Math.min(stateInfo.currentPoint, rightPtNum); - const sqrtPriceR = point2PoolPriceUndecimalSqrt(rightPt); - const sqrtPriceL = point2PoolPriceUndecimalSqrt(leftPtNum); - amountY = _getAmountY(liquid, sqrtPriceL, sqrtPriceR, sqrtRate, false); - } - - // compute amountX without currentPt - if (rightPtNum > stateInfo.currentPoint + 1) { - const leftPt = Math.max(stateInfo.currentPoint + 1, leftPtNum); - const sqrtPriceR = point2PoolPriceUndecimalSqrt(rightPtNum); - amountX = _getAmountX(liquid, leftPt, rightPtNum, sqrtPriceR, sqrtRate, false); - } - - // compute amountX and amountY on currentPt - if (leftPtNum <= stateInfo.currentPoint && rightPtNum > stateInfo.currentPoint) { - const liquidityValue = liquidity[2] - const maxLiquidityYAtCurrentPt = stateInfo.liquidity - stateInfo.liquidityX - const liquidityYAtCurrentPt = liquidityValue > maxLiquidityYAtCurrentPt ? maxLiquidityYAtCurrentPt : liquidityValue; - const liquidityXAtCurrentPt = liquidityValue - liquidityYAtCurrentPt - const currentSqrtPrice = point2PoolPriceUndecimalSqrt(stateInfo.currentPoint); - amountX = amountX+ _liquidity2AmountXAtPoint(liquidityXAtCurrentPt, currentSqrtPrice, false) - amountY = amountY+ _liquidity2AmountYAtPoint(liquidityYAtCurrentPt, currentSqrtPrice, false) - } - - return { amountY, amountX }; -} - -module.exports = { - getAmounts -}; \ No newline at end of file diff --git a/projects/solv-protocol-rwa/abi.json b/projects/solv-protocol-rwa/abi.json deleted file mode 100644 index c2ad7222359..00000000000 --- a/projects/solv-protocol-rwa/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "concrete": "address:concrete", - "slotTotalValue": "function slotTotalValue(uint256 slot_) view returns (uint256)", - "slotBaseInfo": "function slotBaseInfo(uint256 slot_) view returns (tuple(address issuer, address currency, uint64 valueDate, uint64 maturity, uint64 createTime, bool transferable, bool isValid))", - "decimals": "uint8:decimals", - "balanceOf": "function balanceOf(address _owner) view returns (uint256 balance)", - "getSubscribeNav": "function getSubscribeNav(bytes32 poolId_, uint256 time_) view returns (uint256 nav_, uint256 navTime_)" -} \ No newline at end of file diff --git a/projects/solv-protocol-rwa/index.js b/projects/solv-protocol-rwa/index.js deleted file mode 100644 index 2c8243b1fe5..00000000000 --- a/projects/solv-protocol-rwa/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const { default: BigNumber } = require("bignumber.js"); -const { getConfig } = require("../helper/cache"); -const abi = require("./abi.json"); -const { cachedGraphQuery } = require("../helper/cache"); - -// The Graph -const graphUrlList = { - mantle: 'https://api.0xgraph.xyz/api/public/65c5cf65-bd77-4da0-b41c-cb6d237e7e2f/subgraphs/solv-payable-factory-mentle-0xgraph/-/gn', -} - -const slotListUrl = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solv-rwa-slot.json'; - - -async function tvl(api) { - const network = api.chain; - const pools = await getGraphData(api.timestamp, network, api); - if (pools == undefined || pools.length === 0) return {} - const poolConcretes = await concrete(pools, api); - const nav = await api.multiCall({ - abi: abi.getSubscribeNav, - calls: pools.map((index) => ({ - target: index.navOracle, - params: [index.poolId, api.timestamp] - })), - }) - - const poolTotalValues = await api.multiCall({ - abi: abi.slotTotalValue, - calls: pools.map((index) => ({ - target: poolConcretes[index.contractAddress], - params: [index.openFundShareSlot] - })), - }) - - const poolBaseInfos = await api.multiCall({ - abi: abi.slotBaseInfo, - calls: pools.map((index) => ({ - target: poolConcretes[index.contractAddress], - params: [index.openFundShareSlot] - })), - }) - - const poolDecimalList = await api.multiCall({ - abi: abi.decimals, - calls: poolBaseInfos.map(i => i[1]), - }) - - for (let i = 0; i < poolTotalValues.length; i++) { - const decimals = poolDecimalList[i]; - const balance = BigNumber(poolTotalValues[i]).div(BigNumber(10).pow(18 - decimals)).times(BigNumber(nav[i].nav_).div(BigNumber(10).pow(decimals))).toNumber(); - api.add(poolBaseInfos[i][1], balance) - } - return api.getBalances() -} - -async function concrete(slots, api) { - var slotsList = []; - var only = {}; - for (var i = 0; i < slots.length; i++) { - if (!only[slots[i].contractAddress]) { - slotsList.push(slots[i]); - only[slots[i].contractAddress] = true; - } - } - - const concreteLists = await api.multiCall({ - calls: slotsList.map((index) => index.contractAddress), - abi: abi.concrete, - }) - - let concretes = {}; - for (var k = 0; k < concreteLists.length; k++) { - concretes[slotsList[k].contractAddress] = concreteLists[k]; - } - - return concretes; -} - -async function getGraphData(timestamp, chain, api) { - let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); - - const slotDataQuery = `query BondSlotInfos { - poolOrderInfos(first: 1000, where:{fundraisingEndTime_gt:${timestamp}, openFundShareSlot_in:${JSON.stringify(rwaSlot)}}) { - marketContractAddress - contractAddress - navOracle - poolId - openFundShareSlot - } - }`; - const data = (await cachedGraphQuery(`solv-protocol/rwa-graph-data/${chain}`, graphUrlList[chain], slotDataQuery, { api, })); - return data.poolOrderInfos; -} -// node test.js projects/solv-protocol-rwa -['mantle'].forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/solv-protocol/index.js b/projects/solv-protocol/index.js deleted file mode 100644 index d5674bbe3f6..00000000000 --- a/projects/solv-protocol/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// token list -const tokenListsApiEndpoint = "https://token-list.solv.finance/vouchers-prod.json" - - -async function tvl(api) { - const chainId = api.getChainId() - const tokens = await tokenList(chainId); - await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) -} - -async function tokenList(chainId) { - let tokens = []; - const allTokens = (await getConfig('solv-protocol/token-list', tokenListsApiEndpoint)).tokens; - for (let token of allTokens) { - if (chainId == token.chainId) { - if (token.extensions.voucher.underlyingToken != undefined) { - if (token.extensions.voucher.underlyingToken.symbol != "SOLV" && token.extensions.voucher.underlyingToken.symbol.indexOf("_") == -1) { - tokens.push({ - address: token.extensions.voucher.underlyingToken.address, - pool: token.extensions.voucher.vestingPool - }) - } - } - } - } - - return tokens; -} - -['ethereum', 'bsc', 'polygon', 'arbitrum'].forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/solv-strategies/index.js b/projects/solv-strategies/index.js deleted file mode 100644 index 9ffd11b9d1e..00000000000 --- a/projects/solv-strategies/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { default: BigNumber } = require("bignumber.js"); -const { getConfig } = require("../helper/cache"); - -const addressUrl = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solv-strategies.json'; - -async function tvl(api) { - const address = (await getConfig('solv-protocol/strategies', addressUrl)); - - if (!address[api.chain]) return - - const strategies = address[api.chain]["strategies"]; - const solvbtcAddress = address[api.chain]["solvbtc"]; - - const balances = await Promise.all(strategies.map(async (strategy) => { - const [totalSupply, nav] = await Promise.all([ - api.call({ - abi: 'uint256:totalSupply', - target: strategy.erc20, - }), - api.call({ - abi: 'function getSubscribeNav(bytes32 poolId_, uint256 time_) view returns (uint256 nav_, uint256 navTime_)', - target: strategy.navOracle, - params: [strategy.poolId, api.timestamp], - }), - ]); - - const balance = BigNumber(totalSupply) - .times(BigNumber(nav.nav_).div(1e18)) - .toNumber(); - return [solvbtcAddress, balance]; - })); - - for (const item of balances) { - if (item) { - const [token, amount] = item; - api.add(token, amount); - } - } - - return api.getBalances() -} - -['bsc', 'ethereum', 'avax', 'bob', 'berachain'].forEach(chain => { - module.exports[chain] = { - tvl - } -}) \ No newline at end of file diff --git a/projects/solvbtc/abi.json b/projects/solvbtc/abi.json deleted file mode 100644 index 9539772b740..00000000000 --- a/projects/solvbtc/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "concrete": "address:concrete", - "slotBaseInfo": "function slotBaseInfo(uint256 slot_) view returns (tuple(address issuer, address currency, uint64 valueDate, uint64 maturity, uint64 createTime, bool transferable, bool isValid))", - "balanceOf": "function balanceOf(address _owner) view returns (uint256 balance)" -} \ No newline at end of file diff --git a/projects/solvbtc/index.js b/projects/solvbtc/index.js deleted file mode 100644 index f184df17ee0..00000000000 --- a/projects/solvbtc/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { sumTokens2, } = require("../helper/unwrapLPs"); -const { sumTokens } = require("../helper/chain/bitcoin"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); - -const solvbtcListUrl = 'https://raw.githubusercontent.com/solv-finance/solv-protocol-defillama/refs/heads/main/solvbtc.json'; - -async function bitcoinTvl() { - return sumTokens({ owners: await bitcoinAddressBook.solvBTC() }) -} - -async function tvl(api) { - let solvbtc = (await getConfig('solv-protocol/solvbtc', solvbtcListUrl)); - - await otherDeposit(api, solvbtc); -} - -async function otherDeposit(api, solvbtc) { - if (!solvbtc[api.chain] || !solvbtc[api.chain]["otherDeposit"]) { - return; - } - let otherDeposit = solvbtc[api.chain]["otherDeposit"]; - - let tokensAndOwners = [] - for (const deposit of otherDeposit["depositAddress"]) { - for (const tokenAddress of otherDeposit["tokens"]) { - tokensAndOwners.push([tokenAddress, deposit]) - } - } - - await sumTokens2({ api, tokensAndOwners, permitFailure: true }); -} - -// node test.js projects/solvbtc -['bitcoin', 'ethereum', 'bsc', 'polygon', 'arbitrum', 'mantle', 'merlin', 'avax', 'bob', 'base'].forEach(chain => { - if (chain == 'bitcoin') { - module.exports[chain] = { - tvl: bitcoinTvl, - } - } else { - module.exports[chain] = { - tvl - } - } -}) diff --git a/projects/solyard.js b/projects/solyard.js deleted file mode 100644 index 4d477ca31e5..00000000000 --- a/projects/solyard.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require('./helper/solana') - -async function staking() { - return sumTokens2({ tokenAccounts: ['Gcdr3WtnnCW1SCDoLQNWXBtmt7xt4x9GEroz3zAfMWys']}) -} - -module.exports = { - deadFrom: '2022-06-30', - timetravel: false, - solana: { - tvl: () => ({}), - staking, - pool2: () => ({}), - }, -} diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js deleted file mode 100644 index 9bb135d5658..00000000000 --- a/projects/sommelier/cellar-constants.js +++ /dev/null @@ -1,101 +0,0 @@ -// v0.8.15 Cellars (Cellar 1.0) -const CELLAR_AAVE = "0x7bad5df5e11151dc5ee1a648800057c5c934c0d5"; -const cellarsV0815 = [{ id: CELLAR_AAVE, startBlock: 15057867 }]; - -// v0.8.16 Cellars (Cellar 1.5) -const ETH_BTC_TREND = "0x6b7f87279982d919bbf85182ddeab179b366d8f2"; -const ETH_BTC_MOM = "0x6e2dac3b9e9adc0cbbae2d0b9fd81952a8d33872"; -const STEADY_ETH = "0x3f07a84ecdf494310d397d24c1c78b041d2fa622"; -const STEADY_BTC = "0x4986fd36b6b16f49b43282ee2e24c5cf90ed166d"; -const STEADY_UNI = "0x6f069f711281618467dae7873541ecc082761b33"; -const STEADY_MATIC = "0x05641a27c82799aaf22b436f20a3110410f29652"; -const cellarsV0816 = [ - { id: ETH_BTC_TREND, startBlock: 15733768 }, - { id: ETH_BTC_MOM, startBlock: 15733768 }, - { id: STEADY_ETH, startBlock: 15991609 }, - { id: STEADY_BTC, startBlock: 15991609 }, - { id: STEADY_UNI, startBlock: 16192732 }, - { id: STEADY_MATIC, startBlock: 16192732 }, -]; - -// v2 Cellars -const DEFI_STARS = "0x03df2a53cbed19b824347d6a45d09016c2d1676a"; -const REAL_YIELD_USD = "0x97e6e0a40a3d02f12d1cec30ebfbae04e37c119e"; -const REAL_YIELD_ETH = "0xb5b29320d2dde5ba5bafa1ebcd270052070483ec"; -const REAL_YIELD_LINK = "0x4068bdd217a45f8f668ef19f1e3a1f043e4c4934"; -const REAL_YIELD_1INCH = "0xc7b69e15d86c5c1581dacce3cacaf5b68cd6596f"; -const REAL_YIELD_UNI = "0x6a6af5393dc23d7e3db28d28ef422db7c40932b6"; -const REAL_YIELD_SNX = "0xcbf2250f33c4161e18d4a2fa47464520af5216b5"; -const REAL_YIELD_ENS = "0x18ea937aba6053bc232d9ae2c42abe7a8a2be440"; -const REAL_YIELD_BTC = "0x0274a704a6d9129f90a62ddc6f6024b33ecdad36"; -const FRAXIMAL = "0xdbe19d1c3f21b1bb250ca7bdae0687a97b5f77e6"; - -const cellarsV2 = [ - { id: DEFI_STARS, startBlock: 17181497 }, - { id: REAL_YIELD_USD, startBlock: 16431804 }, - { id: REAL_YIELD_ETH, startBlock: 16986127 }, - { id: REAL_YIELD_LINK, startBlock: 17377190 }, - { id: REAL_YIELD_1INCH, startBlock: 17377190 }, - { id: REAL_YIELD_UNI, startBlock: 17377190 }, - { id: REAL_YIELD_SNX, startBlock: 17377190 }, - { id: REAL_YIELD_ENS, startBlock: 17377190 }, - { id: REAL_YIELD_BTC, startBlock: 17667535 }, - { id: FRAXIMAL, startBlock: 17589948 }, -]; - -// v2.5 Cellars -// const TURBO_SWETH = "0xd33dad974b938744dac81fe00ac67cb5aa13958e"; -const TURBO_GHO = "0x0c190ded9be5f512bd72827bdad4003e9cc7975c"; -const ETH_GROWTH = "0x6c51041a91c91c86f3f08a72cb4d3f67f1208897"; -const TURBO_STETH = "0xfd6db5011b171b05e1ea3b92f9eacaeeb055e971"; -const TURBO_SOMM = "0x5195222f69c5821f8095ec565e71e18ab6a2298f"; -const TURBO_EETH = "0x9a7b4980C6F0FCaa50CD5f288Ad7038f434c692e"; -const TURBO_STETH_STETH_DEPOSIT = "0xc7372Ab5dd315606dB799246E8aA112405abAeFf"; -const MORPHO_MAXIMIZER = "0xcf4b531b4cde95bd35d71926e09b2b54c564f5b6"; -const TURBO_DIVETH = "0x6c1edce139291Af5b84fB1e496c9747F83E876c9"; -const TURBO_ETHX = "0x19B8D8FC682fC56FbB42653F68c7d48Dd3fe597E"; -const TURBO_EETH_V2 = "0xdAdC82e26b3739750E036dFd9dEfd3eD459b877A"; -const TURBO_RSETH = "0x1dffb366b5c5A37A12af2C127F31e8e0ED86BDbe"; -const TURBO_EZETH = "0x27500De405a3212D57177A789E30bb88b0AdbeC5"; - -const cellarsV2p5 = [ - // { id: TURBO_SWETH, startBlock: 17910374 }, - { id: TURBO_GHO, startBlock: 18118614 }, - { id: ETH_GROWTH, startBlock: 18144591 }, - { id: TURBO_STETH, startBlock: 18330620 }, - { id: TURBO_SOMM, startBlock: 18516369 }, - { id: TURBO_EETH, startBlock: 18622910 }, - { id: TURBO_STETH_STETH_DEPOSIT, startBlock: 18717675 }, - { id: MORPHO_MAXIMIZER, startBlock: 19103256 }, - { id: TURBO_DIVETH, startBlock: 19117472 }, - { id: TURBO_ETHX, startBlock: 19117547 }, - { id: TURBO_EETH_V2, startBlock: 19163705 }, - { id: TURBO_RSETH, startBlock: 19338456 }, - { id: TURBO_EZETH, startBlock: 19260727 }, -]; - -// v2.5 Cellars on Arbitrum -const REAL_YIELD_ETH_ARB = "0xC47bB288178Ea40bF520a91826a3DEE9e0DbFA4C"; -const REAL_YIELD_USD_ARB = "0x392B1E6905bb8449d26af701Cdea6Ff47bF6e5A8"; - -const arbitrumCellarsV2p5 = [ - { id: REAL_YIELD_ETH_ARB, startBlock: 178830458 }, - { id: REAL_YIELD_USD_ARB, startBlock: 178141655 }]; - - // v2.5 Cellars on Optimism - const REAL_YIELD_ETH_OPT = "0xC47bB288178Ea40bF520a91826a3DEE9e0DbFA4C"; - - const optimismCellarsV2p5 = [ - { id: REAL_YIELD_ETH_OPT, startBlock: - 116609168 }]; - - -module.exports = { - cellarsV0815, - cellarsV0816, - cellarsV2, - cellarsV2p5, - arbitrumCellarsV2p5, - optimismCellarsV2p5, -}; - diff --git a/projects/sommelier/cellar-v0-8-15.json b/projects/sommelier/cellar-v0-8-15.json deleted file mode 100644 index e6684c5a252..00000000000 --- a/projects/sommelier/cellar-v0-8-15.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "asset": "address:asset", - "totalAssets": "uint256:totalAssets", - "totalHoldings": "uint256:totalHoldings", - "totalLocked": "uint256:totalLocked", - "maxLocked": "uint256:maxLocked" -} \ No newline at end of file diff --git a/projects/sommelier/cellar-v0-8-16.json b/projects/sommelier/cellar-v0-8-16.json deleted file mode 100644 index ff129808355..00000000000 --- a/projects/sommelier/cellar-v0-8-16.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "holdingPosition": "address:holdingPosition", - "getPositions": "address[]:getPositions", - "totalAssets": "uint256:totalAssets" -} \ No newline at end of file diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js deleted file mode 100644 index 45d12beabfb..00000000000 --- a/projects/sommelier/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const v0815 = require("./v0-8-15"); -const v0816 = require("./v0-8-16"); -const v2 = require("./v2"); -const { - cellarsV0815, - cellarsV0816, - cellarsV2, - cellarsV2p5, - arbitrumCellarsV2p5, - optimismCellarsV2p5, -} = require("./cellar-constants"); - -const blacklistCellars = ['0x9a7b4980C6F0FCaa50CD5f288Ad7038f434c692e', '0x5195222f69c5821f8095ec565e71e18ab6a2298f'] - -async function ethereum_tvl(api) { - const block = await api.getBlock(); - // Sum TVL for all v0.8.15 Cellars - await v0815.sumTvl({ - api, - cellars: filterActiveCellars(cellarsV0815, block), - }); - - // Sum TVL for all v0.8.16 Cellars - await v0816.sumTvl({ - api, - cellars: filterActiveCellars(cellarsV0816, block), - }); - - await v2.sumTvl({ - api, - cellars: filterActiveCellars(cellarsV2, block), - ownersToDedupe: cellarsV2.concat(cellarsV2p5), - }); - - // no change in sumTvl implementation from v2 to v2.5 - await v2.sumTvl({ - api, - cellars: filterActiveCellars(cellarsV2p5, block), - ownersToDedupe: cellarsV2.concat(cellarsV2p5), - }); -} - -async function arbitrum_tvl(api) { - await v2.sumTvl({ - api, - cellars: arbitrumCellarsV2p5.map((cellar) => cellar.id), - ownersToDedupe: arbitrumCellarsV2p5, - }); -} - -async function optimism_tvl(api) { - await v2.sumTvl({ - api, - cellars: optimismCellarsV2p5.map((cellar) => cellar.id), - ownersToDedupe: optimismCellarsV2p5, - }); -} - -// Returns list of cellar addresses that are deployed based on their start block -function filterActiveCellars(cellars, block) { - return cellars - .filter((cellar) => cellar.startBlock <= block && !blacklistCellars.includes(cellar.id)) - .map((cellar) => cellar.id); -} - -module.exports = { - methodology: "TVL is calculated as the sum of deposits invested into the strategy, deposits waiting to be invested, and yield waiting to be reinvested or redistributed across all Cellars.", - start: '2022-07-01', - ["ethereum"]: { tvl: ethereum_tvl }, - ["arbitrum"]: { tvl: arbitrum_tvl }, - ["optimism"]: { tvl: optimism_tvl }, - hallmarks: [ - [1658419200, "aave2 Cellar Launch"], - [1674671068, "Real Yield USD Cellar Launch"], - [1681233049, "Real Yield ETH Cellar Launch"], - [1689271200, "Real Yield BTC Cellar Launch"], - ], -}; diff --git a/projects/sommelier/v0-8-15.js b/projects/sommelier/v0-8-15.js deleted file mode 100644 index e57d4eacbd0..00000000000 --- a/projects/sommelier/v0-8-15.js +++ /dev/null @@ -1,39 +0,0 @@ -const abiCellarV0815 = require("./cellar-v0-8-15.json"); - -// type Options = { -// cellars: string[], // list of cellar addresses -// balances: Object, // balances object to accumulate protocol TVL -// chainBlocks, // provided by DefiLlama SDK -// } -async function sumTvl(options) { - const { cellars } = options; - - // Log TVL for each v0.8.15 cellar - for (const cellar of cellars) { - await logCellarTvl(cellar, options); - } -} - -// target: string, cellar contract address -// options: same as above -async function logCellarTvl(target, { api }) { - - // TVL for the v0.8.15 cellars is the sum of: - // totalAssets (assets invested into the underlying) - // totalHoldings (assets deposited into the strategy but uninvested) - // maxLocked (yield waiting to be distributed and reinvested) - const totalAssets = await api.call({ abi: abiCellarV0815.totalAssets, target, }) - const totalHoldings = await api.call({ abi: abiCellarV0815.totalHoldings, target, }) - const maxLocked = await api.call({ abi: abiCellarV0815.maxLocked, target, }) - - // Asset is the underlying ERC20 the cellar is invested in and is accepted for deposit - // This can change as the cellar chases the underlying pool with the highest yield - const assetAddress = await api.call({ abi: abiCellarV0815.asset, target, }) - - // Sum up total assets, holdings, and locked yield - api.add(assetAddress, [totalAssets, totalHoldings, maxLocked]) -} - -module.exports = { - sumTvl, -}; diff --git a/projects/sommelier/v0-8-16.js b/projects/sommelier/v0-8-16.js deleted file mode 100644 index 82810aef630..00000000000 --- a/projects/sommelier/v0-8-16.js +++ /dev/null @@ -1,18 +0,0 @@ -const abiCellarV0816 = require("./cellar-v0-8-16.json"); - -// type Options = { -// cellars: string[], // list of cellar addresses -// balances: Object, // balances object to accumulate protocol TVL -// chainBlocks, // provided by DefiLlama SDK -// } -async function sumTvl(options) { - const { cellars, api } = options; - // TVL is the value of each of the Cellar's positions summed up - const positions = await api.multiCall({ abi: abiCellarV0816.getPositions, calls: cellars}) - const ownerTokens = positions.map((position, i)=>[position, cellars[i]]) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - sumTvl, -}; diff --git a/projects/sommelier/v2.js b/projects/sommelier/v2.js deleted file mode 100644 index ecf827264b1..00000000000 --- a/projects/sommelier/v2.js +++ /dev/null @@ -1,56 +0,0 @@ -async function sumTvl({ cellars, api, ownersToDedupe }) { - - const assets = await api.multiCall({ - abi: "address:asset", - calls: cellars, - }); - const bals = await api.multiCall({ - abi: "uint256:totalAssets", - calls: cellars, - }); - - // Dedupe any potential TVL of cellars taking positions in other cellars by looking at balanceOf for each cellar - - const sharesToIgnore = await Promise.all( - cellars.map(async (target) => { - // Iterate over all owners and sum up their shares for each cellar (target) - const shares = await api.multiCall({ - calls: ownersToDedupe.map((owner) => ({ - target: target, // Base Cellar - params: [owner.id], // Potential cellar holding shares in base cellar - })), - abi: "erc20:balanceOf", - }); - - // Sum up all shares for each cellar (target) - const totalShares = shares.reduce( - (sum, share) => sum + Number(share), - 0 - ); - - return totalShares; - }) - ); - - // Create a new map of total shares by using totalSupply - let totalShares = await api.multiCall({ - calls: cellars.map((cellar) => ({ - target: cellar, // Base Cellar - })), - abi: "uint256:totalSupply", - }); - // Clean up to be list of outputs - totalShares = totalShares.map((share) => share); - - // Create a ratio of 1-(sharesToIgnore/totalShares) to multiply by the totalAssets - const ratios = totalShares.map((share, i) => { - const ratio = 1 - sharesToIgnore[i] / share; - return ratio; - }); - - assets.forEach((a, i) => api.add(a, bals[i] * ratios[i])); -} - -module.exports = { - sumTvl, -}; diff --git a/projects/somnex-perp/index.js b/projects/somnex-perp/index.js deleted file mode 100644 index ed4c7e0d75a..00000000000 --- a/projects/somnex-perp/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const USDCE = "0x28BEc7E30E6faee657a03e19Bf1128AaD7632A00" -const USDT = "0x67B302E35Aef5EEE8c32D934F5856869EF428330" - -const SPLP = "0x0e7eFB3e546F1D201C01333Ee414FD676ECD8344"; -function tvl(api) { - return sumTokens2({ api, owners: [SPLP], tokens: [USDCE, USDT] }) -} - -module.exports = { - somnia: { - tvl, - } -} - diff --git a/projects/somnex-v3/index.js b/projects/somnex-v3/index.js deleted file mode 100644 index c128eafff1f..00000000000 --- a/projects/somnex-v3/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') - -const query = `{ - uniPools (first: 1000 where: { - uniPoolType:v3 - } orderBy: volumeUSD orderDirection:desc) { - id - } - -}` -module.exports = { - somnia: { tvl } -} - -async function tvl(api) { - const { uniPools } = await cachedGraphQuery('somnex-v3/somnia', 'https://api.subgraph.somnia.network/api/public/962dcbf6-75ff-4e54-b778-6b5816c05e7d/subgraphs/somnia-swap/v1.0.0/gn', query) - const pools = uniPools.map(i => i.id) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) - const ownerTokens = pools.map(((pool, i) => [[token0s[i], token1s[i]], pool])) - return api.sumTokens({ ownerTokens, }) -} \ No newline at end of file diff --git a/projects/somnex-xyz/index.js b/projects/somnex-xyz/index.js deleted file mode 100644 index 2ee2d9516f2..00000000000 --- a/projects/somnex-xyz/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - somnia: '0xaFd71143Fb155058e96527B07695D93223747ed1' -}) \ No newline at end of file diff --git a/projects/somnia-exchange/index.js b/projects/somnia-exchange/index.js deleted file mode 100644 index 3c6d0df9c78..00000000000 --- a/projects/somnia-exchange/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - somnia: '0x6C4853C97b981Aa848C2b56F160a73a46b5DCCD4' -}) \ No newline at end of file diff --git a/projects/sonefi-perp/index.js b/projects/sonefi-perp/index.js deleted file mode 100644 index 5b371c06e65..00000000000 --- a/projects/sonefi-perp/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const USDCE = ADDRESSES.soneium.USDC -const USDTE = ADDRESSES.soneium.USDT -const ASTR = ADDRESSES.soneium.ASTAR - -const SPLP = "0x368986EDcB1b2Ac55282752c6881c0E4A5A6b1bE"; -const HPLP = "0x7a61A9ACe265FAc9f431F964100A80271D6a6eca"; -const APLP = "0x930464D1645c06E36f41f5675Ee7E4EDcB4057b2"; -function tvl(api) { - return sumTokens2({ api, owners: [SPLP, HPLP, APLP], tokens: [USDCE, USDTE, ASTR] }) -} - -module.exports = { - soneium: { - tvl, - } -} - diff --git a/projects/sonefi-xyz/index.js b/projects/sonefi-xyz/index.js deleted file mode 100644 index 08c71af7291..00000000000 --- a/projects/sonefi-xyz/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - soneium: '0x82d2d0aAE77967d42ACf4F30B53e2de0055338De' -}) \ No newline at end of file diff --git a/projects/soneium/index.js b/projects/soneium/index.js deleted file mode 100644 index 8eded2d2aed..00000000000 --- a/projects/soneium/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xeb9bf100225c214Efc3E7C651ebbaDcF85177607", - "0x88e529a6ccd302c948689cd5156c83d4614fae92", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/sonex/index.js b/projects/sonex/index.js deleted file mode 100644 index a5ba9987192..00000000000 --- a/projects/sonex/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - soneium: { factory: '0x3E4ff8662820E3dec3DACDb66ef1FFad5Dc5Ab83', fromBlock: 1 }, -}) diff --git a/projects/songtech/index.js b/projects/songtech/index.js deleted file mode 100644 index 28bf81f4689..00000000000 --- a/projects/songtech/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0xDe67d94C349960cF80625Bfe762aAe9428844763"; -const contract2 = "0x3713c98b942B80178985bBbAA61Fc916B4D4D39A" - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owners: [contract,contract2], api }); -} - -module.exports = { - methodology: `We count the ETH on ${contract} & ${contract2}`, - base: { - tvl, - }, -}; diff --git a/projects/sonic-gateway/index.js b/projects/sonic-gateway/index.js deleted file mode 100644 index c3ae68c13d2..00000000000 --- a/projects/sonic-gateway/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: '0xa1E2481a9CD0Cb0447EeB1cbc26F1b3fff3bec20', - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/sonic-market-amm/index.js b/projects/sonic-market-amm/index.js deleted file mode 100644 index aaef76582be..00000000000 --- a/projects/sonic-market-amm/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'sonic': '0x01D6747dD2d65dDD90FAEC2C84727c2706ee28E2' -}) \ No newline at end of file diff --git a/projects/sonic-market-liquidity-vault/index.js b/projects/sonic-market-liquidity-vault/index.js deleted file mode 100644 index 25e52d91a07..00000000000 --- a/projects/sonic-market-liquidity-vault/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const abi = { - openEvent: 'event Open(bytes32 indexed key, uint192 indexed bookIdA, uint192 indexed bookIdB, bytes32 salt, address strategy)', - getBookKey: "function getBookKey(uint192 id) view returns ((address base, uint64 unitSize, address quote, uint24 makerPolicy, address hooks, uint24 takerPolicy))", - getLiquidity: "function getLiquidity(bytes32 key) view returns ((uint256 reserve, uint256 claimable, uint256 cancelable) liquidityA, (uint256 reserve, uint256 claimable, uint256 cancelable) liquidityB)", -} - -const config = { - rebalancer: '0x46107Ec44112675689053b96aea2127fD952bd47', - bookManager: '0xD4aD5Ed9E1436904624b6dB8B1BE31f36317C636', - blacklistedTokens: [], - fromBlock: 6334629 -} - -async function tvl(api) { - const { rebalancer, bookManager, fromBlock, blacklistedTokens } = config - const logs = await getLogs2({ api, factory: rebalancer, eventAbi: abi.openEvent, fromBlock, extraKey: 'open-bookid' }) - const bookIds = logs.map(i => [i.bookIdA, i.bookIdB]).flat() - const res = await api.multiCall({ abi: abi.getBookKey, calls: bookIds, target: bookManager }) - const tokens = res.map(i => [i.base, i.quote]).flat() - return api.sumTokens({ owners: [rebalancer], tokens, blacklistedTokens }) -} - -module.exports = { - methodology: "TVL includes all assets deposited into the Sonic Market Liquidity Vault contract, specifically allocated for liquidity provision and market-making within the Sonic Market ecosystem", - sonic: { tvl } -} \ No newline at end of file diff --git a/projects/sonic-market-orderbook/index.js b/projects/sonic-market-orderbook/index.js deleted file mode 100644 index 24fda56b3c1..00000000000 --- a/projects/sonic-market-orderbook/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getUniqueAddresses } = require('../helper/utils') - -const abi = { - openEvent: 'event Open(uint192 indexed id, address indexed base, address indexed quote, uint64 unitSize, uint24 makerPolicy, uint24 takerPolicy, address hooks)', -} - -const config = { - sonic: { factory: '0xD4aD5Ed9E1436904624b6dB8B1BE31f36317C636', fromBlock: 297198, }, -} - -function customCacheFunction({ cache, logs }) { - if (!cache.logs) cache.logs = [] - const tokens = logs.map(({ base, quote }) => [base, quote]).flat() - cache.logs.push(...tokens) - cache.logs = getUniqueAddresses(cache.logs) - return cache -} - -async function tvl(api) { - const { factory, fromBlock } = config[api.chain] - const tokens = await getLogs2({ api, factory, eventAbi: abi.openEvent, fromBlock, extraKey: 'open-address', customCacheFunction, }) - return sumTokens2({ api, owner: factory, tokens, permitFailure: true }) -} - -module.exports = { - methodology: "TVL consists of assets deposited into the Sonic Market Book Manager contract", -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/sonicooo/index.js b/projects/sonicooo/index.js deleted file mode 100644 index adcad29052e..00000000000 --- a/projects/sonicooo/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { request, gql } = require('graphql-request'); -const { toUSDTBalances } = require('../helper/balances'); - -const graphUrl_v3 = 'https://v3.api.sonic.ooo' - -const graphQuery = gql` -query get_tvl($timestamp: Int!) { - sonicDayData(dateTo: $timestamp, dateFrom: 0) { - totalLiquidityUSD - } -}` - -const tvl = async ({ timestamp }) => { - const { sonicDayData: data_v3 } = await request(graphUrl_v3, graphQuery, { timestamp }); - const now = Math.floor(Date.now() / 1000); - const dayOffset = Math.floor((now - timestamp) / 86400); - const targetDay = data_v3[data_v3.length - 1 - dayOffset]; - const supply_v3 = Number(targetDay?.totalLiquidityUSD) || 0; - return toUSDTBalances(supply_v3); -}; - -module.exports = { - misrepresentedTokens: true, - icp: { tvl } -} \ No newline at end of file diff --git a/projects/sonicswap/index.js b/projects/sonicswap/index.js deleted file mode 100644 index a6658ffb1d3..00000000000 --- a/projects/sonicswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const factory = '0x653FB617210ca72DC938f8f4C75738F2B4b88d7B' - -module.exports = { - misrepresentedTokens: true, - methodology: `TVL accounts for the liquidity found in each liquidity pair.`, - harmony:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory, }) - }, -} \ No newline at end of file diff --git a/projects/sonicxswap/index.js b/projects/sonicxswap/index.js deleted file mode 100644 index ef8c3a7cb47..00000000000 --- a/projects/sonicxswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'sonic': '0x0569F2A6B281b139bC164851cf86E4a792ca6e81' -}) \ No newline at end of file diff --git a/projects/sonne-finance/index.js b/projects/sonne-finance/index.js deleted file mode 100644 index 5bd1a04543c..00000000000 --- a/projects/sonne-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') -const { staking } = require('../helper/staking'); - - -const config = { - optimism: '0x60CF091cD3f50420d50fD7f707414d0DF4751C58', - base: '0x1DB2466d9F5e10D7090E7152B68d62703a2245F0' -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = compoundExports2({ comptroller: config[chain] }) -}) -module.exports.optimism.staking = staking(["0xdc05d85069dc4aba65954008ff99f2d73ff12618", "0x41279e29586eb20f9a4f65e031af09fced171166"], "0x1DB2466d9F5e10D7090E7152B68d62703a2245F0") -// module.exports.hallmarks = [ -// [1715731260,"donation attack exploit"], -// ] -module.exports.optimism.borrowed = () => ({}) // bad debt after hack \ No newline at end of file diff --git a/projects/sonusexchange-cl/index.js b/projects/sonusexchange-cl/index.js deleted file mode 100644 index edb0f0443d1..00000000000 --- a/projects/sonusexchange-cl/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - soneium: { - factory: "0x253240C98b2eeEF1bD3D5939A882ED9BD75216d1", - fromBlock: 1696007, - }, -}); \ No newline at end of file diff --git a/projects/sonusexchange/index.js b/projects/sonusexchange/index.js deleted file mode 100644 index 5a19ec69644..00000000000 --- a/projects/sonusexchange/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - soneium: { tvl: getUniTVL({ factory: '0xdb5D9562C80AEab3aeaED35ecaAe40Fd8DC9a4c8', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/soon/index.js b/projects/soon/index.js deleted file mode 100644 index 3c977a15f53..00000000000 --- a/projects/soon/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - '0x5a0702c7ebbec83802b35db737fccdc5fc6c5e07', - '0xe822c3d76ac133f7d9f12c39c1bf28a797624aa9' - ], - fetchCoValentTokens: true, - permitFailure: true - }), - }, -}; diff --git a/projects/sophon-farm/index.js b/projects/sophon-farm/index.js deleted file mode 100644 index 68146c1c54c..00000000000 --- a/projects/sophon-farm/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const contracts = { - sophon: '0x5753fBeC29De6E2b56F73f7d7786e9f0d34897bb', - ethereum: '0xeff8e65ac06d7fe70842a4d54959e8692d6ae064', -} - -module.exports = { - sophon: { - tvl: async (api) => getTvl(api, contracts.sophon), - }, - ethereum: { - tvl: async (api) => getTvl(api, contracts.ethereum), - }, - hallmarks: [ - [1718733600, "Season 1: Launch of the farm on Ethereum"], - [1735334250, "Season 2: Migration of the farm to Sophon"] - ] -} - -async function getTvl(api, farm) { - const pools = await api.call({ abi: "function getPoolInfo() view returns ((address lpToken, address l2Farm, uint256 amount, uint256 boostAmount, uint256 depositAmount, uint256 allocPoint, uint256 lastRewardBlock, uint256 accPointsPerShare, uint256 totalRewards, string description)[] poolInfos)", target: farm}) - const tokens = pools.map(i => i.lpToken) - return sumTokens2({ owner: farm, tokens, api, }) -} \ No newline at end of file diff --git a/projects/sophon/index.js b/projects/sophon/index.js deleted file mode 100644 index 66920727e2d..00000000000 --- a/projects/sophon/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { - chainId: 50104, - additionalBridges: ['0xf553E6D903AA43420ED7e3bc2313bE9286A8F987'], - extraTokens: [ - '0xc96Aa65F31E41b4Ca6924B86D93e25686019E59C', - '0x996d67aa9b37df96428ad3608cb21352bf1fdb90' - ] - }), - }, -} diff --git a/projects/sora.js b/projects/sora.js deleted file mode 100644 index b879e711ebf..00000000000 --- a/projects/sora.js +++ /dev/null @@ -1,23 +0,0 @@ -const { post } = require('./helper/http') - -async function tvl({timestamp}) { - const { data: { entities: { nodes } } } = await post('https://api.subquery.network/sq/sora-xor/sora-prod', { - "query": "query NetworkTvlQuery($after: Cursor, $type: SnapshotType, $from: Int, $to: Int) {\n entities: networkSnapshots(\n after: $after\n orderBy: TIMESTAMP_DESC\n filter: {and: [{type: {equalTo: $type}}, {timestamp: {lessThanOrEqualTo: $from}}, {timestamp: {greaterThanOrEqualTo: $to}}]}\n ) {\n pageInfo {\n hasNextPage\n endCursor\n \n }\n nodes {\n timestamp\n liquidityUSD\n }\n }\n}", - "operationName": "NetworkTvlQuery", - "variables": { - "from": timestamp, - "to": timestamp - 3600 * 6, - "type": "HOUR", - "after": "" - } - }) - return { - tether: nodes[0].liquidityUSD - } -} - -module.exports = { - misrepresentedTokens: true, - methodology: "All pools from https://polkaswap.io launched on SORA network are included in TVL. Data comes from https://polkaview.io", - sora: { tvl }, -}; diff --git a/projects/sorare/index.js b/projects/sorare/index.js deleted file mode 100644 index b8774a1b787..00000000000 --- a/projects/sorare/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xF5C9F957705bea56a7e806943f98F7777B995826", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/sorbetfinance/index.js b/projects/sorbetfinance/index.js deleted file mode 100644 index cfe8a07a34f..00000000000 --- a/projects/sorbetfinance/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const abi = { - "getPools": "function getPools(address deployer) view returns (address[])", - "getUnderlyingBalances": "function getUnderlyingBalances() view returns (uint256 amount0Current, uint256 amount1Current)" -} - -const config = { - ethereum: '0xEA1aFf9dbFfD1580F6b81A3ad3589E66652dB7D9', - optimism: '0x2845c6929d621e32B7596520C8a1E5a37e616F09', - polygon: '0x37265A834e95D11c36527451c7844eF346dC342a' -} - -module.exports = { - doublecounted: true, - methodology: - "Counts TVL that's on all the Pools through G-UNI Factory Contract", - hallmarks:[ - [1632253540, "GUNI-DAIUSDC Added to Maker"], - [1643056020, "Maker GUNI Cap to 500M"], - ], -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const G_UNI_Factory = config[chain] - const deployers = await api.call({ abi: "address[]:getDeployers", target: G_UNI_Factory}) - const pools = (await api.multiCall({ abi: abi.getPools, calls: deployers, target: G_UNI_Factory})).flat() - const token0s = await api.multiCall({ abi: "address:token0", calls: pools }) - const token1s = await api.multiCall({ abi: "address:token1", calls: pools }) - const bals = await api.multiCall({ abi: abi.getUnderlyingBalances, calls: pools }) - bals.forEach((bal, i) => { - api.add(token0s[i], bal.amount0Current) - api.add(token1s[i], bal.amount1Current) - }) - } - } -}) \ No newline at end of file diff --git a/projects/soroswap/index.js b/projects/soroswap/index.js deleted file mode 100644 index 5585b864004..00000000000 --- a/projects/soroswap/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const axios = require('axios') - -const pools = [ - "CDJDRGUCHANJDXALZVJ5IZVB76HX4MWCON5SHF4DE5HB64CBBR7W2ZCD", // XLM-USDx - "CD3XW7RGZIQMSVCTLK2NOFAGPTCBKXAVXIXN6QAMEPTJRY45325BZT67", // XLM-EURx - "CC7CDFY2VGDODJ7WPO3JIK2MXLOAXL4LRQCC43UJDBAIJ4SVFO3HNPOC", // USDC-EURC - "CATUJXDUO7SSSTAKSUV5YU6RSTB4B5AVIHQDV26QTCXOB46T6SLMWNMY", // XLM-EURC - "CDGLVQDF2QUD6P4XJXBATP3HT2MSBEV3NH246ZDQPP6JPNPFAYO44P5E", // XLM-GBPx - "CAM7DY53G63XA4AJRS24Z6VFYAFSSF76C3RZ45BE5YU3FQS5255OOABP", // XLM-USDC - "CAF65BIHBIHC44QPWIFZRL46BDDH4FN3VSRBB2DZJFPWQRAOSRPKRRQZ", // EURx-USDC - "CCXOKQBBNRJ7YKY4Y6HTXAU5ZLV7PKENA7ZT74UAAXZ6XUEE22YQGBCS", // EURx-EURC - "CDLJHWJZS3KZDIFLGEFTXUOULRAZ3Z437JTEZLGHMUZEX4DFBFYWXRFR", // GBPx-USDC - "CDIXSYDR7S5OLT56JM7G5Y5LHH6NEFINZOE2YG2TJEXHHYWKLV3FDCCU", // USTRY-USDC - "CAQJUHO6KIBTEDT53DKDPHFMQ32KDWU5MDCAZE2MXT4ECBMTDQQF5FGB", // CETES-USDC - "CCYPLDHUEYWJEOIZJTXUH56NLIQLKYGR5H2BEFQMBYG5IC3G52QF4WVD", // USDGLO-USDC - "CCH3CJZWG6UMW522ESP3UHL4DCZLNXZLUHKYG5GCGNG5HXRL4A6O4A23", // XLM-XRF - "CAHSKDP66SYCGYQZ3NULGZMEUSN5Z67UFBYADJVCNXVKV3E7PKYR5PQ4", // XLM-STK - "CBVOZM3YLSK3IEKTL3XB3V7CMRU2JNTC3MISPEDMMU4XEUIXDQT6FP6T", // XLM-XTAR - "CAKST7SVAVUZPYCDJ7QIUFLHHDAZV6HOY74F3PSVN5EKBMAGEZDR5D3I", // XLM-SHX - "CDLMAKG5TSJA6FGP7LLC2FKJRQW6DQYMEPP6FURFVULDEQMP3PRZ4ISI", // XLM-LIBRE - "CAI7B3M2EPGDA2GMHCHUD5JS7MEJ7HA7U7GP5L2IOJWWAE7VRTMTJPNX", // XLM-AMM - "CDJXIUCWP3BWZWNPPL52YRG7FHG6LWAHN5RTYR4FLY7A3PJKSZ7LGCSC", // XLM-GQX - "CBKG7Y3LSLTSK76LCKM52EQP3I7GMGL2VOR6S46ZEJZW62WFPAKP4NIG", // AQUA-YBX - "CAX57ZNIZKVBDZ36OFH5IAMBTDDCJ4F54KUKCJRUKG5POIISYWL46P3U", // GQX-AMM - "CBIQ5MND5I4AXWFSSDPDVN2X3DPR366YMBXUL6TABGUKMKVGOM2IAZJF", // XLM-BLND - "CCB6AP3L24Q7KW3LTMO6D3KLNV6MAFTK2TDTJ3XP7BRI2OP4O6SWQM53", // USDC-AMM - "CC2MSLNFYG63SKXLUTOJJOJWBORZ7NKH4IC66MG5SITKSN5MMFYH6FPE", // GQX-USDC - "CAX7KGAVK4YBJJWLNV22DFEWC53LKQG3TNSUORMYEDGRT57PTW5K7BZ2", // yXLM-AMM -] - -const tvl = async (api) => { - for (const pool of pools) { - const { data } = await axios.get(`https://api.stellar.expert/explorer/public/contract/${pool}/value`) - api.addUSDValue(data.total / 1e7) - } -} - -module.exports = { - stellar: { tvl } -} \ No newline at end of file diff --git a/projects/sorta-fi/index.js b/projects/sorta-fi/index.js deleted file mode 100644 index 8b0ad4dbab8..00000000000 --- a/projects/sorta-fi/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const sdk = require('@defillama/sdk') -const { stakings } = require('../helper/staking') - -const contract = '0xE2D74A5f8101E6829409e4Fa8bBADCE2e0012C70' - -function tvl(borrowed = false) { - return async (api, ...args) => { - - const key = borrowed ? 'borrowed' : 'tvl' - const comptrollers = await api.call({ abi: 'address[]:getControllers', target: contract }) - const tvls = comptrollers.map(i => compoundExports2({ comptroller: i })[key]) - return sdk.util.sumChainTvls(tvls)(api, ...args) - } -} - -const stakingContract = '0xd828eB62B026e3eFf70b867FfD8C86C0AEA9dBd8' -const token = '0x73c36aE64842Eaf4D9209dE10fdA21017b5f0709' - -module.exports = { - arbitrum: { - tvl: tvl(), - borrowed: tvl(true), - staking: stakings([stakingContract], token), - } -} diff --git a/projects/soswap/index.js b/projects/soswap/index.js deleted file mode 100644 index cfcd1b56dc3..00000000000 --- a/projects/soswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORY = "0x539db2B4FE8016DB2594d7CfbeAb4d2B730b723E" - - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs.`, - base: { - tvl: dexTVL - } -}; \ No newline at end of file diff --git a/projects/soulswap/index.js b/projects/soulswap/index.js deleted file mode 100644 index a314e56167b..00000000000 --- a/projects/soulswap/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { staking } = require('../helper/staking.js'); -const { underworldLending } = require('./underworld-lending.js') -const { getUniTVL } = require('../helper/unknownTokens') - -const abis = { - "allPairs": "function allPairs(uint256) view returns (address)", - "allPairsLength": "uint256:totalPairs" -} - -const factory_fantom = '0x1120e150dA9def6Fe930f4fEDeD18ef57c0CA7eF' -const farm_fantom = '0xb898226dE3c5ca980381fE85F2Bc10e35e00634c' -const soul_fantom = '0xe2fb177009ff39f52c0134e8007fa0e4baacbd07' - -const factory_avax = '0x5BB2a9984de4a69c05c996F7EF09597Ac8c9D63a' -const farm_avax = '0xB1e330401c920077Ddf157AbA5594238d36b54B1' -const soul_avax = '0x11d6DD25c1695764e64F439E32cc7746f3945543' - -module.exports = { - misrepresentedTokens: true, - fantom:{ - staking: staking(farm_fantom, soul_fantom), - tvl: getUniTVL({ factory: factory_fantom, useDefaultCoreAssets: true, abis, }), - borrowed: underworldLending('fantom', true) - }, - avax:{ - staking: staking(farm_avax, soul_avax), - tvl: getUniTVL({ factory: factory_avax, useDefaultCoreAssets: true, abis, }), - borrowed: underworldLending('avax', true) - }, - methodology: "Counts liquidity on the exchange, staked soul, and underworld assets.", -} diff --git a/projects/soulswap/underworld-lending.js b/projects/soulswap/underworld-lending.js deleted file mode 100644 index b1c9f3f9550..00000000000 --- a/projects/soulswap/underworld-lending.js +++ /dev/null @@ -1,81 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); -const { BigNumber } = require('bignumber.js'); - -// https://thegraph.com/hosted-service/subgraph/soulswapfantom/coffinbox -const graphUrls = { - 'fantom': sdk.graph.modifyEndpoint('FhS8cRWsTPZwXfmn7b8YGvKii2h2ghr2v7ah5T8oiDmo'), - 'avax': sdk.graph.modifyEndpoint('6WonmxWbw3MSVXVR5P4VhC8jWBEG5RkipWzxhAA67hoP'), -} - -const coffinboxQuery = gql` -query get_coffinboxes($block: Int, $tokensSkip: Int) { - coffinBoxes( - first: 100, - # block: { number: $block } - ) { - id - tokens ( - skip: $tokensSkip - first: 1000 - orderBy: totalSupplyBase - orderDirection: desc - ) { - id - symbol - name - decimals - totalSupplyBase # totalSupplyElastic - } - totalTokens - } - } -` - -function underworldLending(chain, borrowed) { - return async (timestamp, ethBlock, chainBlocks) => { - // Retrieve coffin boxes tokens held in contract - const boxTokens = [] - const graphUrl = graphUrls[chain] - const block = chainBlocks[chain] - const transform = x => `${chain}:${x}` - - // Query graphql endpoint and add tokenAndOwner to list - const { coffinBoxes } = await request( - graphUrl, - coffinboxQuery, - {block, tokensSkip: 0} - ) - coffinBoxes.forEach(async box => { - boxTokens.push(...box.tokens.map(t => [t.id, box.id])) - if (box.totalTokens > box.tokens.length) { - throw (`More tokens (${box.totalTokens}) in coffin box than returned by graphql api, probably over the 1000 tokens limit`) - } - }) - - // Sum all tokens - const balances = {} - - // What is retrieved before this line and stored as balances is what's left in the coffinbox, so real TVL. - // Now compute borrowed = supply minus tvl where supply is retrieved from thegraph - if (borrowed) { - const borrowed_balances = {} - coffinBoxes.forEach(box => { - box.tokens.forEach(async token => - sdk.util.sumSingleBalance(borrowed_balances, transform(token.id), token.totalSupplyBase) - ) - }) - for (const [key, value] of Object.entries(balances)) { - borrowed_balances[key] = BigNumber.max(0, BigNumber(borrowed_balances[key]).minus(balances[key])); - } - return borrowed_balances - } else { - return balances - } - } -} - -module.exports = { - underworldLending, - methodology: `TVL of SoulSwap Underworld lending consists of the tokens held in SoulSwap CoffinBox contracts - one coffinbox per chain - and borrows = supply - tvl` -} diff --git a/projects/sovryn-bridge/index.js b/projects/sovryn-bridge/index.js deleted file mode 100644 index fc41fdeb1f6..00000000000 --- a/projects/sovryn-bridge/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owner: "0x33C0D33a0d4312562ad622F91d12B0AC47366EE1", - fetchCoValentTokens: true, - logCalls: true, - }), - }, - bsc: { - tvl: sumTokensExport({ - owner: "0xdfc7127593c8Af1a17146893F10e08528F4C2AA7", - fetchCoValentTokens: true, - logCalls: true, - }), - }, -}; diff --git a/projects/sovryn-dex/index.js b/projects/sovryn-dex/index.js deleted file mode 100644 index 81cd541b03f..00000000000 --- a/projects/sovryn-dex/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const { staking } = require('../helper/staking') -const { request, gql } = require("graphql-request"); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getConfig } = require('../helper/cache') -const { getUniqueAddresses } = require('../helper/utils') -const { transformDexBalances } = require('../helper/portedTokens') - -async function tvl(api) { - // https://github.com/BetsyBraddock/Sovryn-Contracts-Package/blob/main/contracts-mainnet.json - - // const impl = await api.call({ abi: 'address:swapsImpl', target: '0x5a0d867e0d70fcc6ade25c3f1b89d618b5b4eaa7' }) - - const RSKprotocolContract = '0x5a0d867e0d70fcc6ade25c3f1b89d618b5b4eaa7' - - const res = await getConfig('sovryn', 'https://backend.sovryn.app/tvl') - - let pools = Object.values(res.tvlAmm).map(i => i?.contract).filter(i => i) - pools = getUniqueAddresses(pools) - const ownerTokens = [] - let data = [] - const allTokens = [] - const promises = pools.map(async (pool) => { - const tokens = await api.fetchList({ lengthAbi: 'reserveTokenCount', itemAbi: 'reserveTokens', target: pool }) - allTokens.push(...tokens) - if (tokens.length === 2) { - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokens.map(token => ({ target: token, params: pool })) }) - data.push({ - token0: tokens[0], - token1: tokens[1], - token0Bal: bals[0], - token1Bal: bals[1], - }) - } else - ownerTokens.push([tokens, pool]) - }) - await Promise.all(promises) - - ownerTokens.push([allTokens, RSKprotocolContract]) - await api.sumTokens({ ownerTokens }) - return transformDexBalances({ data, api, }) -} - -module.exports = { - misrepresentedTokens: true, - bob: { - tvl: async () => { const query = gql` - { - pools { base quote } - } - `; - const pools = await request(`https://bob-ambient-subgraph.sovryn.app/subgraphs/name/DistributedCollective/bob-ambient-subgraph`, query) - const tokens = pools.pools.map(i => [i.base, i.quote]).flat() - return sumTokens2({ chain: "bob", owner: '0xe5bc234A484A912A61Aa74501960cFc202e773dA', tokens, }); - }, - staking: staking('0xc17c6462ceafe9a8819258c6ba168bef5544fc21', '0xba20a5e63eeEFfFA6fD365E7e540628F8fC61474') - }, - rsk: { - tvl, - staking: staking('0x5684a06cab22db16d901fee2a5c081b4c91ea40e', '0xefc78fc7d48b64958315949279ba181c2114abbd') - }, -} diff --git a/projects/sovryn-lending/index.js b/projects/sovryn-lending/index.js deleted file mode 100644 index 75222ea5273..00000000000 --- a/projects/sovryn-lending/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { getUniqueAddresses } = require('../helper/utils') - -async function tvl(api) { - const res = await getConfig('sovryn', 'https://backend.sovryn.app/tvl') - let pools = Object.values(res.tvlLending).map(i => i?.contract).filter(i => i) - pools = getUniqueAddresses(pools) - const tokens = await api.multiCall({ abi: 'address:loanTokenAddress', calls: pools }) - return api.sumTokens({ tokensAndOwners2: [tokens, pools] }) -} - -async function borrowed(api) { - const res = await getConfig('sovryn', 'https://backend.sovryn.app/tvl') - let pools = Object.values(res.tvlLending).map(i => i?.contract).filter(i => i) - pools = getUniqueAddresses(pools) - const tokens = await api.multiCall({ abi: 'address:loanTokenAddress', calls: pools }) - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: pools }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: pools.map((v, i) => ({ target: tokens[i], params: v })) }) - api.addTokens(tokens, supplies) - bals.forEach((bal, i) => { - const token = tokens[i] - api.add(token, bal * -1) - }) - const balances = api.getBalances() - Object.entries(balances).forEach(([token, bal]) => { - if (+bal < 0) delete balances[token] - }) - return balances -} - -module.exports = { - rsk: { tvl, borrowed, } -} \ No newline at end of file diff --git a/projects/sovryn-zero/index.js b/projects/sovryn-zero/index.js deleted file mode 100644 index fc0d289bb2d..00000000000 --- a/projects/sovryn-zero/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - timetravel: false, - rsk: { - tvl: sumTokensExport({ owner: '0xf294ea272d6f8fedc08acf8e93ff50fe99e1f7e8', tokens: [nullAddress] }) - } -} \ No newline at end of file diff --git a/projects/soyfinance/index.js b/projects/soyfinance/index.js deleted file mode 100644 index 9272c831f9d..00000000000 --- a/projects/soyfinance/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x9CC7C769eA3B37F1Af0Ad642A268b80dc80754c5) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - callisto: { - tvl: getUniTVL({ - factory: '0x9CC7C769eA3B37F1Af0Ad642A268b80dc80754c5', - useDefaultCoreAssets: true, - blacklistedTokens: [ADDRESSES.callisto.SOY] - }) - }, - ethereumclassic: { - tvl: getUniTVL({ - factory: '0x23675f1Ac7cce101Aff647B96d7201EfCf66E4b0', - useDefaultCoreAssets: true, - }) - }, - bittorrent: { - tvl: getUniTVL({ - factory: ADDRESSES.callisto.BUSDT, - useDefaultCoreAssets: true, - }) - }, - bsc: { - tvl: getUniTVL({ - factory: '0x23675f1Ac7cce101Aff647B96d7201EfCf66E4b0', - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/spacebar/index.js b/projects/spacebar/index.js deleted file mode 100644 index c9287db6ef0..00000000000 --- a/projects/spacebar/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { request, } = require("graphql-request") -// const { getLogs } = require('../helper/cache/getLogs') - -const graphUrl = "https://api.studio.thegraph.com/query/67212/spacebar/version/latest" - -const tvlQuery = ` - { - totalValueLocked(id: "TVL") { - amount - } - } -` - -async function tvl() { - const response = await request(graphUrl, tvlQuery) - const tvlAmount = response.totalValueLocked.amount - return { - ["blast:" + ADDRESSES.null]: tvlAmount.toString(), - } -} - -// async function tvl(api) { -// const registry = '0xE1784da2b8F42C31Fb729E870A4A8064703555c2' -// const fromBlock = 203239 -// const unStakeLogs = await getLogs({ api, target: registry, eventAbi: 'event Unstake(address indexed service, address indexed user, address indexed to, uint256 amount)', onlyArgs: true, fromBlock, extraKey: 'unstake',}) -// const stakeLogs = await getLogs({ api, target: registry, eventAbi: 'event Stake(address indexed service, address indexed user, uint256 amount)', onlyArgs: true, fromBlock, extraKey: 'stake',}) -// stakeLogs.forEach(log => api.addGasToken(log.amount)) -// unStakeLogs.forEach(log => api.addGasToken(Number(log.amount) * -1)) -// } - -module.exports = { - blast: { - tvl, - }, -} diff --git a/projects/spacedex-io/index.js b/projects/spacedex-io/index.js deleted file mode 100644 index a7b6fa9997f..00000000000 --- a/projects/spacedex-io/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - -//Arbitrum -const arbitrumVault = '0xA2D4719b29991271F3a6f06C757Ce31C6731491E' -const arbitrumStaking = '0xdb3aE24F01E8a0AF40CEd355B7262BbdbFdF715A' -const arbitrumFalcon = '0xA822CfD3AcbC0eB1a1Aba073B3355aCaF756ef7F' - -//Bsc -const bscVault = '0x24Ed2bf2c1E76C621164d93B73debD10cdC4BBD0' -const bscStaking = '0x7B8f0a523E8B929EB854749096e1b032189e0f26' -const bscFalcon = '0x37D39950f9C753d62529DbF68fCb4DCa4004fBFd' - -module.exports = { - arbitrum: { - staking: staking(arbitrumStaking, arbitrumFalcon, "arbitrum", "falcon", 18), - tvl: gmxExports({ vault: arbitrumVault, }) - }, - bsc:{ - staking: staking(bscStaking, bscFalcon, "bsc", "falcon", 18), - tvl: gmxExports({ vault: bscVault, }) - }, - hallmarks:[ - [1678365000, "BSC SpaceDex Launch"], - [1680521400, "Arbitrum SpaceDex Launch"] - ], - -}; diff --git a/projects/spacefi-scroll/index.js b/projects/spacefi-scroll/index.js deleted file mode 100644 index 614717673e9..00000000000 --- a/projects/spacefi-scroll/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - scroll: { - tvl: getUniTVL({ factory: '0x6cC370Ed99f1C11e7AC439F845d0BA6aed55cf50', useDefaultCoreAssets: true, }) - } -}; \ No newline at end of file diff --git a/projects/spacefi-zksync/index.js b/projects/spacefi-zksync/index.js deleted file mode 100644 index 91ca50e6c01..00000000000 --- a/projects/spacefi-zksync/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ - factory: '0x0700Fb51560CfC8F896B2c812499D17c5B0bF6A7', - useDefaultCoreAssets: true, - }) - }, -}; diff --git a/projects/spacefi/index.js b/projects/spacefi/index.js deleted file mode 100644 index 510e02b22e7..00000000000 --- a/projects/spacefi/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - evmos: { - tvl: getUniTVL({ - factory: '0x868A71EbfC46B86a676768C7b7aD65055CC293eE', - useDefaultCoreAssets: true, - }) - } -}; diff --git a/projects/spacewhale/index.js b/projects/spacewhale/index.js deleted file mode 100644 index 0d5c8a4e23c..00000000000 --- a/projects/spacewhale/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const fundStore = "0xb7884D6bc7361EcbacAfAbBd949DE7D47B2a0e27"; // FundStore -const SPACEWHALE = "0xf5961a2441fC68E38300cd8ae8d6a172b12D7E7A"; // SPACEWHALE -const assets = [nullAddress, ADDRESSES.arbitrum.USDC_CIRCLE] // ETH, USDC - -module.exports = { - start: '2024-04-03', - arbitrum: { - tvl: sumTokensExport({ owners: [fundStore], tokens: assets }), - staking: sumTokensExport({ owners: [fundStore], tokens: [SPACEWHALE] }), - }, -} \ No newline at end of file diff --git a/projects/spadefinance/index.js b/projects/spadefinance/index.js deleted file mode 100644 index d5ab771e592..00000000000 --- a/projects/spadefinance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x7c799Af459C86069FEa65ee8c0ff3c059cDC021D', - nativeToken: '0x300e170EC32d09A4AA312A21c6bEd1C001Dcd996', -}) - -module.exports.hallmarks = [ - [1647734400, "Rug Pull"] - ], -module.exports.deadFrom='2022-03-20' diff --git a/projects/spark-fi/index.js b/projects/spark-fi/index.js deleted file mode 100644 index 915ac6376cc..00000000000 --- a/projects/spark-fi/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { aaveExports, } = require('../helper/aave'); -const { staking } = require('../helper/staking') - -const ethereumTvl = aaveExports('', '0x03cFa0C4622FF84E50E75062683F44c9587e6Cc1', undefined, ["0xFc21d6d146E6086B8359705C8b28512a983db0cb"], { v3: true }); -const ethereumStaking = staking("0xc6132FAF04627c8d05d6E759FAbB331Ef2D8F8fD", "0xc20059e0317DE91738d13af027DfC4a50781b066") - -module.exports = { - ethereum: { - ...ethereumTvl, - staking: ethereumStaking, - }, - xdai: aaveExports('', '0xA98DaCB3fC964A6A0d2ce3B77294241585EAbA6d', undefined, ["0x2a002054A06546bB5a264D57A81347e23Af91D18"], { v3: true }) -}; \ No newline at end of file diff --git a/projects/spark-liquidity-layer/index.js b/projects/spark-liquidity-layer/index.js deleted file mode 100644 index e9b0dca0080..00000000000 --- a/projects/spark-liquidity-layer/index.js +++ /dev/null @@ -1,313 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const morphoAbi = require("../helper/abis/morpho.json"); - -const almProxy = { - ethereum: '0x1601843c5E9bC251A3272907010AFa41Fa18347E', - base: '0x2917956eFF0B5eaF030abDB4EF4296DF775009cA', - arbitrum: '0x92afd6F2385a90e44da3a8B60fe36f6cBe1D8709', - optimism: '0x876664f0c9Ff24D1aa355Ce9f1680AE1A5bf36fB', - unichain: '0x345E368fcCd62266B3f5F37C9a131FD1c39f5869', -} - -const mainnetAllocatorToTokens = { - '0xAfA2DD8a0594B2B24B59de405Da9338C4Ce23437': [ - '0x4DEDf26112B3Ec8eC46e7E31EA5e123490B05B8B', // spDai - ], - '0xbf674d0cD6841C1d7f9b8E809B967B3C5E867653': [ - '0x09AA30b182488f769a9824F15E6Ce58591Da4781', // aEthLidoUSDS - ], - [almProxy.ethereum]: [ - '0x09AA30b182488f769a9824F15E6Ce58591Da4781', // aEthLidoUSDS - ADDRESSES.ethereum.sUSDe, - '0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', // aEthUSDC - '0x32a6268f9Ba3642Dda7892aDd74f1D34469A4259', // aEthUSDS - ADDRESSES.ethereum.USDe, - '0x6a9DA2D710BB9B700acde7Cb81F10F1fF8C89041', // BUIDL-I - '0x43415eB6ff9DB7E26A15b704e7A3eDCe97d31C4e', // USTB - '0x8c213ee79581Ff4984583C6a801e5263418C4b86', // JTSRY - '0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b', // syrupUSDC - '0x779224df1c756b4EDD899854F32a53E8c2B2ce5d', // spPYUSD - '0xe7dF13b8e3d6740fe17CBE928C7334243d86c92f', // spUSDT - '0x377C3bd93f2a2984E1E7bE6A5C22c525eD4A4815', // spUSDC - '0x56A76b428244a50513ec81e225a293d128fd581D', // morpho blue chip sparkUSDC - ] -} - -const baseAllocatorToTokens = { - [almProxy.base]: [ - '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A', // morpho sparkUSDC - '0xf62e339f21d8018940f188F6987Bcdf02A849619', // fsUSDS - '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB', // aBasUSDC - ADDRESSES.base.USDC, // idle USDC - ], - '0x1601843c5E9bC251A3272907010AFa41Fa18347E': [ - ADDRESSES.base.USDC, - ] -} - -const arbitrumAllocatorToTokens = { - [almProxy.arbitrum]: [ - ADDRESSES.arbitrum.USDC - ], - '0x2B05F8e1cACC6974fD79A673a341Fe1f58d27266': [ - ADDRESSES.arbitrum.USDC_CIRCLE - ] -} - -const optimismAllocatorToTokens = { - [almProxy.optimism]: [ - ADDRESSES.optimism.USDC_CIRCLE, - ], - '0xe0F9978b907853F354d79188A3dEfbD41978af62': [ - ADDRESSES.optimism.USDC_CIRCLE - ] -} - -const unichainAllocatorToTokens = { - [almProxy.unichain]: [ - ADDRESSES.unichain.USDC, - ], - '0x7b42Ed932f26509465F7cE3FAF76FfCe1275312f': [ - ADDRESSES.unichain.USDC - ] -} - -const CONFIG = { - ethereum: mainnetAllocatorToTokens, - base: baseAllocatorToTokens, - arbitrum: arbitrumAllocatorToTokens, - optimism: optimismAllocatorToTokens, - unichain: unichainAllocatorToTokens, -} - -async function tvl(api) { - const tokenRecords = CONFIG[api.chain] - const balanceCalls = Object.entries(tokenRecords).flatMap(([allocator, tokens]) => { - return tokens.map((token) => ({ target: token, params: allocator })) - }) - const balances = await api.multiCall({ abi: 'erc20:balanceOf', calls: balanceCalls }) - await addAaveBalances(api) - await addMorphoBalances(api) - await addEthenaUnstakeBalance(api) - await addCurveBalances(api) - - const allTokens = Object.values(tokenRecords).flat() - api.add(allTokens, balances) -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) - -const vaultConfigs = { - ethereum: [ - { - allocator: almProxy.ethereum, - vaultToken: '0x4DEDf26112B3Ec8eC46e7E31EA5e123490B05B8B', //spDAI - underlyingToken: ADDRESSES.ethereum.DAI, - }, - { - allocator: almProxy.ethereum, - vaultToken: '0xC02aB1A5eaA8d1B114EF786D9bde108cD4364359', //spUSDS - underlyingToken: '0xdC035D45d973E3EC169d2276DDab16f1e407384F', - }, - ], - base: [], - arbitrum: [], - optimism: [], - unichain: [], -} - -// discards idle supply on aave like markets for USDS and DAI -async function addAaveBalances(api) { - const vaults = vaultConfigs[api.chain] - if (vaults.length === 0) { - return - } - - const balances = [] - - for (const vault of vaults) { - const [underlyingBalance, totalSupply, allocatorBalance] = await api.batchCall([ - { - abi: 'erc20:balanceOf', - target: vault.underlyingToken, - params: vault.vaultToken, - }, - { - abi: 'erc20:totalSupply', - target: vault.vaultToken, - }, - { - abi: 'erc20:balanceOf', - target: vault.vaultToken, - params: almProxy[api.chain], - }, - ]) - - const utilization = 1 - underlyingBalance / totalSupply - const discountedBalance = allocatorBalance * utilization - balances.push(discountedBalance) - } - - const tokens = vaults.map((vault) => vault.vaultToken) - api.add(tokens, balances) -} - -const morphoVaultConfigs = { - ethereum: { - morphoSingleton: '0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb', - vaults: [ - { - allocator: '0x9C259F14E5d9F35A0434cD3C4abbbcaA2f1f7f7E', - address: '0x73e65DBD630f90604062f6E02fAb9138e713edD9', - idleMarketId: '0x57f4e42c0707d3ae0ae39c9343dcba78ff79fa663da040eca45717a9b0b0557f', - }, - { - allocator: almProxy.ethereum, - address: '0x73e65DBD630f90604062f6E02fAb9138e713edD9', - idleMarketId: '0x57f4e42c0707d3ae0ae39c9343dcba78ff79fa663da040eca45717a9b0b0557f', - }, - { - allocator: almProxy.ethereum, - address: '0xe41a0583334f0dc4E023Acd0bFef3667F6FE0597', - idleMarketId: '0x02e723fdfc0c26779c2c06bbf783e2f4d6aebd03cedc1806981b742f1a644105', - } - ] - }, -} - -// discards idle supply on morpho like markets for USDS and DAI -async function addMorphoBalances(api) { - const vaultConfig = morphoVaultConfigs[api.chain] - if (!vaultConfig) { - return - } - - for (const vault of vaultConfig.vaults) { - const [withdrawQueueLength, allocatorBalance] = await api.batchCall([ - { - abi: 'function withdrawQueueLength() external view returns (uint256)', - target: vault.address, - }, - { - abi: 'erc20:balanceOf', - target: vault.address, - params: vault.allocator, - }, - ]) - - const calls = Array.from({ length: Number(withdrawQueueLength) }).map((_, index) => ({ - target: vault.address, - params: index, - })) - const markets = await api.multiCall({ - abi: 'function withdrawQueue(uint256) public view returns (bytes32)', - calls, - }) - - const activeMarkets = markets.filter((market) => market !== vault.idleMarketId) - - const marketsData = await api.multiCall({ - abi: morphoAbi.morphoBlueFunctions.market, - calls: activeMarkets.map((market) => ({ - target: vaultConfig.morphoSingleton, - params: market, - })), - }) - - const totals = marketsData.reduce( - (sum, current) => ({ - borrowed: sum.borrowed + Number(current.totalBorrowAssets), - supplied: sum.supplied + Number(current.totalSupplyAssets), - }), - { - borrowed: 0, - supplied: 0, - }, - ) - - const utilization = totals.borrowed / totals.supplied - const discountedBalance = Number(allocatorBalance) * utilization - api.add(vault.address, discountedBalance) - } -} - -async function addEthenaUnstakeBalance(api) { - if (api.chain !== 'ethereum') { - return - } - - const response = await api.call({ - abi: 'function cooldowns(address) public view returns (tuple(uint104 cooldownEnd, uint152 underlyingAmount))', - target: ADDRESSES.ethereum.sUSDe, - params: almProxy.ethereum, - }) - - api.add(ADDRESSES.ethereum.USDe, response.underlyingAmount) -} - -const curveConfigs = { - ethereum: [ - { - address: '0x00836Fe54625BE242BcFA286207795405ca4fD10', - coinIndex: 1, - }, - { - address: '0xA632D59b9B804a956BfaA9b48Af3A1b74808FC1f', - coinIndex: 0, - }, - { - address: '0xA632D59b9B804a956BfaA9b48Af3A1b74808FC1f', - coinIndex: 1, - }, - ], - base: [], - arbitrum: [], - optimism: [], - unichain: [], -} - -async function addCurveBalances(api) { - const curvePools = curveConfigs[api.chain] - if (curvePools.length === 0) { - return - } - - const curveData = await Promise.all( - curvePools.map((curvePool) => - api.batchCall([ - { - abi: 'erc20:totalSupply', - target: curvePool.address, - }, - { - abi: 'erc20:balanceOf', - target: curvePool.address, - params: almProxy.ethereum, - }, - { - abi: 'function balances(uint256) public view returns (uint256)', - target: curvePool.address, - params: curvePool.coinIndex, - }, - { - abi: 'function coins(uint256) public view returns (address)', - target: curvePool.address, - params: curvePool.coinIndex, - }, - ]), - ), - ) - - const { tokens, balances } = curveData.reduce( - (acc, [totalSupply, lpBalance, coinBalance, coinAddress]) => { - const shares = lpBalance / totalSupply - const ownerCoinBalance = coinBalance * shares - return { tokens: [...acc.tokens, coinAddress], balances: [...acc.balances, ownerCoinBalance] } - }, - { tokens: [], balances: [] }, - ) - - api.add(tokens, balances) -} diff --git a/projects/spark-savings/index.js b/projects/spark-savings/index.js deleted file mode 100644 index fb1aeca98b5..00000000000 --- a/projects/spark-savings/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const CONFIG = { - ethereum: { - susdc: '0xBc65ad17c5C0a2A4D159fa5a503f4992c7B545FE', - }, - base: { - susdc: '0x3128a0F7f0ea68E7B7c9B00AFa7E41045828e858', - }, - arbitrum: { - susdc: '0x940098b108fB7D0a7E374f6eDED7760787464609', - }, - optimism: { - susdc: '0xCF9326e24EBfFBEF22ce1050007A43A3c0B6DB55', - }, - unichain: { - susdc: '0x14d9143BEcC348920b68D123687045db49a016C6', - }, -} - -async function tvl(api) { - const savings = CONFIG[api.chain] - - const response = await api.call({ - abi: 'erc20:totalSupply', - target: savings.susdc, - }) - api.add(savings.susdc, response) -} - -module.exports = { - start: '2025-03-03', - ...Object.fromEntries( - Object.keys(CONFIG).map((chain) => [ - chain, - { tvl }, - ]) - ), -} \ No newline at end of file diff --git a/projects/spark/index.js b/projects/spark/index.js deleted file mode 100644 index d7f4bf8e01b..00000000000 --- a/projects/spark/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens } = require("../helper/chain/fuel"); - -module.exports = { - fuel: { - tvl: (api) => - sumTokens({ - api, owners: [ '0xfe2c524ad8e088f33d232a45dbea43e792861640b71aa1814b30506bf8430ee5', //ETH-USDC - '0xdafe498b31f24ea5577055e86bf77e96bcba2c39a7ae47abaa819c303a45a352', //USDC-USDT - '0x81e83f73530c262b0dbf5414649a875c48a48144de3c08ff68cb9d54b36f2eaa', //FUEL-USDC - - '0xe4e4844f78e2e470b590d0c76ffc9f4422a87317377813a181a02c60a60bc774', //USDT-USDC - '0x0bef6eb3018d901818978175feccf650b65dee8e3a8f5b59e138bcf1cf1d0db9', //WETH-USDC - '0x4391b39d9165917faffb9dcc69d19b6952a6ebf02db593747cf2f5d8298d28c7', //FUEL-ETH - '0x272bc2c2d065e8ca22f0473e328f403bb1ba2e85d71f5fa51dcb83393714ff01', //TRUMP-ETH - '0xe4f64c6a9facdce0c055ecade9379c8f425411ec3f9523a472d14ce8a4fbce38', //ezETH-USDC - '0x12f52412e0ef50d4e38e1d03fd80d0a88fbaa7253e47f0cc48ba4e3049bd9ce4', //pzETH-USDC - - '0x2eece85eb7c8ec5fd95e639fd6bb7e9dd7103a99d7321521848da246ecef5270', //PSYCHO-USDC - '0x59020aadb448c59b48136a3cef110f1ddd2865000146514924f19b83f061ceba', //USDF-USDC - '0x979ea6b1e15c1ec8e79eb76b587af89dd2620b383082e9b2c16049b78e97e4e8', //USDT-ETH - ] - }) - } -} \ No newline at end of file diff --git a/projects/sparkdex-perps/index.js b/projects/sparkdex-perps/index.js deleted file mode 100644 index cc67a88b040..00000000000 --- a/projects/sparkdex-perps/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require("../helper/unwrapLPs"); - -const FlareUSDCe=ADDRESSES.rari.USDC_e; -const FlareSFLR="0x12e605bc104e93B45e1aD99F9e555f659051c2BB"; -const FlareUSDT0="0xe7cd86e13AC4309349F30B3435a9d337750fC82D" - -async function FlareTvl(api) { - const tokens = [nullAddress, FlareUSDCe, FlareSFLR, FlareUSDT0]; - const owners = ["0xF59b51cB430736E0F344b0101b23981DEaE10968"]; - return api.sumTokens({ owners, tokens }); -} - -module.exports = { - flare: { - tvl: FlareTvl, - }, -}; diff --git a/projects/sparkdex-v2/index.js b/projects/sparkdex-v2/index.js deleted file mode 100644 index 1427df73c2b..00000000000 --- a/projects/sparkdex-v2/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - flare: { - tvl: getUniTVL({ - factory: "0x16b619B04c961E8f4F06C10B42FDAbb328980A89", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/sparkdex-v3-1/index.js b/projects/sparkdex-v3-1/index.js deleted file mode 100644 index 0b7f09c0ce4..00000000000 --- a/projects/sparkdex-v3-1/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - flare: { factory: '0x8A2578d23d4C532cC9A98FaD91C0523f5efDE652', fromBlock: - 30717263, }, -}) diff --git a/projects/sparkdex-v3/index.js b/projects/sparkdex-v3/index.js deleted file mode 100644 index b97ba79390f..00000000000 --- a/projects/sparkdex-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - flare: { factory: '0xb3fB4f96175f6f9D716c17744e5A6d4BA9da8176', fromBlock: - 26046709, }, -}) diff --git a/projects/sparklex/index.js b/projects/sparklex/index.js deleted file mode 100644 index 334aaeef052..00000000000 --- a/projects/sparklex/index.js +++ /dev/null @@ -1,90 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { default: BigNumber } = require('bignumber.js') -const { post } = require('../helper/http') - -const ethereumEarnVaults = [ - '0xef8629D568AdCa04D0aC52C7388d5377872d7F61', - '0xBD35B9C345fC95ae2952Ad257A6c60f2861Be5F1', -] -const earnVaults = {}; -earnVaults['ethereum'] = ethereumEarnVaults; - -async function tvl(api) { - // fetch farming lp posisitons - if (api.chain === 'bsc' || api.chain === 'ethereum' || api.chain === 'base'){ - const farmingLpData = await post('https://backend-api.sparklex.io/metrics/farm/lp/list', {chain_id: api.chainId}, {headers: {'Content-Type': 'application/json'}}); - - if (farmingLpData['base_response']['status_code'] == 200){ - const lpPositions = farmingLpData['lps']; - let farmingTokenBals = {}; - - lpPositions.forEach((lp) => { - if (!lp) return; - const lpValue = lp['current_value'] - if (lpValue > 0) { - // Validate token amounts before adding them - const token0Amount = lp['token0_amount']; - const token1Amount = lp['token1_amount']; - - if (token0Amount && token0Amount > 0 && token0Amount < Number.MAX_SAFE_INTEGER) { - addTokenBalance(farmingTokenBals, lp['token0_address'], token0Amount); - } - if (token1Amount && token1Amount > 0 && token1Amount < Number.MAX_SAFE_INTEGER) { - addTokenBalance(farmingTokenBals, lp['token1_address'], token1Amount); - } - } - }); - - for (const [token, balance] of Object.entries(farmingTokenBals)) { - api.add(token, balance) - } - } - - } - - if (api.chain === 'ethereum'){ - let _vaults = earnVaults[api.chain]; - - // query totalAssets from earn vaults - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: _vaults }) - const calls = [] - const filteredBals = bals.filter((bal, i) => { - const hasBal = +bal > 0 - if (hasBal) calls.push(_vaults[i]) - return hasBal - }) - - // fetch asset token for each earn vault - const tokensAsset = await api.multiCall({ abi: 'address:asset', calls, permitFailure: true }) - filteredBals.forEach((bal, i) => { - const token = tokensAsset[i] - if (token) api.add(token, bal) - }) - - } - - return sumTokens2({ api, resolveLP: true }) -} - -function addTokenBalance(farmingTokenBals, tokenAddress, tokenAmount){ - if (tokenAmount === undefined || tokenAmount === null){ - return; - } - let _sumBal = farmingTokenBals[tokenAddress]; - let _newBal = BigNumber(tokenAmount); - _sumBal = (_sumBal === undefined || _sumBal === null)? _newBal : _sumBal.plus(_newBal); - farmingTokenBals[tokenAddress] = _sumBal; -} - -module.exports = { - doublecounted: true, - hallmarks: [ - ["2025-07-24", "SparkleX Official Launch"], - ] -} - -const chains = ['ethereum', 'base', 'bsc'] - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/sparkswap/index.js b/projects/sparkswap/index.js deleted file mode 100644 index f1aa9de9846..00000000000 --- a/projects/sparkswap/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require("../helper/unknownTokens"); -const { - sumTokensExport, - nullAddress, - sumUnknownTokens, -} = require("../helper/unknownTokens"); -const { mergeExports } = require("../helper/utils"); -const pendleAbi = require("../pendle/abi.json"); - -const FACTORY = "0x955219A87eB0C6754fd247266af970F7d16906CD"; -const SPARK_TOKEN = "0x6386704cD6f7A584EA9D23cccA66aF7EBA5a727e"; -const SPARK_LP = "0x33208439e1B28B1d6fCfbB6334e9950027Ee3B52"; -const SDAI_TOKEN = ADDRESSES.pulse.sDAI; -const SDAI_DAI_LP = "0xf32B9398a7277609772F328Fc2005D7DA5420E77"; -const SDAI_SPARK_LP = "0x9095D464A29Abd1B840C1C5205FB602ae5b011FF"; -const MASTERCHEF = "0x63c2a0083861F8C496A0A29BD8BA223E1180664e"; -const SPARKLER = "0x44Ee223D0a9Eec269b1757685F438bddB311F1AE"; - -module.exports = mergeExports([ - { - pulse: { - tvl, - }, - }, - { - misrepresentedTokens: true, - methodology: - "TVL accounts for the liquidity on all AMM pools. Staking accounts for the SPARK locked in SPARKLER", - pulse: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), - staking: sumTokensExport({ - owners: [SPARKLER, MASTERCHEF], - tokens: [SPARK_TOKEN, SDAI_TOKEN], - useDefaultCoreAssets: true, - lps: [SPARK_LP, SDAI_DAI_LP, SDAI_SPARK_LP], - }), - }, - } -]); - -// add amount in pulsex farm -async function tvl(api) { - let rehypothecations = await api.fetchList({ - lengthAbi: "uint256:poolLength", - itemAbi: - "function rehypothecations(uint256) view returns (address farm, uint256 pid)", - target: MASTERCHEF, - }); - rehypothecations = rehypothecations.filter((i) => i.farm !== nullAddress); - const bals = await api.multiCall({ - abi: pendleAbi.userInfo, - calls: rehypothecations.map(({ farm, pid }) => ({ - target: farm, - params: [pid, MASTERCHEF], - })), - }); - const pInfos = await api.multiCall({ - abi: "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accFishPerShare)", - calls: rehypothecations.map((i) => ({ target: i.farm, params: i.pid })), - }); - pInfos.forEach((pInfo, i) => { - api.add(pInfo.lpToken, bals[i].amount); - // THIS IS RETURNING STUPID VALUES - // api.add("0x2fa878ab3f87cc1c9737fc071108f904c0b0c95d", bals[i].rewardDebt); - }); - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true }); -} // node test.js projects/sparkswap/index.js diff --git a/projects/spartacadabra/index.js b/projects/spartacadabra/index.js deleted file mode 100644 index 50b1ac7bf5a..00000000000 --- a/projects/spartacadabra/index.js +++ /dev/null @@ -1,18 +0,0 @@ - -const {stakings} = require('../helper/staking'); - -const CHARM = '0x248CB87DDA803028dfeaD98101C9465A2fbdA0d4'; -const contracts = [ - '0x3e0c908de05193147e1278A3065b0784FeD80694', // Global Incentive Pool - '0xB7396019BC1Ee7E771155D138D57Ee9aBf16F5b4', // Spartacadabra DAO - '0xf98237Ef6c9A4990496d38a374d0C1098E26719e', // Team Vesting - '0x20dd72ed959b6147912c2e529f0a0c651c33c9ce', // LBP on Beethoven X -]; - -module.exports = { - methodology: "TVL account in Spartacadabra", - fantom: { - staking: stakings(contracts, CHARM), - tvl: (async) => ({}), - } -}; \ No newline at end of file diff --git a/projects/spartacus-exchange/index.js b/projects/spartacus-exchange/index.js deleted file mode 100644 index 9c73923c204..00000000000 --- a/projects/spartacus-exchange/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0x535646cf57E4155Df723bb24625f356d98ae9D2F' -}) diff --git a/projects/spartacus/index.js b/projects/spartacus/index.js deleted file mode 100644 index 8379f460d4f..00000000000 --- a/projects/spartacus/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - deadFrom: '2023-09-23', - fantom: { - tvl: () => 0, - staking: staking("0x9863056B4Bdb32160A70107a6797dD06B56E8137", "0x5602df4A94eB6C680190ACCFA2A475621E0ddBdc") - } -} \ No newline at end of file diff --git a/projects/spartadex/index.js b/projects/spartadex/index.js deleted file mode 100644 index e760b929898..00000000000 --- a/projects/spartadex/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - arbitrum: { tvl: getUniTVL({ factory: '0xFe8EC10Fe07A6a6f4A2584f8cD9FE232930eAF55', useDefaultCoreAssets: true, }), }, - linea: { tvl: getUniTVL({ factory: '0x9E4Fc4a5A0769ba74088856C229c4a1Db2Ea5A9e', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/spartan-protocol/index.js b/projects/spartan-protocol/index.js deleted file mode 100644 index 104cf4f6dbf..00000000000 --- a/projects/spartan-protocol/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const factoryAbi = { - "getPool": "function getPool(address token) view returns (address pool)", - "getTokenAssets": "address[]:getTokenAssets" -} - -const factory = "0x2C577706579E08A88bd30df0Fd7A5778A707c3AD"; -const sparta = "0x3910db0600eA925F63C36DdB1351aB6E2c6eb102"; - -async function tvl(api) { - let tokens = await api.call({ target: factory, abi: factoryAbi["getTokenAssets"], }) - const pools = await api.multiCall({ abi: factoryAbi.getPool, target: factory, calls: tokens }) - const ownerTokens = pools.map((pool, i) => [[tokens[i], sparta], pool]) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - methodology: - "We count only the liquidity in the V2 pools. We do not include anything staked in the vaults nor any liquidity in the V1 pools.", - bsc: { - tvl, - }, -}; diff --git a/projects/specfinance.js b/projects/specfinance.js deleted file mode 100644 index 4005da6d552..00000000000 --- a/projects/specfinance.js +++ /dev/null @@ -1,48 +0,0 @@ -const { queryContract, getToken } = require('./helper/chain/cosmos') -const astroFarms = [ - 'terra144mkz6p3mmnuqaenu73pg4jwayr3m28xzhaxedlfwfnyke45w6yqvf9ed6', - 'terra1ufpsjrvj5fkvdedx2ttslnrc2wxvrftf4zcsvu778cufvlh4m9dsmgcf6f', - 'terra1erm54gtdtfqv2s4c7ple3kmret7eecuj02nk5w8h08jjnenjffzsynsp0u', - 'terra1qczgczguzmxpsqfwlcaqm5hpy3jrkgrkkkcdxhd4uf28t8l8j6qsgtd863', - 'terra1ha4yvzqnq4mpu205wcd430m6m7wjklpquwn87dq89g9zersuvryses7rua', - 'terra1udwqynsmrme00ksrakkyerrfjdkw9p05557yrrw6ca6x94uuj2zs0vpqt2', - 'terra1gxqzjk4pkyzpnxnrz7h486vntvv4lmaukcs24v9gcsmcm4tyre7qytcm5e', - 'terra1w6l7kjc6wu7an37wnnehcfc3tpksw9tde9u67743ew0caly0hdasv0ws79', - 'terra1j9ggd8wf73ggsfet99wnjvn06f3l9w9lsf50uac43h6vclysfc9sp0nyfh', - 'terra1v9luz2r9u8mzd4w8ew5dm4cczk8kcxun4jry464j48jsl2fus2qss73ld4', - 'terra1n8lx9uhysjfxsc9cqanydrkqlm3wrenew8kc0vqzjr6gw0u92teqrmvxcv', - 'terra1fz4x56u96fkgzvtdxaq2969qlmfk4wnwq0fqhlrklpqc629ah9qs4h8v50', - 'terra1z8q3gq26fnvdfaj0yrf04unmlkt2uge2d0j9ve25zpyfj9u2r9jsxw8msm', - 'terra1fe83u43uz65smen45vwvj7w5838nerehv2la6utvhsr9c87ykr0qsvshqu', - 'terra1rasvh4nv8znpjg6jtkzxjskfynze98h9zv4qn8ese7tkwf0zjaaq0z60t8', -] - -async function terra2(api) { - const { chain } = api - for (const farm of astroFarms) { - const { total_bond_share } = await queryContract({ contract: farm, data: { state: {} }, chain }) - if (total_bond_share === 0) continue - const { pair } = await queryContract({ contract: farm, data: { config: {} }, chain }) - const { assets, total_share } = await queryContract({ contract: pair, data: { pool: {} }, chain }) - const ratio = total_bond_share / total_share - assets.forEach(({ amount, info }) => { - const token = getToken(info) - api.add(token, amount * ratio) - }) - } - - return api.getBalances() -} - -module.exports = { - timetravel: false, - terra: { - tvl: () => ({}), - }, - terra2: { - tvl: terra2 - }, - hallmarks: [ - [1651881600, "UST depeg"], - ] -} diff --git a/projects/specter-finance/index.js b/projects/specter-finance/index.js deleted file mode 100644 index 7e3f4d8a2b1..00000000000 --- a/projects/specter-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const token = "0x2B7c5841997275d2D548cE9b19D54B655725EBFc"; -const share = "0x7B510C49d1894d5E9C980e356eB82dD7995e6EdF"; -const rewardPool = "0xfe0cC03e061c87f3aCC97736c11FC32Cc87f7bC6"; -const masonry = "0x54A9E4bA5d9CE9eA8BC92c6b12FD9BE39a8eb272"; - -const pool2LPs = [ - "0x7cb0158531efded51ca662564f14b4d28cdde6eb", - "0x8d36bb2f98fd508bd1b239b07b9b9d05d7d91267" -]; - -module.exports = { - deadFrom: 1648765747, - misrepresentedTokens: true, - ...tombTvl(token, share, rewardPool, masonry, pool2LPs, "fantom", undefined, false, "0x7CB0158531efdeD51CA662564F14b4d28CDDe6eB") -} diff --git a/projects/spectra/abi.json b/projects/spectra/abi.json deleted file mode 100644 index 63026fe2040..00000000000 --- a/projects/spectra/abi.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "markets": { - "balances": "function balances(uint256 index) view returns (uint256)" - }, - "pt": { - "getIBT": "function getIBT() view returns (address)", - "balanceOf": "function balanceOf(address account) view returns (uint256)" - }, - "vault": { - "convertToAsset": "function convertToAssets(uint256 shares) view returns (uint256 assets)", - "asset": "function asset() view returns (address assetTokenAddress)" - } -} diff --git a/projects/spectra/config.json b/projects/spectra/config.json deleted file mode 100644 index dfeab981715..00000000000 --- a/projects/spectra/config.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "ethereum": [ - { - "factory": "0xae4d5d5199265512B2a77Ad675107735B891aBc8", - "fromBlock": 19727256 - }, - { - "factory": "0xDBE5B6AaC70EeA77C5b59B6c54D8F21DffAA8D84", - "fromBlock": 22345842 - } - ], - "arbitrum": [ - { - "factory": "0x51100574E1CF11ee9fcC96D70ED146250b0Fdb60", - "fromBlock": 204418891 - }, - { - "factory": "0x9055eBE4E01040c0c4a6D9Bb84a13188981c62D4", - "fromBlock": 330060717 - } - ], - "optimism": [ - { - "factory": "0x9c594C2e2e2e5aa300be12596215188C324c3E7c", - "fromBlock": 122132149 - }, - { - "factory": "0x3945ce79F528906c232c6834D00c8F6A218b8BF5", - "fromBlock": 134991788 - } - ], - "base": [ - { - "factory": "0x51100574E1CF11ee9fcC96D70ED146250b0Fdb60", - "fromBlock": 16537568 - }, - { - "factory": "0xDBE5B6AaC70EeA77C5b59B6c54D8F21DffAA8D84", - "fromBlock": 29396708 - } - ], - "sonic": [ - { - "factory": "0xC9092777bF098e74B23B66c4140064eB3FcCD0F1", - "fromBlock": 1856411 - }, - { - "factory": "0x100F22121d8c86367B14bA67968DCA8001C9FA79", - "fromBlock": 22214752 - } - ], - "hemi": [ - { - "factory": "0x51100574E1CF11ee9fcC96D70ED146250b0Fdb60", - "fromBlock": 1289435 - }, - { - "factory": "0x2c06c9D02a3455F1B22B9365EB76Bf558dB1B947", - "fromBlock": 1658441 - } - ], - "avax": [ - { - "factory": "0x64FCC3A02eeEba05Ef701b7eed066c6ebD5d4E51", - "fromBlock": 62814000 - } - ], - "bsc": [ - { - "factory": "0x64FCC3A02eeEba05Ef701b7eed066c6ebD5d4E51", - "fromBlock": 50421500 - } - ], - "hyperliquid": [ - { - "factory": "0xd187cb71fe8201935e6676ff872239fff552d4a5", - "fromBlock": 6375000 - } - ], - "katana": [ - { - "factory": "0xac61e44816160028474fd9f5baae492b5620f370", - "fromBlock": 4715236 - } - ] -} diff --git a/projects/spectra/index.js b/projects/spectra/index.js deleted file mode 100644 index 262e51102f4..00000000000 --- a/projects/spectra/index.js +++ /dev/null @@ -1,90 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const abi = require("./abi.json"); -const config = require("./config.json"); -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking.js") - -// staking - SPECTRA token -const SPECTRA = "0x64fcc3a02eeeba05ef701b7eed066c6ebd5d4e51" -const veSPECTRA = "0x6a89228055c7c28430692e342f149f37462b478b" - -module.exports = { - methodology: `All deposited underlying in Spectra Principal Tokens and all underlying supplied as liquidity in Spectra Markets`, - hallmarks: [[1717074000, "V2 Launch"]], -}; - -const curvePoolDeployedTopic = "0x3c7b686d948efcba31c9cfd1aeae78faac70fe0c1ed90d151d49c75e85027a91"; -const ptDeployedTopic = "0xcf50c3e7162cc35f5befd4f0379ddd760d499ca96330c9ae8faa4059919caaee"; - -const getMarkets = async (api, factory, fromBlock) => { - const logs = await getLogs({ - api, - target: factory, - topic: curvePoolDeployedTopic, - eventAbi: "event CurvePoolDeployed(address indexed poolAddress, address indexed ibt, address indexed pt)", - onlyArgs: true, - fromBlock: fromBlock, - extraKey: "markets", - }); - - return logs.map((i) => [i.poolAddress, i.ibt]); -} - -const getPTs = async (api, factory, fromBlock) => { - const logs = await getLogs({ - api, - target: factory, - topic: ptDeployedTopic, - eventAbi: "event PTDeployed(address indexed pt, address indexed poolCreator)", - onlyArgs: true, - fromBlock: fromBlock, - extraKey: "pts", - }); - - return logs.map((i) => i.pt); -} - -const tvl = async (api) => { - const sources = config[api.chain] - const [marketDatas, pts] = await Promise.all([ - Promise.all(sources.map(({ factory, fromBlock }) => getMarkets(api, factory, fromBlock))).then(data => data.flat()), - Promise.all(sources.map(({ factory, fromBlock }) => getPTs(api, factory, fromBlock))).then(data => data.flat()) - ]) - - const marketsBalances = await api.multiCall({ calls: marketDatas.map(([market]) => ({ target: market, params: [0] })), abi: abi.markets.balances }) - const ptIBTs = await api.multiCall({ calls: pts, abi: abi.pt.getIBT }) - const ptIBTbals = await api.multiCall({ calls: pts.map((pt, i) => ({ target: ptIBTs[i], params: [pt] })), abi: 'erc20:balanceOf' }) - - const poolIBTBalances = marketDatas.reduce((acc, market, i) => { - const ibt = market[1]; - const balance = (+marketsBalances[i]); - acc[ibt] = (acc[ibt] || 0) + balance; - return acc; - }, {}); - - const ptIBTBalances = ptIBTs.reduce((acc, ibt, i) => { - const balance = (+ptIBTbals[i]); - acc[ibt] = (acc[ibt] || 0) + balance; - return acc; - }, {}); - - const allIBTBalances = { ...poolIBTBalances }; - for (const [ibt, balance] of Object.entries(ptIBTBalances)) { - allIBTBalances[ibt] = (allIBTBalances[ibt] || 0) + balance; - } - - const assets = await api.multiCall({ calls: Object.keys(allIBTBalances).map((ibt) => ({ target: ibt })), abi: abi.vault.asset }) - const assetsBalances = await api.multiCall({ calls: Object.entries(allIBTBalances).map(([ibt, balance]) => ({ target: ibt, params: [BigInt(balance)] })), abi: abi.vault.convertToAsset, permitFailure :true }) - - assets.forEach((asset, i) => { - const assetsBalance = assetsBalances[i] - if (!assetsBalance) return; - api.add(asset, assetsBalance) - }) -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl } -}) - -module.exports.base.staking = staking(veSPECTRA, SPECTRA) \ No newline at end of file diff --git a/projects/spectrefi/index.js b/projects/spectrefi/index.js deleted file mode 100644 index 75751e0011f..00000000000 --- a/projects/spectrefi/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x0a53F16a00c593cbe5F6C890E751338396FE680f', - nativeToken: '0x2834d4F4cC40bd7D78c07E2D848358364222C272', -}) \ No newline at end of file diff --git a/projects/spectrumswap/index.js b/projects/spectrumswap/index.js deleted file mode 100644 index 00b714f156b..00000000000 --- a/projects/spectrumswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0xD56d886b71b32f0817F4309C8368FE8769d479fc"; -const token = "0x4AE1A0D592DC4d1c51D37C2AEfE6D2572FC47F7a"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/sperax-demeter-v2/index.js b/projects/sperax-demeter-v2/index.js deleted file mode 100644 index 2c04b1014c3..00000000000 --- a/projects/sperax-demeter-v2/index.js +++ /dev/null @@ -1,9 +0,0 @@ -async function tvl(api) { - const farms = await api.call({ target: '0x45bC6B44107837E7aBB21E2CaCbe7612Fce222e0', abi: 'address[]:getFarmList', }) - const tokensAndBals = await api.multiCall({ calls: farms, abi: 'function getTokenAmounts() view returns (address[], uint256[])', }) - tokensAndBals.forEach(([t, b]) => api.add(t, b)) -} - -module.exports = { - arbitrum: { tvl }, -} \ No newline at end of file diff --git a/projects/sperax-demeter/index.js b/projects/sperax-demeter/index.js deleted file mode 100644 index c6d6df80816..00000000000 --- a/projects/sperax-demeter/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const farms = await api.call({ - target: '0xC4fb09E0CD212367642974F6bA81D8e23780A659', - abi: 'function getFarmList() view returns (address[])', - }) - const rewardTokens = await api.multiCall({ - calls: farms, - abi: 'function getRewardTokens() view returns (address[])', - }) - - const toa = [] - farms.forEach((o, i) => { - rewardTokens[i].forEach(t => toa.push([t, o])) - }); - await sumTokens2({ api, owners: farms, resolveUniV3: true, }) - const camelotFarms = (await api.multiCall({ abi: 'address:nftPool', calls: farms, permitFailure: true, })).map((v, i) => v ? [v, farms[i]] : null).filter(v => v) - await Promise.all(camelotFarms.map(i => getFarmTvl(api, i))) - return sumTokens2({ api, tokensAndOwners: toa, }) -} - -async function getFarmTvl(api, [nftPool, farm]) { - const poolInfo = await api.call({ abi: "function getPoolInfo() view returns (address lpToken, address grailToken, address xGrailToken, uint256 lastRewardTime, uint256 accRewardsPerShare, uint256 lpSupply, uint256 lpSupplyWithMultiplier, uint256 allocPoint)", target: nftPool, }) - const tokenCount = await api.call({ abi: 'erc20:balanceOf', target: nftPool, params: farm, }) - const calls = [] - for (let i= 0;i< +tokenCount;i++) calls.push({ params: [farm, i]}) - const tokenIds = await api.multiCall({ abi: 'function tokenOfOwnerByIndex(address,uint256) view returns (uint256)', calls, target: nftPool}) - const positions = await api.multiCall({ abi: "function getStakingPosition(uint256 tokenId) view returns (uint256 amount, uint256 amountWithMultiplier, uint256 startLockTime, uint256 lockDuration, uint256 lockMultiplier, uint256 rewardDebt, uint256 boostPoints, uint256 totalMultiplier)", calls: tokenIds, target: nftPool,}) - positions.forEach((position, i) => { - api.add(poolInfo.lpToken, position.amount) - }) -} - -module.exports = { - doublecounted: true, - arbitrum: { tvl } -} \ No newline at end of file diff --git a/projects/sperax/abi.json b/projects/sperax/abi.json deleted file mode 100644 index 09010832fd2..00000000000 --- a/projects/sperax/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalValueLocked": "uint256:totalValueLocked" -} \ No newline at end of file diff --git a/projects/sperax/index.js b/projects/sperax/index.js deleted file mode 100644 index 69441ce9944..00000000000 --- a/projects/sperax/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const ethStakingAddr = "0xbF82a3212e13b2d407D10f5107b5C8404dE7F403"; -const arbStakingAddr = "0x2e2071180682Ce6C247B1eF93d382D509F5F6A17"; - -const SPA = '0x5575552988a3a80504bbaeb1311674fcfd40ad4b'; -const ethSPA = '0xB4A3B0Faf0Ab53df58001804DdA5Bfc6a3D59008'; - -async function tvl(api) { - const vault = '0x6Bbc476Ee35CBA9e9c3A59fc5b10d7a0BC6f74Ca' - const collateralManager = await api.call({ abi: 'address:collateralManager', target: vault}) - const tokens = await api.call({ abi: 'address[]:getAllCollaterals', target: collateralManager}) - const bals = await api.multiCall({ abi: 'function getCollateralInVault(address) view returns (uint256)', calls: tokens, target: collateralManager }) - const bals2 = await api.multiCall({ abi: 'function getCollateralInStrategies(address) view returns (uint256)', calls: tokens, target: collateralManager }) - api.add(tokens, bals) - api.add(tokens, bals2) -} - -module.exports = { - arbitrum: { - tvl, - staking: staking(arbStakingAddr, SPA) - }, - ethereum: { - tvl: () => ({}), - staking: staking(ethStakingAddr, ethSPA) - }, - methodology: 'Counts all collateral locked to mint USDs.This collateral is either sent to DeFi strategies to produce an organic yield, or is stored in the VaultCore contract of the USDs protocol. Some TVL is classified as staking. This component of TVL consists of all SPA staked in Sperax’s veSPA protocol.' -}; \ No newline at end of file diff --git a/projects/sphere-finance/index.js b/projects/sphere-finance/index.js deleted file mode 100644 index a81d8f7dfca..00000000000 --- a/projects/sphere-finance/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { get } = require('../helper/http') - -const sphere_token = "0x62f594339830b90ae4c084ae7d223ffafd9658a7" -const stakingAddress = "0x4Af613f297ab00361D516454E5E46bc895889653" // ylSPHERE - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - polygon: { - tvl: async () => { - const data = await get('https://spheretvl.simsalacrypto.workers.dev/') - return { - tether: data.portfolio.net_worth_pools - } - }, - } -} diff --git a/projects/spherium/index.js b/projects/spherium/index.js deleted file mode 100644 index 629630b861b..00000000000 --- a/projects/spherium/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const abi = { - "getAllWhitelistedTokenNames": "string[]:getAllWhitelistedTokenNames", - "whitelistedTokenAddress": "function whitelistedTokenAddress(string) view returns (address)" -} -const bridgeAddr = "0x0b8c93c6aaeabfdf7845786188727aa04100cb61"; -const supportedChains = [ - "ethereum", - "bsc", - "polygon", - "avax", - "fantom", - "arbitrum", - "cronos", - "moonriver", - "moonbeam", - "optimism", - "aurora", - "okexchain", - "kcc", -]; - -const blackList = new Set(["SPHRI"]); - -const tvl = async (api) => { - let tokenNames = await api.call({ target: bridgeAddr, abi: abi.getAllWhitelistedTokenNames, }) - tokenNames = tokenNames.filter(i => !blackList.has(i)) - const tokens = await api.multiCall({ target: bridgeAddr, abi: abi.whitelistedTokenAddress, calls: tokenNames }) - return api.sumTokens({ owner: bridgeAddr, tokens, }) -}; - -supportedChains.forEach((chain) => { - module.exports[chain] = { tvl }; -}); \ No newline at end of file diff --git a/projects/sphynx/index.js b/projects/sphynx/index.js deleted file mode 100644 index 539b9921c11..00000000000 --- a/projects/sphynx/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const config = { - bsc: '0x8BA1a4C24DE655136DEd68410e222cCA80d43444', - cronos: '0x5019EF5dd93A7528103BB759Bb2F784D065b826a', - bitgert: '0xd4688F52e9944A30A7eaD808E9A86F95a0661DF8', - // ethereum: '0x5Fc2b10Efb7C202Ab84ffF9Ea54d240280421D4b', - // polygon: '0xF902beC4aFEcd6b9d9998F582f580Be6994A56aB', - loop: '0xc0246b4f24475a11ee4383d29575394dc237fc36', - // okexchain: '0xd38Ec16cAf3464ca04929E847E4550Dcff25b27a', - // avax: '0x4faAFf0925886AcC7B6fE752F50d244E32248700', - // arbitrum: '0x945905D2E8D14fD58E156684Ad56a71cb02F2F02', - // optimism: '0xb37C9656e88927F9CAa6177ac409EF31f85f789A', -} - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { tvl: getUniTVL({ factory, useDefaultCoreAssets: true }) } -}) diff --git a/projects/spice-finance/index.js b/projects/spice-finance/index.js deleted file mode 100644 index 20e18f48028..00000000000 --- a/projects/spice-finance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const vaults = [ - '0xAe11ae7CaD244dD1d321Ff2989543bCd8a6Db6DF', // Flagship - '0xd68871bd7D28572860b2E0Ee5c713b64445104F9', // Leverage - '0x6110d61DD1133b0f845f1025d6678Cd22A11a2fe', // VIP - '0xfC287513E2DD58fbf952eB0ED05D511591a6215B', // Blur -] - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - api.addTokens(tokens, bals) -} - -module.exports = { - misrepresentedTokens: true, - methodology: `Counts WETH deposited to earn yield via NFT lending.`, - ethereum: { - tvl, - }, -}; diff --git a/projects/spice-protocol/constants.js b/projects/spice-protocol/constants.js deleted file mode 100644 index 689e980f441..00000000000 --- a/projects/spice-protocol/constants.js +++ /dev/null @@ -1,8 +0,0 @@ - -const CONFIG = { - plume_mainnet: ['0x6A64f470293630e08d24455ec0B73960aB7dbb23'], -}; - -module.exports={ - CONFIG, -} diff --git a/projects/spice-protocol/index.js b/projects/spice-protocol/index.js deleted file mode 100644 index aa6e412c241..00000000000 --- a/projects/spice-protocol/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const {CONFIG} = require("./constants.js") -const { sumTokens2 } = require('../helper/unwrapLPs') - -Object.keys(CONFIG).forEach((chain) => { - const vaults = CONFIG[chain]; - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) - let bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: vaults }) - const ratio = await api.multiCall({ abi: 'uint256:pricePerShare', calls: vaults }) - const decimals = await api.multiCall({ abi: 'uint256:decimals', calls: vaults }) - bals = bals.map((bal, i) => bal * ratio[i] / 10 ** decimals[i]) - api.addTokens(tokens, bals) - - return sumTokens2({ api, resolveLP: true, }) - } - } -}); \ No newline at end of file diff --git a/projects/spice/index.js b/projects/spice/index.js deleted file mode 100644 index 29181db4e21..00000000000 --- a/projects/spice/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { PublicKey } = require('@solana/web3.js'); -const { getConnection, sumTokens2 } = require('../helper/solana'); - - -async function tvl() { - const programId = new PublicKey('CcoYv1X4RczUmuGCUw3Vg1XWxspaofsh8dtD26cmN7nm'); - const connection = getConnection(); - - const SPICE_SEED = Buffer.from("SPICE"); - const TREASURY_SEED = Buffer.from("TREASURY"); - - const [treasuryAccount] = PublicKey.findProgramAddressSync( - [SPICE_SEED, TREASURY_SEED], - programId - ); - - const tokenAccountsData = await connection.getParsedTokenAccountsByOwner( - treasuryAccount, - { programId: new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA") } - ); - - const tokenAccounts = tokenAccountsData.value.map(account => account.pubkey.toBase58()); - - return sumTokens2({ tokenAccounts, solOwners: [treasuryAccount.toBase58()], nativeToken: 'solana' }); -} - -module.exports = { - timetravel: false, - solana: { tvl }, -}; - - diff --git a/projects/spicetrade/contracts.json b/projects/spicetrade/contracts.json deleted file mode 100644 index d02aa26e7f7..00000000000 --- a/projects/spicetrade/contracts.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "avax": { - "tokenHolders": { - "USDSGalaxy": { - "collateralReserve": "0xd6f8764e47c82bd9f35ed575e6a6f89b822c45cf", - "dollarFarms": "0xdce3b2264b0f271615939d141f4f22bc0b71f81c" - }, - "iUSDSGalaxy": { - "collateralReserve": "0xa4d266791be4b9e9363c691ea5752864f2d6bd3d" - } - }, - "tokens": { - "base": { - "USDC": "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664" - }, - "lp": { - "USDC-RADIO-RLP": "0x68dd45dda990e41348cb8af51932a12f72518e94" - }, - "staking": { - "SPICE": "0xf30c5083a1479865c9a8916dec6ddadd82e8907b" - }, - "pool2": { - "SPICE-RADIO-RLP": "0x53b4debb084b33dc0d9db6d4225a18b69ba5a51e", - "USDS-RADIO-RLP": "0x7f5b3bc5ed70bc83ab0e828ca262e5cbe02e1ae2", - "USDS-av3CRV-CURVE": "0x90d5233b53436767fecacd1a783d3da8cc7395ed" - } - }, - "curveGaugeMapping": { - "0x5b5cfe992adac0c9d48e05854b2d91c73a003858": "0x1337bedc9d22ecbe766df105c9623922a27963ec" - }, - "factory": "0xE61A092225A6639844693626491200BE1333D5cb" - }, - "polygon": { - "factory": "0x9eF87bA6EEc990E44F1BB56676C65Fd8f5bb5770", - "tokenHolders": { - "USDSGalaxy": { - "collateralReserve": "0x55a5334d1a402383c5a8c622301ea00cc8cd1681", - "dollarFarms": "0xf790FF41FFc2B9A4Fe203485fD9B431b13EE7A1E" - }, - "iUSDSGalaxy": { - "collateralReserve": "0xb045a5010089B53ecF6D08Ef85eAC77897864aE3" - } - }, - "tokens": { - "base": { - "USDC": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" - }, - "lp": { - - }, - "staking": { - "SPICE": "0x66e8617d1df7ab523a316a6c01d16aa5bed93681" - }, - "pool2": { - "SPICE-RADIO-RLP": "0x9eefd0aa7ef05928d021c78561002fb1a2f9ea60", - "USDS-RADIO-RLP": "0x3f20b4ae47cbfbb50942ea2e8822d2a71183faa1", - "USDS-am3CRV-CURVE": "0xcf5186491739aac19db943d71a9b9b759f3afabf" - } - }, - "curveGaugeMapping": { - "0x19793b454d3afc7b454f206ffe95ade26ca6912c": "0xe7a24ef0c5e95ffb0f6684b813a78f2a3ad7d171" - } - }, - "bsc": { - "factory": "0x19813b4AA783a4aEef5f9155875Af2492A2A207d", - "tokenHolders": { - "USDSGalaxy": { - "collateralReserve": "0x66e8617d1Df7ab523a316a6c01D16Aa5beD93681", - "dollarFarms": "0xa4acaf871759bc0f6f1ca0bd3819e7fafe8b7acb" - }, - "iUSDSGalaxy": { - "collateralReserve": "0x0404084e0e63eb98766a4540a0ac6b0fbf17d155" - } - }, - "tokens": { - "base": { - "BUSD": "0xe9e7cea3dedca5984780bafc599bd69add087d56" - }, - "lp": { - - }, - "staking": { - "SPICE": "0x42586ef4495bb512a86cf7496f6ef85ae7d69a64" - }, - "pool2": { - - } - } - }, - "ethereum": { - "factory": "0x71BcC0BF974AAE8CC55D033c17d50486fC77e3Ae", - "tokenHolders": { - "USDSGalaxy": { - "collateralReserve": "0xe78e4322bd3256589133b6e85ec523e63fc212cb", - "dollarFarms": "0xf3c85aa8d48ba8bcaa4424ce8f121f8a62d59002" - }, - "iUSDSGalaxy": { - "collateralReserve": "0x7953c852304813a71a21d8729adae82e8e1b6441" - } - }, - "tokens": { - "base": { - "USDC": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" - }, - "lp": { - "USDC-RADIO-RLP": "0xc19c5b63705807079dbf6d54071f9113233283f5" - }, - "staking": { - "SPICE": "0x18a1ea69a50a85752b7bc204a2c45a95ce6e429d" - }, - "pool2": { - "SPICE-RADIO-RLP": "0x994f5acb01f70a1997eb649dd90b0c8bc9498c8d", - "USDS-RADIO-RLP": "0x4c55011e3b909e3e8ec3b381d184260bf2c472bf", - "USDS-3CRV-CURVE": "0xde495223f7cd7ee0cde1addbd6836046bbdf3ad3" - } - } - } -} \ No newline at end of file diff --git a/projects/spicetrade/index.js b/projects/spicetrade/index.js deleted file mode 100644 index cffc4012d96..00000000000 --- a/projects/spicetrade/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -// taken from https://docs.spicetrade.ai/misc/official-addresses -const contracts = require('./contracts.json'); -const chains = Object.keys(contracts); -const sdk = require('@defillama/sdk') -const { getUniTVL } = require('../helper/unknownTokens') - -function getTokens(chain, type) { - switch (type) { - case 'tvl': - const tokens = Object.values(contracts[chain].tokens.base) - const lps = Object.values(contracts[chain].tokens.lp) - return tokens.concat(lps); - - case 'staking': - return Object.values(contracts[chain].tokens.staking) - - case 'pool2': - return Object.values(contracts[chain].tokens.pool2) - } -} - -const tvl = (chain, type) => { - return async (api) => { - let holders = [] - for (let key in contracts[chain].tokenHolders) { - holders.push(...Object.values(contracts[chain].tokenHolders[key])); - } - - const tokens = getTokens(chain, type) - const toa = tokens.map(t => holders.map(o => [t, o])).flat() - return sumTokens2( { api, tokensAndOwners: toa, resolveLP: true }) - }; -}; - -const chainTypeExports = (chains) => { - return chains.reduce((obj, chain) => { - const uniTVL = getUniTVL({ - factory: contracts[chain].factory, - useDefaultCoreAssets: true, - }) - return ({ - ...obj, - [chain]: { - tvl: sdk.util.sumChainTvls([uniTVL, ]), - pool2: tvl(chain, "pool2"), - staking: tvl(chain, "staking") - } - }) - }, {} - ); -}; - -module.exports = chainTypeExports(chains) \ No newline at end of file diff --git a/projects/spicy-dao/index.js b/projects/spicy-dao/index.js deleted file mode 100644 index 91407ef8c66..00000000000 --- a/projects/spicy-dao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const {ohmTvl} = require("../helper/ohm"); - -const spc = "0x6007fca39b5398feac4d06d75435a564a086bab8" -const spcStaking = "0xE1F2C6D1194eA9bfd532b66de7066944600cC58E"; -const treasury = "0xb0E70A60bec6699a85681Fb7AECeF35A8800da6E"; -const spcMimPGL = "0x910fA8fcd781AcCaa82CD544Ac235Ba921927494"; -const mim = "0x130966628846bfd36ff31a822705796e8cb8c18d"; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, [ - [spcMimPGL, true], - [mim, false] - ], "avax", spcStaking, spc, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/spicyswap/index.js b/projects/spicyswap/index.js deleted file mode 100644 index 12bf26ac4e6..00000000000 --- a/projects/spicyswap/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') -const { transformDexBalances, } = require('../helper/portedTokens') - -async function staking() { - return sumTokens2({ owners: ['KT1DUwNeGHVHVW3RqjdfrGgucZHTxy228c68'] }) -} - -module.exports = { - tezos: { - tvl: async () => { - const balances = await sumTokens2({ owners: ['KT1Uq1nmWrnEuBtqMg3FP5nBxfhyHR62y2U3'] }) // limit order tvl - const data = await getStorage('KT1PwoZxyv4XkPEGnTqWYvjA1UYiPTgAGyqL') - const swaps = await getBigMapById(data.pairs); - const pairs = Object.values(swaps).map(i => i.contract) - const data1 = [] - for (const pair of pairs) { - const data = await getStorage(pair) - data1.push({ - token0: getToken(data.token0), - token1: getToken(data.token1), - token0Bal: data.reserve0, - token1Bal: data.reserve1 - }) - } - return transformDexBalances({ balances, chain: 'tezos', data: data1}) - }, - staking, - } -} - -function getToken({ token_id, fa2_address }) { - return fa2_address + (token_id && token_id !== '0' ? `-${token_id}` : '') -} \ No newline at end of file diff --git a/projects/spiko/index.js b/projects/spiko/index.js deleted file mode 100644 index a6663ce75b9..00000000000 --- a/projects/spiko/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { multiCall } = require('../helper/chain/starknet') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - polygon: [ - '0xe4880249745eAc5F1eD9d8F7DF844792D560e750', - '0xa0769f7A8fC65e47dE93797b4e21C073c117Fc80' - ], - ethereum: [ - '0xe4880249745eAc5F1eD9d8F7DF844792D560e750', - '0xa0769f7A8fC65e47dE93797b4e21C073c117Fc80' - ], - arbitrum: [ - '0x021289588cd81dC1AC87ea91e91607eEF68303F5', - '0xcbeb19549054cc0a6257a77736fc78c367216ce7' - ], - base: [ - '0xe4880249745eAc5F1eD9d8F7DF844792D560e750', - '0xa0769f7A8fC65e47dE93797b4e21C073c117Fc80' - ], - starknet: [ - '0x20ff2f6021ada9edbceaf31b96f9f67b746662a6e6b2bc9d30c0d3e290a71f6', - '0x4f5e0de717daa6aa8de63b1bf2e8d7823ec5b21a88461b1519d9dbc956fb7f2' - ], - etlk: [ - '0xe4880249745eAc5F1eD9d8F7DF844792D560e750', - '0xa0769f7A8fC65e47dE93797b4e21C073c117Fc80', - ] -} - -const totalSupplyAbi = { - "name": "totalSupply", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "totalSupply", - "type": "uint256" - } - ], - "stateMutability": "view", -} - -Object.keys(config).forEach(chain => { - const assets = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let supplies - if (chain === 'starknet') - supplies = await multiCall({ abi: totalSupplyAbi, calls: assets }) - else - supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: assets }) - api.add(assets, supplies) - return sumTokens2({ api }) - } - } -}) diff --git a/projects/spin-prep/index.js b/projects/spin-prep/index.js deleted file mode 100644 index 07c72144b14..00000000000 --- a/projects/spin-prep/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { call, addTokenBalances } = require('../helper/chain/near'); - -const PERP_PROJECT_CONTRACT = 'v2_0_2.perp.spin-fi.near'; -const GET_BASE_CUURENCY_METHOD = 'get_base_currency'; - -async function tvl() { - let perpFtCurrency = (await call(PERP_PROJECT_CONTRACT, GET_BASE_CUURENCY_METHOD, {}))['address']; - - // NOTE: add collateral balance (only USDC right now) for perp - return addTokenBalances(perpFtCurrency, PERP_PROJECT_CONTRACT); -} - - -module.exports = { - timetravel: false, - near: { - tvl, - }, -} diff --git a/projects/spin-vault/index.js b/projects/spin-vault/index.js deleted file mode 100644 index bd1d0b38372..00000000000 --- a/projects/spin-vault/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { call, addTokenBalances } = require('../helper/chain/near'); - -const VAULT_PROJECT_CONTRACT = 'v1.vault.spin-fi.near' -const VAULT_GET_ALL = 'vault_get_all'; - -async function tvl() { - // NOTE: add TVL for vaults - const execution_assets = (await call(VAULT_PROJECT_CONTRACT, VAULT_GET_ALL, { limit: "100", offset: "0" })) - .map(v => v?.invariant?.execution_asset) - .filter(asset => typeof asset === 'string' && asset.includes('.near')); - - return addTokenBalances(execution_assets, VAULT_PROJECT_CONTRACT); -} - -module.exports = { - timetravel: false, - near: { tvl }, -} diff --git a/projects/spin/index.js b/projects/spin/index.js deleted file mode 100644 index 04e11710156..00000000000 --- a/projects/spin/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { call, view_account, addTokenBalances, sumSingleBalance } = require('../helper/chain/near'); - -const SPOT_PROJECT_CONTRACT = 'spot.spin-fi.near'; -const GET_CURRENCIES_METHOD = 'get_currencies'; -const NATIVE_NEAR = 'near.near'; -const FT_NEAR = 'wrap.near'; -const FT_AURORA = 'd9c2d319cd7e6177336b0a9c93c21cb48d84fb54.factory.bridge.near'; - -async function tvl() { - let spotFtCurrencies = (await call(SPOT_PROJECT_CONTRACT, GET_CURRENCIES_METHOD, {})) - .filter(token => token['address'] !== NATIVE_NEAR) - .map(token => token['address']) - .filter(address => typeof address === 'string' && address.includes('.')); - - // NOTE: replace correct aurora token address for Near Protocol with incorrect but working - spotFtCurrencies['aurora'] = spotFtCurrencies[FT_AURORA]; - delete spotFtCurrencies[FT_AURORA]; - - // NOTE: balances for spot FT tokens - let balances = await addTokenBalances(spotFtCurrencies, SPOT_PROJECT_CONTRACT); - - // NOTE: add near balance for spot - const spot_contract_state = await view_account(SPOT_PROJECT_CONTRACT); - sumSingleBalance(balances, FT_NEAR, spot_contract_state['amount']); - return balances; -} - -module.exports = { - timetravel: false, - near: { tvl }, - methodology: 'Summed up all the tokens deposited into Spin DEX' -} diff --git a/projects/spinaqdex/index.js b/projects/spinaqdex/index.js deleted file mode 100644 index 73a1bd57a3b..00000000000 --- a/projects/spinaqdex/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -const SPINAQ = "0x802124EB78E43FD8d3d4E6DAAAa4Be28Dc7993dc"; -const FACTORY = "0x36E0F99A19481976C42CC45Aec7205B10807E275" - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, - arbitrum: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true,}), - }, -}; \ No newline at end of file diff --git a/projects/spindash/index.js b/projects/spindash/index.js deleted file mode 100644 index 18b5c8b9613..00000000000 --- a/projects/spindash/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const config = { - sonic: { - token: "0x5fd9cd00c975ccedb4298a562d132fb2683164d9", - contract: "0x486b750b2DB5d8B1548A78319F6CF8D95501Ff58" - }, -}; - -async function tvl(_, _1, _2, { api }) { - const { token, contract } = config.sonic; - return sumTokens2({ api, owner: contract, tokens: [token] }); -} - -module.exports = { - methodology: "TVL is calculated based on the total balance of Spindash tokens locked in the protocol's smart contract.", - sonic: { tvl }, -}; diff --git a/projects/spiral-dao/abi.json b/projects/spiral-dao/abi.json deleted file mode 100644 index bc914099df2..00000000000 --- a/projects/spiral-dao/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "poolCount": "function poolCount() external view returns (uint256)", - "poolInfo": "function poolInfo(uint256 poolId) external view returns (tuple(address target, address adapter, uint256 targetPoolId, uint256 rewardableDeposits) memory)", - "lockableToken": "function lockableToken(uint256) external view returns (address)" -} - diff --git a/projects/spiral-dao/index.js b/projects/spiral-dao/index.js deleted file mode 100644 index 6e6da8c3144..00000000000 --- a/projects/spiral-dao/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { staking } = require('../helper/staking') -const sdk = require('@defillama/sdk'); -const abi = require('./abi.json'); - -const MASTERMIND = "0xFACE8DED582816E2f2cD4C6cc1cbD1aCCc9df65E" -const STAKING = "0x6701e792b7cd344bae763f27099eeb314a4b4943" -const COIL = '0x823E1B82cE1Dc147Bbdb25a203f046aFab1CE918' - -async function tvl(api) { - const balances = {} - let pools = await api.fetchList({ target: MASTERMIND, itemAbi: abi.poolInfo, lengthAbi: abi.poolCount, }) - let poolInputs = await api.fetchList({ target: MASTERMIND, itemAbi: abi.lockableToken, lengthAbi: abi.poolCount, }) - for (let i = 0; i < pools.length; i++) { - await sdk.util.sumSingleBalance(balances, poolInputs[i], pools[i].rewardableDeposits) - } - return balances; -} - - -module.exports = { - methodology: 'Information is retrieved from both the blockchain and the SpiralDAO API. "https://api.spiral.farm".', - ethereum: { - tvl, - staking: staking(STAKING, COIL), - } -}; - diff --git a/projects/spiral-fi-mixer/index.js b/projects/spiral-fi-mixer/index.js deleted file mode 100644 index 2032acb827e..00000000000 --- a/projects/spiral-fi-mixer/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - era: { - tvl: sumTokensExport({ owner: '0xcd98e2C68248de044c3E44144C34D9EBb09337a9', tokens: [ADDRESSES.era.USDC]}) - }, - polygon_zkevm: { - tvl: sumTokensExport({owner: '0x96DaD05740807e76892076684F433D5E0b3569fB', tokens: [ADDRESSES.polygon_zkevm.USDC]}) - } -} \ No newline at end of file diff --git a/projects/spiral-finance/abi.json b/projects/spiral-finance/abi.json deleted file mode 100644 index 08941c1eac8..00000000000 --- a/projects/spiral-finance/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address target, address adapter, uint256 targetPoolId, uint256 drainModifier, uint256 totalShares, uint256 totalDeposits, uint256 entranceFee)", - "lockableToken": "function lockableToken(uint256 poolId) view returns (address)", - "token0": "address:token0", - "token1": "address:token1" -} \ No newline at end of file diff --git a/projects/spiral-finance/index.js b/projects/spiral-finance/index.js deleted file mode 100644 index 58acbcd87ed..00000000000 --- a/projects/spiral-finance/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { unwrapUniswapLPs, nullAddress } = require("../helper/unwrapLPs"); - -const spr = "0x8c739564345dfcb7e4c7e520b0e8fa142c358a78"; -const mastermind = "0x0Ff4c81489fbaFf02201b55636Df5889b43972e9"; - -async function calcTvl(block, spr, mastermind, pool2, api) { - const balances = {} - const poolInfos = (await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: mastermind })).filter(i => i.target !== nullAddress) - - const tokens = (await api.multiCall({ - calls: poolInfos.map(p => ({ - target: p.target, - params: p.targetPoolId - })), - abi: abi["lockableToken"], - })) - - const symbols = (await api.multiCall({ - calls: tokens, - abi: "erc20:symbol", - })); - - const lps = []; - - for (let i = 0; i < poolInfos.length; i++) { - if (tokens[i] === null) continue; - const token = tokens[i].toLowerCase(); - const symbol = symbols[i]; - const balance = poolInfos[i].totalDeposits; - if (token === spr) continue; - if (!symbol.endsWith("LP") && pool2) continue; - if (symbol.endsWith("LP")) { - lps.push([token, balance]); - } else { - sdk.util.sumSingleBalance(balances, `fantom:${token}`, balance); - } - } - - const lpToken0 = (await api.multiCall({ - calls: lps.map(p => ({ - target: p[0] - })), - abi: abi["token0"], - })); - - const lpToken1 = (await api.multiCall({ - calls: lps.map(p => ({ - target: p[0] - })), - abi: abi["token1"], - })); - - let lpPositions = []; - for (let i = 0; i < lps.length; i++) { - const token = lps[i][0].toLowerCase(); - const token0 = lpToken0[i].toLowerCase(); - const token1 = lpToken1[i].toLowerCase(); - if (pool2) { - if (token0 !== spr && token1 !== spr) continue; - lpPositions.push({ - token, - balance: lps[i][1] - }); - } else { - if (token0 === spr || token1 === spr) continue; - lpPositions.push({ - token, - balance: lps[i][1] - }); - } - } - - await unwrapUniswapLPs(balances, lpPositions, api.block, api.chain, addr => `fantom:${addr}`); - - return balances; -} - -async function tvl(api) { - return await calcTvl(api.block, spr, mastermind, false, api); -} - -async function pool2(api) { - return await calcTvl(api.block, spr, mastermind, true, api); -} - -module.exports = { - fantom: { - tvl, - pool2 - } -} diff --git a/projects/spirit-dao/index.js b/projects/spirit-dao/index.js deleted file mode 100644 index c1dd0ab4d3d..00000000000 --- a/projects/spirit-dao/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const ghost = "0xa72eab7327e48bde0ff873eaf1d4fecf6036504f"; -const ghostStaking = "0x37076706ee1C549a32103e81DCc3Ee56e6477960"; - -const treasury = "0x32A0BEfc3092F3740d9D507AA4EC6C9CF0848e2E"; -const mim = "0x130966628846bfd36ff31a822705796e8cb8c18d"; -const ghostMimJLP = "0x0BC14d02d04dCd6c7a73D1f89d2448F09676a849"; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl( - treasury, - [ - [mim, false], - [ghostMimJLP, true], - ], - "avax", - ghostStaking, - ghost, - undefined, - undefined, - false - ), -}; diff --git a/projects/spiritfarm/index.js b/projects/spiritfarm/index.js deleted file mode 100644 index 4a0d5103513..00000000000 --- a/projects/spiritfarm/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: 'base', - masterchef: '0x26d7700c33e7d73BA0f135Ba901A1796d5474b85', - useDefaultCoreAssets: true, - nativeToken: '0xC7A148Ad554826b5308E100a05Fdb037DDa0bDe4' -}) \ No newline at end of file diff --git a/projects/spiritswap-lending/index.js b/projects/spiritswap-lending/index.js deleted file mode 100644 index 3627fe9826f..00000000000 --- a/projects/spiritswap-lending/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - hallmarks: [ - [1693526400, "Lending Network deprecated"] - ], - fantom: compoundExports2({ comptroller: '0x892701d128d63c9856A9Eb5d967982F78FD3F2AE' }), -} -module.exports.fantom.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/spiritswap-v3/index.js b/projects/spiritswap-v3/index.js deleted file mode 100644 index 5b5b4947982..00000000000 --- a/projects/spiritswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - fantom: { factory: '0xb860200bd68dc39ceafd6ebb82883f189f4cda76', fromBlock: 78654346, isAlgebra: true, } -}) diff --git a/projects/spiritswap/index.js b/projects/spiritswap/index.js deleted file mode 100644 index e92d2bde542..00000000000 --- a/projects/spiritswap/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const {staking} = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk'); - - -const factory = '0xEF45d134b73241eDa7703fa787148D9C9F4950b0' -const factory2 = '0x9d3591719038752db0c8bEEe2040FfcC3B2c6B9c' -const chain = 'fantom' -const ammTvl = getUniTVL({ chain, factory, useDefaultCoreAssets: false, }) -const ammTvl2 = getUniTVL({ chain, factory: factory2, useDefaultCoreAssets: false, blacklist: ["0x5b2af7fd27e2ea14945c82dd254c79d3ed34685e"] }) - - -module.exports = { - fantom:{ - tvl: sdk.util.sumChainTvls([ammTvl,ammTvl2]), - staking: staking("0x2fbff41a9efaeae77538bd63f1ea489494acdc08", "0x5cc61a78f164885776aa610fb0fe1257df78e59b") - }, -} diff --git a/projects/spl-governance/index.js b/projects/spl-governance/index.js deleted file mode 100644 index 1abdbfd465b..00000000000 --- a/projects/spl-governance/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { PublicKey } = require('@solana/web3.js') -const { get } = require('../helper/http') -const { getConnection } = require('../helper/solana') -const { sliceIntoChunks } = require('../helper/utils') - -const url = 'https://realms-tvl.vercel.app/tvl/latest' - -const isSolOrStable = (token) => ['sol', 'usd', 'btc', 'eth'].some(i => token.token_symbol.toLowerCase().includes(i)) - -async function tvl(api, isStaking = false) { - // const connnection = getConnection() - let { totalValueUsd: { tokens } } = await get(url) - const filterFn = isStaking ? i => !isSolOrStable(i) : isSolOrStable - tokens = tokens.filter(filterFn) - tokens.forEach(i => api.addUSDValue(i.value)) - /* const decimalsMap = {} - const _tokens = tokens.map(i => i.token) - const chunks = sliceIntoChunks(_tokens, 99) - - for (const chunk of chunks) { - const { value } = await connnection.getMultipleParsedAccounts(chunk.map(i => new PublicKey(i))) - value.forEach((val, i) => { - decimalsMap[chunk[i]] = val.data.parsed.info.decimals - }) - } - - for (const token of tokens) - api.add(token.token, +token.balance * 10 ** decimalsMap[token.token]) */ -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'SOL token and stables held in the contracts are counted under tvl, gov tokens are counted under staking', - timetravel: false, - solana: { tvl: api => tvl(api), staking: api => tvl(api, true), } -} diff --git a/projects/splash.js b/projects/splash.js deleted file mode 100644 index a0b2acb6ba8..00000000000 --- a/projects/splash.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require('./helper/http'); -const ADDRESSES = require('./helper/coreAssets.json') - -const ADA = ADDRESSES.cardano.ADA - -async function tvl(api) { - let { tvlAda } = await get('https://analytics.splash.trade/platform-api/v1/platform/stats') - api.add(ADA, tvlAda) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - cardano: { tvl } -} diff --git a/projects/splashing-stake/index.js b/projects/splashing-stake/index.js deleted file mode 100644 index 039408aed35..00000000000 --- a/projects/splashing-stake/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const STAKING = "0x151669B501b561a52ad95574603AD52546F46Bf4"; - -async function tvl(api) { - const totalSei = await api.call({ - abi: "function getTotalSei() view returns (uint256)", - target: STAKING, - params: [], - }); - - const SEI_TOKEN = ADDRESSES.null; - - api.add(SEI_TOKEN, totalSei); -} - -module.exports = { - methodology: "Counts the total SEI locked in the Staking contract using getTotalSei().", - start: 1000235, - sei: { - tvl, - }, -}; diff --git a/projects/splice-fi/index.js b/projects/splice-fi/index.js deleted file mode 100644 index d12f0e3d2cf..00000000000 --- a/projects/splice-fi/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const { getLogs, getLogs2 } = require("../helper/cache/getLogs"); - -const config = { - mode: [{ - factoryV3: "0x9e6d12097339ddd5402FDD39fc0Ef86Eec54AB39", - fromBlockV3: 7764229, - }], - blast: [{ - factoryV3: "0x96A6C433078059577F0CEB707d596A5F81d64375", - fromBlockV3: 1850297, - }, { - factoryV3: "0xf87E18913f7143E7C7eFee714813ABbC8e0E34bf", - fromBlockV3: 1850297, - },], -} - -Object.keys(config).forEach((chain) => { - const factories = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const logsV3 = (await Promise.all(factories.map(i => getLogs2({ - api, - target: i.factoryV3, - topic: [ - "0xae811fae25e2770b6bd1dcb1475657e8c3a976f91d1ebf081271db08eef920af", - ], - eventAbi: - "event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor, uint256 lnFeeRateRoot)", - fromBlock: i.fromBlockV3, - })))).flat() - - const pt = logsV3.map((i) => i.PT) - let sy = [ - ...new Set( - ( - await api.multiCall({ - abi: "address:SY", - calls: pt, - }) - ).map((s) => s.toLowerCase()) - ), - ]; - - const [data, supply, decimals] = await Promise.all([ - api.multiCall({ - abi: "function assetInfo() view returns (uint8 assetType , address uAsset , uint8 decimals )", - calls: sy, - }), - api.multiCall({ abi: "erc20:totalSupply", calls: sy }), - api.multiCall({ abi: "erc20:decimals", calls: sy }), - ]); - - const tokenAssetTypeSy = sy.filter((_, i) => data[i].assetType === "0"); - const exchangeRates = await api.multiCall({ - abi: "function exchangeRate() view returns (uint256 res)", - calls: tokenAssetTypeSy, - }); - - data.forEach((v, i) => { - let value = supply[i] * 10 ** (v.decimals - decimals[i]); - let index = tokenAssetTypeSy.indexOf(sy[i]); - if (index !== -1) { - value = (value * exchangeRates[index]) / 10 ** 18; - } - api.add(v.uAsset.toLowerCase(), value); - }); - }, - }; -}); diff --git a/projects/spookybase/index.js b/projects/spookybase/index.js deleted file mode 100644 index a29234509a7..00000000000 --- a/projects/spookybase/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, staking } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') -const uniTvl = getUniTVL({ factory: '0x9EB4C1e84A4ccCbe154B485b9314EF0F9B5b78f8', useDefaultCoreAssets: true, }) -const masterchef = '0x895678a139605AE183Fc753888EcfEb6896267Aa' -const spooky = '0xd63EBbE933f422Bf8BC6F909FA27E467b537ca81' -const weth = ADDRESSES.base.WETH - -module.exports = { - misrepresentedTokens: true, - base: { - tvl: sdk.util.sumChainTvls([uniTvl, staking({ - owners: [masterchef], - tokens: [weth], - })]), - staking: staking({ - owners: [masterchef], - tokens: [spooky], - }) - } -}; \ No newline at end of file diff --git a/projects/spookyswap-v3/index.js b/projects/spookyswap-v3/index.js deleted file mode 100644 index 130009168b4..00000000000 --- a/projects/spookyswap-v3/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -const factory = "0x7928a2c48754501f3a8064765ECaE541daE5c3E6"; -const factory_bttc = "0xE12b00681dD2e90f51d9Edf55CE1A7D171338165"; -const factory_sonic = "0x3D91B700252e0E3eE7805d12e048a988Ab69C8ad"; - -module.exports = uniV3Export({ - fantom: { factory, fromBlock: 70992836, blacklistedTokens:['0x6e5e3ce13e2c7d4de000f93c4909164d0aa59f0b'] }, - //eon: { factory, fromBlock: 679684 }, - bittorrent: { factory: factory_bttc, fromBlock: 26441276 }, - sonic: { factory: factory_sonic, fromBlock: 286535 }, -}) diff --git a/projects/spookyswap/index.js b/projects/spookyswap/index.js deleted file mode 100644 index dd2a206e91a..00000000000 --- a/projects/spookyswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") -module.exports={ - misrepresentedTokens: true, - fantom:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x152eE697f2E276fA89E96742e9bB9aB1F2E61bE3' }), - }, - eon:{ - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xa6AD18C2aC47803E193F75c3677b14BF19B94883' }), -}, -bittorrent: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xee4bc42157cf65291ba2fe839ae127e3cc76f741' }), - }, -sonic: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xEE4bC42157cf65291Ba2FE839AE127e3Cc76f741' }), - } -} diff --git a/projects/spool-fi-sreth/index.js b/projects/spool-fi-sreth/index.js deleted file mode 100644 index 37b11e7b184..00000000000 --- a/projects/spool-fi-sreth/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const abi = { - "getSmartVaultAssetBalances": "function getSmartVaultAssetBalances(address, bool) external returns (uint256[] memory)" -} - -const ethContract = "0x5d6ac99835b0dd42ed9ffc606170e59f75a88fde"; -const spoolLens = '0x8aa6174333F75421903b2B5c70DdF8DA5D84f74F'; - -async function eth(api) { - const tvlETH = await api.call({ - target: spoolLens, - abi: abi["getSmartVaultAssetBalances"], - params: [ethContract, false] - }); - api.addGasToken(tvlETH[0]) - return api.getBalances() -} - -module.exports = { - methodology: 'TVL is counted as deposits routed to the underlying Liquid Staking protocols in the vault.', - doublecounted: true, // tokens are stored in underlying LSDs - misrepresentedTokens: true, - ethereum: { - tvl: eth - } -} diff --git a/projects/spool-v2/abi.json b/projects/spool-v2/abi.json deleted file mode 100644 index af8ae9b6091..00000000000 --- a/projects/spool-v2/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "strategyUnderlyingAmountAbi": "function getUnderlyingAssetAmounts() external view returns (uint256[] memory amounts)" -} diff --git a/projects/spool-v2/index.js b/projects/spool-v2/index.js deleted file mode 100644 index 0df04b0366d..00000000000 --- a/projects/spool-v2/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking.js"); -const { cachedGraphQuery } = require('../helper/cache') - -const config = { - ethereum: { - subgraphUrl: - "https://api.studio.thegraph.com/query/41372/spool-v2_mainnet/version/latest", - }, -}; - -module.exports = { - methodology: `Counting assets deployed to each strategy`, -}; - -const allStrategiesQuery = ` - query MyQuery { - strategies(where: { isRemoved: false, isGhost: false }) { - id - isRemoved - assetGroup { - assetGroupTokens {token { id } } - } - } - }` - -Object.keys(config).forEach((chain) => { - const { subgraphUrl } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - let { strategies } = await cachedGraphQuery(`spool-v2-${chain}`, subgraphUrl, allStrategiesQuery) - const tokens = strategies.map((i) => i.assetGroup.assetGroupTokens.map(i => i.token.id)); - strategies = strategies.map(i => i.id); - let strategiesAssetAmounts = await api.multiCall({ abi: abi.strategyUnderlyingAmountAbi, calls: strategies, }); - strategiesAssetAmounts.forEach((bals, i) => api.addTokens(tokens[i], bals)) - return api.getBalances(); - }, - }; -}); - -const SPOOL = "0x40803cea2b2a32bda1be61d3604af6a814e70976"; -const SPOOL_staking = "0xc3160C5cc63B6116DD182faA8393d3AD9313e213"; -module.exports.ethereum.staking = staking(SPOOL_staking, SPOOL); diff --git a/projects/spool/abi.json b/projects/spool/abi.json deleted file mode 100644 index 23322a7cb19..00000000000 --- a/projects/spool/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "spoolController_getAllStrategies": "address[]:getAllStrategies", - "masterSpool_getUnderlying": "function getUnderlying(address strat) view returns (uint128)", - "masterSpool_getStratUnderlying": "function getStratUnderlying(address strat) returns (uint128)", - "strategy_underlying": "address:underlying" -} \ No newline at end of file diff --git a/projects/spool/index.js b/projects/spool/index.js deleted file mode 100644 index 1daae2ff2d8..00000000000 --- a/projects/spool/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const sdk = require("@defillama/sdk") -const { sumTokens2, } = require("../helper/unwrapLPs.js") -const { staking } = require("../helper/staking.js") -const abi = require("./abi.json") - -const SPOOL = '0x40803cea2b2a32bda1be61d3604af6a814e70976' -const SPOOL_staking = '0xc3160C5cc63B6116DD182faA8393d3AD9313e213' - -const config = { - ethereum: { controller: '0xdd4051c3571c143b989c3227e8eb50983974835c', masterSpool: '0xe140bb5f424a53e0687bfc10f6845a5672d7e242', }, - arbitrum: { controller: '0xd31ff4536bd190c87039c7697b3a5843196c1b94', masterSpool: '0xe4b6347395262d203e3fec5c8ebde4cfe92111b3', }, -} - -module.exports = { - methodology: `Counting Pending deposits in the MasterSpool contract as well as assets deployed to each strategy` -} - -Object.keys(config).forEach(chain => { - const { controller, masterSpool, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - const strategies = await api.call({ abi: abi.spoolController_getAllStrategies, target: controller }) - let underlyings = await api.multiCall({ abi: abi.strategy_underlying, calls: strategies }) - let bals = await api.multiCall({ abi: abi.masterSpool_getStratUnderlying, calls: strategies, target: masterSpool, }) - bals.forEach((v, i) => sdk.util.sumSingleBalance(balances,underlyings[i],v, api.chain)) - - return sumTokens2({ api, balances, owner: masterSpool, tokens: underlyings }) - } - } -}) - - -module.exports.ethereum.staking = staking(SPOOL_staking, SPOOL) \ No newline at end of file diff --git a/projects/spoon-exchange/index.js b/projects/spoon-exchange/index.js deleted file mode 100644 index 54ef1ba0cf0..00000000000 --- a/projects/spoon-exchange/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - core:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0x097665669d8bd2ad7554E1434A3B93a42F03b435', - }), - }, -} diff --git a/projects/sportbet/index.js b/projects/sportbet/index.js deleted file mode 100644 index 81d047afb47..00000000000 --- a/projects/sportbet/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["eosio.token", "EOS", "eos"], - ["btc.ptokens", "PBTC", "ptokens-btc"], - ["eth.ptokens", "PETH", "ethereum"], // CoinGecko missing pTokens support, using native symbol - ["ltc.ptokens", "PLTC", "litecoin"], // CoinGecko missing pTokens support, using native symbol -]; - -// SportBet -// https://sportbet.one/ -async function eos() { - return await get_account_tvl("sportbet1bet", tokens); -} - -module.exports = { - methodology: `SportBet TVL is achieved by querying token balances from SportBet's smart contract.`, - eos: { - tvl: eos - }, -} \ No newline at end of file diff --git a/projects/spot/index.js b/projects/spot/index.js deleted file mode 100644 index 277fa83b538..00000000000 --- a/projects/spot/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -module.exports = { - ethereum: { - tvl: async (api) => { - const logs = await getLogs2({ - api, - factory: '0xeca709A67E8e774c827547D900e01B763f77E99f', - eventAbi: 'event TrancheCreated(address newTrancheAddress)', - fromBlock: 15800076, - }) - // const tranches = await api.fetchList({ lengthAbi: 'deployedCount', itemAbi: 'deployedAt', target: "0x82a91a0d599a45d8e9af781d67f695d7c72869bd" }) - // const bonds = await api.multiCall({ abi: 'address:bond', calls: tranches }) - const bonds = logs.map(log => log.newTrancheAddress) - return api.sumTokens({ tokens: ["0xd46ba6d942050d489dbd938a2c909a5d5039a161"], owners: [...bonds, "0x82A91a0D599A45d8E9Af781D67f695d7C72869Bd"] }) - } - } -} \ No newline at end of file diff --git a/projects/springsui-ecosystem/index.js b/projects/springsui-ecosystem/index.js deleted file mode 100644 index 0a924af5591..00000000000 --- a/projects/springsui-ecosystem/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const sui = require('../helper/chain/sui') - -const CREATE_EVENT_TYPE = '0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::events::Event<0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::liquid_staking::CreateEvent>'; -const EXCLUDE_POOL_IDS = [ - '0x15eda7330c8f99c30e430b4d82fd7ab2af3ead4ae17046fcb224aa9bad394f6b', -] - -async function tvl() { - const poolIds = (await sui.queryEvents({ - eventType: CREATE_EVENT_TYPE, - transform: (i) => i.event.liquid_staking_info_id, - })).filter((id) => !EXCLUDE_POOL_IDS.includes(id)); - - let suiAmount = 0; - const data = await sui.getObjects(poolIds); - - data.forEach((pool) => { - if (!pool) return; - suiAmount += pool.fields.storage.fields.total_sui_supply / 10 ** 9; - }); - return { - sui: suiAmount, - } -} - - -module.exports = { - methodology: "Calculates the amount of SUI staked in ecosystem SpringSui LSTs.", - sui: { - tvl, - } -} diff --git a/projects/springsui/index.js b/projects/springsui/index.js deleted file mode 100644 index 72797930af9..00000000000 --- a/projects/springsui/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const sui = require('../helper/chain/sui') - -async function tvl() { - const pool = await sui.getObject('0x15eda7330c8f99c30e430b4d82fd7ab2af3ead4ae17046fcb224aa9bad394f6b'); - const suiAmount = pool.fields.storage.fields.total_sui_supply / 10 ** 9 - return { - sui: suiAmount, - } -} - -module.exports = { - methodology: "Calculates the amount of SUI staked in SpringSui liquid staking contracts.", - sui: { - tvl, - } -} diff --git a/projects/sprinter/index.js b/projects/sprinter/index.js deleted file mode 100644 index f5d07db6772..00000000000 --- a/projects/sprinter/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const LP_TOKEN_ADDRESS = "0xfa89929b30bC3132f9907CBCe3F2f6f4AC0903b6"; -const MINING_CONTRACT_ADDRESS = "0x479d158959b59328e89f0fbf7dfebb198c313c21"; -const HUB_CONTRACT_ADDRESS = "0xa593A9bBBc65be342FF610a01e96da2EB8539FF2"; - -const USDC_ADDRESS = ADDRESSES.base.USDC; - -const abi = { - hub: { - convertToAssets: "function convertToAssets(uint256 shares) view returns (uint256)", - totalAssets: "function totalAssets() view returns (uint256)", - } -}; - -async function tvl(api) { - const lpBalance = await api.call({ - abi: 'erc20:balanceOf', - target: LP_TOKEN_ADDRESS, - params: [MINING_CONTRACT_ADDRESS], - }); - const balanceInUSDC = await api.call({ - abi: abi.hub.convertToAssets, - target: HUB_CONTRACT_ADDRESS, - params: [lpBalance], - }); - - api.add(USDC_ADDRESS, balanceInUSDC) -} - -module.exports = { - methodology: 'Reads locked shares on-chain and converts to USDC.', - base: { - tvl, - } -}; diff --git a/projects/sqd-dev/index.js b/projects/sqd-dev/index.js deleted file mode 100644 index 18732813121..00000000000 --- a/projects/sqd-dev/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -module.exports = { - arbitrum: { tvl: () => ({}), staking: sumTokensExport({ owners: ['0x36e2b147db67e76ab67a4d07c293670ebefcae4e', '0xb31a0d39d2c69ed4b28d96e12cbf52c5f9ac9a51'], tokens: ['0x1337420dED5ADb9980CFc35f8f2B054ea86f8aB1'] }) }, - start: '2024-03-26', -} \ No newline at end of file diff --git a/projects/squa-defi/index.js b/projects/squa-defi/index.js deleted file mode 100644 index b4dfdf58235..00000000000 --- a/projects/squa-defi/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const keyManagerContract = "0xfad362E479AA318F2De7b2c8a1993Df9BB2B3b1f" - -async function tvl(time, ethBlock, _b, {api}) { - return api.sumTokens({ tokens: [ADDRESSES.base.USDC], owner: keyManagerContract, }) -} - -module.exports = { - methodology: `Counts USDC on the KeyManager contract (${keyManagerContract})`, - base: { - tvl - } -} \ No newline at end of file diff --git a/projects/squid-dao/index.js b/projects/squid-dao/index.js deleted file mode 100644 index 84a6a5ec339..00000000000 --- a/projects/squid-dao/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x61d8a57b3919e9F4777C80b6CF1138962855d2Ca" -module.exports = ohmTvl(treasury, [ - [ADDRESSES.ethereum.WETH, false], - ["0xfad704847967d9067df7a60910399155fca43fe8", true] -], "ethereum", "0x5895b13da9beb11e36136817cdcf3c4fcb16aaea", "0x21ad647b8f4fe333212e735bfc1f36b4941e6ad2") - -module.exports.deadFrom = '2022-08-01' \ No newline at end of file diff --git a/projects/squid-defi/index.js b/projects/squid-defi/index.js deleted file mode 100644 index d05e6a3752a..00000000000 --- a/projects/squid-defi/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const abi = require("../helper/abis/masterchef.json"); -const { sumTokens2 } = require("../helper/unwrapLPs.js"); -const { pool2 } = require('../helper/pool2') -const { staking } = require('../helper/staking') - -const token = "0xd86Be84feC60Fedf263059BB1581e00d2168e19D"; -const masterchef = "0x1610374513e989Fc263A5741A053fa023A6f212A"; - -const pool2LPs = [ - "0xeA3998615d2Bfe793E84318d5fE9D3Aa3d0F2F3f", - "0x628C669511C4be30DA1c3C7Da4725eCD074c1c8B", - "0x961C853477cAc8B9cfef953312331a2bE0C31C67", - "0x7815A02bf54aa25039cC40Ac63daA84D876D130C" -] - -async function tvl(api) { - const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: masterchef }) - const tokens = poolInfos.map(pool => pool.lpToken) - return sumTokens2({ api, owner: masterchef, tokens, blacklistedTokens: [...pool2LPs, token], resolveLP: true }) -} - -module.exports = { - fantom: { - tvl, - pool2: pool2(masterchef, pool2LPs), - staking: staking(masterchef, token) - }, -} \ No newline at end of file diff --git a/projects/squidstake/index.js b/projects/squidstake/index.js deleted file mode 100644 index cd832c7b553..00000000000 --- a/projects/squidstake/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const squidToken = "0xAE61e7dc989718E700C046a2483e93513eDCA484"; -const masterchef = "0x86A47ddD4c6522251d6a5A5800f3F24c03332CB4"; - -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'bsc', - masterchef, - nativeToken: squidToken, -}) \ No newline at end of file diff --git a/projects/squidswap/index.js b/projects/squidswap/index.js deleted file mode 100644 index 69818034e0e..00000000000 --- a/projects/squidswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - ink: '0x63b54dBBD2DAbf89D5c536746e534711f6094199' -}) \ No newline at end of file diff --git a/projects/ssap/index.js b/projects/ssap/index.js deleted file mode 100644 index 1ae30a79317..00000000000 --- a/projects/ssap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -module.exports = { - clv: aaveExports('clv', '0x070CaAeac85CCaA7E8DCd88421904C2259Abed34', undefined, ['0x49617386d6aAaA6aE23c0E7799B5c4F79f33f1B1']), - oasis: aaveExports('oasis', '0xBB4dfd53BA393DCD1AD1e30809C9527e9a00d522', undefined, ['0x2b8DD6DE52F20EfA309BC56454b7A929B7a1E66D']), -}; - -module.exports.clv.tvl = () => ({}); // disable clv -module.exports.clv.borrowed = () => ({}); // disable clv diff --git a/projects/ssi-basis-trading/index.js b/projects/ssi-basis-trading/index.js deleted file mode 100644 index 72621a78c0e..00000000000 --- a/projects/ssi-basis-trading/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const USSI_CONTRACT = '0x3a46ed8FCeb6eF1ADA2E4600A522AE7e24D2Ed18'; - -async function tvl(api) { - const balances = await api.call({ abi: 'erc20:totalSupply', target: USSI_CONTRACT}); - api.add(USSI_CONTRACT, balances); -} - -// the vaults are here https://github.com/DefiLlama/DefiLlama-Adapters/pull/12893#issuecomment-2577690389 - -module.exports = { - methodology: 'TVL counts the USSI tokens minted.', - start: 23863972, - base: { - tvl, - } - }; \ No newline at end of file diff --git a/projects/ssi-protocol/index.js b/projects/ssi-protocol/index.js deleted file mode 100644 index 4bcdd8aedb0..00000000000 --- a/projects/ssi-protocol/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getBlock } = require('../helper/http'); - -const abi = { - getBasket: 'function getBasket() view returns ((string chain, string symbol, string addr, uint8 decimals, uint256 amount)[])' -} - -const ssi_tokens = [ - // MAG7.ssi - '0x9E6A46f294bB67c20F1D1E7AfB0bBEf614403B55', - // DEFI.ssi - '0x164ffdaE2fe3891714bc2968f1875ca4fA1079D0', - // MEME.ssi - '0xdd3acDBDc7b358Df453a6CB6bCA56C92aA5743aA' -] - -function underlyingExports(chains) { - const exportObj = {}; - Object.entries(chains).forEach(([chain, [chain_name, native_token]]) => { - exportObj[chain] = { - tvl: async (api, ethBlock, chainBlocks) => { - const balances = {}; - const base_block = await getBlock(api.timestamp, 'base', chainBlocks); - const baskets = await Promise.all(ssi_tokens.map(async (ssi_token) => { - const res = await sdk.api.abi.call({ - abi: abi.getBasket, - target: ssi_token, - chain: 'base', - block: base_block, - }); - return res.output; - })); - baskets.forEach(basket => { - basket.forEach(token => { - if (token.chain == chain_name) { - let token_addr; - let token_amount; - if (token.addr != '') { - token_addr = chain + ':' + token.addr; - token_amount = token.amount; - } else { - token_addr = native_token; - token_amount = token.amount / 10 ** token.decimals; - } - sdk.util.sumSingleBalance(balances, token_addr, token_amount); - } - }); - }); - return balances; - } - } - }); - return exportObj; -} - -module.exports = { - methodology: 'TVL counts the underlying tokens in the baskets of the SSI tokens.', - ...underlyingExports({ - ethereum: ['ETH', 'ethereum'], - bsc: ['BSC_BNB', 'binancecoin'], - doge: ['DOGE', 'dogecoin'], - solana: ['SOL', 'solana'], - bitcoin: ['BTC', 'bitcoin'], - cardano: ['ADA', 'cardano'], - ripple: ['XRP', 'ripple'], - }) -}; diff --git a/projects/stCelo/index.js b/projects/stCelo/index.js deleted file mode 100644 index 4753b42dd80..00000000000 --- a/projects/stCelo/index.js +++ /dev/null @@ -1,12 +0,0 @@ - -async function tvl(api) { - const bal = await api.call({ abi: 'uint256:getTotalCelo', target: '0x4aAD04D41FD7fd495503731C5a2579e19054C432' }) - api.addGasToken(bal) -} - -module.exports = { - methodology: 'TVL counts Celo staked by the protocol.', - celo: { - tvl - } -} diff --git a/projects/stUSDT/index.js b/projects/stUSDT/index.js deleted file mode 100644 index 88cf7dddb4e..00000000000 --- a/projects/stUSDT/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - tron: { - tvl: async (api) => { - const supply = await api.call({ abi: "erc20:totalSupply", target: "TThzxNRLrW2Brp9DcTQU8i4Wd9udCWEdZ3" }) - return { - [`tron:${ADDRESSES.tron.USDT}`]: supply/1e12 - } - } - }, - ethereum: { - tvl: async (api) => { - const supply = await api.call({ abi: "erc20:totalSupply", target: "0x25ec98773d7b4ced4cafab96a2a1c0945f145e10" }) - return { - [ADDRESSES.ethereum.USDT]: supply/1e12 - } - } - } -} diff --git a/projects/stab-protocol/index.js b/projects/stab-protocol/index.js deleted file mode 100644 index 679b44f4d56..00000000000 --- a/projects/stab-protocol/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/radixdlt'); - -const STAB_COMPONENT = "component_rdx1cq70cjajtvllgk9z9wm9l8v6w8hsgtlw530cdgpraxprn4yevg89kf"; -const STAB_XRD_POOL = "pool_rdx1c4jj8lklg7edacflhk0tl202dzgawkujly4kqf0jfehyqd8watxw0r" - -module.exports = { - methodology: 'Calculates TVL using the amount of collateral locked to borrow STAB using CDPs, and amount of STAB and XRD locked in the protocol-native STAB/XRD pool.', - radixdlt: { - //get the token amounts of collaterals used in the STAB Protocol and tokens locked in STAB/XRD pool - tvl: sumTokensExport({ - owners: [STAB_COMPONENT, STAB_XRD_POOL], - blacklistedTokens: ['resource_rdx1t40lchq8k38eu4ztgve5svdpt0uxqmkvpy4a2ghnjcxjtdxttj9uam'] - }) - }, - timetravel: false, -}; diff --git a/projects/stabble/index.js b/projects/stabble/index.js deleted file mode 100644 index 7a7aa95aec7..00000000000 --- a/projects/stabble/index.js +++ /dev/null @@ -1,261 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { Program } = require("@project-serum/anchor"); -const { PublicKey } = require("@solana/web3.js"); -const { getProvider, sumTokens2 } = require("../helper/solana"); - -async function weightedSwapTvl() { - const VAULT_ID = "w8edo9a9TDw52c1rBmVbP6dNakaAuFiPjDd52ZJwwVi"; - - const provider = getProvider(); - const programId = new PublicKey("swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW"); - const program = new Program(WEIGHTED_SWAP_IDL, programId, provider); - const pools = await program.account.pool.all([ - { - memcmp: { - offset: 40, - bytes: VAULT_ID, - }, - }, - ]); - const tokens = Array.from(new Set(pools.map(({ account }) => account.tokens.map(({ mint }) => mint)).flat())); - const owner = findVaultAuthorityAddress(new PublicKey(VAULT_ID)); - - return sumTokens2({ - tokens, - owner, - }); -} - -async function stableSwapTvl() { - const VAULT_ID = "stab1io8dHvK26KoHmTwwHyYmHRbUWbyEJx6CdrGabC"; - - const provider = getProvider(); - const programId = new PublicKey("swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ"); - const program = new Program(STABLE_SWAP_IDL, programId, provider); - const pools = await program.account.pool.all([ - { - memcmp: { - offset: 40, - bytes: VAULT_ID, - }, - }, - ]); - const tokens = Array.from(new Set(pools.map(({ account }) => account.tokens.map(({ mint }) => mint)).flat())); - const owner = findVaultAuthorityAddress(new PublicKey(VAULT_ID)); - - return sumTokens2({ - tokens, - owner, - }); -} - -module.exports = { - timetravel: false, - solana: { tvl: sdk.util.sumChainTvls([weightedSwapTvl, stableSwapTvl]) }, - hallmarks: [ - [1719540000, "Mainnet launch"], - // [1727791200, "JupiterExchange integration"], - [1747922400, "Token launch"], - ], -}; - -function findVaultAuthorityAddress(vaultKey) { - return PublicKey.findProgramAddressSync( - [Buffer.from("vault_authority"), vaultKey.toBuffer()], - new PublicKey("vo1tWgqZMjG61Z2T9qUaMYKqZ75CYzMuaZ2LZP1n7HV") - )[0]; -} - -const WEIGHTED_SWAP_IDL = { - version: "1.0.0", - name: "weighted_swap", - instructions: [], - accounts: [ - { - name: "pool", - type: { - kind: "struct", - fields: [ - { - name: "owner", - type: "publicKey", - }, - { - name: "vault", - type: "publicKey", - }, - { - name: "mint", - type: "publicKey", - }, - { - name: "authorityBump", - type: "u8", - }, - { - name: "isActive", - type: "bool", - }, - { - name: "invariant", - type: "u64", - }, - { - name: "swapFee", - type: "u64", - }, - { - name: "tokens", - type: { - vec: { - defined: "PoolToken", - }, - }, - }, - { - name: "pendingOwner", - type: { - option: "publicKey", - }, - }, - ], - }, - }, - ], - types: [ - { - name: "PoolToken", - type: { - kind: "struct", - fields: [ - { - name: "mint", - type: "publicKey", - }, - { - name: "decimals", - type: "u8", - }, - { - name: "scalingUp", - type: "bool", - }, - { - name: "scalingFactor", - type: "u64", - }, - { - name: "balance", - type: "u64", - }, - { - name: "weight", - type: "u64", - }, - ], - }, - }, - ], - errors: [], -}; - -const STABLE_SWAP_IDL = { - version: "1.0.0", - name: "stable_swap", - instructions: [], - accounts: [ - { - name: "pool", - type: { - kind: "struct", - fields: [ - { - name: "owner", - type: "publicKey", - }, - { - name: "vault", - type: "publicKey", - }, - { - name: "mint", - type: "publicKey", - }, - { - name: "authorityBump", - type: "u8", - }, - { - name: "isActive", - type: "bool", - }, - { - name: "ampInitialFactor", - type: "u16", - }, - { - name: "ampTargetFactor", - type: "u16", - }, - { - name: "rampStartTs", - type: "i64", - }, - { - name: "rampStopTs", - type: "i64", - }, - { - name: "swapFee", - type: "u64", - }, - { - name: "tokens", - type: { - vec: { - defined: "PoolToken", - }, - }, - }, - { - name: "pendingOwner", - type: { - option: "publicKey", - }, - }, - ], - }, - }, - ], - types: [ - { - name: "PoolToken", - type: { - kind: "struct", - fields: [ - { - name: "mint", - type: "publicKey", - }, - { - name: "decimals", - type: "u8", - }, - { - name: "scalingUp", - type: "bool", - }, - { - name: "scalingFactor", - type: "u64", - }, - { - name: "balance", - type: "u64", - }, - ], - }, - }, - ], - errors: [], -}; diff --git a/projects/stabil-finance/index.js b/projects/stabil-finance/index.js deleted file mode 100644 index aad0fe498f2..00000000000 --- a/projects/stabil-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") - -module.exports = { - start: 1639350000, - cronos: { - tvl: getUniTVL({ - factory: "0x5d29Dc483D4D0A709DBD9EBb5f3acd41c131B472", - useDefaultCoreAssets: true, - }), - } -}; diff --git a/projects/stability/index.js b/projects/stability/index.js deleted file mode 100644 index 4e6ab6c3b82..00000000000 --- a/projects/stability/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const abi = { - "vaultAddresses": "function vaultAddresses() view returns (address[] memory vaultAddress)", - "strategy": "address:strategy", - "assetsAmounts": "function assetsAmounts() view returns (address[] memory assets, uint[] memory amounts)" -} - -const config = { - polygon: { - vaultManager: '0x6008b366058B42792A2497972A3312274DC5e1A8', - }, - base: { - vaultManager: '0x2ba8C6A519CEDB6d1C35cEb14E8642625E91F77C', - }, - real: { - vaultManager: '0x7146efaab12A083b9826c66162062c21eC70fe3c', - }, - sonic: { - vaultManager: '0x589a504f2ee9d054b483c700fa814863d639381e', - }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async function (api) { - // Stability Platform Vaults - // Get all vaults - const vaults = await api.call({ abi: abi.vaultAddresses, target: config[chain].vaultManager }); - - // Get strategy addresses - const strategies = await api.multiCall({ abi: abi.strategy, calls: vaults, }) - - // Get all assets amounts managed by strategies - const assetsAmountsAll = await api.multiCall({ abi: abi.assetsAmounts, calls: strategies, }) - assetsAmountsAll.forEach(([assets, amounts]) => api.add(assets, amounts)) - }, - } -}) \ No newline at end of file diff --git a/projects/stabilizefi/index.js b/projects/stabilizefi/index.js deleted file mode 100644 index 326453776af..00000000000 --- a/projects/stabilizefi/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { getLiquityTvl } = require("../helper/liquity"); -const { pool2 } = require('../helper/pool2'); - -// staking -const TOKEN_STAKING_ADDRESS = "0x4A2B73ebAc93D9233BAB10a795F04efb9C00D466"; -const SET_ADDRESS = "avax:0x37d87e316CB4e35163881fDb6c6Bc0CdBa91dc0A"; - -const FARM_ADDRESS_SET_USDC = "0xAA31D7Bc8186888D9Eebb5524C47268E4bC87496" -const LP_ADDRESS_SET_USDC = "0x31fa3838788A07607D95C9c640D041eAec649f50" - -// system coll -const AVAX_TROVE_MANAGER_ADDRESS = "0x7551A127C41C85E1412EfE263Cadb49900b0668C"; -const ETH_TROVE_MANAGER_ADDRESS = "0x7837C2dB2d004eB10E608d95B2Efe8cb57fd40b4"; -const BTC_ADDRESS = ADDRESSES.avax.WBTC_e; -const BTC_TROVE_MANAGER_ADDRESS = "0x56c194F1fB30F8cdd49E7351fC9C67d8C762a86F"; -const DAI_TROVE_MANAGER_ADDRESS = "0x54b35c002468a5Cc2BD1428C011857d26463ecbC"; - -// --- staking --- -async function stakingTvl(api) { - const StakesBalance = await api.call({ target: TOKEN_STAKING_ADDRESS, abi: "uint256:totalTokenStaked", }) - return { [SET_ADDRESS]: StakesBalance } -} - -const options = { nonNativeCollateralToken: true } -module.exports = { - avax: { - tvl: sdk.util.sumChainTvls([ - getLiquityTvl(ETH_TROVE_MANAGER_ADDRESS, { ...options, collateralToken: ADDRESSES.avax.WETH_e }), - getLiquityTvl(BTC_TROVE_MANAGER_ADDRESS, { ...options, collateralToken: BTC_ADDRESS }), - getLiquityTvl(AVAX_TROVE_MANAGER_ADDRESS), - getLiquityTvl(DAI_TROVE_MANAGER_ADDRESS, { ...options, collateralToken: ADDRESSES.avax.DAI }), - ]), - pool2: pool2(FARM_ADDRESS_SET_USDC, LP_ADDRESS_SET_USDC), - staking: stakingTvl - } -}; diff --git a/projects/stabl-v2/abi.json b/projects/stabl-v2/abi.json deleted file mode 100644 index 0d3c5315772..00000000000 --- a/projects/stabl-v2/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getAllAssets": "address[]:getAllAssets", - "checkBalance": "function checkBalance(address _asset) view returns (uint256 balance)", - "isSupportedAsset": "function supportsAsset(address _asset) view returns (bool)" - } \ No newline at end of file diff --git a/projects/stabl-v2/index.js b/projects/stabl-v2/index.js deleted file mode 100644 index d5d81924cc3..00000000000 --- a/projects/stabl-v2/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const abi = require("./abi.json"); - -const vault = "0x2D62f6D8288994c7900e9C359F8a72e84D17bfba"; - -async function tvl(api) { - const tokens = await api.call({ abi: abi.getAllAssets, target: vault }) - const bals = await api.multiCall({ abi: abi.checkBalance, target: vault, calls: tokens }) - api.add(tokens, bals) -} - -module.exports = { - polygon: { - tvl, - }, -}; diff --git a/projects/stabl/index.js b/projects/stabl/index.js deleted file mode 100644 index e9dda7454ff..00000000000 --- a/projects/stabl/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const vaults = { - polygon: "0xd1bb7d35db39954d43e16f65f09dd0766a772cff", -} - -const assets = { - polygon: ADDRESSES.polygon.USDC, //USDC -} - -const abi = "uint256:checkBalance" - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(vaults).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const bal = await api.call({ abi, target: vaults[chain]}) - // refilling wont work because at mar 26th the decimals used by checkBalance() changed - api.add(assets[chain], bal/100) - } - } -}) diff --git a/projects/stablebase.js b/projects/stablebase.js deleted file mode 100644 index a1b26710878..00000000000 --- a/projects/stablebase.js +++ /dev/null @@ -1,23 +0,0 @@ -const { staking } = require('./helper/staking') - -const stableABI = { - getTokens: "address[]:getTokens", - getLpToken: "address:getLpToken", -} - -const registryABI = { - poolAddresses: "address[]:poolAddresses", -} - -async function stablePoolTVL(api) { - const pools= await api.call({ abi: registryABI.poolAddresses, target: '0x9595037e6d4a37e0659e66937ee6f7f88f4b0446'}) - const tokens = await api.multiCall({ abi: stableABI.getTokens, calls: pools,}) - return api.sumTokens({ ownerTokens: pools.map((v, i) => [tokens[i], v])}) -} - -module.exports = { - base: { - tvl: stablePoolTVL, - staking: staking('0xDB4ad0C533AeB2faC1B10fa60207BE039084C33F', '0x616F5b97C22Fa42C3cA7376F7a25F0d0F598b7Bb') - } -} \ No newline at end of file diff --git a/projects/stablecomp/index.js b/projects/stablecomp/index.js deleted file mode 100644 index 723ba16d940..00000000000 --- a/projects/stablecomp/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const chains = ['ethereum',] -chains.forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const data = await getConfig('stablecomp', 'https://services.stablecomp.com/vaults') - let { vaults } = data[chain] - vaults = Object.values(vaults) - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: vaults }) - api.addTokens(tokens, bals) - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/stabledoin/index.js b/projects/stabledoin/index.js deleted file mode 100644 index a2059c5cd31..00000000000 --- a/projects/stabledoin/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') - -const factory = "0x7bbAB21475d99C09a92fc4B93Fa2DDa987DbA17c" - -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1666656000, "Rug Pull"] - ], - deadFrom: 1666656000, - dogechain: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory, useDefaultCoreAssets: true, }), - getUniTVL({ factory: '0x8E49Fa5fA4494c3a4358DC00F1c1e4dfA0A3b7eF', useDefaultCoreAssets: true, }), - ]), - } -} diff --git a/projects/stablehodl/index.js b/projects/stablehodl/index.js deleted file mode 100644 index b8d3eec2841..00000000000 --- a/projects/stablehodl/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const poolABI = { - type: "function", - name: "poolTokenAmounts", - inputs: [{name: "", type: "address", internalType: "address"}], - outputs: [{name: "", type: "uint256", internalType: "uint256"}], - stateMutability: "view" -}; -const poolAddresses = { - hela: { - pool: "0x850034064016D9105D8719b3E06c30789e5E87Fc", - token: ADDRESSES.null - }, - bsc: { - pool: "0x528d46B5780879E28Cf410C0b86D991A38Fe64Aa", - tokens: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC] - }, - polygon: { - pool: "0x109d3042a3c682f94107b3818e93b3ade2a47544", - tokens: [ADDRESSES.polygon.USDC_CIRCLE, ADDRESSES.polygon.USDT] - }, - ethereum: { - pool: "0x109D3042a3c682F94107b3818e93b3aDE2A47544", - tokens: [ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT] - } -} - -async function tvl(api, chain) { - if (chain === 'hela') { - const tvl = await api.call({ abi: poolABI, target: poolAddresses[chain].pool, params: poolAddresses[chain].token, chain}) - api.add(poolAddresses[chain].token, tvl) - } - if (chain === 'bsc' || chain === 'polygon' || chain === 'ethereum') { - const tvls = await api.multiCall({ abi: poolABI, calls: poolAddresses[chain].tokens.map((t) => ({ target: poolAddresses[chain].pool, params: t })), chain }) - tvls.forEach((tvl, i) => api.add(poolAddresses[chain].tokens[i], tvl)) - } -} - -module.exports = { - hela: { - tvl: async (api) => { - await tvl(api, 'hela', api.chain) - } - }, - bsc: { - tvl: async (api) => { - await tvl(api, 'bsc', api.chain) - } - }, - polygon: { - tvl: async (api) => { - await tvl(api, 'polygon', api.chain) - } - }, - ethereum: { - tvl: async (api) => { - await tvl(api, 'ethereum', api.chain) - } - } -} diff --git a/projects/stablejack-scusd/index.js b/projects/stablejack-scusd/index.js deleted file mode 100644 index e3c76a2bdba..00000000000 --- a/projects/stablejack-scusd/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const stablejackWTokens = [ - '0x0238E736166e07D6F857A0E322dAd4e7C1AFF4F3', -]; - -async function stablejackTVL(api) { - const totalUnderlyingValues = await api.multiCall({ - abi: 'function totalUnderlying() view returns (uint256)', - calls: stablejackWTokens, - }); - - stablejackWTokens.forEach((wToken, i) => - api.add(wToken, totalUnderlyingValues[i]) - ); - - return api.getBalances(); -} - -module.exports = { - timetravel: true, - methodology: - "TVL includes scUSD, STS, wOS held in various contracts. Also includes wstkscUSD tokens in the vault, converted to scUSD via convertToAssets(). For Goat chain, includes totalUnderlying() from StableJack WToken contracts such as artBTC wrapper, priced as BTCB since artBTC price is not indexed.", - start: 1719292800, // 2024-06-25 - sonic: { - tvl: async (api) => { - const tokensAndOwners = [ - [ADDRESSES.sonic.scUSD, '0xf41ECda82C54745aF075B79b6b31a18dD986BA4c'], - [ADDRESSES.sonic.STS, '0x682D7F02BC57Bc64bfb36078454601Ba0Efbe155'], - ['0x9f0df7799f6fdad409300080cff680f5a23df4b1', '0x0A6F4c98D087445Ef92b589c6f39D22C4373615F'], - ['0x9fb76f7ce5FCeAA2C42887ff441D46095E494206', '0xb27f555175e67783ba16f11de3168f87693e3c8f'], - ]; - return sumTokens2({ api, tokensAndOwners }); - }, - }, - avax: { - tvl: async (api) => { - const tokensAndOwners = [ - ['0xDf788AD40181894dA035B827cDF55C523bf52F67', '0xf010696e0BE614511516bE0DdB89AFf06B6cA440'], // rsAVAX - ['0x06d47F3fb376649c3A9Dafe069B3D6E35572219E', '0xC37914DacF56418A385a4883512Be8b8279c94C5'], // savUSD - ]; - return sumTokens2({ api, tokensAndOwners }); - }, - }, - goat: { - tvl: stablejackTVL, - }, -}; diff --git a/projects/stablejack/index.js b/projects/stablejack/index.js deleted file mode 100644 index ae8f8296c2a..00000000000 --- a/projects/stablejack/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - avax: { tvl }, -} - -async function tvl(api) { - const wsAVAX = '0x7aa5c727270c7e1642af898e0ea5b85a094c17a1' - const sAVAX = ADDRESSES.avax.SAVAX - const wsAvaxBal= await api.call({ abi: 'erc20:balanceOf', target: wsAVAX, params: '0xDC325ad34C762C19FaAB37d439fbf219715f9D58'}) - const wsAvaxSupply = await api.call({ abi: 'uint256:totalSupply', target: wsAVAX }) - const sAvaxBal= await api.call({ abi: 'erc20:balanceOf', target: ADDRESSES.avax.SAVAX, params: wsAVAX}) - api.add(sAVAX, wsAvaxBal * sAvaxBal / wsAvaxSupply) -} \ No newline at end of file diff --git a/projects/stablekoi/index.js b/projects/stablekoi/index.js deleted file mode 100644 index 25408e7ed79..00000000000 --- a/projects/stablekoi/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache') - -async function tvl(api) { - const tokensAndOwners = []; - const poolInfo = await getConfig('stable-koi-v0', "https://app.stablekoi.com/lists/poollist.json"); - poolInfo.forEach((pool) => { - pool.tokens.forEach((token) => tokensAndOwners.push([token, pool.address])); - }); - return api.sumTokens({ tokensAndOwners }) -} - -async function tvl_v1(api) { - const tokensAndOwners = []; - v1Pools.forEach((pool) => { - pool.tokens.forEach((token) => tokensAndOwners.push([token.address, pool.address])); - }); - return api.sumTokens({ tokensAndOwners }) -} - -async function staking(api) { - const koi = "0xd66eb642eE33837531FdA61eb7Ab15B15658BcaB"; - const koiStakingRewards = "0x9d7AACf560e493A7B0666d85BDE216d6d38Ec429"; - const totalStakedKOI = await api.call({ abi: 'erc20:totalSupply', target: koiStakingRewards }) - api.add(koi, totalStakedKOI) -} - -module.exports = { - godwoken: { - tvl, - staking, - }, - godwoken_v1: { - tvl: tvl_v1, - }, - hallmarks: [ - ['2022-08-26', "Add godwoken v1 chain tvl"], - ], -} - -const v1Pools = [ - { - "address": "0xB76B94bA69f0C2c556ee86F57e57F5F20A705d18", - "tokens": [ - { - "address": "0x186181e225dc1Ad85a4A94164232bD261e351C33", - }, - { "address": ADDRESSES.godwoken_v1.USDC_bsc, } - ] - }, - { - "address": "0xA1F83F8F142c1069d33a898498AFEA6257387133", - "tokens": [ - { "address": "0x186181e225dc1Ad85a4A94164232bD261e351C33", }, - { "address": "0x8E019acb11C7d17c26D334901fA2ac41C1f44d50", } - ] - }, - { - "address": "0x2c13f5DB105C6ab13ba183Abb7c0CBe38bE45A92", - "tokens": [ - { "address": "0x8E019acb11C7d17c26D334901fA2ac41C1f44d50", }, - { "address": ADDRESSES.godwoken_v1.USDT_bsc, } - ] - }, - { - "address": "0x2360D9699dc82b684F986fBcc2ddf3Ab54Ff60dD", - "tokens": [ - { "address": ADDRESSES.godwoken_v1.WBTC_eth, }, - { "address": ADDRESSES.godwoken_v1.BTCB_bsc, } - ] - } -] \ No newline at end of file diff --git a/projects/stablz/index.js b/projects/stablz/index.js deleted file mode 100644 index 362e2118b0a..00000000000 --- a/projects/stablz/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const USDT = ADDRESSES.ethereum.USDT; -const STABLZ_CANNAVEST_RWA_POOL = "0xa030f3e984A08B5Ada0377A9f4EaAF846E6A2cB0"; - -async function borrowed(api) { - const bal = await api.call({ abi: 'erc20:totalSupply', target: STABLZ_CANNAVEST_RWA_POOL }) - const usdtBal = await api.call({ abi: 'erc20:balanceOf', target: USDT, params: STABLZ_CANNAVEST_RWA_POOL, }) - api.add(USDT, bal - usdtBal) -} - -module.exports = { - ethereum: { - borrowed, - tvl: staking(STABLZ_CANNAVEST_RWA_POOL, USDT), - staking: staking('0xdb6b004e34a7750e30e59e11281fcb0c73666990', '0xA4Eb9C64eC359D093eAc7B65F51Ef933D6e5F7cd') - }, - methodology: "Gets the TVL in USDT from the Stablz Cannavest (real world asset) smart contract", -}; diff --git a/projects/stack/index.js b/projects/stack/index.js deleted file mode 100644 index d7a6e6a9a00..00000000000 --- a/projects/stack/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: - "TVL counts the collateral tokens that are deposited within the respective Stack vault", -}; - -const config = { - real: { - vaultFactory: "0x303C5d72D2d123ac6C36957d167Ca7Cfee3414e7", - }, -}; - -Object.keys(config).forEach((chain) => { - const { vaultFactory } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const vaults = await api.fetchList({ lengthAbi: 'allVaultsLength', itemAbi: 'allVaults', target: vaultFactory }) - const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: vaults }) - return sumTokens2({ tokensAndOwners2: [tokens, vaults], api }) - } - } -}) diff --git a/projects/stacker/index.js b/projects/stacker/index.js deleted file mode 100644 index 3174e77fed0..00000000000 --- a/projects/stacker/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const vaults = [ - '0x067b9FE006E16f52BBf647aB6799f87566480D2c', - '0x70e51DFc7A9FC391995C2B2f027BC49D4fe01577', - '0x17E9ed51feD2F190D50f5bd4f1a8C9CbCd36162A', -] - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:underlyingContract', calls: vaults}) - const bals = await api.multiCall({ abi: 'uint256:totalUnderlying', calls: vaults}) - api.add(tokens, bals) -} - -module.exports = { - ethereum: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/stackingdao/api.js b/projects/stackingdao/api.js deleted file mode 100644 index 899f45a7f92..00000000000 --- a/projects/stackingdao/api.js +++ /dev/null @@ -1,14 +0,0 @@ -const { call } = require('../helper/chain/stacks-api') - -module.exports = { - timetravel: false, - stacks: { tvl } -} - -async function tvl() { - const target = 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.reserve-v1' - const currentCycle = await call({ target, abi: 'get-total-stx' }) - return { - blockstack: currentCycle.value / 1e6 - } -} \ No newline at end of file diff --git a/projects/stackingdao/index.js b/projects/stackingdao/index.js deleted file mode 100644 index 9abc94b7065..00000000000 --- a/projects/stackingdao/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("stackingdao", ['stacks']), -} diff --git a/projects/stacks-sbtc/index.js b/projects/stacks-sbtc/index.js deleted file mode 100644 index d6fee865109..00000000000 --- a/projects/stacks-sbtc/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - - -module.exports = { - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.stacksSBTC }), - }, -}; diff --git a/projects/stacks/api.js b/projects/stacks/api.js deleted file mode 100644 index 10e6fa731e6..00000000000 --- a/projects/stacks/api.js +++ /dev/null @@ -1,15 +0,0 @@ -const { call } = require('../helper/chain/stacks-api') - -module.exports = { - timetravel: false, - stacks: { tvl } -} - -async function tvl() { - const target = 'SP000000000000000000002Q6VF78.pox-3' - const currentCycle = await call({ target, abi: 'current-pox-reward-cycle' }) - const stakedAmount = await call({ target, abi: 'get-total-ustx-stacked', inputArgs: [{ type: 'number', value: +(currentCycle.toString()) }] }) - return { - blockstack: stakedAmount.toString() / 1e6 - } -} \ No newline at end of file diff --git a/projects/stacks/index.js b/projects/stacks/index.js deleted file mode 100644 index 6acf2c87a8b..00000000000 --- a/projects/stacks/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('./helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("stacks", ['stacks']), -} diff --git a/projects/stackswap.js b/projects/stackswap.js deleted file mode 100644 index 0038db1eaca..00000000000 --- a/projects/stackswap.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getExports } = require('./helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("stackswap", ['stacks']), -} diff --git a/projects/stackswap/api.js b/projects/stackswap/api.js deleted file mode 100644 index ab1e45cd3e4..00000000000 --- a/projects/stackswap/api.js +++ /dev/null @@ -1,39 +0,0 @@ -const { call } = require('../helper/chain/stacks-api') -const { transformDexBalances } = require('../helper/portedTokens') -const { getCache, setCache, } = require('../helper/cache') -// const { sleep } = require('../helper/utils') -// const sdk = require('@defillama/sdk') - -const factory = 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.stackswap-swap-v5k' - -module.exports = { - stacks: { tvl } -} - -async function tvl(api) { - const data = [] - const { value: pairCount } = await call({ target: factory, abi: 'get-pair-count' }) - const cache = await getCache('stackswap', 'stacks-config') - if (!cache.pairData) cache.pairData = [] - for (let i = cache.pairData.length +1; i <= pairCount; i++) { - const pair = await call({ target: factory, abi: 'get-pair-contracts', inputArgs: [{ type: 'number', value: i }] }) - api.log(`stackswap: ${i}/${pairCount}`) - cache.pairData.push(pair) - } - - await setCache('stackswap', 'stacks-config', cache) - let i = 0 - for (const pair of cache.pairData) { - if (pair['liquidity-token'].value === 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.liquidity-token-v5krqbd8nh6') continue // ignore STSW-lBTC - const pairData = await call({ target: pair['liquidity-token'].value, abi: 'get-lp-data', }) - data.push({ - token0: pair['token-x'].value, - token1: pair['token-y'].value, - token0Bal: +pairData.value['balance-x'].value + +pairData.value['fee-balance-x'].value, - token1Bal: +pairData.value['balance-y'].value + +pairData.value['fee-balance-y'].value, - }) - api.log(`stackswap: ${++i}/${pairCount}`) - // await sleep(2100) - } - return transformDexBalances({ chain: 'stacks', data}) -} \ No newline at end of file diff --git a/projects/stader/index.js b/projects/stader/index.js deleted file mode 100644 index c308d5ed194..00000000000 --- a/projects/stader/index.js +++ /dev/null @@ -1,81 +0,0 @@ -const { nullAddress, sumTokens2 } = require("../helper/unwrapLPs"); -const { get } = require("../helper/http"); - -const headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' }; -let _res; - -async function getData() { - if (!_res) _res = await get('https://universe.staderlabs.com/common/tvl', { headers }) - return _res; -} - -async function hbarTvl() { - const res = await get('https://universe.staderlabs.com/common/tvl', { headers }) - return { "hedera-hashgraph": res.hedera.native }; -} - -async function maticTvl() { - const res = await getData(); - return { "matic-network": res.polygon.native }; -} - -async function bscTvl() { - const res = await getData(); - return { binancecoin: res.bnb.native }; -} - -async function ethTvl(api) { - return await api.call({ abi: "uint256:totalAssets", target: "0xcf5ea1b38380f6af39068375516daf40ed70d299" }); -} - -module.exports = { - timetravel: false, - methodology: "We aggregated the assets staked across Stader staking protocols", - /*terra: { tvl },*/ - hedera: { tvl: hbarTvl }, - // its on ethereum because funds are locked there - // ethereum: { tvl: maticTvl }, - fantom: { tvl: () => ({}) }, - terra2: { tvl: () => ({}) }, - bsc: { tvl: bscTvl }, - near: { tvl: () => ({}) }, - ethereum: { - tvl: async (api) => { - const res = await getData(); - const nodeOperatorRegistry = "0x4f4bfa0861f62309934a5551e0b2541ee82fdcf1"; - const nodeOperatorCount = await api.call({ - abi: "uint256:totalActiveValidatorCount", - target: nodeOperatorRegistry, - }); - - const SDCollateralPoolAddress = - "0x7Af4730cc8EbAd1a050dcad5c03c33D2793EE91f"; - const SDTokenAddress = "0x30D20208d987713f46DFD34EF128Bb16C404D10f"; - - const sdBalance = await api.call({ - abi: "erc20:balanceOf", - target: SDTokenAddress, - params: SDCollateralPoolAddress, - }); - - const SDToEth = await api.call({ - abi: "function convertSDToETH(uint256) view returns (uint256)", - target: SDCollateralPoolAddress, - params: [sdBalance], - }); - - const balances = { - "matic-network": res.polygon.native, - [nullAddress]: - +SDToEth + +(await ethTvl(api)) + +nodeOperatorCount * 4 * 1e18, // 4 ETH per node operator - }; - return sumTokens2({ - api, - balances, - owner: nodeOperatorRegistry, - tokens: [nullAddress], - }); - }, - }, - hallmarks: [[1651881600, "UST depeg"]], -}; diff --git a/projects/stafi/index.js b/projects/stafi/index.js deleted file mode 100644 index 413d22371c6..00000000000 --- a/projects/stafi/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { get } = require('../helper/http'); - -const wethAddress = ADDRESSES.ethereum.WETH - -async function ethereum(api) { - const totalSupply = await api.call({ target: '0x9559Aaa82d9649C7A7b220E7c461d2E74c9a3593', abi: 'uint256:totalSupply' }); - const rate = await api.call({ target: '0x9559Aaa82d9649C7A7b220E7c461d2E74c9a3593', abi: 'uint256:getExchangeRate' }); - return { - [wethAddress]: (totalSupply * rate) / 1e18 - } -} - -const chainToParams = { - bsc: ["RBNB", "binancecoin"], - polygon: ["RMATIC", "matic-network"], - polkadot: ["RDOT", "polkadot"], - kusama: ["RKSM", "kusama"], - solana: ["RSOL", "solana"], - cosmos: ["RATOM", "cosmos"], - carbon: ["RSWTH", "switcheo"], - chihuahua: ["RHUAHUA", "chihuahua-token"], - irisnet: ["RIRIS", "iris-network"] -} - -function getTvlFunction(token, cgId) { - return async api => { - const { data: { currentStake } } = await get(API) - api.addCGToken(cgId, Number(currentStake.find(r => r.rsymbol === token)?.stakeAmount ?? 0)) - return api.getBalances() - } -} - -const API = "https://partner-api.stafi.io/stafi/v1/partnerapi/rtoken/getstakelist" -function chainTvl(chain) { - const [token, cgId] = chainToParams[chain] - return getTvlFunction(token, cgId) -} - -module.exports = { - ethereum: { - tvl: sdk.util.sumChainTvls([chainTvl('polygon'), ethereum]), - staking: getTvlFunction("RFIS", "stafi") - }, - bsc: { - tvl: chainTvl('bsc') - },/* - polygon: { - tvl: chainTvl('polygon') //exported along with ethereum tvl since MATIC's are staked on the Ethereum Mainnet - },*/ - cosmos: { - tvl: sdk.util.sumChainTvls([chainTvl('cosmos'), chainTvl('carbon'), chainTvl('chihuahua'), chainTvl('irisnet')]) - }, - solana: { - tvl: chainTvl('solana') - }, - stafi: { - tvl: sdk.util.sumChainTvls([chainTvl('polkadot'), chainTvl('kusama')]) - } -} diff --git a/projects/stake-ly/index.js b/projects/stake-ly/index.js deleted file mode 100644 index 9fe6de935c7..00000000000 --- a/projects/stake-ly/index.js +++ /dev/null @@ -1,14 +0,0 @@ -async function tvl(api) { - const stKlayAddress = "0xF80F2b22932fCEC6189b9153aA18662b15CC9C00" - const pooledKlay = await api.call({ abi: 'uint256:totalStaking', target: stKlayAddress }) - api.addGasToken(pooledKlay) -} - -module.exports = { - methodology: - "TVL is KLAY staked by the users and rewards accrued from node staking", - start: '2022-09-19', - klaytn: { - tvl, - }, -}; diff --git a/projects/stake1/index.js b/projects/stake1/index.js deleted file mode 100644 index 57d2b22512f..00000000000 --- a/projects/stake1/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const contracts = { - "ftmVault": "0x3d2fa78f5e1aa2e7f29c965d0e22b32b8d5f14a9", - "tombVault": "0xA222fb9D2A811FAb3B334a5a9FA573C11fee73c1", - "avaxVault": "0x1689D5C5866909569a98B35da6A24090e4931C17", - "ethVault": "0xf9448f9a932474B5cAd9F05b86EA12376f2Fd770", - "pool2": "0x56995c729296c634cA367F8F3e5E5dEFF30D4511", - "daiPool2": "0x629670EAA62952990dd5b0658Ab6c6296fE2111b", - "ftmPool2": "0x4bd9B32677821939937FaDaEb30858806578339c" -} - -const { staking } = require("../helper/staking"); - -async function tvl(api) { - return api.sumTokens({ - tokensAndOwners: [ - [ADDRESSES.fantom.WFTM, contracts.ftmVault], - ['0x74b23882a30290451A17c44f4F05243b6b58C76d', contracts.ethVault], - ['0x511D35c52a3C244E7b8bd92c0C297755FbD89212', contracts.avaxVault], - ['0x6c021ae822bea943b2e66552bde1d2696a53fbb7', contracts.tombVault], - [ADDRESSES.fantom.DAI, contracts.ftmVault], - [ADDRESSES.fantom.DAI, contracts.ethVault], - [ADDRESSES.fantom.DAI, contracts.avaxVault], - [ADDRESSES.fantom.DAI, contracts.tombVault], - ] - }) -} - -module.exports = { - fantom: { - tvl, - // hitting pool2 staking contract twice while stake1 isnt on coingecko - pool2: staking( - [contracts.pool2], - [contracts.daiPool2, contracts.ftmPool2], - ) - } -}; // node test.js projects/stake1/index.js diff --git a/projects/staked-hype/index.js b/projects/staked-hype/index.js deleted file mode 100644 index 43ac36ef2a0..00000000000 --- a/projects/staked-hype/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -// Staked Hype (stHYPE) - Liquid staking protocol for Hyperliquid -const STHYPE_TOKEN = '0xfFaa4a3D97fE9107Cef8a3F48c069F577Ff76cC1' -const WHYPE = ADDRESSES.hyperliquid.WHYPE - -async function tvl(api) { - // Get total staked HYPE using totalAssets() method - const totalStakedHYPE = await api.call({ - target: STHYPE_TOKEN, - abi: 'uint256:totalSupply' - }) - - // Add HYPE (underlying asset) to TVL - api.add(WHYPE, totalStakedHYPE) -} - -module.exports = { - methodology: 'Tracks the total value of HYPE tokens staked through the Staked Hype liquid staking protocol. Users stake HYPE and receive stHYPE tokens that accrue rewards via rebase.', - hyperliquid: { - tvl - } -} diff --git a/projects/stakedao/index.js b/projects/stakedao/index.js deleted file mode 100644 index cbbf31f4ff1..00000000000 --- a/projects/stakedao/index.js +++ /dev/null @@ -1,281 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getConfig } = require("../helper/cache"); - -const lockers = require("./lockers"); -const { ABI, STRATEGIES_ENDPOINT, LOCKERS_ENDPOINT, LEGACY_VAULTS, LOCKERS, LOCKERS_GATEWAY } = require("./utils"); - -// ******************************************************************************** -// ******** ******** -// ******** LEGACY PRODUCTS ******** -// ******** ******** -// ******************************************************************************** - -async function handleLegacyProducts(api) { - await api.erc4626Sum({ calls: LEGACY_VAULTS[api.chainId] }); -} - -// ******************************************************************************** -// ******** ******** -// ******** STRATEGIES ******** -// ******** ******** -// ******************************************************************************** - -async function handleStrategies(api, holder, underlying, strats, onlyboost) { - const calls = []; - const tokens = []; - - const llamalend = []; - const yearn = []; - - for (let i = 0; i < strats.length; ++i) { - const strat = strats[i]; - - if (strat.isLending) { - llamalend.push({ - token: { target: strat.lpToken.address }, - balance: { target: strat.gaugeAddress, params: holder }, - }); - } else if (strat.protocol === "yearn") { - yearn.push({ - token: strat.underlyingReward[0].address, - vault: { target: strat.lpToken.address }, - balance: { target: strat.gaugeAddress, params: holder }, - }); - } else if (strat.protocol === "curve" && strat.version !== 2) { - tokens.push(strat.lpToken.address) - calls.push({ target: strat.lpToken.address, params: strat.vault }); - } else { - const token = strat.lpToken.address; - const receipt = underlying === "pendle" ? strat.lpToken.address : strat.gaugeAddress; - - tokens.push(token); - calls.push({ target: receipt, params: holder }); - - if (onlyboost) { - const receipt = strat[onlyboost.poolKey]?.crvRewards; - const holder = strat.onlyboost?.implementations?.find( - (os) => os.key === onlyboost.key - )?.address; - - if (holder && receipt) { - tokens.push(token); - calls.push({ target: receipt, params: holder }); - } - } - } - } - - if (llamalend.length > 0) { - const llBalance = await api.multiCall({ abi: "erc20:balanceOf", calls: llamalend.map((el) => el.balance) }); - const llTokens = await api.multiCall({ abi: "function borrowed_token() public view returns (address)", calls: llamalend.map((el) => el.token) }); - const llPricePerShare = await api.multiCall({ abi: ABI.pricePerShare, calls: llamalend.map((el) => el.token) }); - - for (let i = 0; i < llamalend.length; ++i) { - const tokenBalance = (llBalance[i] * llPricePerShare[i]) / 1e18; - api.add(llTokens[i], tokenBalance); - } - } - - if (yearn.length > 0) { - const yearnBalance = await api.multiCall({ abi: "erc20:balanceOf", calls: yearn.map((el) => el.balance) }); - const yearnPricePerShare = await api.multiCall({ abi: ABI.pricePerShare, calls: yearn.map((el) => el.vault) }); - - for (let i = 0; i < yearn.length; ++i) { - const tokenBalance = (yearnBalance[i] * yearnPricePerShare[i]) / 1e18; - api.add(yearn[i].token, tokenBalance); - } - } - - if (calls.length > 0) { - const balances = await api.multiCall({ abi: "erc20:balanceOf", calls }); - api.addTokens(tokens, balances); - } -} - -async function getV1Strategies(api, underlying, onlyboost) { - const res = await getConfig( - `stakedao/${api.chainId}-${underlying}`, - `${STRATEGIES_ENDPOINT}/${underlying}/${api.chainId}.json` - ); - - await handleStrategies(api, LOCKERS[underlying][api.chainId], underlying, res.deployed, onlyboost); -} - -async function getV2Strategies(api, underlying, onlyboost) { - const res = await getConfig( - `stakedao/${api.chainId}-v2-${underlying}`, - `${STRATEGIES_ENDPOINT}/v2/${underlying}/${api.chainId}.json` - ); - - await handleStrategies(api, LOCKERS_GATEWAY[underlying][api.chainId], underlying, res, onlyboost); -} - -// ******************************************************************************** -// ******** ******** -// ******** LOCKERS ******** -// ******** ******** -// ******************************************************************************** - -async function handleLockers(api) { - const res = await getConfig( - `stakedao/${api.chainId}-lockers`, - `${LOCKERS_ENDPOINT}/` - ).then((res) => res.parsed); - - const promises = [lockers.common(api, res)]; - - if (api.chainId === 1) { - promises.push( - ...[ - lockers.pendle(api, res), - lockers.yieldnest(api, res), - lockers.maverick(api, res), - lockers.frax(api, res), - ] - ); - } else if (api.chainId === 252) { - promises.push(lockers.frax(api, res)); - } else if (api.chainId === 8453) { - promises.push(lockers.spectra(api, res)); - } else if (api.chainId === 59144) { - promises.push(lockers.zero(api, res)); - } - - await Promise.all(promises); -} - -// ******************************************************************************** -// ******** ******** -// ******** TVL ******** -// ******** ******** -// ******************************************************************************** - -async function ethereum(api) { - await Promise.all([ - // Lockers - handleLockers(api), - // Strategies v1 - getV1Strategies(api, "curve", { key: "convex", poolKey: "convexPool" }), - getV1Strategies(api, "balancer"), - getV1Strategies(api, "pendle"), - getV1Strategies(api, "yearn"), - // Strategies v2 - getV2Strategies(api, "curve", { key: "convex", poolKey: "convexPool" }), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function arbitrum(api) { - await Promise.all([ - // Strategies v1 - getV1Strategies(api, "curve"), - // Strategies v2 - getV2Strategies(api, "curve", { key: "convex", poolKey: "convexPool" }), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function fraxtal(api) { - await Promise.all([ - // Lockers - handleLockers(api), - // Strategies v2 - getV2Strategies(api, "curve", { key: "convex", poolKey: "convexPool" }), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function sonic(api) { - await Promise.all([ - // Strategies v2 - getV2Strategies(api, "curve"), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function base(api) { - await Promise.all([ - // Lockers - handleLockers(api), - // Strategies v2 - getV2Strategies(api, "curve"), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function xdai(api) { - await Promise.all([ - // Strategies v2 - getV2Strategies(api, "curve"), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function optimism(api) { - await Promise.all([ - // Strategies v2 - getV2Strategies(api, "curve"), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function polygon(api) { - await Promise.all([ - // Legacy Products - handleLegacyProducts(api), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function avax(api) { - await Promise.all([ - // Legacy Products - handleLegacyProducts(api), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function linea(api) { - await Promise.all([ - // Lockers - handleLockers(api), - ]); - - return sumTokens2({ api, resolveLP: true }); -} - -async function staking(api) { - const sanctuary = "0xaC14864ce5A98aF3248Ffbf549441b04421247D3"; - const arbStrat = "0x20D1b558Ef44a6e23D9BF4bf8Db1653626e642c3"; - const veSdt = "0x0C30476f66034E11782938DF8e4384970B6c9e8a"; - const sdtToken = "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F"; - - return sumTokens2({ - api, - owners: [sanctuary, arbStrat, veSdt], - tokens: [sdtToken], - }); -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { tvl: ethereum, staking }, - optimism: { tvl: optimism }, - polygon: { tvl: polygon }, - avax: { tvl: avax }, - arbitrum: { tvl: arbitrum }, - sonic: { tvl: sonic }, - fraxtal: { tvl: fraxtal }, - base: { tvl: base }, - xdai: { tvl: xdai }, - linea: { tvl: linea }, -}; diff --git a/projects/stakedao/lockers.js b/projects/stakedao/lockers.js deleted file mode 100644 index 11ae2ca7ee7..00000000000 --- a/projects/stakedao/lockers.js +++ /dev/null @@ -1,95 +0,0 @@ -const { SPECIFIC_CASE_LOCKERS} = require('./utils') - -async function common(api, res) { - const lockers = res.filter((locker) => !SPECIFIC_CASE_LOCKERS.includes(locker.id) && locker.chainId === api.chainId) - const calls = lockers.map(l => ({ target: l.modules.veToken, params: l.modules.locker })) - const balances = await api.multiCall({ abi: 'function locked(address arg0) view returns (int128 amount, uint256 end)', calls }) - - api.addTokens(lockers.map(l => l.token.address), balances.map(b => b.amount)) -} - -async function pendle(api, res) { - const locker = res.find(l => l.id === "pendle") - const balance = await api.call({ - abi: 'function positionData(address arg0) view returns (uint128 amount, uint128 end)', - target: locker.modules.veToken, - params: locker.modules.locker - }) - - api.add(locker.token.address, balance.amount) -} - -async function yieldnest(api, res) { - const locker = res.find(l => l.id === "ynd") - const balance = await api.call({ - abi: 'function getLockedBalance() public view returns (uint256 totalLockedBalance)', - target: locker.modules.depositor, - }) - - api.add(locker.token.address, balance) -} - -async function maverick(api, res) { - const locker = res.find(l => l.id === "mav") - const balance = await api.call({ - abi: 'function lockups(address,uint256) view returns (uint256 amount, uint256 end, uint256 points)', - target: locker.modules.veToken, - params: [locker.modules.locker, 0] - }) - - api.add(locker.token.address, balance.amount) -} - -async function spectra(api, res) { - const locker = res.find(l => l.id === "spectra") - const balance = await api.call({ - abi: 'function locked(uint256 _tokenId) view returns (int128 amount, uint256 end, bool isPermanent)', - target: locker.modules.veToken, - params: 1263 - }) - - api.add(locker.token.address, balance.amount) -} - -async function zero(api, res) { - const locker = res.find(l => l.id === "zero") - const balance = await api.call({ - abi: 'function getLockedNftDetails(address _user) view returns (uint256[] nftIds, tuple(uint256 amount, uint256 end, uint256 start, uint256 power)[] lockedBalance)', - target: locker.modules.veToken, - params: locker.modules.locker - }) - - api.add(locker.token.address, balance.lockedBalance[0].amount) -} - -async function frax(api, res) { - const locker = res.find(l => l.id === "fxs") - - if (api.chainId === 1) { - const balance = await api.call({ - abi: 'function locked(address arg0) view returns (int128 amount, uint256 end)', - target: locker.extensions.sideChains[0].veToken, - params: locker.extensions.sideChains[0].locker - }) - - api.add(locker.extensions.sideChains[0].token, balance.amount) - } else if (api.chainId === 252) { - const balance = await api.call({ - abi: 'function balanceOfLockedFxs(address _addr) public view returns (uint256 _balanceOfLockedFxs)', - target: locker.modules.veToken, - params: locker.modules.locker - }) - - api.add(locker.token.address, balance) - } -} - -module.exports = { - common, - pendle, - yieldnest, - maverick, - spectra, - zero, - frax -} \ No newline at end of file diff --git a/projects/stakedao/utils.js b/projects/stakedao/utils.js deleted file mode 100644 index 2511056c163..00000000000 --- a/projects/stakedao/utils.js +++ /dev/null @@ -1,58 +0,0 @@ -const STRATEGIES_ENDPOINT = 'https://api.stakedao.org/api/strategies'; -const LOCKERS_ENDPOINT = 'https://api.stakedao.org/api/lockers'; - -const LEGACY_VAULTS = { - 1: [ - '0xB17640796e4c27a39AF51887aff3F8DC0daF9567', // crv3_vault_v2 - '0xCD6997334867728ba14d7922f72c893fcee70e84', // eurs_vault_v2 - '0x5af15DA84A4a6EDf2d9FA6720De921E1026E37b7', // frax_vault_v2 - '0x99780beAdd209cc3c7282536883Ef58f4ff4E52F', // frax_vault2_v2 - '0xa2761B0539374EB7AF2155f76eb09864af075250', // eth_vault_v2 - '0xbC10c4F7B9FE0B305e8639B04c536633A3dB7065', // steth_vault_v2 - ], - 137: ['0x7d60F21072b585351dFd5E8b17109458D97ec120'], - 43114: ['0x0665eF3556520B21368754Fb644eD3ebF1993AD4'] -} - -const LOCKERS = { - curve: { - 1: '0x52f541764E6e90eeBc5c21Ff570De0e2D63766B6', - 42161: '0x52f541764E6e90eeBc5c21Ff570De0e2D63766B6' - }, - balancer: { - 1: '0xea79d1A83Da6DB43a85942767C389fE0ACf336A5' - }, - pendle: { - 1: '0xD8fa8dC5aDeC503AcC5e026a98F32Ca5C1Fa289A' - }, - yearn: { - 1: '0xF750162fD81F9a436d74d737EF6eE8FC08e98220' - }, -} - -const LOCKERS_GATEWAY = { - curve: { - 1: '0x52f541764E6e90eeBc5c21Ff570De0e2D63766B6', - 10: '0xe5d6D047DF95c6627326465cB27B64A8b77A8b91', - 146: '0x52f541764E6e90eeBc5c21Ff570De0e2D63766B6', - 252: '0x52f541764E6e90eeBc5c21Ff570De0e2D63766B6', - 8453: '0x52f541764E6e90eeBc5c21Ff570De0e2D63766B6', - 42161: '0xe5d6D047DF95c6627326465cB27B64A8b77A8b91', - } -} - -const SPECIFIC_CASE_LOCKERS = ["pendle", "mav", "ynd", "fxs", "spectra", "zero"] - -const ABI = { - pricePerShare: 'function pricePerShare() public view returns (uint256)' -} - -module.exports = { - STRATEGIES_ENDPOINT, - LOCKERS_ENDPOINT, - LEGACY_VAULTS, - LOCKERS, - LOCKERS_GATEWAY, - SPECIFIC_CASE_LOCKERS, - ABI -} \ No newline at end of file diff --git a/projects/stakedicp/index.js b/projects/stakedicp/index.js deleted file mode 100644 index 54a68c79086..00000000000 --- a/projects/stakedicp/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { get } = require("../helper/http"); - -const url = 'https://h6uvl-xiaaa-aaaap-qaawa-cai.raw.ic0.app/tvl'; - -async function tvl(_timestamp, _block) { - const tvl = (await get(url)).tvl; - if (tvl === undefined) { - // API didn't return a tvl number to work with - throw new Error("Unknown"); - } - return { - "coingecko:internet-computer": tvl/1e8, - }; -} - -module.exports = { - timetravel: false, - methodology: "TVL counts ICP deposited as collateral to mint stICP", - icp: { - tvl, - }, -}; diff --git a/projects/stakedotlink-index/index.js b/projects/stakedotlink-index/index.js deleted file mode 100644 index 639ab7b2ae1..00000000000 --- a/projects/stakedotlink-index/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const ixETH = '0x535321013A1E2D5aF3B1853812a64CA3fc6C1fa1' - const tokens = await api.call({ abi: 'address[]:getLSDTokens', target: ixETH }) - const strategies = await api.multiCall({ abi: 'function lsdAdapters(address) view returns (address)', calls: tokens, target: ixETH, }) - const tokensAndOwners2 = [tokens, strategies] - return sumTokens2({ api, tokensAndOwners2, }) -} - -module.exports = { - ethereum: { tvl }, - deadFrom: '2025-08-18' -} \ No newline at end of file diff --git a/projects/stakedotlink/index.js b/projects/stakedotlink/index.js deleted file mode 100644 index 9ce89ff3e7a..00000000000 --- a/projects/stakedotlink/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const sdlToken = "0xA95C5ebB86E0dE73B4fB8c47A45B792CFeA28C23"; -const sdlStakingPool = "0x0B2eF910ad0b34bf575Eb09d37fd7DA6c148CA4d"; -const linkToken = ADDRESSES.ethereum.LINK; -const linkStakingPool = "0xb8b295df2cd735b15BE5Eb419517Aa626fc43cD5"; -const linkPriorityPool = "0xDdC796a66E8b83d0BcCD97dF33A6CcFBA8fd60eA"; -const polToken = ADDRESSES.ethereum.POL; -const polStakingPool = "0x2ff4390dB61F282Ef4E6D4612c776b809a541753"; - -async function tvl(api) { - const linkBals = await Promise.all([ - api.call({ target: linkStakingPool, abi: 'uint256:totalStaked', }), - api.call({ target: linkPriorityPool, abi: 'uint256:totalQueued', }), - ]) - const polBals = await Promise.all([ - api.call({ target: polStakingPool, abi: 'uint256:totalStaked', }), - ]) - - linkBals.forEach(i => api.add(linkToken, i)) - polBals.forEach(i => api.add(polToken, i)) - return api.getBalances() -} - -async function staking(api) { - const bal = await api.call({ abi: 'erc20:balanceOf', target: sdlToken, params: [sdlStakingPool] }) - api.add(sdlToken, bal) - return api.getBalances() -} - -module.exports = { - methodology: - "Queries LINK staking/priority pools, POL staking pool, and SDL staking pool for the total amount of tokens staked", - start: '2022-12-06', - ethereum: { - tvl, - staking, - }, -}; diff --git a/projects/stakee/index.js b/projects/stakee/index.js deleted file mode 100644 index 86454b384f4..00000000000 --- a/projects/stakee/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { call } = require("../helper/chain/ton"); - -module.exports = { - timetravel: false, - ton: { - tvl: async () => { - const result = await call({ target: "EQD2_4d91M4TVbEBVyBF8J1UwpMJc361LKVCz6bBlffMW05o", abi: "get_pool_full_data"}) - return { "coingecko:the-open-network": result[2]/1e9 }; - } - } -} diff --git a/projects/stakeease/index.js b/projects/stakeease/index.js deleted file mode 100644 index 2b41ce12d80..00000000000 --- a/projects/stakeease/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") - -const SX_ETH_VAULT = "0x466B447D68112090ea46a98E15f22da44f87AF7F" - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: SX_ETH_VAULT, tokens: [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.EETH, - ADDRESSES.linea.rzETH, - '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0', - '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7', - ]}), - } -}; diff --git a/projects/stakeeasy/index.js b/projects/stakeeasy/index.js deleted file mode 100644 index 347b075fa53..00000000000 --- a/projects/stakeeasy/index.js +++ /dev/null @@ -1,15 +0,0 @@ -async function tvl() { - return {} -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - deadFrom: '2025-01-25', - secret: { - tvl - }, - juno: { - tvl - } -} \ No newline at end of file diff --git a/projects/stakehound/index.js b/projects/stakehound/index.js deleted file mode 100644 index ee1ebf75bbe..00000000000 --- a/projects/stakehound/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - ethereum: { - tvl: () => ({}), - }, -} diff --git a/projects/stakerz-io/index.js b/projects/stakerz-io/index.js deleted file mode 100644 index 8a58de67673..00000000000 --- a/projects/stakerz-io/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - kava: { - tvl: () => ({}), - staking: () => ({}) - }, - deadFrom: "2023-12-01", -} diff --git a/projects/stakesteak/index.js b/projects/stakesteak/index.js deleted file mode 100644 index 0513ecb8418..00000000000 --- a/projects/stakesteak/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { addFundsInMasterChef } = require('../helper/masterchef') -const { staking } = require('../helper/staking') -const poolInfoAbi = 'function getPoolInfo(uint256 _pid) view returns (tuple(address stakingToken, uint256 stakingTokenTotalAmount, uint32 lastRewardTime, uint256[] AccRewardsPerShare, uint256[] AllocPoints))' - -const tusd = ADDRESSES.ethereum.TUSD -const ifusd = "0x9fC071cE771c7B27b7d9A57C32c0a84c18200F8a" - -async function tvl(api) { - - const fusd = await api.call({ - target: '0xad84341756bf337f5a0164515b1f6f993d194e1f', - params: ifusd, abi: 'erc20:balanceOf', - }) - const balances = { - [tusd]: fusd - } - const transform = i => `fantom:${i}` - await addFundsInMasterChef(balances, '0x5bC37CAAA3b490b65F5A50E2553f4312126A8b7e', api.block, 'fantom', transform, poolInfoAbi, [ifusd, "0xa0828eE559110b041DEdbf10Ae0cf42274251de1"]) - return balances -} - -module.exports = { - methodology: 'TVL counts the fUSD deposited to creat ifUSD and the tokens in the masterchef. Steak is counted towards staking and TUSD is used to represent fUSD since fUSD is not on CoinGecko.', - fantom: { - staking: staking('0xb632c5d42BD4a44a617608Ad1c7d38f597E22E3C', '0x05848b832e872d9edd84ac5718d58f21fd9c9649'), - tvl - }, -} \ No newline at end of file diff --git a/projects/stakestone-berastone/index.js b/projects/stakestone-berastone/index.js deleted file mode 100644 index d23640a24e3..00000000000 --- a/projects/stakestone-berastone/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const vaultABI = { - "getUnderlyings": "function getUnderlyings() external view returns (address[])", - "assetsBorrowed": "function assetsBorrowed() external view returns (uint256)" -} - -const ETHVault = '0x8f88aE3798E8fF3D0e0DE7465A0863C9bbB577f0'; -const BTCVault = '0xf401Cc9f467c7046796D9A8b44b0c1348b4DEec7'; - -const tvl = async (api) => { - // to include assets moved to boyco vault - const usedTVL = await api.call({ abi: vaultABI.assetsBorrowed, target: ETHVault }) - api.add(ADDRESSES.ethereum.STONE, usedTVL); - - const vaults = [ETHVault, BTCVault]; - const tokens = await api.multiCall({ abi: vaultABI.getUnderlyings, calls: vaults}) - return api.sumTokens({ ownerTokens: tokens.map((t, i) => [t, vaults[i]]) }) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - } -} \ No newline at end of file diff --git a/projects/stakestone-btc/index.js b/projects/stakestone-btc/index.js deleted file mode 100644 index bec2f208501..00000000000 --- a/projects/stakestone-btc/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const vaultABI = { - "getDepositAmounts": "function getDepositAmounts() view returns (address[], uint256[])" -} - -const VaultBSC = '0x3aa0670E24Cb122e1d5307Ed74b0c44d619aFF9b'; -const VaultETH = '0x7dBAC0aA440A25D7FB43951f7b178FF7A809108D'; - -const bscTvl = async (api) => { - const [btclist] = await api.call({ abi: vaultABI.getDepositAmounts, target: VaultBSC }) - return api.sumTokens({ owner: VaultBSC, tokens: btclist }) -} - -const ethTvl = async (api) => { - const [btclist] = await api.call({ abi: vaultABI.getDepositAmounts, target: VaultETH }) - return api.sumTokens({ owner: VaultETH, tokens: btclist }) -} - -module.exports = { - bsc: { - tvl: bscTvl, - }, - ethereum: { - tvl: ethTvl, - } -} -module.exports.doublecounted = true; \ No newline at end of file diff --git a/projects/stakestone-stonebtc/index.js b/projects/stakestone-stonebtc/index.js deleted file mode 100644 index 389449b0419..00000000000 --- a/projects/stakestone-stonebtc/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const vaultABI = { - "getUnderlyings": "function getUnderlyings() external view returns (address[])" -} - -const Vault = '0x1fC603779DC6b4866769A58067777D2C52628226'; - -const Tvl = async (api) => { - const btclist = await api.call({ abi: vaultABI.getUnderlyings, target: Vault }) - return api.sumTokens({ owner: Vault, tokens: btclist }) -} - -module.exports = { - ethereum: { - tvl: Tvl, - } -} diff --git a/projects/stakestone/index.js b/projects/stakestone/index.js deleted file mode 100644 index 71f01d5e9c5..00000000000 --- a/projects/stakestone/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const AssetVault = '0x9485711f11B17f73f2CCc8561bcae05BDc7E9ad9'; -const VaultStrategy = '0x396aBF9fF46E21694F4eF01ca77C6d7893A017B2'; -const StoneOnManta = ADDRESSES.berachain.STONE; - -const ethTvl = async (api) => { - const strategyBal = await api.call({ abi: 'uint256:getAllStrategiesValue', target: VaultStrategy }) - api.add(ADDRESSES.null, strategyBal) - return api.sumTokens({ owner: AssetVault, tokens: [ADDRESSES.null] }) -} - -const mantaTvl = async (api) => { - const stoneAmount = await api.call({ abi: 'uint256:totalSupply', target: StoneOnManta }) - const stonePrice = await api.call({ abi: 'uint256:tokenPrice', target: StoneOnManta }) - const ethAmount = stoneAmount * stonePrice / 1e18 - return api.add(ADDRESSES.null, ethAmount) -} - -module.exports = { - ethereum: { - tvl: ethTvl - }, - // manta: { - // tvl: mantaTvl - // } -} diff --git a/projects/stakewise/index.js b/projects/stakewise/index.js deleted file mode 100644 index 5ec1858c238..00000000000 --- a/projects/stakewise/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') - -const CONFIG = { - ethereum: { - rETH2: '0x20BC832ca081b91433ff6c17f85701B6e92486c5', - sETH2: '0xFe2e637202056d30016725477c5da089Ab0A043A', - validator: '0xEadCBA8BF9ACA93F627F31fB05470F5A0686CEca', - factory: '0x3a0008a588772446f6e656133c2d5029cc4fc20e', - blacklist: ['0x09e84205df7c68907e619d07afd90143c5763605'] - }, - xdai: { - GNO: ADDRESSES.xdai.GNO, - sGNO: '0xA4eF9Da5BA71Cc0D2e5E877a910A37eC43420445' - } -} - -const topic = { - validatorRegistered: 'ValidatorRegistered(bytes32,bytes,uint256,address)', - vaultAdded: 'VaultAdded(address,address)' -} - -const ethTvl = async (api) => { - const { rETH2, sETH2, validator, factory, blacklist } = CONFIG[api.chain] - const lsBals = await api.multiCall({ abi: 'erc20:totalSupply', calls: [rETH2, sETH2]}) - const solosValidators = await getLogs({ api, target: validator, topic: topic.validatorRegistered, fromBlock: 11726299 }) - lsBals.push(solosValidators.length * 32e18) - const vaults = await getLogs({ api, target: factory, topic: topic.vaultAdded, fromBlock: 18470078 }) - - const assets = await api.multiCall({ - calls: vaults - .map(v => ({ target: "0x" + v.topics[2].slice(26) })) - .filter(call => !blacklist.includes(call.target.toLowerCase())), - abi: "uint256:totalAssets" - }) - - api.add(ADDRESSES.ethereum.WETH, assets.concat(lsBals)) -} - -const xdaiTvl = async (api) => { - const { GNO, sGNO } = CONFIG[api.chain] - const supply = await api.call({ target: sGNO, abi: 'erc20:totalSupply' }) - api.add(GNO, supply) -} - -module.exports = { - methodology: 'Counts ETH staked', - ethereum: { tvl: ethTvl }, - xdai: { tvl: xdaiTvl } -} \ No newline at end of file diff --git a/projects/stakin-gg/index.js b/projects/stakin-gg/index.js deleted file mode 100644 index c708257e558..00000000000 --- a/projects/stakin-gg/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const WETH = ADDRESSES.optimism.WETH_1; -const CONTRACT = '0xEF5E916de82839A8131eaac866280492966cd37C'; - -async function tvl(api) { - return api.sumTokens({ tokens: [WETH], owners: [CONTRACT] }); -} - -module.exports = { - methodology: 'Counts WETH in the project’s main contract', - start: 28896428, - base: { tvl }, -}; \ No newline at end of file diff --git a/projects/stakingverse/index.js b/projects/stakingverse/index.js deleted file mode 100644 index d25a29c9d43..00000000000 --- a/projects/stakingverse/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -/* - * Stakingverse adapter for DefiLlama - * Tracks TVL for LUKSO staking - */ - -const STAKING_CONTRACT = '0x9F49a95b0c3c9e2A6c77a16C177928294c0F6F04'; -const SLYX_TOKEN_CONTRACT = ADDRESSES.lukso.sLYX; // Liquid staking token - kept for reference -const LYX_ADDRESS = ADDRESSES.null; // Native token null address -const ETHEREUM_STAKING_CONTRACT = '0x8A93A876912c9F03F88Bc9114847cf5b63c89f56'; // StakeWise V3 vault on Ethereum - -/** - * TVL function - calculates the total value of LYX staked in the staking contract - */ -async function luksoTvl(api) { - // Get total staked LYX using totalAssets() method - const totalStakedLYX = await api.call({ - target: STAKING_CONTRACT, - abi: 'function totalAssets() view returns (uint256)' - }); - - // Add native LYX to TVL - api.add(LYX_ADDRESS, totalStakedLYX); - - return api.getBalances(); -} - -// TVL function for StakeWise V3 vault on Ethereum -async function ethereumTvl(api) { - const totalStakedETH = await api.call({ - target: ETHEREUM_STAKING_CONTRACT, - abi: 'function totalAssets() view returns (uint256)' - }); - - // Add native ETH to TVL - api.add(ADDRESSES.null, totalStakedETH); - - return api.getBalances(); -} - -module.exports = { - methodology: 'Total Value Locked (TVL) consists of LYX tokens staked in the Stakingverse liquid staking protocol.', - start: 1975213, // Deployment block of staking protocol - hallmarks: [ - [1735507440, "Deployment of sLYX liquid staking token (block 4084835)"] - ], - ethereum: { - tvl: ethereumTvl, - }, - lukso: { - tvl: luksoTvl, - } -}; \ No newline at end of file diff --git a/projects/standard-mode/index.js b/projects/standard-mode/index.js deleted file mode 100644 index 9984d1247d4..00000000000 --- a/projects/standard-mode/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const config = { - mode: [{ factory: '0x4D1b18A7BDB8D0a02f692398337aBde8DeB8FB09', fromBlock: 4381503, }, { factory: '0xaA0075035b814eA7638C15100cFa86a03397bE91', fromBlock: 4937855, },], - blast: [{ factory: '0x2CC505C4bc86B28503B5b8C450407D32e5E20A9f', fromBlock: 434946, }, { factory: '0xA8a336Ec4D546c2Dc9F188E0Be4B3FB174791813', fromBlock: 616605, },] -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - for (const { factory, fromBlock } of config[chain]) { - const logs = await getLogs({ api, target: factory, eventAbi: 'event PairAdded(address orderbook, address base, address quote, uint8 bDecimal, uint8 qDecimal)', onlyArgs: true, fromBlock, }) - const _ownerTokens = logs.map(log => [[log.base, log.quote], log.orderbook]) - ownerTokens.push(..._ownerTokens) - } - return api.sumTokens({ ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/standard-smart-vaults/index.js b/projects/standard-smart-vaults/index.js deleted file mode 100644 index ef9920859fa..00000000000 --- a/projects/standard-smart-vaults/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') -const SMART_VAULT_MANAGER_EUR_ADDRESS = '0xba169cceCCF7aC51dA223e04654Cf16ef41A68CC'; -const SMART_VAULT_MANAGER_USD_ADDRESS = '0x496aB4A155C8fE359Cd28d43650fAFA0A35322Fb'; -const { sumTokens2, unwrapHypervisorVaults } = require('../helper/unwrapLPs') -const START_TS = 1693206000; - -const gammaVaults = [ - '0x52ee1FFBA696c5E9b0Bc177A9f8a3098420EA691', - '0x6B7635b7d2E85188dB41C3c05B1efa87B143fcE8', - '0xfA392dbefd2d5ec891eF5aEB87397A89843a8260', - '0xF08BDBC590C59cb7B27A8D224E419ef058952b5f', - '0x2BCBDD577616357464CFe307Bc67F9e820A66e80', - '0x547a116a2622876ce1c8d19d41c683c8f7bec5c0', - '0x95375694685E39997828Ed5B17f30f0A3eD90537', - '0xa7fce463815f18dbe246152c5291b84db07c0bcd' -].map(i => i.toLowerCase()); - -const tokens = [ - ADDRESSES.null, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.LINK, - ADDRESSES.arbitrum.GMX, - '0xfEb4DfC8C4Cf7Ed305bb08065D08eC6ee6728429', - '0x3082CC23568eA640225c2467653dB90e9250AaA0', - '0xd4d42F0b6DEF4CE0383636770eF773390d85c61A', - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.WSTETH, - ...gammaVaults -] - -async function getOwners(api) { - const vaultEvents = []; - for (const target of [SMART_VAULT_MANAGER_EUR_ADDRESS, SMART_VAULT_MANAGER_USD_ADDRESS]) { - const logs = await getLogs({ - target, - topic: 'VaultDeployed(address,address,address,uint256)', - eventAbi: 'event VaultDeployed(address indexed vaultAddress, address indexed owner, address vaultType, uint256 tokenId)', - fromBlock: 117059962, - api, - }); - vaultEvents.push(...logs); - } - - return vaultEvents.map(event => event.args.vaultAddress); -} - -module.exports = { - methodology: 'counts the aggregated assets locked in The Standard Smart Vaults.', - start: START_TS, - arbitrum: { - tvl: async (api) => { - await sumTokens2({ owners: await getOwners(api), tokens, api }) - await unwrapHypervisorVaults({ api, lps: gammaVaults }) - } - } -}; \ No newline at end of file diff --git a/projects/standard-spot/index.js b/projects/standard-spot/index.js deleted file mode 100644 index 5acc0a852bf..00000000000 --- a/projects/standard-spot/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -// matching engine contracts -const config = { - somnia: [{ matchingEngine: '0x3Cb2CBb0CeB96c9456b11DbC7ab73c4848F9a14c', fromBlock: 87125610, }] -} - -const eventAbi = `event PairAdded( - address pair, - tuple(address token, uint8 decimals, string name, string symbol, uint256 totalSupply) base, - tuple(address token, uint8 decimals, string name, string symbol, uint256 totalSupply) quote, - uint256 listingPrice, - uint256 listingDate, - string supportedTerminals -)` - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - for (const { matchingEngine, fromBlock } of config[chain]) { - const logs = await getLogs({ api, target: matchingEngine, eventAbi, onlyArgs: true, fromBlock, }) - const _ownerTokens = logs.map(log => [[log.base.token, log.quote.token], log.pair]) - ownerTokens.push(..._ownerTokens) - } - return api.sumTokens({ ownerTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/standard-tech/index.js b/projects/standard-tech/index.js deleted file mode 100644 index ba0393d10d5..00000000000 --- a/projects/standard-tech/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0x073386AE3292299a5814B00bC1ceB8f2bfC92c51) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - shiden: { - tvl: getUniTVL({ factory: '0x073386AE3292299a5814B00bC1ceB8f2bfC92c51', useDefaultCoreAssets: true }), - }, - ethereum: { - tvl: getUniTVL({ factory: '0x53AC1d1FA4F9F6c604B8B198cE29A50d28cbA893', useDefaultCoreAssets: true }), - }, - metis: { - tvl: getUniTVL({ factory: '0xFA68bAAdBDCf014fA20bD1A4542967AE40Ddca53', useDefaultCoreAssets: true }), - } -} diff --git a/projects/standcash/index.js b/projects/standcash/index.js deleted file mode 100644 index d152d50ce01..00000000000 --- a/projects/standcash/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const boardroomContracts = "0x7F28D5a90b3A0BE2e34accDEF255eC13cf695b1e"; -const SAS = "0x4c38d0e726b6c86f64c1b281348e725973542043"; -const SAC = "0xaCd8F2523a4613Eee78904354187c81Bb05ae2b8"; - -const lpStakingContracts = [ - //USDTSASLPTokenSharePool - "0x05A27c63ADB54faee48DA03D7D10F04DFfF1d5aa", - //USDTSACLPTokenSharePool - "0x0F14a4880B7BC3Fc926499Df3AB32c72828eCF0E", -]; - -const stakingContracts = lpStakingContracts.concat([boardroomContracts]); - -const lpAddresses = [ - //SAS_USDT_UNIV2 - "0x841E63A5451e3db6879499d24cae6C6600956839", - //SAC_USDT_UNIV2 - "0x24A9CeD95BcEBDa453108E9cb1e1D3C21835B29C", -]; - -const poolContracts = [ - //SACUSDTPool - "0xf9bb984980E8b503cd9f365101C16E071eC86166", - //SACUSDCPool - "0xfDA19204C625dd82B0066a18F218179778C14E56", - //SACFRAXPool - "0xeF185DF44a1a8e94B3E8CE2a7D1e88fD5f97DE90", - //SACESDPool - "0xeaE9402B0cDd6Ef6a7D8F511F03a655ED6b5f850", - //SACDAIPool - "0xBD3316c31c48a3cD9A014a8315d05356c5723CF4", - //SACBACPool - "0x4E4c96b68Dd328eE3aaA4B7320Dd86E21D740332", - //SACAETHPool - "0x82fb0cff19E2060e912805Fe3496bC878eef17C0", -]; - -const tokenAddresses = [ - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.FRAX, - //ESD - "0x36F3FD68E7325a35EB768F1AedaAe9EA0689d723", - ADDRESSES.ethereum.DAI, - //BAC - "0x3449fc1cd036255ba1eb19d65ff4ba2b8903a69a", - //AETH - "0xE95A203B1a91a908F9B9CE46459d101078c2c3cb", -]; - -async function pool2(api) { - return sumTokens2({ api, owners: poolContracts.concat(lpStakingContracts), tokens: [...tokenAddresses, SAC, ...lpAddresses], resolveLP: true }) -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: stakings(stakingContracts, SAS), - pool2: pool2, - tvl: () => ({}), - }, - methodology: "Counts liquidty on the Staking and Pool2 Only", -}; diff --git a/projects/starbank/index.js b/projects/starbank/index.js deleted file mode 100644 index 4b1d55824e9..00000000000 --- a/projects/starbank/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - astar: { - tvl: sumTokensExport({ - owner: '0x18df7884DEa0B24334800C8b05763112Eb592ce0', - tokens: [ - '0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720', - ADDRESSES.moonbeam.USDC, - ADDRESSES.astar.USDT, - ADDRESSES.astar.SDN, - ADDRESSES.astar.DAI, - ADDRESSES.oasis.ceUSDT, - ], - }) - } -}; diff --git a/projects/starfish-finance/index.js b/projects/starfish-finance/index.js deleted file mode 100644 index 57c906139bf..00000000000 --- a/projects/starfish-finance/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { cachedGraphQuery } = require('../helper/cache') - -const addresses = { - astar: { - seanStaking: "0xa86dc743efBc24AF4c1FC5d150AaDb4DCF52c868", - seanToken: "0xEe8138B3bd03905cF84aFE10cCD0dCcb820eE08E", - }, -} - -async function tvl(api) { - - const vault = '0x496F6125E1cd31f268032bd4cfaA121D203639b7' - const vaultQuery = `{ pools(first: 1000 offset: 0 ) { nodes { tokensList } } }` - const { pools: { nodes } } = await cachedGraphQuery('starfish-fi', 'https://api.subquery.network/sq/Starfish-Finance/starfish-finance', vaultQuery) - return api.sumTokens({ owner: vault, tokens: nodes.map(p => p.tokensList).flat() }) -} - -module.exports = { - astar: { - tvl, - staking: staking(addresses.astar.seanStaking, addresses.astar.seanToken,), - }, -}; diff --git a/projects/starfish-liq-staking/index.js b/projects/starfish-liq-staking/index.js deleted file mode 100644 index 6a14deb283a..00000000000 --- a/projects/starfish-liq-staking/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - astar: { - tvl: async (api) => { - const bal = await api.call({ abi: 'uint256:internalDotBalance', target: '0x5E60Af4d06A9fc89eb47B39b5fF1b1b42a19ef39'}) - api.add(ADDRESSES.astar.DOT, bal) - } - } -} \ No newline at end of file diff --git a/projects/stargate-finance/api.js b/projects/stargate-finance/api.js deleted file mode 100644 index 606277d1561..00000000000 --- a/projects/stargate-finance/api.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('./index') -const { ohmStaking } = require('../helper/treasury') - -module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/stargate-finance/index.js b/projects/stargate-finance/index.js deleted file mode 100644 index e5d541b91ac..00000000000 --- a/projects/stargate-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0xA2B48Ad28c09cc64CcCf9eD73e1EfceD052877d5"; -module.exports = ohmTvl(treasuryAddress, [ -//BSC-USD - [ADDRESSES.bsc.USDT, false], -//BUSD - [ADDRESSES.bsc.BUSD, false], -//BABY LP - ["0xd397a40884ce00e662b419673e0b15cae628877f", true] , -//Pancake LP - ["0x41516dca7efe69518ec414de35e5aa067788de3d", true] -], "bsc", "0xb82aC36e9dF3c700F12ECF552F240BF4D7B7a212", "0x141381f07Fa31432243113Cda2F617d5d255d39a" , undefined, undefined, false) \ No newline at end of file diff --git a/projects/stargate/index.js b/projects/stargate/index.js deleted file mode 100644 index 242c6840974..00000000000 --- a/projects/stargate/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const axios = require('axios'); - -const STARGATE_CONTRACT = '0x1856c533ac2d94340aaa8544d35a5c1d4a21dee7'; -const VET_ADDRESS = ADDRESSES.null; -const NODE_URL = 'https://mainnet.vechain.org'; - -async function getTotalVetStaked() { - const resp = await axios.get(`${NODE_URL}/accounts/${STARGATE_CONTRACT}`); - const balance = resp.data.balance; - return BigInt(balance); -} - -async function tvl(api) { - const totalVetStaked = await getTotalVetStaked(); - - api.add(VET_ADDRESS, totalVetStaked) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: false, - methodology: 'Reads the total VET staked in the Stargate contract', - vechain: { tvl }, -}; diff --git a/projects/stargatefinance-v2/index.js b/projects/stargatefinance-v2/index.js deleted file mode 100644 index cd220775843..00000000000 --- a/projects/stargatefinance-v2/index.js +++ /dev/null @@ -1,155 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const CONFIG = { - ethereum: { - pools: [ - '0x77b2043768d28E9C9aB44E1aBfC95944bcE57931', - '0xc026395860Db2d07ee33e05fE50ed7bD583189C7', - '0x933597a323Eb81cAe705C5bC29985172fd5A3973', - '0xcDafB1b2dB43f366E48e6F614b8DCCBFeeFEEcD3', - '0x268Ca24DAefF1FaC2ed883c598200CcbB79E931D', - ], - }, - bsc: { - pools: [ - '0x138EB30f73BC423c6455C53df6D89CB01d9eBc63', - '0x962Bd449E630b0d928f308Ce63f1A21F02576057' - ], - }, - avax: { - pools: [ - '0x5634c4a5FEd09819E3c46D86A965Dd9447d86e47', - '0x12dC9256Acc9895B076f6638D628382881e62CeE', - ], - }, - polygon: { - pools: [ - '0x9Aa02D4Fae7F58b8E8f34c66E756cC734DAc7fe4', - '0xd47b03ee6d86Cf251ee7860FB2ACf9f91B9fD4d7', - ], - }, - arbitrum: { - pools: [ - '0xA45B5130f36CDcA45667738e2a258AB09f4A5f7F', - '0xe8CDF27AcD73a434D661C84887215F7598e7d0d3', - '0xcE8CcA271Ebc0533920C83d39F417ED6A0abB7D0', - ], - }, - optimism: { - pools: [ - '0xe8CDF27AcD73a434D661C84887215F7598e7d0d3', - '0xcE8CcA271Ebc0533920C83d39F417ED6A0abB7D0', - '0x19cFCE47eD54a88614648DC3f19A5980097007dD', - ], - }, - metis: { - pools: [ - '0xD9050e7043102a0391F81462a3916326F86331F0', - '0x36ed193dc7160D3858EC250e69D12B03Ca087D08', - '0x4dCBFC0249e8d5032F89D6461218a9D2eFff5125', - ], - }, - linea: { - pools: [ - '0x81F6138153d473E8c5EcebD3DC8Cd4903506B075', - ], - }, - mantle: { - pools: [ - '0x4c1d3Fc3fC3c177c3b633427c2F769276c547463', - '0xAc290Ad4e0c891FDc295ca4F0a6214cf6dC6acDC', - '0xB715B85682B731dB9D5063187C450095c91C57FC', - '0xF7628d84a2BbD9bb9c8E686AC95BB5d55169F3F1', - ], - }, - base: { - pools: [ - '0xdc181Bd607330aeeBEF6ea62e03e5e1Fb4B6F7C7', - '0x27a16dc786820B16E5c9028b75B99F6f604b5d26', - ], - }, - kava: { - pools: [ - '0x41A5b0470D96656Fb3e8f68A218b39AdBca3420b', - ], - }, - scroll: { - pools: [ - '0xC2b638Cb5042c1B3c5d5C969361fB50569840583', - '0x3Fc69CC4A842838bCDC9499178740226062b14E4', - ], - }, - aurora: { - pools: [ - '0x81F6138153d473E8c5EcebD3DC8Cd4903506B075', - ], - }, - sei: { - pools: [ - '0x45d417612e177672958dC0537C45a8f8d754Ac2E', //usdc pool - '0x0dB9afb4C33be43a0a0e396Fd1383B4ea97aB10a' - ], - }, - soneium: { - pools: [ - '0x45f1A95A4D3f3836523F5c83673c797f4d4d263B', //usdc pool - ADDRESSES.fuse.WETH_3 - ], - }, - unichain: { - pools: [ - '0xe9aBA835f813ca05E50A6C0ce65D0D74390F7dE7', - ], - }, - abstract: { - pools: [ - '0x221F0E1280Ec657503ca55c708105F1e1529527D', - ], - }, - xdai: { - pools: [ - '0xB1EeAD6959cb5bB9B20417d6689922523B2B86C3', //usdc pool - '0xe9aBA835f813ca05E50A6C0ce65D0D74390F7dE7' //weth pool - ], - }, - lightlink_phoenix: { - pools: [ - '0x8731d54E9D02c286767d56ac03e8037C07e01e98', //eth pool - ], - }, - hemi: { - pools: [ - ADDRESSES.fuse.WETH_3, //eth pool - ], - }, - sonic: { - pools: [ - '0xA272fFe20cFfe769CdFc4b63088DCD2C82a2D8F9', //usdc pool - ], - }, - manta: { - pools: [ - '0x9895D81bB462A195b4922ED7De0e3ACD007c32CB', // eth pool - ], - }, - swellchain: { - pools: [ - '0xCc0587aeBDa397146cc828b445dB130a94486e74', // eth pool - ], - }, -} - -const createTvlFunction = (pools) => { - return async (api) => { - const tokens = await api.multiCall({ abi: 'address:token', calls: pools, }) - return sumTokens2({ api, tokensAndOwners2: [tokens, pools] }) - }; -}; - -Object.keys(CONFIG).forEach((chain) => { - const { pools } = CONFIG[chain]; - module.exports[chain] = { - tvl: createTvlFunction(pools), - }; -}); diff --git a/projects/stargatefinance/abi.json b/projects/stargatefinance/abi.json deleted file mode 100644 index 9dd05371bbb..00000000000 --- a/projects/stargatefinance/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "factory": "address:factory", - "allPoolsLength": "uint256:allPoolsLength", - "allPools": "function allPools(uint256) view returns (address)", - "pools": "function pools(uint256) view returns (address)", - "token": "address:token" -} \ No newline at end of file diff --git a/projects/stargatefinance/index.js b/projects/stargatefinance/index.js deleted file mode 100644 index ca66427026d..00000000000 --- a/projects/stargatefinance/index.js +++ /dev/null @@ -1,97 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json') -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const CONFIG = { - ethereum: { - router: '0x8731d54E9D02c286767d56ac03e8037C07e01e98', - etherToken: '0x72E2F4830b9E45d52F80aC08CB2bEC0FeF72eD9c', - stakingContract: '0xB0D502E938ed5f4df2E681fE6E419ff29631d62b', - stg: '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6', - }, - bsc: { - router: '0x4a364f8c717cAAD9A442737Eb7b8A55cc6cf18D8', - stakingContract: '0x3052A0F6ab15b4AE1df39962d5DdEFacA86DaB47', - stg: '0xB0D502E938ed5f4df2E681fE6E419ff29631d62b', - }, - polygon: { - router: '0x45A01E4e04F14f7A4a6702c74187c5F6222033cd', - stakingContract: '0x8731d54E9D02c286767d56ac03e8037C07e01e98', - stg: ADDRESSES.fuse.WETH_3, - }, - arbitrum: { - router: '0x53Bf833A5d6c4ddA888F69c22C88C9f356a41614', - etherToken: '0x82CbeCF39bEe528B5476FE6d1550af59a9dB6Fc0', - }, - optimism: { - router: '0xB0D502E938ed5f4df2E681fE6E419ff29631d62b', - etherToken: '0xb69c8CBCD90A39D8D3d3ccf0a3E968511C3856A0', - }, - fantom: { - router: '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6', - stakingContract: '0x224D8Fd7aB6AD4c6eb4611Ce56EF35Dec2277F03', - stg: ADDRESSES.fuse.WETH_3, - }, - avax: { - router: '0x45A01E4e04F14f7A4a6702c74187c5F6222033cd', - stakingContract: '0x8731d54E9D02c286767d56ac03e8037C07e01e98', - stg: ADDRESSES.fuse.WETH_3, - }, - metis: { - router: ADDRESSES.fuse.WETH_3, - }, - mantle: { - router: ADDRESSES.fuse.WETH_3, - }, - base: { - router: '0x45f1A95A4D3f3836523F5c83673c797f4d4d263B', - etherToken: '0x224d8fd7ab6ad4c6eb4611ce56ef35dec2277f03', - stakingContract: '0x06Eb48763f117c7Be887296CDcdfad2E4092739C', - stg: '0xE3B53AF74a4BF62Ae5511055290838050bf764Df', - }, - linea: { - router: ADDRESSES.fuse.WETH_3, - etherToken: '0x224d8fd7ab6ad4c6eb4611ce56ef35dec2277f03', - stakingContract: '0x4a364f8c717cAAD9A442737Eb7b8A55cc6cf18D8', - stg: ADDRESSES.lightlink_phoenix.USDT, - }, - kava: { - router: ADDRESSES.fuse.WETH_3, - }, -} - -module.exports = { - goerli: { - tvl: () => ({}) - // tvl: async (api) => { - // return { - // [ADDRESSES.ethereum.WETH]: await api.call({ abi: 'erc20:balanceOf', target: '0xdD69DB25F6D620A7baD3023c5d32761D353D3De9', params: ['0x88124ef4a9ec47e691f254f2e8e348fd1e341e9b'], }), - // } - // }, - }, -} - -Object.keys(CONFIG).forEach((chain) => { - let { router, etherToken = '', stakingContract, stg } = CONFIG[chain] - etherToken = etherToken ? etherToken.toLowerCase() : '' - - - module.exports[chain] = { - tvl: async (api) => { - const factory = await api.call({ abi: abi.factory, target: router }) - const pools = await api.fetchList({ lengthAbi: abi.allPoolsLength, itemAbi: abi.allPools, target: factory, }) - const tokens = await api.multiCall({ abi: abi.token, calls: pools }) - const toa = [] - tokens.forEach((t, i) => { - t = t.toLowerCase() - if (t === etherToken) toa.push([nullAddress, t]) - else toa.push([t, pools[i]]) - }) - return sumTokens2({ api, tokensAndOwners: toa }) - }, - } - - if (stakingContract && stg) - module.exports[chain].staking = staking(stakingContract, stg) -}) diff --git a/projects/stargaze/index.js b/projects/stargaze/index.js deleted file mode 100644 index 5fd6ce24600..00000000000 --- a/projects/stargaze/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { get } = require('../helper/http') - -async function tvl() { - const balances = {}; - - /** - * The denom is the official API. bids was custom made for this use. @pen.so on #Stargaze - * Bids has already been converted from ustars to stars. - */ - - // const denomURL = `https://rest.stargaze-apis.com/cosmos/staking/v1beta1/params`; - const bidsURL = `https://metabase.constellations.zone/api/public/card/4bd16e60-7e77-4206-8ad2-8b04f362afed/query` - - const bidsResponse = await get(bidsURL); - // const denomResponse = await utils.fetchURL(denomURL); - sdk.util.sumSingleBalance(balances, 'ustars', bidsResponse.data.rows[0] * 1e6, 'stargaze') - - return balances; -} - -module.exports = { - timetravel: false, - methodology: 'Queries the chain API for the how many STARS are locked in bids.', - stargaze: { tvl } -}; diff --git a/projects/starkdefi/abi.js b/projects/starkdefi/abi.js deleted file mode 100644 index a6492667d22..00000000000 --- a/projects/starkdefi/abi.js +++ /dev/null @@ -1,59 +0,0 @@ -const fabis = [ - { - type: "function", - name: "all_pairs", - inputs: [], - outputs: [ - { - type: "(core::integer::u32, core::array::Array::)", - }, - ], - state_mutability: "view", - }, - ]; - - const pabistructs = [ - { - type: "struct", - name: "starkDefi::dex::v1::pair::interface::Snapshot", - members: [ - { - name: "token0", - type: "core::starknet::contract_address::ContractAddress", - }, - { - name: "token1", - type: "core::starknet::contract_address::ContractAddress", - }, - { name: "decimal0", type: "core::integer::u256" }, - { name: "decimal1", type: "core::integer::u256" }, - { name: "reserve0", type: "core::integer::u256" }, - { name: "reserve1", type: "core::integer::u256" }, - { name: "is_stable", type: "core::bool" }, - { name: "fee_tier", type: "core::integer::u8" }, - ], - }, - ]; - const pabis = [ - { - type: "function", - name: "snapshot", - inputs: [], - outputs: [{ type: "starkDefi::dex::v1::pair::interface::Snapshot" }], - state_mutability: "view", - }, - ]; - - const factory = {}; - const pair = {}; - fabis.forEach((i) => (factory[i.name] = i)); - pabis.forEach((i) => (pair[i.name] = i)); - - module.exports = { - factory, - pair, - fabis, - pabis, - pabistructs, - }; - \ No newline at end of file diff --git a/projects/starkdefi/api.js b/projects/starkdefi/api.js deleted file mode 100644 index 10c5d13646e..00000000000 --- a/projects/starkdefi/api.js +++ /dev/null @@ -1,37 +0,0 @@ -// https://www.starknetjs.com/docs/API/#contract -const { call, multiCall, parseAddress } = require("../helper/chain/starknet"); -const abi = require("./abi"); -const { transformDexBalances } = require("../helper/portedTokens"); - -const factory = - "0x02721f5ab785ae5E13b276ca9d41e859B7b150440A288A7826Ba5E27Dd05E08e"; - -async function tvl() { - const { 1: all_pairs } = await call({ - target: factory, - abi: abi.factory.all_pairs, - }); - const calls = all_pairs.map((i) => parseAddress(i)) - const snapshots = await multiCall({ abi: abi.pair.snapshot, allAbi: abi.pabistructs, calls, }); - - const data = snapshots.map(snapshot => { - const { token0, token1, reserve0, reserve1 } = snapshot; - return { - token0: parseAddress(token0), - token1: parseAddress(token1), - token0Bal: reserve0.toString(), - token1Bal: reserve1.toString(), - } - }); - - return transformDexBalances({ chain: "starknet", data }); -} - -module.exports = { - timetravel: false, - methodology: "Value of all LP available in the DEX", - isHeavyProtocol: true, - starknet: { - tvl, - }, -}; diff --git a/projects/starkdefi/index.js b/projects/starkdefi/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/starkdefi/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/starkex/abi.js b/projects/starkex/abi.js deleted file mode 100644 index 7ae4cfbdf79..00000000000 --- a/projects/starkex/abi.js +++ /dev/null @@ -1,87 +0,0 @@ -const fabis = [{ - "name": "allPairs", - "type": "function", - "inputs": [ - { - "name": "index", - "type": "felt" - } - ], - "outputs": [ - { - "name": "pair", - "type": "felt" - } - ], - "stateMutability": "view" -}, -{ - "name": "allPairsLength", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "length", - "type": "felt" - } - ], - "stateMutability": "view" -} -] - -const pabis = [ - { - "name": "token0", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "token0", - "type": "felt" - } - ], - "stateMutability": "view" - }, - { - "name": "token1", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "token1", - "type": "felt" - } - ], - "stateMutability": "view" - }, - { - "name": "getReserves", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "reserve0", - "type": "felt" - }, - { - "name": "reserve1", - "type": "felt" - }, - { - "name": "blockTimestampLast", - "type": "felt" - } - ], - "stateMutability": "view" - }, -] - - -const factory = {} -const pair = {} -fabis.forEach(i => factory[i.name] = i) -pabis.forEach(i => pair[i.name] = i) - -module.exports = { - factory, pair, fabis, pabis, -} diff --git a/projects/starkex/api.js b/projects/starkex/api.js deleted file mode 100644 index 1b7d1e5c14d..00000000000 --- a/projects/starkex/api.js +++ /dev/null @@ -1,37 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { call, multiCall, parseAddress } = require('../helper/chain/starknet') -const abi = require('./abi') -const { transformDexBalances } = require('../helper/portedTokens') -const { getParamCalls } = require('../helper/utils') - -async function tvl() { - const factory = '0x07df3bce30857e8f9c08bcd9d9668df34166e94dd968db6e2920b870c4410e34' - let pairLength = await call({ target: factory, abi: abi.factory.allPairsLength}) - let pairs = await multiCall({ abi: abi.factory.allPairs, target: factory, calls: getParamCalls(+pairLength)}) - - const calls = pairs.map(i => parseAddress(i)).filter(i => i !== '0x0000000000000000000000000000000000000000000000000000000000000000') - - const token0s = await multiCall({ abi: abi.pair.token0, calls }) - const token1s = await multiCall({ abi: abi.pair.token1, calls }) - const reserves = await multiCall({ abi: abi.pair.getReserves, calls }) - - const data = [] - reserves.forEach((reserve, i) => { - data.push({ - token0: parseAddress(token0s[i]), - token1: parseAddress(token1s[i]), - token0Bal: +reserve.reserve0, - token1Bal: +reserve.reserve1, - }) - }) - - return transformDexBalances({chain:'starknet', data}) -} - -module.exports = { - timetravel: false, - starknet: { - tvl, - } -} diff --git a/projects/starkex/index.js b/projects/starkex/index.js deleted file mode 100644 index 11f5177a678..00000000000 --- a/projects/starkex/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') diff --git a/projects/starknet/index.js b/projects/starknet/index.js deleted file mode 100644 index 19400093b1a..00000000000 --- a/projects/starknet/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require("../helper/http"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -async function tvl(api) { - const mapping = await get(`https://raw.githubusercontent.com/starknet-io/starknet-addresses/master/bridged_tokens/mainnet.json`); - const tokensAndOwners = mapping - .filter(i => i.l1_token_address) - .map((t) => [ - t.l1_token_address == "0x0000000000000000000000000000000000455448" - ? ADDRESSES.GAS_TOKEN_2 - : t.l1_token_address, - t.l1_bridge_address, - ]); - - tokensAndOwners.push([ADDRESSES.ethereum.DAI, "0x0437465dfb5B79726e35F08559B0cBea55bb585C"]); - return sumTokens2({ api, tokensAndOwners }); -} - -module.exports = { - ethereum: { tvl }, -}; diff --git a/projects/starkspot/abi.js b/projects/starkspot/abi.js deleted file mode 100644 index a3ee514e816..00000000000 --- a/projects/starkspot/abi.js +++ /dev/null @@ -1,77 +0,0 @@ -const fabis = [ - { - "inputs": [], - "name": "get_all_pairs", - "outputs": [ - { - "name": "all_pairs_len", - "type": "felt" - }, - { - "name": "all_pairs", - "type": "felt*" - } - ], - "stateMutability": "view", - "type": "function" - } -] - -const pabis = [ - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "name": "address", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function", - "customType": "address" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "name": "address", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function", - "customType": "address" - }, - { - "inputs": [], - "name": "get_reserves", - "outputs": [ - { - "name": "reserve0", - "type": "Uint256" - }, - { - "name": "block_timestamp_last", - "type": "felt" - }, - { - "name": "reserve1", - "type": "Uint256" - }, - ], - "stateMutability": "view", - "type": "function" - }, -] - - -const factory = {} -const pair = {} -fabis.forEach(i => factory[i.name] = i) -pabis.forEach(i => pair[i.name] = i) - -module.exports = { - factory, pair, fabis, pabis, -} \ No newline at end of file diff --git a/projects/starkspot/api.js b/projects/starkspot/api.js deleted file mode 100644 index cd4513a8824..00000000000 --- a/projects/starkspot/api.js +++ /dev/null @@ -1,53 +0,0 @@ -// https://www.starknetjs.com/docs/API/contract - -const { call, multiCall, parseAddress } = require("../helper/chain/starknet"); -const { getCache, setCache } = require("../helper/cache"); -const abi = require("./abi"); -const { transformDexBalances } = require("../helper/portedTokens"); -const factory = - "0x594074315e98393351438011f5a558466f1733fde666f73f41738a39804c27"; - -async function tvl() { - let { all_pairs } = await call({ - target: factory, - abi: abi.factory.get_all_pairs, - }); - - const calls = all_pairs.map((i) => parseAddress(i)); - const cache = (await getCache("starkspot", "starknet")) ?? {}; - if (!cache.token0s) { - cache.token0s = []; - cache.token1s = []; - } - const oldCacheLength = cache.token0s.length; - const newCalls = calls.slice(oldCacheLength); - - const _token0s = await multiCall({ abi: abi.pair.token0, calls: newCalls }); - const _token1s = await multiCall({ abi: abi.pair.token1, calls: newCalls }); - const reserves = await multiCall({ abi: abi.pair.get_reserves, calls, permitFailure: true, }); - cache.token0s.push(..._token0s); - cache.token1s.push(..._token1s); - if (cache.token0s.length > oldCacheLength) - await setCache("starkspot", "starknet", cache); - - const data = []; - reserves.forEach((reserve, i) => { - if (!reserve) return; - data.push({ - token0: cache.token0s[i], - token1: cache.token1s[i], - token0Bal: +reserve.reserve0, - token1Bal: +reserve.reserve1, - }); - }); - - return transformDexBalances({ chain: "starknet", data }); -} - -module.exports = { - // deadFrom: '2025-01-04', - timetravel: false, - starknet: { - tvl, - }, -}; diff --git a/projects/starkspot/index.js b/projects/starkspot/index.js deleted file mode 100644 index 674e8c995c1..00000000000 --- a/projects/starkspot/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./api') \ No newline at end of file diff --git a/projects/starlay/index.js b/projects/starlay/index.js deleted file mode 100644 index 4c515b8c911..00000000000 --- a/projects/starlay/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { aaveExports, methodology, } = require("../helper/aave"); -const ADDRESSES = require('../helper/coreAssets.json') -const VOTING_ESCROW_ADDRESS = "0xDf32D28c1BdF25c457E82797316d623C2fcB29C8"; -const { staking } = require("../helper/staking"); - -module.exports = { - methodology, - astar: { - ...aaveExports("astar", '0xF6206297b6857779443eF7Eca4a3cFFb1660F952', undefined, undefined, { - abis: { - getAllATokens: "function getAllLTokens() view returns (tuple(string symbol, address tokenAddress)[])" - } - }), - staking: staking(VOTING_ESCROW_ADDRESS, ADDRESSES.astar.LAY), - }, - acala: { - ...aaveExports("acala", '0xA666dD28059deF0B45505c1f1a5f49fAd2e03c11', undefined, undefined, { - abis: { - getAllATokens: "function getAllLTokens() view returns (tuple(string symbol, address tokenAddress)[])" - }, - }) - } -}; diff --git a/projects/starmaker/index.js b/projects/starmaker/index.js deleted file mode 100644 index 5a32392b8df..00000000000 --- a/projects/starmaker/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ factory: '0x7096Cebc52012e2611a1E88c45bC54ee2A88dcB4', useDefaultCoreAssets: true, }), - }, - mantle: { - tvl: getUniTVL({ factory: '0x2a34936cd9441B7E7FB152c9C4e304be58e14830', useDefaultCoreAssets: true, }), - }, - methodology: "Counts liquidity in pools", -}; \ No newline at end of file diff --git a/projects/stars-league/index.js b/projects/stars-league/index.js deleted file mode 100644 index c8aab9e3bea..00000000000 --- a/projects/stars-league/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { nullAddress, sumTokensExport, } = require('../helper/unwrapLPs') - -module.exports = { - chz: { - tvl: sumTokensExport({ tokens: [nullAddress], owner: '0xFaD9Fb76EE13aBFe08F8B17d3898a19902b6f9FB' }) - } -} \ No newline at end of file diff --git a/projects/starshares/index.js b/projects/starshares/index.js deleted file mode 100644 index 405b2b661cd..00000000000 --- a/projects/starshares/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xC605C2cf66ee98eA925B1bb4FeA584b71C00cC4C" - -async function tvl(time, ethBlock, _b, {api}) { - await sumTokens2({ tokens: [nullAddress], owners: [contract, '0x563395A2a04a7aE0421d34d62ae67623cAF67D03', '0xa481b139a1a654ca19d2074f174f17d7534e8cec', '0x69B7F08B2952e2EE3CA4222190BCF07831f1096f'], api }) - if (Object.keys(api.getBalances()).length === 0) { - throw new Error("No tokens found") - } -} - -module.exports = { - // hallmarks: [ - // [1696654800,"Reentrancy Attack"] - // ], - methodology: `We count the AVAX on ${contract}`, - avax: { - tvl - } -} \ No newline at end of file diff --git a/projects/starswap-starcoin/index.js b/projects/starswap-starcoin/index.js deleted file mode 100644 index 7c1a82d5a95..00000000000 --- a/projects/starswap-starcoin/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl() { - const tvl = await get('https://swap-api.starcoin.org/main/v1/farmingTvlInUsd') - return { - tether: tvl - } -} - -async function staking() { - const totalTvl = await get('https://swap-api.starcoin.org/main/v1/syrupPoolTvlInUsd') - return { - tether: totalTvl, - }; -} - -module.exports = { - methodology: `Starswap's TVL is achieved by making a call to it's API: https://swap-api.starcoin.org/main/v1/farmingTvlInUsd (Farming) and https://swap-api.starcoin.org/main/v1/syrupPoolTvlInUsd (Stake).`, - misrepresentedTokens: true, - timetravel: false, - starcoin: { - tvl, - staking, - }, -} \ No newline at end of file diff --git a/projects/starswap/index.js b/projects/starswap/index.js deleted file mode 100644 index 81eece36d18..00000000000 --- a/projects/starswap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { staking } = require('../helper/staking') -const { getUniTVL, } = require('../helper/unknownTokens') - -const FACTORIES = "0x0b657e81a0C3E903cbe1228579fBd49AC5D81Ac1" - -const TOKENS = { - STAR: "0x8489f4554790F5A103F2B0398537eAEe68B73884" -} - -const STAKING_CONTRACT = "0x0262592d5f489e19afe070abc88a0808afc75250" - -module.exports = { - misrepresentedTokens: true, - methodology: "StarSwap TVL Calculation", - astar: { - tvl: getUniTVL({ - factory: FACTORIES, - useDefaultCoreAssets: true, - }), - staking: staking(STAKING_CONTRACT, TOKENS.STAR) - } -} diff --git a/projects/starterra.js b/projects/starterra.js deleted file mode 100644 index f08723a6c90..00000000000 --- a/projects/starterra.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - methodology: `Project rebranded as GameSwift`, - timetravel: false, - terra: { - tvl: () => ({}) - }, - hallmarks:[ - [1651881600, "UST depeg"], - ], - deadFrom: 1651881600, -} diff --git a/projects/stationdex-v2/index.js b/projects/stationdex-v2/index.js deleted file mode 100644 index 3acf133e5cb..00000000000 --- a/projects/stationdex-v2/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -const { getUniTVL } = require("../helper/unknownTokens"); - -const config = { - xlayer: '0xF7c16c5C5AF8838A884cF409543fdBE4Abd3D81d', -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true, }) } -}) \ No newline at end of file diff --git a/projects/stationdex-v3/index.js b/projects/stationdex-v3/index.js deleted file mode 100644 index 15940c6c9d6..00000000000 --- a/projects/stationdex-v3/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports.deadFrom = "2025-01-01" - -module.exports = uniV3Export({ - xlayer: { factory: '0xA7c6d971586573CBa1870b9b6A281bb0d5f853bC', fromBlock: 451069 }, -}) \ No newline at end of file diff --git a/projects/statixfarm/index.js b/projects/statixfarm/index.js deleted file mode 100644 index 16561f0a7fd..00000000000 --- a/projects/statixfarm/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -const masterchef = "0x32EeEd558c72Da99524E3b0176BCcbEd528cDFB2" -const nativeToken = "0xA28BAc0427e4a722246Ce4E9aD89Ec95FF8B87A3" - -module.exports = masterchefExports({ chain: 'base', masterchef, nativeToken, useDefaultCoreAssets: true,}) diff --git a/projects/steadefi/index.js b/projects/steadefi/index.js deleted file mode 100644 index a8a10dd3304..00000000000 --- a/projects/steadefi/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache'); -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { camelotNFTPoolAbi } = require('../single/abi'); - -async function getProjectInfo() { - return Promise.all([ - getConfig('steadefi/lendingPools', 'https://api.steadefi.com/lending-pools'), - getConfig('steadefi/vaults', 'https://api.steadefi.com/vaults'), - ]) -} - -const config = { - arbitrum: { fsglp: ADDRESSES.arbitrum.fsGLP }, - avax: { fsglp: '0x9e295B5B976a184B14aD8cd72413aD846C299660' }, -} - -// module.exports = { -// hallmarks: [ -// [1691373600, "Steadefi exploited"], -// ], -// }; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const chainId = api.getChainId() - let [lendingPools, vaults] = await getProjectInfo() - lendingPools = lendingPools.filter(i => i.chainId === chainId).map(i => i.address) - vaults = vaults.filter(i => i.chainId === chainId) - const vaultAddresses = vaults.map(i => i.address) - const lpAssets = await api.multiCall({ abi: 'address:asset', calls: lendingPools }) - const bals = await api.multiCall({ abi: 'function assetAmt() view returns (uint256,uint256)', calls: vaultAddresses, permitFailure: true }) - bals.forEach((res, i) => { - if (!res) return; - const [bal0, bal1] = res - api.addToken(vaults[i].tokens[0].address, bal0) - api.addToken(vaults[i].tokens[1].address, bal1) - }) - return sumTokens2({ api, tokensAndOwners2: [lpAssets, lendingPools] }) - } - } -}) \ No newline at end of file diff --git a/projects/steak/helpers.js b/projects/steak/helpers.js deleted file mode 100644 index a453dd706aa..00000000000 --- a/projects/steak/helpers.js +++ /dev/null @@ -1,5 +0,0 @@ -function encodeBase64(obj) { - return Buffer.from(JSON.stringify(obj)).toString("base64"); -} - -module.exports = { encodeBase64 }; diff --git a/projects/steak/index.js b/projects/steak/index.js deleted file mode 100644 index a1dfa79c298..00000000000 --- a/projects/steak/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const terra = require("./terra.js"); - -module.exports = { - timetravel: false, - methodology: "We query Steak smart contracts to get the amount of tokens staked, then use CoinGecko to price them in USD.", - terra, - hallmarks:[ - [1651881600, "UST depeg"], - ] -}; - - -module.exports.deadFrom = '2022-05-09' \ No newline at end of file diff --git a/projects/steak/terra.js b/projects/steak/terra.js deleted file mode 100644 index 2e7d9dbb8cf..00000000000 --- a/projects/steak/terra.js +++ /dev/null @@ -1,6 +0,0 @@ - -async function tvl() { - return {} -} - -module.exports = { tvl }; diff --git a/projects/steakHut-lb/abi.json b/projects/steakHut-lb/abi.json deleted file mode 100644 index 42a2d3f202a..00000000000 --- a/projects/steakHut-lb/abi.json +++ /dev/null @@ -1,7 +0,0 @@ - -{ - "totalSupply": "uint256:totalSupply", - "getUnderlyingAssets": "function getUnderlyingAssets(uint256) view returns (uint256, uint256)", - "want": "function want() view returns (address, address)" -} - diff --git a/projects/steakHut-lb/index.js b/projects/steakHut-lb/index.js deleted file mode 100644 index 2fd3a0043f7..00000000000 --- a/projects/steakHut-lb/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json') - -const _vaults = { - avax: [ - '0x37e0f0513ae3d3c4403e7b11c8a15b06c7cb1412', //USDC.e/USDC_C - '0xb41506675a0977a34e8cec7da8c061d6753b5b03', //USDT/USDC_B - '0xc4bbd4ba96eaf7ccb3d0f2e0819b1f6e5c900b16', //USDT/USDC_C - '0x07462883abb2350e5243b94aeb27f4d37e3238e8', //USDT/USDT.e_B - '0x9f44e67ba256c18411bb041375e572e3dd11fa72', //USDT/USDT.e_C - '0x3b27aee8df3a3791eb57b59a770a530a93dc0221', //USDC.e/USDC_B - '0x89547441489262feb5cee346fdacb9037c2574db', //JOE/AVAX_B - '0x668530302c6ecc4ebe693ec877b79300ac72527c', //AVAX/USDC_B - '0x9c9cea14731821f4d08889717043977e6dee766a', //WETH.e/AVAX_B - '0x9cc15d1204d768380cec8d35bc1d8e1945083397', //BTC.b/USDC_B - '0x536d7e7423e8fb799549caf574cfa12aae95ffcd', //BTC.b/AVAX_B - '0x9bdda0c0cd56d98a8165fddabdeb7f9aee2d993e', //GMX/AVAX - // '0xFFE588AC8d94c758AFaC5c50A4b4bF4BC1887fFD', //CAI/AVAX - ], - arbitrum: [ - '0x862f459c3c1f8949b3f5b624d39134d61697946e', //GMX/ETH - '0xec9fba07ca8b3429950b2e01aec4e2b08dbd7897', //ETH/USDC - '0xfb6421346d7e96f573414be757b502c0bb15cb62', //USDT/USDC_B - '0xf8d6eb0e55a83e8a27af3c5f48cab883da3c716d', //USDT/USDC_C - '0x2DBb0b159dc932D86FA4a5378924E7e074F4a5f2', //ARB/WETH - '0x223d04520d5376D6B465e4270e64746048eed716', //ARB/USDC - '0x04F9a9D6B7728787520B0ac69b88D81ddB5C10ED', //UNIDX/WETH - '0x57de2A8df99480fCc5323678bdA61E8Fd612bD54', //JOE/WETH - '0xe5F984fA55315fb1ee3399D6be3d9aAF74F1eFE4', //MAGIC/WETH - '0xEb7081e31E6d46058Fe65A68a309B788Aa8B363f', //BFR/WETH - '0xA0676beC4EC591c33A69877A2d39f08b54d34b84', //BETS/WETH - ], -} - -async function tvl(api) { - //function to grab the tvl of enigma pools - async function fetchEnigmaData(factoryAddress) { - const enigmas = await api.fetchList({ lengthAbi: 'enigmaPositionNumber', itemAbi: 'enigmaAtIndex', target: factoryAddress }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: enigmas }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: enigmas }) - const bals = await api.multiCall({ abi: 'function getTotalAmounts() view returns (uint256 bal0, uint256 bal1)', calls: enigmas }) - bals.forEach(({ bal0, bal1 }, i) => { - api.add(token0s[i], bal0) - api.add(token1s[i], bal1) - }) - } - //get the total shares from all vaults - const vaults = _vaults[api.chain] - const depositTokens = await api.multiCall({ abi: abi.want, calls: vaults }) - const vaultShares = await api.multiCall({ abi: abi.totalSupply, calls: vaults }) - - //get the total underlying assets from all shares - const calls = [] - - for (let i = 0; i < vaults.length; i++) - calls.push({ target: vaults[i], params: vaultShares[i] }) - - const poolInfo = await api.multiCall({ calls, abi: abi.getUnderlyingAssets, }) - - for (let i = 0; i < poolInfo.length; i++) { - for (let t = 0; t < poolInfo[i].length; t++) { - api.add(depositTokens[i][t], poolInfo[i][t]) - } - } - - if (api.chain === 'avax') { - - // hJOE tvl - const HJOE_ADDRESS = '0xe7250b05bd8dee615ecc681eda1196add5156f2b' - const JOE_ADDRESS = ADDRESSES.avax.JOE - - api.add(JOE_ADDRESS, await api.call({ target: HJOE_ADDRESS, abi: 'erc20:totalSupply' })) - - // engima tvl - - const enigmaFactory_AVAX = `0xD751E0940CfadC35f84e60075d0f940a2545FB8d`; - const enigmaFactory_AVAX_PHAR = `0x653b809a4fa6ba0fc0a6dc1b3f92a362fcb6086d`; // Example BSC address - - // Fetch data for both factories - await fetchEnigmaData(enigmaFactory_AVAX); - await fetchEnigmaData(enigmaFactory_AVAX_PHAR); - - - } -} -async function staking(api) { - const XSTEAK_ADDRESS = '0x902Aa4cC3b463c84541C9C1DeDF50620C99950B9' - const STEAK_ADDRESS_AVAX = '0xb279f8dd152b99ec1d84a489d32c35bc0c7f5674' - - api.add(STEAK_ADDRESS_AVAX, await api.call({ target: XSTEAK_ADDRESS, abi: 'erc20:totalSupply' })) -} - -module.exports = { - doublecounted: true, - methodology: 'Counts the value of LB tokens staked into SteakHut Liquidity.', - avax: { tvl, staking, }, - arbitrum: { tvl }, -}; diff --git a/projects/steakHut/abi.json b/projects/steakHut/abi.json deleted file mode 100644 index a5a352815dd..00000000000 --- a/projects/steakHut/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 accJoePerShare, uint256 lastRewardTimestamp, uint256 totalLpSupply, bool poolEnabled)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/steakHut/index.js b/projects/steakHut/index.js deleted file mode 100644 index 5f2678b7bfc..00000000000 --- a/projects/steakHut/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const abi = require('./abi.json') -const { staking } = require('../helper/staking'); - -const steakMasterChef = '0xddBfBd5dc3BA0FeB96Cb513B689966b2176d4c09'; - -async function tvl(api) { - const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: steakMasterChef}) - poolInfos.forEach(i => api.add(i.lpToken, i.totalLpSupply)) - return api.getBalances() -} - -const steakToken = "0xb279f8DD152B99Ec1D84A489D32c35bC0C7F5674" - -module.exports = { - methodology: 'Counts the value of JLP tokens staked into SteakMasterChef.', - avax: { - tvl, - staking: staking(steakMasterChef, steakToken), - } -}; diff --git a/projects/steakbank/index.js b/projects/steakbank/index.js deleted file mode 100644 index c7a004d2cd7..00000000000 --- a/projects/steakbank/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const stakingContract = "0x79DB0dAa012F4b98F332A9D45c80A1A3FFaa6f9a" - -async function tvl(api){ - const staked = await api.call({ abi: "uint256:lbnbMarketCapacityCountByBNB", target: stakingContract}) - api.addGasToken(staked) -} - -module.exports = { - bsc:{ - tvl, - }, -} \ No newline at end of file diff --git a/projects/steakhouse/index.js b/projects/steakhouse/index.js deleted file mode 100644 index 34e5f0bd07f..00000000000 --- a/projects/steakhouse/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Steakhouse Financial.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x0000aeB716a0DF7A9A1AAd119b772644Bc089dA8', - '0x255c7705e8BB334DfCae438197f7C4297988085a', - '0x0A0e559bc3b0950a7e448F0d4894db195b9cf8DD', - '0xc01Ba42d4Bd241892B813FA8bD4589EAA4C60672', - ], - mellow: [ - '0xBEEF69Ac7870777598A04B2bd4771c71212E6aBc', - '0x9707f14B6c8200CBf6c6F2c5498D1D0019A5f15A', - '0x4C797D53f4772325A8aDFd509F13A2d60Daa7d02', - '0x5E362eb2c0706Bd1d134689eC75176018385430B', - ] - }, - base: { - morphoVaultOwners: [ - '0x0A0e559bc3b0950a7e448F0d4894db195b9cf8DD', - '0x0000aeB716a0DF7A9A1AAd119b772644Bc089dA8', - ], - }, - corn: { - morphoVaultOwners: [ - '0x84ae7f8eb667b391a5ae2f69bd5a0e4b5b77c999', - ], - }, - unichain: { - morphoVaultOwners: [ - '0x0A0e559bc3b0950a7e448F0d4894db195b9cf8DD', - ], - }, - arbitrum: { - morphoVaultOwners: [ - '0x0000aeB716a0DF7A9A1AAd119b772644Bc089dA8', - '0x0A0e559bc3b0950a7e448F0d4894db195b9cf8DD', - ], - }, - katana: { - morphoVaultOwners: [ - '0x0A0e559bc3b0950a7e448F0d4894db195b9cf8DD', - ], - }, - } -} -module.exports = getCuratorExport(configs) diff --git a/projects/stealthpad/abi.js b/projects/stealthpad/abi.js deleted file mode 100644 index 348549745ac..00000000000 --- a/projects/stealthpad/abi.js +++ /dev/null @@ -1,39 +0,0 @@ - -const lpLockerCount = 'function lpLockerCount() view returns (uint40)' -const tokenLockerCount = 'function tokenLockerCount() view returns (uint40)' - -const getLpLockData = `function getLpLockData(uint40 id_) view returns -( - bool isLpToken, - uint40 id, - address contractAddress, - address lockOwner, - address token, - address createdBy, - uint40 createdAt, - uint40 blockTime, - uint40 unlockTime, - uint256 balance, - uint256 totalSupply -)` -const getTokenLockData = `function getTokenLockData(uint40 id_) view returns -( - bool isLpToken, - uint40 id, - address contractAddress, - address lockOwner, - address token, - address createdBy, - uint40 createdAt, - uint40 blockTime, - uint40 unlockTime, - uint256 balance, - uint256 totalSupply -)` - -module.exports = { - lpLockerCount, - tokenLockerCount, - getLpLockData, - getTokenLockData, -} \ No newline at end of file diff --git a/projects/stealthpad/index.js b/projects/stealthpad/index.js deleted file mode 100644 index 459476d0934..00000000000 --- a/projects/stealthpad/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumUnknownTokens, sumTokensExport } = require('../helper/unknownTokens') -const abi = require('./abi.js') - -module.exports = { - misrepresentedTokens: true, - methodology: `Counts liquidity in lp lock contracts`, -} - -const config = { - ethereum: { lockerManagerV1: '0x57136ec54ddafd1695479cae1140fbc6d5a916d1', stakingContract: '0x23dDCc4787bc8CC3b433782b7d9b876da467533F', stakingToken: '0xB18F98822C22492Bd6b77D19cae9367f3D60fcBf', lps: ['0x626BB5e02694372b5A919A5981659595C2FD3788'] }, -} - -Object.keys(config).forEach(chain => { - const { lockerManagerV1, stakingContract, stakingToken, lps } = config[chain] - module.exports[chain] = { tvl, } - - async function tvl(api) { - const lpInfos = await api.fetchList({ lengthAbi: abi.lpLockerCount, itemAbi: abi.getLpLockData, target: lockerManagerV1, }) - const tokensAndOwners = [lpInfos].flat().filter(i => i.isLpToken).map(l => [l.token, l.contractAddress]) - return sumUnknownTokens({ api, tokensAndOwners, useDefaultCoreAssets: true, resolveLP: true, onlyLPs: true, }) - } - - if (stakingContract && stakingToken) { - module.exports[chain].staking = sumTokensExport({ tokens: [stakingToken], chain, owner: stakingContract, useDefaultCoreAssets: true, lps }) - } -}) diff --git a/projects/steamm/index.js b/projects/steamm/index.js deleted file mode 100644 index fff85ef4675..00000000000 --- a/projects/steamm/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const sui = require('../helper/chain/sui') - -async function tvl(api) { - const poolIds = await getPoolIds() - const btokenMapping = await getBTokenMapping() - - for (const poolId of poolIds) { - const poolObject = await sui.getObject(poolId) - const { balance_a: balanceA, balance_b: balanceB } = poolObject.fields - - const poolType = poolObject.type - const poolComponents = poolType.split('pool::Pool<')[1] - if (!poolComponents) continue - - const [btokenA, btokenB] = poolComponents.split(',').map(s => s.trim()) - const coinTypeA = btokenMapping[btokenA] - const coinTypeB = btokenMapping[btokenB] - - if (!coinTypeA || !coinTypeB) continue - - api.add(coinTypeA, balanceA) - api.add(coinTypeB, balanceB) - } -} - -async function getPoolIds() { - const page = await sui.getDynamicFieldObjects({ parent: '0x8b0a90c71b7993522e609c40df29bc5bf476609c026b74b2ae4572d05e4416a2' }) - const poolInfos = await sui.getObjects(page.map(d => d.fields.id.id)) - return poolInfos.flatMap(info => info.fields.value.fields.contents.map(item => item.fields.pool_id)) -} - -async function getBTokenMapping() { - const page = await sui.getDynamicFieldObjects({ parent: '0x57a91701ee289638e41eb8bfa439edec210085ce822a4d8a629f9e64f5801734' }) - - const bTokenToCoinType = {} - for (const data of page) { - const btokenType = '0x' + data.fields.value.fields.btoken_type.fields.name - const coinType = '0x' + data.fields.name.fields.coin_type.fields.name - bTokenToCoinType[btokenType] = coinType - } - return bTokenToCoinType -} - -module.exports = { - timetravel: false, - sui: { tvl }, -} diff --git a/projects/steer/index.js b/projects/steer/index.js deleted file mode 100644 index 60223ca676e..00000000000 --- a/projects/steer/index.js +++ /dev/null @@ -1,324 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const { stakings } = require("../helper/staking"); - - -const supportedChains = [ - { - name: 'Polygon', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-polygon/prod/gn', - chainId: 137, - identifier: 'polygon' - }, - { - name: 'Arbitrum', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-arbitrum/prod/gn', - chainId: 42161, - identifier: 'arbitrum' - }, - { - name: 'Optimism', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/GgW1EwNARL3dyo3acQ3VhraQQ66MHT7QnYuGcQc5geDG', - chainId: 10, - identifier: 'optimism' - }, - { - name: 'Binance', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/GLDP56fPGDz3MtmhtfTkz5CxWiqiNLACVrsJ9RqQeL4U', - chainId: 56, - identifier: 'bsc' - }, - { - name: 'Evmos', - subgraphEndpoint: 'https://subgraph.satsuma-prod.com/769a117cc018/steer/steer-protocol-evmos/api', - chainId: 9001, - identifier: 'evmos' - }, - { - name: 'Avalanche', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/GZotTj3rQJ8ZqVyodtK8TcnKcUxMgeF7mCJHGPYbu8dA', - chainId: 43114, - identifier: 'avax' - }, - { - name: 'Thundercore', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-thundercore/1.0.0/gn', - chainId: 108, - identifier: 'thundercore' - }, - { - name: 'Kava', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-kava/prod/gn', - chainId: 2222, - identifier: 'kava' - }, - { - name: 'Base', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-base/prod/gn', - chainId: 8453, - identifier: 'base' - }, - { - name: 'Linea', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-linea/prod/gn', - chainId: 59144, - identifier: 'linea' - }, - { - name: 'Metis', - subgraphEndpoint: 'https://api.metis.0xgraph.xyz/api/public/b88b5696-b69d-46be-b212-5c55a9b1492f/subgraphs/steer-protocol-metis/prod/gn', - chainId: 1088, - identifier: 'metis' - }, - { - name: 'Manta', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-manta/prod/gn', - chainId: 169, - identifier: 'manta' - }, - { - name: 'PolygonZKEVM', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-polygon-zkevm/prod/gn', - chainId: 1101, - identifier: 'polygon_zkevm' - }, - { - name: 'Scroll', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/822PfgbgBzC98Huwf37uxvF9YGZMA5nDeETpstkR55Sn', - chainId: 534352, - identifier: 'scroll' - }, - { - name: 'Mantle', - subgraphEndpoint: 'https://subgraph-api.mantle.xyz/subgraphs/name/steerprotocol/steer-protocol-mantle', - chainId: 5000, - identifier: 'mantle' - }, - { - name: 'Astar', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-astar/prod/gn', - chainId: 4369, - identifier: 'astar' - }, - { - name: 'Fantom', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/9uyX2WDuaxmcYh11ehUhU68M9uSCp5FXVQV2w4LqbpbV', - chainId: 250, - identifier: 'fantom' - }, - { - name: 'Blast', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-blast/prod/gn', - chainId: 81457, - identifier: 'blast' - }, - { - name: 'Mode', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-mode/prod/gn', - chainId: 34443, - identifier: 'mode' - }, - // { - // name: 'AstarzkEVM', - // subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-astar-zkevm/1.1.1/gn', - // chainId: 3776, - // identifier: 'astrzk' - // }, - { - name: 'Telos', - subgraphEndpoint: 'https://telos.api.ormilabs.com/api/public/39892398-bfdd-48ac-b776-77ad8a5b4b9e/subgraphs/steer-protocol-telos/prod/gn', - chainId: 40, - identifier: 'telos' - }, - { - name: 'X Layer', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/8gCrUHrVS9rHwvDPLTn4Wz6od68ULb7azYuQz25JjRK3', - chainId: 196, - identifier: 'xlayer' - }, - { - name: 'Rootstock', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/H3pANqbMVTiFCUXHjXYr2mHbXvn5my5o66Gxbwcg7Aqm', - chainId: 30, - identifier: 'rsk' - }, - { - name: 'Celo', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/BPaFHyfVrhv3pdjGodpQcWggAg1Bcrvc9SFc2t2BXeho', - chainId: 42220, - identifier: 'celo' - }, - { - name: 'ZklinkNova', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-zklink-nova/1.0.1/gn', - chainId: 810180, - identifier: 'zklink' - }, - { - name: 'Flare', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-flare/1.1.1/gn', - chainId: 14, - identifier: 'flare' - }, - { - name: 'ApeChain', - subgraphEndpoint: 'https://apeapi.0xgraph.xyz/api/public/4ea21b03-9850-4796-8068-ec71bbe022db/subgraphs/steer-protocol-apechain/prod/gn', - chainId: 33139, - identifier: 'apechain' - }, - // { - // name: 'Bittorrent', - // subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-btt/1.1.1/gn', - // chainId: 199, - // identifier: 'bittorrent' - // }, - { - name: 'Filecoin', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-filecoin/prod/gn', - chainId: 314, - identifier: 'filecoin' - }, - { - name: 'Zircuit', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-zircuit/prod/gn', - headers: {'api-key': 'yu0Dep8seTmFjvlmAXN1ILNggARnx74MB'}, - chainId: 48900, - identifier: 'zircuit' - }, - { - name: 'Sonic', - subgraphEndpoint: 'https://api.0xgraph.xyz/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-sonic/prod/gn', - chainId: 146, - identifier: 'sonic' - }, - { - name: 'Moonbeam', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/4D2pLLQuGsAkdZAUgqxxnk4Mcu3aMjEV1HJ2F63kC7w6', - chainId: 1284, - identifier: 'moonbeam' - }, - // { - // name: 'Sei', - // subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clu1fg6ajhsho01x7ajld3f5a/subgraphs/dragonswap-v3-prod/1.0.5/gn', - // chainId: 1329, - // identifier: 'sei' - // }, - { - name: 'Taiko', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-taiko/prod/gn', - chainId: 167000, - identifier: 'taiko' - }, - { - name: 'Zetachain', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/HFH41DyzAXxYmT5eszVWn2T7UxViMroPJ4XJV8vhDGNN', - chainId: 7000, - identifier: 'zeta' - }, - { - name: 'Soneium', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-soneium/prod/gn', - chainId: 1868, - identifier: 'soneium' - }, - { - name: 'Bera', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-bera/prod/gn', - chainId: 80094, - identifier: 'berachain' - }, - { - name: 'Ethereum', - subgraphEndpoint: 'https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-mainnet/prod/gn', - chainId: 1, - identifier: 'ethereum' - }, - { - name: 'Hemi', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/2eACJtEGuELqN5roUiHG1jqmCpXt5aimcc8xZdvtMv4z', - chainId: 43111, - identifier: 'hemi' - }, - { - name: 'Unichain', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/EoLK36f26Dr7maXyNKxJmEBJkoYVCMh1d4ENtT5hJgyB', - chainId: 130, - identifier: 'unichain' - }, - { - name: 'Katana', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/D6CST1Az8c8KvMf8ktcEcWds89YVQxbKG6v8yo7FAzzM', - chainId: 747474, - identifier: 'katana' - }, - { - name: 'Saga', - subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-saga-evm/prod/gn', - chainId: 5464, - identifier: 'saga' - }, - { - name: 'Ronin', - subgraphEndpoint: 'https://subgraph-proxy-server-xf2uthetka-as.a.run.app/gateway-arbitrum/793Lz5oiK51wdm9kCLtHqunkAPk2qjg7denpCrHqrLcA', - chainId: 2020, - identifier: 'ronin' - }, - { - name: 'Nibiru', - subgraphEndpoint: 'https://index-api.onfinality.io/sq/rakeshbhatt10/steer-protocol-nibiru', - chainId: 6900, - identifier: 'nibiru' - }, -] - -// Fetch active vaults and associated data @todo limited to 1000 per chain -const query = `{vaults(first: 1000, where: {totalLPTokensIssued_not: "0", lastSnapshot_not: "0"}) {id}}` -const z_query = `{ vaults(first: 1000, where: {lastSnapshot_gte: "0", totalLPTokensIssued_gt: "0"}) { id }}` - -supportedChains.forEach(chain => { - module.exports[chain.identifier] = { - tvl: async (api) => { - let _query = api.chain === 'zircuit' ? z_query : query - const data = await cachedGraphQuery('steer/' + chain.identifier, chain.subgraphEndpoint, _query, { headers: chain.headers }) - - const vaults = data.vaults.map((vault) => vault.id) - const bals = await api.multiCall({ abi: "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", calls: vaults, permitFailure: true, }) - const token0s = await api.multiCall({ abi: "address:token0", calls: vaults, permitFailure: true, }) - const token1s = await api.multiCall({ abi: "address:token1", calls: vaults, permitFailure: true, }) - bals.forEach((bal, i) => { - const token0 = token0s[i] - const token1 = token1s[i] - if (!bal || !token0 || !token1) return // skip failures - api.add(token0, bal.total0) - api.add(token1, bal.total1) - }) - return api.getBalances() - } - } -}) - -module.exports.arbitrum.staking = stakings( - [ - "0xB10aB1a1C0E3E9697928F05dA842a292310b37f1", - "0x25Ef108B328Cf752F0E0b0169D499Db164173763", - "0x0b619438d1E8b8c205656502de59Af2Af71C43e0", - "0xaCdC6fC8F84fbA26f065489a7bf5837D7CDf546F", - "0xff46e1B60dD9De89Aa04902D5c3c5ca01f8576A4", - "0x1E6a358a1721e0D2B84f39FD328FC03A1b6e863B", - "0x3338B85fB1607C519962571B67061e02408475Bb", - "0x6519A921d0E6F06524eff5DF976abc9A3ABF36cF", - "0x004a733aA20ea2CaDdba6af62Bb56Aa96dCE4922", - "0x78FE84c305c8Cd7E23186F2740b73915BAeADd52", - "0x0635b76fc26c1d65bb2d761ee2fc4652e8bf5ca8" - ], - "0x1C43D05be7E5b54D506e3DdB6f0305e8A66CD04e", - "arbitrum" -) - -module.exports.base.staking = stakings( - [ - "0x07536E7fBc498BD886D393fb693E71c8C4e45B97" - ], - "0xFD1013c72CBB0FFB920D347C5836bF88965D0D5e", - "base" -) \ No newline at end of file diff --git a/projects/stellar-dex/index.js b/projects/stellar-dex/index.js deleted file mode 100644 index a56be9665a0..00000000000 --- a/projects/stellar-dex/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const utils = require('../helper/utils'); -const { getApiTvl } = require('../helper/historicalApi'); - -const TVL_URL = "https://storage.googleapis.com/defillama-stellar-tvl/stellar-tvl.json"; - -async function fetchTvlData() { - const response = await utils.fetchURL(TVL_URL, { responseType: 'text' }); - const lines = response.data.trim().split('\n'); - return lines.map(line => JSON.parse(line)); -} - -async function current() { - const parsed = await fetchTvlData() - - const latest = parsed.reduce((a, b) => (a.day > b.day ? a : b)); - return latest.total_tvl_usd; -} - -function tvl(timestamp) { - return getApiTvl(timestamp, current, async () => { - const parsed = await fetchTvlData() - - return parsed.map(entry => ({ - date: Math.round(new Date(entry.day).getTime() / 1e3), - totalLiquidityUSD: entry.total_tvl_usd, - })); - }); -} - -module.exports = { - methodology: 'Total value of all sell offers in the built-in Stellar Decentralized exchange. This includes XLM and assets issued on the network, converting to USD.', - stellar: { tvl }, - timetravel: true, - misrepresentedTokens: true, - start: 1659916800, // 2022-08-08 UTC -}; diff --git a/projects/stellarx/index.js b/projects/stellarx/index.js deleted file mode 100644 index b349cb0f4f5..00000000000 --- a/projects/stellarx/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http'); - -async function tvl(api) { - const { pools } = await get('https://amm-api.stellarx.com/api/pools/?cursor=1&format=json&limit=500&order=desc&orderField=liquidity'); - pools.forEach(({ liquidity }) => { - api.addUSDValue(Math.round(liquidity)) - }) -} - -module.exports = { - misrepresentedTokens: true, - stellar: { tvl }, -} diff --git a/projects/stellaswap-v3/index.js b/projects/stellaswap-v3/index.js deleted file mode 100644 index 9355363e891..00000000000 --- a/projects/stellaswap-v3/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - moonbeam: { - factory: "0xabe1655110112d0e45ef91e94f8d757e4ddba59c", - fromBlock: 2649801, - isAlgebra: true, - permitFailure: true, - }, -}); diff --git a/projects/stellaswap-v4/index.js b/projects/stellaswap-v4/index.js deleted file mode 100644 index 20815261e46..00000000000 --- a/projects/stellaswap-v4/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - moonbeam: { - factory: "0x90dD87C994959A36d725bB98F9008B0b3C3504A0", - fromBlock: 9521226, - isAlgebra: true, - permitFailure: true, - }, -}); diff --git a/projects/stellaswap.js b/projects/stellaswap.js deleted file mode 100644 index eba0af0d0a9..00000000000 --- a/projects/stellaswap.js +++ /dev/null @@ -1,50 +0,0 @@ -const sdk = require('@defillama/sdk') -const ADDRESSES = require('./helper/coreAssets.json') -const { getUniTVL } = require('./helper/unknownTokens') -const { staking } = require('./helper/staking') - -const V2_FACTORY_ADDRESS = '0x68A384D826D3678f78BB9FB1533c7E9577dACc0E' -const xSTELLA_ADDRESS = '0x06A3b410b681c82417A906993aCeFb91bAB6A080' - -const dexTVL = getUniTVL({ - factory: V2_FACTORY_ADDRESS, - useDefaultCoreAssets: true, -}) - -async function stablePoolTVL(api) { - const pools = [ - // Legacy - '0x422b5b7a15fb12c518aa29f9def640b4773427f8', // SFL - 4pool V1 (nomad) - '0xb86271571c90ad4e0c9776228437340b42623402', // SFL - eth 2pool V1 (nomad) - '0x7FbE3126C03444D43fC403626ec81E3e809E6b46', // SFL - MAI - 4pool V1 (nomad) - - // Retired - '0xB1BC9f56103175193519Ae1540A0A4572b1566F6', // SFL - 4pool V1 (wormhole) - '0x715D7721Fa7e8616aE9D274704aF77857779f6F0', // SFL - athUSDC - 4pool V1 (wormhole) - '0xF0A2ae65342f143fc09c83E5f19b706aBB37414D', // SFL - MAI - 4pool V1 (wormhole) - - // Active - '0x5c3dc0ab1bd70c5cdc8d0865e023164d4d3fd8ec', // SFL - 3pool V1 (wormhole) - '0x95953409374e1ed252c6D100E7466E346E3dC5b9', // SFL - 2pool V1 (wormhole) - '0x63Ba230fb281A44CB778Ea67a8caE538459c1d0b', // SFL - MAI - 3pool V1 (wormhole) - ] - - let lpTokens = await api.multiCall({ abi: abi.getLpToken, calls: pools, }) - const tokens = await api.multiCall({ abi: abi.getTokens, calls: pools, }) - const ownerTokens = pools.map((v, i) => [tokens[i], v]) - - return api.sumTokens({ ownerTokens, blacklistedTokens: lpTokens, }) -} - -module.exports = { - misrepresentedTokens: true, - moonbeam: { - tvl: sdk.util.sumChainTvls([dexTVL, stablePoolTVL]), - staking: staking(xSTELLA_ADDRESS, ADDRESSES.moonbeam.STELLA) - } -} - -const abi = { - getTokens: "address[]:getTokens", - getLpToken: "address:getLpToken", -} diff --git a/projects/stellaxyz-io/index.js b/projects/stellaxyz-io/index.js deleted file mode 100644 index 89688ea948c..00000000000 --- a/projects/stellaxyz-io/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs, getAddress } = require('../helper/cache/getLogs'); -const { cachedGraphQuery } = require('../helper/cache') -const { graphQuery } = require('../helper/http'); -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - arbitrum: { - endpoint: 'https://graph.stellaxyz.io/v1/graphql', - // factory: '0x573a89fBc6b4a5B11a55DC9814A1018a3A9cD0CA', - // fromBlock: 101291920, - } -} - -module.exports = { - misrepresentedTokens: true, -} - -const query = `query GET_ALL_LENDING_POOLS{ pools: lending_pool_registry( where: {_or: [{is_launched: {_eq: true}}], chain_id: {_eq: 42161}, is_deprecated: {_eq: false}} ) { tokenName: lending_token_name poolAddress: pool_address }}` -const strategyQuery = `query Strategy { strategy( where: {chain_id: {_eq: 42161 }, _or: [{is_launched: {_eq: true}}]} order_by: {display_priority: asc} ) { id name strategyAddress: strategy_address }}` - -Object.keys(config).forEach(chain => { - const { endpoint, factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - await getStraegyTvl2() - const { pools } = await cachedGraphQuery('stellaxyz/lending-pool/' + api.chain, endpoint, query) - const lendingContracts = pools.map(i => i.poolAddress) - const tokens = await api.multiCall({ abi: 'address:depositToken', calls: lendingContracts }) - await sumTokens2({ api, tokensAndOwners2: [tokens, lendingContracts] }) - - async function getStraegyTvl2() { - let hasMore = false - let offset = 0 - do { - const { position } = await graphQuery(endpoint, `query GetPositionsDefillama($offset:Int!) { - position(order_by:{opened_at:asc},where: {status: {_eq: "Active"}}, limit: 1000, offset: $offset) { - id - position_value_usd - strategy{ - id - strategy_address - lp_address - pool_address - } - opened_at - closed_at - status - } - }`, {offset}) - hasMore = position.length === 1000 - position.forEach(i => { - api.add(ADDRESSES.arbitrum.USDC, i.position_value_usd * 1e6) - }) - } while (hasMore) - } - - async function getStategyTvl() { - const { strategy } = await cachedGraphQuery('stellaxyz/strategy/' + api.chain, endpoint, strategyQuery) - const strategies = strategy.map(i => i.strategyAddress) - // const logs = await getLogs({ api, target: factory, topics: ['0x0803371633b57311f58d10924711080d2dae75ab17c5c0c262af3887cfca00bb'], fromBlock, }) - - const positionManagers = await api.multiCall({ abi: 'address:positionManager', calls: strategies }) - return sumTokens2({ api, owners: positionManagers, resolveUniV3: true, }) - - - } - } - } -}) \ No newline at end of file diff --git a/projects/step-exchange/index.js b/projects/step-exchange/index.js deleted file mode 100644 index 89ed99fd09d..00000000000 --- a/projects/step-exchange/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('step', '0xf62b74E4a7aE8D27Cd983A54a9d24A89345413a5') \ No newline at end of file diff --git a/projects/step-finance/index.js b/projects/step-finance/index.js deleted file mode 100644 index 793750a3e31..00000000000 --- a/projects/step-finance/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokens2 } = require("../helper/solana"); - -const STAKING_VAULT = 'ANYxxG365hutGYaTdtUQG8u2hC4dFX9mFHKuzy9ABQJi'; - -module.exports = { - timetravel: false, - solana: { - tvl: () => ({}), - staking: () => sumTokens2({ tokenAccounts: [STAKING_VAULT] }) - }, -} \ No newline at end of file diff --git a/projects/sterling-finance/index.js b/projects/sterling-finance/index.js deleted file mode 100644 index f6a304404e9..00000000000 --- a/projects/sterling-finance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - arbitrum:{ - tvl: getUniTVL({ - factory: '0xF7A23B9A9dCB8d0aff67012565C5844C20C11AFC', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - }, -} \ No newline at end of file diff --git a/projects/steroids/index.js b/projects/steroids/index.js deleted file mode 100644 index 41cbb907f88..00000000000 --- a/projects/steroids/index.js +++ /dev/null @@ -1,43 +0,0 @@ - -const { sumTokens2, } = require('../helper/unwrapLPs') - -const UNI_CONTRACTS = { - pntETH: { - address: '0xea8ddc2f50626f1f8f8c11242d1876710d65ff44', - uniPair: '0x77bbC2B409C2c75E4999e8E3eb8309EFff37cf2D', - }, - wBTCpBTC: { - address: '0x7c43ea3bb6921e9b1ac53ba06f196efd296b3fa8', - uniPair: '0x9f8d8df26d5ab71b492ddce9799f432e36c289df', - }, - pLTCETH: { - address: '0xAA298Fa032ae863E0156F1e1B54A7AD1A27534a4', - uniPair: '0x8b56a00cc3d30ccc3a258c7dceaf72b5bae5d3eb', - }, - pBTCETH: { - address: '0x279E670c560FBA394B665ADb9c66293ECA051BE9', - uniPair: '0x8d50d0fd88016ea63229e432803db4069c40db09', - }, - pDOGEETH: { - address: '0xeB8A0BaC52fE10949c088A43AfBBB42cF0C3684E', - uniPair: '0x48584714106c724c6954c5546708aaD5811c29BD', - }, -} - -const CURVE_CONTRACTS = [{ // pBTCsBTC curve - address: '0xf7977edc1fa61Aa9b5F90d70A74a3fbC46E9DAd3', - token: '0xDE5331AC4B3630f94853Ff322B66407e0D6331E8', -}] - -async function tvl(api) { - const toa = Object.values(UNI_CONTRACTS).map(({ uniPair, address }) => ([uniPair, address])) - CURVE_CONTRACTS.forEach(i => toa.push([i.token, i.address])) - return sumTokens2({ api, tokensAndOwners: toa})} - - -module.exports = { - doublecounted: true, - ethereum: { - tvl - }, -} \ No newline at end of file diff --git a/projects/steth-win/index.js b/projects/steth-win/index.js deleted file mode 100644 index 281458b0849..00000000000 --- a/projects/steth-win/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const POOL_CONTRACT = '0x2758b8d894b08342f0d00ac5f9466fdc795e4618'; -const STETH_CONTRACT = ADDRESSES.ethereum.STETH; - -module.exports = { - methodology: 'Counts the number of stETH tokens in the pool and calculates its TVL', - ethereum: { - tvl: sumTokensExport({ owner: POOL_CONTRACT, tokens: [STETH_CONTRACT] }), - } -}; diff --git a/projects/stfil/index.js b/projects/stfil/index.js deleted file mode 100644 index 2fd958767c1..00000000000 --- a/projects/stfil/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const stFIL = "0x3C3501E6c353DbaEDDFA90376975Ce7aCe4Ac7a8"; -const WFIL = ADDRESSES.filecoin.WFIL; - -const tvl = async (api) => { - const stFILSupply = await api.call({ target: stFIL, abi: 'erc20:totalSupply' }) - api.add(WFIL, stFILSupply) -}; - -module.exports = { - methodology: 'stFIL tokens are minted upon filecoin deposit at 1:1 ratio', - filecoin: { - tvl, - }, -}; diff --git a/projects/stipend.js b/projects/stipend.js deleted file mode 100644 index 1a63e274125..00000000000 --- a/projects/stipend.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { staking } = require("./helper/staking.js"); - -module.exports = { - kava: { - tvl: staking( - "0xfc30fE377f7E333cC1250B7768107a7Da0277c44", - ADDRESSES.kava.WKAVA, - ) - } -}; diff --git a/projects/stipflip/index.js b/projects/stipflip/index.js deleted file mode 100644 index 8883dd0ef62..00000000000 --- a/projects/stipflip/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') -const { uniV3Export } = require('../helper/uniswapV3') -const ORACLE = "0x4AC635E92801e657F44BDEfcc7660Ea1431DF846"; - -async function tvl(api) { - const logs = await getLogs2({ - api, - factory: '0x352Cea820fAE79016490518b20f1FD4F53bC56Af', - eventAbi: 'event SynthCreated(address indexed oracle, address indexed synth, bool long)', - fromBlock: 20172088, - }) - const synths = logs.map(log => log.synth) - await api.sumTokens({ owners: [...synths, ORACLE], tokens: [ADDRESSES.null, ADDRESSES.ethereumclassic.WETC] }) - const uniTvl = uniV3Export({ - ethereumclassic: { blacklistedTokens: synths.concat(['0xf09ace63aa1345882a1ca200b7243f5786eb177b']), factory: '0xaCc703c9C8248a141113C672ea71d196E8118210', fromBlock: 20130563, } - }).ethereumclassic.tvl - - return uniTvl(api) -} - -module.exports = { - ethereumclassic: { - tvl, - }, -}; diff --git a/projects/stlos-liquid-staking/index.js b/projects/stlos-liquid-staking/index.js deleted file mode 100644 index 08e0c4b3f97..00000000000 --- a/projects/stlos-liquid-staking/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const sTLOS = ADDRESSES.telos.STLOS; - -async function tvl(api) { - const pooledTLOS = await api.call({ target: sTLOS, abi: "uint256:totalAssets", }); - return { telos: pooledTLOS / 1e18 }; -} - -module.exports = { - telos: { - tvl, - }, - methodology: "Counts staked TLOS tokens in sTLOS contract.", -} \ No newline at end of file diff --git a/projects/stlos-liquid-staking/sTlos.json b/projects/stlos-liquid-staking/sTlos.json deleted file mode 100644 index dda88359cae..00000000000 --- a/projects/stlos-liquid-staking/sTlos.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalAssets": "uint256:totalAssets" -} \ No newline at end of file diff --git a/projects/stobix/index.js b/projects/stobix/index.js deleted file mode 100644 index 2c51a91222d..00000000000 --- a/projects/stobix/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const addresses = [ - '0x8283E74dA050F6eE93991Dfb0D823e35515Da8E8', -] - -module.exports = { - base: { - tvl: sumTokensExport({ - owners: addresses, - fetchCoValentTokens: true - }) - } -} diff --git a/projects/stobox/index.js b/projects/stobox/index.js deleted file mode 100644 index baa5309e69f..00000000000 --- a/projects/stobox/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const tokenDetails = { - bsc: { - GFST: '0xbA2e788D83eA786d11ED87353763616157A35082', - STBX: '0x65DaD60a28626309F7504d853AFF0099FeD1aAaF', - SLX: '0x2C4A911B16435f96e6bD18E4d720a32480554a22', - LSRWA: '0x475eD67Bfc62B41c048b81310337c1D75D45aADd', - }, - polygon: { - CSB23: '0x76381bFCCB35736a854675570c07a73508622AFd', - MFRET: '0xAa6d73C22A953a6A83B9963052bA73f0C53FC764', - MRDTS: '0xF71272DBC0Da11aDd09cd44A0b7F7D384C0D5Fe1', - CTREAL: '0x06c3aa74645f424d24f6C835e8D606D35225Ab96', - }, -}; - -Object.keys(tokenDetails).forEach((chain) => { - const tokenAddress = Object.values(tokenDetails[chain]); - - module.exports[chain] = { - methodology: - 'Total Supply of all security tokens issued by Stobox multiplied by the current price of all assets.', - tvl: async (api) => { - let supplies; - - supplies = await api.multiCall({ - abi: 'erc20:totalSupply', - calls: tokenAddress, - }); - api.addTokens(tokenAddress, supplies); - - return api.getBalances(); - }, - }; -}); diff --git a/projects/ston/index.js b/projects/ston/index.js deleted file mode 100644 index fd6b247c01e..00000000000 --- a/projects/ston/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { get } = require('../helper/http') -const { transformDexBalances } = require('../helper/portedTokens') -const sdk = require('@defillama/sdk') - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - ton: { - tvl: async () => { - const result = await get("https://api.ston.fi/v1/pools?dex_v2=true") - - return transformDexBalances({ - chain: 'ton', - data: result.pool_list.map(i => ({ - token0: i.token0_address, - token1: i.token1_address, - token0Bal: i.reserve0, - token1Bal: i.reserve1, - })), - blacklistedTokens: [ - 'EQCKiXahTtXh01KzY6yfj9TAzxdunbv5o9dcHv--cbM2eoHf', - 'EQAsHOPv6QeOuno7MxIhLQYjeSSO-vDb44WVoES4deEad__E', - ] - }) - } - } -} diff --git a/projects/stonedefi/index.js b/projects/stonedefi/index.js deleted file mode 100644 index 1576748692f..00000000000 --- a/projects/stonedefi/index.js +++ /dev/null @@ -1,104 +0,0 @@ -const { pool2 } = require("../helper/pool2"); - -const ethVaults = [ - "0x0F9F39F6AABc86c457901df26275c72de32B26A4", // WETH - "0xFC1cF3DC111981eA4372E91f437581524f3721be", // USDC - "0xbA3CfEa6514cF5acdDeff3167Df0b7a4337751bc", // USDT - "0x5dC81697fC0b3752c1277D260064374E95E8A18b", // DAI - "0xb85E3Fe36a6084985E66d704ABD4be4EA51e06cE" // aETHc -] - -const ethuniv2vault = "0xafB6c80FF3CFDaE5977Df0196F3d35Cd65e3c7a3"; -const ethuniv2lp = "0x00D76633A1071e9aed6158AE1a5e1C4C5dC75e54"; - -const stonebank = "0x63598a507B5901721097B1f1407d2Ba89D49b3d4"; -const bscVaults = [ - "0x0F9F39F6AABc86c457901df26275c72de32B26A4", // WBNB - "0xFC1cF3DC111981eA4372E91f437581524f3721be", // ETH - "0xbA3CfEa6514cF5acdDeff3167Df0b7a4337751bc", // BTCB - "0x5dC81697fC0b3752c1277D260064374E95E8A18b", // USDT - "0xafB6c80FF3CFDaE5977Df0196F3d35Cd65e3c7a3", // USDC - "0xb85E3Fe36a6084985E66d704ABD4be4EA51e06cE", // CAKE - "0xcF0c55931629E90b222Ec9c72a9f035eCbC7E835", // MDX - "0xa72aD1293B253522FDE41f1104aa432d7669b299", // BUSD - "0xa004Bb9004418e8F13eAE2715cA53DdDa055d231" // DAI -] - -const bsccakevault = "0x69D4E3C772e8b5D52ccd63c96D7A8a2fa6D46542"; -const bsccakelp = "0x1f0af1934a4133e27469ec93a9840be99d127577"; -const stbnbcakevault = "0xd478963bC6dB450D35739B96b1542240Eb606267"; -const stbnbcakelp = "0x002e1655e05bd214d1e517b549e2a80bda31d2e5"; - -const polyVaults = [ - "0xf1EaEc1ecB26Ec987F2F7B77AAEd7a909F1aA907", // WETH - "0x2BDC312e7847f7a59ED09899863056236a3Ce180", // USDT - "0x33B617Fbe1A940d2E7D0a36FD359Dd1C48baf039", // USDC - "0x237Af22431CdcC29209793573295B942920c6C3c", // WMATIC - "0xDee0BC532a189EDfeBe4b02061443D596b529d62", // QUICK - "0x3311Cb9E5Af0bd0e8145Da5fd5D810D2432554Ce", // SUSHI - "0xD19DD17B99ab5e0244bfF2abB54f8e28aefc034d", // WBTC - "0x0B0216e3c02b334e97cF0421DB9c4CFa2024DA2A" // DAI -] - -const polyuniv2vault = "0x6eC3BCBB751Fe3308Dde173C9c91Bf9ea9aC7163"; -const polyuniv2lp = "0x2ee7b1ddd28514d49d3bfe0bedef52ffa86d7a8b"; - -const avaxVaults = [ - "0x9BC91eAAb1380D3a40320B1b282b6f06e2F31Acf", // WAVAX - "0xd2D0e78d14b34FB7639eF832C0E184B65356595b", // USDT - "0x2aa65E137Ea0f55013A7dDc222092e46FBB51042", // USDC - "0xD22e6f065e54DEf005aFfB08D30eF6A2AB8782f1", // DAI - "0x44eEea93fC479ec7528A05DcDAF93046E1166F84", // WETH - "0x145743E6386d3f08c7d4c4D39db3F77D288089Ff", // WBTC - "0x34Ab7D654D44F9B03fc2DB1d648Eed1559064097", // LINK - "0x24Df5da9414F9f9B98390137f692b8E2bCF2336e", // QI - "0x7A1b1e74f3646DE85066a501bC78edE6bc9D3FF2" // AAVE -] - -async function calcTvl(vaults, api) { - return api.erc4626Sum({ calls: vaults, tokenAbi: 'token', balanceAbi: 'totalAssets' }) -} - -async function eth(api) { - return await calcTvl(ethVaults, api); -} - -async function bsc(api) { - await calcTvl(bscVaults, api); - const bnbStakeBalance = await api.call({ abi: 'uint256:stbnbMarketCapacityCountByBNB', target: stonebank }) - api.addGasToken(bnbStakeBalance) -} - -async function polygon(api) { - return calcTvl(polyVaults, api); -} - -async function avax(api) { - return calcTvl(avaxVaults, api); -} - -function staking(stakingContract) { - return async (api) => calcTvl([stakingContract], api) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl: eth, - staking: staking("0xa72ad1293b253522fde41f1104aa432d7669b299"), - pool2: pool2(ethuniv2vault, [ethuniv2lp]) - }, - bsc: { - tvl: bsc, - staking: staking("0xBd2861c0f43F6E8d571fcfA5a7C77D13d5695Ebf"), - pool2: pool2([bsccakevault, stbnbcakevault], [stbnbcakelp, bsccakelp]) - }, - polygon: { - tvl: polygon, - staking: staking("0xA035eCd4824c4C13506D39d7041e8E0Ad156686D"), - pool2: pool2(polyuniv2vault, [polyuniv2lp]) - }, - avax: { - tvl: avax, - } -} diff --git a/projects/stormswap/index.js b/projects/stormswap/index.js deleted file mode 100644 index fdc5eae4d68..00000000000 --- a/projects/stormswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterChefContractStorm_avax = - "0xc1A97bCbaCf0566fc8C40291FFE7e634964b0446"; -const storm = "0x6AFD5A1ea4b793CC1526d6Dc7e99A608b356eF7b"; - -const masterChefContractWave_avax = - "0x81a6E8CCaa786A5a92496C871b5567f2Ee940a12"; -const wave = "0x35d833281a098760f7361dbfc8a3d5c4d4da5b66"; - -const masterChefContractWind_cronos = - "0x6eC89CCcDb563Ac442d2370F6E47bC1C78e023fC"; -const wind = "0x48713151e5afb7b4cc45f3653c1c59cf81e88d4b"; - -module.exports = { - ...masterChefExports(masterChefContractStorm_avax, "avax", storm), - ...masterChefExports(masterChefContractWind_cronos, "cronos", wind), - //...masterChefExports(masterChefContractWave_avax, "avax", wave), - methodology: - "We count liquidity on the Fields (LP tokens) and Lagoons(single tokens) sections through MasterChef Contracts", -}; diff --git a/projects/stormtrade/index.js b/projects/stormtrade/index.js deleted file mode 100644 index 29a9b0ff2f8..00000000000 --- a/projects/stormtrade/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') -const ADDRESSES = require("../helper/coreAssets.json"); - -module.exports = { - timetravel: false, - methodology: 'Total amount of jUSDT locked in the StormTrade vault (EQDynReiCeK8xlKRbYArpp4jyzZuF6-tYfhFM0O5ulOs5H0L)', - ton: { - tvl: ( - sumTokensExport({ - owners: [ - 'EQDynReiCeK8xlKRbYArpp4jyzZuF6-tYfhFM0O5ulOs5H0L', // jUSDT vault - 'EQDpJnZP89Jyxz3euDaXXFUhwCWtaOeRmiUJTi3jGYgF8fnj', // TON-M vault - 'EQAz6ehNfL7_8NI7OVh1Qg46HsuC4kFpK-icfqK9J3Frd6CJ', // USDT vault - 'EQAG8_BzwlWkmqb9zImr9RJjjgZZCLMOQXP9PR0B1PYHvfSS', // Notcoin vault - ], - tokens: [ADDRESSES.ton.jUSDT, ADDRESSES.ton.USDT, ADDRESSES.ton.TON, ADDRESSES.ton.NOT] - }) - ) - } -} diff --git a/projects/storyhunt-v3/index.js b/projects/storyhunt-v3/index.js deleted file mode 100644 index 3f55893672e..00000000000 --- a/projects/storyhunt-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { blacklistedTokens_default } = require('../helper/solana') -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - 'sty': { factory: '0xa111dDbE973094F949D78Ad755cd560F8737B7e2', fromBlock: 1, blacklistedTokens: ["0x5fbdb2315678afecb367f032d93f642f64180aa3", "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512"] } -}) \ No newline at end of file diff --git a/projects/stout/index.js b/projects/stout/index.js deleted file mode 100644 index 7da222c56fe..00000000000 --- a/projects/stout/index.js +++ /dev/null @@ -1,134 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// Stout Protocol Adapter for DeFiLlama -const sdk = require('@defillama/sdk'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const DUSX = '0xe30e73Cc52EF50A4E4a8b1a3dd0b002b2276F854' -const tokens = { - // Basic tokens - STTX: '0x97a10beEbB25e0eBfA55Ca0A7d00E37AFe957DEa', - // veSTTX: '0x8221312e9cF90A2B160eCdabf922408a5ef1CF9E', - // DUSX: '0xe30e73Cc52EF50A4E4a8b1a3dd0b002b2276F854', - USDC: ADDRESSES.sonic.USDC_e, - USDT: ADDRESSES.sonic.USDT, - - // Additional vault tokens - wS: ADDRESSES.sonic.wS, - stS: ADDRESSES.sonic.STS, - wOS: '0x9F0dF7799f6FDAd409300080cfF680f5A23df4b1', - wanS: '0xfA85Fe5A8F5560e9039C04f2b0a90dE1415aBD70', - EGGS: '0xf26Ff70573ddc8a90Bd7865AF8d7d70B8Ff019bC', - WETH: '0x50c42dEAcD8Fc9773493ED674b675bE577f2634b', - WBTC: ADDRESSES.bsc.WBTC, - LBTC: ADDRESSES.sonic.LBTC, - SolvBTC: ADDRESSES.bob.SolvBTC, - scUSD: ADDRESSES.sonic.scUSD, - scETH: ADDRESSES.sonic.scETH, - scBTC: '0xBb30e76d9Bb2CC9631F7fC5Eb8e87B5Aff32bFbd', - wstkscUSD: '0x9fb76f7ce5FCeAA2C42887ff441D46095E494206', - wstkscETH: '0xE8a41c62BB4d5863C6eadC96792cFE90A1f37C47', - SHADOW: '0x3333b97138D4b086720b5aE8A7844b1345a33333', - Anon: '0x79bbF4508B1391af3A0F4B30bb5FC4aa9ab0E07C', -}; - -const contracts = { - StakedDUSX: '0xa0B0CbffEd77E57E946FB1fb875b28eDd0d0CC6D', - VoteEscrowedSTTX: '0x8221312e9cF90A2B160eCdabf922408a5ef1CF9E', - StoutVault: '0x88d6D8547Bcbd5366538cEdCCF424776f3f7CABF', - LenderVoteEscrowedSTTX: '0x40E0fAA1FF6E73e2955266c1b897FC3545Ad4C48', - LenderWS: '0x711de8e2FB625c523e0954F9948d090b8f584A62', - LenderWETH: '0xF55e1E569Da5F02998BF98ED6BEbdCdA661c1a91', - PegStabilityModuleUSDC: '0x24E2A86176F209CcE828714c48f804fd7444A89a', - PegStabilityModuleUSDT: '0xB969195dB5d756AC7a7EA78a69F20Fe1f172a494', - Floor: '0xb8c30cF1aA46b4E8eE8D008A0F2F763B3D5baC0e', - MarketLens: '0x56F0B188fEa4cD50EC91Faa15982dF9D9017db48', -}; - - - -// Calculates TVL from StoutVault, PSMs, and Floor -async function tvl(api) { - const tokensAndOwners = []; - - // Add all vault tokens - for (const [_, tokenAddress] of Object.entries(tokens)) { - tokensAndOwners.push([tokenAddress, contracts.StoutVault]); - } - - // PSM tokens - tokensAndOwners.push([tokens.USDC, contracts.PegStabilityModuleUSDC]); - tokensAndOwners.push([tokens.USDT, contracts.PegStabilityModuleUSDT]); - - // Get all balances first - const balances = await sumTokens2({ api, tokensAndOwners }); - - return balances; -} - -// Calculates staked DUSX -async function staking(api) { - const tokensAndOwners = [ - [tokens.STTX, contracts.VoteEscrowedSTTX], - [DUSX, contracts.StakedDUSX], - ]; - - const balances = await sumTokens2({ api, tokensAndOwners }); - - return balances; -} - -// No LP tokens in the current implementation -async function pool2(api) { - return {}; -} - -// Gets borrowed DUSX amount from the MarketLens contract -async function borrowed(api) { - try { - // Explicit ABI for the MarketLens contract function - const abi = 'function getTotalBorrowed(address lender) external view returns (uint256)'; - - // List of lenders to check - const lenders = [ - contracts.LenderVoteEscrowedSTTX, - contracts.LenderWS, - contracts.LenderWETH - ]; - - // Get borrowed amounts from all lenders - for (const lender of lenders) { - try { - const borrowedAmount = await api.call({ - abi, - target: contracts.MarketLens, - params: [lender], - }); - api.add(DUSX, borrowedAmount); - } catch (lenderError) { - console.log(`Error getting borrowed amount for lender ${lender}: ${lenderError.message}`); - // Continue with other lenders if one fails - } - } - - return api.getBalances(); - } catch (error) { - console.log(`Error in borrowed function: ${error.message}`); - return {}; - } -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - doublecounted: false, - methodology: - 'TVL includes various tokens in StoutVault, stablecoins in PSMs, and DUSX in Floor. ' + - 'Staking tracks STTX in VoteEscrowedSTTX and DUSX in StakedDUSX. ' + - 'Borrowed shows DUSX loans from Lenders.', - sonic: { - tvl, - staking, - pool2, - borrowed, - }, -}; diff --git a/projects/strata/index.js b/projects/strata/index.js deleted file mode 100644 index b8703017622..00000000000 --- a/projects/strata/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const pUSDeVault = "0xA62B204099277762d1669d283732dCc1B3AA96CE"; - -module.exports = { - methodology: "TVL includes USDe/eUSDe tokens locked in Strata’s Season 0 vault on Ethereum.", - ethereum: { - async tvl (api) { - return await api.erc4626Sum2({ - calls: [ pUSDeVault ], - }); - } - }, -}; diff --git a/projects/strategyx-finance/index.js b/projects/strategyx-finance/index.js deleted file mode 100644 index f0da70c8f19..00000000000 --- a/projects/strategyx-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -module.exports = { - fantom: { - tvl: () => ({}), - }, - hallmarks: [ - [1658370720, "Rug pull"] - ], - deadFrom: 1658370720 -}; diff --git a/projects/strater/index.js b/projects/strater/index.js deleted file mode 100644 index 292c71ff13d..00000000000 --- a/projects/strater/index.js +++ /dev/null @@ -1,116 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const sui = require("../helper/chain/sui"); -const { addUniV3LikePosition } = require("../helper/unwrapLPs"); - -const BUCKETUS_VAULT_AND_POOL_IDS = [ - { - //NEW_BUCKETUS - vaultID: - "0x1a0b93fd2965ce3ceb4039c90b232ddee7b0e79015cab0ca10528bb5f4285188", - poolID: - "0x6ecf6d01120f5f055f9a605b56fd661412a81ec7c8b035255e333c664a0c12e7", - }, - { - //BUCKETUS - vaultID: - "0x6edfc992f6e775fe926a5e850661c151ad01e6149e9b34792a2102e1721065fc", - poolID: - "0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5", - }, - { - //FEE_RATE_BUCKETUS - vaultID: - "0x706a998f7f223b30c32ac3400a63721dae00f1b3e15169defeaafe2756af99c8", - poolID: - "0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5", - }, -]; - -const CETABLE_VAULT_ID = - "0xeed4e7948f88f1f044b653717a7855eef6fe188e9cbbb103d5169f9bc3edd257"; -const USDC_USDT_POOL_ID = - "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20"; - -const STAPREAL_VAULT_ID = - "0x614c78eabb6949b3e1e295f19f6b8476e2e62091ca66432fbb5507e7b54af0d9"; -const STAPEARL_PAIR_METADTA_ID = - "0x243096d976a44de24fde33f087665f8265543a533b5cdbae60fc72a939669867"; - -const ST_SBUCK_VAULT_OBJECT_ID = "0xe83e455a9e99884c086c8c79c13367e7a865de1f953e75bcf3e529cdf03c6224" - -function asIntN(int, bits = 32) { - return Number(BigInt.asIntN(bits, BigInt(int))); -} - -async function tvl(api) { - for (const { vaultID, poolID } of BUCKETUS_VAULT_AND_POOL_IDS) { - const vaultObjs = await sui.getObject(vaultID); - const poolObjs = await sui.getObject(poolID); - - const pool = poolObjs.fields; - const position = vaultObjs.fields.position.fields; - - addUniV3LikePosition({ - api, - tickLower: asIntN(position.tick_lower_index.fields.bits), - tickUpper: asIntN(position.tick_upper_index.fields.bits), - tick: asIntN(pool.current_tick_index.fields.bits), - liquidity: position.liquidity, - token0: ADDRESSES.sui.BUCK, - token1: ADDRESSES.sui.USDC, - }); - } - - const cetableVaultObjs = await sui.getObject(CETABLE_VAULT_ID); - const cetablePoolObjs = await sui.getObject(USDC_USDT_POOL_ID); - - const cetablePool = cetablePoolObjs.fields; - const cetablePosition = cetableVaultObjs.fields.position.fields; - - addUniV3LikePosition({ - api, - tickLower: asIntN(cetablePosition.tick_lower_index.fields.bits), - tickUpper: asIntN(cetablePosition.tick_upper_index.fields.bits), - tick: asIntN(cetablePool.current_tick_index.fields.bits), - liquidity: cetablePosition.liquidity, - token0: ADDRESSES.sui.USDT, - token1: ADDRESSES.sui.USDC, - }); - - const stapearlVaultObjs = await sui.getObject(STAPREAL_VAULT_ID); - const stapearlPairMetadataObjs = await sui.getObject( - STAPEARL_PAIR_METADTA_ID - ); - - const stapearlLpAmount = stapearlVaultObjs.fields.position.fields.amount; - const stapearlPairMetadataFields = - stapearlPairMetadataObjs.fields.value.fields; - const stapearlLpSupply = stapearlPairMetadataFields.lp_supply.fields.value; - const stapearlReserveX = stapearlPairMetadataFields.reserve_x.fields.balance; - const stapearlReserveY = stapearlPairMetadataFields.reserve_y.fields.balance; - - const stapearlUSDCAmount = - (stapearlLpAmount * stapearlReserveX) / stapearlLpSupply; - const stapearlUSDTAmount = - (stapearlLpAmount * stapearlReserveY) / stapearlLpSupply; - - // saving vault - const savingVaultcObj = await sui.getObject(ST_SBUCK_VAULT_OBJECT_ID) - let savingVaultTVL = Number(savingVaultcObj.fields.free_balance) + Number(savingVaultcObj.fields.time_locked_profit.fields.locked_balance) + Number(savingVaultcObj.fields.time_locked_profit.fields.unlocked_balance) - const strategies = savingVaultcObj.fields.strategies.fields.contents - for(const strategy of strategies){ - const botrrowedAmount = Number(strategy.fields.value.fields.borrowed) - savingVaultTVL += botrrowedAmount - } - - api.add(ADDRESSES.sui.USDC, stapearlUSDCAmount); - api.add(ADDRESSES.sui.USDT, stapearlUSDTAmount); - api.add(ADDRESSES.sui.BUCK, savingVaultTVL) -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; diff --git a/projects/stratis-liquid-staking/index.js b/projects/stratis-liquid-staking/index.js deleted file mode 100644 index 9d5b1c1548b..00000000000 --- a/projects/stratis-liquid-staking/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const STAKING_CONTRACT = '0x9490e998E3f1f65064a41a11cd66F2aA54aF68D7'; -const abi = "function balancesSnapshot() view returns (uint256 _block, uint256 _totalEth, uint256 _totalLsdToken)" - -module.exports = { - methodology: "Tvl data that staked on Stratis liquid staking protocol by community .", - stratis: { - tvl: async (api) => { - const { _totalEth } = (await api.call({ target: STAKING_CONTRACT, abi: abi })) - return { 'stratis': _totalEth / 1e18 } - } - } -} diff --git a/projects/stratis-lst/index.js b/projects/stratis-lst/index.js deleted file mode 100644 index 41ce7a81fda..00000000000 --- a/projects/stratis-lst/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - methodology: "TVL represents the total amount of STRAX tokens locked by STRAX Token Holders in the Stratis Liquid Staking Protocol.", - stratis: { - tvl: async (api) => { - const totalSupply = await api.call({ target: '0x81c3fd1c1aD16e31bf75F4aF25a2f9390608C609', abi: 'uint256:totalSupply' }) - return { 'stratis': totalSupply / 1e18 } - } - } -} diff --git a/projects/stratumexchange/index.js b/projects/stratumexchange/index.js deleted file mode 100644 index b674259e44d..00000000000 --- a/projects/stratumexchange/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const {transformDexBalances} = require('../helper/portedTokens') -const {sumTokensExport} = require('../helper/unknownTokens') -const ADDRESSES = require('../helper/coreAssets.json') - -const PAIRFACTORY = '0x061FFE84B0F9E1669A6bf24548E5390DBf1e03b2'; -const VOTINGESCROW = '0x28A8e21CFE4586002B4829EBdd7f6F3d88Ed79c1'; -const STRAT_TOKEN = '0x5a093a9c4f440c6b105F0AF7f7C4f1fBE45567f9'; -const LP_STRAT_USDC = '0xA474ee9dbdd528b9C79ea3C790Dd6E5821d9307D'; - -const config = { - mantle: PAIRFACTORY -} -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const pairs = await api.fetchList({lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: factory}) - const isPool3 = await api.multiCall({ - abi: 'function is3pool(address) view returns (bool)', - calls: pairs, - target: factory - }) - const pool3 = pairs.filter((_, i) => isPool3[i]) - const pool2 = pairs.filter((_, i) => !isPool3[i]) - - // handle uni like pairs - const isStables = await api.multiCall({abi: 'bool:stable', calls: pool2,}) - const token0s = await api.multiCall({abi: 'address:token0', calls: pool2}) - const token1s = await api.multiCall({abi: 'address:token1', calls: pool2}) - const token0Bals = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: token0s.map((t, i) => ({target: t, params: pool2[i]})) - }) - const token1Bals = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: token1s.map((t, i) => ({target: t, params: pool2[i]})) - }) - - const dexData = [] - for (let i = 0; i < pool2.length; i++) { - if (isStables[i]) { - api.add(token0s[i], token0Bals[i]) - api.add(token1s[i], token1Bals[i]) - } else { - dexData.push({ - token0: token0s[i], - token1: token1s[i], - token0Bal: token0Bals[i], - token1Bal: token1Bals[i], - }) - } - } - - // handle 3pool like pairs - const token3s = await api.multiCall({abi: "address[]:getTokensArray", calls: pool3}) - await api.sumTokens({ownerTokens: token3s.map((v, i) => [v, pool3[i]])}) - - return transformDexBalances({api, data: dexData,}) - }, - - staking: sumTokensExport({ - owner: VOTINGESCROW, - tokens: [STRAT_TOKEN], - lps: [LP_STRAT_USDC], - coreAssets: [ADDRESSES.mantle.USDC], - restrictTokenRatio: 100, - }), - - hallmarks: [ - [1707400800, "TGE"], - [1707955200, "Epoch 1"] - ] - - } -}) \ No newline at end of file diff --git a/projects/straxswap/index.js b/projects/straxswap/index.js deleted file mode 100644 index 03f307b8f08..00000000000 --- a/projects/straxswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'stratis': '0xDC29A634611914ed73261A71C8F20D828cA2c09F' -}) \ No newline at end of file diff --git a/projects/stream/abi.js b/projects/stream/abi.js deleted file mode 100644 index 76b513b59eb..00000000000 --- a/projects/stream/abi.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - vaultParams: "function vaultParams() view returns (uint8 decimals, address asset, uint56 minimumSupply, uint104 cap )", - currentExchangeRate: "function currentExchangeRate() view returns (uint256 vaultToken, uint256 baseToken)", - totalBalance: "uint256:totalBalance", - asset: "function asset() view returns (address)", - totalSupply: "function totalSupply() view returns (uint256)" -}; diff --git a/projects/stream/index.js b/projects/stream/index.js deleted file mode 100644 index c3173f483c5..00000000000 --- a/projects/stream/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const abi = require("./abi.js"); -const vaults = Object.values({ - STREAMUSD_WRAPPER_CONTRACT: "0x6eAf19b2FC24552925dB245F9Ff613157a7dbb4C", - STREAMBTC_WRAPPER_CONTRACT: "0x05F47d7CbB0F3d7f988E442E8C1401685D2CAbE0", - STREAMETH_WRAPPER_CONTRACT: "0xF70f54cEFdCd3C8f011865685FF49FB80A386a34", - STREAMEUR_WRAPPER_CONTRACT: "0xDCFd98A5681722DF0d93fc11b9205f757576a427", -}) - - - -async function tvlEth(_, _1, _2, { api }) { - const bals = await api.multiCall({ abi: abi.totalSupply, calls: vaults}) - const tokens = await api.multiCall({ abi: abi.asset, calls: vaults}) - api.addTokens(tokens, bals) -} - - -module.exports = { - misrepresentedTokens: true, - methodology: "Calculates the TVL of all Stream vaults", - start: 1739697390, - hallmarks: [[1740283200, "Stream V2 Launch"]], - ethereum: { - tvl: tvlEth, - }, -}; diff --git a/projects/streamflow/api.js b/projects/streamflow/api.js deleted file mode 100644 index 1fc818100b4..00000000000 --- a/projects/streamflow/api.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("streamflow", ['solana'], ['vesting']), -} \ No newline at end of file diff --git a/projects/streamflow/index.js b/projects/streamflow/index.js deleted file mode 100644 index 78462852b69..00000000000 --- a/projects/streamflow/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const { getCache } = require('../helper/http') -const { getWhitelistedTokens } = require('../helper/streamingHelper') - -const url = - "https://metabase.internal-streamflow.com/_public/api/v1/stats/accumulated/by-token"; -const chains = [ - "solana", - "aptos", - "bsc", - "polygon", - "ethereum", - "sui", -]; -const chainMapping = { - bsc: 'bnb' -}; - -async function getCachedApiRespnse() { - let apiResponse = (await getCache(url)); - - return apiResponse; -} - -async function fetchData(api, key, isVesting) { - const tokenHoldings = await getCachedApiRespnse(); - const chain = (chainMapping[api.chain] || api.chain).toUpperCase(); - - const holdings = tokenHoldings.filter((i) => i.chain === chain); - let whitelistedTokens = [] - let allTokens = [] - if (key === "amount_locked_core") { - allTokens = holdings.filter((i) => +i[key] > 0).map((i) => i.mint); - whitelistedTokens = await getWhitelistedTokens({ api, tokens: allTokens, isVesting }) - whitelistedTokens = new Set(whitelistedTokens) - } - - - for (const tokenHolding of holdings) { - if (key === "amount_locked_core" && !whitelistedTokens.has(tokenHolding.mint)) { - continue; - } - api.add(tokenHolding.mint, tokenHolding[key]); - } -} - -async function tvl(api) { - await fetchData(api, "amount_locked_core", false); -} - -async function vesting(api) { - await fetchData(api, "amount_locked_core", true); - await fetchData(api, "amount_locked_vested"); -} - -module.exports = { - methodology: 'Token breakdown: https://metabase.internal-streamflow.com/public/dashboard/fe3731c1-fbe4-4fb6-8960-515af1d6e72d', - timetravel: false, - misrepresentedTokens: false, -} - -chains.forEach((chain) => { - module.exports[chain] = { - tvl, vesting - }; -}); diff --git a/projects/stride-hyperlane/index.js b/projects/stride-hyperlane/index.js deleted file mode 100644 index 1214bc7bb9c..00000000000 --- a/projects/stride-hyperlane/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const sdk = require("@defillama/sdk") -const { get } = require("../helper/http") - -async function tvl() { - // address denom reference: https://www.mintscan.io/stride/address/stride1h4rhlwcmdwnnd99agxm3gp7uqkr4vcjd73m4586hcuklh3vdtldqgqmjxc - const hyperlaneAddressDenom = "ibc/BF3B4F53F3694B66E13C23107C84B6485BD2B96296BB7EC680EA77BBA75B4801" - - const { balances: hyperlaneBalances } = await get( - "https://stride-walk-214t-api.polkachu.com//cosmos/bank/v1beta1/balances/stride1h4rhlwcmdwnnd99agxm3gp7uqkr4vcjd73m4586hcuklh3vdtldqgqmjxc" - ) - - const hyperlaneBalance = hyperlaneBalances.find((balance) => balance.denom === hyperlaneAddressDenom) - - if (hyperlaneBalance == null) throw new Error("Something went wrong with getting the available hyperlane balance") - - // This defaults to 1e6 (for now) since the origin denom of `hyperlaneAddressDenom` is utia - const coinDecimals = 1e6 - - const amount = hyperlaneBalance.amount / coinDecimals - - const balances = {} - - sdk.util.sumSingleBalance( - balances, - "celestia", - amount - ) - - return balances -} - -module.exports = { - timetravel: false, - methodology: "Hyperlane uses a lock-and-mint mechanism. To calculate TVL, we are taking the number of locked TIA on the Stride side of the bridge, and multiplying by TIA price.", - "celestia": { - tvl - } -} // node test.js projects/stride-hyperlane/index.js diff --git a/projects/stride/index.js b/projects/stride/index.js deleted file mode 100644 index 836b8edae60..00000000000 --- a/projects/stride/index.js +++ /dev/null @@ -1,172 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { get } = require("../helper/http"); - -const chains = { - cosmos: { - chainId: "cosmoshub-4", - denom: "uatom", - coinGeckoId: "cosmos", - }, - - stargaze: { - chainId: "stargaze-1", - denom: "ustars", - coinGeckoId: "stargaze", - }, - - juno: { - chainId: "juno-1", - denom: "ujuno", - coinGeckoId: "juno-network", - }, - - osmosis: { - chainId: "osmosis-1", - denom: "uosmo", - coinGeckoId: "osmosis", - }, - - terra2: { - chainId: "phoenix-1", - denom: "uluna", - coinGeckoId: "terra-luna-2", - }, - - evmos: { - chainId: "evmos_9001-2", - denom: "aevmos", - coinGeckoId: "evmos", - }, - - injective: { - chainId: "injective-1", - denom: "inj", - coinGeckoId: "injective-protocol", - }, - - umee: { - chainId: "injective-1", - denom: "uumee", - coinGeckoId: "umee", - }, - - comdex: { - chainId: "comdex-1", - denom: "ucmdx", - coinGeckoId: "comdex", - }, - - sommelier: { - chainId: "sommelier-3", - denom: "usomm", - coinGeckoId: "sommelier", - }, - - dydx: { - chainId: "dydx-mainnet-1", - denom: "adydx", - coinGeckoId: "dydx-chain", - }, - - celestia: { - chainId: "celestia", - denom: "utia", - coinGeckoId: "celestia", - }, - - dymension: { - chainId: "dymension_1100-1", - denom: "adym", - coinGeckoId: "dymension", - }, - - islm: { - chainId: "haqq_11235-1", - denom: "aISLM", - coinGeckoId: "islamic-coin", - }, - - band: { - chainId: "laozi-mainnet", - denom: "uband", - coinGeckoId: "band-protocol", - } -}; - -// inj uses 1e18 - https://docs.injective.network/learn/basic-concepts/inj_coin#base-denomination -function getCoinDenimals(denom) { - return ["aevmos", "inj", "adydx", "adym", "aISLM"].includes(denom) - ? 1e18 - : 1e6; -} - -function makeTvlFn(chain) { - return async () => { - // Define the URL for host_zone based on chainId - const hostZoneUrl = chain.chainId === "dymension_1100-1" - ? "https://stride-walk-214t-api.polkachu.com//Stride-Labs/stride/stakedym/host_zone" - : `https://stride-walk-214t-api.polkachu.com//Stride-Labs/stride/stakeibc/host_zone/${chain.chainId}`; - - const [{ amount: assetBalances }, { host_zone: hostZone }] = - await Promise.all([ - await get( - `https://stride-walk-214t-api.polkachu.com//cosmos/bank/v1beta1/supply/by_denom?denom=st${chain.denom}` - ), - await get(hostZoneUrl), - ]); - - const assetBalance = assetBalances["amount"]; - - const coinDecimals = getCoinDenimals(chain.denom); - - const amount = assetBalance / coinDecimals; - - const balances = {}; - - sdk.util.sumSingleBalance( - balances, - chain.coinGeckoId, - amount * hostZone.redemption_rate - ); - - return balances; - }; -} - -module.exports = { - timetravel: false, - methodology: "Sum of all the tokens that are liquid staked on Stride", - stride: { - tvl: async () => ({}), // kept so tvl history doesnt disappear - }, -}; // node test.js projects/stride/index.js - -for (const chainName of Object.keys(chains)) { - module.exports[chainName] = { tvl: makeTvlFn(chains[chainName]) }; -} - -// ############### Berachain TVL ############### -// Berachain TVL is calculated differently than the other chains Stride -// supports. -const MANAGER_CONTRACT_ADDRESS = "0xDcc5E38f0207757604c5a4925A870dE9554395b4"; -function makeBerachainTvlFn() { - return async (api) => { - // Get all whitelisted receipt tokens (vaults) - const receipts = await api.call({ - target: MANAGER_CONTRACT_ADDRESS, - abi: 'function receipts() view returns (address[])', - }); - - // For each vault, get the total staked amount - const stakedAmounts = await api.multiCall({ - target: MANAGER_CONTRACT_ADDRESS, - abi: "function totalStakedByReceipt(address receipt) view returns (uint256)", - calls: receipts, - }); - api.add(receipts, stakedAmounts); - }; -} - -module.exports["berachain"] = { - tvl: makeBerachainTvlFn(), -}; diff --git a/projects/strike-finance/index.js b/projects/strike-finance/index.js deleted file mode 100644 index 24cf9390f05..00000000000 --- a/projects/strike-finance/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); - -const strikeStaking = - "addr1z9yh4zcqs4gh78ysvh8nqp40fsnxg49nn3h6x25az9k8tms6409492020k6xml8uvwn34wrexagjh5fsk5xk96jyxk2qf3a7kj"; -const strikeBatching = - "addr1q9mqsgrgdaq9aahjfcrc6f45sgmcut4gu3c774kqzawkjkhujht5h40l2yrm8e7r2vwr2g3tv64pzjgnxwsztwg0yu5s00jz00"; -const strikeTokenAddress = - "f13ac4d66b3ee19a6aa0f2a22298737bd907cc95121662fc971b5275535452494b45"; -const strikePerpsScript = - "addr1wy2gch9ua0700a3dg423wxcwx4p886m4ny5u3aqs66sluqcly9uud"; -const strikePerpsScriptV2 = - "addr1z9nsxjyw7xgfw5jtfxcw7fxucte0277ununa4evyxcw3evg6409492020k6xml8uvwn34wrexagjh5fsk5xk96jyxk2q4366ry"; -const strikeSnekPerpsScript = - "addr1zy48lqwffvzkahcyrhj8982p3f7c002g098ly4zxzxefnlg6409492020k6xml8uvwn34wrexagjh5fsk5xk96jyxk2qst04fy"; - -async function tvl() { - return await sumTokens2({ - owners: [ - strikePerpsScript, - strikeBatching, - strikePerpsScriptV2, - strikeSnekPerpsScript, - ], - }); -} - -async function stake() { - return await sumTokens2({ - owner: strikeStaking, - tokens: [strikeTokenAddress], - }); -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - staking: stake, - }, -}; diff --git a/projects/strike/index.js b/projects/strike/index.js deleted file mode 100644 index 680fd0ef71b..00000000000 --- a/projects/strike/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports.ethereum = compoundExports2({ comptroller: '0xe2e17b2CBbf48211FA7eB8A875360e5e39bA2602', cether: '0xbee9cf658702527b0acb2719c1faa29edc006a92' }) diff --git a/projects/strips/index.js b/projects/strips/index.js deleted file mode 100644 index 66845338136..00000000000 --- a/projects/strips/index.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - hallmarks: [ - [1658102400, "Winding down of v1 announced"] - ], - arbitrum: { - tvl: () => ({}), - pool2: () => ({}), - }, - deadFrom: 1658102400, - methodology: 'Balance of USDC (fees) held by each market as core TVL as well as STRP/USDC SLP held by each market as pool2' -}; - -module.exports.deadFrom = 1658102400 \ No newline at end of file diff --git a/projects/strkfarm/ekubo.js b/projects/strkfarm/ekubo.js deleted file mode 100644 index 5828d4bdea1..00000000000 --- a/projects/strkfarm/ekubo.js +++ /dev/null @@ -1,36 +0,0 @@ -const EkuboAbi = [ - { - "name": "total_supply", - "type": "function", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - }, - { - "name": "convert_to_assets", - "type": "function", - "inputs": [ - { - "name": "shares", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "(core::integer::u256, core::integer::u256, core::integer::u256)" - } - ], - "state_mutability": "view" - }, -] - -const EkuboAbiMap = {} -EkuboAbi.forEach(i => EkuboAbiMap[i.name] = i) - -module.exports = { - EkuboAbiMap -} \ No newline at end of file diff --git a/projects/strkfarm/endur.js b/projects/strkfarm/endur.js deleted file mode 100644 index 6ad9c5e3b9e..00000000000 --- a/projects/strkfarm/endur.js +++ /dev/null @@ -1,41 +0,0 @@ -const Endur = [ - { - "name": "preview_redeem", - "type": "function", - "inputs": [ - { - "name": "shares", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - }, - { - "name": "convert_to_assets", - "type": "function", - "inputs": [ - { - "name": "shares", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - }, - ] - - const endurABIMap = {} - Endur.forEach(i => endurABIMap[i.name] = i) - - module.exports = { - endurABIMap - } \ No newline at end of file diff --git a/projects/strkfarm/erc4626.js b/projects/strkfarm/erc4626.js deleted file mode 100644 index 475812281f8..00000000000 --- a/projects/strkfarm/erc4626.js +++ /dev/null @@ -1,64 +0,0 @@ -const ERC4626Abi = [ - { - "name": "asset", - "type": "function", - "inputs": [], - "outputs": [ - { - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "state_mutability": "view" - }, - { - "name": "balanceOf", - "type": "function", - "inputs": [ - { - "name": "account", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view", - "customInput": 'address', - }, - { - "name": "total_assets", - "type": "function", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - }, - { - "name": "preview_redeem", - "type": "function", - "inputs": [ - { - "name": "shares", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - }, -] - -const ERC4626AbiMap = {} -ERC4626Abi.forEach(i => ERC4626AbiMap[i.name] = i) - -module.exports = { - ERC4626AbiMap -} \ No newline at end of file diff --git a/projects/strkfarm/fusionAbi.js b/projects/strkfarm/fusionAbi.js deleted file mode 100644 index 37a2b96f43b..00000000000 --- a/projects/strkfarm/fusionAbi.js +++ /dev/null @@ -1,20 +0,0 @@ -const FusionAbi = [ - { - "type": "function", - "name": "total_assets", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - }, -] - -const FusionAbiMap = {} -FusionAbi.forEach(i => FusionAbiMap[i.name] = i) - -module.exports = { - FusionAbiMap -} \ No newline at end of file diff --git a/projects/strkfarm/index.js b/projects/strkfarm/index.js deleted file mode 100644 index 0e56a0e3f53..00000000000 --- a/projects/strkfarm/index.js +++ /dev/null @@ -1,165 +0,0 @@ -/** - * Troves is a yield aggregator and strategy builder on Starknet - * - We use various DeFi protocols on starknet to design yield strategies - */ -const { STRATEGIES } = require("./utils") -const { multiCall } = require("../helper/chain/starknet"); -const { call } = require("../helper/chain/starknet"); -const { EkuboAbiMap } = require('./ekubo'); -const { ERC4626AbiMap } = require('./erc4626'); -const { SINGLETONabiMap } = require('./singleton'); -const { endurABIMap } = require('./endur'); -const { FusionAbiMap } = require('./fusionAbi'); - -// returns tvl and token of the AutoCompounding strategies -async function computeAutoCompoundingTVL(api) { - // vaults under this catagory are retired so tvl balances are not considered - const retiredBalance = 0 - const contracts = STRATEGIES.AutoCompounding; - api.addTokens(contracts.map(c => c.token), retiredBalance); -} - -async function computeXSTRKStratTVL(api) { - const pool_id = "0x52fb52363939c3aa848f8f4ac28f0a51379f8d1b971d8444de25fbd77d8f161"; - const contracts = STRATEGIES.xSTRKStrats; - const price = await multiCall({ - calls: contracts.map(c => ({ - target: c.xSTRK, - params: ['0xDE0B6B3A7640000', '0x0'] - })), - abi: { ...endurABIMap.preview_redeem, customInput: 'address' } - }); - let xstrk_price = Number(price[0]) / 10**18 // Assuming `price` is returned as a BigInt array - - const data = await multiCall({ - calls: contracts.map(c => ({ - target: c.vesu, - params: [pool_id, c.xSTRK, c.token, c.address] - })), - abi: {...SINGLETONabiMap.position, customInput: 'address'}, - }) - - - let collateral = Number(data[0]['2']); - let debt = Number(data[0]['3']); - - let tvl = (collateral * xstrk_price) - debt; - if (tvl < 0) throw new Error("Negative TVL detected, check the xSTRK strategy logic"); - - api.addTokens(contracts[0].token, [tvl]); -} - -// returns tvl and token of the Sensei strategies -async function computeSenseiTVL(api) { - // vaults under this catagory are retired so tvl balances are not considered - const retiredBalance = 0 - const contracts = STRATEGIES.Sensei; - api.addTokens(contracts.map(c => c.token), retiredBalance); -} - -async function computeFusionTVL(api) { - const fusionContracts = STRATEGIES.FusionVaults - // calculates tvl of each fusion vault - const totalAssets = await multiCall({ - calls: fusionContracts.map(c => c.address), - abi: FusionAbiMap.total_assets - }) - api.addTokens(fusionContracts.map(c => c.token), totalAssets); -} - -async function _computeEkuboTVL( - address -) { - const totalShares = await call({ - target: address, - abi: EkuboAbiMap.total_supply - }) - - const hexValue = '0x' + BigInt(totalShares).toString(16); - - const assets = await call({ - target: address, - params: [hexValue, '0x0'], - abi: { ...EkuboAbiMap.convert_to_assets, customInput: 'address' } - }) - - return assets -} - -async function computeEkuboTVL(api) { - const ekuboContracts = STRATEGIES.EkuboVaults - - for (const c of ekuboContracts) { - const assets = await _computeEkuboTVL(c.address) - - api.addTokens(c.token1, assets['2']) - api.addTokens(c.token2, assets['1']) - } -} - -async function computeEkuboBTCTvl(api) { - const ekuboContracts = STRATEGIES.EkuboVaultsEndurBTC - - for (const c of ekuboContracts) { - const assets = await _computeEkuboTVL(c.address) - - const hexValue = '0x' + BigInt(assets['1']).toString(16); - // convert lst variant to its btc form - const lstAssets = await call ({ - target: c.token2, - params: [hexValue, '0x0'], - abi: {...endurABIMap.convert_to_assets, customInput: 'address'} - }) - - // add these assets to native btc token - let totalAssets = Number(assets['2']) + Number(lstAssets) - api.addTokens(c.token1, totalAssets) - } -} - -async function computeEvergreenTVL(api) { - const evergreenContracts = STRATEGIES.EvergreenVaults; - const totalAssets = await multiCall({ - calls: evergreenContracts.map(c => c.address), - abi: ERC4626AbiMap.total_assets - }) - api.addTokens(evergreenContracts.map(c => c.token), totalAssets); -} - -async function computeHyperVaultTVL(api) { - const hyperContracts = STRATEGIES.HyperVaults; - const totalAssets = await multiCall({ - calls: hyperContracts.map(c => c.address), - abi: ERC4626AbiMap.total_assets - }) - - // convert to asset - const lstAssets = await multiCall({ - calls: hyperContracts.map((c, i) => ({ - target: c.lst, - params: ['0x' + BigInt(totalAssets[i]).toString(16), '0x0'] - })), - abi: {...endurABIMap.convert_to_assets, customInput: 'address'} - }) - - api.addTokens(hyperContracts.map(c => c.token), lstAssets) -} - -async function tvl(api) { - await computeAutoCompoundingTVL(api); - await computeSenseiTVL(api); - await computeXSTRKStratTVL(api); - await computeFusionTVL(api); - await computeEkuboTVL(api); - await computeEkuboBTCTvl(api); - await computeEvergreenTVL(api); - await computeHyperVaultTVL(api) -} - -module.exports = { - doublecounted: true, - methodology: "The TVL is calculated as a sum of total assets deposited into strategies", - starknet: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/strkfarm/sensei.js b/projects/strkfarm/sensei.js deleted file mode 100644 index fcd8f18beb7..00000000000 --- a/projects/strkfarm/sensei.js +++ /dev/null @@ -1,41 +0,0 @@ -const ERC721StratAbi = [ - { - "name": "get_settings", - "type": "function", - "inputs": [], - "outputs": [ - { - "name": "fee_percent", - "type": "core::integer::u128" - }, - { - "name": "fee_receiver", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "min_health_factor", - "type": "core::integer::u32" - }, - { - "name": "target_health_factor", - "type": "core::integer::u32" - }, - { - "name": "coefs_sum1", - "type": "core::integer::u128" - }, - { - "name": "coefs_sum2", - "type": "core::integer::u128" - } - ], - "state_mutability": "view" - } -] - -const ERC721StratAbiMap = {} -ERC721StratAbi.forEach(i => ERC721StratAbiMap[i.name] = i) - -module.exports = { - ERC721StratAbiMap -} \ No newline at end of file diff --git a/projects/strkfarm/singleton.js b/projects/strkfarm/singleton.js deleted file mode 100644 index 6376b75cce6..00000000000 --- a/projects/strkfarm/singleton.js +++ /dev/null @@ -1,106 +0,0 @@ -const Singleton = [ - { - "name": "check_collateralization_unsafe", - "type": "function", - "inputs": [ - { - "name": "pool_id", - "type": "core::felt252" - }, - { - "name": "collateral_asset", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "debt_asset", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "user", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "(core::bool, core::integer::u256, core::integer::u256)" - } - ], - "state_mutability": "view" - }, - { - "name": "check_collateralization", - "type": "function", - "inputs": [ - { - "name": "pool_id", - "type": "core::felt252" - }, - { - "name": "collateral_asset", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "debt_asset", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "user", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "(core::bool, core::integer::u256, core::integer::u256)" - } - ], - "state_mutability": "external" - }, - { - "name": "position", - "type": "function", - "inputs": [ - { - "name": "pool_id", - "type": "core::felt252" - }, - { - "name": "collateral_asset", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "debt_asset", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "user", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "(core::integer::u256, core::integer::u256, core::integer::u256, core::integer::u256)" - } - ], - }, - { - "name": "vesu::data_model::Position", - "type": "struct", - "members": [ - { - "name": "collateral_shares", - "type": "core::integer::u256" - }, - { - "name": "nominal_debt", - "type": "core::integer::u256" - } - ] - }, - ] - - const SINGLETONabiMap = {} - Singleton.forEach(i => SINGLETONabiMap[i.name] = i) - - module.exports = { - SINGLETONabiMap - } \ No newline at end of file diff --git a/projects/strkfarm/utils.js b/projects/strkfarm/utils.js deleted file mode 100644 index 0c746748882..00000000000 --- a/projects/strkfarm/utils.js +++ /dev/null @@ -1,138 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -// todo: add beta strats by today -const STRATEGIES = { - "AutoCompounding": [{ // auto-compounds user tokens (e.g. STRK) by investing in zkLend - address: "0x00541681b9ad63dff1b35f79c78d8477f64857de29a27902f7298f7b620838ea", // STRK Auto-compounding - token: ADDRESSES.starknet.STRK - }, { - address: "0x016912b22d5696e95ffde888ede4bd69fbbc60c5f873082857a47c543172694f", // USDC Auto-compounding - token: ADDRESSES.starknet.USDC - }], - "Sensei": [{ // strategy using delta neutral looping across zklend and nostra protocols - address: "0x020d5fc4c9df4f943ebb36078e703369c04176ed00accf290e8295b659d2cea6", // STRK Sensei - token: ADDRESSES.starknet.STRK, - zToken: '0x06d8fa671ef84f791b7f601fa79fea8f6ceb70b5fa84189e3159d532162efc21' - }, { - address: "0x04937b58e05a3a2477402d1f74e66686f58a61a5070fcc6f694fb9a0b3bae422", - token: ADDRESSES.starknet.USDC, // USDC Sensei - zToken: '0x047ad51726d891f972e74e4ad858a261b43869f7126ce7436ee0b2529a98f486' - }, { - address: "0x9d23d9b1fa0db8c9d75a1df924c3820e594fc4ab1475695889286f3f6df250", - token: ADDRESSES.starknet.ETH, // ETH Sensei - zToken: '0x1b5bd713e72fdc5d63ffd83762f81297f6175a5e0a4771cdadbc1dd5fe72cb1' - }, { - address: "0x9140757f8fb5748379be582be39d6daf704cc3a0408882c0d57981a885eed9", - token: ADDRESSES.starknet.ETH, // ETH Sensei XL - zToken: '0x057146f6409deb4c9fa12866915dd952aa07c1eb2752e451d7f3b042086bdeb8' - }], - "xSTRKStrats": [{ - address: "0x7023a5cadc8a5db80e4f0fde6b330cbd3c17bbbf9cb145cbabd7bd5e6fb7b0b", - token: ADDRESSES.starknet.STRK, - xSTRK: ADDRESSES.starknet.XSTRK, - vesu: "0x000d8d6dfec4d33bfb6895de9f3852143a17c6f92fd2a21da3d6924d34870160" - }], - "FusionVaults": [{ - address: "0x07fb5bcb8525954a60fde4e8fb8220477696ce7117ef264775a1770e23571929", - token: ADDRESSES.starknet.STRK, // Fusion STRK - }, { - address: "0x5eaf5ee75231cecf79921ff8ded4b5ffe96be718bcb3daf206690ad1a9ad0ca", - token: ADDRESSES.starknet.ETH, // Fusion ETH - }, { - address: "0x00a858c97e9454f407d1bd7c57472fc8d8d8449a777c822b41d18e387816f29c", - token: ADDRESSES.starknet.USDC, // Fusion USDC - }, { - address: "0x0115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c", - token: ADDRESSES.starknet.USDT, // Fusion USDT - }], - "EkuboVaults": [{ - address: "0x01f083b98674bc21effee29ef443a00c7b9a500fd92cf30341a3da12c73f2324", - token1: ADDRESSES.starknet.STRK, - token2: ADDRESSES.starknet.XSTRK - }, { - address: "0x3a4f8debaf12af97bb911099bc011d63d6c208d4c5ba8e15d7f437785b0aaa2", - token1: ADDRESSES.starknet.USDT, - token2: ADDRESSES.starknet.USDC, - }, { - address: "0x160d8fa4569ef6a12e6bf47cb943d7b5ebba8a41a69a14c1d943050ba5ff947", - token1: ADDRESSES.starknet.USDC, - token2: ADDRESSES.starknet.ETH - }, { - address: "0x351b36d0d9d8b40010658825adeeddb1397436cd41acd0ff6c6e23aaa8b5b30", - token1: ADDRESSES.starknet.USDC, - token2: ADDRESSES.starknet.STRK, - }, { - address: "0x4ce3024b0ee879009112d7b0e073f8a87153dd35b029347d4247ffe48d28f51", - token1: ADDRESSES.starknet.ETH, - token2: ADDRESSES.starknet.STRK, - }, { - address: "0x2bcaef2eb7706875a5fdc6853dd961a0590f850bc3a031c59887189b5e84ba1", - token1: ADDRESSES.starknet.USDC, - token2: ADDRESSES.starknet.WBTC - }, { - address: "0x1c9232b8186d9317652f05055615f18a120c2ad9e5ee96c39e031c257fb945b", - token1: ADDRESSES.starknet.ETH, - token2: ADDRESSES.starknet.WBTC - }, { - address: "0x1248e385c23a929a015ec298a26560fa7745bbd6e41a886550e337b02714b1b", - token1: ADDRESSES.starknet.STRK, - token2: ADDRESSES.starknet.WBTC, - }], - "EkuboVaultsEndurBTC": [{ - address: "0x0785dc3dfc4e80ef2690a99512481e3ed3a5266180adda5a47e856245d68a4af", - token1: "0x04daa17763b286d1e59b97c283c0b8c949994c361e426a28f743c67bdfe9a32f", // tBTC - token2: "0x043a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91", // xtBTC - }, { - address: "0x002ea99b4971d3c277fa4a9b4beb7d4d7d169e683393a29eef263d5d57b4380a", - token1: ADDRESSES.starknet.WBTC, - token2: "0x06a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13", // xWBTC - }, { - address: "0x03af1c7faa7c464cf2c494e988972ad1939f1103dbfb6e47e9bf0c47e49b14ef", - token1: "0x0593e034DdA23eea82d2bA9a30960ED42CF4A01502Cc2351Dc9B9881F9931a68", // solvBTC - token2: "0x0580f3dC564a7B82f21d40d404b3842D490aE7205e6ac07B1b7Af2b4A5183dC9" // xsBTC - },{ - address: "0x0314c4653ab1aa01f5465773cb879f525d7e369a137bc3ae084761aee99a1712", - token1: "0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4", // LBTC - token2: "0x07dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0", // xLBTC - }], - "EvergreenVaults": [{ - address: "0x7e6498cf6a1bfc7e6fc89f1831865e2dacb9756def4ec4b031a9138788a3b5e", - token: ADDRESSES.starknet.USDC - }, { - address: "0x446c22d4d3f5cb52b4950ba832ba1df99464c6673a37c092b1d9622650dbd8", - token: ADDRESSES.starknet.ETH - }, { - address: "0x5a4c1651b913aa2ea7afd9024911603152a19058624c3e425405370d62bf80c", - token: ADDRESSES.starknet.WBTC - }, { - address: "0x1c4933d1880c6778585e597154eaca7b428579d72f3aae425ad2e4d26c6bb3", - token: ADDRESSES.starknet.USDT - }, { - address: "0x55d012f57e58c96e0a5c7ebbe55853989d01e6538b15a95e7178aca4af05c21", - token: ADDRESSES.starknet.STRK - }], - "HyperVaults": [{ - address: "0x046c7a54c82b1fe374353859f554a40b8bd31d3e30f742901579e7b57b1b5960", - token: ADDRESSES.starknet.STRK, - lst: ADDRESSES.starknet.XSTRK - },{ - address: "0x0047d5f68477e5637ce0e56436c6b5eee5a354e6828995dae106b11a48679328", - token: "0x04daa17763b286d1e59b97c283c0b8c949994c361e426a28f743c67bdfe9a32f", // tBTC - lst: "0x043a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91" // xtBTC - }, { - address: "0x02da9d0f96a46b453f55604313785dc866424240b1c6811d13bef594343db818", - token: ADDRESSES.starknet.WBTC, - lst: "0x06a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13" // xWBTC - }, { - address: "0x00437ef1e7d0f100b2e070b7a65cafec0b2be31b0290776da8b4112f5473d8d9", - token: "0x0593e034DdA23eea82d2bA9a30960ED42CF4A01502Cc2351Dc9B9881F9931a68", // solvBTC - lst: "0x0580f3dC564a7B82f21d40d404b3842D490aE7205e6ac07B1b7Af2b4A5183dC9" // xsBTC - }, { - address: "0x038e96a301428d204ab4553799aa386a0f14a5ef9b30a5830be1814e4fb8da1c", - token: "0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4", // LBTC - lst: "0x07dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0" // xLBTC - }] -} - -module.exports = { - STRATEGIES -} \ No newline at end of file diff --git a/projects/stronghold-staked-sol/index.js b/projects/stronghold-staked-sol/index.js deleted file mode 100644 index 026868b798f..00000000000 --- a/projects/stronghold-staked-sol/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('GZDX5JYXDzCEDL3kybhjN7PSixL4ams3M2G4CvWmMmm5', api) -} - -module.exports = { - timetravel: false, - solana: { tvl }, -}; \ No newline at end of file diff --git a/projects/struct-finance/constants.js b/projects/struct-finance/constants.js deleted file mode 100644 index dae95c58bd3..00000000000 --- a/projects/struct-finance/constants.js +++ /dev/null @@ -1,96 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const aptFarmAddress = "0x57FF9d1a7cf23fD1A9fd9DC07823F950a22a718C"; -const autoPoolABI = - "function previewAmounts(uint256 shares) external view returns (uint256 amountX, uint256 amountY)"; -const aptFarmABI = - "function userInfo(uint256 pid, address user) external view returns (uint256 amount, uint256 rewardDebt, uint256 unpaidRewards)"; - -const addresses = { - struct: { - gmx: { - yieldSource: "0x6aE12b0adF9716181c07D19dfe76442AB1b3817b", - factory: "0x46f8765781ac36e5e8f9937658fa311af9d735d7", - }, - tjap: { - yieldSourceAvaxUsdc: "0xdf9d9Bca881484574e719bd9d016B9AFD41a7e33", - yieldSourceAvaxBtcb: "0x736A826cF94dA966EE8ea924c5F0D079Bb25691d", - yieldSourceAvaxWeth: "0x3BAf708e49669d54753366Bec0e77f112CF76662", - yieldSourceEurcUsdc: "0xB35C3e0A1B889f6eC4e8e2bFFC8fE792FCF85884", - yieldSourceSavaxAvax: "0x8696F212D12FdFbfFD40209Fd926c3E45e62DA28", - yieldSourceWbtcBtcb: "0x63CC3EC54342acF18064772Dc2b267eCB83D64Ec", - factory: "0x269B0AA870f1257DE00fA7E786Fd07d46cE8d26b", - }, - }, - token: { - gmx: { - fsGlp: "0x9e295b5b976a184b14ad8cd72413ad846c299660", - }, - tjap: { - avaxUsdcAutovault: "0x32833a12ed3Fd5120429FB01564c98ce3C60FC1d", - avaxBtcbAutovault: "0x1C739A43606794849750C50bC7C43FBbDAcdf801", - avaxWetheAutovault: "0x6178dE6E552055862CF5c56310763EeC0145688d", - eurcUsdcAutovault: "0x052AF5B8aC73082D8c4C8202bB21F4531A51DC73", - savaxAvaxAutovault: "0xF812a978A08F370b9AB358a620377c0A261AA403", - wbtcBtcbAutovault: "0x856ea7383dE9C799cb07079Fb416Fc97Ca248300", - }, - }, -}; - -const autopoolsMetaData = { - [addresses.token.tjap.avaxUsdcAutovault]: { - farmId: 0, - yieldSource: addresses.struct.tjap.yieldSourceAvaxUsdc, - tokenX: ADDRESSES.avax.WAVAX, - tokenY: ADDRESSES.avax.USDC, - }, - [addresses.token.tjap.avaxBtcbAutovault]: { - farmId: 1, - yieldSource: addresses.struct.tjap.yieldSourceAvaxBtcb, - tokenX: ADDRESSES.avax.BTC_b, - tokenY: ADDRESSES.avax.WAVAX, - }, - [addresses.token.tjap.avaxWetheAutovault]: { - farmId: 2, - yieldSource: addresses.struct.tjap.yieldSourceAvaxWeth, - tokenX: ADDRESSES.avax.WETH_e, - tokenY: ADDRESSES.avax.WAVAX, - }, - [addresses.token.tjap.eurcUsdcAutovault]: { - farmId: 3, - yieldSource: addresses.struct.tjap.yieldSourceEurcUsdc, - tokenX: ADDRESSES.avax.EURC, - tokenY: ADDRESSES.avax.USDC, - }, - [addresses.token.tjap.savaxAvaxAutovault]: { - farmId: 4, - yieldSource: addresses.struct.tjap.yieldSourceSavaxAvax, - tokenX: ADDRESSES.avax.SAVAX, - tokenY: ADDRESSES.avax.WAVAX, - }, - [addresses.token.tjap.wbtcBtcbAutovault]: { - farmId: 5, - yieldSource: addresses.struct.tjap.yieldSourceWbtcBtcb, - tokenX: ADDRESSES.avax.WBTC_e, - tokenY: ADDRESSES.avax.BTC_b, - }, -}; - -const aptFarmUserInfoCalls = Object.values(autopoolsMetaData).map( - (value) => { - return { - target: aptFarmAddress, - params: [value.farmId, value.yieldSource], - abi: aptFarmABI, - }; - } -); - -module.exports = { - autoPoolABI, - autopoolsMetaData, - addresses, - aptFarmUserInfoCalls, - aptFarmAddress, - aptFarmABI, -}; diff --git a/projects/struct-finance/index.js b/projects/struct-finance/index.js deleted file mode 100644 index a60f5ee613e..00000000000 --- a/projects/struct-finance/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { sumAutoPoolTokenXY } = require("./utils"); -const { - addresses, - autoPoolABI, - aptFarmUserInfoCalls, - aptFarmAddress, - aptFarmABI -} = require("./constants"); - -async function tvl(api) { - const vaultsGmx = await api.fetchList({ lengthAbi: "totalProducts", itemAbi: "allProducts", target: addresses.struct.gmx.factory, }); - const vaultsTjap = await api.fetchList({ lengthAbi: "totalProducts", itemAbi: "allProducts", target: addresses.struct.tjap.factory, }); - - // call userInfo on APT farm, passing in the farm ID and the yield source address - // first value returned in the array is the amount of AP tokens staked by the yield source contract - const responsesFarmUserInfo = await api.multiCall({ - target: aptFarmAddress, - calls: aptFarmUserInfoCalls, - abi: aptFarmABI, - }); - - // then take the amount and pass it to previewAmounts on each respective TJAP Autovault contract, which will give - // back the amounts redeemable by the yield source in token X and token Y - const amountsXYCalls = Object.values(addresses.token.tjap).map( - (autovaultAddress, i) => { - return { - target: autovaultAddress, - params: responsesFarmUserInfo[i].amount, - }; - } - ); - - const responsesAmountsXY = await api.multiCall({ - calls: amountsXYCalls, - abi: autoPoolABI, - }) - - responsesAmountsXY.forEach((response, i) => { - sumAutoPoolTokenXY(api, response, amountsXYCalls[i].target) - }) - - vaultsGmx.push(addresses.struct.gmx.yieldSource); - - return sumTokens2({ - api, - owners: [vaultsTjap, vaultsGmx].flat(), - tokens: [ - ADDRESSES.avax.BTC_b, - ADDRESSES.avax.WBTC_e, - ADDRESSES.avax.USDC, - ADDRESSES.avax.WETH_e, - ADDRESSES.avax.EURC, - ADDRESSES.avax.WAVAX, - ADDRESSES.avax.SAVAX, - addresses.token.gmx.fsGlp, - ], - }); -} - -module.exports = { - avax: { - tvl, - }, -}; diff --git a/projects/struct-finance/utils.js b/projects/struct-finance/utils.js deleted file mode 100644 index 5e161a7f4f2..00000000000 --- a/projects/struct-finance/utils.js +++ /dev/null @@ -1,12 +0,0 @@ -const { autopoolsMetaData } = require("./constants"); - -function sumAutoPoolTokenXY(api, response, target) { - const { tokenX, tokenY } = autopoolsMetaData[target]; - const { amountX, amountY } = response; - api.add(tokenX, amountX); - api.add(tokenY, amountY); -} - -module.exports = { - sumAutoPoolTokenXY, -}; \ No newline at end of file diff --git a/projects/strudel.js b/projects/strudel.js deleted file mode 100644 index ff5a3d1f4ea..00000000000 --- a/projects/strudel.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - ethereum: { tvl: () => ({}) }, - deadFrom: "2022-02-31", -} diff --git a/projects/strxfinance/index.js b/projects/strxfinance/index.js deleted file mode 100644 index b9b07834a49..00000000000 --- a/projects/strxfinance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { - postURL -} = require('../helper/utils'); - -async function getCurrentStake() { - let postdata = { - "contract_address": "414b8a2c619bccb710206b3d11e28dce62d8d72a8b", - "owner_address": "4128fb7be6c95a27217e0e0bff42ca50cd9461cc9f", - "function_selector": "reservedTRX()", - "parameter": "", - "call_value": 0 - }; - let result = await postURL('https://api.trongrid.io/wallet/triggerconstantcontract', postdata); - let trx = parseInt(result.data.constant_result[0], 16) / 10 ** 6; - return trx; -} - -async function tvl() { - return { - "tron": await getCurrentStake() - } -} - -module.exports = { - tron: { - tvl, - }, -} diff --git a/projects/sturdy-v2/abi.json b/projects/sturdy-v2/abi.json deleted file mode 100644 index 88d708bbe37..00000000000 --- a/projects/sturdy-v2/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getStrategies": "function getStrategies() view returns (tuple(address deployedAt, address pair, tuple(address asset, string assetSymbol, uint256 assetDecimals, address collateral, string collateralSymbol, uint256 collateralDecimals, address rateContract, address oracle, uint256 depositLimit, uint64 ratePerSec, uint64 fullUtilizationRate, uint32 feeToProtocolRate, uint32 maxOacleDeviation, uint256 lowExchangeRate, uint256 highExchangeRate, uint256 maxLTV, uint256 protocolLiquidationFee, uint256 totalAsset, uint256 totalCollateral, uint256 totalBorrow, uint256 version) pairData)[])", - "getVaults": "function getVaults() view returns (tuple(address deployedAt, bool isShutdown, address asset, string assetSymbol, uint256 assetDecimals, string name, uint256 totalAssets, uint256 totalDebt)[])" - -} \ No newline at end of file diff --git a/projects/sturdy-v2/index.js b/projects/sturdy-v2/index.js deleted file mode 100644 index 91a86cff055..00000000000 --- a/projects/sturdy-v2/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const abi = require("./abi.json"); - -// DataProvider Addresses -const config = { - ethereum: '0x69764E3e0671747A7768A1C1AfB7C0C39868CC9e', - mode: '0xF0382A9Eca5276d7B4BbcC503e4159C046c120ec', - linea: "0xd67Da8636Ae87b0cECBDa2e66dB58d4839722B52", - optimism: "0x9dc7B2130e478C5810Dc0cDbD46B9D479b2e1aC4", - sei: "0x4534F53A81416a83F6bAF5ac63c94aEd1fea1303", - flow: "0x49b50F508091b57dAe0D072F21F5cC78d6d94903" -} - -module.exports = { - methodology: 'Gets the aggregators & strategies from the DataProvider contract and adds the asset amounts from each of them', -} - -Object.keys(config).forEach(chain => { - const dataProvider = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const aggregators = await api.call({target: dataProvider, abi: abi['getVaults'], }) - aggregators.forEach((aggregator) => api.add(aggregator.asset, (aggregator.totalAssets - aggregator.totalDebt))) - - const strategies = await api.call({ target: dataProvider, abi: abi['getStrategies'], }) - strategies.forEach((strategy) => api.add(strategy.pairData.asset, strategy.pairData.totalAsset)) - strategies.forEach((strategy) => api.add(strategy.pairData.collateral, strategy.pairData.totalCollateral)) - }, - borrowed: async (api) => { - const strategies = await api.call({ target: dataProvider, abi: abi['getStrategies'], }) - const pairs = strategies.map((strategy) => strategy.pair); - const assets = strategies.map((strategy) => strategy.pairData.asset); - const bals = await api.multiCall({ abi: 'function totalBorrow() view returns (uint128 amount, uint128 shares)', calls: pairs }) - bals.forEach((bal, i) => api.add(assets[i], bal.amount)) - } - } -}) diff --git a/projects/sturdy/index.js b/projects/sturdy/index.js deleted file mode 100644 index 93d067a165d..00000000000 --- a/projects/sturdy/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { aaveV2Export, methodology, } = require('../helper/aave'); -const { mergeExports, } = require('../helper/utils'); - -module.exports = mergeExports([ - { ethereum: aaveV2Export('0x9f72DC67ceC672bB99e3d02CbEA0a21536a2b657'), }, - { - ethereum: aaveV2Export('0xA422CA380bd70EeF876292839222159E41AAEe17'), - fantom: aaveV2Export('0x7ff2520cd7b76e8c49b5db51505b842d665f3e9a'), - methodology, - } -]) -// module.exports.hallmarks = [ -// ['2023-06-11', 'Protocol was hacked'], -// ] -module.exports.doublecounted = true - -module.exports.ethereum.borrowed = () => ({}) -module.exports.fantom.borrowed = () => ({}) -module.exports.deadFrom = '2024-04-29' diff --git a/projects/sturgeon/index.js b/projects/sturgeon/index.js deleted file mode 100644 index 519ae34d1d1..00000000000 --- a/projects/sturgeon/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const config = { - "real": { - controller: "0xE0E71B484Bb20E37d18Ab51fB60c32deC778478A", - }, -} - -Object.keys(config).forEach(chain => { - const { controller } = config[chain] - module.exports[chain] = { - tvl: async function (api) { - const compounderVaults = await api.call({ abi: 'address[]:compounderVaultsList', target: controller }) - const harvesterVaults = await api.call({ abi: 'address[]:harvesterVaultsList', target: controller }) - await api.erc4626Sum({ calls: compounderVaults, isOG4626: true }) - const tridents = await api.multiCall({ abi: 'address:asset', calls: harvesterVaults }) - const tridentBalances = await api.multiCall({ abi: 'uint256:totalAssets', calls: harvesterVaults }) - const token0s = await api.multiCall({ abi: 'address:token0', calls: tridents }) - const tokenBals = await api.multiCall({ abi: 'function getTotalAmounts() external view returns (uint total0, uint total1, uint128 liquidity)', calls: tridents }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: tridents }) - const totalSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: tridents }) - - tridents.forEach((_, i) => { - const ratio = tridentBalances[i] / totalSupplies[i] - api.add(token0s[i], tokenBals[i].total0 * ratio) - api.add(token1s[i], tokenBals[i].total1 * ratio) - }) - return sumTokens2({ api }) - }, - } -}) diff --git a/projects/subunit/index.js b/projects/subunit/index.js deleted file mode 100644 index 0464ee1d0f4..00000000000 --- a/projects/subunit/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const subVaultAddress = "0x1b745230a0320470a9af55BB0a67c47C90978A14"; -const usdcAddress = ADDRESSES.base.USDC; - -module.exports = { - methodology: "Calculates the TVL by summing the USDC balance held in the SubVault contract on Base.", - base: { - tvl: sumTokensExport({ owner: subVaultAddress, tokens: [usdcAddress], }), - }, -} \ No newline at end of file diff --git a/projects/subzero-plus/index.js b/projects/subzero-plus/index.js deleted file mode 100644 index 0631d9699df..00000000000 --- a/projects/subzero-plus/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { unknownTombs } = require("../helper/unknownTokens") - -const avaxZShare = "0xF5b1A0d66856CBF5627b0105714a7E8a89977349" -const avaxChef = "0xDAccfd92e37be54Ca1A8ff37A7922446614b4759" // ZShare reward pool -const avaxBoardroom = "0xa252FfDB3A73Bd0F88Eea39658c7C00a281B3bB6" -const avaxAbzero = "0xD9Ef0818432b87a17709b62D0cB78a3fEa57Cb00" - -const lps = [ - "0xD1D0340d80bee3c6f90116467a78dC3718121100", // SUB-AVAX LP - "0xbfE8B1f30035262903927F5BfD65319ef09B48B5", // ZSHARE-SUB LP - "0x763513C7e639A21D0a7d4A5ec60a6e7314Ed00C8", // ZSHARE-AVAX LP -] - -module.exports = unknownTombs({ - lps, - token: avaxAbzero, - shares: [avaxZShare,], - rewardPool: [avaxChef], - masonry: [avaxBoardroom], - chain: 'avax', - useDefaultCoreAssets: true, -}) diff --git a/projects/sudo-finance/index.js b/projects/sudo-finance/index.js deleted file mode 100644 index 8091f045c4a..00000000000 --- a/projects/sudo-finance/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const SLP_LIQUIDITY_POOL_VAULT = - "0x5e288c9acbb8746bb22f5d5c3af5e0ba6a7bf04fb276772c1035004f6ca98f37"; - -async function tvl(api) { - const slpDepositVaultFields = await sui.getDynamicFieldObjects({ - parent: SLP_LIQUIDITY_POOL_VAULT, - }); - - const slpDepositVaultIds = slpDepositVaultFields.map((item) => item.fields.id.id); - - const slpDepositVaults = await sui.getObjects(slpDepositVaultIds); - - slpDepositVaults.forEach(({ type, fields: { value: { fields }} }) => { - const splitPieces = type.split("<") - const coin = splitPieces[splitPieces.length - 1].replace(">>", "") - api.add(coin, fields.liquidity) - api.add(coin, fields.reserved_amount) - }); -} - -module.exports = { - timetravel: false, - methodology: 'counts the tokens in sudo liquidity pool', - sui: { - tvl, - }, -}; diff --git a/projects/sudoinu/index.js b/projects/sudoinu/index.js deleted file mode 100644 index 912e4c24a9b..00000000000 --- a/projects/sudoinu/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: 'ethereum', - masterchef: '0x32E9BB1E0E03fdaC8131De202Be2f55AceDB349f', - nativeTokens: ['0x93b743Fb12a2677adB13093f8eA8464A436DA008'], - useDefaultCoreAssets: true, - poolInfoABI: 'function poolToken(uint256) view returns (address)', - getToken: i => i -}) - diff --git a/projects/sudoswap-v2/index.js b/projects/sudoswap-v2/index.js deleted file mode 100644 index e5bcf06116e..00000000000 --- a/projects/sudoswap-v2/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -async function tvl(api) { - const { target, fromBlock } = config[api.chain] - const multicallAddy = '0xca11bde05977b3631167028862be2a173976ca11' - const logs1155 = await getLogs({ - target, fromBlock, api, onlyArgs: true, - topics: ['0x2966b6b401975e778520aec46cbefbe73799119a5670feda3e8f884c7c3ffb11'], - eventAbi: 'event NewERC1155Pair(address indexed pool, uint256 initialBalance)', - extraKey: 'erc1155', - }) - const logs721 = await getLogs({ - target, fromBlock, api, onlyArgs: true, - topics: ['0xe8e1cee58c33f242c87d563bbc00f2ac82eb90f10a252b0ba8498ae6c1dc241a'], - eventAbi: 'event NewERC721Pair(address indexed pool, uint256[] initialIds)', - extraKey: 'erc721', - }) - const pools = logs721.map(i => i.pool) - const allPools = [...logs1155, ...logs721].map(log => log.pool) - const nfts = await api.multiCall({ abi: 'address:nft', calls: pools }) - const ethBals = await api.multiCall({ abi: 'function getEthBalance(address) view returns (uint256)', calls: allPools, target: multicallAddy }) - ethBals.forEach(i => api.add(nullAddress, i)) - await sumTokens2({ api, tokensAndOwners2: [nfts, pools], permitFailure: true, sumChunkSize: 22 }) -} - -const config = { - ethereum: { target: '0xA020d57aB0448Ef74115c112D18a9C231CC86000', fromBlock: 17309203 }, - arbitrum: { target: '0x4f1627be4C72aEB9565D4c751550C4D262a96B51', fromBlock: 168473054 }, - base: { target: '0x605145d263482684590f630e9e581b21e4938eb8', fromBlock: 7529192 }, - sanko: { target: '0x5bfE2ef160EaaAa4aFa89A8fa09775b6580162c9', fromBlock: 5317 }, - berachain: { target: '0x910B26A51084578bAab25f49741cF0979Fc41cD6', fromBlock: 974070 }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/sudoswap/index.js b/projects/sudoswap/index.js deleted file mode 100644 index a2e2ddd95c6..00000000000 --- a/projects/sudoswap/index.js +++ /dev/null @@ -1,96 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { graphFetchById, } = require('../helper/cache') -const { ART_BLOCKS, sumArtBlocks } = require('../helper/nft') - -const query = ` -query get_pairs($lastId: String, $block: Int) { - pairs( - first: 1000 - block: { number: $block } - where: { - and: [ - {id_gt: $lastId} - { - or: [ - { numNfts_gt: 0 }, - { ethBalance_gt: 0 }, - ] - } - ] - } - ) { - id - ethBalance - collection { - id - } - spotPrice - numNfts - } -}` - -module.exports = { - methodology: 'Sum up all the ETH in pools and count whitelisted NFT values as well (price fetched from chainlink)', - ethereum: { - tvl: async (api) => { - const data = await graphFetchById({ - endpoint: sdk.graph.modifyEndpoint('5ZEPsiros7UhV5noPBHHkzy1rfSBFRP2d2ghHZHHCugd'), - query, - api, - options: { - useBlock: true, - safeBlockLimit: 500, - } - }) - const balances = {} - const artBlockOwners = [] - data.forEach(({ ethBalance, collection, numNfts, id }) => { - sdk.util.sumSingleBalance(balances, 'ethereum', ethBalance / 1e18) - const nft = collection.id.toLowerCase() - - if (+numNfts > 0) { - if (nft === ART_BLOCKS) { - artBlockOwners.push(id) - return; - } - sdk.util.sumSingleBalance(balances, nft, numNfts) - } - }) - - return sumArtBlocks({ api, owners: artBlockOwners, balances, }) - } - } -} - -/* -const { getLogs } = require('../helper/cache/getLogs') -const { getCache, setCache } = require('../helper/cache') -const { nullAddress, } = require('../helper/unwrapLPs') - -module.exports = { - methodology: 'Sum up all the ETH & nfts in pools', - ethereum: { - tvl: async (api) => { - const PairFactory = '0xb16c1342E617A5B6E4b631EB114483FDB289c0A4' - const logs = await getLogs({ - api, - target: PairFactory, - topics: ['0xf5bdc103c3e68a20d5f97d2d46792d3fdddfa4efeb6761f8141e6a7b936ca66c'], - eventAbi: 'event NewPair(address pool)', - onlyArgs: true, - fromBlock: 14645816, - }) - const pools = logs.map(i => i.pool) - const cache = await getCache('sudoswap-v1', api.chain) - if (!cache.pools) cache.nfts = [] - const missingPools = pools.slice(cache.nfts.length) - const missingNfts = await api.multiCall({ abi: 'address:nft', calls: missingPools}) - cache.nfts.push(...missingNfts) - - if (missingPools.length > 0) await setCache('sudoswap-v1', api.chain, cache) - await api.sumTokens({ owners: pools, tokens: [nullAddress]}) - return api.sumTokens({ tokensAndOwners2: [cache.nfts, pools], blacklistedTokens: ['0x08142348e6bbf233002b81047bc2f27026af10a5']}) - } - } -} -*/ \ No newline at end of file diff --git a/projects/sugarswap/index.js b/projects/sugarswap/index.js deleted file mode 100644 index 23df7132dc0..00000000000 --- a/projects/sugarswap/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, staking } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') -const uniTvl = getUniTVL({ factory: '0x1486397B3C0e6fEB8c483faD2F03E8c404cAEDe7', useDefaultCoreAssets: true }) -const masterchef = '0x45eecDADa0B58B0E78F94549F65FDAF447b35c17' -const sugar = '0xd3ccBF3867FF0204730173eB4cad3C4B5fd07c69' -const weth = ADDRESSES.arbitrum.WETH - -module.exports = { - hallmarks: [ - [1673827200, "Rug Pull"] - ], - misrepresentedTokens: true, - arbitrum: { - tvl: sdk.util.sumChainTvls([uniTvl, staking({ - owners: [masterchef], - tokens: [weth], - })]), - staking: staking({ - owners: [masterchef], - tokens: [sugar], - lps: ['0xD184aAbFc9De6B56994D1283ed4C132B70A73a14'], - useDefaultCoreAssets: true, - }) - } -}; \ No newline at end of file diff --git a/projects/sui-pearl/index.js b/projects/sui-pearl/index.js deleted file mode 100644 index 408ef42239f..00000000000 --- a/projects/sui-pearl/index.js +++ /dev/null @@ -1,222 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { default: BigNumber } = require("bignumber.js"); -const sui = require("../helper/chain/sui"); - -async function suiTVL(api) { - - //get list pool flowx - const listPoolFlowX = ( - await sui.getDynamicFieldObjects({ - parent: - "0xd15e209f5a250d6055c264975fee57ec09bf9d6acdda3b5f866f76023d1563e6", - }) - ).map((i) => i.fields.value.fields); - - //get list pool after match - const afterMathPools = await sui.queryEvents({ - eventType: - "0xefe170ec0be4d762196bedecd7a065816576198a6527c99282a2551aaa7da38c::events::CreatedPoolEvent", - transform: (i) => i.pool_id, - }); - const afterMathData = await sui.getObjects(afterMathPools); - - //get list pool suipearl - const poolDynamicField = await sui.getDynamicFieldObjects({ - parent: - "0xa58b809407a212793628a0aa2603611a12454d766ff47c1d76487ceec74204db", - }); - const listPoolObjectId = poolDynamicField.map((i) => i.fields.id.id); - const listPoolStaked = poolDynamicField.map( - (i) => i.fields.value.fields.total_token_staked - ); - - const poolDynamicType = (await sui.getObjects(listPoolObjectId)).map( - (i) => i.fields.value.fields.id.id - ); - - const listType = []; - for (const poolIndex in poolDynamicType) { - let poolInfo = await sui.getDynamicFieldObjects({ - parent: poolDynamicType[poolIndex], - }); - listType.push({ - type: poolInfo.find((item) => item.type.includes("CustodianDfKey")).fields - .value.type, - staked: listPoolStaked[poolIndex], - }); - } - - let totalResult = {}; - for (const suiPearlLpType of listType) { - if (suiPearlLpType.type.includes("::af_lp::AF_LP")) { - let result = afterMathTVL( - afterMathData, - suiPearlLpType.type, - suiPearlLpType.staked - ); - for (const property in result) { - setPropertyPriceMap(totalResult, property, result[property]); - } - } else if ( - suiPearlLpType.type.includes( - "0xba153169476e8c3114962261d1edc70de5ad9781b83cc617ecc8c1923191cae0::pair::LP" - ) - ) { - let result = flowxTVL( - listPoolFlowX, - suiPearlLpType.type, - suiPearlLpType.staked - ); - - for (const property in result) { - setPropertyPriceMap(totalResult, property, result[property]); - } - } - } - - //get faas flowx lock - const strategyDynamicFields = await sui.getDynamicFieldObjects({ - parent: - "0x25e1b7b9fc1b72d4911516574e720bea5920bed2973df5eabdb4af0af8d09c8e", - }); - - const lpMapSupply = {}; - for (const strategy of strategyDynamicFields) { - const lpDataType = strategy.fields.value.type - .split("<")[1] - .split(",") - .slice(0, 2); - lpMapSupply[lpDataType.join(",")] = - strategy.fields.value.fields.vault.fields.position.fields.amount; - } - - for (const flowxFaaSType in lpMapSupply) { - let result = flowxFaaSTVL( - listPoolFlowX, - flowxFaaSType, - lpMapSupply[flowxFaaSType] - ); - for (const property in result) { - setPropertyPriceMap(totalResult, property, result[property]); - } - } - - //get scallop lock - - let scallopPool = await sui.getObject( - "0xfe07bedaf312f86ed1fd38ca9eef213c6bb1236282bd2c7c72720231b0a676ca" - ); - - setPropertyPriceMap( - totalResult, - ADDRESSES.sui.SUI, - new BigNumber(scallopPool.fields.total_tvl) - ); - - for (const property in totalResult) { - api.add(property, totalResult[property].toFixed(0)); - } -} - -const afterMathTVL = (listPoolAftermath, suiPearlLpType, staked) => { - const coinMap = {}; - - const afterMathPoolInfo = listPoolAftermath.find((item) => - item.fields.lp_supply.type.includes( - suiPearlLpType - .replace( - "0xf794e590fb6a42aee87837631e6ff9c006397503d64a1d3f69bfb3938a118b9e::custodian::Custodian<", - "" - ) - .replace(">", "") - ) - ); - - const lpRate = new BigNumber(staked).div( - afterMathPoolInfo.fields.lp_supply.fields.value - ); - - for (const tokenTypeIndex in afterMathPoolInfo.fields.type_names) { - coinMap["0x" + afterMathPoolInfo.fields.type_names[tokenTypeIndex]] = lpRate - .multipliedBy( - afterMathPoolInfo.fields.normalized_balances[tokenTypeIndex] - ) - .dividedBy(afterMathPoolInfo.fields.decimal_scalars[tokenTypeIndex]); - } - - return coinMap; -}; - -const flowxTVL = (listPoolFlowX, suiPearlLpType, staked) => { - const flowxPoolInfo = listPoolFlowX.find((item) => - item.lp_supply.type.includes( - suiPearlLpType - .replace( - "0xf794e590fb6a42aee87837631e6ff9c006397503d64a1d3f69bfb3938a118b9e::custodian::Custodian<", - "" - ) - .replace(">>", "") - ) - ); - - const lpRate = new BigNumber(staked).div( - flowxPoolInfo.lp_supply.fields.value - ); - const amountX = lpRate.multipliedBy(flowxPoolInfo.reserve_x.fields.balance); - - const amountY = lpRate.multipliedBy(flowxPoolInfo.reserve_y.fields.balance); - - const coinX = flowxPoolInfo.reserve_x.type - .replace("0x2::coin::Coin<", "") - .replace(">", ""); - - const coinY = flowxPoolInfo.reserve_y.type - .replace("0x2::coin::Coin<", "") - .replace(">", ""); - - const coinMap = {}; - coinMap[coinX] = amountX; - coinMap[coinY] = amountY; - return coinMap; -}; - -const flowxFaaSTVL = (listPoolFlowX, flowFaaSType, staked) => { - const flowxPoolInfo = listPoolFlowX.find((item) => - item.lp_supply.type.includes(flowFaaSType) - ); - - const lpRate = new BigNumber(staked).div( - flowxPoolInfo.lp_supply.fields.value - ); - const amountX = lpRate.multipliedBy(flowxPoolInfo.reserve_x.fields.balance); - - const amountY = lpRate.multipliedBy(flowxPoolInfo.reserve_y.fields.balance); - - const coinX = flowxPoolInfo.reserve_x.type - .replace("0x2::coin::Coin<", "") - .replace(">", ""); - - const coinY = flowxPoolInfo.reserve_y.type - .replace("0x2::coin::Coin<", "") - .replace(">", ""); - - const coinMap = {}; - coinMap[coinX] = amountX; - coinMap[coinY] = amountY; - - return coinMap; -}; - -const setPropertyPriceMap = (totalResult, property, value) => { - if (totalResult[property]) { - totalResult[property] = totalResult[property].plus(value); - } else { - totalResult[property] = value; - } -}; - -module.exports = { - sui: { - tvl: suiTVL, - }, -}; diff --git a/projects/suibridge/index.js b/projects/suibridge/index.js deleted file mode 100644 index ba97a7bc162..00000000000 --- a/projects/suibridge/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: "0x312e67b47A2A29AE200184949093D92369F80B53", - fetchCoValentTokens: true, - permitFailure: true - }), - }, -}; \ No newline at end of file diff --git a/projects/suidollar/index.js b/projects/suidollar/index.js deleted file mode 100644 index 5802b948d0c..00000000000 --- a/projects/suidollar/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); - -const EVENT_TYPES = { - DEPOSIT: "0xe8087c2b86351ce15e8d72e83a39c5772c0b1d054015ae9671305e686cef5034::suidollar::Deposit", - WITHDRAW: "0xe8087c2b86351ce15e8d72e83a39c5772c0b1d054015ae9671305e686cef5034::suidollar::Withdraw" -}; - -async function getAllEvents(eventType) { - let hasMore = true; - let cursor = null; - let allEvents = []; - - while (hasMore) { - const events = await sui.queryEvents({ - eventType, - transform: i => i, - cursor, - limit: 50 - }); - - if (Array.isArray(events) && events.length > 0) { - allEvents = allEvents.concat(events); - } - - if (events.hasNextPage && events.nextCursor) { - cursor = events.nextCursor; - } else { - hasMore = false; - } - } - - return allEvents.map(event => eventType === EVENT_TYPES.DEPOSIT ? event.deposit_amount : event.amount) - .filter(amount => amount !== undefined); -} - -async function tvl(api) { - const deposits = await getAllEvents(EVENT_TYPES.DEPOSIT); - const withdraws = await getAllEvents(EVENT_TYPES.WITHDRAW); - - let totalBalance = 0n; - - deposits.forEach(amount => amount && (totalBalance += BigInt(amount))); - withdraws.forEach(amount => amount && (totalBalance -= BigInt(amount))); - - api.add(ADDRESSES.sui.USDC_CIRCLE, totalBalance); - - return api.getBalances(); -} - -module.exports = { - timetravel: false, - sui: { - tvl - }, - methodology: "Calculates TVL by tracking deposit and withdrawal events" -} \ No newline at end of file diff --git a/projects/suilend/index.js b/projects/suilend/index.js deleted file mode 100644 index 6a57dddf1fb..00000000000 --- a/projects/suilend/index.js +++ /dev/null @@ -1,68 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui"); - -const SUILEND_LENDING_MARKET_ID = "0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1"; -const LST_CREATE_EVENT_TYPE = '0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::events::Event<0xb0575765166030556a6eafd3b1b970eba8183ff748860680245b9edd41c716e7::liquid_staking::CreateEvent>'; -const SUI_COIN_TYPE = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI' -const SPRINGSUI_COIN_TYPE = '0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI'; - -async function tvl(api) { - const redemptionRates = await getRedemtionRates() - const object = await sui.getObject(SUILEND_LENDING_MARKET_ID) - - for (const reserve of object.fields.reserves) { - const coinType = '0x' + reserve.fields.coin_type.fields.name; - if (redemptionRates[coinType]) { - api.add(SUI_COIN_TYPE, redemptionRates[coinType] * reserve.fields.available_amount) - } else { - api.add(coinType, reserve.fields.available_amount) - } - } -} - -async function borrowed(api) { - const redemptionRates = await getRedemtionRates() - const object = await sui.getObject(SUILEND_LENDING_MARKET_ID) - for (const reserve of object.fields.reserves) { - const coinType = '0x' + reserve.fields.coin_type.fields.name; - if (redemptionRates[coinType]) { - api.add(SUI_COIN_TYPE, redemptionRates[coinType] * reserve.fields.borrowed_amount.fields.value / 1e18) - } else { - api.add(coinType, reserve.fields.borrowed_amount.fields.value / 1e18) - } - } -} - - -async function getRedemtionRates() { - const events = (await sui.queryEvents({ - eventType: LST_CREATE_EVENT_TYPE, - })) - const coinTypeToRate = {}; - for (const event of events) { - const coinType = '0x' + event.event.typename.name; - if (coinType === SPRINGSUI_COIN_TYPE) { - continue; - } - try { - const poolId = event.event.liquid_staking_info_id; - const data = await sui.getObject(poolId) - const totalSupply = parseInt(data.fields.lst_treasury_cap.fields.total_supply.fields.value) - const stakedSui = parseInt(data.fields.storage.fields.total_sui_supply); - coinTypeToRate[coinType] = stakedSui / totalSupply; - } catch(e) { - continue - } - } - return coinTypeToRate; -} - - - -module.exports = { - timetravel: false, - sui: { - tvl: tvl, - borrowed: borrowed, - }, -} \ No newline at end of file diff --git a/projects/suimarket/index.js b/projects/suimarket/index.js deleted file mode 100644 index 956977006a6..00000000000 --- a/projects/suimarket/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { queryEventsByType, getObjects, } = require('../helper/chain/sui') - -async function tvl(api) { - const eventType = '0xb61e324fa43746f5c24b2db3362afb382b644b32bce39a53f1f796a0109828e0::suimarket::EventCreated' - let events = await queryEventsByType({ eventType, transform: i => i.event_id }) - events = await getObjects(events) - - events.forEach(object => { - const coin = object.type.split('<')[1].replace('>', '') - const amount = object.fields.total_base_coin - api.add(coin, amount) - }) -} - -module.exports = { - // deadFrom: '2025-04-01', - timetravel: false, - sui: { - tvl - }, -} diff --git a/projects/suirewardsme/index.js b/projects/suirewardsme/index.js deleted file mode 100644 index 14356e1632f..00000000000 --- a/projects/suirewardsme/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const sui = require("../helper/chain/sui"); - -async function suiTVL(api) { - const factoryId = "0x57ecad13fb5c117a23b6e02399d3f0e539583dff324cb63761537091fe313d3d"; - - const factory = await sui.getObject(factoryId); - const poolsTableId = factory.fields.pools.fields.id.id; - - const poolEntries = await sui.getDynamicFieldObjects({ parent: poolsTableId }); - const poolObjectIds = poolEntries.map((entry) => entry.fields.value); - const poolObjects = await sui.getObjects(poolObjectIds); - - for (const pool of poolObjects) { - const fields = pool.fields; - - const balanceA = fields.balance_a; - const balanceB = fields.balance_b; - - if (!balanceA || !balanceB) continue; - if (balanceA === "0" && balanceB === "0") continue; - - const coinA = pool.type.split("Pool<")[1].split(",")[0].trim(); - const coinB = pool.type.split(",")[1].replace(">", "").trim(); - - api.add(coinA, balanceA); - api.add(coinB, balanceB); - } -} - -module.exports = { - timetravel: false, - sui: { - tvl: suiTVL, - }, -}; diff --git a/projects/sumer/index.js b/projects/sumer/index.js deleted file mode 100644 index bf5756be167..00000000000 --- a/projects/sumer/index.js +++ /dev/null @@ -1,86 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - meter: compoundExports2({ - comptroller: '0xcB4cdDA50C1B6B0E33F544c98420722093B7Aa88', - blacklistedTokens: [ - '0x755A39999FE536Ec327Cb84110383BFc30fd0F4D', // suUSD - '0x21c4123f62CA28c9ceF3dDd1c8ae71EE9a5003aE', // suETH - ] - }), - base: compoundExports2({ - comptroller: '0x611375907733D9576907E125Fb29704712F0BAfA', - blacklistedTokens: [ - '0xa1aD8481e83a5b279D97ab371bCcd5AE3b446EA6', // suUSD - '0x56048C88309CAF13A942d688bfB9654432910d6e', // suETH - ] - }), - arbitrum: compoundExports2({ - comptroller: '0xBfb69860C91A22A2287df1Ff3Cdf0476c5aab24A', - blacklistedTokens: [ - '0xe4B55045ed14815c7c42eeeF8EE431b89422c389', // suUSD - '0x9C93423939C4e3D48d99baD147AD808BE89B2043', // suETH - '0xAc6bAF36B28d19EA10959102158Beb3d933C1fbf', // suBTC - ] - }), - ethereum: compoundExports2({ - comptroller: '0x60A4570bE892fb41280eDFE9DB75e1a62C70456F', - blacklistedTokens: [ - '0x2509bd3B69440D39238b464d09f9F04A61fd62C6', // suUSD - '0x4342e9bf67F89dea0Cf3c906F5113Dd8b588aC6F', // suETH - '0x77CcA710E21A94B94a26A98eA23027D64e36B9d4', // suBTC - ] - }), - zklink: compoundExports2({ - comptroller: '0xe6099D924efEf37845867D45E3362731EaF8A98D', - blacklistedTokens: [ - '0x0Cf1cC35e296931061c263826B5f62DC04ac1C6B', // suBTC - ] - }), - bsquared: compoundExports2({ - comptroller: '0xdD9C863197df28f47721107f94eb031b548B5e48', - blacklistedTokens: [ - '0x8C38b023Afe895296e2598AE111752223185b35c', // suUSD - '0xb1FdC3f660b0953253141B2509c43014d5d3d733', // suBTC - ] - }), - core: compoundExports2({ - comptroller: '0x7f5a7aE2688A7ba6a9B36141335044c058a08b3E', - blacklistedTokens: [ - '0xaAC83D5E45A2f67f2bFd1B804776EFa7DAF6cbF6', // suUSD - '0xaE6388F58b5b35D5B2eEC828C9633E7D245FEf62', // suBTC - ] - }), - bsc: compoundExports2({ - comptroller: '0x15B5220024c3242F7D61177D6ff715cfac4909eD', - blacklistedTokens: [] - }), - berachain: compoundExports2({ - comptroller: '0x16C7d1F9EA48F7DE5E8bc3165A04E8340Da574fA', - blacklistedTokens: [ - '0x163cEbBD83A4e2821fF06C9b0707A8A64FEc0AbC', // suUSD - '0xA6ae238D9CaF65DFA67670FDE3156EFeE9334488', // suBTC - ] - }), - hemi: compoundExports2({ - comptroller: '0xB2fF02eEF85DC4eaE95Ab32AA887E0cC69DF8d8E', - blacklistedTokens: [ - '0x8C38b023Afe895296e2598AE111752223185b35c', // suUSD - '0xb1FdC3f660b0953253141B2509c43014d5d3d733', // suETH - '0xc7fFEAa5949d50A408bD92DdB0D1EAcef3F8a3Bc', // suBTC - ] - }), - btr: compoundExports2({ - comptroller: '0xAbcdc5827f92525F56004540459045Ec3e432ebF', - blacklistedTokens: [ - '0x1fbDb3b715c82DCD52BCF06fcc18819951aa9264', // suBTC - ] - }), - goat:compoundExports2({ - comptroller: '0x98Ec4C9605D69083089eCAf353037b40017b758e', - blacklistedTokens: [ - '0xAbcdc5827f92525F56004540459045Ec3e432ebF', // suBTC - '0x7465fedB29023d11effe8C74E82A7ecEBf15E947', // suETH - ] - }) -} \ No newline at end of file diff --git a/projects/summer-fi/automation-v1.js b/projects/summer-fi/automation-v1.js deleted file mode 100644 index bef3b533f1b..00000000000 --- a/projects/summer-fi/automation-v1.js +++ /dev/null @@ -1,111 +0,0 @@ -const { sliceIntoChunks } = require("@defillama/sdk/build/util/index.js"); - -const { abi, contracts, logsTopic, creationBlocks } = require("./constants"); -const { cachedCalls } = require("./cache"); - -const { getLogs } = require("../helper/cache/getLogs"); -const { getDecimalsData } = require("./helpers"); - -const getCdpData = async (cdpIds, api) => { - const res = []; - const chunks = sliceIntoChunks(cdpIds, 100); - for (const chunk of chunks) - res.push( - ...(await api.multiCall({ - abi: abi.maker.getVaultInfo, - target: contracts.ethereum.McdMonitorV2, - calls: chunk.map((i) => ({ params: i })), - })) - ); - - return res; -}; - -const getCdpManagerData = async (cdpIds, api) => { - return cachedCalls({ - items: cdpIds, - multiCall: async (calls) => - api.multiCall({ - abi: abi.maker.ilks, - target: contracts.ethereum.CdpManager, - calls, - }), - key: "getCdpManagerData", - }); -}; - -const getIlkRegistryData = async (ilks, api) => { - return cachedCalls({ - items: ilks, - multiCall: async (calls) => - api.multiCall({ - abi: abi.maker.info, - target: contracts.ethereum.IlkRegistry, - calls, - }), - key: "getIlkRegistryData", - }); -}; - -const getAutomationV1Data = async ({ api }) => { - const cdpIdList = new Map(); - if (api.chain !== "ethereum") return cdpIdList; - const [triggerAddedEvents, triggerRemovedEvents] = await Promise.all( - Object.keys(logsTopic.automationBotV1).map((key) => - getLogs({ - api, - fromBlock: creationBlocks.ethereum.AutomationV1Contract, - target: contracts.ethereum.AutomationV1Contract, - eventAbi: abi.automationBotV1[key], - extraKey: `${api.chain}-${key}V1`, - onlyArgs: true, - }) - ) - ); - const triggerEvents = [ - ...triggerAddedEvents.map((event) => ({ - cdp: event.cdpId.toString(), - trigger: event.triggerId.toString(), - action: "triggerAdded", - })), - ...triggerRemovedEvents.map((event) => ({ - cdp: event.cdpId.toString(), - trigger: event.triggerId.toString(), - action: "triggerRemoved", - })), - ].sort((a, b) => a.trigger - b.trigger); - - triggerEvents.forEach(({ cdp, action }) => { - if (action === "triggerAdded") { - cdpIdList.set(cdp, cdp); - } else if (action === "triggerRemoved") { - cdpIdList.delete(cdp); - } - }); - - return Array.from(cdpIdList.values()); -}; - -const automationV1Tvl = async ({ api, automationV1Data }) => { - const cdpIds = [...automationV1Data]; - if (cdpIds.length === 0) return; - const ilkNames = await getCdpManagerData(cdpIds, api); - const cdpIlkIds = {}; - ilkNames.forEach((val, idx) => (cdpIlkIds[cdpIds[idx]] = val)); - const ilkIds = [...new Set(ilkNames)]; - const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i[4]); - const decimals = await getDecimalsData(tokens, api); - const collData = await getCdpData( - cdpIds.map((i) => [i, cdpIlkIds[i]]), - api - ); - collData.forEach(({ collateralLocked }, i) => { - const idx = ilkIds.indexOf(ilkNames[i]); - api.add(tokens[idx], collateralLocked / 10 ** (18 - decimals[idx])); - }); -}; - -module.exports = { - getAutomationV1Data, - automationV1Tvl, -}; diff --git a/projects/summer-fi/automation-v2.js b/projects/summer-fi/automation-v2.js deleted file mode 100644 index 7ad926cd62c..00000000000 --- a/projects/summer-fi/automation-v2.js +++ /dev/null @@ -1,239 +0,0 @@ -const { - abi, - contracts, - aaveTriggerTypes, - sparkTriggerTypes, - morphoTriggerTypes, - logsTopic, - creationBlocks, -} = require("./constants"); - -const { getLogs } = require("../helper/cache/getLogs"); -const { ethers } = require("ethers"); -const { getDecimalsData } = require("./helpers"); - -const decoder = ethers.AbiCoder.defaultAbiCoder(); - -const getTriggerData = (trigger) => { - const [_positionAddress, triggerType] = decoder.decode( - [ - "address", // position address - "uint16", // trigger type - ], - trigger.triggerData - ); - - const isMorpho = morphoTriggerTypes.includes(triggerType); - const decoderFields = [ - "address", // position address - "uint16", // trigger type - "uint256", // maxCoverage (not used) - "address", // debt token - "address", // collateral token - "bytes32", // operation name (not used) - ]; - if (isMorpho) { - decoderFields.push("bytes32"); // pool id (in morpho) - } - const [ - positionAddress, // position address (DPM) - _triggerType, // trigger type (mapped above) - _maxCoverage, // maxCoverage (not used) - debtTokenAddress, // debt token - collateralTokenAddress, // collateral token - _operationName, // operation name (not used) - poolId, // pool id (in morpho) - ] = decoder.decode(decoderFields, trigger.triggerData); - return { - positionAddress, - triggerType, - debtTokenAddress, - collateralTokenAddress, - poolId, - }; -}; - -const getAaveLikePositionCollateralCall = ({ - positionAddress, - collateralTokenAddress, -}) => { - return { - params: [collateralTokenAddress, positionAddress], - }; -}; - -const getMorphoPositionCollateralCall = ({ - positionAddress, - poolId, - collateralTokenAddress, -}) => { - return { - collateralTokenAddress, - params: [poolId, positionAddress], - }; -}; - -const getAutomationV2Data = async ({ api }) => { - const triggersMap = new Map(); - const [triggerAddedEvents, triggerRemovedEvents] = await Promise.all( - Object.keys(logsTopic.automationBotV2).map((key) => - getLogs({ - api, - fromBlock: creationBlocks[api.chain].AutomationV2Contract, - target: contracts[api.chain].AutomationBotV2, - eventAbi: abi.automationBotV2[key], - extraKey: `${api.chain}-${key}V2`, - onlyArgs: true, - }) - ) - ); - const triggerEvents = [ - ...triggerAddedEvents.map((event) => ({ - triggerData: event.triggerData, - triggerId: event.triggerId.toString(), - action: "triggerAdded", - })), - ...triggerRemovedEvents.map((event) => ({ - triggerData: event.triggerData, - triggerId: event.triggerId.toString(), - action: "triggerRemoved", - })), - ].sort((a, b) => a.triggerId - b.triggerId); - - triggerEvents.forEach(({ triggerData, action, triggerId }) => { - if (action === "triggerAdded") { - triggersMap.set(triggerId, { triggerData, action, triggerId }); - } else if (action === "triggerRemoved") { - triggersMap.delete(triggerId); - } - }); - - const triggersData = Array.from(triggersMap.values(), getTriggerData); - const finalTriggersData = new Map(); // Use a Map to ensure uniqueness - triggersData.forEach((trigger) => { - const { positionAddress, triggerType } = trigger; - const protocolName = (() => { - if (aaveTriggerTypes.includes(triggerType)) return "Aave"; - if (sparkTriggerTypes.includes(triggerType)) return "Spark"; - if (morphoTriggerTypes.includes(triggerType)) return "Morpho"; - return false; - })(); - if (!protocolName) return; - const key = `${api.chain}-${positionAddress}-${protocolName}`; - - if (!finalTriggersData.has(key)) { - finalTriggersData.set(key, trigger); - } - }); - return Array.from(finalTriggersData.values()); -}; - -const automationV2Tvl = async ({ api, automationV2Data }) => { - const aaveCalls = []; - const sparkCalls = []; - const morphoCalls = []; - const tokens = new Set(); - automationV2Data.forEach( - ({ positionAddress, triggerType, collateralTokenAddress, poolId }) => { - if (aaveTriggerTypes.includes(triggerType)) { - aaveCalls.push( - getAaveLikePositionCollateralCall({ - positionAddress, - collateralTokenAddress, - }) - ); - if (!tokens.has(collateralTokenAddress)) { - tokens.add(collateralTokenAddress); - } - } - if (sparkTriggerTypes.includes(triggerType)) { - sparkCalls.push( - getAaveLikePositionCollateralCall({ - positionAddress, - collateralTokenAddress, - }) - ); - if (!tokens.has(collateralTokenAddress)) { - tokens.add(collateralTokenAddress); - } - } - if (morphoTriggerTypes.includes(triggerType)) { - morphoCalls.push( - getMorphoPositionCollateralCall({ - positionAddress, - poolId, - collateralTokenAddress, - }) - ); - if (!tokens.has(collateralTokenAddress)) { - tokens.add(collateralTokenAddress); - } - } - } - ); - - const [ - aaveCollateralData, - sparkCollateralData, - morphoCollateralData, - decimals, - ] = await Promise.all([ - api.multiCall({ - abi: abi.aaveLike.getUserReserveData, - target: contracts[api.chain].AaveProtocolDataProvider, - calls: aaveCalls, - }), - api.multiCall({ - abi: abi.aaveLike.getUserReserveData, - target: contracts[api.chain].SparkProtocolDataProvider, - calls: sparkCalls, - }), - api.multiCall({ - abi: abi.morpho.MorphoBluePosition, - target: contracts[api.chain].MorphoBlue, - calls: morphoCalls.map((call) => ({ - // re-mapped because im saving the collateral token in morphoCalls for later - params: [call.params[0], call.params[1]], - })), - }), - getDecimalsData(tokens, api), - ]); - - aaveCollateralData.forEach((aaveData, aaveDataIndex) => { - const collateralAmount = aaveData[0]; // currentATokenBalance - if (collateralAmount > 0) { - const collateralTokenAddress = aaveCalls[aaveDataIndex].params[0]; - api.add( - collateralTokenAddress, - collateralAmount / 10 ** (18 - decimals[collateralTokenAddress]) - ); - } - }); - sparkCollateralData.forEach((sparkData, sparkDataIndex) => { - const collateralAmount = sparkData[0]; // currentATokenBalance - if (collateralAmount > 0) { - const collateralTokenAddress = sparkCalls[sparkDataIndex].params[0]; - api.add( - collateralTokenAddress, - collateralAmount / 10 ** (18 - decimals[collateralTokenAddress]) - ); - } - }); - - morphoCollateralData.forEach((morphoData, morphoDataIndex) => { - const collateralAmount = morphoData[2]; // collateral - if (collateralAmount > 0) { - const collateralTokenAddress = - morphoCalls[morphoDataIndex].collateralTokenAddress; // saved in morphoCalls - api.add( - collateralTokenAddress, - collateralAmount / 10 ** (18 - decimals[collateralTokenAddress]) - ); - } - }); -}; - -module.exports = { - getAutomationV2Data, - automationV2Tvl, -}; diff --git a/projects/summer-fi/cache.js b/projects/summer-fi/cache.js deleted file mode 100644 index a879089a006..00000000000 --- a/projects/summer-fi/cache.js +++ /dev/null @@ -1,36 +0,0 @@ -const sdk = require("@defillama/sdk"); - -let cache = {}; -function setCallCache(_cache) { - cache = _cache; -} - -async function cachedCalls({ items, multiCall, key }) { - if (!cache[key]) cache[key] = {}; - const res = []; - const missingIds = []; - const missingIndices = []; - items.forEach((id, i) => { - if (cache[key][id]) res[i] = cache[key][id]; - else { - missingIds.push(id); - missingIndices.push(i); - } - }); - - if (missingIds.length) { - sdk.log("Missing ids", missingIds.length, "key", key); - const tempRes = await multiCall(missingIds); - missingIds.forEach((id, i) => { - res[missingIndices[i]] = tempRes[i]; - cache[key][id] = tempRes[i]; - }); - } - return res; -} - -module.exports = { - setCallCache, - cachedCalls, - cache, -}; diff --git a/projects/summer-fi/constants.js b/projects/summer-fi/constants.js deleted file mode 100644 index 68b48bcbf2d..00000000000 --- a/projects/summer-fi/constants.js +++ /dev/null @@ -1,126 +0,0 @@ -const abi = { - automationBotV1: { - TriggerAdded: - "event TriggerAdded(uint256 indexed triggerId, address indexed commandAddress, uint256 indexed cdpId, bytes triggerData)", - TriggerRemoved: - "event TriggerRemoved(uint256 indexed cdpId, uint256 indexed triggerId)", - }, - maker: { - getOwner: - "function getOwner ( uint256 _cdpId ) external view returns ( address )", - getVaultInfo: - "function getCdpInfo(uint256 vaultId,bytes32) view returns (uint256 collateralLocked, uint256)", - ilks: "function ilks(uint256) view returns (bytes32)", - info: "function info(bytes32 ilk) view returns (string name, string symbol, uint256 class, uint256 dec, address gem, address pip, address join, address xlip)", - }, - automationBotV2: { - TriggerAdded: - "event TriggerAdded(uint256 indexed triggerId, address indexed commandAddress, bool continuous, uint256 triggerType, bytes triggerData)", - TriggerRemoved: "event TriggerRemoved(uint256 indexed triggerId)", - }, - aaveLike: { - // aave/spark - getUserReserveData: - "function getUserReserveData ( address asset, address user ) external view returns ( uint256 currentATokenBalance, uint256 currentStableDebt, uint256 currentVariableDebt, uint256 principalStableDebt, uint256 scaledVariableDebt, uint256 stableBorrowRate, uint256 liquidityRate, uint40 stableRateLastUpdated, bool usageAsCollateralEnabled )", - }, - morpho: { - MorphoBluePosition: - "function position ( bytes32, address ) external view returns ( uint256 supplyShares, uint128 borrowShares, uint128 collateral )", - }, -}; - -const logsTopic = { - automationBotV1: { - TriggerAdded: - "0xcb616360dd177f28577e33576c8ac7ffcc1008cba7ac2323e0b2f170faf60bd2", - TriggerRemoved: - "0xb4a1fc324bd863f8cd42582bebf2ce7f2d309c6a84bf371f28e069f95a4fa9e1", - }, - automationBotV2: { - TriggerAdded: - "0x1b5e88d5103127ddf4ea702813b5961c204a11865735302ab58bc7708198037e", - TriggerRemoved: - "0x89103ac4e3656b0071f9ed259dd79d305afcee547f3105f30587f094300c3bc2", - }, -}; - -const creationBlocks = { - ethereum: { - AutomationV1Contract: 14583413, - AutomationV2Contract: 17229847, - }, - base: { - AutomationV2Contract: 9654043, - }, - arbitrum: { - AutomationV2Contract: 176672891, - }, - optimism: { - AutomationV2Contract: 115593245, - }, -}; - -const contracts = { - ethereum: { - // maker - AutomationV1Contract: "0x6E87a7A0A03E51A741075fDf4D1FCce39a4Df01b", - McdMonitorV2: "0xa59d5E94BFE605A9a4aC7e02f5380e02061c8dd2", - CdpManager: "0x5ef30b9986345249bc32d8928b7ee64de9435e39", - IlkRegistry: "0x5a464c28d19848f44199d003bef5ecc87d090f87", - // automation - AutomationBotV2: "0x5743b5606e94fb534a31e1cefb3242c8a9422e5e", - // protocols - AaveProtocolDataProvider: "0x497a1994c46d4f6C864904A9f1fac6328Cb7C8a6", - SparkProtocolDataProvider: "0xFc21d6d146E6086B8359705C8b28512a983db0cb", - MorphoBlue: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", - }, - base: { - AaveProtocolDataProvider: "0xC4Fcf9893072d61Cc2899C0054877Cb752587981", - AutomationBotV2: "0x96D494b4544Bb7c3CB687ef7a9886Ed469e01ed8", - MorphoBlue: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", - }, - arbitrum: { - AaveProtocolDataProvider: "0x14496b405D62c24F91f04Cda1c69Dc526D56fDE5", - AutomationBotV2: "0xE018AeA83728a037D8B6f76cCA0E8331cDAb937a", - }, - optimism: { - AaveProtocolDataProvider: "0x14496b405D62c24F91f04Cda1c69Dc526D56fDE5", - AutomationBotV2: "0xb2e2a088d9705cd412CE6BF94e765743Ec26b1e4", - }, -}; - -const aaveTriggerTypes = [ - 111n, - 112n, - 121n, - 122n, - 133n, - 127n, - 128n, - 10006n, - 123n, - 124n, -]; -const sparkTriggerTypes = [ - 131n, - 132n, - 134n, - 129n, - 130n, - 10007n, - 125n, - 126n, - 117n, - 118n, -]; -const morphoTriggerTypes = [139n, 140n, 141n, 142n, 10009n]; - -module.exports = { - abi, - logsTopic, - creationBlocks, - contracts, - aaveTriggerTypes, - sparkTriggerTypes, - morphoTriggerTypes, -}; diff --git a/projects/summer-fi/helpers.js b/projects/summer-fi/helpers.js deleted file mode 100644 index 17184f1d483..00000000000 --- a/projects/summer-fi/helpers.js +++ /dev/null @@ -1,17 +0,0 @@ -const { cachedCalls } = require("./cache"); - -const getDecimalsData = async (tokens, api) => { - return cachedCalls({ - items: tokens, - multiCall: async (calls) => - api.multiCall({ - abi: "erc20:decimals", - calls, - }), - key: "getDecimalsData", - }); -}; - -module.exports = { - getDecimalsData, -}; diff --git a/projects/summer-fi/index.js b/projects/summer-fi/index.js deleted file mode 100644 index 0d80128a296..00000000000 --- a/projects/summer-fi/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const { getCache, setCache } = require("../helper/cache"); -const { setCallCache } = require("./cache"); -const { automationV1Tvl, getAutomationV1Data } = require("./automation-v1"); -const { automationV2Tvl, getAutomationV2Data } = require("./automation-v2"); - -async function getAutomationTvl(api) { - await api.getBlock(); - const executionStart = Date.now() / 1000; - const [automationV1Data, automationV2Data, cache] = await Promise.all([ - getAutomationV1Data({ api }), - getAutomationV2Data({ api }), - getCache("summer-fi/cache", api.chain), - ]); - - setCallCache(cache); - - await Promise.all([ - automationV1Tvl({ api, automationV1Data }), - automationV2Tvl({ api, automationV2Data }), - ]); - - await setCache("summer-fi/cache", api.chain, cache); - sdk.log("Execution time", Date.now() / 1000 - executionStart, "seconds"); -} - -module.exports = { - doublecounted: true, - methodology: - "Summer.fi Pro TVL is calculated by fetching onchain data, retrieving Vault IDs, and using them to determine locked collateral authorised for use within the Summer Automation contracts.", - ethereum: { tvl: getAutomationTvl }, - base: { tvl: getAutomationTvl }, - arbitrum: { tvl: getAutomationTvl }, - optimism: { tvl: getAutomationTvl }, -}; diff --git a/projects/summitdefi/index.js b/projects/summitdefi/index.js deleted file mode 100644 index e9aa08a5c29..00000000000 --- a/projects/summitdefi/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const abi = { - "getPools": "address[]:getPools", - "tokensWithAllocation": "address[]:tokensWithAllocation", - "supply": "function supply(address _token) view returns (uint256)", - "getVault": "address:getVault", - "getPoolId": "function getPoolId() view returns (bytes32)", - "getPoolTokens": "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)" -} -const { staking } = require('../helper/staking'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const summit = "0x0ddb88e14494546d07fcd94c3f0ef6d3296b1cd7"; -const everest = "0xc687806cfd11b5330d7c3ae6f18b18dc71e1083e"; -const cartoasis = "0x8047c5bed363fe1bf458ec3e20e93a3c28a07b8d"; -const cartplains = "0x1805922e7f82fc9dbad8e2435c146ba605c4a25d"; -const cartmesa = "0x64f8a1dbc20f132159605ad8d7111e75ea702358"; -const cartsummit = "0x93af6a3882aaf4112fc404e30277b39452f44cf6"; - -async function getCarttvl(api, cart) { - const tokens = await api.call({ abi: abi.getPools, target: cart }) - const bals = await api.multiCall({ abi: abi.supply, calls: tokens, target: cart }) - api.add(tokens, bals) -} - -async function tvl(api) { - await getCarttvl(api, cartoasis) - await getCarttvl(api, cartplains) - await getCarttvl(api, cartmesa) - await getCarttvl(api, cartsummit) - await sumTokens2({ api, resolveLP: true}) - api.removeTokenBalance(summit) - api.removeTokenBalance(everest) -} - - -module.exports = { - methodology: "TVL is from deposits into the cartographer contracts. Staking TVL is from SUMMIT deposited into EVEREST contract", - fantom: { - misrepresentedTokens: true, - tvl, - staking: staking(everest, summit) - } -} \ No newline at end of file diff --git a/projects/summitx-finance/index.js b/projects/summitx-finance/index.js deleted file mode 100644 index ca3ec5721b9..00000000000 --- a/projects/summitx-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3'); - -// Use the proven uniV3Export helper for V3 pools -const v3Config = { - camp: { - factory: '0xBa08235b05d06A8A27822faCF3BaBeF4f972BF7d', - fromBlock: 1, - } -}; - -module.exports = { - ...uniV3Export(v3Config), - methodology: 'TVL is calculated by summing the token balances in all SummitX V3 pools on Camp Network using the standard Uniswap V3 helper functions for accurate pricing.', -}; diff --git a/projects/sumswap/index.js b/projects/sumswap/index.js deleted file mode 100644 index 7b83e60042e..00000000000 --- a/projects/sumswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - ethereum: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x96FF042f8c6757fCE515d171F194b5816CAFEe11', }), - }, -}; diff --git a/projects/sun/index.js b/projects/sun/index.js deleted file mode 100644 index 78708be7cf8..00000000000 --- a/projects/sun/index.js +++ /dev/null @@ -1,82 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const pools = [ - { - pool: 'TKcEU8ekq2ZoFzLSGFYCUY6aocJBX9X31b', stablecoins: [ - ADDRESSES.tron.USDT, // USDT - ADDRESSES.tron.USDJ, - ADDRESSES.tron.TUSD, - ] - }, - { - pool: 'TKVsYedAY23WFchBniU7kcx1ybJnmRSbGt', stablecoins: [ // USDD 3pool - ADDRESSES.tron.USDT, // USDT - ADDRESSES.tron.USDD, // USDD - ADDRESSES.tron.TUSD, - ] - }, - { - pool: 'TAUGwRhmCP518Bm4VBqv7hDun9fg8kYjC4', stablecoins: [ // USDD 2pool - ADDRESSES.tron.USDD, // USDD - ADDRESSES.tron.USDT, // USDT - ] - }, - { - pool: 'TQx6CdLHqjwVmJ45ecRzodKfVumAsdoRXH', stablecoins: [ - ADDRESSES.tron.USDC, // // USDC - ] - }, - { - pool: 'TB6zgiG14iQkNxqU4mYe7cMiS5aCYfyidL', stablecoins: [ - ADDRESSES.tron.USDC, // // USDC - ] - }, - { - pool: 'TNTfaTpkdd4AQDeqr8SGG7tgdkdjdhbP5c', stablecoins: [ // USDD 2pool - ADDRESSES.tron.USDD, // USDD - ADDRESSES.tron.USDT, // USDT - ] - }, - { - pool: 'TExeaZuD5YPi747PN5yEwk3Ro9eT2jJfB6', stablecoins: [ // USDC 2pool - ADDRESSES.tron.USDC, // // USDC - ADDRESSES.tron.USDT, // USDT - ] - }, - { - pool: 'TS8d3ZrSxiGZkqhJqMzFKHEC1pjaowFMBJ', stablecoins: [ // new TUSD 2pool - ADDRESSES.tron.TUSD, - ADDRESSES.tron.USDT, // USDT - ] - }, - { - pool: 'TE7SB1v9vRbYRe5aJMWQWp9yfE2k9hnn3s', stablecoins: [ // new USDD/2USD - ADDRESSES.tron.USDC, // // USDC - ] - }, - { - pool: 'TKBqNLyGJRQbpuMhaT49qG7adcxxmFaVxd', stablecoins: [ // new USDJ/2USD - ADDRESSES.tron.USDJ, - ] - }, - { - pool: 'TLssvTsY4YZeDPwemQvUzLdoqhFCbVxDGo', stablecoins: [ // new USDC/2USD - ADDRESSES.tron.USDD, // USDD - ] - } -] - -const ownerTokens = pools.map(({ pool, stablecoins }) => { - return [stablecoins, pool] -}) - -const stakingContract = "TXbA1feyCqWAfAQgXvN1ChTg82HpBT8QPb" -const sun = ADDRESSES.tron.SUN - -module.exports = { - tron: { - tvl: sumTokensExport({ ownerTokens }), - staking: sumTokensExport({ owner: stakingContract, tokens: [sun] }), - }, -} diff --git a/projects/sundaeswap-v3/index.js b/projects/sundaeswap-v3/index.js deleted file mode 100644 index 15cbdced5f1..00000000000 --- a/projects/sundaeswap-v3/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getAdaInAddress } = require('../helper/chain/cardano') - -async function tvl(){ - const ammLocked = await getAdaInAddress("addr1x8srqftqemf0mjlukfszd97ljuxdp44r372txfcr75wrz26rnxqnmtv3hdu2t6chcfhl2zzjh36a87nmd6dwsu3jenqsslnz7e") - const ammLocked2 = await getAdaInAddress("addr1z8srqftqemf0mjlukfszd97ljuxdp44r372txfcr75wrz2auzrlrz2kdd83wzt9u9n9qt2swgvhrmmn96k55nq6yuj4qw992w9") - // const orderBookLocked = await getAdaInAddress("addr1w8ax5k9mutg07p2ngscu3chsauktmstq92z9de938j8nqacprc9mw") - return { - "cardano": (+ammLocked + +ammLocked2) * 2 - } -} - -module.exports={ - timetravel: false, - cardano:{ - tvl - } -} diff --git a/projects/sundaeswap/index.js b/projects/sundaeswap/index.js deleted file mode 100644 index 3083c2d43c4..00000000000 --- a/projects/sundaeswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getAdaInAddress } = require('../helper/chain/cardano') - -async function tvl(){ - const ammLocked = await getAdaInAddress("addr1w9qzpelu9hn45pefc0xr4ac4kdxeswq7pndul2vuj59u8tqaxdznu") - const orderBookLocked = await getAdaInAddress("addr1wxaptpmxcxawvr3pzlhgnpmzz3ql43n2tc8mn3av5kx0yzs09tqh8") - return { - "cardano": ammLocked * 2 + orderBookLocked - } -} - -module.exports={ - timetravel: false, - cardano:{ - tvl - } -} diff --git a/projects/sunflowerfi/index.js b/projects/sunflowerfi/index.js deleted file mode 100644 index 6b5216c1488..00000000000 --- a/projects/sunflowerfi/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const MasterChefContract = "0x226771f35B00aE9bD4d0dde18dAdA9d24d772223"; -const SFO = "0x3295fdE99976e6B6b477E6834b2651a22DeB1dd7"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(MasterChefContract, "bsc", SFO), - methodology: "TVL includes all farms in MasterChef contract", -}; \ No newline at end of file diff --git a/projects/sunflowerswap/index.js b/projects/sunflowerswap/index.js deleted file mode 100644 index b77e81f05e0..00000000000 --- a/projects/sunflowerswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('moonbeam', '0xf6c49609e8d637c3d07133e28d369283b5e80c70') diff --git a/projects/sunny.js b/projects/sunny.js deleted file mode 100644 index 87ab107098e..00000000000 --- a/projects/sunny.js +++ /dev/null @@ -1,47 +0,0 @@ -const { getProvider,} = require('./helper/solana') -const sdk = require('@defillama/sdk') -const { PublicKey } = require('@solana/web3.js') -const { Program, } = require("@project-serum/anchor"); - -async function tvl_V2() { - const balances = {} - const quarryId = new PublicKey('QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB') - const sunnyProgramId = new PublicKey('SPQR4kT3q2oUKEJes2L6NNSBCiPW9SfuhkuqC9bp6Sx') - const provider = getProvider() - const QuarryMineIDL = await Program.fetchIdl(quarryId, provider) - const sunnyIDL = await Program.fetchIdl(sunnyProgramId, provider) - const quarryProgram = new Program(QuarryMineIDL, quarryId, provider) - const sunnyProgram = new Program(sunnyIDL, sunnyProgramId, provider) - const pools = await sunnyProgram.account.pool.all() - const quarries = pools.map(i => i.account.quarry) - const quaryData = await quarryProgram.account.quarry.fetchMultiple(quarries) - quaryData.forEach((data, i) => { - sdk.util.sumSingleBalance(balances,data.tokenMintKey.toString(),pools[i].account.totalVendorBalance, 'solana') - }) - return balances -} - -async function tvl_V1() { - const balances = {} - const sunnyProgramId = new PublicKey('SSFNHWYFdELMTkWNdaPaZQuVL4d2RY7ykjGmeGkmKXW') - const provider = getProvider() - const sunnyOldIDL = await Program.fetchIdl(sunnyProgramId, provider) - const sunnyProgram = new Program(sunnyOldIDL, sunnyProgramId, provider) - const pools = await sunnyProgram.account.pool.all() - pools.forEach((data, i) => { - const lpMint = data.account.lpMint.toString() - sdk.util.sumSingleBalance(balances,lpMint,data.account.totalLpTokenBalance, 'solana') - }) - return balances -} - -module.exports = { - doublecounted: true, - timetravel: false, - hallmarks: [ - [1659975842, "Code refactor, fix tvl computation"], - ], - methodology: - 'TVL counts LP token deposits made to Sunny Aggregator. CoinGecko is used to find the price of tokens in USD, only the original "SOL" token price is used for all existing variations of the token.', - solana: { tvl: sdk.util.sumChainTvls([tvl_V1, tvl_V2,]) }, -}; diff --git a/projects/sunperp/index.js b/projects/sunperp/index.js deleted file mode 100644 index b75c96880c5..00000000000 --- a/projects/sunperp/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); - -const chefContract = "TEubMt2TNag5NN1JXVaeysUk8GNTTYmtVX"; - -async function tvl(api) { - - const usdtBalance = await api.call({ - abi: 'function balanceOf(address account) external view returns (uint256)', - target: ADDRESSES.tron.USDT, - params: [chefContract], - }); - - // const wallet1 = await api.call({ - // abi: 'function balanceOf(address account) external view returns (uint256)', - // target: ADDRESSES.tron.USDT, - // params: ["TK8v6HPniRKYixj6Egby712nr5R3xrYYCT"], - // }); - - // const wallet2 = await api.call({ - // abi: 'function balanceOf(address account) external view returns (uint256)', - // target: ADDRESSES.tron.USDT, - // params: ["TYRmcmmKvjL1SFQbvPQtJU1YcaXEnH8dvT"], - // }); - - api.add(ADDRESSES.tron.USDT, usdtBalance); - // api.add(ADDRESSES.tron.USDT, wallet1); - // api.add(ADDRESSES.tron.USDT, wallet2); - -} - - -module.exports = { - methodology: 'Counts Number in The SunPerp Vault.', - tron: { tvl } -} \ No newline at end of file diff --git a/projects/sunpump/index.js b/projects/sunpump/index.js deleted file mode 100644 index 9a3f1aa536e..00000000000 --- a/projects/sunpump/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/sumTokens') - -module.exports = { - tron: { tvl: sumTokensExport({ owner: 'TTfvyrAz86hbZk5iDpKD78pqLGgi8C7AAw', tokens: [nullAddress] }) } -} \ No newline at end of file diff --git a/projects/sunrise-gaming-by-dao/index.js b/projects/sunrise-gaming-by-dao/index.js deleted file mode 100644 index 07e00f1ad09..00000000000 --- a/projects/sunrise-gaming-by-dao/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const {staking} = require('../helper/staking') -const {pool2} = require('../helper/pool2') - -const suncAddress = '0x692aCCdD8b86692427E0aa4752AE917Df01CC56F'; -const lpWethSunc = '0xaf5a7469cf2571b973aeee9ae2f8aad00e1337d2'; -const stakingAddress = '0x7dbE40ac6bB41A5FE4Fa2C74f31d7DEFBC793B58'; - -module.exports = { - ethereum:{ - staking: staking(stakingAddress, suncAddress), - pool2: pool2(stakingAddress, lpWethSunc), - tvl: async ()=>({}) - } -} \ No newline at end of file diff --git a/projects/sunswap-v2/api.js b/projects/sunswap-v2/api.js deleted file mode 100644 index 4d82220cd47..00000000000 --- a/projects/sunswap-v2/api.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getExports} = require('../helper/heroku-api') -const chains = ['tron'] - -module.exports = { - timetravel: false, - ...getExports("sunswap-v2", chains) -} diff --git a/projects/sunswap-v2/index.js b/projects/sunswap-v2/index.js deleted file mode 100644 index 2c432b713da..00000000000 --- a/projects/sunswap-v2/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - tron: { - tvl: getUniTVL({ factory: 'TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY', useDefaultCoreAssets: true, queryBatched: 11 }), - } -} diff --git a/projects/sunswap-v3/index.js b/projects/sunswap-v3/index.js deleted file mode 100644 index 4a872e8a981..00000000000 --- a/projects/sunswap-v3/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getConfig } = require('../helper/cache') - -async function tvl(api) { - const { data } = await getConfig('sunswap-v3', 'https://sbc.endjgfsv.link/scan/getPoolList?version=v3') - const ownerTokens = data.map(i => [[i.token0Address, i.token1Address], i.pairAddress]) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - tron: { tvl, }, -} \ No newline at end of file diff --git a/projects/super-dca/index.js b/projects/super-dca/index.js deleted file mode 100644 index 9fa1eb1d76d..00000000000 --- a/projects/super-dca/index.js +++ /dev/null @@ -1,120 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { request, gql } = require('graphql-request') -const sdk = require('@defillama/sdk') - -// Chain-specific configuration -const CONFIG = { - optimism: { - STATE_VIEW: '0xc18a3169788f4f75a170290584eca6395c75ecdb', - POSM: '0x3C3Ea4B57a46241e54610e5f022E5c45859A1017', - FROM_BLOCK: 130947675, - SUBGRAPH_ID: '6RBtsmGUYfeLeZsYyxyKSUiaA6WpuC69shMEQ1Cfuj9u', - WHITELISTED_TOKENS: [ - ADDRESSES.optimism.USDC_CIRCLE, // USDC - ADDRESSES.null, // WETH - ADDRESSES.optimism.WBTC // WBTC - ], - POOL_IDS: [ - // List of pools with the Super DCA Hook: 0xb4f4Ad63BCc0102B10e6227236e569Dce0d97A80 - '0x13b95815697f696c74bd1e7959d692d74476ec851b32be72e027cda8e9d05e35', // USDC-DCA - '0x7e9d1e1966665cfdaadcdef03caaf3099e18447bd45b3af8b04a9844e3882863', // ETH-DCA - '0x46224636f9ee95d76f57ec559b0099db863747ca5ac11e4db5b178b6ae269404' // WBTC-DCA - ] - }, - base: { - STATE_VIEW: '0xA3c0c9b65baD0b08107Aa264b0f3dB444b867A71', - POSM: '0x7C5f5A4bBd8fD63184577525326123B519429bDc', - FROM_BLOCK: 30838244, - SUBGRAPH_ID: 'HNCFA9TyBqpo5qpe6QreQABAA1kV8g46mhkCcicu6v2R', - WHITELISTED_TOKENS: [ - ADDRESSES.base.USDC, // USDC - ADDRESSES.null, // WETH - ADDRESSES.bsc.WBTC, // WBTC - '0x63706e401c06ac8513145b7687A14804d17f814b' // AAVE - ], - POOL_IDS: [ - // List of pools with the Super DCA Hook: 0xBc5F29A583a8d3ec76e03372659e01a22feE3A80 - '0x9f0b3075f99fd5270b45f1742f71fe08a33737d053e3aaa1eb4e19b1b94d516e', // ETH-DCA - '0x870198ffb454503d5ce1b698c94bc98198c874d61e8a2994dd6e01ee04535f89', // USDC-DCA - '0xca8fb98187ca61e9c2360a93d41cffa5ecd5b5911b3e705f6fbcdc08b42fe0db', // WBTC-DCA - '0xc0ea512d5a20a822fcce987c10428d5b81d349bce55404456cbc6729eb0c3c6c' // AAVE-DCA - ] - } -} - -const POSITIONS_QUERY = gql` - query getPositions($poolId: String!) { - transactions( - where: { - modifyLiquiditys_: { pool: $poolId } - transfers_: { tokenId_gte: "0" } - } - orderBy: timestamp - orderDirection: asc - first: 1000 - ) { - transfers(where: { tokenId_gte: "0" }) { - tokenId - } - } - } -` - -// Get all position IDs for a specific poolId using subgraph -async function getAllPositionIdsForPool(api, poolId, config) { - const subgraphEndpoint = sdk.graph.modifyEndpoint(config.SUBGRAPH_ID) - const result = await request(subgraphEndpoint, POSITIONS_QUERY, { poolId }) - - // Extract unique token IDs - const tokenIdSet = new Set() - result.transactions.forEach(tx => { - tx.transfers.forEach(transfer => { - tokenIdSet.add(transfer.tokenId) - }) - }) - - const uniqueTokenIds = Array.from(tokenIdSet) - api.log(`Found ${uniqueTokenIds.length} unique position IDs for pool ${poolId}`) - return uniqueTokenIds -} - -function createTvlFunction(chain) { - return async (api) => { - const config = CONFIG[chain] - if (!config) throw new Error(`Config not found for chain: ${chain}`) - - api.log(`Using ${config.POOL_IDS.length} hardcoded pool IDs for ${chain}`) - - // Get all position IDs for all our pools - const allPositionIds = [] - for (const poolId of config.POOL_IDS) { - const positionIds = await getAllPositionIdsForPool(api, poolId, config) - api.log(`Pool ${poolId}: ${positionIds.length} positions`) - allPositionIds.push(...positionIds) - } - - api.log(`Total positions found: ${allPositionIds.length}`) - - // Use the correct Uniswap v4 position resolver - return sumTokens2({ - api, - resolveUniV4: true, - uniV4ExtraConfig: { - whitelistedTokens: config.WHITELISTED_TOKENS, // Only count non-DCA tokens - positionIds: allPositionIds, - }, - }) - } -} - -module.exports = { - doublecounted: true, - methodology: "The TVL is calculated by summing the value of tokens in Uniswap V4 liquidity pools that have the Super DCA Hook associated with them. The value represents the value of all non-DCA tokens (e.g., ETH, USDC, WBTC, AAVE, etc.) in these pools.", - optimism: { - tvl: createTvlFunction('optimism'), - }, - base: { - tvl: createTvlFunction('base'), - } -}; \ No newline at end of file diff --git a/projects/superReturn/index.js b/projects/superReturn/index.js deleted file mode 100644 index 7c5a3fde3fd..00000000000 --- a/projects/superReturn/index.js +++ /dev/null @@ -1,112 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -// superUSD vault contract address are same in all chains -const SUPERUSD_CONTRACT = '0x15f3Ee2F609FBAe0bC48E3a071D66DD917C682EB'; - -const protocols = { - ethereum: { - euler: '0xe0a80d35bB6618CBA260120b279d357978c42BCE' - }, - soneium: { - sake: '0x5D7Af17B88Ad600EAb35957CC99eaa30D6330cFD', - sakeProvider: '0x73a35ca19Da0357651296c40805c31585f19F741' - }, - plume_mainnet: { - morpho: ['0x0b14D0bdAf647c541d3887c5b1A4bd64068fCDA7'] - } -}; - -async function ethereumTvl(api) { - // Euler Protocol - const collateralBalance = await api.call({ - abi: 'erc20:balanceOf', - target: protocols.ethereum.euler, - params: [SUPERUSD_CONTRACT], - }); - - const previewShare = await api.call({ - abi: 'function convertToAssets(uint256 shares) view returns (uint256 assets)', - target: protocols.ethereum.euler, - params: [collateralBalance], - }); - - api.add(ADDRESSES.ethereum.USDC, previewShare); - - // Vault funds - const vaultFunds = await api.call({ - abi: 'erc20:balanceOf', - target: ADDRESSES.ethereum.USDC, - params: [SUPERUSD_CONTRACT], - }); - - api.add(ADDRESSES.ethereum.USDC, vaultFunds); -} - -async function soneiumTvl(api) { - // Sake Protocol - let [userReserves, ] = await api.call({ - abi: "function getUserReservesData(address provider, address user) view returns (tuple(address underlyingAsset, uint256 scaledATokenBalance, bool usageAsCollateralEnabledOnUser, uint256 stableBorrowRate, uint256 scaledVariableDebt, uint256 principalStableDebt, uint256 stableBorrowLastUpdateTimestamp)[], uint8)", - target: protocols.soneium.sake, - params: [protocols.soneium.sakeProvider, SUPERUSD_CONTRACT], - }); - userReserves = userReserves.filter(reserve => reserve.scaledATokenBalance != 0); - - for (const reserve of userReserves) { - const { - underlyingAsset, - scaledATokenBalance, - } = reserve; - - api.add(ADDRESSES.soneium.USDC, scaledATokenBalance) - } - - // Vault funds - const vaultFunds = await api.call({ - abi: 'erc20:balanceOf', - target: ADDRESSES.soneium.USDC, - params: [SUPERUSD_CONTRACT], - }); - - api.add(ADDRESSES.soneium.USDC, vaultFunds); -} - -async function plumeTvl(api) { - // Morpho Protocol - const morphoAddresses = protocols.plume_mainnet.morpho; - - const collateralBalances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: morphoAddresses.map(morphoAddress => ({ - target: morphoAddress, - params: [SUPERUSD_CONTRACT] - })) - }); - - const previewShares = await api.multiCall({ - abi: 'function convertToAssets(uint256 shares) view returns (uint256 assets)', - calls: morphoAddresses.map((morphoAddress, i) => ({ - target: morphoAddress, - params: [collateralBalances[i]] - })) - }); - - previewShares.forEach(share => { - api.add(ADDRESSES.plume_mainnet.pUSD, share); - }); - - // Vault funds - const vaultFunds = await api.call({ - abi: 'erc20:balanceOf', - target: ADDRESSES.plume_mainnet.pUSD, - params: [SUPERUSD_CONTRACT], - }); - - api.add(ADDRESSES.plume_mainnet.pUSD, vaultFunds); -} - -module.exports = { - methodology: 'Tracks the deposits in yield-generating protocols', - ethereum: { tvl: ethereumTvl }, - soneium: { tvl: soneiumTvl }, - plume_mainnet: { tvl: plumeTvl } -}; \ No newline at end of file diff --git a/projects/superbots/index.js b/projects/superbots/index.js deleted file mode 100644 index 09210ed463a..00000000000 --- a/projects/superbots/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const vault_tokens = [ - ADDRESSES.bsc.BUSD, // BUSD - ADDRESSES.bsc.WBNB, // WBNB - ADDRESSES.bsc.BTCB, // BTCB - ADDRESSES.bsc.ETH, // WETH -] -const vaults = [ - '0x4558684869b1f814b4d8b177dcb0a2e10f4e007d', - '0xc645D32bb7D9592a268387755B2864FF146924f7', - '0x5b3da1932d68a1569de973731e87f0796af21d0a', - '0x99ef199afae20f4efb30f420c6c401fac3137e4d', - '0x1345a7cb4f00c844b9f466fe065a6ae2a2c68273', - '0x76651E8282739F47cfAaB65f10e4A9AC68EC3C7F', - '0x923c7C2bb7329372898ef0F820d2dCF010561D6b', - '0x6f073b79a7e59547cd3f0472606b1e349049a5e7', - '0x711D6C0f87f1Ddd8B2589f50a5b7E8F02BD61990' -] -const config = { - 'bsc': { - ubxt: '0xbbeb90cfb6fafa1f69aa130b7341089abeef5811', - stakingPool: '0x2500C97d1eBD63275DdC3511c825c4d73335Cb77', - ubxtLP: '0x8d3ff27d2ad6a9556b7c4f82f4d602d20114bc90' - }, - 'ethereum': { - ubxt: '0x8564653879a18C560E7C0Ea0E084c516C62F5653', - stakingPool: '0x6f87364176265cad6ffc70ad2a795630395a8c24', - ubxtLP: '0x6a928D733606943559556F7eb22057C1964ce56a' - } -} - -async function tvl(api) { - return sumTokens2({ owners: vaults, tokens: vault_tokens, api }) -} - -module.exports = { - bsc: { - tvl, - staking: staking(config.bsc.stakingPool, config.bsc.ubxt), - pool2: staking(config.bsc.stakingPool, config.bsc.ubxtLP), - }, - ethereum: { - staking: staking(config.ethereum.stakingPool, config.ethereum.ubxt,), - pool2: staking(config.ethereum.stakingPool, config.ethereum.ubxtLP,), - } -} \ No newline at end of file diff --git a/projects/superfarm/index.js b/projects/superfarm/index.js deleted file mode 100644 index 425732897cb..00000000000 --- a/projects/superfarm/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const sdk = require("@defillama/sdk"); -const {staking} = require("../helper/staking"); -const {unwrapUniswapLPs, sumTokens} = require("../helper/unwrapLPs") - -const superfarm = "0xe53ec727dbdeb9e2d5456c3be40cff031ab40a55"; -const superfarmStaking = "0xf35A92585CeEE7251388e14F268D9065F5206207"; -const superEthUniLP = "0x25647e01bd0967c1b9599fa3521939871d1d0888"; -const inj = "0xe28b3B32B6c345A34Ff64674606124Dd5Aceca30"; -const injStaking = "0x8e586D927acE36a3ef7bDDF9f899d2E385d5Fc9b"; -const revv = "0x557B933a7C2c45672B610F8954A3deB39a51A8Ca"; -const revvStaking = "0xb3EA98747440aDDC6A262735E71B5A5cB29edd80"; - -async function tvl(timestamp, block) { - let balances = {}; - await sumTokens(balances, [ - [inj, injStaking], - [revv, revvStaking] - ], block) - return balances; -} - -async function pool2(timestamp, block) { - let balances = {}; - const lpBalance = (await sdk.api.erc20.balanceOf({ - target: superEthUniLP, - owner: superfarmStaking, - block - })).output; - await unwrapUniswapLPs(balances, [{ - token: superEthUniLP, - balance: lpBalance - }], block); - return balances; -} - -module.exports = { - ethereum: { - tvl, - staking: staking(superfarmStaking, superfarm), - pool2, - } -} \ No newline at end of file diff --git a/projects/superfluid.js b/projects/superfluid.js deleted file mode 100644 index 18c38ce4157..00000000000 --- a/projects/superfluid.js +++ /dev/null @@ -1,243 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { getBlock, blockQuery } = require("./helper/http"); - -const supertokensQuery = ({ first = 1000, id_gt = "" } = {}) => ` -query get_supertokens($block: Int) { - tokens( - first: ${first}, - block: { number: $block }, - where: { isSuperToken: true${id_gt ? `, id_gt: "${id_gt}"` : ""} }, - orderBy: id, - orderDirection: asc - ) { - id - underlyingAddress - name - underlyingToken { name decimals symbol id } - symbol - decimals - isSuperToken - isNativeAssetSuperToken - isListed - } -}`; - -const blacklistedSuperTokens = new Set( - ["0x441bb79f2da0daf457bad3d401edb68535fb3faa"].map((i) => i.toLowerCase()) -); - -// Fetch and paginate all SuperTokens at a given block -async function fetchAllSuperTokens(graphUrl, blockForQuery) { - const PAGE_SIZE = 1000; - let lastId = ""; - const allTokens = []; - let hasMore = true - while (hasMore) { - const query = supertokensQuery({ first: PAGE_SIZE, id_gt: lastId }); - const res = await blockQuery(graphUrl, query, { - api: { getBlock: () => blockForQuery, block: blockForQuery }, - }); - const tokens = res.tokens; - if (!tokens?.length) { - hasMore = false - break; - } - allTokens.push(...tokens); - if (tokens.length < PAGE_SIZE) { - hasMore = false - break; - } - lastId = tokens[tokens.length - 1].id; - } - return allTokens; -} - -// ALEPH custom locker address used on Base and Avalanche -const ALEPH_LOCKER = "0xb6e45ADfa0C7D70886bBFC990790d64620F1BAE8".toLowerCase(); -// ALEPH SuperToken address (same on Base and Avalanche) -const ALEPH_SUPERTOKEN = "0xc0Fbc4967259786C743361a5885ef49380473dCF".toLowerCase(); - -// MIVA token locker addresses (on xDai/Gnosis). Circulating = totalSupply - sum(locker balances) -const MIVA_LOCKERS = [ - "0x50e39b354c90146de80a577e13129bb0ba36ee45", - "0x791B3A48D2dca38871C9900783653b15aCae0Aea", - "0x6A0491132aF4d0925F857A5000bb21e5C5C195EA", - "0x8F00FC7756C9E901963B723AD1821E5EB8C69C02", - "0x10DAF0DF6Ec9bEF452F3073A56f6adB4B1809222", - "0xa2eac044fe1e004cAaC4E8C4164a39F4Cc522b6f", - "0x89Abea6823cfd903fB503A1DB17a7ce890A3232e", - "0xFd989d6E3244cFb5470597E7B93E4430CC29EfE9", - "0x867e84EB2789c95eEF6d6991cC4bC6B48e1519b8", - "0x16daae140FbC2F854Cf61af0512Bd8CD627d0B8e", - "0xA298D0b6B9216f7d9EB252DeA06280b748eFe8E5", - "0x1d9896F00fd51df839B2F5B7fFdD0bD60b471CeF", - "0xDfdec8DF5cfF5DaAb3ec635E477517AC92251dfD", - "0xeCD2D1bB2776f00AD15F976F349A1ab01F8ce398", - "0x5B339241312024382C9768b3598f60eCF34Ae779", -]; - -// Main function for all chains to get balances of superfluid tokens -async function getChainBalances(allTokens, chain, block, isVesting, api) { - // Init empty balances - let balances = {}; - - // Abi MultiCall to get supertokens supplies - const supply = await api.multiCall({ - abi: "erc20:totalSupply", // abi['totalSupply'], - calls: allTokens.map(token => token.id), - }); - - for (let i = 0; i < supply.length; i++) { - const totalSupply = supply[i]; - const { - id, - underlyingAddress, - underlyingToken, - decimals, - name, - symbol, - isNativeAssetSuperToken, - } = allTokens[i]; - - // Accumulate to balances, the balance for tokens on mainnet or sidechain - let prefixedUnderlyingAddress = underlyingAddress; - if ( - underlyingAddress && - blacklistedSuperTokens.has(underlyingAddress.toLowerCase()) - ) - continue; - - // ALEPH custom logic (Base and Avalanche): no underlying; circulating = totalSupply - locker balance - if ( - (chain === 'base' || chain === 'avax') && - id.toLowerCase() === ALEPH_SUPERTOKEN - ) { - const lockerHolding = await api.call({ abi: 'erc20:balanceOf', target: id, params: [ALEPH_LOCKER] }); - const circulating = Math.max(0, totalSupply - lockerHolding); - api.add(id, circulating); - continue; - } - - // MIVA token special logic (Gnosis/xDai): circulating = totalSupply - sum(locker balances) - if (symbol && symbol.toUpperCase() === 'MIVA') { - const lockerHoldings = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: MIVA_LOCKERS.map((locker) => ({ target: id, params: [locker] })), - }); - const totalLocked = lockerHoldings.reduce((sum, v) => sum + (Number(v) || 0), 0); - const circulating = Math.max(0, totalSupply - totalLocked); - api.add(id, circulating); - continue; - } - - if (isNativeAssetSuperToken) { - // For native asset SuperTokens (like ETHx), use the chain's native token - api.add(ADDRESSES.null, totalSupply); - continue; - } - - if (underlyingToken) { - // For wrapped tokens (default), convert to underlying units - const underlyingDecimals = (underlyingToken || { decimals: 18 }).decimals; - const underlyingTokenBalance = - (totalSupply * 10 ** underlyingDecimals) / 10 ** decimals; - api.add(prefixedUnderlyingAddress, underlyingTokenBalance); - continue; - } - - // For pure SuperTokens (no underlying), use the SuperToken's own address - api.add(id, totalSupply); - } -} - -async function retrieveSupertokensBalances( - chain, - block, - isVesting, - api, - graphUrl -) { - let blockNum; - try { - blockNum = await getBlock(api.timestamp, chain, { [chain]: block }); - } catch (e) { - // If block lookup fails for this chain/date (e.g. pre-genesis), skip it - return; - } - - // Ensure we don't query subgraphs before their start block set in the manifest (pre protocol deployment) - const subgraphStartBlocks = { - scroll: 2_575_000, - degen: 26188017, - base: 1000000, - ethereum: 15870000, - celo: 16393000, - bsc: 18800000, - avax: 14700000, - arbitrum: 7600000, - optimism: 4300000, - polygon: 11650500, - xdai: 14820000, - }; - const minStart = subgraphStartBlocks[chain] || 0; - // If requested block is before the subgraph started indexing ( protocol deployment ), return 0 for this chain - if (minStart && blockNum < minStart) return; - const blockForQuery = (blockNum || 0); - - const allTokens = await fetchAllSuperTokens(graphUrl, blockForQuery); - const filteredTokens = allTokens.filter((t) => t.isSuperToken); - await getChainBalances(filteredTokens, chain, block, isVesting, api); - return api.getBalances(); -} - -/** - * List of subgraphs can be retrieved from https://docs.superfluid.finance/docs/technical-reference/subgraph - */ -const subgraphEndpoints = { - arbitrum: { - graph: "https://arbitrum-one.subgraph.x.superfluid.dev", - }, - avax: { - graph: "https://avalanche-c.subgraph.x.superfluid.dev", - }, - base: { - graph: "https://base-mainnet.subgraph.x.superfluid.dev", - }, - bsc: { - graph: "https://bsc-mainnet.subgraph.x.superfluid.dev", - }, - // degen: { - // graph: "https://degenchain.subgraph.x.superfluid.dev", - // }, - ethereum: { - graph: "https://eth-mainnet.subgraph.x.superfluid.dev", - }, - optimism: { - graph: "https://optimism-mainnet.subgraph.x.superfluid.dev", - }, - polygon: { - graph: "https://polygon-mainnet.subgraph.x.superfluid.dev", - }, - scroll: { - graph: "https://scroll-mainnet.subgraph.x.superfluid.dev", - }, - xdai: { - graph: "https://xdai-mainnet.subgraph.x.superfluid.dev", - }, - celo: { - graph: "https://celo-mainnet.subgraph.x.superfluid.dev", - }, -}; - -module.exports = { - methodology: `TVL is the value of SuperTokens in circulation. SuperTokens are Superfluid protocol's extension of the ERC20 token standard with additional functionalities like Money Streaming or Distributions. More on SuperTokens here: https://docs.superfluid.finance/docs/concepts/overview/super-tokens`, - // hallmarks: [[1644278400, "Fake ctx hack"]], -}; - -Object.keys(subgraphEndpoints).forEach((chain) => { - const { graph } = subgraphEndpoints[chain]; - module.exports[chain] = { - tvl: async (api, _b, { [chain]: block }) => - retrieveSupertokensBalances(chain, block, false, api, graph), - } -}); diff --git a/projects/superform/index.js b/projects/superform/index.js deleted file mode 100644 index 5d0e489620f..00000000000 --- a/projects/superform/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const superform_chains = ["ethereum", "polygon", "bsc", "avax", "arbitrum", "optimism", "base", "fantom", "blast", "linea"]; -const factory_contract = "0xD85ec15A9F814D6173bF1a89273bFB3964aAdaEC"; -const fantom_factory_contract = "0xbc85043544CC2b3Fd095d54b6431822979BBB62A"; - -// These vaults have misconfigured implementation affecting TVL -const blacklisted_vaults = ["0xd3a17928245064b6df5095a76e277fe441d538a4"] - -async function tvl(api) { - const forms = await api.fetchList({ lengthAbi: 'getSuperformCount', itemAbi: "function superforms(uint256) external view returns(uint256)", target: api.chainId === 250 ? fantom_factory_contract : factory_contract }) - const getSuperformRes = await api.multiCall({ abi: "function getSuperform(uint256) external view returns(address, uint32, uint64)", calls: forms, target: api.chainId === 250 ? fantom_factory_contract : factory_contract }) - const super4626 = getSuperformRes.map(v => v[0]) - const vaults = await api.multiCall({ abi: 'address:vault', calls: super4626 }) - - // Filter out blacklisted vaults - const filteredVaults = vaults.filter(vault => !blacklisted_vaults.includes(vault.toLowerCase())); - const filteredSuper4626 = super4626.filter((_, index) => !blacklisted_vaults.includes(vaults[index].toLowerCase())); - - const assets = await api.multiCall({ abi: 'address:asset', calls: filteredSuper4626 }) - const vBals = await api.multiCall({ abi: "erc20:balanceOf", calls: filteredVaults.map((v, i) => ({ target: v, params: filteredSuper4626[i] })) }) - const bals = await api.multiCall({ abi: "function previewRedeemFrom(uint256) external view returns(uint256)", calls: filteredSuper4626.map((v, i) => ({ target: v, params: vBals[i] })), permitFailure: true }) - bals.forEach((bal, i) => { - if (bal) api.add(assets[i], bal) - }) -} - -module.exports = { - methodology: "counts the TVL of each superform across all the supported networks", - hallmarks: [ - [1707350400, "Early Access"], - [1715212800, "Open Launch"], - [1734012000, "SuperVaults Launch"], - ] -}; - -superform_chains.forEach(chain => module.exports[chain] = { tvl }) \ No newline at end of file diff --git a/projects/superfund/config.js b/projects/superfund/config.js deleted file mode 100644 index dc0e1b9a533..00000000000 --- a/projects/superfund/config.js +++ /dev/null @@ -1,5 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - "SUPERFUND_VAULT": "0x10076ed296571ce4fde5b1fdf0eb9014a880e47b", - "USDC": ADDRESSES.base.USDC -} \ No newline at end of file diff --git a/projects/superfund/index.js b/projects/superfund/index.js deleted file mode 100644 index 54b5b34401a..00000000000 --- a/projects/superfund/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sdk = require("@defillama/sdk"); -const config = require("./config"); - -async function tvl(api) { - const balances = {}; - - const totalAssets = await api.call({ - abi: "function totalAssets() public view returns(uint256)", - target: config.SUPERFUND_VAULT, - }); - - sdk.util.sumSingleBalance(balances, config.USDC, totalAssets, api.chain); - - return balances; -} - -module.exports = { - base: { tvl } -} diff --git a/projects/superhero-dex/index.js b/projects/superhero-dex/index.js deleted file mode 100644 index e1aa3ba05f1..00000000000 --- a/projects/superhero-dex/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { get } = require('../helper/http') -const { transformDexBalances } = require("../helper/portedTokens"); - -async function tvl(api) { - const allPools = []; - const pairs = await get('https://dex-backend-mainnet.prd.service.aepps.com/pairs') - for (const pair of pairs) { - const [pairLiquidityInfo] = await get('https://dex-backend-mainnet.prd.service.aepps.com/history?pairAddress=' + pair.address + '&limit=100&order=desc&toBlockTime=' + api.timestamp * 1000); - allPools.push({ - token0: pair.token0, - token0Bal: pairLiquidityInfo?.reserve0 || 0, - token1: pair.token1, - token1Bal: pairLiquidityInfo?.reserve1 || 0, - }) - } - - return transformDexBalances({ chain: 'aeternity', data: allPools, }); -} - - -module.exports = { - methodology: 'TVL is calculated based on tokens that are locked in the Superhero DEX pools.', - aeternity: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/superlauncher/index.js b/projects/superlauncher/index.js deleted file mode 100644 index 5579c6d7b20..00000000000 --- a/projects/superlauncher/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { stakings } = require("../helper/staking"); - -const LAUNCH = "0xF6D9a093A1C69a152d87e269A7d909E9D76B1815"; -const STAKING_CONTRACT = "0xA05385Ec1F4fFe5a43336f3864Ae66f536D95602"; - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: () => ({}), - staking: stakings([STAKING_CONTRACT], [LAUNCH], 'era','superlauncher-dao',18) - }, - methodology: "TVL is calculated by summing the total LAUNCH held in the staking contract.", -}; \ No newline at end of file diff --git a/projects/superlend/index.js b/projects/superlend/index.js deleted file mode 100644 index 651e67ca897..00000000000 --- a/projects/superlend/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { aaveExports } = require('../helper/aave'); -const methodologies = require('../helper/methodologies'); - -module.exports = { - methodology: methodologies.lendingMarket, - etlk: aaveExports('etlk', "0xEcbDd440C7a929d7524784Af634dF9EB0747b9e7", undefined, ["0x99e8269dDD5c7Af0F1B3973A591b47E8E001BCac"], { v3: true }), -} \ No newline at end of file diff --git a/projects/superloop/config.js b/projects/superloop/config.js deleted file mode 100644 index 679bf68cf7a..00000000000 --- a/projects/superloop/config.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - 'VAULTS' : ['0xe24e5deba01ab0b5d78a0093442de0864832803e','0xc557529dd252e5a02e6c653b0b88984afa3c8199'], - "SUPERLEND_PROTOCOL_DATA_PROVIDER": "0x99e8269dDD5c7Af0F1B3973A591b47E8E001BCac", - 'VAULT_TOKENS' : { - '0xe24e5deba01ab0b5d78a0093442de0864832803e' : { - "lend" : ADDRESSES.etlk.STXTZ, - "borrow" : ADDRESSES.etlk.WXTZ, - }, - '0xc557529dd252e5a02e6c653b0b88984afa3c8199' : { - "lend" : ADDRESSES.etlk.LBTC, - "borrow" : ADDRESSES.etlk.WBTC, - } - } -} \ No newline at end of file diff --git a/projects/superloop/index.js b/projects/superloop/index.js deleted file mode 100644 index a4659b82396..00000000000 --- a/projects/superloop/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const sdk = require("@defillama/sdk"); -const config = require("./config"); - -const userReserveDataAbi = "function getUserReserveData(address asset, address user) external view override returns (uint256 currentATokenBalance, uint256 currentStableDebt, uint256 currentVariableDebt, uint256 principalStableDebt, uint256 scaledVariableDebt, uint256 stableBorrowRate, uint256 liquidityRate, uint40 stableRateLastUpdated, bool usageAsCollateralEnabled)"; - -async function tvl(api) { - const balances = {}; - - for(const vault of config.VAULTS) { - await processVault(api, vault, balances); - } - - return balances; -} - -async function processVault(api, vault, balances) { - const { lend, borrow } = config.VAULT_TOKENS[vault]; - - const [userReserveDataLend, cashReserve] = await Promise.all([ - api.call({ - abi: userReserveDataAbi, - target: config.SUPERLEND_PROTOCOL_DATA_PROVIDER, - params: [lend, vault], - }), - api.call({ - abi: "function balanceOf(address user) external view returns (uint256)", - target: borrow, - params : [vault] - }) - ]); - - - sdk.util.sumSingleBalance(balances, lend, userReserveDataLend?.currentATokenBalance ?? '0', api.chain); - sdk.util.sumSingleBalance(balances, borrow, cashReserve, api.chain); -} - -async function borrowed(api) { - const balances = {} - - for(const vault of config.VAULTS) { - await processVaultBorrow(api, vault, balances); - } - - return balances; - -} - -async function processVaultBorrow(api, vault, balances) { - const { borrow } = config.VAULT_TOKENS[vault]; - - const userReserveDataBorrow = await api.call({ - abi: userReserveDataAbi, - target: config.SUPERLEND_PROTOCOL_DATA_PROVIDER, - params: [borrow, vault], - }); - - sdk.util.sumSingleBalance(balances, borrow, userReserveDataBorrow?.currentVariableDebt, api.chain); -} - -module.exports = { - etlk: { tvl, borrowed } -} diff --git a/projects/superman-swap/index.js b/projects/superman-swap/index.js deleted file mode 100644 index 5e64ec9fe0d..00000000000 --- a/projects/superman-swap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0xdE737bd1Af7D93Dd627D68511A9f69565D6D607b"; -const token = "0x1a5A8873DB5b83D9594A381F33CFE2A5543A9Ec6"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token, false) -}; \ No newline at end of file diff --git a/projects/superposition/index.js b/projects/superposition/index.js deleted file mode 100644 index f37e0a6a68f..00000000000 --- a/projects/superposition/index.js +++ /dev/null @@ -1,80 +0,0 @@ -const { getResources } = require("../helper/chain/aptos"); - -const spRootAddress = - "0xccd1a84ccea93531d7f165b90134aa0415feb30e8757ab1632dac68c0055f5c2"; - -let resourcesCache; - -async function _getResources() { - if (!resourcesCache) resourcesCache = getResources(spRootAddress); - return resourcesCache; -} - -const brokersFilter = (i) => - i.type.includes(`${spRootAddress}::broker::Broker`); - -const coinToFungibleAssetFilter = (i) => - i.type.includes(`${spRootAddress}::map::Map`); - -function processBrokerData(brokerDataArray, coinToFungibleAssetArray, isBorrowed = false) { - const coinToFungibleAssetMap = coinToFungibleAssetArray.reduce(function(map, item) { - map[item.type] = item.data.fa_metadata; - return map; - }, {}); - - const result = {}; - - brokerDataArray.map((item) => { - const { type, data } = item; - - const brokerType = type; - - const coinType = brokerType.match(/<([^>]+)>/)[1]; - - let tokenMint = coinType; - { - // Superposition uses custom coin types to represent fungible assets - // Find the fungible asset address so DefiLama can find - // the correct token price - const mapType = `${spRootAddress}::map::Map<${coinType}>`; - if (mapType in coinToFungibleAssetMap) { - tokenMint = coinToFungibleAssetMap[mapType]; - } - } - - result[tokenMint] = !isBorrowed ? parseInt(data.available) : parseInt(data.borrowed) - }); - - return result; -} - -function addBalanceData(balanceData, api) { - Object.entries(balanceData).forEach(([key, value]) => { - api.add(key, value); - }); -} - -module.exports = { - timetravel: false, - methodology: "Aggregates TVL from all brokers in the Superposition protocol.", - aptos: { - tvl: async (api) => { - const resources = await _getResources(); - const brokers = resources.filter(brokersFilter); - const coinToFungibleAssetArray = resources.filter( - coinToFungibleAssetFilter - ); - const balanceData = processBrokerData(brokers, coinToFungibleAssetArray); - addBalanceData(balanceData, api); - }, - borrowed: async (api) => { - const resources = await _getResources(); - const brokers = resources.filter(brokersFilter); - const coinToFungibleAssetArray = resources.filter( - coinToFungibleAssetFilter - ); - const balanceData = processBrokerData(brokers, coinToFungibleAssetArray, true); - addBalanceData(balanceData, api); - }, - }, -}; diff --git a/projects/superrare/index.js b/projects/superrare/index.js deleted file mode 100644 index 6d7a16498b6..00000000000 --- a/projects/superrare/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { request, gql } = require("graphql-request"); - -async function staking(_time, block){ - const query = gql`query AllRareLocked ($block: Int) { - pools(first: 1000, block: { number: $block }) { - totalRareLocked - } - }` - const result = await request("https://gateway-arbitrum.network.thegraph.com/api/5fba66cce34542163f90501c363f99e8/subgraphs/id/Cc4fyxiBkZYdzATQDhTv3zLzfEwRupygp7HB2WWQciw5", query, { - block, - }); - return { - "0xba5BDe662c17e2aDFF1075610382B9B691296350": result.pools.reduce((sum, a)=>sum+Number(a.totalRareLocked), 0) - } -} - -module.exports={ - ethereum:{ - staking, - tvl: async()=>({}) - } -} \ No newline at end of file diff --git a/projects/superstate-uscc/index.js b/projects/superstate-uscc/index.js deleted file mode 100644 index 874fd0269df..00000000000 --- a/projects/superstate-uscc/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { getTokenSupplies } = require("../helper/solana"); -const USCC = "0x14d60e7fdc0d71d8611742720e4c50e7a974020c"; -const USCC_SOL = "BTRR3sj1Bn2ZjuemgbeQ6SCtf84iXS81CS7UDTSxUCaK"; - -async function tvl(api) { - const totalSupplies = await api.call({ - target: USCC, - abi: "erc20:totalSupply", - }); - api.add(USCC, totalSupplies); -} - -async function tvl_plume(api) { - const totalSupplies = await api.call({ - target: ADDRESSES.plume_mainnet.USCC, - abi: "erc20:totalSupply", - }); - api.add(ADDRESSES.plume_mainnet.USCC, totalSupplies); -} - -async function tvl_solana(api) { - const totalSupplies = await getTokenSupplies([USCC_SOL], api); - api.addCGToken('superstate-uscc', totalSupplies[USCC_SOL] / 1e6) -} - -module.exports = { - methodology: "TVL corresponds to the total amount of USCC minted onchain, does not include Superstate book-entry AUM", - ethereum: { - tvl: tvl - }, - plume_mainnet: { - tvl: tvl_plume - }, - solana:{ - tvl: tvl_solana - } -}; diff --git a/projects/superstate/index.js b/projects/superstate/index.js deleted file mode 100644 index 43c942576d3..00000000000 --- a/projects/superstate/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { getTokenSupplies } = require("../helper/solana"); -const USTB = "0x43415eb6ff9db7e26a15b704e7a3edce97d31c4e"; -const USTB_SOL = "CCz3SGVziFeLYk2xfEstkiqJfYkjaSWb2GCABYsVcjo2"; - -async function tvl(api) { - const totalSupplies = await api.call({ - target: USTB, - abi: "erc20:totalSupply", - }); - api.add(USTB, totalSupplies); -} - -async function tvl_plume(api) { - const totalSupplies = await api.call({ - target: ADDRESSES.plume_mainnet.USTB, - abi: "erc20:totalSupply", - }); - api.add(ADDRESSES.plume_mainnet.USTB, totalSupplies); -} - -async function tvl_solana(api) { - const totalSupplies = await getTokenSupplies([USTB_SOL], api); - api.addCGToken("superstate-short-duration-us-government-securities-fund-ustb", totalSupplies[USTB_SOL] / 1e6) -} - -module.exports = { - methodology: "TVL corresponds to the total amount of USTB minted onchain, does not include Superstate book-entry AUM", - ethereum: { - tvl: tvl - }, - plume_mainnet: { - tvl: tvl_plume - }, - solana:{ - tvl: tvl_solana - } -}; \ No newline at end of file diff --git a/projects/superswap-v2/index.js b/projects/superswap-v2/index.js deleted file mode 100644 index eea758e2d45..00000000000 --- a/projects/superswap-v2/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") -const FACTORY = "0x22505cb4d5d10b2c848a9d75c57ea72a66066d8c" - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, permitFailure: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs.`, - optimism: { - tvl: dexTVL, - } -}; diff --git a/projects/superswap-v3/index.js b/projects/superswap-v3/index.js deleted file mode 100644 index b523c956f78..00000000000 --- a/projects/superswap-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3") - -module.exports = { - methodology: "TVL accounts for the liquidity on all AMM pools taken from the factory contract", - ...uniV3Export({ - optimism: { factory: "0xe52a36Bb76e8f40e1117db5Ff14Bd1f7b058B720", fromBlock: 124982239 }, - }) -} diff --git a/projects/supr-staking/index.js b/projects/supr-staking/index.js deleted file mode 100644 index 84463e778ac..00000000000 --- a/projects/supr-staking/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const SUPR = '0x3390108E913824B8eaD638444cc52B9aBdF63798' -const ROLLUX_SUPR_STAKING = '0x400aDCba906EA6E87FEC276f0E0C0857F71A85F2' -const ROLLUX_SUPR_GROUP_STAKING = '0xa9A37e4D70Fc6af8A0CC16995B9363f10dCE132E' - -async function staking(api) { - const bal = await api.call({ abi: 'erc20:totalSupply', target: ROLLUX_SUPR_STAKING }) - api.add(SUPR, bal) - return api.sumTokens({ owner: ROLLUX_SUPR_GROUP_STAKING, tokens: [SUPR] }) -} - -module.exports = { - rollux: { - tvl: () => ({}), - staking, - }, -} \ No newline at end of file diff --git a/projects/supra-staking/index.js b/projects/supra-staking/index.js deleted file mode 100644 index 8f127a1e7da..00000000000 --- a/projects/supra-staking/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { - invokeViewFunction, -} = require("../helper/chain/supra"); -const { transformBalances } = require("../helper/portedTokens"); - -const SUPRA_COIN_INFO_STRUCT_TYPE = ADDRESSES.supra.SUPRA -const STAKING_POOL_MODULE_ADDRESS = "0x9d8ed683cfe28c658df277f9f326dcd987fb553905e4e3f079ff70eac5d18bba" -const STAKING_POOL_STAKED_DATA_FUNCTION_TYPE = `${STAKING_POOL_MODULE_ADDRESS}::ValidatorPoolManager::get_validators_staked_data`; - -const calculateSupraStakingTVL = async (api) => { - let balances = {}; - let chain = api.chain; - let data = await invokeViewFunction( - STAKING_POOL_STAKED_DATA_FUNCTION_TYPE, - [], - [STAKING_POOL_MODULE_ADDRESS] - ); - - for (const item of data[1]) { - sdk.util.sumSingleBalance(balances, SUPRA_COIN_INFO_STRUCT_TYPE, item[0]); - } - return transformBalances(chain, balances); -}; - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - supra: { - tvl: calculateSupraStakingTVL, - }, -}; \ No newline at end of file diff --git a/projects/suprafi/index.js b/projects/suprafi/index.js deleted file mode 100644 index 454b4965122..00000000000 --- a/projects/suprafi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - methodology: "Retrieve the total underlying sonic supply", -} - -const config = { - sonic: "0x6ba47940f738175d3f8c22aa8ee8606eaae45eb2", -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const vault = config[chain] - const bal = await api.call({ abi: 'uint256:totalAssets', target: vault}) - api.addGasToken(bal) - } - } -}) diff --git a/projects/supswap-v2/index.js b/projects/supswap-v2/index.js deleted file mode 100644 index 2591ce252c4..00000000000 --- a/projects/supswap-v2/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens") - -module.exports = uniTvlExport('mode', '0x557f46F67a36E16Ff27e0a39C5DA6bFCB4Ff89c0') \ No newline at end of file diff --git a/projects/supswap-v3/index.js b/projects/supswap-v3/index.js deleted file mode 100644 index d22d7de2b41..00000000000 --- a/projects/supswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - mode: { factory: '0xa0b018Fe0d00ed075fb9b0eEe26d25cf72e1F693', fromBlock: 3061677 }, -}) \ No newline at end of file diff --git a/projects/surf-liquid/index.js b/projects/surf-liquid/index.js deleted file mode 100644 index 7a71f05cd48..00000000000 --- a/projects/surf-liquid/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const target = "0x1D283b668F947E03E8ac8ce8DA5505020434ea0E"; - -module.exports = { - methodology: "Counts the morpho deposits of each Surf Liquid vault.", - base: { - tvl: async (api) => { - const vaults = await api.call({ abi: "uint256:getTotalVaults", target }); - const vaultInfos = await api.multiCall({ - abi: "function getVaultInfo(uint256) view returns (address, address, address, uint256, bytes32, uint256)", - calls: [...Array(Number(vaults)).keys()].map((i) => ({ target, params: [i] })), - }); - const owners = vaultInfos.map(info => info[0]) - const morphoVaults = await api.multiCall({ - abi: "address:currentVault", - calls: owners.map(target => ({ target })) - }) - - await api.sumTokens({ - tokens: [...new Set(morphoVaults)], - owners - }) - }, - }, -}; diff --git a/projects/surfone/index.js b/projects/surfone/index.js deleted file mode 100644 index 39b3a29b31e..00000000000 --- a/projects/surfone/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const factoryContract = '0x5FeD7c030a1B3b40988984479Fdd666dE81038A3' -const positionContract = '0x1fa9702e774D31aB661D84f449b0Aa22c41D6827' -const merlinPoolContract = '0x69d2AbBCef322afcDAED52238f43882cEe3ACC08' -const merlinPositionContract = '0x7A3D0eBb547001E769F2A7AE3f0D7a9b3078F3C1' -const merlinConfigContract = '0xa3979d2A94F17196A9728A17765e5BD315CdacFb' -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvlBase(api) { - const data = await api.call({ abi: abi.getAllPools, target: factoryContract }) - const ownerTokens = data.map(i => [[i.baseToken], i.pool]) - ownerTokens.push([[ADDRESSES.base.USDC, ADDRESSES.base.WETH], positionContract]) - return api.sumTokens({ ownerTokens, }); -} - -async function merlinTvl(api) { - const tokens = await api.call({ abi: abi.getLiquidityTokens, target: merlinConfigContract }) - const lpTokens = tokens.map(i => i.indexToken) - return api.sumTokens({owners:[merlinPoolContract,merlinPositionContract], tokens: lpTokens}) -} - -module.exports = { - base: { tvl:tvlBase}, - merlin: {tvl:merlinTvl}, - methodology: "Count the total balance across all pools for all trading pairs.", -} - -const abi = { - "getAllPools": "function getAllPools() view returns (tuple(address baseToken, address spotToken, bytes32 spotTokenKey,string baseName,string spotName,uint24 feeP,address pool,uint256 index,uint8 groupIndex, uint256 chainId,bool reverse,uint256 flag)[])", - "getLiquidityTokens": "function getLiquidityTokens() view returns (tuple(uint256 tokenIndex, string symbol, bytes32 spotTokenKey, address indexToken, uint8 indexTokenDecimals, address lpToken, address[] collateralToken, uint256 tokenWeight, uint256 maxGlobalShortSize, uint256 maxGlobalLongSize, uint256 maxDailyRemoveSize, uint256 minAddLiquiditySize)[])" -} diff --git a/projects/surfswap-stableswap/index.js b/projects/surfswap-stableswap/index.js deleted file mode 100644 index fa5298e293c..00000000000 --- a/projects/surfswap-stableswap/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const abi = { - getTokens: "address[]:getTokens", -} - -async function tvl(api) { - const pools = [ - '0x62bf12869E145A862218eE7e28F942Cc7FaeC460', // base 4 pool - ] - - const tokens = await api.multiCall({ - abi: abi.getTokens, calls: pools, - }) - - const ownerTokens = tokens.map((v, i) => [v, pools[i]]) - return sumTokens2({ api, ownerTokens, }) -} - -module.exports = { - kava: { - tvl, - }, - deadFrom: "2023-08-13", -} diff --git a/projects/surfswap/index.js b/projects/surfswap/index.js deleted file mode 100644 index 25139599720..00000000000 --- a/projects/surfswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const dexTVL = getUniTVL({ - factory: "0xc449665520C5a40C9E88c7BaDa149f02241B1f9F", - useDefaultCoreAssets: true, -}) - -module.exports = { - hallmarks: [ - [1660521600, "incentives not given"] - ], - misrepresentedTokens: true, - kava: { - tvl:dexTVL, - } -} diff --git a/projects/surge-trade/index.js b/projects/surge-trade/index.js deleted file mode 100644 index 9257be46e31..00000000000 --- a/projects/surge-trade/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { queryAddresses } = require('../helper/chain/radixdlt') - -module.exports = { - radixdlt: { tvl }, -} - -async function tvl(api) { - const [{ details: { state }, fungible_resources }] = await queryAddresses({ addresses: ['component_rdx1crezrpxw9ypg6v2panqjqwevnwplg94yeej0rhqq9k7p4kgnltrc9g'], miscQuery: { "aggregation_level": "Vault" } }) - const stateObj = {} - state.fields.map(i => stateObj[i.field_name] = +i.value) - const poolAmount = parseFloat(fungible_resources.items[0].vaults.items[0].amount) - const tvl_usd = poolAmount + stateObj.virtual_balance + stateObj.unrealized_pool_funding + stateObj.pnl_snap - api.add('resource_rdx1t4upr78guuapv5ept7d7ptekk9mqhy605zgms33mcszen8l9fac8vf', tvl_usd) -} diff --git a/projects/surge/index.js b/projects/surge/index.js deleted file mode 100644 index d038a47c15d..00000000000 --- a/projects/surge/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { factory: '0x503A14768e23456620fB3Cb61e37A36A2736Cbd0', fromBlock: 107875529, } -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - const _getLogs = (api) => getLogs({ - api, - target: factory, - topics: ['0xfd4f84c703fbc9ed47d26b2769a6133a02ea690b88125c716c7321699d0115fa'], - eventAbi: 'event PoolDeployed(uint256 poolId, address pool, address indexed collateralToken, address indexed loanToken, uint256 indexed maxCollateralRatioMantissa, uint256 surgeMantissa, uint256 collateralRatioFallDuration, uint256 collateralRatioRecoveryDuration, uint256 minRateMantissa, uint256 surgeRateMantissa, uint256 maxRateMantissa)', - onlyArgs: true, - fromBlock, - }) - module.exports[chain] = { - tvl: async (api) => { - const logs = await _getLogs(api) - const ownerTokens = logs.map(l => [[l.collateralToken, l.loanToken], l.pool]) - return sumTokens2({ api, ownerTokens, }) - }, - borrowed: async (api) => { - const logs = await _getLogs(api) - const borrowed = await api.multiCall({ abi: 'uint256:lastTotalDebt', calls: logs.map(i => i.pool) }) - api.addTokens(logs.map(i => i.loanToken), borrowed) - return api.getBalances() - }, - } -}) \ No newline at end of file diff --git a/projects/surgedefi/index.js b/projects/surgedefi/index.js deleted file mode 100644 index deffd488bab..00000000000 --- a/projects/surgedefi/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ xrplevm: { factory: '0x05655ae2c8f310387B85DCB3785b8756F1759d86', fromBlock: 123251, } }) diff --git a/projects/sushi-aptos/index.js b/projects/sushi-aptos/index.js deleted file mode 100644 index 8812b8ac080..00000000000 --- a/projects/sushi-aptos/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { dexExport } = require('../helper/chain/aptos') - -module.exports = dexExport({ - account: '0x31a6675cbe84365bf2b0cbce617ece6c47023ef70826533bde5203d32171dc3c', - poolStr: 'swap::TokenPairReserve', - token0Reserve: i => i.data.reserve_x, - token1Reserve: i => i.data.reserve_y, -}) \ No newline at end of file diff --git a/projects/sushiswap-bentobox/bentobox.js b/projects/sushiswap-bentobox/bentobox.js deleted file mode 100644 index 76d6904833e..00000000000 --- a/projects/sushiswap-bentobox/bentobox.js +++ /dev/null @@ -1,52 +0,0 @@ -const { CONFIG, getTokens } = require("./helper"); - -const abi = "function toAmount(address token, uint256 share, bool roundUp) view returns (uint256 amount)"; - -const bentobox = async (api) => { - const chain = api.chain - const block = await api.getBlock() - if (chain === 'moonriver') return {} - - const [bentoTokens = [], tridentTokens = [], kashiTokens = [], furoTokens = []] = await Promise.all([ - getTokens(api, block, 'bento'), - CONFIG[api.chain]?.trident ? getTokens(api, block, 'trident') : Promise.resolve([]), - CONFIG[api.chain]?.kashi ? getTokens(api, block, 'kashi') : Promise.resolve([]), - CONFIG[api.chain]?.furo ? getTokens(api, block, 'furo') : Promise.resolve([]), -]); - - const shareBalances = {}; - kashiTokens.forEach((pair) => { - const assetId = pair.asset.id.toLowerCase(); - const collateralId = pair.collateral.id.toLowerCase(); - const assetShares = Number(pair.totalAsset.elastic); - const collateralShares = Number(pair.totalCollateralShare); - if (assetShares > 0) shareBalances[assetId] = (shareBalances[assetId] || 0) + assetShares; - if (collateralShares > 0) shareBalances[collateralId] = (shareBalances[collateralId] || 0) + collateralShares; - }); - - furoTokens.forEach((token) => { - const id = token.id.toLowerCase(); - const shares = Number(token.liquidityShares); - if (shares > 0) shareBalances[id] = (shareBalances[id] || 0) + shares; - }); - - const shareBalancesMap = {}; - const calls = Object.entries(shareBalances).map(([token, shares]) => ({ token, call: { target: CONFIG[api.chain].bentobox, params: [token, BigInt(shares), false] } })) - const balances = await api.multiCall({ abi, calls: calls.map(c => c.call) }); - calls.forEach(({ token }, i) => { shareBalancesMap[token] = balances[i] }); - - bentoTokens.forEach(({ id, symbol, rebase}) => { - const tokenId = id.toLowerCase(); - if (symbol === 'MIM') return; - api.add(id, rebase.elastic) - const tridentToken = tridentTokens.find(t => t.id.toLowerCase() === tokenId); - if (tridentToken) api.add(tokenId, -tridentToken.liquidity) - const shareBalance = shareBalancesMap[tokenId]; - if (shareBalance) api.add(id, -shareBalance) - }); -} - -module.exports = { - bentobox, - methodology: `TVL of BentoBox consist of tokens deposited into it minus Trident, Furo and Kashi TVL since they are built on it and already listed on DefiLlama.`, -}; diff --git a/projects/sushiswap-bentobox/helper.js b/projects/sushiswap-bentobox/helper.js deleted file mode 100644 index 501944edfdf..00000000000 --- a/projects/sushiswap-bentobox/helper.js +++ /dev/null @@ -1,216 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); - -const CONFIG = { - ethereum: { - bentobox: "0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", - bento: sdk.graph.modifyEndpoint('8HYeoDopVqqvb5RJEV2TtSzFsouYPz8cownnG3mbhiGy'), - furo: sdk.graph.modifyEndpoint('D8vYJpKN5SEHUkUWKSuorsL6FRt7hAQMnywnC4e93ygf'), - kashi: sdk.graph.modifyEndpoint('6Kf5cPeXUMVzfGCtzBnSxDU849w2YM2o9afn1uiPpy2m'), - }, - polygon: { - bentobox: "0x0319000133d3AdA02600f0875d2cf03D442C3367", - bento: sdk.graph.modifyEndpoint('6kJg5kFoQY8B8Ge2hqswHMqZDcmsR1TLUUz7AKov69fy'), - furo: sdk.graph.modifyEndpoint('4KsDNsyJjKX6bjwVNJQmJ7Dm3wovYXSX37UR39rNaMX4'), - kashi: sdk.graph.modifyEndpoint('5F3eB4Cm5mxorArsyrbs2a1TDxctmk3znpDZ4LEzqrBJ'), - trident: sdk.graph.modifyEndpoint('BSdbRfU6PjWSdKjhpfUQ6EgUpzMxgpf5c1ugaVwBJFsQ'), - }, - fantom: { - bentobox: "0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", - bento: sdk.graph.modifyEndpoint('2KqXx6dGw7T4mZeGKyzQ9m9iyuCMjPR8PntLB9Gn9AEK'), - furo: sdk.graph.modifyEndpoint('E98zSR5UZBGBgQe2SSLZ5R6yj5GPqKDJcQJNDHTeV3cS'), - }, - bsc: { - bentobox: "0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", - bento: sdk.graph.modifyEndpoint('BggyE3r5snDsjx19jgZcbiBH7cbtrkpjvyGLFHMdXekd'), - furo: sdk.graph.modifyEndpoint('2wBYezghRA3hEJLQB4njUZGDNxCdU3u2gsLP5yVvBqKk'), - kashi: sdk.graph.modifyEndpoint('D1TGHRKx2Q54ce2goyt9hbtKNuT94FDBsuPwtGg5EzRw'), - trident: sdk.graph.modifyEndpoint('9TQaBw1sU3wi2kdevuygKhfhjP3STnwBe1jUnKxmNhmn'), - }, - avax: { - bentobox: "0x0711b6026068f736bae6b213031fce978d48e026", - bento: sdk.graph.modifyEndpoint('EhYaJodF1WQjKgxx1ZC63goeCwp5swD4AQRdaKXBm2xk'), - furo: sdk.graph.modifyEndpoint('8LVoX3JPEVAak8T8GoEfdJudMoP2bsGwd9tszJxo3Rnx'), - kashi: sdk.graph.modifyEndpoint('BHeJByyVoNuVtqufK3Nk7YYmFkBs43boYpKv8z6hQ5Q1'), - trident: sdk.graph.modifyEndpoint('NNTV3MgqSGtHMBGdMVLXzzDbKDKmsY87k3PsQ2knmC1'), - }, - arbitrum: { - bentobox: "0x74c764D41B77DBbb4fe771daB1939B00b146894A", - bento: sdk.graph.modifyEndpoint('JZFyMKR4jnsFQ58q7dT6nbXenTzNgE176zTejc6Gf8Z'), - furo: sdk.graph.modifyEndpoint('8eHhPeKDr646JH5KUBBcabAJzkWmLfu6pqBtpXQHa37F'), - kashi: sdk.graph.modifyEndpoint('G3rbmaF7w2ZLQjZgGoi12BzPeL9z4MTW662iVyjYmtiX'), - trident: sdk.graph.modifyEndpoint('4x8H6ZoGfJykyZqAe2Kx2g5afsp17S9pn8GroRkpezhx'), - }, - optimism: { - bentobox: "0xc35DADB65012eC5796536bD9864eD8773aBc74C4", - bento: sdk.graph.modifyEndpoint('8b4Hy4Kn7jCNAf9JFrqHb24LsqmapG4HrAsCrwdJf9Nu'), - furo: sdk.graph.modifyEndpoint('8KnsmppMf9k6Qvyixxwmny7dYugTV7XT4htHTfyq3d69'), - trident: sdk.graph.modifyEndpoint('FEgRuH9zeTRMZgpVv5YavoFEcisoK6KHk3zgQRRBqt51'), - }, - xdai: { - bentobox: "0xE2d7F5dd869Fc7c126D21b13a9080e75a4bDb324", - bento: sdk.graph.modifyEndpoint('9jn9kA6SKCNxXQSqb93zZPLdLaru4FeZBwLNWAK4nfZ2'), - furo: sdk.graph.modifyEndpoint('5ToxB5xubMh9osdEDeX98JBAyzUVwkReGXAT1CzQhZCB'), - }, - harmony: { - bentobox: "0xA28cfF72b04f83A7E3f912e6ad34d5537708a2C2", - bento: sdk.graph.modifyEndpoint('Bioj7N3Rf2n7iBq9PVoaMie3WiuzPze9NMi7aSye7LFc'), - furo: sdk.graph.modifyEndpoint('9D9C3ppoDE1zuZk5adznngKomLYS8NnC9zxniSS8vzgH'), - }, - moonbeam: { - bentobox: "0x80C7DD17B01855a6D2347444a0FCC36136a314de", - bento: sdk.graph.modifyEndpoint('7wA5gqWNP4E1dPWBsTYvz5eQSDbtYDFgyU5BGdHr2UKp'), - furo: sdk.graph.modifyEndpoint('HJxpcsmaPV3L6PsqGFBHLczeMnL7bEgmL1D65edGx8pf'), - }, - moonriver: { - bentobox: "0x145d82bCa93cCa2AE057D1c6f26245d1b9522E6F", - bento: sdk.graph.modifyEndpoint('73XEV6UQKpPSJn68WZBAYTwALcZtFJkFYn58ZoZUb7tn'), - furo: sdk.graph.modifyEndpoint('9ZqdKjfu7o9dX1RThXHDV9EqMn5CTvgpsPKKbpANg8yC'), - }, - celo: { - bentobox: "0x0711B6026068f736bae6B213031fCE978D48E026", - bento: sdk.graph.modifyEndpoint('5DwkvjxPGVFFaWEMM68g1yztDdhCgJEYAxS6FuhkajzR'), - }, - kava: { - trident: "https://pvt.graph.kava.io/subgraphs/name/sushi-v2/trident-kava", - }, - metis: { - trident: "https://andromeda.thegraph.metis.io/subgraphs/name/sushi-v2/trident-metis", - }, - bittorrent: { - trident: "https://subgraphs.sushi.com/subgraphs/name/sushi-v2/trident-bttc", - }, -}; - -const QUERIES = { - bento: gql` - query get_tokens($block: Int, $id: ID!) { - tokens(block: { number: $block }, first: 1000, where: { id_gt: $id }) { - id - symbol - name - rebase { - elastic #amount - base #shares - } - } - } - `, - furo: gql` - query get_tokens($block: Int, $id: ID!) { - tokens( - block: { number: $block } - orderBy: liquidityShares - orderDirection: desc - first: 1000 - where: { liquidityShares_gt: 0, id_gt: $id } - ) { - id - liquidityShares #shares - symbol - name - } - } - `, - kashi: gql` - query get_pairs($block: Int, $id: ID!) { - kashiPairs(block: { number: $block }, first: 1000, where: { id_gt: $id }) { - id - asset { - id - } - collateral { - id - } - totalAsset { - elastic #shares - } - totalCollateralShare #shares - } - } - `, - trident: gql` - query get_tokens($block: Int, $id: ID!) { - tokens( - block: { number: $block } - first: 1000 - orderBy: liquidityUSD - orderDirection: desc - where: { liquidityUSD_gt: 0, id_gt: $id } - ) { - id - symbol - liquidity #amount - } - } - `, -}; - -const META_QUERY = gql` - query { - _meta { - block { - number - } - } - } -`; - -async function getLatestIndexedBlock(subgraph) { - const res = await request(subgraph, META_QUERY); - return res?._meta?.block?.number ?? 0; -} - -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -async function withRetry(fn, retries = 3, delay = 60_000) { - let lastError; - for (let i = 0; i < retries; i++) { - const result = await fn().catch(e => { - lastError = e; - return null; - }); - if (result !== null) return result; - if (i < retries - 1) await sleep(delay); - } - throw lastError; -} - -async function getTokens(api, block, protocolType) { - const subgraph = CONFIG[api.chain]?.[protocolType]; - if (!subgraph) return protocolType === 'bento' ? [] : {}; - - const latest = await getLatestIndexedBlock(subgraph); - const maxAllowedDrift = 1000; - - if (latest === 0 || latest < block - maxAllowedDrift) { - sdk.log(`[${api.chain}-${protocolType}] Subgraph too far behind (${latest} vs expected ${block}) → skipping`); - return protocolType === 'bento' ? [] : {}; - } - - const safeBlock = latest >= block ? block : latest; - - return await withRetry(() => fetchAllTokens(subgraph, QUERIES[protocolType], safeBlock, protocolType)); -} - -async function fetchAllTokens(subgraph, query, block, type) { - let lastId = 0; - const allTokens = []; - const isKashi = type === 'kashi'; - const key = isKashi ? 'kashiPairs' : 'tokens'; - - // eslint-disable-next-line no-constant-condition - while (true) { - const result = await request(subgraph, query, { id: lastId, block }); - const tokens = result[key] || []; - allTokens.push(...tokens); - if (tokens.length < 1000) break; - lastId = tokens[999].id; - } - - return allTokens; -} - -module.exports = { CONFIG, getTokens, fetchAllTokens }; diff --git a/projects/sushiswap-bentobox/index.js b/projects/sushiswap-bentobox/index.js deleted file mode 100644 index a059eef3fbe..00000000000 --- a/projects/sushiswap-bentobox/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { bentobox } = require("./bentobox.js"); - -const bentobox_chains = [ - "ethereum", - "polygon", - // "fantom", - // "bsc", - "avax", - "arbitrum", - "optimism", - "xdai", - // "harmony", - "moonbeam", - "moonriver", - //"kava", - //"metis", - "celo", -]; - -bentobox_chains.forEach((chain) => { - module.exports[chain] = { - tvl: chain === "fantom" || chain === "avax" ? () => ({ }) : (api) => bentobox(api), - }; -}); diff --git a/projects/sushiswap-furo/furo.js b/projects/sushiswap-furo/furo.js deleted file mode 100644 index 2376c8075e8..00000000000 --- a/projects/sushiswap-furo/furo.js +++ /dev/null @@ -1,81 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); -const { isWhitelistedToken } = require('../helper/streamingHelper') - -const graphUrls = { - ethereum: - sdk.graph.modifyEndpoint('D8vYJpKN5SEHUkUWKSuorsL6FRt7hAQMnywnC4e93ygf'), - polygon: - sdk.graph.modifyEndpoint('4KsDNsyJjKX6bjwVNJQmJ7Dm3wovYXSX37UR39rNaMX4'), - fantom: sdk.graph.modifyEndpoint('E98zSR5UZBGBgQe2SSLZ5R6yj5GPqKDJcQJNDHTeV3cS'), - bsc: sdk.graph.modifyEndpoint('2wBYezghRA3hEJLQB4njUZGDNxCdU3u2gsLP5yVvBqKk'), - avax: sdk.graph.modifyEndpoint('8LVoX3JPEVAak8T8GoEfdJudMoP2bsGwd9tszJxo3Rnx'), - arbitrum: - sdk.graph.modifyEndpoint('8eHhPeKDr646JH5KUBBcabAJzkWmLfu6pqBtpXQHa37F'), - optimism: - sdk.graph.modifyEndpoint('8KnsmppMf9k6Qvyixxwmny7dYugTV7XT4htHTfyq3d69'), - xdai: sdk.graph.modifyEndpoint('5ToxB5xubMh9osdEDeX98JBAyzUVwkReGXAT1CzQhZCB'), - harmony: - sdk.graph.modifyEndpoint('9D9C3ppoDE1zuZk5adznngKomLYS8NnC9zxniSS8vzgH'), - moonbeam: - sdk.graph.modifyEndpoint('HJxpcsmaPV3L6PsqGFBHLczeMnL7bEgmL1D65edGx8pf'), - moonriver: - sdk.graph.modifyEndpoint('9ZqdKjfu7o9dX1RThXHDV9EqMn5CTvgpsPKKbpANg8yC'), -}; - -const bentoboxes = { - ethereum: "0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", - polygon: "0x0319000133d3AdA02600f0875d2cf03D442C3367", - fantom: "0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", - bsc: "0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", - avax: "0x0711b6026068f736bae6b213031fce978d48e026", - arbitrum: "0x74c764D41B77DBbb4fe771daB1939B00b146894A", - optimism: "0xc35DADB65012eC5796536bD9864eD8773aBc74C4", - xdai: "0xE2d7F5dd869Fc7c126D21b13a9080e75a4bDb324", - harmony: "0xA28cfF72b04f83A7E3f912e6ad34d5537708a2C2", - moonbeam: "0x80C7DD17B01855a6D2347444a0FCC36136a314de", - moonriver: "0x145d82bCa93cCa2AE057D1c6f26245d1b9522E6F", -}; - -const furoQuery = gql` - query get_tokens($block: Int) { - tokens( - orderBy: liquidityShares - orderDirection: desc - first: 1000 - where: { liquidityShares_gt: 0 } - ) { - id - liquidityShares - symbol - name - } - } -`; - -const toAmountAbi = 'function toAmount(address token, uint256 share, bool roundUp) view returns (uint256 amount)' - -function furo(chain, isVesting) { - return async (api) => { - const graphUrl = graphUrls[chain]; - - // Query graphql endpoint - let { tokens } = await request(graphUrl, furoQuery, { block: (await api.getBlock()) - 100, }); - - tokens = tokens.filter(t => isWhitelistedToken(t.symbol, t.id, isVesting)) - const calls = tokens.map(token => ({ params: [token.id, token.liquidityShares, false] })) - - const output = await api.multiCall({ - target: bentoboxes[chain], - abi: toAmountAbi, - calls, - }) - const _tokens = tokens.map(t => t.id) - api.add(_tokens, output) - }; -} - -module.exports = { - furo, - methodology: `TVL of Furo consists of tokens deployed into a Stream or a Vesting sitting in BentoBox.`, -}; diff --git a/projects/sushiswap-furo/index.js b/projects/sushiswap-furo/index.js deleted file mode 100644 index 436fe95d871..00000000000 --- a/projects/sushiswap-furo/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { furo } = require("./furo.js"); - -const furo_chains = [ - "ethereum", - "polygon", - "fantom", - "bsc", - "avax", - "arbitrum", - "optimism", - "xdai", - "harmony", - "moonbeam", - "moonriver", -]; - -furo_chains.forEach((chain) => { - module.exports[chain] = { - tvl: furo(chain, false), - vesting: furo(chain, true), - }; -}); diff --git a/projects/sushiswap-kashi/index.js b/projects/sushiswap-kashi/index.js deleted file mode 100644 index 087c1d030c9..00000000000 --- a/projects/sushiswap-kashi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { kashiLending } = require("./kashi-lending.js"); - -const modulesToExport = {}; -const kashi_chains = ["ethereum", "polygon", "bsc", "avax", "arbitrum"]; - -kashi_chains.forEach((chain) => { - modulesToExport[chain] = { - tvl: kashiLending(chain, false), - borrowed: kashiLending(chain, true), - }; -}); - -module.exports = { - deadFrom: '2025-01-01', - misrepresentedTokens: true, - ...modulesToExport, -}; diff --git a/projects/sushiswap-kashi/kashi-lending.js b/projects/sushiswap-kashi/kashi-lending.js deleted file mode 100644 index 6f047d904bf..00000000000 --- a/projects/sushiswap-kashi/kashi-lending.js +++ /dev/null @@ -1,97 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require('../helper/coreAssets.json') -const { blockQuery } = require("../helper/http"); - -const graphUrls = { - ethereum: sdk.graph.modifyEndpoint('6Kf5cPeXUMVzfGCtzBnSxDU849w2YM2o9afn1uiPpy2m'), - polygon: sdk.graph.modifyEndpoint('5F3eB4Cm5mxorArsyrbs2a1TDxctmk3znpDZ4LEzqrBJ'), - arbitrum: sdk.graph.modifyEndpoint('G3rbmaF7w2ZLQjZgGoi12BzPeL9z4MTW662iVyjYmtiX'), - bsc: sdk.graph.modifyEndpoint('D1TGHRKx2Q54ce2goyt9hbtKNuT94FDBsuPwtGg5EzRw'), - avax: sdk.graph.modifyEndpoint('BHeJByyVoNuVtqufK3Nk7YYmFkBs43boYpKv8z6hQ5Q1'), -}; - -const bentoboxes = { - ethereum: "0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", - polygon: "0x0319000133d3AdA02600f0875d2cf03D442C3367", - arbitrum: "0x74c764D41B77DBbb4fe771daB1939B00b146894A", - bsc: "0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", - avax: "0x0711b6026068f736bae6b213031fce978d48e026", -}; - -const toAmountAbi = 'function toAmount(address token, uint256 share, bool roundUp) view returns (uint256 amount)' - -const kashiQuery = ` - query get_pairs($block: Int) { - kashiPairs(block: { number: $block }, first: 1000) { - id - asset { - id - } - collateral { - id - } - totalAsset { - elastic - } - totalBorrow { - elastic - } - totalCollateralShare - } - } -`; - -function kashiLending(chain, borrowed) { - return async (api) => { - if(borrowed === true && api.timestamp > 1672534861){ - return {} - } - const graphUrl = graphUrls[chain]; - - // Query graphql endpoint - const { kashiPairs } = await blockQuery(graphUrl, kashiQuery, { - api - }); - const calls = [] - - kashiPairs.map(async (pair) => { - if ( - pair.asset.id === ADDRESSES.null || - pair.collateral.id === ADDRESSES.null - ) { - return; - } - if (borrowed) { - if (+pair.totalBorrow.elastic <= 0) { - return; - } - //count tokens borrowed - const shares = pair.totalBorrow.elastic; - //convert shares to amount - calls.push({ params: [pair.asset.id, shares, false] }) - } else { - if (+pair.totalAsset.elastic <= 0) { - return; - } - //count tokens not borrowed + collateral - const assetShares = pair.totalAsset.elastic; - const collateralShares = pair.totalCollateralShare; - calls.push({ params: [pair.asset.id, assetShares, false] }) - calls.push({ params: [pair.collateral.id, collateralShares, false] }) - } - }) - - const output = await api.multiCall({ - calls, abi: toAmountAbi, target: bentoboxes[chain], - }) - - output.forEach((balance, idx) => { - api.add(calls[idx].params[0], balance) - }) - }; -} - -module.exports = { - kashiLending, - methodology: `TVL of Kashi lending consists of the tokens available to borrow and the ones used as collateral, tokens borrowed are not counted to avoid inflating TVL through cycled lending.`, -}; diff --git a/projects/sushiswap-trident/index.js b/projects/sushiswap-trident/index.js deleted file mode 100644 index 7431fb18362..00000000000 --- a/projects/sushiswap-trident/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { getTokens, fetchAllTokens } = require("../sushiswap-bentobox/helper.js"); - -const polygonOldRouter = sdk.graph.modifyEndpoint('5LBvcUQthQDZTMe6cyJ7DbeokFkYeVpYYBZruHPUjMG5') - -const modulesToExport = {}; -const trident_chains = [ - "polygon", - "optimism", - // "kava", - "metis", - "bittorrent", - "arbitrum", - "bsc", - "avax", -]; - -const tridentQuery = ` - query get_tokens { - tokens( - first: 100 - orderBy: liquidityUSD - orderDirection: desc - where: { liquidityUSD_gt: 0 } - ) { - id - symbol - liquidity - } - } -`; - -async function fetchAndAddTridentTokens(api, block, subgraph) { - const tokens = subgraph - ? await fetchAllTokens(subgraph, tridentQuery, block, 'trident') - : await getTokens(api, block, 'trident'); - - for (const { id, liquidity } of tokens) { - api.add(id, liquidity); - } -} - -const tvl = async (api) => { - const block = await api.getBlock(); - await fetchAndAddTridentTokens(api, block); - if (api.chain === 'polygon') await fetchAndAddTridentTokens(api, block, polygonOldRouter); -} - -trident_chains.forEach((chain) => { - modulesToExport[chain] = { tvl } -}); - -module.exports.methodology = `TVL of Trident consist of tokens deployed into swapping pairs.` - -module.exports = { - ...modulesToExport, -}; - -module.exports.kava = { tvl: () => 0} -module.exports.bittorrent = { tvl: () => 0} -module.exports.bsc = { tvl: () => 0} -module.exports.avax = { tvl: () => 0} -module.exports.arbitrum = { tvl: () => 0} -module.exports.avax = { tvl: () => 0} -module.exports.metis = { tvl: () => 0} \ No newline at end of file diff --git a/projects/sushiswap-v3/index.js b/projects/sushiswap-v3/index.js deleted file mode 100644 index 013876596ef..00000000000 --- a/projects/sushiswap-v3/index.js +++ /dev/null @@ -1,147 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const { cachedGraphQuery, getConfig, } = require('../helper/cache'); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const factory = "0xc35dadb65012ec5796536bd9864ed8773abc74c4" - -/* -Arbitrum: https://thegraph.com/explorer/subgraphs/96EYD64NqmnFxMELu2QLWB95gqCmA9N96ssYsZfFiYHg -Avalanche: https://thegraph.com/explorer/subgraphs/4BxsTB5ADnYdgJgdmzyddmnDGCauctDia28uxB1hgTBE -Base: https://thegraph.com/explorer/subgraphs/Cz4Snpih41NNNPZcbj1gd3fYXPwFr5q92iWMoZjCarEb -Boba: https://thegraph.com/explorer/subgraphs/71VWMKCvsWRqrJouxmEQwSEMqqnqiiVYSxTZvzR8PHRx -BSC: https://thegraph.com/explorer/subgraphs/FiJDXMFCBv88GP17g2TtPh8BcA8jZozn5WRW7hCN7cUT -Ethereum: https://thegraph.com/explorer/subgraphs/5nnoU1nUFeWqtXgbpC54L9PWdpgo7Y9HYinR3uTMsfzs -Fantom: https://thegraph.com/explorer/subgraphs/4BzEvR229mwKjneCbJTDM8dsS3rjgoKcXt5C7J1DaUxK -Fuse: https://thegraph.com/explorer/subgraphs/8P62wYTJvhd6Aas656hVYhsccsGo2ihrJShaEnCoLJRK -Gnosis: https://thegraph.com/explorer/subgraphs/GFvGfWBX47RNnvgwL6SjAAf2mrqrPxF91eA53F4eNegW -Linea: https://thegraph.com/explorer/subgraphs/E2vqqvSzDdUiPP1r7PFnPKZQ34pAhNZjc6rEcdj3uE5t -Moonriver: https://thegraph.com/explorer/subgraphs/F46W9YVQXGism5iN9NZNhKm2DQCvjhr4u847rL1tRebS -Optimism: https://thegraph.com/explorer/subgraphs/Dr3FkshPgTMMDwxckz3oZdwLxaPcbzZuAbE92i6arYtJ -Polygon: https://thegraph.com/explorer/subgraphs/CqLnQY1d6DLcBYu7aZvGmt17LoNdTe4fDYnGbE2EgotR -PolygonZkEVM: https://thegraph.com/explorer/subgraphs/E2x2gmtYdm2HX3QXorUBY4KegfGu79Za6TEQYjVrx15c -Scroll: https://thegraph.com/explorer/subgraphs/5gyhoHx768oHn3GxsHsEc7oKFMPFg9AH8ud1dY8EirRc -*/ - -const uniV3Config = { - ethereum: { - factory: "0xbACEB8eC6b9355Dfc0269C18bac9d6E2Bdc29C4F", - fromBlock: 16955547, - }, - arbitrum: { - factory: "0x1af415a1EbA07a4986a52B6f2e7dE7003D82231e", - fromBlock: 75998697, - blacklistedTokens: ['0x920675303c7460c86a5b24053db1176a52b85ba6'], - }, - optimism: { - factory: "0x9c6522117e2ed1fE5bdb72bb0eD5E3f2bdE7DBe0", - fromBlock: 85432013, - }, - polygon: { - factory: "0x917933899c6a5F8E37F31E19f92CdBFF7e8FF0e2", - fromBlock: 41024971, - }, - arbitrum_nova: { - factory: "0xaa26771d497814e81d305c511efbb3ced90bf5bd", - fromBlock: 4242300, - }, - avax: { - factory: "0x3e603C14aF37EBdaD31709C4f848Fc6aD5BEc715", - fromBlock: 28186391, - }, - bsc: { - factory: "0x126555dd55a39328F69400d6aE4F782Bd4C34ABb", - fromBlock: 26976538, - }, - fantom: { - factory: "0x7770978eED668a3ba661d51a773d3a992Fc9DDCB", - fromBlock: 58860670, - }, - fuse: { - factory: "0x1b9d177CcdeA3c79B6c8F40761fc8Dc9d0500EAa", - fromBlock: 22556035, - }, - xdai: { - factory: "0xf78031CBCA409F2FB6876BDFDBc1b2df24cF9bEf", - fromBlock: 27232871, - }, - moonbeam: { - factory: "0x2ecd58F51819E8F8BA08A650BEA04Fc0DEa1d523", - fromBlock: 3264275, - }, - moonriver: { - factory: "0x2F255d3f3C0A3726c6c99E74566c4b18E36E3ce6", - fromBlock: 3945310, - }, - // boba: { factory: '0x0BE808376Ecb75a5CF9bB6D237d16cd37893d904', fromBlock: 998556, }, - polygon_zkevm: { - factory: "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506", - fromBlock: 80860, - }, - thundercore: { factory, fromBlock: 132536332, }, - base: { - factory, - fromBlock: 1759510, - blacklistedTokens: [ - '0xcfca86136af5611e4bd8f82d83c7800ca65d875b', - '0x0b0fd8317735dd9fe611fbc7e1d138149f8ebcea', - ] - }, - core: { factory, fromBlock: 5211850, }, - linea: { factory, fromBlock: 53256, }, - scroll: { factory: '0x46B3fDF7b5CDe91Ac049936bF0bDb12c5d22202e', fromBlock: 82522, }, - kava: { factory: '0x1e9B24073183d5c6B7aE5FB4b8f0b1dd83FDC77a', fromBlock: 7251753, }, - metis: { factory: '0x145d82bCa93cCa2AE057D1c6f26245d1b9522E6F', fromBlock: 9077930, }, - bittorrent: { factory: '0xBBDe1d67297329148Fe1ED5e6B00114842728e65', fromBlock: 29265724, }, - //zeta: { factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', fromBlock: 1551069, }, - islm: { factory, fromBlock: 6541826, }, - blast: { factory: '0x7680d4b43f3d1d54d6cfeeb2169463bfa7a6cf0d', fromBlock: 284122, }, - //europa: { factory: '0x51d15889b66A2c919dBbD624d53B47a9E8feC4bB', fromBlock: 5124251, }, - //rsk: { factory: '0x46B3fDF7B5cde91Ac049936bF0Bdb12C5D22202E', fromBlock: 6365060, }, //this one - sonic: { factory: '0x46B3fDF7B5cde91Ac049936bF0Bdb12C5D22202E', fromBlock: 1, }, //this one - hemi: { factory: '0xCdBCd51a5E8728E0AF4895ce5771b7d17fF71959', fromBlock: 507517, }, - katana: { factory: "0x203e8740894c8955cB8950759876d7E7E45E04c1", fromBlock: 1858973, }, -} - -Object.values(uniV3Config).forEach(i => i.permitFailure = true) // allow failure for all chains - -module.exports = uniV3Export(uniV3Config); - -const config = { - filecoin: { endpoint: 'https://sushi.laconic.com/subgraphs/name/sushiswap/v3-filecoin' }, - europa: { endpoint: 'https://elated-tan-skat-graph.skalenodes.com:8000/subgraphs/name/sushi/v3-skale-europa' }, - zeta: { endpoint: 'https://api.goldsky.com/api/public/project_cls39ugcfyhbq01xl9tsf6g38/subgraphs/v3-zetachain/1.0.0/gn' }, - rsk: { endpoint: 'https://api.goldsky.com/api/public/project_clslspm3c0knv01wvgfb2fqyq/subgraphs/sushiswap/v3-rootstock-2/gn' }, -} - -const query = `{ - pools(first:1000) { - id - token0 { id } - token1 { id } - } -}` - -Object.keys(config).forEach(chain => { - const { endpoint } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const { pools } = await cachedGraphQuery('sushiswap-v3/' + chain, endpoint, query, { api, }) - const ownerTokens = pools.map(i => [[i.token0.id, i.token1.id], i.id]) - return api.sumTokens({ ownerTokens, permitFailure: true, }) - } - } -}) - -const config1 = { - islm: { endpoint: 'https://evm-qwhwlq6ji.sushi.com/pool/api/pools?chainIds=11235&isWhitelisted=true&orderBy=liquidityUSD&orderDir=desc&protocols=SUSHISWAP_V3' }, -} - -Object.keys(config1).forEach(chain => { - const { endpoint } = config1[chain] - module.exports[chain] = { - tvl: async (api) => { - const pools = await getConfig('sushiswap-v3/' + chain, endpoint) - const ownerTokens = pools.map(i => [[i.token0.id.split(':')[1], i.token1.id.split(':')[1]], i.id.split(':')[1]]) - return sumTokens2({ api, ownerTokens, permitFailure: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js deleted file mode 100644 index 5b829cd6eaa..00000000000 --- a/projects/sushiswap/api.js +++ /dev/null @@ -1,144 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { toUSDTBalances } = require('../helper/balances'); -const { blockQuery } = require('../helper/http') -const { getUniTVL } = require("../helper/unknownTokens") - - -/* -Arbitrum: https://thegraph.com/explorer/subgraphs/8yBXBTMfdhsoE5QCf7KnoPmQb7QAWtRzESfYjiCjGEM9 -Avalanche: https://thegraph.com/explorer/subgraphs/5DpWu6oLUEwKYLcya5fJf3MW5CE6yEMnZ8iwekmTNAbV -Base: https://thegraph.com/explorer/subgraphs/7pXNLCc12pRM3bBPUAP9ZoEvkgUCjaBe9QC3DV9L2qzE -Boba: https://thegraph.com/explorer/subgraphs/9cssJAh4EyzEWqZySBFguiXyygwZZAGBE3ETsGetNUK -BSC: https://thegraph.com/explorer/subgraphs/24xqSifM5xPfGrW8MDwRhgaDsq7uaP2762fmxjyxJzot -CELO: https://thegraph.com/explorer/subgraphs/8WcZLSs8QUSJptPbpBScoDafmp8E9whnSqYJc9TMyYFs -Ethereum: https://thegraph.com/explorer/subgraphs/GyZ9MgVQkTWuXGMSd3LXESvpevE8S8aD3uktJh7kbVmc -Fantom: https://thegraph.com/explorer/subgraphs/J7wEPt9nDHCno143dk6whAUesPyszxPqCDKhqDqWJHuz -Fuse: https://thegraph.com/explorer/subgraphs/FrcJbZ3j9GZ3vF8G9uVEFQZeTD8uiCc1A1eujtxYUwYH -Gnosis: https://thegraph.com/explorer/subgraphs/7czeiia7ZXvsW45szX2w8EK1ZNgZWZET83zYCwE6JT9x -Harmony: https://thegraph.com/explorer/subgraphs/3k9M7aZqeJXWLUogc2FSFBgXuxej2qstKSUNBXcPCcK5 -Linea: https://thegraph.com/explorer/subgraphs/G4sRz1YAcEFYFewGLQ9bt76gQuP1oyuzhVSTvs9bj7qn -Moonbeam: https://thegraph.com/explorer/subgraphs/6MMVBsG9hgS8BzLZfPnU8KJdGiEFbd3CyNXVG6gQKCdQ -Moonriver: https://thegraph.com/explorer/subgraphs/DuB755c1VYFSLLhq4b783ryPcvYdsvimGuZzBpFqoapX -Optimism: https://thegraph.com/explorer/subgraphs/4KvWjKY89DefJ6mPMASCTUDAZ6dyHSu7osCNQqaaaY3y -Polygon: https://thegraph.com/explorer/subgraphs/8obLTNcEuGMieUt6jmrDaQUhWyj2pys26ULeP3gFiGNv -PolygonZkEVM: https://thegraph.com/explorer/subgraphs/6QS4nmWq9Wv6WPQRk1F7RJnnKcAcUBhzaiF9ZHfkUcp4 -Scroll: https://thegraph.com/explorer/subgraphs/CiW3nquNZjKDoMfR4TbSpB4ox8Pq66FDxwSsohigSdxw -*/ - -const graphEndpoints = { - polygon: sdk.graph.modifyEndpoint('8obLTNcEuGMieUt6jmrDaQUhWyj2pys26ULeP3gFiGNv') -} - -const graphUrl = sdk.graph.modifyEndpoint('8TXwDMLemg6p4eicVuixKk7Mw9aNxpod1PQQFdSvFj6H') -const graphQuery = ` -query get_tvl($block: Int) { - uniswapFactory( - id: "0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac", - block: { number: $block } - ) { - totalVolumeUSD - totalLiquidityUSD - } -} -`; -const graphQueryPolygon = ` -query get_tvl($block: Int) { - uniswapFactory( - id: "0xc35dadb65012ec5796536bd9864ed8773abc74c4", - block: { number: $block } - ) { - totalLiquidityUSD - } -} -`; - -async function eth(api) { - const { uniswapFactory } = await blockQuery(graphUrl, graphQuery, { api, blockCatchupLimit: 1000 }); - const usdTvl = Number(uniswapFactory.totalLiquidityUSD) - - return toUSDTBalances(usdTvl) -} - -function getChainTVL() { - return async (api) => { - let endpoint = graphEndpoints[api.chain] - if (!endpoint) throw new Error('Missing graph endpoint') - - const { factory } = await blockQuery(endpoint, graphQueryPolygon, { api, blockCatchupLimit: 1000 }); - const usdTvl = Number(factory.totalLiquidityUSD) - - return toUSDTBalances(usdTvl) - } -} - -const factory = '0xc35DADB65012eC5796536bD9864eD8773aBc74C4' -const tvl = getUniTVL({ - factory, useDefaultCoreAssets: true, blacklist: [ - '0xed0b4b0f0e2c17646682fc98ace09feb99af3ade', // RVRS - '0x00598f74DA03489d4fFDb7Fde54db8E3D3AA9a61', // GSHIB - '0xE38928cd467AD7347465048b3637893124187d02', // GSHIB - '0xc0e39cbac6a5c5cdcdf2c1a1c29cbf5917754943', // GSHIB - ], -}) -const tvl2 = getUniTVL({ factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', useDefaultCoreAssets: true, }) - -module.exports = { - ethereum: { tvl: eth, }, - polygon: { tvl, }, - telos: { tvl, }, - palm: { tvl, }, - moonriver: { tvl, }, - celo: { tvl, }, - okexchain: { tvl, }, - arbitrum: { tvl, }, - xdai: { tvl, }, - harmony: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, queryBatched: 200 }), }, - fantom: { tvl, }, - bsc: { tvl, }, - heco: { tvl, }, - boba: { tvl, }, - //boba_avax: { tvl, }, - boba_bnb: { tvl, }, - avax: { tvl, }, - fuse: { - tvl: getUniTVL({ factory: '0x43eA90e2b786728520e4f930d2A71a477BF2737C', useDefaultCoreAssets: true, }), - }, - arbitrum_nova: { tvl, }, - //moved kava to trident adapter - //kava: { // tvl: kavaTridentTvl, //}, - base: { - tvl: getUniTVL({ factory: '0x71524B4f93c58fcbF659783284E38825f0622859', useDefaultCoreAssets: true, }), - }, - scroll: { tvl: tvl2, }, - kava: { - tvl: getUniTVL({ factory: '0xD408a20f1213286fB3158a2bfBf5bFfAca8bF269', useDefaultCoreAssets: true, }), - }, - metis: { - tvl: getUniTVL({ factory: '0x580ED43F3BBa06555785C81c2957efCCa71f7483', useDefaultCoreAssets: true, }), - }, - bittorrent: { tvl: tvl2, }, - filecoin: { - tvl: getUniTVL({ factory: '0x9B3336186a38E1b6c21955d112dbb0343Ee061eE', useDefaultCoreAssets: true, }), - }, - zeta: { - tvl: getUniTVL({ factory: '0x33d91116e0370970444B0281AB117e161fEbFcdD', useDefaultCoreAssets: true, }), - }, - blast: { tvl: getUniTVL({ factory: '0x42Fa929fc636e657AC568C0b5Cf38E203b67aC2b', useDefaultCoreAssets: true, }) }, - core: { tvl: tvl2 }, - rsk: { tvl: tvl2 }, - europa: { tvl: getUniTVL({ factory: '0x1aaF6eB4F85F8775400C1B10E6BbbD98b2FF8483', useDefaultCoreAssets: true, }) }, - moonbeam: { tvl: getUniTVL({ factory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4', useDefaultCoreAssets: true, }) }, - polygon_zkevm: { tvl: tvl2 }, - optimism: { tvl: getUniTVL({ factory: '0xFbc12984689e5f15626Bad03Ad60160Fe98B303C', useDefaultCoreAssets: true, }) }, - linea: { tvl: getUniTVL({ factory: '0xFbc12984689e5f15626Bad03Ad60160Fe98B303C', useDefaultCoreAssets: true, }) }, - thundercore: { tvl: tvl2 }, - islm: { tvl: tvl2 }, - sonic: { tvl: tvl2 }, - hemi: { tvl: getUniTVL({ factory: '0x9B3336186a38E1b6c21955d112dbb0343Ee061eE', useDefaultCoreAssets: true, }), }, - katana: { tvl: getUniTVL({ factory: '0x72D111b4d6f31B38919ae39779f570b747d6Acd9', useDefaultCoreAssets: true, }) }, -} - -// module.exports.polygon.tvl = getChainTVL('polygon') -// module.exports.bsc.tvl = getChainTVL('bsc') -// module.exports.fantom.tvl = getChainTVL('fantom') -// module.exports.harmony.tvl = getChainTVL('harmony') diff --git a/projects/sushiswap/historical.js b/projects/sushiswap/historical.js deleted file mode 100644 index 1c411e70c35..00000000000 --- a/projects/sushiswap/historical.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { getChainTvl } = require('../helper/getUniSubgraphTvl') -const {staking} = require('../helper/staking') - -const subgraphs = { - 'ethereum': 'sushiswap/exchange', - 'xdai': 'sushiswap/xdai-exchange', - 'polygon': 'sushiswap/matic-exchange', - 'fantom': 'sushiswap/fantom-exchange', - 'bsc': 'sushiswap/bsc-exchange', - //'harmony': 'https://sushi.graph.t.hmny.io/subgraphs/name/sushiswap/harmony-exchange', - //'okexchain': 'https://q.hg.network/subgraphs/name/sushiswap/okex-exchange', - 'avax': 'sushiswap/avalanche-exchange', - 'celo': 'sushiswap/celo-exchange', - 'arbitrum': 'sushiswap/arbitrum-exchange', - //'okexchain': 'https://q.hg.network/subgraphs/name/okex-exchange/oec', - 'heco': 'https://q.hg.network/subgraphs/name/heco-exchange/heco', -} - -const chainTvl = getChainTvl( - Object.fromEntries(Object.entries(subgraphs).map(s => [s[0], s[1].startsWith("http")?s[1]:"https://api.thegraph.com/subgraphs/name/" + s[1]])), - "factories", - "liquidityUSD" -) - -const subgraphChainTvls = Object.keys(subgraphs).reduce((obj, chain) => ({ - ...obj, - [chain]: { - tvl:chainTvl(chain) - } -}), {}) - -const xSUSHI = "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272" -const SUSHI = ADDRESSES.ethereum.SUSHI - -subgraphChainTvls.ethereum.staking = staking(xSUSHI, SUSHI); - -module.exports=subgraphChainTvls; \ No newline at end of file diff --git a/projects/sushiswap/index.js b/projects/sushiswap/index.js deleted file mode 100644 index 3739a6b4870..00000000000 --- a/projects/sushiswap/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {staking} = require('../helper/staking') -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./api') - -const xSUSHI = "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272" -const SUSHI = ADDRESSES.ethereum.SUSHI -// const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - -// // module.exports = { -// // timetravel: false, -// // misrepresentedTokens: true, -// // ...getExports("sushiswap", chainKeys), -// // } - -module.exports = indexExports -module.exports.misrepresentedTokens = true - -module.exports.ethereum.staking = staking(xSUSHI, SUSHI) -// node test.js projects/sushiswap/index.js \ No newline at end of file diff --git a/projects/suter-shield/index.js b/projects/suter-shield/index.js deleted file mode 100644 index dd2d0962827..00000000000 --- a/projects/suter-shield/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { sumTokensExport, } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require('../helper/tokenMapping') -const config = { - ethereum: [ - [ADDRESSES.null, '0x02b4E089E96a0A672dE0a0d93E2869B899b15a44'], - [nullAddress, '0x934cc5704165711296207b5AFc87933AE0685a4C'], - [ADDRESSES.ethereum.USDT, '0x29abf1a011cdfb9548dc8faa6d19b1b39808bf58'], - [ADDRESSES.ethereum.USDT, '0xB8fcF79EAd34E98e45fc21E5dB1C5C561d906371'], - [ADDRESSES.ethereum.DAI, '0x54A8e0C76Eec21DD30842FbbcA2D336669102b77'], - [ADDRESSES.ethereum.DAI, '0xbdf418486D438e44F5aAC6aF86330dA638ea70AD'], - ], bsc: [ - [ADDRESSES.null, '0x2A00d7d2de1E147a3BCAa122B4EC5D6f9F0c1147'], - [ADDRESSES.null, '0x5bb6eE37a6503fe381207c3BAC0Aa6d7B33590Fa'], - [ADDRESSES.bsc.BUSD, '0xe557c77Ed24df7cDF21ED55a8C56Ea36CeBD5BD2'], - [ADDRESSES.bsc.BUSD, '0x382926Ba4D92E5d7652A85Aa7085Ffb15b6b6C89'], - ['0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', '0x8cc4c8529c0D8bb9B9FA197530d656cCBcB88DeB'], - ['0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', '0xa19e53Af2381F34AEcA80cDcEBF6c4a3F37037a2'], - ['0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5', '0x9D529c70fD8e072786b721190f6E6B30e433690a'], - ['0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5', '0x6F3Ad49e287c2dC12aA5f0bD9e8173C57d1AdECa'], - ] -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ tokensAndOwners: config[chain], }) - } -}) diff --git a/projects/suzaku/index.js b/projects/suzaku/index.js deleted file mode 100644 index c1e3b9fef9c..00000000000 --- a/projects/suzaku/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -async function tvl(api) { - const logs = await getLogs2({ api, factory: '0xE5296638Aa86BD4175d802A210E158688e41A93c', eventAbi: 'event AddEntity(address indexed entity)', fromBlock: 20011312, }) - const COLLATERALS = logs.map(log => log.entity) - const tokens = await api.multiCall({ abi: 'address:asset', calls: COLLATERALS, }) - return api.sumTokens({ tokensAndOwners2: [tokens, COLLATERALS] }) -} - -module.exports = { - start: '2024-09-30', - avax: { - tvl, - }, -} diff --git a/projects/svn/abi.json b/projects/svn/abi.json deleted file mode 100644 index 23394820bb9..00000000000 --- a/projects/svn/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 lastRewardTime, uint256 accMSharePerShare, bool isStarted)", - "poolInfo2": "function poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 lastRewardTime, uint256 accSavannaPerShare, bool isStarted)" -} \ No newline at end of file diff --git a/projects/svn/index.js b/projects/svn/index.js deleted file mode 100644 index d142ca9e76a..00000000000 --- a/projects/svn/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { pool2 } = require('../helper/pool2') -const { staking } = require('../helper/staking') - -let share = "0xf8b9facB7B4410F5703Eb29093302f2933D6E1Aa"; -const rewardPool = "0xA51054BDf0910E3cE9B233e6B5BdDc0931b2E2ED"; -const masonry = "0x2CcbFD9598116cdF9B94fF734ece9dCaF4c9d471"; -const pool2LPs = [ - "0xB6E1705BfAFcf1efEE83C135C0F0210653bAB8F0", - "0xc924da29d37f3b8C62c4c3e4e6958bF2b5ebF677", -] - -async function tvl(api) { - await sumTokens2({ - api, tokens: [ - "0xB6E1705BfAFcf1efEE83C135C0F0210653bAB8F0", - "0xc924da29d37f3b8C62c4c3e4e6958bF2b5ebF677", - "0x97749c9B61F878a880DfE312d2594AE07AEd7656", - "0x50c0C5bda591bc7e89A342A3eD672FB59b3C46a7", - ADDRESSES.cronos.WCRO_1, - "0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03", - ], owner: '0x3827CAa33557304e1CA5D89c2f85919Da171C44D', resolveLP: true - }) - api.removeTokenBalance(ADDRESSES.cronos.SVN) -} -module.exports = { - cronos: { - tvl, - pool2: pool2(rewardPool, pool2LPs), - staking: staking(masonry, share), - } -}; \ No newline at end of file diff --git a/projects/swaap-earn/index.js b/projects/swaap-earn/index.js deleted file mode 100644 index dc7fe787673..00000000000 --- a/projects/swaap-earn/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const query = `query FundsTVL{ funds { id } }` - -module.exports = { - start: '2024-04-17', // Apr 17 2024 00:00:00 GMT+0000 -} - -const config = { - arbitrum: { endpoint: 'https://api.goldsky.com/api/public/project_clws2t7g7ae9c01xsbnu80a51/subgraphs/swaap-earn-arbitrum/1.0.0/gn', }, - ethereum: { endpoint: 'https://api.goldsky.com/api/public/project_clws2t7g7ae9c01xsbnu80a51/subgraphs/swaap-earn-ethereum/1.0.0/gn', }, -} - -Object.keys(config).forEach(chain => { - const { endpoint } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const { funds } = await cachedGraphQuery('swaap-earn/' + chain, endpoint, query) - return api.erc4626Sum({ calls: funds.map(i => i.id), isOG4626: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/swaap-v2/index.js b/projects/swaap-v2/index.js deleted file mode 100644 index 3a212aa3721..00000000000 --- a/projects/swaap-v2/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const {onChainTvl} = require("../helper/balancer"); - -/** - * All vaults are created by the same factory contract, deployed with same address, - * but at different blocks on each chain. - */ -const config = { - ethereum: { vault: '0xd315a9c38ec871068fec378e4ce78af528c76293', fromBlock: 17598578, }, - arbitrum: { vault: '0xd315a9c38ec871068fec378e4ce78af528c76293', fromBlock: 137451745, permitFailure: true }, - polygon: { vault: '0xd315a9c38ec871068fec378e4ce78af528c76293', fromBlock: 44520023,}, - optimism: { vault: '0xd315a9c38ec871068fec378e4ce78af528c76293', fromBlock: 120693792, }, - bsc: { vault: '0x03c01acae3d0173a93d819efdc832c7c4f153b06', fromBlock: 39148730,}, - base: { vault: '0x03c01acae3d0173a93d819efdc832c7c4f153b06', fromBlock: 14451361,}, - mode: { vault: '0xd315a9c38ec871068fec378e4ce78af528c76293', fromBlock: 7242549,}, - mantle: { vault: '0xd315a9c38ec871068fec378e4ce78af528c76293', fromBlock: 65689171,}, - scroll: { vault: '0xd315a9c38ec871068fec378e4ce78af528c76293', fromBlock: 6934854,}, - linea: { vault: '0xd315a9c38ec871068fec378e4ce78af528c76293', fromBlock: 6052579,}, -} - -/** - * Standalone pools are pools that are not created by the factory contract. - * We need only poolIds for computation, - * but addresses and tokens are for more transparency - */ - - -Object.keys(config).forEach(chain => { - const { vault, fromBlock, permitFailure } = config[chain] - module.exports[chain] = { - tvl: onChainTvl(vault, fromBlock, { permitFailure }) - } -}) \ No newline at end of file diff --git a/projects/swaap/index.js b/projects/swaap/index.js deleted file mode 100644 index d1af4e2f774..00000000000 --- a/projects/swaap/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { cachedGraphQuery } = require('../helper/cache') - -const configV1 = { - polygon: { - startBlock: 29520285, - blockDelay: 30, - theGraph: { - endpoint: 'https://api.goldsky.com/api/public/project_clws2t7g7ae9c01xsbnu80a51/subgraphs/swaapv1/1.0.0/gn', - query: `pools: pools(orderBy: liquidity, orderDirection: desc) { - id - tokens { - address - } - }` - } - } -} - - -async function tvl(api) { - const chain = api.chain - const fetchAllPools = `query ($block: Int) { ${configV1[chain]['theGraph']['query']} }`; - const results = await cachedGraphQuery('swaaap-v1/' + chain, configV1[chain]['theGraph']['endpoint'], fetchAllPools, { api }); - - const toa = results.pools.map(i => i.tokens.map(j => ([j.address, i.id]))).flat() - return sumTokens2({ api, tokensAndOwners: toa, }) -} - -module.exports = { - start: '2022-06-13', // Jun-13-2022 02:30:42 PM +UTC - polygon: { - tvl, - }, -}; diff --git a/projects/swampfinance/index.js b/projects/swampfinance/index.js deleted file mode 100644 index 9ea696dcac7..00000000000 --- a/projects/swampfinance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { yieldHelper, } = require("../helper/yieldHelper") - -module.exports = yieldHelper({ - project: 'swamp-finance', - chain: 'bsc', - masterchef: '0x33AdBf5f1ec364a4ea3a5CA8f310B597B8aFDee3', - nativeToken: '0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d', - blacklistedTokens: [ADDRESSES.bsc.BTCB, ADDRESSES.bsc.ETH] -}) \ No newline at end of file diff --git a/projects/swanswap/index.js b/projects/swanswap/index.js deleted file mode 100644 index 8d455c73695..00000000000 --- a/projects/swanswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shape', '0x2Be0c88CCc1d42920beAe4633CDdBbACe5e8812c') \ No newline at end of file diff --git a/projects/swap-coffee/index.js b/projects/swap-coffee/index.js deleted file mode 100644 index 38d7d74dbf8..00000000000 --- a/projects/swap-coffee/index.js +++ /dev/null @@ -1,88 +0,0 @@ -const { sumTokensExport, getJettonsInfo } = require('../helper/chain/ton') -const { get } = require('../helper/http') -const { transformDexBalances } = require('../helper/portedTokens') -const { address } = require('../helper/utils/ton') -const ADDRESSES = require("../helper/coreAssets.json") - -// CES -const CES_MASTER = "0:a5d12e31be87867851a28d3ce271203c8fa1a28ae826256e73c506d94d49edad" -const CES_STAKING_CONTRACT = "0:29f90533937d696105883b981e9427d1ae411eef5b08eab83f4af89c495d27df" -const DEDUST_TON_CES_POOL = "0:123e245683bd5e93ae787764ebf22291306f4a3fcbb2dcfcf9e337186af92c83" -const STONFI_CES_TON_POOL = "0:6a839f7a9d6e5303d71f51e3c41469f2c35574179eb4bfb420dca624bb989753" - -// XROCK -const XROCK_MASTER = "0:157c463688a4a91245218052c5580807792cf6347d9757e32f0ee88a179a6549" -const XROCK_STAKING_CONTRACT = "0:c84deaf1d956d5f80be722bbdaeeba33d70d068ace97c6fc23e1bfeb5689e1ca" -const DEDUST_XROCK_USDT_POOL = "0:9cf96b400deedd4143bd113d8d767f0042515e2ad510c4b4adbe734cd30563b8" -const STONFI_XROCK_USDT_POOL = "0:6ba0e19f6adacbefdcbbc859407241eff578f4a57edc8e3e05e86dcfbb283f20" - -// JETTON -const JETTON_STAKING_CONTRACT = "0:160d382ed1a373e7e859d1a76b319b4a3e5c8945f26fc8177662ac59a2c67f38" -const JETTON_MASTER = "0:105e5589bc66db15f13c177a12f2cf3b94881da2f4b8e7922c58569176625eb5" -const STONFI_V2_JETTON_TON_POOL = "0:ff5f1fa2411d33dc6268cd0b74744d726e0c01145c9f4f9c9e867c0e244de490" -const DEDUST_JETTON_TON_POOL = "0:f417fc37e424d65314d646379fa15fb8d342910368d7e755f87b3220994518ff" -const STONFI_JETTON_TON_POOL = "0:139eae96db1bf5d02d7d2cd942dbac45b535757dbccc917997402587aadbfa3a" -const DEDUST_JETTON_USDT_POOL = "0:98ac7350eecb80d1f1d690912e2ed5e541e2efff1a722670103f97ed2407f473" -const STONFI_JETTON_USDT_POOL = "0:1b011c80e68e5942aab7e5c79b7b4faacd4999ecda9579df58b3edfbcca414f4" -const STONFI_V2_JETTON_USDT_POOL = "0:46fe73fa794a69f3d6723d10b136dc884061df06e602ccb5d58414306efe5310" - -// DFC -const DFC_STAKING_CONTRACT = "0:3acaf26d83f9bff8b88b72434fb6ab23182f5153e7690a07557e9626f8824bab" -const DFC_MASTER = "0:f6eb371de82aa9cfb5b22ca547f31fdc0fa0fbb41ae89ba84a73272ff0bf2157" -const DEDUST_DFC_TON_POOL = "0:84868f284afcd59de33eab700b57d18c3a8473946370ac6b6ae29db1dd29c89c" -const STONFI_DFC_TON_POOL = "0:a66a91222d03b4b9810e9af0de5cd47d8b947891854f126c8d2447304824d251" - -const COFFEE_TON_ADDRESS = "native" - -module.exports = { - methodology: "Counts swap.coffee smartcontract balance as TVL.", - timetravel: false, - ton: { - tvl: async () => { - const pools = await get('https://backend.swap.coffee/v1/dex/pools') - - const jettonIds = [...new Set( - pools.flatMap(item => [item.tokens[0], item.tokens[1]]).filter(val => val !== COFFEE_TON_ADDRESS) - )]; - - const jettonInfo = await getJettonsInfo(jettonIds) - const decimals = {[COFFEE_TON_ADDRESS]: 9} - for (const data of jettonInfo) { - decimals[address(data.metadata.address).toString()] = parseInt(data.metadata.decimals) - } - - return await transformDexBalances({ - chain: 'ton', - data: pools.map(i => ({ - token0: normalizeAddress(i.tokens[0]), - token1: normalizeAddress(i.tokens[1]), - token0Bal: i.reserves[0] * (10 ** decimals[i.tokens[0]]), - token1Bal: i.reserves[1] * (10 ** decimals[i.tokens[1]]), - })) - }) - }, - staking: sumTokensExport({ - owners: [CES_STAKING_CONTRACT, XROCK_STAKING_CONTRACT, JETTON_STAKING_CONTRACT, DFC_STAKING_CONTRACT], - tokens: [XROCK_MASTER, CES_MASTER, JETTON_MASTER, DFC_MASTER], - onlyWhitelistedTokens: true - }), - pool2: sumTokensExport({ - owners: [CES_STAKING_CONTRACT, XROCK_STAKING_CONTRACT, JETTON_STAKING_CONTRACT, DFC_STAKING_CONTRACT], - tokens: [ - DEDUST_TON_CES_POOL, STONFI_CES_TON_POOL, - - DEDUST_XROCK_USDT_POOL, STONFI_XROCK_USDT_POOL, - - STONFI_V2_JETTON_TON_POOL, DEDUST_JETTON_TON_POOL, STONFI_JETTON_TON_POOL, DEDUST_JETTON_USDT_POOL, - STONFI_JETTON_USDT_POOL, STONFI_V2_JETTON_USDT_POOL, - - DEDUST_DFC_TON_POOL, STONFI_DFC_TON_POOL - ], - onlyWhitelistedTokens: true - }) - } -} - -function normalizeAddress(addr) { - return addr === COFFEE_TON_ADDRESS ? ADDRESSES.ton.TON : addr -} \ No newline at end of file diff --git a/projects/swapbase/index.js b/projects/swapbase/index.js deleted file mode 100644 index 48f50ec0dac..00000000000 --- a/projects/swapbase/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - base: { tvl: getUniTVL({ factory: '0x04C9f118d21e8B767D2e50C946f0cC9F6C367300', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/swapbased-cl/index.js b/projects/swapbased-cl/index.js deleted file mode 100644 index 8f0a92f7bcd..00000000000 --- a/projects/swapbased-cl/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - base: { - hallmarks: [ - [1714957200,"change contracts"] - ], - factory: "0xb5620F90e803C7F957A9EF351B8DB3C746021BEa", //replace factory , from algebra dex to pancake v3 (univ3) - fromBlock: 13766585, - }, -}); \ No newline at end of file diff --git a/projects/swapbased-perp/index.js b/projects/swapbased-perp/index.js deleted file mode 100644 index d1b63dfa8d5..00000000000 --- a/projects/swapbased-perp/index.js +++ /dev/null @@ -1,8 +0,0 @@ -//const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - -module.exports = { - base:{ - tvl: gmxExports({ vault: '0x210b49f74040A385840a3276E81bA9010954d064', }) - } -}; \ No newline at end of file diff --git a/projects/swapblast-v3/index.js b/projects/swapblast-v3/index.js deleted file mode 100644 index 0c52b35e3b4..00000000000 --- a/projects/swapblast-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - blast: { - factory: "0x3e1402b653f219D0840A44CBF7FD8F193C2a348A", - fromBlock: 598283 - }, -}); \ No newline at end of file diff --git a/projects/swapblast/index.js b/projects/swapblast/index.js deleted file mode 100644 index 4d91985c31f..00000000000 --- a/projects/swapblast/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - blast: { tvl: getUniTVL({ factory: '0x04C9f118d21e8B767D2e50C946f0cC9F6C367300', useDefaultCoreAssets: true, }), }, -} \ No newline at end of file diff --git a/projects/swapcat/index.js b/projects/swapcat/index.js deleted file mode 100644 index 9cc1e12a586..00000000000 --- a/projects/swapcat/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { fetchURL } = require('../helper/utils') -const { toUSDTBalances } = require('../helper/balances') - -const chainIds = { - ethereum: 1, - xdai: 100, - polygon: 137, - gochain: 60, - bsc: 56, - tomochain: 88, - fantom: 250, - avax: 43114, - moonriver: 1285, - celo: 42220, - songbird: 19, - harmony: 1666600000, - ethereumclassic: 61, - heco: 128, - rsk: 30, - okexchain: 66, - hpb: 269, - energyweb: 246, - kcc: 321, - arbitrum: 42161, - smartbch: 10000, -} - -function chainTvl(chain) { - return async () => { - const data = await fetchURL(`https://swap.cat/api/?tvl=${chainIds[chain]}`) - return toUSDTBalances(data.data) - } -} - -const tvls = Object.keys(chainIds).reduce((obj, chain) => ({ - ...obj, - [chain]: { - offers: chainTvl(chain) - } - }), {}) -tvls.ethereumclassic.tvl = async () => ({}); - -module.exports = { - timetravel: false, - misrepresentedTokens:true, - ...tvls, -} diff --git a/projects/swapfish/index.js b/projects/swapfish/index.js deleted file mode 100644 index cea2a2b4ef5..00000000000 --- a/projects/swapfish/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { staking } = require("../helper/staking"); - -const MasterChefContract = "0x33141e87ad2DFae5FBd12Ed6e61Fa2374aAeD029"; -const MasterChefBscContract = "0x671eFBa3F6874485cC39535fa7b525fe764985e9"; -const FISH = "0xb348B87b23D5977E2948E6f36ca07E1EC94d7328"; - -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - methodology: `Uses factory(0x71539D09D3890195dDa87A6198B98B75211b72F3) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - arbitrum: { - tvl: getUniTVL({ factory: '0x71539D09D3890195dDa87A6198B98B75211b72F3', useDefaultCoreAssets: true }), - staking: staking(MasterChefContract, FISH), - }, - bsc: { - tvl: getUniTVL({ factory: '0x71539D09D3890195dDa87A6198B98B75211b72F3', useDefaultCoreAssets: true }), - staking: staking(MasterChefBscContract, FISH), - } -}; - - diff --git a/projects/swapline-lb-v2/index.js b/projects/swapline-lb-v2/index.js deleted file mode 100644 index 7ae217039cf..00000000000 --- a/projects/swapline-lb-v2/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - base: '0x20918F4BA70439C58d070D4746f3aA303a7595d8' -}) \ No newline at end of file diff --git a/projects/swapline/index.js b/projects/swapline/index.js deleted file mode 100644 index 0e6c329e375..00000000000 --- a/projects/swapline/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - fantom: '0x640801a6983c109805E928dc7d9794080C21C88E', - optimism: '0xd08C98F6409fCAe3E61f3157B4147B6595E60cf3', - polygon_zkevm: '0x5A5c0C4832828FF878CE3ab4fEc44d21200b1496', - arbitrum: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', - base: '0x5A5c0C4832828FF878CE3ab4fEc44d21200b1496', - shimmer_evm: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', -}) - -module.exports.hallmarks = [ - [1682298000, "Launch on Optimism"], - [1689037200, "Launch on Arbitrum"], - [1690848000, "Launch on Base"], - [1702857600, "Launch on ShimmerEVM"] -] \ No newline at end of file diff --git a/projects/swapmatic/index.js b/projects/swapmatic/index.js deleted file mode 100644 index b07e85a55ea..00000000000 --- a/projects/swapmatic/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const BigNumber = require('bignumber.js'); -const { getLogs } = require('../helper/cache/getLogs') - -const START_BLOCK = 3285065 - 1; -const FACTORY = '0x90D882B2789523403ff263D1F93Ead986c38446C'; -const MATIC = ADDRESSES.ethereum.MATIC.toLowerCase(); - -async function tvl(api) { - const chain = 'polygon' - const logs = (await getLogs({ - api, - target: FACTORY, - fromBlock: START_BLOCK, - topic: 'NewExchange(address,address)', - })); - - const exchanges = {}; - logs.forEach((log) => { - const tokenAddress = `0x${log.topics[1].substring(26)}`.toLowerCase(); - const exchangeAddress = `0x${log.topics[2].substring(26)}`.toLowerCase(); - exchanges[exchangeAddress] = tokenAddress; - }); - - // note that this undercounts ETH locked - // it only measures ETH in exchanges for supported tokens - const ETHBalances = ( - await sdk.api.eth - .getBalances({ - targets: Object.keys(exchanges).map((exchangeAddress) => exchangeAddress), - block: api.block, - chain, - }) - ).output; - - return { - [MATIC]: ETHBalances.reduce( - (accumulator, ETHBalance) => - accumulator.plus(new BigNumber(ETHBalance.balance)), - new BigNumber('0') - ).times(2).toFixed(0), - } -} - -module.exports = { - misrepresentedTokens: true, - polygon: { tvl } -} diff --git a/projects/swapmode-v3/index.js b/projects/swapmode-v3/index.js deleted file mode 100644 index 0d83ba82188..00000000000 --- a/projects/swapmode-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const factory = '0x6E36FC34eA123044F278d3a9F3819027B21c9c32' - -module.exports = uniV3Export({ - mode: { factory, fromBlock: 5005167 }, -}) \ No newline at end of file diff --git a/projects/swapos/index.js b/projects/swapos/index.js deleted file mode 100644 index 710642fa8e2..00000000000 --- a/projects/swapos/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport( - 'ethereum', - '0xfB1Eb9a45Feb7269f3277233AF513482Bc04Ea63' -); diff --git a/projects/swapp/index.js b/projects/swapp/index.js deleted file mode 100644 index b052b245703..00000000000 --- a/projects/swapp/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0xEe4fa96b695De795071d40EEad0e8Fd42cdB9951) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - cronos: { - tvl: getUniTVL({ factory: '0xEe4fa96b695De795071d40EEad0e8Fd42cdB9951', useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/swapperchan/index.js b/projects/swapperchan/index.js deleted file mode 100644 index c301e120755..00000000000 --- a/projects/swapperchan/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - boba:{ - tvl: getUniTVL({ - factory: '0x3d97964506800d433fb5dbebdd0c202ec9b62557', - useDefaultCoreAssets: true, - }) - } -} diff --git a/projects/swappi/index.js b/projects/swappi/index.js deleted file mode 100644 index 445e2f18b60..00000000000 --- a/projects/swappi/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -module.exports = { - misrepresentedTokens: true, - conflux: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xe2a6f7c0ce4d5d300f97aa7e125455f5cd3342f5'}), - } -} \ No newline at end of file diff --git a/projects/swapr-v3/index.js b/projects/swapr-v3/index.js deleted file mode 100644 index 3ce20ae5ff5..00000000000 --- a/projects/swapr-v3/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - xdai: { - factory: "0xa0864cca6e114013ab0e27cbd5b6f4c8947da766", - fromBlock: 30096640, - isAlgebra: true, - }, -}); diff --git a/projects/swapr/index.js b/projects/swapr/index.js deleted file mode 100644 index 52b3c519735..00000000000 --- a/projects/swapr/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const FACTORY_ADDRESS = Object.freeze({ - ethereum: "0xd34971BaB6E5E356fd250715F5dE0492BB070452", - xdai: "0x5d48c95adffd4b40c1aaadc4e08fc44117e02179", - arbitrum: "0x359f20ad0f42d75a5077e65f30274cabe6f4f01a", -}); - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(FACTORY_ADDRESS).forEach(chain => { - const factory = FACTORY_ADDRESS[chain] - module.exports[chain] = { - tvl: getUniTVL({ chain, useDefaultCoreAssets: true, factory }) - } -}) diff --git a/projects/swaprum/index.js b/projects/swaprum/index.js deleted file mode 100644 index 8a14b53512f..00000000000 --- a/projects/swaprum/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -const { stakings } = require("../helper/staking"); - -const factory = "0xD757C986a28F82761Fe874Bc40073718dC1e980C"; -const SAPR = "0x2aE25460c44d578E6f41aB900a7A5425b6492C16" -const pools = [ - "0x2B6deC18E8e4DEf679b2E52e628B14751F2f66bc", -] - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - staking: stakings(pools, SAPR,), - tvl: getUniTVL({ useDefaultCoreAssets: true, factory }) - }, - // hallmarks: [ - // ['2023-05-18', 'Project rugged!'], - // ], -}; \ No newline at end of file diff --git a/projects/swapscanner-staking/index.js b/projects/swapscanner-staking/index.js deleted file mode 100644 index e0d48b95604..00000000000 --- a/projects/swapscanner-staking/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { nullAddress } = require('../helper/unwrapLPs'); -const chain = 'klaytn' - -const SCNR = { - GCKLAY: '0x999999999939ba65abb254339eec0b2a0dac80e9' -} - -module.exports = { - klaytn: { - tvl: async (_, _b, {klaytn:block}) => { - const gcklayBal = await sdk.api2.abi.call({ - target: SCNR.GCKLAY, - abi: 'erc20:totalSupply', - chain, block, - }) - - const balances = {} - sdk.util.sumSingleBalance(balances, nullAddress, gcklayBal, chain) - return balances; - } - }, - timetravel: false, -} diff --git a/projects/swapscanner/index.js b/projects/swapscanner/index.js deleted file mode 100644 index 3b0563fdc47..00000000000 --- a/projects/swapscanner/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const SCNR = { - address: "0x8888888888885b073f3c81258c27e83db228d5f3", - staking: "0x7c59930d1613ca2813e5793da72b324712f6899d", - LPs: { - KLAY: "0xe1783a85616ad7dbd2b326255d38c568c77ffa26", - }, -}; - -const WKLAY = "0xd7a4d10070a4f7bc2a015e78244ea137398c3b74"; - -async function getTokenPrice(api) { - const [scnrLPBal, klayLPBal] = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: [[SCNR.address, SCNR.LPs.KLAY],[WKLAY, SCNR.LPs.KLAY]].map(([target, params]) => ({ target, params, })), - }) - return klayLPBal/scnrLPBal -} - -async function staking(api) { - const scnrBal = await api.call({ - abi: 'erc20:balanceOf', - target: SCNR.address, - params: SCNR.staking, - }) - - api.add(WKLAY,scnrBal * await getTokenPrice(api)) -} - -async function pool2(api) { - const [klayLPBal, lpBalance] = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: [[WKLAY, SCNR.LPs.KLAY],[SCNR.LPs.KLAY, SCNR.staking]].map(([target, params]) => ({ target, params, })), - }) - - const supply = await api.call({ - target: SCNR.LPs.KLAY, - abi: 'erc20:totalSupply', - }) - - api.add(WKLAY,2*klayLPBal * lpBalance/supply) -} - - -module.exports = { - klaytn: { - tvl: async () => ({}), - staking, - pool2, - }, -}; \ No newline at end of file diff --git a/projects/swapsicle-v2/iceCreamVanABI.json b/projects/swapsicle-v2/iceCreamVanABI.json deleted file mode 100644 index 570d0d1f790..00000000000 --- a/projects/swapsicle-v2/iceCreamVanABI.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalShares": "uint256:totalShares" -} \ No newline at end of file diff --git a/projects/swapsicle-v2/index.js b/projects/swapsicle-v2/index.js deleted file mode 100644 index 04d7290f053..00000000000 --- a/projects/swapsicle-v2/index.js +++ /dev/null @@ -1,123 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const { cachedGraphQuery } = require("../helper/cache"); -const sdk = require("@defillama/sdk"); -const iceCreamVanABI = require("./iceCreamVanABI.json"); -const zombieVanABI = require("./zombieVanABI.json"); -const ADDRESSES = require("../helper/coreAssets.json"); - -module.exports = uniV3Export({ - mantle: { - factory: "0xC848bc597903B4200b9427a3d7F61e3FF0553913", - fromBlock: 9796947, - isAlgebra: true, - }, - telos: { - factory: "0xA09BAbf9A48003ae9b9333966a8Bda94d820D0d9", - fromBlock: 301362984, - isAlgebra: true, - }, - taiko: { - factory: "0xBa90FC740a95A6997306255853959Bb284cb748a", - fromBlock: 338445, - isAlgebra: true, - }, -}); - -const contracts = { - telos: { - stakingContract_iceCreamVan: "0xA234Bb3BEb60e654601BEa72Ff3fB130f9ed2aa7", - stakingContract_zombieVan: "0x67275189e0deb3ce9eb918928c0011a0a582bd0e", - stakingContract_iceCreamZombies: "0x581b6d860aa138c46dcaf6d5c709cd070cd77eb8", - slush: "0xac45ede2098bc989dfe0798b4630872006e24c3f", - }, - mantle: { - stakingContract_iceCreamVan: "0xe0ac81c7692b9119658e01edc1d743bf4c2ec21a", - stakingContract_zombieVan: "0x049a58a2aa1b15628aa0cda0433d716f6f63cbba", - stakingContract_iceCreamZombies: "0x21b276de139ce8c75a7b4f750328dbf356195b49", - slush: "0x8309bc8bb43fb54db02da7d8bf87192355532829", - }, - taiko: { - stakingContract_iceCreamVan: "0x0cdde1dead51b156bd62113664d60b354b4df4ab", - slush: "0x36bfe1f1b36cfdb4fe75cc592ff5dc6200ad3e0f", - }, -}; - -const config = { - mantle: { - endpoint: - "https://subgraph-api.mantle.xyz/api/public/f077c8d4-0d6c-42d4-9bbd-050948dc5c86/subgraphs/swapsicle/analytics/prod/gn", - }, - telos: { - endpoint: - "https://api.telos.0xgraph.xyz/api/public/f59149ee-c99a-41d0-afe4-1c86170a98b0/subgraphs/swapsicle/analytics/prod/gn", - }, - taiko: { - endpoint: - "https://api.goldsky.com/api/public/project_clr6mlufzbtuy01vd012wgt5k/subgraphs/swapsicle-analytics-taiko/prod/gn", - }, -}; - -const slushPriceQuery = `{ - token(id: "TOKENID") { - derivedMatic - } -}`; - -const nativeTokenAddresses = { - telos: `telos:${ADDRESSES.telos.WTLOS}`, - mantle: `mantle:${ADDRESSES.mantle.WMNT}`, - taiko: `taiko:${ADDRESSES.taiko.WETH}`, -}; - -async function slushToNativeConvert(slushAmount, chain) { - const slushNativePrice = await cachedGraphQuery( - "swapsicle-slush-eth-price/" + chain, - config[chain].endpoint, - slushPriceQuery.replace( - "TOKENID", - contracts[chain].slush - ) - ); - return slushAmount / 10 ** 18 * slushNativePrice.token.derivedMatic; -} - -/** Returns an object as follows { `chainName:nativeTokenAddress`: slushBalanceInNativeToken } */ -async function getStakeBalance(slushBalance, chain) { - const nativeBalance = await slushToNativeConvert(slushBalance, chain); - return { - [nativeTokenAddresses[chain]]: nativeBalance * 10 ** 18 - }; -} - -async function iceCreamVanStake(api) { - const response = await api.call({ - target: contracts[api.chain].stakingContract_iceCreamVan, - abi: iceCreamVanABI.totalShares, - }) - return getStakeBalance(response, api.chain); -} - -async function ZombieVanStake(api) { - const response = await api.call({ - target: contracts[api.chain].stakingContract_zombieVan, - abi: zombieVanABI.totalStaked, - }) - return getStakeBalance(response, api.chain); -} - -async function ICZStake(api) { - const response = await api.call({ - abi: 'erc20:balanceOf', - target: contracts[api.chain].slush, - params: contracts[api.chain].stakingContract_iceCreamZombies, - }) - return getStakeBalance(response, api.chain); -} - -Object.keys(config).forEach((chain) => { - module.exports[chain].staking = sdk.util.sumChainTvls([ - (api) => iceCreamVanStake(api), - (api) => (chain !== 'taiko' ? ZombieVanStake(api) : 0), - (api) => (chain !== 'taiko' ? ICZStake(api) : 0), - ]); -}); \ No newline at end of file diff --git a/projects/swapsicle-v2/zombieVanABI.json b/projects/swapsicle-v2/zombieVanABI.json deleted file mode 100644 index f907c4913bf..00000000000 --- a/projects/swapsicle-v2/zombieVanABI.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalStaked": "uint256:totalStaked" -} \ No newline at end of file diff --git a/projects/swapsicle/iceBoxABI.json b/projects/swapsicle/iceBoxABI.json deleted file mode 100644 index 49c8cc7fb49..00000000000 --- a/projects/swapsicle/iceBoxABI.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalPrimaryStaked": "uint256:totalPrimaryStaked" -} \ No newline at end of file diff --git a/projects/swapsicle/icevaultABI.json b/projects/swapsicle/icevaultABI.json deleted file mode 100644 index 8e73ce09e5a..00000000000 --- a/projects/swapsicle/icevaultABI.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalStaked": "uint256:totalStaked" -} \ No newline at end of file diff --git a/projects/swapsicle/index.js b/projects/swapsicle/index.js deleted file mode 100644 index cebbb79fa3e..00000000000 --- a/projects/swapsicle/index.js +++ /dev/null @@ -1,160 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require("../helper/staking") -const sdk = require("@defillama/sdk") -const iceBoxABI = require("./iceBoxABI.json"); -const iceVaultABI = require("./icevaultABI.json"); - -const WAVAX = ADDRESSES.avax.WAVAX -//const WTLOS = ADDRESSES.telos.WTLOS - -const contracts = { - avax: { - factory: "0x9c60c867ce07a3c403e2598388673c10259ec768", - pops: "0x240248628B7B6850352764C5dFa50D1592A033A8", - usdc: ADDRESSES.avax.USDC, - stakingContract_sPOPS: "0x5108176bC1B7e72440e6B48862c51d7eB0AEd5c4", - stakingContract_IB: "0x6aA10ead8531504a8A3B04a9BfCFd18108F2d2c2", - stakingContract_IB2: "0x737CAE995aCec229a6958B49f6d3eB9F383480Ab", - stakingContract_IV: "0x2626658BB9186B22C798Ea85A4623C2c1eBa2901", - }, - polygon: { - factory: "0x735ab9808d792B5c8B54e31196c011c26C08b4ce" - }, - bsc: { - factory: "0xEe673452BD981966d4799c865a96e0b92A8d0E45" - }, - fantom: { - factory: "0x98F23162E3a7FE610aC89C88E4217a599A15858F" - }, - arbitrum: { - factory: "0x2f0c7c98462651bb2102f6cd05acdad333e031b0" - }, - ethereum: { - factory: "0x2f0c7c98462651bb2102f6cd05acdad333e031b0" - }, - optimism: { - factory: "0x2f0c7c98462651bb2102f6cd05acdad333e031b0" - }, - telos: { - factory: "0xB630F53DF13645BFF0Ef55eB44a8a490a7DD4514", - stakingContract_sPOPS: "0x14e374cef17d800109710aa2c2d73e50db76d367", - stakingContract_IB: '0xac448d75e945923b176ebca4ff2b5a82de73f812', - stakingContract_IB2: '0x08010b76d4b03cabcfb0f6ba9db7de8336c715fe', - stakingContract_NFT: '0x552fd5743432eC2dAe222531e8b88bf7d2410FBc', - pops: "0x173fd7434b8b50df08e3298f173487ebdb35fd14", - stlos: ADDRESSES.telos.STLOS - } -} - -function getAVAXAddress(address) { - return `avax:${address}`; -} - -function getTLOSAddress(address) { - return `telos:${address}`; -} - -// AVAX (ETH) staking product -async function iceBox(contract, block, chain) { - let balances = { - [ADDRESSES.null]: ( - await sdk.api.eth.getBalance({ target: contract, block, chain: chain }) - ).output, - }; - return balances; -} - -// Avalanche - IceVault Staking (USDC) -async function stakedUSDC(timestamp, _, { avax: block }) { - const balances = {}; - - const tokenBalance = await sdk.api.abi.call({ - target: contracts.avax.stakingContract_IV, - abi: iceVaultABI.totalStaked, - chain: "avax", block, - }); - - balances[getAVAXAddress(contracts.avax.usdc)] = tokenBalance.output; - - return balances; -} - -async function stakedAVAXIceBox(timestamp, ethBlock, chainBlocks) { - const balances = {}; - const block = chainBlocks.avax; - - const ibBalance = await iceBox(contracts.avax.stakingContract_IB, block, 'avax'); - balances[getAVAXAddress(WAVAX)] = ibBalance[ADDRESSES.null]; - - return balances; -} - -async function stakedAVAXIceBox2(timestamp, ethBlock, chainBlocks) { - const balances = {}; - const block = chainBlocks.avax; - - const ibBalance2 = await iceBox(contracts.avax.stakingContract_IB2, block, 'avax'); - balances[getAVAXAddress(WAVAX)] = ibBalance2[ADDRESSES.null] - - return balances; -} - -async function stakedTLOSIceBox(timestamp, _, { telos: block }) { - const balances = {}; - const stakedSTLOS = await sdk.api.abi.call({ - target: contracts.telos.stakingContract_IB2, - abi: iceBoxABI.totalPrimaryStaked, - chain: "telos", block, - }); - - balances[getTLOSAddress(contracts.telos.stlos)] = stakedSTLOS.output; - return balances; -} - -module.exports = { - misrepresentedTokens: true, - methodology: "", - avax: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.avax.factory }), - staking: sdk.util.sumChainTvls([ - // Ice Cream Van - stakingPricedLP(contracts.telos.stakingContract_sPOPS, contracts.avax.pops,'avax','0x7E454625e4bD0CFdC27e752B46bF35C6343D9A78',"wrapped-avax",true), - // Ice Box - stakedAVAXIceBox, - stakedAVAXIceBox2, - // IceVault - stakedUSDC, - stakingPricedLP(contracts.avax.stakingContract_IV, contracts.avax.pops,'avax','0x7E454625e4bD0CFdC27e752B46bF35C6343D9A78',"wrapped-avax",true) - ]) - }, - polygon: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.polygon.factory }), - }, - bsc: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.bsc.factory }), - }, - fantom: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.fantom.factory }), - }, - arbitrum: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.arbitrum.factory }), - }, - ethereum: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.ethereum.factory }), - }, - optimism: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.optimism.factory }), - }, - telos: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.telos.factory }), - staking: sdk.util.sumChainTvls([ - // Ice Cream Van - stakingPricedLP(contracts.telos.stakingContract_sPOPS, contracts.telos.pops,'telos','0x6dee26f527adb0c24fef704228d8e458b46f9f5f',"wrapped-telos",true), - // NFT's - stakingPricedLP(contracts.telos.stakingContract_NFT, contracts.telos.pops,'telos','0x6dee26f527adb0c24fef704228d8e458b46f9f5f',"wrapped-telos",true), - // Ice Box - stakedTLOSIceBox - ]) - }, -} diff --git a/projects/swapx/index.js b/projects/swapx/index.js deleted file mode 100644 index 9066b975811..00000000000 --- a/projects/swapx/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -// Xone / SwapX v2 factory -// 0x76bDc5a6190Ea31A6D5C7e93a8a2ff4dD15080A6 -module.exports = uniTvlExport('xone', '0x76bDc5a6190Ea31A6D5C7e93a8a2ff4dD15080A6') \ No newline at end of file diff --git a/projects/swarm-markets/index.js b/projects/swarm-markets/index.js deleted file mode 100644 index 22ee06368ad..00000000000 --- a/projects/swarm-markets/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { v1Tvl } = require("../helper/balancer") -const sdk = require('@defillama/sdk') - -const config = { - polygon: { factory: '0x991fd11876a438af7bcadc98f4b3cf201bdf6191', fromBlock: 23158523, wrapper: '0x6cdde4ed9165405c1914b229d3cd4ac9c354c331', }, - ethereum: { factory: '0x9186503af1d7d3317b4c2c44a815be984838c296', fromBlock: 12432945, wrapper: '0x2b9dc65253c035eb21778cb3898eab5a0ada0cce', }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, wrapper } = config[chain] - const tvlFunc = v1Tvl(factory, fromBlock) - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - const balances_ = await tvlFunc(api) - const tokens = Object.keys(balances_) - const uTokens = await api.multiCall({ abi: 'function xTokenToToken(address) view returns (address)', target: wrapper, calls: tokens.map(i => i.replace(api.chain + ':', '')) }) - tokens.forEach((v, i) => { - sdk.util.sumSingleBalance(balances, uTokens[i], balances_[v], api.chain) - }) - return balances - } - } -}) \ No newline at end of file diff --git a/projects/swaylend/index.js b/projects/swaylend/index.js deleted file mode 100644 index a29f801b2ec..00000000000 --- a/projects/swaylend/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { sumTokens, query } = require("../helper/chain/fuel") -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') - -const markets = [ - '0x657ab45a6eb98a4893a99fd104347179151e8b3828fd8f2a108cc09770d1ebae', // USDC market -] -async function tvl(api) { - return sumTokens({ api, owners: markets, }) -} - -async function borrowed(api) { - const abi = await getConfig('swaylend/abi', undefined, { - fetcher: async () => { - let data = await get('https://raw.githubusercontent.com/Swaylend/swaylend-monorepo/refs/heads/develop/apps/frontend/src/contract-types/Market.ts') - data = data.split('const abi =')[1].split(';')[0] - return JSON.parse(data) // ensure that this doesnt fail - // return data - } - }) - const whitelistedFunctions = new Set(['get_market_configuration', 'get_market_basics']) - abi.functions = abi.functions.filter(i => whitelistedFunctions.has(i.name)) - abi.loggedTypes = [] - for (const market of markets) { - const { base_token } = await query({ contractId: market, abi, method: 'get_market_configuration' }) - const { total_borrow_base } = await query({ contractId: market, abi, method: 'get_market_basics' }) - api.add(base_token.bits, +total_borrow_base) - } -} - -module.exports = { - fuel: { tvl, borrowed, }, - timetravel: false, -} - diff --git a/projects/sweep-n-flip/index.js b/projects/sweep-n-flip/index.js deleted file mode 100644 index 5c0e0e00913..00000000000 --- a/projects/sweep-n-flip/index.js +++ /dev/null @@ -1,76 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { transformDexBalances } = require('../helper/portedTokens'); - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL counts the liquidity of the pools on each chain.', -}; - -const config = { - ethereum: { - fromBlock: 12965000, - factory: '0x16eD649675e6Ed9F1480091123409B4b8D228dC1', - }, - polygon: { - fromBlock: 12965000, - factory: '0x16eD649675e6Ed9F1480091123409B4b8D228dC1', - }, - arbitrum: { - fromBlock: 101851523, - factory: '0x16eD649675e6Ed9F1480091123409B4b8D228dC1', - }, - mode: { - fromBlock: 6989680, - factory: '0x7962223D940E1b099AbAe8F54caBFB8a3a0887AB', - }, -}; - -Object.keys(config).forEach((chain) => { - const { fromBlock, factory } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - let logs = await getLogs({ - api, - target: factory, - eventAbi: - 'event PairCreated(address indexed token0, address indexed token1, address pair, uint256)', - onlyArgs: true, - fromBlock, - }); - - let pairs = logs.map((log) => log.pair); - - const names = await api.multiCall({ abi: 'string:name', calls: pairs }); - - logs = logs.filter((pair, i) => names[i] === 'SweepnFlip LPs'); - - pairs = logs.map((log) => log.pair); - - const bals0 = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: pairs.map((pair, i) => ({ - target: logs[i].token0, - params: pair, - })), - }); - - const bals1 = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: pairs.map((pair, i) => ({ - target: logs[i].token1, - params: pair, - })), - }); - - return transformDexBalances({ - chain, - data: logs.map((l, i) => ({ - token0Bal: bals0[i], - token1Bal: bals1[i], - token0: l.token0, - token1: l.token1, - })), - }); - }, - }; -}); diff --git a/projects/sweep/index.js b/projects/sweep/index.js deleted file mode 100644 index 993e4990609..00000000000 --- a/projects/sweep/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { ethers } = require("ethers"); -const ADDRESSES = require('../helper/coreAssets.json'); -const SWEEP_ADDRESS = '0xB88a5Ac00917a02d82c7cd6CEBd73E2852d43574'; -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: {}, - arbitrum: {}, - optimism: {}, - base: {}, - avax: {}, - polygon: {}, - bsc: {} -}; - -async function tvl(api) { - const { TOKEN, DECIMALS } = api.chain === "bsc" ? { TOKEN: "USDT", DECIMALS: 12 } : { TOKEN: "USDC", DECIMALS: 0 }; - const TOKEN_ADDRESS = ADDRESSES[api.chain][TOKEN]; - - const [minters] = await api.multiCall({ abi: 'address[]:getMinters', calls: [SWEEP_ADDRESS] }) - // await sumTokens2({ api, owners: minters, tokens: [USDC_ADDRESS]}) - const names = await api.multiCall({ abi: 'string:name', calls: minters }) - const uniswapMinters = minters.filter((_, i) => /uniswap/i.test(names[i])) - const otherMinters = minters.filter((_, i) => !/uniswap/i.test(names[i])) - - if(uniswapMinters.length > 0) - await sumTokens2({ api, owners: uniswapMinters, resolveUniV3: true, blacklistedTokens: [SWEEP_ADDRESS], tokens: [TOKEN_ADDRESS], }) - - const bals = (await api.multiCall({ abi: 'uint256:assetValue', calls: otherMinters, permitFailure: true })).filter(i => i) - bals.forEach(bal => api.add(TOKEN_ADDRESS, Number(bal) * 10 ** DECIMALS)) - return api.getBalances() -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; -}); - -module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/swell-earn-eth/index.js b/projects/swell-earn-eth/index.js deleted file mode 100644 index c14ccfa9842..00000000000 --- a/projects/swell-earn-eth/index.js +++ /dev/null @@ -1,167 +0,0 @@ -const sdk = require('@defillama/sdk') -const { sumTokens2, PANCAKE_NFT_ADDRESS, unwrapSlipstreamNFT } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const earnETHVault = '0x9Ed15383940CC380fAEF0a75edacE507cC775f22'; -const pancakeswapMasterChef = '0x556B9306565093C855AEA9AE92A594704c2Cd59e' - -const ethTokens = [ - '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0', // rswETH - '0xf951E335afb289353dc249e82926178EaC7DEd78', // swETH - ADDRESSES.ethereum.WSTETH, // wstETH - ADDRESSES.ethereum.WETH, // WETH - "0x9Ba021B0a9b958B5E75cE9f6dff97C7eE52cb3E6", // apxETH - "0x04C154b66CB340F3Ae24111CC767e0184Ed00Cc6", // pxETH - ADDRESSES.ethereum.WEETH, // weETH - ADDRESSES.linea.rzETH, // ezETH - "0xC329400492c6ff2438472D4651Ad17389fCb843a", // sym_wstETH - "0x38B86004842D3FA4596f0b7A0b53DE90745Ab654", // sym_swETH - "0xB26ff591F44b04E78de18f43B46f8b70C6676984", // sym_cbETH - "0x5fD13359Ba15A84B76f7F87568309040176167cd", // Amphor_ETH - "0x8a053350ca5F9352a16deD26ab333e2D251DAd7c", // mmETH - "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", // mswETH - "0x49446A0874197839D15395B908328a74ccc96Bc0", // mstETH - "0x997949eEA781c04E4801d9c0902540236A317B07", // PT_rstETH_25JUL2024 - "0x6ee2b5E19ECBa773a352E5B21415Dc419A700d1d", // PT_weETH_26DEC2024 - "0xf7906F274c174A52d444175729E3fa98f9bde285", // PT_ezETH_26DEC2024 - "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa", // PT_rswETH_27JUN2024 - "0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966", // PT_weETH_27JUN2024 -] - -const pendleLPTokens = [ - "0x7C7FbB2d11803C35Aa3e283985237aD27f64406B", // rswETH 26Dec2024 - "0x0e1C5509B503358eA1Dac119C1D413e28Cc4b303", // swETH 26December2024 - "0x86d27c49a6a7a2bc033b5d67a21f93d62894ccb9", // swETH 26June2025 - "0xfd5cf95e8b886ace955057ca4dc69466e793fbbe", // rswETH 26June2025 -] - -const vaultTokens = [ - "0x78Fc2c2eD1A4cDb5402365934aE5648aDAd094d0", // Re7 WETH -] - -const swellchainEulerVaults = [ - '0x49C077B74292aA8F589d39034Bf9C1Ed1825a608', // WETH - '0x10D0D11A8B693F4E3e33d09BBab7D4aFc3C03ef3', // weETH - '0xf34253Ec3Dd0cb39C29cF5eeb62161FB350A9d14', // swETH - '0x1773002742A2bCc7666e38454F761CE8fe613DE5', // rswETH -] - -const swellchainEulerBorrows = [ - '0x0444A8FB38264DC7E594b2acAD1AcBC7276A773c', // WETH Debt -] - -const swellchainVeloPoolsStaked = [{ - "pool" : "0xf495610d64FA6a32C5F968c947028f9C7Cacfb19", - "gauge": "0x86Bfb23700cE37702D88E5451b8C0ee9d7c07f90" -}] - -const swellchainTokens = [ - ADDRESSES.swellchain.rswETH, // rswETH - ADDRESSES.swellchain.swETH, // swETH - '0xC3d33a0Ea1582410075567c589af895fcaF1127c', // tempest weeth/eth - ...swellchainEulerVaults, -] - -const tokens = [ - ...ethTokens, - ...pendleLPTokens, - ...vaultTokens, -] - -const ethErc20Tvl = async (api) => { - return sumTokens2({ - api, - owner: earnETHVault, tokens, - uniV3nftsAndOwners: [[PANCAKE_NFT_ADDRESS, earnETHVault]], - uniV3ExtraConfig: { nftIdFetcher: pancakeswapMasterChef }, - fetchCoValentTokens: true, - }) -} - -const swellErc20Tvl = async (api) => { - return sumTokens2({ - api, - owner: earnETHVault, - tokens: swellchainTokens, - resolveSlipstream: true, // only handles unstaked positions - }) -} - -const swellErc20Borrows = async (api) => { - const [balances, vaultTokens] = await Promise.all([ - api.multiCall({ - abi: 'function balanceOf(address owner) external view returns (uint256)', - calls: swellchainEulerBorrows.map(i => ({ target: i, params: earnETHVault})) - }), - api.multiCall({ - abi: 'function eVault() external view returns (address)', - calls: swellchainEulerBorrows - }) - ]) - - // We subtract the euler Borrows - // we are pricing euler Borrows as Vault price as Borrow index is always greater than Supply index - api.addTokens(vaultTokens, balances.map(i => -i)) - return api.getBalances() -} - -const earnBTCVault = '0x66E47E6957B85Cf62564610B76dD206BB04d831a'; - -const ethBTCErc20Tvl = async (api) => { - const ethTokens = [ - ADDRESSES.ethereum.WBTC, // WBTC - '0x8DB2350D78aBc13f5673A411D4700BCF87864dDE', // swBTC - ADDRESSES.ethereum.cbBTC, // cbBTC - ADDRESSES.mantle.FBTC, // fBTC - '0xF469fBD2abcd6B9de8E169d128226C0Fc90a012e', // pumpBTC - '0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa', // tBTC - ADDRESSES.ethereum.LBTC, // LBTC - '0x7A56E1C57C7475CCf742a1832B028F0456652F97', // solvBTC - '0x856ca0217838e9fefefd6141028c85bd423ec54b', // PT-pumpBTC-29May2025 - ] - - return sumTokens2({ api, owner: earnBTCVault, tokens: ethTokens, fetchCoValentTokens: true }) -} - -const swellVeloStakedTvl = async (api) => { - let stakedIds = [] - for (const pool of swellchainVeloPoolsStaked) { - const ids = await api.call({ - target: pool.gauge, - abi: 'function stakedValues(address depositor) external view override returns (uint256[] memory staked)', - params: earnETHVault, - }) - stakedIds = stakedIds.concat(ids) - } - - return await unwrapSlipstreamNFT({ - api, - positionIds: stakedIds, - nftAddress: "0x991d5546C4B442B4c5fdc4c8B8b8d131DEB24702", - }) -} - -const swellBTCErc20Tvl = async (api) => { - - const swellTokens = [ - ADDRESSES.swellchain.stBTC, // stBTC - ADDRESSES.swellchain.uBTC_1, // uBTC - ] - - return sumTokens2({ api, owner: earnBTCVault, tokens: swellTokens }) - -} - -module.exports = { - methodology: 'TVL represents the sum of tokens deposited in the vault + LP positions', - doublecounted: true, - ethereum: { tvl: sdk.util.sumChainTvls([ethErc20Tvl, ethBTCErc20Tvl]) }, - swellchain: { tvl: sdk.util.sumChainTvls([ - swellErc20Tvl, - swellBTCErc20Tvl, - swellVeloStakedTvl, - swellErc20Borrows - ]) }, - // ethereum: { tvl: sdk.util.sumChainTvls([ethTvl]) }, - // swellchain: { tvl: sdk.util.sumChainTvls([swellTvl]) }, -} \ No newline at end of file diff --git a/projects/swell-l2-farm/index.js b/projects/swell-l2-farm/index.js deleted file mode 100644 index 97266f26169..00000000000 --- a/projects/swell-l2-farm/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require("../helper/tokenMapping"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - hallmarks: [ - [1714867303,"justin sun depo"] - ], - ethereum: { - tvl: sumTokensExport({ - owners: ["0x38D43a6Cb8DA0E855A42fB6b0733A0498531d774"], - tokens: [ - nullAddress, - ADDRESSES.ethereum.WSTETH, - "0x49446A0874197839D15395B908328a74ccc96Bc0", - "0xE46a5E19B19711332e33F33c2DB3eA143e86Bc10", - "0x49446A0874197839D15395B908328a74ccc96Bc0", - "0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0", - "0xf951E335afb289353dc249e82926178EaC7DEd78", - ADDRESSES.ethereum.WEETH, - ADDRESSES.ethereum.WETH, - "0x8a053350ca5F9352a16deD26ab333e2D251DAd7c", - "0x8457CA5040ad67fdebbCC8EdCE889A335Bc0fbFB", - "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa", - ADDRESSES.linea.rzETH, - "0x7122985656e38BDC0302Db86685bb972b145bD3C", - "0xa0021EF8970104c2d008F38D92f115ad56a9B8e1", - "0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966", - "0xC58aa33Ce619c7f7Ac4929DF357D0Ef762edbD23", - "0x6ee2b5E19ECBa773a352E5B21415Dc419A700d1d", - "0xac440d0eE23FA69632Aa731322C2a480dD1376e4", - "0x330c4DD05dB16db6323505262C57CFdE5f0A78Ea", - ADDRESSES.ethereum.USDe, - ADDRESSES.ethereum.FRAX, - "0xA663B02CF0a4b149d2aD41910CB81e23e1c41c32", - "0x5E8422345238F34275888049021821E8E08CAa1f", - ADDRESSES.ethereum.sfrxETH, - "0x18f313Fc6Afc9b5FD6f0908c1b3D476E3feA1DD9", - "0xf7906F274c174A52d444175729E3fa98f9bde285" - ] - }) - } -} diff --git a/projects/swell-restaking/index.js b/projects/swell-restaking/index.js deleted file mode 100644 index 4e778c17f9b..00000000000 --- a/projects/swell-restaking/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping") - -async function tvl(api) { - const totalSupply = await api.call({ target: '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0', abi: 'uint256:totalSupply'}); - const rate = await api.call({ target: '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0', abi: 'uint256:getRate'}); - - return { - [nullAddress]: (totalSupply * rate)/1e18 - }; -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/swell-swbtc/index.js b/projects/swell-swbtc/index.js deleted file mode 100644 index 61f3308a3c2..00000000000 --- a/projects/swell-swbtc/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - doublecounted: true, - ethereum: { - tvl: sumERC4626VaultsExport({ vaults: ['0x8DB2350D78aBc13f5673A411D4700BCF87864dDE'], isOG4626: true, }), - }, -} \ No newline at end of file diff --git a/projects/swell-vault/index.js b/projects/swell-vault/index.js deleted file mode 100644 index 479f069329b..00000000000 --- a/projects/swell-vault/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - methodology: 'ETH and stETH in vaults', - ethereum: { - tvl: sumTokensExport({ owners: [ - "0x325a0e5c84b4d961b19161956f57ae8ba5bb3c26", - ], tokens: [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.STETH - ]}), - } -}; diff --git a/projects/swell/index.js b/projects/swell/index.js deleted file mode 100644 index ad280665814..00000000000 --- a/projects/swell/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { nullAddress } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: async (api) => { - const totalSupply = await api.call({ target: '0xf951E335afb289353dc249e82926178EaC7DEd78', abi: 'uint256:totalSupply'}); - const rate = await api.call({ target: '0xf951E335afb289353dc249e82926178EaC7DEd78', abi: 'uint256:getRate'}); - - return { - [nullAddress]: (totalSupply * rate)/1e18 - }; - } - } -}; diff --git a/projects/swellchain/index.js b/projects/swellchain/index.js deleted file mode 100644 index 0673aaa37dc..00000000000 --- a/projects/swellchain/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owners: [ - "0x7aA4960908B13D104bf056B23E2C76B43c5AACc8", // L1StandardBridge - "0x758E0EE66102816F5C3Ec9ECc1188860fbb87812", // OptimismPortal2 - "0xecf3376512EDAcA4FBB63d2c67d12a0397d24121", // wstETH L1ERC20TokenBridge - ], - fetchCoValentTokens: true, - }), - } -}; diff --git a/projects/swerve.js b/projects/swerve.js deleted file mode 100644 index dee065753d3..00000000000 --- a/projects/swerve.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require('./helper/unwrapLPs') -const ADDRESSES = require('./helper/coreAssets.json') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - owner: '0x329239599afB305DA0A2eC69c58F8a6697F9F88d', - tokens: [ - ADDRESSES.ethereum.TUSD, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - ] - }) - } -} diff --git a/projects/swift-finance/abi.json b/projects/swift-finance/abi.json deleted file mode 100644 index ed1909dd4e1..00000000000 --- a/projects/swift-finance/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSwiftPerShare, uint16 depositFeeBP)" -} \ No newline at end of file diff --git a/projects/swift-finance/index.js b/projects/swift-finance/index.js deleted file mode 100644 index de8ebc583ec..00000000000 --- a/projects/swift-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const abi = require("./abi.json"); -const {masterChefExports} = require("../helper/masterchef") - -const token = "0x0Aa4ef05B43700BF4b6E6Dc83eA4e9C2CF6Af0fA"; -const masterchef = "0x242c27C5F92e20d70CA0dAA7b76d927DFC7EF20B" - -module.exports = masterChefExports(masterchef, "avax", token, true, abi.poolInfo) \ No newline at end of file diff --git a/projects/swim/index.js b/projects/swim/index.js deleted file mode 100644 index 0cce916e1bd..00000000000 --- a/projects/swim/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokens2, } = require("../helper/solana") - -const owners = [ - 'AfhhYsLMXXyDxQ1B7tNqLTXXDHYtDxCzPcnXWXzHAvDb', // Hexapool - 'Ha7YEA5wRWyH2htfyMXw3VfLbtBHm4UoVXMpq8Ev6zJh', // Meta Avax-USDC - 'EpvBni7vTfbTG95zf9sNcS9To1NEKnVMpCwZdb21tKsg', // Meta Avax-USDT - '2iLTifF3JDP65AjFKZ3t4mgfJdQVSmVCiM8Zca3TgvpU', // Meta Polygon-USDC - '3uxBU3fRZzp3V7v9MTNZiDmjxDkKh3rZutLwFtnjJ2pQ', // Meta Polygon-USDT - '57k3vNmCivSYn7EwQNjcNFcCWAdohZ9xACfMhJGwKiBq', // GSTBNB-GSTSOL - 'HZr3bF8YEJWMV75Wi3aFEHEyLLk61VyQduXtunWtXNVQ', // GMTBNB-GMTSOL - 'DqTF8aZu63iHF55tBz1ePuaBKJ3F2srNVha3B4PpCT4N', // Meta Aurora-USDC - '23CU3bqMJoRTpvyti84CmPbkAyNJDnTZE7DYj6MnhGdK', // Meta Aurora-USDT - 'H7BkMwbJfLiWE9sSDATHTqXykm1xBjeRzzLDatW2QdEt', // Meta Fantom-USDC - '4XQz1qHMMTkFETn5PSNyLVutYPyZ4han8RB8Mmw1G48Q', // Meta Karura-USDT -] - -async function tvl() { - return sumTokens2({ owners }); -} - -module.exports = { - hallmarks: [ - [1667779200, "Sunsetting announced"] - ], - timetravel: false, - solana: { - tvl - }, -}; \ No newline at end of file diff --git a/projects/swing-dao/index.js b/projects/swing-dao/index.js deleted file mode 100644 index f4661848416..00000000000 --- a/projects/swing-dao/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const token = "0x19fbfa5987efecceff41b190759a9d883a4bea21"; -const staking = "0x8d0d683f8030356C6f3dDD5Ed01372f82F8ce833"; -const treasury = "0xeE9181EB5c49712d6be9905c369d0e605061f284"; - -module.exports = { - deadFrom: 1648765747, - misrepresentedTokens: true, - ...ohmTvl(treasury, [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0xad5bade2c8c6dcd0774581d29bb403d7b3d8194e", true] // GNIWS-MIM JLP - ], "avax", staking, token, undefined, undefined, false) -} diff --git a/projects/swipeswap.js b/projects/swipeswap.js deleted file mode 100644 index 62b78be35d6..00000000000 --- a/projects/swipeswap.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') - -module.exports = { - ethereum:{ - tvl: getUniTVL({ factory: '0x8a93b6865c4492ff17252219b87ea6920848edc0', useDefaultCoreAssets: true, }) - }, - bsc:{ - tvl: getUniTVL({ factory: '0x7810d4b7bc4f7faee9deec3242238a39c4f1197d', useDefaultCoreAssets: true, }) - }, -} diff --git a/projects/swirl/index.js b/projects/swirl/index.js deleted file mode 100644 index ff7a52c38fc..00000000000 --- a/projects/swirl/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const iota = require('../helper/chain/iota') - -async function tvl() { - const nativePool = await iota.getObject('0x02d641d7b021b1cd7a2c361ac35b415ae8263be0641f9475ec32af4b9d8a8056'); - const iotaAmount = Number(BigInt(nativePool.fields.total_staked) / BigInt(10 ** 9)); - return { - iota: iotaAmount, - } -} - -module.exports = { - methodology: "Calculates the amount of IOTA staked in stIota liquid staking contracts.", - timetravel: false, - iota: { - tvl, - } -} \ No newline at end of file diff --git a/projects/swirllend/index.js b/projects/swirllend/index.js deleted file mode 100644 index 6cfb4a1a50f..00000000000 --- a/projects/swirllend/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - linea: compoundExports2({ - comptroller: "0xcAABf6Ffb76634183254B0a4a3D5fb36180FdAE4", - cether: '0x91067b912f89dfca50c3f5529dbeb78b63c6a2e5', - }), - - base: compoundExports2({ - comptroller: "0xcAABf6Ffb76634183254B0a4a3D5fb36180FdAE4", - cether: '0x91067b912f89dfca50c3f5529dbeb78b63c6a2e5', - }), - - hallmarks: [ - ['2023-08-16', 'Project Rugged!'], - ], - deadFrom: '2023-08-16' -}; - -module.exports.base.borrowed = () => ({}) -module.exports.linea.borrowed = () => ({}) diff --git a/projects/swissborg/index.js b/projects/swissborg/index.js deleted file mode 100644 index 98f23899280..00000000000 --- a/projects/swissborg/index.js +++ /dev/null @@ -1,258 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0x5770815B0c2a09A43C9E5AEcb7e2f3886075B605', - '0x94596096320A6B4EaB43556AD1Ed8c4c3d51C9aA', - '0x5cEDc1923c33B253aedf24bF038eeE6Cbbb68A6A', - '0x42b86A269fb3d5368D880c519BadABa77eC00130', - '0x87cbc48075d7aa1760Ac71C41e8Bc289b6A31F56', - '0xcDE4c1b984F3F02f997ECfF9980B06316de2577d', - '0x6cf9aa65ebad7028536e353393630e2340ca6049', - '0x7153D2ef9F14a6b1Bb2Ed822745f65E58d836C3F', - '0xff4606bd3884554cdbdabd9b6e25e2fad4f6fc54', - '0x22bF0A4C4eff418b3306AbFeE20813D0b6E8Dc74', - '0x11444C6389A26C8E41d7FD5CafBfCC511303b7d3', - '0x67FE3293FC4e877F3CDc3F0ed93721a600f72BdE', - '0x178Fb204c1ff2Ed7d0651C522A3a5B15480Eb76d', - '0xFbA64167e4f091Ca625FA79aa6f83665856f8Bf2', - '0x8F0d8b27bF808976Fa94f03e2230b4bca95bf3C4', - '0xe2484A7Ac1b9Cb6D8E55fd00e129aB913172bea6', - '0xdbe15F6573108B6736c70779C683Ca633c18aFe2', - '0xa2E07DB4e92F66071Ca68984517972F5625AB325', - '0xBb6CaCfCeA26e45D0ac8019e1Eb606440736b53e', - '0x697A276401BadD8A9e37aEdd3DBF70b325f31268', - '0x8a1feCFF181dD770206c0892E09B0243A495152b', - '0x5eD60B7BFba654342C401f853B55B8dd82f90726', - '0xa9a99C96e9fCCaC00a100e72A2C19eDe79458698', - '0x52b37e6dB2Fe5bB2781355Ac397aE49C9Bd29275', - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - '0x0926a7b610B9Fc2D1E3F09FcBa52Ba3BEDCFfd91', - '0x49841B9bb1dc499B36C4F618bf8feAC85fDFE889', - '0xaCA8FB892Ac27d2f84Fa78EDb32F3AD221538c3e', - ], - }, - bitcoin: { - owners: bitcoinAddressBook.swissborg - }, - ripple: { - owners: [ - 'rfyE1wqH1YY3u6BcauQwYuoD13GVtJErXq', - 'rJCv19Du7VXqSuaYhaB3WpLRScTMpS7c52', - 'raFmDg78SG5AxPjXyRFnsy7zYujZGpJsVq', - 'rwh2r5ESARRSymmKhxhaXb8Eae7aTWvYwc', - 'r9EUpQ9E9u2FUa49AYHbdkagpRza75jWbN', - ], - }, - near: { - owners: [ - 'dc6b4c8821dbe652b763e3bfadfea548137b29b97408c8b411ad72acff94e63f', - '1c0dc521827821f1695538ff9312df15f32837bbfe95bc937f9faaafd4125552', - '9b23bfd45a028e7a28326007b221cf8bd8b288630dde5ca714a0524f4865db89', - '034e29f9703726c1f7b955fa5f7b16f6293adec615f668a73bc3b3b0255392df', - 'c298ef5c3754dbcb6c23b481b514641f91d46845a256be4fd6ad742d5f3c251c', - ], - }, - solana: { - owners: [ - '2E1UKoiiZPwsp4vn6tUh5k61kG2UqYpT7oBrFaJUJXXd', - '2XxP4kS2vfkiMvpLpGNxry3fPUYimsuAmSbqL1KnuwZ8', - 'Cet3t77x2BBVSmiEFm8ZPoDSngbpso2RuWPL79Ky7SpA', - '9qoUcyhKSWMbk6tqGUYQUpeosPcdUnJszG4eQKwfe4gL', - 'Fe7SEekiKygziaEGKxsDsgLVzrCfNvVBvAYsaJBwFA8s', - '8V51vSJGYssywpKHrZacT3bpFYoeA1oD7hdvi1imnrVa', - 'CxbHK9geAiCc6yBVT7PhXEMXzwP7BGh8VB1TgbDV3uLq', - '3jvARuePRR6KpNAeYYGRQzs8W4VYsWWxe4BfoTSTZhUr', - '281BKbWX8f9XqexpmFGTGcrAzPbFtoSiBjTHUkVHQmtv', - 'H9RCk9jQYX1bZ6HmjDAiD4r8GMgF8zpW9P1pacze7L9E', - 'F98pLYBStoB31WNTWGoQMNz3A6uwoneivaYVCAD7Gim1', - '4GiXcDsHVtqBZyUZBW55UcfAAgDcCm2Peojhhc6T3BZb', - 'DMe3ddj7awSR3LFC64rjmCPexsrSv33QAxFoJux4vGH3', - 'J6wLEPrT8Jd2NiNSJAQwxdK7FDtDssawsMtLqkZ5E1ZP', - 'EcGfuxwkM3ujBWaty5VW7H9mjJLd7LkY3m7nJZ6Sv7Sy', - 'C57RBagtGDYpTGxwG92gSKQ5ptQr4Wa9qz3yDBB6uu1B', - 'EbUkjPNjzcbjK3iELhZS6PpNCr62pUsE7VkUvNdQpEYB', - 'FQxGUUAX3BdFArA2XdvPcRHt4CmRMCw5wLt8F5uDXmwa', - ], - }, - polkadot: { - owners: [ - '1xXbYy1V5Sc3EQZ76wmcWy4gXTSyLbzgdDNJtGT6jEcL2z7', - '15Fg7p6pzLo6uinCFdsx3HTWdAx4vFt8nnw2E3JWHHwh9NCn', - '15mENJiKxtbxE2PNcB8qTaatYKjFTN4kitEzZ5eiHFGW3DVU', - '12xHzb3NT4e8MAWwJUGfhTD7R41Abyfa3NdYDGqqL3V64PLG', - '157zgQi6M5tn8U2aRQNh5tG7rj9Lif76xPxJnmJcfmbCGsQ3', - ], - }, - cardano: { - owners: [ - 'addr1qxqut96hxv5zxmhcgspmnq9tuaf6xglvq6tdv8jm5zltatv5hnm8tps2jw73pherd4l9yuuetxlp6gkeufq5p6ftjswssk33fx', - 'addr1q9vrcmu4sr7yrspknu8gwrzgrs6wuh0e6pkk9tyz2clg9llt77jyl7422xv72h9mc9kmsgvajssj4a4cpsv07n4e5lpqkfe9ft', - 'addr1qyy6n8xnyzulrax4mt0d5kdy93qm43qg4wxy09dw6apdxpqzldjpstc72lsna3krj6damxt32gw9jllr4q3u7mhg7jhs5u7jhd', - 'addr1q8n8jmkaqfwnw9f6f6cwex5uv9vl606s9945qp2t2ffrzypdlx09ue7ha5jvmda4re0pexpl9pshqjx8a8eqfs0kya8qg8hsat', - 'addr1q9sea30p9wqy9ad2h3klpwhxudd45fvqfe5mqpcfdh8afycx8tzdkudm7udv9uvfz6epmqdnucud9jv6twpu338mqymqdcphs3', - 'addr1qy2muwyr7edegpw4ywn50jnzw7kkpxjw7rjsuf27ws668yswdttyth96zpsjwfuf6m9x2ccgwz0p0864uvavs3qtfkgsaa2jy3', - 'addr1qxfcqh0yylf0zan0s4c6a2pt5jkulryqjfjrn8vll253m3skcrtekcs32m5d3nqvrayrmngkv6zz5zkvtldrllprshzqk0z64f', - 'addr1qygcz8flfwuzwtqxk58chs8g5htsghxyk7ltkt4rlp0c4h98heedkjaf00sg4ec4lh9vlsw988d58t207a86jp00npvspv7zpu', - ], - }, - hedera: { - owners: [ - '0.0.686122', - '0.0.686123', - '0.0.9167857', - '0.0.9167915', - ], - }, - bsc: { - owners: [ - '0x5770815B0c2a09A43C9E5AEcb7e2f3886075B605', - '0x94596096320A6B4EaB43556AD1Ed8c4c3d51C9aA', - '0x87cbc48075d7aa1760Ac71C41e8Bc289b6A31F56', - '0xcDE4c1b984F3F02f997ECfF9980B06316de2577d', - '0x7153D2ef9F14a6b1Bb2Ed822745f65E58d836C3F', - '0xff4606bd3884554cdbdabd9b6e25e2fad4f6fc54', - '0xE8322f6234B6F1e6e3489600f8b1297aB3dE22ab', - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - '0x0926a7b610B9Fc2D1E3F09FcBa52Ba3BEDCFfd91', - ] - }, - avax: { - owners: [ - '0x87cbc48075d7aa1760Ac71C41e8Bc289b6A31F56', - '0xcDE4c1b984F3F02f997ECfF9980B06316de2577d', - '0x7153D2ef9F14a6b1Bb2Ed822745f65E58d836C3F', - '0xFF4606bd3884554CDbDabd9B6e25E2faD4f6fc54', - '0x9531AA9883bF11f2a63d86caD7e826f37Acec3c4', - '0x4DF0BCB425aac41795B40a2B5A563A6a3eC23B41', - '0xC6A4e26E07a848F2AB180a455C211d38BF483E3E', - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - '0x0926a7b610B9Fc2D1E3F09FcBa52Ba3BEDCFfd91', - '0x9483C76AB7dC91c958b98eAAf6cBcE33f70547D2', - ] - }, - polygon: { - owners: [ - '0x87cbc48075d7aa1760Ac71C41e8Bc289b6A31F56', - '0xcDE4c1b984F3F02f997ECfF9980B06316de2577d', - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - '0x0926a7b610B9Fc2D1E3F09FcBa52Ba3BEDCFfd91', - ] - }, - moonbeam: { - owners: [ - '0x87cbc48075d7aa1760Ac71C41e8Bc289b6A31F56', - '0xFF4606bd3884554CDbDabd9B6e25E2faD4f6fc54', - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - ] - }, - cosmos: { - owners: [ - 'cosmos10dfzd2wpnpeuy2lgan35ah8dg5p4l298v0n8e8', - 'cosmos197v98nkhnxr54x45hrcagnu2rr2ckyn7dz37t6', - 'cosmos1trvqv850ft2p7ntewneevd690qde2uvt6dxvnp', - ] - }, - arbitrum: { - owners: [ - '0x8F0d8b27bF808976Fa94f03e2230b4bca95bf3C4', - '0x5509Be53b2dD0CD6fb8473B0EdA94e0a3059b73a', - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - '0x0926a7b610B9Fc2D1E3F09FcBa52Ba3BEDCFfd91', - ] - }, - osmosis: { - owners: [ - 'osmo1h9sy6z5hnk5wjf6ds8w4syq0yqs706n9m6qlap', - 'osmo197v98nkhnxr54x45hrcagnu2rr2ckyn79ezwag', - ] - }, - xdai: { - owners: [ - '0x4c61Fad9b400A8a3E0BbD40C4D57cF05525BF87e', - ] - }, - berachain: { - owners: [ - '0x2D6757CE162CccD3EfFc8044751aC174168242E5', - ] - }, - optimism: { - owners: [ - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - '0x0926a7b610B9Fc2D1E3F09FcBa52Ba3BEDCFfd91', - ] - }, - sonic: { - owners: [ - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - '0x0926a7b610B9Fc2D1E3F09FcBa52Ba3BEDCFfd91', - ] - }, - sei: { - owners: [ - '0x28cC933fecf280E720299b1258e8680355D8841F', - '0x85AC393adDd65bcf6Ab0999F2a5c064E867F255f', - ] - }, - tron: { - owners: [ - 'TNLKi5Yqa6NoduyXxtveTCrATZQHaYbc2m', - 'TUiaMVXiyHAsRR5VEX51KCFGWsyUT7Avwv', - ] - }, - doge: { - owners: [ - 'D9sBdytmsS1adxvzFTwz94tkpsoqXU8TaM', - 'DUDrC5rjQsRz6eEZQrb6wzh9jmauh2JHpX', - ] - }, - injective: { - owners: [ - 'inj1xdalk5nsudad3vxnnf3t28w4qljfedlnu7pk5e', - 'inj105zqcfv3z9z79yhsfg8v6rql3huzhyfp0sana9', - ] - }, - celestia: { - owners: [ - 'celestia197v98nkhnxr54x45hrcagnu2rr2ckyn7ugqw3h', - 'celestia1trvqv850ft2p7ntewneevd690qde2uvtt8hufv', - ] - }, - ton: { - owners: [ - 'UQAvfvh141q7M2ZmPE6YCmTFQW6pdoUXVTGrM2YBpt4iqOBF', - 'UQDR4lFPsfCx4TdWKsFUmiPdrkpl6xEixZ3VTn474lZsGuTd', - 'UQCL3aiqqyo5FKgKJOscigFey15rouAz2ZrLOVBq6axIZslU', - ] - }, - stellar: { - owners: [ - 'GCKIWBENT6R6F47SATS6ICYE5I7SJGDRK3C4XAOWUDTUH3SBJ7LFF7PZ', - 'GDFA6BWULOHVY6IXT6OZWYK4IHQC7BPYVMUL3MPJTXCDLMPD6BWLOGXB', - ] - }, - algorand: { - owners: [ - '2BNEJ7ZV2SDGRZ2JGXTSVWVIBK5FYKAERAWXXGYZ66TSWWGHWAPXJ52HAE', - ] - }, - chz: { - owners: [ - '0x762DA64958BbF03bB206BF33C520a3846b6Cc93D', - ] - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'The list of wallets can be found at https://github.com/SwissBorg/pub. We also publish monthly our Proof of Liabilities at https://swissborg.com/proof-of-liabilities/audits. The total assets do not take into account the assets in DeFi.' diff --git a/projects/switcheofinance/index.js b/projects/switcheofinance/index.js deleted file mode 100644 index 2c9b3b66560..00000000000 --- a/projects/switcheofinance/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const tokens = require("../helper/coreAssets.json"); - -const ethereumContract = [ - "0x7ee7Ca6E75dE79e618e88bDf80d0B1DB136b22D0", -]; - -const ethereumTokens = [ - tokens.null, - "0x2AF5D2aD76741191D15Dfe7bF6aC92d4Bd912Ca3", - "0x27702a26126e0B3702af63Ee09aC4d1A084EF628", - "0x4a220E6096B25EADb88358cb44068A3248254675", - "0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d", - "0xC0F9bD5Fa5698B6505F643900FFA515Ea5dF54A9", - "0x940a2dB1B7008B6C776d4faaCa729d6d4A4AA551", - "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", - "0xba100000625a3754423978a60c9317c58a424e3D", - tokens.ethereum.DAI, - tokens.ethereum.USDT, - tokens.ethereum.WBTC, - tokens.ethereum.LINK, - tokens.ethereum.MKR, - tokens.ethereum.SNX, - tokens.ethereum.YFI, - tokens.ethereum.USDC, - tokens.ethereum.SAI, - tokens.ethereum.AAVE, -]; - -module.exports = { - ethereum: { tvl: sumTokensExport({ owners: ethereumContract, tokens: ethereumTokens }) } -}; diff --git a/projects/swivel/index.js b/projects/swivel/index.js deleted file mode 100644 index add88d25499..00000000000 --- a/projects/swivel/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unknownTokens"); - -module.exports = { - hallmarks: [ - ['2023-03-13', 'Euler was hacked'], - ], - deadFrom: '2023-03-13', - ethereum: { - tvl: sumTokensExport({ - owners: [ - "0x3b983B701406010866bD68331aAed374fb9f50C9", // Swivel v1 - "0x093e4d20d9b2c3c8f68e8a20262d8fb8ebce08fa", // Swivel v2 - "0x373a06bD3067f8DA90239a47f316F09312b7800F" // Swivel v3 - ], - tokens: [ - "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", // cDAI - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - "0x39AA39c021dfbaE8faC545936693aC917d5E7563", // cUSDC, - // "0xEb91861f8A4e1C12333F42DCE8fB0Ecdc28dA716", // eUSDC - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.WSTETH, - "0x5E8422345238F34275888049021821E8E08CAa1f", // frxETH - ADDRESSES.ethereum.sfrxETH - ] - }) - } -}; diff --git a/projects/swop/index.js b/projects/swop/index.js deleted file mode 100644 index f73ae827bea..00000000000 --- a/projects/swop/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokens, call } = require('../helper/chain/waves'); -const { getConfig } = require("../helper/cache"); -const { getUniTVL } = require('../helper/unknownTokens') - -const swopfiBackendEndpoint = "https://backend.swop.fi"; - -const getSwopFiTVL = async (api) => { - const { pools } = await getConfig('swop', `${swopfiBackendEndpoint}/pools`) - for (const pool of pools) { - await sumTokens({ owners: [pool.id], api, includeWaves: true, blacklistedTokens: ['Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT'] }) - } -} - -module.exports = { - timetravel: false, // Waves blockchain, - methodology: "Counts the tokens locked on AMM pools", - misrepresentedTokens: true, - hallmarks: [ - [1730299107, "Unit0 Protocol Lunch"] - ], - waves: { - tvl: getSwopFiTVL, - staking: async () => { - const res = await call({ target: '3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS', key: 'total_GSwop_amount' }) - return { swop: res / 1e8 } - } - }, - unit0: { - tvl: getUniTVL({ factory: '0x944Eb5ac122Ea8c764Fa80e80A7fCA2C9A13Ab0a', useDefaultCoreAssets: true}) - } -}; diff --git a/projects/swych/index.js b/projects/swych/index.js deleted file mode 100644 index 86c7c2eaf62..00000000000 --- a/projects/swych/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const tokens = { - USDT: ADDRESSES.bsc.USDT, - WBNB: ADDRESSES.bsc.WBNB, - BTC: ADDRESSES.bsc.BTCB, - ETH: ADDRESSES.bsc.ETH, - SOL: "0x570A5D26f7765Ecb712C0924E4De545B89fD43dF", -} -const POOL = '0xF86f70fb4959a9FCF1e7dD67A05dC0AC95c3802d' - -module.exports = { - bsc: { - tvl: sumTokensExport({ owner: POOL, tokens: Object.values(tokens), }) - }, - hallmarks: [ - ['2024-02-26', 'Max leverage increase to 100x'], - ['2024-03-05', 'Solana integration'], - ], -} \ No newline at end of file diff --git a/projects/sxbet/index.js b/projects/sxbet/index.js deleted file mode 100644 index 4fdac19a7ea..00000000000 --- a/projects/sxbet/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { sumTokensExport } = require("../helper/unknownTokens"); - -const escrowTvl = sumTokensExport({ - owner: '0x9039A2F174Ca7AfF96C983CAfB6EAC356a87edE7', - tokens: [ADDRESSES.sxr.WSX, ADDRESSES.sxr.USDC], -}) - -const stakingTvl = staking('0x2083eF16cc1749c98F101E41Dba9b9472D4C5702', ADDRESSES.sxr.WSX); - -module.exports = { - sxr: { - tvl: escrowTvl, - staking: stakingTvl, - } -}; diff --git a/projects/sxr-bridge/index.js b/projects/sxr-bridge/index.js deleted file mode 100644 index ebd9ff5d27f..00000000000 --- a/projects/sxr-bridge/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: ['0xa104C0426e95a5538e89131DbB4163d230C35f86', '0xB4968C66BECc8fb4f73b50354301c1aDb2Abaa91'], - fetchCoValentTokens: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/syde/index.js b/projects/syde/index.js deleted file mode 100644 index 75e3e813773..00000000000 --- a/projects/syde/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const sydeBtcPool = "EQCPWmXKrtHV8Kr85Y4Wbr48kPpEEUJFzJwwMeyk8d6SL0aW" -const sydeEthPool = "EQB-0rsa1xVNDQaSu8zlILSdlvP-tn3sXoJgl1kAEFS-4M3t" -const sydeEthV2Pool = "EQD5B3arO4jzukP-3u1Te3_Ezak-Baf5BztuGCItylHzbhZp" -const sydeSolPool = "EQCuFUhl6rrSZWT8Ozl7b4jpiadODlPxAaaDnQv7wUnyJqcT" -const sydeXauPool = "EQCi9ogNps1Jbj5t7GcIb8iA1ghjHHAadljVgY80ONnEvHyM" -const sydeTonPool = "EQBhwJfdCFVImLYzAfFzk6-jbsiUhX78YhOUJEYteFBVHnJq" - - -module.exports = { - methodology: 'Counts Syde smartcontract balance as TVL.', - ton: { - tvl: sumTokensExport({ owners: [sydeBtcPool, sydeEthPool, sydeEthV2Pool, sydeSolPool, sydeXauPool, sydeTonPool], tokens: [ADDRESSES.null]}), - } -} diff --git a/projects/sygma/index.js b/projects/sygma/index.js deleted file mode 100644 index e46ae73957f..00000000000 --- a/projects/sygma/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const PHALA_TOKEN_CONTRACT = '0x6c5bA91642F10282b576d91922Ae6448C9d52f4E'; -const SYGMA_ERC20_HANDLER = '0xC832588193cd5ED2185daDA4A531e0B26eC5B830'; - -module.exports = { - methodology: 'Counts the number of PHALA tokens held by the Sygma ERC-20 Handler.', - ethereum: { - tvl: sumTokensExport({ owner: SYGMA_ERC20_HANDLER, tokens: [PHALA_TOKEN_CONTRACT] }), - } -} \ No newline at end of file diff --git a/projects/sygnum-bank/index.js b/projects/sygnum-bank/index.js deleted file mode 100644 index 3d1318486b7..00000000000 --- a/projects/sygnum-bank/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const fund = "0x2AB105A3eAd22731082B790CA9A00D9A3A7627F9"; - -module.exports = { - methodology: "TVL represents the total sum of all tokens minted in Fidelity's investment fund (FIUSD)", - era: { - tvl: async (api) => { - const supply = await api.call({ target: fund, abi: "erc20:totalSupply" }); - api.add("0x2AB105A3eAd22731082B790CA9A00D9A3A7627F9", supply); - }, - }, -}; diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js deleted file mode 100644 index 181eff3e7fb..00000000000 --- a/projects/symbiosis-finance/config.js +++ /dev/null @@ -1,511 +0,0 @@ -module.exports = { - chains: [ - { - name: 'ethereum', - tokens: [ - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC, - '0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9', // SIS, - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH, - '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT, - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC, - '0x12970E6868f88f6557B76120662c1B3E50A646bf', // LADYS, - '0xD9A442856C234a39a81a089C06451EBAa4306a72', // pufETH, - '0x853d955aCEf822Db058eb8505911ED77F175b99e', // FRAX, - '0x9C7BEBa8F6eF6643aBd725e45a4E8387eF260649', // G, - '0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1', // WTON, - '0x4d224452801ACEd8B2F0aebE155379bb5D594381', // APE - ], - holders: [ - '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8' // portal - ] - }, - { - name: 'bsc', - tokens: [ - '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', // USDC, - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD, - '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', // ETH, - '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', // BTCB, - '0xF98b660AdF2ed7d9d9D9dAACC2fb0CAce4F21835', // SIS, - '0x9C7BEBa8F6eF6643aBd725e45a4E8387eF260649', // G, - '0x76A797A59Ba2C17726896976B7B3747BfD1d220f', // WTON, - '0xB3F4D70C6a18cC0F2D1205dbF3B21cB73e1B0592', // GPTW, - '0xA67c48F86Fc6d0176Dca38883CA8153C76a532c7', // syBTC, - '0x4b3a2187648902082db0a44e8235d57F3f23DD10', // PINEYE, - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB - ], - holders: [ - '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4' // portal - ] - }, - { - name: 'avax', - tokens: [ - '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', // USDC, - '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', // USDC.e - ], - holders: [ - '0xE75C7E85FE6ADd07077467064aD15847E6ba9877' // portal - ] - }, - { - name: 'polygon', - tokens: [ - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', // USDC.e, - '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', // WETH, - '0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89', // FRAX - ], - holders: [ - '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8' // portal - ] - }, - { - name: 'telos', - tokens: [ - '0xe6E5f3d264117E030C21920356641DbD5B3d660c', // USDC, - '0x63d71E79AdF0886c989A23b04a0E86F1489b6BC3', // WETH, - '0x7bD3ffe9f0C9CF08FD60e102FEa455A6EA580276', // USDT - ], - holders: [ - '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8' // portal - ] - }, - { - name: 'kava', - tokens: [ - '0x919C1c267BC06a7039e03fcc2eF738525769109c', // USDt - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'boba', - tokens: [ - '0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc', // USDC - ], - holders: [ - '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8' // portal - ] - }, - { - name: 'era', - tokens: [ - '0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4', // USDC.e, - '0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4', // USDC, - '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91', // WETH, - '0xBBeB516fb02a01611cBBE0453Fe3c580D7281011', // WBTC, - '0xdd9f72afED3631a6C85b5369D84875e6c42f1827', // SIS, - '0xED0c95EBe5a3E687cB2224687024FeC6518E683e', // syBTC - ], - holders: [ - '0x4f5456d4d0764473DfCA1ffBB8524C151c4F19b9' // portal - ] - }, - { - name: 'arbitrum', - tokens: [ - '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // USDC, - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', // USDC.e, - '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', // WETH, - '0x9E758B8a98a42d612b3D38B66a22074DC03D7370', // SIS, - '0x3b60FF35D3f7F62d636b067dD0dC0dFdAd670E4E', // LADYS, - '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', // FRAX, - '0x1A6B3A62391ECcaaa992ade44cd4AFe6bEC8CfF1', // UXLINK, - '0x7f9FBf9bDd3F4105C478b996B648FE6e828a1e98', // APE - ], - holders: [ - '0x01A3c8E513B758EBB011F7AFaf6C37616c9C24d9' // portal - ] - }, - { - name: 'optimism', - tokens: [ - '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', // USDC.e, - '0x4200000000000000000000000000000000000006', // WETH - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'arbitrum_nova', - tokens: [ - '0x750ba8b76187092B0D1E87E28daaf484d1b5273b', // USDC, - '0x722E8BdD2ce80A4422E880164f2079488e115365', // WETH - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'polygon_zkevm', - tokens: [ - '0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035', // USDC, - '0x37eAA0eF3549a5Bb7D431be78a3D99BD360d19e5', // USDC.e, - '0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9', // WETH - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'linea', - tokens: [ - '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f', // WETH, - '0x176211869cA2b568f2A7D4EE941E073a821EE1ff', // USDC, - '0x6EF95B6f3b0F39508e3E04054Be96D5eE39eDE0d', // SIS - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'mantle', - tokens: [ - '0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9', // USDC, - '0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111', // WETH, - '0x1Bdd8878252DaddD3Af2ba30628813271294eDc0', // CATI, - '0x482deB2F7B9608a80eA91E71F06380E9891501C6', // UXLINK - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'base', - tokens: [ - '0x4200000000000000000000000000000000000006', // WETH, - '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', // USDbC, - '0x9C7BEBa8F6eF6643aBd725e45a4E8387eF260649', // G - ], - holders: [ - '0xEE981B2459331AD268cc63CE6167b446AF4161f8' // portal - ] - }, - { - name: 'tron', - tokens: [ - 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', // USDT - ], - holders: [ - 'TVgY3ayqTGUoe7th84ZNL5peVfRNdLFDjf' // portal - ] - }, - { - name: 'scroll', - tokens: [ - '0x5300000000000000000000000000000000000004', // WETH, - '0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4', // USDC, - '0x1467b62A6AE5CdcB10A6a8173cfe187DD2C5a136', // SIS, - '0xc4d46E8402F476F269c379677C99F18E22Ea030e', // pufETH - ], - holders: [ - '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4' // portal - ] - }, - { - name: 'manta', - tokens: [ - '0x0Dc808adcE2099A9F62AA87D9670745AbA741746', // WETH, - '0xb73603C5d87fA094B7314C74ACE2e64D165016fb', // USDC, - '0xA53E005Cecd3D7C89A4AE814617cC14828b6527E', // pufETH - ], - holders: [ - '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4' // portal - ] - }, - { - name: 'metis', - tokens: [ - '0x420000000000000000000000000000000000000A', // WETH - ], - holders: [ - '0xd8db4fb1fEf63045A443202d506Bcf30ef404160' // portal - ] - }, - { - name: 'ftn', - tokens: [ - '0xDeF886C55a79830C47108eeb9c37e78a49684e41', // USDT, - '0x4237e0A5b55233D5B6D6d1D9BF421723954130D8', // USDC, - '0xE5b3562A0fa9eC3e718C96FfE349e1280D2Be591', // WETH, - '0x6B6301dcBA742E2320dD083A8d8fDbaB9527484B', // WBTC - ], - holders: [ - '0x318C2B9a03C37702742C3d40C72e4056e430135A' // portal - ] - }, - { - name: 'mode', - tokens: [ - '0x4200000000000000000000000000000000000006', // WETH - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'rsk', - tokens: [ - '0x779Ded0c9e1022225f8E0630b35a9b54bE713736', // USD₮0, - '0xef213441A85dF4d7ACbDaE0Cf78004e1E486bB96', // rUSDT, - '0x74c9f2b00581F1B11AA7ff05aa9F608B7389De67', // USDC.e, - '0x542fDA317318eBF1d3DEAf76E0b632741A7e677d', // WRBTC, - '0xB52E582263c1d0189b3cc1402c1B7205b7F2E9Ba', // syBTC - ], - holders: [ - '0x5aa5f7f84ed0e5db0a4a85c3947ea16b53352fd4' // portal - ] - }, - { - name: 'blast', - tokens: [ - '0x4300000000000000000000000000000000000004', // WETH - ], - holders: [ - '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4' // portal - ] - }, - { - name: 'merlin', - tokens: [ - '0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA', // WBTC - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'zklink', - tokens: [ - '0x8280a4e7D5B3B658ec4580d3Bc30f5e50454F169', // WETH, - '0x1B49eCf1A8323Db4abf48b2F5EFaA33F7DdAB3FC', // pufETH - ], - holders: [ - '0x8Dc71561414CDcA6DcA7C1dED1ABd04AF474D189' // portal - ] - }, - { - name: 'core', - tokens: [ - '0x8034aB88C3512246Bf7894f57C834DdDBd1De01F', // coreBTC - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'taiko', - tokens: [ - '0xA51894664A773981C6C112C43ce576f315d5b1B6', // WETH - ], - holders: [ - '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4' // portal - ] - }, - { - name: 'sei', - tokens: [ - '0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1', // USDC.n, - '0xB75D0B03c06A926e488e2659DF1A861F860bD3d1', // USDT, - '0xcB0DdC112EF317271266c83D7179Bf9186b9C658', // GPTW - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'zeta', - tokens: [ - '0x1e4bF3CaBD7707089138dD5a545B077413FA83Fc', // pufETH, - '0x0cbe0dF132a6c6B4a2974Fa1b7Fb953CF0Cc798a', // USDC.ETH - ], - holders: [ - '0x8a7F930003BedD63A1ebD99C5917FD6aE7E3dedf' // portal - ] - }, - { - name: 'cronos', - tokens: [ - '0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', // USDC - ], - holders: [ - '0xE75C7E85FE6ADd07077467064aD15847E6ba9877' // portal - ] - }, - { - name: 'fraxtal', - tokens: [ - '0xA8a59D73388D0c4344a7b0Ba287ddb654227c38a', // WETH, - '0xFc00000000000000000000000000000000000001', // frxUSD - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'gravity', - tokens: [ - '0xFbDa5F676cB37624f28265A144A48B0d6e87d3b6', // USDC.e, - '0xBB859E225ac8Fb6BE1C7e38D87b767e95Fef0EbD', // wG - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'bsquared', - tokens: [ - '0x4200000000000000000000000000000000000006', // WBTC - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'ton', - tokens: [ - 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs', // USDT, - 'EQBh9XACT0B60U8Q48VnjyqCxzxpM4oA0c8rqKt4h70yk1V5', // UXLINK, - 'EQD-cvR0Nz6XAyRBvbhz-abTrRC6sI5tvHvvpeQraV9UAAD7', // CATI, - 'EQDY2MzMJY_9OWm9UyQNLTU2Qs_8BRomlMUbbADnh-tFkLaU', // PINEYE - ], - holders: [ - 'EQBZh9CpLZyNlwI7am0PHpVy8T8zdJxAhlG3m3xMi0BoVaUh' // portal - ] - }, - { - name: 'cronos_zkevm', - tokens: [ - '0xaa5b845F8C9c047779bEDf64829601d8B264076c', // USDC - ], - holders: [ - '0x2E818E50b913457015E1277B43E469b63AC5D3d7' // portal - ] - }, - { - name: 'morph', - tokens: [ - '0xe34c91815d7fc18A9e2148bcD4241d0a5848b693', // USDC - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'goat', - tokens: [ - '0xbC10000000000000000000000000000000000000', // WGBTC - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'sonic', - tokens: [ - '0x50c42dEAcD8Fc9773493ED674b675bE577f2634b', // WETH - ], - holders: [ - '0xE75C7E85FE6ADd07077467064aD15847E6ba9877' // portal - ] - }, - { - name: 'abstract', - tokens: [ - '0x3439153EB7AF838Ad19d56E1571FBD09333C2809', // WETH - ], - holders: [ - '0x8Dc71561414CDcA6DcA7C1dED1ABd04AF474D189' // portal - ] - }, - { - name: 'xdai', - tokens: [ - '0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0', // USDC.e, - '0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1', // WETH - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'berachain', - tokens: [ - '0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590', // WETH - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'unichain', - tokens: [ - '0x4200000000000000000000000000000000000006', // WETH - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'soneium', - tokens: [ - '0x4200000000000000000000000000000000000006', // WETH - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'op_bnb', - tokens: [ - '0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea', // WETH, - '0x4200000000000000000000000000000000000006', // WBNB - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'hyperliquid', - tokens: [ - '0xBe6727B535545C67d5cAa73dEa54865B92CF7907', // UETH, - '0xb88339CB7199b77E23DB6E890353E22632Ba630f', // USDC, - '0xab11329560Fa9C9c860Bb21A9342215a1265BBB0', // APE - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'katana', - tokens: [ - '0x4200000000000000000000000000000000000006', // WETH, - '0xEE7D8BCFb72bC1880D0Cf19822eB0A2e6577aB62', // WETH, - '0x203A662b0BD271A6ed5a60EdFbd04bFce608FD36', // USDC - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'apechain', - tokens: [ - '0x48b62137EdfA95a428D35C09E44256a739F6B557', // WAPE - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - }, - { - name: 'plasma', - tokens: [ - '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb', // USDT0 - ], - holders: [ - '0x292fC50e4eB66C3f6514b9E402dBc25961824D62' // portal - ] - } - ] -} \ No newline at end of file diff --git a/projects/symbiosis-finance/index.js b/projects/symbiosis-finance/index.js deleted file mode 100644 index 794479e66c0..00000000000 --- a/projects/symbiosis-finance/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const config = require("./config"); -const { sumTokensExport } = require('../helper/unwrapLPs') -const { sumTokensExport: sumTon } = require('../helper/chain/ton') - -module.exports = { - methodology: 'Counts the amount of stables locked in Symbiosis protocol contracts: Portals V2', -}; - -config.chains.forEach(chainInfo => { - const {name: chain, tokens, holders} = chainInfo - - if (chain === 'ton') { - module.exports[chain] = { - tvl: sumTon({ chain, tokens, owners: holders }) - } - } else { - module.exports[chain] = { - tvl: sumTokensExport({ chain, tokens, owners: holders }) - } - } -}) - -const deprecatedChains = ['aurora', 'boba_avax'] -deprecatedChains.forEach(chain => { - module.exports[chain] = { - tvl: () => ({}) - } -}) \ No newline at end of file diff --git a/projects/symbiotic/index.js b/projects/symbiotic/index.js deleted file mode 100644 index 4a50ab1bf88..00000000000 --- a/projects/symbiotic/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs2 } = require('../helper/cache/getLogs') - -async function tvl(api) { - const owners = [] - const tokens = [] - await vaultsTvl(api, tokens, owners) - await defaultCollateralsTvl(api, tokens, owners) - return sumTokens2({api, tokensAndOwners2: [tokens, owners], permitFailure: true, }) -} - -async function defaultCollateralsTvl(api, tokens, owners) { - const logs = await getLogs2({ - api, - factory: '0x1BC8FCFbE6Aa17e4A7610F51B888f34583D202Ec', - eventAbi: 'event AddEntity(address indexed entity)', - fromBlock: - 20011312, - }) - const COLLATERALS = logs.map((log) => log.entity) - const _tokens = await api.multiCall({ abi: 'address:asset', calls: COLLATERALS }) - owners.push(...COLLATERALS) - tokens.push(..._tokens) -} - -async function vaultsTvl(api, tokens, owners) { - const logs = await getLogs2({ - api, - factory: '0xAEb6bdd95c502390db8f52c8909F703E9Af6a346', - eventAbi: 'event AddEntity(address indexed entity)', - fromBlock: 21580035, - }) - const VAULTS = logs.map((log) => log.entity) - const _tokens = await api.multiCall({ abi: 'address:collateral', calls: VAULTS }) - owners.push(...VAULTS) - tokens.push(..._tokens) -} - -module.exports = { - start: '2024-06-11', - ethereum: { - tvl, - }, -} diff --git a/projects/symblox.js b/projects/symblox.js deleted file mode 100644 index 266fa8eae04..00000000000 --- a/projects/symblox.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2 } = require("./helper/unwrapLPs"); - -const symblox = "0xD0CB9244844F3E11061fb3Ea136Aab3a6ACAC017"; -const pools = { - "0x2af1fea48018fe9f1266d67d45b388935df1c14d": ADDRESSES.velas.sVLX, - "0x720b92ef8ee928c5cbe9ca787321802610bcbf6e": ADDRESSES.velas.VLX, - "0x974d24a6bce9e0a0a27228e627c9ca1437fe0286": ADDRESSES.velas.ETH_1, - "0xe7557efbe705e425de6a57e90447ba5ad70e9de5": ADDRESSES.velas.USDT_1, -}; - -async function tvl(api) { - const ownerTokens = Object.entries(pools).map(([id, pool]) => [[pool, symblox], id]) - return sumTokens2({api, ownerTokens }) -} - -module.exports = { - velas: { - tvl, - }, -}; diff --git a/projects/symm-io/index.js b/projects/symm-io/index.js deleted file mode 100644 index b6268d36b38..00000000000 --- a/projects/symm-io/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const config = { - arbitrum: "0x8F06459f184553e5d04F07F868720BDaCAB39395", - mantle: "0x2Ecc7da3Cc98d341F987C85c3D9FC198570838B5", - bsc: "0x9A9F48888600FC9c05f11E03Eab575EBB2Fc2c8f", - base: ["0x91Cf2D8Ed503EC52768999aA6D8DBeA6e52dbe43", '0xC6a7cc26fd84aE573b705423b7d1831139793025'], - berachain: "0x3d17f073cCb9c3764F105550B0BCF9550477D266", - mode: "0x3d17f073cCb9c3764F105550B0BCF9550477D266", - iotaevm: "0xc258535aaF6ad3cEd5D2E03e2B66C35262488309", - sonic: "0x803de354cbd853D9aE3BC58131A5D538DE7a72E3", - coti: "0x2Ecc7da3Cc98d341F987C85c3D9FC198570838B5", -} - -Object.keys(config).forEach(chain => { - let vault = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (!Array.isArray(vault)) vault = [vault] - const collateral = await api.multiCall({ abi: 'address:getCollateral', calls: vault }) - return api.sumTokens({ tokensAndOwners2: [collateral, vault] }) - } - } -}) \ No newline at end of file diff --git a/projects/symmetric/index.js b/projects/symmetric/index.js deleted file mode 100644 index dd34bfed562..00000000000 --- a/projects/symmetric/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { v1Tvl, onChainTvl, balV2GraphExport } = require('../helper/balancer') - -module.exports = { - celo: { - tvl: sdk.util.sumChainTvls([ - v1Tvl('0x6C2e59C3cCB1d81c0eC9Fb9d4d6a3CC3488Fd71c', 6759199), - onChainTvl('0xE9265892B5c56264d60e26451862B576814185C9', 11764404), - ]) - }, - xdai: { - tvl: sdk.util.sumChainTvls([ - v1Tvl('0x9B4214FD41cD24347A25122AC7bb6B479BED72Ac', 16465037), - onChainTvl('0x901E0dC02f64C42F73F0Bdbf3ef21aFc96CF50be', 21343993), - ]) - }, - telos: { - tvl: onChainTvl('0xbccc4b4c6530F82FE309c5E845E50b5E9C89f2AD', 308572378), - }, - meter: { - tvl: onChainTvl('0x913f21E596790aFC6AA45229E9ff8b7d0A473D5A', 51825430), - }, - taiko: { - tvl: onChainTvl('0xbccc4b4c6530F82FE309c5E845E50b5E9C89f2AD', 371729), - }, - etlk: { - tvl: balV2GraphExport({ vault:'0xbccc4b4c6530F82FE309c5E845E50b5E9C89f2AD', graphURL: '4y4fC3k9DMrJ9XYY6Z1Qi8DXJkpRrQuQCjh7zBRhxjQr', name: 'symmetric-etlk'}) - } -} diff --git a/projects/symmetry-trade/index.js b/projects/symmetry-trade/index.js deleted file mode 100644 index 0016b2856f7..00000000000 --- a/projects/symmetry-trade/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const MARKET_CONTRACT = '0x4B9dE260e4283FEEb53F785AabeAa895eC5d46F9'; -const TOKENS = [ - ADDRESSES.scroll.USDC, // USDC - ADDRESSES.scroll.USDT, // USDT - ADDRESSES.scroll.WETH, // WETH - ADDRESSES.scroll.WBTC, // WBTC - "0xf610A9dfB7C89644979b4A0f27063E9e7d7Cda32", // WSTETH -]; - -module.exports = { - methodology: 'counts the token deposited in market contract', - scroll: { - tvl: sumTokensExport({ owner: MARKET_CONTRACT, tokens: TOKENS}), - } -}; \ No newline at end of file diff --git a/projects/symmetry/index.js b/projects/symmetry/index.js deleted file mode 100644 index f7911fb920f..00000000000 --- a/projects/symmetry/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport } = require("../helper/solana"); -const FUNDS_VAULT = 'BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx' - -module.exports = { - timetravel: false, - solana: { - tvl: sumTokensExport({ owner: FUNDS_VAULT }) - }, -}; \ No newline at end of file diff --git a/projects/symphony/abi.json b/projects/symphony/abi.json deleted file mode 100644 index c592dbcdab7..00000000000 --- a/projects/symphony/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getTotalTokens": "function getTotalTokens(address token, uint256 contractBalance, address tokenStrategy) returns (uint256 totalTokens)" -} \ No newline at end of file diff --git a/projects/symphony/index.js b/projects/symphony/index.js deleted file mode 100644 index 134e007d59c..00000000000 --- a/projects/symphony/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const yoloAddress = { - 'avax': "0x44f91814c5c766e0762c8c23d65759f631c0abbd", - 'polygon': "0x935b97586FE291750F46Bf4eD7BeB8E1c3d110A2", - 'optimism': "0x3Ff61F4d7e1d912CA3Cb342581B2e764aE24d017" -} -const TOKENLIST_URL = "https://raw.githubusercontent.com/symphony-finance/token-list/master/symphony.tokenlist.json"; - -const tvl = async (api) => { - const tokens = (await getConfig('symphony', TOKENLIST_URL)).tokens - .filter((data) => data.chainId == api.chainId && !data.extensions.isNative) - .map((token) => token.address) - - return api.sumTokens({ tokens, owners: [yoloAddress[api.chain]], }) -} - -module.exports = { - deadFrom: '2023-07-07', - avax: { tvl }, - polygon: { tvl }, - optimism: { tvl }, - methodology: "we only count tokens deposited in the yolo contract", -}; diff --git a/projects/synapse/config.js b/projects/synapse/config.js deleted file mode 100644 index d0b9b8c9418..00000000000 --- a/projects/synapse/config.js +++ /dev/null @@ -1,466 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - ethereum: { - tvl: { - pools: [ - { - pool: '0x1116898dda4015ed8ddefb84b6e8bc24528af2d8', - tokens: [ - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ] - }, - ], - bridge: { - address: '0x2796317b0fF8538F253012862c06787Adfb8cEb6', - tokens: [ - '0x98585dfc8d9e7d48f0b1ae47ce33332cf4237d96', // NEWO - ADDRESSES.ethereum.WETH, - '0x0ab87046fBb341D058F17CBC4c1133F25a20a52f', // gOHM - '0x71ab77b7dbb4fa7e017bc15090b2163221420282', // HIGH - ADDRESSES.ethereum.FRAX, - '0xbaac2b4491727d78d2b78815144570b9f2fe8899', // DOG - '0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f', // SDT - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - '0xb753428af26e81097e7fd17f40c88aaa3e04902c', // SFI - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WBTC, - '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8', // agEUR - '0x0642026E7f0B6cCaC5925b4E7Fa61384250e1701', // H2O - '0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B', // USDB - ] - } - } - }, - optimism: { - tvl: { - bridge: { - address: '0xAf41a65F786339e7911F4acDAD6BD49426F2Dc6b', - tokens: [] - }, - pools: [ - { - pool: '0xE27BFf97CE92C3e1Ff7AA9f86781FDd6D48F5eE9', - tokens: [ - // '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', // neth - ADDRESSES.optimism.WETH, - ] - }, - { - pool: '0xF44938b0125A6662f9536281aD2CD6c499F22004', - tokens: [ - // ADDRESSES.metis.SYN, // nusd - ADDRESSES.optimism.USDC, - ] - }, - ], - } - }, - avax: { - tvl: { - bridge: { - address: '0xC05e61d0E7a63D27546389B7aD62FdFf5A91aACE', - tokens: [ - ADDRESSES.avax.WAVAX, - '0x1f1e7c893855525b303f99bdf5c3c05be09ca251', // SYN - '0x321E7092a180BB43555132ec53AaA65a5bF84251', // gOHM - ADDRESSES.avax.BTC_b, - '0x5aB7084CB9d270c2Cb052dd30dbecBCA42F8620c', // USDB - '0x62edc0692BD897D2295872a9FFCac5425011c661', // GMX - ] - }, - pools: [ - { - pool: '0xED2a7edd7413021d440b09D654f3b87712abAB66', - tokens: [ - ADDRESSES.avax.DAI, - ADDRESSES.avax.USDC_e, - ADDRESSES.avax.USDT_e, - // "0xCFc37A6AB183dd4aED08C204D1c2773c0b1BDf46", // nusd - ] - }, - { - pool: '0x77a7e60555bC18B4Be44C181b2575eee46212d44', - tokens: [ - "0x53f7c5869a859f0aec3d334ee8b4cf01e3492f21", // awETH - // "0x19e1ae0ee35c0404f835521146206595d37981ae", // nETH - ] - }, - ] - } - }, - cronos: { - tvl: { - bridge: { - address: '0xE27BFf97CE92C3e1Ff7AA9f86781FDd6D48F5eE9', - tokens: [] - }, - pools: [ - { - pool: '0xCb6674548586F20ca39C97A52A0ded86f48814De', - tokens: [ - ADDRESSES.cronos.USDC, - // "0x396c9c192dd323995346632581BEF92a31AC623b", // nusd - ] - }, - ] - } - }, - bsc: { - tvl: { - bridge: { - address: '0xd123f70AE324d34A9E76b67a27bf77593bA8749f', - tokens: [ - '0x5f4bde007dc06b867f86ebfe4802e34a1ffeed63', // HIGH - '0xaA88C603d142C371eA0eAC8756123c5805EdeE03', // DOG - ADDRESSES.bsc.BUSD, - '0x0FE9778c005a5A6115cBE12b0568a2d50b765A51', // NFD - '0x130025eE738A66E691E6A7a62381CB33c6d9Ae83', // JUMP - '0xc8699AbBba90C7479dedcCEF19eF78969a2fc608', // USDB - ] - }, - pools: [ - { - pool: '0x28ec0B36F0819ecB5005cAB836F4ED5a2eCa4D13', - tokens: [ - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.USDT, - // "0x23b891e5c62e0955ae2bd185990103928ab817b3", // nusd - ] - }, - ] - } - }, - polygon: { - tvl: { - bridge: { - address: '0x8f5bbb2bb8c2ee94639e55d5f41de9b4839c1280', - tokens: [ - '0xd8cA34fd379d9ca3C6Ee3b3905678320F5b45195', // gOHM - ADDRESSES.polygon.WMATIC_2, - ] - }, - pools: [ - { - pool: '0x85fCD7Dd0a1e1A9FCD5FD886ED522dE8221C3EE5', - tokens: [ - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, - // "0xb6c473756050de474286bed418b77aeac39b02af", // nusd - ] - }, - ] - } - }, - fantom: { - tvl: { - bridge: { - address: '0xAf41a65F786339e7911F4acDAD6BD49426F2Dc6b', - tokens: [ - '0x91fa20244Fb509e8289CA630E5db3E9166233FDc', // gOHM - ADDRESSES.fantom.WFTM, - '0x6Fc9383486c163fA48becdEC79d6058f984f62cA', // USDB - ] - }, - pools: [ - { - pool: '0x85662fd123280827e11c59973ac9fcbe838dc3b4', - tokens: [ - ADDRESSES.fantom.USDC, - ADDRESSES.fantom.fUSDT, - // "0xED2a7edd7413021d440b09D654f3b87712abAB66", // nusd - ] - }, - { - pool: ADDRESSES.arbitrum.nUSD, - tokens: [ - ADDRESSES.fantom.MIM, - ADDRESSES.fantom.USDC, - ADDRESSES.fantom.fUSDT, - // "0xED2a7edd7413021d440b09D654f3b87712abAB66", // nusd - ] - }, - { - pool: '0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1', - tokens: [ - "0x74b23882a30290451A17c44f4F05243b6b58C76d", // weth - // ADDRESSES.metis.SYN, // neth - ] - }, - ] - } - }, - boba: { - tvl: { - bridge: { - address: '0x432036208d2717394d2614d6697c46DF3Ed69540', - tokens: [ - ] - }, - pools: [ - { - pool: '0x753bb855c8fe814233d26Bb23aF61cb3d2022bE5', - tokens: [ - ADDRESSES.boba.WETH, - // "0x96419929d7949D6A801A6909c145C8EEf6A40431", // neth - ] - }, - { - pool: '0x75FF037256b36F15919369AC58695550bE72fead', - tokens: [ - ADDRESSES.boba.DAI, - ADDRESSES.boba.USDC, - ADDRESSES.boba.USDT, - // "0x6B4712AE9797C199edd44F897cA09BC57628a1CF", // nusd - ] - }, - ] - } - }, - metis: { - tvl: { - bridge: { - address: '0x06Fea8513FF03a0d3f61324da709D4cf06F42A5c', - tokens: [ - '0xe3c82a836ec85311a433fbd9486efaf4b1afbf48' - ] - }, - pools: [ - { - pool: '0x09fec30669d63a13c666d2129230dd5588e2e240', - tokens: [ - ADDRESSES.metis.WETH, - // "0x931b8f17764362a3325d30681009f0edd6211231", // neth - ] - }, - { - pool: '0x555982d2E211745b96736665e19D9308B615F78e', - tokens: [ - ADDRESSES.metis.m_USDC, - // "0x961318fc85475e125b99cc9215f62679ae5200ab", // nusd - ] - }, - ] - } - }, - arbitrum: { - tvl: { - bridge: { - address: '0x6F4e8eBa4D337f874Ab57478AcC2Cb5BACdc19c9', - tokens: [ - ADDRESSES.arbitrum.GMX, - ] - }, - pools: [ - { - pool: '0xa067668661C84476aFcDc6fA5D758C4c01C34352', - tokens: [ - ADDRESSES.arbitrum.WETH, - // "0x3ea9b0ab55f34fb188824ee288ceaefc63cf908e", // neth - ] - }, - { - pool: '0x9Dd329F5411466d9e0C488fF72519CA9fEf0cb40', - tokens: [ - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC, - // ADDRESSES.arbitrum.nUSD, // nusd - ] - }, - { - pool: '0x0Db3FE3B770c95A0B99D1Ed6F2627933466c0Dd8', - tokens: [ - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.MIM, - // ADDRESSES.arbitrum.nUSD, // nusd - ] - }, - ] - } - }, - aurora: { - tvl: { - bridge: { - address: '0xaeD5b25BE1c3163c907a471082640450F928DDFE', - tokens: [ - ] - }, - pools: [ - { - pool: '0xcEf6C2e20898C2604886b888552CA6CcF66933B0', - tokens: [ - ADDRESSES.aurora.USDC_e, - ADDRESSES.aurora.USDT_e, - // ADDRESSES.aurora.nUSD, // nusd - ] - }, - ] - } - }, - harmony: { - tvl: { - bridge: { - address: '0xAf41a65F786339e7911F4acDAD6BD49426F2Dc6b', - tokens: [ - ADDRESSES.harmony.JEWEL, - ADDRESSES.harmony.xJEWEL, - '0x24eA0D436d3c2602fbfEfBe6a16bBc304C963D04', // DFKTEARS - ] - }, - pools: [ - { - pool: '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e', - tokens: [ - "0xef977d2f931c1978db5f6747666fa1eacb0d0339", // DAI - "0x985458e523db3d53125813ed68c274899e9dfab4", // USDC - "0x3c2b8be99c50593081eaa2a724f0b8285f5aba8f", // USDT - // "0xED2a7edd7413021d440b09D654f3b87712abAB66", // nusd - ] - }, - { - pool: ADDRESSES.arbitrum.nUSD, - tokens: [ - "0x6983d1e6def3690c4d616b13597a09e6193ea013", // 1ETH - // ADDRESSES.optimism.gOHM, // neth - ] - }, - { - pool: '0x00A4F57D926781f62D09bb05ec76e6D8aE4268da', - tokens: [ - ADDRESSES.harmony.AVAX, - // "???", // synAvax - ] - }, - ] - } - }, - moonriver: { - tvl: { - bridge: { - address: '0xaeD5b25BE1c3163c907a471082640450F928DDFE', - tokens: [ - '0x98878B06940aE243284CA214f92Bb71a2b032B8A', // wMOVR - ] - }, - } - }, - moonbeam: { - tvl: { - bridge: { - address: '0x84A420459cd31C3c34583F67E0f0fB191067D32f', - tokens: [ - '0x0db6729c03c85b0708166ca92801bcb5cac781fc', // veSOLAR - ] - }, - } - }, - canto: { - tvl: { - bridge: { - address: '0xDde5BEC4815E1CeCf336fb973Ca578e8D83606E0', - tokens: [ - ] - }, - pools: [ - { - pool: ADDRESSES.aurora.nUSD, - tokens: [ - ADDRESSES.canto.NOTE, - // "0xd8836af2e565d3befce7d906af63ee45a57e8f80", // nUSD - ] - }, - { - pool: '0x273508478e099Fdf953349e6B3704E7c3dEE91a5', - tokens: [ - ADDRESSES.functionx.WFX, - // "0xd8836af2e565d3befce7d906af63ee45a57e8f80", // nusd - ] - }, - { - pool: '0xF60F88bA0CB381b8D8A662744fF93486273c22F9', - tokens: [ - ADDRESSES.functionx.PURSE, - // "0x09fec30669d63a13c666d2129230dd5588e2e240", // nETH - ] - }, - ] - } - }, - klaytn: { - tvl: { - bridge: { - address: '0xaf41a65f786339e7911f4acdad6bd49426f2dc6b', - tokens: [ - '0x5819b6af194a78511c79c85ea68d2377a7e9335f', // wKLAY - '0xcd6f29dc9ca217d0973d3d21bf58edd3ca871a86', // wETH - '0xdcbacf3f7a069922e677912998c8d57423c37dfa', // wBTC - '0xd6dab4cff47df175349e6e7ee2bf7c40bb8c05a3', // USDT - '0x6270b58be569a7c0b8f47594f191631ae5b2c86c', // USDC - '0xdcbacf3f7a069922e677912998c8d57423c37dfa', // wBTC - ] - }, - pools: [ - { - pool: '0xfdbad1699a550f933efebf652a735f2f89d3833c', - tokens: [ - "0xd6dab4cff47df175349e6e7ee2bf7c40bb8c05a3", // USDT - ADDRESSES.klaytn.oUSDT, - ] - }, - ] - } - }, - base: { - tvl: { - bridge: { - address: '0xf07d1C752fAb503E47FEF309bf14fbDD3E867089', - tokens: [ - // '0xb554A55358fF0382Fb21F0a478C3546d1106Be8c', // nETH - ADDRESSES.null, - ] - }, - pools: [ - { - pool: '0x6223bD82010E2fB69F329933De20897e7a4C225f', - tokens: [ - // "0xb554A55358fF0382Fb21F0a478C3546d1106Be8c", // nETH - ADDRESSES.optimism.WETH_1, //base WETH - ] - }, - ] - } - }, - blast: { - tvl: { - bridge: { - address: '0x55769baf6ec39b3bf4aae948eb890ea33307ef3c', - tokens: [ - // '0xce971282faac9fabcf121944956da7142cccc855', //nETH - // '0x3194B0A295D87fDAA54DF852c248F7a6BAF6c6e0', // nUSD - // '0x9592f08387134e218327E6E8423400eb845EdE0E' // SYN - ] - }, - pools: [ - { - pool: '0xa4bd1AAD7cF04567c10f38FC4355E91bba32aC9c', // Stableswap - tokens: [ - ADDRESSES.blast.USDB, // USDB - // '0x3194B0A295D87fDAA54DF852c248F7a6BAF6c6e0', // nUSD - ] - }, - { - pool: '0x999fcd13C54B26E02a6Ccd185f71550b3a4641c0', // ETH pool - tokens: [ - ADDRESSES.blast.WETH, // WETH - // '0xce971282fAAc9faBcF121944956da7142cccC855', // nETH - ] - }, - ] - } - }, -} diff --git a/projects/synapse/index.js b/projects/synapse/index.js deleted file mode 100644 index 60ebc13a090..00000000000 --- a/projects/synapse/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require("../helper/unwrapLPs") -const { sumTokens: sumTokensCosmos, } = require('../helper/chain/cosmos') -const config = require("./config") - -const nullAddress = ADDRESSES.null - -Object.keys(config).forEach(chain => { - const chainExport = { - tvl: () => ({}), - } - module.exports[chain] = chainExport - Object.keys(config[chain]).forEach(exportKey => { - let { - pools = [], - bridge, - } = config[chain][exportKey] - chainExport[exportKey] = async (api) => { - let tokensAndOwners = [] - pools.forEach(({ pool, tokens }) => { - tokens.forEach(token => tokensAndOwners.push([token, pool])) - }) - if (bridge) { - const { address, tokens } = bridge - tokens.push(nullAddress) - tokensAndOwners.push(...tokens.map(t => [t, address])) - } - return sumTokens2({ api, tokensAndOwners }) - } - }) -}) - -module.exports.ethereum.pool2 = async (api) => { - return sumTokens2({ - api, tokensAndOwners: [ - ['0x4a86c01d67965f8cb3d0aaa2c655705e64097c31', '0xd10ef2a513cee0db54e959ef16cac711470b62cf', ] - ] - }) -} - -module.exports.terra = {} -module.exports.terra.tvl = async () => { - return sumTokensCosmos({ owner: 'terra1qwzdua7928ugklpytdzhua92gnkxp9z4vhelq8', chain: 'terra'}) -} -module.exports.hallmarks = [ - [1651881600, "UST depeg"], - ] diff --git a/projects/synatra/index.js b/projects/synatra/index.js deleted file mode 100644 index 8acc14204a0..00000000000 --- a/projects/synatra/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getTokenSupplies,} = require("../helper/solana"); - -const ySOL_MINT = 'yso11zxLbHA3wBJ9HAtVu6wnesqz9A2qxnhxanasZ4N'; -const yUSD_MINT = 'yUSDX7W89jXWn4zzDPLnhykDymSjQSmpaJ8e4fjC1fg'; -const TOKEN_MINTS = [ySOL_MINT, yUSD_MINT] - -async function tvl(api) { - await getTokenSupplies(TOKEN_MINTS, {api }) -} - -module.exports = { - doublecounted: true, - methodology: 'Tracks tvl via number of tokens currently minted for each pool.', - solana: { tvl, }, -} diff --git a/projects/syncdex-finance/index.js b/projects/syncdex-finance/index.js deleted file mode 100644 index e84840811ec..00000000000 --- a/projects/syncdex-finance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - era: { - hallmarks: [ - [1681340401,"Rug Pull"] - ], - tvl: () => 0, - }, -}; \ No newline at end of file diff --git a/projects/synclub-staked-bnb/index.js b/projects/synclub-staked-bnb/index.js deleted file mode 100644 index be8aa6743a6..00000000000 --- a/projects/synclub-staked-bnb/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { nullAddress } = require('../helper/tokenMapping'); -async function bscTvl(api) { - const bal = await api.call({ abi: 'erc20:totalSupply', target: '0xB0b84D294e0C75A6abe60171b70edEb2EFd14A1B' }) - const tvl = await api.call({ abi: 'function convertSnBnbToBnb(uint256 _amountInBnbX) external view returns (uint256)', target: '0x1adB950d8bB3dA4bE104211D5AB038628e477fE6' , params:[bal]}) - return { - ['bsc:' + nullAddress]: tvl - }; -} - -module.exports = { - doublecounted: true, - methodology: 'We aggregated the assets staked across synclub staking protocols', - bsc: { - tvl: bscTvl - } -} diff --git a/projects/syncnetwork/abi.json b/projects/syncnetwork/abi.json deleted file mode 100644 index c34954a68ac..00000000000 --- a/projects/syncnetwork/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)", - "token0": "address:token0", - "token1": "address:token1", - "totalSYNCLocked": "uint256:totalSYNCLocked" -} \ No newline at end of file diff --git a/projects/syncnetwork/index.js b/projects/syncnetwork/index.js deleted file mode 100644 index 3ba7856c88a..00000000000 --- a/projects/syncnetwork/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { pool2 } = require("../helper/pool2"); - -const syncToken = "0xB6ff96B8A8d214544Ca0dBc9B33f7AD6503eFD32" // SYNC -const uniPair = "0xFb2F545A9AD62F38fe600E24f75ecD790d30a7Ba"; // SYNC-ETH PAIR -const cBond = "0xC6c11F32D3ccC3BEaac68793bC3BFBe82838ca9F"; // CBOND contract - -async function staking(api) { - let lockedSync = await api.call({ target: cBond, abi: "uint256:totalSYNCLocked" }); - api.add(syncToken, lockedSync); -} - -module.exports = { - methodology:"Pool2 is the SYNC-ETH pair on UNI and staking according to their FAQ are SYNC tokens locked into CBOND contracts", - ethereum:{ - pool2: pool2('0xc6c11f32d3ccc3beaac68793bc3bfbe82838ca9f', uniPair), - staking, - tvl: async () => ({}), - } -}; diff --git a/projects/syncswap/index.js b/projects/syncswap/index.js deleted file mode 100644 index 4df70975262..00000000000 --- a/projects/syncswap/index.js +++ /dev/null @@ -1,111 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { transformDexBalances } = require('../helper/portedTokens') -const sdk = require('@defillama/sdk') - -async function tvl(api) { - const { fromBlock, classicFactorys = [], stableFactorys = [], aquaFactorys = [], rangedFactorys = [] } = config[api.chain] - - const logs = await Promise.all([...classicFactorys, ...stableFactorys, ...aquaFactorys].map(factory => (getFactoryLogs(api, factory)))); - - let balances = {} - const data = [] - - const reserves = await Promise.all(logs.map(log => (api.multiCall({ abi: 'function getReserves() external view returns (uint, uint)', calls: log.map(i => i.pool) })))) - - for (let i = 0; i < logs.length; i++) { - if (i < classicFactorys.length) { - reserves[i].forEach(([token0Bal, token1Bal], j) => { - data.push({ token0Bal, token1Bal, token0: logs[i][j].token0, token1: logs[i][j].token1 }) - }) - } else { - reserves[i].forEach(([reserve0, reserve1], j) => { - sdk.util.sumSingleBalance(balances, logs[i][j].token0, reserve0) - sdk.util.sumSingleBalance(balances, logs[i][j].token1, reserve1) - }) - } - } - - const v3logs = await Promise.all(rangedFactorys.map(factory => getV3FactoryLogs(api, factory))); - - const pairs = {}; - v3logs.flat().forEach(([token0, token1, , pair]) => { - const pairAddress = pair.toLowerCase(); - pairs[pairAddress] = { - token0Address: token0.toLowerCase(), - token1Address: token1.toLowerCase(), - }; - }); - - const balanceCalls = []; - Object.entries(pairs).forEach(([pair, { token0Address, token1Address }]) => { - balanceCalls.push({ target: token0Address, params: [pair] }); - balanceCalls.push({ target: token1Address, params: [pair] }); - }); - - const tokenBalances = await api.multiCall({ calls: balanceCalls, abi: 'erc20:balanceOf' }) - - balanceCalls.forEach(({ target }, i) => { - sdk.util.sumSingleBalance(balances, target, tokenBalances[i]) - }) - - return transformDexBalances({ balances, data, chain: api.chain }) - - async function getFactoryLogs(api, factory) { - return getLogs({ - api, - target: factory, - fromBlock, - topic: 'PoolCreated(address,address,address)', - eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, address pool)', - onlyArgs: true, - }) - } - - async function getV3FactoryLogs(api, factory) { - return getLogs({ - api, - target: factory, - fromBlock, - topic: "PoolCreated(address,address,int24)", - eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, int24 indexed tickSpacing, address pool)', - onlyArgs: true, - }) - } -} - -const config = { - era: { - fromBlock: 9775, - stableFactorys: ['0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3', '0x81251524898774F5F2FCaE7E7ae86112Cb5C317f', '0x582ad7014C3f755Fc0d29eCFC02FAB4c3A2D5a3D'], - classicFactorys: ['0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb', '0x0a34FBDf37C246C0B401da5f00ABd6529d906193', '0xA757eD0812092E2a8F78e6642a2A3215995A4131'], - aquaFactorys: ['0x20b28B1e4665FFf290650586ad76E977EAb90c5D', '0xFfa499b019394d9bEB5e21FC54AD572E4942302b', '0x0754870C1aAb00eDCFABDF4e6FEbDD30e90f327d'], - rangedFactorys: ['0x9D63d318143cF14FF05f8AAA7491904A494e6f13'] - }, - linea: { - fromBlock: 716, - stableFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727', '0x61Abf754fc031C544236053495a193f3518e9101', '0x024A096bAb43587d24004C95C3e20FcB7518Ad86'], - classicFactorys: ['0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d', '0x9573994Ae6C9b35627976d26FA89e507e71FBaA2', '0xb8AbaEa25E42DA5ac6897C9DAb0a8157885fE32b'], - aquaFactorys: ['0x7a31060d8524c21496a352BE65549eEf1e864fb0', '0x1080EE857D165186aF7F8d63e8ec510C28A6d1Ea'], - rangedFactorys: ['0xc5916f6cF441c72DaA2E2C48AfC7CE642eEe6690'] - }, - sophon: { - fromBlock: 38459, - stableFactorys: ['0x8c9d66ba3e1d7681cffffa3c7d9807adae368e74'], - classicFactorys: ['0x432bcc3bc62de9186f9e8763c82d43e418681e6c'], - aquaFactorys: ['0xa2e2f6b5db704fde654db69895c89523332e538e'], - rangedFactorys: ['0x0f6e27007e257e74c86522387BD071D561ba3C97'] - }, - scroll: { - fromBlock: 80875, - stableFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727', '0x5BEBDA7E264b03bB963CB2418f40C5ffcefb7A9e', '0xA2acA673C00495A184F88De533BBa8e1b7f38D00'], - classicFactorys: ['0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d', '0xDAEdEcF3F1Caf8d9050A0C973B77E40bA8024F69', '0x76f549af692efA64952d02c075226df9878Fb54C'], - aquaFactorys: ['0xa033eAbcCfd9b71543E34dec43935467A230Ce2d', '0x87aeb51d606056F48D241C4072f55ACd9D937018'], - rangedFactorys: ['0xB11042007e78bE92dc1c79DA1e7eF499b4B31838'] - }, -} - -module.exports = { - misrepresentedTokens: true, -} - -Object.keys(config).forEach(chain => { module.exports[chain] = { tvl } }) diff --git a/projects/syncus/index.js b/projects/syncus/index.js deleted file mode 100644 index 9314a662d5d..00000000000 --- a/projects/syncus/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('../helper/staking') -const { aaveV2Export } = require('../helper/aave') - -const stakingAddress = "0xc738CDb5140d6b7F688ba05a25c8a51568622D96"; -const syncAddress = "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0"; -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(stakingAddress, syncAddress), - }, - era: aaveV2Export('0xaa71728Aa548658FAbBd37C72C0e2a6234c193F1', { blacklistedTokens: ['0x2d20b8891f2f9ed0ebf1b179b2279f936dec9282']}) -}; diff --git a/projects/syncyield/index.js b/projects/syncyield/index.js deleted file mode 100644 index cb58aa92ae1..00000000000 --- a/projects/syncyield/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { yieldHelper, } = require("../helper/yieldHelper") -const { mergeExports } = require("../helper/utils") -const vault = '0x0fe9dB37CDB07cda112567EC9a6ba792dF9e3015' -const syn = '0xD0D07097c67fEAB7B79c79959AeEC30766515f10' -const abis = { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256, uint256, uint256, uint256, uint256, uint256, uint256 amount, uint256, address strat)', - poolLength: 'function poolLength() view returns (uint256)', - getReservesABI: 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)', -} -const syncyield = yieldHelper({ - project: 'syncyield-finance', - chain: 'era', - masterchef: vault, - nativeToken: syn, - abis, - poolFilter: (i, j) => { - return j !== 5 - }, -}) -module.exports = mergeExports([syncyield]) - diff --git a/projects/synfutures-v1/index.js b/projects/synfutures-v1/index.js deleted file mode 100644 index 78d8577c216..00000000000 --- a/projects/synfutures-v1/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs, getAddress } = require('../helper/cache/getLogs'); - -const config = { - ethereum: { factory: '0x6e893ddfa75d67febb853e00f81c913c151bf9a9', fromBlock: 12599579 }, - bsc: { factory: '0x6e893ddfa75d67febb853e00f81c913c151bf9a9', fromBlock: 8142455 }, - arbitrum: { factory: '0x1e7db497d664e77fc96321a1ad0bf018e55cbff8', fromBlock: 218877 }, - polygon: { factory: '0x6e893ddfa75d67febb853e00f81c913c151bf9a9', fromBlock: 15508720 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0xee193dabd87eb415480c4b61fae32c09068f2348d08b811bbf3a004404eae51b'], - fromBlock, - }) - const tokensAndOwners = logs.map((i) => { - const token = getAddress(i.data.slice(64, 64 * 2 + 2)); - const pool = getAddress(i.data.slice(64 * 5, 64 * 6 + 2)); - return [token, pool]; - }); - return sumTokens2({ tokensAndOwners, api, }) - } - } -}) \ No newline at end of file diff --git a/projects/synfutures-v2/index.js b/projects/synfutures-v2/index.js deleted file mode 100644 index bf3cda93db1..00000000000 --- a/projects/synfutures-v2/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs, getAddress } = require('../helper/cache/getLogs'); - -const config = { - polygon: { factory: '0x1267c6e5d4048318ae48f936130c292e2e0edd73', fromBlock: 32799818 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0x3e54f626b503b6952f636f8f05b35a3a2c6345dd88a99285dede80fc89961706'], - fromBlock, - }) - const tokensAndOwners = logs.map((i) => { - const token = getAddress(i.data.slice(0, 64 + 2)); - const pool = getAddress(i.data.slice(64 * 3, 64 * 4 + 2)); - return [token, pool]; - }); - return sumTokens2({ tokensAndOwners, api, }) - } - } -}) \ No newline at end of file diff --git a/projects/synfutures-v3/index.js b/projects/synfutures-v3/index.js deleted file mode 100644 index ce88eaf6cd1..00000000000 --- a/projects/synfutures-v3/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs2, } = require('../helper/cache/getLogs') - -const config = { - blast: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', fromBlock: 193856 }, - base: { gate: '0x208B443983D8BcC8578e9D86Db23FbA547071270', fromBlock: 16297319 }, -} - -Object.keys(config).forEach(chain => { - const { gate, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - // calculate the balance of all instruments - const logs = await getLogs2({ - api, - target: gate, - fromBlock, - eventAbi: 'event NewInstrument(bytes32 index, address instrument, address base, address quote, string symbol, uint total)', - }) - const ownerTokens = logs.map(i => ([[i.quote], i.instrument])) - const allTokens = logs.map(i => i.quote) - ownerTokens.push([allTokens, gate]) - return sumTokens2({ api, ownerTokens }) - } - } -}) diff --git a/projects/synlev.js b/projects/synlev.js deleted file mode 100644 index 5818c4212de..00000000000 --- a/projects/synlev.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - deadFrom: 1648765747, - ethereum: { - tvl: () => ({}), - } -} diff --git a/projects/synnax/abi.json b/projects/synnax/abi.json deleted file mode 100644 index c6f7105d2f7..00000000000 --- a/projects/synnax/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "balanceOf": "function balanceOf(address, address) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/synnax/index.js b/projects/synnax/index.js deleted file mode 100644 index 5790166f9ea..00000000000 --- a/projects/synnax/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const marketsJSON = require('./markets.json'); -const abi = require('./abi.json'); - -const boxAddresses = { - "sei": ["0xcfe1235b85F533A294efd3826cE15Da6bE21161f"], -}; - -async function tvl(api) { - const { chain } = api - const marketsArray = []; - - for (const [marketContract, lockedToken] of Object.entries(marketsJSON[chain])) { - marketsArray.push([lockedToken, marketContract]); - } - - const calls = boxAddresses[chain].map(boxAddress => marketsArray.map((market) => ({ - target: boxAddress, - params: market - }))).flat() - - const tokens = boxAddresses[chain].map(_ => - marketsArray.map(([lockedToken]) => lockedToken) - ).flat() - - const balances = await api.multiCall({ calls, abi: abi.balanceOf, }) - api.addTokens(tokens, balances) -} - -module.exports = { - sei: { - tvl, - } -}; diff --git a/projects/synnax/markets.json b/projects/synnax/markets.json deleted file mode 100644 index 9856983e784..00000000000 --- a/projects/synnax/markets.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sei": { - "0x8F904a5fA8C8df2ffd17E6C32dC68EFE73c50490": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7", - "0xC25dc4026d5ad6Db5e0921Eb310D0E4642003508": "0x5Cf6826140C1C56Ff49C808A1A75407Cd1DF9423", - "0x25672b8ECc6F1290D07C4A87bFee5CFB85dCe101": "0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0", - "0x1adCE3b28685eC38A3eDd6046eEA01CE25dFD9da": "0xdf77686D99667Ae56BC18f539B777DBc2BBE3E9F", - "0xfa685E6937b0b81d8da2321DcAb1567Ed556C99E": "0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1" - } -} diff --git a/projects/synonym-finance/index.js b/projects/synonym-finance/index.js deleted file mode 100644 index 04b02fe3081..00000000000 --- a/projects/synonym-finance/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const sdk = require("@defillama/sdk"); -const bytes32ToAddress = (bytes32Address) => "0x" + bytes32Address.substr(-40); - -const hub = '0x1e3f1f1cA8C62aABCB3B78D87223E988Dfa3780E' -async function tvl({timestamp, chain}) { - const api = new sdk.ChainApi({ timestamp, chain: 'arbitrum' }) - const { tokens, tokenMappings } = await getTokenInfos(api, chain) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokens.map(token => ({ target: token, params: hub })) }) - api.add(tokenMappings, bals, { skipChain: true }) - return api.getBalances() -} - -async function borrowed({timestamp, chain }) { - const api = new sdk.ChainApi({ timestamp, chain: 'arbitrum' }) - const { tokens, tokenMappings } = await getTokenInfos(api, chain) - const bals = (await api.multiCall({ abi: "function getGlobalAmounts(address assetAddress) view returns ((uint256 deposited, uint256 borrowed))", calls: tokens, target: hub })).map(i => i.borrowed) - api.add(tokenMappings, bals, { skipChain: true }) - return api.getBalances() -} - -const chains = [ - 'arbitrum', - 'ethereum', - 'optimism', - 'base', - 'scroll', -] - -chains.forEach(chain => { - module.exports[chain] = { - tvl, - borrowed - } -}) - -async function getTokenInfos(api, requestedChain) { - const registry = await api.call({ abi: 'address:getAssetRegistry', target: hub }) - const wormholeTunnel = await api.call({ abi: 'address:getWormholeTunnel', target: hub }) - const tokenBridge = await api.call({ abi: 'address:tokenBridge', target: wormholeTunnel }) - const assets = await api.call({ abi: 'address[]:getRegisteredAssets', target: registry }) - const isBridged = await api.multiCall({ abi: 'function isWrappedAsset(address) view returns (bool)', calls: assets, target: tokenBridge }) - const arbiAssets = [] - const bridgedAssets = [] - assets.forEach((asset, i) => { - if (isBridged[i]) - bridgedAssets.push(asset) - else - arbiAssets.push(asset) - }) - - if (requestedChain === 'arbitrum') { - return { tokens: arbiAssets, tokenMappings: arbiAssets.map(asset => 'arbitrum:' + asset) } - } - - const natives = await api.multiCall({ abi: 'function nativeContract() view returns (bytes32)', calls: bridgedAssets }) - const chainId = await api.multiCall({ abi: 'function chainId() view returns (uint16)', calls: bridgedAssets }) - - const tokens = [] - const tokenMappings = [] - - bridgedAssets.forEach((asset, i) => { - let chain; - switch (chainId[i]) { - case '2': chain = 'ethereum'; break; - case '24': chain = 'optimism'; break; - case '30': chain = 'base'; break; - case '34': chain = 'scroll'; break; - default: console.log('Unsupported chain ' + chainId[i] + bytes32ToAddress(natives[i])); return; - } - - if (chain === requestedChain) { - tokens.push(asset) - tokenMappings.push(chain + ':' + bytes32ToAddress(natives[i])) - } - }) - - return { tokens, tokenMappings } - -} \ No newline at end of file diff --git a/projects/synstation/index.js b/projects/synstation/index.js deleted file mode 100644 index 3dfd8dea929..00000000000 --- a/projects/synstation/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { sumUnknownTokens } = require("../helper/unknownTokens") - - -const { uniV3Export } = require('../helper/uniswapV3') -const { mergeExports } = require("../helper/utils") - -const config = { - ethereum: {preStaking:"0x3BaC111A6F5ED6A554616373d5c7D858d7c10d88"}, - astar: {preStaking:"0xe9B85D6A1727d4B22595bab40018bf9B7407c677"}, - soneium: { - vaults: [ - "0x3BaC111A6F5ED6A554616373d5c7D858d7c10d88", // astar, - "0x2C7f58d2AfaCae1199c7e1E00FB629CCCEA5Bbd5", // usdc.e - "0x6A31048E5123859cf50F865d5a3050c18E77fFAe", // usdt - "0xefb3Cc73a5517c9825aE260468259476e7965c5E", // weth - "0x74dFFE1e68f41ec364517f1F2951047246c5DD4e", // nsASTR - "0x467b43ede72543FC0FD79c7085435A484a87e0D7", // nrETH - "0xF8cCfCD56a744B620f20472e467b8Bc0dd2EAA23", // wstASTR vault - ], - v3Factory: "0x81B4029bfCb5302317fe5d35D54544EA3328e30f" -} -} - - -const exportsData = Object.keys(config).map((chain) => { - return {[chain] : { - tvl: async (api) => { - const results = []; - - const vaults = config[chain].vaults; - if(vaults) { - const data =await api.multiCall({ abi: 'address:asset', calls: vaults, permitFailure: true, }) - const tokens = data; - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults, permitFailure: true, }) - bals.forEach((v, i) => v && api.add(tokens[i], v)) - } - - const prestakingAddress = config[chain].preStaking; - if(prestakingAddress) { - - const data = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: 'function poolInfo(uint256) view returns (address want, uint256 totalDeposited,uint256,uint256)', target: prestakingAddress, }) - const tokens = data.map(i => i.want) - const bals = data.map(i => i.totalDeposited) - bals.forEach((v, i) => v && api.add(tokens[i], v)) - } - return (sumUnknownTokens({ api, resolveLP: false, useDefaultCoreAssets: true, })) - - } - } -} -}) -exportsData.push(uniV3Export({ - soneium: { factory: config.soneium.v3Factory, fromBlock: 1812231 }, -})) - - -module.exports = mergeExports(exportsData); \ No newline at end of file diff --git a/projects/synthetify/index.js b/projects/synthetify/index.js deleted file mode 100644 index 795e3329dc1..00000000000 --- a/projects/synthetify/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { Program } = require("@project-serum/anchor"); -const { sumTokens2, getProvider, } = require("../helper/solana"); - -const programId = '5TeGDBaMNPc2uxvx6YLDycsoxFnBuqierPt3a8Bk4xFX' - -async function tvl() { - const provider = getProvider() - const idl = await Program.fetchIdl(programId, provider) - const program = new Program(idl, programId, provider) - const state = await program.account.state.all() - const owners = state.map(i => i.account.exchangeAuthority.toString()) - return sumTokens2({ owners, }) -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, - methodology: - 'To obtain TVL of Synthetify we must add all colaterals which was deposited.' -} diff --git a/projects/synthetix-v1/index.js b/projects/synthetix-v1/index.js deleted file mode 100644 index 641a297b340..00000000000 --- a/projects/synthetix-v1/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getExports} = require('../helper/heroku-api') -const chains = ['ethereum'] - -module.exports = { - timetravel: false, - ...getExports("synthetix", chains) -} diff --git a/projects/synthetix-v2/index.js b/projects/synthetix-v2/index.js deleted file mode 100644 index a3af239c1a7..00000000000 --- a/projects/synthetix-v2/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getExports} = require('../helper/heroku-api') -const chains = ['optimism'] - -module.exports = { - timetravel: false, - ...getExports("synthetix", chains) -} diff --git a/projects/synthetix-v3/index.js b/projects/synthetix-v3/index.js deleted file mode 100644 index a4577517e20..00000000000 --- a/projects/synthetix-v3/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const CUSTOM_ADDRESSES = { - arbitrum: { - WEETH: ADDRESSES.arbitrum.weETH, - sUSDe: ADDRESSES.arbitrum.sUSDe, - tBTC: "0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40" - } -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: '0xffffffaEff0B96Ea8e4f94b2253f31abdD875847', tokens: [ADDRESSES.ethereum.SNX] }) - }, - base: { - tvl: sumTokensExport({ owner: '0x32C222A9A159782aFD7529c87FA34b96CA72C696', tokens: [ADDRESSES.base.USDC] }) - }, - arbitrum: { - tvl: sumTokensExport({ owner: '0xffffffaEff0B96Ea8e4f94b2253f31abdD875847', tokens: [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.USDe, ADDRESSES.arbitrum.WSTETH, CUSTOM_ADDRESSES.arbitrum.WEETH, CUSTOM_ADDRESSES.arbitrum.sUSDe, CUSTOM_ADDRESSES.arbitrum.tBTC] }) - } -} diff --git a/projects/synthetix/abi.json b/projects/synthetix/abi.json deleted file mode 100644 index ec84e10270a..00000000000 --- a/projects/synthetix/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "issuanceRatio": "uint256:issuanceRatio", - "collateralisationRatio": "function collateralisationRatio(address issuer) view returns (uint256)", - "collateral": "function collateral(address account) view returns (uint256)", - "totalSupply": "uint256:totalSupply" -} \ No newline at end of file diff --git a/projects/synthetix/api.js b/projects/synthetix/api.js deleted file mode 100644 index 250f3febf25..00000000000 --- a/projects/synthetix/api.js +++ /dev/null @@ -1,144 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require('../helper/coreAssets.json') -const BigNumber = require('bignumber.js'); -const abi = require('./abi.json'); -const { getBlock } = require('../helper/http'); -const { sliceIntoChunks, } = require('../helper/utils'); -const { request, gql } = require("graphql-request"); - -const QUERY_NO_BLOCK = gql` -query manyHolders($lastID: String, $block: Int) { - holders(first: 1000, where: { - id_gt: $lastID - }){ - id - } -} -` - -const synthetixStates = { - ethereum: '0x4b9Ca5607f1fF8019c1C6A3c2f0CC8de622D5B82', - optimism: '0x8377b25B8564f6Be579865639776c5082CB37163' // It's Issuer, not SynthetixState but has the same issuanceRatio function -} -const synthetixs = { - ethereum: ADDRESSES.ethereum.SNX, - optimism: '0x8700daec35af8ff88c16bdf0418774cb3d7599b4' -} -const snxGraphEndpoints = { - ethereum: sdk.graph.modifyEndpoint('2chLKUMdvBJEbrceCdvCF8VGB1xQ3Ytbyujj9Rw3WyKY'), - optimism: sdk.graph.modifyEndpoint('5NQi9n4ztd8M6EEDFKA6gwcCnbLdmzZRymiDbPkbjEWN') -} -const ethStaking = "0xc1aae9d18bbe386b102435a8632c8063d31e747c" -const weth = ADDRESSES.ethereum.WETH - -function chainTvl(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - throw new Error('This module is deprecated, this protocol is dead') - const block = await getBlock(timestamp, chain, chainBlocks) - const synthetixState = synthetixStates[chain] - const synthetix = synthetixs[chain] - const snxGraphEndpoint = snxGraphEndpoints[chain] - let totalTopStakersSNXLocked = new BigNumber(0); - let totalTopStakersSNX = new BigNumber(0); - - const holdersAll = sliceIntoChunks(await SNXHolders(snxGraphEndpoint, block, chain), 5000) - sdk.log('holders count: ', holdersAll.flat().length, chain) - - const issuanceRatio = (await sdk.api.abi.call({ - block, - chain, - target: synthetixState, - abi: abi['issuanceRatio'] - })).output; - - let i = 0 - - for (const holders of holdersAll) { - sdk.log('fetching %s of %s', ++i, holdersAll.length) - - const calls = holders.map(holder => ({ target: synthetix, params: holder })) - const [ratio, collateral] = await Promise.all([ - sdk.api.abi.multiCall({ - block, - chain, - abi: abi['collateralisationRatio'], - calls, - }), - sdk.api.abi.multiCall({ - block, - chain, - abi: abi['collateral'], - calls, - }) - ]) - - const ratios = {} - ratio.output.forEach(r => ratios[r.input.params[0]] = r.output) - const collaterals = {} - collateral.output.forEach(r => collaterals[r.input.params[0]] = r.output) - - holders.forEach((holder) => { - let _collateral = collaterals[holder]; - let _ratio = ratios[holder]; - if (_collateral === null || _ratio === null) { - throw new Error(`Failed request for collateral/ratio of holder ${holder}`) - } - let locked = _collateral * Math.min(1, _ratio / issuanceRatio); - totalTopStakersSNX = totalTopStakersSNX.plus(_collateral) - totalTopStakersSNXLocked = totalTopStakersSNXLocked.plus(locked); - }); - } - - const percentLocked = totalTopStakersSNXLocked.div(totalTopStakersSNX); - const unformattedSnxTotalSupply = (await sdk.api.abi.call({ - block, - chain, - target: synthetix, - abi: abi['totalSupply'] - })).output; - - const snxTotalSupply = parseInt(new BigNumber(unformattedSnxTotalSupply).div(Math.pow(10, 18))); - const totalSNXLocked = percentLocked.times(snxTotalSupply); - - const balances = { - [synthetixs.ethereum]: totalSNXLocked.times(Math.pow(10, 18)).toFixed(0), - } - if (chain === "ethereum") { - const ethStaked = await sdk.api.erc20.balanceOf({ - target: weth, - owner: ethStaking, - block - }) - balances[weth] = ethStaked.output - } - - return balances; - } -} - -// Uses graph protocol to run through SNX contract. Since there is a limit of 1000 results per query -// we can use graph-results-pager library to increase the limit. -async function SNXHolders(snxGraphEndpoint, block, chain) { - let holders = new Set() - let lastID = "" - let holdersPage; - do { - holdersPage = (await request(snxGraphEndpoint, QUERY_NO_BLOCK, { - block, - lastID - })).holders - holdersPage.forEach(h => holders.add(h.id)) - lastID = holdersPage[holdersPage.length - 1]?.id - } while (holdersPage.length === 1e3); - return Array.from(holders) -} - -module.exports = { - start: '2019-08-08', // Fri Aug 09 2019 00:00:00 - optimism: { - tvl: chainTvl("optimism") - }, - ethereum: { - tvl: chainTvl("ethereum"), - }, -}; diff --git a/projects/synthetix/apiCache.js b/projects/synthetix/apiCache.js deleted file mode 100644 index 52095b9f446..00000000000 --- a/projects/synthetix/apiCache.js +++ /dev/null @@ -1,157 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require('../helper/coreAssets.json') -const BigNumber = require('bignumber.js'); -const abi = require('./abi.json'); -const { getBlock } = require('../helper/http'); -const { sliceIntoChunks, } = require('../helper/utils'); -const { getCache, setCache } = require('../helper/cache'); -const { request, gql } = require("graphql-request"); -const project = 'bulky/synthetix' -const { log } = require('../helper/utils') - -const QUERY_NO_BLOCK = gql` -query manyHolders($lastID: String, $block: Int) { - holders(first: 1000, where: { - id_gt: $lastID - }){ - id - } -} -` - -const synthetixStates = { - ethereum: '0x4b9Ca5607f1fF8019c1C6A3c2f0CC8de622D5B82', - optimism: '0x8377b25B8564f6Be579865639776c5082CB37163' // It's Issuer, not SynthetixState but has the same issuanceRatio function -} -const synthetixs = { - ethereum: ADDRESSES.ethereum.SNX, - optimism: '0x8700daec35af8ff88c16bdf0418774cb3d7599b4' -} -const snxGraphEndpoints = { - ethereum: sdk.graph.modifyEndpoint('2chLKUMdvBJEbrceCdvCF8VGB1xQ3Ytbyujj9Rw3WyKY'), - optimism: sdk.graph.modifyEndpoint('5NQi9n4ztd8M6EEDFKA6gwcCnbLdmzZRymiDbPkbjEWN') -} -const ethStaking = "0xc1aae9d18bbe386b102435a8632c8063d31e747c" -const weth = ADDRESSES.ethereum.WETH - -function chainTvl(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - throw new Error('This module is deprecated, this protocol is dead') - const block = await getBlock(timestamp, chain, chainBlocks) - const synthetixState = synthetixStates[chain] - const synthetix = synthetixs[chain] - const snxGraphEndpoint = snxGraphEndpoints[chain] - let totalTopStakersSNXLocked = new BigNumber(0); - let totalTopStakersSNX = new BigNumber(0); - - const holdersAll = sliceIntoChunks(await SNXHolders(snxGraphEndpoint, block, chain), 500) - log('holders count: ', holdersAll.flat().length, chain) - - const issuanceRatio = (await sdk.api.abi.call({ - block, - chain, - target: synthetixState, - abi: abi['issuanceRatio'] - })).output; - - let i = 0 - - for (const holders of holdersAll) { - log('fetching %s of %s', ++i, holdersAll.length) - - const calls = holders.map(holder => ({ target: synthetix, params: holder })) - const [ratio, collateral] = await Promise.all([ - sdk.api.abi.multiCall({ - block, - chain, - abi: abi['collateralisationRatio'], - calls, - }), - sdk.api.abi.multiCall({ - block, - chain, - abi: abi['collateral'], - calls, - }) - ]) - - const ratios = {} - ratio.output.forEach(r => ratios[r.input.params[0]] = r.output) - const collaterals = {} - collateral.output.forEach(r => collaterals[r.input.params[0]] = r.output) - - holders.forEach((holder) => { - let _collateral = collaterals[holder]; - let _ratio = ratios[holder]; - if (_collateral === null || _ratio === null) { - throw new Error(`Failed request for collateral/ratio of holder ${holder}`) - } - let locked = _collateral * Math.min(1, _ratio / issuanceRatio); - totalTopStakersSNX = totalTopStakersSNX.plus(_collateral) - totalTopStakersSNXLocked = totalTopStakersSNXLocked.plus(locked); - }); - } - - const percentLocked = totalTopStakersSNXLocked.div(totalTopStakersSNX); - const unformattedSnxTotalSupply = (await sdk.api.abi.call({ - block, - chain, - target: synthetix, - abi: abi['totalSupply'] - })).output; - - //log(unformattedSnxTotalSupply, new BigNumber(unformattedSnxTotalSupply).div(Math.pow(10, 18))) - const snxTotalSupply = parseInt(new BigNumber(unformattedSnxTotalSupply).div(Math.pow(10, 18))); - const totalSNXLocked = percentLocked.times(snxTotalSupply); - - const balances = { - [synthetixs.ethereum]: totalSNXLocked.times(Math.pow(10, 18)).toFixed(0), - } - if (chain === "ethereum") { - const ethStaked = await sdk.api.erc20.balanceOf({ - target: weth, - owner: ethStaking, - block - }) - balances[weth] = ethStaked.output - } - - return balances; - } -} - -// Uses graph protocol to run through SNX contract. Since there is a limit of 1000 results per query -// we can use graph-results-pager library to increase the limit. -async function SNXHolders(snxGraphEndpoint, block, chain) { - const cache = await getCache(project, chain) - if (!cache.data) cache.data = [] - let holders = new Set(cache.data) - let lastID = cache.lastID || "" - let holdersPage; - let i = 0 - do { - log(chain, ++i, 'current last Id', lastID) - holdersPage = (await request(snxGraphEndpoint, QUERY_NO_BLOCK, { - block, - lastID - })).holders - holdersPage = holdersPage.map(i => i.id) - cache.data.push(...holdersPage) - holdersPage.forEach(h => holders.add(h)) - lastID = holdersPage[holdersPage.length - 1] - if (lastID) cache.lastID = lastID - } while (lastID); - cache.data = Array.from(holders) - await setCache(project, chain, cache) - return cache.data -} - -module.exports = { - start: '2019-08-08', // Fri Aug 09 2019 00:00:00 - optimism: { - tvl: chainTvl("optimism") - }, - ethereum: { - tvl: chainTvl("ethereum"), - }, -}; diff --git a/projects/synthetix/index.js b/projects/synthetix/index.js deleted file mode 100644 index ba50bbe0a69..00000000000 --- a/projects/synthetix/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require('../helper/http') -// const {getExports} = require('../helper/heroku-api') -// const chains = ['ethereum', 'optimism'] - -module.exports = { - timetravel: false, - optimism: { tvl: () => ({}) }, - ethereum: { tvl: () => ({}), staking }, - // ...getExports("synthetix", chains) - methodology: `Counts the value of all SNX staked in the 420 pool & legacy escrow contracts under staking`, -} - -async function getStakingData(api) { - const { data: { rows, cols } } = await get('https://metabase.synthetix.io/api/embed/dashboard/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZXNvdXJjZSI6eyJkYXNoYm9hcmQiOjE3M30sInBhcmFtcyI6e30sImV4cCI6MTc1NDQ4MDc5NiwiaWF0IjoxNzU0NDgwMTk1fQ.BrR7T9nZpFtZXyQ7nMhT28Oueh3qNU2AeXuiy2elRDk/dashcard/508/card/566?parameters=%7B%7D') - - const lastRow = rows[rows.length - 1] - const simpleStakedCol = cols.map(i => i.name).indexOf('simple_staked') - const legacyStakedCol = cols.map(i => i.name).indexOf('legacy_staked') - const totalStakedCol = cols.map(i => i.name).indexOf('total_staked') - return { - totalStaked: lastRow[totalStakedCol], - simpleStaked: lastRow[simpleStakedCol], - legacyStaked: lastRow[legacyStakedCol], - } -} - -// staking in the 420 pool -async function staking(api) { - const stakingData = await getStakingData(api) - api.add(ADDRESSES.ethereum.SNX, stakingData.totalStaked * 1e18) -} \ No newline at end of file diff --git a/projects/synthex/index.js b/projects/synthex/index.js deleted file mode 100644 index f8663c956a3..00000000000 --- a/projects/synthex/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokensExport } = require("../helper/unwrapLPs"); -const poolC = '0x8d6E834277E4f513BacF83B0A87524c913eF8691'; -const poolF = "0x0546458d110Dff9D394C0F4621423Bc8f009A779"; -const USDC = ADDRESSES.arbitrum.USDC; -const WBTC = ADDRESSES.arbitrum.WBTC; -const ARB = ADDRESSES.arbitrum.ARB; -const ETH = ADDRESSES.GAS_TOKEN_2; -const WETH = ADDRESSES.arbitrum.WETH; -const USDT = ADDRESSES.arbitrum.USDT; -const DAI = ADDRESSES.optimism.DAI; - - -module.exports = { - methodology: "counts value of assets in the PoolC and PoolF", - arbitrum: { - tvl: sumTokensExport({ - ownerTokens: [ - [[USDC, WBTC, ARB, ETH, WETH], poolC], - [[USDC, DAI, USDT], poolF], - ] - }), - }, -}; - - diff --git a/projects/synthswap-perps/index.js b/projects/synthswap-perps/index.js deleted file mode 100644 index bbbc13fcfca..00000000000 --- a/projects/synthswap-perps/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - base:{ - tvl: gmxExports({ vault: '0xB70cf5E6eCd1733448912A9f251D35A17aF94fF6', }) - } -}; \ No newline at end of file diff --git a/projects/synthswap-v3/index.js b/projects/synthswap-v3/index.js deleted file mode 100644 index cbe8e141bf4..00000000000 --- a/projects/synthswap-v3/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - base: { - factory: '0xa37359e63d1aa44c0acb2a4605d3b45785c97ee3', - fromBlock: 2095251, - isAlgebra: true, - }, -}) diff --git a/projects/synthswap/index.js b/projects/synthswap/index.js deleted file mode 100644 index 8e3d38af7da..00000000000 --- a/projects/synthswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') -const SYNTH = "0xbd2DBb8eceA9743CA5B16423b4eAa26bDcfE5eD2"; -const FACTORY = "0x4bd16d59A5E1E0DB903F724aa9d721a31d7D720D" - - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs.`, - base: { - tvl: dexTVL, - staking: sumTokensExport({ - owners: ['0x01CC6b33c63CeE896521D63451896C14D42D05Ea'], - tokens: [SYNTH], - }) - } -}; - - diff --git a/projects/syrupfinance/index.js b/projects/syrupfinance/index.js deleted file mode 100644 index d053dd47524..00000000000 --- a/projects/syrupfinance/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking } = require("../helper/staking"); -const { gmxExports } = require("../helper/gmx"); - -//bsc -const bscVault = "0x47E3d600C6A58f262Bc6C0159D2C9cA75aaE12D0"; -const bscStaking = "0x024CcD75EF4f772a3431e444c42Ee99452Afca01"; -const srxToken = "0xdef49c195099e30e41b2df7dad55e0bbbe60a0c5"; - - -module.exports = { - hallmarks: [ - [1675209600, "Rug Pull"] - ], - bsc: { - staking: staking(bscStaking, srxToken, "bsc", undefined, undefined), - tvl: gmxExports({ vault: bscVault }) - } - -}; \ No newline at end of file diff --git a/projects/t-protocol-v2/index.js b/projects/t-protocol-v2/index.js deleted file mode 100644 index 3916b2b061d..00000000000 --- a/projects/t-protocol-v2/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const RUST_POOL = "0x38a1753AEd353e58c64a55a3f3c750E919915537"; -const UNI_V3_MANAGER = "0x9C27F7BB05dDF33F3e1004eDC16f14d1402838Cc"; -const STBT = '0x530824DA86689C9C17CdC2871Ff29B058345b44a' -const USTP = '0xed4d84225273c867d269f967cc696e0877068f8a' - -module.exports = { - methodology: "counts value of assets in the Treasury", - start: '2023-03-04', - ethereum: { - tvl, - }, -}; - -async function tvl(api) { - await api.sumTokens({ owner: RUST_POOL, tokens: [ADDRESSES.ethereum.USDC, STBT]}) - return sumTokens2({ owner: UNI_V3_MANAGER, resolveUniV3: true, blacklistedTokens: [USTP], api, }) - -} \ No newline at end of file diff --git a/projects/t-protocol/index.js b/projects/t-protocol/index.js deleted file mode 100644 index 14501bfd3f9..00000000000 --- a/projects/t-protocol/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const USDC_TOKEN_CONTRACT = ADDRESSES.ethereum.USDC; -const TREASURY_CONTRACT = "0xa01D9bc8343016C7DDD39852e49890a8361B2884"; -const STBT = '0x530824DA86689C9C17CdC2871Ff29B058345b44a' - -module.exports = { - methodology: "counts value of assets in the Treasury", - start: '2023-03-04', - ethereum: { - tvl: sumTokensExport({ owner: TREASURY_CONTRACT, tokens: [USDC_TOKEN_CONTRACT, STBT] }), - }, -}; diff --git a/projects/t3rn/index.js b/projects/t3rn/index.js deleted file mode 100644 index 63c68d48125..00000000000 --- a/projects/t3rn/index.js +++ /dev/null @@ -1,113 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const CONFIG = { - ethereum: { - remoteOrder: [ - '0x86EB4faF1574B6Ad8dCF685907a60a5b89f27276', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.ethereum.USDC, - ] - }, - bsc: { - remoteOrder: [ - '0x81D3E0341a3C7806B77433B7b339Ac6dCcaDA683' - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.bsc.USDC, - ] - }, - arbitrum: { - remoteOrder: [ - '0x3F305740E3f7650cA3EaD2597fEB785fa07d621F', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.arbitrum.USDC, - ] - }, - optimism: { - remoteOrder: [ - '0xbf0C855e8A93930432D21dF08b3C534895650f7f', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.optimism.USDC, - ] - }, - linea: { - remoteOrder: [ - '0xE441B664929a374Ea23fD72A617b66377A1c33D4', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.linea.USDC, - ] - }, - base: { - remoteOrder: [ - '0xF1D550eA864a29c277602fdA2683E48ff52614eC', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.base.USDC, - ] - }, - unichain: { - remoteOrder: [ - '0x7f99f7d79F04884cee4A86a3aB76Dca8B0e15491', - ], - tokens: [ - ADDRESSES.GAS_TOKEN_2, - ADDRESSES.unichain.USDC, - ] - }, -} - -// TRN token address on Arbitrum -const TRN_ARBITRUM = '0x1114982539A2Bfb84e8B9e4e320bbC04532a9e44' - -// Staking contracts on Arbitrum -const ARBITRUM_STAKING = [ - '0xC5a87664DCFD45B1bF646cFD209c5a54118B146B', // stakedTRNChef - '0x536e9D7328276BAaE13Df7028dCF8d37bBa2F2Cd', // govAdapter - '0x8B09F3B41203ec18Ec2E80eEc1bd57A91f21DB7D', // syrupBar -] - -module.exports = { - hallmarks:[ - ], - methodology: - "t3rn TVL is the USD value of token balances in the bridge contracts and TRN tokens staked on Arbitrum.", -} - -Object.keys(CONFIG).forEach(chain => module.exports[chain] = { - tvl: async (api) => { - const { remoteOrder, tokens, } = CONFIG[chain] - return sumTokens2({ api, owners: remoteOrder, tokens }); - } -}) - -// Add staking as a separate function for Arbitrum -module.exports.arbitrum.staking = async (api) => { - // Get TRN balances from staking contracts - const balances = await sumTokens2({ - api, - owners: ARBITRUM_STAKING, - tokens: [TRN_ARBITRUM] - }); - - // Transform the arbitrum TRN address to coingecko ID for proper pricing - const arbTrnKey = `arbitrum:${TRN_ARBITRUM.toLowerCase()}`; - if (balances[arbTrnKey]) { - // Convert from wei to token amount (divide by 10^18) for coingecko pricing - balances['coingecko:t3rn'] = balances[arbTrnKey] / 1e18; - delete balances[arbTrnKey]; - } - - return balances; -} diff --git a/projects/tac-ton-adapter/index.js b/projects/tac-ton-adapter/index.js deleted file mode 100644 index 2f4db2dcd4c..00000000000 --- a/projects/tac-ton-adapter/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens } = require("../helper/chain/ton"); -const ADDRESSES = require('../helper/coreAssets.json'); - -async function tvl(api) { - const cclContract = "EQAgpWmO8nBUrmfOOldIEmRkLEwV-IIfVAlJsphYswnuL80R"; - const jettonProxyContract = "EQAChAswsPNsU2k3A5ZDO_cfhWknCGS6WMG2Jz15USMwxMdw"; - - await sumTokens({ - api, - owners: [cclContract, jettonProxyContract], - tokens: [ADDRESSES.ton.TON], - useTonApiForPrices: false - }); - - return api.getBalances(); -} - -module.exports = { - methodology: "Tracks TVL across TAC's two main contracts: the Cross-Chain Layer (CCL) contract and the Jetton Proxy contract. Automatically detects and counts all native TON and jetton tokens held in both contracts.", - timetravel: false, - ton: { - tvl, - }, -}; diff --git a/projects/tachyswap/index.js b/projects/tachyswap/index.js deleted file mode 100644 index c6e7a20ea01..00000000000 --- a/projects/tachyswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - etlk: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x033eff22bC5Bd30c597e1fdE8Ca6fB1C1274C688', - }) - } -} \ No newline at end of file diff --git a/projects/taco/index.js b/projects/taco/index.js deleted file mode 100644 index b03c24affd1..00000000000 --- a/projects/taco/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// Taco Studios -// https://swap.tacocrypto.io -async function wax() { - const accounts = ["swap.taco"]; - const tokens = [ - ["eosio.token", "WAX", "wax"], - ["token.nefty", "NEFTY", "nefty"], - ["alien.worlds", "TLM", "alien-worlds"], - ["usdt.alcor", "USDT", "alcor-ibc-bridged-usdt-wax"], - ["wombattokens", "WOMBAT", "wombat"], - ["wuffi", "WUF", "wuffi"], - ["token.fusion", "LSWAX", "waxfusion-staked-wax"], - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `Taco Studios TVL is achieved by querying token balances from a (v2 uniswap fork) swap contract`, - wax: { - tvl: wax - }, -} \ No newline at end of file diff --git a/projects/taffy/index.js b/projects/taffy/index.js deleted file mode 100644 index bcdb9ee1b27..00000000000 --- a/projects/taffy/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport('saakuru', '0xb9FFd4f89A86a989069CAcaE90e9ce824D0c4971') \ No newline at end of file diff --git a/projects/tagdottech/index.js b/projects/tagdottech/index.js deleted file mode 100644 index 1293bf770aa..00000000000 --- a/projects/tagdottech/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x597774837debe9f074453c04cea46b532759b28a" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl - } -} \ No newline at end of file diff --git a/projects/tai-money/index.js b/projects/tai-money/index.js deleted file mode 100644 index 4d9165b97e3..00000000000 --- a/projects/tai-money/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - ethereum: { - coinJoins: { - "GEB_JOIN_ETH_A": "0xf6c35af06ed2d97f62b31d7030370f8ae33bd3b1", - "GEB_JOIN_ETH_B": "0xa822e24f944127f445d8ad30adcddd721a5616e9", - "GEB_JOIN_ETH_C": "0x793a0de4db6f96cf30d371ef28278496b66223f8", - "GEB_JOIN_WSTETH_A": "0x5d527c9641effeb3802f2ffafdd15a1b95e41c8c", - "GEB_JOIN_WSTETH_B": "0x9e240daf92dd0edf903def1ff1dd036ca447aaf7", - "GEB_JOIN_RETH_A": "0xf4e8267f05cf1ead340ac7f2bff343528526f16b", - "GEB_JOIN_RETH_B": "0x7daedd26e1202897c9c6bf3967fb5ae45616aef5", - "GEB_JOIN_RAI_A": "0x67b97de3f10ad081fbddf36099699d5ab488828e", - "GEB_JOIN_CBETH_A": "0x10ff8d4376798f920fae147f109157fa6b9a985b", - "GEB_JOIN_CBETH_B": "0xb4941d2a62421adc6ce939cb466f884535bfbff9", - }, - }, -} - -module.exports = {} - -Object.keys(config).forEach(chain => { - let { coinJoins } = config[chain] - coinJoins = Object.values(coinJoins) - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:collateral', calls: coinJoins }) - return sumTokens2({ api, tokensAndOwners2: [tokens, coinJoins]}) - } - } -}) \ No newline at end of file diff --git a/projects/taichi/index.js b/projects/taichi/index.js deleted file mode 100644 index daeb79d21d4..00000000000 --- a/projects/taichi/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0xD4b0DC48AB6BD7907E3698A62CCD1DBE2d46d310" -module.exports = { - hallmarks: [ - [1648765747,"Rug Pull"] - ], - deadFrom: 1648765747, - ...ohmTvl(treasury, [ - //BUSD - [ADDRESSES.bsc.BUSD, false], - //WBNB - [ADDRESSES.bsc.WBNB, false], - //pancakeswap LP - ["0x5ef473d91e89c613b3e5138fa8279884bf5b7adf", true], - ], "bsc", "0xb12Ef3033D5CE0F3f80f3A15dE7E90Cd87a5973e", "0xe49bfc53a195a62d78a941a1967d7b0f83a47c14") -} \ No newline at end of file diff --git a/projects/taidog/index.js b/projects/taidog/index.js deleted file mode 100644 index 2657a16651c..00000000000 --- a/projects/taidog/index.js +++ /dev/null @@ -1,94 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const TAIDOG_TOKEN = "0x1Fd2f219B59b88bDda7dacd50c6e0667aA2d3Ee7"; -const TAIDOG_STAKING_CONTRACT = "0x9b4484D5A2665930702d09f74086CAD86d96b25E"; - -const TAIDOG_WETH_LP = "0x28Be5f9caBd48B712a031a901590b71f5509526D"; -const LP_STAKING_CONTRACT = "0xD664c3b22c60b4927ab1e0035b99F157bc2d8F1B"; - -const TAIKO_TOKEN = ADDRESSES.taiko.TAIKO; -const TAIKO_STAKING_CONTRACT = "0x89a95021E45AcAB4B89eb20C18691E3E0D1d2170"; - -async function poolsTvl(api) { - const lpTAIDOGReserves = await api.call({ - abi: "erc20:balanceOf", - target: TAIDOG_TOKEN, - params: [TAIDOG_WETH_LP], - }); - - const lpWETHReserves = await api.call({ - abi: "erc20:balanceOf", - target: ADDRESSES.taiko.WETH, - params: [TAIDOG_WETH_LP], - }); - - const lpStakingBalance = await api.call({ - abi: "erc20:balanceOf", - target: TAIDOG_WETH_LP, - params: [LP_STAKING_CONTRACT], - }); - - const totalLPSupply = await api.call({ - abi: "erc20:totalSupply", - target: TAIDOG_WETH_LP, - params: [], - }); - - // (STAKED_LP_TOKENS / LP_TOTALSUPPLY) * LP_TAIDOG_TOKEN_0_RESERVE - api.add(TAIDOG_TOKEN, (lpStakingBalance / totalLPSupply) * lpTAIDOGReserves); - - // (STAKED_LP_TOKENS / LP_TOTALSUPPLY) * LP_WETH_TOKEN_1_RESERVE - api.add( - ADDRESSES.taiko.WETH, - (lpStakingBalance / totalLPSupply) * lpWETHReserves - ); -} - -async function stakingTvl(api) { - const stakingBalance = await api.call({ - abi: "erc20:balanceOf", - target: TAIDOG_TOKEN, - params: [TAIDOG_STAKING_CONTRACT], - }); - - // Transform token via LP Pricing - // TOKEN_0 ==> LP_RESERVES ==> WETH_TOKEN_1 - - const lpTAIDOGReserves = await api.call({ - abi: "erc20:balanceOf", - target: TAIDOG_TOKEN, - params: [TAIDOG_WETH_LP], - }); - - const lpWETHReserves = await api.call({ - abi: "erc20:balanceOf", - target: ADDRESSES.taiko.WETH, - params: [TAIDOG_WETH_LP], - }); - - // transform conversion via price (staking_TOKEN_0 / TOKEN_0_RESERVE * TOKEN_1_RESERVE) - const transformedToWETHBalance = - (stakingBalance / lpTAIDOGReserves) * lpWETHReserves; - - // TAIDOG staking token TRANSFORM to WETH via LP Pricing - api.add(ADDRESSES.taiko.WETH, transformedToWETHBalance); -} - -module.exports = { - misrepresentedTokens: true, - methodology: - "TVL counts user deposits of assets like (ETH, USDC, TAIKO) into protocol, counts pool2 (lp tokens) in staking contract 0xD664c3b22c60b4927ab1e0035b99F157bc2d8F1B, and counts the number of TAIDOG tokens in the staking contract 0x9b4484D5A2665930702d09f74086CAD86d96b25E", - taiko: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [TAIKO_TOKEN, TAIKO_STAKING_CONTRACT], - [ADDRESSES.taiko.WETH, "0x4625F913FF1ed54859b31Cce2CE1a4DBED33b825"], - [ADDRESSES.taiko.USDC, "0xc004e7d1eA0f69476dc26BE343E8643088246A08"], - ], - resolveLP: true, - }), - pool2: poolsTvl, - staking: stakingTvl, - }, -}; diff --git a/projects/taiga/api.js b/projects/taiga/api.js deleted file mode 100644 index 0de42573039..00000000000 --- a/projects/taiga/api.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getAPI } = require('../helper/acala/api') -const sdk = require('@defillama/sdk') - -module.exports = { - karura: { - tvl: async () => { - const chain = 'karura' - const api = await getAPI(chain) - const account = 'qmmNug1GQstpimAXBphJPSbDawH47vwMmhuSUq9xRqAsDAr' - const account_3USD = 'qmmNug1GQstpimAXBpy3QzBL5cUWg2p6SeQzRWzRFhu8pfX' - - const { output: usdcRes } = await sdk.api.erc20.balanceOf({ - target: '0x1F3a10587A20114EA25Ba1b388EE2dD4A337ce27', - owner: '0xC760Da3C525c8511938c35613684c3f6175c01A5', - chain: 'karura_evm', - }) - const usdcBalance = usdcRes / 1e6 - - return { - kusama: (await balanceOf(api, account, { Token: 'KSM' })) / 1e12, - 'liquid-ksm': (await balanceOf(api, account, { Token: 'LKSM'})) / 1e12, - // 'acala-dollar': (await balanceOf(api, account_3USD, 'KUSD')) / 1e12, - // 'usd-coin': (await balanceOf(api, account_3USD, 'erc20://0x1f3a10587a20114ea25ba1b388ee2dd4a337ce27')) / 1e6, - 'usd-coin': usdcBalance, - tether: (await balanceOf(api, account_3USD, { ForeignAsset: '7'})) / 1e6, - } - } - }, -}; - -async function balanceOf(api, account, token) { - const tokenRes = await api.query.tokens.accounts(account, token) - return +tokenRes.toHuman().free.replace(/,/g, '') -} diff --git a/projects/taiga/index.js b/projects/taiga/index.js deleted file mode 100644 index ef74db37c99..00000000000 --- a/projects/taiga/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("taiga", ['karura']), -} \ No newline at end of file diff --git a/projects/taiko-bridge/index.js b/projects/taiko-bridge/index.js deleted file mode 100644 index 34c4bc6c92f..00000000000 --- a/projects/taiko-bridge/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: async ({ api }) => - sumTokens2({ - api, - owners: [ - "0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC", - "0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/taikodrips/index.js b/projects/taikodrips/index.js deleted file mode 100644 index 6a13030c3be..00000000000 --- a/projects/taikodrips/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking") - -const TaikoToken = ADDRESSES.taiko.TAIKO -const FarmingContract = '0xf90209C44dBf5Fa3d40ac85a008206b5A8c24899' - -module.exports = { - methodology: 'We count the TVL on the Taiko token in the farming contract.', - taiko: { - tvl: () => ({}), - staking: staking([FarmingContract], TaikoToken) - } -} diff --git a/projects/taikoswap/index.js b/projects/taikoswap/index.js deleted file mode 100644 index 3810f942623..00000000000 --- a/projects/taikoswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('taiko', '0x7c43adafc2337baa16aa2876f9de8da5b3720fdb') \ No newline at end of file diff --git a/projects/takara/index.js b/projects/takara/index.js deleted file mode 100644 index c2da4f76dbe..00000000000 --- a/projects/takara/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { compoundExports2, methodology } = require('../helper/compound') - -module.exports = { - sei: compoundExports2({ comptroller: '0x71034bf5eC0FAd7aEE81a213403c8892F3d8CAeE' }), - methodology, -} \ No newline at end of file diff --git a/projects/takoTako/index.js b/projects/takoTako/index.js deleted file mode 100644 index 58415d1bbce..00000000000 --- a/projects/takoTako/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { aaveV2Export } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -const LPConfiguratorContract = "0xD07B62ee683267D4A884453eaE982A151653515E"; -const blacklistedTokens = ['0xf7fb2df9280eb0a76427dc3b34761db8b1441a49'] // M-BTC - -module.exports = { - taiko: { - ...aaveV2Export(LPConfiguratorContract, { - fromBlock: 381054, - blacklistedTokens - }), - }, -}; - -module.exports.methodology = methodologies.lendingMarket; diff --git a/projects/talentprotocol/index.js b/projects/talentprotocol/index.js deleted file mode 100644 index 4ce8d9ea7b6..00000000000 --- a/projects/talentprotocol/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') - -const cUSDTokenAddress = ADDRESSES.celo.cUSD - -const stakingContract = "0x8ea91a982d93836415CE3abbaf12d59fb8cE3Ff8" - -async function tvl(timestamp, ethBlock, {celo: block}) { - const chain = "celo" - const balances = {} - - const stakedcUSD = await sdk.api.erc20.balanceOf({ - target: cUSDTokenAddress, - owner: stakingContract, - chain: chain, - block: block - }) - - sdk.util.sumSingleBalance(balances, "celo-dollar", Number(stakedcUSD.output)/1e18) - return balances; -} - -module.exports={ - hallmarks: [ - [1656547200,"Token Purchase & Rewards claiming halt"] - ], - methodology: "Get all cUSD that the staking contract for Talent Protocol holds", - celo: { - tvl - } -} diff --git a/projects/tangent-protocol/index.js b/projects/tangent-protocol/index.js deleted file mode 100644 index d0a5a9f2e6f..00000000000 --- a/projects/tangent-protocol/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/cardano') - -module.exports = { - cardano: { - tvl: () => 0, - staking: sumTokensExport({ owner: 'addr1qyglpmc5gq5gdgd5fznfwlwjdn3xkgyjkdpt6mdjkq8knaqpta0u8t4h8ljhzygdg9lsx2rg92darh9gny4wh0w4s9zsntv7aw'}), - }, -}; diff --git a/projects/tangent/index.js b/projects/tangent/index.js deleted file mode 100644 index 761b6d7ef0e..00000000000 --- a/projects/tangent/index.js +++ /dev/null @@ -1,9 +0,0 @@ - -module.exports = { - deadFrom: '2023-07-09', - methodology: "Data is retrieved from the api at https://api.tangent.bar/", - timetravel: false, - hedera: { tvl: () => ({ }) } -} - - diff --git a/projects/tangible-caviar/index.js b/projects/tangible-caviar/index.js deleted file mode 100644 index 6b4573754ca..00000000000 --- a/projects/tangible-caviar/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const PEARL = '0x7238390d5f6F64e67c3211C343A410E2A3DEc142'.toLowerCase() - -const { getPearlBalanceCaviar } = require("../tangible/abi.js"); - -const CAVIAR_STRATEGY = "0x4626E247390c82FA3b72A913d3d8fe079FFb84Ff"; - -async function tvl(api) { - // now fetch locked pearl in Caviar - const pearlAmountInCaviar = await api.call({ abi: getPearlBalanceCaviar, target: CAVIAR_STRATEGY, }) - - api.add(PEARL, pearlAmountInCaviar); -} - - -module.exports = { - polygon: { tvl, }, -} diff --git a/projects/tangible-ustb/index.js b/projects/tangible-ustb/index.js deleted file mode 100644 index 1b0d2ba6857..00000000000 --- a/projects/tangible-ustb/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const USTB = '0x83fedbc0b85c6e29b589aa6bdefb1cc581935ecd' - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: USTB, tokens: [ADDRESSES.ethereum.USDM]}), - }, -} \ No newline at end of file diff --git a/projects/tangible/abi.js b/projects/tangible/abi.js deleted file mode 100644 index 8aca0c590c0..00000000000 --- a/projects/tangible/abi.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - apGetAddress: "function getAddress(bytes32) view returns (address)", - getPriceManager: "address:priceManager", - getCategories: "address[]:getCategories", - getTreasuryValue: "function getTreasuryValue() view returns (tuple(uint256 stable, uint256 usdr, uint256 rwa, uint256 tngbl, uint256 liquidity, tuple(uint256 tngbl, uint256 underlying, uint256 liquidity) tngblLiquidity, uint256 debt, uint256 total, uint256 rwaVaults, uint256 rwaEscrow, bool rwaValueNotLatest) value)", - getTotalSupply: "uint256:totalSupply", - getTokenByIndex: "function tokenByIndex(uint256 index) view returns (uint256)", - getTnftCustody: "function tnftCustody(uint256) view returns (bool)", - getItemPriceBatchTokenIds: "function itemPriceBatchTokenIds(address nft, address paymentUSDToken, uint256[] tokenIds) view returns (uint256[] weSellAt, uint256[] weSellAtStock, uint256[] weBuyAt, uint256[] weBuyAtStock, uint256[] lockedAmount)", - getPair: "function getPair(address _pair, address _account) view returns (tuple(address pair_address, string symbol, string name, uint256 decimals, bool stable, uint256 total_supply, address token0, string token0_symbol, uint256 token0_decimals, uint256 reserve0, uint256 claimable0, address token1, string token1_symbol, uint256 token1_decimals, uint256 reserve1, uint256 claimable1, address gauge, uint256 gauge_total_supply, address fee, address bribe, uint256 emissions, address emissions_token, uint256 emissions_token_decimals, uint256 account_lp_balance, uint256 account_token0_balance, uint256 account_token1_balance, uint256 account_gauge_balance, uint256 account_gauge_earned) _pairInfo)", - getPearlBalanceCaviar: "function balanceOfVePearl() view returns (uint256)", -} \ No newline at end of file diff --git a/projects/tangible/abi/CaviarChef.json b/projects/tangible/abi/CaviarChef.json deleted file mode 100644 index 266095bfd88..00000000000 --- a/projects/tangible/abi/CaviarChef.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "pendingReward": "function pendingReward(address _user) view returns (uint256 pending)", - "rewardToken": "address:rewardToken", - "userInfo": "function userInfo(address) view returns (uint256 amount, int256 rewardDebt)" -} \ No newline at end of file diff --git a/projects/tangible/abi/VeChrNFT.json b/projects/tangible/abi/VeChrNFT.json deleted file mode 100644 index e9b93bde1f4..00000000000 --- a/projects/tangible/abi/VeChrNFT.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "locked": "function locked(uint256) view returns (int128 amount, uint256 end)", - "tokensOfOwner": "function tokensOfOwner(address _usr) view returns (uint256[])" -} \ No newline at end of file diff --git a/projects/tangible/abi/VeVeloNFT.json b/projects/tangible/abi/VeVeloNFT.json deleted file mode 100644 index 06f2943380c..00000000000 --- a/projects/tangible/abi/VeVeloNFT.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ownerToNFTokenIdList": "function ownerToNFTokenIdList(address, uint256) view returns (uint256)", - "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address _owner, uint256 _tokenIndex) view returns (uint256)", - "lockedPearl": "function locked(uint256 _tokenId) view returns (tuple(int128 amount, uint256 end))", - "lockedAmounts": "function lockedAmounts(uint256, address) view returns (uint256)", - "locked": "function locked(uint256 _tokenId) view returns (tuple(int128 amount, uint256 end, bool isPermanent))" -} \ No newline at end of file diff --git a/projects/tangible/index.js b/projects/tangible/index.js deleted file mode 100644 index 6faa980f3eb..00000000000 --- a/projects/tangible/index.js +++ /dev/null @@ -1,227 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, sumTokens2, } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') -const { getInsuranceFundValue, insuranceTokens } = require("./insurance-fund-polygon"); -const { getInsuranceFundValueOp } = require("./insurance-fund-optimism"); -const { getInsuranceFundValueBase } = require("./insurance-fund-base"); -const { getInsuranceFundValueArb } = require("./insurance-fund-arbitrum"); - -const realTvl = async (api) => { - const USTB = '0x83fedbc0b85c6e29b589aa6bdefb1cc581935ecd' - const basketManager = '0x5e581ce0472bF528E7F5FCB96138d7759AC2ac3f'.toLowerCase() - // get all baskets in existance - const baskets = await api.call({ abi: 'address[]:getBasketsArray', target: basketManager }) - const basketTVL = await api.multiCall({ abi: 'uint256:getTotalValueOfBasket', calls: baskets}) - api.add(USTB, basketTVL) -} - -// doc: https://docs.tangible.store/real-usd/real-usd-v3-contracts-and-addresses -const TNGBL = '0x49e6A20f1BBdfEeC2a8222E052000BbB14EE6007'.toLowerCase() -const USDR = '0x40379a439d4f6795b6fc9aa5687db461677a2dba'.toLowerCase() -const CVX_ETH = ADDRESSES.ethereum.CVX.toLowerCase() - -const { apGetAddress, getPriceManager, getCategories, - getTotalSupply, getTokenByIndex, getTnftCustody, - getItemPriceBatchTokenIds, getPair, } = require("./abi.js"); - -const ADDRESS_PROVIDER_ADDRESS = "0xE95BCf65478d6ba44C5F57740CfA50EA443619eA"; -const FACTORY_ADDRESS = "0xB0E54b88BB0043A938563fe8A77F4ddE2eB0cFc0"; - -const insuranceConfig = { - ethereum: { - owner: '0x5d35A37E5842F6b3072893A3f7Bf0e1d1FF80179', - tokens: [ADDRESSES.null, CVX_ETH], - }, - polygon: { - owners: ['0xD1758fbABAE91c805BE76D56548A584EF68B81f0', '0x632572cfAa39330c8F0211b5B33BC86135E48b5f'], - tokens: Object.values(insuranceTokens), - }, - optimism: { - owner: '0x7f922242d919feF0da0e40e3Cb4B7f7D3c97a63e', - tokens: [ADDRESSES.null, ADDRESSES.optimism.OP, ADDRESSES.optimism.USDC], - }, - base: { - owner: "0x17ee1f11aa0654bd4ab1af4b6b309c7f137c925e", - tokens: [ADDRESSES.null,], - }, - arbitrum: { - owner: "0xe19848f158efd31d45a6975320365251c92040c1", - tokens: [ADDRESSES.null, ADDRESSES.arbitrum.USDT], - } -} - -async function tvl(api) { - await Promise.all([ - treasuryTvl, - rwaTVL, - tangiblePOL, - insuranceTvl, - ].map(fn => fn(api))) -} - -async function tvlOp(api) { - await Promise.all([ - insuranceTvlOp, - ].map(fn => fn(api))) -} - -async function tvlBase(api) { - await Promise.all([ - insuranceTvlBase, - ].map(fn => fn(api))) -} - -async function tvlArb(api) { - await Promise.all([ - insuranceTvlArb, - ].map(fn => fn(api))) -} - -async function treasuryTvl(api) { - //treasury address to get total value in treasury - const usdrTreasuryAddress = await api.call({ - abi: apGetAddress, - target: ADDRESS_PROVIDER_ADDRESS, - params: ["0xc83e4fd410f80be983b083c99898391186b0893751a26a9a1e5fdcb9d4129701"],//keccak of USDRTreasury - }) - await api.sumTokens({ owner: usdrTreasuryAddress, tokens: [ADDRESSES.polygon.DAI,] }) -} - -async function insuranceTvl(api) { - await Promise.all(insuranceConfig.polygon.owners.map(i => (async () => { - await unwrapBalancerToken(api, i); - await getInsuranceFundValue(api, i); - })())) -} - -async function insuranceTvlOp(api) { - await getInsuranceFundValueOp(api, insuranceConfig.optimism.owner); - return sumTokens2({ api, ...insuranceConfig.optimism }) -} - -async function insuranceTvlBase(api) { - await getInsuranceFundValueBase(api, insuranceConfig.base.owner); - await api.sumTokens({ owner: insuranceConfig.base.owner, tokens: insuranceConfig.base.tokens }) -} - -async function insuranceTvlArb(api) { - await getInsuranceFundValueArb(api, insuranceConfig.arbitrum.owner); - return sumTokens2({ api, ...insuranceConfig.arbitrum }) -} - -async function rwaTVL(api) { - //get all needed addresses - const priceManagerAddress = await api.call({ abi: getPriceManager, target: FACTORY_ADDRESS, }) - - // we itterate through these to get prices - const tnftContractsAddresses = await api.call({ abi: getCategories, target: FACTORY_ADDRESS, }) - - //underlying to get decimals - const underlyingAddress = await api.call({ - abi: apGetAddress, - target: ADDRESS_PROVIDER_ADDRESS, - params: ["0xadbe96ac53cb4ca392e9ee5a7e23c7d7c8450cb015ceaad4d4677fae1c0bb1a4"], //keccak of underlying - }) - - //now we fetch value of all tnfts ever minted - await Promise.all(tnftContractsAddresses.map(async (tnft) => { - - //fetch all token ids - let ids = []; - const tokenIds = await api.fetchList({ target: tnft, itemAbi: getTokenByIndex, lengthAbi: getTotalSupply, }) - if (!tokenIds.length) return; - const inTangibleCustody = await api.multiCall({ target: tnft, abi: getTnftCustody, calls: tokenIds, }) - inTangibleCustody.forEach((v, i) => { - if (v) ids.push(tokenIds[i]) - }) - - // now fetch all prices - const prices = await api.call({ - abi: getItemPriceBatchTokenIds, - target: priceManagerAddress, - params: [tnft, underlyingAddress, ids], - }) - - for (let i = 0; i < prices.weSellAt.length; i++) { - api.add(underlyingAddress, prices.weSellAt[i]) // how can get the rwa value instead of the price you are willing to sell at? - api.add(underlyingAddress, prices.lockedAmount[i]) // what is this amount? - } - })) - -} - -async function tangiblePOL(api) { - - //pearl pair api address - const pearlPairApi = await api.call({ - abi: apGetAddress, - target: ADDRESS_PROVIDER_ADDRESS, - params: ["0xd1e0c1a56a62f2e6553b45bde148c89c51a01f766c23f4bb2c612bd2c822f711"],//keccak of paerl api address - }) - - // liquidity manager - const liquidityManager = await api.call({ - abi: apGetAddress, - target: ADDRESS_PROVIDER_ADDRESS, - params: ["0x6878742ff510854cb02c186504af5267007c4a6d33f490fc28ec83e83e1458e1"],//keccak of liquidity manager - }) - - const { data } = await getConfig('tangible', "https://api.pearl.exchange/api/v15/pools"); - const pools = data.filter( - (pool) => - (["DAI", "USDC", "USDT"].includes(pool.token0.symbol) && - pool.token1.symbol === "USDR") || - (["DAI", "USDC", "USDT"].includes(pool.token1.symbol) && - pool.token0.symbol === "USDR"), - ).map(i => i.address) - - const [lpBals, tokens0, tokens1, totalSupplies, reserves] = await Promise.all([ - api.multiCall({ abi: getPair, target: pearlPairApi, calls: pools.map(p => ({ params: [p, liquidityManager] })) }), - api.multiCall({ abi: 'address:token0', calls: pools }), - api.multiCall({ abi: 'address:token1', calls: pools }), - api.multiCall({ abi: 'uint256:totalSupply', calls: pools }), - api.multiCall({ abi: "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)", calls: pools }), - ]) - - const blacklist = [USDR, TNGBL] - lpBals.forEach((lpBal, i) => { - const ratio = lpBal.account_gauge_balance / totalSupplies[i] - if (!blacklist.includes(tokens0[i].toLowerCase())) - api.add(tokens0[i], reserves[i]._reserve0 * ratio) - - if (!blacklist.includes(tokens1[i].toLowerCase())) - api.add(tokens1[i], reserves[i]._reserve1 * ratio) - - }) -} - -module.exports = { - hallmarks: [ - [1697032800, "USDR Depeg"] - ], - misrepresentedTokens: true, - polygon: { tvl, }, - ethereum: { tvl: sumTokensExport(insuranceConfig.ethereum) }, - base: { tvl: tvlBase }, - arbitrum: { tvl: tvlArb }, - optimism: { tvl: tvlOp }, - real: { tvl: realTvl }, -} - -async function unwrapBalancerToken(api, owner) { - const gauge = '0x07222e30b751c1ab4a730745afe19810cfd762c0' - const balancerToken = '0x9f9f548354b7c66dc9a9f3373077d86aaaccf8f2' - const [lpSupply, lpTokens] = await api.batchCall([ - { abi: 'erc20:totalSupply', target: balancerToken }, - { abi: 'erc20:balanceOf', target: gauge, params: owner }, - ]) - const ratio = lpTokens / lpSupply - - const poolId = await api.call({ abi: 'function getPoolId() view returns (bytes32)', target: balancerToken }) - const vault = await api.call({ abi: 'address:getVault', target: balancerToken }) - const [tokens, bals] = await api.call({ abi: 'function getPoolTokens(bytes32) view returns (address[], uint256[],uint256)', target: vault, params: poolId }) - tokens.forEach((v, i) => { - if (v.toLowerCase() === TNGBL) return; - api.add(v, bals[i] * ratio) - }) -} \ No newline at end of file diff --git a/projects/tangible/insurance-fund-arbitrum.js b/projects/tangible/insurance-fund-arbitrum.js deleted file mode 100644 index ea2e3aca6d3..00000000000 --- a/projects/tangible/insurance-fund-arbitrum.js +++ /dev/null @@ -1,17 +0,0 @@ -const VE_CHR_ABI = require('./abi/VeChrNFT.json'); - -const insuranceTokensArb = { - CHR: '0x15b2fb8f08e4ac1ce019eadae02ee92aedf06851', -} - -const VE_CHR_NFT = "0x9A01857f33aa382b1d5bb96C3180347862432B0d"; - -async function getInsuranceFundValueArb(api, INSURANCE_FUND) { - const tokenIds = await api.call({ abi: VE_CHR_ABI.tokensOfOwner, target: VE_CHR_NFT, params: INSURANCE_FUND }) - const bals = await api.multiCall({ abi: VE_CHR_ABI.locked, calls: tokenIds, target: VE_CHR_NFT, }) - bals.forEach(i => api.add(insuranceTokensArb.CHR, i.amount)) -} - -module.exports = { - getInsuranceFundValueArb, -} diff --git a/projects/tangible/insurance-fund-base.js b/projects/tangible/insurance-fund-base.js deleted file mode 100644 index cc7225876df..00000000000 --- a/projects/tangible/insurance-fund-base.js +++ /dev/null @@ -1,15 +0,0 @@ -const { unwrapSolidlyVeNft } = require('../helper/unwrapLPs'); - -const insuranceTokensBase = { - AERO: '0x940181a94A35A4569E4529A3CDfB74e38FD98631', -} - -const VE_AERO_NFT = "0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4"; - -async function getInsuranceFundValueBase(api, INSURANCE_FUND) { - await unwrapSolidlyVeNft({ api, baseToken: insuranceTokensBase.AERO, veNft: VE_AERO_NFT, owner: INSURANCE_FUND }) -} - -module.exports = { - getInsuranceFundValueBase, -} diff --git a/projects/tangible/insurance-fund-optimism.js b/projects/tangible/insurance-fund-optimism.js deleted file mode 100644 index 46f3c9117eb..00000000000 --- a/projects/tangible/insurance-fund-optimism.js +++ /dev/null @@ -1,15 +0,0 @@ -const { unwrapSolidlyVeNft } = require('../helper/unwrapLPs'); - -const insuranceTokensOp = { - VELO: '0x9560e827af36c94d2ac33a39bce1fe78631088db', -} - -const VE_VELO_NFT = "0xFAf8FD17D9840595845582fCB047DF13f006787d"; - -async function getInsuranceFundValueOp(api, INSURANCE_FUND) { - await unwrapSolidlyVeNft({ api, baseToken: insuranceTokensOp.VELO, veNft: VE_VELO_NFT, owner: INSURANCE_FUND }) -} - -module.exports = { - getInsuranceFundValueOp, -} diff --git a/projects/tangible/insurance-fund-polygon.js b/projects/tangible/insurance-fund-polygon.js deleted file mode 100644 index 826322d8cb5..00000000000 --- a/projects/tangible/insurance-fund-polygon.js +++ /dev/null @@ -1,93 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const VE_VELO_ABI = require('./abi/VeVeloNFT.json'); -const { createIncrementArray } = require('../helper/utils'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const CAVIAR_CHEF_ABI = require('./abi/CaviarChef.json'); - -const insuranceTokens = { - CAVIAR: '0x6AE96Cc93331c19148541D4D2f31363684917092', - DAI: ADDRESSES.polygon.DAI, - PEARL: '0x7238390d5f6F64e67c3211C343A410E2A3DEc142', - STAR: '0xC19669A405067927865B40Ea045a2baabbbe57f5', - STMATIC: '0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4', - TETU: '0x255707B70BF90aa112006E1b07B9AeA6De021424', - TNGBL: '0x49e6A20f1BBdfEeC2a8222E052000BbB14EE6007', - USDC: ADDRESSES.polygon.USDC, - USDR: '0x40379a439D4F6795B6fc9aa5687dB461677A2dBa', - USDT: ADDRESSES.polygon.USDT, - WETH: ADDRESSES.polygon.WETH_1, - WMATIC: ADDRESSES.polygon.WMATIC_2, - WUSDR: '0x00e8c0E92eB3Ad88189E7125Ec8825eDc03Ab265', - TETU_BPT: '0xE2f706EF1f7240b803AAe877C9C762644bb808d8', -} - -const UTILITY_TOKENS = { - VE_PEARL: '0x017A26B18E4DA4FE1182723a39311e67463CF633', - VE_TETU: '0x6FB29DD17fa6E27BD112Bc3A2D0b8dae597AeDA4', -} - -const CAVIAR_STAKING_CHEF = '0x83C5022745B2511Bd199687a42D27BEFd025A9A9'; -const CAVIAR_REBASE_CHEF = '0xf5374d452697d9A5fa2D97Ffd05155C853F6c1c6'; -const PEARL_PAIR_FACTORY = '0xEaF188cdd22fEEBCb345DCb529Aa18CA9FcB4FBd'; -const PEARL_VOTER = '0xa26C2A6BfeC5512c13Ae9EacF41Cb4319d30cCF0'; - -async function getInsuranceFundValue(api, INSURANCE_FUND) { - await Promise.all([ - addVePearlBal(api, INSURANCE_FUND), - addVeTetuBal(api, INSURANCE_FUND), - caviarTvl(api, INSURANCE_FUND), - pearlFactoryTvl(api, INSURANCE_FUND), - ]) - return sumTokens2({ api, owner: INSURANCE_FUND, tokens: Object.values(insuranceTokens), resolveUniV3: true, resolveLP: true, blacklistedTokens: [ - insuranceTokens.USDR, - insuranceTokens.WUSDR, - insuranceTokens.TNGBL, - ] }) -} - -async function caviarTvl(api, owner) { - const [ - stakingAmount, pendingStakingReward, stakingRewardToken, pendingRebaseReward, rebaseRewardToken - ] = await Promise.all([ - api.call({ target: CAVIAR_STAKING_CHEF, abi: CAVIAR_CHEF_ABI.userInfo, params: [owner] }), - api.call({ target: CAVIAR_STAKING_CHEF, abi: CAVIAR_CHEF_ABI.pendingReward, params: [owner] }), - api.call({ target: CAVIAR_STAKING_CHEF, abi: CAVIAR_CHEF_ABI.rewardToken, }), - api.call({ target: CAVIAR_REBASE_CHEF, abi: CAVIAR_CHEF_ABI.pendingReward, params: [owner] }), - api.call({ target: CAVIAR_REBASE_CHEF, abi: CAVIAR_CHEF_ABI.rewardToken, }), - ]) - - // api.add(stakingRewardToken, pendingStakingReward); // it is wUSDR - api.add(rebaseRewardToken, pendingRebaseReward); - api.add(insuranceTokens.CAVIAR, stakingAmount.amount); -} - -async function pearlFactoryTvl(api, owner) { - const pairs = await api.fetchList({ lengthAbi: 'uint256:allPairsLength', itemAbi: "function allPairs(uint256) view returns (address)", target: PEARL_PAIR_FACTORY }) - const gauges = await api.multiCall({ abi: "function gauges(address) view returns (address)", calls: pairs, target: PEARL_VOTER }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges.map(g => ({ target: g, params: owner })) }) - bals.forEach((bal, i) => { - if (pairs[i].toLowerCase() !== '0x0edc235693c20943780b76d79dd763236e94c751') - api.add(pairs[i], bal) - }) -} - -async function addVePearlBal(api, INSURANCE_FUND) { - const count = await api.call({ abi: 'erc20:balanceOf', target: UTILITY_TOKENS.VE_PEARL, params: INSURANCE_FUND }) - const tokenIds = await api.multiCall({ abi: VE_VELO_ABI.tokenOfOwnerByIndex, calls: createIncrementArray(count).map(i => ({ params: [INSURANCE_FUND, i] })), target: UTILITY_TOKENS.VE_PEARL }) - const bals = await api.multiCall({ abi: VE_VELO_ABI.lockedPearl, calls: tokenIds, target: UTILITY_TOKENS.VE_PEARL }) - bals.forEach(i => api.add(insuranceTokens.PEARL, i.amount)) -} - -async function addVeTetuBal(api, INSURANCE_FUND) { - const count = await api.call({ abi: 'erc20:balanceOf', target: UTILITY_TOKENS.VE_TETU, params: INSURANCE_FUND }) - const tokenIds = await api.multiCall({ abi: VE_VELO_ABI.tokenOfOwnerByIndex, calls: createIncrementArray(count).map(i => ({ params: [INSURANCE_FUND, i] })), target: UTILITY_TOKENS.VE_TETU }) - const bals = await api.multiCall({ abi: VE_VELO_ABI.lockedAmounts, calls: tokenIds.map(i => ({ params: [i, insuranceTokens.TETU_BPT] })), target: UTILITY_TOKENS.VE_TETU }) - bals.forEach(i => api.add(insuranceTokens.TETU_BPT, i)) -} - - -module.exports = { - getInsuranceFundValue, - insuranceTokens -} diff --git a/projects/tangleswap/index.js b/projects/tangleswap/index.js deleted file mode 100644 index 9c6d83f502a..00000000000 --- a/projects/tangleswap/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { staking } = require('../helper/staking') -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens2, } = require('../helper/unwrapLPs') -const { uniV3Export, } = require('../helper/uniswapV3') - -const config = { - shimmer_evm: { endpoint: 'https://shimmer.subgraph.tangleswap.space/subgraphs/name/tangleswap/shimmer-v3' }, -} -const query = `query getPools($lastId: String!) { - pools( - first: 1000 - where: {id_gt: $lastId} - ) { - id - token0 { id } - token1 { id } - } -}` - -async function tvl(api) { - const { endpoint } = config[api.chain] - const pools = await cachedGraphQuery('tangleswap/' + api.chain, endpoint, query, { fetchById: true, }) - return sumTokens2({ - api, - ownerTokens: pools.map(i => { - return [[i.token0.id, i.token1.id], i.id] - }) - }) -} - - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) - -module.exports.milkomeda = uniV3Export({ milkomeda: { factory: "0xda2f048C128506e720b0b0b32F20432157dde1c7", fromBlock: 19701714, },}).milkomeda -module.exports.milkomeda.staking = staking('0xbDD88a555cB49b6b482850aA50c1c2C74fa3367a', '0x6085C822B7A4c688D114468B1380a0Ed1873a0B3') -module.exports.shimmer_evm.staking = staking('0x86eea5C341ece8f96D403eA9fB4d184A6a94C0E1', '0xE5f3dCC241Dd008E3c308e57cf4F7880eA9210F8') -// module.exports.shimmer_evm = uniV3Export({ milkomeda: { factory: "0xdf7bA717FB0D5ce579252f05167cD96d0fA77bCb", fromBlock: 19701714, },}).milkomeda -// module.exports.iotaevm = uniV3Export({ iotaevm: { factory: "0xdf7bA717FB0D5ce579252f05167cD96d0fA77bCb", fromBlock: 19701714, },}).iotaevm \ No newline at end of file diff --git a/projects/tangoswap/index.js b/projects/tangoswap/index.js deleted file mode 100644 index c9147782515..00000000000 --- a/projects/tangoswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const TANGO = "0x73BE9c8Edf5e951c9a0762EA2b1DE8c8F38B5e91" -const xTANGO = "0x98Ff640323C059d8C4CB846976973FEEB0E068aA"; -const FACTORY = "0x2F3f70d13223EDDCA9593fAC9fc010e912DF917a"; - -module.exports = { - methodology: "Count TVL as liquidity on the dex", - misrepresentedTokens: true, - smartbch: { - tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), - staking: staking(xTANGO, TANGO, 'smartbch', 'tangoswap', 18) - } -} diff --git a/projects/tanukix/index.js b/projects/tanukix/index.js deleted file mode 100644 index a257ba1488a..00000000000 --- a/projects/tanukix/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { onChainTvl } = require('../helper/balancer') - -module.exports = { - methodology: "Sum of all the tokens locked in TanukiX vault", - taiko: { - tvl: onChainTvl('0x3251e99cEf4b9bA03a6434B767aa5Ad11ca6cc31', 204741) - }, -} \ No newline at end of file diff --git a/projects/taoline/index.js b/projects/taoline/index.js deleted file mode 100644 index 2acd3acd2d0..00000000000 --- a/projects/taoline/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/solana'); - -const TAOLIE_TOKEN = '7dLJnm2NzHPMwB7mJL7azhyMLqs4ZzKYkkhr3ob72Gwo'; - -module.exports = { - timetravel: false, - solana: { - tvl: () => ({}), - staking: sumTokensExport({ - owner: 'SVeQXvXgvMgYegnyEfvJpMoqsRE37TCXFkcEKzWesKv', - tokens: [TAOLIE_TOKEN] - }), - }, -}; diff --git a/projects/taparoo/index.js b/projects/taparoo/index.js deleted file mode 100644 index d8254fb131f..00000000000 --- a/projects/taparoo/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http') - -module.exports = { - misrepresentedTokens: true, - icp: { tvl }, -} - -async function tvl(api) { - let response = await get('https://ic0.app/api/v2/canister/5ez4n-ayaaa-aaaah-qdqua-cai/query/getTvl') - const satoshiAmount = parseInt(response.replace(/"/g, '')) - const btcAmount = satoshiAmount / 100000000 - api.add('bitcoin', btcAmount) -} diff --git a/projects/tapbit-cex/index.js b/projects/tapbit-cex/index.js deleted file mode 100644 index b0a2fb0e96e..00000000000 --- a/projects/tapbit-cex/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { cexExports } = require("../helper/cex"); -const bitcoinAddressBook = require("../helper/bitcoin-book/index.js"); - -const config = { - ethereum: { - owners: ["0x33b9b598fb490f17426da7b7d344ead1bc3915dd"], - }, - bitcoin: { - owners: bitcoinAddressBook.tapbit, - }, -}; - -module.exports = cexExports(config); diff --git a/projects/tapio/api.js b/projects/tapio/api.js deleted file mode 100644 index 56b8478308f..00000000000 --- a/projects/tapio/api.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getAPI } = require('../helper/acala/api') - -module.exports = { - acala: { - tvl: async () => { - const chain = 'acala' - const api = await getAPI(chain) - const account = '23M5ttkp2zdM8qa6LFak4BySWZDsAVByjepAfr7kt929S1U9' - return { - polkadot: (await balanceOf(api, account, { Token: 'DOT'})) / 1e10, - 'liquid-staking-dot': (await balanceOf(api, account,{ Token: 'LDOT'})) / 1e10, - } - } - }, -}; - -async function balanceOf(api, account, token) { - const tokenRes = await api.query.tokens.accounts(account, token) - return +tokenRes.toHuman().free.replace(/,/g, '') -} diff --git a/projects/tapio/index.js b/projects/tapio/index.js deleted file mode 100644 index 3a9060bd8c2..00000000000 --- a/projects/tapio/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("tapio", ['acala']), -} \ No newline at end of file diff --git a/projects/tapp-exchange/index.js b/projects/tapp-exchange/index.js deleted file mode 100644 index 3d28bd1ef7f..00000000000 --- a/projects/tapp-exchange/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const {function_view} = require("../helper/chain/aptos"); - -const MODULE_VIEW = "0xf5840b576a3a6a42464814bc32ae1160c50456fb885c62be389b817e75b2a385" - -async function getPools() { - return await function_view({ - functionStr: `${MODULE_VIEW}::tapp_views::get_pool_metas`, - args: [], - type_arguments: [], - }); -} - -async function getPairedCoin(address) { - const result = await function_view({ - functionStr: "0x1::coin::paired_coin", - args: [address], - type_arguments: [], - }); - - const [coinInfo] = result.vec || []; - - if (!coinInfo) return null; - - const {account_address, module_name, struct_name} = coinInfo; - - const module = Buffer.from(module_name.replace(/^0x/, ""), "hex").toString("utf-8"); - const struct = Buffer.from(struct_name.replace(/^0x/, ""), "hex").toString("utf-8"); - - return `${account_address}::${module}::${struct}`; -} - - -module.exports = { - methodology: "Measures the total liquidity across all pools on TAPP Exchange.", - timetravel: false, - aptos: { - tvl: async (api) => { - const hookTypes = [2,3,4] - - const pools = (await getPools()).filter(pool=> hookTypes.includes(pool.hook_type)); - - for (const pool of pools) { - const coinA = await getPairedCoin(pool.assets[0]) || pool.assets[0]; - const coinB = await getPairedCoin(pool.assets[1]) || pool.assets[1]; - - api.add(coinA, pool.reserves[0]); - api.add(coinB, pool.reserves[1]); - } - }, - }, -}; - diff --git a/projects/taraperps/index.js b/projects/taraperps/index.js deleted file mode 100644 index eebcbe83ca2..00000000000 --- a/projects/taraperps/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -const taraxa_vault = '0xCCA1234b65FF576572E6D278aE6cacfF6989D93D'; - -module.exports = { - tara: { - tvl: gmxExports({ vault: taraxa_vault }) - } -}; diff --git a/projects/taraswap/index.js b/projects/taraswap/index.js deleted file mode 100644 index 08675afca63..00000000000 --- a/projects/taraswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3'); - -module.exports = uniV3Export({ - tara: { factory: '0x5EFAc029721023DD6859AFc8300d536a2d6d4c82', fromBlock: 10674828 }, -}) \ No newline at end of file diff --git a/projects/tardly/index.js b/projects/tardly/index.js deleted file mode 100644 index 70808333a5e..00000000000 --- a/projects/tardly/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getAppGlobalState } = require('../helper/chain/algorand') -const TardlyAppID = 2724605419 - -async function getStake() { - const state = await getAppGlobalState(TardlyAppID) - return { - 'algorand': state['staked'] / 1e6, - } -} - -module.exports = { - timetravel: false, - methodology: 'Returns total amount staked in the Tardly No Loss Lottery.', - algorand: { - tvl: async () => { - return getStake() - }, - } -} diff --git a/projects/tarina/index.js b/projects/tarina/index.js deleted file mode 100644 index 2a71e01e8c3..00000000000 --- a/projects/tarina/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'avax': '0xb334a709dd2146caced08e698c05d4d22e2ac046' -}) \ No newline at end of file diff --git a/projects/tarot/abi.js b/projects/tarot/abi.js deleted file mode 100644 index 7b3b149d5c6..00000000000 --- a/projects/tarot/abi.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - allLendingPools: "function allLendingPools(uint256) view returns (address)", - allLendingPoolsLength: "uint256:allLendingPoolsLength", - getLendingPool: "function getLendingPool(address) view returns (bool initialized, uint24 lendingPoolId, address collateral, address borrowable0, address borrowable1)", - underlying: "address:underlying", - totalBorrows: "function totalBorrows() view returns (uint112)", -} \ No newline at end of file diff --git a/projects/tarot/index.js b/projects/tarot/index.js deleted file mode 100644 index c802d74fbcb..00000000000 --- a/projects/tarot/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const { tarotHelper } = require('./tarotHelper') - -const config = { - fantom: { - factories: [ - '0x35C052bBf8338b06351782A565aa9AaD173432eA', // Tarot Classic - '0xF6D943c8904195d0f69Ba03D97c0BAF5bbdCd01B', // Tarot Requiem - '0xbF76F858b42bb9B196A87E43235C2f0058CF7322', // Tarot Carcosa - '0xa90092A6bfC100e32777B257AF46B3Ec2675d876', // Tarot Voyager - '0xe034c865299dA16A429DaD26bFf5468C2689F7D8', // Tarot Forever - ] - }, - optimism: { - factories: [ - '0x1D90fDAc4DD30c3ba38d53f52A884F6e75d0989e', // Tarot Opaline - '0xD7cABeF2c1fD77a31c5ba97C724B82d3e25fC83C', // Tarot Velours - '0x49DF1fe24cAf1a7dcBB2E2b1793b93b04eDb62bF', // Tarot Jupiter - '0xBA47316035E6C95b31cb55BfB93458Ad41E4Da04', // Tarot Velouté - ] - }, - base: { - factories: [ - '0xEb5809eb0f79aaB6e53E6374258b29A244Dfc12d', // Tarot Aerials - ] - }, - arbitrum: { - factories: [ - '0x2217AEC3440E8FD6d49A118B1502e539f88Dba55', // Tarot Galahad - '0x1bbD5637421a83b00C5Cd549B9C3721B28553F80', // Tarot Saurian - '0x4B6daE049A35196A773028B2E835CCcCe9DD4723', // Tarot Ulysses - ] - }, - bsc: { - factories: [ - '0x2217AEC3440E8FD6d49A118B1502e539f88Dba55', // Tarot Bermuda - '0xC20099a3F0728634C1136489074508be7B406d3a', // Tarot Palermo - ] - }, - ethereum: { - factories: [ - '0x1CAfcB9f3B5A152b1553bC2c688BA6a18054b653', // Tarot Eleusis - '0x4B6daE049A35196A773028B2E835CCcCe9DD4723', // Tarot Equinox - ] - }, - kava: { - factories: [ - '0x82B3413D575Aa93806308A04b53c78ae2037dA11', // Tarot Avignon - '0x54950cae3d8513EA041066F31697903de5909F57', // Tarot Orleans - ] - }, - canto: { - factories: [ - '0xb6193DF61351736e5190bF1DEB2E4f0769bd1BF2', // Tarot Cabaret - '0x82B3413D575Aa93806308A04b53c78ae2037dA11', // Tarot Cantata - ] - }, - avax: { - factories: [ - '0x36Df0A76a124d8b2205fA11766eC2eFF8Ce38A35', // Tarot Cascade - ] - }, - polygon: { - factories: [ - '0x36Df0A76a124d8b2205fA11766eC2eFF8Ce38A35', // Tarot Paprika - ] - }, - era: { - factories: [ - '0xf450b51fb2E1e4f05DAf9Cf7D9BB97714540B4f4', // Tarot Zeniths - ] - }, - linea: { - factories: [ - '0xb6193DF61351736e5190bF1DEB2E4f0769bd1BF2', // Tarot Leyline - ] - }, - scroll: { - factories: [ - '0x2217AEC3440E8FD6d49A118B1502e539f88Dba55', // Tarot Osirion - ] - }, -} - -tarotHelper(module.exports, config) diff --git a/projects/tarot/tarotHelper.js b/projects/tarot/tarotHelper.js deleted file mode 100644 index a301c686753..00000000000 --- a/projects/tarot/tarotHelper.js +++ /dev/null @@ -1,99 +0,0 @@ -const abi = require('./abi') -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') -const { nullAddress } = require('../helper/tokenMapping') - -function tarotHelper(exportsObj, config, { tarotSymbol = 'vTAROT' } = {}) { - async function tvl(api) { - const { factories } = config[api.chain] - const pools = [] - await Promise.all(factories.map(async (factory) => { - const lendingPools = await api.fetchList({ lengthAbi: abi.allLendingPoolsLength, itemAbi: abi.allLendingPools, target: factory }) - - const poolData = await api.multiCall({ - target: factory, - abi: abi.getLendingPool, - calls: lendingPools, - }) - - poolData.forEach(i => { - pools.push(i.collateral, i.borrowable0, i.borrowable1) - }) - })) - - const underlyings = await api.multiCall({ - abi: abi.underlying, - calls: pools, - }) - - const filteredUnderlyings = underlyings.filter(i => i !== nullAddress) - const uSymbols = await api.multiCall({ abi: 'erc20:symbol', calls: filteredUnderlyings }) - const uvTokens = filteredUnderlyings.filter((_, i) => uSymbols[i] === tarotSymbol) - const [uToken, totalBalance] = await Promise.all([ - api.multiCall({ abi: 'address:underlying', calls: uvTokens }), - api.multiCall({ abi: 'uint256:totalBalance', calls: uvTokens }), - ]) - - const toa = pools.map((v, i) => [underlyings[i], v]) - api.addTokens(uToken, totalBalance) - return sumTokens2({ - api, tokensAndOwners: toa, resolveLP: true, blacklistedTokens: uvTokens, - }) - } - - async function borrowed(api) { - const { factories } = config[api.chain] - const balances = {} - const borrowables = [] - await Promise.all(factories.map(async (factory) => { - const lendingPools = await api.fetchList({ lengthAbi: abi.allLendingPoolsLength, itemAbi: abi.allLendingPools, target: factory }) - - const poolData = await api.multiCall({ - target: factory, - abi: abi.getLendingPool, - calls: lendingPools, - }) - - poolData.forEach(i => { - borrowables.push(i.borrowable0, i.borrowable1) - }) - })) - - const underlyings = await api.multiCall({ - abi: abi.underlying, - calls: borrowables, - }) - - const borrowed = await api.multiCall({ - abi: abi.totalBorrows, - calls: borrowables - }) - - // think these have lot of bad debt - const blacklistedBorrowables = new Set([ - '0x5990Ddc40b63D90d3B783207069F5b9A8b661C1C', - '0xec51a9f0dc97563147fb89176047283b9ae4cca9', - ].map(a => a.toLowerCase())) - - const blacklistedTokens = new Set([ - '0xC5e2B037D30a390e62180970B3aa4E91868764cD', // Tarot - '0xfb98b335551a418cd0737375a2ea0ded62ea213b',// Lot of MAI pools have bad debt, ignoring it - ].map(a => a.toLowerCase())) - - underlyings.forEach((v, i) => { - - if (!blacklistedTokens.has(v.toLowerCase()) && !blacklistedBorrowables.has(borrowables[i].toLowerCase())) { - sdk.util.sumSingleBalance(balances, v, borrowed[i], api.chain) - } - }) - return balances - } - - Object.keys(config).forEach(chain => { - exportsObj[chain] = { borrowed, tvl, } - }) -} - -module.exports = { - tarotHelper -} \ No newline at end of file diff --git a/projects/tashi/index.js b/projects/tashi/index.js deleted file mode 100644 index b7dd8ec1e03..00000000000 --- a/projects/tashi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { compoundExports } = require('../helper/compound') - -module.exports = { - methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", - evmos: compoundExports("0x053841Bd1D291380726a007eA834Ecd296923260", "0x1cd248D72248A0618932F77093Dc4ceC9757759d") -} diff --git a/projects/tbill.js b/projects/tbill.js deleted file mode 100644 index b658fb4f6ae..00000000000 --- a/projects/tbill.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensExport } = require('./helper/unwrapLPs'); - -module.exports = { - theta: { - tvl: sumTokensExport({ owner: ADDRESSES.theta.WTFUEL, token: ADDRESSES.null}), - }, -} \ No newline at end of file diff --git a/projects/tbtc/index.js b/projects/tbtc/index.js deleted file mode 100644 index a749ac298f2..00000000000 --- a/projects/tbtc/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens } = require('../helper/chain/bitcoin') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -async function tvl() { - return sumTokens({ owners: await bitcoinAddressBook.tBTC() }) -} - -module.exports = { - timetravel: false, - methodology: "BTC on btc chain", - ethereum: { tvl: () => ({}) }, - bitcoin: { tvl }, -}; diff --git a/projects/tcv_platform/index.js b/projects/tcv_platform/index.js deleted file mode 100644 index 61e961dad01..00000000000 --- a/projects/tcv_platform/index.js +++ /dev/null @@ -1,34 +0,0 @@ - - -const { sumTokens2 } = require('../helper/unwrapLPs'); - -async function tvl(api) { - const tcvFactory = "0xCa2396933E02Fb7636126a914aE5f5512ab31077"; - const routerFarmingUniV3 = "0x1AC0083dDA51dEde7a4f9F35a78fc02f91a242e7"; - const autodca = "0xE9c47aAcB92E4E694736e1072ff0C0A79A841daa" - const tokens = [ - // ARB - "0x912CE59144191C1204E64559FE8253a0e49E6548", - // WETH - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - // USDC - "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - // WBTC - "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f" - ] - const index = await api.call({ target: tcvFactory, abi: 'uint256:numVaults', }); - const vaults = await api.call({ target: tcvFactory, abi: 'function vaults(uint256,uint256) returns (address[])', params: ["0", String(index)], }); - await sumTokens2({ api, resolveUniV3: true, owners: vaults }); - await sumTokens2({ api, resolveUniV3: true, owner: routerFarmingUniV3 }); - for (const token of tokens) { - api.add(token, await api.call({ target: autodca, abi: 'function getBalance(address) view returns (uint256)', params: [token] })) - } -} - -module.exports = { - methodology: "Calculates total liquidity from TCV", - start: '2025-09-15', - arbitrum: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/tea-fi/index.js b/projects/tea-fi/index.js deleted file mode 100644 index 6b8182b7a0e..00000000000 --- a/projects/tea-fi/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - polygon: { - owners: [ - '0x1fc39644c58396e567aa44840cf5e5c9696a9a1c', - ], - tokens: [ - ADDRESSES.polygon.WMATIC_2, - ADDRESSES.polygon.USDC_CIRCLE, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.WBTC, - ADDRESSES.polygon.WSOL, - ] - }, - ethereum: { - owners: [ - '0x23Ca477089466Ac4D563a89E4F0df8C46B92735d', - ], - tokens: [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.POL, - ADDRESSES.ethereum.WSOL, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.WETH, - ] - } -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ ...config[chain], }) - } -}) - -module.exports.methodology = "Value of tokens locked in the teams safe contracts" \ No newline at end of file diff --git a/projects/teahouse-v3/abi.js b/projects/teahouse-v3/abi.js deleted file mode 100644 index 798f7ec2aa7..00000000000 --- a/projects/teahouse-v3/abi.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = { - assetToken0: "function assetToken0() view returns (address)", - assetToken1: "function assetToken1() view returns (address)", - vaultAllUnderlyingAssets: "function vaultAllUnderlyingAssets() view returns (uint256 amount0, uint256 amount1)", - getAssets: "function getAssets() view returns (address[])", - getAssetsBalance: "function getAssetsBalance() view returns (uint256[])", - assetType: "function assetType(address) external returns (uint8)", - underlyingAsset: "function UNDERLYING_ASSET_ADDRESS() returns (address)", - asset_token0: { - type: "function", - state_mutability: "view", - name: "asset_token0", - inputs: [], - outputs: [{ name: "address", type: "felt" }], - customType: "address", - }, - asset_token1: { - type: "function", - state_mutability: "view", - name: "asset_token1", - inputs: [], - outputs: [{ name: "address", type: "felt" }], - customType: "address", - }, - vault_all_underlying_assets: { - type: "function", - state_mutability: "view", - name: "vault_all_underlying_assets", - inputs: [], - outputs: [{ name: "amount", "type": "(core::integer::u256, core::integer::u256)" }], - }, -}; \ No newline at end of file diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js deleted file mode 100644 index f90a68739d4..00000000000 --- a/projects/teahouse-v3/index.js +++ /dev/null @@ -1,119 +0,0 @@ -const abi = require("./abi.js") -const starknet = require("../helper/chain/starknet"); -const { getConfig } = require("../helper/cache"); - -// teahouse public api for vault -const teahouseVaultAPI = "https://raw.githubusercontent.com/TeahouseFinance/Vaults-for-DeFiLlama/main/vaults.json"; - -// get vault contract addresses from teahouse api -async function getVaultContractsAddress(chain) { - let pairVault = []; - let portVault = []; - let starknetPairVault = []; - const { vaults } = await getConfig("teahouse/v3_vault_data", teahouseVaultAPI); - vaults.forEach((element) => { - // permissionless vaults - if (element.isDeFi == true && element.isActive == true) { - if (element.chain === chain) { - // starknet - if (chain === 'starknet') { - starknetPairVault.push(element.share.address); - } else { - // evm - const type = element.type.toLowerCase(); - if (type === "v3pair") { - pairVault.push(element.share.address); - } else if (type === "v3port") { - portVault.push(element.share.address); - } - } - } - } - }); - - return { - pair: pairVault, - port: portVault, - starknetPair: starknetPairVault, - }; -} - -const chains = ["optimism", "arbitrum", "polygon", "bsc", "mantle", "boba", "linea", "scroll", "starknet"]; - -chains.forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - const vaults = await getVaultContractsAddress(chain); - - let tokens0 = await api.multiCall({ - abi: abi.assetToken0, - calls: vaults.pair, - }); - let tokens1 = await api.multiCall({ - abi: abi.assetToken1, - calls: vaults.pair, - }); - let bals = await api.multiCall({ - abi: abi.vaultAllUnderlyingAssets, - calls: vaults.pair, - }); - let bals0 = bals.map(innerArray => innerArray[0]); - let bals1 = bals.map(innerArray => innerArray[1]); - api.addTokens(tokens0, bals0); - api.addTokens(tokens1, bals1); - - // EVM portfolio vault - let tokens = await api.multiCall({ abi: abi.getAssets, calls: vaults.port }); - bals = await api.multiCall({ abi: abi.getAssetsBalance, calls: vaults.port }); - let assetTypes = await Promise.all(tokens.map( - async (tokenArr, index) => - await api.multiCall({ - abi: abi.assetType, - calls: tokenArr.map(token => ({ target: vaults.port[index], params: [token] })), - }) - )); - tokens = tokens.flat(); - bals = bals.flat(); - assetTypes = assetTypes.flat(); - - // assetType: 3-TeaVault, 4-AaveAToken, convert type 4 to underlying asset and then exclude type 3 balances - let aTokenIndice = []; - let excludeIndice = []; - assetTypes.forEach((type, index) => { - if (type === '4') { - aTokenIndice.push(index); - } else if (type === '3') { - excludeIndice.push(index); - } - }); - - const underlyings = await api.multiCall({ abi: abi.underlyingAsset, calls: aTokenIndice.map((index) => tokens[index]) }); - aTokenIndice.forEach((value, index) => (tokens[value] = underlyings[index])); - tokens = tokens.filter((_, index) => !excludeIndice.includes(index)); - bals = bals.filter((_, index) => !excludeIndice.includes(index)); - api.addTokens(tokens, bals); - - // Starknet pair vault - tokens0 = await starknet.multiCall({ - abi: abi.asset_token0, - calls: vaults.starknetPair, - }); - tokens1 = await starknet.multiCall({ - abi: abi.asset_token1, - calls: vaults.starknetPair, - }); - bals = await starknet.multiCall({ - abi: abi.vault_all_underlying_assets, - calls: vaults.starknetPair, - }); - bals0 = bals.map(innerArray => innerArray.amount['0']); - bals1 = bals.map(innerArray => innerArray.amount['1']); - api.addTokens(tokens0, bals0); - api.addTokens(tokens1, bals1); - - return api.getBalances(); - }, - }; -}); - -module.exports.misrepresentedTokens = true diff --git a/projects/teahouse/index.js b/projects/teahouse/index.js deleted file mode 100644 index 4d5847b8246..00000000000 --- a/projects/teahouse/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getConfig } = require("../helper/cache"); - -// teahouse public api for vault -const teahouseVaultAPI = "https://raw.githubusercontent.com/TeahouseFinance/Vaults-for-DeFiLlama/main/vaults.json"; - -const chains = ["ethereum", "optimism", "arbitrum", 'polygon','bsc', 'sei']; - -const abis = { - "globalState": "function globalState() view returns (uint128 depositLimit, uint128 lockedAssets, uint32 cycleIndex, uint64 cycleStartTimestamp, uint64 fundingLockTimestamp, bool fundClosed)", - "cycleState": "function cycleState(uint32) view returns (uint128 totalFundValue, uint128 fundValueAfterRequests, uint128 requestedDeposits, uint128 convertedDeposits, uint128 requestedWithdrawals, uint128 convertedWithdrawals)", - "asset": "function asset() view returns (address assetTokenAddress)", - "latestAnswer": "function latestAnswer() view returns (int256)" -} - -const tvl = async (api) => { - const { vaults } = await getConfig("teahouse/vault_data", teahouseVaultAPI) - const chainVaults = vaults.filter(vault => !vault.isDeFi && vault.isActive && vault.chain === api.chain).map(vault => vault.share.address) - const tokens = await api.multiCall({ abi: 'address:asset', calls: chainVaults }) - const cycleIndices = (await api.multiCall({ abi: abis.globalState, calls: chainVaults })).map((i) => Math.max(0, i.cycleIndex-1)) - const balances = (await api.multiCall({ abi: abis.cycleState, calls: chainVaults.map((vault, i) => ({ target: vault, params: cycleIndices[i]})) })).map((i) => i.fundValueAfterRequests) - api.addTokens(tokens, balances) - if (api.chain === 'bsc') { - const tvl = await api.getUSDValue() - if (+tvl === 0) throw new Error('tvl is 0 Balances:' + JSON.stringify(api.getBalances())) - } -} - -module.exports.misrepresentedTokens = true -chains.forEach((chain) => { - module.exports[chain] = { tvl } -}) - - diff --git a/projects/tealswap-v3/index.js b/projects/tealswap-v3/index.js deleted file mode 100644 index cd509eee5e0..00000000000 --- a/projects/tealswap-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - oas: { - factory: "0xe3fc2cB6E8c2671816D15B556B47375Afb2C29bD", - fromBlock: 2445228, - }, -}) \ No newline at end of file diff --git a/projects/tealswap/index.js b/projects/tealswap/index.js deleted file mode 100644 index 99d6ef2cb30..00000000000 --- a/projects/tealswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - oas: { - tvl: getUniTVL({ factory: '0x5200000000000000000000000000000000000018', useDefaultCoreAssets: true, }) - } -} \ No newline at end of file diff --git a/projects/team-finance/api.js b/projects/team-finance/api.js deleted file mode 100644 index 83de9883a95..00000000000 --- a/projects/team-finance/api.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./index') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - ...getExports("team-finance", chainKeys), - // hallmarks: [ - // [1666857600,"$14.5m Exploit"] - // ], - //https://etherscan.io/tx/0xb2e3ea72d353da43a2ac9a8f1670fd16463ab370e563b9b5b26119b2601277ce - //https://twitter.com/TeamFinance_/status/1585562380591063043 -} diff --git a/projects/team-finance/apiCache.js b/projects/team-finance/apiCache.js deleted file mode 100644 index bfcfe9630ee..00000000000 --- a/projects/team-finance/apiCache.js +++ /dev/null @@ -1,36 +0,0 @@ -const { getCache, setCache, } = require("../helper/cache") -const { vestingHelper, } = require("../helper/unknownTokens") -const config = require("./config") - -const project = 'bulky/team-finance' - -async function tvl(api) { - const chain = api.chain - const args = config[chain] - const cache = await getCache(project, chain) || { vaults: {} } - if (!cache.vaults) cache.vaults = {} - const _tvl = async ({ contractABI, contract, blacklist, }) => { - if (!cache.vaults[contract]) cache.vaults[contract] = { tokens: [], } - const cCache = cache.vaults[contract] - let tokens = await api.fetchList({ lengthAbi: contractABI.depositId, itemAbi: contractABI.getDepositDetails, target: contract, permitFailure: true, startFrom: cCache.tokens.length }) - tokens = tokens.filter(i => i).map(i => i._tokenAddress) - cCache.tokens.push(...tokens) - - const balances = await vestingHelper({ ...api, cache, useDefaultCoreAssets: true, owner: contract, tokens: cCache.tokens, blacklist, }) - api.addBalances(balances) - } - await Promise.all(args.map(_tvl)) - await setCache(project, chain, cache) - return api.getBalances() -} - -module.exports = { - methodology: `Counts each LP pair's native token and - stable balance, adjusted to reflect locked pair's value. - Balances and merged across multiple locker to return sum TVL per chain`, - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/team-finance/config.js b/projects/team-finance/config.js deleted file mode 100644 index d666f02f5d6..00000000000 --- a/projects/team-finance/config.js +++ /dev/null @@ -1,149 +0,0 @@ -const abi = require("./lockcontract_v3.abi.json"); -const abi_v2 = require("./lockcontract.abi.json"); - -module.exports = { - ethereum: [ - { - contract: "0xe2fe530c047f2d85298b07d9333c05737f1435fb", - contractABI: abi, - }, - { - contract: "0xdbf72370021babafbceb05ab10f99ad275c6220a", - contractABI: abi_v2, - }, - { - contract: "0xc77aab3c6d7dab46248f3cc3033c856171878bd5", - contractABI: abi_v2, - }, - ], - kava: [ - { - contract: "0xa9ec655dac35d989c0c8be075b1106dcd32502d6", - contractABI: abi_v2, - }, - ], - polygon: [ - { - contract: "0x3eF7442dF454bA6b7C1deEc8DdF29Cfb2d6e56c7", - contractABI: abi_v2, - }, - { - contract: "0x586c21a779c24efd2a8af33c9f7df2a2ea9af55c", - contractABI: abi_v2, - }, - ], - avax: [ - { - contract: "0x88ada02f6fce2f1a833cd9b4999d62a7ebb70367", - contractABI: abi_v2, - }, - { - contract: "0xe2fe530c047f2d85298b07d9333c05737f1435fb", - contractABI: abi, - }, - ], - arbitrum: [ - { - contract: "0xE0B0D2021293Bee9715e1Db3be31b55C00F72A75", - contractABI: abi_v2, - }, - ], - base: [ - { - contract: "0x4f0fd563be89ec8c3e7d595bf3639128c0a7c33a", - contractABI: abi_v2, - }, - ], - fantom: [ - { - contract: "0xccebbe9e2b8f46c2c6862238e60a396af790b63e", - contractABI: abi_v2, - blacklist: ["0xc2995a065106b5c5c738b2320387460ebd12c12d"], // KyberSwap LP WFTM-DOA - }, - ], - cronos: [ - { - contract: "0x05b711Df32d73ECaa877d45a637a2eB415e7995f", - contractABI: abi_v2, - }, - ], - /* etherlink: [ - { - chain: "etherlink", - contract: "0xb6061efc3259a886cf3274efdf9b61753e1bc194", - contractABI: abi_v2, - }, - ], */ - blast: [ - { - contract: "0x624a4cb48a52a29d97eb1127bd0585ea1e02143c", - contractABI: abi_v2, - }, - ], -/* zksync: [ - { - contract: "0xe6fcefa80c6eec28b2682ebb6b4b476e7f2b9bdf", - contractABI: abi_v2, - }, - ], */ - mantle: [ - { - contract: "0xd03450a71b81d408fc3d4f4bf928ca4da5328b14", - contractABI: abi_v2, - }, - ], - pulse: [ - { - contract: "0xe2fe530c047f2d85298b07d9333c05737f1435fb", - contractABI: abi_v2, - }, - ], - odyssey: [ - { - contract: "0x5dd3d67af1b31823dd3eee8548bdc070640c14b8", - contractABI: abi_v2, - }, - ], - flare: [ - { - contract: "0x93ff61ac1ab23c5847c422d03be359c2b6c723c7", - contractABI: abi_v2, - }, - ], - klaytn: [ - { - chain: "klaytn", - contract: "0xb5c902ee211bae91ddb5c30b502c7ac6dfcd73f7", - contractABI: abi_v2, - }, - ], - lukso: [ - { - contract: "0x7c2aa307c3542d8346bea3290385359c78778934", - contractABI: abi_v2, - }, - ], - berachain: [ - { - contract: "0x5dd3d67af1b31823dd3eee8548bdc070640c14b8", - contractABI: abi_v2, - }, - ], - bsc: [ - { - contract: "0x0c89c0407775dd89b12918b9c0aa42bf96518820", - contractABI: abi_v2, - blacklist: [ - "0x6c7c87d9868b1db5a0f62d867baa90e0adfa7cfd", //TNNS - "0xf2619476bd0ca0eda08744029c66b62a904c2bf8", //JRIT - "0x854b4c305554c5fa72353e31b8480c0e5128a152", //WEL - "0x070a08beef8d36734dd67a491202ff35a6a16d97", // SLP - "0x9b83f4b893cf061d8c14471aa97ef24c352f5abe", // ubec-lp - ], - }, - { - contract: "0x7536592bb74b5d62eb82e8b93b17eed4eed9a85c", - contractABI: abi_v2, - }, - ], -}; diff --git a/projects/team-finance/index.js b/projects/team-finance/index.js deleted file mode 100644 index 0a351c24994..00000000000 --- a/projects/team-finance/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = require("./apiCache") - diff --git a/projects/team-finance/lockcontract.abi.json b/projects/team-finance/lockcontract.abi.json deleted file mode 100644 index 21b439f93e7..00000000000 --- a/projects/team-finance/lockcontract.abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "depositId": "uint256:depositId", - "getDepositDetails": "function getDepositDetails(uint256 _id) view returns (address _tokenAddress, address _withdrawalAddress, uint256 _tokenAmount, uint256 _unlockTime, bool _withdrawn)" -} \ No newline at end of file diff --git a/projects/team-finance/lockcontract_v3.abi.json b/projects/team-finance/lockcontract_v3.abi.json deleted file mode 100644 index 6faeb35b71f..00000000000 --- a/projects/team-finance/lockcontract_v3.abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "depositId": "uint256:depositId", - "getDepositDetails": "function getDepositDetails(uint256 _id) view returns (address _tokenAddress, address _withdrawalAddress, uint256 _tokenAmount, uint256 _unlockTime, bool _withdrawn, uint256 _tokenId, bool _isNFT)" -} \ No newline at end of file diff --git a/projects/tearex/index.js b/projects/tearex/index.js deleted file mode 100644 index b300f0d8616..00000000000 --- a/projects/tearex/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const config = { - sei: [ - // alpha USDC.n - "0xBd95774b89EE0874df6B1F23884BFdf8C9ec696F", - "0xa4A956b2515336b754eE20ed58D3b6D67D44807A", - "0xAc009609BAcEFc9A25897581A9c4a028f79207f1", - "0x344A61a393C4c61d767C0c2f1fdFb8a09fAAA817", - // degen USDC - "0x332a22650f1cA3F6239eFA4d41c673Ca3A8E5a0f", - "0x8a3FA2B3BA32B29d8Ec1f301c8Ce3B06Be71baFa", - "0x24cbB32AD057849Aa055FCF6B5dF7238318889e4", - "0xE4445293C5A4a159738a0efBD062242f3C726275", - "0xea82a5508A016239B523dE82c58278b749Bd557c", - // bluechip USDC - "0x09148a9516293669AE636e96d51F7489c40237ED", - "0x1111Be4D3A0c8b435372F63e027F8cda66127432", - "0x6b118384c18806768BDBd9EA5d572e0D7CC73a78", - "0x41ADbD162EC11A217889CE81b1689AD4a04E8AB8", - ] -} - -Object.keys(config).forEach(chain => { - const tokenVaults = config[chain] - - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'function underlyingAsset() view returns (address)', calls: tokenVaults }) - const supply = await api.multiCall ({ abi: 'function totalSupply() view returns (uint256)', calls: tokenVaults }) - const rate = await api.multiCall ({ abi: 'function getConversionRates() view returns (uint256, uint256)', calls: tokenVaults }) - const balances = supply.map((s, i) => { - const r = rate[i][0]; - return BigInt(s) * BigInt(r) / (10n ** 36n) - }); - api.addTokens(tokens, balances) - } - } -}) diff --git a/projects/tectonic/abi.json b/projects/tectonic/abi.json deleted file mode 100644 index 264a1f89194..00000000000 --- a/projects/tectonic/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalBorrows": "uint256:totalBorrows", - "underlying": "address:underlying" -} \ No newline at end of file diff --git a/projects/tectonic/index.js b/projects/tectonic/index.js deleted file mode 100644 index e2d08f0e55e..00000000000 --- a/projects/tectonic/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { mergeExports } = require('../helper/utils') -const { compoundExports2 } = require('../helper/compound') - -module.exports = mergeExports([ - { cronos: compoundExports2({ comptroller: '0xb3831584acb95ed9ccb0c11f677b5ad01deaeec0', cether: '0xeadf7c01da7e93fdb5f16b0aa9ee85f978e89e95', }),}, - { cronos: compoundExports2({ comptroller: '0x8312A8d5d1deC499D00eb28e1a2723b13aA53C1e', cether: '0xf4ff4b8ee660d4276eda17e79094a7cc519e9606', }),}, - { cronos: compoundExports2({ comptroller: '0x7E0067CEf1e7558daFbaB3B1F8F6Fa75Ff64725f', cether: '0x972173afb7eefb80a0815831b318a643442ad0c1', }),}, -]); diff --git a/projects/teddy/index.js b/projects/teddy/index.js deleted file mode 100644 index 7cf2042a198..00000000000 --- a/projects/teddy/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const {getLiquityTvl} = require('../helper/liquity') - -const stakingContract = "0xb4387D93B5A9392f64963cd44389e7D9D2E1053c"; -const TEDDY = "0x094bd7b2d99711a1486fb94d4395801c6d0fddcc"; - -const stakingPool2Contract = "0x9717Ff7406Be065EA177bA9ab1bE704060Af8370"; -const WAVAX_TSD_PGL = "0x67E395B6ACd948931eeE8F52C7c1Fe537E7f1a7a"; - -const TROVE_MANAGER_ADDRESS = "0xd22b04395705144Fd12AfFD854248427A2776194"; - -module.exports = { - avax: { - staking: sdk.util.sumChainTvls([ - staking(stakingContract, TEDDY), - //staking(STABILITY_POOL_ADDRESS, TSD), - ]), - pool2: pool2(stakingPool2Contract, WAVAX_TSD_PGL), - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS), - }, - methodology: - "Get tokens on stability pool and troves, TSD has been replaced by LUSD", -}; diff --git a/projects/teddyswap/index.js b/projects/teddyswap/index.js deleted file mode 100644 index 20ee910c62c..00000000000 --- a/projects/teddyswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getAdaInAddress } = require("../helper/chain/cardano"); - -const POOL_VALIDATOR_HASH = 'script19zaaraawhvaut8snt9lnxwhwlw844duwm2tzmcwkqkecs3njjz6'; - -async function cardanoTVL() { - return { - cardano: await getAdaInAddress(POOL_VALIDATOR_HASH) * 2 - }; -} - -module.exports = { - timetravel: false, - cardano: { - tvl: cardanoTVL - } -} \ No newline at end of file diff --git a/projects/tegisto/index.js b/projects/tegisto/index.js deleted file mode 100644 index edf799194a0..00000000000 --- a/projects/tegisto/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking") -const { getUniTVL } = require("../helper/unknownTokens") -const sdk = require('@defillama/sdk') - -const blacklistedTokens = ['0xbd10f04b8b5027761fcaad42421ad5d0787211ee'] -module.exports = { - kava: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: '0x07fA706528c0bb721327798B5686B620BCcf5b99', useDefaultCoreAssets: true, blacklistedTokens, }), - getUniTVL({ factory: '0xfdF832fe60a5145909e7b24Cff225830c1850917', useDefaultCoreAssets: true, blacklistedTokens, }), - ]), - staking: staking('0x744Dd9f79b80437a9e5eb0292128045F51C48b6d', '0x87F1E00d6bcD3712031e5edD26DFcdB0FEd35D20', undefined, 'tegisto', 18), - }, - celo: { - tvl: getUniTVL({ factory: '0x1FA136Ba715889B691305a687A0fbD82e6287A67', useDefaultCoreAssets: true, }), - } -} \ No newline at end of file diff --git a/projects/tegro/index.js b/projects/tegro/index.js deleted file mode 100644 index d2d622229d6..00000000000 --- a/projects/tegro/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require('../helper/http') -const { getConfig } = require('../helper/cache') -const { getTonBalance } = require('../helper/chain/ton') -const sdk = require('@defillama/sdk') -const nullAddress = ADDRESSES.null - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - ton: { - tvl: async (api) => { - const pools = await getConfig('tegro-fi', 'https://api.tegro.finance/v1/pairs') - let tonPools = pools.filter(i => !i.base.address ).map(i => i.address) - sdk.log(pools.length, tonPools.length) - const tonBalances = await Promise.all(tonPools.map(getTonBalance)) - tonBalances.forEach(i => api.add(nullAddress, i * 2)) - } - } -} diff --git a/projects/telcoin/index.js b/projects/telcoin/index.js deleted file mode 100644 index bb224124f11..00000000000 --- a/projects/telcoin/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function pool2(api) { - return sumTokens2({ - api, resolveLP: true, tokensAndOwners: [ - ["0xd208168d2a512240eb82582205d94a0710bce4e7", "0xb967c3Fa919BB0a8f51cF40C60488b6EC9e8708B"], // Balancer (TEL/WMATIC/USDC) - ["0x39cd55ff7e7d7c66d7d2736f1d5d4791cdab895b", "0x62eCa4D9Dbeac613ad86946b51A6225A1a0d14f4"], // Balancer (TEL/AAVE/USDC) - ["0x5c6ee304399dbdb9c8ef030ab642b10820db8f56", "0x1e72c558a564B23b302bFd96c51dE41267bA26a9"], // Balancer (TEL/USDC 80:20) - ["0xf099b7c3bd5a221aa34cb83004a50d66b0189ad0", "0x20Ed193cA4E36b2beBcad150089Fe3D99298d425"], // Balancer (TEL/WBTC/USDC) - ["0xd5d7bc115b32ad1449c6d0083e43c87be95f2809", "0xefC6d17276C640169b352B37226949f5Eab35384"], // Balancer (TEL/WETH/USDC) - ["0xa5cabfc725dfa129f618d527e93702d10412f039", "0xbdb6a789d91815564981db3c7acb015e2577bc60"], - ["0xe88e24f49338f974b528ace10350ac4576c5c8a1", "0x51cfb74628c7484c9128d979650da2512947e532"], - ["0xfc2fc983a411c4b1e238f7eb949308cf0218c750", "0x09315f2577c2bccee0119790f706eb70dd67c2df"], - ["0x9b5c71936670e9f1f36e63f03384de7e06e60d2a", "0xdef7f3f6a940a9d2a01814b74b3e545dd364a02f"], //Quickswap TEL/WMATIC round 1 - ["0x4917bc6b8e705ad462ef525937e7eb7c6c87c356", "0x8e8def06290d25b999a1e5d90710e09c0b2b5280"], //Quickswap TEL/AAVE round 1 - ["0xaddc9c73f3cbad4e647eaff691715898825ac20c", "0x5c120f6e17130c38733b675125d74e4efc5b4425"], //Quickswap TEL/WBTC round 1 - ["0xe88e24f49338f974b528ace10350ac4576c5c8a1", "0xF8bdC7bC282847EeB5d4291ec79172B48526e9dE"], // Quickswap (QUICK/TEL) round 2 - ["0xfc2fc983a411c4b1e238f7eb949308cf0218c750", "0xEda437364DCF8AB00f07b49bCc213CDf356b3962"], // Quickswap (WETH/TEL) round 2 - ["0xa5cabfc725dfa129f618d527e93702d10412f039", "0x84B3c86D660D680847258Fd20aAA1274Cc35EAcd"], // Quickswap(USDC/TEL) round 2 - ] - }) -} - -async function tvl() { - return {} -} - -module.exports = { - polygon: { - pool2, tvl, - }, - -} \ No newline at end of file diff --git a/projects/teleswap/index.js b/projects/teleswap/index.js deleted file mode 100644 index f4d272436a9..00000000000 --- a/projects/teleswap/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const sdk = require('@defillama/sdk'); -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/sumTokens.js'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') -const { sumTokensExport: sumBRC20TokensExport } = require('../helper/chain/brc20.js'); - -const TST = "0x0828096494ad6252F0F853abFC5b6ec9dfe9fDAd"; -const TST_DELEGATION = "0x93AD6C8B3a273E0B4aeeBd6CF03422C885217D3B"; - - -module.exports = { - methodology: 'TVL is the sum of all BTC locked by users, collateral locked by Lockers, and TST delegated to Lockers.', - bitcoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.teleswap }), - sumBRC20TokensExport({ owners: bitcoinAddressBook.teleswap }), - ]) - }, - ethereum: { staking: sumTokensExport({ owners: [TST_DELEGATION], tokens: [TST] }) }, -} - -const config = { - polygon: { owners: ['0xf5D6D369A7F4147F720AEAdd4C4f903aE8046166'], tokens: [ADDRESSES.null] }, - bsc: { owners: ['0x84F74e97ebab432CeE185d601290cE0A483987A5'], tokens: [ADDRESSES.null] }, - bsquared: { owners: ['0x20752a82fe75996a582Ae2be1b7C3D4866C5b733'], tokens: [ADDRESSES.bsquared.WBTC] }, - bob: { owners: ['0xd720996f0D8fFD9154c8271D2991f54E5d93D2A9'], tokens: [ADDRESSES.bob.WBTC] }, -} - -Object.keys(config).forEach(chain => { - const { owners, tokens, } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens }) - } -}) \ No newline at end of file diff --git a/projects/teller/index.js b/projects/teller/index.js deleted file mode 100644 index 5f38b2f48ad..00000000000 --- a/projects/teller/index.js +++ /dev/null @@ -1,101 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -// https://docs.teller.org/teller-v2-protocol/l96ARgEDQcTgx4muwINt/resources/deployed-contracts -const config = { - ethereum: { factory: '0x2551a099129ad9b0b1fec16f34d9cb73c237be8b', fromBlock: 16472616, tellerV2: '0x00182FdB0B880eE24D428e3Cc39383717677C37e', }, - polygon: { factory: '0x76888a882a4ff57455b5e74b791dd19df3ba51bb', fromBlock: 38446227, tellerV2: '0xD3D79A066F2cD471841C047D372F218252Dbf8Ed', }, - arbitrum: { factory: '0x71B04a8569914bCb99D5F95644CF6b089c826024', fromBlock: 108629315, tellerV2: '0x5cfD3aeD08a444Be32839bD911Ebecd688861164', }, - base: { factory: '0x71B04a8569914bCb99D5F95644CF6b089c826024', fromBlock: 2935376, tellerV2: '0x5cfD3aeD08a444Be32839bD911Ebecd688861164', }, - mantle: { factory: '0x6eB9b34913Bd96CA2695519eD0F8B8752d43FD2b', fromBlock: 3480394, tellerV2: '0xe6774DAAEdf6e95b222CD3dE09456ec0a46672C4', }, -} - -const blacklistedTokens = ['0x8f9bbbb0282699921372a134b63799a48c7d17fc', '0xd4416b13d2b3a9abae7acd5d6c2bbdbe25686401'] - -const data = {} - -async function getData(api) { - const key = `${api.chain}-${api.block}` - if (!data[key]) data[key] = _getData() - return data[key] - - async function _getData() { - const chain = api.chain - const { factory, fromBlock, tellerV2 } = config[chain] - const collateralDepositedLogs = await getLogs({ - api, - target: factory, - topics: ['0x1a7f128dbc559fb97831b7681dee32957c2917e95d1c5070da20fb89e91f9d7a'], - eventAbi: 'event CollateralDeposited (uint256 _bidId, uint8 _type, address _collateralAddress, uint256 _amount, uint256 _tokenId)', - onlyArgs: true, - extraKey: 'CollateralDeposited', - fromBlock, - }) - const escrowLogs = await getLogs({ - api, - target: factory, - topics: ['0xc201bfb915e3eed80ff17e013f3d88db1c51ac7fc12728fce91a2afc659128ef'], - eventAbi: 'event CollateralEscrowDeployed (uint256 _bidId, address _collateralEscrow)', - onlyArgs: true, - extraKey: 'CollateralEscrowDeployed', - fromBlock, - }) - const repaidLogs = await getLogs({ - api, - target: tellerV2, - topic: 'LoanRepaid(uint256)', - eventAbi: 'event LoanRepaid(uint256 indexed bidId)', - extraKey: 'LoanRepaid', - onlyArgs: true, - fromBlock, - }) - const liquidatedLogs = await getLogs({ - api, - target: tellerV2, - topic: 'LoanLiquidated(uint256,address)', - eventAbi: 'event LoanLiquidated(uint256 indexed bidId, address indexed liquidator)', - onlyArgs: true, - extraKey: 'LoanLiquidated', - fromBlock, - }) - let closedBidSet = new Set() - repaidLogs.forEach(i => closedBidSet.add(Number(i.bidId))) - liquidatedLogs.forEach(i => closedBidSet.add(Number(i.bidId))) - const escrowMap = {} - escrowLogs.forEach(i => { - const bidId = Number(i._bidId) - if (closedBidSet.has(bidId)) return; - if (escrowMap[bidId]) throw new Error('Escrow address already found for ' + bidId) - escrowMap[bidId] = { - owner: i._collateralEscrow, - tokens: [], - } - }) - collateralDepositedLogs.forEach(i => { - const bidId = Number(i._bidId) - if (closedBidSet.has(bidId)) return; - if (!escrowMap[bidId]) throw new Error('Escrow address missing for ' + bidId) - escrowMap[bidId].tokens.push(i._collateralAddress) - }) - return escrowMap - } -} - -async function tvl(api) { - const data = await getData(api) - return sumTokens2({ api, ownerTokens: Object.values(data).map(i => [i.tokens, i.owner]), blacklistedTokens, permitFailure: true, }) -} - -async function borrowed(api) { - const data = await getData(api) - const activeLoans = Object.keys(data) - const { tellerV2 } = config[api.chain] - const loanData = await api.multiCall({ abi: "function bids(uint256) view returns (address borrower, address receiver, address lender, uint256 marketplaceId, bytes32 _metadataURI, tuple(address lendingToken, uint256 principal, tuple(uint256 principal, uint256 interest) totalRepaid, uint32 timestamp, uint32 acceptedTimestamp, uint32 lastRepaidTimestamp, uint32 loanDuration) loanDetails, tuple(uint256 paymentCycleAmount, uint32 paymentCycle, uint16 APR) terms, uint8 state, uint8 paymentType)", calls: activeLoans, target: tellerV2 }) - loanData.forEach(i => { - api.add(i.loanDetails.lendingToken, i.loanDetails.principal - i.loanDetails.totalRepaid.principal) - }) -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed, } -}) \ No newline at end of file diff --git a/projects/telos-swap/index.js b/projects/telos-swap/index.js deleted file mode 100644 index 7d95cea018b..00000000000 --- a/projects/telos-swap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { post } = require('../helper/http') -async function tvl(){ - const data = await post("https://mainnet.telos.net/v1/chain/get_table_rows", { - "json":true,"code":"data.tbn","scope":"data.tbn","table":"tradedata","table_key":"","lower_bound":"","upper_bound":"","index_position":1,"key_type":"","limit":100,"reverse":false,"show_payer":false - }) - let tvlTlos = 0; - data.rows.forEach(row=>{ - row.liquidity_depth.forEach(token=>{ - if(token.key === "TLOS"){ - tvlTlos += Number(token.value.split(' ')[0])*2 - } - }) - }) - return { - telos: tvlTlos - } -} - -module.exports={ - timetravel: false, - methodology: 'TVL is the liquidity on the AMM.', - telos: { tvl } -} diff --git a/projects/telosRex.js b/projects/telosRex.js deleted file mode 100644 index 2ec89fc4ba4..00000000000 --- a/projects/telosRex.js +++ /dev/null @@ -1,15 +0,0 @@ -const { get } = require('./helper/http') - -async function tvl() { - const tvlTlos = (await get( - "https://telos.caleos.io/v2/history/get_deltas?code=eosio.token&scope=eosio.rex&table=accounts", - )).deltas.map(d => d.data.amount); - - return { - telos: tvlTlos[0], - }; -} - -module.exports = { - telos: { tvl }, -}; diff --git a/projects/telosc/index.js b/projects/telosc/index.js deleted file mode 100644 index 76923874b91..00000000000 --- a/projects/telosc/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by TelosC.', - blockchains: { - plasma: { - eulerVaultOwners: [ - '0x7054b25D47b9342dA3517AD41A4BD083De8D3f70', - '0x7d07BFdd01422D7b655B333157eB551B9712dCd8', - ], - }, - ethereum: { - eulerVaultOwners: [ - '0x7054b25D47b9342dA3517AD41A4BD083De8D3f70', - '0x7d07BFdd01422D7b655B333157eB551B9712dCd8', - ], - } - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/tempest-finance/chains.js b/projects/tempest-finance/chains.js deleted file mode 100644 index 4d9f171e4d7..00000000000 --- a/projects/tempest-finance/chains.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - ethereum: 1, - optimism: 10, - bsc: 56, - manta: 169, - canto: 7700, - base: 8453, - arbitrum: 42161, - scroll: 534352, - swellchain: 1923, -} \ No newline at end of file diff --git a/projects/tempest-finance/index.js b/projects/tempest-finance/index.js deleted file mode 100644 index 330e8fb5c7c..00000000000 --- a/projects/tempest-finance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const chains = require("./chains"); -const axios = require("axios"); - -async function tvl(api) { - const response = await axios.get(`https://protocol-service-api.tempestfinance.xyz/api/v1/vaults?chainId=${chains[api.chain]}`) - const vaults = response.data.data.vaults; - - const tokens = vaults.map(vault => vault.mainAsset); - const balances = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults.map(vault => vault.address) }); - - api.addTokens(tokens, balances) - return sumTokens2({ api }) -} - -Object.keys(chains).forEach(chain => { - module.exports[chain] = { - tvl - } -}) diff --git a/projects/tempest/index.js b/projects/tempest/index.js deleted file mode 100644 index 29480fcbfdb..00000000000 --- a/projects/tempest/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - optimism: compoundExports2({ - comptroller: '0x505E91a70aA5036677A71b2Af8D1881B85181EAE', - cether: '0x736440033C4C1C8A21e0B238989FE24bEC502014', - }), - base: compoundExports2({ - comptroller: '0x70Ee857E659806D9c19431b0dF96D813Bc98321b', - cether: '0x6283829589A6A02981B425fd2e86D22F012191aC', - }) -}; - -module.exports.deadFrom='2023-09-08', -module.exports.optimism.borrowed = () => ({}) // bad debt -module.exports.base.borrowed = () => ({}) // bad debt diff --git a/projects/templar/api.js b/projects/templar/api.js deleted file mode 100644 index cd075bf1b66..00000000000 --- a/projects/templar/api.js +++ /dev/null @@ -1,18 +0,0 @@ -const index = require('./index') - -module.exports = { - bsc: { - tvl: index.bsc.tvl, - staking: index.bsc.staking, - }, - /* - moonriver: { - tvl: () => 0, - staking: index.moonriver.staking, - }, - harmony: { - tvl: () => 0, - staking: index.harmony.staking, - }, - */ -} \ No newline at end of file diff --git a/projects/templar/index.js b/projects/templar/index.js deleted file mode 100644 index 31a8172a02e..00000000000 --- a/projects/templar/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const bscStaking = "0xa1f61Ca61fe8655d2a204B518f6De964145a9324"; -const bscStakingV2 = "0xffC7B93b53BC5F4732b414295E989684702D0eb5"; - -const bscTokens = { - TEM: "0x19e6BfC1A6e4B042Fb20531244D47E252445df01", -}; - -module.exports = { - bsc: { - staking: sumTokensExport({ - owners: [bscStaking, bscStakingV2], - tokens: [bscTokens.TEM], - }), - tvl: () => 0, - }, - ethereum: { - tvl: () => 0, - staking: () => 0, - }, - moonriver: { - tvl: () => 0, - staking: () => 0, - }, - harmony: { - tvl: () => 0, - staking: () => 0, - }, -}; \ No newline at end of file diff --git a/projects/templarfi/index.js b/projects/templarfi/index.js deleted file mode 100644 index b559352fadf..00000000000 --- a/projects/templarfi/index.js +++ /dev/null @@ -1,261 +0,0 @@ -const { default: BigNumber } = require('bignumber.js') -const { call, sumSingleBalance } = require('../helper/chain/near') - -const TEMPLAR_REGISTRY_CONTRACTS = [ - 'v1.tmplr.near', -] - -const MAX_RETRY_ATTEMPTS = 3 -const RETRY_DELAY_MS = 1000 -const CALL_TIMEOUT_MS = 30000 - -const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)) - -async function withRetry(fn, maxAttempts = MAX_RETRY_ATTEMPTS, delayMs = RETRY_DELAY_MS) { - let lastError - for (let attempt = 1; attempt <= maxAttempts; attempt++) { - try { - return await fn() - } catch (error) { - lastError = error - if (attempt === maxAttempts) throw lastError - console.log(`Attempt ${attempt} failed, retrying in ${delayMs}ms: ${error.message}`) - await sleep(delayMs) - delayMs *= 1.5 - } - } -} - -async function safeCall(contractId, method, args = {}) { - if (!contractId || typeof contractId !== 'string') throw new Error(`Invalid contract ID: ${contractId}`) - if (!method || typeof method !== 'string') throw new Error(`Invalid method name: ${method}`) - - return withRetry(async () => { - const timeoutPromise = new Promise((_, reject) => { - setTimeout(() => reject(new Error(`Call timeout after ${CALL_TIMEOUT_MS}ms`)), CALL_TIMEOUT_MS) - }) - const callPromise = call(contractId, method, args) - return Promise.race([callPromise, timeoutPromise]) - }) -} - -function extractTokenAddress(assetConfig, assetType) { - if (!assetConfig || typeof assetConfig !== 'object') { - throw new Error(`Invalid ${assetType} asset config: not an object`) - } - - if (assetConfig.Nep141) { - if (typeof assetConfig.Nep141 !== 'string' || assetConfig.Nep141.length === 0) { - throw new Error(`Invalid NEP-141 address for ${assetType} asset`) - } - return assetConfig.Nep141 - } - - if (assetConfig.Nep245?.token_id) { - const tokenId = assetConfig.Nep245.token_id - if (typeof tokenId !== 'string' || tokenId.length === 0) { - throw new Error(`Invalid NEP-245 token ID for ${assetType} asset`) - } - const parts = tokenId.split(':') - if (parts.length !== 2) { - throw new Error(`Invalid NEP-245 token ID format for ${assetType} asset: ${tokenId}`) - } - if (parts[0] === 'nep141') { - if (parts[1].length === 0) { - throw new Error(`Empty NEP-141 address in NEP-245 token for ${assetType} asset`) - } - return parts[1] - } - throw new Error(`Unsupported NEP-245 token type for ${assetType} asset: ${parts[0]}`) - } - - throw new Error(`Unsupported ${assetType} asset format: missing both Nep141 and valid Nep245`) -} - -function validateConfiguration(configuration) { - if (!configuration || typeof configuration !== 'object') throw new Error('Configuration is not an object') - if (!configuration.borrow_asset) throw new Error('Missing borrow_asset in configuration') - if (!configuration.collateral_asset) throw new Error('Missing collateral_asset in configuration') -} - -function coerceAndValidateSnapshot(snapshot) { - if (!snapshot || typeof snapshot !== 'object') throw new Error('Snapshot is not an object') - - const requiredFields = [ - 'borrow_asset_deposited_active', - 'borrow_asset_deposited_incoming', - 'borrow_asset_borrowed', - 'collateral_asset_deposited', - ] - - for (const field of requiredFields) { - let v = snapshot[field] - if (v === undefined || v === null) v = '0' - if (typeof v === 'number') v = String(Math.trunc(v)) - if (typeof v !== 'string' || !/^\d+$/.test(v)) { - throw new Error(`Invalid snapshot field ${field}: expected uint string, got ${JSON.stringify(snapshot[field])}`) - } - snapshot[field] = v - } - - return snapshot -} - -async function fetchAllDeployments(contracts) { - const allDeployments = [] - const errors = [] - const successfulContracts = [] - - const contractResults = await Promise.allSettled( - contracts.map(async (contract) => { - if (!contract || typeof contract !== 'string') { - throw new Error(`Invalid contract address: ${contract}`) - } - const deployments = await fetchDeploymentsFromContract(contract) - return { contract, deployments } - }) - ) - - for (const result of contractResults) { - const index = contractResults.indexOf(result) - const contract = contracts[index] - - if (result.status === 'fulfilled') { - const { deployments } = result.value - if (deployments.length > 0) { - console.log(`Contract ${contract}: found ${deployments.length} deployments`) - allDeployments.push(...deployments) - successfulContracts.push(contract) - } else { - console.log(`Contract ${contract}: no deployments found`) - } - } else { - const errorMsg = result.reason?.message || result.reason - console.log(`Contract ${contract} failed: ${errorMsg}`) - errors.push(`${contract}: ${errorMsg}`) - } - } - - const uniqueDeployments = [...new Set(allDeployments)] - if (uniqueDeployments.length !== allDeployments.length) { - console.log(`Removed ${allDeployments.length - uniqueDeployments.length} duplicate deployments`) - } - - console.log(`Total deployments from ${successfulContracts.length} contracts: ${uniqueDeployments.length}`) - - if (successfulContracts.length > 0) { - console.log(`Successfully fetched deployments from contracts: ${successfulContracts.join(', ')}`) - return uniqueDeployments - } - - throw new Error(`All contracts failed. Errors: ${errors.join('; ')}`) -} - -async function fetchDeploymentsFromContract(registryContract) { - const deployments = [] - let offset = 0 - const limit = 100 - let hasMore = true - - while (hasMore) { - const batch = await safeCall(registryContract, 'list_deployments', { offset, count: limit }) - if (!batch || !Array.isArray(batch) || batch.length === 0) { - hasMore = false - break - } - deployments.push(...batch) - hasMore = batch.length === limit - offset += limit - } - - return deployments -} - -async function processMarket(marketContract) { - const [snapshotRaw, configurationRaw] = await Promise.all([ - safeCall(marketContract, 'get_current_snapshot', {}), - safeCall(marketContract, 'get_configuration', {}), - ]) - - const snapshot = coerceAndValidateSnapshot(snapshotRaw) - const configuration = configurationRaw - - validateConfiguration(configuration) - - if (!configuration?.borrow_asset || !configuration?.collateral_asset) { - throw new Error('Invalid configuration: missing borrow_asset or collateral_asset') - } - - const borrowAssetToken = extractTokenAddress(configuration.borrow_asset, 'borrow') - const collateralAssetToken = extractTokenAddress(configuration.collateral_asset, 'collateral') - - const borrow_asset_deposited_active = BigNumber(snapshot.borrow_asset_deposited_active) - const borrow_asset_deposited_incoming = BigNumber(snapshot.borrow_asset_deposited_incoming) - const collateral_asset_deposited = BigNumber(snapshot.collateral_asset_deposited) - const borrow_asset_borrowed = BigNumber(snapshot.borrow_asset_borrowed) - - const availableLiquidity = borrow_asset_deposited_active - .plus(borrow_asset_deposited_incoming) - .minus(borrow_asset_borrowed) - - return { - borrowAssetToken, - collateralAssetToken, - availableLiquidity, - totalBorrowed: borrow_asset_borrowed, - totalCollateral: collateral_asset_deposited, - } -} - -async function tvl() { - const balances = {} - - const deployments = await fetchAllDeployments(TEMPLAR_REGISTRY_CONTRACTS) - if (deployments.length === 0) { - console.log('No Templar deployments found for TVL calculation') - return balances - } - - const results = await Promise.allSettled(deployments.map(processMarket)) - - results.forEach((result, index) => { - if (result.status === 'fulfilled') { - const { borrowAssetToken, collateralAssetToken, availableLiquidity, totalCollateral } = result.value - sumSingleBalance(balances, borrowAssetToken, availableLiquidity.toFixed()) - sumSingleBalance(balances, collateralAssetToken, totalCollateral.toFixed()) - } else { - throw new Error(`Market ${deployments[index]} failed: ${result.reason?.message || result.reason}`) - } - }) - - return balances -} - -async function borrowed() { - const balances = {} - - const deployments = await fetchAllDeployments(TEMPLAR_REGISTRY_CONTRACTS) - if (deployments.length === 0) { - console.log('No Templar deployments found for borrowed calculation') - return balances - } - - const results = await Promise.allSettled(deployments.map(processMarket)) - - results.forEach((result, index) => { - if (result.status === 'fulfilled') { - const { borrowAssetToken, totalBorrowed } = result.value - sumSingleBalance(balances, borrowAssetToken, totalBorrowed.toFixed()) - } else { - throw new Error(`Market ${deployments[index]} failed: ${result.reason?.message || result.reason}`) - } - }) - - return balances -} - -module.exports = { - methodology: 'TVL is calculated by summing the net borrow asset liquidity (deposits minus outstanding loans) and full collateral deposits for each market deployment.', - start: 1754902109, - near: { tvl, borrowed }, -} diff --git a/projects/templedao-trade/index.js b/projects/templedao-trade/index.js deleted file mode 100644 index a4d8f7145a1..00000000000 --- a/projects/templedao-trade/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: '0x98257C876ACe5009e7B97843F8c71b3AE795c71E', tokens: [ADDRESSES.ethereum.FRAX], }), - - } -}; \ No newline at end of file diff --git a/projects/templedao/abi.json b/projects/templedao/abi.json deleted file mode 100644 index 1d62235d643..00000000000 --- a/projects/templedao/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "stakingToken": "address:stakingToken", - "operator": "address:operator", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)", - "totalBalanceOf": "function totalBalanceOf(address _account) view returns (uint256)", - "curveToken": "address:curveToken", - "balances": "function balances(address) view returns (uint112 locked, uint32 nextUnlockIndex)" -} \ No newline at end of file diff --git a/projects/templedao/index.js b/projects/templedao/index.js deleted file mode 100644 index 86150dfd65d..00000000000 --- a/projects/templedao/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { sumTokens, sumTokens2, } = require("../helper/unwrapLPs") -const { createIncrementArray } = require("../helper/utils") -const sdk = require('@defillama/sdk'); -const abi = require("./abi.json"); -const poolInfos = {} - -const templeStakingContract = "0xEc3C1aBDAb15EbC069ec5e320EaACf716eDfC011"; -const temepleGnosisAddress = "0xb1bd5762faf7d6f86f965a3ff324bd81bb746d00"; -const templePool2Contract = '0x10460d02226d6ef7B2419aE150E6377BdbB7Ef16' -const TEMPLE_FRAX_LP = '0x6021444f1706f15465bee85463bcc7d7cc17fc03' -const TEMPLE = "0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7"; -const auraLocker = '0x3Fa73f1E5d8A792C80F426fc8F84FBF7Ce9bBCAC'; - -const templeTreasuryContract = "0x5c8898f8e0f9468d4a677887bc03ee2659321012"; -const FRAX = ADDRESSES.ethereum.FRAX; -const FXS = ADDRESSES.ethereum.FXS; -const CVX_FXS = ADDRESSES.ethereum.cvxFXS; -const AURA = '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF' -const TEMPLE_DENDEND1 = '0x8A5058100E60e8F7C42305eb505B12785bbA3BcA'; -const TEMPLE_DENDEND2 = '0xb0D978C8Be39C119922B99f483cD8C4092f0EA56'; -const FRAX_3CRV_CVX_POOL = '0xB900EF131301B307dB5eFcbed9DBb50A3e209B2e'; -const FRAX_USDC_CVX_POOL = '0x963f487796d54d2f27ba6f3fbe91154ca103b199'; -const FRAX_USDC_FRAX4CVX_PROXY = '0xb9CcDA67dF9606615F43C1c9AAEbB539A3635e10'; -const chain = 'ethereum' - -const tokensAndOwners = [ - [FRAX, TEMPLE_DENDEND1], - [FRAX, TEMPLE_DENDEND2], - [FXS, templeTreasuryContract], - [FXS, FRAX_USDC_FRAX4CVX_PROXY], - [CVX_FXS, templeTreasuryContract], -] - -async function treasuryTvl(ts, block) { - const balances = {} - await sumTokens(balances, tokensAndOwners, block, chain, undefined); - await getCvxPoolValue({ block, balances, pool: FRAX_3CRV_CVX_POOL, owner: templeTreasuryContract }); - await getCvxProxyVaultValue({block, balances, pool: FRAX_USDC_CVX_POOL, vault: FRAX_USDC_FRAX4CVX_PROXY}); - - const auraLockerDetails = await sdk.api.abi.call({target: auraLocker, params: [temepleGnosisAddress], abi: abi.balances, block, chain}); - const lockedAuraBalance = auraLockerDetails.output.locked; - sdk.util.sumSingleBalance(balances, AURA, lockedAuraBalance); - await sumTokens2({ owner: temepleGnosisAddress, balances, block, resolveUniV3: true, }) - - return sumTokens2({ balances, chain, owner: temepleGnosisAddress, tokens: [ - '0x3835a58ca93cdb5f912519ad366826ac9a752510', - '0xfb6b1c1a1ea5618b3cfc20f81a11a97e930fa46b', - '0x173063a30e095313eee39411f07e95a8a806014e', - ]}) -} - -async function getCvxPoolValue({ block, owner, pool, balances, chain }) { - const poolBalance = (await sdk.api.erc20.balanceOf({ target: pool, owner, block, chain, })).output - const stakingToken = (await sdk.api.abi.call({ target: pool, block, chain, abi: abi.stakingToken })).output - const operator = (await sdk.api.abi.call({ target: stakingToken, block, chain, abi: abi.operator })).output - await setPoolInfo(operator) - const ourPoolInfo = poolInfos[operator].find(i => JSON.stringify(i).indexOf(stakingToken) > -1) - const crvToken = ourPoolInfo.lptoken - balances[crvToken] = poolBalance - async function setPoolInfo(operator) { - if (poolInfos[operator]) return; - const poolLength = +(await sdk.api.abi.call({ target: operator, block, chain, abi: abi.poolLength })).output - const poolInfoArr = createIncrementArray(poolLength) - poolInfos[operator] = (await sdk.api.abi.multiCall({ target: operator, block, chain, abi: abi.poolInfo, calls: poolInfoArr.map(i => ({ params: [i] })) })).output.map(i => i.output) - } -} - -async function getCvxProxyVaultValue({block, balances, pool, vault}) { - const stakingToken = (await sdk.api.abi.call({ target: pool, block, chain, abi: abi.stakingToken })).output - const unwrappedToken = (await sdk.api.abi.call({ target: stakingToken, block, chain, abi: abi.curveToken })).output - const lpTokenBalance = (await sdk.api.abi.call({ target: stakingToken, params: [vault], block, chain, abi: abi.totalBalanceOf })).output - sdk.util.sumSingleBalance(balances, unwrappedToken, lpTokenBalance); -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - ethereum: { - staking: staking(templeStakingContract, TEMPLE), - pool2: pool2(templePool2Contract, TEMPLE_FRAX_LP), - tvl: treasuryTvl, - }, - methodology: - "Counts TVL through TempleTreasury contract, locked LP in Convex and Aura", - // hallmarks:[ - // [1665457200, "Exploit $2M"], - // ], -}; diff --git a/projects/tempodao/index.js b/projects/tempodao/index.js deleted file mode 100644 index 97279e02c22..00000000000 --- a/projects/tempodao/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0xd069c8c4aD8CCE7076BdD1dca8AA9199dC980Ea8"; -module.exports = ohmTvl(treasuryAddress, [ -//MIM - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], -//JOE LP - ["0x720dd9292b3d0dd78c9afa57afd948c2ea2d50d8", true], -// WAVAX - [ADDRESSES.avax.WAVAX, false] -], "avax", "0x6323c227f71b30babdd6fe84093027079a955662", "0x88a425b738682f58c0ff9fcf2cceb47a361ef4cf") \ No newline at end of file diff --git a/projects/tempus.js b/projects/tempus.js deleted file mode 100644 index 59206756dd5..00000000000 --- a/projects/tempus.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("./helper/staking.js"); - -const STAKING = "0x6C6D4753a1107585121599746c2E398cCbEa5119"; -const TEMP = "0xA36FDBBAE3c9d55a1d67EE5821d53B50B63A1aB9"; - -module.exports = { - ethereum: { - tvl: () => 0, - staking: staking(STAKING, TEMP), - }, - fantom: { tvl: () => 0, } -}; diff --git a/projects/tender-finance/index.js b/projects/tender-finance/index.js deleted file mode 100644 index 4d1f6d40355..00000000000 --- a/projects/tender-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports } = require("../helper/compound"); - -module.exports = { - // hallmarks: [ - // [1678190400, "Oracle Exploit"] - // ], - methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets.", - arbitrum: compoundExports('0xeed247Ba513A8D6f78BE9318399f5eD1a4808F8e', '0x0706905b2b21574DEFcF00B5fc48068995FCdCdf', ADDRESSES.arbitrum.WETH) -}; diff --git a/projects/tenderize-v2/index.js b/projects/tenderize-v2/index.js deleted file mode 100644 index ee3860dbb4f..00000000000 --- a/projects/tenderize-v2/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - arbitrum: { factory: '0xa7cA8732Be369CaEaE8C230537Fc8EF82a3387EE', fromBlock: 175531230 }, - ethereum: { factory: '0xa7cA8732Be369CaEaE8C230537Fc8EF82a3387EE', fromBlock: 19115337 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event NewTenderizer (address indexed asset, address indexed validator, address tenderizer)', - onlyArgs: true, - fromBlock, - }) - const tenderizers = logs.map(log => log.tenderizer) - const tokens = logs.map(log => log.asset) - const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: tenderizers }) - const calls = tenderizers.map((tenderizer, idx) => ({ target: tenderizer, params: supplies[idx] })) - const bals = await api.multiCall({ abi: 'function convertToAssets(uint256) view returns (uint256)', calls}) - api.addTokens(tokens, bals) - } - } -}) diff --git a/projects/tenderize/index.js b/projects/tenderize/index.js deleted file mode 100644 index 085b3dc8bd5..00000000000 --- a/projects/tenderize/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const config = { - arbitrum: [ - { "tenderSwap": "0x2429fc7082eb517c14946b392b195b181d0b9781", "steak": ADDRESSES.arbitrum.LPT, "tenderToken": "0xfac38532829fdd744373fdcd4708ab90fa0c4078" } - ], - ethereum: [ - { "tenderSwap": "0x7de47d1c5b9415877fe6863263f97180117fdaaa", "steak": "0x18aaa7115705e8be94bffebde57af9bfc265b998", "tenderToken": "0xc83badbf764f957acc23bc9e9aac71c298b07243" }, - { "tenderSwap": "0xf56f61f8181d118c010ca9c5f1e9e447e37b207e", "steak": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", "tenderToken": "0xc29f5611dcd89bc5d3a19762783d3006bc2ad2ac" }, - { "tenderSwap": "0x23c24c1253c602106255b357cd3efe260a3a469e", "steak": ADDRESSES.ethereum.MATIC, "tenderToken": "0x2336c10a1d3100343fa9911a2c57b77c333599a3" } - ] -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const tokens = [] - const tokensAndOwners = [] - const calls = [] - for (const { tenderToken, tenderSwap, steak } of config[chain]) { - tokens.push(steak) - tokensAndOwners.push([steak, tenderSwap]) - calls.push(tenderToken) - } - const bals = await api.multiCall({ abi: 'uint256:getTotalPooledTokens', calls }) - api.addTokens(tokens, bals) - return api.sumTokens({ tokensAndOwners }) - } - } -}) \ No newline at end of file diff --git a/projects/tenderswap/index.js b/projects/tenderswap/index.js deleted file mode 100644 index 659fcc34b63..00000000000 --- a/projects/tenderswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - ethereum: { factory: '0xcB78EbD81D08df037973Afd70D7FeF7b6b0C6B06', fromBlock: 19660555 }, - arbitrum: { factory: '0xac273c1187DDF51E2e57FA71E85ba0924bFb7bb6', fromBlock: 201228430 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event SwapDeployed(address underlying, address swap, address implementation)', fromBlock, }) - const tokensAndOwners = logs.map(log => [log.underlying, log.swap]) - return api.sumTokens({ tokensAndOwners }) - } - } -}) \ No newline at end of file diff --git a/projects/tendieswap-app/index.js b/projects/tendieswap-app/index.js deleted file mode 100644 index be38e7a01a9..00000000000 --- a/projects/tendieswap-app/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { getUniTVL } = require("../helper/unknownTokens.js"); - -const masterchef = "0x6dDb25ca46656767f8f2385D653992dC1cdb4470"; -const tendie = "0x0260F440AEa04a1690aB183Dd63C5596d66A9a43" - -module.exports = { - misrepresentedTokens: true, - tenet: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x2D2ee1a4aec9f3c8c14dFcE837e1C89b639dd1E4', }), - // staking: staking(masterchef, tendie) - }, -}; \ No newline at end of file diff --git a/projects/tendieswap/index.js b/projects/tendieswap/index.js deleted file mode 100644 index e6fcbbf9355..00000000000 --- a/projects/tendieswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { staking } = require("../helper/staking.js"); -const { getUniTVL } = require("../helper/unknownTokens.js"); - -const factoryBSC = "0xb5b4aE9413dFD4d1489350dCA09B1aE6B76BD3a8"; -const masterchef = "0x6dDb25ca46656767f8f2385D653992dC1cdb4470"; -const tendie = "0x9853A30C69474BeD37595F9B149ad634b5c323d9" - -module.exports = { - bsc: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: factoryBSC, - }), - staking: staking(masterchef, tendie) - }, - methodology: 'TVL counts the liquidity in each of the Tendieswap pairs. Pairs are found using the factory address. Staking TVL accounts for TENDIE on its masterchef contract.' -}; \ No newline at end of file diff --git a/projects/tenet/index.js b/projects/tenet/index.js deleted file mode 100644 index b419e4c6cc2..00000000000 --- a/projects/tenet/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); -const { mergeExports } = require("../helper/utils"); -const poolInfoABI = "function poolSettingInfo(uint256) view returns (address lpToken, address tokenAddr, address projectAddr, uint256 tokenAmount, uint256 startBlock, uint256 endBlock, uint256 tokenPerBlock, uint256 tokenBonusEndBlock, uint256 tokenBonusMultipler)" -module.exports = mergeExports([ - masterchefExports({ - chain: 'ethereum', - masterchef: '0xdA842fad0BDb105c88399e845aD4D00dE3AEb911', - nativeToken: '0x74159651a992952e2bf340d7628459aa4593fc05', - poolInfoABI, - }), - masterchefExports({ - chain: 'bsc', - masterchef: '0x3F4c79EB1220BeBBf5eF4B3e7c59E5cf38200b62', - nativeToken: '0xdFF8cb622790b7F92686c722b02CaB55592f152C', - poolInfoABI, - }) -]) \ No newline at end of file diff --git a/projects/tenfinance/abi.json b/projects/tenfinance/abi.json deleted file mode 100644 index daa63adb8c0..00000000000 --- a/projects/tenfinance/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "wantLockedTotal": "uint256:wantLockedTotal", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accAQUAPerShare, address strat)" -} \ No newline at end of file diff --git a/projects/tenfinance/index.js b/projects/tenfinance/index.js deleted file mode 100644 index 2144658edd2..00000000000 --- a/projects/tenfinance/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { staking } = require("../helper/staking"); - -const tenFarmAddress = "0x264A1b3F6db28De4D3dD4eD23Ab31A468B0C1A96"; -const tenVault = "0xC2fB710D39f1D116FD3A70789381a3699Ff9fce0"; -const tenfi = "0xd15c444f1199ae72795eba15e8c1db44e47abf62"; -const tenFi_PCS = '0xFBF4cf9CdD629bF102F68BFEE43A49923f869505'.toLowerCase() - -const { yieldHelper, } = require("../helper/yieldHelper") - -module.exports = yieldHelper({ - project: 'ten-finance', - chain: 'bsc', - masterchef: tenFarmAddress, - nativeToken: tenfi, - blacklistedTokens: [tenFi_PCS, tenfi], -}) - -module.exports.bsc.staking = staking(tenVault, tenfi) \ No newline at end of file diff --git a/projects/tensorplex/index.js b/projects/tensorplex/index.js deleted file mode 100644 index 4c0925ec86f..00000000000 --- a/projects/tensorplex/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const st_tao = "0xB60acD2057067DC9ed8c083f5aa227a244044fD6" - -async function tvl(api) { - const supply = await api.call({ abi: 'erc20:totalSupply', target: st_tao }) - api.add(st_tao, supply) -} - -module.exports = { - methodology: "TVL counts tokens staked by the protocol.", - ethereum: { - tvl, - }, -} diff --git a/projects/tenx-exchange/index.js b/projects/tenx-exchange/index.js deleted file mode 100644 index 4fddb4762c9..00000000000 --- a/projects/tenx-exchange/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('tenet', '0xbaB158ED71F7FD4AD43b1db1aAc5d0EFA0a8469f') \ No newline at end of file diff --git a/projects/teralend/index.js b/projects/teralend/index.js deleted file mode 100644 index 94400a986f5..00000000000 --- a/projects/teralend/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - flare: compoundExports2({comptroller: '0xEBf6ed25aB1F79B5C10C7145C5167367bE31651f', cether: '0x02350987093a804556d65be52063E85eaF80C806'}), -} diff --git a/projects/term-finance-vaults/index.js b/projects/term-finance-vaults/index.js deleted file mode 100644 index 2391a803131..00000000000 --- a/projects/term-finance-vaults/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') - -const vaultsGraphs = { - ethereum: - "https://api.mainnet.termfinance.io/mainnet/subgraph/vaults", - avax: - "https://api.mainnet.termfinance.io/avalanche/subgraph/vaults", - base: - "https://api.mainnet.termfinance.io/base/subgraph/vaults", - bsc: - "https://api.mainnet.termfinance.io/bnb/subgraph/vaults", - arbitrum: - "https://api.mainnet.termfinance.io/arbitrum/subgraph/vaults", - plasma: - "https://api.mainnet.termfinance.io/plasma/subgraph/vaults", -} - -const termVaultStrategiesQuery = ` -query termVaultStrategiesQuery($lastId: ID, $block: Int) { - termVaultStrategies( - where: { - id_gt: $lastId, - }, - first: 1000, - block: { - number: $block - } - ) { - id - asset { - id - } - } -}` - -const termVaultStrategiesQueryHeadBlock = ` -query termVaultStrategiesQuery($lastId: ID) { - termVaultStrategies( - where: { - id_gt: $lastId, - }, - first: 1000 - ) { - id - asset { - id - } - } -}` - -const vaultsGraphStartBlock = { - ethereum: 21433264, - avax: 54438973, - base: 30797402, - bsc: 54505207, - arbitrum: 359134348, - plasma: 1390659, -} - -module.exports = { - methodology: `Counts deposits in Term Strategy Vaults allocated to other protocols.`, - // hallmarks: [[1588610042, "TermFinance Launch"]], -}; - -Object.keys(vaultsGraphs).forEach(chain => { - const vaultsHost = vaultsGraphs[chain] - module.exports[chain] = { - tvl: async (api) => { - let vaultsData; - if (!api.block) { - vaultsData = await cachedGraphQuery(`term-finance-vaults-${chain}-head`, vaultsHost, termVaultStrategiesQueryHeadBlock, { fetchById: true, useBlock: false }) - } else if (api.block >= vaultsGraphStartBlock[chain]) { - vaultsData = await cachedGraphQuery(`term-finance-vaults-${chain}`, vaultsHost, termVaultStrategiesQuery, { fetchById: true, useBlock: true, variables: { block: api.block } }) - } else { - vaultsData = [] - } - const strategyBalances = await api.multiCall({ - abi: 'uint256:totalLiquidBalance', - calls: vaultsData.map(({ id }) => ({ target: id })), - permitFailure: false, - }) - vaultsData.forEach(({ asset: { id } }, i) => { - api.add(id, strategyBalances[i]) - }); - - return api.getBalances() - }, - } -}) diff --git a/projects/term-finance/index.js b/projects/term-finance/index.js deleted file mode 100644 index 31f61842990..00000000000 --- a/projects/term-finance/index.js +++ /dev/null @@ -1,110 +0,0 @@ -const { cachedGraphQuery, graphFetchById } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const graphs = { - ethereum: - "https://api.mainnet.termfinance.io/mainnet/subgraph/term", - avax: - "https://api.mainnet.termfinance.io/avalanche/subgraph/term", - base: - "https://api.mainnet.termfinance.io/base/subgraph/term", - plasma: - "https://api.mainnet.termfinance.io/plasma/subgraph/term", - // bsc: - // "https://api.mainnet.termfinance.io/bnb/subgraph/term", - // arbitrum: - // "https://api.mainnet.termfinance.io/arbitrum/subgraph/term", -}; - -const query = ` -query poolQuery($lastId: ID) { - termRepoCollaterals( - first: 1000, - where: { - id_gt: $lastId, - term_: { delisted: false } - } - ) { - id - term { termRepoLocker } - collateralToken - } -}` - -const borrowedQuery = ` -query borrowedQuery($lastId: ID, $block: Int) { - termRepoExposures( - where: { - repoExposure_gt: 0, - id_gt: $lastId, - }, - first: 1000, - block: { - number: $block - } - ) { - id - term { - purchaseToken - } - repoExposure - } -}` - -const borrowedQueryHeadBlock = ` -query borrowedQuery($lastId: ID) { - termRepoExposures( - where: { - repoExposure_gt: 0, - id_gt: $lastId, - }, - first: 1000 - ) { - id - term { - purchaseToken - } - repoExposure - } -}` - -const graphStartBlock = { - ethereum: 5240462, - avax: 43162227, - base: 30797402, - plasma: 1390659, - bsc: 54505207, - arbitrum: 359134348, -} - -module.exports = { - methodology: `Counts the collateral tokens locked in Term Finance's term repos and purchase tokens locked in Term Finance's vaults.`, - // hallmarks: [[1588610042, "TermFinance Launch"]], -}; - -Object.keys(graphs).forEach(chain => { - const host = graphs[chain] - module.exports[chain] = { - tvl: async (api) => { - // Auctions/Repos TVL - const data = await cachedGraphQuery(`term-finance-${chain}`, host, query, { fetchById: true }) - return sumTokens2({ api, tokensAndOwners: data.map(i => [i.collateralToken, i.term.termRepoLocker]), permitFailure: true }) - }, - borrowed: async (api) => { - let data - if (!api.block) { - data = await graphFetchById({ endpoint: host, query: borrowedQueryHeadBlock, api, useBlock: false }) - } else if (api.block >= graphStartBlock[chain]) { - data = await graphFetchById({ endpoint: host, query: borrowedQuery, api, useBlock: true, params: { block: api.block } }) - } else { - data = [] - } - - for (const { term: { purchaseToken }, repoExposure } of data) { - api.add(purchaseToken, repoExposure) - } - - return api.getBalances() - } - } -}) diff --git a/projects/term-structure/index.js b/projects/term-structure/index.js deleted file mode 100644 index fa16ffaed36..00000000000 --- a/projects/term-structure/index.js +++ /dev/null @@ -1,345 +0,0 @@ -const CORE_ASSETS = require("../helper/coreAssets.json"); -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const ABIS = { - Market: { - config: - "function config() external view returns (address treasurer, uint64 maturity, tuple(uint32,uint32,uint32,uint32,uint32,uint32) feeConfig)", - tokens: - "function tokens() external view override returns (address fixedToken, address xToken, address gearingToken, address collateral, address debt)", - }, - MintableERC20: { - totalSupply: "function totalSupply() external view returns (uint256)", - }, - Vault: { - asset: "address:asset", - }, -}; - -const EVENTS = { - V1: { - CreateMarket: - "event CreateMarket(address indexed market, address indexed collateral, address indexed debtToken)", - CreateVault: - "event CreateVault(address indexed vault, address indexed creator, (address admin,address curator,uint256 timelock,address asset,uint256 maxCapacity,string name,string symbol,uint64 performanceFeeRate) indexed initialParams)", - }, - V2: { - MarketCreated: - "event MarketCreated(address indexed market, address indexed collateral, address indexed debtToken, tuple(address collateral,address debtToken,address admin,address gtImplementation,tuple(address treasurer,uint64 maturity,tuple(uint32 lendTakerFeeRatio,uint32 lendMakerFeeRatio,uint32 borrowTakerFeeRatio,uint32 borrowMakerFeeRatio,uint32 mintGtFeeRatio,uint32 mintGtFeeRef) feeConfig) marketConfig,(address oracle,uint32 liquidationLtv,uint32 maxLtv,bool liquidatable) loanConfig,bytes gtInitalParams,string tokenName,string tokenSymbol) params)", - VaultCreated: - "event VaultCreated(address indexed vault, address indexed creator, (address admin,address curator,address guardian,uint256 timelock,address asset,address pool,uint256 maxCapacity,string name,string symbol,uint64 performanceFeeRate,uint64 minApy) initialParams)", - }, -}; - -const ADDRESSES = { - // Term Structure - zkTrueUpContractAddress: "0x09E01425780094a9754B2bd8A3298f73ce837CF9", - // TermMax - arbitrum: { - Factory: { - address: "0x14920Eb11b71873d01c93B589b40585dacfCA096", - fromBlock: 322193553, - }, - FactoryV2: [], - VaultFactory: [ - { - address: "0x929CBcb8150aD59DB63c92A7dAEc07b30d38bA79", - fromBlock: 322193571, - }, - ], - VaultFactoryV2: [ - { - address: "0xa7c93162962D050098f4BB44E88661517484C5EB", - fromBlock: 385228046, - }, - ], - }, - bsc: { - Factory: { - address: "0x8Df05E11e72378c1710e296450Bf6b72e2F12019", - fromBlock: 50519690, - }, - FactoryV2: [], - VaultFactory: [ - { - address: "0x48bCd27e208dC973C3F56812F762077A90E88Cea", - fromBlock: 50519690, - }, - ], - VaultFactoryV2: [ - { - address: "0x1401049368eD6AD8194f8bb7E41732c4620F170b", - fromBlock: 63192842, - }, - ], - }, - ethereum: { - Factory: { - address: "0x37Ba9934aAbA7a49cC29d0952C6a91d7c7043dbc", - fromBlock: 22174761, - }, - FactoryV2: [ - { - address: "0x1c86801e8ad0726298383e30c2c1a844887a61bd", - fromBlock: 23430000, - }, - { - address: "0xc53ab74eeb5e818147eb6d06134d81d3ac810987", - fromBlock: 23488600, - }, - ], - VaultFactory: [ - { - address: "0x01D8C1e0584751085a876892151Bf8490e862E3E", - fromBlock: 22174789, - }, - { - address: "0x4778CBf91d8369843281c8f5a2D7b56d1420dFF5", - fromBlock: 22283092, - }, - ], - VaultFactoryV2: [ - { - address: "0xF2BDa87CA467eB90A1b68f824cB136baA68a8177", - fromBlock: 23445703, - }, - { - address: "0x5b8B26a6734B5eABDBe6C5A19580Ab2D0424f027", - fromBlock: 23488637, - }, - ], - }, -}; - -const VAULT_BLACKLIST = { - arbitrum: [ - "0x8531dC1606818A3bc3D26207a63641ac2F1f6Dc8", // misconfigured asset - ], - ethereum: [], - bsc: [ - "0xe5E01B82904a49Ce5a670c1B7488C3f29433088a", // misconfigured asset - ], -}; - -async function getTermMaxMarketAddresses(api) { - const logs = await getLogs({ - api, - eventAbi: EVENTS.V1.CreateMarket, - fromBlock: ADDRESSES[api.chain].Factory.fromBlock, - target: ADDRESSES[api.chain].Factory.address, - onlyArgs: true, - extraKey: `termmax-market-v1-${api.chain}`, - }); - return logs.map(([market]) => market); -} - -async function getTermMaxMarketV2Addresses(api) { - const addresses = []; - const tasks = []; - for (const factory of ADDRESSES[api.chain].FactoryV2) { - const task = async () => { - const logs = await getLogs({ - api, - eventAbi: EVENTS.V2.MarketCreated, - fromBlock: factory.fromBlock, - target: factory.address, - onlyArgs: true, - extraKey: `termmax-market-v2-${api.chain}`, - }); - for (const [market] of logs) addresses.push(market); - }; - tasks.push(task()); - } - await Promise.all(tasks); - return addresses; -} - -async function getTermMaxMarketOwnerTokens(api) { - const [marketV1Addresses, marketV2Addresses] = await Promise.all([ - getTermMaxMarketAddresses(api), - getTermMaxMarketV2Addresses(api), - ]); - const marketAddresses = [] - .concat(marketV1Addresses) - .concat(marketV2Addresses); - const tokens = await api.multiCall({ - abi: ABIS.Market.tokens, - calls: marketAddresses, - }); - const ownerTokens = []; - for (let i = 0; i < marketAddresses.length; i += 1) { - const marketAddress = marketAddresses[i]; - const { collateral, debt, gearingToken } = tokens[i]; - ownerTokens.push([[collateral], gearingToken]); // TVL factor: collateral on the gearing token - ownerTokens.push([[debt], marketAddress]); // TVL factor: underlying on the market - } - return ownerTokens; -} - -async function getTermMaxVaultAddresses(api) { - const addresses = []; - const promises = []; - for (const vaultFactory of ADDRESSES[api.chain].VaultFactory) { - const promise = async () => { - const logs = await getLogs({ - api, - eventAbi: EVENTS.V1.CreateVault, - fromBlock: vaultFactory.fromBlock, - target: vaultFactory.address, - onlyArgs: true, - extraKey: `termmax-vault-v1-${api.chain}`, - }); - for (const [vault] of logs) addresses.push(vault); - }; - promises.push(promise()); - } - await Promise.all(promises); - return addresses; -} - -async function getTermMaxVaultV2Addresses(api) { - const addresses = []; - const promises = []; - for (const vaultFactory of ADDRESSES[api.chain].VaultFactoryV2) { - const promise = async () => { - const logs = await getLogs({ - api, - eventAbi: EVENTS.V2.VaultCreated, - fromBlock: vaultFactory.fromBlock, - target: vaultFactory.address, - onlyArgs: true, - extraKey: `termmax-vault-v2-${api.chain}`, - }); - for (const [vault] of logs) addresses.push(vault); - }; - promises.push(promise()); - } - await Promise.all(promises); - return addresses; -} - -async function getTermMaxVaultOwnerTokens(api) { - const [vaultV1Addresses, vaultV2Addresses] = await Promise.all([ - getTermMaxVaultAddresses(api), - getTermMaxVaultV2Addresses(api), - ]); - const vaultAddresses = [] - .concat(vaultV1Addresses) - .concat(vaultV2Addresses) - .filter((address) => !VAULT_BLACKLIST[api.chain]?.includes(address)); - const assets = await api.multiCall({ - abi: ABIS.Vault.asset, - calls: vaultAddresses, - }); - // TVL factor: idle fund in the vault - return assets.map((asset, idx) => [[asset], vaultAddresses[idx]]); -} - -async function getTermMaxOwnerTokens(api) { - const [marketOwnerTokens, vaultOwnerTokens] = await Promise.all([ - getTermMaxMarketOwnerTokens(api), - getTermMaxVaultOwnerTokens(api), - ]); - const ownerTokens = [].concat(marketOwnerTokens).concat(vaultOwnerTokens); - return ownerTokens; -} - -async function getTermStructureOwnerTokens(api) { - const infoAbi = - "function getAssetConfig(uint16 tokenId) external view returns (bool isStableCoin, bool isTsbToken, uint8 decimals, uint128 minDepositAmt, address token)"; - const tokenInfo = await api.fetchList({ - lengthAbi: "getTokenNum", - itemAbi: infoAbi, - target: ADDRESSES.zkTrueUpContractAddress, - startFrom: 1, - }); - const tokens = tokenInfo.map((i) => i.token); - tokens.push(CORE_ASSETS.ethereum.WETH); - return tokens.map((token) => [[token], ADDRESSES.zkTrueUpContractAddress]); -} - -async function getTermMaxMarketBorrowed(api) { - const marketAddresses = await getTermMaxMarketAddresses(api); - const [tokens, configs] = await Promise.all([ - api.multiCall({ - abi: ABIS.Market.tokens, - calls: marketAddresses, - }), - api.multiCall({ - abi: ABIS.Market.config, - calls: marketAddresses, - }), - ]); - - const activeMarkets = []; - for (let i = 0; i < marketAddresses.length; i += 1) { - const marketAddress = marketAddresses[i]; - const { maturity } = configs[i]; - if (maturity <= api.timestamp) continue; - - const { fixedToken, xToken, debt } = tokens[i]; - activeMarkets.push({ marketAddress, fixedToken, xToken, debt }); - } - - const mintableERC20Array = Array.from( - new Set( - activeMarkets.flatMap(({ fixedToken, xToken }) => [fixedToken, xToken]) - ) - ); - const totalSupplies = await api.multiCall({ - abi: ABIS.MintableERC20.totalSupply, - calls: mintableERC20Array, - }); - const tokenSupplyMap = new Map( - totalSupplies.map((supply, index) => [mintableERC20Array[index], supply]) - ); - - for (const activeMarket of activeMarkets) { - const { fixedToken, xToken, debt } = activeMarket; - - const ftSupply = tokenSupplyMap.get(fixedToken); - if (!ftSupply) continue; - - const xtSupply = tokenSupplyMap.get(xToken); - if (!xtSupply) continue; - - api.add(debt, ftSupply - xtSupply); - } -} - -module.exports = { - hallmarks: [ - [ - Math.floor(new Date("2025-04-15") / 1000), - "Sunset Term Structure and launch TermMax", - ], - ], - arbitrum: { - borrowed: getTermMaxMarketBorrowed, - tvl: async (api) => { - const ownerTokens = await getTermMaxOwnerTokens(api); - return sumTokens2({ api, ownerTokens }); - }, - }, - bsc: { - borrowed: getTermMaxMarketBorrowed, - tvl: async (api) => { - const ownerTokens = await getTermMaxOwnerTokens(api); - return sumTokens2({ api, ownerTokens }); - }, - }, - ethereum: { - borrowed: getTermMaxMarketBorrowed, - tvl: async (api) => { - const [termStructureOwnerTokens, termMaxOwnerTokens] = await Promise.all([ - getTermStructureOwnerTokens(api), - getTermMaxOwnerTokens(api), - ]); - const ownerTokens = [] - .concat(termStructureOwnerTokens) - .concat(termMaxOwnerTokens); - return sumTokens2({ api, ownerTokens }); - }, - }, -}; diff --git a/projects/terminal-fi-predeposit/index.js b/projects/terminal-fi-predeposit/index.js deleted file mode 100644 index 9e82d11cf76..00000000000 --- a/projects/terminal-fi-predeposit/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.ethereum.sUSDe, '0xFaAE52c6A6d477f859a740a76B29c33559ace18c'], - [ADDRESSES.ethereum.WEETH, '0xe042678e6c6871fa279e037c11e390f31334ba0b'], - [ADDRESSES.ethereum.WBTC, '0x2db1ec186acdeaf7d0fc78bffe335560b0fe0085'], - ] - }), - } -} \ No newline at end of file diff --git a/projects/terra-bridge/index.js b/projects/terra-bridge/index.js deleted file mode 100644 index d9cd074790d..00000000000 --- a/projects/terra-bridge/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') - -module.exports = { - methodology: "Sums tokens that are bridged (minted) to other chains via Terra Bridge (shuttle).", - terra: { - tvl: sumTokensExport({ - owners: [ - 'terra13yxhrk08qvdf5zdc9ss5mwsg5sf7zva9xrgwgc', - 'terra1g6llg3zed35nd3mh9zx6n64tfw3z67w2c48tn2', - 'terra1rtn03a9l3qsc0a9verxwj00afs93mlm0yr7chk', - ], - logCalls: true - }) - }, - hallmarks: [ - [1651881600, "UST depeg"], - ], -}; diff --git a/projects/terrafloki.js b/projects/terrafloki.js deleted file mode 100644 index e7e3fbaba0a..00000000000 --- a/projects/terrafloki.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - terra:{ - tvl: () => 0 - }, - hallmarks:[ - [1651881600, "UST depeg"], - ] -}; - - -module.exports.deadFrom = '2022-05-26' \ No newline at end of file diff --git a/projects/terraswap/factoryTvl.js b/projects/terraswap/factoryTvl.js deleted file mode 100644 index a038c565b73..00000000000 --- a/projects/terraswap/factoryTvl.js +++ /dev/null @@ -1,88 +0,0 @@ -const { queryContract, queryContracts, sumTokens, queryContractWithRetries } = require('../helper/chain/cosmos') -const { PromisePool } = require('@supercharge/promise-pool') -const { transformDexBalances } = require('../helper/portedTokens') - -function extractTokenInfo(asset) { - const { native_token, token, native } = asset.info - for (const tObject of [native_token, token, native]) { - if (!tObject) continue - if (typeof tObject === 'string') return tObject - const token = tObject.denom || tObject.contract_addr - if (token) return token - } -} - -function getAssetInfo(asset) { - return [extractTokenInfo(asset), Number(asset.amount)] -} - -async function getAllPairs(factory, chain, { blacklistedPairs = [] } = {}) { - const blacklist = new Set(blacklistedPairs) - let allPairs = [] - let currentPairs; - const limit = factory === 'terra14x9fr055x5hvr48hzy2t4q7kvjvfttsvxusa4xsdcy702mnzsvuqprer8r' ? 29 : 30 // some weird native token issue at one of the pagination query - do { - const queryStr = `{"pairs": { "limit": ${limit} ${allPairs.length ? `,"start_after":${JSON.stringify(allPairs[allPairs.length - 1].asset_infos)}` : ""} }}` - currentPairs = (await queryContract({ contract: factory, chain, data: queryStr })).pairs - allPairs.push(...currentPairs.filter(pair => !blacklist.has(pair.contract_addr))) - } while (currentPairs.length > 0) - const dtos = [] - const getPairPool = (async (pair) => { - const pairRes = await queryContractWithRetries({ contract: pair.contract_addr, chain, data: { pool: {} } }) - const pairDto = {} - pairDto.assets = [] - pairDto.addr = pair.contract_addr - pairRes.assets.forEach((asset, idx) => { - const [addr, balance] = getAssetInfo(asset) - pairDto.assets.push({ addr, balance }) - }) - pairDto.pair_type = pair.pair_type - dtos.push(pairDto) - }) - const { errors } = await PromisePool - .withConcurrency(10) - .for(allPairs) - .process(getPairPool) - if ((errors?.length ?? 0) > 50) { - throw new Error(`Too many errors: ${errors.length}/${allPairs.length} on ${chain}`) - } - return dtos -} - -const isNotXYK = (pair) => pair.pair_type && pair.pair_type.custom === 'concentrated' - -function getFactoryTvl(factory, { blacklistedPairs = [] } = {}) { - return async (api) => { - const pairs = (await getAllPairs(factory, api.chain, { blacklistedPairs })).filter(pair => (pair.assets[0].balance && pair.assets[1].balance)) - - const otherPairs = pairs.filter(isNotXYK) - const xykPairs = pairs.filter(pair => !isNotXYK(pair)) - otherPairs.forEach(({ assets }) => { - api.add(assets[0].addr, assets[0].balance) - api.add(assets[1].addr, assets[1].balance) - }) - - const data = xykPairs.map(({ assets }) => ({ - token0: assets[0].addr, - token0Bal: assets[0].balance, - token1: assets[1].addr, - token1Bal: assets[1].balance, - })) - return transformDexBalances({ api, data }) - } -} - - -function getSeiDexTvl(codeId) { - return async (api) => { - const chain = api.chain - const contracts = await queryContracts({ chain, codeId, }) - return sumTokens({ chain, owners: contracts }) - } -} - -module.exports = { - getFactoryTvl, - getSeiDexTvl, - getAssetInfo, -} diff --git a/projects/terraswap/index.js b/projects/terraswap/index.js deleted file mode 100644 index c10c6c27a17..00000000000 --- a/projects/terraswap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getFactoryTvl } = require('./factoryTvl') - -const factory = { - classic: "terra1ulgw0td86nvs4wtpsc80thv6xelk76ut7a7apj", - terra2: "terra1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjqxl5qul", -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - terra: { tvl: getFactoryTvl(factory.classic) }, - terra2: { tvl: getFactoryTvl(factory.terra2) }, - hallmarks:[ - [1651881600, "UST depeg"], - ] -} diff --git a/projects/tesseract/abi.json b/projects/tesseract/abi.json deleted file mode 100644 index d310be833ba..00000000000 --- a/projects/tesseract/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "token": "address:token", - "totalAssets": "uint256:totalAssets" -} \ No newline at end of file diff --git a/projects/tesseract/index.js b/projects/tesseract/index.js deleted file mode 100644 index 3d546201138..00000000000 --- a/projects/tesseract/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const abi = require("./abi.json"); - -const vaults = [ - "0x57bDbb788d0F39aEAbe66774436c19196653C3F2", // USDC - "0x4c8C6379b7cd039C892ab179846CD30a1A52b125", // DAI - "0x6962785c731e812073948a1f5E181cf83274D7c6", // WBTC - "0x3d44F03a04b08863cc8825384f834dfb97466b9B", // WETH - "0xE11678341625cD88Bb25544e39B2c62CeDcC83f1", // WMATIC - "0xEB02e1024cC16bCD28adE5A87D46257dc307E18C", // USDC old - "0xf5e364b9c07222cdec7d371c1422625593966c54", // DAI old - "0xDF53c53E553524d13Fea7a4170856eb8b9C8a6EF", // WETH old - "0x7Cd28e21a89325EB5b2395591E86374522396E77", // WBTC old -]; - -async function tvl(api) { - const tokens = await api.multiCall({ abi: abi.token, calls: vaults }) - const amounts = await api.multiCall({ abi: abi.totalAssets, calls: vaults }) - api.addTokens(tokens, amounts) -} - -module.exports = { - polygon: { - tvl, - }, -}; diff --git a/projects/tesseractworld/index.js b/projects/tesseractworld/index.js deleted file mode 100644 index 879d94e5050..00000000000 --- a/projects/tesseractworld/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - ace: { factory: '0x699cf93f5dec3a3e314f0a31c1f885fb11b983c3', fromBlock: 197972, }, -}) \ No newline at end of file diff --git a/projects/tether-gold/index.js b/projects/tether-gold/index.js deleted file mode 100644 index 0a36aa83921..00000000000 --- a/projects/tether-gold/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const XAUt = '0x68749665ff8d2d112fa859aa293f07a622782f38' - -module.exports = { - methodology: "TVL corresponds to the total amount of XAUt minted", - ethereum: { - tvl: async (api) => { - const totalSupply = await api.call({target: XAUt, abi: 'erc20:totalSupply'}) - api.add(XAUt, totalSupply) - } - } -} diff --git a/projects/tethys-perpetual/index.js b/projects/tethys-perpetual/index.js deleted file mode 100644 index 138306c8ab5..00000000000 --- a/projects/tethys-perpetual/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const {staking} = require('../helper/staking') -const { gmxExports } = require('../helper/gmx') - -module.exports = { - metis:{ - staking: staking('0xA3c1694EfCd4389Ce652D521d2be28c912250a53', '0x69fdb77064ec5c84FA2F21072973eB28441F43F3'), - tvl: gmxExports({ vault: '0xD2032462fd8A45C4BE8F5b90DE25eE3631ec1c2C', }) - } -}; diff --git a/projects/tethys/index.js b/projects/tethys/index.js deleted file mode 100644 index 51991e9c8f6..00000000000 --- a/projects/tethys/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking.js'); - -const factory = '0x2CdFB20205701FF01689461610C9F321D1d00F80' -const tethys = '0x69fdb77064ec5c84FA2F21072973eB28441F43F3' -const masterchef = '0x54A8fB8c634dED694D270b78Cb931cA6bF241E21' - -module.exports = { - methodology: `Metis tokens, USDC, USDT, WETH, TETHYS allocated in LP`, - misrepresentedTokens: true, - metis:{ - tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), - staking: staking(masterchef, tethys), - } -} diff --git a/projects/tetu-pawnshop/index.js b/projects/tetu-pawnshop/index.js deleted file mode 100644 index 4e7c1f0860e..00000000000 --- a/projects/tetu-pawnshop/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - polygon: { shop: '0x0c9fa52d7ed12a6316d3738c80931ecbc6c49907', }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const shop = config[chain].shop - const posIds = await api.fetchList({ itemAbi: abi.openPositions, lengthAbi: abi.openPositionsSize, target: shop }) - const posData = await api.multiCall({ abi: abi.positions, calls: posIds, target: shop }) - const tokens = posData.map(pos => ([pos.collateral.collateralToken, pos.acquired.acquiredToken, pos.depositToken])).flat() - return sumTokens2({ api, owner: shop, tokens, resolveUniV3: true, }) - } - } -}) - -const abi = { - "openPositions": "function openPositions(uint256) view returns (uint256)", - "openPositionsSize": "uint256:openPositionsSize", - "positions": "function positions(uint256) view returns (uint256 id, address borrower, address depositToken, uint256 depositAmount, bool open, uint256 minAuctionAmount, tuple(uint256 posDurationBlocks, uint256 posFee, uint256 createdBlock, uint256 createdTs) info, tuple(address collateralToken, uint8 collateralType, uint256 collateralAmount, uint256 collateralTokenId) collateral, tuple(address acquiredToken, uint256 acquiredAmount) acquired, tuple(address lender, uint256 posStartBlock, uint256 posStartTs, uint256 posEndTs) execution)", -} \ No newline at end of file diff --git a/projects/tetu-swap/index.js b/projects/tetu-swap/index.js deleted file mode 100644 index d179dc83314..00000000000 --- a/projects/tetu-swap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x684d8c187be836171a1af8d533e4724893031828', - }), - } -}; \ No newline at end of file diff --git a/projects/tetu/abi.json b/projects/tetu/abi.json deleted file mode 100644 index 8604871d560..00000000000 --- a/projects/tetu/abi.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "vaultsLength": "uint256:vaultsLength", - "vaults": "function _vaults(uint256) view returns (address)", - "vaultTvlUsdc": "function vaultTvlUsdc(address _vault) view returns (uint256)", - "totalTvlUsdc": "function totalTvlUsdc(address[] _vault) view returns (uint256)", - "strategy": "address:strategy", - "platform": "uint8:platform", - "vaultsList": "address[]:vaultsList", - "vaultERC4626TvlUsdc": "function vaultERC2626TvlUsdc(address _vault) view returns (uint256)", - "veTokens": "function tokens(uint256) view returns (address)", - "getPrice": "function getPrice(address _token) view returns (uint256)", - "balanceOf": "function balanceOf(address _owner) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/tetu/index.js b/projects/tetu/index.js deleted file mode 100644 index 17cc363f819..00000000000 --- a/projects/tetu/index.js +++ /dev/null @@ -1,117 +0,0 @@ -const abi = require("./abi.json"); - -// exclude V1 platforms for avoid double counting -const EXCLUDED_PLATFORMS = { - "12": true, // TETU_SWAP - "29": true // TETU self farm -} - -// exclude V1 vaults for avoid double counting -const EXCLUDED_VAULTS = { - "ethereum": { - "0xfe700d523094cc6c673d78f1446ae0743c89586e": true, // tetuBAL ethereum - }, - "fantom": { - "0x27c616838b8935c8a34011d0e88ba335040ac7b1": true // broken MAI on fantom - } -} - -module.exports = { - start: '2021-08-03', //Tue Aug 03 2021 21:00:00 GMT+0000 - misrepresentedTokens: true, -}; - -const config = { - polygon: { - bookkeeper: '0x0A0846c978a56D6ea9D2602eeb8f977B21F3207F', - contract_Reader: '0xCa9C8Fba773caafe19E6140eC0A7a54d996030Da', - controllerV2: '0x33b27e0A2506a4A2FBc213a01C51d0451745343a', - veTETU: '0x6FB29DD17fa6E27BD112Bc3A2D0b8dae597AeDA4', - }, - fantom: { - bookkeeper: '0x00379dD90b2A337C4652E286e4FBceadef940a21', - contract_Reader: '0xa4EB2E1284D9E30fb656Fe6b34c1680Ef5d4cBFC', - }, - bsc: { - bookkeeper: '0x8A571137DA0d66c2528DA3A83F097fbA10D28540', - contract_Reader: '0xE8210A2d1a7B56115a47B8C06a72356773f6838E', - }, - ethereum: { - bookkeeper: '0xb8bA82F19A9Be6CbF6DAF9BF4FBCC5bDfCF8bEe6', - contract_Reader: '0x6E4D8CAc827B52E7E67Ae8f68531fafa36eaEf0B', - }, - base: { - contract_Reader: '0xC80807F075Cb76139678De3954D4F7f159829Bf9', - controllerV2: '0x255707B70BF90aa112006E1b07B9AeA6De021424', - veTETU: '0xb8bA82F19A9Be6CbF6DAF9BF4FBCC5bDfCF8bEe6', - }, -} - -Object.keys(config).forEach(chain => { - const { bookkeeper, contract_Reader, controllerV2, veTETU } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - - // * ############### Tetu V1 vaults - const vaultsCall = []; - if (bookkeeper) { - const vaultAddresses = await api.fetchList({ lengthAbi: abi.vaultsLength, itemAbi: abi.vaults, target: bookkeeper }) - const strategies = await api.multiCall({ abi: abi.strategy, calls: vaultAddresses, }) - const platforms = await api.multiCall({ abi: abi.platform, calls: strategies, }) - - for (let i = 0; i < vaultAddresses.length; i++) { - if (EXCLUDED_PLATFORMS[platforms[i]] === true) { - continue; - } - // exclude duplication count or broken vaults - if (EXCLUDED_VAULTS[chain] && EXCLUDED_VAULTS[chain][vaultAddresses[i].toLowerCase()] === true) { - continue; - } - vaultsCall.push(vaultAddresses[i]) - } - } - - // * ############### Tetu V2 vaults - let usdcsV2 = []; - if (controllerV2) { - const vaultsV2 = (await api.call({ abi: abi.vaultsList, target: controllerV2, })); - usdcsV2 = await api.multiCall({ target: contract_Reader, abi: abi.vaultERC4626TvlUsdc, calls: vaultsV2, permitFailure: true, }) - } - - // * ############### veTETU - let veTETU_USDC = 0; - if (veTETU) { - for (let i = 0; i < 100; i++) { - let token = ''; - try { - token = (await api.call({ abi: abi.veTokens, target: veTETU, params: i, })); - } catch (e) { - // assume that tokens ended - // we don't have length for tokens so this workaround - break; - } - - const amount = (await api.call({ abi: abi.balanceOf, target: token, params: veTETU, })); - const price = (await api.call({ abi: abi.getPrice, target: contract_Reader, params: token, })); - - // assume all tokens inside with decimal 18 - // if not need addtionial call with decimals - veTETU_USDC += amount * price / 1e36; - } - } - - // * ############### TOTALS - - let total = veTETU_USDC - for (const vault of vaultsCall) { - const usdcs = await api.call({ target: contract_Reader, abi: abi.totalTvlUsdc, params: [[vault]], }) - total += usdcs / 1e18 - } - - usdcsV2.forEach(i => total += i / 1e18) - return { - 'usd-coin': total - } - } - } -}) diff --git a/projects/tezfin/index.js b/projects/tezfin/index.js deleted file mode 100644 index 83509529a51..00000000000 --- a/projects/tezfin/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { getStorage, sumTokens2 } = require("../helper/chain/tezos"); - -async function tvl() { - return sumTokens2({ - owners: [ - // v1 contracts - "KT1GYKoownVC1ukP2TBDgKx7bSXRM5XkV1W6", // ꜰXTZ v1 - "KT1MX7D6ZJp2DDSSeDS96JPTFPXKkNiHFhwb", // ꜰUSDtz v1 - "KT1W8P4ZxD8eREKjDnxMe5882NP3GnAgrv46", // ꜰUSDt v1 - // v2 contracts - "KT1MCXxbtS62tk4CUxv29BHnqTBtvsFFGzBm", // ꜰXTZ v2 - "KT1WQM7wj64GHCndwV8REccQ6N4tqZ3uRNqs", // ꜰUSDtz v2 - "KT1HCRJhfqmWKRJtZXzvTkY4iisfuR4w6pkB", // ꜰUSDt v2 - "KT19gZac3vqV3ZeMJbhMX7Xy8kcocKK4Tbz1", // ꜰtzBTC v2 - // v3 contracts - "KT1Gm29ynxQcS3m6Srwd77xxMhposuNvNsRV", // ꜰXTZ v3 - "KT1DcgX4Lj1XYyB6yyg76gwpfCBaoUZsg5dE", // ꜰUSDtz v3 - "KT1HxMHg859teFpXXCZamuPiEyJa6YfHiagn", // ꜰUSDt v3 - "KT1DrELZukfWQNo3J3HTUqMS9vVTjBPLT5nQ", // ꜰtzBTC v3 - ], - includeTezos: true, - }); -} - -async function borrowed() { - const markets = [ - { address: "KT1GYKoownVC1ukP2TBDgKx7bSXRM5XkV1W6", decimals: 6 }, // ꜰXTZ v1 - { address: "KT1MX7D6ZJp2DDSSeDS96JPTFPXKkNiHFhwb", decimals: 6 }, // ꜰUSDtz v1 - { address: "KT1W8P4ZxD8eREKjDnxMe5882NP3GnAgrv46", decimals: 6 }, // ꜰUSDt v1 - { address: "KT1MCXxbtS62tk4CUxv29BHnqTBtvsFFGzBm", decimals: 6 }, // ꜰXTZ v2 - { address: "KT1WQM7wj64GHCndwV8REccQ6N4tqZ3uRNqs", decimals: 6 }, // ꜰUSDtz v2 - { address: "KT1HCRJhfqmWKRJtZXzvTkY4iisfuR4w6pkB", decimals: 6 }, // ꜰUSDt v2 - { address: "KT19gZac3vqV3ZeMJbhMX7Xy8kcocKK4Tbz1", decimals: 8 }, // ꜰtzBTC v2 - { address: "KT1Gm29ynxQcS3m6Srwd77xxMhposuNvNsRV", decimals: 6 }, // ꜰXTZ v3 - { address: "KT1DcgX4Lj1XYyB6yyg76gwpfCBaoUZsg5dE", decimals: 6 }, // ꜰUSDtz v3 - { address: "KT1HxMHg859teFpXXCZamuPiEyJa6YfHiagn", decimals: 6 }, // ꜰUSDt v3 - { address: "KT1DrELZukfWQNo3J3HTUqMS9vVTjBPLT5nQ", decimals: 8 }, // ꜰtzBTC v3 - ]; - - const balances = {}; - - for (const { address, decimals } of markets) { - const storage = await getStorage(address); - let borrows = Number(storage.totalBorrows || 0); - - let tokenAddress = storage.fa1_2_TokenAddress ? `${storage.fa1_2_TokenAddress}-0` : storage.fa2_TokenAddress ? `${storage.fa2_TokenAddress}-${storage.tokenId}` : "tezos"; - - borrows = borrows / 10 ** decimals; - - const key = tokenAddress === "tezos" ? "tezos" : `tezos:${tokenAddress}`; - sdk.util.sumSingleBalance(balances, key, borrows); - } - - return balances; -} - -module.exports = { - timetravel: false, - tezos: { - tvl, - borrowed, - }, - methodology: - 'TVL includes all deposits in TezFin lending markets (ꜰXTZ, ꜰUSDtz, ꜰUSDt, ꜰtzBTC) across v1, v2, and v3. Borrowed value is based on totalBorrows from contract storage, adjusted by token decimals.', - }; diff --git a/projects/tezos-baking/index.js b/projects/tezos-baking/index.js deleted file mode 100644 index b19412e8a2e..00000000000 --- a/projects/tezos-baking/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/sumTokens') - -module.exports = { - tezos: { - tvl: sumTokensExport({ owner: 'KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5', tokens: [nullAddress, ADDRESSES.tezos.tzBTC] }), - }, - methodology: "Liquidity on tezos' tzBTC-XTZ pair" -} \ No newline at end of file diff --git a/projects/tezos-btc/index.js b/projects/tezos-btc/index.js deleted file mode 100644 index 36222d253f5..00000000000 --- a/projects/tezos-btc/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -//https://tzbtc.io/transparency/ - -module.exports = { - methodology: 'BTC wallets on bc1q2f0tczgrukdxjrhhadpft2fehzpcrwrz549u90', - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.tzbtc }), - }, -}; \ No newline at end of file diff --git a/projects/tfm/index.js b/projects/tfm/index.js deleted file mode 100644 index 57327cef0bf..00000000000 --- a/projects/tfm/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const {getFactoryTvl} = require('../terraswap/factoryTvl') - -const factory = "terra1u27ypputx3pu865luzs4fpjsj4llsnzf9qeq2p" - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - terra: { - tvl: getFactoryTvl(factory) - }, -} \ No newline at end of file diff --git a/projects/tgcasino/index.js b/projects/tgcasino/index.js deleted file mode 100644 index a3ee625a3ff..00000000000 --- a/projects/tgcasino/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking( - [ - "0x0916568854Fc53B720186052d8013D62A0409b47", - "0x258C3104388f8cd72c8b4336fc536033E6dB764E", - ], - ["0x25B4f5D4C314bCD5d7962734936C957B947cb7CF"] - ), - }, -}; diff --git a/projects/tgusd/index.js b/projects/tgusd/index.js deleted file mode 100644 index a4023582e24..00000000000 --- a/projects/tgusd/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { call } = require("../helper/chain/ton"); - -const tgusdAddress = 'EQCJ7ASxOkI6Ws5Bh8J74XZbRX8861jFgTZT42DXv71-UISf' - -async function tvl(api){ - const result = await call({ target: tgusdAddress, abi: "get_jetton_data"}) - return { - "coingecko:tether": result[0]/1e6 - } -} - -module.exports = { - timetravel: false, - start: 1746374400, - methodology: "Telegram USD is a stablecoin on TON. The TVL is the collateral amount of USDT in the tgUSD contract.", - ton: { - tvl: tvl - } -} \ No newline at end of file diff --git a/projects/thUSD/index.js b/projects/thUSD/index.js deleted file mode 100644 index ca9b1759d5a..00000000000 --- a/projects/thUSD/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getLiquityTvl } = require("../helper/liquity") -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs") -const tBTCTvl = getLiquityTvl('0xf5e4ffeb7d2183b61753aa4074d72e51873c1d0a', { nonNativeCollateralToken: true, abis: { collateralToken: 'address:collateralAddress' } }) -const ethTvl = sumTokensExport({ owners: ['0x1f490764473eb1013461D6079F827DB95d8B4DC5', '0xE922B5591Da479a559b25261BD6Dc8f89cA1A29d'], tokens: [nullAddress]}) - -module.exports = { - ethereum: { - tvl: sdk.util.sumChainTvls([tBTCTvl, ethTvl]) - } -} diff --git a/projects/thala-lsd/index.js b/projects/thala-lsd/index.js deleted file mode 100644 index 122d11eab8d..00000000000 --- a/projects/thala-lsd/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { aQuery, function_view } = require('../helper/chain/aptos') - -// Note: thala-lsd is under the umbrella of Thala protocols - -const LSD_ACCOUNT = "0xfaf4e633ae9eb31366c9ca24214231760926576c7b625313b3688b5e900731f6"; -const THALA_VALIDATOR = "0xe888a0adfb4ca871bfe6aada8511f5326e877a8ce66a9980ef089eb2218d740c"; - -module.exports = { - timetravel: false, - methodology: "Aggregates thAPT backing Thala LSD's APT delegation.", - aptos: { - tvl: async () => { - const { data: { supply } } = await aQuery(`/v1/accounts/${LSD_ACCOUNT}/resource/0x1::coin::CoinInfo%3C${LSD_ACCOUNT}::staking::ThalaAPT%3E`); - const [active, inactive, pending_active, pending_inactive] = await function_view({ - functionStr: `0x1::delegation_pool::get_delegation_pool_stake`, - args: [THALA_VALIDATOR] - }); - const validator_apt = Number(active) + Number(inactive) + Number(pending_active) + Number(pending_inactive); - - return { - aptos: (Number(supply.vec[0].integer.vec[0].value) + validator_apt) / 1e8 - } - } - } -} diff --git a/projects/thala-vethl/index.js b/projects/thala-vethl/index.js deleted file mode 100644 index 6becf29d2f9..00000000000 --- a/projects/thala-vethl/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const utils = require("../helper/utils"); - -const THALA_API_VETHL = "https://app.thala.fi/api/vethl-tvl"; -const thlAddress = "0x7fd500c11216f0fe3095d0c4b8aa4d64a4e2e04f83758462f2b127255643615::thl_coin::THL"; -const thlDecimals = 8; - -module.exports = { - timetravel: false, - start: '2023-08-21', - methodology: - `TVL data is pulled from the Thala's API "https://app.thala.fi/api/vethl-tvl".`, - aptos: { - tvl: () => ({}), - staking: async (api) => { - const response = await utils.fetchURL(THALA_API_VETHL); - const thlAmount = response.data.data * 10**thlDecimals; - - api.add(thlAddress, thlAmount); - }, - }, -}; diff --git a/projects/thalaswap-v2/index.js b/projects/thalaswap-v2/index.js deleted file mode 100644 index 5e4f6375912..00000000000 --- a/projects/thalaswap-v2/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { function_view } = require("../helper/chain/aptos"); -const { get } = require('../helper/http') -const { PromisePool } = require('@supercharge/promise-pool') - -const thalaswapLensAddress = "ff1ac437457a839f7d07212d789b85dd77b3df00f59613fcba02388464bfcacb"; - -async function getPool(lensAddress, lptAddress) { - const args = [lptAddress]; - return function_view({ functionStr: `${lensAddress}::lens::get_pool_info`, args }); -} - -module.exports = { - timetravel: false, - methodology: - "Aggregates TVL in all pools in Thalaswap, Thala Labs' AMM.", - aptos: { - tvl: async (api) => { - // Fetch pool data from API - const { data: poolsData } = await getConfig('thalaswa-v2', 'https://app.thala.fi/api/liquidity-pools'); - - // Filter for V2 pools and get lptAddresses - const v2Pools = poolsData.filter(pool => pool.metadata.isV2); - - const { errors } = await PromisePool.for(v2Pools) - .withConcurrency(2) - .process(async (pool) => { - const poolInfo = await getPool(thalaswapLensAddress, pool.metadata.lptAddress); - const assets = poolInfo.assets_metadata.map(asset => asset.inner); - const balances = poolInfo.balances; - api.add(assets, balances); - }); - - // Handle errors - if (errors?.length > 0) { - console.error("Errors occurred while processing pools:", errors); - throw errors[0]; - } - }, - }, -}; \ No newline at end of file diff --git a/projects/thalaswap-v3/index.js b/projects/thalaswap-v3/index.js deleted file mode 100644 index dc62cf7a3f4..00000000000 --- a/projects/thalaswap-v3/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { function_view } = require("../helper/chain/aptos"); -const { get } = require('../helper/http') -const { PromisePool } = require('@supercharge/promise-pool') - -const thalaswapLensAddress = "10e4cef9dd33e192738a33c8529e5c5feeb00d660b08f8d0891b4ceb3ed71dfd"; - -async function getPool(lensAddress, lptAddress) { - const args = [lptAddress]; - return function_view({ functionStr: `${lensAddress}::lens::get_pool_info`, args }); -} - -module.exports = { - timetravel: false, - methodology: - "Aggregates TVL in all pools in Thalaswap CL, Thala Labs' AMM.", - aptos: { - tvl: async (api) => { - // Fetch pool data from API - const { data: poolsData } = await getConfig('thalaswap-v3', 'https://app.thala.fi/api/liquidity-pools'); - - // Filter for V3 pools and get lptAddresses - const v3Pools = poolsData.filter(pool => pool.metadata.version === 3); - - const { errors } = await PromisePool.for(v3Pools) - .withConcurrency(2) - .process(async (pool) => { - const poolInfo = await getPool(thalaswapLensAddress, pool.metadata.lptAddress); - const assets = [poolInfo.metadata_0.inner, poolInfo.metadata_1.inner]; - const balances = [poolInfo.balance_0, poolInfo.balance_1]; - api.add(assets, balances); - }); - - // Handle errors - if (errors?.length > 0) { - console.error("Errors occurred while processing pools:", errors); - throw errors[0]; - } - }, - }, -}; \ No newline at end of file diff --git a/projects/thalaswap/index.js b/projects/thalaswap/index.js deleted file mode 100644 index 32ae8f66f06..00000000000 --- a/projects/thalaswap/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { getResources, } = require("../helper/chain/aptos"); - -const thalaswapAddress = "0x48271d39d0b05bd6efca2278f22277d6fcc375504f9839fd73f74ace240861af"; -const nullCoinType = "base_pool::Null"; - -let resourcesCache; - -async function _getResources() { - if (!resourcesCache) resourcesCache = getResources(thalaswapAddress) - return resourcesCache -} -const extractCoinAddress = resource => resource.type.split('<')[1].replace('>', '').split(', '); -const poolsFilter = resource => resource.type.includes(`${thalaswapAddress}::stable_pool::StablePool<`) || resource.type.includes(`${thalaswapAddress}::weighted_pool::WeightedPool<`) -module.exports = { - timetravel: false, - methodology: - "Aggregates TVL in all pools in Thalaswap, Thala Labs' AMM.", - aptos: { - tvl: async (api) => { - const resources = await _getResources() - const pools = resources.filter(poolsFilter).map(pool => ({ - assets: [pool.data.asset_0, pool.data.asset_1, pool.data.asset_2, pool.data.asset_3], - asset_types: extractCoinAddress(pool), - })); - - pools.forEach(({ assets, asset_types }) => { - assets.forEach((asset, index) => { - // We ignore the null coin because it signifies that we don't have either a third or fourth asset in the pool - // We ignore the THL coin because native tokens are exempt from TVL calculations - if (!asset_types[index].includes(nullCoinType)) - api.add(asset_types[index], asset.value); - }); - }); - }, - }, -}; \ No newline at end of file diff --git a/projects/thales/abi.json b/projects/thales/abi.json deleted file mode 100644 index c7ea49af901..00000000000 --- a/projects/thales/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "activeMarkets": "function activeMarkets(uint256 index, uint256 pageSize) view returns (address[])", - "getActiveTickets": "function getActiveTickets(uint _index, uint _pageSize) external view returns (address[] memory)", - "round": "function round() view returns (uint256)", - "roundPools": "function roundPools(uint256 _round) view returns (address)" -} \ No newline at end of file diff --git a/projects/thales/addresses.js b/projects/thales/addresses.js deleted file mode 100644 index b14c73fc180..00000000000 --- a/projects/thales/addresses.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const CHAIN_TOKENS = { - optimism: { - USDC: ADDRESSES.optimism.USDC_CIRCLE, - ETH: ADDRESSES.optimism.WETH_1, - WETH: ADDRESSES.optimism.WETH, - USDCe: ADDRESSES.optimism.USDC, - DAI: ADDRESSES.optimism.DAI, - USDT: ADDRESSES.optimism.USDT, - OP: ADDRESSES.optimism.OP, - THALES: '0x217d47011b23bb961eb6d93ca9945b7501a5bb11', - OVERTIME: '0xedf38688b27036816a50185caa430d5479e1c63e' - }, - arbitrum: { - USDCe: ADDRESSES.arbitrum.USDC, - USDC: ADDRESSES.arbitrum.USDC_CIRCLE, - DAI: ADDRESSES.arbitrum.DAI, - USDT: ADDRESSES.arbitrum.USDT, - ARB: ADDRESSES.arbitrum.ARB, - WBTC: ADDRESSES.arbitrum.WBTC, - WETH: ADDRESSES.arbitrum.WETH, - THALES: '0xE85B662Fe97e8562f4099d8A1d5A92D4B453bF30', - OVERTIME: '0x5829d6fe7528bc8e92c4e81cc8f20a528820b51a' - }, - polygon: { - USDCe: ADDRESSES.polygon.USDC, - }, - base: { - USDC: ADDRESSES.base.USDC, - USDbC: ADDRESSES.base.USDbC, - DAI: ADDRESSES.base.DAI, - USDT: ADDRESSES.base.USDT, - WETH: ADDRESSES.base.WETH, - cbBTC: ADDRESSES.base.cbBTC, - THALES: '0xf34e0cff046e154cafcae502c7541b9e5fd8c249', - OVERTIME: '0x7750c092e284e2c7366f50c8306f43c7eb2e82a2' - }, - ethereum: { - OVERTIME: '0x90ce5720c17587d28e4af120ae2d313b3bad1722' - } -} - -module.exports = CHAIN_TOKENS \ No newline at end of file diff --git a/projects/thales/chainConfig.js b/projects/thales/chainConfig.js deleted file mode 100644 index da1a538c0d8..00000000000 --- a/projects/thales/chainConfig.js +++ /dev/null @@ -1,90 +0,0 @@ -const CHAIN_TOKENS = require('./addresses') -const CONTRACTS = require('./constants') - -const CHAIN_CONFIG = { - optimism: { - tokens: CHAIN_TOKENS.optimism, - staking: { - contract: CONTRACTS.optimism.STAKING_CONTRACT, - token: CHAIN_TOKENS.optimism.THALES - }, - speedMarkets: CONTRACTS.optimism.SPEED_MARKETS, - managers: CONTRACTS.optimism.MANAGERS, - pool2: { - lpTokens: CONTRACTS.optimism.LP_TOKEN - }, - stakingPools: [ - { address: CONTRACTS.optimism.SPORTS_POOLS.OVERTIME, token: 'OVERTIME' } - ], - liquidityPools: { - sports: [ - { address: CONTRACTS.optimism.SPORTS_POOLS.USDC, token: 'USDC' }, - { address: CONTRACTS.optimism.SPORTS_POOLS.WETH, token: 'WETH' }, - { address: CONTRACTS.optimism.SPORTS_POOLS.THALES, token: 'THALES' } - ], - digitalOptions: [ - { address: CONTRACTS.optimism.DIGITAL_POOLS.USDC, token: 'USDC' } - ] - } - }, - arbitrum: { - tokens: CHAIN_TOKENS.arbitrum, - staking: { - contract: CONTRACTS.arbitrum.STAKING_CONTRACT, - token: CHAIN_TOKENS.arbitrum.THALES - }, - speedMarkets: CONTRACTS.arbitrum.SPEED_MARKETS, - managers: CONTRACTS.arbitrum.MANAGERS, - pool2: { - lpTokens: CONTRACTS.arbitrum.LP_TOKEN - }, - stakingPools: [ - { address: CONTRACTS.arbitrum.SPORTS_POOLS.OVERTIME, token: 'OVERTIME' } - ], - liquidityPools: { - sports: [ - { address: CONTRACTS.arbitrum.SPORTS_POOLS.USDC, token: 'USDC' }, - { address: CONTRACTS.arbitrum.SPORTS_POOLS.WETH, token: 'WETH' }, - { address: CONTRACTS.arbitrum.SPORTS_POOLS.WBTC, token: 'WBTC' }, - { address: CONTRACTS.arbitrum.SPORTS_POOLS.THALES, token: 'THALES' } - ], - digitalOptions: [ - { address: CONTRACTS.arbitrum.DIGITAL_POOLS.USDC, token: 'USDC' } - ] - } - }, - polygon: { - tokens: CHAIN_TOKENS.polygon, - speedMarkets: CONTRACTS.polygon.SPEED_MARKETS - }, - base: { - tokens: CHAIN_TOKENS.base, - staking: { - contract: CONTRACTS.base.STAKING_CONTRACT, - token: CHAIN_TOKENS.base.THALES - }, - speedMarkets: CONTRACTS.base.SPEED_MARKETS, - managers: CONTRACTS.base.MANAGERS, - pool2: { - lpTokens: CONTRACTS.base.LP_TOKEN - }, - stakingPools: [ - { address: CONTRACTS.base.SPORTS_POOLS.OVERTIME, token: 'OVERTIME' } - ], - liquidityPools: { - sports: [ - { address: CONTRACTS.base.SPORTS_POOLS.USDC, token: 'USDC' }, - { address: CONTRACTS.base.SPORTS_POOLS.WETH, token: 'WETH' }, - { address: CONTRACTS.base.SPORTS_POOLS.cbBTC, token: 'cbBTC' } - ], - digitalOptions: [ - { address: CONTRACTS.base.DIGITAL_POOLS.USDC, token: 'USDC' } - ] - } - }, - ethereum: { - tokens: CHAIN_TOKENS.ethereum, - } -} - -module.exports = CHAIN_CONFIG \ No newline at end of file diff --git a/projects/thales/constants.js b/projects/thales/constants.js deleted file mode 100644 index 46d740e6bf6..00000000000 --- a/projects/thales/constants.js +++ /dev/null @@ -1,85 +0,0 @@ -const CONTRACTS = { - optimism: { - LP_TOKEN: [ - '0x3f60fca6c50ae3bcd95ae150b4c57f0ba5c3f2ad', // USDC/OVER Uniswap V3 - '0x1EaA860dca29a5124F665F7d80AffED92e877681', // OVER/WETH Velodrome Finance V2 - '0x2ee4db658906e04a10874dd8f11bfd32e4439038' // USDC/OVER Uniswap V2 - ], - STAKING_CONTRACT: '0xc392133eea695603b51a5d5de73655d571c2ce51', - SPEED_MARKETS: [ - '0xE16B8a01490835EC1e76bAbbB3Cadd8921b32001', - '0xFf8Cf5ABF583D0979C0B9c35d62dd1fD52cce7C7' - ], - MANAGERS: { - digital: ['0x7f9e03e40d8b95419C7BdF30D256d08f2Ec11Dba'], - sports: ['0x2367FB44C4C2c4E5aAC62d78A55876E01F251605'] - }, - SPORTS_POOLS: { - USDC: '0x0fe1044Fc8C05482102Db14368fE88791E9B8698', - WETH: '0x4f2822D4e60af7f9F70E7e45BC1941fe3461231e', - THALES: '0xE59206b08cC96Da0818522C75eE3Fd4EBB7c0A47', - OVERTIME: '0x59a7A8Ae9d58D69a69b6A24770EC771110647226' - }, - DIGITAL_POOLS: { - USDC: '0x47Da40be6B617d0199ADF1Ec3550f3875b246124' - } - }, - arbitrum: { - LP_TOKEN: [ - "0xf949972f36d30c87761dd220ea06b90de8ca4555", // OVER/WETH Uniswap V3 - "0x4d4904a55e3fa0785ade931ac7856bd805369424", // OVER/USDC Uniswap V3 - "0xfc90c3e2e2412cb4ad3af1a600994a6571274869" // OVER/WETH Uniswap V3 - ], - STAKING_CONTRACT: '0x160Ca569999601bca06109D42d561D85D6Bb4b57', - SPEED_MARKETS: [ - '0x02D0123a89Ae6ef27419d5EBb158d1ED4Cf24FA3', - '0xe92B4c614b04c239d30c31A7ea1290AdDCb8217D' - ], - MANAGERS: { - digital: ['0x95d93c88c1b5190fA7FA4350844e0663e5a11fF0'], - sports: ['0xB155685132eEd3cD848d220e25a9607DD8871D38'] - }, - SPORTS_POOLS: { - USDC: '0x22D180F39A0eB66098cf839AF5e3C6b009383B6A', - WETH: '0xcB4728a1789B87E05c813B68DBc5E6A98a4856bA', - THALES: '0x9733AB157f5A89f0AD7460d08F869956aE2018dA', - OVERTIME: '0xc5f5186b46c84bF63a9e166bfa2175D9bc391ce2', - WBTC: '0xbD08D8F8c17C22fb0a12Fe490F38f40c59B60d2A' - }, - DIGITAL_POOLS: { - USDC: '0xea4c2343Fd3C239c23Dd37dd3ee51AEc84544735' - } - }, - polygon: { - SPEED_MARKETS: [ - '0x4B1aED25f1877E1E9fBECBd77EeE95BB1679c361', - '0x14D2d7f64D6F10f8eF06372c2e5E36850661a537' - ] - }, - base: { - LP_TOKEN: [ - "0xb452f81d9322936c2c8ac6445f6892cb957afb4c", // OVER/WETH Aerodrome - "0x41a6e4db2b4c0c3e550709dfdaf921d2118dfd5f" // OVER/USDC Uniswap V3 - ], - STAKING_CONTRACT: '0x84aB38e42D8Da33b480762cCa543eEcA6135E040', - SPEED_MARKETS: [ - '0x85b827d133FEDC36B844b20f4a198dA583B25BAA', - '0x6848F001ddDb4442d352C495c7B4a231e3889b70' - ], - MANAGERS: { - digital: ['0xc62E56E756a3D14ffF838e820F38d845a16D49dE'], - sports: ['0xA2dCFEe657Bc0a71AC31d146366246202eae18a4'] - }, - SPORTS_POOLS: { - USDC: '0xf86e90412F52fDad8aD8D1aa2dA5B2C9a7e5f018', - WETH: '0xcc4ED8cD7101B512B134360ED3cCB759caB33f17', - OVERTIME: '0xB4199DC163F3206643649E117A816ad0DECb6C3B', - cbBTC: '0x8d4f838327DedFc735e202731358AcFc260c207a' - }, - DIGITAL_POOLS: { - USDC: '0x5713ab44042D92C642444bd2F0fee9c2336F9E3b' - } - } -} - -module.exports = CONTRACTS diff --git a/projects/thales/index.js b/projects/thales/index.js deleted file mode 100644 index 1f17722c0c7..00000000000 --- a/projects/thales/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { staking } = require('../helper/staking') -const { sumChainTvls } = require('@defillama/sdk/build/generalUtil') -const CHAIN_CONFIG = require('./chainConfig') -const helpers = require('./utils') - -// Create module for each chain -const createChainModule = (chain) => { - const config = CHAIN_CONFIG[chain] - const module = { - tvl: (api) => helpers.calculateChainTVL(api, chain) - } - - if (config.pool2) { - module.pool2 = (api) => helpers.calculatePool2TVL(api, chain) - } - - module.staking = (api) => sumChainTvls([ - config.stakingPools ? helpers.calculateStakingTVL(api, chain) : {}, - config.staking ? staking(config.staking.contract, config.staking.token) : {} - ]) - - return module -} - -module.exports = { - methodology: "Calculate TVL for liquidity pools, active markets, speed markets, staking and pool2", - optimism: createChainModule('optimism'), - arbitrum: createChainModule('arbitrum'), - polygon: createChainModule('polygon'), - base: createChainModule('base'), - ethereum: {tvl: async ()=>({})}, - bsc: {tvl: async ()=>({})}, -} \ No newline at end of file diff --git a/projects/thales/utils.js b/projects/thales/utils.js deleted file mode 100644 index eb180db8bce..00000000000 --- a/projects/thales/utils.js +++ /dev/null @@ -1,106 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const abi = require('./abi.json') -const CHAIN_CONFIG = require('./chainConfig') - -const utils = { - getTokenAddress: (chain, symbol) => CHAIN_CONFIG[chain].tokens[symbol], - - addLPTvl: async (api, contract, token) => { - const tokenAddress = utils.getTokenAddress(api.chain, token) - - const currentRound = await api.call({ - target: contract, - abi: abi.round - }) - - const roundPoolAddress = await api.call({ - target: contract, - abi: abi.roundPools, - params: [currentRound] - }) - - const poolBalance = await api.call({ - target: tokenAddress, - abi: 'erc20:balanceOf', - params: [roundPoolAddress] - }) - - api.add(tokenAddress, poolBalance) - }, - - getMarketsFromManager: async (api, manager, abiMethod) => { - return api.call({ - target: manager, - abi: abi[abiMethod], - params: [0, 1000] - }) - }, - - getAllMarkets: async (api, chain) => { - const config = CHAIN_CONFIG[chain] - if (!config.managers) return [] - - const [digitalMarkets, sportsMarkets] = await Promise.all([ - Promise.all((config.managers.digital || []).map(manager => - utils.getMarketsFromManager(api, manager, 'activeMarkets') - )), - Promise.all((config.managers.sports || []).map(manager => - utils.getMarketsFromManager(api, manager, 'getActiveTickets') - )) - ]) - - return [...digitalMarkets.flat(), ...sportsMarkets.flat()] - }, - - calculatePool2TVL: async (api, chain) => { - const config = CHAIN_CONFIG[chain] - if (!config.pool2) return {} - - const lpTokens = config.pool2.lpTokens || [] - - return sumTokens2({ - api, - owners: lpTokens, - tokens: Object.values(config.tokens), - resolveLP: true - }) - }, - - calculateStakingTVL: async (api, chain) => { - const config = CHAIN_CONFIG[chain] - if (!config.stakingPools) return {} - - for (const pool of config.stakingPools) { - await utils.addLPTvl(api, pool.address, pool.token) - } - - return api.getBalances() - }, - - calculateChainTVL: async (api, chain) => { - const config = CHAIN_CONFIG[chain] - - for (const poolType in config.liquidityPools || {}) { - for (const pool of config.liquidityPools[poolType]) { - await utils.addLPTvl(api, pool.address, pool.token) - } - } - - const markets = [ - ...await utils.getAllMarkets(api, chain), - ...(config.speedMarkets || []) - ] - - const validTokens = Object.values(config.tokens).filter(token => - token && token !== '0x0' && token.length > 2 - ) - - return sumTokens2({ - api, - owners: markets, - tokens: validTokens - }) - } -} - -module.exports = utils \ No newline at end of file diff --git a/projects/the-granary/index.js b/projects/the-granary/index.js deleted file mode 100644 index dd798f2f2eb..00000000000 --- a/projects/the-granary/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { methodology, aaveExports } = require('../helper/aave'); - -function v2(v2Registry) { - return aaveExports('', v2Registry) -} - -module.exports = { - methodology, - fantom: v2("0x773E0277667F0c38d3Ca2Cf771b416bfd065da83"), - avax: v2("0xC043BA54F34C9fb3a0B45d22e2Ef1f171272Bc9D"), - optimism: v2("0x872B9e8aea5D65Fbf29b8B05bfA4AA3fE94cC11f"), - ethereum: v2("0x5C93B799D31d3d6a7C977f75FDB88d069565A55b"), - metis: v2("0x37133A8dCA96400c249102E59B11e25b0F663Ee0"), - arbitrum: v2("0x512f582fFCCF3C14bD872152EeAe60866dCB2A1e"), - bsc: v2("0x7c8E7536c5044E1B3693eB564C6dE3a3CE58bbDa"), - base: v2("0x5C93B799D31d3d6a7C977f75FDB88d069565A55b"), - linea: v2("0xd539294830EaF5C22467CE6e085Ae4E02861845A"), -} diff --git a/projects/the-idols/index.js b/projects/the-idols/index.js deleted file mode 100644 index d9a0bb3cf53..00000000000 --- a/projects/the-idols/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x439cac149b935ae1d726569800972e1669d17094" -const virtue_token = "0x9416ba76e88d873050a06e5956a3ebf10386b863" -const stakingAddress = "0x0dd5a35fe4cd65fe7928c7b923902b43d6ea29e7" -const treasuryTokens = [ - [ADDRESSES.ethereum.STETH, false], //stETH - ] -module.exports = ohmTvl(treasury, treasuryTokens, "ethereum", stakingAddress, virtue_token, undefined, undefined, true) \ No newline at end of file diff --git a/projects/the-open-dao-sos/index.js b/projects/the-open-dao-sos/index.js deleted file mode 100644 index b113cd9c063..00000000000 --- a/projects/the-open-dao-sos/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("../helper/staking"); - -const SOS = "0x3b484b82567a09e2588a13d54d032153f0c0aee0"; -const veSOS = "0xEDd27C961CE6f79afC16Fd287d934eE31a90D7D1"; - -module.exports = { - methodology: `TVL for TheOpenDAO consists of the staking of SOS into veSOS to get protocol fees.`, - ethereum:{ - tvl: () => ({}), - staking: staking(veSOS, SOS), - } -} \ No newline at end of file diff --git a/projects/the-parallel/index.js b/projects/the-parallel/index.js deleted file mode 100644 index c323881a5ee..00000000000 --- a/projects/the-parallel/index.js +++ /dev/null @@ -1,21 +0,0 @@ - -const { stakings } = require('../helper/staking') -// Token PRL -const PRL_TOKEN = '0xd07e82440A395f3F3551b42dA9210CD1Ef4f8B24' - -// LPs - // I see that these LPs are locked in https://www.bscscan.com/address/0xe837b727752afc637c29bc9d8d7c3296b0a31067 but the owner is EOA, so it should not be counted towards tvl -const PRL_WBNB_PANCAKE_LP = "0xd69ac770ec555c9cf4cbf2415e22e31fffbbd489" -const PRL_BUSD_PANCAKE_LP = "0xb5FEAE037c2330a8F298F39bcE96dd6E69f4Fa0E" -const PRL_BUSD_KYBER_LP = "0x3E95e07550E9798272130AB65b58f2f17b3f7c57" - -// Contracts -const PRL_LOCKED = '0x9A5AC21399A6Fd7D6232CA0B52A6b0658727A3d2' -const PRL_MINING = '0x21EFC3DDE8a69Fb8A5403406ebDd23e08C924785' - -module.exports = { - bsc: { - staking: stakings([ PRL_MINING, PRL_LOCKED, ], PRL_TOKEN), - tvl: () => ({}), - } -} \ No newline at end of file diff --git a/projects/the-rig/abi.js b/projects/the-rig/abi.js deleted file mode 100644 index d0945d82576..00000000000 --- a/projects/the-rig/abi.js +++ /dev/null @@ -1,211 +0,0 @@ -const rigAbi = { - programType: "contract", - specVersion: "1", - encodingVersion: "1", - concreteTypes: [ - { - type: "()", - concreteTypeId: "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d", - }, - { - type: "b256", - concreteTypeId: "7c5ee1cecf5f8eacd1284feb5f0bf2bdea533a51e2f0c9aabe9236d335989f3b", - }, - { - type: "bool", - concreteTypeId: "b760f44fa5965c2474a3b471467a22c43185152129295af588b022ae50b50903", - }, - { - type: "enum standards::src5::State", - concreteTypeId: "192bc7098e2fe60635a9918afb563e4e5419d386da2bdbf0d716b4bc8549802c", - metadataTypeId: 3, - }, - { - type: "enum std::identity::Identity", - concreteTypeId: "ab7cd04e05be58e3fc15d424c2c4a57f824a2a2d97d67252440a3925ebdc1335", - metadataTypeId: 4, - }, - { - type: "enum std::option::Option", - concreteTypeId: "d852149004cc9ec0bbe7dc4e37bffea1d41469b759512b6136f2e865a4c06e7d", - metadataTypeId: 5, - typeArguments: ["1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0"], - }, - { - type: "str[18]", - concreteTypeId: "58917167d101d95177bf16f9bb6db90f521ee1af6337127222eda49f2066c4bb", - }, - { - type: "str[6]", - concreteTypeId: "ed705f920eb2c423c81df912430030def10f03218f0a064bfab81b68de71ae21", - }, - { - type: "struct std::asset_id::AssetId", - concreteTypeId: "c0710b6731b1dd59799cf6bef33eee3b3b04a2e40e80a0724090215bbf2ca974", - metadataTypeId: 24, - }, - { - type: "u64", - concreteTypeId: "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", - }, - { - type: "u8", - concreteTypeId: "c89951a24c6ca28c13fd1cfdc646b2b656d69e61a92b91023be7eb58eb914b6b", - }, - ], - metadataTypes: [ - { - type: "(_, _)", - metadataTypeId: 0, - components: [ - { - name: "__tuple_element", - typeId: 24, - }, - { - name: "__tuple_element", - typeId: 24, - }, - ], - }, - { - type: "enum standards::src5::State", - metadataTypeId: 3, - components: [ - { - name: "Uninitialized", - typeId: "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d", - }, - { - name: "Initialized", - typeId: 4, - }, - { - name: "Revoked", - typeId: "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d", - }, - ], - }, - { - type: "enum std::identity::Identity", - metadataTypeId: 4, - components: [ - { - name: "Address", - typeId: 23, - }, - { - name: "ContractId", - typeId: 27, - }, - ], - }, - { - type: "enum std::option::Option", - metadataTypeId: 5, - components: [ - { - name: "None", - typeId: "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d", - }, - { - name: "Some", - typeId: 9, - }, - ], - typeParameters: [9], - }, - { - type: "generic T", - metadataTypeId: 9, - }, - { - type: "raw untyped ptr", - metadataTypeId: 10, - }, - { - type: "struct std::asset_id::AssetId", - metadataTypeId: 24, - components: [ - { - name: "bits", - typeId: "7c5ee1cecf5f8eacd1284feb5f0bf2bdea533a51e2f0c9aabe9236d335989f3b", - }, - ], - }, - { - type: "struct std::bytes::Bytes", - metadataTypeId: 25, - components: [ - { - name: "buf", - typeId: 26, - }, - { - name: "len", - typeId: "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", - }, - ], - }, - { - type: "struct std::bytes::RawBytes", - metadataTypeId: 26, - components: [ - { - name: "ptr", - typeId: 10, - }, - { - name: "cap", - typeId: "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", - }, - ], - }, - { - type: "struct std::string::String", - metadataTypeId: 28, - components: [ - { - name: "bytes", - typeId: 25, - }, - ], - }, - ], - functions: [ - { - inputs: [], - name: "get_sanitized_price", - output: "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", - attributes: [ - { - name: "storage", - arguments: ["read"], - }, - ], - }, - { - inputs: [ - { - name: "asset", - concreteTypeId: "c0710b6731b1dd59799cf6bef33eee3b3b04a2e40e80a0724090215bbf2ca974", - }, - ], - name: "total_supply", - output: "d852149004cc9ec0bbe7dc4e37bffea1d41469b759512b6136f2e865a4c06e7d", - attributes: [ - { - name: "storage", - arguments: ["read"], - }, - ], - }, - ], - loggedTypes: [], - messagesTypes: [], - configurables: [], -}; - -module.exports = { - rigAbi -} \ No newline at end of file diff --git a/projects/the-rig/index.js b/projects/the-rig/index.js deleted file mode 100644 index e88c9f3e6df..00000000000 --- a/projects/the-rig/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { query } = require("../helper/chain/fuel") -const { rigAbi } = require('./abi'); - -const rigContract = "0x2181f1b8e00756672515807cab7de10c70a9b472a4a9b1b6ca921435b0a1f49b"; -const stFuelAssetId = { bits: "0x5505d0f58bea82a052bc51d2f67ab82e9735f0a98ca5d064ecb964b8fd30c474" }; - -const fuelAssetId = "0x1d5d97005e41cae2187a895fd8eab0506111e0e2f3331cd3912c15c24e3c1d82"; - -async function tvl(api) { - let redemptionRate = await query({ contractId: rigContract, abi: rigAbi, method: 'get_sanitized_price' }); - const totalSupply = await query({ contractId: rigContract, abi: rigAbi, method: 'total_supply', params: [stFuelAssetId] }); - - const fuelStaked = totalSupply * redemptionRate / 1e9 - api.add(fuelAssetId, fuelStaked); -} - -module.exports = { - methodology: 'Fetches the total supply of stFuel and the redemption rate to calculate the total value of staked Fuel', - fuel: { tvl } -} diff --git a/projects/the-sandbox.js b/projects/the-sandbox.js deleted file mode 100644 index 0f6b6e59f49..00000000000 --- a/projects/the-sandbox.js +++ /dev/null @@ -1,21 +0,0 @@ -const { pool2 } = require("./helper/pool2"); - -// Staking on Mainnet: uni-v2 -const SAND_ETH_univ2 = "0x3dd49f67E9d5Bc4C5E6634b3F70BfD9dc1b6BD74"; -const SAND_ETH_univ2_staking = "0xeae6fd7d8c1740f3f1b03e9a5c35793cd260b9a6"; -// Staking on Polygon: uni-v2 -const SAND_MATIC_quick = "0x369582d2010b6ed950b571f4101e3bb9b554876f"; -const SAND_MATIC_quick_staking = "0x4ab071c42c28c4858c4bac171f06b13586b20f30"; - -module.exports = { - polygon: { - tvl: () => ({}), - pool2: pool2(SAND_MATIC_quick_staking, SAND_MATIC_quick,), - }, - ethereum: { - tvl: () => ({}), - pool2: pool2(SAND_ETH_univ2_staking, SAND_ETH_univ2), - }, - methodology: - "SAND LP on quickswap and uniswap-v2 can be staked as pool2 - only component of the Sandbox TVL at the moment", -}; diff --git a/projects/thedeep/index.js b/projects/thedeep/index.js deleted file mode 100644 index bf9b6d1ac71..00000000000 --- a/projects/thedeep/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const abi = { - "getTotalAmounts": "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", -} - -module.exports = { - methodology: "Vault deposits", - misrepresentedTokens: true, - doublecounted: true, -} // node test.js projects/thedeep/index.js - -const eventAbi = 'event ICHIVaultCreated (address indexed sender, address ichiVault, address tokenA, bool allowTokenA, address tokenB, bool allowTokenB, uint24 fee, uint256 count)' -const topic = '0xde147f43b6837f282eee187234c866cf001806167325f3ea883e36bed0c16a20' - -const config = { - base: { - vaultConfigs: [ - { factory: '0xBff23e60F41A11cf131B7180Cbd2BD3d47d17ad1', fromBlock: 32389228, }, // Aerodrome Legacy - { factory: '0xf6B5Ab192F2696921F60a1Ff00b99596C4045FA6', fromBlock: 34267944, }, // Aerodrome - { factory: '0xaBe5B5AC472Ead17B4B4CaC7fAF42430748ab3b3', fromBlock: 12978552, }, // Uniswap - ] - }, - celo: { - vaultConfigs: [ - { factory: '0xB3bf88Cb919a222A6F9c90ca8a9ac261CBD3e5bF', fromBlock: 38293141, }, // Velodrome Legacy - { factory: '0x82DcA62C4B5Dd28Cc85CE8Ae3B170Ce020e33870', fromBlock: 38293141, }, // Velodrome - ], - }, - flow: { - vaultConfigs: [ - { factory: '0x3bE78614342C7763d87520b2502085761Aa4e5f8', fromBlock: 39081014, }, // KittyPunch - ], - }, - ink: { - vaultConfigs: [ - { factory: '0x65CD1f0ac298519BE4891B5812053e00BD2074AC', fromBlock: 1303936, }, // Reservoir (v1.1) - { factory: '0x64dA1Ab5b42c71E8FaF1664745af911B859A06D4', fromBlock: 16767552, }, // Velodrome (fee) Legacy - { factory: '0x822b0bE4958ab5b4A48DA3c5f68Fc54846093618', fromBlock: 21830207, }, // Velodrome (fee) - ], - }, - katana: { - vaultConfigs: [ - { factory: '0x9176B8Eb7Fdff309BE258F2F2eDB32a8b79f19B5', fromBlock: 4739302, }, // Sushi - ] - }, - hemi: { - vaultConfigs:[ - { factory: '0x5541Bcd3d163326CF12267D1cF6207dbde788348', fromBlock: 2624151, }, // Sushi - ] - }, -} - -Object.keys(config).forEach(chain => { - const { vaultConfigs = [], oneFactory } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const blacklistedTokens = [] - - for (const { - factory, - fromBlock, - } of vaultConfigs) { - const logs = await getLogs({ - api, - target: factory, - topics: [topic], - eventAbi: eventAbi, - onlyArgs: true, - fromBlock, - }) - const vaultBalances = await api.multiCall({ abi: abi.getTotalAmounts, calls: logs.map(l => l.ichiVault), permitFailure: true }) - vaultBalances.forEach((b, i) => { - if (!b) return - const { tokenA, tokenB } = logs[i] - if (!blacklistedTokens.includes(tokenA.toLowerCase())) api.add(tokenA, b.total0) - if (!blacklistedTokens.includes(tokenB.toLowerCase())) api.add(tokenB, b.total1) - }) - } - - return api.getBalances() - } - } -}) diff --git a/projects/thedon/index.js b/projects/thedon/index.js deleted file mode 100644 index 02ca3e2610c..00000000000 --- a/projects/thedon/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const chef = "0xa50ACA2e1c94652Ab842E64410bCe53247eF88ac" -const thedon = "0x62E96896d417dD929A4966f2538631AD5AF6Cb46" - -module.exports = { - ...masterChefExports(chef, "fantom", thedon, false), -} diff --git a/projects/thedragonslair/index.js b/projects/thedragonslair/index.js deleted file mode 100644 index b354fc37b44..00000000000 --- a/projects/thedragonslair/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'avax', - masterchef: '0xC0F19836931F5Ab43f279D4DD5Ab3089846Db264', - nativeToken: '0x88c090496125b751B4E3ce4d3FDB8E47DD079c57', -}) \ No newline at end of file diff --git a/projects/thegoblins/index.js b/projects/thegoblins/index.js deleted file mode 100644 index fc1ef25576c..00000000000 --- a/projects/thegoblins/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const bank = '0xceF63C8507004a8d079daE3c83e369De0Adfa7Aa' - -async function tvl(api) { - const [bankToken, bankBalance] = await Promise.all([ - api.multiCall({ abi: 'address:baseToken', calls: [bank], }), - api.multiCall({ abi: 'uint256:getLastUpdatedModulesBalance', calls: [bank], }), - ]) - api.addTokens(bankToken, bankBalance) -} - -module.exports = { - methodology: 'Gets the total balance in the Goblin Bank from the amount allocated in the different strategies.', - arbitrum: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/thegrandbanks/abi.json b/projects/thegrandbanks/abi.json deleted file mode 100644 index 6845d25c2b7..00000000000 --- a/projects/thegrandbanks/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accGrandPerShare, address strat, address frySailing, address fryLanding, bool isLp)", - "wantLockedTotal": "uint256:wantLockedTotal", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/thegrandbanks/index.js b/projects/thegrandbanks/index.js deleted file mode 100644 index 9a4b7b32b08..00000000000 --- a/projects/thegrandbanks/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { sumTokens2, } = require("../helper/unwrapLPs"); - -const GRAND = { - bsc: "0xeE814F5B2bF700D2e843Dc56835D28d095161dd9", - polygon: "0x14af08eccF4E305a332E1B7E146EbEC98A9637F0", -}; - -const GRANDBANKS_CONTRACT = { - bsc: "0x3d8fd880976a3EA0f53cad02463867013D331107", - polygon: "0xcF8070d9fbE3F96f4bFF0F90Cc84BfD30869dAF2", - moonriver: "0xC6da8165f6f5F0F890c363cD67af1c33Bb540123", -}; - -async function tvl(api) { - let masterchef = GRANDBANKS_CONTRACT[api.chain]; - - const infos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: masterchef }) - const strats = infos.map(i => i.strat) - const tokens = infos.map(i => i.want) - const bals = await api.multiCall({ abi: abi.wantLockedTotal, calls: strats }) - api.add(tokens, bals) - const blacklistedTokens = ['0x9116F04092828390799514Bac9986529d70c3791', '0x124166103814E5a033869c88e0F40c61700Fca17', '0x7Edcdc8cD062948CE9A9bc38c477E6aa244dD545', '0xAA5509Ce0ecEA324bff504A46Fc61EB75Cb68B0c'] - if (GRAND[api.chain]) { - blacklistedTokens.push(GRAND[api.chain]) - } - blacklistedTokens.forEach(token => api.removeTokenBalance(token)) - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - staking: staking(GRANDBANKS_CONTRACT.bsc, GRAND.bsc), - tvl, - }, - polygon: { - staking: staking(GRANDBANKS_CONTRACT.polygon, GRAND.polygon), - tvl, - }, - moonriver: { - tvl, - }, - methodology: - "TVL counts the LP tokens that have been deposited to the protocol. The LP tokens are unwrapped and the balances are summed per token.", -}; diff --git a/projects/thegraph/index.js b/projects/thegraph/index.js deleted file mode 100644 index 4eb917147df..00000000000 --- a/projects/thegraph/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - methodology: "TVL counts GRT tokens deposited on the Staking contracts.", - start: '2023-06-25', - ethereum: { - staking: staking('0xF55041E37E12cD407ad00CE2910B8269B01263b9', '0xc944E90C64B2c07662A292be6244BDf05Cda44a7'), - tvl: () => ({}) - }, - arbitrum: { - staking: staking('0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03', '0x9623063377AD1B27544C965cCd7342f7EA7e88C7'), - } -} \ No newline at end of file diff --git a/projects/themis-capital-dex/index.js b/projects/themis-capital-dex/index.js deleted file mode 100644 index f799cd24e12..00000000000 --- a/projects/themis-capital-dex/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - filecoin: { - tvl: getUniTVL({ - factory: '0xe250A89d23F466c14B26BDF60a0DC3b54974FBE9', - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/themis-capital-ohm/index.js b/projects/themis-capital-ohm/index.js deleted file mode 100644 index 22ed94313ca..00000000000 --- a/projects/themis-capital-ohm/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - filecoin: { - tvl: () => ({}), - staking: sumTokensExport({ - owner: '0xA8a3136111ca0b010C9FD5C2D6d7c71e4982606A', - tokens: ['0x005E02A4A934142d8Dd476F192d0dD9c381b16b4'], - lps: ['0x45680718F6BdB7Ec3A7dF7D61587aC7C3fB49d50'], - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/themis-exchange/index.js b/projects/themis-exchange/index.js deleted file mode 100644 index 3d9597ce3a9..00000000000 --- a/projects/themis-exchange/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { addressProvider: '0x75F805e2fB248462e7817F0230B36E9Fae0280Fc', }, -} - -// module.exports = { -// hallmarks: [ -// ['2023-06-27', 'Protocol was exploited and lost $370k'], -// ], -// }; -Object.keys(config).forEach(chain => { - const { addressProvider } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.call({ abi: abi.getReservesList, target: addressProvider }) - const tokenData = await api.multiCall({ abi: abi.getReserveData, target: addressProvider, calls: tokens, }) - return sumTokens2({ api, tokensAndOwners2: [tokens, tokenData.map(i => i.aTokenAddress)], }) - }, - // borrowed, - } -}) - -async function borrowed(api) { - const { addressProvider } = config[api.chain] - const tokens = await api.call({ abi: abi.getReservesList, target: addressProvider }) - const tokenData = await api.multiCall({ abi: abi.getReserveData, target: addressProvider, calls: tokens, }) - const vDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.variableDebtTokenAddress), }) - const sDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.stableDebtTokenAddress), }) - tokens.forEach((token, i) => { - const variableDebt = vDebtSupply[i] - const stableDebt = sDebtSupply[i] - api.add(token, variableDebt) - api.add(token, stableDebt) - }) - return api.getBalances() -} - -const abi = { - "getReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))", - "getReservesList": "address[]:getReservesList", -} \ No newline at end of file diff --git a/projects/thena-integral/index.js b/projects/thena-integral/index.js deleted file mode 100644 index b8f1150343f..00000000000 --- a/projects/thena-integral/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - bsc: { factory: "0x30055F87716d3DFD0E5198C27024481099fB4A98", fromBlock: 44121855, isAlgebra: true, blacklistedTokens: ['0x39e3ca118ddfea3edc426b306b87f43da3251b4a'] }, -}); - diff --git a/projects/thena-v3/index.js b/projects/thena-v3/index.js deleted file mode 100644 index 84e0d7727f9..00000000000 --- a/projects/thena-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - bsc: { factory: "0x306F06C147f064A010530292A1EB6737c3e378e4", fromBlock: 26030310, isAlgebra: true, blacklistedTokens: ['0x39e3ca118ddfea3edc426b306b87f43da3251b4a'] }, -}); diff --git a/projects/thena/index.js b/projects/thena/index.js deleted file mode 100644 index e527f593cb6..00000000000 --- a/projects/thena/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: "0xafd89d21bdb66d00817d4153e055830b1c2b3970", - useDefaultCoreAssets: true, - }), - }, - op_bnb: { - tvl: getUniTVL({ - factory: "0xFC1bC666A98703505534477E651A2470508C99A4", - useDefaultCoreAssets: true, - }), - }, -}; diff --git a/projects/theo-network-thbill/index.js b/projects/theo-network-thbill/index.js deleted file mode 100644 index 71e3d841e00..00000000000 --- a/projects/theo-network-thbill/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs") - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: '0xAECCa546baFB16735b273702632C8Cbb83509d8F', tokens: ['0x50293DD8889B931EB3441d2664dce8396640B419', ADDRESSES.ethereum.USDC,]}) - }, - arbitrum: { - tvl: sumTokensExport({ owner: '0xAECCa546baFB16735b273702632C8Cbb83509d8F', tokens: ['0xc26af85ede9cc25d449bcebef866bb85afd5d346', ]}) - }, -} diff --git a/projects/theo-network/index.js b/projects/theo-network/index.js deleted file mode 100644 index d0c63fe5ea2..00000000000 --- a/projects/theo-network/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const config = { - ethereum: {}, - arbitrum: {}, - base: {}, - linea: {}, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const { [chain]: data } = await getConfig('theo-network', "https://vaults.theo.xyz/vaults/vaultInfo"); - - const calls = Object.values(data).map(i => i.contract) - const tokens = Object.values(data).map(i => i.asset) - const bals = await api.multiCall({ abi: 'uint256:totalBalance', calls }) - api.add(tokens, bals) - } - } -}) \ No newline at end of file diff --git a/projects/thermes-finance/index.js b/projects/thermes-finance/index.js deleted file mode 100644 index e4425789d1b..00000000000 --- a/projects/thermes-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { tombTvl } = require("../helper/tomb"); - -const thermesTokenAddress = "0x0d7CC067eC64c28bAc1f4f2459d8C2E2603fF78A"; -const taresTokenAddress = "0x158521Ab22A4e22f01E6F2d3717cA85341dc694A"; -const taresRewardPoolAddress = "0xf29F50Be3cD4F1a3960bf71B41302e2eC6c8eFe4"; -const boardroomAddress = "0x254033dA5000E3007d60A10466465EBf122e1851"; -const ftmLPs = [ - "0x50E880EA5403283e31cb65da7b549a381b8C69C8", // thermesFtmLpAddress - "0xac4fa4dBb84932E7377229444f63e06E855Bb2F6", //taresFtmLpAddress -]; - -module.exports = { - ...tombTvl(thermesTokenAddress, taresTokenAddress, taresRewardPoolAddress, boardroomAddress, ftmLPs, "fantom", undefined, false, ftmLPs[1]) -} \ No newline at end of file diff --git a/projects/theseedfarm/index.js b/projects/theseedfarm/index.js deleted file mode 100644 index b0adfb52c05..00000000000 --- a/projects/theseedfarm/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef") - -const masterchef = "0x7E0F299F9bb375c44Ddf1b4E520a8eaAE7564D96"; -const token = "0x37427C72f3534d854EE462d18f42aD5fbE74AA2B"; - -module.exports = { - ...masterChefExports(masterchef, "avax", token) -} \ No newline at end of file diff --git a/projects/thetanuts/index.js b/projects/thetanuts/index.js deleted file mode 100644 index 7dd59f23f32..00000000000 --- a/projects/thetanuts/index.js +++ /dev/null @@ -1,342 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, sumTokens2 } = require('../helper/unwrapLPs') - -// Ethereum Vaults -const ethCallVault = '0x9014f8E90423766343Ed4fe41668563526dF6715' -const ethPutVault = '0x6d2Cdb589BE6037Df1AeA5dC433829aD5aF30013' -const wbtcCallVault = '0x60a4422B6B52aEF50647c67F29D6a7e6DAc3CCBC' - -// Ethereum - Wheel -const synWethBi = '0x3567e2A6E161f3623307Aa4e59ceab6dEFf6291f' - -const lunaPutVault = '0x49d8cde90cefdd4f8568f7d895e686fdb76b146e' -const algoPutVault = '0xC2DD9C7F526C7465D14bbBb25991DaB35f8Ea2B4' -const algoCallVault = '0xb8b5A6E1F300b023e9CdCa31AA94B0D66badd982' -const bitPutVault = '0x4Ca3e8bD2F471415b9131E35bdcEC0819a4E7a83' -const bitCallVault = '0x9F639524db6DfD57613895b0abb49A53c11B3f0e' - -// Ethereum - Stronghold IndexUSDC vaults -const indexUSDC_BTC_1wk = "0x3BA337F3167eA35910E6979D5BC3b0AeE60E7d59" -const indexUSDC_ETH_2wk_a = "0xE1c93dE547cc85CBD568295f6CC322B1dbBCf8Ae" -const indexUSDC_AVAX_2wk_b = "0x248038fDb6F00f4B636812CA6A7F06b81a195AB8" -const indexUSDC_FTM_2wk_a = "0x182E7DAD39C8412ce1258B01f1a25afDC6c2294d" -const indexUSDC_SOL_2wk_b = "0xb466a23c77df358B8B1e86514411c5Fe0D613896" -const indexUSDC_MATIC_2wk_a = "0xAD57221ae9897DA08656aaaBd5B1D4673d4eDE71" -const indexUSDC_BNB_2wk_b = "0xE5e8caA04C4b9E1C9bd944A2a78a48b05c3ef3AF" - -// Ethereum - Stronghold IndexETH vaults -const indexETH_BiWeekly_A = "0xcb317b4b7CB45ef6D5Aa4e43171d16760dFE5eeA" -const indexETH_BiWeekly_B = "0x71F5d6fa67c2C9D2b76246569093390d02F80678" - -// Ethereum - Stronghold IndexBTC vaults -const indexBTC_BiWeekly_A = "0xB2d3102944dEc6c4D7B0d87cA9De6eB13B70c11e" -const indexBTC_BiWeekly_B = "0xB1105529305f166531b7d857B1d6f28000278aff" - -// Ethereum - Boosted Positions (Aave V2 Fork) -const PTeETH_27JUN24 = '0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966' -const aPTeETH_27JUN24 = '0xE6A9465B9DA25Ddacc55AF5F2a111Db4E80Ba20D' -const aWETH = '0xE41645Db7C6813993eEA1cBA83912cE07d8a6d29' -const PTUSDe_25JUL24 = '0xa0021EF8970104c2d008F38D92f115ad56a9B8e1' -const aPTUSDe_25JUL24 = '0xCe51Ca8D61dAb1f84bD95329218b87E95054aB22' -const aUSDC = '0xFB3CbdA3145Fac86040bE8501e0750cd1ddDA0Af' -const PTweeths_29AUG24 = '0xda6530efafd63a42d7b9a0a5a60a03839cdb813a' -const aPTweeths_29AUG24 = '0xb33587882dEe85B3dCcd5C82d942BB10119f8BB0' -const PTunieth_26SEP24 = '0x15fA86404BFbA8b46684552F792558128bFB6418' -const aPTunieth_26SEP24 = '0x4390a8E941b0B16a8E6B670D878a9eF6d3e11725' -const PTweeth_26DEC24 = '0x6ee2b5E19ECBa773a352E5B21415Dc419A700d1d' -const aPTweeth_26DEC24 = '0xBE8b41bDd18b0f0f47DbF338cfA837469F755d95' -const PTezeth_26DEC24 = '0xf7906F274c174A52d444175729E3fa98f9bde285' -const aPTezeth_26DEC24 = '0xD9309EA9e2336A9Fe2A15b04D9036Db15A729047' -const PTksusde_26SEP24 = '0xd351de53277c4218CC29f793263FB60E2fcFC1dC' -const aPTksusde_26SEP24 = '0x2b04E9ebeCC71BC3450C1C7B1FB8E0404E870d59' -const PTsusde_26SEP24 = '0x6c9f097e044506712B58EAC670c9a5fd4BCceF13' -const aPTsusde_26SEP24 = '0x024F400F55dc1b877695Ba4e8e53a509Fb3F0BF2' - - -// Avalanche Vaults -const avaxCallVault = '0xd06Bd68d58eD40CC2031238A3993b99172ea37cA' -const avaxPutVault = '0xa84aA41B6287aFE467ccE688f3796A2205198F07' - -// Fantom Vaults -const ftmCallVault = '0x302ABD505757FD355C8ef3cF8b4918D6404f4996' -const ftmPutVault = '0x7EDa4C29726355D0d8E85001B9152158b35Eae4f' - -//BSC Vaults -const adaCallVault = '0xF98297A842f52Cd1f6c6f5f003Cd701813b1C461' -const adaPutVault = '0x8BE731cB3b301b4a209C1A38ea14D6438e6913F6' -const bchCallVault = '0xc879ecC0d2cdA26072e9049178a99B26C51eDF8a' -const bchPutVault = '0xfe9B8054B947aCEeC01912Cf1811DB06fc804b69' -const wbnbCallVault = '0x9EF72De1782431cf54518c42C06e26014E7201D1' -const wbnbPutVault = '0xc75C3BE0Bc41857B9c1a675475F6E0a7c5Db63fC' - -//Woo Vaults -const wooSynVault_Bi_10 = '0x74b9C75ee344cc6D323489906c571912980d03ac' -const wooSynVault_Bi_25 = '0x91E3d1461B4655E48Be431895E483C3b17915DA5' -const wooSynVault_Mo_10 = '0x68B727b3D2EC73026FD1c7B9f736604f1c09C541' -const wooSynVault_Mo_25 = '0x640C8EEFa86bA6B93fA1cdEBDA0766cb64dA2d17' - -//Polygon Vaults -const wMaticCallVault = '0x9dA79023Af00d1f2054BB1eED0D49004fe41C5b5' -const wMaticPutVault = '0x1724B8679A9CaD6CABDef7DbEE1d5b03b44584B2' - -// Polygon - Stronghold IndexUST vaults -const indexUST_LUNA_2wk_a = "0x400f7569AfCF3E756A427DD7522DFE2De4664717" -const indexUST_LUNA_2wk_b = "0x112AdEC687FA605CE3221943C301Ed99B7C33Ed7" - -//Aurora Vaults -const nearCallVault = '0xfc7F11Bb0d97d9db1f701eEA0fDE611536F1EB5F' - -//cronos vaults -const cronosCallVault = '0x99F05418967d3596CAfd260913b682Fd9b0CBB40' - - -//Boba Vaults -const bobaCallVault = '0x5a9f1D95C59365613B4224e690Bb4971DD246142' -const bobaPutVault = '0xff5fe7909fc4d0d6643f1e8be8cba72610d0b485' - -//Arbitrum Vaults -const arbCallVault = '0x0833EC3262Dcc417D88f85Ed5E1EBAf768080f41' -const arbPutVault = '0xf94ea5B18401821BE07FBfF535B8211B061A7F70' -const ethCallVaultArb = '0x1D1CD4abe0F2AF9d79b5e3149BF4A503f97C1EAd' -const ethPutVaultArb = '0xA8459eC6DF0D9a61058C43a308dD8A2CEc9d550E' -// Assets locked in Aave V2 fork -const aArb_ARB = '0x116a7f52556a57F807CEACe228242C3c91D2C7E5' -const aUsdc_ARB = '0xBEe683e6e5CE1e7Ea07c6f11DF240AcD92c33632' -const aWeth_ARB = '0xBbf03fC0C8441e9cc50cC087f74899C137597b6e' -// LongLiquidityVaults - Holds aAssets (not counted) and V3 liquidity NFTs -const arbC_LLV = '0x721Bba1556649e9c70E2dF1EAFC04270376025f7' -const arbP_LLV = '0x57eD79afD32c616E4631231636F4597188d20C5e' -const ethC_LLV = '0x078F98Be8A1bb1bD64799B8F05Aca08f5850A69D' -const ethP_LLV = '0xE84CB9daF67644734051c7f6e978968f04F6751e' -// Boosted assets (Selling options backed by yielding assets) (locked in Aave V2 Fork) -const PTezETH_27JUN24 = '0x8EA5040d423410f1fdc363379Af88e1DB5eA1C34' -const aPTezETH_27JUN24 = '0x2F741a91dCe2a1e1Ed24c88F93A0f3530f1CBf2C' -const PTrsETH_27JUN24 = '0xAFD22F824D51Fb7EeD4778d303d4388AC644b026' -const aPTrsETH_27JUN24 = '0x121b956D11EaeCFD3f0CdF259D6faFFEbEDD0bC9' -const PTweETH_27JUN24 = '0x1c27Ad8a19Ba026ADaBD615F6Bc77158130cfBE4' -const aPTweETH_27JUN24 = '0x1B38B4586003E64c6c87F4acaF4f15415C2034EB' - -const PTweETH_26SEP24 = '0xb8b0a120F6A68Dd06209619F62429fB1a8e92feC' -const aPTweETH_26SEP24 = '0xF5d0866646DF182Fb9BC7FB27B26B84F96b2239d' -const PTezETH_26SEP24 = '0x2CCFce9bE49465CC6f947b5F6aC9383673733Da9' -const aPTezETH_26SEP24 = '0x3F9ca12e7D4867E45b289484a3F33bbA2A1b8723' -const PTrsETH_26SEP24 = '0x30c98c0139B62290E26aC2a2158AC341Dcaf1333' -const aPTrsETH_26SEP24 = '0x0B6Ef11254edCab4b164daa7e626Dc0d0c2Ad51f' -const PTuniETH_26DEC24 = '0x22e9ad26ea0e65a7073571d5d7172ff6336084ad' -const aPTuniETH_26DEC24 = '0x3D3a1CAA95D427b9fF63b93cB90e1a470eeBA5D7' - -// Polygon zkEVM vaults -const stMaticCallVault = '0x7bF3c7C23501EA3E09B237D6F8AdcB7Ea3CeF41C' - -// Ethereum Assets -const weth = ADDRESSES.ethereum.WETH -const usdc = ADDRESSES.ethereum.USDC -const wbtc = ADDRESSES.ethereum.WBTC -const ust = '0xa693b19d2931d498c5b318df961919bb4aee87a5' -const tUSDC = '0x9f238fae3d1f1982716f136836fc2c0d1c2928ab' -const tAlgo = '0x0354762a3c01730d07d2f7098365d64dc81b565d' -const bit = '0x1a4b46696b2bb4794eb3d4c26f1c55f9170fa4c5' -const ausdc = '0xBcca60bB61934080951369a648Fb03DF4F96263C' // Aave V2 USDC - -// Avalanche Assets -const wavax = ADDRESSES.avax.WAVAX -const usdce = ADDRESSES.avax.USDC_e -const usdc_avax = ADDRESSES.avax.USDC - -// Fantom Assets -const wftm = ADDRESSES.fantom.WFTM -const fusdc = ADDRESSES.fantom.USDC - -// Binance Smart Chain Assets -const busd = ADDRESSES.bsc.BUSD -const ada = '0x3ee2200efb3400fabb9aacf31297cbdd1d435d47' -const bch = '0x8ff795a6f4d97e7887c79bea79aba5cc76444adf' -const wbnb = ADDRESSES.bsc.WBNB -const woo = '0x4691937a7508860F876c9c0a2a617E7d9E945D4B' - -// Polygon Assets -const wmatic = ADDRESSES.polygon.WMATIC_2 -const pousdc = ADDRESSES.polygon.USDC -const ust_matic_wormhole = '0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59' - -// Aurora Assets -const near = ADDRESSES.aurora.NEAR - -// Boba Assets -let boba = ADDRESSES.boba.BOBA -const bobaUSDC = ADDRESSES.boba.USDC - -// cronos assets -const wcro = ADDRESSES.cronos.WCRO_1 - -// Arbitrum assets -const arb = ADDRESSES.arbitrum.ARB -const usdc_arb = ADDRESSES.arbitrum.USDC_CIRCLE -const weth_arb = ADDRESSES.arbitrum.WETH -const univ3nft_arb = '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' - -// Polygon zkEVM assets -const stMatic = '0x83b874c1e09D316059d929da402dcB1A98e92082' - -module.exports = { - methodology: `Funds deposited into Thetanuts Finance via the Basic Vaults, Lending Market, and AMM are calculated as TVL.`, - hallmarks: [ - [1646658000, 'Migration from v0 to v1'], - [1664460000, 'Migration from v1 to v2'], - [1702472400, 'Launch of Thetanuts Finance v3'], - ], -} - -const config = { - ethereum: { - tokensAndOwners: [ - [weth, ethCallVault,], - [usdc, ethPutVault,], - [wbtc, wbtcCallVault,], - [ust, lunaPutVault,], - [tUSDC, algoPutVault,], - [tAlgo, algoCallVault,], - [usdc, bitPutVault,], - [bit, bitCallVault,], - - [weth, synWethBi,], - [usdc, synWethBi,], - - [usdc, indexUSDC_BTC_1wk,], - [usdc, indexUSDC_ETH_2wk_a,], - [usdc, indexUSDC_AVAX_2wk_b,], - [usdc, indexUSDC_FTM_2wk_a,], - [usdc, indexUSDC_SOL_2wk_b,], - [usdc, indexUSDC_MATIC_2wk_a,], - [usdc, indexUSDC_BNB_2wk_b,], - - [weth, indexETH_BiWeekly_A,], - [weth, indexETH_BiWeekly_B,], - [wbtc, indexBTC_BiWeekly_A,], - [wbtc, indexBTC_BiWeekly_B,], - - [ausdc, indexUSDC_BTC_1wk,], - [ausdc, indexUSDC_ETH_2wk_a,], - [ausdc, indexUSDC_AVAX_2wk_b,], - [ausdc, indexUSDC_MATIC_2wk_a,], - [ausdc, indexUSDC_BNB_2wk_b,], - [ausdc, ethPutVault,], - - [weth, aWETH,], - [PTeETH_27JUN24, aPTeETH_27JUN24,], - [PTweeths_29AUG24, aPTweeths_29AUG24,], - [PTunieth_26SEP24, aPTunieth_26SEP24,], - - [PTweeth_26DEC24, aPTweeth_26DEC24,], - [PTezeth_26DEC24, aPTezeth_26DEC24,], - - [usdc, aUSDC,], - [PTUSDe_25JUL24, aPTUSDe_25JUL24,], - [PTsusde_26SEP24, aPTsusde_26SEP24,], - [PTksusde_26SEP24, aPTksusde_26SEP24,], - - ] - }, - avax: { - tokensAndOwners: [ - [wavax, avaxCallVault,], - [usdc_avax, avaxPutVault,], - ] - }, - arbitrum: { - tokensAndOwners: [ - [arb, arbCallVault,], - [usdc_arb, arbPutVault,], - [weth_arb, ethCallVaultArb,], - [usdc_arb, ethPutVaultArb,], - [arb, aArb_ARB,], - [weth_arb, aWeth_ARB,], - [usdc_arb, aUsdc_ARB,], - - [PTezETH_27JUN24, aPTezETH_27JUN24,], - [PTrsETH_27JUN24, aPTrsETH_27JUN24,], - [PTweETH_27JUN24, aPTweETH_27JUN24,], - - [PTezETH_26SEP24, aPTezETH_26SEP24,], - [PTrsETH_26SEP24, aPTrsETH_26SEP24,], - [PTweETH_26SEP24, aPTweETH_26SEP24,], - [PTuniETH_26DEC24, aPTuniETH_26DEC24,], - ], - uniV3Owners: [ - arbC_LLV, - arbP_LLV, - ethC_LLV, - ethP_LLV, - ] - }, - fantom: { - tokensAndOwners: [ - [wftm, ftmCallVault,], - [fusdc, ftmPutVault,], - ] - }, - bsc: { - tokensAndOwners: [ - [busd, adaPutVault,], - [ada, adaCallVault,], - [busd, bchPutVault,], - [bch, bchCallVault,], - [busd, wbnbPutVault,], - [wbnb, wbnbCallVault,], - - [woo, wooSynVault_Bi_10,], - [busd, wooSynVault_Bi_10,], - [woo, wooSynVault_Bi_25,], - [busd, wooSynVault_Bi_25,], - [woo, wooSynVault_Mo_10,], - [busd, wooSynVault_Mo_10,], - [woo, wooSynVault_Mo_25,], - [busd, wooSynVault_Mo_25,], - ] - }, - polygon: { - tokensAndOwners: [ - [wmatic, wMaticCallVault,], - [pousdc, wMaticPutVault,], - [ust_matic_wormhole, indexUST_LUNA_2wk_a,], - [ust_matic_wormhole, indexUST_LUNA_2wk_b,], - ] - }, - boba: { - tokensAndOwners: [ - [boba, bobaCallVault,], - [bobaUSDC, bobaPutVault,], - ] - }, - aurora: { - tokensAndOwners: [ - [near, nearCallVault,], - ] - }, - cronos: { - tokensAndOwners: [ - [wcro, cronosCallVault] - ] - }, - polygon_zkevm: { - tokensAndOwners: [ - [stMatic, stMaticCallVault,], - ] - }, - inevm: { - tokensAndOwners: [ - ['0x69011706b3f6C6eaeD7D2Bc13801558B4fd94CBF', '0x6950D30996e8EC8D93dd1602b059b3a38389Bb88'], - ['0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147', '0xEc9284b92B8039c4180Ac99863ed73Ee5Ff33E63'], - ] - } -} - -Object.keys(config).forEach(chain => { - const { tokensAndOwners, uniV3Owners } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (uniV3Owners) await sumTokens2({ api, owners: uniV3Owners, resolveUniV3: true}) - return sumTokens2({ api, tokensAndOwners}) - } - } -}) diff --git a/projects/thetaswap/index.js b/projects/thetaswap/index.js deleted file mode 100644 index 8a9783a5bf6..00000000000 --- a/projects/thetaswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xe8b97478ae8ab1fcfd46cdb2f62869ec63bbf69f) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - theta: { - tvl: getUniTVL({ factory: '0xe8b97478ae8ab1fcfd46cdb2f62869ec63bbf69f', useDefaultCoreAssets: true }), - }, -} diff --git a/projects/thetis-market/index.js b/projects/thetis-market/index.js deleted file mode 100644 index 800362e625f..00000000000 --- a/projects/thetis-market/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { getResource } = require("../helper/chain/aptos"); - -const POOL_TRADING_ACCOUNT = - "0x0c727553dd5019c4887581f0a89dca9c8ea400116d70e9da7164897812c6646e"; - -const APT_USDt_POOL = - "0x604440935157ff96d6e436220c708c410e1e1978bbefd6d714b70b1e5f1f11"; -const zWBTC_USDt_POOL = - "0x1166d5635ef8fd10e1aa2cb005c4a3fad91f3b452e35019d8ce90fa7634aeb"; -const zWETH_USDt_POOL = - "0x6366d76a364e565877e22f22807323ce630e3512eedf96570ae44312e4116565"; - -const Pools = [ - { - poolAddress: APT_USDt_POOL, - longToken: ADDRESSES.aptos.APT, - shortToken: ADDRESSES.aptos.USDt, - }, - { - poolAddress: zWBTC_USDt_POOL, - longToken: ADDRESSES.aptos.zWBTC, - shortToken: ADDRESSES.aptos.USDt, - }, - { - poolAddress: zWETH_USDt_POOL, - longToken: ADDRESSES.aptos.zWETH, - shortToken: ADDRESSES.aptos.USDt, - }, -]; - -async function tvl(api) { - const poolConfigs = await Promise.all([ - getResource(Pools[0].poolAddress, `${POOL_TRADING_ACCOUNT}::pool::Pool`), - getResource(Pools[1].poolAddress, `${POOL_TRADING_ACCOUNT}::pool::Pool`), - getResource(Pools[2].poolAddress, `${POOL_TRADING_ACCOUNT}::pool::Pool`), - ]); - const mergeArray = poolConfigs.map((p, i) => { - return { ...p, ...Pools[i] }; - }); - const tvlShortToken = mergeArray.map( - (p) => - Number(p.short_asset.pool_amount) + Number(p.short_asset.reserve_amount) - ); - api.add(ADDRESSES.aptos.APT, Number(mergeArray[0].long_asset.pool_amount)); - api.add(ADDRESSES.aptos.zWBTC, Number(mergeArray[1].long_asset.pool_amount)); - api.add(ADDRESSES.aptos.zWETH, Number(mergeArray[2].long_asset.pool_amount)); - api.add( - ADDRESSES.aptos.USDt, - tvlShortToken.reduce((acc, curr) => acc + curr, 0) - ); -} - -module.exports = { - timetravel: false, - aptos: { tvl }, -}; diff --git a/projects/thevault-unstake-pool/index.js b/projects/thevault-unstake-pool/index.js deleted file mode 100644 index 41370b562c1..00000000000 --- a/projects/thevault-unstake-pool/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getStakedSol, sumTokens2 } = require("../helper/solana") - -async function tvl(api) { - // Unstake pool: https://docs.thevault.finance/products/unstake-pool - // Program: https://solscan.io/account/2rU1oCHtQ7WJUvy15tKtFvxdYNNSc3id7AzUcjeFSddo - // Stake account: https://solscan.io/account/9nyw5jxhzuSs88HxKJyDCsWBZMhxj2uNXsFcyHF5KBAb#defiactivities - // Liquid stake: https://solscan.io/account/6RLKARrt6oPCyuMCdYdUHmJxd4wUa6ZeyiC8VSMcYxRv - - await getStakedSol('9nyw5jxhzuSs88HxKJyDCsWBZMhxj2uNXsFcyHF5KBAb', api); - await sumTokens2({ - api, - solOwners: [new PublicKey('6RLKARrt6oPCyuMCdYdUHmJxd4wUa6ZeyiC8VSMcYxRv')] - }) -} - -module.exports = { - timetravel: false, - solana: { - tvl - }, -}; diff --git a/projects/thevault/index.js b/projects/thevault/index.js deleted file mode 100644 index dde245b270c..00000000000 --- a/projects/thevault/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getStakedSol } = require("../helper/solana") - -async function tvl(api) { - // https://docs.thevault.finance/about/stake-pool-address - await getStakedSol('GdNXJobf8fbTR5JSE7adxa6niaygjx4EEbnnRaDCHMMW', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - }, -}; diff --git a/projects/thirdfy/index.js b/projects/thirdfy/index.js deleted file mode 100644 index de00cedca2a..00000000000 --- a/projects/thirdfy/index.js +++ /dev/null @@ -1,108 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { cachedGraphQuery } = require('../helper/cache'); - -const BASE_CHAIN = 'base'; -const ALGEBRA_SUBGRAPH_URL = "https://api.studio.thegraph.com/query/47039/thirdfy-base/version/latest"; -const ICHI_SUBGRAPH_URL = "https://api.studio.thegraph.com/query/88584/base-v-2-thirdfy/version/latest"; - -async function tvl(api) { - const [poolsData, vaultsData] = await Promise.all([ - getAlgebraPoolsData(), - getIchiVaultsData() - ]); - - const allOwners = [...poolsData.owners, ...vaultsData.owners]; - const allTokensSet = new Set([...poolsData.tokens, ...vaultsData.tokens]); - const allTokens = Array.from(allTokensSet); - - return sumTokens2({ - owners: allOwners, - tokens: allTokens, - api - }); -} - -async function getAlgebraPoolsData() { - const query = ` - query { - pools( - where: { liquidity_gt: "0" } - first: 1000 - orderBy: totalValueLockedUSD - orderDirection: desc - ) { - id - token0 { id } - token1 { id } - } - } - `; - - const data = await cachedGraphQuery('thirdfy-algebra', ALGEBRA_SUBGRAPH_URL, query); - const pools = data?.pools || []; - - const owners = pools.map(pool => pool.id); - const tokensSet = new Set(); - - pools.forEach(pool => { - tokensSet.add(pool.token0.id); - tokensSet.add(pool.token1.id); - }); - - return { - owners, - tokens: Array.from(tokensSet) - }; -} - - -async function getIchiVaultsData() { - const query = ` - query { - ichiVaults( - first: 100 - orderBy: totalSupply - orderDirection: desc - where: { - totalSupply_gt: "0" - } - ) { - id - token0 - token1 - totalAmount0 - totalAmount1 - } - } - `; - - const data = await cachedGraphQuery('thirdfy-ichi', ICHI_SUBGRAPH_URL, query); - const vaults = data?.ichiVaults || []; - - - const owners = []; - const tokensSet = new Set(); - - vaults.forEach(vault => { - const amount0 = parseFloat(vault.totalAmount0 || 0); - const amount1 = parseFloat(vault.totalAmount1 || 0); - - if (amount0 > 0 || amount1 > 0) { - owners.push(vault.id); - - if (amount0 > 0) tokensSet.add(vault.token0); - if (amount1 > 0) tokensSet.add(vault.token1); - } - }); - - return { - owners, - tokens: Array.from(tokensSet) - }; -} - -module.exports = { - methodology: "TVL: Total value of all coins held in the smart contracts of the protocol", - start: 1752451200, - [BASE_CHAIN]: { tvl }, -}; diff --git a/projects/tholgar-rings-autovoter/abi.json b/projects/tholgar-rings-autovoter/abi.json deleted file mode 100644 index 919087f2db7..00000000000 --- a/projects/tholgar-rings-autovoter/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "locked": "function locked(uint256 tokenId) external view returns (int128, uint256)", - "currentTokenId": "uint256:currentTokenId", - "tokenIdToMarionetteId": "function tokenIdToMarionetteId(uint256) external view returns (bytes32)", - "getMarionette": {"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getMarionette","outputs":[{"components":[{"internalType":"uint256","name":"veId","type":"uint256"},{"components":[{"internalType":"enum Marionette.RewardMode","name":"rewardMode","type":"uint8"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Marionette.RewardConfig","name":"customRewardConfig","type":"tuple"},{"components":[{"internalType":"enum Marionette.LockMode","name":"lockMode","type":"uint8"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Marionette.LockConfig","name":"customLockConfig","type":"tuple"}],"internalType":"struct Marionette.MarionetteState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"} -} \ No newline at end of file diff --git a/projects/tholgar-rings-autovoter/index.js b/projects/tholgar-rings-autovoter/index.js deleted file mode 100644 index 7a2f30e4e95..00000000000 --- a/projects/tholgar-rings-autovoter/index.js +++ /dev/null @@ -1,83 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); - -const CONFIG = { - USD: { - veToken: "0x0966CAE7338518961c2d35493D3EB481A75bb86B", - token: ADDRESSES.sonic.scUSD, - pupeeter: "0x82136B5B2FA53AEFaB8d7C87467D8e7036Bb3f72", - }, - ETH: { - veToken: "0x1Ec2b9a77A7226ACD457954820197F89B3E3a578", - token: ADDRESSES.sonic.scETH, - pupeeter: "0x113166Ad6E99c5346aDF41d5821A6856e1510812", - }, -} - -const getMarionettesLocks = async (api, tokenType) => { - const nbMarionettes = await api.call({ - target: CONFIG[tokenType].pupeeter, - abi: abi.currentTokenId, - }); - - const calls = []; - for (let i = 1; i <= nbMarionettes; ++i) { - calls.push({ - target: CONFIG[tokenType].pupeeter, - params: [BigInt(i)], - }); - } - - const results = await api.multiCall({ - abi: abi.getMarionette, - calls, - permitFailure: true, - }); - - return results - .filter((state) => state !== null && state.veId !== null) - .map((state) => state.veId); -} - -const marionetteTvl = async (api, tokenType) => { - const balances = {}; - - const marionetteLocks = await getMarionettesLocks(api, tokenType); - const marionetteBalances = await api.multiCall({ - abi: abi.locked, - calls: marionetteLocks.map((lock) => ({ - target: CONFIG[tokenType].veToken, - params: [lock], - })), - }); - const sum = marionetteBalances.reduce((acc, balance) => { - return acc + BigInt(balance[0]); - }, 0n); - - sdk.util.sumSingleBalance( - balances, - CONFIG[tokenType].token, - sum, - api.chain - ); - return balances; -} - -async function tvl(api,) { - const [ethTvl, usdTvl] = await Promise.all([ - marionetteTvl(api, "ETH"), - marionetteTvl(api, "USD"), - ]); - - sdk.util.mergeBalances(ethTvl, usdTvl); - - return ethTvl; -} - -module.exports = { - methodology: "Counts the total veUSD and veETH locked owned by marionettes", - sonic: { - tvl, - }, -}; diff --git a/projects/tholgar/abi.json b/projects/tholgar/abi.json deleted file mode 100644 index b11e8ea061a..00000000000 --- a/projects/tholgar/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "token": "address:token", - "getCurrentLockedTokens": "uint256:getCurrentLockedTokens", - "lockers": "function lockers(uint256) view returns (address)", - "totalAssets": "uint256:totalAssets", - "totalSupply": "erc20:totalSupply", - "queuedForWithdrawal": "function queuedForWithdrawal(address) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/tholgar/index.js b/projects/tholgar/index.js deleted file mode 100644 index 01cebefd2af..00000000000 --- a/projects/tholgar/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); - -const WAR_CONTROLLER = "0xFDeac9F9e4a5A7340Ac57B47C67d383fb4f13DBb"; -const WAR_REDEEMER = "0x4787Ef084c1d57ED87D58a716d991F8A9CD3828C"; -const VAULT_V2 = '0x2fc1E74BC8A6D15fE768c10C2EDe7D6d95ec27e9'; -const VAULT = '0x188cA46Aa2c7ae10C14A931512B62991D5901453'; -const WAR = '0xa8258deE2a677874a48F5320670A869D74f0cbC1'; - -async function getLockers(api) { - let lockers = []; - - for (let i = 0; i != -1; ++i) { - try { - const output = await api.call({ - target: WAR_CONTROLLER, - abi: abi["lockers"], - params: [i] - }) - lockers.push(output); - } catch(e) { - break; - } - } - - return lockers; -} - -async function warlordTvl(api, vaultAddress) { - const balances = {}; - - const lockers = await getLockers(api); - - const bals = await api.multiCall({ abi: abi["getCurrentLockedTokens"], calls: lockers.map(i => ({ target: i})) }) - const tokens = await api.multiCall({ abi: abi["token"], calls: lockers.map(i => ({ target: i})) }) - const tokensQueued = await api.multiCall({ abi: abi["queuedForWithdrawal"], calls: tokens.map(i => ({ target: WAR_REDEEMER, params: [i] })) }) - - const totalSupply = await api.call({target: WAR, abi: abi['totalSupply']}); - const vaultBalance = await api.call({ target: vaultAddress, abi: abi['totalAssets']}); - const ratio = vaultBalance / totalSupply; - - bals.forEach((v, i) => { - sdk.util.sumSingleBalance(balances, tokens[i], (v - tokensQueued[i]) * ratio) - }) - - return balances; -} - -async function ethTvl(api,) { - const v1 = await warlordTvl(api, VAULT) - const v2 = await warlordTvl(api, VAULT_V2) - - sdk.util.mergeBalances(v1, v2); - - return v1; -} - -module.exports = { - methodology: "Counts the total number of cvx and aura Locked inside Warlord and compare it to the balance of Tholgar Vault", - ethereum: { - tvl: ethTvl, - }, -}; diff --git a/projects/thorchain-lending/index.js b/projects/thorchain-lending/index.js deleted file mode 100644 index a7bd5dc64b9..00000000000 --- a/projects/thorchain-lending/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - hallmarks: [ - // are these 2 in 2021 correct? - [1626656400, "Protocol paused"], - [1631754000, "Protocol resumed"], - ["2025-01-24", "Protocol paused due to death spiral"], - ['2025-02-03', 'Thorfi unwinds'], // https://medium.com/thorchain/thorfi-unwind-96b46dff72c0 https://thorfi-unwind.vercel.app/ - ], - timetravel: false, - thorchain: { tvl: () => ({}), }, // debt is higher than the collateral -} diff --git a/projects/thorchain/index.js b/projects/thorchain/index.js deleted file mode 100644 index 43494d7a911..00000000000 --- a/projects/thorchain/index.js +++ /dev/null @@ -1,110 +0,0 @@ -const { getCache, get } = require('../helper/http') -const sdk = require('@defillama/sdk') -const { nullAddress } = require('../helper/tokenMapping') - -async function staking() { - var res = await get('https://midgard.ninerealms.com/v2/network') - const { totalActiveBond, totalStandbyBond } = res.bondMetrics - return { - "thorchain": (Number(totalActiveBond) + Number(totalStandbyBond)) / 1e8 - } -} - -const chainMapping = { - ETH: 'ethereum', - BTC: 'bitcoin', - AVAX: 'avax', - BNB: 'bsc', - LTC: 'litecoin', - BCH: 'bitcoin-cash', - DOGE: 'dogecoin', - GAIA: 'cosmos', - BASE: 'base', - BSC: 'bsc', - XRP: 'ripple', - THOR: 'thorchain', -} - -const defillamaChainMapping = { - 'bitcoin-cash': 'bitcoincash', - 'dogecoin': 'doge', -} - -function getDChain(chain) { - return defillamaChainMapping[chainMapping[chain]] || chainMapping[chain] -} - -const tokenGeckoMapping = { - 'BNB.TWT-8C2': 'trust-wallet-token', - 'BNB.BUSD-BD1': 'binance-usd', - 'GAIA.ATOM': 'cosmos', - 'BNB.BTCB-1DE': 'bitcoin-bep2', - 'BNB.AVA-645': 'concierge-io', - 'BNB.ETH-1C9': 'ethereum', - 'THOR.RUJI': 'rujira', - 'THOR.TCY': 'tcy', -} - - -const blacklistedPools = [] - -async function tvl(api) { - const pools = await getCache('https://midgard.ninerealms.com/v2/pools') - const aChain = api.chain - - const balances = {} - await Promise.all(pools.map(addPool)) - return balances - - async function addPool({ asset: pool, assetDepth: totalDepth, nativeDecimal, runeDepth }) { - if (blacklistedPools.includes(pool)) return; - if (aChain === 'thorchain') { - sdk.util.sumSingleBalance(balances, 'thorchain', runeDepth/1e8) - } - if (+totalDepth < 1) return; - let [chainStr, token] = pool.split('.') - let chain = chainMapping[chainStr] - const dChain = getDChain(chainStr) - if (dChain !== aChain) return; - - let [baseToken, address] = token.split('-') - if (['ethereum', 'bsc', 'avax', 'base'].includes(chain)) { - totalDepth = totalDepth * (10 ** (+nativeDecimal - 8)) - if (address && address.length > 8) { - address = address.toLowerCase() - sdk.util.sumSingleBalance(balances, address, totalDepth, chain) - } else if (chainStr === baseToken) { - sdk.util.sumSingleBalance(balances, nullAddress, totalDepth, chain) - } else if (tokenGeckoMapping[pool]) { - sdk.util.sumSingleBalance(balances, tokenGeckoMapping[pool], totalDepth / 1e8) - } else { - sdk.log('skipped', pool, Number(totalDepth).toFixed(2)) - } - } else { - if (chainStr === baseToken) { - if (chain === 'bitcoincash') chain = 'bitcoin-cash' - sdk.util.sumSingleBalance(balances, chain, totalDepth / 1e8) - } else if (tokenGeckoMapping[pool]) { - sdk.util.sumSingleBalance(balances, tokenGeckoMapping[pool], totalDepth / 1e8) - } else { - sdk.log('skipped', pool, totalDepth) - } - } - } -} - -module.exports = { - hallmarks: [ - // [1626656400, "Protocol paused"], - [1631754000, "Protocol resumed"], - ], - timetravel: false, - thorchain: { - tvl, - staking - }, -} - -Object.keys(chainMapping).map(getDChain).forEach(chain => { - module.exports[chain] = {tvl } -}) diff --git a/projects/thoreum/index.js b/projects/thoreum/index.js deleted file mode 100644 index 8c36078b75c..00000000000 --- a/projects/thoreum/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const thoreum = "0x580dE58c1BD593A43DaDcF0A739d504621817c05"; -const masterchef = "0xF4168CD3C00799bEeB9a88a6bF725eB84f5d41b7"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", thoreum), -}; diff --git a/projects/thorfi/index.js b/projects/thorfi/index.js deleted file mode 100644 index 1d8115278ad..00000000000 --- a/projects/thorfi/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { pool2 } = require("../helper/pool2"); - -const stakingPool2Contract = "0xd003A09719D45DB83C07872e18Bc3e1a69B4824a"; -const WAVAX_THOR_JLP = "0x95189f25b4609120F72783E883640216E92732DA"; - -module.exports = { - misrepresentedTokens: true, - avax: { - pool2: pool2(stakingPool2Contract, WAVAX_THOR_JLP), - tvl: (async) => ({}), - }, - methodology: "Counts liquidty on pool2 only", -}; diff --git a/projects/thorn-protocol/index.js b/projects/thorn-protocol/index.js deleted file mode 100644 index fb2544c228f..00000000000 --- a/projects/thorn-protocol/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - let target = "0x888099De8EA8068D92bB04b47A743B82195c4aD2" - const pairs = await api.fetchList({ lengthAbi: 'pairLength', itemAbi: 'swapPairContract', target }) - const res = await api.fetchList({ lengthAbi: 'N_COINS', itemAbi: 'coins', targets: pairs, groupedByInput: true, }) - const ownerTokens = res.map((tokens, i) => [tokens, pairs[i]]) - return sumTokens2({ api, ownerTokens, permitFailure: true, }) -} - -module.exports = { - methodology: - "Uses factory(0x888099De8EA8068D92bB04b47A743B82195c4aD2) address and whitelisted tokens address to find and price Liquidity Pool pairs", - start: '2024-10-17', - sapphire: { - tvl, - }, -}; diff --git a/projects/thorusfi/index.js b/projects/thorusfi/index.js deleted file mode 100644 index a293ffea462..00000000000 --- a/projects/thorusfi/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { getUniTVL } = require('../helper/unknownTokens') - -const factoryContract = "0xa98ea6356A316b44Bf710D5f9b6b4eA0081409Ef"; - -const thorusMaster_avax = "0x871d68cFa4994170403D9C1c7b3D3E037c76437d"; -const THO_avax = "0xAE4AA155D2987B454C29450ef4f862CF00907B61"; - -const thorusMaster_moonbeam = "0xEeB84a24e10502D8A5c97B11df381D1550B25b9d"; -const THO_moonbeam = ADDRESSES.shiden.JPYC; - - -module.exports = { - avax:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: factoryContract, - }), - staking: staking(thorusMaster_avax, THO_avax), - }, - moonbeam: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: factoryContract, - }), - staking: staking( - thorusMaster_moonbeam, - THO_moonbeam, - "moonbeam", - `avax:${THO_avax}` - ), - }, - methodology: - "We count liquidity on all AMM pools, using the TVL chart on https://app.thorus.fi/dashboard as the source. The staking portion of TVL includes the THO within the ThorusMaster contracts.", -}; diff --git a/projects/thriveonmars/index.js b/projects/thriveonmars/index.js deleted file mode 100644 index aec445e302e..00000000000 --- a/projects/thriveonmars/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// Thrive On Mars -// https://thriveonmars.com -async function wax() { - const accounts = ["play.mars"]; - const tokens = [ - ["eosio.token", "WAX", "wax"] - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `Thrive On Mars TVL is achieved by querying token balances from NFT gaming contracts`, - wax: { - tvl: wax - }, -} \ No newline at end of file diff --git a/projects/throne-v2/index.js b/projects/throne-v2/index.js deleted file mode 100644 index 237c54dc07e..00000000000 --- a/projects/throne-v2/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const OATH = "0x798aCF1BD6E556F0C3cd72e77b3d169D26a28ab5"; -const FACTORY = "0xe4806BdD8E010828324928d25587721F6B58BEA2" - -const dexTVL = getUniTVL({ - factory: FACTORY, - useDefaultCoreAssets: true, -}) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, - base: { - tvl: dexTVL, - } -}; \ No newline at end of file diff --git a/projects/throne-v3/index.js b/projects/throne-v3/index.js deleted file mode 100644 index 5f31b298739..00000000000 --- a/projects/throne-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - base: { - factory: "0xe8839bf8175812691c6578c0fc80e721bc3e00fb", - fromBlock: 2146977, - }, -}); diff --git a/projects/thruster-fi-v2/index.js b/projects/thruster-fi-v2/index.js deleted file mode 100644 index c61f62ac1a2..00000000000 --- a/projects/thruster-fi-v2/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -const { mergeExports } = require('../helper/utils') - -module.exports = mergeExports([ - uniTvlExport('blast', '0xb4A7D971D0ADea1c73198C97d7ab3f9CE4aaFA13'), - uniTvlExport('blast', '0x37836821a2c03c171fB1a595767f4a16e2b93Fc4'), -]) \ No newline at end of file diff --git a/projects/thruster-fi/index.js b/projects/thruster-fi/index.js deleted file mode 100644 index 852d4c3693e..00000000000 --- a/projects/thruster-fi/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const sdk = require('@defillama/sdk') -const { uniV3Export } = require("../helper/uniswapV3"); -const { mergeExports } = require('../helper/utils') - -module.exports = mergeExports([ - uniV3Export({ blast: { factory: "0x71b08f13B3c3aF35aAdEb3949AFEb1ded1016127", fromBlock: 157106, }, }), -]) - -async function excludeYES(api) { - const YES = '0x20fE91f17ec9080E3caC2d688b4EcB48C5aC3a9C' - const bal = await api.call({ abi: 'erc20:balanceOf', target: YES, params: '0x1d16788b97eDB7d9a6aE66D5C5C16469037Faa00'}) - api.add(YES, -bal) - return api.getBalances() -} - -module.exports.blast.tvl = sdk.util.sumChainTvls([module.exports.blast.tvl, excludeYES]) \ No newline at end of file diff --git a/projects/thunderpokt/index.js b/projects/thunderpokt/index.js deleted file mode 100644 index e56197a81e7..00000000000 --- a/projects/thunderpokt/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const sdk = require('@defillama/sdk') -const tPOKT = '0x5430a0B6C11f870571ffA891d59dec8C4608Ea9A' - -async function tvl(api) { - const polygonApi = new sdk.ChainApi({ chain: 'polygon', }) - const tPOKTSupply = await polygonApi.call({ target: tPOKT, abi: 'erc20:totalSupply', }) - let usdPOKTamount = { "pocket-network": tPOKTSupply / 10 ** 6 } - return usdPOKTamount -} - -module.exports = { - methodology: 'tPOKT is backed 1:1 by POKT. Total supply of tPOKT is pulled and multiplied by POKT price to get the TVL', - pokt: { - tvl - } -} \ No newline at end of file diff --git a/projects/tidaldex/index.js b/projects/tidaldex/index.js deleted file mode 100644 index fc98748fd88..00000000000 --- a/projects/tidaldex/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { uniTvlExport, masterchefExports } = require('../helper/unknownTokens') - -const FACTORY = '0x907e8C7D471877b4742dA8aA53d257d0d565A47E' -const FARM_MASTER = '0x348CF34aCD0aB88c3364037486234AB6cbC31C4d' -const CZB = '0xD963b2236D227a0302E19F2f9595F424950dc186' - -module.exports = uniTvlExport('bsc', FACTORY) - -// Attach staking + pool2 from MasterChef (pool 0 is CZB single-staking) -const farm = masterchefExports({ chain: 'bsc', masterchef: FARM_MASTER, nativeToken: CZB, useDefaultCoreAssets: true }) -module.exports.bsc.staking = farm.bsc.staking -module.exports.bsc.pool2 = farm.bsc.pool2 - -module.exports.methodology = 'DEX TVL counts liquidity on TidalDex (Uniswap V2 fork) by summing the reserves of all pairs from the factory.' -module.exports.timetravel = true -module.exports.misrepresentedTokens = false - diff --git a/projects/tidalfinance/index.js b/projects/tidalfinance/index.js deleted file mode 100644 index 2a8b03890e1..00000000000 --- a/projects/tidalfinance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking'); - -const sellerContract = "0xc73C6C3e80C28dBc55F65bBdC895E828bb98C72d"; -const stakingContract = "0x21edB57A75ee69BCe0Fe3D0EfC5674bcF1D5BF93"; - -const TIDAL = "0xB41EC2c036f8a42DA384DDE6ADA79884F8b84b26"; - - -const polygonTvl = async (api) => { - return api.sumTokens({ owner: sellerContract, tokens: [ADDRESSES.polygon.USDC] }) -}; - -module.exports = { - polygon: { - staking: staking(stakingContract, TIDAL,), - tvl: polygonTvl, - }, - methodology: - "We count liquidity of USDC Reserve deposited on the pool threw Seller contract; and the staking of native token", -}; diff --git a/projects/tifi-bank/index.js b/projects/tifi-bank/index.js deleted file mode 100644 index 9a2bb52039f..00000000000 --- a/projects/tifi-bank/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { sumTokensExport } = require("../helper/unknownTokens"); -const { stakings } = require('../helper/staking') - -const stakingContracts = [ - // Staking in the RESERVIOR - "0x0AEfF3d761F6706295f3828C87ccE29c9418a93B", - // Loan - "0x8A6F7834A9d60090668F5db33FEC353a7Fb4704B", - // Lock to Earn - "0xA015263066da13e94526a8b897eDB0E3cd55B19A" -]; - -const lpContract = [ - //PinkLock TIFI Bank - "0x407993575c91ce7643a4d4ccacc9a98c36ee1bbe", - //PinkLock Cake - "0x7ee058420e5937496f5a2096f04caa7721cf70cc" -] - -const lpTokens = [ - // TiFi bank LP token - "0x707B6F02fFC0C7fD9fe3a4F392Aef47218021337", - // Cake LP token - "0xB62BB233Af2F83028Be19626256A9894B68AAe5E" -] - - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ factory: '0xb3456550c17128ca7ebbcc47d4be6cae29d43853', useDefaultCoreAssets: true }), - staking: stakings(stakingContracts, '0x17E65E6b9B166Fb8e7c59432F0db126711246BC0'), - // pool2: sumTokensExport({ tokens: lpTokens, owners: lpContract, useDefaultCoreAssets: true }), - } -} diff --git a/projects/tigris/index.js b/projects/tigris/index.js deleted file mode 100644 index b33261e595e..00000000000 --- a/projects/tigris/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const TigrisAddresses = { - arbitrum: { - TIG: "0x3A33473d7990a605a88ac72A78aD4EFC40a54ADB", - xTIG: "0x19694Cf64572e6adf643Ae7B13d5b2921215B4E5", - // tigUSD and USDT are 1:1 exchangeable via stable vault - tigUSD: "0x7E491F53bF807f836E2dd6C4A4FBd193e1913EFd", - USDT: ADDRESSES.arbitrum.USDT, - TigStaking: "0x6E8BFBb31A46D0F5502426050Ea28b19F8E761f4", - TokenSale: "0x45F52502aF87e7e4E446BA15BDf223A19b47DA98", - StableVault: "0xe82fcefbDD034500B5862B4827CAE5c117f6b921", - Treasury: "0xf416c2b41fb6c592c9ba7cb6b2f985ed593a51d7", - Lock: "0x76e0c3bda3dD22A2cFDCdbCafdaC997927F80483", - TeamVesting: "0x97F1b43ED98587B2ab5A649aa63Ecc28403282bC", - }, - polygon: { - TIG: "0x7157Fe7533f2fc77498755Cc253d79046c746560", - TigStaking: "0xC6c32eD781450228dFadfa49A430d7868B110F44", - // tigUSD and DAI are 1:1 exchangeable via stable vault - tigUSD: "0x76973Ba2AFF24F87fFE41FDBfD15308dEBB8f7E8", - DAI: ADDRESSES.polygon.DAI, - StableVault: "0x3677415Dc23e49B7780ef46976F418F4a9d5031B", - Treasury: "0x4f7046f36B5D5282A94cB448eAdB3cdf9Ff2b051", - Lock: "0x638e39D4a927EfE3040F0f6D4d27e4CccD8c996A", - Bond: "0xC5d9B681086b2617626B0Ed05A7D632660Fc99f4", - }, -}; - -async function arbitrumTvl(api) { - const tokensAndOwners = [ - [TigrisAddresses.arbitrum.USDT, TigrisAddresses.arbitrum.StableVault], - ]; - return sumTokens2({ api, tokensAndOwners }); -} - -async function polygonTvl(api) { - const tokensAndOwners = [ - [TigrisAddresses.polygon.DAI, TigrisAddresses.polygon.StableVault], - ]; - return sumTokens2({ api, tokensAndOwners }); -} - -module.exports = { - arbitrum: { - staking: staking( - TigrisAddresses.arbitrum.TigStaking, - TigrisAddresses.arbitrum.TIG - ), - tvl: arbitrumTvl, - }, - polygon: { - staking: staking( - TigrisAddresses.polygon.TigStaking, - TigrisAddresses.polygon.TIG - ), - tvl: polygonTvl, - }, -}; diff --git a/projects/time-fun/index.js b/projects/time-fun/index.js deleted file mode 100644 index 89e0c994ee3..00000000000 --- a/projects/time-fun/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - base: { - tvl: sumTokensExport({ owner: '0x428aef7fb31e4e86162d62d4530a4dd7232d953d', tokens: [nullAddress] }) - } -} \ No newline at end of file diff --git a/projects/timeless/abi.json b/projects/timeless/abi.json deleted file mode 100644 index 73abdc5336e..00000000000 --- a/projects/timeless/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "asset": "address:asset", - "convertToAssets": "function convertToAssets(uint256 shares) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/timeless/index.js b/projects/timeless/index.js deleted file mode 100644 index 1dccf3dfe92..00000000000 --- a/projects/timeless/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const abi = require('./abi.json') -const { getLogs } = require('../helper/cache/getLogs') - -const factory = '0xbd16088611054fce04711aa9509d1d86e04dce2c' -const wl_stETH_token = '0xf9a98a9452485ed55cd3ce5260c2b71c9807b11a' - -async function tvl(api) { - - const logs = ( - await getLogs({ - api, - target: factory, - fromBlock: 14916925, - onlyArgs: true, - eventAbi: "event DeployYieldTokenPair(address indexed gate, address indexed vault, address nyt, address pyt)", - }) - ) - const toa = logs.map(i => [i.vault, i.gate]) - - await sumTokens2({ api, tokensAndOwners: toa, }) - const wl_stETH = wl_stETH_token - const balances = api.getBalances() - const wl_stETH_balance = balances['ethereum:'+wl_stETH] - if (wl_stETH_balance) { - delete balances['ethereum:'+wl_stETH] - const unwrappedAsset = await api.call({ target: wl_stETH_token, abi: abi.asset, }) - const balance = await api.call({ target: wl_stETH_token, abi: abi.convertToAssets, params: wl_stETH_balance, }) - api.add(unwrappedAsset, balance) - } - return balances -} - -module.exports = { - ethereum: { - tvl, - }, -}; diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js deleted file mode 100644 index 83478d104c9..00000000000 --- a/projects/timeswap-v2/index.js +++ /dev/null @@ -1,181 +0,0 @@ -const { getLogs, getAddress } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -async function tvl(api) { - const { - factory, - oldFactory, - fromBlock, - newFactory, - oldEthFactory, - factory__2_5, - factory__2_5_block, - } = config[api.chain]; - let logs; - let ownerTokens = []; - if (factory) { - logs = await getLogs({ - api, - target: factory, - topics: [ - "0x68ff1cfcdcf76864161555fc0de1878d8f83ec6949bf351df74d8a4a1a2679ab", - ], - fromBlock, - }); - - ownerTokens.push( - ...logs.map((i) => { - return [ - [getAddress(i.topics[2]), getAddress(i.topics[3])], - getAddress(i.data), - ]; - }) - ); - } - if (factory__2_5) { - const Logs = await getLogs({ - api, - target: factory__2_5, - topics: [ - "0x68ff1cfcdcf76864161555fc0de1878d8f83ec6949bf351df74d8a4a1a2679ab", - ], - fromBlock: factory__2_5_block, - }); - const _OwnerTokens = Logs.map((i) => { - return [ - [getAddress(i.topics[2]), getAddress(i.topics[3])], - getAddress(i.data), - ]; - }); - ownerTokens = [...ownerTokens, ..._OwnerTokens]; - } - if (newFactory) { - const newLogs = await getLogs({ - api, - target: newFactory, - topics: [ - "0x68ff1cfcdcf76864161555fc0de1878d8f83ec6949bf351df74d8a4a1a2679ab", - ], - fromBlock, - }); - const newOwnerTokens = newLogs.map((i) => { - return [ - [getAddress(i.topics[2]), getAddress(i.topics[3])], - getAddress(i.data), - ]; - }); - ownerTokens = [...ownerTokens, ...newOwnerTokens]; - } - if (oldFactory) { - let oldOwnerTokens; - const oldLogs = await getLogs({ - api, - target: oldFactory, - topics: [ - "0x68ff1cfcdcf76864161555fc0de1878d8f83ec6949bf351df74d8a4a1a2679ab", - ], - fromBlock, - }); - oldOwnerTokens = oldLogs.map((i) => { - const token0 = getAddress(i.data.slice(64, 64 * 2 + 2)); - const token1 = getAddress(i.data.slice(64 * 2, 64 * 3 + 2)); - const pool = getAddress(i.data.slice(64 * 3, 64 * 4 + 2)); - return [[token0, token1], pool]; - }); - ownerTokens = [...ownerTokens, ...oldOwnerTokens]; - } - if (oldEthFactory) { - let oldEthOwnerTokens; - let oldEthLogs = await getLogs({ - api, - target: oldEthFactory, - topics: [ - "0x68ff1cfcdcf76864161555fc0de1878d8f83ec6949bf351df74d8a4a1a2679ab", - ], - fromBlock: 0x1000476, - toBlock: 0x103f839, - }); - - oldEthOwnerTokens = oldEthLogs.map((i) => { - return [ - [getAddress(i.topics[2]), getAddress(i.topics[3])], - getAddress(i.data), - ]; - }); - ownerTokens = [...ownerTokens, ...oldEthOwnerTokens]; - } - - return sumTokens2({ - api, - ownerTokens, - permitFailure: true, - }); -} - -const config = { - polygon: { - oldFactory: "0xcAB2E5Ba8b3A8d8Bf8B50F0eec12884D0255fB4A", - factory: "0xcf0aca5c5b7e1bF63514D362243b6c50d5761FE8", - newFactory: "0x406d3Dfcbe20b642c2262b29b960822975371502", - factory__2_5: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - factory__2_5_block: 52205905, - fromBlock: 39476334, - }, - ethereum: { - oldEthFactory: "0xcf0aca5c5b7e1bF63514D362243b6c50d5761FE8", - factory: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - fromBlock: 17037368, - }, - arbitrum: { - factory: "0xcf0aca5c5b7e1bF63514D362243b6c50d5761FE8", - newFactory: "0x406d3Dfcbe20b642c2262b29b960822975371502", - factory__2_5: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - factory__2_5_block: 168977872, - fromBlock: 70785970, - }, - mantle: { - factory: "0xf8F5e4B7825d484FBDFDC36fc915E79f30b02f9E", - newFactory: "0x406d3Dfcbe20b642c2262b29b960822975371502", - factory__2_5: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - factory__2_5_block: 43190605, - fromBlock: 3563, - }, - polygon_zkevm: { - factory: "0x406d3Dfcbe20b642c2262b29b960822975371502", - factory__2_5: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - factory__2_5_block: 9133903, - fromBlock: 1787343, - }, - base: { - factory: "0x406d3Dfcbe20b642c2262b29b960822975371502", - factory__2_5: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - factory__2_5_block: 9045635, - fromBlock: 2493999, - }, - optimism: { - factory: "0x406d3Dfcbe20b642c2262b29b960822975371502", - factory__2_5: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - factory__2_5_block: 114721107, - fromBlock: 112818437, - }, - inevm: { - factory__2_5: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - factory__2_5_block: 118420, - }, - xlayer: { - factory: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - fromBlock: 682246, - }, - hyperliquid: { - factory: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", - fromBlock: 200467, - } -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; - module.exports.hallmarks = [ - [1676851200, "Timeswap V2 launch"], - [1697760000, "Premine of $TIME"], - ]; -}); diff --git a/projects/timeswap/index.js b/projects/timeswap/index.js deleted file mode 100644 index 45b9d2f993b..00000000000 --- a/projects/timeswap/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { cachedGraphQuery } = require('../helper/cache') - -const GRAPH_URLS = { - polygon: - sdk.graph.modifyEndpoint('CjoTTVotweY5YZYjGbskVMZvJi8oD6urLnP1N7rWVFun'), -}; - -function chainTvl(chain) { - return async (api) => { - const query = ` - { - pairs { - id - asset { - id - } - collateral { - id - } - } - } - `; - - const pairs = ( - await cachedGraphQuery('timeswap/'+api.chain, GRAPH_URLS[chain], query) - ).pairs.map((pair) => ({ - address: pair.id, - asset: pair.asset.id, - collateral: pair.collateral.id, - })); - - const ownerTokens = []; - - for (const pair of pairs) - ownerTokens.push([[pair.asset, pair.collateral], pair.address]) - return sumTokens2({ api, ownerTokens}) - }; -} - -module.exports = { - misrepresentedTokens: true, - polygon: { - tvl: chainTvl("polygon"), - }, -}; diff --git a/projects/timewarp/abi.json b/projects/timewarp/abi.json deleted file mode 100644 index 2ff66f45638..00000000000 --- a/projects/timewarp/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "erc20Deposit": "address:erc20Deposit" -} \ No newline at end of file diff --git a/projects/timewarp/index.js b/projects/timewarp/index.js deleted file mode 100644 index 53857f026a1..00000000000 --- a/projects/timewarp/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') - -const TimeWarpPool_LP_UNISWAP_ETH = "0x55c825983783c984890bA89F7d7C9575814D83F2"; -const TimeWarpPool_LP_PANCAKE_BSC = "0xC48467BA55cF0B777978F19701329c87949EFD3C"; - -const TimeWarpPool_TIME_ETH = "0xa106dd3Bc6C42B3f28616FfAB615c7d494Eb629D"; -const TimeWarpPool_TIME_BSC = "0x59f2757Ae3a1BAa21e4f397a28985Ceb431c676b"; - -module.exports = { - ethereum: { - tvl: () => ({}), - pool2: pool2(TimeWarpPool_LP_UNISWAP_ETH, '0x1d474d4B4A62b0Ad0C819841eB2C74d1c5050524'), - staking: staking(TimeWarpPool_TIME_ETH, '0x485d17A6f1B8780392d53D64751824253011A260'), - }, - bsc: { - tvl: () => ({}), - pool2: pool2(TimeWarpPool_LP_PANCAKE_BSC, '0xa5ebD19961CF4B8aF06a9d9D2B91d73B48744867'), - staking: staking(TimeWarpPool_TIME_BSC, '0x3b198e26E473b8faB2085b37978e36c9DE5D7f68'), - }, - methodology: `We count as TVL the staking Lps on Ethereum (TIME-ETH Sushiswap LP) - and Binance (TIME-BNB Pancake LP) networks threw their TimeWarpPool contracts; and - we count the staking native token (TIME) on both netwarks, separated from tvl`, -}; diff --git a/projects/tinlake/index.js b/projects/tinlake/index.js deleted file mode 100644 index 9cc5dacb42b..00000000000 --- a/projects/tinlake/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const BigNumber = require("bignumber.js"); -const { graphQuery } = require('../helper/http') -const data = {} - -const subgraphUrl = 'https://api.goldsky.com/api/public/project_clhi43ef5g4rw49zwftsvd2ks/subgraphs/main/prod/gn'; -const graphTotalTokenTVLQuery = ` -query GET_TOTAL_TOKEN_TVL { - pools( - first: 1000 - ) { - id - assetValue - reserve - } -} -`; -const dai = ADDRESSES.ethereum.DAI - -async function getData(api) { - return graphQuery(subgraphUrl, graphTotalTokenTVLQuery, {}, { api, }) -} - -async function borrowed(api) { - let total = BigNumber(0) - const ethBlock = await api.getBlock() - if (!data[ethBlock]) data[ethBlock] = await getData(api) - const { pools } = await data[ethBlock] - pools.forEach(pool => { - total = total.plus(pool.assetValue) - }) - - return { - [dai]: total.toFixed(0) - } -} - -async function tvl(api) { - let total = BigNumber(0) - const ethBlock = await api.getBlock() - if (!data[ethBlock]) data[ethBlock] = await getData(api) - const { pools } = await data[ethBlock] - pools.forEach(pool => { - total = total.plus(pool.reserve) - }) - - return { - [dai]: total.toFixed(0) - } -} - - - -module.exports = { - timetravel: false, - methodology: 'TVL consist of the sum of every pool. The pool value is made up of the NAV (the value of the assets in the pool) and the Pool Reserve (undeployed capital in the pool). The Tinlake subgraph is used to pull the assetValue and reserve values of each pool.', - ethereum: { - tvl, - borrowed, - } -} - diff --git a/projects/tinyman.js b/projects/tinyman.js deleted file mode 100644 index c17ee3f7bdb..00000000000 --- a/projects/tinyman.js +++ /dev/null @@ -1,17 +0,0 @@ -const {fetchURL} = require('./helper/utils') -const {toUSDTBalances} = require('./helper/balances') - -async function tvl(){ - const data = await fetchURL("https://mainnet.analytics.tinyman.org/api/v1/general-statistics/") - return toUSDTBalances(data.data.total_liquidity_in_usd) -} - -module.exports={ - misrepresentedTokens:true, - algorand:{ - tvl - }, - hallmarks: [ - [1641038400,"Contract Exploit"] - ], -} \ No newline at end of file diff --git a/projects/tipidao/api.js b/projects/tipidao/api.js deleted file mode 100644 index bea9ee86239..00000000000 --- a/projects/tipidao/api.js +++ /dev/null @@ -1,9 +0,0 @@ -const index = require('./index') - -module.exports = { - bsc: { - tvl: () => 0, - staking: index.bsc.staking, - } -} - diff --git a/projects/tipidao/index.js b/projects/tipidao/index.js deleted file mode 100644 index 086376295f2..00000000000 --- a/projects/tipidao/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const tpd = "0xd0253dbe5606c9fa01db67eb10be5c3675c2b117"; -const tpdStaking = "0xAeab776bE63580cB86309CedB49769e6526abbf4"; -const treasury = "0x3287f25f8F29e5d65cE566E5a2a1bd336431d8db"; -const treasuryTokens = [ - ADDRESSES.bsc.BUSD, // BUSD - ADDRESSES.bsc.WBNB, // WBNB - "0x50bc855ad6a3983589927e5bf3ac0688364ffa64" // TPD-BUSD CAKE LP -]; - -module.exports = { - bsc: { - tvl: sumTokensExport({ owner: treasury, tokens: treasuryTokens}), - staking: sumTokensExport({ owner: tpdStaking, tokens: [tpd]}), - } -} diff --git a/projects/titan/index.js b/projects/titan/index.js deleted file mode 100644 index b93569cda6c..00000000000 --- a/projects/titan/index.js +++ /dev/null @@ -1,22 +0,0 @@ - -const { fetchURL } = require('../helper/utils'); - -const poolsEndpoint = "https://api.titan.tg/beta/clmm/pools" // clmm pools - -async function tvl(api) { - const response = await fetchURL(poolsEndpoint); - const pools = response.data; - pools.map((pool) => { - api.add(pool.token0Address, pool.token0Balance); - api.add(pool.token1Address, pool.token1Balance); - }); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - methodology: `TVL calculation methodology is the sum of all the pools' token balances`.trim(), - ton: { - tvl - } -} \ No newline at end of file diff --git a/projects/titano-swych/index.js b/projects/titano-swych/index.js deleted file mode 100644 index 94a8ddc0c26..00000000000 --- a/projects/titano-swych/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0x80f112CD8Ac529d6993090A0c9a04E01d495BfBf', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/titi-finance/index.js b/projects/titi-finance/index.js deleted file mode 100644 index 9822cfa2648..00000000000 --- a/projects/titi-finance/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unknownTokens') - -const ethTiTiToken = "0x3bdffA70f4b4E6985eED50453c7C0D4A15dcEc52"; // TiTi Token -const ethTiTiStaking = "0x5390Dbf4958F21BB317C72744c110977F4c03311"; // TiTi Staking - -const eraTiTiToken = "0x4EBfb78C4780C304dff7de518db630b67e3F044b"; // TiTi Token Era -const eraTiTiStaking = "0x1B05972C2e46288201E0432262bd8e925d4fCF94"; // TiTi Staking Era - -const baseTiTiToken = "0x57bec9e5b5f2e3c4c925949f516527e8fbc83cf2"; // TiTi Token Era -const baseTiTiStaking = "0xbc8007792690621a3217196217337129161Db176"; // TiTi Staking Era - -const ethereumLPs = ['0xca4AEf99b3567Dbb631DF0DCd51D446DB7eb63e5'] -const eraLPs = [ - "0x574E2E833A010997840f368edF6542d8950c2788", - "0x228D400F196760432BD8bcE74Fa1e6580aF4BF03", - "0xd4cb4f38de684122Af261ee822Dc1437601e5424", - "0x512f5a62eE69013643f37C12fd8Be391Db7b4550", - "0xEDbC01C6eF70Ef3c1448d543A2Ed438a9d564d93", - "0x64FD534e47aF3B234f7476A7C26B611c05d475a9", - "0x10095115B58F5562A16476435363bf56E7dBAD20" -] -const baseLPs = ['0x19bdf948b8E72d0Fa61156f2119CE0dfb7D40D3b'] - -const lpReservesAbi = 'function getReserves() view returns (uint _reserve0, uint _reserve1)' - -module.exports = { - methodology: `Calculate the reserve-type assets locked in the contract, including the user's stake funds in MarketMakerFund and the reserve of TiUSD issued by the protocol, TiTi-AMMs used to provide liquidity TiUSD is not included`, - ethereum: { - tvl: sumTokensExport({ - owners: [ - "0x49a0c2076DE4801bcadFEf78d0FA63cEC0AD1cB4", // MAMMSwapPair - ], tokens: [ADDRESSES.ethereum.USDC] - }), - staking: sumTokensExport({ owner: ethTiTiStaking, tokens: [ethTiTiToken], lps: ethereumLPs, useDefaultCoreAssets: true, restrictTokenRatio: 5000 }), - pool2: sumTokensExport({ owner: '0x9A132b777FE7af6561BAAb60A03302C697fA8F3B', tokens: ['0x830Ce3859F98104DC600efBFAD90A65386B95404'], lps: ethereumLPs, useDefaultCoreAssets: true, restrictTokenRatio: 1000, resolveLp: true, }), - }, - era: { - tvl: sumTokensExport({ - owners: [ - "0xc856175575F6406b59AD6822c3114494990750DC", // MAMMSwapPair - ], tokens: [ADDRESSES.era.USDC] - }), - staking: sumTokensExport({ owner: eraTiTiStaking, tokens: [eraTiTiToken], lps: eraLPs, useDefaultCoreAssets: true, restrictTokenRatio: 5000, abis: { getReservesABI: lpReservesAbi } }), - pool2: sumTokensExport({ - owners: [ - "0xA690DC59d6afC12d6789f46fc211DdD27f1C7f7c", - "0x2cbCE1EFC624138326877C386692E889D8C7c834", - "0xDc8440CdC50bEe0936bB49De82e80c2439dCEc42", - "0x68524201E392AEB91d256fa67a3A2b2cdCdcECf9", - "0x959A0715698540f03FCBb2A54b4C98a8032Da3a5", - "0xf65279AC29f92931F0EDED9dD4bb61A176b236Ca" - ], tokens: eraLPs, lps: eraLPs, useDefaultCoreAssets: true, abis: { getReservesABI: lpReservesAbi }, resolveLp: true, restrictTokenRatio: 1000, - }), - }, - base: { - tvl: sumTokensExport({ - owners: [ - "0x159089d1b385572Fdc2a42Bf7664309f6eEf5Edc", // MAMMSwapPair - ], tokens: [ADDRESSES.base.USDbC] - }), - staking: sumTokensExport({ owner: baseTiTiStaking, tokens: [baseTiTiToken], lps: baseLPs, useDefaultCoreAssets: true, restrictTokenRatio: 5000 }), - pool2: sumTokensExport({ owner: '0xF58EC1aB2b0128286DeA0A2B31BfFbeE4EFE4b75', tokens: ['0x19bdf948b8E72d0Fa61156f2119CE0dfb7D40D3b'], lps: baseLPs, useDefaultCoreAssets: true, restrictTokenRatio: 1000, resolveLp: true, }), - }, -} \ No newline at end of file diff --git a/projects/tivel-finance/index.js b/projects/tivel-finance/index.js deleted file mode 100644 index c1135bca9cc..00000000000 --- a/projects/tivel-finance/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const config = { - era: '0xf7c504346b27F6073F7182e61f870531Fca1c09d', - scroll: '0x30e44f48c9542533cB0b6b7dA39F6d42F26D843f', -} - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const pools = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: 'pools', target: factory }) - const tokens = await api.multiCall({ abi: 'address:quoteToken', calls: pools }) - return api.sumTokens({ tokensAndOwners2: [tokens, pools] }) - } - } -}) \ No newline at end of file diff --git a/projects/tlchain-decryption/index.js b/projects/tlchain-decryption/index.js deleted file mode 100644 index e6241331830..00000000000 --- a/projects/tlchain-decryption/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { tlchain: {}} -module.exports.tlchain.tvl = () => ({}) -module.exports.deadFrom = '2023-05-19' \ No newline at end of file diff --git a/projects/tlx/index.js b/projects/tlx/index.js deleted file mode 100644 index e631016db8d..00000000000 --- a/projects/tlx/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const helperAbi = { - "leveragedTokenData": "function leveragedTokenData() view returns (tuple(address addr, string symbol, uint256 totalSupply, string targetAsset, uint256 targetLeverage, bool isLong, bool isActive, uint256 rebalanceThreshold, uint256 exchangeRate, bool canRebalance, bool hasPendingLeverageUpdate, uint256 remainingMargin, uint256 leverage, uint256 assetPrice, uint256 userBalance)[])" -} - - -const contracts = { - tlx: "0xD9cC3D70E730503E7f28c1B407389198c4B75FA2", - sUSD: ADDRESSES.optimism.sUSD, - locker: "0xc068c3261522c97ff719dc97c98c63a1356fef0f", - staker: "0xc30877315f3b621a8f7bcda27819ec29429f3817", - leveragedTokenHelper: "0xBdAF7A2C4ee313Be468B9250609ba8496131B1f0", -}; - -async function staking(api) { - const lockedTlxBalance = await api.call({ - abi: "uint256:totalStaked", - target: contracts.locker, - }); - - const stakedTlxBalance = await api.call({ - abi: "uint256:totalStaked", - target: contracts.staker, - }); - - api.addToken(contracts.tlx, lockedTlxBalance); - api.addToken(contracts.tlx, stakedTlxBalance); -} - -async function tvl(api) { - // documentation: https://docs.tlx.fi/more/deployed-contracts - // factory - 0x5dd85f51e9fd6ade8ecc216c07919ecd443eb14d - const res = await api.call({ - abi: helperAbi.leveragedTokenData, - target: contracts.leveragedTokenHelper, - }); - const totalSusd = res.reduce((acc, token) => { - return acc + (token.totalSupply * token.exchangeRate) / 1e18; - }, 0); - api.addToken(contracts.sUSD, totalSusd); -} - -module.exports = { - start: '2024-04-10', - deadFrom: '2025-08-12', - methodology: "Total TLX locked in the genesis locker contract and total TLX staked in the staking contract. TVL is computed as the total margin deposited across the protocol's leveraged tokens.", - optimism: { - tvl: tvl, - staking: staking, - }, -}; diff --git a/projects/tokan-exchange/index.js b/projects/tokan-exchange/index.js deleted file mode 100644 index 9a6b78e4dfc..00000000000 --- a/projects/tokan-exchange/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - scroll: { - tvl: getUniTVL({ - factory: "0x92aF10c685D2CF4CD845388C5f45aC5dc97C5024", - useDefaultCoreAssets: true, - hasStablePools: true - }), - } -}; diff --git a/projects/tokemak/index.js b/projects/tokemak/index.js deleted file mode 100644 index 1ee63397f92..00000000000 --- a/projects/tokemak/index.js +++ /dev/null @@ -1,268 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, } = require('../helper/unwrapLPs') -const abi = require("../pendle/abi.json"); -const positions = require('./positions.json'); - -const cvx_abi = { - cvxBRP_pid: "uint256:pid", - cvxBRP_balanceOf: "function balanceOf(address account) view returns (uint256)", - cvxBRP_earned: "function earned(address account) view returns (uint256)", - cvxBRP_rewards: "function rewards(address) view returns (uint256)", - cvxBRP_userRewardPerTokenPaid: "function userRewardPerTokenPaid(address) view returns (uint256)", - cvxBRP_stakingToken: "address:stakingToken", - cvxBooster_poolInfo: "function poolInfo(uint256) view returns (address lptoken, address token, address gauge, address crvRewards, address stash, bool shutdown)", - stkcvxFRAXBP_lockedStakesOf: "function lockedStakesOf(address account) view returns (tuple(bytes32 kek_id, uint256 start_timestamp, uint256 liquidity, uint256 ending_timestamp, uint256 lock_multiplier)[])", -} - -const AUTOPILOT_SYSTEM_REGISTRIES_BY_CHAIN = { - 1: '0x2218F90A98b0C070676f249EF44834686dAa4285', - 8453: '0x18Dc926095A7A007C01Ef836683Fdef4c4371b4e', - 146: '0x1a912EB51D3cF8364eBAEE5A982cA37f25aD8848', - 42161: '0xBFd8E6C9bF2CD5466f5651746f8E946A6C7b4220', - 9745: '0x9065C0E33Bc8FB31A21874f399985e39bC187D48', -} - -const autopilotContracts = { - systemRegistry: { - abi: { - autoPoolRegistry: "function autoPoolRegistry() view returns (address)" - } - }, - autoPoolRegistry: { - abi: { - listVaults: "function listVaults() view returns (address[] memory)" - } - }, - autopool: { - abi: { - totalAssets: "function totalAssets() view returns (uint256)", - asset: "function asset() view returns (address)" - } - } -} - -const degenesisContract = "0xc803737D3E12CC4034Dde0B2457684322100Ac38"; -const wethPool = "0xD3D13a578a53685B4ac36A1Bab31912D2B2A2F36"; -const usdcPool = "0x04bda0cf6ad025948af830e75228ed420b0e860d"; -const usdc = ADDRESSES.ethereum.USDC; -const weth = ADDRESSES.ethereum.WETH; -const ohmPool = "0xe7a7D17e2177f66D035d9D50A7f48d8D8E31532D"; -const ohm = "0x383518188C0C6d7730D91b2c03a03C837814a899"; -const gohmPool = "0x41f6a95Bacf9bC43704c4A4902BA5473A8B00263"; -const gohm = "0x0ab87046fbb341d058f17cbc4c1133f25a20a52f"; -const alcxPool = "0xD3B5D9a561c293Fb42b446FE7e237DaA9BF9AA84"; -const alcx = "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF"; -const fxsPool = "0xADF15Ec41689fc5b6DcA0db7c53c9bFE7981E655"; -const fxs = ADDRESSES.ethereum.FXS; -const tcrPool = "0x15A629f0665A3Eb97D7aE9A7ce7ABF73AeB79415"; -const tcr = "0x9C4A4204B79dd291D6b6571C5BE8BbcD0622F050"; -const toke = ADDRESSES.ethereum.TOKE; -const tTokeReactor = "0xa760e26aA76747020171fCF8BdA108dFdE8Eb930"; -const stakingVestingV1 = "0x96f98ed74639689c3a11daf38ef86e59f43417d3"; -const accTokeV1 = "0xA374A62DdBd21e3d5716cB04821CB710897c0972"; -const sushiPool = "0xf49764c9C5d644ece6aE2d18Ffd9F1E902629777"; -const sushi = ADDRESSES.ethereum.SUSHI; -const fraxPool = "0x94671A3ceE8C7A12Ea72602978D1Bb84E920eFB2"; -const frax = ADDRESSES.ethereum.FRAX; -const daiPool = "0x0CE34F4c26bA69158BC2eB8Bf513221e44FDfB75"; -const dai = ADDRESSES.ethereum.DAI; -const feiPool = "0x03DccCd17CC36eE61f9004BCfD7a85F58B2D360D"; -const fei = "0x956F47F50A910163D8BF957Cf5846D573E7f87CA"; -const lusdPool = "0x9eEe9eE0CBD35014e12E1283d9388a40f69797A3"; -const lusd = ADDRESSES.ethereum.LUSD; -const wormUstPool = "0x482258099De8De2d0bda84215864800EA7e6B03D"; -const wormtust = "0xa693b19d2931d498c5b318df961919bb4aee87a5"; -const foxPool = "0x808D3E6b23516967ceAE4f17a5F9038383ED5311"; -const fox = "0xc770eefad204b5180df6a14ee197d99d808ee52d"; -const apwPool = "0xDc0b02849Bb8E0F126a216A2840275Da829709B0"; -const apw = "0x4104b135dbc9609fc1a9490e61369036497660c8"; -const snxPool = "0xeff721Eae19885e17f5B80187d6527aad3fFc8DE"; -const snx = ADDRESSES.ethereum.SNX; -const gamma = '0x6bea7cfef803d1e3d5f7c0103f7ded065644e197'; -const gammaPool = '0x2Fc6e9c1b2C07E18632eFE51879415a580AD22E1'; -const mim = '0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3'; -const mimPool = '0x2e9F9bECF5229379825D0D3C1299759943BD4fED'; -const slp = "0xd4e7a6e2d03e4e48dfc27dd3f46df1c176647e38"; -const slpStaking = "0x8858a739ea1dd3d80fe577ef4e0d03e88561faa3"; -const uni = "0x5fa464cefe8901d66c09b85d5fcdc55b3738c688"; -const uniStaking = "0x1b429e75369ea5cd84421c1cc182cee5f3192fd3"; -const alusd = "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9"; -const alusdPool = "0x7211508D283353e77b9A7ed2f22334C219AD4b4C"; -const steth = ADDRESSES.ethereum.STETH; -const crvSteth = "0xDC24316b9AE028F1497c275EB9192a3Ea0f67022"; -const myc = "0x4b13006980acb09645131b91d259eaa111eaf5ba"; -const mycPool = "0x061aee9ab655e73719577EA1df116D7139b2A7E7"; -const visr = "0xF938424F7210f31dF2Aee3011291b658f872e91e"; -const visrPool = "0x2d3eADE781c4E203c6028DAC11ABB5711C022029"; - -async function tvl(api) { - const cvxUSTWPool = "0x7e2b9b5244bcfa5108a76d5e7b507cfd5581ad4a"; - const cvxFRAXPool = "0xB900EF131301B307dB5eFcbed9DBb50A3e209B2e"; - const cvxalUSDPool = "0x02E2151D4F351881017ABdF2DD2b51150841d5B3"; - const cvxstethPool = "0x0A760466E1B4621579a82a39CB56Dda2F4E70f03"; - const cvxcrvFrax = "0x117A0bab81F25e60900787d98061cCFae023560c"; - const cvxcvxFxs = "0xCB6D873f7BbE57584a9b08380901Dc200Be7CE74"; - - const tokeManager = "0xA86e412109f77c45a3BC1c5870b880492Fb86A14"; - const tokeTreasury = "0x8b4334d4812C530574Bd4F2763FcD22dE94A969B"; - const tokeTreasuryFraxConvexVault = "0x5d9EF8F1CFa952a4a383E10a447dD23C5EA20EB8"; - const toa = [ - [weth, degenesisContract], - [usdc, degenesisContract], - [weth, wethPool], - [usdc, usdcPool], - [ohm, ohmPool], - [alcx, alcxPool], - [fxs, fxsPool], - [tcr, tcrPool], - [sushi, sushiPool], - [frax, fraxPool], - [dai, daiPool], - [fei, feiPool], - [lusd, lusdPool], - [wormtust, wormUstPool], - [fox, foxPool], - [apw, apwPool], - [snx, snxPool], - [gohm, gohmPool], - [mim, mimPool], - [gamma, gammaPool], - [alusd, alusdPool], - [myc, mycPool], - [visr, visrPool], - [steth, tokeTreasury], - [cvxstethPool, tokeManager], - [cvxUSTWPool, tokeManager], - [cvxFRAXPool, tokeManager], - [cvxalUSDPool, tokeManager], - ] - - // cvxcrvFRAX - const cvxFraxUsdcPool = "0x7e880867363A7e321f5d260Cade2B0Bb2F717B02"; - const cvxcrvFraxBal = await api.call({ - abi: cvx_abi['cvxBRP_balanceOf'], - target: cvxFraxUsdcPool, - params: [tokeManager], - }); - const fraxFraxUsdcPool = "0x963f487796d54d2f27bA6F3Fbe91154cA103b199"; - const treasuryFraxBal = await api.call({ - abi: cvx_abi['stkcvxFRAXBP_lockedStakesOf'], - target: fraxFraxUsdcPool, - params: [tokeTreasuryFraxConvexVault], - }); - - /// cvxcvxFXS - const cvxcvxFxsPool = "0xf27AFAD0142393e4b3E5510aBc5fe3743Ad669Cb"; - const cvxcvxFxsBal = await api.call({ - abi: cvx_abi['cvxBRP_balanceOf'], - target: cvxcvxFxsPool, - params: [tokeTreasury], - }); - api.add(cvxcrvFrax, cvxcrvFraxBal) - api.add(cvxcrvFrax, treasuryFraxBal[0]['liquidity']) - api.add(cvxcvxFxs, cvxcvxFxsBal) - - let curveHoldings = positions.exchanges.filter( - pool => pool.type == 'Curve') - let uniHoldings = positions.exchanges.filter( - pool => pool.type != 'Curve') - - const tokens = [] - const calls = [] - lpBalances(curveHoldings, toa, tokens, calls,) - lpBalances(uniHoldings, toa, tokens, calls) - const amountRes = await api.multiCall({ abi: abi.userInfo, calls }) - tokens.forEach((val, i) => api.add(val, amountRes[i].amount)) - - await populateAutopilotDetails(1, api); - - return sumTokens2({ api, tokensAndOwners: toa, }) -} - -async function populateAutopilotDetails(chainId, api) { - // Get the instance of the Autopool Registry from the System Registry - const autopoolRegistry = await api.call({ abi: autopilotContracts.systemRegistry.abi.autoPoolRegistry, target: AUTOPILOT_SYSTEM_REGISTRIES_BY_CHAIN[chainId], }); - // Use the Autopool Registry to get all the Autopools in the system - const autopools = await api.call({ abi: autopilotContracts.autoPoolRegistry.abi.listVaults, target: autopoolRegistry, }); - await api.erc4626Sum2({ calls: autopools}) -} - -async function baseTvl(api) { - await populateAutopilotDetails(8453, api); - return sumTokens2({ api }) -} - -async function sonicTvl(api) { - await populateAutopilotDetails(146, api); - return sumTokens2({ api }) -} - -async function arbitrumTvl(api) { - await populateAutopilotDetails(42161, api); - return sumTokens2({ api }) -} - -async function plasmaTvl(api) { - await populateAutopilotDetails(9745, api); - return sumTokens2({ api }) -} - -function lpBalances(holdings, toa, tokens, calls) { - const manager = "0xA86e412109f77c45a3BC1c5870b880492Fb86A14" - let masterChef - switch (holdings[0].type) { - case 'Curve': - masterChef = "0x5F465e9fcfFc217c5849906216581a657cd60605"; break; - default: - masterChef = "0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd"; break; - } - - for (let pool of holdings) { - const { pool_address: token } = pool - toa.push([token, manager]) - if (!pool.hasOwnProperty('staking')) - continue - - tokens.push(token) - calls.push({ target: masterChef, params: [pool.staking.pool_id, manager] }) - } -} - -async function staking(api) { - let vestedToke = '1438444' - api.add(ADDRESSES.ethereum.TOKE, vestedToke * 1e18 * -1) - return sumTokens2({ - api, tokensAndOwners: [ - [toke, tTokeReactor], [toke, stakingVestingV1], [toke, accTokeV1] - ] - }) -} - -async function pool2(timestamp, block) { - return sumTokens2({ - block, tokensAndOwners: [ - [slp, slpStaking], - [uni, uniStaking], - ] - }) -} - -module.exports = { - ethereum: { - tvl, - pool2, - staking - }, - base: { - tvl: baseTvl - }, - sonic: { - tvl: sonicTvl - }, - arbitrum: { - tvl: arbitrumTvl - }, - plasma: { - tvl: plasmaTvl - } -} diff --git a/projects/tokemak/positions.json b/projects/tokemak/positions.json deleted file mode 100644 index a02abea71ee..00000000000 --- a/projects/tokemak/positions.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "exchanges": [ - { - "type": "UniswapV2", - "pool_address": "0xecba967d84fcf0405f6b32bc45f4d36bfdbb2e81" - }, - { - "type": "SushiSwap", - "pool_address": "0x61eb53ee427ab4e007d78a9134aacb3101a2dc23" - }, - { - "type": "SushiSwap", - "pool_address": "0xC3f279090a47e80990Fe3a9c30d24Cb117EF91a8", - "staking": { - "type": "MasterChef", - "version": "V2", - "pool_id": "0" - } - }, - { - "type": "UniswapV2", - "pool_address": "0xce84867c3c02b05dc570d0135103d3fb9cc19433" - }, - { - "type": "SushiSwap", - "pool_address": "0x795065dCc9f64b5614C407a6EFDC400DA6221FB0", - "staking": { - "type": "MasterChef", - "version": "V1", - "pool_id": "12" - } - }, - { - "type": "UniswapV2", - "pool_address": "0x470e8de2eBaef52014A47Cb5E6aF86884947F08c" - }, - { - "type": "SushiSwap", - "pool_address": "0x53162d78dca413d9e28cf62799d17a9e278b60e8", - "staking": { - "type": "MasterChef", - "version": "V2", - "pool_id": "20" - } - }, - { - "type": "UniswapV2", - "pool_address": "0xad5b1a6abc1c9598c044cea295488433a3499efc" - }, - { - "type": "UniswapV2", - "pool_address": "0x43ae24960e5534731fc831386c07755a2dc33d47" - }, - { - "type": "SushiSwap", - "pool_address": "0xa1d7b2d891e3a1f9ef4bbc5be20630c2feb1c470", - "staking": { - "type": "MasterChef", - "version": "V1", - "pool_id": "6" - } - }, - { - "type": "SushiSwap", - "pool_address": "0xe55c3e83852429334A986B265d03b879a3d188Ac" - }, - { - "type": "Curve", - "pool_address": "0x06d39e95977349431E3d800d49C63B4D472e10FB" - }, - { - "type": "Curve", - "pool_address": "0x9462F2b3C9bEeA8afc334Cdb1D1382B072e494eA" - }, - { - "type": "Curve", - "pool_address": "0x50B0D9171160d6EB8Aa39E090Da51E7e078E81c4" - }, - { - "type": "Curve", - "pool_address": "0xCaf8703f8664731cEd11f63bB0570E53Ab4600A9" - }, - { - "type": "Curve", - "pool_address": "0x01FE650EF2f8e2982295489AE6aDc1413bF6011F" - }, - { - "type": "Curve", - "pool_address": "0xC250B22d15e43d95fBE27B12d98B6098f8493eaC" - }, - { - "type": "Curve", - "pool_address": "0x0437ac6109e8A366A1F4816edF312A36952DB856" - }, - { - "type": "Curve", - "pool_address": "0x9001a452d39A8710D27ED5c2E10431C13F5Fba74" - }, - { - "type": "Curve", - "pool_address": "0x961226B64AD373275130234145b96D100Dc0b655" - }, - { - "type": "Curve", - "pool_address": "0x06325440D014e39736583c165C2963BA99fAf14E", - "staking": { - "type": "Convex", - "pool_id": "25" - } - } - ] -} diff --git a/projects/tokenfi/index.js b/projects/tokenfi/index.js deleted file mode 100644 index 2c4c38b3f71..00000000000 --- a/projects/tokenfi/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xb8D2471E35eE033Db509e0456c8eFc4135f4EE43" -const flokiToken = "0xfb5B838b6cfEEdC2873aB27866079AC55363D37E" -const ethFlokiToken = "0xcf0C122c6b73ff809C693DB761e7BaeBe62b6a2E" - -async function ethtvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [ethFlokiToken], owner: contract, api }) -} - -async function bsctvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [flokiToken], owner: contract, api }) - } - -module.exports = { - methodology: `We count the FLOKI on ${contract}`, - ethereum: { - tvl: ()=>({}) , - staking: ethtvl - }, - bsc: { - tvl: ()=>({}) , - staking: bsctvl - } -} \ No newline at end of file diff --git a/projects/tokeniza/index.js b/projects/tokeniza/index.js deleted file mode 100644 index 6e1a51dfc65..00000000000 --- a/projects/tokeniza/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const treasury = "0xbaECbdde43C6c6a167c37d5b789023592B27fF93"; - -module.exports = treasuryExports({ - moonbeam: { - tokens: [ - nullAddress, - ADDRESSES.moonbeam.USDT, - ADDRESSES.moonbeam.USDC, - ADDRESSES.moonbeam.WGLMR - ], - owners: [treasury] - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT - ], - owners: [treasury] - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDT - ], - owners: [treasury] - }, -}) \ No newline at end of file diff --git a/projects/tokenlon/abi.json b/projects/tokenlon/abi.json deleted file mode 100644 index 275042799e1..00000000000 --- a/projects/tokenlon/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "pmmAddr": "address:pmmAddr", - "ammWrapperAddr": "address:ammWrapperAddr", - "stakingToken": "address:stakingToken" -} \ No newline at end of file diff --git a/projects/tokenlon/index.js b/projects/tokenlon/index.js deleted file mode 100644 index 0863be52296..00000000000 --- a/projects/tokenlon/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking.js"); - -/* Note: there are LON staked tokens within the protocol, accounting for aprox $30M at current market price - * but the protocol itself are minting them... - */ -const LON_TOKEN = "0x0000000000095413afc295d19edeb1ad7b71c952"; -const CONTRACT_FOR_STAKING = "0xf88506B0F1d30056B9e5580668D5875b9cd30F23"; - -// Used for grabbing AMM wrapper & PMM -const PERMANENT_STORAGE_PROXY = "0x6D9Cc14a1d36E6fF13fc6efA9e9326FcD12E7903"; - -const STAGES_STAKING_CONTRACTS = [ - //FIRST_STAGE - ["0x7924a818013f39cf800f5589ff1f1f0def54f31f", "0x929CF614C917944dD278BC2134714EaA4121BC6A",], - //SECOND_STAGE_LON_ETH - ["0x7924a818013f39cf800f5589ff1f1f0def54f31f", "0xc348314f74b043ff79396e14116b6f19122d69f4",], - //SECOND_STAGE_LON_USDT - ["0x55d31f68975e446a40a2d02ffa4b0e1bfb233c2f", "0x11520d501e10e2e02a2715c4a9d3f8aeb1b72a7a",], - //THIRD_STAGE_LON_ETH - ["0x7924a818013f39cf800f5589ff1f1f0def54f31f", "0x74379CEC6a2c9Fde0537e9D9346222a724A278e4",], - //THIRD_STAGE_LON_USDT - ["0x55d31f68975e446a40a2d02ffa4b0e1bfb233c2f", "0x539a67b6f9c3cad58f434cc12624b2d520bc03f8"], -]; - -// Receives rewards/fee from AMM wrapper via reward distributor on WETH shape, some are sold for LON... -const MULTISIG_ONE = "0x3557BD3d422300198719710Cc3f00194E1c20A46"; - -const WETH = ADDRESSES.ethereum.WETH; - -const ethTvl = async (api) => { - const amm_wrapper_addr = await api.call({ abi: abi.ammWrapperAddr, target: PERMANENT_STORAGE_PROXY, }) - const pmm_addr = await api.call({ abi: abi.pmmAddr, target: PERMANENT_STORAGE_PROXY, }) - - return sumTokens2({ api, owners: [amm_wrapper_addr, pmm_addr], fetchCoValentTokens: true }); -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - staking: staking(CONTRACT_FOR_STAKING, LON_TOKEN), - pool2: (_, block) => sumTokens2({ tokensAndOwners: STAGES_STAKING_CONTRACTS, block, resolveLP: true }), - }, - -}; diff --git a/projects/tokenmill-xyz/index.js b/projects/tokenmill-xyz/index.js deleted file mode 100644 index 85b6b9c62d3..00000000000 --- a/projects/tokenmill-xyz/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { sumTokens2, getProvider } = require("../helper/solana"); -const ADDRESSES = require('../helper/coreAssets.json'); -const { Program } = require("@coral-xyz/anchor"); - -module.exports = { - avax: { tvl: avaxTvl }, - solana: { tvl: tvlSolana }, - methodology: 'Track the avax & sol locked in the bonding curves' -} - -const AVAX_FACTORY = "0x501ee2D4AA611C906F785e10cC868e145183FCE4"; - -const SOLANA_FACTORY = "JoeaRXgtME3jAoz5WuFXGEndfv4NPH9nBxsLq44hk9J"; - -async function avaxTvl(api) { - const pools = await api.fetchList({ lengthAbi: 'getMarketsLength', itemAbi: 'getMarketAt', target: AVAX_FACTORY }) - return api.sumTokens({ owners: pools, tokens: [ADDRESSES.avax.WAVAX] }) -} - -async function tvlSolana(api) { - - const programId = new PublicKey(SOLANA_FACTORY); - const provider = getProvider(api.chain); - const idl = await Program.fetchIdl(programId, provider) - // idl's address maybe wrong, force update idl address - idl.address = programId; - const program = new Program(idl, provider) - - const markets = await program.account.market.all() - const tokensAndOwners = markets.map(account => [account.account.quoteTokenMint, account.publicKey]) - return sumTokens2({ api, tokensAndOwners, computeTokenAccount: true, allowError: true, }) -} \ No newline at end of file diff --git a/projects/tokensfarm/index.js b/projects/tokensfarm/index.js deleted file mode 100644 index ca1ea267672..00000000000 --- a/projects/tokensfarm/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumUnknownTokens, nullAddress } = require('../helper/unknownTokens') - -const chains = ['ethereum', 'polygon', 'bsc', 'fantom', 'optimism', 'arbitrum', 'avax'] - -chains.forEach(chain => { - module.exports[chain] = { - tvl: () => ({}), - pool2, - staking, - } - - async function pool2(api) { - const chainId = api.chainId - let { farms } = await getConfig('tokensfarm', 'https://api.tokensfarm.com/farm/list') - farms = farms.filter(i => i.type === 'LP' && i.network.networkId === chainId) - const tokensAndOwners = [] - - farms.forEach(farm => { - const token = farm.singleAssets.find(i => new RegExp(farm.stakingTokenSymbol).test(i.symbol) || i.symbol.includes('-LP') || i.symbol.includes('UNI-V2'))?.address - if (!token) { - return - } - tokensAndOwners.push([token, farm.farmProxyAddress]) - }) - return sumUnknownTokens({ api, tokensAndOwners, resolveLP: true, useDefaultCoreAssets: true }) - } - - async function staking(api) { - const chainId = api.chainId - let { farms } = await getConfig('tokensfarm', 'https://api.tokensfarm.com/farm/list') - farms = farms.filter(i => i.type !== 'LP' && i.network.networkId === chainId && i.type !== 'UNIV3') - const tokensAndOwners = [] - - farms.forEach(farm => { - farm.singleAssets.forEach(i => { - let token = i.address === '0x0' ? nullAddress : i.address - tokensAndOwners.push([token, farm.farmProxyAddress]) - }) - }) - return sumUnknownTokens({ api, tokensAndOwners, resolveLP: true, useDefaultCoreAssets: true }) - } -}) diff --git a/projects/tokenstore/index.js b/projects/tokenstore/index.js deleted file mode 100644 index 155136bda97..00000000000 --- a/projects/tokenstore/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const TOKENS = require("../helper/coreAssets.json"); -const ethereumContract = ["0x1cE7AE555139c5EF5A57CC8d814a867ee6Ee33D8"]; - -const ethereumTokens = [ - TOKENS.null, - '0x2F141Ce366a2462f02cEA3D12CF93E4DCa49e4Fd' -]; - -module.exports = { - ethereum: { tvl: sumTokensExport({ owners: ethereumContract, tokens: ethereumTokens, }) }, -}; \ No newline at end of file diff --git a/projects/tokenworks/index.js b/projects/tokenworks/index.js deleted file mode 100644 index a2baf68e2af..00000000000 --- a/projects/tokenworks/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { getLogs2 } = require("../helper/cache/getLogs") -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs") - -async function tvl(api) { - - await punkStrategyTvl(api) - - const factory = '0xA1a196b5BE89Be04a2c1dc71643689CE013c22e5' - const logs = await getLogs2({ - api, - fromBlock: 23398278, - target: factory, - eventAbi: 'event NFTStrategyLaunched (address indexed collection, address indexed nftStrategy, string tokenName, string tokenSymbol)' - }) - - // add ETH and NFTs held by all strategies - const ownerTokens = logs.map(i => [[nullAddress, i.collection], i.nftStrategy]) - await api.sumTokens({ ownerTokens }) - - // add liquidity in uniswap v4 pools - return sumTokens2({ - api, owner: factory, resolveUniV4: true, uniV4ExtraConfig: { - whitelistedTokens: [nullAddress], - } - }) -} - -module.exports = { - doublecounted: true, // same eth is counted towards uni v4 tvl - methodology: `Counts liquidity belonging to the protocol in the Uniswap V4 pools (only ETH part), and ETH & NFTs on the strategy contracts`, - start: '2025-09-06', - ethereum: { tvl, }, -} - - -// punk strategy is special case as the token had a bug and was patched -async function punkStrategyTvl(api) { - // add PUNK balance - await api.sumTokens({ owner: '0x1244EAe9FA2c064453B5F605d708C0a0Bfba4838', tokens: ['0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB'] }) - - await sumTokens2({ - api, - resolveUniV4: true, - owner: '0xc50673EDb3A7b94E8CAD8a7d4E0cD68864E33eDF', - tokens: [nullAddress,], - - uniV4ExtraConfig: { positionIds: ['61403'], whitelistedTokens: [nullAddress], } - }) -} \ No newline at end of file diff --git a/projects/tokos-fi/index.js b/projects/tokos-fi/index.js deleted file mode 100644 index 4e9659c7ddd..00000000000 --- a/projects/tokos-fi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { aaveV2Export, methodology } = require("../helper/aave") - -module.exports = { - methodology, - somnia: aaveV2Export('0xEC6758e6324c167DB39B6908036240460a2b0168', { isAaveV3Fork: true }), -} \ No newline at end of file diff --git a/projects/tomb-swap/index.js b/projects/tomb-swap/index.js deleted file mode 100644 index 5d18240374c..00000000000 --- a/projects/tomb-swap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") - - module.exports = { - methodology: "Counts the tokens locked on AMM pools using the factory contract(0xE236f6890F1824fa0a7ffc39b1597A5A6077Cfe9) to find all of the pairs", - fantom: { - tvl: getUniTVL({ - factory: '0xE236f6890F1824fa0a7ffc39b1597A5A6077Cfe9', - useDefaultCoreAssets: true, - }) - }, - }; \ No newline at end of file diff --git a/projects/tomb/index.js b/projects/tomb/index.js deleted file mode 100644 index c52cc391b9b..00000000000 --- a/projects/tomb/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - - -const tshareTokenAddress = "0x4cdf39285d7ca8eb3f090fda0c069ba5f4145b37"; -const tshareRewardPoolAddress = "0xcc0a87f7e7c693042a9cc703661f5060c80acb43"; -const masonryAddress = "0x8764de60236c5843d9faeb1b638fbce962773b67"; -const lif3GenesisAddress = '0x072f35cfa85af2793348ccc0eaa0e16e898946a8' - -const ftmLPs = [ - "0x2a651563c9d3af67ae0388a5c8f89b867038089e", // tombFtmLpAddress - "0x4733bc45ef91cf7ccecaeedb794727075fb209f2", //tshareFtmLpAddress -]; - -async function pool2(api) { - return sumTokens2({ - api, owner: tshareRewardPoolAddress, tokens: ftmLPs, - }) -} - -async function staking(api) { - const toa = [ - [tshareTokenAddress, masonryAddress, ], - ] - - const lif3Tokens = [ - '0x4cdf39285d7ca8eb3f090fda0c069ba5f4145b37', // TSHARE - '0x6c021ae822bea943b2e66552bde1d2696a53fbb7', // TOMB - '0xcbe0ca46399af916784cadf5bcc3aed2052d6c45', // LSHARE - ] - - lif3Tokens.forEach(t => toa.push([t, lif3GenesisAddress])) - - return sumTokens2({ - api, tokensAndOwners: toa, - }) -} - -async function lif3GenesisTVL(api) { - const tokens = [ - ADDRESSES.fantom.WFTM, // WFTM - ADDRESSES.fantom.USDC, // USDC - ADDRESSES.fantom.WBTC, // BTC - '0x74b23882a30290451A17c44f4F05243b6b58C76d', // ETH - ADDRESSES.fantom.DAI, // DAI - ADDRESSES.fantom.MIM, // MIM - '0x8d7d3409881b51466b483b11ea1b8a03cded89ae', // BASED - '0x49c290ff692149a4e16611c694fded42c954ab7a', // BSHARE - '0x09e145a1d53c0045f41aeef25d8ff982ae74dd56', // Zoo - ] - - return sumTokens2({ - api, tokens, owner: lif3GenesisAddress, - }) -} - - -module.exports = { - methodology: "Pool2 deposits consist of TOMB/FTM and TSHARE/FTM LP tokens deposits while the staking TVL consists of the TSHARES tokens locked within the Masonry contract(0x8764de60236c5843d9faeb1b638fbce962773b67).", - fantom: { - tvl: lif3GenesisTVL, - pool2, - staking, - }, -}; \ No newline at end of file diff --git a/projects/tomo/index.js b/projects/tomo/index.js deleted file mode 100644 index 1de9ad231c2..00000000000 --- a/projects/tomo/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x9e813d7661d7b56cbcd3f73e958039b208925ef8" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - linea: { - tvl - } -} diff --git a/projects/tomofinance.js b/projects/tomofinance.js deleted file mode 100644 index 76c5c65a8ac..00000000000 --- a/projects/tomofinance.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - tomochain: { - tvl: () => ({}), - }, - deadFrom: '2021-05-22' -} diff --git a/projects/ton-locker/index.js b/projects/ton-locker/index.js deleted file mode 100644 index 461a8d9a321..00000000000 --- a/projects/ton-locker/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/chain/ton') - -module.exports = { - ton: { - tvl: () => ({}), - staking: sumTokensExport({ owner: "EQDtFpEwcFAEcRe5mLVh2N6C0x-_hJEM7W61_JLnSF74p4q2", tokens: [ADDRESSES.null], onlyWhitelistedTokens: true}), - }, -} \ No newline at end of file diff --git a/projects/tonbridge.js b/projects/tonbridge.js deleted file mode 100644 index 730263b45cd..00000000000 --- a/projects/tonbridge.js +++ /dev/null @@ -1,73 +0,0 @@ -const sdk = require("@defillama/sdk"); -const axios = require('axios'); -const burl = 'https://token-indexer.broxus.com/v1/root_contract/root_address/0:'; -const tokenMap = { - 'eb2ccad2020d9af9cec137d3146dde067039965c13a27d97293c931dae22b2b9': 'dai', - 'a519f99bb5d6d51ef958ed24d337ad75a1c770885dcd42d51d6663f9fcdacfb2': 'tether', - 'c37b3fafca5bf7d3704b081fde7df54f298736ee059bf6d32fac25f5e6085bf6': 'usd-coin', - '2ba32b75870d572e255809b7b423f30f36dd5dea075bd5f026863fceb81f2bcf': 'wrapped-bitcoin', - '59b6b64ac6798aacf385ae9910008a525a84fc6dcf9f942ae81f8e8485fe160d': 'weth', - //'1e6e1b3674b54753864af7b15072566ce632965bd83bab431a8ff86d68cf1657': 'UNIV2-usdt-wton', - 'efed9f9a7e6c455ee60829fd003b2f42edda513c6f19a484f916b055e9aa58d2': 'frax', - 'c14e2f026feaae0f99b92c04ee421051a782fff60156ac8a586a12f63d7facef': 'frax-share', - //'f48054939064d686a9ad68d96d9ab79e409b095557c06ab7f073097dade7057f': 'dartflex', - //'00ca16398f314a9b3bed582dc69582515d866ededb6c4e18190f63b305cedf91': NA - 'a49cd4e158a9a15555e624759e2e4e766d22600b7800d891e46f9291f044a93d': 'everscale', - // 'b2e341c01da068d43cfa0eae6dae36b12b476e55cf2c3eeb002689f44b9ddef9': 'aave', - // 'bc77ba7f3cbbebcca393e85ed479ef44df63cdee4fb572c3e0f904fb9fc63e25': 'compound-governance-token', - // '7dd7ae82835848dc6b490515ec4034968a8ceff893a6d5f31ab3cdfcfb79bbb6': 'curve-dao-token', - // '6b2baa777b89da66dddaf9f1602142987b13ca565bbb170da929ea945f5ce9fb': 'stasis-eurs', - //'387609364f765017fa3fa5815e08d420e054c88a86426cd6d5aaf2a1ee46ff5a': 'torn', - // 'e114f1f7d21ac6566d988c983315e0cdd5bee7b43c08918537d1117dea7e4534': 'yearn-finance', - // '3c66e3e0ce0a909ce8779b31509db773e544132d8fa6f6641c00bce257c79d9c': '1inch', - //'bf1c7c0e8a187d9d5ba6069bf768b69a982df8b22ef8430b31dcc4f97263507e': 'dartflex' -}; - -async function tvl() { - const balances = {}; - const tokenAddresses = Object.keys(tokenMap); - for (let i = 0; i < tokenAddresses.length; i++) { - const supply = (await axios.get(burl + tokenAddresses[i])).data.totalSupply; - balances[tokenMap[tokenAddresses[i]]] = supply - } - return balances; -} - -function evm(chain, target) { - return async (timestamp, block, chainBlocks) => { - return { everscale: (await sdk.api.abi.call({ - target, - abi: 'erc20:totalSupply', - block: chainBlocks[chain], - chain, - })).output / 10 ** 9 }; - }; -} - -module.exports = { - timetravel: false, - everscale: { - tvl - }, - bsc: { - tvl: evm('bsc', '0x0A7e7D210C45c4abBA183C1D0551B53AD1756ecA') - }, - ethereum: { - tvl: evm('ethereum', '0x29d578CEc46B50Fa5C88a99C6A4B70184C062953') - }, - avax:{ - tvl: evm('avax', '0x1ffefd8036409cb6d652bd610de465933b226917') - }, - milkomeda: { - tvl: evm('milkomeda', '0x1ffEFD8036409Cb6d652bd610DE465933b226917') - }, - polygon: { - tvl: evm('polygon', '0x1ffEFD8036409Cb6d652bd610DE465933b226917') - }, - fantom: { - tvl: evm('fantom', '0x1ffEFD8036409Cb6d652bd610DE465933b226917') - }, - hallmarks:[ - [1651881600, "UST depeg"], - ], -}; \ No newline at end of file diff --git a/projects/tonco/index.js b/projects/tonco/index.js deleted file mode 100644 index 6e5a974fedf..00000000000 --- a/projects/tonco/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require('../helper/coreAssets.json') - -const router = "EQC_-t0nCnOFMdp7E7qPxAOCbCWGFz-e3pwxb6tTvFmshjt5" -const wtTOn = "EQCHHakhWxSQIWbw6ioW21YnjVKBCDd_gVjF9Mz9_dIuFy23" - -module.exports = { - timetravel: true, - ton: { - tvl: sumTokensExport({ owners: [router, wtTOn], tokens: [ADDRESSES.null], }), - } -} diff --git a/projects/tonhedge/index.js b/projects/tonhedge/index.js deleted file mode 100644 index 1035597c78c..00000000000 --- a/projects/tonhedge/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const addr = "EQBXZo11H4wUq3azWDphoUhlV710a-7rvUsqZUGLP9tUcf37" - -module.exports = { - methodology: 'Counts TON Hedge smartcontract balance as TVL.', - ton: { - tvl: sumTokensExport({ owner: addr, tokens: [ADDRESSES.ton.USDT] }), - } -} diff --git a/projects/tonic-cash/config.js b/projects/tonic-cash/config.js deleted file mode 100644 index a0ad7780b40..00000000000 --- a/projects/tonic-cash/config.js +++ /dev/null @@ -1,75 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require('../helper/unwrapLPs'); - -module.exports = { - base: [ - { - tokens: [nullAddress], // KLAY - holders: [ - '0x86D5CF69842BBe4bdE06331C5480FFE8179EF6fB', - '0x713C3e59309CA047A7c8AA7201D302adceb79861', - '0x923815bBb945e96e5BF9240f612b41C3708529fd', - '0x9f9D6152bDA66265B31c9c0e90116E11481Afa70', - '0x60F7f382B2fe949c91c5b302A9E0fF9BF7E9158d', - ], - }, - ], - klaytn: [ - { - tokens: [nullAddress], // KLAY - holders: [ - '0x033237b3d6ABCb7d48C5A40Ec3038A53aEc1b77e', - '0x7b853e8387FC6bcFCAa9BDab8d0479E6c9E6782b', - '0x457Caf470fB1031530E8cdD06703da7B1BbCCe04', - '0x9694ea20de96D5E46C8FE1E7975D7a2C7C79Bf2c', - ], - }, - { - tokens: ['0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167'], // oUSDT - holders: [ - '0x528AE79DAe416bf9623B94fA6Baef0FC3dd12ef8', - '0xc69C9bBabEDE59562Cd8a6F92Fa50aFf10D8310e', - '0x503d6D4E14A2A4f78f4c3E51c94F1F53C6bd6D96', - '0x804aA592f7bF0B7EB98db08825D1106eC4822fb3', - ], - }, - { - tokens: ['0x34d21b1e550d73cee41151c77f3c73359527a396'], // oETH - holders: [ - '0x70D8D865d556f7D03c463e296ac706CE11B73d4B', - '0x402f2297f15b6fc9415D6F193ae882a3879b5F09', - '0xCFa2494dddB338c2fd15224B4Eb9668a5C4de695', - '0xD10aaD96548CAa7874e435Db0d9676b64554092b', - ], - }, - ], - wemix: [ - { - tokens: [nullAddress], // WEMIX - holders: [ - '0x033237b3d6ABCb7d48C5A40Ec3038A53aEc1b77e', - '0x7b853e8387FC6bcFCAa9BDab8d0479E6c9E6782b', - '0x457Caf470fB1031530E8cdD06703da7B1BbCCe04', - '0x9694ea20de96D5E46C8FE1E7975D7a2C7C79Bf2c', - ], - }, - { - tokens: [ADDRESSES.wemix.WEMIX_], // WEMIXDollar - holders: [ - '0x144120Ef18d4223Ab3f4695653a5755C23FBF469', - '0xc978f195C838d3344f74DDBA84235130B3091847', - '0xeD4a38cC990a6E5D817C9d89677c886994803d38', - '0xAc04FDbADd7CF8d4BaD0F957d37e3fd0c093A9B6', - ], - }, - { - tokens: [ADDRESSES.shiden.ETH], // ETH - holders: [ - '0x2D3bAeBa85D78D202887D34f5618380e90F3c272', - '0xD2510D275dbca0fe333dAff8Eb51b9105f6aC212', - '0xE1d1c5094d5eEF16E0207834b2E5FDf634278217', - '0xfF30E4d7ec19a45710049033d1E51C1a6848E1FA', - ], - }, - ], -}; diff --git a/projects/tonic-cash/index.js b/projects/tonic-cash/index.js deleted file mode 100644 index e4a5468b80e..00000000000 --- a/projects/tonic-cash/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); -const config = require('./config.js'); - -Object.keys(config).forEach((chain) => { - const tokensAndOwners = config[chain].flatMap(({ tokens, holders }) => - holders.flatMap(o => tokens.map(t => [t, o])) - ); - module.exports[chain] = { - tvl: sumTokensExport({ tokensAndOwners }), - }; -}); diff --git a/projects/tonic/index.js b/projects/tonic/index.js deleted file mode 100644 index e83b33deb7b..00000000000 --- a/projects/tonic/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { call, view_account, addTokenBalances, sumSingleBalance } = require('../helper/chain/near'); - -const ORDERBOOK_CONTRACT = 'v1.orderbook.near'; -const PERPS_CONTRACT = 'v1.tonic-perps.near'; -const GET_MARKETS_METHOD = 'list_markets'; -const GET_ASSETS_METHOD = 'get_assets'; -const FT_NEAR = 'wrap.near'; -const NATIVE_NEAR = 'near'; -const RAINBOW_USDC = 'a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near'; -const MARKET_ACTIVE_STATE = 'Active'; - - -async function tvl() { - // Spot orderbook - let listedTokensOrderbook = (await call(ORDERBOOK_CONTRACT, GET_MARKETS_METHOD, {"from_index": 0, "limit": 100})) - .filter(market => market.state === MARKET_ACTIVE_STATE) - .map(market => market['base_token']['token_type']['account_id']) - .filter(token => token && token.length > 0 && token !== NATIVE_NEAR); - listedTokensOrderbook = [...new Set(listedTokensOrderbook)]; - // Used as primary quote currency - listedTokensOrderbook.push(RAINBOW_USDC); - let balances = await addTokenBalances(listedTokensOrderbook, ORDERBOOK_CONTRACT); - - const orderbook_contract_state = await view_account(ORDERBOOK_CONTRACT); - sumSingleBalance(balances, FT_NEAR, orderbook_contract_state['amount']); - - - // Perps - let listedTokensPerps = (await call(PERPS_CONTRACT, GET_ASSETS_METHOD, {})) - .filter(asset => asset.id !== NATIVE_NEAR) - .map(asset => asset.id); - balances = await addTokenBalances(listedTokensPerps.filter(i => i !== 'aurora'), PERPS_CONTRACT, balances); - const perps_contract_state = await view_account(PERPS_CONTRACT); - sumSingleBalance(balances, FT_NEAR, perps_contract_state['amount']); - return balances; -} - - -module.exports = { - timetravel: false, - near: { - tvl, - }, - methodology: 'Sum all tokens deposited into Tonic DEX' -} diff --git a/projects/tonnel/config.js b/projects/tonnel/config.js deleted file mode 100644 index 5303ead06b5..00000000000 --- a/projects/tonnel/config.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const tokens = { - "GRAM": "0:b8ef4f77a17e5785bd31ba4da50abd91852f2b8febee97ad6ee16d941f939198", // EQC47093oX5Xhb0xuk2lCr2RhS8rj-vul61u4W2UH5ORmG_O - "DFC": "0:f6eb371de82aa9cfb5b22ca547f31fdc0fa0fbb41ae89ba84a73272ff0bf2157"//EQD26zcd6Cqpz7WyLKVH8x_cD6D7tBrom6hKcycv8L8hV0GP -} - -module.exports = { - ton: [ - { - tokens: [ADDRESSES.null], - holders: [ - "EQBemaU1eAM-fJP7tSniJGEmltPjitgGnlrP6UaXI7nzmEuV", // 5 TON - "EQBZ0-2-isPEN_lIyg9eqXO_RFWrl_PWIJq5K6SVcUwne23W", // 50 TON - "EQBYpQiQMwGBMzhOlJ52e4yXmcKCB_5uTTJ7bVSGqr-8YANi", // 250 TON - "EQB-s4WzIgGP9U6DNlFH_kSn0JuxhBCBXr_rKz2ztEiozTto", // 1000 TON - ], - }, - { - tokens: [tokens.GRAM], // GRAM - holders: [ - "EQD7U_FPYRFTGgiqrpiKh8_giyrIQHZtokUKvz2EmWvlmViC", // 500k GRAM - "EQCZXyOWRih3jtyhdCA7DV7KXluNbzqeIpJPnRkF4KEE1STp", // 30k GRAM - ], - }, - { - tokens: [tokens.DFC], // DFC - holders: [ - "EQC14SC0-P0iOXzn1971HVIDsCzQ0LllY0y5O7EE2pMLe9pT" // 100 DFC - ], - }, - ], -} \ No newline at end of file diff --git a/projects/tonnel/index.js b/projects/tonnel/index.js deleted file mode 100644 index 960b2259497..00000000000 --- a/projects/tonnel/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokensExport } = require('../helper/chain/ton') - -const config = require('./config.js') -const tonnel = "0:cd0efe78bff4c4539b76eab17293296c74f42cbf99ec499687fefec94893ed32" //EQDNDv54v_TEU5t26rFykylsdPQsv5nsSZaH_v7JSJPtMitv -const tonnelHolders = [ - "EQDTs-yjPLn7XzaRRq8pjp7H8Nw4y_OJ51Bk2dcrPlIYgwtV", // 10000 TONNEL - "EQAgoyECSzCIFTFkMIvDLgdUE3D9RxGfYQQGfxy3lBBc_Ke_", // 1000 TONNEL - "EQDzAhS3Ev8cxEBJ96MIqPjxyD_k0L3enzDWnQ3Z-4tUK1h5", // 200 TONNEL - "EQASyc8d2DjZHrFevnF432NRLc4qwh6HGUPAbMvbofMkeRZl", // 50 TONNEL - "EQCNoApBzMacKKdTwcvi1iOx78e98bTSaN1Gx_nnmd3Ek5Yn", // 66 TONNEL -] - -Object.keys(config).forEach((chain) => { - const tokenSet = new Set() - const owners = config[chain].map(({ tokens, holders }) => { - tokens.forEach(i => tokenSet.add(i)) - return holders - }).flat() - - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens: [...tokenSet], onlyWhitelistedTokens: true, }) - } - if (chain === 'ton') - module.exports.ton.staking = sumTokensExport({ owners: tonnelHolders, tokens: [tonnel], onlyWhitelistedTokens: true,}) -}) \ No newline at end of file diff --git a/projects/tonpools/index.js b/projects/tonpools/index.js deleted file mode 100644 index 3faff2f7adc..00000000000 --- a/projects/tonpools/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { call } = require('../helper/chain/ton') -const { sumTokens } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const tonpoolsContractAddress = "EQA7y9QkiP4xtX_BhOpY4xgVlLM7LPcYUA4QhBHhFZeL4fTa"; - -const tonpoolUSDTContractAddress = "EQDrSz9W4tjwnqy1F4z-O4Vkdp8g2YP94cmh12X5RbYpejCw"; - -async function tvl(api) { - const result = await call({ target: tonpoolUSDTContractAddress, abi: 'poolBalances' }) - api.add(ADDRESSES.ton.USDT, result[1]) - await sumTokens({ api, owners: [tonpoolsContractAddress], tokens: [ADDRESSES.null], }) -} - -module.exports = { - methodology: "Ton Pools's TVL includes all deposited supported assets", - ton: { - tvl, - }, -}; - diff --git a/projects/tonpound.js b/projects/tonpound.js deleted file mode 100644 index bcb4108f5f3..00000000000 --- a/projects/tonpound.js +++ /dev/null @@ -1,6 +0,0 @@ -const { compoundExports2, methodology, } = require('./helper/compound'); - -module.exports = { - ethereum:compoundExports2({ comptroller: '0x1775286Cbe9db126a95AbF52c58a3214FCA26803',}), - methodology, -} \ No newline at end of file diff --git a/projects/tonpump/index.js b/projects/tonpump/index.js deleted file mode 100644 index b467f9c6c4f..00000000000 --- a/projects/tonpump/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokens } = require("../helper/chain/ton"); -const { getConfig } = require("../helper/cache"); - -async function fetchTvl(api,) { - const res = await getConfig('tonpump', 'https://tonfunstats-eqnd7.ondigitalocean.app/api/v1/getServiceTokens?service=hot') - await sumTokens({ api, tokens: [ADDRESSES.ton.TON], owners: res, onlyWhitelistedTokens: true, }) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - ton: { - tvl: fetchTvl - } -} diff --git a/projects/tonsoffriends/index.js b/projects/tonsoffriends/index.js deleted file mode 100644 index bf6e20fc1b7..00000000000 --- a/projects/tonsoffriends/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -module.exports = { - ton: { - tvl: sumTokensExport({ owner: "EQBUXXx7QXeogpRqlCEqvJrhLKLmLrJKqnB35V931v2gYdW-", tokens: [ADDRESSES.null] }), - }, -}; diff --git a/projects/tonstakers-token-staking/index.js b/projects/tonstakers-token-staking/index.js deleted file mode 100644 index 7b52db49a6c..00000000000 --- a/projects/tonstakers-token-staking/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { call, } = require("../helper/chain/ton"); -const { sleep } = require("../helper/utils"); - -const farms = [ - { - contract: "EQBh2Asg4Opnlgmkw25gpZ7IcmyNPJceLh_51o0lOGwGjvuc", - name: "GEMSTON", - token: "0:57e8af5a5d59779d720d0b23cf2fce82e0e355990f2f2b7eb4bba772905297a4", - }, - { - contract: "EQDjQOGq_bx9pdjQJhQRK9Lux-YOUwDu1UNM8SevvbG25dEq", - name: "$PUNK", - token: "0:9da73e90849b43b66dacf7e92b576ca0978e4fc25f8a249095d7e5eb3fe5eebb", - }, - { - contract: "EQA0R317P10bopg5YGnI4B9_cJc0jPbVwnLZu3JuMWdyNgly", - name: "XROCK", - token: "0:157c463688a4a91245218052c5580807792cf6347d9757e32f0ee88a179a6549", - }, - { - contract: "EQA5BgnWFYQuKjDMgmqsYRTA1S3qjrF1MvmjG-BDEA19j0I9", - name: "JetTon", - token: "0:105e5589bc66db15f13c177a12f2cf3b94881da2f4b8e7922c58569176625eb5", - }, - { - contract: "EQDw7u6CwkbIfzhfdxITAy09yqvAk59hyCdxbdQCR67ilyn-", - name: "durev", - token: "0:74d8327471d503e2240345b06fe1a606de1b5e3c70512b5b46791b429dab5eb1", - }, - { - contract: "EQDMMSQsmGocIRUMxXL4MamEGasiANnV6GpKstApK45lVGwc", - name: "$WEB3", - token: "0:6d70be0903e3dd3e252407cbad1dca9d69fb665124ea74bf19d4479778f2ed8b", - }, -]; - -const retrieveFarmTVL = async (farmContract) => { - const result = await call({ - target: farmContract, - abi: "get_farming_minter_data", - }) - return result[3]; -}; - -const getFullTVl = async (api) => { - for (const farm of farms) { - const balanceRaw = await retrieveFarmTVL(farm.contract) - api.add(farm.token, balanceRaw) - await sleep(1000); - } -}; - -module.exports = { - timetravel: false, - deadFrom: '2025-02-01', - hallmarks: [ - ['2025-02-01', 'Token staking service is deprecated'], - ], - ton: { - tvl: () => ({}), - staking: getFullTVl, - }, -}; diff --git a/projects/tonstakers/index.js b/projects/tonstakers/index.js deleted file mode 100644 index 5c1bbeeec4b..00000000000 --- a/projects/tonstakers/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { call } = require("../helper/chain/ton"); - -module.exports = { - timetravel: false, - ton: { - tvl: async () => { - const result = await call({ target: "EQCkWxfyhAkim3g2DjKQQg8T5P4g-Q1-K_jErGcDJZ4i-vqR", abi: "get_pool_full_data"}) - return { "coingecko:the-open-network": result[2]/1e9 }; - } - } -} \ No newline at end of file diff --git a/projects/tonswap/index.js b/projects/tonswap/index.js deleted file mode 100644 index 93aff3b8a94..00000000000 --- a/projects/tonswap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { post } = require('../helper/http') - -const url = 'https://api.flatqube.io/v1/pairs' - -const payload = { - currencyAddresses: [], - limit: 1000, - offset: 0, - ordering: "tvldescending", - whiteListUri: "https://raw.githubusercontent.com/broxus/flatqube-assets/master/manifest.json", -} - -const tvl = async (api) => { - const { pairs } = await post(url, payload) - pairs.forEach(( { tvl }) => { - api.addUSDValue(Math.round(tvl)) - }) -} - -module.exports = { - misrepresentedTokens: true, - everscale: { tvl } -}; diff --git a/projects/tonyielding/index.js b/projects/tonyielding/index.js deleted file mode 100644 index 640619f6057..00000000000 --- a/projects/tonyielding/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require("../helper/chain/ton"); -const TONYIELDING = 'EQAN0yTLUz7gGuM41LniwcdoKKLPYV0BCDPSxTSoqrlRSTAR'; - -module.exports = { - methodology: 'Counts the number of TON in the Tonyielding contract.', - ton: { - tvl: (api) => sumTokens({ api, owners: [TONYIELDING], tokens: [ADDRESSES.null] }), - } -}; diff --git a/projects/toobit/index.js b/projects/toobit/index.js deleted file mode 100644 index 294b5d86bfe..00000000000 --- a/projects/toobit/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - ethereum: { - owners: [ - '0xCAF80cfacBEF94d37De091093822f2a862adc47F', - '0x3244609ee06ae8f403003c624314e50e6c2ac01a', - ], - }, - bitcoin: { - owners: bitcoinAddressBook.toobit - }, - bsc: { - owners: [ - '0xCAF80cfacBEF94d37De091093822f2a862adc47F' - ] - }, -} - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/topshelf/index.js b/projects/topshelf/index.js deleted file mode 100644 index ac5dcab38ba..00000000000 --- a/projects/topshelf/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getLiquityTvl } = require('../helper/liquity') -const sdk = require('@defillama/sdk'); - -async function fantomCurveLps(api) { - return api.sumTokens({ - tokensAndOwners: [ - ["0x6ef78ad4a40e9a6c81b9229de3ecc33ce591bc34", "0xce42b2ee38f3434be68d1d6258a4d8959a6716ab"], //usd - ["0x8b63f036f5a34226065bc0a7b0ae5bb5eba1ff3d", "0x59f58431d4cba2b7e9e8d78f064a8fa24c5134bf"], //ftm - ] - }) -} - -const options = { nonNativeCollateralToken: true} - -module.exports = { - methodology: "Deposited AVAX, BNB and FTM on all three chains as well as deposits in staking pools. g3CRV is replaced by MIM", - bsc: { - tvl: getLiquityTvl("0x15102B7579aE3b913B0cbb2edE791fC58C528195", options) - }, - avax: { - tvl: getLiquityTvl("0x41c36D163DB9e58608F4B354FfB3893EF472E9fd", options) - }, - fantom: { - tvl: sdk.util.sumChainTvls([ - getLiquityTvl("0x5420d619823b7d836341524C55f3c24B4D497c72", options), - getLiquityTvl("0x16E900A379873351D6922881388548e4eee5c611", options), - fantomCurveLps - ]) - } -}; diff --git a/projects/torch/index.js b/projects/torch/index.js deleted file mode 100644 index dd49173bbb8..00000000000 --- a/projects/torch/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json") -const { sumTokens } = require('../helper/chain/ton') -const { get } = require("../helper/http") - -const DEX_V1 = 'EQCaEOMOR2SRcXTVSolw--rY62ghCoCRjn4Is3bBdnqYwIVZ' // DEX V1 Router Contract -const YIELD_ROUTER = 'EQDYU6gxBxFT3arWR-N9RFTfqAoQKyWk4JMgTBNOM2KL18Dw' // Yield Router Contract - -async function tvl(api) { - let yieldTvl = 0 - let dexV2Tvls = { tvl: 0 } - - try { - const tokenTvl = await get('https://yield-api.torch.finance/tvl') // Yield API - yieldTvl = tokenTvl.reduce((acc, data) => { - acc += Number(data.tvl) / 1e9 - return acc - }, 0) - } catch (e) { - console.log("Failed to fetch yield TVL, defaulting to 0:", e.message) - } - - try { - dexV2Tvls = await get('http://api.torch.finance/metrics/tvl') // DEX V2 API - } catch (e) { - console.log("Failed to fetch DEX V2 TVL, defaulting to 0:", e.message) - } - - const totalTvl = yieldTvl + dexV2Tvls.tvl - - await sumTokens({ - api, - owners: [DEX_V1, YIELD_ROUTER], - tokens: [ADDRESSES.ton.TON], - }); - - api.add(ADDRESSES.ton.USDT, totalTvl * 1e6) -} - -module.exports = { - timetravel: false, - methodology: `The TVL calculation for Torch includes the value of liquidity pools in DEX, where token prices are obtained from TONAPI for regular tokens, while LP token prices are calculated by our API using on-chain data (pool reserves and total supply).`.trim(), - ton: { - tvl: tvl - }, -} \ No newline at end of file diff --git a/projects/torches/index.js b/projects/torches/index.js deleted file mode 100644 index 8de85bc1347..00000000000 --- a/projects/torches/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - kcc: compoundExports2({ comptroller: '0xfbAFd34A4644DC4f7c5b2Ae150279162Eb2B0dF6'}) -} \ No newline at end of file diff --git a/projects/toreus/index.js b/projects/toreus/index.js deleted file mode 100644 index 4ac52c64fa6..00000000000 --- a/projects/toreus/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require("../helper/staking"); -const { aaveExports, methodology, } = require("../helper/aave"); - -const stakingContract = "0x2911c3a3b497Af71aAcbB9B1E9FD3ee5D50f959D"; -const TOREUS = "0x8549724fcC84ee9ee6c7A676F1Ba2Cc2f43AAF5B"; - -module.exports = { - methodology, - deadFrom: '2023-07-18', - kava: { - ...aaveExports("kava", "0xcCe311383b0f4A41c82D8d03a1f4214A3c8E70Bd"), - staking: staking(stakingContract, TOREUS), - }, -}; - -module.exports.kava.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/tornadao/index.js b/projects/tornadao/index.js deleted file mode 100644 index 01531ccddc0..00000000000 --- a/projects/tornadao/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x68bb6883B44F4Ab37596b6189FAe354E937D4990" -module.exports = ohmTvl(treasury, [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false],//mim - [ADDRESSES.avax.WAVAX, false],//avax - ["0xaef85b5b06b13b79b17fd684b1f04035570a9ae0", true],//joeLP - ["0xe750f3b821d4bc696f977756cd3b1b5e0ae00647", true],//joeLP - ], "avax", "0x39Af1EB019750aDc3Ea89D80080079F64D5432dB", "0xb80323c7aa915cb960b19b5cca1d88a2132f7bd1") \ No newline at end of file diff --git a/projects/tornado/config.js b/projects/tornado/config.js deleted file mode 100644 index 1f126c02b60..00000000000 --- a/projects/tornado/config.js +++ /dev/null @@ -1,134 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: [ - { - tokens: [nullAddress], - holders: [ - "0x12d66f87a04a9e220743712ce6d9bb1b5616b8fc", // 0.1 ETH - "0x47ce0c6ed5b0ce3d3a51fdb1c52dc66a7c3c2936", // 1 ETH - "0x910cbd523d972eb0a6f4cae4618ad62622b39dbf", // 10 ETH - "0xa160cdab225685da1d56aa342ad8841c3b53f291", // 100 ETH - ], - }, - { - tokens: [ADDRESSES.ethereum.DAI], // DAI - holders: [ - "0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3", - "0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144", - "0x07687e702b410Fa43f4cB4Af7FA097918ffD2730", - "0x23773E65ed146A459791799d01336DB287f25334", - ], - }, - { - tokens: [ADDRESSES.ethereum.USDT], // USDT - holders: [ - "0x169AD27A470D064DEDE56a2D3ff727986b15D52B", - "0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f", - "0xF67721A2D8F736E75a49FdD7FAd2e31D8676542a", - "0x9AD122c22B14202B4490eDAf288FDb3C7cb3ff5E", - ], - }, - { - tokens: [ADDRESSES.ethereum.USDC], // USDC - holders: [ - "0xd96f2B1c14Db8458374d9Aca76E26c3D18364307", - "0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D", - "0xD691F27f38B395864Ea86CfC7253969B409c362d", - ], - }, - { - tokens: [ADDRESSES.ethereum.WBTC], // WBTC - holders: [ - "0x178169B423a011fff22B9e3F3abeA13414dDD0F1", - "0x610B717796ad172B316836AC95a2ffad065CeaB4", - "0xbB93e510BbCD0B7beb5A853875f9eC60275CF498", - ], - }, - { - tokens: ['0x5d3a536e4d6dbd6114cc1ead35777bab948e3643'], // cDAI - holders: [ - "0x22aaA7720ddd5388A3c0A3333430953C68f1849b", - "0x03893a7c7463AE47D46bc7f091665f1893656003", - "0x2717c5e28cf931547B621a5dddb772Ab6A35B701", - "0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af", - ], - }, - ], - bsc: [ - { - tokens: [nullAddress], - holders: [ - "0x84443CFd09A48AF6eF360C6976C5392aC5023a1F", // 0.1 BNB - "0xd47438C816c9E7f2E2888E060936a499Af9582b3", // 1 BNB - "0x330bdFADE01eE9bF63C209Ee33102DD334618e0a", // 10 BNB - "0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD", // 100 BNB - ], - }, - ], - polygon: [ - { - tokens: [nullAddress], - holders: [ - "0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD", // 100 - "0xdf231d99Ff8b6c6CBF4E9B9a945CBAcEF9339178", // 1000 - "0xaf4c0B70B2Ea9FB7487C7CbB37aDa259579fe040", // 10000 - "0xa5C2254e4253490C54cef0a4347fddb8f75A4998", // 100000 - ], - }, - ], - optimism: [ - { - tokens: [nullAddress], - holders: [ - "0x84443CFd09A48AF6eF360C6976C5392aC5023a1F", // 0.1 ETH - "0xd47438C816c9E7f2E2888E060936a499Af9582b3", // 1 ETH - "0x330bdFADE01eE9bF63C209Ee33102DD334618e0a", // 10 ETH - "0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD", // 100 ETH - ], - }, - ], - arbitrum: [ - { - tokens: [nullAddress], - holders: [ - "0x84443CFd09A48AF6eF360C6976C5392aC5023a1F", // 0.1 ETH - "0xd47438C816c9E7f2E2888E060936a499Af9582b3", // 1 ETH - "0x330bdFADE01eE9bF63C209Ee33102DD334618e0a", // 10 ETH - "0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD", // 100 ETH - ], - }, - ], - xdai: [ - { - tokens: [nullAddress], - holders: [ - "0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD", // 100 - "0xdf231d99Ff8b6c6CBF4E9B9a945CBAcEF9339178", // 1000 - "0xaf4c0B70B2Ea9FB7487C7CbB37aDa259579fe040", // 10000 - "0xa5C2254e4253490C54cef0a4347fddb8f75A4998", // 100000 - ], - }, - ], - avax: [ - { - tokens: [nullAddress], - holders: [ - "0x330bdFADE01eE9bF63C209Ee33102DD334618e0a", // 10 - "0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD", // 100 - "0xaf8d1839c3c67cf571aa74B5c12398d4901147B3", // 500 - ], - }, - ], - ethereumclassic: [ - { - tokens: [nullAddress], - holders: [ - "0x2f56d5aFC058B8734350B162EFEe75ee48f034e0", // 1 - "0x59fCB629A23e8eD0a60A0188771E221042260118", // 10 - "0x784B3a7a7981B959bd8d9D9e73c2013BE819Fbf2", // 100 - ], - }, - ], -} diff --git a/projects/tornado/index.js b/projects/tornado/index.js deleted file mode 100644 index 06171665be6..00000000000 --- a/projects/tornado/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') - -const config = require('./config.js') - - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const tokensAndOwners = config[chain].map(({ tokens, holders }) => holders.map(o => tokens.map(t => [t, o])).flat()).flat() - module.exports[chain] = { - tvl: sumTokensExport({ tokensAndOwners }) - } -}) \ No newline at end of file diff --git a/projects/tornadocore/index.js b/projects/tornadocore/index.js deleted file mode 100644 index 4202adb426b..00000000000 --- a/projects/tornadocore/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { staking, stakings } = require("../helper/staking"); -const { pool2, pool2s } = require("../helper/pool2"); - -/*** Ethereum Addresses ***/ -const vaultV1Contract = "0x42A43cD4A19eaBE7775Ea261e4ECAC4CBC2acC3a"; -const WETH_TCORE_UNIV2 = "0x39C0eDEf530d284b8f7820061114157C5bD78093"; -const TCORE = "0x7A3D5d49D64E57DBd6FBB21dF7202bD3EE7A2253"; - -/*** BSC Addresses ***/ -const vaultContracts_bsc = [ - // Vault V1 - "0x8BE19596c251c6A3d4b490d065F230054e018E21", - // Vault V2 - "0xbb9FAe76E20683923dfFfAC0f02f03a07e13FbCA", -]; -const WBNB_TCORE_BLP = "0x4Ad7b83AdDAc8146ae43eAaAc8051C3aA0587a87"; -const WBNB_TCORE_CakeLP = "0x05a509E620869227396E9fb82365D6b418C05eb6"; -const TCORE_bsc = "0x40318becc7106364D6C41981956423a7058b7455"; - -/*** Polygon Addresses ***/ -const vaultV1Contract_polygon = "0x40318becc7106364D6C41981956423a7058b7455"; -const WMATIC_TCORE_UNIV2_polygon = "0xa109Bae20e8c6bdf84E44B45857e81ad05c8A129"; -const TCORE_polygon = "0x4CC5205b9523Fc40E99C20AC7B8Ba0B606c3dbCe"; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking(vaultV1Contract, TCORE), - pool2: pool2(vaultV1Contract, WETH_TCORE_UNIV2), - }, - bsc: { - staking: stakings(vaultContracts_bsc, TCORE_bsc), - pool2: pool2s( - vaultContracts_bsc, - [WBNB_TCORE_BLP, WBNB_TCORE_CakeLP], - "bsc" - ), - }, - polygon: { - staking: staking(vaultV1Contract_polygon, TCORE_polygon), - pool2: pool2( - vaultV1Contract_polygon, - WMATIC_TCORE_UNIV2_polygon, - "polygon" - ), - tvl: (async) => ({}), - }, - methodology: "Counts liquidty on the staking and pool2 only", -}; diff --git a/projects/toros/abis.js b/projects/toros/abis.js deleted file mode 100644 index 938c9930d52..00000000000 --- a/projects/toros/abis.js +++ /dev/null @@ -1,10 +0,0 @@ -const DHEDGE_FACTORY_ABI = - "function getManagedPools(address manager) view returns (address[] managedPools)"; - -const TOROS_POOL_ABI = - "function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue))"; - -module.exports = { - DHEDGE_FACTORY_ABI, - TOROS_POOL_ABI, -}; diff --git a/projects/toros/config.js b/projects/toros/config.js deleted file mode 100644 index 0fa261f4630..00000000000 --- a/projects/toros/config.js +++ /dev/null @@ -1,26 +0,0 @@ -const CONFIG_DATA = { - polygon: { - dhedgeFactory: "0xfdc7b8bFe0DD3513Cc669bB8d601Cb83e2F69cB0", - torosMultisigManager: "0x090e7fbd87a673ee3d0b6ccacf0e1d94fb90da59", - }, - optimism: { - dhedgeFactory: "0x5e61a079A178f0E5784107a4963baAe0c5a680c6", - torosMultisigManager: "0x813123a13d01d3f07d434673fdc89cbba523f14d", - }, - arbitrum: { - dhedgeFactory: "0xffFb5fB14606EB3a548C113026355020dDF27535", - torosMultisigManager: "0xfbd2b4216f422dc1eee1cff4fb64b726f099def5", - }, - base: { - dhedgeFactory: "0x49Afe3abCf66CF09Fab86cb1139D8811C8afe56F", - torosMultisigManager: "0x5619AD05b0253a7e647Bd2E4C01c7f40CEaB0879", - }, - ethereum: { - dhedgeFactory: "0x96d33bcf84dde326014248e2896f79bbb9c13d6d", - torosMultisigManager: "0xfbd2b4216f422dc1eee1cff4fb64b726f099def5", - }, -}; - -module.exports = { - CONFIG_DATA, -}; diff --git a/projects/toros/index.js b/projects/toros/index.js deleted file mode 100644 index f6f4ce07cbc..00000000000 --- a/projects/toros/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const { DHEDGE_FACTORY_ABI, TOROS_POOL_ABI } = require("./abis"); -const { CONFIG_DATA } = require("./config"); - -async function tvl(api) { - const { chain, } = api - const { dhedgeFactory, torosMultisigManager } = CONFIG_DATA[chain]; - - const pools = await api.call({ - abi: DHEDGE_FACTORY_ABI, - target: dhedgeFactory, - params: [torosMultisigManager], - }); - - const poolSummariesRes = await api.multiCall({ - abi: TOROS_POOL_ABI, - calls: pools, - permitFailure: true - }); - - const poolSummaries = poolSummariesRes.filter(i => i && i.totalFundValue !== null && i.totalFundValue !== undefined); - - const totalValue = poolSummaries.reduce( - (acc, i) => acc + +i.totalFundValue, - 0 - ); - - return { - tether: totalValue / 1e18, - }; -} - -module.exports = { - misrepresentedTokens: true, - start: '2021-08-01', // Sunday, August 1, 2021 12:00:00 AM - methodology: - "Aggregates total value of each Toros vault on Polygon, Optimism, Arbitrum, Base and Ethereum", - polygon: { - tvl, - }, - optimism: { - tvl, - }, - arbitrum: { - tvl, - }, - base: { - tvl, - }, - ethereum: { - tvl, - }, - hallmarks: [ - [1674003600, "Optimism Incentives Start"], - [1699050203, "Leverage Tokens on Optimism Release"], - [1701468842, "First Arbitrum Vault Release"], - [1706569200, "First Base Vault Release"], - [1746628545, "First GMX Leveraged Tokens Release"], - [1747632800, "Limit Orders Release"], - [1750763200, "First 1X Leveraged Tokens Release"], - [1753182400, "Protected Leveraged Tokens Using Options Release"], - [1753335200, "Removal of Yield Products to Focus on Derivatives"], - [1754392480, "First Ethereum Mainnet Leveraged Tokens Released"], - ], -}; diff --git a/projects/tortuga/index.js b/projects/tortuga/index.js deleted file mode 100644 index 99a92d21aad..00000000000 --- a/projects/tortuga/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { aQuery } = require('../helper/chain/aptos') - -module.exports = { - timetravel: false, - aptos: { - tvl: async () => { - const { data: { supply } } = await aQuery('/v1/accounts/0x84d7aeef42d38a5ffc3ccef853e1b82e4958659d16a7de736a29c55fbbeb0114/resource/0x1::coin::CoinInfo%3C0x84d7aeef42d38a5ffc3ccef853e1b82e4958659d16a7de736a29c55fbbeb0114::staked_aptos_coin::StakedAptosCoin%3E') - return { - aptos: supply.vec[0].integer.vec[0].value/1e8 - } - } - } -} \ No newline at end of file diff --git a/projects/torusfarm/index.js b/projects/torusfarm/index.js deleted file mode 100644 index 4c7ac99ad69..00000000000 --- a/projects/torusfarm/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const TORUS = "0x736063A68A99a8E2943DA3952A676384154Ac0B6"; -const FACTORY = "0x259b3217A01878ea9d64b45eE48231e660863ee7" - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, permitFailure: true }) - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - base: { - tvl: dexTVL, - } -}; diff --git a/projects/totemfi/index.js b/projects/totemfi/index.js deleted file mode 100644 index f75e3d6e10a..00000000000 --- a/projects/totemfi/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - bsc: { - tvl: () => ({}), - methodology: 'Project is wound down: https://twitter.com/TotemFi/status/1601247760745140224', - }, - deadFrom: '2022-12-20' -} \ No newline at end of file diff --git a/projects/tothemoon/index.js b/projects/tothemoon/index.js deleted file mode 100644 index dd57416e851..00000000000 --- a/projects/tothemoon/index.js +++ /dev/null @@ -1,103 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: bitcoinAddressBook.tothemoon - }, - bsc: { - owners: [ - '0xe8bbf1f79b7676dae17cf1b4c59ace5ff592cc90', - '0x39d73b7ac122191d87ec006a022b604046d87da6', - '0xda197f00e994229e07a0bd05bb1a8e24537e9dae', - '0x21f8c4ce58393ab60ce56868585c196d79417e2d', - '0x3d87026f2d9f2ef79c12169774f1bfabadc908b4', - '0x3626a62af56946f19c5790efb4ff8cb240781040', - '0x5030d735de7ba097766047d6573e98611dee8f66', - '0x446b3adcbebfec21fc2c295a60df9bd8ea270821', - '0x44fc451f8163ef63c151d579529d61262ae673de', - '0xc61e3a3ae3282e0699cb25a748165efc5743ccde', - '0x1b26277245b899b4df7ab3584d93de71bb18075e', - '0xbb321d71c17603a3f28f6d2e59a6812a1d208fc2', - '0x423ed6b416f1ce29c09666cd7047ad7856afac9b', - '0x989d189fe5d15991c4726d1c5ecfc0c37df26db9', - '0x489e0059ab37b3a0a99bd1126301be230fe1ea0b', - '0xf867050ab5c0a4a529d23175c3eaecc62ceb4fa7', - '0x2b6b0d140122236d9a31014f01e1d5290b8a5310', - '0x27780c3bbd33ca49e7c9ef414890e6b0a6131600', - '0xef03313a5741c6c7bBC3BDb2D2C114128820f742', - - ], - }, - ethereum: { - owners: [ - '0x446b3adcbebfec21fc2c295a60df9bd8ea270821', - '0x8084dddd27949c84f3b5c3b67e5ff316f330c1ef', - '0xe58a3ebde7063409c7286e3b462162e6e5bbfe0a', - '0x58beafb3728cec95f890e9cc17067d15415bc732', - '0xf21fd9bc864008173538e6080a2a29fb8c03819a', - '0xe8b8ae4e9ac5f46234d9033ab25b4cdb081b49c4', - '0x7277f84ea279ad4bf01321f827e4159de695ffd0', - '0xdbb27c626fef770b35f8b3bd65045cc08fb549a9', - '0xe1b19dd436098af66363cc2c6f7226af473e4d79', - '0x5faa88cac6061279bac6e1f159e19fcac4adbcdc' - ], - }, - tron: { - owners: [ - 'TNkWwmfxc4vLC3JskjxXt7Dyjg1KwFkLJF', - 'TDSt6rGjQyKxAmnRekDjWQaz3gvMSQVbQV', - 'TB1GFq3GDunz8YU4Q4oyEfJBXaSi3JGZmd', - 'TKjVajc9yW1z4g3erXhAT4fvpoq4x2a3Hr', - 'TED2kukjqMv3sgwcXPa3dsF1tqZaZoCr77', - 'TFxiAjpxQ9eQPMbtn9k8RT624zH2usvFs1', - 'TPkezqv23o9bk9Zj9fuE4HSgSY3rSy9TXs', - 'THj4UJXjnC62f2jCeWo1B8G15dbcmCbaJL', - 'TJPyoUyaduFFqh3H7fnH5e92DC6nTs8vAg', - - ], - }, - polygon: { - owners: [ - '0xf9d64ea64866be80ad69342e25371009e79ea70d', - '0x446b3adcbebfec21fc2c295a60df9bd8ea270821', - '0x39d73b7ac122191d87ec006a022b604046d87da6', - '0xe51d4427b0b306bbc24a927d8bd692e62e403742' - ] - }, - solana: { - owners: [ - '9JXTEMVMHPghKX1LNrXjUJwGEmdh2TgQg1W7uskvRmiy' - ] - }, - arbitrum: { - owners: [ - '0x237C8A1f3Dff219b316425a45cD5F569e9D63421', - '0x8719aed24B151B2aE578FAB5c998D780f74F0CCE', - '0xd3c4c2C5622c212dEC0205D632102a5c502949fD', - '0xD13B840D92A582Bab0bB49E1289e54a417BE7076', - '0x0C9BE095748eb105729AF05CEe083d3fdF1f00a9' - ] - }, - avax: { - owners: [ - '0x5faa88cac6061279bac6e1f159e19fcac4adbcdc' - ] - }, - optimism: { - owners: [ - '0x1169214BB47e0C747332373d906E90D49387a689' - ] - }, - ton: { - owners: [ - 'UQDGmv55AmhYEFvGbQgIB6lhV6RcnvhQ2jQnhF_U3OljAjvp', - 'UQB2ZU10TySARxMlPbKL_R50u92jRtQUb0A5YXeX2y3b-bHd', - 'UQBf1imH6qiGW3S7CKwt0Ee_REMl8fjYYeSCQvL1nMuJdS-B', - 'UQDIDUnN31g8qmRyOUrsUxOvYEAtpJR034z7WkS3OGqR29HE' - - ] - } -}; - -module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/toucan-protocol/config.js b/projects/toucan-protocol/config.js deleted file mode 100644 index 670406ffa6b..00000000000 --- a/projects/toucan-protocol/config.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const CONFIG_DATA = { - base: { - char: "0x20b048fA035D5763685D695e66aDF62c5D9F5055", - }, - celo: { - bct: "0x0CcB0071e8B8B716A2a5998aB4d97b83790873Fe", - nct: ADDRESSES.celo.NCT, - char: "0x50E85c754929840B58614F48e29C64BC78C58345", - }, - polygon: { - bct: "0x2F800Db0fdb5223b3C3f354886d907A671414A7F", - nct: "0xD838290e877E0188a4A44700463419ED96c16107", - }, - regen: { - nct_bridge: "0xdC1Dfa22824Af4e423a558bbb6C53a31c3c11DCC" - }, -}; -const TOKEN_DATA = { - bct: { - coingecko: "toucan-protocol-base-carbon-tonne", - validUntil: 1709828986, - }, - nct: { - coingecko: "toucan-protocol-nature-carbon-tonne", - }, - char: { - coingecko: "biochar", - }, -}; - -module.exports = { - CONFIG_DATA, - TOKEN_DATA, -}; diff --git a/projects/toucan-protocol/index.js b/projects/toucan-protocol/index.js deleted file mode 100644 index 909485c2db2..00000000000 --- a/projects/toucan-protocol/index.js +++ /dev/null @@ -1,73 +0,0 @@ -const sdk = require('@defillama/sdk') -const { CONFIG_DATA, TOKEN_DATA } = require("./config"); - -const getCalculationMethod = (chain) => { - return async (api,) => { - const supplyCalls = [] - const tokenInfo = [] - Object.keys(CONFIG_DATA[chain]).map((key) => { - supplyCalls.push(CONFIG_DATA[chain][key]); - tokenInfo.push(TOKEN_DATA[key]); - }) - - const resp = await api.multiCall({ abi: 'erc20:totalSupply', calls: supplyCalls, }) - const tokensArray = resp.map((obj, i) => { - const validUntil = tokenInfo[i].validUntil - if (validUntil && api.timestamp > validUntil) - tokenInfo[i].totalSupply = 0 - else - tokenInfo[i].totalSupply = obj - - return { - [tokenInfo[i].coingecko]: dropDecimals(tokenInfo[i].totalSupply), - }; - }); - - const tokens = tokensArray.reduce((acc, cur) => { - for (const entry of Object.entries(cur)) { - const [key, value] = entry; - acc[key] = value; - } - return acc; - } , {}); - - return tokens; - }; -}; - -const dropDecimals = (num) => { - return (num ?? 0) / 1e18; -} - -const getRegenCredits = () => { - return async () => { - const transferred = (await sdk.api.abi.call({ - abi: 'uint256:totalTransferred', - target: CONFIG_DATA['regen'].nct_bridge, - chain: 'polygon', - })).output; - - return { - 'toucan-protocol-nature-carbon-tonne': transferred / 1e18, - }; - }; -}; - -module.exports = { - start: '2021-10-21', - base: { - tvl: getCalculationMethod("base") - }, - celo: { - tvl: getCalculationMethod("celo") - }, - polygon: { - tvl: getCalculationMethod("polygon") - }, - regen: { - tvl: getRegenCredits() - }, - hallmarks: [ - [1653429600, "Verra prohibits tokenization"], [1709828986, "BCT administrative control transferred to KlimaDAO"], - ] -}; diff --git a/projects/touch-fan/index.js b/projects/touch-fan/index.js deleted file mode 100644 index 7466196482e..00000000000 --- a/projects/touch-fan/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') -const fan_contract = "0x9842114F1d9c5286A6b8e23cF0D8142DAb2B3E9b" -const { nullAddress } = require('../helper/unwrapLPs') - -const touch_contract = "0xC612eD7a1FC5ED084C967bD71F1e0F0a338Cf816" -const tft_address = "0x14acccd04393f26ba155e5402aa6fddbb8e2254a" -const zk_sync_swap_pool = "0xB075F49F4Bea5204d22B42E8d442e8E9e3400AF8" -const stake_tft_contract_address = "0x38a22eFB9eE73EdABdc4A15B17D28b70bA56BDA3" -const getReservesABI = "function getReserves() external view returns (uint,uint)" -const vester_address = "0x13B8C03990b7d782cB9c3ebF7E2aA5Dc28f6133B" -const lock_tft_address = "0x9b470d1d40F437cAb76ea8fC80BC3b761e96D44D" -const lock_lp_address = "0x26854C6A28864D7E84893F45EDf366eE2494B09a" - - -module.exports = { - methodology: `We count the ETH on ${fan_contract} and ${touch_contract}`, - misrepresentedTokens: true, - era: { - tvl: sumTokensExport({ owners: [fan_contract, touch_contract], tokens: [nullAddress] }), - staking: sumTokensExport({ - owners: [lock_tft_address, vester_address, stake_tft_contract_address], tokens: [tft_address], - lps: [zk_sync_swap_pool], - abis: { getReservesABI }, - useDefaultCoreAssets: true - }), - pool2: sumTokensExport({ - owners: [lock_lp_address], tokens: [zk_sync_swap_pool], resolveLP: true, - abis: { getReservesABI }, - useDefaultCoreAssets: true - }) - } -} diff --git a/projects/toupee-tech/index.js b/projects/toupee-tech/index.js deleted file mode 100644 index d20b43317bb..00000000000 --- a/projects/toupee-tech/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json') - -const WIG = "0x58dd173f30ecffdfebcd242c71241fb2f179e9b9"; -const vWIG = "0x60c08737877a5262bdb1c1cAC8FB90b5E5B11515"; - -async function staking(api) { - const bal = await api.call({ abi: 'erc20:balanceOf', target: WIG, params: vWIG }) - const price = await api.call({ abi: 'uint256:getMarketPrice', target: WIG }) - - api.add(ADDRESSES.base.WETH, bal * price / 1e18) -} - -async function borrowed(api) { - api.add(ADDRESSES.base.WETH, await api.call({ abi: 'uint256:debtTotal', target: WIG })) -} - -module.exports = { - methodology: `Counts the number of locked WETH in the Toupee Tech Bonding Curve. Staking accounts for the WIG locked in ToupeeTechVoter (0x60c08737877a5262bdb1c1cAC8FB90b5E5B11515)`, - base: { - tvl: sumTokensExport({ owner: WIG, tokens: [ADDRESSES.base.WETH] }), - borrowed, staking, - }, -}; diff --git a/projects/tower-finance/index.js b/projects/tower-finance/index.js deleted file mode 100644 index 42e490d4428..00000000000 --- a/projects/tower-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -module.exports = { - polygon: { - tvl: () => ({}), - }, - deadFrom: '2022-04-27', -} \ No newline at end of file diff --git a/projects/toxicdeer/index.js b/projects/toxicdeer/index.js deleted file mode 100644 index 2b729966c63..00000000000 --- a/projects/toxicdeer/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') - -const XDSHARE = "0x6f715158d4b1468528da002f5941c72fe4159520"; -const boardroom = "0x85b60750761d0e170237700Ce1e94213E1742A34"; -const rewardPool = "0xf6c3e1B489c1e634a3c66876d5A8E19B1A65B252"; -const lps = [ - "0x264f27bf0ec4fe383cfda50f1bb11588735bbe6d", - "0x18cD20C6CA9Ccfe1C8b48516e6d5e0055a0271D2", - "0x40d85d01f8b8E4A8cEa6F552e47Cf8F88A42db54" -]; - -async function tvl() { - return {} -} -module.exports = { - cronos: { - tvl: tvl, - pool2: pool2(rewardPool, lps), - staking: staking(boardroom, XDSHARE) - } -}; // node test.js projects/toxicdeer.js diff --git a/projects/tracerdao/abi.json b/projects/tracerdao/abi.json deleted file mode 100644 index ff69e43d67b..00000000000 --- a/projects/tracerdao/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "numPools": "uint256:numPools", - "pools": "function pools(uint256) view returns (address)" -} \ No newline at end of file diff --git a/projects/tracerdao/index.js b/projects/tracerdao/index.js deleted file mode 100644 index 31bc3327161..00000000000 --- a/projects/tracerdao/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); - -const USDC = ADDRESSES.arbitrum.USDC; - -// Both v1 and v2 factories -const factoryPoolContractsConfig = [ - { - fromBlock: 1009749, - contract: '0x98C58c1cEb01E198F8356763d5CbA8EB7b11e4E2', - }, - { - fromBlock: 13387522, - contract: '0x3Feafee6b12C8d2E58c5B118e54C09F9273c6124', - }, -] - -async function tvl(api) { - const owners = [] - for (const { contract } of factoryPoolContractsConfig) { - const pools = await api.fetchList({ lengthAbi: abi.numPools, itemAbi: abi.pools, target: contract}) - owners.push(...pools) - } - return api.sumTokens({ owners, tokens: [USDC] }) -} - -module.exports = { - arbitrum: { - tvl, - }, - methodology: - "We count liquidity on the Leveraged Pools through PoolFactory contract", -}; diff --git a/projects/traddify/index.js b/projects/traddify/index.js deleted file mode 100644 index 3979591dbc3..00000000000 --- a/projects/traddify/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0xA7f3d2dEa7a53E7A9FEbBdE5Cf7C69d39D065030" - -module.exports = { - methodology: `We count the WKAVA on ${contract}`, - kava: { - tvl: sumTokensExport({ tokens: [nullAddress, ADDRESSES.kava.WKAVA, ], owner: contract}) - } -} diff --git a/projects/trader-joe-stek/index.js b/projects/trader-joe-stek/index.js deleted file mode 100644 index cc1b7f66cf0..00000000000 --- a/projects/trader-joe-stek/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const stakingContract = "0xb22c6d1c2897b950fc1040913c0d84d788f24df2"; - - -module.exports = treasuryExports({ - - avax: { - tokens: [ - nullAddress, - "0xEbB5d4959B2FbA6318FbDa7d03cd44aE771fc999", // kong - "0x5ac04b69bde6f67c0bd5d6ba6fd5d816548b066a", // tech - "0x8ad25b0083c9879942a64f00f20a70d3278f6187", // meow - ], - owners: [stakingContract], - ownTokens: [], - } -}) \ No newline at end of file diff --git a/projects/traderjoe-lb-v2-1/index.js b/projects/traderjoe-lb-v2-1/index.js deleted file mode 100644 index 19b6c0bd10f..00000000000 --- a/projects/traderjoe-lb-v2-1/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking.js") -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - avax: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', - arbitrum: { - factory: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', - blacklistedTokens: ['0xef261714f7e5ba6b86f4780eb6e3bf26b10729cf'], - }, - bsc: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', - ethereum: '0xDC8d77b69155c7E68A95a4fb0f06a71FF90B943a', -}) - -module.exports.arbitrum.staking = staking("0x43646A8e839B2f2766392C1BF8f60F6e587B6960", "0x371c7ec6D8039ff7933a2AA28EB827Ffe1F52f07") \ No newline at end of file diff --git a/projects/traderjoe-lb-v2-2/index.js b/projects/traderjoe-lb-v2-2/index.js deleted file mode 100644 index e2028cfd494..00000000000 --- a/projects/traderjoe-lb-v2-2/index.js +++ /dev/null @@ -1,7 +0,0 @@ -//const { staking } = require("../helper/staking.js") -const { joeV2Export } = require('../helper/traderJoeV2') - -module.exports = joeV2Export({ - avax: '0xb43120c4745967fa9b93E79C149E66B0f2D6Fe0c', - arbitrum: '0xb43120c4745967fa9b93E79C149E66B0f2D6Fe0c', -}) \ No newline at end of file diff --git a/projects/traderjoe-lb/index.js b/projects/traderjoe-lb/index.js deleted file mode 100644 index 410a82527f5..00000000000 --- a/projects/traderjoe-lb/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const factories = { - avax: '0x6e77932a92582f504ff6c4bdbcef7da6c198aeef', - arbitrum: '0x1886d09c9ade0c5db822d85d21678db67b6c2982', - bsc: '0x43646a8e839b2f2766392c1bf8f60f6e587b6960', -} -async function tvl(api) { - const pools = await api.fetchList({ - target: factories[api.chain], - itemAbi: 'function allLBPairs(uint256) view returns (address)', - lengthAbi: 'uint256:getNumberOfLBPairs', - }) - const tokenA = await api.multiCall({ - abi: 'address:tokenX', - calls: pools, - }) - const tokenB = await api.multiCall({ - abi: 'address:tokenY', - calls: pools, - }) - const toa = [] - tokenA.map((_, i) => { - toa.push([tokenA[i], pools[i]]) - toa.push([tokenB[i], pools[i]]) - }) - return sumTokens2({ api, tokensAndOwners: toa, }) -} - -module.exports = { - methodology: 'We count the token balances in in different liquidity book contracts', -} - -Object.keys(factories).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/traderjoe-lend/index.js b/projects/traderjoe-lend/index.js deleted file mode 100644 index e72efed541a..00000000000 --- a/projects/traderjoe-lend/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - 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: compoundExports2({ comptroller: '0xdc13687554205E5b89Ac783db14bb5bba4A1eDaC', cether: '0xC22F01ddc8010Ee05574028528614634684EC29e' }), -}; diff --git a/projects/traderjoe/index.js b/projects/traderjoe/index.js deleted file mode 100644 index 842da6bcc0b..00000000000 --- a/projects/traderjoe/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking'); -const joeBar = ADDRESSES.avax.xJOE; -const joeToken = ADDRESSES.avax.JOE; -const { getUniTVL } = require('../helper/unknownTokens'); - -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: getUniTVL({ factory: '0x9ad6c38be94206ca50bb0d90783181662f0cfa10', useDefaultCoreAssets: true, }), - staking: staking(joeBar, joeToken), - }, - bsc: { - tvl: getUniTVL({ factory: '0x4f8bdc85e3eec5b9de67097c3f59b6db025d9986', useDefaultCoreAssets: true, }) - } -}; \ No newline at end of file diff --git a/projects/trading-strategy/index.js b/projects/trading-strategy/index.js deleted file mode 100644 index cd95ea75e4d..00000000000 --- a/projects/trading-strategy/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const chains = ["ethereum", "polygon", "base", "bsc", "arbitrum"] - -// Calculate vault balances for all vaults on a specific chain holding any token -async function tvl(api) { - - // Get all indexed server-side data - const protocolTVLReply = await getConfig('tradingstrategy-ai', 'https://tradingstrategy.ai/strategies/tvl') - const enzymeVaults = Object.values(protocolTVLReply.strategies).filter((strat) => strat.asset_management_mode === 'enzyme' && strat.chain_id == api.chainId).map(i => i.address) - const otherVaults = Object.values(protocolTVLReply.strategies).filter((strat) => strat.asset_management_mode !== 'enzyme' && strat.chain_id == api.chainId).map(i => i.address) - await sumTokens2({ api, owners: otherVaults, fetchCoValentTokens: true, }) - const tokens = await api.multiCall({ abi: 'address[]:getTrackedAssets', calls: enzymeVaults }) - return sumTokens2({ ownerTokens: tokens.map((t, i) => [t, enzymeVaults[i]]), api }) -} - - -chains.forEach(chain => module.exports[chain] = { tvl }) \ No newline at end of file diff --git a/projects/trado-spot/index.js b/projects/trado-spot/index.js deleted file mode 100644 index 31d1fe98520..00000000000 --- a/projects/trado-spot/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'flow': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], -} // liquidityManager contracts - - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], }), } -}) \ No newline at end of file diff --git a/projects/trado/index.js b/projects/trado/index.js deleted file mode 100644 index ddc132d3f80..00000000000 --- a/projects/trado/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -// perp -const USDCe = ADDRESSES.milkomeda.BNB -const USDX = '0xAeBE92ebc1a67F810Cb35fdcdA6398f6136DCD50' - -module.exports = { - flow: { tvl: sumTokensExport({ owner: USDX, tokens: [USDCe], })}, - methodology: `The TVL for Trado Perpetual is calculated based on the value of all stablecoins locked in the USDX contract.`, -}; diff --git a/projects/tradoor/index.js b/projects/tradoor/index.js deleted file mode 100644 index 61e4de13a6f..00000000000 --- a/projects/tradoor/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/ton"); -const ADDRESSES = require("../helper/coreAssets.json"); - -module.exports = { - methodology: 'Counts Tradoor smartcontract balance as TVL.', - ton: { - tvl: sumTokensExport({ - owners: [ - "EQBPAMNu5Eud9AEvplOjNlRhxI4EkuJEhEMAmxh9erxmImKs", // v1 - "EQD_EzjJ9u0fpMJkoZBSv_ZNEMitAoYo9SsuD0s1ehIifnnn", // v2 - "EQANNroxzBXXdt1Sm5kIcnNZcrDEzux3dB-e0zROSOGQhPdm", // v2-ton - "EQAbMd53-_OCsQI60RTTg-GRUGNm1uFK-MYmRpkIHTojCWft", // v3-usd - ], - tokens: [ADDRESSES.null] - }), - } -} diff --git a/projects/trainswap/index.js b/projects/trainswap/index.js deleted file mode 100644 index 3fb73cbfa5c..00000000000 --- a/projects/trainswap/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, staking } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') -const uniTvl = getUniTVL({ factory: '0x15fA42586c30E87CA49f0Fe262bbb73E89da1cad', useDefaultCoreAssets: true, }) -const masterchef = '0x8b804321b8D094D8C9bB3bFF8CC580087E8d13E0' -const train = '0x52DA160e9a8CeF972FF0A797D4902eD67589f64C' -const weth = ADDRESSES.arbitrum.WETH - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: sdk.util.sumChainTvls([uniTvl, staking({ - owners: [masterchef], - tokens: [weth], - })]), - staking: staking({ - owners: [masterchef], - tokens: [train], - lps: ['0xB4Fdb64D4C54eda23f2f6f8E3d5bbAd172Fd9f86'], - useDefaultCoreAssets: true, - }) - } -}; \ No newline at end of file diff --git a/projects/tranche/index.js b/projects/tranche/index.js deleted file mode 100644 index 023ac3edf53..00000000000 --- a/projects/tranche/index.js +++ /dev/null @@ -1,69 +0,0 @@ -function getTokenHolderList(chain) { - if (chain === 'ethereum') { - return { - tokenList: [ - '0x39aa39c021dfbae8fac545936693ac917d5e7563', - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643', - '0x0AeE8703D34DD9aE107386d3eFF22AE75Dd616D1', - '0xccf4429db6322d5c611ee964527d42e5d685dd6a', - '0xface851a4921ce59e912d19329929ce6da6eb0c7' - ], - holderList: [ - '0x05060F5ab3e7A98E180B418A96fFc82A85b115e7', - '0xAB4235a9ACf00A45557E90F7dB127f3b293cA45A' - ] - } - } else if (chain === 'fantom') { - return { - tokenList: [ - "0x637ec617c86d24e421328e6caea1d92114892439", - "0x0a0b23d9786963de69cb2447dc125c49929419d8", - "0xef0210eb96c7eb36af8ed1c20306462764935607", - "0x0dec85e74a92c52b7f708c4b10207d9560cefaf0", - "0x2c850cced00ce2b14aa9d658b7cad5df659493db" - ], - holderList: [ - "0xe572401aFa7405Ea8EBf657D2b2Ed0Bce0bCf288" - ] - } - } else if (chain === 'avax') { - return { - holderList: [ - "0x50F0C239f51d470BFDEb2E76E0E76D4344D89D6B" - ], - tokenList: [ - "0xd45b7c061016102f9fa220502908f2c0f1add1d7", - "0x47afa96cdc9fab46904a55a6ad4bf6660b53c38a", - "0x46a51127c3ce23fb7ab1de06226147f446e4a857", - "0x532e6537fea298397212f09a61e03311686f548e", - "0xdfe521292ece2a4f44242efbcd66bc594ca9714b", - "0x686bef2417b6dc32c50a3cbfbcc3bb60e1e9a15d", - "0x53f7c5869a859f0aec3d334ee8b4cf01e3492f21" - ] - } - } else if (chain === 'polygon') { - return { - holderList: [ - "0x03f44E563dD447449F48f8103b5dF70aFf7CF577" - ], - tokenList: [ - "0x1a13f4ca1d028320a707d99520abfefca3998b7f", - "0x8df3aad3a84da6b69a4da8aec3ea40d9091b2ac4", - "0x27f8d03b3a2196956ed754badc28d73be8830a6e" - ] - } - } -} - -async function tvl(api) { - const { tokenList, holderList } = getTokenHolderList(api.chain) - return api.sumTokens({ owners: holderList, tokens: tokenList, }) -} - -module.exports = { - start: '2021-05-18', - ethereum: { tvl, }, - fantom: { tvl, }, - avax: { tvl, }, - polygon: { tvl, }, -}; \ No newline at end of file diff --git a/projects/tranchess-ETH/abi.json b/projects/tranchess-ETH/abi.json deleted file mode 100644 index 84274656325..00000000000 --- a/projects/tranchess-ETH/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "tokenUnderlying": "address:tokenUnderlying", - "getTotalUnderlying": "uint256:getTotalUnderlying" -} \ No newline at end of file diff --git a/projects/tranchess-ETH/index.js b/projects/tranchess-ETH/index.js deleted file mode 100644 index 5b4a0ccbb2a..00000000000 --- a/projects/tranchess-ETH/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sdk = require('@defillama/sdk') -const abi = require('./abi.json') - -const ETHV2Funds = [ - '0x69c53679EC1C06f3275b64C428e8Cd069a2d3966', // ETH V2 Fund (ETH mainnet) -] - -async function ethereum(api){ - const tokens = await api.multiCall({ abi: abi.tokenUnderlying, calls: ETHV2Funds}) - const bals = await api.multiCall({ abi: abi.getTotalUnderlying, calls: ETHV2Funds}) - api.addTokens(tokens, bals) -} - -module.exports = { - methodology: `Only counts the staked ETH in ETH fund deployed on Ethereum mainnet.`, - ethereum:{ - tvl: ethereum - } -} \ No newline at end of file diff --git a/projects/tranchess/index.js b/projects/tranchess/index.js deleted file mode 100644 index 5539423911d..00000000000 --- a/projects/tranchess/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const { staking } = require('../helper/staking') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - scroll: { - funds: [ - '0x289E69E5B611F6193694F6Cfa2F93B7cF161253f', // Stone Fund (Scroll mainnet) - '0xfbee64fa1a89b76976750d62c8f3298952C5a518', // weETH Fund (Scroll mainnet) - '0x4B0D5Fe3C1F58FD68D20651A5bC761553C10D955', // Stone 2 Fund (Scroll mainnet) - ], - swaps:[ - '0xD151ce31322aEa25E4779678dF0A3f376f9FFc6f', // Stone SWAP (Scroll mainnet) - '0x3d9f20E4F1F5aC1d5F24E271CE6364B2eEd71cA6', // weETH SWAP (Scroll mainnet) - '0xEC8bFa1D15842D6B670d11777A08c39B09A5FF00', // Stone 2 SWAP (Scroll mainnet) - ], - token: '0x9735fb1126B521A913697A541f768376011bCcF9', - escrow: '0xffD17794bF2e3BA798170f358225763F1aF8f5ba', - }, - bsc: { - funds: [ - '0x2f40c245c66C5219e0615571a526C93883B456BB', // BTC V2 Fund - '0x1F18cC2b50575A71dD2EbF58793d4e661a7Ba0e0', // ETH V2 Fund - '0x7618f37EfE8930d5EE6da34185b3AbB750BD2a34', // BNB V2 Fund - '0x78006B8B80677aeD97ae4f55782E75CE956F54D6', // SolvBTC V3 Fund - '0xfD53F8dAaE81F8eb7f5d434E1922949cE6D24f67', // SlisBNB V3 Fund - '0x50635585A2bd884D87Fcc83c5Fc5AaD91495EC6a', // SlisBNB 2 V3 Fund - '0xb6730D3C7E43ab99a0558c6cAa5Ce59Fc393CEa1', // SolvBTC.BBN V3 Fund - '0x01907f044BCAe357f973d051B0f3B09093dc2763', // SolvBTC.BBN 2 V3 Fund - '0x04Eb0D1dCB55B5c3Fd08baaa286ac84c6E4F7BDd', // brBTC V3 Fund - '0x6DCD6942C740D3749792149A21eedF3d82CcE21E', // uniBTC V3 Fund - '0x97c8D5A7d9c9BE17a5B3fc83e14FBE2A878807A9', // asBNB V3 Fund - '0x29a90F69aF6ae84C745a3A83CdAc153987Be387E', // asBNB 2 V3 Fund - '0x91B07B0fB40874A61C2eD26Dd63869F579BefD34', // uniBTC 2 V3 Fund - '0xCb00aA9D486c1EF51D38A85C2d16cB849afFE6b6', // brBTC 2 V3 Fund - '0xaC05FF30f79D0D697b5156F85839127101a51FE6', // uniBTC 3 V3 Fund - '0x155ded598a186148b8a2F1C7B442f9CeaaB0ec37', // brBTC 3 V3 Fund - '0x9C7F6dC15399b353165eC7f86C1e2cf1FEb7be4A', // sUSDX V3 Fund - ], - swaps: [ - '0x999DB223F0807B164b783eE33d48782cc6E06742', // BTC V2 BISHOP Swap - '0x87585A84E0A04b96e653de3DDA77a3Cb1fdf5B6a', // ETH V2 BISHOP Swap - '0x56118E49582A8FfA8e7309c58E9Cd8A7e2dDAa37', // BNB V2 BISHOP Swap - '0xfcF44D5EB5C4A03D03CF5B567C7CDe9B66Ba5773', // BNB V2 QUEEN Swap - '0x6Da3A029d0F0911C7ee36c1cEa2Ea69Fc31dd970', // BTC USDC BISHOP Swap - '0x09427783666Ec4173e951222ab9B3C12871400AA', // ETH USDC BISHOP Swap - '0xD3392699d679DFa57bC8ee71a0Ad44902C1Ab9f7', // BNB USDC BISHOP Swap - '0xf4302b631516E1BDa4f46730856DcaA588Ed2BBb', // SolvBTC BISHOP Swap - '0xD3d47598B56e15D5A3f466fC93517d97f7b6256E', // SlisBNB BISHOP Swap - '0x01209A232daf2068136d15E76c867c7f7fc21F4E', // SlisBNB 2 BISHOP Swap - '0xbbb1aa81E95298D64B7f710B936D89394DBdd28f', // SolvBTC.BNB BISHOP Swap - '0x2Fa534B3C9cd003e58dc1E8F44969846AF311698', // SolvBTC.BNB 2 BISHOP Swap - '0x8aeA25b112A8A614a417E3Be36ddF8d9bbc46d4B', // brBTC Swap - '0x0747277AC186a83F828C7Ac3Ba688f499D2a3F33', // uniBTC Swap - '0xD44783cD7869c4B0C5eAEDf8B08Ab6Dd14E7cAC1', // sUSDX Swap - '0xB4C672600497EFd6ee1a74A50788a5cd1A0893E6', // staYuniBTC2-uniBTC Swap - '0xf443F22bdf347c2898429031512036191C5651Bc', // staYbrBTC2-brBTC Swap - '0xD0cC89cCf8c7500a3437952A61Df5E5d976e735C', // staYuniBTC3-uniBTC Swap - '0xC3655312b88B18C5Ab089192c46bDf9F73e75DbE', // staYbrBTC3-brBTC Swap - '0xBA5A53180504caE2f038685914084ed85d336C2b', // staYasBNB-asBNB Swap - '0x399bBBf150af24851b60a55d8de3397195D62B07', // staYasBNB2-asBNB Swap - ], - token: '0x20de22029ab63cf9A7Cf5fEB2b737Ca1eE4c82A6', - escrow: '0x95A2bBCD64E2859d40E2Ad1B5ba49Dc0e1Abc6C2', - }, - ethereum: { - funds: [ - '0x811c9dD8B7B670A78d02fac592EbbE465e5dD0FA', // wstETH Fund (ETH mainnet) - ], - swaps: [ - '0xBA919470C7a2983fbcdA6ADC89Be9C43b8298079', // ETH V2 BISHOP Swap (ETH mainnet) - '0xAD06a2DBd34Da8f8Cf5f85d284A5B93A2057bDb5', // wstETH SWAP (ETH mainnet) - ], - token: '0xD6123271F980D966B00cA4FCa6C2c021f05e2E73', - escrow: '0x3FadADF8f443A6DC1E091f14Ddf8d5046b6CF95E', - }, -} - -module.exports = { - methodology: `Counts the underlying assets in each fund.`, -} - -Object.keys(config).forEach(chain => { - const { funds, swaps, token, escrow } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - await api.erc4626Sum({ calls: funds, tokenAbi: 'tokenUnderlying', balanceAbi: 'getTotalUnderlying' }) - const quoteAddresses = await api.multiCall({ abi: 'address:quoteAddress', calls: swaps }) - return sumTokens2({ api, tokensAndOwners2: [quoteAddresses, swaps] }) - }, - staking: staking(escrow, token, undefined, 'tranchess', 18), - } -}) \ No newline at end of file diff --git a/projects/tranquil/index.js b/projects/tranquil/index.js deleted file mode 100644 index 25e3435a93b..00000000000 --- a/projects/tranquil/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { compoundExports2 } = require('../helper/compound') -const { uniTvlExport } = require('../helper/unknownTokens.js'); -const { staking } = require('../helper/staking') - -const stONEAddr = "0x22D62b19b7039333ad773b7185BB61294F3AdC19"; // stONE ERC20 contract - -const { tvl: _tvl, borrowed } = compoundExports2({ comptroller: '0x6a82A17B48EF6be278BBC56138F35d04594587E3', cether: '0x34b9aa82d89ae04f0f546ca5ec9c93efe1288940' }) - -async function tvl(api) { - // Add ONE amount locked in Liquid Staking - // https://docs.tranquil.finance/liquid-staking-stone/tranquil-stone - const stoneBalance = await api.call({ target: stONEAddr, abi: 'erc20:totalSupply', }) - api.add(stONEAddr, stoneBalance) - return api.getBalances() -} - -const xtranqToken = "0xb4aa8c8e555b3a2f1bfd04234ff803c011760e59"; -const stakingContract = "0x59a4d6b2a944e8acabbd5d2571e731388918669f"; - -module.exports = { - misrepresentedTokens: true, - methodology: "TVL includes values locked into TqTokens. Pool2 are the liquidity in the TRANQ-WONE SUSHI LPs. Staking TVL are the xTRANQ tokens locked into the staking contract.", - harmony: { - tvl: sdk.util.sumChainTvls([ - _tvl, - tvl, - uniTvlExport('chain', '0xF166939E9130b03f721B0aE5352CCCa690a7726a').chain.tvl - ]), - borrowed: borrowed, - pool2: () => ({}), - staking: staking(stakingContract, xtranqToken), - }, - hallmarks: [ - [1655991120, "Horizon bridge Hack $100m"], - ], -}; diff --git a/projects/trapeza-protocol/index.js b/projects/trapeza-protocol/index.js deleted file mode 100644 index 5bea20a417d..00000000000 --- a/projects/trapeza-protocol/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const fidl = "0x414a36a4b79Ee1D4b454AB798E4179ffC00b1641"; -const fidlStaking = "0x2D1E126b0700D419f8B742118Fb4fa1dEc8c4a62"; -const treasury = "0x282cBA0034b8Ce7394c0737F0571945e15Ed242E"; -const treasuryTokens = [ - [ADDRESSES.bsc.BUSD, false], // BUSD - ["0x08DBeFd8f7ACa80729267a84df012eA0f203cFa8", true] // FIDL-BUSD CAKE LP -]; - -module.exports = { - hallmarks: [ - [1648684800, "Rug Pull"] - ], - deadFrom: 1648684800, - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "bsc", fidlStaking, fidl, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/trava/abi.json b/projects/trava/abi.json deleted file mode 100644 index 74d8b62a913..00000000000 --- a/projects/trava/abi.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "getLendingPool": "function getLendingPool(uint256 providerId) view returns (address)", - "getAddressesProviderFactory": "address:getAddressesProviderFactory", - "getAllPools": "uint256[]:getAllPools", - "getReservesList": "address[]:getReservesList", - "getReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint40 lastUpdateTimestamp, address tTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))", - "totalSupply": "uint256:totalSupply", - "getAssetPrice": "function getAssetPrice(address asset) view returns (uint256)", - "decimals": "uint8:decimals" -} \ No newline at end of file diff --git a/projects/trava/index.js b/projects/trava/index.js deleted file mode 100644 index 07baddb31d8..00000000000 --- a/projects/trava/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const abi = { - "getLendingPool": "function getLendingPool(uint256 providerId) view returns (address)", - "getAddressesProviderFactory": "address:getAddressesProviderFactory", - "getAllPools": "uint256[]:getAllPools", - "getReservesList": "address[]:getReservesList", - "getReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))", -} - -const registry = { - bsc: '0xD11fba861283174CBCb1FD0a475e420aa955bE61', - fantom: '0xbb6d1ba6089309b09fb5e81ff37309c1a086b74a', -} - -async function borrowed(api) { - const factory = await api.call({ abi: abi.getAddressesProviderFactory, target: registry[api.chain] }) - const poolIds = await api.call({ abi: abi.getAllPools, target: factory}) - const pool = await api.call({ params: poolIds[0], abi: abi.getLendingPool, target: factory }) - const tTokens = (await api.call({ abi: abi.getReservesList, target: pool })) - const reserveData = await api.multiCall({ abi: abi.getReserveData, calls: tTokens, target: pool }) - const vTokens = reserveData.map(i => i.variableDebtTokenAddress) - const bals = await api.multiCall({ abi: 'uint256:totalSupply', calls: vTokens}) - api.add(tTokens, bals) -} - -async function tvl(api) { - const factory = await api.call({ abi: abi.getAddressesProviderFactory, target: registry[api.chain] }) - const poolIds = await api.call({ abi: abi.getAllPools, target: factory}) - const pool = await api.call({ params: poolIds[0], abi: abi.getLendingPool, target: factory }) - const tTokens = (await api.call({ abi: abi.getReservesList, target: pool })) - const reserveData = await api.multiCall({ abi: abi.getReserveData, calls: tTokens, target: pool }) - return api.sumTokens({ - tokensAndOwners2: [tTokens, reserveData.map(i => i.aTokenAddress)], - }) -} - -module.exports = { - methodology: 'Total supply in lending pools, not couting borrowed amount.', - fantom: { tvl, borrowed }, - bsc: { tvl, borrowed }, -} - -module.exports.fantom.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/traverse/index.js b/projects/traverse/index.js deleted file mode 100644 index 443f843bc29..00000000000 --- a/projects/traverse/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm'); - -const verse = "0xB72ab6f7177bBb41eFcC17D817778d77460259F1"; -const staking = "0x3fb7931f7BFA9f318Fbf2346f568802a76531774"; - -const treasury = "0x623845e7961F7A2E535885F983a804608b69D026" -const treasuryTokens = [ - [ADDRESSES.avax.DAI, false], // DAI - ["0xbf56ea8a64faf58889584930716e655317d22ea6", true] // VERSE-DAI -]; - -module.exports = { - deadFrom: 1648765747, - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "avax", staking, verse, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/treasure/index.js b/projects/treasure/index.js deleted file mode 100644 index 2061ed0fc88..00000000000 --- a/projects/treasure/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 61166, }), - }, -} diff --git a/projects/treasuredao/index.js b/projects/treasuredao/index.js deleted file mode 100644 index bdbc6a5e9c4..00000000000 --- a/projects/treasuredao/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const stakingContract = "0xA0A89db1C899c49F98E6326b764BAFcf167fC2CE"; -const MAGIC = "0x539bdE0d7Dbd336b79148AA742883198BBF60342"; - -const stakingPool2Contract = "0x73EB8b2b235F7957f830ea66ABE433D9EED9f0E3"; -const MAGIC_WETH_SLP = "0xB7E50106A5bd3Cf21AF210A755F9C8740890A8c9"; - -module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: (async) => ({}), - staking: staking(stakingContract, MAGIC), - pool2: pool2(stakingPool2Contract, MAGIC_WETH_SLP), - }, - methodology: "Counts liquidty on the staking and pool2 only", -}; diff --git a/projects/treasury/1inch.js b/projects/treasury/1inch.js deleted file mode 100644 index 64f8ca4cd5d..00000000000 --- a/projects/treasury/1inch.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const oneInchTreasury = "0x7951c7ef839e26F63DA87a42C9a87986507f1c07"; -const ONE_INCH = "0x111111111117dC0aa78b770fA6A738034120C302"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.WBTC,//WBTC - ], - owners: [oneInchTreasury], - ownTokens: [ONE_INCH] - }, - arbitrum: { - owners: ['0x71890ac6209fae61e9d66691c47b168b8300a7c5'] - } -}) \ No newline at end of file diff --git a/projects/treasury/3xcalibur.js b/projects/treasury/3xcalibur.js deleted file mode 100644 index 89d7333282e..00000000000 --- a/projects/treasury/3xcalibur.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x5f49174fdeb42959f3234053b18f5c4ad497cc55"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/40acres.js b/projects/treasury/40acres.js deleted file mode 100644 index 79cdfac359c..00000000000 --- a/projects/treasury/40acres.js +++ /dev/null @@ -1,9 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const treasuryAddress = "0xfF16fd3D147220E6CC002a8e4a1f942ac41DBD23"; - -module.exports = treasuryExports({ - base: { owners: [treasuryAddress], }, - optimism: { owners: [treasuryAddress], }, - avax: { owners: [treasuryAddress] } -}) \ No newline at end of file diff --git a/projects/treasury/EthStrategy.js b/projects/treasury/EthStrategy.js deleted file mode 100644 index 4f1ef973965..00000000000 --- a/projects/treasury/EthStrategy.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// projects/treasury/your-protocol.js -const { nullAddress, treasuryExports } = require("../helper/treasury") - -const OWNERS = [ - "0xC53CCed6332D06972A7eaEDc64FDF6d4aF5220b8", // ETH Strategy Main - "0x75eFa088E34DA03966a5D2b84fA16C77fF25Adfa", // Puttable Warrant (4200 ETH) - "0xF89f49e21A2Bd1fb24332462cB21dc1378aA25e1", // Staking Multisig -] - -module.exports = { - ethereum: { - tvl: async (api) => { - const treasuryModule = treasuryExports({ - ethereum: { - owners: OWNERS, - tokens: [nullAddress, ADDRESSES.linea.rzETH, "0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8", ADDRESSES.ethereum.STETH, "0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549",ADDRESSES.ethereum.WETH,"0x856c4efb76c1d1ae02e20ceb03a2a6a08b0b8dc3","0x04c154b66cb340f3ae24111cc767e0184ed00cc6"], // native ETH only - ownTokens: ["0x14cF922aa1512Adfc34409b63e18D391e4a86A2f"], // no protocol token to separate - }, - }); - return treasuryModule.ethereum.tvl(api); - } - } -}; diff --git a/projects/treasury/aave.js b/projects/treasury/aave.js deleted file mode 100644 index e5bb1e371bc..00000000000 --- a/projects/treasury/aave.js +++ /dev/null @@ -1,284 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryContractsETH = [ - "0x89c51828427f70d77875c6747759fb17ba10ceb0", //Aave Grants DAO - "0xe3d9988f676457123c5fd01297605efdd0cba1ae", //Aave V1 Treasury - "0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c", //Aave V2 Collector - "0x25f2226b597e8f9514b3f68f00f494cf4f286491", //Aave Ecosystem Reserve - "0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5", //V2 Incentives Controller -]; - -const treasuryContractsMATIC = [ - "0x7734280A4337F37Fbf4651073Db7c28C80B339e9", //Aave V2 Collector - "0xe8599F3cc5D38a9aD6F3684cd5CEa72f10Dbc383" //Aave V3 Treasury -]; - -const treasuryContractsAvax = [ - "0x467b92aF281d14cB6809913AD016a607b5ba8A36", //Aave V2 Collector - "0x5ba7fd868c40c16f7aDfAe6CF87121E13FC2F7a0" //Aave V3 Treasury -]; - -const treasuryContractsFantom = [ - "0xBe85413851D195fC6341619cD68BfDc26a25b928", //Treasury V3 -]; - -const aaveTreasuryOptimism = ["0xB2289E329D2F85F1eD31Adbb30eA345278F21bcf"] -const aaveTreasuryArbitrum = ["0x053D55f9B5AF8694c503EB288a1B7E552f590710"] - -const AAVE = ADDRESSES.ethereum.AAVE; -const AAVEPOLYGON = '0xD6DF932A45C0f255f85145f286eA0b292B21C90B'; -const AAVEAVAX = '0x63a72806098bd3d9520cc43356dd78afe5d386d9'; -const AAVEARBITRUM = '0xba5ddd1f9d7f570dc94a51479a000e3bce967196'; -const AAVEOPTIMISM = '0x76fb31fb4af56892a25e32cfc43de717950c9278'; -const AAVEFANTOM = "0xf329e36C7bF6E5E86ce2150875a84Ce77f477375"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - '0xBcca60bB61934080951369a648Fb03DF4F96263C', // aUSDC - '0xd24946147829DEaA935bE2aD85A3291dbf109c80', // ammUSDC - '0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', // aEthUSDC - ADDRESSES.ethereum.DAI, - '0x028171bca77440897b824ca71d1c56cac55b68a3', // aDAI - '0x79bE75FFC64DD58e66787E4Eae470c8a1FD08ba4', // ammDAI - '0x018008bfb33d285247A21d44E50697654f754e63', // aEthDAI - ADDRESSES.ethereum.USDT, - '0x3ed3b47dd13ec9a98b44e6204a523e766b225811', // aUSDT - '0x17a79792Fe6fE5C95dFE95Fe3fCEE3CAf4fE4Cb7', // ammUSDT - '0xFFC97d72E13E01096502Cb8Eb52dEe56f74DAD7B', // aAAVE - '0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9', // aEthAAVE - ADDRESSES.ethereum.WBTC, - '0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656', // aWBTC - '0x13B2f6928D7204328b0E8E4BCd0379aA06EA21FA', // ammWBTC - '0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8', // aEthWBTC - ADDRESSES.ethereum.WSTETH, - '0x0B925eD163218f6662a35e0f0371Ac234f9E9371', // aEthwstETH - '0xba100000625a3754423978a60c9317c58a424e3D', // BAL - ADDRESSES.ethereum.WETH, - '0x030bA81f1c18d280636F32af80b9AAd02Cf0854e', // aWETH - '0xf9Fb4AD91812b704Ba883B11d2B576E890a6730A', // ammWETH - '0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', // aEthWETH - ADDRESSES.ethereum.CRV, - '0x8dAE6Cb04688C62d939ed9B68d32Bc62e49970b1', // aCRV - ADDRESSES.ethereum.SNX, - '0x35f6B052C598d933D69A4EEC4D04c73A191fE6c2', // aSNX - ADDRESSES.ethereum.LINK, - '0xa06bC25B5805d5F8d82847D191Cb4Af5A3e873E0', // aLINK - '0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a', // aEthLINK - '0xba100000625a3754423978a60c9317c58a424e3d', // BAL - '0x272F97b7a56a387aE942350bBC7Df5700f8a4576', // aBAL - ADDRESSES.ethereum.UNI, - '0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1', // aUNI - ADDRESSES.ethereum.MKR, - '0xc713e5E149D5D0715DcD1c156a020976e7E56B88', // aMKR - ADDRESSES.ethereum.BUSD, - '0xA361718326c15715591c299427c62086F69923D9', // aBUSD - ADDRESSES.ethereum.FRAX, - '0xd4937682df3C8aEF4FE912A96A74121C0829E664', // aFRAX - ADDRESSES.ethereum.sUSD, - '0x6C5024Cd4F8A59110119C56f8933403A539555EB', // aSUSD - ADDRESSES.ethereum.LUSD, // LUSD - '0xce1871f791548600cb59efbefFC9c38719142079', // aLUSD - '0x056fd409e1d7a124bd7017459dfea2f387b6d5cd', // GUSD - '0xD37EE7e4f452C6638c96536e68090De8cBcdb583', // aGUSD - ADDRESSES.ethereum.TUSD, - '0x101cc05f4A51C0319f570d5E146a8C625198e636', // aTUSD - '0x8e870d67f660d95d5be530380d0ec0bd388289e1', // USDP - '0x2e8F4bdbE3d47d7d7DE490437AeA9915D930F1A3', // aUSDP - '0x111111111117dc0aa78b770fa6a738034120c302', // 1INCH - '0xB29130CBcC3F791f077eAdE0266168E808E5151e', // a1INCH - '0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b', // DPI - '0x6F634c6135D2EBD550000ac92F494F9CB8183dAe', // aDPI - '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', // ENS - '0x9a14e23A58edf4EFDcB360f68cd1b95ce2081a2F', // aENS - ADDRESSES.ethereum.STETH, - '0x1982b2F5814301d4e9a8b0201555376e62F82428', // aSTETH - '0xd46ba6d942050d489dbd938a2c909a5d5039a161', // AMPL - '0x1E6bb68Acec8fefBD87D192bE09bb274170a0548', // aAMPL - '0x956f47f50a910163d8bf957cf5846d573e7f87ca', // FEI - '0x683923dB55Fead99A79Fa01A27EeC3cB19679cC3', // aFEI - '0xa693b19d2931d498c5b318df961919bb4aee87a5', // UST - '0xc2e2152647F4C26028482Efaf64b2Aa28779EFC4', // aUST - ADDRESSES.ethereum.BAT, - '0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1', // aBAT - ADDRESSES.ethereum.CVX, - '0x952749E07d7157bb9644A894dFAF3Bad5eF6D918', // aCVX - '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c', // ENJ - '0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef', // aENJ - '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', // MANA - '0xa685a61171bb30d4072B338c80Cb7b2c865c873E', // aMANA - '0xdd974d5c2e2928dea5f71b9825b8b646686bd200', // KNC - '0x39C6b3e42d6A679d7D776778Fe880BC9487C2EDA', // aKNC - '0x03ab458634910aad20ef5f1c8ee96f1d6ac54919', // RAI - '0xc9BC48c72154ef3e5425641a3c747242112a46AF', // aRAI - '0x408e41876cccdc0f92210600ef50372656052a38', // REN - '0xCC12AbE4ff81c9378D670De1b57F8e0Dd228D77a', // aREN - '0xd5147bc8e386d91cc5dbe72099dac6c9b99276f5', // RENFIL - '0x514cd6756CCBe28772d4Cb81bC3156BA9d1744aa', // aRENFIL - '0xe41d2489571d322189246dafa5ebde1f4699f498', // ZRX - '0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e', // aZRX - ADDRESSES.ethereum.YFI, - '0x5165d24277cD063F5ac44Efd447B27025e888f37', // aYFI - '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272', // xSUSHI - '0xF256CC7847E919FAc9B808cC216cAc87CCF2f47a', // aXSUSHI - ], - owners: treasuryContractsETH, - ownTokens: [AAVE], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.DAI, - '0x27F8D03b3a2196956ED754baDc28D73be8830A6e', // amDAI - '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aPOLDAI - ADDRESSES.polygon.USDC, - '0x1a13F4Ca1d028320A707D99520AbFefca3998b7F', // amUSDC - '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aPolUSDC - ADDRESSES.polygon.USDT, - '0x60D55F02A771d515e077c9C2403a1ef324885CeC', // amUSDT - '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aPolUSDT - '0x1d2a0E5EC8E5bBDCA5CB219e649B565d8e5c3360', // amAAVE - '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aPolAAVE - ADDRESSES.polygon.WBTC, - '0x5c2ed810328349100A66B82b78a1791B101C9D61', // amWBTC - '0x078f358208685046a11C85e8ad32895DED33A249', // aPolWBTC - ADDRESSES.polygon.WETH_1, - '0x28424507fefb6f7f8E9D3860F56504E4e5f5f390', // amWETH - '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aPolWETH - ADDRESSES.polygon.WMATIC_2, // WMATIC - '0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4', // amWMATIC - '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aPolWMATIC - '0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3', // BAL - '0xc4195D4060DaEac44058Ed668AA5EfEc50D77ff6', // amBAL - '0x8ffDf2DE812095b1D19CB146E4c004587C0A0692', // aPolBAL - '0x172370d5Cd63279eFa6d502DAB29171933a610AF', // CRV - '0x3Df8f92b7E798820ddcCA2EBEA7BAbda2c90c4aD', // amCRV - '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aPolCRV - '0x85955046DF4668e1DD369D2DE9f3AEB98DD2A369', // DPI - '0x81fB82aAcB4aBE262fc57F06fD4c1d2De347D7B1', // amDPI - '0x724dc807b04555b71ed48a6896b6F41593b8C637', // aPolDPI - '0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7', // GHST - '0x080b5BF8f360F624628E0fb961F4e67c9e3c7CF1', // amGHST - '0x8Eb270e296023E9D92081fdF967dDd7878724424', // aPolGHST - '0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39', // LINK - '0x0Ca2e42e8c21954af73Bc9af1213E4e81D6a669A', // amLINK - '0x191c10Aa4AF7C30e871E70C95dB0E4eb77237530', // aPolLINK - '0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a', // SUSHI - '0x21eC9431B5B55c5339Eb1AE7582763087F98FAc2', // amSUSHI - '0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA', // aPolSUSHI - '0xE111178A87A3BFf0c8d18DECBa5798827539Ae99', // EURS - '0x38d693cE1dF5AaDF7bC62595A37D667aD57922e5', // aPolEURS - '0xa3fa99a148fa48d14ed51d610c367c61876997f1', // MAI - '0xeBe517846d0F36eCEd99C735cbF6131e1fEB775D', // aPolMAI - ADDRESSES.polygon.MATICX, // MATICX - '0x80cA0d8C38d2e2BcbaB66aA1648Bd1C7160500FE', // aPolMATICX - '0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4', // stMATIC - '0xEA1132120ddcDDA2F119e99Fa7A27a0d036F7Ac9', // aPolSTMATIC - '0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c', // jEUR - '0x6533afac2E7BCCB20dca161449A13A32D391fb00', // aPolJEUR - '0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4', //agEUR - '0x8437d7C167dFB82ED4Cb79CD44B7a32A1dd95c77', //aPolAGEUR - ], - owners: treasuryContractsMATIC, - ownTokens: [AAVEPOLYGON], - }, - avax: { - tokens: [ - ADDRESSES.avax.DAI, - '0x47AFa96Cdc9fAb46904A55a6ad4bf6660B53c38a', // avDAI - '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aAvaDAI - ADDRESSES.avax.USDC_e, - '0x46A51127C3ce23fb7AB1DE06226147F446e4a857', // avUSDC - '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aAvaUSDC - ADDRESSES.avax.USDT_e, - '0x532E6537FEA298397212F09A61e03311686f548e', // avUSDT - '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aAvaUSDT - '0xD45B7c061016102f9FA220502908f2c0f1add1D7', // avAAVE - '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aAvaAAVE - ADDRESSES.avax.WAVAX, - '0xDFE521292EcE2A4f44242efBcD66Bc594CA9714B', // avWAVAX - '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aAvaWAVAX - ADDRESSES.avax.WBTC_e, // WBTC - '0x686bEF2417b6Dc32C50a3cBfbCC3bb60E1e9a15D', // aWBTC - '0x078f358208685046a11C85e8ad32895DED33A249', // aAvaWBTC - ADDRESSES.avax.WETH_e, - '0x53f7c5869a859F0AeC3D334ee8B4Cf01E3492f21', // aWETH - '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aAvaWETH - '0x5947bb275c521040051d82396192181b413227a3', // LINK - '0x191c10Aa4AF7C30e871E70C95dB0E4eb77237530', // aAvaLINK - '0xd24c2ad096400b6fbcd2ad8b24e7acbc21a1da64', // FRAX - '0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA', // aAvaFRAX - '0x5c49b268c9841aff1cc3b0a418ff5c3442ee3f3b', // MAI - '0x8Eb270e296023E9D92081fdF967dDd7878724424', // aAvaMAI - ADDRESSES.avax.SAVAX, // sAVAX - '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aAvaSAVAX - ADDRESSES.avax.BTC_b, - '0x8ffDf2DE812095b1D19CB146E4c004587C0A0692', // aAvaBTC.b - ], - owners: treasuryContractsAvax, - ownTokens: [AAVEAVAX], - }, - arbitrum: { - tokens: [ - ADDRESSES.optimism.DAI, // DAI - '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aArbDAI - '0xd22a58f79e9481d1a88e00c343885a588b34b68b', // EURS - '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aArbEURS - ADDRESSES.arbitrum.USDC, // USDC - '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aArbUSDC - ADDRESSES.arbitrum.USDT, // USDT - '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aArbUSDT - '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aArbAAVE - ADDRESSES.arbitrum.LINK, // LINK - '0x191c10Aa4AF7C30e871E70C95dB0E4eb77237530', // aArbLINK - ADDRESSES.arbitrum.WBTC, // WBTC - '0x078f358208685046a11C85e8ad32895DED33A249', // aArbWBTC - ADDRESSES.arbitrum.WETH, // WETH - '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aArbWETH - ], - owners: aaveTreasuryArbitrum, - ownTokens: [AAVEARBITRUM], - }, - optimism: { - tokens: [ - ADDRESSES.tombchain.FTM, // WETH - '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aOptWETH - ADDRESSES.optimism.WBTC, // WBTC - '0x078f358208685046a11C85e8ad32895DED33A249', // aOptWBTC - ADDRESSES.optimism.OP, // OP - '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aOptOP - ADDRESSES.optimism.DAI, // DAI - '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aOptDAI - ADDRESSES.optimism.sUSD, // sUSD - '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aOptSUSD - ADDRESSES.optimism.USDC, // USDC - '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aOptUSDC - ADDRESSES.optimism.USDT, // USDT - '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aOptUSDT - '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aOptAAVE - '0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6', // LINK - '0x191c10Aa4AF7C30e871E70C95dB0E4eb77237530', // aOptLINK - ], - owners: aaveTreasuryOptimism, - ownTokens: [AAVEOPTIMISM], - }, - fantom: { - tokens: [ - "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf", // aFanCRV - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", // aFanDAI - "0x191c10Aa4AF7C30e871E70C95dB0E4eb77237530", // aFanLINK - "0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA", // aFanSUSHI - "0x625E7708f30cA75bfd92586e17077590C60eb4cD", // aFanUSDC - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", // aFanUSDT - "0x078f358208685046a11C85e8ad32895DED33A249", // aFanWBTC - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", // aFanWETH - "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97", // aFanWFTM - ], - owners: treasuryContractsFantom, - ownTokens: [AAVEFANTOM] - }, -}) diff --git a/projects/treasury/aavegotchi.js b/projects/treasury/aavegotchi.js deleted file mode 100644 index a175c5d5ef6..00000000000 --- a/projects/treasury/aavegotchi.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const aavegotchiTreasury2 = "0xFFE6280ae4E864D9aF836B562359FD828EcE8020"; -const treasury2 = "0xfb76e9be55758d0042e003c1e46e186360f0627e"; -const GHST = "0x3F382DbD960E3a9bbCeaE22651E88158d2791550"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI, //DAI - ], - owners: [aavegotchiTreasury2, treasury2, "0x53c3CA81EA03001a350166D2Cc0fcd9d4c1b7B62"], - ownTokens: [GHST], - }, - polygon: { - tokens: [nullAddress, ADDRESSES.polygon.DAI, ADDRESSES.polygon.USDC], - owners: [ - "0xb208f8BB431f580CC4b216826AFfB128cd1431aB", - "0x27DF5C6dcd360f372e23d5e63645eC0072D0C098", - "0x939b67F6F6BE63E09B0258621c5A24eecB92631c", - "0x62DE034b1A69eF853c9d0D8a33D26DF5cF26682E", - "0x8c8E076Cd7D2A17Ba2a5e5AF7036c2b2B7F790f6", - "0x48eA1d45142fC645fDcf78C133Ac082eF159Fe14", - "0x6fb7e0AAFBa16396Ad6c1046027717bcA25F821f", - "0x921D8FDF089775D5AC61b2d6e8f34F1edd554D8f", - "0xa8D00712abE7af3446cdC651c159737cCFB43255", - "0xed7cb3973C7bFE4bf78dA8E5f52EB04c0dF53d3B", - "0x62DE034b1A69eF853c9d0D8a33D26DF5cF26682E", - "0x8c8E076Cd7D2A17Ba2a5e5AF7036c2b2B7F790f6", - "0xAbA69f6E893B18bE066a237f723F43315BBF9D9A", - ], - ownTokens: ["0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7"], - }, -}); diff --git a/projects/treasury/abachi.js b/projects/treasury/abachi.js deleted file mode 100644 index 3862e085106..00000000000 --- a/projects/treasury/abachi.js +++ /dev/null @@ -1,8 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0x6fce4c6cdd8c4e6c7486553d09bdd9aee61cf095'], - ownTokens: ['0xBF0B8b7475EdB32D103001Efd19FdD2753d7B76D'], - }, -}) diff --git a/projects/treasury/abracadabra.js b/projects/treasury/abracadabra.js deleted file mode 100644 index 3f3a8cf07e7..00000000000 --- a/projects/treasury/abracadabra.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const mainnetTeamTokens = "0x5A7C5505f3CFB9a0D9A8493EC41bf27EE48c406D"; -const mainnetTreasury = "0xdf2c270f610dc35d8ffda5b453e74db5471e126b"; -const arbitrumTreasury = "0xA71A021EF66B03E45E0d85590432DFCfa1b7174C"; -const SPELL = "0x090185f2135308BaD17527004364eBcC2D37e5F6"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - SPELL, - ADDRESSES.ethereum.USDT, // USDT - "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", // MIM - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.CRV, // CRV - ADDRESSES.ethereum.WETH, // wETH - "0x4d224452801aced8b2f0aebe155379bb5d594381", // APE - // Yearn vaults - "0x27B5739e22ad9033bcBf192059122d163b60349D", // st-yCRV - "0xdCD90C7f6324cfa40d7169ef80b12031770B4325", // yvCurve-stETH - "0xa258C4606Ca8206D8aA700cE2143D7db854D168c", // yvWETH - "0xdA816459F1AB5631232FE5e97a05BBBb94970c95", // yvDAI - "0x3B27F92C0e212C671EA351827EDF93DB27cc0c65", // yvUSDT - "0xa354F35829Ae975e850e23e9615b11Da1B3dC4DE", // yvUSDC - "0x27b7b1ad7288079A66d12350c828D3C00A6F07d7", // yvCurve-IronBank - "0x1635b506a88fBF428465Ad65d00e8d6B6E5846C3", // yvCurve-CVXETH - // Stargate pools - "0xdf0770dF86a8034b3EFEf0A1Bb3c889B8332FF56", // S*USDC - "0x38EA452219524Bb87e18dE1C24D3bB59510BD783", // S*USDT - // Magic autocompounders - "0xf35b31B941D94B249EaDED041DB1b05b7097fEb6", // magicAPE - ], - owners: [mainnetTeamTokens, mainnetTreasury], - ownTokens: [SPELL], - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.ARB, // ARB - ADDRESSES.arbitrum.MIM, // MIM - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.USDT, // USDT - // Magic autocompounders - "0x85667409a723684fe1e57dd1abde8d88c2f54214", // magicGLP - ], - owners: [arbitrumTreasury], - ownTokens: [], - }, -}); diff --git a/projects/treasury/across.js b/projects/treasury/across.js deleted file mode 100644 index 02c9135dcfa..00000000000 --- a/projects/treasury/across.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xd16d904b68429b93f1dfcd837f61aedcd224e8f4"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/aimstrong.js b/projects/treasury/aimstrong.js deleted file mode 100644 index d49405253c1..00000000000 --- a/projects/treasury/aimstrong.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x81ff99181d4Bdd14f64dC1a0e1A98EF81688bA0a"; - -module.exports = treasuryExports({ - base: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/airswap.js b/projects/treasury/airswap.js deleted file mode 100644 index 051822819bd..00000000000 --- a/projects/treasury/airswap.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x24b4ce3ad4366b73f839c1b1fd11d1f636514534"; -const treasury2 = "0x8e5a68a73470c07d043b57d0751fba8b0315c12c"; -const treasury3 = "0xf8bb149f9525875fa47b8cc632d368eb600faba3"; - -const AST = "0x27054b13b1b798b345b591a4d22e6562d47ea75a" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.BUSD - ], - owners: [treasury, treasury2, treasury3], - ownTokens: [AST], - }, -}) \ No newline at end of file diff --git a/projects/treasury/ajira-pay-finance.js b/projects/treasury/ajira-pay-finance.js deleted file mode 100644 index 22270a79d3e..00000000000 --- a/projects/treasury/ajira-pay-finance.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const AJP = "0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997" - -const arb_tokens = [ - ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.USDT, - ADDRESSES.optimism.DAI, '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', - ADDRESSES.arbitrum.ARB, - nullAddress -] - -const bsc_tokens = [ - ADDRESSES.bsc.USDT, ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.BUSD, ADDRESSES.bsc.USDC, - '0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD', '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', - nullAddress -] - -const polygon_tokens = [ - ADDRESSES.polygon.USDT, ADDRESSES.polygon.USDC, - ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.WBTC, - ADDRESSES.polygon.WMATIC_1, ADDRESSES.polygon.DAI, - ADDRESSES.polygon.BUSD, '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', - nullAddress -] - -const kava_tokens = [ - ADDRESSES.kava.WKAVA, ADDRESSES.telos.ETH, - ADDRESSES.moonriver.USDT, ADDRESSES.kava.axlUSDC, - '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', - nullAddress -] - -const owners = { - bsc: '0x12A65dFDD9E94Bd7f7547d1C4365c5c067f47ed0', - arbitrum: '0x396B58574c0760E84E16468457c460bdCC6f8b57', - polygon: '0xd7B2DEcAAcD75ADb92C1ee0C77e2303c815012d0', - kava: '0xdBD5c57F3a0A6eFC7c9E91639D72Cc139c581AB4' -} - -module.exports = treasuryExports({ - kava: { - tokens: kava_tokens, - owners: [owners.kava], - ownTokens: [AJP] - }, - bsc: { - tokens: bsc_tokens, - owners: [owners.bsc], - ownTokens: [AJP], - }, - polygon: { - tokens: polygon_tokens, - owners: [owners.polygon], - ownTokens: [AJP] - }, - arbitrum: { - tokens: arb_tokens, - owners: [owners.arbitrum], - ownTokens: [AJP] - } - }) \ No newline at end of file diff --git a/projects/treasury/alchemix.js b/projects/treasury/alchemix.js deleted file mode 100644 index 9faea3c7b1a..00000000000 --- a/projects/treasury/alchemix.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const alchemixTreasury = "0x8392F6669292fA56123F71949B52d883aE57e225"; -const ALCX = "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF"; -const operations_treasury = "0x9e2b6378ee8ad2A4A95Fe481d63CAba8FB0EBBF9" -const treasury2 = "0x9735F7d3Ea56b454b24fFD74C58E9bD85cfaD31B" -const treasury3 = "0xe761bf731A06fE8259FeE05897B2687D56933110" -const treasury4 = "0x06378717d86B8cd2DBa58c87383dA1EDA92d3495" -const treasury5 = "0x3216D2A52f0094AA860ca090BC5C335dE36e6273" - -const treasuryFTM = "0x6b291cf19370a14bbb4491b01091e1e29335e605" -const treasuryOP = "0xc224bf25dcc99236f00843c7d8c4194abe8aa94a" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI - '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - "0xf16aEe6a71aF1A9Bc8F56975A4c2705ca7A782Bc", //20WETH-80ALC - ADDRESSES.ethereum.LUSD, - ADDRESSES.ethereum.CRV, - ADDRESSES.ethereum.YFI, - "0xa258C4606Ca8206D8aA700cE2143D7db854D168c", - ADDRESSES.ethereum.FXS, - "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - "0xF1bB87563A122211d40d393eBf1c633c330377F9", //xpremia - ADDRESSES.ethereum.FXS, - "0x7f50786A0b15723D741727882ee99a0BF34e3466" - ], - owners: [alchemixTreasury, operations_treasury, treasury2, treasury3, treasury4, treasury5], - ownTokens: [ALCX], - blacklistedTokens: ["0xbc6da0fe9ad5f3b0d58160288917aa56653660e9", "0x0100546f2cd4c9d97f798ffc9755e47865ff7ee6"] - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC,//USDC - ADDRESSES.optimism.OP, - "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05" - ], - owners: [treasuryOP], - blacklistedTokens: ["0x3e29d3a9316dab217754d13b28646b76607c5f04"] - }, - fantom: { - tokens: [ - nullAddress, - ADDRESSES.fantom.USDC,//USDC - ADDRESSES.fantom.DAI, - ADDRESSES.fantom.WFTM - ], - owners: [treasuryFTM], - }, -}) diff --git a/projects/treasury/alienbase.js b/projects/treasury/alienbase.js deleted file mode 100644 index 0b7e5f74ec2..00000000000 --- a/projects/treasury/alienbase.js +++ /dev/null @@ -1,8 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - base: { - owners: ['0x4aB9070B7680f802cBf8322e597a4409902171e5'], - ownTokens: ['0x1dd2d631c92b1aCdFCDd51A0F7145A50130050C4'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/alkimiya.js b/projects/treasury/alkimiya.js deleted file mode 100644 index 0f0a3e85117..00000000000 --- a/projects/treasury/alkimiya.js +++ /dev/null @@ -1,8 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - - -module.exports = treasuryExports({ - base: { - owners: ['0x62E30D1969FAf92dc8a3C22A1552eB83763eb372'], - }, -}) diff --git a/projects/treasury/alpacacity.js b/projects/treasury/alpacacity.js deleted file mode 100644 index b8633e9dcd2..00000000000 --- a/projects/treasury/alpacacity.js +++ /dev/null @@ -1,24 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryContracts = [ - "0xd93DC6B8Ef043C3ad409C6480A57b4851b3C055e", - "0xF30Ccf37c7058Db0026DE9239d373a1c8723210a" -]; -const treasuryContractsBSC = [ - "0x3226dBce6317dF643EB68bbeF379E6B968b3E669", - "0xb9C76Db167Fa6BFd0e6d78063C63B3073C637497", - "0x6F712F28834b82B7781311b42a945a6134112B2A" -]; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ nullAddress, ], - owners: treasuryContracts, - ownTokens: ['0x7cA4408137eb639570F8E647d9bD7B7E8717514A'], - }, - bsc: { - tokens: [ nullAddress, ], - owners: treasuryContractsBSC, - ownTokens: ['0xc5e6689c9c8b02be7c49912ef19e79cf24977f03'], - }, -}) diff --git a/projects/treasury/alphaX-protocol.js b/projects/treasury/alphaX-protocol.js deleted file mode 100644 index a1f9fc51c82..00000000000 --- a/projects/treasury/alphaX-protocol.js +++ /dev/null @@ -1,7 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0x95e2A6458419b7A38193CB853F45fD7329443A90'], - }, -}) diff --git a/projects/treasury/altr-lend.js b/projects/treasury/altr-lend.js deleted file mode 100644 index fc6491527fe..00000000000 --- a/projects/treasury/altr-lend.js +++ /dev/null @@ -1,13 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x881d440A7e047335BE81BBB27dBA6AEe9c2aa529"; - -module.exports = treasuryExports({ - polygon: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - ownTokens: ["0xc2A45FE7d40bCAc8369371B08419DDAFd3131b4a"] // LCD - }, -}) \ No newline at end of file diff --git a/projects/treasury/alyx.js b/projects/treasury/alyx.js deleted file mode 100644 index 6f4efa1681d..00000000000 --- a/projects/treasury/alyx.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x576182b7a1b0bC67701ead28a087228c50Aa0982"; - - - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.USDT - ], - owners: [treasury] - }, -}) diff --git a/projects/treasury/amnis.finance.js b/projects/treasury/amnis.finance.js deleted file mode 100644 index 8a4184a01fb..00000000000 --- a/projects/treasury/amnis.finance.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x06b6f37af314f19fea6b1940b2ca2c38c158b45476a70eb8874bd17be7b65c8b"; - - - -module.exports = treasuryExports({ - aptos: { - tokens: [ - nullAddress, - ADDRESSES.aptos.APT, - ADDRESSES.aptos.amAPT, - ADDRESSES.aptos.stApt, - ], - owners: [treasury] - }, -}) diff --git a/projects/treasury/antfarm_finance.js b/projects/treasury/antfarm_finance.js deleted file mode 100644 index 451b4119fee..00000000000 --- a/projects/treasury/antfarm_finance.js +++ /dev/null @@ -1,13 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const daoTreasury = "0x529C78Ee582e4293a20Ab60c848506eADd8723D8"; -const ATF = "0x518b63Da813D46556FEa041A88b52e3CAa8C16a8"; -const AGT = "0x0BF43350076F95e0d16120b4D6bdfA1C9D50BDBD"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [nullAddress, ATF, AGT], - owners: [daoTreasury], - ownTokens: [ATF, AGT], - }, -}); diff --git a/projects/treasury/ape-coin.js b/projects/treasury/ape-coin.js deleted file mode 100644 index 3873b31d1d0..00000000000 --- a/projects/treasury/ape-coin.js +++ /dev/null @@ -1,22 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x03ca52e482912308c287d09ec941b996c18668f5"; -const treasury2 = "0x1633b453c3ca5a244c66f4418ff5120282370053" -const APE = "0x4d224452801aced8b2f0aebe155379bb5d594381" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.STETH, - - ], - owners: [treasury, treasury2], - ownTokens: [APE], - // resolveLP: true, - // resolveUniV3: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/apex-protocol.js b/projects/treasury/apex-protocol.js deleted file mode 100644 index 9f1d5f8525f..00000000000 --- a/projects/treasury/apex-protocol.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xae792a7bf5f85a68ffe92bfbfa7a04c72d7cb095"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/api3.js b/projects/treasury/api3.js deleted file mode 100644 index 1e9d7a76153..00000000000 --- a/projects/treasury/api3.js +++ /dev/null @@ -1,24 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x556ecbb0311d350491ba0ec7e019c354d7723ce0"; -const treasury2 = "0xd9f80bdb37e6bad114d747e60ce6d2aaf26704ae" -const treasury3 = "0xe7af7c5982e073ac6525a34821fe1b3e8e432099" -const API = "0x0b38210ea11411557c13457d4da7dc6ea731b88a" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.USDC, - "0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d" - ], - owners: [treasury, treasury2, treasury3], - ownTokens: [API], - // resolveLP: true, - // resolveUniV3: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/apollox.js b/projects/treasury/apollox.js deleted file mode 100644 index 24734afccf3..00000000000 --- a/projects/treasury/apollox.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x60ede4402a34762d608ad9ba7bd3797f5bfe544c"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ ], - tokens: [ - nullAddress, - ], - }, - bsc: { - owners: [treasury], - ownTokens:['0x78f5d389f5cdccfc41594abab4b0ed02f31398b3'], - tokens: [ - ADDRESSES.bsc.USDT, - ] - } -}); \ No newline at end of file diff --git a/projects/treasury/aragon.js b/projects/treasury/aragon.js deleted file mode 100644 index 92b76bd8aab..00000000000 --- a/projects/treasury/aragon.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const aragonTreasury = "0xfb633F47A84a1450EE0413f2C32dC1772CcAea3e"; -const ANT = "0xa117000000f279D81A1D3cc75430fAA017FA5A2e"; -const ANT_ETH_LP = "0x9dEF9511fEc79f83AFCBFfe4776B1D817DC775aE" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.UNI,//UNI - '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS - ADDRESSES.ethereum.BUSD,//BUSD - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT - '0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c',//yyDAI+yUSDC+yUSDT+yTUSD - '0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F',//GTC - '0xdd974D5C2e2928deA5F71b9825b8b646686BD200',//KNC - '0x8f8221aFbB33998d8584A2B05749bA73c37a938a',//REQ - '0x24cCeDEBF841544C9e6a62Af4E8c2fA6e5a46FdE',//BlueSparrow - '0x232FB065D9d24c34708eeDbF03724f2e95ABE768',//SHEESHA - '0xaC9Bb427953aC7FDDC562ADcA86CF42D988047Fd',//STT - "0x0f5d2fb29fb7d3cfee444a200298f468908cc942",//MANA - ADDRESSES.ethereum.USDT,//USDT - ], - owners: [aragonTreasury, "0x7ecd1eac2a07974bcbabafee44b5cc44ceee9540", "0xcafe1a77e84698c83ca8931f54a755176ef75f2c"], - ownTokens: [ANT, ANT_ETH_LP], - }, -}) \ No newline at end of file diff --git a/projects/treasury/arbitrum-dao.js b/projects/treasury/arbitrum-dao.js deleted file mode 100644 index 21244835499..00000000000 --- a/projects/treasury/arbitrum-dao.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xf3fc178157fb3c87548baa86f9d24ba38e649b58"; -const l1_surplus_fees = "0x2E041280627800801E90E9Ac83532fadb6cAd99A" -const l2_surplus_fees = "0x32e7AF5A8151934F3787d0cD59EB6EDd0a736b1d" -const l2_base_fees = "0xbF5041Fc07E1c866D15c749156657B8eEd0fb649" -const l2_treasury_timelock = "0xbFc1FECa8B09A5c5D3EFfE7429eBE24b9c09EF58" - -const ARB = ADDRESSES.arbitrum.ARB; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury, l1_surplus_fees, l2_surplus_fees, l2_base_fees, l2_treasury_timelock], - ownTokens: [ARB], - }, - arbitrum_nova: { - tokens: [ - nullAddress, - ], - owners: ["0x509386DbF5C0BE6fd68Df97A05fdB375136c32De", "0x3B68a689c929327224dBfCe31C1bf72Ffd2559Ce", "0x9fCB6F75D99029f28F6F4a1d277bae49c5CAC79f"], - }, -}) diff --git a/projects/treasury/arcade-xyz.js b/projects/treasury/arcade-xyz.js deleted file mode 100644 index c66a46729c5..00000000000 --- a/projects/treasury/arcade-xyz.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -// node test.js projects/treasury/arcade-xyz.js - -const ARCADE_TREASURY = '0xac2b57b372E198F09d4bF5F445CA1228771C12c5'; -const ETH_ADDRESS = ADDRESSES.GAS_TOKEN_2; -const ARCD_TOKEN = '0xe020B01B6fbD83066aa2e8ee0CCD1eB8d9Cc70bF'; - -module.exports = treasuryExports({ - ethereum: { - owners: [ARCADE_TREASURY], - ownTokens: [ARCD_TOKEN, ETH_ADDRESS] - } -}) \ No newline at end of file diff --git a/projects/treasury/archimedes.js b/projects/treasury/archimedes.js deleted file mode 100644 index 058bbb8527e..00000000000 --- a/projects/treasury/archimedes.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x29520fd76494Fd155c04Fa7c5532D2B2695D68C6"; -const ARCH = "0x73C69d24ad28e2d43D03CBf35F79fE26EBDE1011" - - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//usdc - ADDRESSES.ethereum.USDT,//usdt - '0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86',//ousd - ], - owners: [treasury], - ownTokens: [ARCH], - }, -}) \ No newline at end of file diff --git a/projects/treasury/atlas-usv.js b/projects/treasury/atlas-usv.js deleted file mode 100644 index f5feb2c25f0..00000000000 --- a/projects/treasury/atlas-usv.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryContractsETH = ["0x8739f0EeF3163C3db7b994d0e301BC375d757aF6"]; - -const treasuryContractsMATIC = ["0x71EF2894E23D7ea7Fd73a3558B3a0bA25689bC86"]; - -const treasuryContractsAvax = ["0x53a73b76F84bc5E27A6d3653503Af98e727e2991"]; - -const treasuryContractsBSC = ["0x4fa7C6f58bb7f30c38d69D7E6fF76911abfd393d"] - - -const USV = "0x88536c9b2c4701b8db824e6a16829d5b5eb84440"; -const USVPOLYGON = '0xac63686230f64bdeaf086fe6764085453ab3023f'; -const USVAVAX = '0xb0a8e082e5f8d2a04e74372c1be47737d85a0e73'; -const USVBSC = '0xaf6162dc717cfc8818efc8d6f46a41cf7042fcba'; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI, - ], - owners: treasuryContractsETH, - ownTokens: [USV], - }, - polygon: { - tokens: [ - nullAddress, - '0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', //mimatic - ADDRESSES.polygon.DAI, //DAI - '0x104592a158490a9228070E0A8e5343B499e125D0', // frax - ], - owners: treasuryContractsMATIC, - ownTokens: [USVPOLYGON], - }, - avax: { - tokens: [ - ADDRESSES.avax.DAI, // DAI - ], - owners: treasuryContractsAvax, - ownTokens: [USVAVAX], - }, - bsc: { - tokens: [ - '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', //DAI - ADDRESSES.bsc.BUSD, //busd - ], - owners: treasuryContractsBSC, - ownTokens: [USVBSC], - }, -}) diff --git a/projects/treasury/augury.js b/projects/treasury/augury.js deleted file mode 100644 index 74fd0ff434e..00000000000 --- a/projects/treasury/augury.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const DeveloperTeamWallet = "0xE2E26BAc2ff37A7aE219EcEF74C5A1Bf95d5f854"; -const amWMATIC = "0x8df3aad3a84da6b69a4da8aec3ea40d9091b2ac4"; -const OMEN = "0x76e63a3E7Ba1e2E61D3DA86a87479f983dE89a7E"; -const QUICK = "0x831753dd7087cac61ab5644b308642cc1c33dc13"; - - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - polygon: { - tokens: [ nullAddress, amWMATIC, QUICK, ADDRESSES.polygon.USDC, '0x8a953cfe442c5e8855cc6c61b1293fa648bae472', ADDRESSES.polygon.USDT, ], - owners: [DeveloperTeamWallet], - ownTokens: [ OMEN], - }, -}) diff --git a/projects/treasury/aura.js b/projects/treasury/aura.js deleted file mode 100644 index 65b9f18916d..00000000000 --- a/projects/treasury/aura.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xfc78f8e1Af80A3bF5A1783BB59eD2d1b10f78cA9"; - -module.exports = treasuryExports({ - ethereum: { - owner: treasury, - ownTokens: [ - "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", // AURA - "0xc29562b045D80fD77c69Bec09541F5c16fe20d9d", // B-80AURA-20WETH - "0x0Bf1f1E3ccf6A1089710359E312753b44BBF85f8", // sAURA - ], - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - "0xba100000625a3754423978a60c9317c58a424e3D", // BAL - ADDRESSES.ethereum.SAFE, - "0x0d02755a5700414B26FF040e1dE35D337DF56218", // BEND - "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", // auraBAL - "0x3dd0843A028C86e0b760b1A76929d1C5Ef93a2dd", // B-auraBAL-STABLE - ], - }, -}); diff --git a/projects/treasury/axelar.js b/projects/treasury/axelar.js deleted file mode 100644 index d9a19ed5d26..00000000000 --- a/projects/treasury/axelar.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x8d9249e6049bb17c15007bc58a5bec12a5af4346"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/badger-dao.js b/projects/treasury/badger-dao.js deleted file mode 100644 index b2f905a1aac..00000000000 --- a/projects/treasury/badger-dao.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury_vault = "0xD0A7A8B98957b9CD3cFB9c0425AbE44551158e9e"; -const treasury_ops = "0x042B32Ac6b453485e357938bdC38e0340d4b9276"; -const treasury_voter = "0xA9ed98B5Fb8428d68664f3C5027c62A10d45826b"; -const treasury_dev = "0xB65cef03b9B89f99517643226d76e286ee999e77"; -const treasury_tech = "0x86cbD0ce0c087b482782c181dA8d191De18C8275"; -const treasury_pay = "0x30a9c1D258F6c2D23005e6450E72bDD42C541105"; -const treasury_drip1 = "0xA3Dc099D14722D0e25B3A904427377B4B2ab9fA4"; -const treasury_drip2 = "0xC0D8fD5c722AF68437E7dFc095a980500dC0961D"; -const treasury_bfraxbp = "0xe0705A91984b076C250d410A41f615380aF1C2ed"; -const BADGER = "0x3472A5A71965499acd81997a54BBA8D852C6E53d"; -const DIGG = "0x798D1bE841a82a273720CE31c822C61a67a601C3"; -const treasuryarb = "0xb364bab258ad35dd83c7dd4e8ac78676b7aa1e9f" - -const mapping = { - '0x4efc8ded860bc472fa8d938dc3fd4946bc1a0a18': '0xb460daa847c45f1c4a41cb05bfb3b51c92e41b36', - '0xd7c9c6922db15f47ef3131f2830d8e87f7637210': '0x8eb6c82c3081bbbd45dcac5afa631aac53478b7c', - '0xaad4ee162dbc9c25cca26ba4340b36e3ef7c1a80': '0x1ee442b5326009bb18f2f472d3e0061513d1a0ff', -} - -Object.entries(mapping).forEach(([key, val]) => mapping[key.toLowerCase()] = val) - -const transformAddress = i => { - i = i.toLowerCase() - i = mapping[i] ?? i - return 'ethereum:' + i -} - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.WBTC,//WBTC - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.USDT,//USDT - ADDRESSES.ethereum.LUSD,//LUSD - "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656",//aWBTC - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.RETH,//rETH - "0x25f0b7c3A7A43b409634a5759526560cC3313d75", // cvxBADGERFRAX-f - "0xaad4ee162dbc9c25cca26ba4340b36e3ef7c1a80", // aura50rETH-50BADGER-vault - "0x4efc8ded860bc472fa8d938dc3fd4946bc1a0a18", // aura20WBTC-80BADGER-vault - "0xd7c9c6922db15f47ef3131f2830d8e87f7637210", // aura40WBTC-40DIGG-20graviAURA-vault - ], - owners: [treasury_vault, treasury_ops, treasury_voter, treasury_dev, treasury_tech, treasury_pay, treasury_drip1, treasury_drip2, treasury_bfraxbp], - ownTokens: [BADGER, DIGG], - blacklistedTokens: ['0x7491989cfbc6da74141bc8cd187e480c21ece169'], - resolveUniV3: true, - transformAddress, - }, - arbitrum: { - tokens: [ - nullAddress, - "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978" - ], - owners: [treasuryarb] - } -}) diff --git a/projects/treasury/badidea.js b/projects/treasury/badidea.js deleted file mode 100644 index fdaa7899620..00000000000 --- a/projects/treasury/badidea.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const TREASURY1 = '0xe5F6f7181EEc4C2A8ae59e5dE2aFeD32E9ea3250' -const TREASURY2 = '0xA41f36D9F8c9eD352Ed80105C921D55559C2F8E9' -const TREASURY3 = '0xBA07DbA88B9d3700c169cE82Ced3C1bF4791b3b6' -const TREASURY4 = '0x7A748CE254bb2E377aaFd24b81Eb4442c1a57734' -const TREASURY5 = '0x33a733B6b613A2178109F2353B6369D2d3a86b0e' -const TREASURY6 = '0x22F519e33550A0F521DF80080f8Aabe22e63131d' -const BAD = '0x32b86b99441480a7E5BD3A26c124ec2373e3F015' - - - -module.exports = treasuryExports({ - ethereum: { - tokens: [nullAddress, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ], - owners: [TREASURY1, TREASURY2, TREASURY3, TREASURY4, TREASURY5, TREASURY6], - ownTokens: [BAD], - }, -}); \ No newline at end of file diff --git a/projects/treasury/balancer.js b/projects/treasury/balancer.js deleted file mode 100644 index 1d9601f342c..00000000000 --- a/projects/treasury/balancer.js +++ /dev/null @@ -1,152 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { karpatKeyTvl } = require("../helper/karpatkey"); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -// Treasury addresses per chain -const eth = "0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f"; -const eth2 = "0x0EFcCBb9E2C09Ea29551879bd9Da32362b32fc89"; -const arb = "0xaF23DC5983230E9eEAf93280e312e57539D098D0"; -const pol = "0xeE071f4B516F69a1603dA393CdE8e76C40E5Be85"; -const zkevm = "0x2f237e7643a3bF6Ef265dd6FCBcd26a7Cc38dbAa"; -const op = "0x043f9687842771b3dF8852c1E9801DCAeED3f6bc"; -const base = "0xC40DCFB13651e64C8551007aa57F9260827B6462"; -const xdai = "0x2a5AEcE0bb9EfFD7608213AE1745873385515c18"; -const avax = "0x17b11FF13e2d7bAb2648182dFD1f1cfa0E4C7cf3"; - -// BAL addresses per chain -const bal_eth = "0xba100000625a3754423978a60c9317c58a424e3D"; -const bal_arb = "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8"; -const bal_pol = "0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3"; -const bal_zkevm = "0x120eF59b80774F02211563834d8E3b72cb1649d6"; -const bal_op = "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921"; -const bal_base = "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1"; -const bal_xdai = "0x7ef541e2a22058048904fe5744f9c7e4c57af717"; -const bal_avax = "0xE15bCB9E0EA69e6aB9FA080c4c4A5632896298C3"; - -// Token mappings per chain -const ethTokens = [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.GNO, - ADDRESSES.ethereum.STETH, // stETH - "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", // GTC - ADDRESSES.ethereum.SAFE, // SAFE - "0x4da27a545c0c5B758a6BA100e3a049001de870f5", // stAAVE - ADDRESSES.ethereum.SDAI, // sDAI - "0xc3d688B66703497DAA19211EEdff47f25384cdc3" // Compound USDC - -]; - -const ethOwnTokens = [ - bal_eth, //BAL - "0x2516E7B3F76294e03C42AA4c5b5b4DCE9C436fB8", // AV2-BAL-LP - "0xcb9d0b8CfD8371143ba5A794c7218D4766c493e2" // anyBAL -]; - -const arbTokens = [ - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDC_CIRCLE -]; - -const arbOwnTokens = [ - bal_arb // BAL -]; - -const polTokens = [ - ADDRESSES.polygon.WMATIC, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDC_CIRCLE, - ADDRESSES.polygon.USDT -]; - -const polOwnTokens = [ - bal_pol, //BAL - "0x8ffDf2DE812095b1D19CB146E4c004587C0A0692", // AAVE Polygon BAL - "0x4AA8E7d82cA4038ffC088EF15eC1679dbA050c04" // anyBAL -]; - -//Empty for now -const zkevmTokens = []; - -const zkevmOwnTokens = [ - bal_zkevm // BAL -]; - -const opTokens = []; - -const opOwnTokens = [ - bal_op, //BAL - "0x99C409E5f62E4bd2AC142f17caFb6810B8F0BAAE", // anyBAL - "0xc38C2fC871188935B9C615e73B17f2e7e463C8b1" // BEETS BAL-WETH BPT -]; - -const baseTokens = []; - -const baseOwnTokens = [ - bal_base -]; - -const xdaiTokens = []; - -const xdaiOwnTokens = [ - bal_xdai // BAL -]; - -const avaxTokens = [ - ADDRESSES.avax.USDC -]; - -const avaxOwnTokens = [ - bal_avax, //BAL - "0xA39d8651689c8b6e5a9e0AA4362629aeF2c58F55" // 80BAL-20WAVAX BPT -]; - -// Keeping old code because karpatkey's api tends to break -module.exports = treasuryExports({ - ethereum: { - owners: [eth, eth2], - //tokens: ethTokens, - ownTokens: ethOwnTokens - }, - arbitrum: { - owners: [arb], - //tokens: arbTokens, - ownTokens: arbOwnTokens - }, - polygon: { - owners: [pol], - //tokens: polTokens, - ownTokens: polOwnTokens - }, - polygon_zkevm: { - owners: [zkevm], - //tokens: zkevmTokens, - ownTokens: zkevmOwnTokens - }, - optimism: { - owners: [op], - //tokens: opTokens, - ownTokens: opOwnTokens - }, - base: { - owners: [base], - //tokens: baseTokens, - ownTokens: baseOwnTokens - }, - xdai: { - owners: [xdai], - //tokens: xdaiTokens, - ownTokens: xdaiOwnTokens - }, - avax: { - owners: [avax], - //tokens: avaxTokens, - ownTokens: avaxOwnTokens - } -}); - -module.exports.ethereum.tvl = async (api)=>karpatKeyTvl(api, "Balancer DAO", "BAL") \ No newline at end of file diff --git a/projects/treasury/bancor.js b/projects/treasury/bancor.js deleted file mode 100644 index 053db29b9ab..00000000000 --- a/projects/treasury/bancor.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const treasury = "0x649765821D9f64198c905eC0B2B037a4a52Bc373"; - -const BNT = "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C" -const vBNT = "0x48Fb253446873234F2fEBbF9BdeAA72d9d387f94" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.DAI, - "0x967da4048cD07aB37855c090aAF366e4ce1b9F48", - ADDRESSES.ethereum.SNX, - "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", - "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", - "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", - ADDRESSES.ethereum.YFI, - "0x408e41876cCCDC0F92210600ef50372656052a38", - "0x1559FA1b8F28238FD5D76D9f434ad86FD20D1559", - "0xa1faa113cbE53436Df28FF0aEe54275c13B40975", - ADDRESSES.ethereum.BAT, - "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", - ADDRESSES.ethereum.MATIC, - "0x0f71B8De197A1C84d31de0F1fA7926c365F052B3", - "0xBC19712FEB3a26080eBf6f2F7849b417FdD792CA", - "0xc00e94Cb662C3520282E6f5717214004A7f26888", - "0x0d438F3b5175Bebc262bF23753C1E53d03432bDE", - "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", - "0x6710c63432A2De02954fc0f851db07146a6c0312", - ADDRESSES.ethereum.AAVE, - ADDRESSES.ethereum.WBTC, - '0x903bef1736cddf2a537176cf3c64579c3867a881', - '0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6', //ichi - '0x6c6EE5e31d828De241282B9606C8e98Ea48526E2', //hot - '0x275f5Ad03be0Fa221B4C6649B8AeE09a42D9412A', //mona - '0x4a220E6096B25EADb88358cb44068A3248254675', //qnt - '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', //ENS - '0xb9EF770B6A5e12E45983C5D80545258aA38F3B78', //zcn - '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07', //omg - '0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F', //trac - ADDRESSES.ethereum.WSTETH, - '0x4C2e59D098DF7b6cBaE0848d66DE2f8A4889b9C3', //fodl - ADDRESSES.ethereum.MKR, - ], - owners: [treasury], - ownTokens: [BNT, vBNT], - }, -}) diff --git a/projects/treasury/banklessdao.js b/projects/treasury/banklessdao.js deleted file mode 100644 index fd512861b0a..00000000000 --- a/projects/treasury/banklessdao.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const banklessDaoTreasury = "0xf26d1Bb347a59F6C283C53156519cC1B1ABacA51"; -const BANK = "0x2d94AA3e47d9D5024503Ca8491fcE9A2fB4DA198"; -const BED = "0x2aF1dF3AB0ab157e1E2Ad8F88A7D04fbea0c7dc6" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - '0x81f8f0bb1cB2A06649E51913A151F0E7Ef6FA321',//VITA - ADDRESSES.ethereum.RETH,//rETH - ADDRESSES.ethereum.DAI,//DAI - '0x3541A5C1b04AdABA0B83F161747815cd7B1516bC',//KNIGHT - '0xfb5453340C03db5aDe474b27E68B6a9c6b2823Eb',//ROBOT - ADDRESSES.ethereum.WETH,//WETH - '0xFca59Cd816aB1eaD66534D82bc21E7515cE441CF',//RARI - '0x956F47F50A910163D8BF957Cf5846D573E7f87CA',//FEI - '0x0954906da0Bf32d5479e25f46056d22f08464cab',//INDEX - '0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828',//UMA - '0xbC396689893D065F41bc2C6EcbeE5e0085233447',//PERP - '0xD56daC73A4d6766464b38ec6D91eB45Ce7457c44',//PAN - ADDRESSES.ethereum.USDT,//USDT - '0x69af81e73A73B40adF4f3d4223Cd9b1ECE623074',//MASK - '0x3Ec8798B81485A254928B70CDA1cf0A2BB0B74D7',//GRO - ADDRESSES.ethereum.SUSHI,//SUSHI - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT - ], - owners: [banklessDaoTreasury], - ownTokens: [BANK, BED], - }, -}) \ No newline at end of file diff --git a/projects/treasury/bankofcronos.js b/projects/treasury/bankofcronos.js deleted file mode 100644 index 47bf8672d52..00000000000 --- a/projects/treasury/bankofcronos.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const teamTreasury = "0xBacF28BF21B374459C738289559EF89978D08102"; - -const BOC = "0xe5786DDFc4D6DcA0973D1c5b02987cBbac66ed87"; -const pBOC = "0xF93fB4CDB0e40dbF33d2cDbf11D9516f6aDd7e8e"; - -module.exports = treasuryExports({ - cronos: { - tokens: [ - nullAddress, - ADDRESSES.cronos.USDC,//USDC - '0x26043Aaa4D982BeEd7750e2D424547F5D76951d4',//CUSD - ADDRESSES.cronos.WCRO_1,//WCRO - '0xe44Fd7fCb2b1581822D0c862B68222998a0c299a',//WETH - ADDRESSES.cronos.WBTC,//WBTC - ], - owners: [teamTreasury], - // ownTokens: [BOC, pBOC], - }, -}) diff --git a/projects/treasury/baptswap.js b/projects/treasury/baptswap.js deleted file mode 100644 index 7f195d3e7f1..00000000000 --- a/projects/treasury/baptswap.js +++ /dev/null @@ -1,10 +0,0 @@ - -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x6dc7c3b14905bff00bd58cce4b140b86f2bf4814bd72e8c95caec370ed5fe41c"; - -module.exports = treasuryExports({ - aptos: { - owners: [treasury, ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/baseswap.js b/projects/treasury/baseswap.js deleted file mode 100644 index 7009dd14b84..00000000000 --- a/projects/treasury/baseswap.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xAF1823bACd8EDDA3b815180a61F8741fA4aBc6Dd"; - -module.exports = treasuryExports({ - base: { - tokens: [ - nullAddress, - ADDRESSES.base.USDbC, //USDbC - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/battlefly.js b/projects/treasury/battlefly.js deleted file mode 100644 index 5f4c8cc99dd..00000000000 --- a/projects/treasury/battlefly.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.WETH, // WETH - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.optimism.DAI, // DAI - ], - owners: ['0xF5411006eEfD66c213d2fd2033a1d340458B7226'], - ownTokens: ['0x872bAD41CFc8BA731f811fEa8B2d0b9fd6369585', '0x539bde0d7dbd336b79148aa742883198bbf60342'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/beanstalk.js b/projects/treasury/beanstalk.js deleted file mode 100644 index 6aeae1108bb..00000000000 --- a/projects/treasury/beanstalk.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const bean = "0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab"; -const sprout = "0xb7ab3f0667eFF5e2299d39C23Aa0C956e8982235"; -const farms = "0x21DE18B6A8f78eDe6D16C50A167f6B222DC08DF7"; -const tokens = [ - nullAddress, - ADDRESSES.ethereum.SAFE, - ADDRESSES.ethereum.USDC, -]; - -module.exports = treasuryExports({ - ethereum: { - tokens, - owners: [sprout, farms], - ownTokens: [bean], - }, -}); diff --git a/projects/treasury/beefy.js b/projects/treasury/beefy.js deleted file mode 100644 index 3ea03d31998..00000000000 --- a/projects/treasury/beefy.js +++ /dev/null @@ -1,91 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') - -const chains = [ - "fuse", - "celo", - "moonbeam", - "aurora", - "harmony", - "ethereum", - "syscoin", - "metis", - "heco", - "moonriver", - "arbitrum", - "kava", - "oasis", - "cronos", - "optimism", - "fantom", - "bsc", - "polygon", - "avax", - "canto", - "sonic", - "base", - "era", - "berachain", - "mantle", - "xdai", - "scroll", - "mode", - "linea", - "saga" -] - -const chainMap = { - harmony: 'one', - syscoin: 'sys', - oasis: 'emerald', -} - -const getKey = c => chainMap[c] || c - -let config - -async function _getConfig() { - if (!config) config = getConfig('beefy/treasury', 'https://api.beefy.finance/treasury') - return config -} - -chains.forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const balances = {} - let data = (await _getConfig())[getKey(chain)] || {} - const uniV3Owners = [] - const ownerTokens = Object.entries(data) - .filter(i => { - if (i[1]?.name !== 'validators') return true - Object.values(i[1].balances).map(info => { - if (info.address === 'native' && info.assetType === 'validator') - api.add(nullAddress, info.balance) - else api.log('unknown balance', info) - }) - }) - .map(([owner, { balances }]) => { - const tokens = Object.entries(balances).filter(([_, info]) => info.name !== 'BIFI' && info.assetType !== 'concLiquidity').map(i => i[0] === 'native' ? nullAddress : i[0]) - Object.values(balances).filter(info => info.assetType === 'concLiquidity').map(i => uniV3Owners.push(i.address.split('-')[0])) - return [tokens, owner] - }) - if (uniV3Owners.length) await sumTokens2({ api, owners: uniV3Owners, resolveUniV3: true, }) - return sumTokens2({ balances, api, ownerTokens, blacklistedTokens: ['0x8e295789c9465487074a65b1ae9ce0351172393f'], }) - }, - ownTokens: async (api) => { - let BIFI - let data = (await _getConfig())[getKey(chain)] || {} - const owners = [] - Object.entries(data).filter(i => i[0] !== 'validator') - .map(([owner, { balances }]) => { - Object.entries(balances).some(([_, info]) => { - if (info.name !== 'BIFI') return false - BIFI = info.address - owners.push(owner) - }) - }) - if (!BIFI) return {} - return sumTokens2({ api, tokens: [BIFI], owners, blacklistedTokens: ['0x8e295789c9465487074a65b1ae9ce0351172393f'], }) - }, - } -}) \ No newline at end of file diff --git a/projects/treasury/beethovenx.js b/projects/treasury/beethovenx.js deleted file mode 100644 index 37b2ee1d878..00000000000 --- a/projects/treasury/beethovenx.js +++ /dev/null @@ -1,80 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const ftm = "0xa1e849b1d6c2fd31c63eef7822e9e0632411ada7"; -const op = "0x2a185c8a3c63d7bfe63ad5d950244ffe9d0a4b60"; -const eth = "0xea06e1b4259730724885a39ce3ca670efb020e26"; - -const ftmTokens = [ - nullAddress, - ADDRESSES.fantom.USDC, // USDC - "0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE", // BOO - ADDRESSES.fantom.WFTM, // WFTM - "0x91a40c733c97a6e1bf876eaf9ed8c08102eb491f", // lzDAI - ADDRESSES.fantom.USDC_L0, // lzUSDC - "0xcc1b99dDAc1a33c201a742A1851662E87BC7f22C", // lzUSDT - "0xf1648C50d2863f780c57849D812b4B7686031A3D", // lzWBTC - "0x695921034f0387eAc4e11620EE91b1b15A6A09fE", // lzWETH - "0xc5713B6a0F26bf0fdC1c52B90cd184D950be515C", // LINSPIRIT - "0xde5ed76e7c05ec5e4572cfc88d1acea165109e44", // DEUS - "0xc3f069d7439baf6d4d6e9478d9cc77778e62d147", // FLIBERO - "0xf3A602d30dcB723A74a0198313a7551FEacA7DAc", // BPT-QUARTET - "0x56aD84b777ff732de69E85813DAEE1393a9FFE10", // BPT-FOTO-II - "0xe3f201D4676d1Aec0Baa8c70f8f07F14B73B3Aec", // bTAROT - "0x838229095fa83bcd993ef225d01a990e3bc197a8", // BPT-lzFOTO -]; - -const ftmOwnTokens = [ - "0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e", // BEETS - "0x2Cea0dA40cF133721377bB2b0bF4aDc43715BFC3", // BPT-USDCfBEETS - "0xcdE5a11a4ACB4eE4c805352Cec57E236bdBC3837", // BPT-BEETS-FTM -]; - -const opTokens = [ - nullAddress, - ADDRESSES.optimism.OP, // OP - ADDRESSES.optimism.USDC, - "0xFdb794692724153d1488CcdBE0C56c252596735F", // LDO - "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921", // BAL - "0xEf47a07945D53Ee3a511751375A1ed0B79d6232D", // BPT-STABEET-gauge - "0x38f79beFfC211c6c439b0A3d10A0A673EE63AFb4", // BPT-rETH-ETH-gauge - "0x61ac9315a1Ae71633E95Fb35601B59180eC8d61d", // BPT-rETH-ETH-aura-vault - "0x9f43f726dF654E033B04c39989af90ab44875fEB", // BPT-wstETH-ETH-CL-aura-vault - "0x23Ca0306B21ea71552B148cf3c4db4Fc85AE1929", // BPT-3stable - "0x88726Ff53eE2dc7F55C17FBd93521B8B92519f49", // BPT-3stable-gauge -]; - -const opOwnTokens = [ - "0x97513e975a7fA9072c72C92d8000B0dB90b163c5", // BEETS -]; - -const ethTokens = [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - "0x5c6Ee304399DBdB9C8Ef030aB642B10820DB8F56", // B-80BAL-20WETH - "0xc128a9954e6c874ea3d62ce62b468ba073093f25", // veBAL - "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", // auraBAL - "0x3fa73f1e5d8a792c80f426fc8f84fbf7ce9bbcac", // vlAURA - "0xA13a9247ea42D743238089903570127DdA72fE44", // bb-a-USD -]; - -module.exports = treasuryExports({ - fantom: { - owners: [ftm], - tokens: ftmTokens, - ownTokens: ftmOwnTokens, - }, - optimism: { - owners: [op], - tokens: opTokens, - ownTokens: opOwnTokens, - }, - ethereum: { - owners: [eth], - tokens: ethTokens, - ownTokens: [], - }, -}); diff --git a/projects/treasury/benddao.js b/projects/treasury/benddao.js deleted file mode 100644 index 9c9dfe75e07..00000000000 --- a/projects/treasury/benddao.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - '0x4d224452801aced8b2f0aebe155379bb5d594381',//APE - ], - owners: ['0x472FcC65Fab565f75B1e0E861864A86FE5bcEd7B'], - ownTokens: ['0x0d02755a5700414b26ff040e1de35d337df56218'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/benqi.js b/projects/treasury/benqi.js deleted file mode 100644 index e74e28e2726..00000000000 --- a/projects/treasury/benqi.js +++ /dev/null @@ -1,23 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { sumTokens } = require("../helper/sumTokens"); -const { nullAddress } = require("../helper/treasury"); - -const treasury = "0x142eB2ed775e6d497aa8D03A2151D016bbfE7Fc2"; -const treasury2 = "0x9d6ef2445fcc41b0d08865f0a7839490cc58a7b7"; -const owners = [treasury, treasury2] -const qi = "0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5"; - -async function tvl(api) { - const markets = await api.call({ abi: "address[]:getAllMarkets", target: '0x486af39519b4dc9a7fccd318217352830e8ad9b4'}) - const underlyings = (await api.multiCall({ abi: 'address:underlying', calls: markets, permitFailure: true })).map(i => i ?? nullAddress) - const bals = await api.multiCall({ abi: 'uint256:totalReserves', calls: markets}) - api.add(underlyings, bals) - return sumTokens({ api, owners, tokens: [nullAddress] }) -} - -module.exports = { - avax: { - ownTokens: stakings(owners, qi), - tvl - } -} diff --git a/projects/treasury/beradrome.js b/projects/treasury/beradrome.js deleted file mode 100644 index 9c8c5bf7aa9..00000000000 --- a/projects/treasury/beradrome.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const beradromeTreasury = "0xaB53AfB5C63E2552e7bD986c0a38E8a8dC58E09C"; -const oBERO = "0x40A8d9efE6A2C6C9D193Cc0A4476767748E68133"; -const hiBERO = "0x7F0976b52F6c1ddcD4d6f639537C97DE22fa2b69" - - -module.exports = treasuryExports({ - berachain: { - tokens: [ - nullAddress, - "0x5C43a5fEf2b056934478373A53d1cb08030fd382", //BRLY - ADDRESSES.berachain.HONEY, //HONEY - "0x18878Df23e2a36f81e820e4b47b4A40576D3159C", // OHM - "0x231A6BD8eB88Cfa42776B7Ac575CeCAf82bf1E21", //PLUG - ], - owners: [beradromeTreasury], - ownTokens: [oBERO, hiBERO], - }, -}); \ No newline at end of file diff --git a/projects/treasury/betswirl.js b/projects/treasury/betswirl.js deleted file mode 100644 index 06357fd786f..00000000000 --- a/projects/treasury/betswirl.js +++ /dev/null @@ -1,44 +0,0 @@ -const { treasuryExports } = require('../helper/treasury'); - -const betswirlToken = '0x94025780a1aB58868D9B2dBBB775f44b32e8E6e5'; - -module.exports = treasuryExports({ - ethereum: { - owners: ['0x9f72820ee00d54330F9Ba31ff6006116D7ddFE67'], - ownTokens:[betswirlToken], - }, - polygon: { - owners: ['0xfA695010bF9e757a1abCd2703259F419217aa756'], - ownTokens:[betswirlToken], - blacklistedTokens:['0x9246a5F10A79a5a939b0C2a75A3AD196aAfDB43b'] - }, - bsc: { - owners: ['0xCD25325a6eF20BC5dF9bceAc0cC22a48d2e8f6eF'], - ownTokens:[betswirlToken], - blacklistedTokens:['0x3e0a7C7dB7bB21bDA290A80c9811DE6d47781671'] - }, - avax: { - owners: ['0x1a75280F832280Af93f588f715a5Fb4Ca7918430'], - ownTokens: [betswirlToken], - blacklistedTokens: ['0xc763f8570A48c4c00C80B76107cbE744dDa67b79'] - }, - arbitrum: { - owners: ['0xf14C79a7fA22c1f97C779F573c9bF39b6b43381c'], - ownTokens: [betswirlToken], - blacklistedTokens: ['0xe26Ae3d881f3d5dEF58D795f611753804E7A6B26'] - }, - xdai: { - owners: ['0x6e36cFcD5d59b96AaBC8699C2Ad31a874224D86e'] - }, - base: { - owners: ['0xBf1998e1F1cD52fBfb63e7E646bb39c091A7B70A'], - ownTokens: [betswirlToken], - }, - optimism: { - owners: ['0xE901680E2E754Fc97288631dc29D91f7a989Cc10'] - }, - unichain: { - owners: ['0xBf1998e1F1cD52fBfb63e7E646bb39c091A7B70A'] - } -}) - diff --git a/projects/treasury/bhutan-gov.js b/projects/treasury/bhutan-gov.js deleted file mode 100644 index 0e3e15206e3..00000000000 --- a/projects/treasury/bhutan-gov.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ], - owners: [ - '0xA4aA40042EfC208fA5F329485a5B3Aa569DF66C7', - '0x9bfc2038C0CECC85b2dAb0e4ff9e4FfdAdE58036', - '0x713d0c63492B156E5d7B59AB96A3895312a6939a', - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/bim.js b/projects/treasury/bim.js deleted file mode 100644 index 2c4c1979ca0..00000000000 --- a/projects/treasury/bim.js +++ /dev/null @@ -1,13 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const treasuryAddress = "0xcc0516d2B5D8E156890D894Ee03a42BaC7176972"; - -module.exports = treasuryExports({ - base: { owners: [treasuryAddress], ownTokens: ['0x555FFF48549C1A25a723Bd8e7eD10870D82E8379']}, - optimism: { owners: [treasuryAddress], }, - xdai: { owners: [treasuryAddress] }, - polygon: { owners: [treasuryAddress] }, - bsc: { owners: [treasuryAddress] }, - arbitrum: { owners: [treasuryAddress] }, - ethereum: { owners: [treasuryAddress] } -}) \ No newline at end of file diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js deleted file mode 100644 index ef471f8be55..00000000000 --- a/projects/treasury/bitdao.js +++ /dev/null @@ -1,76 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { nullAddress } = require("../helper/treasury"); -const { getConfig } = require('../helper/cache') - -const API_URL = 'https://api.mantle.xyz/api/v2/treasury/tokens'; -const MNT = '0x3c3a81e81dc49a522a592e7622a7e711c06bf354'; -const USDe = ADDRESSES.ethereum.USDe; -const COOK = '0x9f0c013016e8656bc256f948cd4b79ab25c7b94d' -const ethenaFarm = '0x8707f238936c12c309bfc2b9959c35828acfc512'; -const SPECIFIC_TOKENS = ['eth', 'ethena-farming-usde', 'eigen-layer-eth', 'mnt']; - -const abi = "function stakes(address, address) view returns (uint256 stakedAmount, uint152 coolingDownAmount, uint104 cooldownStartTimestamp)"; - -const isSpecificToken = token => SPECIFIC_TOKENS.includes(token); - -const getEthenaFarmingBalance = async (api, wallet) => { - const { stakedAmount, coolingDownAmount } = await api.call({ target: ethenaFarm, params: [wallet, USDe], abi }); - return Number(stakedAmount) + Number(coolingDownAmount); -}; - -const getTvlData = async (api, key) => { - const data = await getConfig('mantle-treasury', API_URL) - const rawDatas = data.filter(({ chain }) => key === chain); - const datas = rawDatas.map(({ id, walletAddress, amount }) => ({ id, walletAddress, amount })); - - const wallets = Object.values( - datas.reduce((acc, { id, walletAddress, amount }) => { - acc[walletAddress] = acc[walletAddress] || { owner: walletAddress, tokens: [] }; - acc[walletAddress].tokens.push({ address: id, amount }); - return acc; - }, {}) - ); - - const uniqueOwners = new Set(); - const uniqueTokens = new Set(); - - for (const { owner, tokens } of wallets) { - const eigenLayerToken = tokens.find(token => token.address === 'eigen-layer-eth'); - if (tokens.some(token => token.address === 'eth')) api.add(nullAddress, (await sdk.api.eth.getBalance({ target: owner })).output); - if (tokens.some(token => token.address === 'mnt')) api.add(MNT, (await sdk.api.eth.getBalance({ target: owner })).output, { skipChain: true }); - if (tokens.some(token => token.address === 'ethena-farming-usde')) api.add(USDe, await getEthenaFarmingBalance(api, owner)); - if (eigenLayerToken) api.add(nullAddress, eigenLayerToken.amount * 10 ** 18); - - const nonSpecificTokens = tokens.filter(token => !isSpecificToken(token.address)); - if (nonSpecificTokens.length > 0) { - uniqueOwners.add(owner); - nonSpecificTokens.forEach(token => uniqueTokens.add(token.address)); - } - } - - return { owners: Array.from(uniqueOwners), tokens: Array.from(uniqueTokens) }; -}; - -module.exports = { - ethereum: { - tvl: sdk.util.sumChainTvls([async ({ api }) => { - const { owners, tokens } = await getTvlData(api, 'eth') - return api.sumTokens({ owners, tokens, blacklistedTokens: [MNT] }); - }]), - ownTokens: async ({ api }) => { - const { owners } = await getTvlData(api, 'eth') - return api.sumTokens({ ownerTokens: owners.map(owner => [[MNT], owner]) }); - } - }, - mantle: { - tvl: async (api) => { - const { owners, tokens } = await getTvlData(api, 'mnt') - return api.sumTokens({ owners, tokens, blacklistedTokens: [COOK] }); - }, - ownTokens: async ({ api }) => { - const { owners } = await getTvlData(api, 'mnt') - return api.sumTokens({ ownerTokens: owners.map(owner => [[COOK], owner]) }); - } - }, -} diff --git a/projects/treasury/bitsCrunch.js b/projects/treasury/bitsCrunch.js deleted file mode 100644 index be12526a2f3..00000000000 --- a/projects/treasury/bitsCrunch.js +++ /dev/null @@ -1,13 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const bitsCrunchTreasury = "0xf42c74D82a42a7BEC7565c5a866Baca11260F0AF"; - -const BCUT = "0xBEF26Bd568e421D6708CCA55Ad6e35f8bfA0C406"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [nullAddress], - owners: [bitsCrunchTreasury], - ownTokens: [BCUT], - }, -}); diff --git a/projects/treasury/blazestake.js b/projects/treasury/blazestake.js deleted file mode 100644 index b961599fbc9..00000000000 --- a/projects/treasury/blazestake.js +++ /dev/null @@ -1,13 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - "5sGFdNkBfbMxipRxBo28ZjTC9cEFmQPdC3Smk2gM8DVM", - "4y86xvbDuyiJaxSYuMUNB5NzRYGfY4knvZJXmmAYTNmJ", - "DfeAPX17JhfVpz5i2BiSaVhSereFQ8GoWABDw2v8p74j", - "3SUtLuJVqaTVPnN38bQm6tc6v9kAMXg6Gg4SLuctMxK6" - ], - ownTokens: ["BLZEEuZUBVqFhj8adcCFPJvPVCiCyVmh3hkJMrU8KuJA"] - }, -}) diff --git a/projects/treasury/bonsai.js b/projects/treasury/bonsai.js deleted file mode 100644 index af5e372c30a..00000000000 --- a/projects/treasury/bonsai.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const arbitrumAddresses = [ - "0xb137d135Dc8482B633265c21191F50a4bA26145d", // Main treasury - "0x8E52cA5A7a9249431F03d60D79DDA5EAB4930178", // Arbitrum DAO delegate - "0xB0B4bd94D656353a30773Ac883591DDBaBC0c0bA", // Old ARBIs multisig - "0x4e5645bee4eD80C6FEe04DCC15D14A3AC956748A" // Multisig collecting vaults fees -]; -const ethAddresses = "0x9478D820E8d38Ca96610b7FCbE377822C2F60f2c" - -const ownTokens = [ - "0x79EaD7a012D97eD8DeEcE279f9bC39e264d7Eef9", // Bonsai -]; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, // ETH - ADDRESSES.arbitrum.fsGLP, - ADDRESSES.arbitrum.fGLP, - ADDRESSES.arbitrum.USDC, // USDC.e - ADDRESSES.arbitrum.USDC_CIRCLE, // USDC - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.GMX, - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.WBTC, - "0xe4dddfe67e7164b0fe14e218d80dc4c08edc01cb", // KNC - ADDRESSES.arbitrum.LINK, // LINK - "0x56659245931cb6920e39c189d2a0e7dd0da2d57b", // IBEX - "0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0", // UNI - "0x55ff62567f09906a85183b866df84bf599a4bf70", // KROM - "0x3d9907f9a368ad0a51be60f7da3b97cf940982d8", // GRAIL - "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL - "0x3e6648c5a70a150a88bce65f4ad4d506fe15d2af", // spell - "0x10010078a54396f62c96df8532dc2b4847d47ed3", // hnd - "0x32eb7902d4134bf98a28b963d26de779af92a212", // rpdx - "0xd4d42f0b6def4ce0383636770ef773390d85c61a", // sushi - "0x2cab3abfc1670d1a452df502e216a66883cdf079", // l2dao - "0x539bde0d7dbd336b79148aa742883198bbf60342", // magic - "0x6694340fc020c5e6b96567843da2df01b2ce1eb6", // stg - ], - owners: arbitrumAddresses, - ownTokens, - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, // usdc - ], - owners: [ethAddresses] - }, -}); diff --git a/projects/treasury/bonzo.js b/projects/treasury/bonzo.js deleted file mode 100644 index 53706421bc5..00000000000 --- a/projects/treasury/bonzo.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getConfig } = require('../helper/cache') -const ADDRESSES = require('../helper/coreAssets.json') - -const tvl = async (api) => { - const { reserves } = await getConfig('bonzo-treasury', "https://data.bonzo.finance/market"); - const treasury = '0x00000000000000000000000000000000005dc4d4' - const tokens = reserves.map(reserve => [reserve.evm_address, reserve.atoken_address ]).flat() - tokens.push(ADDRESSES.null) - return api.sumTokens({ owner: treasury, tokens }) -}; - -module.exports = { - methodology: "The Treasury holds aToken balances, but reports using corresponding HTS token addresses to facilitate proper USD value calculations by DeFi Llama's pricing API.", - hedera: { - tvl - } -}; diff --git a/projects/treasury/botto.js b/projects/treasury/botto.js deleted file mode 100644 index 454e07742a0..00000000000 --- a/projects/treasury/botto.js +++ /dev/null @@ -1,16 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); -const { nullAddress } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - owners: [ - '0x000a837ddd815bcba0fa91a98a50aa7a3fa62c9c', - '0x35bb964878d7b6ddfa69cf0b97ee63fa3c9d9b49', - '0xfd25808FFffbEf621C4DBf0171Fa647c916CB33b', - ], - tokens: [ - nullAddress, - ], - ownTokens: ["0x9DFAD1b7102D46b1b197b90095B5c4E9f5845BBA"], // Botto - }, -}) \ No newline at end of file diff --git a/projects/treasury/brewlabs.js b/projects/treasury/brewlabs.js deleted file mode 100644 index 0de60cd15c4..00000000000 --- a/projects/treasury/brewlabs.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const bscTreasury = "0x5Ac58191F3BBDF6D037C6C6201aDC9F99c93C53A"; -const ethTreasury = "0x64961Ffd0d84b2355eC2B5d35B0d8D8825A774dc"; -const polygonTreasury = "0x3f0DaF02b9cF0DBa7aeF41C1531450Fda01E8ae9"; -const BREWLABS = "0x6aAc56305825f712Fd44599E59f2EdE51d42C3e7"; -const ethBREWLABS = "0xdAd33e12e61dC2f2692F2c12e6303B5Ade7277Ba"; - - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.BUSD,//busd - ADDRESSES.bsc.WBNB,//wbnb - ADDRESSES.bsc.USDT,//bsc-usd - '0x9d7107c8E30617CAdc11f9692A19C82ae8bbA938',//roo - '0xF14D3692B0055Db9Ca4c04065165d59B87E763f1',//mbc - '0xe91a8D2c584Ca93C7405F15c22CdFE53C29896E3',//dext - '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82',//cake - ], - owners: [bscTreasury], - ownTokens: [BREWLABS], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - '0x4FD51Cb87ffEFDF1711112b5Bd8aB682E54988eA',//wpt - ADDRESSES.ethereum.USDT, - '0x235C8EE913d93c68D2902a8e0b5a643755705726',//bag - ADDRESSES.ethereum.WETH, - '0x9d7107c8E30617CAdc11f9692A19C82ae8bbA938',//roo - '0x089729b0786C8803cff972c16e402f3344d079eA',//bgpt - ], - owners: [ethTreasury], - ownTokens: [ethBREWLABS], - }, - polygon: { - tokens: [ - nullAddress, - ], - owners: [polygonTreasury], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/btcst.js b/projects/treasury/btcst.js deleted file mode 100644 index f27d3c17538..00000000000 --- a/projects/treasury/btcst.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking, } = require("../helper/staking"); - -const treasuryContract = "0xAd3784cD071602d6c9c2980d8e0933466C3F0a0a"; -const BTCST = "0x78650B139471520656b9E7aA7A5e9276814a38e9"; - -module.exports = { - bsc: { - tvl: () => 0, - ownTokens: staking(treasuryContract, BTCST) - }, -}; diff --git a/projects/treasury/camelot.js b/projects/treasury/camelot.js deleted file mode 100644 index 93095c1a398..00000000000 --- a/projects/treasury/camelot.js +++ /dev/null @@ -1,16 +0,0 @@ - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x03ff2d78afb69e0859ec6beb4cf107d3741e97ab"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ - '0x3d9907f9a368ad0a51be60f7da3b97cf940982d8', - ], - tokens: [ - '0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60', - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/cap.js b/projects/treasury/cap.js deleted file mode 100644 index d02000cb4c0..00000000000 --- a/projects/treasury/cap.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') - -const contracts = { - "treasury": "0x283C41b726634fBD6B72aA22741B202DB7E56aaC", - "treasuryV2": "0x1058AFe66BB5b79C295CCCE51016586949Bc4e8d", - "treasuryBase": "0x764E7f8798D8193bEd69030AE66eb304968C3F93" -}; -const cap = "0x031d35296154279dc1984dcd93e392b1f946737b"; -const usdc = ADDRESSES.arbitrum.USDC; - - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [usdc, contracts.treasury], - [nullAddress, contracts.treasury], - [nullAddress, contracts.treasuryV2], - ] - }), - }, - base: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [nullAddress, contracts.treasuryBase], - ] - }), - } -}; \ No newline at end of file diff --git a/projects/treasury/cardano.js b/projects/treasury/cardano.js deleted file mode 100644 index 0772cbf9b7c..00000000000 --- a/projects/treasury/cardano.js +++ /dev/null @@ -1,13 +0,0 @@ -const { get } = require('../helper/http'); - -module.exports = { - cardano: { - tvl: () => ({}), - ownTokens: async ()=>{ - const epochs = await get("https://api.koios.rest/api/v1/totals") - return { - "coingecko:cardano": Number(epochs[0].treasury)/1e6 - } - } - }, -}; \ No newline at end of file diff --git a/projects/treasury/cat-in-a-box.js b/projects/treasury/cat-in-a-box.js deleted file mode 100644 index 57db7dc595d..00000000000 --- a/projects/treasury/cat-in-a-box.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ], - owners: ['0x98e6475C01D018Ae78c02ef48738f687538226Af'], - ownTokens: ['0x7690202e2C2297bcD03664e31116d1dFfE7e3B73'], - resolveUniV3: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/cerberusdao.js b/projects/treasury/cerberusdao.js deleted file mode 100644 index a869183ff5d..00000000000 --- a/projects/treasury/cerberusdao.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require("../cerberusdao/index"); - -delete module.exports.ethereum.staking \ No newline at end of file diff --git a/projects/treasury/chaintools.js b/projects/treasury/chaintools.js deleted file mode 100644 index f02a914fd93..00000000000 --- a/projects/treasury/chaintools.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const MULTISIG_ADDRESS = "0xb0Df68E0bf4F54D06A4a448735D2a3d7D97A2222"; -const CTLS_ADDRESS = "0xE155F64B9aD8c81318c313196a60c72e72fD2cD1"; -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - deadFrom: '10-04-2024', - ethereum: { - tvl: sumTokensExport({ owners: [MULTISIG_ADDRESS,], tokens: [ADDRESSES.ethereum.WETH, ADDRESSES.null, ADDRESSES.ethereum.USDC,], }), - ownTokens: sumTokensExport({ owners: [MULTISIG_ADDRESS,], tokens: [CTLS_ADDRESS, ], }), - }, -}; diff --git a/projects/treasury/citycoins.js b/projects/treasury/citycoins.js deleted file mode 100644 index bfd18b0b9a7..00000000000 --- a/projects/treasury/citycoins.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/sumTokens') - -const NYC_DAO_TREASURY = 'SP8A9HZ3PKST0S42VM9523Z9NV42SZ026V4K39WH.ccd002-treasury-nyc-mining-v2' -const MIAMI_REWARDS = 'SP8A9HZ3PKST0S42VM9523Z9NV42SZ026V4K39WH.ccd002-treasury-mia-rewards-v3' - -module.exports = { - stacks: { - tvl: sumTokensExport({ - owners: [NYC_DAO_TREASURY, MIAMI_REWARDS], - tokens: [nullAddress] - }), - }, -}; \ No newline at end of file diff --git a/projects/treasury/clone.js b/projects/treasury/clone.js deleted file mode 100644 index 5d14ac9dcda..00000000000 --- a/projects/treasury/clone.js +++ /dev/null @@ -1,10 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - 'GPJyF8fTgKKPykRW1XSrXiEXdJTJLHnhUqdDyyek66Z', - ], - ownTokens: [] - }, -}) \ No newline at end of file diff --git a/projects/treasury/colony.js b/projects/treasury/colony.js deleted file mode 100644 index 2d00f956f67..00000000000 --- a/projects/treasury/colony.js +++ /dev/null @@ -1,87 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') -const { mergeExports } = require('../helper/utils'); - -const CLY = "0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6"; - -const COLONY_NODE_ID = "NodeID-2iWqUM3VWvrcTLyXi2KgBLVhunMvFW7vY" -const AVALANCHE_P_RPC_URL = "https://api.avax.network/ext/bc/P" - -const liquidityProvisionWallet = "0x024b14d4054988600e0C1a35e46B5df40157fd59" -const reserveTreasuryWallet = "0x6E3bb989dffdD8136d8CE78eA5ACA3f1578429F4" - -async function getValidatorData(nodeId) { - const response = await fetch(AVALANCHE_P_RPC_URL, { - method: "POST", - headers: { - "Content-Type": "application/json" - }, - body: JSON.stringify({ - "jsonrpc": "2.0", - "method": "platform.getCurrentValidators", - "params": { - "nodeIDs": [nodeId] - }, - "id": 1 - }) - }) - - if (!response.ok || response.status !== 200) { - return null - } - - const responseJson = await response.json() - if (responseJson.result === undefined || responseJson.result.validators === undefined) { - return null - } - - return responseJson.result.validators[0] -} - -async function tvl(api) { - const validator = await getValidatorData(COLONY_NODE_ID) - if (validator === null) { - console.log("failed to fetch colony validator data") - return api.getBalances() - } - - const colonyStakeAmount = validator.stakeAmount - const colonyStakeAmountInWei = colonyStakeAmount * 1e9 // Avalanche P-Chain uses nanoAVAX - - api.add(nullAddress, colonyStakeAmountInWei) - - return api.getBalances() -} - -module.exports = treasuryExports({ - avax: { - tokens: [ - nullAddress, - ADDRESSES.avax.USDC, - ADDRESSES.avax.WAVAX, - "0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5", // QI - "0x48f88a3fe843ccb0b5003e70b4192c1d7448bef0", // CAI - "0x8af94528fbe3c4c148523e7aad48bcebcc0a71d7", // ATF - "0xaaab9d12a30504559b0c5a9a5977fee4a6081c6b", // PHAR - "0x2323dAC85C6Ab9bd6a8B5Fb75B0581E31232d12b", // USDC (DeltaPrime) - "0xD26E504fc642B96751fD55D3E68AF295806542f5", // WAVAX (DeltaPrime) - "0x093783055f9047c2bff99c4e414501f8a147bc69", // ALOT - ADDRESSES.avax.BTC_b, - ADDRESSES.avax.WETH_e, - "0xed2b42d3c9c6e97e11755bb37df29b6375ede3eb", // HON - "0x22d4002028f537599be9f666d1c4fa138522f9c8", // PTP - "0x449674b82f05d498e126dd6615a1057a9c088f2c", // LOST - "0x0B2777b0c55AEaAeb56E86B6eEFa6cC2Cfa00e07", // CLY-WAVAX (Trader Joe) - "0xE5e9d67e93aD363a50cABCB9E931279251bBEFd0", // CAI-WAVAX (Trader Joe) - "0x997B92C4c9d3023C11A937eC322063D952337236", // CLY-WAVAX (Pangolin) - "0xEF985c9128f39677c6d4CE2A235B1a2B8c491f39", // CLY-WAVAX (SteakHut) - "0x078daD8fAC6bef1D83445D41868F6339E8dF269e", // CAI-WAVAX (SteakHut) - ], - owners: [liquidityProvisionWallet, reserveTreasuryWallet], - ownTokens: [CLY], - }, -}) - -module.exports = mergeExports([module.exports, { - avax: { tvl } -}]) diff --git a/projects/treasury/commonwealth.js b/projects/treasury/commonwealth.js deleted file mode 100644 index 3a99df4e7e4..00000000000 --- a/projects/treasury/commonwealth.js +++ /dev/null @@ -1,13 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const owners = [ - '0xdE70B8BC5215BdF03f839BB8cD0F639D4E3E2881', - '0xA205fD6A798A9Ba8b107A00b8A6a5Af742d6aCb5', - '0x990eCdf73704f9114Ee28710D171132b5Cfdc6f0', - '0xa653879692D4D0e6b6E0847ceDd58eAD2F1CC136' -] - -const WLTH = '0x99b2B1A2aDB02B38222ADcD057783D7e5D1FCC7D'; -module.exports = treasuryExports({ - base: { owners, ownTokens: [WLTH], }, -}) diff --git a/projects/treasury/compound.js b/projects/treasury/compound.js deleted file mode 100644 index c82595909ed..00000000000 --- a/projects/treasury/compound.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B"; -const treasury2 = "0x6d903f6003cca6255d85cca4d3b5e5146dc33925" -const vestingAddress = "0x2775b1c75658Be0F640272CCb8c72ac986009e38"; -const COMP = "0xc00e94Cb662C3520282E6f5717214004A7f26888"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9',//cUSDT - '0xE41d2489571d322189246DaFA5ebDe1F4699F498',//zrx - '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC - '0xc00e94Cb662C3520282E6f5717214004A7f26888', - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.UNI, - ADDRESSES.ethereum.DAI - ], - owners: [treasury, vestingAddress, treasury2], - ownTokens: [COMP], - }, -}) \ No newline at end of file diff --git a/projects/treasury/contango.js b/projects/treasury/contango.js deleted file mode 100644 index 860f2d1665e..00000000000 --- a/projects/treasury/contango.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryARB = "0x643178CF8AEc063962654CAc256FD1f7fe06ac28" - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasuryARB], - }, -}); diff --git a/projects/treasury/convex.js b/projects/treasury/convex.js deleted file mode 100644 index 13a0b3883dc..00000000000 --- a/projects/treasury/convex.js +++ /dev/null @@ -1,99 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); -const { mergeExports } = require('../helper/utils'); - -const convexTreasuryVault = "0x1389388d01708118b497f59521f6943Be2541bb7"; - -const treasuryManagerPositions = [{ - type: 'convex-curve-lp', - manager: '0xa25B17D7deEE59f9e326e45cC3C0C1B158E74316', // #1 - curveLpStakingContract: '0x39D78f11b246ea4A1f68573c3A5B64E83Cff2cAe', // cvxCRV/CRV -}, { - type: 'convex-curve-lp', - manager: '0xeB8121b44a290eE16981D87B92fc16b2366dE6B3', // #2 - curveLpStakingContract: '0x19F3C877eA278e61fE1304770dbE5D78521792D2', // cvxFXS/FXS -}, { - type: 'convex-frax-curve-lp', - manager: '0x9d464B601f74C8d3d42379921106B907F1055F80', // #3 - fraxCurveLpStakingContract: '0xb01BaB994b52A37a231551f00a1B7cAcd43bc8C9', // frxETH/CVX - vaultAddress: '0x56f08393ff2e4E6b89E130646C6E7F52Af3499e5', -}, { - type: 'convex-fx-curve-lp', - manager: '0x8BE4Ec802E8Ad5Ebf8324FC81aEa03980457eDcC', // #4 - fxGauge: '0xfEFafB9446d84A9e58a3A2f2DDDd7219E8c94FbB', // FXN/cvxFXN - vaultAddress: '0x83dcBF8B0E90343FbE148F221e8f243bd16eCF46', -}, { - type: 'convex-prisma-curve-lp', - manager: '0xD60cd4AD7A2D6bF4eC9fccbCAeec769b52726dfd', // #5 - prismaLpStakingContract: '0xd91fBa4919b7BF3B757320ea48bA102F543dE341', // cvxPRISMA/PRISMA -}, { - type: 'convex-curve-lend-lp', - manager: '0x04Dd97255ddeE29c941D85F5B5cdE6ace8BD207f', // #6 - curveLpStakingContract: '0x68e400d058D4c0066344D1B3F392878e993B38Ab', // cvxCRV/CRV - lendVault: '0x4a7999c55d3a93dAf72EA112985e57c2E3b9e95D', -}] - -async function tvl(api) { - const tokensAndOwners = [] - for (const treasuryManagerPosition of treasuryManagerPositions) { - if (treasuryManagerPosition.type === 'convex-curve-lp') { - const { manager, curveLpStakingContract } = treasuryManagerPosition; - tokensAndOwners.push([curveLpStakingContract, manager]); - } else if (treasuryManagerPosition.type === 'convex-frax-curve-lp') { - const { vaultAddress, fraxCurveLpStakingContract } = treasuryManagerPosition; - await genericUnwrapCvxFraxFarm({ api, owner: vaultAddress, farm: fraxCurveLpStakingContract }); - } else if (treasuryManagerPosition.type === 'convex-fx-curve-lp') { - const { vaultAddress, fxGauge } = treasuryManagerPosition; - tokensAndOwners.push([fxGauge, vaultAddress]); - } else if (treasuryManagerPosition.type === 'convex-prisma-curve-lp') { - const { manager, prismaLpStakingContract } = treasuryManagerPosition; - await genericUnwrapCvxPrismaPool({ api, owner: manager, pool: prismaLpStakingContract }); - } else if (treasuryManagerPosition.type === 'convex-curve-lend-lp') { - const { manager, curveLpStakingContract, lendVault } = treasuryManagerPosition; - await genericUnwrapCvxCurveLendRewardPool({ api, owner: manager, rewardsContract: curveLpStakingContract, lendVault }); - } - } - return genericUnwrapCvxRewardPool({ api, tokensAndOwners }); -} - -async function genericUnwrapCvxCurveLendRewardPool({ api, owner, rewardsContract, lendVault }) { - const bal = await api.call({ target: rewardsContract, params: owner, abi: 'erc20:balanceOf' }) - const asset = await api.call({target: lendVault, abi: 'address:asset'}) - const pricePerShare = await api.call({ target: lendVault, abi: 'uint256:pricePerShare'}) - api.add(asset, bal * pricePerShare / 1e18) -} - -async function genericUnwrapCvxPrismaPool({ api, owner, pool, balances }) { - const bal = await api.call({ abi: 'erc20:balanceOf', target: pool, params: owner }) - const lpToken = await api.call({ abi: 'address:lpToken', target: pool }) - api.add(lpToken, bal) -} - - -async function genericUnwrapCvxFraxFarm({ api, owner, farm, balances }) { - if (!balances) balances = await api.getBalances() - const bal = await api.call({ abi: "function lockedLiquidityOf(address) view returns (uint256)", target: farm, params: owner }) - const fraxToken = await api.call({ abi: 'function stakingToken() view returns (address)', target: farm }) - const curveToken = await api.call({ abi: 'function curveToken() view returns (address)', target: fraxToken }) - api.add(curveToken, bal) -} - - -async function genericUnwrapCvxRewardPool({ api, tokensAndOwners }) { - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: tokensAndOwners.map(i => i[0]) }) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(i => ({ target: i[0], params: i[1] })) }) - api.add(tokens, bals) - return api.getBalances() -} - -module.exports = mergeExports([treasuryExports({ - ethereum: { - owners: [convexTreasuryVault], - ownTokens: [ADDRESSES.ethereum.CVX], - }, -}), { - timetravel: false, // treasuryManagerPositions match the latest contracts and positions, so wouldn't work nor be accurate for past blocks - ethereum: { - tvl, - }, -}]); diff --git a/projects/treasury/cowswap.js b/projects/treasury/cowswap.js deleted file mode 100644 index 278dbeca21f..00000000000 --- a/projects/treasury/cowswap.js +++ /dev/null @@ -1,12 +0,0 @@ -const { karpatKeyTvl } = require('../helper/karpatkey'); -const { sumTokensExport } = require('../helper/unknownTokens'); - -module.exports={ - ethereum:{ - tvl: async (api)=>karpatKeyTvl(api, "CoW DAO", "COW"), - ownTokens: sumTokensExport({ - tokens: ["0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab"], - owners: ["0xca771eda0c70aa7d053ab1b25004559b918fe662"], - }) - } - } \ No newline at end of file diff --git a/projects/treasury/crabada.js b/projects/treasury/crabada.js deleted file mode 100644 index bf57db68b18..00000000000 --- a/projects/treasury/crabada.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const CRA = "0xa32608e873f9ddef944b24798db69d80bbb4d1ed"; - -const treasuryContracts = [ - //mains treasury - "0x96DD95307295e2f72E6382Fc5130F1A8DB74042C", - // Breeding fees - "0x4e57A39Cac2499aBeafd3698F7164eCBFde008eE", - // Marketplace fees - "0x49F6fC3f882e2Cd915E38bA377f8e977c11e0F66", - // Tavern fees - "0x2BA9033E49EC1aa030fA46DE6d6793983945497E", -]; - -const lpTokens = [ - "0xf693248F96Fe03422FEa95aC0aFbBBc4a8FdD172", //TUS - "0x140CAc5f0e05cBEc857e65353839FddD0D8482C1", // WAVAX-CRA JLP - "0x565d20BD591b00EAD0C927e4b6D7DD8A33b0B319", // WAVAX-TUS JLP - "0x21889033414f652f0fD0e0f60a3fc0221d870eE4", // CRA-TUS JLP - "0x134905461773eF228b66CEBd5E1FF06D7CC79B12", // TUS-CRAM JLP - ADDRESSES.avax.USDC_e // USDC -]; - -module.exports = { - avax: { - tvl: staking(treasuryContracts, lpTokens), - ownTokens: staking(treasuryContracts, [CRA]), - }, -}; diff --git a/projects/treasury/cream-finance.js b/projects/treasury/cream-finance.js deleted file mode 100644 index 89e28c3dfb3..00000000000 --- a/projects/treasury/cream-finance.js +++ /dev/null @@ -1,17 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x6D5a7597896A703Fe8c85775B23395a48f971305"; -const CREAM = "0x2ba592F78dB6436527729929AAf6c908497cB200"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - "0xc00e94Cb662C3520282E6f5717214004A7f26888",//comp - "0x49D72e3973900A195A155a46441F0C08179FdB64",//CRETH2 - ], - owners: [treasury], - ownTokens: [CREAM], - }, -}) diff --git a/projects/treasury/croblanc.js b/projects/treasury/croblanc.js deleted file mode 100644 index a0d35251600..00000000000 --- a/projects/treasury/croblanc.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const treasury = "0xb20234c33337537111f4ab6f5EcaD400134aC143"; -const WCRO = ADDRESSES.cronos.WCRO_1; - -module.exports = { - cronos: { - tvl: staking(treasury, WCRO), - }, -}; diff --git a/projects/treasury/cryptex.js b/projects/treasury/cryptex.js deleted file mode 100644 index 5d7abdcf619..00000000000 --- a/projects/treasury/cryptex.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryARB = "0x9474b771fb46e538cfed114ca816a3e25bb346cf"; -const treasuryETH = "0xa54074b2cc0e96a43048d4a68472F7F046aC0DA8" -const treasury2 = "0xa70b638B70154EdfCbb8DbbBd04900F328F32c35" -const ctx = "0x321C2fE4446C7c963dc41Dd58879AF648838f98D" -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasuryARB], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.LINK - ], - owners: [treasuryETH, treasury2], - ownTokens: [ctx], - - }, -}) \ No newline at end of file diff --git a/projects/treasury/cryptodickbutts.js b/projects/treasury/cryptodickbutts.js deleted file mode 100644 index 49da62aeae8..00000000000 --- a/projects/treasury/cryptodickbutts.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const treasury = "0xf14d484b29a8ac040feb489afadb4b972422b4e9"; -const dick = "0x22BDc8Ad19aE84d9327E81FAD4F5973b91fbaA60" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT,//TETHER - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.WETH, - "0x6d3D490964205c8bC8DeD39e48e88E8Fde45b41f", - "0x0000000000A39bb272e79075ade125fd351887Ac", - ADDRESSES.ethereum.DAI - ], - owners: [treasury], - ownTokens: [dick], - - }, -}) \ No newline at end of file diff --git a/projects/treasury/csrfi.js b/projects/treasury/csrfi.js deleted file mode 100644 index 835b7c0caa7..00000000000 --- a/projects/treasury/csrfi.js +++ /dev/null @@ -1,13 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const treasury = "0x8dD3547A42e7FE5aE30B8dC42C570ebE6838dFA2"; - - -module.exports = treasuryExports({ - canto: { - tokens: [ - nullAddress - ], - owners: [treasury] - }, -}) \ No newline at end of file diff --git a/projects/treasury/cthulhufinance.js b/projects/treasury/cthulhufinance.js deleted file mode 100644 index 758e6fe9fac..00000000000 --- a/projects/treasury/cthulhufinance.js +++ /dev/null @@ -1,15 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x371405Aea16D5916703C74580247196BA9EA531F"; -const CTH = "0xF8e943f646816e4B51279B8934753821ED832Dca"; - - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress - ], - owners: [treasury], - ownTokens: [CTH], - }, -}) diff --git a/projects/treasury/cubo.js b/projects/treasury/cubo.js deleted file mode 100644 index 86451c3f43c..00000000000 --- a/projects/treasury/cubo.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryContract = "0xb495ffc5acd7e2fd909c23c30d182e6719fbe9ec"; -const CUBO_TOKEN = "0x381d168DE3991c7413d46e3459b48A5221E3dfE4"; -const DAI = ADDRESSES.polygon.DAI -const DRAGON_QUICK = '0xf28164a485b0b2c90639e47b0f377b4a438a16b1' -const MOO_CRV_TriCrypto = '0x5A0801BAd20B6c62d86C566ca90688A6b9ea1d3f' -const MOO_AM3CRV = '0xAA7C2879DaF8034722A0977f13c343aF0883E92e' - - -module.exports = treasuryExports({ - polygon: { - tokens: [ - nullAddress, - DAI, DRAGON_QUICK, MOO_CRV_TriCrypto, MOO_AM3CRV, - ], - owners: [treasuryContract], - ownTokens: [CUBO_TOKEN], - }, -}) \ No newline at end of file diff --git a/projects/treasury/curve.js b/projects/treasury/curve.js deleted file mode 100644 index 61939f23cd8..00000000000 --- a/projects/treasury/curve.js +++ /dev/null @@ -1,13 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x25877b9413cc7832a6d142891b50bd53935fef82"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ ], - tokens: [ - nullAddress, - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/cvi.js b/projects/treasury/cvi.js deleted file mode 100644 index b783f75290a..00000000000 --- a/projects/treasury/cvi.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x7f4b135782c4a3b1c78c93f23f2016cb5cd96cc8"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/d8x.js b/projects/treasury/d8x.js deleted file mode 100644 index 5fa653eb8b4..00000000000 --- a/projects/treasury/d8x.js +++ /dev/null @@ -1,8 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - polygon_zkevm: { - owners: ['0x097A5e756568420Ae638d66377f120F16D12cCb4'], - ownTokens: ['0xDc28023CCdfbE553643c41A335a4F555Edf937Df'], - }, -}) diff --git a/projects/treasury/defender.js b/projects/treasury/defender.js deleted file mode 100644 index ac67ec12a6e..00000000000 --- a/projects/treasury/defender.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const treasuryContractsBSC = [ - "0x3068405d5A640028463856D0dbDAE13B41AccE1f", -]; - -module.exports = { - bsc: { - tvl: sumTokensExport({ owners: treasuryContractsBSC, tokens: [ADDRESSES.bsc.ETH]}), - }, -}; diff --git a/projects/treasury/defiway.js b/projects/treasury/defiway.js deleted file mode 100644 index 612d79cfacd..00000000000 --- a/projects/treasury/defiway.js +++ /dev/null @@ -1,31 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0xa0bB1ebf52A9307F30509d3b385754c33B7F2E26'], - }, - bsc: { - owners: ['0xa0bB1ebf52A9307F30509d3b385754c33B7F2E26'], - }, - polygon: { - owners: ['0xa0bB1ebf52A9307F30509d3b385754c33B7F2E26'], - }, - arbitrum: { - owners: ['0xa0bB1ebf52A9307F30509d3b385754c33B7F2E26'], - }, - base: { - owners: ['0xa0bB1ebf52A9307F30509d3b385754c33B7F2E26'], - }, - avax: { - owners: ['0xa0bB1ebf52A9307F30509d3b385754c33B7F2E26'], - }, - optimism: { - owners: ['0xa0bB1ebf52A9307F30509d3b385754c33B7F2E26'], - }, - cronos: { - owners: ['0xa0bB1ebf52A9307F30509d3b385754c33B7F2E26'], - }, - tron: { - owners: ['TJHEossM1q87JWEFYRrEfjDju6uEoZY22N'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/deri-protocol.js b/projects/treasury/deri-protocol.js deleted file mode 100644 index 56243093f9c..00000000000 --- a/projects/treasury/deri-protocol.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x20a5c32ee19bcdb2635455859e64ba5a1d1acab2"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/dex.js b/projects/treasury/dex.js deleted file mode 100644 index 67ba126788c..00000000000 --- a/projects/treasury/dex.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const TREASURY = "0xa5f3d6a33c5a5bcdff8f81c88ca00f457b699e0f"; -const TOKENS = { - USDEX_USDC_LP: '0x79f3bb5534b8f060b37b3e5dea032a39412f6b10', - DEXSHARE_BNB_LP: '0x65d83463fc023bffbd8ac9a1a2e1037f4bbdb399', - DEXIRA_BNB_LP: '0x01b279a06f5f26bd3f469a3e730097184973fc8a', - DEXSHARE: '0xf4914e6d97a75f014acfcf4072f11be5cffc4ca6', - DEXIRA: '0x147e07976e1ae78287c33aafaab87760d32e50a5', - WDHEX_DEXSARE: '0x6647047433df4cfc9912d092fd155b9d972a4a85', - BNB: ADDRESSES.bsc.WBNB, - USDC: ADDRESSES.bsc.USDC -}; - - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - TOKENS.BNB, - TOKENS.USDC - ], - owners: [TREASURY], - ownTokens: [TOKENS.DEXSHARE,TOKENS.DEXIRA,TOKENS.USDEX_USDC_LP,TOKENS.WDHEX_DEXSARE,TOKENS.DEXIRA_BNB_LP], - }, -}) \ No newline at end of file diff --git a/projects/treasury/dexfinance.js b/projects/treasury/dexfinance.js deleted file mode 100644 index 8a874ccf189..00000000000 --- a/projects/treasury/dexfinance.js +++ /dev/null @@ -1,84 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { treasuryExports } = require("../helper/treasury"); - -const mainTreasury = '0x776e9df67667cb568f0e7951f74347fd985d615b'; -const multisig = '0xacB39b9Bf0462203b4Ca0CB74eC1AffB1b17c3b6'; - - -module.exports = treasuryExports({ - arbitrum: { - owners: [mainTreasury, multisig], - tokens: [ - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.WETH, - '0x92a212d9f5eef0b262ac7d84aea64a0d0758b94f', //gdex - '0x4117ec0a779448872d3820f37ba2060ae0b7c34b', //usdex - '0x1b896893dfc86bb67cf57767298b9073d2c1ba2c', //cake - '0x6985884c4392d348587b19cb9eaaf157f13271cd', //zro - '0xd56734d7f9979dd94fae3d67c7e928234e71cd4c', //tia - '0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8', //pendle - '0x25d887ce7a35172c62febfd67a1856f20faebb00', //pepe - ADDRESSES.arbitrum.LINK, //link - ADDRESSES.arbitrum.GMX, //gmx - ADDRESSES.arbitrum.ARB, //arb - ADDRESSES.arbitrum.WBTC, //wbtc - ] - }, - avax: { - owners: [mainTreasury], - tokens: [ - ADDRESSES.avax.USDT_e, - ADDRESSES.avax.WETH_e, - ] - }, - optimism: { - owners: [mainTreasury], - tokens: [ - ADDRESSES.optimism.OP, - ADDRESSES.optimism.WETH, - ADDRESSES.optimism.USDC, - ] - }, - manta: { - owners: [mainTreasury], - tokens: [ - ADDRESSES.manta.USDC, - '0x95cef13441be50d20ca4558cc0a27b601ac544e5', //MANTA - '0x4c2a0f964a37a3ce305fe41c575beeb48c8c3fa2', //gCETO - '0x3af03e8c993900f0ea6b84217071e1d4cc783982', //CETO - '0xe68874e57224d1e4e6d4c6b4cf5af7ca51867611', //bCETO - '0x6da9ebd271a0676f39c088a2b5fd849d5080c0af', //USDEX - ] - }, - // pulse: { - // owners: [mainTreasury], - // tokens: [ - // ADDRESSES.pulse.WETH, - // ADDRESSES.ethereum.USDC, //usdc(fork) - // ADDRESSES.pulse.sDAI, //sdai - // '0xaa2c47a35c1298795b5271490971ec4874c8e53d', //usdex - // '0x6386704cd6f7a584ea9d23ccca66af7eba5a727e', //spark - // ] - // }, - base: { - owners: [mainTreasury], - tokens: [ - ADDRESSES.base.USDC, - '0x532f27101965dd16442e59d40670faf5ebb142e4', //brett - '0xece7b98bd817ee5b1f2f536daf34d0b6af8bb542', //rock - '0x5babfc2f240bc5de90eb7e19d789412db1dec402', //circle - '0x6921b130d297cc43754afba22e5eac0fbf8db75b', //doginme - '0x7d9ce55d54ff3feddb611fc63ff63ec01f26d15f', //fungi - '0xcde90558fc317c69580deeaf3efc509428df9080', //normilio - '0xba0dda8762c24da9487f5fa026a9b64b695a07ea', //ox - '0xa3d1a8deb97b111454b294e2324efad13a9d8396', //ovn - '0xb79dd08ea68a908a97220c76d19a6aa9cbde4376', //usd+ - '0x940181a94a35a4569e4529a3cdfb74e38fd98631', //aero - '0x7f62ac1e974d65fab4a81821ca6af659a5f46298', //wels - '0x78b3c724a2f663d11373c4a1978689271895256f', //tkn - ADDRESSES.base.wstETH, //wsteth - '0x373504da48418c67e6fcd071f33cb0b3b47613c7', //wbasedoge - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/dexhunter.js b/projects/treasury/dexhunter.js deleted file mode 100644 index ee6782cd821..00000000000 --- a/projects/treasury/dexhunter.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const Treasury = "addr1qx9sltr8w7y3hyjav340zunarmegsvu009ny2k5neccal0p3yzmswj59yx7vn630qh3ce7yjflahhjr3a0a2xkhf30eq3rd5k5"; - - - -module.exports = treasuryExports({ - cardano: { - tokens: [ - nullAddress, - ], - owners: [Treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/dforce.js b/projects/treasury/dforce.js deleted file mode 100644 index cb23dbea853..00000000000 --- a/projects/treasury/dforce.js +++ /dev/null @@ -1,15 +0,0 @@ - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xc097ea3ea6d6851e8c274ace6373107c5a253f62"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ - ], - tokens: [ - nullAddress, - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/dfyn.js b/projects/treasury/dfyn.js deleted file mode 100644 index 10d6d79db7f..00000000000 --- a/projects/treasury/dfyn.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const Treasury = "0x5C35D4BcF0827a22370915E75c387EC470338c10"; - - - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - "0x8971dFb268B961a9270632f28B24F2f637c94244" - ], - owners: [Treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/dhedge.js b/projects/treasury/dhedge.js deleted file mode 100644 index eb9d724c21f..00000000000 --- a/projects/treasury/dhedge.js +++ /dev/null @@ -1,89 +0,0 @@ -const {treasuryExports, nullAddress} = require("../helper/treasury"); - -const treasuryContractsArbitrum = [ - "0x00dB9c5d0BF9B27dBaBb8A032cE7f9689cB1bB62",//flatmoneyMarketMaking - "0x09493AEb0778A797F84BA578166540dBf8Df46cc",//treasury - "0x26f7cbd49A4DC3321780AE8e7e0cb460f55a7511",//protocolTreasury - "0xfbd2b4216f422dc1eee1cff4fb64b726f099def5",//torosManager - "0xEd8329400c75434BdC4B2D394A6E60300D7D15C4",//lamaPay - "0x13471A221D6A346556723842A1526C603Dc4d36B",//dhedgeDAO - "0x86cA569eeF865f255e10d91E1C7b094a1737eeAe",//treasury - -]; - -const treasuryContractsBase = [ - "0x9Dd44870aaD13320fcfD9C43b95D54B02f2aE646",//flatmoneyMarketMaking - "0x4A83129Ce9C8865EF3f91Fc87130dA25b64F9100",//dhedgeDAO - "0xd4e9313252a529dac2c74c87f41abc7641e023af",//treasury - "0x5619AD05b0253a7e647Bd2E4C01c7f40CEaB0879",//torosManager - "0xEE27793EBAf6a446c74C2cDd23Bba615e9472264",//protocolTreasury - -]; - -const treasuryContractsEthereum = [ - "0x5F526A59BC92b4547aB0b044538412958347227b",//treasury - "0xB76E40277B79B78dFa954CBEc863D0e4Fd0656ca",//dhedgeDAO - "0xff44b48abad9cb7a2485f829e5c9a4d1cee623c9",//protocolTreasury - "0xcdaec252ce9c176eb76d1e0ed7caa75c47ff96d1",//treasury - -]; - -const treasuryContractsOptimism = [ - "0x90b1a66957914EbbE7a8df254c0c1E455972379C",//dhedgeDAO - "0x19B6584cA17D3B50E298327dA83Ff36C6EFb71E5",//treasury - "0x352Fb838A3ae9b0ef2f0EBF24191AcAf4aB9EcEc",//treasury - "0x813123a13d01d3f07d434673fdc89cbba523f14d",//torosManager - "0xD857e322351Dc56592e3D9181FBF65034EF4aef2",//protocolTreasury - "0xe68d18f1e5766a2da140605fe635e3d55b9b422d",//treasury -]; - - -const treasuryContractsPolygon = [ - "0x6583f33895B538DFdeeE234F2D34dF1033655de1",//treasury - "0x6f005cbceC52FFb28aF046Fd48CB8D6d19FD25E3",//protocolTreasury - "0xc715Aa67866A2FEF297B12Cb26E953481AeD2df4",//dhedgeDAO - "0x72d33a83f2b31d31aaeb65e3ac7c06a8de0c8062",//treasury - "0x090e7fbd87a673ee3d0b6ccacf0e1d94fb90da59",//torosManager -]; - -const DHT_ETHEREUM = "0xca1207647ff814039530d7d35df0e1dd2e91fa84"; -const DHT_ARBITRUM = "0x8038f3c971414fd1fc220ba727f2d4a0fc98cb65"; -const DHT_OPTIMISM = "0xaf9fe3b5ccdae78188b1f8b9a49da7ae9510f151"; -const DHT_POLYGON = "0x8c92e38eca8210f4fcbf17f0951b198dd7668292"; -const DHT_BASE = "0x54bc229d1cb15f8b6415efeab4290a40bc8b7d84"; - -const MTA_ETHEREUM = "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2"; -const MTA_OPTIMISM = "0x929b939f8524c3be977af57a4a0ad3fb1e374b50"; -const MTA_POLYGON = "0xf501dd45a1198c2e1b5aef5314a68b9006d842e0"; - -module.exports = treasuryExports({ - isComplex: true, - complexOwners: [...treasuryContractsEthereum, ...treasuryContractsArbitrum, ...treasuryContractsBase, ...treasuryContractsOptimism, ...treasuryContractsPolygon], - ethereum: { - tokens: [nullAddress], - owners: treasuryContractsEthereum, - ownTokens: [DHT_ETHEREUM, MTA_ETHEREUM], - }, - - arbitrum: { - tokens: [nullAddress], - owners: treasuryContractsArbitrum, - ownTokens: [DHT_ARBITRUM], - }, - base: { - tokens: [nullAddress], - owners: treasuryContractsBase, - ownTokens: [DHT_BASE], - }, - optimism: { - tokens: [nullAddress], - owners: treasuryContractsOptimism, - ownTokens: [DHT_OPTIMISM, MTA_OPTIMISM], - }, - polygon: { - tokens: [nullAddress], - owners: treasuryContractsPolygon, - ownTokens: [DHT_POLYGON, MTA_POLYGON], - } - -}) \ No newline at end of file diff --git a/projects/treasury/dnadollar.js b/projects/treasury/dnadollar.js deleted file mode 100644 index df5e44fad26..00000000000 --- a/projects/treasury/dnadollar.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const treasuryContract = "0x1420287565FD5Ebec8FbD720c17Cd911600449d3"; - -const DNA = "0xcc57f84637b441127f2f74905b9d99821b47b20c"; - - -module.exports = { - cronos: { - tvl: () => ({}), - ownTokens: staking(treasuryContract, DNA), - }, -}; diff --git a/projects/treasury/dodo.js b/projects/treasury/dodo.js deleted file mode 100644 index 1b00da83902..00000000000 --- a/projects/treasury/dodo.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const dodoTreasury = "0xAB21016BD4127638b8c555e36636449b33dF1C38"; - -const DODO = "0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT,//TETHER - ADDRESSES.ethereum.USDC,//USDC - ], - owners: [dodoTreasury], - ownTokens: [DODO], - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.WBTC, // WBTC - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.WETH, // WETH - ADDRESSES.arbitrum.USDT, // USDT - ], - owners: ['0x01d3e7271c278aa3aa56eeba6a109b2c200679fa'], - ownTokens: ['0x69eb4fa4a2fbd498c257c57ea8b7655a2559a581'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/dopex.js b/projects/treasury/dopex.js deleted file mode 100644 index d32a05a4b3d..00000000000 --- a/projects/treasury/dopex.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const ethereum = { - // Doc link: https://docs.dopex.io/developer/contracts/ethereum#active - treasury: "0xb8689b7910954BF73431f63482D7dd155537ea7E", - dpx: "0xEec2bE5c91ae7f8a338e1e5f3b5DE49d07AfdC81", - rdpx: "0x0ff5A8451A839f5F0BB3562689D9A44089738D11", -}; - -const arbitrum = { - // Doc link: https://docs.dopex.io/developer/contracts/arbitrum#other - treasury: "0x2fa6F21eCfE274f594F470c376f5BDd061E08a37", - dpx: "0x6C2C06790b3E3E3c38e12Ee22F8183b37a13EE55", - rdpx: "0x32Eb7902D4134bf98A28b963D26de779AF92A212", -}; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.LUSD, - ], - owners: [ethereum.treasury], - ownTokens: [ethereum.dpx, ethereum.rdpx], - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.ARB, - ], - owners: [arbitrum.treasury], - ownTokens: [arbitrum.dpx, arbitrum.rdpx], - }, -}); diff --git a/projects/treasury/drefinance.js b/projects/treasury/drefinance.js deleted file mode 100644 index 6703d251266..00000000000 --- a/projects/treasury/drefinance.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const treasury = "0x0E43DF9F40Cc6eEd3eC70ea41D6F34329fE75986"; -const dre = "0xd4eee4c318794bA6FFA7816A850a166FFf8310a9"; -const dre_old = "0xF8232259D4F92E44eF84F18A0B9877F4060B26F1"; -const tokens = [ - nullAddress, - dre, - dre_old, - '0xB781C624397C423Cb62bAe9996cEbedC6734B76b', // dre-usd lp token - '0x18b6963ebe82b87c338032649aaad4eec43d3ecb', // dre-usd lp token - ADDRESSES.sonic.USDC_e -]; - -module.exports = treasuryExports({ - sonic: { - tokens, - owners: [treasury], - ownTokens: [dre, dre_old], - resolveLP: true, - }, -}); diff --git a/projects/treasury/dxdao.js b/projects/treasury/dxdao.js deleted file mode 100644 index 6466ec469c3..00000000000 --- a/projects/treasury/dxdao.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x519b70055af55a007110b4ff99b0ea33071c720a"; -const DXD = "0xa1d65e8fb6e87b60feccbc582f7f97804b725521"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0x6cAcDB97e3fC8136805a9E7c342d866ab77D0957',//swapr - ADDRESSES.ethereum.DAI,//dai - '0xFe2e637202056d30016725477c5da089Ab0A043A',//seth2 - ADDRESSES.ethereum.USDC,//usdc - ADDRESSES.ethereum.LUSD,//lusd - ADDRESSES.ethereum.STETH,//steth - '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ens - ADDRESSES.ethereum.RETH,//reth - '0x20BC832ca081b91433ff6c17f85701B6e92486c5',//reth2 - '0xEd91879919B71bB6905f23af0A68d231EcF87b14',//dmg - '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d',//pnk - '0xF5581dFeFD8Fb0e4aeC526bE659CFaB1f8c781dA',//hopr - ADDRESSES.ethereum.WETH,//weth - ], - owners: [treasury], - ownTokens: [DXD], - }, - }) \ No newline at end of file diff --git a/projects/treasury/dydx.js b/projects/treasury/dydx.js deleted file mode 100644 index cdfb684d8ec..00000000000 --- a/projects/treasury/dydx.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const dydxTreasury = "0xE710CEd57456D3A16152c32835B5FB4E72D9eA5b"; - -const DYDX = "0x92d6c1e31e14520e676a687f0a93788b716beff5"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT,//TETHER - ], - owners: [dydxTreasury], - ownTokens: [DYDX], - }, -}) \ No newline at end of file diff --git a/projects/treasury/ease-org.js b/projects/treasury/ease-org.js deleted file mode 100644 index 159aad99c0c..00000000000 --- a/projects/treasury/ease-org.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x1f28ed9d4792a567dad779235c2b766ab84d8e33"; -const EASE = "0xEa5eDef1287AfDF9Eb8A46f9773AbFc10820c61c"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - '0x7CA51456b20697A0E5Be65e5AEb65dfE90f21150', - '0x43632E3448cd47440fEE797258081414D91A58cE', - ], - owners: [treasury], - ownTokens: [EASE], - }, - }) \ No newline at end of file diff --git a/projects/treasury/ebisusbay.js b/projects/treasury/ebisusbay.js deleted file mode 100644 index 75afca0610d..00000000000 --- a/projects/treasury/ebisusbay.js +++ /dev/null @@ -1,16 +0,0 @@ - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x289A94c5cf403691aca3d222E30335a4957b3ae6"; - -module.exports = treasuryExports({ - cronos: { - owners: [treasury], - ownTokens: [ - '0xaF02D78F39C0002D14b95A3bE272DA02379AfF21', // FRTN - ], - tokens: [ - nullAddress, - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/elements-fi.js b/projects/treasury/elements-fi.js deleted file mode 100644 index af18d426e4b..00000000000 --- a/projects/treasury/elements-fi.js +++ /dev/null @@ -1,16 +0,0 @@ - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x978982772b8e4055b921bf9295c0d74eb36bc54e"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ - '0x30123A6D38eb4a34B701627211EDE0BFF04Cd618', // ELMT - ], - tokens: [ - nullAddress, - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/empyreal.js b/projects/treasury/empyreal.js deleted file mode 100644 index f2a5674abc2..00000000000 --- a/projects/treasury/empyreal.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xF548a58DB6d86d466acd00Fc0F6De3b39Ea129D7"; - - -const EMP= "0x0DDCE00654f968DeD59A444da809F2B234047aB1"; - - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.ARB, //ARB - ADDRESSES.arbitrum.USDC, //USDC - ], - owners: [treasury], - ownTokens: [EMP], - }, -}) \ No newline at end of file diff --git a/projects/treasury/ens.js b/projects/treasury/ens.js deleted file mode 100644 index 795a7da0f42..00000000000 --- a/projects/treasury/ens.js +++ /dev/null @@ -1,18 +0,0 @@ -const { karpatKeyTvl } = require('../helper/karpatkey'); -const { sumTokensExport } = require('../helper/unknownTokens'); - -const treasury = "0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7"; -const vestingAddress = "0xd7a029db2585553978190db5e85ec724aa4df23f" -const treasury2 = "0x690f0581ececcf8389c223170778cd9d029606f2" - -const ENS= "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72"; - -module.exports={ - ethereum:{ - tvl: async (api)=>karpatKeyTvl(api, "ENS DAO", "ENS"), - ownTokens: sumTokensExport({ - tokens: [ENS], - owners: [treasury, vestingAddress, treasury2], - }) - } -} \ No newline at end of file diff --git a/projects/treasury/equilibre.js b/projects/treasury/equilibre.js deleted file mode 100644 index 0cf0ff2f1a8..00000000000 --- a/projects/treasury/equilibre.js +++ /dev/null @@ -1,78 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const VARA = '0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73' - -const equilibre = [ - '0x3a724E0082b0E833670cF762Ea6bd711bcBdFf37', // TREASURY ETH - '0x79dE631fFb7291Acdb50d2717AE32D44D5D00732', // TREASURY KAVA - '0x283270C265eB3D6e910920AdFf85e746C8063fed', - '0x4722FE058da1D359c1428C8F9B8F5b4531b58D17', - '0xAb7778933fb44514c864b2610b5d7E2A0bD91DDF', - '0x498Dd5A79ab7e19Be1dA81738239214F807E3462', - '0x78B3Ec25D285F7a9EcA8Da8eb6b20Be4d5D70E84', - '0xfcb3E3797A77946891c88A841d35d47c8F22CF53', - '0xd5524479C013d19e440872175400F396f35645fF', - '0x3ca2c227D47DF650ffcD39b64527e7c6e2E91DD1', - '0xc9C384a9E7e28f7Ef55903eb90947fe3ce71D475', - '0xA43Dd020E147F3A9C5cCe6860Cc4f51Ff71B56dc', - '0xb5B0c913acF48Bfb7bcB95e2F4fA241693dea513', - '0x4396c6e2a70c6b3c7b8a1f9e4043632e1c93d430', - '0xF9Ec0C05288d6726e1B3a7ccfcaEAc7b134d5F50' -] - - -const tokens = [ - nullAddress, - //"0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73", // VARA - ADDRESSES.telos.ETH, // USDC - ADDRESSES.kava.WKAVA, // WKAVA - ADDRESSES.shiden.ETH, // DAI - ADDRESSES.moonriver.USDC, // ETH - ADDRESSES.telos.USDC, // WBTC - "0xC19281F22A075E0F10351cd5D6Ea9f0AC63d4327", // BIFI - "0x6c2c113c8cA73dB67224EF4D8C8dFCeC61e52a9C", // LQDR - "0xb84Df10966a5D7e1ab46D9276F55d57bD336AFC7", // MAI - ADDRESSES.kava.USX, // USX - "0x739ca6D71365a08f584c8FC4e1029045Fa8ABC4B", // ACS - "0xd86C8d4279CCaFbec840c782BcC50D201f277419", // MARE - "0x165DBb08de0476271714952C3C1F068693bd60D7", // TAROT - "0x74ccbe53f77b08632ce0cb91d3a545bf6b8e0979", // fBOMB - "0x9d9682577CA889c882412056669bd936894663fd", // swKAVA - "0xABd380327Fe66724FFDa91A87c772FB8D00bE488", // BNB - ADDRESSES.kava.axlUSDC, // axlUSDC - "0xE1E9dB9b4d51A8878f030094F7965edC5eEC7802", // xSHRAP - "0x7ae97042a4a0eb4d1eb370c34bfec71042a056b7", // SLM - "0x06beE9E7238a331B68D83Df3B5B9B16d5DBa83ff", // axlATOM - "0x5E237e61469d1A5b85fA8fba63EB4D4498Ea8dEF", // YFX - "0xEffaE8eB4cA7db99e954adc060B736Db78928467", // GMD - "0x489e54EEc6C228A1457975Eb150A7EFb8350b5bE", // spVARA - "0x443ab8d6ab303ce28f9031be91c19c6b92e59c8a", // TORE Old Toreus - "0x8549724fcC84ee9ee6c7A676F1Ba2Cc2f43AAF5B", // TORE - "0x53a5dD07127739e5038cE81eff24ec503A6CC479", // acsVARA - "0xC09c73F7B32573d178138E76C0e286BA21085c20", // QI - "0x0Fb3E4E84FB78C93E466a2117Be7bc8BC063E430", // CHAM - "0x990e157fC8a492c28F5B50022F000183131b9026", // LION - "0x471F79616569343e8e84a66F342B7B433b958154", // TIGER - "0x38481Fdc1aF61E6E72E0Ff46F069315A59779C65", // BEAR - "0x13db70Ad2f2b7064EbD5B0CAA13Af445a77360f7", // KONK - "0xFa4384b298084A0ef13F378853DEDbB33A857B31", // cpVARA - ADDRESSES.moonriver.USDT, // USDT - "0xde5ed76e7c05ec5e4572cfc88d1acea165109e44", // DEUS - "0xD22a58f79e9481D1a88e00c343885A588b34b68B", // DEXI - "0xde1e704dae0b4051e80dabb26ab6ad6c12262da0", // DEI -]; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [nullAddress], - owners: ['0x8B21Bdb9B1aa2094460851dA19185A989529fBe3'] - }, - kava: { - tokens, - owners: equilibre, - ownTokenOwners: equilibre, - ownTokens: [VARA] - }, -}); diff --git a/projects/treasury/eth-foundation.js b/projects/treasury/eth-foundation.js deleted file mode 100644 index 4817842fb58..00000000000 --- a/projects/treasury/eth-foundation.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae"; -const WETH = ADDRESSES.ethereum.WETH; -const ETH = ADDRESSES.null; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, //USDC - "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", //OMG - ADDRESSES.ethereum.BNB, //BNB - WETH - ], - owners: [treasury, '0x9fC3dc011b461664c835F2527fffb1169b3C213e'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/ether.js b/projects/treasury/ether.js deleted file mode 100644 index b4acc5affcc..00000000000 --- a/projects/treasury/ether.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryOP = "0x8ba1f109551bD432803012645Ac136ddd64DBA72"; -const treasuryETH = "0x8ba1f109551bD432803012645Ac136ddd64DBA72" - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, // USDC - ADDRESSES.optimism.OP - ], - owners: [treasuryOP], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.TUSD, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDT - ], - owners: [treasuryETH], - }, -}); \ No newline at end of file diff --git a/projects/treasury/ethglobal.js b/projects/treasury/ethglobal.js deleted file mode 100644 index 1fb3aaa9b1a..00000000000 --- a/projects/treasury/ethglobal.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x336DEe4022d6CC2F95cfe9e0949B9E0EDDAC457D"; - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, // USDC - ADDRESSES.optimism.OP - ], - owners: [treasury], - ownTokens: [], - }, -}); diff --git a/projects/treasury/euler.js b/projects/treasury/euler.js deleted file mode 100644 index 1f52231c833..00000000000 --- a/projects/treasury/euler.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xcAD001c30E96765aC90307669d578219D4fb1DCe"; -const eul = "0xd9Fcd98c322942075A5C3860693e9f4f03AAE07b"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, // USDT - "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", // GRT - ], - owners: [treasury], - ownTokens: [eul], - }, -}); diff --git a/projects/treasury/evmos-dao.js b/projects/treasury/evmos-dao.js deleted file mode 100644 index ecc78b01135..00000000000 --- a/projects/treasury/evmos-dao.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const community_pool = "0x93354845030274cd4bf1686abd60ab28ec52e1a7"; -const treasury = "0xc3c5156911bf53f12913b68e0532096536b30600"; -const forge_liquidity = "0x4c3c271ca2e841c0051c0402021ddaef3ce666d0"; -const forge_owner = "0x2A72df162bD5B9Ba4cBB4F28bCE590c20db7aEC1"; - -const tokens = [ - nullAddress, - ADDRESSES.evmos.WEVMOS, - ADDRESSES.evmos.STEVMOS, - ADDRESSES.evmos.STRIDE, - ADDRESSES.evmos.AXL_USDC -] - - -module.exports = treasuryExports({ - evmos: { - tokens: tokens, - owners: [community_pool, treasury, forge_liquidity, forge_owner], - }, -}) \ No newline at end of file diff --git a/projects/treasury/exactly.js b/projects/treasury/exactly.js deleted file mode 100644 index b2bf6a556c7..00000000000 --- a/projects/treasury/exactly.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -/** @type {Record} */ -const config = { - ethereum: { - auditor: "0x310A2694521f75C7B2b64b5937C16CE65C3EFE01", - }, - optimism: { - auditor: "0xaEb62e6F27BC103702E7BC879AE98bceA56f027E", - }, -}; - -Object.entries(config).forEach(([chain, { auditor }]) => { - module.exports[chain] = { - tvl: async (api) => { - const markets = await api.call({ abi: abis.allMarkets, target: auditor, }); - const treasuries = await api.multiCall({ abi: abis.treasury, calls: markets, }) - return sumTokens2({ api, tokens: markets, owners: treasuries, }) - }, - }; -}); - -const abis = { - allMarkets: "function allMarkets() view returns (address[])", - treasury: "function treasury() view returns (address)", -}; diff --git a/projects/treasury/extrafi.js b/projects/treasury/extrafi.js deleted file mode 100644 index fb013b34cec..00000000000 --- a/projects/treasury/extrafi.js +++ /dev/null @@ -1,21 +0,0 @@ - -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0xc918a60e4d40d15959a85fa8b35f6db96907babf"; - -module.exports = treasuryExports({ - optimism: { - owners: [treasury, ], - ownTokens: [ - ], - tokens: [ - ], - }, - base: { - owners: [treasury, ], - ownTokens: [ - ], - tokens: [ - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/factor-dao.js b/projects/treasury/factor-dao.js deleted file mode 100644 index 4bcab13f4c7..00000000000 --- a/projects/treasury/factor-dao.js +++ /dev/null @@ -1,14 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x0c415efd785b8308e42c75532d1231a6281ebee2"; -const FCTR = "0x6dd963c510c2d2f09d5eddb48ede45fed063eb36" - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - ownTokens: [FCTR], - }, -}) \ No newline at end of file diff --git a/projects/treasury/fantohm-dao.js b/projects/treasury/fantohm-dao.js deleted file mode 100644 index 9aa52d7fdf5..00000000000 --- a/projects/treasury/fantohm-dao.js +++ /dev/null @@ -1,22 +0,0 @@ -const index = require('../fantOHM/index') -const { ohmTreasury } = require('../helper/treasury') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const fantomTreasuryContract = "0xA3b52d5A6d2f8932a5cD921e09DA840092349D71"; -const fantomGnosisContract = "0x34F93b12cA2e13C6E64f45cFA36EABADD0bA30fC"; -const ethTreasuryContract = "0x9042E869BedCD2BB3EEa241aC0032cadAE8DF006"; - -const ethTradfi3mContract = "0xCD8A46dC7EE4488b441Ae1CD3b5BCa48d5389C12"; -const ethTradfi6mContract = "0xD9fDd86ecc03e34DAf9c645C40DF670406836816" -const ftmTradfi3mContract = "0xEFbe7fe9E8b407a3F0C0451E7669E70cDD0C4C77"; -const ftmTradfi6mContract = "0xB1c77436BC180009709Be00C9e852246476321A3"; -module.exports = ohmTreasury(index) - -module.exports.fantom.ownTokens = sumTokensExport({ - owners: [fantomTreasuryContract, fantomGnosisContract, ftmTradfi3mContract, ftmTradfi6mContract, ], - tokens: ['0x6fc9383486c163fa48becdec79d6058f984f62ca', '0xfa1FBb8Ef55A4855E5688C0eE13aC3f202486286'] -}) -module.exports.ethereum.ownTokens = sumTokensExport({ - owners: [ethTreasuryContract, ethTradfi3mContract, ethTradfi6mContract, ], - tokens: ['0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B',] -}) \ No newline at end of file diff --git a/projects/treasury/fei-protocol.js b/projects/treasury/fei-protocol.js deleted file mode 100644 index abc4bb0b95d..00000000000 --- a/projects/treasury/fei-protocol.js +++ /dev/null @@ -1,14 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x8d5ed43dca8c2f7dfb20cf7b53cc7e593635d7b9"; -const TRIBE = "0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - ownTokens: [TRIBE], - }, -}) \ No newline at end of file diff --git a/projects/treasury/femboy-dao.js b/projects/treasury/femboy-dao.js deleted file mode 100644 index 274f7e02660..00000000000 --- a/projects/treasury/femboy-dao.js +++ /dev/null @@ -1,10 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ], - owners: ['0xf78A448E464a1fEB693D76c9211D2d03ae488206',], - }, -}) \ No newline at end of file diff --git a/projects/treasury/fjord-foundry.js b/projects/treasury/fjord-foundry.js deleted file mode 100644 index df947c9c862..00000000000 --- a/projects/treasury/fjord-foundry.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const treasury = "0xcA518c4DB97ECCe85cC82DE3C2B93D8f8b536ca5" // https://x.com/dcfgod/status/1815970805878034797 - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT - ], - owners: [treasury], - }, - -}) \ No newline at end of file diff --git a/projects/treasury/flair-dex.js b/projects/treasury/flair-dex.js deleted file mode 100644 index e4a699a8198..00000000000 --- a/projects/treasury/flair-dex.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const FLDXTreasury = "0xAD276dA5aAad4181B991fd93Bc7dCCFb46811003"; -const FLDX = "0x107D2b7C619202D994a4d044c762Dd6F8e0c5326" - -module.exports = treasuryExports({ - avax: { - tokens: [ - nullAddress, - ADDRESSES.avax.USDt,//USDT - ADDRESSES.avax.USDT_e,//USDT.e - ADDRESSES.avax.WAVAX,//AVAX - ADDRESSES.avax.USDC,//USDC - ADDRESSES.avax.USDC_e,//USDC.e - ADDRESSES.polygon.BUSD,//BUSD - "0x1C1CDF8928824dac36d84B3486D598B9799bA6c0",//aBASED - "0x107D2b7C619202D994a4d044c762Dd6F8e0c5326",//FLDX - ], - owners: [FLDXTreasury], - ownTokens: [FLDX], - }, -}) \ No newline at end of file diff --git a/projects/treasury/flokifi-locker.js b/projects/treasury/flokifi-locker.js deleted file mode 100644 index 4cbad977ca7..00000000000 --- a/projects/treasury/flokifi-locker.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryETH = "0x2b9d5c7f2EAD1A221d771Fb6bb5E35Df04D60AB0"; -const treasuryETH2 = "0xea9a5a3Ac7545E1Ddce79fC5803Df0f317A3D0f6" -const flokiETH = "0xcf0C122c6b73ff809C693DB761e7BaeBe62b6a2E" - -const treasuryBSC = "0x17e98a24f992BB7bcd62d6722d714A3C74814B94" -const flokiBSC = "0xfb5B838b6cfEEdC2873aB27866079AC55363D37E" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - "0xca7c2771D248dCBe09EABE0CE57A62e18dA178c0", - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - "0x1BD708E01E96d426652b0D50b8c896eaeefee36d" - ], - owners: [treasuryETH, treasuryETH2], - ownTokens: [flokiETH, '0x4507cef57c46789ef8d1a19ea45f4216bae2b528'], - }, - bsc: { - tokens: [ - nullAddress, - ], - owners: [treasuryBSC], - ownTokens: [flokiBSC, '0x4507cef57c46789ef8d1a19ea45f4216bae2b528'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/floor-dao.js b/projects/treasury/floor-dao.js deleted file mode 100644 index 36ca4677be3..00000000000 --- a/projects/treasury/floor-dao.js +++ /dev/null @@ -1,10 +0,0 @@ -const floorTreasury1 = "0x91E453f442d25523F42063E1695390e325076ca2"; -const floorTreasury2 = "0xa9d93a5cca9c98512c8c56547866b1db09090326"; - -const FLOOR = "0xf59257e961883636290411c11ec5ae622d19455e"; -const index = require('../floor-dao/index') -const { ohmTreasury } = require('../helper/treasury') -const { staking } = require('../helper/staking') - -module.exports = ohmTreasury(index) -module.exports.ethereum.ownTokens = staking([floorTreasury1, floorTreasury2], FLOOR) diff --git a/projects/treasury/flrbank.js b/projects/treasury/flrbank.js deleted file mode 100644 index fba3cf99338..00000000000 --- a/projects/treasury/flrbank.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); -const bank = '0x194726f6c2ae988f1ab5e1c943c17e591a6f6059' - -module.exports = { - flare: { - tvl: async (api) => { - await sumTokens2({ - owners: ['0xaA68BC4BAb9a63958466f49f5a58c54A412D4906'], - tokens: [ADDRESSES.flare.WFLR, '0x0F574Fc895c1abF82AefF334fA9d8bA43F866111'], - resolveLP: true, - resolveUniV3: true, - api, - }) - api.removeTokenBalance(bank) - }, - ownTokens: async (api) => { - await sumTokens2({ owner: '0xaA68BC4BAb9a63958466f49f5a58c54A412D4906', tokens: ['0x0F574Fc895c1abF82AefF334fA9d8bA43F866111'], resolveLP: true, api, }) - api.removeTokenBalance(ADDRESSES.flare.WFLR) - } - }, -} \ No newline at end of file diff --git a/projects/treasury/folks.js b/projects/treasury/folks.js deleted file mode 100644 index dbeda77feae..00000000000 --- a/projects/treasury/folks.js +++ /dev/null @@ -1,72 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); -const { HubPools } = require('../folks-xchain/constants'); -const { pools } = require('../folks-finance/v2/constants'); - -const treasuryAlgorand = "Q5Q5FC5PTYQIUX5PGNTEW22UJHJHVVUEMMWV2LSG6MGT33YQ54ST7FEIGA"; -const treasuryAvalanche = "0x4095f3c4bF6D6505Bd32cFFE0918863Ebb6b2Df2"; -const treasuryEthereum = "0xd09cab631f02C8D8cE7009b3aA228bdF4aAC67BD"; -const treasuryBase = "0x4095f3c4bF6D6505Bd32cFFE0918863Ebb6b2Df2"; -const treasuryBinanceSmartChain = "0xbf694bDFF7d4A0311863765e1f79A5C4f185e7d1"; -const treasuryArbitrum = "0xd09cab631f02C8D8cE7009b3aA228bdF4aAC67BD"; -const treasuryPolygon = "0x4095f3c4bF6D6505Bd32cFFE0918863Ebb6b2Df2"; - -module.exports = treasuryExports({ - algorand: { - tokens: [ - ADDRESSES.algorand.ALGO, // ALGO here is 1 instead of 0 - ...pools.map(pool => pool.assetId.toString()), - ...pools.map(pool => pool.fAssetId.toString()), - ], - owners: [treasuryAlgorand], - ownTokens: [], - }, - avax: { - tokens: [ - ADDRESSES.avax.USDt, - // hub assets - ...HubPools.avax.map(pool => pool.tokenAddress), - // hub fAssets - ...HubPools.avax.map(pool => pool.poolAddress), - // spokes fAssets - ...HubPools.arbitrum.map(pool => pool.poolAddress), - ...HubPools.base.map(pool => pool.poolAddress), - ...HubPools.bsc.map(pool => pool.poolAddress), - ...HubPools.ethereum.map(pool => pool.poolAddress), - ...HubPools.polygon.map(pool => pool.poolAddress), - ...HubPools.sei.map(pool => pool.poolAddress), - ], - owners: [treasuryAvalanche], - ownTokens: [], - }, - ethereum: { - tokens: HubPools.ethereum.map(pool => pool.tokenAddress), - owners: [treasuryEthereum], - ownTokens: [], - }, - base: { - tokens: HubPools.base.map(pool => pool.tokenAddress), - owners: [treasuryBase], - ownTokens: [], - }, - bsc: { - tokens: HubPools.bsc.map(pool => pool.tokenAddress), - owners: [treasuryBinanceSmartChain], - ownTokens: [], - }, - arbitrum: { - tokens: HubPools.arbitrum.map(pool => pool.tokenAddress), - owners: [treasuryArbitrum], - ownTokens: [], - }, - polygon: { - tokens: HubPools.polygon.map(pool => pool.tokenAddress), - owners: [treasuryPolygon], - ownTokens: [], - }, - sei: { - tokens: HubPools.sei.map(pool => pool.tokenAddress), - owners: [HubPools.sei[0].chainPoolAddress], - ownTokens: [], - } -}) \ No newline at end of file diff --git a/projects/treasury/foom.js b/projects/treasury/foom.js deleted file mode 100644 index 545c9a040ac..00000000000 --- a/projects/treasury/foom.js +++ /dev/null @@ -1,18 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); -const coreAssets = require("../helper/coreAssets.json"); - -const FOOM_TREASURY = '0xffefa70b6deaab975ef15a6474ce9c4214d82b02'; -const TOKENS = { - STETH: coreAssets.ethereum.STETH, - ADS: '0xcfcecfe2bd2fed07a9145222e8a7ad9cf1ccd22a', - ETH: coreAssets.null, - FOOM: '0xd0d56273290d339aaf1417d9bfa1bb8cfe8a0933', - WBTC: coreAssets.ethereum.WBTC, -}; - -module.exports = treasuryExports({ - ethereum: { - owners: [FOOM_TREASURY], - ownTokens: [TOKENS.FOOM] - }, -}); diff --git a/projects/treasury/forth-dao.js b/projects/treasury/forth-dao.js deleted file mode 100644 index 0e60260c5d8..00000000000 --- a/projects/treasury/forth-dao.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x223592a191ecfc7fdc38a9256c3bd96e771539a9"; -const treasury2 = "0x77fba179c79de5b7653f68b5039af940ada60ce0" -const FORTH = "0x77FbA179C79De5B7653F68b5039Af940AdA60ce0"; -const AMPL ="0xD46bA6D942050d489DBd938a2C909A5d5039A161" -const LP = "0xc5be99A02C6857f9Eac67BbCE58DF5572498F40c" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//usdc - ADDRESSES.ethereum.WETH,//weth - '0xBcca60bB61934080951369a648Fb03DF4F96263C',//ausdc - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7', - '0xd46ba6d942050d489dbd938a2c909a5d5039a161' - - ], - owners: [treasury, treasury2], - ownTokens: [FORTH, AMPL, LP], - blacklistedTokens: ['0xf211b655431c10e72c1caeae37688ae9f7f7a549'] - }, -}) \ No newline at end of file diff --git a/projects/treasury/fortress.js b/projects/treasury/fortress.js deleted file mode 100644 index 30bcdc67e5e..00000000000 --- a/projects/treasury/fortress.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require("../fortress/index"); - -delete module.exports.avax.staking \ No newline at end of file diff --git a/projects/treasury/fortunedao.js b/projects/treasury/fortunedao.js deleted file mode 100644 index c895f4893ff..00000000000 --- a/projects/treasury/fortunedao.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require("../fortunedao"); - -delete module.exports.cronos.staking \ No newline at end of file diff --git a/projects/treasury/frankencoin.js b/projects/treasury/frankencoin.js deleted file mode 100644 index 571955ca4e9..00000000000 --- a/projects/treasury/frankencoin.js +++ /dev/null @@ -1,13 +0,0 @@ -const { treasuryExports } = require('../helper/treasury'); - -const equity = '0x1bA26788dfDe592fec8bcB0Eaff472a42BE341B2'; // Equity contract address from ChainAddressMap.ethereum.equity -const frankencoin = '0xB58E61C3098d85632Df34EecfB899A1Ed80921cB'; // Frankencoin token address from ChainAddressMap.ethereum.frankencoin - -module.exports = treasuryExports({ - ethereum: { - owners: [equity], - ownTokens: [frankencoin], - }, -}); - -module.exports.methodology = 'Treasury is the Frankencoin held in the equity contract, which may include both protocol equity and minter reserves.'; diff --git a/projects/treasury/frax.js b/projects/treasury/frax.js deleted file mode 100644 index 1ceb3a51181..00000000000 --- a/projects/treasury/frax.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x9AA7Db8E488eE3ffCC9CdFD4f2EaECC8ABeDCB48"; -const fpis = "0xc2544A32872A91F4A553b404C6950e89De901fdb"; -const fxs = ADDRESSES.ethereum.FXS; -const treasuryarb = "0xe61d9ed1e5dc261d1e90a99304fadcef2c76fd10" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.SAFE, - ], - owners: [ - treasury, - '0x63278bF9AcdFC9fA65CFa2940b89A34ADfbCb4A1', - '0x8D4392F55bC76A046E443eb3bab99887F4366BB0', - '0xa95f86fE0409030136D6b82491822B3D70F890b3', - '0x9AA7Db8E488eE3ffCC9CdFD4f2EaECC8ABeDCB48', - '0x874a873e4891fB760EdFDae0D26cA2c00922C404', - ], - ownTokens: [fpis, fxs, ADDRESSES.ethereum.FRAX], - }, - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [ - treasuryarb, - ], - }, -}); diff --git a/projects/treasury/friendswithbenefits.js b/projects/treasury/friendswithbenefits.js deleted file mode 100644 index a21757781dc..00000000000 --- a/projects/treasury/friendswithbenefits.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x33e626727B9Ecf64E09f600A1E0f5adDe266a0DF"; -const ownTokenTreasury = "0x660F6D6c9BCD08b86B50e8e53B537F2B40f243Bd" -const FWB = "0x35bD01FC9d6D5D81CA9E055Db88Dc49aa2c699A8"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//usdc - ADDRESSES.ethereum.WETH,//weth - '0xBcca60bB61934080951369a648Fb03DF4F96263C',//ausdc - '0x9355372396e3F6daF13359B7b607a3374cc638e0',//whale - ], - owners: [treasury, ownTokenTreasury], - ownTokens: [FWB], - }, -}) \ No newline at end of file diff --git a/projects/treasury/friendtech33.js b/projects/treasury/friendtech33.js deleted file mode 100644 index f180a16c285..00000000000 --- a/projects/treasury/friendtech33.js +++ /dev/null @@ -1,11 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x68d91Bb4b1760Bc131555D23a438585D937A8e6d"; - -module.exports = treasuryExports({ - base: { - owners: [treasury,], - ownTokens: ['0x3347453Ced85bd288D783d85cDEC9b01Ab90f9D8'], - resolveLP: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/furucombo.js b/projects/treasury/furucombo.js deleted file mode 100644 index 836869efa01..00000000000 --- a/projects/treasury/furucombo.js +++ /dev/null @@ -1,56 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const COMBO = { - ethereum: "0xfFffFffF2ba8F66D4e51811C5190992176930278", - polygon: "0x6DdB31002abC64e1479Fc439692F7eA061e78165", - arbitrum: "0x94c8f7f04dEA7740fd895a254816F897Df61991e", -}; - -const treasuries = { - ethereum: "0x6304EB1B1eC2135a64a90bA901B12Cf769657579", - polygon: "0x3EBe4dfaF95cd320BF34633B3BDf773FbE732E63", - arbitrum: "0x3EBe4dfaF95cd320BF34633B3BDf773FbE732E63", - optimism: "0x168608B226ef4E59Db5E61359509656a51BAe090", - avax: "0x168608B226ef4E59Db5E61359509656a51BAe090", - metis: "0x75Ce960F2FD5f06C83EE034992362e593dcf7722", - fantom: "0x75Ce960F2FD5f06C83EE034992362e593dcf7722", - base: "0x50Df7c73bA1B4bb74934E50298de73F265260Ea4", - xdai: "0x4207b828b673EDC01d7f0020E8e8A99D8b454136", -}; - -module.exports = treasuryExports({ - ethereum: { - owners: [treasuries.ethereum], - ownTokens: [COMBO.ethereum], - }, - polygon: { - owners: [treasuries.polygon], - ownTokens: [COMBO.polygon], - blacklistedTokens: [ - "0x7A5011BF1dAd77a23EC35CE04dCc2AC7d29963c5", // PECO-WMATIC-SLP - ], - }, - arbitrum: { - owners: [treasuries.arbitrum], - ownTokens: [COMBO.arbitrum], - }, - optimism: { - owners: [treasuries.optimism], - }, - avax: { - owners: [treasuries.optimism], - }, - metis: { - owners: [treasuries.metis], - }, - fantom: { - owners: [treasuries.fantom], - }, - base: { - owners: [treasuries.base], - }, - xdai: { - owners: [treasuries.xdai], - }, -}); diff --git a/projects/treasury/futureswap.js b/projects/treasury/futureswap.js deleted file mode 100644 index dbcde2ecee3..00000000000 --- a/projects/treasury/futureswap.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xdb08917e0ae9075c6577b6a11d0bb78dfbc381e4"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/fwx.js b/projects/treasury/fwx.js deleted file mode 100644 index 4cc0e14437a..00000000000 --- a/projects/treasury/fwx.js +++ /dev/null @@ -1,8 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - avax: { - owners: ['0xB0fa4C4D58E26BED39e2C08DcFD96f5743aA6062'], - ownTokens: [], - }, -}) diff --git a/projects/treasury/gains.js b/projects/treasury/gains.js deleted file mode 100644 index 5542276acc4..00000000000 --- a/projects/treasury/gains.js +++ /dev/null @@ -1,44 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json'); - -const GNS = "0x18c11FD286C5EC11c3b683Caa813B77f5163A122" -const multisig = "0xf8e93a7d954f7d31d5fa54bc0eb0e384412a158d" -const multisig1= "0xc07eed650ab255190ca9766162cfb47cfdf72f3a" -const treasury = "0x80fd0accC8Da81b0852d2Dca17b5DDab68f22253" -const gnspolygon = "0xE5417Af564e4bFDA1c483642db72007871397896" -const gnsbase = "0xfb1aaba03c31ea98a3eec7591808acb1947ee7ac" - - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.DAI, - "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418", - ], - owners: [multisig, treasury, multisig1], - ownTokens: [GNS], - resolveUniV3: true, - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.USDT, - ], - owners: [treasury, multisig1], - ownTokens: [gnspolygon], - resolveUniV3: true, - }, - base: { - tokens: [ - nullAddress, - ADDRESSES.base.USDC - ], - owners: [multisig1], - ownTokens: [gnsbase], - resolveUniV3: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/galaxygoogle.js b/projects/treasury/galaxygoogle.js deleted file mode 100644 index b9ee1dad47c..00000000000 --- a/projects/treasury/galaxygoogle.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -// https://app.galaxygoggle.money/#/bonds -const treasury = "0xD5F922e23693e552793fE0431F9a95ba67A60A23" -const dao = "0xDEEdd1646984F9372Cc9D3d7E13AC1606cC2B548" -const mim = "0x130966628846BFd36ff31a822705796e8cb8C18D" -const wavax = ADDRESSES.avax.WAVAX -const joe = ADDRESSES.avax.JOE - -async function tvl(api) { - return api.sumTokens({ owners: [treasury, dao], tokens: [mim, wavax, joe, "0xe9E8d6b6ce6D94Fc9d724711e80784Ec096949Fc",] }); -} - -const bscTreasury = "0xF76C9753507B3Df0867EB02D86d07C6fFcEecaf1"; -const treasuryTokensBSC = [ - ADDRESSES.bsc.BUSD, // BUSD - "0x13Cf29b3F58f777dDeD38278F7d938401f6b260c", // GG-BUSD -] - -async function bscTvl(api) { - return api.sumTokens({ owners: [bscTreasury], tokens: treasuryTokensBSC }); -} - -module.exports = { - avax: { - tvl, - }, - bsc: { - tvl: bscTvl, - }, - methodology: - "Counts tokens on the treasury for tvl and staked GG for staking", -}; diff --git a/projects/treasury/gale.js b/projects/treasury/gale.js deleted file mode 100644 index 0abfb73fc91..00000000000 --- a/projects/treasury/gale.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const config = { - bsc: { - windmillContract: "0x0b374F3C618FF06583E7C4a1207bcaF22343737E", - tokenContract: "0x627E86E9eC832b59018Bf91456599e752288Aa97", - liquidityContract: "0x1fC3152de89b0c6c36F0d330b7Be369d6dDB219F", - vaultContract: "0x973Abe726E3e37bbD8501B2D8909Fa59535Babdd", - busd: ADDRESSES.bsc.BUSD, - } -} - -module.exports = { - bsc: { - tvl: staking(config.bsc.vaultContract, config.bsc.busd), - }, -}; diff --git a/projects/treasury/galxe.js b/projects/treasury/galxe.js deleted file mode 100644 index e134e75e3c6..00000000000 --- a/projects/treasury/galxe.js +++ /dev/null @@ -1,14 +0,0 @@ - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x28fda5fb2ac9436bc4bb8bedafee25a550956de6"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ - ], - tokens: [ - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/gammaswap.js b/projects/treasury/gammaswap.js deleted file mode 100644 index 442a31d3583..00000000000 --- a/projects/treasury/gammaswap.js +++ /dev/null @@ -1,16 +0,0 @@ -const { treasuryExports } = require('../helper/treasury'); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0x73c510b2A44B51a01A13A3539c38EB330FB9713D'], - blacklistedTokens:['0x64d3CAe387405d91f7b0D91fb1D824A281719500'] - }, - arbitrum: { - owners: ['0x34B5870C0431158e11c68B770127FBd2cE953f7a', '0xa075f1B6f50a1a02Ba22c3B43D72917a326b16c0'], - ownTokens:['0xb08d8becab1bf76a9ce3d2d5fa946f65ec1d3e83'] - }, - base: { - owners: ['0xaeAAc90117fb85a7DC961522DdFe96ABB358445B'], - ownTokens: ['0xc4d44c155f95FD4E94600d191a4a01bb571dF7DF'], - } -}) diff --git a/projects/treasury/gardens.js b/projects/treasury/gardens.js deleted file mode 100644 index a445daacbd0..00000000000 --- a/projects/treasury/gardens.js +++ /dev/null @@ -1,49 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - celo: { - owners: ['0x9a17De1f0caD0c592F656410997E4B685d339029','0xd7a3D3A7dd35b8e81FC0b83C032D0ED3261417D9'], - ownTokens: [], - tokens: [ - nullAddress, // Native CELO - '0x471EcE3750Da237f93B8E339c536989b8978a438', // USDC - '0x62B8B11039FcfE5aB0C56E502b1C372A3d2a9c7A', // G - '0x765DE816845861e75A25fCA122bb6898B8B1282a', // celoDollar - '0x4F604735c1cF31399C6E711D5962b2B3E0225AD3', // USDGLO - ], - fetchCoValentTokens: false, - }, - base: { - owners: ['0x1B8C7f06F537711A7CAf6770051A43B4F3E69A7e'], - ownTokens: [], - tokens: [ - nullAddress, // Native ETH - '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC - ], - fetchCoValentTokens: false, - }, - polygon: { - owners: [ - '0x1B8C7f06F537711A7CAf6770051A43B4F3E69A7e', - ], - ownTokens: [], - tokens: [ - nullAddress,// Native MATIC - '0xc7B1807822160a8C5b6c9EaF5C584aAD0972deeC', // GIVETH - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', // DAI - ], - fetchCoValentTokens: false, - }, - xdai: { - owners: ['0x1B8C7f06F537711A7CAf6770051A43B4F3E69A7e'], - ownTokens: [], - tokens: [ - nullAddress, // Native XDAI - '0xc7B1807822160a8C5b6c9EaF5C584aAD0972deeC', // GIVETH - '0x71850b7E9Ee3f13Ab46d67167341E4bDc905Eef9', // HNY - '0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb', // GNO - '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', // wXDAI - ], - fetchCoValentTokens: false, - } -}) \ No newline at end of file diff --git a/projects/treasury/gearbox.js b/projects/treasury/gearbox.js deleted file mode 100644 index 2e8f5f5e7c4..00000000000 --- a/projects/treasury/gearbox.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -// Treasury -const treasury = "0x7b065Fcb0760dF0CEA8CFd144e08554F3CeA73D1"; -const treasuryFee = "0x3E965117A51186e41c2BB58b729A1e518A715e5F"; -const treasuryArb = "0x2c31eFFE426765E68A43163A96DD13DF70B53C14"; -const treasuryOpt = "0x1ACc5BC353f23B901801f3Ba48e1E51a14263808"; -const aeraVault = "0x564bc596affd8eb9c5065bc37835d801f3830c9e"; - -const GEAR = "0xBa3335588D9403515223F109EdC4eB7269a9Ab5D"; -const GEAR_ARB = "0x2F26337576127efabEEc1f62BE79dB1bcA9148A4"; -const GEAR_OPT = "0x39E6C2E1757ae4354087266E2C3EA9aC4257C1eb"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - // Ethereum Assets - nullAddress, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WSTETH,//wsteth - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.CRVUSD, - ], - owners: [treasury,treasuryFee,aeraVault], - ownTokens: [GEAR] - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDC_CIRCLE, - ], - owners: [treasuryArb], - ownTokens: [GEAR_ARB] - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.WETH, - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.USDC_CIRCLE, - ], - owners: [treasuryOpt], - ownTokens: [GEAR_OPT] - }, -}); diff --git a/projects/treasury/genesis-dao.js b/projects/treasury/genesis-dao.js deleted file mode 100644 index 3757a56759b..00000000000 --- a/projects/treasury/genesis-dao.js +++ /dev/null @@ -1,7 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0x31b6a4dca90fabf29879143ca5bb2c10e8a11e4c'], ownTokens: ['0x99999999999997fceB5549c58aB66dF52385ca4d'] - }, -}) diff --git a/projects/treasury/geth.js b/projects/treasury/geth.js deleted file mode 100644 index f8df4036935..00000000000 --- a/projects/treasury/geth.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x21539334f45Ac41Bd10789942b744a18a4775d6d" // - -module.exports = treasuryExports({ - optimism: { - tokens: [ - ADDRESSES.optimism.OP, - ADDRESSES.optimism.WETH - ], - owners: [treasury], - }, - -}) \ No newline at end of file diff --git a/projects/treasury/gitcoin.js b/projects/treasury/gitcoin.js deleted file mode 100644 index 9b28450fb68..00000000000 --- a/projects/treasury/gitcoin.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x57a8865cfB1eCEf7253c27da6B4BC3dAEE5Be518"; -const vestingAddress = "0x44Aa9c5a034C1499Ec27906E2D427b704b567ffe"; -const treasury2 = "0xde21f729137c5af1b01d73af1dc21effa2b8a0d6" -const GTC = "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, //USDC - '0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3',//rad - '0xE54f9E6Ab80ebc28515aF8b8233c1aeE6506a15E',//pasta - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.UNI, - "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3", - "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72" - - ], - owners: [treasury, vestingAddress, treasury2], - ownTokens: [GTC], - }, -}) \ No newline at end of file diff --git a/projects/treasury/giveth.js b/projects/treasury/giveth.js deleted file mode 100644 index 83ab582d266..00000000000 --- a/projects/treasury/giveth.js +++ /dev/null @@ -1,70 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x4D9339dd97db55e3B9bCBE65dE39fF9c04d1C2cd"; - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, // USDC - ADDRESSES.optimism.OP, - ADDRESSES.optimism.DAI, - ADDRESSES.optimism.USDT, - ADDRESSES.optimism.WETH - ], - owners: [treasury], - ownTokens: [], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WETH, - "0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84", //icETH - "0x1d462414fe14cf489c7A21CaC78509f4bF8CD7c0", //can - "0xa117000000f279D81A1D3cc75430fAA017FA5A2e", //ant - "0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb", //bzz - "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72", //ens - "0x2d94AA3e47d9D5024503Ca8491fcE9A2fB4DA198", //bank - "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", //gtc - ADDRESSES.ethereum.YFI, //yfi - ADDRESSES.ethereum.MATIC, //matic - "0xDd1Ad9A21Ce722C151A836373baBe42c868cE9a4", //ubi - ], - owners: [treasury], - ownTokens: ["0x900dB999074d9277c5DA2A43F252D74366230DA0"], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC, // USDC - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.WETH, - ADDRESSES.polygon.WMATIC, - "0x18e73A5333984549484348A94f4D219f4faB7b81", //duckies - "0xD6DF932A45C0f255f85145f286eA0b292B21C90B", //aave - "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39", //link - "0xb33EaAd8d922B1083446DC23f610c2567fB5180f", //uni - ], - owners: [treasury], - ownTokens: [], - }, - xdai: { - tokens: [ - nullAddress, - "0x71850b7E9Ee3f13Ab46d67167341E4bDc905Eef9", //hny - ADDRESSES.xdai.USDC, //usdc - "0x21a42669643f45Bc0e086b8Fc2ed70c23D67509d", //fox - "0x83FF60E2f93F8eDD0637Ef669C69D5Fb4f64cA8E", //bright - ADDRESSES.xdai.WETH, //weth - ADDRESSES.xdai.WXDAI, //wxdai - "0x177127622c4A00F3d409B75571e12cB3c8973d3c", //cow - ], - owners: [treasury], - ownTokens: ["0x4f4F9b8D5B4d0Dc10506e5551B0513B61fD59e75"], - } -}); \ No newline at end of file diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js deleted file mode 100644 index 7346485ec06..00000000000 --- a/projects/treasury/gnosis-dao.js +++ /dev/null @@ -1,111 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const { mergeExports } = require('../helper/utils'); -const { unwrap4626Tokens, unwrapMakerPositions, unwrapConvexRewardPools, } = require('../helper/unwrapLPs') - -const treasury = "0x4971DD016127F390a3EF6b956Ff944d0E2e1e462"; -const treasury1 = "0x0DA0C3e52C977Ed3cBc641fF02DD271c3ED55aFe"; -const treasury2 = "0x849D52316331967b6fF1198e5E32A0eB168D039d"; -const treasury3 = "0xBc79855178842FDBA0c353494895DEEf509E26bB"; -const GNO = ADDRESSES.ethereum.GNO; - -const treasurygnosis = "0x458cd345b4c05e8df39d0a07220feb4ec19f5e6f" -const gnognosis = ADDRESSES.xdai.GNO - -async function tvl(api) { - const treasury = '0x849d52316331967b6ff1198e5e32a0eb168d039d' - await addAuraTvl() - await unwrapMakerPositions({ api, owner: treasury, blacklistedTokens: [ADDRESSES.ethereum.GNO]}) - await unwrapConvexRewardPools({ api, tokensAndOwners: ['0x0A760466E1B4621579a82a39CB56Dda2F4E70f03', '0xf34DFF761145FF0B05e917811d488B441F33a968',].map(i => [i, treasury])}) - - return api.getBalances() - - async function addAuraTvl() { - const auraDepositVaults = [ - '0x712cc5bed99aa06fc4d5fb50aea3750fa5161d0f', - '0x5209db28b3cf22a944401c83370af7a703fffb08', - '0xd3780729035c5b302f76ced0e7f74cf0fb7c739a', - '0xacada51c320947e7ed1a0d0f6b939b0ff465e4c2', - '0x001b78cec62dcfdc660e06a91eb1bc966541d758', - '0xe4683fe8f53da14ca5dac4251eadfb3aa614d528', - '0x6256518ae9a97c408a03aaf1a244989ce6b937f6', - '0x228054e9c056f024fc724f515a2a8764ae175ed6', - ] - return unwrap4626Tokens({ api, tokensAndOwners: auraDepositVaults.map(i => [i, treasury])}) - } -} - -async function ownTokens(api) { - return unwrapMakerPositions({ api, owner: '0x849d52316331967b6ff1198e5e32a0eb168d039d', skipDebt: true, whitelistedTokens: [ADDRESSES.ethereum.GNO]}) -} - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI,//DAI - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643',//cDAI - '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT - ADDRESSES.ethereum.CRV, - '0xba100000625a3754423978a60c9317c58a424e3D',//BAL - ADDRESSES.ethereum.CVX, - '0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB',//COW - ADDRESSES.ethereum.STETH, - '0xE95A203B1a91a908F9B9CE46459d101078c2c3cb',//ankETH - '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS - '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d',//PNK - ADDRESSES.ethereum.WSTETH, - '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA - '0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf',//GEN - '0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6',//RDN - '0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb',//INST - '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX - ADDRESSES.ethereum.LIDO, - '0x1982b2F5814301d4e9a8b0201555376e62F82428', - "0xd33526068d116ce69f19a9ee46f0bd304f21a51f", - "0x543ff227f64aa17ea132bf9886cab5db55dcaddf", - "0xde30da39c46104798bb5aa3fe8b9e0e1f348163f", - "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3", - "0x48c3399719b582dd63eb5aadf12a40b4c3f52fa2", - "0x20bc832ca081b91433ff6c17f85701b6e92486c5", - "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", - "0x9c39809dec7f95f5e0713634a4d0701329b3b4d2", // debt variableDebtWBTC - "0xa13a9247ea42d743238089903570127dda72fe44", - ], - owners: [treasury, treasury1, treasury2, treasury3,], - ownTokens: [GNO], - resolveUniV3: true, - }, - xdai: { - tokens: [ - nullAddress, - ADDRESSES.xdai.WETH, //eth - "0x6C76971f98945AE98dD7d4DFcA8711ebea946eA6", //wstETH - "0xEb30C85CC528537f5350CF5684Ce6a4538e13394", - "0xd4e420bBf00b0F409188b338c5D87Df761d6C894", - "0xBdF4488Dcf7165788D438b62B4C8A333879B7078", - "0x44932e3b1E662AdDE2F7bac6D5081C5adab908c6", - "0x291B5957c9CBe9Ca6f0b98281594b4eB495F4ec1", - "0x3a97704a1b25F08aa230ae53B352e2e72ef52843", - ADDRESSES.xdai.WBTC, - "0xA26783eAd6C1f4744685c14079950622674ae8A8", - "0xa99FD9950B5D5dCeEaf4939E221dcA8cA9B938aB", - "0x21d4c792Ea7E38e0D0819c2011A2b1Cb7252Bd99", - "0x5519E2d8A0af0944EA639C6DBAD69A174DE3ECF8", - "0x4b1E2c2762667331Bc91648052F646d1b0d35984", - "0x388Cae2f7d3704C937313d990298Ba67D70a3709", - "0x1509706a6c66CA549ff0cB464de88231DDBe213B", - "0x712b3d230F3C1c19db860d80619288b1F0BDd0Bd", - "0x7eF541E2a22058048904fE5744f9c7E4C57AF717", - ], - owners: [treasurygnosis], - ownTokens: [gnognosis], - resolveUniV2: true, - }, -}) - -module.exports = mergeExports([module.exports, { - ethereum: { tvl, ownTokens } -}]) diff --git a/projects/treasury/goat-protocol.js b/projects/treasury/goat-protocol.js deleted file mode 100644 index 115b614850b..00000000000 --- a/projects/treasury/goat-protocol.js +++ /dev/null @@ -1,17 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x27A0E8c357fCF2EfA69249461D16BDd2828090DC"; -const arbtreasury = "0x5BE13f90cD86a8bb0f0573B550f04b95927F5dc5"; - -module.exports = treasuryExports({ - ethereum: { - owners: [treasury,], - ownTokens: ["0x901e3059Bf118AbC74d917440F0C08FC78eC0Aa6"], // GOA - resolveLP: true, - }, - arbitrum: { - owners: [arbtreasury,], - ownTokens: ["0x8c6Bd546fB8B53fE371654a0E54D7a5bD484b319"], // GOA - resolveLP: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/goblinscash.js b/projects/treasury/goblinscash.js deleted file mode 100644 index 427f269753e..00000000000 --- a/projects/treasury/goblinscash.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require("../goblinscash/index"); - -delete module.exports.smartbch.staking \ No newline at end of file diff --git a/projects/treasury/goldilocks.js b/projects/treasury/goldilocks.js deleted file mode 100644 index 134e0d1b7c4..00000000000 --- a/projects/treasury/goldilocks.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const goldilocksDAORFAWallet = "0x3B0efb9E4165C56d5b1E8849b38426E1B5615593" -const goldilocksDAOTreasury = "0x6FD990680deB2e5DCcb2FFEfC3307Dd34138Ac7F" -const goldilocksDAOOperations = "0xf5960b86048893bD25766c16aB6Da1aC628D97EE" -const LOCKS = "0xb7E448E5677D212B8C8Da7D6312E8Afc49800466" -const PORRIDGE = "0xbf2E152f460090aCE91A456e3deE5ACf703f27aD" - - -module.exports = treasuryExports({ - berachain: { - tokens: [ - nullAddress, - ADDRESSES.berachain.WBERA, // WBERA - ADDRESSES.berachain.HONEY, // HONEY - ADDRESSES.berachain.USDC, // USDC - "0x69f1E971257419B1E9C405A553f252c64A29A30a", // oriBGT - "0xBaadCC2962417C01Af99fb2B7C75706B9bd6Babe", // LBGT - "0x18878Df23e2a36f81e820e4b47b4A40576D3159C", // OHM - "0x08A38Caa631DE329FF2DAD1656CE789F31AF3142", // YEET - "0xac03CABA51e17c86c921E1f6CBFBdC91F8BB2E6b", // iBGT - "0x7F0976b52F6c1ddcD4d6f639537C97DE22fa2b69", // hiBERO - "0xBaadCC2962417C01Af99fb2B7C75706B9bd6Babe", // LBGT - "0xFace73a169e2CA2934036C8Af9f464b5De9eF0ca", // stLBGT - "0x078e5010752b01ccbc8868cf00cd73e8efe29fe5", // stLBGT / stLBGT-OT Kodiak Island - "0x6Fd7f15a0d7babe0A1a752564a591e1Cb6117F80", // ysysyBGT - ], - owners: [goldilocksDAORFAWallet, goldilocksDAOTreasury, goldilocksDAOOperations], - ownTokens: [LOCKS, PORRIDGE], - }, -}); \ No newline at end of file diff --git a/projects/treasury/golem.js b/projects/treasury/golem.js deleted file mode 100644 index 7dc4a819b21..00000000000 --- a/projects/treasury/golem.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const { mergeExports } = require('../helper/utils'); - -// Treasury -const treasury = "0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9"; -const GLM = "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - // Ethereum Assets - nullAddress, - ], - owners: [treasury, '0x70a0a7be87deb51e1fab16d4f2bf00be1510e476', '0x3d4530082c3eb60f58af03f79b1ed3f40e591cd1'], - ownTokens: [GLM] - }, -}) - -async function tvl(api) { - if(api.timestamp > 1687828149){ - // Staked 100k ETH in validators - api.add(ADDRESSES.null, 100e3*1e18) - } - return api.getBalances() -} - -module.exports = mergeExports([module.exports, { - ethereum: { tvl }, - -}]) - -module.exports.methodology = "The Golem Foundation has staked 100,000 ETH on top of what they hold on the treasury address. https://golem.foundation/2023/12/05/diva-announcement.html . Wallet that accrues the staking rewards https://etherscan.io/address/0xba1951dF0C0A52af23857c5ab48B4C43A57E7ed1" diff --git a/projects/treasury/gooddollar.js b/projects/treasury/gooddollar.js deleted file mode 100644 index 1b2d0ac08ea..00000000000 --- a/projects/treasury/gooddollar.js +++ /dev/null @@ -1,60 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require('../gooddollar/abi.json'); -const BigNumber = require("bignumber.js"); - -const tokens = { - aUSDC: "0xbcca60bb61934080951369a648fb03df4f96263c", - DAI: ADDRESSES.ethereum.DAI, - cDAI: "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", - Gfuse: "0x495d133B938596C9984d462F007B676bDc57eCEC", // GoodDollar on Fuse - FUSE: "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d", // Fuse on Mainnet -}; - -const FUSE_STAKING = '0xA199F0C353E25AdF022378B0c208D600f39a6505'; -const RESERVE_ADDRESS = '0xa150a825d425B36329D8294eeF8bD0fE68f8F6E0'; -const COMMUNITY_SAFE = '0x5Eb5f5fE13d1D5e6440DbD5913412299Bc5B5564'; -const GOODDOLLAR_DECIMALS = 2; - -async function fuseTreasury(timestamp, ethBlock, chainBlocks) { - const gdInCommunitySafe = (await sdk.api.erc20.balanceOf({ - target: tokens.Gfuse, - chain: 'fuse', - owner: COMMUNITY_SAFE, - block: chainBlocks['fuse'] - })).output; - - const gdInFuseStaking = (await sdk.api.erc20.balanceOf({ - target: tokens.Gfuse, - chain: 'fuse', - owner: FUSE_STAKING, - block: chainBlocks['fuse'] - })).output; - - const gdTotal = BigNumber(gdInCommunitySafe).plus(gdInFuseStaking); - - let gdInDAI = await convertGoodDollarsToDai(gdTotal, ethBlock); - - const balances = {}; - sdk.util.sumSingleBalance(balances, tokens.DAI, Number(gdInDAI)); - - return balances; -} - -// Required until GoodDollar lists on CoinGecko -async function convertGoodDollarsToDai(gdAmount, ethBlock) { - const gdPriceInDAI = (await sdk.api.abi.call({ - target: RESERVE_ADDRESS, - abi: abi.currentPriceDAI, - block: ethBlock - })).output; - - return await new BigNumber(gdPriceInDAI).times(gdAmount).div(10 ** GOODDOLLAR_DECIMALS); -} - -module.exports = { - fuse: { - tvl: () => 0, - ownTokens: fuseTreasury - }, -} \ No newline at end of file diff --git a/projects/treasury/grabi.js b/projects/treasury/grabi.js deleted file mode 100644 index ba2213d7654..00000000000 --- a/projects/treasury/grabi.js +++ /dev/null @@ -1,11 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const Treasury = "0x7d9ff6cb1bc3491fed7bf279d8532cab594b29e8"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [], - owners: [Treasury], - ownTokens: ['0x5fd71280b6385157b291b9962f22153fc9e79000'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/grape-dao.js b/projects/treasury/grape-dao.js deleted file mode 100644 index d609c77109f..00000000000 --- a/projects/treasury/grape-dao.js +++ /dev/null @@ -1,16 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - '761tc1rUpTNBMK9rsWX6jajAdj8yQipeUL6BqENasuTJ', - 'B7bKkCv9wt2ps1ZSC5w3u2V98bKtH8JaersqAcBWb1kn', - '6jEQpEnoSRPP8A2w6DWDQDpqrQTJvG4HinaugiBGtQKD', - 'HNT72fiRxX1QoqfWvKUd7a2vCeiJdPfcFdHfyqc7YwvL', - 'AWaMVkukciGYPEpJbnmSXPJzVxuuMFz1gWYBkznJ2qbq' - ], - ownTokens: [ - '9eYJBViDGBXcf61WQfUDdwxtKyVjjLxyKtEhKs35SPnU', // grape - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/gt3.js b/projects/treasury/gt3.js deleted file mode 100644 index 221dc75b31b..00000000000 --- a/projects/treasury/gt3.js +++ /dev/null @@ -1,5 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - polygon: { owners: ['0x50f24DA1d9417b95e462AAa2d0Ae2b433275ee2e'], }, -}) \ No newline at end of file diff --git a/projects/treasury/guacswap.js b/projects/treasury/guacswap.js deleted file mode 100644 index fefa840d7ab..00000000000 --- a/projects/treasury/guacswap.js +++ /dev/null @@ -1,12 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - 'FSKHkZutHAyjcYcqSanE9rLqvEyKrX91BcZmALSznYck', - ], - ownTokens: [ - 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR', // guac - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/guru-network.js b/projects/treasury/guru-network.js deleted file mode 100644 index f03fa933d57..00000000000 --- a/projects/treasury/guru-network.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x167D87A906dA361A10061fe42bbe89451c2EE584"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - '0x777172D858dC1599914a1C4c6c9fC48c99a60990',//solid - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.FRAX, - ], - owners: [treasury], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/gyro.js b/projects/treasury/gyro.js deleted file mode 100644 index a9ee20e5ace..00000000000 --- a/projects/treasury/gyro.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const Treasury = "0x8b1522402fece066d83e0f6c97024248be3c8c01"; - -const GYRO = "0x1b239abe619e74232c827fbe5e49a4c072bd869d"; - - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.BUSD,//BUSD - ADDRESSES.bsc.USDT,//BSC-USD - '0x5ca063a7e2bebefeb2bdea42158f5b825f0f9ffb', - '0xa5399084a5f06d308c4527517bbb781c4dce887c', - ], - owners: [Treasury], - ownTokens: [GYRO], - resolveLP: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/handlefi.js b/projects/treasury/handlefi.js deleted file mode 100644 index ef62616dfdb..00000000000 --- a/projects/treasury/handlefi.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xac459b2b29401b5a4ea90de4320d0956cf86cdbd"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/hashflow.js b/projects/treasury/hashflow.js deleted file mode 100644 index 1fb006f966d..00000000000 --- a/projects/treasury/hashflow.js +++ /dev/null @@ -1,15 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const arbtreasury = "0xDD125048F4A045582dA6c2768ca9D70F3259470C"; -const ethtreasury = "0xff830ce17D39BbD6a4fef9683308D793dF8E34fC"; -const HFTtoken = "0xb3999F658C0391d94A37f7FF328F3feC942BcADC" - -module.exports = treasuryExports({ - arbitrum: { - owners: [arbtreasury], - }, - ethereum: { - owners: [ethtreasury], - ownTokens: [HFTtoken] - } -}) \ No newline at end of file diff --git a/projects/treasury/hector.js b/projects/treasury/hector.js deleted file mode 100644 index 4ae2a1187d1..00000000000 --- a/projects/treasury/hector.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('../hector/index') -const { ohmTreasury } = require('../helper/treasury') - -module.exports = ohmTreasury(index) \ No newline at end of file diff --git a/projects/treasury/hegic.js b/projects/treasury/hegic.js deleted file mode 100644 index 212b5fc1a5a..00000000000 --- a/projects/treasury/hegic.js +++ /dev/null @@ -1,26 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') - -const treasuryARB = "0xf15968a096fc8f47650001585d23bee819b5affb"; -const treasuryETH = "0xd884aca1897ac45515cee6d5fd48f341b4023ace" -const treasuryETH2 = "0x117f55bf3c2e3bcdc7f308504480ee53f754a7ca" -const hegic = "0x584bC13c7D411c00c01A62e8019472dE68768430" - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasuryARB], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDC - ], - owners: [treasuryETH, treasuryETH2], - ownTokens: [hegic], - }, -}) \ No newline at end of file diff --git a/projects/treasury/hercules.js b/projects/treasury/hercules.js deleted file mode 100644 index 614151603b0..00000000000 --- a/projects/treasury/hercules.js +++ /dev/null @@ -1,14 +0,0 @@ - -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x5c24bA2eA12f94E9F3476eaBDf10373dC2913605"; - -module.exports = treasuryExports({ - metis: { - owners: [treasury], - ownTokens: [ - '0xbB1676046C36BCd2F6fD08d8f60672c7087d9aDF', - ], - tokens: [] - }, -}); \ No newline at end of file diff --git a/projects/treasury/hop.js b/projects/treasury/hop.js deleted file mode 100644 index a23e02ec367..00000000000 --- a/projects/treasury/hop.js +++ /dev/null @@ -1,17 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: ['0xeea8422a08258e73c139fc32a25e10410c14bd7a'], - ownTokens: [], - }, - ethereum: { - tokens: [ - ], - owners: ['0xeea8422a08258e73c139fc32a25e10410c14bd7a'], - ownTokens: ['0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/hyperblast.js b/projects/treasury/hyperblast.js deleted file mode 100644 index 973767399c8..00000000000 --- a/projects/treasury/hyperblast.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const Treasury = "0x2d741ac2647707297f38c48437b4f48e6c97c624"; - -const HYPE = "0x9FE9991dAF6b9a5d79280F48cbb6827D46DE2EA4"; - -module.exports = treasuryExports({ - blast: { - tokens: [ - nullAddress, - ADDRESSES.blast.USDB //usdb - ], - owners: [Treasury], - ownTokens: [HYPE], - }, -}) \ No newline at end of file diff --git a/projects/treasury/idle-dao.js b/projects/treasury/idle-dao.js deleted file mode 100644 index 8c059d3c662..00000000000 --- a/projects/treasury/idle-dao.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -//eth -const treasury = "0xb0aA1f98523Ec15932dd5fAAC5d86e57115571C7"; -const treasury1 = "0x107A369bc066c77FF061c7d2420618a6ce31B925"; -const treasury2 = "0x69a62C24F16d4914a48919613e8eE330641Bcb94"; -const treasury3 = "0xbecc659bfc6edca552fa1a67451cc6b38a0108e4"; -const treasury4 = "0x076ff8e6402b02855ff82119b53e59bbdd67f0ee"; -const treasury5 = "0xFb3bD022D5DAcF95eE28a6B07825D4Ff9C5b3814" - -const IDLE = "0x875773784af8135ea0ef43b5a374aad105c5d39e"; - -// polygon - -const treasuryPolygon = "0x1d60E17723f8Ca1F76F09126242AcD37a278b514" -const treasuryPolygon1 = "0x61A944Ca131Ab78B23c8449e0A2eF935981D5cF6" - -const IDLEPolygon = "0xc25351811983818c9fe6d8c580531819c8ade90f" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - "0x4da27a545c0c5B758a6BA100e3a049001de870f5", //stkAAVE - ADDRESSES.ethereum.BNB, - "0xc00e94Cb662C3520282E6f5717214004A7f26888",//comp - ADDRESSES.ethereum.sUSD, - "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919",//RAI - ADDRESSES.ethereum.SUSHI, - ADDRESSES.ethereum.MATIC, - ADDRESSES.ethereum.LIDO, - "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF",//alcx - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.LINK, - ], - owners: [treasury, treasury1, treasury2, treasury3, treasury4, treasury5], - ownTokens: [IDLE], - }, - polygon: { - tokens: [ - nullAddress, - "0xf28164A485B0B2C90639E47b0f377b4a438a16B1",//dquick - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.WMATIC_2,//wmatic - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.USDC, - "0x580A84C73811E1839F75d86d75d88cCa0c241fF4",//QI - ], - owners: [treasuryPolygon, treasuryPolygon1], - ownTokens: [IDLEPolygon] - } -}) \ No newline at end of file diff --git a/projects/treasury/illuvium.js b/projects/treasury/illuvium.js deleted file mode 100644 index 78ca8eea09c..00000000000 --- a/projects/treasury/illuvium.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const Treasury = "0x58c37a622cdf8ace54d8b25c58223f61d0d738aa"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [], - owners: [Treasury], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.SUSHI, - ADDRESSES.ethereum.SAFE, - ], - owners: [Treasury], - ownTokens: ['0x767fe9edc9e0df98e07454847909b5e959d7ca0e'], - } -}) \ No newline at end of file diff --git a/projects/treasury/immortal.js b/projects/treasury/immortal.js deleted file mode 100644 index 54ec1ab4131..00000000000 --- a/projects/treasury/immortal.js +++ /dev/null @@ -1,5 +0,0 @@ -const olympus = require("../immortal/index"); - -module.exports = olympus; - -delete module.exports.celo.staking \ No newline at end of file diff --git a/projects/treasury/impermax.js b/projects/treasury/impermax.js deleted file mode 100644 index 27e981b1263..00000000000 --- a/projects/treasury/impermax.js +++ /dev/null @@ -1,25 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xc28f68cd2df0fcc50f0058fb20abbc77bec8bdc6"; -const operations = "0x2157bfbb446744fc92bd95c3911eb58d0a9b01bd"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury, operations], - }, - base: { - tokens: [ - nullAddress, - ], - owners: [treasury, operations], - }, - blast: { - tokens: [ - nullAddress, - ], - owners: [treasury, operations], - }, -}) diff --git a/projects/treasury/index-coop.js b/projects/treasury/index-coop.js deleted file mode 100644 index 30c718a5fb6..00000000000 --- a/projects/treasury/index-coop.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x9467cfADC9DE245010dF95Ec6a585A506A8ad5FC"; -const treasury2 = "0x462a63d4405a6462b157341a78fd1babfd3f8065" -const treasury3 = "0xfafd604d1cc8b6b3b6cc859cf80fd902972371c1" - -const INDEX = "0x0954906da0Bf32d5479e25f46056d22f08464cab"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.SAFE, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - '0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84', - '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd', - '0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD', - '0x39AA39c021dfbaE8faC545936693aC917d5E7563', - ADDRESSES.ethereum.LUSD, - ADDRESSES.ethereum.USDT, - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' - ], - owners: [treasury, treasury2, treasury3], - ownTokens: [INDEX], - }, -}) \ No newline at end of file diff --git a/projects/treasury/india-covid-relief-fund.js b/projects/treasury/india-covid-relief-fund.js deleted file mode 100644 index 8a8c422174a..00000000000 --- a/projects/treasury/india-covid-relief-fund.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury") -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const Treasury = "0x68A99f89E475a078645f4BAC491360aFe255Dff1"; -const Treasury_bsc = "0x5C9E5571B17D91e6ACcD4F0c29bBe199Af1f7B09"; -const Treasury_trx = "TSZMcrQzMLdKrgiMPoe2uQMHLeEpkf2j8E" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//usdc - ADDRESSES.ethereum.USDT,//usdt - ADDRESSES.ethereum.MATIC,//matic - ADDRESSES.ethereum.MKR,//mkr - ADDRESSES.ethereum.GNO,//gno - ADDRESSES.ethereum.DAI,//dai - ], - owners: [Treasury], - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.BUSD,//busd - ADDRESSES.bsc.USDT,//busd usdc - ADDRESSES.bsc.WBNB,//wbnb - ], - owners: [Treasury_bsc] - }, - tron: { - tokens: [ - nullAddress, - ADDRESSES.tron.USDT, - ], - owners: [Treasury_trx] - }, - bitcoin: { - tokens: [ - nullAddress, - ], - owners: bitcoinAddressBook.indiaCovid - } - //https://cryptorelief.in/transparency -}) \ No newline at end of file diff --git a/projects/treasury/instadapp.js b/projects/treasury/instadapp.js deleted file mode 100644 index 68db6fd8eef..00000000000 --- a/projects/treasury/instadapp.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const Treasury = "0xf81ab897e3940e95d749ff2e1f8d38f9b7cbe3cf"; -const treasuryETH = "0x28849d2b63fa8d361e5fc15cb8abb13019884d09" - -const INST = "0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb" - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - "0x8971dFb268B961a9270632f28B24F2f637c94244", - ADDRESSES.optimism.DAI - ], - owners: [Treasury], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.USDT - ], - owners: [treasuryETH], - ownTokens: [INST], - }, -}) \ No newline at end of file diff --git a/projects/treasury/insure-dao.js b/projects/treasury/insure-dao.js deleted file mode 100644 index 659b49ea458..00000000000 --- a/projects/treasury/insure-dao.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xd076397ec36f1c92939bd8cda9f9f7734f308c4b"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/interport-finance.js b/projects/treasury/interport-finance.js deleted file mode 100644 index e4f67fbac0c..00000000000 --- a/projects/treasury/interport-finance.js +++ /dev/null @@ -1,17 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const Treasury1 = "0xa67488eEAa9C15a4F6f5A3E98f45041e34310677"; -const Treasury2 = "0x4883A3696768c226EF917BCc32bDBA67F14e2b4c"; - -const ITP = "0x2b1D36f5B61AdDAf7DA7ebbd11B35FD8cfb0DE31"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress - ], - owners: [Treasury1,Treasury2], - ownTokens: [ITP], - }, -}) \ No newline at end of file diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js deleted file mode 100644 index d1bc67789e7..00000000000 --- a/projects/treasury/inverse.js +++ /dev/null @@ -1,152 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const inv = "0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68"; -const anchorTreasury = "0x926df14a23be491164dcf93f4c468a50ef659d5b"; -const treasurymultisig = "0x9D5Df30F475CEA915b1ed4C0CCa59255C897b61B"; -const opmultisig = "0xa283139017a2f5bade8d8e25412c600055d318f8"; -const bnbmultisig = "0xf7da4bc9b7a6bb3653221ae333a9d2a2c2d5bda7"; -const basemultisig = "0x586CF50c2874f3e3997660c0FD0996B090FB9764"; -const arbmultisig = "0x233Ca46D4882609C53fcbD2FCFaAe92D2eA89538"; -const arbmultisig2 = "0x23dEDab98D7828AFBD2B7Ab8C71089f2C517774a"; -const polmultisig = "0x5D18b089e838DFFbb417A87874435175F3A9B000"; -const avaxmultisig = "0x1A927B237a57421C414EB511a33C4B82C2718677"; -const pcmultisig = "0x4b6c63e6a94ef26e2df60b89372db2d8e211f1b7" -const bugbountymultisig = "0x943dbdc995add25a1728a482322f9b3c575b16fb" -const fedchair = "0x8f97cca30dbe80e7a8b462f1dd1a51c32accdfc8" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - "0x865377367054516e17014CcdED1e7d814EDC9ce4", // DOLA - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.YFI, - "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", // AURA - "0xba100000625a3754423978a60c9317c58a424e3D", // BAL - "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT - ADDRESSES.ethereum.cvxFXS, - ADDRESSES.ethereum.CRV, - ADDRESSES.ethereum.CVX, - "0x4C2e59D098DF7b6cBaE0848d66DE2f8A4889b9C3", // FODL - ADDRESSES.ethereum.SAFE, - "0x22915f309EC0182c85cD8331C23bD187fd761360", // DOLA USDC Stable Pool Aura Deposit Vault - "0x7f50786A0b15723D741727882ee99a0BF34e3466", // Stake DAO sdCRV Gauge - "0xf24d8651578a55b0c119b9910759a351a3458895", // sdBAL - "0x445494F823f3483ee62d854eBc9f58d5B9972A25", // 50DOLA-50DBR - "0xb204BF10bc3a5435017D3db247f56dA601dFe08A", // 50DOLA-50WETH - "0x7e05540A61b531793742fde0514e6c136b5fbAfE", // xFODL - "0x0a6B1d9F920019BAbc4De3F10c94ECB822106104", - "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", - "0xbD1F921786e12a80F2184E4d6A5cAcB25dc673c9", // dola-inv uni - ], - owners: [anchorTreasury, treasurymultisig, pcmultisig, bugbountymultisig, fedchair], - ownTokens: [ - inv, - "0xAD038Eb671c44b853887A7E32528FaB35dC5D710", // DBR - "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", // Uniswap INV/ETH LP - "0xA5D7A7690B72a89B7b720E43fC9cBda5419d0C71", // 50INV-50DOLA Aura Deposit Vault - ], - resolveUniV3: true, - resolveLP: true, - blacklistedTokens: [ - '0x21e83dbfd8f11d885eba9f9ba126da11ae0671b7', - '0x265befe2b1a0f4f646dea96ba09c1656b74bda91', - ], - convexRewardPools: [ - "0x9a2d1b49b7c8783E37780AcE4ffA3416Eea64357",// DBR tripool CVX - "0x21E2d7f66DF6F4e8199210b9490a51831C9847C7",// inv tripool CVX - "0xE8cBdBFD4A1D776AB1146B63ABD1718b2F92a823",// dola-fraxpyusd lp CVX - "0x2ef1dA0368470B2603BAb392932E70205eEb9046",// dola-fxusd lp CVX - "0x0404d05F3992347d2f0dC3a97bdd147D77C85c1c",// dola-fraxusdc lp CVX - ], - auraPools: [ - // "0xA36d3799eA28f4B75653EBF9D91DDA4519578086", // sDOLA-DOLA aura pool - ], - blacklistedLPs: [ - '0xcb79637aaffdc1e8db17761fa10367b46745ecb0' - ] - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.USDC_CIRCLE, - "0x8aE125E8653821E851F12A49F7765db9a9ce7384", // DOLA - "0x9560e827af36c94d2ac33a39bce1fe78631088db", // VELO - ], - solidlyVeNfts: [ - { baseToken: "0x9560e827af36c94d2ac33a39bce1fe78631088db", veNft: "0xFAf8FD17D9840595845582fCB047DF13f006787d" },// veVelo - ], - owners: [opmultisig], - ownTokens: [], - }, - base: { - tokens: [ - nullAddress, - ADDRESSES.base.USDC, - ADDRESSES.base.USDbC, - "0x4621b7A9c75199271F773Ebd9A499dbd165c3191", // DOLA - "0x940181a94A35A4569E4529A3CDfB74e38FD98631", // AERO - ], - solidlyVeNfts: [ - { baseToken: "0x940181a94A35A4569E4529A3CDfB74e38FD98631", veNft: "0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4" },// veVelo - ], - owners: [basemultisig], - ownTokens: [], - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.WBNB, - "0x2F29Bc0FFAF9bff337b31CBe6CB5Fb3bf12e5840", // DOLA - "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11", // THENA - ], - solidlyVeNfts: [ - { isAltAbi: true, baseToken: "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11", veNft: "0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D" },// veTHENA - ], - owners: [bnbmultisig], - ownTokens: [], - }, - avax: { - tokens: [ - nullAddress, - ADDRESSES.avax.USDC, - '0x221743dc9E954bE4f86844649Bf19B43D6F8366d', // DOLA - '0xeeee99b35Eb6aF5E7d76dd846DbE4bcc0c60cA1d', // SNEK - ], - solidlyVeNfts: [ - { isAltAbi: true, baseToken: "0xeeee99b35Eb6aF5E7d76dd846DbE4bcc0c60cA1d", veNft: "0xeeee3Bf0E550505C0C17a8432065F2f6b9D06350" },// veSNEK - ], - owners: [avaxmultisig], - ownTokens: [], - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.DAI, - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.WETH, - "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418", // RAM - ], - solidlyVeNfts: [ - { isAltAbi: true, baseToken: "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418", veNft: "0xAAA343032aA79eE9a6897Dab03bef967c3289a06" },// veRAM - { isAltAbi: true, baseToken: "0x5DB7b150c5F38c5F5db11dCBDB885028fcC51D68", veNft: "0x450330Df68E1ed6e0683373D684064bDa9115fEe" },// veSTR - { isAltAbi: true, baseToken: "0x463913D3a3D3D291667D53B8325c598Eb88D3B0e", veNft: "0x29d3622c78615A1E7459e4bE434d816b7de293e4" },// veSLIZ - { hasTokensOfOwnerAbi: true, baseToken: "0x15b2fb8f08E4Ac1Ce019EADAe02eE92AeDF06851", veNft: "0x9A01857f33aa382b1d5bb96C3180347862432B0d" },// veCHRONOS - ], - owners: [arbmultisig2, arbmultisig], - ownTokens: [], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC, - '0xbC2b48BC930Ddc4E5cFb2e87a45c379Aab3aac5C', // DOLA - ], - owners: [polmultisig], - }, -}); diff --git a/projects/treasury/ipor.js b/projects/treasury/ipor.js deleted file mode 100644 index f25c2312d2a..00000000000 --- a/projects/treasury/ipor.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const treasury = "0x558c8eb91F6fd83FC5C995572c3515E2DAF7b7e0"; -const operations = "0xB7bE82790d40258Fd028BEeF2f2007DC044F3459"; -const ipor = "0x1e4746dC744503b53b4A082cB3607B169a289090"; -const tokens = [ - nullAddress, - ADDRESSES.ethereum.WETH, // WETH -]; - -module.exports = treasuryExports({ - ethereum: { - tokens, - owners: [treasury, operations], - ownTokens: [ipor], - resolveLP: true, - }, -}); diff --git a/projects/treasury/iq.js b/projects/treasury/iq.js deleted file mode 100644 index caa545cdbd2..00000000000 --- a/projects/treasury/iq.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x56398b89d53e8731bca8c1b06886cfb14bd6b654"; -const IQ = "0x579CEa1889991f68aCc35Ff5c3dd0621fF29b0C9" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.sfrxETH, - ADDRESSES.ethereum.FRAX, - "0x9D45081706102E7aadDD0973268457527722E274", - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.FXS, - "0xEF9F994A74CB6EF21C38B13553caa2E3E15F69d0" - ], - owners: [treasury], - ownTokens: [IQ], - }, -}) diff --git a/projects/treasury/jackson.js b/projects/treasury/jackson.js deleted file mode 100644 index f0658acdf0b..00000000000 --- a/projects/treasury/jackson.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -const treasuryOwners = [ - "0x8Ec3cA3535c246D694a2AE3D3Df1F202cc3C0b5D" -]; - -const WBTC = ADDRESSES.ethereum.WBTC; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - WBTC, - ], - owners: treasuryOwners, - }, -}) diff --git a/projects/treasury/jade-protocol.js b/projects/treasury/jade-protocol.js deleted file mode 100644 index 9ea92d434bb..00000000000 --- a/projects/treasury/jade-protocol.js +++ /dev/null @@ -1,56 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x6f0bc6217faa5a2f503c057ee6964b756a09ae2c"; -const treasury1 = "0xcb0718b150552af8904e7cb1c62758dcb149b072"; - -const treasuryBSC = "0x169169a50d9a8fbf99edacf9aa10297e2b3c92dd"; - -const treasuryAVAX = "0xaeA6B4AAd5e315a40aFD77a1F794F61161499Fa5"; - -const treasuryOP = "0x489f866c0698C8D6879f5C0F527bc8281046042D"; -const treasuryARB = "0x02944e3fb72aa13095d7cebd8389fc74bec8e48e"; -const treasuryARB2 = "0xd012A9C8159b0E7325448eD30B1499FddDAc0F40"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.sfrxETH, - ADDRESSES.ethereum.FXS, // FXS - ], - owners: [treasury, treasury1], - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.BUSD, - ], - owners: [treasuryBSC], -}, -avax: { - tokens: [ - nullAddress, - ADDRESSES.avax.USDC, - ], - owners: [treasuryAVAX] -}, -optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, - ], - owners: [treasuryOP] -}, -arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - '0x0C4681e6C0235179ec3D4F4fc4DF3d14FDD96017', //rdnt - ADDRESSES.arbitrum.GMX, - ], - owners: [treasuryARB, treasuryARB2] -} -}) \ No newline at end of file diff --git a/projects/treasury/jonesdao.js b/projects/treasury/jonesdao.js deleted file mode 100644 index 7d630dd1b82..00000000000 --- a/projects/treasury/jonesdao.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xFa82f1bA00b0697227E2Ad6c668abb4C50CA0b1F"; -const jones = "0x10393c20975cF177a3513071bC110f7962CD67da"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, // USDC - "0x3d9907F9a368ad0a51Be60f7Da3b97cf940982D8", // GRAIL - ADDRESSES.arbitrum.MIM, // MIM - "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL - "0x616279fF3dBf57A55e3d1F2E309e5D704E4e58Ae", // jGLP-USDC CMLT-LP - "0x2bcd0aac7D98697D8760fB291625829113E354e7", // jUSDC-WETH CMLT-LP - "0x7241bC8035b65865156DDb5EdEf3eB32874a3AF6", // jGLP - "0xe66998533a1992ecE9eA99cDf47686F4fc8458E0", // jUSDC old - "0xB0BDE111812EAC913b392D80D51966eC977bE3A2", // jUSDC new - "0xd2D1162512F927a7e282Ef43a362659E4F2a728F", // sbfGMX - ], - owners: [treasury], - ownTokens: [jones], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ], - owners: [treasury], - ownTokens: [], - }, -}); diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js deleted file mode 100644 index 56a54877a3f..00000000000 --- a/projects/treasury/jpegd.js +++ /dev/null @@ -1,57 +0,0 @@ -const sdk = require('@defillama/sdk') -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const jpegd = "0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3"; - -// Owners -const multisig = "0x51C2cEF9efa48e08557A361B52DB34061c025a1B"; -const donationEvent = "0x3b7157E5E732863170597790b4c005436572570F"; -const usdcVault = "0xFD110cf7985f6B7cAb4dc97dF1932495cADa9d08"; -const usdtVault = "0x152DE634FF2f0A6eCBd05cB591cD1eEaCd2900Ed"; -const pethVault = "0x548cAB89eBF34509Ae562BC8cE8D5Cdb4F08c3AD"; - -const treasuryTvl = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.CVX, - ADDRESSES.ethereum.FRAX, - ADDRESSES.ethereum.LINK, - ADDRESSES.ethereum.cvxCRV, - ADDRESSES.ethereum.SAFE, - ADDRESSES.ethereum.vlCVX, - ADDRESSES.ethereum.sfrxETH, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.RETH, - "0x836A808d4828586A69364065A1e064609F5078c7", // pETH - // Liquidity positions - "0xC47EBd6c0f68fD5963005D28D0ba533750E5C11B", // pUSDFRAXBP3CRV-f - "0x34eD182D0812D119c92907852D2B429f095A9b07", // JPEGETH-f - "0x9848482da3Ee3076165ce6497eDA906E66bB85C5", // pETH-ETH-f - "0xdB06a76733528761Eda47d356647297bC35a98BD", // JPEGWETH SLP - ], - owners: [multisig, donationEvent, usdcVault, usdtVault, pethVault], - ownTokens: [jpegd], - resolveUniV3: true, - }, -}); - -const liquidityTvl = async (api) => { - const troveManager = '0xA39739EF8b0231DbFA0DcdA07d7e29faAbCf4bb2' - const stabilityPool = '0x66017d22b0f8556afdd19fc67041899eb65a21bb' - const troveData = await api.call({ abi: 'function Troves(address) view returns (uint256 debt, uint256 coll,uint256 stake ,uint8 status , uint128 arrayIndex )', target: troveManager, params: multisig }) - const stabilityData = await api.call({ abi: 'function deposits(address) view returns ( uint256 initialValue, address frontEndTag )', target: stabilityPool, params: multisig }) - api.add(ADDRESSES.ethereum.LUSD, troveData.debt * -1) - api.add(ADDRESSES.ethereum.LUSD, stabilityData.initialValue) - api.add(ADDRESSES.null, troveData.coll) - return api.getBalances() -} -treasuryTvl.ethereum.tvl = sdk.util.sumChainTvls([treasuryTvl.ethereum.tvl, liquidityTvl]) - -module.exports = treasuryTvl \ No newline at end of file diff --git a/projects/treasury/just-yield.js b/projects/treasury/just-yield.js deleted file mode 100644 index 48b09d9d24b..00000000000 --- a/projects/treasury/just-yield.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const Treasury = "0xeCa31b3cbD0C65CC3Ea2DE2338693B74445B0c2C"; - - - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.WETH,//weth - ], - owners: [Treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/k9finance.js b/projects/treasury/k9finance.js deleted file mode 100644 index 2622ebfd217..00000000000 --- a/projects/treasury/k9finance.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xDA4Df6E2121eDaB7c33Ed7FE0f109350939eDA84"; -const shibtreasury = "0x5C3d21D406226F17a06510F1CB9157BD9e751416" - -module.exports = treasuryExports({ - ethereum: { - tokens: [nullAddress], - owners: [treasury], - ownTokens: ["0x91fbb2503ac69702061f1ac6885759fc853e6eae"] - }, - shibarium: { - tokens: [nullAddress,ADDRESSES.shibarium.BONE_5], - owners: [shibtreasury], - ownTokens: ["0x91fbB2503AC69702061f1AC6885759Fc853e6EaE"] - }, -}) \ No newline at end of file diff --git a/projects/treasury/karpatkey.js b/projects/treasury/karpatkey.js deleted file mode 100644 index 0affaa405fe..00000000000 --- a/projects/treasury/karpatkey.js +++ /dev/null @@ -1,7 +0,0 @@ -const { karpatKeyTvl } = require('../helper/karpatkey'); - -module.exports={ - ethereum:{ - tvl: async (api)=>karpatKeyTvl(api, "karpatkey DAO", ""), - } - } \ No newline at end of file diff --git a/projects/treasury/keeperdao.js b/projects/treasury/keeperdao.js deleted file mode 100644 index c4d7f2b540d..00000000000 --- a/projects/treasury/keeperdao.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const keeperDaoTreasury = "0x9a67F1940164d0318612b497E8e6038f902a00a4"; -const ROOK = "0xfA5047c9c78B8877af97BDcb85Db743fD7313d4a"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - '0xFe2e637202056d30016725477c5da089Ab0A043A',//sETH2 - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.RETH,//rETH - ADDRESSES.ethereum.STETH,//stETH - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.WBTC,//WBTC - '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX - '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',//renBTC - ADDRESSES.ethereum.USDT - ], - owners: [keeperDaoTreasury], - ownTokens: [ROOK], - }, -}) diff --git a/projects/treasury/kei.js b/projects/treasury/kei.js deleted file mode 100644 index 216ff4b95f1..00000000000 --- a/projects/treasury/kei.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - ADDRESSES.ethereum.WETH, - '0x7d87123d92e9df257e0789189e4c4ff67fa6c382', - ], - owners: ['0x3D027824a9Eb4cc5E8f24D97FD8495eA9DC7026F'], - ownTokens: ['0xF75C7a59bCD9bd207C4Ab1BEB0b32EEd3B6392f3'], - resolveLP: true, - }, -}) diff --git a/projects/treasury/kinetiq.js b/projects/treasury/kinetiq.js deleted file mode 100644 index e96c5655de6..00000000000 --- a/projects/treasury/kinetiq.js +++ /dev/null @@ -1,8 +0,0 @@ -const { treasuryExports } = require('../helper/treasury'); - -module.exports = treasuryExports({ - hyperliquid: { - owners: ['0x64bD77698Ab7C3Fd0a1F54497b228ED7a02098E3'], - ownTokens: ['0xfd739d4e423301ce9385c1fb8850539d657c296d'], - } -}); \ No newline at end of file diff --git a/projects/treasury/king-finance.js b/projects/treasury/king-finance.js deleted file mode 100644 index 6c339ddef46..00000000000 --- a/projects/treasury/king-finance.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const TREASURY1 = '0x2eecdb4631c3d2f49d56b4cbfede4c7b23151337' -const TREASURY2 = '0x0af6fef0248d666f0bfd73e65485186526411337' -const TREASURY3 = '0x74f08aF7528Ffb751e3A435ddD779b5C4565e684' -const TREASURY4 = '0xa6449e07ee26d552bc7a2656038cd19b1b691337' - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.USDT, - ], - owners: [TREASURY1, TREASURY2, TREASURY3, TREASURY4,], - ownTokens: ['0x74f08aF7528Ffb751e3A435ddD779b5C4565e684'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/kinza.js b/projects/treasury/kinza.js deleted file mode 100644 index bf35c967c77..00000000000 --- a/projects/treasury/kinza.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x65FDCD48c4807F67429Bdc731d6964f5553CdB36"; - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.WBNB, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/klima-dao.js b/projects/treasury/klima-dao.js deleted file mode 100644 index ae812f6f221..00000000000 --- a/projects/treasury/klima-dao.js +++ /dev/null @@ -1,72 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - - -const klimaTreasury1 = "0x7dd4f0b986f032a44f913bf92c9e8b7c17d77ad7"; -const daoWallet_polygon = "0x65A5076C0BA74e5f3e069995dc3DAB9D197d995c" -const daoWallet_base = "0xa79cd47655156b299762dfe92a67980805ce5a31" - -const KLIMA_polygon = "0x4e78011ce80ee02d2c3e649fb657e45898257815"; // on polygon -const KLIMA_base = "0xdcefd8c8fcc492630b943abcab3429f12ea9fea2"; // on base - -const AERO = "0x940181a94A35A4569E4529A3CDfB74e38FD98631"; -const aeroVotingEscrow = "0xebf418fe2512e7e6bd9b87a8f0f294acdc67e6b4"; - -// aerodrome pools -// const vAMM_WETH_KLIMA = "0xB37642E87613d8569Fd8Ec80888eA6c63684E79e" - -const veAEROIds = [ - "22922", - "20882", - "20680", - "19983", -]; - -module.exports = treasuryExports({ - polygon: { - tokens: [ - nullAddress, - '0x2F800Db0fdb5223b3C3f354886d907A671414A7F', // BCT - ADDRESSES.polygon.USDC, // USDC - ADDRESSES.polygon.USDC_CIRCLE, - ADDRESSES.polygon.USDT, - '0xD838290e877E0188a4A44700463419ED96c16107', // NCT - '0xAa7DbD1598251f856C12f63557A4C4397c253Cea', // MCO2 - '0x2B3eCb0991AF0498ECE9135bcD04013d7993110c', // UBO - '0x6BCa3B77C1909Ce1a4Ba1A20d1103bDe8d222E48', // NBO - '0x5786b267d35F9D011c4750e0B0bA584E1fDbeAD1', // USDC/KLIMA SLP - '0x9803c7aE526049210a1725F7487AF26fE2c24614', // BCT/KLIMA SLP - '0xb2D0D5C86d933b0aceFE9B95bEC160d514d152E1', // NCT/KLIMA SLP - '0x64a3b8cA5A7e406A78e660AE10c7563D9153a739', // MCO2/KLIMA Quickswap LP - '0x5400A05B8B45EaF9105315B4F2e31F806AB706dE', // UBO/KLIMA SLP - '0x251cA6A70cbd93Ccd7039B6b708D4cb9683c266C', // NBO/KLIMA SLP - "0x1E67124681b402064CD0ABE8ed1B5c79D2e02f64", // USDC.e-BCT Sushi LP - "0x4D2263FF85e334C1f1d04C6262F6c2580335a93C", // KLIMA-CCO2 Sushi LP - - // Carbon - "0x03E3369af9390493CB7CC599Cd5233D50e674Da4", // MOSS - "0xad01DFfe604CDc172D8237566eE3a3ab6524d4C6", // C3 - "0x672688C6Ee3E750dfaA4874743Ef693A6f2538ED", // CRISP-C - "0x82B37070e43C1BA0EA9e2283285b674eF7f1D4E2", // CCO2 - ], - owners: [klimaTreasury1, daoWallet_polygon], - ownTokens: [KLIMA_polygon], - }, - base: { - tokens: [ - nullAddress, - ADDRESSES.base.USDC, // USDC - //ADDRESSES.base.USDT, - ADDRESSES.base.WETH, - '0x576Bca23DcB6d94fF8E537D88b0d3E1bEaD444a2', // BCT (base address) - '0x20b048fa035d5763685d695e66adf62c5d9f5055', // CHAR - AERO, - '0x16E1846aaFD6ecf91De676e7B6fc23f09a83F258', // WOOD - ], - solidlyVeNfts: [ - { baseToken: AERO, veNft: aeroVotingEscrow}, - ], - owners: [daoWallet_base], - ownTokens: [KLIMA_base], - }, -}); diff --git a/projects/treasury/koyo.js b/projects/treasury/koyo.js deleted file mode 100644 index 9334b441f32..00000000000 --- a/projects/treasury/koyo.js +++ /dev/null @@ -1,17 +0,0 @@ -const constants = require("../koyo/constants"); -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - boba: { - tokens: Object.values(constants.addresses.boba.tokens), - owners: [constants.addresses.boba.treasury], - ownTokens: [constants.addresses.boba.tokens.KYO], - }, - ethereum: { - tokens: [ - constants.addresses.ethereum.USDC - ], - owners: [constants.addresses.ethereum.treasury], - ownTokens: [], - }, -}) diff --git a/projects/treasury/kpk.js b/projects/treasury/kpk.js deleted file mode 100644 index da19b6a7b64..00000000000 --- a/projects/treasury/kpk.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x58e6c7ab55Aa9012eAccA16d1ED4c15795669E1C"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - ADDRESSES.ethereum.WEETH, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.SAFE, - "0x4da27a545c0c5B758a6BA100e3a049001de870f5", // stkAAVE, - "0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab", // COW - "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72", // ENS - ADDRESSES.ethereum.UNI, - "0x0d438f3b5175bebc262bf23753c1e53d03432bde", // WNXM - ADDRESSES.ethereum.LIDO, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.GNO, - ADDRESSES.ethereum.CRVUSD, - "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", // AURA - ADDRESSES.ethereum.CVX, - "0xd33526068d116ce69f19a9ee46f0bd304f21a51f", // RPL - "0x39b8B6385416f4cA36a20319F70D28621895279D", // EURe - ], - owners: [treasury] - }, -}) diff --git a/projects/treasury/kromatika.js b/projects/treasury/kromatika.js deleted file mode 100644 index dc872054ac9..00000000000 --- a/projects/treasury/kromatika.js +++ /dev/null @@ -1,43 +0,0 @@ -const { token } = require('@coral-xyz/anchor/dist/cjs/utils'); -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); -const { ethereum } = require('../helper/whitelistedNfts'); - -const Treasury = "0x8e35cc21fbcade0a5483ce430e0d5456086a36d3"; -const opTreasury = "0x05d235d8Ba95bfc457f9a11F64cf869f0f3f60F9"; -const ethTreasury = "0xC5bF7A684a0dfCA02A1E603b1d27af0aF523A54F"; -const polygonTreasury = "0x59bFbaa9BEB41C1cf3f874529776449852c21f5d"; - -const KROM = "0x55fF62567f09906A85183b866dF84bf599a4bf70"; -const opKROM = "0xF98dCd95217E15E05d8638da4c91125E59590B07"; -const ethKROM = "0x3af33bEF05C2dCb3C7288b77fe1C8d2AeBA4d789"; -const polygonKROM = "0x14Af1F2f02DCcB1e43402339099A05a5E363b83c"; - - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - "0x8971dFb268B961a9270632f28B24F2f637c94244" - ], - owners: [Treasury], - ownTokens: [KROM], - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.OP, - ], - owners: [opTreasury], - ownTokens: [opKROM], - }, - ethereum: { - owners: [ethTreasury], - ownTokens: [ethKROM], - }, - polygon: { - owners: [polygonTreasury], - ownTokens: [polygonKROM] - } -}) \ No newline at end of file diff --git a/projects/treasury/kyber.js b/projects/treasury/kyber.js deleted file mode 100644 index 57722bfb52d..00000000000 --- a/projects/treasury/kyber.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0xe6a7338cba0a1070adfb22c07115299605454713" -const treasury2 = "0x91c9d4373b077ef8082f468c7c97f2c499e36f5b" -const knc = "0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202" -const kncarb = "0xe4DDDfe67E7164b0FE14E218d80dC4C08eDC01cB" -const kncop = "0xa00E3A3511aAC35cA78530c85007AFCd31753819" -const kncbsc= "0xfe56d5892BDffC7BF58f2E84BE1b2C32D21C308b" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT - - ], - owners: [treasury, treasury2], - ownTokens: [knc], - }, - arbitrum: { - tokens: [ - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDC_CIRCLE, - "0x3F56e0c36d275367b8C502090EDF38289b3dEa0d" //MAI - ], - owners: [treasury2], - ownTokens: [kncarb], - }, - optimism: { - tokens: [ - ADDRESSES.optimism.OP, - ADDRESSES.optimism.WETH, - "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4" - ], - owners: [treasury2], - ownTokens: [kncop], - }, - bsc: { - tokens: [ - ADDRESSES.bsc.WBNB - ], - owners: [treasury2], - ownTokens: [kncbsc], - }, -}) \ No newline at end of file diff --git a/projects/treasury/l2beat.js b/projects/treasury/l2beat.js deleted file mode 100644 index 4b9b5bac739..00000000000 --- a/projects/treasury/l2beat.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0xea78912803be5e356eac2b8e127d4ba87230a48e" // - -module.exports = treasuryExports({ - optimism: { - tokens: [ - ADDRESSES.optimism.OP, - ADDRESSES.optimism.WETH - ], - owners: [treasury], - }, - -}) \ No newline at end of file diff --git a/projects/treasury/leaguedao.js b/projects/treasury/leaguedao.js deleted file mode 100644 index 750746c490c..00000000000 --- a/projects/treasury/leaguedao.js +++ /dev/null @@ -1,5 +0,0 @@ -const olympus = require("../leaguedao/index"); - -module.exports = olympus; - -delete module.exports.ethereum.staking \ No newline at end of file diff --git a/projects/treasury/level.js b/projects/treasury/level.js deleted file mode 100644 index 8ddfe1fee2f..00000000000 --- a/projects/treasury/level.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -const LVL = '0xb64e280e9d1b5dbec4accedb2257a87b400db149'; - -module.exports = treasuryExports({ - bsc: { - tokens: [ - "0xb5c42f84ab3f786bca9761240546aa9cec1f8821", - ], - owners: [ - '0x8BFf27E9Fa1C28934554e6B5239Fb52776573619', - '0xb07953f23545796710957faec97f05b21146ac2d', - '0x92a0a11a57c28d4c86a629530fd59b83b1276003', - '0x712a2e08c67cd7153f04fdb3037d4696300921d0', - ], - ownTokens: [LVL], - }, - arbitrum: { - tokens: [ - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.ARB, - "0x502697AF336F7413Bb4706262e7C506Edab4f3B9", - "0xb076f79f8D1477165E2ff8fa99930381FB7d94c1", - "0x5573405636F4b895E511C9C54aAfbefa0E7Ee458", - ], - owners: [ - '0x635aac65f37a6bbe06a2dde77b0fd2f1748674d4', - '0x4b47ef68180ec46a0b6be4d34fd9d8680bee2b2c', - ], - ownTokens: [LVL], - }, -}) diff --git a/projects/treasury/lido.js b/projects/treasury/lido.js deleted file mode 100644 index 6fa5c3d7d08..00000000000 --- a/projects/treasury/lido.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const LidoTreasury = "0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"; -const LDO = ADDRESSES.ethereum.LIDO; -const treasuryMatic = "0xd65Fa54F8DF43064dfd8dDF223A446fc638800A9" - -const treasurySolana = "GQ3QPrB1RHPRr4Reen772WrMZkHcFM4DL5q44x1BBTFm" -const LDOsol = "HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.STETH,//stETH - ADDRESSES.ethereum.MATIC,//MATIC - ADDRESSES.ethereum.USDC,//USDC - '0x2eE543b8866F46cC3dC93224C6742a8911a59750',//MVDG - '0xbA6B0dbb2bA8dAA8F5D6817946393Aef8D3A4487',//HSF - '0x232FB065D9d24c34708eeDbF03724f2e95ABE768',//SHEESHA - '0x0d02755a5700414B26FF040e1dE35D337DF56218' //BEND - ], - owners: [LidoTreasury, treasuryMatic], - ownTokens: [LDO], - }, - solana: { - tokens: [ - "7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj" - ], - owners: [treasurySolana], - ownTokens: [LDOsol], - }, -}) diff --git a/projects/treasury/liondex.js b/projects/treasury/liondex.js deleted file mode 100644 index 9e25125f00b..00000000000 --- a/projects/treasury/liondex.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const Treasury = "0x7fca3bf8adc4e143bd789aecda36c0ce34f1d75b"; - -const LION = "0x8eBb85D53e6955e557b7c53acDE1D42fD68561Ec"; - - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - "0x8971dFb268B961a9270632f28B24F2f637c94244", - ], - owners: [Treasury], - ownTokens: [LION], - resolveUniV3: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/liquity-treasury.js b/projects/treasury/liquity-treasury.js deleted file mode 100644 index 65531105d98..00000000000 --- a/projects/treasury/liquity-treasury.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xF06016D822943C42e3Cb7FC3a6A3B1889C1045f8"; -const treasury2 = "0xcCb2656afB1Cc4cB130e8C8C903ad674069c6FCD"; - -const treasuryOP = "0xd2D4e9024D8C90aB52032a9F1e0d92D4cE20191B"; -const treasuryOP2 = "0x2f593f151aF4bb9A71bcA6cAce1d3c56C2844117"; - -const treasuryARB = "0xc5adb3d91329e1600cbf573485b1d3207bcf6de2" - -const LQTY = "0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d"; - - - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.LUSD,//LUSD - ADDRESSES.ethereum.USDC,//usdc - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//grt - '0x41545f8b9472D758bB669ed8EaEEEcD7a9C4Ec29',//fort - ], - owners: [treasury, treasury2], - ownTokens: [LQTY], - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.OP, //OP - '0x73cb180bf0521828d8849bc8CF2B920918e23032', //USD+ - '0x3c8B650257cFb5f272f799F5e2b4e65093a11a05',//velo - ], - owners: [treasuryOP, treasuryOP2], - }, - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasuryARB], - } -}) \ No newline at end of file diff --git a/projects/treasury/looksrare.js b/projects/treasury/looksrare.js deleted file mode 100644 index e039cf3a236..00000000000 --- a/projects/treasury/looksrare.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xC8C57e4C73c71f72cA0a7e043E5D2D144F98ef13"; -const looks = "0xf4d2888d29D722226FafA5d9B24F9164c092421E"; - -const tokens = [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.SAFE, -]; -module.exports = treasuryExports({ - ethereum: { - tokens, - owners: [treasury], - ownTokens: [looks], - }, -}); diff --git a/projects/treasury/loot-dao.js b/projects/treasury/loot-dao.js deleted file mode 100644 index 2a42bd7895b..00000000000 --- a/projects/treasury/loot-dao.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x8cFDF9E9f7EA8c0871025318407A6f1Fbc5d5a18"; -const loot = "0xFF9C1b15B16263C61d017ee9F65C50e4AE0113D7" - -module.exports = treasuryExports({ - ethereum: { - tokens: [nullAddress, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.WETH], - owners: [treasury], - ownTokens: [loot] // loot - }, - polygon: { - tokens: [nullAddress, ADDRESSES.polygon.WETH_1], //weth - owners: [treasury], - }, -}); \ No newline at end of file diff --git a/projects/treasury/loreum.js b/projects/treasury/loreum.js deleted file mode 100644 index 1b0a1aa6c73..00000000000 --- a/projects/treasury/loreum.js +++ /dev/null @@ -1,9 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x5d45A213B2B6259F0b3c116a8907B56AB5E22095"; - -module.exports = treasuryExports({ - ethereum: { - owners: [treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/lsdx-finance.js b/projects/treasury/lsdx-finance.js deleted file mode 100644 index 78d3af5d10c..00000000000 --- a/projects/treasury/lsdx-finance.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const Treasury = "0xb966b7038A2b42A0419457dA4F4d2FBa23097aE1"; -const LSD = "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.STETH,//stETH - ADDRESSES.ethereum.USDC,//USDC - ], - owners: [Treasury], - ownTokens: [LSD], - }, -}) \ No newline at end of file diff --git a/projects/treasury/luchadores.js b/projects/treasury/luchadores.js deleted file mode 100644 index a22ede10c5a..00000000000 --- a/projects/treasury/luchadores.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.WMATIC_2, - '0x5D066D022EDE10eFa2717eD3D79f22F949F8C175', - ], - owners: ['0x0Cb11b92Fa5C30eAfe4aE84B7BB4dF3034C38b9d'], - ownTokens: ['0x6749441Fdc8650b5b5a854ed255C82EF361f1596'], - uniV3nftsAndOwners: [['0x8aac493fd8c78536ef193882aeffeaa3e0b8b5c5', '0x0Cb11b92Fa5C30eAfe4aE84B7BB4dF3034C38b9d']] - }, - base: { - tokens: [ - ADDRESSES.base.WETH, - '0x0D4953d2BDe145D316296CC72cCE509D899a5529' - ], - owners: ['0xa715c8b17268f140D76494c12ec07B48218549C4'], - ownTokens: ['0xF4435cC8b478d54313F04c956882BE3D9aCf9F6F'], - blacklistedTokens: ['0x3a94201a0b6c3593ad3b3e17e3dfce33da183514'], - resolveLP: true, - } -}) - diff --git a/projects/treasury/luxor.js b/projects/treasury/luxor.js deleted file mode 100644 index 0c7e5cba3b8..00000000000 --- a/projects/treasury/luxor.js +++ /dev/null @@ -1,5 +0,0 @@ -const olympus = require("../luxor/index"); - -module.exports = olympus; - -delete module.exports.fantom.staking \ No newline at end of file diff --git a/projects/treasury/lyra.js b/projects/treasury/lyra.js deleted file mode 100644 index fa4a987c54a..00000000000 --- a/projects/treasury/lyra.js +++ /dev/null @@ -1,37 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') - -const treasury_arb = "0x2ccf21e5912e9ecccb0ecdee9744e5c507cf88ae"; -const treasury_eth = "0xEE86E99b42981623236824D33b4235833Afd8044"; -const treasury_op = "0xD4C00FE7657791C2A43025dE483F05E49A5f76A6"; - -const lyra_eth = "0x01BA67AAC7f75f647D94220Cc98FB30FCc5105Bf"; -const lyra_arb = "0x079504b86d38119F859c4194765029F692b7B7aa"; -const lyra_op = ADDRESSES.base.DAI; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.WETH, - ], - owners: [treasury_arb], - ownTokens: [lyra_arb], - }, - ethereum: { - tokens: [ - ADDRESSES.ethereum.USDC, - ], - owners: [treasury_eth], - ownTokens: [lyra_eth], - }, - optimism: { - tokens: [ - ADDRESSES.optimism.OP, - ADDRESSES.optimism.sUSD, - ADDRESSES.optimism.WETH, - ], - owners: [treasury_op], - ownTokens: [lyra_op], - }, -}) \ No newline at end of file diff --git a/projects/treasury/macaron.js b/projects/treasury/macaron.js deleted file mode 100644 index dfcadb7f6d7..00000000000 --- a/projects/treasury/macaron.js +++ /dev/null @@ -1,14 +0,0 @@ -const config = require("../macaron/config"); -const { sumTokensExport, } = require("../helper/unwrapLPs"); - -module.exports = {} - -function setChainTVL(chain) { - const { treasury, erc20s, } = config[chain] - - module.exports[chain] = { - tvl: sumTokensExport({ owner: treasury, tokens: erc20s }) - } -} - -Object.keys(config).forEach(setChainTVL) \ No newline at end of file diff --git a/projects/treasury/magpie.js b/projects/treasury/magpie.js deleted file mode 100644 index 5f296e72c6a..00000000000 --- a/projects/treasury/magpie.js +++ /dev/null @@ -1,41 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); -const { mergeExports } = require('../helper/utils'); - -const magpieTreasury = "0x6dc8ccf1b731e97834002e6ff45e4953bf9602de"; -const vlpnp_staking = "0xc61D3c70CfC9dEDaA090FDD0760Eb9291253fEFF"; -const vlrdp_staking = "0x07973730596E7dbA60E586CDC3dD48d2886Df9dd"; -const pnp_arb = "0x2Ac2B254Bc18cD4999f64773a966E4f4869c34Ee" -const rdp_arb = "0x54bdbf3ce36f451ec61493236b8e6213ac87c0f6" -const ckp_bsc = "0x2B5D9ADea07B590b638FFc165792b2C610EdA649" -const vlckp_staking = "0x232594e7F0096ba7DDAbcD8689cB0D994694eb26" -const mgp = "0xD06716E1Ff2E492Cc5034c2E81805562dd3b45fa"; - -//counting staked tokens in each chain -const stakedExports = { - arbitrum: { - tvl: async (api) => { - let bal_vlpnp = await api.multiCall({ abi: 'function getUserTotalLocked(address) view returns(uint256 _lockAmount)', calls: [magpieTreasury], target: vlpnp_staking, }) - api.add(pnp_arb, bal_vlpnp); - let bal_vlrdp = await api.multiCall({ abi: 'function getUserTotalLocked(address) view returns(uint256 _lockAmount)', calls: [magpieTreasury], target: vlrdp_staking, }) - api.add(rdp_arb, bal_vlrdp); - return api.getBalances(); - }, - }, - bsc: { - tvl: async (api) => { - let bal_vlckp = await api.multiCall({ abi: 'function getUserTotalLocked(address) view returns(uint256 _lockAmount)', calls: [magpieTreasury], target: vlckp_staking, }) - api.add(ckp_bsc, bal_vlckp); - return api.getBalances(); - }, - }, -} - -const treasuryExportsObj = treasuryExports({ - ethereum: { owners: [magpieTreasury], }, - bsc: { - owners: [magpieTreasury], - ownTokens: [mgp] - }, -}) - -module.exports = mergeExports([treasuryExportsObj, stakedExports]) diff --git a/projects/treasury/mahadao.js b/projects/treasury/mahadao.js deleted file mode 100644 index ad79733cd55..00000000000 --- a/projects/treasury/mahadao.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require("../helper/unwrapLPs.js"); - -const eth = { - weth: ADDRESSES.ethereum.WETH, - arth: "0x8CC0F052fff7eaD7f2EdCCcaC895502E884a8a71", - treasury: "0x43c958affe41d44f0a02ae177b591e93c86adbea", -}; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: eth.treasury, tokens: [eth.weth, nullAddress] }), - ownTokens: sumTokensExport({ owner: eth.treasury, tokens: [eth.arth,] }), - } -}; diff --git a/projects/treasury/mahaxyz.js b/projects/treasury/mahaxyz.js deleted file mode 100644 index 511605dca02..00000000000 --- a/projects/treasury/mahaxyz.js +++ /dev/null @@ -1,16 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x6357EDbfE5aDA570005ceB8FAd3139eF5A8863CC"; - -module.exports = treasuryExports({ - ethereum: { - owners: [treasury], - ownTokens: [ - "0x745407c86DF8DB893011912d3aB28e68B62E49B0", // MAHA - ], - blacklistedTokens: [ - "0xB4d930279552397bbA2ee473229f89Ec245bc365", // MAHA - "0x6b7127a638eDC7Db04bEde220c7c49930fdB4160" // MAHAETH - ], - }, -}) diff --git a/projects/treasury/maia-dao.js b/projects/treasury/maia-dao.js deleted file mode 100644 index 2bfb210a811..00000000000 --- a/projects/treasury/maia-dao.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('../maia-dao/index') -const { ohmTreasury } = require('../helper/treasury') - -module.exports = ohmTreasury(index) \ No newline at end of file diff --git a/projects/treasury/maker.js b/projects/treasury/maker.js deleted file mode 100644 index 16e5d0eb216..00000000000 --- a/projects/treasury/maker.js +++ /dev/null @@ -1,48 +0,0 @@ -const { nullAddress } = require("../helper/treasury"); -const { - sumTokensExport, - sumTokens, -} = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json') - -const treasury = "0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB"; -const daiMKRLP = "0x517F9dD285e75b599234F7221227339478d0FcC8"; -const MKR = ADDRESSES.ethereum.MKR; -const SKY = '0x56072c95faa701256059aa122697b133aded9279' -const DAI = ADDRESSES.ethereum.DAI - -async function tvl(timestamp, block, chainBlocks, {api}) { - const balances = {}; - const tokensAndOwners = [ - nullAddress, - '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ens - '0x4da27a545c0c5B758a6BA100e3a049001de870f5',//staave - '0xc00e94Cb662C3520282E6f5717214004A7f26888',//comp - ADDRESSES.ethereum.AAVE,//aave - '0x8f8221aFbB33998d8584A2B05749bA73c37a938a',//req - ].map(t=>[t, treasury]) - await sumTokens(balances, tokensAndOwners, block); - - const all = await api.call({target: "0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b", abi: "function dai(address) view returns (uint256)", params: ["0xA950524441892A31ebddF91d3cEEFa04Bf454466"]}) - const vice = await api.call({target: "0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b", abi: "function vice() view returns (uint256)", }) - balances[DAI] = (all-vice)/1e27 - - return balances; -} - - -module.exports = { - ethereum: { - tvl, - ownTokens: sumTokensExport({ - tokens: [MKR,daiMKRLP,SKY, '0xc20059e0317DE91738d13af027DfC4a50781b066'], - owners: [treasury], - }), - }, - arbitrum: { - tvl:sumTokensExport({ - tokens: [nullAddress], - owners: ["0x10e6593cdda8c58a1d0f14c5164b376352a55f2f"], - }), - }, -} \ No newline at end of file diff --git a/projects/treasury/mango.js b/projects/treasury/mango.js deleted file mode 100644 index e87ae432162..00000000000 --- a/projects/treasury/mango.js +++ /dev/null @@ -1,24 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - '5tgfd6XgwiXB9otEnzFpXK11m7Q7yZUaAJzWK4oT5UGF', - '9RGoboEjmaAjSCXsKi6p6zJucnwF3Eg5NUN9jPS6ziL3', - '3H5PPK1bhHKmCAG5zwUyxpKDijES3H9uRAUCBrW8rGPX', - '5sD9b7DR8E7nvNfqoBoH3t8s8NdwtdDVxjf4NB9uaxG9', - 'DdZWj3nWSzJMMv1LMTHm9gTJ37wHLNXTMzqjWCokvKEn', - 'VrT8f16NLADvYR73YiDMwxZREPbJgiZqLvN6HLQj4hR', - 'DZZWE1PR8qTkH3dLTrD7kcNEs6xx3GmSuFbzW29dyHv7', - 'BExGoGVK6k6mUL6oHmabbc2EtwNqhJUeNoJWijF6t3ZB', - '9so7UTo6b6LXBSqdDfh18hjVj8Ng5BmLbYXLB7UrhaaJ', - '9so7UTo6b6LXBSqdDfh18hjVj8Ng5BmLbYXLB7UrhaaJ', - '58apybWwtWwgVfARs7uJ75Vs1csPimnCCFth7cKwTJAe', - '7hqfhmXK6uXQKmNjUVEJo5acDMLcnyN9p9bZ5Dmnifde' - ], - ownTokens: [ - 'MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac', // MNGO - '3jsFX1tx2Z8ewmamiwSU851GzyzM2DJMq7KWW5DM8Py3', // CHAI? - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/mantadao.js b/projects/treasury/mantadao.js deleted file mode 100644 index be2ff8f9c9b..00000000000 --- a/projects/treasury/mantadao.js +++ /dev/null @@ -1,109 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { sumTokens, queryContract, queryV1Beta1, getBalance2 } = require('../helper/chain/cosmos'); -const owners = ["kujira15e682nq9jees29rm9j3h030af86lq2qtlejgphlspzqcvs9whf2q00nua5"] - -async function tvl(api) { - - // Get base balances of DAO treasury - await sumTokens({ - balances: api.getBalances(), - owners: owners, - chain: 'kujira', - blacklistedTokens: ['factory/kujira1643jxg8wasy5cfcn7xm8rd742yeazcksqlg4d7/umnta'] - }); - - // Get value of DAOs Protocol-Owned-Liquidity - await calcPOLValue(api) -} - -async function calcPOLValue(api) { - const treasury = ["kujira15e682nq9jees29rm9j3h030af86lq2qtlejgphlspzqcvs9whf2q00nua5"] - - // Get list of all BOW LP Pools - const contracts = await getConfig("mantadao/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); - const bowPools = contracts["kaiyo-1"].bow.map(x => x.address) - - // Get list of total supply of all native denoms - let supplyData = await queryV1Beta1({ chain: 'kujira', url: '/bank/v1beta1/supply' }); - - let denomSupply = supplyData.supply; - let paginationKey = supplyData.pagination.next_key; - - while (paginationKey) { - supplyData = await queryV1Beta1({ - chain: 'kujira', - paginationKey: paginationKey, - url: '/bank/v1beta1/supply' - }); - denomSupply = denomSupply.concat(supplyData.supply); - paginationKey = supplyData.pagination.next_key; - } - - // Get all balances of treasury - const treasuryBalances = await getBalance2({ - owner: treasury, - chain: 'kujira' - }) - - // Calculate outputs of each LP balance - let treasuryLPDenomBalances = await Promise.all( - bowPools.map(async (pool) => { - const lpDenom = `factory/${pool}/ulp`; - - if (treasuryBalances.hasOwnProperty(lpDenom)) { - - const lpDenomSupply = denomSupply.find((supply) => supply.denom == lpDenom) - - - if (lpDenomSupply) { - const supply = lpDenomSupply.amount; - - let poolBalances; - - poolBalances = await queryContract({ contract: pool, chain: 'kujira', data: { pool: {}} }); - - const balances = poolBalances.balances; - const coin0OutRatio = parseInt(balances[0]) / parseInt(supply); - const coin1OutRatio = parseInt(balances[1]) / parseInt(supply); - - const treasuryLPBalance = treasuryBalances[lpDenom]; - - - const coin0Out = coin0OutRatio * treasuryLPBalance; - const coin1Out = coin1OutRatio * treasuryLPBalance; - - const poolConfig = await queryContract({ contract: pool, chain: 'kujira', data: { config:{}} }); - - - const denom0 = poolConfig.denoms[0]; - const denom1 = poolConfig.denoms[1]; - - api.add(denom0, parseInt(coin0Out)) - api.add(denom1, parseInt(coin1Out)) - delete api.getBalances()['kujira:'+lpDenom.replaceAll('/', ':')]; - } - } - }) - ); - - treasuryLPDenomBalances = treasuryLPDenomBalances.filter(Boolean); - - return treasuryLPDenomBalances; - -} - -async function ownTokens(api) { - return sumTokens({ - owners: owners, - chain: 'kujira', - tokens: ['factory/kujira1643jxg8wasy5cfcn7xm8rd742yeazcksqlg4d7/umnta'] - }); -} - -module.exports = { - timetravel: false, - kujira: { - tvl, - ownTokens, - }, -} diff --git a/projects/treasury/mantle-meth.js b/projects/treasury/mantle-meth.js deleted file mode 100644 index 6bb4d15f925..00000000000 --- a/projects/treasury/mantle-meth.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require('../helper/treasury'); - -const COOK_TOKEN_ADDRESS = '0x9F0C013016E8656bC256f948CD4B79ab25c7b94D'; -const CMETH_TOKEN_ADDRESS = ADDRESSES.mantle.cmETH; -const MANTLE_TOKEN_ADDRESS = '0x3c3a81e81dc49A522A592e7622A7E711c06bf354'; - -module.exports = treasuryExports({ - ethereum: { - owners: [ - '0x00354d59E829fB79e2Ff7D8a022553728520cB6A', '0x18d336d33a5be54cC62C9034e3a66e3220AA268a', - '0xfB7e8892fBDa0205f6BbdbCd90dD9b0bDD321D16', - ], - ownTokens: [COOK_TOKEN_ADDRESS, CMETH_TOKEN_ADDRESS, MANTLE_TOKEN_ADDRESS], - }, - mantle: { - owners: [ - '0x0CA28e2D07268325ce7f5eCe5ACde658a4769CD7', - '0x931FCb5bC6CaFaFbA0Ce921f31AFD27C144F2fD5', - '0x381e7741a183C8E0c6Ec1AFa183842E597144Ed0', - ], - ownTokens: [COOK_TOKEN_ADDRESS, nullAddress] - } - -}) \ No newline at end of file diff --git a/projects/treasury/mantra-dao.js b/projects/treasury/mantra-dao.js deleted file mode 100644 index d93b5d4f44b..00000000000 --- a/projects/treasury/mantra-dao.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xc8899da25423ac52aa711b97ae04c8888fa1e1d7"; -const treasury2 = "0xd84701828745c98405a3e1153fccea627963859a" -const OM = "0x3593d125a4f7849a1b059e64f4517a86dd60c95d"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - '0xFe2e637202056d30016725477c5da089Ab0A043A',//sETH2 - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.RETH,//rETH - ADDRESSES.ethereum.STETH,//stETH - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.WBTC,//WBTC - '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX - '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D'//renBTC - ], - owners: [treasury, treasury2], - ownTokens: [OM], - }, -}) \ No newline at end of file diff --git a/projects/treasury/maple.js b/projects/treasury/maple.js deleted file mode 100644 index 07519efdf3a..00000000000 --- a/projects/treasury/maple.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT - ], - owners: [ - "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19", - "0xd6d4Bcde6c816F17889f1Dd3000aF0261B03a196" - ], - ownTokens: ["0x33349b282065b0284d756f0577fb39c158f935e6"], - }, -}) \ No newline at end of file diff --git a/projects/treasury/marinade.js b/projects/treasury/marinade.js deleted file mode 100644 index 0323c01546e..00000000000 --- a/projects/treasury/marinade.js +++ /dev/null @@ -1,13 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - 'B56RWQGf9RFw7t8gxPzrRvk5VRmB5DoF94aLoJ25YtvG', - 'J5BEceL5z1EQ7JBqEFu4BfPN4PYCeQaW3GXrzXFfCzhs', - ], - ownTokens: [ - 'MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey', // MNDE - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/maxapy.js b/projects/treasury/maxapy.js deleted file mode 100644 index 9e2d2c52a08..00000000000 --- a/projects/treasury/maxapy.js +++ /dev/null @@ -1,32 +0,0 @@ -const TREASURY = { - ethereum: "0x5000Ba796Fd84a0f929AF80Cfe27301f0358F268", - polygon: "0x91044419869d0921D682a50B41156503A4E484F6", - base: "0x5000Ba796Fd84a0f929AF80Cfe27301f0358F268", -} - -const VAULTS = { - ethereum: { - maxETH: "0x9847c14FCa377305c8e2D10A760349c667c367d4", - }, - polygon: { - maxETH: "0xA02aA8774E8C95F5105E33c2f73bdC87ea45BD29", - maxUSD: "0xE7FE898A1EC421f991B807288851241F91c7e376", - }, - base: { - maxETH: "0x7a63e8fc1d0a5e9be52f05817e8c49d9e2d6efae", - maxUSD: "0xb272e80042634bca5d3466446b0c48ba278a8ae5", - }, -} - -const tvl = async (api) => { - const vaults = Object.values(VAULTS[api.chain]) - return api.sumTokens({ owner: TREASURY[api.chain], tokens: vaults }) -} - -module.exports = { - methodology: "Counts assets held by treasury in ERC4626 vault tokens", - start: 1729675931, - ethereum: { tvl }, - polygon: { tvl }, - base: { tvl }, -} diff --git a/projects/treasury/memewe.js b/projects/treasury/memewe.js deleted file mode 100644 index 3ce603183a5..00000000000 --- a/projects/treasury/memewe.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - - -module.exports = treasuryExports({ - base: { - owners: [ - '0xFfC60ed4c5ee48beb646dD81521842A4a4d19980', - ], - tokens: [ - nullAddress, - ADDRESSES.base.USDC - ], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/meowl.js b/projects/treasury/meowl.js deleted file mode 100644 index f6f9ca8e8a2..00000000000 --- a/projects/treasury/meowl.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { nullAddress } = require('../helper/tokenMapping'); -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress - ], - owners: [ - // "0x842618c3f6E3E12edc5F02CC17561293e10CEb7d", - "0x50fF6353C06Bd582971C1685573a0cD1555421C1" - ], - ownTokens: ["0x1F1F26C966F483997728bEd0F9814938b2B5E294", '0x556bB0B27E855e6f2cEBb47174495B9BBEB97fF1'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/merit-circle.js b/projects/treasury/merit-circle.js deleted file mode 100644 index 7aee4758db8..00000000000 --- a/projects/treasury/merit-circle.js +++ /dev/null @@ -1,26 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - - -module.exports = treasuryExports({ - ethereum: { - owners: [ - '0x7e9e4c0876B2102F33A1d82117Cc73B7FddD0032', // Treasury Main (MC) - '0xA99F29A2fBdCaFbf057b3D8eFC47cfCEe670Bb43', // Treasury Main (BEAM) - '0x73F7261cF493105202F8dcbB11C126a65703dA55', // Treasury 2 - '0xC4218226A5406Aa721EAEBc2D9dA9564AEdd7777', // Treasury 3 - '0x75A3820eE3F245Ecd4b77EB9b28fe5F8bfF77f15', // Treasury 5 - '0xc040340bDD2F40374e9751Db0342D0AC668ef7C8', - '0x3cB580c041Cce953adfc2148e5BE6c1c893CCa9E', // Merit Circle: Deployer - '0xAeACFaAE1e084a952f1E6036F13bFe873f428f78', // Treasury Operational - '0x07e0D811f266b7F65fD022bA4bDab562Ce067420', // Venture Investment - '0x172FFFc69ED471B7fF2465aE97504985F7071593' // BEAM: Deployer - ], - ownTokens: ['0x949D48EcA67b17269629c7194F4b727d4Ef9E5d6', '0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce'], - }, - bsc: { - owners: [ - '0xf92Bc9ee240B82A888c398e6965A7edcBF9399CF', '0xC4218226A5406Aa721EAEBc2D9dA9564AEdd7777' - ], - ownTokens: ['0x949D48EcA67b17269629c7194F4b727d4Ef9E5d6', '0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce'], - }, -}) diff --git a/projects/treasury/metacartel.js b/projects/treasury/metacartel.js deleted file mode 100644 index 4a3ba049810..00000000000 --- a/projects/treasury/metacartel.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x4570b4fAF71E23942B8B9F934b47ccEdF7540162"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.WETH,//weth - ADDRESSES.ethereum.USDC,//usdc - '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//flx - ADDRESSES.ethereum.DAI,//dai - '0xfb5453340C03db5aDe474b27E68B6a9c6b2823Eb',//robot - '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919',//rai - ], - owners: [treasury] - }, -}) \ No newline at end of file diff --git a/projects/treasury/metaplex-dao.js b/projects/treasury/metaplex-dao.js deleted file mode 100644 index 030ff988c40..00000000000 --- a/projects/treasury/metaplex-dao.js +++ /dev/null @@ -1,12 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - 'BHkk3RTd4Ue6JnqXpa9QHTXbn575ycR8hxVmYx4E254k', - ], - ownTokens: [ - 'EDNhHk1ZqVRKnPtVYJhRtzS7ra1z1V5Gnqs5iQee8ocd', // MPLX - Metaplex - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/metronome.js b/projects/treasury/metronome.js deleted file mode 100644 index 3864a969388..00000000000 --- a/projects/treasury/metronome.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xc897b98272aa23714464ea2a0bd5180f1b8c0025"; -const vestingAddress = "0xd1DE3F9CD4AE2F23DA941a67cA4C739f8dD9Af33"; -const MET = "0x2Ebd53d035150f328bd754D6DC66B99B0eDB89aa"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0x64351fC9810aDAd17A690E4e1717Df5e7e085160',//msETH - ADDRESSES.ethereum.USDC,//usdc - ADDRESSES.ethereum.DAI,//dai - ADDRESSES.ethereum.WETH,//weth - '0x1b40183EFB4Dd766f11bDa7A7c3AD8982e998421',//vsp - ], - owners: [treasury, vestingAddress], - ownTokens: [MET], - }, -}) \ No newline at end of file diff --git a/projects/treasury/mimo-protocol.js b/projects/treasury/mimo-protocol.js deleted file mode 100644 index 4d4d4fcdf12..00000000000 --- a/projects/treasury/mimo-protocol.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x25Fc7ffa8f9da3582a36633d04804F0004706F9b"; -const treasury1 = "0x3De64eed7A43C40E33dc837dec1119DcA0a677b4"; - -const treasurypolygon = "0x2046c0416A558C40cb112E5ebB0Ca764c3C5c32a"; -const treasurypolygon1 = "0x6fb6a0a35b33e230d0149d49858e1a313a2ad4a7"; - -const treasuryfantom = "0x174162ddecE9d0b7B68fd945e38c3372C4C818ba"; -const treasuryfantom1 = "0xA67FC89D5312812D3413A83418fc75ff78148a7E"; - -const MIMO = "0x90b831fa3bebf58e9744a14d638e25b4ee06f9bc"; -const MIMOpolygon = "0xadac33f543267c4d59a8c299cf804c303bc3e4ac"; -const MIMOfantom = "0x1d1764f04de29da6b90ffbef372d1a45596c4855"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.CRV, - ADDRESSES.ethereum.USDC, - '0xba100000625a3754423978a60c9317c58a424e3D',//BAL - ADDRESSES.ethereum.cvxCRV, - '0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D',//LQTY - '0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68',//INV - '0xcAfE001067cDEF266AfB7Eb5A286dCFD277f3dE5',//PSP - '0x68037790A0229e9Ce6EaA8A99ea92964106C4703',//PAR - '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490',//3CRV - '0x4104b135DBC9609Fc1A9490E61369036497660c8',//APY - '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA - - ], - owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], - ownTokens: [MIMO,], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC - ], - owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], - ownTokens: [MIMOpolygon,], - }, - fantom: { - tokens: [ - nullAddress, - ADDRESSES.fantom.USDC - ], - owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], - ownTokens: [MIMOfantom,], - } -}) \ No newline at end of file diff --git a/projects/treasury/minswap.js b/projects/treasury/minswap.js deleted file mode 100644 index 4b8300c6f35..00000000000 --- a/projects/treasury/minswap.js +++ /dev/null @@ -1,15 +0,0 @@ -// https://minswap.org/analytics/dao-treasury -const { sumTokensExport} = require("../helper/chain/cardano"); - -const min_dao = 'addr1z9wdv59sq7zzy2l6gchq3247lz7ssfsxs45nj4njhwsp5uzj2c79gy9l76sdg0xwhd7r0c0kna0tycz4y5s6mlenh8pqzygnta' -const min_dao_hot = 'addr1q8zntywq3fldecrqk4vl593sznvj7483ejcajnavvh2qpsvftaax5f3wasl5m49rtjw5pen938vr7863w0lfz94h0lfqldx3pu' -const min_fee_dao = 'addr1qxymvaeg3306xyp6yk3mjdj7usp40x2e5cecsh75xw5tsczj2c79gy9l76sdg0xwhd7r0c0kna0tycz4y5s6mlenh8pqjx0th5' -const min_pol = 'addr1q9gxe8vx0kvv5g6gv4n5wmsxexjqsjftc599qqcp2vkmmwh7snv5yhw2qqvdev3c7wn6s3xhrnx25eg6zcqjxj9vrv2s0e38ze' -const min_ada_min_pol = 'addr1qx54hjkagnc7zanqkfjearg8nk2w303pgdyl2qm4hs2x8saxg62nrp8kp2mukmrr4pfyt4fpdyjp7dx8jxffs4gf2xcsx6uj7a' - -module.exports = { - cardano: { - tvl: () => ({}), - ownTokens: sumTokensExport({ owners: [min_dao, min_dao_hot, min_fee_dao, min_pol, min_ada_min_pol] }) - } -} diff --git a/projects/treasury/monstro-fun.js b/projects/treasury/monstro-fun.js deleted file mode 100644 index 2f36a918f97..00000000000 --- a/projects/treasury/monstro-fun.js +++ /dev/null @@ -1,21 +0,0 @@ -const BASE_CONTRACT = '0x813303b6F253C74D997020518227f87Ff721F53F'; -const ABI_FARMZ = "function farmzLatestStats() view returns (uint256 totalInvested, uint256 currentTVL, uint256 insurance, uint256 totalPaidOut)" -// 0xdbe214c863d6b2ecf5d79012e5d03aab09c57e28 -const ADDRESSES = require('../helper/coreAssets.json') - -async function getInvestedValue(api, contractAddress, abi) { - const response = await api.call({ target: contractAddress, abi, }); - - return api.add(ADDRESSES.base.USDC, response.totalInvested) -} - -async function tvl(api) { - await getInvestedValue(api, BASE_CONTRACT, ABI_FARMZ); -} - -module.exports = { - misrepresentedTokens: true, - base: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/treasury/moret.js b/projects/treasury/moret.js deleted file mode 100644 index b249a9720cd..00000000000 --- a/projects/treasury/moret.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const treasury = "0x015B5FD572De0a7C1478075e1710a0505184520d"; - -const MOR = "0x43F2acbaE09272021AFC107180Aa0ee313B00D8F"; - -module.exports = treasuryExports({ - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC,//USDC - ADDRESSES.polygon.WETH_1//weth - ], - owners: [treasury], - ownTokens: [MOR], - }, -}) \ No newline at end of file diff --git a/projects/treasury/morpho.js b/projects/treasury/morpho.js deleted file mode 100644 index d9223f098fc..00000000000 --- a/projects/treasury/morpho.js +++ /dev/null @@ -1,12 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0xcBa28b38103307Ec8dA98377ffF9816C164f9AFa'], - ownTokens: ['0x58D97B57BB95320F9a05dC918Aef65434969c2B2'], - }, - base: { - owners: ['0xcba28b38103307ec8da98377fff9816c164f9afa'], - ownTokens: ['0xBAa5CC21fd487B8Fcc2F632f3F4E8D37262a0842'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/mossethereum.js b/projects/treasury/mossethereum.js deleted file mode 100644 index 71809be3314..00000000000 --- a/projects/treasury/mossethereum.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x80b371b774DCC34083A218b050A27724f4282D07"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - ADDRESSES.ethereum.STETH - ], - owners: [treasury] - }, -}) diff --git a/projects/treasury/mstable.js b/projects/treasury/mstable.js deleted file mode 100644 index ec45cd83673..00000000000 --- a/projects/treasury/mstable.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const treasury = "0x3dd46846eed8D147841AE162C8425c08BD8E1b41"; -const treasury2 = "0xfcf455d6eb48b3289a712c0b3bc3c7ee0b0ee4c6" -const treasury3 = "0xf6ff1f7fceb2ce6d26687eaab5988b445d0b94a2" -const treasury4 = "0x67905d3e4fec0c85dce68195f66dc8eb32f59179" - -const META = "0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2"; -const mUSD = "0xe2f2a5C287993345a840Db3B0845fbC70f5935a5"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - '0xc00e94Cb662C3520282E6f5717214004A7f26888',//COMP - '0x4da27a545c0c5B758a6BA100e3a049001de870f5',//stkAAVE - '0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84',//icETH - '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS - ADDRESSES.ethereum.UNI,//UNI - '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA - ADDRESSES.ethereum.STETH,//stETH - ], - owners: [treasury, treasury2, treasury3, treasury4], - ownTokens: [META, mUSD], - }, -}) \ No newline at end of file diff --git a/projects/treasury/mux.js b/projects/treasury/mux.js deleted file mode 100644 index 84ea7ee755c..00000000000 --- a/projects/treasury/mux.js +++ /dev/null @@ -1,11 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: ['0x029a4a97e892e7270d9b3b90bfef95599bc6bfd6'], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/mycelium.js b/projects/treasury/mycelium.js deleted file mode 100644 index 2c78684c461..00000000000 --- a/projects/treasury/mycelium.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.WETH, // WETH - '0x432502a764abec914f940916652ce55885323cda', - ], - owners: ['0x9f59e27fd6c8d96dfb89da58c0c98bac07e7a21a'], - ownTokens: ['0xc74fe4c715510ec2f8c61d70d397b32043f55abe'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/myriad-markets.js b/projects/treasury/myriad-markets.js deleted file mode 100644 index 10688cc885c..00000000000 --- a/projects/treasury/myriad-markets.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - abstract: { owner: '0x5E3EbEc100e2294C0EB2264FC96225dF067AAaa3', tokens: [ADDRESSES.abstract.USDC] }, - linea: { owner: '0x5E3EbEc100e2294C0EB2264FC96225dF067AAaa3', tokens: [ADDRESSES.linea.USDC] }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/treasury/nemesis.js b/projects/treasury/nemesis.js deleted file mode 100644 index ac3e4935c6e..00000000000 --- a/projects/treasury/nemesis.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const nemeTreasury1 = "0xdFFb6FB92E3F54C0DAa59e5af3f47fD58824562a"; - -const NMS = "0x8ac9dc3358a2db19fdd57f433ff45d1fc357afb3"; - - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.BUSD,//BUSD - ], - owners: [nemeTreasury1], - ownTokens: [NMS], - }, -}) \ No newline at end of file diff --git a/projects/treasury/neptune-mutual.js b/projects/treasury/neptune-mutual.js deleted file mode 100644 index cb665330881..00000000000 --- a/projects/treasury/neptune-mutual.js +++ /dev/null @@ -1,18 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const npm = { - ethereum: "0x57f12fe6a4e5fe819eec699fadf9db2d06606bb4", - arbitrum: "0x57f12fe6a4e5fe819eec699fadf9db2d06606bb4", - bsc: "0x57f12fe6a4e5fe819eec699fadf9db2d06606bb4", -}; -const treasury = { - arbitrum: "0x808ca06eec8d8645386be4293a7f4428d4994f5b", -} - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury.arbitrum], - ownTokens: [npm.arbitrum], - resolveUniV3: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/neutra-finance.js b/projects/treasury/neutra-finance.js deleted file mode 100644 index 0d601ec74e3..00000000000 --- a/projects/treasury/neutra-finance.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xfba3b455211a3a09689788Ac3A14B4F8Baf012B4"; -const NEU = "0xdA51015b73cE11F77A115Bb1b8a7049e02dDEcf0"; -const esNEU = "0xdeBB612442159b34c24B7BAF20b1CC3218a06925" -const sbfNEU = "0x44F0685482A7180785e309947176C34D0A3d9187" - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - "0x422B5A91b5Cdef61D3400671CCdd5bE22C7CE655", - ADDRESSES.optimism.DAI, - ], - owners: [treasury], - ownTokens: [NEU, esNEU, sbfNEU], - }, -}) \ No newline at end of file diff --git a/projects/treasury/newland.js b/projects/treasury/newland.js deleted file mode 100644 index 88d8d2421b5..00000000000 --- a/projects/treasury/newland.js +++ /dev/null @@ -1,21 +0,0 @@ -const treasuryAddress = "0xB3FC6B9be3AD6b2917d304d4F5645a311bCFd0A8"; -const erc20Tokens = [ - //MDX - "0x25d2e80cb6b86881fd7e07dd263fb79f4abe033c", - //BOO - "0xff96dccf2763d512b6038dc60b7e96d1a9142507", -]; - -/*** Treasury ***/ -const Treasury = async (api) => { - return api.sumTokens({ owner: treasuryAddress, tokens: erc20Tokens }); -}; - -module.exports = { - heco: { - tvl: Treasury, - }, -}; - - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/treasury/nexus-mutual.js b/projects/treasury/nexus-mutual.js deleted file mode 100644 index dde13a0d431..00000000000 --- a/projects/treasury/nexus-mutual.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const communityFund = "0x586b9b2F8010b284A0197f392156f1A7Eb5e86e9"; -const treasury = "0xfc64382c9ce89ba1c21692a68000366a35ff0336" -const nxm = "0xd7c49CEE7E9188cCa6AD8FF264C1DA2e69D4Cf3B"; -const wNxm = "0x0d438F3b5175Bebc262bF23753C1E53d03432bDE"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT, - "0x2ba592F78dB6436527729929AAf6c908497cB200", // CREAM - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.SAFE, - ], - ownTokens: [nxm, wNxm], - owners: [communityFund, treasury], - }, -}); diff --git a/projects/treasury/nftx.js b/projects/treasury/nftx.js deleted file mode 100644 index e2cfa1840fa..00000000000 --- a/projects/treasury/nftx.js +++ /dev/null @@ -1,8 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0x40D73Df4F99bae688CE3C23a01022224FE16C7b2','0xaA29881aAc939A025A3ab58024D7dd46200fB93D'], - ownTokens: ['0x87d73E916D7057945c9BcD8cdd94e42A6F47f776'], - }, -}) diff --git a/projects/treasury/notiboy-treasury.js b/projects/treasury/notiboy-treasury.js deleted file mode 100644 index a1057472c4e..00000000000 --- a/projects/treasury/notiboy-treasury.js +++ /dev/null @@ -1,15 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const notiboyTreasury = "NOTILXUG675YH2JBO3NP5BXADEWRWHPOM5VBIWE6Z3AQU3QKGKMEPNZJRE"; - -module.exports = treasuryExports({ - algorand: { - tokens: [ - nullAddress, - '31566704', //usdc - '1', // algo - - ], - owners: [notiboyTreasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/notional.js b/projects/treasury/notional.js deleted file mode 100644 index 472c01ae5a3..00000000000 --- a/projects/treasury/notional.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x086b4ecd75c494dd36641195e89c25373e06d7cb"; -const treasury2 = "0x22341fb5d92d3d801144aa5a925f401a91418a05" -const note = "0xCFEAead4947f0705A14ec42aC3D44129E1Ef3eD5" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ], - owners: [treasury], - ownTokens: [note], - }, -}) \ No newline at end of file diff --git a/projects/treasury/nouns.js b/projects/treasury/nouns.js deleted file mode 100644 index 4bb68ac8186..00000000000 --- a/projects/treasury/nouns.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x0BC3807Ec262cB779b38D65b38158acC3bfedE10"; -const treasury1 = "0xb1a32FC9F9D8b2cf86C068Cae13108809547ef71" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, //USDC - ADDRESSES.ethereum.STETH,//stETH - ADDRESSES.ethereum.RETH, - ADDRESSES.ethereum.WSTETH //wstETH - ], - owners: [treasury, treasury1], - }, -}) \ No newline at end of file diff --git a/projects/treasury/o2-dao.js b/projects/treasury/o2-dao.js deleted file mode 100644 index 3cf00e27228..00000000000 --- a/projects/treasury/o2-dao.js +++ /dev/null @@ -1,15 +0,0 @@ -const { treasuryExports, } = require("../helper/treasury"); - - -module.exports = treasuryExports({ - avax: { - tokens: [ - '0x321E7092a180BB43555132ec53AaA65a5bF84251', - '0x7bc2561d69b56fae9760df394a9fa9202c5f1f11', - '0x0da67235dd5787d67955420c84ca1cecd4e5bb3b', - ], - owners: ['0x10c12b7322ac2c5a26bd9929abc6e6b7997570ba'], - resolveLP: true, - ownTokens: ['0xaa2439dbad718c9329a5893a51a708c015f76346'] - }, -}) diff --git a/projects/treasury/o3-swap.js b/projects/treasury/o3-swap.js deleted file mode 100644 index a8cf7a14d7f..00000000000 --- a/projects/treasury/o3-swap.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xb23d6fc44e40e56cb3b0d2c28ba3d7a170a07a49"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/oasisswapdex.js b/projects/treasury/oasisswapdex.js deleted file mode 100644 index b2032aabe23..00000000000 --- a/projects/treasury/oasisswapdex.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xe0a9B8DeF6d85eb7D828f706635402334D564b0f"; -const MultisigTreasury = "0x8B059bF6cE7c279a5BfEc006F439Db1E5c4A924c" - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, //USDC - ], - owners: [treasury, MultisigTreasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/oceanus.js b/projects/treasury/oceanus.js deleted file mode 100644 index 207db1ba575..00000000000 --- a/projects/treasury/oceanus.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("../helper/staking"); - -const treasuryContract = "0xF29EEC2563b1E6a1ed87ff7DDfB164474d1Ecb50"; - -const SEA = "0x41607272ce6f2a42732ae382f00f8f9ce68d78f3"; - -module.exports = { - metis: { - tvl: (async) => ({}), - ownTokens: staking(treasuryContract, SEA), - }, -}; diff --git a/projects/treasury/olympulsex.js b/projects/treasury/olympulsex.js deleted file mode 100644 index bacb8b14a26..00000000000 --- a/projects/treasury/olympulsex.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require('../helper/unknownTokens') - -const treasury = "0x767d028d6d49ac86Aba52d23746c6dC5285C4852"; -const LP = '0x2d593b3472d6a5439bC1523a04C2aec314CBc44c' - -module.exports = { - pulse: { - tvl: sumTokensExport({ owner: treasury, tokens: [ADDRESSES.pulse.DAI, LP], useDefaultCoreAssets: true, }), - } -} \ No newline at end of file diff --git a/projects/treasury/olympus-dao.js b/projects/treasury/olympus-dao.js deleted file mode 100644 index 85efc449f79..00000000000 --- a/projects/treasury/olympus-dao.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require("../olympus/index"); - -delete module.exports.ethereum.staking \ No newline at end of file diff --git a/projects/treasury/omicron.js b/projects/treasury/omicron.js deleted file mode 100644 index 18da6512431..00000000000 --- a/projects/treasury/omicron.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require("../omicron/index"); - -delete module.exports.arbitrum.staking \ No newline at end of file diff --git a/projects/treasury/ooki.js b/projects/treasury/ooki.js deleted file mode 100644 index d9ccf9e44d4..00000000000 --- a/projects/treasury/ooki.js +++ /dev/null @@ -1,24 +0,0 @@ -const treasuryContract = '0xfedC4dD5247B93feb41e899A09C44cFaBec29Cbc' -const { sumTokens2 } = require('../helper/unwrapLPs') - -let TreasureTokens = [ - '0x56d811088235F11C8920698a204A5010a788f4b3', //bzrx - // '0x0De05F6447ab4D22c8827449EE4bA2D5C288379B', //ooki - //'vbzrx': '0xB72B31907C1C95F3650b64b2469e08EdACeE5e8F', vesting tokens not counted - '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490', //pool3 -] - -async function ethTreasury(api) { - return sumTokens2({ api, owner: treasuryContract, tokens: TreasureTokens }) -} -async function ownTokens(api) { - return sumTokens2({ api, owner: treasuryContract, tokens: ['0x0De05F6447ab4D22c8827449EE4bA2D5C288379B'] }) -} - -module.exports = { - ethereum: { - tvl: ethTreasury, - ownTokens, - }, -}; - diff --git a/projects/treasury/op-foundation.js b/projects/treasury/op-foundation.js deleted file mode 100644 index 908dea7ea35..00000000000 --- a/projects/treasury/op-foundation.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x2501c477d0a35545a387aa4a3eee4292a9a8b3f0"; -const treasury2 = "0xfedfaf1a10335448b7fa0268f56d2b44dbd357de"; -const treasury3 = "0x2a82ae142b2e62cb7d10b55e323acb1cab663a26"; -const treasury4 = "0x19793c7824be70ec58bb673ca42d2779d12581be"; - -const OP = ADDRESSES.optimism.OP - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC - ], - owners: [treasury,treasury2,treasury3,treasury4], - ownTokens: [OP], - }, - ethereum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/open-oceans.js b/projects/treasury/open-oceans.js deleted file mode 100644 index 8b3ce5c8b97..00000000000 --- a/projects/treasury/open-oceans.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x61e807038ae880d964a15a57c8cc74a634bccc26"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/openxswap.js b/projects/treasury/openxswap.js deleted file mode 100644 index a2fd4b84955..00000000000 --- a/projects/treasury/openxswap.js +++ /dev/null @@ -1,20 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const Treasury = "0x6b479f4bcf0321c370d266b592fd44eb0fc47ca8"; -const OpenX = "0xc3864f98f2a61A7cAeb95b039D031b4E2f55e0e9"; -const xOpenX = "0x2513486f18eeE1498D7b6281f668B955181Dd0D9" - - - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - '0x3c8B650257cFb5f272f799F5e2b4e65093a11a05',//velo - '0x46f21fDa29F1339e0aB543763FF683D399e393eC' - - ], - owners: [Treasury], - ownTokens: [OpenX, xOpenX], - }, -}) \ No newline at end of file diff --git a/projects/treasury/ovr.js b/projects/treasury/ovr.js deleted file mode 100644 index 33f71f57f6f..00000000000 --- a/projects/treasury/ovr.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, } = require("../helper/treasury"); - -const OVR = { - eth: "0x21bfbda47a0b4b5b1248c767ee49f7caa9b23697", - polygon: "0x1631244689EC1fEcbDD22fb5916E920dFC9b8D30", -}; - -const DAI = ADDRESSES.ethereum.DAI; -const IBCO = "0x8c19cF0135852BA688643F57d56Be72bB898c411"; - -module.exports = treasuryExports({ - ethereum: { - owners: [IBCO], - tokens: [DAI], - ownTokens: [OVR.eth] - }, -}); diff --git a/projects/treasury/p-network.js b/projects/treasury/p-network.js deleted file mode 100644 index f0da2e290fd..00000000000 --- a/projects/treasury/p-network.js +++ /dev/null @@ -1,17 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - - -const treasury3 = "0xdd92eb1478d3189707ab7f4a5ace3a615cdd0476" - -const PNT = "0x89ab32156e46f46d02ade3fecbe5fc4243b9aaed" -const ethPNT = "0xf4eA6B892853413bD9d9f1a5D3a620A0ba39c5b2" // 1 ethPNT = 1 PNT - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ], - owners: [treasury3], - ownTokens: [PNT, ethPNT], - }, -}) \ No newline at end of file diff --git a/projects/treasury/paladin-finance.js b/projects/treasury/paladin-finance.js deleted file mode 100644 index bb7eeb930b1..00000000000 --- a/projects/treasury/paladin-finance.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xb95A4779CceDc53010EF0df8Bf8Ed6aEB0E8c2B2"; -const treasury1 = "0x1Ae6DCBc88d6f81A7BCFcCC7198397D776F3592E"; -const treasury2 = "0x0482a2d6e2f895125b7237de70c675cd55fe17ca"; -const treasuryarb = "0x8E4aD455225Dae1A78AB375FCb9eD9d94A4BE859" -const treasurypolygon = "0x6F09B0Cc885f176B06311bD085055A9275957248" - -const PAL = "0xab846fb6c81370327e784ae7cbb6d6a6af6ff4bf"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.CRV, - ADDRESSES.ethereum.USDC, - '0xba100000625a3754423978a60c9317c58a424e3D',//BAL - ADDRESSES.ethereum.cvxCRV, - '0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D',//LQTY - '0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68',//INV - '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX - '0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F',//SDT - '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490',//3CRV - '0x4104b135DBC9609Fc1A9490E61369036497660c8',//APY - ADDRESSES.ethereum.LIDO, - '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA - '0xCdF7028ceAB81fA0C6971208e83fa7872994beE5',//T - '0x30D20208d987713f46DFD34EF128Bb16C404D10f',//SD - '0x875773784Af8135eA0ef43b5a374AaD105c5D39e',//IDLE - '0x15f74458aE0bFdAA1a96CA1aa779D715Cc1Eefe4',//GRAI - '0xBa3335588D9403515223F109EdC4eB7269a9Ab5D',//GEAR - - ], - owners: [treasury, treasury1, treasury2], - ownTokens: [PAL], - }, - arbitrum: { - tokens: [ - nullAddress, - '0x1509706a6c66CA549ff0cB464de88231DDBe213B',//AURA - '0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8',//BAL - '0xf0cb2dc0db5e6c66B9a70Ac27B06b878da017028',//OHM - ADDRESSES.arbitrum.ARB,//ARB - ], - owners: [treasuryarb] - } - // polygon: { - // tokens: [ - // nullAddress, - // ] - // } -}) diff --git a/projects/treasury/paraswap.js b/projects/treasury/paraswap.js deleted file mode 100644 index 6ea4c70f4a2..00000000000 --- a/projects/treasury/paraswap.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x5A61D9214adEFD7669428a03A4e8734A00E9F464"; -const treasury2 = "0x6DF5e7b236a4F14e08C27E09202B4d1865905e9b"; -const vesting1 = "0x6a3CCa09b1C2B83834124c8646a68b9Bad2a07b9"; -const vesting2 = "0x348aa814a72970e76d5756a2cdA16e7E8F245aAB"; -const vesting3 = "0xb074094d2e858b25d129989644248f9f6946e081"; -const vesting4 = "0x51d2f2c65d043118eb4329fcbc738943f494609f"; -const PARA = "0xcAfE001067cDEF266AfB7Eb5A286dCFD277f3dE5"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress - ], - owners: [treasury, treasury2, vesting1, vesting2, vesting3, vesting4], - ownTokens: [PARA, "0xcb0e14e96f2cefa8550ad8e4aea344f211e5061d"], - }, - optimism: { - tokens: [ - ADDRESSES.optimism.OP - ], - owners: ["0xb8313eaf73aed8fea1d9930df199b3c1bdb67b47"], - }, - arbitrum: { - tokens: [ - ADDRESSES.arbitrum.ARB - ], - owners: ["0xfe98240ddAEDF78E278C28F1EdD690ee1a774e66"], - }, -}) \ No newline at end of file diff --git a/projects/treasury/parrot-protocol.js b/projects/treasury/parrot-protocol.js deleted file mode 100644 index 3e57af2334d..00000000000 --- a/projects/treasury/parrot-protocol.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x0B70A2653B6E7BF44A3c80683E9bD9B90489F92A"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.STETH,//stETH - ADDRESSES.ethereum.WBTC,//WBTC - ], - owners: [treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/peardao.js b/projects/treasury/peardao.js deleted file mode 100644 index aa4594b2304..00000000000 --- a/projects/treasury/peardao.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const BUSD_TOKEN_CONTRACT = ADDRESSES.bsc.BUSD; -const USDT_TOKEN_CONTRACT = ADDRESSES.bsc.USDT; -const USDC_TOKEN_CONTRACT = ADDRESSES.bsc.USDC; -const WBNB_TOKEN_CONTRACT = ADDRESSES.bsc.WBNB; -const BTCB_TOKEN_CONTRACT = ADDRESSES.bsc.BTCB; -const USTC_TOKEN_CONTRACT = '0x23396cF899Ca06c4472205fC903bDB4de249D6fC'; - -const TREASURY_ADDRESS = '0x263e0910C8c1B77B80CB9947B0FAC3735a6FEf4C'; -const tokens = [ - BUSD_TOKEN_CONTRACT, USDC_TOKEN_CONTRACT, USDT_TOKEN_CONTRACT, WBNB_TOKEN_CONTRACT, USTC_TOKEN_CONTRACT, BTCB_TOKEN_CONTRACT, -] - -module.exports = { - bsc: { - tvl: sumTokensExport({ tokens, owner: TREASURY_ADDRESS, }), - } -}; \ No newline at end of file diff --git a/projects/treasury/pegasusfinance.js b/projects/treasury/pegasusfinance.js deleted file mode 100644 index a60beb31e1b..00000000000 --- a/projects/treasury/pegasusfinance.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryContract = "0x680b96DDC962349f59F54FfBDe2696652669ED60"; -const WETH_OPTIMISM = ADDRESSES.tombchain.FTM; - - - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - WETH_OPTIMISM - ], - owners: [treasuryContract], - ownTokens: [], - }, -}) diff --git a/projects/treasury/perfect-pool.js b/projects/treasury/perfect-pool.js deleted file mode 100644 index bc0039ffdeb..00000000000 --- a/projects/treasury/perfect-pool.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') - -const TREASURY = '0xFe4559392aF0E6988F2d7A4E6447a2E702Ff215d' - -module.exports = { - start: '2024-09-02', - base: { - tvl: sumTokensExport({ owner: TREASURY, token: ADDRESSES.base.USDC }), - } -} \ No newline at end of file diff --git a/projects/treasury/perion.js b/projects/treasury/perion.js deleted file mode 100644 index 0096978069c..00000000000 --- a/projects/treasury/perion.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const PERC = '0x60bE1e1fE41c1370ADaF5d8e66f07Cf1C2Df2268'; -const treasuryContractsETH = [ - "0x12d73bee50f0b9e06b35fdef93e563c965796482", //Perion Treasury -]; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.DAI, - '0x60bE1e1fE41c1370ADaF5d8e66f07Cf1C2Df2268', // PERC - '0x549020a9Cb845220D66d3E9c6D9F9eF61C981102', // SIDIUS - '0x34Be5b8C30eE4fDe069DC878989686aBE9884470', //SENATE - ADDRESSES.ethereum.USDT, //USDT - ADDRESSES.ethereum.STETH, //stETH - ], - owners: treasuryContractsETH, - ownTokens: [PERC], - }, -}) diff --git a/projects/treasury/perpetual-protocol.js b/projects/treasury/perpetual-protocol.js deleted file mode 100644 index 6da27dbd951..00000000000 --- a/projects/treasury/perpetual-protocol.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const perpProtocolTreasury = "0xD374225abB84DCA94e121F0B8A06B93E39aD7a99"; -const PERP = "0xbC396689893D065F41bc2C6EcbeE5e0085233447"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.FXS,//FXS - '0xca1207647Ff814039530D7d35df0e1Dd2e91Fa84',//DHT - '0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F',//SDT - '0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b',//DPI - ADDRESSES.ethereum.USDC,//USDC - '0xE0e05c43c097B0982Db6c9d626c4eb9e95C3b9ce',//USF - ADDRESSES.ethereum.DAI,//DAI - '0x1337DEF16F9B486fAEd0293eb623Dc8395dFE46a' //ARMOR - ], - owners: [perpProtocolTreasury], - ownTokens: [PERP], - }, -}) diff --git a/projects/treasury/piedao.js b/projects/treasury/piedao.js deleted file mode 100644 index 89e21dd7039..00000000000 --- a/projects/treasury/piedao.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const pieDaoTreasury = "0x3bCF3Db69897125Aa61496Fc8a8B55A5e3f245d5"; -const DOUGH = "0xad32A8e6220741182940c5aBF610bDE99E737b2D"; -const DOUGH_LP = "0xE8846B27988FF52c371D5BD27Bf8DBA4097C93D2" - -const treasury = "0x267070804c46a47aa92a76d59d70c05d30de46e3" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0x31429d1856aD1377A8A0079410B297e1a9e214c2',//ANGLE - '0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26',//OGN - ADDRESSES.ethereum.DAI,//DAI - '0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B',//TRIBE - '0x090185f2135308BaD17527004364eBcC2D37e5F6',//SPELL - ADDRESSES.ethereum.SNX,//SNX - '0xdB25f211AB05b1c97D595516F45794528a807ad8',//EURS - '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6',//STG - '0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68',//INV - '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX - '0x674C6Ad92Fd080e4004b2312b45f796a192D27a0',//USDN - '0xa693B19d2931d498c5B318dF961919BB4aee87a5',//UST - '0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3',//JPEG - '0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2',//MTA - ADDRESSES.ethereum.GNO,//GNO - '0x01BA67AAC7f75f647D94220Cc98FB30FCc5105Bf',//LYRA - '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919',//RAI - '0x3472A5A71965499acd81997a54BBA8D852C6E53d',//BADGER - '0x3Ec8798B81485A254928B70CDA1cf0A2BB0B74D7',//GRO - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.STETH //stETH - ], - owners: [pieDaoTreasury, treasury], - ownTokens: [DOUGH, DOUGH_LP], - }, -}) \ No newline at end of file diff --git a/projects/treasury/platypus.js b/projects/treasury/platypus.js deleted file mode 100644 index a6a13f50fa5..00000000000 --- a/projects/treasury/platypus.js +++ /dev/null @@ -1,34 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x068e297e8FF74115C9E1C4b5B83B700FdA5aFdEB"; - -const tokens = [ - nullAddress, - ADDRESSES.avax.DAI, // DAI - ADDRESSES.avax.SAVAX, // sAVAX - ADDRESSES.avax.USDC, // USDC - ADDRESSES.avax.USDT_e, // USDT.e - ADDRESSES.polygon.BUSD, // BUSD - ADDRESSES.avax.BTC_b, // BTC.b - ADDRESSES.avax.USDt, // USDt - "0xF7D9281e8e363584973F946201b82ba72C965D27", // yyAVAX - ADDRESSES.avax.JOE, // JOE - "0x026187BdbC6b751003517bcb30Ac7817D5B766f8", // H2O - ADDRESSES.avax.WAVAX, // WAVAX - "0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5", // QI - "0xd9D90f882CDdD6063959A9d837B05Cb748718A05", // MORE - "0x77777777777d4554c39223C354A05825b2E8Faa3", // YETI -]; - -const ownTokens = [ - "0x22d4002028f537599bE9f666d1c4Fa138522f9c8", // PTP -]; - -module.exports = treasuryExports({ - avax: { - tokens, - owners: [treasury], - ownTokens, - }, -}); diff --git a/projects/treasury/pleasrdao.js b/projects/treasury/pleasrdao.js deleted file mode 100644 index 1f005cc563f..00000000000 --- a/projects/treasury/pleasrdao.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const pleasrDaoTreasury = "0xF5c27c6fE782cbB5c85989ea3e75754748153459"; -const treasury = "0xf894fea045eccb2927e2e0cb15c12debee9f2be8" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - '0x300a902513815028e97FC79E92082Ce6a98d3b74',//SOX - '0xbA6B0dbb2bA8dAA8F5D6817946393Aef8D3A4487',//HSF - '0xBf9e72eEb5adB8B558334c8672950B7a379D4266',//CUBT - "0xBAac2B4491727D78D2b78815144570b9f2Fe8899", - ADDRESSES.ethereum.USDT, - "0xc96F20099d96b37D7Ede66fF9E4DE59b9B1065b1", - "0x4CD0c43B0D53bc318cc5342b77EB6f124E47f526", - "0x1A4b46696b2bB4794Eb3D4c26f1c55F9170fa4C5", - ADDRESSES.ethereum.DAI - ], - owners: [pleasrDaoTreasury, treasury,], - resolveLP: true, - resolveUniV3: true, - }, -}) diff --git a/projects/treasury/ploutos-money.js b/projects/treasury/ploutos-money.js deleted file mode 100644 index 3a5d41be206..00000000000 --- a/projects/treasury/ploutos-money.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const ploutosTreasuryBase = "0xB5EB7E9dDe0c299053fbB070dc3aA3f6D67B6Dc8"; -const ploutosTreasuryArbitrum = "0xF951ad249532dbb8Dd18be4a158aAbEe3d43523E"; -const ploutosTreasuryPolygon = "0xBf8F589313239Da1d7946a77D3478eC8A81F8005"; -const ploutosTreasuryKatana = "0xEC910d10a1A03482d182768583c68aAC3A6B9f29"; -const ploutosTreasuryPlasma = "0x1A2AD731798FF05eE5E7E814b742c77e6A3BCa33"; - - -module.exports = treasuryExports({ - base: { - tokens: [ - nullAddress, - ], - owners: [ploutosTreasuryBase], - }, - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [ploutosTreasuryArbitrum], - }, - polygon: { - tokens: [ - nullAddress, - ], - owners: [ploutosTreasuryPolygon], - }, - katana: { - tokens: [ - nullAddress, - ], - owners: [ploutosTreasuryKatana], - }, - plasma: { - tokens: [ - nullAddress, - ], - owners: [ploutosTreasuryPlasma], - }, -}) \ No newline at end of file diff --git a/projects/treasury/pluto.js b/projects/treasury/pluto.js deleted file mode 100644 index 1200f29cd98..00000000000 --- a/projects/treasury/pluto.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokens, } = require('../helper/chain/waves') - -// https://wavesexplorer.com/addresses/3P3a1jssxc2CGdyC7SGbTJc9ZvTjZ5jBMLZ -module.exports = { - timetravel: false, - waves: { - tvl: api => sumTokens({ api, owners: ['3PKFFFsiKR7rgaeoLQZj6jLsxteZigccN8h'], }), - } -} \ No newline at end of file diff --git a/projects/treasury/plutusdao.js b/projects/treasury/plutusdao.js deleted file mode 100644 index 5145dae381a..00000000000 --- a/projects/treasury/plutusdao.js +++ /dev/null @@ -1,23 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xBbE98D590d7eB99F4a236587f2441826396053d3"; - -const tokens = [ - nullAddress, - "0x10393c20975cF177a3513071bC110f7962CD67da" -]; - -const ownTokens = [ - "0x51318B7D00db7ACc4026C88c3952B66278B6A67F", // PLS - "0xD2826Cc00196d8aEe942A4a97D7987C66c17E7BB", // imxB - "0x6CC0D643C7b8709F468f58F363d73Af6e4971515", // PLS-ETH SLP - '0x8c1ea32448e09a59f36595abec6207c9ebd590a2', // PLUTUS -]; - -module.exports = treasuryExports({ - arbitrum: { - tokens, - owners: [treasury], - ownTokens - } -}) diff --git a/projects/treasury/polkadot-api.js b/projects/treasury/polkadot-api.js deleted file mode 100644 index 6ffdf3af747..00000000000 --- a/projects/treasury/polkadot-api.js +++ /dev/null @@ -1,214 +0,0 @@ -const { ApiPromise, WsProvider } = require("@polkadot/api"); - -const RELAY_CHAIN_TREASURY = "13UVJyLnbVp9RBZYFwFGyDvVd1y27Tt8tkntv6Q7JVPhFsTB"; -const ASSET_HUB_TREASURY = "14xmwinmCEz6oRrFdczHKqHgWNMiCysE2KrA4jXXAAM1Eogk"; -const ASSET_HUB_FELLOWSHIP_SALARY = "13w7NdvSR1Af8xsQTArDtZmVvjE8XhWNdL4yed3iFHrUNCnS"; -const ASSET_HUB_FELLOWSHIP_SUB_TREASURY = "16VcQSRcMFy6ZHVjBvosKmo7FKqTb8ZATChDYo8ibutzLnos"; -const ASSET_HUB_MYTHOS_TREASURY = "13gYFscwJFJFqFMNnttzuTtMrApUEmcUARtgFubbChU9g6mh"; -const HDX_FELLOWSHIP_SALARY_SWAP = "7KQx4f7yU3hqZHfvDVnSfe6mpgAT8Pxyr67LXHV6nsbZo3Tm"; -const HDX_TREASURY_STABLES_SWAP_ONE = "7LcF8b5GSvajXkSChhoMFcGDxF9Yn9unRDceZj1Q6NYox8HY"; -const HDX_TREASURY_STABLES_SWAP_TWO = "7KCp4eenFS4CowF9SpQE5BBCj5MtoBA3K811tNyRmhLfH1aV"; -const HDX_TREASURY_STABLES_SWAP_THREE = "7KATdGaecnKi4zDAMWQxpB2s59N2RE1JgLuugCjTsRZHgP24"; - -const ASSET_HUB_ASSETS = { USDC: 1337, USDT: 1984 }; -const HYDRATION_ASSETS = { USDC: 10, USDT: 22, DOT: 5 }; - -const DOT_DECIMALS = 1e10; -const MYTHOS_DECIMALS = 1e18; - -const RELAY_CHAIN_RPC = "wss://rpc.polkadot.io"; -const ASSET_HUB_RPC = "wss://polkadot-asset-hub-rpc.polkadot.io"; -const HYDRATION_RPC = "wss://hydradx-rpc.dwellir.com"; - -async function getRelayChainBalance() { - try { - const wsProviderRelay = new WsProvider(RELAY_CHAIN_RPC); - const apiRelay = await ApiPromise.create({ provider: wsProviderRelay }); - const relayResult = await apiRelay.query.system.account(RELAY_CHAIN_TREASURY); - - const freeRelay = relayResult.data.free.toBigInt(); - const reservedRelay = relayResult.data.reserved.toBigInt(); - const balanceDOT = Number((freeRelay + reservedRelay) / BigInt(DOT_DECIMALS)); - - await apiRelay.disconnect(); - return balanceDOT; - } catch (error) { - console.error("Error fetching Relay Chain balance:", error); - return 0; - } -} - -async function getAssetHubBalances() { - try { - const wsProviderAssetHub = new WsProvider(ASSET_HUB_RPC); - const apiAssetHub = await ApiPromise.create({ provider: wsProviderAssetHub }); - - const addresses = [ - ASSET_HUB_TREASURY, - ASSET_HUB_FELLOWSHIP_SALARY, - ASSET_HUB_FELLOWSHIP_SUB_TREASURY, - ]; - - let dotTotal = 0; - for (const address of addresses) { - const account = await apiAssetHub.query.system.account(address); - const free = account.data.free.toBigInt(); - const reserved = account.data.reserved.toBigInt(); - const balanceDOT = Number((free + reserved) / BigInt(DOT_DECIMALS)); - dotTotal += balanceDOT; - } - - let usdcTotal = 0; - let usdtTotal = 0; - for (const address of addresses) { - for (const [asset, assetId] of Object.entries(ASSET_HUB_ASSETS)) { - try { - const metadata = await apiAssetHub.query.assets.metadata(assetId); - const decimals = metadata.decimals.toNumber - ? metadata.decimals.toNumber() - : Number(metadata.decimals); - - const assetAccount = await apiAssetHub.query.assets.account(assetId, address); - if (!assetAccount.isNone) { - const rawAccount = assetAccount.unwrap(); - const assetBalance = Number( - rawAccount.balance.toBigInt() / BigInt(Math.pow(10, decimals)) - ); - if (asset === "USDC") usdcTotal += assetBalance; - if (asset === "USDT") usdtTotal += assetBalance; - } - } catch (error) { - console.error(`Error fetching ${asset} balance for ${address}:`, error); - } - } - } - - let mythosBalance = 0; - try { - const foreignAssetResult = await apiAssetHub.query.foreignAssets.account( - { - parents: 1, - interior: { - X1: [{ Parachain: 3369 }], - }, - }, - ASSET_HUB_MYTHOS_TREASURY - ); - - if (!foreignAssetResult.isNone) { - const rawAccount = foreignAssetResult.unwrap(); - mythosBalance = Number(rawAccount.balance.toBigInt() / BigInt(MYTHOS_DECIMALS)); - } - } catch (error) { - console.error("Error fetching MYTHOS balance:", error); - } - - await apiAssetHub.disconnect(); - - return { - dot: dotTotal, - usdc: usdcTotal, - usdt: usdtTotal, - mythos: mythosBalance, - }; - } catch (error) { - console.error("Error fetching Asset Hub balances:", error); - return { dot: 0, usdc: 0, usdt: 0, mythos: 0 }; - } -} - -async function getHydrationBalances() { - try { - const wsProviderHydration = new WsProvider(HYDRATION_RPC); - const apiHydration = await ApiPromise.create({ provider: wsProviderHydration }); - - const addresses = [ - HDX_FELLOWSHIP_SALARY_SWAP, - HDX_TREASURY_STABLES_SWAP_ONE, - HDX_TREASURY_STABLES_SWAP_TWO, - HDX_TREASURY_STABLES_SWAP_THREE - ]; - - let dotTotal = 0; - let usdcTotal = 0; - let usdtTotal = 0; - - for (const address of addresses) { - for (const [asset, assetId] of Object.entries(HYDRATION_ASSETS)) { - try { - const meta = await apiHydration.query.assetRegistry.assets(assetId); - const metaHuman = meta.toHuman(); - - if (!metaHuman || metaHuman.decimals === undefined) { - throw new Error(`No decimals found for asset ${assetId}`); - } - - const decimals = Number(metaHuman.decimals); - const tokenAccount = await apiHydration.query.tokens.accounts(address, assetId); - - if (tokenAccount && tokenAccount.isSome) { - const rawTokenAccount = tokenAccount.unwrap(); - const free = rawTokenAccount.free.toBigInt(); - const reserved = rawTokenAccount.reserved.toBigInt(); - const balance = Number((free + reserved) / BigInt(Math.pow(10, decimals))); - - if (asset === "DOT") dotTotal += balance; - if (asset === "USDC") usdcTotal += balance; - if (asset === "USDT") usdtTotal += balance; - } else if (tokenAccount) { - const free = tokenAccount.free.toBigInt(); - const reserved = tokenAccount.reserved.toBigInt(); - const balance = Number((free + reserved) / BigInt(Math.pow(10, decimals))); - - if (asset === "DOT") dotTotal += balance; - if (asset === "USDC") usdcTotal += balance; - if (asset === "USDT") usdtTotal += balance; - } - } catch (error) { - console.error(`Error fetching ${asset} balance for ${address}:`, error); - } - } - } - - await apiHydration.disconnect(); - - return { - dot: dotTotal, - usdc: usdcTotal, - usdt: usdtTotal, - }; - } catch (error) { - console.error("Error fetching Hydration balances:", error); - return { dot: 0, usdc: 0, usdt: 0 }; - } -} - -async function tvl(api) { - const assetHubBalances = await getAssetHubBalances(); - const hydrationBalances = await getHydrationBalances(); - - const totalUSDC = assetHubBalances.usdc + hydrationBalances.usdc; - const totalUSDT = assetHubBalances.usdt + hydrationBalances.usdt; - api.addCGToken("usd-coin", totalUSDC); - api.addCGToken("tether", totalUSDT); - - api.addCGToken("mythos", assetHubBalances.mythos); - - return api.getBalances(); -} - -async function ownTokens(api) { - const relayChainDOT = await getRelayChainBalance(); - const assetHubBalances = await getAssetHubBalances(); - const hydrationBalances = await getHydrationBalances(); - - const totalDOT = relayChainDOT + assetHubBalances.dot + hydrationBalances.dot; - api.addCGToken("polkadot", totalDOT); - - return api.getBalances(); -} - -module.exports = { - timetravel: false, - polkadot: { tvl, ownTokens, }, -}; diff --git a/projects/treasury/polkadot.js b/projects/treasury/polkadot.js deleted file mode 100644 index 6f047cd98eb..00000000000 --- a/projects/treasury/polkadot.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("polkadot", ['polkadot'], ['ownTokens',]), - methodology: - "TVL is calculated by summing up the balances across three chains: Relay Chain (DOT), Asset Hub (DOT, USDC, USDT, MYTHOS), and Hydration (DOT, USDC, USDT). The balances are fetched directly from the respective chain's treasury and related addresses.", -} diff --git a/projects/treasury/pooltogether.js b/projects/treasury/pooltogether.js deleted file mode 100644 index 8173560f130..00000000000 --- a/projects/treasury/pooltogether.js +++ /dev/null @@ -1,66 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require("../helper/treasury"); -const { - sumTokensExport, - sumTokens, - sumTokens2, -} = require("../helper/unwrapLPs"); - -const pullTreasury = "0x42cd8312D2BCe04277dD5161832460e95b24262E"; -const vesting = "0x21950E281bDE1714ffd1062ed17c56D4D8de2359"; -const optreasury = "0x8d352083F7094dc51Cd7dA8c5C0985AD6e149629"; -const polytreasury = "0x3feE50d2888F2F7106fcdC0120295EBA3ae59245"; -const POOL = "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e"; - -const tokens = [ - nullAddress, - ADDRESSES.ethereum.USDC, //USDC - ADDRESSES.ethereum.DAI, //DAI - "0x028171bCA77440897B824Ca71D1c56caC55b68A3", //aDAI - ADDRESSES.ethereum.WETH, //WETH - ADDRESSES.ethereum.USDT, //USDT - "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", //GTC - "0x4da27a545c0c5B758a6BA100e3a049001de870f5", //stkAAVE - "0xdd4d117723C257CEe402285D3aCF218E9A8236E1", // ptausdc - ADDRESSES.ethereum.STETH, // stETH - "0xD5f60154BEf3564EbFBe9bB236595f0da548a742", // spethwin -]; - -async function ethOwnTokens(timestamp, block) { - const balances = {}; - const tokensAndOwners = [ - [POOL, pullTreasury], - [POOL, vesting], - ]; - await sumTokens(balances, tokensAndOwners, block); - await sumTokens2({ balances, owner: pullTreasury, resolveUniV3: true, block }); - return balances; -} - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - tokens, - owners: [pullTreasury, vesting], - }), - ownTokens: ethOwnTokens, - }, - optimism: { - tvl: sumTokensExport({ - tokens: [ - nullAddress, - ADDRESSES.optimism.OP, // OP - ], - owners: [optreasury], - }), - }, - polygon: { - tvl: sumTokensExport({ - tokens: [ - nullAddress, - "0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4", // StMATIC - ], - owners: [polytreasury], - }), - }, -}; diff --git a/projects/treasury/pop-fi.js b/projects/treasury/pop-fi.js deleted file mode 100644 index 9b5fe528eaa..00000000000 --- a/projects/treasury/pop-fi.js +++ /dev/null @@ -1,10 +0,0 @@ - -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - 'D3T38wVYstKhkSLXdYACGor5fGWBiuqWu9VjDp2XoPDB' - ], - }, -}) \ No newline at end of file diff --git a/projects/treasury/premia.js b/projects/treasury/premia.js deleted file mode 100644 index c915b7a41c1..00000000000 --- a/projects/treasury/premia.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.WBTC, // WBTC - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.WETH, // WETH - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.optimism.DAI, // DAI - '0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60', // LDO - ADDRESSES.arbitrum.LINK, // LINK - '0x82e3a8f066a6989666b031d916c43672085b1582', // YEARN - ], - owners: ['0xa079c6b032133b95cf8b3d273d27eeb6b110a469'], - ownTokens: ['0x51fc0f6660482ea73330e414efd7808811a57fa2'], - resolveUniV3: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/primex-finance.js b/projects/treasury/primex-finance.js deleted file mode 100644 index c5b8f338d89..00000000000 --- a/projects/treasury/primex-finance.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -const config = { - polygon: { - owners: ["0x3c0d3f52e9aa1c9645a05452f45c064a0f9569bf"], - ownTokens: ["0xdc6d1bd104e1efa4a1bf0bbcf6e0bd093614e31a"] - }, - arbitrum: { - owners: ["0x63464916388dab4f2e80551250335490c4518d37"], - ownTokens: ["0xa533f744b179f2431f5395978e391107dc76e103"] - }, - ethereum: { - owners: ["0x893047ea492659418501e3b5868aBe75468e2EB6"], - ownTokens: ["0xA533f744B179F2431f5395978e391107DC76e103"] - }, -} - -module.exports = treasuryExports(config); \ No newline at end of file diff --git a/projects/treasury/prosper.js b/projects/treasury/prosper.js deleted file mode 100644 index 5d39c17c606..00000000000 --- a/projects/treasury/prosper.js +++ /dev/null @@ -1,17 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); - -const treasury = "0xb3BbCBd70436c9CAdDf52E2F06732f81DaC1F127"; - -const pros_token = "0x915424Ac489433130d92B04096F3b96c82e92a9D"; // PROS token - -module.exports = treasuryExports({ - bsc: { - tokens: [ ], - owners: [treasury], - ownTokens: [pros_token], - }, - bitcoin: { - owners: bitcoinAddressBook.prosper, - }, -}) diff --git a/projects/treasury/psyoptions.js b/projects/treasury/psyoptions.js deleted file mode 100644 index 94865e1d089..00000000000 --- a/projects/treasury/psyoptions.js +++ /dev/null @@ -1,14 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - 'ENSuopuKKCDgdmT6dXHqJSjeDjUoLXUNikr33e21bNtp', - 'CyDnoEMVuf21v23bxoS2wXxPdCvRR2yFLfymegMH1WY4', - 'E4tuwwYvmB9XWKTmhxeRmywhMmttyDLtMok6jQVAbDLG', - ], - ownTokens: [ - 'PsyFiqqjiv41G7o5SMRzDJCu4psptThNR2GtfeGHfSq', // PSY fffff - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/puff.js b/projects/treasury/puff.js deleted file mode 100644 index 8b6bc0aa317..00000000000 --- a/projects/treasury/puff.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - mantle: { - tokens: [ - nullAddress, - ADDRESSES.mantle.mETH, - ], - owners: ["0x940e79c49d73ce46884f57087e0c78b608da57c6"], - ownTokens: ["0x26a6b0dcdcfb981362afa56d581e4a7dba3be140"], - uniV3nftsAndOwners: [["0xE9baC8f0100C3229AbddE01D692c6e5791d3b544", "0x940e79c49d73ce46884f57087e0c78b608da57c6"]], - }, -}) \ No newline at end of file diff --git a/projects/treasury/puli.js b/projects/treasury/puli.js deleted file mode 100644 index 810239d770c..00000000000 --- a/projects/treasury/puli.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require('../helper/unknownTokens') -// const PULI_TOKEN_STAKING_CONTRACT = '0x864d434308997e9648838d23f3eedf5d0fd17bea'; -const chain = 'bsc' -const TREASURY1 = '0xc569C21b0862B112Ed69bA9d2C6e9Ed86A036f9C' -const TREASURY2 = '0xA017862ADba59aA030b8aA0433eD91D9d909B8B1' - -module.exports = { - bsc: { - tvl: sumTokensExport({ - chain, - tokensAndOwners: [ - [nullAddress, TREASURY1], - [nullAddress, TREASURY2], - [ADDRESSES.bsc.BUSD, TREASURY1], - ['0xC17c30e98541188614dF99239cABD40280810cA3', TREASURY1], - [ADDRESSES.bsc.USDT, TREASURY1], - ['0x3FF5cbE338153063D8251d2B6a22A437EC09Eef3', TREASURY1], - ['0x3FF5cbE338153063D8251d2B6a22A437EC09Eef3', TREASURY2], - [ADDRESSES.bsc.BUSD, TREASURY2], - ['0xC17c30e98541188614dF99239cABD40280810cA3', TREASURY2], - [ADDRESSES.bsc.USDT, TREASURY2], - ], - }) - } -} diff --git a/projects/treasury/push.js b/projects/treasury/push.js deleted file mode 100644 index 25aa7ebb909..00000000000 --- a/projects/treasury/push.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x19Ff5f2C05aC6a303aF6d5002C99686e823EBE72"; -const push = "0xf418588522d5dd018b425E472991E52EBBeEEEEE" - -module.exports = treasuryExports({ - ethereum: { - owners: [treasury], - ownTokens: [push], - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - "0xAf31Fd9C3B0350424BF96e551d2D1264d8466205", - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.SAFE, - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/qidao.js b/projects/treasury/qidao.js deleted file mode 100644 index 09fbde3d486..00000000000 --- a/projects/treasury/qidao.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xf32e759d5f1c63ed62042497d3a50f044ee0982b"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/racoon-bet.js b/projects/treasury/racoon-bet.js deleted file mode 100644 index 82cfe818165..00000000000 --- a/projects/treasury/racoon-bet.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens') - -const config = { - juno: { owner: 'juno1puyjxrxkkwc9ms63a297vx2aln4kqsaeegnclknt99py59elandses9f3j', }, - migaloo: { owner: 'migaloo1q6vmqprwvay5p3l0d763v50ufunt7fwfnfwp85wne5xan4meeqpsdvzyvy', }, - chihuahua: { owner: 'chihuahua18s2dazpmva4t38rtnrlj3gjpsntmcdrk6v9220kt4yxckhqus3vssqsrgp', }, -} - -module.exports = { - timetravel: false, -} - -Object.keys(config).forEach(chain => { - const { owner } = config[chain] - module.exports[chain] = { tvl: sumTokensExport({ owner }) } -}) \ No newline at end of file diff --git a/projects/treasury/radiant.js b/projects/treasury/radiant.js deleted file mode 100644 index 016b738bff6..00000000000 --- a/projects/treasury/radiant.js +++ /dev/null @@ -1,15 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x750129c21c7846cfe0ce2c966d84c0bca5658497"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ - '0x3082cc23568ea640225c2467653db90e9250aaa0', //RDNT - ], - tokens: [ - nullAddress, - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/raft.js b/projects/treasury/raft.js deleted file mode 100644 index 44c0ff81a1d..00000000000 --- a/projects/treasury/raft.js +++ /dev/null @@ -1,13 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x1046BE559A736dca32C55026165902916e406343"; -const R = "0x183015a9bA6fF60230fdEaDc3F43b3D788b13e21"; -const RAFT = "0x4C5Cb5D87709387f8821709f7a6664f00DcF0C93"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [nullAddress, R], - owners: [treasury], - ownTokens: [RAFT], - }, -}); diff --git a/projects/treasury/railgun.js b/projects/treasury/railgun.js deleted file mode 100644 index ef4d5f5acb9..00000000000 --- a/projects/treasury/railgun.js +++ /dev/null @@ -1,128 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { tokens } = require("../helper/chain/algorand"); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -// Treasury -const ethTreasury = "0xE8A8B458BcD1Ececc6b6b58F80929b29cCecFF40"; -const bscTreasury = "0xdca05161eE5b5FA6DF170191c88857E70FFB4094"; -const polygonTreasury = "0xdca05161eE5b5FA6DF170191c88857E70FFB4094"; -const arbitrumTreasury = "0x3B374464a714525498e445ba050B91571937bFc8" -//ownTokens -const ethRAIL = "0xe76c6c83af64e4c60245d8c7de953df673a7a33d"; -const polygonRAIL = "0x92A9C92C215092720C731c96D4Ff508c831a714f";// not on coingecko - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - // Ethereum Assets - nullAddress, - ADDRESSES.ethereum.WETH, - "0x295B42684F90c77DA7ea46336001010F2791Ec8c",//xi - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.FXS,//fxs - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.CVX, - "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D",//renbtc - ADDRESSES.ethereum.cvxCRV, - ADDRESSES.ethereum.FXS,//wbtc - "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3",//mim - ADDRESSES.ethereum.LUSD, - "0x090185f2135308BaD17527004364eBcC2D37e5F6",//spell - ADDRESSES.ethereum.BUSD, - "0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0",//albt - ADDRESSES.ethereum.SNX, - "0x509A38b7a1cC0dcd83Aa9d06214663D9eC7c7F4a",//bst - ADDRESSES.ethereum.INU, - ADDRESSES.ethereum.LINK, - "0x21381e026Ad6d8266244f2A583b35F9E4413FA2a",//form - ADDRESSES.ethereum.TOKE, - "0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E",//ilv - ADDRESSES.ethereum.MKR, - "0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed",//tsuka - ADDRESSES.ethereum.FRAX, - "0x2223bF1D7c19EF7C06DAB88938EC7B85952cCd89",//kxa - "0x0f2d719407fdbeff09d87557abb7232601fd9f29",//syn - "0x7aE1D57b58fA6411F32948314BadD83583eE0e8C",//paper - "0xf65B5C5104c4faFD4b709d9D60a185eAE063276c",//tru - "0x3597bfd533a99c9aa083587b074434e61eb0a258",//dent - "0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25",//slp - ADDRESSES.ethereum.UNI, - ADDRESSES.ethereum.MATIC, - "0x9aE380F0272E2162340a5bB646c354271c0F5cFC",//cnc - "0x07bac35846e5ed502aa91adf6a9e7aa210f2dcbe",//erowan - "0xfb7b4564402e5500db5bb6d63ae671302777c75a",//dext - "0x33349b282065b0284d756f0577fb39c158f935e6",//mpl - "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c",//bnt - "0xBC19712FEB3a26080eBf6f2F7849b417FdD792CA",//boring - "0x34F7Da1243A4Aaa69DE3639a2f124Fa56f4DD5cd",//tess - ], - owners: [ethTreasury], - ownTokens: [ethRAIL] - }, - bsc: { - tokens: [ - // bsc Assets - nullAddress, - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.BUSD, - "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3",//dai - ADDRESSES.bsc.USDT, - "0x39cC67690D0F2d4aCD68d3d9B612a80D780b84c0",//agro - "0xbF7c81FFF98BbE61B40Ed186e4AfD6DDd01337fe",//egld - ADDRESSES.bsc.USDC, - "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82",//cake - "0xAdBAF88B39D37Dc68775eD1541F1bf83A5A45feB",//coti - "0xBfACD29427fF376FF3BC22dfFB29866277cA5Fb4",//pstn - "0x9A2f5556e9A637e8fBcE886d8e3cf8b316a1D8a2",//bidr - "0xC9849E6fdB743d08fAeE3E34dd2D1bc69EA11a51",//bunny - ], - owners: [bscTreasury], - ownTokens: [] - }, - polygon: { - tokens: [ - // polygon Assets - nullAddress, - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.DAI, - "0x1a3acf6D19267E2d3e7f898f42803e90C9219062",//fxs - ADDRESSES.polygon.WBTC, - "0xE5417Af564e4bFDA1c483642db72007871397896",//gns - "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b",//avax - "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39",//link - "0xfe712251173A2cd5F5bE2B46Bb528328EA3565E1",//mvi - ADDRESSES.polygon.WMATIC_2, - "0x752d59604d72b6DC44196f4A39A3f07779417407",//methmoon - "0x8f006D1e1D9dC6C98996F50a4c810F17a47fBF19",//nsfw - ADDRESSES.fantom.renBTC, - "0x9c891326Fd8b1a713974f73bb604677E1E63396D",//islami - ADDRESSES.polygon.FRAX,//frax - "0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B",//bob - "0x580A84C73811E1839F75d86d75d88cCa0c241fF4",//qi - "0x980111ae1B84E50222C8843e3A7a038F36Fecd2b",//stack - ADDRESSES.polygon.QUICK, - "0x6C0AB120dBd11BA701AFF6748568311668F63FE0",//apw - "0xE0339c80fFDE91F3e20494Df88d4206D86024cdF",//elon - ], - owners: [polygonTreasury], - ownTokens: [polygonRAIL] - }, - arbitrum: { - tokens: [ - // arbitrum assets - nullAddress, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC - ], - owners: [arbitrumTreasury], - ownTokens: [] - }, -}) - diff --git a/projects/treasury/rarible.js b/projects/treasury/rarible.js deleted file mode 100644 index c1cc92f36ef..00000000000 --- a/projects/treasury/rarible.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const rarTreasury = "0xFDfF6b56CcE39482032b27140252FF4F16432785"; -const rarTreasury1 = "0x1cf0dF2A5A20Cd61d68d4489eEBbf85b8d39e18a"; - -const RARI = "0xFca59Cd816aB1eaD66534D82bc21E7515cE441CF"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI - '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - ], - owners: [rarTreasury, rarTreasury1], - ownTokens: [RARI], - }, -}) \ No newline at end of file diff --git a/projects/treasury/realms.js b/projects/treasury/realms.js deleted file mode 100644 index 18ffe4327d3..00000000000 --- a/projects/treasury/realms.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0xa8e6efaf015d424c626cf3c23546fcb3bd2c9f1a"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - ADDRESSES.null, - ADDRESSES.ethereum.WETH - ], - owners: [treasury], - ownTokens: ["0x686f2404e77ab0d9070a46cdfb0b7fecdd2318b0"], // LORDS GOVERNANCE TOKEN - }, -}) diff --git a/projects/treasury/redacted.js b/projects/treasury/redacted.js deleted file mode 100644 index 117be419366..00000000000 --- a/projects/treasury/redacted.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x086c98855df3c78c6b481b6e1d47bef42e9ac36b" -const treasury2 = "0xa52fd396891e7a74b641a2cb1a6999fcf56b077e" -const treasury3 = "0x42e39157ec770197013e619c0eea8e1139f332db" -const treasury4 = "0xa722ebccd25adb06e5d0190b240d1f4039839822" -const treasury5OP = "0x2e33a660742e813ad948fb9f7d682fe461e5fbf3" -const treasury6ARB = "0x64769c53ff91b83fe9830776a4b85a1f4e1edaad" -const BTRF = "0xc55126051B22eBb829D00368f4B12Bde432de5Da" -const DINERO = "0x6DF0E641FC9847c0c6Fde39bE6253045440c14d3" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT, - "0x2ba592F78dB6436527729929AAf6c908497cB200", // CREAM - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.SAFE, - "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", - ADDRESSES.ethereum.DAI, - "0xaCe78D9BaB82b6B4783120Dba82aa10B040A14D9", - "0xBCe0Cf87F513102F22232436CCa2ca49e815C3aC", - ADDRESSES.ethereum.CRV, - ], - ownTokens: [BTRF, DINERO], - owners: [treasury, treasury2,treasury3,treasury4], - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.OP, - "0xaf9fe3b5ccdae78188b1f8b9a49da7ae9510f151", // DHT - ADDRESSES.optimism.USDC, - "0x3f56e0c36d275367b8c502090edf38289b3dea0d", // QI - "0x97513e975a7fa9072c72c92d8000b0db90b163c5", //BEETS - "0x39fde572a18448f8139b7788099f0a0740f51205", //OATH - "0x00a35fd824c717879bf370e70ac6868b95870dfb", //IB - "0x3c8b650257cfb5f272f799f5e2b4e65093a11a05", //VELO - ], - owners: [treasury5OP], - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC, - "0x10393c20975cf177a3513071bc110f7962cd67da", // JONES - ], - owners: [treasury6ARB], - }, -}); \ No newline at end of file diff --git a/projects/treasury/relay.js b/projects/treasury/relay.js deleted file mode 100644 index 41c93ce3605..00000000000 --- a/projects/treasury/relay.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xf803dce584b7ecb57f90af0b85e67dac7e0da6d9"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/request-network.js b/projects/treasury/request-network.js deleted file mode 100644 index f268bdbad42..00000000000 --- a/projects/treasury/request-network.js +++ /dev/null @@ -1,21 +0,0 @@ - -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json'); - -const treasury = "0x0632dcc37b1FAbf2CaD20538A5390D23C830962e"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - '0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202', // KNC - ADDRESSES.ethereum.SAFE, - '0x4da27a545c0c5b758a6ba100e3a049001de870f5' // stkAAVE - ], - owners: [treasury], - ownTokens: ["0x8f8221afbb33998d8584a2b05749ba73c37a938a"], // RFQ GOVERNANCE TOKEN - }, -}) diff --git a/projects/treasury/reserve.js b/projects/treasury/reserve.js deleted file mode 100644 index b79f511f8a3..00000000000 --- a/projects/treasury/reserve.js +++ /dev/null @@ -1,36 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const { mergeExports } = require('../helper/utils'); -const reserveTreasury = "0xC6625129C9df3314a4dd604845488f4bA62F9dB8"; -// base -const reserveBaseTreasury = "0x6f1D6b86d4ad705385e751e6e88b0FdFDBAdf298"; -const AERO = "0x940181a94A35A4569E4529A3CDfB74e38FD98631"; -const aeroVotingEscrow = "0xebf418fe2512e7e6bd9b87a8f0f294acdc67e6b4"; -const veAEROIds = ["11380", "15026", "19853"]; - -module.exports = mergeExports([treasuryExports({ - ethereum: { - tokens: [nullAddress], - owners: [reserveTreasury], - ownTokens: ["0x320623b8e4ff03373931769a31fc52a4e78b5d70"], - }, -}), { - base: { - tvl: async (api) => { - const veAEROHolders = await api.multiCall({ - abi: "function ownerOf(uint256) external view returns (address)", - calls: veAEROIds.map(veAEROId => ({ target: aeroVotingEscrow, params: veAEROId})), - permitFailure: true, - }); - const ownsOfNFT = (address) => address === reserveBaseTreasury; - const baseTreasuryIsOwner = veAEROHolders.some(ownsOfNFT); - if(!baseTreasuryIsOwner) throw new Error("Not a valid treasury for veAERO"); - const lockedAmounts = await api.multiCall({ - abi: "function balanceOfNFT(uint256) external view returns (uint256)", - calls: veAEROIds.map(veAEROId => ({ target: aeroVotingEscrow, params: veAEROId})), - permitFailure: true, - }); - api.add(AERO, lockedAmounts); - return api.getBalances(); - }, - }, -}]) \ No newline at end of file diff --git a/projects/treasury/resupply.js b/projects/treasury/resupply.js deleted file mode 100644 index 26e072cc547..00000000000 --- a/projects/treasury/resupply.js +++ /dev/null @@ -1,12 +0,0 @@ -const { treasuryExports } = require('../helper/treasury'); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0x4444444455bF42de586A88426E5412971eA48324'], - ownTokens: [ - '0x57aB1E0003F623289CD798B1824Be09a793e4Bec', //reUSD - '0x419905009e4656fdC02418C7Df35B1E61Ed5F726' //RSUP - ], - blacklistedTokens: ['0xEe351f12EAE8C2B8B9d1B9BFd3c5dd565234578d'] - } -}) \ No newline at end of file diff --git a/projects/treasury/revoke.js b/projects/treasury/revoke.js deleted file mode 100644 index a20d7fa5536..00000000000 --- a/projects/treasury/revoke.js +++ /dev/null @@ -1,83 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xe126b3E5d052f1F575828f61fEBA4f4f2603652a" // - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.DAI, - ADDRESSES.optimism.WETH, - ADDRESSES.optimism.USDT, - ADDRESSES.optimism.USDC, - "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", //snx - ], - owners: [treasury], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72", //ens - "0xDd1Ad9A21Ce722C151A836373baBe42c868cE9a4", //ubi - "0x7aE1D57b58fA6411F32948314BadD83583eE0e8C", //paper - "0xb24cd494faE4C180A89975F1328Eab2a7D5d8f11", //code - "0x6243d8CEA23066d098a15582d81a598b4e8391F4", //flx - "0xc4De189Abf94c57f396bD4c52ab13b954FebEfD8", //b20 - "0xad32A8e6220741182940c5aBF610bDE99E737b2D", //dough - "0x90DE74265a416e1393A450752175AED98fe11517", //udt - "0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69", //iotx - "0x5dD57Da40e6866C9FcC34F4b6DDC89F1BA740DfE", //bright - "0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d", //fox - "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", //alcx - "0x4F14cDBd815B79E9624121f564f24685c6B1211b", //anfd - "0xE41d2489571d322189246DaFA5ebDe1F4699F498", //zrx - "0x7b35Ce522CB72e4077BaeB96Cb923A5529764a00", //imx - ], - owners: [treasury], - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.BUSD, //busd - "0xF68C9Df95a18B2A5a5fa1124d79EEEffBaD0B6Fa", //any - ], - owners: [treasury], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDT, //usdt - ADDRESSES.polygon.DAI, //dai - ADDRESSES.polygon.USDC, //usdc - "0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4", //ammatic - ], - owners: [treasury], - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.ARB, //arb - "0x539bdE0d7Dbd336b79148AA742883198BBF60342", //magic - ADDRESSES.arbitrum.USDC, //usdc - "0x1F52145666C862eD3E2f1Da213d479E61b2892af", //fuc - ], - owners: [treasury], - }, - arbitrum_nova: { - tokens: [ - nullAddress, - ADDRESSES.optimism.DAI, //dai - ], - owners: [treasury], - }, - xdai: { - tokens: [ - nullAddress, - "0x71850b7E9Ee3f13Ab46d67167341E4bDc905Eef9", //hny - ], - owners: [treasury], - }, - -}) \ No newline at end of file diff --git a/projects/treasury/revoluzion.js b/projects/treasury/revoluzion.js deleted file mode 100644 index dc8b4b0ef4d..00000000000 --- a/projects/treasury/revoluzion.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require('../helper/unknownTokens') -const REVOLUZION_TOKEN_CONTRACT = '0x7D89c67d3c4E72E8c5c64BE201dC225F99d16aCa'; -const REVOLUZION_DIAMOND_HAND_CONTRACT = '0xA72a15369Fe9840a20c40F18b1695eF168fFFa77'; -const REVOLUZION_DIVIDEND_CONTRACT = '0x23259212B5CD09A511440b9DD472d339C716dEb5'; -const BUSD = ADDRESSES.bsc.BUSD - -module.exports = { - bsc: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [BUSD, REVOLUZION_DIAMOND_HAND_CONTRACT], - [BUSD, REVOLUZION_DIVIDEND_CONTRACT], - ], - }) - } -} diff --git a/projects/treasury/rezerve.js b/projects/treasury/rezerve.js deleted file mode 100644 index 2e6d68b92b0..00000000000 --- a/projects/treasury/rezerve.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const treasury = "0x0E43DF9F40Cc6eEd3eC70ea41D6F34329fE75986"; -const rzr = "0xb4444468e444f89e1c2CAc2F1D3ee7e336cBD1f5"; -const tokens = [ - nullAddress, - rzr, - ADDRESSES.sonic.USDC_e, - ADDRESSES.sonic.scUSD, -]; - -module.exports = treasuryExports({ - sonic: { - tokens, - owners: [treasury], - ownTokens: [rzr], - resolveLP: true, - }, - ethereum: { - tokens, - owners: [treasury], - ownTokens: [rzr], - resolveLP: true, - }, -}); diff --git a/projects/treasury/ribbon.js b/projects/treasury/ribbon.js deleted file mode 100644 index 4e6ebcaac80..00000000000 --- a/projects/treasury/ribbon.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -// Treasury -const treasury = "0xDAEada3d210D2f45874724BeEa03C7d4BBD41674"; -const treasury2 = "0x42c1357aaa3243ea30c713cdfed115d09f10a71d" -const treasury3 = "0x6adeb4fddb63f08e03d6f5b9f653be8b65341b35" -const RBN = "0x6123B0049F904d730dB3C36a31167D9d4121fA6B"; -const AEVO = ADDRESSES.ethereum.AEVO - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - // Ethereum Assets - nullAddress, - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.LIDO, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.RETH, - ADDRESSES.ethereum.STETH, - "0xba100000625a3754423978a60c9317c58a424e3D", // BAL - "0x4d224452801ACEd8B2F0aebE155379bb5D594381", // APE - "0x090185f2135308BaD17527004364eBcC2D37e5F6", // SPELL - ADDRESSES.ethereum.UNI, - ADDRESSES.ethereum.SAFE, - "0xa354F35829Ae975e850e23e9615b11Da1B3dC4DE", // yvUSDC - "0x25751853Eab4D0eB3652B5eB6ecB102A2789644B", // rETH-THETA - ], - owners: [treasury, treasury2, treasury3], - ownTokens: [ - RBN, - "0xd590931466cdD6d488A25da1E89dD0539723800c", // 50RBN-50USDC - AEVO - ], - }, -}); diff --git a/projects/treasury/rootstock-collective.js b/projects/treasury/rootstock-collective.js deleted file mode 100644 index c8d26e8018f..00000000000 --- a/projects/treasury/rootstock-collective.js +++ /dev/null @@ -1,19 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -// Treasury -const treasuryGrants = "0x48229e5D82a186Aa89a99212D2D59f5674aa5b6C"; -const treasuryActive = "0xf016fA6B237BB56E3AEE7022C6947a6A103E3C47"; -const treasuryGrowth = "0x267a6073637408b6A1d34d685ff5720A0CbCbD9d"; -const treasuryGeneral = "0xfE3d9B7D68aE13455475F28089968336414FD358"; - - -module.exports = treasuryExports({ - rsk: { - tokens: [ - // Rootstock Assets - nullAddress, - ], - owners: [treasuryGrants, treasuryActive, treasuryGrowth, treasuryGeneral], - ownTokens: ["0x2aCc95758f8b5F583470bA265Eb685a8f45fC9D5",] // RIF - }, -}); \ No newline at end of file diff --git a/projects/treasury/rotki.js b/projects/treasury/rotki.js deleted file mode 100644 index 3420dd3cda8..00000000000 --- a/projects/treasury/rotki.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x9531C059098e3d194fF87FebB587aB07B30B1306"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72", - "0x8290333ceF9e6D528dD5618Fb97a76f268f3EDD4", - "0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC", - ADDRESSES.ethereum.sUSD, - ADDRESSES.ethereum.MKR - ], - owners: [treasury], - ownTokens: [], - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.USDT, - ADDRESSES.optimism.OP - ], - owners: [treasury] - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.DAI, - ADDRESSES.arbitrum.WETH - ], - owners: [treasury] - }, -}); \ No newline at end of file diff --git a/projects/treasury/router.js b/projects/treasury/router.js deleted file mode 100644 index ad39b2f0636..00000000000 --- a/projects/treasury/router.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xdb8f4c4c68e5e5eb501fee1adaa87ee767bcade7"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/saddle.js b/projects/treasury/saddle.js deleted file mode 100644 index 8eaa74b41d5..00000000000 --- a/projects/treasury/saddle.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - '0x5575552988a3a80504bbaeb1311674fcfd40ad4b', - '0x2cab3abfc1670d1a452df502e216a66883cdf079', - ADDRESSES.arbitrum.FRAX, - ADDRESSES.arbitrum.USDC, - ], - owners: ['0x8e6e84ddab9d13a17806d34b097102605454d147'], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/safe.js b/projects/treasury/safe.js deleted file mode 100644 index 61b6a539bfa..00000000000 --- a/projects/treasury/safe.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const treasury = "0x3EDf6868d7c42863E44072DaEcC16eCA2804Dea1" // -const SAFE = ADDRESSES.ethereum.SAFE -const safe_foundation_treasury = "0x1d4f25bc16b68c50b78e1040bc430a8097fd6f45" -const safe_dao_2 = "0x0b00b3227a5f3df3484f03990a87e02ebad2f888" -const safe_gnosisdao_joint_treasury = "0xd28b432f06cb64692379758B88B5fCDFC4F56922" - - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.OP, - ], - owners: [treasury], - }, - ethereum: { - tokens: [ - nullAddress, - ], - owners: [safe_foundation_treasury, safe_dao_2,safe_gnosisdao_joint_treasury], - ownTokens: [SAFE], - }, - -}) \ No newline at end of file diff --git a/projects/treasury/sakai-vault.js b/projects/treasury/sakai-vault.js deleted file mode 100644 index a2645697341..00000000000 --- a/projects/treasury/sakai-vault.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const Treasury = "0x6b269c07e8f94f0fa1769cbd362879afea0206db"; -const SAKAI = "0x43B35e89d15B91162Dea1C51133C4c93bdd1C4aF"; - - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.USDT - ], - owners: [Treasury], - ownTokens: [SAKAI], - }, -}) \ No newline at end of file diff --git a/projects/treasury/saltyio.js b/projects/treasury/saltyio.js deleted file mode 100644 index 1d63b743eb3..00000000000 --- a/projects/treasury/saltyio.js +++ /dev/null @@ -1,10 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const treasury = "0x35fdBd5b52D131629EA5403FF1bc7ff6A1869D60" // - -module.exports = treasuryExports({ - ethereum: { - owners: [treasury], - ownTokens: ['0x0110B0c3391584Ba24Dbf8017Bf462e9f78A6d9F'] - }, -}) \ No newline at end of file diff --git a/projects/treasury/sandclock.js b/projects/treasury/sandclock.js deleted file mode 100644 index a1763b62e3e..00000000000 --- a/projects/treasury/sandclock.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x035F210e5d14054E8AE5A6CFA76d643aA200D56E"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.LUSD, - ], - owners: [treasury], - ownTokens: ["0xba8a621b4a54e61c442f5ec623687e2a942225ef"], - }, -}) diff --git a/projects/treasury/savvy.js b/projects/treasury/savvy.js deleted file mode 100644 index 2ce17b21a62..00000000000 --- a/projects/treasury/savvy.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x4f54cab19b61138e3c622a0bd671c687481ec030"; -const SVY = "0x43aB8f7d2A8Dd4102cCEA6b438F6d747b1B9F034" -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC_CIRCLE - ], - owners: [treasury,], - ownTokens: [SVY], - }, -}) \ No newline at end of file diff --git a/projects/treasury/shapeshift.js b/projects/treasury/shapeshift.js deleted file mode 100644 index 50294565116..00000000000 --- a/projects/treasury/shapeshift.js +++ /dev/null @@ -1,50 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -const evm_addresses = [ - '0x90a48d5cf7343b08da12e067680b4c6dbfe551be', - '0x6268d07327f4fb7380732dc6d63d95f88c0e083b', - '0x74d63f31c2335b5b3ba7ad2812357672b2624ced', - '0xb5f944600785724e31edb90f9dfa16dbf01af000', - '0xb0e3175341794d1dc8e5f02a02f9d26989ebedb3', - '0x8b92b1698b57bedf2142297e9397875adbb2297e', - '0x38276553f8fbf2a027d901f8be45f00373d8dd48', - '0x5c59d0ec51729e40c413903be6a4612f4e2452da', - '0x9c9aa90363630d4ab1d9dbf416cc3bbc8d3ed502', -]; - -const EVM_CHAINS = ['ethereum', 'arbitrum', 'bsc', 'xdai', 'polygon', 'avax', 'optimism']; - -const EVM_OWN_TOKENS = { - ethereum: [ - '0x470e8de2eBaef52014A47Cb5E6aF86884947F08c', - '0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d', - '0x808D3E6b23516967ceAE4f17a5F9038383ED5311', - ], - arbitrum: ['0xf929de51d91c77e42f5090069e0ad7a09e513c73'], - xdai: ['0x21a42669643f45bc0e086b8fc2ed70c23d67509d'], - polygon: ['0x65a05db8322701724c197af82c9cae41195b0aa8'], - optimism: ['0xf1a0da3367bc7aa04f8d94ba57b862ff37ced174'], -}; - -const CONFIG = Object.fromEntries([ - ...EVM_CHAINS.map((chain) => [ - chain, - EVM_OWN_TOKENS[chain] - ? { owners: evm_addresses, ownTokens: EVM_OWN_TOKENS[chain] } - : { owners: evm_addresses }, - ]), - ['solana', { owners: ['C7RTJbss7R1r7j8NUNYbasUXfbPJR99PMhqznvCiU43N'] }], - ['cosmos', { owners: ['cosmos1hmpklv86wmkj8y8k2dd4wd6rcwln6und7v0s92'] }], -]); - -const exportConfig = Object.fromEntries( - Object.entries(CONFIG).map(([chain, cfg]) => [ - chain, - cfg.ownTokens ? { owners: cfg.owners, ownTokens: cfg.ownTokens } : { owners: cfg.owners }, - ]) -); - -module.exports = treasuryExports({ - isComplex: false, - ...exportConfig, -}); diff --git a/projects/treasury/sharplink-gaming.js b/projects/treasury/sharplink-gaming.js deleted file mode 100644 index 82b093ce7e2..00000000000 --- a/projects/treasury/sharplink-gaming.js +++ /dev/null @@ -1,16 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json'); - -const treasury = "0x0b26C05866e6353E46f4A7e2d10Cb42d4B583E57" -const treasury2 = "0x353657ACd92f4C83a9DbA7Cdab84289EffFA4FeB" -const treasury3 = "0xd6BcA7F5F7f1Be0494DcD2Da16381176DA425131" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549', // LsETH - ], - owners: [treasury, treasury2, treasury3], - }, -}); diff --git a/projects/treasury/shibui.js b/projects/treasury/shibui.js deleted file mode 100644 index fd0559b1815..00000000000 --- a/projects/treasury/shibui.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const Boba_BOBA = ADDRESSES.boba.BOBA; -const Boba_USDT = ADDRESSES.boba.USDT; -const Boba_SHIBUI_WETH = "0xcE9F38532B3d1e00a88e1f3347601dBC632E7a82"; -const Boba_SHIBUI_USDT = "0x3f714fe1380ee2204ca499d1d8a171cbdfc39eaa"; - -module.exports = { - boba: { - tvl: async (api) => { - return api.sumTokens({ owners: [ - "0x9596E01Ad72d2B0fF13fe473cfcc48D3e4BB0f70", // Hot treasury - ], tokens: [ - Boba_BOBA, - Boba_USDT, - Boba_SHIBUI_WETH, - Boba_SHIBUI_USDT, - ] }); - }, - }, -} diff --git a/projects/treasury/sideshift-ai.js b/projects/treasury/sideshift-ai.js deleted file mode 100644 index 9510fc2dab4..00000000000 --- a/projects/treasury/sideshift-ai.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); -const axios = require('axios') - -const evm_owners = ['0x8f456e525ed0115e22937c5c8afac061cc697f21'] -const btc_owners= ['bc1qe02p6kqe40g826zp3yfyzgs87c5az2v6wfvn30'] -const API_URL = 'https://api.hyperliquid.xyz/info' - -const tvl = async (api) => { - const { data } = await axios.post(API_URL, { "type": "userVaultEquities", user: evm_owners[0] }) - data.forEach(({ equity }) => { - api.add(ADDRESSES.ethereum.USDC, +equity * 1e6, { skipChain: true }) - }) -} - -module.exports = { - hyperliquid: { tvl }, - ...treasuryExports({ - isComplex: true, - complexOwners: evm_owners, - bitcoin: { owners: btc_owners }, - ethereum: { }, - mantle: { }, - }) -} \ No newline at end of file diff --git a/projects/treasury/silent-protocol.js b/projects/treasury/silent-protocol.js deleted file mode 100644 index 4ffe9fde502..00000000000 --- a/projects/treasury/silent-protocol.js +++ /dev/null @@ -1,5 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { owners: ['0x305a2694dD75ecb7D6ACbf0Efcd55278c992eEB9'], }, -}) \ No newline at end of file diff --git a/projects/treasury/silo-finance.js b/projects/treasury/silo-finance.js deleted file mode 100644 index 790fdb9f0fc..00000000000 --- a/projects/treasury/silo-finance.js +++ /dev/null @@ -1,78 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const { mergeExports } = require('../helper/utils'); - -const ETHEREUM_MAINNET_TREASURIES = [ - "0xE8e8041cB5E3158A0829A19E014CA1cf91098554", - "0xdaC29737b5FB121F11EE7f17dB0212F82b4AB009", - "0xe1F03b7B0eBf84e9B9f62a1dB40f1Efb8FaA7d22", - "0xDfF2aeA378e41632E45306A6dE26A7E0Fd93AB07", - "0xC04f84A02cC65f14f4e8C982a7a467EE88c5311e", - "0x9b85bc68fec59E0209189b475e0cF636c8264e02", - "0xcFEedb0219A99bE73dFE04B2A9905a109Cf87823", -]; - -const SILO_ETHEREUM_MAINNET = "0x6f80310CA7F2C654691D1383149Fa1A57d8AB1f8"; -const XAI_ETHEREUM_MAINNET = "0xd7C9F0e536dC865Ae858b0C0453Fe76D13c3bEAc"; - -const ARBITRUM_MAINNET_TREASURIES = [ - "0x865a1da42d512d8854c7b0599c962f67f5a5a9d9", - "0x80071b39aA896aa12240c5194E42661D671bDFB2", -] - -const SILO_ARBITRUM_MAINNET = "0x0341C0C0ec423328621788d4854119B97f44E391"; - -module.exports = mergeExports([ - treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.LUSD,//LUSD - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - ADDRESSES.ethereum.TOKE,//TOKE - ADDRESSES.ethereum.CVX, // CVX - ADDRESSES.ethereum.YFI, // YFI - ADDRESSES.ethereum.CRV, // CRV - ADDRESSES.ethereum.CRVUSD, // crvUSD - "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", // GRT - ADDRESSES.ethereum.FXS // FXS - ], - owners: ETHEREUM_MAINNET_TREASURIES, - ownTokens: [SILO_ETHEREUM_MAINNET, XAI_ETHEREUM_MAINNET], - resolveUniV3: true, - resolveVlCVX: true, - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.ARB, // ARB - ADDRESSES.arbitrum.GMX, // GMX - ADDRESSES.arbitrum.USDC_CIRCLE, // USDC Native - ADDRESSES.arbitrum.USDC, // USDC.e (Bridged) - "0x6C2C06790b3E3E3c38e12Ee22F8183b37a13EE55", // DPX - "0x18c11FD286C5EC11c3b683Caa813B77f5163A122", // GNS - "0x51fC0f6660482Ea73330E414eFd7808811a57Fa2", // PREMIA - "0xd4d42F0b6DEF4CE0383636770eF773390d85c61A", // SUSHI - "0x1622bF67e6e5747b81866fE0b85178a93C7F86e3", // UMAMI - "0x539bdE0d7Dbd336b79148AA742883198BBF60342", // MAGIC - "0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0", // UNI - ], - owners: ARBITRUM_MAINNET_TREASURIES, - ownTokens: [SILO_ARBITRUM_MAINNET], - } - }), - { - ethereum: { tvl } - } -]) - -async function tvl(api) { - const convexStakingProxy = '0x5754B88287A88dfA3d02cfb87747E340A840c70A' - const fraxFarm = '0x4edF7C64dAD8c256f6843AcFe56876024b54A1b6' - const liquidity = await api.call({ abi: 'function lockedLiquidityOf(address) view returns (uint256)', target: fraxFarm, params: convexStakingProxy }) - api.add('0x326290A1B0004eeE78fa6ED4F1d8f4b2523ab669', liquidity) - return api.getBalances() -} \ No newline at end of file diff --git a/projects/treasury/singularity-finance.js b/projects/treasury/singularity-finance.js deleted file mode 100644 index b73428d9a57..00000000000 --- a/projects/treasury/singularity-finance.js +++ /dev/null @@ -1,16 +0,0 @@ -const { nullAddress, treasuryExports } = require('../helper/treasury') -const ADDRESSES = require('../helper/coreAssets.json') - -const eco_fund = '0xaeb2a9be7b2429572f6b4baaf3c33d2b0653a45d' -const eco_incentives = '0x772a84869a55d483d507ae238fba4587fc41e674' -const team_allocations = '0x63b514e5ef28cfe16f096de47e6c79ca073ef5fa' -const series_a = '0xeb18e9464516ae2e68202a9cca255a23157bf186' -const sfi_master = '0xdfdca55a5a07e154f18368893692ddd7c0243d4c' -const sfi = '0x7636D8722Fdf7cd34232a915E48e96aA3eB386BF' - -module.exports = treasuryExports({ - ethereum: { - owners: [eco_fund, eco_incentives, team_allocations, series_a, sfi_master], - ownTokens: [sfi], - }, -}) \ No newline at end of file diff --git a/projects/treasury/snapshot.js b/projects/treasury/snapshot.js deleted file mode 100644 index 8b51b040029..00000000000 --- a/projects/treasury/snapshot.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x3E87e5BCE4dEb09FeE5045EF15E18f873212E6A7"; - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, // USDC - ADDRESSES.optimism.OP, - ], - owners: [treasury], - ownTokens: [], - }, -}); \ No newline at end of file diff --git a/projects/treasury/spark.js b/projects/treasury/spark.js deleted file mode 100644 index 86637232091..00000000000 --- a/projects/treasury/spark.js +++ /dev/null @@ -1,11 +0,0 @@ -const { treasuryExports } = require('../helper/treasury') - -const treasury = '0x3300f198988e4c9c63f75df86de36421f06af8c4' -const spk = '0xc20059e0317DE91738d13af027DfC4a50781b066' - -module.exports = treasuryExports({ - ethereum: { - owners: [treasury], - ownTokens: [spk], - }, -}) \ No newline at end of file diff --git a/projects/treasury/spartacus.js b/projects/treasury/spartacus.js deleted file mode 100644 index b81b51ec622..00000000000 --- a/projects/treasury/spartacus.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const sparTreasury1 = "0x8CFA87aD11e69E071c40D58d2d1a01F862aE01a8"; - -const SPA = "0x5602df4a94eb6c680190accfa2a475621e0ddbdc"; - - -module.exports = treasuryExports({ - fantom: { - tokens: [ - nullAddress, - ADDRESSES.fantom.DAI,//DAI - ADDRESSES.fantom.WFTM,//WFTM - ], - owners: [sparTreasury1], - ownTokens: [SPA], - }, -}) \ No newline at end of file diff --git a/projects/treasury/sperax.js b/projects/treasury/sperax.js deleted file mode 100644 index 94df3b01e2c..00000000000 --- a/projects/treasury/sperax.js +++ /dev/null @@ -1,11 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: ['0x8898a38eb8e3104f7c98622b55260e014b3a0217'], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/sphere-finance.js b/projects/treasury/sphere-finance.js deleted file mode 100644 index 274944ed355..00000000000 --- a/projects/treasury/sphere-finance.js +++ /dev/null @@ -1,62 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const investment_treasury_polygon = "0x20d61737f972eecb0af5f0a85ab358cd083dd56a" -const liquid_pool_treasury_polygon = "0x1a2ce410a034424b784d4b228f167a061b94cff4" -const rfv_treasury = "0x826b8d2d523e7af40888754e3de64348c00b99f4" -const treasuryBSC = "0x124e8498a25eb6407c616188632d40d80f8e50b0" -const treasuryARB ="0xA6efac6a6715CcCE780f8D9E7ea174C4d85dbE02" -const treasuryOP = "0x93b0a33911de79b897eb0439f223935af5a60c24" -const treasuryCH = "0x74b514bc1b9480e1daca0f83a1e42b86291eadef" -const multisig = "0x79e51953f023df68fc46170d1ee47fd5a49d3b6e" - -module.exports = treasuryExports({ - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.WMATIC_1, - "0x236eeC6359fb44CCe8f97E99387aa7F8cd5cdE1f", - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.WMATIC, - ADDRESSES.polygon.USDC - - ], - owners: [investment_treasury_polygon, liquid_pool_treasury_polygon, rfv_treasury, treasuryCH, multisig], - ownTokens: ["0x17e9C5b37283ac5fBE527011CeC257b832f03eb3", "0x8D546026012bF75073d8A586f24A5d5ff75b9716"], - }, - bsc: { - tokens: [ - nullAddress, - "0xe80772Eaf6e2E18B651F160Bc9158b2A5caFCA65", - "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827", - ADDRESSES.bsc.BUSD, - "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11" - ], - owners: [treasuryBSC], - ownTokens: [], - }, - arbitrum: { - tokens: [ - nullAddress, - "0xe80772Eaf6e2E18B651F160Bc9158b2A5caFCA65", - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.GMX, - ADDRESSES.arbitrum.WBTC, - "0x15b2fb8f08E4Ac1Ce019EADAe02eE92AeDF06851", - ], - owners: [treasuryARB], - ownTokens: [], - resolveUniV3: true, - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.OP, - ADDRESSES.optimism.USDC, - "0x73cb180bf0521828d8849bc8CF2B920918e23032" - ], - owners: [treasuryOP], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/spherium.js b/projects/treasury/spherium.js deleted file mode 100644 index a347f04b2b0..00000000000 --- a/projects/treasury/spherium.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x2c41fb81cfc64cd1373058f2a13289819641d223"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/spiral-dao.js b/projects/treasury/spiral-dao.js deleted file mode 100644 index eb3c276d285..00000000000 --- a/projects/treasury/spiral-dao.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const utils = require('../helper/utils'); -const treasury = '0x85b6acaba696b9e4247175274f8263f99b4b9180' - -// treasury address: 0xc47ec74a753acb09e4679979afc428cde0209639 -async function tvl(api) { - const { data: { tokens, extraUsdValues } } = await utils.fetchURL('https://api.spiral.farm/data/eth/treasury'); - const addrs = Object.keys(tokens).filter(addr => addr.startsWith('0x')) - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: addrs}) - addrs.forEach((addr, idx) => { - api.add(addr, tokens[addr].totalAmount * 10 ** decimals[idx]) - }) - api.add(nullAddress, tokens.eth.totalAmount * 1e18) - api.add('coingecko:tether', extraUsdValues.tokenRedeemContractUsdcBalance, { skipChain: true }) - api.add('coingecko:tether', extraUsdValues.bribes, { skipChain: true }) - // return sumTokens2({ api, owner: treasury, fetchCoValentTokens: true, }) -} - -module.exports = { - timetravel: false, - ethereum: { - tvl - } -} \ No newline at end of file diff --git a/projects/treasury/spookyswap.js b/projects/treasury/spookyswap.js deleted file mode 100644 index 3df62f4649f..00000000000 --- a/projects/treasury/spookyswap.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const multisig = "0x1A11f5DF739bEca4974aCE4d8E5CE5ef5D854889"; - -module.exports = treasuryExports({ - fantom: { - tokens: [ - nullAddress, - ADDRESSES.fantom.DAI, // DAI - "0x74b23882a30290451A17c44f4F05243b6b58C76d", // ETH - "0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e", // BEETS - ADDRESSES.fantom.WFTM, // WFTM - ADDRESSES.fantom.USDC, // USDC - ], - owners: [multisig], - ownTokens: ["0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE"], - }, -}); diff --git a/projects/treasury/spool-protocol.js b/projects/treasury/spool-protocol.js deleted file mode 100644 index 3fede6fcf47..00000000000 --- a/projects/treasury/spool-protocol.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const treasury = "0xf6bc2e3b1f939c435d9769d078a6e5048aabd463"; -const SPOOL = "0x40803cEA2b2A32BdA1bE61d3604af6a814E70976" -const LP = "0xF3b675df63FB4889180d290A338fc15C0766fd64" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC - - ], - owners: [treasury], - ownTokens: [SPOOL, LP], - }, -}); diff --git a/projects/treasury/stakedao.js b/projects/treasury/stakedao.js deleted file mode 100644 index ba61c69e0fb..00000000000 --- a/projects/treasury/stakedao.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const owners = ['0x5da07af8913a4eaf09e5f569c20138b658906c17', '0xf930ebbd05ef8b25b1797b9b2109ddc9b0d43063'] - -const config = { - isComplex: true, - complexOwners: owners, - ethereum: { - owners, - ownTokens: ['0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F'], - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - '0x320623b8e4ff03373931769a31fc52a4e78b5d70', - '0xd1b5651e55d4ceed36251c61c50c889b36f6abb5', - '0x7448c7456a97769f6cd04f1e83a4a23ccdc46abd' - ], - }, - arbitrum: { - owners: ['0xfdb1157ac847d334b8912df1cd24a93ee22ff3d0', ...owners], - tokens : [ - nullAddress, - '0x11cdb42b0eb46d95f990bedd4695a6e3fa034978' - ], - }, - bsc: { - owners, - tokens: [ - nullAddress, - '0x8d279274789ccec8af94a430a5996eaace9609a9', - '0x25d887ce7a35172c62febfd67a1856f20faebb00' - ], - }, - base: { - owners, - tokens: [ - '0x8e7801bac71e92993f6924e7d767d7dbc5fce0ae', - '0x8ee73c484a26e0a5df2ee2a4960b789967dd0415', - '0x6bb7a212910682dcfdbd5bcbb3e28fb4e8da10ee', - '0xb4444468e444f89e1c2cac2f1d3ee7e336cbd1f5', - ADDRESSES.optimism.WETH_1 - ], - }, - polygon: { - owners, - ownTokens: ['0x361a5a4993493ce00f61c32d4ecca5512b82ce90'], - tokens: [ - nullAddress, - ], - }, - fraxtal: {} -} - -module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/treasury/stargate-finance.js b/projects/treasury/stargate-finance.js deleted file mode 100644 index 5fc1120b250..00000000000 --- a/projects/treasury/stargate-finance.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const index = require('../stargate-finance/index') -const { treasuryExports } = require('../helper/treasury') - -module.exports = treasuryExports({ - bsc: { - owner: '0xA2B48Ad28c09cc64CcCf9eD73e1EfceD052877d5', - tokens: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.BUSD, '0xd397a40884ce00e662b419673e0b15cae628877f', '0x41516dca7efe69518ec414de35e5aa067788de3d',], - resolveLP: true, - } -}) \ No newline at end of file diff --git a/projects/treasury/stargate.js b/projects/treasury/stargate.js deleted file mode 100644 index 5e67ca2ab64..00000000000 --- a/projects/treasury/stargate.js +++ /dev/null @@ -1,153 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const eth = "0x65bb797c2B9830d891D87288F029ed8dACc19705"; -const bsc = "0x6e690075eedBC52244Dd4822D9F7887d4f27442F"; -const avax = "0x2B065946d41ADf43BBc3BaF8118ae94Ed19D7A40"; -const polygon = "0x47290DE56E71DC6f46C26e50776fe86cc8b21656"; -const arbitrum = "0x9CD50907aeb5D16F29Bddf7e1aBb10018Ee8717d"; -const optimism = "0x392AC17A9028515a3bFA6CCe51F8b70306C6bd43"; -const fantom = "0x2351BBCb7cF7Ee9D18AF2Be0d106BFc5D47A9E85"; -const metis = "0x90c3DFD4Ea593336DBB9F925f73413e6EE84c90E"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", // 3CRV DAI/USDC/USDT - "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT - ADDRESSES.ethereum.cvxCRV, - ADDRESSES.ethereum.SAFE, - "0xFCc5c47bE19d06BF83eB04298b026F81069ff65b", // yCRV - "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", // auraBAl - "0xA13a9247ea42D743238089903570127DdA72fE44", // bb-a-USD - ADDRESSES.ethereum.cvxFXS, - "0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC", // crvFRAX - "0xfA0F307783AC21C39E939ACFF795e27b650F6e68", // S*FRAX - "0x0Faf1d2d3CED330824de3B8200fc8dc6E397850d", // S*DAI - "0x692953e758c3669290cb1677180c64183cEe374e", // S*USDD - "0xE8F55368C82D38bbbbDb5533e7F56AfC2E978CC2", // S*LUSD - "0x9cef9a0b1bE0D289ac9f4a98ff317c33EAA84eb8", // S*MAI - "0x5af15DA84A4a6EDf2d9FA6720De921E1026E37b7", // sdFRAX3CRV-f - "0x7f50786A0b15723D741727882ee99a0BF34e3466", // sdCRV-gauge - "0x101816545F6bd2b1076434B54383a1E633390A2E", // S*SGETH - "0x590d4f8A68583639f215f675F3a259Ed84790580", // S*sUSD - "0x38EA452219524Bb87e18dE1C24D3bB59510BD783", // S*USDT - "0xdf0770dF86a8034b3EFEf0A1Bb3c889B8332FF56", // S*USDC - ], - ownTokens: [ - "0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6", // STG - "0x341bb10D8f5947f3066502DC8125d9b8949FD3D6", // yvCurve-STG-USDC - "0x9de1c3D446237ab9BaFF74127eb4F303802a2683", // STG/FRAXBP-f - "0x95d16646311fDe101Eb9F897fE06AC881B7Db802", // STGUSDC-f-gauge - "0xaa8D332531B5B953938AA412730e7536178b4783", // aura50STG-50bb-a-USD-vault - "0x6cCA86CC27EB8c7C2d10B0672FE392CFC88e62ff", // STG-USDC Cake-LP - "0xA89B9c336764c9Ae5f64Bc19688601341974bc22", // sdSTGUSDC-f-gauge - ], - owners: [eth], - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.USDT, - "0x98a5737749490856b401DB5Dc27F522fC314A4e1", // S*BUSD - "0x4e145a589e4c03cBe3d28520e4BF3089834289Df", // S*USDD - "0x7BfD7f2498C4796f10b6C611D9db393D3052510C", // S*MAI - "0x9aA83081AA06AF7208Dcc7A4cB72C94d057D2cda", // S*USDT - ], - ownTokens: [ - "0xBCEA09e9e882eC2Bb6dCE07c4e6669968846CaBD", // STG-BUSD Cake-LP - "0xB0D502E938ed5f4df2E681fE6E419ff29631d62b", // STG - ], - owners: [bsc], - }, - avax: { - tokens: [ - nullAddress, - "0x1c272232Df0bb6225dA87f4dEcD9d37c32f63Eea", // S*FRAX - ADDRESSES.avax.USDC, - "0x8736f92646B2542B3e5F3c63590cA7Fe313e283B", // S*MAI - "0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c", // S*USDt - "0xEAe5c2F6B25933deB62f754f239111413A0A25ef", // S*USDt - "0x1205f31718499dBf1fCa446663B532Ef87481fe1", // S*USDC - ], - ownTokens: [ - ADDRESSES.fuse.WETH_3, // STG - "0x330f77BdA60D8daB14d2bb4F6248251443722009", // STG-USDC JLP - ], - owners: [avax], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC, - "0x1c272232Df0bb6225dA87f4dEcD9d37c32f63Eea", // S*DAI - "0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c", // S*USDT - "0x8736f92646B2542B3e5F3c63590cA7Fe313e283B", // S*miMATIC - "0x9E2d266D6c90F6C0D80a88159b15958f7135B8Af", // SSX - "0x1205f31718499dBf1fCa446663B532Ef87481fe1", // S*USDC - ], - ownTokens: [ - ADDRESSES.fuse.WETH_3, // STG - "0xA34Ec05DA1E4287FA351c74469189345990a3F0C", // STG-USDC SLP - ], - owners: [polygon], - }, - arbitrum: { - owners: [arbitrum], - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - "0xaa4BF442F024820B2C28Cd0FD72b82c63e66F56C", // S*FRAX - "0xF39B7Be294cB36dE8c510e267B82bb588705d977", // S*MAI - "0x915A55e36A01285A14f05dE6e81ED9cE89772f8e", // S*SGETH - "0xB6CfcF89a7B22988bfC96632aC2A9D6daB60d641", // S*USDT - "0x892785f33CdeE22A30AEF750F285E18c18040c3e", // S*USDC - ], - ownTokens: [ - "0x6694340fc020c5E6B96567843da2df01b2CE1eb6", // STG - "0x3a4c6D2404b5eb14915041e01F63200a82f4a343", // 50STG-50USDC - ], - }, - optimism: { - owners: [optimism], - tokens: [ - nullAddress, - ADDRESSES.optimism.OP, - ADDRESSES.optimism.USDC, - "0x165137624F1f692e69659f944BF69DE02874ee27", // S*DAI - "0x368605D9C6243A80903b9e326f1Cddde088B8924", // S*FRAX - "0x3533F5e279bDBf550272a199a223dA798D9eff78", // S*LUSD - "0x5421FA1A48f9FF81e4580557E86C7C0D24C18036", // S*MAI - "0xd22363e3762cA7339569F3d33EADe20127D5F98C", // S*SGETH - "0x2F8bC9081c7FCFeC25b9f41a50d97EaA592058ae", // S*sUSD - "0xDecC0c09c3B5f6e92EF4184125D5648a66E35298", // S*USDC - ], - ownTokens: [ - "0x296F55F8Fb28E498B858d0BcDA06D955B2Cb3f97", // STG - "0xec376c3856a4232bB6Ed9752d29402DDCD09A9A3", // STG/USDC RAKIS-5 - "0xE7D2E422098D8b3AF11695A734d347563ae160Cb", // bb-STG-USD-gauge - ], - resolveUniV3: true, - }, - fantom: { - owners: [fantom], - tokens: [ - nullAddress, - ADDRESSES.fantom.USDC, - "0x12edeA9cd262006cC3C4E77c90d2CD2DD4b1eb97", // S*USDC - ], - ownTokens: [ - ADDRESSES.fuse.WETH_3, // STG - "0x0a80C53AfC6DE9dfB2017781436BfE5090F4aCB4", // STG-USDC spLP - ], - }, - metis: { - owners: [metis], - tokens: [ - ADDRESSES.metis.Metis, - ], - ownTokens: [], - }, -}); diff --git a/projects/treasury/status.js b/projects/treasury/status.js deleted file mode 100644 index 672cb2acc19..00000000000 --- a/projects/treasury/status.js +++ /dev/null @@ -1,15 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); -const { nullAddress } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - owners: [ - '0xA646E29877d52B9e2De457ECa09C724fF16D0a2B', - '0xBBF0cC1C63F509d48a4674e270D26d80cCAF6022' - ], - tokens: [ - nullAddress, - ], - ownTokens: ["0x744d70fdbe2ba4cf95131626614a1763df805b9e"], // SNT - }, -}) \ No newline at end of file diff --git a/projects/treasury/stealcam.js b/projects/treasury/stealcam.js deleted file mode 100644 index 58a84e10596..00000000000 --- a/projects/treasury/stealcam.js +++ /dev/null @@ -1,10 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - owners: ['0x2f60c9cee6450a8090e17a79e3dd2615a1c419eb',], - tokens: [ - nullAddress, - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/stout.js b/projects/treasury/stout.js deleted file mode 100644 index 9538ac5b2f3..00000000000 --- a/projects/treasury/stout.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = treasuryExports({ - sonic: { - owners: ['0x12684d18BDBA8e31936f40aBcE1175366874114f',], - tokens: [ - nullAddress, - ADDRESSES.sonic.USDC_e - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/sudoswap.js b/projects/treasury/sudoswap.js deleted file mode 100644 index b1206c70d97..00000000000 --- a/projects/treasury/sudoswap.js +++ /dev/null @@ -1,30 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') - -const treasury = "0xb16c1342E617A5B6E4b631EB114483FDB289c0A4" //pair factor1 -const treasury2 = "0xA020d57aB0448Ef74115c112D18a9C231CC86000" //pair factor2 -const treasury3 = "0x6853f8865BA8e9FBd9C8CCE3155ce5023fB7EEB0" //sudo governance -const SUDO = "0x3446Dd70B2D52A6Bf4a5a192D9b0A161295aB7F9" - -module.exports = treasuryExports({ - ethereum: { - owners: [treasury, treasury2, treasury3], - ownTokens: [SUDO], - tokens: [ - nullAddress, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.FRAX, - "0xb23d80f5FefcDDaa212212F028021B41DEd428CF", //PRIME - ], - }, - sanko: { - owners: ["0x5bfe2ef160eaaaa4afa89a8fa09775b6580162c9"], - ownTokens: [], - tokens: [ - nullAddress, - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/sushiswap.js b/projects/treasury/sushiswap.js deleted file mode 100644 index 44c42582a16..00000000000 --- a/projects/treasury/sushiswap.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const SUSHI = ADDRESSES.ethereum.SUSHI; -const xSUSHI = "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ], - owners: [ - "0xe94B5EEC1fA96CEecbD33EF5Baa8d00E4493F4f3", - "0xf73B31c07e3f8Ea8f7c59Ac58ED1F878708c8A76" - ], - ownTokens: [ - SUSHI, - xSUSHI - ], - }, -}) diff --git a/projects/treasury/synapse.js b/projects/treasury/synapse.js deleted file mode 100644 index 1404982bf37..00000000000 --- a/projects/treasury/synapse.js +++ /dev/null @@ -1,144 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const arbtreasury = "0x1d9bfc24d9e7eeda4119ceca11eaf4c24e622e62"; -const arbtreasury2 = "0x940279D22EB27415F2b0A0Ee6287749b5B19F43D"; -const arbSYN = "0x080F6AEd32Fc474DD5717105Dba5ea57268F46eb" -//const AuroraTreasury = "0xbb227Fcf45F9Dc5deF87208C534EAB1006d8Cc8d"; -const avaxTreasury = "0xd7aDA77aa0f82E6B3CF5bF9208b0E5E1826CD79C"; -const avaxSYN = "0x1f1E7c893855525b303f99bDF5c3c05Be09ca251" -//const bobaTreasury = "0xbb227Fcf45F9Dc5deF87208C534EAB1006d8Cc8d"; -const bscTreasury = "0xA316d83e67EEfD136f4C077de1cD4163A681F8A8"; -//const CantoTreasury = "0x02BA7A3Cd181a103Ba5702e708cF22de4Fa70254" -//const CronosTreasury = "0x7f91f3111b2009eC7c079Be213570330a37e8aeC" -//const DFKTreasury = "0x2E62c47f502f512C75bd5Ecd70799EFB0Fe7BAA3" -//const DogechainTreasury = "0x8f17b483982d1cc09296aed8f1b09ad830358a8d" -const FantomTreasury = "0x224002428cF0BA45590e0022DF4b06653058F22F" -const fantomSYN = "0xE55e19Fb4F2D85af758950957714292DAC1e25B2" -const HarmonyTreasury = "0x0172e7190Bbc0C2Aa98E4d1281d41D0c07178605" -//const KlaytnTreasury = "0x8f17b483982d1cc09296aed8f1b09ad830358a8d" -const MainnetTreasury = "0x67F60b0891EBD842Ebe55E4CCcA1098d7Aac1A55" -const mainnetSYN = "0x0f2D719407FdBeFF09D87557AbB7232601FD9F29" -const mainnetsynethLP = "0x4A86C01d67965f8cB3d0AAA2c655705E64097C31" -const MetisTreasury = "0xEAEC50eBe1c2A981ED8be02C36b0863Fae322975" -const metisSYN = ADDRESSES.metis.SYN -//const MoonbeamTreasury = "0xbb227Fcf45F9Dc5deF87208C534EAB1006d8Cc8d" -//const MoonriverTreasury = "0x4bA30618fDcb184eC01a9B3CAe258CFc5786E70E" -const OptimismTreasury = "0x2431CBdc0792F5485c4cb0a9bEf06C4f21541D52" -const PolygonTreasury = "0xBdD38B2eaae34C9FCe187909e81e75CBec0dAA7A" -const polygonSYN = "0xf8F9efC0db77d8881500bb06FF5D6ABc3070E695" - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - //"0x080F6AEd32Fc474DD5717105Dba5ea57268F46eb",//syn - ADDRESSES.arbitrum.WETH, - ADDRESSES.optimism.DAI, - ADDRESSES.arbitrum.nUSD, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.USDC, - ], - owners: [arbtreasury, arbtreasury2], - ownTokens: [arbSYN] - }, - avax: { - tokens: [ - nullAddress, - //"0x1f1E7c893855525b303f99bDF5c3c05Be09ca251",//syn - ADDRESSES.avax.WAVAX, - ADDRESSES.avax.DAI, - ADDRESSES.avax.USDC_e, - ADDRESSES.avax.USDT_e, - - ], - owners: [avaxTreasury], - ownTokens: [avaxSYN] - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.BUSD, - ADDRESSES.fantom.fUSDT, - ADDRESSES.bsc.BTCB, - "0x54261774905f3e6E9718f2ABb10ed6555cae308a",//anybtc - "0x42F6f551ae042cBe50C739158b4f0CAC0Edb9096",//nrv - ADDRESSES.bsc.USDT, - "0x23396cF899Ca06c4472205fC903bDB4de249D6fC",//ustc - ], - owners: [bscTreasury] - }, - fantom: { - tokens: [ - nullAddress, - //"0xE55e19Fb4F2D85af758950957714292DAC1e25B2",//syn - "0x74b23882a30290451A17c44f4F05243b6b58C76d",//eth - ADDRESSES.fantom.USDC, - ADDRESSES.fantom.WFTM, - ], - owners: [FantomTreasury], - ownTokens: [fantomSYN] - }, - harmony: { - tokens: [ - nullAddress - ], - owners: [HarmonyTreasury] - }, - ethereum: { - tokens: [ - nullAddress, - //"0x0f2D719407FdBeFF09D87557AbB7232601FD9F29",//syn - ADDRESSES.ethereum.USDC, - "0x0ab87046fBb341D058F17CBC4c1133F25a20a52f",//gohm - ADDRESSES.ethereum.FRAX, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDT, - "0x98585dFc8d9e7D48F0b1aE47ce33332CF4237D96",//newo - "0x71Ab77b7dbB4fa7e017BC15090b2163221420282",//high - ADDRESSES.ethereum.WBTC, - "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F",//sdt - "0xBAac2B4491727D78D2b78815144570b9f2Fe8899",//dog - "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B",//usdb - "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8",//ageur - "0x0642026E7f0B6cCaC5925b4E7Fa61384250e1701",//h2o - "0xb753428af26E81097e7fD17f40c88aaA3E04902c",//sfi - ADDRESSES.ethereum.LINK, - ], - owners: [MainnetTreasury], - ownTokens: [mainnetSYN, mainnetsynethLP] - }, - metis: { - tokens: [ - nullAddress, - //ADDRESSES.metis.SYN, - "0xFB21B70922B9f6e3C6274BcD6CB1aa8A0fe20B80",//gohm - ADDRESSES.metis.m_USDC, - ], - owners: [MetisTreasury], - ownTokens: [metisSYN] - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.OP, - "0x809DC529f07651bD43A172e8dB6f4a7a0d771036",//neth - ], - owners: [OptimismTreasury] - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.WMATIC_2, - ADDRESSES.polygon.DAI, - "0xd8cA34fd379d9ca3C6Ee3b3905678320F5b45195",//gohm - //"0xf8F9efC0db77d8881500bb06FF5D6ABc3070E695",//syn - ], - owners: [PolygonTreasury], - ownTokens: [polygonSYN] - } -}) \ No newline at end of file diff --git a/projects/treasury/syncus.js b/projects/treasury/syncus.js deleted file mode 100644 index 2272b58de2a..00000000000 --- a/projects/treasury/syncus.js +++ /dev/null @@ -1,13 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0x197d7010147df7b99e9025c724f13723b29313f8',// SYNC/ETH LP - ], - resolveLP: true, - owners: ['0xC00EC94e7746C6b695869580d6D2DB50cda86094'], - ownTokens: ['0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0'] - }, -}) \ No newline at end of file diff --git a/projects/treasury/synthetix.js b/projects/treasury/synthetix.js deleted file mode 100644 index d6e3f58a039..00000000000 --- a/projects/treasury/synthetix.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const synthetixTreasury = "0x99f4176ee457afedffcb1839c7ab7a030a5e4a92"; -const treasury = "0xeb3107117fead7de89cd14d463d340a2e6917769" - -const SNX = ADDRESSES.ethereum.SNX; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.CVX, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.sUSD, - ADDRESSES.ethereum.LIDO, - '0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3',//RAD - '0x3C0FFFF15EA30C35d7A85B85c0782D6c94e1d238' - ], - owners: [synthetixTreasury, treasury], - ownTokens: [SNX], - blacklistedTokens: ['0xC25a3A3b969415c80451098fa907EC722572917F'] - }, -}) \ No newline at end of file diff --git a/projects/treasury/taolie.js b/projects/treasury/taolie.js deleted file mode 100644 index d2696a15cb5..00000000000 --- a/projects/treasury/taolie.js +++ /dev/null @@ -1,12 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - solana: { - owners: [ - 'HWZXMXB51M5ZSW423CNrdc6VKJo9KpcRjUzCprJMWhST', - ], - ownTokens: [ - '7dLJnm2NzHPMwB7mJL7azhyMLqs4ZzKYkkhr3ob72Gwo', // TAOLIE - ] - }, -}) \ No newline at end of file diff --git a/projects/treasury/taraxa.js b/projects/treasury/taraxa.js deleted file mode 100644 index c9abce64d95..00000000000 --- a/projects/treasury/taraxa.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - tara: { - tvl: async (api) => { - return sumTokens2({ api, tokens: [nullAddress], owners: ['0x723304d1357a2334fcf902aa3d232f5139080a1b'] }) - } - } -} diff --git a/projects/treasury/tardly-treasury.js b/projects/treasury/tardly-treasury.js deleted file mode 100644 index f864e07cb7b..00000000000 --- a/projects/treasury/tardly-treasury.js +++ /dev/null @@ -1,15 +0,0 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const notiboyTreasury = "CGYA55OJYP6ZOBMIAEXEMVTZI67QCYQ7PJIMWQYETIYEWT4XCPZQRDTUQE"; - -module.exports = treasuryExports({ - algorand: { - tokens: [ - nullAddress, - '2614577662', //atard - '1', // algo - - ], - owners: [notiboyTreasury], - }, -}) \ No newline at end of file diff --git a/projects/treasury/teddy.js b/projects/treasury/teddy.js deleted file mode 100644 index ba323bc6c5d..00000000000 --- a/projects/treasury/teddy.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require("../helper/staking"); - -const treasuryContract = "0xb4Fbc7839ce88029c8c1c6274660118e27B6f982"; -const TEDDY = "0x094bd7b2d99711a1486fb94d4395801c6d0fddcc"; - -module.exports = { - avax: { - tvl: () => 0, - ownTokens: staking(treasuryContract, TEDDY), - }, -}; diff --git a/projects/treasury/templar-dao.js b/projects/treasury/templar-dao.js deleted file mode 100644 index 207bd8b25df..00000000000 --- a/projects/treasury/templar-dao.js +++ /dev/null @@ -1,52 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { treasuryExports } = require("../helper/treasury"); -const { nullAddress } = require("../helper/unwrapLPs"); - -const bscOwner = "0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"; -const bscTreasuryContract = "0xd01e8D805BB310F06411e70Fd50eB58cAe2B4C27"; - -const bscTokens = { - BUSD: ADDRESSES.bsc.BUSD, - WBNB: ADDRESSES.bsc.WBNB, - MIM: "0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba", - TM: "0x194d1D62d8d798Fcc81A6435e6d13adF8bcC2966", - DAI: "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", - TEM: "0x19e6BfC1A6e4B042Fb20531244D47E252445df01", - VBUSD: "0x95c78222B3D6e262426483D42CfA53685A67Ab9D", - VBTC: "0x882C173bC7Ff3b7786CA16dfeD3DFFfb9Ee7847B", -}; - -const LP = "0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"; - -const ethTokens = { - USDC: ADDRESSES.ethereum.USDC, - USDT: ADDRESSES.ethereum.USDT, -}; -const ethOwner = "0x4Bd973e98585b003c31f4C8b9d6eAC5d3293B1e5"; - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - bscTokens.TM, - bscTokens.DAI, - bscTokens.BUSD, - bscTokens.WBNB, - bscTokens.VBUSD, - bscTokens.VBTC, - ], - owners: [bscOwner, bscTreasuryContract], - ownTokens: ['0x19e6BfC1A6e4B042Fb20531244D47E252445df01'], - resolveUniV3: true, - }, - ethereum: { - owner: ethOwner, - tokens: [ - nullAddress, - ethTokens.USDC, - ethTokens.USDT, - ADDRESSES.ethereum.WBTC, - ], - resolveUniV3: true, - }, -}); \ No newline at end of file diff --git a/projects/treasury/tempus-finance.js b/projects/treasury/tempus-finance.js deleted file mode 100644 index d1fdf753407..00000000000 --- a/projects/treasury/tempus-finance.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xab40a7e3cef4afb323ce23b6565012ac7c76bfef"; -const TEMP = "0xA36FDBBAE3c9d55a1d67EE5821d53B50B63A1aB9" -const LP = "0x514f35a92A13bc7093f299AF5D8ebb1387E42D6B" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.STETH, - - ], - owners: [treasury, LP], - ownTokens: [TEMP], - resolveLP: true, - resolveUniV3: true, - }, -}) \ No newline at end of file diff --git a/projects/treasury/thales.js b/projects/treasury/thales.js deleted file mode 100644 index 2903175a761..00000000000 --- a/projects/treasury/thales.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const Treasury_ARB = "0x2902E381c9Caacd17d25a2e008db0a9a4687FDBF"; -const Treasury_ETH = "0xdac09f37e132d91b962f30e6ec40d2d08b82b0fa"; -const Treasury_OP = "0x489863b61c625a15c74fb4c21486bacb4a3937ab"; -const Treasury_POLYGON = "0x4aad282dac74d79e41fd12833b1fad7a18c778ed"; -const Treasury_MULTICHAIN = "0x1777c6d588fd931751762836811529c0073d6376"; -const THALE_ARB = "0xE85B662Fe97e8562f4099d8A1d5A92D4B453bF30"; -const THALES_ETH = "0x8947da500eb47f82df21143d0c01a29862a8c3c5"; -const THALES_OP = "0x217d47011b23bb961eb6d93ca9945b7501a5bb11"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - "0x8e870d67f660d95d5be530380d0ec0bd388289e1", - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC - ], - owners: [Treasury_ETH, Treasury_MULTICHAIN], - ownTokens: [THALES_ETH, '0x03e173ad8d1581a4802d3b532ace27a62c5b81dc'], - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, - ADDRESSES.optimism.OP, - "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6" - ], - owners: [Treasury_OP, Treasury_MULTICHAIN], - ownTokens: [THALES_OP], - permitFailure: true, - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, - "0x8971dFb268B961a9270632f28B24F2f637c94244" - ], - owners: [Treasury_ARB, Treasury_MULTICHAIN], - ownTokens: [THALE_ARB], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC - ], - owners: [Treasury_POLYGON], - }, -}) \ No newline at end of file diff --git a/projects/treasury/the-standard.js b/projects/treasury/the-standard.js deleted file mode 100644 index 328e1ff7f51..00000000000 --- a/projects/treasury/the-standard.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryARB = "0x99d5D7C8F40Deba9d0075E8Fff2fB13Da787996a"; -const treasuryETH = "0xf0A13763a2102A6EA036078C602F154A2a5eEc7A" -const TST = "0xf5A27E55C748bCDdBfeA5477CB9Ae924f0f7fd2e" -const TSTETH = "0xa0b93B9e90aB887E53F9FB8728c009746e989B53" - - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - "0x643b34980E635719C15a2D4ce69571a258F940E9", - ADDRESSES.arbitrum.USDC_CIRCLE - ], - owners: [treasuryARB], - ownTokens: [TST], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT - ], - owners: [treasuryETH], - ownTokens: [TSTETH], - }, -}) diff --git a/projects/treasury/thellamas.js b/projects/treasury/thellamas.js deleted file mode 100644 index 0eb1075951a..00000000000 --- a/projects/treasury/thellamas.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const { mergeExports } = require('../helper/utils'); -const { sumTokens2 } = require('../helper/unwrapLPs') - -const Treasury = "0x73eb240a06f0e0747c698a219462059be6aaccc8"; - -module.exports = mergeExports([treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.CVX, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.CRV, - "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", - "0x7f50786A0b15723D741727882ee99a0BF34e3466", - "0x0148CF564318272c2Bad048488F90dF4e3769f32", - "0x9aE380F0272E2162340a5bB646c354271c0F5cFC" - ], - owners: [Treasury], - ownTokens: ['0xe127ce638293fa123be79c25782a5652581db234'], - }, -}), { - ethereum: { - tvl: async (api) => { - return sumTokens2({ api, owner: Treasury, tokens: ['0x39D78f11b246ea4A1f68573c3A5B64E83Cff2cAe', ADDRESSES.ethereum.vlCVX]}) - } - } -}]) \ No newline at end of file diff --git a/projects/treasury/themis-capital-ohm.js b/projects/treasury/themis-capital-ohm.js deleted file mode 100644 index 455b1de5be8..00000000000 --- a/projects/treasury/themis-capital-ohm.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - filecoin: { - tvl: sumTokensExport({ - owner: '0x0e511806C7AC38cF6d1EeAa9Ee51027e44Dcbf94', - tokens: [ADDRESSES.filecoin.USDT, '0x45680718F6BdB7Ec3A7dF7D61587aC7C3fB49d50'], - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/treasury/tipidao.js b/projects/treasury/tipidao.js deleted file mode 100644 index 9190d18a5dd..00000000000 --- a/projects/treasury/tipidao.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require("../tipidao/index"); - -delete module.exports.bsc.staking \ No newline at end of file diff --git a/projects/treasury/tokemak.js b/projects/treasury/tokemak.js deleted file mode 100644 index d5a0b47f5d6..00000000000 --- a/projects/treasury/tokemak.js +++ /dev/null @@ -1,30 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x8b4334d4812C530574Bd4F2763FcD22dE94A969B"; - -const tokens = [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.STETH, - "0x9C4A4204B79dd291D6b6571C5BE8BbcD0622F050", // TCR - "0x4104b135DBC9609Fc1A9490E61369036497660c8", // APW - "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT - "0xE1573B9D29e2183B1AF0e743Dc2754979A40D237", // Uniswap FXS/FRAX LP - ADDRESSES.ethereum.LIDO, - ADDRESSES.ethereum.SAFE, - "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", // stkCvxCrv - "0x04906695D6D12CF5459975d7C3C03356E4Ccd460", // sOHM -]; - -const ownTokens = [ - ADDRESSES.ethereum.TOKE, -]; - -module.exports = treasuryExports({ - ethereum: { - tokens, - ownTokens, - owners: [treasury], - }, -}); diff --git a/projects/treasury/tokenIon.js b/projects/treasury/tokenIon.js deleted file mode 100644 index 17d29fb2aaf..00000000000 --- a/projects/treasury/tokenIon.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -// Receives rewards/fee from AMM wrapper via reward distributor on WETH shape, some are sold for LON... -const MULTISIG_ONE = "0x3557BD3d422300198719710Cc3f00194E1c20A46"; - -module.exports = { - ethereum: { - tvl: (_, block) => sumTokens2({ owner: MULTISIG_ONE, tokens: [ - ADDRESSES.ethereum.USDT, - '0x55d31f68975e446a40a2d02ffa4b0e1bfb233c2f', - '0x8E870D67F660D95d5be530380D0eC0bd388289E1', //USDP - ADDRESSES.ethereum.USDC, //USDC - ADDRESSES.ethereum.TUSD, //TUSD - ADDRESSES.ethereum.UNI, //UNI - ADDRESSES.ethereum.WBTC, // WBTC - ADDRESSES.ethereum.MATIC, // MATIC - ADDRESSES.ethereum.BUSD, // BUSD - '0x956F47F50A910163D8BF957Cf5846D573E7f87CA', // FEI - ADDRESSES.ethereum.DAI, // DAI - '0xba100000625a3754423978a60c9317c58a424e3D', // BAL - ADDRESSES.ethereum.FTM, // FTM - '0xdd974D5C2e2928deA5F71b9825b8b646686BD200', // KNC - ADDRESSES.ethereum.AAVE, // AAVE - ADDRESSES.ethereum.CRV, // CRV - '0x0F5D2fB29fb7d3CFeE444a200298f468908cC942', // MANA - ADDRESSES.ethereum.LINK, // LINK - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7', // GRT - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7', // UMA - ADDRESSES.ethereum.SUSHI, // SUSHI - ADDRESSES.ethereum.WETH, // WETH - '0xE41d2489571d322189246DaFA5ebDe1F4699F498', // zRX - '0x408e41876cCCDC0F92210600ef50372656052a38', // ren - '0xc00e94Cb662C3520282E6f5717214004A7f26888', // COMP - '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07', // OMG - '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919', // RAI - '0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD', // LRC - - ], block, }), - }, -}; diff --git a/projects/treasury/tornado-cash.js b/projects/treasury/tornado-cash.js deleted file mode 100644 index f9ccdff5b88..00000000000 --- a/projects/treasury/tornado-cash.js +++ /dev/null @@ -1,16 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"; -const vesting = "0x179f48C78f57A3A78f0608cC9197B8972921d1D2"; -const TORN = "0x77777FeDdddFfC19Ff86DB637967013e6C6A116C"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress - ], - owners: [treasury, vesting], - ownTokens: [TORN], - }, -}) \ No newline at end of file diff --git a/projects/treasury/toupee-tech.js b/projects/treasury/toupee-tech.js deleted file mode 100644 index d7aece66381..00000000000 --- a/projects/treasury/toupee-tech.js +++ /dev/null @@ -1,12 +0,0 @@ -const {treasuryExports } = require("../helper/treasury"); - -const treasury = "0x0cf24278c99d60388dd8a3a663937f1b9f934d09"; -const WIG = "0x58Dd173F30EcfFdfEbCd242C71241fB2f179e9B9" - - -module.exports = treasuryExports({ - base: { - owners: [treasury], - ownTokens: [WIG], - }, -}) \ No newline at end of file diff --git a/projects/treasury/tprotocol.js b/projects/treasury/tprotocol.js deleted file mode 100644 index cf651fa972f..00000000000 --- a/projects/treasury/tprotocol.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xa01D9bc8343016C7DDD39852e49890a8361B2884"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0x530824DA86689C9C17CdC2871Ff29B058345b44a', //stbt - ADDRESSES.ethereum.USDC, //usdc - ], - owners: [treasury], - ownTokens: [], - }, -}) \ No newline at end of file diff --git a/projects/treasury/traderjoe.js b/projects/treasury/traderjoe.js deleted file mode 100644 index 588f8fa3915..00000000000 --- a/projects/treasury/traderjoe.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const multisig = "0xD858eBAa943b4C2fb06BA0Ba8920A132fd2410eE"; -const multisig2 = "0x799d4C5E577cF80221A076064a2054430D2af5cD"; -const multisig3 = "0x8F38558188FAe593E8E6347F124351CF4fDd032D" - -module.exports = treasuryExports({ - avax: { - tokens: [nullAddress, ADDRESSES.avax.USDC], - owners: [multisig, multisig2, multisig3], - ownTokens: [ADDRESSES.avax.JOE], - }, -}); diff --git a/projects/treasury/tranche-finance.js b/projects/treasury/tranche-finance.js deleted file mode 100644 index 9088971b77b..00000000000 --- a/projects/treasury/tranche-finance.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const treasury = "0x4632E2E1Ea012fD5d84804c3B36eC12560eCC0aA"; -const SLICE = "0x0AeE8703D34DD9aE107386d3eFF22AE75Dd616D1" - -module.exports = treasuryExports({ - ethereum: { - tokens: [nullAddress], - owners: [treasury], - ownTokens: [SLICE], - }, -}); \ No newline at end of file diff --git a/projects/treasury/tranchess.js b/projects/treasury/tranchess.js deleted file mode 100644 index cd1614fa5ce..00000000000 --- a/projects/treasury/tranchess.js +++ /dev/null @@ -1,37 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') - -const treasuryETH = "0x1bf019a44a708fbeba7adc79bdad3d0769ff3a7b"; -const CHESS = "0xD6123271F980D966B00cA4FCa6C2c021f05e2E73" -const qETH = "0x93ef1Ea305D11A9b2a3EbB9bB4FCc34695292E7d"; - -//BSC CHAIN - -const treasuryBSC = "0x1bf019a44a708fbeba7adc79bdad3d0769ff3a7b"; -const CHESSB = "0x20de22029ab63cf9A7Cf5fEB2b737Ca1eE4c82A6" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - "0x04248AAbca09E9a1a3D5129a7ba05b7F17DE7684", - "0xC764B55852F8849Ae69923e45ce077A576bF9a8d" - ], - owners: [treasuryETH], - ownTokens: [CHESS, qETH], - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.ETH, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.BTCB - ], - owners: [treasuryBSC], - ownTokens: [CHESSB], - }, -}) \ No newline at end of file diff --git a/projects/treasury/treasure-dao.js b/projects/treasury/treasure-dao.js deleted file mode 100644 index cd6f1ff3eeb..00000000000 --- a/projects/treasury/treasure-dao.js +++ /dev/null @@ -1,35 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x0eb5b03c0303f2f47cd81d7be4275af8ed347576"; -const treasury2 = "0x1054e9d9091dc55a1738f9c8fc0c79e59e222804" -const treasury3 = "0x482729215aaf99b3199e41125865821ed5a4978a" -const treasury4 = "0x64bfb08217b30b70f287a1b7f0670bdd49f8a13f" -const treasury5 = "0x81fa605235e4c32d8b440eebe43d82e9e083166b" -const treasury6 = "0xdb6ab450178babcf0e467c1f3b436050d907e233" -const treasury7 = "0xe8409cd2abae06871d166e808d75addb0537033a" - -const treasuryETH = "0xec834bd1f492a8bd5aa71023550c44d4fb14632a" -const MAGICETH = "0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a" - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, treasury2, treasury3, treasury4, treasury5, treasury6, treasury7 ], - ownTokens: [ - "0x539bde0d7dbd336b79148aa742883198bbf60342", // MAGIC - "0x872bAD41CFc8BA731f811fEa8B2d0b9fd6369585", // GFLY - ], - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.WETH, // WETH - "0xb7e50106a5bd3cf21af210a755f9c8740890a8c9", // SLP - ], - }, - ethereum: { - tokens: [nullAddress, ADDRESSES.ethereum.USDC], - owners: [treasuryETH], - ownTokens: [MAGICETH], - }, -}); \ No newline at end of file diff --git a/projects/treasury/truemarkets.js b/projects/treasury/truemarkets.js deleted file mode 100644 index 4786bde6968..00000000000 --- a/projects/treasury/truemarkets.js +++ /dev/null @@ -1,11 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - base: { - owners: ['0x7DDBE7F2FE4825A1807BfF8E5D5cD81874Df3E28'], - ownTokens: ['0x21cfcfc3d8f98fc728f48341d10ad8283f6eb7ab'], - }, - ethereum: { - owners: ['0x7DDBE7F2FE4825A1807BfF8E5D5cD81874Df3E28'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/trust-wallet.js b/projects/treasury/trust-wallet.js deleted file mode 100644 index e5790905e81..00000000000 --- a/projects/treasury/trust-wallet.js +++ /dev/null @@ -1,6 +0,0 @@ -const { treasuryExports } = require('../helper/treasury'); - -module.exports = treasuryExports({ - ethereum: { - owners: ['0xb57BE4AB4304C5aADc9E5Ea2b0B34f1F04413232'], - }}) \ No newline at end of file diff --git a/projects/treasury/turtle.js b/projects/treasury/turtle.js deleted file mode 100644 index 4f133e24a6f..00000000000 --- a/projects/treasury/turtle.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -/** - * Turtle TVL adapter - * - * – Counts native CRO on Treasury, NFT, Earning contracts - */ - -async function tvl(api) { - const toa = [ - [ADDRESSES.null, '0x88524dca00112b9915f73a1d25cb4140897a9f53'], // Treasury - [ADDRESSES.null, '0x2baa455e573df4019b11859231dd9e425d885293'], // NFT - ] - - return api.sumTokens({ tokensAndOwners: toa }) -} - -module.exports = { - cronos: { - tvl, - }, - methodology: - 'Sums native CRO on Treasury, NFT contracts.' -} diff --git a/projects/treasury/turtleclub.js b/projects/treasury/turtleclub.js deleted file mode 100644 index 7d5da7010a1..00000000000 --- a/projects/treasury/turtleclub.js +++ /dev/null @@ -1,79 +0,0 @@ -const { tokens, treasuryMultisigs, treasuryNFTs, defaultTokens, exceptions } = require('../TurtleClub/assets'); -const { ankrChainMapping } = require('../helper/token'); -const { sumTokens2, unwrapSolidlyVeNft } = require('../helper/unwrapLPs'); -const SOLIDLY_VE_NFT_ABI = require('../helper/abis/solidlyVeNft.json'); -const { createIncrementArray } = require('../helper/utils'); -const balanceOfNft_erc721 = 'function balanceOfNFT(uint256) returns (uint256)'; - -function formatForTreasuryExport(tokens = {}) { - const treasuryExportsFormat = {}; - for (const [chain, tokenList] of Object.entries(tokens)) { - treasuryExportsFormat[chain] = { owners: treasuryMultisigs, tokens: Object.values(tokenList) }; - } - return treasuryExportsFormat; -} - -async function sumPositions(api, NFTs) { - const waitNFTs = []; - for (const treasuryNFT of NFTs) { - const { veNft, owner, baseToken, useLocked = true } = treasuryNFT; - - waitNFTs.push((async () => { - if (useLocked) await unwrapSolidlyVeNft({ api, isAltAbi: true, veNft, owner, baseToken }); - else { - const count = await api.call({ abi: 'erc20:balanceOf', target: veNft, params: owner }); - const tokenIds = await api.multiCall({ abi: SOLIDLY_VE_NFT_ABI.tokenOfOwnerByIndex, calls: createIncrementArray(count).map(i => ({ params: [owner, i] })), target: veNft }); - const bals = await api.multiCall({ abi: balanceOfNft_erc721, calls: tokenIds, target: veNft }); - bals.forEach(i => api.add(baseToken, i)); - } - })()); - } - return await Promise.allSettled(waitNFTs); -} - -function turtleTreasuryExports(config, treasuryNFTs) { - const chains = Object.keys(config); - const exportObj = {}; - for (const chain of chains) { - // From treasuryExports - const tvlConfig = { permitFailure: true, ...config[chain] }; - if (config[chain].fetchCoValentTokens !== false) { - if (ankrChainMapping[chain]) { - tvlConfig.fetchCoValentTokens = true; - const { tokenConfig } = config[chain]; - if (!tokenConfig) { - tvlConfig.tokenConfig = { onlyWhitelisted: false, }; - } - } else if (defaultTokens[chain]) { - tvlConfig.tokens = [tvlConfig.tokens, defaultTokens[chain]].flat(); - } - } - - const tvl = async (api) => { - if (exceptions[chain]?.length > 0) { - const es = []; - exceptions[chain].forEach(async ({ token, use }) => { - es.push((async () => { - const balances = await api.multiCall({ - abi: 'erc20:balanceOf', - calls: treasuryMultisigs.map(owner => ({ - target: token, - params: owner, - })), - permitFailure: true - }); - balances.filter(b => b !== '0' && !!b).forEach(bal => api.add(use, bal)); - })()); - }); - await Promise.allSettled(es); - } - - await sumTokens2({ ...api, api, ...tvlConfig }); - if (treasuryNFTs[chain]?.length > 0) await sumPositions(api, treasuryNFTs[chain]); - }; - exportObj[chain] = { tvl }; - } - return exportObj; -} - -module.exports = turtleTreasuryExports(formatForTreasuryExport(tokens), treasuryNFTs); diff --git a/projects/treasury/typus-finance.js b/projects/treasury/typus-finance.js deleted file mode 100644 index b5527cb22fa..00000000000 --- a/projects/treasury/typus-finance.js +++ /dev/null @@ -1,8 +0,0 @@ -const { treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - sui: { - owners: ['0xb9a09efd534d29cc9f990db26b2dab00289f32de0cdcefa68c6808de208bc9cb'], - ownTokens: ['0xf82dc05634970553615eef6112a1ac4fb7bf10272bf6cbe0f80ef44a6c489385::typus::TYPUS'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/umamifinance.js b/projects/treasury/umamifinance.js deleted file mode 100644 index e42dd9e6eff..00000000000 --- a/projects/treasury/umamifinance.js +++ /dev/null @@ -1,54 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const owners = [ - "0xb137d135dc8482b633265c21191f50a4ba26145d", // Main treasury - "0x8e52ca5a7a9249431f03d60d79dda5eab4930178", // ARB DAO delegate - "0xb0b4bd94d656353a30773ac883591ddbabc0c0ba", // Previous ARBI multisig -]; -const ethowners = "0x9478d820e8d38ca96610b7fcbe377822c2f60f2c" - -const ownTokens = [ - "0x1622bF67e6e5747b81866fE0b85178a93C7F86e3", // UMAMI - "0x2AdAbD6E8Ce3e82f52d9998a7f64a90d294A92A4", // mUMAMI - "0x1922C36F3bc762Ca300b4a46bB2102F84B1684aB", // cmUMAMI -]; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.fsGLP, // fsGLP - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.arbitrum.WETH, // wETH - ADDRESSES.arbitrum.GMX, // GMX - "0x55ff62567f09906a85183b866df84bf599a4bf70", // KROM - "0x3d9907f9a368ad0a51be60f7da3b97cf940982d8", // GRAIL - "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL - ADDRESSES.arbitrum.ARB, // ARB - "0x3e6648c5a70a150a88bce65f4ad4d506fe15d2af", //spell - "0x10010078a54396f62c96df8532dc2b4847d47ed3", //hnd - "0x32eb7902d4134bf98a28b963d26de779af92a212", //rpdx - "0xd4d42f0b6def4ce0383636770ef773390d85c61a",//sushi - "0x2cab3abfc1670d1a452df502e216a66883cdf079",//l2dao - "0x539bde0d7dbd336b79148aa742883198bbf60342",//magic - "0x6694340fc020c5e6b96567843da2df01b2ce1eb6",//stg - ], - owners, - ownTokens, - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//usdc - ], - owners: [ethowners] - }, -}); - -module.exports.deadFrom = '2024-08-30' -module.exports.ethereum.tvl = () => ({}) -module.exports.ethereum.ownTokens = () => ({}) -module.exports.arbitrum.tvl = () => ({}) -module.exports.arbitrum.ownTokens = () => ({}) diff --git a/projects/treasury/uniswap.js b/projects/treasury/uniswap.js deleted file mode 100644 index e1795cf1149..00000000000 --- a/projects/treasury/uniswap.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const uniTreasury1 = "0x1a9c8182c09f50c8318d769245bea52c32be35bc"; -const uniTreasury2 = "0x4b4e140D1f131fdaD6fb59C13AF796fD194e4135"; -const uniTreasury3 = "0x3D30B1aB88D487B0F3061F40De76845Bec3F1e94"; - -const UNI = ADDRESSES.ethereum.UNI; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI - '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - ], - fetchCoValentTokens: false, - owners: [uniTreasury1, uniTreasury2, uniTreasury3], - ownTokens: [UNI], - }, -}) \ No newline at end of file diff --git a/projects/treasury/unitas.js b/projects/treasury/unitas.js deleted file mode 100644 index 480d2a7e621..00000000000 --- a/projects/treasury/unitas.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -const treasuryList = [ - 'AR2ZCCyB5nXb7TesCz2pcCWbQsH8TAwixetDRrm3Z9wr', - '8Qo4oKTM5jiZEAKzhBLKwTKjCJrDHsUUux5K5DaQDxLR', - '5ZbLoA6DSnXoDeU7jsdmmkua4X1ugHUFYzbByzrbJDST', - 'EjwCRUh3HhBaR7vaTrFzuNpDAnTX9h3ddZuiQgKqCadz', - 'HZQdNWYBv23A3cfCAWDm4BQJ7XVARtDGJKhezmwvzfxo', - '2QfKMyrkFNACCmPw1EHCAxcH7MHvsChuR9MduWk6TfD6', - 'USDUY49DCh6wAHvx5jZn1xHSyDc8fvMa7YBnFi1aYEy', - 'DLzMXMSZLW8QEx563QBZNca8Gg6NrHGJZdJJ3Y4rcKEe', - '3fKaQf2uLSped6HUEPQkQtTpPo1xnhZRsmfW7htFBBuQ', - '6REMwMUhkh9PLNGxRUsue49otacp76pAWAU3C7itQ4AP' -] - -const tokens = [ - '27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4', //JLP - ADDRESSES.solana.USDC, //USDC - 'So11111111111111111111111111111111111111111' //SOL -] - -module.exports = treasuryExports({ - solana: { - owners: treasuryList, - tokens: tokens - }, -}) \ No newline at end of file diff --git a/projects/treasury/unore.js b/projects/treasury/unore.js deleted file mode 100644 index e4b371641d7..00000000000 --- a/projects/treasury/unore.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { treasuryExports, nullAddress } = require("../helper/treasury"); -const multisig='0x46488d2D36D8983de980Ff3b9f046DCd0a9DC2ae'; -const multisig2='0x4aede441085398BD74FeB9eeFCfe08E709e69ABF' -const multisig3= '0xacd5009f13a5b4f874d61b2a1e20241ea7a7b953'; - -const UNO = "0x474021845c4643113458ea4414bdb7fb74a01a77"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - ], - owners: [multisig,multisig2, multisig3], - ownTokens: [UNO], - }, -}); diff --git a/projects/treasury/usual.js b/projects/treasury/usual.js deleted file mode 100644 index 178df9d0e02..00000000000 --- a/projects/treasury/usual.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports } = require("../helper/treasury"); - -const tokens = [ - '0x259338656198ec7a76c729514d3cb45dfbf768a1', //Resolv - '0xd001f0a15d272542687b2677ba627f48a4333b5d', // e-USD0 - '0xF8094570485B124b4f2aBE98909A87511489C162', // PENDLE-LPT - '0x67ec31a47a4126A66C7bb2fE017308cf5832A4Db', // usUSDS++ - '0xb4cd5c5440eb69edb6db878ca2acd7c6b97b2ba5', // YT-USD0++-27NOV2025 - '0xD2245ee5C3099d65a3d0fdCecA0f71Cc4aA8f0FF', // fSL23 - '0x8092cA384D44260ea4feaf7457B629B8DC6f88F0', // ustUSR++ - '0x8245FD9Ae99A482dFe76576dd4298f799c041D61', // uUSCC++ - '0x28d24D4380B26A1Ef305Ad8D8DB258159E472F33', // Usual_MV - '0x35D8949372D46B7a3D5A56006AE77B215fc69bC0', // USD0++ - ADDRESSES.ethereum.USD0, // USD0 - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.WETH, // WETH - '0x58d97b57bb95320f9a05dc918aef65434969c2b2', // morpho - '0x734eec7930bc84eC5732022B9EB949A81fB89AbE', //ETH0 - '0xC4441c2BE5d8fA8126822B9929CA0b81Ea0DE38E', // USUAL - '0x437cc33344a0B27A429f795ff6B469C72698B291', // wM - '0xC139190F447e929f090Edeb554D95AbB8b18aC1C', // USDtb - '0xAF87B90E8a3035905697E07Bb813d2d59D2b0951', // uTac - '0x77633305032b6bDf3eBdB373b3bADcCb2786ce2f', // EVK Vault eUSD0-6 - '0x5Cd97d97D311F9dE388C1C110b10BF81AAD7CAf0', // Bunni USD0 - USD0++ - '0x749794E985Af5a9A384B9cEe6D88DaB4CE1576A1', // MEVCapital USD0 - ADDRESSES.ethereum.WSTETH // wstEth -] - -const owners = [ - '0x81ad394C0Fa87e99Ca46E1aca093BEe020f203f4', // Yield Treasury - '0xF3D913De4B23ddB9CfdFAF955BAC5634CbAE95F4', // longterm Treasury - '0xc32e2a2F03d41768095e67b62C9c739f2C2Bc4aA', // Treasury 1 - '0xe3FD5A2cA538904A9e967CBd9e64518369e5a03f', // Treasury 2 - '0xcbf85D44178c01765Ab32Af72D5E291dcd39A06B', // Treasury 3 -] - -module.exports = treasuryExports({ - ethereum: { - tokens, - owners, - ownTokens: ["0x06B964d96f5dCF7Eae9d7C559B09EDCe244d4B8E", "0xC4441c2BE5d8fA8126822B9929CA0b81Ea0DE38E" ], // USUALX and USUAL - } -}) \ No newline at end of file diff --git a/projects/treasury/uwulend.js b/projects/treasury/uwulend.js deleted file mode 100644 index 7969a6d6c06..00000000000 --- a/projects/treasury/uwulend.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xc671a6b1415de6549b05775ee4156074731190c6"; -const uwu = "0x55C08ca52497e2f1534B59E2917BF524D4765257"; -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - "0x29127fE04ffa4c32AcAC0fFe17280ABD74eAC313", // SIFU - ADDRESSES.ethereum.USDT, // USDT - ADDRESSES.ethereum.DAI, // DAI - "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", // MIM - ADDRESSES.ethereum.WBTC, // WBTC - "0xb95BD0793bCC5524AF358ffaae3e38c3903C7626", // uDAI - "0x24959F75d7BDA1884f1Ec9861f644821Ce233c7D", // uUSDT - "0x8C240C385305aeb2d5CeB60425AABcb3488fa93d", // uFRAX - "0x67fadbD9Bf8899d7C578db22D7af5e2E500E13e5", // uWETH - "0xaDFa5Fa0c51d11B54C8a0B6a15F47987BD500086", // uLUSD - "0x6Ace5c946a3Abd8241f31f182c479e67A4d8Fc8d", // uWBTC - "0xC4BF704f51aa4ce1AA946FfE15646f9B271ba0fa", // uWMEMO - "0xdb1A8f07f6964EFcFfF1Aa8025b8ce192Ba59Eba", // uCRV - "0xC480a11A524E4DB27c6d4E814b4D9B3646bC12Fc", // uMIM - "0x02738ef3f8d8D3161DBBEDbda25574154c560dAe", // uSIFU - "0x8028Ea7da2ea9BCb9288C1F6f603169B8AEa90A6", // uSIFUM - "0x243387a7036bfcB09f9bF4EcEd1E60765D31aA70", // uSSPELL - ], - owners: [treasury], - ownTokens: [uwu], - }, -}); diff --git a/projects/treasury/vaporfi.js b/projects/treasury/vaporfi.js deleted file mode 100644 index 45e958c8e57..00000000000 --- a/projects/treasury/vaporfi.js +++ /dev/null @@ -1,16 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryContract = "0x20b0013dcBB9697a8C3D0Be2cfb004d6bD023B87"; -const WAVAX_VPND_JPL = "0x4cd20F3e2894Ed1A0F4668d953a98E689c647bfE"; -const VPND = "0x83a283641C6B4DF383BCDDf807193284C84c5342"; - - -module.exports = treasuryExports({ - avax: { - tokens: [ - nullAddress - ], - owners: [treasuryContract], - ownTokens: [VPND,WAVAX_VPND_JPL], - }, -}) diff --git a/projects/treasury/velodrome.js b/projects/treasury/velodrome.js deleted file mode 100644 index 84ce8197a5e..00000000000 --- a/projects/treasury/velodrome.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { treasuryExports, nullAddress } = require("../helper/treasury"); - -const team = "0xb074ec6c37659525EEf2Fb44478077901F878012"; -const treasury = "0xe7D7ce84D45e43F06cD5CaA1d9c42374b8776fb0"; - -const tokens = [ - nullAddress, - ADDRESSES.optimism.OP, // OP - ADDRESSES.optimism.USDC, // USDC - ADDRESSES.tombchain.FTM, // WETH - "0x73cb180bf0521828d8849bc8CF2B920918e23032", // USD+ - ADDRESSES.optimism.sUSD, // sUSD - ADDRESSES.optimism.sETH, // sETH - "0xB153FB3d196A8eB25522705560ac152eeEc57901", // MIM - ADDRESSES.optimism.USDT, // USDT - "0xd52f94DF742a6F4B4C8b033369fE13A41782Bf44", // L2DAO - "0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED", // agEUR - "0xc3864f98f2a61A7cAeb95b039D031b4E2f55e0e9", // OpenX - "0x61BAADcF22d2565B0F471b291C475db5555e0b76", // AELIN - "0x79AF5dd14e855823FA3E9ECAcdF001D99647d043", // jEUR - "0xc40F949F8a4e094D1b49a23ea9241D289B7b2819", // LUSD - ADDRESSES.moonbeam.MAI, // MAI - "0x3F56e0c36d275367b8C502090EDF38289b3dEa0d", // QI - "0x9Bcef72be871e61ED4fBbc7630889beE758eb81D", // rETH - "0xE3AB61371ECc88534C522922a026f2296116C109", // SPELL - "0xcB59a0A753fDB7491d5F3D794316F1adE197B21E", // TUSD - ADDRESSES.optimism.WSTETH, // wstETH -]; - -const ownTokens = [ - "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05", // VELO - "0xe8537b6FF1039CB9eD0B71713f697DDbaDBb717d", // vAMM-VELO/USDC -]; - -module.exports = treasuryExports({ - optimism: { - tokens, - ownTokens, - owners: [team, treasury], - ownTokenOwners: [team, treasury] - }, -}); diff --git a/projects/treasury/venus.js b/projects/treasury/venus.js deleted file mode 100644 index c14df2d5e34..00000000000 --- a/projects/treasury/venus.js +++ /dev/null @@ -1,72 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const venusTreasury = "0xF322942f644A996A617BD29c16bd7d231d9F35E9"; - -const XVS = "0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63"; -const venusBTC = "0x882C173bC7Ff3b7786CA16dfeD3DFFfb9Ee7847B"; -const VAI = "0x4BD17003473389A42DAF6a0a729f6Fdb328BbBd7"; - -module.exports = treasuryExports({ - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.USDT, //bsc-usdc - ADDRESSES.bsc.USDC, //usdc - ADDRESSES.bsc.BTCB, //BTCB - "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", //DAI - ADDRESSES.bsc.BETH, //BETH - ADDRESSES.bsc.WBNB, - venusBTC, - ADDRESSES.bsc.ETH, //eth - "0xecA88125a5ADbe82614ffC12D0DB554E2e2867C8", // venusUSDC - "0xf508fCD89b8bd15579dc79A6827cB4686A3592c8", // venusETH - "0xfD5840Cd36d94D7229439859C0112a4185BC0255", // venusUSDT - "0xB248a295732e0225acd3337607cc01068e3b9c10", // venusXRP - "0x95c78222B3D6e262426483D42CfA53685A67Ab9D", // venusBUSD - "0xA07c5b74C9B40447a954e1466938b865b6BBea36", // venusBNB - "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", //cake - "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11", //thena - "0x4338665CBB7B2485A8855A139b75D5e34AB0DB94", //ltc - "0xfb5B838b6cfEEdC2873aB27866079AC55363D37E", //floki - "0x20eE7B720f4E4c4FFcB00C4065cdae55271aECCa", //nft - "0xBf5140A22578168FD562DCcF235E5D43A02ce9B1", //uni - "0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A", //sxp - "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", //dot - "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE", //xrp - "0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", //ada - "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD", //link - "0xbA2aE424d960c26247Dd6c32edC70B295c744C43", //doge - ADDRESSES.bsc.TUSD, //tusd - "0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153", //fil - "0xCC42724C6683B7E57334c4E856f4c9965ED682bD", //matic - ADDRESSES.bsc.BUSD, //busd - "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827", //ankrbnb - "0xCE7de646e7208a4Ef112cb6ed5038FA6cC6b12e3", //trx - "0x352Cb5E19b12FC216548a2677bD0fce83BaE434B", //btt - "0x8fF795a6F4D97E7887C79beA79aba5cc76444aDf", //bch - "0xd17479997F34dd9156Deef8F95A52D81D265be9c", //usdd - "0x302cD8973bE5CA2334B4ff7e7b01BA41455559b3", //ethw - "0x1bdd3Cf7F79cfB8EdbB955f20ad99211551BA275", //bnbx - "0x965F527D9159dCe6288a2219DB51fc6Eef120dD1", //bsw - "0xc2E9d07F66A89c44062459A47a0D2Dc038E4fb16", //stkbnb - "0xaeF0d72a118ce24feE3cD1d43d383897D05B4e99", //win - "0x0782b6d8c4551B9760e74c0545a9bCD90bdc41E5", //lisusd - "0x12BB890508c125661E03b09EC06E404bc9289040", //raca - "0x4B0F1812e5Df2A09796481Ff14017e6005508003", //twt - "0x8F0528cE5eF7B51152A59745bEfDD91D97091d2F", //alpaca - "0x12f31B73D812C6Bb0d735a218c086d44D5fe5f89", //ageur - ], - owners: [venusTreasury], - ownTokens: [XVS, VAI], - }, - era: { - tokens: [ - ADDRESSES.era.WBTC, - ADDRESSES.era.ZK, - ADDRESSES.era.USDC, - ADDRESSES.era.WETH - ], - owners: ['0xB2e9174e23382f7744CebF7e0Be54cA001D95599'] - } -}); diff --git a/projects/treasury/vesta.js b/projects/treasury/vesta.js deleted file mode 100644 index 5a5ab9cbba3..00000000000 --- a/projects/treasury/vesta.js +++ /dev/null @@ -1,18 +0,0 @@ - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xc9032419aa502fafa107775dca8b7d07575d9db5"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ - '0xa684cd057951541187f288294a1e1c2646aa2d24', // - ], - tokens: [ - nullAddress, - '0x625e7708f30ca75bfd92586e17077590c60eb4cd', - '0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1', - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/void.js b/projects/treasury/void.js deleted file mode 100644 index b03ab9f1d14..00000000000 --- a/projects/treasury/void.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xf0a793024Ac47e421EB8c4673212dfCcE42f4a97"; -const tokenReflectionsAwardAddress = "0x78cCb45a43731cf989C740e9cb31f3d192Bd0f8b" - -module.exports = treasuryExports({ - fantom: { - owners: [treasury, tokenReflectionsAwardAddress], - ownTokens: [ - "0x80F2B8CdbC470c4DB4452Cc7e4a62F5277Db7061", // VOID - ], - tokens: [ - nullAddress, - ADDRESSES.fantom.DAI, // DAI - "0xfC66Ac63D414d3CF3dcdDa9e60742F6E789205e3", // SpookySwap VOID-DAI LP - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/volta-dao.js b/projects/treasury/volta-dao.js deleted file mode 100644 index e2923296206..00000000000 --- a/projects/treasury/volta-dao.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = require("../volta-dao/index"); - -delete module.exports.avax.staking -delete module.exports.fantom.staking \ No newline at end of file diff --git a/projects/treasury/volta.js b/projects/treasury/volta.js deleted file mode 100644 index 7d82d482de3..00000000000 --- a/projects/treasury/volta.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xB9665f6E5e3413B3a75Cc209556830E446fF9969"; - -module.exports = treasuryExports({ - arbitrum: { - owners: [treasury, ], - ownTokens: [ - "0x417a1aFD44250314BffB11ff68E989775e990ab6", // VOLTA - "0xb1781BF9C582A71269c6098E4155Ea8b15B35305", // VOLT - ], - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.optimism.DAI, // DAI - ADDRESSES.arbitrum.USDC, // USDC - "0xd85E038593d7A098614721EaE955EC2022B9B91B", // gDAI - "0xd92Be5A1c565Db5256cDD537B875ED46111Bd8b0", // VOLT2USD3CRV-f - ADDRESSES.arbitrum.WETH, // WETH - "0x39ff5098081FBE1ab241c31Fe0a9974FE9891d04", // voltGNS - ], - }, -}); \ No newline at end of file diff --git a/projects/treasury/wagmi.js b/projects/treasury/wagmi.js deleted file mode 100644 index 4d21dca03bd..00000000000 --- a/projects/treasury/wagmi.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xd2135CfB216b74109775236E36d4b433F1DF507B"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - "0x8290333ceF9e6D528dD5618Fb97a76f268f3EDD4" - ], - owners: [treasury], - ownTokens: [], - }, -}); \ No newline at end of file diff --git a/projects/treasury/wagmidao.js b/projects/treasury/wagmidao.js deleted file mode 100644 index 3587ae0a2c6..00000000000 --- a/projects/treasury/wagmidao.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - harmony: { - tvl: () => ({}), - }, - methodology: "Counts liquidity on the Farms through Factory Contract, and counts Treasury as it is determined by bonding of assets. Staking refers to the staked GMI tokens", -}; diff --git a/projects/treasury/wand.js b/projects/treasury/wand.js deleted file mode 100644 index 7e674c4b21a..00000000000 --- a/projects/treasury/wand.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const styTreasury = '0x462bd2d3c020f6986c98160bc4e189954f49634b' -async function styTvl(api) { - // Token addresses - const vIP = "0x5267F7eE069CEB3D8F1c760c215569b79d0685aD" - const AIDaUSDC = "0xd5255Cc08EBAf6D54ac9448822a18d8A3da29A42" - const stAPL = "0xb5461c1FD0312Cd4bF037058F8a391e6A42F9639" - - // Get balances directly - const [vipBal, aidaUsdcBal, stAPLBal] = await Promise.all([ - api.call({ abi: 'erc20:balanceOf', target: vIP, params: [styTreasury] }), - api.call({ abi: 'erc20:balanceOf', target: AIDaUSDC, params: [styTreasury] }), - api.call({ abi: 'erc20:balanceOf', target: stAPL, params: [styTreasury] }), - ]) - - // Add vIP balance - api.add(vIP, vipBal) - // Add AIDaUSDC balance - api.add(AIDaUSDC, aidaUsdcBal) - // Add stAPL balance - api.add(stAPL, stAPLBal) - - return api.getBalances() -} - -module.exports = { - blast: { - tvl: sumTokensExport({ - owners: [ - "0x462bd2d3c020f6986c98160bc4e189954f49634b", // treasury - ], - tokens: [ - ADDRESSES.null, // $ETH - ADDRESSES.blast.USDB, // $USDB - ADDRESSES.blast.weETH // weETH - ] - }) - }, - sty: { tvl: styTvl } -} \ No newline at end of file diff --git a/projects/treasury/we-piggy.js b/projects/treasury/we-piggy.js deleted file mode 100644 index 9be17cb8c9f..00000000000 --- a/projects/treasury/we-piggy.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x0d189fd8d46e43b2f13390de95d4f8e185eb3914"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/wonderland.js b/projects/treasury/wonderland.js deleted file mode 100644 index 96d5257016a..00000000000 --- a/projects/treasury/wonderland.js +++ /dev/null @@ -1,119 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports, } = require("../helper/treasury"); -const sdk = require('@defillama/sdk') - -const TIME = "0xb54f16fb19478766a268f172c9480f8da1a7c9c3" -// Sources: https://wl-l.ink/Zapper/Treasury and https://docs.wonderland.money/ecosystem/contracts -const treasuries = [ - "0x1c46450211cb2646cc1da3c5242422967ed9e04c", "0x355d72fb52ad4591b2066e43e89a7a38cf5cb341", "0xb6b80f4ea8fb4117928d3c819e8ac6f1a3837baf", - "0x88bbe6de858b179841c8f49a56b99fb0522a263a", "0x32b5d1f1331f857d583b05ef50ab9636cdc090d9", "0x1de8a4c781ac134c1a7640aabe5929f4e1fe2f5b", - "0x694497072b2c43b737ae70bbd52694d61377344c", "0x004016b53f127c8f6f64cbf66330765dcf5dbe2a", "0xb96e3bf7d8939e9e17adcc26fdf47b6c7391eb6a", - "0xba90fabdde85191ae04bfdd8022f6d7b1f86c2f4", "0x5a4a936e90caf09590ac402b6e8d5435a5092a7a", "0x1724b987feb9651c466d9e66be4b74a7cedbf372" -] - -const ethWallet = '0x355d72fb52ad4591b2066e43e89a7a38cf5cb341' - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.cvxFXS, // cvxFXS - '0x3E04863DBa602713Bb5d0edbf7DB7C3A9A2B6027', // SLP - ADDRESSES.ethereum.DAI,//DAI - '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - '0xFcF8eda095e37A41e002E266DaAD7efC1579bc0A',//flex - '0xdB25f211AB05b1c97D595516F45794528a807ad8',//eurs - '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6',//stg - '0x29127fe04ffa4c32acac0ffe17280abd74eac313',//sifu - '0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d',//LQTY - '0x51144708b82eA3b5b1002C9DC38b71ec63b7e670',// uwu lend token - '0xdb1a8f07f6964efcfff1aa8025b8ce192ba59eba',// uwu lend token - '0x8c240c385305aeb2d5ceb60425aabcb3488fa93d',// uwu lend token - '0xc480a11a524e4db27c6d4e814b4d9b3646bc12fc',// uwu lend token - '0x8028ea7da2ea9bcb9288c1f6f603169b8aea90a6',// uwu lend token - '0x243387a7036bfcb09f9bf4eced1e60765d31aa70',// uwu lend token - '0xadfa5fa0c51d11b54c8a0b6a15f47987bd500086',// uwu lend token - '0x02738ef3f8d8d3161dbbedbda25574154c560dae',// uwu lend token - '0x6ace5c946a3abd8241f31f182c479e67a4d8fc8d',// uwu lend token - '0x67fadbd9bf8899d7c578db22d7af5e2e500e13e5',// uwu lend token - ], - owners: [ethWallet], - ownTokens: ['0x3b79a28264fc52c7b4cea90558aa0b162f7faf57', '0x9b06f3c5de42d4623d7a2bd940ec735103c68a76', '0x55c08ca52497e2f1534b59e2917bf524d4765257'], //wmemo, volta, uwu, - }, - avax: { - tokens: [ - nullAddress, - ADDRESSES.avax.USDT_e,//usdte - "0x39fC9e94Caeacb435842FADeDeCB783589F50f5f",//knc - "0x63682bdc5f875e9bf69e201550658492c9763f89",//bsgg - ADDRESSES.avax.USDC,//USDC - ADDRESSES.avax.USDC_e,//USDC.e - "0x9e295b5b976a184b14ad8cd72413ad846c299660",//fsGLP - ], - owners: treasuries, - ownTokens: [TIME, '0x0da67235dd5787d67955420c84ca1cecd4e5bb3b', '0x9b06f3c5de42d4623d7a2bd940ec735103c68a76'], //last is volta - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.WETH,//weth - ADDRESSES.arbitrum.GMX,//gmx - "0xd2D1162512F927a7e282Ef43a362659E4F2a728F",//sbfGMX - ], - owners: treasuries, - ownTokens: ['0x9b06f3c5de42d4623d7a2bd940ec735103c68a76'], //volta - }, - polygon: { - tokens: [ - nullAddress, - // "0xb08b3603C5F2629eF83510E6049eDEeFdc3A2D91",//cpool - ], - owners: treasuries - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.USDC,//USDC - ], - owners: treasuries - }, - fantom: { - tokens: [ - nullAddress, - ], - owners: treasuries - }, - optimism: { - tokens: [ - nullAddress, - ADDRESSES.moonbeam.MAI,//MAI - ADDRESSES.tombchain.FTM,//WETH - ADDRESSES.optimism.USDT,//USDT - ], - owners: treasuries - } -}) - -module.exports.ethereum.tvl = sdk.util.sumChainTvls([module.exports.ethereum.tvl, uwuPositions]) -async function uwuPositions(api) { - // - // LUSD in stability pool - const {initialValue : LUSDBal} = await api.call({ abi: "function deposits(address) view returns (uint256 initialValue, address frontEndTag)", target: '0x66017D22b0f8556afDd19FC67041899Eb65a21bb', params: ethWallet }) - const uwuLPLocked= await api.call({ abi:"function lockedBalances(address user) view returns (uint256 total, uint256 unlockable, uint256 locked, tuple(uint256 amount, uint256 unlockTime)[] lockData)", target: '0x0a7b2a21027f92243c5e5e777aa30bb7969b0188', params: ethWallet }) - const [uDAI, vdDAI, uUSDT, vdUSDT] = await api.multiCall({ - abi: 'erc20:balanceOf', calls: [ - { target: '0xb95bd0793bcc5524af358ffaae3e38c3903c7626', params: ethWallet }, - { target: '0x1254b1fd988a1168e44a4588bb503a867f8e410f', params: ethWallet }, - { target: '0x24959f75d7bda1884f1ec9861f644821ce233c7d', params: ethWallet }, - { target: '0xaac1d67f1c17ec01593d76e831c51a4f458dc160', params: ethWallet }, - ] - }) - api.add(ADDRESSES.ethereum.LUSD, LUSDBal) - api.add('0x3E04863DBa602713Bb5d0edbf7DB7C3A9A2B6027', uwuLPLocked.total) - api.add('0xb95bd0793bcc5524af358ffaae3e38c3903c7626', +uDAI - vdDAI) - api.add('0x24959f75d7bda1884f1ec9861f644821ce233c7d', +uUSDT - vdUSDT) - return api.getBalances() -} \ No newline at end of file diff --git a/projects/treasury/woofi.js b/projects/treasury/woofi.js deleted file mode 100644 index b80784a143c..00000000000 --- a/projects/treasury/woofi.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryAVAX = "0xb54382c680b0ad037c9f441a8727ca6006fe2dd0"; -const treasuryETH = "0xfa2d1f15557170f6c4a4c5249e77f534184cdb79" -const WOO = "0x4691937a7508860F876c9c0a2a617E7d9E945D4B" -const WOOBSC= "0x4691937a7508860F876c9c0a2a617E7d9E945D4B" -const LP = "0x2FC8bC3eE171eD5610ba3093909421E90b47Fc07" -const treasuryBSC = "0xfd899c7c5ed84537e2acfc998ce26c3797654ae8" - -module.exports = treasuryExports({ - avax: { - tokens: [ - nullAddress, - ADDRESSES.avax.USDC_e - ], - owners: [treasuryAVAX], - }, - ethereum: { - tokens: [ - nullAddress, - "0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd", - ADDRESSES.ethereum.USDC - - ], - owners: [treasuryETH], - ownTokens: [WOO, LP], - resolveLP: true, - resolveUniV3: true, - }, - bsc: { - tokens: [ - nullAddress, - ADDRESSES.bsc.USDC - ], - owners: [treasuryBSC], - ownTokens: [WOOBSC], - }, -}) \ No newline at end of file diff --git a/projects/treasury/x7.js b/projects/treasury/x7.js deleted file mode 100644 index 58a178aa508..00000000000 --- a/projects/treasury/x7.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const owners = Object.values({ - X7TreasurySplitterAddress: "0x70006b785aa87821331a974c3d5af81cde5bb999", - DeveloperMultiSigWalletAddress: - "0x5cf4288bf373bbe17f76948e39baf33b9f6ac2e0", - CommmunityMultiSigWalletAddress: - "0x7063E83dF5349833A21f744398fD39D42fbC00f8", - LendingPoolReserveAddress: "0x7Ca54e9Aa3128bF15f764fa0f0f93e72b5267000", - RewardsPoolAddress: "0x70000299ee8910ccacd97b1bb560e34f49c9e4f7", -}) - -module.exports = {}; - -['arbitrum', 'polygon', 'ethereum', 'bsc', 'optimism'].forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens: [nullAddress], }) - } -}) \ No newline at end of file diff --git a/projects/treasury/xeus.js b/projects/treasury/xeus.js deleted file mode 100644 index c627ecbf56e..00000000000 --- a/projects/treasury/xeus.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('../xeus/index') -const { ohmTreasury } = require('../helper/treasury') - -module.exports = ohmTreasury(index) \ No newline at end of file diff --git a/projects/treasury/y2k.js b/projects/treasury/y2k.js deleted file mode 100644 index f757f76f14e..00000000000 --- a/projects/treasury/y2k.js +++ /dev/null @@ -1,19 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.WETH, // WETH - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.optimism.DAI, // DAI - '0x569061e2d807881f4a33e1cbe1063bc614cb75a4', - '0xfb5e6d0c1dfed2ba000fbc040ab8df3615ac329c', - '0xfb5e6d0c1dfed2ba000fbc040ab8df3615ac329c', - ], - owners: ['0x5c84cf4d91dc0acde638363ec804792bb2108258'], - ownTokens: ['0x65c936f008bc34fe819bce9fa5afd9dc2d49977f'], - }, -}) \ No newline at end of file diff --git a/projects/treasury/yam-finance.js b/projects/treasury/yam-finance.js deleted file mode 100644 index 21299347f54..00000000000 --- a/projects/treasury/yam-finance.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const treasury ="0x744d16d200175d20e6d8e5f405aefb4eb7a962d1" -const treasury2 = "0x97990b693835da58a281636296d2bf02787dea17" -const YAM = "0x0AaCfbeC6a24756c20D41914F2caba817C0d8521" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - - ], - owners: [treasury, treasury2], - ownTokens: [YAM], - }, -}) \ No newline at end of file diff --git a/projects/treasury/yamfore.js b/projects/treasury/yamfore.js deleted file mode 100644 index 72c8be11ae7..00000000000 --- a/projects/treasury/yamfore.js +++ /dev/null @@ -1,40 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); -const { assetsAddresses } = require('../helper/chain/cardano/blockfrost'); -const { nullAddress } = require("../helper/tokenMapping"); - -async function adaHandleToAddress(handle) { - // https://docs.adahandle.com/reference/api-reference/cardano-node - const policyID = 'f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a'; - const assetName = Buffer.from(handle).toString('hex'); - const [holder] = await assetsAddresses(`${policyID}000de140${assetName}`) - return holder.address -} - -async function tvl() { - // const TREASURY_ADDRESS = await adaHandleToAddress('bigblymp') - const TREASURY_ADDRESS = 'addr1qx2m86m788l8zrcc6ecfg0yq698s2ryqpz3c52z2ratw5jh8yqevyugcr8w4ezlj3sry6798h9ynqjgce3mqfwxfma9qts79w0' - - return sumTokens2({ - owners: [TREASURY_ADDRESS,], tokens: [ - nullAddress, - 'c48cbb3d5e57ed56e276bc45f99ab39abe94e6cd7ac39fb402da47ad0014df105553444d' - ], - }) -} - -async function ownTokens() { - // const TREASURY_ADDRESS = await adaHandleToAddress('bigblymp') - const TREASURY_ADDRESS = 'addr1qx2m86m788l8zrcc6ecfg0yq698s2ryqpz3c52z2ratw5jh8yqevyugcr8w4ezlj3sry6798h9ynqjgce3mqfwxfma9qts79w0' - - return sumTokens2({ - owners: [TREASURY_ADDRESS,], tokens: [ - 'ee0633e757fdd1423220f43688c74678abde1cead7ce265ba8a24fcd43424c50', - ], - }) -} - -module.exports = { - cardano: { - tvl, ownTokens, - }, -}; diff --git a/projects/treasury/yearn.js b/projects/treasury/yearn.js deleted file mode 100644 index 9c79c3fa320..00000000000 --- a/projects/treasury/yearn.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); - -const yearnTreasury = "0x93a62da5a14c80f265dabc077fcee437b1a0efde"; -const yearnTreasury1 = "0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52"; -const yearnTreasuryarb = "0xb6bc033d34733329971b938fef32fad7e98e56ad"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490',//3crv - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.CRV, - '0xba100000625a3754423978a60c9317c58a424e3D',//BAL - '0x31429d1856aD1377A8A0079410B297e1a9e214c2',//ANGLE - ADDRESSES.ethereum.sUSD, - ADDRESSES.ethereum.WBTC, - ], - owners: [yearnTreasury,yearnTreasury1], - ownTokens: [ADDRESSES.ethereum.YFI], - }, - arbitrum: { - tokens: [ - nullAddress - ], - owners: [yearnTreasuryarb] - } -}) \ No newline at end of file diff --git a/projects/treasury/yield-guild-game.js b/projects/treasury/yield-guild-game.js deleted file mode 100644 index d9d8cae7d2e..00000000000 --- a/projects/treasury/yield-guild-game.js +++ /dev/null @@ -1,57 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const Treasury = "0xe30ed74c6633a1b0d34a71c50889f9f0fdb7d68a"; -const YGG = "0x25f8087EAD173b73D6e8B84329989A8eEA16CF73"; -const Treasury1 = "0xf0103243f4d22b5696588646b21313d85916a16a" -const Treasury2 = "0x16b281438c5984a46d94acc6c4b31e252a03dfcf" -const Treasury3 = "0xcafeacdadd29f55ce935492e20f1f982df3fb51d" -const Treasury4 = "0x23eb4e02c29e69452718cd5caf2255488bc7ce3a" -const Treasury5 = "0xb981290d9d804075986482f0302c03a3cd2aff32" -const Treasury6 = "0x21653e2f0472afaf64ec85f585f0db4ab83a83f0" -const Treasury7 = "0x8e8d8015a7ffa49c83ee7a8773b0f69380cc6552" - - -const treasurySolana = "GvAm8xG5BSWXy286jWXWzYpN2xzPADQEoK9U8dQCDtzt" -const treasurySolana1 = "3fGSv3VdKvf7KSMt1o9Lb3dZ4YK9ScUTWktcrC4JJBTq" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.DAI,//DAI - ADDRESSES.ethereum.STETH,//stETH - ADDRESSES.ethereum.MATIC,//MATIC - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.USDT, - '0x61E90A50137E1F645c9eF4a0d3A4f01477738406',//loka - '0xbA6B0dbb2bA8dAA8F5D6817946393Aef8D3A4487',//HSF - '0x232FB065D9d24c34708eeDbF03724f2e95ABE768',//SHEESHA - '0x0d02755a5700414B26FF040e1dE35D337DF56218' //BEND - ], - owners: [Treasury, Treasury1, Treasury2, Treasury3, Treasury5, Treasury6, Treasury7], - ownTokens: [YGG], - }, - solana: { - tokens: [ - "7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj" - ], - owners: [treasurySolana, treasurySolana1], - }, - optimism: { - tokens: [ - ADDRESSES.optimism.OP, - ADDRESSES.optimism.WETH - ], - owners: [Treasury1], - }, - polygon: { - tokens: [ - ADDRESSES.polygon.WETH_1, - "0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4", - ADDRESSES.polygon.WMATIC_2, - "0x0b3F868E0BE5597D5DB7fEB59E1CADBb0fdDa50a" - ], - owners: [Treasury2, Treasury4], - }, -}) \ No newline at end of file diff --git a/projects/treasury/zachxtb-theman.js b/projects/treasury/zachxtb-theman.js deleted file mode 100644 index bb7338de540..00000000000 --- a/projects/treasury/zachxtb-theman.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasuryOP = "0x9D727911B54C455B0071A7B682FcF4Bc444B5596"; -const treasuryETH = "0x9D727911B54C455B0071A7B682FcF4Bc444B5596" -const treasuryARB = "0x9D727911B54C455B0071A7B682FcF4Bc444B5596" - -module.exports = treasuryExports({ - optimism: { - tokens: [ - nullAddress, - ADDRESSES.optimism.USDC, // USDC - ADDRESSES.optimism.OP - ], - owners: [treasuryOP], - }, - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.TUSD, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.USDT, - "0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3", - ADDRESSES.ethereum.WBTC, - "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", //AURA - "0xB6eD7644C69416d67B522e20bC294A9a9B405B31", //0XBTC - ], - owners: [treasuryETH], - }, - arbitrum: { - tokens: [ - nullAddress, - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.USDC_CIRCLE, - ADDRESSES.arbitrum.WETH - ], - owners: [treasuryARB], - }, -}); \ No newline at end of file diff --git a/projects/treasury/zarban.js b/projects/treasury/zarban.js deleted file mode 100644 index a117a7b28e6..00000000000 --- a/projects/treasury/zarban.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require("../helper/sumTokens"); - -const abi = { - "sin": "function sin(address) view returns (uint256)", - "zar": "function zar(address) view returns (uint256)", -} -const vatAddress = "0x975Eb113D580c44aa5676370E2CdF8f56bf3F99F" // Scs vat contract -const vowAddress = "0xC56bbE915bCc665e6b3A293700caFf8296526061" // Scs vow contract -const ZAR = "0xd946188A614A0d9d0685a60F541bba1e8CC421ae" // ZAR token address - -const tvlConfig = { - permitFailure: true, - tokens: [ - ADDRESSES.arbitrum.ARB, // ARB - ZAR, // ZAR - '0x1b0aB2827C4d25B3387C1D1bc9c076Fe0c7EdFb9', // zZar - ADDRESSES.arbitrum.DAI, // DAI - '0xbb027125E073ad4D500a89889bC0C93abb63B710', // zDai - ADDRESSES.arbitrum.WBTC, // WBTC - '0x76806eA64f2609C7B2B2C638dA1fa66237fB1073', // zWbtc - ADDRESSES.arbitrum.WETH, // WETH - '0xd22c4E46a3E10eF6f1CD0cDABf68e292966229f7', // zWETH - ], - owners: ["0xed42d47538f6bf191533a9943ceedc13b261809d"], // liquidity market's collector, -} - -async function treasuryTvl(api) { - - // liquidity market treasury - await sumTokens({ api, ...tvlConfig }) - - // stablecoin system treasury - const zarBalance = await api.call({ abi: abi.zar, params: [vowAddress], target: vatAddress }) - const sinBalance = await api.call({ abi: abi.sin, params: [vowAddress], target: vatAddress }) - api.add(ZAR, (zarBalance - sinBalance) / 1e27) -} - -module.exports = { - arbitrum: { tvl: treasuryTvl } -} diff --git a/projects/treasury/zero-swap.js b/projects/treasury/zero-swap.js deleted file mode 100644 index 634bfcdb6c2..00000000000 --- a/projects/treasury/zero-swap.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x70f4f7a85100348fc33f1d8005703c8953bc67fd"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/treasury/zerolend.js b/projects/treasury/zerolend.js deleted file mode 100644 index 98d58291a70..00000000000 --- a/projects/treasury/zerolend.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs.js"); - -const linea = { - weth: ADDRESSES.linea.WETH, - zero: "0x78354f8DcCB269a615A7e0a24f9B0718FDC3C7A7", - treasury: "0x14aAD4668de2115e30A5FeeE42CFa436899CCD8A", -}; - -module.exports = { - linea: { - tvl: sumTokensExport({ - owner: linea.treasury, - chain: "linea", - tokens: [linea.weth, nullAddress], - }), - ownTokens: sumTokensExport({ - owner: linea.treasury, - tokens: [linea.zero], - chain: "linea", - }), - }, -}; diff --git a/projects/treasury/zigzag.js b/projects/treasury/zigzag.js deleted file mode 100644 index 5164d62cab2..00000000000 --- a/projects/treasury/zigzag.js +++ /dev/null @@ -1,11 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ], - owners: ['0xF203f949C1c4cA53B960C1ba33cB6455Bb9b0079'], - ownTokens: ['0xc91a71a1ffa3d8b22ba615ba1b9c01b2bbbf55ad'], - }, -}) diff --git a/projects/treasury/zoofi-io.js b/projects/treasury/zoofi-io.js deleted file mode 100644 index 9c390cf52db..00000000000 --- a/projects/treasury/zoofi-io.js +++ /dev/null @@ -1,31 +0,0 @@ -const protocolConfig = [ - { - protocol: '0xc0fA386aE92f18A783476d09121291A1972C30Dc', - treasury: "0x54C56e149F6D655Aa784678057D1f96612b0Cf1a" - }, - { - protocol: '0x4737c3BAB13a1Ad94ede8B46Bc6C22fb8bBE9c81', - treasury: "0x54C56e149F6D655Aa784678057D1f96612b0Cf1a" - }, - { - protocol: '0x9F0956c33f45141a7D8D5751038ae0A71C562f87', - treasury: "0x54C56e149F6D655Aa784678057D1f96612b0Cf1a" - }, - { - protocol: '0xd75Dc0496826FF0C13cE6D6aA5Bf8D64126E4fF1', - treasury: "0x54C56e149F6D655Aa784678057D1f96612b0Cf1a" - } -] - -async function tvl(api) { - let ownerTokens = [] - const tokens = await api.multiCall({ abi: 'address[]:assetTokens', calls: protocolConfig.map(i => i.protocol)}) - tokens.forEach((v, i) => ownerTokens.push([v, protocolConfig[i].treasury])) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - berachain: { - tvl, - } -} \ No newline at end of file diff --git a/projects/treasury/zunami.js b/projects/treasury/zunami.js deleted file mode 100644 index ed61bfd4fc1..00000000000 --- a/projects/treasury/zunami.js +++ /dev/null @@ -1,23 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const treasury = "0xb056b9a45f09b006ec7a69770a65339586231a34"; -const ZUN = "0x6b5204b0be36771253cc38e88012e02b752f0f36" - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.FRAX, - ADDRESSES.ethereum.CRV, - ADDRESSES.ethereum.CVX, - ADDRESSES.ethereum.vlCVX, - "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT - ADDRESSES.ethereum.FXS // FXS - ], - owners: [treasury], - ownTokens: [ZUN] - } -}); \ No newline at end of file diff --git a/projects/treasury/zyber-swap.js b/projects/treasury/zyber-swap.js deleted file mode 100644 index a313ffcc4bd..00000000000 --- a/projects/treasury/zyber-swap.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0x5be4fb908a43d61b1c8086fe62e39ae8ec483926"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file diff --git a/projects/trebleswap/index.js b/projects/trebleswap/index.js deleted file mode 100644 index 73fd487372d..00000000000 --- a/projects/trebleswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -const TREBLESWAP_ALGEBRA_FACTORY = "0xAC900f12fB25d514e3ccFE8572B153A9991cA4e7" - -module.exports = uniV3Export({ - base: { - factory: TREBLESWAP_ALGEBRA_FACTORY, - fromBlock: 25118568, - isAlgebra: true - } -}); \ No newline at end of file diff --git a/projects/treedefi/index.js b/projects/treedefi/index.js deleted file mode 100644 index 65c8b32fa81..00000000000 --- a/projects/treedefi/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'bsc', - masterchef: '0xA9a438B8b2E41B3bf322DBA139aF9490DC226953', - nativeTokens: ['0xf0fcd737fce18f95621cc7841ebe0ea6efccf77e', '0x40b34cc972908060d6d527276e17c105d224559d'] -}) \ No newline at end of file diff --git a/projects/treehouse/index.js b/projects/treehouse/index.js deleted file mode 100644 index 0b85c160ef4..00000000000 --- a/projects/treehouse/index.js +++ /dev/null @@ -1,163 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - - -async function getInFlightLidoRedemptionNav(api, strategies) { - const unStEth = '0x889edc2edab5f40e902b864ad4d7ade8e412f9b1'; - const navUnStEth = '0x4c82F6829797A4174a082CE9FEE0B9BDDc1E5E39'; - - // uint[][] - const requestIdsArr = await api.multiCall({ - abi: "function getWithdrawalRequests(address) external view returns (uint256[])", calls: strategies.map(strategyAddress => ({ target: unStEth, params: strategyAddress })) - }) - - // skip further calls if no unStEth requests - if(requestIdsArr.flat().length == 0) return; - - // uint[] - const navArr = await api.multiCall({ - abi: "function nav(address, uint[]) external view returns (uint)", calls: requestIdsArr.map((requestIds, i) => ({ target: navUnStEth, params: [strategies[i], requestIds] })) - }) - - for (let i=0;i { - if (v.toLowerCase() === tETHwstETHLP.toLowerCase()) return; - api.add(v, bals[i] * balLPRatio) - }) - - // resolve tETH-weETH curve LP - const tETHweWTHcurveLPSupply = await api.call({ abi: 'uint256:totalSupply', target: tETHweWTHcurveLP }) - const tETHweETHLPRatio = tETHweWTHcurveLPBal / tETHweWTHcurveLPSupply - api.add(ADDRESSES.ethereum.WEETH, tEThwEETHLP_weethBal * tETHweETHLPRatio) - - // resolve tETH-wstETH curve LP - const tETHwstETHLPSupply = await api.call({ abi: 'uint256:totalSupply', target: tETHwstTHcurveLP }) - const tETHwstETHLPRatio = tETHwstETHcurveLPBal / tETHwstETHLPSupply - api.add(ADDRESSES.ethereum.WSTETH, tEThwstETHLP_wstethBal * tETHwstETHLPRatio) - - - api.removeTokenBalance(tETH) -} - - -async function tvlEthereum(api) { - await addGrowAutovaultNav(api) - - const vault = '0x551d155760ae96050439ad24ae98a96c765d761b' - const tokens = await api.call({ abi: 'address[]:getAllowableAssets', target: vault }) - await api.sumTokens({ owner: vault, tokens }) - - const storage = await api.call({ abi: 'address:strategyStorage', target: vault }) - const strategies = await api.fetchList({ lengthAbi: 'getStrategyCount', itemAbi: 'getStrategyAddress', target: storage }) - await getInFlightLidoRedemptionNav(api, strategies) - - await sumTokens2({ - api, owners: [strategies[0]], fetchCoValentTokens: true, resolveUniV3: true, tokenConfig: { - onlyWhitelisted: false, - } - }) - - // covalent doesn't returns these tokens in sumTokens2 above when strategies[1] and [2] are owners, - // they may include other unlisted debt and collateral tokens, so we will be using our own nav module - - // strategies[1] - // tokensAndOwners:[ - // [ADDRESSES.ethereum.WSTETH, '0x5ae0e44de96885702bd99a6914751c952d284938'], // wstETH - // ['0x12B54025C112Aa61fAce2CDB7118740875A566E9', '0x5ae0e44de96885702bd99a6914751c952d284938'], // spark collateral wsteth - // ['0x2e7576042566f8D6990e07A1B61Ad1efd86Ae70d', '0x5ae0e44de96885702bd99a6914751c952d284938'], // spark debt weth - // ] - - // strategies[2] - // tokensAndOwners:[ - // ['0xC035a7cf15375cE2706766804551791aD035E0C2', '0xB27D688Ac06a441c005657971B11521e80CdcE98'], // aavePrime collateral wsteth - // ] - - const navRegistry = '0xe2d60463dE3a0221276D737b87C605e0BB5451E9' - const navArr = await api.multiCall({ - abi: "function getStrategyNav(address,(bytes4,bytes)[]) external view returns (uint)", calls: strategies.slice(1).map((e) => ({ target: navRegistry, params: [e, [ - [ - `0x75418615`, - `0xab311908000000000000000000000000${e.slice(2).toLowerCase()}00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000` - ] - ]]})) - }) - - for (let i=0;i ({ target: navRegistry, params: [e, []]})) - }) - - for (let i=0;i ({ target: v, params: hyperPools[i] })) }) - const vaultSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: vaults }) - const vToken0s = await api.multiCall({ abi: 'address:token0', calls: vaults }) - const vToken1s = await api.multiCall({ abi: 'address:token1', calls: vaults }) - const vTokenAmounts = await api.multiCall({ abi: 'function getTotalAmounts() view returns (uint256 total0, uint256 total1)', calls: vaults }) - - vaults.forEach((_vault, i) => { - const token0 = vToken0s[i] - const token1 = vToken1s[i] - const { total0, total1, } = vTokenAmounts[i] - const ratio = vaultBalances[i] / vaultSupplies[i] - api.add(token0, total0 * ratio) - api.add(token1, total1 * ratio) - }) - - const curvePoolVaults = ['0xDFF4a68044eb68c60354810E9316B2B6DB88B3eb'] - const curvePools = await api.multiCall({ abi: 'address:curvePool', calls: curvePoolVaults }) - const cBalances = await api.multiCall({ abi: 'erc20:balanceOf', calls: curvePools.map((v, i) => ({ target: v, params: curvePoolVaults[i] })) }) - const cSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: curvePools }) - - - for (const cPool of curvePools) { - const i = curvePools.indexOf(cPool) - const cTokens = await api.fetchList({ lengthAbi: 'N_COINS', itemAbi: 'coins', target: cPool }) - const ratio = cBalances[i] / cSupplies[i] - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: cTokens.map((v) => ({ target: v, params: cPool })) }) - for (let j=0; j tokens.map(t => [t, contract])).flat() - return sumTokens2({ api, tokensAndOwners }) -} - -module.exports = { - misrepresentedTokens: true, - aurora: { - tvl: sdk.util.sumChainTvls([stableswapTVL, dexTVL]) - }, -}; -// node test.js projects/trisolaris.js \ No newline at end of file diff --git a/projects/tron-btc/index.js b/projects/tron-btc/index.js deleted file mode 100644 index df696de693d..00000000000 --- a/projects/tron-btc/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "Collateral for BTC on tron chain", - bitcoin: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ owners: bitcoinAddressBook.tronBTC }), - ]), - }, - ethereum: { - tvl: sumTokensExport({ - ownerTokens: [ - [[ADDRESSES.ethereum.WBTC], "0xbe6d2444a717767544a8b0ba77833aa6519d81cd",], //WBTC - [[ADDRESSES.bob.FBTC], "0x38d516a43f9bab90455c16f9299866217062467e",],//FBTC -] - }), - }, - merlin: { - tvl: sumTokensExport({ - owners: ["0x06fe862f2eefe9a5e9a2cf9799941706665e833a"], - tokens: [ADDRESSES.merlin.WBTC_1, "0x93919784c523f39cacaa98ee0a9d96c3f32b593e"] // M-BTC AND UNIBTC - }), - }, - zklink: { - tvl: sumTokensExport({ - owners: ["0x3aa95613091a3a9512956c3a2a2b724dce375a2d"], - tokens: ["0xbeaf16cfd8efe0fc97c2a07e349b9411f5dc272c"] // SolvBTC.m - }), - }, - linea: { - tvl: sumTokensExport({ - owners: ["0x399c4e524cff47d9e670f9d1ca0381bbe746e97a", "0x533806b821ec94091228d7d34e697b93bb79f8f6"], - tokens: ["0xe4d584ae9b753e549cae66200a6475d2f00705f7", "0x5ffce65a40f6d3de5332766fff6a28bf491c868c", "0x96155858a02c410c3c814bb32fdc413b3241b62e"] // m-btc, SolvBTC.m , solvBTC.B - }), - }, - mode: { - tvl: sumTokensExport({ - owners: ["0x399c4e524cff47d9e670f9d1ca0381bbe746e97a", "0x533806b821ec94091228d7d34e697b93bb79f8f6"], - tokens: ["0x59889b7021243db5b1e065385f918316cd90d46c", ] // m-btc - }), - }, - core: { - tvl: sumTokensExport({ - owners: ["0x533806b821ec94091228d7d34e697b93bb79f8f6"], - tokens: ["0xe04d21d999faedf1e72ade6629e20a11a1ed14fa", ] // solvBTC.M - }), - }, - kroma: { - tvl: sumTokensExport({ - owners: ["0x533806b821ec94091228d7d34e697b93bb79f8f6"], - tokens: ["0x0f921c39efd98809fe6d20a88a4357454578987a", ] // m-BTC - }), - }, - kava: { - tvl: sumTokensExport({ - owners: ["0x533806b821ec94091228d7d34e697b93bb79f8f6"], - tokens: ["0x59889b7021243db5b1e065385f918316cd90d46c", ] // m-BTC - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: ["0x533806b821ec94091228d7d34e697b93bb79f8f6"], - tokens: [ADDRESSES.bsc.BTCB, ] // BTCB - }), - }, -}; \ No newline at end of file diff --git a/projects/tropicalfinance/index.js b/projects/tropicalfinance/index.js deleted file mode 100644 index cb63b178017..00000000000 --- a/projects/tropicalfinance/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const WBCH = ADDRESSES.smartbch.WBCH; -const DAIQUIRI = ADDRESSES.smartbch.DAIQUIRI; -const MARGARITA = "0xe935C33b314330C773f9A135C0c8D8E857588609"; -const FACTORY = "0x138504000feaEd02AD75B1e8BDb904f51C445F4C"; -const MASTERCHEF_DAIQUIRI = "0xE4D74Af73114F72bD0172fc7904852Ee2E2b47B0"; -const MASTERCHEF_MARGARITA = "0x428a6C7dEEdB7c26948c1e72Bba8d5FB5e7b6B0A" -const CHAIN = "smartbch"; -const FLEXUSD = ADDRESSES.smartbch.flexUSD; -const LAW = ADDRESSES.smartbch.LAW; -const CLY = "0x7642Df81b5BEAeEb331cc5A104bd13Ba68c34B91"; - -const bchMasterChef = async (api) => { - const masterchefs = [MASTERCHEF_DAIQUIRI, MASTERCHEF_MARGARITA] - return sumTokens2({ api, owners: masterchefs, token: WBCH}) -} - -const bchDexTvl = getUniTVL({ factory: FACTORY, chain: CHAIN, useDefaultCoreAssets: true, }) - -module.exports = { - misrepresentedTokens: true, - methodology: "Factory address (" + FACTORY + ") is used to find the LP pairs on smartBCH. TVL is equal to DEX liquidity plus the staked amounts across Pools and Farms in Daiquiri and Margarita Masterchefs. Non-native tokens staked in masterchefs are counted towards staking.", - smartbch: { - tvl: sdk.util.sumChainTvls([bchDexTvl, bchMasterChef]), - // masterchef: bchMasterChef, - staking: sdk.util.sumChainTvls([ - staking(MASTERCHEF_DAIQUIRI, DAIQUIRI, "smartbch", "tropical-finance", 18), - staking(MASTERCHEF_DAIQUIRI, FLEXUSD, "smartbch", "flex-usd", 18), - staking(MASTERCHEF_DAIQUIRI, LAW, "smartbch", "law", 18), - staking(MASTERCHEF_DAIQUIRI, CLY, "smartbch", "celery", 18), - - staking(MASTERCHEF_MARGARITA, MARGARITA, "smartbch", "margarita", 18), - staking(MASTERCHEF_MARGARITA, FLEXUSD, "smartbch", "flex-usd", 18), - ]) - }, -} diff --git a/projects/tropicalswap/index.js b/projects/tropicalswap/index.js deleted file mode 100644 index 317fad78508..00000000000 --- a/projects/tropicalswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport('mantle', '0x5B54d3610ec3f7FB1d5B42Ccf4DF0fB4e136f249') diff --git a/projects/tropykus-zkevm/index.js b/projects/tropykus-zkevm/index.js deleted file mode 100644 index 2ccc4b96442..00000000000 --- a/projects/tropykus-zkevm/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { aaveExports, methodology } = require('../helper/aave'); - -module.exports = { - methodology, - polygon_zkevm: aaveExports("polygon_zkevm", "0x4Dac514F520D051551372d277d1b2Fa3cF2AfdFF"), -} \ No newline at end of file diff --git a/projects/tropykus/index.js b/projects/tropykus/index.js deleted file mode 100644 index e1e61f8546b..00000000000 --- a/projects/tropykus/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - misrepresentedTokens: true, - rsk: compoundExports2({ comptroller: "0x962308fEf8edFaDD705384840e7701F8f39eD0c0", cether: '0x0aEaDb9d4C6a80462a47E87e76e487fa8b9A37d7', blacklistedTokens: ['0xd2ec53e8dd00d204d3d9313af5474eb9f5188ef6', '0x3134b7fbfca5db217eca523eab1941452cf35163','0xedaefc6b596ed38d712100976969975a37c84464','0xe17551201eeaefbd625ca4fb48d49c06e7ac064b']}), -} diff --git a/projects/troydefi/index.js b/projects/troydefi/index.js deleted file mode 100644 index 74c165ff966..00000000000 --- a/projects/troydefi/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0x0F8E6DD57e86f0Aa9d219AAFAC728004bF96693E"; -const token = "0x576BB65B52425d59AC4c702376F88c527f5C7773"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token) -} \ No newline at end of file diff --git a/projects/truefeedback/index.js b/projects/truefeedback/index.js deleted file mode 100644 index 3034ea70c7d..00000000000 --- a/projects/truefeedback/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - celo: { - tvl: () => 0, - staking: staking('0x588069878442856b683ab39f410ed96b72fb542a', '0xbDd31EFfb9E9f7509fEaAc5B4091b31645A47e4b', "celo", undefined, undefined), - }, - kava: { - staking: staking('0x067543c3D97753dDA22A2cF6a806f47BD6A17B6A', '0xbd10f04b8b5027761fcaad42421ad5d0787211ee', "kava",undefined, undefined), - }, -}; - diff --git a/projects/truefi/abi.json b/projects/truefi/abi.json deleted file mode 100644 index ad9087e274e..00000000000 --- a/projects/truefi/abi.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "token": "address:token", - "asset": "address:asset", - "getPortfolios": "address[]:getPortfolios", - "loansValue": "uint256:loansValue", - "currencyBalance": "uint256:currencyBalance", - "underlyingToken": "address:underlyingToken", - "illiquidValue": "uint256:illiquidValue", - "liquidValue": "uint256:liquidValue", - "getAssetVaults": "address[]:getAssetVaults", - "liquidAssets": "uint256:liquidAssets", - "outstandingAssets": "uint256:outstandingAssets", - "getAlocVaults": "address[]:getPortfolios", - "borrowedAssets": "uint256:borrowedAmount" -} \ No newline at end of file diff --git a/projects/truefi/index.js b/projects/truefi/index.js deleted file mode 100644 index a9256659a01..00000000000 --- a/projects/truefi/index.js +++ /dev/null @@ -1,94 +0,0 @@ -const abi = require('./abi.json') -const { staking } = require('../helper/staking') - -const stkTRU = '0x23696914Ca9737466D8553a2d619948f548Ee424' -const TRU = '0x4C19596f5aAfF459fA38B0f7eD92F11AE6543784' -const managedPortfolioFactory = '0x17b7b75FD4288197cFd99D20e13B0dD9da1FF3E7' -const assetVaultFactory = '0x5Def383172C7dFB6F937e32aDf5be4D252168eDA' -const alocVaultFactory = '0x1672f101be9FfE121AfF7514B373e956272fe249' - -const alocVaultFactoryArbitrum = '0xCA1353dAB799d87D70E3750c2280205A5c8f62e9' - -const pools = [ - '0x97cE06c3e3D027715b2d6C22e67D5096000072E5', // TUSD - '0x6002b1dcB26E7B1AA797A17551C6F487923299d7', // USDT - '0xA991356d261fbaF194463aF6DF8f0464F8f1c742', // USDC - '0x1Ed460D149D48FA7d91703bf4890F97220C09437', // BUSD -] - -async function getAllTvl(api, isBorrowed) { - - const tokens = await api.multiCall({ calls: pools, abi: abi.token, }) - const currencyBalance = await api.multiCall({ calls: pools, abi: abi.currencyBalance, }) - const loansValue = await api.multiCall({ calls: pools, abi: abi.loansValue, }) - - const portfolios = await api.call({ target: managedPortfolioFactory, abi: abi.getPortfolios, }) - const underlyingToken = await api.multiCall({ calls: portfolios, abi: abi.underlyingToken, }) - const liquidValue = await api.multiCall({ calls: portfolios, abi: abi.liquidValue, }) - const illiquidValue = await api.multiCall({ calls: portfolios, abi: abi.illiquidValue, }) - - const assetVaults = await api.call({ target: assetVaultFactory, abi: abi.getAssetVaults, }) - const avUnderlyingTokens = await api.multiCall({ calls: assetVaults, abi: abi.asset, }) - const avLiquidAssets = await api.multiCall({ calls: assetVaults, abi: abi.liquidAssets, }) - const avIlliquidAssets = await api.multiCall({ calls: assetVaults, abi: abi.outstandingAssets, }) - - const alocVaults = await api.call({target: alocVaultFactory, abi: abi.getAlocVaults}) - const alocUnderlyingTokens = await api.multiCall({calls: alocVaults, abi: abi.asset}) - const alocLiquidAssets = await api.multiCall({calls: alocVaults, abi: abi.liquidAssets}) - const alocIlliquidAssets = await api.multiCall({calls: alocVaults, abi: abi.borrowedAssets}) - - if (!isBorrowed) { - api.addTokens(tokens, currencyBalance) - api.addTokens(underlyingToken, liquidValue) - api.addTokens(avUnderlyingTokens, avLiquidAssets) - api.addTokens(alocUnderlyingTokens, alocLiquidAssets) - } else { - api.addTokens(tokens, loansValue) - api.addTokens(underlyingToken, illiquidValue) - api.addTokens(avUnderlyingTokens, avIlliquidAssets) - api.addTokens(alocUnderlyingTokens, alocIlliquidAssets) - } -} - -async function getArbitrumTvl(api, isBorrowed) { - const alocVaults = await api.call({target: alocVaultFactoryArbitrum, abi: abi.getAlocVaults, chain: 'arbitrum'}) - const alocUnderlyingTokens = await api.multiCall({calls: alocVaults, abi: abi.asset, chain: 'arbitrum'}) - const alocLiquidAssets = await api.multiCall({calls: alocVaults, abi: abi.liquidAssets, chain: 'arbitrum'}) - const alocIlliquidAssets = await api.multiCall({calls: alocVaults, abi: abi.borrowedAssets, chain: 'arbitrum'}) - - if(!isBorrowed) { - api.addTokens(alocUnderlyingTokens, alocLiquidAssets) - } else { - api.addTokens(alocUnderlyingTokens, alocIlliquidAssets) - } - -} - -async function borrowed(api) { - return getAllTvl(api, true) -} - -async function tvl(api) { - return getAllTvl(api, false) -} - -async function borrowedArbitrum(api) { - return getArbitrumTvl(api, true) -} - -async function tvlArbitrum(api) { - return getArbitrumTvl(api, false) -} - -module.exports = { - start: '2020-11-20', // 11/20/2020 @ 12:00am (UTC) - ethereum: { - tvl, - staking: staking(stkTRU, TRU), - borrowed, - }, - arbitrum: { - tvl: tvlArbitrum, - borrowed: borrowedArbitrum, - } -} \ No newline at end of file diff --git a/projects/truemarkets/index.js b/projects/truemarkets/index.js deleted file mode 100644 index 96c51eef221..00000000000 --- a/projects/truemarkets/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { pool2 } = require('../helper/pool2') -const { sumTokensExport } = require('../helper/unknownTokens') - -const config = { - base: { factory: '0x61a98bef11867c69489b91f340fe545eefc695d7', fromBlock: 21180486 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event MarketCreatedWithDescription (address marketAddress, string marketQuestion, string marketSource, string additionalInfo, uint256 endOfTrading, uint256 yesNoTokenCap, address marketOwner)', fromBlock, }) - const markets = logs.map(log => log.marketAddress) - const tokens = await api.multiCall({ abi: 'address:paymentToken', calls: markets }) - return api.sumTokens({ tokensAndOwners2: [tokens, markets] }) - } - } -}) - -module.exports.base.pool2 = pool2('0x688F5B490Edb7F466A89a6Db4fb30829558aF014', '0x1FAE246b1b2D0ce47126bBb109850Da355352D77') -module.exports.base.staking = sumTokensExport({ owner: '0x1a40621C54330940B081F925aA027458a4c035eD', tokens: ['0x21cfcfc3d8f98fc728f48341d10ad8283f6eb7ab'], lps: ['0x1FAE246b1b2D0ce47126bBb109850Da355352D77'], useDefaultCoreAssets: true}) \ No newline at end of file diff --git a/projects/trufin-trustake/index.js b/projects/trufin-trustake/index.js deleted file mode 100644 index c159d042c95..00000000000 --- a/projects/trufin-trustake/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { function_view } = require('../helper/chain/aptos') -const { call: near_call } = require('../helper/chain/near') -const { queryContract } = require('../helper/chain/cosmos') -const { getConnection } = require("../helper/solana"); -const { PublicKey } = require("@solana/web3.js"); - -const TRUSTAKE_APT_CONTRACT_ADDR = "0x6f8ca77dd0a4c65362f475adb1c26ae921b1d75aa6b70e53d0e340efd7d8bc80" -const MODULE = "staker" -const FUNCTION = "total_staked" - -async function aptosTvl(api) { - const totalStaked = await function_view({ functionStr: `${TRUSTAKE_APT_CONTRACT_ADDR}::${MODULE}::${FUNCTION}` }) - api.add(ADDRESSES.aptos.APT, totalStaked) -} - -const abi = { - "totalShares": "uint256:totalShares", - "sharePrice": "function sharePrice() external view returns (uint256, uint256)", - "getDust": "uint256:getDust" -} - -const TRUSTAKE_CONTRACT_ADDR = "0xa43a7c62d56df036c187e1966c03e2799d8987ed" -const MATIC_TOKEN_ADDR = ADDRESSES.ethereum.MATIC - -const TRUSTAKE_POL_CONTRACT_ADDRESS = "0xc10214cdE5d6754Ec1e2220362f2120142c8E5e8" -const POL_TOKEN_ADDR = ADDRESSES.ethereum.POL - -async function tvl(api) { - const totalSupply = (await api.call({ abi: 'erc20:totalSupply', target: TRUSTAKE_CONTRACT_ADDR, })) - const sharePriceArray = (await api.call({ abi: abi.sharePrice, target: TRUSTAKE_CONTRACT_ADDR, })) - const dust = (await api.call({ abi: abi.getDust, target: TRUSTAKE_CONTRACT_ADDR, })) - const sharePrice = sharePriceArray[0] / sharePriceArray[1] / 1e18 - api.add(MATIC_TOKEN_ADDR, (totalSupply * sharePrice) + +dust) - - const totalSupplyPol = (await api.call({ abi: 'erc20:totalSupply', target: TRUSTAKE_POL_CONTRACT_ADDRESS, })) - const sharePriceArrayPol = (await api.call({ abi: abi.sharePrice, target: TRUSTAKE_POL_CONTRACT_ADDRESS, })) - const dustPol = (await api.call({ abi: abi.getDust, target: TRUSTAKE_POL_CONTRACT_ADDRESS, })) - const sharePricePol = sharePriceArrayPol[0] / sharePriceArrayPol[1] / 1e18 - api.add(POL_TOKEN_ADDR, (totalSupplyPol * sharePricePol) + +dustPol) -} - -const TRUSTAKE_NEAR_CONTRACT_ADDR = "staker1.msig1.trufin.near" - -async function nearTvl() { - const totalStaked = await near_call(TRUSTAKE_NEAR_CONTRACT_ADDR, 'get_total_staked', {}) - return { near: totalStaked[0] / 1e24 } -} - -const TRUSTAKE_INJ_CONTRACT_ADDR = "inj1x997dy6ka7y8u0r56yk2k83llspy33yet9zcnq" - -async function injectiveTvl(api) { - const { total_staked } = await queryContract({ contract: TRUSTAKE_INJ_CONTRACT_ADDR, chain: "injective", data: '{"get_total_staked": {}}'}) - api.add(ADDRESSES.injective.INJ, total_staked) -} - -const TRUSTAKE_SOL_STAKE_POOL_ACCOUNT_ID = "EyKyx9LKz7Qbp6PSbBRoMdt8iNYp8PvFVupQTQRMY9AM" - -async function solanaTvl() { - const connection = getConnection(); - const account = await connection.getAccountInfo(new PublicKey(TRUSTAKE_SOL_STAKE_POOL_ACCOUNT_ID)) - return { - solana: Number(account.data.readBigUint64LE(258))/1e9 - } -} - -module.exports = { - methodology: `Counts the TVL of native tokens across all TruStake vaults.`, - ethereum: { - tvl - }, - aptos: { - tvl: aptosTvl - }, - near: { - tvl: nearTvl - }, - injective: { - tvl: injectiveTvl - }, - solana: { - tvl: solanaTvl - } -} diff --git a/projects/trufin/abi.json b/projects/trufin/abi.json deleted file mode 100644 index 041894711c6..00000000000 --- a/projects/trufin/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "totalShares": "uint256:totalShares", - "sharePrice": "uint256:sharePrice", - "getDust": "uint256:getDust" -} diff --git a/projects/trufin/index.js b/projects/trufin/index.js deleted file mode 100644 index c363ce56e15..00000000000 --- a/projects/trufin/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require('./abi.json') - -const TRUSTAKE_CONTRACT_ADDR = "0xcfab8530ccf1f9936daede537d6ebbc75289006d" -const MATIC_TOKEN_ADDR = ADDRESSES.ethereum.MATIC - -async function tvl(api) { - const totalShares = (await api.call({ abi: abi.totalShares, target: TRUSTAKE_CONTRACT_ADDR, })) - const sharePrice = (await api.call({ abi: abi.sharePrice, target: TRUSTAKE_CONTRACT_ADDR, })) - const dust = (await api.call({ abi: abi.getDust, target: TRUSTAKE_CONTRACT_ADDR, })) - - api.add(MATIC_TOKEN_ADDR, (totalShares * sharePrice / 1e18) + +dust) -} - -module.exports = { - methodology: `Counts the TVL of MATIC tokens in TruFin's Legacy vaults.`, - ethereum: { - tvl - } -} diff --git a/projects/trust-wallet/index.js b/projects/trust-wallet/index.js deleted file mode 100644 index b8644b758fd..00000000000 --- a/projects/trust-wallet/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - methodology: "TVL counts TWT tokens deposited on the Staking contracts.", - bsc: { - tvl: () => ({}), - staking: staking('0x5029f49585D57ed770D2194841B5A0bE06BFc2ED', '0x4b0f1812e5df2a09796481ff14017e6005508003') - } -} \ No newline at end of file diff --git a/projects/trustednode/index.js b/projects/trustednode/index.js deleted file mode 100644 index d779537e75e..00000000000 --- a/projects/trustednode/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') - -module.exports = { - bsc: { - tvl: () => ({}), - pool2: pool2('0x44dC7FE8e51076De1B9f863138107148b441853C', '0x562C0c707984D40b98cCba889C6847DE274E5d57'), - staking: staking('0x98386F210af731ECbeE7cbbA12C47A8E65bC8856', '0x7f12a37b6921ffac11fab16338b3ae67ee0c462b'), - }, - fantom: { - pool2: pool2('0xe056aba40572f64d98a8c8e717c34e96056c4aad', '0x9206444A1820c508FbA5bF815713451Ee540B3c8'), - }, -} \ No newline at end of file diff --git a/projects/trustin/index.js b/projects/trustin/index.js deleted file mode 100644 index b45bfca83ca..00000000000 --- a/projects/trustin/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - btr: compoundExports2({ comptroller: '0xF2EBc006a55ADFb3f50A521E5Db848942e7Dbb1F' }), -} \ No newline at end of file diff --git a/projects/trustswap/index.js b/projects/trustswap/index.js deleted file mode 100644 index 9e799205b93..00000000000 --- a/projects/trustswap/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = { - "token": "address:token", - "currentTotalStake": "uint256:currentTotalStake" -} - -const staking_contract = "0x5A753021CE28CBC5A7c51f732ba83873D673d8cC"; - -const assets = [ - // other tokens which probably for some reason was sent to the contract accidentally - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.UNI, -]; - -const stakingTvl = async (api) => { - const token = await api.call({ abi: abi.token, target: staking_contract}) - const bal = await api.call({ abi: abi.currentTotalStake, target: staking_contract}) - api.add(token, bal) -}; - -async function ethTvl(api) { - return api.sumTokens({ owner: staking_contract, tokens: assets }) -} - - -module.exports = { - methodology: `Counts SWAP tokens locked int the staking contract(0x5A753021CE28CBC5A7c51f732ba83873D673d8cC). Regular TVL counts UNI, USDT, and USDC that are also in the staking contract(these tokens may have been sent to the contract by accident).`, - ethereum: { - tvl: ethTvl, - staking: stakingTvl - }, -}; diff --git a/projects/trxStakingGovernance/index.js b/projects/trxStakingGovernance/index.js deleted file mode 100644 index c060b5f9247..00000000000 --- a/projects/trxStakingGovernance/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { get } = require('../helper/http') - -let nowDate = new Date(); -nowDate.setFullYear(nowDate.getFullYear() - 1); -let T = parseInt(nowDate.getTime() / 1000); - -const url = "https://apilist.tronscan.org/api/defiTvl?type=tvlline&project=&startTime=" + T; - -function getItemByName (projectName, listArr) { - for (let i = 0; i < listArr.length; i++) { - if (listArr[i].project === projectName) { - return listArr[i]; - } - } -} - -const tvl = async (api) => { - const pools = await get(url) - let item = getItemByName('TRX Staking Governance', pools.projects) - return api.addUSDValue(Math.round(item.locked)) -} - -module.exports = { - misrepresentedTokens: true, - tron: { tvl }, -} \ No newline at end of file diff --git a/projects/tsunami-fi/index.js b/projects/tsunami-fi/index.js deleted file mode 100644 index 98eac221aa5..00000000000 --- a/projects/tsunami-fi/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); -const { function_view, hexToString } = require("../helper/chain/aptos"); - -async function tvl(api) { - const data = await function_view({ - functionStr: - "0x1786191d0ce793debfdef9890868abdcdc7053f982ccdd102a72732b3082f31d::basket::get_all_basket_coins_by_basket", - type_arguments: [ - "0x1786191d0ce793debfdef9890868abdcdc7053f982ccdd102a72732b3082f31d::baskets::Basket1", - ], - }); - data.forEach( - ({ - coin_type_info: { account_address, module_name, struct_name }, - reserve_amount, - }) => { - const token = `${account_address}::${hexToString( - module_name - )}::${hexToString(struct_name)}`; - api.add(token, reserve_amount); - // api.add(token, margin_occupied_amount * -1) - } - ); -} - -const mantleVault = "0x73a540Bec4350cD2bB3b9e09EBB6976a3C562c55"; - -module.exports = { - mantle: { - tvl: gmxExports({ vault: mantleVault }), - }, - aptos: { tvl }, - hallmarks: [[1704994608, "Tsunami Aptos sunsetting"]], -}; diff --git a/projects/ttswap/index.js b/projects/ttswap/index.js deleted file mode 100644 index 67fdc806c82..00000000000 --- a/projects/ttswap/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const { transformDexBalances } = require("../helper/portedTokens") -const { getLogs } = require('../helper/cache/getLogs') -const { nullAddress } = require("../helper/tokenMapping") -const sdk = require('@defillama/sdk') -const { sliceIntoChunks, sleep } = require("../helper/utils") - -async function tvl(api) { - const factory = '0xcE393b11872EE5020828e443f6Ec9DE58CD8b6c5' - const logs = await getLogs({ - api, - target: factory, - topic: 'NewExchange(address,address)', - eventAbi: 'event NewExchange(address indexed token, address indexed exchange)', - onlyArgs: true, - fromBlock: 13154136, - }) - const calls = logs.map(i => ({ target: i.token, params: i.exchange })).filter(i => i.target.toLowerCase() !== '0xcE393b11872EE5020828e443f6Ec9DE58CD8b6c5'.toLowerCase()) - const allToken1Res = await api.multiCall({ abi: 'erc20:balanceOf', calls, permitFailure: true }) - const tokenFilter = (_, i) => allToken1Res[i] && +allToken1Res[i] > 0 - const token1s = calls.map(i => i.target).filter(tokenFilter) - const exchanges = calls.map(i => i.params).filter(tokenFilter) - const token1Res = allToken1Res.filter(tokenFilter) - const chunkedExchanges = sliceIntoChunks(exchanges, 50) - let token0Res = [] - for (const chunk of chunkedExchanges) { - let { output: res } = await sdk.api.eth.getBalances({ ...api, targets: chunk, }) - token0Res.push(...res) - await sleep(3000) - } - token0Res = token0Res.map(i => i.balance) - - const data = [] - token1s.map((v, i) => { - data.push({ - token0: nullAddress, - token1: v, - token0Bal: token0Res[i], - token1Bal: token1Res[i], - }) - }) - // const pairs = (await api.fetchList({ lengthAbi: 'uint256:tokenCount', itemAbi: "function getTokenWithId(uint256 token_id) view returns (address out)", target: factory })).filter(i => i !== nullAddress) - - return transformDexBalances({ chain: api.chain, data }) -} -module.exports = { - misrepresentedTokens: true, - thundercore: { tvl }, -} diff --git a/projects/tulip-capital/index.js b/projects/tulip-capital/index.js deleted file mode 100644 index ce605e01109..00000000000 --- a/projects/tulip-capital/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Tulip Capital.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0x59e608E4842162480591032f3c8b0aE55C98d104', - ], - eulerVaultOwners: [ - '0x7c615e12D1163fc0DdDAA01B51922587034F5C93', - ], - turtleclub: [ - '0x6Bf340dB729d82af1F6443A0Ea0d79647b1c3DDf', - '0x7895a046b26cc07272b022a0c9bafc046e6f6396', - '0x686c83Aa81ba206354fDcbc2cd282B4531365E29', - ], - }, - berachain: { - eulerVaultOwners: [ - '0x18d23B961b11079EcD499c0EAD8E4F347e4d3A66', - ], - }, - bob: { - eulerVaultOwners: [ - '0x7c615e12D1163fc0DdDAA01B51922587034F5C93', - ], - }, - bsc: { - eulerVaultOwners: [ - '0x7c615e12D1163fc0DdDAA01B51922587034F5C93', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/tulip/index.js b/projects/tulip/index.js deleted file mode 100644 index 6b3b7f7e98f..00000000000 --- a/projects/tulip/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('../helper/staking'); -const { getUniTVL } = require('../helper/unknownTokens') - -const petal = "0x2736643C7fFFe186984f60a2d34b91b1b7398bF1"; -const garden = "0xceF2f95f185D49bcd1c10DE7f23BEaCBaae6eD0f"; - -module.exports = { - oasis: { - staking: staking(garden, petal), - tvl: getUniTVL({ factory: '0x90a5e676EFBdeFeeeb015cd87484B712fd54C96A', useDefaultCoreAssets: true }), - } -}; diff --git a/projects/turbos/index.js b/projects/turbos/index.js deleted file mode 100644 index 48e9adcfa68..00000000000 --- a/projects/turbos/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const sui = require("../helper/chain/sui"); - -async function tvl(api) { - const poolFactoryConfig = '0xc294552b2765353bcafa7c359cd28fd6bc237662e5db8f09877558d81669170c'; - const parent = await sui.getObject(poolFactoryConfig); - const poolFields = await sui.getDynamicFieldObjects({ - parent: parent.fields.pools.fields.id.id, - }); - const poolIds = poolFields.map((item) => item.fields.value.fields.pool_id); - const poolList = await sui.getObjects(poolIds); - poolList.forEach(({ type, fields }) => { - const [coinA, coinB] = type.replace(">", "").split("<")[1].split(", "); - api.add(coinA, fields.coin_a); - api.add(coinB, fields.coin_b); - }); -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; diff --git a/projects/turnup/index.js b/projects/turnup/index.js deleted file mode 100644 index 2a74870e54a..00000000000 --- a/projects/turnup/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x5d9388a4ea9ebfc4af8c71c0b4aa3b372fefe12b" - -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the BNB on ${contract}`, - bsc: { - tvl - } -} \ No newline at end of file diff --git a/projects/turtle/index.js b/projects/turtle/index.js deleted file mode 100644 index 4b3e97ff9e7..00000000000 --- a/projects/turtle/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require('../helper/staking') - -const EARNING_CONTRACT = '0x7016db90c1f8b87ea4d18b7e53fb7c42999bc995'; -const TURTLE_TOKEN = '0x8C9E2bEf2962CE302ef578113eebEc62920B7e57'; - -module.exports = { - methodology: 'Staking includes tokens locked in staking contract. TVL is empty.', - cronos: { - tvl: () => ({}), // No base TVL since only staking - staking: staking(EARNING_CONTRACT, TURTLE_TOKEN), - } -}; \ No newline at end of file diff --git a/projects/turtleswap/index.js b/projects/turtleswap/index.js deleted file mode 100644 index 5e8badc5753..00000000000 --- a/projects/turtleswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -const CHAIN = 'vechain' -const FACTORY = '0x7751a8Df07F7Ae6f9E92B06a363b3c020F2830aC' - -module.exports = { - methodology: 'TVL counts liquidity across TurtleSwap pools via factory reserves.', - misrepresentedTokens: false, - start: 1719964800, - ...uniTvlExport(CHAIN, FACTORY), -} diff --git a/projects/tutellus/index.js b/projects/tutellus/index.js deleted file mode 100644 index 9b5e7baa568..00000000000 --- a/projects/tutellus/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - polygon: { - tvl: () => ({}), - staking: staking('0xc7963fb87c365f67247f97d329d50b9ec5a374b8', '0x12a34A6759c871C4C1E8A0A42CFc97e4D7Aaf68d'), - }, - timetravel: false, - methodology: "Counts the number of TUT tokens locked in Tutellus contracts.", -} - diff --git a/projects/twin-finance/index.js b/projects/twin-finance/index.js deleted file mode 100644 index 1c40968f231..00000000000 --- a/projects/twin-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const twinUSDCAddress = '0x1b7678F6991b8dCcf9bB879929e12f1005d80E94'; -const depositContractAddress = '0xF77B36ba4691c5e3e022D9e7b5a8f78103ccC57a'; - -async function tvl(api) { - // Get the amount of twinUSDC or USDC held by the deposit contract - const depositedAmount = await api.call({ - abi: 'erc20:balanceOf', - target: twinUSDCAddress, // The token contract - params: [depositContractAddress], // The contract holding the deposits - }); - api.add(ADDRESSES.berachain.USDC, depositedAmount); -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL is calculated based on the amount of twinUSDC tokens held in the deposit contract, each representing 1 USDC in value.', - berachain: { - tvl - } -}; \ No newline at end of file diff --git a/projects/twindex/index.js b/projects/twindex/index.js deleted file mode 100644 index 0b6cd77fc5a..00000000000 --- a/projects/twindex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const TWX = '0x41171d5770c4c68686d1af042ada88a45b02f82b' -const MASTER_CHEF = '0x22A5C7376C76D2D7ddC88D314912217B20d6eEc0' - - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'bsc': '0x4E66Fda7820c53C1a2F601F84918C375205Eac3E' -}, { staking: { bsc: [MASTER_CHEF, TWX]}}) \ No newline at end of file diff --git a/projects/twtstake/index.js b/projects/twtstake/index.js deleted file mode 100644 index cb11610db3d..00000000000 --- a/projects/twtstake/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require("../helper/staking"); -const TWT_STAKE_CONTRACT = '0x5e7c3c55eb5c0ee10817d70e414f4b1ee22d5ce3'; -const TWT_TOKEN_CONTRACT = '0x4b0f1812e5df2a09796481ff14017e6005508003'; - -module.exports = { - hallmarks: [ - [1681948800, "TWTStake Flagged on Twitter"] - ], - methodology: 'Counts the number of TWT tokens in the TWT Stake contract.', - bsc: { - tvl: () => 0, - staking: staking(TWT_STAKE_CONTRACT,TWT_TOKEN_CONTRACT) - }, - deadFrom: '2023-05-15' -}; diff --git a/projects/txBridge/index.js b/projects/txBridge/index.js deleted file mode 100644 index 8d15b0c92ba..00000000000 --- a/projects/txBridge/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 324, }), - }, -} diff --git a/projects/txBridge/util.js b/projects/txBridge/util.js deleted file mode 100644 index 57b0b8ace7f..00000000000 --- a/projects/txBridge/util.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const _target = "0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB" -const _targetV2 = "0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6" -const gasQuery = ADDRESSES.linea.WETH_1 -const gasAddress = ADDRESSES.null - -async function txBridgeTvl(api, { chainId, target = _target, additionalBridges = [], extraTokens } = {}) { - const totalBalances = await sumTokens2({ api, owner: target, fetchCoValentTokens: true, balances: {}, tokens: extraTokens }) - const tokens = Object.keys(totalBalances).map(token => token.split(':')[1]).filter(token => token !== gasAddress) - tokens.unshift(gasQuery) - const balances = (await api.multiCall({ - target, - calls: tokens.map(token => ({ params: [chainId, token] })), - abi: "function chainBalance(uint256 chainId, address l1Token) view returns (uint256 balance)", - permitFailure: true, - })).map(i => i ?? 0) - tokens[0] = gasAddress - api.add(tokens, balances) - - if (additionalBridges.length > 0) { - for (const bridge of additionalBridges) - await txBridgeTvl(api, { chainId, target: bridge, }) - } - return api.getBalances() -} - -async function txBridgeTvlV2(api, { chainId, target = _targetV2, additionalBridges = [], extraTokens } = {}) { - const totalBalances = await sumTokens2({ api, owner: target, fetchCoValentTokens: true, balances: {}, tokens: extraTokens }) - const tokens = Object.keys(totalBalances).map(token => token.split(':')[1]).filter(token => token !== gasAddress) - tokens.unshift(gasQuery) - const assetIds = await api.multiCall({ abi: 'function assetId(address) view returns (bytes32)', calls: tokens, target, permitFailure: true }) - const tokensWithIds = tokens.filter((_token, i) => assetIds[i]) - const assetIdsLegit = assetIds.filter((id) => id) - - const balances = (await api.multiCall({ - target, - calls: assetIdsLegit.map(token => ({ params: [chainId, token] })), - abi: "function chainBalance(uint256 chainId, bytes32 assetId) view returns (uint256 balance)", - permitFailure: true, - })).map(i => i ?? 0) - tokensWithIds[0] = gasAddress - api.add(tokensWithIds, balances) - - if (additionalBridges.length > 0) { - for (const bridge of additionalBridges) - await txBridgeTvl(api, { chainId, target: bridge, }) - } - return api.getBalances() -} - -module.exports = {txBridgeTvl, txBridgeTvlV2,} \ No newline at end of file diff --git a/projects/tymio/index.js b/projects/tymio/index.js deleted file mode 100644 index 9116ba67711..00000000000 --- a/projects/tymio/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const config = { - ethereum: '0xB67D637B1301EEb56Dba4555bBd15Cd220F1aaD6', - arbitrum: '0xB67D637B1301EEb56Dba4555bBd15Cd220F1aaD6', -}; - -module.exports = { - methodology: 'Obtaining all authorized assets on deployed project contracts', -} - -Object.keys(config).forEach(chain => { - const contract = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.fetchList({ lengthAbi: 'acceptableTokensArrayLength', itemAbi: 'acceptableTokensArray', target: contract}) - return api.sumTokens({ tokens, owner: contract }) - } - } -}) \ No newline at end of file diff --git a/projects/typhoon.js b/projects/typhoon.js deleted file mode 100644 index 6fb3199e55e..00000000000 --- a/projects/typhoon.js +++ /dev/null @@ -1,9 +0,0 @@ -const { sumTokensExport, nullAddress } = require('./helper/unwrapLPs'); -const tornado = '0x9cDb933eDab885bB767658B9ED5C3800bc1d761B'; -const reserve = '0xC9B4Dff1ce5384C7014579099e63EA0092e14eD5'; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokens: [nullAddress], owners: [tornado, reserve], }) - } -}; \ No newline at end of file diff --git a/projects/typus-finance/index.js b/projects/typus-finance/index.js deleted file mode 100644 index 50a95495139..00000000000 --- a/projects/typus-finance/index.js +++ /dev/null @@ -1,90 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const SINGLE_DEPOSIT_VAULT_REGISTRY = "0xd67cf93a0df61b4b3bbf6170511e0b28b21578d9b87a8f4adafec96322dd284d"; -const REFUND_VAULT_REGISTRY ="0xf9acfc0a06094f6515c4392ffef84d40cd5f1d72bc74cbde3ee99dd7bca6cf3f" -const fud_token = "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD"; -const V1_SINGLE_DEPOSIT_VAULT_REGISTRY = "0x4ae62c4d67f9f5d7077626fcc6d450535c4df710da455a0a2bd2226558832629"; -const V1_SINGLE_BID_VAULT_REGISTRY = "0x2c8cdd00ced47e717420cd2fc54990b3b38e115e34a9209271063a59ddeeb059"; - -async function tvl(api) { - const depositVaults = await sui.getDynamicFieldObjects({ - parent: SINGLE_DEPOSIT_VAULT_REGISTRY, - }); - - depositVaults.forEach(({ fields }) => { - const deposit_token = "0x" + fields.deposit_token.fields.name; - const bid_token = "0x" + fields.bid_token.fields.name; - if (deposit_token.endsWith("MFUD")) { - api.add(fud_token, Number(fields.active_share_supply) * 10 ** 5); - api.add(fud_token, Number(fields.deactivating_share_supply) * 10 ** 5); - api.add(fud_token, Number(fields.inactive_share_supply) * 10 ** 5); - api.add(fud_token, Number(fields.warmup_share_supply) * 10 ** 5); - } else { - api.add(deposit_token, fields.active_share_supply); - api.add(deposit_token, fields.deactivating_share_supply); - api.add(deposit_token, fields.inactive_share_supply); - api.add(deposit_token, fields.warmup_share_supply); - } - if (bid_token.endsWith("MFUD")) { - api.add(fud_token, Number(fields.premium_share_supply) * 10 ** 5); - } else { - api.add(bid_token, fields.premium_share_supply); - } - }); - - // Add v1 vaults - - const v1depositVaultFields = await sui.getDynamicFieldObjects({ - parent: V1_SINGLE_DEPOSIT_VAULT_REGISTRY, - }); - - v1depositVaultFields.forEach( - ({ - type, - fields: { - value: { fields }, - }, - }) => { - const coin = type.replace(">>", "").split(", ")[2]; - api.add(coin, fields.active_sub_vault.fields.balance); - api.add(coin, fields.deactivating_sub_vault.fields.balance); - api.add(coin, fields.inactive_sub_vault.fields.balance); - api.add(coin, fields.warmup_sub_vault.fields.balance); - } - ); - - const v1bidVaultFields = await sui.getDynamicFieldObjects({ - parent: V1_SINGLE_BID_VAULT_REGISTRY, - }); - - v1bidVaultFields.forEach( - ({ - type, - fields: { - value: { fields }, - }, - }) => { - const coin = type.replace(">>", "").split(", ")[2]; - api.add(coin, fields.bidder_sub_vault.fields.balance); - api.add(coin, fields.premium_sub_vault.fields.balance); - api.add(coin, fields.performance_fee_sub_vault.fields.balance); - } - ); - - // Add Refund Vaults TVL - const refundVaultFields = await sui.getDynamicFieldObjects({ - parent: REFUND_VAULT_REGISTRY, - }); - - refundVaultFields.forEach(({ fields }) => { - const token = "0x" + fields.token.fields.name; - api.add(token, fields.share_supply); - }); -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; diff --git a/projects/typus-perp/index.js b/projects/typus-perp/index.js deleted file mode 100644 index 17d36af9a5e..00000000000 --- a/projects/typus-perp/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const LIQUIDITY_POOL_0 = "0x98110aae0ffaf294259066380a2d35aba74e42860f1e87ee9c201f471eb3ba03"; - -async function tvl(api) { - const pool = await sui.getObject(LIQUIDITY_POOL_0); - - pool.fields.token_pools.forEach((pool) => { - const token = "0x" + pool.fields.token_type.fields.name; - api.add(token, pool.fields.state.fields.liquidity_amount); - }); - -} - -module.exports = { - timetravel: false, - doublecounted: true, - sui: { - tvl, - }, -}; diff --git a/projects/typus-safu/index.js b/projects/typus-safu/index.js deleted file mode 100644 index 7833b25aea1..00000000000 --- a/projects/typus-safu/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const SAFU_REGISTRY = "0xdc970d638d1489385e49ddb76889748011bac4616b95a51aa63633972b841706"; -const FUNDING_VAULT_REGISTRY = "0xeb9e1c94b72cd3e1a4ca2e4d6e9dd61547c0c45c654843e0db03c50ba3c21138"; -const HEDGE_VAULT_REGISTRY = "0x515bb299ca2f0c8b753411f6e52322c03516915f522096890a314adac6c39a0a"; - -async function tvl(api) { - // Safu Vaults - const fields = await sui.getDynamicFieldObjects({ - parent: SAFU_REGISTRY, - }); - const safuVaults = fields.filter((item) => item.type.includes("Vault")); - - safuVaults.forEach(({ fields }) => { - const deposit_token = "0x" + fields.deposit_token.fields.name; - api.add(deposit_token, fields.share_supply.slice(0, 4)); - }); - - // Safu Funding Vults - const fields2 = await sui.getDynamicFieldObjects({ - parent: FUNDING_VAULT_REGISTRY, - }); - const safuFundingVaults = fields2.filter((item) => item.type.includes("Vault")); - - safuFundingVaults.forEach(({ fields }) => { - const deposit_token = "0x" + fields.token.fields.name; - api.add(deposit_token, fields.info[1]); - }); - - // Hedge Vaults - const fields3 = await sui.getDynamicFieldObjects({ - parent: HEDGE_VAULT_REGISTRY, - }); - const hedgeVaults = fields3.filter((item) => item.type.includes("Vault")); - - hedgeVaults.forEach(({ fields }) => { - const amounts = fields.user_share_supply; - const main_token = "0x" + fields.main_token.fields.name; - const hedge_token = "0x" + fields.hedge_token.fields.name; - const main_amount = amounts[0] + amounts[2]+ amounts[4]+ amounts[6]; - const hedge_amount = amounts[1] + amounts[3]+ amounts[5]+ amounts[7]; - api.add(main_token, main_amount); - api.add(hedge_token,hedge_amount); - }); -} - -module.exports = { - timetravel: false, - doublecounted: true, - sui: { - tvl, - }, -}; diff --git a/projects/tzwrap/index.js b/projects/tzwrap/index.js deleted file mode 100644 index b91c95a7995..00000000000 --- a/projects/tzwrap/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: '0x5Dc76fD132354be5567ad617fD1fE8fB79421D82', fetchCoValentTokens: true, }) - } -} \ No newline at end of file diff --git a/projects/u235/index.js b/projects/u235/index.js deleted file mode 100644 index 9f7271c20ce..00000000000 --- a/projects/u235/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { aaveExports } = require('../helper/aave'); -const methodologies = require('../helper/methodologies'); - -module.exports = { - methodology: methodologies.lendingMarket, - scroll: aaveExports('scroll', "0xE58Ebf93885c8Ea0368fCe84aF79EC983b80c8D5", undefined, ['0xeB3C203418f0cb55b351C3E45A5C4f47bE5DA77A'], { v3: true }), -} \ No newline at end of file diff --git a/projects/ubeswap-v3/index.js b/projects/ubeswap-v3/index.js deleted file mode 100644 index fe4a7bb7b51..00000000000 --- a/projects/ubeswap-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - celo: { factory: '0x67FEa58D5a5a4162cED847E13c2c81c73bf8aeC4', fromBlock: 25639915, }, -}) \ No newline at end of file diff --git a/projects/ubeswap/index.js b/projects/ubeswap/index.js deleted file mode 100644 index 0cf36ec0161..00000000000 --- a/projects/ubeswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - celo: { - tvl: getUniTVL({ factory: '0x62d5b84bE28a183aBB507E125B384122D2C25fAE', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/ubi-poh.js b/projects/ubi-poh.js deleted file mode 100644 index 518d5b5eafa..00000000000 --- a/projects/ubi-poh.js +++ /dev/null @@ -1,19 +0,0 @@ -const { staking} = require("./helper/staking"); - -const UBI = '0xDd1Ad9A21Ce722C151A836373baBe42c868cE9a4' -const lpTokens = [ - '0xea7952fac7ff6e997d895c1566599b86b91444c0', // DAI_UBI_LP - '0xe632ded5195e945a31f56d674aab0c0c9e7e812c' // ETH_UBI_LP -] -const stakingContracts = [ - '0xf9ae19cf447b3560afc407d9aac9e2007d4efe43', // DAI_UBI_LP - '0x81c071e795ce29eb155c9818f06786640d0adb2b' // ETH_UBI_LP -] - -module.exports = { - ethereum: { - pool2: staking(stakingContracts, lpTokens), - tvl: () => ({}), - }, - methodology: `UBI/ETH and UBI/DAI LP can be staked in a uni-v2 pool2 contract` -} diff --git a/projects/ubiquitydao/index.js b/projects/ubiquitydao/index.js deleted file mode 100644 index 7b31e8314de..00000000000 --- a/projects/ubiquitydao/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const crvPool = "0x20955CB69Ae1515962177D164dfC9522feef567E"; -const uad = "0x0F644658510c95CB46955e55D7BA9DDa9E9fBEc6"; -const tricrv = "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490"; - -async function tvl(timestamp, block) { - let balances = {}; - let poolBalances = ( - await sdk.api.abi.multiCall({ - calls: [ - { - target: uad, - params: crvPool, - }, - { - target: tricrv, - params: crvPool, - }, - ], - abi: "erc20:balanceOf", - block, - }) - ).output; - poolBalances.forEach((p) => { - let token = p.input.target; - if (token === "0x0F644658510c95CB46955e55D7BA9DDa9E9fBEc6") { - token = ADDRESSES.ethereum.DAI; - } - sdk.util.sumSingleBalance(balances, token, p.output); - }); - return balances; -} - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - methodology: "Tokens locked in the Curve Metapool", - ethereum: { - tvl, - }, -}; diff --git a/projects/ucs-finance/index.js b/projects/ucs-finance/index.js deleted file mode 100644 index 3136a024a60..00000000000 --- a/projects/ucs-finance/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'unichain': '0x1ee365b3230Cd52c17A7a40633A0C53b2f11411B' -}) \ No newline at end of file diff --git a/projects/udon/index.js b/projects/udon/index.js deleted file mode 100644 index 2e9ca7c6528..00000000000 --- a/projects/udon/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { fetchURL } = require('../helper/utils') - -async function tvl(api, isBorrows) { - const { data } = await fetchURL("https://mainnet-dapp1.sunube.net:7740/query/F4E33267A8FF1ACCE3C6D7B441B8542FB84FF6DAA5114105563D2AA34979BEF6?type=get_stats_supply_deposit"); - - data.map(({ asset_id, total_borrow, total_deposit, price, decimals }) => { - // const multiplier = price/10 **decimals - // total_borrow = total_borrow * multiplier - // total_deposit = total_deposit * multiplier - // const balance = isBorrows ? total_borrow : total_deposit - total_borrow - // api.addUSDValue(balance) - const balance = isBorrows ? total_borrow : total_deposit - total_borrow - api.add(asset_id, balance) - }) - return sumTokens2({ api }) -} - -module.exports = { - timetravel: false, - chromia: { - tvl: (api) => tvl(api, false), - borrowed: (api) => tvl(api, true), - }, -} \ No newline at end of file diff --git a/projects/udonswap/index.js b/projects/udonswap/index.js deleted file mode 100644 index aa59ff997d9..00000000000 --- a/projects/udonswap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: "TVL is calculated by summing the reserves of all DEX pairs on KUB.", - bitkub: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ - factory: '0xe8150dCfe6De2c7EFc2e9f96C09d6b83106Af1dE', - useDefaultCoreAssets: true, - fetchBalances: true, - }), - getUniTVL({ - factory: '0x18c7a4CA020A0c648976208dF2e3AE1BAA32e8d1', - useDefaultCoreAssets: true, - fetchBalances: true, - }), - ]) - }, -}; diff --git a/projects/ufarm-digital/index.js b/projects/ufarm-digital/index.js deleted file mode 100644 index f850940cc6a..00000000000 --- a/projects/ufarm-digital/index.js +++ /dev/null @@ -1,48 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache') - -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const config = { - arbitrum: { - fromBlock: 211275856, - ufarmCore: '0x46Df84E70deDB8a17eA859F1B07B00FB83b8a81F', - valueToken: ADDRESSES.arbitrum.USDT, - endpoint: 'https://api.ufarm.digital/api/v1/pool?limit=500', - blacklistedTokens: ['0xc36442b4a4522e871399cd717abdd847ab11fe88'], // uni v3 NFT - }, -} - -module.exports = { - methodology: 'Counts the AUM of all pools registered in the UFarm Protocol', -} - -Object.keys(config).forEach(chain => { - const { ufarmCore, valueToken, fromBlock, endpoint } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const { data } = await getConfig('ufarm-digital/' + api.chain, endpoint) - const ownerTokens = data - .map(i => [i.assetAllocation?.map(a => a.asset) || [], i.poolAddress]) - .filter(([assets, poolAddress]) => assets.length > 0 && !!poolAddress); - - return sumTokens2({ api, ownerTokens, resolveLP: true, resolveUniV3: true, owners: ownerTokens.map(i => i[1]), permitFailure: true }) - - /* const logs = await getLogs2({ - api, - factory: ufarmCore, - eventAbi: 'event FundCreated(bytes32 indexed,uint256,address fund)', - fromBlock, - }) - const funds = logs.map(log => log.fund) - const pools = (await Promise.all(funds.map(fund => getLogs2({ - api, - factory: fund, - eventAbi: 'event PoolCreated(string,string,uint256,uint256,uint256,uint256,uint256,uint256,address pool,address)', - fromBlock, - })))).flat().map(i => i.pool) - const values = await api.multiCall({ abi: 'uint256:getTotalCost', calls: pools}) - api.addTokens(valueToken, values) */ - } - } -}) diff --git a/projects/ultra/index.js b/projects/ultra/index.js deleted file mode 100644 index 0c953a4db9b..00000000000 --- a/projects/ultra/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const stakingContract = "0x69dC0B62b73B596Ced10710f799ECD6CBBC032f5"; -const ULTRA_WBNB_CakeLP = "0x48bAc97D5E3116626A56704BE7399E1Cb593A945"; -const ULTRA = "0x0b3f42481c228f70756dbfa0309d3ddc2a5e0f6a"; - -module.exports = { - misrepresentedTokens: true, - bsc: { - staking: staking(stakingContract, ULTRA), - pool2: pool2(stakingContract, ULTRA_WBNB_CakeLP), - tvl: (async) => ({}), - }, - methodology: "Counts liquidty on the staking and pool2 only", -}; diff --git a/projects/ultrasolid-v2/index.js b/projects/ultrasolid-v2/index.js deleted file mode 100644 index 356b8ebb9e5..00000000000 --- a/projects/ultrasolid-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require("../helper/unknownTokens"); -module.exports = uniTvlExports({ - hyperliquid: "0x2658665492d0394E86d50d55050453127A28C09b", -}); diff --git a/projects/ultrasolid-v3/index.js b/projects/ultrasolid-v3/index.js deleted file mode 100644 index 400a141dba0..00000000000 --- a/projects/ultrasolid-v3/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - hyperliquid: { factory: '0xD883a0B7889475d362CEA8fDf588266a3da554A1', fromBlock: 10742640 }, -}) diff --git a/projects/ultronStakingHub/index.js b/projects/ultronStakingHub/index.js deleted file mode 100644 index d34f9b7950a..00000000000 --- a/projects/ultronStakingHub/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/unknownTokens') - - -module.exports = { - misrepresentedTokens: true, - ultron: { - tvl: () => ({}), - staking: staking({ - owner: '0x60768787077a8411d8f626ce35333fa3f02be602', - tokens: [ADDRESSES.ultron.wULX], - chain: 'ultron' - }) - } -}; diff --git a/projects/ultronSwap/index.js b/projects/ultronSwap/index.js deleted file mode 100644 index 163c65779ab..00000000000 --- a/projects/ultronSwap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL, staking } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ultron: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xe1F0D4a5123Fd0834Be805d84520DFDCd8CF00b7', - }), - staking: staking({ - owner: '0xf26E50c26Ed51AbeC4078380Ed1F13440011F2A1', - tokens: [ADDRESSES.ultron.wULX], - }) - } -}; \ No newline at end of file diff --git a/projects/ulysses/index.js b/projects/ulysses/index.js deleted file mode 100644 index 405967d523f..00000000000 --- a/projects/ulysses/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') - -const wS = ADDRESSES.sonic.wS - -const defaultPort = '0x0000151d008235A6cC00004F00FA2bDF9dF95400' -const ports = { - arbitrum: '0x79f4b04FFCa54BC946aa0ef8E33eE723467f0192', - ethereum: undefined, - optimism: undefined, - base: undefined, - polygon: undefined, - avax: undefined, - bsc: undefined, -} - -Object.keys(ports).forEach(chain => module.exports[chain] = { tvl: sumTokensExport({ owner: ports[chain] ?? defaultPort, fetchCoValentTokens: true }) }) - -const chainsWithoutCovalentSupport = { - metis: { tokens: Object.values(ADDRESSES.metis).concat([ADDRESSES.null]) }, - sonic: { tokens: Object.values(ADDRESSES.sonic).concat([ - ADDRESSES.null, - wS, - "0x4D85bA8c3918359c78Ed09581E5bc7578ba932ba", - "0x455d5f11Fea33A8fa9D3e285930b478B6bF85265", - "0xE51EE9868C1f0d6cd968A8B8C8376Dc2991BFE44", - "0x9fDbC3f8Abc05Fa8f3Ad3C17D2F806c1230c4564", - "0x79bbF4508B1391af3A0F4B30bb5FC4aa9ab0E07C", - ADDRESSES.sonic.STS, - ADDRESSES.sonic.wS - ]) - } -} - -Object.keys(chainsWithoutCovalentSupport).forEach(chain => { - const { tokens, port = defaultPort } = chainsWithoutCovalentSupport[chain] - module.exports[chain] = { tvl: sumTokensExport({ owner: port, tokens }) -} }) diff --git a/projects/uma/abi.json b/projects/uma/abi.json deleted file mode 100644 index 2fde3e235d3..00000000000 --- a/projects/uma/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "collateralCurrency": "address:collateralCurrency", - "collateralToken": "address:collateralToken", - "l1Token": "address:l1Token", - "balanceOf": "uint256:balanceOf" -} \ No newline at end of file diff --git a/projects/uma/index.js b/projects/uma/index.js deleted file mode 100644 index 87729ecf1e9..00000000000 --- a/projects/uma/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - ethereum: { - lspCreators: [ - "0x0b8de441B26E36f461b2748919ed71f50593A67b", - "0x60F3f5DDE708D097B7F092EFaB2E085AC0a82F42", - "0x31C893843685f1255A26502eaB5379A3518Aa5a9", - "0x9504b4ab8cd743b06074757d3B1bE3a3aF9cea10", - "0x439a990f83250FE2E5E6b8059F540af1dA1Ba04D", - ], - empCreators: [ - "0xad8fD1f418FB860A383c9D4647880af7f043Ef39", - "0x9A077D4fCf7B26a0514Baa4cff0B481e9c35CE87", - "0xddfC7E3B4531158acf4C7a5d2c3cB0eE81d018A5", - ], - fromBlock: 9937650, - }, - polygon: { - lspCreators: [ - "0x3e665D15425fAee14eEF53B9caaa0762b243911a", - "0x62410e96a2ceB4d66824346e3264d1D9107a0aBE", - "0x5Fd7FFF20Ee851cD7bEE72fB3C6d324e4C104c9f", - "0x4FbA8542080Ffb82a12E3b596125B1B02d213424", - ], - fromBlock: 16241492, - }, - boba: { - lspCreators: [ - "0xC064b1FE8CE7138dA4C07BfCA1F8EEd922D41f68", - ], - fromBlock: 291475, - }, -} - -Object.keys(config).forEach(chain => { - const { lspCreators, empCreators = [], fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let empPools = [] - let lspPools = [] - - for (const factory of empCreators) { - const logs = await getLogs2({ api, factory, eventAbi: 'event CreatedExpiringMultiParty (address indexed expiringMultiPartyAddress, address indexed deployerAddress)', fromBlock, }) - empPools = empPools.concat(logs.map(log => log.expiringMultiPartyAddress)) - } - - for (const factory of lspCreators) { - const logs = await getLogs2({ api, factory, eventAbi: 'event CreatedLongShortPair (address indexed longShortPair, address indexed deployerAddress, address longToken, address shortToken)', fromBlock, }) - lspPools = lspPools.concat(logs.map(log => log.longShortPair)) - } - - const empTokens = await api.multiCall({ abi: 'address:collateralCurrency', calls: empPools }) - const lspTokens = await api.multiCall({ abi: 'address:collateralToken', calls: lspPools }) - - await api.sumTokens({ tokensAndOwners2: [empTokens.concat(lspTokens), empPools.concat(lspPools)], }) - } - } -}) diff --git a/projects/umamifinance/index.js b/projects/umamifinance/index.js deleted file mode 100644 index 6fea46d9b16..00000000000 --- a/projects/umamifinance/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { sumERC4626VaultsExport } = require("../helper/erc4626"); - -const UMAMI = "0x1622bf67e6e5747b81866fe0b85178a93c7f86e3"; -// UMAMI staking for protocol revenue in WETH -const mUMAMI = "0x2adabd6e8ce3e82f52d9998a7f64a90d294a92a4"; -// UMAMI staking from when it was still ohm fork with rebasing mechanics. -// There's still some staked tokens that are yet not unstaked and migrated. -const OHM_STAKING_sUMAMI = "0xc9ecFeF2fac1E38b951B8C5f59294a8366Dfbd81"; - -// glp vaults are now deprecated as well -const glpVaults = [ - "0x2e2153fd13459eba1f277ab9acd624f045d676ce", - "0x727eD4eF04bB2a96Ec77e44C1a91dbB01B605e42", - "0xbb84D79159D6bBE1DE148Dc82640CaA677e06126", - "0x6a89FaF99587a12E6bB0351F2fA9006c6Cd12257", - "0xe0A21a475f8DA0ee7FA5af8C1809D8AC5257607d", - "0x37c0705A65948EA5e0Ae1aDd13552BCaD7711A23", -] - -const gmVaultsArbitrum = [ - "0x959f3807f0Aa7921E18c78B00B2819ba91E52FeF", // gmUSDC - "0x4bCA8D73561aaEee2D3a584b9F4665310de1dD69", // gmWETH - "0x5f851F67D24419982EcD7b7765deFD64fBb50a97", // BTC gmUSDC - "0xcd8011AaB161A75058eAb24e0965BAb0b918aF29", // gmWBTC -]; - -const gmVaultsAvax = [ - "0x4f3274C3889e6cD54C9c739757Ab8EA4b246D76b", // WETH gmUSDC - "0xFCE0A462585A422Bac0ca443B102D0ac1Ff20f9e", // gmWETH -]; - -module.exports = { - doublecounted: true, - start: '2022-07-05', // UMAMI deployment block ts - arbitrum: { - staking: stakings([mUMAMI, OHM_STAKING_sUMAMI], UMAMI), - tvl: sumERC4626VaultsExport({ vaults: glpVaults.concat(gmVaultsArbitrum), isOG4626: true, permitFailure: true }), - }, - avax: { - tvl: sumERC4626VaultsExport({ vaults:gmVaultsAvax, isOG4626: true, permitFailure: true }), - } -} diff --git a/projects/umbra/idls/amm_v3.json b/projects/umbra/idls/amm_v3.json deleted file mode 100644 index a61f6b5d9ea..00000000000 --- a/projects/umbra/idls/amm_v3.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "address": "CLMMjQ8usCDmeP2hZFc6Mhih7JFbjg6mHeRxeEtTWHNf", - "metadata": { - "name": "amm_v3", - "version": "0.1.0", - "spec": "0.1.0", - "description": "Anchor client and source for Umbra concentrated liquidity market maker" - }, - "instructions": [], - "accounts": [{"name": "PoolState", "discriminator": [247, 237, 227, 245, 215, 195, 222, 70]}], - "events": [], - "errors": [], - "types": [ - { - "name": "PoolState", - "docs": ["The pool state", "", "PDA of `[POOL_SEED, config, token_mint_0, token_mint_1]`", ""], - "serialization": "bytemuckunsafe", - "repr": {"kind": "c", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "bump", "docs": ["Bump to identify PDA"], "type": {"array": ["u8", 1]}}, - {"name": "amm_config", "type": "pubkey"}, - {"name": "owner", "type": "pubkey"}, - {"name": "token_mint_0", "docs": ["Token pair of the pool, where token_mint_0 address < token_mint_1 address"], "type": "pubkey"}, - {"name": "token_mint_1", "type": "pubkey"}, - {"name": "token_vault_0", "docs": ["Token pair vault"], "type": "pubkey"}, - {"name": "token_vault_1", "type": "pubkey"}, - {"name": "observation_key", "docs": ["observation account key"], "type": "pubkey"}, - {"name": "mint_decimals_0", "docs": ["mint0 and mint1 decimals"], "type": "u8"}, - {"name": "mint_decimals_1", "type": "u8"}, - {"name": "tick_spacing", "docs": ["The minimum number of ticks between initialized ticks"], "type": "u16"}, - {"name": "liquidity", "docs": ["The currently in range liquidity available to the pool."], "type": "u128"}, - {"name": "sqrt_price_x64", "docs": ["The current price of the pool as a sqrt(token_1/token_0) Q64.64 value"], "type": "u128"}, - {"name": "tick_current", "docs": ["The current tick of the pool, i.e. according to the last tick transition that was run."], "type": "i32"}, - {"name": "padding3", "type": "u16"}, - {"name": "padding4", "type": "u16"}, - { - "name": "fee_growth_global_0_x64", - "docs": [ - "The fee growth as a Q64.64 number, i.e. fees of token_0 and token_1 collected per", - "unit of liquidity for the entire life of the pool." - ], - "type": "u128" - }, - {"name": "fee_growth_global_1_x64", "type": "u128"}, - {"name": "protocol_fees_token_0", "docs": ["The amounts of token_0 and token_1 that are owed to the protocol."], "type": "u64"}, - {"name": "protocol_fees_token_1", "type": "u64"}, - {"name": "swap_in_amount_token_0", "docs": ["The amounts in and out of swap token_0 and token_1"], "type": "u128"}, - {"name": "swap_out_amount_token_1", "type": "u128"}, - {"name": "swap_in_amount_token_1", "type": "u128"}, - {"name": "swap_out_amount_token_0", "type": "u128"}, - { - "name": "status", - "docs": [ - "Bitwise representation of the state of the pool", - "bit0, 1: disable open position and increase liquidity, 0: normal", - "bit1, 1: disable decrease liquidity, 0: normal", - "bit2, 1: disable collect fee, 0: normal", - "bit3, 1: disable collect reward, 0: normal", - "bit4, 1: disable swap, 0: normal" - ], - "type": "u8" - }, - {"name": "padding", "docs": ["Leave blank for future use"], "type": {"array": ["u8", 7]}}, - {"name": "reward_infos", "type": {"array": [{"defined": {"name": "RewardInfo"}}, 3]}}, - {"name": "tick_array_bitmap", "docs": ["Packed initialized tick array state"], "type": {"array": ["u64", 16]}}, - {"name": "total_fees_token_0", "docs": ["except protocol_fee and fund_fee"], "type": "u64"}, - {"name": "total_fees_claimed_token_0", "docs": ["except protocol_fee and fund_fee"], "type": "u64"}, - {"name": "total_fees_token_1", "type": "u64"}, - {"name": "total_fees_claimed_token_1", "type": "u64"}, - {"name": "fund_fees_token_0", "type": "u64"}, - {"name": "fund_fees_token_1", "type": "u64"}, - {"name": "open_time", "type": "u64"}, - {"name": "recent_epoch", "type": "u64"}, - {"name": "padding1", "type": {"array": ["u64", 24]}}, - {"name": "padding2", "type": {"array": ["u64", 32]}} - ] - } - }, - { - "name": "RewardInfo", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "reward_state", "docs": ["Reward state"], "type": "u8"}, - {"name": "open_time", "docs": ["Reward open time"], "type": "u64"}, - {"name": "end_time", "docs": ["Reward end time"], "type": "u64"}, - {"name": "last_update_time", "docs": ["Reward last update time"], "type": "u64"}, - { - "name": "emissions_per_second_x64", - "docs": ["Q64.64 number indicates how many tokens per second are earned per unit of liquidity."], - "type": "u128" - }, - {"name": "reward_total_emissioned", "docs": ["The total amount of reward emissioned"], "type": "u64"}, - {"name": "reward_claimed", "docs": ["The total amount of claimed reward"], "type": "u64"}, - {"name": "token_mint", "docs": ["Reward token mint."], "type": "pubkey"}, - {"name": "token_vault", "docs": ["Reward vault token account."], "type": "pubkey"}, - {"name": "authority", "docs": ["The owner that has permission to set reward param"], "type": "pubkey"}, - { - "name": "reward_growth_global_x64", - "docs": ["Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward", "emissions were turned on."], - "type": "u128" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/umbra/idls/umbra_amm.json b/projects/umbra/idls/umbra_amm.json deleted file mode 100644 index 10207b68cad..00000000000 --- a/projects/umbra/idls/umbra_amm.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "address": "CPMMQoayoCZGUq4wQRxrPBNrrExU6PLg1eEAXC83KDzv", - "metadata": {"name": "umbra_amm", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [{"name": "poolState", "discriminator": [247, 237, 227, 245, 215, 195, 222, 70]}], - "events": [], - "errors": [], - "types": [ - { - "name": "poolState", - "serialization": "bytemuckunsafe", - "repr": {"kind": "rust", "packed": true}, - "type": { - "kind": "struct", - "fields": [ - {"name": "amm_config", "docs": ["Which config the pool belongs"], "type": "pubkey"}, - {"name": "pool_creator", "docs": ["pool creator"], "type": "pubkey"}, - {"name": "token_0_vault", "docs": ["Token A"], "type": "pubkey"}, - {"name": "token_1_vault", "docs": ["Token B"], "type": "pubkey"}, - { - "name": "lp_mint", - "docs": ["Pool tokens are issued when A or B tokens are deposited.", "Pool tokens can be withdrawn back to the original A or B token."], - "type": "pubkey" - }, - {"name": "token_0_mint", "docs": ["Mint information for token A"], "type": "pubkey"}, - {"name": "token_1_mint", "docs": ["Mint information for token B"], "type": "pubkey"}, - {"name": "token_0_program", "docs": ["token_0 program"], "type": "pubkey"}, - {"name": "token_1_program", "docs": ["token_1 program"], "type": "pubkey"}, - {"name": "observation_key", "docs": ["observation account to store oracle data"], "type": "pubkey"}, - {"name": "auth_bump", "type": "u8"}, - { - "name": "status", - "docs": [ - "Bitwise representation of the state of the pool", - "bit0, 1: disable deposit(vaule is 1), 0: normal", - "bit1, 1: disable withdraw(vaule is 2), 0: normal", - "bit2, 1: disable swap(vaule is 4), 0: normal" - ], - "type": "u8" - }, - {"name": "lp_mint_decimals", "type": "u8"}, - {"name": "mint_0_decimals", "docs": ["mint0 and mint1 decimals"], "type": "u8"}, - {"name": "mint_1_decimals", "type": "u8"}, - {"name": "lp_supply", "docs": ["True circulating supply without burns and lock ups"], "type": "u64"}, - {"name": "protocol_fees_token_0", "docs": ["The amounts of token_0 and token_1 that are owed to the liquidity provider."], "type": "u64"}, - {"name": "protocol_fees_token_1", "type": "u64"}, - {"name": "fund_fees_token_0", "type": "u64"}, - {"name": "fund_fees_token_1", "type": "u64"}, - {"name": "open_time", "docs": ["The timestamp allowed for swap in the pool."], "type": "u64"}, - {"name": "recent_epoch", "docs": ["recent epoch"], "type": "u64"}, - {"name": "padding", "docs": ["padding for future updates"], "type": {"array": ["u64", 31]}} - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/umbra/index.js b/projects/umbra/index.js deleted file mode 100644 index 8076e54e7f8..00000000000 --- a/projects/umbra/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { Program } = require("@coral-xyz/anchor"); -const { getProvider, sumTokens2 } = require('../helper/solana') - -const UmbraAmmIDL = require("./idls/umbra_amm.json"); -const AmmV3IDL = require("./idls/amm_v3.json"); - -module.exports = { - timetravel: false, - methodology:"Get USD value of the TVL from the API", - eclipse: { - tvl: tvlOnChain, - }, -}; - -async function processTvlOnChainCpmm(api) { - const provider = getProvider("eclipse") - const cpmmProgram = new Program(UmbraAmmIDL, provider) - - const cpmmPoolStates = await cpmmProgram.account.poolState.all() - - const tokenAccounts = cpmmPoolStates.map(({ account: { token0Vault, token1Vault }}) => ([token0Vault, token1Vault,])).flat() - - return sumTokens2({ tokenAccounts, api }) -} - -async function processTvlOnChainClmm(api) { - const provider = getProvider("eclipse") - const clmmProgram = new Program(AmmV3IDL, provider) - - const clmmPoolStates = await clmmProgram.account.poolState.all() - - const tokenAccounts = clmmPoolStates.map(({ account: { tokenVault0, tokenVault1 }}) => ([tokenVault0, tokenVault1,])).flat() - - return sumTokens2({ tokenAccounts, api }) -} - -async function tvlOnChain(api) { - await processTvlOnChainCpmm(api) - await processTvlOnChainClmm(api) -} diff --git a/projects/umbrella/index.js b/projects/umbrella/index.js deleted file mode 100644 index 6d3eddcaa28..00000000000 --- a/projects/umbrella/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const UMB_eth = "0x6fC13EACE26590B80cCCAB1ba5d51890577D83B2"; -const UMB_WETH_UNIV2 = "0xB1BbeEa2dA2905E6B0A30203aEf55c399C53D042"; - - -const UMB_bsc = "0x846F52020749715F02AEf25b5d1d65e48945649D"; -const UMB_WBNB_PCSV2 = "0xFfD8eEFb9F0Ba3C60282fd3E6567A2C78C994266"; - -const ethPools = [ - '0xDa9A63D77406faa09d265413F4E128B54b5057e0', '0x5A2697C772d6062Eb2005e84547Ec4a36cCb3B52', '0x2d9D79B3189377449aB2AA4bBD2cd2651e0b85BE', -]; - -const ethLpPools = [ - '0x885EbCF6C2918BEE4A2591dce76da70e724f9a8E', '0xa67cbdAd80C34e50F5DE96730f658910f52b2F8c', '0xB67D91E38fbA6CfCb693d3f4598F8bd1e6e68AE3', -]; - -const bscPools = [ - '0x1541A01c407dCf88f32659D2C4A21Bb5763Fd2B4', '0x53Fa13Fa6c803d5fF6bDAe06bf6Bc12EdF1e343d', '0x55881395d209397b0c00bCeBd88abC1386f7aBe7', -]; - -const bscLpPools = [ - '0x8c7e186ce08F1f2585193b1c10799F42966BD7FF', '0xdCbcDb9bFAD7B0A08306aF10Aa11c3c3b6470921', '0x6Ff6B943D20B611E81a581c1E7951A6Dc0AC3455', -]; - - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(ethPools, UMB_eth), - pool2: pool2(ethLpPools, UMB_WETH_UNIV2), - }, - bsc: { - staking: staking(bscPools, UMB_bsc,), - pool2: pool2(bscLpPools, UMB_WBNB_PCSV2,), - }, - methodology: "Counts liquidty on the staking pools (v1, v2 and v3) on Eth and BSC (https://staking.umb.network/)", -}; \ No newline at end of file diff --git a/projects/umbria/abi.json b/projects/umbria/abi.json deleted file mode 100644 index a3f8771ea5b..00000000000 --- a/projects/umbria/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 rewardPerShare)" -} \ No newline at end of file diff --git a/projects/umbria/index.js b/projects/umbria/index.js deleted file mode 100644 index 4183be34eaa..00000000000 --- a/projects/umbria/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { staking } = require('../helper/staking') -const { pool2 } = require('../helper/pool2') - -module.exports = { - ethereum: { - tvl: () => ({}), - pool2: pool2('0xdF9401225cC62d474C559E9c4558Fb193137bCEB', '0xA76aE94659B6B53c5e85D37fBDd36aDCb7635b23'), - staking: staking('0xdF9401225cC62d474C559E9c4558Fb193137bCEB', '0xa4bbe66f151b22b167127c770016b15ff97dd35c'), - }, - polygon: { - tvl: () => ({}), - pool2: pool2('0x3756a26De28d6981075a2CD793F89e4Dc5A0dE04', '0x9c8c16cd2a7a695ae30920ee4c3f558893665c55'), - staking: staking('0x3756a26De28d6981075a2CD793F89e4Dc5A0dE04', '0x2e4b0fb46a46c90cb410fe676f24e466753b469f'), - }, -} \ No newline at end of file diff --git a/projects/umee/index.js b/projects/umee/index.js deleted file mode 100644 index f377cfecec5..00000000000 --- a/projects/umee/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { aaveV2Export } = require("../helper/aave"); -const { queryV1Beta1 } = require("../helper/chain/cosmos"); - -let data; - -async function getData() { - if (!data) data = _getData() - return data - async function _getData() { - const { registry } = await queryV1Beta1({ url: '/leverage/v1/registered_tokens', chain: 'umee'}) - return Promise.all(registry.map(async i => { - const res = await queryV1Beta1({ url: '/leverage/v1/market_summary?denom='+i.base_denom, chain: 'umee'}) - return { - base_denom: i.base_denom, - borrowed: parseInt(res.borrowed), - supplied: parseInt(res.supplied), - exponent: parseInt(i.exponent), - } - })) - } -} - -async function tvl(api) { - const data = await getData(); - data.forEach((i) => - api.add(i.base_denom, i.supplied - i.borrowed) - ); -} - -async function borrowed(api) { - const data = await getData(); - data.forEach((i) => - api.add(i.base_denom, i.borrowed) - ); -} - -module.exports = { - timetravel: false, - methodology: "Total supplied assets - total borrowed assets", - umee: { - tvl, - borrowed, - }, - ethereum: aaveV2Export('0xe296db0a0e9a225202717e9812bf29ca4f333ba6', { fromBlock: 14216544, }), -}; diff --git a/projects/umoja-ybtc/index.js b/projects/umoja-ybtc/index.js deleted file mode 100644 index 4a8c9bdeda2..00000000000 --- a/projects/umoja-ybtc/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const yBTC = { - arbitrum: "0xba3e932310cd1dbf5bd13079bd3d6bae4570886f", - base: "0xB7EcE25d412210499C35A9525FF01553E39A2927", -}; - -//BASIS TRADING, BTC COLLECTOR WALLET IS bc1qmus43e5gascs00t7jsf02k7gllhc5antew6n5y -module.exports = { - arbitrum: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: yBTC.arbitrum }) - api.add(yBTC.arbitrum, supply) - }, - }, - base: { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: yBTC.base }) - api.add(yBTC.base, supply) - }, - } -} \ No newline at end of file diff --git a/projects/umoja/index.js b/projects/umoja/index.js deleted file mode 100644 index 12fd4a1b843..00000000000 --- a/projects/umoja/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const Address = require("../helper/coreAssets.json"); -const Http = require("../helper/http"); - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - arbitrum: { - tvl: async function (api) { - const data = await Http.get("https://api.protocol.umoja.xyz/tokens/tvl/d-llama"); - - for (const entry of data) - if (entry.currency == "USDC") api.add(Address.arbitrum.USDC_CIRCLE, entry.tvl * 1e6) - }, - staking: async (api) => { - const lockedUmoGov = await api.call({ abi: 'erc20:balanceOf', target: "0x16A500Aec6c37F84447ef04E66c57cfC6254cF92", params: "0x256F7b822594a1Bc5cB5a68f0A7d97C8F3F2711C" }) - api.add("0x16A500Aec6c37F84447ef04E66c57cfC6254cF92", lockedUmoGov) - }, - } -}; \ No newline at end of file diff --git a/projects/unagii.js b/projects/unagii.js deleted file mode 100644 index 5ace1a038ae..00000000000 --- a/projects/unagii.js +++ /dev/null @@ -1,29 +0,0 @@ -async function tvl(api) { - const vaults = [ - '0x4aD0b81f92B16624BBcF46FC0030cFBBf8d02376', - '0xBc5991cCd8cAcEba01edC44C2BB9832712c29cAB', - '0x178Bf8fD04b47D2De3eF3f6b3D112106375ad584', - '0x3aF5Ba94C29a8407785f5f6d90eF5d69a8EB2436', - '0x77607588222e01bf892a29Abab45796A2047fc7b', - ] - - const v2Vaults = [ - '0x634b0273D7060313FAA60f96705116c9DE50fA1f', - '0x49b09e7E434a3A4A924A3b640cBBA54bF93B5677', - '0xBF8734c5A7b3e6D88aa0110beBB37844AC043d0A', - '0x7F20551E082ba3E035F2890cBD1EC4E275b9C8C0', - '0xDe07f45688cb6CfAaC398c1485860e186D55996D', - ] - - const minters = await api.multiCall({ abi: "address:minter", calls: v2Vaults}) - vaults.push(...minters) - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults}) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults}) - api.add(tokens, bals) -} - -module.exports = { - ethereum: { - tvl - } -} \ No newline at end of file diff --git a/projects/unagiswap/index.js b/projects/unagiswap/index.js deleted file mode 100644 index a63b955a1ab..00000000000 --- a/projects/unagiswap/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const ADDRESSES = require('../helper/coreAssets.json') - - -const config = { - taiko: { dvmFactory: '0x6694eebf40924e04c952EA8F1626d19E7a656Bb7', fromBlock: 452910, dspFactory: '0xd0de7cA3298fff085E2cb82F8a861a0254256BA0', gspFactory: '0x2235bB894b7600F1a370fc595Ee5477999A30441', dppFactory: '0x297A4885a7da4AaeF340FABEd119e7a6E3f2BCe8', blacklistedTokens: [ - '0x5d5c8Aec46661f029A5136a4411C73647a5714a7', - '0xff12470a969Dd362EB6595FFB44C82c959Fe9ACc', - - ] }, - } - -Object.keys(config).forEach(chain => { - const { dvmFactory, fromBlock, dspFactory, gspFactory, dppFactory, blacklistedTokens, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - const funcs = []; - const builder = (factorys, event) => { - if (Array.isArray(factorys)) { - factorys.forEach(factory => funcs.push(addLogs(factory, event))); - } else { - funcs.push(addLogs(factorys, event)); - } - } - builder(dvmFactory, 'event NewDVM (address baseToken, address quoteToken, address creator, address pool)'); - builder(dspFactory, 'event NewDSP(address baseToken, address quoteToken, address creator, address pool)'); - builder(gspFactory, 'event NewGSP(address baseToken, address quoteToken, address creator, address pool)'); - builder(dppFactory, 'event NewDPP (address baseToken, address quoteToken, address creator, address pool)'); - - await Promise.all(funcs) - - return api.sumTokens({ ownerTokens, blacklistedTokens, permitFailure: true, }) - - async function addLogs(target, eventAbi) { - if (!target) return; - const convert = i => [[i.baseToken, i.quoteToken], i.pool] - let logs = await getLogs({ api, target, eventAbi, onlyArgs: true, fromBlock, }); - ownerTokens.push(...logs.map(convert)) - } - } - } -}) \ No newline at end of file diff --git a/projects/unamano/index.js b/projects/unamano/index.js deleted file mode 100644 index 18deb6ec41d..00000000000 --- a/projects/unamano/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const abis = { - poolInfo: "function poolInfo(uint256) view returns (address candyToken, uint256 startBlock, uint256 endBlock, uint256 lastRewardBlock, uint256 accPerShare, uint256 candyPerBlock, uint256 lpSupply, uint256 candyBalance, uint256 le12, tuple(address creator, uint256 unlockTime, uint256 maximumStaking, uint8 status, address multisignatureWallet, address assetManagementAddr) una)", - poolLength: "uint256:poolLength", -} - -module.exports = { - ethereum:{ - tvl: async (api) => { - const info = await api.fetchList({ lengthAbi: abis.poolLength, itemAbi: abis.poolInfo, target: '0x078aadff42c94b01f135b0ab1d4b794902c67c3f'}) - return sumTokens2({ api, tokens: [ADDRESSES.ethereum.STETH], owners: info.map(i => i.una.assetManagementAddr)}) - }, - }, -} diff --git a/projects/unbk/fantom-yields.js b/projects/unbk/fantom-yields.js deleted file mode 100644 index 580f6b8e40d..00000000000 --- a/projects/unbk/fantom-yields.js +++ /dev/null @@ -1,80 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - fyields: [ - { - yieldBearingAsset: ADDRESSES.fantom.MIM, //MIM - yieldProxy: "0xf730167FC2aF7a02db63d3e8CE54179A70Ea72b7", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: ADDRESSES.fantom.WFTM, //WFTM - yieldProxy: "0xa6Dd261D8801457d4B66a6b5C262E04931C36E99", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0x3129662808bEC728a27Ab6a6b9AFd3cBacA8A43c", //DOLA - yieldProxy: "0x444aC299f2260c1831cE55ddE26D4ea34A461760", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0xD02a30d33153877BC20e5721ee53DeDEE0422B2F", //g3crv (curve geist) - yieldProxy: "0x651287539ab8ddd905285467A40fCB6A9649F8C8", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: ADDRESSES.fantom.USDC, //USDC - yieldProxy: "0xc0Cf1846134D90CDA5eC8244fe8c992F7A96500F", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355", //FRAX - yieldProxy: "0xfAf8436D0096576354bCF0C057d01B4C7fd1bB8a", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: ADDRESSES.fantom.fUSDT, //fUSDT - yieldProxy: "0xD30303241c53097FEa1f6D75f4f0a77FEF22d435", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: ADDRESSES.fantom.DAI, //DAI - yieldProxy: "0xf58e5571FaEB95C703e0eBb4fDFC2eb7dB18FC53", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0x29b0Da86e484E1C0029B56e817912d778aC0EC69", //YFI - yieldProxy: "0x86eb4Cba4e1E023BF1eEa7A3B52A32098BA8Ee80", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8", //LINK - yieldProxy: "0x2CE7aAE997023737d631b7C41b5f7d7Fe76963e1", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: ADDRESSES.fantom.WBTC, //WBTC - yieldProxy: "0xAe708b0F1e131432a6491975c69758f57ccAEB9b", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0x74b23882a30290451A17c44f4F05243b6b58C76d", //WETH - yieldProxy: "0xC726d9090d77d479CC8E575Ed3a333bD9e5cADbB", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE", //BOO - yieldProxy: "0xfd2Dc038796318A661c97285d94298BFF6EA2F5A", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0x468003B688943977e6130F4F68F23aad939a1040", //SPELL - yieldProxy: "0x75bd4433c6e48F63B527AB14f5F3cb6D24cAfcfd", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - { - yieldBearingAsset: "0x1E4F97b9f9F913c46F1632781732927B9019C68b", //CRV - yieldProxy: "0xe1bfC887d0f0920d6E5E7b37E767427d45A47E6F", - router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", - }, - ], -}; diff --git a/projects/unbk/index.js b/projects/unbk/index.js deleted file mode 100644 index 01e7c60ab0f..00000000000 --- a/projects/unbk/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const {fyields} = require("./fantom-yields"); -const { routerAbi } = require("./router-abi"); - -async function tvl(api) { - const tokens = fyields.map(i => i.yieldBearingAsset) - const calls = fyields.map(i => ({ target: i.router, params: [i.yieldBearingAsset, i.yieldProxy] })) - const bals = await api.multiCall({ abi: routerAbi, calls }) - api.add(tokens, bals) -} - -module.exports = { - methodology: - "Accross different vaults, counts the total number of assets accumulated on each of them", - fantom: { - tvl, - }, -}; diff --git a/projects/unbk/router-abi.js b/projects/unbk/router-abi.js deleted file mode 100644 index 6533394b04d..00000000000 --- a/projects/unbk/router-abi.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - routerAbi: "function totalVaultBalance(address token, address account) view returns (uint256 balance)", -} \ No newline at end of file diff --git a/projects/unbound/index.js b/projects/unbound/index.js deleted file mode 100644 index fa320ce92aa..00000000000 --- a/projects/unbound/index.js +++ /dev/null @@ -1,84 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { GraphQLClient, gql } = require('graphql-request') -const { staking } = require("../helper/staking"); - - -const ETH_STAKING_ADDR = '0x94515758819F4D5119f75EEeB7F6bfdCAdc5e835' -const POLY_STAKING_ADDR = '0xAf12F8Ec3f8C711d15434B63f9d346224C1c4666' -const UNB_ETH = '0x8db253a1943dddf1af9bcf8706ac9a0ce939d922' -const UNB_POLY = '0xD81F558b71A5323e433729009D55159955F8A7f9' - - - -async function ethTvl() { - var endpoint = sdk.graph.modifyEndpoint('8hYGnnqzaQ98ikvhi9uZ5GRmYjd7C2ykopeNpbA3DXUh') - var graphQLClient = new GraphQLClient(endpoint) - - var query = gql` - { protocol(id: \"unbound\") { - id - } - vaults(first: 5) - { - id - tvl - } - } - `; - - var results = await graphQLClient.request(query) - let t = [] - - for (let i=0;i ({}) // bad debt diff --git a/projects/undeadfinance/index.js b/projects/undeadfinance/index.js deleted file mode 100644 index 4abbee42057..00000000000 --- a/projects/undeadfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'fantom', - masterchef: '0x18E84FEe58980473f6bEf65391e35eDC08C72af8', - nativeToken: '0x89dD4d82F4aF70df521A76A4f0997b5Dc571917E', -}) \ No newline at end of file diff --git a/projects/unfederalreserve/index.js b/projects/unfederalreserve/index.js deleted file mode 100644 index 4fce65cb1db..00000000000 --- a/projects/unfederalreserve/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports.deadFrom='2023-11-12' -module.exports.ethereum = compoundExports2({ comptroller: '0x3105D328c66d8d55092358cF595d54608178E9B5', cether: '0xFaCecE87e14B50eafc85C44C01702F5f485CA460' }) - -module.exports.ethereum.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/unibtc/index.js b/projects/unibtc/index.js deleted file mode 100644 index 447ab951ff7..00000000000 --- a/projects/unibtc/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const defaultVault = '0xF9775085d726E782E83585033B58606f7731AB18' -const extraVault = '0x84E5C854A7fF9F49c888d69DECa578D406C26800' - -const fbtc0 = ADDRESSES.bob.FBTC -const fbtc1 = '0xd681C5574b7F4E387B608ed9AF5F5Fc88662b37c' - -const config = { - ethereum: { - vault: '0x047D41F2544B7F63A8e991aF2068a363d210d6Da', - tokens: [ADDRESSES['ethereum'].WBTC, fbtc0, fbtc1] - }, - arbitrum: { - vault: extraVault, - tokens: [ADDRESSES['arbitrum'].WBTC] - }, - mode: { - vault: extraVault, - tokens: [ADDRESSES['mode'].WBTC] - }, - optimism: { - vault: defaultVault, - tokens: [ADDRESSES['optimism'].WBTC] - }, - mantle: { - vault: defaultVault, - tokens: [fbtc0, fbtc1] - }, - bob: { - vault: '0x2ac98DB41Cbd3172CB7B8FD8A8Ab3b91cFe45dCf', - tokens: [ADDRESSES['bob'].WBTC] - }, - zeta: { - vault: extraVault, - tokens: [ADDRESSES['zeta'].BTC] - }, - bsc: { - vault: extraVault, - tokens: [fbtc0, ADDRESSES['bsc'].BTCB] - }, - bsquared: { - vault: defaultVault, - tokens: [ADDRESSES.null,ADDRESSES['bsquared'].WBTC] - }, - merlin: { - vault: defaultVault, - tokens: [ADDRESSES.null,ADDRESSES['merlin'].WBTC,ADDRESSES['merlin'].WBTC_1] - }, - btr: { - vault: defaultVault, - tokens: [ADDRESSES.null, ADDRESSES['btr'].WBTC] - }, -} - -const tvl = (chainConfig) => { - return async (api) => { - return api.sumTokens({ tokens: chainConfig.tokens, owner: chainConfig.vault }) - } -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: tvl(config[chain]) - } -}) diff --git a/projects/unichain/index.js b/projects/unichain/index.js deleted file mode 100644 index 5ab4480d108..00000000000 --- a/projects/unichain/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x81014F44b0a345033bB2b3B21C7a1A308B35fEeA", - "0x0bd48f6B86a26D3a217d0Fa6FfE2B491B956A7a2", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/unicly/index.js b/projects/unicly/index.js deleted file mode 100644 index 2b72f3dd6d8..00000000000 --- a/projects/unicly/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - ethereum:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xbacc776b231c571a7e6ab7bc2c8a099e07153377', - }), - }, -} diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js deleted file mode 100644 index 1e1efbf65e7..00000000000 --- a/projects/unicrypt-v3/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getCoreAssets } = require('../helper/tokenMapping'); - -const config = { - ethereum: { - reserves: ['0x231278edd38b00b07fbd52120cef685b9baebcc1', '0x7f5c649856f900d15c83741f45ae46f5c6858234', '0xFD235968e65B0990584585763f837A5b5330e6DE'], - }, - arbitrum: { - reserves: ['0xfa104eb3925a27e6263e05acc88f2e983a890637', '0xcb8b00d4018ad6031e28a44bf74616014bfb62ec', '0x6b5360B419e0851b4b81644e0F63c1A9778f2506'], - }, - bsc: { - reserves: ['0x0D29598EC01fa03665feEAD91d4Fb423F393886c', '0xf1f7f21e2ea80ab110d0f95faa64655688341990', '0xfe88DAB083964C56429baa01F37eC2265AbF1557'], - }, - polygon: { - reserves: ['0xc22218406983bf88bb634bb4bf15fa4e0a1a8c84', '0xd8207e9449647a9668ad3f8ecb97a1f929f81fd1', '0x40f6301edb774e8B22ADC874f6cb17242BaEB8c4'], - }, - base: { - reserves: ['0xd6cd8fb001cbdae91f0af7a58a1602c945967d67', '0x231278edd38b00b07fbd52120cef685b9baebcc1'] - } -}; - -module.exports = { - misrepresentedTokens: true, -}; - -Object.keys(config).forEach(chain => { - const { reserves, } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - const uniV3WhitelistedTokens = await getCoreAssets(api.chain); - await sumTokens2({ api, owners: reserves, resolveUniV3: true, uniV3WhitelistedTokens, }); - return api.getBalancesV2().clone(2).getBalances() // we multiple core assets value by 2 as positions are spread between 0 - ∞ - }, - }; - });// diff --git a/projects/unicrypt/abis.js b/projects/unicrypt/abis.js deleted file mode 100644 index ff1c2097654..00000000000 --- a/projects/unicrypt/abis.js +++ /dev/null @@ -1,12 +0,0 @@ - -const getNumLockedTokens = "uint256:getNumLockedTokens" -const lockedTokensLength = "uint256:lockedTokensLength" -const getLockedTokenAtIndex = 'function getLockedTokenAtIndex(uint256 _index) view returns (address)' -const lockedToken = 'function lockedTokens(uint256) view returns (address)' - -module.exports = { - getLockedTokenAtIndex, - getNumLockedTokens, - lockedTokensLength, - lockedToken -} \ No newline at end of file diff --git a/projects/unicrypt/api.js b/projects/unicrypt/api.js deleted file mode 100644 index 047786b8e12..00000000000 --- a/projects/unicrypt/api.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const indexExports = require('./index') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("unicrypt", chainKeys), -} - -module.exports.bsc.pool2 = indexExports.bsc.pool2 -module.exports.ethereum.pool2 = indexExports.ethereum.pool2 -module.exports.ethereum.staking = indexExports.ethereum.staking -module.exports.xdai.pool2 = indexExports.xdai.pool2 diff --git a/projects/unicrypt/apiCache.js b/projects/unicrypt/apiCache.js deleted file mode 100644 index 91bc9d0189c..00000000000 --- a/projects/unicrypt/apiCache.js +++ /dev/null @@ -1,109 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { config, protocolPairs, tokens, stakingContracts, - ethereumContractData, baseContractData, bscContractData, polygonContractData, - avalancheContractData, gnosisContractData, arbitrumContractData, } = require('./config') -const { getCache, setCache, } = require("../helper/cache") -const { vestingHelper, } = require("../helper/unknownTokens") -const project = 'bulky/unicrypt' - -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); -const { getUniqueAddresses } = require('../helper/utils'); - -async function runInBatches(items, batchSize, fn) { - for (let i = 0; i < items.length; i += batchSize) { - await Promise.all(items.slice(i, i + batchSize).map(fn)) - } -} - -function tvl(contracts) { - return async function tvl(api) { - const balances = {} - const cache = await getCache(project, api.chain || { vaults: {} }) - - await Promise.all( - contracts.map(async (entry, idx) => { - const vault = entry.contract.toLowerCase() - if (!cache.vaults) cache.vaults = {} - if (!cache.vaults[vault]) cache.vaults[vault] = { tokens: [], lastTotalDepositId: 0 } - const cCache = cache.vaults[vault] - - const size = await api.call({ target: vault, abi: entry.getNumLockedTokensABI, }) - const calls = Array.from({ length: +size - cCache.lastTotalDepositId }, (_, i) => ({ target: vault, params: i + cCache.lastTotalDepositId })) - cCache.lastTotalDepositId = +size - - const tokens = await api.multiCall({ abi: entry.getLockedTokenAtIndexABI, calls, permitFailure: true }) - tokens.forEach(({ token } = {}) => token && cCache.tokens.push(token)) - cCache.tokens = getUniqueAddresses(cCache.tokens.filter(i => i)) - }) - ) - - await runInBatches(contracts, 5, async (entry) => { - const vault = entry.contract.toLowerCase() - const cCache = cache.vaults[vault] - - const blacklist = [...(entry.pool2 || [])] - if (api.chain === 'ethereum') blacklist.push('0x72E5390EDb7727E3d4e3436451DADafF675dBCC0') // HANU - - const balance = await vestingHelper({ - chain: api.chain, - block: api.block, - owner: vault, - useDefaultCoreAssets: true, - blacklist, - tokens: cCache.tokens, - cache, - }) - - Object.entries(balance).forEach(([token, bal]) => - sdk.util.sumSingleBalance(balances, token, bal) - ) - }) - - await setCache(project, api.chain, cache) - return balances - } -} - -module.exports = { - methodology: - `Counts each LP pair's native token and - stable balance, adjusted to reflect locked pair's value. - Balances and merged across multiple - locker and staking contracts to return sum TVL per chain`, - - ethereum: { - staking: stakings( - stakingContracts, - tokens.uncx_eth, - config.uniswapv2.chain - ), - tvl: tvl(ethereumContractData), - - pool2: pool2s([config.uniswapv2.locker, config.pol.locker], - [protocolPairs.uncx_WETH], - config.uniswapv2.chain) - }, - base: { - tvl: tvl(baseContractData) - }, - bsc: { - tvl: tvl(bscContractData), - - pool2: pool2s([config.pancakeswapv2.locker, config.pancakeswapv1.locker, config.safeswap.locker, - config.julswap.locker, config.biswap.locker], - [protocolPairs.uncx_BNB], config.pancakeswapv2.chain) - }, - polygon: { - tvl: tvl(polygonContractData) - }, - avax: { tvl: tvl(avalancheContractData) }, - arbitrum: { tvl: tvl(arbitrumContractData) }, - xdai: { - tvl: tvl(gnosisContractData), - pool2: pool2s([config.honeyswap.locker], - [protocolPairs.uncx_XDAI], - config.honeyswap.chain) - }, -} - diff --git a/projects/unicrypt/config.js b/projects/unicrypt/config.js deleted file mode 100644 index fb9ad32d896..00000000000 --- a/projects/unicrypt/config.js +++ /dev/null @@ -1,281 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// const { ethereum } = require(".") - -const { getNumLockedTokens, getLockedTokenAtIndex, - lockedTokensLength, lockedToken } = require('./abis') - - - const topics = { - v1: 'onDeposit(address,uint256,uint256)', - v2: 'onDeposit(address,address,uint256,uint256,uint256)' - } - - const protocolPairs = { - uncx_BNB: '0x489714d52d45d38d0f8d9182a2bd79f7fa8e767e', - uncx_WETH: '0xc70bb2736e218861dca818d1e9f7a1930fe61e5b', - uncx_XDAI: '0x40e93143cbc9e3a20fd3d4f3e6fb7ca9e778b571' - } - - const stakingContracts = [ - '0x887E81cab04461620A5fF196048Bba38d9Dc96e4', - '0x73f5876ECd9fAbF7d359Daf7Be7610B276641549', - '0xf4868E785457280dd48B10a02D8F03BBfD5B721f' - ] - - - const tokens = { - uncx_eth: '0xaDB2437e6F65682B85F814fBc12FeC0508A7B1D0', - weth: ADDRESSES.ethereum.WETH - } - - const governanceTokens = { // UNCX - bsc: ['0x09a6c44c3947b69e2b45f4d51b67e6a39acfb506'], - ethereum: ['0xadb2437e6f65682b85f814fbc12fec0508a7b1d0'], - polygon: ['0x9eecd634c7a934f752af0eb90dda9ecc262f199f'], - - } - -const config = { - uniswapv2: { - chain: "ethereum", - locker: "0x663a5c229c09b049e36dcc11a9b0d4a8eb9db214", - factory: "0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f", - startBlock: 11463946 - }, - pol: { - chain: "ethereum", - locker: "0x17e00383a843a9922bca3b280c0ade9f8ba48449", - factory: "0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f", - startBlock: 10503171 - }, - sushiswap: { - chain: "ethereum", - locker: '0xed9180976c2a4742c7a57354fd39d8bec6cbd8ab', - factory: "0xc0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac", - startBlock: 12010517 - }, - pancakeswapv2: { - chain: "bsc", - locker: "0xc765bddb93b0d1c1a88282ba0fa6b2d00e3e0c83", - factory: "0xca143ce32fe78f1f7019d7d551a6402fc5350c73", - startBlock: 6878262 - }, - pancakeswapv1: { - chain: 'bsc', - locker: '0xc8B839b9226965caf1d9fC1551588AaF553a7BE6', - factory: '0xbcfccbde45ce874adcb698cc183debcf17952812', - startBlock: 5155584 - }, - biswap: { - chain: 'bsc', - locker: '0x74dee1a3e2b83e1d1f144af2b741bbaffd7305e1', - factory: '0x858e3312ed3a876947ea49d572a7c42de08af7ee', - startBlock: 18251487 - }, - safeswap: { - chain: 'bsc', - locker: '0x1391b48c996ba2f4f38aee07e369a8f28d38220e', - factory: '0x86a859773cf6df9c8117f20b0b950ada84e7644d', - startBlock: 12508447 - }, - julswap: { - chain: 'bsc', - locker: '0x1f23742D882ace96baCE4658e0947cCCc07B6a75', - factory: '0x553990f2cba90272390f62c5bdb1681ffc899675', - startBlock: 5281114 - }, - babydogeswap: { - chain: 'bsc', - locker: '0xb89a15a4f3518c14c21be04b55546162b0cb39f0', - factory: '0x4693b62e5fc9c0a45f89d62e6300a03c85f43137', - startBlock: 22263319 - }, - quickswap: { - chain: 'polygon', - locker: '0xadb2437e6f65682b85f814fbc12fec0508a7b1d0', - factory: '0x5757371414417b8c6caad45baef941abc7d3ab32', - startBlock: 11936505 - }, - traderjoe: { - chain: 'avax', - locker: '0xa9f6aefa5d56db1205f36c34e6482a6d4979b3bb', - factory: '0x9ad6c38be94206ca50bb0d90783181662f0cfa10', - startBlock: 11933326 - }, - honeyswap: { - chain: 'xdai', - locker: '0xe3D32266974f1E8f8549cAf9F54977040e7D1c07', - factory: '0xa818b4f111ccac7aa31d0bcc0806d64f2e0737d7', - startBlock: 14476818 - }, - uniswapV2_base: { - chain: 'base', - locker: '0xc4E637D37113192F4F1F060DaEbD7758De7F4131', - factory: '0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6', - startBlock: 12110643 - }, - sushiswapV2_base: { - chain: 'base', - locker: '0xBeddF48499788607B4c2e704e9099561ab38Aae8', - factory: '0x71524B4f93c58fcbF659783284E38825f0622859', - startBlock: 10577634 - } -} - -const ethereumContractData = [ - { // Uniswap v2 - chain: config.uniswapv2.chain, - contract: config.uniswapv2.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_WETH], - factory: config.uniswapv2.factory - }, - { // Sushiswap - chain: config.sushiswap.chain, - contract: config.sushiswap.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_WETH], - factory: config.sushiswap.factory - }, - { // Uniswap v2 (mixed contract) - chain: config.pol.chain, - contract: config.pol.locker, - getNumLockedTokensABI: lockedTokensLength, - getLockedTokenAtIndexABI: lockedToken, - pool2: [protocolPairs.uncx_WETH], - isMixedTokenContract: true, - factory: config.pol.factory - } -] - -const baseContractData = [ - { // Uniswap v2 - chain: config.uniswapV2_base.chain, - contract: config.uniswapV2_base.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.uniswapV2_base.factory - }, - { // Sushiswap - chain: config.sushiswapV2_base.chain, - contract: config.sushiswapV2_base.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.sushiswapV2_base.factory - }, -] - -const bscContractData = [ - { // Pancakeswap v2 - chain: config.pancakeswapv2.chain, - contract: config.pancakeswapv2.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_BNB], - factory: config.pancakeswapv2.factory - }, - { // Pancakeswap v1 - chain: config.pancakeswapv1.chain, - contract: config.pancakeswapv1.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_BNB], - factory: config.pancakeswapv1.factory - }, - { // Safeswap v1 - chain: config.safeswap.chain, - contract: config.safeswap.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_BNB], - factory: config.safeswap.factory - }, - { // Julswap - chain: config.julswap.chain, - contract: config.julswap.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_BNB], - factory: config.julswap.factory - }, - { // Biswap - chain: config.biswap.chain, - contract: config.biswap.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_BNB], - factory: config.biswap.factory - }, - { // BabyDogeSwap - chain: config.babydogeswap.chain, - contract: config.babydogeswap.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_BNB], - factory: config.babydogeswap.factory - } -] - - -const polygonContractData = [ - { // Quickswap - chain: config.quickswap.chain, - contract: config.quickswap.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.quickswap.factory - }, -] - - -const avalancheContractData = [ - { // TraderJoe - chain: config.traderjoe.chain, - contract: config.traderjoe.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - factory: config.traderjoe.factory - }, - -] - -const gnosisContractData = [ - { // HoneySwap - chain: config.honeyswap.chain, - contract: config.honeyswap.locker, - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [protocolPairs.uncx_XDAI], - factory: config.honeyswap.factory - } - -] -const arbitrumContractData = [ - { - chain: 'arbitrum', - contract: '0x275720567E5955F5f2D53A7A1Ab8a0Fc643dE50E', - getNumLockedTokensABI: getNumLockedTokens, - getLockedTokenAtIndexABI: getLockedTokenAtIndex, - pool2: [], - } - -] - - -module.exports = { - baseContractData, - ethereumContractData, - bscContractData, - polygonContractData, - avalancheContractData, - gnosisContractData, - arbitrumContractData, - governanceTokens, - stakingContracts, - protocolPairs, - config, - topics, - tokens -} \ No newline at end of file diff --git a/projects/unicrypt/index.js b/projects/unicrypt/index.js deleted file mode 100644 index 3bce8bb712a..00000000000 --- a/projects/unicrypt/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./apiCache') \ No newline at end of file diff --git a/projects/uniderp/index.js b/projects/uniderp/index.js deleted file mode 100644 index b1f047c9e76..00000000000 --- a/projects/uniderp/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs2 } = require('../helper/cache/getLogs'); -const ADDRESSES = require('../helper/coreAssets.json') - -// from https://docs.uniswap.org/contracts/v4/deployments -const config = { - unichain: { - factory: "0x1F98400000000000000000000000000000000004", - uniderpHook: "0xcc2efb167503f2d7df0eae906600066aec9e8444", - fromBlock: 17670688, - supportedTokens: [ - ADDRESSES.null, // ETH - "0xbde8a5331e8ac4831cf8ea9e42e229219eafab97", // Wrapped SOL: https://uniscan.xyz/token/0xbde8a5331e8ac4831cf8ea9e42e229219eafab97 - "0x8f187aA05619a017077f5308904739877ce9eA21", // UNI: https://uniscan.xyz/token/0x8f187aA05619a017077f5308904739877ce9eA21 - ] - }, -} - -const eventAbi = "event Initialize(bytes32 indexed id, address indexed currency0, address indexed currency1, uint24 fee, int24 tickSpacing, address hooks, uint160 sqrtPriceX96, int24 tick)" - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, uniderpHook, supportedTokens } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi, fromBlock, }) - const tokenSet = new Set() - const ownerTokens = [] - logs.forEach(log => { - if (log.hooks.toLowerCase() === uniderpHook) { - if (supportedTokens.includes(log.currency0.toLowerCase())) { - tokenSet.add(log.currency1) - } else if (supportedTokens.includes(log.currency1.toLowerCase())) { - tokenSet.add(log.currency0) - } - } - }) - ownerTokens.push([Array.from(tokenSet), factory]) - return sumTokens2({ api, ownerTokens, permitFailure: true, }) - } - } -}) \ No newline at end of file diff --git a/projects/unidex/index.js b/projects/unidex/index.js deleted file mode 100644 index 9ab772064c5..00000000000 --- a/projects/unidex/index.js +++ /dev/null @@ -1,164 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') -//const molten = "0x031d35296154279dc1984dcd93e392b1f946737b"; - -async function FantomTvl(_time, _ethBlock, { fantom: block }) { - const contracts = { - "ftmPool": "0xBec7d4561037e657830F78b87e780AeE1d09Fc7B", - "usdcPool": "0x7A494C755911Ce06444C47248108439a06Ac028C", - "daiPool": "0xc451df1b05828519c014cb967ef1a614bd41834d", - }; - const usdc = ADDRESSES.fantom.USDC; - const dai = ADDRESSES.fantom.DAI; - const chain = 'fantom' - const tokens = [usdc, dai, nullAddress] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -async function ArbitrumTvl(_time, _ethBlock, { arbitrum: block }) { - const contracts = { - "ethPool": "0xdAF7D157F5c6E0F1d7917Ca02a7C185cEF81e6d0", - "usdcPool": "0x09E122453A079bc2Be621769ae7799e53dA0054E", - "daiPool": "0xb764729C6bEbd6E60E151F2c46aFce7D6Ff513fD", - "usdtPool": "0x9f6B9e253De52C5fD6c65283ff472b15520a7070", - "wbtcPool": "0xe736742Eb62F271c48F4a26168FD8F356AeE68db", - "arbPool": "0xF1Cb521C753e41906073eBEd30FE34BCB00845f8", - "mimPool": "0x266B30394da3D99a846dD30A2F7C50bb523c5dE1", - "gdaiPool": "0x7638Db20715c5AC09f52bE1E3a4DBb220680BdFd", - "ramPool": "0x914172b52262E867D8f2959D884e0ea73795B2c6", - "maiPool": "0xEfD0B28810dC3cdD88763f40DCc44462bb85Cf32", - "gmxPool": "0xDaa78E776D3788F9FBABDAc02aa6De45f7BC50C6", - "wstethPool": "0x53C6c525a635eF56Bce43d4523D90aACE551D81b", - "gnsPool": "0x13ff1aB07540b1681173003E361D046530506c11", - "capPool": "0x99DDb3E66A592579B9D46a47824042F62D690a9e", - "unshethPool": "0x5372Af9b4E9d4b9C016574Dad0f2406Dfe023D5F", - }; - const usdc = ADDRESSES.arbitrum.USDC; - const dai = ADDRESSES.optimism.DAI; - const usdt = ADDRESSES.arbitrum.USDT; - const wbtc = ADDRESSES.arbitrum.WBTC; - const arb = ADDRESSES.arbitrum.ARB; - const mim = ADDRESSES.arbitrum.MIM; - const gdai = "0xd85e038593d7a098614721eae955ec2022b9b91b"; - const ram = "0xaaa6c1e32c55a7bfa8066a6fae9b42650f262418"; - const mai = ADDRESSES.arbitrum.WSTETH; - const gmx = ADDRESSES.arbitrum.GMX; - const wsteth = ADDRESSES.arbitrum.WSTETH; - const gns = "0x18c11FD286C5EC11c3b683Caa813B77f5163A122"; - const cap = "0x031d35296154279dc1984dcd93e392b1f946737b"; - const unsheth = "0x0Ae38f7E10A43B5b2fB064B42a2f4514cbA909ef"; - - const chain = 'arbitrum' - const tokens = [usdc, dai, nullAddress, usdt, wbtc, arb, mim, gdai, ram, mai, gmx, wsteth, gns, cap, unsheth] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -async function BobaTvl(_time, _ethBlock, { boba: block }) { - const contracts = { - "ethpool": "0x9673B0E0F07e4a6da712F6847aE93C3F157DD509", - }; - const chain = 'boba' - const tokens = [nullAddress] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -async function BaseTvl(_time, _ethBlock, { base: block }) { - const contracts = { - "ethpool": "0x9Ba3db52BC401F4EF8ba23e56268C3AdE0290837", - }; - const chain = 'base' - const tokens = [nullAddress] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -async function EvmosTvl(_time, _ethBlock, { evmos: block }) { - const contracts = { - "stevmosPool": "0x21708707f03A19C3a4ea5E1a132B5cF96b86F294", - }; - const stevmos = ADDRESSES.evmos.STEVMOS; - const chain = 'evmos' - const tokens = [stevmos, nullAddress] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -async function MetisTvl(_time, _ethBlock, { metis: block }) { - const contracts = { - "metisPool": "0x9Ba3db52BC401F4EF8ba23e56268C3AdE0290837", - "wethPool": "0xb3D7D548dA38Dac2876Da57842a3cbaaf9a3bD96", - }; - const weth = ADDRESSES.metis.WETH; - const chain = 'metis' - const tokens = [weth, nullAddress] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -async function OpTvl(_time, _ethBlock, { optimism: block }) { - const contracts = { - "daiPool": "0xCdDF71750E596b4C38785afFEc3bd4C9bff43f6F", - "ethPool": "0x68A4cF26705B3cEaB49d1C99DE98F3Db28ee767E" - }; - const dai = ADDRESSES.optimism.DAI; - const chain = 'optimism' - const tokens = [dai, nullAddress] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -async function zkSyncTvl(_time, _ethBlock, { era: block }) { - const contracts = { - "usdcPool": "0xa41A6a4A04E711B53a82E594CeB525e89206627A", - }; - const usdc = ADDRESSES.era.USDC; - const chain = 'era' - const tokens = [usdc] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -async function BscTvl(_time, _ethBlock, { bsc: block }) { - const contracts = { - "busdPool": "0xa8D4bd632f394CED42BD439Bc34F09198072e519", - }; - const busd = ADDRESSES.bsc.BUSD; - const chain = 'bsc' - const tokens = [busd] - const owners = Object.values(contracts) - return sumTokens2({ chain, block, tokens, owners, }) -} - -module.exports = { - methodology: "Assets staked in the pool and trading contracts", - fantom: { - tvl: FantomTvl - }, - arbitrum: { - tvl: ArbitrumTvl - }, - base: { - tvl: BaseTvl - }, - boba: { - tvl: BobaTvl - }, - evmos: { - tvl: EvmosTvl - }, - metis: { - tvl: MetisTvl - }, - optimism: { - tvl: OpTvl - }, - era: { - tvl: zkSyncTvl - }, - bsc: { - tvl: BscTvl - }, -}; diff --git a/projects/unieth/index.js b/projects/unieth/index.js deleted file mode 100644 index ae2b55129bc..00000000000 --- a/projects/unieth/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping"); - -const UNIETH_TOKEN = '0xf1376bcef0f78459c0ed0ba5ddce976f1ddf51f4'; -const UNIETH_STAKING = "0x4beFa2aA9c305238AA3E0b5D17eB20C045269E9d"; - -async function tvl(api) { - const totalSupply = await api.call({ - abi: 'erc20:totalSupply', - target: UNIETH_TOKEN, - }); - - const exchangeRatio = await api.call({ - abi: 'function exchangeRatio() external view returns (uint256)', - target: UNIETH_STAKING, - }); - - api.add(nullAddress, totalSupply * exchangeRatio / 1e18) -} - -module.exports = { - start: '2022-09-29', - doublecounted: true, - methodology: 'Counts the total ethers staked with RockX Staking Contract.', - ethereum: { - tvl, - } -}; diff --git a/projects/unifarm/helper.js b/projects/unifarm/helper.js deleted file mode 100644 index aea24344882..00000000000 --- a/projects/unifarm/helper.js +++ /dev/null @@ -1,86 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const v1Data = require('./v1Data.json') - -const chainIds = { ethereum: 1, bsc: 56, polygon: 137, } -const chains = Object.keys(chainIds) - -async function getAllV1Data() { - return v1Data -} - -const liquidityContract = { - ethereum: "0xD13dF6B426358C2471bC6dea75167c3c106Ef881", - bsc: "0x7423Af05D11e7363cF5Ea5Ef2eA55c7E7AEA3f7a", - polygon: "0x62CEfDaDd37C8169034b2efD4401bc770B7B92D3", -}; - -const UFARM = { - ethereum: "0x40986a85b4cfcdb054a6cbfb1210194fee51af88", //Ufarm ethereum - bsc: "0x0a356f512f6fce740111ee04ab1699017a908680", // ufarm BSC - polygon: "0xa7305ae84519ff8be02484cda45834c4e7d13dd6", //ufarm Polygon - avax: "0xd60effed653f3f1b69047f2d2dc4e808a548767b", // ufarm avax -}; - -const ORO = { - ethereum: "0xc3eb2622190c57429aac3901808994443b64b466", // ethereum - bsc: "0x9f998d62B81AF019E3346AF141f90ccCD679825E", //BSC -}; - -const v2Query = ` -query MyQuery { - cohorts { - cohortVersion - numberOfFarms, - id, - tokens { - decimals - farmToken - fid - } - } -} -`; - -const v2EndPoints = { - ethereum: sdk.graph.modifyEndpoint('Cquw1hbmvNrSvUjaqoRhu9nWv7AX1Mz2gEb9sapYdMA5'), - polygon: sdk.graph.modifyEndpoint('Ami8CcwigwYViJsUrwqK8DWwDPtFVAKbeYfii6ANahax'), - bsc: sdk.graph.modifyEndpoint('EsA5LyABgi7ibZJGNr5PQsQ2L8QDPZxNdDvd5qPs5CJj'), -} - -const getV1Calls = async (chain) => { - const { pools } = (await getAllV1Data())[chain] - const calls = [] - for (const { cohort: { cohortAddress, tokens, proxies } } of pools) { - tokens.forEach(t => { - calls.push([t, cohortAddress]) - proxies.forEach(p => calls.push([t, p])) - }) - } - return calls -}; - -const getV2Calls = async (chain) => { - const { cohorts } = await cachedGraphQuery('unifarm/'+chain, v2EndPoints[chain], v2Query) - let calls = []; - for (let i = 0; i < cohorts.length; i++) { - const owner = cohorts[i].id - cohorts[i].tokens.forEach(i => calls.push([i.farmToken, owner])) - } - - return calls; -}; - -const createCallForSetu = (chain) => { - let calls = [[UFARM[chain], liquidityContract[chain]]]; - if (chain === "ethereum" || chain === "bsc") - calls.push([ORO[chain], liquidityContract[chain]]) - return calls; -}; - -module.exports = { - getV2Calls, - createCallForSetu, - chains, - getV1Calls, -}; diff --git a/projects/unifarm/index.js b/projects/unifarm/index.js deleted file mode 100644 index ec347888a9c..00000000000 --- a/projects/unifarm/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { - getV1Calls, - getV2Calls, - createCallForSetu, - chains, -} = require("./helper"); - -async function tvl(api) { - const tokensAndOwners = [] - tokensAndOwners.push(...await getV1Calls(api.chain)) - tokensAndOwners.push(...await getV2Calls(api.chain)) - tokensAndOwners.push(...await createCallForSetu(api.chain)) - return sumTokens2({ tokensAndOwners, api, resolveLP: true, }) -} - -module.exports = { - timetravel: false, - methodology: "We count tvl from the cohort contracts.", -}; - -chains.forEach(chain => { - module.exports[chain] = { - tvl - } -}) \ No newline at end of file diff --git a/projects/unifarm/v1Data.json b/projects/unifarm/v1Data.json deleted file mode 100644 index cbc012345ab..00000000000 --- a/projects/unifarm/v1Data.json +++ /dev/null @@ -1 +0,0 @@ -{"ethereum":{"pools":[{"cohort":{"cohortAddress":"0xE7058bF41230df7211a28958d517060d7d56BAF5","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xa0f5505dC06eBE8Ee8CbdC2059eaDE0b9F35cbC2","0x6bd361e10c1afed0d95259e7C0115f3A60e4ea99","0x3873965e73d9A21F88e645ce40B7db187FDE4931"]}},{"cohort":{"cohortAddress":"0xE7058bF41230df7211a28958d517060d7d56BAF5","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xa0f5505dC06eBE8Ee8CbdC2059eaDE0b9F35cbC2","0x6bd361e10c1afed0d95259e7C0115f3A60e4ea99","0x3873965e73d9A21F88e645ce40B7db187FDE4931"]}},{"cohort":{"cohortAddress":"0xE7058bF41230df7211a28958d517060d7d56BAF5","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xa0f5505dC06eBE8Ee8CbdC2059eaDE0b9F35cbC2","0x6bd361e10c1afed0d95259e7C0115f3A60e4ea99","0x3873965e73d9A21F88e645ce40B7db187FDE4931"]}},{"cohort":{"cohortAddress":"0xE7058bF41230df7211a28958d517060d7d56BAF5","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xa0f5505dC06eBE8Ee8CbdC2059eaDE0b9F35cbC2","0x6bd361e10c1afed0d95259e7C0115f3A60e4ea99","0x3873965e73d9A21F88e645ce40B7db187FDE4931"]}},{"cohort":{"cohortAddress":"0x7AfE6309fFdf5d5A6db8462d54bA737d73697a44","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xEB1112Ac78D537853150E2a07E8b765E29d3F019","0x817bbDbC3e8A1204f3691d14bB44992841e3dB35","0x1e05f68B29b286FB3BbAd3c688D7e2ABda549b80"]}},{"cohort":{"cohortAddress":"0x7AfE6309fFdf5d5A6db8462d54bA737d73697a44","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xEB1112Ac78D537853150E2a07E8b765E29d3F019","0x817bbDbC3e8A1204f3691d14bB44992841e3dB35","0x1e05f68B29b286FB3BbAd3c688D7e2ABda549b80"]}},{"cohort":{"cohortAddress":"0x7AfE6309fFdf5d5A6db8462d54bA737d73697a44","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xEB1112Ac78D537853150E2a07E8b765E29d3F019","0x817bbDbC3e8A1204f3691d14bB44992841e3dB35","0x1e05f68B29b286FB3BbAd3c688D7e2ABda549b80"]}},{"cohort":{"cohortAddress":"0x7AfE6309fFdf5d5A6db8462d54bA737d73697a44","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xEB1112Ac78D537853150E2a07E8b765E29d3F019","0x817bbDbC3e8A1204f3691d14bB44992841e3dB35","0x1e05f68B29b286FB3BbAd3c688D7e2ABda549b80"]}},{"cohort":{"cohortAddress":"0xcedf01ea298f90df54f01878b324300b091b7a56","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x923b83c26B3809d960fF80332Ed00aA46D7Ed375"]}},{"cohort":{"cohortAddress":"0xcedf01ea298f90df54f01878b324300b091b7a56","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x923b83c26B3809d960fF80332Ed00aA46D7Ed375"]}},{"cohort":{"cohortAddress":"0x17cf1f7abe02e2cefea0c9c1bd812b2cf8121f2b","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x00d46727c2E4A6E358A8c0D638137a3d91B19BE6","0x2610F0bFC21EF389fe4D03CFB7De9ac1E6C99D6E","0xD85AD783cc94bd04196a13DC042A3054a9B52210"]}},{"cohort":{"cohortAddress":"0x17cf1f7abe02e2cefea0c9c1bd812b2cf8121f2b","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x00d46727c2E4A6E358A8c0D638137a3d91B19BE6","0x2610F0bFC21EF389fe4D03CFB7De9ac1E6C99D6E","0xD85AD783cc94bd04196a13DC042A3054a9B52210"]}},{"cohort":{"cohortAddress":"0x17cf1f7abe02e2cefea0c9c1bd812b2cf8121f2b","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x00d46727c2E4A6E358A8c0D638137a3d91B19BE6","0x2610F0bFC21EF389fe4D03CFB7De9ac1E6C99D6E","0xD85AD783cc94bd04196a13DC042A3054a9B52210"]}},{"cohort":{"cohortAddress":"0x17cf1f7abe02e2cefea0c9c1bd812b2cf8121f2b","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x00d46727c2E4A6E358A8c0D638137a3d91B19BE6","0x2610F0bFC21EF389fe4D03CFB7De9ac1E6C99D6E","0xD85AD783cc94bd04196a13DC042A3054a9B52210"]}},{"cohort":{"cohortAddress":"0x2d168651d85fe8b16aebf42272a9b64f24ac3603","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x5F474906637bdCDA05f29C74653F6962bb0f8eDa","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x2d168651d85fe8b16aebf42272a9b64f24ac3603","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x5F474906637bdCDA05f29C74653F6962bb0f8eDa","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x2d168651d85fe8b16aebf42272a9b64f24ac3603","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x5F474906637bdCDA05f29C74653F6962bb0f8eDa","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x2d168651d85fe8b16aebf42272a9b64f24ac3603","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x5F474906637bdCDA05f29C74653F6962bb0f8eDa","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x32D72D6CC98436EF983BE7f5288ab2Ca63480fE4","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]}},{"cohort":{"cohortAddress":"0x32D72D6CC98436EF983BE7f5288ab2Ca63480fE4","proxies":[],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]}},{"cohort":{"cohortAddress":"0x1c14Eb2f2bf443557fC131b3f6F4e929C0081346","proxies":[],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"]}},{"cohort":{"cohortAddress":"0x1c14Eb2f2bf443557fC131b3f6F4e929C0081346","proxies":[],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"]}},{"cohort":{"cohortAddress":"0x6fd0bbf295965db381f1d5b353ff3e523c771dd6","proxies":["0x4d1cEC3f30aD9b1a7f69e510016a5D790cFA6fC0"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x474021845C4643113458ea4414bdb7fB74A01A77","0xe047705117Eb07e712C3d684f5B18E74577e83aC","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x6fd0bbf295965db381f1d5b353ff3e523c771dd6","proxies":["0x4d1cEC3f30aD9b1a7f69e510016a5D790cFA6fC0"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x474021845C4643113458ea4414bdb7fB74A01A77","0xe047705117Eb07e712C3d684f5B18E74577e83aC","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x6fd0bbf295965db381f1d5b353ff3e523c771dd6","proxies":["0x4d1cEC3f30aD9b1a7f69e510016a5D790cFA6fC0"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x474021845C4643113458ea4414bdb7fB74A01A77","0xe047705117Eb07e712C3d684f5B18E74577e83aC","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x6fd0bbf295965db381f1d5b353ff3e523c771dd6","proxies":["0x4d1cEC3f30aD9b1a7f69e510016a5D790cFA6fC0"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x474021845C4643113458ea4414bdb7fB74A01A77","0xe047705117Eb07e712C3d684f5B18E74577e83aC","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x6fd0bbf295965db381f1d5b353ff3e523c771dd6","proxies":["0x4d1cEC3f30aD9b1a7f69e510016a5D790cFA6fC0"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x474021845C4643113458ea4414bdb7fB74A01A77","0xe047705117Eb07e712C3d684f5B18E74577e83aC","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x6fd0bbf295965db381f1d5b353ff3e523c771dd6","proxies":["0x4d1cEC3f30aD9b1a7f69e510016a5D790cFA6fC0"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x474021845C4643113458ea4414bdb7fB74A01A77","0xe047705117Eb07e712C3d684f5B18E74577e83aC","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xc3Eb2622190c57429aac3901808994443b64B466"]}},{"cohort":{"cohortAddress":"0x53fe82a7334c6f3683d5b39f49f0f7be19823a64","proxies":["0x0F525981710E9d627f880D1e04C1F432317c84FF"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x8B39B70E39Aa811b69365398e0aACe9bee238AEb","0xAF691508BA57d416f895e32a1616dA1024e882D2","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C"]}},{"cohort":{"cohortAddress":"0x53fe82a7334c6f3683d5b39f49f0f7be19823a64","proxies":["0x0F525981710E9d627f880D1e04C1F432317c84FF"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x8B39B70E39Aa811b69365398e0aACe9bee238AEb","0xAF691508BA57d416f895e32a1616dA1024e882D2","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C"]}},{"cohort":{"cohortAddress":"0x53fe82a7334c6f3683d5b39f49f0f7be19823a64","proxies":["0x0F525981710E9d627f880D1e04C1F432317c84FF"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x8B39B70E39Aa811b69365398e0aACe9bee238AEb","0xAF691508BA57d416f895e32a1616dA1024e882D2","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C"]}},{"cohort":{"cohortAddress":"0x53fe82a7334c6f3683d5b39f49f0f7be19823a64","proxies":["0x0F525981710E9d627f880D1e04C1F432317c84FF"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x8B39B70E39Aa811b69365398e0aACe9bee238AEb","0xAF691508BA57d416f895e32a1616dA1024e882D2","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C"]}},{"cohort":{"cohortAddress":"0x53fe82a7334c6f3683d5b39f49f0f7be19823a64","proxies":["0x0F525981710E9d627f880D1e04C1F432317c84FF"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x8B39B70E39Aa811b69365398e0aACe9bee238AEb","0xAF691508BA57d416f895e32a1616dA1024e882D2","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C"]}},{"cohort":{"cohortAddress":"0x3d41675d0e5b610cfea98998129780753bd664b5","proxies":["0x920a203e0C9F55d747F6b7Ea76ff96715725335a"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xd9b312D77Bc7BEd9B9CecB56636300bED4Fe5Ce9","0x89bD2E7e388fAB44AE88BEf4e1AD12b4F1E0911c","0x993864E43Caa7F7F12953AD6fEb1d1Ca635B875F"]}},{"cohort":{"cohortAddress":"0x3d41675d0e5b610cfea98998129780753bd664b5","proxies":["0x920a203e0C9F55d747F6b7Ea76ff96715725335a"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xd9b312D77Bc7BEd9B9CecB56636300bED4Fe5Ce9","0x89bD2E7e388fAB44AE88BEf4e1AD12b4F1E0911c","0x993864E43Caa7F7F12953AD6fEb1d1Ca635B875F"]}},{"cohort":{"cohortAddress":"0x3d41675d0e5b610cfea98998129780753bd664b5","proxies":["0x920a203e0C9F55d747F6b7Ea76ff96715725335a"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xd9b312D77Bc7BEd9B9CecB56636300bED4Fe5Ce9","0x89bD2E7e388fAB44AE88BEf4e1AD12b4F1E0911c","0x993864E43Caa7F7F12953AD6fEb1d1Ca635B875F"]}},{"cohort":{"cohortAddress":"0x3d41675d0e5b610cfea98998129780753bd664b5","proxies":["0x920a203e0C9F55d747F6b7Ea76ff96715725335a"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xd9b312D77Bc7BEd9B9CecB56636300bED4Fe5Ce9","0x89bD2E7e388fAB44AE88BEf4e1AD12b4F1E0911c","0x993864E43Caa7F7F12953AD6fEb1d1Ca635B875F"]}},{"cohort":{"cohortAddress":"0x80d0540C7971922bDe062e434AD7618bc2aC50bB","proxies":["0xD6Ce88C332a8168724b69A3A03e23DDf6Ac40408"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x56A86d648c435DC707c8405B78e2Ae8eB4E60Ba4","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xa1eD0364D53394209D61aE8bfdb8Ff50484D8c91"]}},{"cohort":{"cohortAddress":"0x80d0540C7971922bDe062e434AD7618bc2aC50bB","proxies":["0xD6Ce88C332a8168724b69A3A03e23DDf6Ac40408"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x56A86d648c435DC707c8405B78e2Ae8eB4E60Ba4","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xa1eD0364D53394209D61aE8bfdb8Ff50484D8c91"]}},{"cohort":{"cohortAddress":"0x80d0540C7971922bDe062e434AD7618bc2aC50bB","proxies":["0xD6Ce88C332a8168724b69A3A03e23DDf6Ac40408"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x56A86d648c435DC707c8405B78e2Ae8eB4E60Ba4","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xa1eD0364D53394209D61aE8bfdb8Ff50484D8c91"]}},{"cohort":{"cohortAddress":"0x80d0540C7971922bDe062e434AD7618bc2aC50bB","proxies":["0xD6Ce88C332a8168724b69A3A03e23DDf6Ac40408"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x56A86d648c435DC707c8405B78e2Ae8eB4E60Ba4","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xa1eD0364D53394209D61aE8bfdb8Ff50484D8c91"]}},{"cohort":{"cohortAddress":"0x80d0540C7971922bDe062e434AD7618bc2aC50bB","proxies":["0xD6Ce88C332a8168724b69A3A03e23DDf6Ac40408"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x56A86d648c435DC707c8405B78e2Ae8eB4E60Ba4","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0xa1eD0364D53394209D61aE8bfdb8Ff50484D8c91"]}},{"cohort":{"cohortAddress":"0xC364572a61b05Ce0095F5Ca91F762eBeF7ab9494","proxies":["0x50572512c65DbC570634926309BF61fB19C2364c"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x92Ec47DF1AA167806dFa4916D9Cfb99da6953b8F","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xC8807f0f5BA3fa45FfBdc66928d71c5289249014","0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x8A2279d4A90B6fe1C4B30fa660cC9f926797bAA2"]}},{"cohort":{"cohortAddress":"0xC364572a61b05Ce0095F5Ca91F762eBeF7ab9494","proxies":["0x50572512c65DbC570634926309BF61fB19C2364c"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x92Ec47DF1AA167806dFa4916D9Cfb99da6953b8F","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xC8807f0f5BA3fa45FfBdc66928d71c5289249014","0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x8A2279d4A90B6fe1C4B30fa660cC9f926797bAA2"]}},{"cohort":{"cohortAddress":"0xC364572a61b05Ce0095F5Ca91F762eBeF7ab9494","proxies":["0x50572512c65DbC570634926309BF61fB19C2364c"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x92Ec47DF1AA167806dFa4916D9Cfb99da6953b8F","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xC8807f0f5BA3fa45FfBdc66928d71c5289249014","0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x8A2279d4A90B6fe1C4B30fa660cC9f926797bAA2"]}},{"cohort":{"cohortAddress":"0xC364572a61b05Ce0095F5Ca91F762eBeF7ab9494","proxies":["0x50572512c65DbC570634926309BF61fB19C2364c"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x92Ec47DF1AA167806dFa4916D9Cfb99da6953b8F","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xC8807f0f5BA3fa45FfBdc66928d71c5289249014","0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x8A2279d4A90B6fe1C4B30fa660cC9f926797bAA2"]}},{"cohort":{"cohortAddress":"0xC364572a61b05Ce0095F5Ca91F762eBeF7ab9494","proxies":["0x50572512c65DbC570634926309BF61fB19C2364c"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x92Ec47DF1AA167806dFa4916D9Cfb99da6953b8F","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xC8807f0f5BA3fa45FfBdc66928d71c5289249014","0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x8A2279d4A90B6fe1C4B30fa660cC9f926797bAA2"]}},{"cohort":{"cohortAddress":"0xC364572a61b05Ce0095F5Ca91F762eBeF7ab9494","proxies":["0x50572512c65DbC570634926309BF61fB19C2364c"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x92Ec47DF1AA167806dFa4916D9Cfb99da6953b8F","0xfd30C9BEA1A952FEeEd2eF2C6B2Ff8A8FC4aAD07","0xC8807f0f5BA3fa45FfBdc66928d71c5289249014","0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x8A2279d4A90B6fe1C4B30fa660cC9f926797bAA2"]}},{"cohort":{"cohortAddress":"0x4460788bc43dab5f4e530ec9dfa1dd8c483f188c","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x1DE5e000C41C8d35b9f1f4985C23988f05831057","0x5Eaa69B29f99C84Fe5dE8200340b4e9b4Ab38EaC","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x4460788bc43dab5f4e530ec9dfa1dd8c483f188c","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x1DE5e000C41C8d35b9f1f4985C23988f05831057","0x5Eaa69B29f99C84Fe5dE8200340b4e9b4Ab38EaC","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x4460788bc43dab5f4e530ec9dfa1dd8c483f188c","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x1DE5e000C41C8d35b9f1f4985C23988f05831057","0x5Eaa69B29f99C84Fe5dE8200340b4e9b4Ab38EaC","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x4460788bc43dab5f4e530ec9dfa1dd8c483f188c","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x1DE5e000C41C8d35b9f1f4985C23988f05831057","0x5Eaa69B29f99C84Fe5dE8200340b4e9b4Ab38EaC","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x4460788bc43dab5f4e530ec9dfa1dd8c483f188c","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x1DE5e000C41C8d35b9f1f4985C23988f05831057","0x5Eaa69B29f99C84Fe5dE8200340b4e9b4Ab38EaC","0xFc0d6Cf33e38bcE7CA7D89c0E292274031b7157A","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x50E90d8E1c012A98fB4bA3246447f27035A8780A","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A","0x40821CD074dfeCb1524286923bC69315075b5c89","0x80CE3027a70e0A928d9268994e9B85d03Bd4CDcf","0x28Cca76f6e8eC81e4550ecd761f899110b060E97","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x50E90d8E1c012A98fB4bA3246447f27035A8780A","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A","0x40821CD074dfeCb1524286923bC69315075b5c89","0x80CE3027a70e0A928d9268994e9B85d03Bd4CDcf","0x28Cca76f6e8eC81e4550ecd761f899110b060E97","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x50E90d8E1c012A98fB4bA3246447f27035A8780A","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A","0x40821CD074dfeCb1524286923bC69315075b5c89","0x80CE3027a70e0A928d9268994e9B85d03Bd4CDcf","0x28Cca76f6e8eC81e4550ecd761f899110b060E97","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x50E90d8E1c012A98fB4bA3246447f27035A8780A","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A","0x40821CD074dfeCb1524286923bC69315075b5c89","0x80CE3027a70e0A928d9268994e9B85d03Bd4CDcf","0x28Cca76f6e8eC81e4550ecd761f899110b060E97","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x50E90d8E1c012A98fB4bA3246447f27035A8780A","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A","0x40821CD074dfeCb1524286923bC69315075b5c89","0x80CE3027a70e0A928d9268994e9B85d03Bd4CDcf","0x28Cca76f6e8eC81e4550ecd761f899110b060E97","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x50E90d8E1c012A98fB4bA3246447f27035A8780A","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A","0x40821CD074dfeCb1524286923bC69315075b5c89","0x80CE3027a70e0A928d9268994e9B85d03Bd4CDcf","0x28Cca76f6e8eC81e4550ecd761f899110b060E97","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x50E90d8E1c012A98fB4bA3246447f27035A8780A","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A","0x40821CD074dfeCb1524286923bC69315075b5c89","0x80CE3027a70e0A928d9268994e9B85d03Bd4CDcf","0x28Cca76f6e8eC81e4550ecd761f899110b060E97","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x50E90d8E1c012A98fB4bA3246447f27035A8780A","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C","0x298d492e8c1d909D3F63Bc4A36C66c64ACB3d695","0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A","0x40821CD074dfeCb1524286923bC69315075b5c89","0x80CE3027a70e0A928d9268994e9B85d03Bd4CDcf","0x28Cca76f6e8eC81e4550ecd761f899110b060E97","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0xfc0962c00efa1a1d7c51e68f7de865119219cec9","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0xaf9f549774ecEDbD0966C52f250aCc548D3F36E5","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0x3C03b4EC9477809072FF9CC9292C9B25d4A8e6c6"]}},{"cohort":{"cohortAddress":"0xfc0962c00efa1a1d7c51e68f7de865119219cec9","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0xaf9f549774ecEDbD0966C52f250aCc548D3F36E5","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0x3C03b4EC9477809072FF9CC9292C9B25d4A8e6c6"]}},{"cohort":{"cohortAddress":"0xfc0962c00efa1a1d7c51e68f7de865119219cec9","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0xaf9f549774ecEDbD0966C52f250aCc548D3F36E5","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0x3C03b4EC9477809072FF9CC9292C9B25d4A8e6c6"]}},{"cohort":{"cohortAddress":"0xfc0962c00efa1a1d7c51e68f7de865119219cec9","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0xaf9f549774ecEDbD0966C52f250aCc548D3F36E5","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0x3C03b4EC9477809072FF9CC9292C9B25d4A8e6c6"]}},{"cohort":{"cohortAddress":"0xab6FfA6A5D5589378A21dbb30dF2940E0320d1Cd","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x657B83A0336561C8f64389a6f5aDE675C04b0C3b","0xf7413489c474ca4399eeE604716c72879Eea3615","0xD9c2D319Cd7e6177336b0a9c93c21cb48d84Fb54","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd"]}},{"cohort":{"cohortAddress":"0xab6FfA6A5D5589378A21dbb30dF2940E0320d1Cd","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x657B83A0336561C8f64389a6f5aDE675C04b0C3b","0xf7413489c474ca4399eeE604716c72879Eea3615","0xD9c2D319Cd7e6177336b0a9c93c21cb48d84Fb54","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd"]}},{"cohort":{"cohortAddress":"0xab6FfA6A5D5589378A21dbb30dF2940E0320d1Cd","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x657B83A0336561C8f64389a6f5aDE675C04b0C3b","0xf7413489c474ca4399eeE604716c72879Eea3615","0xD9c2D319Cd7e6177336b0a9c93c21cb48d84Fb54","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd"]}},{"cohort":{"cohortAddress":"0xab6FfA6A5D5589378A21dbb30dF2940E0320d1Cd","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x657B83A0336561C8f64389a6f5aDE675C04b0C3b","0xf7413489c474ca4399eeE604716c72879Eea3615","0xD9c2D319Cd7e6177336b0a9c93c21cb48d84Fb54","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd"]}},{"cohort":{"cohortAddress":"0xab6FfA6A5D5589378A21dbb30dF2940E0320d1Cd","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x657B83A0336561C8f64389a6f5aDE675C04b0C3b","0xf7413489c474ca4399eeE604716c72879Eea3615","0xD9c2D319Cd7e6177336b0a9c93c21cb48d84Fb54","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd"]}},{"cohort":{"cohortAddress":"0x349d55f12fb166a926214ca0195a07a16fa4ccb1","proxies":["0x559CD5B11Ca882CEDda823Ac06275558A92b7064","0xeae5ce18fe34d1ee46c67f326c4a7f2038e6bd78","0xd04dde065fe872adb6517b4bb0c11eaf49ce26a5"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x8c8687fC965593DFb2F0b4EAeFD55E9D8df348df","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x3593D125a4f7849a1B059E64F4517A86Dd60c95d","0x72F020f8f3E8fd9382705723Cd26380f8D0c66Bb","0x7eaF9C89037e4814DC0d9952Ac7F888C784548DB"]}},{"cohort":{"cohortAddress":"0x349d55f12fb166a926214ca0195a07a16fa4ccb1","proxies":["0x559CD5B11Ca882CEDda823Ac06275558A92b7064","0xeae5ce18fe34d1ee46c67f326c4a7f2038e6bd78","0xd04dde065fe872adb6517b4bb0c11eaf49ce26a5"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x8c8687fC965593DFb2F0b4EAeFD55E9D8df348df","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x3593D125a4f7849a1B059E64F4517A86Dd60c95d","0x72F020f8f3E8fd9382705723Cd26380f8D0c66Bb","0x7eaF9C89037e4814DC0d9952Ac7F888C784548DB"]}},{"cohort":{"cohortAddress":"0x349d55f12fb166a926214ca0195a07a16fa4ccb1","proxies":["0x559CD5B11Ca882CEDda823Ac06275558A92b7064","0xeae5ce18fe34d1ee46c67f326c4a7f2038e6bd78","0xd04dde065fe872adb6517b4bb0c11eaf49ce26a5"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x8c8687fC965593DFb2F0b4EAeFD55E9D8df348df","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x3593D125a4f7849a1B059E64F4517A86Dd60c95d","0x72F020f8f3E8fd9382705723Cd26380f8D0c66Bb","0x7eaF9C89037e4814DC0d9952Ac7F888C784548DB"]}},{"cohort":{"cohortAddress":"0x349d55f12fb166a926214ca0195a07a16fa4ccb1","proxies":["0x559CD5B11Ca882CEDda823Ac06275558A92b7064","0xeae5ce18fe34d1ee46c67f326c4a7f2038e6bd78","0xd04dde065fe872adb6517b4bb0c11eaf49ce26a5"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x8c8687fC965593DFb2F0b4EAeFD55E9D8df348df","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x3593D125a4f7849a1B059E64F4517A86Dd60c95d","0x72F020f8f3E8fd9382705723Cd26380f8D0c66Bb","0x7eaF9C89037e4814DC0d9952Ac7F888C784548DB"]}},{"cohort":{"cohortAddress":"0x349d55f12fb166a926214ca0195a07a16fa4ccb1","proxies":["0x559CD5B11Ca882CEDda823Ac06275558A92b7064","0xeae5ce18fe34d1ee46c67f326c4a7f2038e6bd78","0xd04dde065fe872adb6517b4bb0c11eaf49ce26a5"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x8c8687fC965593DFb2F0b4EAeFD55E9D8df348df","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x3593D125a4f7849a1B059E64F4517A86Dd60c95d","0x72F020f8f3E8fd9382705723Cd26380f8D0c66Bb","0x7eaF9C89037e4814DC0d9952Ac7F888C784548DB"]}},{"cohort":{"cohortAddress":"0x349d55f12fb166a926214ca0195a07a16fa4ccb1","proxies":["0x559CD5B11Ca882CEDda823Ac06275558A92b7064","0xeae5ce18fe34d1ee46c67f326c4a7f2038e6bd78","0xd04dde065fe872adb6517b4bb0c11eaf49ce26a5"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x8c8687fC965593DFb2F0b4EAeFD55E9D8df348df","0x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd","0x3593D125a4f7849a1B059E64F4517A86Dd60c95d","0x72F020f8f3E8fd9382705723Cd26380f8D0c66Bb","0x7eaF9C89037e4814DC0d9952Ac7F888C784548DB"]}},{"cohort":{"cohortAddress":"0x207C678457617bC8c8Ab06F9088EFC1DCD45887c","proxies":["0xdb6cf8acca5031eb42e283fa441a4c9ada5cc8d9","0x152A8d34c5C4540645443A63Bd8C1d395543BdC2","0x652862b61C71C8D955cCBd973d2830C68e46CE78"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x2eDf094dB69d6Dcd487f1B3dB9febE2eeC0dd4c5","0x6e9730EcFfBed43fD876A264C982e254ef05a0DE","0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4","0xd084B83C305daFD76AE3E1b4E1F1fe2eCcCb3988"]}},{"cohort":{"cohortAddress":"0x207C678457617bC8c8Ab06F9088EFC1DCD45887c","proxies":["0xdb6cf8acca5031eb42e283fa441a4c9ada5cc8d9","0x152A8d34c5C4540645443A63Bd8C1d395543BdC2","0x652862b61C71C8D955cCBd973d2830C68e46CE78"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x2eDf094dB69d6Dcd487f1B3dB9febE2eeC0dd4c5","0x6e9730EcFfBed43fD876A264C982e254ef05a0DE","0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4","0xd084B83C305daFD76AE3E1b4E1F1fe2eCcCb3988"]}},{"cohort":{"cohortAddress":"0x207C678457617bC8c8Ab06F9088EFC1DCD45887c","proxies":["0xdb6cf8acca5031eb42e283fa441a4c9ada5cc8d9","0x152A8d34c5C4540645443A63Bd8C1d395543BdC2","0x652862b61C71C8D955cCBd973d2830C68e46CE78"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x2eDf094dB69d6Dcd487f1B3dB9febE2eeC0dd4c5","0x6e9730EcFfBed43fD876A264C982e254ef05a0DE","0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4","0xd084B83C305daFD76AE3E1b4E1F1fe2eCcCb3988"]}},{"cohort":{"cohortAddress":"0x207C678457617bC8c8Ab06F9088EFC1DCD45887c","proxies":["0xdb6cf8acca5031eb42e283fa441a4c9ada5cc8d9","0x152A8d34c5C4540645443A63Bd8C1d395543BdC2","0x652862b61C71C8D955cCBd973d2830C68e46CE78"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x2eDf094dB69d6Dcd487f1B3dB9febE2eeC0dd4c5","0x6e9730EcFfBed43fD876A264C982e254ef05a0DE","0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4","0xd084B83C305daFD76AE3E1b4E1F1fe2eCcCb3988"]}},{"cohort":{"cohortAddress":"0x207C678457617bC8c8Ab06F9088EFC1DCD45887c","proxies":["0xdb6cf8acca5031eb42e283fa441a4c9ada5cc8d9","0x152A8d34c5C4540645443A63Bd8C1d395543BdC2","0x652862b61C71C8D955cCBd973d2830C68e46CE78"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x2eDf094dB69d6Dcd487f1B3dB9febE2eeC0dd4c5","0x6e9730EcFfBed43fD876A264C982e254ef05a0DE","0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4","0xd084B83C305daFD76AE3E1b4E1F1fe2eCcCb3988"]}},{"cohort":{"cohortAddress":"0x207C678457617bC8c8Ab06F9088EFC1DCD45887c","proxies":["0xdb6cf8acca5031eb42e283fa441a4c9ada5cc8d9","0x152A8d34c5C4540645443A63Bd8C1d395543BdC2","0x652862b61C71C8D955cCBd973d2830C68e46CE78"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x2eDf094dB69d6Dcd487f1B3dB9febE2eeC0dd4c5","0x6e9730EcFfBed43fD876A264C982e254ef05a0DE","0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4","0xd084B83C305daFD76AE3E1b4E1F1fe2eCcCb3988"]}},{"cohort":{"cohortAddress":"0xd426037bCf28fc4eA3730525Ff8B3d2DE412257d","proxies":["0xe8369CA802f89b16A968ccb24431A7A412F41f27","0x0862eD7f6B2bc350508B29542511249b7E11A0a0"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x03042482d64577A7bdb282260e2eA4c8a89C064B","0xFE3E6a25e6b192A42a44ecDDCd13796471735ACf","0xf8C3527CC04340b208C854E985240c02F7B7793f"]}},{"cohort":{"cohortAddress":"0xd426037bCf28fc4eA3730525Ff8B3d2DE412257d","proxies":["0xe8369CA802f89b16A968ccb24431A7A412F41f27","0x0862eD7f6B2bc350508B29542511249b7E11A0a0"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x03042482d64577A7bdb282260e2eA4c8a89C064B","0xFE3E6a25e6b192A42a44ecDDCd13796471735ACf","0xf8C3527CC04340b208C854E985240c02F7B7793f"]}},{"cohort":{"cohortAddress":"0xd426037bCf28fc4eA3730525Ff8B3d2DE412257d","proxies":["0xe8369CA802f89b16A968ccb24431A7A412F41f27","0x0862eD7f6B2bc350508B29542511249b7E11A0a0"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x03042482d64577A7bdb282260e2eA4c8a89C064B","0xFE3E6a25e6b192A42a44ecDDCd13796471735ACf","0xf8C3527CC04340b208C854E985240c02F7B7793f"]}},{"cohort":{"cohortAddress":"0xd426037bCf28fc4eA3730525Ff8B3d2DE412257d","proxies":["0xe8369CA802f89b16A968ccb24431A7A412F41f27","0x0862eD7f6B2bc350508B29542511249b7E11A0a0"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x03042482d64577A7bdb282260e2eA4c8a89C064B","0xFE3E6a25e6b192A42a44ecDDCd13796471735ACf","0xf8C3527CC04340b208C854E985240c02F7B7793f"]}},{"cohort":{"cohortAddress":"0xd426037bCf28fc4eA3730525Ff8B3d2DE412257d","proxies":["0xe8369CA802f89b16A968ccb24431A7A412F41f27","0x0862eD7f6B2bc350508B29542511249b7E11A0a0"],"tokens":["0xc3Eb2622190c57429aac3901808994443b64B466","0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0","0x03042482d64577A7bdb282260e2eA4c8a89C064B","0xFE3E6a25e6b192A42a44ecDDCd13796471735ACf","0xf8C3527CC04340b208C854E985240c02F7B7793f"]}}]},"bsc":{"pools":[{"cohort":{"cohortAddress":"0x02c57D740836A0706d48bF0EfD9Af214dFbB3d46","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x73afC23510b40dcbEABc25fFBc8C2976eD9f950c","0x9108c36DC1DCbf08187D4f4D4579D72e6A35d979"]}},{"cohort":{"cohortAddress":"0x02c57D740836A0706d48bF0EfD9Af214dFbB3d46","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x73afC23510b40dcbEABc25fFBc8C2976eD9f950c","0x9108c36DC1DCbf08187D4f4D4579D72e6A35d979"]}},{"cohort":{"cohortAddress":"0x02c57D740836A0706d48bF0EfD9Af214dFbB3d46","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x73afC23510b40dcbEABc25fFBc8C2976eD9f950c","0x9108c36DC1DCbf08187D4f4D4579D72e6A35d979"]}},{"cohort":{"cohortAddress":"0x02c57D740836A0706d48bF0EfD9Af214dFbB3d46","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x73afC23510b40dcbEABc25fFBc8C2976eD9f950c","0x9108c36DC1DCbf08187D4f4D4579D72e6A35d979"]}},{"cohort":{"cohortAddress":"0xeae5CE18fe34d1EE46C67f326c4A7F2038E6BD78","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x9BEe0c15676a65ef3c8cdb38cB3DD31c675BbD12","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xf787E1B31e12c4BE0cBFA46844c5ec851eBA098d"]}},{"cohort":{"cohortAddress":"0xeae5CE18fe34d1EE46C67f326c4A7F2038E6BD78","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x9BEe0c15676a65ef3c8cdb38cB3DD31c675BbD12","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xf787E1B31e12c4BE0cBFA46844c5ec851eBA098d"]}},{"cohort":{"cohortAddress":"0xeae5CE18fe34d1EE46C67f326c4A7F2038E6BD78","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x9BEe0c15676a65ef3c8cdb38cB3DD31c675BbD12","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xf787E1B31e12c4BE0cBFA46844c5ec851eBA098d"]}},{"cohort":{"cohortAddress":"0xeae5CE18fe34d1EE46C67f326c4A7F2038E6BD78","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x9BEe0c15676a65ef3c8cdb38cB3DD31c675BbD12","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xf787E1B31e12c4BE0cBFA46844c5ec851eBA098d"]}},{"cohort":{"cohortAddress":"0xef3dB88CdaE6627Ef706962c7a83C1A29be52711","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"]}},{"cohort":{"cohortAddress":"0xef3dB88CdaE6627Ef706962c7a83C1A29be52711","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"]}},{"cohort":{"cohortAddress":"0x659F5ad5aB3a3f185C8F3ac81cfeBC8fC863f105","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4EF285c8cbe52267c022c39da98b97ca4b7e2fF9","0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d"]}},{"cohort":{"cohortAddress":"0x659F5ad5aB3a3f185C8F3ac81cfeBC8fC863f105","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4EF285c8cbe52267c022c39da98b97ca4b7e2fF9","0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d"]}},{"cohort":{"cohortAddress":"0x659F5ad5aB3a3f185C8F3ac81cfeBC8fC863f105","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4EF285c8cbe52267c022c39da98b97ca4b7e2fF9","0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d"]}},{"cohort":{"cohortAddress":"0x659F5ad5aB3a3f185C8F3ac81cfeBC8fC863f105","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4EF285c8cbe52267c022c39da98b97ca4b7e2fF9","0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d"]}},{"cohort":{"cohortAddress":"0x659F5ad5aB3a3f185C8F3ac81cfeBC8fC863f105","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4EF285c8cbe52267c022c39da98b97ca4b7e2fF9","0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d"]}},{"cohort":{"cohortAddress":"0x659F5ad5aB3a3f185C8F3ac81cfeBC8fC863f105","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4EF285c8cbe52267c022c39da98b97ca4b7e2fF9","0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d"]}},{"cohort":{"cohortAddress":"0x8edfB7C16CCCC3da15385086D0426196F5fD3416","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x7ad7242A99F21aa543F9650A56D141C57e4F6081","0x91F006ee672F8f39C6E63cA75B1cA14067b3c366","0xDae3C2Cb0AC034a4A491B112D2922f12427201A6","0xA5fbc3520dD4Bb85FCd175e1E3b994546A2C1eE8"]}},{"cohort":{"cohortAddress":"0x8edfB7C16CCCC3da15385086D0426196F5fD3416","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x7ad7242A99F21aa543F9650A56D141C57e4F6081","0x91F006ee672F8f39C6E63cA75B1cA14067b3c366","0xDae3C2Cb0AC034a4A491B112D2922f12427201A6","0xA5fbc3520dD4Bb85FCd175e1E3b994546A2C1eE8"]}},{"cohort":{"cohortAddress":"0x8edfB7C16CCCC3da15385086D0426196F5fD3416","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x7ad7242A99F21aa543F9650A56D141C57e4F6081","0x91F006ee672F8f39C6E63cA75B1cA14067b3c366","0xDae3C2Cb0AC034a4A491B112D2922f12427201A6","0xA5fbc3520dD4Bb85FCd175e1E3b994546A2C1eE8"]}},{"cohort":{"cohortAddress":"0x8edfB7C16CCCC3da15385086D0426196F5fD3416","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x7ad7242A99F21aa543F9650A56D141C57e4F6081","0x91F006ee672F8f39C6E63cA75B1cA14067b3c366","0xDae3C2Cb0AC034a4A491B112D2922f12427201A6","0xA5fbc3520dD4Bb85FCd175e1E3b994546A2C1eE8"]}},{"cohort":{"cohortAddress":"0x8edfB7C16CCCC3da15385086D0426196F5fD3416","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x7ad7242A99F21aa543F9650A56D141C57e4F6081","0x91F006ee672F8f39C6E63cA75B1cA14067b3c366","0xDae3C2Cb0AC034a4A491B112D2922f12427201A6","0xA5fbc3520dD4Bb85FCd175e1E3b994546A2C1eE8"]}},{"cohort":{"cohortAddress":"0x0862eD7f6B2bc350508B29542511249b7E11A0a0","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f","0x3bc5798416c1122BcFd7cb0e055d50061F23850d","0xEB1112Ac78D537853150E2a07E8b765E29d3F019"]}},{"cohort":{"cohortAddress":"0x0862eD7f6B2bc350508B29542511249b7E11A0a0","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f","0x3bc5798416c1122BcFd7cb0e055d50061F23850d","0xEB1112Ac78D537853150E2a07E8b765E29d3F019"]}},{"cohort":{"cohortAddress":"0x0862eD7f6B2bc350508B29542511249b7E11A0a0","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f","0x3bc5798416c1122BcFd7cb0e055d50061F23850d","0xEB1112Ac78D537853150E2a07E8b765E29d3F019"]}},{"cohort":{"cohortAddress":"0x0862eD7f6B2bc350508B29542511249b7E11A0a0","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f","0x3bc5798416c1122BcFd7cb0e055d50061F23850d","0xEB1112Ac78D537853150E2a07E8b765E29d3F019"]}},{"cohort":{"cohortAddress":"0xd3CE8115D38fF119c0FB1172bF6569014A8E184F","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0x054Ae19876B2a669c282503D5a76313290Bc6453","0xC7d8D35EBA58a0935ff2D5a33Df105DD9f071731","0xb8b10DaFb5546b3740886D8a77b8b9bACB44fFfD"]}},{"cohort":{"cohortAddress":"0xd3CE8115D38fF119c0FB1172bF6569014A8E184F","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0x054Ae19876B2a669c282503D5a76313290Bc6453","0xC7d8D35EBA58a0935ff2D5a33Df105DD9f071731","0xb8b10DaFb5546b3740886D8a77b8b9bACB44fFfD"]}},{"cohort":{"cohortAddress":"0xd3CE8115D38fF119c0FB1172bF6569014A8E184F","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0x054Ae19876B2a669c282503D5a76313290Bc6453","0xC7d8D35EBA58a0935ff2D5a33Df105DD9f071731","0xb8b10DaFb5546b3740886D8a77b8b9bACB44fFfD"]}},{"cohort":{"cohortAddress":"0xd3CE8115D38fF119c0FB1172bF6569014A8E184F","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0x054Ae19876B2a669c282503D5a76313290Bc6453","0xC7d8D35EBA58a0935ff2D5a33Df105DD9f071731","0xb8b10DaFb5546b3740886D8a77b8b9bACB44fFfD"]}},{"cohort":{"cohortAddress":"0xd3CE8115D38fF119c0FB1172bF6569014A8E184F","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD254dC670Ff725753a826a5F29A4001600CcE29c","0x054Ae19876B2a669c282503D5a76313290Bc6453","0xC7d8D35EBA58a0935ff2D5a33Df105DD9f071731","0xb8b10DaFb5546b3740886D8a77b8b9bACB44fFfD"]}},{"cohort":{"cohortAddress":"0xa1f28581129f27c11ee0c6c421a4fbf29c3e9bc7","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x65e66a61D0a8F1e686C2D6083ad611a10D84D97A","0x21f1ce0FCf1E9E39F8e79B7762801E8096d9f6CD","0x4B4135A99775368f349b6f904808B648A9948393","0x04ae5cb48B8f968ED821972c5480b5B850f55554"]}},{"cohort":{"cohortAddress":"0xa1f28581129f27c11ee0c6c421a4fbf29c3e9bc7","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x65e66a61D0a8F1e686C2D6083ad611a10D84D97A","0x21f1ce0FCf1E9E39F8e79B7762801E8096d9f6CD","0x4B4135A99775368f349b6f904808B648A9948393","0x04ae5cb48B8f968ED821972c5480b5B850f55554"]}},{"cohort":{"cohortAddress":"0xa1f28581129f27c11ee0c6c421a4fbf29c3e9bc7","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x65e66a61D0a8F1e686C2D6083ad611a10D84D97A","0x21f1ce0FCf1E9E39F8e79B7762801E8096d9f6CD","0x4B4135A99775368f349b6f904808B648A9948393","0x04ae5cb48B8f968ED821972c5480b5B850f55554"]}},{"cohort":{"cohortAddress":"0xa1f28581129f27c11ee0c6c421a4fbf29c3e9bc7","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x65e66a61D0a8F1e686C2D6083ad611a10D84D97A","0x21f1ce0FCf1E9E39F8e79B7762801E8096d9f6CD","0x4B4135A99775368f349b6f904808B648A9948393","0x04ae5cb48B8f968ED821972c5480b5B850f55554"]}},{"cohort":{"cohortAddress":"0xa1f28581129f27c11ee0c6c421a4fbf29c3e9bc7","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x65e66a61D0a8F1e686C2D6083ad611a10D84D97A","0x21f1ce0FCf1E9E39F8e79B7762801E8096d9f6CD","0x4B4135A99775368f349b6f904808B648A9948393","0x04ae5cb48B8f968ED821972c5480b5B850f55554"]}},{"cohort":{"cohortAddress":"0xd5F119145bdF66998F3c33ae0fE529aD546c67F5","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD6Cce248263ea1e2b8cB765178C944Fc16Ed0727","0x70de30C81dDEE3A54b5dbDEb7d0BA029E80d34E2","0xc2CB89bBB5BBA6E21db1dFe13493Dfd7dCBabD68"]}},{"cohort":{"cohortAddress":"0xd5F119145bdF66998F3c33ae0fE529aD546c67F5","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD6Cce248263ea1e2b8cB765178C944Fc16Ed0727","0x70de30C81dDEE3A54b5dbDEb7d0BA029E80d34E2","0xc2CB89bBB5BBA6E21db1dFe13493Dfd7dCBabD68"]}},{"cohort":{"cohortAddress":"0xd5F119145bdF66998F3c33ae0fE529aD546c67F5","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD6Cce248263ea1e2b8cB765178C944Fc16Ed0727","0x70de30C81dDEE3A54b5dbDEb7d0BA029E80d34E2","0xc2CB89bBB5BBA6E21db1dFe13493Dfd7dCBabD68"]}},{"cohort":{"cohortAddress":"0xd5F119145bdF66998F3c33ae0fE529aD546c67F5","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0xD6Cce248263ea1e2b8cB765178C944Fc16Ed0727","0x70de30C81dDEE3A54b5dbDEb7d0BA029E80d34E2","0xc2CB89bBB5BBA6E21db1dFe13493Dfd7dCBabD68"]}},{"cohort":{"cohortAddress":"0x1c14eb2f2bf443557fc131b3f6f4e929c0081346","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x6bfd576220e8444CA4Cc5f89Efbd7f02a4C94C16","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x1c14eb2f2bf443557fc131b3f6f4e929c0081346","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x6bfd576220e8444CA4Cc5f89Efbd7f02a4C94C16","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x1c14eb2f2bf443557fc131b3f6f4e929c0081346","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x6bfd576220e8444CA4Cc5f89Efbd7f02a4C94C16","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x1c14eb2f2bf443557fc131b3f6f4e929c0081346","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x6bfd576220e8444CA4Cc5f89Efbd7f02a4C94C16","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x1c14eb2f2bf443557fc131b3f6f4e929c0081346","proxies":[],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x4A5a34212404f30C5aB7eB61b078fA4A55AdC5a5","0xdBB66Eb9f4D737B49aE5CD4De25E6C8da8B034f9","0x6bfd576220e8444CA4Cc5f89Efbd7f02a4C94C16","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x02e5de0ae2fc71e79dbd9e81c39edaca06ff4de2","proxies":["0x920a203e0C9F55d747F6b7Ea76ff96715725335a"],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x16153214E683018D5aA318864c8e692b66E16778","0x0e4B5Ea0259eB3D66E6FCB7Cc8785817F8490a53","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x02e5de0ae2fc71e79dbd9e81c39edaca06ff4de2","proxies":["0x920a203e0C9F55d747F6b7Ea76ff96715725335a"],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x16153214E683018D5aA318864c8e692b66E16778","0x0e4B5Ea0259eB3D66E6FCB7Cc8785817F8490a53","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x02e5de0ae2fc71e79dbd9e81c39edaca06ff4de2","proxies":["0x920a203e0C9F55d747F6b7Ea76ff96715725335a"],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x16153214E683018D5aA318864c8e692b66E16778","0x0e4B5Ea0259eB3D66E6FCB7Cc8785817F8490a53","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x02e5de0ae2fc71e79dbd9e81c39edaca06ff4de2","proxies":["0x920a203e0C9F55d747F6b7Ea76ff96715725335a"],"tokens":["0x0A356f512f6fCE740111ee04Ab1699017a908680","0x16153214E683018D5aA318864c8e692b66E16778","0x0e4B5Ea0259eB3D66E6FCB7Cc8785817F8490a53","0x3fF2348e44d09f07017BCDaaCc4be575c0Ec467f"]}},{"cohort":{"cohortAddress":"0x69B63a145597F39Ed1703f6aeEB2B832BB92f670","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x6D8734002fBffE1c86495e32c95f732fC77F6F2A","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0xeAF7D8395CCE52DAef138d39a1CEfA51b97C15aE","0x22168882276e5D5e1da694343b41DD7726eeb288"]}},{"cohort":{"cohortAddress":"0x69B63a145597F39Ed1703f6aeEB2B832BB92f670","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x6D8734002fBffE1c86495e32c95f732fC77F6F2A","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0xeAF7D8395CCE52DAef138d39a1CEfA51b97C15aE","0x22168882276e5D5e1da694343b41DD7726eeb288"]}},{"cohort":{"cohortAddress":"0x69B63a145597F39Ed1703f6aeEB2B832BB92f670","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x6D8734002fBffE1c86495e32c95f732fC77F6F2A","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0xeAF7D8395CCE52DAef138d39a1CEfA51b97C15aE","0x22168882276e5D5e1da694343b41DD7726eeb288"]}},{"cohort":{"cohortAddress":"0x69B63a145597F39Ed1703f6aeEB2B832BB92f670","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x6D8734002fBffE1c86495e32c95f732fC77F6F2A","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0xeAF7D8395CCE52DAef138d39a1CEfA51b97C15aE","0x22168882276e5D5e1da694343b41DD7726eeb288"]}},{"cohort":{"cohortAddress":"0x69B63a145597F39Ed1703f6aeEB2B832BB92f670","proxies":["0xe4Be53c29c852e474ffdBE5555dE64BF143B613E"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0x6D8734002fBffE1c86495e32c95f732fC77F6F2A","0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5","0xeAF7D8395CCE52DAef138d39a1CEfA51b97C15aE","0x22168882276e5D5e1da694343b41DD7726eeb288"]}},{"cohort":{"cohortAddress":"0xfd70c4a2280731fa7c63ee720d8da58898322ab7","proxies":["0x50572512c65DbC570634926309BF61fB19C2364c"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"]}},{"cohort":{"cohortAddress":"0xfd70c4a2280731fa7c63ee720d8da58898322ab7","proxies":["0x50572512c65DbC570634926309BF61fB19C2364c"],"tokens":["0x40986a85B4cFCDb054A6CBFB1210194fee51af88","0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"]}},{"cohort":{"cohortAddress":"0x8Fd3298c3981Df23a94DDaa4b1325c7087661568","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x658A109C5900BC6d2357c87549B651670E5b0539","0xA4CB040B85e94F5c0C32ea1151B20D3aB40B3493","0x6855f7bb6287F94ddcC8915E37e73a3c9fEe5CF3","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x8Fd3298c3981Df23a94DDaa4b1325c7087661568","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x658A109C5900BC6d2357c87549B651670E5b0539","0xA4CB040B85e94F5c0C32ea1151B20D3aB40B3493","0x6855f7bb6287F94ddcC8915E37e73a3c9fEe5CF3","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x8Fd3298c3981Df23a94DDaa4b1325c7087661568","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x658A109C5900BC6d2357c87549B651670E5b0539","0xA4CB040B85e94F5c0C32ea1151B20D3aB40B3493","0x6855f7bb6287F94ddcC8915E37e73a3c9fEe5CF3","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x8Fd3298c3981Df23a94DDaa4b1325c7087661568","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x658A109C5900BC6d2357c87549B651670E5b0539","0xA4CB040B85e94F5c0C32ea1151B20D3aB40B3493","0x6855f7bb6287F94ddcC8915E37e73a3c9fEe5CF3","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x8Fd3298c3981Df23a94DDaa4b1325c7087661568","proxies":["0xAf414C28FB7a33f736E5E55e102eB7954e95868C"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x658A109C5900BC6d2357c87549B651670E5b0539","0xA4CB040B85e94F5c0C32ea1151B20D3aB40B3493","0x6855f7bb6287F94ddcC8915E37e73a3c9fEe5CF3","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x207c678457617bc8c8ab06f9088efc1dcd45887c","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x965b0Df5BDA0E7a0649324D78f03D5F7F2De086a","0x6fC13EACE26590B80cCCAB1ba5d51890577D83B2","0xfd004A476a395108eB1a6e960c962bD856E5B3c6","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x207c678457617bc8c8ab06f9088efc1dcd45887c","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x965b0Df5BDA0E7a0649324D78f03D5F7F2De086a","0x6fC13EACE26590B80cCCAB1ba5d51890577D83B2","0xfd004A476a395108eB1a6e960c962bD856E5B3c6","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x207c678457617bc8c8ab06f9088efc1dcd45887c","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x965b0Df5BDA0E7a0649324D78f03D5F7F2De086a","0x6fC13EACE26590B80cCCAB1ba5d51890577D83B2","0xfd004A476a395108eB1a6e960c962bD856E5B3c6","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x207c678457617bc8c8ab06f9088efc1dcd45887c","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x965b0Df5BDA0E7a0649324D78f03D5F7F2De086a","0x6fC13EACE26590B80cCCAB1ba5d51890577D83B2","0xfd004A476a395108eB1a6e960c962bD856E5B3c6","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0x207c678457617bc8c8ab06f9088efc1dcd45887c","proxies":["0x2c09B8eA4606247Bf5AEC77B063c894334C6d205"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x965b0Df5BDA0E7a0649324D78f03D5F7F2De086a","0x6fC13EACE26590B80cCCAB1ba5d51890577D83B2","0xfd004A476a395108eB1a6e960c962bD856E5B3c6","0x40986a85B4cFCDb054A6CBFB1210194fee51af88"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x5A41F637C3f7553dBa6dDC2D3cA92641096577ea","0x4131b87F74415190425ccD873048C708F8005823","0x1A3057027032a1AF433f6f596CAB15271e4D8196"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x5A41F637C3f7553dBa6dDC2D3cA92641096577ea","0x4131b87F74415190425ccD873048C708F8005823","0x1A3057027032a1AF433f6f596CAB15271e4D8196"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x5A41F637C3f7553dBa6dDC2D3cA92641096577ea","0x4131b87F74415190425ccD873048C708F8005823","0x1A3057027032a1AF433f6f596CAB15271e4D8196"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xd23499e0Dc02C35d47D5284c85Cf4917D2454d2F"],"tokens":["0x9f998d62B81AF019E3346AF141f90ccCD679825E","0x5A41F637C3f7553dBa6dDC2D3cA92641096577ea","0x4131b87F74415190425ccD873048C708F8005823","0x1A3057027032a1AF433f6f596CAB15271e4D8196"]}}]},"polygon":{"pools":[{"cohort":{"cohortAddress":"0x775E0Da09D55911e3Ec836F14267a7E5FbB727EE","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"]}},{"cohort":{"cohortAddress":"0x775E0Da09D55911e3Ec836F14267a7E5FbB727EE","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"]}},{"cohort":{"cohortAddress":"0x6bD81942d66fbbBf9FC972422946F39B9A20b04a","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x9085B4d52c3e0B8B6F9AF6213E85A433c7D76f19","0x94C18174840F80D49d59DC3a1742aF0B884A8184","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xa6083abe845fbB8649d98B8586cBF50b7f233612"]}},{"cohort":{"cohortAddress":"0x6bD81942d66fbbBf9FC972422946F39B9A20b04a","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x9085B4d52c3e0B8B6F9AF6213E85A433c7D76f19","0x94C18174840F80D49d59DC3a1742aF0B884A8184","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xa6083abe845fbB8649d98B8586cBF50b7f233612"]}},{"cohort":{"cohortAddress":"0x6bD81942d66fbbBf9FC972422946F39B9A20b04a","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x9085B4d52c3e0B8B6F9AF6213E85A433c7D76f19","0x94C18174840F80D49d59DC3a1742aF0B884A8184","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xa6083abe845fbB8649d98B8586cBF50b7f233612"]}},{"cohort":{"cohortAddress":"0x6bD81942d66fbbBf9FC972422946F39B9A20b04a","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x9085B4d52c3e0B8B6F9AF6213E85A433c7D76f19","0x94C18174840F80D49d59DC3a1742aF0B884A8184","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xa6083abe845fbB8649d98B8586cBF50b7f233612"]}},{"cohort":{"cohortAddress":"0x6bD81942d66fbbBf9FC972422946F39B9A20b04a","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x9085B4d52c3e0B8B6F9AF6213E85A433c7D76f19","0x94C18174840F80D49d59DC3a1742aF0B884A8184","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xa6083abe845fbB8649d98B8586cBF50b7f233612"]}},{"cohort":{"cohortAddress":"0x1720bb2B6E11F6582cC1a7f6510FEb84064Ea811","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x23E8B6A3f6891254988B84Da3738D2bfe5E703b9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d","0x94C18174840F80D49d59DC3a1742aF0B884A8184"]}},{"cohort":{"cohortAddress":"0x1720bb2B6E11F6582cC1a7f6510FEb84064Ea811","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x23E8B6A3f6891254988B84Da3738D2bfe5E703b9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d","0x94C18174840F80D49d59DC3a1742aF0B884A8184"]}},{"cohort":{"cohortAddress":"0x1720bb2B6E11F6582cC1a7f6510FEb84064Ea811","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x23E8B6A3f6891254988B84Da3738D2bfe5E703b9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d","0x94C18174840F80D49d59DC3a1742aF0B884A8184"]}},{"cohort":{"cohortAddress":"0x1720bb2B6E11F6582cC1a7f6510FEb84064Ea811","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x23E8B6A3f6891254988B84Da3738D2bfe5E703b9","0x1e933ecc8251259D473827DfeD48C19f2eD1889d","0x94C18174840F80D49d59DC3a1742aF0B884A8184"]}},{"cohort":{"cohortAddress":"0xe8369ca802f89b16a968ccb24431a7a412f41f27","proxies":[],"tokens":["0x2651b9C63290E543902dA4eb63c34029382FF552","0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6"]}},{"cohort":{"cohortAddress":"0xe8369ca802f89b16a968ccb24431a7a412f41f27","proxies":[],"tokens":["0x2651b9C63290E543902dA4eb63c34029382FF552","0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6"]}},{"cohort":{"cohortAddress":"0x9442Cf0eCC338C09301bA25517bB2C5fF8a7794B","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x65ad6A2288b2Dd23E466226397c8F5D1794e58fC","0x4F6cbacA3151f7746273004Fd7295933a9b70E69","0x692AC1e363ae34b6B489148152b12e2785a3d8d6","0x2651b9C63290E543902dA4eb63c34029382FF552"]}},{"cohort":{"cohortAddress":"0x9442Cf0eCC338C09301bA25517bB2C5fF8a7794B","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x65ad6A2288b2Dd23E466226397c8F5D1794e58fC","0x4F6cbacA3151f7746273004Fd7295933a9b70E69","0x692AC1e363ae34b6B489148152b12e2785a3d8d6","0x2651b9C63290E543902dA4eb63c34029382FF552"]}},{"cohort":{"cohortAddress":"0x9442Cf0eCC338C09301bA25517bB2C5fF8a7794B","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x65ad6A2288b2Dd23E466226397c8F5D1794e58fC","0x4F6cbacA3151f7746273004Fd7295933a9b70E69","0x692AC1e363ae34b6B489148152b12e2785a3d8d6","0x2651b9C63290E543902dA4eb63c34029382FF552"]}},{"cohort":{"cohortAddress":"0x9442Cf0eCC338C09301bA25517bB2C5fF8a7794B","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x65ad6A2288b2Dd23E466226397c8F5D1794e58fC","0x4F6cbacA3151f7746273004Fd7295933a9b70E69","0x692AC1e363ae34b6B489148152b12e2785a3d8d6","0x2651b9C63290E543902dA4eb63c34029382FF552"]}},{"cohort":{"cohortAddress":"0x9442Cf0eCC338C09301bA25517bB2C5fF8a7794B","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x65ad6A2288b2Dd23E466226397c8F5D1794e58fC","0x4F6cbacA3151f7746273004Fd7295933a9b70E69","0x692AC1e363ae34b6B489148152b12e2785a3d8d6","0x2651b9C63290E543902dA4eb63c34029382FF552"]}},{"cohort":{"cohortAddress":"0xf4f079e8834ff38be9b719c70b4a4195ad6199e5","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x831753DD7087CaC61aB5644b308642cc1c33Dc13","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xC004e2318722EA2b15499D6375905d75Ee5390B8","0x40038C83E459937A988b669f1159cC78d8fdad68"]}},{"cohort":{"cohortAddress":"0xf4f079e8834ff38be9b719c70b4a4195ad6199e5","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x831753DD7087CaC61aB5644b308642cc1c33Dc13","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xC004e2318722EA2b15499D6375905d75Ee5390B8","0x40038C83E459937A988b669f1159cC78d8fdad68"]}},{"cohort":{"cohortAddress":"0xf4f079e8834ff38be9b719c70b4a4195ad6199e5","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x831753DD7087CaC61aB5644b308642cc1c33Dc13","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xC004e2318722EA2b15499D6375905d75Ee5390B8","0x40038C83E459937A988b669f1159cC78d8fdad68"]}},{"cohort":{"cohortAddress":"0xf4f079e8834ff38be9b719c70b4a4195ad6199e5","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x831753DD7087CaC61aB5644b308642cc1c33Dc13","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xC004e2318722EA2b15499D6375905d75Ee5390B8","0x40038C83E459937A988b669f1159cC78d8fdad68"]}},{"cohort":{"cohortAddress":"0xf4f079e8834ff38be9b719c70b4a4195ad6199e5","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0x831753DD7087CaC61aB5644b308642cc1c33Dc13","0x1e289178612F5B6d32f692E312DcF783c74b2162","0xC004e2318722EA2b15499D6375905d75Ee5390B8","0x40038C83E459937A988b669f1159cC78d8fdad68"]}},{"cohort":{"cohortAddress":"0x96537bac94c8adc38fd17d70077ebcb958c1362f","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xfC5a11D0fe8B5AD23b8A643Df5EAE60b979CE1bF","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xCB898b0eFb084Df14dd8E018dA37B4d0f06aB26D"]}},{"cohort":{"cohortAddress":"0x96537bac94c8adc38fd17d70077ebcb958c1362f","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xfC5a11D0fe8B5AD23b8A643Df5EAE60b979CE1bF","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xCB898b0eFb084Df14dd8E018dA37B4d0f06aB26D"]}},{"cohort":{"cohortAddress":"0x96537bac94c8adc38fd17d70077ebcb958c1362f","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xfC5a11D0fe8B5AD23b8A643Df5EAE60b979CE1bF","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xCB898b0eFb084Df14dd8E018dA37B4d0f06aB26D"]}},{"cohort":{"cohortAddress":"0x96537bac94c8adc38fd17d70077ebcb958c1362f","proxies":[],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xfC5a11D0fe8B5AD23b8A643Df5EAE60b979CE1bF","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xCB898b0eFb084Df14dd8E018dA37B4d0f06aB26D"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xB558C3c7Af7F1d437Fe82914426a63c13c6a3a80"],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xd99baFe5031cC8B345cb2e8c80135991F12D7130","0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xA947239ADC5D53Aa03E5f661a2e16d7B009fC5A6","0x438B28C5AA5F00a817b7Def7cE2Fb3d5d1970974"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xB558C3c7Af7F1d437Fe82914426a63c13c6a3a80"],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xd99baFe5031cC8B345cb2e8c80135991F12D7130","0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xA947239ADC5D53Aa03E5f661a2e16d7B009fC5A6","0x438B28C5AA5F00a817b7Def7cE2Fb3d5d1970974"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xB558C3c7Af7F1d437Fe82914426a63c13c6a3a80"],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xd99baFe5031cC8B345cb2e8c80135991F12D7130","0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xA947239ADC5D53Aa03E5f661a2e16d7B009fC5A6","0x438B28C5AA5F00a817b7Def7cE2Fb3d5d1970974"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xB558C3c7Af7F1d437Fe82914426a63c13c6a3a80"],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xd99baFe5031cC8B345cb2e8c80135991F12D7130","0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xA947239ADC5D53Aa03E5f661a2e16d7B009fC5A6","0x438B28C5AA5F00a817b7Def7cE2Fb3d5d1970974"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xB558C3c7Af7F1d437Fe82914426a63c13c6a3a80"],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xd99baFe5031cC8B345cb2e8c80135991F12D7130","0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xA947239ADC5D53Aa03E5f661a2e16d7B009fC5A6","0x438B28C5AA5F00a817b7Def7cE2Fb3d5d1970974"]}},{"cohort":{"cohortAddress":"0xeE32c30C1fAa0364d3022B6Ca2456363DadAF71b","proxies":["0xB558C3c7Af7F1d437Fe82914426a63c13c6a3a80"],"tokens":["0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6","0xd99baFe5031cC8B345cb2e8c80135991F12D7130","0xE1C110E1B1b4A1deD0cAf3E42BfBdbB7b5d7cE1C","0x34C1b299A74588D6Abdc1b85A53345A48428a521","0xA947239ADC5D53Aa03E5f661a2e16d7B009fC5A6","0x438B28C5AA5F00a817b7Def7cE2Fb3d5d1970974"]}}]}} \ No newline at end of file diff --git a/projects/unifi-protocol-staking/index.js b/projects/unifi-protocol-staking/index.js deleted file mode 100644 index cce19353419..00000000000 --- a/projects/unifi-protocol-staking/index.js +++ /dev/null @@ -1,33 +0,0 @@ - - -const { get } = require('../helper/http') -const { toUSDTBalances } = require('../helper/balances') -let _stakedResponse - -const mapping = { - harmony: 'Harmony', - icon: 'Icon', - ontology: 'Ontology', - tron: 'Tron', - iotex: 'IoTeX', -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, -} - -function stakingChain(chain) { - module.exports[chain] = { - tvl: async () => { - return 0 - // if (!_stakedResponse) _stakedResponse = get('https://data.unifi.report/api/stake-data/grouped') - // const { results } = await _stakedResponse - // const blockchainName = mapping[chain] - // const { delegated_stake_usd } = results.find(i => i.blockchain === blockchainName) - // return toUSDTBalances(delegated_stake_usd) - } - } -} - -Object.keys(mapping).forEach(stakingChain) \ No newline at end of file diff --git a/projects/unifi-protocol/index.js b/projects/unifi-protocol/index.js deleted file mode 100644 index a40d5fe2aa8..00000000000 --- a/projects/unifi-protocol/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const dexExports = { - timetravel: false, - misrepresentedTokens: true, - avax: { - tvl: getUniTVL({ - factory: '0x839547067bc885db205F5fA42dcFeEcDFf5A8530', - useDefaultCoreAssets: true, - }), - }, - bsc: { - tvl: getUniTVL({ - factory: '0xA5Ba037Ec16c45f8ae09e013C1849554C01385f5', - useDefaultCoreAssets: true, - }), - }, - iotex: { - tvl: getUniTVL({ - factory: '0x839547067bc885db205F5fA42dcFeEcDFf5A8530', - useDefaultCoreAssets: true, - }), - }, - ontology_evm: { - tvl: getUniTVL({ - factory: '0x839547067bc885db205F5fA42dcFeEcDFf5A8530', - useDefaultCoreAssets: true, - }), - }, - ethereum: { - tvl: getUniTVL({ - factory: '0x08e7974CacF66C5a92a37c221A15D3c30C7d97e0', - useDefaultCoreAssets: true, - }), - staking: staking('0x2e2fb3db9ecdb9b7d9eb05e00964c8941f7171a7', '0x441761326490cACF7aF299725B6292597EE822c2') - }, - fantom: { - tvl: getUniTVL({ - factory: '0x839547067bc885db205F5fA42dcFeEcDFf5A8530', - useDefaultCoreAssets: true, - }), - }, - harmony: { - tvl: getUniTVL({ - factory: '0x7aB6ef0cE51a2aDc5B673Bad7218C01AE9B04695', - useDefaultCoreAssets: true, - }), - }, - polygon: { - tvl: getUniTVL({ - factory: '0x4FEE52912f81B78C3CdcB723728926ED6a893D27', - useDefaultCoreAssets: true, - }), - }, - bittorrent: { - tvl: getUniTVL({ - factory: '0xCAaB36C77841647dC9955B3b1D03710E9B9F127f', - useDefaultCoreAssets: true, - }), - }, - tron: { - tvl: getUniTVL({ - factory: 'TUtmsH4DZewoihrybFU2RG1pdW9sBhuSRZ', - useDefaultCoreAssets: true, - }), - }, -} - -module.exports = dexExports \ No newline at end of file diff --git a/projects/unihedge/index.js b/projects/unihedge/index.js deleted file mode 100644 index a8d1f14fad2..00000000000 --- a/projects/unihedge/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - owner: '0xdD90A0504aA3215Dd0E7fb45471A0B133CC3f567', // UniHedge contract - token: ADDRESSES.polygon.USDC_CIRCLE // USDC -} - -const tvl = async (api) => { - const { owner, token } = config - return api.sumTokens({ token, owner }) -} - -module.exports = { - methodology: "TVL is calculated by summing the DAI (accounting token) locked in the UniHedge contract.", - polygon: { tvl } -} diff --git a/projects/uniiotx/index.js b/projects/uniiotx/index.js deleted file mode 100644 index 814b9ff6f79..00000000000 --- a/projects/uniiotx/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress } = require("../helper/tokenMapping"); - -const UNIIOTX_TOKEN_CONTRACT = ADDRESSES.bob.uniBTC; -const IOTX_STAKING_CONTRACT = "0x2c914Ba874D94090Ba0E6F56790bb8Eb6D4C7e5f"; - -async function tvl(api) { - const totalSupply = await api.call({ - abi: 'erc20:totalSupply', - target: UNIIOTX_TOKEN_CONTRACT, - }); - - const exchangeRatio = await api.call({ - abi: 'function exchangeRatio() external view returns (uint ratio)', - target: IOTX_STAKING_CONTRACT, - }); - - api.add(nullAddress, totalSupply * exchangeRatio / 1e18) -} - -module.exports = { - start: '2023-09-14', - methodology: 'Counts the total amount of IOTX under management by the IOTXStaking contract.', - iotex: { - tvl, - } -}; diff --git a/projects/unilend-protocol/index.js b/projects/unilend-protocol/index.js deleted file mode 100644 index c83fa43041e..00000000000 --- a/projects/unilend-protocol/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - }; - - const CONFIG = { - unit0: ['0x99118c1Ca7D0DC824719E740d4b4721009a267d6'], // Unilend on Unit Zero - }; - - const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: abi.getAllReservesTokens }); - const calls = []; - - poolDatas.forEach((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => { - calls.push({ target: pool, params: tokenAddress }); - }); - }); - - const reserveData = await api.multiCall({ - abi: isBorrowed ? abi.getReserveData : abi.getReserveTokensAddresses, - calls, - }); - - const tokensAndOwners = []; - - reserveData.forEach((data, i) => { - const token = calls[i].params; - if (isBorrowed) { - api.add(token, data.totalVariableDebt); - api.add(token, data.totalStableDebt); - } else { - tokensAndOwners.push([token, data.aTokenAddress]); - } - }); - - if (isBorrowed) return api.getBalances(); - return api.sumTokens({ tokensAndOwners }); - }; - - module.exports.methodology = "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted."; - - Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - borrowed: (api) => fetchReserveData(api, poolDatas, true), - }; - }); - \ No newline at end of file diff --git a/projects/unilend-v2/index.js b/projects/unilend-v2/index.js deleted file mode 100644 index ef289fe48a1..00000000000 --- a/projects/unilend-v2/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const config = { - ethereum: { factory: '0x7f2E24D2394f2bdabb464B888cb02EbA6d15B958', fromBlock: 19213560 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const data = await getPools(api) - const ownerTokens = data.map(i => [[i.token0, i.token1], i.pool]) - return api.sumTokens({ ownerTokens }) - }, - borrowed: async (api) => { - const data = await getPools(api) - const pools = data.map(i => i.pool) - const token0s = data.map(i => i.token0) - const token1s = data.map(i => i.token1) - const tokenOdata = await api.multiCall({ abi: 'function token0Data() view returns (uint256, uint256, uint256 totalBorrow)', calls: pools }) - const token1data = await api.multiCall({ abi: 'function token1Data() view returns (uint256, uint256, uint256 totalBorrow)', calls: pools }) - api.add(token0s, tokenOdata.map(i => i.totalBorrow)) - api.add(token1s, token1data.map(i => i.totalBorrow)) - }, - } - - async function getPools(api) { - return getLogs({ - api, - target: factory, - eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, address pool, uint256)', - onlyArgs: true, - fromBlock, - }) - } -}) - -module.exports.ethereum.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' -// module.exports.hallmarks = [ -// ['2025-01-15', 'Protocol was exploited'], -// ] \ No newline at end of file diff --git a/projects/unilend/index.js b/projects/unilend/index.js deleted file mode 100644 index 730ff89f26a..00000000000 --- a/projects/unilend/index.js +++ /dev/null @@ -1,20 +0,0 @@ - -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking.js"); - -const UnilendContract = "0x13A145D215182924c89F2aBc7D358DCc72F8F788"; -const tvl = { tvl: sumTokensExport({ owners: [UnilendContract], fetchCoValentTokens: true, blacklistedTokens: ['0x0202Be363B8a4820f3F4DE7FaF5224fF05943AB1', '0x5b4cf2c120a9702225814e18543ee658c5f8631e']})} - -module.exports = { - ethereum: { - tvl, - staking: staking(UnilendContract,"0x0202Be363B8a4820f3F4DE7FaF5224fF05943AB1") - }, - polygon: tvl, - bsc: { - tvl, - staking: staking(UnilendContract,"0x2645d5f59D952ef2317C8e0AaA5A61c392cCd44d") - }, - methodology: - "We count liquidity on the Pools through UnilendFlashLoansCore Contract", -}; diff --git a/projects/union-finance/index.js b/projects/union-finance/index.js deleted file mode 100644 index ce9c466c5bb..00000000000 --- a/projects/union-finance/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const methodologies = require('../helper/methodologies'); - -const config = { - ethereum: { - userManager: "0x49c910Ba694789B58F53BFF80633f90B8631c195", - underlying: ADDRESSES.ethereum.DAI, - uToken: "0x954F20DF58347b71bbC10c94827bE9EbC8706887", - }, - arbitrum: { - userManager: "0xb71F3D4342AaE0b8D531E14D2CF2F45d6e458A5F", - underlying: ADDRESSES.arbitrum.DAI, - uToken: "0x954F20DF58347b71bbC10c94827bE9EbC8706887", - }, - optimism: { - userManager: "0x8E195D65b9932185Fcc76dB5144534e0f3597628", - underlying: ADDRESSES.optimism.DAI, - uToken: "0xE478b5e7A423d7CDb224692d0a816CA146A744b2", - }, - base: { - userManager: "0xfd745A1e2A220C6aC327EC55d2Cb404CD939f56b", - underlying: ADDRESSES.base.USDC, - uToken: "0xc2447f36FfdA08E278D25D08Ea91D942f0C2d6ea", - }, -}; - -const abi = { - totalStaked: "uint256:totalStaked", - totalRedeemable: "uint256:totalRedeemable", - totalReserves: "uint256:totalReserves", - totalBorrows: "uint256:totalBorrows", -}; - -async function tvl(api) { - const { userManager, underlying, uToken } = config[api.chain] - const bals = await api.batchCall([ - { target: userManager, abi: abi.totalStaked }, - { target: uToken, abi: abi.totalRedeemable }, - { target: uToken, abi: abi.totalReserves }, - ]) - bals.forEach(i => api.add(underlying, i)) -} - -async function borrowed(api) { - const { underlying, uToken } = config[api.chain] - const borrows = await api.call({ target: uToken, abi: abi.totalBorrows, }) - api.add(underlying, borrows) -} - -module.exports = { - methodology: methodologies.lendingMarket, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl, borrowed, - } -}) diff --git a/projects/union/index.js b/projects/union/index.js deleted file mode 100644 index c0b21671287..00000000000 --- a/projects/union/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const utils = require("../helper/utils"); - -const url = "https://c-op-api.unn.finance/v1/pools" - -const tvl = async (api) => { - const { data } = await utils.fetchURL(url) - data.pools.forEach(({ liquidity }) => { - api.addUSDValue(Math.round(liquidity)) - }) -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { tvl }, -}; diff --git a/projects/unipilot/index.js b/projects/unipilot/index.js deleted file mode 100644 index 74039450c36..00000000000 --- a/projects/unipilot/index.js +++ /dev/null @@ -1,150 +0,0 @@ -const { cachedGraphQuery } = require('../helper/cache') -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); -const getPositionDetails = - "function getPositionDetails() returns (uint256 amount0, uint256 amount1, uint256 fees0, uint256 fees1, uint128 baseLiquidity, uint128 rangeLiquidity)"; - -const FACTORY_ADDRESSES = { - ethereum: { - activeFactory: "0x4b8e58d252ba251e044ec63125e83172eca5118f", - passiveFactory: "0x06c2ae330c57a6320b2de720971ebd09003c7a01", - }, - polygon: { - activeFactory: "0x95b77505b38f8a261ada04f54b8d0cda08904708", - passiveFactory: "0x2536527121fc1048ae5d45327a34241a355a6a95", - activeFactoryQ: "0xC99fA77AB721817Da9dD3C3b4F8ecB13772FCECE", - passiveFactoryQ: "0xbd712D4dbd4b8d0cD2A98aDb0f9fC2928031b16F", - }, - arbitrum: { - activeFactory: "0xca69c359e3297aa855e77f83e071feab17f0ede6", - passiveFactory: "0x6900c436cf15d6d0016dc71a5ce5ade843031efd", - }, - bsc: { - activeFactory: "0x9c7cB0BB03044D6c1c472b26058bFA61B9956D22", - passiveFactory: "0x6900c436CF15D6D0016dC71A5CE5ADe843031eFd", - }, - polygon_zkevm: { - activeFactoryQ: "0xC99fA77AB721817Da9dD3C3b4F8ecB13772FCECE", - passiveFactoryQ: "0xbd712D4dbd4b8d0cD2A98aDb0f9fC2928031b16F", - }, - dogechain: { - activeFactoryQ: "0x16C6D274e076c7b36a4D3fEE2f9AB2E12d220bd5", - passiveFactoryQ: "0x30BeB7A1d66CBE9594E159979F0c7e31A9F68e74", - }, -}; - -const DEFAULT_VAULT_CREATION_TOPIC = "VaultCreated(address,address,uint16,uint24,address)"; -const VAULT_CREATION_TOPIC = { - ethereum: "VaultCreated(address,address,uint24,address)", -}; - -const PILOT_STAKING_CONTRACT = "0xc9256e6e85ad7ac18cd9bd665327fc2062703628"; -const PILOT = "0x37c997b35c619c21323f3518b9357914e8b99525"; - -const START_BLOCKS = { - ethereum: { - activeFactory: 14495907, - passiveFactory: 14495929, - }, - polygon: { - activeFactory: 34288237, - passiveFactory: 34371363, - activeFactoryQ: 42886155, - passiveFactoryQ: 42212527, - }, - arbitrum: { - activeFactory: 59667444, - passiveFactory: 58774134, - }, - bsc: { - activeFactory: 27139991, - passiveFactory: 27140068, - }, - polygon_zkevm: { - activeFactoryQ: 300919, - passiveFactoryQ: 209294, - }, - dogechain: { - activeFactoryQ: 12700049, - passiveFactoryQ: 12829893, - }, -}; - -async function getVaultLogs(vaults, factoryType, api) { - const chain = api.chain - let topic = DEFAULT_VAULT_CREATION_TOPIC - if (VAULT_CREATION_TOPIC[chain]) - topic = VAULT_CREATION_TOPIC[chain] - - if (factoryType === "activeFactoryQ" || factoryType === "passiveFactoryQ") - topic = 'VaultCreated(address,address,uint16,address)' - - const vaultLogs = await getLogs({ - target: FACTORY_ADDRESSES[chain][factoryType], - topic, - fromBlock: START_BLOCKS[chain][factoryType], - api, - }); - - for (let log of vaultLogs) { - vaults[`0x${log.topics[3].substr(-40)}`.toLowerCase()] = { - token0Address: `0x${log.topics[1].substr(-40)}`, - token1Address: `0x${log.topics[2].substr(-40)}`, - }; - } - - return vaults; -} - -async function tvl(api) { - let vaults = {}; - if (api.chain === "dogechain") { - const res = await cachedGraphQuery('unipilot/'+api.chain, 'https://apis.unipilot.io:5000/subgraphs/name/hamzabhatti125/stats-dogechain', `{ - vaults { - token0 { - id - } - token1 { - id - } - id - } - }`) - res.vaults.forEach(({ token0, token1, id }) => { - vaults[id] = { - token0Address: token0.id, - token1Address: token1.id, - } - }) - } else { - for (const label of Object.keys(START_BLOCKS[api.chain])) - await getVaultLogs(vaults, label, api) - - } - - const ownerTokens = Object.entries(vaults).map(([v, i]) => [[i.token0Address, i.token1Address], v]) - const vaultKeys = Object.keys(vaults) - - //get vault reserves(amount, fees) from contract - const vaultReserves = await api.multiCall({ abi: getPositionDetails, calls: vaultKeys, }) - - vaultKeys.forEach((v, i) => { - i = vaultReserves[i] - api.add(vaults[v].token0Address, i.amount0) - api.add(vaults[v].token0Address, i.fees0) - api.add(vaults[v].token1Address, i.amount1) - api.add(vaults[v].token1Address, i.fees1) - }) - return sumTokens2({ api, ownerTokens }) -} - -module.exports = { - doublecounted: true, -}; - -Object.keys(FACTORY_ADDRESSES).forEach(chain => { - module.exports[chain] = { tvl } -}) - -module.exports.ethereum.staking = staking(PILOT_STAKING_CONTRACT, PILOT) \ No newline at end of file diff --git a/projects/unipower/index.js b/projects/unipower/index.js deleted file mode 100644 index 16f9d487550..00000000000 --- a/projects/unipower/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); - -/*** Ethereum Addresses ***/ - // Static Power Part -const staticPowerContract = "0xBaB61589f963534460E2764A1C0d840B745A9140"; -const POWER_eth = "0xF2f9A7e93f845b3ce154EfbeB64fB9346FCCE509"; - - // ETH Prime Part -const ethPrimeContract = "0xe40e1531a4B56fB65571AD2ca43Dc0048a316a2D"; -const WETH = ADDRESSES.ethereum.WETH; - - // PowerDAO Part -const liquidityVaultContracts = [ - "0xC73bb871DBf66958242DeBA79E4dB19bc2934513", - "0x101210a79e3e0620bCAfb771bCddf1B5EA72584D", -]; -const WETH_POWER_UNIV2 = "0x49F9316EB22de90d9343C573fbD7Cc0B5ec6e19f"; - -/*** Polygon Addresses ***/ - // PolyShield Part -const stakingContract = "0x0Ec74989E6f0014D269132267cd7c5B901303306"; -const POWER_polygon = "0x00D5149cDF7CEC8725bf50073c51c4fa58eCCa12"; -const POWER_USDC_UNIV2 = "0x9af0c1eeb61dE5630899C224DB3D6f3F064da047"; - -module.exports = { - ethereum: { - staking: staking(staticPowerContract, POWER_eth), - pool2: staking(liquidityVaultContracts, [WETH_POWER_UNIV2]), - tvl: sumTokensExport({ owner:ethPrimeContract, token: nullAddress }), - }, - polygon: { - tvl: async () => ({}), - staking: staking(stakingContract, POWER_polygon), - pool2: staking(stakingContract, POWER_USDC_UNIV2), - }, - methodology: - "Counts tvl of WETH deposited through ETH Prime Contract, also there are pool2 and staking part from different seccions. Polygon tvl consist of staked POWER and the POWER/USDC LP pool2", -}; diff --git a/projects/unirexfinance/index.js b/projects/unirexfinance/index.js deleted file mode 100644 index b938b8c81a5..00000000000 --- a/projects/unirexfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); - -module.exports = masterchefExports({ - chain: 'fantom', - nativeToken: '0x350a911687eb9710f1d36792f26d419577b127a8', - masterchef: '0x75417a5647b88dc50f341cbed5db9ad6c3027ed5', -}) \ No newline at end of file diff --git a/projects/unirouter/index.js b/projects/unirouter/index.js deleted file mode 100644 index 96c1c4e3e55..00000000000 --- a/projects/unirouter/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); - -module.exports = { - bsquared: { - tvl: sumTokensExport({ owners: ['0xd5B5f1CA0fa5636ac54b0a0007BA374A1513346e', '0xe677F4B6104726D76DeBc681d7a862CE269aA8F3'], tokens: [ADDRESSES.null] }), - }, -}; diff --git a/projects/uniswap-v1/index.js b/projects/uniswap-v1/index.js deleted file mode 100644 index 2cabc673fe6..00000000000 --- a/projects/uniswap-v1/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { nullAddress } = require('../helper/unwrapLPs') - -const uniFactory = '0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95' - -const abi = { - getExchange: "function getExchange(address token) view returns (address)", - getTokenWithId: "function getTokenWithId(uint256 token_id) view returns (address)", - tokenCount: "function tokenCount() view returns (uint256)", -} - -const tvl = async (api) => { - let pools = await api.fetchList({ lengthAbi: abi.tokenCount, itemAbi: abi.getTokenWithId, target: uniFactory, itemAbi2: abi.getExchange, }) - pools = pools.filter(i => i !== nullAddress) - await api.sumTokens({ owners: pools, tokens: [nullAddress] }) - const balancesV2 = api.getBalancesV2() - return balancesV2.clone(2).getBalances() // // Since Uniswap V1 only allowed swaps against ETH, it's enough to know the amount of ETH and multiply it by two to determine the pool's value without needing to know the price of the collateral in question -} - -module.exports = { - misrepresentedTokens: true, - methodology: `Counts the tokens in ETH value locked in AMM pools`, - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/uniswap-v2/index.js b/projects/uniswap-v2/index.js deleted file mode 100644 index 880f41f3d12..00000000000 --- a/projects/uniswap-v2/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { getChainTvl } = require('../helper/getUniSubgraphTvl'); -const { get } = require('../helper/http'); -const { getUniTVL } = require('../helper/unknownTokens'); - -const v2graph = getChainTvl({ - ethereum: 'A3Np3RQbaBA6oKJgiwDJeo5T3zrYfGHPWFYayMwtNDum' -}) - -module.exports = { - misrepresentedTokens: true, - methodology: `Counts the tokens locked on AMM pools, pulling the data from the 'ianlapham/uniswapv2' subgraph`, - ethereum: { - tvl: v2graph('ethereum'), - }, -} - -const config = { - // ethereum: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f', - optimism: '0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf', - arbitrum: '0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9', - avax: '0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C', - base: '0x8909dc15e40173ff4699343b6eb8132c65e18ec6', - bsc: '0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6', - polygon: '0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C', - celo: '0x79a530c8e2fA8748B7B40dd3629C0520c2cCf03f', - zora: '0x0F797dC7efaEA995bB916f268D919d0a1950eE3C', - unichain: '0x1F98400000000000000000000000000000000002', -} - -Object.keys(config).forEach(chain => { - const factory = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }) - } -}) - -module.exports.isHeavyProtocol = true - -const graphChains = ['base'] -graphChains.forEach(chain => { - module.exports[chain] = { tvl: tvlViaGraph } -}) - -async function tvlViaGraph(api) { - const endpoint = `https://interface.gateway.uniswap.org/v2/uniswap.explore.v1.ExploreStatsService/ProtocolStats?connect=v1&encoding=json&message=%7B%22chainId%22%3A%22${api.chainId}%22%7D` - const res = await get(endpoint, { - headers: { - 'origin': 'https://app.uniswap.org', - } - }) - const v2 = res.dailyProtocolTvl.v2 - const tvl = v2[v2.length - 1].value - api.addUSDValue(tvl) -} \ No newline at end of file diff --git a/projects/uniswap-v4/index.js b/projects/uniswap-v4/index.js deleted file mode 100644 index a3da620bcc1..00000000000 --- a/projects/uniswap-v4/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs2 } = require('../helper/cache/getLogs'); -const { nullAddress } = require("../helper/tokenMapping"); -const { getEnv } = require("../helper/env"); - -// from https://docs.uniswap.org/contracts/v4/deployments -const config = { - ethereum: { factory: "0x000000000004444c5dc75cB358380D2e3dE08A90", fromBlock: 21688329 }, - optimism: { factory: "0x9a13f98cb987694c9f086b1f5eb990eea8264ec3", fromBlock: 130947675 }, - base: { factory: "0x498581ff718922c3f8e6a244956af099b2652b2b", fromBlock: 25350988 }, - arbitrum: { factory: "0x360e68faccca8ca495c1b759fd9eee466db9fb32", fromBlock: 297842872, blacklistedTokens: ['0x1a6b3a62391eccaaa992ade44cd4afe6bec8cff1'] }, - polygon: { factory: "0x67366782805870060151383f4bbff9dab53e5cd6", fromBlock: 66980384 }, - blast: { factory: "0x1631559198a9e474033433b2958dabc135ab6446", fromBlock: 14377311 }, - zora: { factory: "0x0575338e4c17006ae181b47900a84404247ca30f", fromBlock: 25434534 }, - wc: { factory: "0xb1860d529182ac3bc1f51fa2abd56662b7d13f33", fromBlock: 9111872 }, - ink: { factory: "0x360e68faccca8ca495c1b759fd9eee466db9fb32", fromBlock: 4580556 }, - soneium: { factory: "0x360e68faccca8ca495c1b759fd9eee466db9fb32", fromBlock: 2473300 }, - avax: { factory: "0x06380c0e0912312b5150364b9dc4542ba0dbbc85", fromBlock: 56195376 }, - bsc: { factory: "0x28e2ea090877bf75740558f6bfb36a5ffee9e9df", fromBlock: 45970610 }, - unichain: { factory: "0x1F98400000000000000000000000000000000004", fromBlock: 1 }, -} - -const eventAbi = "event Initialize(bytes32 indexed id, address indexed currency0, address indexed currency1, uint24 fee, int24 tickSpacing, address hooks, uint160 sqrtPriceX96, int24 tick)" - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (!getEnv('IS_RUN_FROM_CUSTOM_JOB')) throw new Error('This job is not meant to be run directly, please use the custom job feature') - - let compressType - if (chain === 'base') compressType = 'v1' - const logs = await getLogs2({ api, factory, eventAbi, fromBlock, compressType, }) - const tokenSet = new Set() - const ownerTokens = [] - logs.forEach(log => { - tokenSet.add(log.currency0) - tokenSet.add(log.currency1) - if (log.hooks !== nullAddress) { - ownerTokens.push([[log.currency0, log.currency1], log.hooks]) - } - }) - ownerTokens.push([Array.from(tokenSet), factory]) - return sumTokens2({ api, ownerTokens, permitFailure: true, sumChunkSize: 30000, sumChunkSleep: 5000, blacklistedTokens: config[chain].blacklistedTokens ? config[chain].blacklistedTokens : [] }) - } - } -}) - -module.exports.isHeavyProtocol = true; \ No newline at end of file diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js deleted file mode 100644 index 188746abe5c..00000000000 --- a/projects/uniswap/index.js +++ /dev/null @@ -1,139 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const { cachedGraphQuery, getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { post } = require('../helper/http') - -const graphs = { - ethereum: "5AXe97hGLfjgFAc6Xvg6uDpsD5hqpxrxcma9MoxG7j7h", - optimism: "Cghf4LfVqPiFw6fp6Y5X5Ubc8UpmUhSfJL82zwiBFLaj", - arbitrum: 'FbCGRftH4a3yZugY7TnbYgPJVEv2LvMT6oF1fxPe9aJM', - polygon: "3hCPRGf4z88VC5rsBKU5AA9FBBq5nF3jbKJG7VZCbhjm", - celo: "ESdrTJ3twMwWVoQ1hUE2u7PugEHX3QkenudD6aXCkDQ4", - bsc: "F85MNzUGYqgSHSHRGgeVMNsdnW1KtZSVgFULumXRZTw2", - // avax: "3Pwd3cqFKbqKAyaJfGUVmJJ7oYbFQLDa19iB27iMxebD", - base: "43Hwfi3dJSoGpyas9VwNoDAv55yjgGrPpNSmbQZArzMG", -} - -const blacklists = { - base: ['0xb17d69c91135516b0256c67e8bd32cd238b56161'], - ethereum: ['0xa850478adaace4c08fc61de44d8cf3b64f359bec', '0x055284a4ca6532ecc219ac06b577d540c686669d', '0x8c0411f2ad5470a66cb2e9c64536cfb8dcd54d51', '0x277667eb3e34f134adf870be9550e9f323d0dc24', '0x4c83a7f819a5c37d64b4c5a2f8238ea082fa1f4e', '0x290a6a7460b308ee3f19023d2d00de604bcf5b42', '0x4b5ab61593a2401b1075b90c04cbcdd3f87ce011', '0x582d23c7ec6b59afd041a522ff64ff081e8c0d2d', '0x1f98431c8ad98523631ae4a59f267346ea31f984', '0xaf44e10ed87d90f28bff2d1fbef1f64b090f5ebb', '0xdfef6416ea3e6ce587ed42aa7cb2e586362cbbfa', '0x7e9c15c43f0d6c4a12e6bdff7c7d55d0f80e3e23', '0x1111111becab3c8866712ebf23fc4741010b8dce', '0x77777777b79f2fa437bf526169f98aa0c884c4b7', '0x630d98424efe0ea27fb1b3ab7741907dffeaad78'], - arbitrum: ['0xd4d2f4110878a33ea5b97f0665e518253446161a', '0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1', '0x1a6b3a62391eccaaa992ade44cd4afe6bec8cff1'], - polygon: ['0x8d52c2d70a7c28a9daac2ff12ad9bfbf041cd318', '0x1f98431c8ad98523631ae4a59f267346ea31f984', '0xd5302a8ead77b85ea3326b45f4714e0b3432b233', '0xc951ab482ff11d8df636742e1f1c3fc8037427a9', '0xbF7970D56a150cD0b60BD08388A4A75a27777777'], -} - -function v3TvlPaged(chain) { - return async (api) => { - const block = await api.getBlock() - - let graphQueryPaged = ` - query poolQuery($lastId: String, $block: Int) { - pools(block: { number: $block } first:1000 where: {id_gt: $lastId totalValueLockedUSD_gt: 100} subgraphError: allow) { - id - token0 { id } - token1 { id } - } - } - ` - - const pools = await cachedGraphQuery('uniswap-v3/' + api.chain, graphs[chain], graphQueryPaged, { variables: { block: block - 500 }, fetchById: true }) - const blacklistedTokens = blacklists[chain] || [] - - const tokensAndOwners = pools.map(i => ([[i.token0.id, i.id], [i.token1.id, i.id]])).flat() - return sumTokens2({ api, tokensAndOwners, blacklistedTokens, permitFailure: true }) - } -} - -module.exports = { - methodology: `Counts the tokens locked on AMM pools, pulling the data from the 'ianlapham/uniswapv2' subgraph`, - timetravel: false, - hallmarks: [ - [1588610042, "UNI V2 Launch"], - [1598412107, "SushiSwap launch"], - [1599535307, "SushiSwap migration"], - [1600226507, "LM starts"], - [1605583307, "LM ends"], - [1617333707, "FEI launch"], - [1620156420, "UNI V3 Launch"] - ], - ...uniV3Export({ - // base: { factory: '0x33128a8fc17869897dce68ed026d694621f6fdfd', fromBlock: 1371680, blacklistedTokens: blacklists.base }, - celo: { factory: '0xAfE208a311B21f13EF87E33A90049fC17A7acDEc', fromBlock: 13916355, }, - moonbeam: { factory: '0x28f1158795a3585caaa3cd6469cd65382b89bb70', fromBlock: 4313505 }, - era: { factory: '0x8FdA5a7a8dCA67BBcDd10F02Fa0649A937215422', fromBlock: 12637080 }, - boba: { factory: "0xFFCd7Aed9C627E82A765c3247d562239507f6f1B", fromBlock: 969351, }, - rsk: { factory: "0xAf37Ec98A00fD63689cF3060Bf3b6784e00CaD82", fromBlock: 5829207, }, - scroll: { factory: "0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919", fromBlock: 1367, }, - blast: { factory: "0x792edade80af5fc680d96a2ed80a44247d2cf6fd", fromBlock: 400903, }, - linea: { factory: "0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9", fromBlock: 25247, }, - manta: { factory: "0x06D830e15081f65923674268121FF57Cc54e4e23", fromBlock: 1191705 }, - avax: { factory: "0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD", fromBlock: 27832972 }, - taiko: { factory: "0x75FC67473A91335B5b8F8821277262a13B38c9b3", fromBlock: 961 }, - sei: { factory: "0x75FC67473A91335B5b8F8821277262a13B38c9b3", fromBlock: 79245151 }, - mantle: { factory: "0x0d922Fb1Bc191F64970ac40376643808b4B74Df9", fromBlock: 63795918 }, - polygon_zkevm: { factory: "0xff83c3c800Fec21de45C5Ec30B69ddd5Ee60DFC2", fromBlock: 8466867 }, - xdai: { factory: "0xe32F7dD7e3f098D518ff19A22d5f028e076489B1", fromBlock: 27416614 }, - bob: { factory: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", fromBlock: 5188280 }, - lisk: { factory: "0x0d922Fb1Bc191F64970ac40376643808b4B74Df9", fromBlock: 577168 }, - wc: { factory: "0x7a5028BDa40e7B173C278C5342087826455ea25a", fromBlock: 1603366 }, - corn: { factory: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", fromBlock: 10878 }, - telos: { factory: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", fromBlock: 386633562 }, - goat: { factory: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", fromBlock: 848385 }, - hemi: { factory: "0x346239972d1fa486FC4a521031BC81bFB7D6e8a4", fromBlock: 1293598 }, - sonic: { factory: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", fromBlock: 322744 }, - unichain: { factory: "0x1F98400000000000000000000000000000000003", fromBlock: 1 }, - lightlink_phoenix: { factory: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", fromBlock: 131405097 }, - xdc: { factory: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", fromBlock: 87230664, blacklistedTokens: ['0x5d5f074837f5d4618b3916ba74de1bf9662a3fed'] }, - lens: { factory: "0xe0704DB90bcAA1eAFc00E958FF815Ab7aa11Ef47", fromBlock: 1 }, - etlk: { factory: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", fromBlock: 14584055 }, - // saga: { factory: "0x454050C4c9190390981Ac4b8d5AFcd7aC65eEffa", fromBlock: 18885 }, - rbn: { factory: "0x75FC67473A91335B5b8F8821277262a13B38c9b3", fromBlock: 2286057 }, - plasma: { factory: '0xcb2436774C3e191c85056d248EF4260ce5f27A9D', fromBlock: 430127, }, - }), -} - -const chains = ['ethereum', 'arbitrum', 'optimism', 'polygon', 'bsc', 'base'] - -chains.forEach(chain => { - module.exports[chain] = { - tvl: v3TvlPaged(chain) - } -}) - -const okuGraphMap = { - filecoin: 'https://omni.v2.icarus.tools/filecoin', - rsk: 'https://omni.v2.icarus.tools/rootstock', - nibiru: 'https://omni.v2.icarus.tools/nibiru', // nibiru: { factory: "0x346239972d1fa486FC4a521031BC81bFB7D6e8a4", fromBlock: 23658062 }, - saga: 'https://omni.v2.icarus.tools/saga', - sei: 'https://omni.v2.icarus.tools/sei', - // lightlink_phoenix: 'https://omni.v2.icarus.tools/lightlink', -} - -Object.keys(okuGraphMap).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = await getConfig('oku-trade/' + chain, undefined, { - fetcher: async () => { - const { result: { pools } } = await post(okuGraphMap[chain], { - "jsonrpc": "2.0", - "method": "cush_topPools", - "params": [ - { - "result_size": 1000, - "sort_by": "tx_count", - "sort_order": false - } - ], - "id": 0 - }) - const ownerTokens = pools.map(i => [[i.t0, i.t1], i.address]) - if (!ownerTokens.length) throw new Error('No pools found') - if (ownerTokens.some(i => !i[0][0] || !i[0][1] || !i[1])) - throw new Error('Invalid pools found') - - return ownerTokens - } - }) - return api.sumTokens({ ownerTokens }) - } - } -}) diff --git a/projects/uniswap/v1.js b/projects/uniswap/v1.js deleted file mode 100644 index 00bd5d2e642..00000000000 --- a/projects/uniswap/v1.js +++ /dev/null @@ -1,73 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const BigNumber = require('bignumber.js'); -const { getLogs } = require('../helper/cache/getLogs') - -const START_BLOCK = 6627917; -const FACTORY = '0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95'; -const ETH = ADDRESSES.null.toLowerCase(); - -async function tvl(api) { - const block = api.block - const logs = (await getLogs({ - api, - target: FACTORY, - fromBlock: START_BLOCK, - topic: 'NewExchange(address,address)', - })); - - const exchanges = {}; - logs.forEach((log) => { - const tokenAddress = `0x${log.topics[1].substring(26)}`.toLowerCase(); - - const exchangeAddress = `0x${log.topics[2].substring(26)}`.toLowerCase(); - exchanges[exchangeAddress] = tokenAddress; - }); - - const tokenBalances = ( - await sdk.api.abi - .multiCall({ - abi: 'erc20:balanceOf', - calls: Object.keys(exchanges).map((exchangeAddress) => ({ - target: exchanges[exchangeAddress], - params: exchangeAddress, - })), - block, - }) - ).output; - - // note that this undercounts ETH locked - // it only measures ETH in exchanges for supported tokens - const ETHBalances = ( - await sdk.api.eth - .getBalances({ - targets: Object.keys(exchanges).map((exchangeAddress) => exchangeAddress), - block, - }) - ).output; - - return tokenBalances.reduce( - (accumulator, tokenBalance) => { - if(tokenBalance.output === null){ - return accumulator - } - const balanceBigNumber = new BigNumber(tokenBalance.output) - if (!balanceBigNumber.isZero()) { - const tokenAddress = tokenBalance.input.target.toLowerCase() - accumulator[tokenAddress] = balanceBigNumber.toFixed() - } - return accumulator - }, - { - [ETH]: ETHBalances.reduce( - (accumulator, ETHBalance) => - accumulator.plus(new BigNumber(ETHBalance.balance)), - new BigNumber('0') - ).toFixed(), - } - ) -} - -module.exports={ - tvl -} \ No newline at end of file diff --git a/projects/uniswap/v3/index.js b/projects/uniswap/v3/index.js deleted file mode 100644 index 77654df444e..00000000000 --- a/projects/uniswap/v3/index.js +++ /dev/null @@ -1,112 +0,0 @@ -const sdk = require('@defillama/sdk') -const oldOptPools = require('./oldUniPools.json') -const { getLogs } = require('../../helper/cache/getLogs') - -const FACTORY = '0x1F98431c8aD98523631AE4a59f267346ea31F984'; // same on all chains -const startBlocks = { - ethereum: 12369621, - arbitrum: 165, - optimism: 27446 -} - -function chainTvl(chain) { - return async (api) => { - const START_BLOCK = startBlocks[chain] - const logs = ( - await getLogs({ - api, - target: FACTORY, - fromBlock: START_BLOCK, - topic: 'PoolCreated(address,address,uint24,int24,address)', - }) - ) - const block = api.block - - const pairAddresses = [] - const token0Addresses = [] - const token1Addresses = [] - if(chain === "optimism"){ - for(const pool of oldOptPools){ - token0Addresses.push(pool.token0) - token1Addresses.push(pool.token1) - pairAddresses.push(pool.newAddress) - } - } - for (let log of logs) { - token0Addresses.push(`0x${log.topics[1].substr(-40)}`.toLowerCase()) - token1Addresses.push(`0x${log.topics[2].substr(-40)}`.toLowerCase()) - pairAddresses.push(`0x${log.data.substr(-40)}`.toLowerCase()) - } - - const pairs = {} - // add token0Addresses - token0Addresses.forEach((token0Address, i) => { - const pairAddress = pairAddresses[i] - pairs[pairAddress] = { - token0Address: token0Address, - } - }) - - // add token1Addresses - token1Addresses.forEach((token1Address, i) => { - const pairAddress = pairAddresses[i] - pairs[pairAddress] = { - ...(pairs[pairAddress] || {}), - token1Address: token1Address, - } - }) - - let balanceCalls = [] - - const exclude = ["0xc064472729952ffb570217f01a701766e8bee0c0", "0xaaba8a92687bfdba363a3ccb29991599d84fed8f"] - for (let pair of Object.keys(pairs)) { - if(exclude.includes(pair)){ - continue; - } - balanceCalls.push({ - target: pairs[pair].token0Address, - params: pair, - }) - balanceCalls.push({ - target: pairs[pair].token1Address, - params: pair, - }) - } - - const tokenBalances = ( - await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - calls: balanceCalls.filter(c=>c.target !== "0x290a6a7460b308ee3f19023d2d00de604bcf5b42" && c.target !== "0x4c83a7f819a5c37d64b4c5a2f8238ea082fa1f4e"), - block, - chain, - }) - ) - let transform = id=>id - if(chain === "optimism"){ - transform = i => `optimism:${i}` - } else if(chain === "arbitrum"){ - transform = i => `arbitrum:${i}` - } - - let balances = {}; - - sdk.util.sumMultiBalanceOf(balances, tokenBalances, true, transform) - - return balances; - } -} - - - -module.exports = { - misrepresentedTokens: true, - optimism: { - tvl: chainTvl('optimism'), - }, - ethereum: { - tvl: chainTvl('ethereum'), - }, - arbitrum: { - tvl: chainTvl('arbitrum'), - }, -} \ No newline at end of file diff --git a/projects/uniswap/v3/oldUniPools.json b/projects/uniswap/v3/oldUniPools.json deleted file mode 100644 index 6a8fcd87a80..00000000000 --- a/projects/uniswap/v3/oldUniPools.json +++ /dev/null @@ -1,730 +0,0 @@ -[ - { - "oldAddress": "0x2e9c575206288f2219409289035facac0b670c2f", - "newAddress": "0x03af20bdaaffb4cc0a521796a223f7d85e2aac31", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0x8c505fd76eed0945699265c7c7e5bbf756b7e5ad", - "newAddress": "0x827f0a2a4376bc26729f398b865f424dc8456841", - "token0": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0xdd54251a35078ba39e3ad5fb059f9aa243693b9d", - "newAddress": "0x73b14a78a0d396c521f954532d43fd5ffe385216", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "fee": 3000 - }, - { - "oldAddress": "0x0ad1af4178e17d7f41dbcdf9d573701bef5eb501", - "newAddress": "0xdd0c6bae8ad5998c358b823df15a2a4181da1b80", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 3000 - }, - { - "oldAddress": "0xdf42e37f057c61765fe7204642c4d2e5ff929cfe", - "newAddress": "0x815ae7bf44dda74ed9274377ed711efc8b567911", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 10000 - }, - { - "oldAddress": "0x6b952bfbfda057a7f288edaa9f611cd446ddbe22", - "newAddress": "0x95d9d28606ee55de7667f0f176ebfc3215cfd9c0", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0x0bec645f0373750fe0256ee0e7b06d63eae5e04d", - "newAddress": "0x2df05e4cdbd758cb1a99a34bb0d767e040d6b078", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 10000 - }, - { - "oldAddress": "0x6afd8618459729da24ee36978567fb04fe5fd1bd", - "newAddress": "0x85c31ffa3706d1cce9d525a00f1c7d4a2911754c", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "fee": 500 - }, - { - "oldAddress": "0xa61dea82c7c3e64a6a80550aacb251eed604b46b", - "newAddress": "0x37ffd11972128fd624337ebceb167c8c0a5115ff", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "fee": 10000 - }, - { - "oldAddress": "0xcf438c19332d507326210da527fb9cf792fd3e18", - "newAddress": "0xc858a329bf053be78d6239c4a4343b8fbd21472b", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 500 - }, - { - "oldAddress": "0xaddd011cb3b61d0dc4f85c2661cc9bd1bd640067", - "newAddress": "0xb29a022ff4b37bdfb21e5f1daff4af5a22aa9510", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "fee": 500 - }, - { - "oldAddress": "0x47516ccba929c607e14dbd02f2ebac1e7960b1f8", - "newAddress": "0x0392b358ce4547601befa962680bede836606ae2", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "fee": 3000 - }, - { - "oldAddress": "0x13b2d83ec506b5c770f64ee0f564ff9719c74071", - "newAddress": "0xfea834a5c47b923add607cc5b96288d18ffb9c3f", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "fee": 10000 - }, - { - "oldAddress": "0xd20bf925e04933ff79274479009218dedab6657f", - "newAddress": "0xac721d2e27ca148f505b5106fc95e594c78ace5b", - "token0": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 10000 - }, - { - "oldAddress": "0x7678f1e1ed90efec8757af161ab25bf1e8e00238", - "newAddress": "0xa13514b5444e50067f6e48c386016b211773cf9e", - "token0": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 10000 - }, - { - "oldAddress": "0x2816913eda0010af856d323724f521fb702a25a7", - "newAddress": "0xcf2aebb91fec906f51fc11cd57035a09d8b16965", - "token0": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0x2419a5fee0f8e0192869507ed6a301382ad9edda", - "newAddress": "0xea0f33940eb221aaad9360891cab08ef4f1f0703", - "token0": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0x0ccf6bf2df83d250d0f6a636215ef7d19f86dd01", - "newAddress": "0x703eb589321f3dc7408e9dde01b790e64a9fe4e9", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 10000 - }, - { - "oldAddress": "0x1135e9ce18373238c77ff602a9b0a579ca86eb8e", - "newAddress": "0xc22662b904d98e45f89e030201355c3e372cc819", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0x2f5ccaf670e9c5f4336c127a29fdd4932f238069", - "newAddress": "0x1aa9b4d9933ff96b2011fddd764240d4a16b7c07", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0x0f641370eb5cb4f0b0d58140d5fb2f97ffcbfce5", - "newAddress": "0x2459023a29d3b07711b8b916d86aa7e8a14747af", - "token0": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0xa14e5b3ba5dd981b536e0950390b03972b795018", - "newAddress": "0xadb35413ec50e0afe41039eac8b930d313e94fa4", - "token0": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0xbdb9a8279a525bafe9be7efb9b5df79b18eeb23f", - "newAddress": "0x84eb2c5c23999b3ddc87be10f15ccec5d22c7d97", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 500 - }, - { - "oldAddress": "0xa194977b416f082f71a0362041b57208c91ee1c1", - "newAddress": "0x2e80d5a7b3c613d854ee43243ff09808108561eb", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 3000 - }, - { - "oldAddress": "0xc3099d7fd3fc7d4feea11911fbe6eadc94c7c07a", - "newAddress": "0x3d44cc727fe2f603e4929be164c70edb3b498b5f", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 10000 - }, - { - "oldAddress": "0xfe901e734c8c55645731acd4eb0be963d2a85b94", - "newAddress": "0xa588c9d2884c60b098c5ad028ec2f4a1fab772b5", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "fee": 10000 - }, - { - "oldAddress": "0xeaa5ba3ef450887e4d5a627700aef3c1a16d4090", - "newAddress": "0xc53f2be3331926d2f30ee2b10362bb45fdbe7bf6", - "token0": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 500 - }, - { - "oldAddress": "0x263312f667279452ad44cda7971fe93f18b6dad4", - "newAddress": "0x0843e0f56b9e7fdc4fb95fabba22a01ef4088f41", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 3000 - }, - { - "oldAddress": "0x051580636f94b8b6ba69b879958939d324d8f650", - "newAddress": "0x8184f5cf4921558c201923ef6d7d5258a6efa31f", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 500 - }, - { - "oldAddress": "0xbb8a699cbd6b45f7c31dcd14bd6d965ab4293e2c", - "newAddress": "0x8b057f0ccd9fb78f688472574cf3f9d2322f5454", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 10000 - }, - { - "oldAddress": "0x98fd8560e184136f482054c19a63e644240e30f4", - "newAddress": "0x9f08065dfc4817a0a56db7bcab757e86399bc51d", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 500 - }, - { - "oldAddress": "0xbeafe824395fff8df37c4814e8de9d455e79cdad", - "newAddress": "0x7628784d2c5d47fcd5479ba812343b1aabad6484", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 3000 - }, - { - "oldAddress": "0xcfe7288e10994555ca97dfa2d0c50e55a4d4dc39", - "newAddress": "0xceb488e01c8e2e669c40b330bfc1440921c9ebe2", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 10000 - }, - { - "oldAddress": "0x4cff717ff0b0a4a3578e8bbb7a5f06d32574238b", - "newAddress": "0x25e412992634b93a025e2a538c53222a8c62e2d6", - "token0": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 10000 - }, - { - "oldAddress": "0x072611197970d6a9e57680f97f177ff947f09139", - "newAddress": "0xc0f184c6c4832b3ed861bd5b05722792ffa64abd", - "token0": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 3000 - }, - { - "oldAddress": "0x380ff418bf1589b46e9660c6b2197b4ce8ae8a12", - "newAddress": "0xf046d8b7365d8abe5a8f8301c669b4b5284fc21d", - "token0": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 500 - }, - { - "oldAddress": "0xac8c823548f13874dcfc76029089de01f4adc1d3", - "newAddress": "0x1f2390484dfe2d8900bc91c7111d274b7b2d63a1", - "token0": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 10000 - }, - { - "oldAddress": "0x8cf0a5fdcaed0956a3221e1dd5219bb14f092595", - "newAddress": "0xa0959d2dcd9dd56bf080a10cfe29eeb401344e3d", - "token0": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 10000 - }, - { - "oldAddress": "0xaf00e47d2fe45befc4540fe02a87cb053e252065", - "newAddress": "0x30be2fff09fcd820a1d472e646bd233dbd812133", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 10000 - }, - { - "oldAddress": "0x00a0e3cd857a7e5676c901bd349ed1d6afb59fb3", - "newAddress": "0x3202c46666e774b44ba463eafaa6da9a968a058f", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x4200000000000000000000000000000000000006", - "fee": 10000 - }, - { - "oldAddress": "0x90fc3f5f84fb868b7693b1f2690b91f28c1600d0", - "newAddress": "0x85e8d0fddf559a57aac6404e7695142cd53eb808", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "fee": 10000 - }, - { - "oldAddress": "0xc87adb8ac31434e96b429ced522ed84a2ce707a6", - "newAddress": "0x22fc5dc36811d15fafde7cc7900ae73a538e59e0", - "token0": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 10000 - }, - { - "oldAddress": "0x466fd9d58bdd0e246cbe9112d95d077b81b341af", - "newAddress": "0xe7ee03b72a89f87d161425e42548bd5492d06679", - "token0": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0x7b6467b86878b86163bcb3162d84e34ea5c7389b", - "newAddress": "0xfe1bd31a79163d6277ab8c2917d7857c225db065", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 3000 - }, - { - "oldAddress": "0xc24383ba6d156706864a48f50fc01e89c0bf11d7", - "newAddress": "0xbf595eb9a512b1c274125264aef84a2847158eb3", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "fee": 3000 - }, - { - "oldAddress": "0x93d9dfb5caf591df911b251db4d76cd95f4644b7", - "newAddress": "0x124657e5bb6afc12a15c439d08fc80070f9a1a1e", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0x36c95ae265883c2b19e61997760b110cc05e4a60", - "newAddress": "0xd6101cda1a51924e249132cbcae82bfcd0a91fbc", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0xd515990647c39c4a0b8c03f811f9b746958a0eec", - "newAddress": "0x19ea026886cbb7a900ecb2458636d72b5cae223b", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x4200000000000000000000000000000000000006", - "fee": 3000 - }, - { - "oldAddress": "0x3b6479c7748eb5b143a3a52d237c0097734b811b", - "newAddress": "0x5aacc66073cb0c3064353f1441c2e04170b4dbbf", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xc5Db22719A06418028A40A9B5E9A7c02959D0d08", - "fee": 3000 - }, - { - "oldAddress": "0x2d073707207098cc69e8e86c6a3fd12644b8a1b2", - "newAddress": "0x4284b21e76d1b3977cab8f0032867e00e6eea382", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0xc5Db22719A06418028A40A9B5E9A7c02959D0d08", - "fee": 500 - }, - { - "oldAddress": "0xac61775e2d76fe18c0a758ddf2ebef63a4d1a3e7", - "newAddress": "0x5b0e07a0421bd25fb4c45a88fec05b29e83594f6", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xE405de8F52ba7559f9df3C368500B6E6ae6Cee49", - "fee": 500 - }, - { - "oldAddress": "0x015986c7074ec1eeae0387a8baf485fd9d811b7d", - "newAddress": "0x2f10a1a3e640ad1615cbedf95a1749a4af88cbc0", - "token0": "0xB548f63D4405466B36C0c0aC3318a22fDcec711a", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0x4a88e6fa2afad460befd586fc1581f322308c490", - "newAddress": "0x32846ede08688d10a9da59387707a8fbb0790fa7", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xab7bAdEF82E9Fe11f6f33f87BC9bC2AA27F2fCB5", - "fee": 3000 - }, - { - "oldAddress": "0xccf24898ca659afa8cb6a3bdb8a2e0a2debda12d", - "newAddress": "0xbdb6371fffc1753b33b87c68c827eb7978670515", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "fee": 500 - }, - { - "oldAddress": "0x856d50c587824f84de481ea706208b03db38f6f2", - "newAddress": "0x2eee8ed7df992f23d7554b0db8835d483cce901c", - "token0": "0x298B9B95708152ff6968aafd889c6586e9169f1D", - "token1": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "fee": 10000 - }, - { - "oldAddress": "0xe3d8cfc3a0b43d2288b3da41563b1fe0623209de", - "newAddress": "0x65dc095b35679005229896566928f6852948092b", - "token0": "0x298B9B95708152ff6968aafd889c6586e9169f1D", - "token1": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "fee": 500 - }, - { - "oldAddress": "0x62196490fcf045437e5e4cb49228bbd778b7196d", - "newAddress": "0x2d6497dd08a1620d386ce708edac50aaec332415", - "token0": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "token1": "0xE405de8F52ba7559f9df3C368500B6E6ae6Cee49", - "fee": 10000 - }, - { - "oldAddress": "0x3b1f6287be238c9b0a4b48d85d2359d58aaa9683", - "newAddress": "0x039ae8860fbfdf61f654b1a5b55cc3aa753f5842", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 3000 - }, - { - "oldAddress": "0x91e50b184ea237b3da1c005ee5d2a17a904a34c6", - "newAddress": "0x24342b5d46f69ba05c09becdd00e5324f9f0f7ca", - "token0": "0x298B9B95708152ff6968aafd889c6586e9169f1D", - "token1": "0x4200000000000000000000000000000000000006", - "fee": 10000 - }, - { - "oldAddress": "0x518767d8ef1acffd978581c16789f8a2803f9bef", - "newAddress": "0xf0d0e52da1fdde512af299f3d8ea1c5e3bebb96f", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xe3C332a5DcE0e1d9bC2cC72A68437790570C28a4", - "fee": 3000 - }, - { - "oldAddress": "0xc2c0786e85ac9b0b223966d040ebc641fa44225e", - "newAddress": "0xb589969d38ce76d3d7aa319de7133bc9755fd840", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "fee": 3000 - }, - { - "oldAddress": "0xa2389a4ee391b4b04ae8dc664664190f3d28f2fe", - "newAddress": "0x8eda97883a1bc02cf68c6b9fb996e06ed8fdb3e5", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 500 - }, - { - "oldAddress": "0xf9ca53854d1ac7adb43d9447aa87f17fe1454e31", - "newAddress": "0x100bdc1431a9b09c61c0efc5776814285f8fb248", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0x4893c5f29301cfd7a6527331f3e06ea82e68a952", - "newAddress": "0xe229ce1cdbea9983362ca29f0f0b2c70bb2dacdf", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 3000 - }, - { - "oldAddress": "0xf2e805fe3b15297e1df03b6036d01b32ab8f7998", - "newAddress": "0xd9b160620447d9a9a6ca90c0450f5490e5219257", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0x6663eea65669978481bae55814cbc496acd50352", - "newAddress": "0x1179b19438a622fe36be5f9c073b700420384397", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 10000 - }, - { - "oldAddress": "0x7bbc5726e6c2640ed0f0fda1546dc232dc5db89c", - "newAddress": "0xf3f3433c3a97f70349c138ada81da4d3554982db", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 500 - }, - { - "oldAddress": "0x0d4294ae819ff83a4e2a99db8d06cdd025c19218", - "newAddress": "0x85149247691df622eaf1a8bd0cafd40bc45154a9", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "fee": 500 - }, - { - "oldAddress": "0x9e845c705aba9a2ca6e97c2423797e18a98d34c0", - "newAddress": "0x6fa1ea0ccbbe9b2ad52440c88a47b5d73cd9a731", - "token0": "0x298B9B95708152ff6968aafd889c6586e9169f1D", - "token1": "0x4200000000000000000000000000000000000006", - "fee": 500 - }, - { - "oldAddress": "0x00a4dfb447a43a583d8e07eae9d4efbb3656cbcb", - "newAddress": "0xad4c666fc170b468b19988959eb931a3676f0e9f", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "fee": 3000 - }, - { - "oldAddress": "0xdeb1106b510d94df3bcc55e74f51a6f6b231d97e", - "newAddress": "0x4983691a26d55eb9e18d2e12e3b770cdd3f76a5f", - "token0": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 3000 - }, - { - "oldAddress": "0xd2243a43813cd7c4bfb2287f32d3989b0f2f67d5", - "newAddress": "0x8e2eaef2c05ef93f424a8324b94e725eaa362f91", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "fee": 10000 - }, - { - "oldAddress": "0x0b3a6896345b68539571aab140134630151ebc68", - "newAddress": "0x8531e48a8611729185be9eaad945acbd6b32e256", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x4200000000000000000000000000000000000006", - "fee": 500 - }, - { - "oldAddress": "0x99959743247f2fa2e97b33e532337eae616beeda", - "newAddress": "0xeb1817b708415f4f78c5f0c99cbbd6a3a899fa6d", - "token0": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 3000 - }, - { - "oldAddress": "0x94ee41af02171d6dc1e05b790de547fa50dbd7cf", - "newAddress": "0x26e7fed14a97e0c482a302237971cf1b04f6d3e9", - "token0": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 3000 - }, - { - "oldAddress": "0x7613311fbb6a4580cdd602f9978c317b2a783d5f", - "newAddress": "0x3926a81afe5c9c3d05296e4fac4728ba5411ac78", - "token0": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 10000 - }, - { - "oldAddress": "0x89fe55759966831d747669bfbda477ebf09475d6", - "newAddress": "0x7a5ea63fe3430a3b9a06fd80a4a9afaa17c1e878", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xB27E3Eab7526bF721ea8029bFcd3fDc94c4f8b5b", - "fee": 10000 - }, - { - "oldAddress": "0x1c536614fd8ed5faba94528782fbc886c426651a", - "newAddress": "0xf5a389030a565c13d6e6bbe9342ac9d31dc7521a", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xE405de8F52ba7559f9df3C368500B6E6ae6Cee49", - "fee": 3000 - }, - { - "oldAddress": "0xb0e9a44258cce8ef36c87e8f252aa6bf7cd4b245", - "newAddress": "0x6168ec836d0b1f0c37381ec7ed1891a412872121", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "fee": 3000 - }, - { - "oldAddress": "0xcd7b42cee81a3394ee58dab93bbfc87cab03adb5", - "newAddress": "0x2024c394741a5301e89a375b7bf52f865bc166fd", - "token0": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "token1": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "fee": 3000 - }, - { - "oldAddress": "0x88f8cd42570f74ff3ef5acd090419070c6efe37a", - "newAddress": "0x91cca461ee9435848ac0da8fc416ad0816272786", - "token0": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 3000 - }, - { - "oldAddress": "0xd4bbfe5b58381ba4b9ce87146ce9e5a2d1057d3e", - "newAddress": "0x865d39d66dee5719e6bee98885ef40b9a36bf56e", - "token0": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "token1": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "fee": 500 - }, - { - "oldAddress": "0x9b8ad5085af53eff13f3ddadcafa453549f7a93f", - "newAddress": "0x1fff624960ff9d0556420f3647d6aaf06389aab1", - "token0": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 3000 - }, - { - "oldAddress": "0x188530f0c09e56e6e30dd5ef76a9b3f0dc403763", - "newAddress": "0xc8c07386e29f3f239b91019d5426ae139c5bd17b", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x96db852D93c2feA0F447D6Ec22E146e4e09Caee6", - "fee": 10000 - }, - { - "oldAddress": "0x704baee64df71741cf3029652dc99101adc846f0", - "newAddress": "0x1b19825a9e32b1039080acb1e1f9271314938b96", - "token0": "0x7FB688CCf682d58f86D7e38e03f9D22e7705448B", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0xe4decbe898a6b8bb79ac48e93681cd04d7b1ca1b", - "newAddress": "0x602a4d0f9e8d40ad3f620050efd1690da908dc0d", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x7FB688CCf682d58f86D7e38e03f9D22e7705448B", - "fee": 500 - }, - { - "oldAddress": "0x251144c131413a5f6e54001cb586f9101b447059", - "newAddress": "0x345ddb5743859efce0e6e8293ebd35373d34b6c7", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0xE405de8F52ba7559f9df3C368500B6E6ae6Cee49", - "fee": 10000 - }, - { - "oldAddress": "0x4065c249115481baaec5c6a16929592935d29ec1", - "newAddress": "0x94ad9a19126ebb02dda874237e5820fd4943f5de", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "fee": 10000 - }, - { - "oldAddress": "0x6c66eb2798bf42455b63cff3fa3e5bcc3d31848f", - "newAddress": "0x905707e5c7a10e8351bbd03347be8b5f5de7301a", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "fee": 10000 - }, - { - "oldAddress": "0xa0eed53ea02a174e4ee81d88d3970b5198580b52", - "newAddress": "0x7d1602f342787f80aef458c10e741149a1697447", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "fee": 3000 - }, - { - "oldAddress": "0xb61a5a79a83ff386dbe40a1bc95578856ab2fa5f", - "newAddress": "0xa7bb0d95c6ba0ed0aca70c503b34bc7108589a47", - "token0": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - "token1": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "fee": 500 - }, - { - "oldAddress": "0xc102e1de27d8467589cc65f4b4b18d534f6fdac6", - "newAddress": "0xb0eca217602b031e03956553fb510085c9f2df28", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x8F69Ee043d52161Fd29137AeDf63f5e70cd504D5", - "fee": 3000 - }, - { - "oldAddress": "0x61057f7f7c2e338c36fd29433d7977b618348cd0", - "newAddress": "0x320616dbe138aa2f3db7a5a46ba79a13032cc5f2", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "fee": 3000 - }, - { - "oldAddress": "0x05c1d7c9b9b4f1c38859681bd7b4eebb4c373a8e", - "newAddress": "0xba213008fe93b3591e439f3b2aa51b3e4a2bd7c7", - "token0": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", - "token1": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "fee": 3000 - }, - { - "oldAddress": "0xbf592a3a4c64c8c28b667d060336e25480fe6c48", - "newAddress": "0x680b4eb8b9b8533d503a545adad4af9f00df5f05", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x7C17611Ed67D562D1F00ce82eebD39Cb7B595472", - "fee": 10000 - }, - { - "oldAddress": "0xb2ab739b499ff9fa019ff944135b4974942b3a95", - "newAddress": "0x296b88b607ea3a03c821ca4dc34dd9e7e4efa041", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x7FB688CCf682d58f86D7e38e03f9D22e7705448B", - "fee": 10000 - }, - { - "oldAddress": "0x3e9ef76529932226742113984e6a6c7cea7e2452", - "newAddress": "0xa99638e4ac81d4ce32c945c1415f89ab8d86bf2c", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", - "fee": 10000 - }, - { - "oldAddress": "0xcb590932a77e02aac00c83bbba4d8014efbebb89", - "newAddress": "0x9bb3267c4c3e69a961479c475f8fcc4c300af5bd", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x7FB688CCf682d58f86D7e38e03f9D22e7705448B", - "fee": 3000 - }, - { - "oldAddress": "0x3643c5840fc0ccf4f667a35a151e10302d4d0d23", - "newAddress": "0x65f8a80d8049a77619435f841055fa4c8d785c47", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0x96db852D93c2feA0F447D6Ec22E146e4e09Caee6", - "fee": 500 - }, - { - "oldAddress": "0x805b9cf595282d807adfe84a89bec85be5d07f53", - "newAddress": "0xd3265ea86af798659b4132a453e7cdb29b877e10", - "token0": "0x96db852D93c2feA0F447D6Ec22E146e4e09Caee6", - "token1": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "fee": 500 - }, - { - "oldAddress": "0x1a718270a5b014209fb77ac2985556ee471b29af", - "newAddress": "0x8dfc59e8b119bffa5f552642028e005b1972edc4", - "token0": "0x6fd9d7AD17242c41f7131d257212c54A0e816691", - "token1": "0x96db852D93c2feA0F447D6Ec22E146e4e09Caee6", - "fee": 500 - }, - { - "oldAddress": "0xb91cf01b64c6e6540c45ae356554599cbe92831f", - "newAddress": "0xc210aeb4e84e0c3b6ee5816858984d52d04f0219", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x96db852D93c2feA0F447D6Ec22E146e4e09Caee6", - "fee": 500 - }, - { - "oldAddress": "0x8956827b23063c82d0c697004f0015b454a2f107", - "newAddress": "0x9aaa481a863e95168c01f23640b357b014dff09a", - "token0": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "token1": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", - "fee": 500 - }, - { - "oldAddress": "0x86cf7e458ce79afe44924263d58ef1fd57d1b57c", - "newAddress": "0x25cc77a38f8de3b9b090fea8f0f5995c4e10a386", - "token0": "0x4200000000000000000000000000000000000006", - "token1": "0xe0BB0D3DE8c10976511e5030cA403dBf4c25165B", - "fee": 10000 - } - ] \ No newline at end of file diff --git a/projects/unit-btc/index.js b/projects/unit-btc/index.js deleted file mode 100644 index f5dc6e4f904..00000000000 --- a/projects/unit-btc/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumTokensExport } = require('../helper/sumTokens'); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js'); -const ADDRESSES = require('../helper/coreAssets.json'); - -// https://docs.hyperunit.xyz/developers/key-addresses - -const tvl = async (api) => { - return api.sumTokens({ token: ADDRESSES.null, owner: '0x8e88826F42A0f5f199a9c91C3798c626326730b4' }) -} - -module.exports = { - methodology: 'HyperUnit Hot wallets For BTC/ETH/SOL', - bitcoin: { - tvl: sumTokensExport({ owners: bitcoinAddressBook.unitbtc }), - }, - ethereum: { - tvl: sumTokensExport({ - owners: ["0xBEa9f7FD27f4EE20066F18DEF0bc586eC221055A"], - tokens: [ADDRESSES.ethereum.WETH, ADDRESSES.null], - }), - }, - plasma: { tvl }, - solana: { - tvl: sumTokensExport({ - solOwners: ['9SLPTL41SPsYkgdsMzdfJsxymEANKr5bYoBsQzJyKpKS'], - owners: ['9SLPTL41SPsYkgdsMzdfJsxymEANKr5bYoBsQzJyKpKS'], - tokens: ['9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump', 'pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn', 'J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr', ADDRESSES.solana.BONK, 'J6pQQ3FAcJQeWPPGppWRb4nM8jU3wLyYbRrLh7feMfvd'] - }) - } -}; diff --git a/projects/unit.js b/projects/unit.js deleted file mode 100644 index 0c2f41b6677..00000000000 --- a/projects/unit.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') - -const { sumTokens } = require('./helper/unwrapLPs'); - - -async function tvl(ts, block) { - var pool = '0xb1cff81b9305166ff1efc49a129ad2afcd7bcf19' - - let tokens = [ - '0x92e187a03b6cd19cb6af293ba17f2745fd2357d5', - '0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44', - '0x2ba592F78dB6436527729929AAf6c908497cB200', - ADDRESSES.ethereum.WETH, - '0x0Ae055097C6d159879521C384F1D2123D1f195e6', - ADDRESSES.ethereum.USDC, - '0xbC396689893D065F41bc2C6EcbeE5e0085233447', - ADDRESSES.ethereum.AAVE, - ADDRESSES.ethereum.FTM, - ADDRESSES.ethereum.YFI, - ADDRESSES.ethereum.CRV, - ADDRESSES.ethereum.SUSHI, - '0x4688a8b1f292fdab17e9a90c8bc379dc1dbd8713', - '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272', - '0xb753428af26e81097e7fd17f40c88aaa3e04902c', - '0xc944e90c64b2c07662a292be6244bdf05cda44a7', - '0x3472A5A71965499acd81997a54BBA8D852C6E53d', - '0xc5bddf9843308380375a611c18b50fb9341f502a', //apecrv - '0x1337def16f9b486faed0293eb623dc8395dfe46a', //armor - ADDRESSES.ethereum.WBTC, //wbtc - '0xeb4c2781e4eba804ce9a9803c67d0893436bb27d', //renbtc - '0xd291e7a03283640fdc51b121ac401383a46cc623', - ADDRESSES.ethereum.DAI, //dai - ]; - const toa = tokens.map(t => [t, pool]) - return sumTokens({}, toa, block) -} - -module.exports = { - ethereum: { - tvl, - } -} diff --git a/projects/unitas/index.js b/projects/unitas/index.js deleted file mode 100644 index 10cc93db849..00000000000 --- a/projects/unitas/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getTokenSupplies } = require('../helper/solana'); - -const TOKEN_MINT = '9ckR7pPPvyPadACDTzLwK2ZAEeUJ3qGSnzPs8bVaHrSy'; - -async function tvl() { - const supply = await getTokenSupplies([TOKEN_MINT]); - return { - 'usd-coin': supply[TOKEN_MINT] / 1e6 - } -} - -module.exports = { - hallmarks: [ - [1747670400, "solana unitas launch"] - ], - timetravel: false, - methodology: "Currently, tvl is composed of minted USDu", - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/unite-finance/index.js b/projects/unite-finance/index.js deleted file mode 100644 index 840533bcde3..00000000000 --- a/projects/unite-finance/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const ushareTokenAddress = "0xd0105cff72a89f6ff0bd47e1209bf4bdfb9dea8a"; -const ushareRewardPoolAddress = "0xe3F4E2936F0Ac4104Bd6a58bEbd29e49437710Fe"; -const boardroomAddress = "0x68BeEc29183464e2C80Aa9B362db8b0c0eB826bd"; -const chain = 'harmony' - -const OneLPs = [ - "0xa0377f9fd3de5dfefec34ae4807e9f2b9c56d534", // uniteOneLpAddress - "0x6372d14d29f07173f4e51bb664a4342b4a4da9e8", //ushareOneLpAddress -]; - -const uDexLPs = [ - "0xeE2208256800398424a45Fe9F135AD0b60DeAE0C", // uniteOneLpAddress - "0xe302A970E80094a3abB820Eda275FAC5848b5bdA", //ushareOneLpAddress -] -const getReservesABI = 'function getReserves() view returns (uint256 _reserve0, uint256 _reserve1)' - -async function OnePool2(api) { - await sumTokens2({ owner: ushareRewardPoolAddress, tokens: OneLPs, resolveLP: true, api, }) - - await sumTokens2({ - api, owner: ushareRewardPoolAddress, tokens: uDexLPs, resolveLP: true, abis: { - getReservesABI, - } - }) -} - -module.exports = { - methodology: "Pool2 deposits consist of UNITE/ONE and USHARE/ONE LP tokens deposits while the staking TVL consists of the TSHARES tokens locked within the Boardroom contract(0x68BeEc29183464e2C80Aa9B362db8b0c0eB826bd).", - harmony: { - tvl: async () => ({}), - pool2: OnePool2, - staking: staking(boardroomAddress, ushareTokenAddress, chain), - }, -}; \ No newline at end of file diff --git a/projects/unitrade/abi.json b/projects/unitrade/abi.json deleted file mode 100644 index b6f491606c0..00000000000 --- a/projects/unitrade/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "abiGetActiveOrdersLength": "uint256:getActiveOrdersLength", - "abiGetOrderId": "function getActiveOrderId(uint256 index) view returns (uint256)", - "abiGetOrder": "function getOrder(uint256 orderId) view returns (uint8 orderType, address maker, address tokenIn, address tokenOut, uint256 amountInOffered, uint256 amountOutExpected, uint256 executorFee, uint256 totalEthDeposited, uint8 orderState, bool deflationary)" -} \ No newline at end of file diff --git a/projects/unitrade/gateway.abi.json b/projects/unitrade/gateway.abi.json deleted file mode 100644 index c3cb2419d5f..00000000000 --- a/projects/unitrade/gateway.abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "address": "0x64B17B166090B8F9BA19C13Bf8D5dA951b2d653D", - "abi": "function tokens(uint256) view returns (address tokenAddress, uint8 releaseMethod)" - } \ No newline at end of file diff --git a/projects/unitrade/index.js b/projects/unitrade/index.js deleted file mode 100644 index f7dec4a046a..00000000000 --- a/projects/unitrade/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const abi = require("./abi.json"); -const gatewayAbi = require("./gateway.abi.json"); -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs'); - -const UNITRADE_ORDERBOOK = "0xC1bF1B4929DA9303773eCEa5E251fDEc22cC6828"; -const UNITRADE_BRIDGE = "0x64B17B166090B8F9BA19C13Bf8D5dA951b2d653D"; - -const tokensAndOwners = [ - [nullAddress, UNITRADE_BRIDGE], - [nullAddress, UNITRADE_ORDERBOOK], -] - -async function tvl(api) { - const activeOrderIds = await api.fetchList({ lengthAbi: abi["abiGetActiveOrdersLength"], itemAbi: abi["abiGetOrderId"], target: UNITRADE_ORDERBOOK }) - - //getting active orders based on order ids - const activeOrders = await api.multiCall({ - target: UNITRADE_ORDERBOOK, - abi: abi["abiGetOrder"], - calls: activeOrderIds, - }) - - //filtering out duplicate tokens - const uniqueLockedTokenAddresses = [ - ...new Set(activeOrders.map((order) => order.tokenIn)), - ]; - uniqueLockedTokenAddresses.map((address) => tokensAndOwners.push([address, UNITRADE_ORDERBOOK])) - - //fetching first 10 gateway tokens and formatting output (temp fix until we can fetch addedTokens.length ) - const gatewayTokens = ( - await api.multiCall({ - abi: gatewayAbi.abi, - calls: new Array(10).fill(null).map((_, index) => ({ - target: UNITRADE_BRIDGE, - params: index, - })), - permitFailure: true, - }) - ) - .filter((item) => item !== null) - .map((item) => item.tokenAddress); - //fetching gateway contract balance of the gateway tokens - gatewayTokens.forEach((token) => tokensAndOwners.push([token, UNITRADE_BRIDGE])) - return sumTokens2({ api, tokensAndOwners }) -} - -module.exports = { - ethereum: { tvl }, -}; diff --git a/projects/unitus/index.js b/projects/unitus/index.js deleted file mode 100644 index dc6e2bf8326..00000000000 --- a/projects/unitus/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { compoundExports2 } = require('../helper/compound') - -let allControllers = { - ethereum: ["0x8B53Ab2c0Df3230EA327017C91Eb909f815Ad113"], - bsc: ["0x0b53E608bD058Bb54748C35148484fD627E6dc0A"], - arbitrum: ["0x8E7e9eA9023B81457Ae7E6D2a51b003D421E5408"], - optimism: ["0xA300A84D8970718Dac32f54F61Bd568142d8BCF4"], - polygon: ["0x52eaCd19E38D501D006D2023C813d7E37F025f37"], - conflux: ["0xA377eCF53253275125D0a150aF195186271f6a56"], - base: ["0xBae8d153331129EB40E390A7Dd485363135fcE22"], -}; - -const excludeAlliTokens = { - ethereum: [ - "0x1AdC34Af68e970a93062b67344269fD341979eb0", // iUSX - "0x44c324970e5CbC5D4C3F3B7604CbC6640C2dcFbF", // iEUX - ], - // Optimism - optimism: [ - "0x7e7e1d8757b241Aa6791c089314604027544Ce43", // iUSX - ], - // BNB-Chain - bsc: [ - "0x7B933e1c1F44bE9Fb111d87501bAADA7C8518aBe", // iUSX - "0x983A727Aa3491AB251780A13acb5e876D3f2B1d8", // iEUX - ], - // Polygon - polygon: [ - "0xc171EBE1A2873F042F1dDdd9327D00527CA29882", // iUSX - "0x15962427A9795005c640A6BF7f99c2BA1531aD6d", // iEUX - ], - // Arbitrum - arbitrum: [ - "0x0385F851060c09A552F1A28Ea3f612660256cBAA", // iUSX - "0x5675546Eb94c2c256e6d7c3F7DcAB59bEa3B0B8B", // iEUX - ], - conflux: [ - "0x6f87b39a2e36F205706921d81a6861B655db6358" // iUSX - ], - base: [ - "0x82AFc965E4E18009DD8d5AF05cfAa99bF0E605df", // iUSX - ], -}; - -function getLendingTvl(chain, borrowed) { - const controllers = allControllers[chain] - const blacklistedTokens = excludeAlliTokens[chain] - - const res = controllers.map(comptroller => compoundExports2({ - comptroller, abis: { getAllMarkets: 'address[]:getAlliTokens' }, blacklistedTokens, - })).map(i => borrowed ? i.borrowed : i.tvl) - return sdk.util.sumChainTvls(res) -} - -function chainTvl(chain) { - return { - tvl: getLendingTvl(chain, false), - borrowed: getLendingTvl(chain, true), - }; -} - - -module.exports = { - start: '2019-07-26', // Jul-27-2019 02:17:24 AM +UTC -} - - -Object.keys(allControllers).forEach(chain => { - module.exports[chain] = chainTvl(chain) -}) \ No newline at end of file diff --git a/projects/universal-swaps/index.js b/projects/universal-swaps/index.js deleted file mode 100644 index 56d0a3aa59c..00000000000 --- a/projects/universal-swaps/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - lukso: { factory: "0x8130c332dddf8964b08eab86aad3999017436a6e", fromBlock: 1939261, }, -}); \ No newline at end of file diff --git a/projects/universal/index.js b/projects/universal/index.js deleted file mode 100644 index caa84c36cc6..00000000000 --- a/projects/universal/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sleep } = require('../helper/utils') - -async function tvl(api) { - // we do this because sometimes api returns invalid JSON data with random characters inside - let balances = null; - do { - try { - const {data: reserves} = await fetch("https://proof.universal.xyz/balances", {"method": "GET"}).then(r=>r.json()) - - const rawdata = reserves[0].proof.extractedParameterValues.data - - // Handle cases with no body - const body = rawdata.split('\r\n\r\n', 2)[1] || '' - - let balancesString = '' - for (let i = 0; i < body.length; i++) { - if (body[i] === '{') { - balancesString = body.slice(i, -1) - break - } - } - - balances = JSON.parse(balancesString) - - for (const balance of balances.balances) { - api.addUSDValue(Number(balance.fiat_amount)) - } - - return api.getBalances() - } catch(e) { - balances = null - } - - await sleep(10000) - } while(balances === null) -} - -module.exports = { - methodology: "Total backing assets for uAssets are custodied by Coinbase Prime with proof generated from Universal API and verifiable using Reclaim Protocol's zkTLS", - timetravel: false, - ethereum: { - tvl - } -}; \ No newline at end of file diff --git a/projects/universalpage/index.js b/projects/universalpage/index.js deleted file mode 100644 index fc565e7f20d..00000000000 --- a/projects/universalpage/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -/* - * UniversalPage adapter for DefiLlama - * Tracks TVL for LUKSO staking - */ - -const STAKING_CONTRACT = '0xa5b37D755B97C272853b9726C905414706A0553a'; -const LYX_ADDRESS = ADDRESSES.null; // Native token null address - -/** - * TVL function - calculates the total value of LYX staked in the staking contract - */ -async function tvl(api) { - // Get total staked LYX using totalAssets() method - const totalStakedLYX = await api.call({ - target: STAKING_CONTRACT, - abi: 'function totalAssets() view returns (uint256)' - }); - - // Add native LYX to TVL - api.add(LYX_ADDRESS, totalStakedLYX); - - return api.getBalances(); -} - -module.exports = { - methodology: 'Total Value Locked (TVL) consists of LYX tokens staked in the Universal Page staking protocol.', - start: 1508358, // Deployment block of staking protocol - lukso: { - tvl - } -}; \ No newline at end of file diff --git a/projects/universe-finance/index.js b/projects/universe-finance/index.js deleted file mode 100644 index 22a0fc1208a..00000000000 --- a/projects/universe-finance/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const vaultsUrl = "https://raw.githubusercontent.com/UniverseFinance/UniverseFinanceProtocol/main/doc/vaultAddress.json"; - -async function tvl(api) { - let resp = await getConfig('Universe', vaultsUrl); - - let allVaults1 = resp.filter(vault => vault.type === 1 && vault.chain == api.chain).map((vault) => vault.address) - let allVaults2 = resp.filter(vault => vault.type === 2 && vault.chain == api.chain).map((vault) => vault.address) - const token0s1 = await api.multiCall({ abi: 'address:token0', calls: allVaults1 }) - const token1s1 = await api.multiCall({ abi: 'address:token1', calls: allVaults1 }) - const token0s2 = await api.multiCall({ abi: 'address:token0', calls: allVaults2 }) - const token1s2 = await api.multiCall({ abi: 'address:token1', calls: allVaults2 }) - const getTotalAmounts1 = await api.multiCall({ abi: 'function getTotalAmounts() view returns (uint256 liq, uint256 total0, uint256 total1)', calls: allVaults1 }) - const getTotalAmounts2 = await api.multiCall({ abi: 'function getTotalAmounts() view returns (uint256 total0, uint256 total1, uint256 free0, uint256 free1, uint256 util0, uint256 util1)', calls: allVaults2 }) - - allVaults1.forEach((vault, idx) => { - api.add(token0s1[idx], getTotalAmounts1[idx].total0) - api.add(token1s1[idx], getTotalAmounts1[idx].total1) - }) - - allVaults2.forEach((vault, idx) => { - api.add(token0s2[idx], getTotalAmounts2[idx].total0) - api.add(token1s2[idx], getTotalAmounts2[idx].total1) - }) -} - -module.exports = { - doublecounted: true, - methodology: "Vault TVL consists of the tokens in the vault contract and the total amount in the UNI V3 pool through the getTotalAmounts ABI call", - ethereum: { tvl }, - polygon: { tvl }, -}; diff --git a/projects/universe/index.js b/projects/universe/index.js deleted file mode 100644 index 374b7d924a8..00000000000 --- a/projects/universe/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const { pool2 } = require('../helper/pool2') - -const STAKING_ADDRESS = '0x2d615795a8bdb804541C69798F13331126BA0c09'; -const AAVE_TOKEN = ADDRESSES.ethereum.AAVE -const BOND_TOKEN = '0x0391d2021f89dc339f60fff84546ea23e337750f' -const COMP_TOKEN = '0xc00e94cb662c3520282e6f5717214004a7f26888' -const SNX_TOKEN = ADDRESSES.ethereum.SNX -const SUSHI_TOKEN = ADDRESSES.ethereum.SUSHI -const LINK_TOKEN = ADDRESSES.ethereum.LINK -const ILV_TOKEN = '0x767fe9edc9e0df98e07454847909b5e959d7ca0e' -const USDC_XYZ_SUSHI_LP_TOKEN = '0xbbbdb106a806173d1eea1640961533ff3114d69a' - - -module.exports = { - methodology: 'TVL counts tokens that have been deposited to the yield farming vaults. Pool2 TVL counts SushiSwap LP tokens (USDC-XYZ) that have been deposited to the yield farm.', - ethereum: { - tvl: sumTokensExport({ owner: STAKING_ADDRESS, tokens: [AAVE_TOKEN, BOND_TOKEN, COMP_TOKEN, ILV_TOKEN, LINK_TOKEN, SNX_TOKEN, SUSHI_TOKEN]}), - pool2: pool2(STAKING_ADDRESS, USDC_XYZ_SUSHI_LP_TOKEN), - }, - start: '2021-05-25', // May-25-2021 10:39:49 AM +UTC -}; \ No newline at end of file diff --git a/projects/universeftm/index.js b/projects/universeftm/index.js deleted file mode 100644 index b65704c6ce4..00000000000 --- a/projects/universeftm/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); - -module.exports = masterchefExports({ - chain: 'fantom', - nativeToken: '0xf346362004540F714a45c6E80c719767e087a649', - masterchef: '0x5b996C1F5bc7Ba09fB8d69FBB1c495f0a9D6b7D9', -}) - -module.exports.deadFrom = '2022-04-01' \ No newline at end of file diff --git a/projects/univoucher/index.js b/projects/univoucher/index.js deleted file mode 100644 index 121ab45b576..00000000000 --- a/projects/univoucher/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const config = { - ethereum: { - owners: ["0x51553818203e38ce0E78e4dA05C07ac779ec5b58"], - fromBlock: 22714895, - }, - base: { - owners: ["0x51553818203e38ce0E78e4dA05C07ac779ec5b58"], - fromBlock: 31629302, - }, - bsc: { - owners: ["0x51553818203e38ce0E78e4dA05C07ac779ec5b58"], - fromBlock: 51538912, - }, - polygon: { - owners: ["0x51553818203e38ce0E78e4dA05C07ac779ec5b58"], - fromBlock: 72827473, - }, - arbitrum: { - owners: ["0x51553818203e38ce0E78e4dA05C07ac779ec5b58"], - fromBlock: 347855002, - }, - optimism: { - owners: ["0x51553818203e38ce0E78e4dA05C07ac779ec5b58"], - fromBlock: 137227100, - }, - avax: { - owners: ["0x51553818203e38ce0E78e4dA05C07ac779ec5b58"], - fromBlock: 63937777, - }, -}; - -Object.keys(config).forEach(chain => { - const { owners, fromBlock } = config[chain] - const tokens = [ADDRESSES.null] // Native token (ETH/BNB/MATIC/etc) - - // Add common stablecoins and tokens - if (ADDRESSES[chain]) { - // Major stablecoins - if (ADDRESSES[chain].USDT) tokens.push(ADDRESSES[chain].USDT) - if (ADDRESSES[chain].USDC) tokens.push(ADDRESSES[chain].USDC) - if (ADDRESSES[chain].DAI) tokens.push(ADDRESSES[chain].DAI) - if (ADDRESSES[chain].BUSD) tokens.push(ADDRESSES[chain].BUSD) - if (ADDRESSES[chain].TUSD) tokens.push(ADDRESSES[chain].TUSD) - if (ADDRESSES[chain].FDUSD) tokens.push(ADDRESSES[chain].FDUSD) - - // Other popular tokens - if (ADDRESSES[chain].WETH) tokens.push(ADDRESSES[chain].WETH) - if (ADDRESSES[chain].WBTC) tokens.push(ADDRESSES[chain].WBTC) - - // Gold-backed tokens - if (ADDRESSES[chain].XAUT) tokens.push(ADDRESSES[chain].XAUT) - if (ADDRESSES[chain].PAXG) tokens.push(ADDRESSES[chain].PAXG) - } - - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens }), - start: fromBlock - } -}) - -module.exports.methodology = "UniVoucher TVL is calculated by summing all ETH and ERC20 tokens held in the UniVoucher contract across all supported chains. These represent funds deposited into active (unredeemed/uncancelled) gift cards." \ No newline at end of file diff --git a/projects/uniwhale/index.js b/projects/uniwhale/index.js deleted file mode 100644 index ab0ef6fccdd..00000000000 --- a/projects/uniwhale/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const USDT = ADDRESSES.bsc.USDT; -const UNIWHALE_LIQUIDITY_POOL = "0xBdeCAFd9096D43616a8E0eB8F3fa0865fD4769E7"; -const UNIWHALE_MARGIN_POOL = "0xBB1B941aB76fAE4e9F552B860eFaC1F367AC9bCc"; -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - start: '2023-03-03', - bsc: { - tvl: sumTokensExport({ owners: [UNIWHALE_LIQUIDITY_POOL, UNIWHALE_MARGIN_POOL, ], tokens: [USDT]}), - }, -}; diff --git a/projects/uniwswap-unia/index.js b/projects/uniwswap-unia/index.js deleted file mode 100644 index 5715b6ec4a7..00000000000 --- a/projects/uniwswap-unia/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - -module.exports = { - arbitrum: masterchefExports({ - chain: 'arbitrum', - masterchef: '0x231A584095dbFb73A0201d6573260Bc646566c98', - useDefaultCoreAssets: true, - nativeToken: '0xe547fab4d5ceafd29e2653cb19e6ae8ed9c8589b', - }).arbitrum, - ethpow: masterchefExports({ - chain: 'ethpow', - masterchef: '0xC07707C7AC7E383CE344C090F915F0a083764C94', - useDefaultCoreAssets: true, - nativeToken: '0x2a0cf46ecaaead92487577e9b737ec63b0208a33', - }).ethpow, -} - -module.exports.misrepresentedTokens = true -module.exports.doublecounted = true \ No newline at end of file diff --git a/projects/uniwswap/index.js b/projects/uniwswap/index.js deleted file mode 100644 index 0d570f8fc29..00000000000 --- a/projects/uniwswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethpow: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xaBC4325bAD182076EAa5877c68437833d596D3Ee', - }) - } -}; \ No newline at end of file diff --git a/projects/unizen/abi.json b/projects/unizen/abi.json deleted file mode 100644 index 550700d1c6f..00000000000 --- a/projects/unizen/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "stakeableTokens": "function stakeableTokens(address) view returns (uint256 totalValueLocked, uint256 weight, bool active)" -} \ No newline at end of file diff --git a/projects/unizen/index.js b/projects/unizen/index.js deleted file mode 100644 index 11149948405..00000000000 --- a/projects/unizen/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { pool2 } = require("../helper/pool2"); - -const stakingContract = "0xb202CCbeBB4C472657f16F30bF277d3BE7F4781a"; -const ZCX = "0xc52c326331e9ce41f04484d3b5e5648158028804"; -const WETH_ZCX_UNIV2 = "0x797E1Dc0738f2F047d7E0Dd185e41A35F87c5618"; - -const staking = async (api) => { - const { totalValueLocked } = await api.call({ abi: "function stakeableTokens(address) view returns (uint256 totalValueLocked, uint256 weight, bool active)", target: stakingContract, params: ZCX }) - api.add(ZCX, totalValueLocked) -}; - -module.exports = { - ethereum: { - staking: staking, - pool2: pool2(stakingContract, WETH_ZCX_UNIV2), - tvl: () => ({}), - }, - methodology: - "Counts liquidity as Staking and Pool2 only", -}; diff --git a/projects/unknown/abi.js b/projects/unknown/abi.js deleted file mode 100644 index 10553fac9d4..00000000000 --- a/projects/unknown/abi.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - penPoolsData: "function unkwnPoolsData() view returns (tuple(address id, address stakingAddress, uint256 stakedTotalSupply, uint256 totalSupply, tuple(address id, string symbol, bool stable, address token0Address, address token1Address, address gaugeAddress, address bribeAddress, address[] bribeTokensAddresses, address fees, uint256 totalSupply) poolData)[])", - poolsReservesInfo: "function poolsReservesInfo(address[] _poolsAddresses) view returns (tuple(address id, address token0Address, address token1Address, uint256 token0Reserve, uint256 token1Reserve, uint8 token0Decimals, uint8 token1Decimals)[])", - locked: "function locked(uint256) view returns (int128 amount, uint256 end)", -} \ No newline at end of file diff --git a/projects/unknown/index.js b/projects/unknown/index.js deleted file mode 100644 index d61c58658c1..00000000000 --- a/projects/unknown/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const abi = require("./abi.js"); -const partnerRewardsPoolAddress = "0x4D0EDfd1899Fa15f21e3BBE9588CE71816BD189C"; -const unConeRewardPoolAddress = "0x6C4387C90CF36C9ddf55EeB7410daaD95096B547"; -const vlUnknwnAddress = "0xc81CaBd33F810118972A63cb66ccd373E9E0C4Ea"; -const unkwnAddress = "0xD7FbBf5CB43b4A902A8c994D94e821f3149441c7"; -const unCONEAddress = "0xE75B36e5fdaA10c885a2D429F3B95d9b2De9F946"; -const cone = '0xA60205802E1B5C6EC1CAFA3cAcd49dFeECe05AC9' -const { getUniqueAddresses } = require('../helper/utils') -const { sumTokensExport, } = require('../helper/unknownTokens') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { default: BigNumber } = require('bignumber.js') - -const lps = [ - '0xd8a928623224d83174811fb105d64c46462c438f', // UNKNOWN/BNB - '0x672cD8201CEB518F9E42526ef7bCFe5263F41951', // CONE/BNB -] - -async function tvl(api) { - // 0xDAO Core - const unkwnLensAddress = "0x5b1cEB9adcec674552CB26dD55a5E5846712394C"; - const coneLensAddress = "0xe2006DFB1363330AD81BcEBee7bE45A7692fC53f"; - - const reserveDataMap = {} - - const poolsData = await api.call({ - target: unkwnLensAddress, - abi: abi.penPoolsData, - }) - - const conePoolsAddresses = getUniqueAddresses(poolsData.map(i => i.poolData.id)) - const reservesData = await api.call({ - target: coneLensAddress, - params: [conePoolsAddresses], - abi: abi.poolsReservesInfo - }) - reservesData.forEach(i => reserveDataMap[i.id.toLowerCase()] = i) - - poolsData.forEach(pool => { - const ratio = pool.totalSupply / pool.poolData.totalSupply - const reserves = reserveDataMap[pool.poolData.id.toLowerCase()] - if (!reserves) throw new Error('Missing data', pool.poolData.id) - const { token0Address, token0Reserve, token1Address, token1Reserve } = reserves - api.add(token0Address, BigNumber(+token0Reserve * ratio).toFixed(0)) - api.add(token1Address, BigNumber(+token1Reserve * ratio).toFixed(0)) - }) - - // Add DYST in penDYST - const uConeSupply = await api.call({ abi: 'erc20:totalSupply', target: unCONEAddress}) - api.add(cone, uConeSupply) - - await sumTokens2({ - tokensAndOwners: [ - [cone, unConeRewardPoolAddress], - [cone, partnerRewardsPoolAddress], - ], api, - }) -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl, - staking: sumTokensExport({ tokensAndOwners: [ - [unkwnAddress, vlUnknwnAddress], - [unkwnAddress, partnerRewardsPoolAddress], - [unkwnAddress, unConeRewardPoolAddress], - ], chain: 'bsc', lps, useDefaultCoreAssets: true, }), - } -} diff --git a/projects/unleash/index.js b/projects/unleash/index.js deleted file mode 100644 index e6b5d31f7e5..00000000000 --- a/projects/unleash/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const methodologies = require("../helper/methodologies"); - -module.exports = { - methodology: methodologies.lendingMarket, - sty: aaveExports('sty', '0xe80c9a1D69cd3EE13A65BFA84C6Bb4Af7130D3a1', undefined, ['0x970C24ABaEA0dddf1b1C328237001c74Bb96c9e4'], { v3: true, } ), -} diff --git a/projects/unlimited-trade/index.js b/projects/unlimited-trade/index.js deleted file mode 100644 index 84ecf46f223..00000000000 --- a/projects/unlimited-trade/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - arbitrum: { - pools: [ - '0x1eBB487B42530D511091DC6bC4359ee767ad0d16', // bluechip - '0x0155d3f48e51e108f0dfF56F6EFBeA1A870B3cE7', // altcoin - '0x20A1012B79e8F3cA3f802533c07934eF97398dA7', // degen - ], - } -} - -Object.keys(config).forEach(chain => { - const { pools } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const tokens = await api.multiCall({ abi: 'address:asset', calls: pools}) - return sumTokens2({ api, tokensAndOwners2: [tokens, pools] }) - } - } -}) \ No newline at end of file diff --git a/projects/unlockd-v2/index.js b/projects/unlockd-v2/index.js deleted file mode 100644 index c0d566ce105..00000000000 --- a/projects/unlockd-v2/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const methodologies = require("../helper/methodologies.js"); -const uTokenAbi = { - "totalAvailableSupply": "function totalAvailableSupply(address) view returns (uint256)", - "getScaledTotalDebtMarket": "function getScaledTotalDebtMarket(address) view returns (uint256)" -} -const addresses = { - UTokenVault: "0x25299e9Ec27c242465587B8A2Aa70bcE02636cDA", - USDC: ADDRESSES.ethereum.USDC -} - -async function tvl(api) { - return api.sumTokens({ owner: addresses.UTokenVault, token: addresses.USDC }) -} - -async function borrowed(api) { - const scaledDebt = await api.call({ - target: addresses.UTokenVault, - params: addresses.USDC, - abi: uTokenAbi.getScaledTotalDebtMarket - }); - api.add(addresses.USDC, scaledDebt) -} - -module.exports = { - methodology: methodologies.lendingMarket, - ethereum: { - tvl, - borrowed, - }, -}; diff --git a/projects/unlockd/helper/abi/UNFTRegistry.json b/projects/unlockd/helper/abi/UNFTRegistry.json deleted file mode 100644 index 772fbb9d438..00000000000 --- a/projects/unlockd/helper/abi/UNFTRegistry.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getUNFTAssetList": "function getUNFTAssetList() external view returns (address[] memory)", - "uNftProxys": "function uNftProxys(address) view returns (address)" - } \ No newline at end of file diff --git a/projects/unlockd/helper/abi/UiPoolDataProvider.json b/projects/unlockd/helper/abi/UiPoolDataProvider.json deleted file mode 100644 index fa1443acf07..00000000000 --- a/projects/unlockd/helper/abi/UiPoolDataProvider.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getSimpleReservesData": "function getSimpleReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 reserveFactor, bool borrowingEnabled, bool isActive, bool isFrozen, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint40 lastUpdateTimestamp, address bTokenAddress, address debtTokenAddress, address interestRateAddress, uint256 availableLiquidity, uint256 totalVariableDebt, uint256 priceInEth, uint256 variableRateSlope1, uint256 variableRateSlope2)[])", - "getSimpleNftsData": "function getSimpleNftsData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, uint256 redeemDuration, uint256 auctionDuration, uint256 redeemFine, uint256 redeemThreshold, bool isActive, bool isFrozen, address bNftAddress, uint256 priceInEth, uint256 totalCollateral)[])" -} - diff --git a/projects/unlockd/helper/abi/abi.js b/projects/unlockd/helper/abi/abi.js deleted file mode 100644 index d8ff45774ed..00000000000 --- a/projects/unlockd/helper/abi/abi.js +++ /dev/null @@ -1,7 +0,0 @@ -const UiPoolDataProvider = require("./UiPoolDataProvider.json"); -const UNFTRegistry = require("./UNFTRegistry.json"); - -module.exports = { - UiPoolDataProvider, - UNFTRegistry, -}; diff --git a/projects/unlockd/helper/addresses.js b/projects/unlockd/helper/addresses.js deleted file mode 100644 index 528f167bee5..00000000000 --- a/projects/unlockd/helper/addresses.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - ethereum: { - UiPoolDataProvider: "0xD726b93865393fb3B345C66Da3EB5999B5aC4754", - LendPoolAddressProvider: "0xE6cd031FB0D9A79FD8CD3035B9228F78ff459B07", - UNFTRegistry: "0x255f25335662c88Fcc7deC402cADf2f4f0E08300", - }, -}; \ No newline at end of file diff --git a/projects/unlockd/helper/index.js b/projects/unlockd/helper/index.js deleted file mode 100644 index d23b24a2018..00000000000 --- a/projects/unlockd/helper/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const abi = require("./abi/abi"); -const address = require("./addresses"); -const { sumTokens2 } = require("../../helper/unwrapLPs") - -async function tvl(api) { - const tokens = await api.call({ target: address.ethereum.UNFTRegistry, abi: abi.UNFTRegistry.getUNFTAssetList, }) - const owners = (await api.multiCall({ abi: 'function getUNFTAddresses(address) view returns (address proxy, address impl)', calls: tokens, target: address.ethereum.UNFTRegistry,})).map(i => i.proxy) - - const reservesData = await api.call({ - target: address.ethereum.UiPoolDataProvider, - params: [address.ethereum.LendPoolAddressProvider], - abi: abi.UiPoolDataProvider.getSimpleReservesData - }) - - reservesData.forEach(({ underlyingAsset, availableLiquidity }) => api.add(underlyingAsset, availableLiquidity)) - - return sumTokens2({ api, tokensAndOwners2: [tokens, owners] }); -} - -async function borrowed(api) { - const reservesData = await api.call({ - target: address.ethereum.UiPoolDataProvider, - params: [address.ethereum.LendPoolAddressProvider], - abi: abi.UiPoolDataProvider.getSimpleReservesData - }) - - reservesData.forEach(({ underlyingAsset, totalVariableDebt }) => api.add(underlyingAsset, totalVariableDebt)) -} - -module.exports = { - tvl, - borrowed, -}; - - diff --git a/projects/unlockd/index.js b/projects/unlockd/index.js deleted file mode 100644 index 856ee506c02..00000000000 --- a/projects/unlockd/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const methodologies = require("../helper/methodologies.js"); -const { tvl, borrowed } = require("./helper/index.js"); - -module.exports = { - methodology: methodologies.lendingMarket, - ethereum: { - tvl, - borrowed, - }, -}; \ No newline at end of file diff --git a/projects/uno-farm/apps.json b/projects/uno-farm/apps.json deleted file mode 100644 index abfc31e8f6c..00000000000 --- a/projects/uno-farm/apps.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "polygon": [ - { - "poolInfoABI": [ - "function lpToken(uint256) view returns (address lpToken)" - ], - "masterChefs": ["0x0769fd68dFb93167989C6f7254cd0D766Fb2841F"], - "factory": "0xb8698FbDFcd6044fA9C56938a50D7D0FDD22e8F0", - "getLPAddress": ["((a) => a)"], - "name": "sushiswap" - }, - { - "poolInfoABI": [ - "function lpToken(uint256) view returns (address lpToken)" - ], - "masterChefs": ["0x54aff400858Dcac39797a81894D9920f16972D1D"], - "factory": "0x35E19FD59212985209339aDD9fe0649604ffB7Be", - "getLPAddress": ["((a) => a)"], - "name": "apeswap" - }, - { - "name": "balancer", - "factory": "0xBAE4733e8E761DE20DF4Cd2c62823776489957e8" - }, - { - "name": "quickswap", - "factory": "0x56888a3c0BC31a0b83bCd6cCd4dC2726E26239D7" - } - ], - "bsc": [ - { - "poolInfoABI": [ - "function lpToken(uint256) view returns (address lpToken)" - ], - "masterChefs": ["0xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652"], - "factory": "0xd62c64a8846d704c7775679982219e477dcB564A", - "getLPAddress": ["((a) => a)"], - "name": "pancakeswap" - }, - { - "poolInfoABI": [ - "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accWeVEPerShare)" - ], - "masterChefs": ["0x5c8D727b265DBAfaba67E050f2f739cAeEB4A6F9"], - "factory": "0x50cE50F5c2835D3A9c257A27D814E8d2C039449b", - "getLPAddress": ["((a) => a[0])"], - "name": "apeswap" - } - ], - "aurora": [ - { - "poolInfoABI": [ - "function lpToken(uint256) view returns (address lpToken)" - ], - "masterChefs": ["0x3838956710bcc9D122Dd23863a0549ca8D5675D6"], - "factory": "0x552f55dDbCD8a5e2ae6f07b5e369675A62c1F957", - "getLPAddress": ["((a) => a)"], - "name": "Trisolaris Stable" - }, - { - "poolInfoABI": [ - "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accWeVEPerShare)", - "function lpToken(uint256) view returns (address lpToken)" - ], - "masterChefs": ["0x1f1Ed214bef5E83D8f5d0eB5D7011EB965D0D79B","0x3838956710bcc9D122Dd23863a0549ca8D5675D6"], - "factory": "0x64c9899fcdB6f9565Ba69B0939Aec51e320C5489", - "getLPAddress": ["((a) => a[0])","((a) => a)"], - "name": "Trisolaris Standard" - } - - ], - "avax":[ - { - "poolInfoABI": [ - "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accWeVEPerShare)", - "function poolInfo(uint256) view returns (address lpToken, uint96 allocPoint, uint256 accJoePerShare, uint256 accJoePerFactorPerShare, uint64 lastRewardTimestamp, address rewarder, uint32 veJoeShareBp, uint256 totalFactor, uint256 totalLpSupply)" - ], - "masterChefs": ["0x188bED1968b795d5c9022F6a0bb5931Ac4c18F00","0x4483f0b6e2F5486D06958C20f8C39A7aBe87bf8F"], - "factory": "0x6Eae93D177BFDDAF5ee238F55C36A847A35E62A0", - "getLPAddress": ["((a) => a[0])","((a) => a[0])"], - "name": "Traderjoe" - } - ] -} diff --git a/projects/uno-farm/index.js b/projects/uno-farm/index.js deleted file mode 100644 index a3921a64405..00000000000 --- a/projects/uno-farm/index.js +++ /dev/null @@ -1,106 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const sdk = require("@defillama/sdk"); -const { - getUnoFarms, - getFullInfoBalancerUnoFarm, - getFullInfoQuickswapUnoFarm, -} = require("./uno-helplers"); -const { getUserMasterChefBalances } = require("../helper/masterchef"); -const apps = require("./apps.json"); - -async function defaultTVL({ balances, chain, block, app }) { - const farms = await getUnoFarms({ chain, block, factory: app.factory }); - const promises = []; - - for (let k = 0; k < app.masterChefs.length; k++) { - for (let i = 0; i < farms.length; i++) { - promises.push( - getUserMasterChefBalances({ - balances, - masterChefAddress: app.masterChefs[k], - userAddres: farms[i], - block, - chain, - poolInfoABI: app.poolInfoABI[k], - getLPAddress: app.getLPAddress[k] ? eval(app.getLPAddress[k]) : null, - }) - ); - } - } - await Promise.all(promises); -} - -async function balancerTVL({ balances, chain, block, app }) { - const farms = await getFullInfoBalancerUnoFarm({ - chain, - block, - factory: app.factory, - }); - - const tokensAndOwners = farms.map((v) => [v.gauge, v.farm]); - await sumTokens2({ balances, block, chain, tokensAndOwners }); -} - -async function quickswapTVL({ balances, chain, block, app }) { - const transform = (addr) => chain + ":" + addr; - const farms = await getFullInfoQuickswapUnoFarm({ - chain, - block, - factory: app.factory, - }); - const balanceOfFarmCalls = farms.map((v) => ({ - target: v.lpToken, - params: v.farm, - })); - const balanceOfFarm = ( - await sdk.api.abi.multiCall({ - block, - calls: balanceOfFarmCalls, - abi: "erc20:balanceOf", - chain, - }) - ).output.map((a) => a.output); - farms.map((v, i) => { - sdk.util.sumSingleBalance( - balances, - transform(v.stakeToken), - balanceOfFarm[i] - ); - }); -} - -async function tvl(api) { - const chain = api.chain; - const block = api.block; - let balances = {}; - const promises = []; - const arrayOfApps = apps[chain]; - for (let j = 0; j < arrayOfApps.length; j++) { - const app = arrayOfApps[j]; - if (app.name == "balancer") { - promises.push(balancerTVL({ balances, chain, block, app })); - } else if (app.name == "quickswap") { - promises.push(quickswapTVL({ balances, chain, block, app })); - } else { - promises.push(defaultTVL({ balances, chain, block, app })); - } - } - await Promise.all(promises); - return balances; -} - -module.exports = { - start: '2022-06-23', - polygon: { - tvl, - }, - bsc: { - tvl, - }, - aurora: { - tvl, - }, - avax: { - tvl, - }, -}; diff --git a/projects/uno-farm/uno-helplers/abis/UnoFactory.json b/projects/uno-farm/uno-helplers/abis/UnoFactory.json deleted file mode 100644 index eb7abdfdded..00000000000 --- a/projects/uno-farm/uno-helplers/abis/UnoFactory.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "Farms": "function Farms(address) view returns (address lpToken)", - "pools": "function pools(uint256) view returns (address lpToken)", - "poolLength": "uint256:poolLength" -} diff --git a/projects/uno-farm/uno-helplers/abis/UnoFarmBalancer.json b/projects/uno-farm/uno-helplers/abis/UnoFarmBalancer.json deleted file mode 100644 index 8f5e73c6af5..00000000000 --- a/projects/uno-farm/uno-helplers/abis/UnoFarmBalancer.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "gauge": "function gauge() view returns (address gauge)", - "streamer": "function streamer() view returns (address streamer)" -} diff --git a/projects/uno-farm/uno-helplers/abis/UnoFarmQuickswap.json b/projects/uno-farm/uno-helplers/abis/UnoFarmQuickswap.json deleted file mode 100644 index 3e0a46f7448..00000000000 --- a/projects/uno-farm/uno-helplers/abis/UnoFarmQuickswap.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "lpPair": "function lpPair() view returns (address lpPair)" -} diff --git a/projects/uno-farm/uno-helplers/index.js b/projects/uno-farm/uno-helplers/index.js deleted file mode 100644 index 083c370e87d..00000000000 --- a/projects/uno-farm/uno-helplers/index.js +++ /dev/null @@ -1,161 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const abi = require("./abis/UnoFactory.json"); -const UnoFarmBalancerABI = require("./abis/UnoFarmBalancer.json"); -const UnoFarmQuickswapABI = require("./abis/UnoFarmQuickswap.json"); - -async function getUnoFarms({ - factory, - chain, - block, - getFarms = null, - getLPAddress = null, -}) { - const poolLength = ( - await sdk.api.abi.call({ - abi: abi.poolLength, - target: factory, - block, - chain, - }) - ).output; - const dummyArray = Array.from(Array(Number(poolLength)).keys()); - const lpCalls = dummyArray.map((i) => ({ target: factory, params: i })); - const lpTokens = ( - await sdk.api.abi.multiCall({ - block, - calls: lpCalls, - abi: abi.pools, - chain, - }) - ).output.map((a) => (getLPAddress ? getLPAddress(a.output) : a.output)); - const farmsCalls = lpTokens.map((i) => ({ target: factory, params: i })); - const farms = ( - await sdk.api.abi.multiCall({ - block, - calls: farmsCalls, - abi: abi.Farms, - chain, - }) - ).output.map((a) => (getFarms ? getFarms(a.output) : a.output)); - return farms; -} - -async function getUnoFarmsAndTheirLpTokens({ - factory, - chain, - block, - getFarms = null, - getLPAddress = null, -}) { - const poolLength = ( - await sdk.api.abi.call({ - abi: abi.poolLength, - target: factory, - block, - chain, - }) - ).output; - const dummyArray = Array.from(Array(Number(poolLength)).keys()); - const lpCalls = dummyArray.map((i) => ({ target: factory, params: i })); - const lpTokens = ( - await sdk.api.abi.multiCall({ - block, - calls: lpCalls, - abi: abi.pools, - chain, - }) - ).output.map((a) => (getLPAddress ? getLPAddress(a.output) : a.output)); - const farmsCalls = lpTokens.map((i) => ({ target: factory, params: i })); - const farms = ( - await sdk.api.abi.multiCall({ - block, - calls: farmsCalls, - abi: abi.Farms, - chain, - }) - ).output.map((a) => (getFarms ? getFarms(a.output) : a.output)); - return farms.map((v, i) => ({ - farm: v, - lpToken: lpTokens[i], - })); -} - -async function getFullInfoBalancerUnoFarm({ - factory, - chain, - block, - getFarms = null, - getLPAddress = null, -}) { - const dataFarms = await getUnoFarmsAndTheirLpTokens({ - factory, - chain, - block, - getFarms, - getLPAddress, - }); - const gaugeCalls = dataFarms.map((v) => ({ target: v.farm })); - const streamerCalls = dataFarms.map((v) => ({ target: v.farm })); - const gauges = ( - await sdk.api.abi.multiCall({ - block, - calls: gaugeCalls, - abi: UnoFarmBalancerABI.gauge, - chain, - }) - ).output.map((a) => a.output); - const streamers = ( - await sdk.api.abi.multiCall({ - block, - calls: streamerCalls, - abi: UnoFarmBalancerABI.streamer, - chain, - permitFailure: true, - }) - ).output.map((a) => a.output); - - return dataFarms.map((v, i) => ({ - ...v, - gauge: gauges[i], - streamer: streamers[i], - })); -} -async function getFullInfoQuickswapUnoFarm({ - factory, - chain, - block, - getFarms = null, - getLPAddress = null, - }) { - const dataFarms = await getUnoFarmsAndTheirLpTokens({ - factory, - chain, - block, - getFarms, - getLPAddress, - }); - const stakeTokenCalls = dataFarms.map((v) => ({ target: v.farm })); - const stakeTokens = ( - await sdk.api.abi.multiCall({ - block, - calls: stakeTokenCalls, - abi: UnoFarmQuickswapABI.lpPair, - chain, - permitFailure: true, - }) - ).output.map((a) => a.output); - - - return dataFarms.map((v, i) => ({ - ...v, - stakeToken: stakeTokens[i], - })).filter(v=>v.stakeToken !== null); - } - -module.exports = { - getUnoFarms, - getUnoFarmsAndTheirLpTokens, - getFullInfoBalancerUnoFarm, - getFullInfoQuickswapUnoFarm, -}; diff --git a/projects/unore/index.js b/projects/unore/index.js deleted file mode 100644 index 344334bc922..00000000000 --- a/projects/unore/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const uno = '0x474021845c4643113458ea4414bdb7fb74a01a77' -const uno_rollux = '0x570baA32dB74279a50491E88D712C957F4C9E409' - -const config = { - ethereum: { - uToken: uno, // UNO token for staking only - tokensAndOwners: [ - [nullAddress, '0x929F524473D7B86acc0ADD87B1874Bdf63Cf0Ab1'], // ETH SSIP - [ADDRESSES.ethereum.USDT, '0x442e9fe958202Dc29d7018c1AA47479F2159D8a0'], // USDT SSIP - [ADDRESSES.ethereum.USDC, '0xF37c0901662f39039AFBd3c2546e3141c091e014'], // USDC SSIP - ], - pools: [ - '0x076E2A501FD0DA41E5A659aB664b2B6792B80Fa2', // UNO SSRP - '0x8978d08bd89B9415eB08A4D52C1bDDf070F19fA2', // UNO SSIP - '0x442e9fe958202Dc29d7018c1AA47479F2159D8a0', // USDT SSIP - '0xF37c0901662f39039AFBd3c2546e3141c091e014', // USDC SSIP - '0x929F524473D7B86acc0ADD87B1874Bdf63Cf0Ab1' // ETH SSIP - ] - }, - bsc: { - uToken: uno, // UNO token for staking only - tokensAndOwners: [ - [ADDRESSES.bsc.USDC, '0xabb83630993984C54fd60650F5A592407C51e54b'], // Zeus V2 - ], - pools: [ - '0xabb83630993984C54fd60650F5A592407C51e54b', // Zeus V2 - '0xeF21cB3eE91EcB498146c43D56C2Ef9Bae6B7d53' // Ares V2 - ] - }, - rollux: { - uToken: uno_rollux, // UNO Rollux token for staking only - tokensAndOwners: [ - [ADDRESSES.optimism.WETH_1, '0x7393310FdC8ed40B35D2afD79848BC7166Ae0474'], // Plutus - ], - pools: [ - '0x8685C2b4D2024805a1FF6831Bc4cc8569457811D', // Athena - '0x7393310FdC8ed40B35D2afD79848BC7166Ae0474' // Plutus - ] - } -} - -module.exports = { - start: '2021-07-12', // Sep-20-2021 07:27:47 AM +UTC - kava: { tvl: async () => ({})}, -}; - -Object.keys(config).forEach(chain => { - const { pools, uToken, tokensAndOwners } = config[chain] - - // TVL (Total Value Locked) - Excludes UNO token - module.exports[chain] = { - tvl: async (api) => sumTokens2({ api, tokensAndOwners }) - } - - // Staking - Includes only UNO token and its pools - if (uToken) { - module.exports[chain].staking = async (api) => sumTokens2({ - api, - tokens: [uToken], - owners: pools - }) - } -}) diff --git a/projects/unsheth/index.js b/projects/unsheth/index.js deleted file mode 100644 index 74d6180158d..00000000000 --- a/projects/unsheth/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs } = require('../helper/cache/getLogs') - -// upgraded LSDVault V2 -const LSDVAULT_CONTRACT_V1 = "0xE76Ffee8722c21b390eebe71b67D95602f58237F"; -const LSDVAULT_CONTRACT_V2 = "0x51A80238B5738725128d3a3e06Ab41c1d4C05C74"; - -async function tvl(api) { - const logs = await getLogs({ - api, - target: LSDVAULT_CONTRACT_V2, - topics: ['0xe5b3d6de4d7a3162af7ca9115e3e57964a3c605b53efa503cfcba6dd9ceb9e3c'], - eventAbi: 'event LSDAdded(address lsd)', - onlyArgs: true, - fromBlock: 16951456, - }) - const lsdAddresses = logs.map(i => i.lsd) - const lsds_v1= await api.fetchList({ lengthAbi: 'uint256:tabs', itemAbi: 'function supportedLSDs(uint256) returns (address)', target: LSDVAULT_CONTRACT_V1}) - return sumTokens2({ api, ownerTokens: [[lsdAddresses, LSDVAULT_CONTRACT_V2], [lsds_v1, LSDVAULT_CONTRACT_V1]]}); -} - -module.exports = { - ethereum: { - tvl, - }, -}; // node test.js projects/unsheth/index.js diff --git a/projects/unslashed.js b/projects/unslashed.js deleted file mode 100644 index fbb77e69b43..00000000000 --- a/projects/unslashed.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens } = require('./helper/unwrapLPs') -const { getConfig } = require('./helper/cache') - -const ENZYME_VAULT = '0x86fb84e92c1eedc245987d28a42e123202bd6701'.toLowerCase() - -async function tvl(ts, block) { - const response = (await getConfig('enzyme', 'https://app.enzyme.finance/api/v1/network-asset-balances?network=ethereum')) - const tokens = response.filter(d => d.vaults.includes(ENZYME_VAULT)).map(d => d.id) - const balances = {} - await sumTokens(balances, tokens.map(token => [token, ENZYME_VAULT]), block) - return balances -} - -module.exports = { - ethereum: { tvl }, - doublecounted: true, -} diff --git a/projects/untangled-yield/index.js b/projects/untangled-yield/index.js deleted file mode 100644 index abdff18f61d..00000000000 --- a/projects/untangled-yield/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') - -module.exports = { - celo: { - tvl: sumERC4626VaultsExport({ vaults: ['0x2a68c98bd43aa24331396f29166aef2bfd51343f'], isOG4626: true, }) - }, - polygon: { - tvl: sumERC4626VaultsExport({ vaults: ['0x3f48e00CFEba3e713dB8Bc3E28d634578c553e32'], isOG4626: true, }) - } -} \ No newline at end of file diff --git a/projects/untangled/index.js b/projects/untangled/index.js deleted file mode 100644 index 2b2a8243fc7..00000000000 --- a/projects/untangled/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const Contracts = { - SecuritizationManager: "0x4DCC7a839CE7e952Cd90d03d65C70B9CCD6BA4C2", - USDC: ADDRESSES.celo.USDC, - SecuritizationPoolValueService: "0x8dA445046281e6FBf2aBAd56952331B9D5Ea8d45" -}; - -async function tvl(api) { - const pools = await api.fetchList({ lengthAbi: 'getPoolsLength', itemAbi: 'pools', target: Contracts.SecuritizationManager}) - const reserves = await api.multiCall({ abi: 'function getReserves() external view returns (uint256, uint256)', calls: pools }) - api.add(Contracts.USDC, reserves.map(i => i[1])) -} - -async function borrowed(api) { - const pools = await api.fetchList({ lengthAbi: 'getPoolsLength', itemAbi: 'pools', target: Contracts.SecuritizationManager}) - const poolDebt = await api.multiCall({target: Contracts.SecuritizationPoolValueService, abi: "function getExpectedAssetsValue(address poolAddress) external view returns (uint256)", calls:pools}) - api.add(Contracts.USDC, poolDebt) -} - -module.exports = { - celo: { - tvl, borrowed, - }, - deadFrom: "2025-01-14", -}; diff --git a/projects/untitledbank/index.js b/projects/untitledbank/index.js deleted file mode 100644 index 596e860631d..00000000000 --- a/projects/untitledbank/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); - -const abi = { - "idToMarketConfigs": "function idToMarketConfigs(uint256 id) returns (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv)", - "market": "function market(uint256 id) returns (uint128 totalSupplyAssets, uint128 totalSupplyShares, uint128 totalBorrowAssets, uint128 totalBorrowShares, uint128 lastUpdate, uint128 fee)" -} - -module.exports = { - methodology: `Collateral (supply minus borrows) in the balance of the UntitledHub contracts`, - soneium: { - tvl: async (api) => { - const untitledHub = "0x2469362f63e9f593087EBbb5AC395CA607B5842F"; - const fromBlock = 1680171; - - const marketIds = await getMarkets(api, untitledHub, fromBlock); - const tokens = ( - await api.multiCall({ - target: untitledHub, - calls: marketIds, - abi: abi.idToMarketConfigs, - }) - ) - .map((i) => [i.collateralToken, i.loanToken]) - .flat(); - return api.sumTokens({ owner: untitledHub, tokens }); - }, - borrowed: async (api) => { - const untitledHub = "0x2469362f63e9f593087EBbb5AC395CA607B5842F"; - const fromBlock = 1680171; - - const marketIds = await getMarkets(api, untitledHub, fromBlock); - const marketInfo = await api.multiCall({ - target: untitledHub, - calls: marketIds, - abi: abi.idToMarketConfigs, - }); - const marketData = await api.multiCall({ - target: untitledHub, - calls: marketIds, - abi: abi.market, - }); - marketData.forEach((i, idx) => { - api.add(marketInfo[idx].loanToken, i.totalBorrowAssets); - }); - return api.getBalances(); - }, - } -}; - -async function getMarkets(api, untitledHub, fromBlock) { - const logs = await getLogs({ - api, - target: untitledHub, - eventAbi: - "event CreateMarket(uint256 indexed id, (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv) marketConfigs)", - onlyArgs: true, - fromBlock, - topics: [ - "0x50dbb004548668dc176490f07af2ba46de8f0721e795275b350a9415f1fa526b", - ], - }); - return logs.map((i) => i.id); -} \ No newline at end of file diff --git a/projects/unusdao/index.js b/projects/unusdao/index.js deleted file mode 100644 index 3ad561779bf..00000000000 --- a/projects/unusdao/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const udo = "0xB91Ec4F9D7D12A1aC145A7Ae3b78AFb45856C9c8"; -const treasuryContract = "0x01CDdb5C0986B8521F93A9A5C6d84D6994a82742"; -const stakingContract = "0xC34AF465Aac5928afec7e3642BD8Ca7873a7F2b2"; - -const busd = ADDRESSES.bsc.BUSD; -const usdt = ADDRESSES.bsc.USDT; -const udoBusd = "0x364952dC20b5720b7fd3e73141cF6A85d9af8643"; - -module.exports = { - ...ohmTvl( - treasuryContract, - [ - [busd, false], - [usdt, false], - [udoBusd, true], - ], - "bsc", - stakingContract, - udo - ), -}; -module.exports.deadFrom = '2022-04-01' \ No newline at end of file diff --git a/projects/upheaval-v2/index.js b/projects/upheaval-v2/index.js deleted file mode 100644 index 26ce62f2a56..00000000000 --- a/projects/upheaval-v2/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'hyperliquid': '0x98e19A533FadB2C9853983772E4e7aa09a1478e0' -}) \ No newline at end of file diff --git a/projects/upheaval-v3/index.js b/projects/upheaval-v3/index.js deleted file mode 100644 index e734b7bc400..00000000000 --- a/projects/upheaval-v3/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniV3GraphExport } = require('../helper/uniswapV3') - -module.exports = { - hyperliquid: { - tvl: uniV3GraphExport({ graphURL: 'https://api.upheaval.fi/subgraphs/name/upheaval/exchange-v3', name: 'upheaval' }), - } -} \ No newline at end of file diff --git a/projects/uplift/index.js b/projects/uplift/index.js deleted file mode 100644 index 0ab0b75d991..00000000000 --- a/projects/uplift/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const LIFT_TOKEN_CONTRACT = "0x513C3200F227ebB62e3B3d00B7a83779643a71CF"; -const LIFT_STAKING_CONTRACT = "0x49C5b5f3aba18A4bCcF57AA1567ac5Bd46e82381"; - -module.exports = { - methodology: "Counts the number of LIFT tokens in the Staking contract", - start: '2021-11-18', - bsc: { - tvl: () => ({}), - staking: staking(LIFT_STAKING_CONTRACT, LIFT_TOKEN_CONTRACT), - } -}; diff --git a/projects/upshift/index.js b/projects/upshift/index.js deleted file mode 100644 index 64422d51afc..00000000000 --- a/projects/upshift/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') -const config = { - ethereum: ["0xB7858b66dFA38b9Cb74d00421316116A7851c273", "0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42", "0x18a5a3D575F34e5eBa92ac99B0976dBe26f9F869", "0xEBac5e50003d4B17Be422ff9775043cD61002f7f", "0xd684AF965b1c17D628ee0d77cae94259c41260F4", "0x5Fde59415625401278c4d41C6beFCe3790eb357f", "0xe1B4d34E8754600962Cd944B535180Bd758E6c2e", "0xc824A08dB624942c5E5F330d56530cD1598859fD","0xeb402fc96C7ed2f889d837C9976D6d821c1B5f01", "0x419386E3Ef42368e602720CC458e00c0B28c47A7", "0xB78dAf3fD674B81ebeaaa88d711506fa069E1C5E","0x7383c2454D23A1e34B35ba02674be0a41Bd5aa56","0xc428439fB7B1EFE56360Eb837Ca98F551fdD9B26","0x686c83Aa81ba206354fDcbc2cd282B4531365E29","0x396A3f77EE1faf5A3C46e878bA7b7a2dcbe55517", "0xE9B725010A9E419412ed67d0fA5f3A5f40159D32", "0x828BC5895b78b2fb591018Ca5bDC2064742D6D0f", "0x8AcA0841993ef4C87244d519166e767f49362C21"], - avax: ["0x3408b22d8895753C9A3e14e4222E981d4E9A599E", "0xB2bFb52cfc40584AC4e9e2B36a5B8d6554A56e0b"], - base: ["0x4e2D90f0307A93b54ACA31dc606F93FE6b9132d2"], - hyperliquid: ["0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB"], - bsc: ["0xD0b717ef23817b1a127139830Cf0FcD449ef74F0"], -} - -module.exports = { - doublecounted: true, - methodology: "TVL is the sum of tokens deposited in erc4626 vaults", -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumERC4626VaultsExport({ vaults: config[chain], isOG4626: true }) - } -}) \ No newline at end of file diff --git a/projects/ura/index.js b/projects/ura/index.js deleted file mode 100644 index 47486a3d21f..00000000000 --- a/projects/ura/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getFactoryTvl } = require("../terraswap/factoryTvl"); - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - terra2: { - tvl: getFactoryTvl( - "terra1jy84vk4gykw76hr4lydmkz55rzsfsk4v0nn4qjjzkpt00vvstrxqytlgjq" - ), - }, -}; // node test.js projects/ura/index.js diff --git a/projects/uranium.io/index.js b/projects/uranium.io/index.js deleted file mode 100644 index ae2234f1f7a..00000000000 --- a/projects/uranium.io/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const BigNumber = require("bignumber.js"); -const XU3O8_CONTRACT = '0x79052Ab3C166D4899a1e0DD033aC3b379AF0B1fD'; - -async function tvl(api) { - - const [totalSupply] = await Promise.all([ - api.call({ abi: "uint256:totalSupply", target: XU3O8_CONTRACT }), - ]); - - const value = parseInt(totalSupply) - api.add(XU3O8_CONTRACT, value) -} - -module.exports = { - methodology: 'Counts the balance of tokens in the XU3O8 contract', - etlk: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/urdex/index.js b/projects/urdex/index.js deleted file mode 100644 index 4e2c3b29786..00000000000 --- a/projects/urdex/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); - -const Contracts = { - Pool: "0xF67D3a53a110a764DCa7123b9f3FC5B404566577", - Chef: "0x235dB7AFE577A239150160ab7429bC3D6e25fdAa", - Tokens: { - BTC: ADDRESSES.arbitrum.WBTC, - USDT: ADDRESSES.arbitrum.USDT, - WETH: ADDRESSES.arbitrum.WETH - }, - URD_USDT_LP: "0xA8eC0aa8fe4287E768Fd382845442Fa29F2886ef" -} - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ owner: Contracts.Pool, tokens: Object.values(Contracts.Tokens) }), - pool2: staking(Contracts.Chef, Contracts.URD_USDT_LP) - } -}; diff --git a/projects/usdai/abi.json b/projects/usdai/abi.json deleted file mode 100644 index 7d4006fbfee..00000000000 --- a/projects/usdai/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "claimableBaseYield": "uint256:claimableBaseYield", - "pools": "address[]:pools", - "collateralToken": "address:collateralToken", - "currencyToken": "address:currencyToken", - "liquidityNodes": "function liquidityNodes(uint128 startTick, uint128 endTick) view returns (tuple(uint128 tick, uint128 value, uint128 shares, uint128 available, uint128 pending, uint128 redemptions, uint128 prev, uint128 next)[])", - "whitelistedTokens": "function whitelistedTokens() external view returns (address[] memory)" -} \ No newline at end of file diff --git a/projects/usdai/index.js b/projects/usdai/index.js deleted file mode 100644 index 617472fccbe..00000000000 --- a/projects/usdai/index.js +++ /dev/null @@ -1,101 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const USDAI_CONTRACT = "0x0A1a1A107E45b7Ced86833863f482BC5f4ed82EF"; -const STAKED_USDAI_CONTRACT = "0x0B2b2B2076d95dda7817e785989fE353fe955ef9"; -const PROTOCOL_CONTRACTS = [USDAI_CONTRACT, STAKED_USDAI_CONTRACT]; -const WRAPPED_M_CONTRACT = "0x437cc33344a0B27A429f795ff6B469C72698B291"; -const QUEUED_DEPOSITOR_CONTRACT = "0x81cc0DEE5e599784CBB4862c605c7003B0aC5A53"; -const MAX_UINT_128 = "0xffffffffffffffffffffffffffffffff"; - -async function tvl(api) { - // Get all pools engaged by the protocol - const pools = await api.call({ - target: STAKED_USDAI_CONTRACT, - abi: abi.pools, - }); - const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools }); - const ct = await api.multiCall({ abi: abi.collateralToken, calls: pools }); - - // Pool deposit tokens and collateral tokens - const ownerTokens = pools.map((pool, i) => [[tokens[i], ct[i]], pool]); - ownerTokens.push(...PROTOCOL_CONTRACTS.map(contract => [[WRAPPED_M_CONTRACT], contract])); - await sumTokens2({ api, ownerTokens, permitFailure: true }); - - // Immediately claimable wrapped M tokens - const claimableWrappedM = await api.call({ - target: STAKED_USDAI_CONTRACT, - abi: abi.claimableBaseYield // return value is scaled up by 10^12 - }) / 10 ** 12; // scale down by 10^12 to match the decimals of the wrapped M token - - // Add claimable USDai - api.add(WRAPPED_M_CONTRACT, claimableWrappedM) - - - // Add tokens held by the queued depositor - const whitelistedTokens = await api.call({ - target: QUEUED_DEPOSITOR_CONTRACT, - abi: abi.whitelistedTokens, - }); - await sumTokens2({ - api, - owner: QUEUED_DEPOSITOR_CONTRACT, - tokens: whitelistedTokens, - permitFailure: true, - }) -} - -async function borrowed(api) { - // Get all pools engaged by the protocol - const pools = await api.call({ - target: STAKED_USDAI_CONTRACT, - abi: abi.pools, - }); - const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools }); - const tokenDecimals = await api.multiCall({ - abi: "erc20:decimals", - calls: tokens.map((token) => ({ target: token })), - }); - - // Get the decimals of each token - const decimalsMap = {}; - tokens.forEach((token, index) => { - decimalsMap[token] = tokenDecimals[index]; - }); - - // Get the borrowed value of each pool - const poolsBorrowedValue = ( - await api.multiCall({ - abi: abi.liquidityNodes, - calls: pools.map((pool) => ({ - target: pool, - params: [0, MAX_UINT_128], - })), - }) - ).map((liquidityNodes, poolIndex) => { - const token = tokens[poolIndex]; - const decimals = decimalsMap[token]; - const scalingFactor = 10 ** (18 - decimals); - - return liquidityNodes.reduce((partialSum, node) => { - const scaledValue = (+node.value - +node.available) / scalingFactor; - return partialSum + scaledValue; - }, 0); - }); - - // Add the borrowed value of each pool - api.addTokens(tokens, poolsBorrowedValue); -} - -module.exports = { - arbitrum: { - tvl, - borrowed, - }, - methodology: - "TVL is calculated by summing the value of tokens held by the protocol and outstanding immediately claimable yield.", - hallmarks: [ - [1757548800, "Deposit Caps raised to $250M"], - [1758758400, "Deposit Caps raised to $500M"] - ], -}; diff --git a/projects/usdd-io/index.js b/projects/usdd-io/index.js deleted file mode 100644 index 1e4f843003b..00000000000 --- a/projects/usdd-io/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - - -// https://docs.usdd.io/introduction/collateral-asset-contract-addresses -module.exports = { - tron: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.tron.WTRX, 'TJ1VWPvFVq7sVsN7J7dWJVZz4SLT14qRUr'], - [ADDRESSES.tron.WTRX, 'TGQKnHDQNyc3QeHJ7YxH8wggdg89UVXyvX'], - [ADDRESSES.tron.WTRX, 'TPUPPLTYLdbW4jxwD5g2T7ystxsR9HL2mt'], - [ADDRESSES.tron.USDT, 'TDUkQbjrXs6xUbxGCLknWwJHxVTdysXBhy'], - [ADDRESSES.tron.USDT, 'TSUYvQ5tdd3DijCD1uGunGLpftHuSZ12sQ'], - ] - }) - }, - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.ethereum.USDT, '0x217e42CEB2eAE9ECB788fDF0e31c806c531760A3'], // PSM-USDT-A GemJoin - [ADDRESSES.ethereum.USDC, '0x9A7E1B324060dB7342aeA08c0dc56F55CEd6F519'], // PSM-USDC-A GemJoin - ] - }) - } -} \ No newline at end of file diff --git a/projects/usdfc/index.js b/projects/usdfc/index.js deleted file mode 100644 index 3900ba87191..00000000000 --- a/projects/usdfc/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs'); - -// TroveManager holds total system collateral (deposited FIL) -const TROVE_MANAGER_ADDRESS = '0x5aB87c2398454125Dd424425e39c8909bBE16022'; - -function getTVL( - TROVE_MANAGER_ADDRESS, - { nonNativeCollateralToken = false, abis = {}, collateralToken } = {} -) { - return async api => { - const activePool = await api.call({ - target: TROVE_MANAGER_ADDRESS, - abi: abis.activePool ?? 'address:activePool', - }); - const defaultPool = await api.call({ - target: TROVE_MANAGER_ADDRESS, - abi: 'address:defaultPool', - }); - let token = nullAddress; - if (collateralToken) token = collateralToken; - else if (nonNativeCollateralToken) - token = await api.call({ - target: TROVE_MANAGER_ADDRESS, - abi: abis.collateralToken ?? 'address:collateralToken', - }); - return sumTokens2({ - api, - owners: [activePool, defaultPool], - tokens: [token], - }); - }; -} - -module.exports = { - start: '2025-03-21', - filecoin: { - tvl: getTVL(TROVE_MANAGER_ADDRESS), - }, -}; diff --git a/projects/usdfi-lending/index.js b/projects/usdfi-lending/index.js deleted file mode 100644 index 622c857d60d..00000000000 --- a/projects/usdfi-lending/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports } = require("../helper/compound"); - -module.exports = { - bsc: compoundExports('0x87363D74CD88A6220926Cf64bDEFd23ae63BE115') -}; diff --git a/projects/usdt0/index.js b/projects/usdt0/index.js deleted file mode 100644 index c48832af22c..00000000000 --- a/projects/usdt0/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const coreAssets = require('../helper/coreAssets.json'); - -const ethereumOAdapterUpgradeable = "0x6C96dE32CEa08842dcc4058c14d3aaAD7Fa41dee"; - -async function tvl(api) { - const balance = await api.call({ - abi: 'erc20:balanceOf', - target: coreAssets.ethereum.USDT, - params: [ethereumOAdapterUpgradeable], - }); - - api.add(coreAssets.ethereum.USDT, balance); -} - -module.exports = { - start: 1736351639, - ethereum: { - tvl, - }, -}; diff --git a/projects/usdx/index.js b/projects/usdx/index.js deleted file mode 100644 index c346cfb4f7c..00000000000 --- a/projects/usdx/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const usdxAddress = "0xf3527ef8dE265eAa3716FB312c12847bFBA66Cef"; -const chains = ["ethereum", "bsc", "arbitrum"]; - -chains.forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - const supply = await api.call({ abi: 'erc20:totalSupply', target: usdxAddress}) - api.addCGToken('usdx-money-usdx', supply/1e18) - }, - } -}) \ No newline at end of file diff --git a/projects/usesugarswap/index.js b/projects/usesugarswap/index.js deleted file mode 100644 index 18f86f66df8..00000000000 --- a/projects/usesugarswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ - factory: '0x0A592988aBE9017a3c0285B9aa251A4bE8683394', - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/usual/index.js b/projects/usual/index.js deleted file mode 100644 index 3a0635ea308..00000000000 --- a/projects/usual/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { sumTokensExport } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const tokens = [ - '0x136471a34f6ef19fe571effc1ca711fdb8e49f2b', // USYC - '0x437cc33344a0B27A429f795ff6B469C72698B291', // wM - '0xC139190F447e929f090Edeb554D95AbB8b18aC1C', // USDtb - ADDRESSES.ethereum.WSTETH // wstEth -] - -const owners = [ - '0xdd82875f0840AAD58a455A70B88eEd9F59ceC7c7', // treasury - '0x4Cbc25559DbBD1272EC5B64c7b5F48a2405e6470', // USUALM - '0x58073531a2809744D1bF311D30FD76B27D662abB', // USUALUSDtb - '0xc912B5684a1dF198294D8b931B3926a14d700F64', // treasury ETH0 -] - - -module.exports = { - methodology: 'TVL represents the value in RWA held by the protocol', - ethereum: { - staking: staking('0x06B964d96f5dCF7Eae9d7C559B09EDCe244d4B8E', '0xc4441c2be5d8fa8126822b9929ca0b81ea0de38e'), // USUAL - tvl: sumTokensExport({ tokens, owners })}, - doublecounted: true -} \ No newline at end of file diff --git a/projects/usury/index.js b/projects/usury/index.js deleted file mode 100644 index f16a11785e5..00000000000 --- a/projects/usury/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -module.exports = { - sonic: compoundExports2({comptroller: '0x3d9E6935D50838108802Dc36A7cf12654420d9A4', cether: '0x248df89019d089689A02c3f9b71658493710D054'}), - mantle: compoundExports2({comptroller: '0x4DC8333D19dd8CFe927A0E52782d8D2E3073f6b3', cether: '0xC3a41bF1E1F989A19cf555458Af209CBf3B8C97f'}), -} - - -module.exports.mantle.borrowed = () => ({}) -module.exports.sonic.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/uswap-me/index.js b/projects/uswap-me/index.js deleted file mode 100644 index dfec3ae19a2..00000000000 --- a/projects/uswap-me/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -// https://uswap.me/analytics/ -module.exports = { - tron: { - tvl: getUniTVL({ - factory: 'TQ4F8Gr1qRKcMva64qYweAJNAVtgfj6ZJd', - useDefaultCoreAssets: true, - }), - }, -} diff --git a/projects/utonic/index.js b/projects/utonic/index.js deleted file mode 100644 index 6a9cccd91f9..00000000000 --- a/projects/utonic/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { call } = require("../helper/chain/ton"); - -module.exports = { - timetravel: false, - ton: { - tvl: async () => { - const result = await call({ target: "EQAfF5j3JMIpZlLmACv7Ub7RH7WmiVMuV4ivcgNYHvNnqHTz", abi: "get_minter_data"}) - return { "coingecko:the-open-network": result[0]/1e9 }; - } - } -} \ No newline at end of file diff --git a/projects/utyabswap/index.js b/projects/utyabswap/index.js deleted file mode 100644 index 1f0d46403c1..00000000000 --- a/projects/utyabswap/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { getConfig } = require("../helper/cache"); -const { call } = require("../helper/chain/ton"); -const { transformDexBalances } = require("../helper/portedTokens"); -const { convertIntToAddress, } = require("../helper/chain/utils/ton-address"); -const { PromisePool } = require("@supercharge/promise-pool"); -const { sleep } = require("../helper/utils"); - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - ton: { - tvl: async () => { - const pools = await getConfig('utyabswap', "https://api.utyabswap.com/v1/pools"); - const getPoolData = async (pool) => { - const data = await call({ target: pool.address, abi: "get_assets_full", rawStack: true, }); - - data.shift().pop(); - const asset0AddressInt = data.shift().pop(); - const asset0Address = convertIntToAddress(BigInt(asset0AddressInt)).toString() - const asset0Reserve = Number(data.shift().pop()) - - data.shift().pop(); - const asset1AddressInt = data.shift().pop(); - const asset1Address = convertIntToAddress(BigInt(asset1AddressInt)).toString() - const asset1Reserve = Number(data.shift().pop()) - - await sleep(1000 * (2 * Math.random() + 2)) - - return { - token0: asset0Address, - token1: asset1Address, - token0Bal: asset0Reserve, - token1Bal: asset1Reserve, - } - } - - const { results: data, errors } = await PromisePool.withConcurrency(2).for(pools).process(getPoolData); - - if (errors && errors.length) throw errors[0]; - - return transformDexBalances({ chain: "ton", data, }); - }, - }, -}; diff --git a/projects/uwu-cash/index.js b/projects/uwu-cash/index.js deleted file mode 100644 index 9c7196ddd5c..00000000000 --- a/projects/uwu-cash/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/sumTokens') - -// https://docs.uwu.cash/developers/deployed-contracts -module.exports = { - stacks: { - tvl: sumTokensExport({ - owners: ['SP2AKWJYC7BNY18W1XXKPGP0YVEK63QJG4793Z2D4.uwu-factory-v1-1-0'], - tokens: [nullAddress] - }), - } -}; \ No newline at end of file diff --git a/projects/uwulend/index.js b/projects/uwulend/index.js deleted file mode 100644 index f17a5e783a2..00000000000 --- a/projects/uwulend/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { methodology, aaveExports } = require("../helper/aave"); -const { stakings } = require("../helper/staking"); - -const PoolV1 = "0x7c0bF1108935e7105E218BBB4f670E5942c5e237"; -const PoolV2 = "0x0a7B2A21027F92243C5e5E777aa30BB7969b0188"; - -const SLP = "0x3E04863DBa602713Bb5d0edbf7DB7C3A9A2B6027"; - -module.exports = { - methodology, - ethereum: { - ...aaveExports(undefined, '0xaC538416BA7438c773F29cF58afdc542fDcABEd4', undefined, undefined, {blacklistedTokens: ['0x8dd09822e83313adca54c75696ae80c5429697ff'] }), - pool2: stakings([PoolV1, PoolV2], [SLP]), - }, -}; diff --git a/projects/uxd/index.js b/projects/uxd/index.js deleted file mode 100644 index 371109558a1..00000000000 --- a/projects/uxd/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getConnection, decodeAccount, } = require("../helper/solana"); - -async function tvl() { - const connection = getConnection() - const mint = await connection.getAccountInfo(new PublicKey('7kbnvuGBxxj8AG9qp8Scn56muWGaRaFqxg1FsRp3PaFT')); - const mintInfo = decodeAccount('mint', mint) - return { - 'uxd-stablecoin': mintInfo.supply.toString() / (10 ** mintInfo.decimals) - }; -} - -module.exports = { - timetravel: false, - solana: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/v2swap/index.js b/projects/v2swap/index.js deleted file mode 100644 index 16d9be9b42d..00000000000 --- a/projects/v2swap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const FACTORY = "0x4811110638201b5878abe23e406DdA9De9Ad7B20" // This factory is on opBNB Mainnet (Chain Id: 204) - -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, permitFailure: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(${FACTORY}) address to find and price Liquidity Pool pairs.`, - op_bnb: { - tvl: dexTVL, - } -}; \ No newline at end of file diff --git a/projects/v3s-finance/abi.json b/projects/v3s-finance/abi.json deleted file mode 100644 index cc025528803..00000000000 --- a/projects/v3s-finance/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "poolLength": "uint256:poolLength", - "token0": "address:token0", - "token1": "address:token1", - "wantLockedTotal": "uint256:wantLockedTotal", - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, address strategy, uint256 earlyWithdrawFee, uint256 earlyWithdrawTime)" -} \ No newline at end of file diff --git a/projects/v3s-finance/index.js b/projects/v3s-finance/index.js deleted file mode 100644 index efd4ac48bd4..00000000000 --- a/projects/v3s-finance/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { stakingPricedLP } = require("../helper/staking"); -const { masterchefExports, } = require('../helper/unknownTokens'); - -const { pool2 } = require('../helper/pool2'); -const { mergeExports } = require('../helper/utils'); -const vshare = "0xdcC261c03cD2f33eBea404318Cdc1D9f8b78e1AD"; -const masterchefV3S = "0xEe38B8d70382c50cDD020785D0aC551d259Cec84"; -const boardroom = "0x3F728308A0fb99a8cE4F3F4F87E4e67a38F66746"; -const v3sVvspAddress = "0x57b975364140e4a8d1C96FAa00225b855BaB0E8E"; -const vShareCroAddress = "0xcb0704BC4E885384ac96F0ED22B9204C3adD91AD" -const vShareRewardsAddr = "0x569608516A81C0B1247310A3E0CD001046dA0663"; - - -const pool2LPs = [ - v3sVvspAddress, - vShareCroAddress, -]; - - -module.exports = mergeExports([masterchefExports({ - chain: 'cronos', - nativeToken: vshare, - masterchef: masterchefV3S, -}), { - cronos: { - pool2: pool2(vShareRewardsAddr, pool2LPs), - staking: stakingPricedLP(boardroom, vshare, "cronos", vShareCroAddress, "wrapped-cro") - }, -}]) diff --git a/projects/v60/index.js b/projects/v60/index.js deleted file mode 100644 index 49df306dcaa..00000000000 --- a/projects/v60/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const sdk = require('@defillama/sdk') - -const factories = [ - '0x0e2b8eE0A672AD9A0eA0434cC93557CDb5eF3f19', - '0x3B73a7eDc9dfE4847a20BcCfEf6Eb1c90439f5C9' -] - -module.exports = { - misrepresentedTokens: true, - prom: { - tvl: sdk.util.sumChainTvls(factories.map(factory => getUniTVL({ - useDefaultCoreAssets: true, - factory, - }))) - } -} diff --git a/projects/vacusfinance/abi.js b/projects/vacusfinance/abi.js deleted file mode 100644 index 4a9cfe72360..00000000000 --- a/projects/vacusfinance/abi.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - poolInfo2: "function poolInfo2(uint256 _pid) view returns (address lpToken, uint256 allocPoint, address strat0, uint256 amount0, uint256 share0, address strat1, uint256 amount1, uint256 share1)", - poolLength: "uint256:poolLength", -} \ No newline at end of file diff --git a/projects/vacusfinance/index.js b/projects/vacusfinance/index.js deleted file mode 100644 index 6d038ef6232..00000000000 --- a/projects/vacusfinance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - hallmarks: [ - [1665187200, "Rug Pull"] - ], - deadFrom: 1665187200, - misrepresentedTokens: true, - avax: { - tvl: () => ({}), - pool2: () => ({}), - staking: () => ({}), - } -} \ No newline at end of file diff --git a/projects/vaderai/index.js b/projects/vaderai/index.js deleted file mode 100644 index 331d27064f7..00000000000 --- a/projects/vaderai/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require('../helper/staking'); - -const vaderAddress = '0x731814e491571a2e9ee3c5b1f7f3b962ee8f4870'; - -module.exports = { - base: { - tvl: () => ({}), - staking: staking( - '0x1d6bb701eecedcd53966402064ce1c5b9eddc780', - vaderAddress - ), - }, - methodology: "$VADER coins can be staked in the protocol to earn rewards.", -}; diff --git a/projects/valantis/index.js b/projects/valantis/index.js deleted file mode 100644 index d8031990df5..00000000000 --- a/projects/valantis/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { BigNumber } = require('bignumber.js') - -const STEX_STHYPE_CONTRACT = '0x39694eFF3b02248929120c73F90347013Aec834d' -const STEX_KHYPE_CONTRACT = '0xbf747D2959F03332dbd25249dB6f00F62c6Cb526' -const STEX_LENS_CONTRACT = '0x95e88072c3fe908101a13584d7A0ff87DaDd88f3' -const STEX_LENS_RESERVES_ABI = 'function getTotalValueToken1(address stex) external view returns (uint256 totalValueToken1)'; -const WHYPE = ADDRESSES.hyperliquid.WHYPE; - -async function tvl(api) { - const sthypeStexTvlInTermsOfHype = await api.call({ - abi: STEX_LENS_RESERVES_ABI, - target: STEX_LENS_CONTRACT, - params: [STEX_STHYPE_CONTRACT] - }); - - const sthypeStexTvlInTermsOfHypeBigNumber = new BigNumber(sthypeStexTvlInTermsOfHype); - - api.add(WHYPE, sthypeStexTvlInTermsOfHypeBigNumber.toString()); - - const khypeStexTvlInTermsOfHype = await api.call({ - abi: STEX_LENS_RESERVES_ABI, - target: STEX_LENS_CONTRACT, - params: [STEX_KHYPE_CONTRACT] - }); - - const khypeStexTvlInTermsOfHypeBigNumber = new BigNumber(khypeStexTvlInTermsOfHype); - - api.add(WHYPE, khypeStexTvlInTermsOfHypeBigNumber.toString()); -} - -module.exports = { - methodology: 'Counts the total amount of HYPE in Valantis pools', - start: 1743611, - hyperliquid: { - tvl - } -} diff --git a/projects/valas/index.js b/projects/valas/index.js deleted file mode 100644 index df056f3b477..00000000000 --- a/projects/valas/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { methodology, aaveExports } = require("../helper/aave"); - -const stakingContract = "0x685D3b02b9b0F044A3C01Dbb95408FC2eB15a3b3"; -const VALAS = "0xB1EbdD56729940089Ecc3aD0BBEEB12b6842ea6F"; - -const stakingContractPool2 = "0x3eB63cff72f8687f8DE64b2f0e40a5B95302D028"; -const VALAS_BNB_pLP = "0x829F540957DFC652c4466a7F34de611E172e64E8"; - -module.exports = { - methodology, - bsc: { - ...aaveExports( - undefined, - "0x99E41A7F2Dd197187C8637D1D151Dc396261Bc14", - undefined, - undefined, { - blacklistedTokens: [ADDRESSES.bsc.BUSD, ADDRESSES.bsc.BTUSD] - } - ), - staking: staking(stakingContract, VALAS), - pool2: pool2(stakingContractPool2, VALAS_BNB_pLP), - }, -}; diff --git a/projects/valence/index.js b/projects/valence/index.js deleted file mode 100644 index 959568182b9..00000000000 --- a/projects/valence/index.js +++ /dev/null @@ -1,200 +0,0 @@ -const { queryContract, queryV1Beta1,sumTokens } = require("../helper/chain/cosmos"); -const { queryValencePrograms,extractAccountsFromProgramConfig } = require("../helper/valence"); -const { getCache, setCache } = require('../helper/cache') - - -const VALENCE_ADDRESSES = { - // contract storing all deployed Valence Programs - VALANCE_PROTOCOL_REGISTRY_ADDRESS: "neutron1d8me7p72yq95sqnq5jpk34nn4t2vdl30yff29r05250ef92mr80saqcl2f", - // addresses for pools from early version of Valance Protocol - V1_COVENANTS_POOLER_ADDRESSES: [ - // Staked indicates if the asset is staked by the pooler. - // If so, we must query the pool address for the balance to determine the value. If not staked, we can lookup the balance directly. - { - address: "neutron1ulaxj0nelxshdua6l5mdkcqxa5k3gvcc8ut9w5867ej7u80qjx9s5cq5yh", //stars - staked: true, - }, - { - address: "neutron1quwzg6ntuy2tvvdt73rr4e8zkeetu2v5mehjfykrzszlkjavupvsn98wx9", //shade - staked: true, - }, - { - address: "neutron1nqd6ge2r9ndkgkl67js35v6wln093euvvkyynr43fs4lghj7vzgsl4va57", //nolus - staked: true, - }, - { - address: "neutron1yj6m02det6qd6wdugtfytfryzcmt9z9apls0sf4ww07hqq54zexqt5xgaq", //mars - staked: false, - }, - ] -} - -// Configurations for querying value for liquidity tokens for specific DEXs -const DEX_CONFIGS = { - astroport: { - // regex to match liquidity tokens - regex: ":astroport:share", - // function to extract pool address from liquidity token address - poolAddressExtractor: (lpToken, chain) => lpToken.replace(`${chain}:factory:`,"").replace(":astroport:share",""), - // function to query value of liquidity token - // returns {amount: number, denom: string} - queryShareValue: async ({ - poolAddress, - lpBalance, - chain - }) => { - const shareValue = await queryContract({ - contract: poolAddress, - chain, - data: `{"share":{"amount":"${lpBalance}"}}`, - }); - return shareValue.map((token) => ({ - amount: token.amount, - denom: token.info.native_token.denom, - })) - } - }, - // Add more DEX configurations here as needed -}; - -/*** - * Value of tokens being held in Valence accounts - */ -async function getValenceAccountTvl(api, valenceDomain,chain) { - - let cache = await getCache('valence','accounts') - let allProgramAccounts = cache.allProgramAccounts - - if (!cache.allProgramAccounts) { - // fetch all program configs from the registry contract - const allProgramConfigs = await queryValencePrograms(VALENCE_ADDRESSES.VALANCE_PROTOCOL_REGISTRY_ADDRESS); - // extract all account addresses from the program configs - allProgramAccounts = allProgramConfigs.map((program)=>{ - return Object.values(program.program_config.accounts) - }) - await setCache('valence','accounts',{allProgramAccounts}) - } - - // filter accounts by chain - const allAccountAddressesForChain = allProgramAccounts.map((accounts)=>extractAccountsFromProgramConfig(accounts, valenceDomain, chain)).flat(); - - return sumTokens({ - api, - owners: allAccountAddressesForChain, - chain - }) -} - -/*** - * TVL for liquidity pools deployed with Valence Programs - */ -async function getLpTvl(api, chain, dexNames=[]) { - const balances = api.getBalances(); - - for (const dexName of dexNames) { - const dexConfig = DEX_CONFIGS[dexName]; - if (!dexConfig) { - console.log(`Warning: skipping unsupported DEX: ${dexName}`); - continue; - } - - const possibleLpTokens = Object.keys(balances).filter((address) => address.match(dexConfig.regex)); - - possibleLpTokens.forEach(async(lpToken)=>{ - // regex method does not guarantee an LP token is valid, so handle the error gracefully and ignore the asset in the valuation if this is the case - try { - const lpBalance = balances[lpToken]; - const poolAddress = dexConfig.poolAddressExtractor(lpToken, chain); - const shareValues = await dexConfig.queryShareValue({ - poolAddress, - lpBalance, - chain - }); - - shareValues.forEach((shareValue) => { - api.add(shareValue.denom, shareValue.amount); - }); - - } catch (e){ - console.log('Warning: Could not query LP share value for',lpToken) - } - }) - - - - } -} - -// TVL for first version of Valance Protocol -async function getV1CovenantsTvl(api) { - for (const pooler of VALENCE_ADDRESSES.V1_COVENANTS_POOLER_ADDRESSES) { - let lpBalance; - let poolAddress; - - const lpConfig = await queryContract({ - contract: pooler.address, - chain: "neutron", - data: '{"lp_config":{}}', - }); - - poolAddress = lpConfig.pool_address; - - const poolInfo = await queryContract({ - contract: poolAddress, - chain: "neutron", - data: '{"pair":{}}', - }); - - // Get LP token balance for staked pooler - if (pooler.staked) { - lpBalance = await queryContract({ - contract: poolInfo.liquidity_token, - chain: "neutron", - data: `{"balance":{"address":"${pooler.address}"}}`, - }); - - lpBalance = lpBalance.balance || 0; - } else { - const balanceData = await queryV1Beta1({ - url: `bank/v1beta1/balances/${pooler.address}`, - chain: "neutron", - }); - lpBalance = balanceData.balances.find((balance) => balance.denom === poolInfo.liquidity_token)?.amount || 0; - } - - const shareValue = await queryContract({ - contract: poolAddress, - chain: "neutron", - data: `{"share":{"amount":"${lpBalance}"}}`, - }); - - shareValue.forEach((token) => { - const denom = token.info.native_token.denom; - const amount = token.amount; - api.add(denom, amount); - }); - } -} - - - -module.exports = { - methodology: "Aggregates balances in all Valence Programs and converts LP shares to sum up total value.", - neutron: { - tvl: async (api) => { - await getV1CovenantsTvl(api); - await getValenceAccountTvl(api, "CosmosCosmwasm", "neutron"); - await getLpTvl(api,"neutron",["astroport"]); // this must be called after getValenceAccountTvl, it assumes api.balances has been populated - }, - }, - terra2: { - tvl: (api) => getValenceAccountTvl(api, "CosmosCosmwasm", "terra2"), - }, - hallmarks: [ - [1717545600, "Nolus<>Neutron liquidity lending"], - [1718064000, "Stargaze<>Neutron liquidity lending"], - [1719360000, "Shade<>Neutron liquidity lending"], - [1723507200, "Mars<>Neutron liquidity lending"], - [1743379200, "Neutron dICS deployment"] - ] -}; diff --git a/projects/valerian/index.js b/projects/valerian/index.js deleted file mode 100644 index e42686fb312..00000000000 --- a/projects/valerian/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { stakingPricedLP } = require("../helper/staking"); - -const VAL = "0xe1af4d744e2a66cd07c474bed167960be872fcd9" -const stakingContract = "0x99a2278ab93Ee6F590a87D8F37a16EE8f53F97Cc" -const arthswapValUsdcPool = "0x56Ce6643eDD621EcD904d9b6C9e88745A125AF6d" - -module.exports = { - misrepresentedTokens: true, - methodology: "TVL is calculated by getting value of staked VAL using Arthswap DEX value of VAL.", - astar: { - tvl: () => ({}), - staking: stakingPricedLP(stakingContract, VAL, "astar", arthswapValUsdcPool, "usd-coin", true, 6) - }, -} diff --git a/projects/valhalladao/index.js b/projects/valhalladao/index.js deleted file mode 100644 index 27abf22728e..00000000000 --- a/projects/valhalladao/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const valdao = "0x84506992349429dac867b2168843ffca263af6e8"; -const stakingContract = "0xfe036c9a04153e60e972c6f46a141fb2e6a6ce48"; -const treasuryContract = "0xecd81dfc5a86dd7ffbbe50b8f4ad219950700aa4"; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasuryContract, [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0x34bfdf840a57f81f8b36a683fa6124d52e104c53", true], // valdaoMimJLP - ], "avax", stakingContract, valdao, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/valkyrie/index.js b/projects/valkyrie/index.js deleted file mode 100644 index cd8c9a973a7..00000000000 --- a/projects/valkyrie/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - terra: { - tvl: () => ({}), - }, -}; -module.exports.hallmarks = [ - [1651881600, "UST depeg"], - ] - - module.exports.deadFrom = '2023-04-09' \ No newline at end of file diff --git a/projects/valleyswap/index.js b/projects/valleyswap/index.js deleted file mode 100644 index 2d58db67a49..00000000000 --- a/projects/valleyswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - oasis: { - tvl: getUniTVL({ - factory: '0xa25464822b505968eEc9A45C43765228c701d35f', - useDefaultCoreAssets: true, - blacklistedTokens: ['0x6Cb9750a92643382e020eA9a170AbB83Df05F30B', '0x94fbffe5698db6f54d6ca524dbe673a7729014be'], - }), - }, - misrepresentedTokens: true, - hallmarks: [ - [1681743600,"Remove Fake USDT"], - [1654214400, "EvoDefi bridge depeg"] - ], -}; diff --git a/projects/valorem/index.js b/projects/valorem/index.js deleted file mode 100644 index b08fe2dbcb1..00000000000 --- a/projects/valorem/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const CLEARINGHOUSE_ADDRESS = "0x402A401B1944EBb5A3030F36Aa70d6b5794190c9"; -const arbitrumOneDeployUnixTimestamp = 1693583626; - -const ZERO_ADDRESS = ADDRESSES.null; -const TOKENS_BY_CHAIN = { - ["arbitrum"]: { - ETH: ZERO_ADDRESS, - WETH: ADDRESSES.arbitrum.WETH, - USDC: ADDRESSES.arbitrum.USDC, - }, -}; - -module.exports = { - methodology: - "TVL counts all of the tokens locked in the Clearinghouse for Option/Claim positions.", - arbitrum: { - tvl: sumTokensExport({ - chain: "arbitrum", - owner: CLEARINGHOUSE_ADDRESS, - tokens: [...Object.values(TOKENS_BY_CHAIN["arbitrum"])], - }), - }, - hallmarks: [[arbitrumOneDeployUnixTimestamp, "Valorem Launch"]], -}; diff --git a/projects/valoro/index.js b/projects/valoro/index.js deleted file mode 100644 index 7956518530e..00000000000 --- a/projects/valoro/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { sumTokens } = require("../helper/chain/elrond"); -const { get } = require("../helper/http"); - -const fundsOwnerSc = - "erd1qqqqqqqqqqqqqpgqqvj2zrdfv4lsc38p8cvh4e0yd4av6njfu7zsj7ztzl"; - -async function getFunds(address) { - const fundsScs = await get(`https://api.multiversx.com/accounts/${address}/contracts`); - return fundsScs -} - -async function tvl() { - const funds = await getFunds(fundsOwnerSc); - const owners = [ - ...funds.map(fund => fund.address) - ]; - - return sumTokens({ owners }); -} - -module.exports = { - timetravel: false, - elrond: { - tvl, - }, -}; diff --git a/projects/valr-cex/index.js b/projects/valr-cex/index.js deleted file mode 100644 index 226f0521e45..00000000000 --- a/projects/valr-cex/index.js +++ /dev/null @@ -1,65 +0,0 @@ -const { cexExports } = require("../helper/cex"); - -const config = { - bitcoin: { - owners: [ - "3PUAxZ26mF8Ub1oQrc7TK7NvTe93KaNQZP", - "bc1q068k89wp2dt3v7wrp8uyscd3llvz6tytz3ve8pd4e2f6z9a5kdjqtqe505", - ], - }, - ethereum: { - owners: [ - "0x7ce3ec6845780e8f69b1a19edf8148d7cbb77a7d", - "0x556C26A8d2a27e1e50Ee7D72b1938f9D794FaAe7", - "0x05CdB1526F6e224e02919a4C018D9784Ea25eb3d", - "0x630910471EFf63C5fbD1fDFf745BE3851d341Cb8", - ], - }, - avax: { - owners: [ - "0x05CdB1526F6e224e02919a4C018D9784Ea25eb3d", - "0xb1FB90a68E5C04284B2863e3b1dbDa1aeC5E8E48", - "0xadE4a6383A3339c3Fbde1BDa1829b73CD3374C43", - "0x92a8e66c04D70290Ad8520A87e1639b6c99A0fF3", - "0x8D23DC08E5774118A5E3E226c9233E94E48c4d1f", - "0x0d1098C86b8BA34388b6fF0777F3F7227274F5cE", - "0xAae5423207e6BD963115Fd1611888eFdC3E63CB1", - "0xFFe462Bf5a47552073fC5004845cA004809EA8d0", - "0x803887E0385A90e59198F4c124343dD77d5e3c4B", - "0x61ed356539542a2795fAF530cd113241FbDf8FA2", - "0x10C3ab1264DA2e9c8b349785a45742956878456b", - ], - }, - solana: { - owners: [ - "HA9oNhHddEoPFSAEEYtGYZoXDkjky53TQ72jtpAnu81i", - "5iFZsZsBxw8AyMAHeukgy9RktwyiyBYLDM1GEvQqY37N", - "x8upN44MffTHxbdWLuR9q1U1B7eDPpHLUncessPWkCx", - "DyUJQ3JyhN7UB6PEbVoE3769Djf68aS9JWqQpxfXy3AY", - "6d6sZPUcK1DgVg6uBBYJuPsHTYV3gLvXeYkD5tSXCs2u", - "E4JTRq3L8JeURjvursNEgc8EupPWZRYitpi6EW5YGzK5", - "EHKPPJrN737Ea7wqHviwGUbzDyUq2oUUX3B2hUpgftbE", - ], - }, - tron: { - owners: [ - "TMYKWwRwUoLknttqkKbd9PNnspuMwXFBmb", - "TY2c9FtxUCmigBjxkoG6iGhbMFhXfLSPU8", - ], - }, - bsc: { - owners: [ - "0x05CdB1526F6e224e02919a4C018D9784Ea25eb3d", - "0x7348332ee364590f2292577AD42d4Fe419d085D3", - ], - }, - ripple: { - owners: [ - "r3EjD8wKrtWbsjZxaSfAoifEDWosh49Twe", - "rDseVXFK1SkWhFH65cqAxf3HmvHCF6b94t", - "rfrnxmLBiXHj38a2ZUDNzbks3y6yd3wJnV", - ], - }, -}; - -module.exports = cexExports(config); diff --git a/projects/valuedefi.js b/projects/valuedefi.js deleted file mode 100644 index 1a04ed920ad..00000000000 --- a/projects/valuedefi.js +++ /dev/null @@ -1,29 +0,0 @@ - -const { getUniTVL } = require('./helper/unknownTokens') -const sdk = require('@defillama/sdk') -const { sumTokens2 } = require('./helper/unwrapLPs') -const swapFactory = '0x1b8e12f839bd4e73a47addf76cf7f0097d74c14c' -const stableSwapFactory = '0xc6e111637440d1fe9c1ee45d5a1239771b267122' - -const abis = { - allPools: "function allPools(uint256) view returns (address)", - allPoolsLength: "uint256:allPoolsLength", - getTokenLength: "uint256:getTokenLength", - getToken: "function getToken(uint8 index) view returns (address)", -} - -const bscDexTVL = getUniTVL({ factory: swapFactory, useDefaultCoreAssets: true, }) - -async function bscStableSwapTvl(api) { - const pools = await api.fetchList({ lengthAbi: 'allPoolsLength', itemAbi: 'allPools', target: stableSwapFactory }) - const tokens = await api.fetchList({ lengthAbi: abis.getTokenLength, itemAbi: abis.getToken, targets: pools, groupedByInput: true }) - const ownerTokens = tokens.map((i, idx) => ([i, pools[idx]])) - return sumTokens2({ ownerTokens, api }) -} - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: sdk.util.sumChainTvls([bscDexTVL, bscStableSwapTvl]), - } -} diff --git a/projects/valueliquid/index.js b/projects/valueliquid/index.js deleted file mode 100644 index 72dd06ab5a7..00000000000 --- a/projects/valueliquid/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -const { v1Tvl } = require('../helper/balancer') - -module.exports = { - start: '2020-09-30', // 09/30/2020 @ 4:36am (UTC) - ethereum: { tvl: v1Tvl('0xebc44681c125d63210a33d30c55fd3d37762675b', 10961776) } -}; diff --git a/projects/vampireswap/index.js b/projects/vampireswap/index.js deleted file mode 100644 index 1c992f7b2a5..00000000000 --- a/projects/vampireswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0xdf0a0a62995ae821d7a5cf88c4112c395fc41358' -}, {staking: { fantom: ['0xa9d452E3CEA2b06d7DBE812A6C3ec81cf52334dD', '0x97058c0B5ff0E0E350e241EBc63b55906a9EADbc'] } }) \ No newline at end of file diff --git a/projects/vanilla/index.js b/projects/vanilla/index.js deleted file mode 100644 index 953792e58fe..00000000000 --- a/projects/vanilla/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); -const tokens = require('./safelist.json').map(i => i.address) - -const vanillaRouterAddress = '0x72C8B3aA6eD2fF68022691ecD21AEb1517CfAEa6' - -module.exports = { - ethereum: { tvl: sumTokensExport({ tokens, owner: vanillaRouterAddress }) }, -} diff --git a/projects/vanilla/safelist.json b/projects/vanilla/safelist.json deleted file mode 100644 index f27e4850e99..00000000000 --- a/projects/vanilla/safelist.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { "symbol": "WBTC", "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"}, - { "symbol": "UNI", "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"}, - { "symbol": "LINK", "address": "0x514910771af9ca656af840dff83e8264ecf986ca"}, - { "symbol": "CEL", "address": "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d"}, - { "symbol": "PERP", "address": "0xbc396689893d065f41bc2c6ecbee5e0085233447"}, - { "symbol": "MKR", "address": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"}, - { "symbol": "SHIB", "address": "0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce"}, - { "symbol": "TRIBE", "address": "0xc7283b66eb1eb5fb86327f08e1b5816b0720212b"}, - { "symbol": "MATIC", "address": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0"}, - { "symbol": "WOOFY", "address": "0xd0660cd418a64a1d44e9214ad8e459324d8157f1"}, - { "symbol": "GTC", "address": "0xde30da39c46104798bb5aa3fe8b9e0e1f348163f"}, - { "symbol": "AUDIO", "address": "0x18aaa7115705e8be94bffebde57af9bfc265b998"}, - { "symbol": "YFI", "address": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e"}, - { "symbol": "RPL", "address": "0xb4efd85c19999d84251304bda99e90b92300bd93"}, - { "symbol": "AAVE", "address": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"}, - { "symbol": "DPI", "address": "0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b"}, - { "symbol": "QUICK", "address": "0x6c28aef8977c9b773996d0e8376d2ee379446f2f"}, - { "symbol": "SUSHI", "address": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2"}, - { "symbol": "SNX", "address": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f"}, - { "symbol": "HOT", "address": "0x6c6ee5e31d828de241282b9606c8e98ea48526e2"}, - { "symbol": "wNXM", "address": "0x0d438f3b5175bebc262bf23753c1e53d03432bde"}, - { "symbol": "GLM", "address": "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429"}, - { "symbol": "OCEAN", "address": "0x967da4048cd07ab37855c090aaf366e4ce1b9f48"}, - { "symbol": "BNT", "address": "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c"}, - { "symbol": "COMP", "address": "0xc00e94cb662c3520282e6f5717214004a7f26888"}, - { "symbol": "1INCH", "address": "0x111111111117dc0aa78b770fa6a738034120c302"} -] diff --git a/projects/vanillaFinance/index.js b/projects/vanillaFinance/index.js deleted file mode 100644 index e1093d4d30c..00000000000 --- a/projects/vanillaFinance/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const addresses = { - bsc: { - MoneyVault: '0x994B9a6c85E89c42Ea7cC14D42afdf2eA68b72F1', - MarketMakerVault: '0xaAd5005D2EF036d0a8b0Ab5322c852e55d9236cF', - assetId: ADDRESSES.bsc.USDT, - }, -} - -async function tvl(api) { - return api.sumTokens({ owners: [addresses.bsc.MoneyVault, addresses.bsc.MarketMakerVault], tokens: [addresses.bsc.assetId] }) -} - -module.exports = { - 'bsc': { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/vanillaswap-v2/index.js b/projects/vanillaswap-v2/index.js deleted file mode 100644 index 358b4b32709..00000000000 --- a/projects/vanillaswap-v2/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('defichain_evm', '0x79Ea1b897deeF37e3e42cDB66ca35DaA799E93a3') diff --git a/projects/vanillaswap-v3/index.js b/projects/vanillaswap-v3/index.js deleted file mode 100644 index f4d2d0b1ef6..00000000000 --- a/projects/vanillaswap-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const factory = "0x9C444DD15Fb0Ac0bA8E9fbB9dA7b9015F43b4Dc1"; - -module.exports = uniV3Export({ - defichain_evm: { factory, fromBlock: 147204 }, -}) \ No newline at end of file diff --git a/projects/vanswap/index.js b/projects/vanswap/index.js deleted file mode 100644 index e1f34428677..00000000000 --- a/projects/vanswap/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require("../helper/staking"); - -const STAKING_ADDR = "0x1b7BCea38FA123236CfF7D0F944e01F501842123" -const VAN_ADDR = "0xa3cFA732c835233db3d6bf5f4A3c2D45b02Eb6B9" -const USDT_VAN_LP = "0x1e0583bc7D49b693277Cc7E0F6af1A0bdB56e9D8" - - -module.exports = { - misrepresentedTokens: true, - vision: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xF6D67482DEDE4D208F74CCD0E6592764014F546F', - }), - staking: stakingPricedLP(STAKING_ADDR, VAN_ADDR, "vision", USDT_VAN_LP, "tether") - - } -}; \ No newline at end of file diff --git a/projects/vapedao/index.js b/projects/vapedao/index.js deleted file mode 100644 index 9dba215489e..00000000000 --- a/projects/vapedao/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const {masterChefExports, standardPoolInfoAbi} = require('../helper/masterchef') - -module.exports=masterChefExports("0xe3addfe4194062bd2c8011a3e51322887236871d", "fantom", "0x6a2d140f66fbf1b910ec45c4cf17f9f21b195a77", false, -standardPoolInfoAbi); \ No newline at end of file diff --git a/projects/vapordex-v2/index.js b/projects/vapordex-v2/index.js deleted file mode 100644 index 1d7f2435302..00000000000 --- a/projects/vapordex-v2/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const factory = "0x62B672E531f8c11391019F6fba0b8B6143504169"; -module.exports = uniV3Export({ - avax: { - factory, - fromBlock: 36560289, - }, - telos: { - factory, - fromBlock: 312329030, - }, - apechain: { - factory, - fromBlock: 2671998, - }, -}); diff --git a/projects/vapordex/index.js b/projects/vapordex/index.js deleted file mode 100644 index a999bd25113..00000000000 --- a/projects/vapordex/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -const FACTORY_TELOS = "0xDef9ee39FD82ee57a1b789Bc877E2Cbd88fd5caE"; -const FACTORY_AVAX = "0xc009a670e2b02e21e7e75ae98e254f467f7ae257"; -const FACTORY_APECHAIN = "0xc009a670e2b02e21e7e75ae98e254f467f7ae257"; -module.exports = { - telos: { - tvl: getUniTVL({ - factory: FACTORY_TELOS, - useDefaultCoreAssets: true, - }), - }, - - avax: { - tvl: getUniTVL({ - factory: FACTORY_AVAX, - useDefaultCoreAssets: true, - }), - }, - - apechain: { - tvl: getUniTVL({ - factory: FACTORY_APECHAIN, - useDefaultCoreAssets: true, - }), - }, - - methodology: - "TVL comes from the DEX liquidity pools, and is pulled from the factory contract:", -}; diff --git a/projects/vaporfi/index.js b/projects/vaporfi/index.js deleted file mode 100644 index 05c7f48f6da..00000000000 --- a/projects/vaporfi/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -module.exports = { - avax: { - tvl: (async) => ({}), - }, - methodology: "Counts liquidty on the Treasury trough Treasury Contract", -}; diff --git a/projects/vaporwave.js b/projects/vaporwave.js deleted file mode 100644 index fb00a04f86a..00000000000 --- a/projects/vaporwave.js +++ /dev/null @@ -1,45 +0,0 @@ -const utils = require("./helper/utils"); -const { toUSDTBalances } = require('./helper/balances'); -let _response - -function fetchChain(chainId, staking) { - return async () => { - if (!_response) _response = utils.fetchURL('https://api.vaporwave.farm/tvl') - const response = await _response; - - let tvl = 0; - const chain = response.data[chainId]; - for (const vault in chain) { - const isVWAVE = vault.includes("vwave") - if ((isVWAVE && staking) || (!isVWAVE && !staking)) { - tvl += Number(chain[vault]); - } - } - if (tvl === 0 && !staking) { - throw new Error(`chain ${chainId} tvl is 0`) - } - - return toUSDTBalances(tvl); - } -} - -const chains = { - polygon_zkevm: 1101, - arbitrum: 42161, - aurora: 1313161554, -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - deadFrom: '2024-08-01', - methodology: - 'TVL data is pulled from the Vaporwave Finance API "https://api.vaporwave.farm/tvl".', - doublecounted: true, - ...Object.fromEntries(Object.entries(chains).map(chain => [chain[0], { - tvl: () => ({}), - staking: () => ({}), - }])) -} - - diff --git a/projects/vaquita-protocol/index.js b/projects/vaquita-protocol/index.js deleted file mode 100644 index a258edb8fa8..00000000000 --- a/projects/vaquita-protocol/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const VAQUITA_CONTRACT = '0xfA95214EA8195e9D256Bb18adF0F56b3dEc66FaE'; -const A_TOKEN_ADDRESS = '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB'; - -async function tvl(api) { - return sumTokens2({ - api, - owners: [VAQUITA_CONTRACT], - tokens: [A_TOKEN_ADDRESS], - }); -} - -module.exports = { - base: { tvl }, - methodology: 'TVL is calculated by checking the aBasUSDC balance (Aave USDC on Base) held by VaquitaPool contract', -}; diff --git a/projects/varen/index.js b/projects/varen/index.js deleted file mode 100644 index 7fe71195fe3..00000000000 --- a/projects/varen/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require('../helper/staking'); -const { pool2 } = require('../helper/pool2'); -const { getUniTVL } = require('../helper/unknownTokens') - -const stakingRewards = "0x25a25e2f0d2c211a96fa35e8c670ef6f5b3aba57" -module.exports = { - start: '2020-11-26', // 11/26/2020 @ 12:08:48am (UTC) - ethereum:{ - staking: staking(stakingRewards, "0x72377f31e30a405282b522d588aebbea202b4f23"), - pool2: pool2(stakingRewards, "0x88024deacdc2e9eda02a3051377ed635381faa54"), - tvl: getUniTVL({ - factory: '0x696708db871b77355d6c2be7290b27cf0bb9b24b', - useDefaultCoreAssets: true, - }) - } -}; diff --git a/projects/varlamore-capital/index.js b/projects/varlamore-capital/index.js deleted file mode 100644 index cfb31bfe6c7..00000000000 --- a/projects/varlamore-capital/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Varlamore Capital.', - blockchains: { - ethereum: { - siloVaultOwners: [ - '0xd8454B3787c6Aab1cf2846AF7882f8c440C3903d', - ], - }, - arbitrum: { - siloVaultOwners: [ - '0xd8454B3787c6Aab1cf2846AF7882f8c440C3903d', - ], - }, - sonic: { - siloVaultOwners: [ - '0xd8454B3787c6Aab1cf2846AF7882f8c440C3903d', - ], - }, - avax: { - siloVaultOwners: [ - '0xd8454B3787c6Aab1cf2846AF7882f8c440C3903d', - ] - } - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/vault-bridge/index.js b/projects/vault-bridge/index.js deleted file mode 100644 index a329552b284..00000000000 --- a/projects/vault-bridge/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by Vault Bridge and its partners.', - blockchains: { - ethereum: { - morpho: [ - '0xBEefb9f61CC44895d8AEc381373555a64191A9c4', - '0xc54b4E08C1Dcc199fdd35c6b5Ab589ffD3428a8d', - '0x31A5684983EeE865d943A696AAC155363bA024f9', - '0x812B2C6Ab3f4471c0E43D4BB61098a9211017427', - ], - erc4626: [ - '0x3DD459dE96F9C28e3a343b831cbDC2B93c8C4855', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/vault-tech/index.js b/projects/vault-tech/index.js deleted file mode 100644 index f699f139dac..00000000000 --- a/projects/vault-tech/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens') - -const vault = "0x7f9b09f4717072cf4dc18b95d1b09e2b30c76790" - -const staking30days = "0x72f9244fe481761fa0e403e2614d487525f67375" -const staking60days = "0xf671d40a8011e7868c0a7e4ad2908bdc41c519cb" -const staking90days = "0xcD2d59d9597e782858483f3bC78FB7A9f47Df3ae" - -module.exports = { - ethereum: { - tvl: () => 0, - staking: sumTokensExport({ owners: [staking30days, staking60days, staking90days], tokens: [vault] }), - }, - methodology: - "Calculate the TVL of Vault-Tech staking protocol by getting the amount of $VAULT staked in the 3 pools", -}; \ No newline at end of file diff --git a/projects/vaultWin/index.js b/projects/vaultWin/index.js deleted file mode 100644 index 1012b42a531..00000000000 --- a/projects/vaultWin/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const abi = { - "poolInfo": "function poolInfo(address) view returns (address token, address lendToken, uint256 roundStart, uint256 roundEnd, uint256 version, address yieldSource)" -} - -async function tvl(api) { - const lotteries = await api.call({ target: '0xE8aa1245E18185698f2af53D3ab4aC0f822120F8', abi: "address[]:getLotteries" }) - const poolInfos = await api.multiCall({ target: '0xE8aa1245E18185698f2af53D3ab4aC0f822120F8', abi: abi.poolInfo, calls: lotteries }) - const ownerTokens = poolInfos.map((data, i) => [[data.token, data.lendToken], lotteries[i]]) - return sumTokens2({ api, ownerTokens }) -} - -module.exports = { - methodology: 'Staked tokens are counted as TVL', - ftn: { tvl }, -}; diff --git a/projects/vaultka/idl.js b/projects/vaultka/idl.js deleted file mode 100644 index 3161602bfe0..00000000000 --- a/projects/vaultka/idl.js +++ /dev/null @@ -1,763 +0,0 @@ -module.exports = { - version: '0.1.0', - name: 'marginfi', - instructions: [], - accounts: [ - { - name: 'bank', - type: { - kind: 'struct', - fields: [ - { - name: 'mint', - type: 'publicKey' - }, - { - name: 'mintDecimals', - type: 'u8' - }, - { - name: 'group', - type: 'publicKey' - }, - { - name: 'ignore1', - type: { - array: [ - 'u8', - 7 - ] - } - }, - { - name: 'assetShareValue', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'liabilityShareValue', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'liquidityVault', - type: 'publicKey' - }, - { - name: 'liquidityVaultBump', - type: 'u8' - }, - { - name: 'liquidityVaultAuthorityBump', - type: 'u8' - }, - { - name: 'insuranceVault', - type: 'publicKey' - }, - { - name: 'insuranceVaultBump', - type: 'u8' - }, - { - name: 'insuranceVaultAuthorityBump', - type: 'u8' - }, - { - name: 'ignore2', - type: { - array: [ - 'u8', - 4 - ] - } - }, - { - name: 'collectedInsuranceFeesOutstanding', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'feeVault', - type: 'publicKey' - }, - { - name: 'feeVaultBump', - type: 'u8' - }, - { - name: 'feeVaultAuthorityBump', - type: 'u8' - }, - { - name: 'ignore3', - type: { - array: [ - 'u8', - 6 - ] - } - }, - { - name: 'collectedGroupFeesOutstanding', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'totalLiabilityShares', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'totalAssetShares', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'lastUpdate', - type: 'i64' - }, - { - name: 'config', - type: { - defined: 'BankConfig' - } - }, - { - name: 'emissionsFlags', - docs: [ - 'Emissions Config Flags', - '', - '- EMISSIONS_FLAG_BORROW_ACTIVE: 1', - '- EMISSIONS_FLAG_LENDING_ACTIVE: 2', - '' - ], - type: 'u64' - }, - { - name: 'emissionsRate', - docs: [ - 'Emissions APR.', - 'Number of emitted tokens (emissions_mint) per 1M tokens (bank mint) (native amount) per 1 YEAR.' - ], - type: 'u64' - }, - { - name: 'emissionsRemaining', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'emissionsMint', - type: 'publicKey' - }, - { - name: 'padding0', - type: { - array: [ - 'u128', - 28 - ] - } - }, - { - name: 'padding1', - type: { - array: [ - 'u128', - 32 - ] - } - } - ] - } - } - ], - types: [ - { - name: 'LendingAccount', - type: { - kind: 'struct', - fields: [ - { - name: 'balances', - type: { - array: [ - { - defined: 'Balance' - }, - 16 - ] - } - }, - { - name: 'padding', - type: { - array: [ - 'u64', - 8 - ] - } - } - ] - } - }, - { - name: 'Balance', - type: { - kind: 'struct', - fields: [ - { - name: 'active', - type: 'bool' - }, - { - name: 'bankPk', - type: 'publicKey' - }, - { - name: 'ignore', - type: { - array: [ - 'u8', - 7 - ] - } - }, - { - name: 'assetShares', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'liabilityShares', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'emissionsOutstanding', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'lastUpdate', - type: 'u64' - }, - { - name: 'padding', - type: { - array: [ - 'u64', - 1 - ] - } - } - ] - } - }, - { - name: 'GroupConfig', - type: { - kind: 'struct', - fields: [ - { - name: 'admin', - type: { - option: 'publicKey' - } - } - ] - } - }, - { - name: 'InterestRateConfig', - type: { - kind: 'struct', - fields: [ - { - name: 'optimalUtilizationRate', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'plateauInterestRate', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'maxInterestRate', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'insuranceFeeFixedApr', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'insuranceIrFee', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'protocolFixedFeeApr', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'protocolIrFee', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'padding', - type: { - array: [ - 'u128', - 8 - ] - } - } - ] - } - }, - { - name: 'InterestRateConfigOpt', - type: { - kind: 'struct', - fields: [ - { - name: 'optimalUtilizationRate', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'plateauInterestRate', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'maxInterestRate', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'insuranceFeeFixedApr', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'insuranceIrFee', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'protocolFixedFeeApr', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'protocolIrFee', - type: { - option: { - defined: 'WrappedI80F48' - } - } - } - ] - } - }, - { - name: 'BankConfig', - docs: [ - 'TODO: Convert weights to (u64, u64) to avoid precision loss (maybe?)' - ], - type: { - kind: 'struct', - fields: [ - { - name: 'assetWeightInit', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'assetWeightMaint', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'liabilityWeightInit', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'liabilityWeightMaint', - type: { - defined: 'WrappedI80F48' - } - }, - { - name: 'depositLimit', - type: 'u64' - }, - { - name: 'interestRateConfig', - type: { - defined: 'InterestRateConfig' - } - }, - { - name: 'operationalState', - type: { - defined: 'BankOperationalState' - } - }, - { - name: 'oracleSetup', - type: 'u8' - }, - { - name: 'oracleKeys', - type: { - array: [ - 'publicKey', - 5 - ] - } - }, - { - name: 'ignore1', - type: { - array: [ - 'u8', - 6 - ] - } - }, - { - name: 'borrowLimit', - type: 'u64' - }, - { - name: 'riskTier', - type: { - defined: 'RiskTier' - } - }, - { - name: 'padding', - type: { - array: [ - 'u8', - 55 - ] - } - } - ] - } - }, - { - name: 'WrappedI80F48', - type: { - kind: 'struct', - fields: [ - { - name: 'value', - type: 'i128' - } - ] - } - }, - { - name: 'BankConfigOpt', - type: { - kind: 'struct', - fields: [ - { - name: 'assetWeightInit', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'assetWeightMaint', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'liabilityWeightInit', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'liabilityWeightMaint', - type: { - option: { - defined: 'WrappedI80F48' - } - } - }, - { - name: 'depositLimit', - type: { - option: 'u64' - } - }, - { - name: 'borrowLimit', - type: { - option: 'u64' - } - }, - { - name: 'operationalState', - type: { - option: { - defined: 'BankOperationalState' - } - } - }, - { - name: 'oracle', - type: { - option: { - defined: 'OracleConfig' - } - } - }, - { - name: 'interestRateConfig', - type: { - option: { - defined: 'InterestRateConfigOpt' - } - } - }, - { - name: 'riskTier', - type: { - option: { - defined: 'RiskTier' - } - } - } - ] - } - }, - { - name: 'OracleConfig', - type: { - kind: 'struct', - fields: [ - { - name: 'setup', - type: { - defined: 'OracleSetup' - } - }, - { - name: 'keys', - type: { - array: [ - 'publicKey', - 5 - ] - } - } - ] - } - }, - { - name: 'BalanceIncreaseType', - type: { - kind: 'enum', - variants: [ - { - name: 'Any' - }, - { - name: 'RepayOnly' - }, - { - name: 'DepositOnly' - } - ] - } - }, - { - name: 'BalanceDecreaseType', - type: { - kind: 'enum', - variants: [ - { - name: 'Any' - }, - { - name: 'WithdrawOnly' - }, - { - name: 'BorrowOnly' - }, - { - name: 'BypassBorrowLimit' - } - ] - } - }, - { - name: 'WeightType', - type: { - kind: 'enum', - variants: [ - { - name: 'Initial' - }, - { - name: 'Maintenance' - } - ] - } - }, - { - name: 'BalanceSide', - type: { - kind: 'enum', - variants: [ - { - name: 'Assets' - }, - { - name: 'Liabilities' - } - ] - } - }, - { - name: 'RiskRequirementType', - type: { - kind: 'enum', - variants: [ - { - name: 'Initial' - }, - { - name: 'Maintenance' - } - ] - } - }, - { - name: 'BankOperationalState', - type: { - kind: 'enum', - variants: [ - { - name: 'Paused' - }, - { - name: 'Operational' - }, - { - name: 'ReduceOnly' - } - ] - } - }, - { - name: 'RiskTier', - type: { - kind: 'enum', - variants: [ - { - name: 'Collateral' - }, - { - name: 'Isolated' - } - ] - } - }, - { - name: 'BankVaultType', - type: { - kind: 'enum', - variants: [ - { - name: 'Liquidity' - }, - { - name: 'Insurance' - }, - { - name: 'Fee' - } - ] - } - }, - { - name: 'OracleSetup', - type: { - kind: 'enum', - variants: [ - { - name: 'None' - }, - { - name: 'PythEma' - }, - { - name: 'SwitchboardV2' - } - ] - } - } - ], - events: [], - errors: [] - } \ No newline at end of file diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js deleted file mode 100644 index 1427d47a353..00000000000 --- a/projects/vaultka/index.js +++ /dev/null @@ -1,224 +0,0 @@ -//import utils -const ADDRESSES = require("../helper/coreAssets.json"); -const { staking } = require("../helper/staking"); -const { getProvider, getTokenBalance, sumTokens2 } = require("../helper/solana"); -const idl = require('./idl') -const { Program } = require("@project-serum/anchor"); -// 19/12/2023 ALP Leverage Vault -// 29/11/2023 GMXV2 Leverage(Neutral) Vault -// 12/11/2023 GLP Compound Vault - -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1688342964, "VLP Leverage Vault"], - [1692164391, "GLP Leverage Vault"], - [1695274791, "GMXV2 Leverage Vault"], - [1682314791, "GLP Delta Neutral Vault"], - [1683178791, "GDAI Leverage Vault"], - [1696389409, "HLP Leverage Vault"], - [1697716800, "VKA TGE"], - [1699750000, "GLP Compound Vault"], - [1701187200, "GMXV2 Leverage (Neutral) Vault"], - [1702915200, "ALP Leverage Vault"], - [1707385004, "GLM(basket of GMs)"], - ], - - solana: { - tvl: async (api) => { - const lendingSol = "DMhoXyVNpCFeCEfEjEQfS6gzAEcPUUSXM8Xnd2UXJfiS"; - const jupSol = "jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v"; - const jitoSol = "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"; - const jupSolProgram = "6j6Fwxf7UzfaXqQA2QraWGEAYUYzjjZP3t6ChzjzkmL9"; - const jitoSolProgram = "6MAnq2z4ww8nnvfd8sec4sRMhTEdsdZXB1FLgqaYsg4d"; - const jlpUsdtStrategy = "9vuDo8ZQsmMMe3qsiFCYoxsjhHieQVMNXLsfcfpC4SrX" - - - const lendingUsdc = "DefkwTSvkHeZASCuaVJ8AxUWS6zvBCwrLFpW2FniLSWo"; //change it to token account - const lendingUsdt = "HDNrMywo5z84uBLdbcdHpgVP3bao8bw2PDiUwtM4hvHk" - const usdc = ADDRESSES.solana.USDC; - const usdt = ADDRESSES.solana.USDT; - const jlp = "27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4" - const strategyJlp = "5852AnvCSV2GDzgpRVG4ZQ5cNn7abR7pPty5FaBxHLzW" - - const provider = getProvider() - const program = new Program(idl, 'V1enDN8GY531jkFp3DWEQiRxwYYsnir8SADjHmkt4RG', provider) - const banks = await program.account.bank.all() - const tokenAccounts = banks.map(i => i.account.liquidityVault.toString()) - - return sumTokens2({ - tokenAccounts, - owner: lendingSol, - tokensAndOwners: [ - [jupSol, jupSolProgram], - [jitoSol, jitoSolProgram], - [jlp, strategyJlp], - [usdc, lendingUsdc], - [usdt, lendingUsdt], - [jlp, jlpUsdtStrategy], - ], - solOwners: [lendingSol], - }); - }, - }, - - arbitrum: { - tvl: async (api) => { - const vaults = [ - "0x0081772FD29E4838372CbcCdD020f53954f5ECDE", // VodkaVault - "0x6df0018b0449bB4468BfAE8507E13021a7aa0583", // WaterVault - ]; - const bals = await api.multiCall({ - abi: "int256:getVaultMarketValue", - calls: vaults, - permitFailure: true - }); - bals.filter((bal) => bal !== null).forEach((i) => api.add(ADDRESSES.arbitrum.USDC, i)); - - const addresses = { - wSol: "0x2bcC6D6CdBbDC0a4071e48bb3B969b06B3330c07", - whiskey: "0x6532eFCC1d617e094957247d188Ae6d54093718A", - whiskeyWater: "0xa100E02e861132C4703ae96D6868664f27Eaa431", - sake: "0x45BeC5Bb0EE87181A7Aa20402C66A6dC4A923758", - sakeWater: "0x6b367F9EB22B2E6074E9548689cddaF9224FC0Ab", - sakeV2: "0xc53A53552191BeE184557A15f114a87a757e5b6F", - sakeV3: "0x7Fe1A53c23C0a7a6c9dF6560518DDE36e1dd1184", - sakeWaterV2: "0x806e8538FC05774Ea83d9428F778E423F6492475", - vodkaV1_Water: "0xC99C6427cB0B824207606dC2745A512C6b066E7C", - VodkaV1: "0x88D7500aF99f11fF52E9f185C7aAFBdF9acabD93", - vodkaV2: "0x9198989a85E35adeC46309E06684dCA444c9cF27", - vodkaV2_Water: "0x9045ae36f963b7184861BDce205ea8B08913B48c", - gmWeth: "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", // weth/usdc.e - gmArb: "0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407", // arb/usdc.e - gmBtc: "0x47c031236e19d024b42f8AE6780E44A573170703", // btc/usdc.e - gmUsdc: "0x9C2433dFD71096C435Be9465220BB2B189375eA7", // usdc/usdc.e - gmSol: "0x09400D9DB990D5ed3f35D7be61DfAEB900Af03C9", - gmLink: "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", - VLP: "0xc5b2d9fda8a82e8dcecd5e9e6e99b78a9188eb05", - gDAI: "0xd85e038593d7a098614721eae955ec2022b9b91b", - rum: "0x739fe1BE8CbBeaeA96fEA55c4052Cd87796c0a89", - hlpStaking: "0xbE8f8AF5953869222eA8D39F1Be9d03766010B1C", - hlp: "0x4307fbDCD9Ec7AEA5a1c2958deCaa6f316952bAb", - agedVodka: "0x9566db22DC32E54234d2D0Ae7B72f44e05158239", - vodkaV2DN: "0x316142C166AdA230D0aFAD9493ef4bF053289269", - vodkaV2DN_ETH_Water: "0x8A98929750e6709Af765F976c6bddb5BfFE6C06c", - vodkaV2DN_ARB_Water: "0x175995159ca4F833794C88f7873B3e7fB12Bb1b6", - vodkaV2DN_BTC_Water: "0x4e9e41Bbf099fE0ef960017861d181a9aF6DDa07", - vokdaV2DN_SOL_Water: "0xdCAF7F0Cd114c96B58B70fAC98F3218312E6C28b", - vodkaV1A: "0x0E8A12e59C2c528333e84a12b0fA4B817A35909A", - agedVodkaV2_ETH: "0xE502474DfC23Cd11C28c379819Ea97A69aF7E10F", - agedVodkaV2_BTC: "0x83C8A6B6867A3706a99573d39dc65a6805D26770", - gin: "0x482368a8E701a913Aa53CB2ECe40F370C074fC7b", - alpStaking: "0x85146C0c5968d9640121eebd13030c99298f87b3", - alpAddresses: "0xBc76B3FD0D18C7496C0B04aeA0Fe7C3Ed0e4d9C9", - vodkaV2DN_LINK_Water: "0xFF614Dd6fC857e4daDa196d75DaC51D522a2ccf7", - glmVault: "0xB455f2ab7905785e90ED09fF542290a722b3FBb5", - klpVault: "0x9ef87C85592a6722E2A3b314AEc722365f3FbF4D", - fsKlp: "0xfd624233741f86A7fAB57A5aDd8929422395b221", - }; - - await api.sumTokens({ - tokensAndOwners: [ - [ADDRESSES.arbitrum.USDC, addresses.vodkaV1_Water], - [ADDRESSES.arbitrum.USDC_CIRCLE, addresses.vodkaV2_Water], - [ADDRESSES.arbitrum.USDC, addresses.sakeWater], - [ADDRESSES.arbitrum.USDC, addresses.sakeWaterV2], - [ADDRESSES.arbitrum.DAI, addresses.whiskeyWater], - [addresses.gDAI, addresses.whiskey], - [addresses.VLP, addresses.sake], - [addresses.VLP, addresses.sakeV2], - [ADDRESSES.arbitrum.fsGLP, addresses.VodkaV1], - [addresses.gmArb, addresses.vodkaV2], - [addresses.gmWeth, addresses.vodkaV2], - [addresses.gmBtc, addresses.vodkaV2], - [addresses.gmSol, addresses.vodkaV2], - [addresses.gmArb, addresses.vodkaV2DN], - [addresses.gmWeth, addresses.vodkaV2DN], - [addresses.gmBtc, addresses.vodkaV2DN], - [addresses.gmUsdc, addresses.vodkaV2DN], - [addresses.gmSol, addresses.vodkaV2DN], - [addresses.hlp, addresses.rum], - [ADDRESSES.arbitrum.fsGLP, addresses.agedVodka], - //new water vault - [ADDRESSES.arbitrum.WETH, addresses.vodkaV2DN_ETH_Water], - [ADDRESSES.arbitrum.ARB, addresses.vodkaV2DN_ARB_Water], - [ADDRESSES.arbitrum.WBTC, addresses.vodkaV2DN_BTC_Water], - [ADDRESSES.arbitrum.fsGLP, addresses.vodkaV1A], - [addresses.wSol, addresses.vokdaV2DN_SOL_Water], - //GmVault - [addresses.gmWeth, addresses.agedVodkaV2_ETH], - [addresses.gmBtc, addresses.agedVodkaV2_BTC], - [ADDRESSES.arbitrum.LINK, addresses.vodkaV2DN_LINK_Water], - [addresses.gmArb, addresses.glmVault], - [addresses.gmWeth, addresses.glmVault], - [addresses.gmBtc, addresses.glmVault], - [addresses.gmLink, addresses.glmVault], - ], - }); - - const contractAbis = { - stakedVlpBalance: "function getStakedVlpBalance() public view returns ( uint256)", - stakedHlpBalance: "function userTokenAmount(address user) public view returns (uint256)", - stakedAlpBalance: "function userInfo(address account) external view returns (uint256, uint256)", - alpPrice: "function getAlpPrice() external view returns (uint256)", // - klpPrice: "function getKlpPrice(bool) external view returns (uint256)", - balanceOf: "function balanceOf(address) external view returns (uint256)", - }; - - const StakedVLPBal = await api.call({ - abi: contractAbis.stakedVlpBalance, - target: addresses.sake, - }); - const StakedVLPBalV2 = await api.call({ - abi: contractAbis.stakedVlpBalance, - target: addresses.sakeV2, - }); - - const StakedVLPBalV3 = await api.call({ - abi: contractAbis.stakedVlpBalance, - target: addresses.sakeV3, - }); - - const StakedHLPBal = await api.call({ - abi: contractAbis.stakedHlpBalance, - target: addresses.hlpStaking, - params: addresses.rum, - }); - - const stakedAlpBal = await api.call({ - abi: contractAbis.stakedAlpBalance, - target: addresses.alpStaking, - params: addresses.gin, - }); - - const alpPrice = await api.call({ - abi: contractAbis.alpPrice, - target: addresses.gin, - }); - - const klpPrice = await api.call({ - abi: contractAbis.klpPrice, - target: addresses.klpVault, - params: true, - }); - - const klpBalance = await api.call({ - abi: contractAbis.balanceOf, - target: addresses.fsKlp, - params: addresses.klpVault, - }); - - const alpValue = ((stakedAlpBal[0] * alpPrice) / 1e18 / 1e8) * 1e6; - - const klpValue = (klpPrice * klpBalance * 1e6) / 1e36; - - api.add(addresses.VLP, StakedVLPBal); - api.add(addresses.VLP, StakedVLPBalV2); - api.add(addresses.VLP, StakedVLPBalV3); - api.add(addresses.hlp, StakedHLPBal); - api.add(ADDRESSES.arbitrum.USDC, alpValue); - api.add(ADDRESSES.arbitrum.USDC, klpValue); - }, - staking: staking("0xA6f217d92A1F23C0454792cb7Bf81c74C8416550", "0xAFccb724e3aec1657fC9514E3e53A0E71e80622D"), - }, -}; diff --git a/projects/vaultlayer/index.js b/projects/vaultlayer/index.js deleted file mode 100644 index da2c4465c36..00000000000 --- a/projects/vaultlayer/index.js +++ /dev/null @@ -1,24 +0,0 @@ -// projects/vaultlayer/index.js - -const { tvlCoreStaking, tvlBitcoinStaking } = require("./staking"); -const { borrowed } = require("./lending"); - -module.exports = { - methodology: - "TVL = BTC & CORE staking via vltCORE on CoreDAO. Borrowed = Bitcoin-backed loans in P2P Lending contracts across supported chains.", - - start: 1749621314, // 2025-06-11 - - bitcoin: { tvl: tvlBitcoinStaking }, - core: { - tvl: tvlCoreStaking, - borrowed - }, - ethereum: { borrowed }, - arbitrum: { borrowed }, - bsc: { borrowed }, - avax: { borrowed }, - base: { borrowed }, - optimism: { borrowed }, - polygon: { borrowed }, -}; diff --git a/projects/vaultlayer/lending.js b/projects/vaultlayer/lending.js deleted file mode 100644 index 5e2da8871f5..00000000000 --- a/projects/vaultlayer/lending.js +++ /dev/null @@ -1,85 +0,0 @@ -// projects/vaultlayer/lending.js -const ADDRESSES = require("../helper/coreAssets.json"); - -// VaultLayer's P2P Lending Markets -const abi = { - getActiveLoans: "function getActiveLoans() view returns (uint256[])", - loans: "function loans(uint256) view returns (address borrower, address lender, address nftAddress, uint256 tokenId, uint256 loanAmount, uint256 maxInterestRate, uint256 currentInterestRate, uint256 duration, uint256 startTime, uint8 loanType, uint8 status, address principalToken, uint256 listingTime)", -}; - -// Markets deployed per chain -const MARKETS = [ - { chain: "core", address: "0x485BDcF3134D56a5743Bbfe8614D6e8453a87B99" }, - { chain: "arbitrum", address: "0x12500049BDC5CD660B806697D7e82eea41c433eC" }, - { chain: "bsc", address: "0xea252DA102748C84152260615D7E76958FE09597" }, - { chain: "avax", address: "0xBb7A6Ddb6ED2089Cc2AB9A67F31c08E702F444b0" }, - { chain: "base", address: "0xBb7A6Ddb6ED2089Cc2AB9A67F31c08E702F444b0" }, - { chain: "optimism", address: "0xBb7A6Ddb6ED2089Cc2AB9A67F31c08E702F444b0" }, - { chain: "ethereum", address: "0x0Cf14D297D2c17B66c7158A1A17C82a3e8Ad259F" }, - { chain: "polygon", address: "0xA5E2Bc2BbB8F72de7a899730EAE35dC710AEee35" }, -]; - -// Principal token per chain -const PRINCIPAL_TOKENS = { - core: "0x3093304eCE0F35969B580CbD155a1357829870f2", // vltCORE - ethereum: ADDRESSES.ethereum.USDC, // USDC - arbitrum: ADDRESSES.arbitrum.USDC_CIRCLE, // USDC - avax: ADDRESSES.avax.USDC, // USDC on Avalanche - base: ADDRESSES.base.USDC, // USDC on Base - bsc: ADDRESSES.bsc.USDC, // USDC on BSC - optimism: ADDRESSES.optimism.USDC_CIRCLE, // USDC on Optimism - polygon: ADDRESSES.polygon.USDC_CIRCLE, // USDC on Polygon -}; - -// vltCore contract address for convertToAssets -const VAULTER_CORE = PRINCIPAL_TOKENS.core; -const vltCoreAbi = { - convertToAssets: "function convertToAssets(uint256) view returns (uint256)", -}; - -async function borrowed(api) { - // 1) Figure out which market _this_ chain uses - const market = MARKETS.find((m) => m.chain === api.chain); - if (!market) { - // nothing to do on unsupported chains - return api.getBalances(); - } - - const contract = market.address; - const token = PRINCIPAL_TOKENS[api.chain]; - - // 2) Sum all active loans - const loanIdsRaw = await api.call({ - abi: abi.getActiveLoans, - target: contract, - }); - const loanIds = Array.isArray(loanIdsRaw) ? loanIdsRaw : []; - - let sumLoans = BigInt(0); - for (const id of loanIds) { - const { loanAmount, status } = await api.call({ - abi: abi.loans, - target: contract, - params: [id], - }); - // 3) Only sum loans that are active (status 1) - if (status == 1) { - // Add to the total sum of loans - sumLoans += BigInt(loanAmount); - } - } - - // 4) Convert vltCORE shares to actual CORE assets on CoreDAO - if (api.chain === 'core') { - const coreWei = await api.call({ abi: vltCoreAbi.convertToAssets, target: VAULTER_CORE, params: [sumLoans.toString()] }); - // Add as CORE - api.addGasToken(coreWei); - } else { - // Add other ERC-20 principal tokens directly - api.add(token, sumLoans.toString()) - } - - return api.getBalances(); -} - -module.exports = { borrowed }; \ No newline at end of file diff --git a/projects/vaultlayer/staking.js b/projects/vaultlayer/staking.js deleted file mode 100644 index 6d041e363d1..00000000000 --- a/projects/vaultlayer/staking.js +++ /dev/null @@ -1,56 +0,0 @@ -const axios = require('axios'); -const { sumTokens } = require("../helper/chain/bitcoin"); -const sdk = require('@defillama/sdk') - -const VAULTER_CORE = "0x3093304eCE0F35969B580CbD155a1357829870f2"; -const abi = { - roundTag: "function roundTag() view returns (uint256)", - totalCore: "function totalAssets() view returns (uint256)", - maxAllowedDelegators: 'function maxAllowedDelegators() view returns (uint256)', - allowedDelegators: 'function allowedDelegators(uint256) view returns (address)', -}; - -const CORE_API_LIVENET_URI = 'https://stake.coredao.org'; - - -async function tvlCoreStaking(api) { - // total CORE staked - const coreWei = await api.call({ abi: abi.totalCore, target: VAULTER_CORE }); - - api.addGasToken(coreWei); - - return api.getBalances(); -} - - -async function tvlBitcoinStaking() { - const api = new sdk.ChainApi({ chain: 'core' }); - - // Fetch max allowed delegators - const totalDelegators = await api.call({ abi: abi.maxAllowedDelegators, target: VAULTER_CORE }); - - // Gather on-chain delegator addresses - const dualDelegators = []; - for (let i = 0; i < Number(totalDelegators); i++) { - const del = await api.call({ abi: abi.allowedDelegators, target: VAULTER_CORE, params: [i] }); - dualDelegators.push(del); - } - - // Fetch list of redeeem addresses for Staked Bitcion on CoreDao - let btcDelegations = []; - for (const address of dualDelegators) { - const { data } = await axios.post( - `${CORE_API_LIVENET_URI}/api/staking/search_mystaking_btc_delegator`, - { pageNum: '1', pageSize: '100', addressHash: address } - ); - const records = data?.data?.records || []; - - for (const rec of records) { - if (rec.redeemBtcAddress) btcDelegations.push(rec.redeemBtcAddress); - } - } - - return sumTokens({owners: btcDelegations}) -} - -module.exports = { tvlCoreStaking, tvlBitcoinStaking }; diff --git a/projects/vaulty/index.js b/projects/vaulty/index.js deleted file mode 100644 index d9322621af5..00000000000 --- a/projects/vaulty/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); - -const vlty = "0x38A5cbe2FB53d1d407Dd5A22C4362daF48EB8526" -const stakingContract = "0x52168c7E798b577DB2753848f528Dc04db26c8ad" - -module.exports = { - deadFrom: '2025-01-01', - misrepresentedTokens: true, - methodology: 'TVL counts the tokens deposited to all vaults', - bsc: { - staking: staking(stakingContract, vlty), - tvl: () => ({}), - } -}; \ No newline at end of file diff --git a/projects/vbill/index.js b/projects/vbill/index.js deleted file mode 100644 index cb360334b98..00000000000 --- a/projects/vbill/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getTokenSupplies } = require('../helper/solana'); - -const CONFIG = { - ethereum: ['0x2255718832bC9fD3bE1CaF75084F4803DA14FF01'], // VBILL - bsc: ['0x14d72634328C4D03bBA184A48081Df65F1911279'], // VBILL - avax: ['0x7F4546eF315Efc65336187Fe3765ea779Ac90183'], // VBILL -} - -const tvl = async (api) => { - const tokens = CONFIG[api.chain] - const supplies = await api.multiCall({ calls: tokens, abi: 'erc20:totalSupply' }) - api.add(tokens, supplies) -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl } -}) - -module.exports.solana = { - tvl: async (api) => { - const mints = ['34mJztT9am2jybSukvjNqRjgJBZqHJsHnivArx1P4xy1'] - const res = await getTokenSupplies(mints, api.chain) - const supply = res[mints[0]] - api.add(mints[0], supply) - } -} \ No newline at end of file diff --git a/projects/vbrb/index.js b/projects/vbrb/index.js deleted file mode 100644 index 7b42f50fcbc..00000000000 --- a/projects/vbrb/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const {masterChefExports, standardPoolInfoAbi} = require('../helper/masterchef') -module.exports=masterChefExports("0x3b646B690d75628C49489A2A453E168A343d0Bb0", "fantom", "0xC92767054275c760490DC2ceA4d0511D670fA61C", false, - standardPoolInfoAbi -) \ No newline at end of file diff --git a/projects/veDelegate/index.js b/projects/veDelegate/index.js deleted file mode 100644 index 7c6f95e41e8..00000000000 --- a/projects/veDelegate/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { gql } = require("graphql-request"); -const { request } = require("../helper/utils/graphql"); - -const GRAPHQL_ENDPOINT = 'https://graph.vet/subgraphs/name/vebetter/dao' -const B3TR_ADDRESS = '0x5ef79995fe8a89e0812330e4378eb2660cede699' - -const tvlQuery = gql` -query TVL { - rounds( - orderBy: number - orderDirection: desc - where: {voteStart_gt: "0"} - first: 1 - ) { - number - veDelegateStatistic { - b3trExact - vot3Exact - } - } -} -`; - -module.exports = { - timetravel: false, - methodology: 'Sum of all B3TR deposited to veDelegate.vet', - vechain: { - tvl: async (api) => { - - // Get TVL from GraphQL subgraph - try { - const graphData = await request(GRAPHQL_ENDPOINT, tvlQuery); - if (graphData && graphData.rounds && graphData.rounds.length > 0) { - const latestRound = graphData.rounds[0]; - if (latestRound.veDelegateStatistic) { - const { b3trExact, vot3Exact } = latestRound.veDelegateStatistic; - - // raw b3tr - api.add(B3TR_ADDRESS, b3trExact); - - // b3tr that was wrapped with vot3 - api.add(B3TR_ADDRESS, vot3Exact); - } - } - } catch (error) { - console.error('Error fetching GraphQL data:', error); - } - } - } -}; \ No newline at end of file diff --git a/projects/veRocket/index.js b/projects/veRocket/index.js deleted file mode 100644 index 562ec6be29b..00000000000 --- a/projects/veRocket/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'vechain': '0xbdc2EDaeA65B51053FFcE8Bc0721753c7895e12f' -}) \ No newline at end of file diff --git a/projects/veax/index.js b/projects/veax/index.js deleted file mode 100644 index 35b9a9c6e3c..00000000000 --- a/projects/veax/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens, call, } = require('../helper/chain/near') - -const tvl = async (api) => { - const contract = 'veax.near' - const tokens = await call(contract, 'get_verified_tokens') - return sumTokens({ owners: [contract], tokens: tokens.filter(i => i !== 'aurora')}) -} - -module.exports = { - timetravel: false, - near: { - tvl, - } -} \ No newline at end of file diff --git a/projects/vectis/constant.js b/projects/vectis/constant.js deleted file mode 100644 index bdefdf6975b..00000000000 --- a/projects/vectis/constant.js +++ /dev/null @@ -1,11 +0,0 @@ -const JUP_PERP_PROGRAM_ID = "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu"; - -const JLP_MINT = "27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4"; - -const BASE_URL = "https://api.vectis.finance"; - -module.exports = { - JUP_PERP_PROGRAM_ID, - JLP_MINT, - BASE_URL, -}; diff --git a/projects/vectis/helpers.js b/projects/vectis/helpers.js deleted file mode 100644 index 3809e45f905..00000000000 --- a/projects/vectis/helpers.js +++ /dev/null @@ -1,151 +0,0 @@ -const { PublicKey } = require("@solana/web3.js"); -const { getMultipleAccounts } = require('../helper/solana') -const axios = require("axios"); -const { BASE_URL } = require("./constant"); - -function deserializeUserPositions(accountInfo) { - if (!accountInfo) { - throw new Error('User account not found'); - } - - const buffer = accountInfo.data; - - // Deserialize spot positions - const spotPositions = []; - let offset = 104; // Anchor discriminator (8) + Skip authority(32) + delegate(32) + name(32) - - for (let i = 0; i < 8; i++) { - const spotPosition = { - scaled_balance: buffer.readBigUInt64LE(offset), - market_index: buffer.readUInt16LE(offset + 32), - balance_type: buffer.readUInt8(offset + 34), - }; - - // Only push non-empty positions - if (spotPosition.scaled_balance > 0n) { - spotPositions.push(spotPosition); - } - offset += 40; // Size of SpotPosition struct - } - - // Deserialize perp positions - const perpPositions = []; - for (let i = 0; i < 8; i++) { - const lastCumulativeFundingRate = buffer.readBigInt64LE(offset); - const baseAssetAmount = buffer.readBigInt64LE(offset + 8); - const quoteAssetAmount = buffer.readBigInt64LE(offset + 16); - - // Skip empty positions - if (baseAssetAmount === 0n && quoteAssetAmount === 0n) { - offset += 96; - continue; - } - - const perpPosition = { - last_cumulative_funding_rate: lastCumulativeFundingRate, - base_asset_amount: baseAssetAmount, - quote_asset_amount: quoteAssetAmount, - market_index: buffer.readUInt16LE(offset + 92) - }; - - perpPositions.push(perpPosition); - offset += 96; // Size of PerpPosition struct - } - - return { - spotPositions, - perpPositions - }; -} - - -function readPublicKeyFromBuffer(buffer, offset) { - if (!buffer || buffer.length < offset + 32) { - throw new Error('Buffer is too small to contain a public key at the specified offset'); - } - const publicKeyBytes = buffer.slice(offset, offset + 32); - return new PublicKey(publicKeyBytes); -} - - -async function fetchVaultUserAddressesWithOffset(data, offset) { - const vaultUserAddresses = []; - const otherDataArray = []; - - const validData = data.filter(item => { - try { - new PublicKey(item.address); // This will throw if the address is invalid - return true; - } catch (error) { - return false; - } - }); - - const accounts = await getMultipleAccounts(validData.map(item => new PublicKey(item.address))); - - accounts.forEach((account, index) => { - const item = validData[index]; - try { - //custom vault with different storage layout - if (item.programId === "EDnxACbdY1GeXnadh5gRuCJnivP7oQSAHGGAHCma4VzG") { - const userPublicKey = readPublicKeyFromBuffer(account.data, 200); - vaultUserAddresses.push(userPublicKey); - } - const userPublicKey = readPublicKeyFromBuffer(account.data, offset); - if (item.programId === "vAuLTsyrvSfZRuRB3XgvkPwNGgYSs9YRYymVebLKoxR") { - vaultUserAddresses.push(userPublicKey); - } else - { - otherDataArray.push({ - programId: item.programId, - address: item.address, - }); - } - } catch (error) { - console.error(`Error processing address ${item.address}:`, error); - } - }); - - return { vaultUserAddresses, otherDataArray }; -} - -async function fetchVaultAddresses() { - try { - const response = await axios.get(`${BASE_URL}/strategy/fetchAllVaultAddresses`); - - if (response.status !== 200) { - throw new Error(`HTTP error! status: ${response.status}`); - } - - return response.data.data; - } catch (error) { - console.error('Error fetching vault addresses:', error); - throw error; - } -} - -async function fetchPositionAddresses() { - try { - const response = await axios.get(`${BASE_URL}/voltr/position-addresses`); - - if (response.status !== 200) { - throw new Error(`HTTP error! status: ${response.status}`); - } - - return response.data.data; - } catch (error) { - console.error('Error fetching position addresses:', error); - throw error; - } -} - - - -module.exports = { - readPublicKeyFromBuffer, - deserializeUserPositions, - fetchVaultUserAddressesWithOffset, - fetchPositionAddresses, - fetchVaultAddresses -}; - diff --git a/projects/vectis/index.js b/projects/vectis/index.js deleted file mode 100644 index 83a7a251ddf..00000000000 --- a/projects/vectis/index.js +++ /dev/null @@ -1,148 +0,0 @@ -const { getTokenMintFromMarketIndex, processSpotPosition, processPerpPosition, getPerpTokenMintFromMarketIndex, getVaultPublicKey, DRIFT_VAULT_PROGRAM_ID, VOLTR_PROGRAM_ID } = require("./spotMarkets"); -const { deserializeUserPositions, fetchVaultUserAddressesWithOffset, fetchVaultAddresses, fetchPositionAddresses} = require("./helpers"); -const { getPerpMarketFundingRates } = require("./spotMarkets"); -const { getMultipleAccounts, getProvider, getAssociatedTokenAddress, sumTokens2} = require('../helper/solana'); -const { Program } = require("@coral-xyz/anchor"); -const { Program : ProgramSerum } = require("@project-serum/anchor"); -const voltrIdl = require("./voltr-idl"); -const { PublicKey } = require("@solana/web3.js"); -const { JLP_MINT, JUP_PERP_PROGRAM_ID } = require("./constant"); -const ADDRESSES = require('../helper/coreAssets.json') -const { post } = require('../helper/http'); - -module.exports = { - timetravel: false, - doublecounted: true, - methodology: "Calculate sum of spot positions in vaults with unrealized profit and loss", - solana: { - tvl, - }, -}; -/** - * Vault Equity Calculation Formula: - * VaultEquity = NetSpotValue + UnrealizedPnL - * - * Where: - * 1. NetSpotValue = Σ(spotPosition.scaledBalance * spotMarketPrice * direction) - * - spotPosition.scaledBalance: The size of the spot position - * - spotMarketPrice: Current market price of the asset - * - direction: 1 for deposits (longs), -1 for borrows (shorts) - * - * 2. UnrealizedPnL = Σ(perpPosition.baseAssetAmount * oraclePrice + perpPosition.quoteAssetAmount + fundingPnL) - * For each perpetual position: - * - baseAssetAmount * oraclePrice: Current value of the base asset position (e.g., BTC, ETH, SOL) - * - quoteAssetAmount: Amount of quote currency (USDC) in the position - * - fundingPnL: (market.amm.cumulativeFundingRate - position.lastCumulativeFundingRate) * position.baseAssetAmount / FUNDING_RATE_PRECISION - * - */ -async function tvl(api) { - - const vaultAddresses = await fetchVaultAddresses(); - const driftVaultAddresses = vaultAddresses.filter(vault => vault.programId === DRIFT_VAULT_PROGRAM_ID.toBase58()); - const voltrVaultAddresses = vaultAddresses.filter(vault => vault.programId === VOLTR_PROGRAM_ID.toBase58()); - - const { vaultUserAddresses, } = await fetchVaultUserAddressesWithOffset(driftVaultAddresses, 168); - - // Get all vault accounts first - const accounts = await getMultipleAccounts(vaultUserAddresses) - const deserializedData = accounts.filter((accountInfo) => !!accountInfo).map(deserializeUserPositions) - - // Collect unique market indices upfront - const allSpotIndices = new Set() - const allPerpIndices = new Set() - - deserializedData.forEach(({ spotPositions, perpPositions }) => { - spotPositions?.forEach(pos => allSpotIndices.add(pos.market_index)) - perpPositions?.forEach(pos => allPerpIndices.add(pos.market_index)) - }) - - // Batch fetch - const allKeys = [ - ...[...allSpotIndices].map(index => getVaultPublicKey('spot_market', index)), - ...[...allPerpIndices].map(index => getVaultPublicKey('perp_market', index)), - ] - - const allAccounts = await getMultipleAccounts(allKeys) - - // Create lookup maps - const spotAccountMap = {} - const perpAccountMap = {} - - let offset = 0 - ;[...allSpotIndices].forEach((index, i) => { - spotAccountMap[index] = allAccounts[i] - offset = i + 1 - }) - ;[...allPerpIndices].forEach((index, i) => { - perpAccountMap[index] = allAccounts[i + offset] - }) - - // Process positions using the cached account data - for (const { spotPositions, perpPositions } of deserializedData) { - if (spotPositions?.length) { - spotPositions.forEach(position => { - const tokenMint = getTokenMintFromMarketIndex(position.market_index) - const adjustedBalance = processSpotPosition(position, spotAccountMap[position.market_index]) - api.add(tokenMint, adjustedBalance) - }) - } - - if (perpPositions?.length) { - perpPositions.map(position => { - const baseTokenMint = getPerpTokenMintFromMarketIndex(position.market_index) - const { baseBalance, quoteBalance } = processPerpPosition(position) - api.add(baseTokenMint, baseBalance) - - const quoteTokenMint = getTokenMintFromMarketIndex(0) - api.add(quoteTokenMint, quoteBalance) - - const { cumulativeFundingRateLong, cumulativeFundingRateShort } = getPerpMarketFundingRates(perpAccountMap[position.market_index]) - const currentCumulativeFundingRate = position.base_asset_amount > 0n ? cumulativeFundingRateLong : cumulativeFundingRateShort - const difference = (currentCumulativeFundingRate - BigInt(position.last_cumulative_funding_rate)) / BigInt(10 ** 6) - const fundingRatePnl = (difference * (position.base_asset_amount) / BigInt(10 ** 6)) - api.add(quoteTokenMint, fundingRatePnl) - }) - } - } - - // Voltr vaults - const provider = getProvider(); - const voltrProgram = new Program(voltrIdl, provider); - const voltrVaults = await voltrProgram.account.vault.fetchMultiple(voltrVaultAddresses.map(vault => new PublicKey(vault.address))); - - voltrVaults.forEach(vault => { - const mint = vault.asset.mint.toBase58(); - const balance = vault.asset.totalValue; - api.add(mint, balance) - }) - - // HyperLoop Prime A - const positionAddresses = await fetchPositionAddresses(); - - const idl = await ProgramSerum.fetchIdl(JUP_PERP_PROGRAM_ID, provider); - const program = new ProgramSerum(idl, JUP_PERP_PROGRAM_ID, provider); - const jupiterAccounts = await program.account["borrowPosition"].fetchMultiple( - positionAddresses.jupiter - ); - for (const account of jupiterAccounts) { - api.add(JLP_MINT, account.lockedCollateral); - const BORROW_SIZE_PRECISION = 1000; - api.add(ADDRESSES.solana.USDC, -account.borrowSize / BORROW_SIZE_PRECISION); - } - - const tokenAccounts = positionAddresses.solana.map((address) => - getAssociatedTokenAddress(ADDRESSES.solana.USDC, address) - ); - await sumTokens2({ tokenAccounts, api }); - - - for (const address of positionAddresses.hyperliquid) { - let hyperliquidData = await post("https://api.hyperliquid.xyz/info", { - type: "clearinghouseState", - user: address, - }); - hyperliquidData = parseInt(hyperliquidData.marginSummary.accountValue); - api.addCGToken("usd-coin", hyperliquidData); - } -} - diff --git a/projects/vectis/spotMarkets.js b/projects/vectis/spotMarkets.js deleted file mode 100644 index 80eaba6ac27..00000000000 --- a/projects/vectis/spotMarkets.js +++ /dev/null @@ -1,202 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const anchor = require('@coral-xyz/anchor'); -const { PublicKey } = require("@solana/web3.js"); -const DRIFT_PROGRAM_ID = new PublicKey('dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH') -const DRIFT_VAULT_PROGRAM_ID = new PublicKey('vAuLTsyrvSfZRuRB3XgvkPwNGgYSs9YRYymVebLKoxR') -const CUSTOM_PROGRAM_ID = new PublicKey('EDnxACbdY1GeXnadh5gRuCJnivP7oQSAHGGAHCma4VzG') -const VOLTR_PROGRAM_ID = new PublicKey('vVoLTRjQmtFpiYoegx285Ze4gsLJ8ZxgFKVcuvmG1a8') - -const SPOT_MARKETS = { - 0: { - name: 'USDC', - mint: ADDRESSES.solana.USDC, - decimals: 6 - }, - 1: { - name: 'SOL', - mint: ADDRESSES.solana.SOL, - decimals: 9 - }, - 6: { - name: 'jitoSOL', - mint: 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn', - decimals: 9 - }, - 16:{ - name:'INF', - mint:'5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm', - decimals: 9 - }, - 17:{ - name:'dSOL', - mint:'Dso1bDeDjCQxTrWHqUUi63oBvV7Mdm6WaobLbQ7gnPQ', - decimals: 9 - }, - 19: { - name: 'JLP', - mint: '27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4', - decimals: 6 - }, - 22: { - name: 'PYUSD', - mint: '2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo', - decimals: 6 - }, - 28: { - name: 'USDS', - mint: 'USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA', - decimals: 6 - } -}; - -const PERP_MARKETS = { - 0: { - name: 'SOL-PERP', - mint: ADDRESSES.solana.SOL, - baseDecimals: 9, - quoteDecimals: 6 - }, - 1: { - name: 'BTC-PERP', - mint: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh", - baseDecimals: 8, - quoteDecimals: 6 - }, - 2: { - name: 'ETH-PERP', - mint: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", - baseDecimals: 8, - quoteDecimals: 6 - }, -}; - -function getTokenMintFromMarketIndex(marketIndex) { - if (!SPOT_MARKETS[marketIndex]) { - throw new Error(`Market index ${marketIndex} not found`); - } - return SPOT_MARKETS[marketIndex].mint; -} - -function getPerpTokenMintFromMarketIndex(marketIndex) { - if (!PERP_MARKETS[marketIndex]) { - throw new Error(`Perp market index ${marketIndex} not found`); - } - return PERP_MARKETS[marketIndex].mint; -} - -function getDecimalsByMarketIndex(marketIndex, isPerp = false) { - if (isPerp) { - if (!PERP_MARKETS[marketIndex]) { - throw new Error(`Perp market index ${marketIndex} not found`); - } - return PERP_MARKETS[marketIndex].baseDecimals; - } - - if (!SPOT_MARKETS[marketIndex]) { - throw new Error(`Spot market index ${marketIndex} not found`); - } - return SPOT_MARKETS[marketIndex].decimals; -} - -function processSpotPosition(position, spotMarketAccountInfo) { - const decimals = getDecimalsByMarketIndex(position.market_index); - const decimalAdjustment = 9 - decimals; - let balance = position.scaled_balance; - - // Apply decimal adjustment - if (decimalAdjustment > 0) { - balance /= BigInt(10 ** decimalAdjustment); - } - - // For borrowed positions (balance_type === 1), apply interest rate - if (position.balance_type === 1) { - const cumulativeBorrowInterest = getSpotMarketCumulativeBorrowInterest(spotMarketAccountInfo); - // Apply interest rate to the balance - balance = (balance * cumulativeBorrowInterest) / BigInt(10 ** 10); - return -balance; // Return negative for borrows - } - - const cumulativeDepositInterest = getSpotMarketCumulativeDepositInterest(spotMarketAccountInfo); - - return balance * cumulativeDepositInterest / BigInt(10 ** 10); // Return positive for deposits -} - -function getSpotMarketCumulativeBorrowInterest(accountInfo) { - if (!accountInfo) { - throw new Error(`No account info found for market`); - } - - const CUMULATIVE_BORROW_INTEREST_OFFSET = 8 + 48 + 32 + 256 + (16 * 8) + 8; - - const lower64Bits = accountInfo.data.readBigInt64LE(CUMULATIVE_BORROW_INTEREST_OFFSET); - const upper64Bits = accountInfo.data.readBigInt64LE(CUMULATIVE_BORROW_INTEREST_OFFSET + 8); - - return (upper64Bits << 64n) + lower64Bits; - } - - -function getSpotMarketCumulativeDepositInterest(accountInfo) { - if (!accountInfo) { - throw new Error(`No account info found for market`); - } - - const CUMULATIVE_DEPOSIT_INTEREST_OFFSET = 8 + 48 + 32 + 256 + (16 * 8) + 8 - 16; // 16 bytes before the borrow interest - - const lower64Bits = accountInfo.data.readBigInt64LE(CUMULATIVE_DEPOSIT_INTEREST_OFFSET); - const upper64Bits = accountInfo.data.readBigInt64LE(CUMULATIVE_DEPOSIT_INTEREST_OFFSET + 8); - - return (upper64Bits << 64n) + lower64Bits; - } - - -function processPerpPosition(position) { - - - let baseBalance = position.market_index === 0 ? position.base_asset_amount : position.base_asset_amount / BigInt(10); - - let quoteBalance = position.quote_asset_amount; - - return { baseBalance, quoteBalance }; -} - - -function getPerpMarketFundingRates(accountInfo) { - if (!accountInfo) { - throw new Error(`No account info found for market`); - } - let factorToPrecision = 1n; - - - const CUMULATIVE_FUNDING_OFFSET = 8 + 48 + 32 + 256 + (16 * 15) + 24; - - const cumulativeFundingRateLong = accountInfo.data.readBigInt64LE(CUMULATIVE_FUNDING_OFFSET); - const cumulativeFundingRateShort = accountInfo.data.readBigInt64LE(CUMULATIVE_FUNDING_OFFSET + 16); - - return { - cumulativeFundingRateLong, - cumulativeFundingRateShort, - factorToPrecision - }; -} - -module.exports = { - getTokenMintFromMarketIndex, - getDecimalsByMarketIndex, - processSpotPosition, - processPerpPosition, - SPOT_MARKETS, - PERP_MARKETS, - getPerpMarketFundingRates, - getPerpTokenMintFromMarketIndex, - getVaultPublicKey, - VOLTR_PROGRAM_ID, - DRIFT_VAULT_PROGRAM_ID, -}; - -function getVaultPublicKey(seed, marketIndex) { - return PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode(seed)), - new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2), - ], DRIFT_PROGRAM_ID)[0] -} \ No newline at end of file diff --git a/projects/vectis/voltr-idl.js b/projects/vectis/voltr-idl.js deleted file mode 100644 index 887f87bb4aa..00000000000 --- a/projects/vectis/voltr-idl.js +++ /dev/null @@ -1,150 +0,0 @@ -module.exports ={ - "address": "vVoLTRjQmtFpiYoegx285Ze4gsLJ8ZxgFKVcuvmG1a8", - "metadata": {"name": "voltr_vault", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [{"name": "Vault", "discriminator": [211, 8, 232, 43, 2, 152, 117, 119]}], - "events": [], - "errors": [], - "types": [ - { - "name": "Vault", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "name", "docs": ["The vault's name."], "type": {"array": ["u8", 32]}}, - {"name": "description", "docs": ["A description or summary for this vault."], "type": {"array": ["u8", 64]}}, - {"name": "asset", "docs": ["The vault’s main asset configuration (inline nested struct)."], "type": {"defined": {"name": "VaultAsset"}}}, - {"name": "lp", "docs": ["The vault’s LP (share) configuration (inline nested struct)."], "type": {"defined": {"name": "VaultLp"}}}, - {"name": "manager", "docs": ["The manager of this vault (has certain permissions)."], "type": "pubkey"}, - {"name": "admin", "docs": ["The admin of this vault (broader or fallback permissions)."], "type": "pubkey"}, - { - "name": "vault_configuration", - "docs": ["The vault fee, cap, and locked profit degradation duration configuration (inline nested struct)."], - "type": {"defined": {"name": "VaultConfiguration"}} - }, - { - "name": "fee_configuration", - "docs": ["The vault fee and cap configuration (inline nested struct)."], - "type": {"defined": {"name": "FeeConfiguration"}} - }, - {"name": "fee_update", "docs": ["The fee update state of the vault."], "type": {"defined": {"name": "FeeUpdate"}}}, - {"name": "fee_state", "docs": ["The fee state of the vault."], "type": {"defined": {"name": "FeeState"}}}, - {"name": "high_water_mark", "type": {"defined": {"name": "HighWaterMark"}}}, - {"name": "last_updated_ts", "docs": ["The last time (Unix timestamp) this vault data was updated."], "type": "u64"}, - {"name": "version", "docs": ["The version of the vault."], "type": "u8"}, - {"name": "_padding0", "docs": ["padding to align future 8-byte fields on 8-byte boundaries."], "type": {"array": ["u8", 7]}}, - {"name": "locked_profit_state", "docs": ["The locked profit state of the vault."], "type": {"defined": {"name": "LockedProfitState"}}}, - {"name": "reserved", "docs": ["Reserved bytes for future use."], "type": {"array": ["u8", 240]}} - ] - } - }, - { - "name": "VaultAsset", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "mint", "docs": ["The mint for the vault’s main asset."], "type": "pubkey"}, - {"name": "idle_ata", "docs": ["The “idle” token account holding un-invested assets."], "type": "pubkey"}, - {"name": "total_value", "docs": ["The total amount of this asset currently in the vault."], "type": "u64"}, - {"name": "idle_ata_auth_bump", "docs": ["The bump for the vault asset mint."], "type": "u8"}, - {"name": "reserved", "docs": ["Reserved bytes for future use."], "type": {"array": ["u8", 95]}} - ] - } - }, - { - "name": "VaultLp", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "mint", "docs": ["The LP mint (e.g., representing shares in this vault)."], "type": "pubkey"}, - {"name": "mint_bump", "docs": ["The bump for the vault LP mint."], "type": "u8"}, - {"name": "mint_auth_bump", "docs": ["The bump for the vault LP mint authority."], "type": "u8"}, - {"name": "reserved", "docs": ["Reserved bytes for future use."], "type": {"array": ["u8", 62]}} - ] - } - }, - { - "name": "VaultConfiguration", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "max_cap", "docs": ["The maximum total amount allowed in the vault."], "type": "u64"}, - {"name": "start_at_ts", "docs": ["active from timestamp"], "type": "u64"}, - {"name": "locked_profit_degradation_duration", "docs": ["The locked profit degradation duration."], "type": "u64"}, - {"name": "withdrawal_waiting_period", "docs": ["The waiting period for a withdrawal. prec: seconds"], "type": "u64"}, - {"name": "reserved", "docs": ["Reserved bytes for future use."], "type": {"array": ["u8", 48]}} - ] - } - }, - { - "name": "FeeConfiguration", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "manager_performance_fee", "docs": ["Manager performance fee in basis points (BPS)."], "type": "u16"}, - {"name": "admin_performance_fee", "docs": ["Admin performance fee in basis points (BPS)."], "type": "u16"}, - {"name": "manager_management_fee", "docs": ["Manager management fee in basis points (BPS)."], "type": "u16"}, - {"name": "admin_management_fee", "docs": ["Admin management fee in basis points (BPS)."], "type": "u16"}, - {"name": "redemption_fee", "docs": ["The redemption fee in basis points (BPS)."], "type": "u16"}, - {"name": "issuance_fee", "docs": ["The issuance fee in basis points (BPS)."], "type": "u16"}, - {"name": "reserved", "docs": ["Reserved bytes for future use."], "type": {"array": ["u8", 36]}} - ] - } - }, - { - "name": "FeeUpdate", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "last_performance_fee_update_ts", "docs": ["The timestamp when the performance fees were last updated."], "type": "u64"}, - {"name": "last_management_fee_update_ts", "docs": ["The timestamp when the management fees were last updated."], "type": "u64"} - ] - } - }, - { - "name": "FeeState", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "accumulated_lp_manager_fees", "docs": ["The accumulated manager fees in the vault."], "type": "u64"}, - {"name": "accumulated_lp_admin_fees", "docs": ["The accumulated admin fees in the vault."], "type": "u64"}, - {"name": "accumulated_lp_protocol_fees", "docs": ["The accumulated protocol fees in the vault."], "type": "u64"}, - {"name": "reserved", "docs": ["Reserved bytes for future use."], "type": {"array": ["u8", 24]}} - ] - } - }, - { - "name": "HighWaterMark", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": { - "kind": "struct", - "fields": [ - {"name": "highest_asset_per_lp_decimal_bits", "docs": ["The highest recorded total asset value per share"], "type": "u128"}, - {"name": "last_updated_ts", "docs": ["The timestamp when the high water mark was last updated"], "type": "u64"}, - {"name": "reserved", "docs": ["Reserved for future use"], "type": {"array": ["u8", 8]}} - ] - } - }, - { - "name": "LockedProfitState", - "serialization": "bytemuckunsafe", - "repr": {"kind": "c"}, - "type": {"kind": "struct", "fields": [{"name": "last_updated_locked_profit", "type": "u64"}, {"name": "last_report", "type": "u64"}]} - } - ] -} \ No newline at end of file diff --git a/projects/vector/contracts.json b/projects/vector/contracts.json deleted file mode 100644 index fd5cef48fc8..00000000000 --- a/projects/vector/contracts.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "contracts": { - "masterchef": "0x423D0FE33031aA4456a17b150804aA57fc157d97", - "pool2": "0x9EF0C12b787F90F59cBBE0b611B82D30CAB92929", - "mainStaking": "0x8B3d9F0017FA369cD8C164D0Cc078bf4cA588aE5", - "VTX": "0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4" - }, - "markets": { - "0xC4B7121b4FC065dECd26C33FB32e42C543E8850d": { - "name": "XPTP_PTP_LP", - "underlying": "0xC4B7121b4FC065dECd26C33FB32e42C543E8850d", - "isLP": true - }, - "0xcf80e302282c1e449fd745fad1e43faffe480536": { - "name": "ZJOE_JOE_LP", - "underlying": "0xcf80e302282c1e449fd745fad1e43faffe480536", - "isLP": true - }, - - "0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4": { - "name": "VTX", - "underlying": "0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4", - "isLP": false, - "noUnderlying": true - }, - "0xc641350D40256120BED47cF0AD24B5ce01D04af3": { - "name": "USDCe", - "underlying": "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", - "isLP": false - }, - "0xB0e2d7d733e013e9005E1fc3Be70B30c58c7359b": { - "name": "USDTe", - "underlying": "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", - "isLP": false - }, - "0x2FdC25cEc50Dab4E1ECCFa1Be40509ae049cEaE0": { - "name": "DAIe", - "underlying": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", - "isLP": false - }, - "0x0ADab2F0455987098059Cfc10875C010800c659F": { - "name": "USDC", - "underlying": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", - "isLP": false - }, - "0x3A51459e72e03c8D4213201feE9F5a2300b3D1fF": { - "name": "USDT", - "underlying": "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", - "isLP": false - }, - "0x060556209E507d30f2167a101bFC6D256Ed2f3e1": { - "name": "XPTP", - "underlying": "0x060556209E507d30f2167a101bFC6D256Ed2f3e1", - "isLP": false, - "noUnderlying": true - }, - "0x769bfeb9fAacD6Eb2746979a8dD0b7e9920aC2A4": { - "name": "ZJOE", - "underlying": "0x769bfeb9fAacD6Eb2746979a8dD0b7e9920aC2A4", - "isLP": false, - "noUnderlying": true - }, - "0x245260481a824A6C0103B0d840EB87B8c6cA0e72": { - "name": "FRAX", - "underlying": "0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64", - "isLP": false - }, - "0x03fE91A6c7996ED726dAbE386c91027899AeE45F": { - "name": "UST", - "underlying": "0xb599c3590F42f8F995ECfa0f85D2980B76862fc1", - "isLP": false - }, - "0x6e3Ce3bCa4a388298FeC0C526Fff7b71A77407Da": { - "name": "MIM", - "underlying": "0x130966628846BFd36ff31a822705796e8cb8C18D", - "isLP": false - }, - "0x48AbadaDCE4BaE4c47F9877D5C08705AD7131A05": { - "name": "USDC_UST", - "underlying": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", - "isLP": false - }, - "0x3f941f31828E251aC24b445c5E318DEB691b5B68": { - "name": "USDT_MIM", - "underlying": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", - "isLP": false - }, - "0x6D46346250A46516c0c1f51709c0330476069b41": { - "name": "USDT_FRAX", - "underlying": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", - "isLP": false - }, - "0x08a7f16ad042365965D61F2518eAd2dEe281a1F6": { - "name": "AVAX_USDC", - "underlying": "0xf4003F4efBE8691B60249E6afbD307aBE7758adb", - "isLP": true, - "isJoeLP": true - }, - "0x530Eb6170D2F96310414A96a647F970BcD2CD85C": { - "name": "AVAX_USDCe", - "underlying": "0xa389f9430876455c36478deea9769b7ca4e3ddb1", - "isLP": true, - "isJoeLP": true - }, - "0xac3046c161fc65F453123C55543DA8d6B18e687C": { - "name": "AVAX_USDTe", - "underlying": "0xeD8CBD9F0cE3C6986b22002F03c6475CEb7a6256", - "isLP": true, - "isJoeLP": true - }, - "0x490cFC0F6849de81eB3Adb62332C682bF7A4e118": { - "name": "AVAX_USDT", - "underlying": "0xbb4646a764358ee93c2a9c4a147d5aDEd527ab73", - "isLP": true, - "isJoeLP": true - }, - "0x12C6aE3b4675ADEe0971C194ED9844B141980653": { - "name": "AVAX_MIM", - "underlying": "0x781655d802670bba3c89aebaaea59d3182fd755d", - "isLP": true, - "isJoeLP": true - }, - "0xaac6b032048CC892e22bFCb85a60F431Eee83c03": { - "name": "JOE_USDC", - "underlying": "0x3bc40d4307cd946157447cd55d70ee7495ba6140", - "isLP": true, - "isJoeLP": true - }, - "0x4e179E5B027e9FABaf5159f02d8e11063519f65e": { - "name": "JOE_AVAX", - "underlying": "0x454e67025631c065d3cfad6d71e6892f74487a15", - "isLP": true, - "isJoeLP": true - }, - "0x9e54E1eCbCd85b5E6145414E1b88086cFC66006B": { - "name": "WETHe_AVAX", - "underlying": "0xFE15c2695F1F920da45C30AAE47d11dE51007AF9", - "isLP": true, - "isJoeLP": true - }, - "0x47bb23D30081a2d55E49B20276897AC7A5F1064d": { - "name": "WBTCe_USDC", - "underlying": "0xd5a37dc5c9a396a03dd1136fc76a1a02b1c88ffa", - "isLP": true, - "isJoeLP": true - }, - "0xd5978FCB43F87afE4281254CAA29bCD218cba1cF": { - "name": "USDC_USDCe", - "underlying": "0x2a8a315e82f85d1f0658c5d66a452bbdd9356783", - "isLP": true, - "isJoeLP": true - }, - "0xFB6aE9fD38725E44bD8a76E617cBf801957d9006": { - "name": "USDT_USDTe", - "underlying": "0x74b651eff97871ea99fcc14423e611d85eb0ea93", - "isLP": true, - "isJoeLP": true - }, - "0x155C615007E5e39BFb51105E8dbe0d86eD2ECb7D": { - "name": "LINKe_WAVAX", - "underlying": "0x6f3a0c89f611ef5dc9d96650324ac633d02265d3", - "isLP": true, - "isJoeLP": true - }, - "0xAC55A9Ad2256482771D545805732C818Dc38808c": { - "name": "BNB_WAVAX", - "underlying": "0xeb8eb6300c53c3addbb7382ff6c6fbc4165b0742", - "isLP": true, - "isJoeLP": true - }, - "0xD5817AC3027B1958961903238b374EcD8a5537A8": { - "name": "BTCb_WAVAX", - "underlying": "0x2fd81391e30805cc7f2ec827013ce86dc591b806", - "isLP": true, - "isJoeLP": true - }, - "0x25DD42103b7DA808e68A2bae5e14F48871488a85": { - "name": "AVAX", - "underlying": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", - "isLP": false - }, - "0x8Aa347D9A2Bb8e32342f50939236251853604C79": { - "name": "SAVAX", - "underlying": "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE", - "isLP": false - }, - "0x42eCB16906851C94D7De3d8Fa153F64459b2F09d": { - "name": "YUSD", - "underlying": "0x111111111111ed1D73f860F57b2798b683f2d325", - "isLP": false - }, - "0xbB720b2e8623C2351302Fe03C9DFD44945CeF738": { - "name": "USDC_YUSD", - "underlying": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", - "isLP": false - }, - "0x9554903a1Ad1E42781008eAb66aC163818B8ecB1": { - "name": "BTCb", - "underlying": "0x152b9d0fdc40c096757f570a51e494bd4b943e50", - "isLP": false - }, - "0x77A3eAA4045ef334A5d87deb2f4AE506c85dceA1": { - "name": "WBTCe", - "underlying": "0x50b7545627a5162F82A992c33b87aDc75187B218", - "isLP": false - } - - } -} \ No newline at end of file diff --git a/projects/vector/index.js b/projects/vector/index.js deleted file mode 100644 index 8a07a886235..00000000000 --- a/projects/vector/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { unwrapLPsAuto } = require("../helper/unwrapLPs"); -const { staking, } = require("../helper/staking.js"); -const { pool2 } = require('../helper/pool2') -const contracts = require("./contracts.json"); -const vectorContracts = require("./vectorContracts.json"); -///Joe Info -const JoePoolsInfo = vectorContracts.JOE.pools; -///Vector Info -const masterchefAddress = vectorContracts.PROTOCOL.masterchief.address; -const LockerAddress = vectorContracts.locker.address; -const VectorPoolsInfo = vectorContracts.PROTOCOL.pools; -const VectorStakingPools = [ - VectorPoolsInfo.VTX, - VectorPoolsInfo.XPTP, - VectorPoolsInfo.ZJOE, -]; -const VectorLPPools = [ - VectorPoolsInfo.AVAX_VTX, - VectorPoolsInfo.PTP_XPTP, - VectorPoolsInfo.JOE_ZJOE, -]; -async function tvl(api) { - const balancerPools = [ - '0x26fa40f1f29e3b495ec3c4c46b24df7EcDE796d9', - '0x0708b37dD778E459bEAB114FDF1C431068888379', - '0x9Bd09687Da5Ec6b50e8242E7cE3cc5C065FF07c9', - '0x53149F25aF0D7D19c0c2D7389e1eC73A3e479c72', - ] - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: balancerPools }) - const bals = await api.multiCall({ abi: 'uint256:totalDeposits', calls: balancerPools }) - api.addTokens(tokens, bals) - - //GET JOE BALANCES - const receiptTokens = JoePoolsInfo.map((pool) => pool[1]); - const receiptTokenUnderlyings = JoePoolsInfo.map((pool) => pool[0]); - const receiptBalances = (await api.multiCall({ target: masterchefAddress, calls: receiptTokens, abi: "function getPoolInfo(address) view returns (uint256,uint256,uint256 balance,uint256)", })).map(i => i.balance) - api.addTokens(receiptTokenUnderlyings, receiptBalances) - await api.sumTokens({ owner: masterchefAddress, tokens: [...VectorStakingPools, ...VectorLPPools].map(i => i.token.address), blacklistedTokens: [vectorContracts.tokens.VTX.address, ...receiptTokens] }) - - return unwrapLPsAuto({ api }); -} - -module.exports = { - doublecounted: true, - avax: { - tvl, - staking: staking([masterchefAddress, LockerAddress], vectorContracts.tokens.VTX.address,), - pool2: pool2(contracts.contracts.masterchef, contracts.contracts.pool2,), - }, -}; -// node test.js projects/vector/index.js diff --git a/projects/vector/vectorContracts.json b/projects/vector/vectorContracts.json deleted file mode 100644 index 9aa53d64f79..00000000000 --- a/projects/vector/vectorContracts.json +++ /dev/null @@ -1,487 +0,0 @@ -{ - "ACCOUNTS": { - "deployer": "0xdd5cf30f56C37d3243A23543dC5bd5eE576970e2", - "ptp_multisig": "0x5b382F33926813B81C9861B2A2ec9bE9D24d33bf", - "born": "0xE2e60A1bF02c7A2a0bA45791cF30B99F2A6aFaa0", - "multisig_vector": "0x3bd639c8893106a0656b8764e269008b93c53c35", - "deployer_multisig": "0x1aB96ce023b73E37D0031821b0c613b8b37D10A9" - }, - "locker": { - "address": "0xF99264cbf9652824B3412FA21E8cBEB69c3ea0a7", - "contract": "LockerV2", - "should_be_upgraded": true - }, - "tokens": { - "BUSD": { - "address": "0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39", - "contract": "IERC20" - }, - "yyAVAX": { - "address": "0xF7D9281e8e363584973F946201b82ba72C965D27", - "contract": "IERC20" - }, - "QI": { - "address": "0x8729438eb15e2c8b576fcc6aecda6a148776c0f5", - "contract": "IERC20" - }, - "UST": { - "address": "0xb599c3590f42f8f995ecfa0f85d2980b76862fc1", - "contract": "IERC20" - }, - "VTX": { - "address": "0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4", - "contract": "IERC20" - }, - "XPTP": { - "address": "0x060556209E507d30f2167a101bFC6D256Ed2f3e1", - "contract": "IERC20" - }, - "PTP": { - "address": "0x22d4002028f537599be9f666d1c4fa138522f9c8", - "contract": "IERC20" - }, - "PTP_XPTP": { - "address": "0xc4b7121b4fc065decd26c33fb32e42c543e8850d", - "contract": "IERC20" - }, - "locker": { - "address": "0xF99264cbf9652824B3412FA21E8cBEB69c3ea0a7", - "contract": "LockerV2" - }, - "USDTe": { - "address": "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", - "contract": "IERC20" - }, - "USDCe": { - "address": "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", - "contract": "IERC20" - }, - "DAIe": { - "address": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", - "contract": "IERC20" - }, - "USDC": { - "address": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", - "contract": "IERC20" - }, - "USDT": { - "address": "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", - "contract": "IERC20" - }, - "FRAX": { - "address": "0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64", - "contract": "IERC20" - }, - "MIM": { - "address": "0x130966628846BFd36ff31a822705796e8cb8C18D", - "contract": "IERC20" - }, - "SAVAX": { - "address": "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE", - "contract": "IERC20" - }, - "WAVAX": { - "address": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", - "contract": "IERC20" - }, - "YUSD": { - "address": "0x111111111111ed1d73f860f57b2798b683f2d325", - "contract": "IERC20" - }, - "JOE": { - "address": "0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd", - "contract": "IERC20" - }, - "ZJOE": { - "address": "0x769bfeb9fAacD6Eb2746979a8dD0b7e9920aC2A4", - "contract": "IERC20" - }, - "JOE_ZJOE": { - "address": "0xcf80e302282c1e449fd745fad1e43faffe480536", - "contract": "IJoePair" - }, - "JOE_WAVAX": { - "address": "0x454e67025631c065d3cfad6d71e6892f74487a15", - "contract": "IJoePair" - }, - "BNB_WAVAX": { - "address": "0xeb8eB6300c53C3AddBb7382Ff6c6FbC4165B0742", - "contract": "IJoePair" - }, - "JOE_USDC": { - "address": "0x3bc40d4307cD946157447CD55d70ee7495bA6140", - "contract": "IJoePair" - }, - "LINKe_AVAX": { - "address": "0x6F3a0C89f611Ef5dC9d96650324ac633D02265D3", - "contract": "IJoePair" - }, - "MIM_AVAX": { - "address": "0x781655d802670bbA3c89aeBaaEa59D3182fD755D", - "contract": "IJoePair" - }, - "USDC_AVAX": { - "address": "0xf4003F4efBE8691B60249E6afbD307aBE7758adb", - "contract": "IJoePair" - }, - "USDCe_AVAX": { - "address": "0xA389f9430876455C36478DeEa9769B7Ca4E3DDB1", - "contract": "IJoePair" - }, - "USDC_USDCe": { - "address": "0x2A8A315e82F85D1f0658C5D66A452Bbdd9356783", - "contract": "IJoePair" - }, - "USDTe_AVAX": { - "address": "0xeD8CBD9F0cE3C6986b22002F03c6475CEb7a6256", - "contract": "IJoePair" - }, - "USDT_AVAX": { - "address": "0xbb4646a764358ee93c2a9c4a147d5aDEd527ab73", - "contract": "IJoePair" - }, - "USDT_USDTe": { - "address": "0x74b651eff97871ea99fcc14423e611d85eb0ea93", - "contract": "IJoePair" - }, - "WETHe_AVAX": { - "address": "0xFE15c2695F1F920da45C30AAE47d11dE51007AF9", - "contract": "IJoePair" - }, - "WBTCe_AVAX": { - "address": "0xd5a37dc5c9a396a03dd1136fc76a1a02b1c88ffa", - "contract": "IJoePair" - }, - "BTCb_AVAX": { - "address": "0x2fd81391e30805cc7f2ec827013ce86dc591b806", - "contract": "IJoePair" - }, - "MONEY": { - "address": "0x0f577433bf59560ef2a79c124e9ff99fca258948", - "contract": "IERC20" - }, - "YETI": { - "address": "0x77777777777d4554c39223C354A05825b2E8Faa3", - "contract": "IERC20" - }, - "MORE": { - "address": "0xd9D90f882CDdD6063959A9d837B05Cb748718A05", - "contract": "IERC20" - }, - "axlUSDC": { - "address": "0xfaB550568C688d5D8A52C7d794cb93Edc26eC0eC", - "contract": "IERC20" - }, - "AVAX_VTX": { - "address": "0x9EF0C12b787F90F59cBBE0b611B82D30CAB92929", - "contract": "IERC20" - } - }, - "JOE": { - "rush": { - "address": "0xD8C17F800bC78A74344DD5CB13f200054Ec7Cab7", - "contract": "JoeRush", - "ignore_connect": true - }, - "proxy_admin": { - "address": "0xE175df2a34e56AEABd6515099e9781c40C291270", - "contract": "TimelockedProxyAdmin" - }, - "main_staking": { - "address": "0x0E25c07748f727D6CCcD7D2711fD7bD13d13422d", - "contract": "MainStakingJoe", - "should_be_upgraded": true - }, - "smart_convertor": { - "address": "0x6b3DcE7C2189Fc3d3586aE884C09B817C0BC5275", - "contract": "IxTokenConvertor" - }, - "pools":[ - [ - "0x454e67025631c065d3cfad6d71e6892f74487a15", - "0x4e179E5B027e9FABaf5159f02d8e11063519f65e" - ], - [ - "0xeb8eB6300c53C3AddBb7382Ff6c6FbC4165B0742", - "0xAC55A9Ad2256482771D545805732C818Dc38808c" - ], - [ - "0x3bc40d4307cD946157447CD55d70ee7495bA6140", - "0xaac6b032048CC892e22bFCb85a60F431Eee83c03" - ], - [ - "0x6F3a0C89f611Ef5dC9d96650324ac633D02265D3", - "0x155C615007E5e39BFb51105E8dbe0d86eD2ECb7D" - ], - [ - "0x781655d802670bbA3c89aeBaaEa59D3182fD755D", - "0x12C6aE3b4675ADEe0971C194ED9844B141980653" - ], - [ - "0xf4003F4efBE8691B60249E6afbD307aBE7758adb", - "0x08a7f16ad042365965D61F2518eAd2dEe281a1F6" - ], - [ - "0xA389f9430876455C36478DeEa9769B7Ca4E3DDB1", - "0x530Eb6170D2F96310414A96a647F970BcD2CD85C" - ], - [ - "0x2A8A315e82F85D1f0658C5D66A452Bbdd9356783", - "0xd5978FCB43F87afE4281254CAA29bCD218cba1cF" - ], - [ - "0xeD8CBD9F0cE3C6986b22002F03c6475CEb7a6256", - "0xac3046c161fc65F453123C55543DA8d6B18e687C" - ], - [ - "0xbb4646a764358ee93c2a9c4a147d5aDEd527ab73", - "0x490cFC0F6849de81eB3Adb62332C682bF7A4e118" - ], - [ - "0x74b651eff97871ea99fcc14423e611d85eb0ea93", - "0xFB6aE9fD38725E44bD8a76E617cBf801957d9006" - ], - [ - "0xd5a37dc5c9a396a03dd1136fc76a1a02b1c88ffa", - "0x47bb23D30081a2d55E49B20276897AC7A5F1064d" - ], - [ - "0xFE15c2695F1F920da45C30AAE47d11dE51007AF9", - "0x9e54E1eCbCd85b5E6145414E1b88086cFC66006B" - ], - [ - "0x2fd81391e30805cc7f2ec827013ce86dc591b806", - "0xD5817AC3027B1958961903238b374EcD8a5537A8" - ], - [ - "0xf57971383560715CcCF94E0C639125Ae0e955e60", - "0xbf84b23Aa332b5cdcA184595aCCC75b79B170f1D" - ] - ] - }, - "MISC": { - "ROUTER_JOE": { - "address": "0x60aE616a2155Ee3d9A68541Ba4544862310933d4", - "contract": "IJoeRouter02" - }, - "FACTORY_JOE": { - "address": "0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10", - "contract": "IJoeFactory" - } - }, - "PROTOCOL": { - "masterchief": { - "address": "0x423D0FE33031aA4456a17b150804aA57fc157d97", - "contract": "MasterChefVTX", - "should_be_upgraded": true - }, - "manual_compound": { - "address": "0x7034Fe86d8dAE3A42F2E3e808fF3ec271a749a77", - "contract": "ManualCompound" - }, - "old_manual_compound": { - "address": "0x43c5FF0B7D62498795Ff4Ce1727fE9841f76255A", - "contract": "ManualCompoundOld", - "ignore_connect": true - }, - "idgaf": { - "address": "0xB5C3547e1120FCA52329F14989dafa78cae4Ce7A", - "contract": "DelegateVotePool", - "should_be_upgraded": true - }, - "swap_helper": { - "address": "0xC3193F9eE0921ef463D47a9d967e69Cf47510d8f", - "contract": "SwapHelper", - "should_be_upgraded": true - }, - "fee_seller": { - "address": "0x6B43c8320f5b27EA1289c874F7fA240B58576D40", - "contract": "FeeSeller" - }, - "LVTX_compounder": { - "address": "0x5EDb70609f7BE94f8b0cd7BeD1E01908901d54C6", - "contract": "LVTXAutoCompound", - "should_be_upgraded": true - }, - "multi_caller": { - "address": "0x620D852E99151FaC09414ff161a618bD76a15140", - "contract": "IMultiCaller" - }, - "pools": { - "VTX": { - "token": { - "address": "0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4", - "contract": "IERC20" - }, - "rewarder": { - "address": "0xfB8695245BD05993c0bEce1b7056B75D88777c11", - "contract": "BaseRewardPool" - }, - "helper": { - "address": "0x49964537f89A6fe56dD85480704C9Bf9c19b9Cc0", - "contract": "SimplePoolHelper" - } - }, - "LOCKER": { - "token": { - "address": "0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4", - "contract": "IERC20" - }, - "rewarder": { - "address": "0x58B31B8e3fB3365df3e86527Ee7B009D37E5C851", - "contract": "BaseRewardPoolLocker" - }, - "helper": { - "address": "0x17D152DF9Eb78D3A441D2aeeE9BDE3350072Bbd1", - "contract": "SimpleLockerHelper" - } - }, - "OLD_LOCKER": { - "token": { - "address": "0x5817D4F0b62A59b17f75207DA1848C2cE75e7AF4", - "contract": "IERC20" - }, - "rewarder": { - "address": "0x601B89a43EBBE26FA48d91F43eD63D08831d17CD", - "contract": "BaseRewardPool" - } - }, - "XPTP": { - "token": { - "address": "0x060556209E507d30f2167a101bFC6D256Ed2f3e1", - "contract": "IERC20" - }, - "rewarder": { - "address": "0xFF2ea93A0131A037DDe900b3F361B1F24a870Ff4", - "contract": "BaseRewardPool" - }, - "receipt": { - "address": "0x060556209E507d30f2167a101bFC6D256Ed2f3e1", - "contract": "IERC20" - }, - "helper": { - "address": "0x44A6B6D38068EeBb5d6FB03D6C45f08b9e565b8D", - "contract": "SimplePoolHelper" - }, - "convert_and_stake_helper": { - "address": "0x59ABD174467E69C283b9bbd452A9caa208DAD1f9", - "contract": "ConvertAndStakeHelper" - }, - "compounder": { - "address": "0x6124B5F5Fc897a9a64a750ED24cBdC421eB79CF5", - "contract": "xCoreCompounder", - "should_be_upgraded": true - }, - "compounder_rewarder": { - "address": "0x96137066e4642FA62dc4b6F637870BF68E924cE7", - "contract": "BaseRewardPool" - } - }, - "ZJOE": { - "token": { - "address": "0x769bfeb9fAacD6Eb2746979a8dD0b7e9920aC2A4", - "contract": "IERC20" - }, - "helper": { - "address": "0xb8C481ef38E6e3BA41Da11e497d7f241ee748D60", - "contract": "SimplePoolHelper" - }, - "rewarder": { - "address": "0x73f6b0Fb5721356d79CCf9414De8cAAC074e0110", - "contract": "BaseRewardPool" - }, - "convert_and_stake_helper": { - "address": "0xE65dA011F2B6Df19BbE34447CA679Ac934173E97", - "contract": "ConvertAndStakeHelper" - }, - "compounder": { - "address": "0x5531d779EC044866890d54d9727f048cE22107bb", - "contract": "xCoreCompounder", - "should_be_upgraded": true - }, - "compounder_rewarder": { - "address": "0xe4955afa872a24307f1E6F325fefC2Bf736cf43d", - "contract": "BaseRewardPool" - } - }, - "PTP_XPTP": { - "token": { - "address": "0xc4b7121b4fc065decd26c33fb32e42c543e8850d", - "contract": "IJoePair" - }, - "helper": { - "address": "0xDeb40C4cCE16309Ce9dee41418eCCFA0f2fdAB89", - "contract": "SimplePoolHelper" - }, - "compounder": { - "address": "0xC65fE0E394DbA2901112ccf1D528ED4296EF0B46", - "contract": "xCoreLpCompounder", - "should_be_upgraded": true - }, - "compounder_rewarder": { - "address": "0x3C87D3F5BBbe90ca0C24738139f73B9F803640d3", - "contract": "BaseRewardPool" - } - }, - "JOE_ZJOE": { - "token": { - "address": "0xcf80e302282c1e449fd745fad1e43faffe480536", - "contract": "IJoePair" - }, - "helper": { - "address": "0x3833B5Ce11061376c7b908251e12cE536f8389Aa", - "contract": "SimplePoolHelper" - }, - "compounder": { - "address": "0xd0925c4817352ddEfef69A06dc9a60f4Ad86fADc", - "contract": "xCoreLpCompounder", - "should_be_upgraded": true - }, - "compounder_rewarder": { - "address": "0x29533103f344C334C0617f6b7bCf294BD16AaDcd", - "contract": "BaseRewardPool" - } - }, - "AVAX_VTX": { - "token": { - "address": "0x9EF0C12b787F90F59cBBE0b611B82D30CAB92929", - "contract": "IJoePair" - }, - "helper": { - "address": "0xFf891136B41EB6E5c47499609656894b19533D5F", - "contract": "SimplePoolHelper" - }, - "compounder": { - "address": "0xa8e00e1f1Ca0df4600f6117072A03E3BF8Fc8886", - "contract": "xCoreLpCompounder" - }, - "compounder_rewarder": { - "address": "0x6E52692ECAF1A0c73fBAaD9eDc20b165D24D78F7", - "contract": "BaseRewardPool" - } - } - }, - "proxy_admin": { - "address": "0x51f8283A7Ff9e5CFa3045FFd5EB5F4D1071Bb1E3", - "contract": "ProxyAdmin" - } - }, - "LIBS": { - "ERC20FactoryLib": { - "address": "0x2ddC95E41d01DDD3268cd91A35A7bd7d0849d7Fc", - "contract": "ERC20FactoryLib" - }, - "PoolHelperJoeFactoryLib": { - "address": "0x69CdE7a07e3FFb839Ca69F635174c725F006E98B", - "contract": "PoolHelperJoeFactoryLib" - }, - "PoolHelperFactoryLib": { - "address": "0xbb43bfFacA26E105Bf6E5f1e933F67955af354C0", - "contract": "PoolHelperFactoryLib" - } - }, - "testing_contract": { - "address": "", - "contract": "MasterChefVTX" - } -} diff --git a/projects/vectorreserve/index.js b/projects/vectorreserve/index.js deleted file mode 100644 index c26d674ee05..00000000000 --- a/projects/vectorreserve/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { staking } = require('../helper/staking') - -const VETH_CONTRACT = '0x38D64ce1Bdf1A9f24E0Ec469C9cAde61236fB4a0'; -const VEC_CONTRACT = '0x1BB9b64927e0C5e207C9DB4093b3738Eef5D8447'; - -async function tvl(api) { - const tokens = await api.fetchList({ lengthAbi: 'approvedTokens', itemAbi: 'approvedRestakedLSTs', target: VETH_CONTRACT }) - return api.sumTokens({ owner: VETH_CONTRACT, tokens, }) -} - -module.exports = { - methodology: 'Value of ETH and LSD tokens in VETH contract', - ethereum: { - tvl, - pool2: staking(['0x2dd568028682ff2961cc341a4849f1b32f371064'], ['0xB6B0C651C37EC4ca81C0a128420e02001A57Fac2', '0x6685fcFCe05e7502bf9f0AA03B36025b09374726']), - staking: staking(['0xFdC28cd1BFEBF3033870C0344B4E0beE639be9b1'], VEC_CONTRACT), - } -}; \ No newline at end of file diff --git a/projects/veda/arbitrum_constants.js b/projects/veda/arbitrum_constants.js deleted file mode 100644 index 1e3557bbe38..00000000000 --- a/projects/veda/arbitrum_constants.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Arbitrum = [ - { - name: "Staked ETHFI", - vault: "0x86B5780b606940Eb59A062aA85a07959518c0161", - accountant: "0x05A1552c5e18F5A0BB9571b5F2D6a4765ebdA32b", - teller: "0xe2acf9f80a2756E51D1e53F9f41583C84279Fb1f", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 230459109, - baseAsset: ADDRESSES.arbitrum.ETHFI, - }, - { - name: "EBTC", - vault: ADDRESSES.ethereum.EBTC, - accountant: "0x1b293DC39F94157fA0D1D36d7e0090C8B8B8c13F", - teller: "0xe19a43B1b8af6CeE71749Af2332627338B3242D1", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 283262327, - baseAsset: ADDRESSES.arbitrum.WBTC, - }, -]; - -module.exports = { - boringVaultsV0Arbitrum, -}; diff --git a/projects/veda/base_constants.js b/projects/veda/base_constants.js deleted file mode 100644 index 1b6dd42b82c..00000000000 --- a/projects/veda/base_constants.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Base = [ - { - name: "Coinbase BTC", - vault: "0x42A03534DBe07077d705311854E3B6933dD6Af85", - accountant: "0x1c217f17d57d3CCD1CB3d8CB16B21e8f0b544156", - teller: "0x66B912f197D9810d7b74E43d55bBbFC60034E98a", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 19387993, - baseAsset: ADDRESSES.base.cbBTC, - }, - { - name: "Staked ETHFI", - vault: "0x86B5780b606940Eb59A062aA85a07959518c0161", - accountant: "0x05A1552c5e18F5A0BB9571b5F2D6a4765ebdA32b", - teller: "0xe2acf9f80a2756E51D1e53F9f41583C84279Fb1f", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 19686016, - baseAsset: ADDRESSES.base.ETHFI, - }, - { - name: "Lombard BTC", - vault: "0x5401b8620E5FB570064CA9114fd1e135fd77D57c", - accountant: "0x28634D0c5edC67CF2450E74deA49B90a4FF93dCE", - teller: "0x2eA43384F1A98765257bc6Cb26c7131dEbdEB9B3", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 22113564, - baseAsset: ADDRESSES.base.WBTC, - }, - { - name: "EBTC", - vault: ADDRESSES.ethereum.EBTC, - accountant: "0x1b293DC39F94157fA0D1D36d7e0090C8B8B8c13F", - teller: "0xe19a43B1b8af6CeE71749Af2332627338B3242D1", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 22113992, - baseAsset: ADDRESSES.base.WBTC, - }, - { - name: "Liquid ETH", - vault: "0xf0bb20865277aBd641a307eCe5Ee04E79073416C", - accountant: "0x0d05D94a5F1E76C18fbeB7A13d17C8a314088198", - teller: "0x5c135e8eC99557b412b9B4492510dCfBD36066F5", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 17482303, - baseAsset: ADDRESSES.base.WETH, - } -]; - -module.exports = { - boringVaultsV0Base, -}; diff --git a/projects/veda/berachain_constants.js b/projects/veda/berachain_constants.js deleted file mode 100644 index 874ac99da91..00000000000 --- a/projects/veda/berachain_constants.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Berachain = [ - { - name: "Prime Liquid Bera BTC", - vault: "0x46fcd35431f5B371224ACC2e2E91732867B1A77e", - accountant: "0x4faE50B524e0D05BD73fDF28b273DB7D4A57CCe9", - teller: "0xf16Cd75E975163f3A0A1af42E5609aB67A6553D7", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 200107, - baseAsset: ADDRESSES.berachain.WBTC, - }, - { - name: "Prime Liquid Bera ETH", - vault: "0xB83742330443f7413DBD2aBdfc046dB0474a944e", - accountant: "0x0B24A469d7c155a588C8a4ee24020F9f27090B0d", - teller: "0xa6976B2211411461aB6DF4B3AAE896531Eb527df", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 198970, - baseAsset: ADDRESSES.berachain.WETH, - }, -]; - -module.exports = { - boringVaultsV0Berachain, -}; diff --git a/projects/veda/bnb_constants.js b/projects/veda/bnb_constants.js deleted file mode 100644 index 437c8c9e327..00000000000 --- a/projects/veda/bnb_constants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Bnb = [ - { - name: "Lombard BTC", - vault: "0x5401b8620E5FB570064CA9114fd1e135fd77D57c", - accountant: "0x28634D0c5edC67CF2450E74deA49B90a4FF93dCE", - teller: "0x2eA43384F1A98765257bc6Cb26c7131dEbdEB9B3", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 42143259, - baseAsset: ADDRESSES.bsc.WBTC, - } -]; - -module.exports = { - boringVaultsV0Bnb -}; diff --git a/projects/veda/bob_constants.js b/projects/veda/bob_constants.js deleted file mode 100644 index 8c5c4ba62bf..00000000000 --- a/projects/veda/bob_constants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Bob = [ - { - name: "Hybrid BTC", - vault: "0x9998e05030Aee3Af9AD3df35A34F5C51e1628779", - accountant: "0x22b025037ff1F6206F41b7b28968726bDBB5E7D5", - teller: "0x19ab8c9896728d3A2AE8677711bc852C706616d3", - lens: "0xb1DB783AfdBb0076486692152608f2E762bB75AE", - startBlock: 13262672, - baseAsset: ADDRESSES.bob.WBTC, - } -]; - -module.exports = { - boringVaultsV0Bob, -}; \ No newline at end of file diff --git a/projects/veda/ethereum_constants.js b/projects/veda/ethereum_constants.js deleted file mode 100644 index 4ec303c186a..00000000000 --- a/projects/veda/ethereum_constants.js +++ /dev/null @@ -1,287 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const legacyVaultsEthereum = [ - { - id: "0xeA1A6307D9b18F8d1cbf1c3Dd6aad8416C06a221", - startBlock: 19460621, - baseAsset: ADDRESSES.ethereum.WETH, - }, -]; - -const boringVaultsV0Ethereum = [ - { - name: "Liquid USD", - vault: "0x08c6F91e2B681FaF5e17227F2a44C307b3C1364C", - accountant: "0xc315D6e14DDCDC7407784e2Caf815d131Bc1D3E7", - teller: "0x221Ea02d409074546265CCD1123050F4D498ef64", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 19672708, - baseAsset: ADDRESSES.ethereum.USDC, - }, - { - name: "Super Symbiotic", - vault: "0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88", - accountant: "0xbe16605B22a7faCEf247363312121670DFe5afBE", - teller: "0x99dE9e5a3eC2750a6983C8732E6e795A35e7B861", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20072943, - baseAsset: ADDRESSES.ethereum.WETH, - }, - { - name: "LBTCv", - vault: "0x5401b8620E5FB570064CA9114fd1e135fd77D57c", - accountant: "0x28634D0c5edC67CF2450E74deA49B90a4FF93dCE", - teller: "0x2eA43384F1A98765257bc6Cb26c7131dEbdEB9B3", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20133944, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "Liquid ETH", - vault: "0xf0bb20865277aBd641a307eCe5Ee04E79073416C", - accountant: "0x0d05D94a5F1E76C18fbeB7A13d17C8a314088198", - teller: "0x5c135e8eC99557b412b9B4492510dCfBD36066F5", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20014553, - baseAsset: ADDRESSES.ethereum.WETH, - }, - { - name: "Karak", - vault: "0x7223442cad8e9cA474fC40109ab981608F8c4273", - accountant: "0x126af21dc55C300B7D0bBfC4F3898F558aE8156b", - teller: "0x929B44db23740E65dF3A81eA4aAB716af1b88474", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20220506, - baseAsset: ADDRESSES.ethereum.WETH, - }, - { - name: "Staked ETHFI", - vault: "0x86B5780b606940Eb59A062aA85a07959518c0161", - accountant: "0x05A1552c5e18F5A0BB9571b5F2D6a4765ebdA32b", - teller: "0xe2acf9f80a2756E51D1e53F9f41583C84279Fb1f", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20265590, - baseAsset: ADDRESSES.ethereum.ETHFI, - }, - { - name: "eBTC", - vault: ADDRESSES.ethereum.EBTC, - accountant: "0x1b293DC39F94157fA0D1D36d7e0090C8B8B8c13F", - teller: "0xe19a43B1b8af6CeE71749Af2332627338B3242D1", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20523456, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "Liquid Usual", - vault: "0xeDa663610638E6557c27e2f4e973D3393e844E70", - accountant: "0x1D4F0F05e50312d3E7B65659Ef7d06aa74651e0C", - teller: "0xA55a34d31AF7E1bDDFACe2966d51526ECcF4f76E", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20614335, - baseAsset: ADDRESSES.ethereum.USD0, - }, - { - name: "Liquid Elixir", - vault: "0x352180974C71f84a934953Cf49C4E538a6F9c997", - accountant: "0xBae19b38Bf727Be64AF0B578c34985c3D612e2Ba", - teller: "0x417e1Ef6eB82c3E6a60c2DC342e574E4C51B4D35", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20637838, - baseAsset: ADDRESSES.ethereum.deUSD, - }, - { - name: "eUSD", - vault: ADDRESSES.ethereum.EUSD, - accountant: "0xEB440B36f61Bf62E0C54C622944545f159C3B790", - teller: "0xA5C0bc543Ae9e522d0d8829191D759c0f0BcD098", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20693644, - baseAsset: ADDRESSES.ethereum.USDe, - }, - { - name: "Coinbase BTCv", - vault: "0x42A03534DBe07077d705311854E3B6933dD6Af85", - accountant: "0x1c217f17d57d3CCD1CB3d8CB16B21e8f0b544156", - teller: "0x66B912f197D9810d7b74E43d55bBbFC60034E98a", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20736900, - baseAsset: ADDRESSES.ethereum.cbBTC, - }, - { - name: "eEigen", - vault: "0xE77076518A813616315EaAba6cA8e595E845EeE9", - accountant: "0x075e60550C6f77f430B284E76aF699bC31651f75", - teller: "0x63b2B0528376d1B34Ed8c9FF61Bd67ab2C8c2Bb0", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20839650, - baseAsset: ADDRESSES.ethereum.EIGEN, - }, - { - name: "Mantle cMETH", - vault: ADDRESSES.mantle.cmETH, - accountant: "0x6049Bd892F14669a4466e46981ecEd75D610a2eC", - teller: "0xB6f7D38e3EAbB8f69210AFc2212fe82e0f1912b0", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20439668, - baseAsset: ADDRESSES.ethereum.METH, - }, - { - name: "Pump BTC-Fi", - vault: "0xFE0C961A49E1aEe2AE2d842fE40157365C6d978f", - accountant: "0xf1ecf4802C2b5Cf9c830A4AF297842Daa6D0f986", - teller: "0x59896bf82F9Eded846f331964205362BaCfC3f36", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 20839716, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "Bedrock Uni BTC-Fi", - vault: "0xf6d71c15657A7f2B9aeDf561615feF9E05fE2cb3", - accountant: "0x37e6e4526483D05711b8D6F92c27F2f3a16FC45b", - teller: "0xb02D0996039C1D98eA4716D7781347f7CCFD328e", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21191335, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "Liquid BTC", - vault: "0x5f46d540b6eD704C3c8789105F30E075AA900726", - accountant: "0xEa23aC6D7D11f6b181d6B98174D334478ADAe6b0", - teller: "0x9E88C603307fdC33aA5F26E38b6f6aeF3eE92d48", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21189184, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "Lombard Loop BTC", - vault: "0x1293b71644e7E55A692Cade85a0EDB381868AA7c", - accountant: "0x6b2DF248202fd0D99EBFF5744285b403982BC35F", - teller: "0x7C340Cf98B675740caB584B84bF51b564A92DCd1", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21191289, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "sBTCN", - vault: "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089", - accountant: "0x9A22F5dC4Ec86184D4771E620eb75D52E7b9E043", - teller: "0xeAd024098eE05e8e975043eCc6189b49CfBe35fd", - lens: "0x90983EBF38E981AE38f7Da9e71804380e316A396", - startBlock: 21335234, - baseAsset: ADDRESSES.ethereum.BTCN, - }, - { - name: "Ultra USD", - vault: "0xbc0f3B23930fff9f4894914bD745ABAbA9588265", - accountant: "0x95fE19b324bE69250138FE8EE50356e9f6d17Cfe", - teller: "0xc8c58d1567e1db8c02542e6df5241A0d71f91Fe2", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21340788, - baseAsset: ADDRESSES.ethereum.USDC, - }, - { - name: "scETH", - vault: ADDRESSES.sonic.scETH, - accountant: "0x3a592F9Ea2463379c4154d03461A73c484993668", - teller: "0x31A5A9F60Dc3d62fa5168352CaF0Ee05aA18f5B8", - lens: "0xE0eFE934DC4744090e8eF93f1D125E4015a857FE", - startBlock: 21363248, - baseAsset: ADDRESSES.ethereum.WETH, - }, - { - name: "scUSD", - vault: ADDRESSES.sonic.scUSD, - accountant: "0xA76E0F54918E39A63904b51F688513043242a0BE", - teller: "0x358CFACf00d0B4634849821BB3d1965b472c776a", - lens: "0xE0eFE934DC4744090e8eF93f1D125E4015a857FE", - startBlock: 21363112, - baseAsset: ADDRESSES.ethereum.USDC, - }, - { - name: "Usual Bera", - vault: "0x165c62448015d96c920dDA001Ae27733AF2C36c7", - accountant: "0x2E0e8cF5FE97423f6929403246eBa88de4b2811D", - teller: "0x16454063CA71085e0EF2622CA30d7c371441d1C8", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21518265, - baseAsset: ADDRESSES.ethereum.USDC, - }, - { - name: "Hourglass BTC", - vault: "0xAF135099ab69024701CEC9D726f26F508bd05837", - accountant: "0xB647Ed8F3292F3a53e0D451F5A9f8A2d89D80F95", - teller: "0xe6a0E8DFe6017bD6161cd98e0AE02A04FDe90de2", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21592384, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "Liquid Move ETH", - vault: "0xca8711dAF13D852ED2121E4bE3894Dae366039E4", - accountant: "0xb53244f7716dC83811C8fB1a91971dC188C1C5aA", - teller: "0x63ede83cbB1c8D90bA52E9497e6C1226a673e884", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21636060, - baseAsset: ADDRESSES.ethereum.WETH, - }, - { - name: "LBTCv Sonic", - vault: "0x309f25d839A2fe225E80210e110C99150Db98AAF", - accountant: "0x0639e239E417Ab9D1f0f926Fd738a012153930A7", - teller: "0x258f532CB41393c505554228e66eaf580B0171b2", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21746816, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "tacUSD", - vault: "0x699e04F98dE2Fc395a7dcBf36B48EC837A976490", - accountant: "0x58cD5e97ffaeA62986C86ac44bB8EF7092c7ff5B", - teller: "0xBbf9E8718D83CF67b568bfFd9d3034BfF02A0103", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21882726, - baseAsset: ADDRESSES.ethereum.USDC, - }, - { - name: "tacETH", - vault: "0x294eecec65A0142e84AEdfD8eB2FBEA8c9a9fbad", - accountant: "0x1683870f3347F2837865C5D161079Dc3fDbf1087", - teller: "0xe97365b41B340352d3d32CA2C7230330F19A1e73", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21882620, - baseAsset: ADDRESSES.ethereum.WETH, - }, - { - name: "tacBTC", - vault: "0x6Bf340dB729d82af1F6443A0Ea0d79647b1c3DDf", - accountant: "0xe4858a89d5602Ad30de2018C408d33d101F53d53", - teller: "0x7C75cbb851D321B2Ec8034D58A9B5075e991E584", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 21882704, - baseAsset: ADDRESSES.ethereum.WBTC, - }, - { - name: "Plasma USD", - vault: "0xd1074E0AE85610dDBA0147e29eBe0D8E5873a000", - accountant: "0x737f2522d09E58a3Ea9dcCFDB127dD0dF5eB3F18", - teller: "0x4E7d2186eB8B75fBDcA867761636637E05BaeF1E", - lens: "0xC67Af7c42b64c2Bb5BdF20716cCFa995a07F6903", - startBlock: 22639318, - baseAsset: ADDRESSES.ethereum.USDT, - }, - { - name: "Golden Goose", - vault: "0xef417FCE1883c6653E7dC6AF7c6F85CCDE84Aa09", - accountant: "0xc873F2b7b3BA0a7faA2B56e210E3B965f2b618f5", - teller: "0x0baAb6db8d694E1511992b504476ef4073fe614B", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 23231987, - baseAsset: ADDRESSES.ethereum.WETH, - } -]; - -module.exports = { - legacyVaultsEthereum, - boringVaultsV0Ethereum, -}; diff --git a/projects/veda/helper_methods.js b/projects/veda/helper_methods.js deleted file mode 100644 index 9c3589f991f..00000000000 --- a/projects/veda/helper_methods.js +++ /dev/null @@ -1,107 +0,0 @@ -async function sumLegacyTvl({ vaults, api, ownersToDedupe = [] }) { - const [assets, bals] = await Promise.all([ - api.multiCall({ - abi: "address:asset", - calls: vaults, - }), - api.multiCall({ - abi: "uint256:totalAssets", - calls: vaults, - }) - ]); - - await deduplicateAndAdd({ vaults, assets, bals, api, ownersToDedupe, type: 'Legacy' }); -} - -async function sumBoringTvl({ vaults, api, ownersToDedupe = [] }) { - - const boringCalls = vaults.map((vault) => ({ - target: vault.lens, - params: [vault.id, vault.accountant], - })); - - const boringBalances = await api.multiCall({ - abi: "function totalAssets(address boringVault, address accountant) view returns (address asset, uint256 assets)", - calls: boringCalls, - }); - - const assets = boringBalances.map(b => b.asset); - const bals = boringBalances.map(b => b.assets); - const vaultAddresses = vaults.map(v => v.id); - const lensAddresses = vaults.map(v => v.lens); - - await deduplicateAndAdd({ - vaults: vaultAddresses, - assets, - bals, - api, - ownersToDedupe, - type: 'Boring', - lensAddresses - }); -} - -async function deduplicateAndAdd({ vaults, assets, bals, api, ownersToDedupe = [], type, lensAddresses }) { - if (!vaults.length || !ownersToDedupe.length) { - assets.forEach((a, i) => api.add(a, bals[i])); - return; - } - - // Prepare all calls at once - const [sharesToIgnore, totalShares] = await Promise.all([ - // Get all shares to ignore in one batch - type === 'Boring' - ? api.multiCall({ - calls: vaults.flatMap((target, idx) => - ownersToDedupe.map(owner => ({ - target: lensAddresses[idx], - params: [owner.id, target], - })) - ), - abi: "function balanceOf(address account, address vault) view returns (uint256)", - }) - : api.multiCall({ - calls: vaults.flatMap(target => - ownersToDedupe.map(owner => ({ - target, - params: [owner.id], - })) - ), - abi: "erc20:balanceOf", - }), - // Get all total supplies in one batch - api.multiCall({ - calls: vaults.map(vault => ({ - target: vault, - })), - abi: "uint256:totalSupply", - }) - ]); - - // Process shares to ignore - const chunkedShares = chunk(sharesToIgnore, ownersToDedupe.length); - const summedShares = chunkedShares.map(shares => - shares.reduce((sum, share) => sum + Number(share), 0) - ); - - // Calculate ratios - const ratios = totalShares.map((share, i) => { - return 1 - summedShares[i] / share; - }); - - assets.forEach((a, i) => api.add(a, bals[i] * ratios[i])); -} - -// Helper function to chunk array -function chunk(array, size) { - const chunks = []; - for (let i = 0; i < array.length; i += size) { - chunks.push(array.slice(i, i + size)); - } - return chunks; -} - -module.exports = { - sumLegacyTvl, - sumBoringTvl, -}; \ No newline at end of file diff --git a/projects/veda/hyperevm_constants.js b/projects/veda/hyperevm_constants.js deleted file mode 100644 index b771fc2a8f3..00000000000 --- a/projects/veda/hyperevm_constants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Hyperevm = [ - { - name: "KHYPE", - vault: "0x9BA2EDc44E0A4632EB4723E81d4142353e1bB160", - accountant: "0x74392Fa56405081d5C7D93882856c245387Cece2", - teller: "0x29C0C36eD3788F1549b6a1fd78F40c51F0f73158", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 8440831, - baseAsset: ADDRESSES.hyperliquid.WHYPE, - }, -]; - -module.exports = { - boringVaultsV0Hyperevm, -}; diff --git a/projects/veda/index.js b/projects/veda/index.js deleted file mode 100644 index cb0b0e8690f..00000000000 --- a/projects/veda/index.js +++ /dev/null @@ -1,79 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const { legacyVaultsEthereum, boringVaultsV0Ethereum } = require("./ethereum_constants"); -const { boringVaultsV0Berachain } = require("./berachain_constants"); -const { boringVaultsV0Arbitrum } = require("./arbitrum_constants"); -const { boringVaultsV0Base } = require("./base_constants"); -const { boringVaultsV0Bnb } = require("./bnb_constants"); -const { boringVaultsV0Bob } = require("./bob_constants"); -const { boringVaultsV0Sonic } = require("./sonic_constants"); -const { boringVaultsV0Scroll } = require("./scroll_constants"); -const { sumLegacyTvl, sumBoringTvl } = require("./helper_methods"); -const { boringVaultsV0Hyperevm } = require("./hyperevm_constants"); -const { boringVaultsV0Plasma } = require("./plasma_constants"); - -// Returns list of vault addresses that are deployed based on their start block -function filterActiveLegacyVaults(vaults, blockHeight) { - return vaults - .filter((vault) => vault.startBlock <= blockHeight) - .map((vault) => vault.id) - .filter(Boolean); -} - -// Returns a list of active boring vault objects -function filterActiveBoringVaults(vaults, blockHeight) { - return vaults - .filter((vault) => vault.startBlock <= blockHeight && vault.vault) - .map((vault) => ({ - id: vault.vault, - lens: vault.lens, - accountant: vault.accountant, - teller: vault.teller - })); -} - -async function chainTvl(api, boringVaults, legacyVaults = []) { - const block = await api.getBlock() - - const activeBoringVaults = filterActiveBoringVaults(boringVaults, block); - const activeLegacyVaultAddresses = legacyVaults.length > 0 - ? filterActiveLegacyVaults(legacyVaults, block) - : []; - - const allVaults = [...(legacyVaults || []), ...activeBoringVaults].filter(v => v.id); - - if (activeLegacyVaultAddresses.length > 0) { - await sumLegacyTvl({ - api, - vaults: activeLegacyVaultAddresses, - ownersToDedupe: allVaults, - }); - } - - if (activeBoringVaults.length > 0) { - await sumBoringTvl({ - api, - vaults: activeBoringVaults, - ownersToDedupe: allVaults, - }); - } - - return api.getBalances(); -} - -module.exports = { - timetravel: true, - misrepresentedTokens: false, - start: 1710745200, - doublecounted: true, - ["ethereum"]: { tvl: (api) => chainTvl(api, boringVaultsV0Ethereum, legacyVaultsEthereum) }, - ["berachain"]: { tvl: (api) => chainTvl(api, boringVaultsV0Berachain) }, - ["arbitrum"]: { tvl: (api) => chainTvl(api, boringVaultsV0Arbitrum) }, - ["base"]: { tvl: (api) => chainTvl(api, boringVaultsV0Base) }, - ["bsc"]: { tvl: (api) => chainTvl(api, boringVaultsV0Bnb) }, - ["bob"]: { tvl: (api) => chainTvl(api, boringVaultsV0Bob) }, - ["sonic"]: { tvl: (api) => chainTvl(api, boringVaultsV0Sonic) }, - ["scroll"]: { tvl: (api) => chainTvl(api, boringVaultsV0Scroll) }, - ["hyperliquid"]: { tvl: (api) => chainTvl(api, boringVaultsV0Hyperevm) }, - ["plasma"]: { tvl: (api) => chainTvl(api, boringVaultsV0Plasma) } -}; diff --git a/projects/veda/plasma_constants.js b/projects/veda/plasma_constants.js deleted file mode 100644 index 2133c41e948..00000000000 --- a/projects/veda/plasma_constants.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Plasma = [ - { - name: "Plasma USD", - vault: "0xd1074E0AE85610dDBA0147e29eBe0D8E5873a000", - accountant: "0x737f2522d09E58a3Ea9dcCFDB127dD0dF5eB3F18", - teller: "0x4E7d2186eB8B75fBDcA867761636637E05BaeF1E", - lens: "0xC67Af7c42b64c2Bb5BdF20716cCFa995a07F6903", - startBlock: 687884, - baseAsset: ADDRESSES.plasma.USDT0 - }, -]; - -module.exports = { - boringVaultsV0Plasma, -}; diff --git a/projects/veda/scroll_constants.js b/projects/veda/scroll_constants.js deleted file mode 100644 index c8b6895fc6a..00000000000 --- a/projects/veda/scroll_constants.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Scroll = [ - { - name: "Liquid ETH", - vault: "0xf0bb20865277aBd641a307eCe5Ee04E79073416C", - accountant: "0x0d05D94a5F1E76C18fbeB7A13d17C8a314088198", - teller: "0x5c135e8eC99557b412b9B4492510dCfBD36066F5", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 12748860, - baseAsset: ADDRESSES.scroll.WETH, - }, - { - name: "Liquid USD", - vault: "0x08c6F91e2B681FaF5e17227F2a44C307b3C1364C", - accountant: "0xc315D6e14DDCDC7407784e2Caf815d131Bc1D3E7", - teller: "0x221Ea02d409074546265CCD1123050F4D498ef64", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 12749211, - baseAsset: ADDRESSES.scroll.USDC_e, - }, - { - name: "Liquid BTC", - vault: "0x5f46d540b6eD704C3c8789105F30E075AA900726", - accountant: "0xEa23aC6D7D11f6b181d6B98174D334478ADAe6b0", - teller: "0x9E88C603307fdC33aA5F26E38b6f6aeF3eE92d48", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 13951017, - baseAsset: ADDRESSES.scroll.WBTC, - }, - { - name: "eBTC", - vault: ADDRESSES.ethereum.EBTC, - accountant: "0x1b293DC39F94157fA0D1D36d7e0090C8B8B8c13F", - teller: "0xe19a43B1b8af6CeE71749Af2332627338B3242D1", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 12677428, - baseAsset: ADDRESSES.scroll.WBTC, - }, - { - name: "eUSD", - vault: ADDRESSES.ethereum.EUSD, - accountant: "0xEB440B36f61Bf62E0C54C622944545f159C3B790", - teller: "0xCc9A7620D0358a521A068B444846E3D5DebEa8fA", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 12775217, - baseAsset: ADDRESSES.scroll.USDC_e, - }, -]; - -module.exports = { - boringVaultsV0Scroll, -}; \ No newline at end of file diff --git a/projects/veda/sonic_constants.js b/projects/veda/sonic_constants.js deleted file mode 100644 index 5070eb331f8..00000000000 --- a/projects/veda/sonic_constants.js +++ /dev/null @@ -1,44 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const boringVaultsV0Sonic = [ - { - name: "Sonic scETH", - vault: ADDRESSES.sonic.scETH, - accountant: "0x3a592F9Ea2463379c4154d03461A73c484993668", - teller: "0x31A5A9F60Dc3d62fa5168352CaF0Ee05aA18f5B8", - lens: "0xE0eFE934DC4744090e8eF93f1D125E4015a857FE", - startBlock: 591869, - baseAsset: ADDRESSES.sonic.WETH, - }, - { - name: "Sonic scUSD", - vault: ADDRESSES.sonic.scUSD, - accountant: "0xA76E0F54918E39A63904b51F688513043242a0BE", - teller: "0x358CFACf00d0B4634849821BB3d1965b472c776a", - lens: "0xE0eFE934DC4744090e8eF93f1D125E4015a857FE", - startBlock: 588029, - baseAsset: ADDRESSES.sonic.USDC_e, - }, - { - name: "Sonic scBTC", - vault: "0xBb30e76d9Bb2CC9631F7fC5Eb8e87B5Aff32bFbd", - accountant: "0xC1a2C650D2DcC8EAb3D8942477De71be52318Acb", - teller: "0xAce7DEFe3b94554f0704d8d00F69F273A0cFf079", - lens: "0xE0eFE934DC4744090e8eF93f1D125E4015a857FE", - startBlock: 6833997, - baseAsset: ADDRESSES.sonic.LBTC, - }, - { - name: "Sonic LBTC Vault", - vault: "0x309f25d839A2fe225E80210e110C99150Db98AAF", - accountant: "0x0639e239E417Ab9D1f0f926Fd738a012153930A7", - teller: "0x258f532CB41393c505554228e66eaf580B0171b2", - lens: "0x5232bc0F5999f8dA604c42E1748A13a170F94A1B", - startBlock: 6794046, - baseAsset: ADDRESSES.sonic.LBTC, - } -]; - -module.exports = { - boringVaultsV0Sonic, -}; \ No newline at end of file diff --git a/projects/vee-finance/index.js b/projects/vee-finance/index.js deleted file mode 100644 index cc7de2d88ea..00000000000 --- a/projects/vee-finance/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { compoundExports2, methodology } = require('../helper/compound') - -module.exports = { - methodology, -} - -const pools = { - avax: { - pools: [ - ['0xA67DFeD73025b0d61F2515c531dd8D25D4Cfd0Db'], - ['0xAF7f6F7a1295dEDF52a01F5c3f04Ad1b502CdA6a'], - ['0x43AAd7d8Bc661dfA70120865239529ED92Faa054', '0x6481490DBb6Bd0e8b7CB7E1317470f6d08aDa5A2'], - ['0xeEf69Cab52480D2BD2D4A3f3E8F5CcfF2923f6eF', '0x125605c515e3f75CAd62d3613c97A76F13d73A64'], - ], - }, - heco: { - pools: [ - ['0x484C6e804cD4Cc27fCFbCf06748d6b4BCA47db84'], - ['0x2a144ACaef8fb9258e4f2c2018945a76fE7342E2', '0x0F75aBfef98dAaa7A8170ddA97c8100a65ABA3cC'], - ], - }, -} - -function getTvl(chain) { - const config = pools[chain] ?? { pools: [] }; - const tvls = config.pools.map(([comptroller, cether]) => compoundExports2({ comptroller, cether })); - let tvl = sdk.util.sumChainTvls(tvls.map((t) => t.tvl)) - let borrowed = sdk.util.sumChainTvls(tvls.map((t) => t.borrowed)) - return { tvl, borrowed } -} - -Object.keys(pools).forEach(chain => module.exports[chain] = getTvl(chain)) - -module.exports.avax.borrowed = () => ({}) \ No newline at end of file diff --git a/projects/vega-protocol/index.js b/projects/vega-protocol/index.js deleted file mode 100644 index 1e04155ce6b..00000000000 --- a/projects/vega-protocol/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const assetListedEvent = "event Asset_Listed(address indexed asset_source, bytes32 indexed vega_asset_id, uint256 nonce)" -const assetListedTopic = "0x4180d77d05ff0d31650c548c23f2de07a3da3ad42e3dd6edd817b438a150452e" -const BigNumber = require("bignumber.js"); - -const config = { - ethereum: { - fromBlock: 17343884, - vega: '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', - stakingContract: '0x195064D33f09e0c42cF98E665D9506e0dC17de68', - assetPool: '0xA226E2A13e07e750EfBD2E5839C5c3Be80fE7D4d', - bridge: '0x23872549cE10B40e31D6577e0A920088B0E0666a', - vestingContract: '0x23d1bFE8fA50a167816fBD79D7932577c06011f4' - }, - arbitrum: { - fromBlock: 213213680, - bridge: "0x475B597652bCb2769949FD6787b1DC6916518407", - assetPool: "0xCc006887FE2bfABB535030b3a9877Bb8C1e35201" - } -} - -const contractAbis = { - "totalStaked": "function total_staked() view returns (uint256)", - "balanceOf": "function balanceOf(address account) view returns (uint256)" -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - const { bridge, fromBlock, vega, stakingContract, assetPool, vestingContract } = config[chain] - const sums = { - tvl: async (api) => { - const listedAssets = await getLogs({ - api, - target: bridge, - topics: [assetListedTopic], - eventAbi: assetListedEvent, - onlyArgs: true, - fromBlock, - }) - const blacklistedTokens = [] - if (vega) blacklistedTokens.push(vega) - return sumTokens2({ api, blacklistedTokens, owner: assetPool, tokens: listedAssets.map(i => i.asset_source) }) - } - } - - if (vestingContract && stakingContract) { - sums.staking = async (_, _b, cb, { chain, block, api } = {}) => { - const vegaStakedInVesting = await api.call({ - abi: contractAbis.totalStaked, - target: vestingContract - }) - - const vegaStakedInStaking = await api.call({ - abi: contractAbis.balanceOf, - target: vega, - params: stakingContract - }) - - return { - '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e': BigNumber(vegaStakedInVesting).plus(BigNumber(vegaStakedInStaking)).toFixed(0) - } - } - } - module.exports[chain] = sums -}) - diff --git a/projects/veil/index.js b/projects/veil/index.js deleted file mode 100644 index 01dfd156a4f..00000000000 --- a/projects/veil/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') - -// Public Deposit Pools -const DEPOSIT_POOL_PUBLIC_005_ETH = '0x6c206B5389de4e5a23FdF13BF38104CE8Dd2eD5f' -const DEPOSIT_POOL_PUBLIC_05_ETH = '0xC53510D6F535Ba0943b1007f082Af3410fBeA4F7' - -// Verified Deposit Pools -const DEPOSIT_POOL_VERIFIED_001_ETH = '0x844bB2917dD363Be5567f9587151c2aAa2E345D2' -const DEPOSIT_POOL_VERIFIED_01_ETH = '0xD3560eF60Dd06E27b699372c3da1b741c80B7D90' -const DEPOSIT_POOL_VERIFIED_1_ETH = '0x9cCdFf5f69d93F4Fcd6bE81FeB7f79649cb6319b' -const DEPOSIT_POOL_VERIFIED_200_USDC = '0xA4dB5eC5d0a2ee01CcD8D6e2e53224CF4E81A9b3' -const DEPOSIT_POOL_VERIFIED_ANY_AMOUNT_WETH = '0x293dcda114533ff8f477271c5ca517209ffdeee7' - -// VEIL staking contract -const VEIL_TOKEN = '0x767A739D1A152639e9Ea1D8c1BD55FDC5B217D7f' -const VEIL_STAKING_CONTRACT = '0x3225b5a7c842cC227C773636F5C574443C62bb86' - -async function tvl(api) { - const ethPools = [ - DEPOSIT_POOL_PUBLIC_005_ETH, - DEPOSIT_POOL_PUBLIC_05_ETH, - DEPOSIT_POOL_VERIFIED_001_ETH, - DEPOSIT_POOL_VERIFIED_01_ETH, - DEPOSIT_POOL_VERIFIED_1_ETH - - ] - const usdcPools = [DEPOSIT_POOL_VERIFIED_200_USDC] - - const wethPools = [DEPOSIT_POOL_VERIFIED_ANY_AMOUNT_WETH] - - // ETH deposits - await api.sumTokens({ owners: ethPools, tokens: [ADDRESSES.null] }) - - // USDC deposits - await api.sumTokens({ owners: usdcPools, tokens: [ADDRESSES.base.USDC] }) - - // WETH deposits - await api.sumTokens({ owners: wethPools, tokens: [ADDRESSES.base.WETH] }) -} - -module.exports = { - base: { - tvl, - staking: staking(VEIL_STAKING_CONTRACT, VEIL_TOKEN) - } -} \ No newline at end of file diff --git a/projects/vela-exchange/index.js b/projects/vela-exchange/index.js deleted file mode 100644 index 6d21235b051..00000000000 --- a/projects/vela-exchange/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const sdk = require("@defillama/sdk"); -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking") -const { graphQuery } = require('../helper/http') - -const VELA = '0x088cd8f5eF3652623c22D48b1605DCfE860Cd704' - -const arbitrumEndpoint = 'https://api.goldsky.com/api/public/project_clu01p4nr68r301pze2tj4sh7/subgraphs/vela-arbitrum/mainnet/gn' -const baseEndpoint = 'https://api.goldsky.com/api/public/project_clu01p4nr68r301pze2tj4sh7/subgraphs/vela-base/mainnet/gn' - -async function velaStaking(api, endpoint) { - const query = ` - query { - poolInfos(where: { - id: "all" - }) { - pid1 - pid2 - pid3 - } - } - `; - const graphRes = (await graphQuery(endpoint, query)).poolInfos.find(x => true); - api.add(VELA, graphRes?.pid2); - api.add(VELA, graphRes?.pid3); -} - -module.exports = { - methodology: "Counts USDC deposited to trade and to mint VLP. Staking counts VELA and esVELA deposited to earn esVELA", - arbitrum: { - tvl: staking('0xC4ABADE3a15064F9E3596943c699032748b13352', [ADDRESSES.arbitrum.USDC_CIRCLE,ADDRESSES.arbitrum.USDC, "0x724dc807b04555b71ed48a6896b6f41593b8c637"]), - staking: async (api) => velaStaking(api,arbitrumEndpoint) - }, - base: { - tvl: staking("0xC4ABADE3a15064F9E3596943c699032748b13352", ADDRESSES.base.USDbC), - staking: async (api) => velaStaking(api,baseEndpoint) - }, - hallmarks: [ - ['2023-04-13', 'Refunded tokens to VLP holders & traders'], - [1693926000, 'Launched on Base Chain'], - [1721314800, 'Implemented Aave VLP supply integration'], - [1726596000, 'Burned 65m Vela tokens'] - ], -} diff --git a/projects/velar-amm/api.js b/projects/velar-amm/api.js deleted file mode 100644 index 643ecf2a29b..00000000000 --- a/projects/velar-amm/api.js +++ /dev/null @@ -1,50 +0,0 @@ -const { sumTokens } = require('../helper/chain/stacks') -const { call } = require('../helper/chain/stacks-api') -const { transformDexBalances } = require('../helper/portedTokens') -const { sleep } = require('../helper/utils') -const sdk = require('@defillama/sdk') - -const factory = 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-core' -const factory2 = 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-registry_v1_0_0' -const stableFactory = 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.curve-registry_v1_1_0' - -module.exports = { - stacks: { tvl } -} - -async function tvl(api) { - await uniTvl(api, stableFactory, { isStable: true }) - await uniTvl(api, factory) - await uniTvl(api, factory2, { isVersion2: true }) - return api.getBalances() -} - - -async function uniTvl(api, factory, { isStable = false, isVersion2 = false } = {}) { - const data = [] - const pairCount = +(await call({ target: factory, abi: 'get-nr-pools' })).toString() - for (let i = 1; i <= pairCount; i++) { - let res - if (isVersion2) { - const pairData = res = await call({ target: factory, abi: 'get-pool', inputArgs: [{ type: 'uint', value: i }] }) - res = await call({ target: pairData.value.contract.value, abi: 'do-get-pool'}) - } else { - res = await call({ target: factory, abi: 'do-get-pool', inputArgs: [{ type: 'uint', value: i }] }) - } - - const { token0, token1, reserve0, reserve1, ...rest } = res - if (isStable) { - await sumTokens({ owner: rest.contract.value, balances: api.getBalances() }) - } - else - data.push({ - token0: token0.value, - token1: token1.value, - token0Bal: reserve0?.value, - token1Bal: reserve1?.value, - }) - sdk.log(`velar-amm: ${i}/${pairCount}`) - await sleep(3100) - } - return transformDexBalances({ chain: 'stacks', data, balances: api.getBalances() }) -} \ No newline at end of file diff --git a/projects/velar-amm/index.js b/projects/velar-amm/index.js deleted file mode 100644 index 69dcfb5e7a3..00000000000 --- a/projects/velar-amm/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("velar-amm", ['stacks']), -} diff --git a/projects/velaro/index.js b/projects/velaro/index.js deleted file mode 100644 index 7c24d809765..00000000000 --- a/projects/velaro/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -module.exports = { - hallmarks: [ - [1668556800, "USDV hack"] - ], - velas: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.velas.WVLX, '0xbd183a60274289A7c20250a890500D2a37dEf319'], // VLX - ['0xaBf26902Fd7B624e0db40D31171eA9ddDf078351', '0x2Fee5293050FFfC3bd583d59f077e2b4900F57c8'], // WAG - [ADDRESSES.moonriver.ETH, '0x899F26dc6Bc085fb9cB82AAdF25Db8820F272ED4'], // WBTC - ['0x7b714BC5dD176EaA198fe6C07E415a87A40dc858', '0x7171d1E1097d726E5f4BBc8236A8E108E21024e3'], // WAG_VLXVDGT - ['0x72eB7CA07399Ec402c5b7aa6A65752B6A1Dc0C27', '0x1e217990818518Dc37B0fFA2ffE3AA110b02F18c'], // ASTRO - [ADDRESSES.velas._BNB, '0xc0D16c7Cd5Fc18526Dc78Ea530e56129EB979C96'], // BNB - [ADDRESSES.velas.FTM, '0x92C2cA50f74A8Fe36b4DCffB2cc6A274fA61CB34'], // FTM - [ADDRESSES.velas._MATIC, '0xd10f8CD5d56aaa58f59B25C928f372F66899e9B3'], // MATIC - [ADDRESSES.velas.BUSD, '0x4368d9F91C40EA8Ac9F11A4f9289889f56D32Df8'], // BUSD - ], - resolveLP: true, - }) - } -} - -module.exports.deadFrom = '2023-02-10' \ No newline at end of file diff --git a/projects/velaspad.js b/projects/velaspad.js deleted file mode 100644 index 6406883cc23..00000000000 --- a/projects/velaspad.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require('./helper/staking') - -module.exports = { - velas: { - tvl: async _ => ({}), - staking: staking('0xdb0422A1C78C2064Ce5Af1B75412294F5B6D7Edf', '0xa065e0858417dfc7abc6f2bd4d0185332475c180') - } -} \ No newline at end of file diff --git a/projects/velhalla.js b/projects/velhalla.js deleted file mode 100644 index be54a03c1f3..00000000000 --- a/projects/velhalla.js +++ /dev/null @@ -1,8 +0,0 @@ -const { staking } = require('./helper/staking') - -module.exports = { - velas: { - tvl: () => ({}), - staking: staking('0x7DeD7f9D3dF541190F666FB6897483e46D54e948', '0x8d9fb713587174ee97e91866050c383b5cee6209'), - }, -} \ No newline at end of file diff --git a/projects/velo/index.js b/projects/velo/index.js deleted file mode 100644 index 38414a3ec48..00000000000 --- a/projects/velo/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const AprFixLockedAddresses = [ - "0x5e10B2247a430f97c94205894B9185F687A32345", - "0x13c5C83cf9B9aC68FA18272B756Bce1635196132", - "0x022af5ce19720a938Ba8C9E66FdF1Da1606298eF", - "0x37cCcC19acAB91E8bC6074Cb4EaaFef1185ee1Bb", - "0x051bB49EdB865Bb4cC9277BbB132C922403B07e4", - "0x2703E5D3709782e85957E40a9c834AFD4D45caF9", - "0x5935DC3250a0d8a0aC7c2e4AB925C4FEf2F8FDf8", - "0x59098E3c6C5Bcbecb4117C6eF59b341d1F0F3083", - "0xDa000FA80C5E9cb4E24a66bFF6a56cC454422e78", - "0xEfA6EAbcb5fa35827DDB236046B3DDB6d257022B", - "0xc12A93bf62CfD50620BCfDDD903913903DF647B4", - "0xc322a2110958c1365e88D88aef65Ebdf335b6E67", - "0x7dd617eacd7Fd35f69275f943Ff82218213796b7", - "0xba5640094E940B32159daf38Ab8B86fE4D788a3C", - "0x4191754eCB1C460B82818beAA5fb6Ce7728bEbE8" -]; - -const AprFixLockWithChangeableRatioTvl = [ - "0xEF03B465A6D7baDF8727819104d29F0405d1Ce65" -] - -const OldFarmContractAddress = "0x33472144Eaa7540E7badA5a1ab7Da372e48a9252" -const CurrentFarmContractAddress = "0xDD3e2da1d017A564b8225bc8e92f2970cfa61945" - -const VELO = '0xf486ad071f3bee968384d2e39e2d8af0fcf6fd46' - -async function staking(api) { - const totalStaked = await api.multiCall({ abi: 'uint256:totalStaked', calls: AprFixLockedAddresses.concat(AprFixLockWithChangeableRatioTvl) }) - api.add(VELO, totalStaked) - const tokens = [ - "0x3c8EC1728C080f76dc83baA5d51A0cC367B4A35F", // VELO_DEPRECATED_TOKEN - "0xf486ad071f3bee968384d2e39e2d8af0fcf6fd46", // VELO_TOKEN - "0xC2d4A3709e076A7A3487816362994a78ddaeabB6", // EVRY_TOKEN - ] - return api.sumTokens({ owners: [OldFarmContractAddress, CurrentFarmContractAddress], tokens }) -} - -module.exports = { - methodology: 'Sums the total value locked of all farms and locked pools in Velo Finance.', - bsc: { - tvl: getUniTVL({ factory: '0xa328180188a30feF1d82c9FC916E627DB6E17238', blacklistedTokens: [VELO] }), - staking, - }, -}; diff --git a/projects/velocimeter-v2/index.js b/projects/velocimeter-v2/index.js deleted file mode 100644 index 8b973d0e350..00000000000 --- a/projects/velocimeter-v2/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - canto: { - tvl: getUniTVL({ - factory: '0xF80909DF0A01ff18e4D37BF682E40519B21Def46', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - }, - pulse: { - tvl: getUniTVL({ - factory: '0x6B4449C74a9aF269A5f72B88B2B7B8604685D9B9', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - }, - base: { - tvl: getUniTVL({ - factory: '0xe21Aac7F113Bd5DC2389e4d8a8db854a87fD6951', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - }, - mantle: { - tvl: getUniTVL({ - factory: '0x99F9a4A96549342546f9DAE5B2738EDDcD43Bf4C', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - } -} diff --git a/projects/velocimeter-v4/index.js b/projects/velocimeter-v4/index.js deleted file mode 100644 index abdf1edba17..00000000000 --- a/projects/velocimeter-v4/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - iotaevm: { - tvl: getUniTVL({ - factory: '0x10A288eF87586BE54ea690998cAC82F7Cc90BC50', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - }, -} diff --git a/projects/velocore-v2/index.js b/projects/velocore-v2/index.js deleted file mode 100644 index f1967b859e5..00000000000 --- a/projects/velocore-v2/index.js +++ /dev/null @@ -1,70 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - linea: { - factory: '0xaA18cDb16a4DD88a59f4c2f45b5c91d009549e06', vault: '0x1d0188c4B276A09366D05d6Be06aF61a73bC7535', blacklistedTokens: [ - '0xcc22F6AA610D1b2a0e89EF228079cB3e1831b1D1', - '0xAeC06345b26451bdA999d83b361BEaaD6eA93F87', - ], - }, - telos: { - factory: '0x5123EE9A02b7435988D4B120633d045EF6a0159B', vault: '0x0117A9094c29e5A3D24ae608264Ce63B15b631d9', blacklistedTokens: [ - '0xe65B77F52d8645EcaD3EdfDf4D3E5b1A9D31f988', - '0x68B1e7eFee0b4ffEC938DD131458567157B4D45d', - ], - }, - era: { - factory: '0xf55150000aac457eCC88b34dA9291e3F6E7DB165', vault: '0xf5E67261CB357eDb6C7719fEFAFaaB280cB5E2A6', blacklistedTokens: [ - '0x99bBE51be7cCe6C8b84883148fD3D12aCe5787F2', - '0x3cD3e41fF4B95a8DdC915F3c7615AB6f2B478c33', - ], - }, -} - -module.exports = { - methodology: "counts tokens in the vault.", -}; - -const cannonicalPoolsAbi = "function canonicalPools(address user, uint256 begin, uint256 maxLength) returns (tuple(address gauge, tuple(address pool, string poolType, bytes32[] lpTokens, uint256[] mintedLPTokens, bytes32[] listedTokens, uint256[] reserves, bytes poolParams) poolData, bool killed, uint256 totalVotes, uint256 userVotes, uint256 userClaimable, uint256 emissionRate, uint256 userEmissionRate, uint256 stakedValueInHubToken, uint256 userStakedValueInHubToken, uint256 averageInterestRatePerSecond, uint256 userInterestRatePerSecond, bytes32[] stakeableTokens, uint256[] stakedAmounts, uint256[] userStakedAmounts, bytes32[] underlyingTokens, uint256[] stakedUnderlying, uint256[] userUnderlying, tuple(bytes32[] tokens, uint256[] rates, uint256[] userClaimable, uint256[] userRates)[] bribes)[] gaugeDataArray)" - -Object.keys(config).forEach(chain => { - const { factory, blacklistedTokens, vault, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let a - if (chain === 'telos') { - a = await api.multiCall({ abi: cannonicalPoolsAbi, calls: [...Array(5).keys()].map(i => ({ params: [factory, i, 2]})), target: factory}) - a = a.flat() - } else { - if (chain === 'era') { - - let size = 20 - a = [] - let currentAsize - do { - currentAsize = a.length - const b = await api.call({ - abi: cannonicalPoolsAbi, - target: factory, - params: [factory, a.length, size] - }) - a = a.concat(b) - } while (currentAsize < a.length) - } else { - a = await api.call({ - abi: cannonicalPoolsAbi, - target: factory, - params: [factory, 0, 1000] - }) - } - } - const b = await api.call({ - abi: "function wombatGauges(address user) returns (tuple(address gauge, tuple(address pool, string poolType, bytes32[] lpTokens, uint256[] mintedLPTokens, bytes32[] listedTokens, uint256[] reserves, bytes poolParams) poolData, bool killed, uint256 totalVotes, uint256 userVotes, uint256 userClaimable, uint256 emissionRate, uint256 userEmissionRate, uint256 stakedValueInHubToken, uint256 userStakedValueInHubToken, uint256 averageInterestRatePerSecond, uint256 userInterestRatePerSecond, bytes32[] stakeableTokens, uint256[] stakedAmounts, uint256[] userStakedAmounts, bytes32[] underlyingTokens, uint256[] stakedUnderlying, uint256[] userUnderlying, tuple(bytes32[] tokens, uint256[] rates, uint256[] userClaimable, uint256[] userRates)[] bribes)[] gaugeDataArray)", - target: factory, - params: [factory] - }); - let tokens = a.concat(b).map(g => g.poolData.listedTokens).flat().map(i => '0x' + i.slice(2 + 24)) - return sumTokens2({ owner: vault, tokens, api, blacklistedTokens, }) - } - } -}) diff --git a/projects/velocore/index.js b/projects/velocore/index.js deleted file mode 100644 index 68510d13c4b..00000000000 --- a/projects/velocore/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -const { stakings } = require("../helper/staking"); -const { stakingPricedLP } = require('../helper/staking'); -const sdk = require('@defillama/sdk') -const factv1=getUniTVL({ factory: '0xF5719b1Ea3C9bF6491E22C49379E31060d0FbFc1', useDefaultCoreAssets: true, hasStablePools: true }); -const factv2=getUniTVL({ factory: '0xE140EaC2bB748c8F456719a457F26636617Bb0E9', useDefaultCoreAssets: true, hasStablePools: true }); - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: sdk.util.sumChainTvls([factv1, factv2]), - staking: stakings(["0xbdE345771Eb0c6adEBc54F41A169ff6311fE096F"], ["0x85D84c774CF8e9fF85342684b0E795Df72A24908"], 'era','velocore',18) - }, - methodology: "Counts liquidity in pools", -}; \ No newline at end of file diff --git a/projects/velodrome-CL/index.js b/projects/velodrome-CL/index.js deleted file mode 100644 index 78f797eae1b..00000000000 --- a/projects/velodrome-CL/index.js +++ /dev/null @@ -1,27 +0,0 @@ - -const { getUniTVL } = require('../helper/unknownTokens.js') -const config = { - optimism: { factory: '0xCc0bDDB707055e04e497aB22a59c2aF4391cd12F' }, - lisk: { }, - fraxtal: { }, - //bob: {}, - mode: { }, - ink: { }, - soneium: { }, - unichain: { }, - swellchain: { }, - celo: { }, - sseed: { }, -} - -Object.keys(config).forEach(chain => { - const { factory = '0x04625B046C69577EfC40e6c0Bb83CDBAfab5a55F' } = config[chain] - module.exports[chain] = { - tvl: getUniTVL({ - factory, fetchBalances: true, abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: "function allPools(uint) view returns (address)", - } - }) - } -}) diff --git a/projects/velodrome-v2/index.js b/projects/velodrome-v2/index.js deleted file mode 100644 index 493fc3fc3a2..00000000000 --- a/projects/velodrome-v2/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens.js') - -const abis = { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', -} -const tvl = uniTvlExport('chain', "0x31832f2a97Fd20664D76Cc421207669b55CE4BC0", { abis, hasStablePools: true, permitFailure: true, }).chain.tvl - -module.exports = { - misrepresentedTokens: true, - optimism: { - tvl: uniTvlExport('chain', "0xF1046053aa5682b4F9a81b5481394DA16BE5FF5a", { abis, hasStablePools: true, permitFailure: true, }).chain.tvl, - }, - mode: { tvl }, - bob: { tvl }, - lisk: { tvl }, - fraxtal: { tvl }, - ink: { tvl }, - soneium: { tvl }, - sseed: { tvl }, - unichain: { tvl }, - swellchain: { tvl }, - hallmarks: [ - [1687465883, "v2 Migration on OP Mainnet"], // https://twitter.com/VelodromeFi/status/1671979216039202816 - ] -} diff --git a/projects/velodrome/index.js b/projects/velodrome/index.js deleted file mode 100644 index c1fcf3249fb..00000000000 --- a/projects/velodrome/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'optimism': '0x25CbdDb98b35ab1FF77413456B31EC81A6B6B746' -}, { hasStablePools: true, hallmarks:[ - [1657760400, "First OP grant awarded"], - [1659618000, "Loss $350k Operational Funds"], - ] }) \ No newline at end of file diff --git a/projects/velvet-capital-v2/index.js b/projects/velvet-capital-v2/index.js deleted file mode 100644 index 886462ae45b..00000000000 --- a/projects/velvet-capital-v2/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const { sumTokens2, } = require('../helper/unwrapLPs') - -async function tvl(api) { - const indexes = await api.fetchList({ lengthAbi: 'uint256:indexId', itemAbi: 'function getIndexList(uint256) view returns (address)', target: config[api.chain] }) - const [tokens, vaults] = await Promise.all([ - api.multiCall({ abi: 'address[]:getTokens', calls: indexes }), - api.multiCall({ abi: 'address:vault', calls: indexes }), - ]) - - const ownerTokens = tokens.map((tokens, i) => [tokens, vaults[i]]); - return sumTokens2({ api, ownerTokens, resolveLP: true }); -} - -module.exports = { - methodology: 'calculates overall value deposited across different protocol portfolios', -} - -const config = { - arbitrum: '0xc4209197ebC3165863d62c4c340C113620414d97', - bsc: '0xE61472Ce45e559830ECF12F6a215Cd732F4D798B', -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/velvet-capital-v3/index.js b/projects/velvet-capital-v3/index.js deleted file mode 100644 index 069fad8bd30..00000000000 --- a/projects/velvet-capital-v3/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - base: { addresses: ['0xf93659fb357899e092813bc3a2959ceDb3282a7f'], blacklistedTokens: [ADDRESSES.bsc.USDT, "0x96af5739ca66ca55ab71ac9f308720d5044995ee","0xca4f1536cd29d42bcbc8211f1b621ba9e817433f", "0x4da07a07f40f877a587acfcdbb0c84c73fdf2e92"]}, - bsc: { addresses: ['0xA1fe1C37Bf899C7F7521082C002dFA4fEbAaA8dd'], - blacklistedTokens: [ADDRESSES.optimism.WETH_1] }, - ethereum: { addresses: [ - '0x7c530c9ED5E734964453Ce62Ae9C4e31a247738B', - '0xEADd9EEF6F21EaE3d0f1c6031F0F455522a081C2', - ] -} -} - -const abi = { - getTokens: 'address[]:getTokens', - vault: 'address:vault' -} - -async function tvl(api, addresses, blacklistedTokens) { - - const indexes = []; - - for (const address of addresses) { - const list = await api.fetchList({ - target: address, - lengthAbi: 'uint256:portfolioId', - itemAbi: 'function getPortfolioList(uint256) view returns (address)', - }); - indexes.push(...list); - } - // const indexes = await api.fetchList({ lengthAbi: 'uint256:portfolioId', itemAbi: 'function getPortfolioList(uint256) view returns (address)', target: address }) - const [tokens, vaults] = await Promise.all([ - api.multiCall({ abi: abi.getTokens, calls: indexes }), - api.multiCall({ abi: abi.vault, calls: indexes }), - ]) - - const ownerTokens = indexes.map((_, i) => { - const assets = tokens[i] - const vault = vaults[i] - if (!assets || !assets.length || !vault) return null - return [assets, vault] - }).filter(Boolean) - - return sumTokens2({ api, ownerTokens, resolveLP: true, blacklistedTokens, permitFailure: true }); -} - -module.exports = { methodology: 'calculates overall value deposited across different protocol portfolios' } - -Object.keys(config).forEach(chain => { - const { addresses, blacklistedTokens } = config[chain] - module.exports[chain] = { tvl: (api) => tvl(api, addresses, blacklistedTokens) } -}) diff --git a/projects/velvet-capital/index.js b/projects/velvet-capital/index.js deleted file mode 100644 index a805844df84..00000000000 --- a/projects/velvet-capital/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -async function tvl(api) { - const response = await getConfig('velvet-capital', "https://defivas.xyz/api/portfolio") - const indexes = response.data; - const ownerTokens = [] - const [vaults, tokens, libraries] = await Promise.all([ - api.multiCall({ abi: 'address:vault', calls: indexes }), - api.multiCall({ abi: 'address[]:getTokens', calls: indexes }), - api.multiCall({ abi: 'address:indexSwapLibrary', calls: indexes }), - ]) - - const tokenMetadatas = await api.multiCall({ abi: 'address:tokenMetadata', calls: libraries }) - - await Promise.all(tokens.map(async (tokens, i) => { - const vault = vaults[i] - const tokenMetadata = tokenMetadatas[i] - const tokenRes = await api.multiCall({ abi: 'function vTokens(address) public view returns(address)', target: tokenMetadata, calls: tokens }) - const vaultTokens = tokenRes.map((t, j) => (t !== nullAddress) ? t : tokens[j]) - ownerTokens.push([vaultTokens, vault]) - })) - return sumTokens2({ api, ownerTokens }) -} - -module.exports = { - methodology: 'calculates overall value deposited across different protocol portfolios', - bsc: { tvl } -} \ No newline at end of file diff --git a/projects/vendor-finance-v2/index.js b/projects/vendor-finance-v2/index.js deleted file mode 100644 index b3152ad3dab..00000000000 --- a/projects/vendor-finance-v2/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); - -const abi = { - lendBalance: "function lendBalance() view returns (uint256)", - colBalance: "function colBalance() view returns (uint256)" -} - -async function tvl(api) { - const { factory, fromBlock } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - topics: ['0xee5c84cc965f1ed0b60a1a4a5a02cf02830b6262b89a9063fda05b63ce8b2f8b'], - fromBlock, - onlyArgs: true, - eventAbi: 'event DeployPool(address poolAddress,address deployer,address implementation,(address feesManager,bytes32 strategy,address oracle,address treasury,address posTracker),(uint8 poolType,address owner,uint48 expiry,address colToken,uint48 protocolFee,address lendToken,uint48 ltv,uint48 pauseTime,uint256 lendRatio,address[] allowlist,bytes32 feeRatesAndType))' - }) - - // lend assets may be stored in AAVE if the lender chooses so we can't - // rely on balanceOf calls to get lend balances. Each pool has a - // lendBalance and colBalance method that returns the token balances - // that are in the pool and are currently in AAVE that belong to the pool - - // get lend balances returned from the lendBalance method - const lendOutput = await api.multiCall({ abi: abi.lendBalance, calls: logs.map(i => i.poolAddress), }); - - // get col balances returned from the colBalance method - const colOutput = await api.multiCall({ abi: abi.colBalance, calls: logs.map(i => i.poolAddress), }); - - lendOutput.forEach((res, i) => { - // extract collateral and lend tokens - const lendToken = logs[i][4].lendToken; - const colToken = logs[i][4].colToken; - // add collateral and lend token balances returned from contract calls - api.add(lendToken, res) - api.add(colToken, colOutput[i]) - }); -} - -const config = { - berachain: { factory: '0x914246ceAF07E1E4B22992d733a9eb3D4983233b', fromBlock: 10062470}, - arbitrum: { factory: '0x0b2B8Fbf3dfd6237921A89355cfc08f107bFbf98', fromBlock: 88774917 }, - base: { factory: '0xAf013ba5cE2e3AC97BF93Ea968031B3D0B4682Cf', fromBlock: 33429629}, - spn: { factory: '0xd03b16e994E6D877051878C676cc296eC00f171d', fromBlock: 1816958} -} - -module.exports = { - doublecounted: true, - methodology: 'The sum of the balance of all listed collateral and lend tokens in all deployed pools.', -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}); diff --git a/projects/vendor-finance/index.js b/projects/vendor-finance/index.js deleted file mode 100644 index 93c3d8f6ce3..00000000000 --- a/projects/vendor-finance/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const { factory, fromBlock } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - topics: ['0x17a6639825270a6a0f6172df6127d5ca0ef5649412ba2ae4225acd2b584425ca'], - fromBlock, - eventAbi: 'event DeployPool (address _poolAddress, address _deployer, uint256 _mintRatio, address _colToken, address _lendToken, uint48 _protocolFee, uint48 _protocolColFee, uint48 _expiry, address[] _borrowers)' - }) - - const balances = {}; - const tokensAndOwners = [] - - for (const { args: { _poolAddress, _colToken, _lendToken, _expiry } } of logs) { - if (_expiry < api.timestamp) continue; - tokensAndOwners.push([_colToken, _poolAddress]) - tokensAndOwners.push([_lendToken, _poolAddress]) - } - - return sumTokens2({ tokensAndOwners, api, balances, }); -} - -const config = { - arbitrum: { factory: '0xf0dbf74cef39e5cd4e54d0ffd59075024c7d8857', fromBlock: 20274088, }, - ethereum: { factory: '0x928cf648069082D9AEf25ddB2bF10D25bf1C1D73', fromBlock: 16545630, }, -} - -module.exports = { - methodology: 'The sum of the balance of all listed collateral and lend tokens in all deployed pools.', - deadFrom: '2024-08-30' -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/venera/index.js b/projects/venera/index.js deleted file mode 100644 index d777693502b..00000000000 --- a/projects/venera/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); -const { getUniTVL } = require("../helper/unknownTokens"); -const MasterChef = "0xE947062374759D9Dad48B375030099b1ADe1a9c7"; -const token = "0x94174f59c009f49b6aBC362706fdA402616b0427"; - -module.exports = { - bsc: { - tvl: getUniTVL({ - factory: "0x95F9c44fA1585811e1D1a0F59e74174B657B37A5", - useDefaultCoreAssets: true, - }), - staking: staking(MasterChef, token), - }, -}; diff --git a/projects/veniceswap/index.js b/projects/veniceswap/index.js deleted file mode 100644 index 5a8aefe123c..00000000000 --- a/projects/veniceswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - methodology: `Uses factory(0x5a75C65a96445eD0a4dDC1C1E35DF24B1DA3fe6a) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - findora: { - tvl: getUniTVL({ factory: '0x5a75C65a96445eD0a4dDC1C1E35DF24B1DA3fe6a', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/venofinance/index.js b/projects/venofinance/index.js deleted file mode 100644 index 16765dd6a71..00000000000 --- a/projects/venofinance/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const { staking } = require("../helper/staking.js"); - -const fountain_contract_address = "0xb4be51216f4926ab09ddf4e64bc20f499fd6ca95"; -const reservoir_contract_address = "0x21179329c1dcfd36ffe0862cca2c7e85538cca07"; -const vno_contract_address = "0xdb7d0a1ec37de1de924f8e8adac6ed338d4404e9"; -const zkCRO_contract_address = "0x28Ff2E4dD1B58efEB0fC138602A28D5aE81e44e2"; -const ybETH_contract_address = "0x76bf2D1e6dFda645c0c17440B17Eccc181dfC351"; -const ybUSD_contract_address = "0xFA59075DfCE274E028b58BdDFcC3D709960F594a"; -const vETH_contract_address = "0x271602A97027ee1dd03b1E6e5dB153eB659A80b1"; -const vUSD_contract_address = "0x5b91e29Ae5A71d9052620Acb813d5aC25eC7a4A2"; - - -async function tvlCronos(api) { - const lcro_contract_address = "0x9Fae23A2700FEeCd5b93e43fDBc03c76AA7C08A6"; - const latom_contract_address = "0xac974ee7fc5d083112c809ccb3fce4a4f385750d"; - - const cro_pooled = await api.call({ abi: "uint256:getTotalPooledCro", target: lcro_contract_address, }) - const atom_pooled = await api.call({ abi: "uint256:getTotalPooledToken", target: latom_contract_address, }) - - api.addGasToken(cro_pooled) - api.addCGToken('cosmos', atom_pooled / 1e6) - return api.getBalances() -} - -async function tvlEra(api) { - const leth_contract_address = "0xE7895ed01a1a6AAcF1c2E955aF14E7cf612E7F9d"; - - const eth_pooled = await api.call({ abi: "uint256:getTotalPooledToken", target: leth_contract_address, }) - api.addGasToken(eth_pooled) - return api.getBalances() -} - -async function tvlEthereum(api) { - const cro_pooled = await api.call({ abi: "uint256:totalPooledCro", target: zkCRO_contract_address }); - api.addCGToken('crypto-com-chain', cro_pooled / 1e8); - const eth_pooled = await api.call({ abi: "uint256:totalPooledEth", target: ybETH_contract_address }); - api.addCGToken('ethereum', eth_pooled / 1e18); - const usd_pooled = await api.call({ abi: "uint256:totalUsdValue", target: ybUSD_contract_address }); - api.addCGToken('dai', usd_pooled / 1e18); - - return api.getBalances(); -} - -async function tvlCronosZkEVM(api) { - const totalVEth = await api.call({ abi: "uint256:ybEthValue", target: vETH_contract_address }); - api.addCGToken('ethereum', totalVEth / 1e18); - const totalVUsd = await api.call({ abi: "uint256:ybUsdValue", target: vUSD_contract_address }); - api.addCGToken('dai', totalVUsd / 1e18); - - return api.getBalances(); -} - -module.exports = { - methodology: "TVL counts tokens staked by the protocol.", - cronos: { - tvl: tvlCronos, - staking: staking( - [fountain_contract_address, reservoir_contract_address], - vno_contract_address - ), - }, - era: { - tvl: tvlEra, - }, - ethereum: { - tvl: tvlEthereum, - }, - cronos_zkevm: { - tvl: tvlCronosZkEVM, - }, -}; diff --git a/projects/venombridge/index.js b/projects/venombridge/index.js deleted file mode 100644 index cb94ba79253..00000000000 --- a/projects/venombridge/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const sdk = require("@defillama/sdk") -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - timetravel: false, - venom: { - tvl: venomTvl, - }, -} - -const chains = ['ethereum', 'bsc', 'fantom', 'polygon', 'avax'] -const tvl = sumTokensExport({ owner: '0x4aB740157721105aE503fbad756a578171512525', fetchCoValentTokens: true, }) - -chains.forEach(chain => module.exports[chain] = { tvl }) - -async function venomTvl() { - const promises = chains.map(chain => sdk.api.erc20.totalSupply({ chain, target: '0x46f84dc6564cdd93922f7bfb88b03d35308d87c9' })) - const totalSupplies = await Promise.all(promises) - const bal = totalSupplies.reduce((acc, supply) => acc + supply.output / 1e9, 0) - return { 'venom': bal } -} \ No newline at end of file diff --git a/projects/venomstake/index.js b/projects/venomstake/index.js deleted file mode 100644 index 138e22c36a1..00000000000 --- a/projects/venomstake/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { post, get } = require('../helper/http') -const BigNumber = require('bignumber.js') - -async function fetchTvl() { - const { data: { tvl } } = await get('https://api.venomstake.com/v1/strategies/main'); - return { venom: BigNumber(tvl).div(1e9) }; -} - -module.exports = { - timetravel: false, - venom: { - tvl: fetchTvl - } -}; diff --git a/projects/venuSwap/index.js b/projects/venuSwap/index.js deleted file mode 100644 index a558f0cf5a6..00000000000 --- a/projects/venuSwap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('zkfair', '0x4C72BF37eb72df730c22Df16ca594f6985130dD6') diff --git a/projects/venus-isolated-pools/index.js b/projects/venus-isolated-pools/index.js deleted file mode 100644 index 8c3b0b2ca8b..00000000000 --- a/projects/venus-isolated-pools/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const { compoundExports2 } = require('../helper/compound') -const config = { - bsc: { - endpoint: sdk.graph.modifyEndpoint('H2a3D64RV4NNxyJqx9jVFQRBpQRzD6zNZjLDotgdCrTC'), - corePools: ['0xfd36e2c2a6789db23113685031d7f16329158384'], - }, - ethereum: { - endpoint: sdk.graph.modifyEndpoint('Htf6Hh1qgkvxQxqbcv4Jp5AatsaiY5dNLVcySkpCaxQ8'), - corePools: ['0x687a01ecF6d3907658f7A7c714749fAC32336D1B'], - }, - arbitrum: { - endpoint: sdk.graph.modifyEndpoint('2zqpTYBL3X1E2eb129bKno1pJdx6xBawr8urp61w33Z8'), - corePools: ['0x317c1A5739F39046E20b08ac9BeEa3f10fD43326'] - }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed, } -}) - -async function getPools(api) { - const { endpoint, corePools } = config[api.chain] - const poolSet = new Set(corePools.map(i=>i.toLowerCase())) - const { pools } = await cachedGraphQuery('venus-v4/'+api.chain, endpoint, `{ pools { id }}`) - return pools.map(i => i.id).filter(i => !poolSet.has(i.toLowerCase())) -} - -async function tvl(...args) { - const [api] = args - const pools = await getPools(api) - const tvls = pools.map(i => compoundExports2({ comptroller: i})) - return sdk.util.sumChainTvls(tvls.map(i => i.tvl))(...args) -} - -async function borrowed(...args) { - const [api] = args - const pools = await getPools(api) - const tvls = pools.map(i => compoundExports2({ comptroller: i})) - return sdk.util.sumChainTvls(tvls.map(i => i.borrowed))(...args) -} diff --git a/projects/venus.js b/projects/venus.js deleted file mode 100644 index 9f9cb616f55..00000000000 --- a/projects/venus.js +++ /dev/null @@ -1,10 +0,0 @@ -const { compoundExports2} = require('./helper/compound'); - -module.exports.bsc = compoundExports2({ comptroller: '0xfd36e2c2a6789db23113685031d7f16329158384', cether: '0xA07c5b74C9B40447a954e1466938b865b6BBea36'}) -module.exports.ethereum = compoundExports2({ comptroller: '0x687a01ecF6d3907658f7A7c714749fAC32336D1B'}) -module.exports.op_bnb = compoundExports2({ comptroller: '0xd6e3e2a1d8d95cae355d15b3b9f8e5c2511874dd'}) -module.exports.arbitrum = compoundExports2({ comptroller: '0x317c1A5739F39046E20b08ac9BeEa3f10fD43326'}) -module.exports.era = compoundExports2({ comptroller: '0xddE4D098D9995B659724ae6d5E3FB9681Ac941B1'}) -module.exports.base = compoundExports2({ comptroller: '0x0C7973F9598AA62f9e03B94E92C967fD5437426C'}) -module.exports.optimism = compoundExports2({ comptroller: '0x5593FF68bE84C966821eEf5F0a988C285D5B7CeC'}) -module.exports.unichain = compoundExports2({ comptroller: '0xe22af1e6b78318e1Fe1053Edbd7209b8Fc62c4Fe'}) \ No newline at end of file diff --git a/projects/veplus/index.js b/projects/veplus/index.js deleted file mode 100644 index b7c19aa5c09..00000000000 --- a/projects/veplus/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens.js') - -module.exports = { - misrepresentedTokens: true, - bsc:{ - tvl: getUniTVL({ - useDefaultCoreAssets: true, - hasStablePools: true, - factory: '0x5Bcd9eE6C31dEf33334b255EE7A767B6EEDcBa4b', - }), - }, -} \ No newline at end of file diff --git a/projects/verified-credits/index.js b/projects/verified-credits/index.js deleted file mode 100644 index fcbdb2067e3..00000000000 --- a/projects/verified-credits/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'kava', - masterchef: '0x0a3b0C346cEE826aa0eBEf78c1eBcB9BE07aD2eb', -}) \ No newline at end of file diff --git a/projects/verified/index.js b/projects/verified/index.js deleted file mode 100644 index d8e65ad74fd..00000000000 --- a/projects/verified/index.js +++ /dev/null @@ -1,147 +0,0 @@ -const { request, gql } = require("graphql-request"); -const sdk = require('@defillama/sdk'); - - -//Supported chain subgraphs configuration for Verified Network -//TODO: add more chains -const chainsConfig = { - base: { - subgraphUrl: - "https://api.studio.thegraph.com/query/77016/vault-base/version/latest", - }, - ethereum: { - subgraphUrl: - "https://api.studio.thegraph.com/query/77016/vault-mainnet/version/latest", - }, -}; - - -//Fetch pools with at least 1 primarySubscriptions or orders or marginOrders -const getChainSecurities = async (url) => { - let allPools = []; - let skip = 0; - const pageSize = 1000; - let hasMore = true; - - const QUERY = (skip) => gql` - query { - pools: pools( - first: ${pageSize} - skip: ${skip} - where: { - or: [ - { primarySubscriptions_: { executionDate_gt: 0 } } - { orders_: { timestamp_gt: 0 } } - { marginOrders_: { timestamp_gt: 0 } } - ] - } - ) { - security - currency - tokens { - symbol - name - decimals - index - address - } - orders { - - tokenIn { address } - amountOffered - timestamp - } - primarySubscriptions { - subscription - assetIn { address } - executionDate - } - marginOrders { - tokenIn { address } - amountOffered - timestamp - } - } - } - `; - - while (hasMore) { - try { - const data = await request(url, QUERY(skip)); - const pools = data?.pools || []; - allPools.push(...pools); - skip += pageSize; - hasMore = pools.length === pageSize; - } catch (err) { - console.error("GraphQL fetch error:", err); - break; - } - } - - return allPools; -}; - - -// Format TVL using DefiLlama SDK -const getChainTvls = (chain) => { - const subgraphUrl = chainsConfig[chain].subgraphUrl; - - return async (_, __, ___) => { - const balances = {}; - const pools = await getChainSecurities(subgraphUrl); - - for (const pool of pools) { - const currency = pool?.currency?.toLowerCase(); - - const currencyToken = pool?.tokens.find( - (tkn) => tkn?.address?.toLowerCase() === currency - ); - if (!currencyToken || !currencyToken?.decimals) continue; - - const decimals = Number(currencyToken.decimals); - - const addBalance = (amount, tokenAddress) => { - const token = `${chain}:${tokenAddress.toLowerCase()}`; - const scaledAmount = Number(amount) * (10 ** decimals); - sdk.util.sumSingleBalance(balances, token, scaledAmount); - }; - - // Primary Subscriptions - pool.primarySubscriptions?.forEach((sub) => { - if (sub?.assetIn?.address?.toLowerCase() === currency) { - addBalance(sub.subscription, sub.assetIn.address); - } - }); - - // Orders - pool.orders?.forEach((ord) => { - if (ord?.tokenIn?.address?.toLowerCase() === currency) { - addBalance(ord.amountOffered, ord.tokenIn.address); - } - }); - - // Margin Orders - pool.marginOrders?.forEach((ord) => { - if (ord?.tokenIn?.address?.toLowerCase() === currency) { - addBalance(ord.amountOffered, ord.tokenIn.address); - } - }); - } - - return balances; - - }; -}; - -module.exports = { - methodology: - "TVL is digital assets paid in to purchase security tokens on the Verified Network", - timetravel: true, - misrepresentedTokens: false, -}; - -Object.keys(chainsConfig).forEach((chain) => { - module.exports[chain] = { - tvl: getChainTvls(chain), - }; -}); diff --git a/projects/verio/index.js b/projects/verio/index.js deleted file mode 100644 index 66e4a6bb41f..00000000000 --- a/projects/verio/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -const VERIO_IP_STAKE_POOL = '0xf6701A6A20639f0E765bA7FF66FD4f49815F1a27' -const VERIO_IP_ASSET_STAKING = '0xe9be8e0Bd33C69a9270f8956507a237884dff3BE' - -async function tvl(api) { - const res = await Promise.all([ - api.call({ abi: 'uint256:getTotalStake', target: VERIO_IP_STAKE_POOL }), - api.call({ abi: 'uint256:getStakePoolAmount', target: VERIO_IP_STAKE_POOL }), - api.call({ abi: 'uint256:getTotalStakePricedInIP', target: VERIO_IP_ASSET_STAKING }) - ]) - api.addGasToken(res) - return sumTokens2({ api }) -} - -module.exports = { - methodology: 'TVL is the sum of the total stake in the Verio IP Stake Pool and the total stake weighted in IP in the Verio IP Asset Staking contract', - sty: { - tvl - } -} \ No newline at end of file diff --git a/projects/veritable.js b/projects/veritable.js deleted file mode 100644 index de9faafa8e0..00000000000 --- a/projects/veritable.js +++ /dev/null @@ -1,9 +0,0 @@ -const abi = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accVRTPerShare)' -const { masterchefExports, } = require('./helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'polygon', - masterchef: '0xE139E30D5C375C59140DFB6FD3bdC91B9406201c', - nativeToken: '0x6397835430a5a5f8530F30C412CB217CE3f0943b', - poolInfoABI: abi -}) \ No newline at end of file diff --git a/projects/versa/index.js b/projects/versa/index.js deleted file mode 100644 index 3ff8ea40150..00000000000 --- a/projects/versa/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORIES = "0x4346A7C8C39Bf91b8a80933c2fdb10d815c401dB" -const tvl = getUniTVL({ factory:FACTORIES, useDefaultCoreAssets: true }) - -module.exports = { - methodology: "Versa Tvl Calculation", - astar: { tvl } -} diff --git a/projects/versedex/index.js b/projects/versedex/index.js deleted file mode 100644 index 6afe32f3482..00000000000 --- a/projects/versedex/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') - -const FLEXUSD = ADDRESSES.smartbch.flexUSD; -const WBCH = ADDRESSES.smartbch.WBCH; -const SBCH_FACTORY = "0x16bc2B187D7C7255b647830C05a6283f2B9A3AF8"; - -const DAI = ADDRESSES.ethereum.DAI; -const WETH = ADDRESSES.ethereum.WETH; -const ETH_FACTORY = "0xee3E9E46E34a27dC755a63e2849C9913Ee1A06E2"; - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x16bc2B187D7C7255b647830C05a6283f2B9A3AF8) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - ethereum: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: ETH_FACTORY}), - }, - smartbch: { - tvl: getUniTVL({ useDefaultCoreAssets: true, factory: SBCH_FACTORY}) - }, -} diff --git a/projects/vertex/index.js b/projects/vertex/index.js deleted file mode 100644 index cd5d11b0334..00000000000 --- a/projects/vertex/index.js +++ /dev/null @@ -1,111 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - "querier": "0x1693273B443699bee277eCbc60e2C8027E91995d", - "feeCalculator": "0x2259440579447D0625a5E28dfF3E743d207e8890", - "clearinghouse": "0xAE1ec28d6225dCE2ff787dcb8CE11cF6D3AE064f", - "clearinghouseLiq": "0xca007C51Fc14eEA88252Cc4FD71e91E44026F020", - "endpoint": "0xbbEE07B3e8121227AfCFe1E2B82772246226128e", - "spotEngine": "0x32d91Af2B17054D575A7bF1ACfa7615f41CCEfaB", - "perpEngine": "0xb74C78cca0FADAFBeE52B2f48A67eE8c834b5fd1" -} - -const mantleConfig = { - "querier": "0x71b50Ce0E7f7B920c1BAee3BDE00F2c3F7470395", - //"feeCalculator": "", - "clearinghouse": "0x5bcfC8AD38Ee1da5F45d9795aCaDf57D37FEC172", - "clearinghouseLiq": "0x4b62c8179F85E399ce24fB279d44803F17118Aa4", - "endpoint": "0x526D7C7ea3677efF28CB5bA457f9d341F297Fd52", - "spotEngine": "0xb64d2d606DC23D7a055B770e192631f5c8e1d9f8", - "perpEngine": "0x38080ee5fb939d045A9e533dF355e85Ff4f7e13D" -} - -const seiConfig = { - "querier": "0xecc3dE1cD86CB07c3763D21A45041791574964C2", - //"feeCalculator": "", - "clearinghouse": "0xaE1510367aA8d500bdF507E251147Ea50B22307F", - "clearinghouseLiq": "0xa1a457b7bba489c3434D9Cb44b88101354CCF192", - "endpoint": "0x2777268EeE0d224F99013Bc4af24ec756007f1a6", - "spotEngine": "0x3E113cde3D6309e9bd45Bf7E273ecBB8b50ca127", - "perpEngine": "0x0F54f46979C62aB73D03Da60eBE044c8D63F724f" -} - -const baseConfig = { - "querier": "0x57237f44e893468efDD568cA7dE1EA8A57d14c1b", - "clearinghouse": "0xE46Cb729F92D287F6459bDA6899434E22eCC48AE", - "clearinghouseLiq": "0xA35Cd71DDC7aab953377314a56a663E9706F1354", - "endpoint": "0x92C2201D48481e2d42772Da02485084A4407Bbe2", - "spotEngine": "0xe818be1DA4E53763bC77df904aD1B5A1C5A61626", - "perpEngine": "0x5BD184F408932F9E6bA00e44A071bCCb8977fb47" -} - -const sonicConfig = { - "querier": "0xcC7895C391041231BfB5837A6923A4A26586d14f", - "clearinghouse": "0x447c9aEe069F6A13007eb9D2d2a4Bb4Ad92AB721", - "clearinghouseLiq": "0xd52e4Cb7D6e769a4957C9Da1bd33E0B12D956789", - "endpoint": "0x2f5F835d778eBE8c28fC743E50EB9a68Ca93c2Fa", - "spotEngine": "0xEa555556ab1973973e4f9d3378277Ab156de783d", - "perpEngine": "0x9100770dE5268B969e540650D003D909d5012826" -} - -const abstractConfig = { - "querier": "0xC155f48b8212a7Dd16B336f1891c8E26D5DFE093", - "clearinghouse": "0x1385bF2f06165cA0621aF047cF8666c256e1B1C2", - "endpoint": "0x6B104c78D384D1C25CcEe2CA0698541e22eC60b2", - "spotEngine": "0xA65B7Ae7A3a17B93dc382fA1487b4bc3BCEB6e3D", - "perpEngine": "0x6950DD3d2da0cdc217ad56714c6BA0011171bcC4" -} - -const avaxConfig = { - "querier": "0xc523008CE1D7a5f4cc9f0a9a9c973aA19bE054BC", - "clearinghouse": "0x7069798A5714c5833E36e70df8AeFAac7CEC9302", - "endpoint": "0x36dc76c0C8FC6B4fFe73178C351BA5a3F2178eb3", - "spotEngine": "0xCf0934104391eD43685Ae6aBf24F7CdE93F3Dfa8", - "perpEngine": "0x207c0ef981b4F1FBDfccA88F025C917cFdF1e7C5" -} - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ - owners: [config.clearinghouse, config.endpoint], - tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC_CIRCLE], - }) - }, - mantle: { - tvl: sumTokensExport({ - owners: [mantleConfig.clearinghouse, mantleConfig.endpoint], - tokens: [ADDRESSES.mantle.mETH, ADDRESSES.mantle.USDC, ADDRESSES.mantle.WETH, ADDRESSES.mantle.WMNT], - }) - }, - sei: { - tvl: sumTokensExport({ - owners: [seiConfig.clearinghouse, seiConfig.endpoint], - tokens: [ADDRESSES.sei.USDC, ADDRESSES.sei.WSEI], - }) - }, - base: { - tvl: sumTokensExport({ - owners: [baseConfig.clearinghouse, baseConfig.endpoint], - tokens: [ADDRESSES.base.USDC, ADDRESSES.base.WETH], - }) - }, - sonic: { - tvl: sumTokensExport({ - owners: [sonicConfig.clearinghouse, sonicConfig.endpoint], - tokens: [ADDRESSES.sonic.USDC_e, ADDRESSES.sonic.wS], - }) - }, - abstract: { - tvl: sumTokensExport({ - owners: [abstractConfig.clearinghouse, abstractConfig.endpoint], - tokens: [ADDRESSES.abstract.USDC], - }) - }, - avax: { - tvl: sumTokensExport({ - owners: [avaxConfig.clearinghouse, avaxConfig.endpoint], - tokens: [ADDRESSES.avax.USDC, ADDRESSES.avax.WAVAX], - }) - } -} \ No newline at end of file diff --git a/projects/verus-market/index.js b/projects/verus-market/index.js deleted file mode 100644 index 6b08dad2ff9..00000000000 --- a/projects/verus-market/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { get } = require('../helper/http') -const { transformDexBalances } = require('../helper/portedTokens') - - -// verus bridge address? https://etherscan.io/address/0x71518580f36feceffe0721f06ba4703218cd7f63 -async function tvl(api) { - const { data: { results } } = await get("https://marketapi.verus.services/getdefichaininfo") - - const blacklist = new Set(results.map(i => i.lp_address)) - const processed = new Set() - const data = [] - results.forEach(({ tokens, lp_address, }) => { - if (processed.has(lp_address)) return; - processed.add(lp_address) - - if (tokens.length < 2) return; - - const isXYPair = tokens.length === 2 - const noBlacklistedTokens = !tokens.some(i => blacklist.has(i.i_address)) - tokens = tokens.filter(i => !blacklist.has(i.i_address)) - - if (isXYPair & noBlacklistedTokens) { - data.push({ - token0: tokens[0].i_address, - token1: tokens[1].i_address, - token0Bal: tokens[0].reserves, - token1Bal: tokens[1].reserves, - }) - } else { - tokens.forEach(i => api.add(i.i_address, i.reserves)) - } - }) - - return transformDexBalances({ data, api, }) -} - -module.exports = { - verus: { tvl }, - timetravel: false, - misrepresentedTokens: true, -} \ No newline at end of file diff --git a/projects/veryLongSwap-masterchef/index.js b/projects/veryLongSwap-masterchef/index.js deleted file mode 100644 index f76e501171c..00000000000 --- a/projects/veryLongSwap-masterchef/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const abi = { - "pools": "function pools(uint256) view returns (address token, uint32 endDay, uint32 lockDayPercent, uint32 unlockDayPercent, uint32 lockPeriod, uint32 withdrawalCut1, uint32 withdrawalCut2, bool depositEnabled, uint128 maxDeposit, uint128 minDeposit, uint128 totalDeposited, uint128 maxPoolAmount)" -} - -module.exports = { - astrzk: { tvl }, -} - -async function tvl(api) { - const singeStake = '0x1AbF3A81aeb18a0EF9F5e319d7ec7483B45456fa' - const poolData = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: abi.pools, target: singeStake}) - poolData.forEach(i => api.add(i.token, i.totalDeposited)) -} - -module.exports.deadFrom = '2025-03-31' // Astar ZK is shutting down on March 31, 2025: https://docs.astar.network/docs/learn/zkEVM \ No newline at end of file diff --git a/projects/vesper/abi.json b/projects/vesper/abi.json deleted file mode 100644 index 680414d4abd..00000000000 --- a/projects/vesper/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "token": "address:token", - "totalValue": "uint256:totalValue", - "pools": "address:pools", - "length": "uint256:length", - "at": "function at(uint256 index) view returns (address)" -} \ No newline at end of file diff --git a/projects/vesper/index.js b/projects/vesper/index.js deleted file mode 100644 index 715fdc14572..00000000000 --- a/projects/vesper/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const { getConfig } = require("../helper/cache") -const { sumTokensExport } = require("../helper/unwrapLPs") - -const chainConfig = { - ethereum: { - stakingPool: '0xbA4cFE5741b357FA371b506e5db0774aBFeCf8Fc', - VSP: '0x1b40183efb4dd766f11bda7a7c3ad8982e998421', - endpoints: ['https://api.vesper.finance/pools?stages=prod', 'https://api.vesper.finance/pools?stages=orbit'], - }, - avax: { - endpoints: ['https://api-avalanche.vesper.finance/pools?stages=prod'], - }, - polygon: { - endpoints: ['https://api-polygon.vesper.finance/pools?stages=prod'], - }, - optimism: { - endpoints: ['https://api-optimism.vesper.finance/pools'] - }, - base: { - endpoints: ['https://api-base.vesper.finance/pools'] - }, -} - -function getChainExports(chain) { - const { stakingPool, VSP, endpoints } = chainConfig[chain] || {} - - async function tvl(api) { - const poolSet = new Set() - - for (let i = 0; i < endpoints.length; i++) { - const key = ['vesper', chain, i].join('/') - const data = await getConfig(key, endpoints[i]) - data.forEach(pool => poolSet.add(pool.address)) // add pools from our contracts list - } - if (stakingPool) poolSet.delete(stakingPool) - const poolList = [...poolSet] - - if (!poolList.length) return; - - // Get collateral token - const tokens = await api.multiCall({ abi: 'address:token', calls: poolList }) - const bals = await api.multiCall({ abi: 'uint256:totalValue', calls: poolList }) - api.add(tokens, bals) - } - - let staking - - if (stakingPool && VSP) - staking = sumTokensExport({ owner: stakingPool, token: VSP }) - - return { - [chain]: { tvl, staking } - } -} - -module.exports = { - start: '2020-12-22', // December 22 2020 at 8:00 PM UTC - ...['ethereum', 'avax', 'polygon', 'optimism', 'base'].reduce((acc, chain) => ({ ...acc, ...getChainExports(chain) }), {}) -}; diff --git a/projects/vesq/index.js b/projects/vesq/index.js deleted file mode 100644 index 78916b6cd3f..00000000000 --- a/projects/vesq/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0x8c7290399cecbbbf31e471951cc4c2ce91f5073c" -const vsq_token = "0x29f1e986fca02b7e54138c04c4f503dddd250558" -const stakingAddress = "0x2f3e9e54bd4513d1b49a6d915f9a83310638cfc2" -const treasuryTokens = [ - [ADDRESSES.polygon.DAI, false], //DAI - ["0x2e1ad108ff1d8c782fcbbb89aad783ac49586756", false], //TUSD - ["0xa3fa99a148fa48d14ed51d610c367c61876997f1", false], //MAI - [ADDRESSES.polygon.FRAX, false], //FRAX - ["0x692597b009d13c4049a947cab2239b7d6517875f", false], //UST - ["0x27f8d03b3a2196956ed754badc28d73be8830a6e", false], //amDAI - ["0xd8cA34fd379d9ca3C6Ee3b3905678320F5b45195", false], //gOHM - ["0xa9536b9c75a9e0fae3b56a96ac8edf76abc91978", false], //PECO - ["0x7fb27ee135db455de5ab1ccec66a24cbc82e712d", false], //GMI - ["0x5Cf66CeAf7F6395642cD11b5929499229edEF531", true], //VSQ DAI LP - ["0x41d18c810e70c643cc1326f232546abb620aae7e", true], //VSQ FRAX LP - ["0xc2f4694ab1384e6bce1c8aa91b9a3e8cc1a6477e", true], //VSQ MAI LP - ["0xe7a24ef0c5e95ffb0f6684b813a78f2a3ad7d171", false], //Curve am3CRV - ] -module.exports = ohmTvl(treasury, treasuryTokens, "polygon", stakingAddress, vsq_token, undefined, undefined, true) \ No newline at end of file diff --git a/projects/vest/index.js b/projects/vest/index.js deleted file mode 100644 index 90122f298b9..00000000000 --- a/projects/vest/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { staking } = require("../helper/staking"); -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - methodology: "Total USDC locked in the Vest Exchange.", - start: '2024-03-17', - era: { - tvl: staking([ - "0xf7483A1464DeF6b8d5A6Caca4A8ce7E5be8F1F68", - "0x7ccF5BbeC69c790D27dA3b5398B9e0d6D6EeC9F3", - "0xf0bcF4eDe69e5cb0EB1c9E35b4d408a5e7fdA56b", - ], ADDRESSES.era.USDC), - }, - base: { - tvl: staking( - ["0xE80F92077131b9890599E418AE323de71cE1C35a","0x32d95F243F9E2c1344E4BAa91a8D32711527ef7e"], - ADDRESSES.base.USDC - ), - }, - optimism: { - tvl: staking( - "0xE80F92077131b9890599E418AE323de71cE1C35a", - ADDRESSES.optimism.USDC_CIRCLE - ), - }, - ethereum: { - tvl: staking( - "0xE80F92077131b9890599E418AE323de71cE1C35a", - ADDRESSES.ethereum.USDC - ), - }, - polygon: { - tvl: staking( - "0xE80F92077131b9890599E418AE323de71cE1C35a", - ADDRESSES.polygon.USDC_CIRCLE - ), - }, - arbitrum: { - tvl: staking( - "0x80C526d1c2fddADB3Cd39810cd7A79E07b0EDa00", - ADDRESSES.arbitrum.USDC_CIRCLE - ), - }, - bsc: { - tvl: staking( - "0xef14da66876476C1A75dC057343B97b6Bd372c41", - ADDRESSES.bsc.USDC - ), - }, -} - diff --git a/projects/vesta/index.js b/projects/vesta/index.js deleted file mode 100644 index 5b5f2bdd00a..00000000000 --- a/projects/vesta/index.js +++ /dev/null @@ -1,59 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const VaultTokens = { - gOHM: "0x8d9ba570d6cb60c7e3e0f31343efe75ab8e65fb1", - ETH: ADDRESSES.null, - renBTC: ADDRESSES.fantom.renBTC, - DPX: "0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55", - GMX: ADDRESSES.arbitrum.GMX, - GLP: "0x2f546ad4edd93b956c8999be404cdcafde3e89ae" -} - -const FEGLP_ADDRESS = "0x4277f8F2c384827B5273592FF7CeBd9f2C1ac258" - -const VSTA_FARMING_ADDRESS = "0x65207da01293C692a37f59D1D9b1624F0f21177c"; -const LP_VSTA_ETH_ADDRESS = "0xc61ff48f94d801c1ceface0289085197b5ec44f0"; - -const VST_FARMING_ADDRESS = "0xB3667b3d1b3D4ed3d451dF68C9C12A686227Bada"; -const LP_VST_FRAX_ADDRESS = "0x59bF0545FCa0E5Ad48E13DA269faCD2E8C886Ba4"; - -// TroveManager holds total system collateral for each individual vaults -const TROVE_MANAGER_ADDRESS = "0x100EC08129e0FD59959df93a8b914944A3BbD5df"; - - - -async function tvl(api) { - const balances = {} - const calls = Object.values(VaultTokens) - const output = await api.multiCall({ - calls, target: TROVE_MANAGER_ADDRESS, abi: "function getEntireSystemColl(address _asset) view returns (uint256 entireSystemColl)", - }) - - output.forEach((output, i) => { - const token = calls[i].toLowerCase() - if (token.toLowerCase() === VaultTokens.renBTC) output /= 1e10 // fix renBTC balance - - const llamaTokenAddress = token.toLowerCase() === VaultTokens.GLP ? FEGLP_ADDRESS : token // convert sGLP to feGLP address for price api - - sdk.util.sumSingleBalance(balances, llamaTokenAddress, output, api.chain) - }) - - return balances; -} - -async function pool2(api) { - await api.sumTokens({ owner: VSTA_FARMING_ADDRESS, token: LP_VSTA_ETH_ADDRESS }) - const curveBalances = await api.call({ target: VST_FARMING_ADDRESS, abi: "uint256:totalStaked" }) - api.add(LP_VST_FRAX_ADDRESS, curveBalances) -} - -module.exports = { - arbitrum: { - tvl, - pool2, - }, - start: '2022-02-08', - methodology: - "Total Value Locked includes all stability pools, troves, and vst pairs", -}; diff --git a/projects/vestaequity/index.js b/projects/vestaequity/index.js deleted file mode 100644 index 0d2d5655b7a..00000000000 --- a/projects/vestaequity/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { toUSDTBalances } = require('../helper/balances'); -const { get } = require('../helper/http'); - -const VestaEquityTVLApi = "https://app.vestaequity.net/api/listings/tvl/"; - -async function vestaequityTVL() { - - const response = ( - await get(VestaEquityTVLApi) - ); - - const total = response.reduce((acc, item) => { - acc = acc + item.tvl; - return acc; - }, 0); - - return toUSDTBalances(total); -} - -module.exports = { - algorand: { - tvl: vestaequityTVL, - } -}; diff --git a/projects/vestige/index.js b/projects/vestige/index.js deleted file mode 100644 index cb29fe8c279..00000000000 --- a/projects/vestige/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(api) { - //Get all the vaults in the protocol - const assetsUrl = "https://free-api.vestige.fi/assets/locked"; - const assets = await get(assetsUrl); - - let tvl = 0; - - await Promise.all( - assets.map(async (asset) => { - const assetId = asset.asset_id; - const supplyInTvlLocked = asset.supply_in_tvl_locked; - const priceUrl = `https://free-api.vestige.fi/asset/${assetId}/price`; - const priceResponse = await get(priceUrl); - const price = priceResponse.USD; - tvl += supplyInTvlLocked * price * 2; - }) - ); - - api.addUSDValue(Math.round(tvl)) -} - -module.exports = { - timetravel:false, - misrepresentedTokens:true, - methodology:`Counts tokens in LPs only, transforms the price to USD and * them by 2 to account for the other side.`, - algorand: { tvl }, -}; diff --git a/projects/vesu/abi.js b/projects/vesu/abi.js deleted file mode 100644 index c214f717ce5..00000000000 --- a/projects/vesu/abi.js +++ /dev/null @@ -1,168 +0,0 @@ - -const erc20ABI = [ - { - type: "function", - name: "decimals", - inputs: [], - outputs: [ - { - type: "core::integer::u8", - }, - ], - state_mutability: "view", - } -]; - -const singletonABI = [ - { - type: "function", - name: "asset_config_unsafe", - inputs: [ - { - name: "pool_id", - type: "felt" - }, - { - name: "asset", - type: "felt" - } - ], - outputs: [ - { - type: "(vesu::data_model::AssetConfig, core::integer::u256)" - } - ], - state_mutability: "view", - customInput: "address" - }, - { - type: "struct", - name: "vesu::data_model::AssetConfig", - members: [ - { - name: "total_collateral_shares", - type: "core::integer::u256" - }, - { - name: "total_nominal_debt", - type: "core::integer::u256" - }, - { - name: "reserve", - type: "core::integer::u256" - }, - { - name: "max_utilization", - type: "core::integer::u256" - }, - { - name: "floor", - type: "core::integer::u256" - }, - { - name: "scale", - type: "core::integer::u256" - }, - { - name: "is_legacy", - type: "core::bool" - }, - { - name: "last_updated", - type: "core::integer::u64" - }, - { - name: "last_rate_accumulator", - type: "core::integer::u256" - }, - { - name: "last_full_utilization_rate", - type: "core::integer::u256" - }, - { - name: "fee_rate", - type: "core::integer::u256" - } - ] - } -]; - -const poolABI = [ - { - type: "function", - name: "asset_config", - inputs: [ - { - name: "asset", - type: "felt" - } - ], - outputs: [ - { - type: "vesu::data_model::AssetConfig" - } - ], - state_mutability: "view", - customInput: "address" - }, - { - type: "struct", - name: "vesu::data_model::AssetConfig", - members: [ - { - name: "total_collateral_shares", - type: "core::integer::u256" - }, - { - name: "total_nominal_debt", - type: "core::integer::u256" - }, - { - name: "reserve", - type: "core::integer::u256" - }, - { - name: "max_utilization", - type: "core::integer::u256" - }, - { - name: "floor", - type: "core::integer::u256" - }, - { - name: "scale", - type: "core::integer::u256" - }, - { - name: "is_legacy", - type: "core::bool" - }, - { - name: "last_updated", - type: "core::integer::u64" - }, - { - name: "last_rate_accumulator", - type: "core::integer::u256" - }, - { - name: "last_full_utilization_rate", - type: "core::integer::u256" - }, - { - name: "fee_rate", - type: "core::integer::u256" - }, - { - name: "fee_shares", - type: "core::integer::u256" - } - ] - }, -] - -module.exports = { - erc20ABI, - singletonABI, - poolABI, -}; diff --git a/projects/vesu/index.js b/projects/vesu/index.js deleted file mode 100644 index f7828ec867d..00000000000 --- a/projects/vesu/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { multiCall, sumTokens } = require("../helper/chain/starknet"); -const { erc20ABI, singletonABI, poolABI } = require("./abi"); - -const INTERNAL_SCALE = 10 ** 18; -const SINGLETON = "0x000d8d6dfec4d33bfb6895de9f3852143a17c6f92fd2a21da3d6924d34870160"; -const SINGLETON_POOLS = [ - "0x4dc4f0ca6ea4961e4c8373265bfd5317678f4fe374d76f3fd7135f57763bf28", // Vesu Genesis Pool - "0x7f135b4df21183991e9ff88380c2686dd8634fd4b09bb2b5b14415ac006fe1d", // Re7 USDC Pool - "0x52fb52363939c3aa848f8f4ac28f0a51379f8d1b971d8444de25fbd77d8f161", // Re7 xSTRK Pool - "0x2e06b705191dbe90a3fbaad18bb005587548048b725116bff3104ca501673c1", // Re7 sSTRK Pool - "0x6febb313566c48e30614ddab092856a9ab35b80f359868ca69b2649ca5d148d", // Re7 Starknet Ecosystem Pool - "0x59ae5a41c9ae05eae8d136ad3d7dc48e5a0947c10942b00091aeb7f42efabb7", // Re7 wstETH Pool - "0x7bafdbd2939cc3f3526c587cb0092c0d9a93b07b9ced517873f7f6bf6c65563", // Alterscope CASH Pool - "0x27f2bb7fb0e232befc5aa865ee27ef82839d5fad3e6ec1de598d0fab438cb56", // Alterscope xSTRK Pool - "0x5c678347b60b99b72f245399ba27900b5fc126af11f6637c04a193d508dda26", // Alterscope wstETH Pool - "0x2906e07881acceff9e4ae4d9dacbcd4239217e5114001844529176e1f0982ec", // Alterscope Cornerstone Pool - "0x3de03fafe6120a3d21dc77e101de62e165b2cdfe84d12540853bd962b970f99", // Re7 rUSDC Pool -]; -const V2_POOLS = [ - "0x451fe483d5921a2919ddd81d0de6696669bccdacd859f72a4fba7656b97c3b5", // Vesu Prime Pool - "0x2eef0c13b10b487ea5916b54c0a7f98ec43fb3048f60fdeedaf5b08f6f88aaf", // Re7 USDC Prime Pool - "0x3976cac265a12609934089004df458ea29c776d77da423c96dc761d09d24124", // Re7 USDC Core Pool - "0x3a8416bf20d036df5b1cf3447630a2e1cb04685f6b0c3a70ed7fb1473548ecf", // Re7 xBTC Pool - "0x73702fce24aba36da1eac539bd4bae62d4d6a76747b7cdd3e016da754d7a135", // Re7 USDC Stable Core Pool - "0x5c03e7e0ccfe79c634782388eb1e6ed4e8e2a013ab0fcc055140805e46261bd", // Re7 USDC Frontier Pool -]; -const ASSETS = [ - ADDRESSES.starknet.ETH, - ADDRESSES.starknet.WBTC, - ADDRESSES.starknet.USDC, - ADDRESSES.starknet.USDT, - ADDRESSES.starknet.WSTETH, - ADDRESSES.starknet.WSTETH_1, - ADDRESSES.starknet.STRK, - ADDRESSES.starknet.XSTRK, - ADDRESSES.starknet.SSTRK, - ADDRESSES.starknet.EKUBO, - "0x498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada", // CASH - "0x02019e47A0Bc54ea6b4853C6123FfC8158EA3AE2Af4166928b0dE6e89f06De6C", // rUSDC, - "0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68", // solvBTC - "0x04daa17763b286d1e59b97c283c0b8c949994c361e426a28f743c67bdfe9a32f", // tBTC - "0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4", // lBTC - "0x023a312ece4a275e38c9fc169e3be7b5613a0cb55fe1bece4422b09a88434573", // uniBTC - "0x6a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13", // wWBTC - "0x580f3dc564a7b82f21d40d404b3842d490ae7205e6ac07b1b7af2b4a5183dc9", // xSBTC - "0x43a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91", // xTBTC - "0x7dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0", // xLBTC - "0x04be8945e61dc3e19ebadd1579a6bd53b262f51ba89e6f8b0c4bc9a7e3c633fc" // mRE7Yield -]; - -async function tvl(api) { - return sumTokens({ api, owners: [SINGLETON, ...V2_POOLS], tokens: ASSETS }); -} - -const borrowed = async (api) => { - // V1 Pools - const poolAssets = SINGLETON_POOLS.map((pool_id) => ASSETS.map((asset) => ({ pool_id, asset }))).flat(); - const calls = poolAssets.map(({ pool_id, asset }) => ({ target: SINGLETON, params: [pool_id, asset] })) - const assetStates = await multiCall({ calls, abi: singletonABI[0], allAbi: singletonABI }); - assetStates.forEach((res, index) => { - const { total_nominal_debt, scale, last_rate_accumulator } = res['0']; - const totalDebt = Number(total_nominal_debt) * Number(last_rate_accumulator) / INTERNAL_SCALE; - const scaledTotalDebt = totalDebt * Number(scale) / INTERNAL_SCALE; - api.add(poolAssets[index].asset, scaledTotalDebt); - }); - // V2 Pools - const poolAssetsV2 = V2_POOLS.map((pool) => ASSETS.map((asset) => ({ pool, asset }))).flat(); - const callsV2 = poolAssetsV2.map(({ pool, asset }) => ({ target: pool, params: [asset] })) - const assetStatesV2 = await multiCall({ calls: callsV2, abi: poolABI[0], allAbi: poolABI, permitFailure: true }); - assetStatesV2.forEach((res, index) => { - if (res === null) return; - const { total_nominal_debt, scale, last_rate_accumulator } = res; - const totalDebt = Number(total_nominal_debt) * Number(last_rate_accumulator) / INTERNAL_SCALE; - const scaledTotalDebt = totalDebt * Number(scale) / INTERNAL_SCALE; - api.add(poolAssetsV2[index].asset, scaledTotalDebt); - }); -}; - -module.exports = { - starknet: { - tvl, - borrowed, - }, -}; diff --git a/projects/vesync/index.js b/projects/vesync/index.js deleted file mode 100644 index f30e5b83ded..00000000000 --- a/projects/vesync/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens'); - -const GET_AMOUNT_OUT = "function getAmountOut(uint amountIn, address tokenIn, address tokenOut) external view returns (uint amount, bool stable)"; - -const VOTING_ESCROW = "0x1925AB9F9bcdB9E2D2861cc7C4c157645126D9d9"; -const VS = "0x5756A28E2aAe01F600FC2C01358395F5C1f8ad3A"; -const ROUTER = "0x6C31035D62541ceba2Ac587ea09891d1645D6D07"; -const USDC = ADDRESSES.era.USDC; - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ - factory: '0x529Bd7Fc43285B96f1e8d5158626d1F15bb8A834', - useDefaultCoreAssets: true, - hasStablePools: true, - }), - staking: async (api = {}) => { - const vsBalance = await api.call({ target: VS, abi: 'erc20:balanceOf', params: VOTING_ESCROW, }) - - // Use 1 VS as input to get the conversion rate from VS to USDC - const [conversionRate] = await api.call({ target: ROUTER, abi: GET_AMOUNT_OUT, params: [''+1e18, VS, USDC] }) - - return { - "usd-coin": vsBalance *conversionRate / 1e24 - } - } - }, - methodology: "TVL is total liquidity of all liquidity pools. Staking TVL is the value of VS tokens locked in the voting escrow (veVS) contract.", -}; \ No newline at end of file diff --git a/projects/vett/index.js b/projects/vett/index.js deleted file mode 100644 index bbd1df6d3e9..00000000000 --- a/projects/vett/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - - -const chain = "thundercore"; -const posStaking = ADDRESSES.thundercore.veTT -const posABI = { - getTTPoolAbi: "uint256:getTTPool" -} - -async function tvl(_timestamp, _b, { thundercore: block }) { - const params = { chain, block, target: posStaking, } - // staking pool = balanceOf(posStaking) + sum(voterStakings) - sum(userUnstakings) - const ttTvl = await sdk.api2.abi.call({ - ...params, - abi: posABI.getTTPoolAbi, - }); - return { - "thunder-token": ttTvl / 1e18, - }; -} - -module.exports = { - methodology: 'calculate the total amount of TT locked in the veTT contract', - thundercore: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/vexchange/abi.json b/projects/vexchange/abi.json deleted file mode 100644 index 0b9812b9bb5..00000000000 --- a/projects/vexchange/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "balanceOf": "function balanceOf(address _owner) view returns (uint256 balance)", - "allPairsLength": "uint256:allPairsLength", - "allPairs": "function allPairs(uint256) view returns (address)", - "token0": "address:token0", - "token1": "address:token1", - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)" -} \ No newline at end of file diff --git a/projects/vexchange/index.js b/projects/vexchange/index.js deleted file mode 100644 index 454da9e3645..00000000000 --- a/projects/vexchange/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'vechain': '0xB312582C023Cc4938CF0faEA2fd609b46D7509A2' -}) \ No newline at end of file diff --git a/projects/vfat/config.js b/projects/vfat/config.js deleted file mode 100644 index a2938f852cd..00000000000 --- a/projects/vfat/config.js +++ /dev/null @@ -1,132 +0,0 @@ -module.exports = { - base: { - factory: '0x71D234A3e1dfC161cc1d081E6496e76627baAc31', - gaugeFactory: '0x35f35cA5B132CaDf2916BaB57639128eAC5bbcb5', - gaugeFactory2: '0xD30677bd8dd15132F251Cb54CbDA552d2A05Fb08', - voter: '0x16613524e02ad97edfef371bc883f2f5d6c480a5', - NonfungiblePositionManager: '0x827922686190790b37229fd06084350E74485b72', - masterchefV3: '0xC6A2Db661D5a5690172d8eB0a7DEA2d3008665A3', - fromBlock: 3200567, - fromBlockSickle: 12116234, - chainName: 'base', - }, - optimism: { - factory: '0xB4C31b0f0B76b351395D4aCC94A54dD4e6fbA1E8', - gaugeFactory: '0x8391fE399640E7228A059f8Fa104b8a7B4835071', - oldGaugeFactory2: '0x282AC0eA96493650F1A5E5e5d20490C782F1592a', - gaugeFactory2: '0x327147eE440252b893A771345025B41A267Ad985', - voter: '0x41C914ee0c7E1A5edCD0295623e6dC557B5aBf3C', - oldNonfungiblePositionManager: '0xbB5DFE1380333CEE4c2EeBd7202c80dE2256AdF4', - NonfungiblePositionManager: '0x416b433906b1B72FA758e166e239c43d68dC6F29', - fromBlock: 105896812, - fromBlockSickle: 117753454, - chainName: 'optimism', - }, - arbitrum: { - factory: '0x53d9780DbD3831E3A797Fd215be4131636cD5FDf', - gaugeFactory: '0xAAA2564DEb34763E3d05162ed3f5C2658691f499', - gaugeFactory2: '0xaa2fbd0c9393964af7c66c1513e44a8caaae4fda', - NonfungiblePositionManager: '0xAA277CB7914b7e5514946Da92cb9De332Ce610EF', - masterchefV3: '0x5e09ACf80C0296740eC5d6F643005a4ef8DaA694', - fromBlock: 69820005, - fromBlockSickle: 197499243, - chainName: 'arbitrum', - }, - linea: { - factory: '0x0F6aBc6B808B377d6AeD8dA1FAD5E135C99C81a3', - fromBlockSickle: 4949355, - fromBlock: 381770, - gaugeFactory: '0xAAA932839641c037452f826BB9d7B2057129833b', - gaugeFactory2: '0xAAA2D4987EEd427Ba5E2c933EeFCD75C84b446B7', - voter: '0xAAAf3D9CDD3602d117c67D80eEC37a160C8d9869', - NonfungiblePositionManager: '0xAAA78E8C4241990B4ce159E105dA08129345946A', - masterchefV3: '0x22E2f236065B780FA33EC8C4E58b99ebc8B55c57', - chainName: 'linea', - }, - ethereum: { - factory: '0x9D70B9E5ac2862C405D64A0193b4A4757Aab7F95', - chainName: 'ethereum', - masterchefV3: '0x556B9306565093C855AEA9AE92A594704c2Cd59e', - fromBlockSickle: 19580798, - }, - mode: { - factory: '0x53d9780DbD3831E3A797Fd215be4131636cD5FDf', - chainName: 'mode', - fromBlockSickle: 7464171, - gaugeFactory: '0x31832f2a97Fd20664D76Cc421207669b55CE4BC0', - voter: '0xD2F998a46e4d9Dd57aF1a28EBa8C34E7dD3851D7', - fromBlock: 7453232, - }, - fantom: { - factory: '0x53d9780DbD3831E3A797Fd215be4131636cD5FDf', - chainName: 'fantom', - fromBlockSickle: 79166260, - NonfungiblePositionManager: '0x2B52294425a9a229322228de659eDE9D146D7c2f', - gaugeFactory: '0x5b3220cb732245ffe8e26df228ac93feb685c157', - fromBlock: 58469764, - voter: '0xe3d1a117df7dcac2eb0ac8219341bad92f18dac1', - }, - mantle: { - factory: '0xB4C31b0f0B76b351395D4aCC94A54dD4e6fbA1E8', - chainName: 'mantle', - fromBlockSickle: 62383980, - moeMasterchef: '0xA756f7D419e1A5cbd656A438443011a7dE1955b5' - }, - bsc: { - factory: '0x53d9780DbD3831E3A797Fd215be4131636cD5FDf', - chainName: 'bsc', - masterchefV3: '0x556B9306565093C855AEA9AE92A594704c2Cd59e', - fromBlockSickle: 37565801 - }, - sonic: { - factory: '0x53d9780DbD3831E3A797Fd215be4131636cD5FDf', - chainName: 'sonic', - fromBlockSickle: 1449481, - NonfungiblePositionManager: '0xa05a9efDb6e4FBc6deaDA988306b0dE5C53a8788', - gaugeFactory: '0x8CF82D413cA20a40a2Fa43C2bF77D136d81299e9', - fromBlock: 4028276, - voter: '0x3aF1dD7A2755201F8e2D6dCDA1a61d9f54838f4f', - }, - hemi: { - factory: '0xc6013E57a0811C7111A8fB07ACd2E248D9489C99', - chainName: 'hemi', - fromBlockSickle: 1741373, - gaugeFactory: '0x1E97Cd6b8ce5052b3fAee512C04F93a967c4c0E4', - fromBlock: 1741373, - }, - avax: { - factory: '0x53d9780DbD3831E3A797Fd215be4131636cD5FDf', - chainName: 'avax', - fromBlockSickle: 52924795, - }, - ink: { - factory: '0xc6013E57a0811C7111A8fB07ACd2E248D9489C99', - chainName: 'ink', - fromBlockSickle: 7174745, - }, - unichain: { - factory: '0x233D9067677dCf1a161954D45B4C965B9d567168', - chainName: 'unichain', - fromBlockSickle: 10858337, - }, - katana: { - factory: '0x233D9067677dCf1a161954D45B4C965B9d567168', - chainName: 'katana', - fromBlockSickle: 5297524, - }, - fraxtal: { - factory: '0xAc371D6E651b6450ea8c4cE346Ddd44B62d851B5', - chainName: 'fraxtal', - fromBlockSickle: 13191747, - }, - polygon: { - factory: '0x53d9780DbD3831E3A797Fd215be4131636cD5FDf', - chainName: 'polygon', - fromBlockSickle: 70860185, - }, - lisk: { - factory: '0x233D9067677dCf1a161954D45B4C965B9d567168', - chainName: 'lisk', - fromBlockSickle: 17528958, - }, -} diff --git a/projects/vfat/index.js b/projects/vfat/index.js deleted file mode 100644 index 2e447d21e26..00000000000 --- a/projects/vfat/index.js +++ /dev/null @@ -1,353 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { get } = require('../helper/http'); -const { sumTokens2, addUniV3LikePosition } = require('../helper/unwrapLPs'); - -const config = require('./config'); -const { sumLPBalances, filteredV3LPTokens } = require('./utils'); - -// Helper function to fetch sickles -async function fetchSickles(api, factory, fromBlockSickle) { - const deployLogs = await getLogs({ - api, - target: factory, - fromBlock: fromBlockSickle, - eventAbi: 'event Deploy(address indexed admin, address sickle)', - onlyArgs: true, - }); - return deployLogs.map(log => log.sickle); -} - -// Helper function to fetch and process gauges -async function fetchGauges(api, voter, fromBlock, gaugeFactory, gaugeFactory2, includeOldContract = false, oldGaugeFactory2 = '') { - const deployAeroLogs = await getLogs({ - api, - target: voter, - fromBlock, - eventAbi: `event GaugeCreated( - address indexed poolFactory, - address indexed votingRewardsFactory, - address indexed gaugeFactory, - address pool, - address bribeVotingReward, - address feeVotingReward, - address gauge, - address creator - )`, - }); - - return deployAeroLogs.reduce( - (acc, log) => { - const gaugeFactoryAddress = log.args.gaugeFactory; - const gaugeAddress = log.args.gauge; - if (gaugeFactoryAddress === gaugeFactory) { - acc.lp.push(gaugeAddress); - } else if (gaugeFactoryAddress === gaugeFactory2 || (includeOldContract && gaugeFactoryAddress === oldGaugeFactory2)) { - acc.nft.push(gaugeAddress); - } - return acc; - }, - { lp: [], nft: [] } - ); -} - - -async function fetchGauges2(api, fromBlock, gaugeFactory, gaugeFactory2, voter, chainName) { - const eventAbi = `event GaugeCreated( - address indexed gauge, - address creator, - address feeDistributor, - address indexed pool - )`; - - const eventAbi2 = `event GaugeCreated(address indexed pool, address gauge)`; - - const deployRamsesLogs = await getLogs({ - api, - target: chainName === 'linea' ? voter : gaugeFactory, - fromBlock, - eventAbi, - skipCache: true, - }); - - const deployRamsesLogs2 = await getLogs({ - api, - target: gaugeFactory2, - fromBlock, - eventAbi: eventAbi2, - skipCache: true, - }); - - const lp = deployRamsesLogs.map(log => log.args.gauge); - const nft = deployRamsesLogs2.map(log => log.args.gauge); - - const nftSet = new Set(nft); - - const filteredLp = lp.filter(address => !nftSet.has(address)); - - return { lp: filteredLp, nft }; -} - -async function fetchSickleNftPositions(api, sickles, managerAddress, isMasterchef = false) { - const nftCalls = []; - - const sickleBals = await api.multiCall({ abi: 'erc20:balanceOf', target: managerAddress, calls: sickles }); - for (let i = 0; i < sickles.length; i++) { - const sickle = sickles[i] - let nftBals = +sickleBals[i]; - for (let j = 0; j < nftBals; j++) - nftCalls.push({ params: [sickle, j] }); - - } - - const nftIds = await api.multiCall({ abi: 'function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)', calls: nftCalls, target: managerAddress }); - - const positions = await api.multiCall({ - abi: isMasterchef - ? 'function userPositionInfos(uint256 tokenId) view returns (uint128 liquidity, uint128 boostLiquidity, int24 tickLower, int24 tickUpper, uint256 rewardGrowthInside, uint256 reward, address user, uint256 pid, uint256 boostMultiplier)' - : 'function positions(uint256 tokenId) view returns (uint96 nonce, address operator, address token0, address token1, int24 tickSpacing, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)', - calls: nftIds, - target: managerAddress, - }); - - const pidSet = new Set(positions.map(position => position.pid)); - const pids = [...pidSet]; - - if (isMasterchef) { - const poolInfos = await api.multiCall({ - abi: 'function poolInfo(uint256 pid) view returns (uint256 allocPoint, address v3Pool, address token0, address token1, uint24 fee, uint256 totalLiquidity, uint256 totalBoostLiquidity)', - calls: pids, - permitFailure: true, - target: managerAddress, - }); - const poolInfoMap = {}; - poolInfos.forEach((info, index) => { - poolInfoMap[pids[index]] = info; - }); - - positions.forEach((position) => { - if (!position) return; - const poolInfo = poolInfoMap[position.pid]; - if (!poolInfo) { - console.log('Missing pool info for pid', position.pid, position, managerAddress) - } - position.allocPoint = poolInfo.allocPoint; - position.v3Pool = poolInfo.v3Pool; - position.token0 = poolInfo.token0; - position.token1 = poolInfo.token1; - position.fee = poolInfo.fee; - position.totalLiquidity = poolInfo.totalLiquidity; - position.totalBoostLiquidity = poolInfo.totalBoostLiquidity; - }); - } - - return positions.filter(position => position).forEach(position => { - addUniV3LikePosition({ ...position, api }) - }) -} - -async function fetchGauges3(api, voter, fromBlock) { - const eventAbi = `event StakingRewardsCreated( - address indexed pool, - address indexed stakingRewards, - address indexed rewardToken, - address stakingToken - )`; - - const deployLogs = await getLogs({ - api, - target: voter, - fromBlock, - eventAbi, - skipCache: true, - }); - - return deployLogs.map(log => log.args[2]); -} - -// TVL calculation for Base and Optimism -async function tvlBaseOptimism(api) { - const { factory, gaugeFactory, gaugeFactory2, oldGaugeFactory2, voter, NonfungiblePositionManager, oldNonfungiblePositionManager, fromBlock, fromBlockSickle, chainName } = config[api.chain]; - - const sickles = await fetchSickles(api, factory, fromBlockSickle); - const includeOldContract = chainName === 'optimism'; - const deployedAeroGauges = await fetchGauges(api, voter, fromBlock, gaugeFactory, gaugeFactory2, includeOldContract, oldGaugeFactory2); - - const stakingTokens = await api.multiCall({ abi: 'address:stakingToken', calls: deployedAeroGauges.lp }); - await sumLPBalances(api, deployedAeroGauges.lp, sickles, stakingTokens); - - const pools = await api.multiCall({ abi: 'address:pool', calls: deployedAeroGauges.nft }); - const whitelistedPoolList = new Set(await filteredV3LPTokens({ api, lpTokens: pools, minLPValue: 50e3 })); - const slot0s = await api.multiCall({ abi: 'function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, bool unlocked)', calls: pools }); - - await Promise.all(deployedAeroGauges.nft.map(async (gauge, i) => { - if (!whitelistedPoolList.has(pools[i])) return; - const tick = slot0s[i].tick; - const nftIds = (await api.multiCall({ abi: 'function stakedValues(address depositor) view returns (uint256[])', calls: sickles, target: gauge })).flat(); - const positions = await api.multiCall({ abi: 'function positions(uint256 tokenId) view returns (uint96 nonce, address operator, address token0, address token1, int24 tickSpacing, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)', calls: nftIds, target: NonfungiblePositionManager, permitFailure: true, }); - if (chainName === 'optimism' && oldNonfungiblePositionManager) { - const oldPositions = await api.multiCall({ abi: 'function positions(uint256 tokenId) view returns (uint96 nonce, address operator, address token0, address token1, int24 tickSpacing, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)', calls: nftIds, target: oldNonfungiblePositionManager, permitFailure: true, }); - positions.push(...oldPositions); - } - positions.filter(i => i).forEach(position => addUniV3LikePosition({ ...position, tick, api })); - })); - - if (chainName === 'base') - await fetchSickleNftPositions(api, sickles, config[api.chain].masterchefV3, true); - - return sumTokens2({ api, resolveLP: true }); -} - -// TVL calculation for Arbitrum and Linea -async function tvlArbitrumLinea(api) { - const { factory, gaugeFactory, gaugeFactory2, voter, fromBlock, fromBlockSickle, chainName } = config[api.chain]; - const blacklistedSickles = ['0x4989D5e508eBa5D4999b6A34FB30021e1f1bB4d8']; - let sickles = await fetchSickles(api, factory, fromBlockSickle); - if (chainName === 'linea') { - sickles = sickles.filter(sickle => !blacklistedSickles.includes(sickle)); - } - const gauges = await fetchGauges2(api, fromBlock, gaugeFactory, gaugeFactory2, voter, chainName); - const stakingTokens = await api.multiCall({ abi: 'address:stake', calls: gauges.lp }); - - await sumLPBalances(api, gauges.lp, sickles, stakingTokens); - await fetchSickleNftPositions(api, sickles, config[api.chain].NonfungiblePositionManager); - await fetchSickleNftPositions(api, sickles, config[api.chain].masterchefV3, true); - - api.removeTokenBalance('0xe80772eaf6e2e18b651f160bc9158b2a5cafca65') - return sumTokens2({ api, resolveLP: true }); -} - -async function modeTvl(api) { - const { factory, voter, fromBlock, fromBlockSickle, chainName } = config[api.chain]; - const sickles = await fetchSickles(api, factory, fromBlockSickle); - const gauges = await fetchGauges3(api, voter, fromBlock); - const stakingTokens = await api.multiCall({ abi: 'address:stakingToken', calls: gauges }); - await sumLPBalances(api, gauges, sickles, stakingTokens); - return sumTokens2({ api, resolveLP: true }); -} - -// TVL calculation for chains with masterchefV3 -async function genericTvl(api) { - const { factory, fromBlockSickle, masterchefV3, NonfungiblePositionManager, chainName } = config[api.chain]; - - const sickles = await fetchSickles(api, factory, fromBlockSickle); - - if (masterchefV3) - await fetchSickleNftPositions(api, sickles, masterchefV3, true); - - - if (NonfungiblePositionManager) - await fetchSickleNftPositions(api, sickles, NonfungiblePositionManager); - -} - -async function fetchFantomGauges(api, fromBlock, gaugeFactory) { - const eventAbi = `event GaugeCreated( - address indexed maker, - address indexed pool, - address g, - address b, - address v, - bool i, - address[] a - )`; - - const deployLogs = await getLogs({ - api, - target: gaugeFactory, - fromBlock, - eventAbi, - onlyArgs: true, - }); - - return deployLogs.map(log => log.g); -} - -// TVL calculation for Fantom -async function tvlFantom(api) { - const { factory, gaugeFactory, voter, fromBlock, fromBlockSickle, chainName } = config[api.chain]; - - const sickles = await fetchSickles(api, factory, fromBlockSickle); - const gauges = await fetchFantomGauges(api, fromBlock, gaugeFactory, voter, chainName); - const stakingTokens = await api.multiCall({ abi: 'address:stake', calls: gauges }); - await sumLPBalances(api, gauges, sickles, stakingTokens); - - return sumTokens2({ api, resolveLP: true }); -} - -async function tvlMantle(api) { - const { factory, fromBlockSickle, moeMasterchef } = config[api.chain]; - - const sickles = await fetchSickles(api, factory, fromBlockSickle); - - const tokens = await api.fetchList({ lengthAbi: 'getNumberOfFarms', itemAbi: 'getToken', target: moeMasterchef }) - - const farmTokenMap = {} - const farmIds = [] - tokens.forEach((token, index) => { - farmTokenMap[index] = token - farmIds.push(index) - }) - - const depositCalls = []; - sickles.forEach(sickle => { - farmIds.forEach(pid => { - depositCalls.push({ target: moeMasterchef, params: [pid, sickle] }); - }); - }); - - const deposits = await api.multiCall({ - abi: 'function getDeposit(uint256 pid, address account) view returns (uint256)', - calls: depositCalls - }); - - depositCalls.forEach((call, index) => { - const pid = call.params[0]; - const deposit = deposits[index]; - const token = farmTokenMap[pid]; - api.add(token, deposit) - }); - return sumTokens2({ api, resolveLP: true }); -} - -Object.keys(config).forEach(chain => { - let tvl - switch (chain) { - case 'base': - case 'optimism': tvl = tvlBaseOptimism; break; - case 'fraxtal': - case 'avax': - case 'arbitrum': - case 'sonic': - case 'hemi': - case 'linea': - case 'ink': - case 'unichain': - case 'katana': - case 'polygon': - case 'lisk': tvl = tvlArbitrumLinea; break; - case 'fantom': tvl = tvlFantom; break; - case 'mode': tvl = modeTvl; break; - case 'mantle': tvl = tvlMantle; break; - default: - tvl = genericTvl - } - - module.exports[chain] = { tvl: tvl2 } -}) - -// module.exports.isHeavyProtocol = true -module.exports.misrepresentedTokens = true -let _get - -async function tvl2(api) { - if (!_get) - _get = get(`https://api.vfat.io/v1/sickle-stats`) - - const { chainStats } = await _get - chainStats.filter(chain => chain.chainId === api.chainId).forEach(chain => { - api.addUSDValue(chain.tvl) - }) - -} - -module.exports.hemi = { tvl: tvl2 } diff --git a/projects/vfat/utils.js b/projects/vfat/utils.js deleted file mode 100644 index df8cbf5d8cd..00000000000 --- a/projects/vfat/utils.js +++ /dev/null @@ -1,101 +0,0 @@ -const { Balances } = require('@defillama/sdk'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -async function sumLPBalances(api, gauges, sickles, lpTokens) { - api.log(api.chain, sickles.length, gauges.length,) - lpTokens.forEach((lpToken, index) => lpTokens[index] = lpToken.toLowerCase()) - let minLPValue = 4e3 - if (lpTokens.length > 200) minLPValue = 15e3 - if (lpTokens.length > 400) minLPValue = 40e3 - - const filteredLPSet = new Set(await filteredLPTokens({ api, lpTokens, minLPValue, })) - - const gaugeTokenMapping = {}; - const tokens = [] - lpTokens.forEach((lpToken, index) => { - if (!filteredLPSet.has(lpToken)) return; - - const gauge = gauges[index].toLowerCase() - tokens.push(gauge) - gaugeTokenMapping[gauge] = lpToken - }); - - const transformAddress = (token) => { - token = token.toLowerCase() - return `${api.chain}:${gaugeTokenMapping[token] ?? token}` - } - await sumTokens2({ api, transformAddress, tokens, owners: sickles, sumChunkSize: 10000, }) -} - -// we are going to filter out tokens that we dont have price in the server and LP tokens with less than 1k value in it -async function filteredLPTokens({ api, lpTokens, minLPValue = 10e3 }) { - const token0s = await api.multiCall({ abi: 'address:token0', calls: lpTokens, permitFailure: true, }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: lpTokens, permitFailure: true, }) - const reserves = await api.multiCall({ abi: 'function getReserves() view returns (uint256 bal0, uint256 bal1, uint256 block)', calls: lpTokens, permitFailure: true, }) - const allTokens = [lpTokens, token0s, token1s,].flat().filter(i => i).map(i => i.toLowerCase()) - const dummyBals = {} - allTokens.forEach(i => dummyBals[api.chain + ':' + i] = 1e20) // hack to cache token prices to memory - await Balances.getUSDValue(dummyBals) - - const filteredLPTokens = [] - for (let i = 0; i < lpTokens.length; i++) { - const tokenBalance = new Balances({ chain: api.chain, }) - tokenBalance.add(lpTokens[i], 1e20) - const tokenValue = await tokenBalance.getUSDValue() - if (tokenValue > 0) { - filteredLPTokens.push(lpTokens[i]) - continue; - } - - if (!reserves[i]) { - continue; - } - - - const lpBalance = new Balances({ chain: api.chain, }) - lpBalance.add(token0s[i], reserves[i].bal0) - lpBalance.add(token1s[i], reserves[i].bal1) - const lpValue = await lpBalance.getUSDValue() - if (lpValue < minLPValue) { // LP has less than 2k value, we ignore it - continue; - } - filteredLPTokens.push(lpTokens[i]) - } - - api.log(api.chain, 'filteredLPTokens', filteredLPTokens.length, 'out of', lpTokens.length, 'LP tokens are filtered out.') - return filteredLPTokens -} - - -// we are going to filter out tokens that we dont have price in the server and LP tokens with less than 1k value in it -async function filteredV3LPTokens({ api, lpTokens, minLPValue = 10e3 }) { - const token0s = await api.multiCall({ abi: 'address:token0', calls: lpTokens, permitFailure: true, }) - const token1s = await api.multiCall({ abi: 'address:token1', calls: lpTokens, permitFailure: true, }) - const tok1n0Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: lpTokens.map((i, idx) => ({ target: token0s[idx], params: i})), permitFailure: true, }) - const tok1n1Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: lpTokens.map((i, idx) => ({ target: token1s[idx], params: i})), permitFailure: true, }) - const allTokens = [token0s, token1s,].flat().filter(i => i).map(i => i.toLowerCase()) - const dummyBals = {} - allTokens.forEach(i => dummyBals[api.chain + ':' + i] = 1e20) // hack to cache token prices to memory - await Balances.getUSDValue(dummyBals) - - const filteredLPTokens = [] - for (let i = 0; i < lpTokens.length; i++) { - const lpBalance = new Balances({ chain: api.chain, }) - lpBalance.add(token0s[i], tok1n0Bals[i] ?? 0) - lpBalance.add(token1s[i], tok1n1Bals[i] ?? 0) - const lpValue = await lpBalance.getUSDValue() - if (lpValue < minLPValue) { // LP has less than 2k value, we ignore it - continue; - } - filteredLPTokens.push(lpTokens[i]) - } - - api.log(api.chain, 'filteredLPTokens', filteredLPTokens.length, 'out of', lpTokens.length, 'LP tokens are filtered out.') - return filteredLPTokens -} - - -module.exports = { - sumLPBalances, - filteredV3LPTokens, -} \ No newline at end of file diff --git a/projects/vibrswap/index.js b/projects/vibrswap/index.js deleted file mode 100644 index 5ed2fbae651..00000000000 --- a/projects/vibrswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'neon_evm': ['0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF'], -} // liquidityManager contracts - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain] }), } -}) \ No newline at end of file diff --git a/projects/vicuna-lending/index.js b/projects/vicuna-lending/index.js deleted file mode 100644 index 5d908461978..00000000000 --- a/projects/vicuna-lending/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { aaveExports, methodology } = require("../helper/aave") -const { mergeExports } = require("../helper/utils") - -const dataProviders = [ - '0xc67850eCd0EC9dB4c0fD65C1Ad43a53025e6d54D', // Main market - // '0xe78536507675de30D375C6d2B5dA1a99819Ea9fa', // Paused market - // '0x94e8122dF227B34998Ba7523ad88c943191cF4F1', // Paused market - '0x08Dd992108ef0a82E8aDC633bcB3A20092e17E0B', // Stream market (xUSD) - '0x14DF199Dc8406D1C2F87499743F3e88d17976628', // StableJack market (YT-scUSD) - '0x7c0F1fdB80Ff25d9E5AdfA86b5Dad8c4EF93Ef90' // Brunch market (sbUSD) -] - -module.exports = mergeExports(dataProviders.map(address => ({ - sonic: aaveExports(undefined, undefined, undefined, [address], { v3: true }), -}))) - -module.exports.methodology = methodology -module.exports.hallmarks = [ - ['2025-03-28', "Oracle Manipulation Exploit"], -] diff --git a/projects/vicuna/index.js b/projects/vicuna/index.js deleted file mode 100644 index 09d21fbbd6c..00000000000 --- a/projects/vicuna/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getConfig } = require('../helper/cache'); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - sonic: { - tvl: async (api) => { - const pools = await getConfig('vicuna', 'https://raw.githubusercontent.com/VicunaFinance-com/vicuna-frontend/refs/heads/main/config/sonic.json'); - - // Extract earnedTokenAddress from each pool - const vaults = pools.map(pool => pool.vaultAddress) - const tokens = await api.multiCall({ abi: 'address:want', calls: vaults }) - const balances = await api.multiCall({ abi: 'uint256:balance', calls: vaults }) - api.add(tokens, balances) - return sumTokens2({ resolveLP: true, api, resolveIchiVault: true, }) - } - } -} \ No newline at end of file diff --git a/projects/vidya/index.js b/projects/vidya/index.js deleted file mode 100644 index 6d1bfe23eaf..00000000000 --- a/projects/vidya/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { - sumTokensExport -} = require('../helper/unwrapLPs'); - -// Vidya -const VIDYA_TOKEN = '0x3D3D35bb9bEC23b06Ca00fe472b50E7A4c692C30'; -const GNOSIS_SAFE = '0x17F0ABD8535Ba8846a82B1462F95C384A7d2193C'; - -// Generator -const SINGLE_SIDE_TELLER = '0x4E053ac1F6F34A73F5Bbd876eFd20525EAcB5382'; -const LP_TELLER = '0xD9BecdB8290077fAf79A2637a5f2FDf5033b2486'; -const VAULT = '0xe4684AFE69bA238E3de17bbd0B1a64Ce7077da42'; - -// Games -const VIDYAFLUX = '0x34317e2Da45FeC7c525aCa8dAbF22CbC877128a3'; -const INVENTORYV2 = '0x9680223F7069203E361f55fEFC89B7c1A952CDcc'; -const LEMONADESTAND = '0xf1261B8aD1a1c1856F0DE117Cd90BAc64b386285'; - -// LPs -const UNISWAP_PAIR = '0xDA3706c9A099077e6BC389D1baf918565212A54D'; -const UNISWAP_PAIR_CRAMER = '0x507C7d56c69bEDC528c3AA00b018656D20605663'; - -module.exports = { - methodology: 'Counts the total number of tokens locked in staking contracts, game contracts and project treasury.', - ethereum: { - tvl: () => ({}), - staking: sumTokensExport({ - owners: [SINGLE_SIDE_TELLER, VAULT, VIDYAFLUX, INVENTORYV2, LEMONADESTAND, ], - tokens: [VIDYA_TOKEN,], - }), - pool2: sumTokensExport({ - owners: [LP_TELLER, ], - tokens: [UNISWAP_PAIR, UNISWAP_PAIR_CRAMER], - }), - } -}; diff --git a/projects/vies-token/index.js b/projects/vies-token/index.js deleted file mode 100644 index 248089d92d3..00000000000 --- a/projects/vies-token/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const VIES_TOKEN_CONTRACT = "0xB1D4e07659c91872dB927939f0BC6CD0747764BC"; - -const STAKING_CONTRACT = "0xEDE0c6549AC5929bf54E893cD125B1d4553D86bb"; -const VAULT_CONTRACT = "0xae31BBB53d73EAED2D0412335F723052aA7390BA"; - -module.exports = { - start: 1751302800, - cronos: { - tvl: () => ({}), - staking: sumTokensExport({ - owners: [STAKING_CONTRACT, VAULT_CONTRACT,], - token: VIES_TOKEN_CONTRACT, - }), - } -}; \ No newline at end of file diff --git a/projects/vigor/index.js b/projects/vigor/index.js deleted file mode 100644 index 48e089925db..00000000000 --- a/projects/vigor/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos") -const sdk = require('@defillama/sdk') -const account1 = 'vigorlending' -const tokens1 = [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], - ["everipediaiq", "IQ", "everipedia"], - ["btc.ptokens", "PBTC", "bitcoin"], - ["eth.ptokens", "PETH", "ethereum"], -]; - -const account2 = 'vigorstaking' -const tokens2 = [ - ["eosio.token", "EOS", "eos"], - ["tethertether", "USDT", "tether"], -]; - -module.exports = { - timetravel: false, - eos: { - tvl: sdk.util.sumChainTvls([ - () => get_account_tvl(account1, tokens1), - () => get_account_tvl(account2, tokens2), - ]) - }, -} diff --git a/projects/vii-finance/index.js b/projects/vii-finance/index.js deleted file mode 100644 index 8489b5d8dc0..00000000000 --- a/projects/vii-finance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Count all assets are deposited in all vaults curated by VII Finance.', - blockchains: { - unichain: { - eulerVaultOwners: [ - '0x12e74f3C61F6b4d17a9c3Fdb3F42e8f18a8bB394', - ], - }, - } -} - -module.exports = getCuratorExport(configs) \ No newline at end of file diff --git a/projects/vikings/index.js b/projects/vikings/index.js deleted file mode 100644 index 4351068c79a..00000000000 --- a/projects/vikings/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0x04b611A65A5cfEFC1C449F725b1948eeaadEB231"; -module.exports = ohmTvl(treasuryAddress, [ - ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], - ["0x1E2D68196AcF7EB9e345c531e476E726D60a5C4b", true], -], "avax", "0x743DE042c7be8C415effa75b960A2A7bB5fc0704", "0xe0474c15bc7f8213ee5bfb42f9e68b2d6be2e136") - -module.exports.deadFrom = '2022-06-30' \ No newline at end of file diff --git a/projects/vine/index.js b/projects/vine/index.js deleted file mode 100644 index 686ef8c3789..00000000000 --- a/projects/vine/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -module.exports = { - start: '2024-01-28', - sapphire: { - tvl: sumTokensExport({ owner: '0x1882560361578F2687ddfa2F4CEcca7ae2e614FD', tokens: [nullAddress] }), - }, -} diff --git a/projects/vinufinance/index.js b/projects/vinufinance/index.js deleted file mode 100644 index 01d24def09c..00000000000 --- a/projects/vinufinance/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const CONTROLLER = '0x17bA239f2815BA01152522521737275a2439216f' -const EXECUTED_EVENT_ABI = 'event Executed(uint256 indexed proposalIdx, uint256 totalVotes, uint256 voteTokenTotalSupply)' -const GET_PROPOSAL_ABI = 'function getProposal(uint256 _proposalIdx) view returns (address _target, uint256 _action, uint256 _totalVotes, address _vetoApprover, bool _executed, uint256 _deadline)' -const POOL_WHITELISTED_ABI = 'function poolWhitelisted(address) view returns (bool)' -const GET_POOL_INFO_ABI = 'function getPoolInfo() external view returns (address _loanCcyToken, address _collCcyToken, uint256 _maxLoanPerColl, uint256 _minLoan, uint256 _loanTenor, uint256 _totalLiquidity, uint256 _totalLpShares, uint96 _rewardCoefficient, uint256 _loanIdx)' - -async function tvl(api) { - // Retrieve whitelisted pools by getting whitelist proposal logs and checking if the target pool is whitelisted - const executedLogs = await getLogs2({ api, target: CONTROLLER, eventAbi: EXECUTED_EVENT_ABI, fromBlock: 1, }) - const proposals = await api.multiCall({ target: CONTROLLER, abi: GET_PROPOSAL_ABI, calls: executedLogs.map(l => l.proposalIdx.toString()) }) - const potentialPools = proposals.map(p => p._target) - const isWhitelisted = await api.multiCall({ target: CONTROLLER, abi: POOL_WHITELISTED_ABI, calls: potentialPools }) - const whitelistedPools = potentialPools.filter((_, idx) => isWhitelisted[idx]) - - // Retrieve pool info for whitelisted pools - const poolInfos = await api.multiCall({ abi: GET_POOL_INFO_ABI, calls: whitelistedPools }) - const ownerTokens = poolInfos.map((pool, idx) => [[pool._loanCcyToken, pool._collCcyToken], whitelistedPools[idx]]) - - return sumTokens2({ api, ownerTokens }) -} - -module.exports = { - vinu: { - tvl - } -} \ No newline at end of file diff --git a/projects/vinuswap/index.js b/projects/vinuswap/index.js deleted file mode 100644 index 7e78bf2b274..00000000000 --- a/projects/vinuswap/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -// v1.1 factory -const factories = [ - '0x4bC45A5db58d4535FaF668F392035407d2a14E76', // v1 - '0xd74dEe1C78D5C58FbdDe619b707fcFbAE50c3EEe' // v1.1 -] - -// Deployed with an old contract -const V1_POOLS = [ - '0xa97FA6E9A764306107F2103a2024Cfe660c5dA33', - '0x3424b0dd7715C8db92414DB0c5A9E5FA0D51cCb5', - '0xfD763943f628e125CEE3D8d85DC0fc7098355d16', - '0x8d713bC2d35327B536A8B2CCec9392e57C0D04B4', - '0xd50ee26F62B1825d14e22e23747939D96746434c' -] - -async function tvl(api) { - const ownerTokens = [] - const token0s = await api.multiCall({ abi: 'address:token0', calls: V1_POOLS}) - const token1s = await api.multiCall({ abi: 'address:token1', calls: V1_POOLS}) - - ownerTokens.push(...V1_POOLS.map((pool, idx) => [[token0s[idx], token1s[idx]], pool])) - - const logs = await getLogs2({ api, target: factories[1], eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address feeManager, address pool)', fromBlock: 1, }) - - ownerTokens.push(...logs.map(l => [[l.token0, l.token1], l.pool])) - return sumTokens2({ api, ownerTokens }) -} - -module.exports = { - vinu: { - tvl - } -} \ No newline at end of file diff --git a/projects/viperswap/index.js b/projects/viperswap/index.js deleted file mode 100644 index 07a9b8a7c31..00000000000 --- a/projects/viperswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const viper = ADDRESSES.harmony.VIPER; -const xviper = "0xe064a68994e9380250cfee3e8c0e2ac5c0924548"; - -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'harmony': '0x7d02c116b98d0965ba7b642ace0183ad8b8d2196' -}, { staking: { harmony: [xviper, viper] }, - hallmarks:[ - [1655991120, "Horizon bridge Hack $100m"], - ],}) \ No newline at end of file diff --git a/projects/vires/index.js b/projects/vires/index.js deleted file mode 100644 index 9c99fc32c96..00000000000 --- a/projects/vires/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const { sumTokens, call } = require('../helper/chain/waves') -const methodologies = require('../helper/methodologies') - -module.exports = { - timetravel: false, - methodology: methodologies.lendingMarket, - waves: { tvl, borrowed }, - hallmarks: [ - [1659092400, "Bad debt settlement in USDN"], - ], -} -const aTokens = [ - // v2 pepe - '3PMYady7KzUNnRrFGzMBnq7akMDWiCQyoQz', - '3PHxubMUtynEY2AeHq3K1kUizRPN9HUC2rt', - '3PByijo1xaCSYNKnQb98U7YMPwp5tNF84JQ', - '3PLLikQB5JEREMhjQMD1ZX7HkYZJMRW6J1q', - '3P5ggc5ssBHp1Dr7HwGLYf8SQimta99q5QT', - - // v1 - "3PCwFXSq8vj8iKitA5zrrLRbuqehfmimpce", - "3PEiD1zJWTMZNWSCyzhvBw9pxxAWeEwaghR", - "3P8G747fnB1DTQ4d5uD114vjAaeezCW4FaM", - "3PA7QMFyHMtHeP66SUQnwCgwKQHKpCyXWwd", - "3PPdeWwrzaxqgr6BuReoF3sWfxW8SYv743D", - "3PGCkrHBxFMi7tz1xqnxgBpeNvn5E4M4g8S", - "3PBjqiMwwag72VWUtHNnVrxTBrNK8D7bVcN", - "3PGzUA7Yp2RFobH9mPFYsZC1wkwWHNsP14q", - "3PNKc29PsUULxcHexjcZu7cMBqAAEYNfXnH", - "3PBEwUv36ZXRiDEaVmXR41sPvbGfm3nyC6k", - "3PN1LXdwuFWH3paF3fpMNCWk7oWRzXCeMSC" - -] - -async function tvl(api) { - return sumTokens({ - owners: aTokens, api, includeWaves: true, - }) -} - -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)) -} - -async function borrowed(api) { - for (const token of aTokens) { - const assetId = (await call({ target: token, key: 'assetId'})).split('_')[0] - const res = (await call({ target: token, key: 'reserveGlobalData'})).split('|')[2] - api.add(assetId, res) - await sleep(500) - } -} \ No newline at end of file diff --git a/projects/virtue/index.js b/projects/virtue/index.js deleted file mode 100644 index 7422b61cbf0..00000000000 --- a/projects/virtue/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const iota = require('../helper/chain/iota') -const {getAllVaults} = require("./utils") - -const COIN_TYPES= { - IOTA: "0x2::iota::IOTA", - stIOTA: - "0x346778989a9f57480ec3fee15f2cd68409c73a62112d40a3efd13987997be68c::cert::CERT", - VUSD: "0xd3b63e603a78786facf65ff22e79701f3e824881a12fa3268d62a75530fe904f::vusd::VUSD", -}; - -async function getStIOTARatio() { - const nativePool = await iota.getObject('0x02d641d7b021b1cd7a2c361ac35b415ae8263be0641f9475ec32af4b9d8a8056'); - const stIOTAMetadata = await iota.getObject('0x8c25ec843c12fbfddc7e25d66869f8639e20021758cac1a3db0f6de3c9fda2ed'); - - const stIOTATotalSupply = BigInt(stIOTAMetadata.fields.total_supply.fields.value) / BigInt(10 ** 9) - const stIOTATotalStaked = BigInt(nativePool.fields.total_staked) / BigInt(10 ** 9) - const stIOTATotalRewards = BigInt(nativePool.fields.total_rewards) / BigInt(10 ** 9) - const tvl = stIOTATotalStaked + stIOTATotalRewards - - return Number(stIOTATotalSupply) / Number(tvl) -} - -async function tvl(api) { - const vaults = await getAllVaults() - const stIOTARatio = await getStIOTARatio() - Object.values(vaults).forEach(async (vault)=>{ - const balanceAmount = Number(vault.collateralBalance) - const symbol = vault.token - if(symbol === 'IOTA'){ - api.add(COIN_TYPES['IOTA'], balanceAmount) - } - if(symbol === 'stIOTA'){ - api.add(COIN_TYPES['IOTA'], balanceAmount/stIOTARatio) - } - - }) -} - - -module.exports = { - timetravel: false, - iota: { - tvl, - } -} \ No newline at end of file diff --git a/projects/virtue/utils.js b/projects/virtue/utils.js deleted file mode 100644 index d9e31d2b56d..00000000000 --- a/projects/virtue/utils.js +++ /dev/null @@ -1,112 +0,0 @@ -const iota = require('../helper/chain/iota'); - -const VAULT_MAP = { - IOTA: { - priceAggregater: { - objectId: "0x052c40b4e8f16df5238457f3a7b3b0eeaa49c6bc8acc22f6a7790ab32495b2c6", - mutable: false, - initialSharedVersion: 22329880, - }, - vault: { - objectId: "0xaf306be8419cf059642acdba3b4e79a5ae893101ae62c8331cefede779ef48d5", - mutable: true, - initialSharedVersion: 22329895, - }, - pythPriceId: "0xc7b72e5d860034288c9335d4d325da4272fe50c92ab72249d58f6cbba30e4c44", - }, - stIOTA: { - priceAggregater: { - objectId: "0x8c730f64aa369eed69ddf7eea39c78bf0afd3f9fbb4ee0dfe457f6dea5a0f4ed", - mutable: false, - initialSharedVersion: 22329881, - }, - vault: { - objectId: "0xc9cb494657425f350af0948b8509efdd621626922e9337fd65eb161ec33de259", - mutable: true, - initialSharedVersion: 22329896, - }, - }, -}; - -const formatUnits = (value, decimals) => { - let display = value.toString(); - const negative = display.startsWith("-"); - if (negative) display = display.slice(1); - display = display.padStart(decimals, "0"); - const integer = display.slice(0, display.length - decimals); - let fraction = display.slice(display.length - decimals); - fraction = fraction.replace(/(0+)$/, ""); - return `${negative ? "-" : ""}${integer || "0"}${fraction ? `.${fraction}` : ""}`; -}; - -const formatBigInt = (value, decimals = 9) => { - const formatted = formatUnits(BigInt(value), decimals); - return Number(formatted); -}; - -function getIotaObjectData(resp) { - return resp.data; -} - -function isIotaObjectDataWithContent( - data, -) { - return data.content !== undefined; -} - -function getMoveObject(data) { - const obj = "data" in data ? getIotaObjectData(data) : data; - if (!obj || !isIotaObjectDataWithContent(obj) || obj.content.dataType !== "moveObject") { - return undefined; - } - return obj.content; -} - -function getObjectFields(resp) { - if ("fields" in resp) { - return resp.fields; - } - return getMoveObject(resp)?.fields; -} - -const parseVaultObject = (coinSymbol, fields) => { - return { - token: coinSymbol, - positionTableSize: fields.position_table.fields.size, - collateralDecimal: Number(fields.decimal), - collateralBalance: fields.balance, - supply: fields.limited_supply.fields.supply, - maxSupply: fields.limited_supply.fields.limit, - interestRate: formatBigInt(fields.interest_rate.fields.value, 18), - minCollateralRatio: formatBigInt(fields.min_collateral_ratio.fields.value), - }; -}; - -async function getAllVaults() { - const vaultObjectIds = Object.values(VAULT_MAP).map((v) => v.vault.objectId); - - const vaultResults = await iota.getObjects(vaultObjectIds); - const vaults = vaultResults.reduce((acc, res) => { - const fields = getObjectFields(res); - const token = Object.keys(VAULT_MAP).find( - (key) => VAULT_MAP[key].vault.objectId === res?.fields.id.id, - ); - if (!token) return acc; - const vault = parseVaultObject(token, fields); - acc[vault.token] = vault; - return acc; - }, {}); - - return vaults; -} - -module.exports = { - VAULT_MAP, - formatUnits, - formatBigInt, - getIotaObjectData, - getMoveObject, - getObjectFields, - parseVaultObject, - getAllVaults, -}; \ No newline at end of file diff --git a/projects/virtuswap/index.js b/projects/virtuswap/index.js deleted file mode 100644 index 879592d25a1..00000000000 --- a/projects/virtuswap/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { staking } = require('../helper/staking'); - -const config = { - polygon: { staker: '0x9C58a2B79cd054442D5970b925637B9E88E7ecc2', token: '0x57999936fC9A9EC0751a8D146CcE11901Be8beD0', factory: '0xd4E3668A9C39ebB603f02A6987fC915dBC906B43' }, - arbitrum: { staker: '0x68748818983CD5B4cD569E92634b8505CFc41FE8', token: '0xd1E094CabC5aCB9D3b0599C3F76f2D01fF8d3563', factory: '0x389DB0B69e74A816f1367aC081FdF24B5C7C2433' }, -} - -module.exports = { - methodology: 'Sum of all pools liquidity plus staked VRSW tokens', -} - -Object.keys(config).forEach(chain => { - const { staker, token } = config[chain] - module.exports[chain] = { tvl, staking: staking(staker, token) } -}) - - -async function tvl(api) { - const pools = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: config[api.chain].factory }) - const tokenLength = await api.multiCall({ abi: 'uint256:allowListLength', calls: pools }) - const nativeTokens = await api.multiCall({ abi: 'function getTokens() view returns (address, address)', calls: pools }) - const calls = [] - for (let i = 0; i < pools.length; i++) { - const pool = pools[i]; - const tokensNumber = tokenLength[i]; - for (let j = 0; j < tokensNumber; j++) { - calls.push({ target: pool, params: [j], poolId: i }); - } - } - const tokens = await api.multiCall({ abi: 'function allowList(uint256) view returns (address)', calls }) - const ownerTokens = pools.map((v, i) => [nativeTokens[i], v]) - tokens.forEach((v, i) => { - const tokens = ownerTokens[calls[i].poolId][0] - tokens.push(v) - }) - - return api.sumTokens({ ownerTokens, }); -} \ No newline at end of file diff --git a/projects/vishwa/index.js b/projects/vishwa/index.js deleted file mode 100644 index 0441506d002..00000000000 --- a/projects/vishwa/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const {sumTokens} = require("../helper/chain/bitcoin"); -const {get} = require("../../projects/helper/http"); - -const addressBook = { - bitcoin: 'https://api.btcvc.vishwanetwork.xyz/btc/address', -} - -Object.keys(addressBook).forEach(async chain => { - module.exports[chain] = { - tvl: async () => { - let addresses = (await get(addressBook[chain]))?.data || []; - return await sumTokens({owners: addresses}) - } - } -}) diff --git a/projects/visor/abis/hypervisor.json b/projects/visor/abis/hypervisor.json deleted file mode 100644 index f8a8cb88c01..00000000000 --- a/projects/visor/abis/hypervisor.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getCurrentTotalStakeUnits": "uint256:getCurrentTotalStakeUnits", - "getHyperVisorData": "function getHypervisorData() view returns (tuple(address stakingToken, address rewardToken, address rewardPool, tuple(uint256 floor, uint256 ceiling, uint256 time) rewardScaling, uint256 rewardSharesOutstanding, uint256 totalStake, uint256 totalStakeUnits, uint256 lastUpdate, tuple(uint256 duration, uint256 start, uint256 shares)[] rewardSchedules) hypervisor)" -} \ No newline at end of file diff --git a/projects/visor/config.js b/projects/visor/config.js deleted file mode 100644 index 1b9b30aef3d..00000000000 --- a/projects/visor/config.js +++ /dev/null @@ -1,196 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - polygon: { blacklistedHypes: ['0xa9782a2c9c3fb83937f14cdfac9a6d23946c9255'], }, - ethereum: { - blacklistedHypes: [ADDRESSES.ethereum.WBTC], - LIQUIDITY_MINING_POOLS: [ - "0x64fcdd0de44f4bd04c039b0664fb95ef033d4efb", // GAMMA/ETH UNI-V2 - "0x96c105e9e9eab36eb8e2f851a5dabfbbd397c085", // USDC - "0xebae3cb14ce6c2f26b40b747fd92ccaf03b98659", // USDT - "0xf178d88d2f6f97ca32f92b465987068e1cce41c5", // DAI - ] - }, -} - -/* List of hypervisor registries by chain - One chain can have multiple registries for different underlying DEXes */ -const HYPE_REGISTRY = { - ethereum: [ - ["0x31ccdb5bd6322483bebd0787e1dabd1bf1f14946", 13659998], // Uniswap - ["0x2E18B825b049c4994370b0DB6C35d0100295b96C", 18319961], // Pancakeswap - ], - polygon: [ - ["0x0Ac4C7b794f3D7e7bF1093A4f179bA792CF15055", 25305922], // Uniswap - ["0x97686103B3E7238Ca6c2C439146B30adBd84a593", 43578714], // Sushiswap - ["0xAeC731F69Fa39aD84c7749E913e3bC227427Adfd", 35447517], // Quickswap - ["0xcAC19d43C9558753d7535978A370055614Ce832E", 42562328], // Retro - ["0x7b9c2f68f16c3618bb45616fb98d83f94fd7062e", 44933860], // Ascent - ], - polygon_zkevm: [ - ["0xff8Fae227edb4Ab23e61EC6cf0a65F3bCdCf45Bd", 11479842], // Uniswap - ["0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", 152596], // Quickswap Algebra - ["0xf9aDaa55014242c1005dB307C4e41c541f26bAAA", 10725633], // Quickswap UniV3 - ], - optimism: [ - ["0xF5BFA20F4A77933fEE0C7bB7F39E7642A070d599", 6538026], // Uniswap - ["0x617BA5fcB4e74758795DceBecA420116e50bD289", 126667774], // Sushiswap - ["0xF802D5c44dC4E3bB0eCcf680a6bA82Cbd24B9F33", 125319599], // Velodrome - ], - arbitrum: [ - ["0x66CD859053c458688044d816117D5Bdf42A56813", 10617223], // Uniswap - ["0x166cD995F9301590e381c488FFD4f18C3ca38A27", 144400180], // Pancakeswap - ["0x0f867F14b39a5892A39841a03bA573426DE4b1d0", 102240553], // Sushiswap - ["0x37595FCaF29E4fBAc0f7C1863E3dF2Fe6e2247e9", 63562888], // Zyberswap - ["0x34Ffbd9Db6B9bD8b095A0d156de69a2AD2944666", 99952729], // Ramses - ["0xa216C2b6554A0293f69A1555dd22f4b7e60Fe907", 87343880], // Camelot - ], - bsc: [ - ["0x0b4645179C1b668464Df01362fC6219a7ab3234c", 26520492], // Uniswap - ["0x8d7884666C056555fDD423Cd37846968040651b3", 32490558], // Pancakeswap - ["0xd4bcFC023736Db5617E5638748E127581d5929bd", 26097149], // Thena - ["0xCE975d49849757103149696A05FdF614987B2AeD", 1000], // ThenaV3 - ], - moonbeam: [ - ["0x688cb9492bd2C72016f1765d813B2D713aa1F4C7", 4485966], // Uniswap - ["0xB7dfC304D9cd88D98A262cE5B6a39Bb9d6611063", 3591244], // Beamswap - ["0x6002D7714e8038f2058e8162b0b86c0b19c31908", 3569487], // Stellaswap - ], - celo: [ - ["0x0F548d7AD1A0CB30D1872b8C18894484d76e1569", 14032548], // Uniswap - ], - avax: [ - ["0xbF145c5239B1327909f3e37CA0cF890d014105E2", 43083367], // Uniswap - ["0x71ea9545ED7f8662a8B461d7cb0899745E3fb3E6", 39225125], // Pharaoh - ], - fantom: [ - ["0xf874d4957861e193aec9937223062679c14f9aca", 62144066], // Spiritswap - ], - mantle: [ - ["0x849214C123Ba690D5fBc9301Ef2e66491fCd6FE6", 62288178], // Uniswap - ["0x683292172E2175bd08e3927a5e72FC301b161300", 1000], // FusionX - ["0xa5E9006C17740Cb9e4898657721c4dFE103d8456", 58580400], // Cleopatra - ], - rollux: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 1435083], // PegaSys - ], - linea: [ - ["0xA8E2fD481342976a3259591FBc08999369a43C5A", 3554431], // Uniswap - ["0xc27ddd78fc49875fe6f844b72bbf31dfbb099881", 163300], // Lynex - ["0x9C3E0445559E6de1fe6391E8e018DcA02B480836", 3952143], // Nile - ["0xFf0D3aBfd3003D4D5Ad7d57C912cca02ebA6036B", 4775887], // Linehub - ], - base: [ - ["0x829432679F69DBd8b2575f006EC0129894a39D86", 12465470], // Uniswap - ["0x339685503dD534D27ce4a064314c2E5c7144aa92", 7783229], // Pancakeswap - ["0x6d5c54F535b073B9C2206Baf721Af2856E5cD683", 3785552], // Sushiswap - ["0x1E86A593E55215957C4755f1BE19a229AF3286f6", 2798768], // SynthSwap - ["0xB24DC81f8Be7284C76C7cF865b803807B3C2EF55", 4249062], // BaseX - ["0x39ce2eB762e7bFe19b6AD4D5bA384c67CE4051f0", 7310157], // Swapbased - ["0x8118C33513feC13f8cf488CCb4509190650F0e92", 7310111], // Baseswap - ["0xf1DF4F17e34Ba710DfFC487F73f1e19476E815a6", 8743213], // Thick - ["0xe1cd1c2d2e4B44dE211D554649BC7dc49eF07784", 15063294], // Kinetix - ["0x6809f4881707459Ad0287C6467365E3C910e9373", 19631061], // Aerodrome - ["0x392007E4a40236c656548b4655c372bD327A6096", 22026482], // Kim - ], - kava: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 6384272], // Kinetix - ], - op_bnb: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 5150910], // Pancakeswap - ["0xf14Fb95d6E7E1ab5fCdFfF7Ab203a84b9361E6FC", 10038113], // Thena - ], - manta: [ - ["0x670003267DDFF9C2c740EC9A1645569cCCDC6Bf7", 2261164], // Uniswap - ["0x8a9570ec97534277Ade6e46d100939FbCE4968f0", 689622], // Quickswap - ["0x683292172E2175bd08e3927a5e72FC301b161300", 394949], // Apertureswap - ], - metis: [ - ["0xFc13Ebe7FEB9595D70195E9168aA7F3acE153621", 9080358], // Hercules - ], - xdai: [ - ["0xc0766FF871c6C8e72C110100d0120829dc017d38", 36307837], // Uniswap - ["0x683292172E2175bd08e3927a5e72FC301b161300", 31760496], // Swapr - ], - imx: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 3951377], // Quickswap - ], - scroll: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 4651930], // Uniswap - ["0x0B79d5117dd22eDC1e5F2649aC32746aF7Ca3445", 8111003], // Scribe - ], - blast: [ - ["0xFc13Ebe7FEB9595D70195E9168aA7F3acE153621", 1727054], // Uniswap - ["0xF44cECB1CF40ee12303E85Eb8651263c01812EaD", 1815717], // Thruster - ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1005700], // Blaster - ["0x6c509511672f3cDC0440C219169e4367425870a8", 2891439], // Fenix - ], - xlayer: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 696737], // Quickswap - ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 697096], // xtrade - ], - mode: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 696737], // KIM - ], - taiko: [ - ["0xc27ddd78fc49875fe6f844b72bbf31dfbb099881", 57600], // Uniswap - ["0x1E97925c365cd96D74Ec55A04569915c4D65e5e0", 606236], // Panko - ], - rsk: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 6414342], // Uniswap - ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 6414350], // Sushiswap - ], - iotaevm: [ - ["0xF44cECB1CF40ee12303E85Eb8651263c01812EaD", 223591], // Wagmi - ], - core: [ - ["0x32e27fF479454e32868ff67Ee9F06BAFDC1E908F", 17268275], // Glyph - ["0xFc13Ebe7FEB9595D70195E9168aA7F3acE153621", 17164390], // CoreX - ], - zircuit: [ - ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1216191], // Gmeow - ["0x683292172E2175bd08e3927a5e72FC301b161300", 1216165], // Circuit - ["0x17307DaC1384719d263556aAcC3e62c0053FE25D", 4826564], // Ocelex - ], - wc: [ - ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 4799965], // Uniswap - ], - apechain: [ - ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 476343], // Camelot - ], - sonic: [ - ["0xDe4f68F55B4816adaD55047D1E8188d8525DCE72", 3288641], // Uniswap - ["0x683292172E2175bd08e3927a5e72FC301b161300", 1825082], // Equalizer - ["0x2705176750a81d6b1C64c5081d55aA1B54681917", 2760689], // Shadow - ["0xB24DC81f8Be7284C76C7cF865b803807B3C2EF55", 3295678], // Spookyswap - ["0x7Ef5e8d401BFEe56a967781a7cc4AB355c2E51Cc", 4436657], // Wagmi - ], - bob: [ - ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 11706713], // Uniswap - ], - hemi: [ - ["0x1E86A593E55215957C4755f1BE19a229AF3286f6", 1723870], // Uniswap - ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1723870], // Sushiswap - ], - nibiru: [ - ["0x2A078554094f5e342B69E5b6D3665507283EfBa1", 1723870], // Uniswap - ], - sei: [ - ["0x6c509511672f3cDC0440C219169e4367425870a8", 1723870], // Yaka - ], - berachain: [ - ["0x116deEa9F1Dd174E08Ed3287180Ec16840d1B0c3", 1723870], // Bulla - ], - unichain: [ - ["0x2A078554094f5e342B69E5b6D3665507283EfBa1", 1723870], // Uniswapv4 - ], -}; - -Object.keys(HYPE_REGISTRY).forEach(chain => { - config[chain] = { - ...config[chain], - registries: HYPE_REGISTRY[chain].map(([factory, fromBlock]) => ({ factory, fromBlock, })), - } -}) - -module.exports = config diff --git a/projects/visor/index.js b/projects/visor/index.js deleted file mode 100644 index e18edc2971f..00000000000 --- a/projects/visor/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const hypervisorAbi = require("./abis/hypervisor.json"); -const { staking } = require("../helper/staking"); -const getTotalAmounts = - "function getTotalAmounts() view returns (uint256 total0, uint256 total1)"; -const { getUniqueAddresses } = require("../helper/utils"); -const config = require("./config"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -module.exports = { - doublecounted: true, - start: '2021-03-25', // (Mar-25-2021 01:42:42 PM +UTC) -}; - -Object.keys(config).forEach(chain => { - let { blacklistedHypes = [], registries, LIQUIDITY_MINING_POOLS } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - - if (LIQUIDITY_MINING_POOLS) { - const bals = await api.multiCall({ abi: hypervisorAbi.getHyperVisorData, calls: LIQUIDITY_MINING_POOLS, }); - bals.forEach(({ stakingToken, totalStake }) => api.add(stakingToken, totalStake)); - } - - let hypervisors = [] - for (const { factory, fromBlock } of registries) { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event HypeAdded(address hype, uint256 index)', - onlyArgs: true, - fromBlock, - }) - hypervisors.push(...logs.map(i => i.hype)) - } - hypervisors = getUniqueAddresses(hypervisors); - if (blacklistedHypes.length) { - const blacklistSet = new Set(blacklistedHypes.map((i) => i.toLowerCase())); - hypervisors = hypervisors.filter((i) => !blacklistSet.has(i.toLowerCase())); - } - const supplies = await api.multiCall({ - abi: "erc20:totalSupply", - calls: hypervisors, - permitFailure: true, - }); - hypervisors = hypervisors.filter((_, i) => +supplies[i] > 0); - - const [token0s, token1s, bals] = await Promise.all([ - api.multiCall({ calls: hypervisors, abi: "address:token0" }), - api.multiCall({ calls: hypervisors, abi: "address:token1" }), - api.multiCall({ calls: hypervisors, abi: getTotalAmounts }), - ]); - bals.forEach(({ total0, total1 }, i) => { - api.add(token0s[i], total0); - api.add(token1s[i], total1); - }); - return sumTokens2({ api }) - } - } -}) - -module.exports.ethereum.staking = staking("0x26805021988f1a45dc708b5fb75fc75f21747d8c", "0x6bea7cfef803d1e3d5f7c0103f7ded065644e197",) diff --git a/projects/vitcswap/api.js b/projects/vitcswap/api.js deleted file mode 100644 index ec0e96837da..00000000000 --- a/projects/vitcswap/api.js +++ /dev/null @@ -1,16 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl() { - return { - tether: (await get('https://vite-api.thomiz.dev/tvl/vitcswap')).tvl - } -} - -module.exports = { - deadFrom: "2025-03-01", - timetravel: false, - misrepresentedTokens: true, - vite:{ - tvl - }, -} \ No newline at end of file diff --git a/projects/vitcswap/index.js b/projects/vitcswap/index.js deleted file mode 100644 index 3d38d833104..00000000000 --- a/projects/vitcswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("vitcswap", ['vite']), -} \ No newline at end of file diff --git a/projects/vitex/index.js b/projects/vitex/index.js deleted file mode 100644 index 8a000323d4d..00000000000 --- a/projects/vitex/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl() { - const data = await get('https://vite-info-api.xvite.workers.dev/') - return { - tether: data.tvlRankings.filter(i => i.name == 'ViteX')[0].amount - } -} - -module.exports = { - deadFrom: "2025-03-01", - timetravel: false, - misrepresentedTokens: true, - vite:{ - tvl - }, -} \ No newline at end of file diff --git a/projects/viva/index.js b/projects/viva/index.js deleted file mode 100644 index 34b5ee3f735..00000000000 --- a/projects/viva/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl() { - const data = await get('https://vite-info-api.xvite.workers.dev/') - return { - tether: data.tvlRankings.filter(i => i.name == 'Viva')[0].amount - } -} - -module.exports = { - deadFrom: "2025-03-01", - timetravel: false, - misrepresentedTokens: true, - vite:{ - tvl - }, -} \ No newline at end of file diff --git a/projects/vivacity/index.js b/projects/vivacity/index.js deleted file mode 100644 index 4f7630e462e..00000000000 --- a/projects/vivacity/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { compoundExports } = require('../helper/compound') - -const compoundData = compoundExports("0xe49627059Dd2A0fba4A81528207231C508d276CB") - -module.exports = { - canto: compoundData -} diff --git a/projects/vivaleva/index.js b/projects/vivaleva/index.js deleted file mode 100644 index f43dda54f75..00000000000 --- a/projects/vivaleva/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getConfig } = require('../helper/cache') -const getAllPositionsByIdsABI = "function getAllPositionsByIds(address vaultAddress, uint256[] positionIds) view returns (tuple(address worker, uint256 positionId, uint256 positionDebtAmount, uint256 positionHealth, uint256[] positionIngredients, uint16 positionKillFactorBps)[] positionInfos)" - -module.exports = { - timetravel: false, - era: { - async tvl(api) { - const _data = await getConfig('vivaleva', "https://sbb.sooho.io/api/v1/external/vivaleva/defiLlama") - - const data = { - ..._data, - pancakeSwapV3Worker: [ - { - name: "USDC-WETH PancakeSwapV3 Farm Worker", - address: "0x9ac1CD6f35934bAeD9986711b9D983260C8F38C4", - lpTokenAddress: "0x291d9F9764c72C9BA6fF47b451a9f7885Ebf9977", - farmingTokenAddress: ADDRESSES.era.USDC, - baseTokenAddress: ADDRESSES.era.WETH, - }, - { - name: "ETH-USDC PancakeswapV3 Farm", - address: "0x9ca8aD7290079BF5dbE42CCB917474379Aa167e5", - farmingTokenAddress: ADDRESSES.era.WETH, - baseTokenAddress: ADDRESSES.era.USDC, - lpToken: "0x291d9F9764c72C9BA6fF47b451a9f7885Ebf9977", - }, - { - name: "USDT-USDC PancakeswapV3 Farm", - address: "0xDa3518E5F2972e0Edc1401336b94E257c58eeb18", - farmingTokenAddress: ADDRESSES.era.USDT, - baseTokenAddress: ADDRESSES.era.USDC, - lpToken: "0x3832fB996C49792e71018f948f5bDdd987778424", - } - ], - commonCalculator: "0x4Ca7a070b0e62F71C46AB8B2fB4bd21e5B2B9Ac6", - } - const vaults = data.vaults; - const syncswapWorkers = data.syncSwapWorkers; - const vaultBalances = await api.multiCall({ abi: "uint256:vaultBalance", calls: vaults.map((v) => v.address), }); - const positionLengths = await api.multiCall({ abi: "uint256:positionsLength", calls: vaults.map((v) => v.address), }); - vaults.forEach((v, i) => { - api.add(v.baseTokenAddress, vaultBalances[i]); - }); - - // from pancakeSwapV3Worker - const pancakeSwapV3Workers = data.pancakeSwapV3Worker; - const commonCalculator = data.commonCalculator; - for (const [i, v] of vaults.entries()) { - const positionLength = positionLengths[i]; - const positions = Array.from(Array(Number(positionLength)).keys()); - const positionIngredients = await api.call({ abi: getAllPositionsByIdsABI, params: [v.address, positions], target: commonCalculator }); - for (const cur of positionIngredients) { - const poolAddress = cur.worker.toLowerCase(); - const baseAmount = cur.positionIngredients[0]; - const farmAmount = cur.positionIngredients[1]; - const pancakeSwapV3Worker = pancakeSwapV3Workers.find((v) => v.address.toLowerCase() === poolAddress); - if (!pancakeSwapV3Worker) { - continue; - } - api.add(pancakeSwapV3Worker.baseTokenAddress, baseAmount); - api.add(pancakeSwapV3Worker.farmingTokenAddress, farmAmount); - } - } - - const [ - syncswapWorkerBalances, - syncswapReserves, - syncswapLpTotalSupplies, - token0s, - token1s, - ] = await Promise.all([ - api.multiCall({ abi: "uint256:totalStakedLpBalance", calls: syncswapWorkers.map((v) => v.address), }), - api.multiCall({ abi: "function getReserves() view returns (uint256, uint256)", calls: syncswapWorkers.map((v) => v.lpTokenAddress), }), - api.multiCall({ abi: "uint256:totalSupply", calls: syncswapWorkers.map((v) => v.lpTokenAddress), }), - api.multiCall({ abi: "address:token0", calls: syncswapWorkers.map((v) => v.lpTokenAddress), }), - api.multiCall({ abi: "address:token1", calls: syncswapWorkers.map((v) => v.lpTokenAddress), }), - ]); - - syncswapWorkers.forEach((w, i) => { - const token0 = token0s[i] - const token1 = token1s[i] - const lpBalance = BigInt(syncswapWorkerBalances[i]) - const totalSupply = BigInt(syncswapLpTotalSupplies[i]) - const [r0, r1] = syncswapReserves[i].map(BigInt); - const underlying0 = String(lpBalance * r0 / totalSupply); - const underlying1 = String(lpBalance * r1 / totalSupply); - api.add(token0, underlying0); - api.add(token1, underlying1); - }); - }, - }, -}; diff --git a/projects/vivelabouje/index.js b/projects/vivelabouje/index.js deleted file mode 100644 index 2c19092af3b..00000000000 --- a/projects/vivelabouje/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const chef = "0x1277dd1dCbe60d597aAcA80738e1dE6cB95dCB54" -const vive = "0xE509Db88B3c26D45f1fFf45b48E7c36A8399B45A" - -module.exports = { - ...masterChefExports(chef, "fantom", vive, false), -} \ No newline at end of file diff --git a/projects/vmex-fi/index.js b/projects/vmex-fi/index.js deleted file mode 100644 index ccc141b75d9..00000000000 --- a/projects/vmex-fi/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const config = { - optimism: { pool: '0x60F015F66F3647168831d31C7048ca95bb4FeaF9', }, - base: { pool: '0x60F015F66F3647168831d31C7048ca95bb4FeaF9', }, -} - -Object.keys(config).forEach(chain => { - const { pool } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const reserveData = await getReserveData(api) - return api.sumTokens({ tokensAndOwners: reserveData.map(i => [i.token, i.aTokenAddress])}) - }, - borrowed: async (api) => { - const reserveData = await getReserveData(api) - const borrows = await api.multiCall({ abi: 'erc20:totalSupply', calls: reserveData.map(i => i.variableDebtTokenAddress)}) - api.addTokens(reserveData.map(i => i.token), borrows) - return api.getBalances() - }, - } - - async function getReserveData(api) { - let trancheId = 0 - let hasMoreTranches = true - let data = [] - do { - let reserves - try { - reserves = await api.call({ target: pool, abi: abi.getReservesList, params: [trancheId] }) - } catch (e) { - hasMoreTranches = false - return data - } - if (!reserves.length) return data - const iData = await api.multiCall({ abi: abi.getReserveData, calls: reserves.map(i => ({ params: [i, trancheId] })), target: pool }) - reserves.forEach((reserve, i) => iData[i].token = reserve) - data.push(...iData) - trancheId++ - } while (hasMoreTranches) - } -}) - -const abi = { - "getReserveData": "function getReserveData(address asset, uint64 trancheId) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address variableDebtTokenAddress, uint8 id, address interestRateStrategyAddress, uint64 baseLTV, uint64 liquidationThreshold, uint64 liquidationBonus, uint64 borrowFactor))", - "getReservesList": "function getReservesList(uint64 trancheId) view returns (address[])", -} \ No newline at end of file diff --git a/projects/vnx-rwa/index.js b/projects/vnx-rwa/index.js deleted file mode 100644 index 40ec627e836..00000000000 --- a/projects/vnx-rwa/index.js +++ /dev/null @@ -1,132 +0,0 @@ -const { getTokenSupplies } = require("../helper/solana"); -const fetch = require('node-fetch'); - -const ASSETS = { - EVM: { - ethereum: [ - "0x6d57b2e05f26c26b549231c866bdd39779e4a488", // VNXAU - "0x6bA75D640bEbfe5dA1197bb5A2aff3327789b5d3", // VEUR - "0x79d4f0232A66c4c91b89c76362016A1707CFBF4f", // VCHF - "0x34c9c643becd939c950bb9f141e35777559817cb" // VGBP - ], - polygon: [ - "0xC8bB8eDa94931cA2F20EF43eA7dBD58E68400400", // VNXAU - "0xE4095d9372E68d108225c306A4491cacfB33B097", // VEUR - "0xCdB3867935247049e87c38eA270edD305D84c9AE" // VCHF - ], - avax: [ - "0x7678e162f38ec9ef2Bfd1d0aAF9fd93355E5Fa0b", // VEUR, - "0x228a48df6819CCc2eCa01e2192ebAFfFdAD56c19" // VCHF, - ], - q: [ - "0xe4fadbbf24f118b1e63d65f1aac2a825a07f7619", // VNXAU - "0x513f99dee650f529d7c65bb5679f092b64003520", // VEUR - "0x65b9d36281e97418793f3430793f88440dab68d7" // VCHF - ], - arbitrum: [ - "0x4883C8f0529F37e40eBeA870F3C13cDfAD5d01f8", // VEUR - "0x02cea97794D2cFB5f560e1fF4e9C59D1BEC75969", // VCHF - ], - base: [ - "0xAc3FE22294beaED9d1FD752323a6d06D12Ff3098", // VNXAU - "0x4ed9Df25d38795a47f52614126e47f564D37F347", // VEUR - "0x1fcA74D9ef54a6AC80ffE7D3b14e76c4330Fd5D8", // VCHF - "0xAEB4bb7DebD1E5e82266f7c3b5cFf56B3A7BF411" // VGBP - ], - celo:[ - "0x9346F43c1588B6DF1D52bdD6Bf846064F92d9Cba", // VEUR - "0xC5ebEa9984C485EC5D58cA5a2D376620d93aF871", // VCHF - "0x7aE4265eCFC1F31bc0E112DfCFe3D78E01f4BB7f" // VGBP - ], - fraxtal:[ - "0x4c0BD74Da8237c08840984Fdb33A84B4586aAEe6", // VEUR - "0x418126BB59457aFDbA1eCF376f97400B4157425D", // VCHF - ] - }, - nonEVM: { - solana: [ - "9TPL8droGJ7jThsq4momaoz6uhTcvX2SeMqipoPmNa8R", // VNXAU - "C4Kkr9NZU3VbyedcgutU6LKmi6MKz81sx6gRmk5pX519", // VNXAU - "AhhdRu5YZdjVkKR3wbnUDaymVQL2ucjMQ63sZ3LFHsch", // VCHF - "5H4voZhzySsVvwVYDAKku8MZGuYBC7cXaBKDPW4YHWW1" // VGBP - ], - stellar: [ - "VNXAU-GCKIYYQVIFBIFDRN7BNDNHL3UZSFHT5NHDAISG2N3MWCZY3WNXL3LXN3", // VNXAU - "VEUR-GDXLSLCOPPHTWOQXLLKSVN4VN3G67WD2ENU7UMVAROEYVJLSPSEWXIZN", // VEUR - "VCHF-GDXLSLCOPPHTWOQXLLKSVN4VN3G67WD2ENU7UMVAROEYVJLSPSEWXIZN" // VCHF - ] - } -}; - -const MAPPINGS = { - stellar: { - 'VNXAU-GCKIYYQVIFBIFDRN7BNDNHL3UZSFHT5NHDAISG2N3MWCZY3WNXL3LXN3': '0x6d57b2e05f26c26b549231c866bdd39779e4a488', - 'VEUR-GDXLSLCOPPHTWOQXLLKSVN4VN3G67WD2ENU7UMVAROEYVJLSPSEWXIZN': '0x6bA75D640bEbfe5dA1197bb5A2aff3327789b5d3', - 'VCHF-GDXLSLCOPPHTWOQXLLKSVN4VN3G67WD2ENU7UMVAROEYVJLSPSEWXIZN': '0x79d4f0232A66c4c91b89c76362016A1707CFBF4f' - }, - q: { - '0xe4fadbbf24f118b1e63d65f1aac2a825a07f7619': '0x6d57b2e05f26c26b549231c866bdd39779e4a488', - '0x513f99dee650f529d7c65bb5679f092b64003520': '0x6bA75D640bEbfe5dA1197bb5A2aff3327789b5d3', - '0x65b9d36281e97418793f3430793f88440dab68d7': '0x79d4f0232A66c4c91b89c76362016A1707CFBF4f' - } -}; - -const fetchStellarSupply = async (asset) => { - const stellarApi = `https://api.stellar.expert/explorer/public/asset/${asset}`; - const response = await fetch(stellarApi); - const { supply } = await response.json(); - return supply / 1e7 * 1e18; // supply / stellar dec * eth dec -}; - -const solanaTvl = async (api, assets) => { - const supplies = await getTokenSupplies(assets) - api.addTokens(Object.keys(supplies), Object.values(supplies)); -}; - -const stellarTvl = async (api, assets) => { - const supplies = await Promise.all(assets.map(fetchStellarSupply)); - supplies.forEach((supply, index) => { - const ethereumAsset = MAPPINGS.stellar[assets[index]]; - api.add(`ethereum:${ethereumAsset}`, supply, { skipChain: true }); - }); -}; - -const evmTvl = (chain, assets) => { - return async (api) => { - const totalSupplies = await api.multiCall({ calls: assets, abi: 'erc20:totalSupply' }); - if (chain === 'q') { - totalSupplies.forEach((supply, index) => { - const ethereumAsset = MAPPINGS.q[assets[index]]; - api.add(`ethereum:${ethereumAsset}`, supply, { skipChain: true }); - }); - } else { - api.add(assets, totalSupplies); - } - }; -}; - -const nonEvmTvl = (chain, assets) => { - return async (api) => { - if (chain === "solana") { - await solanaTvl(api, assets); - } else if (chain === "stellar") { - await stellarTvl(api, assets); - } - }; -}; - -const getTvlFunction = (key, chain, assets) => { - if (key === 'EVM') { - return evmTvl(chain, assets); - } else if (key === 'nonEVM') { - return nonEvmTvl(chain, assets); - } -}; - -Object.entries(ASSETS).forEach(([key, chains]) => { - Object.entries(chains).forEach(([chain, assets]) => { - module.exports[chain] = { - tvl: getTvlFunction(key, chain, assets) - }; - }); -}); diff --git a/projects/void/index.js b/projects/void/index.js deleted file mode 100644 index c2152039561..00000000000 --- a/projects/void/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -module.exports = { - fantom: { - tvl: () => 0, - staking: async (api) => { - const bal = await api.call({ abi: 'uint256:getTotalInvested', target: '0xe0d4ed2613f6c8737234d28d24b9c5d7f106bd28' }) - api.add('0x80F2B8CdbC470c4DB4452Cc7e4a62F5277Db7061', bal) - }, - } -} \ No newline at end of file diff --git a/projects/volcano/index.js b/projects/volcano/index.js deleted file mode 100755 index dd1ddef89af..00000000000 --- a/projects/volcano/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - - -const BLAST_FARM_WETH_ADDRESS = "0xEFF49cfEDB5A430501B01898C704003326f1791B"; -const BLAST_FARM_USDB_ADDRESS = "0x02f451a37897d41e0082b7F9dB38B936D3D8E76E"; - - -module.exports = { - blast: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.blast.WETH, BLAST_FARM_WETH_ADDRESS], - [ADDRESSES.blast.USDB, BLAST_FARM_USDB_ADDRESS], - ], - }), - } -} diff --git a/projects/volmex/index.js b/projects/volmex/index.js deleted file mode 100644 index b087a3a39e3..00000000000 --- a/projects/volmex/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const dai = ADDRESSES.ethereum.DAI -const usdc = ADDRESSES.ethereum.USDC -const polygonDai = ADDRESSES.polygon.DAI -const polygonUsdc = ADDRESSES.polygon.USDC - -const arbitrumDai = ADDRESSES.optimism.DAI -const arbitrumUsdc = ADDRESSES.arbitrum.USDC - -module.exports = { - ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [dai, "0xa57fC404f69fCE71CA26e26f0A4DF7F35C8cd5C3"], - [dai, "0x187922d4235D10239b2c6CCb2217aDa724F56DDA"], - [usdc, "0x1BB632a08936e17Ee3971E6Eeb824910567e120B"], - [usdc, "0x054FBeBD2Cb17205B57fb56a426ccc54cAaBFaBC"] - ] - }), - }, - polygon: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [polygonDai, "0x164c668204Ce54558431997A6DD636Ee4E758b19"], - [polygonDai, "0x90E6c403c02f72986a98E8a361Ec7B7C8BC29259"], - [polygonUsdc, "0xEeb6f0C2261E21b657A27582466e5aD9acC072D7"], - [polygonUsdc, "0xA2b3501d34edA289F0bEF1cAf95E5D0111032F36"] - ] - }), - }, - arbitrum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [arbitrumDai, "0xE46277336d9CC2eBe7b24bA7268624F5f1495611"], - [arbitrumDai, "0xf613b55131cf8a69c5b4f62d0d5e5d2c2d9c3280"], - [arbitrumUsdc, "0xF9b04Aad2612D3d664F41E9aF5711953E058ff52"], - [arbitrumUsdc, "0xdf87072ac4722431861837492edf7adbfec0efa9"], - ] - }), - } -} \ No newline at end of file diff --git a/projects/volo-vsui/index.js b/projects/volo-vsui/index.js deleted file mode 100644 index 5dedf4b926f..00000000000 --- a/projects/volo-vsui/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const sui = require('../helper/chain/sui') -const USDC_COIN = '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC' - -const VAULTS = [ - '0x6e53ffe5b77a85ff609b0813955866ec98a072e4aaf628108e717143ec907bd8', - '0x041b49dc6625e074f452b9bc60a9a828aebfbef29bcba119ad90a4b11ba405bf', - '0xa97cc9a63710f905deb2da40d6548ce7a75ee3dfe4be0c1d553553d2059c31a3', - '0x27936e146ec8c695d14a3b900d21a495d2396c0a99e3c6766f86d15fe91d3897', -] - -async function liquidStakingTVL() { - const obj = await sui.getObject('0x2d914e23d82fedef1b5f56a32d5c64bdcc3087ccfea2b4d6ea51a71f587840e5') - const totalSuiSupply = +obj.fields.validator_pool.fields.total_sui_supply - return totalSuiSupply -} - -async function getVaultTVL(api) { - for (const address of VAULTS) { - const vaultObj = await sui.getObject(address); - const assetsValueTableId = vaultObj.fields.assets_value.fields.id.id; - const assetTypes = vaultObj.fields.asset_types; - - let totalUsdValue = 0; - - for (const assetType of assetTypes) { - const assetValueObj = await sui.getDynamicFieldObject( - assetsValueTableId, - assetType, - { idType: '0x1::ascii::String' } - ); - - totalUsdValue += +assetValueObj.fields.value; - } - - api.add(USDC_COIN, totalUsdValue / 1e3); - } -} - -async function tvl(api) { - api.add('0x2::sui::SUI', await liquidStakingTVL()) - await getVaultTVL(api) -} - -module.exports = { - methodology: "Calculates the amount of SUI staked in Volo liquid staking contracts and tokens in Volo vaults. TVL includes LST (Liquid Staking) and all vault types combined.", - misrepresentedTokens: true, - sui: { - tvl: tvl, - }, -} - diff --git a/projects/volta-dao/api.js b/projects/volta-dao/api.js deleted file mode 100644 index f7b075a2e5f..00000000000 --- a/projects/volta-dao/api.js +++ /dev/null @@ -1,12 +0,0 @@ -const index = require('./index') - -module.exports = { - fantom: { - tvl: () => 0, - staking: index.fantom.staking, - }, - avax: { - tvl: () => 0, - staking: index.avax.staking, - }, -} \ No newline at end of file diff --git a/projects/volta-dao/index.js b/projects/volta-dao/index.js deleted file mode 100644 index 273288ddf1d..00000000000 --- a/projects/volta-dao/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakingUnknownPricedLP } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const ftmToken = "0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"; -const ftmStaking = "0xc6a54adddf7463f73a4c5a8e3e480bc798cf8a09"; -const ftmTreasury = "0x05ab17e4dfa87ef4ac487ed20cfcc2ae75c2a792"; -const ftmTokens = [ - ADDRESSES.fantom.DAI, - "0x78b51a1fd7524186982c2cb8982df312b1e896a8" -]; - -const avaxToken = "0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"; -const avaxStaking = "0xfae672012b90cfb6bf245ac072a3aca374604b17"; -const avaxTreasury = "0x05ab17e4dfa87ef4ac487ed20cfcc2ae75c2a792"; -const avaxTokens = [ - ADDRESSES.avax.DAI, - "0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8" -] - -async function ftmTvl(api) { - return sumTokens2({ api, owner: ftmTreasury, tokens: ftmTokens, resolveLP: true }) -} - -async function avaxTvl(api) { - return sumTokens2({ api, owner: avaxTreasury, tokens: avaxTokens, resolveLP: true }) -} - -module.exports = { - misrepresentedTokens: true, - fantom: { - tvl: ftmTvl, - staking: stakingUnknownPricedLP(ftmStaking, ftmToken, "fantom", "0x78b51a1fd7524186982c2cb8982df312b1e896a8") - }, - avax: { - tvl: avaxTvl, - staking: stakingUnknownPricedLP(avaxStaking, avaxToken, "avax", "0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8") - } -} diff --git a/projects/volta-finance/index.js b/projects/volta-finance/index.js deleted file mode 100644 index 1c98a1f3fa0..00000000000 --- a/projects/volta-finance/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const vaults = [ - '0xb4ff7E61F825A5B80E20F6070fCC959Ea136Ed88' -] - -const erc4626 = [ - '0x39ff5098081FBE1ab241c31Fe0a9974FE9891d04', // voltGNS -] - -async function tvl(api) { - const collaterals = await api.multiCall({ abi: 'address:collateral', calls: vaults}) - const assets = await api.multiCall({ abi: 'address:asset', calls: erc4626}) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: erc4626}) - api.addTokens(assets, bals) - return sumTokens2({ api, tokensAndOwners2: [collaterals, vaults]}) -} - -module.exports = { - doublecounted: true, - methodology: "counts the tokens used as collateral in vaults for VOLT stablecoin loans", - arbitrum: { tvl, } -}; \ No newline at end of file diff --git a/projects/volta-markets/index.js b/projects/volta-markets/index.js deleted file mode 100644 index 92422a6acae..00000000000 --- a/projects/volta-markets/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { gmxExports } = require('../helper/gmx') - -module.exports = { - core: { - tvl: gmxExports({ vault: '0x66249e4477940D40A3CE92552401A9Cc61a14474', fromBlock: 25450000, }), - }, -} diff --git a/projects/voltage-lending/index.js b/projects/voltage-lending/index.js deleted file mode 100644 index 39c3c84f17b..00000000000 --- a/projects/voltage-lending/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const abi = { - getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)", - getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])", - getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", -}; - -const CONFIG = { - fuse: ['0x87cB512CFB0f18F4Dd9652a186922cf6A4e63213'], -}; - -const fetchReserveData = async (api, poolDatas, isBorrowed) => { - const reserveTokens = await api.multiCall({ calls: poolDatas, abi: abi.getAllReservesTokens }); - const calls = [] - - poolDatas.map((pool, i) => { - reserveTokens[i].forEach(({ tokenAddress }) => calls.push({ target: pool, params: tokenAddress })); - }); - const reserveData = await api.multiCall({ abi: isBorrowed ? abi.getReserveData : abi.getReserveTokensAddresses, calls, }) - const tokensAndOwners = [] - reserveData.forEach((data, i) => { - const token = calls[i].params - if (isBorrowed) { - api.add(token, data.totalVariableDebt) - api.add(token, data.totalStableDebt) - } else - tokensAndOwners.push([token, data.aTokenAddress]) - }) - - if (isBorrowed) return api.getBalances() - return api.sumTokens({ tokensAndOwners }) -} - -module.exports.methodology = "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending." - -Object.keys(CONFIG).forEach((chain) => { - const poolDatas = CONFIG[chain]; - module.exports[chain] = { - tvl: (api) => fetchReserveData(api, poolDatas), - borrowed: (api) => fetchReserveData(api, poolDatas, true), - }; -}); diff --git a/projects/voltage-liquidstaking/index.js b/projects/voltage-liquidstaking/index.js deleted file mode 100644 index 369805e65a9..00000000000 --- a/projects/voltage-liquidstaking/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const FUSE_STAKING_ADDRESS = "0xa3dc222eC847Aac61FB6910496295bF344Ea46be".toLowerCase() - -async function tvl(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 deleted file mode 100644 index fc5bd46fe89..00000000000 --- a/projects/voltage-stableswap/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const FUSD_ADDRESS = '0xd0ce1b4a349c35e61af02f5971e71ac502441e49' -const STABLESWAP_ADDRESS = '0x2a68D7C6Ea986fA06B2665d08b4D08F5e7aF960c'.toLowerCase() -const FUSD_V3_ADDRESS = ADDRESSES.fuse.FUSD_3 -const PEGSWAP_ADDRESS = '0x56ee525bb9056bed23a6055e60b2a2c5c225d1db' -const PEGSWAP_V2_ADDRESS = '0xfa70dffea090fed2d6e9301fb10b0d4c81072e4c'; -const SIMPLE_STAKING_ADDRESS = "0x5fFcEaa947937DE1FEBb28BCa65E84894a55a2EF"; - -const STABLES = [ - ADDRESSES.fuse.USDC, - ADDRESSES.fuse.USDT, - ADDRESSES.fuse.BUSD, - ADDRESSES.fuse.USDC_2, - ADDRESSES.fuse.USDT_2, - ADDRESSES.fuse.BNB, - ADDRESSES.fuse.BNB_2, - ADDRESSES.fuse.WETH, - ADDRESSES.fuse.WETH_2, - ADDRESSES.fuse.USDC_3, - ADDRESSES.fuse.USDT_3, - ADDRESSES.fuse.WETH_3, -] - -module.exports = { - fuse: { - tvl: sumTokensExport({ - owners: [ - STABLESWAP_ADDRESS, - FUSD_ADDRESS, - FUSD_V3_ADDRESS, - PEGSWAP_ADDRESS, - PEGSWAP_V2_ADDRESS, - SIMPLE_STAKING_ADDRESS - ], - tokens: STABLES, - }), - }, -} diff --git a/projects/voltage-v4/index.js b/projects/voltage-v4/index.js deleted file mode 100644 index 8301eedec28..00000000000 --- a/projects/voltage-v4/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - fuse: { factory: "0xccEdb990abBf0606Cf47e7C6A26e419931c7dc1F", fromBlock: 32498119, isAlgebra: true, }, -}); diff --git a/projects/voltswap-v2/index.js b/projects/voltswap-v2/index.js deleted file mode 100644 index 35491a14cd7..00000000000 --- a/projects/voltswap-v2/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - meter: { tvl: getUniTVL({ factory: '0xb33dE8C0843F90655ad6249F20B473a627443d21', useDefaultCoreAssets: true, }), }, - base: { tvl: getUniTVL({ factory: '0x2A5478bE24F9E536cCb91DBF650EFD6cE6C00398', useDefaultCoreAssets: true, }), }, - misrepresentedTokens: true, -} \ No newline at end of file diff --git a/projects/voltswap/index.js b/projects/voltswap/index.js deleted file mode 100644 index 9b128510115..00000000000 --- a/projects/voltswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - meter:{ - tvl: getUniTVL({ factory: '0x56aD9A9149685b290ffeC883937caE191e193135', useDefaultCoreAssets: true }), - }, - theta:{ - tvl: getUniTVL({ factory: '0xa2De4F2cC54dDFdFb7D27E81b9b9772bd45bf89d', useDefaultCoreAssets: true }), - }, -} diff --git a/projects/voltz/index.js b/projects/voltz/index.js deleted file mode 100644 index 01953ba33fb..00000000000 --- a/projects/voltz/index.js +++ /dev/null @@ -1,38 +0,0 @@ - -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -async function getTokensAndOwners(api) { - const { factory, fromBlock } = config[api.chain] - const logs = await getLogs({ - api, - target: factory, - fromBlock, - onlyArgs: true, - topic: 'IrsInstance(address,address,uint256,uint256,int24,address,address,address,uint8,uint8)', - eventAbi: 'event IrsInstance (address indexed underlyingToken, address indexed rateOracle, uint256 termStartTimestampWad, uint256 termEndTimestampWad, int24 tickSpacing, address marginEngine, address vamm, address fcm, uint8 yieldBearingProtocolID, uint8 underlyingTokenDecimals)', - }) - - return logs.map(i => ([i.underlyingToken, i.marginEngine])) -} - -async function tvl(api) { - return sumTokens2({ api, tokensAndOwners: await getTokensAndOwners(api), }) -} - -module.exports = { - methodology: `It takes the list of all the Margin Engines deployed by the Voltz Factory and aggregates their token holdings. These token holdings represent the margin that supports liquidity provider and trader positions in Voltz interest rate swap pools.`, -}; - -const config = { - ethereum: { factory: '0x6a7a5c3824508D03F0d2d24E0482Bea39E08CcAF', fromBlock: 14878442 }, - arbitrum: { factory: '0xda66a7584da7210fd26726EFb12585734F7688c1', fromBlock: 60246384 }, - avax: { factory: '0xda66a7584da7210fd26726EFb12585734F7688c1', fromBlock: 30096058 }, -} - -module.exports = { -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/voodoo-trade-base/index.js b/projects/voodoo-trade-base/index.js deleted file mode 100644 index e854d075ef1..00000000000 --- a/projects/voodoo-trade-base/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); -const { pool2 } = require("../helper/pool2"); - -const config = { - base: { vault: '0x4F188Afdc40e6D2Ddddf5fd1b2DF7AEF7Da52f50', lpToken: '0xbF65A2775F0a091a8e667a1c1345c427C9D86761', stakedLpTokenTracker: '0x1DD46Dd21F152f97848b32D504de491E696bA1C5' }, -} - -Object.keys(config).forEach(chain => { - const { vault, lpToken, stakedLpTokenTracker, } = config[chain] - module.exports[chain] = { - tvl: gmxExports({ vault }), - pool2: pool2(stakedLpTokenTracker, lpToken,), - } -}) \ No newline at end of file diff --git a/projects/voodoo-trade/index.js b/projects/voodoo-trade/index.js deleted file mode 100644 index e6fb5bf8e2c..00000000000 --- a/projects/voodoo-trade/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); -const { pool2 } = require("../helper/pool2"); - -const config = { - fantom: { vault: '0x40cbDDAED8b0d7Ee3cF347aAb09Bf4a8cFa15F01', lpToken: '0xC42437A6da389D88799A9e706da3EA6628342295', stakedLpTokenTracker: '0xBf47b011C36F29e7C65b6cf34c1d838EA1b67069' }, -} - -Object.keys(config).forEach(chain => { - const { vault, lpToken, stakedLpTokenTracker, } = config[chain] - module.exports[chain] = { - tvl: gmxExports({ vault }), - pool2: pool2(stakedLpTokenTracker, lpToken,), - } -}) diff --git a/projects/vooi/config.js b/projects/vooi/config.js deleted file mode 100644 index b6202af87ea..00000000000 --- a/projects/vooi/config.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -module.exports = { - chains: [ - { - name: 'linea', - tokens: [ - ADDRESSES.linea.USDT, - ADDRESSES.linea.USDC, - ADDRESSES.linea.DAI, - ], - holders: [ - '0xBc7f67fA9C72f9fcCf917cBCEe2a50dEb031462A', - ] - } - ] -} \ No newline at end of file diff --git a/projects/vooi/index.js b/projects/vooi/index.js deleted file mode 100644 index b723d7769da..00000000000 --- a/projects/vooi/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const config = require("./config"); -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - methodology: 'Counts the amount of assets locked in VOOI pools', - hallmarks: [ - [1692921600,"DWF Labs Depo 1.5m$"] - ], -}; - -config.chains.forEach(chainInfo => { - const {name: chain, tokens, holders} = chainInfo - module.exports[chain] = { - tvl: sumTokensExport({ tokens, owners: holders }) - } -}) diff --git a/projects/vortex/index.js b/projects/vortex/index.js deleted file mode 100644 index bcd4d59b93c..00000000000 --- a/projects/vortex/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') - -async function staking() { - return sumTokens2({ owners: ['KT1Cp18EbxDk2WcbC1YVUyGuwuvtzyujwu4U']}) -} - -module.exports = { - tezos: { - tvl: async () => { - const data = await getStorage('KT1UnRsTyHVGADQWDgvENL3e9i6RMnTVfmia') - const swaps = await getBigMapById(data.swaps); - return sumTokens2({ owners: Object.values(swaps), includeTezos: true, }) - }, - staking, - } -} diff --git a/projects/vortexdao/index.js b/projects/vortexdao/index.js deleted file mode 100644 index 875588d419c..00000000000 --- a/projects/vortexdao/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const space = "0x353af195c0d82820c59427BFbD318A49971AAe1a"; -const stakingV1 = "0x910F038C9E74dF8baEd886a22f75C69FaE8a6792"; -const stakingV2 = "0x073d3F4Ed6cb32Bd7f6F7B6da4C25672ee76c95B"; - -async function staking(api) { - return api.sumTokens({ tokens: [space], owners: [stakingV1, stakingV2, ] }) -} - -module.exports = { - deadFrom: "04-06-2023", - avax:{ - tvl: () => ({}), - staking, - }, -}; diff --git a/projects/vovo/index.js b/projects/vovo/index.js deleted file mode 100644 index 2b47f65d65b..00000000000 --- a/projects/vovo/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const balanceABI = 'function balance(bool isMax) view returns (uint256)'; - -const usdcVaults = [ - "0x9ba57a1D3f6C61Ff500f598F16b97007EB02E346", - "0x5D8a5599D781CC50A234D73ac94F4da62c001D8B", - "0xE40bEb54BA00838aBE076f6448b27528Dd45E4F0", - "0x1704A75bc723A018D176Dc603b0D1a361040dF16", -]; - -const glpVaults = [ - "0xbFbEe90E2A96614ACe83139F41Fa16a2079e8408", - "0x0FAE768Ef2191fDfCb2c698f691C49035A53eF0f", - "0x2b8E28667A29A5Ab698b82e121F2b9Edd9271e93", - "0x46d6dEE922f1d2C6421895Ba182120C784d986d3", -]; - -async function tvl(api) { - const vaults = usdcVaults.concat(glpVaults); - const tvls = await api.multiCall({ - abi: balanceABI, - calls: vaults.map((i) => ({ target: i, params: true })), - }); - const tokens = (await api.multiCall({ abi: 'address:vaultToken', calls: vaults, permitFailure: true, })).map(i => i ?? ADDRESSES.arbitrum.fsGLP) - api.add(tokens, tvls) -} - -module.exports = { - arbitrum: { - tvl, - }, - misrepresentedTokens: true, -}; diff --git a/projects/voyager/index.js b/projects/voyager/index.js deleted file mode 100644 index 7b00d35f7e5..00000000000 --- a/projects/voyager/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("../helper/staking"); - -const VGX = "0x3C4B6E6e1eA3D4863700D7F76b36B7f3D3f13E3d"; -const stakingContract = "0x8692e782ea478623f3342e0fb3936f6530c5d54f"; - -module.exports = { - ethereum: { - tvl: () => ({}), - staking: staking(stakingContract, VGX), - }, - methodology: "Voyager token VGX can be staked", -}; diff --git a/projects/vsol/index.js b/projects/vsol/index.js deleted file mode 100644 index 8099c9524b0..00000000000 --- a/projects/vsol/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getSolBalanceFromStakePool } = require('../helper/solana') - -async function tvl(api) { - await getSolBalanceFromStakePool('Fu9BYC6tWBo1KMKaP3CFoKfRhqv9akmy3DuYwnCyWiyC', api) -} - -module.exports = { - timetravel: false, - solana: { - tvl - } -} \ No newline at end of file diff --git a/projects/vulcandex/index.js b/projects/vulcandex/index.js deleted file mode 100644 index 19db2512732..00000000000 --- a/projects/vulcandex/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('polygon', '0x293f45b6F9751316672da58AE87447d712AF85D7') \ No newline at end of file diff --git a/projects/vultureswap/index.js b/projects/vultureswap/index.js deleted file mode 100644 index adae3950a7c..00000000000 --- a/projects/vultureswap/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'cronos': '0x45523BD2aB7E563E3a0F286be1F766e77546d579' -}) diff --git a/projects/vvs-finance/index.js b/projects/vvs-finance/index.js deleted file mode 100644 index 74b04fc0b7b..00000000000 --- a/projects/vvs-finance/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports={ - misrepresentedTokens: true, - methodology: "Factory address (0x3b44b2a187a7b3824131f8db5a74194d0a42fc15) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - cronos: { - tvl: getUniTVL({ - factory: '0x3b44b2a187a7b3824131f8db5a74194d0a42fc15', - useDefaultCoreAssets: true, - }) - } -} \ No newline at end of file diff --git a/projects/vvs-v3/index.js b/projects/vvs-v3/index.js deleted file mode 100644 index 4483dfd6f2e..00000000000 --- a/projects/vvs-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - cronos: { - factory: "0x40aB11c64E9fF5368F09343Ac860dAfA34e14C35", - fromBlock: 10292950, - }, -}); //testisgood \ No newline at end of file diff --git a/projects/vyfi-dex/index.js b/projects/vyfi-dex/index.js deleted file mode 100644 index 4177ed73558..00000000000 --- a/projects/vyfi-dex/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { fetchURL } = require("../helper/utils"); - - -async function getLPData() { - const tvl = await fetchURL("https://api.vyfi.io/analytics"); - - return { cardano: tvl.data.lp.totalLpTvl }; -} - -async function vyfiStaking() { - const tvl = await fetchURL("https://api.vyfi.io/analytics?filter=bar"); - - return { cardano: tvl.data.bar.tvl }; -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - cardano: { - tvl: getLPData, - staking: vyfiStaking - }, -}; \ No newline at end of file diff --git a/projects/vyfi/index.js b/projects/vyfi/index.js deleted file mode 100644 index b09183c250d..00000000000 --- a/projects/vyfi/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { toUSDTBalances } = require("../helper/balances"); -const { fetchURL } = require("../helper/utils"); - -async function getStakingData() { - const data = await fetchURL("https://api.vyfi.io/analytics"); - - let tvl = 0; - - // Include the total value locked in nftVaults and nftVaultsV2 and lpVaults - tvl += data.data.nftVaults.totalValueLocked; - tvl += data.data.nftVaultsV2.totalValueLocked; - tvl += data.data.lpVaultsV2.totalValueLocked; - - for (const vault of data.data.tokenVaults.vaults.concat(data.data.tokenVaultsV2.vaults)) { - if (vault.project !== 'vyfi') { - tvl += vault.totalVaultValue; - } - } - - return toUSDTBalances(tvl); -} - - -async function getVYFIVaultsData() { - const data = await fetchURL("https://api.vyfi.io/analytics"); - - let tvl = 0; - for (const vault of data.data.tokenVaults.vaults.concat(data.data.tokenVaultsV2.vaults)) { - if (vault.project === 'vyfi') { - tvl += vault.totalVaultValue; - } - } - - return toUSDTBalances(tvl); -} - - - - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - cardano: { - tvl: getStakingData, - staking: getVYFIVaultsData - }, -}; diff --git a/projects/w-dex/index.js b/projects/w-dex/index.js deleted file mode 100644 index b633fb8d157..00000000000 --- a/projects/w-dex/index.js +++ /dev/null @@ -1,2 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -module.exports = uniV3Export({ polygon: { factory: '0x215fDE4B415B9Ce21DEE6CAcEfc27Aa92441C4AA', fromBlock: 65913036, isAlgebra: true, } }) \ No newline at end of file diff --git a/projects/w3bank/index.js b/projects/w3bank/index.js deleted file mode 100644 index 8edfb786647..00000000000 --- a/projects/w3bank/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { lendingMarket } = require("../helper/methodologies"); -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - start: '2023-09-04', - pg: compoundExports2({ comptroller: '0x697bc9fd98ddafd1979c3e079033698ca93af451'}), - methodology: `${lendingMarket}`, -}; - -module.exports.deadFrom='2024-06-21', -module.exports.pg.borrowed = () => ({}) // bad debt diff --git a/projects/w3swap/index.js b/projects/w3swap/index.js deleted file mode 100644 index 168a3095b90..00000000000 --- a/projects/w3swap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: "Counts the tokens locked on AMM pools. Data is getting from the 'satoshirock/w3infov2' subgraph.", - pg: { - tvl: getUniTVL({ factory: '0x94274b1Ed6E1BDe55fa631f502Aa18512Aa3007b', useDefaultCoreAssets: true }) - }, - bsc: { - tvl: getUniTVL({ factory: '0xD04A80baeeF12fD7b1D1ee6b1f8ad354f81bc4d7', useDefaultCoreAssets: true }) - }, -}; \ No newline at end of file diff --git a/projects/wagmi-com/index.js b/projects/wagmi-com/index.js deleted file mode 100644 index fe6b758f0d6..00000000000 --- a/projects/wagmi-com/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { staking } = require('../helper/staking') -const { uniV3Export, uniV3GraphExport } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - era: { factory: '0x31be61CE896e8770B21e7A1CAFA28402Dd701995', fromBlock: 1351075, }, - fantom: { factory: '0xaf20f5f19698f1D19351028cd7103B63D30DE7d7', fromBlock: 60063058, }, - kava: { factory: '0x0e0Ce4D450c705F8a0B6Dd9d5123e3df2787D16B', fromBlock: 6037137, }, - ethereum: { factory: '0xB9a14EE1cd3417f3AcC988F61650895151abde24', fromBlock: 18240112, }, - metis: { factory: '0x8112E18a34b63964388a3B2984037d6a2EFE5B8A', fromBlock: 9740222, }, - zklink: { factory: '0x6175b648473F1d4c1549aAC3c2d007e7720585e6', fromBlock: 1339353, }, - iotaevm: { factory: '0x01Bd510B2eA106917e711f9a05a42fC162bee2Ac', fromBlock: 143828, }, - base: { factory: '0x576A1301B42942537d38FB147895fE83fB418fD4', fromBlock: 14250787, }, - sonic: { factory: '0x56CFC796bC88C9c7e1b38C2b0aF9B7120B079aef', fromBlock: 276406, } -}) - -module.exports.kava = { tvl: uniV3GraphExport({ name: 'wagmi-kava', graphURL: 'https://kava.graph.wagmi.com/subgraphs/name/v3' }) } - -const stakingConfig = { - metis: { swagmi: '0x5fb3983adc4dcc82a610a91d2e329f6401352558', wagmi: '0xaf20f5f19698f1d19351028cd7103b63d30de7d7', }, - kava: { swagmi: '0x3690d1a9fb569c21372f8091527ab44f1dc9630f', wagmi: '0xaf20f5f19698f1d19351028cd7103b63d30de7d7', }, - sonic: { swagmi: '0x4b5d9db7910448e2F236509D9eE242673AFa28aA', wagmi: '0x0e0Ce4D450c705F8a0B6Dd9d5123e3df2787D16B', } -} - -Object.keys(stakingConfig).forEach(chain => { - const { swagmi, wagmi, } = stakingConfig[chain] - module.exports[chain].staking = staking(swagmi, wagmi) -}) \ No newline at end of file diff --git a/projects/wagmi/index.js b/projects/wagmi/index.js deleted file mode 100644 index 0bed7f9a8fe..00000000000 --- a/projects/wagmi/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokens } = require("../helper/chain/ton"); -const { getConfig } = require('../helper/cache') - -async function fetchTvl(api) { - const res = await getConfig('wagmi-ton', 'https://tonfunstats-eqnd7.ondigitalocean.app/api/v1/getServiceTokens?service=wagmi') - await sumTokens({ api, tokens: [ADDRESSES.ton.TON], owners: res, onlyWhitelistedTokens: true, }) -} - -module.exports = { - timetravel: false, - isHeavyProtocol: true, - ton: { - tvl: fetchTvl - } -} diff --git a/projects/wagmidao/index.js b/projects/wagmidao/index.js deleted file mode 100644 index b3f0ff1fbe6..00000000000 --- a/projects/wagmidao/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const masterChef = "0xf046e84439813bb0a26fb26944001c7bb4490771"; -const stakingContract = "0xaa2c3396cc6b3dc7b857e6bf1c30eb9717066366"; - -const GMI = "0x8750f5651af49950b5419928fecefca7c82141e3"; - -const { uniTvlExports } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -module.exports = uniTvlExports({ - 'harmony': '0xfe33b03a49a1fcd095a8434dd625c2d2735e84b8' -}, { staking: { harmony: [[stakingContract, masterChef], GMI]}}) diff --git a/projects/wagyuswap/index.js b/projects/wagyuswap/index.js deleted file mode 100644 index fc91b7d2dcc..00000000000 --- a/projects/wagyuswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - velas: { - tvl: getUniTVL({ - factory: '0x69f3212344a38b35844cce4864c2af9c717f35e3', useDefaultCoreAssets: true, - blacklist: ['0xcd7509b76281223f5b7d3ad5d47f8d7aa5c2b9bf'], - }) - }, -} \ No newline at end of file diff --git a/projects/wakafinance.js b/projects/wakafinance.js deleted file mode 100644 index 693633155dc..00000000000 --- a/projects/wakafinance.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("./helper/unknownTokens") - -module.exports = { - misrepresentedTokens: true, - fantom:{ - tvl: getUniTVL({ - factory: '0xb2435253c71fca27be41206eb2793e44e1df6b6d', - useDefaultCoreAssets: true, - }), - }, -} \ No newline at end of file diff --git a/projects/wanbridge.js b/projects/wanbridge.js deleted file mode 100644 index 0143ab85e33..00000000000 --- a/projects/wanbridge.js +++ /dev/null @@ -1,162 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { get } = require("./helper/http"); -const { sumTokens } = require('./helper/sumTokens'); -const { sumTokens2 } = require('./helper/unwrapLPs'); -const sdk = require('@defillama/sdk'); - -let ret; -async function getLockAddress() { - // This is an api which could get wanchain bridge's lockAddress, balance, tvl and price; - // The information is updated every 1 hour. - if (!ret) { - ret = await get("https://bridge-api.wanchain.org/api/tvl"); - } - return ret.data.address; -} - -const chainsMap = { - bitcoin: "btc", - litecoin: "ltc", - ripple: "xrp", -}; - -const lockAddress = { - bitcoin: "", - doge: "", - litecoin: "", - ripple: "", - noble: "", - cardano: "addr1xyw0kswupwx38ljnvq8pwpvae0x69krywdr7cffg3d84ydp9nvv84g58ykxqh90xx6j8ywgjst0dkt430w9lxgdmzncsw5rzpd", - wan: "0xe85b0d89cbc670733d6a40a9450d8788be13da47", - ethereum: "0xfceaaaeb8d564a9d0e71ef36f027b9d162bc334e", - bsc: "0xc3711bdbe7e3063bf6c22e7fed42f782ac82baee", - avax: "0x74e121a34a66d54c33f3291f2cdf26b1cd037c3a", - moonriver: "0xde1ae3c465354f01189150f3836c7c15a1d6671d", - moonbeam: "0x6372aec6263aa93eacedc994d38aa9117b6b95b5", - polygon: "0x2216072a246a84f7b9ce0f1415dd239c9bf201ab", - arbitrum: "0xf7ba155556e2cd4dfe3fe26e506a14d2f4b97613", - fantom: "0xccffe9d337f3c1b16bd271d109e691246fd69ee3", - optimism: "0xc6ae1db6c66d909f7bfeeeb24f9adb8620bf9dbf", - xdc: "0xf7ba155556e2cd4dfe3fe26e506a14d2f4b97613", - tron: "TZ9grqg3LwBKiddGra3WGHPdddJz3tow8N", - okexchain: "0xf7ba155556e2cd4dfe3fe26e506a14d2f4b97613", - // clover: "0xf7ba155556e2cd4dfe3fe26e506a14d2f4b97613", - astar: "0x592de30bebff484b5a43a6e8e3ec1a814902e0b6", - telos: "0x201e5de97dfc46aace142b2009332c524c9d8d82", - functionx: "0xdf935552fac687123c642f589296762b632a9aaf", - base: "0x2715aa7156634256ae75240c2c5543814660cd04", - metis: "0xc6ae1db6c66d909f7bfeeeb24f9adb8620bf9dbf", - celo: "0x14ca89ac9cd73b01bf71a3af3f8cf8fd224d6a1d", - blast: "0xc21e5553c8dddf2e4a93e5bedbae436d4291f603", - linea: "0xffb876bd5bee99e992cac826a04396002f5f4a65", - op_bnb: "0xd6b24d0867753082e40778addb13e462a02689de", - era: "0x102f0ce7a439d51247167d6233a0a44c3f8389a1", - polygon_zkevm: "0xb13afe3e965dcd483022b1cc3adf03eea039a754", - xlayer: "0xc21e5553c8dddf2e4a93e5bedbae436d4291f603", - solana: "AKXdNCG4GcTQ1knC7kno9bggHuq8MG9CCb8yQd8Nx2vL", - bitrock: "0xc21e5553c8dddf2e4a93e5bedbae436d4291f603", - energi: "0xbe5187c2a7eb776c1caeed2c37e7599fb05000d3", - odyssey: "0xc21e5553c8dddf2e4a93e5bedbae436d4291f603", - songbird: "0xc21e5553c8dddf2e4a93e5bedbae436d4291f603", -}; - -Object.keys(lockAddress).map((chain) => { - module.exports[chain] = { - tvl: async (api) => { - if (!lockAddress[chain]) { - let ret = await getLockAddress(); - if (chainsMap[chain]) { - lockAddress[chain] = ret[chainsMap[chain]]; - } else { - lockAddress[chain] = ret[chain]; - } - - if (!lockAddress[chain]) { - // console.log(`lockAddress[${chain}] is not found`); - return {} - } - } - - // if chain is nonEVM, use sumTokens2 - const nonEVMChains = ['bitcoin', 'litecoin', 'doge', 'ripple', 'cardano', 'solana', 'tron']; - const isEVMChain = !nonEVMChains.includes(chain); - - // skip problematic chains - const problematicChains = ['clover', 'noble']; - if (problematicChains.includes(chain)) { - // console.log(`Skipping problematic chain: ${chain}`); - return {}; - } - - if (isEVMChain) { - // if chain is EVM, use sumTokens2 - // query native token - const tokensAndOwners = [ - [ADDRESSES.null, lockAddress[chain]] - ]; - - // if chain has common tokens, add them - if (ADDRESSES[chain]) { - // add all tokens defined in coreAssets.json for this chain - Object.entries(ADDRESSES[chain]).forEach(([symbol, address]) => { - // Skip null address as it's already added - if (symbol !== 'null' && address) { - tokensAndOwners.push([address, lockAddress[chain]]); - } - }); - - // add custom tokens - if (chain === 'ethereum') { - // add custom tokens - const customEthereumTokens = [ - '0xAFCdd4f666c84Fed1d8BD825aA762e3714F652c9', // VINU - '0xeb986DA994E4a118d5956b02d8b7c3C7CE373674', // GTH - '0x97aeE01ed2aabAd9F54692f94461AE761D225f17', // DEGA - ]; - customEthereumTokens.forEach(tokenAddress => { - tokensAndOwners.push([tokenAddress, lockAddress[chain]]); - }); - } - - if (chain === 'polygon') { - const customPolygonTokens = [ - '0xAFCdd4f666c84Fed1d8BD825aA762e3714F652c9', // VINU - ]; - customPolygonTokens.forEach(tokenAddress => { - tokensAndOwners.push([tokenAddress, lockAddress[chain]]); - }); - } - - if (chain === 'bsc') { - const customBscTokens = [ - '0xeb986DA994E4a118d5956b02d8b7c3C7CE373674', // GTH - '0xfEbe8C1eD424DbF688551D4E2267e7A53698F0aa', // VINU - ]; - customBscTokens.forEach(tokenAddress => { - tokensAndOwners.push([tokenAddress, lockAddress[chain]]); - }); - } - } - - // add permitFailure option, allow some token query failure - return sumTokens2({ - api, - tokensAndOwners, - chain, - resolveLP: true, - permitFailure: true, - }); - } else { - // if chain is nonEVM, use sumTokens - return sumTokens({ - api, - chain, - owners: [lockAddress[chain]], - }); - } - }, - }; -}); - -module.exports.timetravel = false; -module.exports.misrepresentedTokens = true; diff --git a/projects/wand/index.js b/projects/wand/index.js deleted file mode 100644 index b60683168d2..00000000000 --- a/projects/wand/index.js +++ /dev/null @@ -1,111 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -async function styTvl(api) { - const protocols = [ - '0x555ad3261c0eD6119Ab291b8dC383111d83C67c7', - '0xB5eD29BCf541aebcb3ee179cb590d92D3d9F9445', - '0xE092612505661721053fA22b2D40fD6ae1eA87c2' - ] - - const tokensAndOwners = [] - for (const protocol of protocols) { - const assets = await api.call({ abi: 'address[]:assetTokens', target: protocol }) - - // Get vault arrays for each asset - const vaultArrays = await api.multiCall({ - abi: 'function getVaultAddresses(address) view returns (address[])', - calls: assets, - target: protocol - }) - - // Create expanded arrays to match vaults with their corresponding assets - const expandedAssets = [] - const vaults = [] - - // For each asset, map it to its vaults - vaultArrays.forEach((vaultArray, assetIndex) => { - const asset = assets[assetIndex] - vaultArray.forEach(vault => { - expandedAssets.push(asset) - vaults.push(vault) - }) - }) - - // Now expandedAssets[i] corresponds to vaults[i] - const assetBals = await api.multiCall({ abi: 'uint256:assetBalance', calls: vaults, permitFailure: true }) - - // Add balances with correct asset-vault mapping - for (let i = 0; i < vaults.length; i++) { - api.add(expandedAssets[i], assetBals[i] || 0) - } - - // Add redeem pool balances - const epochInfoAbi = 'function epochInfoById(uint256 epochId) public view returns (uint256 epochId, uint256 startTime, uint256 duration, address redeemPool, address stakingBribesPool, address adhocBribesPool)' - try { - for (let i = 0; i < vaults.length; i++) { - const asset = expandedAssets[i] - const vault = vaults[i] - - const epochInfos = await api.fetchList({ - lengthAbi: 'epochIdCount', - itemAbi: epochInfoAbi, - target: vault, - startFromOne: true, - groupedByInput: true - }) - - const infos = epochInfos || [] - - for (const { redeemPool } of infos) { - if (redeemPool && redeemPool !== ADDRESSES.null) { - tokensAndOwners.push([asset, redeemPool]) - } - } - } - } catch (e) { - console.log("Error fetching epoch info:", e.message) - } - } - - // vualt v2 - const btHooks = { - // stApl Vault (bt:hooks) - '0x3bb7dc96832f8f98b8aa2e9f2cc88a111f96a118': ['0x110477af9ac7837fd0e8a1b917982fd6065eba88'] - } - const bts = Object.keys(btHooks) - const tokenpots = await api.multiCall({ abi: 'address:tokenPot', calls: bts,}) - const tokenIns = await api.multiCall({ abi: 'address[]:getTokensIn', calls: bts }) - for (let i=0;i< tokenIns.length; i++) { - tokensAndOwners.push([tokenIns[i], tokenpots[i]]) - const hooks = btHooks[bts[i]] - for (const hook of hooks) { - tokensAndOwners.push([tokenIns[i], hook]) - } - } - return api.sumTokens({ tokensAndOwners }) -} - -module.exports = { - blast: { - tvl: sumTokensExport({ - owners: [ - '0xDC3985196D263E5259AB946a4b52CEDCBaDC1390', // $ETH vault's token pot - '0xfD7D3d51b081FBeA178891839a9FEd5ca7896bDA', // $ETH vault's pty pool buy low - '0x2F5007df87c043552f3c6b6e5487B2bDc92F0232', // $ETH vault's pty pool sell high - '0x05c061126A82DC1AfF891b9184c1bC42D380a2ff', // $USDB vault's token pot - '0x7063ea2dBa364aCd9135752Da5395ac7CD12313D', // $ETH V2 vault's token pot - '0x3ee083573FceA8c015dcbfC7a51777B5770cbe64', // $ETH V2 vault's pty pool buy low - '0x39db7083C97d2C298C1A88fD27b0bd1C9c9f6fa8', // $ETH V2 vault's pty pool sell high - '0x565e325B7197d6105b0Ee74563ea211Cc838e2c3', // $USDB V2 vault's token pot - '0x4A084b06eFdB44e9fB26Eac29334E4808BA65A32', // $weETH plain vault - ], - tokens: [ - ADDRESSES.null, // $ETH - ADDRESSES.blast.USDB, // $USDB - ADDRESSES.blast.weETH // weETH - ], - }), - }, - sty: { tvl: styTvl } -}; \ No newline at end of file diff --git a/projects/wanlend/index.js b/projects/wanlend/index.js deleted file mode 100644 index 5c75f29d9d7..00000000000 --- a/projects/wanlend/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports2, methodology, } = require("../helper/compound"); -const { mergeExports } = require("../helper/utils"); - -const cetheEquivalent=ADDRESSES.wan.WWAN -const tvlV1 = compoundExports2( { comptroller: '0x21c72522005ccf570f40acaa04b448918aecc2ad', cether: '0xE8548014f731194764AF27C8edc9bbAA7d2f4C46', cetheEquivalent}) -const tvlV2 = compoundExports2( { comptroller: '0xd6980C52C20Fb106e54cC6c8AE04c089C3F6B9d6', cether: '0x48c42529c4c8e3d10060e04240e9ec6cd0eb1218', cetheEquivalent}) -delete tvlV1.borrowed - -module.exports = mergeExports([{ - methodology, - wan: tvlV1, -}, { wan: tvlV2}]) diff --git a/projects/wannaswap/index.js b/projects/wannaswap/index.js deleted file mode 100644 index 5ecec74eefc..00000000000 --- a/projects/wannaswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking, stakingPricedLP, stakingUnknownPricedLP } = require('../helper/staking.js'); - -module.exports = { - misrepresentedTokens: true, - aurora: { - staking: staking("0x5205c30bf2E37494F8cF77D2c19C6BA4d2778B9B", "0x7faA64Faf54750a2E3eE621166635fEAF406Ab22"), // single staking - tvl: getUniTVL({ factory: '0x7928D4FeA7b2c90C732c10aFF59cf403f0C38246', useDefaultCoreAssets: true }), - }, -}; diff --git a/projects/wanswap.js b/projects/wanswap.js deleted file mode 100644 index b8431c0dec3..00000000000 --- a/projects/wanswap.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('./helper/unknownTokens') - -module.exports = uniTvlExport('wan', '0x1125C5F53C72eFd175753d427aA116B972Aa5537') \ No newline at end of file diff --git a/projects/wardenswap/index.js b/projects/wardenswap/index.js deleted file mode 100644 index b185c4a9f35..00000000000 --- a/projects/wardenswap/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const {staking} = require('../helper/staking') -const { getUniTVL } = require('../helper/unknownTokens') -const masterchefAddress = '0xde866dD77b6DF6772e320dC92BFF0eDDC626C674'; // WardenSwap's MasterChef contract -const wardenTokenAddress = '0x0fEAdcC3824E7F3c12f40E324a60c23cA51627fc'; // WardenSwap token contract - -module.exports = { - methodology: "TVL is calculated from total liquidity of WardenSwap's active pools listed on our farm page https://farm.wardenswap.finance/?t=1&s=1/#/farm, excluding pools at PancakeSwap and inactive pools are not included, plus total warden staked in Warden pool", - bsc:{ - tvl: getUniTVL({ - factory: '0x3657952d7bA5A0A4799809b5B6fdfF9ec5B46293', - useDefaultCoreAssets: true, - }), - staking: staking(masterchefAddress, wardenTokenAddress) - }, - hallmarks:[ - [1629910800, `Announcement 2 week left before pool's rewards end`], - [1630083600, `Start pool's reward 100x warden pool`], - [1631293200, `Pool's rewards end`] - ] -}; diff --git a/projects/warp-dex/index.js b/projects/warp-dex/index.js deleted file mode 100644 index d88fdc1ff4e..00000000000 --- a/projects/warp-dex/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { queryV1Beta1, getBalance2 } = require('../helper/chain/cosmos') -const { transformDexBalances } = require('../helper/portedTokens') - -const chain = 'bostrom' -const poolURI = 'liquidity/v1beta1/pools' -const blacklistedTokens = ['ibc/4B322204B4F59D770680FE4D7A565DDC3F37BFF035474B717476C66A4F83DD72'] // DSM giving invalid values for some reason, incorrect decimals? - -async function tvl(api) { - let paginationKey - let data = [] - - do { - const { pools, pagination } = await queryV1Beta1({ chain, url: poolURI }) - paginationKey = pagination.next_key - for (const pool of pools) { - const tokens = pool.reserve_coin_denoms - const owner = pool.reserve_account_address - const balances = await getBalance2({ tokens, owner, chain, blacklistedTokens }) - - const keys = Object.keys(balances); - const values = Object.values(balances); - - if (keys.length === 2 && values.length === 2) { - const [token0, token1] = keys; - const [token0Bal, token1Bal] = values; - - if (token0 && token1 && token0Bal && token1Bal) { - data.push({ - token0, - token0Bal, - token1, - token1Bal, - }); - } - } - } - } while (paginationKey) - - return transformDexBalances({ chain, api, data }) -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Counts the liquidity on all pools. ", - bostrom: { tvl } -} \ No newline at end of file diff --git a/projects/warp/index.js b/projects/warp/index.js deleted file mode 100644 index dae8d74ff2d..00000000000 --- a/projects/warp/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const { sumTokens2, } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -async function tvl(api) { - const owners = [] - const tokens = [] - for (const group of tokenHolderMap) { - let holders = await getLogs({ - ...group.logConfig, - api, - }).then(logs => logs.map((poolLog) => `0x${poolLog.data.substr(26, 40)}`)) - const _tokens = await api.multiCall({ abi: 'address:LPtoken', calls: holders, permitFailure: true, }) - const failedHolders = holders.filter((holder, i) => { - if (_tokens[i]) { - owners.push(holder) - tokens.push(_tokens[i]) - return false - } - return true - }) - - const _tokens2 = await api.multiCall({ abi: 'address:stablecoin', calls: failedHolders }) - owners.push(...failedHolders) - tokens.push(..._tokens2) - } - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], }) -} - -module.exports = { - start: '2021-01-14', - ethereum: { tvl }, -} - -const tokenHolderMap = [ - { - logConfig: { - target: "0x6C74E2A1074ABe18969Be37210B93e681A40b35A", - topic: "NewLPVault(address)", - fromBlock: 11803584, - }, - }, - { - logConfig: { - target: "0x6C74E2A1074ABe18969Be37210B93e681A40b35A", - topic: "NewSCVault(address,address)", - fromBlock: 11803584, - }, - }, - { - logConfig: { - target: "0x8E0Fa7c5C7Fa86A059e865A90b50a90351df716a", - topic: "NewLPVault(address)", - fromBlock: 11654924, - }, - }, - { - logConfig: { - target: "0x8E0Fa7c5C7Fa86A059e865A90b50a90351df716a", - topic: "NewSCVault(address,address)", - fromBlock: 11654924, - }, - }, -] diff --git a/projects/warpbond/index.js b/projects/warpbond/index.js deleted file mode 100644 index 8622bba30e9..00000000000 --- a/projects/warpbond/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const token = "0x3F46a70adB395cddb81FF9bFE3B62aDae1B44816"; -const stakingContract = "0xA828eB4565819d3A134930CffbFD17f3bEE61F6a"; -const treasury = "0x64a999BF3405f53074Fe5F89aCB09B5E9b35F5d7"; -const treasuryTokens = [ - [ADDRESSES.polygon.DAI, false], // DAI - ["0xa3fa99a148fa48d14ed51d610c367c61876997f1", false], // miMATIC - ["0x2c9aed5b029dfd6b83c1214e528a276f41b8b527", true] // WARP-DAI SLP -] - -module.exports = { - ...ohmTvl(treasury, treasuryTokens, "polygon", stakingContract, token) -} \ No newline at end of file diff --git a/projects/warpfinance/index.js b/projects/warpfinance/index.js deleted file mode 100644 index 24121eecaf9..00000000000 --- a/projects/warpfinance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - contract: '0x312a6be6bD9850D6a2F793b8425c39eFC01C3585', whitelistedTokens: [ADDRESSES.ethereum.WETH] - } -} - -Object.keys(config).forEach(chain => { - const {contract, whitelistedTokens,} = config[chain] - module.exports[chain] = { - tvl: async (api) => { - return sumTokens2({ api, owner: contract, uniV3WhitelistedTokens: whitelistedTokens, resolveUniV3: true, }) - } - } -}) - -module.exports.methodology = 'Count the value of base tokens in the locked uni-v3 nfts' -module.exports.doublecounted = true \ No newline at end of file diff --git a/projects/warpgate/index.js b/projects/warpgate/index.js deleted file mode 100644 index 89f17bfaf16..00000000000 --- a/projects/warpgate/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - imx: { factory: '0x464Ea59a3AA5Ea35e961Ff8aA4CCC7183eAA197e', fromBlock: 2863799, }, -}) \ No newline at end of file diff --git a/projects/wasabee/index.js b/projects/wasabee/index.js deleted file mode 100644 index 1bf31d1c245..00000000000 --- a/projects/wasabee/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - berachain: { - factory: "0x7d53327D78EFD0b463bd8d7dc938C52402323b95", - fromBlock: 786501, - isAlgebra: true, - }, -}) \ No newline at end of file diff --git a/projects/wasabi/index.js b/projects/wasabi/index.js deleted file mode 100644 index 8cb56fcd717..00000000000 --- a/projects/wasabi/index.js +++ /dev/null @@ -1,78 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs'); -const idl = require('./wasabi_solana.json'); -const { getProvider } = require('../helper/solana'); -const { Program } = require("@coral-xyz/anchor"); - -const config = { - ethereum: { - pools: { - "WASABI_LONG_POOL": "0x8e0edfd6d15f858adbb41677b82ab64797d5afc0", - "WASABI_SHORT_POOL": "0x0fdc7b5ce282763d5372a44b01db65e14830d8ff" - }, fromBlock: 18810700, - }, - blast: { - pools: { - "WASABI_LONG_POOL": "0x046299143A880C4d01a318Bc6C9f2C0A5C1Ed355", - "WASABI_SHORT_POOL": "0x0301079DaBdC9A2c70b856B2C51ACa02bAc10c3a" - }, fromBlock: 185200, - }, - base: { - pools: { - "WASABI_LONG_POOL": "0xbDaE5dF498A45C5f058E3A09afE9ba4da7b248aa", - "WASABI_SHORT_POOL": "0xA456c77d358C9c89f4DFB294fA2a47470b7dA37c" - }, fromBlock: 25309500, - }, - berachain: { - pools: { - "WASABI_LONG_POOL": "0x0da575D3edd4E3ee1D904936F94Ec043c06Bb12B", - "WASABI_SHORT_POOL": "0x3EE6C6CdAa0073DE6Da00091329dE4390B0DF1EE" - }, fromBlock: 2249763, - }, -} - -const solanaTvl = async (api) => { - const provider = getProvider() - const program = new Program(idl, provider) - const vaults = await program.account.lpVault.all() - vaults.forEach((data, i) => { - const lpAsset = data.account.asset.toString() - api.add(lpAsset, data.account.totalAssets) - }) -} - -const tvl = async (api) => { - const { pools, fromBlock, tokens = [], toBlock = await api.getBlock() - 100 } = config[api.chain] - - const logs = await Promise.all( - Object.values(pools).map((pool) => - getLogs2({ - api, - chain: api.chain, - extraKey: '2', - target: pool, - eventAbi: "event NewVault(address indexed pool, address indexed asset, address vault)", - onlyArgs: true, - fromBlock, - toBlock, - }) - ) - ); - - const vaults = [...new Set(logs.flat().map((log) => log[2]))]; - return api.erc4626Sum({ calls: vaults, isOG4626: true }); -} - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl } -}) - -module.exports.solana = { - tvl: solanaTvl -} -module.exports.hallmarks=[ - [1709181259, "Deployed on Blast"], - // [1733011200, "Deployed on Solana"], // has no impact on the TVL - // [1737365147, "Deployed on Base"], - // [1741758248, "Deployed on Berachain"] -] -module.exports.methodology="Counts the total value deposited in the vaults of the Wasabi protocol, including assets that have been loaned out to open long and short positions." diff --git a/projects/wasabi/wasabi_solana.json b/projects/wasabi/wasabi_solana.json deleted file mode 100644 index 61fea675238..00000000000 --- a/projects/wasabi/wasabi_solana.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "address": "spicyTHtbmarmUxwFSHYpA8G4uP2nRNq38RReMpoZ9c", - "metadata": {"name": "wasabi_solana", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor"}, - "instructions": [], - "accounts": [{"name": "LpVault", "discriminator": [189, 45, 167, 23, 91, 118, 105, 190]}], - "events": [], - "errors": [], - "types": [ - { - "name": "LpVault", - "type": { - "kind": "struct", - "fields": [ - {"name": "bump", "docs": ["Bump seed for the LpVault's PDA"], "type": "u8"}, - {"name": "asset", "docs": ["The SPL Mint address of the token that sits in this vault"], "type": "pubkey"}, - {"name": "vault", "docs": ["The SPL Token account that stores the unborrowed tokens"], "type": "pubkey"}, - {"name": "shares_mint", "docs": ["The SPL Mint address that represents shares in the vault"], "type": "pubkey"}, - { - "name": "total_assets", - "docs": ["Count of the total assets owned by the vault, including tokens that are currently borrowed"], - "type": "u64" - }, - {"name": "max_borrow", "docs": ["Maximum amount that can be borrowed by admin"], "type": "u64"}, - {"name": "total_borrowed", "docs": ["Total amount currently borrowed from the vault that is to be paid back by the admin"], "type": "u64"} - ] - } - } - ], - "constants": [{"name": "SEED", "type": "string", "value": "\"anchor\""}] -} \ No newline at end of file diff --git a/projects/wasabix/abi.json b/projects/wasabix/abi.json deleted file mode 100644 index eb1ac6ea3e7..00000000000 --- a/projects/wasabix/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getPoolTotalDeposited": "function getPoolTotalDeposited(uint256 _poolId) view returns (uint256)", - "totalDeposited": "uint256:totalDeposited", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accRewardPerShare, uint256 workingSupply, uint256 totalDeposited, bool needVesting, uint256 earlyWithdrawFee, uint256 withdrawLock, bool veBoostEnabled)" -} \ No newline at end of file diff --git a/projects/wasabix/index.js b/projects/wasabix/index.js deleted file mode 100644 index 7c53d10a8f4..00000000000 --- a/projects/wasabix/index.js +++ /dev/null @@ -1,247 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const abi = require("./abi.json"); -const { stakings } = require('../helper/staking') -const { pool2s } = require('../helper/pool2') - -const tokens = { - dai: ADDRESSES.ethereum.DAI, - wausd: '0xc2db4c131adaf01c15a1db654c040c8578929d55', - wbtc: ADDRESSES.ethereum.WBTC, - lusd: ADDRESSES.ethereum.LUSD, - walusd: '0xcbf335Bb8eE86A5A88bEbCda4506a665aA8d7022', - wabtc: '0xfd8e70e83e399307db3978d3f34b060a06792c36', - wasabi: '0x896e145568624a498c5a909187363AE947631503', - weth: ADDRESSES.ethereum.WETH, - waeth: '0x6a1fbefdF67445C7F531b4F3e04Ffb37b7b13794', - crv: '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490', - usdc: ADDRESSES.ethereum.USDC, -} - -const contracts = { - vault: { - dai: { - yearn: '0x5cefb9f7c53a1b0c78e239b2445ddd2d362b7076', - idle: '0x894CcdBED28E294482fECf10eAC5962148bf4E15', - pickle: '0x2de9441c3e22725474146450fc3467a2c778040f', - }, - wbtc: { - vesper: '0x26a70759222b1842A7c72215F64C7FdE8Db24856', - }, - lusd: { - liquity: '0x55c75414F525Ef9ccbb8105Ce083EDbDA0075FB5', - }, - weth: { - vesper: '0xB642eb5Faf7e731Ff62823515b3fF82B45d385bC', - } - }, - transmuter: { - wausd: '0x219de705e6c22d6fbc27446161efcc7d5d055ecb', - wabtc: '0x68e91DF501ab66A0796d0fd164B907Acf5f89AD0', - walusd: '0xB208dec45eDBD1179d9e275C5D459E6282d606ea', - waeth: '0x7Ee64F74792c307446CD92D23E551EfAE3172A28', - }, - stakingPoolsV4: '0x47e3492439528fEF29bc5Da55Aa49ED0EFA15c6E', - stakingPools: '0x0EdA8090E9A86668484915e5E1856E83480FA010', - wasabiWETHLp: '0x8f9ef75cd6e610dd8acf8611c344573032fb9c3d', - waUSD3CRV: '0x9f6664205988c3bf4b12b851c075102714869535', - votingEscrow: '0xb938D8cBF7fc6455d1f2ebeDE5FF9A8e887493B2', -} - -const vaults = [ - { - token: tokens.dai, - pools: [ - contracts.vault.dai.yearn, - contracts.vault.dai.idle, - contracts.vault.dai.pickle, - ] - }, - { - token: tokens.wbtc, - pools: [ - contracts.vault.wbtc.vesper, - ] - }, - { - token: tokens.lusd, - pools: [ - contracts.vault.lusd.liquity, - ] - }, - { - token: tokens.weth, - pools: [ - contracts.vault.weth.vesper, - ] - } -] - -const collectors = [ - { - token: tokens['dai'], - pool: contracts.transmuter['wausd'] - }, - { - token: tokens['wbtc'], - pool: contracts.transmuter['wabtc'] - }, - { - token: tokens['weth'], - pool: contracts.transmuter['waeth'] - }, - { - token: tokens['lusd'], - pool: contracts.transmuter['walusd'] - } -] - -const contractsPolygon = { - vault: { - pusd: { - polyquity: '0x4A8086416c824b03D682D6bA117f2eC759c4a085', - } - }, - transmuter: { - wapusd: '0xBBB26ccd60d1444280875c2f9F22bD8c910ec2Eb', - }, - stakingPools: '0x0EdA8090E9A86668484915e5E1856E83480FA010', - votingEscrow: '0x896e145568624a498c5a909187363AE947631503', - wasabiUSDCLp: '0x89e110150fb7df2f20cf79201b81877baffc3797', - wapusdPusdSLp: '0xa982a2a9EbE0623de7350c228fc5335a413AD5C4', -} - -const tokensPolygon = { - wasabi: '0xc2db4c131ADaF01c15a1DB654c040c8578929D55', - usdc: ADDRESSES.polygon.USDC, - pusd: '0x9af3b7dc29d3c4b1a5731408b6a9656fa7ac3b72', - wapusd: '0x3d244d67D680CaDcccf34F8F996CEA777B6d9FFE', -} - -const vaultsPolygon = [ - { - token: tokensPolygon.pusd, - pools: [ - contractsPolygon.vault.pusd.polyquity - ] - } -] - -const collectorsPolygon = [ - { - token: tokensPolygon['pusd'], - pool: contractsPolygon.transmuter['wapusd'] - }, -] - - -async function eth(api) { - await api.sumTokens({ - owners: [contracts.stakingPools, contracts.stakingPoolsV4], tokens: [ - tokens.dai, - tokens.crv, - tokens.wbtc, - tokens.lusd, - tokens.weth - ] - }) - - // vaults - await addVaults(api, vaults) - - const toa = collectors.map(c => [c.token, c.pool]) - return api.sumTokens({ tokensAndOwners: toa, }) -} - -async function addVaults(api, vaults) { - let vaultCalls = [] - let _tokens = [] - - for (let vault of vaults) { - let token = vault.token - let pools = vault.pools - - for (let pool of pools) { - vaultCalls.push(pool) - _tokens.push(token) - } - } - - const vaultBals = await api.multiCall({ calls: vaultCalls, abi: abi['totalDeposited'] }) - api.add(_tokens, vaultBals) - -} - -const contractsBSC = { - vault: { - busd: { - alpaca: '0x84e6Fd3595010Aa6eE461EA2BFFA03776780F412', - } - }, - transmuter: { - wabusd: '0x99b399B4c79B8c51C4bc8c0Df4f49A77Cfdec340', - }, - stakingPools: '0x894CcdBED28E294482fECf10eAC5962148bf4E15', - votingEscrow: '0x7d487Aeaf197691aA5645728c54f204be67991fF', - wasabiWBNBLp: '0x4af56f065fab006721ab686086be206eba9d1abc', - wabusdBusdLp: '0x83a21c7E760F3682AB84D7A25dE79500B76bb908', -} - -const tokensBSC = { - wasabi: '0x86e73212002f80c57070efad4765ff0117de5aea', - wbnb: ADDRESSES.bsc.WBNB, - wabusd: '0x6D897D9C0902aC9399fFF708d1c201396342c80C', - busd: ADDRESSES.bsc.BUSD, -} - -const vaultsBSC = [ - { - token: tokensBSC.busd, - pools: [contractsBSC.vault.busd.alpaca] - } -] - -const collectorsBSC = [ - { - token: tokensBSC['busd'], - pool: contractsBSC.transmuter['wabusd'] - }, -] - -async function bsc(api) { - await api.sumTokens({ owner: contractsBSC.stakingPools, tokens: [tokensBSC.busd,] }) - await addVaults(api, vaultsBSC) - const toa = collectorsBSC.map(c => [c.token, c.pool]) - return api.sumTokens({ tokensAndOwners: toa, }) -} - -async function polygon(api) { - await api.sumTokens({ owner: contractsPolygon.stakingPools, tokens: [tokensPolygon.pusd,] }) - await addVaults(api, vaultsPolygon) - const toa = collectorsPolygon.map(c => [c.token, c.pool]) - return api.sumTokens({ tokensAndOwners: toa, }) -} - -module.exports = { - ethereum: { - tvl: eth, - staking: stakings([contracts.votingEscrow, contracts.stakingPools], tokens.wasabi), - pool2: pool2s([ - contracts.stakingPools, - contracts.stakingPoolsV4, - ], [contracts.wasabiWETHLp]), - }, - bsc: { - tvl: bsc, - staking: stakings([contractsBSC.votingEscrow], tokensBSC.wasabi), - pool2: pool2s([ - contractsBSC.stakingPools, - ], [contractsBSC.wasabiWBNBLp, contractsBSC.wabusdBusdLp]), - }, - polygon: { - tvl: polygon, - staking: stakings([contractsPolygon.votingEscrow], tokensPolygon.wasabi), - pool2: pool2s([ - contractsPolygon.stakingPools, - ], [contractsPolygon.wasabiUSDCLp, contractsPolygon.wapusdPusdSLp],), - }, -} \ No newline at end of file diff --git a/projects/waterdendy/index.js b/projects/waterdendy/index.js deleted file mode 100644 index 53e80602fb4..00000000000 --- a/projects/waterdendy/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - -const STAKING_CONTRACT_ARBITRUM = "0xD0834fF6122FF8dcf38E3eB79372C00FAeAFa08B"; //MASTERCHEF ARBITRUM - -module.exports = masterchefExports({ chain: 'arbitrum', masterchef: STAKING_CONTRACT_ARBITRUM, nativeToken: '0x88692aD37c48e8F4c821b71484AE3C2878C2A2C6', useDefaultCoreAssets: true, }) \ No newline at end of file diff --git a/projects/waterfall-wtf-finance/index.js b/projects/waterfall-wtf-finance/index.js deleted file mode 100644 index 3457756166a..00000000000 --- a/projects/waterfall-wtf-finance/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const sdk = require("@defillama/sdk"); -const {pool2} = require("../helper/pool2"); -const { staking } = require("../helper/staking"); - -const token = "0x1811b7eD3B613805A9a4B4b1B80C99d58Af32576"; -const shares = "0xF4fA8396E2bae8528Fd5DA5a07Ac8915E1CB6DdA"; -const shareRewardPool = "0xE50Ed3b9Eb101397273db82679D27883A69B3A59"; -const masonry = "0xa40E3cFEee96B3142c42FB1648Db761eF652dc0F"; - -const pancakeLPs = [ - "0xbAF461D26f52f627a6F83f8eC474cAc137F42a4F", // WSHARE-WBNB - "0x70785cD02d468e335bf9B58DCD3E106a1A43b057" // WTF-BUSD -] - -module.exports = { - bsc: { - tvl: async () => ({}), - staking: staking(masonry, shares), - pool2: pool2(shareRewardPool, pancakeLPs, "bsc", addr=>`bsc:${addr}`) - } -} \ No newline at end of file diff --git a/projects/waterfallbsc/index.js b/projects/waterfallbsc/index.js deleted file mode 100644 index b1b1d213fae..00000000000 --- a/projects/waterfallbsc/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); -//const arbitrumExports = require("../waterfall-arbitrum"); - -const token = "0xFdf36F38F5aD1346B7f5E4098797cf8CAE8176D0"; -const masterchef = "0x49a21E7Ae826CD5F0c0Cb1dC942d1deD66d21191"; -const chef = "0xe9960f14B5f0713D1d530C1fF079A7adAb7c076D" -const waterfall = "0xedBF59b40336244c6ea94A11a6B0cF6864c87E83" -const waterfallWethLP = "0x29519bcfd1d702363e9Ad63dBd2331C3C7f4A9f7" -const waterfallUsdcLP = "0x18B60b6b6a14D7C33D5086fA84871d519136C064"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", token, false), - ...masterChefExports( chef, "arbitrum", waterfall, false), -} // node test.js projects/waterfallbsc/index.js \ No newline at end of file diff --git a/projects/waterfalldefi/abi.json b/projects/waterfalldefi/abi.json deleted file mode 100644 index 0cd4655f2a9..00000000000 --- a/projects/waterfalldefi/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "tranchesAuto": "function tranches(uint256) view returns (uint256 target, uint256 principal, uint256 autoPrincipal, uint256 validPercent, uint256 apy, uint256 fee, uint256 autoValid)", - "tranchesNonAuto": "function tranches(uint256) view returns (uint256 target, uint256 principal, uint256 apy, uint256 fee)", - "cycleActive": "bool:active" -} \ No newline at end of file diff --git a/projects/waterfalldefi/index.js b/projects/waterfalldefi/index.js deleted file mode 100644 index 191c645514d..00000000000 --- a/projects/waterfalldefi/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const abi = require("./abi.json"); -const url = "https://raw.githubusercontent.com/WaterfallDefi/product-addresses/master/main.json"; -let _response -const { sumTokens2 } = require('../helper/unwrapLPs'); -const { getConfig } = require('../helper/cache'); - - -async function getAddresses(url) { - if (!_response) _response = getConfig('waterfalldefi', url) - let res = await _response; - return res; -} - -async function staking(api) { - let data = await getAddresses(url); - let wtf = data[api.chain].wtf; - const owner = data[api.chain]["staking"].address - return sumTokens2({ api, tokens: [wtf], owner }) -} - -async function tvl(api) { - let data = await getAddresses(url); - const products = data[api.chain].tranches - const isActive = await api.multiCall({ abi: abi.cycleActive, calls: products.map(p => p.address) }) - const ownerTokens = [] - const tranchesAutoCalls = [] - const tranchesNonAutoCalls = [] - for (let i = 0; i < products.length; i++) { - const product = products[i]; - if (isActive[i]) { - let calls = product.auto ? tranchesAutoCalls : tranchesNonAutoCalls; - let tranche_n = product.tranche_n; - - for (let i = 0; i < tranche_n; i++) - calls.push({ target: product.address, params: i, address: product.currency[i], ratio: product.currencyRatios[i] }) - } else { - ownerTokens.push([product.currency, product.address]); - } - } - const autoRes = await api.multiCall({ abi: abi.tranchesAuto, calls: tranchesAutoCalls}) - const nonAutoRes = await api.multiCall({ abi: abi.tranchesNonAuto, calls: tranchesNonAutoCalls}) - autoRes.forEach((res, i) => api.add(tranchesAutoCalls[i].address, res.autoPrincipal * tranchesAutoCalls[i].ratio / 100)) - nonAutoRes.forEach((res, i) => api.add(tranchesNonAutoCalls[i].address, res.principal * tranchesNonAutoCalls[i].ratio / 100)) - - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - methodology: 'Counts Waterfall DeFi tranche products TVL and staking TVL', - bsc: { tvl, staking }, - avax: { tvl, staking }, -}; - diff --git a/projects/waterfallfinance/index.js b/projects/waterfallfinance/index.js deleted file mode 100644 index 4c48023dc58..00000000000 --- a/projects/waterfallfinance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); - -module.exports = masterchefExports({ - chain: 'fantom', - nativeToken: '0x6b2a7B82d3F7a6e1F5A5831aB40666Ec717645d5', - masterchef: '0x4Be7079064537867b40829119Be49Ee8CC76570e', -}) \ No newline at end of file diff --git a/projects/waterloan/index.js b/projects/waterloan/index.js deleted file mode 100644 index cfb91396afb..00000000000 --- a/projects/waterloan/index.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - deadFrom: '2022-10-23', - methodology: `Counts all tokens locked in the contracts to be used as collateral in lending pool. Borrowed coins are not counted towards the TVL, only the coins actually locked in the contracts are counted.`, - csc: { - tvl: () => ({}), - borrowed: () => ({}) // bad debt waterloan("csc", true), - }, - smartbch: { - tvl: () => ({}), - borrowed: () => ({}) // bad debt waterloan("smartbch", true), - }, -}; diff --git a/projects/waterneuron/index.js b/projects/waterneuron/index.js deleted file mode 100644 index cb595e9f0ff..00000000000 --- a/projects/waterneuron/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require("../helper/http"); - -const url = 'https://tsbvt-pyaaa-aaaar-qafva-cai.raw.icp0.io/api/metadata'; - -async function tvl() { - const metadata = await get(url) - const staked_icp = metadata.tracked_6m_stake + metadata.neuron_8y_stake_e8s - return { - "coingecko:internet-computer": staked_icp/ 1e8 - } -} - -module.exports = { - timetravel: false, - methodology: 'Staked tokens are counted as TVL.', - icp: { - tvl, - }, -} diff --git a/projects/wault.js b/projects/wault.js deleted file mode 100644 index c71b784e7ab..00000000000 --- a/projects/wault.js +++ /dev/null @@ -1,10 +0,0 @@ - -module.exports = { - bsc: { - tvl: () => 0 - }, - polygon: { - tvl: () => 0 - }, - deadFrom: '2022-08-19', -} diff --git a/projects/wavelength/index.js b/projects/wavelength/index.js deleted file mode 100644 index ddb4703cec5..00000000000 --- a/projects/wavelength/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -const { onChainTvl } = require('../helper/balancer') - -module.exports = { - velas:{ - tvl: onChainTvl('0xa4a48dfcae6490afe9c779bf0f324b48683e488c', 56062385, { onlyUseExistingCache: true, }) - }, -} \ No newline at end of file diff --git a/projects/waves-exchange/index.js b/projects/waves-exchange/index.js deleted file mode 100644 index 29a81149348..00000000000 --- a/projects/waves-exchange/index.js +++ /dev/null @@ -1,89 +0,0 @@ -const { scriptEvaluate, dataSearch, assetBalance } = require("../helper/chain/waves"); -const { transformDexBalances } = require("../helper/portedTokens"); - -const sdk = require('@defillama/sdk') - -const factoryContract = "3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv"; -const WXPoolsRestContract = "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW"; - -async function getPoolDetail(restContract, lpAssetId) { - const data = (await scriptEvaluate(restContract, `poolStatsREADONLY("${lpAssetId}")`)).result.value['_2'].value; - const [, amountAssetBalance, priceAssetBalance, poolLPBalance, , lpPriceInAmountAsset, lpPriceInPriceAsset, poolWeight] = data.split('__'); - return { - amountAssetBalance: Number(amountAssetBalance), - priceAssetBalance: Number(priceAssetBalance), - poolLPBalance: Number(poolLPBalance), - lpPriceInAmountAsset: Number(lpPriceInAmountAsset), - lpPriceInPriceAsset: Number(lpPriceInPriceAsset), - poolWeight: Number(poolWeight) - }; -} - -async function getPoolsData(factoryContract, restContract, api) { - const result = await dataSearch(factoryContract, ".*__config"); - - // Get pools from waves data state - const pools = result.reduce((acc, { value }) => { - const [, poolAddress, poolStatus, lpAssetId, amountAssetId, priceAssetId, amountAssetDecimals, priceAssetDecimals, , , LPAssetDecimals, poolType] = value.split('__'); - - if (Number(poolStatus) > 2) { - return acc; - } - - acc.push({ - poolAddress, - poolStatus: Number(poolStatus), - lpAssetId, - amountAssetId, - priceAssetId, - amountAssetDecimals: Number(amountAssetDecimals), - priceAssetDecimals: Number(priceAssetDecimals), - LPAssetDecimals: Number(LPAssetDecimals), - poolType - }); - return acc; - }, []); - - //Get pools balances - const data = [] - for (const pool of pools) { - const poolDetails = await getPoolDetail(restContract, pool.lpAssetId); - const isStable = pool.poolType !== 'VLTPOOL' - if (isStable) { - api.add(pool.amountAssetId, poolDetails.amountAssetBalance) - api.add(pool.priceAssetId, poolDetails.priceAssetBalance) - } else { - data.push({ - token0: pool.amountAssetId, - token1: pool.priceAssetId, - token0Bal: poolDetails.amountAssetBalance, - token1Bal: poolDetails.priceAssetBalance, - }) - } - } - - return transformDexBalances({ api, data, }); -} - -async function WXPoolsTVL(api) { - return getPoolsData(factoryContract, WXPoolsRestContract, api); -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, // Waves blockchain - methodology: "TVL of WX means the quantity of staked tokens in WX liqudity pools", - waves: { - staking, - tvl: WXPoolsTVL, - }, -}; - -async function staking() { - const WXStakingWxTokenContract = "3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP"; - const WXAssetId = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on"; - const balances = {}; - const { balance } = await assetBalance(WXStakingWxTokenContract, WXAssetId); - sdk.util.sumSingleBalance(balances, 'waves-exchange', balance / 1e8); - return balances; -} \ No newline at end of file diff --git a/projects/wavesbridge/index.js b/projects/wavesbridge/index.js deleted file mode 100644 index d49ad9b958f..00000000000 --- a/projects/wavesbridge/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const solana = require('../helper/solana'); -const waves = require("../helper/chain/waves"); -const { sumTokens2, } = require('../helper/unwrapLPs'); - -const data = { - bsc: { - contractAddress: "0x3AC7A6635d99F376c3c05442f7Eef62d349C3A55", - tokens: ["0xbA2aE424d960c26247Dd6c32edC70B295c744C43", "0x873CD8702d18Eb584CCdFFc10a5B88d62606cEEF",] - }, - ethereum: { - contractAddress: "0x3AC7A6635d99F376c3c05442f7Eef62d349C3A55", - tokens: ["0x1a920b0eaE5B49c51eBf042a61c3Fa58Dae04882", ADDRESSES.ethereum.INU, "0x6982508145454Ce325dDbE47a25d4ec3d2311933", "0x4d224452801ACEd8B2F0aebE155379bb5D594381", "0x812Ba41e071C7b7fA4EBcFB62dF5F45f6fA853Ee", ADDRESSES.ethereum.USDT,] - }, - unit0: { - contractAddress: "0x3AC7A6635d99F376c3c05442f7Eef62d349C3A55", - tokens: [ADDRESSES.unit0.USDC, ADDRESSES.unit0.USDT, ADDRESSES.unit0.WETH, ADDRESSES.unit0.WBTC,] - }, -} - -async function tvl(api) { - const { contractAddress: owner, tokens } = data[api.chain]; - return sumTokens2({ api, owner, tokens }) -} - -async function solanaTvl() { - return solana.sumTokens2({ owner: '8eQ7p6cBh57pESr6oHT6PS9GtdLQdJVYebeCytf9mufe' }) -} - -async function wavesTvl(api) { - return waves.sumTokens({ owners: ['3P6Rk2XBo6MJm9seLfxvJ1VSGz54yWiYb9U'], api }) -} - -module.exports = { - methodology: "All tokens locked in WavesBridge smart contracts.", - timetravel: false, - waves: { - tvl: wavesTvl, - }, - solana: { - tvl: solanaTvl, - }, -} - -Object.keys(data).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/wavex/index.js b/projects/wavex/index.js deleted file mode 100644 index ceb0db6fbee..00000000000 --- a/projects/wavex/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { gmxExports } = require('../helper/gmx') -const sdk = require('@defillama/sdk') - -const soneiumVault = '0x580DD7a2CfC523347F15557ad19f736F74D5677c' -const soneiumVault2 = '0xcAC4469f2565f30fA17998A69A32203A44c29D88' - -module.exports = { - soneium:{ - tvl: sdk.util.sumChainTvls([ - gmxExports({ vault: soneiumVault, }), - gmxExports({ vault: soneiumVault2, }) - ]) - }, -}; diff --git a/projects/waxdao/index.js b/projects/waxdao/index.js deleted file mode 100644 index ed2f776ee96..00000000000 --- a/projects/waxdao/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const staking_accounts = ["waxdaofarmer", "farms.waxdao", "tf.waxdao"]; - -const tokens = [ - ["eosio.token", "WAX", "wax"], - ["wuffi", "WUF", "wuffi"], - ["alien.worlds", "TLM", "alien-worlds"], -]; - - -// WaxDAO -// https://waxdao.io -async function wax() { - const accounts = ["waxdaolocker", "waxdaomarket", "waxdaobacker", "waxdaoescrow", "waxdaosynths"]; - - return await get_account_tvl(accounts, tokens, "wax"); -} - -async function staking() { - return await get_account_tvl(staking_accounts, tokens, "wax"); -} - -module.exports = { - methodology: `WaxDAO TVL is achieved by querying token balances from vesting, farming, and market contract(s)`, - wax: { - tvl: wax, - staking - }, -} \ No newline at end of file diff --git a/projects/waxfun/index.js b/projects/waxfun/index.js deleted file mode 100644 index a36b729806a..00000000000 --- a/projects/waxfun/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// WaxFun -// https://wax.fun -async function wax() { - const accounts = ["main.waxfun"]; - const tokens = [ - ["eosio.token", "WAX", "wax"] - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `WaxFun TVL is achieved by querying token balances from a launchpad contract`, - wax: { - tvl: wax - }, -} \ No newline at end of file diff --git a/projects/waxfusion/index.js b/projects/waxfusion/index.js deleted file mode 100644 index 4dba2e750e4..00000000000 --- a/projects/waxfusion/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// WaxFusion -// https://waxfusion.io -async function wax() { - const accounts = ["dapp.fusion", "pol.fusion", "cpu1.fusion", "cpu2.fusion", "cpu3.fusion"]; - const tokens = [ - ["eosio.token", "WAX", "wax"] - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `WaxFusion TVL is achieved by querying token balances from liquid staking contracts`, - wax: { - tvl: wax - }, -} \ No newline at end of file diff --git a/projects/wbrockstaking/index.js b/projects/wbrockstaking/index.js deleted file mode 100644 index 2f72feb04f0..00000000000 --- a/projects/wbrockstaking/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -const stakingContract = "0x1a71F508d536c7Ab1D1B53a5D261abD494524C96"; -const BITROCKETHstakingContract = "0x46363C31Be0c677Bd6F3eD429686753794ee8b97"; - -module.exports = { - bitrock: { - tvl: staking(stakingContract, ADDRESSES.bitrock.WBR), - }, - ethereum: { - tvl: staking(BITROCKETHstakingContract, ADDRESSES.bitrock.BR), - }, - methodology: "Wrapped Bitrock tokens locked in staking contract", -}; - diff --git a/projects/wbtc.js b/projects/wbtc.js deleted file mode 100644 index bac409c6e8b..00000000000 --- a/projects/wbtc.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens } = require("./helper/sumTokens"); -const ADDRESSES = require('./helper/coreAssets.json') -const bitcoinAddressBook = require('./helper/bitcoin-book/index.js') -const sdk = require('@defillama/sdk'); - -// WALLETS FROM HERE https://wbtc.network/dashboard/audit -const owners = bitcoinAddressBook.wbtc - -async function tvl(api){ - if(api.timestamp > Date.now()/1e3 - 3600){ - return sumTokens({ owners, api }) - } else { - // get WBTC supply on Ethereum blockchain - const block = await sdk.blocks.getBlock('ethereum', api.timestamp) - const supply = await sdk.api2.abi.call({ chain: 'ethereum', target: ADDRESSES.ethereum.WBTC, abi: 'erc20:totalSupply', block: block.number }) - api.add(ADDRESSES.ethereum.WBTC, supply) - return {[`ethereum:${ADDRESSES.ethereum.WBTC}`]: supply} - } -} - -module.exports = { - bitcoin: { tvl }, - methodology: `TVL for WBTC consists of the BTC deposits in custody that were used to mint WBTC`, -}; diff --git a/projects/wc/index.js b/projects/wc/index.js deleted file mode 100644 index 74cfaac7a8a..00000000000 --- a/projects/wc/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xd5ec14a83B7d95BE1E2Ac12523e2dEE12Cbeea6C", - "0x470458C91978D2d929704489Ad730DC3E3001113", - "0x153A69e4bb6fEDBbAaF463CB982416316c84B2dB", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/wdjc/index.js b/projects/wdjc/index.js deleted file mode 100644 index 7d7ae6fd10e..00000000000 --- a/projects/wdjc/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -// WDJC -// https://waxdeer.com -async function wax() { - const accounts = ["faw.waxdeers"]; - const tokens = [ - ["eosio.token", "WAX", "wax"], - ]; - return await get_account_tvl(accounts, tokens, "wax"); -} - -module.exports = { - methodology: `WDJC TVL is achieved by querying token balances from game smart contract.`, - wax: { - tvl: wax - }, -} diff --git a/projects/weave/index.js b/projects/weave/index.js deleted file mode 100644 index a2691b0457f..00000000000 --- a/projects/weave/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const WKAVA = ADDRESSES.kava.WKAVA; -const STRATEGY_CONTRACT = '0x9633a42E4f73F465DD421b22C09E2787493DaAdA' - -async function tvl(api) { - const strategyBalance = await api.call({ - abi: 'erc20:balanceOf', - target: WKAVA, - params: [STRATEGY_CONTRACT], - }); - - api.add(WKAVA, strategyBalance) -} - -module.exports = { - methodology: 'gets the balance of the strategy contract', - kava: { - tvl, - } -}; \ No newline at end of file diff --git a/projects/web3world/index.js b/projects/web3world/index.js deleted file mode 100644 index 9c14e8173ca..00000000000 --- a/projects/web3world/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { post } = require('../helper/http') - -const url = "https://api.web3.world/v2/pools" - -const payload = { - limit: 1000, - offset: 0, - ordering: "tvldescending", - whiteListUri: "https://static.web3.world/assets/manifest.json" -} - -const tvl = async (api) => { - const { pools } = await post(url, payload) - pools.forEach(({ tvl }) => { - api.addUSDValue(Math.round(tvl)) - }) -} - -module.exports = { - misrepresentedTokens: true, - venom: { tvl } -}; diff --git a/projects/webera/index.js b/projects/webera/index.js deleted file mode 100644 index a6cf267f9c8..00000000000 --- a/projects/webera/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') -const vaults = [ - '0x55a050f76541C2554e9dfA3A0b4e665914bF92EA', // $WBERA Vault - '0x4eAD3867554E597C7B0d511dC68ceaD59286870D', // $HONEY Vault - '0xCf1bfB3F9dc663F6775f999239E646e0021CCc0B', // $WBERA LST Vault - '0x396A3D0B799B1a0B1EaA17e75B4DEa412400860b', // $IBERA Vault - '0xc06B9E2a936A656c13df32a6504C8422189203CE', // $WGBERA Vault -] - -module.exports = { - berachain: { - tvl: sumERC4626VaultsExport({ vaults, isOG4626: true }) - }, - start: '2025-02-18', // 18/02/2025 @ 00:00am (UTC) -} \ No newline at end of file diff --git a/projects/weero-v2/index.js b/projects/weero-v2/index.js deleted file mode 100644 index 30a9bfc46bb..00000000000 --- a/projects/weero-v2/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport('klaytn', '0xdE9634D8A1b5855E3Ddb0B0712b28031e18865d9', { - fromBlock: 184616686, -}) diff --git a/projects/weero-v3/index.js b/projects/weero-v3/index.js deleted file mode 100644 index 1740a0db359..00000000000 --- a/projects/weero-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); -const factory = "0x6603E53b4Ae1AdB1755bAF62BcbF206f90874178"; - -module.exports = uniV3Export({ - klaytn: { factory, fromBlock: 186673202 }, -}); diff --git a/projects/weft-finance-v2/index.js b/projects/weft-finance-v2/index.js deleted file mode 100644 index 41e84af0972..00000000000 --- a/projects/weft-finance-v2/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { post } = require('../helper/http') - -const { sumTokens } = require('../helper/chain/radixdlt'); - -const KEY_VALUE_STORE_URL = `https://mainnet.radixdlt.com/state/key-value-store/` - -const lendingPool = 'component_rdx1czmr02yl4da709ceftnm9dnmag7rthu0tu78wmtsn5us9j02d9d0xn' - -const lendingMarket = 'component_rdx1cpy6putj5p7937clqgcgutza7k53zpha039n9u5hkk0ahh4stdmq4w' - -const resourcePoolsKVS = 'internal_keyvaluestore_rdx1kzjr763caq96j0kv883vy8gnf3jvrrp7dfm9zr5n0akryvzsxvyujc' - -async function tvl(api) { - // - return sumTokens({ owners: [lendingPool, lendingMarket], api, transformLSU: true }); -} - -async function borrowed(api) { - - let keys = (await post(`${KEY_VALUE_STORE_URL}/keys`, { "key_value_store_address": resourcePoolsKVS })).items.map(i => ({ key_hex: i.key.raw_hex })) - - let data = (await post(`${KEY_VALUE_STORE_URL}/data`, { "key_value_store_address": resourcePoolsKVS, "keys": keys })).entries.map(i => ([i.key.programmatic_json.value, i.value.programmatic_json.fields])) - - data.forEach(([key, fields]) => { - - let totalLoan = fields[6].fields[1].value - - api.add(key, +totalLoan) - - }); - -} - -module.exports = { - radixdlt: { tvl, borrowed }, - timetravel: false, -}; diff --git a/projects/weft-finance/index.js b/projects/weft-finance/index.js deleted file mode 100644 index a4ebede8b3f..00000000000 --- a/projects/weft-finance/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const { queryAddresses, sumTokens } = require('../helper/chain/radixdlt'); - -const staking_pools = [ - 'component_rdx1cqzle2pft0y09kwzaxy07maczpwmka9xknl88glwc4ka6a7xavsltd', - 'component_rdx1cpdpfn8q0650yh6stmxdwme4tp7m6lphngpqjazakehttq8aqenvhm', - 'component_rdx1crrxdzcq0cfpxvqk70e0usq8qusqz6g0ht6rylr4wgnxpflzjeaayy' -] - -const lending_pools = [ - { - pool: 'component_rdx1cq8mm5z49x6lyet44a0jd7zq52flrmykwwxszq65uzfn6pk3mvm0k4', - resource: ADDRESSES.radixdlt.XRD, - priceFeed: 'component_rdx1cz9u0svc4d2jtnkdqypxpcea8cj3da9vdqakrt748ackl82khfxv25' - }, - { - pool: 'component_rdx1cq7qd9vnmmu5sjlnarye09rwep2fhnq9ghj6eafj6tj08y7358z5pu', - resource: 'resource_rdx1t4upr78guuapv5ept7d7ptekk9mqhy605zgms33mcszen8l9fac8vf', - priceFeed: 'component_rdx1cz9u0svc4d2jtnkdqypxpcea8cj3da9vdqakrt748ackl82khfxv25', - }, - { - pool: 'component_rdx1cr5cnuzre63whe4yhnemeyvjj2yaq7tqg0j6q4xxtcyajf8rv0hw26', - resource: 'resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf', - priceFeed: 'component_rdx1cptmek76m0xuw3etvdqttvgtcu99lvz84jh9q8zleaj3vc5elk4epc' - } -] - -async function tvl(api) { - return sumTokens({ owners: lending_pools.map((pool_data) => pool_data.pool), api }); -} - -async function borrowed(api) { - const poolData = await queryAddresses({ addresses: lending_pools.map((item) => item.pool) }); - - lending_pools.forEach((pool) => { - const { details } = poolData.find((item) => item.address === pool.pool); - api.add(pool.resource, +details.state.fields[1].value) - }); -} - -async function staking(api) { - return sumTokens({ owners: staking_pools, api }); -} - -module.exports = { - radixdlt: { tvl, borrowed, staking }, - timetravel: false, -}; diff --git a/projects/weissFinance/index.js b/projects/weissFinance/index.js deleted file mode 100644 index 3b85f08909d..00000000000 --- a/projects/weissFinance/index.js +++ /dev/null @@ -1,19 +0,0 @@ - -const sui = require("../helper/chain/sui"); -const ADDRESSES = require("../helper/coreAssets.json"); - -const VAULT_REGISTRY_SUI = "0xa16f2aef5db003653344700dec7a8151ba6bf029db6bbf8d70025f5a55ff042e"; // Vault Registry SUI type address - -async function tvl(api) { - // Collateral in vaults (SUI) - const registrySUI = await sui.getObject(VAULT_REGISTRY_SUI); - const totalCollateralSUI = Number(registrySUI.fields.total_collateral) / 1e9; - api.add(ADDRESSES.sui.SUI, totalCollateralSUI); -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -}; diff --git a/projects/weldfinance/index.js b/projects/weldfinance/index.js deleted file mode 100644 index e22a0e7735e..00000000000 --- a/projects/weldfinance/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { masterchefExports, } = require("../helper/unknownTokens") -const sdk = require('@defillama/sdk') - -const USDk = '0x472402d47da0587c1cf515dafbafc7bce6223106' -const kBRISE = '0xea616011e5ac9a5b91e22cac59b4ec6f562b83f9' -const KFT = "0xa0eeda2e3075092d66384fe8c91a1da4bca21788" - -async function verifyTvl() { - let [ - usdkSupply, - briseSupply, - ] = await sdk.api2.abi.multiCall({ - abi: 'erc20:totalSupply', chain: 'kava', - calls: [USDk, kBRISE,] - }) - usdkSupply /= 1e18 - briseSupply /= 1e18 - - const fireBlockAccount = '0x07B8F3e3D3fCf5b6D8cf1a49B92047008EE991E8' - const fireBlockHotAccount = '0x5e14128aC1192B31F2f9026D7130F446D0546D9c' - - const bals = await sdk.api2.abi.multiCall({ - abi: 'erc20:balanceOf', - calls: [ - { target: ADDRESSES.ethereum.USDC, params: fireBlockAccount }, - { target: ADDRESSES.ethereum.USDT, params: fireBlockAccount }, - ], - }) - - const balsPoly = await sdk.api2.abi.multiCall({ - abi: 'erc20:balanceOf', - chain: 'polygon', - calls: [ - { target: ADDRESSES.polygon.USDC, params: fireBlockAccount }, - { target: ADDRESSES.polygon.USDT, params: fireBlockAccount }, - ], - }) - - const res = await sdk.api.eth.getBalances({ targets: [fireBlockAccount, fireBlockHotAccount], chain: 'bitgert', }) - let { output: briseBacking2 } = await sdk.api.erc20.balanceOf({ target: '0x8FFf93E810a2eDaaFc326eDEE51071DA9d398E83', owner: fireBlockHotAccount, chain: 'bsc', }) - const briseBacking = res.output.reduce((a, i) => (a + +i.balance/1e18), 0) - briseBacking2 /= 1e9 - const backing = [...bals, ...balsPoly].reduce((a, i) => a + i / 1e6, 0) - - sdk.log('usdk supply: ', usdkSupply, 'usdk backing: ', backing, 'diff', backing - usdkSupply) - sdk.log('BRISE supply: ', briseSupply, 'BRISE backing: ', (+briseBacking + +briseBacking2) , 'diff', (+briseBacking + +briseBacking2) - briseSupply) - - if (usdkSupply > backing * 1.2) throw new Error('USDk supply is higher than backing') - if ((briseSupply > (+briseBacking + +briseBacking2))) throw new Error('BRISE supply is higher than backing') - return {} -} - -module.exports = masterchefExports({ - chain: 'kava', - useDefaultCoreAssets: true, - masterchef: '0xAbF3edbDf79dAfBBd9AaDBe2efEC078E557762D7', - nativeToken: KFT, - blacklistedTokens: [USDk, kBRISE], -}) - -// module.exports.kava.tvl = sdk.util.sumChainTvls([module.exports.kava.tvl, verifyTvl]) \ No newline at end of file diff --git a/projects/welnance/index.js b/projects/welnance/index.js deleted file mode 100644 index eb2d5d31b62..00000000000 --- a/projects/welnance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { compoundExports } = require("../helper/compound"); - -const comptroller = "0xdc21c1dAF3277f07fFA6EB09fCD3E07EDc36DC0A"; - -module.exports = { - bsc: compoundExports(comptroller, - "0x38e22c429e62530cbB59B90bF14a71346C727752", - ), - methodology: - "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", -}; -module.exports.bsc.borrowed = () => ({}) -module.exports.deadFrom = '2025-05-01' \ No newline at end of file diff --git a/projects/wemix-fi/index.js b/projects/wemix-fi/index.js deleted file mode 100644 index ef0272c7fa6..00000000000 --- a/projects/wemix-fi/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('wemix', '0xe1F36C7B919c9f893E2Cd30b471434Aa2494664A') //test \ No newline at end of file diff --git a/projects/wemix-lend/index.js b/projects/wemix-lend/index.js deleted file mode 100644 index ea92a8e3900..00000000000 --- a/projects/wemix-lend/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {compoundExports} = require('../helper/compound'); - -const compound = "0x929620a759a564e3C273e8a4efCDa5806da168F2"; -const cETH = "0x34b9B18fDBE2aBC6DfB41A7f6d39B5E511ce3e23"; - -module.exports = { - wemix: compoundExports(compound,cETH), -}; \ No newline at end of file diff --git a/projects/wemix-liquid-staking/index.js b/projects/wemix-liquid-staking/index.js deleted file mode 100644 index 07daa070636..00000000000 --- a/projects/wemix-liquid-staking/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const token = '0x9B377bd7Db130E8bD2f3641E0E161cB613DA93De' - -async function tvl(api) { - const supply = await api.call({ abi: 'uint256:totalSupply', target: token, }); - api.add(ADDRESSES.null, supply) -} - -module.exports = { - methodology: 'Retrieve the total underlying stWemix supply', - wemix: { - tvl - } -} diff --git a/projects/wemix-on-kroma/index.js b/projects/wemix-on-kroma/index.js deleted file mode 100644 index 3b49d047838..00000000000 --- a/projects/wemix-on-kroma/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs'); -const wemixEContract = ADDRESSES.kroma.WEMIX; -const stakingContract = '0xA5c7992710A94A2ef2e8E910b441bD70385DBAB8' - -module.exports = { - methodology: "The balance of WEMIX.e tokens staked in Staking Wemix Contract on kroma chain", - kroma: { tvl: sumTokensExport({ owner: stakingContract, tokens: [wemixEContract]}) }, -} diff --git a/projects/wemix-staking/index.js b/projects/wemix-staking/index.js deleted file mode 100644 index 5def48b7ca7..00000000000 --- a/projects/wemix-staking/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const registryContract = '0x2e051a657014024f3e6099fbf3931f8dc14ef0f8'; -const stWemixContract = '0x9B377bd7Db130E8bD2f3641E0E161cB613DA93De'; -const ncpStakingContract = '0x6Af09e1A3c886dd8560bf4Cabd65dB16Ea2724D8'; -const grandStakingContract = '0x6F3f44B0Cf7C751f2a44Faf6bFdd08e499Eb0973'; -const wemix = ADDRESSES.null; -const Staking = '0x5374616b696e6700000000000000000000000000000000000000000000000000'; -const Governance = '0x476f7665726e616e6365436f6e74726163740000000000000000000000000000'; - -const abi = { - getContractAddress: 'function getContractAddress(bytes32 _name) public view returns (address addr)', - getMember: 'function getMember(uint256) external view returns (address)', - getMemberLength: 'function getMemberLength() external view returns (uint256)', - userTotalBalanceOf: 'function userTotalBalanceOf(address ncp) external view returns (uint256)', - pid: 'function pid() external view returns (uint256)', - getUserInfo: 'function getUserInfo(uint256 pid, address account) external view returns (tuple(uint256 amount, uint256 rewardDept, uint256 pendingReward, uint256 pendingAmountReward, uint256 lastRewardClaimed) memory info)', - getPoolInfo: 'function getPoolInfo(uint256 pid) external view returns (tuple(uint256 accRewardPerShare, uint256 accMPPerShare, uint256 lastRewardBlock, uint256 totalDeposit, uint256 totalMP, address rewardToken, bool isInputNative, bool isRewardNative, bool activatedMP, bool lock, address[] path, address breaker, address breakerSetter) memory info)' -} - -async function tvl(api) { - const wonderStakingContract = await api.call({ abi: abi.getContractAddress, target: registryContract, params: Staking }) - const govContract = await api.call({ abi: abi.getContractAddress, target: registryContract, params: Governance }) - const members = await api.fetchList({ lengthAbi: abi.getMemberLength, itemAbi: abi.getMember, target: govContract, startFromOne: true }) - const bals = await api.multiCall({ abi: abi.userTotalBalanceOf, calls: members, target: wonderStakingContract }) - api.add(wemix, bals) - const pid = await api.call({ abi: abi.pid, target: stWemixContract }) - // Get Liquid Staking Amount - const wemixInfo = await api.call({ abi: abi.getUserInfo, target: ncpStakingContract, params: [pid, stWemixContract] }) - // Sub Liquid staking from Wonder Straking - api.add(wemix, wemixInfo['amount'] * -1); - - const grandInfo= await api.call({ abi: abi.getPoolInfo, target: grandStakingContract, params: 0 }) - const diosInfo = await api.call({ abi: abi.getPoolInfo, target: grandStakingContract, params: 1 }) - api.add(wemix, grandInfo.totalDeposit) - api.add(wemix, diosInfo.totalDeposit) -} - -module.exports = { - hallmarks: [ - [1687478400, "WONDER Staking Live"] - ], - wemix: { - tvl - }, -}; \ No newline at end of file diff --git a/projects/wemix-v3/index.js b/projects/wemix-v3/index.js deleted file mode 100644 index 7d7fb928820..00000000000 --- a/projects/wemix-v3/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { uniV3Export } = require("../helper/uniswapV3"); - -module.exports = uniV3Export({ - wemix: { - factory: "0x8EFf28B531B731814e4E4fFfa0F7Bd0FC50f370F", - fromBlock: 33104424, - }, -}); \ No newline at end of file diff --git a/projects/wenmarkets/index.js b/projects/wenmarkets/index.js deleted file mode 100644 index b1bcd2437c7..00000000000 --- a/projects/wenmarkets/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x3bB94837A91E22A134053B9F38728E27055ec3d1" - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the MATIC on ${contract}`, - polygon: { - tvl - } -} \ No newline at end of file diff --git a/projects/wepiggy.js b/projects/wepiggy.js deleted file mode 100644 index df18bd35cb7..00000000000 --- a/projects/wepiggy.js +++ /dev/null @@ -1,65 +0,0 @@ -const { compoundExports2 } = require('./helper/compound'); - -const contracts = { - ethereum: { - comptroller: '0x0C8c1ab017c3C0c8A48dD9F1DB2F59022D190f0b', - gas: { pToken: "0x27A94869341838D5783368a8503FdA5fbCd7987c", }, - }, - okexchain: { - comptroller: '0xaa87715e858b482931eb2f6f92e504571588390b', - gas: { pToken: "0x621ce6596e0b9ccf635316bfe7fdbc80c3029bec", }, - }, - bsc: { - comptroller: '0x8c925623708A94c7DE98a8e83e8200259fF716E0', - gas: { pToken: "0x33A32f0ad4AA704e28C93eD8Ffa61d50d51622a7", }, - }, - polygon: { - comptroller: '0xFfceAcfD39117030314A07b2C86dA36E51787948', - gas: { pToken: "0xC1B02E52e9512519EDF99671931772E452fb4399", }, - }, - heco: { - comptroller: '0x3401D01E31BB6DefcFc7410c312C0181E19b9dd5', - gas: { pToken: "0x75DCd2536a5f414B8F90Bb7F2F3c015a26dc8c79", }, - }, - arbitrum: { - comptroller: '0xaa87715E858b482931eB2f6f92E504571588390b', - gas: { pToken: "0x17933112E9780aBd0F27f2B7d9ddA9E840D43159", }, - }, - optimism: { - comptroller: '0x896aecb9E73Bf21C50855B7874729596d0e511CB', - gas: { pToken: "0x8e1e582879Cb8baC6283368e8ede458B63F499a5", }, - }, - moonriver: { - comptroller: '0x9a9b2bF1d1c96332C55d0B6aCb8C2B441381116d', - gas: { pToken: "0x621CE6596E0B9CcF635316BFE7FdBC80C3029Bec", }, - }, - harmony: { - comptroller: '0xaa87715E858b482931eB2f6f92E504571588390b', - gas: { pToken: "0xd1121aDe04EE215524aeFbF7f8D45029214d668D", }, - }, - oasis: { - comptroller: '0x5Ea2321aBFF78E81702cE877319cD775E0dc865B', - gas: { pToken: "0x33A32f0ad4AA704e28C93eD8Ffa61d50d51622a7", }, - }, - aurora: { - comptroller: '0xFfceAcfD39117030314A07b2C86dA36E51787948', - gas: { pToken: "0x75DCd2536a5f414B8F90Bb7F2F3c015a26dc8c79", }, - }, - moonbeam: { - comptroller: '0x5Ea2321aBFF78E81702cE877319cD775E0dc865B', - gas: { pToken: "0x33A32f0ad4AA704e28C93eD8Ffa61d50d51622a7", }, - }, -}; - -const chainExports = {} -Object.entries(contracts).forEach(([chain, chainData]) => { - chainExports[chain] = compoundExports2({ - comptroller: chainData.comptroller, - cether: chainData.gas.pToken, - }) -}) - -module.exports = { - ...chainExports, - methodology: `TVL is comprised of tokens deposited to the protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.` -} diff --git a/projects/westater/index.js b/projects/westater/index.js deleted file mode 100644 index e8c9578c662..00000000000 --- a/projects/westater/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - - -const farms = [ - { - address: '0xE22da09d0B847291076bF5691a9D3908eB8CbAFe', - token: '0xE4E55C9203Ac398A0F0B98BD096B70D9778eCa6A', - }, - { - address: '0xF01f44B1b5770d3c5dc54FE1455786d1227736CC', - token: '0x910651F81a605a6Ef35d05527d24A72fecef8bF0', - }, - { - address: '0x5b0F4cb9041cED035Fd0a7Db3c0C2f7f4dC62A66', - token: '0xD9baBF51f327829264f554B4Fa4e12Cec5BD0F50', - }, -] - -async function tvl(api) { - const tokens = farms.map(farm => farm.token) - const addresses = farms.map(farm => farm.address) - const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: addresses}) - api.addTokens(tokens, bals) - return sumTokens2({api, resolveLP: true}) -} - -module.exports = { - heco: { - tvl, - }, -} - -module.exports.deadFrom = '2025-01-15' // Heco chain is retired \ No newline at end of file diff --git a/projects/weve/index.js b/projects/weve/index.js deleted file mode 100644 index 903858d8f1f..00000000000 --- a/projects/weve/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const {masterChefExports, standardPoolInfoAbi} = require('../helper/masterchef') -module.exports=masterChefExports("0xe04c26444d37fe103b9cc8033c99b09d47056f51", "fantom", "0x911da02c1232a3c3e1418b834a311921143b04d7", false, - standardPoolInfoAbi -) \ No newline at end of file diff --git a/projects/whaleex/index.js b/projects/whaleex/index.js deleted file mode 100644 index 5f1800273df..00000000000 --- a/projects/whaleex/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const tokens = [ - ["eosio.token", "EOS", "eos"], - ["tokens.wal", "USDT", "tether"], - ["tokens.wal", "BTC", "bitcoin"], - ["eosiotptoken", "TPT", "token-pocket"], - ["mkstaketoken", "KEY", "key"], - ["everipediaiq", "IQ", "everipedia"], - ["emanateoneos", "EMT", "emanate"], - ["minedfstoken", "DFS", "defis-network"], - ["vig111111111", "VIG", "vig"], -]; - -// WhaleEx -// https://www.whaleex.com -async function eos() { - return await get_account_tvl("whaleextrust", tokens); -} - -module.exports = { - methodology: `WhaleEx's TVL is achieved by querying token balances from DEX smart contract.`, - eos: { - tvl: eos - }, -} \ No newline at end of file diff --git a/projects/whalegame/index.js b/projects/whalegame/index.js deleted file mode 100644 index b4a6d6e93bd..00000000000 --- a/projects/whalegame/index.js +++ /dev/null @@ -1,26 +0,0 @@ - -const ADDRESSES = require("../helper/coreAssets.json"); - -const GAME_CONTRACT_ADDRESS = "0xF1baf16Db25405856f5379246Beba2B694e1449D"; - -async function tvl(api) { - const whaleTokenAddress = await api.call({ abi: abi.whaleToken, target: GAME_CONTRACT_ADDRESS, }); - const owners = [GAME_CONTRACT_ADDRESS, whaleTokenAddress] - - owners.push(...await api.fetchList({ itemAbi: abi.vestingContractforRound, lengthAbi: abi.round, target: GAME_CONTRACT_ADDRESS, })) - return api.sumTokens({ tokens: [ADDRESSES.null], owners, blacklistedOwners: [ADDRESSES.null] }) -} - -module.exports = { - methodology: - "Counts the amount of ETH in the Game Pot, WHALE Rewards Contract and unclaimed ETH in vesting contracts", - ethereum: { - tvl, - }, -}; - -const abi = { - "vestingContractforRound": "function vestingContractForRound(uint256) view returns (address)", - "round": "uint256:round", - "whaleToken": "address:whaleToken" -} \ No newline at end of file diff --git a/projects/whaleloans/index.js b/projects/whaleloans/index.js deleted file mode 100644 index fb2dd165dec..00000000000 --- a/projects/whaleloans/index.js +++ /dev/null @@ -1,8 +0,0 @@ -// NOTE: treasury is emptied, token is worthless, adapter is left alone for historical data -module.exports = { - bsc: { - tvl: () => ({}), - staking: () => ({}), - } -} -module.exports.deadFrom = '2022-07-09' \ No newline at end of file diff --git a/projects/whales-market/index.js b/projects/whales-market/index.js deleted file mode 100644 index ac9413b92f3..00000000000 --- a/projects/whales-market/index.js +++ /dev/null @@ -1,74 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokens2 } = require("../helper/solana"); -const { sumTokensExport } = require('../helper/sumTokens') - -const insuranceConfig = { - ethereum: { - owner: '0x1eCdB32e59e948C010a189a0798C674a2d0c6603', - tokens: [ADDRESSES.null, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC], - }, - arbitrum: { - owner: '0x7a560269480ef38b885526c8bbecdc4686d8bf7a', - tokens: [ADDRESSES.null, ADDRESSES.arbitrum.USDC], - }, - merlin: { - owner: '0x7a560269480ef38b885526c8bbecdc4686d8bf7a', - tokens: [ADDRESSES.null], - }, - manta: { - owner: '0x7a560269480Ef38B885526C8bBecdc4686d8bF7A', - tokens: [ADDRESSES.null], - }, - starknet: { - owner: '0x04427a62f43314c0f1b171358235c04598dbc702c61a891fa1fb0cc52936cfff', - tokens: [ADDRESSES.starknet.ETH, ADDRESSES.starknet.USDC, ADDRESSES.starknet.USDT], - }, - blast: { - owner: '0x7a560269480Ef38B885526C8bBecdc4686d8bF7A', - tokens: [ADDRESSES.null], - }, - base: { - owner: '0xdf02eeaB3CdF6eFE6B7cf2EB3a354dCA92A23092', - tokens: [ADDRESSES.null], - }, - bsc: { - owner: '0x7a560269480Ef38B885526C8bBecdc4686d8bF7A', - tokens: [ADDRESSES.null], - }, - linea: { - owner: '0x7a560269480Ef38B885526C8bBecdc4686d8bF7A', - tokens: [ADDRESSES.null], - }, - mode: { - owner: '0x7a560269480Ef38B885526C8bBecdc4686d8bF7A', - tokens: [ADDRESSES.null], - }, - solana: { - owner: 'GDsMbTq82sYcxPRLdQ9RHL9ZLY3HNVpXjXtCnyxpb2rQ', - tokens: [ - ADDRESSES.solana.USDC, - ADDRESSES.solana.SOL, - ADDRESSES.solana.USDT, - 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn'// jito SOL - ], - }, - -} - -async function tvl() { - return sumTokens2({ owner: insuranceConfig.solana.owner }); -} - -module.exports = { - ethereum: { tvl: sumTokensExport(insuranceConfig.ethereum) }, - arbitrum: { tvl: sumTokensExport(insuranceConfig.arbitrum) }, - merlin: { tvl: sumTokensExport(insuranceConfig.merlin) }, - manta: { tvl: sumTokensExport(insuranceConfig.manta) }, - blast: { tvl: sumTokensExport(insuranceConfig.blast) }, - base: { tvl: sumTokensExport(insuranceConfig.base) }, - bsc: { tvl: sumTokensExport(insuranceConfig.bsc) }, - linea: { tvl: sumTokensExport(insuranceConfig.linea) }, - mode: { tvl: sumTokensExport(insuranceConfig.mode) }, - solana: { tvl }, - starknet: { tvl: sumTokensExport(insuranceConfig.starknet) }, -}; diff --git a/projects/whaleswap/index.js b/projects/whaleswap/index.js deleted file mode 100644 index a7ae009ecbd..00000000000 --- a/projects/whaleswap/index.js +++ /dev/null @@ -1,83 +0,0 @@ -const { getUniTVL, staking, } = require('../helper/unknownTokens') -const pod = '0xdded222297b3d08dafdac8f65eeb799b2674c78f' - -module.exports = { - bsc: { - tvl: getUniTVL({ - factory: '0xabc26f8364cc0dd728ac5c23fa40886fda3dd121', - useDefaultCoreAssets: true, - }), - staking: staking( { - owners: ["0xdEe627eaaB378ec57ECfB94b389B718ef3687c0D", "0xdc8715aCFB63cd0BD01a2C3e7De514845FdbcDF7"], - tokens: [pod], - useDefaultCoreAssets: true, - lps: ['0x85aa60b3e25a7df37ea1ec1f38ef403d536f0489'] - }) - }, - fantom: { - tvl: getUniTVL({ - factory: '0xabc26f8364cc0dd728ac5c23fa40886fda3dd121', - useDefaultCoreAssets: true, - }), - staking: staking( { - owners: ["0xdEe627eaaB378ec57ECfB94b389B718ef3687c0D", "0xdc8715aCFB63cd0BD01a2C3e7De514845FdbcDF7"], - tokens: [pod], - useDefaultCoreAssets: true, - lps: ['0x48eD248c981d6a97Ba84e21Dd02685951423f59B'] - }) - }, - arbitrum: { - tvl: getUniTVL({ - factory: '0xabc26f8364cc0dd728ac5c23fa40886fda3dd121', - useDefaultCoreAssets: true, - }), - staking: staking( { - owners: ["0xdEe627eaaB378ec57ECfB94b389B718ef3687c0D", "0xdc8715aCFB63cd0BD01a2C3e7De514845FdbcDF7"], - tokens: [pod], - useDefaultCoreAssets: true, - lps: ['0x70348dAEB1cC0DD873481690823552590b71873A'] - }) - }, - optimism: { - tvl: getUniTVL({ - factory: '0xabc26f8364cc0dd728ac5c23fa40886fda3dd121', - useDefaultCoreAssets: true, - }), - staking: staking( { - owners: ["0xdEe627eaaB378ec57ECfB94b389B718ef3687c0D", "0xdc8715aCFB63cd0BD01a2C3e7De514845FdbcDF7"], - tokens: [pod], - useDefaultCoreAssets: true, - lps: ['0xD6E83C3b484F9bd4755e1AD7Bc1a401f6e63e176'] - }) - }, - avax: { - tvl: getUniTVL({ - factory: '0xabc26f8364cc0dd728ac5c23fa40886fda3dd121', - useDefaultCoreAssets: true, - }), - staking: staking( { - owners: ["0xdEe627eaaB378ec57ECfB94b389B718ef3687c0D", "0xdc8715aCFB63cd0BD01a2C3e7De514845FdbcDF7"], - tokens: [pod], - useDefaultCoreAssets: true, - lps: ['0xA81c921479baD1980e6e47267EeE949a987AB29e'] - }) - }, - polygon: { - tvl: getUniTVL({ - factory: '0xabc26f8364cc0dd728ac5c23fa40886fda3dd121', - useDefaultCoreAssets: true, - }), - staking: staking( { - owners: ["0xdEe627eaaB378ec57ECfB94b389B718ef3687c0D", "0xdc8715aCFB63cd0BD01a2C3e7De514845FdbcDF7"], - tokens: [pod], - useDefaultCoreAssets: true, - lps: ['0x12B880dBDB3e7f49f30644D78e4119fDA510BDfF'] - }) - }, - kava: { - tvl: getUniTVL({ - factory: '0xabc26f8364cc0dd728ac5c23fa40886fda3dd121', - useDefaultCoreAssets: true, - }) - }, -} diff --git a/projects/white-protocol/index.js b/projects/white-protocol/index.js deleted file mode 100644 index a4260dc34ae..00000000000 --- a/projects/white-protocol/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens"); -const { nullAddress } = require("../helper/unwrapLPs"); - -const stakingContractAddress = '0xefC170513C4026771279D453EF57cEEb66881929'; -const whiteTokenAddress = '0x39B44F9C6e3ed4F1b4F7b01B9176B1F440195a2f'; -const LP = '0x177f0bcEF458cb379581A9B8e67E02abfe4a3d08' - -module.exports = { - misrepresentedTokens: true, - op_bnb: { - tvl: sumTokensExport({ owner: stakingContractAddress, tokens: [nullAddress] }), - pool2: sumTokensExport({ owner: '0xdB9320dDE030cEF08C615E7547cee98848Bd297e', tokens: [LP], useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/whiteheart/index.js b/projects/whiteheart/index.js deleted file mode 100644 index e9b818adb84..00000000000 --- a/projects/whiteheart/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const whbtc = "0xf19c3FAFB0171484d2301Af1838cB5C6Ea739dC4" -const wheth = "0x33827D2d2a0f4533AC26083E6eaAe71D417cbBA0" -const writeUSDC = "0xda0606037834f4279Dc590434231F1E01C468629" -const weth = ADDRESSES.ethereum.WETH -const wbtc = ADDRESSES.ethereum.WBTC -const usdc = ADDRESSES.ethereum.USDC - -async function tvl(_timestamp, ethBlock) { - const balances = {}; - const underlyingBalances = await sdk.api.abi.multiCall({ - calls: [{ - target: wbtc, - params: whbtc - },{ - target: weth, - params: wheth - },{ - target: usdc, - params: writeUSDC - }], - block: ethBlock, - abi: "erc20:balanceOf" - }); - sdk.util.sumMultiBalanceOf(balances, underlyingBalances, true) - - return balances -} - -module.exports = { - ethereum: { - tvl - }, -} \ No newline at end of file diff --git a/projects/whitehole-finance/index.js b/projects/whitehole-finance/index.js deleted file mode 100644 index c255bb56ad8..00000000000 --- a/projects/whitehole-finance/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); - -module.exports = { - arbitrum: compoundExports2({ comptroller: '0x1d019f2d14bdb81bab7ba4ec7e20868e669c32b1', abis: { getAllMarkets: 'address[]:allMarkets', totalBorrows: 'uint256:totalBorrow' } }), -}; diff --git a/projects/whitewhale-dex/index.js b/projects/whitewhale-dex/index.js deleted file mode 100644 index 5762a195c3c..00000000000 --- a/projects/whitewhale-dex/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { getFactoryTvl } = require('../terraswap/factoryTvl') - -const factory = { - terra2: "terra1f4cr4sr5eulp3f2us8unu6qv8a5rhjltqsg7ujjx6f2mrlqh923sljwhn3", - juno: "juno14m9rd2trjytvxvu4ldmqvru50ffxsafs8kequmfky7jh97uyqrxqs5xrnx", - injective: "inj1x22q8lfhz7qcvtzs0dakhgx2th64l79kfye5lk", - comdex: "comdex1gurgpv8savnfw66lckwzn4zk7fp394lpe667dhu7aw48u40lj6jswv4mft", - chihuahua: "chihuahua1s8ehad3r9wxyk08ls2nmz8mqh4vlfmaxd2nw0crxwh04t4l5je4s8ljv0j", - migaloo: "migaloo1z89funaazn4ka8vrmmw4q27csdykz63hep4ay8q2dmlspc6wtdgq92u369", - sei: "sei1tcx434euh2aszzfsjxqzvjmc4cww54rxvfvv8v7jz353rg779l2st699q0", - osmosis: "osmo1vuzkc4nzzav7g6t20f2vp0ed4sm3vaqnkpzy7yq3kujxs2g2hawqwnwy5w" -} - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - hallmarks: [ - [1651881600, "UST depeg"], - [1676300400,"Migaloo Chain Launch"] - ] -} - -Object.keys(factory).forEach(chain => { - const contract = factory[chain] - if (chain === 'comdex') { - module.exports[chain] = { tvl: () => ({}) } - } else { - module.exports[chain] = { tvl: getFactoryTvl(contract) } - } -}) \ No newline at end of file diff --git a/projects/whitewhale/index.js b/projects/whitewhale/index.js deleted file mode 100644 index 8fce410596f..00000000000 --- a/projects/whitewhale/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens } = require('../helper/chain/cosmos') - -async function tvl() { - return sumTokens({chain: 'terra', owner: 'terra1ec3r2esp9cqekqqvn0wd6nwrjslnwxm7fh8egy'}) -} - -module.exports = { - terra: { - tvl - }, - hallmarks:[ - [1651881600, "UST depeg"], - ] -} diff --git a/projects/wigoswap/index.js b/projects/wigoswap/index.js deleted file mode 100644 index 63c2b7d0502..00000000000 --- a/projects/wigoswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const wigoToken = '0xE992bEAb6659BFF447893641A378FbbF031C5bD6' -const masterFarmer = '0xA1a938855735C0651A6CfE2E93a32A28A236d0E9' - -const { uniTvlExports } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -module.exports = uniTvlExports({ - 'fantom': '0xC831A5cBfb4aC2Da5ed5B194385DFD9bF5bFcBa7' -}, { staking: { fantom: [masterFarmer, wigoToken] } }) diff --git a/projects/wildbase/index.js b/projects/wildbase/index.js deleted file mode 100644 index 4ad1872eb37..00000000000 --- a/projects/wildbase/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterchefExports } = require("../helper/unknownTokens"); - -module.exports = masterchefExports({ - chain: 'base', - masterchef: '0x3eAB0C9716b0aA98CdC4c3ae317d69dE301ef247', - useDefaultCoreAssets: true, - nativeToken: '0xbCDa0bD6Cd83558DFb0EeC9153eD9C9cfa87782E' -}) \ No newline at end of file diff --git a/projects/wildcat-fi/index.js b/projects/wildcat-fi/index.js deleted file mode 100644 index a48dc93c3ae..00000000000 --- a/projects/wildcat-fi/index.js +++ /dev/null @@ -1,38 +0,0 @@ -// https://wildcat-protocol.gitbook.io/wildcat/technical-deep-dive/contract-deployments -const config = { - ethereum: { archController: '0xfEB516d9D946dD487A9346F6fee11f40C6945eE4', }, - // sepolia: { archController: '0xC003f20F2642c76B81e5e1620c6D8cdEE826408f', }, -} - -const marketBlacklist = [ - '0x262dd546703760adda0c06279508e04bd1f60dee' // Kinto -].map(i => i.toLowerCase()) - -Object.keys(config).forEach(chain => { - const { archController } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const { markets, tokens } = await getMarkets(api) - return api.sumTokens({ tokensAndOwners2: [tokens, markets] }) - }, - borrowed: async (api) => { - const { markets, tokens } = await getMarkets(api) - const debts = await api.multiCall({ abi: 'uint256:totalDebts', calls: markets }) - const assets = await api.multiCall({ abi: 'uint256:totalAssets', calls: markets }) - tokens.forEach((token, i) => { - const bal = debts[i] - assets[i] - if (bal > 0) - api.add(token, bal) - }) - return api.getBalances() - } - } - - async function getMarkets(api) { - const markets = ( - await api.call({ abi: 'address[]:getRegisteredMarkets', target: archController }) - ).filter(i => !marketBlacklist.includes(i.toLowerCase())) - const tokens = await api.multiCall({ abi: 'address:asset', calls: markets }) - return { markets, tokens } - } -}) \ No newline at end of file diff --git a/projects/wildcredit/abi.json b/projects/wildcredit/abi.json deleted file mode 100644 index 3fc08ca225f..00000000000 --- a/projects/wildcredit/abi.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "factory": "address:factory", - "tokenA": "address:tokenA", - "tokenB": "address:tokenB", - "totalDebt": "function totalDebt(address) view returns (uint256)", - "totalSupplyAmount": "function totalSupplyAmount(address) view returns (uint256)", - "totalDebtAmount": "function totalDebtAmount(address) view returns (uint256)", - "balanceOf": "function balanceOf(address owner) view returns (uint256)", - "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)", - "getPool": "function getPool(address, address, uint24) view returns (address)", - "slot0": "function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)", - "positions": "function positions(uint256 tokenId) view returns (uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)" -} \ No newline at end of file diff --git a/projects/wildcredit/abis.json b/projects/wildcredit/abis.json deleted file mode 100644 index 5b8cf77a16f..00000000000 --- a/projects/wildcredit/abis.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "acceptOwnership": "function acceptOwnership()", - "controller": "address:controller", - "createPair": "function createPair(address _tokenA, address _tokenB) returns (address)", - "isOwner": "bool:isOwner", - "lendingPairMaster": "address:lendingPairMaster", - "lpTokenMaster": "address:lpTokenMaster", - "owner": "address:owner", - "pairByTokens": "function pairByTokens(address, address) view returns (address)", - "pendingOwner": "address:pendingOwner", - "transferOwnership": "function transferOwnership(address _newOwner)" -} \ No newline at end of file diff --git a/projects/wildcredit/index.js b/projects/wildcredit/index.js deleted file mode 100644 index d38e9f0cc01..00000000000 --- a/projects/wildcredit/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const PAIR_FACTORY = "0x0fC7e80090bbc1740595b1fcCd33E0e82547212F"; -const START_BLOCK = 13847198 - -const calculateTokenTotal = async (api, pairs, abi) => { - const pairsTokenBalances = await api.multiCall({ - calls: pairs.map(pair => ({ - target: pair.pair, - params: pair.token - })), - abi, - }) - const tokens = pairs.map(pair => pair.token) - api.add(tokens, pairsTokenBalances) -} - -const getPairs = async (api) => { - const logs = (await getLogs({ - target: PAIR_FACTORY, - topic: 'PairCreated(address,address,address)', - fromBlock: START_BLOCK, - api, - })) - - return logs.map(log => { - return { - pair: `0x${log.topics[1].substr(-40).toLowerCase()}`, - tokenA: `0x${log.topics[2].substr(-40).toLowerCase()}`, - tokenB: `0x${log.topics[3].substr(-40).toLowerCase()}` - } - }) -} - -const ethTvl = async (api) => { - const pairs = await getPairs(api) - await calculateTokenTotal(api, getTokenPairs(pairs, 'tokenA'), abi.totalSupplyAmount) - await calculateTokenTotal(api, getTokenPairs(pairs, 'tokenB'), abi.totalSupplyAmount) - - await sumTokens2({ api, resolveUniV3: true, owners: pairs.map(pair => pair.pair) }) -}; - -function getTokenPairs(pairs, key) { - return pairs.map(p => ({ pair: p.pair, token: p[key] })) -} - -const borrowed = async (api) => { - const pairs = await getPairs(api) - await calculateTokenTotal(api, getTokenPairs(pairs, 'tokenA'), abi.totalDebtAmount) - await calculateTokenTotal(api, getTokenPairs(pairs, 'tokenB'), abi.totalDebtAmount) -} - -module.exports = { - ethereum: { - tvl: ethTvl, - borrowed - }, -}; diff --git a/projects/windfall/index.js b/projects/windfall/index.js deleted file mode 100644 index d4afc50580b..00000000000 --- a/projects/windfall/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - methodology: 'Counts the number of tokens in the Windfall contract.', -}; - -const config = { - canto: { tokens: ['0xEe602429Ef7eCe0a13e4FfE8dBC16e101049504C'], owners: ['0x2d9dDE57Ec40baF970Dbc8f7933861013B661c93'] }, - blast: { tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH], owners: ['0x0a4C236254C4C0bD5DD710f1fa12D7791d491358', '0x6d89540c22868ff9e3676423162a9e909BBB2558',] }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport(config[chain]) - } -}) \ No newline at end of file diff --git a/projects/winery-swap/index.js b/projects/winery-swap/index.js deleted file mode 100644 index 9dbca80e985..00000000000 --- a/projects/winery-swap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: getUniTVL({ - factory: '0x79C342FddBBF376cA6B4EFAc7aaA457D6063F8Cb', - useDefaultCoreAssets: true - }) - }, -}; \ No newline at end of file diff --git a/projects/wing.js b/projects/wing.js deleted file mode 100644 index 0d8e4c5aa2e..00000000000 --- a/projects/wing.js +++ /dev/null @@ -1,92 +0,0 @@ - -const { get } = require('./helper/http'); -const { compoundExports2 } = require('./helper/compound'); -const { mergeExports } = require('./helper/utils'); -const { sumTokensExport } = require('./helper/unwrapLPs'); -const ADDRESSES = require('./helper/coreAssets.json') - -const config = { - ontology: { - url: 'https://flashapi.wing.finance/api/v1/flashpooldetail', - }, -} - -const apiExports = { - misrepresentedTokens: true, -}; - -const data = {} - -async function getData(chain) { - const { url } = config[chain] - if (!data[chain]) data[chain] = get(url) - return data[chain] -} - -Object.keys(config).forEach(chain => { - apiExports[chain] = { - tvl: async () => { - const { result } = await getData(chain) - if (!result.totalBorrow) result.totalBorrow = result.TotalBorrow - if (!result.totalSupply) result.totalSupply = result.TotalSupply - - return { - tether: result.totalSupply - result.totalBorrow - } - }, - staking: async () => { - const { result } = await getData(chain) - if (!result.totalLockedWingDollar) result.totalLockedWingDollar = result.TotalLockedWingDollar - if (result.totalLockedWingDollar == undefined) result.totalLockedWingDollar = 0 - if (result.totalInsurance != undefined && !result.totalInsurance) result.totalLockedWingDollar += result.totalInsurance - return { - tether: result.totalLockedWingDollar - } - }, - borrowed: async () => { - const { result } = await getData(chain) - if (!result.totalBorrow) result.totalBorrow = result.TotalBorrow - return { - tether: result.totalBorrow - } - }, - } -}) - - -module.exports = mergeExports([ - { // flash pool - ethereum: compoundExports2({ comptroller: '0x2F9fa63066cfA2d727F57ddf1991557bA86F12c9' }), - okexchain: compoundExports2({ comptroller: '0x66e212d287e547c2c93cfe50795543c025ca9ee3' }), - bsc: compoundExports2({ comptroller: '0x49620e9bfd117c7b05b4732980b05b7afee60a69' }), - ontology_evm: compoundExports2({ comptroller: '0x000A4d6b9E553a7f4bc1B8F94bB7Dd37BfF6d79b' }), - }, { // p2p pool - ethereum: { - tvl: sumTokensExport({ - owner: '0x091806040FD70B40bcDA5e01D00eAfad8D10AB56', - tokens: [ - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WETH, - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643', - '0x39AA39c021dfbaE8faC545936693aC917d5E7563', - ADDRESSES.ethereum.USDT, - '0x70e36f6BF80a52b3B46b3aF8e106CC0ed743E8e4', - '0xc00e94Cb662C3520282E6f5717214004A7f26888', - '0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5', - ] - - }) - }, - }, { // nft pool - ethereum: { - tvl: sumTokensExport({ - owner: '0x3c3e283353f4349f6424151583A8353E8F40F2B1', - tokens: [ - ADDRESSES.ethereum.WETH, - ] - - }) - }, - }, - apiExports, -]) \ No newline at end of file diff --git a/projects/wingriders/index.js b/projects/wingriders/index.js deleted file mode 100644 index 3b1ffbc73f4..00000000000 --- a/projects/wingriders/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { post } = require('../helper/http') - -const headers = { - "Accept-Encoding": "gzip, deflate, br", -}; - -/** @returns {Promise<{tvl: string, staking: string}>} */ -async function getTvlBreakdown() { - const res = await post( - 'https://api.mainnet.wingriders.com/graphql', - { - query: '{tvlBreakdown {tvl, staking}}' - }, - { headers } - ) - return res.data.tvlBreakdown -} - -async function tvl() { - const tvlBreakdown = await getTvlBreakdown() - return {cardano: Number(tvlBreakdown.tvl)} -} - -async function staking() { - const tvlBreakdown = await getTvlBreakdown() - return {cardano: Number(tvlBreakdown.staking)} -} - -module.exports = { - timetravel: false, - cardano: { - tvl, - staking, - }, - hallmarks: [ - [1659312000,"Nomad Bridge Hack"] - ], -}; diff --git a/projects/wingswap/index.js b/projects/wingswap/index.js deleted file mode 100644 index b1dc475b06f..00000000000 --- a/projects/wingswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingPricedLP } = require('../helper/staking') - - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0xc0719a9A35a2D9eBBFdf1C6d383a5E8E7b2ef7a8) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - fantom: { - tvl: getUniTVL({ factory: '0xc0719a9A35a2D9eBBFdf1C6d383a5E8E7b2ef7a8', useDefaultCoreAssets: true }), - staking: stakingPricedLP("0x546dA2105c52dc2dBA3a4320b43bc2cfDA9cB311", "0xF24be6c063Bee7c7844dD90a21fdf7d783d41a94", "fantom", "0x194C3973Eb43Ba98941C5e9D8e3D06EF9e6aa399", "wrapped-fantom") - }, -}; // node test.js projects/wingswap/index.js \ No newline at end of file diff --git a/projects/wink/index.js b/projects/wink/index.js deleted file mode 100644 index dba20c50941..00000000000 --- a/projects/wink/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES = require('../helper/coreAssets.json') - -const WINK_TOKEN_CONTRACT = '0x8c3441E7B9aA8A30a542DDE048dd067DE2802E9B'; -const LOCK_WINK_CONTRACT = '0x49C4EeC1d4fFFcdFF415E0757F01Cc50eeF5d4FD'; - -const USDW = '0xab670FDfb0060BDC6508B84a309ff41b56CCAf3f' - -const USDW_RESERVE = '0x7dA313eEeE31526022D2E92B0e3a6A0838Df2587' -const LP_RESERVE = '0x297df0036835b6bff81980b4d86c3aeecbacf543' -const LP_MANAGER = '0xb1502cbeffd253e3e695b8910e779cde2e2079ab' - -module.exports = { - methodology: 'Tokens backing USDW is counted as tvl, and locked wink tokens are counted as staking.', - hallmarks: [ - [1736001563, "WINK Finance Launch"], - ], - polygon: { - tvl: sumTokensExport({ owners: [USDW_RESERVE, LP_RESERVE, LP_MANAGER], resolveUniV3: true, blacklistedTokens: [USDW], tokens: [ADDRESSES.polygon.USDT]}), - // staking: sumTokensExport({ owners: [LOCK_WINK_CONTRACT], tokens: [WINK_TOKEN_CONTRACT]}), - staking: () => ({}), // wink token has very little liquidity - } -}; diff --git a/projects/winkyverse/index.js b/projects/winkyverse/index.js deleted file mode 100644 index c103b8a9f3d..00000000000 --- a/projects/winkyverse/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require("../helper/staking"); - -const WNK = "0xb160A5F19ebccd8E0549549327e43DDd1D023526" -const stakingContracts = [ - "0xc45047c5b26146d10a25295912c81098f94d8d1a", - "0x5ff3450546c7c29cc47617f08f30b7e79371b3ed", - "0x574d3630ce0aa8dd4eafd9ce3f24dc5c8a2b7d15" -]; - -module.exports = { - methodology: `TVL for Winkyverse consists of the staking of WNK into 3 staking (time-locked) contracts.`, - bsc:{ - tvl: async () => ({}), - staking: staking(stakingContracts, WNK), - } -} \ No newline at end of file diff --git a/projects/winnieswap/index.js b/projects/winnieswap/index.js deleted file mode 100644 index 995ff1e8d2b..00000000000 --- a/projects/winnieswap/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const stickyFactory = '0x18B9ABf2E821E2fE7A08Dc255d5a7e77fFc0b844' - -const abis = { - getDeployers: 'address[]:getDeployers', - getStickyVault: 'function getStickyVaults(address deployer) view returns (address[])', -} - -const akkarisTVL = async (api) => { - const deployers = await api.call({ target: stickyFactory, abi: abis.getDeployers }) - const stickyVaults = (await api.multiCall({ calls: deployers, target: stickyFactory, abi: abis.getStickyVault })).flat() - - const [token0s, token1s,] = await Promise.all([ - api.multiCall({ calls: stickyVaults, abi: 'address:token0', }), - api.multiCall({ calls: stickyVaults, abi: 'address:token1', }), - ]) - const tokensAndOwners2 = [token0s.concat(token1s), stickyVaults.concat(stickyVaults)] - return api.sumTokens({ tokensAndOwners2 }) -} - -const { uniV3Export } = require('../helper/uniswapV3'); -const { mergeExports } = require('../helper/utils') - -const uniExports = uniV3Export({ - berachain: { factory: '0x76fD9D07d5e4D889CAbED96884F15f7ebdcd6B63', fromBlock: 7402487 }, -}) - -module.exports = mergeExports([{ - berachain: { tvl: akkarisTVL } -}, uniExports]) diff --git a/projects/winr-protocol/index.js b/projects/winr-protocol/index.js deleted file mode 100644 index 7e29637b25c..00000000000 --- a/projects/winr-protocol/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { gmxExports } = require('../helper/gmx') -const WINR_VAULT_CONTRACT = "0x8c50528F4624551Aad1e7A265d6242C3b06c9Fca"; - -module.exports = { - arbitrum: { - tvl: gmxExports({ vault: WINR_VAULT_CONTRACT }), - }, -}; \ No newline at end of file diff --git a/projects/winter-walrus/index.js b/projects/winter-walrus/index.js deleted file mode 100644 index 1ea51feb7f7..00000000000 --- a/projects/winter-walrus/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const sui = require("../helper/chain/sui") - -const PACKAGE_ID = '0x29ba7f7bc53e776f27a6d1289555ded2f407b4b1a799224f06b26addbcd1c33d'; - -const WAL_TYPE = '0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL'; - -const tvl = async (api) => { - const newLSTEvents = await sui.queryEvents({ - eventType: `${PACKAGE_ID}::blizzard_event_wrapper::BlizzardEvent<${PACKAGE_ID}::blizzard_events::NewLST>` - }); - - const statesIds = newLSTEvents.map( - (event) => event.pos0.inner_state - ); - - - const states = await sui.getObjects(statesIds); - - states.forEach(state => { - api.add(WAL_TYPE, state.fields.total_wal_value); - }); - -} - -module.exports = { - timetravel: false, - sui: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/wisdomtree/index.js b/projects/wisdomtree/index.js deleted file mode 100644 index c0aec1c3f68..00000000000 --- a/projects/wisdomtree/index.js +++ /dev/null @@ -1,45 +0,0 @@ -// Since the NAVs are hardcoded, here are the links to find the different NAVs from WisdomTree's PoR -// https://www.wisdomtree.com/investments/digital-funds/money-market/wtgxx -// https://www.wisdomtree.com/investments/digital-funds/fixed-income/flttx -// https://www.wisdomtree.com/investments/digital-funds/fixed-income/wtsyx -// https://www.wisdomtree.com/investments/digital-funds/fixed-income/wttsx -// https://www.wisdomtree.com/investments/digital-funds/fixed-income/tipsx -// https://www.wisdomtree.com/investments/digital-funds/fixed-income/wtstx -// https://www.wisdomtree.com/investments/digital-funds/fixed-income/wtlgx -// https://www.wisdomtree.com/investments/digital-funds/equity/spxux -// https://www.wisdomtree.com/investments/digital-funds/asset-allocation/wtsix - -const { getAssetSupply } = require('../helper/chain/stellar.js') - -const CONFIG = { - stellar: [ - { asset: 'WTGX-GDMBNMFJ3TRFLASJ6UGETFME3PJPNKPU24C7KFDBEBPQFG2CI6UC3JG6', NAV: 1.000 }, // WTGX - { asset: 'FLTT-GBTZKH3RNKW46XEZNCGZEBAGJISKDZKQXKSQ2N5G5SFX36TLWKKR6QJ6', NAV: 1.013 }, // FLTTX - { asset: 'WTSY-GB3ZUC7FGDEEBXY3BDEJWMPNGBFA66YRI4QQT6PBO3ZT6F33S7RL36VF', NAV: 1.004 }, // WTSYX - { asset: 'WTTS-GBBV5CF7UPA2PYRPA632URLB55BWML7X4H33ZRCDWMTULOXDGPHJR5VI', NAV: 9.833 }, // WTTSX - { asset: 'TIPS-GAJ4KSYLVBJKQ4UBPKJJXPYWVIRZWVTIYRMHBXTHGCDS4XJXXYEUALVD', NAV: 9.662 }, // TIPSX - { asset: 'WTST-GDEBI5X7J4IDXCSVV3KPFZIHQRCBVF3DAZMS5H7KYOBK45T6XYGDE77P', NAV: 9.511 }, // WTSTX - { asset: 'WTLG-GAK7PE7DD4ZRJQN3VBCQFBKFV53JGUM2SQATQAKLFK6MVONPGNYK34XH', NAV: 8.645 }, // WTLGX - { asset: 'SPXU-GDJBVX3QA5HJPBSAU5VIX2W6MC37NU4UFXPKEGK42SJCYN6AEQ4Z6COM', NAV: 15.815 }, // SPXUX - { asset: 'WTSI-GAD22PDBRFEMXAKPFDP4JGDFWKKD6VPXWUWEAXBS6ZYJYFFQDUN7HAFG', NAV: 10.282 }, // WTSIX - ], - ethereum: '0x1fecf3d9d4fee7f2c02917a66028a48c6706c179' // WTGX -} - -const stellarTvl = async (api) => { - const assets = CONFIG[api.chain] - for (const { asset, NAV } of assets) { - const supply = await getAssetSupply(asset) - api.addUSDValue(supply * NAV) - } -} - -const evmTVL = async (api) => { - const decimals = await api.call({ target: CONFIG[api.chain], abi: 'erc20:decimals' }) - const supply = await api.call({ target: CONFIG[api.chain], abi: 'erc20:totalSupply' }) - api.addUSDValue(supply / 10 ** (decimals)) -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { tvl: chain === 'stellar' ? stellarTvl : evmTVL }; -}); diff --git a/projects/wise-lending-v2/index.js b/projects/wise-lending-v2/index.js deleted file mode 100644 index 9d6c1503e4e..00000000000 --- a/projects/wise-lending-v2/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -async function tvl(api) { - const { lending: lendingContract, tvlAddresses } = config[api.chain]; - - return api.sumTokens({ owner: lendingContract, tokens: tvlAddresses }); -} - -async function borrowed(api) { - const { lending: lendingContract, borrowAddresses } = config[api.chain]; - - const borrowAmounts = await api.multiCall({ - abi: 'function getPseudoTotalBorrowAmount(address) view returns (uint256)', - target: lendingContract, - calls: borrowAddresses - }); - - api.add(borrowAddresses, borrowAmounts); -} - -const aavePools = [ - "0x724dc807b04555b71ed48a6896b6F41593b8C637", - "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - ADDRESSES.arbitrum.WSTETH, - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", - "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", -]; - -const wisePools = [ - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.WSTETH, -]; - - -const config = { - arbitrum: { - lending: '0x9034a49587bD2c1Af27598E0f04F30Db66C87Ebf', - feeManager: '0x90a022796798f9dbA1Da0f8645234B284d4E8EC6', - tvlAddresses: aavePools, - borrowAddresses: aavePools - }, - ethereum: { - lending: '0x78190e4c7C7B2c2C3b0562F1f155a1FC2F5160CA', - feeManager: '0x0bc24e61daad6293a1b3b53a7d01086bff0ea6e5', - tvlAddresses: wisePools, - borrowAddresses: wisePools - }, -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed }; -}); diff --git a/projects/wise-lending/index.js b/projects/wise-lending/index.js deleted file mode 100644 index 163a58921f1..00000000000 --- a/projects/wise-lending/index.js +++ /dev/null @@ -1,19 +0,0 @@ -async function tvl(api) { - const { lending: lendingContract, feeManager } = config[api.chain] - const tokens = await api.fetchList({ lengthAbi: 'uint256:getPoolTokenAddressesLength', itemAbi: 'function getPoolTokenAdressesByIndex(uint256) view returns (address)', target: feeManager }) - return api.sumTokens({ owner: lendingContract, tokens }) -} - -// module.exports = { -// hallmarks: [ -// [1705017600, "Project Exploited"] -// ], -// } - -const config = { - ethereum: { lending: '0x37e49bf3749513A02FA535F0CbC383796E8107E4', feeManager: '0x0bc24e61daad6293a1b3b53a7d01086bff0ea6e5' }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/wisteriaswap/index.js b/projects/wisteriaswap/index.js deleted file mode 100644 index 93c774b66b8..00000000000 --- a/projects/wisteriaswap/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const wst = "0xaAdFf17d56d80312b392Ced903f3E8dBE5c3ece7"; -const masterchef = "0x5865C60C05C28C597b3CEB6a84809251101E5204"; - -module.exports = { - ...masterChefExports(masterchef, "bsc", wst), -}; -module.exports.deadFrom = '2023-02-13' \ No newline at end of file diff --git a/projects/witswap/index.js b/projects/witswap/index.js deleted file mode 100644 index 088941a646b..00000000000 --- a/projects/witswap/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -module.exports = { - ethereum:{ - tvl: () => ({}), //Project is dead - }, - deadFrom: '2023-03-19', -} diff --git a/projects/witty/index.js b/projects/witty/index.js deleted file mode 100644 index a59655a21d1..00000000000 --- a/projects/witty/index.js +++ /dev/null @@ -1,36 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getUniqueAddresses } = require('../helper/utils') - -const abi = { - depositEvent: 'event Deposit(address user, address currency, uint256 amount)', -} - -const config = { - abstract: { arcade: '0x0b4429576e5eD44a1B8f676c8217eb45707AFa3D', fromBlock: 6490616, }, -} - -function customCacheFunction({ cache, logs }) { - if (!cache.logs) cache.logs = [] - const tokens = logs.map(({ currency }) => currency) - cache.logs.push(...tokens) - cache.logs = getUniqueAddresses(cache.logs) - return cache -} - -async function tvl(api) { - const { arcade, fromBlock } = config[api.chain] - const tokens = await getLogs2({ api, factory: arcade, eventAbi: abi.depositEvent, fromBlock, extraKey: 'deposit-address', customCacheFunction,}) - tokens.push(ADDRESSES.abstract.WETH, ADDRESSES.abstract.USDC) - return sumTokens2({ api, owner: arcade, tokens, permitFailure: true }) -} - -module.exports = { - methodology: "TVL consists of assets deposited into the Arcade contract", -}; - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/wojakfinance/index.js b/projects/wojakfinance/index.js deleted file mode 100644 index 077cf3c07ac..00000000000 --- a/projects/wojakfinance/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const { staking, getUniTVL } = require('../helper/unknownTokens') - -const MasterChefContract = "0x065AAE6127D2369C85fE3086b6707Ac5dBe8210a"; -const WojkPoolContract = "0xDF21058099e69D3635005339721C4826c4c47F8A"; -const WOJK = "0x570C41a71b5e2cb8FF4445184d7ff6f78A4DbcBD"; - -const chain = 'dogechain' - -const lps = ['0xC1FaBe61B9cFC005a51e1Ea899C3D65fb6392497'] - -module.exports = { - misrepresentedTokens: true, - methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://wojak.fi/info as the source. Staking accounts for the WOJK locked in MasterChef (0x065AAE6127D2369C85fE3086b6707Ac5dBe8210a)', - dogechain: { - tvl: getUniTVL({ - factory: '0xc7c86B4f940Ff1C13c736b697e3FbA5a6Bc979F9', - useDefaultCoreAssets: true, - }), - staking: staking({ - chain, - owners: [MasterChefContract, WojkPoolContract], - tokens: [WOJK], - useDefaultCoreAssets: true, - lps, - }) - }, -}; - - - - diff --git a/projects/woken/index.js b/projects/woken/index.js deleted file mode 100644 index 0ee72734644..00000000000 --- a/projects/woken/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -//Factory address can be visible here : https://woken-exchange.gitbook.io/wokenexchange/security/contracts-and-wallets -module.exports = { - misrepresentedTokens: true, - arbitrum: { tvl: getUniTVL({ factory: '0x0Dee376e1DCB4DAE68837de8eE5aBE27e629Acd0', useDefaultCoreAssets: true, }), }, - bsc: { tvl: getUniTVL({ factory: '0x0Dee376e1DCB4DAE68837de8eE5aBE27e629Acd0', useDefaultCoreAssets: true, }), } -} diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js deleted file mode 100644 index 9457e22a5db..00000000000 --- a/projects/wombat-exchange/config.js +++ /dev/null @@ -1,113 +0,0 @@ -module.exports = { - bsc: { - wom: "0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1", - veWom: "0x3DA62816dD31c56D9CdF22C6771ddb892cB5b0Cc", - pools: { - mainPool: "0x312bc7eaaf93f1c60dc5afc115fccde161055fb0", - bnbPool: "0x0029b7e8e9eD8001c868AA09c74A1ac6269D4183", - sidePool: "0x0520451B19AD0bb00eD35ef391086A692CFC74B2", - wmxWom: "0xeEB5a751E0F5231Fc21c7415c4A4c6764f67ce2e", - mWOM: "0x083640c5dBD5a8dDc30100FB09B45901e12f9f55", - qWOM: "0x2c5464b9052319e3d76f8279031f04e4B7fd7955", - Innovation: "0x48f6A8a0158031BaF8ce3e45344518f1e69f2A14", - BNBx: "0x8df1126de13bcfef999556899F469d64021adBae", - stkBNB: "0xB0219A90EF6A24a237bC038f7B7a6eAc5e01edB0", - iUSD: "0x277E777F7687239B092c8845D4d2cd083a33C903", - axlUSDC: "0x8ad47d7ab304272322513eE63665906b64a49dA2", - USDD: "0x05f727876d7C123B9Bb41507251E2Afd81EAD09A", - BOB: "0xeA6cDd9e8819BbF7f8791E7D084d9F0a6Afa7892", - frxETH: "0x2Ea772346486972E7690219c190dAdDa40Ac5dA4", - stableGuildPool: "0x9498563e47D7CFdFa22B818bb8112781036c201C", // USD+ pool - mim: "0xb8b1b72a9b9ba90e2539348fec1ad6b265f9f684", - ankrBNB: "0x6f1c689235580341562cdc3304e923cc8fad5bfa", - bnby: "0xbed9B758A681d73a95Ab4c01309C63aa16297b80", - smartHAY: "0xa61dccC6c6E34C8Fbf14527386cA35589e9b8C27", - wBETH: "0x8b892b6Ea1d0e5B29b719d6Bd6eb9354f1cDE060", - ankrETH: "0x1b507b97c89eDE3E40d1b2Ed92972197c6276D35", - rbnb: "0x0592083B285aa75B9c8BaD2485C6cCCF93cCC348", - SnBNB: "0xF1e604e9A31c3b575f91CF008445B7ce06BF3fef", - USDS: "0x0c735f84BD7EDA8F8176236091AF8068Bb6C41dE", - crossChainPool: "0x1ee15673e07105Bcf360139fa8CafeBDd7754BeF", - zBNB: "0x9a39f4AB3f52026432835dEe6D3DB721D95f3D28", - zUSD: "0xC26b7Cbe7e695a0d11a8cB96140D1Cd502945A2C", - USDV: "0xC897a2Ae2E45f0D7ba8cbE397208C3e9f8914A9f", - }, - }, - arbitrum: { - wom: "0x7b5eb3940021ec0e8e463d5dbb4b7b09a89ddf96", - veWom: "0x488B34F704a601DAeEf14135146a3dA79F2d3EFC", - pools: { - mainPool: "0xc6bc781e20f9323012f6e422bdf552ff06ba6cd1", - wmxWom: "0xEE9b42b40852a53c7361F527e638B485D49750cD", - mWOM: "0x90eCddEC4E4116E30769A4e1EA52c319aca338B6", - qWOM: "0x12Fa5AB079CFf564d599466d39715D35d90Af978", - overnight: "0xCF20fDA54e37f3fB456930f02fb07FccF49e4849", // USD+ pool - frxETH: "0x20D7ee728900848752FA280fAD51aF40c47302f1", - frax: "0x4a8686df475D4c44324210FFA3Fc1DEA705296e0", // FRAX-MAI-USD+ - bob: "0x917caF2b4D6040a9D67A5F8CEfC4F89d1b214c1A", - mim: "0x29eeB257a2A6eCDE2984aCeDF80A1B687f18eC91", - jUSDC: "0xc7a6bA5F28993BaDb566007bD2E0CB253c431974", - ankrETH: "0xB9bdfE449Da096256Fe7954Ef61A18eE195Db77B", - wstETH: "0xe14302040c0A1eb6fB5A4A79EfA46D60029358d9", - pendle: "0xe7159f15e7b1d6045506B228A1ed2136dcc56F48", - fUSD: "0x956454C7BE9318863297309183C79b793D370401", - crossChainPool: "0xe78876C360716f2225F55A6726B32324FE1B1145", - USDV: "0xa6eF6C45EbFDBc13f6D032fbDFeC9b389C1603E5", - sFRAX: "0xaBF19eAdb08693278FdbAD35Cb4E3c1D6484c8Bb", - }, - }, - ethereum: { - wom: "0xc0B314a8c08637685Fc3daFC477b92028c540CFB", - veWom: "0xEF0B4d9Dba6ea82B59437Fe5E37b16A2896aAF94", - pools: { - frax: "0x9c02eaf31EFE3FeE36ebE5AEBCa12Ca979dF25cC", - agEUR: "0x0020A8890e723CD94660A5404C4BCCBB91680db6", - frxETH: "0x3161f40EA6c0C4cC8b2433d6D530EF255816E854", - wstETH: "0xF8E32cA46AC28799c8FB7DCe1Ac11A4541160734", - ETHx: "0x647CC8816C2d60A5fF4d1ffeF27a5b3637d5ac81", - crossChainPool: "0xA45C0ABeef67C363364E0e73832df9986aBa3800", - USDV: "0x05A33c0eaf81367Ce953d2dCd4ea1BE8758f4D32", - }, - }, - // does not have wom yet - scroll: { - wom: "", - veWom: "", - pools: { - crossChainPool: "0x80f088ae72DB6d1AC337340cd6Aa0EB1F67337CE", - }, - }, - avax: { - wom: "0xa15E4544D141aa98C4581a1EA10Eb9048c3b3382", - veWom: "0x34E2F923bBa206358EcE221af73E8d121837F873", - pools: { - crossChainPool: "0xC9bFC3eFeFe4CF96877009F75a61F5c1937e5d1a", - sAVAX: "0xE3Abc29B035874a9f6dCDB06f8F20d9975069D87", - USDV: "0x108c990c93Fa8E3cD88DDb13594D39f09D9B3C02", - ggAVAX: "0xBbA43749efC1bC29eA434d88ebaf8A97DC7aEB77", - }, - }, - base: { - wom: "0xD9541B08B375D58ae104EC247d7443D2D7235D64", - veWom: "0x34E2F923bBa206358EcE221af73E8d121837F873", - pools: { - crossChainPool: "0xC9bFC3eFeFe4CF96877009F75a61F5c1937e5d1a", - USDS: "0x20d7B9Ed2c4E2DCC55F9B463975b21bBf2A6eCd1", - }, - }, - optimism: { - wom: "0xd2612b256f6f76fea8c6fbca0bf3166d0d13a668", - veWom: "0xE91cfd7f8e5A5a1EA4803FcF781e1C8d6FfCa279", - pools: { - crossChainPool: "0x50a39b94B1Dc8472faa08c36a3Ef5b0A01c5BD10", - USDV: "0x1a023186eF2994249120CC7fAEdBEA07F40C6fbd", - frax: "0x6BB82A9b0b9b9716B885baeEfDBE47b685a0F919", - dola: "0x489818F2eeAef737105887710F7C5b9323Ad3d01", - frxETH: "0xB86BA65b75D34402bf377cF83b184554a18Fcafa", - }, - }, - hallmarks: [ - [1662417125, "Liquidity Mining Start"], - [1680674400, "Arbitrum Launching"], - ], -}; diff --git a/projects/wombat-exchange/index.js b/projects/wombat-exchange/index.js deleted file mode 100644 index ca32b89c2e3..00000000000 --- a/projects/wombat-exchange/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const config = require("./config"); -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -Object.keys(config).forEach((chain) => { - let { pools, wom, veWom } = config[chain]; - module.exports[chain] = { - tvl: async (api) => { - pools = Object.values(pools); - - let allUnderlying = await api.multiCall({ - abi: "address[]:getTokens", - calls: pools, - }); - - const tokens = []; - const calls = []; - pools.forEach((v, i) => { - allUnderlying[i].forEach((t) => { - tokens.push(t); - calls.push({ target: v, params: t }); - }); - }); - const wTokens = await api.multiCall({ - abi: "function addressOfAsset(address) view returns (address)", - calls, - }); - return sumTokens2({ api, tokensAndOwners2: [tokens, wTokens] }); - }, - staking: wom && veWom ? staking(veWom, wom) : undefined, - }; -}); - -module.exports["hallmarks"] = config["hallmarks"]; diff --git a/projects/wombex/abi.json b/projects/wombex/abi.json deleted file mode 100644 index 9acdaaa3f7e..00000000000 --- a/projects/wombex/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "userInfo": "function userInfo(uint256, address) view returns (uint128 amount, uint128 factor, uint128 rewardDebt, uint128 pendingWom)", - "poolLength": "uint256:poolLength", - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint96 allocPoint, address rewarder, uint256 sumOfFactors, uint104 accWomPerShare, uint104 accWomPerFactorShare, uint40 lastRewardTimestamp)", - "pool": "address:pool", - "lockedSupply": "uint256:lockedSupply", - "underlyingToken": "address:underlyingToken", - "quotePotentialWithdraw": "function quotePotentialWithdraw(address token, uint256 liquidity) view returns (uint256 amount, uint256 fee)" -} \ No newline at end of file diff --git a/projects/wombex/config.js b/projects/wombex/config.js deleted file mode 100644 index ca77b5027a7..00000000000 --- a/projects/wombex/config.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - bsc: { - masterWombat: "0x489833311676B566f888119c29bd997Dc6C95830", - voterProxy: "0xE3a7FB9C6790b02Dcfa03B6ED9cda38710413569", - wmxLocker: "0xd4E596c0d5aD06724f4980ff9B73438FEb1504EE", - wmx: '0xa75d9ca2a0a1d547409d82e1b06618ec284a2ced', - wom: '0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1', - veWom: '0x3DA62816dD31c56D9CdF22C6771ddb892cB5b0Cc', - }, - arbitrum: { - masterWombat: "0x62A83C6791A3d7950D823BB71a38e47252b6b6F4", - voterProxy: "0x24D2f6be2bF9cdf3627f720cf09D4551580C1eC1", - wmxLocker: "0xdD76cE773ce8Bd29d32c8389197e98a6e4C1C1A5", - wmx: '0x5190f06eacefa2c552dc6bd5e763b81c73293293', - wom: '0x7b5eb3940021ec0e8e463d5dbb4b7b09a89ddf96', - veWom: '0x488B34F704a601DAeEf14135146a3dA79F2d3EFC', - }, -}; diff --git a/projects/wombex/index.js b/projects/wombex/index.js deleted file mode 100644 index 9c9d64fd2b2..00000000000 --- a/projects/wombex/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const config = require("./config"); - - -async function voterProxyBalances(masterWombat, voterProxy, wmxLocker, wmx, wom, veWom, api) { - let masterWombatPoolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: masterWombat }) - - const proxyBalanceCalls = masterWombatPoolInfos.map((_, i) => ({ target: masterWombat, params: [i, voterProxy] })) - let masterWombatVoterProxyBalances = await api.multiCall({ - abi: abi.userInfo, - calls: proxyBalanceCalls, - }) - - masterWombatPoolInfos = masterWombatPoolInfos.filter((_, i) => +masterWombatVoterProxyBalances[i].amount > 0) - masterWombatVoterProxyBalances = masterWombatVoterProxyBalances.filter((_, i) => +masterWombatVoterProxyBalances[i].amount > 0) - const lpTokens = masterWombatPoolInfos.map((pool) => pool.lpToken); - const lpPools = await api.multiCall({ abi: abi.pool, calls: lpTokens, }); - const underlyingTokens = await api.multiCall({ abi: abi.underlyingToken, calls: lpTokens, }) - const underlyingAmounts = await api.multiCall({ - abi: abi.quotePotentialWithdraw, - calls: lpPools.map((pool, index) => ({ - target: pool, - params: [underlyingTokens[index], '' + 1e18], - })), - }) - underlyingAmounts - .map((a, i) => { - api.add(underlyingTokens[i], a!==null? a.amount * masterWombatVoterProxyBalances[i].amount / 1e18: 0) - }) -} - -async function veWomBalance(masterWombat, voterProxy, wmxLocker, wmx, wom, veWom, api) { - const womBal = await api.call({ abi: 'erc20:balanceOf', target: veWom, params: voterProxy }) - api.add(veWom, womBal) -} - -async function veWomBalanceCrutch(masterWombat, voterProxy, wmxLocker, wmx, wom, veWom, api) { - const womBal = await api.call({ abi: 'erc20:balanceOf', target: veWom, params: voterProxy }) - api.add(wom, womBal) -} - -async function tvl(masterWombat, voterProxy, wmxLocker, wmx, wom, veWom, api) { - await veWomBalance(masterWombat, voterProxy, wmxLocker, wmx, wom, veWom, api) - await voterProxyBalances(masterWombat, voterProxy, wmxLocker, wmx, wom, veWom, api) - await veWomBalanceCrutch(masterWombat, voterProxy, wmxLocker, wmx, wom, veWom, api) -} - -module.exports = { - methodology: - "TVL of Wombex Finance consists of Wombat LP tokens staked in MasterWombat, WOM tokens locked in veWOM, and WMX tokens locked in Wombex Vote Lock contract. Until proper accounting of veWom can be established on account of it lacking a listed price, veWom is added to the tally of WOM.", -}; - -Object.keys(config).forEach((chain) => { - const { masterWombat, voterProxy, wmxLocker, wmx, wom, veWom } = config[chain]; - module.exports[chain] = { - tvl: tvl.bind(null, masterWombat, voterProxy, wmxLocker, wmx, wom, veWom), - staking: staking(wmxLocker, wmx) - } -}) \ No newline at end of file diff --git a/projects/wonderland/api.js b/projects/wonderland/api.js deleted file mode 100644 index 606277d1561..00000000000 --- a/projects/wonderland/api.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('./index') -const { ohmStaking } = require('../helper/treasury') - -module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/wonderland/index.js b/projects/wonderland/index.js deleted file mode 100644 index 47173b354fb..00000000000 --- a/projects/wonderland/index.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require("../helper/staking"); - -const TimeStaking = "0x4456B87Af11e87E329AB7d7C7A246ed1aC2168B9"; -const RevenueSharingFarm = "0xC172c84587bEa6d593269bFE08632bf2Da2Bc0f6"; -const TIME = "0xb54f16fB19478766A268F172C9480f8da1a7c9C3"; -const wMEMO = "0x0da67235dd5787d67955420c84ca1cecd4e5bb3b"; - -const Treasury_Eth = "0x355D72Fb52AD4591B2066E43e89A7A38CF5cb341"; -const Treasury_Avax = "0x88bbE6dE858B179841c8f49a56b99fb0522a263a"; - -async function avaxTvl(api) { - await api.sumTokens({ - owner: Treasury_Avax, tokens: [ADDRESSES.avax.USDt, - ADDRESSES.avax.USDC_e, - "0x39fC9e94Caeacb435842FADeDeCB783589F50f5f", // KNC - "0x63682bDC5f875e9bF69E201550658492C9763F89", // BSGG - "0x0da67235dd5787d67955420c84ca1cecd4e5bb3b", //wMEMO - ] - }) - api.removeTokenBalance(wMEMO) -} - -async function ethTvl(api) { - return api.sumTokens({ - owner: Treasury_Eth, tokens: [ - ADDRESSES.ethereum.LUSD, - ADDRESSES.ethereum.FXS, // FRAX - ADDRESSES.ethereum.CVX, - ADDRESSES.ethereum.cvxCRV, - "0x55C08ca52497e2f1534B59E2917BF524D4765257", // UwU - "0x69570f3E84f51Ea70b7B68055c8d667e77735a25", // BSGG - "0x04906695D6D12CF5459975d7C3C03356E4Ccd460", // sOHM - "0x29127fE04ffa4c32AcAC0fFe17280ABD74eAC313", // sifu - ADDRESSES.ethereum.TUSD, - "0x66761Fa41377003622aEE3c7675Fc7b5c1C2FaC5", // CPOOL - "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", // ALCX - "0xdB25f211AB05b1c97D595516F45794528a807ad8", // EURS - ADDRESSES.ethereum.GNO, // GNO - "0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68", // INV - "0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3", // JPEG - "0x0C10bF8FcB7Bf5412187A595ab97a3609160b5c6", // USDD - "0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6", // STG - "0x6243d8CEA23066d098a15582d81a598b4e8391F4", // FLX - ADDRESSES.ethereum.SNX, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.DAI, - - ] - }) -} - -module.exports = { - avax: { - tvl: avaxTvl, - staking: stakings([TimeStaking, RevenueSharingFarm], [TIME, wMEMO]), - }, - ethereum: { - tvl: ethTvl, - }, - methodology: - "Counts tokens on the treasury for TVL, Staked TIME for Staking and Revenue Sharing Farm.", -}; diff --git a/projects/wonderly/abi.json b/projects/wonderly/abi.json deleted file mode 100644 index 4295301b309..00000000000 --- a/projects/wonderly/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "bank": { - "usableFtmBalance": "uint256:usableCollateralBalance", - "usableEthBalance": "uint256:usableCollateralBalance" - }, - "multiFeeDistribution": { - "totalSupply": "uint256:totalSupply" - } -} diff --git a/projects/wonderly/index.js b/projects/wonderly/index.js deleted file mode 100644 index ff5448aa93e..00000000000 --- a/projects/wonderly/index.js +++ /dev/null @@ -1,13 +0,0 @@ - -module.exports = { - fantom: { - tvl: () => ({}), - }, - arbitrum: { - tvl: () => ({}), - }, - hallmarks: [ - ['2023-02-15', 'Project rugged'], - ], - deadFrom: '2023-02-15', -} \ No newline at end of file diff --git a/projects/wonton/index.js b/projects/wonton/index.js deleted file mode 100644 index b938aaf1a5d..00000000000 --- a/projects/wonton/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json") -const { sumTokensExport } = require("../helper/chain/ton") -const HIGHLOAD_CONTRACT = "UQD8ucMJDu-VfMbemse1GaSefy8DUB18VxpvbnWiHQGlGMED" -const POOL_CONTRACT = "UQDzfsiEm9p5KCPA8xNiXHLX42WShhvXEwVadworVgFvCyV8" - -module.exports = { - methodology: "Counts all TON sitting in pre-bonding and high-load smart contact as the TVL. ", - timetravel: false, - ton: { - tvl: sumTokensExport({ - owners: [HIGHLOAD_CONTRACT, POOL_CONTRACT], - tokens: [ADDRESSES.ton.TON], - }) - }, -}; diff --git a/projects/woo-cex/index.js b/projects/woo-cex/index.js deleted file mode 100644 index 48edcacf0e4..00000000000 --- a/projects/woo-cex/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const owners = [ - '0x0d83f81bc9f1e8252f87a4109bbf0d90171c81df', - '0x63DFE4e34A3bFC00eB0220786238a7C6cEF8Ffc4', - '0xE505Bf08C03cc0FA4e0FDFa2487E2c11085b3FD9', - '0xea319fd75766f5180018f8e760f51c3d3c457496', -] - -const config = { - bitcoin: { owners: bitcoinAddressBook.wooCEX }, - ethereum: { owners }, - fantom: { owners }, - avax: { owners }, - bsc: { owners }, - arbitrum: { owners }, - polygon: { owners }, - optimism: { owners }, - tron: { - owners: [ - 'TDZeVyGHgN5bErmWumuYRtXCrYMoUzKF7L', - 'TSC2VZai39isPj5DzByYgaBtjpBHbDcTgd' - ] - }, - //lunc/luna terra143zgtv9ntwcfkslrjfp6c5nvdtl8lqmvff5wz6 // terra1t2gpws06d6yjauwhqy0cqtu2g5gwtghlw60ht4 -} - -module.exports = cexExports(config) -module.exports.methodology = 'This wallets where provide by WOO team' \ No newline at end of file diff --git a/projects/woodswap/index.js b/projects/woodswap/index.js deleted file mode 100644 index 8fb05ca6ebb..00000000000 --- a/projects/woodswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { iziswapExport } = require('../helper/iziswap') - -const poolHelpers = { - 'rsk': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], -} // iziswap liquidityManager contracts - - -Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], }), } -}) \ No newline at end of file diff --git a/projects/woof/index.js b/projects/woof/index.js deleted file mode 100644 index ae911c5d53e..00000000000 --- a/projects/woof/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shibarium', '0x42D6041342021Bc317796C6A0F10Ce39346E9167', { }) \ No newline at end of file diff --git a/projects/woofi-earn/index.js b/projects/woofi-earn/index.js deleted file mode 100644 index 76132e08a6a..00000000000 --- a/projects/woofi-earn/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { get } = require('../helper/http') -const { toUSDTBalances } = require('../helper/balances') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, -}; - -(['fantom', 'bsc', 'avax', 'polygon', 'arbitrum', 'optimism', 'era', 'base', 'mantle']).forEach(chain => { - module.exports[chain] = { - tvl: async () => { - let network = chain - if (chain == 'era') { - network = 'zksync' - } - let data = await get('https://fi-api.woo.org/yield?network=' + network) - const tvl = data.data.total_deposit / 1e18 - return toUSDTBalances(tvl) - } - } -}) diff --git a/projects/woofi.js b/projects/woofi.js deleted file mode 100644 index 3eaaa849805..00000000000 --- a/projects/woofi.js +++ /dev/null @@ -1,226 +0,0 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { staking, stakings } = require('./helper/staking') - -const wooPPConfig = { - fantom: [ - ADDRESSES.fantom.WFTM, // WFTM - '0x74b23882a30290451A17c44f4F05243b6b58C76d', // WETH - ADDRESSES.fantom.WBTC, // WBTC - '0x6626c47c00F1D87902fc13EECfaC3ed06D5E8D8a', // WOO - ADDRESSES.fantom.USDC, // USDC - ADDRESSES.fantom.fUSDT, // fUSDT - ], - bsc: [ - ADDRESSES.bsc.WBNB, // WBNB - ADDRESSES.bsc.ETH, // ETH - ADDRESSES.bsc.BTCB, // BTCB - '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', // WOO - ADDRESSES.bsc.USDT, // USDT - ADDRESSES.bsc.BUSD, // BUSD - '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', // CAKE - ], - avax: [ - ADDRESSES.avax.WAVAX, // WAVAX - ADDRESSES.avax.WETH_e, // WETH.e - ADDRESSES.avax.BTC_b, // BTC.b - '0xaBC9547B534519fF73921b1FBA6E672b5f58D083', // WOO.e - ADDRESSES.avax.USDC, // USDC - ADDRESSES.avax.USDt, // USDt - ], - polygon: [ - ADDRESSES.polygon.WMATIC_2, // WMATIC - ADDRESSES.polygon.WETH_1, // WETH - ADDRESSES.polygon.WBTC, // WBTC - '0x1B815d120B3eF02039Ee11dC2d33DE7aA4a8C603', // WOO - ADDRESSES.polygon.USDC, // USDC.e - ADDRESSES.polygon.USDC_CIRCLE, // native USDC - ADDRESSES.polygon.USDT, // USDT - ], - arbitrum: [ - ADDRESSES.arbitrum.WETH, // WETH - ADDRESSES.arbitrum.WBTC, // WBTC - '0xcAFcD85D8ca7Ad1e1C6F82F651fA15E33AEfD07b', // WOO - ADDRESSES.arbitrum.ARB, // ARB - ADDRESSES.arbitrum.USDC, // USDC.e - ADDRESSES.arbitrum.USDC_CIRCLE, // native USDC - ADDRESSES.arbitrum.USDT, // USDT - ], - optimism: [ - ADDRESSES.optimism.WETH_1, // WETH - ADDRESSES.optimism.WBTC, // WBTC - ADDRESSES.optimism.OP, // OP - ADDRESSES.optimism.USDC, // USDC.e - ADDRESSES.optimism.USDC_CIRCLE, // native USDC - ADDRESSES.optimism.USDT, // USDT - '0x871f2F2ff935FD1eD867842FF2a7bfD051A5E527', // WOO - ], - ethereum: [], - era: [ - ADDRESSES.era.WETH, // WETH - ADDRESSES.era.ZK, // ZK - ADDRESSES.era.USDC, // USDC.e - '0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4', // native USDC - ], - polygon_zkevm: [ - ADDRESSES.polygon_zkevm.WETH, // WETH - ADDRESSES.polygon_zkevm.USDC, // USDC - ], - linea: [ - ADDRESSES.linea.WETH, // WETH - '0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4', // WBTC - ADDRESSES.linea.USDC, // native USDC - ADDRESSES.linea.USDT, // USDT - ], - base: [ - ADDRESSES.base.WETH, // WETH - ADDRESSES.ethereum.cbBTC, // cbBTC - ADDRESSES.base.USDbC, // USDbC - ADDRESSES.base.USDC, // native USDC - ], - mantle: [ - ADDRESSES.mantle.WMNT, // WMNT - ADDRESSES.mantle.WETH, // WETH - ADDRESSES.mantle.mETH, // mETH - ADDRESSES.mantle.USDT, // USDT - ADDRESSES.mantle.USDC, // USDC - ADDRESSES.mantle.cmETH, // cmETH - ], - sonic: [ - ADDRESSES.sonic.wS, //wS - '0x50c42dEAcD8Fc9773493ED674b675bE577f2634b', // WETH - ADDRESSES.sonic.USDC_e, // USDC.e - ], - berachain: [ - ADDRESSES.berachain.WBERA, // WBERA - ADDRESSES.berachain.WBTC, // WBTC - ADDRESSES.berachain.WETH, // WETH - ADDRESSES.berachain.USDC, // USDC.e - ], - hyperliquid: [ - ADDRESSES.hyperliquid.WHYPE, - '0xBe6727B535545C67d5cAa73dEa54865B92CF7907', // UETH - '0x9FDBdA0A5e284c32744D2f17Ee5c74B284993463', // UBTC - ADDRESSES.hyperliquid.USDT0, - ], -} - -const chainConfig = { - fantom: { - wooPPContract: '0x286ab107c5E9083dBed35A2B5fb0242538F4f9bf', - woo: '0x6626c47c00f1d87902fc13eecfac3ed06d5e8d8a', - stakingContract: '0x2Fe5E5D341cFFa606a5d9DA1B6B646a381B0f7ec', - stakingContractV2: '0x1416E1378682b5Ca53F76656549f7570ad0703d9', - }, - bsc: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: '0x4691937a7508860f876c9c0a2a617e7d9e945d4b', - stakingContract: '0x2AEab1a338bCB1758f71BD5aF40637cEE2085076', - stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', - }, - avax: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: '0xabc9547b534519ff73921b1fba6e672b5f58d083', - stakingContract: '0xcd1B9810872aeC66d450c761E93638FB9FE09DB0', - stakingContractV2: '0x3Bd96847C40De8b0F20dA32568BD15462C1386E3', - }, - polygon: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: '0x1b815d120b3ef02039ee11dc2d33de7aa4a8c603', - stakingContract: '0x9BCf8b0B62F220f3900e2dc42dEB85C3f79b405B', - stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', - }, - arbitrum: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: '0xcafcd85d8ca7ad1e1c6f82f651fa15e33aefd07b', - stakingContract: '0x9321785D257b3f0eF7Ff75436a87141C683DC99d', - stakingContractV2: '0x2CFa72E7f58dc82B990529450Ffa83791db7d8e2', - }, - optimism: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: '0x871f2f2ff935fd1ed867842ff2a7bfd051a5e527', - stakingContract: null, - stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', - }, - ethereum: { - wooPPContract: null, - woo: '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', - stakingContract: null, - stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', - }, - era: { - wooPPContract: '0xE656d70bc3550e3EEE9dE7dC79367A44Fd13d975', - woo: null, - stakingContract: null, - stakingContractV2: null, - }, - polygon_zkevm: { - wooPPContract: '0xF5d215d9C84778F85746D15762DaF39B9E83a2d6', - woo: null, - stakingContract: null, - stakingContractV2: null, - }, - linea: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: null, - stakingContract: null, - stakingContractV2: null, - }, - base: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: null, - stakingContract: null, - stakingContractV2: null, - }, - mantle: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: null, - stakingContract: null, - stakingContractV2: null, - }, - sonic: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: null, - stakingContract: null, - stakingContractV2: null, - }, - berachain: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: null, - stakingContract: null, - stakingContractV2: null, - }, - hyperliquid: { - wooPPContract: '0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4', - woo: null, - stakingContract: null, - stakingContractV2: null, - }, -} - -Object.keys(chainConfig).forEach(chain => { - const wooPPTokens = wooPPConfig[chain] - const { wooPPContract, woo, stakingContract, stakingContractV2 } = chainConfig[chain] - - var tvl = 0 - if (wooPPContract != null) { - tvl = staking(wooPPContract, wooPPTokens, chain) - } - - var contracts = [] - if (stakingContract != null) { - contracts.push(stakingContract) - } - if (stakingContractV2 != null) { - contracts.push(stakingContractV2) - } - - var stakingAmount = 0 - if (woo != null) { - stakingAmount = stakings(contracts, woo, chain) - } - - module.exports[chain] = { - staking: stakingAmount, - tvl: tvl, - } -}) diff --git a/projects/woofswap/index.js b/projects/woofswap/index.js deleted file mode 100644 index 58fcc8bfbbc..00000000000 --- a/projects/woofswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('shibarium', '0xB9fbdFA27B7ba8BB2d4bB4aB399e4c55F0F7F83a', { hasStablePools: true }) \ No newline at end of file diff --git a/projects/woofswapGL/index.js b/projects/woofswapGL/index.js deleted file mode 100644 index 84a861f1ee7..00000000000 --- a/projects/woofswapGL/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('gatelayer', '0xc850D2Ae73Cb81E2B74341534094BCcb4a366c24', { hasStablePools: true }) \ No newline at end of file diff --git a/projects/words/index.js b/projects/words/index.js deleted file mode 100644 index f18430ef96f..00000000000 --- a/projects/words/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0xeFb73Ae2247d8a5A87D1EF5e9FD0b815BAb262ef"; - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }); -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl, - }, -}; diff --git a/projects/worldes/index.js b/projects/worldes/index.js deleted file mode 100644 index f3a4353fc92..00000000000 --- a/projects/worldes/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const config = { - arbitrum: { dvmFactory: '0x3bA0388E64900e274f2C6fCfaE34Eed65c01282A', fromBlock: 228710000, dspFactory: '0xf3AadDd00C2E263d760BE52BB7142276B74E8b47', WorldesRWATokenFactory: '0x4Ef31B45919aE1874840B9563D46FCD57E2Ae0b7', WorldesDvmProxy: '0x7e93ED796aFD3D9a6e9a24c668153fBb981bE60E', WorldesDspProxy: '0xE6933Fb2dc110a43fdeC6bB83d6ae99aC557c452', WorldesMineProxy: '0x2eFda50249176e3ee1A26964Ad6496DC5aA2aCE7', WES: '0xcEab5Af10D5376016c8C352ea77F8Bc6a88bDa11' }, -} - -Object.keys(config).forEach(chain => { - const { dvmFactory, fromBlock, dspFactory, blacklistedTokens, WES, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - if (WES) { - const supply = await api.call({ abi: 'uint256:totalSupply', target: WES }) - api.add(WES, supply) - } - - await builder(dvmFactory, 'event NewDVM(address baseToken, address quoteToken, address creator, address pool)'); - await builder(dspFactory, 'event NewDSP(address baseToken, address quoteToken, address creator, address pool)'); - - return api.sumTokens({ ownerTokens, blacklistedTokens, permitFailure: true, }) - - async function builder(factorys, event) { - if (!Array.isArray(factorys)) - factorys = [factorys]; - const res = factorys.map(factory => addLogs(factory, event)); - await Promise.all(res) - } - - async function addLogs(target, eventAbi) { - const convert = i => [[i.baseToken, i.quoteToken], i.pool] - let logs = await getLogs2({ api, target, eventAbi, fromBlock }) - ownerTokens.push(...logs.map(convert)) - } - } - } -}) \ No newline at end of file diff --git a/projects/worldmobiletoken/index.js b/projects/worldmobiletoken/index.js deleted file mode 100644 index 6629d963e52..00000000000 --- a/projects/worldmobiletoken/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/cardano"); - -const scriptAddresses = [ - 'addr1w82u502esm0zmv77t0csd6jrgr6wupy5zr7pdwdczpyerpgf6r666', -]; - -module.exports = { - methodology: 'Counts amount of WMT locked; converted by the price of ADA sitting in the orderbook.', - timetravel: false, - cardano: { - tvl: () => 0, - staking: sumTokensExport({ scripts: scriptAddresses, }) - }, -}; diff --git a/projects/wormhole.js b/projects/wormhole.js deleted file mode 100644 index 0e253b0c21c..00000000000 --- a/projects/wormhole.js +++ /dev/null @@ -1,58 +0,0 @@ -const { get } = require("./helper/http"); -const url = - "https://europe-west3-wormhole-message-db-mainnet.cloudfunctions.net/tvl"; -let _response; - -const chainMap = { - solana: "1", - ethereum: "2", - terra: "3", - bsc: "4", - polygon: "5", - avax: "6", - oasis: "7", - algorand: "8", - aurora: "9", - fantom: "10", - karura: "11", - acala: "12", - klaytn: "13", - celo: "14", - near: "15", - moonbeam: "16", - terra2: "18", - injective: "19", - sui: "21", - aptos: "22", - arbitrum: "23", - optimism: "24", - xpla: "28", - base: "30", -}; - -module.exports = { - timetravel: false, - methodology: - "USD value of native assets currently held by Portal contracts. Token prices sourced from CoinGecko.", - hallmarks: [ - [1652008803, "UST depeg"], - // ["2022-02-02", "Hacked: Signature Exploit"], - ], -}; - -Object.keys(chainMap).forEach((chain) => { - module.exports[chain] = { - tvl: async (api) => { - if (!_response) _response = get(url); - const res = await _response; - const chainId = chainMap[chain]; - if (!(chainId in res.AllTime)) return; - - Object.values(res.AllTime[chainId]).map((c) => { - api.addCGToken(c.CoinGeckoId, c.Amount) - }); - - }, - }; -}); -// node test.js projects/wormhole.js diff --git a/projects/wowswap/abi.json b/projects/wowswap/abi.json deleted file mode 100644 index 5f7c0369545..00000000000 --- a/projects/wowswap/abi.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "getAllLendables": "function getAllLendables() returns (bytes32[])", - "getAllShortables": "function getAllShortables() returns (bytes32[])", - "getAllProxyLendables": "function getAllProxyLendables() returns (bytes32[])", - "getAllTradables": "function getAllTradables() returns (bytes32[])", - "getPair": "function getPair(address lendable, address tradable) view returns (address)", - "getRoutablePair": "function getRoutablePair(address lendable, address proxyLendable, address tradable) view returns (address)", - "getRoutableShortingPair": "function getRoutableShortingPair(address lendable, address proxyLendable, address tradable) view returns (address)", - "getShortingPair": "function getShortingPair(address lendable, address tradable) view returns (address)", - "getReserve": "function getReserve(address lendable) view returns (address)", - "balanceOf": "function balanceOf(address account) view returns (uint256)", - "token0": "address:token0", - "token1": "address:token1", - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)" -} \ No newline at end of file diff --git a/projects/wowswap/constants.js b/projects/wowswap/constants.js deleted file mode 100644 index 8e29e0ff8ad..00000000000 --- a/projects/wowswap/constants.js +++ /dev/null @@ -1,66 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const ADDRESS_ZERO = ADDRESSES.null - -const chains = { - "ethereum": { - reserveFactory: "0xe23d0839DC1aA2b92cBb2919A675DA8A981145E6", - pairFactory: "0x403aD1530de516A99e23dF1B5df926DF4A5e6b8F", - WOW: "0x3405A1bd46B85c5C029483FbECf2F3E611026e45", - xWOW: "0x34be73a499137A1De3866a0fAa148Bb30aba8946", - WOWLP: "0xE659cbac388c8FED117308003a05a9a138cbfA1f" - }, - "bsc": { - reserveFactory: "0x334ebaD4d6EC7Cf028022Ef8d923f674007BcEa7", - pairFactory: "0xb58D4c6E7481DABeB47c96B57bf06Df9C26698a0", - WOW: "0x4DA996C5Fe84755C80e108cf96Fe705174c5e36A", - xWOW: "0x3b94B8e62c1CF0795eC6427AAbC23B269B35cfF8", - WOWLP: "0x73cAbBe6E05290A09B9432eb765521941C870E4D" - }, - "polygon": { - reserveFactory: "0xb58D4c6E7481DABeB47c96B57bf06Df9C26698a0", - pairFactory: "0x4a9Ec8f202518a2423D4e1FB2c2CEB8559153860", - WOW: "0x855D4248672a1fCE482165e8DBE1207b94b1968a", - xWOW: "0xe876F5e5236fFbB5285A475211Ca052bA8A56293", - WOWLP: "0x7600Cc75fa9045986EFE0BdDEe8e18621a8dD49E" - }, - "heco": { - reserveFactory: "0x518C21A2Edc710b0c627DBbCb0Af34531Dd1724a", - pairFactory: "0x86fEA7A7c7f2503cdDb4Ad0E4e7977E8bDcb1872", - WOW: ADDRESSES.telos.USDT, - xWOW: "0x72c0A253C84ADa1b1379b2A66ce51862d9bf159B", - WOWLP: "0x5E5f16A910B7b44f4F8090798BaADEfBC1388253" - }, - "avax": { - reserveFactory: "0x09D7C0C4cb531331beeD7fDcFD7B44200EB01e1f", - pairFactory: "0xdf3dCd9B545Fb6FE096D07Ef962B6393CB649dFa", - WOW: "0xA384Bc7Cdc0A93e686da9E7B8C0807cD040F4E0b", - xWOW: "0x55fACcEa65e56f74684E88aECEd980EBf32Ffd95", - WOWLP: "0x5085678755446F839B1B575cB3d1b6bA85C65760" - }, - "iotex": { - reserveFactory: "0xa0d680dbe9965b77FD42015646Bc2C0F5F461Aa3", - pairFactory: "0xA95f470fb554eC18e68AA1B2562A99b0079601C9", - WOW: "0xD67de0e0a0Fd7b15dC8348Bb9BE742F3c5850454", - xWOW: "0x3E67b7c3026721C2E5E8Df9bcaAD06c36141B072", - WOWLP: "0x8AcC588B08F5A839e6F3db17597986cFd92e20b4" - }, - "metis": { - reserveFactory: "0x9Bb0aF14983c837C5c5d8c8AC95B57c148AC2137", - pairFactory: "0xa98fd60318a1253fa2BCa68CE46fE3D48c8EA602", - WOW: "0x5CE34d9abe4bF239cbc08B89287c87f4CD6d80B7", - xWOW: "0x3B642654c6a2C1ECe1d33cBF0EDBfDD970AEC35f", - WOWLP: "0x1f9A2b3b05e1c43Ec6aaeF2fb727e43C4b956e30" - }, - "kava": { - reserveFactory: "0xa98fd60318a1253fa2BCa68CE46fE3D48c8EA602", - pairFactory: "0xA53230B6B6e7f4FDD0f65Af954F891A77351baBF", - WOW: "0x527805F51C448155DfBDee04bD950036A52a21f0", - xWOW: "0x3B642654c6a2C1ECe1d33cBF0EDBfDD970AEC35f", - WOWLP: ADDRESSES.null - } -}; - -module.exports = { - ADDRESS_ZERO, - chains -} \ No newline at end of file diff --git a/projects/wowswap/index.js b/projects/wowswap/index.js deleted file mode 100644 index 7573dc18bfe..00000000000 --- a/projects/wowswap/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const protocol = require("./protocol"); -const { staking } = require('../helper/staking') -const { chains, } = require("./constants"); -const { nullAddress } = require("../helper/tokenMapping"); - -async function tvl(api) { - const lendables = await protocol.getLendables(api); - const tradables = await protocol.getTradables(api); - const shortables = await protocol.getShortables(api); - const proxyLendables = await protocol.getProxyLendables(api); - - const reserves = await protocol.getReserves([...lendables, ...shortables], api); - const pairs = await protocol.getPairs(lendables, tradables, api); - const routablePairs = await protocol.getRoutablePairs(lendables, proxyLendables, tradables, api); - const shortingPairs = await protocol.getShortingPairs(lendables, shortables, api); - const routableShortingPairs = await protocol.getRoutableShortingPairs(lendables, proxyLendables, shortables, api); - const list = [ - reserves, - pairs, - routablePairs, - shortingPairs, - routableShortingPairs - ].flat().filter(pair => pair[1] !== nullAddress) - return api.sumTokens({ tokensAndOwners: list }) -} - -module.exports = { - start: '2021-04-12', // Mon Apr 12 2021 09:00:00 -}; - -Object.keys(chains).forEach(chain => { - const { WOW, xWOW, } = chains[chain] - module.exports[chain] = { - tvl, - staking: staking(xWOW, WOW) - } -}) - -module.exports.heco.tvl = () => ({}) -module.exports.heco.staking = () => ({}) -// module.exports.kava.tvl = () => ({}) -// module.exports.kava.staking = () => ({}) \ No newline at end of file diff --git a/projects/wowswap/protocol.js b/projects/wowswap/protocol.js deleted file mode 100644 index 1e878c8c247..00000000000 --- a/projects/wowswap/protocol.js +++ /dev/null @@ -1,101 +0,0 @@ -const abi = require("./abi.json"); -const { chains, } = require("./constants"); - -const bytes32ToAddress = (bytes32Address) => "0x" + bytes32Address.substr(-40); - -async function getTokens(target, method, api) { - return api.call({ - target: chains[api.chain][target], - abi: abi[method], - }).then(response => response.map(bytes32ToAddress)); -} - -async function getLendables(api) { - return getTokens("reserveFactory", "getAllLendables", api); -} - -async function getShortables(api) { - return getTokens("pairFactory", "getAllShortables", api); -} - -async function getProxyLendables(api) { - return getTokens("pairFactory", "getAllProxyLendables", api); -} - -async function getTradables(api) { - return getTokens("pairFactory", "getAllTradables", api); -} - -async function getReserves(tokens, api) { - return api.multiCall({ - target: chains[api.chain].reserveFactory, - calls: tokens, - abi: abi.getReserve, - }).then(response => response.map((v, i) => [tokens[i], v])) -} - -async function getPairs(lendables, tradables, api) { - const tokens = lendables.flatMap(lendable => tradables.map(tradable => ([lendable, tradable]))); - const calls = tokens.map(params => ({ params })); - return api.multiCall({ - target: chains[api.chain].pairFactory, - calls, - abi: abi.getPair, - }) - .then(response => response.map((v, i) => [calls[i].params[1], v])) -} - -async function getShortingPairs(lendables, shortables, api) { - const tokens = lendables.flatMap(lendable => shortables.map(shortable => ([lendable, shortable]))); - const calls = tokens.map(params => ({ target: chains[api.chain].pairFactory, params: params })); - return api.multiCall({ - calls, - abi: abi.getShortingPair, - }) - .then(response => response.map((v, i) => [calls[i].params[0], v])) -} - -async function getRoutablePairs(lendables, proxies, tradables, api) { - const tokens = lendables.flatMap( - lendable => proxies.flatMap( - proxy => tradables.map( - tradable => ([lendable, proxy, tradable]) - ) - ) - ); - const calls = tokens.map(params => ({ target: chains[api.chain].pairFactory, params })); - return api.multiCall({ - calls, - abi: abi.getRoutablePair, - }) - .then(response => response.map((v, i) => [calls[i].params[2], v])) -} - -async function getRoutableShortingPairs(lendables, proxies, shortables, api) { - const tokens = lendables.flatMap( - lendable => proxies.flatMap( - proxy => shortables.map( - shortable => ([lendable, proxy, shortable]) - ) - ) - ); - const calls = tokens.map(params => ({ target: chains[api.chain].pairFactory, params })); - return api.multiCall({ - calls, - abi: abi.getRoutableShortingPair, - }) - .then(response => response.map((v, i) => [calls[i].params[0], v])) -} - -module.exports = { - getReserves, - getPairs, - getRoutablePairs, - getShortingPairs, - getRoutableShortingPairs, - getLendables, - getTradables, - getShortables, - getProxyLendables, -}; - diff --git a/projects/wraithswap/index.js b/projects/wraithswap/index.js deleted file mode 100644 index 08c4e25156e..00000000000 --- a/projects/wraithswap/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') -module.exports = uniTvlExports({ - 'fantom': '0xCC738D2fDE18fe66773b84c8E6C869aB233766D1' -}, { staking: { fantom: ['0x37b106f101a63D9d06e53140E52Eb6F8A3aC5bBc', '0x4cf098d3775bd78a4508a13e126798da5911b6cd']}}) diff --git a/projects/wrapped-ilcoin/index.js b/projects/wrapped-ilcoin/index.js deleted file mode 100644 index 6a9dbaeb037..00000000000 --- a/projects/wrapped-ilcoin/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -module.exports = { - ethereum:{ - tvl: () => ({}) - }, -} - -module.exports.deadFrom = '2022-05-09' diff --git a/projects/wrappedBNB.js b/projects/wrappedBNB.js deleted file mode 100644 index dbe6851fc23..00000000000 --- a/projects/wrappedBNB.js +++ /dev/null @@ -1,11 +0,0 @@ -const { queryV1Beta1 } = require('./helper/chain/cosmos'); - -async function tvl(api) { - const data = await queryV1Beta1({ chain: 'kava', url: '/bep3/v1beta1/assetsupply/bnb'}) // https://swagger.kava.io/#/BEP3/BEP3AssetSupply - api.addGasToken(data.asset_supply.current_supply.amount* 1e10) -} - -module.exports = { - timetravel: false, - bsc: { tvl } -}; \ No newline at end of file diff --git a/projects/wrappedfi.js b/projects/wrappedfi.js deleted file mode 100644 index dbfb35f467e..00000000000 --- a/projects/wrappedfi.js +++ /dev/null @@ -1,21 +0,0 @@ -const { cexExports } = require('./helper/cex') -const ADDRESSES = require('./helper/coreAssets.json') - -module.exports = { - ...cexExports({ - ripple: { - owners: ['r4Pr9aBnqN84hbkmJo4HwUtLj63E5vGFyE'] - }, - celo: { - tokensAndOwners: [ - [ADDRESSES.null, '0x84d9dcAc2f00F2Cd903E340b5241EB6e5c198572'] - ] - }, - ethereum: { - tokensAndOwners: [ - [ADDRESSES.null, '0xD6873b9592AB601E6cE6a6A781799d54961942F3'] - ] - }, - }), - methodology: 'The TVL consists of the underlying capital held in custody.' -}; \ No newline at end of file diff --git a/projects/wspp/index.js b/projects/wspp/index.js deleted file mode 100644 index 2f5a19e2a00..00000000000 --- a/projects/wspp/index.js +++ /dev/null @@ -1,66 +0,0 @@ -const { masterchefExports, sumUnknownTokens } = require("../helper/unknownTokens") -const sdk = require('@defillama/sdk'); - -const poolAddressesABI = 'function poolAddresses(uint256) view returns (address)' - -const config = { - bsc: { - masterchef: '0xb7908c88ce10592583541f1f0ef68d7d5d09f988', - nativeTokens: [ - '0x6b6ffcee13142c5a7b0e7e2665d89321b38b0386', // SoW - '0x46d502fac9aea7c5bc7b13c8ec9d02378c33d36f', // WSPP - '0xf83849122f769a0a7386df183e633607c890f6c0', // ABS - '0xcccbf2248ef3bd8d475ea5de8cb06e19f4591a8e', // GWSPP - ], - staking: [ - ['0x46d502fac9aea7c5bc7b13c8ec9d02378c33d36f', '0x87B4a0B47704c281F6ef2705dC5D57D47FfdD9Bf',], // WSPP staking - ['0xf83849122f769a0a7386df183e633607c890f6c0', '0x41351c6e23d55ffbf8992059a2033797a333dbc1',], // ABS staking - ['0xc18083cc09da5fb3e29ae39e186a817efce6cb3f', '0xB3F8A31521833a9BC4e75129A3d203Fc9B4802c8',], // VIVA staking - ['0x921d3a6ed8223AFb6358410F717e2FB13cbae700', '0xcee0c2f132083175bf5f06c5490c911a21a70461',], // QRT staking - ['0x4227C55bF21E95a87C00988FeC98c50E9AbA866C', '0x44d3a24fcd9e1f5a35c383889db1c874fab35a54',], // FluffyCorgi staking - ['0x06d7645f4f483bb925db2094dD5fdb1f75B07D61', '0x85c3c3452b409db107d2f38cf60b2802ef59aaf4',], // SCARY staking - ] - }, - polygon: { - poolInfoABI: poolAddressesABI, - getToken: i => i, - masterchef: '0x005d788D0EaCFA5BC033754E4ABCf442352782bC', - nativeTokens: [ - '0x46D502Fac9aEA7c5bC7B13C8Ec9D02378C33D36F', // WSPP - ], - staking: [ - ['0x46D502Fac9aEA7c5bC7B13C8Ec9D02378C33D36F', '0x1476322919a861e4E2215d87a721B93bD9c9919D',], // WSPP staking - ] - }, - avax: { - staking: [ - ['0xe668f8030bf17f3931a3069f31f4fa56efe9dd54', '0x7f20f17660a5b9565dc7c98efc360e3c7092c72e',], // WSPP staking - ] - }, - kardia: { - poolInfoABI: poolAddressesABI, - getToken: i => i, - masterchef: '0x2f78685a7930C7A8288fE489a67d8E35a2029D89', - nativeTokens: [ - '0xccB32737C6dFfddFFB24CA8A96b588ac7b1822e7', // WSPP - ], - staking: [ - ['0xccB32737C6dFfddFFB24CA8A96b588ac7b1822e7', '0x18Ee117A92509047EBC34EFcc0CcDC8692cDc37c',], // WSPP staking - ] - }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { masterchef, nativeTokens, staking, poolInfoABI, getToken, } = config[chain] - if (masterchef) - module.exports[chain] = masterchefExports({ masterchef, nativeTokens, useDefaultCoreAssets: true, chain, poolInfoABI, getToken, })[chain] - if (staking) { - const stakingFn = (api) => sumUnknownTokens({ api, tokensAndOwners: staking, useDefaultCoreAssets: true, }) - if (module.exports[chain]) - module.exports[chain].staking = sdk.util.sumChainTvls([module.exports[chain].staking, stakingFn]) - else - module.exports[chain] = { staking: stakingFn } - } -}) diff --git a/projects/wtfdex/index.js b/projects/wtfdex/index.js deleted file mode 100644 index 5c98c25c784..00000000000 --- a/projects/wtfdex/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { staking } = require("../helper/staking"); - -const MasterChefContract = "0x8F4Ed4Cf0300E22c739d2E5A22220497B123b66e"; -const WTFX = "0x4e6482b05D13085f1C4A7e2Ef612ba43104f71b9"; - -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - methodology: `Uses factory(0x63FD0a6acBfFB128E7BC7753BFA3B8639A233d50) address and whitelisted tokens address to find and price Liquidity Pool pairs`, - arbitrum: { - tvl: getUniTVL({ factory: '0x63FD0a6acBfFB128E7BC7753BFA3B8639A233d50', useDefaultCoreAssets: true }), - staking: staking(MasterChefContract, WTFX), - } -}; diff --git a/projects/wtfdoge-farm/index.js b/projects/wtfdoge-farm/index.js deleted file mode 100644 index 71327e2ec65..00000000000 --- a/projects/wtfdoge-farm/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - - -const chef = "0x03b487A2Df5ddc6699C545eB1Da27D843663C8b8" -const waterfall = "0xeF7B2204B5c4DCe2b30600B89e1C11bb881f3564" -const waterfallDogLP = "0x62b44635A4AeBcA4D329AdD86BC34d00869eF4d2" -const waterfallUsdcLP = "0x52d8E261cfdc7E62e783611b0bB6a3064dF9FC05"; - -module.exports = masterchefExports({ chain: 'dogechain', nativeToken: waterfall, masterchef: chef, useDefaultCoreAssets: true, lps: [waterfallDogLP, waterfallUsdcLP, ]}) \ No newline at end of file diff --git a/projects/wx-network-waves/index.js b/projects/wx-network-waves/index.js deleted file mode 100644 index 830da6cfc31..00000000000 --- a/projects/wx-network-waves/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { wavesBalanceDetails } = require("../helper/chain/waves"); -const sdk = require('@defillama/sdk') - -const WXStakingNode = "3P3RZeHi4LTjpZdpw7kmkVSbQ84qDfrVy8G"; - -async function wavesTVL() { - const balances = {}; - const { effective } = await wavesBalanceDetails(WXStakingNode); - sdk.util.sumSingleBalance(balances,'waves', effective / 1e8) - return balances; -} - -module.exports = { - timetravel: false, // Waves blockchain - methodology: "TVL of WAVES means the quantity of staked WAVES tokens on WX node", - waves: { - tvl: wavesTVL, - }, -}; diff --git a/projects/wyndao-dex/index.js b/projects/wyndao-dex/index.js deleted file mode 100644 index 74f3a87da0e..00000000000 --- a/projects/wyndao-dex/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getFactoryTvl } = require('../terraswap/factoryTvl') -const { getBalance, } = require('../helper/chain/cosmos') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - juno: { - tvl: getFactoryTvl("juno16adshp473hd9sruwztdqrtsfckgtd69glqm6sqk0hc4q40c296qsxl3u3s",), - staking: async () => { - return { - 'wynd': await getBalance({ chain: 'juno', token: 'juno1mkw83sv6c7sjdvsaplrzc8yaes9l42p4mhy0ssuxjnyzl87c9eps7ce3m9', owner: 'juno1sy9mlw47w44f94zea7g98y5ff4cvtc8rfv75jgwphlet83wlf4ssa050mv' }) / 1e6 - } - } - }, -} \ No newline at end of file diff --git a/projects/wyndao-lsd/index.js b/projects/wyndao-lsd/index.js deleted file mode 100644 index c28b3543eda..00000000000 --- a/projects/wyndao-lsd/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { get } = require('../helper/http') -const { queryContract, totalSupply } = require('../helper/chain/cosmos') - -module.exports = { - timetravel: false, - juno: { - tvl: async (api) => { - let { supply: { bond_denom, total_bonded }} = await queryContract({ chain: api.chain, contract: 'juno1snv8z7j75jwfce4uhkjh5fedpxjnrx9v20ffflzws57atshr79yqnw032r', data: { supply: {}}}) - api.add(bond_denom, total_bonded) - } - } -} \ No newline at end of file diff --git a/projects/x-xyz/index.js b/projects/x-xyz/index.js deleted file mode 100644 index aae9ee130da..00000000000 --- a/projects/x-xyz/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { staking } = require("../helper/staking"); - -const X = "0x7f3141c4d6b047fb930991b450f1ed996a51cb26"; -const veX = "0x5b8c598ef69e8eb97eb55b339a45dcf7bdc5c3a3"; - -module.exports = { - methodology: `TVL for X.xyz consists of the staking of X into veX.`, - ethereum:{ - tvl: () => ({}), - staking: staking(veX, X), - } -} \ No newline at end of file diff --git a/projects/x2y2/index.js b/projects/x2y2/index.js deleted file mode 100644 index af2af0c0b81..00000000000 --- a/projects/x2y2/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs') - -// Example X2Y2 staking tx: X2Y2 staking goes from wallet to X2Y2 FeeSharingSystem then to the 0xb329 TokenDistributor contract -// https://etherscan.io/token/0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9?a=0xb329e39ebefd16f40d38f07643652ce17ca5bac1#readContract -const X2Y2 = "0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9"; -const X2Y2_staking = "0xb329e39ebefd16f40d38f07643652ce17ca5bac1"; - -// Lending vaults -const XY3_v1 = "0xC28F7Ee92Cd6619e8eEC6A70923079fBAFb86196"; -const XY3_v2 = "0xFa4D5258804D7723eb6A934c11b1bd423bC31623" -const XY3_v3 = "0xB81965DdFdDA3923f292a47A1be83ba3A36B5133" - -async function tvl(api) { - return sumTokens2({ api, owners: [XY3_v1, XY3_v2, XY3_v3], resolveNFTs: true}) -} - -module.exports = { - methodology: `TVL for X2Y2 consists of deposited NFTs`, - ethereum:{ - tvl, - staking: staking(X2Y2_staking, X2Y2), - } -} \ No newline at end of file diff --git a/projects/x3x/index.js b/projects/x3x/index.js deleted file mode 100644 index e1ca2639855..00000000000 --- a/projects/x3x/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const CONTRACTS = { - V1: "0x1FD5Bb99b8469916e1D2a65e186b7b30b2C6021A", - V2: "0x68f571e43C8d96e40c2DAdb69f4a13749D563095", -}; - -const WLD = ADDRESSES.wc.WLD; - -async function tvl(api) { - return sumTokens2({ - api, - tokensAndOwners: [ - [WLD, CONTRACTS.V1], - [WLD, CONTRACTS.V2], - ], - useDefaultCoreAssets: true, - }); -} - -module.exports = { - methodology: - "TVL is calculated by sum of WLD tokens held across all X3X contracts (v1, v2).", - wc: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/x7/index.js b/projects/x7/index.js deleted file mode 100644 index 1d1ae33ace6..00000000000 --- a/projects/x7/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - ethereum: { - tvl: () => ({}), - }, -}; diff --git a/projects/xApp/index.js b/projects/xApp/index.js deleted file mode 100644 index 5846d63baa3..00000000000 --- a/projects/xApp/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const tokensAndOwners = [ - ['0x90b71b077BD5b7Ae47a19153Cd8E7BB5b8077E80', '0x96500a433E0b67B3438cf01677E38c9EFDeF4a56'], - ['0xae5BcC1Ef83CC3d3a8f69E9eB5380458eDbC1788', '0xBA9826C84304118bd444EFC6980753aA8083b4A4'] -] - -module.exports = { - crossfi: { - tvl: () => ({}), - pool2: () => sumTokens2({ - tokensAndOwners, - chain: 'crossfi', - resolveLP: true, - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/xAssets/index.js b/projects/xAssets/index.js deleted file mode 100644 index 076b9dfa991..00000000000 --- a/projects/xAssets/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const CONTRACT_ADDRESS = '0x10baa5c14ebde8681e83b2503682b3f45b8dc4c2'; - -const TOKENS = { - WXFI: { - address: ADDRESSES.crossfi.WXFI, - decimals: 18 - }, - WETH: { - address: '0xa084d905e3F35C6B86B5E672C2e72b0472ddA1e3', - decimals: 18 - }, - USDC: { - address: '0x7bBcE15166bBc008EC1aDF9b3D6bbA0602FCE7Ba', - decimals: 6 - }, - USDT: { - address: '0x38E88b1ed92065eD20241A257ef3713A131C9155', - decimals: 6 - }, - WBTC: { - address: '0x417c85B9D0826501d7399FEeF417656774d333cc', - decimals: 8 - } -}; - -async function tvl(api) { - return sumTokens2({ - api, owner: CONTRACT_ADDRESS, - tokens: Object.values(TOKENS).map(token => token.address), - }); -} - -module.exports = { - methodology: `Measures the total value locked (TVL) in the xAssets Real World Assets (RWA) protocol on CrossFi chain. - TVL is calculated by summing the balances of: - - WXFI (Wrapped XFI) - - WETH (Wrapped ETH) - - USDC - - USDT - - WBTC - - that are held by the main xAssets contract at ${CONTRACT_ADDRESS}. - - The protocol holds liquidity in multiple tokens to back real-world assets tokenized on the CrossFi chain.`, - crossfi: { - tvl, - }, -}; diff --git a/projects/xWeowns/index.js b/projects/xWeowns/index.js deleted file mode 100644 index 006f1e1b8c9..00000000000 --- a/projects/xWeowns/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - lachain: { - tvl: () => 0, - } -}; -module.exports.deadFrom = '2023-06-09' \ No newline at end of file diff --git a/projects/xWinFinance/Helper.js b/projects/xWinFinance/Helper.js deleted file mode 100644 index 64ff10d0aea..00000000000 --- a/projects/xWinFinance/Helper.js +++ /dev/null @@ -1,27 +0,0 @@ -const token = { - XWIN: '0xd88ca08d8eec1e9e09562213ae83a7853ebb5d28' -}; - -const farms = { - MasterChefAddress: "0xD09774e3d5Dc02fa969896c53D3Cbb5bC8900A60", - BuddyChefAddress: "0x4B87a60fC5a94e5ac886867977e29c9711C2E903", - LockStakingAddress: "0xa4AE0DCC89Af9855946C0b2ad4A10FF27125a9Fc", - PriceMasterAddr: "0xB1233713FeA0984fff84c7456d2cCed43e5e48E2", -}; - -const abi = { - getVaultValues: - "function getVaultValuesInUSD() public view returns (uint vaultValue)", - poolLength: "function poolLength() view returns (uint)", - poolInfoMaster: - "function poolInfo(uint256) view returns (address, uint256, uint256, uint256, uint256, uint256)", - balance: "function balanceOf(address) view returns (uint256)", - decimals: "function decimals() view returns (uint8)", - getPrice: "function getPrice(address, address) view returns (uint rate)", -}; - -module.exports = { - farms, - abi, - token, -} \ No newline at end of file diff --git a/projects/xWinFinance/index.js b/projects/xWinFinance/index.js deleted file mode 100644 index 91612e871e8..00000000000 --- a/projects/xWinFinance/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const { sumTokens2, sumTokensExport, } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') -const { farms: { MasterChefAddress, LockStakingAddress }, abi, token: { XWIN } } = require('./Helper.js'); - -const PrivateURL = "https://us-central1-xwinfinance-main.cloudfunctions.net/getPrivateVaults" - -const config = { - bsc: { - portfolioURL: "https://s3.ap-northeast-1.amazonaws.com/download.xwin.finance/v2-config/bsc/xwinfundv2.json", - strategyUrl: 'https://s3.ap-northeast-1.amazonaws.com/download.xwin.finance/v2-config/bsc/xwinstrategies.json', - privateKey: 'BNB', - }, - arbitrum: { - portfolioURL: "https://s3.ap-northeast-1.amazonaws.com/download.xwin.finance/v2-config/arb/xwinfundv2.json", - strategyUrl: "https://s3.ap-northeast-1.amazonaws.com/download.xwin.finance/v2-config/arb/xwinstrategies.json", - privateKey: 'ARB', - }, - polygon: { - strategyUrl: "https://s3.ap-northeast-1.amazonaws.com/download.xwin.finance/v2-config/polygon/xwinstrategies.json", - privateKey: 'Polygon', - }, -} - -Object.keys(config).forEach(chain => { - const { portfolioURL, strategyUrl, privateKey, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let vaults = (await getConfig('xWinFinance/vaults/' + api.chain, strategyUrl)).map(i => i.contractaddress) - const privateVaults = await getConfig('xWinFinance/privateVaults', PrivateURL) - - vaults.push(...privateVaults[privateKey]) - if (portfolioURL) { - const portfolioVaults = await getConfig('xWinFinance/portfolioVaults/' + api.chain, portfolioURL) - vaults.push(...portfolioVaults.map(i => i.contractaddress)) - } - - - const isValidVault = await api.multiCall({ abi: 'uint256:getVaultValues', calls: vaults, permitFailure: true }) - vaults = vaults.filter((_, i) => isValidVault[i]) - - const bals = await api.multiCall({ abi: 'uint256:getVaultValues', calls: vaults, permitFailure: true }) - const tokens = await api.multiCall({ abi: 'address:baseToken', calls: vaults }) - const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) - - - //Get Vault Values returns 18 decimals even if the base token is not - //For loop that removes the extra zeros if the base token is not 18 decimals. - bals.forEach((bal, i) => bals[i] = (bal ?? 0) / 10 ** (18 - decimals[i])) - - api.addTokens(tokens, bals) - } - } -}) - -async function pool2(api) { - const data = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfoMaster, target: MasterChefAddress, }) - return sumTokens2({ api, owner: MasterChefAddress, tokens: data.map(i => i[0]), resolveLP: true, blacklistedTokens: [XWIN, LockStakingAddress] }) -} - -module.exports.bsc.pool2 = pool2 -module.exports.bsc.staking = sumTokensExport({ owners: [MasterChefAddress, LockStakingAddress], tokens: [XWIN] }) diff --git a/projects/xai-bridge/index.js b/projects/xai-bridge/index.js deleted file mode 100644 index ab93d3ca0b5..00000000000 --- a/projects/xai-bridge/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - arbitrum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xb591cE747CF19cF30e11d656EB94134F523A9e77", - "0xb15A0826d65bE4c2fDd961b72636168ee70Af030", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/xave-finance/index.js b/projects/xave-finance/index.js deleted file mode 100644 index 8daa2f6d9a9..00000000000 --- a/projects/xave-finance/index.js +++ /dev/null @@ -1,166 +0,0 @@ -const { ethers } = require("ethers"); -const { getLogs } = require("../helper/cache/getLogs"); - -async function tvl(api) { - const factories = config[api.chain]; - - const promises = factories.map(async ({ factory, fromBlock, name }) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: name.includes("FX Pool") - ? "event NewFXPool(address indexed caller, bytes32 indexed id, address indexed fxpool)" - : "event NewCurve(address indexed caller, bytes32 indexed id, address indexed curve)", - onlyArgs: true, - fromBlock, - }); - - if (name.includes("FX Pool")) { - const pools = logs.map((i) => i.fxpool); - const poolIds = await api.multiCall({ - abi: "function getPoolId() view returns (bytes32)", - calls: pools, - }); - const vaults = await api.multiCall({ - abi: "address:getVault", - calls: pools, - }); - - const data = await api.multiCall({ - abi: "function getPoolTokens(bytes32 poolId) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)", - calls: poolIds.map((v, i) => ({ target: vaults[i], params: v })), - }); - - data.forEach((i) => { - api.addTokens(i.tokens, i.balances); - }); - } else if (name.includes("CurveFactory")) { - const pools = logs - .map((i) => i.curve) - .filter((p) => !ignoredPools[api.chain].includes(p)); - - const data = await api.multiCall({ - abi: "function liquidity() view returns (uint256 total_, uint256[] memory individual_)", - calls: pools.map((v) => ({ target: v })), - permitFailure: true - }) - - // Curve.derivatives(0) - const derivatives0 = await api.multiCall({ - abi: "function derivatives(uint256 index) view returns (address token_address)", - calls: pools.map((v) => ({ target: v, params: "0" })), - }); - - const derivatives0Decimals = await api.multiCall({ - abi: "function decimals() view returns (uint8 decimals)", - calls: derivatives0.map((v) => ({ target: v })), - }); - - // Curve.derivatives(1) - const derivatives1 = await api.multiCall({ - abi: "function derivatives(uint256 index) view returns (address token_address)", - calls: pools.map((v, i) => ({ target: v, params: "1" })), - }); - - const derivatives1Decimals = await api.multiCall({ - abi: "function decimals() view returns (uint8 decimals)", - calls: derivatives1.map((v) => ({ target: v })), - }); - - data.forEach((d, i) => { - if (!d) return - - const divisor0 = ethers.parseUnits( - "1", - parseInt(derivatives0Decimals[i]) - ); - - const baseTokenBalance = - (BigInt(d.individual_[0]) / ethers.parseUnits("1", parseInt(18))) * - divisor0; - - const divisor1 = ethers.parseUnits( - "1", - parseInt(derivatives1Decimals[i]) - ); - const quoteTokenBalance = - (BigInt(d.individual_[1]) / ethers.parseUnits("1", parseInt(18))) * - divisor1; - - api.addTokens( - [derivatives0[i], derivatives1[i]], - [baseTokenBalance.toString(), quoteTokenBalance.toString()] - ); - }); - } - }); - await Promise.all(promises); - return api.getBalances(); -} - -module.exports = { - methodology: "sum of all the tokens locked in FX Pools", - doublecounted: true, // tokens are stored in balancer vaults -}; - -const config = { - polygon: [ - { - name: "FX Pool Factory", - factory: "0x627D759314D5c4007b461A74eBaFA7EBC5dFeD71", - fromBlock: 32054794, - }, - { - name: "FX Pool Deployer", - factory: "0xF169c1Ae8De24Da43a3dC5c5F05De412b4848bD3", - fromBlock: 49368321, - }, - { - name: "CurveFactory", - factory: "0x6bfBc74eb37d44DE6E44B0B63F04CbA626009Ff5", - fromBlock: 18910303, - }, - ], - ethereum: [ - { - name: "FX Pool Factory", - factory: "0x81fE9e5B28dA92aE949b705DfDB225f7a7cc5134", - fromBlock: 15981805, - }, - { - name: "FX Pool Deployer", - factory: "0xfb23Bc0D2629268442CD6521CF4170698967105f", - fromBlock: 18469425, - }, - { - name: "CurveFactory", - factory: "0xFA505d02269bF4Ea59355a4e37fBd882122717e5", - fromBlock: 13221583, - }, - ], - avax: [ - { - name: "FX Pool Factory", - factory: "0x81fE9e5B28dA92aE949b705DfDB225f7a7cc5134", - fromBlock: 32585313, - }, - { - name: "FX Pool Deployer", - factory: "0x4042dC4110Ea9500338737605A60065c3de152C6", - fromBlock: 37150792, - }, - ], -}; - -const ignoredPools = { - ethereum: [ - "0x20E1d8Daf58358CF11BE5616946e1dF55F1eF8B0", - "0xc3CfdA7061b729265F58BdC07564f1cbD6C41FBc", - ], - polygon: [], - avax: [], -}; - -Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; -}); diff --git a/projects/xbacked/index.js b/projects/xbacked/index.js deleted file mode 100644 index 3c56e410e14..00000000000 --- a/projects/xbacked/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Sums the total locked collateral value in usd across all vaults.", - deadFrom: '2024-04-22', // part of compx now - algorand: { - tvl: async () => { - return {} - } - }, -} \ No newline at end of file diff --git a/projects/xbank/index.js b/projects/xbank/index.js deleted file mode 100644 index 7ce5b8aedd7..00000000000 --- a/projects/xbank/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { compoundExports2 } = require('../helper/compound'); - -module.exports = { - deadFrom: '2024-04-28', - era: compoundExports2({ - comptroller: '0xC6d329a2C3f8cFDECAe7FeEc387fa633C6520991', - cether: '0xE4622A57Ab8F4168b80015BBA28fA70fb64fa246', - }) -}; - -module.exports.era.borrowed = () => ({}) // bad debt \ No newline at end of file diff --git a/projects/xbanking/abi.json b/projects/xbanking/abi.json deleted file mode 100644 index 82facda0ece..00000000000 --- a/projects/xbanking/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "see_s1ftm_circ": "uint256:see_s1ftm_circ", - "see_s1tomb_circ": "uint256:see_s1tomb_circ" -} diff --git a/projects/xbanking/contracts.json b/projects/xbanking/contracts.json deleted file mode 100644 index 373424e539a..00000000000 --- a/projects/xbanking/contracts.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ftmVault": "0x3d2fa78f5e1aa2e7f29c965d0e22b32b8d5f14a9", - "tombVault": "0xA222fb9D2A811FAb3B334a5a9FA573C11fee73c1", - "avaxVault": "0x1689D5C5866909569a98B35da6A24090e4931C17", - "ethVault": "0xf9448f9a932474B5cAd9F05b86EA12376f2Fd770", - "Collateral": "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", - "FTM": "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", - "AVAX": "0x511D35c52a3C244E7b8bd92c0C297755FbD89212", - "TOMB": "0x6c021ae822bea943b2e66552bde1d2696a53fbb7", - "WETH": "0x74b23882a30290451A17c44f4F05243b6b58C76d", - "DAI": "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", - "pool2": "0x56995c729296c634cA367F8F3e5E5dEFF30D4511", - "daiPool2": "0x629670EAA62952990dd5b0658Ab6c6296fE2111b", - "ftmPool2": "0x4bd9B32677821939937FaDaEb30858806578339c" -} diff --git a/projects/xbanking/index.js b/projects/xbanking/index.js deleted file mode 100644 index 62521da57bc..00000000000 --- a/projects/xbanking/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const contracts = require("./contracts.json"); -const { pool2 } = require("../helper/pool2"); -const vaults = [ - contracts.ftmVault, - contracts.ethVault, - contracts.avaxVault, - contracts.tombVault, -] - -const tokens = [ - contracts.FTM, - contracts.WETH, - contracts.AVAX, - contracts.TOMB, -] - -async function tvl(api) { - const _tokens = [...tokens] - const owners = [...vaults, ...vaults] - vaults.forEach(v => _tokens.push(contracts.Collateral)) - return api.sumTokens({ tokensAndOwners2: [_tokens, owners] }) -} - -async function borrowed(api) { - const vaults0 = vaults.slice(0, 2); - const vaults1 = vaults.slice(2); - const tokens0 = tokens.slice(0, 2); - const tokens1 = tokens.slice(2); - const balances = await api.multiCall({ abi: abi.see_s1ftm_circ, calls: vaults0 }) - const balances1 = await api.multiCall({ abi: abi.see_s1tomb_circ, calls: vaults1 }) - api.addTokens(tokens0, balances) - api.addTokens(tokens1, balances1) - - const chainApi = new sdk.ChainApi({ chain: api.chain, block: api.block }) - chainApi.sumTokens({ tokensAndOwners2: [tokens, vaults] }) - Object.entries(chainApi.getBalances()).forEach(([token, balance]) => { - api.add(token, balance * -1, { skipChain: true }) - }) - return api.getBalances() -} - -module.exports = { - fantom: { - tvl, - borrowed, - pool2: pool2( - [contracts.pool2, contracts.pool2], - [contracts.daiPool2, contracts.ftmPool2], - ) - } -} diff --git a/projects/xbased/index.js b/projects/xbased/index.js deleted file mode 100644 index a318f6c24bd..00000000000 --- a/projects/xbased/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'base': '0x7a9ACeB13bc00eEC11460A5D7122793461Da96E0' -}) \ No newline at end of file diff --git a/projects/xbluefinance/index.js b/projects/xbluefinance/index.js deleted file mode 100644 index 9649d9da6a4..00000000000 --- a/projects/xbluefinance/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - -module.exports = masterchefExports({ - chain: 'arbitrum', - useDefaultCoreAssets: true, - masterchef: '0xd139490F63d220CacA960DA9E40Ad59Fc3AdcB15', - nativeToken: '0x50AA7A13B28EeA97dc6C3f5E8aaa7fE512e7306D', -}) \ No newline at end of file diff --git a/projects/xcarnival/index.js b/projects/xcarnival/index.js deleted file mode 100644 index e7ba80ffb63..00000000000 --- a/projects/xcarnival/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); - -const XETH = '0x6CC71cD03a70b4eF06d688716F611cE368f80530' - -async function borrowed(api) { - const bal = await api.call({ abi: 'uint256:totalBorrows', target: XETH}) - api.addGasToken(bal) -} - -module.exports = { - methodology: "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.", - ethereum: { - tvl: sumTokensExport({ owner: XETH, tokens: [nullAddress]}), - borrowed, - }, -} \ No newline at end of file diff --git a/projects/xdai/index.js b/projects/xdai/index.js deleted file mode 100644 index 87cae71d774..00000000000 --- a/projects/xdai/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const tokenAddresses = [ - ADDRESSES.ethereum.SAI, - ADDRESSES.ethereum.DAI, - //'0x06af07097c9eeb7fd685c692751d5C66db49c215' // CHAI - "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", // cDAI -]; -const owners = [ - "0x88ad09518695c6c3712AC10a214bE5109a655671", - "0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6", - "0xf6A78083ca3e2a662D6dd1703c939c8aCE2e268d", -]; -const xDaiBridge = "0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016"; -const owlToken = "0x1a5f9352af8af974bfc03399e3767df6370d82e4"; -const owlBridge = "0xed7e6720ac8525ac1aeee710f08789d02cd87ecb"; -async function eth(api) { - const ownerTokens = [ - [tokenAddresses, xDaiBridge], - [[owlToken], owlBridge], - ]; - return sumTokens2({ api, ownerTokens, owners, fetchCoValentTokens: true }); -} - -module.exports = { - ethereum: { - tvl: eth, - }, - start: '2018-10-08', -}; diff --git a/projects/xdao/api.js b/projects/xdao/api.js deleted file mode 100644 index def8373ca25..00000000000 --- a/projects/xdao/api.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getExports } = require('../helper/heroku-api') -const indexExports = require('../xdao') -const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) - -module.exports = { - timetravel: false, - ...getExports("xdao", chainKeys), - hallmarks: [ - ['2022-10-24', 'Remove governance tokens from tvl'], - ], -} diff --git a/projects/xdao/apiCache.js b/projects/xdao/apiCache.js deleted file mode 100644 index 2fd1d98e646..00000000000 --- a/projects/xdao/apiCache.js +++ /dev/null @@ -1,17 +0,0 @@ - -const config = { - ethereum: { - chainId: 1, blacklistedTokens: [ - '0x71eeba415a523f5c952cc2f06361d5443545ad28', // XDAO - ] - }, -} - - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async () => { - return {} - } - } -}) diff --git a/projects/xdefi/index.js b/projects/xdefi/index.js deleted file mode 100644 index 96ceba93ad4..00000000000 --- a/projects/xdefi/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0x23c088198347edb873946fcff77e42401a1a93d2', - eventAbi: 'event LOG_NEW_POOL(address indexed caller, address indexed pool)', - onlyArgs: true, - fromBlock: 12028810, - }) - const pools = logs.map(l => l.pool) - const tokens = await api.multiCall({ abi: 'address[]:getFinalTokens', calls: pools}) - return api.sumTokens({ ownerTokens: pools.map((v, i) => [tokens[i], v])}) -} - -module.exports = { - ethereum: { - tvl - }, -} diff --git a/projects/xdollar-finance/index.js b/projects/xdollar-finance/index.js deleted file mode 100644 index 842abba049d..00000000000 --- a/projects/xdollar-finance/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { staking } = require('../helper/staking') -const { getLiquityTvl } = require('../helper/liquity') - -const optionsStable = { nonNativeCollateralToken: true, abis: { collateralToken: 'address:collTokenAddress', activePool: 'address:stableCollActivePool' } } -const options = { nonNativeCollateralToken: true, abis: { collateralToken: 'address:collToken' } } -const optionsIOTX = { nonNativeCollateralToken: true, abis: { collateralToken: 'address:collTokenAddress' } } - -module.exports = { - iotex: { - tvl: sdk.util.sumChainTvls([ - ...[ - '0x9831a3BF768f32202bBFA5369F888DC88CB31b41', - '0x511D2869910ECE987095eCb5aB4b58c38213Ed51', - '0x0BD0cdBf61975f4Cc3E77f595dA8CE4F5f559D0e', - '0x705CA68990e63a54C6df0131DBf5e10517abF3ce', - ].map(i => getLiquityTvl(i, optionsStable)), - getLiquityTvl('0x366D48c04B0d315acF27Bd358558e92D4e2E9f3D', optionsIOTX), - getLiquityTvl('0x7204e2f210865aA1854F33B3532ab2DEb386CB59', optionsIOTX), - ]), - }, - ethereum: { - tvl: sdk.util.sumChainTvls([ - getLiquityTvl("0x7ee5175dFBD7c66Aa00043493334845376E43a8a", options), - getLiquityTvl("0x675CD7d43d7665f851997B7F0f2B0265a213BAB8", options), - getLiquityTvl("0x1e49892c0d0D4455bbbA633EeDaDd6d26224369e", optionsStable), - ]) - }, - arbitrum: { - tvl: getLiquityTvl("0x561d2d58bdad7a723a2cf71e8909a409dc2112ec"), - staking: staking('0xc3fbc4056689cfab3f23809aa25004899ff4d75a', '0x9eF758aC000a354479e538B8b2f01b917b8e89e7'), - }, - polygon: { - tvl: getLiquityTvl("0x68738A47d40C34d890168aB7B612A6f649f395e4"), - staking: staking('0x3509f19581afedeff07c53592bc0ca84e4855475', '0x3dc7b06dd0b1f08ef9acbbd2564f8605b4868eea'), - }, - avax: { - tvl: getLiquityTvl("0x561d2d58bdad7a723a2cf71e8909a409dc2112ec"), - staking: staking('0x68738a47d40c34d890168ab7b612a6f649f395e4', '0x9ef758ac000a354479e538b8b2f01b917b8e89e7'), - }, - hallmarks: [ - ['2022-10-30', 'XUSD is no longer counted as part of tvl'], - ], -}; diff --git a/projects/xei/index.js b/projects/xei/index.js deleted file mode 100644 index fe08b8c3f91..00000000000 --- a/projects/xei/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const { data } = await getConfig('xei', 'https://app.xei.finance/indexer/1329/xei/poolList?page=1&pageSize=999') - const transformToken = i => i === ADDRESSES.null ? ADDRESSES.sei.WSEI : i - const ownerTokens = data.list.map(({ detail: i }) => ([[i.Token0, i.Token1].map(transformToken), i.Pool])) - return sumTokens2({ api, ownerTokens, }) -} - -module.exports = { - sei: { tvl }, -} \ No newline at end of file diff --git a/projects/xena/index.js b/projects/xena/index.js deleted file mode 100644 index 0326767d4b1..00000000000 --- a/projects/xena/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { pool2 } = require("../helper/pool2"); - -const Contracts = { - Pool: "0x22787c26Bb0Ab0d331Eb840ff010855a70A0DcA6", - Chef: "0xB6a34b9C6CeeE0D821BDBD98Bc337639fdD5663b", - XEN_ETH_LP: "0xf32fdB63d0A976Cc6ceC939f2824FCF7F9819F68", - LOCKED_XEN_ETH_LP: "0x57A480007DFbce2803147DCcBeAFAEb50BDe64Fb", -}; - -async function tvl(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/xenophon/index.js b/projects/xenophon/index.js deleted file mode 100644 index e7f1c07465e..00000000000 --- a/projects/xenophon/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const xph = "0x3e29633846E8b857B7f6d7f293F895186804264b"; -const treasury = "0x4b69C32450cE85d76aC94215fb81C21B434696eA"; -const staking = "0xE90afe3349E42f416406c592f4B7192265085695"; -const treasurytokens = [ - [ADDRESSES.bsc.BUSD, false], // BUSD - ["0x5866d1032b5b6001429Bf2A47B830bDC0DD138EA", true] // XPH-BUSD CAKE LP -] - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasurytokens, "bsc", staking, xph, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/xensa/index.js b/projects/xensa/index.js deleted file mode 100644 index 77de5654ea8..00000000000 --- a/projects/xensa/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - methodology: 'Using the same methodology applied to other lending platforms, TVL for Xensa consists deposits made to the protocol and borrowed tokens are not counted.', - okexchain:{ - tvl: () => 0 - }, - deadFrom: '2022-05-05' -}; diff --git a/projects/xenwave/index.js b/projects/xenwave/index.js deleted file mode 100644 index 5b6439dbda1..00000000000 --- a/projects/xenwave/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens") - -module.exports = uniTvlExport('btn', '0xCba3Dc15Cfbcd900cF8133E39257c26727E86e3a') \ No newline at end of file diff --git a/projects/xeus/api.js b/projects/xeus/api.js deleted file mode 100644 index 606277d1561..00000000000 --- a/projects/xeus/api.js +++ /dev/null @@ -1,4 +0,0 @@ -const index = require('./index') -const { ohmStaking } = require('../helper/treasury') - -module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/xeus/index.js b/projects/xeus/index.js deleted file mode 100644 index 835a285d08a..00000000000 --- a/projects/xeus/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require('../helper/ohm') - -const treasury = "0xF1081555011689cCCfa29CCA6a9E6AFcB907B0bC" -module.exports = ohmTvl(treasury, [ - //BUSD - [ADDRESSES.bsc.BUSD, false], - //DAI - ["0xE50c40B0B84946D7491337613059F181700ddBEa", false], - //pancakeswap LP - ["0x76129f6e590f7aaac39b9804048a18060297a79b", true], - ], "bsc", "0x4669A93D251633C9983103529783eD1E4E36F20c", "0x4E141769366634D9c4e498257Fa7EC204d22b634") \ No newline at end of file diff --git a/projects/xfai/index.js b/projects/xfai/index.js deleted file mode 100644 index c8578d09a0b..00000000000 --- a/projects/xfai/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const FACTORY_ADDRESS = "0xa5136eAd459F0E61C99Cec70fe8F5C24cF3ecA26"; - -module.exports = { - methodology: `Sums on-chain tvl by getting pools using xfai factory`, - start: '2023-08-18' , // Aug-18-2023 08:39:25 AM +UTC - linea: { - tvl: async (api) => { - const pools = await api.fetchList({ lengthAbi: "uint256:allPoolsLength", itemAbi: "function allPools(uint256) external view returns (address)", target: FACTORY_ADDRESS}) - const tokens = await api.multiCall({ abi: 'address:poolToken', calls: pools}) - const ownerTokens = pools.map((v, i) => [[tokens[i], ADDRESSES.linea.WETH], v]) - return api.sumTokens({ ownerTokens}) - }, - }, -}; diff --git a/projects/xfamtech/index.js b/projects/xfamtech/index.js deleted file mode 100644 index 6fc25a52bd8..00000000000 --- a/projects/xfamtech/index.js +++ /dev/null @@ -1,11 +0,0 @@ - -const { sumTokensExport } = require('../helper/sumTokens') -const factory = '0x1c0a36e26a8f822e0d81f20a5a562b16a8f8a3dfd99801367dd2aea8f1a87a2' -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - timetravel: false, - starknet: { - tvl: sumTokensExport({ owner: '0x0568c49d2ac0f614b69f675250df807c7baa62ef2ab77c4dd101be194f79c314', tokens: [ADDRESSES.starknet.ETH]}), - } -} \ No newline at end of file diff --git a/projects/xfi-native-staking/index.js b/projects/xfi-native-staking/index.js deleted file mode 100644 index 6562b12839a..00000000000 --- a/projects/xfi-native-staking/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -// XFI Native Staking contract on CrossFi chain -const STAKING_CONTRACT = '0xBe6A45407c8479107Eb08d302420eA6eCAd890C2'; - -module.exports = { - methodology: 'TVL consists of the XFI tokens staked in the native staking contract on CrossFi chain.', - crossfi: { - tvl: () => ({}), // No TVL outside of staking - staking: sumTokensExport({ owners: [STAKING_CONTRACT], tokens: [ADDRESSES.null] }), - } -}; diff --git a/projects/xflows/index.js b/projects/xflows/index.js deleted file mode 100644 index 3f5f1f158f0..00000000000 --- a/projects/xflows/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -// xflows factory contract address on WAN chain -const FACTORY = '0xEB3e557f6FdcaBa8dC98BDA833E017866Fc168cb'; -// xflows deployment block on WAN chain -const START_BLOCK = 33432686; - -// 需要排除的池子地址 -const BLACKLISTED_TOKENS = [ - '0xd907b5d927e70aa431fd6a79f91133596414c8a2', - '0xc75180d1b5498d8b998dfc2d30e819ca39c6e7d9', -]; - -module.exports = uniV3Export({ - wan: { - factory: FACTORY, - fromBlock: START_BLOCK, - blacklistedTokens: BLACKLISTED_TOKENS, - permitFailure: true, // 允许单个调用失败 - }, -}) diff --git a/projects/xion/index.js b/projects/xion/index.js deleted file mode 100644 index f51674b98a8..00000000000 --- a/projects/xion/index.js +++ /dev/null @@ -1,75 +0,0 @@ -const { queryV1Beta1 } = require("../helper/chain/cosmos"); - -//https://raw.githubusercontent.com/cosmos/chain-registry/refs/heads/master/xion/assetlist.json -//https://api.xion-mainnet-1.burnt.com/cosmos/bank/v1beta1/denoms_metadata -const assetMap = { - uxion: { - decimals: 6, - id: "xion-2", - }, - "ibc/0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B": { - decimals: 6, - id: "osmo", - }, - "ibc/056EA54C3D9B49B3C0418955A27980A91DD4F210914BFE240A1DB19E27895ECA": { - decimals: 6, - id: "kyve-network", - }, - "ibc/6490A7EAB61059BFC1CDDEB05917DD70BDF3A611654162A1A47DB930D40D8AF4": { - decimals: 6, - id: "axlusdc", - }, - "ibc/9463E39D230614B313B487836D13A392BD1731928713D4C8427A083627048DB3": { - decimals: 6, - id: "axelar", - }, - "ibc/AAD7136DD626569C3DDE7C5F764968BB2E939875EFC568AE5712B62081850814": { - decimals: 18, - id: "axlweth", - }, - "ibc/DBE9697AC1044255A305A2034AD360B4152632BFBFB5785234731F60196B9645": { - decimals: 6, - id: "elys-network", - }, - "ibc/E706A0C6CACB374ADC2BCF6A74FE1B260840FC822E45DCB776DEA962A57FED30": { - decimals: 18, - id: "arbitrum", - }, - "ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349": { - decimals: 6, - id: "usd-coin", - }, -}; - -async function tvl() { - const supplyData = await queryV1Beta1({ - chain: "xion", - url: "/bank/v1beta1/supply", - }); - const balances = {}; - - supplyData.supply.forEach(({ denom, amount }) => { - if (!assetMap[denom]) return; - const { decimals, id } = assetMap[denom]; - balances[id] = amount / 10 ** decimals; - }); - - return balances; -} - -async function staking() { - const stakingData = await queryV1Beta1({ - chain: "xion", - url: "/staking/v1beta1/pool", - }); - return { - xion: stakingData.pool.bonded_tokens / 10 ** assetMap['uxion'].decimals, - }; -} - -module.exports = { - xion: { - tvl, - staking, - }, -}; diff --git a/projects/xlink-btc-lst/index.js b/projects/xlink-btc-lst/index.js deleted file mode 100644 index cb798ae1e1e..00000000000 --- a/projects/xlink-btc-lst/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "Staking tokens via Babylon counts as TVL", - doublecounted:true, - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.xlinkLST }) } -} \ No newline at end of file diff --git a/projects/xlink/index.js b/projects/xlink/index.js deleted file mode 100644 index f031befd7d1..00000000000 --- a/projects/xlink/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/sumTokens"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "Staking tokens via AlexLab counts as TVL", - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.xlink }) }, - ethereum: { - tvl: sumTokensExport({ - owners: [ - "0x7ceC01355aC0791dE5b887e80fd20e391BCB103a", - "0xcD0cb6AA811E1c8cD9A55EcB9Cc83f6a50Bed311", - "0x13b72A19e221275D3d18ed4D9235F8F859626673", - ], - tokens: [ADDRESSES.ethereum.WBTC, ADDRESSES.null], - }), - }, - bsc: { - tvl: sumTokensExport({ - owners: [ - "0x7ceC01355aC0791dE5b887e80fd20e391BCB103a", - "0xcD0cb6AA811E1c8cD9A55EcB9Cc83f6a50Bed311", - "0xFFda60ed91039Dd4dE20492934bC163e0F61e7f5", - ], - tokens: [ - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.BTCB, - ], - }), - }, - stacks: { - tvl: sumTokensExport({ - owners: [ - "SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.cross-bridge-registry-v2-01", - "SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.btc-peg-out-endpoint-v2-01", - ], - blacklistedTokens: [ - "SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-abtc::bridged-btc", - "SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex::alex", - ], - }), - }, - bsquared: { - tvl: sumTokensExport({ - owners: [ - '0x10eeCCc43172458F0ff9Cc3E9730aB256fAEE32e' - ], - tokens: [ - ADDRESSES.bsquared.UBTC - ] - }), - } -}; diff --git a/projects/xlsd/index.js b/projects/xlsd/index.js deleted file mode 100644 index 6b2d0f04b4d..00000000000 --- a/projects/xlsd/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const LSD_TOKENS = ['0xf40F19CAFaAA25bF9B52134646c6E325E76E0e93']; -const STAKING_POOL_ADDRESS = ['0x61CeC27ba136347ddA0AEDBe29a9b8219C32fF04']; - -module.exports = { - methodology: "TVL of Staked ETH & LSD tokens in the StakingPool contracts", - arbitrum: { - tvl: () => ({}), - staking: sumTokensExport({ tokensAndOwners2: [LSD_TOKENS, STAKING_POOL_ADDRESS], }), - }, -}; diff --git a/projects/xmaspast/index.js b/projects/xmaspast/index.js deleted file mode 100644 index 540fa16dba5..00000000000 --- a/projects/xmaspast/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); - -module.exports = masterchefExports({ - chain: 'fantom', - nativeToken: '0xD3111Fb8BDf936B11fFC9eba3b597BeA21e72724', - masterchef: '0x138c4dB5D4Ab76556769e4ea09Bce1D452c2996F', -}) \ No newline at end of file diff --git a/projects/xops-finance/index.js b/projects/xops-finance/index.js deleted file mode 100644 index a4b175f52c5..00000000000 --- a/projects/xops-finance/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getUniTVL} = require("../helper/unknownTokens"); - -module.exports = { - op_bnb: { - tvl: getUniTVL({ factory: "0x6b5F5C4E0076c5841726a3B20B87Eb0709741842", useDefaultCoreAssets: true,}) - }, -}; \ No newline at end of file diff --git a/projects/xoxno-liquid-staking/index.js b/projects/xoxno-liquid-staking/index.js deleted file mode 100644 index 39923753c48..00000000000 --- a/projects/xoxno-liquid-staking/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { call, } = require("../helper/chain/elrond"); - -const ADDRESSES = require('../helper/coreAssets.json'); - -const xoxno = "XOXNO-c1293a"; - -const staking = async (api) => { - const staked = await call({ - target: 'erd1qqqqqqqqqqqqqpgqs5w0wfmf5gw7qae82upgu26cpk2ug8l245qszu3dxf', - abi: "getVirtualXOXNOReserve", - responseTypes: ["number"], - }); - api.addTokens([xoxno], [staked.toString()]); -}; - -const tvl = async () => { - return { ['elrond:' + ADDRESSES.null]: await call({ target: 'erd1qqqqqqqqqqqqqpgq6uzdzy54wnesfnlaycxwymrn9texlnmyah0ssrfvk6', abi: 'getVirtualEgldReserve', responseTypes: ['number'] }) } -}; - -module.exports = { - timetravel: false, - elrond: { - staking, - tvl, - }, -}; diff --git a/projects/xpla/index.js b/projects/xpla/index.js deleted file mode 100644 index 19430cd40f3..00000000000 --- a/projects/xpla/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getFactoryTvl } = require('../terraswap/factoryTvl') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "Liquidity on the DEX", - xpla: { - tvl: getFactoryTvl('xpla1j33xdql0h4kpgj2mhggy4vutw655u90z7nyj4afhxgj4v5urtadq44e3vd') - }, -} \ No newline at end of file diff --git a/projects/xpress/index.js b/projects/xpress/index.js deleted file mode 100644 index ffe0a6e1d4a..00000000000 --- a/projects/xpress/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -const lobsConfigs = [ - { - factory: '0xB9A10c289eEb586556ed381f3d9E44F10Bda243f', - fromBlock: 2193200, - }, - { - factory: '0x8829F42652135327Fa2AD92F11c7097d1a4B2299', - fromBlock: 40894000, - }, -]; - -const vaultConfigs = [ - { - factory: '0x130A7055601f340860CF7a09E042977307810823', - fromBlock: 11273100, - }, -]; - -const createdLOBEventAbi = "event OnchainCLOBCreated(address indexed creator, address OnchainCLOB, address tokenXAddress, address tokenYAddress, bool supports_native_eth, uint256 scaling_token_x, uint256 scaling_token_y, address administrator, address marketmaker, address pauser, bool should_invoke_on_trade, uint64 admin_commission_rate, uint64 total_aggressive_commission_rate, uint64 total_passive_commission_rate, uint64 passive_order_payout)" -const createdVaultEventAbi = "event LPManagerCreated(address indexed creator, address lpManager, address lpManagerImplementation, address liquidityToken)" - -async function tvl(api) { - const ownerTokens = []; - for (const { factory, fromBlock } of lobsConfigs) { - const lobCreatedLogs = await getLogs2({ api, factory, eventAbi: createdLOBEventAbi, fromBlock, }) - ownerTokens.push(...lobCreatedLogs.map(log => [[log.tokenXAddress, log.tokenYAddress], log.OnchainCLOB])) - } - for (const { factory, fromBlock } of vaultConfigs) { - const vaultCreatedLogs = await getLogs2({ api, factory, eventAbi: createdVaultEventAbi, fromBlock, }) - const lpManagers = vaultCreatedLogs.map(log => log.lpManager); - const tokenInfos = await api.fetchList({ lengthAbi: 'getTokensCount', itemAbi: "function tokens(uint256) view returns (address tokenAddress, bool isActive, uint16 targetWeight, uint16 lowerBoundWeight, uint16 upperBoundWeight, uint8 decimals, uint24 oracleConfRel, bytes32 oraclePriceId)", calls: lpManagers, groupedByInput: true, }) - lpManagers.forEach((lpManager, i) => { - const tokens = tokenInfos[i].map(i => i.tokenAddress) - ownerTokens.push([tokens, lpManager]) - }) - } - - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - sonic: { tvl } -} \ No newline at end of file diff --git a/projects/xrayswap/index.js b/projects/xrayswap/index.js deleted file mode 100644 index 3040d33a6d4..00000000000 --- a/projects/xrayswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { masterChefExports } = require("../helper/masterchef"); - -const masterchef = "0xD35a150Ec317a8a187C52FC1164b4D15C0851b84"; -const token = "0x12C415aAFB1A521B42251e972BB7Ce6795F7669b"; - -module.exports = masterChefExports(masterchef, "bsc", token) \ No newline at end of file diff --git a/projects/xrgb/index.js b/projects/xrgb/index.js deleted file mode 100644 index 91c3e3046d7..00000000000 --- a/projects/xrgb/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/brc20"); -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -module.exports = { - methodology: "XRGB as bridge,Unlock ERC404 on all chains", - bitcoin: { tvl: sumTokensExport({ owners: bitcoinAddressBook.xrgb, blacklistedTokens: ['XRGB'] }) } -}; \ No newline at end of file diff --git a/projects/xrise33/index.js b/projects/xrise33/index.js deleted file mode 100644 index edd6c8a78ad..00000000000 --- a/projects/xrise33/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') - -module.exports = uniTvlExports({ - 'xrplevm': '0xa9833699fBB0E3759a3C381DeB43A61Df99e8544' -}, { - abis: { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, hasStablePools: true, -}) diff --git a/projects/xrpl-dex/api.js b/projects/xrpl-dex/api.js deleted file mode 100644 index f76143fb6a2..00000000000 --- a/projects/xrpl-dex/api.js +++ /dev/null @@ -1,193 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const rippleCodec = require("ripple-binary-codec"); -const { PromisePool } = require("@supercharge/promise-pool"); -const { getCache, setCache } = require("../helper/cache"); -const axios = require('axios') - -const NODE_URL = "https://xrplcluster.com"; -const API_XRP = "https://api.xrpscan.com/api/v1/amm/" -const RATE_LIMIT_DELAY_MS = 500; -const MIN_POOL_SIZE = 9500 -const getTimeNow = () => Math.floor(Date.now() / 1000); -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) - -const retry = async (fn, retries = 7, delay) => { - let attempts = 0; - while (attempts < retries) { - try { - return await fn(); - } catch (error) { - attempts++; - console.error(`Attempt ${attempts} failed. Retrying...`); - const currentDelay = delay ? delay : attempts * 1000; - if (attempts >= retries) throw error; - - await sleep(currentDelay); - } - } -}; - -const getLedgerDatas = async (binary, marker, atLedgerIndex) => { - const payload = { - method: "ledger_data", - params: [ - { - ledger_index: atLedgerIndex ?? "validated", - binary, - type: "amm", - ...(marker && { marker }), - }, - ], - }; - - return await retry(async () => { - const { data } = await axios.post(NODE_URL, payload); - - if (data.result && data.result?.state) { - return { - state: data.result.state, - marker: data.result.marker, - }; - } - - throw new Error("Invalid response format from XRPL"); - }); -}; - -let poolIndex = 0; -const getPools = async (nextMarker, isBinary, atLedgerIndex, poolsFound = []) => { - try { - console.log(`${++poolIndex} Fetching pools... Marker: ${nextMarker || 'start'}, Pools found so far: ${poolsFound.length}`); - const { state, marker } = await getLedgerDatas(isBinary, nextMarker, atLedgerIndex); - - if (state && state.length > 0) { - const decodedState = isBinary - ? state.map((entry) => rippleCodec.decode(entry.data)) - : state; - - poolsFound.push( - ...decodedState.map((entry) => ({ - account: entry.Account, - asset1: { currency: entry.Asset.currency, issuer: entry.Asset.issuer }, - asset2: { currency: entry.Asset2.currency, issuer: entry.Asset2.issuer }, - })) - ); - - } - - if (marker) { - await sleep(RATE_LIMIT_DELAY_MS); - return getPools(marker, isBinary, atLedgerIndex, poolsFound); - } - - } catch (error) { - console.error("Failed to fetch pools:", error.message); - } - - return poolsFound; -}; - -const parseReserve = (reserveData) => { - if (!reserveData) return null; - - const isXrp = typeof reserveData === "string"; - return { - currency: isXrp ? ADDRESSES.ripple.XRP : reserveData.currency, - issuer: isXrp ? null : reserveData.issuer, - amount: isXrp ? reserveData : reserveData.value, - }; -}; - -const getReserveDatas = async (pool) => { - return await retry(async () => { - const { data } = await axios.get(API_XRP + pool.account); - - return { - token0: parseReserve(data?.amount), - token1: parseReserve(data?.amount2) - } - }); -}; - -const getAllReservesDatas = async (poolAddresses, atLedgerIndex) => { - const poolsWithReserves = []; - - const { errors } = await PromisePool.withConcurrency(4) - .for(poolAddresses) - .process(async (pool) => { - try { - await sleep(RATE_LIMIT_DELAY_MS); - - const { token0, token1 } = await getReserveDatas(pool, atLedgerIndex); - poolsWithReserves.push({ - pool: pool.account, - token0Reserve: token0, - token1Reserve: token1, - }); - } catch (error) { - console.error("Errors occurred while fetching reserves:", error); - } - }); - - if (errors?.length) console.log(errors) - if (errors.length > 0) throw errors[0] - - return poolsWithReserves; -}; - -const getXrplPools = async () => { - const timeNow = getTimeNow() - const startOfDay = Math.floor(new Date().setUTCHours(0, 0, 0, 0) / 1000); - let { pools: cachedPools = [], marker: lastMarker = null, lastUpdate = 0 } = await getCache('xrpl-dex', 'pools'); - - if (lastUpdate >= startOfDay && cachedPools?.length > MIN_POOL_SIZE) { - console.log(`Pools have already been updated today. Last update: ${new Date(lastUpdate * 1000).toISOString()}`); - return; - } - - console.time("xrpl-dex fetch pool list") - - try { - const pools = await getPools(null, 1); - console.timeEnd("xrpl-dex fetch pool list"); - console.log("Total pools fetched:", pools.length); - const finalMarker = pools.marker || lastMarker - - await setCache('xrpl-dex', 'pools', { pools, marker: finalMarker, lastUpdate: timeNow }); - } catch (error) { - console.error("Error during XRPL pool fetching:", error.message); - console.timeEnd("xrpl-dex fetch pool list"); - } -} - -const getXrplBalances = async (pools) => { - const timeNow = getTimeNow(); - const startOfDay = Math.floor(new Date().setUTCHours(0, 0, 0, 0) / 1000); - const { balanaces: _preBalances, lastUpdate = 0 } = await getCache('xrpl-dex', 'balances') || {}; - - if (lastUpdate >= startOfDay && _preBalances?.length > MIN_POOL_SIZE) { - console.log(`Balances have already been updated today. Last update: ${new Date(lastUpdate * 1000).toISOString()}`); - return; - } - - console.time("Fetching balances for pools"); - - try { - const balances = await getAllReservesDatas(pools); - console.timeEnd("Fetching balances for pools"); - await setCache('xrpl-dex', 'balances', { balances, lastUpdate: timeNow }); - return balances; - } catch (error) { - console.error("Error during balances fetching:", error.message); - } -}; - -const main = async () => { - await getXrplPools(); - const { pools = [] } = await getCache('xrpl-dex', 'pools'); - const seen = new Set(); - const uniquePools = pools.filter(pool => seen.has(JSON.stringify(pool)) ? false : seen.add(JSON.stringify(pool))); - await getXrplBalances(uniquePools) -}; - -main().catch(console.error).finally(() => process.exit(0)); \ No newline at end of file diff --git a/projects/xrpl-dex/index.js b/projects/xrpl-dex/index.js deleted file mode 100644 index 6e789599aac..00000000000 --- a/projects/xrpl-dex/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const { getCache } = require("../helper/cache"); -const { transformDexBalances } = require("../helper/portedTokens"); - -const tvl = async (api) => { - const { balances = [] } = await getCache('xrpl-dex', 'balances'); - if (balances.length < 9500) throw new Error('No balances found') - - const tvl = await transformDexBalances({ - chain: 'ripple', - data: balances - .filter(i => i.token0Reserve && i.token1Reserve) - .map(i => ({ - token0: i.token0Reserve.currency, - token0Bal: i.token0Reserve.amount, - token1: i.token1Reserve.currency, - token1Bal: i.token1Reserve.amount, - })) - }) - api.addCGToken('ripple', tvl?.XRP / 1e6) -} - -module.exports = { - methodology: "Finds all AMM pools on XRPL, checks their reserves, calculates TVL (in XRP) for each pool and sums them up.", - ripple: { tvl }, - misrepresentedTokens: true, -}; \ No newline at end of file diff --git a/projects/xrpl-dex/package-lock.json b/projects/xrpl-dex/package-lock.json deleted file mode 100644 index f55185a8570..00000000000 --- a/projects/xrpl-dex/package-lock.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "name": "xrpl-dex", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "xrpl-dex", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "ripple-binary-codec": "^2.1.0", - "xrpl": "^4.0.0" - } - }, - "node_modules/@noble/curves": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", - "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.5.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", - "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", - "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.6.0", - "@noble/hashes": "~1.5.0", - "@scure/base": "~1.1.7" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz", - "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.5.0", - "@scure/base": "~1.1.8" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@xrplf/isomorphic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@xrplf/isomorphic/-/isomorphic-1.0.1.tgz", - "integrity": "sha512-0bIpgx8PDjYdrLFeC3csF305QQ1L7sxaWnL5y71mCvhenZzJgku9QsA+9QCXBC1eNYtxWO/xR91zrXJy2T/ixg==", - "dependencies": { - "@noble/hashes": "^1.0.0", - "eventemitter3": "5.0.1", - "ws": "^8.13.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@xrplf/secret-numbers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@xrplf/secret-numbers/-/secret-numbers-1.0.0.tgz", - "integrity": "sha512-qsCLGyqe1zaq9j7PZJopK+iGTGRbk6akkg6iZXJJgxKwck0C5x5Gnwlb1HKYGOwPKyrXWpV6a2YmcpNpUFctGg==", - "license": "ISC", - "dependencies": { - "@xrplf/isomorphic": "^1.0.0", - "ripple-keypairs": "^2.0.0" - } - }, - "node_modules/bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "engines": { - "node": "*" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" - }, - "node_modules/ripple-address-codec": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-5.0.0.tgz", - "integrity": "sha512-de7osLRH/pt5HX2xw2TRJtbdLLWHu0RXirpQaEeCnWKY5DYHykh3ETSkofvm0aX0LJiV7kwkegJxQkmbO94gWw==", - "dependencies": { - "@scure/base": "^1.1.3", - "@xrplf/isomorphic": "^1.0.0" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/ripple-binary-codec": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-2.1.0.tgz", - "integrity": "sha512-q0GAx+hj3UVcDbhXVjk7qeNfgUMehlElYJwiCuIBwqs/51GVTOwLr39Ht3eNsX5ow2xPRaC5mqHwcFDvLRm6cA==", - "dependencies": { - "@xrplf/isomorphic": "^1.0.1", - "bignumber.js": "^9.0.0", - "ripple-address-codec": "^5.0.0" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/ripple-keypairs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-2.0.0.tgz", - "integrity": "sha512-b5rfL2EZiffmklqZk1W+dvSy97v3V/C7936WxCCgDynaGPp7GE6R2XO7EU9O2LlM/z95rj870IylYnOQs+1Rag==", - "license": "ISC", - "dependencies": { - "@noble/curves": "^1.0.0", - "@xrplf/isomorphic": "^1.0.0", - "ripple-address-codec": "^5.0.0" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xrpl": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xrpl/-/xrpl-4.0.0.tgz", - "integrity": "sha512-VZm1lQWHQ6PheAAFGdH+ISXKvqB2hZDQ0w4ZcdAEtmqZQXtSIVQHOKPz95rEgGANbos7+XClxJ73++joPhA8Cw==", - "license": "ISC", - "dependencies": { - "@scure/bip32": "^1.3.1", - "@scure/bip39": "^1.2.1", - "@xrplf/isomorphic": "^1.0.1", - "@xrplf/secret-numbers": "^1.0.0", - "bignumber.js": "^9.0.0", - "eventemitter3": "^5.0.1", - "ripple-address-codec": "^5.0.0", - "ripple-binary-codec": "^2.1.0", - "ripple-keypairs": "^2.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - } - } -} diff --git a/projects/xrpl-dex/package.json b/projects/xrpl-dex/package.json deleted file mode 100644 index ea7ef196a40..00000000000 --- a/projects/xrpl-dex/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "xrpl-dex", - "version": "1.0.0", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "MIT", - "description": "", - "dependencies": { - "ripple-binary-codec": "^2.1.0", - "xrpl": "^4.0.0" - } -} diff --git a/projects/xrpl-dex/run.sh b/projects/xrpl-dex/run.sh deleted file mode 100644 index 6f1fe596c7f..00000000000 --- a/projects/xrpl-dex/run.sh +++ /dev/null @@ -1,3 +0,0 @@ -npm i -cd .. && npm i && cd xrpl-dex -node api.js \ No newline at end of file diff --git a/projects/xrune/index.js b/projects/xrune/index.js deleted file mode 100644 index 2851dc77b5f..00000000000 --- a/projects/xrune/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { staking } = require("../helper/staking.js"); - - -const token = "0x69fa0feE221AD11012BAb0FdB45d444D3D2Ce71c"; -const ethStaking = [ - "0x93f5dc8bc383bb5381a67a67516a163d1e56012a", //Staking - "0x2a092e401507dD4877cCd0b4Ee70B769452DbB7a", //2-Month Vault - "0xc20434f595c32B5297A737Cb173382Dd2485C2cC", //4-Month Vault - "0x8ba0C510Da4507D1F5f73ff9E1FcD14Edc819EB2", //6-Month Vault -]; - -module.exports = { - methodology: `TVL comes from the Staking Vaults and Launchpad Tiers`, - ethereum: { - tvl: () => ({}), - staking: staking([...ethStaking, '0x817ba0ecafD58460bC215316a7831220BFF11C80'], token), - }, -}; diff --git a/projects/xsigma/index.js b/projects/xsigma/index.js deleted file mode 100644 index 349a39da190..00000000000 --- a/projects/xsigma/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); - -const SigThreePoolContract = "0x3333333ACdEdBbC9Ad7bda0876e60714195681c5"; -const USDC = ADDRESSES.ethereum.USDC; -const DAI = ADDRESSES.ethereum.DAI; -const USDT = ADDRESSES.ethereum.USDT; - -const sigMasterchefContract = "0x98C32b59a0AC00Cd33750427b1A317eBcf84D0F7"; -const SIG = "0x7777777777697cfeecf846a76326da79cc606517"; -const SIG_ETH_UNIV2 = "0x23b7e6932cb873b8696afba077c4a2486b1c862e"; - -async function ethTvl(api) { - return api.sumTokens({ owner: SigThreePoolContract, tokens: [USDC, DAI, USDT] }); -} - -module.exports = { - ethereum: { - staking: staking(sigMasterchefContract, SIG), - pool2: pool2(sigMasterchefContract, SIG_ETH_UNIV2), - tvl: ethTvl, - }, - methodology: - "Counts tvl of Stablecoins(USDC, DAI and USDT) deposited through SigThreePoolContract Contract", -}; diff --git a/projects/xspswap-v3/index.js b/projects/xspswap-v3/index.js deleted file mode 100644 index b1d5865bf13..00000000000 --- a/projects/xspswap-v3/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') -const factory = '0x30F317A9EC0f0D06d5de0f8D248Ec3506b7E4a8A' - -module.exports = uniV3Export({ - xdc: { factory, fromBlock: 59782067, methodology: 'TVL accounts for the liquidity on all AMM pools taken from the factory contract', permitFailure: true }, -}) \ No newline at end of file diff --git a/projects/xspswap/index.js b/projects/xspswap/index.js deleted file mode 100644 index 5c87f6604ab..00000000000 --- a/projects/xspswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - xdc: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x347D14b13a68457186b2450bb2a6c2Fd7B38352f', - }) - }, -} \ No newline at end of file diff --git a/projects/xstocks/index.js b/projects/xstocks/index.js deleted file mode 100644 index 51d38db387c..00000000000 --- a/projects/xstocks/index.js +++ /dev/null @@ -1,95 +0,0 @@ -const { getTokenSupplies, sumTokens2 } = require('../helper/solana') - -const data = [ - { "name": "Honeywell xStock", "p": { "solana": "XsRbLZthfABAPAfumWNEJhPyiKDW6TvDVeAeW7oKqA2", "arbitrum-one": "0x62a48560861b0b451654bfffdb5be6e47aa8ff1b" } }, - { "name": "Amazon xStock", "p": { "solana": "Xs3eBt7uRfJX8QUs4suhyU8p2M6DoUDrJyWBa8LLZsg", "arbitrum-one": "0x3557ba345b01efa20a1bddc61f573bfd87195081" } }, - { "name": "Coinbase xStock", "p": { "solana": "Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu", "arbitrum-one": "0x364f210f430ec2448fc68a49203040f6124096f0" } }, - { "name": "Visa xStock", "p": { "solana": "XsqgsbXwWogGJsNcVZ3TyVouy2MbTkfCFhCGGGcQZ2p", "arbitrum-one": "0x2363fd1235c1b6d3a5088ddf8df3a0b3a30c5293" } }, - { "name": "Robinhood xStock", "p": { "solana": "XsvNBAYkrDRNhA7wPHQfX3ZUXZyZLdnCQDfHZ56bzpg", "arbitrum-one": "0xe1385fdd5ffb10081cd52c56584f25efa9084015" } }, - { "name": "AbbVie xStock", "p": { "solana": "XswbinNKyPmzTa5CskMbCPvMW6G5CMnZXZEeQSSQoie", "arbitrum-one": "0xfbf2398df672cee4afcc2a4a733222331c742a6a" } }, - { "name": "Alphabet xStock", "p": { "solana": "XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN", "arbitrum-one": "0xe92f673ca36c5e2efd2de7628f815f84807e803f" } }, - { "name": "Gamestop xStock", "p": { "solana": "Xsf9mBktVB9BSU5kf4nHxPq5hCBJ2j2ui3ecFGxPRGc", "arbitrum-one": "0xe5f6d3b2405abdfe6f660e63202b25d23763160d" } }, - { "name": "Microsoft xStock", "p": { "solana": "XspzcW1PRtgf6Wj92HCiZdjzKCyFekVD8P5Ueh3dRMX", "arbitrum-one": "0x5621737f42dae558b81269fcb9e9e70c19aa6b35" } }, - { "name": "McDonald's xStock", "p": { "solana": "XsqE9cRRpzxcGKDXj1BJ7Xmg4GRhZoyY1KpmGSxAWT2", "arbitrum-one": "0x80a77a372c1e12accda84299492f404902e2da67" } }, - { "name": "Johnson & Johnson xStock", "p": { "solana": "XsGVi5eo1Dh2zUpic4qACcjuWGjNv8GCt3dm5XcX6Dn", "arbitrum-one": "0xdb0482cfad4789798623e64b15eeba01b16e917c" } }, - { "name": "Thermo Fisher xStock", "p": { "solana": "Xs8drBWy3Sd5QY3aifG9kt9KFs2K3PGZmx7jWrsrk57", "arbitrum-one": "0xaf072f109a2c173d822a4fe9af311a1b18f83d19" } }, - { "name": "Medtronic xStock", "p": { "solana": "XsDgw22qRLTv5Uwuzn6T63cW69exG41T6gwQhEK22u2", "arbitrum-one": "0x0588e851ec0418d660bee81230d6c678daf21d46" } }, - { "name": "MicroStrategy xStock", "p": { "solana": "XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ", "arbitrum-one": "0xae2f842ef90c0d5213259ab82639d5bbf649b08e" } }, - { "name": "Eli Lilly xStock", "p": { "solana": "Xsnuv4omNoHozR6EEW5mXkw8Nrny5rB3jVfLqi6gKMH", "arbitrum-one": "0x19c41ea77b34bbdee61c3a87a75d1abda2ed0be4" } }, - { "name": "Marvell xStock", "p": { "solana": "XsuxRGDzbLjnJ72v74b7p9VY6N66uYgTCyfwwRjVCJA", "arbitrum-one": "0xeaad46f4146ded5a47b55aa7f6c48c191deaec88" } }, - { "name": "Gold xStock", "p": { "solana": "Xsv9hRk1z5ystj9MhnA7Lq4vjSsLwzL2nxrwmwtD3re", "arbitrum-one": "0x2380f2673c640fb67e2d6b55b44c62f0e0e69da9" } }, - { "name": "SP500 xStock", "p": { "solana": "XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W", "arbitrum-one": "0x90a2a4c76b5d8c0bc892a69ea28aa775a8f2dd48" } }, - { "name": "Circle xStock", "p": { "solana": "XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1", "arbitrum-one": "0xfebded1b0986a8ee107f5ab1a1c5a813491deceb" } }, - { "name": "TQQQ xStock", "p": { "solana": "XsjQP3iMAaQ3kQScQKthQpx9ALRbjKAjQtHg6TFomoc", "arbitrum-one": "0xfdddb57878ef9d6f681ec4381dcb626b9e69ac86" } }, - { "name": "Vanguard xStock", "p": { "solana": "XsssYEQjzxBCFgvYFFNuhJFBeHNdLWYeUSP8F45cDr9", "arbitrum-one": "0xbd730e618bcd88c82ddee52e10275cf2f88a4777" } }, - { "name": "Amber xStock", "p": { "solana": "XsaQTCgebC2KPbf27KUhdv5JFvHhQ4GDAPURwrEhAzb", "arbitrum-one": "0x2f9a35ab5ddfbc49927bfdeab98a86c53dc6e763" } }, - { "name": "Nasdaq xStock", "p": { "solana": "Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ", "arbitrum-one": "0xa753a7395cae905cd615da0b82a53e0560f250af" } }, - { "name": "DFDV xStock", "p": { "solana": "Xs2yquAgsHByNzx68WJC55WHjHBvG9JsMB7CWjTLyPy", "arbitrum-one": "0x521860bb5df5468358875266b89bfe90d990c6e7" } }, - { "name": "Comcast xStock", "p": { "solana": "XsvKCaNsxg2GN8jjUmq71qukMJr7Q1c5R2Mk9P8kcS8", "arbitrum-one": "0xbc7170a1280be28513b4e940c681537eb25e39f4" } }, - { "name": "Goldman Sachs xStock", "p": { "arbitrum-one": "0x3ee7e9b3a992fd23cd1c363b0e296856b04ab149" } }, - { "name": "Oracle xStock", "p": { "arbitrum-one": "0x548308e91ec9f285c7bff05295badbd56a6e4971" } }, - { "name": "Apple xStock", "p": { "arbitrum-one": "0x9d275685dc284c8eb1c79f6aba7a63dc75ec890a" } }, - { "name": "Exxon Mobil xStock", "p": { "arbitrum-one": "0xeedb0273c5af792745180e9ff568cd01550ffa13" } }, - { "name": "Pfizer xStock", "p": { "arbitrum-one": "0x1ac765b5bea23184802c7d2d497f7c33f1444a9e" } }, - { "name": "JPMorgan Chase xStock", "p": { "arbitrum-one": "0xd9fc3e075d45254a1d834fea18af8041207dea0a" } }, - { "name": "Accenture xStock", "p": { "arbitrum-one": "0x03183ce31b1656b72a55fa6056e287f50c35bbeb" } }, - { "name": "Cisco xStock", "p": { "arbitrum-one": "0x053c784cd87b74f42e0c089f98643e79c1a3ff16" } }, - { "name": "UnitedHealth xStock", "p": { "solana": "XszvaiXGPwvk2nwb3o9C1CX4K6zH8sez11E6uyup6fe", "arbitrum-one": "0x167a6375da1efc4a5be0f470e73ecefd66245048" } }, - { "name": "Danaher xStock", "p": { "arbitrum-one": "0xdba228936f4079daf9aa906fd48a87f2300405f4" } }, - { "name": "PepsiCo xStock", "p": { "solana": "Xsv99frTRUeornyvCfvhnDesQDWuvns1M852Pez91vF", "arbitrum-one": "0x36c424a6ec0e264b1616102ad63ed2ad7857413e" } }, - { "name": "Chevron xStock", "p": { "solana": "XsNNMt7WTNA2sV3jrb1NNfNgapxRF5i4i6GcnTRRHts", "arbitrum-one": "0xad5cdc3340904285b8159089974a99a1a09eb4c0" } }, - { "name": "Abbott xStock", "p": { "solana": "XsHtf5RpxsQ7jeJ9ivNewouZKJHbPxhPoEy6yYvULr7", "arbitrum-one": "0x89233399708c18ac6887f90a2b4cd8ba5fedd06e" } }, - { "name": "CrowdStrike xStock", "p": { "arbitrum-one": "0x214151022c2a5e380ab80cdac31f23ae554a7345" } }, - { "name": "AstraZeneca xStock", "p": { "arbitrum-one": "0x5d642505fe1a28897eb3baba665f454755d8daa2" } }, - { "name": "AppLovin xStock", "p": { "arbitrum-one": "0x50a1291f69d9d3853def8209cfb1af0b46927be1" } }, - { "name": "Netflix xStock", "p": { "arbitrum-one": "0xa6a65ac27e76cd53cb790473e4345c46e5ebf961" } }, - { "name": "Palantir xStock", "p": { "arbitrum-one": "0x6d482cec5f9dd1f05ccee9fd3ff79b246170f8e2" } }, - { "name": "Salesforce xStock", "p": { "arbitrum-one": "0x4a4073f2eaf299a1be22254dcd2c41727f6f54a2" } }, - { "name": "NVIDIA xStock", "p": { "arbitrum-one": "0xc845b2894dbddd03858fd2d643b4ef725fe0849d" } }, - { "name": "Coca-Cola xStock", "p": { "arbitrum-one": "0xdcc1a2699441079da889b1f49e12b69cc791129b" } }, - { "name": "Bank of America xStock", "p": { "arbitrum-one": "0x314938c596f5ce31c3f75307d2979338c346d7f2" } }, - { "name": "Novo Nordisk xStock", "p": { "arbitrum-one": "0xf9523e369c5f55ad72dbaa75b0a9b92b3d8b147e" } }, - { "name": "International Business Machines xStock", "p": { "arbitrum-one": "0xd9913208647671fe0f48f7f260076b2c6f310aac" } }, - { "name": "Philip Morris xStock", "p": { "arbitrum-one": "0x02a6c1789c3b4fdb1a7a3dfa39f90e5d3c94f4f9" } }, - { "name": "Merck xStock", "p": { "solana": "XsnQnU7AdbRZYe2akqqpibDdXjkieGFfSkbkjX1Sd1X", "arbitrum-one": "0x17d8186ed8f68059124190d147174d0f6697dc40" } }, - { "name": "Linde xStock", "p": { "solana": "XsSr8anD1hkvNMu8XQiVcmiaTP7XGvYu7Q58LdmtE8Z", "arbitrum-one": "0x15059c599c16fd8f70b633ade165502d6402cd49" } }, - { "name": "Tesla xStock", "p": { "solana": "XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB", "arbitrum-one": "0x8ad3c73f833d3f9a523ab01476625f269aeb7cf0" } }, - { "name": "Berkshire Hathaway xStock", "p": { "solana": "Xs6B6zawENwAbWVi7w92rjazLuAr5Az59qgWKcNb45x", "arbitrum-one": "0x12992613fdd35abe95dec5a4964331b1ee23b50d" } }, - { "name": "Mastercard xStock", "p": { "solana": "XsApJFV9MAktqnAc6jqzsHVujxkGm9xcSUffaBoYLKC", "arbitrum-one": "0xb365cd2588065f522d379ad19e903304f6b622c6" } }, - { "name": "Home Depot xStock", "p": { "solana": "XszjVtyhowGjSC5odCqBpW1CtXXwXjYokymrk7fGKD3", "arbitrum-one": "0x766b0cd6ed6d90b5d49d2c36a3761e9728501ba9" } }, - { "name": "Intel xStock", "p": { "solana": "XshPgPdXFRWB8tP1j82rebb2Q9rPgGX37RuqzohmArM", "arbitrum-one": "0xf8a80d1cb9cfd70d03d655d9df42339846f3b3c8" } }, - { "name": "Walmart xStock", "p": { "solana": "Xs151QeqTCiuKtinzfRATnUESM2xTU6V9Wy8Vy538ci", "arbitrum-one": "0x7aefc9965699fbea943e03264d96e50cd4a97b21" } }, - { "name": "Broadcom xStock", "p": { "solana": "XsgSaSvNSqLTtFuyWPBhK9196Xb9Bbdyjj4fH3cPJGo", "arbitrum-one": "0x38bac69cbbd28156796e4163b2b6dcb81e336565" } }, - { "name": "Meta xStock", "p": { "solana": "Xsa62P5mvPszXL1krVUnU5ar38bBSVcWAB6fmPCo5Zu", "arbitrum-one": "0x96702be57cd9777f835117a809c7124fe4ec989a" } }, - { "name": "Procter & Gamble xStock", "p": { "solana": "XsYdjDjNUygZ7yGKfQaB6TxLh2gC6RRjzLtLAGJrhzV", "arbitrum-one": "0xa90424d5d3e770e8644103ab503ed775dd1318fd" } } -] - -const chainMapping = { - arbitrum: 'arbitrum-one', -} - -async function tvl(api) { - const chainKey = chainMapping[api.chain] - const tokens = data.map(stock => stock.p[chainKey]).filter(Boolean) - const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens }) - api.add(tokens, supplies) -} - - -Object.keys(chainMapping).forEach(chain => { - module.exports[chain] = { tvl } -}) - -async function solTvl(api) { - const tokens = data.map(stock => stock.p.solana).filter(Boolean) - const supplies = await getTokenSupplies(tokens) - api.add(tokens, tokens.map((token) => supplies[token] || '0')) - const mintedBalance = await sumTokens2({ balances: {}, owner: 'S7vYFFWH6BjJyEsdrPQpqpYTqLTrPRK6KW3VwsJuRaS', computedTokenAccounts: true, tokens}) - tokens.forEach(token => { - if (mintedBalance['solana:'+token]) { - api.add(token, mintedBalance['solana:'+token] * -1) // exclude pre-minted tokens - } - }) -} - -module.exports.solana = { tvl: solTvl } \ No newline at end of file diff --git a/projects/xsui/index.js b/projects/xsui/index.js deleted file mode 100644 index 2d6e11731f8..00000000000 --- a/projects/xsui/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sui = require("../helper/chain/sui") - -const XSUI_INFO_ID = - "0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a" -const XSUI_COIN_TYPE = - "0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI" -const SUI_COIN_TYPE = - "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" - -async function loadInfo() { - const obj = await sui.getObject(XSUI_INFO_ID) - const totalSupply = BigInt( - obj.fields.lst_treasury_cap.fields.total_supply.fields.value, - ) - const stakedSui = BigInt( - obj.fields.storage.fields.total_sui_supply, - ) ; - return { totalSupply, stakedSui } -} - -async function tvl(api) { - const { stakedSui } = await loadInfo() - - api.add(SUI_COIN_TYPE, stakedSui) -} - -module.exports = { - timetravel: false, - methodology: - "Calculates the amount of SUI staked in xSUI liquid staking contracts.", - sui: { tvl }, -} diff --git a/projects/xswap/index.js b/projects/xswap/index.js deleted file mode 100644 index 63e841b09c9..00000000000 --- a/projects/xswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); - -const factory = '0x3ca837175312070f4E4fF64972a199122Ee03805'; - -module.exports = { - crossfi: { - tvl: getUniTVL({ - factory, - chain: 'crossfi', - useDefaultCoreAssets: true, - }), - }, -}; \ No newline at end of file diff --git a/projects/xsy/index.js b/projects/xsy/index.js deleted file mode 100644 index e0a20783d78..00000000000 --- a/projects/xsy/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -async function tvl(api) { - const totalSupply = await api.call({ - abi: 'erc20:totalSupply', - target: ADDRESSES.avax.UTY, - }) - api.add(ADDRESSES.avax.UTY, totalSupply) -} - -module.exports = { - start: 58017291, // block when UTY contract was deployed - avax: { tvl }, -} diff --git a/projects/xtoken/abi.json b/projects/xtoken/abi.json deleted file mode 100644 index f4acdaab000..00000000000 --- a/projects/xtoken/abi.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "getFundHoldings": "uint256:getFundHoldings", - "getNav": "uint256:getNav", - "totalAllocatedNav": "uint256:totalAllocatedNav", - "getBufferBalance": "uint256:getBufferBalance", - "getRewardsContributionToNav": "uint256:getRewardsContributionToNav", - "getFundKncBalanceTwei": "uint256:getFundKncBalanceTwei", - "debtBalanceOf": "function debtBalanceOf(address account, bytes32 currencyKey) view returns (uint256)", - "getEthBalance": "uint256:getEthBalance", - "getSnxBalance": "uint256:getSnxBalance", - "getFundBalances": "function getFundBalances() view returns (uint256 marketBalance, uint256 bufferBalance)", - "quoteExactInputSingle": "function quoteExactInputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, uint160 sqrtPriceLimitX96) returns (uint256 amountOut)" -} \ No newline at end of file diff --git a/projects/xtoken/constants.js b/projects/xtoken/constants.js deleted file mode 100644 index f46fb868ac0..00000000000 --- a/projects/xtoken/constants.js +++ /dev/null @@ -1,100 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const DEC_18 = 10 ** 18; -const xaaveaAddr = "0x80DC468671316E50D4E9023D3db38D3105c1C146"; -const xaavebAddr = "0x704De5696dF237c5B9ba0De9ba7e0C63dA8eA0Df"; -const xalphaaAddr = "0xA23992a1F8a7412BD646487faC9dbFB8f31D6a85"; -const xinchaAddr = "0x8F6A193C8B3c949E1046f1547C3A3f0836944E4b"; -const xinchbAddr = "0x6B33f15360cedBFB8F60539ec828ef52910acA9b"; -const xkncaAddr = "0x0bfEc35a1A3550Deed3F6fC76Dde7FC412729a91"; -const xkncbAddr = "0x06890D4c65A4cB75be73D7CCb4a8ee7962819E81"; -const xsnxaAddr = "0x1Cf0f3AaBE4D12106B27Ab44df5473974279C524"; -const xsnxaAdminAddr = "0x7Cd5E2d0056a7A7F09CBb86e540Ef4f6dCcc97dd"; -const xsnxaTradeAccountingAddr = "0x6461E964D687E7ca3082bECC595D079C6c775Ac8"; -const xu3lpaAddr = "0xDa4d2152B2230e33c80b0A88b7C28b1C464EE3c2"; -const xu3lpbAddr = "0x420CF01fdC7e3c42c3D89ae8799bACCBfFa9ceAA"; -const xu3lpcAddr = "0x74e87FBA6C4bCd17fe5f14D73f590eD3C13E821B"; -const xu3lpdAddr = "0xdd699eae49a3504a28aeb9bd76a3f0369fa08471"; -const xu3lpeAddr = "0x828EC6E678A40c251f1F37DA389db0f820Af6f9D"; -const xu3lpfAddr = "0x4296d40183356A770Fd8cA3Ba0592f0163BE9CA3"; -const xu3lpgAddr = "0x28ce95124FB0d5Febe6Ab258072848f5fe1010eC"; -const xu3lphAddr = "0x9ed880b7F75a220C0450E4884521ba8d500eb4bb"; -const ethrsi6040Addr = "0x93E01899c10532d76C0E864537a1D26433dBbDdB"; -const sUsdAddr = ADDRESSES.ethereum.sUSD_OLD; -const xbntaAddr = "0x6949f1118FB09aD2567fF675f96DbB3B6985ACd0"; -const alphaAddr = "0xa1faa113cbe53436df28ff0aee54275c13b40975"; -const bntAddr = "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C"; -const kncAddr = "0xdd974d5c2e2928dea5f71b9825b8b646686bd200"; -const snxAddr = "0xDC01020857afbaE65224CfCeDb265d1216064c59"; -const wbtcAddr = ADDRESSES.ethereum.WBTC; -const wethAddr = ADDRESSES.ethereum.WETH; -const snxTokenAddr = ADDRESSES.ethereum.SNX; -const inchAddr = "0x111111111117dc0aa78b770fa6a738034120c302"; -const usdcAddr = ADDRESSES.ethereum.USDC; -const aaveAddr = ADDRESSES.ethereum.AAVE; -const xtkAddress = "0x7F3EDcdD180Dbe4819Bd98FeE8929b5cEdB3AdEB"; - -const xu3lpaAddrArbitrum = "0x9F8cFc08f781e1576A05d4d3669b3E6FF22913FF"; -const xu3lpbAddrArbitrum = "0x216D135926f5EC9E5924564A342580B0b5A3bdc6"; -const xbtc3xAddrArbitrum = "0x93B135416A1796707b273ad709099d47ADDA18D6"; -const xeth3xAddrArbitrum = "0xc4C251c7d7c2F1165176e3BF503276fB0df05daa"; -const wbtcAddrArbitrum = ADDRESSES.arbitrum.WBTC; -const wethAddrArbitrum = ADDRESSES.arbitrum.WETH; - -const X_ETH_3X = "xETH3x" -const X_BTC_3X = "xBTC3x" -const WBTC = "wbtc"; -const WETH = "weth"; -const QUOTER_ADDRESS = '0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6' -const usdcAddress = ADDRESSES.arbitrum.USDC -const wethAddress = ADDRESSES.arbitrum.WETH -const usdtAddress = ADDRESSES.ethereum.USDT; - -module.exports = { - DEC_18, - kncAddr, - xaaveaAddr, - xaavebAddr, - xalphaaAddr, - alphaAddr, - xbntaAddr, - bntAddr, - xinchaAddr, - xinchbAddr, - xkncaAddr, - xkncbAddr, - xsnxaAddr, - xsnxaAdminAddr, - xsnxaTradeAccountingAddr, - xu3lpaAddr, - xu3lpbAddr, - xu3lpcAddr, - xu3lpdAddr, - xu3lpeAddr, - xu3lpfAddr, - xu3lpgAddr, - xu3lphAddr, - ethrsi6040Addr, - snxAddr, - sUsdAddr, - wbtcAddr, - wethAddr, - snxTokenAddr, - inchAddr, - usdcAddr, - aaveAddr, - xu3lpaAddrArbitrum, - xu3lpbAddrArbitrum, - xbtc3xAddrArbitrum, - xeth3xAddrArbitrum, - wbtcAddrArbitrum, - wethAddrArbitrum, - X_ETH_3X, - X_BTC_3X, - WBTC, - WETH, - QUOTER_ADDRESS, - usdcAddress, - wethAddress, - usdtAddress, - xtkAddress -}; diff --git a/projects/xtoken/index.js b/projects/xtoken/index.js deleted file mode 100644 index 88293816202..00000000000 --- a/projects/xtoken/index.js +++ /dev/null @@ -1,106 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const abi = require("./abi.json"); -const { - kncAddr, - xaaveaAddr, - xaavebAddr, - xalphaaAddr, - alphaAddr, - xbntaAddr, - bntAddr, - xinchaAddr, - xinchbAddr, - xkncaAddr, - xkncbAddr, - xsnxaAdminAddr, - xsnxaTradeAccountingAddr, - xu3lpaAddr, - xu3lpbAddr, - xu3lpcAddr, - xu3lpdAddr, - xu3lpeAddr, - xu3lpfAddr, - xu3lpgAddr, - xu3lphAddr, - ethrsi6040Addr, - snxAddr, - wbtcAddr, - wethAddr, - snxTokenAddr, - inchAddr, - usdcAddr, - aaveAddr, -} = require("./constants"); -const xu3lps = [ - xu3lpaAddr, - xu3lpbAddr, - xu3lpcAddr, - xu3lpfAddr, - xu3lpgAddr, - xu3lphAddr, -]; -const { getLogs } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -async function ethTvl(api) { - const aaveBals = await api.multiCall({ abi: abi.getFundHoldings, calls: [xaaveaAddr, xaavebAddr] }) - const xu3lpsBals = (await api.multiCall({ abi: abi.getNav, calls: xu3lps })).reduce((acc, curr) => acc + +curr / 1e12, 0) - // const xu3lpsdBals = (await api.multiCall({ abi: abi.getNav, calls: [xu3lpdAddr] })).reduce((acc, curr) => acc + +curr, 0) - // const xu3lpsedBals = (await api.multiCall({ abi: abi.getNav, calls: [xu3lpeAddr] })).reduce((acc, curr) => acc + +curr / 1e10, 0) - const xinchTvlRaw = (await api.multiCall({ abi: abi.getNav, calls: [xinchaAddr, xinchbAddr] })).reduce((acc, curr) => acc + +curr, 0) - const xalphaaTvlRaw = (await api.multiCall({ abi: abi.getNav, calls: [xalphaaAddr] })).reduce((acc, curr) => acc + +curr, 0) - const xbntaStakedRaw = (await api.multiCall({ abi: abi.totalAllocatedNav, calls: [xbntaAddr] })).reduce((acc, curr) => acc + +curr, 0) - const xbntaBufferRaw = (await api.multiCall({ abi: abi.getBufferBalance, calls: [xbntaAddr] })).reduce((acc, curr) => acc + +curr, 0) - const xbntaPendingRaw = (await api.multiCall({ abi: abi.getRewardsContributionToNav, calls: [xbntaAddr] })).reduce((acc, curr) => acc + +curr, 0) - const xkncTvlRaw = (await api.multiCall({ abi: abi.getFundKncBalanceTwei, calls: [xkncaAddr, xkncbAddr] })).reduce((acc, curr) => acc + +curr, 0) - const xsnxaSnxRaw = (await api.multiCall({ abi: abi.getSnxBalance, calls: [xsnxaTradeAccountingAddr] })).reduce((acc, curr) => acc + +curr, 0) - const xsnxaEthRaw = (await api.multiCall({ abi: abi.getEthBalance, calls: [xsnxaTradeAccountingAddr] })).reduce((acc, curr) => acc + +curr, 0) - api.addTokens(aaveAddr, aaveBals) - api.addTokens(usdcAddr, xu3lpsBals) - // api.addTokens(wethAddr, xu3lpsdBals) - // api.addTokens(wbtcAddr, xu3lpsedBals) - api.addTokens(inchAddr, xinchTvlRaw) - api.addTokens(bntAddr, xbntaStakedRaw) - api.addTokens(bntAddr, xbntaBufferRaw) - api.addTokens(bntAddr, xbntaPendingRaw) - api.addTokens(kncAddr, xkncTvlRaw) - api.addTokens(alphaAddr, xalphaaTvlRaw) - api.addTokens(snxTokenAddr, xsnxaSnxRaw) - api.addTokens(wethAddr, xsnxaEthRaw) - - await api.sumTokens({ tokensAndOwners: [[ethrsi6040Addr, xsnxaAdminAddr]] }) - const xsnxaSusdRaw = (await api.call({ abi: abi.debtBalanceOf, target: snxAddr, params: [xsnxaAdminAddr, '0x7355534400000000000000000000000000000000000000000000000000000000'], })); - api.add(ADDRESSES.ethereum.sUSD, xsnxaSusdRaw) -} - -module.exports = { - doublecounted: true, - misrepresentedTokens: true, - methodology: `TVL includes deposits made to xToken Terminal and xToken Market.`, -}; - -const config = { - ethereum: { factory: '0x090559D58aAB8828C27eE7a7EAb18efD5bB90374', fromBlock: 14373342 }, - arbitrum: { factory: '0x090559D58aAB8828C27eE7a7EAb18efD5bB90374', fromBlock: 7804500 }, - optimism: { factory: '0x090559D58aAB8828C27eE7a7EAb18efD5bB90374', fromBlock: 4396677 }, - polygon: { factory: '0x090559D58aAB8828C27eE7a7EAb18efD5bB90374', fromBlock: 25871314 }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - eventAbi: 'event DeployedIncentivizedPool (address indexed clrInstance, address indexed token0, address indexed token1, uint24 fee, int24 lowerTick, int24 upperTick)', - onlyArgs: true, - fromBlock, - }) - const ownerTokens = logs.map(log => [[log.token0, log.token1], log.clrInstance]) - await api.sumTokens({ ownerTokens }) - if (chain === 'ethereum') await ethTvl(api) - return sumTokens2({ api, owners: logs.map(log => log.clrInstance), resolveUniV3: true, }) - } - } -}) diff --git a/projects/xtrade/index.js b/projects/xtrade/index.js deleted file mode 100644 index e0e2a717dff..00000000000 --- a/projects/xtrade/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - xlayer: { - factory: '0x612D9EA08be59479B112D8d400C7F0A2E4aD4172', - fromBlock: 813172, - isAlgebra: true, - }, -}) diff --git a/projects/xusdmoney/index.js b/projects/xusdmoney/index.js deleted file mode 100644 index cce6aed0469..00000000000 --- a/projects/xusdmoney/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const collateralPoolContracts = [ - // WETH Pool - "0x7E9320C98389CB43B957Ff2399eA315Bce72fdb4", - // DAI Pool - "0x10A06343231Dd722800f2139Edf34a1562549DE3", - // DAI Pool New - "0xf13a49Eb6b2F6918500ee5cf8b39bb15a38F5b32", - // USDC Pool - "0x75aAf03CBF330e2b3F0623c55B7a528CFCAE8d75", -]; - -const WETH = ADDRESSES.ethereum.WETH; -const DAI = ADDRESSES.ethereum.DAI; -const USDC = ADDRESSES.ethereum.USDC; -//const XUS = "0x875650dd46b60c592d5a69a6719e4e4187a3ca81"; - -const stakingContract = "0x6049B0831F8da67f3FE80f5FA07BD300E8f2F22C"; -const XUSD = "0x1c9BA9144505aaBa12f4b126Fda9807150b88f80"; - -const stakingPoolContracts = [ - //XUS/XUSD-LP - "0x608D8b1511Cb3eB7dbcCb5c626922EBfE7A62583", - //XUS/ETH-LP - "0x39d8189306a254120EF88e0A465808BB6532d63B", - //LINK/XUSD-LP - "0x5E20B7824f2A7Ba15fda7ECF1a2e6e05219De5aa", - //DAI/XUSD-LP - "0x7b24E729aa3a39c0555509A486eA7a415b4Df934", - //ETH/XUSD-LP - "0xdaB209915b683EA3cd338D20B07e3Bd63001b87A", -]; - -const lpPairAddresses = [ - "0x80a23a63bdb304d4784be05df01e7c921d038324", - "0x8f24e100d785DaAa70e9Ff461A831A0354499F4e", - "0xc448A8Aacbd29652ce861d2693a883daF8009b26", - "0x143d8a74CAdf8a3927B2926be0154739f4953422", - "0x88d9bE8D3DFe82eF3b09641284467f1Ee5E98343", -]; - -async function ethTvl(api) { - return api.sumTokens({ owners: collateralPoolContracts, tokens: [WETH, DAI, USDC] }); -} - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking(stakingContract, XUSD), - pool2: pool2s(stakingPoolContracts, lpPairAddresses), - tvl: ethTvl, - }, - methodology: - "Counts liquidty on the Collateral Pools trouggh their Contracts", -}; diff --git a/projects/xy-finance/index.js b/projects/xy-finance/index.js deleted file mode 100644 index 11716374558..00000000000 --- a/projects/xy-finance/index.js +++ /dev/null @@ -1,526 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const config = { - ethereum: { - chainId: '1', - }, - cronos: { - chainId: '25', - }, - bsc: { - chainId: '56', - }, - thundercore: { - chainId: '108', - }, - polygon: { - chainId: '137', - }, - fantom: { - chainId: '250', - }, - kcc: { - chainId: '321', - }, - arbitrum: { - chainId: '42161', - }, - avax: { - chainId: '43114', - }, - optimism: { - chainId: '10', - }, - astar: { - chainId: '592', - }, - moonriver: { - chainId: '1285', - }, - klaytn: { - chainId: '8217', - }, - wemix: { - chainId: '1111', - }, - era: { - chainId: '324', - }, - polygon_zkevm: { - chainId: '1101', - }, - linea: { - chainId: '59144', - }, - base: { - chainId: '8453', - }, - mantle: { - chainId: '5000', - }, - scroll: { - chainId: '534352', - }, - blast: { - chainId: '81457', - }, - xlayer: { - chainId: '196' - }, - taiko: { - chainId: '167000' - }, - ox_chain: { - chainId: '6699' - }, - cronos_zkevm: { - chainId: '388' - } -} - -const ethAddress = ADDRESSES.GAS_TOKEN_2 -const yPoolDepositContract = { - "1": { - "ETH": { - "contractAddress": "0x57eA46759fed1B47C200a9859e576239A941df76", - "tokenAddress": ethAddress - }, - "USDT": { - "contractAddress": "0x8e921191a9dc6832C1c360C7c7B019eFB7c29B2d", - "tokenAddress": ADDRESSES.ethereum.USDT - }, - "USDC": { - "contractAddress": "0xdD8B0995Cc92c7377c7bce2A097EC70f45A192D5", - "tokenAddress": ADDRESSES.ethereum.USDC - }, - "XY": { - "contractAddress": "0x7fE09D2310A647c7C5043daE2053ff86956cE952", - "tokenAddress": "0x77777777772cf0455fB38eE0e75f38034dFa50DE" - }, - "NUM": { - "contractAddress": "0x64d17beaE666cC435B9d40a21f058b379b2a0194", - "tokenAddress": "0x3496B523e5C00a4b4150D6721320CdDb234c3079" - }, - "eYe": { - "contractAddress": "0xF0052C0B4F08078846aF48FE8C7bb365c9937c21", - "tokenAddress": "0x9A257C90Fa239fBA07771ef7da2d554D148c2E89" - }, - "LOOT": { - "contractAddress": "0xD95841e7eC6b61f708829B57a3433C3Fd24B2A8c", - "tokenAddress": "0x721A1B990699eE9D90b6327FaaD0A3E840aE8335" - }, - "PEPE": { - "contractAddress": "0x4F19699cb57543B76167b7d38040f34db4d11fEC", - "tokenAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933" - }, - "MOG": { - "contractAddress": "0x0790eF241DC85Adf32998aae5E5738579c417701", - "tokenAddress": "0xaaeE1A9723aaDB7afA2810263653A34bA2C21C7a" - }, - // "BITCOIN": { - // "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", - // "tokenAddress": "0x92073dE2706eB8f0265998bCf7B8F751e1349b8F" // doesnt exist - // } - }, - "25": { - "ETH": { - "contractAddress": "0x8266B0c8eF1d70cC4b04F8E8F7508256c0E1200f", - "tokenAddress": "0xe44Fd7fCb2b1581822D0c862B68222998a0c299a" - }, - "USDT": { - "contractAddress": "0x74A0EEA77e342323aA463098e959612d3Fe6E686", - "tokenAddress": ADDRESSES.cronos.USDT - }, - "USDC": { - "contractAddress": "0x44a54941E572C526a599B0ebe27A14A5BF159333", - "tokenAddress": ADDRESSES.cronos.USDC - }, - "BLU": { - "contractAddress": "0x184cE49FdE76D4394795C76A91935862B7c30102", - "tokenAddress": "0x1542bA4CA0fb6D1B4476a933B292002fd1959A52" - }, - "CANDY": { - "contractAddress": "0x85e363569531699EaEd1c1AC590d9f442A1299BA", - "tokenAddress": "0x06C04B0AD236e7Ca3B3189b1d049FE80109C7977" - }, - "DBF": { - "contractAddress": "0xEC8476DCC72b4AB6Cbc3C2bD7f50A15891485fDB", - "tokenAddress": "0xA2ae6273Dd65F9fA76C3d383eDe9c1261e025DAC" - }, - // DBX is already counted from DBX tvl on Arbitrum since its just a mint on Cronos - // "DBX": { - // "contractAddress": "0x812e9eE2437a3e4FE0A4A4A7f195536844301f07", - // "tokenAddress": "0x061E31e7768b39a4282822b65569F8d814dC15f6" - // }, - // DBC is already counted from DBC tvl on Arbitrum since its just a mint on Cronos - // "DBC": { - // "contractAddress": "0xD99995b63F44fc500B702251262B7d9f35adA0BC", - // "tokenAddress": "0x730B05d100EeFb92f04016C6c0cF6f2bBB2C3A57" - // }, - "SINGLE": { - "contractAddress": "0x9A4cC214782Fea5880394eFDE60187797a2FEF01", - "tokenAddress": "0x0804702a4E749d39A35FDe73d1DF0B1f1D6b8347" - }, - "AutoS": { - "contractAddress": "0x58F29F7d759aef5B8e34C8e4152d6117893017aB", - "tokenAddress": "0xae620DC4B9b6e44FBeb4a949F63AC957Cc43b5dD" - }, - // LLT is already counted from LLT tvl on Polygon since its just a mint on Cronos - // "LLT": { - // "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", - // "tokenAddress": "0x92073dE2706eB8f0265998bCf7B8F751e1349b8F" - // }, - "RIP": { - "contractAddress": "0xd15f36e89e08A67AEe910629fCe9aBA7D2e8Ac80", - "tokenAddress": "0x34aceA6Cc02578aF041a5E976b7289ca23cCB7A8" - }, - "STUCK": { - "contractAddress": "0xc1Ae654b7D9C6a2Cfb0f97254AB5246AAbd2Ce7b", - "tokenAddress": "0xa0D445dC147f598d63518b5783CA97Cd8Bd9f5Bc" - } - - }, - "56": { - "ETH": { - "contractAddress": "0xa0ffc7eDB9DAa9C0831Cdf35b658e767ace33939", - "tokenAddress": ADDRESSES.bsc.ETH - }, - "USDT": { - "contractAddress": "0xD195070107d853e55Dad9A2e6e7E970c400E67b8", - "tokenAddress": ADDRESSES.bsc.USDT - }, - "USDC": { - "contractAddress": "0x27C12BCb4538b12fdf29AcB968B71dF7867b3F64", - "tokenAddress": ADDRESSES.bsc.USDC - }, - "eYe": { - "contractAddress": "0x5Bd40e579Cb7D37784689044E6C7c333E2E300e6", - "tokenAddress": "0x9A257C90Fa239fBA07771ef7da2d554D148c2E89" - }, - }, - "108": { - "USDT": { - "contractAddress": "0x74A0EEA77e342323aA463098e959612d3Fe6E686", - "tokenAddress": ADDRESSES.thundercore.TT_USDT - }, - "USDC": { - "contractAddress": "0x2641911948e0780e615A9465188D975Fa4A72f2c", - "tokenAddress": ADDRESSES.thundercore.TT_USDC - } - }, - "137": { - "ETH": { - "contractAddress": "0x29d91854B1eE21604119ddc02e4e3690b9100017", - "tokenAddress": ADDRESSES.polygon.WETH_1 - }, - "USDT": { - "contractAddress": "0x3243278E0F93cD6F88FC918E0714baF7169AFaB8", - "tokenAddress": ADDRESSES.polygon.USDT - }, - "USDC": { - "contractAddress": "0xf4137e5D07b476e5A30f907C3e31F9FAAB00716b", - "tokenAddress": ADDRESSES.polygon.USDC - }, - // BLU is already counted from BLU tvl on Cronos since its just a mint on Polygon - // "BLU": { - // "contractAddress": "0x7C1C974367Ee28D3d7aBb088f5FCd748B3759EA4", - // "tokenAddress": "0x759d34685468604c695De301ad11A9418e2f1038", - // }, - "CANDY": { - "contractAddress": "0x5Bd40e579Cb7D37784689044E6C7c333E2E300e6", - "tokenAddress": "0x54E53ed24C12c1d3Df7D653587E2f27d3FbaE3d2", - }, - "AutoS": { - "contractAddress": "0xF98bfE69d069B40668D4F6aaeA22E73d1DC21A93", - "tokenAddress": "0x925FAdb35B73720238cc78777d02ED4dD3100816", - }, - "LLT": { - "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", - "tokenAddress": "0x0DdE4811C4DD68Dc740A1D7997F33fF46CD186a9" - } - }, - "250": { - "ETH": { - "contractAddress": "0x5146ba1f786D41ba1E876b5Fd3aA56bD516Ed273", - "tokenAddress": "0x74b23882a30290451A17c44f4F05243b6b58C76d" - }, - "USDT": { - "contractAddress": "0xC255563d3Bc3Ed7dBbb8EaE076690497bfBf7Ef8", - "tokenAddress": ADDRESSES.fantom.fUSDT - }, - "USDC": { - "contractAddress": "0x3A459695D49cD6B9637bC85B7ebbb04c5c3038c0", - "tokenAddress": ADDRESSES.fantom.USDC - }, - "SINGLE": { - "contractAddress": "0xe1C01c84EAc760389b2A080cfd6f3e874725c62a", - "tokenAddress": "0xbDA9DF2cff1d36Ffc05E8e76Ec821B25dB8F3348" - }, - }, - "321": { - "USDT": { - "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": ADDRESSES.kcc.USDT - }, - "USDC": { - "contractAddress": "0xa274931559Fb054bF60e0C44355D3558bB8bC2E6", - "tokenAddress": ADDRESSES.kcc.USDC - } - }, - "42161": { - "ETH": { - "contractAddress": "0xd1ae4594E47C153ae98F09E0C9267FB74447FEa3", - "tokenAddress": ethAddress - }, - "USDT": { - "contractAddress": "0x7a483730AD5a845ED2962c49DE38Be1661D47341", - "tokenAddress": ADDRESSES.arbitrum.USDT - }, - "USDC": { - "contractAddress": "0x680ab543ACd0e52035E9d409014dd57861FA1eDf", - "tokenAddress": ADDRESSES.arbitrum.USDC - }, - // DBF is already counted from DBF tvl on Cronos since its just a mint on Arbitrum - // "DBF": { - // "contractAddress": "0xa1fB1F1E5382844Ee2D1BD69Ef07D5A6Abcbd388", - // "tokenAddress": "0x38A896c29Eb54c566A3fD593f559174520Dc6F75" - // }, - "DBX": { - "contractAddress": "0x156C04ca75f11817DdbF887692990F3E46e8982B", - "tokenAddress": "0x0b257fe969d8782fAcb4ec790682C1d4d3dF1551" - }, - "DBC": { - "contractAddress": "0x98b5067949e0821a52Ec2aC9A3BaaCc9b315ec21", - "tokenAddress": "0x745f63CA36E0cfDFAc4bf0AFe07120dC7e1E0042" - }, - }, - "43114": { - "ETH": { - "contractAddress": "0xEFaaf68a9a8b7D93bb15D29c8B77FCe87Fcc91b8", - "tokenAddress": ADDRESSES.avax.WETH_e - }, - "USDT": { - "contractAddress": "0x3D2d1ce29B8bC997733D318170B68E63150C6586", - "tokenAddress": ADDRESSES.avax.USDt - }, - "USDC": { - "contractAddress": "0x21ae3E63E06D80c69b09d967d88eD9a98c07b4e4", - "tokenAddress": ADDRESSES.avax.USDC - } - }, - "10": { - "ETH": { - "contractAddress": "0x91474Fe836BBBe63EF72De2846244928860Bce1B", - "tokenAddress": ethAddress - }, - "USDT": { - "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": ADDRESSES.optimism.USDT - }, - "USDC": { - "contractAddress": "0x1e4992E1Be86c9d8ed7dcBFcF3665FE568dE98Ab", - "tokenAddress": ADDRESSES.optimism.USDC - } - }, - "592": { - "USDT": { - "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": ADDRESSES.astar.USDT - }, - "USDC": { - "contractAddress": "0xD236639F5B00BC6711aC799bac5AceaF788b2Aa3", - "tokenAddress": ADDRESSES.moonbeam.USDC - } - }, - "1285": { - "USDT": { - "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": ADDRESSES.moonriver.USDT - }, - "USDC": { - "contractAddress": "0x680ab543ACd0e52035E9d409014dd57861FA1eDf", - "tokenAddress": ADDRESSES.moonriver.USDC - } - }, - "8217": { - "USDT": { - "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": ADDRESSES.klaytn.oUSDT - }, - "USDC": { - "contractAddress": "0xB238d4339a44f93aBCF4071A9bB0f55D2403Fd84", - "tokenAddress": ADDRESSES.klaytn.oUSDC - } - }, - "1111": { - "USDT": { - "contractAddress": "0xA5Cb30E5d30A9843B6481fFd8D8D35DDED3a3251", - "tokenAddress": "0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F" - }, - "USDC": { - "contractAddress": "0x3243278E0F93cD6F88FC918E0714baF7169AFaB8", - "tokenAddress": ADDRESSES.moonriver.USDC - } - }, - "324": { - "ETH": { - "contractAddress": "0x935283A00FBF8E40fd2f8C432A488F6ADDC8dB67", - "tokenAddress": ethAddress - }, - "USDC": { - "contractAddress": "0x75167284361c8D61Be7E4402f4953e2b112233cb", - "tokenAddress": ADDRESSES.era.USDC - } - }, - "1101": { - "ETH": { - "contractAddress": "0x9fE77412aA5c6Ba67fF3095bBc534884F9a61a38", - "tokenAddress": ethAddress - }, - "USDC": { - "contractAddress": "0x1acCfC3a45313f8F862BE7fbe9aB25f20A93d598", - "tokenAddress": ADDRESSES.polygon_zkevm.USDC - } - }, - "59144": { - "ETH": { - "contractAddress": "0xA5Cb30E5d30A9843B6481fFd8D8D35DDED3a3251", - "tokenAddress": ethAddress - }, - "USDC": { - "contractAddress": "0x9d90CFa17f3AFceE2505B3e9D75113e6f5c9E843", - "tokenAddress": ADDRESSES.linea.USDC - } - }, - "8453": { - "ETH": { - "contractAddress": "0x4F19699cb57543B76167b7d38040f34db4d11fEC", - "tokenAddress": ethAddress - }, - "USDC": { - "contractAddress": "0xd15f36e89e08A67AEe910629fCe9aBA7D2e8Ac80", - "tokenAddress": ADDRESSES.base.USDbC - }, - // LOOT is already counted from LOOT tvl on Ethereum since its just a mint on Base - // "LOOT": { - // "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", - // "tokenAddress": "0x94a42083948d86432246eAD625B30d49014A4BFF" - // }, - // RIP is already counted from RIP tvl on Cronos since its just a mint on Base - // "RIP": { - // "contractAddress": "0x0790eF241DC85Adf32998aae5E5738579c417701", - // "tokenAddress": "0x34aceA6Cc02578aF041a5E976b7289ca23cCB7A8" - // }, - // STUCK is already counted from STUCK tvl on Cronos since its just a mint on Base - // "STUCK": { - // "contractAddress": "0xc1Ae654b7D9C6a2Cfb0f97254AB5246AAbd2Ce7b", - // "tokenAddress": "0xa0D445dC147f598d63518b5783CA97Cd8Bd9f5Bc" - // } - }, - "5000": { - "ETH": { - "contractAddress": "0xdD8B0995Cc92c7377c7bce2A097EC70f45A192D5", - "tokenAddress": ADDRESSES.mantle.WETH - }, - "USDC": { - "contractAddress": "0xA5Cb30E5d30A9843B6481fFd8D8D35DDED3a3251", - "tokenAddress": ADDRESSES.mantle.USDC - }, - "USDT": { - "contractAddress": "0x0241fb446d6793866245b936F2C3418F818bDcD3", - "tokenAddress": ADDRESSES.mantle.USDT - }, - // LOOT is already counted from LOOT tvl on Ethereum since its just a mint on Mantle - // "LOOT": { - // "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", - // "tokenAddress": "0x94a42083948d86432246eAD625B30d49014A4BFF" - // } - }, - "534352": { - "ETH": { - "contractAddress": "0x0241fb446d6793866245b936F2C3418F818bDcD3", - "tokenAddress": ethAddress - }, - "USDC": { - "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": ADDRESSES.scroll.USDC - } - }, - "81457": { - "ETH": { - "contractAddress": "0xFa77c2DecCB21ACb9Bf196408Bf6aD5973D07762", - "tokenAddress": ethAddress - }, - // LOOT is already counted from LOOT tvl on Ethereum since its just a mint on Blast - // "LOOT": { - // "contractAddress": "0xD95841e7eC6b61f708829B57a3433C3Fd24B2A8c", - // "tokenAddress": "0x1C559a960aE5293eA56C40EFC3c0169B413DDcF3" - // } - }, - "196": { - "ETH": { - "contractAddress": "0xFa77c2DecCB21ACb9Bf196408Bf6aD5973D07762", - "tokenAddress": ADDRESSES.xlayer.WETH - }, - "USDT": { - "contractAddress": "0x1e4992E1Be86c9d8ed7dcBFcF3665FE568dE98Ab", - "tokenAddress": ADDRESSES.xlayer.USDT - } - }, - "167000": { - "ETH": { - "contractAddress": "0xFa77c2DecCB21ACb9Bf196408Bf6aD5973D07762", - "tokenAddress": ethAddress - }, - "USDC": { - "contractAddress": "0x1e4992E1Be86c9d8ed7dcBFcF3665FE568dE98Ab", - "tokenAddress": ADDRESSES.taiko.USDC - } - }, - "6699": { - // USDC is already counted from USDC tvl on Base since its just a mint on OxChain - // "USDC": { - // "contractAddress": "0xd15f36e89e08A67AEe910629fCe9aBA7D2e8Ac80", - // "tokenAddress": "0xcE8f4E26e2532A78DAcD7A497A1827692b14b31D" - // }, - // ETH is already counted from ETH tvl on Base since its just a mint on OxChain - // "ETH": { - // "contractAddress": "0x4F19699cb57543B76167b7d38040f34db4d11fEC", - // "tokenAddress": "0x7e6ecF974310d75325Ab1209253250aC7fCCe09b" - // }, - // PEPE is already counted from PEPE tvl on Ethereum since its just a mint on OxChain - // "PEPE": { - // "contractAddress": "0x0790eF241DC85Adf32998aae5E5738579c417701", - // "tokenAddress": "0x4aE774bF3dEfF2eaD31D5D51Aa636EE216fBE274" - // }, - // MOG is already counted from MOG tvl on Ethereum since its just a mint on OxChain - // "MOG": { - // "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", - // "tokenAddress": "0xfaffa4b4D8538A2ba63bEa39ACbF709E3A972714" - // }, - // "BITCOIN": { - // "contractAddress": "0xD95841e7eC6b61f708829B57a3433C3Fd24B2A8c", - // "tokenAddress": "0x92073dE2706eB8f0265998bCf7B8F751e1349b8F" - // } - }, - "388": { - "ETH": { - "contractAddress": "0xAa0b0654E79E17332d983E2351bD926cE336B9BD", - "tokenAddress": "0x271602A97027ee1dd03b1E6e5dB153eB659A80b1" - }, - } -} - -module.exports={} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const { chainId } = config[chain] - const toa = [] - Object.values(yPoolDepositContract[chainId]).forEach(i => toa.push([i.tokenAddress, i.contractAddress])) - return sumTokens2({ api, tokensAndOwners: toa, }) - } - } -}) \ No newline at end of file diff --git a/projects/y24/index.js b/projects/y24/index.js deleted file mode 100644 index 86bbc580323..00000000000 --- a/projects/y24/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport } = require('../helper/unknownTokens'); - -const TOKEN_ADDRESS = '0x652000ba3c230d83279AEC84A49d41d706AFB0F1'; -const StakingContract1 = '0x8aCE17bAadBbAfb8178330d4C87C224a08826520'; -const StakingContract2 = '0xe0Ceee33e1CE1EF4EA322B50D55d99E714B7BB6d'; - -module.exports = { - methodology: 'This is the total value locked in y24 staking', - bsc: { - tvl: () => ({}), - staking: sumTokensExport({owners: [StakingContract1, StakingContract2], tokens: [TOKEN_ADDRESS], lps: ['0x44628669C0F888b2884d20b94C22af465AA11f05'], useDefaultCoreAssets: true,}) - } -}; - diff --git a/projects/y2b-finance/index.js b/projects/y2b-finance/index.js deleted file mode 100644 index 78632741325..00000000000 --- a/projects/y2b-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - hallmarks: [ - [1673913600, "Rug Pull"] - ], - deadFrom: 1673913600, - ethereum: { - tvl: () => ({}), - } -} diff --git a/projects/y2k-finance/index.js b/projects/y2k-finance/index.js deleted file mode 100644 index 85b34a7009c..00000000000 --- a/projects/y2k-finance/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const chain = 'arbitrum' - -async function tvl(api) { - const logs = await getLogs({ - api, - fromBlock: 33934273, - eventAbi: 'event MarketCreated(uint256 indexed mIndex, address hedge, address risk, address token, string name, int256 strikePrice)', - topics: ['0xf38f00404415af51ddd0dd57ce975d015de2f40ba8a087ac48cd7552b7580f32'], - target: '0x984e0eb8fb687afa53fc8b33e12e04967560e092', - }) - - const vaults = logs.map(({ args }) => ([args.hedge, args.risk])).flat() - const tokens = await api.multiCall({ - abi: 'address:asset', - calls: vaults, - }) - const tokensAndOwners = tokens.map((token, i) => ([token, vaults[i]])) - - return sumTokens2({ api, tokensAndOwners }) -} - - -module.exports = { - arbitrum: { - tvl, - // staking: sumTokensExport({ chain, owners: [], tokens: ['0x65c936f008BC34fE819bce9Fa5afD9dc2d49977f']}), - pool2: sumTokensExport({ chain, owners: ['0xaefd22d0153e69f3316dca9095e7279b3a2f8af2', '0xbDAA858Fd7b0DC05F8256330fAcB35de86283cA0',], tokens: ['0x569061e2d807881f4a33e1cbe1063bc614cb75a4']}) - } -} diff --git a/projects/y2k-v2/index.js b/projects/y2k-v2/index.js deleted file mode 100644 index 6340500ab48..00000000000 --- a/projects/y2k-v2/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumTokens2, } = require('../helper/unwrapLPs') -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - arbitrum: [{ factory: '0xC3179AC01b7D68aeD4f27a19510ffe2bfb78Ab3e', fromBlock: 96059531, }, { factory: '0x442Fd67F2CcF92eD73E7B7E4ff435835EcA890C9', fromBlock: 141345832, },], -} - - -Object.keys(config).forEach(chain => { - const _config = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = (await Promise.all(_config.map(({ factory, fromBlock, }) => getLogs({ - api, - target: factory, - topics: ['0xe8066e93c2c1e100c0c76002a546075b7c6b53025db53708875180c81afda250'], - eventAbi: 'event MarketCreated (uint256 indexed marketId, address premium, address collateral, address underlyingAsset, address token, string name, uint256 strike, address controller)', - onlyArgs: true, - fromBlock, - })))).flat() - - const premiums = logs.map(i => i.premium) - const collaterals = logs.map(i => i.collateral) - const pTokens = await api.multiCall({ abi: 'address:asset', calls: premiums }) - const cTokens = await api.multiCall({ abi: 'address:asset', calls: collaterals }) - return sumTokens2({ api, tokensAndOwners2: [[...pTokens, ...cTokens], [...premiums, ...collaterals]] }) - } - } -}) - diff --git a/projects/y2r/index.js b/projects/y2r/index.js deleted file mode 100644 index 4b9200e0394..00000000000 --- a/projects/y2r/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs") - -const vaultAddresses = { - CantoNoteLP: '0x89Dc2cc570E40E9cCE0364ecf0e14347215156fF', - CantoAtomLP: '0x1442261A3ed64620B10c3c015a4C7553422137EA', - NoteUSDTLP: '0xd6Cb001d4aB7939Ab766ea577D7978FcE1212529', - NoteUSDCLP: '0xD6F6c81C5885a143227D24E4B3555AdbD696e1a2', - CantoETHLP: '0xd535845D5aA2b6B81aa8f5AA048358afbC93a33C', - - vCantoFlow: '0xa492DFa8D448f4B0d998a416A30FC4678d057304', - vNoteFlow: '0x4DF1ACfBadf2ebA8BE500205dF435f8445359aB3', - vNoteCanto: '0x64A982A8A750CC3D9a83b8276423adB1a8d07251', - vCantoAtom: '0x671aDb6af35Bc8508d67DBE8683a7eb8612b7aB9', - vCantoETH: '0xDE08DC04e2DeC9f1d9E3E79Ee609184CF101169b', - vCINUCanto: '0x8de89E06EF165Df31AF819873AB6FB62540155bd', - vCBONKCanto: '0x2ec3f5b72A2eb8765386A68c11BefBd9701583E4', - vETHFlow: '0xfa91ff70E06ceE35e85eBAC7223E1A92ad51cEEC', - vCantoSomm: '0x6D5FD9991c85bF1256D76F4b254558d2851058ef', - vCantoGrav: '0xB3A7c46283AC1538a6dcd2a9eBa7691181a2fC4e', - vFlowUSDT: '0xE1b05d4f2A61c32B3deAD4fc6BA0f07d595a4f8B', -} - -async function tvl(api) { - const vaults = Object.values(vaultAddresses) - const tokens = await api.multiCall({ abi: abis.want, calls: vaults}) - const bals = await api.multiCall({ abi: abis.balance, calls:vaults }) - api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true, }) -} - -module.exports = { - misrepresentedTokens: true, - canto: { - tvl, - }, -}; - -const abis ={ - balance: "function balance() returns (uint256)", - want: "address:want", -} \ No newline at end of file diff --git a/projects/yakafinance-v3/index.js b/projects/yakafinance-v3/index.js deleted file mode 100644 index fbe33769031..00000000000 --- a/projects/yakafinance-v3/index.js +++ /dev/null @@ -1,40 +0,0 @@ -const { getConfig } = require('../helper/cache') -const { get } = require('../helper/http') -const { sumTokens2 } = require('../helper/unwrapLPs') - -module.exports = { - sei: { tvl }, -} - -async function tvl(api) { - // 1. get Hypervisor - const hypervisors = await getConfig('yaka-finance/uni-v3-pools', undefined, { - fetcher: async () => { - - const { data } = await get('https://backend.yaka.finance/api/v1/fusions') - const validTypes = ['Wide', 'CL_Stable', 'Narrow', 'Correlated'] - const filteredHypervisors = data - .filter(pool => validTypes.includes(pool.type)) - .map(pool => ({ - hypervisor: pool.address, // Hypervisor - token0: pool.token0.address, - token1: pool.token1.address, - type: pool.type, - })) - return filteredHypervisors - - }, - }) - - // 2. get Algebra Pool - const poolAddresses = await api.multiCall({ - abi: 'function pool() external view returns (address)', - calls: hypervisors.map(h => h.hypervisor), - }) - - // 3. Sort out the Algebra Pool addresses and token pairs - const ownerTokens = hypervisors.map((h, i) => [[h.token0, h.token1], poolAddresses[i]]) - - // 4. TVL - return sumTokens2({ api, ownerTokens }) -} \ No newline at end of file diff --git a/projects/yakafinance/index.js b/projects/yakafinance/index.js deleted file mode 100644 index aa2ce19a7ed..00000000000 --- a/projects/yakafinance/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport('sei', '0xd45dAff288075952822d5323F1d571e73435E929') \ No newline at end of file diff --git a/projects/yala/index.js b/projects/yala/index.js deleted file mode 100644 index 2a7b3509e6f..00000000000 --- a/projects/yala/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const helperBitcoin = require("../helper/chain/bitcoin"); -const helperUnwrapLPs = require("../helper/unwrapLPs"); -const helperSolana = require("../helper/solana"); -const { getConfig } = require("../helper/cache.js"); - -async function tvlInBitcoin() { - const res = await getConfig( - "yala/bitcoin", - "https://raw.githubusercontent.com/yalaorg/yala-defillama/refs/heads/main/config.json" - ); - return helperBitcoin.sumTokens({ owners: res.bitcoin }); -} - -async function tvlInEthereum(api) { - const res = await getConfig( - "yala/ethereum", - "https://raw.githubusercontent.com/yalaorg/yala-defillama/refs/heads/main/config.json" - ); - - // PSM - { - let tokensAndOwners = []; - for (let i = 0; i < res.ethereum.PSM.addresses.length; i++) { - const address = res.ethereum.PSM.addresses[i]; - const token = res.ethereum.PSM.tokens[i]; - tokensAndOwners.push([token, address]); - } - - await helperUnwrapLPs.sumTokens2({ - api, - tokensAndOwners, - permitFailure: true, - }); - } - - // AssetWrapper - { - let tokensAndOwners = []; - for (let i = 0; i < res.ethereum.AssetWrapper.addresses.length; i++) { - const address = res.ethereum.AssetWrapper.addresses[i]; - const token = res.ethereum.AssetWrapper.tokens[i]; - tokensAndOwners.push([token, address]); - } - - await helperUnwrapLPs.sumTokens2({ - api, - tokensAndOwners, - permitFailure: true, - }); - } -} - -async function borrowedInEthereum(api) { - const res = await getConfig( - "yala/ethereum", - "https://raw.githubusercontent.com/yalaorg/yala-defillama/refs/heads/main/config.json" - ); - const amt = await api.call({ - abi: "erc20:totalSupply", - target: res.ethereum.YU, - }); - - api.addCGToken("usd", amt / 1e18); -} - -async function borrowedInSolana(api) { - const res = await getConfig( - "yala/solana", - "https://raw.githubusercontent.com/yalaorg/yala-defillama/refs/heads/main/config.json" - ); - - const ss = await helperSolana.getTokenSupplies([res.solana.YU]); - const amt = ss[res.solana.YU]; - - api.addCGToken("usd", amt / 1e6); -} - -module.exports = { - methodology: - "The Yala Protocol allows users to lock Bitcoin as collateral to mint YU stablecoins. TVL is calculated by tracking the total supply of YBTC tokens (0x27A70B9F8073efE5A02998D5Cc64aCdc9e0Ba589), which represents Bitcoin locked in the protocol. The borrowed/stablecoin metric tracks the total supply of YU tokens (0xE868084cf08F3c3db11f4B73a95473762d9463f7), which represents the USD-pegged stablecoins minted against the Bitcoin collateral. Both token supplies are converted to their respective underlying asset values using CoinGecko price feeds.", - start: "2025-05-16", - bitcoin: { - tvl: tvlInBitcoin, - }, - ethereum: { - tvl: tvlInEthereum, - // borrowed: borrowedInEthereum, // deprecated - }, - // solana: { - // borrowed: borrowedInSolana, // deprecated - // }, -}; diff --git a/projects/yama-finance/index.js b/projects/yama-finance/index.js deleted file mode 100644 index e16eb38a290..00000000000 --- a/projects/yama-finance/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const { CDP, fromBlock, PSM, USDT } = config[api.chain] - const logs = await getLogs({ - api, - target: CDP, - topic: 'AddCollateralType(uint256,address,address,uint256,uint256,uint256,uint256,bool,bool)', - eventAbi: 'event AddCollateralType(uint256 indexed collateralTypeId, address indexed token, address priceSource, uint256 debtFloor, uint256 debtCeiling, uint256 collateralRatio, uint256 interestRate, bool borrowingEnabled, bool allowlistEnabled)', - onlyArgs: true, - fromBlock, - }) - - const ownerTokens = [ - [[USDT], PSM], // psm module - ] - - ownerTokens.push([logs.map(i => i.token), CDP]) - - return sumTokens2({ api, ownerTokens}) -} - -module.exports = { arbitrum: { tvl }} -module.exports.methodology = "mooGmxGLP in CDP Module and USDT in PSM"; - -const config = { - arbitrum: { CDP: '0x1cd97ee98f3423222f7b4cddb383f2ee2907e628', USDT: ADDRESSES.arbitrum.USDT, fromBlock: 72920436, PSM: '0x0e1Ddf8D61f0570Bf786594077CD431c727335A9'}, - polygon_zkevm: { CDP: '0x36C4E69aacBd10C28beBe4cAd2188f3809CB5226', USDT: ADDRESSES.astarzk.USDT, fromBlock: 3678493, PSM: '0x896cd0b08AdC23cA7F9e5dAaA82ca6e6Ea8576D5'}, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) - diff --git a/projects/yamato/index.js b/projects/yamato/index.js deleted file mode 100644 index 4d0176d60c2..00000000000 --- a/projects/yamato/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') -module.exports = { - start: '2023-07-26', - ethereum: { - tvl: sumTokensExport({ owner: '0x9C1F0E3D4BD4A513721C028e1D4610CD17745f0B', tokens: [nullAddress] }), - } -} \ No newline at end of file diff --git a/projects/yamfore/index.js b/projects/yamfore/index.js deleted file mode 100644 index 29919f2cb89..00000000000 --- a/projects/yamfore/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokens2 } = require("../helper/chain/cardano"); -const { nullAddress } = require("../helper/tokenMapping"); - -const V1_PROTOCOL_SCRIPT_ADDRESS = "addr1xywgm3cqq35eh8p83x7gymkgqs8r9zzeg9sgq74d59apepgu3hrsqprfnwwz0zdusfhvspqwx2y9jstqspa2mgt6rjzs2v0fp9" - -async function tvl() { - return sumTokens2({ - owners: [ - V1_PROTOCOL_SCRIPT_ADDRESS, - ], - tokens: [ - nullAddress, - 'c48cbb3d5e57ed56e276bc45f99ab39abe94e6cd7ac39fb402da47ad0014df105553444d' - ], - }) -} - -module.exports = { - cardano: { - tvl - }, - start: '2024-10-14', - methodology: "TVL is equal to all ADA, CBLP and USDM (USDM by Moneta) held in the treasury and unlent funds, collected fees and loan collateral held by the V1 script.", -}; diff --git a/projects/yapeswap/index.js b/projects/yapeswap/index.js deleted file mode 100644 index 8aeedcb1996..00000000000 --- a/projects/yapeswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: getUniTVL({ factory: '0x46aDc1C052Fafd590F56C42e379d7d16622835a2', useDefaultCoreAssets: true, }), - }, -}; diff --git a/projects/yaxis/abi.js b/projects/yaxis/abi.js deleted file mode 100644 index bd2535b7fd5..00000000000 --- a/projects/yaxis/abi.js +++ /dev/null @@ -1,8 +0,0 @@ -const abi = { - yAxisBar: "uint256:availableBalance", - yAxisMetaVault: "uint256:balance", - votingEscrow: "uint256:supply", - vault: "uint256:balanceOfThis", -}; - -module.exports = { abi }; diff --git a/projects/yaxis/constants.js b/projects/yaxis/constants.js deleted file mode 100644 index 11076ddfae6..00000000000 --- a/projects/yaxis/constants.js +++ /dev/null @@ -1,82 +0,0 @@ -const CURRENCIES = { - "LP-3POOL-CURVE": "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - YAXIS: "0x0adA190c81b814548ddC2F6AdC4a689ce7C1FE73", -}; - -const UNISWAP_LPS = [ - { - address: "0xF0E3FdF48661CD10d56692f60BD4eCcd01E9CF64", - tokens: ["yaxis", "ethereum"], - staking: "0xEDaFe410e2f07ab9D7F1B04316D29C2F49dCb104", - }, -]; - -const LINKPOOL_LPS = [ - { - address: "0x21dee38170F1e1F26baFf2C30C0fc8F8362b6961", - tokens: ["yaxis", "ethereum"], - }, -]; - -const VAULTS = [ - { - tokenPoolContract: "0x5a6A4D54456819380173272A5E8E9B9904BdF41B", - token: "MIM3CRV", - tokenContract: "0x5a6A4D54456819380173272A5E8E9B9904BdF41B", - vault: "0x9720346Ba80b668E50A5560c200180515fEbb895", - vaultTokenContract: "0x2C1e6D004d4f06F92464e0208b04D260b3eF46A5", - gauge: "0x9a4A2a2E8f755b77eb512E8A8fE635B803950D51", - }, - { - tokenPoolContract: "0x93054188d876f558f4a66B2EF1d97d16eDf0895B", - token: "RENCRV", - tokenContract: "0x49849C98ae39Fff122806C06791Fa73784FB3675", - vault: "0x0b42B20280216D604bB2B6a8944Fb9027b43dF8d", - vaultTokenContract: "0x0C44393DA03216E934b3A5503DECF7f78174b2f3", - gauge: "0x9AA02011a90736176f9CdC38FF4d1Ed7C90309b6", - }, - { - tokenPoolContract: "0xC4C319E2D4d66CcA4464C0c2B32c9Bd23ebe784e", - token: "ALETHCRV", - tokenContract: "0xC4C319E2D4d66CcA4464C0c2B32c9Bd23ebe784e", - vault: "0xCAB23CA4E75E8A9F12EBCa7f51D6b3EFe97699e7", - vaultTokenContract: "0xeF84fAc432846Ad5f6f1bD4caCcF2849e2818e66", - gauge: "0x43103fE8Bd1049f756370F831634812Eb4eFf7D3", - }, - { - tokenPoolContract: "0xF178C0b5Bb7e7aBF4e12A4838C7b7c5bA2C623c0", - token: "LINKCRV", - tokenContract: "0xcee60cfa923170e4f8204ae08b4fa6a3f5656f3a", - vault: "0x27d9A1dc3725Fa5E4e7128b1db7e9Da75eb3aeE5", - vaultTokenContract: "0x5f6e4DeA25086C973C31857A04a73c66Ef41e43C", - gauge: "0x60fd915B2251dEc19C57eDD75B0a688EA0A3bfe5", - }, -]; - -const YAXIS_GAUGE = "0x951E7726d70017E56756A6807886113708A699Fb"; - -const METAVAULT = "0xBFbEC72F2450eF9Ab742e4A27441Fa06Ca79eA6a"; - -const BAR = "0xeF31Cb88048416E301Fee1eA13e7664b887BA7e8"; - -const CHEF = "0xc330e7e73717cd13fb6ba068ee871584cf8a194f"; - -const VOTING_ESCROW = "0x66b4c0dAA0C65ED1eae84B4d738B9572a79389c4"; - -const STAKING = { - METAVAULT: "0x226f9954A1221cDe805C76CfB312A5d761630E14", - YAXIS: "0x3b09B9ADFe11f92225b4C55De89fa81456595CD9", -}; - -module.exports = { - CURRENCIES, - UNISWAP_LPS, - LINKPOOL_LPS, - METAVAULT, - BAR, - CHEF, - STAKING, - VAULTS, - YAXIS_GAUGE, - VOTING_ESCROW, -}; diff --git a/projects/yaxis/index.js b/projects/yaxis/index.js deleted file mode 100644 index dbc48084522..00000000000 --- a/projects/yaxis/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { staking } = require('../helper/staking') -const { abi } = require("../yaxis/abi.js"); -const constants = require("../yaxis/constants.js"); - -async function tvl(api) { - const token = await api.call({ abi: 'address:want', target: constants.METAVAULT }) - const bal = await api.call({ abi: 'uint256:balance', target: constants.METAVAULT }) - api.add(token, bal) - const tokens = await api.multiCall({ abi: 'address:token', calls: constants.VAULTS.map(v => v.vault) }) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: constants.VAULTS.map(v => v.vault) }) - api.addTokens(tokens, bals) -} - -async function staking_(api) { - const token = constants.CURRENCIES["YAXIS"] - api.add(token, await api.call({ abi: abi.votingEscrow, target: constants.VOTING_ESCROW })) - api.add(token, await api.call({ abi: abi.yAxisBar, target: constants.BAR })) - api.add(token, await api.call({ abi: 'erc20:totalSupply', target: constants.STAKING.YAXIS })) - api.add(token, await api.call({ abi: 'erc20:totalSupply', target: constants.YAXIS_GAUGE })) -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl, - staking: staking_, - pool2: staking(constants.UNISWAP_LPS.map(i => i.staking), constants.UNISWAP_LPS.map(i => i.address)) - }, - start: '2020-09-15', // 09/16/2020 @ 12:00am (UTC+8) -}; diff --git a/projects/yay-staking/index.js b/projects/yay-staking/index.js deleted file mode 100644 index 41610f2382e..00000000000 --- a/projects/yay-staking/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - ethereum: [ - ['0x7122985656e38bdc0302db86685bb972b145bd3c', '0xe86142af1321eaac4270422081c1EdA31eEcFf0c'], // stone - ['0xe1b4d34e8754600962cd944b535180bd758e6c2e', '0x0341d2c2CE65B62aF8887E905245B8CfEA2a3b97'], // eth - ], - soneium: [ - [ADDRESSES.soneium.ASTAR, '0xc8809C9f811324F4c196eb44C20555D4663Aa6c0'], // astar - [ADDRESSES.soneium.vASTR, '0xea7Cf5C2D2509f7A4281F6E8378eaC30420f4206'], // vastar - ['0xc67476893C166c537afd9bc6bc87b3f228b44337', '0xfAb6822ABaBC3987921f2F37B5E793A40E74aDfB'], // nsASTR - YayStakingManager - ] -} - -module.exports = { - start: '2024-08-01', -} - -Object.keys(config).forEach(chain => { - const tokensAndOwners = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ tokensAndOwners }) - } -}) diff --git a/projects/yearn-curating/index.js b/projects/yearn-curating/index.js deleted file mode 100644 index 4874e7f99a7..00000000000 --- a/projects/yearn-curating/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const { getCuratorExport } = require("../helper/curators"); - -const configs = { - methodology: 'Counts all assets that are deposited in all vaults curated by Yearn.', - blockchains: { - ethereum: { - morphoVaultOwners: [ - '0xFc5F89d29CCaa86e5410a7ad9D9d280d4455C12B', - ], - turtleclub_erc4626: [ - '0xF470EB50B4a60c9b069F7Fd6032532B8F5cC014d', - '0xA5DaB32DbE68E6fa784e1e50e4f620a0477D3896', - '0xe1Ac97e2616Ad80f69f705ff007A4bbb3655544a', - '0x77570CfEcf83bc6bB08E2cD9e8537aeA9F97eA2F', - ], - }, - base: { - morphoVaultOwners: [ - '0xFc5F89d29CCaa86e5410a7ad9D9d280d4455C12B', - '0x50b75d586929ab2f75dc15f07e1b921b7c4ba8fa', - ], - }, - katana: { - morphoVaultOwners: [ - '0xFc5F89d29CCaa86e5410a7ad9D9d280d4455C12B', - '0x518C21DC88D9780c0A1Be566433c571461A70149', - ], - // ausd: [ // already counted as part of yearn - // '0x93Fec6639717b6215A48E5a72a162C50DCC40d68' - // ], - // morphoSushi: [ - // '0x9A6bd7B6Fd5C4F87eb66356441502fc7dCdd185B', - // '0x8Fb1c10Ad4417EcA341a1D903Ff437d25ff87a4e', - // '0xAa0362eCC584B985056E47812931270b99C91f9d', - // '0x80c34BD3A3569E126e7055831036aa7b212cB159', - // '0xE007CA01894c863d7898045ed5A3B4Abf0b18f37', - // ], - }, - arbitrum: { - morphoVaultOwners: [ - '0xFc5F89d29CCaa86e5410a7ad9D9d280d4455C12B', - ], - }, - } -} - -module.exports = getCuratorExport(configs) diff --git a/projects/yearn-ether/index.js b/projects/yearn-ether/index.js deleted file mode 100644 index bc11eecfb5e..00000000000 --- a/projects/yearn-ether/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const sdk = require('@defillama/sdk'); -const { sumTokens2, } = require('../helper/unwrapLPs') - -const yETHPools = [ - '0x2cced4ffa804adbe1269cdfc22d7904471abde63', - '0x0ca1bd1301191576bea9b9afcfd4649dd1ba6822', - '0xCcd04073f4BdC4510927ea9Ba350875C3c65BF81', -] - -async function tvl(api) { - for (const pool of yETHPools) { - const calls = [] - for (let i = 0; i < 10; i++) { - calls.push({ - target: pool, - params: [i], - }) - } - - let tokens = await api.api.multiCall({ - abi: 'function assets(uint256) view returns (address)', - calls: calls, - permitFailure: true, - }); - tokens = tokens.filter(token => token !== null) - if (tokens.length > 0) { - await sumTokens2({api, tokens, owner: pool}) - } - } - - return api.getBalances() -} - -module.exports = { - methodology: 'counts the total amount of ETH underlying the LSTs deposited into the yETH pool.', - start: '2023-09-06', - ethereum: { tvl } -}; diff --git a/projects/yearn/index.js b/projects/yearn/index.js deleted file mode 100644 index 1d8b120c2ae..00000000000 --- a/projects/yearn/index.js +++ /dev/null @@ -1,88 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { getConfig } = require('../helper/cache') - -const v1Vaults = [ - '0x597aD1e0c13Bfe8025993D9e79C69E1c0233522e', - '0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c', - '0x37d19d1c4E1fa9DC47bD1eA12f742a0887eDa74a', - '0xACd43E627e64355f1861cEC6d3a6688B31a6F952', - '0x2f08119C6f07c006695E079AAFc638b8789FAf18', - '0xBA2E7Fed597fd0E3e70f5130BcDbbFE06bB94fe1', - '0x2994529C0652D127b7842094103715ec5299bBed', - '0x7Ff566E1d69DEfF32a7b244aE7276b9f90e9D0f6', - '0xe1237aA7f535b0CC33Fd973D66cBf830354D16c7', - '0x9cA85572E6A3EbF24dEDd195623F188735A5179f', - '0xec0d8D3ED5477106c6D4ea27D90a60e594693C90', - '0x629c759D1E83eFbF63d84eb3868B564d9521C129', - '0x0FCDAeDFb8A7DfDa2e9838564c5A1665d856AFDF', - '0xcC7E70A958917cCe67B4B87a8C30E6297451aE98', - '0x98B058b2CBacF5E99bC7012DF757ea7CFEbd35BC', - '0xE0db48B4F71752C4bEf16De1DBD042B82976b8C7', - '0x5334e150B938dd2b6bd040D9c4a03Cff0cED3765', - '0xFe39Ce91437C76178665D64d7a2694B0f6f17fE3', - '0xF6C9E9AF314982A4b38366f4AbfAa00595C5A6fC', - '0xA8B1Cb4ed612ee179BDeA16CCa6Ba596321AE52D', - '0x46AFc2dfBd1ea0c0760CAD8262A5838e803A37e5', - '0x5533ed0a3b83F70c3c4a1f69Ef5546D3D4713E44', - '0x8e6741b456a074F0Bc45B8b82A755d4aF7E965dF', - '0x03403154afc09Ce8e44C3B185C82C6aD5f86b9ab', - '0xE625F5923303f1CE7A43ACFEFd11fd12f30DbcA4', - '0xBacB69571323575C6a5A3b4F9EEde1DC7D31FBc1', - '0x1B5eb1173D2Bf770e50F10410C9a96F7a8eB6e75', - '0x96Ea6AF74Af09522fCB4c28C269C26F59a31ced6', -] -const blacklist = [ - '0xbD17B1ce622d73bD438b9E658acA5996dc394b0d', - '0xc5bDdf9843308380375a611c18B50Fb9341f502A', - '0x07FB4756f67bD46B748b16119E802F1f880fb2CC', - '0x7F83935EcFe4729c4Ea592Ab2bC1A32588409797', - '0x123964EbE096A920dae00Fb795FFBfA0c9Ff4675', - '0x39546945695DCb1c037C836925B355262f551f55', - ...v1Vaults, -].map(i => i.toLowerCase()) - -async function tvl(api) { - let data = await getConfig('yearn/v2-' + api.chain, `https://ydaemon.yearn.fi/vaults?highlight_multi_single&hideAlways=false&orderBy=featuringScore&orderDirection=desc&strategiesDetails=withDetails&strategiesCondition=inQueue&chainIDs=${api.chainId}&limit=2500`) - - if (!Array.isArray(data)) - return; - - let strategies = data.map(v => v.strategies ?? []).flat().map(v => v.address.toLowerCase()) - let vaults = data.filter(i => +i.tvl.tvl > 0).map(v => v.address.toLowerCase()).filter(i => !blacklist.includes(i) && !strategies.includes(i)) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - const calls = [] - const filteredBals = bals.filter((bal, i) => { - const hasBal = +bal > 0 - if (hasBal) calls.push(vaults[i]) - return hasBal - }) - const tokens = await api.multiCall({ abi: 'address:token', calls, permitFailure: true }) - - const tokensAlt = await api.multiCall({ abi: 'address:asset', calls, permitFailure: true }) - filteredBals.forEach((bal, i) => { - const token = tokens[i] || tokensAlt[i] - if (token) api.add(token, bal) - }) - if (api.chain === 'ethereum') { - const tokens = await api.multiCall({ abi: 'address:token', calls: v1Vaults }) - let bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: v1Vaults }) - const ratio = await api.multiCall({ abi: 'uint256:getPricePerFullShare', calls: v1Vaults }) - bals = bals.map((bal, i) => bal * ratio[i] / 1e18) - api.addTokens(tokens, bals) - } - return sumTokens2({ api, resolveLP: true }) -} - - -module.exports = { - doublecounted: true, - hallmarks: [ - [1594944000, "YFI token Launch"], - ] -} - -const chains = ['ethereum', 'fantom', 'arbitrum', 'optimism', 'polygon', 'base', 'katana'] - -chains.forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file diff --git a/projects/yei-fi/index.js b/projects/yei-fi/index.js deleted file mode 100644 index b598252ef91..00000000000 --- a/projects/yei-fi/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { aaveExports } = require("../helper/aave"); -const { mergeExports } = require("../helper/utils"); - -module.exports = mergeExports([ - { - sei: aaveExports(undefined, '', undefined, ['0x60c82a40c57736a9c692c42e87a8849fb407f0d6']), // main - }, - { - sei: aaveExports(undefined, '', undefined, ['0xE77F4334D2Ce16c19F66fD62c653377A39AEFee1']), // solv - } -]) diff --git a/projects/yel/index.js b/projects/yel/index.js deleted file mode 100644 index eb84d198a22..00000000000 --- a/projects/yel/index.js +++ /dev/null @@ -1,183 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { - normalizeAddress, -} = require('../helper/tokenMapping') - -const ADDRESSES = require('../helper/coreAssets.json') - -const config = { - ethereum: { - farms: ['0x5dD8532613B9a6162BA795208D1A01613df26dc5', '0xe7c8477C0c7AAaD6106EBDbbED3a5a2665b273b9'], lps: ['0xc83ce8612164ef7a13d17ddea4271dd8e8eebe5d'], ownTokens: ['0x7815bDa662050D84718B988735218CFfd32f75ea'] - }, - bsc: { - farms: ['0x954b15065e4FA1243Cd45a020766511b68Ea9b6E',], lps: ['0xa5ac78a856345ab1fc8a4550208f42ca34b54e56', '0x8290d3CA64f712de9FB7220353dAa55bf388F3A3'], ownTokens: ['0xd3b71117e6c1558c1553305b44988cd944e97300'] - }, - fantom: { - farms: ['0x954b15065e4FA1243Cd45a020766511b68Ea9b6E', '0x3a6eE00959751A1981D731a5aC15B660a9a8BAd4'], lps: ['0x8BFf7b8B6a14e576a3634d6c0466A19A6E9b170a'], ownTokens: ['0xd3b71117e6c1558c1553305b44988cd944e97300'] - }, - polygon: { - farms: ['0x954b15065e4FA1243Cd45a020766511b68Ea9b6E', '0x0379C1BbE394f835366D2EFDBf2AF09fBa0689A4'], lps: ['0x8bAb87ECF28Bf45507Bd745bc70532e968b5c2De'], ownTokens: ['0xd3b71117e6c1558c1553305b44988cd944e97300'] - }, - blast: { - ownTokensAndOwners: [ - // Token Potion(lToken) slToken - ['0x949185D3BE66775Ea648F4a306740EA9eFF9C567', '0x7d2f5881F0C4B840fcFA2c49F4052d1A004eAf0d', '0xD451E3443Fc9e12d37F64EC0FeD100cE2c10D22A'] - ], - tokensAndOwners: [ - // Token Potion(lToken) slToken - [ADDRESSES.blast.WETH, '0x795a85CD543D0E2d29F7e11e33a20a38A4b5121e', '0x7D8490333315EaAa5e93F3C6983d1e8128D7f50f' ], - [ADDRESSES.blast.BLAST, '0x07BF0Bc908Ef4badF8ec0fB1f77A8dBFe33c33c0', '0x73681f24a4a099E71e0Ddd084f2310bA1E0b3a36' ], - - ['0xd43d8adac6a4c7d9aeece7c3151fca8f23752cf8', '0x074637fA6A6727a8f6E32E354A8f50dbD05EeF61', '0x22bA96d016315412af3Ed2806aF01dc65f5AE4a7' ], - ['0xe36072dd051ce26261bf50cd966311cab62c596e', '0xC107e89b842403D3f3Be56D3b611a74388FF69dA', '0x83809649f0Ef1488a83f000AAEBEcef30eDe9A19' ], - - ], - }, - base: { - ownTokensAndOwners: [ - // Token Potion(lToken) slToken - ['0x949185D3BE66775Ea648F4a306740EA9eFF9C567', '0x1DC50dA045Ad23812c22148e03D62C9691958B47', '0xeB7C12e1395517300BF7D2Dc322B9422eC220af4'] - ], - tokensAndOwners: [ - // Token Potion(lToken) slToken - [ADDRESSES.optimism.WETH_1, '0x56a827776511689d6502c5213425c4BFBE3915d1', '0x7e0BdBf619e480eed7d0772154e4092B019D84ab'], - [ADDRESSES.base.USDC, '0x8ca29479CECa6eE24539508B90A02ec1939B88c6', '0x937DE27905fB22b4f965f54c4254B978EddC70a8'], - ['0x79bbF4508B1391af3A0F4B30bb5FC4aa9ab0E07C', '0x2c21bFc177E297A83EAa87793c29E592fe81CeAC', '0xEB9e6a1dD2f52aC3b4aaba089c815f8CEfea4711'], - ], - }, - sonic: { - ownTokensAndOwners: [ - // Token Potion(lToken) slToken - ['0x949185D3BE66775Ea648F4a306740EA9eFF9C567', '0x6E074300A7Bf53af6e20f1f07dDDfeedAE5598A8', '0x64E869D31aE8A567059872f597A8529CBd88DC98'] - ], - tokensAndOwners: [ - // Token Potion(lToken) slToken - [ADDRESSES.sonic.wS, '0x7Ba0abb5f6bDCbf6409BB2803CdF801215424490', '0x24419689ac4A2D3Dafa07623129545f9b2156405'], - [ADDRESSES.sonic.USDC_e, '0x995171196618b7FE0F0C6D606D79583DD1c8ff60', '0x5573aDB63D3eb7473C68Fdb2033CCbAc51a0Be0a'], - - ['0x79bbF4508B1391af3A0F4B30bb5FC4aa9ab0E07C', '0x92Dd17b19F74E696502Ee9eD478901F24c5d9a9A', '0x153ea9DF2B7977A8670a6EdF10b814d229D8d9Ef'], - ['0x0e0Ce4D450c705F8a0B6Dd9d5123e3df2787D16B', '0xecf1b589F47511D23b026eF53D16FEbB89Aa5f3A', '0x590159e00c05E4C91f562Fe862cc90d75af5d28b'], - ['0x9fDbC3f8Abc05Fa8f3Ad3C17D2F806c1230c4564', '0xdE31054Fb0ee7c6C39641db2e677011E276644aC', '0x665d2A102F7be403236bfa4Dcb6a207b2E41C54B'], - [ADDRESSES.sonic.STS, '0x555733fBa1CA24ec45e7027E00C4B6c5065BaC96', '0x660579889896782DC7c141D1686eB298F3118278'], - ['0x7A0C53F7eb34C5BC8B01691723669adA9D6CB384', '0x85262a5121B8aD219C521665787A6F21eCbBf679', '0xCA729958020a588525d1ba83dD20E88A88551D0a'], - ['0x59524D5667B299c0813Ba3c99a11C038a3908fBC', '0x30Fb515Cf3e0C7fF94Aa923788B466F44768cAA4', '0x766fCe41F2521f311c77531e4aCA904f5e30fF52'], - - [ADDRESSES.sonic.scUSD, '0x2C7A01DE0c419421EB590F9ECd98cBbca4B9eC2A', '0x4E0B0a8c601b0F977d7a72476Ca3ea8A387f5c77'], - [ADDRESSES.sonic.scETH, '0x8a3B47d5e13fCeD000dC4cDcbE28EAA2A5Cc24e1', '0x81C7eD1CD4582E61CF5291496E3EEa1dcd2423cC'], - - ['0xb1e25689D55734FD3ffFc939c4C3Eb52DFf8A794', '0xde1F938A7EfE5203E66B4D0efA667f116cBC7C45', '0x4b1C957ff3b9d55f382Be1a3C86B7eA54Be6a93a'], - - ['0xE51EE9868C1f0d6cd968A8B8C8376Dc2991BFE44', '0x4C676Aa525E3f2DC98608cf426AffDFbC2335C5f', '0x8644792341e8090DBbE10e3Eef73ae2d773D9957'], - ['0x44E23B1F3f4511b3a7e81077Fd9F2858dF1B7579', '0xB84ea62042A39B31c90eF10c3F1E8F57cE5ecCe6', '0x49203E969E82e8a016c288B1b87D2acF5DA3b2B9'], - ['0xf26Ff70573ddc8a90Bd7865AF8d7d70B8Ff019bC', '0xfecdA49b9ffB2D71e90D9519b29CACd862026976', '0x667833F132951F69148cbE19421ecfe4FD7fe291'], - ['0x3333111A391cC08fa51353E9195526A70b333333', '0x75a65a8920Da26eBcCb79001ddE5F51AF0160006', '0xD22F6fafaCA3AAa8861d4eB7f4bCc07d0d6a7817'], - ['0x674a430f531847a6f8976A900f8ace765f896a1b', '0xE35E10781CdDb0f6eb7Ca752DBed699B43334Bb1', '0x7c9fe02Ab81780017747ccA0173f65925b17d66b'], - ['0x005851f943ee2957B1748957F26319e4f9EdeBC1', '0xD8a5d3946233C16633043f57Cfc2d0a75064a625', '0x17A3FBECDDf76378BF6B278952E799658D620d05'], - ['0x3a516e01f82c1e18916ED69a81Dd498eF64bB157', '0xb511CDa6d5796C5FedF072e98E520BC641Ee59Ea', '0xb576C844979b0D9B765ff5C1e2462C2dF295e665'], - ['0xF97d438BC03aD0F75B83ce5714c9619880B305bc', '0x8f415af8A6b16d229a1552506a8484313307192a', '0x083c99b0f87Ccc1574985c5A7E81bC453FaBA0BE'], - ['0x8ad39144B37741573F85aa03D6c3E817A0054161', '0x02A58828057d8573D75ad8F1F83eCeb2bD3B3f71', '0x7F031E27520b2522fF8541B96FBA7650c56A6B8D'], - ['0x7F883dA3B0d77978075f7C9c03E1B9F461CA1B8d', '0x2916e0aC8d4a1a8472F1F83a4233E1a891fd7361', '0x4c98C556c47b589609df58b6D4138baC92690F1b'], - ['0x0e899dA2aD0817ed850ce68f7f489688E4D42D9D', '0x828CAd5913CDbdf53A7a538647c8a27CB04a7112', '0x1512eF935f775C03ef8eC83B9D3446D58E8f2544'], - ['0x50c42dEAcD8Fc9773493ED674b675bE577f2634b', '0x24B77F92692496a374d67e277e6991DE5Ad73a48', '0x5d061A289bAFf9ACB7bf747f7922C58C2FA2d0aa'], - ['0xddddd1b4a383dcB89938bC8b8964Cad3C632Fad0', '0xBf7D0b0A5F520C7a4E45cf907502072846488d70', '0xd7BF1AeAF3CAf000F735F17d7cf3f88a7F240A45'], - ], - }, - avax: { - ownTokensAndOwners: [ - // Token Potion(lToken) slToken] - ['0x949185D3BE66775Ea648F4a306740EA9eFF9C567', '0x9F240CB3D8115493cf5878385243ffF635BcB233', '0xbF014638011EcFFAc937A51bf232f8720af537b0'] - ], - tokensAndOwners: [ - // Token Potion(lToken) slToken - [ADDRESSES.avax.WAVAX, '0xc46568ACB7ff1FfcbBA72dFccb1f313D8e972817', '0x676bef47D08BC04ABdb00d01FA923C9F1fa26449'], - [ADDRESSES.avax.USDC, '0x60ac2e90EE3e239900d84CaF8511043B822Af3D0', '0x294fbF8c2F123d1f4c54C022C3937Fc96189fD98'], - ['0x472F1bd4F431cEAE95c7f3382f715C0B1961ab8c', '0x516712404013200B499Cd8fAE4575E5d48F6Ba65', '0xdBD3A89aeF18d4280A82b8B319E66BD953b79983'], - ['0x6F43fF77A9C0Cf552b5b653268fBFe26A052429b', '0x75962Abbc213Bcd1bEa756A7739344F9adD3721a', '0xA1e6630D9934CE1501931819C91Ca5686d74aA0d'], - ['0xe088d859D8BcE513b76Dc11C05D559254e28A336', '0x06aE6520E94828D4BBFB666E1251cE7fdaa9a574', '0x018399D41b340237B8eFf8c7A34081FE0B7aACCA'], - ['0xB8d7710f7d8349A506b75dD184F05777c82dAd0C', '0x43CD2EFa76dc07FeAE4992895F1e5600AECC9854', '0x71FA7e8189FD3faD561D78f3fE074CF0d3939c46'], - ['0xe03a08BD497a0F1dAed8F81D835C09242Bb82BCa', '0xCf4d4ee0f6d94a19D7f1F552B099AEAA9aC312Fb', '0x026D975175A66e327dbCd5305c223309c7D479d5'], - ['0x5DDc8d968a94cf95CfeB7379F8372d858B9C797d', '0xa15ab13750a7CEe75418aC22eA5Cd7203b7D2f63', '0xA99d7E9d9bCCB1251e6b846052f5a559D27740cd'], - ['0x34a528Da3b2EA5c6Ad1796Eba756445D1299a577', '0xF593F1559e33128397688C3daB80b3Fc50fB7073', '0xce7e75A920E86d402332770ca3881344e7328B67'], - ['0x91a1C5a6001e6Aa628f49094658C65A19794D7f6', '0x2663fC0f779296B914bB57D83a91b583d421E674', '0x784BB11F880EC1E6baB91ca518De88b9041D3461'], - ['0xAAAB9D12A30504559b0C5a9A5977fEE4A6081c6b', '0x4430940B801882D465CdB8F811fCf5700EBeAD2A', '0xFA3e93F02ab2127ddb6386481276454297c039eA'], - ] - } -} - -async function tvl( api, coveredAssets){ - for(const assets of coveredAssets){ - const originalToken = normalizeAddress(assets[0]) - const potion = normalizeAddress(assets[1]) - const slToken = normalizeAddress(assets[2]) - - let totalTokenBalance = 0 - const balances = await api.multiCall({ - abi : 'erc20:balanceOf', - calls : [ - { - target : originalToken, - params : potion - }, - { - target : potion, - params : slToken - } - ] - }) - - let potionSupply = Number( - await api.call({ - abi : 'erc20:totalSupply', - target : potion, - }) - ) - - const tokenBalanceOnPotion = Number(balances[0]) - const ltokenBalanceOnSLToken = Number(balances[1]) - - const cbr = tokenBalanceOnPotion / potionSupply - - totalTokenBalance = tokenBalanceOnPotion + (ltokenBalanceOnSLToken * cbr) - - api.add(originalToken, totalTokenBalance) - } -} - -Object.keys(config).forEach(chain => { - const { farms = [], lps = [], ownTokens = [], ownTokensAndOwners, tokensAndOwners, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - if (api.chain === 'bsc') { - const lpStaked = await api.call({ abi: 'uint256:totalLP', target: '0x660f09cF84F8f366Bc653942b54B114d0Ec9E8a2' }) - api.add('0xF65C1C0478eFDe3c19b49EcBE7ACc57BB6B1D713', lpStaked) - } else if (api.chain === 'fantom') { - const lpStaked = await api.call({ abi: 'uint256:totalLP', target: '0x61EB6f6bC4Ec28203e9973B44967dA263B3Ec0e3' }) - api.add('0xEc7178F4C41f346b2721907F5cF7628E388A7a58', lpStaked) - } - if (farms.length) { - const res = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: 'function poolInfo(uint256) view returns (address stakingToken, uint256, uint256, uint32, uint16)', calls: farms, groupedByInput: true }) - const ownerTokens = res.map((r, i) => ([r.map(i => i.stakingToken), farms[i]])) - await sumTokens2({ api, ownerTokens, blacklistedTokens: [...lps, ...ownTokens], resolveLP: true, }) - } - - if (tokensAndOwners){ - await tvl(api, tokensAndOwners) - } - - }, - pool2: async (api) => { - if (farms.length && lps.length) - await sumUnknownTokens({ api, owners: farms, tokens: lps, resolveLP: true, useDefaultCoreAssets: true, lps, }) - - }, - staking: async (api) => { - if (farms.length && ownTokens.length) - await sumUnknownTokens({ api, owners: farms, tokens: ownTokens, useDefaultCoreAssets: true, lps, }) - - if (ownTokensAndOwners){ - await tvl(api, ownTokensAndOwners) - } - }, - } -}) diff --git a/projects/yelay-v3/abi.json b/projects/yelay-v3/abi.json deleted file mode 100644 index c48fb238929..00000000000 --- a/projects/yelay-v3/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "underlyingAsset": "function underlyingAsset() external view returns (address)", - "totalAssets": "function totalAssets() external view returns (uint256)" -} diff --git a/projects/yelay-v3/index.js b/projects/yelay-v3/index.js deleted file mode 100644 index 9cf5be02b6f..00000000000 --- a/projects/yelay-v3/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const abi = require("./abi.json"); -const {fetchURL} = require("../helper/utils"); -const { staking } = require('../helper/staking') - -const vaultsEndpoint = (chainId) => - `https://lite.api.yelay.io/v2/vaults?chainId=${chainId}`; - -const chains = [ - {chainId: 1, name: "ethereum"}, - {chainId: 146, name: "sonic"}, - {chainId: 8453, name: "base"}, -]; - -module.exports = { - methodology: `Counting totalAssets held by vaults.`, -}; - -chains.forEach(({chainId, name}) => { - module.exports[name] = { - tvl: async (api) => { - const vaults = await fetchURL(vaultsEndpoint(chainId)).then( - (r) => r.data - ); - const underlying = await api.multiCall({ - abi: abi.underlyingAsset, - calls: vaults.map((v) => v.address), - }); - const balances = await api.multiCall({ - abi: abi.totalAssets, - calls: vaults.map((v) => v.address), - }); - underlying.forEach((u, i) => api.addTokens(u, balances[i])); - return api.getBalances(); - }, - ...(name === 'ethereum' && { - staking: staking('0x8e933387AFc6F0F67588e5Dac33EBa97eF988C69', '0xAEe5913FFd19dBcA4Fd1eF6F3925ed0414407d37'), - }), - }; -}); diff --git a/projects/yellow/index.js b/projects/yellow/index.js deleted file mode 100644 index c62f69ac39a..00000000000 --- a/projects/yellow/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const vaultAddress = '0xb5F3a9dD92270f55e55B7Ac7247639953538A261' - -const vaults = { - ethereum: {}, - linea: {}, - polygon: {}, - scroll: {}, -} - -module.exports = { - methodology: 'The total amount of assets locked in the Yellow Wallet.', -} - -Object.keys(vaults).forEach((chain) => { - const { vault = vaultAddress, tokens = [] } = vaults[chain] - - module.exports[chain] = { - tvl: sumTokensExport({ owner: vault, tokens, fetchCoValentTokens: true }), - } -}) diff --git a/projects/yetiFinance/index.js b/projects/yetiFinance/index.js deleted file mode 100644 index b458a540349..00000000000 --- a/projects/yetiFinance/index.js +++ /dev/null @@ -1,14 +0,0 @@ -// https://yetifinance.medium.com/yeti-finance-wind-down-55913bbf6aed -module.exports = { - misrepresentedTokens: true, - start: '2022-04-15', - deadFrom: '2324-02-10', - hallmarks: [ - ['2023-12-28', 'Protocol decides to wind down'], - ], - avax:{ - tvl: () => ({}), - pool2: () => ({}), - staking: () => ({}), - }, -}; diff --git a/projects/yetiswap/index.js b/projects/yetiswap/index.js deleted file mode 100644 index da57e3b169d..00000000000 --- a/projects/yetiswap/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - avax:{ - tvl: getUniTVL({ factory: '0x58C8CD291Fa36130119E6dEb9E520fbb6AcA1c3a', useDefaultCoreAssets: true, }), - }, -} \ No newline at end of file diff --git a/projects/yfdai/index.js b/projects/yfdai/index.js deleted file mode 100644 index 52133f95d9c..00000000000 --- a/projects/yfdai/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') - -const yfdaiTokenAddress = "0xf4CD3d3Fda8d7Fd6C5a500203e38640A70Bf9577"; -const YfDaiStakingAdddress = "0x44d771D0C998f524ff39aB6Df64B72bce1d09566"; -const YfDaiSafetradeStakingAddress = "0x4599cDa238Fb71573fd5A0076C199320e09BCfF0"; -const weth = ADDRESSES.ethereum.WETH -const dai = ADDRESSES.ethereum.DAI -const wethVault = "0x290e5484601986667dC6cA72119f2B85260Ca92E" -const daiVault = "0x7e537E8B5028a32166F06C8664cdE9D608487428" -const YfDaiETHLP72HRSVault = "0x75E9F410e8d1D7240b67ec6FE35FA37580b814d9"; -const YfDaiETHLP30DayVault = "0x8D704D4107CBE5ebE8c0236C5506b30Bf8Bad305"; -const YfDaiETHLP60DayVault = "0x26572bf2620108cb5006987e6348c07dc4e14a0f"; -const YfDaiETHLP90DayVault = "0x175d6cbaeff93734ada4c5430815f2208a6b040c"; -const impulsevenStakingAddress = "0xc0c135D29ba6BB1Ca5F88571A0c45807C3015c64"; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokensAndOwners: [ - [yfdaiTokenAddress, YfDaiSafetradeStakingAddress], - [weth, wethVault], - [dai, daiVault], - ]}), - staking: staking([YfDaiStakingAdddress, YfDaiETHLP72HRSVault, YfDaiETHLP30DayVault, YfDaiETHLP60DayVault, YfDaiETHLP90DayVault, impulsevenStakingAddress,], yfdaiTokenAddress) - }, -} diff --git a/projects/yfii/abi.json b/projects/yfii/abi.json deleted file mode 100644 index 2163bf4331d..00000000000 --- a/projects/yfii/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "token": "address:token", - "balance": "uint256:balance" -} \ No newline at end of file diff --git a/projects/yfii/index.js b/projects/yfii/index.js deleted file mode 100644 index 4c9d659208f..00000000000 --- a/projects/yfii/index.js +++ /dev/null @@ -1,110 +0,0 @@ -/*================================================== - Modules - ==================================================*/ - -const sdk = require('@defillama/sdk'); -const abi = require('./abi'); - -const BigNumber = require('bignumber.js'); - -/*================================================== - Settings - ==================================================*/ - -const iVaultAddresses = [ - '0x72Cf258c852Dc485a853370171d46B9D29fD3184', //iUSDT - '0x3E3db9cc5b540d2794DB3861BE5A4887cF77E48B', //iYCRV - '0x1e0DC67aEa5aA74718822590294230162B5f2064', //iDAI - '0x4243f5C8683089b65a9F588B1AE578d5D84bFBC9', //iTUSD - '0x23B4dB3a435517fd5f2661a9c5a16f78311201c1', //iUSDC - '0xa8EA49a9e242fFfBdECc4583551c3BcB111456E6', //iETH - '0xc46d2fC00554f1f874F37e6e3E828A0AdFEFfbcB', //iBUSD - '0x26AEdD2205FF8a87AEF2eC9691d77Ce3f40CE6E9', //iHBTC -] - -const rewardPool = [ - '0x6A77c0c917Da188fBfa9C380f2E60dd223c0c35a', //mefi - '0x3d367C9529f260B0661e1C1E91167C9319ee96cA', //pool4 iUSDT -] - -const yfii = '0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83' - - -/*================================================== - TVL - ==================================================*/ - -async function tvl(timestamp, block) { - const balances = {}; - const iVaultToUnderlyingToken = {}; - - - - // Get iVault's underlying tokens - const underlyingIVaultAddressResults = await sdk.api.abi.multiCall({ - calls: iVaultAddresses.map((address) => ({ - target: address - })), - abi: abi["token"] - }); - - underlyingIVaultAddressResults.output.forEach((token) => { - const underlyingTokenAddress = token.output; - const iVaultAddress = token.input.target; - iVaultToUnderlyingToken[iVaultAddress] = underlyingTokenAddress; - if (!balances.hasOwnProperty(underlyingTokenAddress)) { - balances[underlyingTokenAddress] = 0; - } - }); - - // Get iVault's balances in underlying token - const iVaultBalanceResults = await sdk.api.abi.multiCall({ - block, - calls: iVaultAddresses.map((address) => ({ - target: address - })), - abi: abi["balance"] - }); - - iVaultBalanceResults.output.forEach((tokenBalanceResult) => { - const valueInToken = tokenBalanceResult.output; - const iVaultAddress = tokenBalanceResult.input.target; - balances[iVaultToUnderlyingToken[iVaultAddress]] = BigNumber(balances[iVaultToUnderlyingToken[iVaultAddress]]).plus(valueInToken); - }); - - - // Get reward pool - const yfiiRewardBalanceResults = await sdk.api.abi.multiCall({ - block, - calls: rewardPool.map((address) => ({ - target: yfii, - params: address, - })), - abi: 'erc20:balanceOf', - }); - - balances[yfii] = new BigNumber(0); - yfiiRewardBalanceResults.output.forEach((tokenBalanceResult) => { - const target = tokenBalanceResult.input.target; - const output = tokenBalanceResult.output; - - balances[target] = balances[target].plus(BigNumber(output)); - }); - - - - - - - return balances; -} - -/*================================================== - Exports - ==================================================*/ - -module.exports = { - doublecounted: true, - start: '2020-09-15', // 09/16/2020 @ 12:00am (UTC+8) - ethereum: { tvl } -}; diff --git a/projects/yfx-v3/index.js b/projects/yfx-v3/index.js deleted file mode 100644 index ec531f9d8fd..00000000000 --- a/projects/yfx-v3/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const manager = '0x29bd0372A8A087e4d34d4098259Cd298d554BAc4'; -const vault = '0x48F4B8f77b1E0EFBBF17b2082F12829b87FD1933'; - -async function tvl(api) { - let pools = await api.call({ target: manager, abi: "address[]:getAllPools", }); - const tokens = await api.multiCall({ abi: 'address:getBaseAsset', calls: pools }) - return api.sumTokens({ owner: vault, tokens}) -} - -module.exports = { - methodology: 'Count balance of each pool from the Vault', - arbitrum: { - tvl, - }, -} \ No newline at end of file diff --git a/projects/yfx-v4/index.js b/projects/yfx-v4/index.js deleted file mode 100644 index 7bca17e6ab4..00000000000 --- a/projects/yfx-v4/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const config = { - arbitrum: { manager: "0xFE1ca968afbadEd3BF2CB685451C858Deb46Ce31", vault: "0x50b516a9DB620aB67A33d895DAF4Bd1c294b9517" }, - base: { manager: "0xfD38EaD11eaa5D566dc331848fF495B3D5cfb79F", vault: "0xfcDaC5524EC86223216643384f5c59C65560d673" } -} - -module.exports = { - methodology: 'Count balance of each pool from the Vault', -} - -Object.keys(config).forEach(chain => { - const { vault, manager } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - let pools = await api.call({ target: manager, abi: "address[]:getAllPools", }); - const tokens = await api.multiCall({ abi: 'address:getBaseAsset', calls: pools }) - return api.sumTokens({ owner: vault, tokens }) - } - } -}) diff --git a/projects/yiedl-vaults/abi.js b/projects/yiedl-vaults/abi.js deleted file mode 100644 index 37defee50bd..00000000000 --- a/projects/yiedl-vaults/abi.js +++ /dev/null @@ -1,15 +0,0 @@ -const opsManagerAbi = { - operationsCache: "function operationsCache() view returns (uint256, uint8, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256)", - portfolioRotationStartTimestamp: "uint256:portfolioRotationStartTimestamp", - portfolioRotationEndTimestamp: "uint256:portfolioRotationEndTimestamp", - processStartTimestamp: "uint256:processStartTimestamp", - getFlatUsd: "function getFlatUsd() view returns (uint256)", - getAeps: "function getAeps(address[] memory assets) view returns (uint256[] memory)", - getPortfolioAddresses: "function getPortfolioAddresses(uint256 start, uint256 end) view returns (address[] memory)", -}; - -const opsHelperAbi = { - getAssetValuesForPortfolio: "function getAssetValuesForPortfolio(address om, uint256 start, uint256 end) view returns (address[] memory assets, uint256[] memory values, int128[] memory sizes, uint256[] memory aeps, uint256[] memory prices, uint256 flatUsd, uint256 totalSupply)", -} - -module.exports = { opsManagerAbi, opsHelperAbi }; diff --git a/projects/yiedl-vaults/constants.js b/projects/yiedl-vaults/constants.js deleted file mode 100644 index f443fb29318..00000000000 --- a/projects/yiedl-vaults/constants.js +++ /dev/null @@ -1,24 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const VAULTS = { - Neutral: { - Vault: '0x90A039797E93f2c671DE25DD24E5333b5e8F9Ab3', - OpsManager: '0x7fB9Be6824f34Ea4B026C3d2514BFB690a066500', - }, - Up: { - Vault: '0x2494A64ea1B3AB49b0A9F185087E77BC2049863C', - OpsManager: '0xb7BA0796F58BE4ef03f318e3624992D279D25F95', - }, - Down: { - Vault: '0xE6f8f2af4e9a5C2D71Ba37FfE7646d7201ff6d42', - OpsManager: '0x3126fa715BaF45023166B6Cd871dBeB19b785811', - }, -}; - -const HELPER = "0x8A2dD0eabE8b1A1066731C43AaC08dCDd50fcA63" -const SUSD = ADDRESSES.optimism.sUSD - -module.exports = { - VAULTS, - HELPER, - SUSD -}; diff --git a/projects/yiedl-vaults/index.js b/projects/yiedl-vaults/index.js deleted file mode 100644 index 300d674eaf1..00000000000 --- a/projects/yiedl-vaults/index.js +++ /dev/null @@ -1,95 +0,0 @@ -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); -const { opsManagerAbi, opsHelperAbi } = require("../yiedl-vaults/abi"); -const { VAULTS, HELPER, SUSD } = require("../yiedl-vaults/constants"); -const { get } = require("../helper/http"); - -const CHAIN = "optimism"; -const BLOCK_URL = `https://coins.llama.fi/block/${CHAIN}`; -const PORTFOLIO_ROTATION_TIMEOUT = 8 * 60 * 60; - -async function getClosestBlockBefore(timestamp) { - const data = await get(`${BLOCK_URL}/${timestamp}`); - if (data['timestamp'] > timestamp) { - return data['height'] - 1; - } - return data['height']; -} - -async function getEligibleBlock(timestamp, vault) { - const portfolioRotationStart = (await sdk.api.abi.call({ - abi: opsManagerAbi.portfolioRotationStartTimestamp, - target: vault.OpsManager, - chain: CHAIN, - })).output; - - const portfolioRotationEnd = (await sdk.api.abi.call({ - abi: opsManagerAbi.portfolioRotationEndTimestamp, - target: vault.OpsManager, - chain: CHAIN, - })).output; - - const portfolioRotationActive = - (portfolioRotationStart > portfolioRotationEnd) && - (timestamp <= (portfolioRotationStart + PORTFOLIO_ROTATION_TIMEOUT)); - - if (portfolioRotationActive) { - return await getClosestBlockBefore(portfolioRotationStart); - } - - const phase = (await sdk.api.abi.call({ - abi: opsManagerAbi.operationsCache, - target: vault.OpsManager, - chain: CHAIN, - })).output[0]; - - if (phase > 0) { - const phaseStart = (await sdk.api.abi.call({ - abi: opsManagerAbi.processStartTimestamp, - target: vault.OpsManager, - chain: CHAIN, - })).output; - - return await getClosestBlockBefore(phaseStart); - } - - return undefined; -} - -async function tvlPerVault(timestamp, block, vault) { - const eligibleBlock = await getEligibleBlock(timestamp, vault); - return await _computeTvl(vault, eligibleBlock); -} - -async function _computeTvl(vault, eligibleBlock) { - const [assets, values, sizes, aeps, prices, flatUsd, totalSupply] = - (await sdk.api.abi.call({ - abi: opsHelperAbi.getAssetValuesForPortfolio, - params: [vault.OpsManager, 0, 0], - target: HELPER, - block: eligibleBlock, - chain: CHAIN, - })).output; - - let sum = values.reduce((accumulator, currentValue) => { - return (new BigNumber(accumulator)).plus(new BigNumber(currentValue)); - }, new BigNumber(0)); - sum = sum.plus(new BigNumber(flatUsd)); - return sum; -} - -async function tvl(api) { - const vaultTypes = Object.keys(VAULTS); - for (const vaultType of vaultTypes) { - const amount = await tvlPerVault(api.timestamp, api.block, VAULTS[vaultType]); - api.add(SUSD, amount.toNumber()); - } -} - -module.exports = { - optimism: { - tvl, - }, - start: '2023-12-20', // 2023-12-20 12:00:00 UTC - methodology: 'Calculates the total value of positions held by the YIEDL Vaults in Synthetix Perpetuals.' -}; diff --git a/projects/yield-basis/index.js b/projects/yield-basis/index.js deleted file mode 100644 index 9f2a4417846..00000000000 --- a/projects/yield-basis/index.js +++ /dev/null @@ -1,35 +0,0 @@ - - -const abi = { - "markets": "function markets(uint256 arg0) view returns ((address asset_token, address cryptopool, address amm, address lt, address price_oracle, address virtual_pool, address staker))", - "market_count": "uint256:market_count", -} - -const config = { - ethereum: { factory: '0x370a449FeBb9411c95bf897021377fe0B7D100c0' } -} - -Object.keys(config).forEach(chain => { - const { factory, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const markets = await api.fetchList({ lengthAbi: abi.market_count, itemAbi: abi.markets, target: factory }) - - const lpBalances = await api.multiCall({ abi: 'erc20:balanceOf', calls: markets.map(i => ({ target: i.cryptopool, params: i.amm })) }) - const lpSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: markets.map(i => i.cryptopool) }) - const balanceInLpPools = await api.multiCall({ abi: 'erc20:balanceOf', calls: markets.map(lp => ({ target: lp.asset_token, params: lp.cryptopool })) }) - const tokensAndOwners = markets.map((m, i) => [m.asset_token, m.amm]) // check if any token is retain in amm contract and put in curve lp contract - - - balanceInLpPools.forEach((v, i) => { - const ratio = lpBalances[i] / lpSupply[i] - api.add(markets[i].asset_token, v * ratio) - }) - - - return api.sumTokens({ tokensAndOwners }) - } - } -}) - -module.exports.doublecounted = true // all the tokens end up on curve \ No newline at end of file diff --git a/projects/yield-fi/index.js b/projects/yield-fi/index.js deleted file mode 100644 index 612b2e75cd0..00000000000 --- a/projects/yield-fi/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const { api2 } = require("@defillama/sdk"); - -const yusd_config = { - ethereum: "0x19Ebd191f7A24ECE672ba13A302212b5eF7F35cb", - optimism: '0x4772D2e014F9fC3a820C444e3313968e9a5C8121', - arbitrum: '0x4772D2e014F9fC3a820C444e3313968e9a5C8121', - base: '0x4772D2e014F9fC3a820C444e3313968e9a5C8121', - sonic: '0x4772D2e014F9fC3a820C444e3313968e9a5C8121', - plume_mainnet: '0x4772D2e014F9fC3a820C444e3313968e9a5C8121', - katana: "0x4772D2e014F9fC3a820C444e3313968e9a5C8121", - bsc: "0x4772D2e014F9fC3a820C444e3313968e9a5C8121", - avax: "0x4772D2e014F9fC3a820C444e3313968e9a5C8121", - tac: "0x4772D2e014F9fC3a820C444e3313968e9a5C8121", -} - -const vyusd_config = { - ethereum: "0x2e3C5e514EEf46727DE1FE44618027A9b70D92FC", - optimism: '0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de', - arbitrum: '0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de', - base: '0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de', - sonic: '0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de', - plume_mainnet: '0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de', - katana: "0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de", - bsc: "0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de", - avax: "0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de", - tac: "0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de", -} - -const yeth_config = { - ethereum: "0x8464F6eCAe1EA58EC816C13f964030eAb8Ec123A", -} - -const vyeth_config = { - ethereum: "0x3073112c2c4800b89764973d5790ccc7fba5c9f9", -} - -const ybtc_config = { - ethereum: "0xa01200b2e74DE6489cF56864E3d76BBc06fc6C43", -} - -const vybtc_config = { - ethereum: "0x1e2a5622178f93EFd4349E2eB3DbDF2761749e1B", -} - -const lockbox = "0x659b5bc7F2F888dB3D5901b78Cdb34DF270E2231"; - -const l2Chains = Object.keys(yusd_config).filter(chain => chain !== 'ethereum') - -l2Chains.forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const supply = await api.multiCall({ calls: [yusd_config[chain], vyusd_config[chain]], abi: 'erc20:totalSupply' }) - api.add([yusd_config[chain], vyusd_config[chain]], [supply[0], supply[1]]); - } - } -}); - -module.exports['ethereum'] = { - tvl: async (api) => { - const lockboxSupply = await api2.erc20.balanceOf({ - target: yusd_config['ethereum'], - owner: lockbox - }) - const lockboxSupplyVyusd = await api2.erc20.balanceOf({ - target: vyusd_config['ethereum'], - owner: lockbox - }) - const lockboxSupplyYeth = await api2.erc20.balanceOf({ - target: yeth_config['ethereum'], - owner: lockbox - }) - const lockboxSupplyVyeth = await api2.erc20.balanceOf({ - target: vyeth_config['ethereum'], - owner: lockbox - }) - const lockboxSupplyYbtc = await api2.erc20.balanceOf({ - target: ybtc_config['ethereum'], - owner: lockbox - }) - const lockboxSupplyVybtc = await api2.erc20.balanceOf({ - target: vybtc_config['ethereum'], - owner: lockbox - }) - const ethSupply = await api.multiCall({ calls: [yusd_config['ethereum'], vyusd_config['ethereum'], yeth_config['ethereum'], vyeth_config['ethereum'], ybtc_config['ethereum'], vybtc_config['ethereum']], abi: 'erc20:totalSupply' }) - const supply = (ethSupply[0] - lockboxSupply.output); - const supplyVyusd = (ethSupply[1] - lockboxSupplyVyusd.output); - const supplyYeth = (ethSupply[2] - lockboxSupplyYeth.output); - const supplyVyeth = (ethSupply[3] - lockboxSupplyVyeth.output); - const supplyYbtc = (ethSupply[4] - lockboxSupplyYbtc.output); - const supplyVybtc = (ethSupply[5] - lockboxSupplyVybtc.output); - api.add([yusd_config['ethereum'], vyusd_config['ethereum'], yeth_config['ethereum'], vyeth_config['ethereum'], ybtc_config['ethereum'], vybtc_config['ethereum']], [supply, supplyVyusd, supplyYeth, supplyVyeth, supplyYbtc, supplyVybtc]); - } -} \ No newline at end of file diff --git a/projects/yield-millionaire/index.js b/projects/yield-millionaire/index.js deleted file mode 100644 index e7d296cc64e..00000000000 --- a/projects/yield-millionaire/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const BASE_CONTRACT = "0xD4F3Ba2Fe4183c32A498Ad1ecF9Fc55308FcC029"; -const USDC_BASE = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"; -const AUSDC_BASE = "0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB"; - - -async function tvl(api) { - const balance = await api.call({ - abi: "erc20:balanceOf", - target: AUSDC_BASE, - params: [BASE_CONTRACT], - }); - - // agregamos al TVL - api.add(USDC_BASE, balance); -} - -module.exports = { - methodology: - "Total value of all coins held in the Yield Millionaire contracts", - base: { - tvl, - }, -}; diff --git a/projects/yieldbank/index.js b/projects/yieldbank/index.js deleted file mode 100644 index 8a58de67673..00000000000 --- a/projects/yieldbank/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - kava: { - tvl: () => ({}), - staking: () => ({}) - }, - deadFrom: "2023-12-01", -} diff --git a/projects/yieldedu/index.js b/projects/yieldedu/index.js deleted file mode 100644 index d5ef8ddbabd..00000000000 --- a/projects/yieldedu/index.js +++ /dev/null @@ -1,24 +0,0 @@ - -const { sumTokens2 } = require('../helper/unwrapLPs') - -const YLD_CONTRACT = "0x145D410f1c831F185B5815fe4fD76308c76240f9"; -const dEDU_CONTRACT = "0x597FFfA69e133Ee9b310bA13734782605C3549b7"; -const WEDU_CONTRACT = "0xd02E8c38a8E3db71f8b2ae30B8186d7874934e12" - -async function tvl(api) { - const balance = await api.call({ - target: dEDU_CONTRACT, - abi: 'erc20:balanceOf', - params: [YLD_CONTRACT], - chain: 'occ', - }); - - api.add(WEDU_CONTRACT, BigInt(balance)) - return sumTokens2({ api, chain: 'occ' }) -} - -module.exports = { - occ: { - tvl, - } -} diff --git a/projects/yieldfields/index.js b/projects/yieldfields/index.js deleted file mode 100644 index 3caa7cd4bcc..00000000000 --- a/projects/yieldfields/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: 'The YieldFields subgraph and the YieldFields factory contract address are used to obtain the balance held in every LP pair.', - bsc: { - tvl: getUniTVL({ factory: '0x0A376eE063184B444ff66a9a22AD91525285FE1C', useDefaultCoreAssets: true }), - }, - start: '2021-05-17', // May-17-2021 03:54:42 PM -}; diff --git a/projects/yieldflow-ytrade/index.js b/projects/yieldflow-ytrade/index.js deleted file mode 100644 index c7703778ae9..00000000000 --- a/projects/yieldflow-ytrade/index.js +++ /dev/null @@ -1,162 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const BigNumber = require('bignumber.js') - -const FACTORY_ADDRESS = '0x356e1f9a61ba78f547829f3954af4517aaf4c943' - -const factoryAbi = { - "totalUsers": "function totalUsers() view returns (uint256)", - "userAtIndex": "function userAtIndex(uint256) view returns (address)", - "getAllActiveSystems": "function getAllActiveSystems(address user) view returns (tuple(address router, address state, address callback, address gmxAdapter, address reconciler, uint256 version, bool active, uint256 createdAt, uint256 updatedAt)[])", - "config": "function config() view returns (address)" -} - -const configAbi = { - "reader": "function reader() view returns (address)", - "datastore": "function datastore() view returns (address)", - "collateralToken": "function collateralToken() view returns (address)" -} - -const readerAbi = { - "getAccountPositions": "function getAccountPositions(address dataStore, address account, uint256 start, uint256 end) view returns (tuple(tuple(address account, address market, address collateralToken) addresses, tuple(uint256 sizeInUsd, uint256 sizeInTokens, uint256 collateralAmount, int256 pendingImpactAmount, uint256 borrowingFactor, uint256 fundingFeeAmountPerSize, uint256 longTokenClaimableFundingAmountPerSize, uint256 shortTokenClaimableFundingAmountPerSize, uint256 increasedAtTime, uint256 decreasedAtTime) numbers, tuple(bool isLong) flags)[])", - "getAccountOrders": "function getAccountOrders(address dataStore, address account, uint256 start, uint256 end) view returns (tuple(bytes32 orderKey, tuple(tuple(address account, address receiver, address cancellationReceiver, address callbackContract, address uiFeeReceiver, address market, address initialCollateralToken, address[] swapPath) addresses, tuple(uint8 orderType, uint8 decreasePositionSwapType, uint256 sizeDeltaUsd, uint256 initialCollateralDeltaAmount, uint256 triggerPrice, uint256 acceptablePrice, uint256 executionFee, uint256 callbackGasLimit, uint256 minOutputAmount, uint256 updatedAtTime, uint256 validFromTime) numbers, tuple(bool isLong, bool shouldUnwrapNativeToken, bool isFrozen, bool autoCancel) flags) order)[])" -} - -const erc20Abi = { - "balanceOf": "function balanceOf(address) view returns (uint256)", - "decimals": "function decimals() view returns (uint8)" -} - -async function getAllUsers(api) { - const totalUsers = await api.call({ target: FACTORY_ADDRESS, abi: factoryAbi.totalUsers }) - - if (totalUsers == 0) return [] - - const userCalls = [] - for (let i = 0; i < totalUsers; i++) { - userCalls.push({ target: FACTORY_ADDRESS, params: [i] }) - } - - const users = await api.multiCall({ abi: factoryAbi.userAtIndex, calls: userCalls }) - const validUsers = users.filter(addr => addr && addr !== ADDRESSES.null) - - return validUsers -} - -async function tvl(api) { - if (api.chain !== 'arbitrum') return {} - - const configAddress = await api.call({ - target: FACTORY_ADDRESS, - abi: factoryAbi.config - }) - - // Since config calls use different ABI methods, make individual calls - const readerAddress = '0xe739e72E0e434A2626d6bE07590AcA74C00c764C'; - - const datastoreAddress = await api.call({ - target: configAddress, - abi: configAbi.datastore - }) - const collateralTokenAddress = await api.call({ - target: configAddress, - abi: configAbi.collateralToken - }) - - const collateralDecimals = await api.call({ - target: collateralTokenAddress, - abi: erc20Abi.decimals - }) - - const decimalsMultiplier = Math.pow(10, Number(collateralDecimals)) - - const users = await getAllUsers(api) - if (users.length === 0) return api.getBalances() - - // Batch getAllActiveSystems calls for all users - const systemCalls = users.map(userAddress => ({ - target: FACTORY_ADDRESS, - params: [userAddress] - })) - const allUserSystems = await api.multiCall({ abi: factoryAbi.getAllActiveSystems, calls: systemCalls }) - - // Collect all active systems across all users - const allActiveSystems = [] - allUserSystems.forEach(systems => { - if (systems && Array.isArray(systems)) { - systems.forEach(system => { - if (system.active) { - allActiveSystems.push(system) - } - }) - } - }) - - if (allActiveSystems.length === 0) return api.getBalances() - - // Batch position calls for all active systems - const positionCalls = allActiveSystems.map(system => ({ - target: readerAddress, - params: [datastoreAddress, system.gmxAdapter, 0, 10] - })) - const allPositions = await api.multiCall({ abi: readerAbi.getAccountPositions, calls: positionCalls }) - - // Batch order calls for all active systems - const orderCalls = allActiveSystems.map(system => ({ - target: readerAddress, - params: [datastoreAddress, system.gmxAdapter, 0, 999999999] - })) - const allOrders = await api.multiCall({ abi: readerAbi.getAccountOrders, calls: orderCalls }) - - // Batch balance calls for all router contracts - const balanceCalls = allActiveSystems.map(system => ({ - target: collateralTokenAddress, - params: [system.router] - })) - const allBalances = await api.multiCall({ abi: erc20Abi.balanceOf, calls: balanceCalls }) - - // Calculate total TVL from batched results - let totalTVL = 0 - for (let i = 0; i < allActiveSystems.length; i++) { - const positions = allPositions[i] || [] - const orders = allOrders[i] || [] - const freeMargin = allBalances[i] || 0 - - // Get current position collateral - let currentPositionCollateral = 0 - if (positions.length > 0) { - currentPositionCollateral = Number(positions[0]?.numbers?.collateralAmount || 0) - } - - // Calculate margin used by open orders - let marginUsedByOpenOrders = 0 - if (orders.length > 0) { - const totalOrderCollateral = orders.reduce((sum, orderInfo) => { - const order = orderInfo.order - if (order.numbers && order.numbers.orderType === '3') { - const collateralAmount = new BigNumber(order.numbers.initialCollateralDeltaAmount || 0) - return sum.plus(collateralAmount) - } - return sum - }, new BigNumber(0)) - - marginUsedByOpenOrders = Number(totalOrderCollateral.toString()) / decimalsMultiplier - } - - const freeMarginTokens = Number(freeMargin) / decimalsMultiplier - const positionCollateralTokens = currentPositionCollateral / decimalsMultiplier - const systemTVL = positionCollateralTokens + marginUsedByOpenOrders + freeMarginTokens - - totalTVL += systemTVL - } - - if (totalTVL > 0) { - const tokenAmount = Math.floor(totalTVL * decimalsMultiplier) - api.add(collateralTokenAddress, tokenAmount) - } - - return api.getBalances() -} - -module.exports = { - arbitrum: { tvl } -} diff --git a/projects/yieldflow/index.js b/projects/yieldflow/index.js deleted file mode 100644 index 276bd5db0b3..00000000000 --- a/projects/yieldflow/index.js +++ /dev/null @@ -1,145 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const abi = { - "getCurrentTokenId": "function currentTokenId() view returns (uint)", - "getPositions": "function positions(uint256 tokenId) view returns (uint96 nonce,address operator,address token0,address token1,uint24 fee,int24 tickLower,int24 tickUpper,uint128 liquidity,uint256 feeGrowthInside0LastX128,uint256 feeGrowthInside1LastX128,uint128 tokensOwed0,uint128 tokensOwed1)", - "getAmountsForTicks": "function getAmountsForTicks(int24,int24,uint128) view returns (uint256,uint256)" -} - -const managers = [ - '0x69a3e2f167B35c88C9778F59Ce8C1fFc546c8078', - '0xe3f50A03525EF520818B111beC1F8c5D67fe307E', - '0x0F7E99716625FF6E47A4382CB177039ddc6c6Ef4', - '0x4878Acd29D8eFdF8D3E36f90D00fe242CAD792E5', - '0xbdf672C6895013c41F134F6b9B1fc51c74Fef9Ee', - '0xF33e335981F42fe4d93b8C23E3517E33Bd61C7e2', - '0x385D32300C3D500FC9Ab28010a98b039E0FF2c26', - '0x9000F4E184Aa2e0bDD1657d78c325c67508555D3', - '0x1A0E998eF8611142906230050ed3E75882313DAe', - '0x6EeFc6ceF687783F9eD767637Ae3cf06693c0A82', - '0x6205A335C76F3dE01f5D75a27E9C90b49A5C69dc', - '0x54250F1cb24304136A5B05fAbfb0C3Fb1E980169', - '0x0F6EEFd958287FDF80F5B1D4Ea79B928F9Ae933d', - - '0xc291Ecf279714b7f56b0E5a2051DE4C533184A4E', - '0x562e92916103a9866b5139dE5269c46d6d3f3117', - '0x4142B8B00713CE9A441B8e3bd40D692BE56137C3', - '0xa05b2b641A904292E4D835f882235AF4D3E34e7c', - '0x3c3260a79a50ECD154d2e2F00C857A06dD0e5619', - '0x75346B1CF609d2FaCBb6e0b187e658869dd3aE83', - - '0xa5E4A293E90fac283E24b2b6446b8d3bE377e52e', - '0xEc695B2F9e06A5647a51d733beC0186804cbA991', - '0x3501512Efc4E051A022c7c255D6f9c33b178E29f', - '0x2a5075229e02939d4b8888725DF01Cb7374970e8', - '0x0994b93ae05F904F98F59bb64d9266188543fda5', - '0x3bBA41A6069F539B7540141460584194De2154Ce', - '0x4664dc8E1710116ff46693FEB42f16CBe58f8237', - '0xCF49168017096dB97Eb14552bd0af6eE9a27e76A', - '0x899DF9d131D2276Db3c5f392ce2b396d9b1BFa8c', - - '0xC3ec6F076fE7395B0C263f7E37B084EC4Fd06eaF', - '0x034a5fC7518d2D1b6a8C9CaccD273ee37C669E95', - '0xE0D19D57BAFF656d2910BFFBec81E33f1368A0Ee', - '0x2de0b61a2778169f095A8a7DAD7B566A9973E977', - '0x440b228411a4D83820e0c63cD71E769a6660E037', - '0x717FADe04FF819a58128Be591caC8C801F28Cd5b', - '0x1655cfD162b4148E1715B6302DA4EF075Fa72ADf', - '0x604Ef6Dc8c7abf78008749b57a4135C87d69fc35', - '0xa63fa8FE58A5E197f092742619D8F4C7fE4924e8', - - '0xC22c7f332cA100725Bf4eA832f2D169e471923D6', - '0x1E5F83Fc7f167fF44D58e59142DeE2358346331B', - '0x8702800D715461Fb7D9C89C74DDB7bE73F5a37C6', - '0xb6F1E82e7AE822DE9eD64967D04359Fe4D58A569', - '0xE0213546258ABd7EF0D689D26Cf6d6BCEeE20e8a', - '0xf732Fc726B3a4bE9f6c86a710Fd3367259DB456e', - - '0x16A3EBd3D55b27FF6e2839DA2078889cA148C040', - '0xf4447cCFeE677A5b0BaD6bcD5f92A1929c171b48', - '0x538A753B616F5aAD60852ca039572e5C4B72cA85', - - '0x780A252d7C797cFB255fe2EAa4E1a257a897B6ed', - '0xffF3c0063f2Fc1Af569C359480b5b62841357169', - '0xEFF4A3260263A927D0707190C931bE13292bD4Ba', - - '0xD4c68a094De7e1336E261c6EDD595F64cd70A064', - '0x88609B69feDc0EEF4326c3390a8ae1b2073DcF03', - '0xdcC4391042d462158C847f73F4232ce47A8F999c', - - '0xB67EFF6590D8457c870f84b5eA3B2CeEb7dbCD50', - '0xE7cC8F17295cb9975e3D9aB3798C4fe0AA378c5F', - '0xfb35BeDFB647c0445B9177aFFd6e7b81Bb8Ab9Bc', - - '0x590905F3adC1a16Af6A144Eaca57ba65760e93Cf', - '0x4568936B2846debb1Ed65122841A500B639f49A7', - '0x17263600ABccf294C6D0Ec02bCc23A240e883c7D', - - '0x1F73AbC7e254980AB26974C9A13c8493143F97Bc', - '0x599Dd6b1205E51fbcb2879105051C0EBbfa76b03', - '0xcC125F83BFe2A30F1BEfdf6E06043dB5a7a02A61', - - '0xd7F287266D0E057D0e64C126687154CB1db9610A', - '0x56E81D09b31572982019fDa2e284cFAe48BD5aAc', - '0xAf0ddFa27EcccF9f0358cAC2d18E4800b53063f4', - - '0x3Bd5B4422685F9321F0e5a8333067A4A049fC664', - '0x1AC1d8911BBb2Fed8fD736e3649FC363001C8e07', - '0x5ABf77610fabaD2DeF07A43eF6f66C1D2438dE7e', - - '0xc9aDB46B1Ea65EE8A7A7BD1aE0dfB82d7421751d', - '0x5309161C131f75F15c28BD1a5d3614001c8d9c10', - '0x2fd2c02534383ca0c973F92237Af2639021DaC23', - - '0xC9f9f405E0ACC17Ddc6c96697E789b290bD193Fe', - '0x93Eaa4F8db7703FaDA5bBB25ca7424b0DA778464', - '0x60E7743C9279bbA2ACa75d4a10CAbB125c42C841', - - '0x12E469bCF3bFCF6448A3e46b9c44E2473E839614', - '0x52d2FE9B8432b60155404E1c443a99BFbf17408b', - '0x4F59ec4FcF5Ef16bDbf06F84B9e729C39B10fC61' -] - -async function tvl(api) { - const { managers } = config[api.chain] - const positionManagers = await api.multiCall({ abi: 'address:positionManager', calls: managers }) - const tokenIds = await api.multiCall({ abi: abi.getCurrentTokenId, calls: managers }) - const liquidities = await api.multiCall({ abi: abi.getPositions, calls: positionManagers.map((v, i) => ({ target: v, params: tokenIds[i] })) }) - const tokenAmounts = await api.multiCall({ abi: abi.getAmountsForTicks, calls: liquidities.map((v, i) => ({ target: managers[i], params: [v.tickLower, v.tickUpper, v.liquidity] })) }) - - const ownerTokens = liquidities.map((v, i) => [[v.token0, v.token1, ADDRESSES.null], managers[i]]) - liquidities.forEach((v, i) => { - api.add(v.token0, tokenAmounts[i][0]) - api.add(v.token1, tokenAmounts[i][1]) - }) - return api.sumTokens({ ownerTokens }) -} - -module.exports = { - doublecounted: true, -} - -const config = { - arbitrum: { managers }, - ethereum: { - managers: [ - '0x65D1788F9d9A800c5Fc9b9CB8e49A1b488C736c7', - '0x01Af749E58c076c301B1F57D0BCBBf2D49B503bD', - '0x47Dd57DFe9e01616e4Adc28015243Ea6A2C09cEC', - '0x0a4a169a6b2ac75c86e2F0e42822fdEA13fB1CC8', - '0xafFA16b152232dAd8BF3AaDF6bb6F895A836F917', - '0xFB04d48e4CE9C042188Ef933ff4cf58921Ab59B8', - '0x36232356758c746A50AD5078815F09e39E34628d', - '0xA0FDf5DC858ea552d51B4fa304e72cEB34e736fb', - '0xaC36A41da8f069C4874Dda60e073B5DcF889B56E', - '0x9D0731968AE480936c25ae841573842eEF6D65a4', - '0x8AC0E127024d2adf27c2557Ff392abe6a66A910e', - '0xc94F61869B1001a7CB1a6369Ff28624855BB058e', - '0xbb341f08f516a435B8dfd9661b375Df75AcF1b72' - ] - } -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) diff --git a/projects/yieldhubfinance/index.js b/projects/yieldhubfinance/index.js deleted file mode 100644 index 5779b702de6..00000000000 --- a/projects/yieldhubfinance/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { sumUnknownTokens } = require('../helper/unknownTokens'); - -const vaults = [ - "0x49AC06648789d235BFc7D2108cD09594A51f584A", - "0xDEAa7fC91e3d81C2C382Db559C29F3eb742B7B74", - "0xC76eF284E616567d92802261d4193328f598C2d1", - "0xd5397b85f4677E973b992680deA429fE102CA43D", - "0xE95EB1DFcFe6E92763598A0270cE7BdadD7542C4", - "0x27519464F504ec385F7318849a6AB544111167b9", - "0x73a9a6F798f8664bA0F5AC2F5dD89e303fEcAa9b", - "0x54C8e46012F9D1DEa678a945b7a70e254e48455B", - "0x54A91965a9231e870cC0a601169d8b29b581440c", - "0x2EE0a0731399f0d4Af3FdDBEE303e86b84cB23f7", - "0x6d83a06194Ca237C9A157655492Cb3e6daa857c1", - "0x5e1a727377c4F4C24b4a5BaC331D26cF3C90CBc2", - "0x10DA15D3A4169E64b9EA51C5Ad174c03bd0625D6", - "0x10E9fbC3b3aFFf0C330dc19778474cA7Fe17B6e3", - "0x15cD93a074740Ee4c14a102C9e2A9D2D3F760D4F", - "0x856Ab6A84fdD0C35cDc6B3710DEC83203B470637", - "0x84027D689DaB82D0548FE1DA273fd68187a7C578", - "0xc8A34969306a26907B12fD44A51DCb10EB19D47E", - "0x161DDe5cB80564434a686311FD43e01b1B1ee5E5", - "0xa2Fc4Ba0D10438D8B63B369D00a3bAb29c319eEC", - "0x8C6b71B9967AfE4B633759f0714C593C2ac38e85", - "0x9a4743E8476B2e7bF5f6d314215523c8ca8f24C5", - "0x1226f2eBC27374aE0d66f3E91ED64c918BccEF9e", - "0x8bF553291D2810C772ea43bBA77eDFf92191b450" -] - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:want', calls: vaults}) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: vaults}) - api.addTokens(tokens, bals) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true, }) - -} -module.exports = { - timetravel: false, - telos: { - tvl - }, -} diff --git a/projects/yieldis/index.js b/projects/yieldis/index.js deleted file mode 100644 index f623a53291a..00000000000 --- a/projects/yieldis/index.js +++ /dev/null @@ -1,80 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { eulerTokens } = require('../helper/tokenMapping') - -const config = { - arbitrum: { - ladle: '0x16E25cf364CeCC305590128335B8f327975d0560', - fromBlock: 31012, - oldPools: new Set([ - '0x7Fc2c417021d46a4790463030Fb01A948D54Fc04', - '0xf76906AA78ECD4FcFB8a7923fB40fA42c07F20D6', - '0x6651f8E1ff6863Eb366a319F9A94191346D0e323', - '0x8C8A448FD8d3e44224d97146B25F4DeC425af309', - '0xFCb9B8C5160Cf2999f9879D8230dCed469E72eeb', - '0x13aB946C6A9645EDfF2A33880e0Fc37f67122170', - '0x0FA29EEb169CDE6c779326d7b16c54529ECA1DD5', - ].map(i => i.toLowerCase())), - }, - ethereum: { - ladle: '0x6cB18fF2A33e981D1e38A663Ca056c0a5265066A', - fromBlock: 13461529, - oldPools: new Set([ - '0x3771C99c087a81dF4633b50D8B149aFaA83E3c9E', - '0x2e4B70D0F020E62885E82bf75bc123e1Aa8c79cA', - '0x407353d527053F3a6140AAA7819B93Af03114227', - '0x80142add3A597b1eD1DE392A56B2cef3d8302797', - '0x5D14Ab14adB3a3D9769a67a1D09634634bdE4C9B', - '0xEf82611C6120185D3BF6e020D1993B49471E7da0', - '0x341B0976F962eC34eEaF31cdF2464Ab3B15B6301', - '0xc3348D8449d13C364479B1F114bcf5B73DFc0dc6', - '0x6BaC09a67Ed1e1f42c29563847F77c28ec3a04FC', - '0xf5Fd5A9Db9CcCc6dc9f5EF1be3A859C39983577C', - '0xA4d45197E3261721B8A8d901489Df5d4D2E79eD7', - '0x4b32C37Be5949e77ba3726E863a030BD77942A97', - ].map(i => i.toLowerCase())), - blacklistedTokens: [ - '0x1344A36A1B56144C3Bc62E7757377D288fDE0369', - ...eulerTokens - ], - }, -} - -module.exports = { - hallmarks: [ - ['2023-03-13', 'Euler was hacked'], - ], -}; - -Object.keys(config).forEach(chain => { - const { ladle, fromBlock, oldPools, blacklistedTokens, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ - target: ladle, fromBlock, api, - topic: 'PoolAdded(bytes6,address)', - eventAbi: 'event PoolAdded(bytes6 indexed seriesId, address indexed pool)', - onlyArgs: true, - extraKey: 'PoolAdded', - }) - const joinLogs = await getLogs({ - target: ladle, fromBlock, api, - topic: 'JoinAdded(bytes6,address)', - eventAbi: 'event JoinAdded(bytes6 indexed assetId, address indexed join)', - onlyArgs: true, - extraKey: 'JoinAdded', - }) - const joins = joinLogs.map(i => i[1]) - const assets = await api.multiCall({ abi: 'address:asset', calls: joins }) - - const pools = [...new Set(logs.map(i => i.pool))] - const newPools = pools.filter(i => !oldPools.has(i.toLowerCase())) - const tokens = await api.multiCall({ abi: 'address:base', calls: pools }) - const sharesTokens = await api.multiCall({ abi: 'address:sharesToken', calls: newPools }) - const tokensAndOwners = sharesTokens.map((v, i) => [v, newPools[i]]) - tokens.forEach((v, i) => tokensAndOwners.push([v, pools[i]])) - assets.forEach((v, i) => tokensAndOwners.push([v, joins[i]])) - return sumTokens2({ api, tokensAndOwners, blacklistedTokens }) - } - } -}) \ No newline at end of file diff --git a/projects/yieldlend/index.js b/projects/yieldlend/index.js deleted file mode 100644 index 682110aab3b..00000000000 --- a/projects/yieldlend/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { aaveExports } = require("../helper/aave"); - -module.exports = { - base: aaveExports("base", undefined, undefined, [ - "0x43A5803c5f1Cb6241858669ad6F63fe5B3882434", - ]), -}; diff --git a/projects/yieldly/index.js b/projects/yieldly/index.js deleted file mode 100644 index bcb3d04af91..00000000000 --- a/projects/yieldly/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - timetravel: false, - algorand: { - tvl: () => ({}), - }, - hallmarks: [ - ['2023-08-02', 'Project pivoted to be being a NFT marketplace.'], - ], - deadFrom: '2023-08-02', -}; diff --git a/projects/yieldnest/index.js b/projects/yieldnest/index.js deleted file mode 100644 index 096954f7e0b..00000000000 --- a/projects/yieldnest/index.js +++ /dev/null @@ -1,36 +0,0 @@ - -const ADDRESSES = require('../helper/coreAssets.json') - -const YN_ETH = '0x09db87a538bd693e9d08544577d5ccfaa6373a48' -const yn_ETHx = '0x657d9ABA1DBb59e53f9F3eCAA878447dCfC96dCb' -const yn_USDx = '0x3DB228FE836D99Ccb25Ec4dfdC80ED6d2CDdCB4b' - -module.exports = { - doublecounted: true, - ethereum: { - tvl: async (api) => { - const ynethBalance = await api.call({ abi: 'uint256:totalAssets', target: YN_ETH }) - api.add(ADDRESSES.null, ynethBalance) - const lsdRegistry = '0x323C933df2523D5b0C756210446eeE0fB84270fd' - const lsds = await api.call({ abi: 'address[]:getAssets', target: lsdRegistry }) - const bals = await api.call({ abi: 'function getAllAssetBalances() view returns (uint256[])', target: lsdRegistry }) - api.add(lsds, bals) - const maxethBalance = await api.call({ abi: 'uint256:totalAssets', target: yn_ETHx }) - api.add(ADDRESSES.null, maxethBalance) - const maxusdBalance = await api.call({ abi: 'uint256:totalAssets', target: yn_USDx }) - api.add(ADDRESSES.null, maxusdBalance) - - } - }, - bsc: { - tvl: async (api) => { - const ynBNB = '0x304B5845b9114182ECb4495Be4C91a273b74B509' - const ynBTCk = '0x78839cE14a8213779128Ee4da6D75E1326606A56' - const ynBNBx = '0x32C830f5c34122C6afB8aE87ABA541B7900a2C5F' - const ynCoBTCk = '0x132376b153d3cFf94615fe25712DB12CaAADf547' - const ynBfBTCk = '0x1B015705214bdcAAf43E8EDeCa13023143224Ab7' - - return api.erc4626Sum({ calls: [ynBNB, ynBTCk, ynBNBx, ynCoBTCk, ynBfBTCk], isOG4626: true}) - } - }, -} diff --git a/projects/yieldoor/index.js b/projects/yieldoor/index.js deleted file mode 100644 index 5b0c5660f6c..00000000000 --- a/projects/yieldoor/index.js +++ /dev/null @@ -1,132 +0,0 @@ -// const { gql } = require('graphql-request'); - -const CONFIG = { - ethereum: { - subgraph: 'https://subgraph.satsuma-prod.com/ebe562dbf792/yieldoor--594520/yieldoor-leverager-base/version/v0.0.2/api', - lendingPool: '', - lp: [], - looped: ['0x67d0bde18945999ff517a04fa156189a07ba6543'] - }, - base: { - subgraph: 'https://subgraph.satsuma-prod.com/ebe562dbf792/yieldoor--594520/yieldoor-leverager-base/version/v0.0.2/api', - lendingPool: '0xa35b16cec42094f3ba4fd838b13641ec77d23f98', - lp: [ - '0x8e16c184df379196782e943f4d5a2682a8720cc4', - '0x92ed462970e63b4fe955937cb1741ef5218b8e40', - '0x90d8da2839570901f13124ab1a83e92764c7e08f', - '0xc01403a2466aa7a52a7826a15e5e3bc6b0cd0664' - ], - looped: [] - }, - sonic: { - subgraph: 'https://subgraph.satsuma-prod.com/ebe562dbf792/yieldoor--594520/yieldoor-leverager-sonic/version/v0.0.2/api', - lendingPool: '0x2300ddbc84ee0c375920d706882b62d1babe1dcb', - lp: [ - '0x6120de6a13e4496d6c8220bb2a0727ec6350a37f', - '0xbce4fdcc570855d1f8f7aa2b29a483bdab6cc2df', - '0x2d4d9ec91b60b2bf29ed1ec5028847dd8237cc17', - '0x55a9a1444dc5ffeff94090c1e31e1a0c2d5da963', - '0xea2dcb8f95d2582f3dfcf8fb9c13488e8dfbbfa3', - '0xdc8bf0e7ff1742898f8e72143f0b8ab4139272e5', - '0x520e0c1a9071227279b1bec01e2fc93a25c5094e' - ], - looped: [] - } -} - -const abis = { - getPrice: "function getPrice(address asset) view returns (uint256)", - balances: "function balances() view returns (uint256, uint256)", - positions: "function positions(uint256) view returns (address denomination, uint256 borrowedAmount, uint256 borrowedIndex, uint256 initCollateralValue, uint256 initCollateralUsd, uint256 initBorrowedUsd, uint256 shares, address vault, address token0, address token1)", - reservesList: "function reservesList(uint256) view returns (address)", - reserves: "function reserves(address) view returns (uint256 borrowingIndex, uint256 currentBorrowingRate, uint256 totalBorrows, address yTokenAddress, address stakingAddress, uint256 reserveCapacity, (uint256 utilizationA, uint256 borrowingRateA, uint256 utilizationB, uint256 borrowingRateB, uint256 maxBorrowingRate) borrowingRateConfig, (uint256 maxIndividualBorrow, uint256 LTV, uint256 LLTV) leverageParams, uint256 underlyingBalance, uint128 lastUpdateTimestamp, (bool isActive, bool frozen, bool borrowingEnabled) flags)" -} - -// Not used for now, possibly in the future -// const yieldoorReservesQuery = gql` -// query Reserves { -// reserves(orderBy: asset) { -// id -// asset -// borrowingIndex -// currentBorrowingRate -// totalBorrows -// yTokenAddress -// stakingAddress -// reserveCapacity -// borrowingRateConfig_utilizationA -// borrowingRateConfig_borrowingRateA -// borrowingRateConfig_utilizationB -// borrowingRateConfig_borrowingRateB -// borrowingRateConfig_maxBorrowingRate -// leverageParams_maxIndividualBorrow -// leverageParams_LTV -// leverageParams_LLTV -// underlyingBalance -// flags_isActive -// flags_frozen -// flags_borrowingEnabled -// } -// } -// `; - -const getVaultBalances = async (api, vaults) => { - if (!vaults.length) return; - - const [token0s, token1s, balances] = await Promise.all([ - api.multiCall({ calls: vaults, abi: 'address:token0' }), - api.multiCall({ calls: vaults, abi: 'address:token1' }), - api.multiCall({ calls: vaults, abi: abis.balances }) - ]) - - vaults.forEach((_, i) => { - const token0 = token0s[i] - const token1 = token1s[i] - const [b0, b1] = balances[i] - api.add(token0, b0) - api.add(token1, b1) - }) -} - -const getMarketBalances = async (api, lendingPool) => { - if (!lendingPool) return; - - const reservesLists = (await api.fetchList({ target: lendingPool, itemCount: 20, itemAbi: abis.reservesList, permitFailure: true })).filter(Boolean) - const reservesDatas = await api.multiCall({ calls: reservesLists.map((reserve) => ({ target: lendingPool, params: [reserve] })), abi: abis.reserves }) - - for (let i = 0; i < reservesLists.length; i++) { - const asset = reservesLists[i]; - const { underlyingBalance, totalBorrows, flags } = reservesDatas[i]; - if (!flags.isActive || flags.frozen) continue; - api.add(asset, Number(underlyingBalance) + Number(totalBorrows)); - } -} - -const tvl = async (api) => { - const { lp, looped, lendingPool } = CONFIG[api.chain] - await getVaultBalances(api, lp) - await getMarketBalances(api, lendingPool) - await api.erc4626Sum({ calls: looped, tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets' }) -} - -const borrowed = async (api) => { - const { lendingPool } = CONFIG[api.chain] - - if (!lendingPool) return; - const reservesLists = (await api.fetchList({ target: lendingPool, itemCount: 20, itemAbi: abis.reservesList, permitFailure: true })).filter(Boolean) - const reservesDatas = await api.multiCall({ calls: reservesLists.map((reserve) => ({ target: lendingPool, params: [reserve] })), abi: abis.reserves }) - - for (let i = 0; i < reservesLists.length; i++) { - const asset = reservesLists[i]; - const { totalBorrows, flags } = reservesDatas[i]; - if (!flags.isActive || flags.frozen) continue; - api.add(asset, Number(totalBorrows)); - } -} - -Object.keys(CONFIG).forEach((chain) => { - module.exports[chain] = { - tvl, - borrowed, - } -}) diff --git a/projects/yieldwars/index.js b/projects/yieldwars/index.js deleted file mode 100644 index 85c0d1c5fef..00000000000 --- a/projects/yieldwars/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const pools = [ - "0xcce4158494ae8296E3936823058B17e03eEBa6c3", - "0x693c8D8256018ffCbd3A768bf6ef6Efc7B7B7eab", - "0x9C6C618C96d65b68E57773D6285a0d83d1Bd6760", - "0x9E1A69A8164817219e79090330B529556B274c9D", - "0xD74a66c60761231960b9A67daB72871E545C72f5" -]; - -const tokens = [ - coreAssets.ethereum.UNI, - coreAssets.ethereum.LINK, - coreAssets.ethereum.MKR, - "0x56d811088235F11C8920698a204A5010a788f4b3", - "0xa0246c9032bC3A600820415aE600c6388619A14D", -]; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ tokensAndOwners2: [tokens, pools] }) - } -}; diff --git a/projects/yieldwolf/abi.json b/projects/yieldwolf/abi.json deleted file mode 100644 index 3a05e9d8c73..00000000000 --- a/projects/yieldwolf/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address stakeToken, address strategy)", - "poolLength": "uint256:poolLength", - "totalStakeTokens": "uint256:totalStakeTokens", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/yieldwolf/index.js b/projects/yieldwolf/index.js deleted file mode 100644 index 856cc19b95b..00000000000 --- a/projects/yieldwolf/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const blacklistedTokens = ["0x0B048D6e01a6b9002C291060bF2179938fd8264c"]; - -module.exports = { - misrepresentedTokens: true, - methodology: "We count liquidity on all the Vaults through YieldWolf Contracts", -} - -const config = { - polygon: '0xBF65023BcF48Ad0ab5537Ea39C9242de499386c9', - fantom: '0x876F890135091381c23Be437fA1cec2251B7c117', - celo: '0xd54AA6fEeCc289DeceD6cd0fDC54f78079495E79', - avax: '0xc9070B3EFE0aacC5AfB4B31C5DbDCA7C6B4bAAA9', - cronos: '0x8fEc7A778Cba11a98f783Ebe9826bEc3b5E67F95', - harmony: '0x8fec7a778cba11a98f783ebe9826bec3b5e67f95', - bsc: '0xD3aB90CE1eEcf9ab3cBAE16A00acfbace30EbD75', -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: config[chain]}) - const strategies = poolInfos.map(i => i.strategy) - const tokens = poolInfos.map(i => i.stakeToken) - const bals = await api.multiCall({ abi: abi.totalStakeTokens, calls: strategies}) - api.add(tokens, bals) - blacklistedTokens.forEach(token => api.removeTokenBalance(token)) - return sumTokens2({ api, resolveLP: true }) - } - } -}) \ No newline at end of file diff --git a/projects/yieldyak-staked-avax/index.js b/projects/yieldyak-staked-avax/index.js deleted file mode 100644 index 98651d7aa56..00000000000 --- a/projects/yieldyak-staked-avax/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const yieldYak_id = "45756385483164763772015628191198800763712771278583181747295544980036831301432"; - -async function avax(api) { - - const supply = await api.call({ - abi: "function totalSupply(uint256 id) view returns (uint256)", - params: yieldYak_id, - target: "0x6026a85e11bd895c934af02647e8c7b4ea2d9808", - }) - - const price = await api.call({ - abi: "function pricePerShare(uint256 _id) view returns (uint256)", - params: yieldYak_id, - target: "0x6026a85e11bd895c934af02647e8c7b4ea2d9808", - }) - - return { - ["avax:" + ADDRESSES.null]: supply * price / 1e18 - }; -} - -module.exports = { - start: '2022-07-26', - methodology: "Total Supply and Underlying Price of the derivative is multiplied, resulting in number of staked Avax tokens.", - doublecounted: true, - avax: { - tvl: avax, - }, -}; diff --git a/projects/yieldyak/abi.json b/projects/yieldyak/abi.json deleted file mode 100644 index 7498166c983..00000000000 --- a/projects/yieldyak/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "depositToken": "address:depositToken", - "totalDeposits": "uint256:totalDeposits", - "totalSupply": "uint256:totalSupply", - "token": "address:token", - "getRatio": "uint256:getRatio", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/yieldyak/index.js b/projects/yieldyak/index.js deleted file mode 100644 index 51fe60cb93a..00000000000 --- a/projects/yieldyak/index.js +++ /dev/null @@ -1,92 +0,0 @@ -const { staking } = require('../helper/staking'); -const { cachedGraphQuery, getConfig } = require('../helper/cache') -const sdk = require('@defillama/sdk') - -const graphUrl = sdk.graph.modifyEndpoint('https://gateway.thegraph.com/api/[api-key]/subgraphs/id/YC6LMdHjtWZ2cCq7YKFmDcDt2eCcBvSNSiWi56bnqoW') -const graphQuery = ` -{ - yakMilkVaults(first: 1000) { - totalSupply - decimals - accountant { - base { - id - symbol - } - exchangeRate - } - } -}`; - -async function avaxTvl(api) { - const farms = await getConfig('yieldyak/avax', 'https://staging-api.yieldyak.com/43114/farms') - const tokens = await api.multiCall({ abi: 'address:depositToken', calls: farms.map(i => i.address), permitFailure: true, }) - const vals = await api.multiCall({ abi: 'uint256:totalDeposits', calls: farms.map(i => i.address), permitFailure: true, }) - const symbols = await api.multiCall({ - abi: 'string:symbol', - calls: tokens.map(token => ({ target: token })), - permitFailure: true, - }); - - const excludedAddress = '0x59414b3089ce2af0010e7523dea7e2b35d776ec7'; - const excludedSymbol = 'YAK'; - - tokens.forEach((token, i) => { - if (!token || !vals[i] || token === excludedAddress || symbols[i] === excludedSymbol) return; - api.add(token, vals[i]); - }); - - // For getting the vaults' TVL values we use the underlying token rather than the vault token symbol itself - // as price data is more readily available for these. - const { yakMilkVaults } = await cachedGraphQuery('yieldyak/milk-vaults-avalanche', graphUrl, graphQuery) - - yakMilkVaults.forEach((vault, i) => { - if (vault.accountant.base.symbol === excludedSymbol) return; - api.add(vault.accountant.base.id, vault.totalSupply * vault.accountant.exchangeRate / 10 ** vault.decimals); - }); -} - -async function arbiTvl(api) { - const farms = await getConfig('yieldyak/arbi', 'https://staging-api.yieldyak.com/42161/farms') - const tokens = await api.multiCall({ abi: 'address:depositToken', calls: farms.map(i => i.address), permitFailure: true, }) - const vals = await api.multiCall({ abi: 'uint256:totalDeposits', calls: farms.map(i => i.address), permitFailure: true, }) - const excludedAddress = '0x7f4dB37D7bEb31F445307782Bc3Da0F18dF13696'; - - tokens.forEach((token, i) => { - if (!token || !vals[i] || token === excludedAddress) return; - api.add(token, vals[i]); - }); -} - -async function mantleTvl(api) { - const farms = await getConfig('yieldyak/mantle', 'https://staging-api.yieldyak.com/5000/farms') - const tokens = await api.multiCall({ abi: 'address:depositToken', calls: farms.map(i => i.address), permitFailure: true, }) - const vals = await api.multiCall({ abi: 'uint256:totalDeposits', calls: farms.map(i => i.address), permitFailure: true, }) - const excludedAddress = '0x7f4dB37D7bEb31F445307782Bc3Da0F18dF13696'; - - tokens.forEach((token, i) => { - if (!token || !vals[i] || token === excludedAddress) return; - api.add(token, vals[i]); - }); -} - -const masterYak = "0x0cf605484A512d3F3435fed77AB5ddC0525Daf5f" -const yakToken = "0x59414b3089ce2af0010e7523dea7e2b35d776ec7" -const arbiYyStaking = "0xbb82b43Bf2057B804253D5Db8c18A647fC1f3403" -const mantleYyStaking = "0xF54D65AeB65b093A6BF717b541894ee6471A6CE1" -const bridgedYakToken = "0x7f4dB37D7bEb31F445307782Bc3Da0F18dF13696" - -module.exports = { - avax: { - tvl: avaxTvl, - staking: staking(masterYak, yakToken), - }, - arbitrum: { - tvl: arbiTvl, - staking: staking(arbiYyStaking, bridgedYakToken), - }, - mantle: { - tvl: mantleTvl, - staking: staking(mantleYyStaking, bridgedYakToken), - } -} \ No newline at end of file diff --git a/projects/yldr/index.js b/projects/yldr/index.js deleted file mode 100644 index 50187d6585f..00000000000 --- a/projects/yldr/index.js +++ /dev/null @@ -1,44 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs } = require('../helper/cache/getLogs') - -module.exports = { - methodology: 'Get available liquidity for all reserves and include Uniswap V3 positions', - start: '2023-12-18', -}; - -const config = { - ethereum: { v3Wrapper: '0x13f4dc963ddd2ec0160f6473c69b704b0e8674fc', factory: '0xd7b1C5afc105e0E70F78B66CdFE977aEf80540bA', fromBlock: 18808612, }, - arbitrum: { v3Wrapper: '0x07B99965dBEdf38322ADFe48623e042Aa0656283', factory: '0x88959bebbce33d75227633d5114e3c3fd0fb9a6d', fromBlock: 155897900, }, - polygon: { v3Wrapper: '0x27b3E5fD3E2C03Ac02Ee2a90E7B0C52Dac179dAe', factory: '0xf336D4687937C109e51e0266663689Da5ad637C3', fromBlock: 54456800 }, - base: { v3Wrapper: '0x4bD51179f30Cd162167D40AF9F6d378FC580C9cd', factory: '0xCE52e9DD55AC9aa98BfEE1bA615FA5a07c8b3eF1', fromBlock: 14253820 }, -} - -const eventAbi = 'event ReserveInitialized (address indexed asset, address indexed yToken, address variableDebtToken, address interestRateStrategyAddress)' - -const getLogsCache = {} - -Object.keys(config).forEach(chain => { - const { v3Wrapper, factory, fromBlock, } = config[chain] - function _getLogs(api) { - const block = api.block ?? 'unknown' - const key = `${chain}:${block}` - if (!getLogsCache[key]) getLogsCache[key] = getLogs({ api, target: factory, eventAbi, onlyArgs: true, fromBlock, }) - return getLogsCache[key] - } - - module.exports[chain] = { - tvl: async (api) => { - const logs = await _getLogs(api) - const tokensAndOwners = logs.map(log => [log.asset, log.yToken]) - await api.sumTokens({ tokensAndOwners }) - return sumTokens2({ api, owner: v3Wrapper, resolveUniV3: true, }) - }, - borrowed: async (api) => { - const logs = await _getLogs(api) - const tokens = logs.map(log => log.asset) - const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: logs.map(log => log.variableDebtToken) }) - api.addTokens(tokens, bals) - return api.getBalances() - }, - } -}) diff --git a/projects/yo/index.js b/projects/yo/index.js deleted file mode 100644 index 3034b88b605..00000000000 --- a/projects/yo/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const yoVaultsBase = [ - '0x3a43aec53490cb9fa922847385d82fe25d0e9de7', - '0xbCbc8cb4D1e8ED048a6276a5E94A3e952660BcbC', - '0x0000000f2eB9f69274678c76222B35eEc7588a65', - '0x50c749aE210D3977ADC824AE11F3c7fd10c871e9' -]; - -async function tvlBase(api) { - return api.erc4626Sum2({ - calls: yoVaultsBase - }); -} - - -module.exports = { - methodology: "We calculate TVL based on the Total Supply of our proxy contracts through which users interact with vault's contracts", - base: { - tvl: tvlBase - }, -}; \ No newline at end of file diff --git a/projects/yodeswap/api.js b/projects/yodeswap/api.js deleted file mode 100644 index 3e7fa96fba5..00000000000 --- a/projects/yodeswap/api.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - dogechain: { - tvl: getUniTVL({ - factory: '0xAaA04462e35f3e40D798331657cA015169e005d7', - useDefaultCoreAssets: true, - queryBatched: 1000, - }), - } -} diff --git a/projects/yodeswap/index.js b/projects/yodeswap/index.js deleted file mode 100644 index af5dbcab608..00000000000 --- a/projects/yodeswap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { staking, } = require('../helper/unknownTokens') -const { getExports } = require('../helper/heroku-api') - -const chain = 'dogechain' -const YodeDEX = '0x6FC4563460d5f45932C473334d5c1C5B4aEA0E01' -const lps = ['0x2Dd53abcFEBE71a9Cd5dFF4f44458E14707F9280'] - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("yodeswap", ['dogechain']), -} - - -module.exports.dogechain.staking = staking({ - chain, - owner: '0x707Ee40734454162b7720B665Fa2aA0f7c2C6983', - tokens: [YodeDEX], - useDefaultCoreAssets: true, - lps, -}) diff --git a/projects/yogi/index.js b/projects/yogi/index.js deleted file mode 100644 index 35cf48bcc08..00000000000 --- a/projects/yogi/index.js +++ /dev/null @@ -1,14 +0,0 @@ - -module.exports = { - hallmarks: [ - ['2022-10-06', 'Project abandoned. Website down, twitter down'], - ], - deadFrom: '2022-10-06', - misrepresentedTokens: true, - bsc: { - tvl: () => ({}), - }, - polygon: { - tvl: () => ({}), - }, -} diff --git a/projects/yokaiswap/index.js b/projects/yokaiswap/index.js deleted file mode 100644 index 452b3428e77..00000000000 --- a/projects/yokaiswap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') - -// had to be disabled till we get multicall working -const tvl_v0 = getUniTVL({ factory: '0x5ef0d2d41a5f3d5a083bc776f94282667c27b794', useDefaultCoreAssets: true}) -const tvl_v1 = getUniTVL({ factory: '0x7ec2d60880d83614dd4013D39CF273107f30624c', useDefaultCoreAssets: true, }) - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: `Finds TotalLiquidityUSD using the YokaiSwap subgraph "https://www.yokaiswap.com/subgraphs/name/yokaiswap/exchange". Staking accounts for the YOK locked in MasterChef (0x62493bFa183bB6CcD4b4e856230CF72f68299469).`, - godwoken: { - tvl: tvl_v0, - //staking, - }, - godwoken_v1: { - tvl: tvl_v1, - staking: sumTokensExport({ owner: '0xbf7b7295f84b4bd2de9d549d047e51c7917dc5e3', tokens: ['0x885fb612947ccF1C7611894Bd828D388b046fc24'], lps: ['0xbf7b7295f84b4bd2de9d549d047e51c7917dc5e3'], useDefaultCoreAssets: true }) - }, - hallmarks: [ - ['2022-08-26', "Add godwoken v1 chain tvl"], - ], -}; diff --git a/projects/yoko-live/index.js b/projects/yoko-live/index.js deleted file mode 100644 index 25ef474bb1f..00000000000 --- a/projects/yoko-live/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const AGENT_FACTORY_ADDRESS = "0xc4aA72712E22D06fBdF54b5413d4270B1A965Ef2"; - -async function tvl(api) { - const agents = await api.fetchList({ lengthAbi: 'totalAgents', itemAbi: 'allAgentTokens', target: AGENT_FACTORY_ADDRESS }) - const veTokens = await api.fetchList({ lengthAbi: 'totalAgents', itemAbi: 'allVeTokens', target: AGENT_FACTORY_ADDRESS }) - const liquidityPools = await api.multiCall({ abi: 'address[]:liquidityPools', calls: agents }) - const ownerTokens = veTokens.map((agent, i) => [liquidityPools[i], agent]) - return sumTokens2({ ownerTokens, api, resolveLP: true, }) -} - -module.exports = { - methodology: "Calculates TVL by summing the value of all tokens in UniV2 liquidity pools associated with agent tokens", - sonic: { - tvl - } -}; \ No newline at end of file diff --git a/projects/yoshi-exchange/index.js b/projects/yoshi-exchange/index.js deleted file mode 100644 index e7e0fbb883c..00000000000 --- a/projects/yoshi-exchange/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0xc5bc174cb6382fbab17771d05e6a918441deceea', - 'bsc': '0x542b6524abf0bd47dc191504e38400ec14d0290c', - 'ethereum': '0x773cadc167deafa46f603d96172fa45686c4fa58', -}) \ No newline at end of file diff --git a/projects/youswap/index.js b/projects/youswap/index.js deleted file mode 100644 index bd4ba6c3f52..00000000000 --- a/projects/youswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'heco': '0x9f1cd0e59e78f5288e2fcf43030c9010d4f2991d', - 'bsc': '0x137f34df5bcdb30f5e858fc77cb7ab60f8f7a09a', - 'ethereum': '0xa7028337d3da1f04d638cc3b4dd09411486b49ea', -}) \ No newline at end of file diff --git a/projects/youves/data.js b/projects/youves/data.js deleted file mode 100644 index 6ffea66b2b6..00000000000 --- a/projects/youves/data.js +++ /dev/null @@ -1,485 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const Ss = { - id: 'tez', - name: 'Tezos', - shortName: 'tez', - decimals: 6, - symbol: 'tez', - targetSymbol: 'tez', - unit: 'tez', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, ws = { - id: 'YOU', - name: 'Youves Governance YOU', - shortName: 'YOU', - decimals: 12, - symbol: 'YOU', - targetSymbol: 'YOU', - unit: 'YOU', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Ts = { - id: 'xtztzbtc', - name: 'XTZ/tzBTC Liquidity Baking Token', - shortName: 'tzBTC LB', - decimals: 0, - symbol: 'xtztzbtc', - targetSymbol: 'XTZ/tzBTC LP', - unit: 'XTZ/tzBTC LP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Bs = { - id: 'tzbtc', - name: 'tzBTC', - shortName: 'tzBTC', - decimals: 8, - symbol: 'tzbtc', - targetSymbol: 'tzBTC', - unit: 'tzBTC', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 6, - inputDecimalPlaces: 8 -}, Rs = { - id: 'kusd', - name: 'Kolibri USD', - shortName: 'kUSD', - decimals: 18, - symbol: 'kusd', - targetSymbol: 'kUSD', - unit: 'kUSD', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Ps = { - id: 'usdtz', - name: 'USDtz', - shortName: 'USDtz', - decimals: 6, - symbol: 'usdtz', - targetSymbol: 'USDtz', - unit: 'USDtz', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Ds = { - id: 'uUSD', - name: 'youves uUSD', - shortName: 'uUSD', - decimals: 12, - symbol: 'uUSD', - targetSymbol: 'USD', - unit: 'uUSD', - impliedPrice: 1.25, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Fd = { - id: 'usdt', - name: 'USDt', - shortName: 'USDt', - decimals: 6, - symbol: 'usdt', - targetSymbol: 'USDt', - unit: 'USDt', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, ks = { - id: 'uDEFI', - name: 'youves uDEFI', - shortName: 'uDEFI', - decimals: 12, - symbol: 'uDEFI', - targetSymbol: 'DEFI', - unit: 'uDEFI', - impliedPrice: 1.25, - tokenId: 1, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Ns = { - id: 'uBTC', - name: 'youves uBTC', - shortName: 'uBTC', - decimals: 12, - symbol: 'uBTC', - targetSymbol: 'BTC', - unit: 'uBTC', - impliedPrice: 1.25, - tokenId: 2, - decimalPlaces: 6, - inputDecimalPlaces: 8 -}, Os = { - id: 'plenty', - name: 'Plenty', - shortName: 'Plenty', - decimals: 18, - symbol: 'plenty', - targetSymbol: 'plenty', - unit: 'plenty', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, xs = { - id: 'wusdc', - name: 'wUSDC', - shortName: 'wUSDC', - decimals: 6, - symbol: 'wusdc', - targetSymbol: 'wUSDC', - unit: 'wusdc', - impliedPrice: 1, - tokenId: 17, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Ms = { - id: 'wwbtc', - name: 'wwBTC', - shortName: 'wwBTC', - decimals: 8, - symbol: 'wwbtc', - targetSymbol: 'wwBTC', - unit: 'wwbtc', - impliedPrice: 1, - tokenId: 19, - decimalPlaces: 6, - inputDecimalPlaces: 8 -}, Us = { - id: 'uusdwusdcLP', - name: 'uUSD/wUSDC LP', - shortName: 'uUSD/wUSDC LP', - decimals: 12, - symbol: 'uusdwusdcLP', - targetSymbol: 'uUSD/wUSDC LP', - unit: 'uusdwusdcLP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Qs = { - id: 'ubtctzbtcLP', - name: 'uBTC/tzBTC LP', - shortName: 'uBTC/tzBTC LP', - decimals: 12, - symbol: 'ubtctzbtcLP', - targetSymbol: 'uBTC/tzBTC LP', - unit: 'ubtctzbtcLP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Ls = { - id: 'tzbtcwwbtcLP', - name: 'tzBTC/wWBTC LP', - shortName: 'tzBTC/wWBTC LP', - decimals: 8, - symbol: 'tzbtcwwbtcLP', - targetSymbol: 'tzBTC/wWBTC LP', - unit: 'tzbtcwwbtcLP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Fs = { - id: 'uusdyouLP', - name: 'uUSD/YOU LP', - shortName: 'uUSD/YOU LP', - decimals: 12, - symbol: 'uusdyouLP', - targetSymbol: 'uUSD/YOU LP', - unit: 'uusdyouLP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Gs = { - id: 'uusdudefiLP', - name: 'uUSD/uDEFI LP', - shortName: 'uUSD/uDEFI LP', - decimals: 12, - symbol: 'uusdudefiLP', - targetSymbol: 'uUSD/uDEFI LP', - unit: 'uusdudefiLP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, js = { - id: 'uusdkusdLP', - name: 'uUSD/kUSD LP', - shortName: 'uUSD/kUSD LP', - decimals: 18, - symbol: 'uusdkusdLP', - targetSymbol: 'uUSD/kUSD LP', - unit: 'uusdkusdLP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Hs = { - id: 'uusdusdtzLP', - name: 'uUSD/USDtz LP', - shortName: 'uUSD/USDtz LP', - decimals: 12, - symbol: 'uusdusdtzLP', - targetSymbol: 'uUSD/USDtz LP', - unit: 'uusdusdtzLP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, Vs = { - id: 'uusdubtcLP', - name: 'uUSD/uBTC LP', - shortName: 'uUSD/uBTC LP', - decimals: 6, - symbol: 'uusdubtcLP', - targetSymbol: 'uUSD/uBTC LP', - unit: 'uusdubtcLP', - impliedPrice: 1, - tokenId: 21, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, uT = { - id: 'uusdusdtLP', - name: 'uUSD/USDt LP', - shortName: 'uUSD/USDt LP', - decimals: 12, - symbol: 'uusdusdtLP', - targetSymbol: 'uUSD/USDt LP', - unit: 'uusdusdtLP', - impliedPrice: 1, - tokenId: 0, - decimalPlaces: 2, - inputDecimalPlaces: 4 -}, - Ws = { - - uusdusdtLP: Object.assign(Object.assign({ - }, uT), { - contractAddress: 'KT1H41VCk8FgskYy4RbLXH8Fwt83PJ5MNvno' - }), - xtzToken: Object.assign(Object.assign({ - }, Ss), { - contractAddress: 'EMPTY' - }), - youToken: Object.assign(Object.assign({ - }, ws), { - contractAddress: ADDRESSES.tezos.YOU - }), - uusdToken: Object.assign(Object.assign({ - }, Ds), { - contractAddress: ADDRESSES.tezos.uUSD - }), - udefiToken: Object.assign(Object.assign({ - }, ks), { - contractAddress: ADDRESSES.tezos.uUSD - }), - ubtcToken: Object.assign(Object.assign({ - }, Ns), { - contractAddress: ADDRESSES.tezos.uUSD - }), - tzbtcToken: Object.assign(Object.assign({ - }, Bs), { - contractAddress: ADDRESSES.tezos.tzBTC - }), - kusdToken: Object.assign(Object.assign({ - }, Rs), { - contractAddress: ADDRESSES.tezos.kUSD - }), - usdtzToken: Object.assign(Object.assign({ - }, Ps), { - contractAddress: ADDRESSES.tezos.USDtz - }), - usdtToken: Object.assign(Object.assign({ - }, Fd), { - contractAddress: ADDRESSES.tezos.USDt - }), - wusdcToken: Object.assign(Object.assign({ - }, xs), { - contractAddress: ADDRESSES.tezos.AAVE - }), - wwbtcToken: Object.assign(Object.assign({ - }, Ms), { - contractAddress: ADDRESSES.tezos.AAVE - }), - plentyToken: Object.assign(Object.assign({ - }, Os), { - contractAddress: ADDRESSES.tezos.PLENTY - }), - tzbtcLP: Object.assign(Object.assign({ - }, Ts), { - contractAddress: 'KT1AafHA1C1vk959wvHWBispY9Y2f3fxBUUo' - }), - uusdwusdcLP: Object.assign(Object.assign({ - }, Us), { - contractAddress: 'KT1Exm6UTCNEbBHANZ7S53t7QN8NJFwAytxg' - }), - tzbtcwwbtcLP: Object.assign(Object.assign({ - }, Ls), { - contractAddress: 'KT1CuqpjqPPvcZCrvzJunCvHvPaujASdmFJZ' - }), - ubtctzbtcLP: Object.assign(Object.assign({ - }, Qs), { - contractAddress: 'KT1TzHdwC4KHbGxsXVVvaxdrjVPgUsrHEgJr' - }), - uusdkusdLP: Object.assign(Object.assign({ - }, js), { - contractAddress: 'KT1NZt7NTYs7m3VhB8rrua7WwVQ9uhKgpgCN' - }), - uusdusdtzLP: Object.assign(Object.assign({ - }, Hs), { - contractAddress: 'KT1Toztq42271zT2wXDnu2hFVVdJJ8qWrETu' - }), - uusdubtcLP: Object.assign(Object.assign({ - }, Vs), { - contractAddress: 'KT1VNEzpf631BLsdPJjt2ZhgUitR392x6cSi' - }), - uusdyouLP: Object.assign(Object.assign({ - }, Fs), { - contractAddress: 'KT1Tmncfgpp4ZSp6aEogL7uhBqHTiKsSPegK' - }), - uusdudefiLP: Object.assign(Object.assign({ - }, Gs), { - contractAddress: 'KT1RQvdYD9yc763j8FiVLyXbKPVVbZqGRx5m' - }) - }, qs = [ - { - token1: Ws.uusdToken, - token2: Ws.usdtToken, - lpToken: Ws.uusdusdtLP, - rewardToken: Ws.youToken, - farmContract: 'KT1USKq4gHFVs7WJSVsqKn8j8P4tmqZcgSbd', - expectedWeeklyRewards: 1015, - }, - { - token1: Ws.wusdcToken, - token2: Ws.uusdToken, - lpToken: Ws.uusdwusdcLP, - rewardToken: Ws.youToken, - farmContract: 'KT1TkNadQ9Cw5ZNRyS4t9SKmUbmAMkqY8bkV', - expectedWeeklyRewards: 0, - }, - { - token1: Ws.uusdToken, - token2: Ws.ubtcToken, - lpToken: Ws.uusdubtcLP, - rewardToken: Ws.youToken, - farmContract: 'KT1KGfEyxBeCU873RfuwrU1gy8sjC1s82WZV', - expectedWeeklyRewards: 1000, - }, - { - token1: Ws.uusdToken, - token2: Ws.kusdToken, - lpToken: Ws.uusdkusdLP, - rewardToken: Ws.youToken, - farmContract: 'KT1HaWDWv7XPsZ54JbDquXV6YgyazQr9Jkp3', - expectedWeeklyRewards: 1000, - }, - { - token1: Ws.uusdToken, - token2: Ws.usdtzToken, - lpToken: Ws.uusdusdtzLP, - rewardToken: Ws.youToken, - farmContract: 'KT1JFsKh3Wcnd4tKzF6EwugwTVGj3XfGPfeZ', - expectedWeeklyRewards: 1000, - }, - { - token1: Ws.wusdcToken, - token2: Ws.uusdToken, - lpToken: Ws.uusdwusdcLP, - rewardToken: Ws.youToken, - farmContract: 'KT1Ug9wWbRuUs1XXRuK11o6syWdTFZQsmvw3', - expectedWeeklyRewards: 1250, - }, - { - token1: Ws.uusdToken, - token2: Ws.youToken, - lpToken: Ws.uusdyouLP, - rewardToken: Ws.youToken, - farmContract: 'KT1Goz5Dsi8Hf7fqjx5nSEcjp6osD9ufECB2', - expectedWeeklyRewards: 2000, - }, - { - token1: Ws.uusdToken, - token2: Ws.udefiToken, - lpToken: Ws.uusdudefiLP, - rewardToken: Ws.youToken, - farmContract: 'KT1W78rDHfwp3CKev7u7dWRJTBqLdwYVcPg9', - expectedWeeklyRewards: 500, - } - ], Ys = [ - { - token1: Ws.usdtToken, - token2: Ws.uusdToken, - contractAddress: 'KT1UJBvm4hv11Uvu6r4c8zE5K2EfmwiRVgsm', - liquidityToken: Ws.uusdusdtLP - }, - { - token1: Ws.wusdcToken, - token2: Ws.uusdToken, - contractAddress: 'KT1JeWiS8j1kic4PHx7aTnEr9p4xVtJNzk5b', - liquidityToken: Ws.uusdwusdcLP - }, - { - token1: Ws.tzbtcToken, - token2: Ws.wwbtcToken, - contractAddress: 'KT1T974a8qau4xP3RAAWPYCZM9xtwU9FLjPS', - liquidityToken: Ws.tzbtcwwbtcLP - }, - { - token1: Ws.tzbtcToken, - token2: Ws.ubtcToken, - contractAddress: 'KT1XvH5f2ja2jzdDbv6rxPmecZFU7s3obquN', - liquidityToken: Ws.ubtctzbtcLP - }, - { - token1: Ws.kusdToken, - token2: Ws.uusdToken, - contractAddress: 'KT1AVbWyM8E7DptyBCu4B5J5B7Nswkq7Skc6', - liquidityToken: Ws.uusdkusdLP - }, - { - token1: Ws.usdtzToken, - token2: Ws.uusdToken, - contractAddress: 'KT1Xbx9pykNd38zag4yZvnmdSNBknmCETvQV', - liquidityToken: Ws.uusdusdtzLP - }, - { - token1: Ws.xtzToken, - token2: Ws.uusdToken, - address: 'KT1EtjRRCBC2exyCRXz8UfV7jz7svnkqi7di' - }, - { - token1: Ws.xtzToken, - token2: Ws.udefiToken, - address: 'KT1H8sJY2VzrbiX4pYeUVsoMUd4iGw2DV7XH' - }, - { - token1: Ws.uusdToken, - token2: Ws.youToken, - address: 'KT1TnrLFrdemNZ1AnnWNfi21rXg7eknS484C' - }, - { - token1: Ws.uusdToken, - token2: Ws.udefiToken, - address: 'KT1EAw8hL5zseB3SLpJhBqPQfP9aWrWh8iMW' - }, - ] - -module.exports = { - tokens: Ws, - farms: qs, - dexes: Ys, -} \ No newline at end of file diff --git a/projects/youves/index.js b/projects/youves/index.js deleted file mode 100644 index cf52c6d40ad..00000000000 --- a/projects/youves/index.js +++ /dev/null @@ -1,110 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { GraphQLClient, gql } = require("graphql-request"); -const sdk = require("@defillama/sdk") -const { addDexPosition, resolveLPPosition, getStorage, usdtAddressTezos, } = require('../helper/chain/tezos') -const { dexes, farms } = require('./data') -const { PromisePool } = require('@supercharge/promise-pool'); -let graphQLClient - -const indexer = "https://indexer.youves.com/v1/graphql" -const engines = { - uUSDTezosV1: 'KT1FFE2LC5JpVakVjHm5mM36QVp2p3ZzH4hH', - uUSDTezosV3: 'KT1DHndgk8ah1MLfciDnCV2zPJrVbnnAH9fd', - uUSDUSDtV3: 'KT1JmfujyCYTw5krfu9bSn7YbLYuz2VbNaje', - uUSDtzBTCV3: 'KT1V9Rsc4ES3eeQTr4gEfJmNhVbeHrAZmMgC', - uUSDtzBTCV2: 'KT1HxgqnVjGy7KsSUTEsQ6LgpD5iKSGu7QpA', - uUSDtzBTCLPV2: 'KT1FzcHaNhmpdYPNTgfb8frYXx7B5pvVyowu', - uUSDtzBTCLPV3: 'KT1F1JMgh6SfqBCK6T6o7ggRTdeTLw91KKks', - uDefiuUSDV2: 'KT1B2GSe47rcMCZTRk294havTpyJ36JbgdeB', - uDefitzV2: 'KT1LQcsXGpmLXnwrfftuQdCLNvLRLUAuNPCV', - uDefitzBTCLPV2: 'KT1E45AvpSr7Basw2bee3g8ri2LK2C2SV2XG', - uBTCTezosV2: 'KT1VjQoL5QvyZtm9m1voQKNTNcQLi5QiGsRZ', - uBTCTezosV3: 'KT1CP1C8afHqdNfBsSE3ggQhzM2iMHd4cRyt', - uBTCtzBTCLPV2: 'KT1NFWUqr9xNvVsz2LXCPef1eRcexJz5Q2MH', - uBTCtzBTCLPV3: 'KT1G6RzVX25YnoU55Xb7Vve3zvuZKmouf24a', -} - -const uDEFI_LP = 'KT1H8sJY2VzrbiX4pYeUVsoMUd4iGw2DV7XH' -const uDEFI_TOKEN = 'KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW-1' -const tzBTC_TOKEN = ADDRESSES.tezos.tzBTC - - -async function fetchBalance(balances, token, engineAddress, decimals = 0, sharePrice) { - const query = gql` -{ - vault_aggregate(where: { engine_contract_address: { _eq: "${engineAddress}" } }) { - aggregate { - sum { - balance - } - } - } -} -` - - const oracleData = await graphQLClient.request(query) - let balance = oracleData["vault_aggregate"]["aggregate"]["sum"]["balance"] / 10 ** decimals - - if (token === 'tzbtc-lp') { - const balancetZ = balance * sharePrice.xtzPool / sharePrice.lqtTotal - const balanceBTC = balance * sharePrice.tokenPool / sharePrice.lqtTotal - sdk.util.sumSingleBalance(balances, 'tezos', balancetZ / 1e6, 'tezos') - sdk.util.sumSingleBalance(balances, sharePrice.tokenAddress, balanceBTC, 'tezos') - return; - } - - sdk.util.sumSingleBalance(balances, token, balance, 'tezos') -} - - -async function getTzBTCLPSharePrice() { - return getStorage('KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5') -} - -async function tvl() { - graphQLClient = new GraphQLClient(indexer); - const balances = {} - const sharePrice = await getTzBTCLPSharePrice() - await Promise.all([ - // fetchBalance(balances, ADDRESSES.tezos.uUSD, engines.uDefiuUSDV2, 0), // disabling this because backing of uUSD is already counted in tvl - fetchBalance(balances, usdtAddressTezos, engines.uUSDUSDtV3, 0), - fetchBalance(balances, tzBTC_TOKEN, engines.uUSDtzBTCV2, 0), - fetchBalance(balances, tzBTC_TOKEN, engines.uUSDtzBTCV3, 0), - fetchBalance(balances, 'tezos', engines.uUSDTezosV1, 6), - fetchBalance(balances, 'tezos', engines.uUSDTezosV3, 6), - fetchBalance(balances, 'tezos', engines.uBTCTezosV2, 6), - fetchBalance(balances, 'tezos', engines.uBTCTezosV3, 6), - fetchBalance(balances, 'tezos', engines.uDefitzV2, 6), - fetchBalance(balances, 'tzbtc-lp', engines.uUSDtzBTCLPV2, 0, sharePrice), - fetchBalance(balances, 'tzbtc-lp', engines.uUSDtzBTCLPV3, 0, sharePrice), - fetchBalance(balances, 'tzbtc-lp', engines.uBTCtzBTCLPV2, 0, sharePrice), - fetchBalance(balances, 'tzbtc-lp', engines.uBTCtzBTCLPV3, 0, sharePrice), - fetchBalance(balances, 'tzbtc-lp', engines.uDefitzBTCLPV2, 0, sharePrice), - ]) - - return balances -} - -async function pool2() { - const balances = {} - - const youvesLPs = dexes.map(i => i.contractAddress).filter(i => i) - let eligibleFarms = farms.filter(i => !youvesLPs.includes(i.lpToken)).map(({ farmContract, lpToken: { contractAddress } }) => ({ farmContract, contractAddress })) - - await PromisePool - .withConcurrency(3) - .for(youvesLPs) - .process(account => addDexPosition({ balances, account })) - - const promises = [] - for (const { farmContract, contractAddress } of eligibleFarms) - promises.push(resolveLPPosition({ balances, lpToken: contractAddress, owner: farmContract, ignoreList: youvesLPs })) - await Promise.all(promises) - - return balances -} - -module.exports = { - timetravel: false, - tezos: { tvl, pool2 } -} \ No newline at end of file diff --git a/projects/yslio/abi.json b/projects/yslio/abi.json deleted file mode 100644 index 09358681e39..00000000000 --- a/projects/yslio/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accsYSLPerShare, address strat, bool isActive)", - "poolLength": "uint256:poolLength", - "symbol": "string:symbol" -} \ No newline at end of file diff --git a/projects/yslio/index.js b/projects/yslio/index.js deleted file mode 100644 index 40b2da6098e..00000000000 --- a/projects/yslio/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); - -const masterChefContract = "0xEE7Bc7727436D839634845766f567fa354ba8C56"; - -async function tvl(api) { - const infos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: masterChefContract }) - const lpTokens = infos.map(i => i.lpToken) - const strats = infos.map(i => i.strat) - return sumTokens2({ api, tokensAndOwners2: [lpTokens, strats], resolveLP: true }) -} - - -module.exports = { - bsc: { tvl, }, - methodology: - "We count liquidity on the Strategies (Vaults) through MasterChef contracts", -}; diff --git a/projects/ysmart/index.js b/projects/ysmart/index.js deleted file mode 100644 index 8f47982c4a1..00000000000 --- a/projects/ysmart/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const masterchef = "0x705A71efadD12faDac67600b666D8c0347848BD3"; -const token_USDC = ADDRESSES.telos.ETH; -const token_USDT = ADDRESSES.moonriver.USDT; - -module.exports = { - kava: { - tvl: sumTokensExport({ - owner: masterchef, - tokens: [token_USDC, token_USDT] - }) - } -} - -module.exports.deadFrom = '2023-04-22' \ No newline at end of file diff --git a/projects/yumiswap/index.js b/projects/yumiswap/index.js deleted file mode 100644 index fcc8f84aa92..00000000000 --- a/projects/yumiswap/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const FACTORIES = "0xD3CFB8A232Ad5D0A7ABc817ae3BD1F3E7AE4b5E0" - -module.exports = { - methodology: "TVL comes from the DEX liquidity pools", - astar: { - tvl: getUniTVL({ factory: FACTORIES, useDefaultCoreAssets: true }), - } -} \ No newline at end of file diff --git a/projects/yup/index.js b/projects/yup/index.js deleted file mode 100644 index 1ad46ce06b9..00000000000 --- a/projects/yup/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const { pool2 } = require("../helper/pool2"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const sdk = require('@defillama/sdk') -const POLY_LP = '0xfe8bacb45a5ce5cf0746f33d3a792c98fbd358e0' -const POLY_MASTERCHEF = '0xabc4250b8813D40c8C42290384C3C8c8BA33dBE6' -const ETH_LP = '0x916560c92f423bf7d20f34591a6b27a254c3bd7a' -const ETH_LP_BRIDGED = '0x5b51f8a6651e4d45d0e3d0131e73b30b7e3443f4' -const POLY_ETH_MASTERCHEF = '0xa378721517B5030D9D17CaF68623bB1f2CcF5c2e' - -module.exports = { - timetravel: false, - polygon: { - tvl: async () => ({}), - pool2: pool2(POLY_MASTERCHEF, POLY_LP), - }, - ethereum: { - tvl: async () => ({}), - pool2: async (api) => { - const { output: LPbalance } = await sdk.api.erc20.balanceOf({ target: ETH_LP_BRIDGED, owner: POLY_ETH_MASTERCHEF, chain: 'polygon' }) - api.add(ETH_LP, LPbalance) - return sumTokens2({ api, resolveLP: true }) - } - }, -}; diff --git a/projects/yupana/index.js b/projects/yupana/index.js deleted file mode 100644 index c29518751af..00000000000 --- a/projects/yupana/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const sdk = require("@defillama/sdk") -const { - getStorage, - getBigMapById, - sumTokens2, -} = require("../helper/chain/tezos"); - -const YUPANA_CORE = "KT1Rk86CX85DjBKmuyBhrCyNsHyudHVtASec"; -const YUPANA_CORE_V2 = "KT1CojtgtVHVarS135fnV3y4z8TiKXrsRHJr"; // https://twitter.com/YupanaFinance/status/1739216683728797802 - -async function tvl() { - return sumTokens2({ owners: [YUPANA_CORE, YUPANA_CORE_V2], includeTezos: true, }) -} - -async function borrowed() { - const balances = {}; - await Promise.all([YUPANA_CORE, YUPANA_CORE_V2].map(addBorrowed)); - - async function addBorrowed(YUPANA_CORE) { - const storage = await getStorage(YUPANA_CORE); - const tokens_map = await getBigMapById(storage.storage.tokens); - for (const id in tokens_map) { - const token = tokens_map[id]; - const token_borrows = token.totalBorrowsF / 1e18; - let token_address; - if (token.mainToken.fA2) - token_address = - `${token.mainToken.fA2.address}` + - (token.mainToken.fA2.nat > 0 ? "-" + token.mainToken.fA2.nat : ""); - else - token_address = `${token.mainToken.fA12}`; - sdk.util.sumSingleBalance(balances, token_address, token_borrows, 'tezos'); - } - } - return balances -} - -module.exports = { - timetravel: false, - tezos: { - tvl, - borrowed, - }, - methodology: - 'TVL counts the liquidity, reserves for each market.', -}; diff --git a/projects/yuzu-market/index.js b/projects/yuzu-market/index.js deleted file mode 100644 index bf5e828e1de..00000000000 --- a/projects/yuzu-market/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { aaveExports } = require('../helper/aave'); - -module.exports = { - eon: aaveExports("eon", "0x7CCE4c055BbC0Da1FeCb09F3d327b125FE19555a"), -} \ No newline at end of file diff --git a/projects/yuzu.js b/projects/yuzu.js deleted file mode 100644 index 6ef7401a4d3..00000000000 --- a/projects/yuzu.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getUniTVL } = require('./helper/unknownTokens') -module.exports = { - oasis: { - tvl: getUniTVL({ factory: '0x5F50fDC22697591c1D7BfBE8021163Fc73513653', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/yuzu/index.js b/projects/yuzu/index.js deleted file mode 100644 index 434bb0c48cf..00000000000 --- a/projects/yuzu/index.js +++ /dev/null @@ -1,72 +0,0 @@ -const { function_view } = require("../helper/chain/aptos"); -const { PromisePool } = require('@supercharge/promise-pool') - -// Constants -const YUZU_CLMM_PACKAGE = - "0x46566b4a16a1261ab400ab5b9067de84ba152b5eb4016b217187f2a2ca980c5a"; -const GET_ALL_POOLS_FUNCTION = `${YUZU_CLMM_PACKAGE}::liquidity_pool::get_all_pools`; -const GET_POOL_VIEW_FUNCTION = `${YUZU_CLMM_PACKAGE}::liquidity_pool::get_pool_view`; - -/** - * Retrieves all pool IDs from Yuzu CLMM contract - * @param {string} chain - The blockchain name - * @returns {Promise>} - Array of pool IDs - */ -const getPoolIds = async chain => { - try { - const pools = await function_view({ - functionStr: GET_ALL_POOLS_FUNCTION, - type_arguments: [], - args: [], - chain - }); - - return pools.map(pool => pool.inner); - } catch (error) { - console.error(`Error fetching pool IDs: ${error.message}`); - return []; - } -}; - -/** - * Fetches data for a specific pool - * @param {string} poolId - Pool identifier - * @param {string} chain - The blockchain name - * @returns {Promise} - Pool data or null if error - */ -const getPoolData = async (poolId, chain) => { - try { - return await function_view({ - functionStr: GET_POOL_VIEW_FUNCTION, - type_arguments: [], - args: [poolId], - chain - }); - } catch (error) { - console.error(`Error fetching data for pool ${poolId}: ${error.message}`); - return null; - } -}; - -module.exports = { - timetravel: false, - methodology: "Aggregates TVL in all pools in Yuzu CLMM.", - move: { - tvl: async api => { - const poolIds = await getPoolIds(api.chain); - - const poolsData = await PromisePool - .withConcurrency(10) - .for(poolIds) - .process(id => getPoolData(id, api.chain)) - - // Add token reserves to TVL - poolsData.results.forEach(pool => { - if (pool) { - api.add(pool.token_0, pool.token_0_reserve); - api.add(pool.token_1, pool.token_1_reserve); - } - }); - } - } -}; diff --git a/projects/yyex/index.js b/projects/yyex/index.js deleted file mode 100644 index a2bcfaf620e..00000000000 --- a/projects/yyex/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); - -module.exports = { - btr: { - tvl: gmxExports({ - vault: "0x16Aa605Ca2cBE921AAC6C4838c1109b3cf9d444F", - }), - }, -}; diff --git a/projects/z3z/index.js b/projects/z3z/index.js deleted file mode 100644 index aab56f97ea5..00000000000 --- a/projects/z3z/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const CONTRACTS = { - V1: "0x6582730C6b5366144c43dcBEfDf4a56e120967D5" -}; - -const WLD = ADDRESSES.wc.WLD; - -async function tvl(api) { - return sumTokens2({ - api, - tokensAndOwners: [ - [WLD, CONTRACTS.V1] - ], - useDefaultCoreAssets: true, - }); -} - -module.exports = { - methodology: - "TVL is calculated by sum of WLD tokens held on Z3Z contract.", - wc: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/zabufinance/index.js b/projects/zabufinance/index.js deleted file mode 100644 index 70199418598..00000000000 --- a/projects/zabufinance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const abi = { - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accRewardPerShare)", - "poolLength": "uint256:poolLength" -} -const { sumTokens2 } = require('../helper/unwrapLPs') - -const FARMING_CONTRACT_ADDRESS = "0xf61b4f980A1F34B55BBF3b2Ef28213Efcc6248C4"; - -const avaxTvl = async (api) => { - const tokens = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: FARMING_CONTRACT_ADDRESS}) - return sumTokens2({ api, tokens: tokens.map(i => i[0]), owner: FARMING_CONTRACT_ADDRESS}) -}; - -module.exports = { - avax:{ - tvl: avaxTvl, - }, - methodology: - 'The Zabu Farm Contract Address is used to obtain the balance held in every LP pair and single assets.', -}; diff --git a/projects/zai.js b/projects/zai.js deleted file mode 100644 index acafa7cbf26..00000000000 --- a/projects/zai.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - ethereum: { - tvl: () => 0, - staking: () => ({}), - pool2: () => ({}), - }, - deadFrom: '2022-11-11', -}; \ No newline at end of file diff --git a/projects/zamm/index.js b/projects/zamm/index.js deleted file mode 100644 index c35d016e3f8..00000000000 --- a/projects/zamm/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') - -const ZAMM_MAIN = '0x00000000000008882D72EfA6cCE4B6a40b24C860' -const ZAMM_ORDER = '0x000000000000040470635EB91b7CE4D132D616eD' -const ZAMM_CURVE = '0x00000000007732aBAd9e86BDd0C3A270197EF2e1' - -module.exports = { - methodology: 'Sums raw wei balance of ETH in zAMM.', - start: '2025-04-27', - ethereum: { - tvl: sumTokensExport({ - owners: [ZAMM_MAIN, ZAMM_ORDER, ZAMM_CURVE], - tokens: [nullAddress], - }), - }, -} diff --git a/projects/zapper-channels/index.js b/projects/zapper-channels/index.js deleted file mode 100644 index b8b866ebee9..00000000000 --- a/projects/zapper-channels/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); - -const contract = "0xbC98176DC471CB67Dc19fA4558104f034D8965Fa"; - -async function tvl(api) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }); -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - base: { - tvl, - }, -}; diff --git a/projects/zappy/index.js b/projects/zappy/index.js deleted file mode 100644 index b8d37832466..00000000000 --- a/projects/zappy/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x4be5Bf2233a0fd2c7D1472487310503Ec8E857be) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - telos: { - tvl: getUniTVL({ factory: '0x4be5Bf2233a0fd2c7D1472487310503Ec8E857be', useDefaultCoreAssets: true }), - }, -}; \ No newline at end of file diff --git a/projects/zarban/index.js b/projects/zarban/index.js deleted file mode 100644 index d101ccdf500..00000000000 --- a/projects/zarban/index.js +++ /dev/null @@ -1,52 +0,0 @@ -const abi = { - "getReservesList": "address[]:getReservesList", - "getReserveData": "function getReserveData(address asset) view returns (((uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address zTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))", - "list": "function list() view returns (bytes32[])", - "join": "function join(bytes32 ilk) view returns (address)", - "gem": "address:gem", - "debt": "uint256:debt" -} - -//constant addresses -const lendingPoolAddress = "0xC62545B7f466317b014773D1C605cA0D0931B0Fd"; -const ilkRegistryAddress = "0x821282748eb5b63155df21c62d6a6699ffcb01cf"; -const zar = "0xd946188a614a0d9d0685a60f541bba1e8cc421ae"; - -async function getLmMarkets(api) { - const tokens = await api.call({ abi: abi.getReservesList, target: lendingPoolAddress}) - const markets = await api.multiCall({ abi: abi.getReserveData, calls: tokens, target: lendingPoolAddress, }) - return [tokens, markets] -} - -async function getScsMarkets(api) { - - const ilks = await api.call({ target: ilkRegistryAddress, abi: abi.list, }) - const gemJoins = await api.multiCall({ abi: abi.join, calls: ilks, target: ilkRegistryAddress, }) - const gems = await api.multiCall({ abi: abi.gem, calls: gemJoins, }) - - return api.sumTokens({ tokensAndOwners2: [gems, gemJoins] }) -} - - -async function tvl(api) { - await getScsMarkets(api) - const [lmTokens, lmMarkets] = await getLmMarkets(api) - - await api.sumTokens({ tokensAndOwners2: [lmTokens, lmMarkets.map(i => i.zTokenAddress)] }) - api.removeTokenBalance(zar) -} - -async function borrowed(api) { - - const [tokens, markets] = await getLmMarkets(api) - const stableDebtTokens = markets.map(i => i.stableDebtTokenAddress) - const variableDebtTokens = markets.map(i => i.variableDebtTokenAddress) - const stableSupply = await api.multiCall({ abi: 'uint256:totalSupply', calls: stableDebtTokens }) - const variableSupply = await api.multiCall({ abi: 'uint256:totalSupply', calls: variableDebtTokens }) - api.add(tokens, stableSupply) - api.add(tokens, variableSupply) -} - -module.exports = { - arbitrum: { tvl, borrowed, } -} \ No newline at end of file diff --git a/projects/zebra-v2/index.js b/projects/zebra-v2/index.js deleted file mode 100644 index d6dedba8897..00000000000 --- a/projects/zebra-v2/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - scroll: { factory: '0x96a7F53f7636c93735bf85dE416A4Ace94B56Bd9', fromBlock: 810032, }, -}) \ No newline at end of file diff --git a/projects/zedaswap/index.js b/projects/zedaswap/index.js deleted file mode 100644 index c47855cc188..00000000000 --- a/projects/zedaswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); - -module.exports = uniTvlExport('zeta', '0x61db4eecb460b88aa7dcbc9384152bfa2d24f306') diff --git a/projects/zeebu/index.js b/projects/zeebu/index.js deleted file mode 100644 index 5b583d7e150..00000000000 --- a/projects/zeebu/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const VOTING_ESCROW_ADDRESSES = { - ethereum: '0x8e76Cdf3b14c540aB54aFa7f8492AC1d16Ecfb35', - base: '0xcf08d1ec5d8e566d95299399307f75f98d6aea03', - bsc: '0xd3e8cD2eDbf252860E02ffb245fD654b1ab30f30', -}; - -const ZBU_ADDRESSES = { - ethereum: '0xe77f6aCD24185e149e329C1C0F479201b9Ec2f4B', - base: '0x2C8C89C442436CC6C0a77943E09c8Daf49Da3161', - bsc: '0x4D3dc895a9EDb234DfA3e303A196c009dC918f84', -}; - -const lpTokens = [ - '0xC3889F9764d68BDF2e16f237206746344172A147' -]; - -const stackingcontract = [ - '0x45dd22aCe398002b34cB37b363B2F02C7dd47842' -]; - -module.exports = { - ethereum: { - staking: stakings([VOTING_ESCROW_ADDRESSES["ethereum"]], ZBU_ADDRESSES["ethereum"]), - tvl: () => ({}) - }, - base: { - staking: stakings([VOTING_ESCROW_ADDRESSES["base"]], ZBU_ADDRESSES["base"]), - pool2: pool2s(stackingcontract, lpTokens), - }, - bsc: { - staking: stakings([VOTING_ESCROW_ADDRESSES["bsc"]], ZBU_ADDRESSES["bsc"]), - }, - methodology: - 'Counts ZBU tokens locked in Voting Escrow contracts across Ethereum, Base, and BSC.', -}; \ No newline at end of file diff --git a/projects/zeepr/index.js b/projects/zeepr/index.js deleted file mode 100644 index 1a826524989..00000000000 --- a/projects/zeepr/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require("../helper/staking"); - -module.exports = { - arbitrum: { - tvl: () => ({}), - staking: staking("0xbb0390cf2586e9b0a4faadf720ae188d140e9fd5", "0xe46C5eA6Da584507eAF8dB2F3F57d7F578192e13"), - }, - core: { - tvl: () => ({}), - staking: staking("0x60101E4388D1c2B389d78daC29d37Ee2DAc88e07", ["0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223",ADDRESSES.core.WCORE]), - }, - bsc: { - tvl: () => ({}), - staking: staking("0x096e9A8B7137bEBA3A043b800D3d227d5abB077a", "0x55CBAC75C1af769eB7FD37d27A5cb6437EB29abB"), - }, - manta: { - tvl: () => ({}), - staking: staking("0x37D8A51d9621041d6b9276ea8a835553b31698c7", "0x0863C7BcdB6Cf6edd5dc4bbd181A8D555AedbfBd"), - }, - polygon: { - tvl: () => ({}), - staking: staking("0xCb9A02B704640ffcf43D6a8DAe5096fc8a44021c", "0x49fdEA2192b04e54E6D1cB5E3B3b996BAA6f621F"), - }, - zkfair: { - tvl: () => ({}), - staking: staking("0x37D8A51d9621041d6b9276ea8a835553b31698c7", "0x5d26DeA980716e4aBa19F5B73Eb3DCcE1889F042"), - }, -} diff --git a/projects/zena-v2/index.js b/projects/zena-v2/index.js deleted file mode 100644 index ab948d464c8..00000000000 --- a/projects/zena-v2/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const {getUniTVL} = require("../helper/unknownTokens"); - -module.exports = { - op_bnb: { - tvl: getUniTVL({ factory: "0x8b4FC88973E5b8348640d35E49b1e9cE8AAc180A", useDefaultCoreAssets: true, }) - }, -}; diff --git a/projects/zencha/index.js b/projects/zencha/index.js deleted file mode 100644 index 4561a451f61..00000000000 --- a/projects/zencha/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const swapFlashLoan = '0x2D027B49B8960810F84D5fE172d07FFf62311852'; - -module.exports = { - boba: { - tvl: sumTokensExport({ owner: swapFlashLoan, tokens: [ADDRESSES.boba.USDC, ADDRESSES.boba.USDT, ADDRESSES.boba.DAI] }), - } -} \ No newline at end of file diff --git a/projects/zendex/index.js b/projects/zendex/index.js deleted file mode 100644 index 3533541ef78..00000000000 --- a/projects/zendex/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - manta: { factory: "0x4Eee19e0856D23fAc3D0bDD867bEb4E1B8c78344", fromBlock: 39246, } -}) diff --git a/projects/zeniq-swap/index.js b/projects/zeniq-swap/index.js deleted file mode 100644 index 98a75efaab2..00000000000 --- a/projects/zeniq-swap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport('zeniq', '0x7D0cbcE25EaaB8D5434a53fB3B42077034a9bB99') \ No newline at end of file diff --git a/projects/zenith/contracts.json b/projects/zenith/contracts.json deleted file mode 100644 index 4bdfd42b7fa..00000000000 --- a/projects/zenith/contracts.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "admin": "0x3a11537C0e1f1cc80820a1EEd973bB367Bf3276A", - "ZTH": "0x00000000A82B4758df44fcB124e26a9B441E59a0", - "masterChef": "0xb9e7008FA856D66680BeE9E0a24da407D9d7fAD5", - "esZTH": "0x4DC377c2B63d06fF47BBd2B3B1177cfAC1906b1e", - "treasury": "0x648F3eC98da4De19b92598CF384662d494D881AB", - "ZTHETHPairV2":"0xAC0155CBd306e41C1287E2c53e1306178397b823", - "config": { - "startTime": 1683469800 - }, - "stakePools": [ - { - "pid": 0, - "name":"ETH", - "asset": "0x0000000000000000000000000000000000000000" - }, - { - "pid": 1, - "name":"ZTH-ETH", - "asset": "0xAC0155CBd306e41C1287E2c53e1306178397b823" - }, - { - "pid": 4, - "name":"stETH", - "asset": "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84" - }, { - "pid": 5, - "name":"rETH", - "asset": "0xae78736Cd615f374D3085123A210448E74Fc6393" - } - ] -} diff --git a/projects/zenith/index.js b/projects/zenith/index.js deleted file mode 100644 index ebfeb702f70..00000000000 --- a/projects/zenith/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const contracts = require("./contracts.json"); - -var pool2= [contracts.ZTHETHPairV2]; -var stakeTokens=[]; -contracts.stakePools.forEach(r=> {if(r.asset!=contracts.ZTHETHPairV2) stakeTokens.push(r.asset) }); - - -module.exports = { - methodology: - "TVL is comprised of tokens deposited to Zenith protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.", - ethereum: { - pool2: pool2s([contracts.masterChef], pool2), - tvl: stakings([contracts.masterChef], stakeTokens), - }, -}; diff --git a/projects/zenithswap/index.js b/projects/zenithswap/index.js deleted file mode 100644 index 4e7ea80d454..00000000000 --- a/projects/zenithswap/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const MASTER_CHEF = '0xa3b19C3aFD545900B778Cc7B3e2dC35848672aC2' -const ZSP_TOKEN = '0xb2dcbd5258a22385240e4ac13fc6726b66f0de96' - -module.exports = { - misrepresentedTokens: true, - methodology: - "Factory address (0x8F086a081621bbc13B6d02A9e1123212CF07fdf8) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - arbitrum: { - tvl: getUniTVL({ factory: '0x8F086a081621bbc13B6d02A9e1123212CF07fdf8', useDefaultCoreAssets: true }), - staking: staking( MASTER_CHEF, ZSP_TOKEN) - }, -}; \ No newline at end of file diff --git a/projects/zenlink/abis/StableSwap.json b/projects/zenlink/abis/StableSwap.json deleted file mode 100644 index 0c0c5107fc8..00000000000 --- a/projects/zenlink/abis/StableSwap.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "getTokens": "address[]:getTokens", - "getTokenBalances": "uint256[]:getTokenBalances" -} \ No newline at end of file diff --git a/projects/zenlink/index.js b/projects/zenlink/index.js deleted file mode 100644 index 4c4a4c902bd..00000000000 --- a/projects/zenlink/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getUniTVL } = require('../helper/unknownTokens') -const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)'; -const stableSwapAbi = require('./abis/StableSwap.json'); - - -function getStableSwapPool(contracts) { - return async (api) => { - const tokensArray = await api.multiCall({ abi: stableSwapAbi.getTokens, calls: contracts }) - const balsArray = await api.multiCall({ abi: stableSwapAbi.getTokenBalances, calls: contracts }) - tokensArray.map((v, i) => api.addTokens(v, balsArray[i])) - return api.getBalances() - } -} - -const MoonriverStableSwapContractAddress = [ - "0x7BDE79AD4ae9023AC771F435A1DC6efdF3F434D1", // USDT/USDC/xcAUSD/FRAX - "0xd38A007F60817635163637411353BB1987209827", // xcKSM/stKSM -]; - -const MoonbeamStableSwapContractAddress = [ - '0x68bed2c54Fd0e6Eeb70cFA05723EAE7c06805EC5', // 4pool -]; - -const AstarStableSwapContractAddress = [ - '0xb0Fa056fFFb74c0FB215F86D691c94Ed45b686Aa', // 4pool -]; - -const uniArgs = { - useDefaultCoreAssets: true, abis: { getReserves }, blacklistedTokens: [ - MoonbeamStableSwapContractAddress, - MoonriverStableSwapContractAddress, - AstarStableSwapContractAddress, - ].flat() -} - -module.exports = { - methodology: "Get all pairs from the Factory Contract then get the reserve0 token amount and reserve1 token amount in one pair. Update the total balance of each token by reserve0 and reserve1. Repeat 2 ~ 3 for each pairs.", - misrepresentedTokens: true, - moonriver: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: '0xf36AE63d89983E3aeA8AaaD1086C3280eb01438D', ...uniArgs, }), - getUniTVL({ factory: '0x28Eaa01DC747C4e9D37c5ca473E7d167E90F8d38', ...uniArgs, }), - getStableSwapPool(MoonriverStableSwapContractAddress), - ]) - }, - moonbeam: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: '0xF49255205Dfd7933c4D0f25A57D40B1511F92fEF', ...uniArgs, }), - getUniTVL({ factory: '0x079710316b06BBB2c0FF4bEFb7D2DaC206c716A0', ...uniArgs, }), - getStableSwapPool(MoonbeamStableSwapContractAddress), - ]) - }, - astar: { - tvl: sdk.util.sumChainTvls([ - getUniTVL({ factory: '0x7BAe21fB8408D534aDfeFcB46371c3576a1D5717', ...uniArgs, }), - getStableSwapPool(AstarStableSwapContractAddress), - ]) - }, -} diff --git a/projects/zeno/index.js b/projects/zeno/index.js deleted file mode 100644 index d76d60bba66..00000000000 --- a/projects/zeno/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -async function metisTvl(api) { - const vaultStorageAddress = "0xFaEee486F4A53cdBEaBE37216bcf1016eB4E52D6"; - - // eth, usdt, usdc - const zenoUnderlyingTokens = [ - ADDRESSES.metis.WETH, - ADDRESSES.metis.m_USDC, - ADDRESSES.metis.m_USDT, - ]; - - return api.sumTokens({ - owner: vaultStorageAddress, - tokens: zenoUnderlyingTokens, - }); -} - -module.exports = { - start: '2024-03-13', - metis: { - tvl: metisTvl, - }, -}; diff --git a/projects/zenolend/index.js b/projects/zenolend/index.js deleted file mode 100644 index 9950d445a14..00000000000 --- a/projects/zenolend/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { compoundExports2 } = require('../helper/compound') - -const config = { - apechain: '0xc2C583093Af9241E17B2Ec51844154468D21bF6F', - unichain: '0x086036b34689709cFAE75dfC453846b744bD8dcA', - soneium: '0x5075A7E2B018f352220874718E3f5Bd38C6DFD5D', - sty: '0x5075A7E2B018f352220874718E3f5Bd38C6DFD5D', - hemi: '0xc2C583093Af9241E17B2Ec51844154468D21bF6F' -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = compoundExports2({ comptroller: config[chain] }) -}); \ No newline at end of file diff --git a/projects/zero-g-fi/index.js b/projects/zero-g-fi/index.js deleted file mode 100644 index ce657825ee7..00000000000 --- a/projects/zero-g-fi/index.js +++ /dev/null @@ -1,37 +0,0 @@ -const { nullAddress } = require("../helper/tokenMapping"); - -const ZGETH_ADDRESS = "0x17fdeB2fbB8089fea8a7BDb847E49ce67cF863df"; -const ORACLE_ADDRESS = "0xAa6Fd6788fCA604AcFD3FE7e160Fbfcf4F0ef95C"; -const LOCKBOX_ADDRESS = "0x742B5Cb1a6a10E568a79D70EF77b542663ED3e1a"; - -async function ETHEREUM_TVL(api) { - const totalSupply = await api.call({ abi: "erc20:totalSupply", target: ZGETH_ADDRESS, }); - const lockBoxBalance = await api.call({ abi: "erc20:balanceOf", target: ZGETH_ADDRESS, params: [LOCKBOX_ADDRESS], }); - const lastPrice = await api.call({ abi: "uint256:zgETHPrice", target: ORACLE_ADDRESS, }); - - api.add(nullAddress, ((totalSupply - lockBoxBalance) * lastPrice) / 1e18); -} - -module.exports = { - doublecounted: true, - ethereum: { - tvl: ETHEREUM_TVL, - }, -} - -const config = { - arbitrum: { zgETH: '0xA5E5A6724E99EaBd4CA236633AAb882B7658F287', oracle: '0xae69f9AC9aC9302E2F97B313CaF1fB45a9bB18A6', }, - optimism: {}, - base: {}, -} - -Object.keys(config).forEach(chain => { - const { zgETH = '0x4B9D5F4e95f6Fe93B4607BFdB43CB6b32cE47aa0', oracle = '0x052c3De4979154C687eAc3865c6A7cC784328EfE', } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const totalSupply = await api.call({ abi: "erc20:totalSupply", target: zgETH, }) - const lastPrice = await api.call({ abi: "uint256:lastPrice", target: oracle, }) - api.add(nullAddress, (totalSupply * lastPrice) / 1e18) - } - } -}) diff --git a/projects/zero1-labs/index.js b/projects/zero1-labs/index.js deleted file mode 100644 index de777e952ea..00000000000 --- a/projects/zero1-labs/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { staking } = require("../helper/staking"); - -module.exports = { - methodology: "TVL comes from the Staking Vaults", - ethereum: { - tvl: () => ({}), - staking: staking([ - "0x7AabE771aCcAa3F54a1B7c05d65c6E55d0Cd0Af6", - "0x88062FE2751f3D5cEC18F6113A532A611632ae79", - "0x8DBA1f564458dd46283ca3a4CDf6CA019963aB42", - "0x68605AA964F25aC8c7C159331F9dF050321FDcc6", - ], "0x1495bc9e44Af1F8BCB62278D2bEC4540cF0C05ea"), - }, -} diff --git a/projects/zero_network/index.js b/projects/zero_network/index.js deleted file mode 100644 index 3a0eca2a57a..00000000000 --- a/projects/zero_network/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 543210, }), - }, -} diff --git a/projects/zerodex/index.js b/projects/zerodex/index.js deleted file mode 100644 index f30abae68f2..00000000000 --- a/projects/zerodex/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens'); -module.exports = { - avax: { - tvl: getUniTVL( { - factory: '0x2Ef422F30cdb7c5F1f7267AB5CF567A88974b308', - useDefaultCoreAssets: true, - }) - }, - bsc: { - tvl: getUniTVL( { - factory: '0x52abdb3536a3a966056e096f2572b2755df26eac', - useDefaultCoreAssets: true, - }) - }, - polygon: { - tvl: getUniTVL( { - factory: '0x6fd98cf211134081fe02f551d64cf89671d5443b', - useDefaultCoreAssets: true, - }) - }, -}; \ No newline at end of file diff --git a/projects/zerolend-vaults/index.js b/projects/zerolend-vaults/index.js deleted file mode 100644 index 33375c9c60d..00000000000 --- a/projects/zerolend-vaults/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const { getCuratorTvl } = require("../helper/curators"); - -const multisigs = [ - '0x54061E18cd88D2de9af3D3D7FDF05472253B29E0', - '0x4E88E72bd81C7EA394cB410296d99987c3A242fE', - '0x1f906603A027E686b43Fab7f395C11228EbE8ff4', -] - -const configs = { - methodology: 'Count all assets deposited into vaults curated by ZeroLend', - ethereum: { - eulerVaultOwners: multisigs, - euler: [ - '0xc42d337861878baa4dc820d9e6b6c667c2b57e8a', - '0x1ab9e92cfde84f38868753d30ffc43f812b803c5', - '0xc364fd9637fe562a2d5a1cbc7d1ab7f32be900ef' - ], - }, - linea: { - // eulerVaultOwners: multisigs, // todo: add this back in once it is supported by the API - euler: [ - '0x14efcc1ae56e2ff75204ef2fb0de43378d0beada', - '0x085f80df643307e04f23281f6fdbfaa13865e852', - '0x9ac2f0a564b7396a8692e1558d23a12d5a2abb1f', - ], - }, - berachain: { - eulerVaultOwners: multisigs, - euler: [ - '0x28C96C7028451454729750171BD3Bb95D7261B5a', - '0x112B77A77753b092306b1c04Bd70215FeD4e00a1', - '0x1B33D24C4C78a61DA80Cfa2d0dB72ca0851d5fb1', - '0x2247B618251b8d913F3fD10B749e7bfa3E3a28db', - '0x401c4633dCa173bf75ac85F2D270d98c063F54CF', - '0x2Bf927248f86Bd78ce300d00C7c8A175e3e0B38a', - ], - }, - sonic: { - eulerVaultOwners: multisigs, - euler: [ - '0x8c7a2c0729afb927da27d4c9aa172bc5a5fb12bb', - '0x9ccf74e64922d8a48b87aa4200b7c27b2b1d860a', - ], - } -} - -const tvl = (chain) => ({ tvl: async (api) => await getCuratorTvl(api, configs[chain]) }) - -module.exports = { - doublecounted: true, - methodology: configs.methodology, - ethereum: tvl('ethereum'), - linea: tvl('linea'), - sonic: tvl('sonic'), - berachain: tvl('berachain') -} diff --git a/projects/zerolend/index.js b/projects/zerolend/index.js deleted file mode 100644 index cfcf6f2ac99..00000000000 --- a/projects/zerolend/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const sdk = require('@defillama/sdk') -const { aaveExports } = require("../helper/aave"); -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const config = { - era: ["0xB73550bC1393207960A385fC8b34790e5133175E"], - manta: ["0x67f93d36792c49a4493652B91ad4bD59f428AD15"], - blast: ["0xc6DF4ddDBFaCb866e78Dcc01b813A41C15A08C10"], - hemi: ["0x9698FdF843cbe4531610aC231B0047d9FFc13bC6"], - base: ["0xA754b2f1535287957933db6e2AEE2b2FE6f38588"], - linea: [ - "0x67f93d36792c49a4493652B91ad4bD59f428AD15", // main linea market - '0x9aFB91a3cfB9aBc8Cbc8429aB57b6593FE36E173', // croak linea market - '0xEe9ec60657B714E3FAC5255a5443AC5EC7Ba5bB0', // foxy linea market - ], - xlayer: ["0x97e59722318F1324008484ACA9C343863792cBf6"], - zircuit: ["0xA754b2f1535287957933db6e2AEE2b2FE6f38588"], - ethereum: [ - "0x47223D4eA966a93b2cC96FFB4D42c22651FADFcf", // ethereum lrt market - '0x31063F7CA8ef4089Db0dEdf8D6e35690B468A611', // bitcoin lrt market - '0x298ECDcb0369Aef75cBbdA3e46a224Cfe622E287' // stablecoin rwa market - ], - corn:["0x2f7e54ff5d45f77bFfa11f2aee67bD7621Eb8a93"], - abstract:["0x8EEAE4dD40EBee7Bb6471c47d4d867539CF53ccF"] -}; - -const linea = { - treasury: "0x14aAD4668de2115e30A5FeeE42CFa436899CCD8A", - zeroEthNileLP: "0x0040f36784dda0821e74ba67f86e084d70d67a3a", - zeroEthNileCLP: "0x179b4B1C19faF18Bed713304c870e9317bc79A84", - zeroEthLynexCLP: "0xb88261e0DBAAc1564f1c26D78781F303EC7D319B", - zero: "0x78354f8DcCB269a615A7e0a24f9B0718FDC3C7A7", - zlpLocker: "0x8bb8b092f3f872a887f377f73719c665dd20ab06", - zeroLocker: "0x08D5FEA625B1dBf9Bae0b97437303a0374ee02F8", -}; - -const data = {}; -Object.keys(config).forEach((chain) => { - const chainExports = config[chain].map((address) => aaveExports(chain, undefined, undefined, [address])) - data[chain] = { - tvl: sdk.util.sumChainTvls(chainExports.map(i => i.tvl)), - borrowed: sdk.util.sumChainTvls(chainExports.map(i => i.borrowed)) - } -}); - -data.linea.staking = staking(linea.zeroLocker, linea.zero, "linea"); -data.linea.pool2 = pool2s([linea.zlpLocker], [linea.zeroEthNileLP], "linea"); // todo add the lynex and nile LPs from the treasury - -module.exports = data; diff --git a/projects/zeroliquid/index.js b/projects/zeroliquid/index.js deleted file mode 100644 index 6ee17e32b9a..00000000000 --- a/projects/zeroliquid/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { staking } = require('../helper/staking') - -async function tvl(api) { - const vault = '0x0246e28C6B161764492E54CBF852e28A4DA2D672' - const tokens = await api.call({ abi: 'address[]:getSupportedYieldTokens', target: vault }) - return api.sumTokens({ owner: vault, tokens, }) -} - -module.exports = { - methodology: 'Value of LSD tokens in the vault', - ethereum: { - tvl, - staking: staking("0xb9b2d7a712402acb37a97f0ea6356ff271e065e2", '0xb0ed33f79d89541dfdcb04a8f04bc2c6be025ecc') - } -}; - diff --git a/projects/zeroshift/index.js b/projects/zeroshift/index.js deleted file mode 100644 index 425f78fda67..00000000000 --- a/projects/zeroshift/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const zrst = "0xf436Ea4C4f2e49F0679895aEAE39dab698350eAa"; -const stakingContract = "0xe41450704aB574968714b7548E9BcfF31A2183e0"; -const treasury = "0x197123D62A2252c0Ac668a72BAAe39AF333843E0"; -const treasuryTokens = [ - [ADDRESSES.avax.DAI, false], // DAI - ["0xeebb1784296ad9f965e90e2cc3c4cf588daebc2d", true] // ZRST-DAI JLP -] - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "avax", stakingContract, zrst, undefined, undefined, false) -} \ No newline at end of file diff --git a/projects/zeroswap/index.js b/projects/zeroswap/index.js deleted file mode 100644 index aa538efc9a3..00000000000 --- a/projects/zeroswap/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { staking } = require('../helper/staking'); -const ETH_TOKEN_ADDRESS = '0x2eDf094dB69d6Dcd487f1B3dB9febE2eeC0dd4c5'; -const ETH_STAKING_ADDRESS = '0xEDF822c90d62aC0557F8c4925725A2d6d6f17769'; -const BSC_TOKEN_ADDRESS = '0x44754455564474A89358B2C2265883DF993b12F0'; -const BSC_STAKING_ADDRESS = '0x593497878c33dd1f32098E3F4aE217773F803cf3'; -const POLY_TOKEN_ADDRESS = '0xfd4959c06fbcc02250952daebf8e0fb38cf9fd8c'; -const POLY_STAKING_ADDRESS = '0x89eA093C07f4FCc03AEBe8A1D5507c15dE88531f'; -const AVAX_TOKEN_ADDRESS = '0x44754455564474A89358B2C2265883DF993b12F0' -const AVAX_STAKING_ADDRESS = '0xa4751EAa89C5D6ff61384766268cabf25aCD1011' - -module.exports = { - methodology: 'Counts tvl of all the tokens staked through Staking Contracts', - ethereum: { - tvl:() => ({}), - staking: staking(ETH_STAKING_ADDRESS, ETH_TOKEN_ADDRESS), - }, - bsc: { - staking: staking(BSC_STAKING_ADDRESS, BSC_TOKEN_ADDRESS), - }, - polygon: { - staking: staking(POLY_STAKING_ADDRESS, POLY_TOKEN_ADDRESS) - }, - avax: { - staking: staking(AVAX_STAKING_ADDRESS, AVAX_TOKEN_ADDRESS) - } -}; - diff --git a/projects/zest-protocol/abi.json b/projects/zest-protocol/abi.json deleted file mode 100644 index 89cd4fbd2f7..00000000000 --- a/projects/zest-protocol/abi.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "bank": { - "usableCollateralBalance": "uint256:usableCollateralBalance" - }, - "multiFeeDistribution": { - "totalSupply": "uint256:totalSupply" - }, - "pair": { - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)" - } -} diff --git a/projects/zest-protocol/index.js b/projects/zest-protocol/index.js deleted file mode 100644 index 7f134eb7cf9..00000000000 --- a/projects/zest-protocol/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - methodology: - "TVL of collateral added to Zest Protocol in order to mint Synthetic Assets.", - deadFrom: '2022-08-10', - fantom: { - tvl: () => ({}), - pool2: () => ({}), - staking: () => ({}), - }, -}; diff --git a/projects/zest/index.js b/projects/zest/index.js deleted file mode 100644 index f4c63b9234f..00000000000 --- a/projects/zest/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens } = require('../helper/chain/stacks') - -async function tvl() { - return sumTokens({ - owners: [ - 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault', // STX and SIP10 tokens - 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststxbtc-token-v2' - ], - }) -} - -module.exports = { - stacks: { - tvl, - }, -}; diff --git a/projects/zeta/index.js b/projects/zeta/index.js deleted file mode 100644 index 4350568d117..00000000000 --- a/projects/zeta/index.js +++ /dev/null @@ -1,78 +0,0 @@ -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(ADDRESSES.solana.USDC); - -module.exports = { - timetravel: false, - methodology: "Fetches TVL from zeta's vaults and insurance fund", - solana: { - tvl, - }, -}; - -async function tvl(api) { - const legacyZetaGroupAddrs = [ - new PublicKey("CoGhjFdyqzMFr5xVgznuBjULvoFbFtNN4bCdQzRArNK2"), - new PublicKey("5XC7JWvLGGds4tjaawgY8FwMdotUb5rrEUmxcmyp5ZiW"), - new PublicKey("HPnqfiRSVvuBjfHN9ah4Kecb6J9et2UTnNgUwtAJdV26"), - new PublicKey("D19K6rrppbWAFa4jE1DJUStPnr7cSrqKk5TruGqfc5Ns"), - new PublicKey("CU6pPA2E2yQFqMzZKrFCmfjrSBEc6GxfmFrSqpqazygu"), - ]; - - const legacyVaults = legacyZetaGroupAddrs - .map((addr) => { - return [insuranceVaultAddr(addr), vaultAddr(addr)]; - }) - .flat(); - - const vault = PublicKey.findProgramAddressSync( - [Buffer.from(anchor.utils.bytes.utf8.encode("combined-vault"))], - ZETA_PROGRAM_ID - )[0].toBase58(); - - const insuranceVault = PublicKey.findProgramAddressSync( - [ - Buffer.from( - anchor.utils.bytes.utf8.encode("zeta-combined-insurance-vault") - ), - ], - ZETA_PROGRAM_ID - )[0].toBase58(); - - const treasury = PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode("zeta-treasury-wallet")), - USDC_MINT.toBuffer(), - ], - ZETA_PROGRAM_ID - )[0].toBase58(); - - const vaults = [...legacyVaults, vault, insuranceVault, treasury]; - - return sumTokens2({ tokenAccounts: vaults }); -} - -function vaultAddr(zetaGroup) { - return PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode("vault")), - zetaGroup.toBuffer(), - ], - ZETA_PROGRAM_ID - )[0].toBase58(); -} - -function insuranceVaultAddr(zetaGroup) { - return anchor.web3.PublicKey.findProgramAddressSync( - [ - Buffer.from(anchor.utils.bytes.utf8.encode("zeta-insurance-vault")), - zetaGroup.toBuffer(), - ], - ZETA_PROGRAM_ID - )[0].toBase58(); -} \ No newline at end of file diff --git a/projects/zetaEarn/index.js b/projects/zetaEarn/index.js deleted file mode 100644 index 937c715b182..00000000000 --- a/projects/zetaEarn/index.js +++ /dev/null @@ -1,18 +0,0 @@ -async function zetaTvl(api) { - api.addGasToken(await api.call({target: '0x45334a5b0a01ce6c260f2b570ec941c680ea62c0', abi: 'uint256:getTotalPooledZETA'})) -} - -const btrZTokens = [ - '0xd53E6f1d37f430d84eFad8060F9Fec558B36F6fa', // zbtc - '0xdc842A54dB9E6136c7972eA863Efd6CE0d45602c', // zordi - '0xb86e3Cc68d9C56E1b87DEddF49c4A6fdaaF04A82' // zsats -]; - -async function btrTvl(api) { - for (const token of btrZTokens) { - const supply = await api.call({ abi: 'uint256:totalSupply', target: token }); - api.add(token, supply); - } -} - -module.exports = { zeta: { tvl: zetaTvl }, btr: { tvl: btrTvl } } diff --git a/projects/zethr/index.js b/projects/zethr/index.js deleted file mode 100644 index 76cb9b7cb40..00000000000 --- a/projects/zethr/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const coreAssets = require("../helper/coreAssets.json"); - -const pools = [ - "0xBbdfcCff3E72D672695ba0ca635B243dD7273c47", - "0x6E379098588ee5b8b8e709dfd66daB1772A38038", - "0x7430984e1D05d5F447c747123dd26845f6f17544", - "0xD48B633045af65fF636F3c6edd744748351E020D", -]; - -const tokens = [coreAssets.null]; - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: pools, tokens: tokens }), - }, -}; diff --git a/projects/zeus-btcsol/index.js b/projects/zeus-btcsol/index.js deleted file mode 100644 index 972abd81d4f..00000000000 --- a/projects/zeus-btcsol/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require('../helper/solana') - -async function tvl(api) { - const allTokensAndOwners = [ - ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', 'CMBwsHiUnih1VAzENzoNKTq8tyRaCpD2zBgBUm47sN6h'], - ['jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v', '9HGpvmW1Lv2pqKkbM41pGm7ApMjgdXt7Refdv5hoFejJ'], - ['kySo1nETpsZE2NWe5vj2C64mPSciH1SppmHb4XieQ7B', '67zGEwrzVJvn9owJR8aL693K1eMoH28WiDKDE17xNmf8'] - ] - return sumTokens2({ tokensAndOwners:allTokensAndOwners, api}) -} - -module.exports = { - solana: { tvl }, - methodology: 'Counts multi type of SOL/LST in the vault', -} \ No newline at end of file diff --git a/projects/zeus-finance/index.js b/projects/zeus-finance/index.js deleted file mode 100644 index f99cd2c2146..00000000000 --- a/projects/zeus-finance/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -const { masterchefExports, } = require('../helper/unknownTokens'); - -module.exports = masterchefExports({ - chain: 'cronos', - nativeToken: '0x813658e307fA4DAF9B25e7CE1dE3b40012CA2B74', - masterchef: '0xCb0349992fCA780b9D6F95Fbbc88d318Ac092A5d', -}) - -module.exports.deadFrom = 1648765747 \ No newline at end of file diff --git a/projects/zeus/index.js b/projects/zeus/index.js deleted file mode 100644 index 41239f7574a..00000000000 --- a/projects/zeus/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { sumTokens } = require('../helper/chain/bitcoin') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -async function tvl() { - return sumTokens({ owners: await bitcoinAddressBook.zeusZBTC() }) -} - -module.exports = { - timetravel: false, - bitcoin: { - tvl - }, -}; \ No newline at end of file diff --git a/projects/zharta/index.js b/projects/zharta/index.js deleted file mode 100644 index d3b91239afc..00000000000 --- a/projects/zharta/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokensExport, } = require('../helper/unwrapLPs') - -// Vaults -const lpCoreEthPool = "0x7CA34cF45a119bEBEf4D106318402964a331DfeD"; - -module.exports = { - methodology: `Counts the floor value of all deposited NFTs with Chainlink price feeds. Borrowed coins are not counted towards the TVL`, - ethereum: { - tvl: sumTokensExport({ - owners: [lpCoreEthPool], - resolveNFTs: true, - }), - } -} \ No newline at end of file diff --git a/projects/zigzag/index.js b/projects/zigzag/index.js deleted file mode 100644 index af400ea6a80..00000000000 --- a/projects/zigzag/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') - - -module.exports = { - timetravel: false, - zksync: { - offers: () => ({}), - tvl: async () => ({}) - }, - arbitrum: { - tvl: sumTokensExport({ owner: '0xf4037f59c92c9893c43c2372286699430310cfe7', tokens: [ - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.LINK, - ]}) - } -} diff --git a/projects/zilch/index.js b/projects/zilch/index.js deleted file mode 100644 index 93c4a51a6af..00000000000 --- a/projects/zilch/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - deadFrom: '2023-08-30', - era: { - tvl: () => ({}), - } -} - diff --git a/projects/zilswap.js b/projects/zilswap.js deleted file mode 100644 index a517f2c1a72..00000000000 --- a/projects/zilswap.js +++ /dev/null @@ -1,17 +0,0 @@ -const utils = require('./helper/utils'); - -async function tvl() { - var totalTvl = (await utils.fetchURL('https://stats.zilswap.org/liquidity'))?.data?.reduce((prev,curr) => prev + (Number(curr?.amount) * 10**-12 ?? 0), 0); - return { - zilliqa: totalTvl - }; -} - -module.exports = { - zilliqa: { - tvl, - }, - methodology: `ZilSwap TVL is achieved by making a call to its API: https://stats.zilswap.org/liquidity`, - misrepresentedTokens: true, - timetravel: false, -} diff --git a/projects/zinaxdao/index.js b/projects/zinaxdao/index.js deleted file mode 100644 index 72b8e97cc2a..00000000000 --- a/projects/zinaxdao/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const {masterChefExports} = require('../helper/masterchef'); - - -const masterchef = "0x323d2B52F63e38F7b933eA9a0Eb763D2C81B97Ba"; -const token = "0xFf3Aa0D4874C3BD5AdcBB94254005ff19f798AcB"; - -module.exports = { - misrepresentedTokens: true, - ...masterChefExports(masterchef, "bsc", token, false) -} \ No newline at end of file diff --git a/projects/zino-finance/index.js b/projects/zino-finance/index.js deleted file mode 100644 index acb69b80cde..00000000000 --- a/projects/zino-finance/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const POOLINFO = '0xebb35Da2A36bEfF4b443DB0A89637c40dF00AFcF'; - -async function tvl(api) { - const res = await api.call({ target: POOLINFO, abi: "function getTotalValueLockedList() view returns ((address token, uint8 decimals, uint256 amount)[])"}) - res.forEach(i => api.add(i.token, i.amount)) -} - -module.exports = { - start: 1741132619, - arbitrum: { - tvl - } -} diff --git a/projects/zipswap/index.js b/projects/zipswap/index.js deleted file mode 100644 index 85b36c0a30c..00000000000 --- a/projects/zipswap/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { transformDexBalances } = require('../helper/portedTokens') -const uniswapAbi = require('../helper/abis/uniswap') -const sdk = require('@defillama/sdk') - -async function opTvl(_, _b, {optimism: block}) { - const chain = 'optimism' - const factory = '0x8BCeDD62DD46F1A76F8A1633d4f5B76e0CDa521E' - const data = [] - const length = await sdk.api2.abi.call({ abi: uniswapAbi.allPairsLength, target: factory, chain, block, }) - const pairCalls = [] - for (let i = 0; i < length;i++) - if (i !== 67) pairCalls.push(i) - - const calls = await sdk.api2.abi.multiCall({ block, chain, abi: uniswapAbi.allPairs, calls: pairCalls, target: factory }) - const token0s = await sdk.api2.abi.multiCall({ abi: uniswapAbi.token0, chain, block, calls }) - const token1s = await sdk.api2.abi.multiCall({ abi: uniswapAbi.token1, chain, block, calls }) - const reserves = await sdk.api2.abi.multiCall({ abi: uniswapAbi.getReserves, chain, block, calls }) - reserves.forEach(({ _reserve0, _reserve1}, i) => { - data.push({ - token0: token0s[i], - token1: token1s[i], - token1Bal: _reserve1, - token0Bal: _reserve0, - }) - }) - return transformDexBalances({ chain, data, }) -} - -module.exports = { - misrepresentedTokens: true, - optimism: { - tvl: opTvl, - }, - arbitrum: { - tvl: getUniTVL({ - factory: '0x9e343Bea27a12B23523ad88333a1B0f68cc1F05E', - useDefaultCoreAssets: true, - }), - }, - methodology: - "Factory addresses on Optimism and Arbitrum are used to find the LP pairs. TVL is equal to the liquidity on the AMM.", -}; diff --git a/projects/zircon-gamma/index.js b/projects/zircon-gamma/index.js deleted file mode 100644 index 24c45c36d61..00000000000 --- a/projects/zircon-gamma/index.js +++ /dev/null @@ -1,50 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { getLogs, getAddress } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') - -const movrUniTvl = getUniTVL({ factory: '0x6B6071Ccc534fcee7B699aAb87929fAF8806d5bd', useDefaultCoreAssets: true, }) -const bscUniTvl = getUniTVL({ factory: '0x18b7f6A60d5BEE3c3a953A3f213eEa25F7eF43E9', useDefaultCoreAssets: true, }) - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0x09f8E0aeA93Bcb511276A166e6e57E02e5cc1E0a', - topics: ['0xab83557b3a718996d408afe08287d09bafed3590c7ae61a430d518d3199d4590'], - fromBlock: 3587214, - onlyUseExistingCache: true - }) - const tokens = logs.map(i => i.topics.slice(1).map(getAddress)) - const pools = logs.map(i => '0x' + i.data.slice(154, 194)) - - return sumTokens2({ api, ownerTokens: tokens.map((v, i) => ([v, pools[i]])) }) -} - - -async function bscTvl(api) { - const logs = await getLogs({ - api, - target: '0x05d5E46F9d17591f7eaCdfE43E3d6a8F789Df698', - topics: ["0xab83557b3a718996d408afe08287d09bafed3590c7ae61a430d518d3199d4590"], - fromBlock: 25836698, - onlyUseExistingCache: true - }) - - const tokens = logs.map(i => i.topics.slice(1).map(getAddress)) - const pools = logs.map(i => '0x' + i.data.slice(154, 194)) - - return sumTokens2({ api, ownerTokens: tokens.map((v, i) => ([v, pools[i]])) }) -} - -module.exports = { - // hallmarks: [ - // ['2023-03-18', 'Protocol was hacked for 350k'], - // ], - deadFrom: '2023-03-26', - moonriver: { - tvl: sdk.util.sumChainTvls([tvl, movrUniTvl]), - }, - bsc: { - tvl: sdk.util.sumChainTvls([bscTvl, bscUniTvl]), - } -}; diff --git a/projects/zircuit-chain/index.js b/projects/zircuit-chain/index.js deleted file mode 100644 index ee2044a19d6..00000000000 --- a/projects/zircuit-chain/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: ['0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1', '0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8'], - fetchCoValentTokens: true, - permitFailure: true, - blacklistedTokens: ['0xfd418e42783382e86ae91e445406600ba144d162'] - }), - staking: (api) => sumTokens2({ - api, owner: '0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8', token: '0xfd418e42783382e86ae91e445406600ba144d162', - }) - }, -}; diff --git a/projects/zircuit/index.js b/projects/zircuit/index.js deleted file mode 100644 index 78e58f73514..00000000000 --- a/projects/zircuit/index.js +++ /dev/null @@ -1,26 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getLogs2 } = require('../helper/cache/getLogs'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const config = { - ethereum: { - factory: '0xf047ab4c75cebf0eb9ed34ae2c186f3611aeafa6', fromBlock: 19237243, missing: [ - '0xa1290d69c65a6fe4df752f95823fae25cb99e5a7', - ADDRESSES.linea.rzETH, - ] - }, - zircuit: { factory: '0x7d8311839eB44Dd5194abd2dd3998722455A24E0', fromBlock: 2427557, }, -} - -Object.keys(config).forEach(chain => { - const { factory, fromBlock, missing = [] } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs2({ api, factory, eventAbi: 'event TokenStakabilityChanged(address token, bool enabled)', fromBlock, }) - const tokens = logs.map(i => i.token).concat(missing) - return sumTokens2({ api, owner: factory, tokens, permitFailure: true, }) - } - } -}) - -module.exports.doublecounted = true \ No newline at end of file diff --git a/projects/zivoe/index.js b/projects/zivoe/index.js deleted file mode 100644 index eada779ac32..00000000000 --- a/projects/zivoe/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { staking } = require('../helper/staking') - -const LOANS_FROM_BLOCK = 20973423; - -// On-Chain Credit Lockers -const OCC_USDC = "0xfAb4e880467e26ED46F00c669C28fEaC58262698"; -const OCC_Variable = "0x26Ac8662F7502EF246F763311176e3131326f29E"; - -// TVL Owners -const DAO = "0xB65a66621D7dE34afec9b9AC0755133051550dD7"; -const YDL = "0xfB7920B55887840643e20952f22Eb18dDC474B2B"; -const ST_STT = "0x0D45c292baCdC47CE850E4c83a2FA2e8509DEd5D"; -const OCT_DAO = "0xd702332915fDDf588793D54d63872a97ad78d108"; -const OCR = "0x7720e6eEe8EF2457d4e1C38D6A9295967b2a89ec"; - -// Token Addresses -const USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; -const USDT = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; -const FRX_USD = "0xCAcd6fd266aF91b8AeD52aCCc382b4e165586E29"; -const M0 = "0x437cc33344a0B27A429f795ff6B469C72698B291"; -const aUSDC = "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c"; - -// Borrowers -const OCC_VARIABLE_BORROWER = "0x50C72Ff8c5e7498F64BEAeB8Ed5BE83CABEB0Fd5"; - -async function tvl(api) { - return sumTokens2({ - api, - tokensAndOwners: [ - // USDC balances - [USDC, DAO], - [USDC, YDL], - [USDC, ST_STT], - [USDC, OCT_DAO], - [USDC, OCC_Variable], - - // USDT balances - [USDT, DAO], - [USDT, OCT_DAO], - - // frxUSD balances - [FRX_USD, DAO], - [FRX_USD, OCT_DAO], - - // M0 balances - [M0, DAO], - [M0, OCT_DAO], - - // aUSDC balance - [aUSDC, OCR], - ], - }); -} - -async function borrowed(api) { - const logs = await getLogs({ - api, - target: OCC_USDC, - eventAbi: - "event OfferAccepted(uint256 indexed id, uint256 principal, address indexed borrower, uint256 paymentDueBy)", - fromBlock: LOANS_FROM_BLOCK, - onlyArgs: true, - extraKey: 'v2', - }); - - const loansIds = logs.map(({ id }) => id); - const loans = await api.multiCall({ - abi: "function loans(uint256) view returns (address borrower, uint256 principalOwed, uint256 APR, uint256 APRLateFee, uint256 paymentDueBy, uint256 paymentsRemaining, uint256 term, uint256 paymentInterval, uint256 offerExpiry, uint256 gracePeriod, int8 paymentSchedule, uint8 state)", - target: OCC_USDC, - calls: loansIds, - }); - - const owedAmounts = loans.map(({ principalOwed }) => principalOwed); - api.addTokens([USDC], owedAmounts); - - const occVariableBorrowed = await api.call({ - abi: "function usage(address) view returns (uint256)", - target: OCC_Variable, - params: [OCC_VARIABLE_BORROWER], - }); - - api.add(USDC, occVariableBorrowed); -} - -module.exports = { - ethereum: { - tvl, - borrowed, - staking: staking('0xb397aa1d78109115dcc57b907dcd9d61bb6b2dce', "0xe412D46a0fBD567332b7689cFFfE1F8A4f19A9d2"), - }, -}; diff --git a/projects/zk-swap-dex/index.js b/projects/zk-swap-dex/index.js deleted file mode 100644 index 40b184d7e37..00000000000 --- a/projects/zk-swap-dex/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const FACTORY = '0x91C94381a0F0B7F03d911676bD59d32Bb3410060' - -async function getFactoryLogs(api) { - return getLogs({ - api, - target: FACTORY, - fromBlock: 7891758, - eventAbi: 'event PoolCreated(address indexed token0,address indexed token1,uint24 indexed swapFeeUnits,int24 tickDistance,address pool)', - onlyArgs: true, - }) -} - -async function tvl(api) { - const factoryLogs = await getFactoryLogs(api) - let balanceRequests = [] - factoryLogs.forEach(({ token0, token1, pool}) => { - balanceRequests.push([token0, pool]) - balanceRequests.push([token1, pool]) - }) - return sumTokens2({ api, tokensAndOwners: balanceRequests }) -} - -module.exports = { - era: { tvl, } -} diff --git a/projects/zk-swap/index.js b/projects/zk-swap/index.js deleted file mode 100644 index a9d72efb112..00000000000 --- a/projects/zk-swap/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -const { stakingUnknownPricedLP } = require("../helper/staking"); - -const factory = "0x5da48a338647e2DD79329b557b5729D8496aD83D"; -const masterchef = "0x7bA76d4e4cBD4A9B7E3fd9a3B7Db067a51ca9682"; -const zks = "0xAbdb137D013b8B328FA43Fc04a6fA340D1CeA733"; - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }), - staking: stakingUnknownPricedLP( - masterchef, - zks, - "era", - "0x8489727b22Dd7eF8BbC91E0E88ee781cb2B27274", - (addr) => `era:${addr}` - ), - }, -}; - diff --git a/projects/zkBoost/abi.js b/projects/zkBoost/abi.js deleted file mode 100644 index 5a0e0d59590..00000000000 --- a/projects/zkBoost/abi.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - getTotalLockCount: "uint256:getTotalLockCount", - getLock: "function getLock(uint256 index) view returns (tuple(uint256 id, address token, address owner, uint256 amount, uint256 lockDate, uint256 unlockDate))", - getLockAt: "function getLockAt(uint256 index) view returns (tuple(uint256 id, address token, address owner, uint256 amount, uint256 lockDate, uint256 tgeDate, uint256 tgeBps, uint256 cycle, uint256 cycleBps, uint256 unlockedAmount, string description))", -} \ No newline at end of file diff --git a/projects/zkBoost/config.js b/projects/zkBoost/config.js deleted file mode 100644 index c9bb7bc2dcd..00000000000 --- a/projects/zkBoost/config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - era: { - vaults: [ - '0x4d2528305C135A056D7e2A0e8BD1946273Fb89D7' - ] - } -} \ No newline at end of file diff --git a/projects/zkBoost/index.js b/projects/zkBoost/index.js deleted file mode 100644 index 911a29f019f..00000000000 --- a/projects/zkBoost/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const abi = require('./abi') -const config = require('./config') -const { sumTokens2 } = require("../helper/unwrapLPs") - -module.exports = {} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (api) => { - const {chain} = api - const { vaults, } = config[chain] - for (const vault of vaults) { - const data = await api.fetchList({ lengthAbi: abi.getTotalLockCount, itemAbi: abi.getLockAt, target: vault }) - await sumTokens2({ api, owner: vault, tokens: data.map(i => i.token), resolveLP: true, }) - } - return api.getBalances() - } - } -}) \ No newline at end of file diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js deleted file mode 100644 index 11c8ac27a7c..00000000000 --- a/projects/zkLink/index.js +++ /dev/null @@ -1,141 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); -const ADDRESSES = require("../helper/coreAssets.json"); -const { staking } = require("../helper/staking.js"); - -const config = { - ethereum: { - owners: [ - "0x5fD9F73286b7E8683Bab45019C94553b93e015Cf", - "0xAd16eDCF7DEB7e90096A259c81269d811544B6B6", - ], - tokens: [ - ADDRESSES.null, - "0x8a053350ca5F9352a16deD26ab333e2D251DAd7c", // mmETH - "0xE46a5E19B19711332e33F33c2DB3eA143e86Bc10", // mwBETH - "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", // mswETH - "0x49446A0874197839D15395B908328a74ccc96Bc0", // mstETH - "0xC6572019548dfeBA782bA5a2093C836626C7789A", // nETH - "0x9Dc7e196092DaC94f0c76CFB020b60FA75B97C5b", // rnETH - "0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812", // wUSDM - ] - }, - arbitrum: { - owners: [ - "0xFF73a1a1d27951A005eb23276dc99CB7F8d5420A", - "0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585", - ], - tokens: [ - ADDRESSES.berachain.rsETH, // rsETH - "0x3082CC23568eA640225c2467653dB90e9250AaA0", // RDNT - ], - }, - linea: { - owners: [ - "0x5Cb18b6e4e6F3b46Ce646b0f4704D53724C5Df05", - "0x62cE247f34dc316f93D3830e4Bf10959FCe630f8", - ], - tokens: [ - "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4", // WBTC - ADDRESSES.blast.ezETH, // ezETH - "0xB5beDd42000b71FddE22D3eE8a79Bd49A568fC8F", // wstETH - ADDRESSES.linea.USDT, // USDT - ADDRESSES.linea.DAI, // DAI - ADDRESSES.linea.USDC, // USDC - ], - }, - era: { - owners: ["0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08", '0xaFe8C7Cf33eD0fee179DFF20ae174C660883273A'], - tokens: [ - ADDRESSES.null, - ADDRESSES.era.WBTC, //btc - ADDRESSES.era.USDC, //usdc - ADDRESSES.era.USDT, //usdt - ], - }, - mantle: { - owners: [ - "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", - "0x62351b47e060c61868Ab7E05920Cb42bD9A5f2B2", - ], - tokens: [ - ADDRESSES.mantle.WMNT, //mnt - ADDRESSES.mantle.USDT, //usdt - ADDRESSES.mantle.WETH,//weth - ADDRESSES.mantle.USDC, //usdc - "0xCAbAE6f6Ea1ecaB08Ad02fE02ce9A44F09aebfA2", // WBTC - ADDRESSES.mantle.mETH, // meth - "0x779f4E5fB773E17Bc8E809F4ef1aBb140861159a", // KTC - ], - }, - manta: { - owners: [ - "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", - "0x44a65dc12865A1e5249b45b4868f32b0E37168FF", - ], - tokens: [ - ...Object.values(ADDRESSES.manta), - ADDRESSES.null, - "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5", //MANTA - ADDRESSES.berachain.STONE, //STONE - "0xbdAd407F77f44F7Da6684B416b1951ECa461FB07", //WUSDM - "0x34c7Ad65E4163306f8745996688b476914201cE0", //uniETH - ], - }, - blast: { - owners: [ - "0x29BA92Fe724beD5c5EBfd0099F2F64a6DC5078FD", - "0x8Df0c2bA3916bF4789c50dEc5A79b2fc719F500b", - ], - tokens: [ - ADDRESSES.null, - ADDRESSES.blast.ezETH, // ezeth - "0x038f1C6ED5FccF690A920a27b39366eeeF27eFCe", // rich - "0x5FE8534a6F96cb01261Bd96e98c17C2c1Cab3204", // BAJA - "0xf782E172A14Ee1c85cD980C15375bA0E87957028", // CACA - ], - }, - base: { - owners: [ - "0xE473ce141b1416Fe526eb63Cf7433b7B8d7264Dd", - "0x80d12A78EfE7604F00ed07aB2f16F643301674D5", - ], - tokens: [ - ADDRESSES.base.wstETH, // wstETH - ], - }, - optimism: { - owners: [ - "0x46C8D02E93d5a03899dFa7Cf8A40A07589A3fA1b", - "0x5Bd51296423A9079b931414C1De65e7057326EaA", - ], - }, - tron: { - owners: [ - "TXZFj3Eo7xLArr32SYea2GtWmG1BekdpDq", // nova bridge address - ], - tokens: [ADDRESSES.tron.BTC], - }, - merlin: { - owners: [ - "0xf5b90fE755Aa2e3CcC69d9548cbeB7b38c661D73", // nova bridge address - ], - tokens: [ - ADDRESSES.merlin.WBTC_1, //MBTC - "0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71", //Solv BTC - ], - - }, -} - -async function tvl(api) { - const fetchCoValentTokens = !['manta', 'mantle', 'blast', 'tron', 'merlin'].includes(api.chain) - return sumTokens2({ api, ...config[api.chain], fetchCoValentTokens, }) -} - -Object.keys(config).forEach(async chain => { - module.exports[chain] = { tvl } -}) -module.exports.ethereum.staking = staking( - '0xAd16eDCF7DEB7e90096A259c81269d811544B6B6', - '0xfC385A1dF85660a7e041423DB512f779070FCede' -); \ No newline at end of file diff --git a/projects/zkSwap-finance-stableswap/index.js b/projects/zkSwap-finance-stableswap/index.js deleted file mode 100644 index 92ea9e093de..00000000000 --- a/projects/zkSwap-finance-stableswap/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const { getLogs2 } = require('../helper/cache/getLogs') - -module.exports = { - methodology: - "TVL accounts for the liquidity on all StableSwap pools.", -} - -const config = { - era: [{ target: '0xc93397F26886daB0d752C86612C78dbd2C1d5a59', fromBlock: 48190039, token3: true, },], -} - -Object.keys(config).forEach(chain => { - const factories = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const configs = await Promise.all(factories.map(getTvlConfig)) - return api.sumTokens({ ownerTokens: configs.flat() }) - - async function getTvlConfig({ target, fromBlock, token3 }) { - let topic = '0xa9551fb056fc743efe2a0a34e39f9769ad10166520df7843c09a66f82e148b97' - let eventAbi = 'event NewStableSwapPair(address indexed swapContract, address indexed tokenA, address indexed tokenB)' - let getOwnTokens = logs => logs.map(i => ([[i.tokenA, i.tokenB], i.swapContract])) - - if (token3) { - topic = '0x48dc7a1b156fe3e70ed5ed0afcb307661905edf536f15bb5786e327ea1933532' - eventAbi = 'event NewStableSwapPair(address indexed swapContract, address tokenA, address tokenB, address tokenC, address LP)' - getOwnTokens = logs => logs.map(i => ([[i.tokenA, i.tokenB, i.tokenC], i.swapContract])) - } - - const logs = await getLogs2({ api, target, fromBlock, eventAbi }) - return getOwnTokens(logs) - } - } - } -}) \ No newline at end of file diff --git a/projects/zkSwap-finance-v3/index.js b/projects/zkSwap-finance-v3/index.js deleted file mode 100644 index b938d5df956..00000000000 --- a/projects/zkSwap-finance-v3/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -const config = { - era: { - factoryV3: '0x88ADD6a7e3C221e02f978B388a092c9FD8cd7850', - }, - sonic: { - factoryV3: '0x6D977fCC945261B80D128A5a91cbF9a9148032A4' - } -} - -module.exports = uniV3Export({ - era: { factory: config.era.factoryV3, fromBlock: 49205949 }, - sonic: { factory: config.sonic.factoryV3, fromBlock: 18849171, - blacklistedTokens: [ - '0xE0590015A873bF326bd645c3E1266d4db41C4E6B', - '0xfe140e1dCe99Be9F4F15d657CD9b7BF622270C50' - ] - }, -}) diff --git a/projects/zkSwap-finance/index.js b/projects/zkSwap-finance/index.js deleted file mode 100644 index eb4b52388e6..00000000000 --- a/projects/zkSwap-finance/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { getUniTVL, } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') - -const config = { - era: { - factoryV2: '0x3a76e377ed58c8731f9df3a36155942438744ce3', - masterchef: '0x9F9D043fB77A194b4216784Eb5985c471b979D67', - daoV1: '0x4Ca2aC3513739ceBF053B66a1d59C88d925f1987', - daoV2: '0x056f1960b5CF53676AD9C0A7113363A812DC0c8e', - zfToken: '0x31C2c031fDc9d33e974f327Ab0d9883Eae06cA4A' - }, - sonic: { - factoryV2: '0xCe98a0E578b639AA90EE96eD5ba8E5a4022de529' - } -} - -module.exports = { - misrepresentedTokens: true, - era: { - tvl: getUniTVL({ factory: config.era.factoryV2, useDefaultCoreAssets: true, }), - staking: staking([config.era.masterchef, config.era.daoV1, config.era.daoV2], [config.era.zfToken]), - }, - sonic: { - tvl: getUniTVL({ factory: config.sonic.factoryV2, useDefaultCoreAssets: true}), - }, - methodology: "TVL is total liquidity of all liquidity pools." -} diff --git a/projects/zkUSD/index.js b/projects/zkUSD/index.js deleted file mode 100644 index b9a17333fbe..00000000000 --- a/projects/zkUSD/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { getLiquityTvl } = require("../helper/liquity"); - -const TROVE_MANAGER_ADDRESS = { - "linea": "0xE06F4754e94E2b6A462E616Ca3Ec78c6f4674A61", - "neon_evm": "0x24c36094aB3C4Ca62252d3bFA47599E668187669", -} - -module.exports = { - start: '2023-11-14', // Tuesday, November 14, 2023 10:13:20 PM -}; - -Object.keys(TROVE_MANAGER_ADDRESS).forEach(chain => { - module.exports[chain] = { - tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS[chain]) - } -}) \ No newline at end of file diff --git a/projects/zkasino/index.js b/projects/zkasino/index.js deleted file mode 100644 index c7c6831921c..00000000000 --- a/projects/zkasino/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') - -// https://docs.zkasino.io/developer/contracts -const owners = [ - '0x51e99A0D09EeCa8d7EFEc3062AC024B6d0989959', - '0x0A112b111eb22D1cc0AF42fF68398A55e0B69A16', - '0x6AcB199B7C8C67832F516f70D25fcD9d6db0Ae9d', - '0x34433F8fE4D2acbF9e1E0EDb3284679FEE4ff4B5', - '0x8696a4418D4182D0F97CE11F4536905Df00792C2', - '0x178c1D16A434DC76fE45e121b6e7872de21E4263', - '0x89Ecd415f6cFDb72e276ebD2D2bADD984B06d2A8', - '0x1B1b637B64820637BB42c5803813Dc2ecC5DF5C4', -] - -const config = { - bsc: { - tokens: [ADDRESSES.bsc.BUSD, nullAddress,] - }, - polygon: { - tokens: [ADDRESSES.polygon.USDC, nullAddress,] - }, - fantom: { - tokens: [ADDRESSES.fantom.USDC, nullAddress,] - }, - arbitrum: { - tokens: [ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC, '0xADA42bb73b42e0472A994218fb3799dFCDA21237', ADDRESSES.arbitrum.ARB, nullAddress,] - } -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { tokens } = config[chain] - module.exports[chain] = { - tvl: sumTokensExport({ owners, tokens }) - } -}) diff --git a/projects/zkbob-cdp/index.js b/projects/zkbob-cdp/index.js deleted file mode 100644 index c8fb337571f..00000000000 --- a/projects/zkbob-cdp/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -module.exports = { - polygon: { - tvl: sumTokensExport({ - blacklistedTokens: ['0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B'], - owner: '0xFDBC53080AFb08d7a3A2420e902c8AeC05E4aE73', - resolveUniV3: true - }) - } -} \ No newline at end of file diff --git a/projects/zkbob/index.js b/projects/zkbob/index.js deleted file mode 100644 index df6fb1c755f..00000000000 --- a/projects/zkbob/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - polygon: { - tvl: sumTokensExport({ - tokens: [ - '0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B', // BOB - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDC_CIRCLE, - ], - owner: '0x72e6b59d4a90ab232e55d4bb7ed2dd17494d62fb' - }), - }, - optimism: { - tvl: sumTokensExport({ - tokens: [ - '0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b', // BOB - ADDRESSES.optimism.WETH_1, - ], - owners: ['0x1ca8c2b9b20e18e86d5b9a72370fc6c91814c97c', '0x58320A55bbc5F89E5D0c92108F762Ac0172C5992'] - }), - }, - tron: { - tvl: sumTokensExport({ - tokens: [ADDRESSES.tron.USDT,], - owners: ['TXViaNRhEugXpAZApviBqBnbTSKUgejnR9'], - }), - } -} \ No newline at end of file diff --git a/projects/zkcandy/index.js b/projects/zkcandy/index.js deleted file mode 100644 index 941dd718873..00000000000 --- a/projects/zkcandy/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { txBridgeTvlV2 } = require("../txBridge/util") - -module.exports = { - ethereum: { - tvl: async (api) => txBridgeTvlV2(api, { chainId: 320, }), - }, -} diff --git a/projects/zkdefi/index.js b/projects/zkdefi/index.js deleted file mode 100644 index 2b3163f758f..00000000000 --- a/projects/zkdefi/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens"); - -module.exports = { - misrepresentedTokens: true, - polygon_zkevm: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: "0xfDC8ec444F482Fe8aFe0a00114548DC9ff729568", - }), - }, -}; diff --git a/projects/zkdx-finance/index.js b/projects/zkdx-finance/index.js deleted file mode 100644 index eb628362b88..00000000000 --- a/projects/zkdx-finance/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { gmxExports } = require("../helper/gmx"); -const { staking } = require("../helper/staking"); - -const zkStaking = "0xA258D1CfeCaDD96C763dfa50284525f1529cfB35"; -const zkZKE = "0x7b3e1236c39ddD2e61cF6Da6ac6D11193238ccB0"; - -module.exports = { - era: { - tvl: gmxExports({ vault: '0xBC918775C20959332c503d51a9251C2405d9cF88' }), - staking: staking(zkStaking, zkZKE), - }, - metis: { - tvl: gmxExports({ vault: '0x79C365bA484CBa73F3e9cB04186ddCc0DEBFB00c' }), - //staking: staking("0xb3Bcb2839b7fb103b1a117dBb451829078acAD59", "0xdf020cBd1897133978C7FcDF04B07E69d8934Efc"), - }, - telos: { - tvl: gmxExports({ vault: '0x17D3FdF3b017C96782dE322A286c03106C75C62E' }), - //staking: staking(zkStaking, "0xdf020cBd1897133978C7FcDF04B07E69d8934Efc"), - }, -}; \ No newline at end of file diff --git a/projects/zkdx/index.js b/projects/zkdx/index.js deleted file mode 100644 index 4ccd02f99ba..00000000000 --- a/projects/zkdx/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {staking} = require("../helper/staking"); - -module.exports = { - methodology: 'zkDX counts the staking values as tvl', - era: { - tvl: staking( - ["0x79033C597B7d8e752a7511cF24512f4A7217C0B8", "0xd6cce119B45Efcb378a4735a96aE08826A37ca1c", - "0xDC9e925D2BB683d47203eCEddBD1d733EC035CaE","0xA9C595C8F718898f7eb96964Bc92517365c901C9"], - [ADDRESSES.era.WETH, ADDRESSES.era.USDC] - ) - - }, - linea: { - tvl: staking( - ["0x3e636c4dC9Bd55831055c3400160e1e8A25DaD8a", "0xE0D1977a23cb90252B9997aB07b03136E214E0C6", - "0x3a85b87e81cD99D4A6670f95A4F0dEdAaC207Da0"], - [ADDRESSES.linea.WETH, ADDRESSES.linea.USDC] - ) - }, - zklink:{ - tvl: staking(["0xb5e635f2cB9eAC385D679069f8e0d1740436b355", "0xa6DbD1bdB1DC4339Df51d90Ce306CCE6edFbbbb1"], - [ADDRESSES.null, ADDRESSES.zklink.USDC]) - } -}; diff --git a/projects/zkevmswap/index.js b/projects/zkevmswap/index.js deleted file mode 100644 index 0b8dd276e8e..00000000000 --- a/projects/zkevmswap/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - polygon_zkevm: { - tvl: getUniTVL({ - factory: ADDRESSES.shibarium.BONE_1, - useDefaultCoreAssets: true, - }) - }, -} \ No newline at end of file diff --git a/projects/zkex/index.js b/projects/zkex/index.js deleted file mode 100644 index 03bd8d86839..00000000000 --- a/projects/zkex/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json") -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - polygon: { owners: ["0x94F2EbE929FE948f960908ec57e5D7792fAcAc07"], tokens: [ADDRESSES.polygon.USDC, ADDRESSES.polygon.DAI, ADDRESSES.polygon.USDT] }, - avax: { owners: ["0xa005091c98e6793b90E1340Bbd36C5d6De36fB60"], tokens: [ADDRESSES.avax.USDC, ADDRESSES.avax.USDt] }, - bsc: { owners: ["0x1Ee09A2cAa0813A5183f90F5a6d0E4871f4C6002"], tokens: ['0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3'] }, - arbitrum: { owners: ["0xed5d1e1320720cae8bb40275550a7d307a082ac3"], tokens: [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.ARB], }, - optimism: { owners: ["0xeE7981C4642dE8d19AeD11dA3bac59277DfD59D7"], tokens: [ADDRESSES.optimism.USDC, ADDRESSES.optimism.USDT, ADDRESSES.optimism.OP], }, - era: { owners: ["0x46d6E42fB6e04695156b5Ad38a3eC6FA9c59147D"], tokens: [ADDRESSES.era.USDC], }, - linea: { owners: ["0x3E98568770Af932353a2a8C3E3b77cDB7f0c2FA1"], tokens: [ADDRESSES.linea.USDC, ADDRESSES.linea.USDT], }, - base: { owners: ["0x161f4baab4052f20f5f4347ec4422556aa0477f0"], }, - op_bnb: { owners: ["0x3c3f4b866f8c6f0d2c912fee36d5ad337a9aa98e"], }, -} - -Object.keys(config).forEach(chain => { - const { owners, tokens = [] } = config[chain] - tokens.push(ADDRESSES.null) - module.exports[chain] = { tvl: sumTokensExport({ tokens, owners, }) } -}) \ No newline at end of file diff --git a/projects/zkfair/index.js b/projects/zkfair/index.js deleted file mode 100644 index dae85bea5f8..00000000000 --- a/projects/zkfair/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: "0x9cb4706e20A18E59a48ffa7616d700A3891e1861", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/zkfairswap/index.js b/projects/zkfairswap/index.js deleted file mode 100644 index 856b5a40565..00000000000 --- a/projects/zkfairswap/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { uniTvlExport } = require('../helper/unknownTokens') - -module.exports = uniTvlExport( "zkfair", "0xeA70460a5B0E3A94EC05b1AaFCe9e6Eb11C334A0" ); diff --git a/projects/zkfinance/index.js b/projects/zkfinance/index.js deleted file mode 100644 index b00bb7bad0f..00000000000 --- a/projects/zkfinance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { compoundExports2 } = require("../helper/compound"); -const zksyncComptroller = "0x218EBB63dfDf74eA689fBb2C55964E00ec905332"; -const zkEther = "0x36002f692234cDF2f115Ee701a9899DCB69F19d8"; - -module.exports = { - era: compoundExports2({ - comptroller: zksyncComptroller, - cether: zkEther, - }), -}; - -module.exports.deadFrom = '2024-11-11' -module.exports.era.borrowed= () => ({}) -// module.exports.hallmarks = [ -// ['2024-11-11', "Protocol Exploit"], -// ] diff --git a/projects/zkfox/index.js b/projects/zkfox/index.js deleted file mode 100644 index 2668449fd5b..00000000000 --- a/projects/zkfox/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const { compoundExports } = require('../helper/compound') - -module.exports = { - era: compoundExports("0xc3D157Ee5D602E9CEAF6eA4c15C9b52B313A1364"), -} diff --git a/projects/zklend-strk-staking/abi.js b/projects/zklend-strk-staking/abi.js deleted file mode 100644 index c15975632df..00000000000 --- a/projects/zklend-strk-staking/abi.js +++ /dev/null @@ -1,19 +0,0 @@ -const strkStaking = [ - { - "type": "function", - "name": "get_total_stake", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u128" - } - ], - "state_mutability": "view" - }, -] -const strkStakingAbi = {} -strkStaking.forEach(i => strkStakingAbi[i.name] = i) - -module.exports = { - strkStakingAbi, -} \ No newline at end of file diff --git a/projects/zklend-strk-staking/index.js b/projects/zklend-strk-staking/index.js deleted file mode 100644 index b1a2d0afc5f..00000000000 --- a/projects/zklend-strk-staking/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { call } = require('../helper/chain/starknet') -const { strkStakingAbi } = require('./abi'); - -const stakingContract = '0x057ea05c22d6b162d0f2ef4b3d1e1edf3c065d81cf0f41950f716a71e9ad6bae' - -async function tvl(api) { - const stakedAmount = await call({ target: stakingContract, abi: strkStakingAbi.get_total_stake }) - api.add(ADDRESSES.starknet.STRK, stakedAmount) -} - -module.exports = { - methodology: 'The TVL is calculated as a sum of total STRK deposited into zkLend\'s staking contract', - starknet: { - tvl, - }, -} diff --git a/projects/zklend/abi.js b/projects/zklend/abi.js deleted file mode 100644 index be9c79fd6b3..00000000000 --- a/projects/zklend/abi.js +++ /dev/null @@ -1,56 +0,0 @@ -const market = [ - { - "name": "get_total_debt_for_token", - "type": "function", - "inputs": [ - { - "name": "token", - "type": "felt" - } - ], - "outputs": [ - { - "name": "debt", - "type": "felt" - } - ], - "stateMutability": "view", - "customInput": "address" - }, -] -const marketAbi = {} -market.forEach(i => marketAbi[i.name] = i) -const staking = [ - { - name: "core::integer::u256", - type: "struct", - members: [ - { - name: "low", - type: "core::integer::u128", - }, - { - name: "high", - type: "core::integer::u128", - }, - ], - }, - { - "type": "function", - "name": "get_total_staked_amount", - "inputs": [], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "view" - }, -] -const stakingAbi = {} -staking.forEach(i => stakingAbi[i.name] = i) - -module.exports = { - marketAbi, - stakingAbi, -} \ No newline at end of file diff --git a/projects/zklend/index.js b/projects/zklend/index.js deleted file mode 100644 index 83b59d39710..00000000000 --- a/projects/zklend/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { multiCall, sumTokens, call } = require('../helper/chain/starknet') -const { marketAbi, stakingAbi, } = require('./abi'); - -const market = '0x4c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05' -const stakingContract = '0x0212c219a68c8fe38f37951123d1ec877570dfa891de270aa4f8634c5e60bc23' - -const assets = [ - ADDRESSES.starknet.WBTC, - ADDRESSES.starknet.ETH, - ADDRESSES.starknet.USDC, - ADDRESSES.starknet.DAI, - ADDRESSES.starknet.DAI_1, - ADDRESSES.starknet.USDT, - ADDRESSES.starknet.WSTETH, - ADDRESSES.starknet.STRK -] - -async function tvl(api) { - return sumTokens({ api, owner: market, tokens: assets }) -} - -async function staking(api) { - const amountStakedAtStakingContract = await call({ target: stakingContract, abi: stakingAbi.get_total_staked_amount }) - api.add(ADDRESSES.starknet.ZEND, amountStakedAtStakingContract) - return sumTokens({ api, owner: market, tokens: [ADDRESSES.starknet.ZEND] }) -} - -/*async function borrowed(api) { - let data = await multiCall({ calls: assets, target: market, abi: marketAbi.get_total_debt_for_token }); - data = data.map(i => +i) - api.addTokens(assets, data) -}*/ - -module.exports = { - methodology: 'Value of user supplied asset on zkLend is considered as TVL', - // hallmarks: [ - // [1739232000, "Empty Market Exploit"] - // ], - starknet: { - tvl, - borrowed: ()=>({}), // hacked, it's all bad debt - staking, - }, -} diff --git a/projects/zklite/index.js b/projects/zklite/index.js deleted file mode 100644 index 68388c6841c..00000000000 --- a/projects/zklite/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - deadFrom: "2025-01-01", - timetravel: false, - zksync: { - offers: async () => ({}), - tvl: async () => ({}) - } -} diff --git a/projects/zkmoonswap/index.js b/projects/zkmoonswap/index.js deleted file mode 100644 index ae6dfcc8b01..00000000000 --- a/projects/zkmoonswap/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -module.exports = { - misrepresentedTokens: true, - polygon_zkevm: { - tvl: getUniTVL({ - factory: '0x49841094F19659e044671825d7ecb3B79368e6E5', - useDefaultCoreAssets: true, - }) - }, -} diff --git a/projects/zkp2p/index.js b/projects/zkp2p/index.js deleted file mode 100644 index 9d4a3cfc4a4..00000000000 --- a/projects/zkp2p/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const CONTRACT = '0xca38607d85e8f6294dc10728669605e6664c2d70' -const USDC = ADDRESSES.base.USDC -const chain = 'base' - -async function tvl(_, _b, _cb, { api }) { - return sumTokens2({ - api, - tokens: [USDC], - owners: [CONTRACT], - chain, - }) -} - -module.exports = { - timetravel: false, - start: 1705770337, // Jan-20-2025 06:05:37 PM +UTC - base: { tvl }, -} diff --git a/projects/zks-miner/index.js b/projects/zks-miner/index.js deleted file mode 100644 index effdf131b95..00000000000 --- a/projects/zks-miner/index.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - hallmarks: [ - [1682726400, "Rug Pull"] - ], - methodology: 'TLV silver, diamond and gold is total amount miner deposit to contract silver, diamond and gold', - era: { - tvl: () => ({}), - }, - deadFrom: 1682726400 -} diff --git a/projects/zkswap-2/index.js b/projects/zkswap-2/index.js deleted file mode 100644 index 5c3d35a31fd..00000000000 --- a/projects/zkswap-2/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const factory = "0xeeE1Af1CE68D280e9cAfD861B7d4af776798F18d"; -const zks = ""; - -module.exports = { - hallmarks: [ - [1704844800,"Whale Withdraw"] - ], - misrepresentedTokens: true, - era: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }) }, - zkfair: { tvl: getUniTVL({ factory: '0x028e8aB8C7556C7F42315f5afe08bB7392aA6878', useDefaultCoreAssets: true, }) }, -}; \ No newline at end of file diff --git a/projects/zkswap/index.js b/projects/zkswap/index.js deleted file mode 100644 index 267a7a92a82..00000000000 --- a/projects/zkswap/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const sdk = require('@defillama/sdk') -const ADDRESSES = require('../helper/coreAssets.json') - -const configs = [ - { governance: '0x02ecef526f806f06357659fFD14834fe82Ef4B04', main: '0x8ECa806Aecc86CE90Da803b080Ca4E3A9b8097ad', fromBlock: 11841962, }, - { governance: '0x86E527BC3C43E6Ba3eFf3A8CAd54A7Ed09cD8E8B', main: '0x6dE5bDC580f55Bc9dAcaFCB67b91674040A247e3', fromBlock: 12810001, }, -] - -module.exports = { - start: '2021-02-12', // 02/12/2021 @ 01:06pm UTC - ethereum: { - tvl: sdk.util.sumChainTvls(configs.map(i => { - return async function tvl(api) { - const logs = await getLogs({ api, target: i.governance, eventAbi: 'event NewToken (address indexed token, uint16 indexed tokenId)', onlyArgs: true, fromBlock: i.fromBlock, }) - const tokens = logs.map(log => log.token) - tokens.push(ADDRESSES.null) - return api.sumTokens({ owner: i.main, tokens }) - } - })) - }, -}; diff --git a/projects/zksync-lite/index.js b/projects/zksync-lite/index.js deleted file mode 100644 index 5fb4f12c179..00000000000 --- a/projects/zksync-lite/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owner: "0xaBEA9132b05A70803a4E85094fD0e1800777fBEF", - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/zksynth/index.js b/projects/zksynth/index.js deleted file mode 100644 index e9098e0d099..00000000000 --- a/projects/zksynth/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const { sumTokens2 } = require('../helper/unwrapLPs') - -const query = `{ - pools(first: 1000) { - collaterals{ - pool { id } - token { id } - } - } -}` - -async function tvl(api) { - const { pools } = await cachedGraphQuery('zksynth', sdk.graph.modifyEndpoint('CWgPgHm4zz4pijQaEsi2oniuzvdwqasBczTgBRMgg1EL'), query) - const tokensAndOwners = pools.map(i => i.collaterals).flat().map(i => [i.token.id, i.pool.id]) - return sumTokens2({ api, tokensAndOwners }) -} - -module.exports = { - scroll: { - tvl - } -} \ No newline at end of file diff --git a/projects/zkx/index.js b/projects/zkx/index.js deleted file mode 100644 index 9dffbaaa88d..00000000000 --- a/projects/zkx/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - ethereum: { - tvl: sumTokensExport({ owners: ['0x8F5Af913D42DbC296d0e184B6356EC4256029D09'], tokens: [ADDRESSES.ethereum.USDC], }) - } -} diff --git a/projects/zlot/index.js b/projects/zlot/index.js deleted file mode 100644 index 8be0ecfd154..00000000000 --- a/projects/zlot/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const newPool = "0x6eC088B454d2dB7a2d8879A25d9ce015039E30FB" -const hegic = "0x584bC13c7D411c00c01A62e8019472dE68768430" - -async function tvl(api) { - const bal = await api.call({ abi: "uint256:totalUnderlying", target: newPool }) - api.add(hegic, bal) -} - -module.exports = { - ethereum: { - tvl - }, -} diff --git a/projects/zo/index.js b/projects/zo/index.js deleted file mode 100644 index 71e735c6ba3..00000000000 --- a/projects/zo/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const sui = require("../helper/chain/sui"); - -const ZLP_LIQUIDITY_POOL_VAULT = - "0xd06c73706a6df247db99bab608da48abed03a5517cd32ff7c294c0691dc3dd6f"; - -const USDZ_LIQUIDITY_POOL_VAULT = - "0x8c2640c37bca8ab34becd4e526425f5b01e56dc29a4f61ad8ffba6188e98f06b"; - -const ZBTCVC_LIQUIDITY_POOL_VAULT = - "0xb2a69be9dae2a7bf93487003d2d42574287eeb6134e42b0879eb04e8e1f66230"; - -async function tvl(api) { - const zlpDepositVaultFields = await sui.getDynamicFieldObjects({ - parent: ZLP_LIQUIDITY_POOL_VAULT, - }); - - const usdzDepositVaultFields = await sui.getDynamicFieldObjects({ - parent: USDZ_LIQUIDITY_POOL_VAULT, - }); - - const zbtcvcDepositVaultFields = await sui.getDynamicFieldObjects({ - parent: ZBTCVC_LIQUIDITY_POOL_VAULT, - }); - - - const zlpDepositVaultIds = zlpDepositVaultFields.map((item) => item.fields.id.id); - const usdzDepositVaultIds = usdzDepositVaultFields.map((item) => item.fields.id.id); - const zbtcvcDepositVaultIds = zbtcvcDepositVaultFields.map((item) => item.fields.id.id); - - const zlpDepositVaults = await sui.getObjects(zlpDepositVaultIds); - const usdzDepositVaults = await sui.getObjects(usdzDepositVaultIds); - const zbtcvcDepositVaults = await sui.getObjects(zbtcvcDepositVaultIds); - - zlpDepositVaults.forEach(({ type, fields: { value: { fields }} }) => { - const splitPieces = type.split("<") - const coin = splitPieces[splitPieces.length - 1].replace(">>", "") - api.add(coin, fields.liquidity) - api.add(coin, fields.reserved_amount) - }); - - usdzDepositVaults.forEach(({ type, fields: { value: { fields }} }) => { - const splitPieces = type.split("<") - const coin = splitPieces[splitPieces.length - 1].replace(">>", "") - api.add(coin, fields.liquidity) - api.add(coin, fields.reserved_amount) - }); - - zbtcvcDepositVaults.forEach(({ type, fields: { value: { fields }} }) => { - const splitPieces = type.split("<") - const coin = splitPieces[splitPieces.length - 1].replace(">>", "") - api.add(coin, fields.liquidity) - api.add(coin, fields.reserved_amount) - }); -} - -module.exports = { - timetravel: false, - methodology: 'counts the tokens in zo liquidity pool', - sui: { - tvl, - }, -}; diff --git a/projects/zodiac/index.js b/projects/zodiac/index.js deleted file mode 100644 index 65949d4dc7b..00000000000 --- a/projects/zodiac/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const treasuryAddress = "0xf73055C88f8cF87E0cfaE6773665943083609640"; -const USDT = ADDRESSES.bsc.USDT; -const Staking = "0x1450d20E99F7e8c27864a8D9e6E3d0694ed567DA"; -const ZD = "0x98051143830fa99848E7059E97AcB03B3cc62403"; - -const ZD_USDT_POOL = "0x4cb107576c7f3d59e3355ce760af5cbc36cf5e0d"; -module.exports.hallmarks=[ - [1641254400,"Rug Pull"] -], -module.exports = ohmTvl(treasuryAddress, [ - [USDT, false], - [ZD_USDT_POOL, true], -], "bsc", Staking, ZD) diff --git a/projects/zomb2/index.js b/projects/zomb2/index.js deleted file mode 100644 index c0ad32d5634..00000000000 --- a/projects/zomb2/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { zombiTvl } = require("../zomb2/zombi"); - -const token = "0xA87bcE04d4a396DF40cC1be3a21CF04592C08290"; -const share = "0x9E594379bC7e2034fCc8607Fb8C57F149Fb68284"; -const rewardPool = "0x7b4C5f9Ed34519cBB99C833389582Dc3D4Fe1f1e"; -const rewardPoolGeneris = "0x9D6f186223F6dbD3eBd265b98D82B0c6A5A3e41F"; -const masonry = "0xBEe596786Db8C602661284e89D493B05b60E12Fc"; - -const pool2LPs = [ - "0x7333155e21E13Ce81e1206C80d3c7E3DA41C92a6", - "0xEe17f36CdcA299eE7705413AB6111a8fe1B2dF17", - //"0xe577DF94b4Ea94399B7438e27EA1Ba81717464A0", - //"0x5db45a30732cf98fda72b9b91a0c554dc1f2e83b" -]; - -const listedTokenGeneris = [ - ADDRESSES.fantom.WFTM,//wftm - '0x74b23882a30290451A17c44f4F05243b6b58C76d',//weth - '0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE',//boo - '0xaD996A45fd2373ed0B10Efa4A8eCB9de445A4302',//alpaca - '0xda5db6c2a2fd53a2d3fc4246bbd8acce5f93bae1',//zombi - '0xb3584d821109e49a068a8c3a05f367bc54061252',//szombi -] - -module.exports = zombiTvl(token, share, rewardPool, rewardPoolGeneris, masonry, pool2LPs, listedTokenGeneris, "fantom", undefined, false, "0x7333155e21E13Ce81e1206C80d3c7E3DA41C92a6") - -module.exports.deadFrom = '2022-04-03' \ No newline at end of file diff --git a/projects/zomb2/zombi.js b/projects/zomb2/zombi.js deleted file mode 100644 index d039fcfe85a..00000000000 --- a/projects/zomb2/zombi.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokensExport } = require("../helper/unknownTokens"); - -function zombiTvl(token, share, rewardPool, rewardPool2, masonry, pool2LPs, listedTokenGeneris, chain = "ethereum", transform = undefined, tokensOnCoingecko = true, lpWithShare = undefined) { - - return { - [chain]: { - tvl: () => ({}), - staking: sumTokensExport({ owner: masonry, tokens: [share], lps: [lpWithShare], useDefaultCoreAssets: true, }), - pool2: sumTokensExport({ owners: [rewardPool, rewardPool2,], tokens: pool2LPs.concat(listedTokenGeneris), lps: pool2LPs, useDefaultCoreAssets: true, }), - } - } -} - -module.exports = { - zombiTvl -} \ No newline at end of file diff --git a/projects/zombi/index.js b/projects/zombi/index.js deleted file mode 100644 index cfd01c10d00..00000000000 --- a/projects/zombi/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - hallmarks: [ - [1646870400, "Rug Pull"] - ], - deadFrom: 1646870400, - fantom: { - tvl: () => ({}), - pool2: () => ({}), - staking: () => ({}), - }, -} diff --git a/projects/zombie-network/index.js b/projects/zombie-network/index.js deleted file mode 100644 index 019f19b31c1..00000000000 --- a/projects/zombie-network/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const sdk = require("@defillama/sdk"); - -const BLOOD_TOKEN_ADDR = "0x07709260f6C431bc2CB1480F523F4F7c639a5155"; -const FOUNTAIN_ADDR = "0x028c7738353a939E654bBDf5Bd57EbB17755cfa0"; -const VAULT_ADDR = "0xD7656b90263f6ceaB35370d37f08fD1aEc19A421"; - -async function staking(api) { - - const { output: klayBalance } = await sdk.api2.eth.getBalance({ target: FOUNTAIN_ADDR, ...api }) - const [bldBalance, stakingBalance] = await api.multiCall({ abi: 'erc20:balanceOf', calls: [FOUNTAIN_ADDR, VAULT_ADDR], target: BLOOD_TOKEN_ADDR }) - - const bloodPrice = klayBalance / bldBalance - const staking = stakingBalance * bloodPrice / 1e18 - api.addCGToken('klay-token', staking) -} - -async function pool2(api) { - const { output: klayBalance } = await sdk.api2.eth.getBalance({ target: FOUNTAIN_ADDR, ...api }) - const pool2Balance = klayBalance * 2 / 1e18 - api.addCGToken('klay-token', pool2Balance) -} - -module.exports = { - klaytn: { - tvl: () => ({}), staking, pool2, - } -}; diff --git a/projects/zomma/index.js b/projects/zomma/index.js deleted file mode 100644 index 949b4741d29..00000000000 --- a/projects/zomma/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/sumTokens"); - -const ZOMMA_CONTRACT_ALPHA = "0x709051774c60c0527dbaf880f41425eae036efaf"; -const ZOMMA_CONTRACT_BETA = "0x7bf1f1c2d8caa200b068747487cb9bf109e529f1"; -const ZOMMA_CONTRACT_ETH_AUDIT = "0xdd5ae451a75a654146747235fdb515f06a55d018"; -const ZOMMA_CONTRACT_BTC_AUDIT = "0x1f14544aea89046e068e98c8672d2fbc3ab45bab"; -const ZK_USDC_CONTRACT = ADDRESSES.era.USDC; - -const ZOMMA_ARB_VAULT = "0x452610BB258c143B5f26687286AE5e59EC69c267"; -const ZOMMA_ARB_VAULT2 = "0xF55DF159c030b2804269742853079c9FD6B8cf64" -const ZOMMA_ARB_CONTRACT_ETH = "0xa9DEb981b735EC0525c8D4C959267429FdD82347"; -const ZOMMA_ARB_CONTRACT_BTC = "0x275376e25e068c894d0df5cc9a3d1893d94e9f4a"; -const ARB_USDC_CONTRACT = ADDRESSES.arbitrum.USDC_CIRCLE; -const ARB_AAVE_USDC_CONTRACT = "0x724dc807b04555b71ed48a6896b6F41593b8C637"; -const ARB_AAVE_GHO_CONTRACT = "0xeBe517846d0F36eCEd99C735cbF6131e1fEB775D"; - -module.exports = { - methodology: - "TVL is calculated as the sum of USDC deposited by traders and the liquidity in the Pools.", - arbitrum: { - tvl: sumTokensExport({ - owners: [ZOMMA_ARB_VAULT, ZOMMA_ARB_VAULT2, ZOMMA_ARB_CONTRACT_ETH, ZOMMA_ARB_CONTRACT_BTC], - tokens: [ARB_USDC_CONTRACT, ARB_AAVE_USDC_CONTRACT, ARB_AAVE_GHO_CONTRACT], - }), - }, - era: { - tvl: sumTokensExport({ - owners: [ - ZOMMA_CONTRACT_ALPHA, - ZOMMA_CONTRACT_BETA, - ZOMMA_CONTRACT_ETH_AUDIT, - ZOMMA_CONTRACT_BTC_AUDIT, - ], - tokens: [ZK_USDC_CONTRACT], - }), - }, -}; \ No newline at end of file diff --git a/projects/zoodao/abis/battle-arena-abi.json b/projects/zoodao/abis/battle-arena-abi.json deleted file mode 100644 index fd649c183b0..00000000000 --- a/projects/zoodao/abis/battle-arena-abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "sharesToTokens": "function sharesToTokens(uint256 sharesAmount) public returns (uint256 tokens)" -} diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js deleted file mode 100644 index 222986e77fb..00000000000 --- a/projects/zoodao/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const battleArenaAbi = require('./abis/battle-arena-abi.json'); -const { sumTokensExport } = require('../helper/unwrapLPs'); - -const VAULT_CONTRACT = '0x1C55649f73CDA2f72CEf3DD6C5CA3d49EFcF484C'; -const BATTLE_ARENA_CONTRACT = '0x0ADeb5A930875606F325e114FD5147148e042828'; -const FRAX_TOKEN = ADDRESSES.moonbeam.FRAX -const ZOODAO_TOKEN = "0x7cd3e6e1A69409deF0D78D17a492e8e143F40eC5" -const VE_ZOO_CONTRACT = "0x1bd77c71568f723d6906ea80fee45f1f52834c15" -const X_ZOO_CONTRACT = "0x1c535c24f911a8741018cf09f3030ab6e1b910cf" - - -const VE_ZOO_CONTRACT_ARBITRUM = "0xF7F963dC9c9f66c86Acd37255312FfbAC0d65b23" -const CAMELOT_LP_TOKEN_ARBITRUM = '0x2517cd42eE966862e8EcaAc9Abd1CcD272d897b6' -const BATTLE_ARENA_ARBITRUM = '0x19C98B4302e64d2De1cd14a7AD7d592F5dAE1319' - -const FSGLP_ARBITRUM = ADDRESSES.arbitrum.fsGLP - -const VAULT_CONTRACT_ARBITRUM = '0x9d284e037c20f029c8C56bbE4ff7C0F8de0FA4A9' -const LIQUIDITY_MINING_ARBITRUM = '0x96EBfd5dfaBf5E94f55940FC1872f39031fb332c' - -const stakingContracts = [ - BATTLE_ARENA_CONTRACT, - VE_ZOO_CONTRACT, - X_ZOO_CONTRACT -] - -async function tvl(api) { - const vaultStablecoinStaked = await api.call({ abi: 'erc20:balanceOf', target: VAULT_CONTRACT, params: [BATTLE_ARENA_CONTRACT] }); - // convert m.FRAX to FRAX - const totalFRAX = await api.call({ abi: battleArenaAbi.sharesToTokens, target: BATTLE_ARENA_CONTRACT, params: [vaultStablecoinStaked] }); - api.add(FRAX_TOKEN, totalFRAX) -} - -async function tvlArbitrum(api) { - const vaultStablecoinStaked = await api.call({ abi: 'erc20:balanceOf', target: VAULT_CONTRACT_ARBITRUM, params: [BATTLE_ARENA_ARBITRUM] }); - let totalMGLP = await api.call({ abi: battleArenaAbi.sharesToTokens, target: BATTLE_ARENA_ARBITRUM, params: [vaultStablecoinStaked] }); - api.addTokens([FSGLP_ARBITRUM], [totalMGLP]) -} - -module.exports = { - methodology: "TVL: Counts the supplied value of mGLP and staked ZOO-ETH LP.", - moonbeam: { - tvl, - staking: sumTokensExport({ owners: stakingContracts, tokens: [ZOODAO_TOKEN] }), - }, - arbitrum: { - tvl: tvlArbitrum, - pool2: sumTokensExport({ owners: [LIQUIDITY_MINING_ARBITRUM, BATTLE_ARENA_ARBITRUM, VE_ZOO_CONTRACT_ARBITRUM], tokens: [ CAMELOT_LP_TOKEN_ARBITRUM] }), - } -}; diff --git a/projects/zoodex/index.js b/projects/zoodex/index.js deleted file mode 100644 index c7b72ee6782..00000000000 --- a/projects/zoodex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'fantom': '0x6178C3B21F7cA1adD84c16AD35452c85a85F5df4' -}) \ No newline at end of file diff --git a/projects/zoodotfun/index.js b/projects/zoodotfun/index.js deleted file mode 100644 index c15117d0291..00000000000 --- a/projects/zoodotfun/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') - -const contract = "0x722122A1940B5c20Ac55e524b6ED7a2AA5172b87" - -async function tvl({api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) -} - -module.exports = { - methodology: `We count the ETH on ${contract}`, - abstract: { - tvl - } -} diff --git a/projects/zoofi-io/index.js b/projects/zoofi-io/index.js deleted file mode 100644 index 27760c9e467..00000000000 --- a/projects/zoofi-io/index.js +++ /dev/null @@ -1,67 +0,0 @@ -const BigNumber = require('bignumber.js'); -async function tvl(api) { - const protocols = [ - '0xc0fA386aE92f18A783476d09121291A1972C30Dc', - '0x4737c3BAB13a1Ad94ede8B46Bc6C22fb8bBE9c81', - '0x9F0956c33f45141a7D8D5751038ae0A71C562f87', - '0xd75Dc0496826FF0C13cE6D6aA5Bf8D64126E4fF1' - ] - - const tokensAndOwners = [] - - for (const zooProtocol of protocols) { - const assets = await api.call({ abi: 'address[]:assetTokens', target: zooProtocol }) - - const vaults = (await api.multiCall({ abi: 'function getVaultAddresses(address) view returns (address[])', calls: assets, target: zooProtocol })).flat() - const assetBals = await api.multiCall({ abi: 'uint256:assetBalance', calls: vaults, permitFailure: true }) - api.add(assets, assetBals.map(i => i ?? 0)) - - // Add vault balances - vaults.forEach((vault, i) => tokensAndOwners.push([assets[i], vault])) - - // Add redeem pool balances - const epochInfoAbi = 'function epochInfoById(uint256 epochId) public view returns (uint256 epochId, uint256 startTime, uint256 duration, address redeemPool, address stakingBribesPool, address adhocBribesPool)' - const epochInfos = await api.fetchList({ lengthAbi: 'epochIdCount', itemAbi: epochInfoAbi, targets: vaults, startFromOne: true, groupedByInput: true }) - - epochInfos.forEach((infos, i) => { - const asset = assets[i] - infos.forEach(({ redeemPool }) => { - tokensAndOwners.push([asset, redeemPool]) - }) - }) - } - - return api.sumTokens({ tokensAndOwners }) -} - -const lnts = { - arbitrum: [ - { - // Aethir LntVault - asset: '0xc87B37a581ec3257B734886d9d3a581F5A9d056c', - vthook: '0xbf4b4A83708474528A93C123F817e7f2A0637a88', - nft: '0xc227e25544edd261a9066932c71a25f4504972f1', - nftVault: '0xf8dfaa0967c812a43d02059f2b14786dceb84e8b' - } - ], -} -async function tvlLNT(api) { - const lntconfigs = lnts[api.chain] || [] - for (const lnt of lntconfigs) { - const [isToken0VT, reserve0, reserve1, nftBalance] = await api.batchCall([ - { abi: 'bool:isToken0VT', target: lnt.vthook }, - { abi: 'uint256:reserve0', target: lnt.vthook }, - { abi: 'uint256:reserve1', target: lnt.vthook }, - { abi: 'erc20:balanceOf', target: lnt.nft, params: [lnt.nftVault] } - ]) - - api.add(lnt.asset, isToken0VT ? reserve1 : reserve0) - api.add(lnt.nft, nftBalance) - } -} - -module.exports = { - doublecounted: true, - berachain: { tvl }, - arbitrum: { tvl: tvlLNT } -} \ No newline at end of file diff --git a/projects/zookeeper.js b/projects/zookeeper.js deleted file mode 100644 index 34d50a91ffa..00000000000 --- a/projects/zookeeper.js +++ /dev/null @@ -1,43 +0,0 @@ -const { staking } = require('./helper/staking') -const { sumUnknownTokens } = require('./helper/unknownTokens') - -const abi = { - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accZooPerShare, bool emergencyMode)", - "poolLength": "uint256:poolLength", -} - -async function tvl(api) { - const masterchef = '0x1aC6332f1f1892B49Fb26aD1934F74F4Cd8C9dB9' - await addMasterchef(masterchef, api) -} - - -async function wanTvl(api) { - const masterchef = '0x4E4Cb1b0b4953EA657EAF29198eD79C22d1a74A2' - await addMasterchef(masterchef, api) - return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true }) -} - -async function addMasterchef(masterchef, api) { - const infos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: masterchef }) - const tokens = infos.map(i => i.lpToken) - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokens.map(i => ({ target: i, params: masterchef })) }) - api.addTokens(tokens, bals) -} - - -module.exports = { - misrepresentedTokens: true, - doublecounted: true, - timetravel: false, - avax: { - tvl: () => ({}), - pool2: tvl, - staking: staking(['0xcf066a3b365791432c9ecfec6eded67c72fd69c6', '0x64E785488e99e2faDE189CdA585BAFE86248ad80'], '0x1B88D7aD51626044Ec62eF9803EA264DA4442F32') - }, - wan: { - tvl: () => ({}), - pool2: wanTvl, - staking: staking(['0x23A9f34aa1e45f9E191A6615d24A781607a1bcb1', '0xBCE166860F514b6134AbC6E9Aa0005CC489b6352', '0x180793667513140e223Df73650D8615C61f93368'], '0x6e11655d6aB3781C6613db8CB1Bc3deE9a7e111F') - }, -} diff --git a/projects/zoomex-cex/index.js b/projects/zoomex-cex/index.js deleted file mode 100644 index 78aab03d50a..00000000000 --- a/projects/zoomex-cex/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const { cexExports } = require('../helper/cex') -const bitcoinAddressBook = require('../helper/bitcoin-book/index.js') - -const config = { - bitcoin: { - owners: ['1PhvgKg6FVMf2D7jxdSyJQJS8yVqKYuF8T'], - }, - ethereum: { - owners: [ - '0x7eb87a95948348d6ec7231b52f61281e01d53941', - '0x8d773c8a5905284657056226a6d1b6320c2aad4a' - ], - }, - solana: { - owners: [ - 'CtUBgvNmNfr42VNv4LvTyU3S3uXFQ1EZZ9PDA7H91T2P' - ], - }, - optimism: { - owners: [ - '0x7eb87a95948348d6ec7231b52f61281e01d53941', - ], - }, - arbitrum: { - owners: [ - '0x7eb87a95948348d6ec7231b52f61281e01d53941', - ], - }, - bsc: { - owners: [ - '0x7eb87a95948348d6ec7231b52f61281e01d53941', - ], - }, - polygon: { - owners: [ - '0x7eb87a95948348d6ec7231b52f61281e01d53941', - ], - }, - mantle: { - owners: [ - '0x7eb87a95948348d6ec7231b52f61281e01d53941', - ], - }, - base: { - owners: [ - '0x7eb87a95948348d6ec7231b52f61281e01d53941', - ], - }, - tron: { - owners: [ - 'TA7YkTaijYM1W9SG9t2oGt6mrcDdnnLehv', - ], - }, - ripple: { - owners: [ - 'raq8uz1PCiSfgN94ZqUbbJWFoVtF75BEuD', - ], - }, - eos: { - owners: [ - 'outforzoomex', - ], - }, - doge: { - owners: [ - 'DDQDi8u18s4xqsUzLMrhT57rEDrrnoMiJG', - ], - }, - sonic: { - owners: [ - '0x7eb87a95948348d6ec7231b52f61281e01d53941', - ], - }, -} - -module.exports = cexExports(config) -module.exports.methodology = 'We are tracking their cold and hot wallets' \ No newline at end of file diff --git a/projects/zoomswap/index.js b/projects/zoomswap/index.js deleted file mode 100644 index 28f2a440b51..00000000000 --- a/projects/zoomswap/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { masterChefExports, } = require("../helper/masterchef") -const { mergeExports, } = require("../helper/utils") - -const token1 = ADDRESSES.iotex.ZOOM; -const token2 = "0xf87aed04889a1dd0159d9C22B0D57b345Ab16dDD"; -const masterchef1 = "0x92F1a54835436Ad1858018f11d017fCE31756C17"; -const masterchef2 = "0x1ba725d2ba56482f11fee3642f1c739d25018e4d"; - -module.exports = mergeExports([ - masterChefExports(masterchef1, "iotex", token1), - masterChefExports(masterchef2, "iotex", token2) -]) diff --git a/projects/zootopia-finance/index.js b/projects/zootopia-finance/index.js deleted file mode 100644 index 03b462400bb..00000000000 --- a/projects/zootopia-finance/index.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - hallmarks: [ - [1667174400, "Rug Pull"] - ], - deadFrom: 1667174400, - bsc: { - tvl: () => ({}), - }, -} diff --git a/projects/zora/index.js b/projects/zora/index.js deleted file mode 100644 index 14e04e08980..00000000000 --- a/projects/zora/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x3e2Ea9B92B7E48A52296fD261dc26fd995284631", - "0x1a0ad011913A150f69f6A19DF447A0CfD9551054", - ], - fetchCoValentTokens: true, - }), - }, -}; diff --git a/projects/zoro/index.js b/projects/zoro/index.js deleted file mode 100644 index 515e169deeb..00000000000 --- a/projects/zoro/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const sdk = require('@defillama/sdk') -const { compoundExports2 } = require('../helper/compound') - -const coreExports = compoundExports2({ - comptroller: "0x90f2810B85f02122159cB18f6abF2776a7Ca3152", - cether: "0x3a6F5eA6b9B781C37F25164D9c25534eDd87d290", -}) - -const degenExports = compoundExports2({ - comptroller: "0x410ffcC8f37dCb3116cA8F59B30CCbe4c60F2385", - cether: "0x2ff7bF02a7C4f63fBc3b764A12c723B2abdA2905", -}) - -module.exports = { - era: { - tvl: sdk.util.sumChainTvls([coreExports.tvl, degenExports.tvl]), - borrowed: sdk.util.sumChainTvls([coreExports.borrowed, degenExports.borrowed]) - } -} \ No newline at end of file diff --git a/projects/zoth-zeusd/index.js b/projects/zoth-zeusd/index.js deleted file mode 100644 index 5cda071a556..00000000000 --- a/projects/zoth-zeusd/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const collateralVault = '0x5dafc0eE88997a2A2Aa4b8e9c4411fab82FE2B16' -const ZTLN = '0xfEd3D6557Dc46A1B25d0A6F666513Cb33835864B' - -const abi = { - getAllSubVaults: 'function getAllSubVaults() view returns (address[] collaterals, (string integrationType, address collateralAddress, address subVaultAddress, uint256 price, uint256 ltv, bool isActive, uint256 registeredAt, uint256 lastUpdatedAt, uint8 tokenType)[] details)' -} - -const tvl = async (api) => { - const activeVaults = await api.call({ target: collateralVault, abi: abi.getAllSubVaults }) - - const tokensAndOwners = activeVaults.details.map((vault) => { - const { collateralAddress, subVaultAddress} = vault - return [collateralAddress, subVaultAddress] - }) - - return api.sumTokens({ tokensAndOwners, blacklistedTokens: [ZTLN] }) -} - -module.exports = { - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/zoth-ztlnp/index.js b/projects/zoth-ztlnp/index.js deleted file mode 100644 index ebeca41dc05..00000000000 --- a/projects/zoth-ztlnp/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const ZTLN_P = '0xfEd3D6557Dc46A1B25d0A6F666513Cb33835864B' - -const eventAbis = { - deposit: "event Deposit(address investor, address asset, uint256 amount, uint256 shares)", - processRedemption: "event ProcessRedemption(address investor, uint256 shares, address asset, uint256 amount)" -} - -const tvl = async (api) => { - const [deposit_logs, redeem_logs] = await Promise.all([ - getLogs({ api, extraKey: 'zoth-deposit', fromBlock: 21379903, target: ZTLN_P, onlyArgs: true, eventAbi: eventAbis.deposit }), - getLogs({ api, extraKey: 'zoth-redeem', fromBlock: 21379903, target: ZTLN_P, onlyArgs: true, eventAbi: eventAbis.processRedemption }) - ]) - - deposit_logs.forEach(([_investor, asset, amount, _shares]) => api.add(asset, amount)) - redeem_logs.forEach(([_investor, _shares, asset, amount]) => api.add(asset, -amount)) -} - -module.exports = { - ethereum: { tvl } -} \ No newline at end of file diff --git a/projects/zprotocol-dex/index.js b/projects/zprotocol-dex/index.js deleted file mode 100644 index 6f6cd62b5d4..00000000000 --- a/projects/zprotocol-dex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const { uniTvlExports } = require('../helper/unknownTokens') -module.exports = uniTvlExports({ - 'scroll': '0xED93e976d43AF67Cc05aa9f6Ab3D2234358F0C81' -}) \ No newline at end of file diff --git a/projects/zprotocol-masterchef/index.js b/projects/zprotocol-masterchef/index.js deleted file mode 100644 index 82c3eae4869..00000000000 --- a/projects/zprotocol-masterchef/index.js +++ /dev/null @@ -1,28 +0,0 @@ -// const {zProtocolScrollFarmingExports} = require("./scroll"); -const { staking, } = require('../helper/unknownTokens'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const FACTORY = "0xED93e976d43AF67Cc05aa9f6Ab3D2234358F0C81"; -const FARM_MASTER = "0x7a757614fEFA05f40456016Af74262Fe53546DBa"; -const ZP_TOKEN = "0x2147a89fb4608752807216D5070471c09A0DcE32"; -// const export1 = zProtocolScrollFarmingExports(FARM_MASTER, FACTORY, 'scroll', ZP_TOKEN); -const farmAbi = { - poolInfo: "function poolInfo(uint256) view returns (address token, uint256 catId, uint256 allocPoint, uint256 lastRewardTime, uint256 accZPPerShare, uint256 depositFeeBP, uint256 harvestInterval)", -} - -module.exports = { - methodology: "count value of staked tokens except of z-dex LP tokens", - misrepresentedTokens: true, - scroll: { - tvl, - staking: staking({ tokens: [ZP_TOKEN], owner: FARM_MASTER, useDefaultCoreAssets: true, lps: ['0xb74806780Ac59D0d7567bE66Ff23511400bD9cf8']}) - } -} - -async function tvl(api) { - let blacklistedTokens = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: FACTORY }) - blacklistedTokens.push(ZP_TOKEN) - const poolInfo = await api.fetchList({ lengthAbi: 'poolsLength', itemAbi: farmAbi.poolInfo, target: FARM_MASTER }) - await sumTokens2({ api, owner: FARM_MASTER, tokens: poolInfo.map(pool => pool.token), resolveLP: true, blacklistedTokens, }) - api.removeTokenBalance(ZP_TOKEN) -} \ No newline at end of file diff --git a/projects/zswap-plus/index.js b/projects/zswap-plus/index.js deleted file mode 100644 index 0e827ed1803..00000000000 --- a/projects/zswap-plus/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getUniTVL } = require("../helper/unknownTokens") - -module.exports = { - avax: { - tvl: getUniTVL({ factory: '0xcDE3F9e6D452be6d955B1C7AaAEE3cA397EAc469', useDefaultCoreAssets: true}) - } -} \ No newline at end of file diff --git a/projects/zuit/index.js b/projects/zuit/index.js deleted file mode 100644 index 49f28b44152..00000000000 --- a/projects/zuit/index.js +++ /dev/null @@ -1,32 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getLogs2 } = require('../helper/cache/getLogs') - -async function tvl(api) { - const { fromBlock, baseFactorys, stableFactorys, oasisFactorys = [] } = config[api.chain] - - let logs = await Promise.all([baseFactorys, stableFactorys, oasisFactorys].flat().map(getFactoryLogs)) - logs = logs.flat() - - const ownerTokens = logs.map(({ token0, token1, pool }) => [[token0, token1], pool]) - return sumTokens2({ api, ownerTokens}) - - async function getFactoryLogs(target) { - return getLogs2({ - api, - target, - fromBlock, - eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, address pool)', - }) - } -} - -const config = { - zircuit: { - fromBlock: 1374699, - baseFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727'], - stableFactorys: ['0x40d660504eB163708d8AC8109fc8F2c063ddAE4b'], - oasisFactorys: ['0xE14f6575F4721F404FFB79DA76e4790AD67B960A'] - } -} - -Object.keys(config).forEach(chain => { module.exports[chain] = { tvl } }) \ No newline at end of file diff --git a/projects/zunami/index.js b/projects/zunami/index.js deleted file mode 100644 index 36c9634acf6..00000000000 --- a/projects/zunami/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') - -const abis = { - totalHoldings: "uint256:totalHoldings", - totalSupply: "uint256:totalSupply", - strategyCount: "function strategyCount() view returns (uint256)", - strategyInfo: "function strategyInfo(uint256) view returns (address strategy, uint256 startTime, uint256 minted, bool enabled)", -} - -const zunStaking = "0x45af4F12B46682B3958B297bAcebde2cE2E795c3"; -const ZUN = "0x6b5204B0Be36771253Cc38e88012E02B752f0f36"; - -const configs = [ - { token: ADDRESSES.ethereum.DAI, target: '0x8C0D76C9B18779665475F3E212D9Ca1Ed6A1A0e6' }, // zunUSD - { token: ADDRESSES.ethereum.DAI, target: '0x28e487bbF6b64867C29e61DccbCD17aB64082889' }, // zunUSDAps - { token: ADDRESSES.ethereum.WETH, target: '0xc2e660C62F72c2ad35AcE6DB78a616215E2F2222' }, // zunETH - { token: ADDRESSES.ethereum.WETH, target: '0x5Ab3aa11a40eB34f1d2733f08596532871bd28e2' }, // zunETHAps -] - -async function tvl(api) { - for (const { token, target } of configs) { - const strategies = await api.fetchList({ - itemAbi: abis.strategyInfo, - lengthAbi: abis.strategyCount, - target, - }); - - const total = strategies.reduce((sum, s) => sum + Number(s.minted), 0); - api.add(token, total); - } -} - -async function staking(api) { - api.add(ZUN, await api.call({ abi: abis.totalSupply, target: zunStaking, })) -} - -module.exports = { - methodology: "Total value of digital assets that are locked in Zunami Omnipools", - // hallmarks: [['2023-08-13', 'Project was hacked for $2M']], - misrepresentedTokens: true, - ethereum: { tvl, staking }, -}; \ No newline at end of file diff --git a/projects/zuno/index.js b/projects/zuno/index.js deleted file mode 100644 index be19b2da2e0..00000000000 --- a/projects/zuno/index.js +++ /dev/null @@ -1,114 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') - -const config = { - zeta: { - fromBlock: 9119360, - dvmFactory: '0xd2b80519a88937A412415bAF1b7Fb1855189EA36', - dspFactory: '0x01AE7F0633E1D8d642c5A6a6d39B00A36b331C97', - gspFactory: '0xa97c5a70Be5B81f573a688F656E7bE569B492A56', - dppFactory: '0xC176ecf1Eae0883B2356593d1Ccd5DDEd0441eb1', - uniswapV2Factory: '0x4E36B2e9c9c9bfDd2516cAdacF07f5adAA33EF88', - uniswapV3Factory: '0x9f48Ddad075e569cDc70D657D3aC171e23846009', - curveStableswapFactoryNG: '0x9b1F69bfaCF13B8f8fE2aC093C7bae93b08a9C83', - blacklistedTokens: [] - } - } - -Object.keys(config).forEach(chain => { - const { dvmFactory, fromBlock, dspFactory, gspFactory, dppFactory, uniswapV2Factory, uniswapV3Factory, curveStableswapFactoryNG, blacklistedTokens, } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - const ownerTokens = [] - const funcs = []; - const builder = (factorys, event) => { - if (Array.isArray(factorys)) { - factorys.forEach(factory => funcs.push(addLogs(factory, event))); - } else { - funcs.push(addLogs(factorys, event)); - } - } - builder(dvmFactory, 'event NewDVM (address baseToken, address quoteToken, address creator, address pool)'); - builder(dspFactory, 'event NewDSP(address baseToken, address quoteToken, address creator, address pool)'); - builder(gspFactory, 'event NewGSP(address baseToken, address quoteToken, address creator, address pool)'); - builder(dppFactory, 'event NewDPP (address baseToken, address quoteToken, address creator, address pool)'); - - // Add Uniswap V2 pools - if (uniswapV2Factory) { - funcs.push(addUniV2Logs(uniswapV2Factory)); - } - - // Add Uniswap V3 pools - if (uniswapV3Factory) { - funcs.push(addUniV3Logs(uniswapV3Factory)); - } - - // Add Curve StableSwap Factory NG pools - if (curveStableswapFactoryNG) { - funcs.push(addCurveLogs(curveStableswapFactoryNG)); - } - - await Promise.all(funcs) - - return api.sumTokens({ ownerTokens, blacklistedTokens, permitFailure: true, }) - - async function addLogs(target, eventAbi) { - if (!target) return; - const convert = i => [[i.baseToken, i.quoteToken], i.pool] - let logs = await getLogs({ api, target, eventAbi, onlyArgs: true, fromBlock, }); - ownerTokens.push(...logs.map(convert)) - } - - async function addUniV2Logs(target) { - if (!target) return; - // PairCreated(address indexed token0, address indexed token1, address pair, uint256 feeRate, uint256 arg4) - const eventAbi = 'event PairCreated(address indexed token0, address indexed token1, address pair, uint256, uint256)'; - const convert = i => [[i.token0, i.token1], i.pair] - let logs = await getLogs({ api, target, eventAbi, onlyArgs: true, fromBlock, }); - ownerTokens.push(...logs.map(convert)) - } - - async function addUniV3Logs(target) { - if (!target) return; - // PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) - const eventAbi = 'event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool)'; - const convert = i => [[i.token0, i.token1], i.pool] - let logs = await getLogs({ api, target, eventAbi, onlyArgs: true, fromBlock, }); - ownerTokens.push(...logs.map(convert)) - } - - async function addCurveLogs(target) { - if (!target) return; - // Get pool count from factory - const poolCount = await api.call({ target, abi: 'uint256:pool_count' }); - - // Get all pool addresses - const poolCalls = []; - for (let i = 0; i < poolCount; i++) { - poolCalls.push({ target, params: [i] }); - } - - const poolResults = await api.multiCall({ - abi: 'function pool_list(uint256) view returns (address)', - calls: poolCalls - }); - - // Get coins for each pool using factory's get_coins method - const coinCalls = poolResults.map(pool => ({ target, params: [pool] })); - - const coinResults = await api.multiCall({ - abi: 'function get_coins(address _pool) view returns (address[])', - calls: coinCalls, - permitFailure: true - }); - - // Process coins for each pool - poolResults.forEach((pool, poolIndex) => { - const coins = coinResults[poolIndex]; - if (coins && Array.isArray(coins)) { - ownerTokens.push([coins, pool]); - } - }); - } - } - } -}) \ No newline at end of file diff --git a/projects/zyberswap-stableswap/index.js b/projects/zyberswap-stableswap/index.js deleted file mode 100644 index 50dc29ce6eb..00000000000 --- a/projects/zyberswap-stableswap/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') - -async function tvl(api) { - const logs = await getLogs({ - api, - target: '0xc25e230afb1b67162350cd405add199a002c6abd', - topics: ['0x0838512b7934222cec571cf3fde1cf3e9e864bbc431bd5d1ef4d9ed3079093d9'], - fromBlock: 59965885, - eventAbi: 'event NewSwapPool (address indexed deployer, address swapAddress, address[] pooledTokens)', - onlyArgs: true, - }) - return sumTokens2({ api, ownerTokens: logs.map(i => ([i.pooledTokens, i.swapAddress]))}) -} - -module.exports = { - arbitrum: { - tvl - } -}; diff --git a/projects/zyberswap-v3/index.js b/projects/zyberswap-v3/index.js deleted file mode 100644 index 1cace364a18..00000000000 --- a/projects/zyberswap-v3/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { uniV3Export } = require('../helper/uniswapV3') - -module.exports = uniV3Export({ - arbitrum: { - factory: '0x9c2abd632771b433e5e7507bcaa41ca3b25d8544', - fromBlock: 62714800, - isAlgebra: true, - }, - optimism: { - factory: '0x0c8f7b0cb986b31c67d994fb5c224592a03a4afd', - fromBlock: 105900073, - isAlgebra: true, - } -}) diff --git a/projects/zyberswap/index.js b/projects/zyberswap/index.js deleted file mode 100644 index a7761c1c82e..00000000000 --- a/projects/zyberswap/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') -const ZYBER = "0x3B475F6f2f41853706afc9Fa6a6b8C5dF1a2724c"; - - -const dexTVL = getUniTVL({ factory: '0xaC2ee06A14c52570Ef3B9812Ed240BCe359772e7', useDefaultCoreAssets: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0xaC2ee06A14c52570Ef3B9812Ed240BCe359772e7) address and whitelisted tokens address to find and price Liquidity Pool pairs. We also have our native token $ZYB staking, StableSwap, Earn and Vaults.`, - arbitrum: { - tvl: dexTVL, - staking: sumTokensExport({ - owners: ['0xEFf77E179f6abb49a5bf0EC25c920B495e110C3b', '0x9BA666165867E916Ee7Ed3a3aE6C19415C2fBDDD', '0x9CB8Ed8102B6c65D8CAE931394352d7a676ce12a'], - tokens: [ZYBER], - }) - } -}; - - diff --git a/projects/zyfai/arbitrum.js b/projects/zyfai/arbitrum.js deleted file mode 100644 index 140187128ab..00000000000 --- a/projects/zyfai/arbitrum.js +++ /dev/null @@ -1,41 +0,0 @@ -const COMPOUND_CUSDC_POOL = '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf'; -const AAVE_TOKEN_ADDRESS = '0x724dc807b04555b71ed48a6896b6F41593b8C637'; -const ARBITRUM_MORPHO_POOLS = { - 'Gauntlet USDC Prime': '0x7c574174DA4b2be3f705c6244B4BfA0815a8B3Ed', - 'Gauntlet USDC Core': '0x7e97fa6893871A2751B5fE961978DCCb2c201E65', - 'Steakhouse Prime USDC': '0x250CF7c82bAc7cB6cf899b6052979d4B5BA1f9ca', - 'MEV Capital USDC': '0xa60643c90A542A95026C0F1dbdB0615fF42019Cf', - 'Hyperithm USDC': '0x4B6F1C9E5d470b97181786b26da0d0945A7cf027', - 'Steakhouse High Yield USDC': '0x5c0C306Aaa9F877de636f4d5822cA9F2E81563BA', -}; -const SPARK_POOLS = { - USDC: '0x940098b108fB7D0a7E374f6eDED7760787464609', -}; -const FLUID_POOLS = { - 'USDC Vault': '0x1A996cb54bb95462040408C06122D45D6Cdb6096', -}; -const ARBITRUM_SILO_POOLS = { - 'USDC - Varlamore USDC Growth': '0x2BA39e5388aC6C702Cb29AEA78d52aa66832f1ee', - 'Silo Optima Vault': '0x2514A2Ce842705EAD703d02fABFd8250BfCfb8bd', -}; -const ARBITRUM_EULER_POOLS = { - 'Euler Earn USDC': '0xe4783824593a50Bfe9dc873204CEc171ebC62dE0', -}; -const ARBITRUM_HARVEST_POOLS = { - 'USDC - Autopilot': '0x407D3d942d0911a2fEA7E22417f81E27c02D6c6F', -}; - -const allPoolTokens = [ - COMPOUND_CUSDC_POOL, - AAVE_TOKEN_ADDRESS, - ...Object.values(ARBITRUM_MORPHO_POOLS), - ...Object.values(SPARK_POOLS), - ...Object.values(FLUID_POOLS), - ...Object.values(ARBITRUM_SILO_POOLS), - ...Object.values(ARBITRUM_EULER_POOLS), - ...Object.values(ARBITRUM_HARVEST_POOLS), -] - -module.exports = { - allPoolTokens -} \ No newline at end of file diff --git a/projects/zyfai/base.js b/projects/zyfai/base.js deleted file mode 100644 index 7f9e5f37d85..00000000000 --- a/projects/zyfai/base.js +++ /dev/null @@ -1,54 +0,0 @@ -const AAVE_TOKEN_ADDRESS = '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB'; -const FLUID_POOL_ADDRESSES = { - 'USDC': '0xf42f5795D9ac7e9D757dB633D693cD548Cfd9169' -}; -const MORPHO_POOL_ADDRESSES = { - 'Universal - USDC': '0xB7890CEE6CF4792cdCC13489D36D9d42726ab863', - // 'Moonwell Flagship USDC': '0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca', - 'Seamless USDC Vault': '0x616a4E1db48e22028f6bbf20444Cd3b8e3273738', - 'HighYield Clearstar USDC': '0xE74c499fA461AF1844fCa84204490877787cED56', - 'Clearstar Reactor OpenEden Boosted USDC': '0x1D3b1Cd0a0f242d598834b3F2d126dC6bd774657', - 'Gauntlet USDC Prime': '0xeE8F4eC5672F09119b96Ab6fB59C27E1b7e44b61', - 'Gauntlet USDC Core': '0xc0c5689e6f4D256E861F65465b691aeEcC0dEb12', - 'Gauntlet USDC Frontier': '0x236919F11ff9eA9550A4287696C2FC9e18E6e890', - 'ExtrafiXLend USDC': '0x23479229e52Ab6aaD312D0B03DF9F33B46753B5e', - 'Steakhouse USDC': '0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183' -}; -const SPARK_POOL_ADDRESSES = { - 'USDC': '0x3128a0F7f0ea68E7B7c9B00AFa7E41045828e858' -}; -const COMPOUND_TOKEN_ADDRESS = '0xb125E6687d4313864e53df431d5425969c15Eb2F'; - -const MOONWELL_POOL_ADDRESSES = { - 'Moonwell Flagship USDC': '0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca', - 'USDC': '0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22' -}; - -const HARVEST_POOLS = { - 'USDC': '0x90613e167D42CA420942082157B42AF6fc6a8087', - 'USDC - Autopilot': '0x0d877Dc7C8Fa3aD980DfDb18B48eC9F8768359C4', - 'USDC - 40 Acres': '0xC777031D50F632083Be7080e51E390709062263E' -}; -const WASABI_POOLS = { 'USDC': '0x1C4a802FD6B591BB71dAA01D8335e43719048B24' }; -const AURA_POOLS = { 'USDC - GHO': "0x28a002a98F4DA7A7B541b5e4d7a42E0F64E4aeF1"}; -const YIELDFI_BASE_POOLS = { - 'yUSD': '0x4772D2e014F9fC3a820C444e3313968e9a5C8121', - 'vyUSD': '0xF4F447E6AFa04c9D11Ef0e2fC0d7f19C24Ee55de', -}; - -const allPoolTokens = [ - ...Object.values(HARVEST_POOLS), - ...Object.values(WASABI_POOLS), - ...Object.values(AURA_POOLS), - ...Object.values(YIELDFI_BASE_POOLS), - ...Object.values(MOONWELL_POOL_ADDRESSES), - ...Object.values(SPARK_POOL_ADDRESSES), - ...Object.values(MORPHO_POOL_ADDRESSES), - ...Object.values(FLUID_POOL_ADDRESSES), - COMPOUND_TOKEN_ADDRESS, - AAVE_TOKEN_ADDRESS, -] - -module.exports = { - allPoolTokens -}; \ No newline at end of file diff --git a/projects/zyfai/helpers.js b/projects/zyfai/helpers.js deleted file mode 100644 index 90b0e14f7e4..00000000000 --- a/projects/zyfai/helpers.js +++ /dev/null @@ -1,98 +0,0 @@ -const SILO_POOL_ADDRESSES = { - 'S-USDC-20': '0x322e1d5384aa4ED66AeCa770B95686271de61dc3', - 'S-USDC-8': '0x4E216C15697C1392fE59e1014B009505E05810Df', - 'wstkscUSD-USDC-23': '0x5954ce6671d97D24B782920ddCdBB4b1E63aB2De', - 'Anon-USDC-27': '0x7e88AE5E50474A48deA4c42a634aA7485e7CaA62', - 'x33-USDC-49': '0xa18a8f100f2c976044f2f84fae1eE9f807Ae7893', - 'PT-wstkscUSD (29 May)-USDC-34': '0x6030aD53d90ec2fB67F3805794dBB3Fa5FD6Eb64', - 'wstkscUSD-USDC-55': '0x4935FaDB17df859667Cc4F7bfE6a8cB24f86F8d0', - 'Varlamore USDC Growth': '0xF6F87073cF8929C206A77b0694619DC776F89885', - 'Re7 scUSD': '0x592D1e187729C76EfacC6dfFB9355bd7BF47B2a7', - 'Apostro - USDC': '0xcca902f2d3d265151f123d8ce8FdAc38ba9745ed', - 'Greenhouse USDC': '0xf6bC16B79c469b94Cdd25F3e2334DD4FEE47A581' - -}; -const AAVE_TOKEN_ADDRESS = '0x578Ee1ca3a8E1b54554Da1Bf7C583506C4CD11c6'; -const EULER_POOL_ADDRESSES = { - 'MEV Capital Sonic Cluster USDC.e': '0x196F3C7443E940911EE2Bb88e019Fd71400349D9', - 'Re7 Labs Cluster USDC.e': '0x3D9e5462A940684073EED7e4a13d19AE0Dcd13bc', -}; -const PENDLE_MARKET_ADDRESSES = { - aUSDC: { - lp: '0x3f5ea53d1160177445b1898afbb16da111182418', - pt: '0x930441aa7ab17654df5663781ca0c02cc17e6643', - yt: '0x18d2d54f42ba720851bae861b98a0f4b079e6027', - sy: '0xc4a9d8b486f388cc0e4168d2904277e8c8372fa3', - }, - scUSD: { - lp: '0x84ecc6be573f15991736131f924f7bf571ed3b60', - pt: '0x9731842ed581816913933c01de142c7ee412a8c8', - yt: '0x3ab07241db5e87e45edca012ddf4bde84c078920', - sy: '0x068def65b9dbaff02b4ee54572a9fa7dfb188ea3', - }, - 'Lp - wstkscUSD': { - lp: '0x004f76045b42ef3e89814b12b37e69da19c8a212', - pt: '0x0fb682c9692addcc1769f4d4d938c54420d54fa3', - yt: '0x2405243576fdff777d54963bca4782180287b6a1', - sy: '0x896f4d49916ac5cfc36d7a260a7039ba4ea317b6', - }, -}; -const BEETS_POOL = { - deposit: '0x54Ca9aad90324C022bBeD0A94b7380c03aA5884A', - stake: '0x724a6716bf9CA384584bEb51a2eA07564c7fdD69', -}; -const PENPIE_MARKET_ADDRESS = '0x3f5ea53d1160177445b1898afbb16da111182418'; -const PENPIE_CONTRACT = '0x7A89614B596720D4D0f51A69D6C1d55dB97E9aAB'; -const YIELDFI_POOL = { - 'yUSD': "0x4772D2e014F9fC3a820C444e3313968e9a5C8121" -} - -async function beetsTvl(api, owners) { - const calls = owners.flatMap(owner => [ - { target: BEETS_POOL.deposit, params: [owner] }, - { target: BEETS_POOL.stake, params: [owner] }, - ]); - const balances = await api.multiCall({ abi: 'erc20:balanceOf', calls }); - - // Process balances in pairs (deposit + stake) for each owner - for (let i = 0; i < balances.length; i += 2) { - const depositBalance = Number(balances[i]); - const stakeBalance = Number(balances[i + 1]); - const totalBalance = depositBalance + stakeBalance; - - // Add the combined balance for both deposit and stake tokens - api.add(calls[i].target, totalBalance); - api.add(calls[i + 1].target, totalBalance); - } -} - -async function penpieTvl(api, owners) { - const balanceCalls = owners.map(owner => ({ - target: PENPIE_CONTRACT, - params: [PENPIE_MARKET_ADDRESS, owner] - })); - const balances = await api.multiCall({ - abi: 'function balance(address,address) view returns (uint256)', - calls: balanceCalls, - }); - - balances.forEach(balance => { - api.add(PENPIE_MARKET_ADDRESS, balance); - }); -} - -const sonicTokens = [ - YIELDFI_POOL.yUSD, - ...Object.values(PENDLE_MARKET_ADDRESSES).flatMap(market => - Object.values(market)), - ...Object.values(EULER_POOL_ADDRESSES), - AAVE_TOKEN_ADDRESS, - ...Object.values(SILO_POOL_ADDRESSES), - -] - -module.exports = { - beetsTvl, - penpieTvl, - sonicTokens, -}; \ No newline at end of file diff --git a/projects/zyfai/index.js b/projects/zyfai/index.js deleted file mode 100644 index f9c12550b96..00000000000 --- a/projects/zyfai/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const { beetsTvl, penpieTvl, sonicTokens } = require('./helpers'); -const { - allPoolTokens -} = require('./base'); -const { getConfig } = require('../helper/cache'); -const { - allPoolTokens: arbitrumPoolTokens -} = require('./arbitrum'); -const { - allPoolTokens: plasmaPoolTokens -} = require('./plasma'); - -async function sonicTvl(api) { - // For Sonic chain - const owners = await getConfig('zyfai/'+api.chain, 'https://api.zyf.ai/api/v1/data/active-wallets?chainId=146'); - await Promise.all([ - beetsTvl(api, owners), - penpieTvl(api, owners), - ]); - return api.sumTokens({ owners, tokens: sonicTokens }) -} - -async function baseTvl(api) { - // For Base chain - const owners = await getConfig('zyfai/'+api.chain, 'https://api.zyf.ai/api/v1/data/active-wallets?chainId=8453'); - - return api.sumTokens({ - tokens: allPoolTokens, - owners - }); -} - -async function arbitrumTvl(api) { - // For Arbitrum chain - const owners = await getConfig('zyfai/'+api.chain, 'https://api.zyf.ai/api/v1/data/active-wallets?chainId=42161'); - return api.sumTokens({ - tokens: arbitrumPoolTokens, - owners - }); -} - -async function plasmaTvl(api) { - // For Plasma chain - const owners = await getConfig('zyfai/'+api.chain, 'https://api.zyf.ai/api/v1/data/active-wallets?chainId=9745'); - return api.sumTokens({ - tokens: plasmaPoolTokens, - owners - }); -} - -module.exports = { - methodology: 'Counts the TVL of all smart wallet accounts deployed by ZyFAI protocol across multiple DeFi protocols', - sonic: { tvl: sonicTvl }, - base: { tvl: baseTvl }, - arbitrum: { tvl: arbitrumTvl }, - plasma: { tvl: plasmaTvl } -} \ No newline at end of file diff --git a/projects/zyfai/plasma.js b/projects/zyfai/plasma.js deleted file mode 100644 index 5f7b923f446..00000000000 --- a/projects/zyfai/plasma.js +++ /dev/null @@ -1,20 +0,0 @@ -const AAVE_TOKEN_ADDRESS = '0x5D72a9d9A9510Cd8cBdBA12aC62593A58930a948'; - -const FLUID_POOLS = { - 'USDT0': '0x1DD4b13fcAE900C60a350589BE8052959D2Ed27B', -}; -const PLASMA_EULER_POOLS = { - 'K3 Capital USDT0 Vault': '0xe818ad0D20D504C55601b9d5e0E137314414dec4', - 'Re7 USDT0 Core': '0xa5EeD1615cd883dD6883ca3a385F525e3bEB4E79', - 'Hyperithm Euler USDT': '0x66bE42a0BdA425A8C3b3c2cF4F4Cb9EDfcAEd21d', -}; - -const allPoolTokens = [ - AAVE_TOKEN_ADDRESS, - ...Object.values(FLUID_POOLS), - ...Object.values(PLASMA_EULER_POOLS), -] - -module.exports = { - allPoolTokens -} \ No newline at end of file diff --git a/projects/zyxswap/index.js b/projects/zyxswap/index.js deleted file mode 100644 index 5c82a03df17..00000000000 --- a/projects/zyxswap/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - deadFrom: '2025-04-01', - misrepresentedTokens: true, - methodology: "Factory address (0x26e13874ad1cd512b29795dafe3937e1c6f6d507) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - zyx: { tvl: () => ({}) } -}